REDROOM
PHP 8.2.30
Path:
Logout
Edit File
Size: 263.70 KB
Close
/proc/self/root/opt/alt/python27/lib/python2.7/site-packages/pkg_resources/_vendor/pyparsing.pyc
Text
Base64
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bWVudHMgCihMeycrJzxQYXJzZXJFbGVtZW50Ll9fYWRkX18+fSBvcGVyYXRvciBnaXZlcyBMe0FuZH0gZXhwcmVzc2lvbnMsIHN0cmluZ3MgYXJlIGF1dG8tY29udmVydGVkIHRvCkx7TGl0ZXJhbH0gZXhwcmVzc2lvbnMpOjoKCiAgICBmcm9tIHB5cGFyc2luZyBpbXBvcnQgV29yZCwgYWxwaGFzCgogICAgIyBkZWZpbmUgZ3JhbW1hciBvZiBhIGdyZWV0aW5nCiAgICBncmVldCA9IFdvcmQoYWxwaGFzKSArICIsIiArIFdvcmQoYWxwaGFzKSArICIhIgoKICAgIGhlbGxvID0gIkhlbGxvLCBXb3JsZCEiCiAgICBwcmludCAoaGVsbG8sICItPiIsIGdyZWV0LnBhcnNlU3RyaW5nKGhlbGxvKSkKClRoZSBwcm9ncmFtIG91dHB1dHMgdGhlIGZvbGxvd2luZzo6CgogICAgSGVsbG8sIFdvcmxkISAtPiBbJ0hlbGxvJywgJywnLCAnV29ybGQnLCAnISddCgpUaGUgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBncmFtbWFyIGlzIHF1aXRlIHJlYWRhYmxlLCBvd2luZyB0byB0aGUgc2VsZi1leHBsYW5hdG9yeQpjbGFzcyBuYW1lcywgYW5kIHRoZSB1c2Ugb2YgJysnLCAnfCcgYW5kICdeJyBvcGVyYXRvcnMuCgpUaGUgTHtQYXJzZVJlc3VsdHN9IG9iamVjdCByZXR1cm5lZCBmcm9tIEx7UGFyc2VyRWxlbWVudC5wYXJzZVN0cmluZzxQYXJzZXJFbGVtZW50LnBhcnNlU3RyaW5nPn0gY2FuIGJlIGFjY2Vzc2VkIGFzIGEgbmVzdGVkIGxpc3QsIGEgZGljdGlvbmFyeSwgb3IgYW4Kb2JqZWN0IHdpdGggbmFtZWQgYXR0cmlidXRlcy4KClRoZSBweXBhcnNpbmcgbW9kdWxlIGhhbmRsZXMgc29tZSBvZiB0aGUgcHJvYmxlbXMgdGhhdCBhcmUgdHlwaWNhbGx5IHZleGluZyB3aGVuIHdyaXRpbmcgdGV4dCBwYXJzZXJzOgogLSBleHRyYSBvciBtaXNzaW5nIHdoaXRlc3BhY2UgKHRoZSBhYm92ZSBwcm9ncmFtIHdpbGwgYWxzbyBoYW5kbGUgIkhlbGxvLFdvcmxkISIsICJIZWxsbyAgLCAgV29ybGQgICEiLCBldGMuKQogLSBxdW90ZWQgc3RyaW5ncwogLSBlbWJlZGRlZCBjb21tZW50cwpzBgAAADIuMS4xMHMVAAAAMDcgT2N0IDIwMTYgMDE6MzEgVVRDcyoAAABQYXVsIE1jR3VpcmUgPHB0bWNnQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD5p/////04oAQAAAHQDAAAAcmVmKAEAAAB0CAAAAGRhdGV0aW1lKAEAAAB0BQAAAFJMb2NrKAEAAAB0CwAAAE9yZGVyZWREaWN0dAMAAABBbmR0DwAAAENhc2VsZXNzS2V5d29yZHQPAAAAQ2FzZWxlc3NMaXRlcmFsdAoAAABDaGFyc05vdEludAcAAABDb21iaW5ldAQAAABEaWN0dAQAAABFYWNodAUAAABFbXB0eXQKAAAARm9sbG93ZWRCeXQHAAAARm9yd2FyZHQKAAAAR29Ub0NvbHVtbnQFAAAAR3JvdXB0BwAAAEtleXdvcmR0BwAAAExpbmVFbmR0CQAAAExpbmVTdGFydHQHAAAATGl0ZXJhbHQKAAAATWF0Y2hGaXJzdHQHAAAATm9NYXRjaHQGAAAATm90QW55dAkAAABPbmVPck1vcmV0CAAAAE9ubHlPbmNldAgAAABPcHRpb25hbHQCAAAAT3J0EgAAAFBhcnNlQmFzZUV4Y2VwdGlvbnQTAAAAUGFyc2VFbGVtZW50RW5oYW5jZXQOAAAAUGFyc2VFeGNlcHRpb250DwAAAFBhcnNlRXhwcmVzc2lvbnQTAAAAUGFyc2VGYXRhbEV4Y2VwdGlvbnQMAAAAUGFyc2VSZXN1bHRzdBQAAABQYXJzZVN5bnRheEV4Y2VwdGlvbnQNAAAAUGFyc2VyRWxlbWVudHQMAAAAUXVvdGVkU3RyaW5ndBkAAABSZWN1cnNpdmVHcmFtbWFyRXhjZXB0aW9udAUAAABSZWdleHQGAAAAU2tpcFRvdAkAAABTdHJpbmdFbmR0CwAAAFN0cmluZ1N0YXJ0dAgAAABTdXBwcmVzc3QFAAAAVG9rZW50DgAAAFRva2VuQ29udmVydGVydAUAAABXaGl0ZXQEAAAAV29yZHQHAAAAV29yZEVuZHQJAAAAV29yZFN0YXJ0dAoAAABaZXJvT3JNb3JldAkAAABhbHBoYW51bXN0BgAAAGFscGhhc3QKAAAAYWxwaGFzOGJpdHQLAAAAYW55Q2xvc2VUYWd0CgAAAGFueU9wZW5UYWd0DQAAAGNTdHlsZUNvbW1lbnR0AwAAAGNvbHQSAAAAY29tbWFTZXBhcmF0ZWRMaXN0dBAAAABjb21tb25IVE1MRW50aXR5dAwAAABjb3VudGVkQXJyYXl0DwAAAGNwcFN0eWxlQ29tbWVudHQPAAAAZGJsUXVvdGVkU3RyaW5ndA8AAABkYmxTbGFzaENvbW1lbnR0DQAAAGRlbGltaXRlZExpc3R0BgAAAGRpY3RPZnQOAAAAZG93bmNhc2VUb2tlbnN0BQAAAGVtcHR5dAcAAABoZXhudW1zdAsAAABodG1sQ29tbWVudHQQAAAAamF2YVN0eWxlQ29tbWVudHQEAAAAbGluZXQHAAAAbGluZUVuZHQJAAAAbGluZVN0YXJ0dAYAAABsaW5lbm90DAAAAG1ha2VIVE1MVGFnc3QLAAAAbWFrZVhNTFRhZ3N0DgAAAG1hdGNoT25seUF0Q29sdBEAAABtYXRjaFByZXZpb3VzRXhwcnQUAAAAbWF0Y2hQcmV2aW91c0xpdGVyYWx0CgAAAG5lc3RlZEV4cHJ0DwAAAG51bGxEZWJ1Z0FjdGlvbnQEAAAAbnVtc3QFAAAAb25lT2Z0BwAAAG9wQXNzb2N0EgAAAG9wZXJhdG9yUHJlY2VkZW5jZXQKAAAAcHJpbnRhYmxlc3QIAAAAcHVuYzhiaXR0EgAAAHB5dGhvblN0eWxlQ29tbWVudHQMAAAAcXVvdGVkU3RyaW5ndAwAAAByZW1vdmVRdW90ZXN0EQAAAHJlcGxhY2VIVE1MRW50aXR5dAsAAAByZXBsYWNlV2l0aHQKAAAAcmVzdE9mTGluZXQPAAAAc2dsUXVvdGVkU3RyaW5ndAYAAABzcmFuZ2V0CQAAAHN0cmluZ0VuZHQLAAAAc3RyaW5nU3RhcnR0EAAAAHRyYWNlUGFyc2VBY3Rpb250DQAAAHVuaWNvZGVTdHJpbmd0DAAAAHVwY2FzZVRva2Vuc3QNAAAAd2l0aEF0dHJpYnV0ZXQNAAAAaW5kZW50ZWRCbG9ja3QPAAAAb3JpZ2luYWxUZXh0Rm9ydAcAAAB1bmdyb3VwdA0AAABpbmZpeE5vdGF0aW9udAsAAABsb2NhdGVkRXhwcnQJAAAAd2l0aENsYXNzdAoAAABDbG9zZU1hdGNodAgAAAB0b2tlbk1hcHQQAAAAcHlwYXJzaW5nX2NvbW1vbmkDAAAAaQAAAABjAQAAAAMAAAAFAAAAQwAAAHN9AAAAdAAAfAAAdAEAgwIAchMAfAAAU3kOAHQCAHwAAIMBAFNXblUABHQDAGsKAHJ4AAEBAXQBAHwAAIMBAGoEAHQFAGoGAIMAAGQBAIMCAH0BAHQHAGQCAIMBAH0CAHwCAGoIAGQDAIQAAIMBAAF8AgBqCQB8AQCDAQBTWGQEAFMoBQAAAHMVAQAARHJvcC1pbiByZXBsYWNlbWVudCBmb3Igc3RyKG9iaikgdGhhdCB0cmllcyB0byBiZSBVbmljb2RlIGZyaWVuZGx5LiBJdCBmaXJzdCB0cmllcwogICAgICAgICAgIHN0cihvYmopLiBJZiB0aGF0IGZhaWxzIHdpdGggYSBVbmljb2RlRW5jb2RlRXJyb3IsIHRoZW4gaXQgdHJpZXMgdW5pY29kZShvYmopLiBJdAogICAgICAgICAgIHRoZW4gPCByZXR1cm5zIHRoZSB1bmljb2RlIG9iamVjdCB8IGVuY29kZXMgaXQgd2l0aCB0aGUgZGVmYXVsdCBlbmNvZGluZyB8IC4uLiA+LgogICAgICAgIHQRAAAAeG1sY2hhcnJlZnJlcGxhY2VzBgAAACYjXGQrO2MBAAAAAQAAAAYAAABTAAAAcyMAAABkAQB0AAB0AQB8AABkAgAZZAMAZAQAIYMBAIMBAGQDAB8XUygFAAAATnMCAAAAXHVpAAAAAGkCAAAAaf////8oAgAAAHQDAAAAaGV4dAMAAABpbnQoAQAAAHQBAAAAdCgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAgAAAA8bGFtYmRhPpQAAAB0AAAAAE4oCgAAAHQKAAAAaXNpbnN0YW5jZXQHAAAAdW5pY29kZXQDAAAAc3RydBIAAABVbmljb2RlRW5jb2RlRXJyb3J0BgAAAGVuY29kZXQDAAAAc3lzdBIAAABnZXRkZWZhdWx0ZW5jb2RpbmdSJQAAAHQOAAAAc2V0UGFyc2VBY3Rpb250DwAAAHRyYW5zZm9ybVN0cmluZygDAAAAdAMAAABvYmp0AwAAAHJldHQKAAAAeG1sY2hhcnJlZigAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAUAAABfdXN0coMAAABzEgAAAAAFDwEEAgMDDgINAh4BDAEQAXM2AAAAc3VtIGxlbiBzb3J0ZWQgcmV2ZXJzZWQgbGlzdCB0dXBsZSBzZXQgYW55IGFsbCBtaW4gbWF4YwEAAAACAAAAAgAAAGMAAABzFQAAAHwAAF0LAH0BAHwBAFYBcQMAZAAAUygBAAAATigAAAAAKAIAAAB0AgAAAC4wdAEAAAB5KAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlzCQAAADxnZW5leHByPqAAAABzAgAAAAYAaQEAAABjAQAAAAUAAAAEAAAAQwAAAHNSAAAAZAEAfQEAZAIAhAAAZAMAagAAgwAARIMBAH0CAHgvAHQBAHwBAHwCAIMCAERdHgBcAgB9AwB9BAB8AABqAgB8AwB8BACDAgB9AABxLABXfAAAUygEAAAAcy8AAABFc2NhcGUgJiwgPCwgPiwgIiwgJywgZXRjLiBpbiBhIHN0cmluZyBvZiBkYXRhLnMFAAAAJj48IidjAQAAAAIAAAADAAAAcwAAAHMdAAAAfAAAXRMAfQEAZAAAfAEAF2QBABdWAXEDAGQCAFMoAwAAAHQBAAAAJnQBAAAAO04oAAAAACgCAAAAUoAAAAB0AQAAAHMoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXMJAAAAPGdlbmV4cHI+pwAAAHMCAAAABgBzEwAAAGFtcCBndCBsdCBxdW90IGFwb3MoAwAAAHQFAAAAc3BsaXR0AwAAAHppcHQHAAAAcmVwbGFjZSgFAAAAdAQAAABkYXRhdAwAAABmcm9tX3N5bWJvbHN0CgAAAHRvX3N5bWJvbHN0BQAAAGZyb21fdAMAAAB0b18oAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQLAAAAX3htbF9lc2NhcGWiAAAAcwoAAAAABAYBFgEcARYBdAoAAABfQ29uc3RhbnRzYwAAAAAAAAAAAQAAAEIAAABzCAAAAGUAAFoBAFJTKAAAAAAoAgAAAHQIAAAAX19uYW1lX190CgAAAF9fbW9kdWxlX18oAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Uo4AAACsAAAAcwIAAAAGAXQKAAAAMDEyMzQ1Njc4OXQMAAAAQUJDREVGYWJjZGVmaVwAAABScgAAAGMBAAAAAgAAAAMAAABjAAAAcyQAAAB8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KAYAAABSSAAAAFKWAAAAUpkAAABSNwAAAFJFAAAAdA4AAABBdHRyaWJ1dGVFcnJvcigCAAAAUpwAAAB0BQAAAGFuYW1lKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CwAAAF9fZ2V0YXR0cl9fzQAAAHMOAAAAAAYMARMBDAETAQwBEwJjAQAAAAEAAAAFAAAAQwAAAHMgAAAAZAEAfAAAagAAfAAAagEAfAAAagIAfAAAagMAZgQAFlMoAgAAAE5zIgAAACVzIChhdCBjaGFyICVkKSwgKGxpbmU6JWQsIGNvbDolZCkoBAAAAFKYAAAAUpYAAABSSAAAAFKiAAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAcAAABfX3N0cl9f3AAAAHMEAAAAAAEDAWMBAAAAAQAAAAIAAABDAAAAcwoAAAB0AAB8AACDAQBTKAEAAABOKAEAAABSfwAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAX19yZXByX1/fAAAAcwIAAAAAAXMDAAAAPiE8YwIAAAAEAAAABQAAAEMAAABzSQAAAHwAAGoAAH0CAHwAAGoBAGQBABh9AwB8AQByPwBkAgBqAgB8AgB8AwAgfAEAfAIAfAMAH2YDAIMBAH0CAG4AAHwCAGoDAIMAAFMoAwAAAHOFAAAARXh0cmFjdHMgdGhlIGV4Y2VwdGlvbiBsaW5lIGZyb20gdGhlIGlucHV0IHN0cmluZywgYW5kIG1hcmtzCiAgICAgICAgICAgdGhlIGxvY2F0aW9uIG9mIHRoZSBleGNlcHRpb24gd2l0aCBhIHNwZWNpYWwgc3ltYm9sLgogICAgICAgIGkBAAAAUnIAAAAoBAAAAFJFAAAAUqIAAAB0BAAAAGpvaW50BQAAAHN0cmlwKAQAAABSnAAAAHQMAAAAbWFya2VyU3RyaW5ndAgAAABsaW5lX3N0cnQLAAAAbGluZV9jb2x1bW4oAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQNAAAAbWFya0lucHV0bGluZeEAAABzDAAAAAAECQENAQYBDQEWAWMBAAAAAQAAAAQAAABDAAAAcxoAAABkAQBqAACDAAB0AQB0AgB8AACDAQCDAQAXUygCAAAATnMPAAAAbGluZW5vIGNvbCBsaW5lKAMAAABShQAAAHQDAAAAZGlydAQAAAB0eXBlKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAcAAABfX2Rpcl9f6wAAAHMCAAAAAAFOKAwAAABSjwAAAFKQAAAAdAcAAABfX2RvY19fUpcAAABSngAAAHQLAAAAY2xhc3NtZXRob2RSoQAAAFKlAAAAUqYAAABSpwAAAFKtAAAAUrAAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UhsAAAC2AAAAcxAAAAAGAQYDEgsPCAkPCQMJAgwKYwAAAAAAAAAAAQAAAEIAAABzDgAAAGUAAFoBAGQAAFoCAFJTKAEAAABzTgIAAAogICAgRXhjZXB0aW9uIHRocm93biB3aGVuIHBhcnNlIGV4cHJlc3Npb25zIGRvbid0IG1hdGNoIGNsYXNzOwogICAgc3VwcG9ydGVkIGF0dHJpYnV0ZXMgYnkgbmFtZSBhcmU6CiAgICAgLSBsaW5lbm8gLSByZXR1cm5zIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgZXhjZXB0aW9uIHRleHQKICAgICAtIGNvbCAtIHJldHVybnMgdGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIGV4Y2VwdGlvbiB0ZXh0CiAgICAgLSBsaW5lIC0gcmV0dXJucyB0aGUgbGluZSBjb250YWluaW5nIHRoZSBleGNlcHRpb24gdGV4dAogICAgICAgIAogICAgRXhhbXBsZTo6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBXb3JkKG51bXMpLnNldE5hbWUoImludGVnZXIiKS5wYXJzZVN0cmluZygiQUJDIikKICAgICAgICBleGNlcHQgUGFyc2VFeGNlcHRpb24gYXMgcGU6CiAgICAgICAgICAgIHByaW50KHBlKQogICAgICAgICAgICBwcmludCgiY29sdW1uOiB7fSIuZm9ybWF0KHBlLmNvbCkpCiAgICAgICAgICAgIAogICAgcHJpbnRzOjoKICAgICAgIEV4cGVjdGVkIGludGVnZXIgKGF0IGNoYXIgMCksIChsaW5lOjEsIGNvbDoxKQogICAgICAgIGNvbHVtbjogMQogICAgKAMAAABSjwAAAFKQAAAAUrEAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Uh0AAADuAAAAcwQAAAAGEgYBYwAAAAAAAAAAAQAAAEIAAABzDgAAAGUAAFoBAGQAAFoCAFJTKAEAAABzbgAAAHVzZXItdGhyb3dhYmxlIGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBpbmNvbnNpc3RlbnQgcGFyc2UgY29udGVudAogICAgICAgaXMgZm91bmQ7IHN0b3BzIGFsbCBwYXJzaW5nIGltbWVkaWF0ZWx5KAMAAABSjwAAAFKQAAAAUrEAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Uh8AAAADAQAAcwQAAAAGAgYBYwAAAAAAAAAAAQAAAEIAAABzDgAAAGUAAFoBAGQAAFoCAFJTKAEAAABz3wAAAGp1c3QgbGlrZSBMe1BhcnNlRmF0YWxFeGNlcHRpb259LCBidXQgdGhyb3duIGludGVybmFsbHkgd2hlbiBhbgogICAgICAgTHtFcnJvclN0b3A8QW5kLl9FcnJvclN0b3A+fSAoJy0nIG9wZXJhdG9yKSBpbmRpY2F0ZXMgdGhhdCBwYXJzaW5nIGlzIHRvIHN0b3AgCiAgICAgICBpbW1lZGlhdGVseSBiZWNhdXNlIGFuIHVuYmFja3RyYWNrYWJsZSBzeW50YXggZXJyb3IgaGFzIGJlZW4gZm91bmQoAwAAAFKPAAAAUpAAAABSsQAAACgAAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSIQAAAAgBAABzBAAAAAYDBgFjAAAAAAAAAAABAAAAQgAAAHMgAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAZAIAhAAAWgQAUlMoAwAAAHNaAAAAZXhjZXB0aW9uIHRocm93biBieSBMe1BhcnNlckVsZW1lbnQudmFsaWRhdGV9IGlmIHRoZSBncmFtbWFyIGNvdWxkIGJlIGltcHJvcGVybHkgcmVjdXJzaXZlYwIAAAACAAAAAgAAAEMAAABzDQAAAHwBAHwAAF8AAGQAAFMoAQAAAE4oAQAAAHQRAAAAcGFyc2VFbGVtZW50VHJhY2UoAgAAAFKcAAAAdBAAAABwYXJzZUVsZW1lbnRMaXN0KAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSngAAAB0BAABzAgAAAAABYwEAAAABAAAAAgAAAEMAAABzCwAAAGQBAHwAAGoAABZTKAIAAABOcx0AAABSZWN1cnNpdmVHcmFtbWFyRXhjZXB0aW9uOiAlcygBAAAAUrMAAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSpgAAACABAABzAgAAAAABKAUAAABSjwAAAFKQAAAAUrEAAABSngAAAFKmAAAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIkAAAAGwEAAHMGAAAABgEGAQkDdBcAAABfUGFyc2VSZXN1bHRzV2l0aE9mZnNldGMAAAAAAAAAAAEAAABCAAAAcywAAABlAABaAQBkAACEAABaAgBkAQCEAABaAwBkAgCEAABaBABkAwCEAABaBQBSUygEAAAAYwMAAAADAAAAAgAAAEMAAABzEwAAAHwBAHwCAGYCAHwAAF8AAGQAAFMoAQAAAE4oAQAAAHQDAAAAdHVwKAMAAABSnAAAAHQCAAAAcDF0AgAAAHAyKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSngAAACQBAABzAgAAAAABYwIAAAACAAAAAgAAAEMAAABzCwAAAHwAAGoAAHwBABlTKAEAAABOKAEAAABStgAAACgCAAAAUpwAAAB0AQAAAGkoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQLAAAAX19nZXRpdGVtX18mAQAAcwIAAAAAAWMBAAAAAQAAAAMAAABDAAAAcxEAAAB0AAB8AABqAQBkAQAZgwEAUygCAAAATmkAAAAAKAIAAAB0BAAAAHJlcHJStgAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFj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ICAgICBkZWYgdGVzdChzLCBmbj1yZXByKToKICAgICAgICAgICAgcHJpbnQoIiVzIC0+ICVzIiAlIChzLCBmbihldmFsKHMpKSkpCiAgICAgICAgdGVzdCgibGlzdChyZXN1bHQpIikKICAgICAgICB0ZXN0KCJyZXN1bHRbMF0iKQogICAgICAgIHRlc3QoInJlc3VsdFsnbW9udGgnXSIpCiAgICAgICAgdGVzdCgicmVzdWx0LmRheSIpCiAgICAgICAgdGVzdCgiJ21vbnRoJyBpbiByZXN1bHQiKQogICAgICAgIHRlc3QoIidtaW51dGVzJyBpbiByZXN1bHQiKQogICAgICAgIHRlc3QoInJlc3VsdC5kdW1wKCkiLCBzdHIpCiAgICBwcmludHM6OgogICAgICAgIGxpc3QocmVzdWx0KSAtPiBbJzE5OTknLCAnLycsICcxMicsICcvJywgJzMxJ10KICAgICAgICByZXN1bHRbMF0gLT4gJzE5OTknCiAgICAgICAgcmVzdWx0Wydtb250aCddIC0+ICcxMicKICAgICAgICByZXN1bHQuZGF5IC0+ICczMScKICAgICAgICAnbW9udGgnIGluIHJlc3VsdCAtPiBUcnVlCiAgICAgICAgJ21pbnV0ZXMnIGluIHJlc3VsdCAtPiBGYWxzZQogICAgICAgIHJlc3VsdC5kdW1wKCkgLT4gWycxOTk5JywgJy8nLCAnMTInLCAnLycsICczMSddCiAgICAgICAgLSBkYXk6IDMxCiAgICAgICAgLSBtb250aDogMTIKICAgICAgICAtIHllYXI6IDE5OTkKICAgIGMFAAAABgAAAAMAAABDAAAAcy8AAAB0AAB8AQB8AACDAgByEwB8AQBTdAEAagIAfAAAgwEAfQUAdAMAfAUAXwQAfAUAUygBAAAATigFAAAAUnMAAAB0BgAAAG9iamVjdHQHAAAAX19uZXdfX3QEAAAAVHJ1ZXQVAAAAX1BhcnNlUmVzdWx0c19fZG9pbml0KAYAAABSnwAAAHQHAAAAdG9rbGlzdHQEAAAAbmFtZXQGAAAAYXNMaXN0dAUAAABtb2RhbHQGAAAAcmV0b2JqKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjct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AGpS2gAAAHQFAAAAdmFsdWV0CAAAAHBvc2l0aW9uKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CwAAAF9fZGVsaXRlbV9fmgEAAHMcAAAAAAEVAQ8BCgMPAQwBDQEWAhsBCgIcAQ0BHwEsAmMCAAAAAgAAAAIAAABDAAAAcw0AAAB8AQB8AABqAABrBgBTKAEAAABOKAEAAABS0AAAACgCAAAAUpwAAABS2gAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAwAAABfX2NvbnRhaW5zX1+vAQAAcwIAAAAAAWMBAAAAAQAAAAIAAABDAAAAcw0AAAB0AAB8AABqAQCDAQBTKAEAAABOKAIAAABS3QAAAFLNAAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAcAAABfX2xlbl9fsgEAAFJyAAAAYwEAAAABAAAAAQAAAEMAAABzCQAAAHwAAGoAAAwMUygBAAAATigBAAAAUs0AAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CAAAAF9fYm9vbF9fswEAAFJyAAAAYwEAAAABAAAAAgAAAEMAAABzDQAAAHQAAHwAAGoBAIMBAFMoAQAAAE4oAgAAAHQEAAAAaXRlclLNAAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAgAAABfX2l0ZXJfX7UBAABScgAAAGMBAAAAAQAAAAUAAABDAAAAcxoAAAB0AAB8AABqAQBkAABkAABkAQCFAwAZgwEAUygCAAAATmn/////KAIAAABS7QAAAFLNAAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAwAAABfX3JldmVyc2VkX1+2AQAAUnIAAABjAQAAAAEAAAADAAAAQwAAAHMwAAAAdAAAfAAAagEAZAEAgwIAch8AfAAAagEAagIAgwAAU3QDAHwAAGoBAIMBAFNkAABTKAIAAABOdAgAAABpdGVya2V5cygEAAAAdAcAAABoYXNhdHRyUtAAAABS8AAAAFLtAAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAkAAABfaXRlcmtleXO3AQAAcwYAAAAAARIBDQJjAQAAAAEAAAACAAAAAwAAAHMaAAAAhwAAZgEAZAEAhgAAiAAAagAAgwAARIMBAFMoAgAAAE5jAQAAAAIAAAADAAAAMwAAAHMZAAAAfAAAXQ8AfQEAiAAAfAEAGVYBcQMAZAAAUygBAAAATigAAAAAKAIAAABSgAAAAFLaAAAAKAEAAABSnAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXMJAAAAPGdlbmV4cHI+vgEAAHMCAAAABgAoAQAAAFLyAAAAKAEAAABSnAAAACgAAAAAKAEAAABSnAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CwAAAF9pdGVydmFsdWVzvQEAAHMCAAAAAAFjAQAAAAEAAAACAAAAAwAAAHMaAAAAhwAAZgEAZAEAhgAAiAAAagAAgwAARIMBAFMoAgAAAE5jAQAAAAIAAAAEAAAAMwAAAHMfAAAAfAAAXRUAfQEAfAEAiAAAfAEAGWYCAFYBcQMAZAAAUygBAAAATigAAAAAKAIAAABSgAAAAFLaAAAAKAEAAABSnAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXMJAAAAPGdlbmV4cHI+wQEAAHMCAAAABgAoAQAAAFLyAAAAKAEAAABSnAAAACgAAAAAKAEAAABSnAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CgAAAF9pdGVyaXRlbXPAAQAAcwIAAAAAAWMBAAAAAQAAAAIAAABDAAAAcxAAAAB0AAB8AABqAQCDAACDAQBTKAEAAABzVgAAAFJldHVybnMgYWxsIG5hbWVkIHJlc3VsdCBrZXlzIChhcyBhIGxpc3QgaW4gUHl0aG9uIDIueCwgYXMgYW4gaXRlcmF0b3IgaW4gUHl0aG9uIDMueCkuKAIAAABSzAAAAFLwAAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAQAAABrZXlz1wEAAHMCAAAAAAJjAQAAAAEAAAACAAAAQwAAAHMQAAAAdAAAfAAAagEAgwAAgwEAUygBAAAAc1gAAABSZXR1cm5zIGFsbCBuYW1lZCByZXN1bHQgdmFsdWVzIChhcyBhIGxpc3QgaW4gUHl0aG9uIDIueCwgYXMgYW4gaXRlcmF0b3IgaW4gUHl0aG9uIDMueCkuKAIAAABSzAAAAHQKAAAAaXRlcnZhbHVlcygBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQGAAAAdmFsdWVz2wEAAHMCAAAAAAJjAQAAAAEAAAACAAAAQwAAAHMQAAAAdAAAfAAAagEAgwAAgwEAUygBAAAAc2YAAABSZXR1cm5zIGFsbCBuYW1lZCByZXN1bHQga2V5LXZhbHVlcyAoYXMgYSBsaXN0IG9mIHR1cGxlcyBpbiBQeXRob24gMi54LCBhcyBhbiBpdGVyYXRvciBpbiBQeXRob24gMy54KS4oAgAAAFLMAAAAdAkAAABpdGVyaXRlbXMoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlS4QAAAN8BAABzAgAAAAACYwEAAAABAAAAAgAAAEMAAABzDQAAAHQAAHwAAGoBAIMBAFMoAQAAAHOQAAAAU2luY2Uga2V5cygpIHJldHVybnMgYW4gaXRlcmF0b3IsIHRoaXMgbWV0aG9kIGlzIGhlbHBmdWwgaW4gYnlwYXNzaW5nCiAgICAgICAgICAgY29kZSB0aGF0IGxvb2tzIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFueSBkZWZpbmVkIHJlc3VsdHMgbmFtZXMuKAIAAAB0BAAAAGJvb2xS0AAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQHAAAAaGFza2V5c+MBAABzAgAAAAADYwEAAAAIAAAABAAAAE8AAABzxAAAAHwBAHMSAGQBAGcBAH0BAG4AAHhJAHwCAGoAAIMAAERdOwBcAgB9AwB9BAB8AwBkAgBrAgBySgB8AQBkAwAZfAQAZgIAfQEAcR8AdAEAZAQAfAMAFoMBAIIBAHEfAFd0AgB8AQBkAwAZdAMAgwIAc5MAdAQAfAEAgwEAZAUAawIAc5MAfAEAZAMAGXwAAGsGAHKyAHwBAGQDABl9BQB8AAB8BQAZfQYAfAAAfAUAPXwGAFN8AQBkBQAZfQcAfAcAU2QGAFMoBwAAAHO5BQAACiAgICAgICAgUmVtb3ZlcyBhbmQgcmV0dXJucyBpdGVtIGF0IHNwZWNpZmllZCBpbmRleCAoZGVmYXVsdD1De2xhc3R9KS4KICAgICAgICBTdXBwb3J0cyBib3RoIEN7bGlzdH0gYW5kIEN7ZGljdH0gc2VtYW50aWNzIGZvciBDe3BvcCgpfS4gSWYgcGFzc2VkIG5vCiAgICAgICAgYXJndW1lbnQgb3IgYW4gaW50ZWdlciBhcmd1bWVudCwgaXQgd2lsbCB1c2UgQ3tsaXN0fSBzZW1hbnRpY3MKICAgICAgICBhbmQgcG9wIHRva2VucyBmcm9tIHRoZSBsaXN0IG9mIHBhcnNlZCB0b2tlbnMuIElmIHBhc3NlZCBhIAogICAgICAgIG5vbi1pbnRlZ2VyIGFyZ3VtZW50IChtb3N0IGxpa2VseSBhIHN0cmluZyksIGl0IHdpbGwgdXNlIEN7ZGljdH0KICAgICAgICBzZW1hbnRpY3MgYW5kIHBvcCB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmcm9tIGFueSBkZWZpbmVkIAogICAgICAgIHJlc3VsdHMgbmFtZXMuIEEgc2Vjb25kIGRlZmF1bHQgcmV0dXJuIHZhbHVlIGFyZ3VtZW50IGlzIAogICAgICAgIHN1cHBvcnRlZCwganVzdCBhcyBpbiBDe2RpY3QucG9wKCl9LgoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgZGVmIHJlbW92ZV9maXJzdCh0b2tlbnMpOgogICAgICAgICAgICAgICAgdG9rZW5zLnBvcCgwKQogICAgICAgICAgICBwcmludChPbmVPck1vcmUoV29yZChudW1zKSkucGFyc2VTdHJpbmcoIjAgMTIzIDMyMSIpKSAjIC0+IFsnMCcsICcxMjMnLCAnMzIxJ10KICAgICAgICAgICAgcHJpbnQoT25lT3JNb3JlKFdvcmQobnVtcykpLmFkZFBhcnNlQWN0aW9uKHJlbW92ZV9maXJzdCkucGFyc2VTdHJpbmcoIjAgMTIzIDMyMSIpKSAjIC0+IFsnMTIzJywgJzMyMSddCgogICAgICAgICAgICBsYWJlbCA9IFdvcmQoYWxwaGFzKQogICAgICAgICAgICBwYXR0ID0gbGFiZWwoIkxBQkVMIikgKyBPbmVPck1vcmUoV29yZChudW1zKSkKICAgICAgICAgICAgcHJpbnQocGF0dC5wYXJzZVN0cmluZygiQUFCIDEyMyAzMjEiKS5kdW1wKCkpCgogICAgICAgICAgICAjIFVzZSBwb3AoKSBpbiBhIHBhcnNlIGFjdGlvbiB0byByZW1vdmUgbmFtZWQgcmVzdWx0IChub3RlIHRoYXQgY29ycmVzcG9uZGluZyB2YWx1ZSBpcyBub3QKICAgICAgICAgICAgIyByZW1vdmVkIGZyb20gbGlzdCBmb3JtIG9mIHJlc3VsdHMpCiAgICAgICAgICAgIGRlZiByZW1vdmVfTEFCRUwodG9rZW5zKToKICAgICAgICAgICAgICAgIHRva2Vucy5wb3AoIkxBQkVMIikKICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbnMKICAgICAgICAgICAgcGF0dC5hZGRQYXJzZUFjdGlvbihyZW1vdmVfTEFCRUwpCiAgICAgICAgICAgIHByaW50KHBhdHQucGFyc2VTdHJpbmcoIkFBQiAxMjMgMzIxIikuZHVtcCgpKQogICAgICAgIHByaW50czo6CiAgICAgICAgICAgIFsnQUFCJywgJzEyMycsICczMjEnXQogICAgICAgICAgICAtIExBQkVMOiBBQUIKCiAgICAgICAgICAgIFsnQUFCJywgJzEyMycsICczMjEnXQogICAgICAgIGn/////dAcAAABkZWZhdWx0aQAAAABzLQAAAHBvcCgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVzJ2kBAAAATigFAAAAUuEAAABS1AAAAFJzAAAAUm8AAABS3QAAACgIAAAAUpwAAABSmwAAAHQGAAAAa3dhcmdzUtoAAABS1wAAAHQFAAAAaW5kZXhSfQAAAHQMAAAAZGVmYXVsdHZhbHVlKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0AwAAAHBvcOgBAABzHgAAAAAiBgEMARkBDAETAhQBEwESARABCgEKAQcBBAIKAWMDAAAAAwAAAAIAAABDAAAAcxwAAAB8AQB8AABrBgByFAB8AAB8AQAZU3wCAFNkAQBTKAIAAABzaQIAAAogICAgICAgIFJldHVybnMgbmFtZWQgcmVzdWx0IG1hdGNoaW5nIHRoZSBnaXZlbiBrZXksIG9yIGlmIHRoZXJlIGlzIG5vCiAgICAgICAgc3VjaCBuYW1lLCB0aGVuIHJldHVybnMgdGhlIGdpdmVuIEN7ZGVmYXVsdFZhbHVlfSBvciBDe05vbmV9IGlmIG5vCiAgICAgICAgQ3tkZWZhdWx0VmFsdWV9IGlzIHNwZWNpZmllZC4KCiAgICAgICAgU2ltaWxhciB0byBDe2RpY3QuZ2V0KCl9LgogICAgICAgIAogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKQogICAgICAgICAgICBkYXRlX3N0ciA9IGludGVnZXIoInllYXIiKSArICcvJyArIGludGVnZXIoIm1vbnRoIikgKyAnLycgKyBpbnRlZ2VyKCJkYXkiKSAgICAgICAgICAgCgogICAgICAgICAgICByZXN1bHQgPSBkYXRlX3N0ci5wYXJzZVN0cmluZygiMTk5OS8xMi8zMSIpCiAgICAgICAgICAgIHByaW50KHJlc3VsdC5nZXQoInllYXIiKSkgIyAtPiAnMTk5OScKICAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCgiaG91ciIsICJub3Qgc3BlY2lmaWVkIikpICMgLT4gJ25vdCBzcGVjaWZpZWQnCiAgICAgICAgICAgIHByaW50KHJlc3VsdC5nZXQoImhvdXIiKSkgIyAtPiBOb25lCiAgICAgICAgTigAAAAAKAMAAABSnAAAAHQDAAAAa2V5dAwAAABkZWZhdWx0VmFsdWUoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVLYAAAAHAIAAHMGAAAAABEMAQgCYwMAAAAIAAAABwAAAEMAAABzdwAAAHwAAGoAAGoBAHwBAHwCAIMCAAF4XQB8AABqAgBqAwCDAABEXUwAXAIAfQMAfQQAeD0AdAQAfAQAgwEARF0vAFwCAH0FAFwCAH0GAH0HAHQFAHwGAHwHAHwHAHwBAGsEABeDAgB8BAB8BQA8cTwAV3EjAFdkAQBTKAIAAABzHwIAAAogICAgICAgIEluc2VydHMgbmV3IGVsZW1lbnQgYXQgbG9jYXRpb24gaW5kZXggaW4gdGhlIGxpc3Qgb2YgcGFyc2VkIHRva2Vucy4KICAgICAgICAKICAgICAgICBTaW1pbGFyIHRvIEN7bGlzdC5pbnNlcnQoKX0uCgogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBwcmludChPbmVPck1vcmUoV29yZChudW1zKSkucGFyc2VTdHJpbmcoIjAgMTIzIDMyMSIpKSAjIC0+IFsnMCcsICcxMjMnLCAnMzIxJ10KCiAgICAgICAgICAgICMgdXNlIGEgcGFyc2UgYWN0aW9uIHRvIGluc2VydCB0aGUgcGFyc2UgbG9jYXRpb24gaW4gdGhlIGZyb250IG9mIHRoZSBwYXJzZWQgcmVzdWx0cwogICAgICAgICAgICBkZWYgaW5zZXJ0X2xvY24obG9jbiwgdG9rZW5zKToKICAgICAgICAgICAgICAgIHRva2Vucy5pbnNlcnQoMCwgbG9jbikKICAgICAgICAgICAgcHJpbnQoT25lT3JNb3JlKFdvcmQobnVtcykpLmFkZFBhcnNlQWN0aW9uKGluc2VydF9sb2NuKS5wYXJzZVN0cmluZygiMCAxMjMgMzIxIikpICMgLT4gWzAsICcwJywgJzEyMycsICczMjEnXQogICAgICAgIE4oBgAAAFLNAAAAdAYAAABpbnNlcnRS0AAAAFLhAAAAUuIAAABStQAAACgIAAAAUpwAAABS/QAAAHQGAAAAaW5zU3RyUsIAAABS5QAAAFLaAAAAUucAAABS6AAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgIBAAAyAgAAcwgAAAAADhMCHAEfAWMCAAAAAgAAAAIAAABDAAAAcxQAAAB8AABqAABqAQB8AQCDAQABZAEAUygCAAAAc/4BAAAKICAgICAgICBBZGQgc2luZ2xlIGVsZW1lbnQgdG8gZW5kIG9mIFBhcnNlUmVzdWx0cyBsaXN0IG9mIGVsZW1lbnRzLgoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgcHJpbnQoT25lT3JNb3JlKFdvcmQobnVtcykpLnBhcnNlU3RyaW5nKCIwIDEyMyAzMjEiKSkgIyAtPiBbJzAnLCAnMTIzJywgJzMyMSddCiAgICAgICAgICAgIAogICAgICAgICAgICAjIHVzZSBhIHBhcnNlIGFjdGlvbiB0byBjb21wdXRlIHRoZSBzdW0gb2YgdGhlIHBhcnNlZCBpbnRlZ2VycywgYW5kIGFkZCBpdCB0byB0aGUgZW5kCiAgICAgICAgICAgIGRlZiBhcHBlbmRfc3VtKHRva2Vucyk6CiAgICAgICAgICAgICAgICB0b2tlbnMuYXBwZW5kKHN1bShtYXAoaW50LCB0b2tlbnMpKSkKICAgICAgICAgICAgcHJpbnQoT25lT3JNb3JlKFdvcmQobnVtcykpLmFkZFBhcnNlQWN0aW9uKGFwcGVuZF9zdW0pLnBhcnNlU3RyaW5nKCIwIDEyMyAzMjEiKSkgIyAtPiBbJzAnLCAnMTIzJywgJzMyMScsIDQ0NF0KICAgICAgICBOKAIAAABSzQAAAHQGAAAAYXBwZW5kKAIAAABSnAAAAHQEAAAAaXRlbSgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgQBAABGAgAAcwIAAAAADGMCAAAAAgAAAAMAAABDAAAAczAAAAB0AAB8AQB0AQCDAgByHAB8AAB8AQA3fQAAbhAAfAAAagIAagMAfAEAgwEAAWQBAFMoAgAAAHMUAgAACiAgICAgICAgQWRkIHNlcXVlbmNlIG9mIGVsZW1lbnRzIHRvIGVuZCBvZiBQYXJzZVJlc3VsdHMgbGlzdCBvZiBlbGVtZW50cy4KCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIHBhdHQgPSBPbmVPck1vcmUoV29yZChhbHBoYXMpKQogICAgICAgICAgICAKICAgICAgICAgICAgIyB1c2UgYSBwYXJzZSBhY3Rpb24gdG8gYXBwZW5kIHRoZSByZXZlcnNlIG9mIHRoZSBtYXRjaGVkIHN0cmluZ3MsIHRvIG1ha2UgYSBwYWxpbmRyb21lCiAgICAgICAgICAgIGRlZiBtYWtlX3BhbGluZHJvbWUodG9rZW5zKToKICAgICAgICAgICAgICAgIHRva2Vucy5leHRlbmQocmV2ZXJzZWQoW3RbOjotMV0gZm9yIHQgaW4gdG9rZW5zXSkpCiAgICAgICAgICAgICAgICByZXR1cm4gJycuam9pbih0b2tlbnMpCiAgICAgICAgICAgIHByaW50KHBhdHQuYWRkUGFyc2VBY3Rpb24obWFrZV9wYWxpbmRyb21lKS5wYXJzZVN0cmluZygibHNrZGogc2Rsa2pmIGxrc2QiKSkgIyAtPiAnbHNrZGpzZGxramZsa3NkZHNrbGZqa2xkc2pka3NsJwogICAgICAgIE4oBAAAAFJzAAAAUiAAAABSzQAAAHQGAAAAZXh0ZW5kKAIAAABSnAAAAHQHAAAAaXRlbXNlcSgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5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ZGljdGl0ZW1zKAAAAAAoAQAAAFIMAQAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAX19pYWRkX1+AAgAAcxoAAAAAAQkBDwEPAQ8BAwFGARMBCgETAR0CEgETAWMCAAAAAgAAAAMAAABDAAAAczEAAAB0AAB8AQB0AQCDAgByJQB8AQBkAQBrAgByJQB8AABqAgCDAABTfAEAfAAAF1NkAABTKAIAAABOaQAAAAAoAwAAAFJzAAAAUm8AAABS0gAAACgCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAgAAABfX3JhZGRfX5ACAABzBgAAAAABGwIKA2MBAAAAAQAAAAQAAABDAAAAcyAAAABkAQB0AAB8AABqAQCDAQB0AAB8AABqAgCDAQBmAgAWUygCAAAATnMIAAAAKCVzLCAlcykoAwAAAFK7AAAAUs0AAABS0AAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKnAAAAmAIAAHMCAAAAAAFjAQAAAAEAAAAEAAAAQwAAAHMiAAAAZAEAZAIAagAAZAMAhAAAfAAAagEARIMBAIMBABdkBAAXUygFAAAATnQBAAAAW3MCAAAALCBjAQAAAAIAAAAEAAAAcwAAAHM2AAAAfAAAXSwAfQEAdAAAfAEAdAEAgwIAciQAdAIAfAEAgwEAbgkAdAMAfAEAgwEAVgFxAwBkAABTKAEAAABOKAQAAABScwAAAFIgAAAAUn8AAABSuwAAACgCAAAAUoAAAABSuQAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj6cAgAAcwIAAAAGAHQBAAAAXSgCAAAAUqgAAABSzQAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKmAAAAmwIAAHMCAAAAAAFScgAAAGMCAAAABAAAAAQAAABDAAAAc28AAABnAAB9AgB4YgB8AABqAABEXVcAfQMAfAIAcjIAfAEAcjIAfAIAagEAfAEAgwEAAW4AAHQCAHwDAHQDAIMCAHJUAHwCAHwDAGoEAIMAADd9AgBxEAB8AgBqAQB0BQB8AwCDAQCDAQABcRAAV3wCAFMoAQAAAE4oBgAAAFLNAAAAUgQBAABScwAAAFIgAAAAdA0AAABfYXNTdHJpbmdMaXN0Un8AAAAoBAAAAFKcAAAAdAMAAABzZXB0AwAAAG91dFIFAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcu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ZAQAU2QEAFMoBgAAAHMoAwAACiAgICAgICAgUmV0dXJucyB0aGUgcmVzdWx0cyBuYW1lIGZvciB0aGlzIHRva2VuIGV4cHJlc3Npb24uIFVzZWZ1bCB3aGVuIHNldmVyYWwgCiAgICAgICAgZGlmZmVyZW50IGV4cHJlc3Npb25zIG1pZ2h0IG1hdGNoIGF0IGEgcGFydGljdWxhciBsb2NhdGlvbi4KCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIGludGVnZXIgPSBXb3JkKG51bXMpCiAgICAgICAgICAgIHNzbl9leHByID0gUmVnZXgociJcZFxkXGQtXGRcZC1cZFxkXGRcZCIpCiAgICAgICAgICAgIGhvdXNlX251bWJlcl9leHByID0gU3VwcHJlc3MoJyMnKSArIFdvcmQobnVtcywgYWxwaGFudW1zKQogICAgICAgICAgICB1c2VyX2RhdGEgPSAoR3JvdXAoaG91c2VfbnVtYmVyX2V4cHIpKCJob3VzZV9udW1iZXIiKSAKICAgICAgICAgICAgICAgICAgICAgICAgfCBHcm91cChzc25fZXhwcikoInNzbiIpCiAgICAgICAgICAgICAgICAgICAgICAgIHwgR3JvdXAoaW50ZWdlcikoImFnZSIpKQogICAgICAgICAgICB1c2VyX2luZm8gPSBPbmVPck1vcmUodXNlcl9kYXRhKQogICAgICAgICAgICAKICAgICAgICAgICAgcmVzdWx0ID0gdXNlcl9pbmZvLnBhcnNlU3RyaW5nKCIyMiAxMTEtMjItMzMzMyAjMjIxQiIpCiAgICAgICAgICAgIGZvciBpdGVtIGluIHJlc3VsdDoKICAgICAgICAgICAgICAgIHByaW50KGl0ZW0uZ2V0TmFtZSgpLCAnOicsIGl0ZW1bMF0pCiAgICAgICAgcHJpbnRzOjoKICAgICAgICAgICAgYWdlIDogMjIKICAgICAgICAgICAgc3NuIDogMTExLTIyLTMzMzMKICAgICAgICAgICAgaG91c2VfbnVtYmVyIDogMjIxQgogICAgICAgIGkBAAAAaQAAAABp/////04oAgAAAGkAAAAAaf////8oCgAAAFLHAAAAUsgAAAB0FQAAAF9QYXJzZVJlc3VsdHNfX2xvb2t1cFKXAAAAUt0AAABS0AAAAHQEAAAAbmV4dFLtAAAAUvcAAABS9QAAACgCAAAAUpwAAAB0AwAAAHBhcigAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAcAAABnZXROYW1lKwMAAHMYAAAAABYJAQcBCQEMAQYBDQIHARIBFQEpARkCaQAAAABjBAAAAAsAAAAMAAAAQwAAAHPVAQAAZwAAfQQAZAEAfQUAfAQAagAAfAEAdAEAfAAAagIAgwAAgwEAF4MBAAF8AwByyAF8AABqAwCDAAByAwF0BABkAgCEAAB8AABqBQCDAABEgwEAgwEAfQYAeGsBfAYARF2eAFwCAH0HAH0IAHwEAHKAAHwEAGoAAHwFAIMBAAFuAAB8BABqAABkAwB8AQBkBAB8AgAUfAcAZgMAFoMBAAF0BgB8CAB0BwCDAgBy6QB8CABy0wB8BABqAAB8CABqCAB8AQB8AgBkBQAXgwIAgwEAAXH8AHwEAGoAAHQBAHwIAIMBAIMBAAFxXgB8BABqAAB0CQB8CACDAQCDAQABcV4AV3HIAXQKAGQGAIQAAHwAAESDAQCDAQByyAF8AAB9CAB4owB0CwB8CACDAQBEXZIAXAIAfQkAfQoAdAYAfAoAdAcAgwIAcokBfAQAagAAZAcAfAEAZAQAfAIAFHwJAHwBAGQEAHwCAGQFABcUfAoAaggAfAEAfAIAZAUAF4MCAGYGABaDAQABcSwBfAQAagAAZAcAfAEAZAQAfAIAFHwJAHwBAGQEAHwCAGQFABcUdAEAfAoAgwEAZgYAFoMBAAFxLAFXccgBbgAAZAgAagwAfAQAgwEAUygJAAAAc0gCAAAKICAgICAgICBEaWFnbm9zdGljIG1ldGhvZCBmb3IgbGlzdGluZyBvdXQgdGhlIGNvbnRlbnRzIG9mIGEgQ3tQYXJzZVJlc3VsdHN9LgogICAgICAgIEFjY2VwdHMgYW4gb3B0aW9uYWwgQ3tpbmRlbnR9IGFyZ3VtZW50IHNvIHRoYXQgdGhpcyBzdHJpbmcgY2FuIGJlIGVtYmVkZGVkCiAgICAgICAgaW4gYSBuZXN0ZWQgZGlzcGxheSBvZiBvdGhlciBkYXRhLgoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykKICAgICAgICAgICAgZGF0ZV9zdHIgPSBpbnRlZ2VyKCJ5ZWFyIikgKyAnLycgKyBpbnRlZ2VyKCJtb250aCIpICsgJy8nICsgaW50ZWdlcigiZGF5IikKICAgICAgICAgICAgCiAgICAgICAgICAgIHJlc3VsdCA9IGRhdGVfc3RyLnBhcnNlU3RyaW5nKCcxMi8zMS8xOTk5JykKICAgICAgICAgICAgcHJpbnQocmVzdWx0LmR1bXAoKSkKICAgICAgICBwcmludHM6OgogICAgICAgICAgICBbJzEyJywgJy8nLCAnMzEnLCAnLycsICcxOTk5J10KICAgICAgICAgICAgLSBkYXk6IDE5OTkKICAgICAgICAgICAgLSBtb250aDogMzEKICAgICAgICAgICAgLSB5ZWFyOiAxMgogICAgICAgIHMBAAAACmMBAAAAAwAAAAMAAABzAAAAcycAAAB8AABdHQBcAgB9AQB9AgB0AAB8AQCDAQB8AgBmAgBWAXEDAGQAAFMoAQAAAE4oAQAAAFJ1AAAAKAMAAABSgAAAAFLaAAAAUtcAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXMJAAAAPGdlbmV4cHI+ZwMAAHMCAAAABgBzCgAAACVzJXMtICVzOiBzAgAAACAgaQEAAABjAQAAAAIAAAAEAAAAcwAAAHMeAAAAfAAAXRQAfQEAdAAAfAEAdAEAgwIAVgFxAwBkAABTKAEAAABOKAIAAABScwAAAFIgAAAAKAIAAABSgAAAAHQCAAAAdnYoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXMJAAAAPGdlbmV4cHI+cwMAAHMCAAAABgBzEQAAAAolcyVzWyVkXToKJXMlcyVzUnIAAAAoDQAAAFIEAQAAUn8AAABSwwAAAFL6AAAAdAYAAABzb3J0ZWRS4QAAAFJzAAAAUiAAAAB0BAAAAGR1bXBSuwAAAHQDAAAAYW55UuIAAABSqAAAACgLAAAAUpwAAABSJAEAAHQFAAAAZGVwdGh0BAAAAGZ1bGxSGAEAAHQCAAAATkxS4QAAAFLaAAAAUtcAAABSuQAAAFIxAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSMwEAAFADAABzLAAAAAASBgEGAR0BBgEMARwBEwEGARABHgEPAQYBIAIWAhoBFgEGARkBDwFCAj8CYwEAAAADAAAABAAAAE8AAABzHQAAAHQAAGoAAHwAAGoBAIMAAHwBAHwCAI4BAAFkAQBTKAIAAABz9QIAAAogICAgICAgIFByZXR0eS1wcmludGVyIGZvciBwYXJzZWQgcmVzdWx0cyBhcyBhIGxpc3QsIHVzaW5nIHRoZSBDe3BwcmludH0gbW9kdWxlLgogICAgICAgIEFjY2VwdHMgYWRkaXRpb25hbCBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJncyBhcyBkZWZpbmVkIGZvciB0aGUgCiAgICAgICAgQ3twcHJpbnQucHByaW50fSBtZXRob2QuIChVe2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L3BwcmludC5odG1sI3BwcmludC5wcHJpbnR9KQoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgaWRlbnQgPSBXb3JkKGFscGhhcywgYWxwaGFudW1zKQogICAgICAgICAgICBudW0gPSBXb3JkKG51bXMpCiAgICAgICAgICAgIGZ1bmMgPSBGb3J3YXJkKCkKICAgICAgICAgICAgdGVybSA9IGlkZW50IHwgbnVtIHwgR3JvdXAoJygnICsgZnVuYyArICcpJykKICAgICAgICAgICAgZnVuYyA8PD0gaWRlbnQgKyBHcm91cChPcHRpb25hbChkZWxpbWl0ZWRMaXN0KHRlcm0pKSkKICAgICAgICAgICAgcmVzdWx0ID0gZnVuYy5wYXJzZVN0cmluZygiZm5hIGEsYiwoZm5iIGMsZCwyMDApLDEwMCIpCiAgICAgICAgICAgIHJlc3VsdC5wcHJpbnQod2lkdGg9NDApCiAgICAgICAgcHJpbnRzOjoKICAgICAgICAgICAgWydmbmEnLAogICAgICAgICAgICAgWydhJywKICAgICAgICAgICAgICAnYicsCiAgICAgICAgICAgICAgWycoJywgJ2ZuYicsIFsnYycsICdkJywgJzIwMCddLCAnKSddLAogICAgICAgICAgICAgICcxMDAnXV0KICAgICAgICBOKAIAAAB0BgAAAHBwcmludFLDAAAAKAMAAABSnAAAAFKbAAAAUvwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVI4AQAAfQMAAHMCAAAAABVjAQAAAAEAAAAFAAAAQwAAAHNDAAAAfAAAagAAfAAAagEAagIAgwAAfAAAagMAZAAAawkAci0AfAAAagMAgwAAcDAAZAAAfAAAagUAfAAAagYAZgQAZgIAUygBAAAATigHAAAAUs0AAABS0AAAAFLSAAAAUsgAAABSlwAAAFLJAAAAUscAAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0DAAAAF9fZ2V0c3RhdGVfX5UDAABzCgAAAAABBgEMAR4BBgFjAgAAAAQAAAAFAAAAQwAAAHNtAAAAfAEAZAEAGXwAAF8AAHwBAGQCABlcBAB8AABfAQB9AgB9AwB8AABfAgBpAAB8AABfAwB8AABqAwBqBAB8AwCDAQABfAIAZAAAawkAcmAAdAYAfAIAgwEAfAAAXwcAbgkAZAAAfAAAXwcAZAAAUygDAAAATmkAAAAAaQEAAAAoCAAAAFLNAAAAUtAAAABSxwAAAFLJAAAAUg0BAABSlwAAAFLZAAAAUsgAAAAoBAAAAFKcAAAAdAUAAABzdGF0ZVIvAQAAdAwAAABpbkFjY3VtTmFtZXMoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQMAAAAX19zZXRzdGF0ZV9fnAMAAHMOAAAAAAENBBwBCQEQAQwBEgJjAQAAAAEAAAAEAAAAQwAAAHMcAAAAfAAAagAAfAAAagEAfAAAagIAfAAAagMAZgQAUygBAAAATigEAAAAUs0AAABSxwAAAFLKAAAAUssAAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0DgAAAF9fZ2V0bmV3YXJnc19fqQMAAHMCAAAAAAFjAQAAAAEAAAADAAAAQwAAAHMgAAAAdAAAdAEAfAAAgwEAgwEAdAIAfAAAagMAgwAAgwEAF1MoAQAAAE4oBAAAAFKuAAAAUq8AAABSzAAAAFL1AAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UrAAAACsAwAAcwIAAAAAAU4oNgAAAFKPAAAAUpAAAABSsQAAAFKXAAAAUr8AAABSvgAAAFJzAAAAUp4AAABSugAAAFLcAAAAUukAAABS6gAAAFLrAAAAUuwAAAB0CwAAAF9fbm9uemVyb19fUu4AAABS7wAAAFLyAAAAUvMAAABS9AAAAFIcAQAAUvUAAABS9wAAAFLhAAAAUvAAAABS9gAAAFL4AAAAUvoAAABS/wAAAFLYAAAAUgIBAABSBAEAAFIGAQAAUggBAABSpQAAAFIKAQAAUhIBAABSEwEAAFKnAAAAUqYAAABSFgEAAFLDAAAAUhoBAABS0gAAAFLGAAAAUiEBAABSLQEAAFIwAQAAUjMBAABSOAEAAFI5AQAAUjwBAABSPQEAAFKwAAAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIgAAAALQEAAHNoAAAABiYGARUJGCcJCQwNCRUJAwkBCQEGAQkBCQEJBgkDCQMGAQYDBgMGAQMDBgMGAwYDCQQJBAkECQUJNAwWCRQJDgkSCQcJDgkFCRAJCAkDCQMMCwkQCSMJCxU9CQcJJRItCRgJBwkNCQNjAgAAAAMAAAAFAAAAQwAAAHNXAAAAfAEAfQIAZAEAfAAABANrAABvIwB0AAB8AgCDAQBrAABuAgACAXJAAHwCAHwAAGQCABgZZAMAawIAckAAZAIAU3wAAHwCAGoBAGQDAGQBAHwAAIMDABhTKAQAAABzBAIAAFJldHVybnMgY3VycmVudCBjb2x1bW4gd2l0aGluIGEgc3RyaW5nLCBjb3VudGluZyBuZXdsaW5lcyBhcyBsaW5lIHNlcGFyYXRvcnMuCiAgIFRoZSBmaXJzdCBjb2x1bW4gaXMgbnVtYmVyIDEuCgogICBOb3RlOiB0aGUgZGVmYXVsdCBwYXJzaW5nIGJlaGF2aW9yIGlzIHRvIGV4cGFuZCB0YWJzIGluIHRoZSBpbnB1dCBzdHJpbmcKICAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBwYXJzaW5nIHByb2Nlc3MuICBTZWUgTHtJe1BhcnNlckVsZW1lbnQucGFyc2VTdHJpbmd9PFBhcnNlckVsZW1lbnQucGFyc2VTdHJpbmc+fSBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICBvbiBwYXJzaW5nIHN0cmluZ3MgY29udGFpbmluZyBDezxUQUI+fXMsIGFuZCBzdWdnZXN0ZWQgbWV0aG9kcyB0byBtYWludGFpbiBhCiAgIGNvbnNpc3RlbnQgdmlldyBvZiB0aGUgcGFyc2VkIHN0cmluZywgdGhlIHBhcnNlIGxvY2F0aW9uLCBhbmQgbGluZSBhbmQgY29sdW1uCiAgIHBvc2l0aW9ucyB3aXRoaW4gdGhlIHBhcnNlZCBzdHJpbmcuCiAgIGkAAAAAaQEAAABzAQAAAAooAgAAAFLdAAAAdAUAAAByZmluZCgDAAAAUpYAAAB0BAAAAHN0cmdShAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UjcAAACxAwAAcwQAAAAACgYBYwIAAAACAAAABAAAAEMAAABzFwAAAHwBAGoAAGQBAGQCAHwAAIMDAGQDABdTKAQAAABzBwIAAFJldHVybnMgY3VycmVudCBsaW5lIG51bWJlciB3aXRoaW4gYSBzdHJpbmcsIGNvdW50aW5nIG5ld2xpbmVzIGFzIGxpbmUgc2VwYXJhdG9ycy4KICAgVGhlIGZpcnN0IGxpbmUgaXMgbnVtYmVyIDEuCgogICBOb3RlOiB0aGUgZGVmYXVsdCBwYXJzaW5nIGJlaGF2aW9yIGlzIHRvIGV4cGFuZCB0YWJzIGluIHRoZSBpbnB1dCBzdHJpbmcKICAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBwYXJzaW5nIHByb2Nlc3MuICBTZWUgTHtJe1BhcnNlckVsZW1lbnQucGFyc2VTdHJpbmd9PFBhcnNlckVsZW1lbnQucGFyc2VTdHJpbmc+fSBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICBvbiBwYXJzaW5nIHN0cmluZ3MgY29udGFpbmluZyBDezxUQUI+fXMsIGFuZCBzdWdnZXN0ZWQgbWV0aG9kcyB0byBtYWludGFpbiBhCiAgIGNvbnNpc3RlbnQgdmlldyBvZiB0aGUgcGFyc2VkIHN0cmluZywgdGhlIHBhcnNlIGxvY2F0aW9uLCBhbmQgbGluZSBhbmQgY29sdW1uCiAgIHBvc2l0aW9ucyB3aXRoaW4gdGhlIHBhcnNlZCBzdHJpbmcuCiAgIHMBAAAACmkAAAAAaQEAAAAoAQAAAHQFAAAAY291bnQoAgAAAFKWAAAAUkABAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJIAAAAvgMAAHMCAAAAAApjAgAAAAQAAAAEAAAAQwAAAHNSAAAAfAEAagAAZAEAZAIAfAAAgwMAfQIAfAEAagEAZAEAfAAAgwIAfQMAfAMAZAIAawUAckIAfAEAfAIAZAMAF3wDACFTfAEAfAIAZAMAFx9TZAQAUygFAAAAc2YAAABSZXR1cm5zIHRoZSBsaW5lIG9mIHRleHQgY29udGFpbmluZyBsb2Mgd2l0aGluIGEgc3RyaW5nLCBjb3VudGluZyBuZXdsaW5lcyBhcyBsaW5lIHNlcGFyYXRvcnMuCiAgICAgICBzAQAAAAppAAAAAGkBAAAATigCAAAAUj8BAAB0BAAAAGZpbmQoBAAAAFKWAAAAUkABAAB0BgAAAGxhc3RDUnQGAAAAbmV4dENSKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSRQAAAMoDAABzCgAAAAADFQESAQwBDwJjAwAAAAMAAAAGAAAAQwAAAHNBAAAAZAEAdAAAfAIAgwEAF2QCABd0AAB8AQCDAQAXZAMAdAEAfAEAfAAAgwIAdAIAfAEAfAAAgwIAZgIAFhdHSGQAAFMoBAAAAE5zBgAAAE1hdGNoIHMIAAAAIGF0IGxvYyBzBwAAACglZCwlZCkoAwAAAFJ/AAAAUkgAAABSNwAAACgDAAAAdAgAAABpbnN0cmluZ1KWAAAAdAQAAABleHByKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0GAAAAF9kZWZhdWx0U3RhcnREZWJ1Z0FjdGlvbtQDAABzAgAAAAABYwUAAAAFAAAAAwAAAEMAAABzJwAAAGQBAHQAAHwDAIMBABdkAgAXdAEAfAQAagIAgwAAgwEAF0dIZAAAUygDAAAATnMIAAAATWF0Y2hlZCBzBAAAACAtPiAoAwAAAFJ/AAAAUnUAAABSwwAAACgFAAAAUkUBAAB0CAAAAHN0YXJ0bG9jdAYAAABlbmRsb2NSRgEAAHQEAAAAdG9rcygAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dBoAAABfZGVmYXVsdFN1Y2Nlc3NEZWJ1Z0FjdGlvbtcDAABzAgAAAAABYwQAAAAEAAAAAwAAAEMAAABzEwAAAGQBAHQAAHwDAIMBABdHSGQAAFMoAgAAAE5zEQAAAEV4Y2VwdGlvbiByYWlzZWQ6KAEAAABSfwAAACgEAAAAUkUBAABSlgAAAFJGAQAAdAMAAABleGMoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQcAAAAX2RlZmF1bHRFeGNlcHRpb25EZWJ1Z0FjdGlvbtoDAABzAgAAAAABYwAAAAABAAAAAQAAAEcAAABzBAAAAGQBAFMoAgAAAHNHAAAAJ0RvLW5vdGhpbmcnIGRlYnVnIGFjdGlvbiwgdG8gc3VwcHJlc3MgZGVidWdnaW5nIG91dHB1dCBkdXJpbmcgcGFyc2luZy5OKAAAAAAoAQAAAFKbAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSTwAAAN0DAABzAgAAAAACaQIAAABjAgAAAAcAAAAGAAAAAwAAAHMMAQAAiAIAdAAAawYAchkAhwIAZgEAZAEAhgAAU2QCAGcBAIkDAHQBAGcBAIkBAHQCAGQDACBkEABrBQByVgBkAgBkBgCEAQB9AgBkAgBkBwCEAQCJAABuEgB0AwBqBAB9AgB0AwBqBQCJAABkCAB9AwB8AgBkCQBkAwCDAAFkCgAZfQQAfAQAZAIAGXwEAGQL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AABjYWxsRHVyaW5nVHJ5KAIAAABSnAAAAHQIAAAAc2F2ZWxpc3QoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAAYQQAAHMoAAAAAAEMAQkCCQEJAQkBCQEMAQkBCQEJAQwBCQEJAQkBCQEJAQkBCQEJAWMBAAAAAgAAAAIAAABDAAAAc0UAAAB0AABqAAB8AACDAQB9AQB8AABqAQAefAEAXwEAfAAAagIAHnwBAF8CAHwAAGoDAHJBAHQEAGoFAHwBAF8GAG4AAHwBAFMoAQAAAHMkAwAACiAgICAgICAgTWFrZSBhIGNvcHkgb2YgdGhpcyBDe1BhcnNlckVsZW1lbnR9LiAgVXNlZnVsIGZvciBkZWZpbmluZyBkaWZmZXJlbnQgcGFyc2UgYWN0aW9ucwogICAgICAgIGZvciB0aGUgc2FtZSBwYXJzaW5nIHBhdHRlcm4sIHVzaW5nIGNvcGllcyBvZiB0aGUgb3JpZ2luYWwgcGFyc2UgZWxlbWVudC4KICAgICAgICAKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykuc2V0UGFyc2VBY3Rpb24obGFtYmRhIHRva3M6IGludCh0b2tzWzBdKSkKICAgICAgICAgICAgaW50ZWdlcksgPSBpbnRlZ2VyLmNvcHkoKS5hZGRQYXJzZUFjdGlvbihsYW1iZGEgdG9rczogdG9rc1swXSoxMDI0KSArIFN1cHByZXNzKCJLIikKICAgICAgICAgICAgaW50ZWdlck0gPSBpbnRlZ2VyLmNvcHkoKS5hZGRQYXJzZUFjdGlvbihsYW1iZGEgdG9rczogdG9rc1swXSoxMDI0KjEwMjQpICsgU3VwcHJlc3MoIk0iKQogICAgICAgICAgICAKICAgICAgICAgICAgcHJpbnQoT25lT3JNb3JlKGludGVnZXJLIHwgaW50ZWdlck0gfCBpbnRlZ2VyKS5wYXJzZVN0cmluZygiNUsgMTAwIDY0MEsgMjU2TSIpKQogICAgICAgIHByaW50czo6CiAgICAgICAgICAgIFs1MTIwLCAxMDAsIDY1NTM2MCwgMjY4NDM1NDU2XQogICAgICAgIEVxdWl2YWxlbnQgZm9ybSBvZiBDe2V4cHIuY29weSgpfSBpcyBqdXN0IEN7ZXhwcigpfTo6CiAgICAgICAgICAgIGludGVnZXJNID0gaW50ZWdlcigpLmFkZFBhcnNlQWN0aW9uKGxhbWJkYSB0b2tzOiB0b2tzWzBdKjEwMjQqMTAyNCkgKyBTdXBwcmVzcygiTSIpCiAgICAgICAgKAcAAABS0gAAAFJrAQAAUnUBAABScgEAAFIiAAAAUmYBAABScQEAACgCAAAAUpwAAAB0AwAAAGNweSgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UtIAAAB4BAAAcwwAAAAAEA8BDQENAQkBDwFjAgAAAAIAAAADAAAAQwAAAHM+AAAAfAEAfAAAXwAAZAEAfAAAagAAF3wAAF8BAHQCAHwAAGQCAIMCAHI6AHwAAGoBAHwAAGoDAF8EAG4AAHwAAFMoAwAAAHNmAQAACiAgICAgICAgRGVmaW5lIG5hbWUgZm9yIHRoaXMgZXhwcmVzc2lvbiwgbWFrZXMgZGVidWdnaW5nIGFuZCBleGNlcHRpb24gbWVzc2FnZXMgY2xlYXJlci4KICAgICAgICAKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgV29yZChudW1zKS5wYXJzZVN0cmluZygiQUJDIikgICMgLT4gRXhjZXB0aW9uOiBFeHBlY3RlZCBXOigwMTIzLi4uKSAoYXQgY2hhciAwKSwgKGxpbmU6MSwgY29sOjEpCiAgICAgICAgICAgIFdvcmQobnVtcykuc2V0TmFtZSgiaW50ZWdlciIpLnBhcnNlU3RyaW5nKCJBQkMiKSAgIyAtPiBFeGNlcHRpb246IEV4cGVjdGVkIGludGVnZXIgKGF0IGNoYXIgMCksIChsaW5lOjEsIGNvbDoxKQogICAgICAgIHMJAAAARXhwZWN0ZWQgdAkAAABleGNlcHRpb24oBQAAAFLCAAAAUnkBAABS8QAAAFKBAQAAUpgAAAAoAgAAAFKcAAAAUsIAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQHAAAAc2V0TmFtZY8EAABzCgAAAAAICQEQAQ8BEgFjAwAAAAQAAAACAAAAQwAAAHNFAAAAfAAAagAAgwAAfQMAfAEAagEAZAEAgwEAci4AfAEAZAIAIH0BAHQCAH0CAG4AAHwBAHwDAF8DAHwCAAx8AwBfBAB8AwBTKAMAAABzUAMAAAogICAgICAgIERlZmluZSBuYW1lIGZvciByZWZlcmVuY2luZyBtYXRjaGluZyB0b2tlbnMgYXMgYSBuZXN0ZWQgYXR0cmlidXRlCiAgICAgICAgb2YgdGhlIHJldHVybmVkIHBhcnNlIHJlc3VsdHMuCiAgICAgICAgTk9URTogdGhpcyByZXR1cm5zIGEgKmNvcHkqIG9mIHRoZSBvcmlnaW5hbCBDe1BhcnNlckVsZW1lbnR9IG9iamVjdDsKICAgICAgICB0aGlzIGlzIHNvIHRoYXQgdGhlIGNsaWVudCBjYW4gZGVmaW5lIGEgYmFzaWMgZWxlbWVudCwgc3VjaCBhcyBhbgogICAgICAgIGludGVnZXIsIGFuZCByZWZlcmVuY2UgaXQgaW4gbXVsdGlwbGUgcGxhY2VzIHdpdGggZGlmZmVyZW50IG5hbWVzLgoKICAgICAgICBZb3UgY2FuIGFsc28gc2V0IHJlc3VsdHMgbmFtZXMgdXNpbmcgdGhlIGFiYnJldmlhdGVkIHN5bnRheCwKICAgICAgICBDe2V4cHIoIm5hbWUiKX0gaW4gcGxhY2Ugb2YgQ3tleHByLnNldFJlc3VsdHNOYW1lKCJuYW1lIil9IC0gCiAgICAgICAgc2VlIEx7SXtfX2NhbGxfX308X19jYWxsX18+fS4KCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIGRhdGVfc3RyID0gKGludGVnZXIuc2V0UmVzdWx0c05hbWUoInllYXIiKSArICcvJyAKICAgICAgICAgICAgICAgICAgICAgICAgKyBpbnRlZ2VyLnNldFJlc3VsdHNOYW1lKCJtb250aCIpICsgJy8nIAogICAgICAgICAgICAgICAgICAgICAgICArIGludGVnZXIuc2V0UmVzdWx0c05hbWUoImRheSIpKQoKICAgICAgICAgICAgIyBlcXVpdmFsZW50IGZvcm06CiAgICAgICAgICAgIGRhdGVfc3RyID0gaW50ZWdlcigieWVhciIpICsgJy8nICsgaW50ZWdlcigibW9udGgiKSArICcvJyArIGludGVnZXIoImRheSIpCiAgICAgICAgdAEAAAAqaf////8oBQAAAFLSAAAAdAgAAABlbmRzd2l0aFK/AAAAUm4BAABSegEAACgEAAAAUpwAAABSwgAAAHQOAAAAbGlzdEFsbE1hdGNoZXN0BwAAAG5ld3NlbGYoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQOAAAAc2V0UmVzdWx0c05hbWWdBAAAcw4AAAAAFAwBDwEKAQkBCQEKAWMCAAAAAwAAAAQAAAADAAAAc2EAAAB8AQByOQB8AABqAACJAAB0AQB0AQCHAABmAQBkAQCGAgB9AgCIAAB8AgBfAgB8AgB8AABfAABuJAB0AwB8AABqAABkAgCDAgByXQB8AABqAABqAgB8AABfAABuAAB8AABTKAMAAABzpgAAAE1ldGhvZCB0byBpbnZva2UgdGhlIFB5dGhvbiBwZGIgZGVidWdnZXIgd2hlbiB0aGlzIGVsZW1lbnQgaXMKICAgICAgICAgICBhYm91dCB0byBiZSBwYXJzZWQuIFNldCBDe2JyZWFrRmxhZ30gdG8gVHJ1ZSB0byBlbmFibGUsIEZhbHNlIHRvCiAgICAgICAgICAgZGlzYWJsZS4KICAgICAgICBjBAAAAAUAAAAFAAAAEwAAAHMpAAAAZAEAZAAAbAAAfQQAfAQAagEAgwAAAYgAAHwAAHwBAHwCAHwDAIMEAFMoAgAAAE5p/////ygCAAAAdAMAAABwZGJ0CQAAAHNldF90cmFjZSgFAAAAUkUBAABSlgAAAHQJAAAAZG9BY3Rpb25zdAwAAABjYWxsUHJlUGFyc2VSiAEAACgBAAAAdAwAAABfcGFyc2VNZXRob2QoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0BwAAAGJyZWFrZXLABAAAcwYAAAAAAQwBCgF0FAAAAF9vcmlnaW5hbFBhcnNlTWV0aG9kKAQAAAB0BgAAAF9wYXJzZVK/AAAAUo4BAABS8QAAACgDAAAAUpwAAAB0CQAAAGJyZWFrRmxhZ1KNAQAAKAAAAAAoAQAAAFKMAQAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAc2V0QnJlYWu5BAAAcxAAAAAABQYBCQEVBAkBDAISARIBYwEAAAADAAAABQAAAE8AAABzNwAAAHQAAHQBAHQCAHQAAHwBAIMBAIMCAIMBAHwAAF8DAHwCAGoEAGQBAHQFAIMCAHwAAF8GAHwAAFMoAgAAAHMLBwAACiAgICAgICAgRGVmaW5lIGFjdGlvbiB0byBwZXJmb3JtIHdoZW4gc3VjY2Vzc2Z1bGx5IG1hdGNoaW5nIHBhcnNlIGVsZW1lbnQgZGVmaW5pdGlvbi4KICAgICAgICBQYXJzZSBhY3Rpb24gZm4gaXMgYSBjYWxsYWJsZSBtZXRob2Qgd2l0aCAwLTMgYXJndW1lbnRzLCBjYWxsZWQgYXMgQ3tmbihzLGxvYyx0b2tzKX0sCiAgICAgICAgQ3tmbihsb2MsdG9rcyl9LCBDe2ZuKHRva3MpfSwgb3IganVzdCBDe2ZuKCl9LCB3aGVyZToKICAgICAgICAgLSBzICAgPSB0aGUgb3JpZ2luYWwgc3RyaW5nIGJlaW5nIHBhcnNlZCAoc2VlIG5vdGUgYmVsb3cpCiAgICAgICAgIC0gbG9jID0gdGhlIGxvY2F0aW9uIG9mIHRoZSBtYXRjaGluZyBzdWJzdHJpbmcKICAgICAgICAgLSB0b2tzID0gYSBsaXN0IG9mIHRoZSBtYXRjaGVkIHRva2VucywgcGFja2FnZWQgYXMgYSBDe0x7UGFyc2VSZXN1bHRzfX0gb2JqZWN0CiAgICAgICAgSWYgdGhlIGZ1bmN0aW9ucyBpbiBmbnMgbW9kaWZ5IHRoZSB0b2tlbnMsIHRoZXkgY2FuIHJldHVybiB0aGVtIGFzIHRoZSByZXR1cm4KICAgICAgICB2YWx1ZSBmcm9tIGZuLCBhbmQgdGhlIG1vZGlmaWVkIGxpc3Qgb2YgdG9rZW5zIHdpbGwgcmVwbGFjZSB0aGUgb3JpZ2luYWwuCiAgICAgICAgT3RoZXJ3aXNlLCBmbiBkb2VzIG5vdCBuZWVkIHRvIHJldHVybiBhbnkgdmFsdWUuCgogICAgICAgIE9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzOgogICAgICAgICAtIGNhbGxEdXJpbmdUcnkgPSAoZGVmYXVsdD1De0ZhbHNlfSkgaW5kaWNhdGUgaWYgcGFyc2UgYWN0aW9uIHNob3VsZCBiZSBydW4gZHVyaW5nIGxvb2thaGVhZHMgYW5kIGFsdGVybmF0ZSB0ZXN0aW5nCgogICAgICAgIE5vdGU6IHRoZSBkZWZhdWx0IHBhcnNpbmcgYmVoYXZpb3IgaXMgdG8gZXhwYW5kIHRhYnMgaW4gdGhlIGlucHV0IHN0cmluZwogICAgICAgIGJlZm9yZSBzdGFydGluZyB0aGUgcGFyc2luZyBwcm9jZXNzLiAgU2VlIEx7SXtwYXJzZVN0cmlu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b24gdG8gZXhwcmVzc2lvbidzIGxpc3Qgb2YgcGFyc2UgYWN0aW9ucy4gU2VlIAogICAgICAgIEx7SXtzZXRQYXJzZUFjdGlvbn08c2V0UGFyc2VBY3Rpb24+fSBmb3IgZnVuY3Rpb24gY2FsbCBzaWduYXR1cmVzLiBVbmxpa2UgQ3tzZXRQYXJzZUFjdGlvbn0sIAogICAgICAgIGZ1bmN0aW9ucyBwYXNzZWQgdG8gQ3thZGRDb25kaXRpb259IG5lZWQgdG8gcmV0dXJuIGJvb2xlYW4gc3VjY2Vzcy9mYWlsIG9mIHRoZSBjb25kaXRpb24uCgogICAgICAgIE9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzOgogICAgICAgICAtIG1lc3NhZ2UgPSBkZWZpbmUgYSBjdXN0b20gbWVzc2FnZSB0byBiZSB1c2VkIGluIHRoZSByYWlzZWQgZXhjZXB0aW9uCiAgICAgICAgIC0gZmF0YWwgICA9IGlmIFRydWUsIHdpbGwgcmFpc2UgUGFyc2VGYXRhbEV4Y2VwdGlvbiB0byBzdG9wIHBhcnNpbmcgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSB3aWxsIHJhaXNlIFBhcnNlRXhjZXB0aW9uCiAgICAgICAgIAogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKS5zZXRQYXJzZUFjdGlvbihsYW1iZGEgdG9rczogaW50KHRva3NbMF0pKQogICAgICAgICAgICB5ZWFyX2ludCA9IGludGVnZXIuY29weSgpCiAgICAgICAgICAgIHllYXJfaW50LmFkZENvbmRpdGlvbihsYW1iZGEgdG9rczogdG9rc1swXSA+PSAyMDAwLCBtZXNzYWdlPSJPbmx5IHN1cHBvcnQgeWVhcnMgMjAwMCBhbmQgbGF0ZXIiKQogICAgICAgICAgICBkYXRlX3N0ciA9IHllYXJfaW50ICsgJy8nICsgaW50ZWdlciArICcvJyArIGludGVnZXIKCiAgICAgICAgICAgIHJlc3VsdCA9IGRhdGVfc3RyLnBhcnNlU3RyaW5nKCIxOTk5LzEyLzMxIikgICMgLT4gRXhjZXB0aW9uOiBPbmx5IHN1cHBvcnQgeWVhcnMgMjAwMCBhbmQgbGF0ZXIgKGF0IGNoYXIgMCksIChsaW5lOjEsIGNvbDoxKQogICAgICAgIHQHAAAAbWVzc2FnZXMdAAAAZmFpbGVkIHVzZXItZGVmaW5lZCBjb25kaXRpb250BQAAAGZhdGFsYwMAAAADAAAABQAAABMAAABzNwAAAHQAAHQBAIgBAIMBAHwAAHwBAHwCAIMDAIMBAHMzAIgAAHwAAHwBAIgCAIMDAIIBAG4AAGQAAFMoAQAAAE4oAgAAAFL5AAAAUmUBAAAoAwAAAFKEAAAAUk4BAABScAAAACgDAAAAdAgAAABleGNfdHlwZXQCAAAAZm5SmAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQCAAAAcGEPBQAAcwQAAAAAAR4BUn4BAAAoBwAAAFLYAAAAUsYAAABSHwAAAFIdAAAAUmsBAABSBAEAAFJ+AQAAKAQAAABSnAAAAFKTAQAAUvwAAABSmQEAACgAAAAAKAMAAABSlwEAAFKYAQAAUpgAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAwAAABhZGRDb25kaXRpb277BAAAcw4AAAAAERIBHgENARUDFAEeAWMCAAAAAgAAAAIAAABDAAAAcw0AAAB8AQB8AABfAAB8AABTKAEAAABzCwIAAERlZmluZSBhY3Rpb24gdG8gcGVyZm9ybSBpZiBwYXJzaW5nIGZhaWxzIGF0IHRoaXMgZXhwcmVzc2lvbi4KICAgICAgICAgICBGYWlsIGFjdG9uIGZuIGlzIGEgY2FsbGFibGUgZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgYXJndW1lbnRz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AABub3RfaW5fY2FjaGUoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlS2AAAAJ4FAABzAgAAAAABYwMAAAADAAAAAwAAABMAAABzDgAAAHwCAIgAAHwBADxkAABTKAEAAABOKAAAAAAoAwAAAFKcAAAAUgABAABS5wAAACgBAAAAUrABAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0AwAAAHNldKEFAABzAgAAAAABYwEAAAABAAAAAQAAABMAAABzDgAAAIgAAGoAAIMAAAFkAABTKAEAAABOKAEAAABSCAEAACgBAAAAUpwAAAAoAQAAAFKwAQAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UggBAACkBQAAcwIAAAAAASgHAAAAUr0AAABSsQEAAHQFAAAAdHlwZXN0CgAAAE1ldGhvZFR5cGVS2AAAAFKyAQAAUggBAAAoBAAAAFKcAAAAUtgAAABSsgEAAFIIAQAAKAAAAAAoAgAAAFKwAQAAUrEBAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAACaBQAAcxAAAAAAAQYBEAISAw8DDwMVARUBKAMAAABSjwAAAFKQAAAAUp4AAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Uq8BAACZBQAAcwIAAAAGAXQKAAAAX0ZpZm9DYWNoZWMAAAAAAAAAAAEAAABCAAAAcxEAAABlAABaAQBkAACEAABaAgBSUygBAAAAYwIAAAAFAAAAAwAAAAMAAABzjwAAAHQAAIMAAAR8AABfAQCJAQB0AgCDAACJAACHAACHAQBmAgBkAQCGAAB9AgCHAACHAgBmAgBkAgCGAAB9AwCHAABmAQBkAwCGAAB9BAB0AwBqBAB8AgB8AACDAgB8AABfBQB0AwBqBAB8AwB8AACDAgB8AABfBgB0AwBqBAB8BAB8AACDAgB8AABfBwBkAABTKAQAAABOYwIAAAACAAAAAwAAABMAAABzEAAAAIgAAGoAAHwBAIgBAIMCAFMoAQAAAE4oAQAAAFLYAAAAKAIAAABSnAAAAFIAAQAAKAIAAABSsAEAAFKxAQAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UtgAAACyBQAAcwIAAAAAAWMDAAAAAwAAAAMAAAATAAAAczAAAAB8AgCIAAB8AQA8dAAAiAAAgwEAiAEAawQAciwAiAAAagEAdAIAgwEAAW4AAGQAAFMoAQAAAE4oAwAAAFLdAAAAdAcAAABwb3BpdGVtUsYAAAAoAwAAAFKcAAAAUgABAABS5wAAACgCAAAAUrABAAB0BAAAAHNpemUoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSsgEAALUFAABzBgAAAAABCgESAWMBAAAAAQAAAAEAAAATAAAAcw4AAACIAABqAACDAAABZAAAUygBAAAATigBAAAAUggBAAAoAQAAAFKcAAAAKAEAAABSsAEAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIIAQAAugUAAHMCAAAAAAEoCAAAAFK9AAAAUrEBAAB0DAAAAF9PcmRlcmVkRGljdFKzAQAAUrQBAABS2AAAAFKyAQAAUggBAAAoBQAAAFKcAAAAUrcBAABS2AAAAFKyAQAAUggBAAAoAAAAACgDAAAAUrABAABSsQEAAFK3AQAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAArQUAAHMQAAAAAAEQAgkCEgMSBQ8DFQEVASgDAAAAUo8AAABSkAAAAFKeAAAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVK1AQAArAUAAHMCAAAABgFjAAAAAAAAAAABAAAAQgAAAHMRAAAAZQAAWgEAZAAAhAAAWgIAUlMoAQAAAGMCAAAABQAAAAMAAAADAAAAc6QAAAB0AACDAAAEfAAAXwEAiQIAaQAAiQAAdAIAagMAZwAAiAMAgwIAiQEAhwAAhwIAZgIAZAEAhgAAfQIAhwAAhwEAhwMAZgMAZAIAhgAAfQMAhwAAhwEAZgIAZAMAhgAAfQQAdAQAagUAfAIAfAAAgwIAfAAAXwYAdAQAagUAfAMAfAAAgwIAfAAAXwcAdAQAagUAfAQAfAAAgwIAfAAAXwgAZAAAUygEAAAATmMCAAAAAgAAAAMAAAATAAAAcxAAAACIAABqAAB8AQCIAQCDAgBTKAEAAABOKAEAAABS2AAAACgCAAAAUpwAAABSAAEAACgCAAAAUrABAABSsQEAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVLYAAAAyQUAAHMCAAAAAAFjAwAAAAMAAAADAAAAEwAAAHNGAAAAfAIAiAAAfAEAPHQAAIgAAIMBAIgCAGsEAHI1AIgAAGoBAIgBAGoCAIMAAGQAAIMCAAFuAACIAQBqBAB8AQCDAQABZAAAUygBAAAATigFAAAAUt0AAABS/wAAAHQHAAAAcG9wbGVmdFKXAAAAUgQBAAAoAwAAAFKcAAAAUgABAABS5wAAACgDAAAAUrABAAB0CAAAAGtleV9maWZvUrcBAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSsgEAAMwFAABzCAAAAAABCgESARkBYwEAAAABAAAAAQAAABMAAABzGAAAAIgAAGoAAIMAAAGIAQBqAACDAAABZAAAUygBAAAATigBAAAAUggBAAAoAQAAAFKcAAAAKAIAAABSsAEAAFK6AQAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UggBAADSBQAAcwQAAAAAAQoBKAkAAABSvQAAAFKxAQAAdAsAAABjb2xsZWN0aW9uc3QFAAAAZGVxdWVSswEAAFK0AQAAUtgAAABSsgEAAFIIAQAAKAUAAABSnAAAAFK3AQAAUtgAAABSsgEAAFIIAQAAKAAAAAAoBAAAAFKwAQAAUroBAABSsQEAAFK3AQAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAAwwUAAHMSAAAAAAEQAgYBEgISAxUGEgQVARUBKAMAAABSjwAAAFKQAAAAUp4AAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UrUBAADCBQAAcwIAAAAGAWkAAAAAYwUAAAALAAAACQAAAEMAAABzLgEAAGQDAFwCAH0FAH0GAHwAAHwBAHwCAHwEAHwDAGYFAH0HAHQAAGoBAI/+AAF0AABqAgB9CAB8CABqAwB8BwCDAQB9CQB8CQB8CABqBABrCABy4QB0AABqBQB8BgBjAgAZ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ZWVkdXAgbWF5IGJyZWFrIGV4aXN0aW5nIHByb2dyYW1zIHRoYXQgdXNlIHBhcnNlIGFjdGlvbnMgdGhhdAogICAgICAgICAgIGhhdmUgc2lkZS1lZmZlY3RzLiAgRm9yIHRoaXMgcmVhc29uLCBwYWNrcmF0IHBhcnNpbmcgaXMgZGlzYWJsZWQgd2hlbgogICAgICAgICAgIHlvdSBmaXJzdCBpbXBvcnQgcHlwYXJzaW5nLiAgVG8gYWN0aXZhdGUgdGhlIHBhY2tyYXQgZmVhdHVyZSwgeW91cgogICAgICAgICAgIHByb2dyYW0gbXVzdCBjYWxsIHRoZSBjbGFzcyBtZXRob2QgQ3tQYXJzZXJFbGVtZW50LmVuYWJsZVBhY2tyYXQoKX0uICBJZgogICAgICAgICAgIHlvdXIgcHJvZ3JhbSB1c2VzIEN7cHN5Y299IHRvICJjb21waWxlIGFzIHlvdSBnbyIsIHlvdSBtdXN0IGNhbGwKICAgICAgICAgICBDe2VuYWJsZVBhY2tyYXR9IGJlZm9yZSBjYWxsaW5nIEN7cHN5Y28uZnVsbCgpfS4gIElmIHlvdSBkbyBub3QgZG8gdGhpcywKICAgICAgICAgICBQeXRob24gd2lsbCBjcmFzaC4gIEZvciBiZXN0IHJlc3VsdHMsIGNhbGwgQ3tlbmFibGVQYWNrcmF0KCl9IGltbWVkaWF0ZWx5CiAgICAgICAgICAgYWZ0ZXIgaW1wb3J0aW5nIHB5cGFyc2luZy4KICAgICAgICAgICAKICAgICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgICAgaW1wb3J0IHB5cGFyc2luZwogICAgICAgICAgICAgICBweXBhcnNpbmcuUGFyc2VyRWxlbWVudC5lbmFibGVQYWNrcmF0KCkKICAgICAgICBOKAkAAABSIgAAAHQPAAAAX3BhY2tyYXRFbmFibGVkUr8AAABSlwAAAFKvAQAAUr4BAABStQEAAFLDAQAAUo8BAAAoAQAAAHQQAAAAY2FjaGVfc2l6ZV9saW1pdCgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dA0AAABlbmFibGVQYWNrcmF0AAYAAHMMAAAAABsJAQkBDAESAhIBYwMAAAAIAAAABQAAAEMAAABz4AAAAHQAAGoBAIMAAAF8AABqAgBzIAB8AABqAwCDAAABbgAAeBsAfAAAagQARF0QAH0DAHwDAGoDAIMAAAFxKgBXfAAAagUAc1YAfAEAagYAgwAAfQEAbgAAeVcAfAAAagcAfAEAZAEAgwIAXAIAfQQAfQUAfAIAcqwAfAAAaggAfAEAfAQAgwIAfQQAdAkAgwAAdAoAgwAAF30GAHwGAGoHAHwBAHwEAIMCAAFuAABXbigABHQLAGsKAHLXAAF9BwABdAAAagwAcs4AggAAcdwAfAcAggEAbgUAWHwFAFNkAgBTKAMAAABzQgUAAAogICAgICAgIEV4ZWN1dGUgdGhlIHBhcnNlIGV4cHJlc3Npb24gd2l0aCB0aGUgZ2l2ZW4gc3RyaW5nLgogICAgICAgIFRoaXMgaXMgdGhlIG1haW4gaW50ZXJmYWNlIHRvIHRoZSBjbGllbnQgY29kZSwgb25jZSB0aGUgY29tcGxldGUKICAgICAgICBleHByZXNzaW9uIGhhcyBiZWVuIGJ1aWx0LgoKICAgICAgICBJZiB5b3Ugd2FudCB0aGUgZ3JhbW1hciB0byByZXF1aXJlIHRoYXQgdGhlIGVudGlyZSBpbnB1dCBzdHJpbmcgYmUKICAgICAgICBzdWNjZXNzZnVsbHkgcGFyc2VkLCB0aGVuIHNldCBDe3BhcnNlQWxsfSB0byBUcnVlIChlcXVpdmFsZW50IHRvIGVuZGluZwogICAgICAgIHRoZSBncmFtbWFyIHdpdGggQ3tMe1N0cmluZ0VuZCgpfX0pLgoKICAgICAgICBOb3RlOiBDe3BhcnNlU3RyaW5nfSBpbXBsaWNpdGx5IGNhbGxzIEN7ZXhwYW5kdGFicygpfSBvbiB0aGUgaW5wdXQgc3RyaW5nLAogICAgICAgIGluIG9yZGVyIHRvIHJlcG9ydCBwcm9wZXIgY29sdW1uIG51bWJlcnMgaW4gcGFyc2UgYWN0aW9ucy4KICAgICAgICBJZiB0aGUgaW5wdXQgc3RyaW5nIGNvbnRhaW5zIHRhYnMgYW5kCiAgICAgICAgdGhlIGdyYW1tYXIgdXNlcyBwYXJzZSBhY3Rpb25zIHRoYXQgdXNlIHRoZSBDe2xvY30gYXJndW1lbnQgdG8gaW5kZXggaW50byB0aGUKICAgICAgICBzdHJpbmcgYmVpbmcgcGFyc2VkLCB5b3UgY2FuIGVuc3VyZSB5b3UgaGF2ZSBhIGNvbnNpc3RlbnQgdmlldyBvZiB0aGUgaW5wdXQKICAgICAgICBzdHJpbmcgYnk6CiAgICAgICAgIC0gY2FsbGluZyBDe3BhcnNlV2l0aFRhYnN9IG9uIHlvdXIgZ3JhbW1hciBiZWZvcmUgY2FsbGluZyBDe3BhcnNlU3RyaW5nfQogICAgICAgICAgIChzZWUgTHtJe3BhcnNlV2l0aFRhYnN9PHBhcnNlV2l0aFRhYnM+fSkKICAgICAgICAgLSBkZWZpbmUgeW91ciBwYXJzZSBhY3Rpb24gdXNpbmcgdGhlIGZ1bGwgQ3socyxsb2MsdG9rcyl9IHNpZ25hdHVyZSwgYW5kCiAgICAgICAgICAgcmVmZXJlbmNlIHRoZSBpbnB1dCBzdHJpbmcgdXNpbmcgdGhlIHBhcnNlIGFjdGlvbidzIEN7c30gYXJndW1lbnQKICAgICAgICAgLSBleHBsaWN0bHkgZXhwYW5kIHRoZSB0YWJzIGluIHlvdXIgaW5wdXQgc3RyaW5nIGJlZm9yZSBjYWxsaW5nCiAgICAgICAgICAgQ3twYXJzZVN0cmluZ30KICAgICAgICAKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgV29yZCgnYScpLnBhcnNlU3RyaW5nKCdhYWFhYWJhYWEnKSAgIyAtPiBbJ2FhYWFhJ10KICAgICAgICAgICAgV29yZCgnYScpLnBhcnNlU3RyaW5nKCdhYWFhYWJhYWEnLCBwYXJzZUFsbD1UcnVlKSAgIyAtPiBFeGNlcHRpb246IEV4cGVjdGVkIGVuZCBvZiB0ZXh0CiAgICAgICAgaQAAAABOKA0AAABSIgAAAFLEAQAAUncBAAB0CgAAAHN0cmVhbWxpbmVSdQEAAFJ0AQAAdAoAAABleHBhbmR0YWJzUo8BAABSogEAAFILAAAAUicAAABSGwAAAHQSAAAAdmVyYm9zZV9zdGFja3RyYWNlKAgAAABSnAAAAFJFAQAAdAgAAABwYXJzZUFsbFKdAQAAUpYAAABSqQEAAHQCAAAAc2VSTAEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAsAAABwYXJzZVN0cmluZyMGAABzJAAAAAAbCgEJAQ0CEAEOAQkBDwEDARgBBgESARABFwEPAQkBBgMKAmMEAAAADwAAAAUAAABjAAAAc5IBAAB8AABqAABzFgB8AABqAQCDAAABbgAAeBsAfAAAagIARF0QAH0EAHwEAGoBAIMAAAFxIABXfAAAagMAc1IAdAQAfAEAgwEAagUAgwAAfQEAbgAAdAYAfAEAgwEAfQUAZAEAfQYAfAAAagcAfQcAfAAAaggAfQgAdAkAagoAgwAAAWQBAH0JAHndAHjWAHwGAHwFAGsBAHJhAXwJAHwCAGsAAHJhAXkuAHwHAHwBAHwGAIMCAH0KAHwIAHwBAHwKAGQCAHQLAIMCAVwCAH0LAH0MAFduGwAEdAwAawoAcu8AAQEBfAoAZAMAF30GAHGMAFh8CwB8BgBrBAByVAF8CQBkAwA3fQkAfAwAfAoAfAsAZgMAVgF8AwBySwF8BwB8AQB8BgCDAgB9DQB8DQB8BgBrBAByPgF8CwB9BgBxUQF8BgBkAwA3fQYAcV4BfAsAfQYAcYwAfAoAZAMAF30GAHGMAFdXbigABHQNAGsKAHKNAQF9DgABdAkAag4AcoQBggAAcY4BfA4AggEAbgEAWGQEAFMoBQAAAHOGBAAACiAgICAgICAgU2NhbiB0aGUgaW5wdXQgc3RyaW5nIGZvciBleHByZXNzaW9uIG1hdGNoZXMuICBFYWNoIG1hdGNoIHdpbGwgcmV0dXJuIHRoZQogICAgICAgIG1hdGNoaW5nIHRva2Vucywgc3RhcnQgbG9jYXRpb24sIGFuZCBlbmQgbG9jYXRpb24uICBNYXkgYmUgY2FsbGVkIHdpdGggb3B0aW9uYWwKICAgICAgICBDe21heE1hdGNoZXN9IGFyZ3VtZW50LCB0byBjbGlwIHNjYW5uaW5nIGFmdGVyICduJyBtYXRjaGVzIGFyZSBmb3VuZC4gIElmCiAgICAgICAgQ3tvdmVybGFwfSBpcyBzcGVjaWZpZWQsIHRoZW4gb3ZlcmxhcHBpbmcgbWF0Y2hlcyB3aWxsIGJlIHJlcG9ydGVkLgoKICAgICAgICBOb3RlIHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmQgbG9jYXRpb25zIGFyZSByZXBvcnRlZCByZWxhdGl2ZSB0byB0aGUgc3RyaW5nCiAgICAgICAgYmVpbmcgcGFyc2VkLiAgU2VlIEx7SXtwYXJzZVN0cmluZ308cGFyc2VTdHJpbmc+fSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwYXJzaW5nCiAgICAgICAgc3RyaW5ncyB3aXRoIGVtYmVkZGVkIHRhYnMuCgogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBzb3VyY2UgPSAic2xkamYxMjNsc2RqamtmMzQ1c2xka2pmODc5bGtqc2ZkOTg3IgogICAgICAgICAgICBwcmludChzb3VyY2UpCiAgICAgICAgICAgIGZvciB0b2tlbnMsc3RhcnQsZW5kIGluIFdvcmQoYWxwaGFzKS5zY2FuU3RyaW5nKHNvdXJjZSk6CiAgICAgICAgICAgICAgICBwcmludCgnICcqc3RhcnQgKyAnXicqKGVuZC1zdGFydCkpCiAgICAgICAgICAgICAgICBwcmludCgnICcqc3RhcnQgKyB0b2tlbnNbMF0pCiAgICAgICAgCiAgICAgICAgcHJpbnRzOjoKICAgICAgICAKICAgICAgICAgICAgc2xkamYxMjNsc2RqamtmMzQ1c2xka2pmODc5bGtqc2ZkOTg3CiAgICAgICAgICAgIF5eXl5eCiAgICAgICAgICAgIHNsZGpmCiAgICAgICAgICAgICAgICAgICAgXl5eXl5eXgogICAgICAgICAgICAgICAgICAgIGxzZGpqa2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl5eXl5eCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsZGtqZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGtqc2ZkCiAgICAgICAgaQAAAABSiwEAAGkBAAAATigPAAAAUncBAABSyAEAAFJ1AQAAUnQBAABSfwAAAFLJAQAAUt0AAABSogEAAFKPAQAAUiIAAABSxAEAAFLGAAAAUh0AAABSGwAAAFLKAQAAKA8AAABSnAAAAFJFAQAAdAoAAABtYXhNYXRjaGVzdAcAAABvdmVybGFwUp0BAABSoQEAAFKWAAAAdAoAAABwcmVwYXJzZUZudAcAAABwYXJzZUZudAcAAABtYXRjaGVzUqcBAAB0BwAAAG5leHRMb2NSqQEAAHQHAAAAbmV4dGxvY1JMAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CgAAAHNjYW5TdHJpbmdVBgAAc0IAAAAAHgkBDQEQAQ4CCQEVAQwBBgEJAQkBCgEGAQMBGwEDAQ8BHwENAQ4CDAEKAQ4BBgEPAQwBCQINAgkCEgEPAQkBBgNjAgAAAAkAAAAFAAAAQwAAAHMlAQAAZwAAfQIAZAEAfQMAdAAAfAAAXwEAeeEAeI4AfAAAagIAfAEAgwEARF19AFwDAH0EAH0FAH0GAHwCAGoDAHwBAHwDAHwFACGDAQABfAQAcp8AdAQAfAQAdAUAgwIAcnMAfAIAfAQAagYAgwAAN30CAHGfAHQEAHwEAHQHAIMCAHKPAHwCAHwEADd9AgBxnwB8AgBqAwB8BACDAQABbgAAfAYAfQMAcSgAV3wCAGoDAHwBAHwDAB+DAQABZwAAfAIARF0SAH0HAHwHAHLBAHwHAF4CAHHBAH0CAGQCAGoIAHQJAHQKAHQLAHwCAIMBAIMCAIMBAFNXbigABHQMAGsKAHIgAQF9CAABdA0Aag4AchcBggAAcSEBfAgAggEAbgEAWGQDAFMoBAAAAHNmAwAACiAgICAgICAgRXh0ZW5zaW9uIHRvIEN7THtzY2FuU3RyaW5nfX0sIHRvIG1vZGlmeSBtYXRjaGluZyB0ZXh0IHdpdGggbW9kaWZpZWQgdG9rZW5zIHRoYXQgbWF5CiAgICAgICAgYmUgcmV0dXJuZWQgZnJvbSBhIHBhcnNlIGFjdGlvbi4gIFRvIHVzZSBDe3RyYW5zZm9ybVN0cmluZ30sIGRlZmluZSBhIGdyYW1tYXIgYW5kCiAgICAgICAgYXR0YWNoIGEgcGFyc2UgYWN0aW9uIHRvIGl0IHRoYXQgbW9kaWZpZXMgdGhlIHJldHVybmVkIHRva2VuIGxpc3QuCiAgICAgICAgSW52b2tpbmcgQ3t0cmFuc2Zvcm1TdHJpbmcoKX0gb24gYSB0YXJnZXQgc3RyaW5nIHdpbGwgdGhlbiBzY2FuIGZvciBtYXRjaGVzLAogICAgICAgIGFuZCByZXBsYWNlIHRoZSBtYXRjaGVkIHRleHQgcGF0dGVybnMgYWNjb3JkaW5nIHRvIHRoZSBsb2dpYyBpbiB0aGUgcGFyc2UKICAgICAgICBhY3Rpb24uICBDe3RyYW5zZm9ybVN0cmluZygpfSByZXR1cm5zIHRoZSByZXN1bHRpbmcgdHJhbnNmb3JtZWQgc3RyaW5nLgogICAgICAgIAogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICB3ZCA9IFdvcmQoYWxwaGFzKQogICAgICAgICAgICB3ZC5zZXRQYXJzZUFjdGlvbihsYW1iZGEgdG9rczogdG9rc1swXS50aXRsZSgpKQogICAgICAgICAgICAKICAgICAgICAgICAgcHJpbnQod2QudHJhbnNmb3JtU3RyaW5nKCJub3cgaXMgdGhlIHdpbnRlciBvZiBvdXIgZGlzY29udGVudCBtYWRlIGdsb3Jpb3VzIHN1bW1lciBieSB0aGlzIHN1biBvZiB5b3JrLiIpKQogICAgICAgIFByaW50czo6CiAgICAgICAgICAgIE5vdyBJcyBUaGUgV2ludGVyIE9mIE91ciBEaXNjb250ZW50IE1hZGUgR2xvcmlvdXMgU3VtbWVyIEJ5IFRoaXMgU3VuIE9mIFlvcmsuCiAgICAgICAgaQAAAABScgAAAE4oDwAAAFK/AAAA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TW9yZX0oZXhwcil9CgogICAgICAgIE5vdGUgdGhhdCBDe2V4cHIqKE5vbmUsbil9IGRvZXMgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZgogICAgICAgIG1vcmUgdGhhbiBuIGV4cHJzIGV4aXN0IGluIHRoZSBpbnB1dCBzdHJlYW07IHRoYXQgaXMsCiAgICAgICAgQ3tleHByKihOb25lLG4pfSBkb2VzIG5vdCBlbmZvcmNlIGEgbWF4aW11bSBudW1iZXIgb2YgZXhwcgogICAgICAgIG9jY3VycmVuY2VzLiAgSWYgdGhpcyBiZWhhdmlvciBpcyBkZXNpcmVkLCB0aGVuIHdyaXRlCiAgICAgICAgQ3tleHByKihOb25lLG4pICsgfmV4cHJ9CiAgICAgICAgaQAAAABpAgAAAGkBAAAAczcAAABjYW5ub3QgbXVsdGlwbHkgJ1BhcnNlckVsZW1lbnQnIGFuZCAoJyVzJywnJXMnKSBvYmplY3RzczAAAABjYW5ub3QgbXVsdGlwbHkgJ1BhcnNlckVsZW1lbnQnIGFuZCAnJXMnIG9iamVjdHNzLwAAAGNhbm5vdCBtdWx0aXBseSBQYXJzZXJFbGVtZW50IGJ5IG5lZ2F0aXZlIHZhbHVlc0AAAABzZWNvbmQgdHVwbGUgdmFsdWUgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIGZpcnN0IHR1cGxlIHZhbHVlcysAAABjYW5ub3QgbXVsdGlwbHkgUGFyc2VyRWxlbWVudCBieSAwIG9yICgwLDApYwEAAAABAAAABQAAABMAAABzMgAAAHwAAGQBAGsEAHIkAHQAAIgBAIgAAHwAAGQBABiDAQAXgwEAU3QAAIgBAIMBAFNkAABTKAIAAABOaQEAAAAoAQAAAFIZAAAAKAEAAAB0AQAAAG4oAgAAAHQQAAAAbWFrZU9wdGlvbmFsTGlzdFKcAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5n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AABDYW5ub3QgY29tYmluZSBlbGVtZW50IG9mIHR5cGUgJXMgd2l0aCBQYXJzZXJFbGVtZW50Ut4BAABpAgAAAE4oCQAAAFJzAAAAUtEAAABSIgAAAFJpAQAAUt8BAABS4AEAAFKvAAAAUuEBAABSlwAAACgCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAgAAABfX3JhbmRfX68HAABzDgAAAAAEDwESAQ8BEwENAQQBYwEAAAABAAAAAgAAAEMAAABzCgAAAHQAAHwAAIMBAFMoAQAAAHNFAAAACiAgICAgICAgSW1wbGVtZW50YXRpb24gb2YgfiBvcGVyYXRvciAtIHJldHVybnMgQ3tMe05vdEFueX19CiAgICAgICAgKAEAAABSFgAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQKAAAAX19pbnZlcnRfX7sHAABzAgAAAAAEYwIAAAACAAAAAgAAAEMAAABzJwAAAHwBAGQBAGsJAHIZAHwAAGoBAHwBAIMBAFN8AABqAgCDAABTZAEAUygCAAAAcw0CAAAKICAgICAgICBTaG9ydGN1dCBmb3IgQ3tMe3NldFJlc3VsdHNOYW1lfX0sIHdpdGggQ3tsaXN0QWxsTWF0Y2hlcz1GYWxzZX0uCiAgICAgICAgCiAgICAgICAgSWYgQ3tuYW1lfSBpcyBnaXZlbiB3aXRoIGEgdHJhaWxpbmcgQ3snKid9IGNoYXJhY3RlciwgdGhlbiBDe2xpc3RBbGxNYXRjaGVzfSB3aWxsIGJlCiAgICAgICAgcGFzc2VkIGFzIEN7VHJ1ZX0uCiAgICAgICAgICAgCiAgICAgICAgSWYgQ3tuYW1lfSBpcyBvbWl0dGVkLCBzYW1lIGFzIGNhbGxpbmcgQ3tMe2NvcHl9fS4KCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgICMgdGhlc2UgYXJlIGVxdWl2YWxlbnQKICAgICAgICAgICAgdXNlcmRhdGEgPSBXb3JkKGFscGhhcykuc2V0UmVzdWx0c05hbWUoIm5hbWUiKSArIFdvcmQobnVtcysiLSIpLnNldFJlc3VsdHNOYW1lKCJzb2NzZWNubyIpCiAgICAgICAgICAgIHVzZXJkYXRhID0gV29yZChhbHBoYXMpKCJuYW1lIikgKyBXb3JkKG51bXMrIi0iKSgic29jc2Vjbm8iKSAgICAgICAgICAgICAKICAgICAgICBOKAMAAABSlwAAAFKHAQAAUtIAAAAoAgAAAFKcAAAAUsIAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAX19jYWxsX1/BBwAAcwYAAAAADgwBDQJjAQAAAAEAAAACAAAAQwAAAHMKAAAAdAAAfAAAgwEAUygBAAAAc4gAAAAKICAgICAgICBTdXBwcmVzc2VzIHRoZSBvdXRwdXQgb2YgdGhpcyBDe1BhcnNlckVsZW1lbnR9OyB1c2VmdWwgdG8ga2VlcCBwdW5jdHVhdGlvbiBmcm9tCiAgICAgICAgY2x1dHRlcmluZyB1cCByZXR1cm5lZCBvdXRwdXQuCiAgICAgICAgKAEAAABSKQAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAc3VwcHJlc3PUBwAAcwIAAAAABWMBAAAAAQAAAAIAAABDAAAAcw0AAAB0AAB8AABfAQB8AABTKAEAAABzCAEAAAogICAgICAgIERpc2FibGVzIHRoZSBza2lwcGluZyBvZiB3aGl0ZXNwYWNlIGJlZm9yZSBtYXRjaGluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUKICAgICAgICBDe1BhcnNlckVsZW1lbnR9J3MgZGVmaW5lZCBwYXR0ZXJuLiAgVGhpcyBpcyBub3JtYWxseSBvbmx5IHVzZWQgaW50ZXJuYWxseSBieQogICAgICAgIHRoZSBweXBhcnNpbmcgbW9kdWxlLCBidXQgbWF5IGJlIG5lZWRlZCBpbiBzb21lIHdoaXRlc3BhY2Utc2Vuc2l0aXZlIGdyYW1tYXJzLgogICAgICAgICgCAAAAUsYAAABScAEAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQPAAAAbGVhdmVXaGl0ZXNwYWNl2wcAAHMEAAAAAAYJAWMCAAAAAgAAAAIAAABDAAAAcx8AAAB0AAB8AABfAQB8AQB8AABfAgB0AwB8AABfBAB8AABTKAEAAABzOAAAAAogICAgICAgIE92ZXJyaWRlcyB0aGUgZGVmYXVsdCB3aGl0ZXNwYWNlIGNoYXJzCiAgICAgICAgKAUAAABSvwAAAFJwAQAAUnEBAABSxgAAAFJyAQAAKAIAAABSnAAAAFJnAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0EgAAAHNldFdoaXRlc3BhY2VDaGFyc+QHAABzCAAAAAAECQEJAQkBYwEAAAABAAAAAgAAAEMAAABzDQAAAHQAAHwAAF8BAHwAAFMoAQAAAHPpAAAACiAgICAgICAgT3ZlcnJpZGVzIGRlZmF1bHQgYmVoYXZpb3IgdG8gZXhwYW5kIEN7PFRBQj59cyB0byBzcGFjZXMgYmVmb3JlIHBhcnNpbmcgdGhlIGlucHV0IHN0cmluZy4KICAgICAgICBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgQ3twYXJzZVN0cmluZ30gd2hlbiB0aGUgaW5wdXQgZ3JhbW1hciBjb250YWlucyBlbGVtZW50cyB0aGF0CiAgICAgICAgbWF0Y2ggQ3s8VEFCPn0gY2hhcmFjdGVycy4KICAgICAgICAoAgAAAFK/AAAAUnQBAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0DQAAAHBhcnNlV2l0aFRhYnPtBwAAcwQAAAAABgkBYwIAAAACAAAAAwAAAEMAAABzcgAAAHQAAHwBAHQBAIMCAHIeAHQCAHwBAIMBAH0BAG4AAHQAAHwBAHQCAIMCAHJSAHwBAHwAAGoDAGsHAHJuAHwAAGoDAGoEAHwBAIMBAAFxbgBuHAB8AABqAwBqBAB0AgB8AQBqBQCDAACDAQCDAQABfAAAUygBAAAAc9cBAAAKICAgICAgICBEZWZpbmUgZXhwcmVzc2lvbiB0byBiZSBpZ25vcmVkIChlLmcuLCBjb21tZW50cykgd2hpbGUgZG9pbmcgcGF0dGVybgogICAgICAgIG1hdGNoaW5nOyBtYXkgYmUgY2FsbGVkIHJlcGVhdGVkbHksIHRvIGRlZmluZSBtdWx0aXBsZSBjb21tZW50IG9yIG90aGVyCiAgICAgICAgaWdub3JhYmxlIHBhdHRlcm5zLgogICAgICAgIAogICAgICAgIEV4YW1wbGU6OgogICAgICAgICAgICBwYXR0ID0gT25lT3JNb3JlKFdvcmQoYWxwaGFzKSkKICAgICAgICAgICAgcGF0dC5wYXJzZVN0cmluZygnYWJsYWogLyogY29tbWVudCAqLyBsc2tqZCcpICMgLT4gWydhYmxhaiddCiAgICAgICAgICAgIAogICAgICAgICAgICBwYXR0Lmlnbm9yZShjU3R5bGVDb21tZW50KQogICAgICAgICAgICBwYXR0LnBhcnNlU3RyaW5nKCdhYmxhaiAvKiBjb21tZW50ICovIGxza2pkJykgIyAtPiBbJ2FibGFqJywgJ2xza2pkJ10KICAgICAgICAoBgAAAFJzAAAAUtEAAABSKQAAAFJ1AQAAUgQBAABS0gAAACgCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAYAAABpZ25vcmX2BwAAcw4AAAAADQ8BDwIPAQ8BFgIcAWMEAAAABAAAAAMAAABDAAAAczEAAAB8AQBwCQB0AAB8AgBwEgB0AQB8AwBwGwB0AgBmAwB8AABfAwB0BAB8AABfBQB8AABTKAEAAABzVAAAAAogICAgICAgIEVuYWJsZSBkaXNwbGF5IG9mIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSBkb2luZyBwYXR0ZXJuIG1hdGNoaW5nLgogICAgICAgICgGAAAAUkcBAABSSwEAAFJNAQAAUnsBAABSvwAAAFJ2AQAAKAQAAABSnAAAAHQLAAAAc3RhcnRBY3Rpb250DQAAAHN1Y2Nlc3NBY3Rpb250DwAAAGV4Y2VwdGlvbkFjdGlvbigAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dA8AAABzZXREZWJ1Z0FjdGlvbnMNCAAAcwoAAAAABAkBCQESAQkBYwIAAAACAAAABAAAAEMAAABzKQAAAHwBAHIcAHwAAGoAAHQBAHQCAHQDAIMDAAFuCQB0BAB8AABfBQB8AABTKAEAAABzjgYAAAogICAgICAgIEVuYWJsZSBkaXNwbGF5IG9mIGRlYnVnZ2luZyBtZXNzYWdlcyB3aGlsZSBkb2luZyBwYXR0ZXJuIG1hdGNoaW5nLgogICAgICAgIFNldCBDe2ZsYWd9IHRvIFRydWUgdG8gZW5hYmxlLCBGYWxzZSB0byBkaXNhYmxlLgoKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgd2QgPSBXb3JkKGFscGhhcykuc2V0TmFtZSgiYWxwaGF3b3JkIikKICAgICAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykuc2V0TmFtZSgibnVtd29yZCIpCiAgICAgICAgICAgIHRlcm0gPSB3ZCB8IGludGVnZXIKICAgICAgICAgICAgCiAgICAgICAgICAgICMgdHVybiBvbiBkZWJ1Z2dpbmcgZm9yIHdkCiAgICAgICAgICAgIHdkLnNldERlYnVnKCkKCiAgICAgICAgICAgIE9uZU9yTW9yZSh0ZXJtKS5wYXJzZVN0cmluZygiYWJjIDEyMyB4eXogODkwIikKICAgICAgICAKICAgICAgICBwcmludHM6OgogICAgICAgICAgICBNYXRjaCBhbHBoYXdvcmQgYXQgbG9jIDAoMSwxKQogICAgICAgICAgICBNYXRjaGVkIGFscGhhd29yZCAtPiBbJ2FiYyddCiAgICAgICAgICAgIE1hdGNoIGFscGhhd29yZCBhdCBsb2MgMygxLDQpCiAgICAgICAgICAgIEV4Y2VwdGlvbiByYWlzZWQ6RXhwZWN0ZWQgYWxwaGF3b3JkIChhdCBjaGFyIDQpLCAobGluZToxLCBjb2w6NSkKICAgICAgICAgICAgTWF0Y2ggYWxwaGF3b3JkIGF0IGxvYyA3KDEsOCkKICAgICAgICAgICAgTWF0Y2hlZCBhbHBoYXdvcmQgLT4gWyd4eXonXQogICAgICAgICAgICBNYXRjaCBhbHBoYXdvcmQgYXQgbG9jIDExKDEsMTIpCiAgICAgICAgICAgIEV4Y2VwdGlvbiByYWlzZWQ6RXhwZWN0ZWQgYWxwaGF3b3JkIChhdCBjaGFyIDEyKSwgKGxpbmU6MSwgY29sOjEzKQogICAgICAgICAgICBNYXRjaCBhbHBoYXdvcmQgYXQgbG9jIDE1KDEsMTYpCiAgICAgICAgICAgIEV4Y2VwdGlvbiByYWlzZWQ6RXhwZWN0ZWQgYWxwaGF3b3JkIChhdCBjaGFyIDE1KSwgKGxpbmU6MSwgY29sOjE2KQoKICAgICAgICBUaGUgb3V0cHV0IHNob3duIGlzIHRoYXQgcHJvZHVjZWQgYnkgdGhlIGRlZmF1bHQgZGVidWcgYWN0aW9ucyAtIGN1c3RvbSBkZWJ1ZyBhY3Rpb25zIGNhbiBiZQogICAgICAgIHNwZWNpZmllZCB1c2luZyBMe3NldERlYnVnQWN0aW9uc30uIFByaW9yIHRvIGF0dGVtcHRpbmcKICAgICAgICB0byBtYXRjaCB0aGUgQ3t3ZH0gZXhwcmVzc2lvbiwgdGhlIGRlYnVnZ2luZyBtZXNzYWdlIEN7Ik1hdGNoIDxleHBybmFtZT4gYXQgbG9jIDxuPig8bGluZT4sPGNvbD4pIn0KICAgICAgICBpcyBzaG93bi4gVGhlbiBpZiB0aGUgcGFyc2Ugc3VjY2VlZHMsIGEgQ3siTWF0Y2hlZCJ9IG1lc3NhZ2UgaXMgc2hvd24sIG9yIGFuIEN7IkV4Y2VwdGlvbiByYWlzZWQifQogICAgICAgIG1lc3NhZ2UgaXMgc2hvd24uIEFsc28gbm90ZSB0aGUgdXNlIG9mIEx7c2V0TmFtZX0gdG8gYXNzaWduIGEgaHVtYW4tcmVhZGFibGUgbmFtZSB0byB0aGUgZXhwcmVzc2lvbiwKICAgICAgICB3aGljaCBtYWtlcyBkZWJ1Z2dpbmcgYW5kIGV4Y2VwdGlvbiBtZXNzYWdlcyBlYXNpZXIgdG8gdW5kZXJzdGFuZCAtIGZvciBpbnN0YW5jZSwgdGhlIGRlZmF1bHQKICAgICAgICBuYW1lIGNyZWF0ZWQgZm9yIHRoZSBDe1dvcmR9IGV4cHJlc3Npb24gd2l0aG91dCBjYWxsaW5nIEN7c2V0TmFtZX0gaXMgQ3siVzooQUJDRC4uLikifS4KICAgICAgICAoBgAAAFL9AQAAUkcBAABSSwEAAFJNAQAAUsYAAABSdgEAACgCAAAAUpwAAAB0BAAAAGZsYWcoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAc2V0RGVidWcXCAAAcwgAAAAAIwYBFgIJAWMBAAAAAQAAAAEAAABDAAAAcwcAAAB8AABqAABTKAEAAABOKAEAAABSwgAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKmAAAAQAgAAHMCAAAAAAFjAQAAAAEAAAACAAAAQwAAAHMKAAAAdAAAfAAAgwEAUygBAAAATigBAAAAUn8AAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSpwAAAEMIAABzAgAAAAABYwEAAAABAAAAAgAAAEMAAABzFgAAAHQAAHwAAF8BAGQAAHwAAF8DAHwAAFMoAQAAAE4oBAAAAFK/AAAAUncBAABSlwAAAFJtAQAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UsgBAABGCAAAcwYAAAAAAQkBCQFjAgAAAAIAAAABAAAAQwAAAHMEAAAAZAAAUygBAAAATigAAAAAKAIAAABSnAAAAFK0AAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0DgAAAGNoZWNrUmVjdXJzaW9uSwgAAHMCAAAAAAFjAgAAAAIAAAACAAAAQwAAAHMRAAAAfAAAagAAZwAAgwEAAWQBAFMoAgAAAHNqAAAACiAgICAgICAgQ2hlY2sgZGVmaW5lZCBleHByZXNzaW9ucyBmb3IgdmFsaWQgc3RydWN0dXJlLCBjaGVjayBmb3IgaW5maW5pdGUgcmVjdXJzaXZlIGRlZmluaXRpb25zLgogICAgICAgIE4oAQAAAFIAAgAAKAIAAABSnAAAAHQNAAAAdmFsaWRhdGVUcmFjZSgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAgAAAB2YWxpZGF0ZU4IAABzAgAAAAAEYwMAAAAGAAAABgAAAEMAAABziwAAAHkQAHwBAGoAAIMAAH0DAFduNQAEdAEAawoAckcAAQEBdAIAfAEAZAEAgwIAjxMAfQQAfAQAagAAgwAAfQMAV2QCAFFYbgEAWHkUAHwAAGoDAHwDAHwCAIMCAFNXbigABHQEAGsKAHKGAAF9BQABdAUAagYAcn0AggAAcYcAfAUAggEAbgEAWGQCAFMoAwAAAHPQAAAACiAgICAgICAgRXhlY3V0ZSB0aGUgcGFyc2UgZXhwcmVzc2lvbiBvbiB0aGUgZ2l2ZW4gZmlsZSBvciBmaWxlbmFtZS4KICAgICAgICBJZiBhIGZpbGVuYW1lIGlzIHNwZWNpZmllZCAoaW5zdGVhZCBvZiBhIGZpbGUgb2JqZWN0KSwKICAgICAgICB0aGUgZW50aXJlIGZpbGUgaXMgb3BlbmVkLCByZWFkLCBhbmQgY2xvc2VkIGJlZm9yZSBwYXJzaW5nLgogICAgICAgIHQBAAAAck4oBwAAAHQEAAAAcmVhZFKjAAAAdAQAAABvcGVuUs0BAABSGwAAAFIiAAAAUsoBAAAoBgAAAFKcAAAAdBAAAABmaWxlX29yX2ZpbGVuYW1lUssBAAB0DQAAAGZpbGVfY29udGVudHN0AQAAAGZSTAEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAkAAABwYXJzZUZpbGVUCAAAcxYAAAAABgMBEAENARIBFgEDARQBDwEJAQYDYwIAAAACAAAAAwAAAEMAAABzZAAAAHQAAHwBAHQBAIMCAHIxAHwAAHwBAGsIAHAwAHQCAHwAAIMBAHQCAHwBAIMBAGsCAFN0AAB8AQB0AwCDAgByTQB8AABqBAB8AQCDAQBTdAUAdAEAfAAAgwIAfAEAawIAU2QAAFMoAQAAAE4oBgAAAFJzAAAAUiIAAAB0BAAAAHZhcnNS0QAAAFLSAQAAdAUAAABzdXBlcigCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAYAAABfX2VxX19oCAAAcwoAAAAAAQ8BIgEPAQ0CYwIAAAACAAAAAgAAAEMAAABzCwAAAHwAAHwBAGsCAAxTKAEAAABOKAAAAAAoAgAAAFKcAAAAUgkBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQGAAAAX19uZV9fcAgAAHMCAAAAAAFjAQAAAAEAAAADAAAAQwAAAHMQAAAAdAAAdAEAfAAAgwEAgwEAUygBAAAATigCAAAAdAQAAABoYXNodAIAAABpZCgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQIAAAAX19oYXNoX19zCAAAcwIAAAAAAWMCAAAAAgAAAAIAAABDAAAAcwoAAAB8AAB8AQBrAgBTKAEAAABOKAAAAAAoAgAAAFKcAAAAUgkBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQHAAAAX19yZXFfX3YIAABzAgAAAAABYwIAAAACAAAAAgAAAEMAAABzCwAAAHwAAHwBAGsCAAxTKAEAAABOKAAAAAAoAgAAAFKcAAAAUgkBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQHAAAAX19ybmVfX3kIAABzAgAAAAABYwMAAAADAAAABQAAAEMAAABzOgAAAHkhAHwAAGoAAHQBAHwBAIMBAGQBAHwCAIMBAQF0AgBTV24SAAR0AwBrCgByNQABAQF0BABTWGQCAFMoAwAAAHPTAQAACiAgICAgICAgTWV0aG9kIGZvciBxdWljayB0ZXN0aW5nIG9mIGEgcGFyc2VyIGFnYWluc3QgYSB0ZXN0IHN0cmluZy4gR29vZCBmb3Igc2ltcGxlIAogICAgICAgIGlubGluZSBtaWNyb3Rlc3RzIG9mIHN1YiBleHByZXNzaW9ucyB3aGlsZSBidWlsZGluZyB1cCBsYXJnZXIgcGFyc2VyLgogICAgICAgICAgIAogICAgICAgIFBhcmFtZXRlcnM6CiAgICAgICAgIC0gdGVzdFN0cmluZyAtIHRvIHRlc3QgYWdhaW5zdCB0aGlzIGV4cHJlc3Npb24gZm9yIGEgbWF0Y2gKICAgICAgICAgLSBwYXJzZUFsbCAtIChkZWZhdWx0PUN7VHJ1ZX0pIC0gZmxhZyB0byBwYXNzIHRvIEN7THtwYXJzZVN0cmluZ319IHdoZW4gcnVubmluZyB0ZXN0cwogICAgICAgICAgICAKICAgICAgICBFeGFtcGxlOjoKICAgICAgICAgICAgZXhwciA9IFdvcmQobnVtcykKICAgICAgICAgICAgYXNzZXJ0IGV4cHIubWF0Y2hlcygiMTAwIikKICAgICAgICBSywEAAE4oBQAAAFLNAQAAUn8AAABSvwAAAFIbAAAAUsYAAAAoAwAAAFKcAAAAdAoAAAB0ZXN0U3RyaW5nUssBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVLSAQAAfAgAAHMKAAAAAA0DARkBCAENAXQBAAAAI2MHAAAAEAAAAAYAAABDAAAAc3kCAAB0AAB8AQB0AQCDAgByNgB0AgB0AwB0BABqBQB8AQBqBgCDAABqBwCDAACDAgCDAQB9AQBuAAB0AAB8AwB0AQCDAgByVAB0CAB8AwCDAQB9AwBuAABnAAB9BwBnAAB9CAB0CQB9CQB4BgJ8AQBEXf4BfQoAfAMAZAwAawkAcpEAfAMAagsAfAoAdAwAgwIAc54AfAgAcrEAfAoADHKxAHwIAGoNAHwKAIMBAAFxbQBuAAB8CgBzvQBxbQBuAABkAQBqDgB8CACDAQB8CgBnAgB9CwBnAAB9CAB5UQB8CgBqDwBkAgBkAQCDAgB9CgB8AABqEAB8CgBkAwB8AgCDAQF9DAB8CwBqDQB8DABqEQBkBAB8BACDAAGDAQABfAkAbyUBfAYADH0JAFdu/wAEdBIAawoAcu8BAX0NAAF0AAB8DQB0EwCDAgByUAFkBQBuAwBkBgB9DgBkAQB8CgBrBgBypwF8CwBqDQB0FAB8DQBqFQB8CgCDAgCDAQABfAsAag0AZAcAdBYAfA0AahUAfAoAgwIAZAgAGBRkCQAXfA4AF4MBAAFuHAB8CwBqDQBkBwB8DQBqFQAUZAkAF3wOABeDAQABfAsAag0AZAoAdAQAfA0AgwEAF4MBAAF8CQBv4wF8BgB9CQB8DQB9DABuPAAEdBcAawoAcioCAX0PAAF8CwBqDQBkCwB0BAB8DwCDAQAXgwEAAXwJAG8eAnwGAH0JAHwPAH0MAG4BAFh8BQByWAJ8BAByRwJ8CwBqDQBkBgCDAQABbgAAZAEAag4AfAsAgwEAR0huAAB8BwBqDQB8CgB8DABmAgCDAQABcW0AV3wJAHwHAGYCAFMoDQAAAHMzDAAACiAgICAgICAgRXhlY3V0ZSB0aGUgcGFyc2UgZXhwcmVzc2lvbiBvbiBhIHNlcmllcyBvZiB0ZXN0IHN0cmluZ3MsIHNob3dpbmcgZWFjaAogICAgICAgIHRlc3QsIHRoZSBwYXJzZWQgcmVzdWx0cyBvciB3aGVyZSB0aGUgcGFyc2UgZmFpbGVkLiBRdWljayBhbmQgZWFzeSB3YXkgdG8KICAgICAgICBydW4gYSBwYXJzZSBleHByZXNzaW9uIGFnYWluc3QgYSBsaXN0IG9mIHNhbXBsZSBzdHJpbmdzLgogICAgICAgICAgIAogICAgICAgIFBhcmFtZXRlcnM6CiAgICAgICAgIC0gdGVzdHMgLSBhIGxpc3Qgb2Ygc2VwYXJhdGUgdGVzdCBzdHJpbmdzLCBvciBhIG11bHRpbGluZSBzdHJpbmcgb2YgdGVzdCBzdHJpbmdzCiAgICAgICAgIC0gcGFyc2VBbGwgLSAoZGVmYXVsdD1De1RydWV9KSAtIGZsYWcgdG8gcGFzcyB0byBDe0x7cGFyc2VTdHJpbmd9fSB3aGVuIHJ1bm5pbmcgdGVzdHMgICAgICAgICAgIAogICAgICAgICAtIGNvbW1lbnQgLSAoZGVmYXVsdD1DeycjJ30pIC0gZXhwcmVzc2lvbiBmb3IgaW5kaWNhdGluZyBlbWJlZGRlZCBjb21tZW50cyBpbiB0aGUgdGVzdCAKICAgICAgICAgICAgICBzdHJpbmc7IHBhc3MgTm9uZSB0byBkaXNhYmxlIGNvbW1lbnQgZmlsdGVyaW5nCiAgICAgICAgIC0gZnVsbER1bXAgLSAoZGVmYXVsdD1De1RydWV9KSAtIGR1bXAgcmVzdWx0cyBhcyBsaXN0IGZvbGxvd2VkIGJ5IHJlc3VsdHMgbmFtZXMgaW4gbmVzdGVkIG91dGxpbmU7CiAgICAgICAgICAgICAgaWYgRmFsc2UsIG9ubHkgZHVtcCBuZXN0ZWQgbGlzdAogICAgICAgICAtIHByaW50UmVzdWx0cyAtIChkZWZhdWx0PUN7VHJ1ZX0pIHByaW50cyB0ZXN0IG91dHB1dCB0byBzdGRvdXQKICAgICAgICAgLSBmYWlsdXJlVGVzdHMgLSAoZGVmYXVsdD1De0ZhbHNlfSkgaW5kaWNhdGVzIGlmIHRoZXNlIHRlc3RzIGFyZSBleHBlY3RlZCB0byBmYWlsIHBhcnNpbmcKCiAgICAgICAgUmV0dXJuczogYSAoc3VjY2VzcywgcmVzdWx0cykgdHVwbGUsIHdoZXJlIHN1Y2Nlc3MgaW5kaWNhdGVzIHRoYXQgYWxsIHRlc3RzIHN1Y2NlZWRlZAogICAgICAgIChvciBmYWlsZWQgaWYgQ3tmYWlsdXJlVGVzdHN9IGlzIFRydWUpLCBhbmQgdGhlIHJlc3VsdHMgY29udGFpbiBhIGxpc3Qgb2YgbGluZXMgb2YgZWFjaCAKICAgICAgICB0ZXN0J3Mgb3V0cHV0CiAgICAgICAgCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIG51bWJlcl9leHByID0gcHlwYXJzaW5nX2NvbW1vbi5udW1iZXIuY29weSgpCgogICAgICAgICAgICByZXN1bHQgPSBudW1iZXJfZXhwci5ydW5UZXN0cygnJycKICAgICAgICAgICAgICAgICMgdW5zaWduZWQgaW50ZWdlcgogICAgICAgICAgICAgICAgMTAwCiAgICAgICAgICAgICAgICAjIG5lZ2F0aXZlIGludGVnZXIKICAgICAgICAgICAgICAgIC0xMDAKICAgICAgICAgICAgICAgICMgZmxvYXQgd2l0aCBzY2llbnRpZmljIG5vdGF0aW9uCiAgICAgICAgICAgICAgICA2LjAyZTIzCiAgICAgICAgICAgICAgICAjIGludGVnZXIgd2l0aCBzY2llbnRpZmljIG5vdGF0aW9uCiAgICAgICAgICAgICAgICAxZS0xMgogICAgICAgICAgICAgICAgJycnKQogICAgICAgICAgICBwcmludCgiU3VjY2VzcyIgaWYgcmVzdWx0WzBdIGVsc2UgIkZhaWxlZCEiKQoKICAgICAgICAgICAgcmVzdWx0ID0gbnVtYmVyX2V4cHIucnVuVGVzdHMoJycnCiAgICAgICAgICAgICAgICAjIHN0cmF5IGNoYXJhY3RlcgogICAgICAgICAgICAgICAgMTAwWgogICAgICAgICAgICAgICAgIyBtaXNzaW5nIGxlYWRpbmcgZGlnaXQgYmVmb3JlICcuJwogICAgICAgICAgICAgICAgLS4xMDAKICAgICAgICAgICAgICAgICMgdG9vIG1hbnkgJy4nCiAgICAgICAgICAgICAgICAzLjE0LjE1OQogICAgICAgICAgICAgICAgJycnLCBmYWlsdXJlVGVzdHM9VHJ1ZSkKICAgICAgICAgICAgcHJpbnQoIlN1Y2Nlc3MiIGlmIHJlc3VsdFswXSBlbHNlICJGYWlsZWQhIikKICAgICAgICBwcmludHM6OgogICAgICAgICAgICAjIHVuc2lnbmVkIGludGVnZXIKICAgICAgICAgICAgMTAwCiAgICAgICAgICAgIFsxMDBdCgogICAgICAgICAgICAjIG5lZ2F0aXZlIGludGVnZXIKICAgICAgICAgICAgLTEwMAogICAgICAgICAgICBbLTEwMF0KCiAgICAgICAgICAgICMgZmxvYXQgd2l0aCBzY2llbnRpZmljIG5vdGF0aW9uCiAgICAgICAgICAgIDYuMDJlMjMKICAgICAgICAgICAgWzYuMDJlKzIzXQoKICAgICAgICAgICAgIyBpbnRlZ2VyIHdpdGggc2NpZW50aWZpYyBub3RhdGlvbgogICAgICAgICAgICAxZS0xMgogICAgICAgICAgICBbMWUtMTJdCgogICAgICAgICAgICBTdWNjZXNzCiAgICAgICAgICAgIAogICAgICAgICAgICAjIHN0cmF5IGNoYXJhY3RlcgogICAgICAgICAgICAxMDBaCiAgICAgICAgICAgICAgIF4KICAgICAgICAgICAgRkFJTDogRXhwZWN0ZWQgZW5kIG9mIHRleHQgKGF0IGNoYXIgMyksIChsaW5lOjEsIGNvbDo0KQoKICAgICAgICAgICAgIyBtaXNzaW5nIGxlYWRpbmcgZGlnaXQgYmVmb3JlICcuJwogICAgICAgICAgICAtLjEwMAogICAgICAgICAgICBeCiAgICAgICAgICAgIEZBSUw6IEV4cGVjdGVkIHtyZWFsIG51bWJlciB3aXRoIHNjaWVudGlmaWMgbm90YXRpb24gfCByZWFsIG51bWJlciB8IHNpZ25lZCBpbnRlZ2VyfSAoYXQgY2hhciAwKSwgKGxpbmU6MSwgY29sOjEpCgogICAgICAgICAgICAjIHRvbyBtYW55ICcuJwogICAgICAgICAgICAzLjE0LjE1OQogICAgICAgICAgICAgICAgXgogICAgICAgICAgICBGQUlMOiBFeHBlY3RlZCBlbmQgb2YgdGV4dCAoYXQgY2hhciA0KSwgKGxpbmU6MSwgY29sOjUpCgogICAgICAgICAgICBTdWNjZXNzCgogICAgICAgIEVhY2ggdGVzdCBzdHJpbmcgbXVzdCBiZSBvbiBhIHNpbmdsZSBsaW5lLiBJZiB5b3Ugd2FudCB0byB0ZXN0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IGMBAAAAAQAAAAMAAABDAAAAcx0AAAB0AAB0AQB8AACDAgBqAgBkAQB0AwCDAAEBZAAAUygCAAAATlJ/AQAAKAQAAABSCwIAAFIqAAAAUp4AAABSxgAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAAFwkAAHMCAAAAAAEoBAAAAFKPAAAAUpAAAABSsQAAAFKeAAAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIqAAAAEwkAAHMEAAAABgMGAWMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAcywAAAAKICAgIEFuIGVtcHR5IHRva2VuLCB3aWxsIGFsd2F5cyBtYXRjaC4KICAgIGMBAAAAAQAAAAMAAABDAAAAczIAAAB0AAB0AQB8AACDAgBqAgCDAAABZAEAfAAAXwMAdAQAfAAAXwUAdAYAfAAAXwcAZAAAUygCAAAATlILAAAAKAgAAABSCwIAAFILAAAAUp4AAABSwgAAAFK/AAAAUnMBAABSxgAAAFJ4AQAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAAAfCQAAcwgAAAAAARMBCQEJASgEAAAAUo8AAABSkAAAAFKxAAAAUp4AAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgsAAAAbCQAAcwQAAAAGAwYBYwAAAAAAAAAAAgAAAEIAAABzIwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAGUEAGQCAIQBAFoFAFJTKAMAAABzKAAAAAogICAgQSB0b2tlbiB0aGF0IHdpbGwgbmV2ZXIgbWF0Y2guCiAgICBjAQAAAAEAAAADAAAAQwAAAHM7AAAAdAAAdAEAfAAAgwIAagIAgwAAAWQBAHwAAF8DAHQEAHwAAF8FAHQGAHwAAF8HAGQCAHwAAF8IAGQAAFMoAwAAAE5SFQAAAHMRAAAAVW5tYXRjaGFibGUgdG9rZW4oCQAAAFILAgAAUhUAAABSngAAAFLCAAAAUr8AAABScwEAAFLGAAAAUngBAABSeQEAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAAKgkAAHMKAAAAAAETAQkBCQEJAWMEAAAABAAAAAUAAABDAAAAcxwAAAB0AAB8AQB8AgB8AABqAQB8AACDBACCAQBkAABTKAEAAABOKAIAAABSHQAAAFJ5AQAAKAQAAABSnAAAAFJFAQAAUpYAAABSigEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UqMBAAAxCQAAcwIAAAAAASgGAAAAUo8AAABSkAAAAFKxAAAAUp4AAABSvwAAAFKjAQAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIVAAAAJgkAAHMGAAAABgMGAQkHYwAAAAAAAAAAAgAAAEIAAABzIwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAGUEAGQCAIQBAFoFAFJTKAMAAABz0AEAAAogICAgVG9rZW4gdG8gZXhhY3RseSBtYXRjaCBhIHNwZWNpZmllZCBzdHJpbmcuCiAgICAKICAgIEV4YW1wbGU6OgogICAgICAgIExpdGVyYWwoJ2JsYWgnKS5wYXJzZVN0cmluZygnYmxhaCcpICAjIC0+IFsnYmxhaCddCiAgICAgICAgTGl0ZXJhbCgnYmxhaCcpLnBhcnNlU3RyaW5nKCdibGFoZm9vYmxhaCcpICAjIC0+IFsnYmxhaCddCiAgICAgICAgTGl0ZXJhbCgnYmxhaCcpLnBhcnNlU3RyaW5nKCdibGEnKSAgIyAtPiBFeGNlcHRpb246IEV4cGVjdGVkICJibGFoIgogICAgCiAgICBGb3IgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZywgdXNlIEx7Q2FzZWxlc3NMaXRlcmFsfS4KICAgIAogICAgRm9yIGtleXdvcmQgbWF0Y2hpbmcgKGZvcmNlIHdvcmQgYnJlYWsgYmVmb3JlIGFuZCBhZnRlciB0aGUgbWF0Y2hlZCBzdHJpbmcpLAogICAgdXNlIEx7S2V5d29yZH0gb3IgTHtDYXNlbGVzc0tleXdvcmR9LgogICAgYwIAAAACAAAABQAAAEMAAABzqwAAAHQAAHQBAHwAAIMCAGoCAIMAAAF8AQB8AABfAwB0BAB8AQCDAQB8AABfBQB5EQB8AQBkAQAZfAAAXwYAV24wAAR0BwBrCgBybgABAQF0CABqCQBkAgB0CgBkAwBkBACDAgEBdAsAfAAAXwwAbgEAWGQFAHQNAHwAAGoDAIMBABZ8AABfDgBkBgB8AABqDgAXfAAAXw8AdBAAfAAAXxEAdBAAfAAAXxIAZAAAUygHAAAATmkAAAAAczIAAABudWxsIHN0cmluZyBwYXNzZWQgdG8gTGl0ZXJhbDsgdXNlIEVtcHR5KCkgaW5zdGVhZFLeAQAAaQIAAABzBAAAACIlcyJzCQAAAEV4cGVjdGVkICgTAAAAUgsCAABSEwAAAFKeAAAAdAUAAABtYXRjaFLdAAAAdAgAAABtYXRjaExlbnQOAAAAZmlyc3RNYXRjaENoYXJS1QAAAFLfAQAAUuABAABS4QEAAFILAAAAUl4BAABSfwAAAFLCAAAAUnkBAABSxgAAAFJzAQAAUngBAAAoAgAAAFKcAAAAdAsAAABtYXRjaFN0cmluZygAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAABDCQAAcxoAAAAAARMBCQEPAQMBEQENAQkBDQENARYBEAEJAWMEAAAABAAAAAUAAABDAAAAc2cAAAB8AQB8AgAZfAAAagAAawIAcksAfAAAagEAZAEAawIAczcAfAEAagIAfAAAagMAfAIAgwIAcksAfAIAfAAAagEAF3wAAGoDAGYCAFN0BAB8AQB8AgB8AABqBQB8AACDBACCAQBkAABTKAIAAABOaQEAAAAoBgAAAFInAgAAUiYCAAB0CgAAAHN0YXJ0c3dpdGhSJQIAAFIdAAAAUnkBAAAoBAAAAFKcAAAAUkUBAABSlgAAAFKKAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSowEAAFYJAABzCAAAAAABEwEkARQBKAYAAABSjwAAAFKQAAAAUrEAAABSngAAAFK/AAAAUqMBAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UhMAAAA1CQAAcwYAAAAGDQYBCRNjAAAAAAAAAAADAAAAQgAAAHNLAAAAZQAAWgEAZAAAWgIAZQMAZAEAF1oEAGQGAGUGAGQCAIQCAFoHAGUIAGQDAIQBAFoJAGQEAIQAAFoKAGULAGQFAIQAAIMBAFoMAFJTKAcAAABzXAMAAAogICAgVG9rZW4gdG8gZXhhY3RseSBtYXRjaCBhIHNwZWNpZmllZCBzdHJpbmcgYXMgYSBrZXl3b3JkLCB0aGF0IGlzLCBpdCBtdXN0IGJlCiAgICBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIG5vbi1rZXl3b3JkIGNoYXJhY3Rlci4gIENvbXBhcmUgd2l0aCBDe0x7TGl0ZXJhbH19OgogICAgIC0gQ3tMaXRlcmFsKCJpZiIpfSB3aWxsIG1hdGNoIHRoZSBsZWFkaW5nIEN7J2lmJ30gaW4gQ3snaWZBbmRPbmx5SWYnfS4KICAgICAtIEN7S2V5d29yZCgiaWYiKX0gd2lsbCBub3Q7IGl0IHdpbGwgb25seSBtYXRjaCB0aGUgbGVhZGluZyBDeydpZid9IGluIEN7J2lmIHg9MSd9LCBvciBDeydpZih5PT0yKSd9CiAgICBBY2NlcHRzIHR3byBvcHRpb25hbCBjb25zdHJ1Y3RvciBhcmd1bWVudHMgaW4gYWRkaXRpb24gdG8gdGhlIGtleXdvcmQgc3RyaW5nOgogICAgIC0gQ3tpZGVudENoYXJzfSBpcyBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIHRoYXQgd291bGQgYmUgdmFsaWQgaWRlbnRpZmll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CQEjATkBKQEXAhMBJAEzASMBFAFjAQAAAAIAAAADAAAAQwAAAHMlAAAAdAAAdAEAfAAAgwIAagIAgwAAfQEAdAEAagMAfAEAXwQAfAEAUygBAAAATigFAAAAUgsCAABSEAAAAFLSAAAAUioCAABSLgIAACgCAAAAUpwAAABSlQAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UtIAAACUCQAAcwYAAAAAARUBDAFjAQAAAAEAAAACAAAAQwAAAHMNAAAAfAAAdAAAXwEAZAEAUygCAAAAcywAAABPdmVycmlkZXMgdGhlIGRlZmF1bHQgS2V5d29yZCBjaGFycwogICAgICAgIE4oAgAAAFIQAAAAUioCAAAoAQAAAFJnAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0FgAAAHNldERlZmF1bHRLZXl3b3JkQ2hhcnOZCQAAcwIAAAAABE4oDQAAAFKPAAAAUpAAAABSsQAAAFIxAAAAUioCAABSlwAAAFLGAAAAUp4AAABSvwAAAFKjAQAAUtIAAABSIwIAAFIvAgAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIQAAAAXgkAAHMMAAAABhAGAQoCDxUMDgkFYwAA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e0xpdGVyYWx9IHdoaWNoIG1hdGNoZXMgImNsb3NlIiBtYXRjaGVzLCB0aGF0IGlzLCAKICAgIHN0cmluZ3Mgd2l0aCBhdCBtb3N0ICduJyBtaXNtYXRjaGluZyBjaGFyYWN0ZXJzLiBDe0Nsb3NlTWF0Y2h9IHRha2VzIHBhcmFtZXRlcnM6CiAgICAgLSBDe21hdGNoX3N0cmluZ30gLSBzdHJpbmcgdG8gYmUgbWF0Y2hlZAogICAgIC0gQ3ttYXhNaXNtYXRjaGVzfSAtIChDe2RlZmF1bHQ9MX0pIG1heGltdW0gbnVtYmVyIG9mIG1pc21hdGNoZXMgYWxsb3dlZCB0byBjb3VudCBhcyBhIG1hdGNoCiAgICAKICAgIFRoZSByZXN1bHRzIGZyb20gYSBzdWNjZXNzZnVsIHBhcnNlIHdpbGwgY29udGFpbiB0aGUgbWF0Y2hlZCB0ZXh0IGZyb20gdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlIGZvbGxvd2luZyBuYW1lZCByZXN1bHRzOgogICAgIC0gQ3ttaXNtYXRjaGVzfSAtIGEgbGlzdCBvZiB0aGUgcG9zaXRpb25zIHdpdGhpbiB0aGUgbWF0Y2hfc3RyaW5nIHdoZXJlIG1pc21hdGNoZXMgd2VyZSBmb3VuZAogICAgIC0gQ3tvcmlnaW5hbH0gLSB0aGUgb3JpZ2luYWwgbWF0Y2hfc3RyaW5nIHVzZWQgdG8gY29tcGFyZSBhZ2FpbnN0IHRoZSBpbnB1dCBzdHJpbmcKICAgIAogICAgSWYgQ3ttaXNtYXRjaGVzfSBpcyBhbiBlbXB0eSBsaXN0LCB0aGVuIHRoZSBtYXRjaCB3YXMgYW4gZXhhY3QgbWF0Y2guCiAgICAKICAgIEV4YW1wbGU6OgogICAgICAgIHBhdHQgPSBDbG9zZU1hdGNoKCJBVENBVENHQUFUR0dBIikKICAgICAgICBwYXR0LnBhcnNlU3RyaW5nKCJBVENBVENHQUFYR0dBIikgIyAtPiAoWydBVENBVENHQUFYR0dBJ10sIHsnbWlzbWF0Y2hlcyc6IFtbOV1dLCAnb3JpZ2luYWwnOiBbJ0FUQ0FUQ0dBQVRHR0EnXX0pCiAgICAgICAgcGF0dC5wYXJzZVN0cmluZygiQVRDQVhDR0FBWEdHQSIpICMgLT4gRXhjZXB0aW9uOiBFeHBlY3RlZCAnQVRDQVRDR0FBVEdHQScgKHdpdGggdXAgdG8gMSBtaXNtYXRjaGVzKSAoYXQgY2hhciAwKSwgKGxpbmU6MSwgY29sOjEpCgogICAgICAgICMgZXhhY3QgbWF0Y2gKICAgICAgICBwYXR0LnBhcnNlU3RyaW5nKCJBVENBVENHQUFUR0dBIikgIyAtPiAoWydBVENBVENHQUFUR0dBJ10sIHsnbWlzbWF0Y2hlcyc6IFtbXV0sICdvcmlnaW5hbCc6IFsnQVRDQVRDR0FBVEdHQSddfSkKCiAgICAgICAgIyBjbG9zZSBtYXRjaCBhbGxvd2luZyB1cCB0byAyIG1pc21hdGNoZXMKICAgICAgICBwYXR0ID0gQ2xvc2VNYXRjaCgiQVRDQVRDR0FBVEdHQSIsIG1heE1pc21hdGNoZXM9MikKICAgICAgICBwYXR0LnBhcnNlU3RyaW5nKCJBVENBWENHQUFYR0dBIikgIyAtPiAoWydBVENBWENHQUFYR0dBJ10sIHsnbWlzbWF0Y2hlcyc6IFtbNCwgOV1dLCAnb3JpZ2luYWwnOiBbJ0FUQ0FUQ0dBQVRHR0EnXX0pCiAgICBpAQAAAGMDAAAAAwAAAAMAAABDAAAAc10AAAB0AAB0AQB8AACDAgBqAgCDAAABfAEAfAAAXwMAfAEAfAAAXwQAfAIAfAAAXwUAZAEAfAAAagQAfAAAagUAZgIAFnwAAF8GAHQHAHwAAF8IAHQHAHwAAF8JAGQAAFMoAgAAAE5zJgAAAEV4cGVjdGVkICVyICh3aXRoIHVwIHRvICVkIG1pc21hdGNoZXMpKAoAAABSCwIAAFJqAAAAUp4AAABSwgAAAHQMAAAAbWF0Y2hfc3RyaW5ndA0AAABtYXhNaXNtYXRjaGVzUnkBAABSxgAAAFJ4AQAAUnMBAAAoAwAAAFKcAAAAUjECAABSMgIAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAADhCQAAcw4AAAAAARMBCQEJAQkBGQEJAWMEAAAADwAAAAUAAABDAAAAcx0BAAB8AgB9BAB0AAB8AQCDAQB9BQB8BAB0AAB8AABqAQCDAQAXfQYAfAYAfAUAawEAcgEBfAAAagEAfQcAZAEAfQgAZwAAfQkAfAAAagIAfQoAeK8AdAMAdAQAfAEAfAIAfAYAIXwAAGoBAIMCAIMBAERdSgBcAgB9CAB9CwB8CwBcAgB9DAB9DQB8DAB8DQBrAwBybwB8CQBqBQB8CACDAQABdAAAfAkAgwEAfAoAawQAcrkAUHG5AHFvAHFvAFd8CABkAgAXfQIAdAYAfAEAfAQAfAIAIWcBAIMBAH0OAHwAAGoBAHwOAGQDADx8CQB8DgBkBAA8fAIAfA4AZgIAU24AAHQHAHwBAHwCAHwAAGoIAHwAAIMEAIIBAGQAAFMoBQAAAE5pAAAAAGkBAAAAdAgAAABvcmlnaW5hbHQKAAAAbWlzbWF0Y2hlcygJAAAAUt0AAABSMQIAAFIyAgAAUuIAAABShgAAAFIEAQAAUiAAAABSHQAAAFJ5AQAAKA8AAABSnAAAAFJFAQAAUpYAAABSigEAAHQFAAAAc3RhcnRSoQEAAHQGAAAAbWF4bG9jUjECAAB0DwAAAG1hdGNoX3N0cmluZ2xvY1I0AgAAUjICAAB0AwAAAHNfbXQDAAAAc3JjdAMAAABtYXR0BwAAAHJlc3VsdHMoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKjAQAA6gkAAHMoAAAAAAEGAQwBEwIMAQkBBgEGAQkCLAEMAQwBDQESAQsCCgEWAQ0BCgENAigGAAAAUo8AAABSkAAAAFKxAAAAUp4AAABSvwAAAFKjAQAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJqAAAAyAkAAHMGAAAABhgGAQwJYwAAAAAAAAAABwAAAEIAAABzPgAAAGUAAFoBAGQAAFoCAGQGAGQBAGQCAGQCAGUEAGQGAGQDAIQGAFoFAGUGAGQEAIQBAFoHAGQFAIQAAFoIAFJTKAcAAABzFAkAAAogICAgVG9rZW4gZm9yIG1hdGNoaW5nIHdvcmRzIGNvbXBvc2VkIG9mIGFsbG93ZWQgY2hhcmFjdGVyIHNldHMuCiAgICBEZWZpbmVkIHdpdGggc3RyaW5nIGNvbnRhaW5pbmcgYWxsIGFsbG93ZWQgaW5pdGlhbCBjaGFyYWN0ZXJzLAogICAgYW4gb3B0aW9uYWwgc3RyaW5nIGNvbnRhaW5pbmcgYWxsb3dlZCBib2R5IGNoYXJhY3RlcnMgKGlmIG9taXR0ZWQsCiAgICBkZWZhdWx0cyB0byB0aGUgaW5pdGlhbCBjaGFyYWN0ZXIgc2V0KSwgYW5kIGFuIG9wdGlvbmFsIG1pbmltdW0sCiAgICBtYXhpbXVtLCBhbmQvb3IgZXhhY3QgbGVuZ3RoLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIEN7bWlufSBpcyAxIChhCiAgICBtaW5pbXVtIHZhbHVlIDwgMSBpcyBub3QgdmFsaWQpOyB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIEN7bWF4fSBhbmQgQ3tleGFjdH0KICAgIGFyZSAwLCBtZWFuaW5nIG5vIG1heGltdW0gb3IgZXhhY3QgbGVuZ3RoIHJlc3RyaWN0aW9uLiBBbiBvcHRpb25hbAogICAgQ3tleGNsdWRlQ2hhcnN9IHBhcmFtZXRlciBjYW4gbGlzdCBjaGFyYWN0ZXJzIHRoYXQgbWlnaHQgYmUgZm91bmQgaW4gCiAgICB0aGUgaW5wdXQgQ3tib2R5Q2hhcnN9IHN0cmluZzsgdXNlZnVsIHRvIGRlZmluZSBhIHdvcmQgb2YgYWxsIHByaW50YWJsZXMKICAgIGV4Y2VwdCBmb3Igb25lIG9yIHR3byBjaGFyYWN0ZXJzLCBmb3IgaW5zdGFuY2UuCiAgICAKICAgIEx7c3JhbmdlfSBpcyB1c2VmdWwgZm9yIGRlZmluaW5nIGN1c3RvbSBjaGFyYWN0ZXIgc2V0IHN0cmluZ3MgZm9yIGRlZmluaW5nIAogICAgQ3tXb3JkfSBleHByZXNzaW9ucywgdXNpbmcgcmFuZ2Ugbm90YXRpb24gZnJvbSByZWd1bGFyIGV4cHJlc3Npb24gY2hhcmFjdGVyIHNldHMuCiAgICAKICAgIEEgY29tbW9uIG1pc3Rha2UgaXMgdG8gdXNlIEN7V29yZH0gdG8gbWF0Y2ggYSBzcGVjaWZpYyBsaXRlcmFsIHN0cmluZywgYXMgaW4gCiAgICBDe1dvcmQoIkFkZHJlc3MiKX0uIFJlbWVtYmVyIHRoYXQgQ3tXb3JkfSB1c2VzIHRoZSBzdHJpbmcgYXJndW1lbnQgdG8gZGVmaW5lCiAgICBJe3NldHN9IG9mIG1hdGNoYWJsZSBjaGFyYWN0ZXJzLiBUaGlzIGV4cHJlc3Npb24gd291bGQgbWF0Y2ggIkFkZCIsICJBQUEiLAogICAgImRBcmVkIiwgb3IgYW55IG90aGVyIHdvcmQgbWFkZSB1cCBvZiB0aGUgY2hhcmFjdGVycyAnQScsICdkJywgJ3InLCAnZScsIGFuZCAncycuCiAgICBUbyBtYXRjaCBhbiBleGFjdCBsaXRlcmFsIHN0cmluZywgdXNlIEx7TGl0ZXJhbH0gb3IgTHtLZXl3b3JkfS4KCiAgICBweXBhcnNpbmcgaW5jbHVkZXMgaGVscGVyIHN0cmluZ3MgZm9yIGJ1aWxkaW5nIFdvcmRzOgogICAgIC0gTHthbHBoYXN9CiAgICAgLSBMe251bXN9CiAgICAgLSBMe2FscGhhbnVtc30KICAgICAtIEx7aGV4bnVtc30KICAgICAtIEx7YWxwaGFzOGJpdH0gKGFscGhhYmV0aWMgY2hhcmFjdGVycyBpbiBBU0NJSSByYW5nZSAxMjgtMjU1IC0gYWNjZW50ZWQsIHRpbGRlZCwgdW1sYXV0ZWQsIGV0Yy4pCiAgICAgLSBMe3B1bmM4Yml0fSAobm9uLWFscGhhYmV0aWMgY2hhcmFjdGVycyBpbiBBU0NJSSByYW5nZSAxMjgtMjU1IC0gY3VycmVuY3ksIHN5bWJvbHMsIHN1cGVyc2Ny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ZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj45CgAAcwIAAAAGAGkAAAAAaQEAAABzWgAAAGNhbm5vdCBzcGVjaWZ5IGEgbWluaW11bSBsZW5ndGggPCAxOyB1c2UgT3B0aW9uYWwoV29yZCgpKSBpZiB6ZXJvLWxlbmd0aCB3b3JkIGlzIHBlcm1pdHRlZHMJAAAARXhwZWN0ZWQgUhUCAABzBQAAAFslc10rcwcAAAAlc1slc10qcwkAAABbJXNdWyVzXSpzAgAAAFxiKBwAAABSCwIAAFItAAAAUp4AAABSqAAAAHQNAAAAaW5pdENoYXJzT3JpZ1KyAQAAdAkAAABpbml0Q2hhcnN0DQAAAGJvZHlDaGFyc09yaWd0CQAAAGJvZHlDaGFyc3QMAAAAbWF4U3BlY2lmaWVkUugBAAB0BgAAAG1pbkxlbnQGAAAAbWF4TGVuUiQCAABSfwAAAFLCAAAAUnkBAABSxgAAAFJ4AQAAdAkAAABhc0tleXdvcmR0FgAAAF9lc2NhcGVSZWdleFJhbmdlQ2hhcnN0CAAAAHJlU3RyaW5nUt0AAABSfAEAAHQGAAAAZXNjYXBldAcAAABjb21waWxlUmEBAABSlwAAACgIAAAAUpwAAABSPgIAAFJAAgAAdAMAAABtaW50AwAAAG1heHQFAAAAZXhhY3RSRAIAAFI8AgAAKAAAAAAoAQAAAFI8AgAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAANAoAAHNUAAAAAAETAQYBHwEGASUBCQEPAQYBCQESAgkBDwIPAgwBDwIJAgwBDAIJAgwBCQEMAg8BEAEJAQkCOgESARkB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b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSLQAAAAUKAABzCAAAAAYuBgEbNgwjYwAAAAAAAAAAAwAAAEIAAABzRAAAAGUAAFoBAGQAAFoCAGUDAGUEAGoFAGQBAIMBAIMBAFoGAGQCAGQDAIQBAFoHAGUIAGQEAIQBAFoJAGQFAIQAAFoKAFJTKAYAAABzkAIAAAogICAgVG9rZW4gZm9yIG1hdGNoaW5nIHN0cmluZ3MgdGhhdCBtYXRjaCBhIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbi4KICAgIERlZmluZWQgd2l0aCBzdHJpbmcgc3BlY2lmeWluZyB0aGUgcmVndWxhciBleHByZXNzaW9uIGluIGEgZm9ybSByZWNvZ25pemVkIGJ5IHRoZSBpbmJ1aWx0IFB5dGhvbiByZSBtb2R1bGUuCiAgICBJZiB0aGUgZ2l2ZW4gcmVnZXggY29udGFpbnMgbmFtZWQgZ3JvdXBzIChkZWZpbmVkIHVzaW5nIEN7KD9QPG5hbWU+Li4uKX0pLCB0aGVzZSB3aWxsIGJlIHByZXNlcnZlZCBhcyAKICAgIG5hbWVkIHBhcnNlIHJlc3VsdHMuCgogICAgRXhhbXBsZTo6CiAgICAgICAgcmVhbG51bSA9IFJlZ2V4KHIiWystXT9cZCtcLlxkKiIpCiAgICAgICAgZGF0ZSA9IFJlZ2V4KHInKD9QPHllYXI+XGR7NH0pLSg/UDxtb250aD5cZFxkPyktKD9QPGRheT5cZFxkPyknKQogICAgICAgICMgcmVmOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI2NzM5OS9ob3ctZG8teW91LW1hdGNoLW9ubHktdmFsaWQtcm9tYW4tbnVtZXJhbHMtd2l0aC1hLXJlZ3VsYXItZXhwcmVzc2lvbgogICAgICAgIHJvbWFuID0gUmVnZXgociJNezAsNH0oQ018Q0R8RD9DezAsM30pKFhDfFhMfEw/WHswLDN9KShJWHxJVnxWP0l7MCwzfSkiKQogICAgcwUAAABbQS1aXWkAAAAAYwMA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YnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKmAAAA4QoAAHMOAAAAAAEDARcBDQEEAg8BGQIoCwAAAFKPAAAAUpAAAABSsQAAAFKvAAAAUnwBAABSSAIAAFJVAgAAUp4AAABSvwAAAFKjAQAAUqYAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UiUAAACkCgAAcwoAAAAGDAYBFQEMIgwNYwAAAAAAAAAABwAAAEIAAABzPgAAAGUAAFoBAGQAAFoCAGQEAGQEAGUEAGUFAGQEAGUFAGQBAIQGAFoGAGUFAGQCAIQBAFoHAGQDAIQAAFoIAFJTKAUAAABzqwUAAAogICAgVG9rZW4gZm9yIG1hdGNoaW5nIHN0cmluZ3MgdGhhdCBhcmUgZGVsaW1pdGVkIGJ5IHF1b3RpbmcgY2hhcmFjdGVycy4KICAgIAogICAgRGVmaW5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczoKICAgICAgICAtIHF1b3RlQ2hhciAtIHN0cmluZyBvZiBvbmUgb3IgbW9yZSBjaGFyYWN0ZXJzIGRlZmluaW5nIHRoZSBxdW90ZSBkZWxpbWl0aW5nIHN0cmluZwogICAgICAgIC0gZXNjQ2hhciAtIGNoYXJhY3RlciB0byBlc2NhcGUgcXVvdGVzLCB0eXBpY2FsbHkgYmFja3NsYXNoIChkZWZhdWx0PUN7Tm9uZX0pCiAgICAgICAgLSBlc2NRdW90ZSAtIHNwZWNpYWwgcXVvdGUgc2VxdWVuY2UgdG8gZXNjYXBlIGFuIGVtYmVkZGVkIHF1b3RlIHN0cmluZyAoc3VjaCBhcyBTUUwncyAiIiB0byBlc2NhcGUgYW4gZW1iZWRkZWQgIikgKGRlZmF1bHQ9Q3tOb25lfSkKICAgICAgICAtIG11bHRpbGluZSAtIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHF1b3RlcyBjYW4gc3BhbiBtdWx0aXBsZSBsaW5lcyAoZGVmYXVsdD1De0ZhbHNlfSkKICAgICAgICAtIHVucXVvdGVSZXN1bHRzIC0gYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1hdGNoZWQgdGV4dCBzaG91bGQgYmUgdW5xdW90ZWQgKGRlZmF1bHQ9Q3tUcnVlfSkKICAgICAgICAtIGVuZFF1b3RlQ2hhciAtIHN0cmluZyBvZiBvbmUgb3IgbW9yZSBjaGFyYWN0ZXJzIGRlZmluaW5nIHRoZSBlbmQgb2YgdGhlIHF1b3RlIGRlbGltaXRlZCBzdHJpbmcgKGRlZmF1bHQ9Q3tOb25lfSA9PiBzYW1lIGFzIHF1b3RlQ2hhcikKICAgICAgICAtIGNvbnZlcnRXaGl0ZXNwYWNlRXNjYXBlcyAtIGNvbnZlcnQgZXNjYXBlZCB3aGl0ZXNwYWNlIChDeydcdCd9LCBDeydcbid9LCBldGMuKSB0byBhY3R1YWwgd2hpdGVzcGFjZSAoZGVmYXVsdD1De1RydWV9KQoKICAgIEV4YW1wbGU6OgogICAgICAgIHFzID0gUXVvdGVkU3RyaW5nKCciJykKICAgICAgICBwcmludChxcy5zZWFyY2hTdHJpbmcoJ2xzamRmICJUaGlzIGlzIHRoZSBxdW90ZSIgc2xkamYnKSkKICAgICAgICBjb21wbGV4X3FzID0gUXVvdGVkU3RyaW5nKCd7eycsIGVuZFF1b3RlQ2hhcj0nfX0nKQogICAgICAgIHByaW50KGNvbXBsZXhfcXMuc2VhcmNoU3RyaW5nKCdsc2pkZiB7e1RoaXMgaXMgdGhlICJxdW90ZSJ9fSBzbGRqZicpKQogICAgICAgIHNxbF9xcyA9IFF1b3RlZFN0cmluZygnIicsIGVzY1F1b3RlPSciIicpCiAgICAgICAgcHJpbnQoc3FsX3FzLnNlYXJjaFN0cmluZygnbHNqZGYgIlRoaXMgaXMgdGhlIHF1b3RlIHdpdGggIiJl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owEAAFKmAAAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIjAAAA7QoAAHMIAAAABhgGARtBDCNjAAAAAAAAAAAEAAAAQgAAAHM1AAAAZQAAWgEAZAAAWgIAZAEAZAIAZAIAZAMAhAMAWgMAZQQAZAQAhAEAWgUAZAUAhAAAWgYAUlMoBgAAAHP0AgAACiAgICBUb2tlbiBmb3IgbWF0Y2hpbmcgd29yZHMgY29tcG9zZWQgb2YgY2hhcmFjdGVycyBJe25vdH0gaW4gYSBnaXZlbiBzZXQgKHdpbGwKICAgIGluY2x1ZGUgd2hpdGVzcGFjZSBpbiBtYXRjaGVkIGNoYXJhY3RlcnMgaWYgbm90IGxpc3RlZCBpbiB0aGUgcHJvdmlkZWQgZXhjbHVzaW9uIHNldCAtIHNlZSBleGFtcGxlKS4KICAgIERlZmluZWQgd2l0aCBzdHJpbmcgY29udGFpbmluZyBhbGwgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzLCBhbmQgYW4gb3B0aW9uYWwKICAgIG1pbmltdW0sIG1heGltdW0sIGFuZC9vciBleGFjdCBsZW5ndGguICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgQ3ttaW59IGlzIDEgKGEKICAgIG1pbmltdW0gdmFsdWUgPCAxIGlzIG5vdCB2YWxpZCk7IHRoZSBkZWZhdWx0IHZhbHVlcyBmb3IgQ3ttYXh9IGFuZCBDe2V4YWN0fQogICAgYXJlIDAsIG1lYW5pbmcgbm8gbWF4aW11bSBvciBleGFjdCBsZW5ndGggcmVzdHJpY3Rpb24uCgogICAgRXhhbXBsZTo6CiAgICAgICAgIyBkZWZpbmUgYSBjb21tYS1zZXBhcmF0ZWQtdmFsdWUgYXMgYW55dGhpbmcgdGhhdCBpcyBub3QgYSAnLCcKICAgICAgICBjc3ZfdmFsdWUgPSBDaGFyc05vdEluKCcsJykKICAgICAgICBw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bmUnXSAgICAKCiAgICBjAQAAAAEAAAADAAAAQwAAAHMgAAAAdAAAdAEAfAAAgwIAagIAgwAAAWQBAHwAAF8DAGQAAFMoAgAAAE5zFgAAAEV4cGVjdGVkIHN0YXJ0IG9mIGxpbmUoBAAAAFILAgAAUhIAAABSngAAAFJ5AQAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAAAmDAAAcwQAAAAAARMBYwQAAAAEAAAABQAAAEMAAABzOwAAAHQAAHwCAHwBAIMCAGQBAGsCAHIfAHwCAGcAAGYCAFN0AQB8AQB8AgB8AABqAgB8AACDBACCAQBkAABTKAIAAABOaQEAAAAoAwAAAFI3AAAAUh0AAABSeQEAACgEAAAAUpwAAABSRQEAAFKWAAAAUooBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKjAQAAKgwAAHMGAAAAAAEVAQoBKAYAAABSjwAAAFKQAAAAUrEAAABSngAAAFK/AAAAUqMBAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UhIAAAARDAAAcwYAAAAGFAYBCQRjAAAAAAAAAAACAAAAQgAAAHMjAAAAZQAAWgEAZAAAWgIAZAEA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AHwAAGoCAHwAAIMEAIIBAGQAAFMoAgAAAE5pAQAAACgDAAAAUt0AAABSHQAAAFJ5AQAAKAQAAABSnAAAAFJFAQAAUpYAAABSigEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UqMBAABaDAAAcw4AAAAAARIBGwESAQ4BEgEKAigGAAAAUo8AAABSkAAAAFKxAAAAUp4AAABSvwAAAFKjAQAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVInAAAAUgwAAHMGAAAABgMGAQkEYwAAAAAAAAAAAgAAAEIAAABzJgAAAGUAAFoBAGQAAFoCAGUDAGQBAIQBAFoEAGUFAGQCAIQBAFoGAFJTKAMAAABzcAEAAAogICAgTWF0Y2hlcyBpZiB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgV29yZCwgYW5kCiAgICBpcyBub3QgcHJlY2VkZWQgYnkgYW55IGNoYXJhY3RlciBpbiBhIGdpdmVuIHNldCBvZiBDe3dvcmRDaGFyc30KICAgIChkZWZhdWx0PUN7cHJpbnRhYmxlc30pLiBUbyBlbXVsYXRlIHRoZSBDewh9IGJlaGF2aW9yIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMsCiAgICB1c2UgQ3tXb3JkU3RhcnQoYWxwaGFudW1zKX0uIEN7V29yZFN0YXJ0fSB3aWxsIGFsc28gbWF0Y2ggYXQgdGhlIGJlZ2lubmluZyBvZgogICAgdGhlIHN0cmluZyBiZWluZyBwYXJzZWQsIG9yIGF0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TERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVK6AAAApwwAAHMCAAAAAAFjAgAAAAIAAAACAAAAQwAAAHMdAAAAfAAAagAAagEAfAEAgwEAAWQAAHwAAF8DAHwAAFMoAQAAAE4oBAAAAFJ2AgAAUgQBAABSlwAAAFJtAQAAKAIAAABSnAAAAFIJAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSBAEAAKoMAABzBgAAAAABEAEJAWMBAAAAAgAAAAMAAABDAAAAc1AAAAB0AAB8AABfAQBnAAB8AABqAgBEXRIAfQEAfAEAagMAgwAAXgIAcRMAfAAAXwIAeBsAfAAAagIARF0QAH0BAHwBAGoEAIMAAAFxOABXfAAAUygBAAAAc34AAABFeHRlbmRzIEN7bGVhdmVXaGl0ZXNwYWNlfSBkZWZpbmVkIGluIGJhc2UgY2xhc3MsIGFuZCBhbHNvIGludm9rZXMgQ3tsZWF2ZVdoaXRlc3BhY2V9IG9uCiAgICAgICAgICAgYWxsIGNvbnRhaW5lZCBleHByZXNzaW9ucy4oBQAAAFLGAAAAUnABAABSdgIAAFLSAAAAUvYBAAAoAgAAAFKcAAAAUp0BAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVL2AQAArwwAAHMKAAAAAAMJASUBEAEOAWMC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TnQBAAAALSgGAAAAUgsCAABSBAAAAFLiAQAAUp4AAABSwgAAAFL2AQAAKAMAAABSnAAAAFKbAAAAUvwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAAEA0AAHMGAAAAAAEcAQkBKAMAAABSjwAAAFKQAAAAUp4AAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UuIBAAAPDQAAcwIAAAAGAWMDAAAAAwAAAAMAAABDAAAAc2wAAAB0AAB0AQB8AACDAgBqAgB8AQB8AgCDAgABdAMAZAEAhAAAfAAAagQARIMBAIMBAHwAAF8FAHwAAGoGAHwAAGoEAGQCABlqBwCDAQABfAAAagQAZAIAGWoIAHwAAF8IAHQJAHwAAF8KAGQAAFMoAwAAAE5jAQAAAAIAAAACAAAAcwAAAHMYAAAAfAAAXQ4AfQEAfAEAagAAVgFxAwBkAABTKAEAAABOKAEAAABScwEAACgCAAAAUoAAAABSnQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj4XDQAAcwIAAAAGAGkAAAAAKAsAAABSCwIAAFIEAAAAUp4AAABSeAIAAFJ2AgAAUnMBAABS9wEAAFJx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AGQAAFMoAQAAAE4oAQAAAFJ/AAAAKAIAAABSgAAAAFKdAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlzCQAAADxnZW5leHByPkYNAABzAgAAAAYAdAEAAAB9KAYAAABS8QAAAFLCAAAAUm0BAABSlwAAAFKoAAAAUnYCAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSpgAAAEENAABzCgAAAAABDwEHAg8BKgIoCwAAAFKPAAAAUpAAAABSsQAAAFILAAAAUuIBAABSvwAAAFKeAAAAUqMBAABSEgEAAFIAAgAAUqYAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgQAAAD/DAAAcw4AAAAGDgYCFgYMBwwZCQUJB2MAAAAAAAAAAAIAAABCAAAAc0EAAABlAABaAQBkAABaAgBlAwBkAQCEAQBaBABlBQBkAgCEAQBaBgBkAwCEAABaBwBkBACEAABaCABkBQCEAABaCQBSUygGAAAAc74BAAAKICAgIFJlcXVpcmVzIHRoYXQgYXQgbGVhc3Qgb25lIEN7UGFyc2VFeHByZXNzaW9ufSBpcyBmb3VuZC4KICAgIElmIHR3byBleHByZXNzaW9u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My4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj6QDQAAcwIAAAAGAFKBAgAAKAYAAABS8QAAAFLCAAAAUm0BAABSlwAAAFKoAAAAUnYCAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSpgAAAIsNAABzCgAAAAABDwEHAg8BKgJjAgAAAAQAAAADAAAAQwAAAHMzAAAAfAEAHnwAAGcBABd9AgB4HgB8AABqAABEXRMAfQMAfAMAagEAfAIAgwEAAXEYAFdkAABTKAEAAABOKAIAAABSdgIAAFIAAgAAKAQAAABSnAAAAFK0AAAAUn8CAABSnQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgACAACUDQAAcwYAAAAAAQ4BEAEoCgAAAFKPAAAAUpAAAABSsQAAAFLGAAAAUp4AAABSvwAAAFKjAQAAUogCAABSpgAAAFIAAgAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIaAAAASw0AAHMMAAAA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Ljcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj7UDQAAcwIAAAAGAFKBAgAAKAYAAABS8QAAAFLCAAAAUm0BAABSlwAAAFKoAAAAUnYCAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSpgAAAM8NAABzCgAAAAABDwEHAg8BKgJjAgAAAAQAAAADAAAAQwAAAHMzAAAAfAEAHnwAAGcBABd9AgB4HgB8AABqAABEXRMAfQMAfAMAagEAfAIAgwEAAXEYAFdkAABTKAEAAABOKAIAAABSdgIAAFIAAgAAKAQAAABSnAAAAFK0AAAAUn8CAABSnQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgACAADYDQAAcwYAAAAAAQ4BEAEoCgAAAFKPAAAAUpAAAABSsQAAAFLGAAAAUp4AAABSvwAAAFKjAQAAUokCAABSpgAAAFIAAgAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIUAAAAmg0AAHMMAAAABhAGAQwHDBgJBQkJYwAAAAAAAAAAAgAAAEIAAABzOAAAAGUAAFoBAGQAAFoCAGUDAGQBAIQBAFoEAGUDAGQCAIQBAFoFAGQDAIQAAFoGAGQEAIQAAFoHAFJTKAUAAABzbQcAAAogICAgUmVxdWlyZXMgYWxsIGdpdmVuIEN7UGFyc2VFeHByZXNzaW9ufXMgdG8gYmUgZm91bmQsIGJ1dCBpbiBhbnkgb3JkZXIuCiAgICBFeHByZXNzaW9ucyBtYXkgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UuCiAgICBNYXkgYmUgY29uc3RydWN0ZWQgdXNpbmcgdGhlIEN7JyYnfSBvcGVyYXRvci4KCiAgICBFeGFtcGxlOjoKICAgICAgICBjb2xvciA9IG9uZU9mKCJSRUQgT1JBTkdFIFlFTExPVyBHUkVFTiBCTFVFIFBVUlBMRSBCTEFDSyBXSElURSBCUk9XTiIpCiAgICAgICAgc2hhcGVfdHlwZSA9IG9uZU9mKCJTUVVBUkUgQ0lSQ0xFIFRSSUFOR0xFIFNUQVIgSEVYQUdPTiBPQ1RBR09OIikKICAgICAgICBpbnRlZ2VyID0gV29yZChudW1zKQogICAgICAgIHNoYXBlX2F0dHIgPSAic2hhcGU6IiArIHNoYXBlX3R5cGUoInNoYXBlIikKICAgICAgICBwb3NuX2F0dHIgPSAicG9zbjoiICsgR3JvdXAoaW50ZWdlcigieCIpICsgJywnICsgaW50ZWdlcigieSIpKSgicG9zbiIpCiAgICAgICAgY29sb3JfYXR0ciA9ICJjb2xvcjoiICsgY29sb3IoImNvbG9yIikKICAgICAgICBzaXplX2F0dHIgPSAic2l6ZToiICsgaW50ZWdlcigic2l6ZSIpCgogICAgICAgICMgdXNlIEVhY2ggKHVzaW5nIG9wZXJhdG9yICcmJykgdG8gYWNjZXB0IGF0dHJpYnV0ZXMgaW4gYW55IG9yZGVyIAogICAgICAgICMgKHNoYXBlIGFuZCBwb3NuIGFyZSByZXF1aXJlZCwgY29sb3IgYW5kIHNpemUgYXJlIG9wdGlvbmFsKQogICAgICAgIHNoYXBlX3NwZWMgPSBzaGFwZV9hdHRyICYgcG9zbl9hdHRyICYgT3B0aW9uYWwoY29sb3JfYXR0cikgJiBPcHRpb25hbChzaXplX2F0dHIpCgogICAgICAgIHNoYXBlX3NwZWMucnVuVGVzdHMoJycnCiAgICAgICAgICAgIHNoYXBlOiBTUVVBUkUgY29sb3I6IEJMQUNLIHBvc246IDEwMCwgMTIwCiAgICAgICAgICAgIHNoYXBlOiBDSVJDTEUgc2l6ZTogNTAgY29sb3I6IEJMVUUgcG9zbjogNTAsODAKICAgICAgICAgICAgY29sb3I6R1JFRU4gc2l6ZToyMCBzaGFwZTpUUklBTkdMRSBwb3NuOjIwLDQwCiAgICAgICAgICAgICcnJwogICAgICAgICAgICApCiAgICBwcmludHM6OgogICAgICAgIHNoYXBlOiBTUVVBUkUgY29sb3I6IEJMQUNLIHBvc246IDEwMCwgMTIwCiAgICAgICAgWydzaGFwZTonLCAnU1FVQVJFJywgJ2NvbG9yOicsICdCTEFDSycsICdwb3NuOicsIFsnMTAwJywgJywnLCAnMTIwJ11dCiAgICAgICAgLSBjb2xvcjogQkxBQ0sKICAgICAgICAtIHBvc246IFsnMTAwJywgJywnLCAnMTIwJ10KICAgICAgICAgIC0geDogMTAwCiAgICAgICAgICAtIHk6IDEyMAogICAgICAgIC0gc2hhcGU6IFNRVUFSRQoKCiAgICAgICAgc2hhcGU6IENJUkNMRSBzaXplOiA1MCBjb2xvcjogQkxVRSBwb3NuOiA1MCw4MAogICAgICAgIFsnc2hhcGU6JywgJ0NJUkNMRScsICdzaXplOicsICc1MCcsICdjb2xvcjonLCAnQkxVRScsICdwb3NuOicsIFsnNTAnLCAnLCcsICc4MCddXQogICAgICAgIC0gY29sb3I6IEJMVUUKICAgICAgICAtIHBvc246IFsnNTAnLCAnLCcsICc4MCddCiAgICAgICAgICAtIHg6IDUwCiAgICAgICAgICAtIHk6IDgwCiAgICAgICAgLSBzaGFwZTogQ0lSQ0xFCiAgICAgICAgLSBzaXplOiA1MAoKCiAgICAgICAgY29sb3I6IEdSRUVOIHNpemU6IDIwIHNoYXBlOiBUUklBTkdMRSBwb3NuOiAyMCw0MAogICAgICAgIFsnY29sb3I6JywgJ0dSRUVOJywgJ3NpemU6JywgJzIwJywgJ3NoYXBlOicsICdUUklBTkdMRScsICdwb3NuOicsIFsnMjAn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T1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj4cDgAAcwIAAAAGAHMCAAAALCBjAQAAAAIAAAADAAAAcwAAAHMbAAAAfAAAXREAfQEAdAAAfAEAgwEAVgFxAwBkAABTKAEAAABOKAEAAABSfwAAACgCAAAAUoAAAABSnQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj49DgAAcwIAAAAGAHMqAAAATWlzc2luZyBvbmUgb3IgbW9yZSByZXF1aXJlZCBlbGVtZW50cyAoJXMpKBsAAABSigIAAFLPAAAAUnYCAAB0BwAAAG9wdDFtYXBScwAAAFIZAAAAUkYBAABScwEAAHQJAAAAb3B0aW9uYWxzUjAAAAB0DgAAAG11bHRpb3B0aW9uYWxzUhcAAAB0DQAAAG11bHRpcmVxdWlyZWR0CAAAAHJlcXVpcmVkUsYAAABSvwAAAFKtAQAAUh0AAABSBAEAAFLYAAAAUg8CAAB0BgAAAHJlbW92ZVLdAAAAUqgAAABSjwEAAHQDAAAAc3VtUiAAAAAoEgAAAFKcAAAAUkUBAABSlgAAAFKKAQAAUp0BAAB0BAAAAG9wdDF0BAAAAG9wdDJ0BgAAAHRtcExvY3QHAAAAdG1wUmVxZHQGAAAAdG1wT3B0dAoAAABtYXRjaE9yZGVydAwAAABrZWVwTWF0Y2hpbmd0CAAAAHRtcEV4cHJzdAYAAABmYWlsZWR0BwAAAG1pc3NpbmdSfAIAAFI7AgAAdAwAAABmaW5hbFJlc3VsdHMoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRo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UhwAAABSpgAAAFJhAQAAUm0BAABSlwAAAFJGAQAAUl4BAABSjwAAAFJ/AAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UqYAAACcDgAAcw4AAAAAAQMBFwENAQQCHgElASgNAAAAUo8AAABSkAAAAFKxAAAAUsYAAABSngAAAFK/AAAAUqMBAABS9gEAAFL5AQAAUsgBAABSAAIAAFICAgAAUqYAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UhwAAABaDgAAcxIAAAAGAwYBDBIMBgkHCQwJBgkHDAZjAAAAAAAAAAACAAAAQgAAAHMjAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAZQQAZAIAhAEAWgUAUlMoAwAAAHP1AgAACiAgICBMb29rYWhlYWQgbWF0Y2hpbmcgb2YgdGhlIGdpdmVuIHBhcnNlIGV4cHJlc3Npb24uICBDe0ZvbGxvd2VkQnl9CiAgICBkb2VzIEl7bm90fSBhZHZhbmNlIHRoZSBwYXJzaW5nIHBvc2l0aW9uIHdpdGhpbiB0aGUgaW5wdXQgc3RyaW5nLCBpdCBvbmx5CiAgICB2ZXJpZmllcyB0aGF0IHRoZSBzcGVjaWZpZWQgcGFyc2UgZXhwcmVzc2lvbiBtYXRjaGVzIGF0IHRoZSBjdXJyZW50CiAgICBwb3NpdGlvbi4gIEN7Rm9sbG93ZWRCeX0gYWx3YXlzIHJldHVybnMgYSBudWxsIHRva2VuIGxpc3QuCgogICAgRXhhbXBsZTo6CiAgICAgICAgIyB1c2UgRm9sbG93ZWRCeSB0byBtYXRjaCBhIGxhYmVsIG9ubHkgaWYgaXQgaXMgZm9sbG93ZWQgYnkgYSAnOicKICAgICAgICBkYXRhX3dvcmQgPSBXb3JkKGFscGhhcykKICAgICAgICBsYWJlbCA9IGRhdGFfd29yZCArIEZvbGxvd2VkQnkoJzonKQogICAgICAgIGF0dHJfZXhwciA9IEdyb3VwKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQogICAgICAgIAogICAgICAgIE9uZU9yTW9yZShhdHRyX2V4cHIpLnBhcnNlU3RyaW5nKCJzaGFwZTogU1FVQVJFIGNvbG9yOiBCTEFDSyBwb3NuOiB1cHBlciBsZWZ0IikucHByaW50KCkKICAgIHByaW50czo6CiAgICAgICAgW1snc2hhcGUnLCAnU1FVQVJFJ10sIFsnY29sb3InLCAnQkxBQ0snXSwgWydwb3NuJywgJ3VwcGVyIGxlZnQnXV0KICAgIGMCAAAAAgAAAAMAAABDAAAAcyMAAAB0AAB0AQB8AACDAgBqAgB8AQCDAQABdAMAfAAAXwQAZAAAUygBAAAATigFAAAAUgsCAABSDAAAAFKeAAAAUr8AAABScwEAACgCAAAAUpwAAABSRgEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAAC4DgAAcwQAAAAAARYBYwQAAAAEAAAAAwAAAEMAAABzHQAAAHwAAGoAAGoBAHwBAHwCAIMCAAF8AgBnAABmAgBTKAEAAABOKAIAAABSRgEAAFKtAQAAKAQAAABSnAAAAFJFAQAAUpYAAABSigEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UqMBAAC8DgAAcwQAAAAAARMBKAYAAABSjwAAAFKQAAAAUrEAAABSngAAAFK/AAAAUqMBAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UgwAAACnDgAAcwYAAAAGEAYBCQRjAAAAAAAAAAACAAAAQgAAAHMsAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAZQQAZAIAhAEAWgUAZAMAhAAAWgYAUlMoBAAAAHOxAQAACiAgICBMb29rYWhlYWQgdG8gZGlzYWxsb3cgbWF0Y2hpbmcgd2l0aCB0aGUgZ2l2ZW4gcGFyc2UgZXhwcmVzc2lvbi4gIEN7Tm90QW55fQogICAgZG9lcyBJe25vdH0gYWR2YW5jZSB0aGUgcGFyc2luZyBwb3NpdGlvbiB3aXRoaW4gdGhlIGlucHV0IHN0cmluZywgaXQgb25seQogICAgdmVyaWZpZXMgdGhhdCB0aGUgc3BlY2lmaWVkIHBhcnNlIGV4cHJlc3Npb24gZG9lcyBJe25vdH0gbWF0Y2ggYXQgdGhlIGN1cnJlbnQKICAgIHBvc2l0aW9uLiAgQWxzbywgQ3tOb3RBbnl9IGRvZXMgSXtub3R9IHNraXAgb3ZlciBsZWFkaW5nIHdoaXRlc3BhY2UuIEN7Tm90QW55fQogICAgYWx3YXlzIHJldHVybnMgYSBudWxsIHRva2VuIGxpc3QuICBNYXkgYmUgY29uc3RydWN0ZWQgdXNpbmcgdGhlICd+JyBvcGVyYXRvci4KCiAgICBFeGFtcGxlOjoKICAgICAgICAKICAgIGMCAAAAAgAAAAMAAABDAAAAc0IAAAB0AAB0AQB8AACDAgBqAgB8AQCDAQABdAMAfAAAXwQAdAUA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AABzFwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAFJTKAIAAABzgwQAAAogICAgUmVwZXRpdGlvbiBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbi4KICAgIAogICAgUGFyYW1ldGVyczoKICAgICAtIGV4cHIgLSBleHByZXNzaW9uIHRoYXQgbXVzdCBtYXRjaCBvbmUgb3IgbW9yZSB0aW1lcwogICAgIC0gc3RvcE9uIC0gKGRlZmF1bHQ9Q3tOb25lfSkgLSBleHByZXNzaW9uIGZvciBhIHRlcm1pbmF0aW5nIHNlbnRpbmVsCiAgICAgICAgICAob25seSByZXF1aXJlZCBpZiB0aGUgc2VudGluZWwgd291bGQgb3JkaW5hcmlseSBtYXRjaCB0aGUgcmVwZXRpdGlvbiAKICAgICAgICAgIGV4cHJlc3Npb24pICAgICAgICAgIAoKICAgIEV4YW1wbGU6OgogICAgICAgIGRhdGFfd29yZCA9IFdvcmQoYWxwaGFzKQogICAgICAgIGxhYmVsID0gZGF0YV93b3JkICsgRm9sbG93ZWRCeSgnOicpCiAgICAgICAgYXR0cl9leHByID0gR3JvdXAobGFiZWwgKyBTdXBwcmVzcygnOicpICsgT25lT3JNb3JlKGRhdGFfd29yZCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQoKICAgICAgICB0ZXh0ID0gInNoYXBlOiBTUVVBUkUgcG9zbjogdXBwZXIgbGVmdCBjb2xvcjogQkxBQ0siCiAgICAgICAgT25lT3JNb3JlKGF0dHJfZXhwcikucGFyc2VTdHJpbmcodGV4dCkucHByaW50KCkgICMgRmFpbCEgcmVhZCAnY29sb3InIGFzIGRhdGEgaW5zdGVhZCBvZiBuZXh0IGxhYmVsIC0+IFtbJ3NoYXBlJywgJ1NRVUFSRSBjb2xvciddXQoKICAgICAgICAjIHVzZSBzdG9wT24gYXR0cmlidXRlIGZvciBPbmVPck1vcmUgdG8gYXZvaWQgcmVhZGluZyBsYWJlbCBzdHJpbmcgYXMgcGFydCBvZiB0aGUgZGF0YQogICAgICAgIGF0dHJfZXhwciA9IEdyb3VwKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQogICAgICAgIE9uZU9yTW9yZShhdHRyX2V4cHIpLnBhcnNlU3RyaW5nKHRleHQpLnBwcmludCgpICMgQmV0dGVyIC0+IFtbJ3NoYXBlJywgJ1NRVUFSRSddLCBbJ3Bvc24nLCAndXBwZXIgbGVmdCddLCBbJ2NvbG9yJywgJ0JMQUNLJ11dCiAgICAgICAgCiAgICAgICAgIyBjb3VsZCBhbHNvIGJlIHdyaXR0ZW4gYXMKICAgICAgICAoYXR0cl9leHByICogKDEsKSkucGFyc2VTdHJpbmcodGV4dCkucHByaW50KCkKICAgIGMBAAAAAQAAAAMAAABDAAAAc0kAAAB0AAB8AABkAQCDAgByFgB8AABqAQBTfAAAagIAZAAAawgAckIAZAIAdAQAfAAAagUAgwEAF2QDABd8AABfAgBuAAB8AABqAgBTKAQAAABOUsIAAABSgAIAAHMEAAAAfS4uLigGAAAAUvEAAABSwgAAAFJtAQAAUpcAAABSfwAAAFJGAQAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UqYAAAAhDwAAcwoAAAAAAQ8BBwIPAR0CKAQAAABSjwAAAFKQAAAAUrEAAABSpgAAACgAAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSFwAAAAcPAABzBAAAAAYYBgJjAAAAAAAAAAACAAAAQgAAAHMvAAAAZQAAWgEAZAAAWgIAZAQAZAEAhAEAWgQAZQUAZAIAhAEAWgYAZAMAhAAAWgcAUlMoBQAAAHN3AQAACiAgICBPcHRpb25hbCByZXBldGl0aW9uIG9mIHplcm8gb3IgbW9yZSBvZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbi4KICAgIAogICAgUGFyYW1ldGVyczoKICAgICAtIGV4cHIgLSBleHByZXNzaW9uIHRoYXQgbXVzdCBtYXRjaCB6ZXJvIG9yIG1vcmUgdGltZXMKICAgICAtIHN0b3BPbiAtIChkZWZhdWx0PUN7Tm9uZX0pIC0gZXhwcmVzc2lvbiBmb3IgYSB0ZXJtaW5hdGluZyBzZW50aW5lbAogICAgICAgICAgKG9ubHkgcmVxdWlyZWQgaWYgdGhlIHNlbnRpbmVsIHdvdWxkIG9yZGluYXJpbHkgbWF0Y2ggdGhlIHJlcGV0aXRpb24gCiAgICAgICAgICBleHByZXNzaW9uKSAgICAgICAgICAKCiAgICBFeGFtcGxlOiBzaW1pbGFyIHRvIEx7T25lT3JNb3JlfQogICAgYwMAAAADAAAABAAAAEMAAABzKQAAAHQAAHQBAHwAAIMCAGoCAHwBAGQBAHwCAIMBAQF0AwB8AABfBABkAABTKAIAAABOUqACAAAoBQAAAFILAgAAUjAAAABSngAAAFK/AAAAUnMBAAAoAwAAAFKcAAAAUkYBAABSoAIAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAAA2DwAAcwQAAAAAARwBYwQAAAAEAAAABgAAAEMAAABzRQAAAHkgAHQAAHQBAHwAAIMCAGoCAHwBAHwCAHwDAIMDAFNXbh4ABHQDAHQEAGYCAGsKAHJAAAEBAXwCAGcAAGYCAFNYZAAAUygBAAAATigFAAAAUgsCAABSMAAAAFKjAQAAUh0AAABS1QAAACgEAAAAUpwAAABSRQEAAFKWAAAAUooBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKjAQAAOg8AAHMIAAAAAAEDASABEwFjAQAAAAEAAAADAAAAQwAAAHNJAAAAdAAAfAAAZAEAgwIAchYAfAAAagEAU3wAAGoCAGQAAGsIAHJCAGQCAHQEAHwAAGoFAIMBABdkAwAXfAAAXwIAbgAAfAAAagIAUygEAAAATlLCAAAAUhQBAABzBAAAAF0uLi4oBgAAAFLxAAAAUsIAAABSbQEAAFKXAAAAUn8AAABSRgEAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKmAAAAQA8AAHMKAAAAAAEPAQcCDwEdAk4oCAAAAFKPAAAAUpAAAABSsQAAAFKXAAAAUp4AAABSvwAAAFKjAQAAUqYAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UjAAAAAqDwAAcwgAAAAGCwYBDAQMBnQKAAAAX051bGxUb2tlbmMAAAAAAAAAAAEAAABCAAAAcyAAAABlAABaAQBkAACEAABaAgBlAgBaAwBkAQCEAABaBABSUygCAAAAYwEAAAABAAAAAQAAAEMAAABzBAAAAHQAAFMoAQAAAE4oAQAAAFLGAAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UuwAAABKDwAAcwIAAAAAAWMBAAAAAQAAAAEAAABDAAAAcwQAAABkAQBTKAIAAABOUnIAAAAoAAAAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKmAAAATQ8AAHMCAAAAAAEoBQAAAFKPAAAAUpAAAABS7AAAAFI+AQAAUqYAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UqgCAABJDwAAcwYAAAAGAQkCBgFjAAAAAAAAAAACAAAAQgAAAHMvAAAAZQAAWgEAZAAAWgIAZQMAZAEAhAEAWgQAZQUAZAIAhAEAWgYAZAMAhAAAWgcAUlMoBAAAAHNhAwAACiAgICBPcHRpb25hbCBtYXRjaGluZyBvZiB0aGUgZ2l2ZW4gZXhwcmVzc2lvbi4KCiAgICBQYXJhbWV0ZXJzOgogICAgIC0gZXhwciAtIGV4cHJlc3Npb24gdGhhdCBtdXN0IG1hdGNoIHplcm8gb3IgbW9yZSB0aW1lcwogICAgIC0gZGVmYXVsdCAob3B0aW9uYWwpIC0gdmFsdWUgdG8gYmUgcmV0dXJuZWQgaWYgdGhlIG9wdGlvbmFsIGV4cHJlc3Npb24gaXMgbm90IGZvdW5kLgoKICAgIEV4YW1wbGU6OgogICAgICAgICMgVVMgcG9zdGFsIGNvZGUgY2FuIGJlIGEgNS1kaWdpdCB6aXAsIHBsdXMgb3B0aW9uYWwgNC1kaWdpdCBxdWFsaWZpZXIKICAgICAgICB6aXAgPSBDb21iaW5lKFdvcmQobnVtcywgZXhhY3Q9NSkgKyBPcHRpb25hbCgnLScgKyBXb3JkKG51bXMsIGV4YWN0PTQpKSkKICAgICAgICB6aXAucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgdHJhZGl0aW9uYWwgWklQIGNvZGUKICAgICAgICAgICAgMTIzNDUKICAgICAgICAgICAgCiAgICAgICAgICAgICMgWklQKzQgZm9ybQogICAgICAgICAgICAxMjEwMS0wMDAxCiAgICAgICAgICAgIAogICAgICAgICAgICAjIGludmFsaWQgWklQCiAgICAgICAgICAgIDk4NzY1LQogICAgICAgICAgICAnJycpCiAgICBwcmludHM6OgogICAgICAgICMgdHJhZGl0aW9uYWwgWklQIGNvZGUKICAgICAgICAxMjM0NQogICAgICAgIFsnMTIzNDUnXQoKICAgICAgICAjIFpJUCs0IGZvcm0KICAgICAgICAxMjEwMS0wMDAxCiAgICAgICAgWycxMjEwMS0wMDAxJ10KCiAgICAgICAgIyBpbnZhbGlkIFpJUAogICAgICAgIDk4NzY1LQogICAgICAgICAgICAgXgogICAgICAgIEZBSUw6IEV4cGVjdGVkIGVuZCBvZiB0ZXh0IChhdCBjaGFyIDUpLCAobGluZToxLCBjb2w6NikKICAgIGMDAAAAAwAAAAQAAABDAAAAc0EAAAB0AAB0AQB8AACDAgBqAgB8AQBkAQB0AwCDAQEBfAAAagQAagUAfAAAXwUAfAIAfAAAXwYAdAcAfAAAXwgAZAAAUygCAAAATlJ/AQAAKAkAAABSCwIAAFIZAAAAUp4AAABSxgAAAFJGAQAAUm8BAABSAQEAAFK/AAAAUnMBAAAoAwAAAFKcAAAAUkYBAABS+wAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAAB0DwAAcwgAAAAAARwBDwEJAWMEAAAABQAAAAYAAABDAAAAc6QAAAB5KAB8AABqAABqAQB8AQB8AgB8AwBkAQB0AgCDAwFcAgB9AgB9BABXbm8ABHQDAHQEAGYCAGsKAHKZAAEBAXwAAGoFAHQGAGsJAHKQAHwAAGoAAGoHAHKBAHQIAHwAAGoFAGcBAIMBAH0EAHwAAGoFAHwEAHwAAGoAAGoHADxxlgB8AABqBQBnAQB9BABxmgBnAAB9BABuAQBYfAIAfAQAZgIAUygCAAAATlKLAQAAKAkAAABSRgEAAFKPAQAAUsYAAABSHQAAAFLVAAAAUgEBAAB0EwAAAF9vcHRpb25hbE5vdE1hdGNoZWRSbgEAAFIgAAAAKAUAAABSnAAAAFJFAQAAUpYAAABSigEAAFKpAQAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSowEAAHoPAABzFAAAAAABAwEoARMBDwEMARIBFgIPAgoBYwEAAAABAAAAAwAAAEMAAABzSQAAAHQAAHwAAGQBAIMCAHIWAHwAAGoBAFN8AABqAgBkAABrCAByQgBkAgB0BAB8AABqBQCDAQAXZAMAF3wAAF8CAG4AAHwAAGoCAFMoBAAAAE5SwgAAAFIUAQAAUhUBAAAoBgAAAFLxAAAAUsIAAABSbQEAAFKXAAAAUn8AAABSRgEAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKmAAAAiA8AAHMKAAAAAAEPAQcCDwEdAigIAAAAUo8AAABSkAAAAFKxAAAAUqkCAABSngAAAFK/AAAAUqMBAABSpgAAACgAAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSGQAAAFEPAABzCAAAAAYiBgEMBgwOYwAAAAAAAAAABAAAAEIAAABzLAAAAGUAAFoBAGQAAFoCAGUDAGQDAGQDAGQBAIQDAFoFAGUGAGQCAIQBAFoHAFJTKAQAAABz/wkAAAogICAgVG9rZW4gZm9yIHNraXBwaW5nIG92ZXIgYWxsIHVuZGVmaW5lZCB0ZXh0IHVudGlsIHRoZSBtYXRjaGVkIGV4cHJlc3Npb24gaXMgZm91bmQuCgogICAgUGFyYW1ldGVyczoKICAgICAtIGV4cHIgLSB0YXJnZXQgZXhwcmVzc2lvbiBtYXJraW5nIHRoZSBlbmQgb2YgdGhlIGRhdGEgdG8gYmUgc2tpcHBlZAogICAgIC0gaW5jbHVkZSAtIChkZWZhdWx0PUN7RmFsc2V9KSBpZiBUcnVlLCB0aGUgdGFyZ2V0IGV4cHJlc3Npb24gaXMgYWxzbyBwYXJzZWQgCiAgICAgICAgICAodGhlIHNraXBwZWQgdGV4dCBhbmQgdGFyZ2V0IGV4cHJlc3Npb24gYXJlIHJldHVybmVkIGFzIGEgMi1lbGVtZW50IGxpc3QpLgogICAgIC0gaWdub3JlIC0gKGRlZmF1bHQ9Q3tOb25lfSkgdXNlZCB0byBkZWZpbmUgZ3JhbW1hcnMgKHR5cGljYWxseSBxdW90ZWQgc3RyaW5ncyBhbmQgCiAgICAgICAgICBjb21tZW50cykgdGhhdCBtaWdodCBjb250YWluIGZhbHNlIG1hdGNoZXMgdG8gdGhlIHRhcmdldCBleHByZXNzaW9uCiAgICAgLSBmYWlsT24gLSAoZGVmYXVsdD1De05vbmV9KSBkZWZpbmUgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90IGFsbG93ZWQgdG8gYmUgCiAgICAgICAgICBpbmNsdWRlZCBpbiB0aGUgc2tpcHBlZCB0ZXN0OyBpZiBmb3VuZCBiZWZvcmUgdGhlIHRhcmdldCBleHByZXNzaW9uIGlzIGZvdW5kLCAKICAgICAgICAgIHRoZSBTa2lwVG8gaXMgbm90IGEgbWF0Y2gKCiAgICBFeGFtcGxlOjoKICAgICAgICByZXBvcnQgPSAnJycKICAgICAgICAgICAgT3V0c3RhbmRpbmcgSXNzdWVzIFJlcG9ydCAtIDEgSmFuIDIwMDAKCiAgICAgICAgICAgICAgICMgfCBTZXZlcml0eSB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIERheXMgT3BlbgogICAgICAgICAgICAtLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KICAgICAgICAgICAgIDEwMSB8IENyaXRpY2FsIHwgSW50ZXJtaXR0ZW50IHN5c3RlbSBjcmFzaCAgICAgICAgICAgICAgICAgfCAgICAgICAgICA2CiAgICAgICAgICAgICAgOTQgfCBDb3NtZXRpYyB8IFNwZWxsaW5nIGVycm9yIG9uIExvZ2luICgnbG9nfG4nKSAgICAgICAgIHwgICAgICAgICAxNAogICAgICAgICAgICAgIDc5IHwgTWlub3IgICAgfCBTeXN0ZW0gc2xvdyB3aGVuIHJ1bm5pbmcgdG9vIG1hbnkgcmVwb3J0cyB8ICAgICAgICAgNDcKICAgICAgICAgICAgJycnCiAgICAgICAgaW50ZWdlciA9IFdvcmQobnVtcykKICAgICAgICBTRVAgPSBTdXBwcmVzcygnfCcpCiAgICAgICAgIyB1c2UgU2tpcFRvIHRvIHNpbXBseSBtYXRjaCBldmVyeXRoaW5nIHVwIHVudGlsIHRoZSBuZXh0IFNFUAogICAgICAgICMgLSBpZ25vcmUgcXVvdGVkIHN0cmluZ3MsIHNvIHRoYXQgYSAnfCcgY2hhcmFjdGVyIGluc2lkZSBhIHF1b3RlZCBzdHJpbmcgZG9lcyBub3QgbWF0Y2gKICAgICAgICAjIC0gcGFyc2UgYWN0aW9uIHdpbGwgY2FsbCB0b2tlbi5zdHJpcCgpIGZvciBlYWNoIG1hdGNoZWQgdG9rZW4sIGkuZS4sIHRoZSBkZXNjcmlwdGlvbiBib2R5CiAgICAgICAgc3RyaW5nX2RhdGEgPSBTa2lwVG8oU0VQLCBpZ25vcmU9cXVvdGVkU3RyaW5nKQogICAgICAgIHN0cmluZ19kYXRhLnNldFBhcnNlQWN0aW9uKHRva2VuTWFwKHN0ci5zdHJpcCkpCiAgICAgICAgdGlja2V0X2V4cHIgPSAoaW50ZWdlcigiaXNzdWVfbnVtIikgKyBTRVAgCiAgICAgICAgICAgICAgICAgICAgICArIHN0cmluZ19kYXRhKCJzZXYiKSArIFNFUCAKICAgICAgICAgICAgICAgICAgICAgICsgc3RyaW5nX2RhdGEoImRlc2MiKSArIFNFUCAKICAgICAgICAgICAgICAgICAgICAgICsgaW50ZWdlcigiZGF5c19vcGVuIikpCiAgICAgICAgCiAgICAgICAgZm9yIHRrdCBpbiB0aWNrZXRfZXhwci5zZWFyY2hTdHJpbmcocmVwb3J0KToKICAgICAgICAgICAgcHJpbnQgdGt0LmR1bXAoKQogICAgcHJpbnRzOjoKICAgICAgICBbJzEwMScsICdDcml0aWNhbCcsICdJbnRlcm1pdHRlbnQgc3lzdGVtIGNyYXNoJywgJzYnXQogICAgICAgIC0gZGF5c19vcGVuOiA2CiAgICAgICAgLSBkZXNjOiBJbnRlcm1pdHRlbnQgc3lzdGVtIGNyYXNoCiAgICAgICAgLSBpc3N1ZV9udW06IDEwMQogICAgICAgIC0gc2V2OiBDcml0aWNhbAogICAgICAgIFsnOTQnLCAnQ29zbWV0aWMnLCAiU3BlbGxpbmcgZXJyb3Igb24gTG9naW4gKCdsb2d8bicpIiwgJzE0J10KICAgICAgICAtIGRheXNfb3BlbjogMTQKICAgICAgICAtIGRlc2M6IFNwZWxsaW5nIGVycm9yIG9uIExvZ2luICgnbG9nfG4nKQogICAgICAgIC0gaXNzdWVfbnVtOiA5NAogICAgICAgIC0gc2V2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dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSJgAAAJEPAABzBgAAAAY2BgESDWMAAAAAAAAAAAIAAABCAAAAc1wAAABlAABaAQBkAABaAgBkCQBkAQCEAQBaBABkAgCEAABaBQBkAwCEAABaBgBkBACEAABaBwBkBQCEAABaCABnAABkBgCEAQBaCQBkBwCEAABaCgBkCACEAABaCwBSUygKAAAAc0sDAAAKICAgIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgYW4gZXhwcmVzc2lvbiB0byBiZSBkZWZpbmVkIGxhdGVyIC0KICAgIHVzZWQgZm9yIHJlY3Vyc2l2ZSBncmFtbWFycywgc3VjaCBhcyBhbGdlYnJhaWMgaW5maXggbm90YXRpb24uCiAgICBXaGVuIHRoZSBleHByZXNzaW9uIGlzIGtub3duLCBpdCBpcyBhc3NpZ25lZCB0byB0aGUgQ3tGb3J3YXJkfSB2YXJpYWJsZSB1c2luZyB0aGUgJzw8JyBvcGVyYXRvci4KCiAgICBOb3RlOiB0YWtlIGNhcmUgd2hlbiBhc3NpZ25pbmcgdG8gQ3tGb3J3YXJkfSBub3QgdG8gb3Zlcmxvb2sgcHJlY2VkZW5jZSBvZiBvcGVyYXRvcnMuCiAgICBTcGVjaWZpY2FsbHksICd8JyBoYXMgYSBsb3dlciBwcmVjZWRlbmNlIHRoYW4gJzw8Jywgc28gdGhhdDo6CiAgICAgICAgZndkRXhwciA8PCBhIHwgYiB8IGMKICAgIHdpbGwgYWN0dWFsbHkgYmUgZXZhbHVhdGVkIGFzOjoKICAgICAgICAoZndkRXhwciA8PCBhKSB8IGIgfCBjCiAgICB0aGVyZWJ5IGxlYXZpbmcgYiBhbmQgYyBvdXQgYXMgcGFyc2VhYmxlIGFsdGVybmF0aXZlcy4gIEl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91CiAgICBleHBsaWNpdGx5IGdyb3VwIHRoZSB2YWx1ZXMgaW5zZXJ0ZWQgaW50byB0aGUgQ3tGb3J3YXJkfTo6CiAgICAgICAgZndkRXhwciA8PCAoYSB8IGIgfCBjKQogICAgQ29udmVydGluZyB0byB1c2UgdGhlICc8PD0nIG9wZXJhdG9yIGluc3RlYWQgd2lsbCBhdm9pZCB0aGlzIHByb2JsZW0uCgogICAgU2VlIEx7UGFyc2VSZXN1bHRzLnBwcmludH0gZm9yIGFuIGV4YW1wbGUgb2YgYSByZWN1cnNpdmUgcGFyc2VyIGNyZWF0ZWQgdXNpbmcKICAgIEN7Rm9yd2FyZH0uCiAgICBjAgAAAAIAAAAEAAAAQwAAAHMgAAAAdAAAdAEAfAAAgwIAagIAfAEAZAEAdAMAgwEBAWQAAFMoAgAAAE5SfwEAACgEAAAAUgsCAABSDQAAAFKeAAAAUsYAAAAoAgAAAFKcAAAAUgkBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAAFxAAAHMCAAAAAAFjAgAAAAIAAAADAAAAQwAAAHOcAAAAdAAAfAEAdAEAgwIAciEAdAIAagMAfAEAgwEAfQEAbgAAfAEAfAAAXwQAZAAAfAAAXwYAfAAAagQAagcAfAAAXwcAfAAAagQAaggAfAAAXwgAfAAAagkAfAAAagQAagoAgwEAAXwAAGoEAGoLAHwAAF8LAHwAAGoEAGoMAHwAAF8MAHwAAGoNAGoOAHwAAGoEAGoNAIMBAAF8AABTKAEAAABOKA8AAABScwAAAFLRAAAAUiIAAABSaQEAAFJGAQAAUpcAAABSbQEAAFJ4AQAAUnMBAABS9wEAAFJxAQAAUnABAABSbwEAAFJ1AQAAUgYBAAAoAgAAAFKcAAAAUgkBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQKAAAAX19sc2hpZnRfXxoQAABzFgAAAAABDwESAQkBCQEPAQ8BEwEPAQ8BFgFjAgAAAAIAAAACAAAAQwAAAHMIAAAAfAAAfAEAPlMoAQAAAE4oAAAAACgCAAAAUpwAAABSCQEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAsAAABfX2lsc2hpZnRfXycQAABzAgAAAAABYwEAAAABAAAAAgAAAEMAAABzDQAAAHQAAHwAAF8BAHwAAFMoAQAAAE4oAgAAAFLGAAAAUnABAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlS9gEAACoQAABzBAAAAAABCQFjAQAAAAEAAAACAAAAQwAAAHM4AAAAfAAAagAAczQAdAEAfAAAXwAAfAAAagIAZAAAawkAcjQAfAAAagIAagQAgwAAAXE0AG4AAHwAAFMoAQAAAE4oBQAAAFJ3AQAAUr8AAABSRgEAAFKXAAAAUsgBAAAoAQAAAFKcAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSyAEAAC4QAABzCgAAAAABCQEJAQ8BEwFjAgAAAAMAAAACAAAAQwAAAHNQAAAAfAAAfAEAawcAcj8AfAEAHnwAAGcBABd9AgB8AABqAABkAABrCQByPwB8AABqAABqAgB8AgCDAQABcT8AbgAAfAAAagMAZwAAgwEAAWQAAFMoAQAAAE4oBAAAAFJGAQAAUpcAAABSAgIAAFIAAgAAKAMAAABSnAAAAFIBAgAAUnkCAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVICAgAANRAAAHMKAAAAAAEMAQ4BDwEWAWMBAAAAAgAAAAUAAABDAAAAc4YAAAB0AAB8AABkAQCDAgByFgB8AABqAQBTfAAAagIAagMAZAIAF1N8AABqAgB8AABfBAB0BQB8AABfAgB6KwB8AABqBgBkAABrCQByXQB0CAB8AABqBgCDAQB9AQBuBgBkAwB9AQBXZAAAfAAAagQAfAAAXwIAWHwAAGoCAGoDAGQEABd8AQAXUygFAAAATlLCAAAAcwUAAAA6IC4uLlKXAAAAcwIAAAA6ICgJAAAAUvEAAABSwgAAAFJeAQAAUo8AAAB0DAAAAF9yZXZlcnRDbGFzc3QRAAAAX0ZvcndhcmROb1JlY3Vyc2VSRgEAAFKXAAAAUn8AAAAoAgAAAFKcAAAAdAkAAAByZXRTdHJpbmcoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKmAAAAPBAAAHMWAAAAAAEPAQcBDgMMAQkBAwEPARICCgINAWMBAAAAAgAAAAMAAABDAAAAcz0AAAB8AABqAABkAABrCQByIgB0AgB0AwB8AACDAgBqBACDAABTdAMAgwAAfQEAfAEAfAAAS30BAHwBAFNkAABTKAEAAABOKAUAAABSRgEAAFKXAAAAUgsCAABSDQAAAFLSAAAAKAIAAABSnAAAAFJ9AAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlS0gAAAE0QAABzCgAAAAABDwETAgkBCgFOKAwAAABSjwAAAFKQAAAAUrEAAABSlwAAAFKeAAAAUrQCAABStQIAAFL2AQAAUsgBAABSAgIAAFKmAAAAUtIAAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Ug0AAAAEEAAAcxIAAAAGEgYBDAMJDQkDCQQJBwwHCRFStwIAAGMAAAAAAAAAAAEAAABCAAAAcxEAAABlAABaAQBkAACEAABaAgBSUygBAAAAYwEAAAABAAAAAQAAAEMAAABzBAAAAGQBAFMoAgAAAE5zAwAAAC4uLigAAAAAKAEAAABSnAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UqYAAABWEAAAcwIAAAAAASgDAAAAUo8AAABSkAAAAFKmAAAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVK3AgAAVRAAAHMCAAAABgFjAAAAAAAAAAACAAAAQgAAAHMaAAAAZQAAWgEAZAAAWgIAZQMAZAEAhAEAWgQAUlMoAgAAAHNRAAAACiAgICBBYnN0cmFjdCBzdWJjbGFzcyBvZiBDe1BhcnNlRXhwcmVzc2lvbn0sIGZvciBjb252ZXJ0aW5nIHBhcnNlZCByZXN1bHRzLgogICAgYwMAAAADAAAAAwAAAEMAAABzIwAAAHQAAHQBAHwAAIMCAGoCAHwBAIMBAAF0AwB8AABfBABkAABTKAEAAABOKAUAAABSCwIAAFIrAAAAUp4AAABSxgAAAFJvAQAAKAMAAABSnAAAAFJGAQAAUn8BAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKeAAAAXRAAAHMEAAAAAAEWASgFAAAAUo8AAABSkAAAAFKxAAAAUsYAAABSngAAACgAAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSKwAAAFkQAABzBAAAAAYDBgFjAAAAAAAAAAADAAAAQgAAAHMvAAAAZQAAWgEAZAAAWgIAZAEAZQMAZAIAhAIAWgQAZAMAhAAAWgUAZAQAhAAAWgYAUlMoBQAAAHPUAgAACiAgICBDb252ZXJ0ZXIgdG8gY29uY2F0ZW5hdGUgYWxsIG1hdGNoaW5nIHRva2VucyB0byBhIHNpbmdsZSBzdHJpbmcuCiAgICBCeSBkZWZhdWx0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ZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAACbEAAAcwQAAAAAARYBYwQAAAAEAAAAAQAAAEMAAABzBwAAAHwDAGcBAFMoAQAAAE4oAAAAACgEAAAAUpwAAABSRQEAAFKWAAAAUqQBAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVKlAQAAnxAAAHMCAAAAAAEoBQAAAFKPAAAAUpAAAABSsQAAAFKeAAAAUqUBAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Ug8AAACNEAAAcwYAAAAGDQYBCQRjAAAAAAAAAAABAAAAQgAAAHMgAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAZAIAhAAAWgQAUlMoAwAAAHNXBgAACiAgICBDb252ZXJ0ZXIgdG8gcmV0dXJuIGEgcmVwZXRpdGl2ZSBleHByZXNzaW9uIGFzIGEgbGlzdCwgYnV0IGFsc28gYXMgYSBkaWN0aW9uYXJ5LgogICAgRWFjaCBlbGVtZW50IGNhbiBhbHNvIGJlIHJlZmVyZW5jZWQgdXNpbmcgdGhlIGZpcnN0IHRva2VuIGluIHRoZSBleHByZXNzaW9uIGFzIGl0cyBrZXkuCiAgICBVc2VmdWwgZm9yIHRhYnVsYXIgcmVwb3J0IHNjcmFwaW5nIHdoZW4gdGhlIGZpcnN0IGNvbHVtbiBjYW4gYmUgdXNlZCBhcyBhIGl0ZW0ga2V5LgoKICAgIEV4YW1wbGU6OgogICAgICAgIGRhdGFfd29yZCA9IFdvcmQoYWxwaGFzKQogICAgICAgIGxhYmVsID0gZGF0YV93b3JkICsgRm9sbG93ZWRCeSgnOicpCiAgICAgICAgYXR0cl9leHByID0gR3JvdXAobGFiZWwgKyBTdXBwcmVzcygnOicpICsgT25lT3JNb3JlKGRhdGFfd29yZCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQoKICAgICAgICB0ZXh0ID0gInNoYXBlOiBTUVVBUkUgcG9zbjogdXBwZXIgbGVmdCBjb2xvcjogbGlnaHQgYmx1ZSB0ZXh0dXJlOiBidXJsYXAiCiAgICAgICAgYXR0cl9leHByID0gKGxhYmVsICsgU3VwcHJlc3MoJzonKSArIE9uZU9yTW9yZShkYXRhX3dvcmQsIHN0b3BPbj1sYWJlbCkuc2V0UGFyc2VBY3Rpb24oJyAnLmpvaW4pKQogICAgICAgIAogICAgICAgICMgcHJpbnQgYXR0cmlidXRlcyBhcyBwbGFpbiBncm91cHMKICAgICAgICBwcmludChPbmVPck1vcmUoYXR0cl9leHByKS5wYXJzZVN0cmluZyh0ZXh0KS5kdW1wKCkpCiAgICAgICAgCiAgICAgICAgIyBpbnN0ZWFkIG9mIE9uZU9yTW9yZShleHByKSwgcGFyc2UgdXNpbmcgRGljdChPbmVPck1vcmUoR3JvdXAoZXhwcikpKSAtIERpY3Qgd2lsbCBhdXRvLWFzc2lnbiBuYW1lcwogICAgICAgIHJlc3VsdCA9IERpY3QoT25lT3JNb3JlKEdyb3VwKGF0dHJfZXhwcikpKS5wYXJzZVN0cmluZyh0ZXh0KQogICAgICAgIHByaW50KHJlc3VsdC5kdW1wKCkpCiAgICAgICAgCiAgICAgICAgIyBhY2Nlc3MgbmFtZWQgZmllbGRzIGFzIGRpY3QgZW50cmllcywgb3Igb3V0cHV0IGFzIGRpY3QKICAgICAgICBwcmludChyZXN1bHRbJ3NoYXBlJ10pICAgICAgICAKICAgICAgICBwcmludChyZXN1bHQuYXNEaWN0KCkpCiAg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AAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVL1AQAA+RAAAHMCAAAAAAEoBQAAAFKPAAAAUpAAAABSsQAAAFKlAQAAUvUBAAAoAAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UikAAADjEAAAcwYAAAAGEgYBCQNjAAAAAAAAAAABAAAAQgAAAHMpAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAZAIAhAAAWgQAZAMAhAAAWgUAUlMoBAAAAHNJAAAACiAgICBXcmFwcGVyIGZvciBwYXJzZSBhY3Rpb25zLCB0byBlbnN1cmUgdGhleSBhcmUgb25seSBjYWxsZWQgb25jZS4KICAgIGMCAAAAAgAAAAIAAABDAAAAcxwAAAB0AAB8AQCDAQB8AABfAQB0AgB8AABfAwBkAABTKAEAAABOKAQAAABSZQEAAHQIAAAAY2FsbGFibGVSxgAAAHQGAAAAY2FsbGVkKAIAAABSnAAAAHQKAAAAbWV0aG9kQ2FsbCgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Up4AAAABEQAAcwQAAAAAAQ8BYwQAAAAFAAAABAAAAEMAAABzQQAAAHwAAGoAAHMrAHwAAGoBAHwBAHwCAHwDAIMDAH0EAHQCAHwAAF8AAHwEAFN0AwB8AQB8AgBkAQCDAwCCAQBkAABTKAIAAABOUnIAAAAoBAAAAFLAAgAAUr8CAABSvwAAAFIdAAAAKAUAAABSnAAAAFKEAAAAUk4BAABScAAAAFI7AgAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlS9AEAAAQRAABzCgAAAAABCQEVAQkBBAFjAQAAAAEAAAACAAAAQwAAAHMNAAAAdAAAfAAAXwEAZAAAUygBAAAATigCAAAAUsYAAABSwAIAACgBAAAAUpwAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQFAAAAcmVzZXQKEQAAcwIAAAAAASgGAAAAUo8AAABSkAAAAFKxAAAAUp4AAABS9AEAAFLCAgAAKAAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVIYAAAA/RAAAHMIAAAABgMGAQkDCQZjAQAAAAIAAAAFAAAAAwAAAHNDAAAAdAAAiAAAgwEAiQAAhwAAZgEAZAEAhgAAfQEAeRAAiAAAagEAfAEAXwEAV24RAAR0AgBrCgByPgABAQFuAQBYfAEAUygCAAAAc3MDAAAKICAgIERlY29yYXRvciBmb3IgZGVidWdnaW5nIHBhcnNlIGFjdGlvbnMuIAogICAgCiAgICBXaGVuIHRoZSBwYXJzZSBhY3Rpb24gaXMgY2FsbGVkLCB0aGlzIGRlY29yYXRvciB3aWxsIHByaW50IEN7Ij4+IGVudGVyaW5nIEl7bWV0aG9kLW5hbWV9KGxpbmU6SXtjdXJyZW50X3NvdXJjZV9saW5lfSwgSXtwYXJzZV9sb2NhdGlvbn0sIEl7bWF0Y2hlZF90b2tlbnN9KSIufQogICAgV2hlbiB0aGUgcGFyc2UgYWN0aW9uIGNvbXBsZXRlcywgdGhlIGRlY29yYXRvciB3aWxsIHByaW50IEN7Ijw8In0gZm9sbG93ZWQgYnkgdGhlIHJldHVybmVkIHZhbHVlLCBvciBhbnkgZXhjZXB0aW9uIHRoYXQgdGhlIHBhcnNlIGFjdGlvbiByYWlzZWQuCgogICAgRXhhbXBsZTo6CiAgICAgICAgd2QgPSBXb3JkKGFscGhhcykKCiAgICAgICAgQHRyYWNlUGFyc2VBY3Rpb24KICAgICAgICBkZWYgcmVtb3ZlX2R1cGxpY2F0ZV9jaGFycyh0b2tlbnMpOgogICAgICAgICAgICByZXR1cm4gJycuam9pbihzb3J0ZWQoc2V0KCcnLmpvaW4odG9rZW5zKSkpCgogICAgICAgIHdkcyA9IE9uZU9yTW9yZSh3ZCkuc2V0UGFyc2VBY3Rpb24ocmVtb3ZlX2R1cGxpY2F0ZV9jaGFycykKICAgICAgICBwcmludCh3ZHMucGFyc2VTdHJpbmcoInNsa2RqcyBzbGQgc2xkZCBzZGxmIHNkbGpmIikpCiAgICBwcmludHM6OgogICAgICAgID4+ZW50ZXJpbmcgcmVtb3ZlX2R1cGxpY2F0ZV9jaGFycyhsaW5lOiAnc2xrZGpzIHNsZCBzbGRkIHNkbGYgc2RsamYnLCAwLCAoWydzbGtkanMnLCAnc2xkJywgJ3NsZGQnLCAnc2RsZicsICdzZGxqZiddLCB7fSkpCiAgICAgICAgPDxsZWF2aW5nIHJlbW92ZV9kdXBsaWNhdGVfY2hhcnMgKHJldDogJ2RmamtscycpCiAgICAgICAgWydkZmprbHMnXQogICAgYwAAAAAHAAAABgAAABcAAABz0wAAAIgAAGoAAH0BAHwAAGQBAB9cAwB9AgB9AwB9BAB0AQB8AACDAQBkAgBrBABy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AAAAZGxOYW1lKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSPgAAADkRAABzCAAAAAANLAEGASECYwIAAAADAAAABAAAAAMAAABzjQAAAHQAAIMAAIkAAIcAAIcBAGYCAGQBAIYAAH0CAHwBAGQHAGsIAHJCAHQCAHQDAIMBAGoEAGQCAIQAAIMBAH0BAG4MAHwBAGoFAIMAAH0BAHwBAGoGAGQDAIMBAAF8AQBqBwB8AgBkBAB0CACDAQEBfAEAiAAAF2oGAGQFAHQJAIgBAIMBABdkBgAXgwEAUygIAAAAczoDAAAKICAgIEhlbHBlciB0byBkZWZpbmUgYSBjb3VudGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMuCiAgICBUaGlzIGhlbHBlciBkZWZpbmVzIGEgcGF0dGVybiBvZiB0aGUgZm9ybTo6CiAgICAgICAgaW50ZWdlciBleHByIGV4cHIgZXhwci4uLgogICAgd2hlcmUgdGhlIGxlYWRpbmcgaW50ZWdlciB0ZWxscyBob3cgbWFueSBleHByIGV4cHJlc3Npb25zIGZvbGxvdy4KICAgIFRoZSBtYXRjaGVkIHRva2VucyByZXR1cm5zIHRoZSBhcnJheSBvZiBleHByIHRva2VucyBhcyBhIGxpc3QgLSB0aGUgbGVhZGluZyBjb3VudCB0b2tlbiBpcyBzdXBwcmVzc2VkLgogICAgCiAgICBJZiBDe2ludEV4cHJ9IGlzIHNwZWNpZmllZCwgaXQgc2hvdWxkIGJlIGEgcHlwYXJzaW5nIGV4cHJlc3Npb24gdGhhdCBwcm9kdWNlcyBhbiBpbnRlZ2VyIHZhbHVlLgoKICAgIEV4YW1wbGU6OgogICAgICAgIGNvdW50ZWRBcnJheShXb3JkKGFscGhhcykpLnBhcnNlU3RyaW5nKCcyIGFiIGNkIGVmJykgICMgLT4gWydhYicsICdjZCddCgogICAgICAgICMgaW4gdGhpcyBwYXJzZXIsIHRoZSBsZWFkaW5nIGludGVnZXIgdmFsdWUgaXMgZ2l2ZW4gaW4gYmluYXJ5LAogICAgICAgICMgJzEwJyBpbmRpY2F0aW5nIHRoYXQgMiB2YWx1ZXMgYXJlIGluIHRoZSBhcnJheQogICAgICAgIGJpbmFyeUNvbnN0YW50ID0gV29yZCgnMDEnKS5zZXRQYXJzZUFjdGlvbihsYW1iZGEgdDogaW50KHRbMF0sIDIpKQogICAgICAgIGNvdW50ZWRBcnJheShXb3JkKGFscGhhcyksIGludEV4cHI9YmluYXJ5Q29uc3RhbnQpLnBhcnNlU3RyaW5nKCcxMCBhYiBjZCBlZicpICAjIC0+IFsnYWInLCAnY2QnXQogICAgYwMAAAAEAAAABQAAABMAAABzOwAAAHwCAGQBABl9AwCIAAB8AwByLAB0AAB0AQCIAQBnAQB8AwAUgwEAgwEAcDUAdAAAdAIAgwEAPgFnAABTKAIAAABOaQAAAAAoAwAAAFIPAAAAUgQAAABSQQAAACgEAAAAUoQAAABSTgEAAFJwAAAAUuUBAAAoAgAAAHQJAAAAYXJyYXlFeHByUkYBAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0FQAAAGNvdW50RmllbGRQYXJzZUFjdGlvbl8RAABzBgAAAAABCgEtAWMBAAAAAQAAAAMAAABTAAAAcw4AAAB0AAB8AABkAQAZgwEAUygCAAAATmkAAAAAKAEAAABSbwAAACgBAAAAUnAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAAZBEAAFJyAAAA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AwAAAHJlcCgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQTAAAAY29weVRva2VuVG9SZXBlYXRlcoIRAABzDAAAAAABBgESAQ8DEgEbAlJ+AQAAcwcAAAAocHJldikgKAUAAABSDQAAAFKUAQAAUr8AAABSggEAAFJ/AAAAKAIAAABSRgEAAFLVAgAAKAAAAAAoAQAAAFLUAgAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJNAAAAdBEAAHMKAAAAAA0JAQ8KEwEXAWMBAAAAAwAAAAQAAAADAAAAc1wAAAB0AACDAACJAAB8AABqAQCDAAB9AQCIAAB8AQBLiQAAhwAAZgEAZAEAhgAAfQIAfAAAagIAfAIAZAIAdAMAgwEBAYgAAGoEAGQDAHQFAHwAAIMBABeDAQABiAAAUygEAAAAc1MCAAAKICAgIEhlbHBlciB0byBkZWZpbmUgYW4gZXhwcmVzc2lvbiB0aGF0IGlzIGluZGlyZWN0bHkgZGVmaW5lZCBmcm9tCiAgICB0aGUgdG9rZW5zIG1hdGNoZWQgaW4gYSBwcmV2aW91cyBleHByZXNzaW9uLCB0aGF0IGlzLCBpdCBsb29rcwogICAgZm9yIGEgJ3JlcGVhdCcgb2YgYSBwcmV2aW91cyBleHByZXNzaW9uLiAgRm9yIGV4YW1wbGU6OgogICAgICAgIGZpcnN0ID0gV29yZChudW1zKQogICAgICAgIHNlY29uZCA9IG1hdGNoUHJldmlvdXNFeHByKGZpcnN0KQogICAgICAgIG1hdGNoRXhwciA9IGZpcnN0ICsgIjoiICsgc2Vjb25kCiAgICB3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bGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAAzREAAFJyAAAAYwIAAAACAAAAAgAAAFMAAABzCgAAAHwAAHwBAGsCAFMoAQAAAE4oAAAAACgCAAAAUgsBAABS2wIAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAADQEQAAUnIAAABjAgAAAAIAAAACAAAAUwAAAHMNAAAAfAEAagAAfAAAgwEAUygBAAAATigBAAAAUikCAAAoAgAAAFILAQAAUtsCAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAA0REAAFJyAAAAczYAAABJbnZhbGlkIGFyZ3VtZW50IHRvIG9uZU9mLCBleHBlY3RlZCBzdHJpbmcgb3IgaXRlcmFibGVS3gEAAGkCAAAAaQAAAABpAQAAAFJyAAAAcwQAAABbJXNdYwEAAAACAAAAAwAAAHMAAABzGwAAAHwAAF0RAH0BAHQAAHwBAIMBAFYBcQMAZAAAUygBAAAATigBAAAAUkUCAAAoAgAAAFKAAAAAdAMAAABzeW0oAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXMJAAAAPGdlbmV4cHI+8hEAAHMCAAAABgBzAwAAACB8IHQBAAAAfGMBAAAAAgAAAAMAAABzAAAAcx4AAAB8AABdFAB9AQB0AABqAQB8AQCDAQBWAXEDAGQAAFMoAQAAAE4oAgAAAFJ8AQAAUkcCAAAoAgAAAFKAAAAAUtwCAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXMJAAAAPGdlbmV4cHI+9BEAAHMCAAAABgBzNwAAAEV4Y2VwdGlvbiBjcmVhdGluZyBSZWdleCBmb3Igb25lT2YsIGJ1aWxkaW5nIE1hdGNoRmlyc3RjAQAAAAIAAAADAAAAMwAAAHMbAAAAfAAAXREAfQEAiAAAfAEAgwEAVgFxAwBkAABTKAEAAABOKAAAAAAoAgAAAFKAAAAAUtwCAAAoAQAAAHQRAAAAcGFyc2VFbGVtZW50Q2xhc3MoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlzCQAAADxnZW5leHByPvsRAABzAgAAAAYAKBQAAABSBgAAAFITAAAAUnMAAABS0QAAAFKFAAAAUrsBAABSdwIAAFLMAAAAUt8BAABS4AEAAFLhAQAAUhUAAABS3QAAAFLiAAAAUgIBAABSqAAAAFIlAAAAUoIBAABSYQEAAFIUAAAAKAoAAAB0BAAAAHN0cnNSKwIAAHQIAAAAdXNlUmVnZXh0BwAAAGlzZXF1YWx0BQAAAG1hc2tzdAcAAABzeW1ib2xzUrkAAAB0AwAAAGN1clLmAAAAUgkBAAAoAAAAACgBAAAAUt4CAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UlEAAAC0EQAAc0wAAAAAFwYBCQEJAQkCCQEJAQYCBgEPAQ8BEgEPAgkBDQEGAQcCBgEZAQoBIQEPAQ8BBAEPAQ8BEAEGAQgCDgINAgMBIQEzAjMBDQEJARQEYwIAAAACAAAABQAAAEMAAABzGgAAAHQAAHQBAHQCAHwAAHwBABeDAQCDAQCDAQBTKAEAAABz3AUAAAogICAgSGVscGVyIHRvIGVhc2lseSBhbmQgY2xlYXJseSBkZWZpbmUgYSBkaWN0aW9uYXJ5IGJ5IHNwZWNpZnlpbmcgdGhlIHJlc3BlY3RpdmUgcGF0dGVybnMKICAgIGZvciB0aGUga2V5IGFuZCB2YWx1ZS4gIFRha2VzIGNhcmUgb2YgZGVmaW5pbmcgdGhlIEN7THtEaWN0fX0sIEN7THtaZXJvT3JNb3JlfX0sIGFuZCBDe0x7R3JvdXB9fSB0b2tlbnMKICAgIGluIHRoZSBwcm9wZXIgb3JkZXIuICBUaGUga2V5IHBhdHRlcm4gY2FuIGluY2x1ZGUgZGVsaW1pdGluZyBtYXJrZXJzIG9yIHB1bmN0dWF0aW9uLAogICAgYXMgbG9uZyBhcyB0aGV5IGFyZSBzdXBwcmVzc2VkLCB0aGVyZWJ5IGxlYXZpbmcgdGhlIHNpZ25pZmljYW50IGtleSB0ZXh0LiAgVGhlIHZhbHVlCiAgICBwYXR0ZXJuIGNhbiBpbmNsdWRlIG5hbWVkIHJlc3VsdHMsIHNvIHRoYXQgdGhlIEN7RGljdH0gcmVzdWx0cyBjYW4gaW5jbHVkZSBuYW1lZCB0b2tlbgogICAgZmllbGRzLgoKICAgIEV4YW1wbGU6OgogICAgICAgIHRleHQgPSAic2hhcGU6IFNRVUFSRSBwb3NuOiB1cHBlciBsZWZ0IGNvbG9yOiBsaWdodCBibHVlIHRleHR1cmU6IGJ1cmxhcCIKICAgICAgICBhdHRyX2V4cHIgPSAobGFiZWwgKyBTdXBwcmVzcygnOicpICsgT25lT3JNb3JlKGRhdGFfd29yZCwgc3RvcE9uPWxhYmVsKS5zZXRQYXJzZUFjdGlvbignICcuam9pbikpCiAgICAgICAgcHJpbnQoT25lT3JNb3JlKGF0dHJfZXhwcikucGFyc2VTdHJpbmcodGV4dCkuZHVtcCgpKQogICAgICAgIAogICAgICAgIGF0dHJfbGFiZWwgPSBsYWJlbAogICAgICAgIGF0dHJfdmFsdWUgPSBTdXBwcmVzcygnOicpICsgT25lT3JNb3JlKGRhdGFfd29yZCwgc3RvcE9uPWxhYmVsKS5zZXRQYXJzZUFjdGlvbignICcuam9pbikKCiAgICAgICAgIyBzaW1pbGFyIHRvIERpY3QsIGJ1dCBzaW1wbGVyIGNhbGwgZm9ybWF0CiAgICAgICAgcmVzdWx0ID0gZGljdE9mKGF0dHJfbGFiZWwsIGF0dHJfdmFsdWUpLnBhcnNlU3RyaW5nKHRleHQpCiAgICAgICAgcHJpbnQocmVzdWx0LmR1bXAoKSkKICAgICAgICBwcmludChyZXN1bHRbJ3NoYXBlJ10pCiAgICAgICAgcHJpbnQocmVzdWx0LnNoYXBlKSAgIyBvYmplY3QgYXR0cmlidXRlIGFjY2VzcyB3b3JrcyB0b28KICAgICAgICBwcmludChyZXN1bHQuYXNEaWN0KCkpCiAgICBwcmludHM6OgogICAgICAgIFtbJ3NoYXBlJywgJ1NRVUFSRSddLCBbJ3Bvc24nLCAndXBwZXIgbGVmdCddLCBbJ2NvbG9yJywgJ2xpZ2h0IGJsdWUnXSwgWyd0ZXh0dXJlJywgJ2J1cmxhcCddXQogICAgICAgIC0gY29sb3I6IGxpZ2h0IGJsdWUKICAgICAgICAtIHBvc246IHVwcGVyIGxlZnQKICAgICAgICAtIHNoYXBlOiBTUVVBUkUKICAgICAgICAtIHRleHR1cmU6IGJ1cmxhcAogICAgICAgIFNRVUFSRQogICAgICAgIFNRVUFSRQogICAgICAgIHsnY29sb3InOiAnbGlnaHQgYmx1ZScsICdzaGFwZSc6ICdTUVVBUkUnLCAncG9zbic6ICd1cHBlciBsZWZ0JywgJ3RleHR1cmUnOiAnYnVybGFwJ30KICAgICgDAAAAUgkAAABSMAAAAFIPAAAAKAIAAABSAAEAAFLnAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSPwAAAP0RAABzAgAAAAAhYwIAAAAGAAAAAwAAAEMAAABzfAAAAHQAAIMAAGoBAGQBAIQAAIMBAH0CAHwCAGoCAIMAAH0DAHQDAHwDAF8EAHwCAGQCAIMBAHwAABd8AwBkAwCDAQAXfQQAfAEAclYAZAQAhAAAfQUAbgkAZAUAhAAAfQUAfAQAagEAfAUAgwEAAXwAAGoFAHwEAF8FAHwEAFMoBgAAAHONBAAACiAgICBIZWxwZXIgdG8gcmV0dXJuIHRoZSBvcmlnaW5hbCwgdW50b2tlbml6ZWQgdGV4dCBmb3IgYSBnaXZlbiBleHByZXNzaW9uLiAgVXNlZnVsIHRvCiAgICByZXN0b3JlIHRoZSBwYXJzZWQgZmllbGRzIG9mIGFuIEhUTUwgc3RhcnQgdGFnIGludG8gdGhlIHJhdyB0YWcgdGV4dCBpdHNlbGYsIG9yIHRvCiAgICByZXZlcnQgc2VwYXJhdGUgdG9rZW5zIHdpdGggaW50ZXJ2ZW5pbmcgd2hpdGVzcGFjZSBiYWNrIHRvIHRoZSBvcmlnaW5hbCBtYXRjaGluZwogICAgaW5wdXQgdGV4dC4gQnkgZGVmYXVsdCwgcmV0dXJucyBhc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIHBhcnNlZCB0ZXh0LiAgCiAgICAgICAKICAgIElmIHRoZSBvcHRpb25hbCBDe2FzU3RyaW5nfSBhcmd1bWVudCBpcyBwYXNzZWQgYXMgQ3tGYWxzZX0sIHRoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyBhIAogICAgQ3tMe1BhcnNlUmVzdWx0c319IGNvbnRhaW5pbmcgYW55IHJlc3VsdHMgbmFtZXMgdGhhdCB3ZXJlIG9yaWdpbmFsbHkgbWF0Y2hlZCwgYW5kIGEgCiAgICBzaW5nbGUgdG9rZW4gY29udGFpbmluZyB0aGUgb3JpZ2luYWwgbWF0Y2hlZCB0ZXh0IGZyb20gdGhlIGlucHV0IHN0cmluZy4gIFNvIGlmIAogICAgdGhlIGV4cHJlc3Npb24gcGFzc2VkIHRvIEN7THtvcmlnaW5hbFRleHRGb3J9fSBjb250YWlucyBleHByZXNzaW9ucyB3aXRoIGRlZmluZWQKICAgIHJlc3VsdHMgbmFtZXMsIHlvdSBtdXN0IHNldCBDe2FzU3RyaW5nfSB0byBDe0ZhbHNlfSBpZiB5b3Ugd2FudCB0byBwcmVzZXJ2ZSB0aG9zZQogICAgcmVzdWx0cyBuYW1lIHZhbHVlcy4KCiAgICBFeGFtcGxlOjoKICAgICAgICBzcmMgPSAidGhpcyBpcyB0ZXN0IDxiPiBib2xkIDxpPnRleHQ8L2k+IDwvYj4gbm9ybWFsIHRleHQgIgogICAgICAgIGZvciB0YWcgaW4gKCJiIiwiaSIpOgogICAgICAgICAgICBvcGVuZXIsY2xvc2VyID0gbWFrZUhUTUxUYWdzKHRhZykKICAgICAgICAgICAgcGF0dCA9IG9yaWdpbmFsVGV4dEZvcihvcGVuZXIgKyBTa2lwVG8oY2xvc2VyKSArIGNsb3NlcikKICAgICAgICAgICAgcHJpbnQocGF0dC5zZWFyY2hTdHJpbmcoc3JjKVswXSkKICAgIHByaW50czo6CiAgICAgICAgWyc8Yj4gYm9sZCA8aT50ZXh0PC9pPiA8L2I+J10KICAgICAgICBbJzxpPnRleHQ8L2k+J10KICAgIGMDAAAAAwAAAAEAAABTAAAAcwQAAAB8AQBTKAEAAABOKAAAAAAoAwAAAFKEAAAAUpYAAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAAA4EgAAUnIAAAB0DwAAAF9vcmlnaW5hbF9zdGFydHQNAAAAX29yaWdpbmFsX2VuZGMDAAAAAwAAAAMAAABTAAAAcxEAAAB8AAB8AgBqAAB8AgBqAQAhUygBAAAATigCAAAAUuUCAABS5gIAACgDAAAAUoQAAABSTgEAAFJwAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlScQAAAD0SAABScgAAAGMDAAAAAwAAAAQAAABTAAAAcycAAAB8AAB8AgBqAABkAQCDAQB8AgBqAABkAgCDAQAhZwEAfAIAKGQAAFMoAwAAAE5S5QIAAFLmAgAAKAEAAABS/wAAACgDAAAAUoQAAABSTgEAAFJwAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CwAAAGV4dHJhY3RUZXh0PxIAAHMCAAAAAAEoBgAAAFILAAAAUnoAAABS0gAAAFLGAAAAUn0BAABSdQEAACgGAAAAUkYBAAB0CAAAAGFzU3RyaW5ndAkAAABsb2NNYXJrZXJ0DAAAAGVuZGxvY01hcmtlcnQJAAAAbWF0Y2hFeHByUucCAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJlAAAAIBIAAHMUAAAAABgVAQwBCQEaAQYBDAIJAg0BDAFjAQAAAAEAAAACAAAAQwAAAHMWAAAAdAAAfAAAgwEAagEAZAEAhAAAgwEAUygCAAAAc3AAAAAKICAgIEhlbHBlciB0byB1bmRvIHB5cGFyc2luZydzIGRlZmF1bHQgZ3JvdXBpbmcgb2YgQW5kIGV4cHJlc3Npb25zLCBldmVuCiAgICBpZiBhbGwgYnV0IG9uZSBhcmUgbm9uLWVtcHR5LgogICAgYwEAAAABAAAAAgAAAFMAAABzCAAAAHwAAGQBABlTKAIAAABOaQAAAAAoAAAAACgBAAAAUnAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAAShIAAFJyAAAAKAIAAABSKwAAAFJ6AAAAKAEAAABSRgEAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UmYAAABFEgAAcwIAAAAABWMBAAAAAgAAAAQAAABDAAAAc0UAAAB0AACDAABqAQBkAQCEAACDAQB9AQB0AgB8AQBkAgCDAQB8AABkAwCDAQAXfAEAagMAgwAAagQAgwAAZAQAgwEAF4MBAFMoBQAAAHOpAgAACiAgICBIZWxwZXIgdG8gZGVjb3JhdGUgYSByZXR1cm5lZCB0b2tlbiB3aXRoIGl0cyBzdGFydGluZyBhbmQgZW5kaW5nIGxvY2F0aW9ucyBpbiB0aGUgaW5wdXQgc3RyaW5nLgogICAgVGhpcyBoZWxwZXIgYWRkcyB0aGUgZm9sbG93aW5nIHJlc3VsdHMgbmFtZXM6CiAgICAgLSBsb2NuX3N0YXJ0ID0gbG9jYXRpb24gd2hlcmUgbWF0Y2hlZCBleHByZXNzaW9uIGJlZ2lucwogICAgIC0gbG9jbl9lbmQgPSBsb2NhdGlvbiB3aGVyZSBtYXRjaGVkIGV4cHJlc3Npb24gZW5kcwogICAgIC0gdmFsdWUgPSB0aGUgYWN0dWFsIHBhcnNlZCByZXN1bHRzCgogICAgQmUgY2FyZWZ1bCBpZiB0aGUgaW5wdXQgdGV4dCBjb250YWlucyBDezxUQUI+fSBjaGFyYWN0ZXJzLCB5b3UgbWF5IHdhbnQgdG8gY2FsbAogICAgQ3tMe1BhcnNlckVsZW1lbnQucGFyc2VXaXRoVGFic319CgogICAgRXhhbXBsZTo6CiAgICAgICAgd2QgPSBXb3JkKGFscGhhcykKICAgICAgICBmb3IgbWF0Y2ggaW4gbG9jYXRlZEV4cHIod2QpLnNlYXJjaFN0cmluZygibGpzZGYxMjNsa3NkampmMTIzbGtramoxMjIyIik6CiAgICAgICAgICAgIHByaW50KG1hdGNoKQogICAgcHJpbnRzOjoKICAgICAgICBbWzAsICdsanNkZicsIDVdXQogICAgICAgIFtbOCwgJ2xrc2RqamYnLCAxNV1dCiAgICAgICAgW1sxOCwgJ2xra2pqJywgMjNdXQogICAgYwMAAAADAAAAAQAAAFMAAABzBAAAAHwBAFMoAQAAAE4oAAAAACgDAAAAUoQAAABSTgEAAFJwAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlScQAAAGASAABScgAAAHQKAAAAbG9jbl9zdGFydFLnAAAAdAgAAABsb2NuX2VuZCgFAAAAUgsAAABSegAAAFIPAAAAUtIAAABS9gEAACgCAAAAUkYBAAB0BwAAAGxvY2F0b3IoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJoAAAATBIAAHMEAAAAABQVAXMOAAAAXFtdLSouJCtePygpfiBSSwIAAGMDAAAAAwAAAAIAAABDAAAAcwwAAAB8AgBkAQAZZAIAGVMoAwAAAE5pAAAAAGkBAAAAKAAAAAAoAwAAAFKEAAAAUk4BAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAABrEgAAUnIAAABzFAAAAFxcMD9beFhdWzAtOWEtZkEtRl0rYwMAAAADAAAABAAAAEMAAABzIAAAAHQAAHQBAHwCAGQBABlqAgBkAgCDAQBkAwCDAgCDAQBTKAQAAABOaQAAAABzAwAAAFwweGkQAAAAKAMAAAB0BgAAAHVuaWNoclJvAAAAdAYAAABsc3RyaXAoAwAAAFKEAAAAUk4BAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAABsEgAAUnIAAABzCQAAAFxcMFswLTddK2MDAAAAAwAAAAQAAABDAAAAcxsAAAB0AAB0AQB8AgBkAQAZZAIAH2QDAIMCAIMBAFMoBAAAAE5pAAAAAGkBAAAAaQgAAAAoAgAAAFLvAgAAUm8AAAAoAwAAAFKEAAAAUk4BAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYu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L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAACEEgAAUnIAAABScgAAAGMBAAAAAgAAAAMAAAAzAAAAcxsAAAB8AABdEQB9AQCIAAB8AQCDAQBWAXEDAGQAAFMoAQAAAE4oAAAAACgCAAAAUoAAAAB0BAAAAHBhcnQoAQAAAHQJAAAAX2V4cGFuZGVkKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj6GEgAAcwIAAAAGAE4oBQAAAFKoAAAAdA4AAABfcmVCcmFja2V0RXhwclLNAQAAUvICAABSYQEAACgBAAAAUoQAAAAoAAAAACgBAAAAUvYCAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Ul0AAAByEgAAcwoAAAAAEgkBAwEtAQ0BYwEAAAACAAAAAgAAAAMAAABzEwAAAIcAAGYBAGQBAIYAAH0BAHwBAFMoAgAAAHN0AAAACiAgICBIZWxwZXIgbWV0aG9kIGZvciBkZWZpbmluZyBwYXJzZSBhY3Rpb25zIHRoYXQgcmVxdWlyZSBtYXRjaGluZyBhdCBhIHNwZWNpZmljCiAgICBjb2x1bW4gaW4gdGhlIGlucHV0IHRleHQuCiAgICBjAwAAAAMAAAAFAAAAEwAAAHMyAAAAdAAAfAEAfAAAgwIAiAAAawMAci4AdAEAfAAAfAEAZAEAiAAAFoMDAIIBAG4AAGQAAFMoAgAAAE5zHgAAAG1hdGNoZWQgdG9rZW4gbm90IGF0IGNvbHVtbiAlZCgCAAAAUjcAAABSHQAAACgDAAAAUkABAAB0BAAAAGxvY25SSgEAACgBAAAAUuUBAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0CQAAAHZlcmlmeUNvbI8SAABzBAAAAAABFQEoAAAAACgCAAAAUuUBAABS+QIAACgAAAAAKAEAAABS5QEAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSSwAAAIoSAABzBAAAAAAFDwNjAQAAAAEAAAACAAAAAwAAAHMNAAAAhwAAZgEAZAEAhgAAUygCAAAAc7kBAAAKICAgIEhlbHBlciBtZXRob2QgZm9yIGNvbW1vbiBwYXJzZSBhY3Rpb25zIHRoYXQgc2ltcGx5IHJldHVybiBhIGxpdGVyYWwgdmFsdWUuICBFc3BlY2lhbGx5CiAgICB1c2VmdWwgd2hlbiB1c2VkIHdpdGggQ3tMe3RyYW5zZm9ybVN0cmluZzxQYXJzZXJFbGVtZW50LnRyYW5zZm9ybVN0cmluZz59KCl9LgoKICAgIEV4YW1wbGU6OgogICAgICAgIG51bSA9IFdvcmQobnVtcykuc2V0UGFyc2VBY3Rpb24obGFtYmRhIHRva3M6IGludCh0b2tzWzBdKSkKICAgICAgICBuYSA9IG9uZU9mKCJOL0EgTkEiKS5zZXRQYXJzZUFjdGlvbihyZXBsYWNlV2l0aChtYXRoLm5hbikpCiAgICAgICAgdGVybSA9IG5hIHwgbnVtCiAgICAgICAgCiAgICAgICAgT25lT3JNb3JlKHRlcm0pLnBhcnNlU3RyaW5nKCIzMjQgMjM0IE4vQSAyMzQiKSAjIC0+IFszMjQsIDIzNCwgbmFuLCAyMzRdCiAgICBjAwAAAAMAAAABAAAAEwAAAHMHAAAAiAAAZwEAUygBAAAATigAAAAAKAMAAABShAAAAFJOAQAAUnAAAAAoAQAAAHQHAAAAcmVwbFN0cigAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAAoBIAAFJyAAAAKAAAAAAoAQAAAFL6AgAAKAAAAAAoAQAAAFL6AgAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJaAAAAlBIAAHMCAAAAAAxjAwAAAAMAAAADAAAAQwAAAHMPAAAAfAIAZAEAGWQCAGQDACFTKAQAAABzFQIAAAogICAgSGVscGVyIHBhcnNlIGFjdGlvbiBmb3IgcmVtb3ZpbmcgcXVvdGF0aW9uIG1hcmtzIGZyb20gcGFyc2VkIHF1b3RlZCBzdHJpbmdzLgoKICAgIEV4YW1wbGU6OgogICAgICAgICMgYnkgZGVmYXVsdCwgcXVvdGF0aW9uIG1hcmtzIGFyZSBpbmNsdWRlZCBpbiBwYXJzZWQgcmVzdWx0cwogICAgICAgIHF1b3RlZFN0cmluZy5wYXJzZVN0cmluZygiJ05vdyBpcyB0aGUgV2ludGVyIG9mIG91ciBEaXNjb250ZW50JyIpICMgLT4gWyInTm93IGlzIHRoZSBXaW50ZXIgb2Ygb3VyIERpc2NvbnRlbnQnIl0KCiAgICAgICAgIyB1c2UgcmVtb3ZlUXVvdGVzIHRvIHN0cmlwIHF1b3RhdGlvbiBtYXJrcyBmcm9tIHBhcnNlZCByZXN1bHRzCiAgICAgICAgcXVvdGVkU3RyaW5nLnNldFBhcnNlQWN0aW9uKHJlbW92ZVF1b3RlcykKICAgICAgICBxdW90ZWRTdHJpbmcucGFyc2VTdHJpbmcoIidOb3cgaXMgdGhlIFdpbnRlciBvZiBvdXIgRGlzY29udGVudCciKSAjIC0+IFsiTm93IGlzIHRoZSBXaW50ZXIgb2Ygb3VyIERpc2NvbnRlbnQiXQogICAgaQAAAABpAQAAAGn/////KAAAAAAoAwAAAFKEAAAAUk4BAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UlgAAACiEgAAcwIAAAAADGMBAAAABAAAAAYAAAAHAAAAc2EAAACHAACHAQBmAgBkAQCGAAB9AgB5IgB0AACIAQBkAgB0AACIAQBkAwCDAgBqAQCDAwB9AwBXbh0ABHQCAGsKAHJTAAEBAXQDAIgBAIMBAH0DAG4BAFh8AwB8AgBfAQB8AgBTKAQAAABzRwUAAAogICAgSGVscGVyIHRvIGRlZmluZSBhIHBhcnNlIGFjdGlvbiBieSBtYXBwaW5nIGEgZnVuY3Rpb24gdG8gYWxsIGVsZW1lbnRzIG9mIGEgUGFyc2VSZXN1bHRzIGxpc3QuSWYgYW55IGFkZGl0aW9uYWwgCiAgICBhcmdzIGFyZSBwYXNzZWQsIHRoZXkgYXJlIGZvcndhcmRlZCB0byB0aGUgZ2l2ZW4gZnVuY3Rpb24gYXMgYWRkaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIKICAgIHRoZSB0b2tlbiwgYXMgaW4gQ3toZXhfaW50ZWdlciA9IFdvcmQoaGV4bnVtcykuc2V0UGFyc2VBY3Rpb24odG9rZW5NYXAoaW50LCAxNikpfSwgd2hpY2ggd2lsbCBjb252ZXJ0IHRoZQogICAgcGFyc2VkIGRhdGEgdG8gYW4gaW50ZWdlciB1c2luZyBiYXNlIDE2LgoKICAgIEV4YW1wbGUgKGNvbXBhcmUgdGhlIGxhc3QgdG8gZXhhbXBsZSBpbiBMe1BhcnNlckVsZW1lbnQudHJhbnNmb3JtU3RyaW5nfTo6CiAgICAgICAgaGV4X2ludHMgPSBPbmVPck1vcmUoV29yZChoZXhudW1zKSkuc2V0UGFyc2VBY3Rpb24odG9rZW5NYXAoaW50LCAxNikpCiAgICAgICAgaGV4X2ludHMucnVuVGVzdHMoJycnCiAgICAgICAgICAgIDAwIDExIDIyIGFhIEZGIDBhIDBkIDFhCiAgICAgICAgICAgICcnJykKICAgICAgICAKICAgICAgICB1cHBlcndvcmQgPSBXb3JkKGFscGhhcykuc2V0UGFyc2VBY3Rpb24odG9rZW5NYXAoc3RyLnVwcGVyKSkKICAgICAgICBPbmVPck1vcmUodXBwZXJ3b3JkKS5ydW5UZXN0cygnJycKICAgICAgICAgICAgbXkga2luZ2RvbSBmb3IgYSBob3JzZQogICAgICAgICAgICAnJycpCgogICAgICAgIHdkID0gV29yZChhbHBoYXMpLnNldFBhcnNlQWN0aW9uKHRva2VuTWFwKHN0ci50aXRsZSkpCiAgICAgICAgT25lT3JNb3JlKHdkKS5zZXRQYXJzZUFjdGlvbignICcuam9pbikucnVuVGVzdHMoJycnCiAgICAgICAgICAgIG5vdyBpcyB0aGUgd2ludGVyIG9mIG91ciBkaXNjb250ZW50IG1hZGUgZ2xvcmlvdXMgc3VtbWVyIGJ5IHRoaXMgc3VuIG9mIHlvcmsKICAgICAgICAgICAgJycnKQogICAgcHJpbnRzOjoKICAgICAgICAwMCAxMSAyMiBhYSBGRiAwYSAwZCAxYQogICAgICAgIFswLCAxNywgMzQsIDE3MCwgMjU1LCAxMCwgMTMsIDI2XQoKICAgICAgICBteSBraW5nZG9tIGZvciBhIGhvcnNlCiAgICAgICAgWydNWScsICdLSU5HRE9NJywgJ0ZPUicsICdBJywgJ0hPUlNFJ10KCiAgICAgICAgbm93IGlzIHRoZSB3aW50ZXIgb2Ygb3VyIGRpc2NvbnRlbnQgbWFkZSBnbG9yaW91cyBzdW1tZXIgYnkgdGhpcyBzdW4gb2YgeW9yawogICAgICAgIFsnTm93IElzIFRoZSBXaW50ZXIgT2YgT3VyIERpc2NvbnRlbnQgTWFkZSBHbG9yaW91cyBTdW1tZXIgQnkgVGhpcyBTdW4gT2YgWW9yayddCiAgICBjAwAAAAQAAAAFAAAAEwAAAHMgAAAAZwAAfAIARF0VAH0DAIgBAHwDAIgAAIwBAF4CAHEHAFMoAQAAAE4oAAAAACgEAAAAUoQAAABSTgEAAFJwAAAAdAQAAAB0b2tuKAIAAABSmwAAAFJPAQAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UpkBAADQEgAAcwIAAAAAAVKPAAAAUl4BAAAoBAAAAFJgAQAAUo8AAABSYQEAAFJ1AAAAKAQAAABSTwEAAFKbAAAAUpkBAABSZAEAACgAAAAAKAIAAABSmwAAAFJPAQAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJrAAAAsBIAAHMQAAAAACASAwMBCQEZAQ0BEAEJAmMBAAAAAQAAAAIAAABDAAAAcxAAAAB0AAB8AACDAQBqAQCDAABTKAEAAABOKAIAAABSfwAAAFIsAgAAKAEAAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAADcEgAAUnIAAABjAQAAAAEAAAACAAAAQwAAAHMQAAAAdAAAfAAAgwEAagEAgwAAUygBAAAATigCAAAAUn8AAAB0BQAAAGxvd2VyKAEAAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAADfEgAAUnIAAABjAgAAAAgAAAAIAAAAQwAAAHM8AgAAdAAAfAAAdAEAgwIAcisAfAAAfQIAdAIAfAAAZAEAfAEADIMBAX0AAG4JAHwAAGoDAH0CAHQEAHQFAHQGAGQCABeDAgB9AwB8AQBy0QB0BwBqCACDAABqCQB0CgCDAQB9BAB0CwBkAwCDAQB8AABkBACDAQAXdAwAdA0AdA4AfAMAdAsAZAUAgwEAF3wEABeDAQCDAQCDAQAXdA8AZAYAZAcAdBAAZwEAgwEBahEAZAgAgwEAagkAZAkAhAAAgwEAF3QLAGQKAIMBABd9BQBuswBkCwBqEgBkDACEAAB0EwBEgwEAgwEAfQYAdBQAaggAgwAAagkAdAoAgwEAdAQAfAYAgwEAQn0EAHQLAGQDAIMBAHwAAGQEAIMBABd0DAB0DQB0DgB8AwBqCQB0FQCDAQB0DwB0CwBkBQCDAQB8BAAXgwEAF4MBAIMBAIMBABd0DwBkBgBkBwB0EABnAQCDAQFqEQBkCACDAQBqCQBkDQCEAACDAQAXdAsAZAoAgwEAF30FAHQWAHQXAGQOAIMBAHwAABdkCgAXgwEAfQcAfAUAahEAZA8AZAsAahIAfAIAahgAZBAAZBEAgwIAahkAgwAAahoAgwAAgwEAF4MBAGobAGQSAHwCABaDAQB9BQB8BwBqEQBkEwBkCwBqEgB8AgBqGABkEABkEQCDAgBqGQCDAABqGgCDAACDAQAXgwEAahsAZBQAfAIAFoMBAH0HAHwCAHwFAF8cAHwCAHwHAF8cAHwFAHwHAGYCAFMoFQAAAHNSAAAASW50ZXJuYWwgaGVscGVyIHRvIGNvbnN0cnVjdCBvcGVuaW5nIGFuZCBjbG9zaW5nIHRhZyBleHByZXNzaW9ucywgZ2l2ZW4gYSB0YWcgbmFtZVIrAgAAcwMAAABfLTpSHwEAAHQDAAAAdGFndAEAAAA9dAEAAAAvUvsAAABSQQAAAGMDAAAAAwAAAAIAAABTAAAAcw4AAAB8AgBkAQAZZAIAawIAUygDAAAATmkAAAAAUv8CAAAoAAAAACgDAAAAUoQAAABSTgEAAFJwAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlScQAAAO8SAABScgAAAFIgAQAAUnIAAABjAQAAAAIAAAADAAAAcwAAAHMhAAAAfAAAXRcAfQEAfAEAZAAAawcAcgMAfAEAVgFxAwBkAQBTKAIAAABSIAEAAE4oAAAAACgCAAAAUoAAAABSlQAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5cwkAAAA8Z2VuZXhwcj7xEgAAcwIAAAAGAGMDAAAAAwAAAAIAAABTAAAAcw4AAAB8AgBkAQAZZAIAawIAUygDAAAATmkAAAAAUv8CAAAoAAAAACgDAAAAUoQAAABSTgEAAFJwAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlScQAAAPYSAABScgAAAHMCAAAAPC9SNQIAAHQBAAAAOlIVAgAAcwQAAAA8JXM+UkwCAABzBQAAADwvJXM+KB0AAABScwAAAFLRAAAAUhAAAABSwgAAAFItAAAAUjIAAABSMQAAAFI8AAAAUtIAAABSegAAAFJYAAAAUikAAABSCQAAAFIwAAAAUg8AAABSGQAAAFLGAAAAUocBAABSqAAAAFJUAAAAUlcAAABSQAAAAFIIAAAAdAIAAABfTFKHAAAAdAUAAAB0aXRsZVKFAAAAUoIBAABS/QIAACgIAAAAdAYAAAB0YWdTdHJ0AwAAAHhtbHQHAAAAcmVzbmFtZXQLAAAAdGFnQXR0ck5hbWV0DAAAAHRhZ0F0dHJWYWx1ZXQHAAAAb3BlblRhZ3QVAAAAcHJpbnRhYmxlc0xlc3NSQWJyYWNrdAgAAABjbG9zZVRhZygAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAkAAABfbWFrZVRhZ3PiEgAAcyIAAAAAAg8BBgEWAgkCEwEGARUDbwIZAR8EewEaAkEBQQEJAQkBYwEAAAABAAAAAwAAAEMAAABzDQAAAHQAAHwAAHQBAIMCAFMoAQAAAHMgAwAACiAgICBIZWxwZXIgdG8gY29uc3RydWN0IG9wZW5pbmcgYW5kIGNsb3NpbmcgdGFnIGV4cHJlc3Npb25zIGZvciBIVE1MLCBnaXZlbiBhIHRhZyBuYW1lLiBNYXRjaGVzCiAgICB0YWdzIGluIGVpdGhlciB1cHBlciBvciBsb3dlciBjYXNlLCBhdHRyaWJ1dGVzIHdpdGggbmFtZXNwYWNlcyBhbmQgd2l0aCBxdW90ZWQgb3IgdW5xdW90ZWQgdmFsdWVzLgoKICAgIEV4YW1wbGU6OgogICAgICAgIHRleHQgPSAnPHRkPk1vcmUgaW5mbyBhdCB0aGUgPGEgaHJlZj0iaHR0cDovL3B5cGFyc2luZy53aWtpc3BhY2VzLmNvbSI+cHlwYXJzaW5nPC9hPiB3aWtpIHBhZ2U8L3RkPicKICAgICAgICAjIG1ha2VIVE1MVGFncyByZXR1cm5zIHB5cGFyc2luZyBleHByZXNzaW9ucyBmb3IgdGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgdGFncyBhcyBhIDItdHVwbGUKICAgICAgICBhLGFfZW5kID0gbWFrZUhUTUxUYWdzKCJBIikKICAgICAgICBsaW5rX2V4cHIgPSBhICsgU2tpcFRvKGFfZW5kKSgibGlua190ZXh0IikgKyBhX2VuZAogICAgICAgIAogICAgICAgIGZvciBsaW5rIGluIGxpbmtfZXhwci5zZWFyY2hTdHJpbmcodGV4dCk6CiAgICAgICAgICAgICMgYXR0cmlidXRlcyBpbiB0aGUgPEE+IHRhZyAobGlrZSAiaHJlZiIgc2hvd24gaGVyZSkgYXJlIGFsc28gYWNjZXNzaWJsZSBhcyBuYW1lZCByZXN1bHRzCiAgICAgICAgICAgIHByaW50KGxpbmsubGlua190ZXh0LCAnLT4nLCBsaW5rLmhyZWYpCiAgICBwcmludHM6OgogICAgICAgIHB5cGFyc2luZyAtPiBodHRwOi8vcHlwYXJzaW5nLndpa2lzcGFjZXMuY29tCiAgICAoAgAAAFILAwAAUsYAAAAoAQAAAFIDAwAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSSQAAAP8SAABzAgAAAAARYwEAAAABAAAAAwAAAEMAAABzDQAAAHQAAHwAAHQBAIMCAFMoAQAAAHO6AAAACiAgICBIZWxwZXIgdG8gY29uc3RydWN0IG9wZW5pbmcgYW5kIGNsb3NpbmcgdGFnIGV4cHJlc3Npb25zIGZvciBYTUwsIGdpdmVuIGEgdGFnIG5hbWUuIE1hdGNoZXMKICAgIHRhZ3Mgb25seSBpbiB0aGUgZ2l2ZW4gdXBwZXIvbG93ZXIgY2FzZS4KCiAgICBFeGFtcGxlOiBzaW1pbGFyIHRvIEx7bWFrZUhUTUxUYWdzfQogICAgKAIAAABSCwMAAFK/AAAAKAEAAABSAwMAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UkoAAAASEwAAcwIAAAAAB2MAAAAABQAAAAQAAAAPAAAAc1QAAAB8AAByEAB8AAAeiQAAbgwAfAEAagAAgwAAiQAAZwAAiAAARF0YAFwCAH0CAH0DAHwCAHwDAGYCAF4CAHEjAIkAAIcAAGYBAGQBAIYAAH0EAHwEAFMoAgAAAHM8CAAACiAgICBIZWxwZXIgdG8gY3JlYXRlIGEgdmFsaWRhdGluZyBwYXJzZSBhY3Rpb24gdG8gYmUgdXNlZCB3aXRoIHN0YXJ0IHRhZ3MgY3JlYXRlZAogICAgd2l0aCBDe0x7bWFrZVhNTFRhZ3N9fSBvciBDe0x7bWFrZUhUTUxUYWdzfX0uIFVzZSBDe3dpdGhBdHRyaWJ1dGV9IHRvIHF1YWxpZnkgYSBzdGFydGluZyB0YWcKICAgIHdpdGggYSByZXF1aXJlZCBhdHRyaWJ1dGUgdmFsdWUsIHRvIGF2b2lkIGZhbHNlIG1hdGNoZXMgb24gY29tbW9uIHRhZ3Mgc3VjaCBhcwogICAgQ3s8VEQ+fSBvciBDezxESVY+fS4KCiAgICBDYWxsIEN7d2l0aEF0dHJpYnV0ZX0gd2l0aCBhIHNlcmllcyBvZiBhdHRyaWJ1dGUgbmFtZXMgYW5kIHZhbHVlcy4gU3BlY2lmeSB0aGUgbGlzdAogICAgb2YgZmlsdGVyIGF0dHJpYnV0ZXMgbmFtZXMgYW5kIHZhbHVlcyBhczoKICAgICAtIGtleXdvcmQgYXJndW1lbnRzLCBhcyBpbiBDeyhhbGlnbj0icmlnaHQiKX0sIG9yCiAgICAgLSBhcyBhbiBleHBsaWNpdCBkaWN0IHdpdGggQ3sqKn0gb3BlcmF0b3IsIHdoZW4gYW4gYXR0cmlidXRlIG5hbWUgaXMgYWxzbyBhIFB5dGhvbgogICAgICAgICAgcmVzZXJ2ZWQgd29yZCwgYXMgaW4gQ3sqKnsiY2xhc3MiOiJDdXN0b21lciIsICJhbGlnbiI6InJpZ2h0In19CiAgICAgLSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSB0dXBsZXMsIGFzIGluICggKCJuczE6Y2xhc3MiLCAiQ3VzdG9tZXIiKSwgKCJuczI6YWxpZ24iLCJyaWdodCIpICkKICAgIEZvciBhdHRyaWJ1dGUgbmFtZXMgd2l0aCBhIG5hbWVzcGFjZSBwcmVmaXgsIHlvdSBtdXN0IHVzZSB0aGUgc2Vjb25kIGZvcm0uICBBdHRyaWJ1dGUKICAgIG5hbWVzIGFyZSBtYXRjaGVkIGluc2Vuc2l0aXZlIHRvIHVwcGVyL2xvd2VyIGNhc2UuCiAgICAgICAKICAgIElmIGp1c3QgdGVzdGluZyBmb3IgQ3tjbGFzc30gKHdpdGggb3Igd2l0aG91dCBhIG5hbWVzcGFjZSksIHVzZSBDe0x7d2l0aENsYXNzfX0uCgogICAgVG8gdmVyaWZ5IHRoYXQgdGhlIGF0dHJpYnV0ZSBleGlzdHMsIGJ1dCB3aXRob3V0IHNwZWNpZnlpbmcgYSB2YWx1ZSwgcGFzcwogICAgQ3t3aXRoQXR0cmlidXRlLkFOWV9WQUxVRX0gYXMgdGhlIHZhbHVlLgoKICAgIEV4YW1wbGU6OgogICAgICAgIGh0bWwgPSAnJycKICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgU29tZSB0ZXh0CiAgICAgICAgICAgIDxkaXYgdHlwZT0iZ3JpZCI+MSA0IDAgMSAwPC9kaXY+CiAgICAgICAgICAgIDxkaXYgdHlwZT0iZ3JhcGgiPjEsMyAyLDMgMSwxPC9kaXY+CiAgICAgICAgICAgIDxkaXY+dGhpcyBoYXMgbm8gdHlwZTwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICcnJwogICAgICAgIGRpdixkaXZfZW5kID0gbWFrZUhUTUxUYWdzKCJkaXYiKQoKICAgICAgICAjIG9ubHkgbWF0Y2ggZGl2IHRhZyBoYXZpbmcgYSB0eXBlIGF0dHJpYnV0ZSB3aXRoIHZhbHVlICJncmlkIgogICAgICAgIGRpdl9ncmlkID0gZGl2KCkuc2V0UGFyc2VBY3Rpb24od2l0aEF0dHJpYnV0ZSh0eXBlPSJncmlkIikpCiAgICAgICAgZ3JpZF9leHByID0gZGl2X2dyaWQgKyBTa2lwVG8oZGl2IHwgZGl2X2VuZCkoImJvZHkiKQogICAgICAgIGZvciBncmlkX2hlYWRlciBpbiBncmlkX2V4cHIuc2VhcmNoU3RyaW5nKGh0bWwpOgogICAgICAgICAgICBwcmludChncmlkX2hlYWRlci5ib2R5KQogICAgICAgIAogICAgICAgICMgY29uc3RydWN0IGEgbWF0Y2ggd2l0aCBhbnkgZGl2IHRhZyBoYXZpbmcgYSB0eXBlIGF0dHJpYnV0ZSwgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUKICAgICAgICBkaXZfYW55X3R5cGUgPSBkaXYoKS5zZXRQYXJzZUFjdGlvbih3aXRoQXR0cmlidXRlKHR5cGU9d2l0aEF0dHJpYnV0ZS5BTllfVkFMVUUpKQogICAgICAgIGRpdl9leHByID0gZGl2X2FueV90eXBlICsgU2tpcFRvKGRpdiB8IGRpdl9lbmQpKCJib2R5IikKICAgICAgICBmb3IgZGl2X2hlYWRlciBpbiBkaXZfZXhwci5zZWFyY2hTdHJpbmcoaHRtbCk6CiAgICAgICAgICAgIHByaW50KGRpdl9oZWFkZXIuYm9keSkKICAgIHByaW50czo6CiAgICAgICAgMSA0IDAgMSAwCgogICAgICAgIDEgNCAwIDEgMAogICAgICAgIDEsMyAyLDMgMSwxCiAgICBjAwAAAAUAAAAIAAAAEwAAAHOFAAAAeH4AiAAARF12AFwCAH0DAH0EAHwDAHwCAGsHAHI4AHQAAHwAAHwBAGQBAHwDABeDAwCCAQBuAAB8BAB0AQBqAgBrAwByBwB8AgB8AwAZfAQAawMAcgcAdAAAfAAAfAEAZAIAfAMAfAIAfAMAGXwEAGYDABaDAwCCAQBxBwBxBwBXZAAAUygDAAAATnMWAAAAbm8gbWF0Y2hpbmcgYXR0cmlidXRlIHMrAAAAYXR0cmlidXRlICclcycgaGFzIHZhbHVlICclcycsIG11c3QgYmUgJyVzJygDAAAAUh0AAABSYwAAAHQJAAAAQU5ZX1ZBTFVFKAUAAABShAAAAFJOAQAAUqkBAAB0CAAAAGF0dHJOYW1ldAkAAABhdHRyVmFsdWUoAQAAAHQFAAAAYXR0cnMoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSmQEAAFITAABzDAAAAAABEwEMARkBHwEMASgBAAAAUuEAAAAoBQAAAFKbAAAAdAgAAABhdHRyRGljdFLaAAAAUtcAAABSmQEAACgAAAAAKAEAAABSDwMAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSYwAAABsTAABzDAAAAAAyBgEKAgwBJQEPB2MCAAAAAwAAAAQAAABDAAAAcycAAAB8AQByEABkAQB8AQAWbgMAZAIAfQIAdAAAaQEAfAAAfAIANo0AAFMoAwAAAHPjAwAACiAgICBTaW1wbGlmaWVkIHZlcnNpb24gb2YgQ3tMe3dpdGhBdHRyaWJ1dGV9fSB3aGVuIG1hdGNoaW5nIG9uIGEgZGl2IGNsYXNzIC0gbWFkZQogICAgZGlmZmljdWx0IGJlY2F1c2UgQ3tjbGFzc30gaXMgYSByZXNlcnZlZCB3b3JkIGluIFB5dGhvbi4KCiAgICBFeGFtcGxlOjoKICAgICAgICBodG1sID0gJycnCiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgIFNvbWUgdGV4dAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIj4xIDQgMCAxIDA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JhcGgiPjEsMyAyLDMgMSwxPC9kaXY+CiAgICAgICAgICAgIDxkaXY+dGhpcyAmbHQ7ZGl2Jmd0OyBoYXMgbm8gY2xhc3M8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAnJycKICAgICAgICBkaXYsZGl2X2VuZCA9IG1ha2VIVE1MVGFncygiZGl2IikKICAgICAgICBkaXZfZ3JpZCA9IGRpdigpLnNldFBhcnNlQWN0aW9uKHdpdGhDbGFzcygiZ3JpZCIpKQogICAgICAgIAogICAgICAgIGdyaWRfZXhwciA9IGRpdl9ncmlkICsgU2tpcFRvKGRpdiB8IGRpdl9lbmQpKCJib2R5IikKICAgICAgICBmb3IgZ3JpZF9oZWFkZXIgaW4gZ3JpZF9leHByLnNlYXJjaFN0cmluZyhodG1sKToKICAgICAgICAgICAgcHJpbnQoZ3JpZF9oZWFkZXIuYm9keSkKICAgICAgICAKICAgICAgICBkaXZfYW55X3R5cGUgPSBkaXYoKS5zZXRQYXJzZUFjdGlvbih3aXRoQ2xhc3Mod2l0aEF0dHJpYnV0ZS5BTllfVkFMVUUpKQogICAgICAgIGRpdl9leHByID0gZGl2X2FueV90eXBlICsgU2tpcFRvKGRpdiB8IGRpdl9lbmQpKCJib2R5IikKICAgICAgICBmb3IgZGl2X2hlYWRlciBpbiBkaXZfZXhwci5zZWFyY2hTdHJpbmcoaHRtbCk6CiAgICAgICAgICAgIHByaW50KGRpdl9oZWFkZXIuYm9keSkKICAgIHByaW50czo6CiAgICAgICAgMSA0IDAgMSAwCgogICAgICAgIDEgNCAwIDEgMAogICAgICAgIDEsMyAyLDMgMSwxCiAgICBzCAAAACVzOmNsYXNzdAUAAABjbGFzcygBAAAAUmMAAAAoAwAAAHQJAAAAY2xhc3NuYW1ldAkAAABuYW1lc3BhY2V0CQAAAGNsYXNzYXR0cigAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UmkAAABcEwAAcwQAAAAAIBYBdAEAAAAoUlkCAABjBAAAABEAAAAHAAAAQwAAAHM8AwAAdAAAgwAAfQQAfAAAfAIAfAQAF3wDABdCfQUAeBADdAEAfAEAgwEARF0CA1wCAH0GAH0HAHwHAGQLABdkAQAgXAQAfQgAfQkAfQoAfQsAfAkAZAIAawAAcmQAZAMAfAgAFm4HAGQEAHwIABZ9DAB8CQBkAgBrAgBytgB8CABkCgBrCABzmAB0AwB8CACDAQBkBQBrAwBypwB0BABkBgCDAQCCAQBuAAB8CABcAgB9DQB9DgBuAAB0AACDAABqBQB8DACDAQB9DwB8CgB0BgBqBwBrAgByzAF8CQBkBwBrAgByCgF0CAB8BQB8CAAXgwEAdAkAfAUAdAoAfAgAgwEAF4MBABd9EABx9wJ8CQBkBQBrAgByeAF8CABkCgBrCQByUQF0CAB8BQB8CAAXfAUAF4MBAHQJAHwFAHQKAHwIAHwFABeDAQAXgwEAF30QAHHJAXQIAHwFAHwFABeDAQB0CQB8BQB0CgB8BQCDAQAXgwEAF30QAHH3AnwJAGQCAGsCAHK9AXQIAHwFAHwNABd8BQAXfA4AF3wFABeDAQB0CQB8BQB8DQAXfAUAF3wOABd8BQAXgwEAF30QAHH3AnQEAGQIAIMBAIIBAG4rAXwKAHQGAGoLAGsCAHLrAnwJAGQHAGsCAHIpAnQMAHwIAHQNAIMCAHMFAnQNAHwIAIMBAH0IAG4AAHQIAHwIAGoOAHwPABeDAQB0CQB8CAB8DwAXgwEAF30QAHH3AnwJAGQFAGsCAHKXAnwIAGQKAGsJAHJwAnQIAHwFAHwIABd8DwAXgwEAdAkAfAUAdAoAfAgAfA8AF4MBABeDAQAXfRAAcegCdAgAfAUAfA8AF4MBAHQJAHwFAHQKAHwPAIMBABeDAQAXfRAAcfcCfAkAZAIAawIActwCdAgAfAUAfA0AF3wPABd8DgAXfA8AF4MBAHQJAHwFAHwNABd8DwAXfA4AF3wPABeDAQAXfRAAcfcCdAQAZAgAgwEAggEAbgwAdAQAZAkAgwEAggEAfAsAcg0DfBAAag8AfAsAgwEAAW4AAHwPAHwQAGoFAHwMAIMBAHwFAEJLfQ8AfA8AfQUAcSgAV3wEAHwFAEt9BAB8BABTKAwAAABznAkAAAogICAgSGVscGVyIG1ldGhvZCBmb3IgY29uc3RydWN0aW5nIGdyYW1tYXJzIG9mIGV4cHJlc3Npb25zIG1hZGUgdXAgb2YKICAgIG9wZXJhdG9ycyB3b3JraW5nIGluIGEgcHJlY2VkZW5jZSBoaWVyYXJjaHkuICBPcGVyYXRvcnMgbWF5IGJlIHVuYXJ5IG9yCiAgICBiaW5hcnksIGxlZnQtIG9yIHJpZ2h0LWFzc29jaWF0aXZlLiAgUGFyc2UgYWN0aW9ucyBjYW4gYWxzbyBiZSBhdHRhY2hlZAogICAgdG8gb3BlcmF0b3IgZXhwcmVzc2lvbnMuIFRoZSBnZW5lcmF0ZWQgcGFyc2VyIHdpbGwgYWxzbyByZWNvZ25pemUgdGhlIHVzZSAKICAgIG9mIHBhcmVudGhlc2VzIHRvIG92ZXJyaWRlIG9wZXJhdG9yIHByZWNlZGVuY2VzIChzZWUgZXhhbXBsZSBiZWxvdykuCiAgICAKICAgIE5vdGU6IGlmIHlvdSBkZWZpbmUgYSBkZWVwIG9wZXJhdG9yIGxpc3QsIHlvdSBtYXkgc2VlIHBlcmZvcm1hbmNlIGlzc3VlcwogICAgd2hlbiB1c2luZyBpbmZpeE5vdGF0aW9uLiBTZWUgTHtQYXJzZXJFbGVtZW50LmVuYWJsZVBhY2tyYXR9IGZvciBhCiAgICBtZWNoYW5pc20gdG8gcG90ZW50aWFsbHkgaW1wcm92ZSB5b3VyIHBhcnNlciBwZXJmb3JtYW5jZS4KCiAgICBQYXJhbWV0ZXJzOgogICAgIC0gYmFzZUV4cHIgLSBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgbW9zdCBiYXNpYyBlbGVtZW50IGZvciB0aGUgbmVzdGVkCiAgICAgLSBvcExpc3QgLSBsaXN0IG9mIHR1cGxlcywgb25lIGZvciBlYWNoIG9wZXJhdG9yIHByZWNlZGVuY2UgbGV2ZWwgaW4gdGhlCiAgICAgIGV4cHJlc3Npb24gZ3JhbW1hcjsgZWFjaCB0dXBsZSBpcyBvZiB0aGUgZm9ybQogICAgICAob3BFeHByLCBudW1UZXJtcywgcmlnaHRMZWZ0QXNzb2MsIHBhcnNlQWN0aW9uKSwgd2hlcmU6CiAgICAgICAtIG9wRXhwciBpcyB0aGUgcHlwYXJzaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBvcGVyYXRvcjsKICAgICAgICAgIG1heSBhbHNvIGJlIGEgc3RyaW5nLCB3aGljaCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhIExpdGVyYWw7CiAgICAgICAgICBpZiBudW1UZXJtcyBpcyAzLCBvcEV4cHIgaXMgYSB0dXBsZSBvZiB0d28gZXhwcmVzc2lvbnMsIGZvciB0aGUKICAgICAgICAgIHR3byBvcGVyYXRvcnMgc2VwYXJhdGluZyB0aGUgMyB0ZXJtcwogICAgICAgLSBudW1UZXJtcyBpcyB0aGUgbnVtYmVyIG9mIHRlcm1zIGZvciB0aGlzIG9wZXJhdG9yIChtdXN0CiAgICAgICAgICBiZSAxLCAyLCBvciAzKQogICAgICAgLSByaWdodExlZnRBc3NvYyBpcyB0aGUgaW5kaWNhdG9yIHdoZXRoZXIgdGhlIG9wZXJhdG9yIGlzCiAgICAgICAgICByaWdodCBvciBsZWZ0IGFzc29jaWF0aXZlLCB1c2luZyB0aGUgcHlwYXJzaW5nLWRlZmluZWQKICAgICAgICAgIGNvbnN0YW50cyBDe29wQXNzb2MuUklHSFR9IGFuZCBDe29wQXNzb2MuTEVGVH0uCiAgICAgICAtIHBhcnNlQWN0aW9uIGlzIHRoZSBwYXJzZSBhY3Rpb24gdG8gYmUgYXNzb2NpYXRlZCB3aXRoCiAgICAgICAgICBleHByZXNzaW9ucyBtYXRjaGluZyB0aGlzIG9wZXJhdG9yIGV4cHJlc3Npb24gKHRoZQogICAgICAgICAgcGFyc2UgYWN0aW9uIHR1cGxlIG1lbWJlciBtYXkgYmUgb21pdHRlZCkKICAgICAtIGxwYXIgLSBleHByZXNzaW9uIGZvciBtYXRjaGluZyBsZWZ0LXBhcmVudGhlc2VzIChkZWZhdWx0PUN7U3VwcHJlc3MoJygnKX0pCiAgICAgLSBycGFyIC0gZXhwcmVzc2lvbiBmb3IgbWF0Y2hpbmcgcmlnaHQtcGFyZW50aGVzZXMgKGRlZmF1bHQ9Q3tTdXBwcmVzcygnKScpfSkKCiAgICBFeGFtcGxlOjoKICAgICAgICAjIHNpbXBsZSBleGFtcGxlIG9mIGZvdXItZnVuY3Rpb24gYXJpdGhtZXRpYyB3aXRoIGludHMgYW5kIHZhcmlhYmxlIG5hbWVzCiAgICAgICAgaW50ZWdlciA9IHB5cGFyc2luZ19jb21tb24uc2lnbmVkX2ludGVnZXIKICAgICAgICB2YXJuYW1lID0gcHlwYXJzaW5nX2NvbW1vbi5pZGVudGlmaWVyIAogICAgICAgIAogICAgICAgIGFyaXRoX2V4cHIgPSBpbmZpeE5vdGF0aW9uKGludGVnZXIgfCB2YXJuYW1lLAogICAgICAgICAgICBbCiAgICAgICAgICAgICgnLScsIDEsIG9wQXNzb2MuUklHSFQpLAogICAgICAgICAgICAob25lT2YoJyogLycpLCAyLCBvcEFzc29jLkxFRlQpLAogICAgICAgICAgICAob25lT2YoJysgLScpLCAyLCBvcEFzc29jLkxFRlQpLAogICAgICAgICAgICBdKQogICAgICAgIAogICAgICAgIGFyaXRoX2V4cHIucnVuVGVzdHMoJycnCiAgICAgICAgICAgIDUrMyo2CiAgICAgICAgICAgICg1KzMpKjYKICAgICAgICAgICAgLTItLTExCiAgICAgICAgICAgICcnJywgZnVsbER1bXA9RmFsc2UpCiAgICBwcmludHM6OgogICAgICAgIDUrMyo2CiAgICAgICAgW1s1LCAnKycsIFszLCAnKicsIDZdXV0KCiAgICAgICAgKDUrMykqNgogICAgICAgIFtbWzUsICcrJywgM10sICcqJywgNl1dCgogICAgICAgIC0yLS0xMQogICAgICAgIFtbWyctJywgMl0sICctJywgWyctJywgMTFdXV0KICAgIGkEAAAAaQMAAABzBwAAACVzIHRlcm1zCQAAACVzJXMgdGVybWkCAAAAc0AAAABpZiBudW10ZXJtcz0zLCBvcEV4cHIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3Qgb2YgdHdvIGV4cHJlc3Npb25zaQEAAABzNgAAAG9wZXJhdG9yIG11c3QgYmUgdW5hcnkgKDEpLCBiaW5hcnkgKDIpLCBvciB0ZXJuYXJ5ICgzKXMyAAAAb3BlcmF0b3IgbXVzdCBpbmRpY2F0ZSByaWdodCBvciBsZWZ0IGFzc29jaWF0aXZpdHlOKAEAAABOKBAAAABSDQAAAFLiAAAAUpcAAABS3QAAAFLoAQAAUoIBAABSUgAAAHQEAAAATEVGVFIMAAAAUg8AAABSFwAAAHQFAAAA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ZW5pbmcgYW5kIGNsb3NpbmcgZGVsaW1pdGVycyAoZGVmYXVsdD1De3F1b3RlZFN0cmluZ30pCgogICAgSWYgYW4gZXhwcmVzc2lvbiBpcyBub3QgcHJvdmlkZWQgZm9yIHRoZSBjb250ZW50IGFyZ3VtZW50LCB0aGUgbmVzdGVkCiAgICBleHByZXNzaW9uIHdpbGwgY2FwdHVyZSBhbGwgd2hpdGVzcGFjZS1kZWxpbWl0ZWQgY29udGVudCBiZXR3ZWVuIGRlbGltaXRlcnMKICAgIGFzIGEgbGlzdCBvZiBzZXBhcmF0ZSB2YWx1ZXMuCgogICAgVXNlIHRoZSBDe2lnbm9yZUV4cHJ9IGFyZ3VtZW50IHRvIGRlZmluZSBleHByZXNzaW9ucyB0aGF0IG1heSBjb250YWluCiAgICBvcGVuaW5nIG9yIGNsb3NpbmcgY2hhcmFjdGVycyB0aGF0IHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBvcGVuaW5nCiAgICBvciBjbG9zaW5nIGNoYXJhY3RlcnMgZm9yIG5lc3RpbmcsIHN1Y2ggYXMgcXVvdGVkU3RyaW5nIG9yIGEgY29tbWVudAogICAgZXhwcmVzc2lvbi4gIFNwZWNpZnkgbXVsdGlwbGUgZXhwcmVzc2lvbnMgdXNpbmcgYW4gQ3tMe09yfX0gb3IgQ3tMe01hdGNoRmlyc3R9fS4KICAgIFRoZSBkZWZhdWx0IGlzIEx7cXVvdGVkU3RyaW5nfSwgYnV0IGlmIG5vIGV4cHJlc3Npb25zIGFyZSB0byBiZSBpZ25vcmVkLAogICAgdGhlbiBwYXNzIEN7Tm9uZX0gZm9yIHRoaXMgYXJndW1lbnQuCgogICAgRXhhbXBsZTo6CiAgICAgICAgZGF0YV90eXBlID0gb25lT2YoInZvaWQgaW50IHNob3J0IGxvbmcgY2hhciBmbG9hdCBkb3VibGUiKQogICAgICAgIGRlY2xfZGF0YV90eXBlID0gQ29tYmluZShkYXRhX3R5cGUgKyBPcHRpb25hbChXb3JkKCcqJykpKQogICAgICAgIGlkZW50ID0gV29yZChhbHBoYXMrJ18nLCBhbHBoYW51bXMrJ18nKQogICAgICAgIG51bWJlciA9IHB5cGFyc2luZ19jb21tb24ubnVtYmVyCiAgICAgICAgYXJnID0gR3JvdXAoZGVjbF9kYXRhX3R5cGUgKyBpZGVudCkKICAgICAgICBMUEFSLFJQQVIgPSBtYXAoU3VwcHJlc3MsICIoKSIpCgogICAgICAgIGNvZGVfYm9keSA9IG5lc3RlZEV4cHIoJ3snLCAnfScsIGlnbm9yZUV4cHI9KHF1b3RlZFN0cmluZyB8IGNTdHlsZUNvbW1lbnQpKQoKICAgICAgICBjX2Z1bmN0aW9uID0gKGRlY2xfZGF0YV90eXBlKCJ0eXBlIikgCiAgICAgICAgICAgICAgICAgICAgICArIGlkZW50KCJuYW1lIikKICAgICAgICAgICAgICAgICAgICAgICsgTFBBUiArIE9wdGlvbmFsKGRlbGltaXRlZExpc3QoYXJnKSwgW10pKCJhcmdzIikgKyBSUEFSIAogICAgICAgICAgICAgICAgICAgICAgKyBjb2RlX2JvZHkoImJvZHkiKSkKICAgICAgICBjX2Z1bmN0aW9uLmlnbm9yZShjU3R5bGVDb21tZW50KQogICAgICAgIAogICAgICAgIHNvdXJjZV9jb2RlID0gJycnCiAgICAgICAgICAgIGludCBpc19vZGQoaW50IHgpIHsgCiAgICAgICAgICAgICAgICByZXR1cm4gKHglMik7IAogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaW50IGRlY190b19oZXgoY2hhciBoY2hhcikgeyAKICAgICAgICAgICAgICAgIGlmIChoY2hhciA+PSAnMCcgJiYgaGNoYXIgPD0gJzknKSB7IAogICAgICAgICAgICAgICAgICAgIHJldHVybiAob3JkKGhjaGFyKS1vcmQoJzAnKSk7IAogICAgICAgICAgICAgICAgfSBlbHNlIHsgCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgxMCtvcmQoaGNoYXIpLW9yZCgnQScpKTsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICAnJycKICAgICAgICBmb3IgZnVuYyBpbiBjX2Z1bmN0aW9uLnNlYXJjaFN0cmluZyhzb3VyY2VfY29kZSk6CiAgICAgICAgICAgIHByaW50KCIlKG5hbWUpcyAoJSh0eXBlKXMpIGFyZ3M6ICUoYXJncylzIiAlIGZ1bmMpCgogICAgcHJpbnRzOjoKICAgICAgICBpc19vZGQgKGludCkgYXJnczogW1snaW50JywgJ3gnXV0KICAgICAgICBkZWNfdG9faGV4IChpbnQpIGFyZ3M6IFtbJ2NoYXInLCAnaGNoYXInXV0KICAgIHMuAAAAb3BlbmluZyBhbmQgY2xvc2luZyBzdHJpbmdzIGNhbm5vdCBiZSB0aGUgc2FtZWkBAAAAUksCAABjAQAAAAEAAAACAAAAUwAAAHMOAAAAfAAAZAEAGWoAAIMAAFMoAgAAAE5pAAAAACgBAAAAUqkAAAAoAQAAAFJwAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlScQAAADkUAABScgAAAGMBAAAAAQAAAAIAAABTAAAAcw4AAAB8AABkAQAZagAAgwAAUygCAAAATmkAAAAAKAEAAABSqQAAACgBAAAAUnAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weVJxAAAAPBQAAFJyAAAAYwEAAAABAAAAAgAAAFMAAABzDgAAAHwAAGQBABlqAACDAABTKAIAAABOaQAAAAAoAQAAAFKpAAAAKAEAAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAABCFAAAUnIAAABjAQAAAAEAAAACAAAAUwAAAHMOAAAAfAAAZAEAGWoAAIMAAFMoAgAAAE5pAAAAACgBAAAAUqkAAAAoAQAAAFJwAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlScQAAAEYUAABScgAAAHNPAAAAb3BlbmluZyBhbmQgY2xvc2luZyBhcmd1bWVudHMgbXVzdCBiZSBzdHJpbmdzIGlmIG5vIGNvbnRlbnQgZXhwcmVzc2lvbiBpcyBnaXZlbnMWAAAAbmVzdGVkICVzJXMgZXhwcmVzc2lvbk4oEwAAAFLoAQAAUpcAAABScwAAAFLRAAAAUt0AAABSCAAAAFIXAAAAUgcAAABSIgAAAFJmAQAAUnoAAABSQQAAAFLSAAAAUhMAAABSDQAAAFIPAAAAUikAAABSMAAAAFKCAQAAKAUAAAB0BgAAAG9wZW5lcnQGAAAAY2xvc2VydAcAAABjb250ZW50UqoCAABSfQAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5Uk4AAAD3EwAAczQAAAAAOgwBDwEMAR4BJAEMAQoBJAEPAiABEAIMAQYBGgEcAQ8CGwEcAQ8CDwEJAQwBNQIuARcBYwMAAAALAAAABgAAAAMAAABzNQEAAIcAAGYBAGQBAIYAAH0DAIcAAGYBAGQCAIYAAH0EAIcAAGYBAGQDAIYAAH0FAHQAAHQBAIMAAGoCAGQEAIMBAGoDAIMAAIMBAH0GAHQEAIMAAHQEAIMAAGoFAHwEAIMBABdqBgBkBQCDAQB9BwB0BACDAABqBQB8AwCDAQBqBgBkBgCDAQB9CAB0BACDAABqBQB8BQCDAQBqBgBkBwCDAQB9CQB8AgBy5AB0BwB0CAB8BgCDAQB8BwAXdAAAfAgAdAcAfAAAgwEAF3QIAHwGAIMBABeDAQAXfAkAF4MBAH0KAG4wAHQHAHQIAHwGAIMBAHQAAHwIAHQHAHwAAIMBABd0CAB8BgCDAQAXgwEAF4MBAH0KAHwAAGoJAHQKAHQBAIMAABeDAQABfAoAagYAZAgAgwEAUygJAAAAcwoJAAAKICAgIEhlbHBlciBtZXRob2QgZm9yIGRlZmluaW5nIHNwYWNlLWRlbGltaXRlZCBpbmRlbnRhdGlvbiBibG9ja3MsIHN1Y2ggYXMKICAgIHRob3NlIHVzZWQgdG8gZGVmaW5lIGJsb2NrIHN0YXRlbWVudHMgaW4gUHl0aG9uIHNvdXJjZSBjb2RlLgoKICAgIFBhcmFtZXRlcnM6CiAgICAgLSBibG9ja1N0YXRlbWVudEV4cHIgLSBleHByZXNzaW9uIGRlZmluaW5nIHN5bnRheCBvZiBzdGF0ZW1lbnQgdGhhdAogICAgICAgICAgICBpcyByZXBlYXRlZCB3aXRoaW4gdGhlIGluZGVudGVkIGJsb2NrCiAgICAgLSBpbmRlbnRTdGFjayAtIGxpc3QgY3JlYXRlZCBieSBjYWxsZXIgdG8gbWFuYWdlIGluZGVudGF0aW9uIHN0YWNrCiAgICAgICAgICAgIChtdWx0aXBsZSBzdGF0ZW1lbnRXaXRoSW5kZW50ZWRCbG9jayBleHByZXNzaW9ucyB3aXRoaW4gYSBzaW5nbGUgZ3JhbW1hcgogICAgICAgICAgICBzaG91bGQgc2hhcmUgYSBjb21tb24gaW5kZW50U3RhY2spCiAgICAgLSBpbmRlbnQgLSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBibG9jayBtdXN0IGJlIGluZGVudGVkIGJleW9uZCB0aGUKICAgICAgICAgICAgdGhlIGN1cnJlbnQgbGV2ZWw7IHNldCB0byBGYWxzZSBmb3IgYmxvY2sgb2YgbGVmdC1tb3N0IHN0YXRlbWVudHMKICAgICAgICAgICAgKGRlZmF1bHQ9Q3tUcnVlfSkKCiAgICBBIHZhbGlkIGJsb2NrIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgQ3tibG9ja1N0YXRlbWVudH0uCgogICAgRXhhbXBsZTo6CiAgICAgICAgZGF0YSA9ICcnJwogICAgICAgIGRlZiBBKHopOgogICAgICAgICAgQTEKICAgICAgICAgIEIgPSAxMDAKICAgICAgICAgIEcgPSBBMgogICAgICAgICAgQTIKICAgICAgICAgIEEzCiAgICAgICAgQgogICAgICAgIGRlZiBCQihhLGIsYyk6CiAgICAgICAgICBCQjEKICAgICAgICAgIGRlZiBCQkEoKToKICAgICAgICAgICAgYmJhMQogICAgICAgICAgICBiYmEyCiAgICAgICAgICAgIGJiYTMKICAgICAgICBDCiAgICAgICAgRAogICAgICAgIGRlZiBzcGFtKHgseSk6CiAgICAgICAgICAgICBkZWYgZWdncyh6KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgJycnCgoKICAgICAgICBpbmRlbnRTdGFjayA9IFsxXQogICAgICAgIHN0bXQgPSBGb3J3YXJkKCkKCiAgICAgICAgaWRlbnRpZmllciA9IFdvcmQoYWxwaGFzLCBhbHBoYW51bXMpCiAgICAgICAgZnVuY0RlY2wgPSAoImRlZiIgKyBpZGVudGlmaWVyICsgR3JvdXAoICIoIiArIE9wdGlvbmFsKCBkZWxpbWl0ZWRMaXN0KGlkZW50aWZpZXIpICkgKyAiKSIgKSArICI6IikKICAgICAgICBmdW5jX2JvZHkgPSBpbmRlbnRlZEJsb2NrKHN0bXQsIGluZGVudFN0YWNrKQogICAgICAgIGZ1bmNEZWYgPSBHcm91cCggZnVuY0RlY2wgKyBmdW5jX2JvZHkgKQoKICAgICAgICBydmFsdWUgPSBGb3J3YXJkKCkKICAgICAgICBmdW5jQ2FsbCA9IEdyb3VwKGlkZW50aWZpZXIgKyAiKCIgKyBPcHRpb25hbChkZWxpbWl0ZWRMaXN0KHJ2YWx1ZSkpICsgIikiKQogICAgICAgIHJ2YWx1ZSA8PCAoZnVuY0NhbGwgfCBpZGVudGlmaWVyIHwgV29yZChudW1zKSkKICAgICAgICBhc3NpZ25tZW50ID0gR3JvdXAoaWRlbnRpZmllciArICI9IiArIHJ2YWx1ZSkKICAgICAgICBzdG10IDw8ICggZnVuY0RlZiB8IGFzc2lnbm1lbnQgfCBpZGVudGlmaWVyICkKCiAgICAgICAgbW9kdWxlX2JvZHkgPSBPbmVPck1vcmUoc3RtdCkKCiAgICAgICAgcGFyc2VUcmVlID0gbW9kdWxlX2JvZHkucGFyc2VTdHJpbmcoZGF0YSkKICAgICAgICBwYXJzZVRyZWUucHByaW50KCkKICAgIHByaW50czo6CiAgICAgICAgW1snZGVmJywKICAgICAgICAgICdBJywKICAgICAgICAgIFsnKCcsICd6JywgJyknXSwKICAgICAgICAgICc6JywKICAgICAgICAgIFtbJ0ExJ10sIFtbJ0InLCAnPScsICcxMDAnXV0sIFtbJ0cnLCAnPScsICdBMiddXSwgWydBMiddLCBbJ0EzJ11dXSwKICAgICAgICAgJ0InLAogICAgICAgICBbJ2RlZicsCiAgICAgICAgICAnQkInLAogICAgICAgICAgWycoJywgJ2EnLCAnYicsICdjJywgJyknXSwKICAgICAgICAgICc6JywKICAgICAgICAgIFtbJ0JCMSddLCBbWydkZWYnLCAnQkJBJywgWycoJywgJyknXSwgJzonLCBbWydiYmExJ10sIFsnYmJhMiddLCBbJ2JiYTMnXV1dXV1dLAogICAgICAgICAnQycsCiAgICAgICAgICdEJywKICAgICAgICAgWydkZWYnLAogICAgICAgICAgJ3NwYW0nLAogICAgICAgICAgWycoJywgJ3gnLCAneScsICcpJ10sCiAgICAgICAgICAnOicsCiAgICAgICAgICBbW1snZGVmJywgJ2VnZ3MnLCBbJygnLCAneicsICcpJ10sICc6JywgW1sncGFzcyddXV1dXV1dIAogICAgYwMAAAAEAAAABAAAABMAAABzcwAAAHwBAHQAAHwAAIMBAGsFAHIWAGQAAFN0AQB8AQB8AACDAgB9AwB8AwCIAABkAQAZawMAcm8AfAMAiAAAZAEAGWsEAHJaAHQCAHwAAHwBAGQCAIMDAIIBAG4AAHQDAHwAAHwBAGQDAIMDAIIBAG4AAGQAAFMoBAAAAE5p/////3MPAAAAaWxsZWdhbCBuZXN0aW5ncxAAAABub3QgYSBwZWVyIGVudHJ5KAQAAABS3QAAAFI3AAAAUh8AAABSHQAAACgEAAAAUoQAAABSTgEAAFJwAAAAdAYAAABjdXJDb2woAQAAAHQLAAAAaW5kZW50U3RhY2soAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0DwAAAGNoZWNrUGVlckluZGVudJ8UAABzDgAAAAABEgAEAQ8BEAEQARUBYwMAAAAEAAAABAAAABMAAABzRQAAAHQAAHwBAHwAAIMCAH0DAHwDAIgAAGQBABlrBAByLwCIAABqAQB8AwCDAQABbhIAdAIAfAAAfAEAZAIAgwMAggEAZAAAUygDAAAATmn/////cw4AAABub3QgYSBzdWJlbnRyeSgDAAAAUjcAAABSBAEAAFIdAAAAKAQAAABShAAAAFJOAQAAUnAAAABSKwMAACgBAAAAUiwDAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0DgAAAGNoZWNrU3ViSW5kZW50pxQAAHMIAAAAAAEPARABEAJjAwAAAAQAAAAEAAAAEwAAAHNuAAAAfAEAdAAAfAAAgwEAawUAchYAZAAAU3QBAHwBAHwAAIMCAH0DAIgAAG9IAHwDAIgAAGQBABlrAABvSAB8AwCIAABkAgAZawEAc2AAdAIAfAAAfAEAZAMAgwMAggEAbgAAiAAAagMAgwAAAWQAAFMoBAAAAE5p/////2n+////cw8AAABub3QgYW4gdW5pbmRlbnQoBAAAAFLdAAAAUjcAAABSHQAAAFL/AAAAKAQAAABShAAAAFJOAQAAUnAAAABSKwMAACgBAAAAUiwDAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHl0DQAAAGNoZWNrVW5pbmRlbnSuFAAAcwwAAAAAARIABAEPASYBFQFzAgAAAAkgdAYAAABJTkRFTlRScgAAAHQIAAAAVU5JTkRFTlRzDgAAAGluZGVudGVkIGJsb2NrKAsAAABSFwAAAFIRAAAAUvcBAABS9QEAAFILAAAAUnoAAABSggEAAFIPAAAAUhkAAABS+QEAAFLaAgAAKAsAAAB0EgAAAGJsb2NrU3RhdGVtZW50RXhwclIsAwAAUiQBAABSLQMAAFIuAwAAUi8DAABSNwEAAFIwAwAAdAQAAABQRUVSdAYAAABVTkRFTlR0BgAAAHNtRXhwcigAAAAAKAEAAABSLAMAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSZAAAAFEUAABzHAAAAABODwgPBw8HHgEiARsBGwEGAQMCOAIMASQBFAFzIwAAAFtcMHhjMC1cMHhkNlwweGQ4LVwweGY2XDB4ZjgtXDB4ZmZdcxcAAABbXDB4YTEtXDB4YmZcMHhkN1wweGY3XXMCAAAAXzpzBwAAAGFueSB0YWdzGAAAAGd0IGx0IGFtcCBuYnNwIHF1b3QgYXBvc3MGAAAAPjwmICIncwwAAAAmKD9QPGVudGl0eT5S3QIAAHMCAAAAKTtzEgAAAGNvbW1vbiBIVE1MIGVudGl0eWMBAAAAAQAAAAIAAABDAAAAcxAAAAB0AABqAQB8AABqAgCDAQBTKAEAAABzUgAAAEhlbHBlciBwYXJzZXIgYWN0aW9uIHRvIHJlcGxhY2UgY29tbW9uIEhUTUwgZW50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LSBJU084NjAxIEx7ZGF0ZXM8aXNvODYwMV9kYXRlPn0gYW5kIEx7ZGF0ZXRpbWU8aXNvODYwMV9kYXRldGltZT59CiAgICAgLSBMe1VVSUQ8dXVpZD59CiAgICAgLSBMe2NvbW1hLXNlcGFyYXRlZCBsaXN0PGNvbW1hX3NlcGFyYXRlZF9saXN0Pn0KICAgIFBhcnNlIGFjdGlvbnM6CiAgICAgLSBDe0x7Y29udmVydFRvSW50ZWdlcn19CiAgICAgLSBDe0x7Y29udmVydFRvRmxvYXR9fQogICAgIC0gQ3tMe2NvbnZlcnRUb0RhdGV9fQogICAgIC0gQ3tMe2NvbnZlcnRUb0RhdGV0aW1lfX0KICAgICAtIEN7THtzdHJpcEhUTUxUYWdzfX0KICAgICAtIEN7THt1cGNhc2VUb2tlbnN9fQogICAgIC0gQ3tMe2Rvd25jYXNlVG9rZW5zfX0KCiAgICBFeGFtcGxlOjoKICAgICAgICBweXBhcnNpbmdfY29tbW9uLm51bWJlci5ydW5UZXN0cygnJycKICAgICAgICAgICAgIyBhbnkgaW50IG9yIHJlYWwgbnVtYmVyLCByZXR1cm5lZCBhcyB0aGUgYXBwcm9wcmlhdGUgdHlwZQogICAgICAgICAgICAxMDAKICAgICAgICAgICAgLTEwMAogICAgICAgICAgICArMTAwCiAgICAgICAgICAgIDMuMTQxNTkKICAgICAgICAgICAgNi4wMmUyMwogICAgICAgICAgICAxZS0xMgogICAgICAgICAgICAnJycpCgogICAgICAgIHB5cGFyc2luZ19jb21tb24uZm51bWJlci5ydW5UZXN0cygnJycKICAgICAgICAgICAgIyBhbnkgaW50IG9yIHJlYWwgbnVtYmVyLCByZXR1cm5lZCBhcyBmbG9hdAogICAgICAgICAgICAxMDAKICAgICAgICAgICAgLTEwMAogICAgICAgICAgICArMTAwCiAgICAgICAgICAgIDMuMTQxNTkKICAgICAgICAgICAgNi4wMmUyMwogICAgICAgICAgICAxZS0xMgogICAgICAgICAgICAnJycpCgogICAgICAgIHB5cGFyc2luZ19jb21tb24uaGV4X2ludGVnZXIucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgaGV4IG51bWJlcnMKICAgICAgICAgICAgMTAwCiAgICAgICAgICAgIEZGCiAgICAgICAgICAgICcnJykKCiAgICAgICAgcHlwYXJzaW5nX2NvbW1vbi5mcmFjdGlvbi5ydW5UZXN0cygnJycKICAgICAgICAgICAgIyBmcmFjdGlvbnMKICAgICAgICAgICAgMS8yCiAgICAgICAgICAgIC0zLzQKICAgICAgICAgICAgJycnKQoKICAgICAgICBweXBhcnNpbmdfY29tbW9uLm1peGVkX2ludGVnZXIucnVuVGVzdHMoJycnCiAgICAgICAgICAgICMgbWl4ZWQgZnJhY3Rpb25zCiAgICAgICAgICAgIDEKICAgICAgICAgICAgMS8yCiAgICAgICAgICAgIC0zLzQKICAgICAgICAgICAgMS0zLzQKICAgICAgICAgICAgJycnKQoKICAgICAgICBpbXBvcnQgdXVpZAogICAgICAgIHB5cGFyc2luZ19jb21tb24udXVpZC5zZXRQYXJzZUFjdGlvbih0b2tlbk1hcCh1dWlkLlVVSUQpKQogICAgICAgIHB5cGFyc2luZ19jb21tb24udXVpZC5ydW5UZXN0cygnJycKICAgICAgICAgICAgIyB1dWlkCiAgICAgICAgICAgIDEyMzQ1Njc4LTEyMzQtNTY3OC0xMjM0LTU2NzgxMjM0NTY3OAogICAgICAgICAgICAnJycpCiAgICBwcmludHM6OgogICAgICAgICMgYW55IGludCBvciByZWFsIG51bWJlciwgcmV0dXJuZWQgYXMgdGhlIGFwcHJvcHJpYXRlIHR5cGUKICAgICAgICAxMDAKICAgICAgICBbMTAwXQoKICAgICAgICAtMTAwCiAgICAgICAgWy0xMDBdCgogICAgICAgICsxMDAKICAgICAgICBbMTAwXQoKICAgICAgICAzLjE0MTU5CiAgICAgICAgWzMuMTQxNTldCgogICAgICAgIDYuMDJlMjMKICAgICAgICBbNi4wMmUrMjNdCgogICAgICAgIDFlLTEyCiAgICAgICAgWzFlLTEyXQoKICAgICAgICAjIGFueSBpbnQgb3IgcmVhbCBudW1iZXIsIHJldHVybmVkIGFzIGZsb2F0CiAgICAgICAgMTAwCiAgICAgICAgWzEwMC4wXQoKICAgICAgICAtMTAwCiAgICAgICAgWy0xMDAuMF0KCiAgICAgICAgKzEwMAogICAgICAgIFsxMDAuMF0KCiAgICAgICAgMy4xNDE1OQogICAgICAgIFszLjE0MTU5XQoKICAgICAgICA2LjAyZTIzCiAgICAgICAgWzYuMDJlKzIzXQoKICAgICAgICAxZS0xMgogICAgICAgIFsxZS0xMl0KCiAgICAgICAgIyBoZXggbnVtYmVycwogICAgICAgIDEwMAogICAgICAgIFsyNTZdCgogICAgICAgIEZGCiAgICAgICAgWzI1NV0KCiAgICAgICAgIyBmcmFjdGlvbnMKICAgICAgICAxLzIKICAgICAgICBbMC41XQoKICAgICAgICAtMy80CiAgICAgICAgWy0wLjc1XQoKICAgICAgICAjIG1peGVkIGZyYWN0aW9ucwogICAgICAgIDEKICAgICAgICBbMV0KCiAgICAgICAgMS8yCiAgICAgICAgWzAuNV0KCiAgICAgICAgLTMvNAogICAgICAgIFstMC43NV0KCiAgICAgICAgMS0zLzQKICAgICAgICBbMS43NV0KCiAgICAgICAgIyB1dWlkCiAgICAgICAgMTIzNDU2NzgtMTIzNC01Njc4LTEyMzQtNTY3ODEyMzQ1Njc4CiAgICAgICAgW1VVSUQoJzEyMzQ1Njc4LTEyMzQtNTY3OC0xMjM0LTU2NzgxMjM0NTY3OCcpXQogICAgdAcAAABpbnRlZ2VycwsAAABoZXggaW50ZWdlcmkQAAAAcwgAAABbKy1dP1xkK3MOAAAAc2lnbmVkIGludGVnZXJS/wIAAHQIAAAAZnJhY3Rpb25jAQAAAAEAAAADAAAAQwAAAHMQAAAAfAAAZAEAGXwAAGQCABkVUygDAAAATmkAAAAAaf////8oAAAAACgBAAAAUnAAAAAoAAAAACgAAAAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5w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AABSAQAAAHQIAAAAc3RycHRpbWV0BAAAAGRhdGVS6AEAAFIdAAAAUnUAAAAoBAAAAFKEAAAAUk4BAABScAAAAHQCAAAAdmUoAQAAAHQDAAAAZm10KAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5dAYAAABjdnRfZm65FQAAcwgAAAAAAQMBHgEPASgAAAAAKAIAAABSQgMAAFJDAwAAKAAAAAAoAQAAAFJCAwAAc5UAAAAvYnVpbGRkaXIvYnVpbGQvQlVJTERST09UL2FsdC1weXRob24yNy1zZXR1cHRvb2xzLTM2LjMuMC00LmVsOC54ODZfNjQvb3B0L2FsdC9weXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQNAAAAY29udmVydFRvRGF0ZaoVAABzBAAAAAAPDwVzFAAAACVZLSVtLSVkVCVIOiVNOiVTLiVmYwEAAAACAAAAAgAAAAMAAABzEwAAAIcAAGYBAGQBAIYAAH0BAHwBAFMoAgAAAHMTAgAACiAgICAgICAgSGVscGVyIHRvIGNyZWF0ZSBhIHBhcnNlIGFjdGlvbiBmb3IgY29udmVydGluZyBwYXJzZWQgZGF0ZXRpbWUgc3RyaW5nIHRvIFB5dGhvbiBkYXRldGltZS5kYXRldGltZQoKICAgICAgICBQYXJhbXMgLQogICAgICAgICAtIGZtdCAtIGZvcm1hdCB0byBiZSBwYXNzZWQgdG8gZGF0ZXRpbWUuc3RycHRpbWUgKGRlZmF1bHQ9Q3siJVktJW0tJWRUJUg6JU06JVMuJWYifSkKCiAgICAgICAgRXhhbXBsZTo6CiAgICAgICAgICAgIGR0X2V4cHIgPSBweXBhcnNpbmdfY29tbW9uLmlzbzg2MDFfZGF0ZXRpbWUuY29weSgpCiAgICAgICAgICAgIGR0X2V4cHIuc2V0UGFyc2VBY3Rp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eXRob24yNy9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvcGtnX3Jlc291cmNlcy9fdmVuZG9yL3B5cGFyc2luZy5weXQNAAAAc3RyaXBIVE1MVGFnc+AVAABzAgAAAAANUskCAABSPAIAAHMCAAAAIAlSOAMAAFL7AAAAUnIAAABzFAAAAGNvbW1hIHNlcGFyYXRlZCBsaXN0YwEAAAABAAAAAgAAAEMAAABzEAAAAHQAAHwAAIMBAGoBAIMAAFMoAQAAAE4oAgAAAFJ/AAAAUiwCAAAoAQAAAFJwAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlScQAAAPQVAABScgAAAGMBAAAAAQAAAAIAAABDAAAAcxAAAAB0AAB8AACDAQBqAQCDAABTKAEAAABOKAIAAABSfwAAAFL8AgAAKAEAAABScAAAACgAAAAAKAAAAABzlQAAAC9idWlsZGRpci9idWlsZC9CVUlMRFJPT1QvYWx0LXB5dGhvbjI3LXNldHVwdG9vbHMtMzYuMy4wLTQuZWw4Lng4Nl82NC9vcHQvYWx0L3B5dGhvbjI3L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9wa2dfcmVzb3VyY2VzL192ZW5kb3IvcHlwYXJzaW5nLnB5UnEAAAD3FQAAUnIAAAAoAgAAAGkAAAAAaQYAAAAoAgAAAGkAAAAAaQYAAAAoPgAAAFKPAAAAUpAAAABSsQAAAFJrAAAAUm8AAAB0EAAAAGNvbnZlcnRUb0ludGVnZXJ0BQAAAGZsb2F0dA4AAABjb252ZXJ0VG9GbG9hdFItAAAAUlAAAABSggEAAFJ6AAAAUjkDAABSQgAAAFI9AwAAUiUAAAB0DgAAAHNpZ25lZF9pbnRlZ2VyUjoDAABSlAEAAFIZAAAAUvUBAAB0DQAAAG1peGVkX2ludGVnZXJSkQIAAHQEAAAAcmVhbHQIAAAAc2NpX3JlYWxSyAEAAHQGAAAAbnVtYmVyUjsDAABSMgAAAFIxAAAAUjwDAAB0DAAAAGlwdjRfYWRkcmVzc1I+AwAAdBIAAABfZnVsbF9pcHY2X2FkZHJlc3N0EwAAAF9zaG9ydF9pcHY2X2FkZHJlc3NSmgEAAHQTAAAAX21peGVkX2lwdjZfYWRkcmVzc1IIAAAAdAwAAABpcHY2X2FkZHJlc3N0CwAAAG1hY19hZGRyZXNzUiMCAABSRAMAAFJFAwAAdAwAAABpc284NjAxX2RhdGV0EAAAAGlzbzg2MDFfZGF0ZXRpbWV0BAAAAHV1aWRSNQAAAFI0AAAAUkcDAABSSAMAAFIXAAAAUhMAAABSEQAAAFJUAAAAUiwAAAB0DQAAAF9jb21tYXNlcGl0ZW1SPgAAAFJXAAAAUtIAAAB0FAAAAGNvbW1hX3NlcGFyYXRlZF9saXN0UmIAAABSQAAAACgAAAAAKAAAAAAoAAAAAHOVAAAAL2J1aWxkZGlyL2J1aWxkL0JVSUxEUk9PVC9hbHQtcHl0aG9uMjctc2V0dXB0b29scy0zNi4zLjAtNC5lbDgueDg2XzY0L29wdC9hbHQvcHl0aG9uMjcvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9weXBhcnNpbmcucHlSbAAAAOkUAABzTAAAAAaGBgIMBQwFHgMnAx4DLwIQAi0CDQIeAx4EFAMeAyADFQMVARsBOwEQARMBJgMVAwMBDxUDAQ8VFQMVAxUDFgEPDwYBSgErAxUDFQF0CAAAAF9fbWFpbl9fdAYAAABzZWxlY3R0BAAAAGZyb21zAgAAAF8kUsMCAABSywIAAHQHAAAAY29sdW1uc1KDAQAAdAYAAAB0YWJsZXN0BwAAAGNvbW1hbmRzSwIAAAogICAgICAgICMgJyonIGFzIGNvbHVtbiBsaXN0IGFuZCBkb3R0ZWQgdGFibGUgbmFtZQogICAgICAgIHNlbGVjdCAqIGZyb20gU1lTLlhZWlpZCgogICAgICAgICMgY2FzZWxlc3MgbWF0Y2ggb24gIlNFTEVDVCIsIGFuZCBjYXN0cyBiYWNrIHRvICJzZWxlY3QiCiAgICAgICAgU0VMRUNUICogZnJvbSBYWVpaWSwgQUJDCgogICAgICAgICMgbGlzdCBvZiBjb2x1bW4gbmFtZXMs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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 1 × Files: 8
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
packaging
DIR
-
drwxr-xr-x
2024-03-03 22:49:24
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
appdirs.py
21.85 KB
lrw-r--r--
2023-11-13 21:14:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
appdirs.pyc
21.87 KB
lrw-r--r--
2023-11-13 21:14:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pyparsing.py
224.48 KB
lrw-r--r--
2023-11-13 21:14:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
pyparsing.pyc
263.70 KB
lrw-r--r--
2023-11-13 21:14:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.py
29.39 KB
lrw-r--r--
2023-11-13 21:14:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
six.pyc
37.42 KB
lrw-r--r--
2023-11-13 21:14:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.py
0 B
lrw-r--r--
2023-11-13 21:14:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.pyc
235 B
lrw-r--r--
2023-11-13 21:14:06
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).