f0VMRgEBAQAAAAAAAAAAAAEACAABAAAAAAAAAAAAAAC8LQAABxAAUDQAAAAAACgABQACAHYxOwpwYWNrYWdlIHppcDsKcGtncGF0aCBhcmNoaXZlL3ppcDsKcHJpb3JpdHkgODsKaW1wb3J0IGJ1ZmlvIGJ1ZmlvICJidWZpbyI7CmltcG9ydCBmbGF0ZSBjb21wcmVzcy9mbGF0ZSAiY29tcHJlc3MvZmxhdGUiOwppbXBvcnQgYmluYXJ5IGVuY29kaW5nL2JpbmFyeSAiZW5jb2RpbmcvYmluYXJ5IjsKaW1wb3J0IGVycm9ycyBlcnJvcnMgImVycm9ycyI7CmltcG9ydCBoYXNoIGhhc2ggImhhc2giOwppbXBvcnQgY3JjMzIgaGFzaC9jcmMzMiAiaGFzaC9jcmMzMiI7CmltcG9ydCBpbyBpbyAiaW8iOwppbXBvcnQgaW91dGlsIGlvL2lvdXRpbCAiaW8vaW91dGlsIjsKaW1wb3J0IG9zIG9zICJvcyI7CmltcG9ydCBwYXRoIHBhdGggInBhdGgiOwppbXBvcnQgc3luYyBzeW5jICJzeW5jIjsKaW1wb3J0IHRpbWUgdGltZSAidGltZSI7CmluaXQgemlwIGFyY2hpdmVfemlwLi5pbXBvcnQgOCBtYXRoIG1hdGguLmltcG9ydCAxIHJ1bnRpbWUgcnVudGltZS4uaW1wb3J0IDEgdW5pY29kZSB1bmljb2RlLi5pbXBvcnQgMSBzdHJjb252IHN0cmNvbnYuLmltcG9ydCAyIHN5bmMgc3luYy4uaW1wb3J0IDIgaW8gaW8uLmltcG9ydCAzIHJlZmxlY3QgcmVmbGVjdC4uaW1wb3J0IDMgc3lzY2FsbCBzeXNjYWxsLi5pbXBvcnQgMyBiaW5hcnkgZW5jb2RpbmdfYmluYXJ5Li5pbXBvcnQgNCBieXRlcyBieXRlcy4uaW1wb3J0IDQgdGltZSB0aW1lLi5pbXBvcnQgNCBidWZpbyBidWZpby4uaW1wb3J0IDUgY3JjMzIgaGFzaF9jcmMzMi4uaW1wb3J0IDUgb3Mgb3MuLmltcG9ydCA1IHBhdGggcGF0aC4uaW1wb3J0IDUgZmlsZXBhdGggcGF0aF9maWxlcGF0aC4uaW1wb3J0IDYgZm10IGZtdC4uaW1wb3J0IDYgZmxhdGUgY29tcHJlc3NfZmxhdGUuLmltcG9ydCA3IGlvdXRpbCBpb19pb3V0aWwuLmltcG9ydCA3Owp0eXBlIDx0eXBlIDEgIkNvbXByZXNzb3IiIDx0eXBlIDIgKD8gPHR5cGUgMyAiaW8uV3JpdGVyIiA8dHlwZSA0IGludGVyZmFjZSB7IFdyaXRlIChwIDx0eXBlIDUgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSAoPyA8dHlwZSA2ICJpby5Xcml0ZUNsb3NlciIgPHR5cGUgNyBpbnRlcmZhY2UgeyA/IDx0eXBlIDM+OyA/IDx0eXBlIDggImlvLkNsb3NlciIgPHR5cGUgOSBpbnRlcmZhY2UgeyBDbG9zZSAoKSA8dHlwZSAtMTk+OyB9Pj47IH0+PiwgPyA8dHlwZSAtMTk+KT4+Owp0eXBlIDx0eXBlIDEwICJEZWNvbXByZXNzb3IiIDx0eXBlIDExICg/IDx0eXBlIDEyICJpby5SZWFkZXIiIDx0eXBlIDEzIGludGVyZmFjZSB7IFJlYWQgKHAgPHR5cGUgMTQgW10gPHR5cGUgLTIwPj4pIChuIDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsgfT4+KSA8dHlwZSAxNSAiaW8uUmVhZENsb3NlciIgPHR5cGUgMTYgaW50ZXJmYWNlIHsgPyA8dHlwZSAxMj47ID8gPHR5cGUgOD47IH0+Pj4+Owpjb25zdCBEZWZsYXRlIDx0eXBlIC02PiA9IDggOwp2YXIgRXJyQWxnb3JpdGhtIDx0eXBlIC0xOT47CnZhciBFcnJDaGVja3N1bSA8dHlwZSAtMTk+Owp2YXIgRXJyRm9ybWF0IDx0eXBlIC0xOT47CnR5cGUgPHR5cGUgMTcgIkZpbGUiIDx0eXBlIDE4IHN0cnVjdCB7ID8gPHR5cGUgMTkgIkZpbGVIZWFkZXIiIDx0eXBlIDIwIHN0cnVjdCB7IE5hbWUgPHR5cGUgLTE2PjsgQ3JlYXRvclZlcnNpb24gPHR5cGUgLTY+OyBSZWFkZXJWZXJzaW9uIDx0eXBlIC02PjsgRmxhZ3MgPHR5cGUgLTY+OyBNZXRob2QgPHR5cGUgLTY+OyBNb2RpZmllZFRpbWUgPHR5cGUgLTY+OyBNb2RpZmllZERhdGUgPHR5cGUgLTY+OyBDUkMzMiA8dHlwZSAtNz47IENvbXByZXNzZWRTaXplIDx0eXBlIC03PjsgVW5jb21wcmVzc2VkU2l6ZSA8dHlwZSAtNz47IENvbXByZXNzZWRTaXplNjQgPHR5cGUgLTg+OyBVbmNvbXByZXNzZWRTaXplNjQgPHR5cGUgLTg+OyBFeHRyYSA8dHlwZSAyMSBbXSA8dHlwZSAtMjA+PjsgRXh0ZXJuYWxBdHRycyA8dHlwZSAtNz47IENvbW1lbnQgPHR5cGUgLTE2PjsgfT4KIGZ1bmMgKGggPHR5cGUgMjIgKjx0eXBlIDE5Pj4pIEZpbGVJbmZvICgpIDx0eXBlIDIzICJvcy5GaWxlSW5mbyIgPHR5cGUgMjQgaW50ZXJmYWNlIHsgTmFtZSAoKSA8dHlwZSAtMTY+OyBTaXplICgpIDx0eXBlIC00PjsgTW9kZSAoKSA8dHlwZSAyNSAib3MuRmlsZU1vZGUiIDx0eXBlIC03PgogZnVuYyAobSA8dHlwZSAyNT4pIFBlcm0gKCkgPHR5cGUgMjU+OwogZnVuYyAobSA8dHlwZSAyNT4pIElzUmVndWxhciAoKSA8dHlwZSAtMTU+OwogZnVuYyAobSA8dHlwZSAyNT4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAobSA8dHlwZSAyNT4pIElzRGlyICgpIDx0eXBlIC0xNT47Cj47IE1vZFRpbWUgKCkgPHR5cGUgMjYgInRpbWUuVGltZSIgPHR5cGUgMjcgc3RydWN0IHsgLnRpbWUuc2VjIDx0eXBlIC00PjsgLnRpbWUubnNlYyA8dHlwZSAtMz47IC50aW1lLmxvYyA8dHlwZSAyOCAqPHR5cGUgMjkgInRpbWUuTG9jYXRpb24iIDx0eXBlIDMwIHN0cnVjdCB7IC50aW1lLm5hbWUgPHR5cGUgLTE2PjsgLnRpbWUuem9uZSA8dHlwZSAzMSBbXSA8dHlwZSAzMiAiLnRpbWUuem9uZSIgPHR5cGUgMzMgc3RydWN0IHsgLnRpbWUubmFtZSA8dHlwZSAtMTY+OyAudGltZS5vZmZzZXQgPHR5cGUgLTExPjsgLnRpbWUuaXNEU1QgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUudHggPHR5cGUgMzQgW10gPHR5cGUgMzUgIi50aW1lLnpvbmVUcmFucyIgPHR5cGUgMzYgc3RydWN0IHsgLnRpbWUud2hlbiA8dHlwZSAtND47IC50aW1lLmluZGV4IDx0eXBlIC01PjsgLnRpbWUuaXNzdGQgPHR5cGUgLTE1PjsgLnRpbWUuaXN1dGMgPHR5cGUgLTE1PjsgfT4+PjsgLnRpbWUuY2FjaGVTdGFydCA8dHlwZSAtND47IC50aW1lLmNhY2hlRW5kIDx0eXBlIC00PjsgLnRpbWUuY2FjaGVab25lIDx0eXBlIDM3ICo8dHlwZSAzMj4+OyB9PgogZnVuYyAobCA8dHlwZSAzOCAqPHR5cGUgMjk+PikgLnRpbWUuZmlyc3Rab25lVXNlZCAoKSA8dHlwZSAtMTU+OwogZnVuYyAobCA8dHlwZSAzOD4pIC50aW1lLmxvb2t1cCAoc2VjIDx0eXBlIC00PikgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGlzRFNUIDx0eXBlIC0xNT4sIHN0YXJ0IDx0eXBlIC00PiwgZW5kIDx0eXBlIC00Pik7CiBmdW5jIChsIDx0eXBlIDM4PikgLnRpbWUubG9va3VwTmFtZSAobmFtZSA8dHlwZSAtMTY+LCB1bml4IDx0eXBlIC00PikgKG9mZnNldCA8dHlwZSAtMTE+LCBpc0RTVCA8dHlwZSAtMTU+LCBvayA8dHlwZSAtMTU+KTsKIGZ1bmMgKGwgPHR5cGUgMzg+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGwgPHR5cGUgMzg+KSAudGltZS5nZXQgKCkgPHR5cGUgMzg+OwogZnVuYyAobCA8dHlwZSAzOD4pIC50aW1lLmxvb2t1cEZpcnN0Wm9uZSAoKSA8dHlwZSAtMTE+Owo+PjsgfT4KIGZ1bmMgKHQgPHR5cGUgMjY+KSBBZnRlciAodSA8dHlwZSAyNj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDI2PikgTWFyc2hhbFRleHQgKCkgKD8gPHR5cGUgMzkgW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDI2PikgRGF0ZSAoKSAoeWVhciA8dHlwZSAtMTE+LCBtb250aCA8dHlwZSA0MCAidGltZS5Nb250aCIgPHR5cGUgLTExPgogZnVuYyAobSA8dHlwZSA0MD4pIFN0cmluZyAoKSA8dHlwZSAtMTY+Owo+LCBkYXkgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDI2PikgLnRpbWUuYWJzICgpIDx0eXBlIC04PjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBXZWVrZGF5ICgpIDx0eXBlIDQxICJ0aW1lLldlZWtkYXkiIDx0eXBlIC0xMT4KIGZ1bmMgKGQgPHR5cGUgNDE+KSBTdHJpbmcgKCkgPHR5cGUgLTE2PjsKPjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBOYW5vc2Vjb25kICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDQyICo8dHlwZSAyNj4+KSBHb2JEZWNvZGUgKGRhdGEgPHR5cGUgNDMgW10gPHR5cGUgLTIwPj4pIDx0eXBlIC0xOT47CiBmdW5jICh0IDx0eXBlIDI2PikgSW4gKGxvYyA8dHlwZSAyOD4pIDx0eXBlIDI2PjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBMb2NhbCAoKSA8dHlwZSAyNj47CiBmdW5jICh0IDx0eXBlIDI2PikgTW9udGggKCkgPHR5cGUgNDA+OwogZnVuYyAodCA8dHlwZSAyNj4pIEhvdXIgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBNYXJzaGFsQmluYXJ5ICgpICg/IDx0eXBlIDQ0IFtdIDx0eXBlIC0yMD4+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodCA8dHlwZSAyNj4pIFVuaXhOYW5vICgpIDx0eXBlIC00PjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBFcXVhbCAodSA8dHlwZSAyNj4pIDx0eXBlIC0xNT47CiBmdW5jICh0IDx0eXBlIDI2PikgRm9ybWF0IChsYXlvdXQgPHR5cGUgLTE2PikgPHR5cGUgLTE2PjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBBZGREYXRlICh5ZWFycyA8dHlwZSAtMTE+LCBtb250aHMgPHR5cGUgLTExPiwgZGF5cyA8dHlwZSAtMTE+KSA8dHlwZSAyNj47CiBmdW5jICh0IDx0eXBlIDI2PikgWm9uZSAoKSAobmFtZSA8dHlwZSAtMTY+LCBvZmZzZXQgPHR5cGUgLTExPik7CiBmdW5jICh0IDx0eXBlIDI2PikgRGF5ICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDI2PikgQ2xvY2sgKCkgKGhvdXIgPHR5cGUgLTExPiwgbWluIDx0eXBlIC0xMT4sIHNlYyA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBNYXJzaGFsSlNPTiAoKSAoPyA8dHlwZSA0NSBbXSA8dHlwZSAtMjA+PiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBVVEMgKCkgPHR5cGUgMjY+OwogZnVuYyAodCA8dHlwZSAyNj4pIC50aW1lLmRhdGUgKGZ1bGwgPHR5cGUgLTE1PikgKHllYXIgPHR5cGUgLTExPiwgbW9udGggPHR5cGUgNDA+LCBkYXkgPHR5cGUgLTExPiwgeWRheSA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBJc1plcm8gKCkgPHR5cGUgLTE1PjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBCZWZvcmUgKHUgPHR5cGUgMjY+KSA8dHlwZSAtMTU+OwogZnVuYyAodCA8dHlwZSAyNj4pIFN0cmluZyAoKSA8dHlwZSAtMTY+OwogZnVuYyAodCA8dHlwZSAyNj4pIFNlY29uZCAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyNj4pIE1pbnV0ZSAoKSA8dHlwZSAtMTE+OwogZnVuYyAodCA8dHlwZSAyNj4pIFN1YiAodSA8dHlwZSAyNj4pIDx0eXBlIDQ2ICJ0aW1lLkR1cmF0aW9uIiA8dHlwZSAtND4KIGZ1bmMgKGQgPHR5cGUgNDY+KSBTZWNvbmRzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDQ2PikgU3RyaW5nICgpIDx0eXBlIC0xNj47CiBmdW5jIChkIDx0eXBlIDQ2PikgTWludXRlcyAoKSA8dHlwZSAtMTA+OwogZnVuYyAoZCA8dHlwZSA0Nj4pIEhvdXJzICgpIDx0eXBlIC0xMD47CiBmdW5jIChkIDx0eXBlIDQ2PikgTmFub3NlY29uZHMgKCkgPHR5cGUgLTQ+Owo+OwogZnVuYyAodCA8dHlwZSAyNj4pIFJvdW5kIChkIDx0eXBlIDQ2PikgPHR5cGUgMjY+OwogZnVuYyAodCA8dHlwZSAyNj4pIFVuaXggKCkgPHR5cGUgLTQ+OwogZnVuYyAodCA8dHlwZSA0Mj4pIFVubWFyc2hhbFRleHQgKGRhdGEgPHR5cGUgNDcgW10gPHR5cGUgLTIwPj4pIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDI2PikgQWRkIChkIDx0eXBlIDQ2PikgPHR5cGUgMjY+OwogZnVuYyAodCA8dHlwZSAyNj4pIFRydW5jYXRlIChkIDx0eXBlIDQ2PikgPHR5cGUgMjY+OwogZnVuYyAodCA8dHlwZSAyNj4pIExvY2F0aW9uICgpIDx0eXBlIDI4PjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBHb2JFbmNvZGUgKCkgKD8gPHR5cGUgNDggW10gPHR5cGUgLTIwPj4sID8gPHR5cGUgLTE5Pik7CiBmdW5jICh0IDx0eXBlIDQyPikgVW5tYXJzaGFsQmluYXJ5IChkYXRhIDx0eXBlIDQ5IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSAtMTk+OwogZnVuYyAodCA8dHlwZSAyNj4pIElTT1dlZWsgKCkgKHllYXIgPHR5cGUgLTExPiwgd2VlayA8dHlwZSAtMTE+KTsKIGZ1bmMgKHQgPHR5cGUgMjY+KSAudGltZS5sb2NhYnMgKCkgKG5hbWUgPHR5cGUgLTE2Piwgb2Zmc2V0IDx0eXBlIC0xMT4sIGFicyA8dHlwZSAtOD4pOwogZnVuYyAodCA8dHlwZSAyNj4pIFllYXJEYXkgKCkgPHR5cGUgLTExPjsKIGZ1bmMgKHQgPHR5cGUgMjY+KSBZZWFyICgpIDx0eXBlIC0xMT47CiBmdW5jICh0IDx0eXBlIDQyPikgVW5tYXJzaGFsSlNPTiAoZGF0YSA8dHlwZSA1MCBbXSA8dHlwZSAtMjA+PikgKGVyciA8dHlwZSAtMTk+KTsKPjsgSXNEaXIgKCkgPHR5cGUgLTE1PjsgU3lzICgpIDx0eXBlIDUxIGludGVyZmFjZSB7IH0+OyB9Pj47CiBmdW5jIChoIDx0eXBlIDIyPikgTW9kVGltZSAoKSA8dHlwZSAyNj47CiBmdW5jIChoIDx0eXBlIDIyPikgU2V0TW9kVGltZSAodCA8dHlwZSAyNj4pOwogZnVuYyAoaCA8dHlwZSAyMj4pIE1vZGUgKCkgKG1vZGUgPHR5cGUgMjU+KTsKIGZ1bmMgKGggPHR5cGUgMjI+KSBTZXRNb2RlIChtb2RlIDx0eXBlIDI1Pik7CiBmdW5jIChmaCA8dHlwZSAyMj4pIC5hcmNoaXZlL3ppcC5pc1ppcDY0ICgpIDx0eXBlIC0xNT47Cj47IC5hcmNoaXZlL3ppcC56aXByIDx0eXBlIDUyICJpby5SZWFkZXJBdCIgPHR5cGUgNTMgaW50ZXJmYWNlIHsgUmVhZEF0IChwIDx0eXBlIDU0IFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7IH0+PjsgLmFyY2hpdmUvemlwLnppcHNpemUgPHR5cGUgLTQ+OyAuYXJjaGl2ZS96aXAuaGVhZGVyT2Zmc2V0IDx0eXBlIC00PjsgfT4KIGZ1bmMgKGYgPHR5cGUgNTUgKjx0eXBlIDE3Pj4pIC5hcmNoaXZlL3ppcC5oYXNEYXRhRGVzY3JpcHRvciAoKSA8dHlwZSAtMTU+OwogZnVuYyAoZiA8dHlwZSA1NT4pIERhdGFPZmZzZXQgKCkgKG9mZnNldCA8dHlwZSAtND4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgNTU+KSBPcGVuICgpIChyYyA8dHlwZSAxNT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgNTU+KSAuYXJjaGl2ZS96aXAuZmluZEJvZHlPZmZzZXQgKCkgKD8gPHR5cGUgLTQ+LCA/IDx0eXBlIC0xOT4pOwo+Owp0eXBlIDx0eXBlIDE5PjsKZnVuYyBGaWxlSW5mb0hlYWRlciAoZmkgPHR5cGUgMjM+KSAoPyA8dHlwZSAyMj4sID8gPHR5cGUgLTE5Pik7CmZ1bmMgTmV3UmVhZGVyIChyIDx0eXBlIDUyPiwgc2l6ZSA8dHlwZSAtND4pICg/IDx0eXBlIDU2ICo8dHlwZSA1NyAiUmVhZGVyIiA8dHlwZSA1OCBzdHJ1Y3QgeyAuYXJjaGl2ZS96aXAuciA8dHlwZSA1Mj47IEZpbGUgPHR5cGUgNTkgW10gPHR5cGUgNjAgKjx0eXBlIDE3Pj4+OyBDb21tZW50IDx0eXBlIC0xNj47IH0+CiBmdW5jICh6IDx0eXBlIDYxICo8dHlwZSA1Nz4+KSAuYXJjaGl2ZS96aXAuaW5pdCAociA8dHlwZSA1Mj4sIHNpemUgPHR5cGUgLTQ+KSA8dHlwZSAtMTk+Owo+PiwgPyA8dHlwZSAtMTk+KTsKZnVuYyBOZXdXcml0ZXIgKHcgPHR5cGUgMz4pIDx0eXBlIDYyICo8dHlwZSA2MyAiV3JpdGVyIiA8dHlwZSA2NCBzdHJ1Y3QgeyAuYXJjaGl2ZS96aXAuY3cgPHR5cGUgNjUgKjx0eXBlIDY2ICIuYXJjaGl2ZS96aXAuY291bnRXcml0ZXIiIDx0eXBlIDY3IHN0cnVjdCB7IC5hcmNoaXZlL3ppcC53IDx0eXBlIDM+OyAuYXJjaGl2ZS96aXAuY291bnQgPHR5cGUgLTQ+OyB9PgogZnVuYyAodyA8dHlwZSA2OCAqPHR5cGUgNjY+PikgV3JpdGUgKHAgPHR5cGUgNjkgW10gPHR5cGUgLTIwPj4pICg/IDx0eXBlIC0xMT4sID8gPHR5cGUgLTE5Pik7Cj4+OyAuYXJjaGl2ZS96aXAuZGlyIDx0eXBlIDcwIFtdIDx0eXBlIDcxICo8dHlwZSA3MiAiLmFyY2hpdmUvemlwLmhlYWRlciIgPHR5cGUgNzMgc3RydWN0IHsgPyA8dHlwZSAyMj47IC5hcmNoaXZlL3ppcC5vZmZzZXQgPHR5cGUgLTg+OyB9Pj4+PjsgLmFyY2hpdmUvemlwLmxhc3QgPHR5cGUgNzQgKjx0eXBlIDc1ICIuYXJjaGl2ZS96aXAuZmlsZVdyaXRlciIgPHR5cGUgNzYgc3RydWN0IHsgPyA8dHlwZSA3NyAqPHR5cGUgNzI+PjsgLmFyY2hpdmUvemlwLnppcHcgPHR5cGUgMz47IC5hcmNoaXZlL3ppcC5yYXdDb3VudCA8dHlwZSA3OCAqPHR5cGUgNjY+PjsgLmFyY2hpdmUvemlwLmNvbXAgPHR5cGUgNj47IC5hcmNoaXZlL3ppcC5jb21wQ291bnQgPHR5cGUgNzkgKjx0eXBlIDY2Pj47IC5hcmNoaXZlL3ppcC5jcmMzMiA8dHlwZSA4MCAiaGFzaC5IYXNoMzIiIDx0eXBlIDgxIGludGVyZmFjZSB7ID8gPHR5cGUgODIgImhhc2guSGFzaCIgPHR5cGUgODMgaW50ZXJmYWNlIHsgPyA8dHlwZSAzPjsgU3VtIChiIDx0eXBlIDg0IFtdIDx0eXBlIC0yMD4+KSA8dHlwZSA4NSBbXSA8dHlwZSAtMjA+PjsgUmVzZXQgKCk7IFNpemUgKCkgPHR5cGUgLTExPjsgQmxvY2tTaXplICgpIDx0eXBlIC0xMT47IH0+PjsgU3VtMzIgKCkgPHR5cGUgLTc+OyB9Pj47IC5hcmNoaXZlL3ppcC5jbG9zZWQgPHR5cGUgLTE1PjsgfT4KIGZ1bmMgKHcgPHR5cGUgODYgKjx0eXBlIDc1Pj4pIFdyaXRlIChwIDx0eXBlIDg3IFtdIDx0eXBlIC0yMD4+KSAoPyA8dHlwZSAtMTE+LCA/IDx0eXBlIC0xOT4pOwogZnVuYyAodyA8dHlwZSA4Nj4pIC5hcmNoaXZlL3ppcC5jbG9zZSAoKSA8dHlwZSAtMTk+Owo+PjsgLmFyY2hpdmUvemlwLmNsb3NlZCA8dHlwZSAtMTU+OyB9PgogZnVuYyAodyA8dHlwZSA4OCAqPHR5cGUgNjM+PikgRmx1c2ggKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKHcgPHR5cGUgODg+KSBDbG9zZSAoKSA8dHlwZSAtMTk+OwogZnVuYyAodyA8dHlwZSA4OD4pIENyZWF0ZSAobmFtZSA8dHlwZSAtMTY+KSAoPyA8dHlwZSAzPiwgPyA8dHlwZSAtMTk+KTsKIGZ1bmMgKHcgPHR5cGUgODg+KSBDcmVhdGVIZWFkZXIgKGZoIDx0eXBlIDIyPikgKD8gPHR5cGUgMz4sID8gPHR5cGUgLTE5Pik7Cj4+OwpmdW5jIE9wZW5SZWFkZXIgKG5hbWUgPHR5cGUgLTE2PikgKD8gPHR5cGUgODkgKjx0eXBlIDkwICJSZWFkQ2xvc2VyIiA8dHlwZSA5MSBzdHJ1Y3QgeyAuYXJjaGl2ZS96aXAuZiA8dHlwZSA5MiAqPHR5cGUgOTMgIm9zLkZpbGUiIDx0eXBlIDk0IHN0cnVjdCB7ID8gPHR5cGUgOTUgKjx0eXBlIDk2ICIub3MuZmlsZSIgPHR5cGUgOTcgc3RydWN0IHsgLm9zLmZkIDx0eXBlIC0xMT47IC5vcy5uYW1lIDx0eXBlIC0xNj47IC5vcy5kaXJpbmZvIDx0eXBlIDk4ICo8dHlwZSA5OSAiLm9zLmRpckluZm8iIDx0eXBlIDEwMCBzdHJ1Y3QgeyAub3MuYnVmIDx0eXBlIDEwMSBbXSA8dHlwZSAtMjA+PjsgLm9zLmRpciA8dHlwZSAxMDIgKjx0eXBlIDEwMyAic3lzY2FsbC5ESVIiICJzeXNjYWxsIiA8dHlwZSAxMDQgIi5zeXNjYWxsLl9ESVIiIDx0eXBlIDEwNSBzdHJ1Y3QgeyB9Pj4+PjsgfT4+PjsgLm9zLm5lcGlwZSA8dHlwZSAtMz47IH0+CiBmdW5jIChmaWxlIDx0eXBlIDEwNiAqPHR5cGUgOTY+PikgLm9zLmNsb3NlICgpIDx0eXBlIC0xOT47Cj4+OyB9PgogZnVuYyAoZiA8dHlwZSAxMDcgKjx0eXBlIDkzPj4pIFdyaXRlQXQgKGIgPHR5cGUgMTA4IFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwNz4pIFJlYWRkaXJuYW1lcyAobiA8dHlwZSAtMTE+KSAobmFtZXMgPHR5cGUgMTA5IFtdIDx0eXBlIC0xNj4+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwNz4pIFJlYWQgKGIgPHR5cGUgMTEwIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwNz4pIE5hbWUgKCkgPHR5cGUgLTE2PjsKIGZ1bmMgKGYgPHR5cGUgMTA3PikgQ2hvd24gKHVpZCA8dHlwZSAtMTE+LCBnaWQgPHR5cGUgLTExPikgPHR5cGUgLTE5PjsKIGZ1bmMgKGYgPHR5cGUgMTA3PikgUmVhZGRpciAobiA8dHlwZSAtMTE+KSAoZmkgPHR5cGUgMTExIFtdIDx0eXBlIDIzPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMTA3PikgQ2hkaXIgKCkgPHR5cGUgLTE5PjsKIGZ1bmMgKGYgPHR5cGUgMTA3PikgLm9zLnJlYWQgKGIgPHR5cGUgMTEyIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwNz4pIFNlZWsgKG9mZnNldCA8dHlwZSAtND4sIHdoZW5jZSA8dHlwZSAtMTE+KSAocmV0IDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDc+KSAub3Mud3JpdGUgKGIgPHR5cGUgMTEzIFtdIDx0eXBlIC0yMD4+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwNz4pIFN0YXQgKCkgKGZpIDx0eXBlIDIzPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDc+KSBXcml0ZVN0cmluZyAocyA8dHlwZSAtMTY+KSAocmV0IDx0eXBlIC0xMT4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMTA3PikgLm9zLnByZWFkIChiIDx0eXBlIDExNCBbXSA8dHlwZSAtMjA+Piwgb2ZmIDx0eXBlIC00PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDc+KSBSZWFkQXQgKGIgPHR5cGUgMTE1IFtdIDx0eXBlIC0yMD4+LCBvZmYgPHR5cGUgLTQ+KSAobiA8dHlwZSAtMTE+LCBlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwNz4pIFdyaXRlIChiIDx0eXBlIDExNiBbXSA8dHlwZSAtMjA+PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDc+KSBTeW5jICgpIChlcnIgPHR5cGUgLTE5Pik7CiBmdW5jIChmIDx0eXBlIDEwNz4pIEZkICgpIDx0eXBlIC0xMz47CiBmdW5jIChmaWxlIDx0eXBlIDEwNz4pIC5vcy5yZWFkZGlybmFtZXMgKG4gPHR5cGUgLTExPikgKG5hbWVzIDx0eXBlIDExNyBbXSA8dHlwZSAtMTY+PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDc+KSBDaG1vZCAobW9kZSA8dHlwZSAyNT4pIDx0eXBlIC0xOT47CiBmdW5jIChmIDx0eXBlIDEwNz4pIFRydW5jYXRlIChzaXplIDx0eXBlIC00PikgPHR5cGUgLTE5PjsKIGZ1bmMgKGYgPHR5cGUgMTA3PikgLm9zLnNlZWsgKG9mZnNldCA8dHlwZSAtND4sIHdoZW5jZSA8dHlwZSAtMTE+KSAocmV0IDx0eXBlIC00PiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDc+KSAub3MucHdyaXRlIChiIDx0eXBlIDExOCBbXSA8dHlwZSAtMjA+Piwgb2ZmIDx0eXBlIC00PikgKG4gPHR5cGUgLTExPiwgZXJyIDx0eXBlIC0xOT4pOwogZnVuYyAoZiA8dHlwZSAxMDc+KSAub3MucmVhZGRpciAobiA8dHlwZSAtMTE+KSAoZmkgPHR5cGUgMTE5IFtdIDx0eXBlIDIzPj4sIGVyciA8dHlwZSAtMTk+KTsKIGZ1bmMgKGYgPHR5cGUgMTA3PikgQ2xvc2UgKCkgPHR5cGUgLTE5PjsKPj47ID8gPHR5cGUgNTc+OyB9PgogZnVuYyAocmMgPHR5cGUgMTIwICo8dHlwZSA5MD4+KSBDbG9zZSAoKSA8dHlwZSAtMTk+Owo+PiwgPyA8dHlwZSAtMTk+KTsKdHlwZSA8dHlwZSA5MD47CnR5cGUgPHR5cGUgNTc+OwpmdW5jIFJlZ2lzdGVyQ29tcHJlc3NvciAobWV0aG9kIDx0eXBlIC02PiwgY29tcCA8dHlwZSAxPik7CmZ1bmMgUmVnaXN0ZXJEZWNvbXByZXNzb3IgKG1ldGhvZCA8dHlwZSAtNj4sIGQgPHR5cGUgMTA+KTsKY29uc3QgU3RvcmUgPHR5cGUgLTY+ID0gMCA7CnR5cGUgPHR5cGUgNjM+OwpjaGVja3N1bSA1NTkzNjBEQUMzOTVENDJCQkI0MjZGREQzMEIyNjQ0QTc5QkNBMkFFOwoALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAuZ29fZXhwb3J0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGwAAAAEAAAAAAAAAAAAAADQAAAA9LQAAAAAAAAAAAAABAAAAAAAAABEAAAADAAAAAAAAAAAAAABxLQAAJgAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAmC0AACAAAAAEAAAAAgAAAAQAAAAQAAAACQAAAAMAAAAAAAAAAAAAALgtAAABAAAAAAAAAAAAAAABAAAAAAAAAA==