REDROOM
PHP 7.4.33
Path:
Logout
Edit File
Size: 379.13 KB
Close
//usr/share/mysql-8.0/norwegian-ny/errmsg.sys
Text
Base64
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dV0AAAFeAABRXgAA914AADdfAABWXwAA2V8AAClgAABsYAAAqGAAAPZgAABAYQAAeGEAAOFhAAAmYgAAiWIAAP1iAAAeYwAAcmMAAKJjAADxYwAAHWQAAFNkAACHZAAAtGQAAN5kAAAWZQAAIGUAACplAABrZQAApWUAAPJlAAAXZgAAM2YAAKpmAADrZgAASmcAAJNnAADtZwAANGgAAGtoAACgaAAA4GgAACNpAABpaQAAymkAAPtpAAA9agAAbmoAAM5qAAD6agAAL2sAAHVrAACtawAA52sAABlsAABnbAAAp2wAAOJsAABEbQAAa20AAJ1tAAAMbgAAOW4AAHluAAC9bgAA424AABhvAABTbwAArm8AABhwAABTcAAAkXAAALZwAADfcAAAF3EAADhxAABtcQAAtXEAACdyAABpcgAAo3IAAN5yAAD9cgAAH3MAAEdzAAB2cwAAinMAAJxzAADScwAAH3QAAHd0AACLdAAAvnQAAPh0AAB5dQAAmHUAANV1AADtdQAADXYAAB92AABKdgAAcnYAAK92AADKdgAA6nYAAER3AAB/dwAAq3cAANR3AADwdwAADngAAE54AACjeAAA4ngAAAd5AAB1eQAABnoAAGZ6AACyegAABHsAADJ7AABpewAAkHsAAKF7AADTewAA7HsAADx8AAClfAAAwXwAAAB9AAAsfQAASX0AAH19AACefQAA4n0AAEJ+AABnfgAAmX4AAMt+AABnfwAAqn8AAOh/AAAkgAAAY4AAAI6AAADGgAAAQ4EAAMeBAAD7gQAAK4IAAJGCAAChggAAvIIAANiCAADsggAACYMAADKDAABhgwAAl4MAANeDAAAGhAAARIQAAIOEAAC6hAAA6oQAACCFAABIhQAApYUAAM6FAAD9hQAAH4YAAF+GAACohgAA04YAAASHAAA1hwAATYcAAHCHAACjhwAA4YcAAE+IAAB2iAAA44gAAB+JAABTiQAAhokAALmJAADsiQAAWYoAAGKKAABoigAAcooAAH+KAACJigAAkYoAALmKAADvigAAD4sAADKLAABciwAAhYsAALCLAADbiwAA/IsAADuMAABijAAAiIwAAKGMAAD/jAAAUI0AAHmNAACxjQAA240AAPiNAAAijgAAZ44AALWOAAD8jgAANY8AAMCPAABnkAAAEpEAAMCRAABpkgAA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1REEANgRBADbEQQA3hEEAOERBADkEQQA5xEEAOoRBADtEQQA8BEEAPMRBAD2EQQA+REEAPwRBAD/EQQAAhIEAAUSBABtEgQAnxIEADgTBACLEwQA+BQEADIVBABgFQQAkxUEAA0WBABOFgQAfRYEAKwWBADMFgQAARcEAEwXBABPFwQAZBcEAHsXBACpFwQA0xcEAA4YBABNGAQAehgEABYZBABDGQQAeRkEAKYZBADTGQQAFxoEAE0aBACGGgQAHRsEAHMbBACjGwQAihwEAL0cBABHHQQABR4EAAgeBAALHgQAUh4EAKIeBAAKHwQAOB8EADsfBAA+HwQAVR8EAFgfBABbHwQAXh8EAGEfBABkHwQAZx8EABQgBABmIAQAviAEABohBABEIQQAdiEEAOQhBAAUIgQASyIEAG8iBACIIgQAxSIEAAgjBACCIwQAmiMEAMUjBAALJAQA4CQEAFklBACWJQQAMCYEAGomBACTJgQAySYEAMwmBADPJgQA0iYEANUmBADYJgQA2yYEAN4mBADhJgQA5CYEAOcmBADqJgQA7SYEAPAmBADzJgQA9iYEAPkmBAD8JgQA/yYEAAInBAAFJwQACCcEAAsnBAAOJwQAEScEABQnBAAXJwQAGicEAB0nBAAgJwQAIycEACYnBAApJwQALCcEAC8nBAAyJwQANScEADgnBAA7JwQAPicEAEEnBABEJwQARycEAEonBABNJwQAUCcEAFMnBABWJwQAWScEAFwnBABfJwQAYicEAGUnBABoJwQAaycEAG4nBABxJwQAdCcEAHcnBAB6JwQAfScEAIAnBACDJwQAhicEAIknBACMJwQAjycEAJInBACVJwQAmCcEAJsnBACeJwQAoScEAKQnBACnJwQAqicEAK0nBACwJwQAsycEALYnBAC5JwQAvCcEAL8nBADCJwQAxScEAMgnBADLJwQAzicEANEnBADUJwQA1ycEANonBADdJwQA4CcEAOMnBADmJwQA6ScEAOwnBADvJwQA8icEAPUnBAD4JwQA+ycEABooBAAdKAQAICgEAIQoBACHKAQAiigEAI0oBACQKAQAkygEAJYoBACZKAQAnCgEAJ8oBACiKAQApSgEAKgoBACrKAQArigEALEoBAC0KAQAtygEALooBAC9KAQAwCgEAMMoBADGKAQAySgEAMwoBADPKAQA0igEANUoBADYKAQA2ygEAN4oBADhKAQA5CgEAOcoBADqKAQA7SgEAPAoBADzKAQA9igEAPkoBAD8KAQA/ygEAAIpBAAFKQQACCkEAAspBAAOKQQAESkEABQpBAAXKQQAGikEAB0pBAAgKQQAIykEACYpBAApKQQALCkEAC8pBAAyKQQANSkEADgpBAA7KQQAPikEAEEpBABEKQQARykEAEopBABNKQQAUCkEAFMpBABWKQQAWSkEAFwpBABfKQQAYikEAGUpBABoKQQAaykEAG4pBABxKQQAdCkEAHcpBAB6KQQAfSkEAIApBACDKQQAhikEAIkpBACMKQQAjykEAJIpBACVKQQAmCkEAJspBACeKQQAoSkEAKQpBACnKQQAqikEAK0pBACwKQQAsykEALYpBAC5KQQAvCkEAL8pBADCKQQAxSkEAMgpBADLKQQAzikEANEpBADUKQQA1ykEANopBADdKQQA4CkEAOMpBADmKQQA6SkEAOwpBADvKQQA8ikEAPUpBAD4KQQA+ykEAP4pBAABKgQABCoEAAcqBAAKKgQADSoEABAqBAATKgQAFioEABkqBAAcKgQAHyoEACIqBAAlKgQAKCoEACsqBAAuKgQAMSoEADQqBAA3KgQAOioEAD0qBABAKgQAQyoEAEYqBABJKgQATCoEAE8qBABSKgQAVSoEAFgqBABbKgQAXioEAGEqBABkKgQAZyoEAGoqBABtKgQAcCoEAHMqBAB2KgQAeSoEAHwqBAB/KgQAgioEAIUqBACIKgQAiyoEAI4qBACRKgQAlCoEAJcqBACaKgQAnSoEAKAqBACjKgQApioEAKkqBACsKgQAryoEALIqBAC1KgQAuCoEALsqBAC+KgQAwSoEAMQqBADHKgQAyioEAM0qBADQKgQA0yoEANYqBADZKgQAXSsEAMgrBADwKwQATywEAJ8sBADfLAQADy0EAFwtBACaLQQAyi0EAPstBAArLgQAci4EAJEuBACqLgQAuy4EAOwuBAAbLwQAYC8EAJ8vBADgLwQA+y8EACAwBABBMAQAhDAEAKAwBADAMAQA4TAEABIxBAA9MQQAYTEEAKIxBADfMQQACjIEAGcyBACFMgQAoDIEAMAyBADqMgQAETMEAHQzBADUMwQA+zMEADc0BABWNAQAwjQEAPg0BAA8NQQAnDUEABg2BABdNgQA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ciBmZWlsIGkgbnlra2VsZmlsYTsgcHLDuHYgw6UgcmVwYXJlcmUgZGVuAEdhbW1lbCBueWtrZWxmaWwgZm9yIHRhYmVsbGVuICclLS4xOTJzJzsgcmVwYXJlciBkZW4hACclLS4xOTJzJyBlciBza3JpdmV0cnlnZ2phAElra2plIG1laXIgbWlubmUuIFN0YXJ0IHDDpSBueXR0IHRlbmVzdGVuIG9nIHByw7h2IGlnamVuICh0cmVuZ3RlICVkIGJ5dGFyKQBJa2tqZSBtZWlyIHNvcnRlcmluZ3NtaW5uZS4gVnVyZGVyIMOlIGF1a2Ugc29ydGVyaW5nc21pbm5ldCAoc29ydGVyaW5nc2J1ZmZlciBzdG9ybGVpaykgZm9yIHRlbmVzdGVuAFV2ZW50YSBzbHV0dCBww6UgZmlsIChlb2YpIHZlZCBsZXNpbmcgYXYgZmlsYSAnJS0uMTkycycgKEZlaWxrb2RlOiAlZCAtICVzKQBGb3IgbWFuZ2UgdGlsa29wbGluZ2FyIChjb25uZWN0aW9ucykAVG9tdCBmb3IgdHLDpWQgcGxhc3MvbWlubmUAS2FuIGlra2plIGbDpSB0YWsgaSB2ZXJ0c25hdm4gZm9yIGRpIGFkcmVzc2UARmVpbCBoYW5kdHJ5a2sgKGhhbmRzaGFrZSkAVGlsZ2FuZyBpa2tqZSB0aWxsYXRlIGZvciBicnVrYXI6ICclLS40OHMnQCclLS42NHMnIHRpbCBkYXRhYmFzZW4gJyUtLjE5MnMnIG5la3RhAFRpbGdhbmcgaWtrZSB0aWxsYXRlIGZvciBicnVrYXI6ICclLS40OHMnQCclLS42NHMnIChCcnVrYXIgcGFzc29yZDogJXMpAEluZ2VuIGRhdGFiYXNlIHZhbGQAVWtqZW50IGtvbW1hbmRvAEtvbG9ubmUgJyUtLjE5MnMnIGthbiBpa2tqZSB2ZXJlIG51bGwAVWtqZW50IGRhdGFiYXNlICclLS4xOTJzJwBUYWJlbGxlbiAnJS0uMTkycycgZWtzaXN0ZXJhciBhbGxlcmVpZGUAVWtqZW50IHRhYmVsbCAnJS0uMTI5cycAS29sb25uZTogJyUtLjE5MnMnIGkgdGFiZWxsICUtLjE5MnMgZXIgaWtramUgZWludHlkaWcAVGVuYXIgbmVka29wbGluZyBlciBpIGdhbmcAVWtqZW50IGZlbHQgJyUtLjE5MnMnIGkgdGFiZWxsICUtLjE5MnMAQnJ1a3RlICclLS4xOTJzJyBzb20gaWtramUgdmFyIGkgZ3JvdXAgYnkAS2FuIGlra2plIGdydXBwZXJlIHDDpSAnJS0uMTkycycAVXR0cnlra2V0IGhhciBzdW1tZXIgKHN1bSkgZnVua3Nqb25lciBvZyBrb2xvbm5lciBpIHNhbWUgdXR0cnlrawBLb2xvbm5lIHRlbGxpbmcgc3RlbW1lciB2ZXJkaSB0ZWxsaW5nAElkZW50aWZpa2F0b3IgJyUtLjEwMHMnIGVyIGZvciBsYW5nAEZlbHRuYW1uZXQgJyUtLjE5MnMnIGVrc2lzdGVydGUgZnLDpSBmw7hyAE7DuGtrZWxuYW1uZXQgJyUtLjE5MnMnIGVrc2lzdGVydGUgZnLDpSBmw7hyAExpa2UgdmVyZGlhciAnJS0uMTkycycgZm9yIG55a2tlbCAlZABGZWlsIGtvbG9ubmUgc3Blc2lmaWthdG9yIGZvciBrb2xvbm5lICclLS4xOTJzJwAlcyBhdHRtZWQgJyUtLjgwcycgcMOlIGxpbmUgJWQARsO4cmVzcHVybmFkIHZhciB0b20ASWtramUgdW5pa3QgdGFiZWxsL2FsaWFzOiAnJS0uMTkycycAVWd5bGRpZyBzdGFuZGFyZHZlcmRpIGZvciAnJS0uMTkycycARmxlaXJlIHByaW3DpnJueWtsYXIgc3Blc2lmaXNlcnQARm9yIG1hbmdlIG55a2xlciBzcGVzaWZpc2VydC4gTWFrcyAlZCBueWtsYXIgdGlsbGF0dABGb3IgbWFuZ2Ugbnlra2VsZGVsYXIgc3Blc2lmaXNlcnQuIE1ha3MgJWQgZGVsYXIgdGlsbGF0dABTcGVzaWZpc2VydCBueWtrZWwgdmFyIGZvciBsYW5nLiBNYWtzIG55a2tlbGxlbmdkZSBlciAlZABOeWtrZWwga29sb25uZSAnJS0uMTkycycgZWtzaXRlcmFyIGlra2plIGkgdGFiZWxsZW4AQmxvYiBrb2xvbm5lICclLS4xOTJzJyBrYW4gaWtramUgYnJ1a2FzdCB2ZWQgc3Blc2lmaWthc2pvbiBhdiBueWtsYXIARm9yIHN0b3Igbnlra2VsbGVuZ2RlIGZvciBmZWx0ICclLS4xOTJzJyAobWFrcyA9ICVsdSkuIEJydWsgQkxPQiBpc3RhZGVuZm9yAEJhcmUgZWl0dCBhdXRvIGZlbHQga2FuIHbDpnJlIGRlZmluZXJ0IHNvbSBuw7hra2VsLgAlczoga2xhciBmb3IgdGlsa29ibGluZ2FyClZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQAJXM6IE5vcm1hbCBuZWRrb3BsaW5nCgAlczogT3BwZGFnYSBzaWduYWwgJWQuIEF2c2x1dHRhciEKACVzOiBOZWRrb3BsaW5nIGtvbXBsZXR0CgAlczogUMOldHZpbmdhIGF2c2x1dG5pbmcgYXYgdHLDpWQgJWxkICBicnVrYXI6ICclLS40OHMnCgBLYW4gaWtramUgb3BwcmV0dGUgSVAgc29ja2V0AFRhYmVsbGVuICclLS4xOTJzJyBoYXIgaW5nZW4gaW5kZXggc29tIGRlbiBzb20gZXIgYnJ1a3QgaSBDUkVBVEUgSU5ERVguIE9wcmV0dCB0YWJlbGxlbiBww6Ugbnl0dABGZWx0IHNraWxqZXIgYXJndW1lbnRhIGVyIGlra2plIHNvbSB2ZW50YSwgc2rDpSBkb2t1bWVudGFzam9uZW4ARWluIGthbiBpa2tqZSBicnVrZSBmYXN0ZSBmZWx0bGVuZ2RlciBtZWQgQkxPQi4gVmVubmxpc2d0IGJydWsgJ2ZpZWxkcyB0ZXJtaW5hdGVkIGJ5Jy4ARmlsZW4gJyUtLjEyOHMnIG3DpSB2w6ZyZSBpIGRhdGFiYXNlLWthdGFsb2dlbiBmb3Igw6UgdsOmcmUgbGVzYmFyIGZvciBhbGxlAEZpbGVuICclLS4yMDBzJyBla3Npc3RlcnRlIGFsbGVyZWlkZQBQb3N0ZXI6ICVsZCAgRmplcm5hOiAlbGQgIEhvcHBhIG92ZXI6ICVsZCAgw4V0dmFyaW5nYXI6ICVsZABQb3N0ZXI6ICVsZCAgTGlrZTogJWxkAEZlaWwgZGVsbnlra2VsLiBEZW4gYnJ1a3RlIGRlbG55a2tlbGVuIGVyIGlra2plIGVpbiBzdHJlbmcgZWxsZXIgZGVuIG9wcGdpdHRlIGxlbmdkYSBlciBsZW5ncmUgZW5uIG55a2tlbGxlbmdkZW4ARWluIGthbiBpa2tqZSBzbGV0dGUgYWxsZSBmZWx0IG1lZCBBTFRFUiBUQUJMRS4gQnJ1ayBEUk9QIFRBQkxFIGlzdGFkZW5mb3IuAEthbiBpa2tqZSBEUk9QICclLS4xOTJzJy4gVW5kZXJzw7hrIG9tIGZlbHQvbsO4a2tlbCBla3Npc3RlcmFyLgBQb3N0YXI6ICVsZCAgTGlrZTogJWxkICDDhXR2YXJpbmdhcjogJWxkAFlvdSBjYW4ndCBzcGVjaWZ5IHRhcmdldCB0YWJsZSAnJS0uMTkycycgZm9yIHVwZGF0ZSBpbiBGUk9NIGNsYXVzZQBVa2plbnQgdHLDpWQgaWQ6ICVsdQBEdSBlciBpa2tqZSBlaWdhciBhdiB0csOlZCAlbHUASW5nZW4gdGFiZWxsYXIgaSBicnVrAEZvciBtYW5nZSB0ZWtzdHN0cmVuZ2FyIGZlbHQgJS0uMTkycyBvZyBTRVQAS2FuIGlra2plIGxhZ2UgdW5pa3QgbG9nZ2ZpbG5hdm4gJS0uMjAwcy4oMS05OTkpCgBUYWJlbGxlbiAnJS0uMTkycycgdmFyIGzDpXN0IG1lZCBSRUFEIGzDpXMgb2cga2FuIGlra2plIG9wcGRhdGVyYXN0AFRhYmVsbGVuICclLS4xOTJzJyB2YXIgaWtramUgbMOlc3QgbWVkIExPQ0sgVEFCTEVTAEJsb2IgZmVsdGV0ICclLS4xOTJzJyBrYW4gaWtramUgaGEgZWluIHN0YW5kYXJkIHZlcmRpAFVneWxkaWcgZGF0YWJhc2UgbmFtbiAnJS0uMTAwcycAVWd5bGRpZyB0YWJlbGwgbmFtbiAnJS0uMTAwcycAU0VMRUNUIHZpbGxlIHVuZGVyc8O4a2plIGZvciBtYW5nZSBwb3N0YXIgb2cgdmlsbGUgc2FubnN5bmxpZ3ZpcyB0YSB2ZWxkaWcgbGFuZyB0aWQuIFVuZGVyc8O4ayBXSEVSRSBrbGF1c3VsZW4gb2cgYnJ1ayBTRVQgU1FMX0JJR19TRUxFQ1RTPTEgb20gU0VMRUNUZW4gZXIga29ycmVrdABVa2plbmQgZmVpbABVa2plbmQgcHJvc2VkeXJlICUtLjE5MnMARmVpbCBwYXJhbWV0ZXIgdGFsIHRpbCBwcm9zZWR5cmEgJS0uMTkycwBGZWlsIHBhcmFtZXRlciB0aWwgcHJvc2VkeXJhICUtLjE5MnMAVWtqZW5kIHRhYmVsbCAnJS0uMTkycycgaSAlLS4zMnMARmVsdGV0ICclLS4xOTJzJyBlciBzcGVzaWZpc2VydCB0byBnYW5nYXIASW52YWxpZCB1c2Ugb2YgZ3JvdXAgZnVuY3Rpb24AVGFibGUgJyUtLjE5MnMnIHVzZXMgYSBleHRlbnNpb24gdGhhdCBkb2Vzbid0IGV4aXN0IGluIHRoaXMgTXlTUUwgdmVyc2lvbgBBIHRhYmxlIG11c3QgaGF2ZSBhdCBsZWFzdCAxIGNvbHVtbgBUaGUgdGFibGUgJyUtLjE5MnMnIGlzIGZ1bGwAVW5rbm93biBjaGFyYWN0ZXIgc2V0OiAnJS0uNjRzJwBUb28gbWFueSB0YWJsZXM7IE15U1FMIGNhbiBvbmx5IHVzZSAlZCB0YWJsZXMgaW4gYSBqb2luAFRvbyBtYW55IGNvbHVtbnMAUm93IHNpemUgdG9vIGxhcmdlLiBUaGUgbWF4aW11bSByb3cgc2l6ZSBmb3IgdGhlIHVzZWQgdGFibGUgdHlwZSwgbm90IGNvdW50aW5nIEJMT0JzLCBpcyAlbGQuIFRoaXMgaW5jbHVkZXMgc3RvcmFnZSBvdmVyaGVhZCwgY2hlY2sgdGhlIG1hbnVhbC4gWW91IGhhdmUgdG8gY2hhbmdlIHNvbWUgY29sdW1ucyB0byBURVhUIG9yIEJMT0JzAFRocmVhZCBzdGFjayBvdmVycnVuOiAgVXNlZDogJWxkIG9mIGEgJWxkIHN0YWNrLiAgVXNlICdteXNxbGQgLS10aHJlYWRfc3RhY2s9IycgdG8gc3BlY2lmeSBhIGJpZ2dlciBzdGFjayBpZiBuZWVkZWQAQ3Jvc3MgZGVwZW5kZW5jeSBmb3VuZCBpbiBPVVRFUiBKT0lOOyBleGFtaW5lIHlvdXIgT04gY29uZGl0aW9ucwBUYWJsZSBoYW5kbGVyIGRvZXNuJ3Qgc3VwcG9ydCBOVUxMIGluIGdpdmVuIGluZGV4LiBQbGVhc2UgY2hhbmdlIGNvbHVtbiAnJS0uMTkycycgdG8gYmUgTk9UIE5VTEwgb3IgdXNlIGFub3RoZXIgaGFuZGxlcgBDYW4ndCBsb2FkIGZ1bmN0aW9uICclLS4xOTJzJwBDYW4ndCBpbml0aWFsaXplIGZ1bmN0aW9uICclLS4xOTJzJzsgJS0uMTkycwBObyBwYXRocyBhbGxvd2VkIGZvciBzaGFyZWQgbGlicmFyeQBGdW5jdGlvbiAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMAQ2FuJ3Qgb3BlbiBzaGFyZWQgbGlicmFyeSAnJS0uMTkycycgKGVycm5vOiAlZCAlLS4xMjhzKQBDYW4ndCBmaW5kIHN5bWJvbCAnJS0uMTI4cycgaW4gbGlicmFyeQBGdW5jdGlvbiAnJS0uMTkycycgaXMgbm90IGRlZmluZWQASG9zdCAnJS0uMjU1cycgaXMgYmxvY2tlZCBiZWNhdXNlIG9mIG1hbnkgY29ubmVjdGlvbiBlcnJvcnM7IHVuYmxvY2sgd2l0aCAnbXlzcWxhZG1pbiBmbHVzaC1ob3N0cycASG9zdCAnJS0uMjU1cycgaXMgbm90IGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGlzIE15U1FMIHNlcnZlcgBZb3UgYXJlIHVzaW5nIE15U1FMIGFzIGFuIGFub255bW91cyB1c2VyIGFuZCBhbm9ueW1vdXMgdXNlcnMgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSBwYXNzd29yZHMAWW91IG11c3QgaGF2ZSBwcml2aWxlZ2VzIHRvIHVwZGF0ZSB0YWJsZXMgaW4gdGhlIG15c3FsIGRhdGFiYXNlIHRvIGJlIGFibGUgdG8gY2hhbmdlIHBhc3N3b3JkcyBmb3Igb3RoZXJzAENhbid0IGZpbmQgYW55IG1hdGNoaW5nIHJvdyBpbiB0aGUgdXNlciB0YWJsZQBSb3dzIG1hdGNoZWQ6ICVsZCAgQ2hhbmdlZDogJWxkICBXYXJuaW5nczogJWxkAENhbid0IGNyZWF0ZSBhIG5ldyB0aHJlYWQgKGVycm5vICVkKTsgaWYgeW91IGFyZSBub3Qgb3V0IG9mIGF2YWlsYWJsZSBtZW1vcnkgeW91IGNhbiBjb25zdWx0IHRoZSBtYW51YWwgZm9yIGFueSBwb3NzaWJsZSBPUyBkZXBlbmRlbnQgYnVnAENvbHVtbiBjb3VudCBkb2Vzbid0IG1hdGNoIHZhbHVlIGNvdW50IGF0IHJvdyAlbGQAQ2FuJ3QgcmVvcGVuIHRhYmxlOiAnJS0uMTkycwBJbnZhbGlkIHVzZSBvZiBOVUxMIHZhbHVlAEdvdCBlcnJvciAnJS0uNjRzJyBmcm9tIHJlZ2V4cABNaXhpbmcgb2YgR1JPVVAgY29sdW1ucyAoTUlOKCksTUFYKCksQ09VTlQoKSwuLi4pIHdpdGggbm8gR1JPVVAgY29sdW1ucyBpcyBpbGxlZ2FsIGlmIHRoZXJlIGlzIG5vIEdST1VQIEJZIGNsYXVzZQBUaGVyZSBpcyBubyBzdWNoIGdyYW50IGRlZmluZWQgZm9yIHVzZXIgJyUtLjQ4cycgb24gaG9zdCAnJS0uMjU1cycAJS0uMTI4cyBjb21tYW5kIGRlbmllZCB0byB1c2VyICclLS40OHMnQCclLS42NHMnIGZvciB0YWJsZSAnJS0uNjRzJwAlLS4xNnMgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAnJS0uNDhzJ0AnJS0uNjRzJyBmb3IgY29sdW1uICclLS4xOTJzJyBpbiB0YWJsZSAnJS0uMTkycycASWxsZWdhbCBHUkFOVC9SRVZPS0UgY29tbWFuZDsgcGxlYXNlIGNvbnN1bHQgdGhlIG1hbnVhbCB0byBzZWUgd2hpY2ggcHJpdmxlZ2VzIGNhbiBiZSB1c2VkLgBUaGUgaG9zdCBvciB1c2VyIGFyZ3VtZW50IHRvIEdSQU5UIGlzIHRvbyBsb25nAFRhYmxlICclLS4xOTJzLiUtLjE5MnMnIGRvZXNuJ3QgZXhpc3QAVGhlcmUgaXMgbm8gc3VjaCBncmFudCBkZWZpbmVkIGZvciB1c2VyICclLS40OHMnIG9uIGhvc3QgJyUtLjI1NXMnIG9uIHRhYmxlICclLS4xOTJzJwBUaGUgdXNlZCBjb21tYW5kIGlzIG5vdCBhbGxvd2VkIHdpdGggdGhpcyBNeVNRTCB2ZXJzaW9uAFNvbWV0aGluZyBpcyB3cm9uZyBpbiB5b3VyIHN5bnRheABEZWxheWVkIGluc2VydCB0aHJlYWQgY291bGRuJ3QgZ2V0IHJlcXVlc3RlZCBsb2NrIGZvciB0YWJsZSAlLS4xOTJzAFRvbyBtYW55IGRlbGF5ZWQgdGhyZWFkcyBpbiB1c2UAQWJvcnRlZCBjb25uZWN0aW9uICVsZCB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnICglLS42NHMpAEdvdCBhIHBhY2tldCBiaWdnZXIgdGhhbiAnbWF4X2FsbG93ZWRfcGFja2V0JyBieXRlcwBHb3QgYSByZWFkIGVycm9yIGZyb20gdGhlIGNvbm5lY3Rpb24gcGlwZQBHb3QgYW4gZXJyb3IgZnJvbSBmY250bCgpAEdvdCBwYWNrZXRzIG91dCBvZiBvcmRlcgBDb3VsZG4ndCB1bmNvbXByZXNzIGNvbW11bmljYXRpb24gcGFja2V0AEdvdCBhbiBlcnJvciByZWFkaW5nIGNvbW11bmljYXRpb24gcGFja2V0cwBHb3QgdGltZW91dCByZWFkaW5nIGNvbW11bmljYXRpb24gcGFja2V0cwBHb3QgYW4gZXJyb3Igd3JpdGluZyBjb21tdW5pY2F0aW9uIHBhY2tldHMAR290IHRpbWVvdXQgd3JpdGluZyBjb21tdW5pY2F0aW9uIHBhY2tldHMAUmVzdWx0IHN0cmluZyBpcyBsb25nZXIgdGhhbiAnbWF4X2FsbG93ZWRfcGFja2V0JyBieXRlcwBUaGUgdXNlZCB0YWJsZSB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCBCTE9CL1RFWFQgY29sdW1ucwBUaGUgdXNlZCB0YWJsZSB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCBBVVRPX0lOQ1JFTUVOVCBjb2x1bW5zAElOU0VSVCBERUxBWUVEIGNhbid0IGJlIHVzZWQgd2l0aCB0YWJsZSAnJS0uMTkycycgYmVjYXVzZSBpdCBpcyBsb2NrZWQgd2l0aCBMT0NLIFRBQkxFUwBJbmNvcnJlY3QgY29sdW1uIG5hbWUgJyUtLjEwMHMnAFRoZSB1c2VkIHRhYmxlIGhhbmRsZXIgY2FuJ3QgaW5kZXggY29sdW1uICclLS4xOTJzJwBBbGwgdGFibGVzIGluIHRoZSBNRVJHRSB0YWJsZSBhcmUgbm90IGRlZmluZWQgaWRlbnRpY2FsbHkAQ2FuJ3Qgd3JpdGUsIGJlY2F1c2Ugb2YgdW5pcXVlIGNvbnN0cmFpbnQsIHRvIHRhYmxlICclLS4xOTJzJwBCTE9CIGNvbHVtbiAnJS0uMTkycycgdXNlZCBpbiBrZXkgc3BlY2lmaWNhdGlvbiB3aXRob3V0IGEga2V5IGxlbmd0aABBbGwgcGFydHMgb2YgYSBQUklNQVJZIEtFWSBtdXN0IGJlIE5PVCBOVUxMOyBpZiB5b3UgbmVlZCBOVUxMIGluIGEga2V5LCB1c2UgVU5JUVVFIGluc3RlYWQAUmVzdWx0IGNvbnNpc3RlZCBvZiBtb3JlIHRoYW4gb25lIHJvdwBUaGlzIHRhYmxlIHR5cGUgcmVxdWlyZXMgYSBwcmltYXJ5IGtleQBUaGlzIHZlcnNpb24gb2YgTXlTUUwgaXMgbm90IGNvbXBpbGVkIHdpdGggUkFJRCBzdXBwb3J0AFlvdSBhcmUgdXNpbmcgc2FmZSB1cGRhdGUgbW9kZSBhbmQgeW91IHRyaWVkIHRvIHVwZGF0ZSBhIHRhYmxlIHdpdGhvdXQgYSBXSEVSRSB0aGF0IHVzZXMgYSBLRVkgY29sdW1uLiAlcwBLZXkgJyUtLjE5MnMnIGRvZXNuJ3QgZXhpc3QgaW4gdGFibGUgJyUtLjE5MnMnAENhbid0IG9wZW4gdGFibGUAVGhlIGhhbmRsZXIgZm9yIHRoZSB0YWJsZSBkb2Vzbid0IHN1cHBvcnQgJXMAWW91IGFyZSBub3QgYWxsb3dlZCB0byBleGVjdXRlIHRoaXMgY29tbWFuZCBpbiBhIHRyYW5zYWN0aW9uAEdvdCBlcnJvciAlZCAtICclLS4xOTJzJyBkdXJpbmcgQ09NTUlUAEdvdCBlcnJvciAlZCAtICclLS4xOTJzJyBkdXJpbmcgUk9MTEJBQ0sAR290IGVycm9yICVkIGR1cmluZyBGTFVTSF9MT0dTAEdvdCBlcnJvciAlZCBkdXJpbmcgQ0hFQ0tQT0lOVABBYm9ydGVkIGNvbm5lY3Rpb24gJXUgdG8gZGI6ICclLS4xOTJzJyB1c2VyOiAnJS0uNDhzJyBob3N0OiAnJS0uMjU1cycgKCUtLjY0cykAVGhlIHN0b3JhZ2UgZW5naW5lIGZvciB0aGUgdGFibGUgZG9lcyBub3Qgc3VwcG9ydCBiaW5hcnkgdGFibGUgZHVtcABCaW5sb2cgY2xvc2VkLCBjYW5ub3QgUkVTRVQgU09VUkNFAEZhaWxlZCByZWJ1aWxkaW5nIHRoZSBpbmRleCBvZiAgZHVtcGVkIHRhYmxlICclLS4xOTJzJwBFcnJvciBmcm9tIHNvdXJjZTogJyUtLjY0cycATmV0IGVycm9yIHJlYWRpbmcgZnJvbSBzb3VyY2UATmV0IGVycm9yIHdyaXRpbmcgdG8gc291cmNlAENhbid0IGZpbmQgRlVMTFRFWFQgaW5kZXggbWF0Y2hpbmcgdGhlIGNvbHVtbiBsaXN0AENhbid0IGV4ZWN1dGUgdGhlIGdpdmVuIGNvbW1hbmQgYmVjYXVzZSB5b3UgaGF2ZSBhY3RpdmUgbG9ja2VkIHRhYmxlcyBvciBhbiBhY3RpdmUgdHJhbnNhY3Rpb24AVW5rbm93biBzeXN0ZW0gdmFyaWFibGUgJyUtLjY0cycAVGFibGUgJyUtLjE5MnMnIGlzIG1hcmtlZCBhcyBjcmFzaGVkIGFuZCBzaG91bGQgYmUgcmVwYWlyZWQAVGFibGUgJyUtLjE5MnMnIGlzIG1hcmtlZCBhcyBjcmFzaGVkIGFuZCBsYXN0IChhdXRvbWF0aWM/KSByZXBhaXIgZmFpbGVkAFNvbWUgbm9uLXRyYW5zYWN0aW9uYWwgY2hhbmdlZCB0YWJsZXMgY291bGRuJ3QgYmUgcm9sbGVkIGJhY2sATXVsdGktc3RhdGVtZW50IHRyYW5zYWN0aW9uIHJlcXVpcmVkIG1vcmUgdGhhbiAnbWF4X2JpbmxvZ19jYWNoZV9zaXplJyBieXRlcyBvZiBzdG9yYWdlOyBpbmNyZWFzZSB0aGlzIG15c3FsZCB2YXJpYWJsZSBhbmQgdHJ5IGFnYWluAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBhIHJ1bm5pbmcgcmVwbGljYTsgcnVuIFNUT1AgUkVQTElDQSBmaXJzdABUaGlzIG9wZXJhdGlvbiByZXF1aXJlcyBhIHJ1bm5pbmcgcmVwbGljYTsgY29uZmlndXJlIHJlcGxpY2EgYW5kIGRvIFNUQVJUIFJFUExJQ0EAVGhlIHNlcnZlciBpcyBub3QgY29uZmlndXJlZCBhcyByZXBsaWNhOyBmaXggaW4gY29uZmlnIGZpbGUgb3Igd2l0aCBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPAENvdWxkIG5vdCBpbml0aWFsaXplIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlOyBtb3JlIGVycm9yIG1lc3NhZ2VzIGNhbiBiZSBmb3VuZCBpbiB0aGUgTXlTUUwgZXJyb3IgbG9nAENvdWxkIG5vdCBjcmVhdGUgcmVwbGljYSB0aHJlYWQ7IGNoZWNrIHN5c3RlbSByZXNvdXJjZXMAVXNlciAlLS42NHMgYWxyZWFkeSBoYXMgbW9yZSB0aGFuICdtYXhfdXNlcl9jb25uZWN0aW9ucycgYWN0aXZlIGNvbm5lY3Rpb25zAFlvdSBtYXkgb25seSB1c2UgY29uc3RhbnQgZXhwcmVzc2lvbnMgd2l0aCBTRVQATG9jayB3YWl0IHRpbWVvdXQgZXhjZWVkZWQ7IHRyeSByZXN0YXJ0aW5nIHRyYW5zYWN0aW9uAFRoZSB0b3RhbCBudW1iZXIgb2YgbG9ja3MgZXhjZWVkcyB0aGUgbG9jayB0YWJsZSBzaXplAFVwZGF0ZSBsb2NrcyBjYW5ub3QgYmUgYWNxdWlyZWQgZHVyaW5nIGEgUkVBRCBVTkNPTU1JVFRFRCB0cmFuc2FjdGlvbgBEUk9QIERBVEFCQVNFIG5vdCBhbGxvd2VkIHdoaWxlIHRocmVhZCBpcyBob2xkaW5nIGdsb2JhbCByZWFkIGxvY2sAQ1JFQVRFIERBVEFCQVNFIG5vdCBhbGxvd2VkIHdoaWxlIHRocmVhZCBpcyBob2xkaW5nIGdsb2JhbCByZWFkIGxvY2sASW5jb3JyZWN0IGFyZ3VtZW50cyB0byAlcwAnJS0uNDhzJ0AnJS0uNjRzJyBpcyBub3QgYWxsb3dlZCB0byBjcmVhdGUgbmV3IHVzZXJzAEluY29ycmVjdCB0YWJsZSBkZWZpbml0aW9uOyBhbGwgTUVSR0UgdGFibGVzIG11c3QgYmUgaW4gdGhlIHNhbWUgZGF0YWJhc2UARGVhZGxvY2sgZm91bmQgd2hlbiB0cnlpbmcgdG8gZ2V0IGxvY2s7IHRyeSByZXN0YXJ0aW5nIHRyYW5zYWN0aW9uAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IEZVTExURVhUIGluZGV4ZXMAQ2Fubm90IGFkZCBmb3JlaWduIGtleSBjb25zdHJhaW50AENhbm5vdCBhZGQgYSBjaGlsZCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscwBDYW5ub3QgZGVsZXRlIG9yIHVwZGF0ZSBhIHBhcmVudCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscwBFcnJvciBjb25uZWN0aW5nIHRvIHNvdXJjZTogJS0uMTI4cwBFcnJvciBydW5uaW5nIHF1ZXJ5IG9uIHNvdXJjZTogJS0uMTI4cwBFcnJvciB3aGVuIGV4ZWN1dGluZyBjb21tYW5kICVzOiAlLS4xMjhzAEluY29ycmVjdCB1c2FnZSBvZiAlcyBhbmQgJXMAVGhlIHVzZWQgU0VMRUNUIHN0YXRlbWVudHMgaGF2ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgY29sdW1ucwBDYW4ndCBleGVjdXRlIHRoZSBxdWVyeSBiZWNhdXNlIHlvdSBoYXZlIGEgY29uZmxpY3RpbmcgcmVhZCBsb2NrAE1peGluZyBvZiB0cmFuc2FjdGlvbmFsIGFuZCBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgaXMgZGlzYWJsZWQAT3B0aW9uICclcycgdXNlZCB0d2ljZSBpbiBzdGF0ZW1lbnQAVXNlciAnJS0uNjRzJyBoYXMgZXhjZWVkZWQgdGhlICclcycgcmVzb3VyY2UgKGN1cnJlbnQgdmFsdWU6ICVsZCkAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9uZSBvZikgdGhlICUtLjEyOHMgcHJpdmlsZWdlKHMpIGZvciB0aGlzIG9wZXJhdGlvbgBWYXJpYWJsZSAnJS0uNjRzJyBpcyBhIFNFU1NJT04gdmFyaWFibGUgYW5kIGNhbid0IGJlIHVzZWQgd2l0aCBTRVQgR0xPQkFMAFZhcmlhYmxlICclLS42NHMnIGlzIGEgR0xPQkFMIHZhcmlhYmxlIGFuZCBzaG91bGQgYmUgc2V0IHdpdGggU0VUIEdMT0JBTABWYXJpYWJsZSAnJS0uNjRzJyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnAEluY29ycmVjdCBhcmd1bWVudCB0eXBlIHRvIHZhcmlhYmxlICclLS42NHMnAFZhcmlhYmxlICclLS42NHMnIGNhbiBvbmx5IGJlIHNldCwgbm90IHJlYWQASW5jb3JyZWN0IHVzYWdlL3BsYWNlbWVudCBvZiAnJXMnAFRoaXMgdmVyc2lvbiBvZiBNeVNRTCBkb2Vzbid0IHlldCBzdXBwb3J0ICclcycAR290IGZhdGFsIGVycm9yICVkIGZyb20gc291cmNlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYmluYXJ5IGxvZzogJyUtLjUxMnMnAFJlcGxpY2EgU1FMIHRocmVhZCBpZ25vcmVkIHRoZSBxdWVyeSBiZWNhdXNlIG9mIHJlcGxpY2F0ZS0qLXRhYmxlIHJ1bGVzAFZhcmlhYmxlICclLS4xOTJzJyBpcyBhICVzIHZhcmlhYmxlAEluY29ycmVjdCBmb3JlaWduIGtleSBkZWZpbml0aW9uIGZvciAnJS0uMTkycyc6ICVzAEtleSByZWZlcmVuY2UgYW5kIHRhYmxlIHJlZmVyZW5jZSBkb24ndCBtYXRjaABPcGVyYW5kIHNob3VsZCBjb250YWluICVkIGNvbHVtbihzKQBTdWJxdWVyeSByZXR1cm5zIG1vcmUgdGhhbiAxIHJvdwBVbmtub3duIHByZXBhcmVkIHN0YXRlbWVudCBoYW5kbGVyICglLipzKSBnaXZlbiB0byAlcwBIZWxwIGRhdGFiYXNlIGlzIGNvcnJ1cHQgb3IgZG9lcyBub3QgZXhpc3QAQ3ljbGljIHJlZmVyZW5jZSBvbiBzdWJxdWVyaWVzAENvbnZlcnRpbmcgY29sdW1uICclcycgZnJvbSAlcyB0byAlcwBSZWZlcmVuY2UgJyUtLjY0cycgbm90IHN1cHBvcnRlZCAoJXMpAEV2ZXJ5IGRlcml2ZWQgdGFibGUgbXVzdCBoYXZlIGl0cyBvd24gYWxpYXMAU2VsZWN0ICV1IHdhcyByZWR1Y2VkIGR1cmluZyBvcHRpbWl6YXRpb24AVGFibGUgJyUtLjE5MnMnIGZyb20gb25lIG9mIHRoZSBTRUxFQ1RzIGNhbm5vdCBiZSB1c2VkIGluICUtLjMycwBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCByZXF1ZXN0ZWQgYnkgc2VydmVyOyBjb25zaWRlciB1cGdyYWRpbmcgTXlTUUwgY2xpZW50AEFsbCBwYXJ0cyBvZiBhIFNQQVRJQUwgaW5kZXggbXVzdCBiZSBOT1QgTlVMTABDT0xMQVRJT04gJyVzJyBpcyBub3QgdmFsaWQgZm9yIENIQVJBQ1RFUiBTRVQgJyVzJwBSZXBsaWNhIGlzIGFscmVhZHkgcnVubmluZwBSZXBsaWNhIGFscmVhZHkgaGFzIGJlZW4gc3RvcHBlZABVbmNvbXByZXNzZWQgZGF0YSBzaXplIHRvbyBsYXJnZTsgdGhlIG1heGltdW0gc2l6ZSBpcyAlZCAocHJvYmFibHksIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgZGF0YSB3YXMgY29ycnVwdGVkKQBaTElCOiBOb3QgZW5vdWdoIG1lbW9yeQBaTElCOiBOb3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIgKHByb2JhYmx5LCBsZW5ndGggb2YgdW5jb21wcmVzc2VkIGRhdGEgd2FzIGNvcnJ1cHRlZCkAWkxJQjogSW5wdXQgZGF0YSBjb3JydXB0ZWQAUm93ICV1IHdhcyBjdXQgYnkgR1JPVVBfQ09OQ0FUKCkAUm93ICVsZCBkb2Vzbid0IGNvbnRhaW4gZGF0YSBmb3IgYWxsIGNvbHVtbnMAUm93ICVsZCB3YXMgdHJ1bmNhdGVkOyBpdCBjb250YWluZWQgbW9yZSBkYXRhIHRoYW4gdGhlcmUgd2VyZSBpbnB1dCBjb2x1bW5zAENvbHVtbiBzZXQgdG8gZGVmYXVsdCB2YWx1ZTsgTlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAE91dCBvZiByYW5nZSB2YWx1ZSBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABEYXRhIHRydW5jYXRlZCBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABVc2luZyBzdG9yYWdlIGVuZ2luZSAlcyBmb3IgdGFibGUgJyVzJwBJbGxlZ2FsIG1peCBvZiBjb2xsYXRpb25zICglcywlcykgYW5kICglcywlcykgZm9yIG9wZXJhdGlvbiAnJXMnAENhbm5vdCBkcm9wIG9uZSBvciBtb3JlIG9mIHRoZSByZXF1ZXN0ZWQgdXNlcnMAQ2FuJ3QgcmV2b2tlIGFsbCBwcml2aWxlZ2VzIGZvciBvbmUgb3IgbW9yZSBvZiB0aGUgcmVxdWVzdGVkIHVzZXJzAElsbGVnYWwgbWl4IG9mIGNvbGxhdGlvbnMgKCVzLCVzKSwgKCVzLCVzKSwgKCVzLCVzKSBmb3Igb3BlcmF0aW9uICclcycASWxsZWdhbCBtaXggb2YgY29sbGF0aW9ucyBmb3Igb3BlcmF0aW9uICclcycAVmFyaWFibGUgJyUtLjY0cycgaXMgbm90IGEgdmFyaWFibGUgY29tcG9uZW50IChjYW4ndCBiZSB1c2VkIGFzIFhYWFgudmFyaWFibGVfbmFtZSkAVW5rbm93biBjb2xsYXRpb246ICclLS42NHMnAFNTTCBwYXJhbWV0ZXJzIGluIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgYXJlIGlnbm9yZWQgYmVjYXVzZSB0aGlzIE15U1FMIHJlcGxpY2Egd2FzIGNvbXBpbGVkIHdpdGhvdXQgU1NMIHN1cHBvcnQ7IHRoZXkgY2FuIGJlIHVzZWQgbGF0ZXIgaWYgTXlTUUwgcmVwbGljYSB3aXRoIFNTTCBpcyBzdGFydGVkAFNlcnZlciBpcyBydW5uaW5nIGluIC0tc2VjdXJlLWF1dGggbW9kZSwgYnV0ICclcydAJyVzJyBoYXMgYSBwYXNzd29yZCBpbiB0aGUgb2xkIGZvcm1hdDsgcGxlYXNlIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhlIG5ldyBmb3JtYXQARmllbGQgb3IgcmVmZXJlbmNlICclLS4xOTJzJXMlLS4xOTJzJXMlLS4xOTJzJyBvZiBTRUxFQ1QgIyVkIHdhcyByZXNvbHZlZCBpbiBTRUxFQ1QgIyVkAEluY29ycmVjdCBwYXJhbWV0ZXIgb3IgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBmb3IgU1RBUlQgUkVQTElDQSBVTlRJTABJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgLS1za2lwLXJlcGxpY2Etc3RhcnQgd2hlbiBkb2luZyBzdGVwLWJ5LXN0ZXAgcmVwbGljYXRpb24gd2l0aCBTVEFSVCBSRVBMSUNBIFVOVElMOyBvdGhlcndpc2UsIHlvdSB3aWxsIGdldCBwcm9ibGVtcyBpZiB5b3UgZ2V0IGFuIHVuZXhwZWN0ZWQgcmVwbGljYSdzIG15c3FsZCByZXN0YXJ0AFNRTCB0aHJlYWQgaXMgbm90IHRvIGJlIHN0YXJ0ZWQgc28gVU5USUwgb3B0aW9ucyBhcmUgaWdub3JlZABJbmNvcnJlY3QgaW5kZXggbmFtZSAnJS0uMTAwcycASW5jb3JyZWN0IGNhdGFsb2cgbmFtZSAnJS0uMTAwcycAUXVlcnkgY2FjaGUgZmFpbGVkIHRvIHNldCBzaXplICVsdTsgbmV3IHF1ZXJ5IGNhY2hlIHNpemUgaXMgJWx1AENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIHBhcnQgb2YgRlVMTFRFWFQgaW5kZXgAVW5rbm93biBrZXkgY2FjaGUgJyUtLjEwMHMnAE15U1FMIGlzIHN0YXJ0ZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlOyB5b3UgbXVzdCByZXN0YXJ0IGl0IHdpdGhvdXQgdGhpcyBzd2l0Y2ggZm9yIHRoaXMgZ3JhbnQgdG8gd29yawBVbmtub3duIHN0b3JhZ2UgZW5naW5lICclcycAJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAFRoZSB0YXJnZXQgdGFibGUgJS0uMTAwcyBvZiB0aGUgJXMgaXMgbm90IHVwZGF0YWJsZQBUaGUgJyVzJyBmZWF0dXJlIGlzIGRpc2FibGVkOyB5b3UgbmVlZCBNeVNRTCBidWlsdCB3aXRoICclcycgdG8gaGF2ZSBpdCB3b3JraW5nAFRoZSBNeVNRTCBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIHRoZSAlcyBvcHRpb24gc28gaXQgY2Fubm90IGV4ZWN1dGUgdGhpcyBzdGF0ZW1lbnQAQ29sdW1uICclLS4xMDBzJyBoYXMgZHVwbGljYXRlZCB2YWx1ZSAnJS0uNjRzJyBpbiAlcwBUcnVuY2F0ZWQgaW5jb3JyZWN0ICUtLjY0cyB2YWx1ZTogJyUtLjEyOHMnAEluY29ycmVjdCB0YWJsZSBkZWZpbml0aW9uOyB0aGVyZSBjYW4gYmUgb25seSBvbmUgVElNRVNUQU1QIGNvbHVtbiB3aXRoIENVUlJFTlRfVElNRVNUQU1QIGluIERFRkFVTFQgb3IgT04gVVBEQVRFIGNsYXVzZQBJbnZhbGlkIE9OIFVQREFURSBjbGF1c2UgZm9yICclLS4xOTJzJyBjb2x1bW4AVGhpcyBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHByZXBhcmVkIHN0YXRlbWVudCBwcm90b2NvbCB5ZXQATW90dG9rIGZlaWwgJWQgJyUtLjEwMHMnIGZyYSAlcwBNb3R0b2sgdGVtcG9yYXJ5IGZlaWwgJWQgJyUtLjEwMHMnIGZyYSAlcwBVbmtub3duIG9yIGluY29ycmVjdCB0aW1lIHpvbmU6ICclLS42NHMnAEludmFsaWQgVElNRVNUQU1QIHZhbHVlIGluIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQASW52YWxpZCAlcyBjaGFyYWN0ZXIgc3RyaW5nOiAnJS42NHMnAFJlc3VsdCBvZiAlcygpIHdhcyBsYXJnZXIgdGhhbiBtYXhfYWxsb3dlZF9wYWNrZXQgKCVsZCkgLSB0cnVuY2F0ZWQAQ29uZmxpY3RpbmcgZGVjbGFyYXRpb25zOiAnJXMlcycgYW5kICclcyVzJwBDYW4ndCBjcmVhdGUgYSAlcyBmcm9tIHdpdGhpbiBhbm90aGVyIHN0b3JlZCByb3V0aW5lACVzICVzIGFscmVhZHkgZXhpc3RzACVzICVzIGRvZXMgbm90IGV4aXN0AEZhaWxlZCB0byBEUk9QICVzICVzAEZhaWxlZCB0byBDUkVBVEUgJXMgJXMAJXMgd2l0aCBubyBtYXRjaGluZyBsYWJlbDogJXMAUmVkZWZpbmluZyBsYWJlbCAlcwBFbmQtbGFiZWwgJXMgd2l0aG91dCBtYXRjaABSZWZlcnJpbmcgdG8gdW5pbml0aWFsaXplZCB2YXJpYWJsZSAlcwBQUk9DRURVUkUgJXMgY2FuJ3QgcmV0dXJuIGEgcmVzdWx0IHNldCBpbiB0aGUgZ2l2ZW4gY29udGV4dABSRVRVUk4gaXMgb25seSBhbGxvd2VkIGluIGEgRlVOQ1RJT04AJXMgaXMgbm90IGFsbG93ZWQgaW4gc3RvcmVkIHByb2NlZHVyZXMAVGhlIHVwZGF0ZSBsb2cgaXMgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQgYnkgdGhlIGJpbmFyeSBsb2c7IFNFVCBTUUxfTE9HX1VQREFURSBoYXMgYmVlbiBpZ25vcmVkLgBUaGUgdXBkYXRlIGxvZyBpcyBkZXByZWNhdGVkIGFuZCByZXBsYWNlZCBieSB0aGUgYmluYXJ5IGxvZzsgU0VUIFNRTF9MT0dfVVBEQVRFIGhhcyBiZWVuIHRyYW5zbGF0ZWQgdG8gU0VUIFNRTF9MT0dfQklOLgBRdWVyeSBleGVjdXRpb24gd2FzIGludGVycnVwdGVkAEluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciAlcyAlczsgZXhwZWN0ZWQgJXUsIGdvdCAldQBVbmRlZmluZWQgQ09ORElUSU9OOiAlcwBObyBSRVRVUk4gZm91bmQgaW4gRlVOQ1RJT04gJXMARlVOQ1RJT04gJXMgZW5kZWQgd2l0aG91dCBSRVRVUk4AQ3Vyc29yIHN0YXRlbWVudCBtdXN0IGJlIGEgU0VMRUNUAEN1cnNvciBTRUxFQ1QgbXVzdCBub3QgaGF2ZSBJTlRPAFVuZGVmaW5lZCBDVVJTT1I6ICVzAEN1cnNvciBpcyBhbHJlYWR5IG9wZW4AQ3Vyc29yIGlzIG5vdCBvcGVuAFVuZGVjbGFyZWQgdmFyaWFibGU6ICVzAEluY29ycmVjdCBudW1iZXIgb2YgRkVUQ0ggdmFyaWFibGVzAE5vIGRhdGEgLSB6ZXJvIHJvd3MgZmV0Y2hlZCwgc2VsZWN0ZWQsIG9yIHByb2Nlc3NlZABEdXBsaWNhdGUgcGFyYW1ldGVyOiAlcwBEdXBsaWNhdGUgdmFyaWFibGU6ICVzAER1cGxpY2F0ZSBjb25kaXRpb246ICVzAER1cGxpY2F0ZSBjdXJzb3I6ICVzAEZhaWxlZCB0byBBTFRFUiAlcyAlcwBTdWJxdWVyeSB2YWx1ZSBub3Qgc3VwcG9ydGVkACVzIGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAFZhcmlhYmxlIG9yIGNvbmRpdGlvbiBkZWNsYXJhdGlvbiBhZnRlciBjdXJzb3Igb3IgaGFuZGxlciBkZWNsYXJhdGlvbgBDdXJzb3IgZGVjbGFyYXRpb24gYWZ0ZXIgaGFuZGxlciBkZWNsYXJhdGlvbgBDYXNlIG5vdCBmb3VuZCBmb3IgQ0FTRSBzdGF0ZW1lbnQAQ29uZmlndXJhdGlvbiBmaWxlICclLS4xOTJzJyBpcyB0b28gYmlnAE1hbGZvcm1lZCBmaWxlIHR5cGUgaGVhZGVyIGluIGZpbGUgJyUtLjE5MnMnAFVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgd2hpbGUgcGFyc2luZyBjb21tZW50ICclLS4yMDBzJwBFcnJvciB3aGlsZSBwYXJzaW5nIHBhcmFtZXRlciAnJS0uMTkycycgKGxpbmU6ICclLS4xOTJzJykAVW5leHBlY3RlZCBlbmQgb2YgZmlsZSB3aGlsZSBza2lwcGluZyB1bmtub3duIHBhcmFtZXRlciAnJS0uMTkycycARVhQTEFJTi9TSE9XIGNhbiBub3QgYmUgaXNzdWVkOyBsYWNraW5nIHByaXZpbGVnZXMgZm9yIHVuZGVybHlpbmcgdGFibGUARmlsZSAnJS0uMTkycycgaGFzIHVua25vd24gdHlwZSAnJS0uNjRzJyBpbiBpdHMgaGVhZGVyACclLS4xOTJzLiUtLjE5MnMnIGlzIG5vdCAlcwBDb2x1bW4gJyUtLjE5MnMnIGlzIG5vdCB1cGRhdGFibGUAVmlldydzIFNFTEVDVCBjb250YWlucyBhIHN1YnF1ZXJ5IGluIHRoZSBGUk9NIGNsYXVzZQBWaWV3J3MgU0VMRUNUIGNvbnRhaW5zIGEgJyVzJyBjbGF1c2UAVmlldydzIFNFTEVDVCBjb250YWlucyBhIHZhcmlhYmxlIG9yIHBhcmFtZXRlcgBWaWV3J3MgU0VMRUNUIHJlZmVycyB0byBhIHRlbXBvcmFyeSB0YWJsZSAnJS0uMTkycycASW4gZGVmaW5pdGlvbiBvZiB2aWV3LCBkZXJpdmVkIHRhYmxlIG9yIGNvbW1vbiB0YWJsZSBleHByZXNzaW9uLCBTRUxFQ1QgbGlzdCBhbmQgY29sdW1uIG5hbWVzIGxpc3QgaGF2ZSBkaWZmZXJlbnQgY29sdW1uIGNvdW50cwBWaWV3IG1lcmdlIGFsZ29yaXRobSBjYW4ndCBiZSB1c2VkIGhlcmUgZm9yIG5vdyAoYXNzdW1lZCB1bmRlZmluZWQgYWxnb3JpdGhtKQBWaWV3IGJlaW5nIHVwZGF0ZWQgZG9lcyBub3QgaGF2ZSBjb21wbGV0ZSBrZXkgb2YgdW5kZXJseWluZyB0YWJsZSBpbiBpdABWaWV3ICclLS4xOTJzLiUtLjE5MnMnIHJlZmVyZW5jZXMgaW52YWxpZCB0YWJsZShzKSBvciBjb2x1bW4ocykgb3IgZnVuY3Rpb24ocykgb3IgZGVmaW5lci9pbnZva2VyIG9mIHZpZXcgbGFjayByaWdodHMgdG8gdXNlIHRoZW0AQ2FuJ3QgZHJvcCBvciBhbHRlciBhICVzIGZyb20gd2l0aGluIGFub3RoZXIgc3RvcmVkIHJvdXRpbmUAR09UTyBpcyBub3QgYWxsb3dlZCBpbiBhIHN0b3JlZCBwcm9jZWR1cmUgaGFuZGxlcgBUcmlnZ2VyIGFscmVhZHkgZXhpc3RzAFRyaWdnZXIgZG9lcyBub3QgZXhpc3QAVHJpZ2dlcidzICclLS4xOTJzJyBpcyB2aWV3IG9yIHRlbXBvcmFyeSB0YWJsZQBVcGRhdGluZyBvZiAlcyByb3cgaXMgbm90IGFsbG93ZWQgaW4gJXN0cmlnZ2VyAFRoZXJlIGlzIG5vICVzIHJvdyBpbiAlcyB0cmlnZ2VyAEZpZWxkICclLS4xOTJzJyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAERpdmlzaW9uIGJ5IDAASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUuMTkycycgYXQgcm93ICVsZABJbGxlZ2FsICVzICclLS4xOTJzJyB2YWx1ZSBmb3VuZCBkdXJpbmcgcGFyc2luZwBDSEVDSyBPUFRJT04gb24gbm9uLXVwZGF0YWJsZSB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAENIRUNLIE9QVElPTiBmYWlsZWQgJyUtLjE5MnMuJS0uMTkycycAJS0uMTZzIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgZm9yIHJvdXRpbmUgJyUtLjE5MnMnAEZhaWxlZCBwdXJnaW5nIG9sZCByZWxheSBsb2dzOiAlcwBQYXNzd29yZCBoYXNoIHNob3VsZCBiZSBhICVkLWRpZ2l0IGhleGFkZWNpbWFsIG51bWJlcgBUYXJnZXQgbG9nIG5vdCBmb3VuZCBpbiBiaW5sb2cgaW5kZXgASS9PIGVycm9yIHJlYWRpbmcgbG9nIGluZGV4IGZpbGUAU2VydmVyIGNvbmZpZ3VyYXRpb24gZG9lcyBub3QgcGVybWl0IGJpbmxvZyBwdXJnZQBGYWlsZWQgb24gZnNlZWsoKQBGYXRhbCBlcnJvciBkdXJpbmcgbG9nIHB1cmdlAEEgcHVyZ2VhYmxlIGxvZyBpcyBpbiB1c2UsIHdpbGwgbm90IHB1cmdlAFVua25vd24gZXJyb3IgZHVyaW5nIGxvZyBwdXJnZQBGYWlsZWQgaW5pdGlhbGl6aW5nIHJlbGF5IGxvZyBwb3NpdGlvbjogJXMAWW91IGFyZSBub3QgdXNpbmcgYmluYXJ5IGxvZ2dpbmcAVGhlICclLS42NHMnIHN5bnRheCBpcyByZXNlcnZlZCBmb3IgcHVycG9zZXMgaW50ZXJuYWwgdG8gdGhlIE15U1FMIHNlcnZlcgBXU0FTdGFydHVwIEZhaWxlZABDYW4ndCBoYW5kbGUgcHJvY2VkdXJlcyB3aXRoIGRpZmZlcmVudCBncm91cHMgeWV0AFNlbGVjdCBtdXN0IGhhdmUgYSBncm91cCB3aXRoIHRoaXMgcHJvY2VkdXJlAENhbid0IHVzZSBPUkRFUiBjbGF1c2Ugd2l0aCB0aGlzIHByb2NlZHVyZQBCaW5hcnkgbG9nZ2luZyBhbmQgcmVwbGljYXRpb24gZm9yYmlkIGNoYW5naW5nIHRoZSBnbG9iYWwgc2VydmVyICVzAENhbid0IG1hcCBmaWxlOiAlLS4yMDBzLCBlcnJubzogJWQAV3JvbmcgbWFnaWMgaW4gJS0uNjRzAFByZXBhcmVkIHN0YXRlbWVudCBjb250YWlucyB0b28gbWFueSBwbGFjZWhvbGRlcnMAS2V5IHBhcnQgJyUtLjE5MnMnIGxlbmd0aCBjYW5ub3QgYmUgMABWaWV3IHRleHQgY2hlY2tzdW0gZmFpbGVkAENhbiBub3QgbW9kaWZ5IG1vcmUgdGhhbiBvbmUgYmFzZSB0YWJsZSB0aHJvdWdoIGEgam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAENhbiBub3QgaW5zZXJ0IGludG8gam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnIHdpdGhvdXQgZmllbGRzIGxpc3QAQ2FuIG5vdCBkZWxldGUgZnJvbSBqb2luIHZpZXcgJyUtLjE5MnMuJS0uMTkycycAT3BlcmF0aW9uICVzIGZhaWxlZCBmb3IgJyUuMjU2cycAWEFFUl9OT1RBOiBVbmtub3duIFhJRABYQUVSX0lOVkFMOiBJbnZhbGlkIGFyZ3VtZW50cyAob3IgdW5zdXBwb3J0ZWQgY29tbWFuZCkAWEFFUl9STUZBSUw6IFRoZSBjb21tYW5kIGNhbm5vdCBiZSBleGVjdXRlZCB3aGVuIGdsb2JhbCB0cmFuc2FjdGlvbiBpcyBpbiB0aGUgICUuNjRzIHN0YXRlAFhBRVJfT1VUU0lERTogU29tZSB3b3JrIGlzIGRvbmUgb3V0c2lkZSBnbG9iYWwgdHJhbnNhY3Rpb24AWEFFUl9STUVSUjogRmF0YWwgZXJyb3Igb2NjdXJyZWQgaW4gdGhlIHRyYW5zYWN0aW9uIGJyYW5jaCAtIGNoZWNrIHlvdXIgZGF0YSBmb3IgY29uc2lzdGVuY3kAWEFfUkJST0xMQkFDSzogVHJhbnNhY3Rpb24gYnJhbmNoIHdhcyByb2xsZWQgYmFjawBUaGVyZSBpcyBubyBzdWNoIGdyYW50IGRlZmluZWQgZm9yIHVzZXIgJyUtLjQ4cycgb24gaG9zdCAnJS0uMjU1cycgb24gcm91dGluZSAnJS0uMTkycycARmFpbGVkIHRvIGdyYW50IEVYRUNVVEUgYW5kIEFMVEVSIFJPVVRJTkUgcHJpdmlsZWdlcwBGYWlsZWQgdG8gcmV2b2tlIGFsbCBwcml2aWxlZ2VzIHRvIGRyb3BwZWQgcm91dGluZQBEYXRhIHRvbyBsb25nIGZvciBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAEJhZCBTUUxTVEFURTogJyVzJwAlczogcmVhZHkgZm9yIGNvbm5lY3Rpb25zLiBWZXJzaW9uOiAnJXMnICBzb2NrZXQ6ICclcycgIHBvcnQ6ICVkICAlcwBDYW4ndCBsb2FkIHZhbHVlIGZyb20gZmlsZSB3aXRoIGZpeGVkIHNpemUgcm93cyB0byB2YXJpYWJsZQBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNyZWF0ZSBhIHVzZXIgd2l0aCBHUkFOVABJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycgZm9yIGZ1bmN0aW9uICUtLjMycwBUYWJsZSBkZWZpbml0aW9uIGhhcyBjaGFuZ2VkLCBwbGVhc2UgcmV0cnkgdHJhbnNhY3Rpb24ARHVwbGljYXRlIGhhbmRsZXIgZGVjbGFyZWQgaW4gdGhlIHNhbWUgYmxvY2sAT1VUIG9yIElOT1VUIGFyZ3VtZW50ICVkIGZvciByb3V0aW5lICVzIGlzIG5vdCBhIHZhcmlhYmxlIG9yIE5FVyBwc2V1ZG8tdmFyaWFibGUgaW4gQkVGT1JFIHRyaWdnZXIATm90IGFsbG93ZWQgdG8gcmV0dXJuIGEgcmVzdWx0IHNldCBmcm9tIGEgJXMAQ2Fubm90IGdldCBnZW9tZXRyeSBvYmplY3QgZnJvbSBkYXRhIHlvdSBzZW5kIHRvIHRoZSBHRU9NRVRSWSBmaWVsZABBIHJvdXRpbmUgZmFpbGVkIGFuZCBoYXMgbmVpdGhlciBOTyBTUUwgbm9yIFJFQURTIFNRTCBEQVRBIGluIGl0cyBkZWNsYXJhdGlvbiBhbmQgYmluYXJ5IGxvZ2dpbmcgaXMgZW5hYmxlZDsgaWYgbm9uLXRyYW5zYWN0aW9uYWwgdGFibGVzIHdlcmUgdXBkYXRlZCwgdGhlIGJpbmFyeSBsb2cgd2lsbCBtaXNzIHRoZWlyIGNoYW5nZXMAVGhpcyBmdW5jdGlvbiBoYXMgbm9uZSBvZiBERVRFUk1JTklTVElDLCBOTyBTUUwsIG9yIFJFQURTIFNRTCBEQVRBIGluIGl0cyBkZWNsYXJhdGlvbiBhbmQgYmluYXJ5IGxvZ2dpbmcgaXMgZW5hYmxlZCAoeW91ICptaWdodCogd2FudCB0byB1c2UgdGhlIGxlc3Mgc2FmZSBsb2dfYmluX3RydXN0X2Z1bmN0aW9uX2NyZWF0b3JzIHZhcmlhYmxlKQBZb3UgZG8gbm90IGhhdmUgdGhlIFNVUEVSIHByaXZpbGVnZSBhbmQgYmluYXJ5IGxvZ2dpbmcgaXMgZW5hYmxlZCAoeW91ICptaWdodCogd2FudCB0byB1c2UgdGhlIGxlc3Mgc2FmZSBsb2dfYmluX3RydXN0X2Z1bmN0aW9uX2NyZWF0b3JzIHZhcmlhYmxlKQBZb3UgY2FuJ3QgZXhlY3V0ZSBhIHByZXBhcmVkIHN0YXRlbWVudCB3aGljaCBoYXMgYW4gb3BlbiBjdXJzb3IgYXNzb2NpYXRlZCB3aXRoIGl0LiBSZXNldCB0aGUgc3RhdGVtZW50IHRvIHJlLWV4ZWN1dGUgaXQuAFRoZSBzdGF0ZW1lbnQgKCVsdSkgaGFzIG5vIG9wZW4gY3Vyc29yLgBFeHBsaWNpdCBvciBpbXBsaWNpdCBjb21taXQgaXMgbm90IGFsbG93ZWQgaW4gc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIuAEZpZWxkIG9mIHZpZXcgJyUtLjE5MnMuJS0uMTkycycgdW5kZXJseWluZyB0YWJsZSBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAFJlY3Vyc2l2ZSBzdG9yZWQgZnVuY3Rpb25zIGFuZCB0cmlnZ2VycyBhcmUgbm90IGFsbG93ZWQuAFRvbyBiaWcgc2NhbGUgJWQgc3BlY2lmaWVkIGZvciBjb2x1bW4gJyUtLjE5MnMnLiBNYXhpbXVtIGlzICVsdS4AVG9vLWJpZyBwcmVjaXNpb24gJWQgc3BlY2lmaWVkIGZvciAnJS0uMTkycycuIE1heGltdW0gaXMgJWx1LgBGb3IgZmxvYXQoTSxEKSwgZG91YmxlKE0sRCkgb3IgZGVjaW1hbChNLEQpLCBNIG11c3QgYmUgPj0gRCAoY29sdW1uICclLS4xOTJzJykuAFlvdSBjYW4ndCBjb21iaW5lIHdyaXRlLWxvY2tpbmcgb2Ygc3lzdGVtIHRhYmxlcyB3aXRoIG90aGVyIHRhYmxlcyBvciBsb2NrIHR5cGVzAFVuYWJsZSB0byBjb25uZWN0IHRvIGZvcmVpZ24gZGF0YSBzb3VyY2U6ICUuNjRzAFRoZXJlIHdhcyBhIHByb2JsZW0gcHJvY2Vzc2luZyB0aGUgcXVlcnkgb24gdGhlIGZvcmVpZ24gZGF0YSBzb3VyY2UuIERhdGEgc291cmNlIGVycm9yOiAlLS42NHMAVGhlIGZvcmVpZ24gZGF0YSBzb3VyY2UgeW91IGFyZSB0cnlpbmcgdG8gcmVmZXJlbmNlIGRvZXMgbm90IGV4aXN0LiBEYXRhIHNvdXJjZSBlcnJvcjogICUtLjY0cwBDYW4ndCBjcmVhdGUgZmVkZXJhdGVkIHRhYmxlLiBUaGUgZGF0YSBzb3VyY2UgY29ubmVjdGlvbiBzdHJpbmcgJyUtLjY0cycgaXMgbm90IGluIHRoZSBjb3JyZWN0IGZvcm1hdABUaGUgZGF0YSBzb3VyY2UgY29ubmVjdGlvbiBzdHJpbmcgJyUtLjY0cycgaXMgbm90IGluIHRoZSBjb3JyZWN0IGZvcm1hdABDYW4ndCBjcmVhdGUgZmVkZXJhdGVkIHRhYmxlLiBGb3JlaWduIGRhdGEgc3JjIGVycm9yOiAgJS0uNjRzAFRyaWdnZXIgaW4gd3Jvbmcgc2NoZW1hAFRocmVhZCBzdGFjayBvdmVycnVuOiAgJWxkIGJ5dGVzIHVzZWQgb2YgYSAlbGQgYnl0ZSBzdGFjaywgYW5kICVsZCBieXRlcyBuZWVkZWQuICBVc2UgJ215c3FsZCAtLXRocmVhZF9zdGFjaz0jJyB0byBzcGVjaWZ5IGEgYmlnZ2VyIHN0YWNrLgBSb3V0aW5lIGJvZHkgZm9yICclLS4xMDBzJyBpcyB0b28gbG9uZwBDYW5ub3QgZHJvcCBkZWZhdWx0IGtleWNhY2hlAERpc3BsYXkgd2lkdGggb3V0IG9mIHJhbmdlIGZvciBjb2x1bW4gJyUtLjE5MnMnIChtYXggPSAlbHUpAFhBRVJfRFVQSUQ6IFRoZSBYSUQgYWxyZWFkeSBleGlzdHMARGF0ZXRpbWUgZnVuY3Rpb246ICUtLjMycyBmaWVsZCBvdmVyZmxvdwBDYW4ndCB1cGRhdGUgdGFibGUgJyUtLjE5MnMnIGluIHN0b3JlZCBmdW5jdGlvbi90cmlnZ2VyIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSB1c2VkIGJ5IHN0YXRlbWVudCB3aGljaCBpbnZva2VkIHRoaXMgc3RvcmVkIGZ1bmN0aW9uL3RyaWdnZXIuAFRoZSBkZWZpbml0aW9uIG9mIHRhYmxlICclLS4xOTJzJyBwcmV2ZW50cyBvcGVyYXRpb24gJS4xOTJzIG9uIHRhYmxlICclLS4xOTJzJy4AVGhlIHByZXBhcmVkIHN0YXRlbWVudCBjb250YWlucyBhIHN0b3JlZCByb3V0aW5lIGNhbGwgdGhhdCByZWZlcnMgdG8gdGhhdCBzYW1lIHN0YXRlbWVudC4gSXQncyBub3QgYWxsb3dlZCB0byBleGVjdXRlIGEgcHJlcGFyZWQgc3RhdGVtZW50IGluIHN1Y2ggYSByZWN1cnNpdmUgbWFubmVyAE5vdCBhbGxvd2VkIHRvIHNldCBhdXRvY29tbWl0IGZyb20gYSBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBEZWZpbmVyIGlzIG5vdCBmdWxseSBxdWFsaWZpZWQAVmlldyAnJS0uMTkycycuJyUtLjE5MnMnIGhhcyBubyBkZWZpbmVyIGluZm9ybWF0aW9uIChvbGQgdGFibGUgZm9ybWF0KS4gQ3VycmVudCB1c2VyIGlzIHVzZWQgYXMgZGVmaW5lci4gUGxlYXNlIHJlY3JlYXRlIHRoZSB2aWV3IQBZb3UgbmVlZCB0aGUgU1VQRVIgcHJpdmlsZWdlIGZvciBjcmVhdGlvbiB2aWV3IHdpdGggJyUtLjE5MnMnQCclLS4xOTJzJyBkZWZpbmVyAFRoZSB1c2VyIHNwZWNpZmllZCBhcyBhIGRlZmluZXIgKCclLS42NHMnQCclLS42NHMnKSBkb2VzIG5vdCBleGlzdABDaGFuZ2luZyBzY2hlbWEgZnJvbSAnJS0uMTkycycgdG8gJyUtLjE5MnMnIGlzIG5vdCBhbGxvd2VkLgBDYW5ub3QgZGVsZXRlIG9yIHVwZGF0ZSBhIHBhcmVudCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscyAoJS4xOTJzKQBDYW5ub3QgYWRkIG9yIHVwZGF0ZSBhIGNoaWxkIHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzICglLjE5MnMpAFZhcmlhYmxlICclLS42NHMnIG11c3QgYmUgcXVvdGVkIHdpdGggYC4uLmAsIG9yIHJlbmFtZWQATm8gZGVmaW5lciBhdHRyaWJ1dGUgZm9yIHRyaWdnZXIgJyUtLjE5MnMnLiclLS4xOTJzJy4gSXQncyBkaXNhbGxvd2VkIHRvIGNyZWF0ZSB0cmlnZ2VyIHdpdGhvdXQgZGVmaW5lci4AJyUtLjE5MnMnIGhhcyBhbiBvbGQgZm9ybWF0LCB5b3Ugc2hvdWxkIHJlLWNyZWF0ZSB0aGUgJyVzJyBvYmplY3QocykAUmVjdXJzaXZlIGxpbWl0ICVkIChhcyBzZXQgYnkgdGhlIG1heF9zcF9yZWN1cnNpb25fZGVwdGggdmFyaWFibGUpIHdhcyBleGNlZWRlZCBmb3Igcm91dGluZSAlLjE5MnMARmFpbGVkIHRvIGxvYWQgcm91dGluZSAlLS4xOTJzLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlIG1pc3NpbmcsIGNvcnJ1cHQsIG9yIGNvbnRhaW5zIGJhZCBkYXRhIChpbnRlcm5hbCBjb2RlICVkKQBJbmNvcnJlY3Qgcm91dGluZSBuYW1lICclLS4xOTJzJwBUYWJsZSB1cGdyYWRlIHJlcXVpcmVkLiBQbGVhc2UgZG8gIlJFUEFJUiBUQUJMRSBgJS0uNjRzYCIgb3IgZHVtcC9yZWxvYWQgdG8gZml4IGl0IQBBR0dSRUdBVEUgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3RvcmVkIGZ1bmN0aW9ucwBDYW4ndCBjcmVhdGUgbW9yZSB0aGFuIG1heF9wcmVwYXJlZF9zdG10X2NvdW50IHN0YXRlbWVudHMgKGN1cnJlbnQgdmFsdWU6ICVsdSkAYCUtLjE5MnNgLmAlLS4xOTJzYCBjb250YWlucyB2aWV3IHJlY3Vyc2lvbgBOb24tZ3JvdXBpbmcgZmllbGQgJyUtLjE5MnMnIGlzIHVzZWQgaW4gJS0uNjRzIGNsYXVzZQBUaGUgdXNlZCB0YWJsZSB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCBTUEFUSUFMIGluZGV4ZXMAVHJpZ2dlcnMgY2FuIG5vdCBiZSBjcmVhdGVkIG9uIHN5c3RlbSB0YWJsZXMATGVhZGluZyBzcGFjZXMgYXJlIHJlbW92ZWQgZnJvbSBuYW1lICclcycARmFpbGVkIHRvIHJlYWQgYXV0by1pbmNyZW1lbnQgdmFsdWUgZnJvbSBzdG9yYWdlIGVuZ2luZQB1c2VyIG5hbWUAaG9zdCBuYW1lAFN0cmluZyAnJS0uNzBzJyBpcyB0b28gbG9uZyBmb3IgJXMgKHNob3VsZCBiZSBubyBsb25nZXIgdGhhbiAlZCkAVGhlIHRhcmdldCB0YWJsZSAlLS4xMDBzIG9mIHRoZSAlcyBpcyBub3QgaW5zZXJ0YWJsZS1pbnRvAFRhYmxlICclLS42NHMnIGlzIGRpZmZlcmVudGx5IGRlZmluZWQgb3Igb2Ygbm9uLU15SVNBTSB0eXBlIG9yIGRvZXNuJ3QgZXhpc3QAVG9vIGhpZ2ggbGV2ZWwgb2YgbmVzdGluZyBmb3Igc2VsZWN0AE5hbWUgJyUtLjY0cycgaGFzIGJlY29tZSAnJwBGaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIEZJRUxEUyBURVJNSU5BVEVEIHN0cmluZyBpcyBhbWJpZ3VvdXM7IHBsZWFzZSB1c2Ugbm9uLW9wdGlvbmFsIGFuZCBub24tZW1wdHkgRklFTERTIEVOQ0xPU0VEIEJZAFRoZSBmb3JlaWduIHNlcnZlciwgJXMsIHlvdSBhcmUgdHJ5aW5nIHRvIGNyZWF0ZSBhbHJlYWR5IGV4aXN0cy4AVGhlIGZvcmVpZ24gc2VydmVyIG5hbWUgeW91IGFyZSB0cnlpbmcgdG8gcmVmZXJlbmNlIGRvZXMgbm90IGV4aXN0LiBEYXRhIHNvdXJjZSBlcnJvcjogICUtLjY0cwBUYWJsZSBzdG9yYWdlIGVuZ2luZSAnJS0uNjRzJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjcmVhdGUgb3B0aW9uICclLjY0cycAU3ludGF4IGVycm9yOiAlLS42NHMgUEFSVElUSU9OSU5HIHJlcXVpcmVzIGRlZmluaXRpb24gb2YgVkFMVUVTICUtLjY0cyBmb3IgZWFjaCBwYXJ0aXRpb24AT25seSAlLS42NHMgUEFSVElUSU9OSU5HIGNhbiB1c2UgVkFMVUVTICUtLjY0cyBpbiBwYXJ0aXRpb24gZGVmaW5pdGlvbgBNQVhWQUxVRSBjYW4gb25seSBiZSB1c2VkIGluIGxhc3QgcGFydGl0aW9uIGRlZmluaXRpb24AU3VicGFydGl0aW9ucyBjYW4gb25seSBiZSBoYXNoIHBhcnRpdGlvbnMgYW5kIGJ5IGtleQBNdXN0IGRlZmluZSBzdWJwYXJ0aXRpb25zIG9uIGFsbCBwYXJ0aXRpb25zIGlmIG9uIG9uZSBwYXJ0aXRpb24AV3JvbmcgbnVtYmVyIG9mIHBhcnRpdGlvbnMgZGVmaW5lZCwgbWlzbWF0Y2ggd2l0aCBwcmV2aW91cyBzZXR0aW5nAFdyb25nIG51bWJlciBvZiBzdWJwYXJ0aXRpb25zIGRlZmluZWQsIG1pc21hdGNoIHdpdGggcHJldmlvdXMgc2V0dGluZwBDb25zdGFudCwgcmFuZG9tIG9yIHRpbWV6b25lLWRlcGVuZGVudCBleHByZXNzaW9ucyBpbiAoc3ViKXBhcnRpdGlvbmluZyBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQARXhwcmVzc2lvbiBpbiBSQU5HRS9MSVNUIFZBTFVFUyBtdXN0IGJlIGNvbnN0YW50AEZpZWxkIGluIGxpc3Qgb2YgZmllbGRzIGZvciBwYXJ0aXRpb24gZnVuY3Rpb24gbm90IGZvdW5kIGluIHRhYmxlAExpc3Qgb2YgZmllbGRzIGlzIG9ubHkgYWxsb3dlZCBpbiBLRVkgcGFydGl0aW9ucwBUaGUgcGFydGl0aW9uIGluZm8gaW4gdGhlIGZybSBmaWxlIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggd2hhdCBjYW4gYmUgd3JpdHRlbiBpbnRvIHRoZSBmcm0gZmlsZQBUaGUgJS0uMTkycyBmdW5jdGlvbiByZXR1cm5zIHRoZSB3cm9uZyB0eXBlAEZvciAlLS42NHMgcGFydGl0aW9ucyBlYWNoIHBhcnRpdGlvbiBtdXN0IGJlIGRlZmluZWQAVkFMVUVTIExFU1MgVEhBTiB2YWx1ZSBtdXN0IGJlIHN0cmljdGx5IGluY3JlYXNpbmcgZm9yIGVhY2ggcGFydGl0aW9uAFZBTFVFUyB2YWx1ZSBtdXN0IGJlIG9mIHNhbWUgdHlwZSBhcyBwYXJ0aXRpb24gZnVuY3Rpb24ATXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBzYW1lIGNvbnN0YW50IGluIGxpc3QgcGFydGl0aW9uaW5nAFBhcnRpdGlvbmluZyBjYW4gbm90IGJlIHVzZWQgc3RhbmQtYWxvbmUgaW4gcXVlcnkAVGhlIG1peCBvZiBoYW5kbGVycyBpbiB0aGUgcGFydGl0aW9ucyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHZlcnNpb24gb2YgTXlTUUwARm9yIHRoZSBwYXJ0aXRpb25lZCBlbmdpbmUgaXQgaXMgbmVjZXNzYXJ5IHRvIGRlZmluZSBhbGwgJS0uNjRzAFRvbyBtYW55IHBhcnRpdGlvbnMgKGluY2x1ZGluZyBzdWJwYXJ0aXRpb25zKSB3ZXJlIGRlZmluZWQASXQgaXMgb25seSBwb3NzaWJsZSB0byBtaXggUkFOR0UvTElTVCBwYXJ0aXRpb25pbmcgd2l0aCBIQVNIL0tFWSBwYXJ0aXRpb25pbmcgZm9yIHN1YnBhcnRpdGlvbmluZwBGYWlsZWQgdG8gY3JlYXRlIHNwZWNpZmljIGhhbmRsZXIgZmlsZQBBIEJMT0IgZmllbGQgaXMgbm90IGFsbG93ZWQgaW4gcGFydGl0aW9uIGZ1bmN0aW9uAEEgJS0uMTkycyBtdXN0IGluY2x1ZGUgYWxsIGNvbHVtbnMgaW4gdGhlIHRhYmxlJ3MgcGFydGl0aW9uaW5nIGZ1bmN0aW9uIChwcmVmaXhlZCBjb2x1bW5zIGFyZSBub3QgY29uc2lkZXJlZCkuAE51bWJlciBvZiAlLS42NHMgPSAwIGlzIG5vdCBhbiBhbGxvd2VkIHZhbHVlAFBhcnRpdGlvbiBtYW5hZ2VtZW50IG9uIGEgbm90IHBhcnRpdGlvbmVkIHRhYmxlIGlzIG5vdCBwb3NzaWJsZQBGb3JlaWduIGtleXMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkIGluIGNvbmp1bmN0aW9uIHdpdGggcGFydGl0aW9uaW5nAEVycm9yIGluIGxpc3Qgb2YgcGFydGl0aW9ucyB0byAlLS42NHMAQ2Fubm90IHJlbW92ZSBhbGwgcGFydGl0aW9ucywgdXNlIERST1AgVEFCTEUgaW5zdGVhZABDT0FMRVNDRSBQQVJUSVRJT04gY2FuIG9ubHkgYmUgdXNlZCBvbiBIQVNIL0tFWSBwYXJ0aXRpb25zAFJFT1JHQU5JWkUgUEFSVElUSU9OIGNhbiBvbmx5IGJlIHVzZWQgdG8gcmVvcmdhbml6ZSBwYXJ0aXRpb25zIG5vdCB0byBjaGFuZ2UgdGhlaXIgbnVtYmVycwBSRU9SR0FOSVpFIFBBUlRJVElPTiB3aXRob3V0IHBhcmFtZXRlcnMgY2FuIG9ubHkgYmUgdXNlZCBvbiBhdXRvLXBhcnRpdGlvbmVkIHRhYmxlcyB1c2luZyBIQVNIIFBBUlRJVElPTnMAJS0uNjRzIFBBUlRJVElPTiBjYW4gb25seSBiZSB1c2VkIG9uIFJBTkdFL0xJU1QgcGFydGl0aW9ucwBUcnlpbmcgdG8gQWRkIHBhcnRpdGlvbihzKSB3aXRoIHdyb25nIG51bWJlciBvZiBzdWJwYXJ0aXRpb25zAEF0IGxlYXN0IG9uZSBwYXJ0aXRpb24gbXVzdCBiZSBhZGRlZABBdCBsZWFzdCBvbmUgcGFydGl0aW9uIG11c3QgYmUgY29hbGVzY2VkAE1vcmUgcGFydGl0aW9ucyB0byByZW9yZ2FuaXplIHRoYW4gdGhlcmUgYXJlIHBhcnRpdGlvbnMARHVwbGljYXRlIHBhcnRpdGlvbiBuYW1lICUtLjE5MnMASXQgaXMgbm90IGFsbG93ZWQgdG8gc2h1dCBvZmYgYmlubG9nIG9uIHRoaXMgY29tbWFuZABXaGVuIHJlb3JnYW5pemluZyBhIHNldCBvZiBwYXJ0aXRpb25zIHRoZXkgbXVzdCBiZSBpbiBjb25zZWN1dGl2ZSBvcmRlcgBSZW9yZ2FuaXplIG9mIHJhbmdlIHBhcnRpdGlvbnMgY2Fubm90IGNoYW5nZSB0b3RhbCByYW5nZXMgZXhjZXB0IGZvciBsYXN0IHBhcnRpdGlvbiB3aGVyZSBpdCBjYW4gZXh0ZW5kIHRoZSByYW5nZQBQYXJ0aXRpb24gZnVuY3Rpb24gbm90IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24gZm9yIHRoaXMgaGFuZGxlcgBQYXJ0aXRpb24gc3RhdGUgY2Fubm90IGJlIGRlZmluZWQgZnJvbSBDUkVBVEUvQUxURVIgVEFCTEUAVGhlICUtLjY0cyBoYW5kbGVyIG9ubHkgc3VwcG9ydHMgMzIgYml0IGludGVnZXJzIGluIFZBTFVFUwBQbHVnaW4gJyUtLjE5MnMnIGlzIG5vdCBsb2FkZWQASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnAFRhYmxlIGhhcyBubyBwYXJ0aXRpb24gZm9yIHZhbHVlICUtLjY0cwBJdCBpcyBub3QgYWxsb3dlZCB0byBzcGVjaWZ5ICVzIG1vcmUgdGhhbiBvbmNlAEZhaWxlZCB0byBjcmVhdGUgJXMARmFpbGVkIHRvIGRyb3AgJXMAVGhlIGhhbmRsZXIgZG9lc24ndCBzdXBwb3J0IGF1dG9leHRlbmQgb2YgdGFibGVzcGFjZXMAQSBzaXplIHBhcmFtZXRlciB3YXMgaW5jb3JyZWN0bHkgc3BlY2lmaWVkLCBlaXRoZXIgbnVtYmVyIG9yIG9uIHRoZSBmb3JtIDEwTQBUaGUgc2l6ZSBudW1iZXIgd2FzIGNvcnJlY3QgYnV0IHdlIGRvbid0IGFsbG93IHRoZSBkaWdpdCBwYXJ0IHRvIGJlIG1vcmUgdGhhbiAyIGJpbGxpb24ARmFpbGVkIHRvIGFsdGVyOiAlcwBXcml0aW5nIG9uZSByb3cgdG8gdGhlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGZhaWxlZABUYWJsZSBkZWZpbml0aW9uIG9uIHNvdXJjZSBhbmQgcmVwbGljYSBkb2VzIG5vdCBtYXRjaDogJXMAUmVwbGljYSBydW5uaW5nIHdpdGggLS1sb2ctcmVwbGljYS11cGRhdGVzIG11c3QgdXNlIHJvdy1iYXNlZCBiaW5hcnkgbG9nZ2luZyB0byBiZSBhYmxlIHRvIHJlcGxpY2F0ZSByb3ctYmFzZWQgYmluYXJ5IGxvZyBldmVudHMARXZlbnQgJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzAEZhaWxlZCB0byBzdG9yZSBldmVudCAlcy4gRXJyb3IgY29kZSAlZCBmcm9tIHN0b3JhZ2UgZW5naW5lLgBVbmtub3duIGV2ZW50ICclLS4xOTJzJwBGYWlsZWQgdG8gYWx0ZXIgZXZlbnQgJyUtLjE5MnMnAEZhaWxlZCB0byBkcm9wICVzAElOVEVSVkFMIGlzIGVpdGhlciBub3QgcG9zaXRpdmUgb3IgdG9vIGJpZwBFTkRTIGlzIGVpdGhlciBpbnZhbGlkIG9yIGJlZm9yZSBTVEFSVFMARXZlbnQgZXhlY3V0aW9uIHRpbWUgaXMgaW4gdGhlIHBhc3QuIEV2ZW50IGhhcyBiZWVuIGRpc2FibGVkAEZhaWxlZCB0byBvcGVuIG15c3FsLmV2ZW50AE5vIGRhdGV0aW1lIGV4cHJlc3Npb24gcHJvdmlkZWQAQ29sdW1uIGNvdW50IG9mIG15c3FsLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAQ2Fubm90IGxvYWQgZnJvbSBteXNxbC4lcy4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZABGYWlsZWQgdG8gZGVsZXRlIHRoZSBldmVudCBmcm9tIG15c3FsLmV2ZW50AEVycm9yIGR1cmluZyBjb21waWxhdGlvbiBvZiBldmVudCdzIGJvZHkAU2FtZSBvbGQgYW5kIG5ldyBldmVudCBuYW1lAERhdGEgZm9yIGNvbHVtbiAnJXMnIHRvbyBsb25nAENhbm5vdCBkcm9wIGluZGV4ICclLS4xOTJzJzogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludABUaGUgc3ludGF4ICclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE15U1FMICVzLiBQbGVhc2UgdXNlICVzIGluc3RlYWQAWW91IGNhbid0IHdyaXRlLWxvY2sgYSBsb2cgdGFibGUuIE9ubHkgcmVhZCBhY2Nlc3MgaXMgcG9zc2libGUAWW91IGNhbid0IHVzZSBsb2NrcyB3aXRoIGxvZyB0YWJsZXMuAFVwaG9sZGluZyBmb3JlaWduIGtleSBjb25zdHJhaW50cyBmb3IgdGFibGUgJyUuMTkycycsIGVudHJ5ICclLS4xOTJzJywga2V5ICVkIHdvdWxkIGxlYWQgdG8gYSBkdXBsaWNhdGUgZW50cnkAVGhlIGNvbHVtbiBjb3VudCBvZiBteXNxbC4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBDcmVhdGVkIHdpdGggTXlTUUwgJWQsIG5vdyBydW5uaW5nICVkLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAENhbm5vdCBzd2l0Y2ggb3V0IG9mIHRoZSByb3ctYmFzZWQgYmluYXJ5IGxvZyBmb3JtYXQgd2hlbiB0aGUgc2Vzc2lvbiBoYXMgb3BlbiB0ZW1wb3JhcnkgdGFibGVzAENhbm5vdCBjaGFuZ2UgdGhlIGJpbmFyeSBsb2dnaW5nIGZvcm1hdCBpbnNpZGUgYSBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBUaGUgTkRCIGNsdXN0ZXIgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgY2hhbmdpbmcgdGhlIGJpbmxvZyBmb3JtYXQgb24gdGhlIGZseSB5ZXQAQ2Fubm90IGNyZWF0ZSB0ZW1wb3JhcnkgdGFibGUgd2l0aCBwYXJ0aXRpb25zAFBhcnRpdGlvbiBjb25zdGFudCBpcyBvdXQgb2YgcGFydGl0aW9uIGZ1bmN0aW9uIGRvbWFpbgBUaGlzIHBhcnRpdGlvbiBmdW5jdGlvbiBpcyBub3QgYWxsb3dlZABFcnJvciBpbiBEREwgbG9nAE5vdCBhbGxvd2VkIHRvIHVzZSBOVUxMIHZhbHVlIGluIFZBTFVFUyBMRVNTIFRIQU4ASW5jb3JyZWN0IHBhcnRpdGlvbiBuYW1lAFRyYW5zYWN0aW9uIGNoYXJhY3RlcmlzdGljcyBjYW4ndCBiZSBjaGFuZ2VkIHdoaWxlIGEgdHJhbnNhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MAQUxURVIgVEFCTEUgY2F1c2VzIGF1dG9faW5jcmVtZW50IHJlc2VxdWVuY2luZywgcmVzdWx0aW5nIGluIGR1cGxpY2F0ZSBlbnRyeSAnJS0uMTkycycgZm9yIGtleSAnJS0uMTkycycASW50ZXJuYWwgc2NoZWR1bGVyIGVycm9yICVkAEVycm9yIGR1cmluZyBzdGFydGluZy9zdG9wcGluZyBvZiB0aGUgc2NoZWR1bGVyLiBFcnJvciBjb2RlICV1AEVuZ2luZSBjYW5ub3QgYmUgdXNlZCBpbiBwYXJ0aXRpb25lZCB0YWJsZXMAQ2Fubm90IGFjdGl2YXRlICclLS42NHMnIGxvZwBUaGUgc2VydmVyIHdhcyBub3QgYnVpbHQgd2l0aCByb3ctYmFzZWQgcmVwbGljYXRpb24ARGVjb2Rpbmcgb2YgYmFzZTY0IHN0cmluZyBmYWlsZWQAUmVjdXJzaW9uIG9mIEVWRU5UIERETCBzdGF0ZW1lbnRzIGlzIGZvcmJpZGRlbiB3aGVuIGJvZHkgaXMgcHJlc2VudABDYW5ub3QgcHJvY2VlZCBiZWNhdXNlIHN5c3RlbSB0YWJsZXMgdXNlZCBieSBFdmVudCBTY2hlZHVsZXIgd2VyZSBmb3VuZCBkYW1hZ2VkIGF0IHNlcnZlciBzdGFydABPbmx5IGludGVnZXJzIGFsbG93ZWQgYXMgbnVtYmVyIGhlcmUAVGhpcyBzdG9yYWdlIGVuZ2luZSBjYW5ub3QgYmUgdXNlZCBmb3IgbG9nIHRhYmxlcwBZb3UgY2Fubm90ICclcycgYSBsb2cgdGFibGUgaWYgbG9nZ2luZyBpcyBlbmFibGVkAENhbm5vdCByZW5hbWUgJyVzJy4gV2hlbiBsb2dnaW5nIGVuYWJsZWQsIHJlbmFtZSB0by9mcm9tIGxvZyB0YWJsZSBtdXN0IHJlbmFtZSB0d28gdGFibGVzOiB0aGUgbG9nIHRhYmxlIHRvIGFuIGFyY2hpdmUgdGFibGUgYW5kIGFub3RoZXIgdGFibGUgYmFjayB0byAnJXMnAEluY29ycmVjdCBwYXJhbWV0ZXIgY291bnQgaW4gdGhlIGNhbGwgdG8gbmF0aXZlIGZ1bmN0aW9uICclLS4xOTJzJwBJbmNvcnJlY3QgcGFyYW1ldGVycyBpbiB0aGUgY2FsbCB0byBuYXRpdmUgZnVuY3Rpb24gJyUtLjE5MnMnAEluY29ycmVjdCBwYXJhbWV0ZXJzIGluIHRoZSBjYWxsIHRvIHN0b3JlZCBmdW5jdGlvbiAlLS4xOTJzAFRoaXMgZnVuY3Rpb24gJyUtLjE5MnMnIGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgbmF0aXZlIGZ1bmN0aW9uAExpa2UgdmVyZGlhciAnJS0uNjRzJyBmb3Igbnlra2VsICclLS4zODVzJwBUb28gbWFueSBmaWxlcyBvcGVuZWQsIHBsZWFzZSBleGVjdXRlIHRoZSBjb21tYW5kIGFnYWluAEV2ZW50IGV4ZWN1dGlvbiB0aW1lIGlzIGluIHRoZSBwYXN0IGFuZCBPTiBDT01QTEVUSU9OIE5PVCBQUkVTRVJWRSBpcyBzZXQuIFRoZSBldmVudCB3YXMgZHJvcHBlZCBpbW1lZGlhdGVseSBhZnRlciBjcmVhdGlvbi4ARXZlbnQgZXhlY3V0aW9uIHRpbWUgaXMgaW4gdGhlIHBhc3QgYW5kIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIGlzIHNldC4gVGhlIGV2ZW50IHdhcyBub3QgY2hhbmdlZC4gU3BlY2lmeSBhIHRpbWUgaW4gdGhlIGZ1dHVyZS4AVGhlIGluY2lkZW50ICVzIG9jY3VycmVkIG9uIHRoZSBzb3VyY2UuIE1lc3NhZ2U6ICVzAFRhYmxlIGhhcyBubyBwYXJ0aXRpb24gZm9yIHNvbWUgZXhpc3RpbmcgdmFsdWVzAFVuc2FmZSBzdGF0ZW1lbnQgd3JpdHRlbiB0byB0aGUgYmluYXJ5IGxvZyB1c2luZyBzdGF0ZW1lbnQgZm9ybWF0IHNpbmNlIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQuICVzAEZhdGFsIGVycm9yOiAlcwBSZWxheSBsb2cgcmVhZCBmYWlsdXJlOiAlcwBSZWxheSBsb2cgd3JpdGUgZmFpbHVyZTogJXMARmFpbGVkIHRvIGNyZWF0ZSAlcwBTb3VyY2UgY29tbWFuZCAlcyBmYWlsZWQ6ICVzAEJpbmFyeSBsb2dnaW5nIG5vdCBwb3NzaWJsZS4gTWVzc2FnZTogJXMAVmlldyBgJS0uNjRzYC5gJS0uNjRzYCBoYXMgbm8gY3JlYXRpb24gY29udGV4dABDcmVhdGlvbiBjb250ZXh0IG9mIHZpZXcgYCUtLjY0c2AuYCUtLjY0cycgaXMgaW52YWxpZABDcmVhdGlvbiBjb250ZXh0IG9mIHN0b3JlZCByb3V0aW5lIGAlLS42NHNgLmAlLS42NHNgIGlzIGludmFsaWQAQ29ycnVwdGVkIFRSRyBmaWxlIGZvciB0YWJsZSBgJS0uNjRzYC5gJS0uNjRzYABUcmlnZ2VycyBmb3IgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AgaGF2ZSBubyBjcmVhdGlvbiBjb250ZXh0AFRyaWdnZXIgY3JlYXRpb24gY29udGV4dCBvZiB0YWJsZSBgJS0uNjRzYC5gJS0uNjRzYCBpcyBpbnZhbGlkAENyZWF0aW9uIGNvbnRleHQgb2YgZXZlbnQgYCUtLjY0c2AuYCUtLjY0c2AgaXMgaW52YWxpZABDYW5ub3Qgb3BlbiB0YWJsZSBmb3IgdHJpZ2dlciBgJS0uNjRzYC5gJS0uNjRzYABDYW5ub3QgY3JlYXRlIHN0b3JlZCByb3V0aW5lIGAlLS42NHNgLiBDaGVjayB3YXJuaW5ncwBBbWJpZ3VvdXMgcmVwbGljYSBtb2RlcyBjb21iaW5hdGlvbi4gJXMAVGhlIEJJTkxPRyBzdGF0ZW1lbnQgb2YgdHlwZSBgJXNgIHdhcyBub3QgcHJlY2VkZWQgYnkgYSBmb3JtYXQgZGVzY3JpcHRpb24gQklOTE9HIHN0YXRlbWVudC4AQ29ycnVwdGVkIHJlcGxpY2F0aW9uIGV2ZW50IHdhcyBkZXRlY3RlZABJbnZhbGlkIGNvbHVtbiByZWZlcmVuY2UgKCUtLjY0cykgaW4gTE9BRCBEQVRBAEJlaW5nIHB1cmdlZCBsb2cgJXMgd2FzIG5vdCBmb3VuZABYQV9SQlRJTUVPVVQ6IFRyYW5zYWN0aW9uIGJyYW5jaCB3YXMgcm9sbGVkIGJhY2s6IHRvb2sgdG9vIGxvbmcAWEFfUkJERUFETE9DSzogVHJhbnNhY3Rpb24gYnJhbmNoIHdhcyByb2xsZWQgYmFjazogZGVhZGxvY2sgd2FzIGRldGVjdGVkAFByZXBhcmVkIHN0YXRlbWVudCBuZWVkcyB0byBiZSByZS1wcmVwYXJlZABERUxBWUVEIG9wdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZSAnJS0uMTkycycAVGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGRvZXMgbm90IGV4aXN0ADwlLS42NHM+IG9wdGlvbiBpZ25vcmVkAEJ1aWx0LWluIHBsdWdpbnMgY2Fubm90IGJlIGRlbGV0ZWQAUGx1Z2luIGlzIGJ1c3kgYW5kIHdpbGwgYmUgdW5pbnN0YWxsZWQgb24gc2h1dGRvd24AJXMgdmFyaWFibGUgJyVzJyBpcyByZWFkLW9ubHkuIFVzZSBTRVQgJXMgdG8gYXNzaWduIHRoZSB2YWx1ZQBTdG9yYWdlIGVuZ2luZSAlcyBkb2VzIG5vdCBzdXBwb3J0IHJvbGxiYWNrIGZvciB0aGlzIHN0YXRlbWVudC4gVHJhbnNhY3Rpb24gcm9sbGVkIGJhY2sgYW5kIG11c3QgYmUgcmVzdGFydGVkAFVuZXhwZWN0ZWQgc291cmNlJ3MgaGVhcnRiZWF0IGRhdGE6ICVzAFRoZSByZXF1ZXN0ZWQgdmFsdWUgZm9yIHRoZSBoZWFydGJlYXQgcGVyaW9kIGlzIGVpdGhlciBuZWdhdGl2ZSBvciBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgKCVzIHNlY29uZHMpLgBCYWQgc2NoZW1hIGZvciBteXNxbC5uZGJfcmVwbGljYXRpb24gdGFibGUuIE1lc3NhZ2U6ICUtLjY0cwBFcnJvciBpbiBwYXJzaW5nIGNvbmZsaWN0IGZ1bmN0aW9uLiBNZXNzYWdlOiAlLS42NHMAV3JpdGUgdG8gZXhjZXB0aW9ucyB0YWJsZSBmYWlsZWQuIE1lc3NhZ2U6ICUtLjEyOHMAQ29tbWVudCBmb3IgdGFibGUgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAQ29tbWVudCBmb3IgZmllbGQgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkARlVOQ1RJT04gJXMgZG9lcyBub3QgZXhpc3QuIENoZWNrIHRoZSAnRnVuY3Rpb24gTmFtZSBQYXJzaW5nIGFuZCBSZXNvbHV0aW9uJyBzZWN0aW9uIGluIHRoZSBSZWZlcmVuY2UgTWFudWFsAERhdGFiYXNlAFRhYmxlAFBhcnRpdGlvbgBTdWJwYXJ0aXRpb24AVGVtcG9yYXJ5AFJlbmFtZWQAVG9vIG1hbnkgYWN0aXZlIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zAE5vbi1BU0NJSSBzZXBhcmF0b3IgYXJndW1lbnRzIGFyZSBub3QgZnVsbHkgc3VwcG9ydGVkAGRlYnVnIHN5bmMgcG9pbnQgd2FpdCB0aW1lZCBvdXQAZGVidWcgc3luYyBwb2ludCBoaXQgbGltaXQgcmVhY2hlZABEdXBsaWNhdGUgY29uZGl0aW9uIGluZm9ybWF0aW9uIGl0ZW0gJyVzJwBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIHdhcm5pbmcgY29uZGl0aW9uAFVuaGFuZGxlZCB1c2VyLWRlZmluZWQgbm90IGZvdW5kIGNvbmRpdGlvbgBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIGV4Y2VwdGlvbiBjb25kaXRpb24AUkVTSUdOQUwgd2hlbiBoYW5kbGVyIG5vdCBhY3RpdmUAU0lHTkFML1JFU0lHTkFMIGNhbiBvbmx5IHVzZSBhIENPTkRJVElPTiBkZWZpbmVkIHdpdGggU1FMU1RBVEUARGF0YSB0cnVuY2F0ZWQgZm9yIGNvbmRpdGlvbiBpdGVtICclcycARGF0YSB0b28gbG9uZyBmb3IgY29uZGl0aW9uIGl0ZW0gJyVzJwBVbmtub3duIGxvY2FsZTogJyUtLjY0cycAVGhlIHJlcXVlc3RlZCBzZXJ2ZXIgaWQgJWQgY2xhc2hlcyB3aXRoIHRoZSByZXBsaWNhIHN0YXJ0dXAgb3B0aW9uIC0tcmVwbGljYXRlLXNhbWUtc2VydmVyLWlkAFF1ZXJ5IGNhY2hlIGlzIGRpc2FibGVkOyByZXN0YXJ0IHRoZSBzZXJ2ZXIgd2l0aCBxdWVyeV9jYWNoZV90eXBlPTEgdG8gZW5hYmxlIGl0AER1cGxpY2F0ZSBwYXJ0aXRpb24gZmllbGQgbmFtZSAnJS0uMTkycycASW5jb25zaXN0ZW5jeSBpbiB1c2FnZSBvZiBjb2x1bW4gbGlzdHMgZm9yIHBhcnRpdGlvbmluZwBQYXJ0aXRpb24gY29sdW1uIHZhbHVlcyBvZiBpbmNvcnJlY3QgdHlwZQBUb28gbWFueSBmaWVsZHMgaW4gJyUtLjE5MnMnAENhbm5vdCB1c2UgTUFYVkFMVUUgYXMgdmFsdWUgaW4gVkFMVUVTIElOAENhbm5vdCBoYXZlIG1vcmUgdGhhbiBvbmUgdmFsdWUgZm9yIHRoaXMgdHlwZSBvZiAlLS42NHMgcGFydGl0aW9uaW5nAFJvdyBleHByZXNzaW9ucyBpbiBWQUxVRVMgSU4gb25seSBhbGxvd2VkIGZvciBtdWx0aS1maWVsZCBjb2x1bW4gcGFydGl0aW9uaW5nAEZpZWxkICclLS4xOTJzJyBpcyBvZiBhIG5vdCBhbGxvd2VkIHR5cGUgZm9yIHRoaXMgdHlwZSBvZiBwYXJ0aXRpb25pbmcAVGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgcGFydGl0aW9uaW5nIGZpZWxkcyBpcyB0b28gbGFyZ2UAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgYm90aCByb3ctaW5jYXBhYmxlIGVuZ2luZXMgYW5kIHN0YXRlbWVudC1pbmNhcGFibGUgZW5naW5lcyBhcmUgaW52b2x2ZWQuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIEJJTkxPR19GT1JNQVQgPSBST1cgYW5kIGF0IGxlYXN0IG9uZSB0YWJsZSB1c2VzIGEgc3RvcmFnZSBlbmdpbmUgbGltaXRlZCB0byBzdGF0ZW1lbnQtYmFzZWQgbG9nZ2luZy4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2Ugc3RhdGVtZW50IGlzIHVuc2FmZSwgc3RvcmFnZSBlbmdpbmUgaXMgbGltaXRlZCB0byBzdGF0ZW1lbnQtYmFzZWQgbG9nZ2luZywgYW5kIEJJTkxPR19GT1JNQVQgPSBNSVhFRC4gJXMAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2Ugc3RhdGVtZW50IGlzIGluIHJvdyBmb3JtYXQgYW5kIGF0IGxlYXN0IG9uZSB0YWJsZSB1c2VzIGEgc3RvcmFnZSBlbmdpbmUgbGltaXRlZCB0byBzdGF0ZW1lbnQtYmFzZWQgbG9nZ2luZy4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVCBhbmQgYXQgbGVhc3Qgb25lIHRhYmxlIHVzZXMgYSBzdG9yYWdlIGVuZ2luZSBsaW1pdGVkIHRvIHJvdy1iYXNlZCBsb2dnaW5nLiVzAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIHN0YXRlbWVudCBpcyBpbiByb3cgZm9ybWF0IGFuZCBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5ULgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBtb3JlIHRoYW4gb25lIGVuZ2luZSBpcyBpbnZvbHZlZCBhbmQgYXQgbGVhc3Qgb25lIGVuZ2luZSBpcyBzZWxmLWxvZ2dpbmcuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIExJTUlUIGNsYXVzZS4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgc2V0IG9mIHJvd3MgaW5jbHVkZWQgY2Fubm90IGJlIHByZWRpY3RlZC4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIElOU0VSVCBERUxBWUVELiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSB0aW1lcyB3aGVuIHJvd3MgYXJlIGluc2VydGVkIGNhbm5vdCBiZSBwcmVkaWN0ZWQuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyB0aGUgZ2VuZXJhbCBsb2csIHNsb3cgcXVlcnkgbG9nLCBvciBwZXJmb3JtYW5jZV9zY2hlbWEgdGFibGUocykuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2Ugc3lzdGVtIHRhYmxlcyBtYXkgZGlmZmVyIG9uIHJlcGxpY2FzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgaW52b2tlcyBhIHRyaWdnZXIgb3IgYSBzdG9yZWQgZnVuY3Rpb24gdGhhdCBpbnNlcnRzIGludG8gYW4gQVVUT19JTkNSRU1FTlQgY29sdW1uLiBJbnNlcnRlZCB2YWx1ZXMgY2Fubm90IGJlIGxvZ2dlZCBjb3JyZWN0bHkuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgVURGIHdoaWNoIG1heSBub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIG9uIHRoZSByZXBsaWNhLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIHN5c3RlbSB2YXJpYWJsZSB0aGF0IG1heSBoYXZlIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIHN5c3RlbSBmdW5jdGlvbiB0aGF0IG1heSByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUgb24gdGhlIHJlcGxpY2EuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBhY2Nlc3NlcyBhIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlIGFmdGVyIGFjY2Vzc2luZyBhIHRyYW5zYWN0aW9uYWwgdGFibGUgd2l0aGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uLgAlcyBTdGF0ZW1lbnQ6ICVzAENvbHVtbiAlZCBvZiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJyBjYW5ub3QgYmUgY29udmVydGVkIGZyb20gdHlwZSAnJS0uMzJzJyB0byB0eXBlICclLS4zMnMnAENhbid0IGNyZWF0ZSBjb252ZXJzaW9uIHRhYmxlIGZvciB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJwBDYW5ub3QgbW9kaWZ5IEBAc2Vzc2lvbi5iaW5sb2dfZm9ybWF0IGluc2lkZSBhIHRyYW5zYWN0aW9uAFRoZSBwYXRoIHNwZWNpZmllZCBmb3IgJS42NHMgaXMgdG9vIGxvbmcuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAE5hdGl2ZSB0YWJsZSAnJS0uNjRzJy4nJS0uNjRzJyBoYXMgdGhlIHdyb25nIHN0cnVjdHVyZQBJbnZhbGlkIHBlcmZvcm1hbmNlX3NjaGVtYSB1c2FnZS4AVGFibGUgJyVzJy4nJXMnIHdhcyBza2lwcGVkIHNpbmNlIGl0cyBkZWZpbml0aW9uIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IGNvbmN1cnJlbnQgRERMIHN0YXRlbWVudABDYW5ub3QgbW9kaWZ5IEBAc2Vzc2lvbi5iaW5sb2dfZGlyZWN0X25vbl90cmFuc2FjdGlvbmFsX3VwZGF0ZXMgaW5zaWRlIGEgdHJhbnNhY3Rpb24AQ2Fubm90IGNoYW5nZSB0aGUgYmlubG9nIGRpcmVjdCBmbGFnIGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAEEgU1BBVElBTCBpbmRleCBtYXkgb25seSBjb250YWluIGEgZ2VvbWV0cmljYWwgdHlwZSBjb2x1bW4AQ29tbWVudCBmb3IgaW5kZXggJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAV2FpdCBvbiBhIGxvY2sgd2FzIGFib3J0ZWQgZHVlIHRvIGEgcGVuZGluZyBleGNsdXNpdmUgbG9jawAlcyB2YWx1ZSBpcyBvdXQgb2YgcmFuZ2UgaW4gJyVzJwBBIHZhcmlhYmxlIG9mIGEgbm9uLWludGVnZXIgYmFzZWQgdHlwZSBpbiBMSU1JVCBjbGF1c2UATWl4aW5nIHNlbGYtbG9nZ2luZyBhbmQgbm9uLXNlbGYtbG9nZ2luZyBlbmdpbmVzIGluIGEgc3RhdGVtZW50IGlzIHVuc2FmZS4AU3RhdGVtZW50IGFjY2Vzc2VzIG5vbnRyYW5zYWN0aW9uYWwgdGFibGUgYXMgd2VsbCBhcyB0cmFuc2FjdGlvbmFsIG9yIHRlbXBvcmFyeSB0YWJsZSwgYW5kIHdyaXRlcyB0byBhbnkgb2YgdGhlbS4AQ2Fubm90IG1vZGlmeSBAQHNlc3Npb24uc3FsX2xvZ19iaW4gaW5zaWRlIGEgdHJhbnNhY3Rpb24AQ2Fubm90IGNoYW5nZSB0aGUgc3FsX2xvZ19iaW4gaW5zaWRlIGEgc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIARmFpbGVkIHRvIHJlYWQgZnJvbSB0aGUgLnBhciBmaWxlAFZBTFVFUyB2YWx1ZSBmb3IgcGFydGl0aW9uICclLS42NHMnIG11c3QgaGF2ZSB0eXBlIElOVABUaWxnYW5nIGlra2UgdGlsbGF0ZSBmb3IgYnJ1a2FyOiAnJS0uNDhzJ0AnJS0uNjRzJwBTRVQgUEFTU1dPUkQgaGFzIG5vIHNpZ25pZmljYW5jZSBmb3IgdXNlcnMgYXV0aGVudGljYXRpbmcgdmlhIHBsdWdpbnMAR1JBTlQgd2l0aCBJREVOVElGSUVEIFdJVEggaXMgaWxsZWdhbCBiZWNhdXNlIHRoZSB1c2VyICUtLipzIGFscmVhZHkgZXhpc3RzAENhbm5vdCB0cnVuY2F0ZSBhIHRhYmxlIHJlZmVyZW5jZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICglLjE5MnMpAFBsdWdpbiAnJXMnIGlzIGZvcmNlX3BsdXNfcGVybWFuZW50IGFuZCBjYW4gbm90IGJlIHVubG9hZGVkAFRoZSByZXF1ZXN0ZWQgdmFsdWUgZm9yIHRoZSBoZWFydGJlYXQgcGVyaW9kIGlzIGxlc3MgdGhhbiAxIG1pbGxpc2Vjb25kLiBUaGUgdmFsdWUgaXMgcmVzZXQgdG8gMCwgbWVhbmluZyB0aGF0IGhlYXJ0YmVhdGluZyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGRpc2FibGVkLgBUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBleGNlZWRzIHRoZSB2YWx1ZSBvZiBgcmVwbGljYV9uZXRfdGltZW91dCcgc2Vjb25kcy4gQSBzZW5zaWJsZSB2YWx1ZSBmb3IgdGhlIHBlcmlvZCBzaG91bGQgYmUgbGVzcyB0aGFuIHRoZSB0aW1lb3V0LgBNdWx0aS1yb3cgc3RhdGVtZW50cyByZXF1aXJlZCBtb3JlIHRoYW4gJ21heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplJyBieXRlcyBvZiBzdG9yYWdlOyBpbmNyZWFzZSB0aGlzIG15c3FsZCB2YXJpYWJsZSBhbmQgdHJ5IGFnYWluAFByaW1hcnkga2V5L3BhcnRpdGlvbiBrZXkgdXBkYXRlIGlzIG5vdCBhbGxvd2VkIHNpbmNlIHRoZSB0YWJsZSBpcyB1cGRhdGVkIGJvdGggYXMgJyUtLjE5MnMnIGFuZCAnJS0uMTkycycuAFRhYmxlIHJlYnVpbGQgcmVxdWlyZWQuIFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCUtLjY0c2AgRk9SQ0UiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEAVGhlIHZhbHVlIG9mICclcycgc2hvdWxkIGJlIG5vIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgJyVzJwBJbmRleCBjb2x1bW4gc2l6ZSB0b28gbGFyZ2UuIFRoZSBtYXhpbXVtIGNvbHVtbiBzaXplIGlzICVsdSBieXRlcy4AVHJpZ2dlciAnJS0uNjRzJyBoYXMgYW4gZXJyb3IgaW4gaXRzIGJvZHk6ICclLS4yNTZzJwBVbmtub3duIHRyaWdnZXIgaGFzIGFuIGVycm9yIGluIGl0cyBib2R5OiAnJS0uMjU2cycASW5kZXggJXMgaXMgY29ycnVwdGVkAFVuZG8gbG9nIHJlY29yZCBpcyB0b28gYmlnLgBJTlNFUlQgSUdOT1JFLi4uIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4ASU5TRVJULi4uIFNFTEVDVC4uLiBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSB1cGRhdGVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AUkVQTEFDRS4uLiBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgcmVwbGFjZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBDUkVBVEUuLi4gSUdOT1JFIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AQ1JFQVRFLi4uIFJFUExBQ0UgU0VMRUNUIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIHJlcGxhY2VkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AVVBEQVRFIElHTk9SRSBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgdXBkYXRlZCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIGlnbm9yZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IHVuaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byB1bmluc3RhbGwgaXQuAFBsdWdpbiAnJXMnIGlzIG1hcmtlZCBhcyBub3QgZHluYW1pY2FsbHkgaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byBpbnN0YWxsIGl0LgBTdGF0ZW1lbnRzIHdyaXRpbmcgdG8gYSB0YWJsZSB3aXRoIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbiBhZnRlciBzZWxlY3RpbmcgZnJvbSBhbm90aGVyIHRhYmxlIGFyZSB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGRldGVybWluZXMgd2hhdCAoaWYgYW55KSByb3dzIHdpbGwgYmUgd3JpdHRlbi4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAENSRUFURSBUQUJMRS4uLiBTRUxFQ1QuLi4gIG9uIGEgdGFibGUgd2l0aCBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaW5zZXJ0ZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBJTlNFUlQuLi4gT04gRFVQTElDQVRFIEtFWSBVUERBVEUgIG9uIGEgdGFibGUgd2l0aCBtb3JlIHRoYW4gb25lIFVOSVFVRSBLRVkgaXMgdW5zYWZlAFRhYmxlIGlzIGJlaW5nIHVzZWQgaW4gZm9yZWlnbiBrZXkgY2hlY2suAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBzeXN0ZW0gdGFibGVzLiBbJXMuJXNdAElOU0VSVCBpbnRvIGF1dG9pbmNyZW1lbnQgZmllbGQgd2hpY2ggaXMgbm90IHRoZSBmaXJzdCBwYXJ0IGluIHRoZSBjb21wb3NlZCBwcmltYXJ5IGtleSBpcyB1bnNhZmUuAENhbm5vdCBsb2FkIGZyb20gJXMuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAVGhlIHJlcXVlc3RlZCB2YWx1ZSAlcyBmb3IgdGhlIHNvdXJjZSBkZWxheSBleGNlZWRzIHRoZSBtYXhpbXVtICV1AE9ubHkgRm9ybWF0X2Rlc2NyaXB0aW9uX2xvZ19ldmVudCBhbmQgcm93IGV2ZW50cyBhcmUgYWxsb3dlZCBpbiBCSU5MT0cgc3RhdGVtZW50cyAoYnV0ICVzIHdhcyBwcm92aWRlZCkATm9uIG1hdGNoaW5nIGF0dHJpYnV0ZSAnJS0uNjRzJyBiZXR3ZWVuIHBhcnRpdGlvbiBhbmQgdGFibGUAVGFibGUgdG8gZXhjaGFuZ2Ugd2l0aCBwYXJ0aXRpb24gaXMgcGFydGl0aW9uZWQ6ICclLS42NHMnAFRhYmxlIHRvIGV4Y2hhbmdlIHdpdGggcGFydGl0aW9uIGlzIHRlbXBvcmFyeTogJyUtLjY0cycAU3VicGFydGl0aW9uZWQgdGFibGUsIHVzZSBzdWJwYXJ0aXRpb24gaW5zdGVhZCBvZiBwYXJ0aXRpb24AVW5rbm93biBwYXJ0aXRpb24gJyUtLjY0cycgaW4gdGFibGUgJyUtLjY0cycAVGFibGVzIGhhdmUgZGlmZmVyZW50IGRlZmluaXRpb25zAEZvdW5kIGEgcm93IHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHBhcnRpdGlvbgBPcHRpb24gYmlubG9nX2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX2NhY2hlX3NpemUuAENhbm5vdCB1c2UgJS0uNjRzIGFjY2VzcyBvbiBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbiBvbiBmaWVsZCAnJS0uNjRzJwBUYWJsZSB0byBleGNoYW5nZSB3aXRoIHBhcnRpdGlvbiBoYXMgZm9yZWlnbiBrZXkgcmVmZXJlbmNlczogJyUtLjY0cycAS2V5IHZhbHVlICclLS4xOTJzJyB3YXMgbm90IGZvdW5kIGluIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnAERhdGEgZm9yIGNvbHVtbiAnJXMnIHRvbyBsb25nAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIG5ldHdvcmsuAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIGEgbG9nIGZpbGUuAE9wdGlvbiBiaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfc3RtdF9jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplLgBDYW4ndCB1cGRhdGUgdGFibGUgJyUtLjE5MnMnIHdoaWxlICclLS4xOTJzJyBpcyBiZWluZyBjcmVhdGVkLgBQQVJUSVRJT04gKCkgY2xhdXNlIG9uIG5vbiBwYXJ0aXRpb25lZCB0YWJsZQBGb3VuZCBhIHJvdyBub3QgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcnRpdGlvbiBzZXQAUGFydGl0aW9uICclLS42NHMnIGRvZXNuJ3QgZXhpc3QARmFpbHVyZSB3aGlsZSBjaGFuZ2luZyB0aGUgdHlwZSBvZiByZXBsaWNhdGlvbiByZXBvc2l0b3J5OiAlcy4AVGhlIGNyZWF0aW9uIG9mIHNvbWUgdGVtcG9yYXJ5IHRhYmxlcyBjb3VsZCBub3QgYmUgcm9sbGVkIGJhY2suAFNvbWUgdGVtcG9yYXJ5IHRhYmxlcyB3ZXJlIGRyb3BwZWQsIGJ1dCB0aGVzZSBvcGVyYXRpb25zIGNvdWxkIG5vdCBiZSByb2xsZWQgYmFjay4AJXMgaXMgbm90IHN1cHBvcnRlZCBpbiBtdWx0aS10aHJlYWRlZCByZXBsaWNhIG1vZGUuICVzAFRoZSBudW1iZXIgb2YgbW9kaWZpZWQgZGF0YWJhc2VzIGV4Y2VlZHMgdGhlIG1heGltdW0gJWQ7IHRoZSBkYXRhYmFzZSBuYW1lcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVwbGljYXRpb24gZXZlbnQgbWV0YWRhdGEuAENhbm5vdCBleGVjdXRlIHRoZSBjdXJyZW50IGV2ZW50IGdyb3VwIGluIHRoZSBwYXJhbGxlbCBtb2RlLiBFbmNvdW50ZXJlZCBldmVudCAlcywgcmVsYXktbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVzIHdoaWNoIHByZXZlbnRzIGV4ZWN1dGlvbiBvZiB0aGlzIGV2ZW50IGdyb3VwIGluIHBhcmFsbGVsIG1vZGUuIFJlYXNvbjogJXMuACVzAEZVTExURVhUIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4ASW52YWxpZCBjb25kaXRpb24gbnVtYmVyAFNlbmRpbmcgcGFzc3dvcmRzIGluIHBsYWluIHRleHQgd2l0aG91dCBTU0wvVExTIGlzIGV4dHJlbWVseSBpbnNlY3VyZS4AU3RvcmluZyBNeVNRTCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBpcyBub3Qgc2VjdXJlIGFuZCBpcyB0aGVyZWZvcmUgbm90IHJlY29tbWVuZGVkLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgdGhlIFVTRVIgYW5kIFBBU1NXT1JEIGNvbm5lY3Rpb24gb3B0aW9ucyBmb3IgU1RBUlQgUkVQTElDQTsgc2VlIHRoZSAnU1RBUlQgUkVQTElDQSBTeW50YXgnIGluIHRoZSBNeVNRTCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZm9yIHRhYmxlICclLjE5MnMnLCByZWNvcmQgJyUtLjE5MnMnIHdvdWxkIGxlYWQgdG8gYSBkdXBsaWNhdGUgZW50cnkgaW4gdGFibGUgJyUuMTkycycsIGtleSAnJS4xOTJzJwBGb3JlaWduIGtleSBjb25zdHJhaW50IGZvciB0YWJsZSAnJS4xOTJzJywgcmVjb3JkICclLS4xOTJzJyB3b3VsZCBsZWFkIHRvIGEgZHVwbGljYXRlIGVudHJ5IGluIGEgY2hpbGQgdGFibGUAU2V0dGluZyBhdXRoZW50aWNhdGlvbiBvcHRpb25zIGlzIG5vdCBwb3NzaWJsZSB3aGVuIG9ubHkgdGhlIFJlcGxpY2EgU1FMIFRocmVhZCBpcyBiZWluZyBzdGFydGVkLgBUaGUgdGFibGUgZG9lcyBub3QgaGF2ZSBGVUxMVEVYVCBpbmRleCB0byBzdXBwb3J0IHRoaXMgcXVlcnkAVGhlIHN5c3RlbSB2YXJpYWJsZSAlLjIwMHMgY2Fubm90IGJlIHNldCBpbiBzdG9yZWQgZnVuY3Rpb25zIG9yIHRyaWdnZXJzLgBUaGUgc3lzdGVtIHZhcmlhYmxlICUuMjAwcyBjYW5ub3QgYmUgc2V0IHdoZW4gdGhlcmUgaXMgYW4gb25nb2luZyB0cmFuc2FjdGlvbi4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGhhcyB0aGUgdmFsdWUgJS4yMDBzLCB3aGljaCBpcyBub3QgbGlzdGVkIGluIEBAU0VTU0lPTi5HVElEX05FWFRfTElTVC4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBjaGFuZ2UgaW5zaWRlIGEgdHJhbnNhY3Rpb24uAFRoZSBzdGF0ZW1lbnQgJ1NFVCAlLjIwMHMnIGNhbm5vdCBpbnZva2UgYSBzdG9yZWQgZnVuY3Rpb24uAFRoZSBzeXN0ZW0gdmFyaWFibGUgQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgJ0FVVE9NQVRJQycgd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUX0xJU1QgaXMgbm9uLU5VTEwuAFNraXBwaW5nIHRyYW5zYWN0aW9uICUuMjAwcyBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gZXhlY3V0ZWQgYW5kIGxvZ2dlZC4ATWFsZm9ybWVkIEdUSUQgc2V0IHNwZWNpZmljYXRpb24gJyUuMjAwcycuAE1hbGZvcm1lZCBHVElEIHNldCBlbmNvZGluZy4ATWFsZm9ybWVkIEdUSUQgc3BlY2lmaWNhdGlvbiAnJS4yMDBzJy4ASW1wb3NzaWJsZSB0byBnZW5lcmF0ZSBHVElEOiB0aGUgaW50ZWdlciBjb21wb25lbnQgcmVhY2hlZCB0aGUgbWF4aW11bSB2YWx1ZS4gUmVzdGFydCB0aGUgc2VydmVyIHdpdGggYSBuZXcgc2VydmVyX3V1aWQuAFBhcmFtZXRlcnMgU09VUkNFX0xPR19GSUxFLCBTT1VSQ0VfTE9HX1BPUywgUkVMQVlfTE9HX0ZJTEUgYW5kIFJFTEFZX0xPR19QT1MgY2Fubm90IGJlIHNldCB3aGVuIFNPVVJDRV9BVVRPX1BPU0lUSU9OIGlzIGFjdGl2ZS4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDEgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnRzIHdpdGggaW1wbGljaXQgY29tbWl0IGluc2lkZSBhIHRyYW5zYWN0aW9uIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBHVElEX01PREUgPSBPTiByZXF1aXJlcyBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTi4AQEBHTE9CQUwuR1RJRF9NT0RFID0gT04gb3IgT05fUEVSTUlTU0lWRSBvciBPRkZfUEVSTUlTU0lWRSByZXF1aXJlcyAtLWxvZy1iaW4gYW5kIC0tbG9nLXJlcGxpY2EtdXBkYXRlcy4AQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgc2V0IHRvIFVVSUQ6TlVNQkVSIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSBzZXQgdG8gQU5PTllNT1VTIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uAEBAU0VTU0lPTi5HVElEX05FWFRfTElTVCBjYW5ub3QgYmUgc2V0IHRvIGEgbm9uLU5VTEwgdmFsdWUgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAEZvdW5kIGEgR3RpZF9sb2dfZXZlbnQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBVcGRhdGVzIHRvIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyBjYW4gb25seSBiZSBkb25lIGluIGVpdGhlciBhdXRvY29tbWl0dGVkIHN0YXRlbWVudHMgb3Igc2luZ2xlLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMsIGFuZCBuZXZlciBpbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYXMgdXBkYXRlcyB0byB0cmFuc2FjdGlvbmFsIHRhYmxlcy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBUQUJMRSAuLi4gU0VMRUNULgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgY2FuIG9ubHkgYmUgZXhlY3V0ZWQgb3V0c2lkZSB0cmFuc2FjdGlvbmFsIGNvbnRleHQuICBUaGVzZSBzdGF0ZW1lbnRzIGFyZSBhbHNvIG5vdCBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgdHJpZ2dlciBiZWNhdXNlIGZ1bmN0aW9ucyBhbmQgdHJpZ2dlcnMgYXJlIGFsc28gY29uc2lkZXJlZCB0byBiZSBtdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLgBUaGUgdmFsdWUgb2YgQEBHTE9CQUwuR1RJRF9NT0RFIGNhbiBvbmx5IGJlIGNoYW5nZWQgb25lIHN0ZXAgYXQgYSB0aW1lOiBPRkYgPC0+IE9GRl9QRVJNSVNTSVZFIDwtPiBPTl9QRVJNSVNTSVZFIDwtPiBPTi4gQWxzbyBub3RlIHRoYXQgdGhpcyB2YWx1ZSBtdXN0IGJlIHN0ZXBwZWQgdXAgb3IgZG93biBzaW11bHRhbmVvdXNseSBvbiBhbGwgc2VydmVycy4gU2VlIHRoZSBNYW51YWwgZm9yIGluc3RydWN0aW9ucy4AQ2Fubm90IHJlcGxpY2F0ZSBiZWNhdXNlIHRoZSBzb3VyY2UgcHVyZ2VkIHJlcXVpcmVkIGJpbmFyeSBsb2dzLiBSZXBsaWNhdGUgdGhlIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGZyb20gZWxzZXdoZXJlLCBvciBwcm92aXNpb24gYSBuZXcgcmVwbGljYSBmcm9tIGJhY2t1cC4gQ29uc2lkZXIgaW5jcmVhc2luZyB0aGUgc291cmNlJ3MgYmluYXJ5IGxvZyBleHBpcmF0aW9uIHBlcmlvZC4gJXMAQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgY2hhbmdlZCBieSBhIGNsaWVudCB0aGF0IG93bnMgYSBHVElELiBUaGUgY2xpZW50IG93bnMgJXMuIE93bmVyc2hpcCBpcyByZWxlYXNlZCBvbiBDT01NSVQgb3IgUk9MTEJBQ0suAFVua25vd24gRVhQTEFJTiBmb3JtYXQgbmFtZTogJyVzJwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQgaW4gYSBSRUFEIE9OTFkgdHJhbnNhY3Rpb24uAENvbW1lbnQgZm9yIHRhYmxlIHBhcnRpdGlvbiAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBSZXBsaWNhIGlzIG5vdCBjb25maWd1cmVkIG9yIGZhaWxlZCB0byBpbml0aWFsaXplIHByb3Blcmx5LiBZb3UgbXVzdCBhdCBsZWFzdCBzZXQgLS1zZXJ2ZXItaWQgdG8gZW5hYmxlIGVpdGhlciBhIHNvdXJjZSBvciBhIHJlcGxpY2EuIEFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cuAElubm9EQiBwcmVzZW50bHkgc3VwcG9ydHMgb25lIEZVTExURVhUIGluZGV4IGNyZWF0aW9uIGF0IGEgdGltZQBDYW5ub3QgY3JlYXRlIEZVTExURVhUIGluZGV4IG9uIHRlbXBvcmFyeSBJbm5vREIgdGFibGUAQ29sdW1uICclLS4xOTJzJyBpcyBvZiB3cm9uZyB0eXBlIGZvciBhbiBJbm5vREIgRlVMTFRFWFQgaW5kZXgASW5kZXggJyUtLjE5MnMnIGlzIG9mIHdyb25nIHR5cGUgZm9yIGFuIElubm9EQiBGVUxMVEVYVCBpbmRleABDcmVhdGluZyBpbmRleCAnJS0uMTkycycgcmVxdWlyZWQgbW9yZSB0aGFuICdpbm5vZGJfb25saW5lX2FsdGVyX2xvZ19tYXhfc2l6ZScgYnl0ZXMgb2YgbW9kaWZpY2F0aW9uIGxvZy4gUGxlYXNlIHRyeSBhZ2Fpbi4AVW5rbm93biBBTEdPUklUSE0gJyVzJwBVbmtub3duIExPQ0sgdHlwZSAnJXMnAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHJlcGxpY2Egd2FzIHN0b3BwZWQgd2l0aCBhbiBlcnJvciBvciBraWxsZWQgaW4gTVRBIG1vZGUuIENvbnNpZGVyIHVzaW5nIFJFU0VUIFJFUExJQ0Egb3IgU1RBUlQgUkVQTElDQSBVTlRJTC4AQ2Fubm90IHJlY292ZXIgYWZ0ZXIgUkVQTElDQSBlcnJvcmVkIG91dCBpbiBwYXJhbGxlbCBleGVjdXRpb24gbW9kZS4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4AQ2Fubm90IGNsZWFuIHVwIHdvcmtlciBpbmZvIHRhYmxlcy4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4AQ29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAUmVwbGljYSBtdXN0IHNpbGVudGx5IHJldHJ5IGN1cnJlbnQgdHJhbnNhY3Rpb24AVGhlcmUgaXMgYSBmb3JlaWduIGtleSBjaGVjayBydW5uaW5nIG9uIHRhYmxlICclLS4xOTJzJy4gQ2Fubm90IGRpc2NhcmQgdGhlIHRhYmxlLgBTY2hlbWEgbWlzbWF0Y2ggKCVzKQBUYWJsZSAnJS0uMTkycycgaW4gc3lzdGVtIHRhYmxlc3BhY2UASU8gUmVhZCBlcnJvcjogKCVsdSwgJXMpICVzAElPIFdyaXRlIGVycm9yOiAoJWx1LCAlcykgJXMAVGFibGVzcGFjZSBpcyBtaXNzaW5nIGZvciB0YWJsZSAlcy4AVGFibGVzcGFjZSAnJS0uMTkycycgZXhpc3RzLgBUYWJsZXNwYWNlIGhhcyBiZWVuIGRpc2NhcmRlZCBmb3IgdGFibGUgJyUtLjE5MnMnAEludGVybmFsIGVycm9yOiAlcwBBTFRFUiBUQUJMRSAlLS4xOTJzIElNUE9SVCBUQUJMRVNQQUNFIGZhaWxlZCB3aXRoIGVycm9yICVsdSA6ICclcycASW5kZXggY29ycnVwdDogJXMASW52YWxpZCBkaXNwbGF5IHdpZHRoLiBVc2UgWUVBUiBpbnN0ZWFkLgBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJlcXVpcmVtZW50cwBZb3UgbXVzdCByZXNldCB5b3VyIHBhc3N3b3JkIHVzaW5nIEFMVEVSIFVTRVIgc3RhdGVtZW50IGJlZm9yZSBleGVjdXRpbmcgdGhpcyBzdGF0ZW1lbnQuAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgaW5kZXggZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgZm9yZWlnbiB0YWJsZSAnJXMnAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgaW5kZXggZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyVzJyB0byBzeXN0ZW0gdGFibGVzAEZhaWxlZCB0byBvcGVuIHRoZSByZWZlcmVuY2VkIHRhYmxlICclcycARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0YWJsZSAnJXMnLiBJbmNvcnJlY3Qgb3B0aW9ucyBpbiBGT1JFSUdOIEtFWSBjb25zdHJhaW50ICclcycARHVwbGljYXRlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgbmFtZSAnJXMnAFRoZSBwYXNzd29yZCBoYXNoIGRvZXNuJ3QgaGF2ZSB0aGUgZXhwZWN0ZWQgZm9ybWF0LgBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJwBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBvZiB0YWJsZSAnJS0uMTkycycAQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgTk9UIE5VTEw6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIFNFVCBOVUxMAER1cGxpY2F0ZSBpbmRleCAnJS0uNjRzJyBkZWZpbmVkIG9uIHRoZSB0YWJsZSAnJS0uNjRzLiUtLjY0cycuIFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBkaXNhbGxvd2VkIGluIGEgZnV0dXJlIHJlbGVhc2UuAENhbm5vdCBjaGFuZ2UgY29sdW1uICclLS4xOTJzJzogdXNlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnAENhbm5vdCBjaGFuZ2UgY29sdW1uICclLS4xOTJzJzogdXNlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIG9mIHRhYmxlICclLS4xOTJzJwBDYW5ub3QgZGVsZXRlIHJvd3MgZnJvbSB0YWJsZSB3aGljaCBpcyBwYXJlbnQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBvZiB0YWJsZSAnJS0uMTkycycATWFsZm9ybWVkIGNvbW11bmljYXRpb24gcGFja2V0LgBSdW5uaW5nIGluIHJlYWQtb25seSBtb2RlAFdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCBpcyBzZXQgdG8gYSBHVElELCB5b3UgbXVzdCBleHBsaWNpdGx5IHNldCBpdCB0byBhIGRpZmZlcmVudCB2YWx1ZSBhZnRlciBhIENPTU1JVCBvciBST0xMQkFDSy4gUGxlYXNlIGNoZWNrIEdUSURfTkVYVCB2YXJpYWJsZSBtYW51YWwgcGFnZSBmb3IgZGV0YWlsZWQgZXhwbGFuYXRpb24uIEN1cnJlbnQgQEBTRVNTSU9OLkdUSURfTkVYVCBpcyAnJXMnLgBUaGUgc3lzdGVtIHZhcmlhYmxlICUuMjAwcyBjYW5ub3QgYmUgc2V0IGluIHN0b3JlZCBwcm9jZWR1cmVzLgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW4gb25seSBiZSBzZXQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2FuIG9ubHkgYmUgc2V0IHdoZW4gQEBHTE9CQUwuR1RJRF9FWEVDVVRFRCBpcyBlbXB0eS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2FuIG9ubHkgYmUgc2V0IHdoZW4gdGhlcmUgYXJlIG5vIG9uZ29pbmcgdHJhbnNhY3Rpb25zIChub3QgZXZlbiBpbiBvdGhlciBjbGllbnRzKS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuAEBAR0xPQkFMLkdUSURfRVhFQ1VURUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQsIGFuZCBib3RoIHJlcGxpY2F0ZWQgYW5kIG5vbiByZXBsaWNhdGVkIHRhYmxlcyBhcmUgd3JpdHRlbiB0by4AJXMgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBvcGVyYXRpb24uIFRyeSAlcy4AJXMgaXMgbm90IHN1cHBvcnRlZC4gUmVhc29uOiAlcy4gVHJ5ICVzLgBDT1BZIGFsZ29yaXRobSByZXF1aXJlcyBhIGxvY2sAUGFydGl0aW9uIHNwZWNpZmljIG9wZXJhdGlvbnMgZG8gbm90IHlldCBzdXBwb3J0IExPQ0svQUxHT1JJVEhNAENvbHVtbnMgcGFydGljaXBhdGluZyBpbiBhIGZvcmVpZ24ga2V5IGFyZSByZW5hbWVkAENhbm5vdCBjaGFuZ2UgY29sdW1uIHR5cGUgSU5QTEFDRQBBZGRpbmcgZm9yZWlnbiBrZXlzIG5lZWRzIGZvcmVpZ25fa2V5X2NoZWNrcz1PRkYAQ3JlYXRpbmcgdW5pcXVlIGluZGV4ZXMgd2l0aCBJR05PUkUgcmVxdWlyZXMgQ09QWSBhbGdvcml0aG0gdG8gcmVtb3ZlIGR1cGxpY2F0ZSByb3dzAERyb3BwaW5nIGEgcHJpbWFyeSBrZXkgaXMgbm90IGFsbG93ZWQgd2l0aG91dCBhbHNvIGFkZGluZyBhIG5ldyBwcmltYXJ5IGtleQBBZGRpbmcgYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uIHJlcXVpcmVzIGEgbG9jawBDYW5ub3QgcmVwbGFjZSBoaWRkZW4gRlRTX0RPQ19JRCB3aXRoIGEgdXNlci12aXNpYmxlIG9uZQBDYW5ub3QgZHJvcCBvciByZW5hbWUgRlRTX0RPQ19JRABGdWxsdGV4dCBpbmRleCBjcmVhdGlvbiByZXF1aXJlcyBhIGxvY2sAc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyIGNhbiBub3QgYmUgc2V0IHdoZW4gdGhlIHNlcnZlciBpcyBydW5uaW5nIHdpdGggQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uIEluc3RlYWQsIGZvciBlYWNoIHRyYW5zYWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gc2tpcCwgZ2VuZXJhdGUgYW4gZW1wdHkgdHJhbnNhY3Rpb24gd2l0aCB0aGUgc2FtZSBHVElEIGFzIHRoZSB0cmFuc2FjdGlvbgBMaWtlIHZlcmRpYXIgZm9yIG55a2tlbCAnJS0uMTkycycATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gcGF0aCBsZW5ndGggZXhjZWVkaW5nICVkIGNoYXJhY3RlcnMuIFBhdGg6ICclcycuAGNhbm5vdCBzaWxlbnRseSBjb252ZXJ0IE5VTEwgdmFsdWVzLCBhcyByZXF1aXJlZCBpbiB0aGlzIFNRTF9NT0RFAFlvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFRvIGxvZyBpbiB5b3UgbXVzdCBjaGFuZ2UgaXQgdXNpbmcgYSBjbGllbnQgdGhhdCBzdXBwb3J0cyBleHBpcmVkIHBhc3N3b3Jkcy4ARm91bmQgYSByb3cgaW4gd3JvbmcgcGFydGl0aW9uICVzAENhbm5vdCBzY2hlZHVsZSBldmVudCAlcywgcmVsYXktbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVzIHRvIFdvcmtlciB0aHJlYWQgYmVjYXVzZSBpdHMgc2l6ZSAlbHUgZXhjZWVkcyAlbHUgb2YgcmVwbGljYV9wZW5kaW5nX2pvYnNfc2l6ZV9tYXguAENhbm5vdCBDUkVBVEUgRlVMTFRFWFQgSU5ERVggV0lUSCBQQVJTRVIgb24gSW5ub0RCIHRhYmxlAFRoZSBiaW5hcnkgbG9nIGZpbGUgJyVzJyBpcyBsb2dpY2FsbHkgY29ycnVwdGVkOiAlcwBmaWxlICVzIHdhcyBub3QgcHVyZ2VkIGJlY2F1c2UgaXQgd2FzIGJlaW5nIHJlYWQgYnkgJWQgdGhyZWFkKHMpLCBwdXJnZWQgb25seSAlZCBvdXQgb2YgJWQgZmlsZXMuAGZpbGUgJXMgd2FzIG5vdCBwdXJnZWQgYmVjYXVzZSBpdCBpcyB0aGUgYWN0aXZlIGxvZyBmaWxlLgBBdXRvLWluY3JlbWVudCB2YWx1ZSBpbiBVUERBVEUgY29uZmxpY3RzIHdpdGggaW50ZXJuYWxseSBnZW5lcmF0ZWQgdmFsdWVzAFJvdyBldmVudHMgYXJlIG5vdCBsb2dnZWQgZm9yICVzIHN0YXRlbWVudHMgdGhhdCBtb2RpZnkgQkxBQ0tIT0xFIHRhYmxlcyBpbiByb3cgZm9ybWF0LiBUYWJsZShzKTogJyUtLjE5MnMnAFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGFwcGxpZXIgbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAQWNjZXNzIGRlbmllZCB0cnlpbmcgdG8gY2hhbmdlIHRvIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgKHVzaW5nIHBhc3N3b3JkOiAlcykuIERpc2Nvbm5lY3RpbmcuAElubm9EQiBpcyBpbiByZWFkIG9ubHkgbW9kZS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgU1FMIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgU1FMIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBJTyB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIElPIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBPcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZC4gVGhlIHRhYmxlICclLS42NHMuJS0uNjRzJyBpcyBtaXNzaW5nLCBjb3JydXB0IG9yIGNvbnRhaW5zIGJhZCBkYXRhLgBUZW1wb3JhcnkgZmlsZSB3cml0ZSBmYWlsdXJlLgBVcGdyYWRlIGluZGV4IG5hbWUgZmFpbGVkLCBwbGVhc2UgdXNlIGNyZWF0ZSBpbmRleChhbHRlciB0YWJsZSkgYWxnb3JpdGhtIGNvcHkgdG8gcmVidWlsZCBpbmRleC4AVElNRS9USU1FU1RBTVAvREFURVRJTUUgY29sdW1ucyBvZiBvbGQgZm9ybWF0IGhhdmUgYmVlbiB1cGdyYWRlZCB0byB0aGUgbmV3IGZvcm1hdC4AT3BlcmF0aW9uIG5vdCBhbGxvd2VkIHdoZW4gaW5ub2RiX2ZvcmNlX3JlY292ZXJ5ID4gMC4AVGhlIGluaXRpYWxpemF0aW9uIHZlY3RvciBzdXBwbGllZCB0byAlcyBpcyB0b28gc2hvcnQuIE11c3QgYmUgYXQgbGVhc3QgJWQgYnl0ZXMgbG9uZwBQbHVnaW4gJyVzJyBjYW5ub3QgYmUgdW5pbnN0YWxsZWQgbm93LiAlcwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQgYmVjYXVzZSBpdCBuZWVkcyB0byBiZSB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nIGFzIG11bHRpcGxlIHN0YXRlbWVudHMsIGFuZCB0aGlzIGlzIG5vdCBhbGxvd2VkIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBSZXBsaWNhIGhhcyBtb3JlIEdUSURzIHRoYW4gdGhlIHNvdXJjZSBoYXMsIHVzaW5nIHRoZSBzb3VyY2UncyBTRVJWRVJfVVVJRC4gVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgdGhlIGxhc3QgYmluYXJ5IGxvZyBmaWxlIHdhcyB0cnVuY2F0ZWQgb3IgbG9zdCwgZS5nLiwgYWZ0ZXIgYSBwb3dlciBmYWlsdXJlIHdoZW4gc3luY19iaW5sb2cgIT0gMS4gVGhlIHNvdXJjZSBtYXkgaGF2ZSByb2xsZWQgYmFjayB0cmFuc2FjdGlvbnMgdGhhdCB3ZXJlIGFscmVhZHkgcmVwbGljYXRlZCB0byB0aGUgcmVwbGljYS4gUmVwbGljYXRlIGFueSB0cmFuc2FjdGlvbnMgdGhhdCBzb3VyY2UgaGFzIHJvbGxlZCBiYWNrIGZyb20gcmVwbGljYSB0byBzb3VyY2UsIGFuZC9vciBjb21taXQgZW1wdHkgdHJhbnNhY3Rpb25zIG9uIHNvdXJjZSB0byBhY2NvdW50IGZvciB0cmFuc2FjdGlvbnMgdGhhdCBoYXZlIGJlZW4gY29tbWl0dGVkIG9uIHNvdXJjZSBidXQgYXJlIG5vdCBpbmNsdWRlZCBpbiBHVElEX0VYRUNVVEVELgBUaGUgdGFibGUgJyVzLiVzJyBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3Nhcnkga2V5KHMpIGRlZmluZWQgb24gaXQuIFBsZWFzZSBjaGVjayB0aGUgdGFibGUgZGVmaW5pdGlvbiBhbmQgY3JlYXRlIGluZGV4KHMpIGFjY29yZGluZ2x5LgBTZXR0aW5nIG5hbWVkX3BpcGVfZnVsbF9hY2Nlc3NfZ3JvdXA9JyVzJyBpcyBpbnNlY3VyZS4gQ29uc2lkZXIgdXNpbmcgYSBXaW5kb3dzIGdyb3VwIHdpdGggZmV3ZXIgbWVtYmVycy4ARmlsZSAlcyBpcyBjb3JydXB0ZWQAUXVlcnkgcGFydGlhbGx5IGNvbXBsZXRlZCBvbiB0aGUgc291cmNlIChlcnJvciBvbiBzb3VyY2U6ICVkKSBhbmQgd2FzIGFib3J0ZWQuIFRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgeW91ciBzb3VyY2UgaXMgaW5jb25zaXN0ZW50IGF0IHRoaXMgcG9pbnQuIElmIHlvdSBhcmUgc3VyZSB0aGF0IHlvdXIgc291cmNlIGlzIG9rLCBydW4gdGhpcyBxdWVyeSBtYW51YWxseSBvbiB0aGUgcmVwbGljYSBhbmQgdGhlbiByZXN0YXJ0IHRoZSByZXBsaWNhIHdpdGggU0VUIEdMT0JBTCBTUUxfUkVQTElDQV9TS0lQX0NPVU5URVI9MTsgU1RBUlQgUkVQTElDQTsuIFF1ZXJ5OiclcycAUXVlcnkgY2F1c2VkIGRpZmZlcmVudCBlcnJvcnMgb24gc291cmNlIGFuZCByZXBsaWNhLiBFcnJvciBvbiBzb3VyY2U6IG1lc3NhZ2UgKGZvcm1hdCk9JyVzJyBlcnJvciBjb2RlPSVkOyBFcnJvciBvbiByZXBsaWNhOmFjdHVhbCBtZXNzYWdlPSclcycsIGVycm9yIGNvZGU9JWQuIERlZmF1bHQgZGF0YWJhc2U6JyVzJy4gUXVlcnk6JyVzJwBTdG9yYWdlIGVuZ2luZSBmb3IgdGFibGUgJyVzJy4nJXMnIGlzIG5vdCBsb2FkZWQuAEdFVCBTVEFDS0VEIERJQUdOT1NUSUNTIHdoZW4gaGFuZGxlciBub3QgYWN0aXZlACVzIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFRoZSBzdGF0ZW1lbnQgd2FzIGNvbnZlcnRlZCB0byAlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBmdWxsdGV4dCBwYXJzZXIgcGx1Z2luIHdoaWNoIG1heSBub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIG9uIHRoZSByZXBsaWNhLgBDYW5ub3QgRElTQ0FSRC9JTVBPUlQgdGFibGVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGVtcG9yYXJ5IHRhYmxlAEZvcmVpZ24ga2V5IGNhc2NhZGUgZGVsZXRlL3VwZGF0ZSBleGNlZWRzIG1heCBkZXB0aCBvZiAlZC4AVGhlIGNvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBDcmVhdGVkIHdpdGggTXlTUUwgJWQsIG5vdyBydW5uaW5nICVkLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAFRyaWdnZXIgJXMuJXMuJXMgZG9lcyBub3QgaGF2ZSBDUkVBVEVEIGF0dHJpYnV0ZS4AUmVmZXJlbmNlZCB0cmlnZ2VyICclcycgZm9yIHRoZSBnaXZlbiBhY3Rpb24gdGltZSBhbmQgZXZlbnQgdHlwZSBkb2VzIG5vdCBleGlzdC4ARVhQTEFJTiBGT1IgQ09OTkVDVElPTiBjb21tYW5kIGlzIHN1cHBvcnRlZCBvbmx5IGZvciBTRUxFQ1QvVVBEQVRFL0lOU0VSVC9ERUxFVEUvUkVQTEFDRQBJbnZhbGlkIHNpemUgZm9yIGNvbHVtbiAnJS0uMTkycycuAFRhYmxlIHN0b3JhZ2UgZW5naW5lICclLS42NHMnIGZvdW5kIHJlcXVpcmVkIGNyZWF0ZSBvcHRpb24gbWlzc2luZwBPdXQgb2YgbWVtb3J5IGluIHN0b3JhZ2UgZW5naW5lICclLS42NHMnLgBUaGUgcGFzc3dvcmQgZm9yIGFub255bW91cyB1c2VyIGNhbm5vdCBiZSBleHBpcmVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2Egc3FsIHRocmVhZDsgcnVuIFNUT1AgUkVQTElDQSBTUUxfVEhSRUFEIGZpcnN0AENhbm5vdCBjcmVhdGUgRlVMTFRFWFQgaW5kZXggb24gbWF0ZXJpYWxpemVkIHN1YnF1ZXJ5AFVuZG8gTG9nIGVycm9yOiAlcwBJbnZhbGlkIGFyZ3VtZW50IGZvciBsb2dhcml0aG0AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhIGlvIHRocmVhZDsgcnVuIFNUT1AgUkVQTElDQSBJT19USFJFQUQgRk9SIENIQU5ORUwgJyVzJyBmaXJzdC4AVGhpcyBvcGVyYXRpb24gbWF5IG5vdCBiZSBzYWZlIHdoZW4gdGhlIHJlcGxpY2EgaGFzIHRlbXBvcmFyeSB0YWJsZXMuIFRoZSB0YWJsZXMgd2lsbCBiZSBrZXB0IG9wZW4gdW50aWwgdGhlIHNlcnZlciByZXN0YXJ0cyBvciB1bnRpbCB0aGUgdGFibGVzIGFyZSBkZWxldGVkIGJ5IGFueSByZXBsaWNhdGVkIERST1Agc3RhdGVtZW50LiBTdWdnZXN0IHRvIHdhaXQgdW50aWwgcmVwbGljYV9vcGVuX3RlbXBfdGFibGVzID0gMC4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyB3aXRoIGEgU09VUkNFX0xPR19GSUxFIGNsYXVzZSBidXQgbm8gU09VUkNFX0xPR19QT1MgY2xhdXNlIG1heSBub3QgYmUgc2FmZS4gVGhlIG9sZCBwb3NpdGlvbiB2YWx1ZSBtYXkgbm90IGJlIHZhbGlkIGZvciB0aGUgbmV3IGJpbmFyeSBsb2cgZmlsZS4AUXVlcnkgZXhlY3V0aW9uIHdhcyBpbnRlcnJ1cHRlZCwgbWF4aW11bSBzdGF0ZW1lbnQgZXhlY3V0aW9uIHRpbWUgZXhjZWVkZWQAU2VsZWN0IGlzIG5vdCBhIHJlYWQgb25seSBzdGF0ZW1lbnQsIGRpc2FibGluZyB0aW1lcgBEdXBsaWNhdGUgZW50cnkgJyUtLjE5MnMnLgAnJXMnIG1vZGUgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LiBVc2UgU1RSSUNUX0FMTF9UQUJMRVMgb3IgU1RSSUNUX1RSQU5TX1RBQkxFUyBpbnN0ZWFkLgBFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjb250YWlucyBhZ2dyZWdhdGUgZnVuY3Rpb24gYW5kIGFwcGxpZXMgdG8gYSBVTklPTiwgRVhDRVBUIG9yIElOVEVSU0VDVABFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjb250YWlucyBhZ2dyZWdhdGUgZnVuY3Rpb24gYW5kIGFwcGxpZXMgdG8gdGhlIHJlc3VsdCBvZiBhIG5vbi1hZ2dyZWdhdGVkIHF1ZXJ5AFJlcGxpY2Egd29ya2VyIGhhcyBzdG9wcGVkIGFmdGVyIGF0IGxlYXN0IG9uZSBwcmV2aW91cyB3b3JrZXIgZW5jb3VudGVyZWQgYW4gZXJyb3Igd2hlbiByZXBsaWNhLXByZXNlcnZlLWNvbW1pdC1vcmRlciB3YXMgZW5hYmxlZC4gVG8gcHJlc2VydmUgY29tbWl0IG9yZGVyLCB0aGUgbGFzdCB0cmFuc2FjdGlvbiBleGVjdXRlZCBieSB0aGlzIHRocmVhZCBoYXMgbm90IGJlZW4gY29tbWl0dGVkLiBXaGVuIHJlc3RhcnRpbmcgdGhlIHJlcGxpY2EgYWZ0ZXIgZml4aW5nIGFueSBmYWlsZWQgdGhyZWFkcywgeW91IHNob3VsZCBmaXggdGhpcyB3b3JrZXIgYXMgd2VsbC4AcmVwbGljYV9wcmVzZXJ2ZV9jb21taXRfb3JkZXIgaXMgbm90IHN1cHBvcnRlZCAlcy4AVGhlIHNlcnZlciBpcyBjdXJyZW50bHkgaW4gb2ZmbGluZSBtb2RlAEJpbmFyeSBnZW9tZXRyeSBmdW5jdGlvbiAlcyBnaXZlbiB0d28gZ2VvbWV0cmllcyBvZiBkaWZmZXJlbnQgc3JpZHM6ICV1IGFuZCAldSwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBpZGVudGljYWwuAENhbGxpbmcgZ2VvbWV0cnkgZnVuY3Rpb24gJXMgd2l0aCB1bnN1cHBvcnRlZCB0eXBlcyBvZiBhcmd1bWVudHMuAFVua25vd24gR0lTIGVycm9yIG9jY3VycmVkIGluIGZ1bmN0aW9uICVzLgBVbmtub3duIGV4Y2VwdGlvbiBjYXVnaHQgaW4gR0lTIGZ1bmN0aW9uICVzLgBJbnZhbGlkIEdJUyBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzLgBUaGUgZ2VvbWV0cnkgaGFzIG5vIGRhdGEgaW4gZnVuY3Rpb24gJXMuAFVuYWJsZSB0byBjYWxjdWxhdGUgY2VudHJvaWQgYmVjYXVzZSBnZW9tZXRyeSBpcyBlbXB0eSBpbiBmdW5jdGlvbiAlcy4AR2VvbWV0cnkgb3ZlcmxheSBjYWxjdWxhdGlvbiBlcnJvcjogZ2VvbWV0cnkgZGF0YSBpcyBpbnZhbGlkIGluIGZ1bmN0aW9uICVzLgBHZW9tZXRyeSB0dXJuIGluZm8gY2FsY3VsYXRpb24gZXJyb3I6IGdlb21ldHJ5IGRhdGEgaXMgaW52YWxpZCBpbiBmdW5jdGlvbiAlcy4AQW5hbHlzaXMgcHJvY2VkdXJlcyBvZiBpbnRlcnNlY3Rpb24gcG9pbnRzIGludGVycnVwdGVkIHVuZXhwZWN0ZWRseSBpbiBmdW5jdGlvbiAlcy4AVW5rbm93biBleGNlcHRpb24gdGhyb3duIGluIGZ1bmN0aW9uICVzLgBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ARG9tYWluIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBMZW5ndGggZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAEludmFsaWQgYXJndW1lbnQgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAE91dCBvZiByYW5nZSBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AT3ZlcmZsb3cgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFJhbmdlIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBVbmRlcmZsb3cgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAExvZ2ljIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBSdW50aW1lIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBVbmtub3duIGV4Y2VwdGlvbjogJS0uMzg0cyBpbiBmdW5jdGlvbiAlcy4AR2VvbWV0cnkgYnl0ZSBzdHJpbmcgbXVzdCBiZSBsaXR0bGUgZW5kaWFuLgBUaGUgcGFzc3dvcmQgcHJvdmlkZWQgZm9yIHRoZSByZXBsaWNhdGlvbiB1c2VyIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIDMyIGNoYXJhY3RlcnMASW5jb3JyZWN0IHVzZXItbGV2ZWwgbG9jayBuYW1lICclLS4xOTJzJy4gVGhlIG5hbWUgaXMgZW1wdHksIE5VTEwsIG9yIGNhbiBub3QgYmUgZXhwcmVzc2VkIGluIHRoZSBjdXJyZW50IGNoYXJhY3Rlci1zZXQuAERlYWRsb2NrIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIGdldCB1c2VyLWxldmVsIGxvY2s7IHRyeSByb2xsaW5nIGJhY2sgdHJhbnNhY3Rpb24vcmVsZWFzaW5nIGxvY2tzIGFuZCByZXN0YXJ0aW5nIGxvY2sgYWNxdWlzaXRpb24uAFJFUExBQ0UgY2Fubm90IGJlIGV4ZWN1dGVkIGFzIGl0IHJlcXVpcmVzIGRlbGV0aW5nIHJvd3MgdGhhdCBhcmUgbm90IGluIHRoZSB2aWV3AERvIG5vdCBzdXBwb3J0IG9ubGluZSBvcGVyYXRpb24gb24gdGFibGUgd2l0aCBHSVMgaW5kZXgAVXNlciB2YXJpYWJsZSBuYW1lICclLS4xMDBzJyBpcyBpbGxlZ2FsAENhbm5vdCAlcyB3aGVuIEdUSURfTU9ERSA9IE9GRi4AQ2Fubm90ICVzIGZyb20gYSByZXBsaWNhIHRocmVhZC4ASW5jb3JyZWN0IHR5cGUgZm9yIGFyZ3VtZW50ICVzIGluIGZ1bmN0aW9uICVzLgBFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjbGF1c2UgaXMgbm90IGluIFNFTEVDVCBsaXN0LCByZWZlcmVuY2VzIGNvbHVtbiAnJS0uMTkycycgd2hpY2ggaXMgbm90IGluIFNFTEVDVCBsaXN0OyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoICVzAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNsYXVzZSBpcyBub3QgaW4gU0VMRUNUIGxpc3QsIGNvbnRhaW5zIGFnZ3JlZ2F0ZSBmdW5jdGlvbjsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAlcwBTdXBwbGllZCBmaWx0ZXIgbGlzdCBjb250YWlucyBhIHZhbHVlIHdoaWNoIGlzIG5vdCBpbiB0aGUgcmVxdWlyZWQgZm9ybWF0ICdkYl9wYXR0ZXJuLnRhYmxlX3BhdHRlcm4nAE9LIHBhY2tldCB0b28gbGFyZ2UASW52YWxpZCBKU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6ICVzAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBNaXNzaW5nIHJlcXVpcmVkIG1lbWJlciAnJXMnAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBNZW1iZXIgJyVzJyBtdXN0IGJlIG9mIHR5cGUgJyVzJwBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlcwBVbnN1cHBvcnRlZCBudW1iZXIgb2YgY29vcmRpbmF0ZSBkaW1lbnNpb25zIGluIGZ1bmN0aW9uICVzOiBGb3VuZCAldSwgZXhwZWN0ZWQgJXUAUmVwbGljYSBjaGFubmVsICclcycgZG9lcyBub3QgZXhpc3QuAEEgcmVwbGljYSBjaGFubmVsICclcycgYWxyZWFkeSBleGlzdHMgZm9yIHRoZSBnaXZlbiBob3N0IGFuZCBwb3J0IGNvbWJpbmF0aW9uLgBDb3VsZG4ndCBjcmVhdGUgY2hhbm5lbDogQ2hhbm5lbCBuYW1lIGlzIGVpdGhlciBpbnZhbGlkIG9yIHRvbyBsb25nLgBUbyBoYXZlIG11bHRpcGxlIGNoYW5uZWxzLCByZXBvc2l0b3J5IGNhbm5vdCBiZSBvZiB0eXBlIEZJTEU7IFBsZWFzZSBjaGVjayB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGFuZCBjb252ZXJ0IHRoZW0gdG8gVEFCTEUuAENhbm5vdCBkZWxldGUgcmVwbGljYSBpbmZvIG9iamVjdHMgZm9yIGNoYW5uZWwgJyVzJy4ATXVsdGlwbGUgY2hhbm5lbHMgZXhpc3Qgb24gdGhlIHJlcGxpY2EuIFBsZWFzZSBwcm92aWRlIGNoYW5uZWwgbmFtZSBhcyBhbiBhcmd1bWVudC4ATWF4aW11bSBudW1iZXIgb2YgcmVwbGljYXRpb24gY2hhbm5lbHMgYWxsb3dlZCBleGNlZWRlZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIHJ1bm5pbmcgcmVwbGljYXRpb24gdGhyZWFkczsgcnVuIFNUT1AgUkVQTElDQSBGT1IgQ0hBTk5FTCAnJXMnIGZpcnN0AFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIHJ1bm5pbmcgcmVwbGljYXRpb24gdGhyZWFkczsgY29uZmlndXJlIHJlcGxpY2EgYW5kIHJ1biBTVEFSVCBSRVBMSUNBIEZPUiBDSEFOTkVMICclcycAUmVwbGljYXRpb24gdGhyZWFkKHMpIGZvciBjaGFubmVsICclcycgYXJlIGFscmVhZHkgcnVubm5pbmcuAFJlcGxpY2F0aW9uIHRocmVhZChzKSBmb3IgY2hhbm5lbCAnJXMnIGFyZSBhbHJlYWR5IHN0b3BwZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBhIHJ1bm5pbmcgcmVwbGljYSBzcWwgdGhyZWFkOyBydW4gU1RPUCBSRVBMSUNBIFNRTF9USFJFQUQgRk9SIENIQU5ORUwgJyVzJyBmaXJzdC4AV2hlbiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgPiAwLCBpdCBpcyBub3QgYWxsb3dlZCB0byBzdGFydCBtb3JlIHRoYW4gb25lIFNRTCB0aHJlYWQgYnkgdXNpbmcgJ1NUQVJUIFJFUExJQ0EgW1NRTF9USFJFQURdJy4gVmFsdWUgb2Ygc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyIGNhbiBvbmx5IGJlIHVzZWQgYnkgb25lIFNRTCB0aHJlYWQgYXQgYSB0aW1lLiBQbGVhc2UgdXNlICdTVEFSVCBSRVBMSUNBIFtTUUxfVEhSRUFEXSBGT1IgQ0hBTk5FTCcgdG8gc3RhcnQgdGhlIFNRTCB0aHJlYWQgd2hpY2ggd2lsbCB1c2UgdGhlIHZhbHVlIG9mIHNxbF9yZXBsaWNhX3NraXBfY291bnRlci4ARXhwcmVzc2lvbiAjJXUgb2YgJXMgaXMgbm90IGluIEdST1VQIEJZIGNsYXVzZSBhbmQgY29udGFpbnMgbm9uYWdncmVnYXRlZCBjb2x1bW4gJyUtLjE5MnMnIHdoaWNoIGlzIG5vdCBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uIGNvbHVtbnMgaW4gR1JPVVAgQlkgY2xhdXNlOyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoIHNxbF9tb2RlPW9ubHlfZnVsbF9ncm91cF9ieQBJbiBhZ2dyZWdhdGVkIHF1ZXJ5IHdpdGhvdXQgR1JPVVAgQlksIGV4cHJlc3Npb24gIyV1IG9mICVzIGNvbnRhaW5zIG5vbmFnZ3JlZ2F0ZWQgY29sdW1uICclLS4xOTJzJzsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzcWxfbW9kZT1vbmx5X2Z1bGxfZ3JvdXBfYnkAVXBkYXRpbmcgJyVzJyBpcyBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIG1hZGUgcmVhZC1vbmx5IGluIGEgZnV0dXJlIHJlbGVhc2UuAENoYW5naW5nIHNxbCBtb2RlICclcycgaXMgZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAERST1AgREFUQUJBU0UgZmFpbGVkOyBzb21lIHRhYmxlcyBtYXkgaGF2ZSBiZWVuIGRyb3BwZWQgYnV0IHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgcmVtYWlucy4gVGhlIEdUSUQgaGFzIG5vdCBiZWVuIGFkZGVkIHRvIEdUSURfRVhFQ1VURUQgYW5kIHRoZSBzdGF0ZW1lbnQgd2FzIG5vdCB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nLiBGaXggdGhpcyBhcyBmb2xsb3dzOiAoMSkgcmVtb3ZlIGFsbCBmaWxlcyBmcm9tIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgJS0uMTkyczsgKDIpIFNFVCBHVElEX05FWFQ9JyUtLjE5MnMnOyAoMykgRFJPUCBEQVRBQkFTRSBgJS0uMTkyc2AuAFRoZSBzZXJ2ZXIgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkgdG8gYmUgYW4gYWN0aXZlIG1lbWJlciBvZiB0aGUgZ3JvdXAuIFBsZWFzZSBzZWUgbW9yZSBkZXRhaWxzIG9uIGVycm9yIGxvZy4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBncm91cCBpcyBhbHJlYWR5IHJ1bm5pbmcuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGUgYXBwbGllciBtb2R1bGUgZmFpbGVkIHRvIHN0YXJ0LgBUaGUgU1RPUCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBUaGUgYXBwbGllciB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCB3aGlsZSBpdCB3YXMgYnVzeS4gVGhlIGFwcGxpZXIgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBpbml0aWFsaXppbmcgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gbGF5ZXIuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBqb2luaW5nIHRoZSBjb21tdW5pY2F0aW9uIGdyb3VwLgBUaGUgdGFibGUgZG9lcyBub3QgY29tcGx5IHdpdGggdGhlIHJlcXVpcmVtZW50cyBieSBhbiBleHRlcm5hbCBwbHVnaW4uAENhbm5vdCBjaGFuZ2UgdGhlIHZhbHVlIG9mIHZhcmlhYmxlICVzIHdpdGhvdXQgYmluYXJ5IGxvZyBmb3JtYXQgYXMgUk9XLgBFcnJvciBvbiBvYnNlcnZlciB3aGlsZSBydW5uaW5nIHJlcGxpY2F0aW9uIGhvb2sgJyVzJy4AUGx1Z2luIGluc3RydWN0ZWQgdGhlIHNlcnZlciB0byByb2xsYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBJTlBMQUNFIEFERCBvciBEUk9QIG9mIHZpcnR1YWwgY29sdW1ucyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciBBTFRFUiBUQUJMRSBhY3Rpb25zAENhbm5vdCBkZWZpbmUgZm9yZWlnbiBrZXkgd2l0aCAlcyBjbGF1c2Ugb24gYSBnZW5lcmF0ZWQgY29sdW1uLgBUaGUgdmFsdWUgc3BlY2lmaWVkIGZvciBnZW5lcmF0ZWQgY29sdW1uICclcycgaW4gdGFibGUgJyVzJyBpcyBub3QgYWxsb3dlZC4AJyVzJyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZW5lcmF0ZWQgY29sdW1ucy4AR2VuZXJhdGVkIGNvbHVtbiBjYW4gcmVmZXIgb25seSB0byBnZW5lcmF0ZWQgY29sdW1ucyBkZWZpbmVkIHByaW9yIHRvIGl0LgBDb2x1bW4gJyVzJyBoYXMgYSBnZW5lcmF0ZWQgY29sdW1uIGRlcGVuZGVuY3kuAEdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBUaGUgJyUtLjY0cycgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlOyB5b3UgbmVlZCB0byByZW1vdmUgJyUtLjY0cycgb3IgdXNlIE15U1FMIGJ1aWx0IHdpdGggJyUtLjY0cycAU0VUIEBAR0xPQkFMLkdUSURfTU9ERSA9ICUtLjY0cyBpcyBub3QgYWxsb3dlZCBiZWNhdXNlICUtLjM4NHMuAFRoZSByZXBsaWNhdGlvbiByZWNlaXZlciB0aHJlYWQlLS4xOTJzIGNhbm5vdCBzdGFydCBpbiBBVVRPX1BPU0lUSU9OIG1vZGU6IHRoaXMgc2VydmVyIHVzZXMgQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEFVVE9fUE9TSVRJT04gPSAxLCBhdCBmaWxlICUuNTEycywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTiwgYXQgZmlsZSAlLjUxMnMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgR1RJRC10cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRiwgYXQgZmlsZSAlLjUxMnMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCBzZXQgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZID0gT04gYmVjYXVzZSB0aGVyZSBhcmUgb25nb2luZyB0cmFuc2FjdGlvbnMgdGhhdCB2aW9sYXRlIEdUSUQgY29uc2lzdGVuY3kuAFRoZXJlIGFyZSBvbmdvaW5nIHRyYW5zYWN0aW9ucyB0aGF0IHZpb2xhdGUgR1RJRCBjb25zaXN0ZW5jeS4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBsb2NrZWQuAEluY29ycmVjdCB0YWJsZXNwYWNlIG5hbWUgYCUtLjE5MnNgAFRhYmxlc3BhY2UgYCUtLjE5MnNgIGlzIG5vdCBlbXB0eS4ASW5jb3JyZWN0IEZpbGUgTmFtZSAnJXMnLgBJbmNvbnNpc3RlbnQgaW50ZXJzZWN0aW9uIHBvaW50cy4AT3B0aW1pemVyIGhpbnQgc3ludGF4IGVycm9yAFVuc3VwcG9ydGVkIE1BWF9FWEVDVVRJT05fVElNRQBNQVhfRVhFQ1VUSU9OX1RJTUUgaGludCBpcyBzdXBwb3J0ZWQgYnkgdG9wLWxldmVsIHN0YW5kYWxvbmUgU0VMRUNUIHN0YXRlbWVudHMgb25seQBIaW50ICVzIGlzIGlnbm9yZWQgYXMgY29uZmxpY3RpbmcvZHVwbGljYXRlZABRdWVyeSBibG9jayBuYW1lICVzIGlzIG5vdCBmb3VuZCBmb3IgJXMgaGludABVbnJlc29sdmVkIG5hbWUgJXMgZm9yICVzIGhpbnQAUGxlYXNlIGRvIG5vdCBtb2RpZnkgdGhlICVzIHRhYmxlLiBUaGlzIGlzIGEgbXlzcWwgaW50ZXJuYWwgc3lzdGVtIHRhYmxlIHRvIHN0b3JlIEdUSURzIGZvciBjb21taXR0ZWQgdHJhbnNhY3Rpb25zLiBNb2RpZnlpbmcgaXQgY2FuIGxlYWQgdG8gYW4gaW5jb25zaXN0ZW50IEdUSUQgc3RhdGUuAENvbW1hbmQgbm90IHN1cHBvcnRlZCBieSBwbHVnZ2FibGUgcHJvdG9jb2xzAEluY29ycmVjdCBsb2NraW5nIHNlcnZpY2UgbG9jayBuYW1lICclLS4xOTJzJy4ARGVhZGxvY2sgZm91bmQgd2hlbiB0cnlpbmcgdG8gZ2V0IGxvY2tpbmcgc2VydmljZSBsb2NrOyB0cnkgcmVsZWFzaW5nIGxvY2tzIGFuZCByZXN0YXJ0aW5nIGxvY2sgYWNxdWlzaXRpb24uAFNlcnZpY2UgbG9jayB3YWl0IHRpbWVvdXQgZXhjZWVkZWQuAFBhcmFtZXRlciAlcyBleGNlZWRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2ludHMgaW4gYSBnZW9tZXRyeSAoJWx1KSBpbiBmdW5jdGlvbiAlcy4AJ05PX1pFUk9fREFURScsICdOT19aRVJPX0lOX0RBVEUnIGFuZCAnRVJST1JfRk9SX0RJVklTSU9OX0JZX1pFUk8nIHNxbCBtb2RlcyBzaG91bGQgYmUgdXNlZCB3aXRoIHN0cmljdCBtb2RlLiBUaGV5IHdpbGwgYmUgbWVyZ2VkIHdpdGggc3RyaWN0IG1vZGUgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVmVyc2lvbiB0b2tlbiBtaXNtYXRjaCBmb3IgJS4qcy4gQ29ycmVjdCB2YWx1ZSAlLipzAFZlcnNpb24gdG9rZW4gJS4qcyBub3QgZm91bmQuAFZhcmlhYmxlICUtLjE5MnMgY2Fubm90IGJlIGNoYW5nZWQgYnkgYSBjbGllbnQgdGhhdCBvd25zIGEgR1RJRC4gVGhlIGNsaWVudCBvd25zICVzLiBPd25lcnNoaXAgaXMgcmVsZWFzZWQgb24gQ09NTUlUIG9yIFJPTExCQUNLLgAlLS4xOTJzIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gY2hhbm5lbCAnJS0uMTkycycuAEludmFsaWQgSlNPTiB0ZXh0OiAiJXMiIGF0IHBvc2l0aW9uICV1IGluIHZhbHVlIGZvciBjb2x1bW4gJyUtLjIwMHMnLgBJbnZhbGlkIEpTT04gdGV4dCBpbiBhcmd1bWVudCAldSB0byBmdW5jdGlvbiAlczogIiVzIiBhdCBwb3NpdGlvbiAldS4lLS4wcwBUaGUgSlNPTiBiaW5hcnkgdmFsdWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgBJbnZhbGlkIEpTT04gcGF0aCBleHByZXNzaW9uLiBUaGUgZXJyb3IgaXMgYXJvdW5kIGNoYXJhY3RlciBwb3NpdGlvbiAldS4lLS4yMDBzAENhbm5vdCBjcmVhdGUgYSBKU09OIHZhbHVlIGZyb20gYSBzdHJpbmcgd2l0aCBDSEFSQUNURVIgU0VUICclcycuAEludmFsaWQgSlNPTiBjaGFyYWN0ZXIgZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogJyVzJzsgdXRmOCBpcyByZXF1aXJlZC4ASW52YWxpZCBkYXRhIHR5cGUgZm9yIEpTT04gZGF0YSBpbiBhcmd1bWVudCAldSB0byBmdW5jdGlvbiAlczsgYSBKU09OIHN0cmluZyBvciBKU09OIHR5cGUgaXMgcmVxdWlyZWQuAENhbm5vdCBDQVNUIHZhbHVlIHRvIEpTT04uAEEgcGF0aCBleHByZXNzaW9uIG11c3QgYmUgZW5jb2RlZCBpbiB0aGUgdXRmOCBjaGFyYWN0ZXIgc2V0LiBUaGUgcGF0aCBleHByZXNzaW9uICclLS4yMDBzJyBpcyBlbmNvZGVkIGluIGNoYXJhY3RlciBzZXQgJyUtLjIwMHMnLgBJbiB0aGlzIHNpdHVhdGlvbiwgcGF0aCBleHByZXNzaW9ucyBtYXkgbm90IGNvbnRhaW4gdGhlICogYW5kICoqIHRva2VucyBvciBhbiBhcnJheSByYW5nZS4AVGhlIEpTT04gdmFsdWUgaXMgdG9vIGJpZyB0byBiZSBzdG9yZWQgaW4gYSBKU09OIGNvbHVtbi4AVGhlIEpTT04gb2JqZWN0IGNvbnRhaW5zIGEga2V5IG5hbWUgdGhhdCBpcyB0b28gbG9uZy4ASlNPTiBjb2x1bW4gJyUtLjE5MnMnIHN1cHBvcnRzIGluZGV4aW5nIG9ubHkgdmlhIGdlbmVyYXRlZCBjb2x1bW5zIG9uIGEgc3BlY2lmaWVkIEpTT04gcGF0aC4AVGhlIHBhdGggZXhwcmVzc2lvbiAnJCcgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0LgBUaGUgb25lT3JBbGwgYXJndW1lbnQgdG8gJXMgbWF5IHRha2UgdGhlc2UgdmFsdWVzOiAnb25lJyBvciAnYWxsJy4AT3V0IG9mIHJhbmdlIEpTT04gdmFsdWUgZm9yIENBU1QgdG8gJXMlLS4wcyBmcm9tIGNvbHVtbiAlcyBhdCByb3cgJWxkAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCB0byAlcyUtLjBzIGZyb20gY29sdW1uICVzIGF0IHJvdyAlbGQAVGhlIEpTT04gZG9jdW1lbnQgZXhjZWVkcyB0aGUgbWF4aW11bSBkZXB0aC4ASlNPTiBkb2N1bWVudHMgbWF5IG5vdCBjb250YWluIE5VTEwgbWVtYmVyIG5hbWVzLgBDb25uZWN0aW9ucyB1c2luZyBpbnNlY3VyZSB0cmFuc3BvcnQgYXJlIHByb2hpYml0ZWQgd2hpbGUgLS1yZXF1aXJlX3NlY3VyZV90cmFuc3BvcnQ9T04uAE5vIHNlY3VyZSB0cmFuc3BvcnRzIChTU0wgb3IgU2hhcmVkIE1lbW9yeSkgYXJlIGNvbmZpZ3VyZWQsIHVuYWJsZSB0byBzZXQgLS1yZXF1aXJlX3NlY3VyZV90cmFuc3BvcnQ9T04uAFN0b3JhZ2UgZW5naW5lICVzIGlzIGRpc2FibGVkIChUYWJsZSBjcmVhdGlvbiBpcyBkaXNhbGxvd2VkKS4AQXV0aG9yaXphdGlvbiBJRCAlcyBkb2VzIG5vdCBleGlzdC4AQXV0aG9yaXphdGlvbiBJRCAlcyBhbHJlYWR5IGV4aXN0cy4AQWJvcnRlZCBieSBBdWRpdCBBUEkgKCclLS40OHMnOyVkKS4AQSBwYXRoIGV4cHJlc3Npb24gaXMgbm90IGEgcGF0aCB0byBhIGNlbGwgaW4gYW4gYXJyYXkuAEFub3RoZXIgYnVmZmVyIHBvb2wgcmVzaXplIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuAFRoZSAnJXMnIGZlYXR1cmUgaXMgZGlzYWJsZWQ7IHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJyVzJwBTZXJ2ZXIgaXNuJ3QgYXZhaWxhYmxlAFNlc3Npb24gd2FzIGtpbGxlZABNZW1vcnkgY2FwYWNpdHkgb2YgJWxsdSBieXRlcyBmb3IgJyVzJyBleGNlZWRlZC4gJXMAUmFuZ2Ugb3B0aW1pemF0aW9uIHdhcyBub3QgZG9uZSBmb3IgdGhpcyBxdWVyeS4AUGFydGl0aW9uaW5nIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkdW1wL3JlbG9hZCB0byBmaXggaXQgb3IgZG86IEFMVEVSIFRBQkxFIGAlLS4xOTJzYC5gJS0uMTkyc2AgVVBHUkFERSBQQVJUSVRJT05JTkcAVGhlIGNsaWVudCBob2xkcyBvd25lcnNoaXAgb2YgdGhlIEdUSUQgJXMuIFRoZXJlZm9yZSwgV0FJVF9GT1JfRVhFQ1VURURfR1RJRF9TRVQgY2Fubm90IHdhaXQgZm9yIHRoaXMgR1RJRC4AQ2Fubm90IGFkZCBmb3JlaWduIGtleSBvbiB0aGUgYmFzZSBjb2x1bW4gb2YgaW5kZXhlZCB2aXJ0dWFsIGNvbHVtbi4AQ2Fubm90IGNyZWF0ZSBpbmRleCBvbiB2aXJ0dWFsIGNvbHVtbiB3aG9zZSBiYXNlIGNvbHVtbiBoYXMgZm9yZWlnbiBjb25zdHJhaW50LgBQbGVhc2UgZG8gbm90IG1vZGlmeSB0aGUgJXMgdGFibGUgd2l0aCBhbiBYQSB0cmFuc2FjdGlvbi4gVGhpcyBpcyBhbiBpbnRlcm5hbCBzeXN0ZW0gdGFibGUgdXNlZCB0byBzdG9yZSBHVElEcyBmb3IgY29tbWl0dGVkIHRyYW5zYWN0aW9ucy4gQWx0aG91Z2ggbW9kaWZ5aW5nIGl0IGNhbiBsZWFkIHRvIGFuIGluY29uc2lzdGVudCBHVElEIHN0YXRlLCBpZiBuZWNlc3NhcnkgeW91IGNhbiBtb2RpZnkgaXQgd2l0aCBhIG5vbi1YQSB0cmFuc2FjdGlvbi4ATG9jayBhY3F1aXNpdGlvbiByZWZ1c2VkIGJ5IHN0b3JhZ2UgZW5naW5lLgBBREQgQ09MVU1OIGNvbC4uLlZJUlRVQUwsIEFERCBJTkRFWChjb2wpAE1hc3RlciBrZXkgcm90YXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSBzdG9yYWdlIGVuZ2luZS4ARW5jcnlwdGlvbiBrZXkgcm90YXRpb24gZXJyb3IgcmVwb3J0ZWQgYnkgU0U6ICVzAFdyaXRlIHRvIGJpbmxvZyBmYWlsZWQuIEhvd2V2ZXIsIG1hc3RlciBrZXkgcm90YXRpb24gaGFzIGJlZW4gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4AU3RvcmFnZSBlbmdpbmUgaXMgbm90IGF2YWlsYWJsZS4AVGhpcyB0YWJsZXNwYWNlIGNhbid0IGJlIGVuY3J5cHRlZC4ASW52YWxpZCBlbmNyeXB0aW9uIG9wdGlvbi4AQ2FuJ3QgZmluZCBtYXN0ZXIga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4AUGFyc2VyIGJhaWxlZCBvdXQgZm9yIHRoaXMgcXVlcnkuAENhbm5vdCBhbHRlciBlbmNyeXB0aW9uIGF0dHJpYnV0ZSBieSBpbnBsYWNlIGFsZ29yaXRobS4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSB1bmRlcmx5aW5nIGtleXJpbmcgc2VydmljZSByZXR1cm5lZCBhbiBlcnJvci4gUGxlYXNlIGNoZWNrIGlmIGEga2V5cmluZyBpcyBpbnN0YWxsZWQgYW5kIHRoYXQgcHJvdmlkZWQgYXJndW1lbnRzIGFyZSB2YWxpZCBmb3IgdGhlIGtleXJpbmcgeW91IGFyZSB1c2luZy4ASXQgc2VlbXMgdGhhdCB5b3VyIGRiIHNjaGVtYSBpcyBvbGQuIFRoZSAlcyBjb2x1bW4gaXMgNzcgY2hhcmFjdGVycyBsb25nIGFuZCBzaG91bGQgYmUgOTMgY2hhcmFjdGVycyBsb25nLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAFJFU0VUIFNPVVJDRSBpcyBub3QgYWxsb3dlZCBiZWNhdXNlICUtLjM4NHMuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgZ3JvdXAgYWxyZWFkeSBoYXMgOSBtZW1iZXJzLgBDYW5ub3QgYWRkIGZvcmVpZ24ga2V5IG9uIHRoZSBiYXNlIGNvbHVtbiBvZiBzdG9yZWQgY29sdW1uLiAAQ2Fubm90IGNvbXBsZXRlIHRoZSBvcGVyYXRpb24gYmVjYXVzZSB0YWJsZSBpcyByZWZlcmVuY2VkIGJ5IGFub3RoZXIgY29ubmVjdGlvbi4AVGhlIHBhcnRpdGlvbiBlbmdpbmUsIHVzZWQgYnkgdGFibGUgJyUtLjE5MnMuJS0uMTkycycsIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlIG5hdGl2ZSBwYXJ0aXRpb25pbmcgaW5zdGVhZC4AJS4xOTJzKGdlb21ldHJ5KSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHN0X3NyaWQoZ2VvbWV0cnksIDApIGluIGEgZnV0dXJlIHZlcnNpb24uIFVzZSAlLjE5MnMoc3RfYXN3a2IoZ2VvbWV0cnkpLCAwKSBpbnN0ZWFkLgAlLjE5MnMoZ2VvbWV0cnksIHNyaWQpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVwbGFjZWQgYnkgc3Rfc3JpZChnZW9tZXRyeSwgc3JpZCkgaW4gYSBmdXR1cmUgdmVyc2lvbi4gVXNlICUuMTkycyhzdF9hc3drYihnZW9tZXRyeSksIHNyaWQpIGluc3RlYWQuAFRoZSByZXNvdXJjZSBtYW5hZ2VyIGlzIG5vdCBhYmxlIHRvIGNvbW1pdCB0aGUgdHJhbnNhY3Rpb24gYnJhbmNoIGF0IHRoaXMgdGltZS4gUGxlYXNlIHJldHJ5IGxhdGVyLgBGdW5jdGlvbiAlcyBmYWlsZWQgZHVlIHRvOiAlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGlzIGJlaW5nIHVzZWQgaW5zaWRlIGEgWEEgdHJhbnNhY3Rpb24uIENvbmN1cnJlbnQgWEEgdHJhbnNhY3Rpb25zIG1heSBkZWFkbG9jayBvbiByZXBsaWNhcyB3aGVuIHJlcGxpY2F0ZWQgdXNpbmcgc3RhdGVtZW50cy4AJXMgVURGIGZhaWxlZDsgJXMAQ2FuIG5vdCBwZXJmb3JtIGtleXJpbmcgbWlncmF0aW9uIDogJXMAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgJS0uMTI4cyBwcml2aWxlZ2VzIGZvciB0aGlzIG9wZXJhdGlvbgBLZXlyaW5nIG1pZ3JhdGlvbiAlcy4ARmFpbGVkIHRvIG9wZW4gdGhlICVzIGZpbHRlciB0YWJsZXMuAEZhaWxlZCB0byBvcGVuICclcy4lcycgJXMgdGFibGUuAE5vIGtleXJpbmcgcGx1Z2luIGluc3RhbGxlZC4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgaGFzIG5vdCBiZWVuIHNldDsgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4gVXNlIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX2dldCB0byBvYnRhaW4gdGhlIHBhc3N3b3JkIG9yIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX3NldCB0byBzZXQgYSBuZXcgb25lLgBDb3VsZCBub3QgY3JlYXRlIEFFUyBrZXkuIE9wZW5TU0wncyBFVlBfQnl0ZXNUb0tleSBmdW5jdGlvbiBmYWlsZWQuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGNhbm5vdCBiZSBmZXRjaGVkIGZyb20gdGhlIGtleXJpbmcuIFBhc3N3b3JkIHVzZWQgc28gZmFyIGlzIHVzZWQgZm9yIGVuY3J5cHRpb24uAEF1ZGl0IExvZyBmaWx0ZXJpbmcgaGFzIG5vdCBiZWVuIGluc3RhbGxlZC4AUmVxdWVzdCBpZ25vcmVkIGZvciAnJXMnQCclcycuIFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbgBTVVBFUiBwcml2aWxlZ2Ugb3IgQVVESVRfQURNSU4gcm9sZSByZXF1aXJlZCBmb3IgJyVzJ0AnJXMnIHVzZXIuAENvdWxkIG5vdCByZWluaXRpYWxpemUgYXVkaXQgbG9nIGZpbHRlcnMuAEludmFsaWQgYXJndW1lbnQgdHlwZQBJbnZhbGlkIGFyZ3VtZW50IGNvdW50AGF1ZGl0X2xvZyBwbHVnaW4gaGFzIG5vdCBiZWVuIGluc3RhbGxlZCB1c2luZyBJTlNUQUxMIFBMVUdJTiBzeW50YXguAEludmFsaWQgIm1heF9hcnJheV9sZW5ndGgiIGFyZ3VtZW50IHR5cGUuAEludmFsaWQgIm1heF9hcnJheV9sZW5ndGgiIGFyZ3VtZW50IHZhbHVlLgAlcwBGaWx0ZXIgbmFtZSBjYW5ub3QgYmUgZW1wdHkuAFVzZXIgY2Fubm90IGJlIGVtcHR5LgBTcGVjaWZpZWQgZmlsdGVyIGhhcyBub3QgYmVlbiBmb3VuZC4ARmlyc3QgY2hhcmFjdGVyIG9mIHRoZSB1c2VyIG5hbWUgbXVzdCBiZSBhbHBoYW51bWVyaWMuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSB1c2VyIG5hbWUuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSBob3N0IG5hbWUuAFdpdGggdGhlIE1BWERCIFNRTCBtb2RlIGVuYWJsZWQsIFRJTUVTVEFNUCBpcyBpZGVudGljYWwgd2l0aCBEQVRFVElNRS4gVGhlIE1BWERCIFNRTCBtb2RlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgZGlzYWJsZSB0aGUgTUFYREIgU1FMIG1vZGUgYW5kIHVzZSBEQVRFVElNRSBpbnN0ZWFkLgBUaGUgdXNlIG9mIHJlcGxpY2F0aW9uIGZpbHRlcnMgd2l0aCBYQSB0cmFuc2FjdGlvbnMgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGNhbiBsZWFkIHRvIGFuIHVuZGVmaW5lZCBzdGF0ZSBpbiB0aGUgcmVwbGljYS4AQ291bGQgbm90IG9wZW4gZmlsZSAnJXMnIGZvciBlcnJvciBsb2dnaW5nJXMlcwBHcm91cGluZyBvbiB0ZW1wb3JhbCBpcyBub24tZGV0ZXJtaW5pc3RpYyBmb3IgdGltZXpvbmVzIGhhdmluZyBEU1QuIFBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgdG8gVVRDIGZvciB0aGlzIHF1ZXJ5LgBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBOYW1lZCBQaXBlICIlcyIgYWxyZWFkeSBpbiB1c2UuAFRoZSBzaXplIG9mIHdyaXRlc2V0IGRhdGEgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGV4Y2VlZHMgYSBsaW1pdCBpbXBvc2VkIGJ5IGFuIGV4dGVybmFsIGNvbXBvbmVudC4gSWYgdXNpbmcgR3JvdXAgUmVwbGljYXRpb24gY2hlY2sgJ2dyb3VwX3JlcGxpY2F0aW9uX3RyYW5zYWN0aW9uX3NpemVfbGltaXQnLgBBY2NlcHRlZCBhIGNvbm5lY3Rpb24gd2l0aCBkZXByZWNhdGVkIHByb3RvY29sICclcycgZm9yIGFjY291bnQgYCVzYEBgJXNgIGZyb20gaG9zdCBgJXNgLiBDbGllbnQgc3VwcGxpZWQgdXNlcm5hbWUgYCVzYABBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZC4gUGxlYXNlIHVzZSBUTFN2MS4yIG9yIGhpZ2hlci4AT3B0aW9uYWwgbmF0aXZlIHRhYmxlICclLS42NHMnLiclLS42NHMnIGhhcyB0aGUgd3Jvbmcgc3RydWN0dXJlIG9yIGlzIG1pc3NpbmcuAEtERiBtZXRob2QgbmFtZSBpcyBub3QgdmFsaWQuIFBsZWFzZSB1c2UgaGtkZiBvciBwYmtkZjJfaG1hYyBtZXRob2QgbmFtZQBGb3IgS0RGIG1ldGhvZCBwYmtkZjJfaG1hYyBpdGVyYXRpb25zIHZhbHVlIGxlc3MgdGhhbiAxMDAwIG9yIG1vcmUgdGhhbiA2NTUzNSBpcyBub3QgYWxsb3dlZCBkdWUgdG8gc2VjdXJpdHkgcmVhc29ucy4gUGxlYXNlIHByb3ZpZGUgaXRlcmF0aW9ucyA+PSAxMDAwIGFuZCBpdGVyYXRpb25zIDwgNjU1MzUAQUVTIGtleSBzaXplIHNob3VsZCBiZSAlZCBieXRlcyBsZW5ndGggb3Igc2VjdXJlIEtERiBtZXRob2RzIGhrZGYgb3IgcGJrZGYyX2htYWMgc2hvdWxkIGJlIHVzZWQsIHBsZWFzZSBwcm92aWRlIGV4YWN0IEFFUyBrZXkgc2l6ZSBvciB1c2UgS0RGIG1ldGhvZHMgZm9yIGJldHRlciBzZWN1cml0eS4AS0RGIG9wdGlvbiBzaXplIGlzIGludmFsaWQsIHBsZWFzZSBwcm92aWRlIHZhbGlkIHNpemUgPCAlZCBieXRlcyBhbmQgbm90IE5VTEwAQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBpcyBub3QgYWxsb3dlZCB3aXRoIFJPV19GT1JNQVQ9Q09NUFJFU1NFRCBvciBLRVlfQkxPQ0tfU0laRS4AVGhlIEFDTCBvcGVyYXRpb24gZmFpbGVkIGR1ZSB0byB0aGUgZm9sbG93aW5nIGVycm9yIGZyb20gU0U6IGVycmNvZGUgJWQgLSAlLjI1NnMAVGhpcyBzdG9yYWdlIGVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IHRoZSAlcyBpbmRleCBhbGdvcml0aG0sIHN0b3JhZ2UgZW5naW5lIGRlZmF1bHQgd2FzIHVzZWQgaW5zdGVhZC4ARGF0YWJhc2UgJyUtLjE5MnMnIGRvZXNuJ3QgZXhpc3QAVG9vIG1hbnkgZW51bWVyYXRpb24gdmFsdWVzIGZvciBjb2x1bW4gJS4xOTJzLgBUb28gbG9uZyBlbnVtZXJhdGlvbi9zZXQgdmFsdWUgZm9yIGNvbHVtbiAlLjE5MnMuACVzIGRpY3Rpb25hcnkgb2JqZWN0IGlzIGludmFsaWQuICglLjE5MnMpAEZhaWxlZCB0byB1cGRhdGUgJS4xOTJzIGRpY3Rpb25hcnkgb2JqZWN0LgBEaWN0aW9uYXJ5IG9iamVjdCBpZCAoJWx1KSBkb2VzIG5vdCBleGlzdC4ARGljdGlvbmFyeSBvYmplY3QgbmFtZSAnJXMnIGlzIGludmFsaWQuICglLjE5MnMpAFRhYmxlc3BhY2UgJS0uMTkycyBkb2Vzbid0IGV4aXN0LgBDb21tZW50IGZvciByb3V0aW5lICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAEZhaWxlZCB0byBsb2FkIHJvdXRpbmUgJyUtLjY0cycuAEJpbmFyeSBvcGVyYW5kcyBvZiBiaXR3aXNlIG9wZXJhdG9ycyBtdXN0IGJlIG9mIGVxdWFsIGxlbmd0aABBZ2dyZWdhdGUgYml0d2lzZSBmdW5jdGlvbnMgY2Fubm90IGFjY2VwdCBhcmd1bWVudHMgbG9uZ2VyIHRoYW4gNTExIGJ5dGVzOyBjb25zaWRlciB1c2luZyB0aGUgU1VCU1RSSU5HKCkgZnVuY3Rpb24ASGludHMgYXJlbid0IHN1cHBvcnRlZCBpbiAlcwAlLjY0cyB2YWx1ZSBpcyBhIGdlb21ldHJ5IG9mIHVuZXhwZWN0ZWQgdHlwZSAlLjY0cyBpbiAlLjY0cy4AQ2FuJ3QgcGFyc2UgdGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIG9mIFNSSUQgJXUuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgU1JJRCAldSBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBtYW5kYXRvcnkgJXMgKEVQU0cgJXUpIHByb2plY3Rpb24gcGFyYW1ldGVyLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAEZ1bmN0aW9uICVzIGlzIG9ubHkgZGVmaW5lZCBmb3IgQ2FydGVzaWFuIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMsIGJ1dCBvbmUgb2YgaXRzIGFyZ3VtZW50cyBpcyBpbiBTUklEICV1LCB3aGljaCBpcyBub3QgQ2FydGVzaWFuLgBGdW5jdGlvbiAlcyBpcyBvbmx5IGRlZmluZWQgZm9yIENhcnRlc2lhbiBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLCBidXQgb25lIG9mIGl0cyBhcmd1bWVudHMgaXMgaW4gU1JJRCAldSwgd2hpY2ggaGFzIG5vdCBiZWVuIGRlZmluZWQuAEEgcHJpbWFyeSBrZXkgaW5kZXggY2Fubm90IGJlIGludmlzaWJsZQBVbmtub3duIGF1dGhvcml6YXRpb24gSUQgYCUuNjRzYEBgJS42NHNgAEZhaWxlZCB0byBncmFudCAlLjkwc2AgdG8gJS45MHMARmFpbGVkIHRvIG9wZW4gdGhlIHNlY3VyaXR5IHN5c3RlbSB0YWJsZXMARmFpbGVkIHRvIHNldCBkZWZhdWx0IHJvbGVzAENhbm5vdCBmaW5kIHNjaGVtYSBpbiBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AQ2Fubm90IGFjcXVpcmUgc2NoZW1lIGxvYWQgc2VydmljZSBpbXBsZW1lbnRhdGlvbiBmb3Igc2NoZW1hICclLjE5MnMnIGluIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBDYW5ub3QgbG9hZCBjb21wb25lbnQgZnJvbSBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AYCUuNjRzYEBgJS42NHNgIGlzIG5vdCBncmFudGVkIHRvIGAlLjY0c2BAYCUuNjRzYABDb3VsZCBub3QgcmV2b2tlIHJvbGUgZnJvbSBgJS42NHNgQGAlLjY0c2AAUmVuYW1pbmcgb2YgYSByb2xlIGlkZW50aWZpZXIgaXMgZm9yYmlkZGVuAENhbm5vdCBhY3F1aXJlIHNwZWNpZmllZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uOiAnJS4xOTJzJy4AQ2Fubm90IHNhdGlzZnkgZGVwZW5kZW5jeSBmb3Igc2VydmljZSAnJS4xOTJzJyByZXF1aXJlZCBieSBjb21wb25lbnQgJyUuMTkycycuAENhbm5vdCByZWdpc3RlciBzZXJ2aWNlIGltcGxlbWVudGF0aW9uICclLjE5MnMnIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJy4ASW5pdGlhbGl6YXRpb24gbWV0aG9kIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJyBmYWlsZWQuAENvbXBvbmVudCBzcGVjaWZpZWQgYnkgVVJOICclLjE5MnMnIHRvIHVubG9hZCBoYXMgbm90IGJlZW4gbG9hZGVkIGJlZm9yZS4ARGUtaW5pdGlhbGl6YXRpb24gbWV0aG9kIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJyBmYWlsZWQuAFJlbGVhc2Ugb2YgcHJldmlvdXNseSBhY3F1aXJlZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZhaWxlZC4AVW5yZWdpc3RyYXRpb24gb2Ygc2VydmljZSBpbXBsZW1lbnRhdGlvbiAnJS4xOTJzJyBwcm92aWRlZCBieSBjb21wb25lbnQgJyUuMTkycycgZmFpbGVkIGR1cmluZyB1bmxvYWRpbmcgb2YgdGhlIGNvbXBvbmVudC4AQ2Fubm90IHVubG9hZCBjb21wb25lbnQgZnJvbSBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJy4AVGhlIFBlcnNpc3RlbnQgRHluYW1pYyBMb2FkZXIgd2FzIHVzZWQgdG8gdW5sb2FkIGEgY29tcG9uZW50ICclLjE5MnMnLCBidXQgaXQgd2FzIG5vdCB1c2VkIHRvIGxvYWQgdGhhdCBjb21wb25lbnQgYmVmb3JlLgBUaGUgbXlzcWwuY29tcG9uZW50IHRhYmxlIGlzIG1pc3Npbmcgb3IgaGFzIGFuIGluY29ycmVjdCBkZWZpbml0aW9uLgBGYWlsZWQgdG8gbWFuaXB1bGF0ZSBjb21wb25lbnQgJyUuMTkycycgcGVyc2lzdGVuY2UgZGF0YS4gRXJyb3IgY29kZSAlZCBmcm9tIHN0b3JhZ2UgZW5naW5lLgBUaGUgY29tcG9uZW50IHdpdGggc3BlY2lmaWVkIFVSTjogJyUuMTkycycgd2FzIHNwZWNpZmllZCBpbiBncm91cCBtb3JlIHRoYW4gb25jZS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2Fubm90IGJlIGNoYW5nZWQ6ICVzAENhbiBub3QgbG9jayB1c2VyIG1hbmFnZW1lbnQgY2FjaGVzIGZvciBwcm9jZXNzaW5nLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAFZhcmlhYmxlcyBjYW5ub3QgYmUgcGVyc2lzdGVkLiBQbGVhc2UgcmV0cnkuAEluZm9ybWF0aW9uIHNjaGVtYSBxdWVyaWVzIGRvIG5vdCBzdXBwb3J0IHRoZSAnJXMnIGNsYXVzZS4AVW5hYmxlIHRvIHN0b3JlIGR5bmFtaWMgJXMgc3RhdGlzdGljcyBpbnRvIGRhdGEgZGljdGlvbmFyeS4AQWNjZXNzIHRvIHN5c3RlbSBzY2hlbWEgJyUuNjRzJyBpcyByZWplY3RlZC4AQWNjZXNzIHRvIHN5c3RlbSB0YWJsZXNwYWNlICclLjY0cycgaXMgcmVqZWN0ZWQuAEFjY2VzcyB0byAlLjY0cyAnJS42NHMuJS42NHMnIGlzIHJlamVjdGVkLgBkYXRhIGRpY3Rpb25hcnkgdGFibGUAc3lzdGVtIHRhYmxlAHRhYmxlAEludmFsaWQgb3B0aW9uIGtleSAnJS4xOTJzJyBpbiBmdW5jdGlvbiAlLjE5MnMuAEludmFsaWQgdmFsdWUgJyUuMTkycycgZm9yIG9wdGlvbiAnJS4xOTJzJyBpbiBmdW5jdGlvbiAnJS4xOTJzJy4AVGhlIHN0cmluZyAnJS4xOTJzJyBpcyBub3QgYSB2YWxpZCBrZXkgJWMgdmFsdWUgcGFpciBpbiBmdW5jdGlvbiAlLjE5MnMuAFRoZSBvcHRpb25zIGFyZ3VtZW50IGluIGZ1bmN0aW9uICUuMTkycyBzdGFydHMgd2l0aCB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgJyVjJy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIGVuZHMgd2l0aCB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgJyVjJy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIGNvbnRhaW5zIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBzZXF1ZW5jZSAnJS4xOTJzJy4ARHVwbGljYXRlIG9wdGlvbiBrZXkgJyUuMTkycycgaW4gZnVudGlvbiAnJS4xOTJzJy4AVGhlcmUncyBubyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LiBUaGUgYXhpcyBvcmRlciBpcyB1bmtub3duLgBBY2Nlc3MgdG8gbmF0aXZlIGZ1bmN0aW9uICclLjY0cycgaXMgcmVqZWN0ZWQuAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJyVsbHUnIGZvciB0aGUgbmV4dCBiaW5hcnkgbG9nIGluZGV4IGlzIG91dCBvZiByYW5nZS4gUGxlYXNlIHVzZSBhIHZhbHVlIGJldHdlZW4gJzEnIGFuZCAnJWx1Jy4AVW5yZXNvbHZlZCB0YWJsZSBuYW1lICVzIGluIGxvY2tpbmcgY2xhdXNlLgBUYWJsZSAlcyBhcHBlYXJzIGluIG11bHRpcGxlIGxvY2tpbmcgY2xhdXNlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgU0tJUCBMT0NLRUQuIFRoZSBzZXQgb2YgaW5zZXJ0ZWQgdmFsdWVzIGlzIG5vbi1kZXRlcm1pbmlzdGljLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBOT1dBSVQuIFdoZXRoZXIgdGhlIGNvbW1hbmQgd2lsbCBzdWNjZWVkIG9yIGZhaWwgaXMgbm90IGRldGVybWluaXN0aWMuAFN0YXRlbWVudCBhYm9ydGVkIGJlY2F1c2UgbG9jayhzKSBjb3VsZCBub3QgYmUgYWNxdWlyZWQgaW1tZWRpYXRlbHkgYW5kIE5PV0FJVCBpcyBzZXQuAFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnIHNob3VsZCBjb250YWluIGEgVU5JT04AUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgc2hvdWxkIGhhdmUgb25lIG9yIG1vcmUgbm9uLXJlY3Vyc2l2ZSBxdWVyeSBibG9ja3MgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcmVjdXJzaXZlIG9uZXMAUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgY2FuIGNvbnRhaW4gbmVpdGhlciBhZ2dyZWdhdGlvbiBub3Igd2luZG93IGZ1bmN0aW9ucyBpbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sASW4gcmVjdXJzaXZlIHF1ZXJ5IGJsb2NrIG9mIFJlY3Vyc2l2ZSBDb21tb24gVGFibGUgRXhwcmVzc2lvbiAnJXMnLCB0aGUgcmVjdXJzaXZlIHRhYmxlIG11c3QgbmVpdGhlciBiZSBpbiB0aGUgcmlnaHQgYXJndW1lbnQgb2YgYSBMRUZUIEpPSU4sIG5vciBiZSBmb3JjZWQgdG8gYmUgbm9uLWZpcnN0IHdpdGggam9pbiBvcmRlciBoaW50cwBJbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sgb2YgUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycsIHRoZSByZWN1cnNpdmUgdGFibGUgbXVzdCBiZSByZWZlcmVuY2VkIG9ubHkgb25jZSwgYW5kIG5vdCBpbiBhbnkgc3VicXVlcnkAJyVzJyByZXF1aXJlcyBAQGludGVybmFsX3RtcF9kaXNrX3N0b3JhZ2VfZW5naW5lPUlubm9EQgBXaW5kb3cgbmFtZSAnJXMnIGlzIG5vdCBkZWZpbmVkLgBUaGVyZSBpcyBhIGNpcmN1bGFyaXR5IGluIHRoZSB3aW5kb3cgZGVwZW5kZW5jeSBncmFwaC4AQSB3aW5kb3cgd2hpY2ggZGVwZW5kcyBvbiBhbm90aGVyIGNhbm5vdCBkZWZpbmUgcGFydGl0aW9uaW5nLgBXaW5kb3cgJyVzJyBoYXMgYSBmcmFtZSBkZWZpbml0aW9uLCBzbyBjYW5ub3QgYmUgcmVmZXJlbmNlZCBieSBhbm90aGVyIHdpbmRvdy4AV2luZG93ICclcycgY2Fubm90IGluaGVyaXQgJyVzJyBzaW5jZSBib3RoIGNvbnRhaW4gYW4gT1JERVIgQlkgY2xhdXNlLgBXaW5kb3cgJyVzJzogZnJhbWUgc3RhcnQgY2Fubm90IGJlIFVOQk9VTkRFRCBGT0xMT1dJTkcuAFdpbmRvdyAnJXMnOiBmcmFtZSBlbmQgY2Fubm90IGJlIFVOQk9VTkRFRCBQUkVDRURJTkcuAFdpbmRvdyAnJXMnOiBmcmFtZSBzdGFydCBvciBlbmQgaXMgbmVnYXRpdmUsIE5VTEwgb3Igb2Ygbm9uLWludGVncmFsIHR5cGUAV2luZG93ICclcycgd2l0aCBSQU5HRSBOIFBSRUNFRElORy9GT0xMT1dJTkcgZnJhbWUgcmVxdWlyZXMgZXhhY3RseSBvbmUgT1JERVIgQlkgZXhwcmVzc2lvbiwgb2YgbnVtZXJpYyBvciB0ZW1wb3JhbCB0eXBlAFdpbmRvdyAnJXMnIHdpdGggUkFOR0UgZnJhbWUgaGFzIE9SREVSIEJZIGV4cHJlc3Npb24gb2YgZGF0ZXRpbWUgdHlwZS4gT25seSBJTlRFUlZBTCBib3VuZCB2YWx1ZSBhbGxvd2VkLgBXaW5kb3cgJyVzJyB3aXRoIFJBTkdFIGZyYW1lIGhhcyBPUkRFUiBCWSBleHByZXNzaW9uIG9mIG51bWVyaWMgdHlwZSwgSU5URVJWQUwgYm91bmQgdmFsdWUgbm90IGFsbG93ZWQuAFdpbmRvdyAnJXMnIGhhcyBhIG5vbi1jb25zdGFudCBmcmFtZSBib3VuZC4AV2luZG93ICclcycgaXMgZGVmaW5lZCB0d2ljZS4AV2luZG93ICclcyc6IE9SREVSIEJZIG9yIFBBUlRJVElPTiBCWSB1c2VzIGxlZ2FjeSBwb3NpdGlvbiBpbmRpY2F0aW9uIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQsIHVzZSBleHByZXNzaW9uLgBZb3UgY2Fubm90IHVzZSB0aGUgd2luZG93IGZ1bmN0aW9uICclcycgaW4gdGhpcyBjb250ZXh0LicAWW91IGNhbm5vdCB1c2UgdGhlIGFsaWFzICclcycgb2YgYW4gZXhwcmVzc2lvbiBjb250YWluaW5nIGEgd2luZG93IGZ1bmN0aW9uIGluIHRoaXMgY29udGV4dC4nAFlvdSBjYW5ub3QgbmVzdCBhIHdpbmRvdyBmdW5jdGlvbiBpbiB0aGUgc3BlY2lmaWNhdGlvbiBvZiB3aW5kb3cgJyVzJy4AV2luZG93ICclcyc6IElOVEVSVkFMIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBSQU5HRSBmcmFtZXMuAEFTQyBvciBERVNDIHdpdGggR1JPVVAgQlkgaXNuJ3QgYWxsb3dlZCB3aXRoIHdpbmRvdyBmdW5jdGlvbnM7IHB1dCBBU0Mgb3IgREVTQyBpbiBPUkRFUiBCWQBUbyBnZXQgaW5mb3JtYXRpb24gYWJvdXQgd2luZG93IGZ1bmN0aW9ucyB1c2UgRVhQTEFJTiBGT1JNQVQ9SlNPTgBXaW5kb3cgZnVuY3Rpb24gJyVzJyBpZ25vcmVzIHRoZSBmcmFtZSBjbGF1c2Ugb2Ygd2luZG93ICclcycgYW5kIGFnZ3JlZ2F0ZXMgb3ZlciB0aGUgd2hvbGUgcGFydGl0aW9uAFdpbmRvd2luZyByZXF1aXJlcyBAQGludGVybmFsX3RtcF9tZW1fc3RvcmFnZV9lbmdpbmU9VGVtcFRhYmxlLgBUb28gbWFueSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9uICVzOiAlbHU7IG1heGltdW0gYWxsb3dlZCBpcyAlcy4AQXJndW1lbnQgIyV1IG9mIEdST1VQSU5HIGZ1bmN0aW9uIGlzIG5vdCBpbiBHUk9VUCBCWQBDb21tZW50IGZvciB0YWJsZXNwYWNlICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAFN0b3JhZ2UgZW5naW5lIGNhbid0IGRyb3AgdGFibGUgJyUtLjEyOXMnAFN0b3JhZ2UgZW5naW5lIGNhbid0IGRyb3AgdGFibGUgJyUtLjEyOXMnIGJlY2F1c2UgaXQgaXMgbWlzc2luZy4gVXNlIERST1AgVEFCTEUgSUYgRVhJU1RTIHRvIHJlbW92ZSBpdCBmcm9tIGRhdGEtZGljdGlvbmFyeS4ARHVwbGljYXRlIGZpbGUgbmFtZSBmb3IgdGFibGVzcGFjZSAnJS0uNjRzJwBQcm9ibGVtIHdoaWxlIGRyb3BwaW5nIGRhdGFiYXNlLiBDYW4ndCByZW1vdmUgZGF0YWJhc2UgZGlyZWN0b3J5ICglcykuIFBsZWFzZSByZW1vdmUgaXQgbWFudWFsbHkuAE5vIFNESSBmaWxlcyBtYXRjaGVkIHRoZSBwYXR0ZXJuICclcycAU2NoZW1hICclLjI1NnMnLCByZWZlcmVuY2VkIGluIFNESSwgZG9lcyBub3QgZXhpc3QuAFRhYmxlICclLjI1NnMuJS4yNTZzJywgcmVmZXJlbmNlZCBpbiBTREksIGFscmVhZHkgZXhpc3RzLgBJbXBvcnRlZCBteXNxbGRfdmVyc2lvbiAoJWxsdSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICglbGx1KQBJbXBvcnRlZCBkZCB2ZXJzaW9uICgldSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICgldSkASW1wb3J0ZWQgc2RpIHZlcnNpb24gKCVsbHUpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggY3VycmVudCAoJWxsdSkASW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBoaW50ICVzAFZhcmlhYmxlICVzIGRvZXMgbm90IGV4aXN0IGluIHBlcnNpc3RlZCBjb25maWcgZmlsZQBMb25naXR1ZGUgJWYgaXMgb3V0IG9mIHJhbmdlIGluIGZ1bmN0aW9uICUuMTkycy4gSXQgbXVzdCBiZSB3aXRoaW4gKCVmLCAlZl0uAExhdGl0dWRlICVmIGlzIG91dCBvZiByYW5nZSBpbiBmdW5jdGlvbiAlLjE5MnMuIEl0IG11c3QgYmUgd2l0aGluIFslZiwgJWZdLgAlLjE5MnMoJS44MHMpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgZ2VvZ3JhcGhpYyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLgBJbGxlZ2FsIHByaXZpbGVnZSBsZXZlbCBzcGVjaWZpZWQgZm9yICVzAEFjY2VzcyB0byBzeXN0ZW0gdmlldyBJTkZPUk1BVElPTl9TQ0hFTUEuJyUuNjRzJyBpcyByZWplY3RlZC4AVGhlIGxvZy1maWx0ZXIgY29tcG9uZW50ICIlcyIgZ290IGNvbmZ1c2VkIGF0ICIlcyIgLi4uAFBhcnRpdGlvbmluZyBleHByZXNzaW9uIGlzIHRvbyBsb25nLgBEUk9QIEZVTkNUSU9OIGNhbid0IGRyb3AgYSBkeW5hbWljYWxseSByZWdpc3RlcmVkIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgBVbmFibGUgdG8gc3RvcmUgY29sdW1uIHN0YXRpc3RpY3MgZm9yIGNvbHVtbiAnJS42NHMnIGluIHRhYmxlICclLjY0cycuJyUuNjRzJwBVbmFibGUgdG8gdXBkYXRlIGNvbHVtbiBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVW5hYmxlIHRvIHJlbW92ZSBjb2x1bW4gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFVuYWJsZSB0byBidWlsZCBoaXN0b2dyYW0gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFRoZSByb2xlICVzIGlzIGEgbWFuZGF0b3J5IHJvbGUgYW5kIGNhbid0IGJlIHJldm9rZWQgb3IgZHJvcHBlZC4gVGhlIHJlc3RyaWN0aW9uIGNhbiBiZSBsaWZ0ZWQgYnkgZXhjbHVkaW5nIHRoZSByb2xlIGlkZW50aWZpZXIgZnJvbSB0aGUgZ2xvYmFsIHZhcmlhYmxlIG1hbmRhdG9yeV9yb2xlcy4AVGFibGVzcGFjZSAnJS4xOTJzJyBkb2VzIG5vdCBoYXZlIGEgZmlsZSBuYW1lZCAnJS4xOTJzJwBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAlLS4xMjhzIHByaXZpbGVnZXMgZm9yIHRoaXMgb3BlcmF0aW9uAFlvdSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIGNvbW1hbmQgJyUtLjE5MnMnAFBhdGggaXMgd2l0aGluIHRoZSBjdXJyZW50IGRhdGEgZGlyZWN0b3J5ICclLS4xOTJzJwBDb25jdXJyZW50IERETCBpcyBwZXJmb3JtZWQgZHVyaW5nIGNsb25lIG9wZXJhdGlvbi4gUGxlYXNlIHRyeSBhZ2Fpbi4AVG9vIG1hbnkgY29uY3VycmVudCBjbG9uZSBvcGVyYXRpb25zLiBNYXhpbXVtIGFsbG93ZWQgLSAlZC4AVGhlIHRhYmxlIGluIHRyYW5zYWN0aW9uICVzIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgYnkgYW4gZXh0ZXJuYWwgcGx1Z2luLgBSZWN1cnNpdmUgcXVlcnkgYWJvcnRlZCBhZnRlciAldSBpdGVyYXRpb25zLiBUcnkgaW5jcmVhc2luZyBAQGN0ZV9tYXhfcmVjdXJzaW9uX2RlcHRoIHRvIGEgbGFyZ2VyIHZhbHVlLgBWYXJpYWJsZSAlcyBjYW5ub3QgYmUgc2V0IHVzaW5nIFNFVF9WQVIgaGludC4AQ2Fubm90IHVzZSB0aGVzZSBjcmVkZW50aWFscyBmb3IgJyUuKnNAJS4qcycgYmVjYXVzZSB0aGV5IGNvbnRyYWRpY3QgdGhlIHBhc3N3b3JkIGhpc3RvcnkgcG9saWN5AE5vbi16ZXJvIHBhc3N3b3JkIGhpc3RvcnkgY2xhdXNlcyBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgcGFzc3dvcmQgaGlzdG9yeQBUaGUgY2xpZW50IGRvZXNuJ3Qgc3VwcG9ydCAlcwBUYWJsZXNwYWNlICclcycgd2FzIHNraXBwZWQgc2luY2UgaXRzIGRlZmluaXRpb24gaXMgYmVpbmcgbW9kaWZpZWQgYnkgY29uY3VycmVudCBEREwgc3RhdGVtZW50AEVuZ2luZSAnJS4xOTJzJyBkb2VzIG5vdCBtYXRjaCBzdG9yZWQgZW5naW5lICclLjE5MnMnIGZvciB0YWJsZXNwYWNlICclLjE5MnMnAFRoZSBTUklEIG9mIHRoZSBnZW9tZXRyeSBkb2VzIG5vdCBtYXRjaCB0aGUgU1JJRCBvZiB0aGUgY29sdW1uICclLjY0cycuIFRoZSBTUklEIG9mIHRoZSBnZW9tZXRyeSBpcyAlbHUsIGJ1dCB0aGUgU1JJRCBvZiB0aGUgY29sdW1uIGlzICVsdS4gQ29uc2lkZXIgY2hhbmdpbmcgdGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IG9yIHRoZSBTUklEIHByb3BlcnR5IG9mIHRoZSBjb2x1bW4uAFRoZSBTUklEIHNwZWNpZmljYXRpb24gb24gdGhlIGNvbHVtbiAnJS42NHMnIGNhbm5vdCBiZSBjaGFuZ2VkIGJlY2F1c2UgdGhlcmUgaXMgYSBzcGF0aWFsIGluZGV4IG9uIHRoZSBjb2x1bW4uIFBsZWFzZSByZW1vdmUgdGhlIHNwYXRpYWwgaW5kZXggYmVmb3JlIGFsdGVyaW5nIHRoZSBTUklEIHNwZWNpZmljYXRpb24uAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB1cGRhdGVzIHdpbGwgYmUgd3JpdHRlbiBpbiBmdWxsIGZvcm1hdCB0byBiaW5hcnkgbG9nLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBsb2dfYmluX3VzZV92MV9yb3dfZXZlbnRzPTEgd2lsbCBiZSBpZ25vcmVkIGFuZCByb3cgZXZlbnRzIHdpbGwgYmUgd3JpdHRlbiBpbiBuZXcgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSB1c2VkIG9ubHkgZm9yIHRoZSBhZnRlci1pbWFnZS4gRnVsbCB2YWx1ZXMgd2lsbCBiZSB3cml0dGVuIGluIHRoZSBiZWZvcmUtaW1hZ2UsIHNvIHRoZSBzYXZpbmcgaW4gZGlzayBzcGFjZSBkdWUgdG8gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zIGlzIGxpbWl0ZWQgdG8gbGVzcyB0aGFuIDUwJSUuAENvdWxkIG5vdCBhcHBseSBKU09OIGRpZmYgaW4gdGFibGUgJS4qcywgY29sdW1uICVzLgBDb3JydXB0ZWQgSlNPTiBkaWZmIGZvciB0YWJsZSAlLipzLCBjb2x1bW4gJXMuAFJlc291cmNlIEdyb3VwICclLS4xOTJzJyBleGlzdHMAUmVzb3VyY2UgR3JvdXAgJyUtLjE5MnMnIGRvZXMgbm90IGV4aXN0LgBJbnZhbGlkIGNwdSBpZCAldQBJbnZhbGlkIFZDUFUgcmFuZ2UgJXUtJXUASW52YWxpZCB0aHJlYWQgcHJpb3JpdHkgdmFsdWUgJWQgZm9yICVzIHJlc291cmNlIGdyb3VwICVzLiBBbGxvd2VkIHJhbmdlIGlzIFslZCwgJWRdLgAlcyBvcGVyYXRpb24gaXMgZGlzYWxsb3dlZCBvbiAlcwBSZXNvdXJjZSBncm91cCAlcyBpcyBidXN5LgBSZXNvdXJjZSBncm91cCAlcyBpcyBkaXNhYmxlZC4ARmVhdHVyZSAlcyBpcyB1bnN1cHBvcnRlZCAoJXMpLgBBdHRyaWJ1dGUgJXMgaXMgaWdub3JlZCAoJXMpLgBJbnZhbGlkIHRocmVhZCBpZCAoJWxsdSkuAFVuYWJsZSB0byBiaW5kIHJlc291cmNlIGdyb3VwICVzIHdpdGggdGhyZWFkIGlkICglbGx1KS4oJXMpLgBPcHRpb24gRk9SQ0UgaW52YWxpZCBhcyBESVNBQkxFIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLgBUaGUgJXMgY29tbWFuZCBlbmNvdW50ZXJlZCBhIGZhaWx1cmUuICVzAEZhaWxlZCB0byAlcyBTREkgJyUuMTkycy4lLjE5MnMnIGluIHRhYmxlc3BhY2UgJyUuMTkycycuAE1pc3NpbmcgdmFsdWUgZm9yIEpTT05fVEFCTEUgY29sdW1uICclLjE5MnMnAENhbid0IHN0b3JlIGFuIGFycmF5IG9yIGFuIG9iamVjdCBpbiB0aGUgc2NhbGFyIEpTT05fVEFCTEUgY29sdW1uICclLjE5MnMnAEV2ZXJ5IHRhYmxlIGZ1bmN0aW9uIG11c3QgaGF2ZSBhbiBhbGlhcwBJTk5FUiBvciBMRUZUIEpPSU4gbXVzdCBiZSB1c2VkIGZvciBMQVRFUkFMIHJlZmVyZW5jZXMgbWFkZSBieSAnJS4xOTJzJwBWYWx1ZSBpcyBvdXQgb2YgcmFuZ2UgZm9yIEpTT05fVEFCTEUncyBjb2x1bW4gJyUuMTkycycATW9yZSB0aGFuIHN1cHBvcnRlZCAldSBORVNURUQgUEFUSHMgd2VyZSBmb3VuZCBpbiBKU09OX1RBQkxFICclLjE5MnMnAFRoZSBzZWxlY3RlZCBhdXRoZW50aWNhdGlvbiBtZXRob2QgJS4qcyBkb2VzIG5vdCBzdXBwb3J0IHBhc3N3b3JkIGV4cGlyYXRpb24ASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IE1lbWJlciAnY3JzJyBtdXN0IGJlIHNwZWNpZmllZCBpbiB0aGUgdG9wIGxldmVsIG9iamVjdC4AQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgbnVsbABUaGUgc3BhdGlhbCBpbmRleCBvbiBjb2x1bW4gJyUuNjRzJyB3aWxsIG5vdCBiZSB1c2VkIGJ5IHRoZSBxdWVyeSBvcHRpbWl6ZXIgc2luY2UgdGhlIGNvbHVtbiBkb2VzIG5vdCBoYXZlIGFuIFNSSUQgYXR0cmlidXRlLiBDb25zaWRlciBhZGRpbmcgYW4gU1JJRCBhdHRyaWJ1dGUgdG8gdGhlIGNvbHVtbi4AQ3JlYXRlIHRhYmxlL3RhYmxlc3BhY2UgJyUtLjE5MnMnIGZhaWxlZCwgYXMgZGlzayBpcyBmdWxsAENvdWxkIG5vdCBwYXJzZSBhcmd1bWVudCB0byBkaWdlc3QgZnVuY3Rpb246ICIlcyIuAENvdWxkIG5vdCBwYXJzZSBhcmd1bWVudCB0byBkaWdlc3QgZnVuY3Rpb24uAFNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgYWxyZWFkeSBleGlzdHMuIFRoaXMgbXVzdCBiZSByZXNvbHZlZCBtYW51YWxseSAoZS5nLiBieSBtb3ZpbmcgdGhlIHNjaGVtYSBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbikuAFNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgZG9lcyBub3QgZXhpc3QARmFpbGVkIHRvIGNyZWF0ZSBzY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIChlcnJubzogJWQgLSAlcykAU2NoZW1hICclLjE5MnMnIGRvZXMgbm90IGV4aXN0LCBidXQgc2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyB3YXMgZm91bmQuIFRoaXMgbXVzdCBiZSByZXNvbHZlZCBtYW51YWxseSAoZS5nLiBieSBtb3ZpbmcgdGhlIHNjaGVtYSBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbikuAEZ1bmN0aW9uICUuMTkycyBpcyBvbmx5IGRlZmluZWQgZm9yIFNSSUQgMCBhbmQgU1JJRCA0MzI2LgBUaGUgb3B0aW9uIGV4cGlyZV9sb2dzX2RheXMgYW5kIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLiBQbGVhc2UgdXNlIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzIHRvIHNldCB0aGUgZXhwaXJlIHRpbWUgKGV4cGlyZV9sb2dzX2RheXMgaXMgZGVwcmVjYXRlZCkAVGhlIHJlc3VsdCBzdHJpbmcgaXMgbGFyZ2VyIHRoYW4gdGhlIHJlc3VsdCBidWZmZXIuAElsbGVnYWwgYXJndW1lbnQgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uAEluZGV4IG91dCBvZiBib3VuZHMgaW4gcmVndWxhciBleHByZXNzaW9uIHNlYXJjaC4ASW50ZXJuYWwgZXJyb3IgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgBTeW50YXggZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uIG9uIGxpbmUgJXUsIGNoYXJhY3RlciAldS4AVW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMgYSBmZWF0dXJlIHRoYXQgaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgbGlicmFyeSB2ZXJzaW9uLgBNaXNtYXRjaGVkIHBhcmVudGhlc2lzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4ASW5jb3JyZWN0IGRlc2NyaXB0aW9uIG9mIGEge21pbixtYXh9IGludGVydmFsLgBUaGUgbWF4aW11bSBpcyBsZXNzIHRoYW4gdGhlIG1pbnVtdW0gaW4gYSB7bWluLG1heH0gaW50ZXJ2YWwuAEludmFsaWQgYmFjay1yZWZlcmVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgbG9vay1iZWhpbmQgYXNzZXJ0aW9uIGV4Y2VlZHMgdGhlIGxpbWl0IGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucyBhbiB1bmNsb3NlZCBicmFja2V0IGV4cHJlc3Npb24uAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMgYW4gW3gteV0gY2hhcmFjdGVyIHJhbmdlIHdoZXJlIHggY29tZXMgYWZ0ZXIgeS4AT3ZlcmZsb3cgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBiYWNrdHJhY2sgc3RhY2suAFRpbWVvdXQgZXhjZWVkZWQgaW4gcmVndWxhciBleHByZXNzaW9uIG1hdGNoLgBUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gZXhjZWVkcyBsaW1pdHMgb24gc2l6ZSBvciBjb21wbGV4aXR5LgBWYWx1ZSBmb3IgJXMgZ290IGNvbmZ1c2luZyBhdCBvciBhcm91bmQgIiVzIi4gU3ludGF4IG1heSBiZSB3cm9uZywgY29tcG9uZW50IG1heSBub3QgYmUgSU5TVEFMTGVkLCBvciBhIGNvbXBvbmVudCB0aGF0IGRvZXMgbm90IHN1cHBvcnQgaW5zdGFuY2VzIG1heSBiZSBsaXN0ZWQgbW9yZSB0aGFuIG9uY2UuAFNldHRpbmcgYW4gZW1wdHkgJXMgcGlwZWxpbmUgZGlzYWJsZXMgZXJyb3IgbG9nZ2luZyEAZmlsdGVyICVzOiAlcwAlLjE5MnMoJS44MHMpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgQ2FydGVzaWFuIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMuACUuMTkycyglLjgwcykgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciBwcm9qZWN0ZWQgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcy4ASW52YWxpZCByYWRpdXMgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IFJhZGl1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBSZXN0YXJ0IHNlcnZlciBmYWlsZWQgKCVzKS4ATWlzc2luZyBtYW5kYXRvcnkgYXR0cmlidXRlICVzLgBNdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBhdHRyaWJ1dGUgJXMuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gbmFtZSBjYW4ndCBiZSBhbiBlbXB0eSBzdHJpbmcgb3Igc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4AVGhlIG9yZ2FuaXphdGlvbiBuYW1lIGNhbid0IGJlIGFuIGVtcHR5IHN0cmluZyBvciBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlLgBUaGVyZSBpcyBhbHJlYWR5IGEgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4AVGhlcmUgaXMgYWxyZWFkeSBhIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAFNSSUQgMCBpcyBub3QgbW9kaWZpYWJsZS4AVGhlIFNSSUQgcmFuZ2UgWyV1LCAldV0gaGFzIGJlZW4gcmVzZXJ2ZWQgZm9yIHN5c3RlbSB1c2UuIFNSU3MgaW4gdGhpcyByYW5nZSBtYXkgYmUgYWRkZWQsIG1vZGlmaWVkIG9yIHJlbW92ZWQgd2l0aG91dCB3YXJuaW5nIGR1cmluZyB1cGdyYWRlLgBDYW4ndCBtb2RpZnkgU1JJRCAldS4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNvbHVtbiBkZXBlbmRpbmcgb24gaXQuAEludmFsaWQgY2hhcmFjdGVyIGluIGF0dHJpYnV0ZSAlcy4AQXR0cmlidXRlICVzIGlzIHRvbyBsb25nLiBUaGUgbWF4aW11bSBsZW5ndGggaXMgJXUgY2hhcmFjdGVycy4AJ3V0ZjgnIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgYnV0IHdpbGwgYmUgYW4gYWxpYXMgZm9yIFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAE5BVElPTkFML05DSEFSL05WQVJDSEFSIGltcGxpZXMgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBDSEFSKHgpIENIQVJBQ1RFUiBTRVQgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4ASW52YWxpZCBkZWZhdWx0IGNvbGxhdGlvbiAlczogdXRmOG1iNF8wOTAwX2FpX2NpIG9yIHV0ZjhtYjRfZ2VuZXJhbF9jaSBleHBlY3RlZABVbmFibGUgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBmb3IgY29sdW1uICclLS4xOTJzJzogJS0uMTkycy4AVGhlIHRhYmxlICclLS4xOTJzJyBtYXkgbm90IGJlIGNyZWF0ZWQgaW4gdGhlIHJlc2VydmVkIHRhYmxlc3BhY2UgJyUtLjE5MnMnLgBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgc2V0ICVzLgBBIGNvbW1pdCBmb3IgYW4gYXRvbWljIERETCBzdGF0ZW1lbnQgd2FzIHVuc3VjY2Vzc2Z1bCBvbiB0aGUgc291cmNlIGFuZCB0aGUgcmVwbGljYS4gVGhlIHJlcGxpY2Egc3VwcG9ydHMgYXRvbWljIERETCBzdGF0ZW1lbnRzIGJ1dCB0aGUgc291cmNlIGRvZXMgbm90LCBzbyB0aGUgYWN0aW9uIHRha2VuIGJ5IHRoZSByZXBsaWNhIGFuZCBzb3VyY2UgbWlnaHQgZGlmZmVyLiBDaGVjayB0aGF0IHRoZWlyIHN0YXRlcyBoYXZlIG5vdCBkaXZlcmdlZCBiZWZvcmUgcHJvY2VlZGluZy4ARnVuY3Rpb24gJXMgaXMgb25seSBkZWZpbmVkIGZvciBnZW9ncmFwaGljIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMsIGJ1dCBvbmUgb2YgaXRzIGFyZ3VtZW50cyBpcyBpbiBTUklEICV1LCB3aGljaCBpcyBub3QgZ2VvZ3JhcGhpYy4ARnVuY3Rpb24gJXMgZW5jb3VudGVyZWQgYSBwb2x5Z29uIHRoYXQgd2FzIHRvbyBsYXJnZS4gUG9seWdvbnMgbXVzdCBjb3ZlciBsZXNzIHRoYW4gaGFsZiB0aGUgcGxhbmV0LgBTcGF0aWFsIGluZGV4ZXMgY2FuJ3QgYmUgcHJpbWFyeSBvciB1bmlxdWUgaW5kZXhlcy4AVGhlIGluZGV4IHR5cGUgJS4yMHMgaXMgbm90IHN1cHBvcnRlZCBmb3Igc3BhdGlhbCBpbmRleGVzLgBDYW5ub3QgZHJvcCB0YWJsZSAnJXMnIHJlZmVyZW5jZWQgYnkgYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclcycgb24gdGFibGUgJyVzJy4AQSBwYXJhbWV0ZXIgb2YgZnVuY3Rpb24gJS4xOTJzIGNvbnRhaW5zIGEgZ2VvbWV0cnkgd2l0aCBsb25naXR1ZGUgJWYsIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSB3aXRoaW4gKCVmLCAlZl0uAEEgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uICUuMTkycyBjb250YWlucyBhIGdlb21ldHJ5IHdpdGggbGF0aXR1ZGUgJWYsIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSB3aXRoaW4gWyVmLCAlZl0uAEZvcmVpZ24ga2V5ICclcycgdXNlcyB2aXJ0dWFsIGNvbHVtbiAnJXMnIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQuAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgY29sdW1uICclcycgZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnACVzOiBDb3VsZCBub3QgYWRkIHN1cHByZXNzaW9uIHJ1bGUgZm9yIGNvZGUgIiVzIi4gUnVsZS1zZXQgbWF5IGJlIGZ1bGwsIG9yIGNvZGUgbWF5IG5vdCBjb3JyZXNwb25kIHRvIGFuIGVycm9yLWxvZyBtZXNzYWdlLgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gZm9yIFNSSUQgJXUgc3BlY2lmaWVzIGludmFsaWQgZ2VvZ3JhcGhpYyBheGVzICclLjIwcycgYW5kICclLjIwcycuIE9uZSBheGlzIG11c3QgYmUgTk9SVEggb3IgU09VVEggYW5kIHRoZSBvdGhlciBtdXN0IGJlIEVBU1Qgb3IgV0VTVC4AVGhlIGxlbmd0aCBvZiB0aGUgc2VtaS1tYWpvciBheGlzIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuAFRoZSBpbnZlcnNlIGZsYXR0ZW5pbmcgbXVzdCBiZSBsYXJnZXIgdGhhbiAxLjAsIG9yIDAuMCBpZiB0aGUgZWxsaXBzb2lkIGlzIGEgc3BoZXJlLgBUaGUgYW5ndWxhciB1bml0IGNvbnZlcnNpb24gZmFjdG9yIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuAFRoZSBwcmltZSBtZXJpZGlhbiBtdXN0IGJlIHdpdGhpbiAoLTE4MCwgMTgwXSBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQuAFRyYW5zZm9ybWF0aW9uIGZyb20gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLgBUcmFuc2Zvcm1hdGlvbiB0byBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuAFRyYW5zZm9ybWF0aW9uIGZyb20gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLiBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGhhcyBubyBUT1dHUzg0IGNsYXVzZS4AVHJhbnNmb3JtYXRpb24gdG8gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLiBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGhhcyBubyBUT1dHUzg0IGNsYXVzZS4AQ2hhbmdpbmcgQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIHRoZSBzZXNzaW9uIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZShzKS4gWW91IGNvdWxkIHdhaXQgdW50aWwgdGhlc2UgdGVtcG9yYXJ5IHRhYmxlKHMpIGFyZSBkcm9wcGVkIGFuZCB0cnkgYWdhaW4uAENoYW5naW5nIEBAZ2xvYmFsLmJpbmxvZ19mb3JtYXQgb3IgQEBwZXJzaXN0LmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIGFueSByZXBsaWNhdGlvbiBjaGFubmVsIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZShzKS4gWW91IGNvdWxkIHdhaXQgdW50aWwgUmVwbGljYV9vcGVuX3RlbXBfdGFibGVzID0gMCBhbmQgdHJ5IGFnYWluAENoYW5naW5nIEBAZ2xvYmFsLmJpbmxvZ19mb3JtYXQgb3IgQEBwZXJzaXN0LmJpbmxvZ19mb3JtYXQgaXMgZGlzYWxsb3dlZCB3aGVuIGFueSByZXBsaWNhdGlvbiBjaGFubmVsIGFwcGxpZXIgdGhyZWFkIGlzIHJ1bm5pbmcuIFlvdSBjb3VsZCBleGVjdXRlIFNUT1AgUkVQTElDQSBTUUxfVEhSRUFEIGFuZCB0cnkgYWdhaW4uAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gb3IgaW5zaWRlIGEgcHJvY2VkdXJlIGluIGEgdHJhbnNhY3Rpb25hbCBjb250ZXh0IHdoZW4gQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQ9U1RBVEVNRU5ULgBYQTogRmFpbGVkIHRvIHRha2UgTURMIExvY2sgYmFja3VwIG9mIFBSRVBBUkVEIFhBIHRyYW5zYWN0aW9uIGR1cmluZyBjbGllbnQgZGlzY29ubmVjdC4AVW5hYmxlIHRvIGNyZWF0ZSBvciBjaGFuZ2UgYSB0YWJsZSB3aXRob3V0IGEgcHJpbWFyeSBrZXksIHdoZW4gdGhlIHN5c3RlbSB2YXJpYWJsZSAnc3FsX3JlcXVpcmVfcHJpbWFyeV9rZXknIGlzIHNldC4gQWRkIGEgcHJpbWFyeSBrZXkgdG8gdGhlIHRhYmxlIG9yIHVuc2V0IHRoaXMgdmFyaWFibGUgdG8gYXZvaWQgdGhpcyBtZXNzYWdlLiBOb3RlIHRoYXQgdGFibGVzIHdpdGhvdXQgYSBwcmltYXJ5IGtleSBjYW4gY2F1c2UgcGVyZm9ybWFuY2UgcHJvYmxlbXMgaW4gcm93LWJhc2VkIHJlcGxpY2F0aW9uLCBzbyBwbGVhc2UgY29uc3VsdCB5b3VyIERCQSBiZWZvcmUgY2hhbmdpbmcgdGhpcyBzZXR0aW5nLgBEYXRhIHRydW5jYXRlZCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGF0IHJvdyAlbGQAVmFsdWUgaXMgb3V0IG9mIHJhbmdlIGZvciBmdW5jdGlvbmFsIGluZGV4ICclcycgYXQgcm93ICVsZABDYW5ub3QgY3JlYXRlIGEgZnVuY3Rpb25hbCBpbmRleCBvbiBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIEpTT04gb3IgR0VPTUVUUlkgdmFsdWUuAEZ1bmN0aW9uYWwgaW5kZXggJyUuNjRzJyBjYW5ub3QgcmVmZXIgdG8gYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjY0cycgYmVjYXVzZSBpdCBpcyB1c2VkIGJ5IGEgZnVuY3Rpb25hbCBpbmRleC4gSW4gb3JkZXIgdG8gZHJvcCB0aGUgY29sdW1uLCB5b3UgbXVzdCByZW1vdmUgdGhlIGZ1bmN0aW9uYWwgaW5kZXguAFRoZSBwcmltYXJ5IGtleSBjYW5ub3QgYmUgYSBmdW5jdGlvbmFsIGluZGV4AENhbm5vdCBjcmVhdGUgYSBmdW5jdGlvbmFsIGluZGV4IG9uIGFuIGV4cHJlc3Npb24gdGhhdCByZXR1cm5zIGEgQkxPQiBvciBURVhULiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQ0FTVC4ARXhwcmVzc2lvbiBvZiBmdW5jdGlvbmFsIGluZGV4ICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBGdWxsdGV4dCBmdW5jdGlvbmFsIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQuAFNwYXRpYWwgZnVuY3Rpb25hbCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkLgBUaGUgdXNlZCBzdG9yYWdlIGVuZ2luZSBjYW5ub3QgaW5kZXggdGhlIGV4cHJlc3Npb24gJyVzJy4ARnVuY3Rpb25hbCBpbmRleCBvbiBhIGNvbHVtbiBpcyBub3Qgc3VwcG9ydGVkLiBDb25zaWRlciB1c2luZyBhIHJlZ3VsYXIgaW5kZXggaW5zdGVhZC4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uOiAlcy4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdXNlciBvciBzeXN0ZW0gdmFyaWFibGVzLgBDb2x1bW4gJyVzJyBvZiB0YWJsZSAnJXMnIGhhcyBhIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGEgY29sdW1uIGRlZmluZWQgYWZ0ZXIgaXQgaWYgdGhhdCBjb2x1bW4gaXMgYSBnZW5lcmF0ZWQgY29sdW1uIG9yIGhhcyBhbiBleHByZXNzaW9uIGFzIGRlZmF1bHQgdmFsdWUuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uOiAlcy4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB1c2VyIG9yIHN5c3RlbSB2YXJpYWJsZXMuAERFRkFVTFQgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgd2l0aCBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zACclcycgaXMgbm90IHN1cHBvcnRlZCBmb3IgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IEFMVEVSIFRBQkxFIC4uLiBBREQgQ09MVU1OIC4uIHdpdGggZXhwcmVzc2lvbiBhcyBERUZBVUxULgBDYW5ub3QgY2hhbmdlIHRhYmxlJ3Mgc3RvcmFnZSBlbmdpbmUgYmVjYXVzZSB0aGUgdGFibGUgcGFydGljaXBhdGVzIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludC4AU2V0dGluZyB1c2VyIHZhcmlhYmxlcyB3aXRoaW4gZXhwcmVzc2lvbnMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIGFsdGVybmF0aXZlczogJ1NFVCB2YXJpYWJsZT1leHByZXNzaW9uLCAuLi4nLCBvciAnU0VMRUNUIGV4cHJlc3Npb24ocykgSU5UTyB2YXJpYWJsZXMocyknLgAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0IFVURjhNQjMuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IHdpdGggYW4gYXBwcm9wcmlhdGUgY29sbGF0aW9uIGluc3RlYWQuAE5lc3RlZCBjb21tZW50IHN5bnRheCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AUmVmZXJlbmNpbmcgY29sdW1uICclcycgYW5kIHJlZmVyZW5jZWQgY29sdW1uICclcycgaW4gZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJXMnIGFyZSBpbmNvbXBhdGlibGUuAFRpbWVvdXQgZXhjZWVkZWQgZm9yIGhlbGQgc3RhdGVtZW50IHdoaWxlIG5ldyBHcm91cCBSZXBsaWNhdGlvbiBwcmltYXJ5IG1lbWJlciBpcyBhcHBseWluZyBiYWNrbG9nLgBIZWxkIHN0YXRlbWVudCBhYm9ydGVkIGJlY2F1c2UgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIGdvdCBzaHV0IGRvd24gb3IgdGhyZWFkIHdhcyBraWxsZWQgd2hpbGUgbmV3IHByaW1hcnkgbWVtYmVyIHdhcyBhcHBseWluZyBiYWNrbG9nLgBIZWxkIHN0YXRlbWVudCB3YXMgYWJvcnRlZCBkdWUgdG8gbWVtYmVyIGJlaW5nIGluIGVycm9yIHN0YXRlLCB3aGlsZSBiYWNrbG9nIGlzIGJlaW5nIGFwcGxpZWQgZHVyaW5nIEdyb3VwIFJlcGxpY2F0aW9uIHByaW1hcnkgZWxlY3Rpb24uAEZhaWxlZCB0byBmZXRjaCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAENhbid0IGZpbmQga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4ARmV0Y2hlZCBhbiBpbnZhbGlkIGtleSBmcm9tIGtleXJpbmcuAEVycm9yIHJlYWRpbmcgYSByZXBsaWNhdGlvbiBsb2cgZW5jcnlwdGlvbiBoZWFkZXI6ICVzLgBGYWlsZWQgdG8gcm90YXRlIHNvbWUgbG9ncyBhZnRlciBjaGFuZ2luZyBiaW5sb2cgZW5jcnlwdGlvbiBzZXR0aW5ncy4gUGxlYXNlIGZpeCB0aGUgcHJvYmxlbSBhbmQgcm90YXRlIHRoZSBsb2dzIG1hbnVhbGx5LgBLZXkgJXMgZXhpc3RzIHVuZXhwZWN0ZWQuAEZhaWxlZCB0byBnZW5lcmF0ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHN0b3JlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcmVtb3ZlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gY2hhbmdlIGJpbmxvZ19lbmNyeXB0aW9uIHZhbHVlLiAlLS44MHMuAFVuYWJsZSB0byByZWNvdmVyIGJpbmxvZyBlbmNyeXB0aW9uIG1hc3RlciBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4Ac2xvdyBxdWVyeSBsb2cgZmlsZSBmb3JtYXQgY2hhbmdlZCBhcyByZXF1ZXN0ZWQsIGJ1dCBzZXR0aW5nIHdpbGwgaGF2ZSBubyBlZmZlY3Qgd2hlbiBub3QgYWN0dWFsbHkgbG9nZ2luZyB0byBhIGZpbGUuAFRoZSBvcHRpb24gZ3JvdXBfcmVwbGljYXRpb25fY29uc2lzdGVuY3kgY2Fubm90IGJlIHVzZWQgb24gdGhlIGN1cnJlbnQgbWVtYmVyIHN0YXRlLgBFcnJvciB3aGlsZSB3YWl0aW5nIGZvciBncm91cCB0cmFuc2FjdGlvbnMgY29tbWl0IG9uIGdyb3VwX3JlcGxpY2F0aW9uX2NvbnNpc3RlbmN5PSAnQkVGT1JFJy4ARXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgdHJhbnNhY3Rpb25zIHdpdGggZ3JvdXBfcmVwbGljYXRpb25fY29uc2lzdGVuY3k9ICdBRlRFUicgdG8gY29tbWl0LgBUaGUgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIGlzIHN0b3BwaW5nLCB0aGVyZWZvcmUgbmV3IHRyYW5zYWN0aW9ucyBhcmUgbm90IGFsbG93ZWQgdG8gc3RhcnQuAEV4cHJlc3Npb24gb2YgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4ARmFpbGVkIHRvIGVuY3J5cHQgY29udGVudCB0byB3cml0ZSBpbnRvIGJpbmxvZyBmaWxlOiAlcy4AUGFnZSBUcmFja2luZyBpcyBub3Qgc3RhcnRlZCB5ZXQuAFRyYWNraW5nIHdhcyBub3QgZW5hYmxlZCBmb3IgdGhlIExTTiByYW5nZSBzcGVjaWZpZWQAQ2Fubm90IHB1cmdlIGRhdGEgd2hlbiBjb25jdXJyZW50IGNsb25lIGlzIGluIHByb2dyZXNzLiBUcnkgbGF0ZXIuAENhbm5vdCByb3RhdGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHdoZW4gJ2JpbmxvZy1lbmNyeXB0aW9uJyBpcyBvZmYuAFVuYWJsZSB0byByZWNvdmVyIGJpbmFyeSBsb2cgbWFzdGVyIGtleSwgdGhlIGNvbWJpbmF0aW9uIG9mIG5ld19tYXN0ZXJfa2V5X3NlcW5vPSV1LCBtYXN0ZXJfa2V5X3NlcW5vPSV1IGFuZCBvbGRfbWFzdGVyX2tleV9zZXFubz0ldSBhcmUgd3JvbmcuAEZhaWxlZCB0byBvcGVyYXRlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSBvbiBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuIFRoZSBzdGF0ZW1lbnQgaGFkIG5vIGVmZmVjdDogdGhlIG9sZCBiaW5hcnkgbG9nIG1hc3RlciBrZXkgaXMgc3RpbGwgaW4gdXNlLCB0aGUga2V5cmluZywgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMgYXJlIHVuY2hhbmdlZCwgYW5kIHRoZSBzZXJ2ZXIgY291bGQgbm90IHN0YXJ0IHVzaW5nIGEgbmV3IGJpbmFyeSBsb2cgbWFzdGVyIGtleSBmb3IgZW5jcnlwdGluZyBuZXcgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMuAEZhaWxlZCB0byByb3RhdGUgb25lIG9yIG1vcmUgYmluYXJ5IG9yIHJlbGF5IGxvZyBmaWxlcy4gQSBuZXcgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHdhcyBnZW5lcmF0ZWQgYW5kIHdpbGwgYmUgdXNlZCB0byBlbmNyeXB0IG5ldyBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcy4gVGhlcmUgbWF5IHN0aWxsIGV4aXN0IGJpbmFyeSBvciByZWxheSBsb2cgZmlsZXMgdXNpbmcgdGhlIHByZXZpb3VzIGJpbmFyeSBsb2cgbWFzdGVyIGtleS4AJXMuIEEgbmV3IGJpbmFyeSBsb2cgbWFzdGVyIGtleSB3YXMgZ2VuZXJhdGVkIGFuZCB3aWxsIGJlIHVzZWQgdG8gZW5jcnlwdCBuZXcgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMuIFRoZXJlIG1heSBzdGlsbCBleGlzdCBiaW5hcnkgb3IgcmVsYXkgbG9nIGZpbGVzIHVzaW5nIHRoZSBwcmV2aW91cyBiaW5hcnkgbG9nIG1hc3RlciBrZXkuAEZhaWxlZCB0byByZW1vdmUgdW51c2VkIGJpbmFyeSBsb2cgZW5jcnlwdGlvbiBrZXlzIGZyb20gdGhlIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIHVudXNlZCBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5cyBtYXkgc3RpbGwgZXhpc3QgaW4gdGhlIGtleXJpbmcsIGFuZCB0aGV5IHdpbGwgYmUgcmVtb3ZlZCB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBGYWlsZWQgdG8gcmVtb3ZlIGF1eGlsaWFyeSBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgY2xlYW51cCBvZiB0aGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHJvdGF0aW9uIHByb2Nlc3MgZGlkIG5vdCBmaW5pc2ggYXMgZXhwZWN0ZWQgYW5kIHRoZSBjbGVhbnVwIHdpbGwgdGFrZSBwbGFjZSB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBBbiBleHByZXNzaW9uIG9mIG5vbi1ib29sZWFuIHR5cGUgc3BlY2lmaWVkIHRvIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycuAENvbHVtbiBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyByZWZlcmVuY2VzIG90aGVyIGNvbHVtbi4AQW4gZXhwcmVzc2lvbiBvZiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNvbnRhaW5zIGRpc2FsbG93ZWQgZnVuY3Rpb246ICVzLgBBbiBleHByZXNzaW9uIG9mIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY29udGFpbnMgZGlzYWxsb3dlZCBmdW5jdGlvbi4AQW4gZXhwcmVzc2lvbiBvZiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNhbm5vdCByZWZlciB0byBhIHVzZXIgb3Igc3lzdGVtIHZhcmlhYmxlLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNhbm5vdCByZWZlciB0byBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4uAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGlzIHZpb2xhdGVkLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyByZWZlcnMgdG8gbm9uLWV4aXN0aW5nIGNvbHVtbiAnJS0uMTkycycuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGlzIG5vdCBmb3VuZCBpbiB0aGUgdGFibGUuAER1cGxpY2F0ZSBjaGVjayBjb25zdHJhaW50IG5hbWUgJyUtLjE5MnMnLgBDb2x1bW4gJyUtLjE5MnMnIGNhbm5vdCBiZSB1c2VkIGluIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIHJlZmVyZW50aWFsIGFjdGlvbi4AQ3JlYXRpbmcgYW4gdW5lbmNyeXB0ZWQgdGFibGUgaW4gYSBkYXRhYmFzZSB3aXRoIGRlZmF1bHQgZW5jcnlwdGlvbiBlbmFibGVkLgBSZXF1ZXN0IHRvIGNyZWF0ZSAlcyB0YWJsZSB3aGlsZSB1c2luZyBhbiAlcyB0YWJsZXNwYWNlLgBUYWJsZSBlbmNyeXB0aW9uIGRpZmZlciBmcm9tIGl0cyBkYXRhYmFzZSBkZWZhdWx0IGVuY3J5cHRpb24sIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBEYXRhYmFzZSBkZWZhdWx0IGVuY3J5cHRpb24gZGlmZmVyIGZyb20gJ2RlZmF1bHRfdGFibGVfZW5jcnlwdGlvbicgc2V0dGluZywgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAFRhYmxlc3BhY2UgZW5jcnlwdGlvbiBkaWZmZXIgZnJvbSAnZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uJyBzZXR0aW5nLCBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AVGhpcyB0YWJsZXNwYWNlIGNhbid0IGJlIGVuY3J5cHRlZCwgYmVjYXVzZSBvbmUgb2YgdGFibGUncyBzY2hlbWEgaGFzIGRlZmF1bHQgZW5jcnlwdGlvbiBPRkYgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAFRoaXMgdGFibGVzcGFjZSBjYW4ndCBiZSBkZWNyeXB0ZWQsIGJlY2F1c2Ugb25lIG9mIHRhYmxlJ3Mgc2NoZW1hIGhhcyBkZWZhdWx0IGVuY3J5cHRpb24gT04gYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAENhbm5vdCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIHRhYmxlc3BhY2UgbmFtZWQgJyVzJy4AU291cmNlIHRhYmxlc3BhY2UgaXMgZW5jcnlwdGVkIGJ1dCB0YXJnZXQgdGFibGVzcGFjZSBpcyBub3QuAEVOQ1JZUFRJT04gY2xhdXNlIGlzIG5vdCB2YWxpZCBmb3IgJXMgdGFibGVzcGFjZS4ATXVsdGlwbGUgJXMgY2xhdXNlcwBHUkFOVCAuLi4gQVMgaXMgY3VycmVudGx5IHN1cHBvcnRlZCBvbmx5IGZvciBnbG9iYWwgcHJpdmlsZWdlcy4ARWl0aGVyIHNvbWUgb2YgdGhlIGF1dGhvcml6YXRpb24gSURzIGluIHRoZSBBUyBjbGF1c2UgYXJlIGludmFsaWQgb3IgdGhlIGN1cnJlbnQgdXNlciBsYWNrcyBwcml2aWxlZ2VzIHRvIGV4ZWN1dGUgdGhlIHN0YXRlbWVudC4AQ29sdW1uICclcycgaGFzIGEgZnVuY3Rpb25hbCBpbmRleCBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBQbHVnaW4gJyVzJyBpcyBub3QgdG8gYmUgdXNlZCBhcyBhbiAiZWFybHkiIHBsdWdpbi4gRG9uJ3QgYWRkIGl0IHRvIC0tZWFybHktcGx1Z2luLWxvYWQsIGtleXJpbmcgbWlncmF0aW9uIGV0Yy4AUmVkbyBsb2cgYXJjaGl2aW5nIHN0YXJ0IHByb2hpYml0cyBwYXRoIG5hbWUgaW4gJ3N1YmRpcicgYXJndW1lbnQAUmVkbyBsb2cgYXJjaGl2aW5nIHN0YXJ0IHRpbWVkIG91dABTZXJ2ZXIgdmFyaWFibGUgJ2lubm9kYl9yZWRvX2xvZ19hcmNoaXZlX2RpcnMnIGlzIE5VTEwgb3IgZW1wdHkATGFiZWwgJyUuMTkycycgbm90IGZvdW5kIGluIHNlcnZlciB2YXJpYWJsZSAnaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfZGlycycARGlyZWN0b3J5IGlzIGVtcHR5IGFmdGVyIGxhYmVsICclLjE5MnMnIGluIHNlcnZlciB2YXJpYWJsZSAnaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfZGlycycAUmVkbyBsb2cgYXJjaGl2ZSBkaXJlY3RvcnkgJyUuMTkycycgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGEgZGlyZWN0b3J5AFJlZG8gbG9nIGFyY2hpdmUgZGlyZWN0b3J5ICclLjE5MnMnIGlzIGluLCB1bmRlciwgb3Igb3ZlciBzZXJ2ZXIgZGlyZWN0b3J5ICclLjE5MnMnIC0gJyUuMTkycycAUmVkbyBsb2cgYXJjaGl2ZSBkaXJlY3RvcnkgJyUuMTkycycgaXMgYWNjZXNzaWJsZSB0byBhbGwgT1MgdXNlcnMAQ2Fubm90IGNyZWF0ZSByZWRvIGxvZyBhcmNoaXZlIGZpbGUgJyUuNTEycycgKE9TIGVycm5vOiAlZCAtICUuMTI4cykAUmVkbyBsb2cgYXJjaGl2aW5nIGhhcyBiZWVuIHN0YXJ0ZWQgb24gJyUuNTEycycgLSBDYWxsIGlubm9kYl9yZWRvX2xvZ19hcmNoaXZlX3N0b3AoKSBmaXJzdABSZWRvIGxvZyBhcmNoaXZpbmcgaXMgbm90IGFjdGl2ZQBSZWRvIGxvZyBhcmNoaXZpbmcgZmFpbGVkOiAlLjUxMnMAUmVkbyBsb2cgYXJjaGl2aW5nIGhhcyBub3QgYmVlbiBzdGFydGVkIGJ5IHRoaXMgc2Vzc2lvbgBSZWdleCBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ASW52YWxpZCBKU09OIHR5cGUgaW4gYXJndW1lbnQgJXUgdG8gZnVuY3Rpb24gJXM7IGFuICVzIGlzIHJlcXVpcmVkLgBDYW5ub3QgY29udmVydCBzdHJpbmcgJyUuNjRzJyBmcm9tICVzIHRvICVzAENvbHVtbiAnJXMnIGhhcyBhIHBhcnRpdGlvbmluZyBmdW5jdGlvbiBkZXBlbmRlbmN5IGFuZCBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBBVVRPX0lOQ1JFTUVOVCBzdXBwb3J0IGZvciBGTE9BVC9ET1VCTEUgY29sdW1ucyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgcmVtb3ZpbmcgQVVUT19JTkNSRU1FTlQgZnJvbSBjb2x1bW4gJyUtLjE5MnMnLgBDYW5ub3Qgc3RvcCB0aGUgcmVwbGljYSBTUUwgdGhyZWFkIHdoaWxlIHRoZSBpbnN0YW5jZSBpcyBsb2NrZWQgZm9yIGJhY2t1cC4gVHJ5IHJ1bm5pbmcgYFVOTE9DSyBJTlNUQU5DRWAgZmlyc3QuAFNwZWNpZnlpbmcgbnVtYmVyIG9mIGRpZ2l0cyBmb3IgZmxvYXRpbmcgcG9pbnQgZGF0YSB0eXBlcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVU5TSUdORUQgZm9yIGRlY2ltYWwgYW5kIGZsb2F0aW5nIHBvaW50IGRhdGEgdHlwZXMgaXMgZGVwcmVjYXRlZCBhbmQgc3VwcG9ydCBmb3IgaXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAEludGVnZXIgZGlzcGxheSB3aWR0aCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVGhlIFpFUk9GSUxMIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gVXNlIHRoZSBMUEFEIGZ1bmN0aW9uIHRvIHplcm8tcGFkIG51bWJlcnMsIG9yIHN0b3JlIHRoZSBmb3JtYXR0ZWQgbnVtYmVycyBpbiBhIENIQVIgY29sdW1uLgBDbG9uZSBEb25vciBFcnJvcjogJS41MTJzLgBDbG9uZSByZWNlaXZlZCB1bmV4cGVjdGVkIHJlc3BvbnNlIGZyb20gRG9ub3IgOiAlLjUxMnMuAENsb25lIERvbm9yIE15U1FMIHZlcnNpb246ICUuNjRzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCBNeVNRTCB2ZXJzaW9uICUuNjRzLgBDbG9uZSBEb25vciBPUzogJS42NHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IE9TOiAlLjY0cy4AQ2xvbmUgRG9ub3IgcGxhdGZvcm06ICUuNjRzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCBwbGF0Zm9ybTogJS42NHMuAENsb25lIERvbm9yIGNvbGxhdGlvbjogJS4xMjhzIGlzIHVuYXZhaWxhYmxlIGluIFJlY2lwaWVudC4AQ2xvbmUgQ29uZmlndXJhdGlvbiAlLjEyOHM6IERvbm9yIHZhbHVlOiAlLjEyOHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IHZhbHVlOiAlLjEyOHMuAENsb25lIHN5c3RlbSBjb25maWd1cmF0aW9uOiAlLjUxMnMAQ2xvbmUgRG9ub3IgcGx1Z2luICUuMTI4cyBpcyBub3QgYWN0aXZlIGluIFJlY2lwaWVudC4AQ2xvbmUgY2Fubm90IHVzZSBsb29wIGJhY2sgY29ubmVjdGlvbiB3aGlsZSBjbG9uaW5nIGludG8gY3VycmVudCBkYXRhIGRpcmVjdG9yeS4AQ2xvbmUgbmVlZHMgU1NMIGNvbm5lY3Rpb24gZm9yIGVuY3J5cHRlZCB0YWJsZS4AQ2xvbmUgZXN0aW1hdGVkIGRhdGFiYXNlIHNpemUgaXMgJS42NHMuIEF2YWlsYWJsZSBzcGFjZSAlLjY0cyBpcyBub3QgZW5vdWdoLgBDb25jdXJyZW50IGNsb25lIGluIHByb2dyZXNzLiBQbGVhc2UgdHJ5IGFmdGVyIGNsb25lIGlzIGNvbXBsZXRlLgBUaGUgY2xvbmUgb3BlcmF0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGVuICVzLgBDYW5ub3QgZ3JhbnQgcm9sZXMgdG8gYW4gYW5vbnltb3VzIHVzZXIuACVzAEVtcHR5IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgYXMgc2Vjb25kIHBhc3N3b3JkIGZvciB1c2VyICclcydAJyVzJy4AQWNjZXNzIGRlbmllZCBmb3IgQXV0aElkIGAlLjY0c2BAYCUuNjRzYCB0byBkYXRhYmFzZSAnJS0uMTkycycuAENhbm5vdCBzZXQgbWFuZGF0b3J5X3JvbGVzOiBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGhhcyAnJXMnIHByaXZpbGVnZS4AR3RpZCB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgb3BlbmVkLgBUaGUgZ2VvbWV0cnkgcGFzc2VkIHRvIGZ1bmN0aW9uICVzIGlzIGluIFNSSUQgMCwgd2hpY2ggZG9lc24ndCBzcGVjaWZ5IGEgbGVuZ3RoIHVuaXQuIENhbid0IGNvbnZlcnQgdG8gJyVzJy4ARXJyb3IgaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMAU3RvcmFnZSBlbmdpbmUgY291bGQgbm90IGFsbG9jYXRlIHRlbXBvcmFyeSB0YWJsZXNwYWNlIGZvciB0aGlzIHNlc3Npb24uAEdvdCB1bmtub3duIGVycm9yOiAlZABDb3VsZCBub3QgY2hhbmdlIGNvbHVtbiAnJXMnIG9mIHRhYmxlICclcycuIFRoZSByZXN1bHRpbmcgc2l6ZSBvZiBpbmRleCAnJXMnIHdvdWxkIGV4Y2VlZCB0aGUgbWF4IGtleSBsZW5ndGggb2YgJWQgYnl0ZXMuAEEgY2FwdHVyZSBncm91cCBoYXMgYW4gaW52YWxpZCBuYW1lLgBGYWlsZWQgdG8gc2V0IHVwIFNTTCBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgU1NMIGxpYnJhcnkgZXJyb3I6ICVzAFNlY29uZGFyeSBlbmdpbmUgb3BlcmF0aW9uIGZhaWxlZC4gJXMuAERETHMgb24gYSB0YWJsZSB3aXRoIGEgc2Vjb25kYXJ5IGVuZ2luZSBkZWZpbmVkIGFyZSBub3QgYWxsb3dlZC4ASW5jb3JyZWN0IGN1cnJlbnQgcGFzc3dvcmQuIFNwZWNpZnkgdGhlIGNvcnJlY3QgcGFzc3dvcmQgd2hpY2ggaGFzIHRvIGJlIHJlcGxhY2VkLgBDdXJyZW50IHBhc3N3b3JkIG5lZWRzIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgUkVQTEFDRSBjbGF1c2UgaW4gb3JkZXIgdG8gY2hhbmdlIGl0LgBEbyBub3Qgc3BlY2lmeSB0aGUgY3VycmVudCBwYXNzd29yZCB3aGlsZSBjaGFuZ2luZyBpdCBmb3Igb3RoZXIgdXNlcnMuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBhdXRoZW50aWNhdGlvbiBwbHVnaW4gaXMgYmVpbmcgY2hhbmdlZC4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIG5ldyBwYXNzd29yZCBpcyBlbXB0eS4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUaGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycgbXVzdCBiZSBzZXQgdG8gT04uAEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaXMgc2V0IGFzIG1hbmRhdG9yeV9yb2xlcy4gQ2Fubm90IGdyYW50IHRoZSAnJXMnIHByaXZpbGVnZS4AVGhlIHVzZSBvZiByZXBsaWNhdGlvbiBmaWx0ZXJzIHdpdGggWEEgdHJhbnNhY3Rpb25zIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBjYW4gbGVhZCB0byBhbiB1bmRlZmluZWQgc3RhdGUgaW4gdGhlIHJlcGxpY2EuAHNxbF9tb2RlPTB4JTA4eCBpcyBub3Qgc3VwcG9ydGVkLgBJbnZhbGlkIG1hdGNoIG1vZGUgZmxhZyBpbiByZWd1bGFyIGV4cHJlc3Npb24uACclcycgcHJpdmlsZWdlIGZvciBkYXRhYmFzZSAnJXMnIGV4aXN0cyBib3RoIGFzIHBhcnRpYWwgcmV2b2tlIGFuZCBteXNxbC5kYiBzaW11bHRhbmVvdXNseS4gSXQgY291bGQgbWVhbiB0aGF0IHRoZSAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAFRoZXJlJ3Mgbm8gdW5pdCBvZiBtZWFzdXJlIG5hbWVkICclcycuAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJy4AT3V0IG9mIHJhbmdlIEpTT04gdmFsdWUgZm9yIENBU1QgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycuAEV4Y2VlZGVkIG1heCBudW1iZXIgb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSB2YWx1ZShzKS4ARXhjZWVkZWQgbWF4IHRvdGFsIGxlbmd0aCBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IGJ5dGVzLgBEYXRhIHRvbyBsb25nIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnLgBDYW5ub3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIGEgc2NhbGFyIGtleSBwYXJ0IG9mIHRoZSBpbmRleCAnJS4xOTJzJy4AQ2Fubm90IHVzZSBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnIGR1ZSB0byB0eXBlIG9yIGNvbGxhdGlvbiBjb252ZXJzaW9uLgBUaGUgZnVuY3Rpb24gJyVzJyBmYWlsZWQuICVzAENhbm5vdCB1cGRhdGUgR1RJRF9QVVJHRUQgd2l0aCB0aGUgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIHJ1bm5pbmcAR3JvdXBpbmcgb24gdGVtcG9yYWwgaXMgbm9uLWRldGVybWluaXN0aWMgZm9yIHRpbWV6b25lcyBoYXZpbmcgRFNULiBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIHRvIFVUQyBmb3IgdGhpcyBxdWVyeS4ATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gYSBwYXRoIGxlbmd0aCB0b28gbG9uZyBmb3IgdGFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIHRoZSBwYXRoIGxpbWl0IGZvciB5b3VyIE9TLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclLjY0cydAJyUuNjRzJy4gUm9sZSBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb246ICclLjMycycAJ2F1ZGl0X2xvZycgcGFzc3dvcmQgaGFzIGJlZW4gY29waWVkIGludG8gJyUuMzJzJyBhbmQgd2lsbCBiZSByZW1vdmVkIHdpdGggZmlyc3QgcHVyZ2VkIHBhc3N3b3JkLgBTdGFydGVkIGF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUAQSBwbHVnaW4gd2FzIGxvYWRlZCBvciB1bmxvYWRlZCBkdXJpbmcgYSBxdWVyeSwgYSBzeXN0ZW0gdmFyaWFibGUgdGFibGUgd2FzIGNoYW5nZWQuAEEgcGx1Z2luIHdhcyBsb2FkZWQgb3IgdW5sb2FkZWQgZHVyaW5nIGEgcXVlcnksIGEgZ2xvYmFsIHN0YXR1cyB2YXJpYWJsZSB3YXMgY2hhbmdlZC4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHRvIHN0YXJ0IGl0cyBtZXNzYWdlIHNlcnZpY2UuAEludmFsaWQgU09VUkNFX0NPTVBSRVNTSU9OX0FMR09SSVRITVMgJyUuMTkycycgZm9yIGNoYW5uZWwgJyUuMTkycycuAEludmFsaWQgU09VUkNFX1pTVERfQ09NUFJFU1NJT05fTEVWRUwgJXUgZm9yIGNoYW5uZWwgJyUuMTkycycuAEludmFsaWQgY29tcHJlc3Npb24gYWxnb3JpdGhtICclLjE5MnMnLgBJbnZhbGlkIHpzdGQgY29tcHJlc3Npb24gbGV2ZWwgZm9yIGFsZ29yaXRobSAnJS4xOTJzJy4AU3BlY2lmaWVkIGNvbXByZXNzaW9uIGFsZ29yaXRobSBsaXN0ICclLjE5MnMnIGV4Y2VlZHMgdG90YWwgY291bnQgb2YgMyBmb3IgY2hhbm5lbCAnJS4xOTJzJy4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYGBAYCUuMjU1c2AsIGJ1dCBhbm9ueW1vdXMgdXNlcnMgYXJlIGRpc2FsbG93ZWQgZm9yIFBSSVZJTEVHRV9DSEVDS1NfVVNFUi4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgaXMgbm90IGFuIGV4aXN0aW5nIHVzZXIuAEludmFsaWQsIGNvcnJ1cHRlZCBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgd2FzIGZvdW5kIGluIHRoZSByZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFVzZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB0byBjb3JyZWN0IHRoZSBjb25maWd1cmF0aW9uLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgJS42NHNgQGAlLjI1NXNgLCBidXQgdGhpcyB1c2VyIGRvZXMgbm90IGhhdmUgUkVQTElDQVRJT05fQVBQTElFUiBwcml2aWxlZ2UuAER5bmFtaWMgcHJpdmlsZWdlICclcycgaXMgbm90IHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2VydmVyLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSBpcyBpbnZhbGlkLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSB0eXBlIGlzIGludmFsaWQuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IGxlbmd0aCBpcyB0b28gbG9uZy4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgdHlwZSBpcyB0b28gbG9uZy4AJXMuAEludmFsaWQgY2hhcmFjdGVyIHNldCAnJXMnIHdhcyBzcGVjaWZpZWQuIEl0IG11c3QgYmUgZWl0aGVyIGNoYXJhY3RlciBzZXQgbmFtZSBvciBjb2xsYXRpb24gbmFtZSBhcyBzdXBwb3J0ZWQgYnkgc2VydmVyLgBJbnZhbGlkIGNoYXJhY3RlciBzZXQgJyVzJyB3YXMgc3BlY2lmaWVkLiBJdCBtdXN0IGJlIGEgY2hhcmFjdGVyIHNldCBuYW1lIGFzIHN1cHBvcnRlZCBieSBzZXJ2ZXIuAEludmFsaWQgY29sbGF0aW9uICclcycgd2FzIHNwZWNpZmllZC4gSXQgbXVzdCBiZSBhIGNvbGxhdGlvbiBuYW1lIGFzIHN1cHBvcnRlZCBieSBzZXJ2ZXIuAEludmFsaWQgZXh0ZW5zaW9uIGFyZ3VtZW50IHR5cGUgJyVzJyB3YXMgc3BlY2lmaWVkLiBSZWZlciB0aGUgTXlTUUwgbWFudWFsIGZvciB0aGUgdmFsaWQgVURGIGV4dGVuc2lvbiBhcmd1bWVudHMgdHlwZS4AVGFibGUgaGFzIG11bHRpcGxlIGNvbnN0cmFpbnRzIHdpdGggdGhlIG5hbWUgJyUtLjE5MnMnLiBQbGVhc2UgdXNlIGNvbnN0cmFpbnQgc3BlY2lmaWMgJyVzJyBjbGF1c2UuAENvbnN0cmFpbnQgJyUtLjE5MnMnIGRvZXMgbm90IGV4aXN0LgBBbHRlcmluZyBjb25zdHJhaW50IGVuZm9yY2VtZW50IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoZSBjb25zdHJhaW50ICclLS4xOTJzJy4gRW5mb3JjZW1lbnQgc3RhdGUgYWx0ZXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIFBSSU1BUlksIFVOSVFVRSBhbmQgRk9SRUlHTiBLRVkgdHlwZSBjb25zdHJhaW50cy4ARWFjaCByb3cgb2YgYSBWQUxVRVMgY2xhdXNlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgY29sdW1uLCB1bmxlc3Mgd2hlbiB1c2VkIGFzIHNvdXJjZSBpbiBhbiBJTlNFUlQgc3RhdGVtZW50LgBBIFZBTFVFUyBjbGF1c2UgY2Fubm90IHVzZSBERUZBVUxUIHZhbHVlcywgdW5sZXNzIHVzZWQgYXMgYSBzb3VyY2UgaW4gYW4gSU5TRVJUIHN0YXRlbWVudC4AVGhlIHF1ZXJ5IGRvZXMgbm90IGNvbXBseSB3aXRoIHZhcmlhYmxlIHJlcXVpcmVfcm93X2Zvcm1hdCByZXN0cmljdGlvbnMuAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJXMgaXMgaW52YWxpZCBmb3IgUkVRVUlSRV9ST1dfRk9STUFULCBtdXN0IGJlIGVpdGhlciAwIG9yIDEuAEZhaWxlZCB0byBhY3F1aXJlIGxvY2sgb24gdXNlciBtYW5hZ2VtZW50IHNlcnZpY2UsIHVuYWJsZSB0byBkZXRlcm1pbmUgaWYgcm9sZSBgJXNgQGAlc2AgaXMgbWFuZGF0b3J5AEZhaWxlZCB0byBhY3F1aXJlIGxvY2sgb24gdXNlciBtYW5hZ2VtZW50IHNlcnZpY2UsIHVuYWJsZSB0byBmZXRjaCBtYW5kYXRvcnkgcm9sZSBsaXN0AExvYWRpbmcgbG9jYWwgZGF0YSBpcyBkaXNhYmxlZDsgdGhpcyBtdXN0IGJlIGVuYWJsZWQgb24gYm90aCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgc2lkZXMARmFpbGVkIHRvIGltcG9ydCAlcyBiZWNhdXNlIHRoZSBDRkcgZmlsZSB2ZXJzaW9uICgldSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCB2ZXJzaW9uICgldSkAT3V0IG9mIG1lbW9yeQBDaGFyYWN0ZXIgc2V0IGNhbiBiZSBzZXQgb25seSBmb3IgdGhlIFVERiBhcmd1bWVudCB0eXBlIFNUUklORy4AQ2hhcmFjdGVyIHNldCBjYW4gYmUgc2V0IG9ubHkgZm9yIHRoZSBVREYgUkVUVVJOIHR5cGUgU1RSSU5HLgBNdWx0aXBsZSBJTlRPIGNsYXVzZXMgaW4gb25lIHF1ZXJ5IGJsb2NrLgBNaXNwbGFjZWQgSU5UTyBjbGF1c2UsIElOVE8gaXMgbm90IGFsbG93ZWQgaW5zaWRlIHN1YnF1ZXJpZXMsIGFuZCBtdXN0IGJlIHBsYWNlZCBhdCBlbmQgb2YgVU5JT04gY2xhdXNlcy4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBibG9ja2VkIGZvciAlcyBkYXkocykgKCVzIGRheShzKSByZW1haW5pbmcpIGR1ZSB0byAldSBjb25zZWN1dGl2ZSBmYWlsZWQgbG9naW5zLgBVTlNJR05FRCBmb3IgdGhlIFlFQVIgZGF0YSB0eXBlIGlzIGRlcHJlY2F0ZWQgYW5kIHN1cHBvcnQgZm9yIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBDbG9uZSBuZWVkcyBtYXhfYWxsb3dlZF9wYWNrZXQgdmFsdWUgdG8gYmUgJXUgb3IgbW9yZS4gQ3VycmVudCB2YWx1ZSBpcyAldQBGYWlsZWQgdG8gJXMgc2RpIGZvciAlcy4lcyBpbiAlcyBkdWUgdG8gbWlzc2luZyByZWNvcmQuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIHVzZXMgY29sdW1uICclLS4xOTJzJywgaGVuY2UgY29sdW1uIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgcnVubmluZzsgcnVuIFNUT1AgR1JPVVBfUkVQTElDQVRJT04gZmlyc3QAU3BlY2lmeWluZyBhbiBPTiBFTVBUWSBjbGF1c2UgYWZ0ZXIgdGhlIE9OIEVSUk9SIGNsYXVzZSBpbiBhIEpTT05fVEFCTEUgY29sdW1uIGRlZmluaXRpb24gaXMgZGVwcmVjYXRlZCBzeW50YXggYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBTcGVjaWZ5IE9OIEVNUFRZIGJlZm9yZSBPTiBFUlJPUiBpbnN0ZWFkLgBUaGUgSU5UTyBjbGF1c2UgaXMgZGVwcmVjYXRlZCBpbnNpZGUgcXVlcnkgYmxvY2tzIG9mIHF1ZXJ5IGV4cHJlc3Npb25zIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIG1vdmUgdGhlIElOVE8gY2xhdXNlIHRvIHRoZSBlbmQgb2Ygc3RhdGVtZW50IGluc3RlYWQuAFRoZSBWQUxVRVMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIEl0IGFsd2F5cyByZXR1cm5zIE5VTEwgaW4gdGhpcyBjb250ZXh0LiBJZiB5b3UgbWVhbnQgdG8gYWNjZXNzIGEgdmFsdWUgZnJvbSB0aGUgVkFMVUVTIGNsYXVzZSBvZiB0aGUgSU5TRVJUIHN0YXRlbWVudCwgY29uc2lkZXIgdXNpbmcgYW4gYWxpYXMgKElOU0VSVCBJTlRPIC4uLiBWQUxVRVMgKC4uLikgQVMgYWxpYXMpIGFuZCByZWZlcmVuY2UgYWxpYXMuY29sIGluc3RlYWQgb2YgVkFMVUVTKGNvbCkgaW4gdGhlIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIGNsYXVzZS4AU1FMX0NBTENfRk9VTkRfUk9XUyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgdHdvIHNlcGFyYXRlIHF1ZXJpZXMgaW5zdGVhZC4ARk9VTkRfUk9XUygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBDT1VOVCgqKSBpbnN0ZWFkLgBObyB2YWx1ZSB3YXMgZm91bmQgYnkgJyUuMTkycycgb24gdGhlIHNwZWNpZmllZCBwYXRoLgBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCBieSAnJS4xOTJzJyBvbiB0aGUgc3BlY2lmaWVkIHBhdGguAEhvc3RuYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAlZCBjaGFyYWN0ZXJzLgBDb2x1bW4gJyUuNjRzLiUuNjRzLiUuNjRzJyBoYXZpbmcgcHJlZml4IGtleSBwYXJ0ICclLjY0cygldSknIGlzIGlnbm9yZWQgYnkgdGhlIHBhcnRpdGlvbmluZyBmdW5jdGlvbi4gVXNlIG9mIHByZWZpeGVkIGNvbHVtbnMgaW4gdGhlIFBBUlRJVElPTiBCWSBLRVkoKSBjbGF1c2UgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgdXNlcm5hbWUgcHJvdmlkZWQgZm9yIHJlY292ZXJ5IGNoYW5uZWwgaXMgZW1wdHkuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgVVNFUiBvcHRpb24gd2FzIG5vdCBwcm92aWRlZCB3aXRoIFBBU1NXT1JEIGZvciByZWNvdmVyeSBjaGFubmVsLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIHBhc3N3b3JkIHByb3ZpZGVkIGZvciB0aGUgcmVjb3ZlcnkgY2hhbm5lbCBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiAzMiBjaGFyYWN0ZXJzLgBTdGF0ZW1lbnQgcmVxdWlyZXMgYSB0cmFuc2Zvcm0gb2YgYSBzdWJxdWVyeSB0byBhIG5vbi1TRVQgb3BlcmF0aW9uIChsaWtlIElOMkVYSVNUUywgb3Igc3VicXVlcnktdG8tTEFURVJBTC1kZXJpdmVkLXRhYmxlKS4gVGhpcyBpcyBub3QgYWxsb3dlZCB3aXRoIG9wdGltaXplciBzd2l0Y2ggJ3N1YnF1ZXJ5X3RvX2Rlcml2ZWQnIG9uAEludmFsaWQgaW5wdXQgdmFsdWUgZm9yIHJlY292ZXJ5IHNvY2tldCBlbmRwb2ludHMgJyVzJy4gUGxlYXNlLCBwcm92aWRlIGEgdmFsaWQsIGNvbW1hIHNlcGFyYXRlZCwgbGlzdCBvZiBlbmRwb2ludHMgKElQOnBvcnQpAFRoZSBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyBvbiBlbmRwb2ludCAnJXMnLiBPbmx5IGVuZHBvaW50cyB0aGF0IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uIGFyZSB2YWxpZCByZWNvdmVyeSBlbmRwb2ludHMuAFZhcmlhYmxlICclLS42NHMnIGNhbm5vdCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclLS4yMDBzJy4gJS0uMjAwcwBPbmx5IEJJTkxPRyBJTlNFUlQsIENPTU1JVCBhbmQgUk9MTEJBQ0sgc3RhdGVtZW50cyBhcmUgYWxsb3dlZCBhZnRlciBDUkVBVEUgVEFCTEUgd2l0aCBTVEFSVCBUUkFOU0FDVElPTiBzdGF0ZW1lbnQuAEZvcmVpZ24ga2V5IGNyZWF0aW9uIGlzIG5vdCBhbGxvd2VkIHdpdGggQ1JFQVRFIFRBQkxFIGFzIFNFTEVDVCBhbmQgQ1JFQVRFIFRBQkxFIHdpdGggU1RBUlQgVFJBTlNBQ1RJT04gc3RhdGVtZW50LgBTVEFSVCBUUkFOU0FDVElPTiBjbGF1c2UgY2Fubm90IGJlIHVzZWQgJS4xMjhzAEludmFsaWQganNvbiBhdHRyaWJ1dGUsIGVycm9yOiAiJXMiIGF0IHBvcyAldTogJyVzJwBTdG9yYWdlIGVuZ2luZSAnJXMnIGRvZXMgbm90IHN1cHBvcnQgRU5HSU5FX0FUVFJJQlVURS4AVGhlIHVzZXIgYXR0cmlidXRlIG11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdABDYW5ub3QgcGVyZm9ybSBvcGVyYXRpb24gYXMgSW5ub0RCIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gUGxlYXNlIHJldHJ5IGFmdGVyIGVuYWJsaW5nIHJlZG8gbG9nIHdpdGggQUxURVIgSU5TVEFOQ0UAQ2Fubm90IHBlcmZvcm0gb3BlcmF0aW9uIGFzIElubm9EQiBpcyBhcmNoaXZpbmcgcmVkbyBsb2cuIFBsZWFzZSByZXRyeSBhZnRlciBzdG9wcGluZyByZWRvIGFyY2hpdmUgYnkgaW52b2tpbmcgaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfc3RvcCgpAE5vdCBlbm91Z2ggcmVzb3VyY2VzIHRvIGNvbXBsZXRlIGxvY2sgcmVxdWVzdC4ARXZhbHVhdGluZyBhIEpTT04gdmFsdWUgaW4gU1FMIGJvb2xlYW4gY29udGV4dCBkb2VzIGFuIGltcGxpY2l0IGNvbXBhcmlzb24gYWdhaW5zdCBKU09OIGludGVnZXIgMDsgaWYgdGhpcyBpcyBub3Qgd2hhdCB5b3Ugd2FudCwgY29uc2lkZXIgY29udmVydGluZyBKU09OIHRvIGEgU1FMIG51bWVyaWMgdHlwZSB3aXRoIEpTT05fVkFMVUUgUkVUVVJOSU5HAFRoZSBmdW5jdGlvbiAlcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjaGFyYWN0ZXIgc2V0ICclcycuAENvbnZlcnNpb24gZnJvbSBjb2xsYXRpb24gJXMgaW50byAlcyBpbXBvc3NpYmxlIGZvciAlcwBTY2hlbWEgJyVzJyBpcyBpbiByZWFkIG9ubHkgbW9kZS4ARmFpbGVkIHRvIGVuYWJsZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBmZWF0dXJlLiBUaGUgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMSBjYW4gb25seSBiZSBzZXQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4ARmFpbGVkIHRvIGVuYWJsZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBmZWF0dXJlLiBUaGUgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMSBjYW4gb25seSBiZSBzZXQgd2hlbiBTT1VSQ0VfQVVUT19QT1NJVElPTiBvcHRpb24gb2YgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBpcyBlbmFibGVkLgBUaGUgQEBHTE9CQUwuR1RJRF9NT0RFID0gJS0uNjRzIGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGlzIGVuYWJsZWQgaS5lLiBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMCBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBpcyBlbmFibGVkIGkuZS4gQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMS4ASW52YWxpZCB1c2Ugb2YgcGFyYW1ldGVycyBpbiAnJXMnAENoYXJhY3RlciBzZXQgJyVzJyBjYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoICclcycgaW4gY2FsbCB0byAlcy4AQ2hhbmdpbmcgJXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiBGYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQuAEludmFsaWQgdGltZSB6b25lIGludGVydmFsOiAnJXMnAENhbm5vdCBjYXN0IHZhbHVlIHRvICVzLgBUaGUgaHlwZXJncmFwaCBvcHRpbWl6ZXIgZG9lcyBub3QgeWV0IHN1cHBvcnQgJyVzJwBUaGUgaHlwZXJncmFwaCBvcHRpbWl6ZXIgaXMgaGlnaGx5IGV4cGVyaW1lbnRhbCBhbmQgaXMgbWVhbnQgZm9yIHRlc3Rpbmcgb25seS4gRG8gbm90IGVuYWJsZSBpdCB1bmxlc3MgeW91IGFyZSBhIE15U1FMIGRldmVsb3Blci4ATm9uZSBvZiB0aGUgbG9nLXNpbmtzIHNlbGVjdGVkIHdpdGggLS1sb2ctZXJyb3Itc2VydmljZXM9Li4uIHByb3ZpZGVzIGEgbG9nLXBhcnNlci4gVGhlIHNlcnZlciB3aWxsIG5vdCBiZSBhYmxlIHRvIG1ha2UgdGhlIHByZXZpb3VzIHJ1bnMnIGVycm9yLWxvZ3MgYXZhaWxhYmxlIGluIHBlcmZvcm1hbmNlX3NjaGVtYS5lcnJvcl9sb2cuAE5vbmUgb2YgdGhlIGxvZy1zaW5rcyBzZWxlY3RlZCBpbiBAQGdsb2JhbC5sb2dfZXJyb3Jfc2VydmljZXMgc3VwcG9ydHMgd3JpdGluZyB0byB0aGUgcGVyZm9ybWFuY2Ugc2NoZW1hLiBUaGUgc2VydmVyIHdpbGwgbm90IGJlIGFibGUgdG8gbWFrZSB0aGUgY3VycmVudCBydW5zJyBlcnJvciBldmVudHMgYXZhaWxhYmxlIGluIHBlcmZvcm1hbmNlX3NjaGVtYS5lcnJvcl9sb2cuIFRvIGNoYW5nZSB0aGlzLCBhZGQgYSBsb2ctc2luayB0aGF0IHN1cHBvcnRzIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEgdG8gQEBnbG9iYWwubG9nX2Vycm9yX3NlcnZpY2VzLgBAQGdsb2JhbC5sb2dfZXJyb3Jfc2VydmljZXMgbGlzdHMgbW9yZSB0aGFuIG9uZSBsb2ctZmlsdGVyIHNlcnZpY2UuIFRoaXMgaXMgZGlzY291cmFnZWQgYXMgaXQgd2lsbCBtYWtlIGl0IGhhcmQgdG8gdW5kZXJzdGFuZCB3aGljaCBydWxlIGluIHdoaWNoIGZpbHRlciBhZmZlY3RlZCBhIGxvZy1ldmVudC4AQ291bGQgbm90IG9wZW4gZmlsZSAnJXMnIGZvciBlcnJvciBsb2dnaW5nJXMlcwBVc2VyICUuMjU2cyBpcyByZWZlcmVuY2VkIGFzIGEgZGVmaW5lciBhY2NvdW50IGluICVzLgBPcGVyYXRpb24gJXMgZmFpbGVkIGZvciAlLjI1NnMgYXMgaXQgaXMgcmVmZXJlbmNlZCBhcyBhIGRlZmluZXIgYWNjb3VudCBpbiAlcy4ARGVjaW1hbCBudW1iZXIgaW4gcmVndWxhciBleHByZXNzaW9uIGlzIHRvbyBsYXJnZS4AVGhlIHZhcmlhYmxlICIlcyIgaGFzIGEgbm9uLWludGVnZXIgYmFzZWQgdHlwZQBSZWFkcyB3aXRoIHNlcmlhbGl6YWJsZSBpc29sYXRpb24vU0VMRUNUIEZPUiBTSEFSRSBhcmUgbm90IHN1cHBvcnRlZCBmb3IgQUNMIHRhYmxlcy4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1cGRhdGVzIGEgdGFibGUgZGVwZW5kaW5nIG9uIEFDTCB0YWJsZSByZWFkIG9wZXJhdGlvbi4gQXMgc3RvcmFnZSBlbmdpbmUgcm93IGxvY2tzIGFyZSBza2lwcGVkIGZvciBBQ0wgdGFibGUsIGl0IG1heSBub3QgaGF2ZSBzYW1lIGVmZmVjdCBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIE1vbml0b3IgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBNb25pdG9yIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBUaGUgUmVwbGljYSBNb25pdG9yIHRocmVhZCBmYWlsZWQgdG8gc3RhcnQuAFJlcGxpY2F0aW9uIGNhbm5vdCBzdGFydCUuMTkycyB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+IGFzIHRoaXMgc2VydmVyIHVzZXMgQEBHTE9CQUwuR1RJRF9NT0RFIDw+IE9OLgBUaGUgb3B0aW9ucyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPiBhbmQgU09VUkNFX0FVVE9fUE9TSVRJT04gPSAxIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+IGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEBAR0xPQkFMLkdUSURfTU9ERSA8PiBPTi4AVGhlIHZhbHVlIG9mIHNxbF9yZXBsaWNhX3NraXBfY291bnRlciB3aWxsIG9ubHkgdGFrZSBlZmZlY3QgZm9yIGNoYW5uZWxzIHJ1bm5pbmcgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA8PiBPRkYuAFVzaW5nIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TIGNyZWF0ZXMgbGltaXRhdGlvbnMgb24gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5IC0geW91IGNhbm5vdCBmYWlsIG92ZXIgYmV0d2VlbiBkb3duc3RyZWFtIGFuZCB1cHN0cmVhbSBzZXJ2ZXJzLiBPbmx5IHVzZSB0aGlzIG9wdGlvbiBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8gZW5hYmxlIEdUSURzIG9uIHRoZSBzb3VyY2UsIGZvciBpbnN0YW5jZSwgYmVjYXVzZSBvZiBsYWNrIG9mIHBlcm1pc3Npb25zLiBJZiBwb3NzaWJsZSwgdXNlIHRoZSBwcm9jZWR1cmUgZm9yIGVuYWJsaW5nIEdUSUQgdHJhbnNhY3Rpb25zIG9ubGluZSBpbnN0ZWFkLCBhcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uAFdBSVRfVU5USUxfU1FMX1RIUkVBRF9BRlRFUl9HVElEUyBjYW5ub3QgYmUgdXNlZCBvbiBhIGNoYW5uZWwgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+AFRoZSBTUUxfQUZURVJfR1RJRFMgb3IgU1FMX0JFRk9SRV9HVElEUyBjbGF1c2VzIGZvciBTVEFSVCBSRVBMSUNBIGNhbm5vdCBiZSB1c2VkIHdoZW4gdGhlIHJlcGxpY2F0aW9uIGNoYW5uZWwgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+LgBSZXBsaWNhdGlvbiAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gd2hlcmUgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUAQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4AVGhlIGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5IGNoYW5uZWwgaXMgc3RpbGwgcnVubmluZywgbW9zdCBsaWtlbHkgaXQgaXMgd2FpdGluZyBmb3IgYSBkYXRhYmFzZS90YWJsZSBsb2NrLCB3aGljaCBpcyBwcmV2ZW50aW5nIHRoZSBjaGFubmVsIGZyb20gc3RvcHBpbmcuIFBsZWFzZSBjaGVjayBkYXRhYmFzZS90YWJsZSBsb2NrcywgaW5jbHVkaW5nIHRoZSBvbmVzIGNyZWF0ZWQgYnkgYmFja3VwIHRvb2xzLgBBVVRPRVhURU5EX1NJWkUgc2hvdWxkIGJlIGEgbXVsdGlwbGUgb2YgJXVNAElubm9EQjogIiVzIiBub3QgYWxsb3dlZCB3aXRoIGdlbmVyYWwgdGFibGVzcGFjZXMAQVVUT0VYVEVORF9TSVpFIHZhbHVlIHNob3VsZCBiZSBiZXR3ZWVuICV1TSBhbmQgJXVNAEFVVE9FWFRFTkRfU0laRSBjbGF1c2UgaXMgbm90IHZhbGlkIGZvciAlcyB0YWJsZXNwYWNlLgBVc2VyIGFjY291bnQgJXMgaXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBncmFudGVkIHRvIHRoZSByb2xlICVzLiBUaGUgR1JBTlQgd291bGQgY3JlYXRlIGEgbG9vcABBIHRhYmxlIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgdmlzaWJsZSBjb2x1bW4uAENvbXByZXNzaW9uIGZhaWxlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZXJyb3IgOiAlcwBUaGUgcGFyYW1ldGVyIG5ldHdvcmtfbmFtZXNwYWNlIGlzIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlLiBQbGVhc2UgdXNlIHRoZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIGNvbW1hbmQgdG8gc2V0IGNoYW5uZWwgbmV0d29ya19uYW1lc3BhY2UgcGFyYW1ldGVyLgBUaGUgY2xpZW50IHdhcyBkaXNjb25uZWN0ZWQgYnkgdGhlIHNlcnZlciBiZWNhdXNlIG9mIGluYWN0aXZpdHkuIFNlZSB3YWl0X3RpbWVvdXQgYW5kIGludGVyYWN0aXZlX3RpbWVvdXQgZm9yIGNvbmZpZ3VyaW5nIHRoaXMgYmVoYXZpb3IuAEludmFsaWQgY2FzdCBmcm9tICVzIHRvICVzLgBJbnZhbGlkIGNhc3QgZnJvbSAlcyB0byAlcy4gQSBwb2x5Z29uIHJpbmcgaXMgaW4gdGhlIHdyb25nIGRpcmVjdGlvbi4AQXJndW1lbnRzIHRvIGZ1bmN0aW9uICVzIGNvbnRhaW5zIGdlb21ldHJpZXMgd2l0aCBkaWZmZXJlbnQgU1JJRHM6ICV1IGFuZCAldS4gQWxsIGdlb21ldHJpZXMgbXVzdCBoYXZlIHRoZSBzYW1lIFNSSUQuAEtleXJpbmcgcmVsb2FkIGZhaWxlZC4gUGxlYXNlIGNoZWNrIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLgBUYWJsZXNwYWNlICclLjE5MnMnIGlzIGludmFsaWQgZm9yIFNESSBvcGVyYXRpb25zLgBWYWx1ZSB0b28gbG9uZyBzZXR0aW5nIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TIG9wdGlvbiB0byBhICVkIGNoYXJzIGxvbmcgc3RyaW5nIGZvciBjaGFubmVsICclLjE5MnMnLgBBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZCBmb3IgY2hhbm5lbCAlcy4gUGxlYXNlIHVzZSBUTFN2MS4yIG9yIGhpZ2hlci4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4AUmVwbGljYXRpb24gJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IHdoZXJlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkAFVuYWJsZSB0byByZXRyaWV2ZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIHZhcmlhYmxlIGR1cmluZyBzZXJ2ZXIgY2hlY2tzIG9uIHJlcGxpY2F0aW9uIG9wZXJhdGlvbnMuAEJvdGggYXVkaXRfbG9nX21heF9zaXplIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBhcmUgc2V0IHRvIG5vbi16ZXJvLiBhdWRpdF9sb2dfbWF4X3NpemUgdGFrZXMgcHJlY2VkZW5jZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgaXMgaWdub3JlZABhdWRpdF9sb2dfcm90YXRlX29uX3NpemUgaXMgbm90IGdyYW51bGFyIGVub3VnaCBmb3IgdGhlIHZhbHVlIG9mIGF1ZGl0X2xvZ19tYXhfc2l6ZSBzdXBwbGllZC4gU2hvdWxkIGJlIGF0IGxlYXN0ICVkIHRpbWVzIHNtYWxsZXIuAENyZWF0ZS9BbHRlciB1c2VyIGhhcyBmYWlsZWQsIENvbmZpZ3VyZWQgdXNlciByZWFsbSBhcyBhdXRoZW50aWNhdGlvbiBzdHJpbmcgaXMgZW1wdHksIFBsZWFzZSBtYWtlIHN1cmUgdG8gY29uZmlndXJlIGF1dGhlbnRpY2F0aW9uIHN0cmluZyBhcyB1c2VyIHJlYWxtLgBDYW5ub3QgaW5zdGFsbCB0aGUgJS4xOTJzIHBsdWdpbiB3aGVuIHRoZSAlLjE5MnMgcGx1Z2luIGlzIGluc3RhbGxlZC4AJWQgZXJyb3IgbG9nZ2luZyBjb21wb25lbnQocykgZmFpbGVkIHRvIGZsdXNoLiBGb3IgZmlsZS1iYXNlZCBsb2dzIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBwYXRoIG9yIHBlcm1pc3Npb25zIG9mIHRoZSBsb2ctZmlsZSBoYXZlIGNoYW5nZWQuIEZhaWx1cmUgdG8gZmx1c2ggZmlsZWQtYmFzZWQgbG9ncyBtYXkgYWZmZWN0IGxvZy1yb3RhdGlvbi4AVGhlIHVudGlsIGNsYXVzZSBTUUxfQUZURVJfTVRTX0dBUFMgaXMgYmVpbmcgdXNlZCBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3aGVuIEdUSURfTU9ERSA9IE9OIGFuZCBTT1VSQ0VfQVVUT19QT1NJVElPTj0xIG1lYW5pbmcgdGhlIHNlcnZlciBkaWQgbm90IGNvbXB1dGUgaW50ZXJuYWxseSB3aGF0IGdhcHMgbWF5IGV4aXN0IGluIHRoZSByZWxheSBsb2cgdHJhbnNhY3Rpb24gZXhlY3V0aW9uLiBUbyBjbG9zZSBhbnkgZXhlY3V0aW9uIGdhcHMgdXNlIGVpdGhlciB0aGUgU1FMX0JFRk9SRV9HVElEUyBvciBTUUxfQUZURVJfR1RJRFMgdW50aWwgY2xhdXNlLgBJbnZhbGlkIHRhcmdldCBmb3IgYXNzaWdubWVudCBpbiBJTlNFUlQgb3IgVVBEQVRFIHN0YXRlbWVudCAnJS4xOTJzJy4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBhIEdyb3VwIFJlcGxpY2F0aW9uIHNlY29uZGFyeSBtZW1iZXIsIGl0IG11c3QgYmUgZG9uZSBvbiB0aGUgZ3JvdXAgcHJpbWFyeS4AVW5hYmxlIHRvIHByb3BhZ2F0ZSB0aGUgU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiB2YWx1ZSBmb3IgY2hhbm5lbCAnJXMnIHRvIGdyb3VwIHJlcGxpY2F0aW9uIG1lbWJlcnMuIFBsZWFzZSByZXRyeSB0aGUgb3BlcmF0aW9uLgBhdWRpdF9sb2dfZm9ybWF0X3VuaXhfdGltZXN0YW1wIGlzIGFwcGxpY2FibGUgb25seSB3aGVuIGF1ZGl0X2xvZ19mb3JtYXQgPSBKU09OLgBJbnZhbGlkIHBsdWdpbiAiJXMiIHNwZWNpZmllZCBhcyAlZCBmYWN0b3IgZHVyaW5nICIlcyIuAElERU5USUZJRUQgQlkgY2xhdXNlIGR1cmluZyAiJXMiIG5vdCBzdXBwb3J0ZWQgZm9yIHBsdWdpbiAiJXMiLgBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciBwbHVnaW4gIiVzIi4AQXV0aGVudGljYXRpb24gcGx1Z2luIHJlcXVpcmVzIHJlZ2lzdHJhdGlvbi4gUGxlYXNlIHJlZmVyIEFMVEVSIFVTRVIgc3ludGF4IG9yIHNldCAtLWZpZG8tcmVnaXN0ZXItZmFjdG9yIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZG8gcmVnaXN0cmF0aW9uLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGV4aXN0cy4gUGxlYXNlIGRvIEFMVEVSIFVTRVIuLi4gRFJPUCAlZCBmYWN0b3IgYmVmb3JlIGRvaW5nIHRoaXMgb3BlcmF0aW9uIE9SIGRvIEFMVEVSIFVTRVIuLi4gTU9ESUZZICVkIGZhY3Rvci4uLiB0byBtb2RpZnkgZXhpc3RpbmcgJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBkb2Vzbid0IGV4aXN0LiBQbGVhc2UgZG8gQUxURVIgVVNFUi4uLiBBREQgJWQgZmFjdG9yLi4uIGJlZm9yZSBkb2luZyB0aGlzIG9wZXJhdGlvbi4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBkb2VzIG5vdCBtYXRjaCBhZ2FpbnN0IGF1dGhlbnRpY2F0aW9uIHBvbGljeS4gUGxlYXNlIHJlZmVyIEBAYXV0aGVudGljYXRpb25fcG9saWN5IHN5c3RlbSB2YXJpYWJsZS4AVGhlIHJlZ2lzdHJhdGlvbiBmb3IgJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBpcyBhbHJlYWR5IGNvbXBsZXRlZC4gWW91IGNhbm5vdCBwZXJmb3JtIHJlZ2lzdHJhdGlvbiBtdWx0aXBsZSB0aW1lcy4AVGhlIHJlZ2lzdHJhdGlvbiBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgZm9yIHVzZXIgJyVzJ0AnJXMnLiBUaGUgb3BlcmF0aW9uIGNhbiBvbmx5IGJlIHBlcmZvcm1lZCBpbiB1c2VyJ3Mgb3duIHNlc3Npb24uAEF1dGhlbnRpY2F0aW9uIHBsdWdpbidzIHJlZ2lzdHJhdGlvbiBmYWlsZWQuACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2Qgc2hvdWxkIGJlIGFkZGVkIGJlZm9yZSAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kLgBBdXRoZW50aWNhdGlvbiBmYWN0b3Igc2hvdWxkIGJlIGRpZmZlcmVudC4AVGhlIG9wZXJhdGlvbiAiJXMiIGNhbm5vdCBiZSBwZXJmb3JtZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGNvbmZpZ3VyZWQgdG8gY29ubmVjdCB3aXRob3V0IGEgcGFzc3dvcmQuAEdUSURfT05MWSBjYW5ub3QgYmUgZW5hYmxlZCBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJy4gWW91IG5lZWQgR1RJRF9NT0RFID0gT04sIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMSBhbmQgUkVRVUlSRV9ST1dfRk9STUFUID0gMS4AUkVRVUlSRV9ST1dfRk9STUFUIGNhbm5vdCBiZSBkaXNhYmxlZCBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3aGVuIEdUSURfT05MWT0xLgBTT1VSQ0VfQVVUT19QT1NJVElPTiBjYW5ub3QgYmUgZGlzYWJsZWQgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2hlbiBHVElEX09OTFk9MS4AV2hlbiBkaXNhYmxpbmcgR1RJRF9PTkxZIGFuZCBTT1VSQ0VfQVVUT19QT1NJVElPTiBGT1IgQ0hBTk5FTCAnJS4xOTJzJyB5b3UgbXVzdCBwcm92aWRlIFNPVVJDRV9MT0dfRklMRSBhbmQgU09VUkNFX0xPR19QT1MgYXMgc291cmNlIHBvc2l0aW9ucyBhcmUgaW52YWxpZC4AV2hlbiBkaXNhYmxpbmcgU09VUkNFX0FVVE9fUE9TSVRJT04gRk9SIENIQU5ORUwgJyUuMTkycycgeW91IG11c3QgcHJvdmlkZSBTT1VSQ0VfTE9HX0ZJTEUgYW5kIFNPVVJDRV9MT0dfUE9TIGFzIHNvdXJjZSBwb3NpdGlvbnMgYXJlIGludmFsaWQuAFdoZW4gY29uZmlndXJpbmcgYSBncm91cCByZXBsaWNhdGlvbiBjaGFubmVsIHlvdSBtdXN0IGRvIGl0IHdoZW4gR1RJRF9NT0RFID0gT04uAFJlcGxpY2F0aW9uIGNhbm5vdCBzdGFydCUuMTkycyB3aXRoIEdUSURfT05MWSA9IDEgYXMgdGhpcyBzZXJ2ZXIgdXNlcyBAQEdMT0JBTC5HVElEX01PREUgPD4gT04uAFRoZSByZXBsaWNhdGlvbiBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBtYXkgYmUgb3V0LW9mLWRhdGUgb24gY2hhbm5lbCAnJS4xOTJzJywgZHVlIHRvIHRoZSB1c2Ugb2YgR1RJRF9PTkxZPTEuIFRoZSBvdXQtb2YtZGF0ZSBwb3NpdGlvbnMgY2FuIHN0aWxsIGJlIHVzZWQgaW4gc29tZSBjYXNlcyBzbywgaW4gb3JkZXIgdG8gdXBkYXRlIHRoZW0sIHdlIHN1Z2dlc3QgdGhhdCB5b3Ugc3RhcnQgdGhlIHJlcGxpY2F0aW9uIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiwgd2hpY2ggd2lsbCBzZXQgdGhlIHBvc2l0aW9ucyB0byB2YWxpZCB2YWx1ZXMuAFNTTCBmaXBzIG1vZGUgZXJyb3I6ICVzACVzPSVsbHUgaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWyVsbHUsJWxsdV0uICVsbHUgd2lsbCBiZSB1c2VkLgBNQVRDSCBkb2VzIG5vdCBzdXBwb3J0IFJPTExVUCBjb2x1bW5zLgBNaXNzaW5nIGxvY2FsZSByZXNvdXJjZSBpbiByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeS4AUmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkgdXNlZCBkZWZhdWx0IChyb290KSBsb2NhbGUuAE1pc3NpbmcgZGF0YSBmaWxlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0ICVzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgJXMgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4AVGhlICVzIHdhcyBjYWxsZWQgd2hlbiB0aGVyZSB3YXMgYWxyZWFkeSBhbm90aGVyIGNvbmN1cnJlbnQgY2FsbCB0byB0aGlzIHByb2NlZHVyZS4gTm8gYWN0aW9uIHdhcyB0YWtlbi4gV2FpdCBmb3Igb3RoZXIgY2FsbHMgdG8gJXMgdG8gZmluaXNoIGJlZm9yZSByZXRyeWluZy4AQ29ubmVjdGlvbiBjbG9zZWQuIEdsb2JhbCBjb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBDb25uZWN0aW9uIGNsb3NlZC4gQ29ubmVjdGlvbiBtZW1vcnkgbGltaXQgJWxsdSBieXRlcyBleGNlZWRlZC4gQ29uc3VtZWQgJWxsdSBieXRlcy4ATmVlZCB0byByZWJ1aWxkIHRoZSB0YWJsZSB0byBjaGFuZ2UgY29sdW1uIHR5cGUAVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBsb2FkYWJsZSBmdW5jdGlvbiAoVURGKS4gVG8gaW52b2tlIHRoZSBzdG9yZWQgZnVuY3Rpb24sIGl0IGlzIG5lY2Vzc2FyeSB0byBxdWFsaWZ5IGl0IHdpdGggdGhlIHNjaGVtYSBuYW1lLgBDb3VsZCBub3QgcHVyZ2UgYmluYXJ5IGxvZ3Mgc2luY2UgYW5vdGhlciBzZXNzaW9uIGlzIGV4ZWN1dGluZyBMT0NLIElOU1RBTkNFIEZPUiBCQUNLVVAuIFdhaXQgZm9yIHRoYXQgc2Vzc2lvbiB0byByZWxlYXNlIHRoZSBsb2NrLgBUb28gbWFueSB3aW5kb3dzIGluIFNFTEVDVDogJWQuIE1heGltdW0gYWxsb3dlZCBpcyAlZC4gVXNlIG5hbWVkIHdpbmRvd3MgdG8gc2hhcmUgd2luZG93cyBiZXR3ZWVuIHdpbmRvdyBmdW5jdGlvbnMuACVzAENvbW1lbnQgZm9yICVzICclcycgY29udGFpbnMgYW4gaW52YWxpZCAlcyBjaGFyYWN0ZXIgc3RyaW5nOiAnJS42NHMnLgBEZWZpbml0aW9uIG9mICVzICclLS4xOTJzLiUtLjE5MnMnIGNvbnRhaW5zIGFuIGludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJy4AQ2FuJ3QgZXhlY3V0ZSB0aGUgZ2l2ZW4gY29tbWFuZCB3aGVuIEBAU0VTU0lPTi5HVElEX05FWFQgPT0gJ1VVSUQ6TlVNQkVSJy4AWEE6IFRlbXBvcmFyeSB0YWJsZXMgY2Fubm90IGJlIGFjY2Vzc2VkIGluc2lkZSBYQSB0cmFuc2FjdGlvbnMgd2hlbiB4YV9kZXRhY2hfb25fcHJlcGFyZT1PTgBNYXhpbXVtIHJvdyB2ZXJzaW9ucyByZWFjaGVkIGZvciB0YWJsZSAlcy4gTm8gbW9yZSBjb2x1bW5zIGNhbiBiZSBhZGRlZCBvciBkcm9wcGVkIGluc3RhbnRseS4gUGxlYXNlIHVzZSBDT1BZL0lOUExBQ0UuAENvbHVtbiBjYW4ndCBiZSBhZGRlZCB3aXRoIEFMR09SSVRITT1JTlNUQU5UIGFzIGFmdGVyIHRoaXMgbWF4IHBvc3NpYmxlIHJvdyBzaXplIGNyb3NzZXMgbWF4IHBlcm1pc3NpYmxlIHJvdyBzaXplLiBUcnkgQUxHT1JJVEhNPUlOUExBQ0UvQ09QWS4AQWxsIHF1ZXJpZXMgaGF2ZSBiZWVuIGJsb2NrZWQgd2hpbGUgZnVuY3Rpb24gJ2dyb3VwX3JlcGxpY2F0aW9uX3NldF9hc19wcmltYXJ5KCknIGlzIGV4ZWN1dGluZy4gUGxlYXNlIHJlZmVyIHRpbWVvdXQgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uICdncm91cF9yZXBsaWNhdGlvbl9zZXRfYXNfcHJpbWFyeSgpJy4ARGVsaW1pdGVyICclcycgaW4gcG9zaXRpb24gJWQgaW4gZGF0ZXRpbWUgdmFsdWUgJyVzJyBhdCByb3cgJWQgaXMgZGVwcmVjYXRlZC4gUHJlZmVyIHRoZSBzdGFuZGFyZCAnJWMnLgBEZWxpbWl0ZXIgJyVzJyBpbiBwb3NpdGlvbiAlZCBpbiBkYXRldGltZSB2YWx1ZSAnJXMnIGF0IHJvdyAlZCBpcyBzdXBlcmZsdW91cyBhbmQgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHJlbW92ZS4AQ2Fubm90IHBlcnNpc3QgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZSAnJXMnIGJlY2F1c2Uga2V5cmluZyBjb21wb25lbnQgc3VwcG9ydCBpcyB1bmF2YWlsYWJsZS4AU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZSAnJXMnIHdhcyBwZXJzaXN0ZWQgd2l0aG91dCBlbmNyeXB0aW9uLiBDb25zaWRlciByZXN0YXJ0aW5nIHNlcnZlciB3aXRoIGtleXJpbmcgY29tcG9uZW50IHN1cHBvcnQgdG8gcGVyc2lzdCBTRU5TSVRJVkUgdmFyaWFibGVzIHNlY3VyZWx5LgBUcmlnZ2VyICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgdGFibGUgJyUtLjE5MnMnLiclLS4xOTJzJy4AVHJpZ2dlciAnJS0uMTkycycuJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzIG9uIGEgZGlmZmVyZW50IHRhYmxlLiBUaGUgJ0lGIE5PVCBFWElTVFMnIGNsYXVzZSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgdHJpZ2dlcnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzYW1lIHRhYmxlLgBUaGlzIGZ1bmN0aW9uICclLS4xOTJzJyBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG5hdGl2ZSBmdW5jdGlvbi4gVGhlICdJRiBOT1QgRVhJU1RTJyBjbGF1c2UgaXMgbm90IHN1cHBvcnRlZCB3aGlsZSBjcmVhdGluZyBhIGxvYWRhYmxlIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhIG5hdGl2ZSBmdW5jdGlvbi4AU0VUIFBBU1NXT1JEIGhhcyBubyBzaWduaWZpY2FuY2UgZm9yIHVzZXIgJyVzJ0AnJXMnIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2QgdXNlZCBkb2Vzbid0IHN0b3JlIGF1dGhlbnRpY2F0aW9uIGRhdGEgaW4gdGhlIE15U1FMIHNlcnZlci4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIEFMVEVSIFVTRVIgaW5zdGVhZCBpZiB5b3Ugd2FudCB0byBjaGFuZ2UgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycy4AQ2Fubm90IHJlY292ZXIgZnJvbSBkZXRlY3Rfb25seSBkb3VibGV3cml0ZSBidWZmZXIgYXMgcGFnZSAldSBmcm9tIGJhdGNoIGRvdWJsZXdyaXRlIGZpbGUgaXMgY29ycnVwdGVkLgBEYXRhYmFzZSBwYWdlIGNvcnJ1cHRpb24gb2YgdGFibGVzcGFjZSAlcyBzcGFjZV9pZDogJXUgcGFnZV9udW06ICV1LiBDYW5ub3QgcmVjb3ZlciBpdCBmcm9tIHRoZSBkb3VibGV3cml0ZSBidWZmZXIgYmVjYXVzZSBpdCB3YXMgd3JpdHRlbiBpbiBkZXRlY3Rfb25seS1kb3VibGV3cml0ZSBtb2RlLgBMYXRpdHVkZSBvZiBvcmlnaW4gbXVzdCBiZSB3aXRoaW4gWy05MCwgOTBdIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdC4ATG9uZ2l0dWRlIG9mIG9yaWdpbiBtdXN0IGJlIHdpdGhpbiAoLTE4MCwgMTgwXSBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgU1JJRCAldSBjb250YWlucyB1bnVzZWQgcHJvamVjdGlvbiBwYXJhbWV0ZXIgIiVzIi4ARmFpbGVkIHRvIGdlbmVyYXRlIGludmlzaWJsZSBwcmltYXJ5IGtleS4gQ29sdW1uICdteV9yb3dfaWQnIGFscmVhZHkgZXhpc3RzLgBGYWlsZWQgdG8gZ2VuZXJhdGUgaW52aXNpYmxlIHByaW1hcnkga2V5LiBBdXRvLWluY3JlbWVudCBjb2x1bW4gYWxyZWFkeSBleGlzdHMuAEFsdGVyaW5nIGdlbmVyYXRlZCBpbnZpc2libGUgcHJpbWFyeSBrZXkgY29sdW1uICdteV9yb3dfaWQnIGlzIG5vdCBhbGxvd2VkLgBQbGVhc2UgZHJvcCBwcmltYXJ5IGtleSBjb2x1bW4gdG8gYmUgYWJsZSB0byBkcm9wIGdlbmVyYXRlZCBpbnZpc2libGUgcHJpbWFyeSBrZXkuAEdlbmVyYXRpbmcgYW4gaW52aXNpYmxlIHByaW1hcnkga2V5IGZvciBhIHRhYmxlIGNyZWF0ZWQgdXNpbmcgQ1JFQVRFIFRBQkxFIC4uLiBTRUxFQ1QgLi4uIGlzIGRpc2FsbG93ZWQgd2hlbiBiaW5sb2dfZm9ybWF0PVNUQVRFTUVOVC4gSXQgY2Fubm90IGJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgU0VMRUNUIHJldHJpZXZlcyByb3dzIGluIHRoZSBzYW1lIG9yZGVyIG9uIHNvdXJjZSBhbmQgcmVwbGljYS4gVGhlcmVmb3JlLCBpdCBjYW5ub3QgYmUgZ3VhcmFudGVlZCB0aGF0IHRoZSB2YWx1ZSBnZW5lcmF0ZWQgZm9yIHRoZSBnZW5lcmF0ZWQgaW1wbGljaXQgcHJpbWFyeSBrZXkgY29sdW1uIHdpbGwgYmUgdGhlIHNhbWUgb24gc291cmNlIGFuZCByZXBsaWNhIGZvciBhbGwgcm93cy4gVXNlIGJpbmxvZ19mb3JtYXQ9Uk9XIG9yIE1JWEVEIHRvIGV4ZWN1dGUgdGhpcyBzdGF0ZW1lbnQuAFRoZSBvcHRpb24gZXhwaXJlX2xvZ3NfZGF5cyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIG9wdGlvbiBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcy4gVG8gc2V0IG9uZSwgZmlyc3QgdW5zZXQgdGhlIG90aGVyIGJ5IHNldHRpbmcgaXQgdG8gMC4AUmVjdXJzaXZlIHRhYmxlIHJlZmVyZW5jZSBpbiBFWENFUFQgb3IgSU5URVJTRUNUIG9wZXJhbmQgaXMgbm90IGFsbG93ZWQuAEVycm9yIHdoZW4gdHJ5aW5nIHRvIGZldGNoIGluZm9ybWF0aW9uIGZyb20gc2VjdXJpdHkgY29udGV4dCBvYmplY3QsIHdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgdGhlIHNlcnZlci4ARXJyb3IgaW4gY29tbWFuZCBzZXJ2aWNlIGJhY2tlbmQgaW50ZXJmYWNlLCBiZWNhdXNlIG9mIDogIiVzIgBUaGUgUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciBjaGFubmVsICclLjE5MnMnIHdvdWxkIG5lZWQgRklMRSBwcml2aWxlZ2UgdG8gZXhlY3V0ZSBhIExPQUQgREFUQSBJTkZJTEUgc3RhdGVtZW50IHJlcGxpY2F0ZWQgaW4gc3RhdGVtZW50IGZvcm1hdC4gQ29uc2lkZXIgdXNpbmcgYmlubG9nX2Zvcm1hdD1ST1cgb24gc291cmNlLiBJZiB0aGUgcmVwbGljYXRlZCBldmVudHMgYXJlIHRydXN0ZWQsIHJlY292ZXIgZnJvbSB0aGUgZmFpbHVyZSBieSB0ZW1wb3JhcmlseSBncmFudGluZyBGSUxFIHRvIHRoZSBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIuAFRoZSAnU0VUIEdMT0JBTCBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzPSVzJyBjb21tYW5kIGVuY291bnRlcmVkIGEgZmFpbHVyZS4gJXMAVXNpbmcgJXMgYXMgdW5xdW90ZWQgaWRlbnRpZmllciBpcyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHF1b3RlcyBvciByZW5hbWUgdGhlIGlkZW50aWZpZXIuAE1heCBudW1iZXIgb2YgZHVwbGljYXRlIHJvd3MgaW4gSU5URVJTRUNUIEFMTCBleGNlZWRlZC4AUXVlcnkgdGhyZWFkcyBjb3VudCgldSkgZXhjZWVkcyB0cmFuc2FjdGlvbiB0aHJlYWRzIGxpbWl0KCV1KSBwZXIgZ3JvdXAuIFBsZWFzZSB1c2UgcXVlcnkgdGhyZWFkcyBjb3VudCBwZXIgZ3JvdXAgc21hbGxlciBvciBlcXVhbCB0byBtYXggdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCBwZXIgZ3JvdXAASW52YWxpZCB0aW1lc3RhbXAgZm9ybWF0IGluICVzIHVkZgBTSEFQRV9QUkVESUNUSU9OIFVERiAlcyBnb3QgZXJyb3IgYmVjYXVzZSBvZiAlcy4ASGVpZ2h0IHBhcmFtZXRlciBtdXN0IGJlIG5vbiBuZWdhdGl2ZS4AU2NhbGluZyBwYXJhbWV0ZXIgbXVzdCBiZSBub24gbmVnYXRpdmUuAFpvbmUgd2lkdGggcGFyYW1ldGVyIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEtNjAuAExhdGl0dWRlIG9mIG9yaWdpbiBtdXN0IGJlICstOTAgZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LCBpbiBQb2xhciBTdGVyZW9ncmFwaGljICh2YXJpYW50IEEpIHByb2plY3Rpb24gbWV0aG9kIChFUFNHOjk4MTApLgBUaGUgY2xpZW50IGlzIHVzaW5nIGEgZGVwcmVjYXRlZCBDTElFTlRfTk9fU0NIRU1BIGNsaWVudCBvcHRpb24uIENMSUVOVF9OT19TQ0hFTUEgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFRhYmxlICclLS4xOTJzJyBpcyBub3QgZW1wdHkuAFRhYmxlICclLS4xOTJzJyBoYXMgbm8gcHJpbWFyeSBrZXkuAFRhYmxlICclLS4xOTJzJyBpcyBpbiBhIHNoYXJlZCB0YWJsZXNwYWNlLgBUYWJsZSAnJS0uMTkycycgaGFzIGluZGV4ZXMgb3RoZXIgdGhhbiBwcmltYXJ5IGtleS4AW0lOIFBSSU1BUlkgS0VZIE9SREVSXSBzcGVjaWZpZWQgYnV0IGRhdGEgbm90IHNvcnRlZDogTE9BRCBCVUxLIERBVEEgaW50byB0YWJsZSAnJS0uMTkycycgZmFpbGVkOiAlcwBCdWxrIGV4ZWN1dG9yIGVycm9yOiAlcwBCdWxrIHJlYWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBsaWJjdXJsAEJ1bGsgcmVhZGVyIGdvdCBsaWJjdXJsIGVycm9yOiAlcwBCdWxrIHJlYWRlciBnb3QgZXJyb3IgcmVzcG9uc2UgZnJvbSBzZXJ2ZXI6ICVsZABCdWxrIHJlYWRlciBnb3QgZXJyb3IgaW4gY29tbXVuaWNhdGlvbiB3aXRoIHNvdXJjZSBzZXJ2ZXIsIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4AQnVsayBsb2FkZXIgZmFpbGVkLCBteXNxbF9sb2FkLT5sb2FkIHJldHVybmVkIGFuIGVycm9yLCBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuAENTViBjb2x1bW4gdG9vIGJpZyBmb3IgbGVmdG92ZXIgYnVmZmVyLgBCdWxrIGxvYWRlciBjb21wb25lbnQgZXJyb3I6ICVzAFRoZSBmaXJzdCBmaWxlIGJlaW5nIGxvYWRlZCBjb250YWluZWQgbGVzcyBsaW5lcyB0aGFuIHRoZSBpZ25vcmUgY2xhdXNlAE1pc3NpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBBZGQgT1BUSU9OQUxMWSB0byB0aGUgRU5DTE9TRUQgQlkgY2xhdXNlIHRvIGFsbG93IHRoaXMgaW5wdXQuAFRoZSBudW1iZXIgb2YgaW5wdXQgY29sdW1ucyB0aGF0IG5lZWQgdG8gYmUgYnVmZmVyZWQgZm9yIHBhcnNpbmcgZXhjZWVkZWQgcHJlZGVmaW5lZCBidWZmZXIgbWF4IHNpemUgZm9yIGZpbGUgJyVzJy4AVGhlIGNvbHVtbiBkYXRhIHRoYXQgbmVlZGVkIHRvIGJlIGNvcGllZCBkdWUgdG8gZXNjYXBlZCBjaGFyYWN0ZXJzIGV4Y2VlZGVkIHRoZSBzaXplIG9mIHRoZSBpbnRlcm5hbCBjb3B5IGJ1ZmZlciBmb3IgZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgcm93IHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIERhdGEgZm9yIHNvbWUgY29sdW1ucyBpcyBtaXNzaW5nLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgZW5kaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIE5VTEwgZXNjYXBlIChOKSBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGNvbHVtbiB0ZXJtaW5hdG9yIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJyByZXN1bHRpbmcgaW4gaW5jb21wbGV0ZSBlc2NhcGUgc2VxdWVuY2UuAExPQUQgQlVMSyBEQVRBIGludG8gdGFibGUgJyUtLjE5MnMnIGZhaWxlZDogJXMASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUtLjE5MnMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycATlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnAE9uIGEgR3JvdXAgUmVwbGljYXRpb24gY2hhbm5lbCwgc2V0dGluZyBSRVFVSVJFX1RBQkxFX1BSSU1BUllfS0VZX0NIRUNLIHRvICdHRU5FUkFURScgaXMgbm90IGFsbG93ZWQuAENhbm5vdCBjaGFuZ2UgdGhlICclcycgc3lzdGVtIHZhcmlhYmxlIGluIHJlYWQtb25seSBtb2RlLgBDb2x1bW4gY2FuJ3QgYmUgYWRkZWQgb3IgZHJvcHBlZCB3aXRoIEFMR09SSVRITT1JTlNUQU5UIGFzIGVpdGhlciBtYXggcG9zc2libGUgcm93IHNpemUgYWxyZWFkeSBjcm9zc2VzIG1heCBwZXJtaXNzaWJsZSByb3cgc2l6ZSBvciBtYXkgY3Jvc3MgaXQgYWZ0ZXIgYWRkLiBUcnkgQUxHT1JJVEhNPUlOUExBQ0UvQ09QWS4AQ29sdW1uIGNhbid0IGJlIGFkZGVkIHRvICclcycgd2l0aCBBTEdPUklUSE09SU5TVEFOVCBhbnltb3JlLiBQbGVhc2UgdHJ5IEFMR09SSVRITT1JTlBMQUNFL0NPUFkuAEZhaWxlZCB0byBzZXQgcGVyc2lzdGVkIG9wdGlvbnMuAFRoZSB2YWx1ZSBzdXBwbGllZCBmb3IgJXMgaW4gdGhlIFNFVCBsaXN0IGNhbm5vdCBiZSBudWxsAFRoZSBhc3NpZ25tZW50IG9mICVzIGluIFNFVCBkb2Vzbid0IG1hdGNoIGFueSBvZiB0aGUgdmFyaWFibGVzIHJlZ2lzdGVyZWQgYnkgdGhlIGNvbXBvbmVudChzKQAnJXMnIGlzIGEgdXNlciBkZWZpbmVkIGNvbGxhdGlvbi4gVXNlciBkZWZpbmVkIGNvbGxhdGlvbnMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBhIGNvbXBpbGVkIGNvbGxhdGlvbiBpbnN0ZWFkLgBVc2VyLWxldmVsIGxvY2sgbmFtZSAnJS0uMTkycycgc2hvdWxkIG5vdCBleGNlZWQgJWQgY2hhcmFjdGVycy4ASW1tZWRpYXRlbHkgc3RhcnRpbmcgdGhlIHZlcnNpb24gY29tbWVudCBhZnRlciB0aGUgdmVyc2lvbiBudW1iZXIgaXMgZGVwcmVjYXRlZCBhbmQgbWF5IGNoYW5nZSBiZWhhdmlvciBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgaW5zZXJ0IGEgd2hpdGUtc3BhY2UgY2hhcmFjdGVyIGFmdGVyIHRoZSB2ZXJzaW9uIG51bWJlci4AVGhlIG5ldyBwYXNzd29yZCBtdXN0IGhhdmUgYXQgbGVhc3QgJyV1JyBjaGFyYWN0ZXJzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBvbGQgcGFzc3dvcmQuIEl0IGhhcyBvbmx5ICcldScgY2hhcmFjdGVyKHMpIGRpZmZlcmVudC4gRm9yIHRoaXMgY29tcGFyaXNvbiwgdXBwZXJjYXNlIGxldHRlcnMgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzIGFyZSBjb25zaWRlcmVkIHRvIGJlIGVxdWFsLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAlcwBQYXJzZXIgc2F3OiAlcwBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBib290c3RyYXAgKGVycm5vOiAlZCkAVHJpZ2dlciBmb3IgdGFibGUgJyVzJy4nJXMnOiBpbnZhbGlkICVzIHZhbHVlICglcykuAFdyb25nIHRyZWU6ICVzAEVycm9yOiBJbnZhbGlkICVzAFNraXAgcmUtcG9wdWxhdGluZyBjb2xsYXRpb25zIGFuZCBjaGFyYWN0ZXIgc2V0cyB0YWJsZXMgaW4gJXMlc3JlYWQtb25seSBtb2RlLgBVc2luZyBkYXRhIGRpY3Rpb25hcnkgd2l0aCB2ZXJzaW9uICclZCcuAEluc3RhbGxlZCBkYXRhIGRpY3Rpb25hcnkgd2l0aCB2ZXJzaW9uICVkAERhdGEgRGljdGlvbmFyeSB2ZXJzaW9uICclZCcgbm90IHN1cHBvcnRlZC4ARmFpbGVkIHRvIHNldCBzeXNsb2cgZmFjaWxpdHkgdG8gIiVzIiwgc2V0dGluZyB0byAiJXMiICglZCkgaW5zdGVhZC4AQ2Fubm90IG9wZW4gJXM7IGNoZWNrIHByaXZpbGVnZXMsIG9yIHJlbW92ZSBzeXNldmVudGxvZyBmcm9tIC0tbG9nLWVycm9yLXNlcnZpY2VzIQAgZWl0aGVyIHJlc3RhcnQgdGhlIHF1ZXJ5IGxvZ2dpbmcgYnkgdXNpbmcgIlNFVCBHTE9CQUwgU0xPV19RVUVSWV9MT0c9T04iIG9yACBlaXRoZXIgcmVzdGFydCB0aGUgcXVlcnkgbG9nZ2luZyBieSB1c2luZyAiU0VUIEdMT0JBTCBHRU5FUkFMX0xPRz1PTiIgb3IARmFpbGVkIHRvIHdyaXRlIHRvICVzOiAlcwBXaGlsZSBpbml0aWFsaXppbmcgZHVtcCB0aHJlYWQgZm9yIHJlcGxpY2Egd2l0aCAlcyA8JXM+LCBmb3VuZCBhIHpvbWJpZSBkdW1wIHRocmVhZCB3aXRoIHRoZSBzYW1lICVzLiBTb3VyY2UgaXMga2lsbGluZyB0aGUgem9tYmllIGR1bXAgdGhyZWFkKCV1KS4AR3RpZCB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgb3BlbmVkLgBTeXN0ZW0gc2NoZW1hIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdC4ARXJyb3IgaW4gaW5pdGlhbGl6aW5nIGRpY3Rpb25hcnksIHVwZ3JhZGUgd2lsbCBkbyBhIGNsZWFudXAgYW5kIGV4aXQAVmlldyAnJXMnLiclcyc6IHVua25vd24gY2hhcnNldCBuYW1lIGFuZC9vciBjb2xsYXRpb24gbmFtZSAoY2xpZW50OiAnJXMnOyBjb25uZWN0aW9uOiAnJXMnKS4ARXJyb3IgaW4gYWxsb2NhdGluZyBtZW1vcnkgZm9yIGNoYXJhY3RlciBzZXQgbmFtZSBmb3IgdmlldyAlcy4lcy4ARGF0YSBEaWN0aW9uYXJ5IGluaXRpYWxpemF0aW9uIGZhaWxlZC4ARmFpbGVkIHRvIHVwZGF0ZSBwbHVnaW4gbWV0YWRhdGEgaW4gZGljdGlvbmFyeSB0YWJsZXMuAEZhaWxlZCB0byBQb3B1bGF0ZSBERCB0YWJsZXMuAEVycm9yIGluIENyZWF0aW5nIFZpZXcgJXMuJXMAVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gQ2Fubm90IGZpbmQgdGhlIG1ldGEgZGF0YSBmb3IgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlICclcycuAERpY3Rpb25hcnkgY2FjaGUgbm90IGVtcHR5IGF0IHNodXRkb3duLgBEaWN0aW9uYXJ5IG9iamVjdHMgdXNlZCBidXQgbm90IHJlbGVhc2VkLgBEaWN0aW9uYXJ5IG9iamVjdHMgbGVmdCBpbiBkZWZhdWx0IHJlbGVhc2VyLgBEaWN0aW9uYXJ5IG9iamVjdCBhdXRvIHJlbGVhc2VyIG5vdCBkZWxldGVkAEVycm9yOiBVbmFibGUgdG8gY3JlYXRlIHByaW1hcnkgb2JqZWN0IGtleQBFcnJvcjogVW5hYmxlIHRvIGNyZWF0ZSBvYmplY3Qga2V5AENhbid0IGNyZWF0ZSBoYW5kbGVfbWFuYWdlciB0aHJlYWQgKGVycm5vPSAlZCkASXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUgcmVsYXkgbG9nJ3MgcmVwb3NpdG9yeSBiZWNhdXNlIHRoZXJlIGFyZSB3b3JrZXJzJyByZXBvc2l0b3JpZXMgd2l0aCBnYXBzLiBQbGVhc2UsIGZpeCB0aGUgZ2FwcyBmaXJzdCBiZWZvcmUgZG9pbmcgc3VjaCBjaGFuZ2UuAG9wdGlvbiAnZW5mb3JjZS1ndGlkLWNvbnNpc3RlbmN5JzogdmFsdWUgJyVzJyB3YXMgbm90IHJlY29nbml6ZWQuIFNldHRpbmcgZW5mb3JjZS1ndGlkLWNvbnNpc3RlbmN5IHRvIE9GRi4AQ2hhbmdlZCBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgZnJvbSAlcyB0byAlcy4AQ2hhbmdlZCBHVElEX01PREUgZnJvbSAlcyB0byAlcy4AJXMgaXMgc2V0IHRvIGEgZGlzYWJsZWQgc3RvcmFnZSBlbmdpbmUgJXMuAERlYnVnIHN5bmMgcG9pbnRzIGhpdDogICAgICAgICAgICAgICAgICAgJTIycwBEZWJ1ZyBzeW5jIHBvaW50cyBleGVjdXRlZDogICAgICAgICAgICAgICUyMnMARGVidWcgc3luYyBwb2ludHMgbWF4IGFjdGl2ZSBwZXIgdGhyZWFkOiAlMjJzAERlYnVnIFN5bmMgRmFjaWxpdHkgZGlzYWJsZWQgZHVlIHRvIGxhY2sgb2YgbWVtb3J5LgBDYW4ndCBpbml0IHRjIGxvZwBFdmVudCBTY2hlZHVsZXI6IENhbid0IGluaXRpYWxpemUgdGhlIGV4ZWN1dGlvbiBxdWV1ZQBFdmVudCBTY2hlZHVsZXI6IFB1cmdpbmcgdGhlIHF1ZXVlLiAldSBldmVudHMARXZlbnQgU2NoZWR1bGVyOiBMYXN0IGV4ZWN1dGlvbiBvZiAlcy4lcy4gJXMAJSpzAEV2ZW50IFNjaGVkdWxlcjogWyVzXS5bJXMuJXNdIGV2ZW50IGV4ZWN1dGlvbiBmYWlsZWQuAEV2ZW50IFNjaGVkdWxlcjogQ2Fubm90IGluaXRpYWxpemUgdGhlIHNjaGVkdWxlciB0aHJlYWQARXZlbnQgU2NoZWR1bGVyOiBTdG9wcGVkAEV2ZW50IHNjaGVkdWxlcjogRmFpbGVkIHRvIHN0YXJ0IHNjaGVkdWxlciwgQ2FuIG5vdCBjcmVhdGUgdGhyZWFkIGZvciBldmVudCBzY2hlZHVsZXIgKGVycm5vPSVkKQBFdmVudCBTY2hlZHVsZXI6IFdhaXRpbmcgZm9yIHRoZSBzY2hlZHVsZXIgdGhyZWFkIHRvIHJlcGx5AEV2ZW50IFNjaGVkdWxlcjogc2NoZWR1bGVyIHRocmVhZCBzdGFydGVkIHdpdGggaWQgJXUARXZlbnQgU2NoZWR1bGVyOiBTZXJpb3VzIGVycm9yIGR1cmluZyBnZXR0aW5nIG5leHQgZXZlbnQgdG8gZXhlY3V0ZS4gU3RvcHBpbmcARXZlbnRfc2NoZWR1bGVyOjpleGVjdXRlX3RvcDogQ2FuIG5vdCBjcmVhdGUgZXZlbnQgd29ya2VyIHRocmVhZCAoZXJybm89JWQpLiBTdG9wcGluZyBldmVudCBzY2hlZHVsZXIARXZlbnQgU2NoZWR1bGVyOiBLaWxsaW5nIHRoZSBzY2hlZHVsZXIgdGhyZWFkLCB0aHJlYWQgaWQgJXUASVAgYWRkcmVzcyAnJXMnIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJXMASG9zdCBuYW1lICclcycgY291bGQgbm90IGJlIHJlc29sdmVkOiAlcwBJUCBhZGRyZXNzICclcycgaGFzIGJlZW4gcmVzb2x2ZWQgdG8gdGhlIGhvc3QgbmFtZSAnJXMnLCB3aGljaCByZXNlbWJsZXMgSVB2NC1hZGRyZXNzIGl0c2VsZi4ASG9zdG5hbWUgJyVzJyBkb2VzIG5vdCByZXNvbHZlIHRvICclcycuAEhvc3RuYW1lICclcycgaGFzIHRoZSBmb2xsb3dpbmcgSVAgYWRkcmVzc2VzOgAgLSAlcwBEZWZpbmVyIGNsYXVzZSBpcyBtaXNzaW5nIGluIFRyaWdnZXIgb2YgVGFibGUgJXMuIFJlYnVpbGQgVHJpZ2dlciB0byBmaXggZGVmaW5lci4AQ2xpZW50IGNoYXJhY3RlciBzZXQgaXMgbWlzc2luZyBmb3IgdHJpZ2dlciBvZiB0YWJsZSAlcy4gVXNpbmcgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0LgBFcnJvciBpbiBwYXJzaW5nIHZpZXcgJXMuJXMARmFpbGVkIHRvIGJvb3RzdHJhcCBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBGYWlsZWQgdG8gc2h1dGRvd24gY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4ARmFpbGVkIHRvIGJvb3RzdHJhcCBwZXJzaXN0ZW50IGNvbXBvbmVudHMgbG9hZGVyLgBHaXZpbmcgJWQgY2xpZW50IHRocmVhZHMgYSBjaGFuY2UgdG8gZGllIGdyYWNlZnVsbHkAQ0EgY2VydGlmaWNhdGUgJXMgaXMgc2VsZiBzaWduZWQuAEZhaWxlZCB0byBzZXQgdXAgU1NMIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBTU0wgbGlicmFyeSBlcnJvcjogJXMARmFpbGVkIHRvIGdlbmVyYXRlIGEgc2VydmVyIFVVSUQgYmVjYXVzZSBpdCBpcyBmYWlsZWQgdG8gYWxsb2NhdGUgdGhlIFRIRC4AU2FsdGluZyB1dWlkIGdlbmVyYXRvciB2YXJpYWJsZXMsIGN1cnJlbnRfcGlkOiAlbHUsIHNlcnZlcl9zdGFydF90aW1lOiAlbHUsIGJ5dGVzX3NlbnQ6ICVsbHUsIABHZW5lcmF0ZWQgdXVpZDogJyVzJywgc2VydmVyX3N0YXJ0X3RpbWU6ICVsdSwgYnl0ZXNfc2VudDogJWxsdQBUaGUgc2VydmVyX3V1aWQgc3RvcmVkIGluIGF1dG8uY25mIGZpbGUgaXMgbm90IGEgdmFsaWQgVVVJRC4AR2FyYmFnZSBjaGFyYWN0ZXJzIGZvdW5kIGF0IHRoZSBlbmQgb2YgdGhlIHNlcnZlcl91dWlkIHZhbHVlIGluIGF1dG8uY25mIGZpbGUuIEl0IHNob3VsZCBiZSBvZiBsZW5ndGggJyVkJyAoVVVJRF9MRU5HVEgpLiBDbGVhciBpdCBhbmQgcmVzdGFydCB0aGUgc2VydmVyLiAATm8gZXhpc3RpbmcgVVVJRCBoYXMgYmVlbiBmb3VuZCwgc28gd2UgYXNzdW1lIHRoYXQgdGhpcyBpcyB0aGUgZmlyc3QgdGltZSB0aGF0IHRoaXMgc2VydmVyIGhhcyBiZWVuIHN0YXJ0ZWQuIEdlbmVyYXRpbmcgYSBuZXcgVVVJRDogJXMuAEluaXRpYWxpemF0aW9uIG9mIHRoZSBzZXJ2ZXIncyBVVUlEIGZhaWxlZCBiZWNhdXNlIGl0IGNvdWxkIG5vdCBiZSByZWFkIGZyb20gdGhlIGF1dG8uY25mIGZpbGUuIElmIHRoaXMgaXMgYSBuZXcgc2VydmVyLCB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIGJlY2F1c2UgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBnZW5lcmF0ZSBhIG5ldyBVVUlELgBVbmtub3duL3Vuc3VwcG9ydGVkIHN0b3JhZ2UgZW5naW5lOiAlcwBVbnN1cHBvcnRlZCB2YWx1ZSAwIGZvciBzZWN1cmUtYXV0aABJbnZhbGlkIGluc3RydW1lbnQgbmFtZSBvciB2YWx1ZSBmb3IgcGVyZm9ybWFuY2Vfc2NoZW1hX2luc3RydW1lbnQgJyVzJwBUaGUgdXNlIG9mIElubm9EQiBpcyBtYW5kYXRvcnkgc2luY2UgTXlTUUwgNS43LiBUaGUgZm9ybWVyIG9wdGlvbnMgbGlrZSAnLS1pbm5vZGI9MC8xL09GRi9PTicgb3IgJy0tc2tpcC1pbm5vZGInIGFyZSBpZ25vcmVkLgBpZ25vcmUtYnVpbHRpbi1pbm5vZGIgaXMgaWdub3JlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSByZWxlYXNlcy4ASW52YWxpZCBvbGRfcGFzc3dvcmRzIG1vZGU6IDEuIFZhbGlkIHZhbHVlcyBhcmUgMiBhbmQgMAAtLXZlcmJvc2UgaXMgZm9yIHVzZSB3aXRoIC0taGVscDsgZGlkIHlvdSBtZWFuIC0tbG9nLWVycm9yLXZlcmJvc2l0eT8Ab3B0aW9ucyAtLWxvZy1zbG93LWFkbWluLXN0YXRlbWVudHMsIC0tbG9nLXF1ZXJpZXMtbm90LXVzaW5nLWluZGV4ZXMgYW5kIC0tbG9nLXNsb3ctcmVwbGljYS1zdGF0ZW1lbnRzIGhhdmUgbm8gZWZmZWN0IGlmIC0tc2xvdy1xdWVyeS1sb2cgaXMgbm90IHNldABuZXRfYnVmZmVyX2xlbmd0aCAoJWx1KSBpcyBzZXQgdG8gYmUgbGFyZ2VyIHRoYW4gbWF4X2FsbG93ZWRfcGFja2V0ICglbHUpLiBQbGVhc2UgcmVjdGlmeS4AVElNRVNUQU1QIHdpdGggaW1wbGljaXQgREVGQVVMVCB2YWx1ZSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIC0tZXhwbGljaXRfZGVmYXVsdHNfZm9yX3RpbWVzdGFtcCBzZXJ2ZXIgb3B0aW9uIChzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzKS4ASW52YWxpZCBmdC1ib29sZWFuLXN5bnRheCBzdHJpbmc6ICVzACdOT19BVVRPX0NSRUFURV9VU0VSJyBzcWwgbW9kZSB3YXMgbm90IHNldC4AQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgY29ubmVjdGlvbiBoYW5kbGluZwBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0aHJlYWQgaGFuZGxpbmcAQ2FuJ3QgY3JlYXRlIHRlc3QgZmlsZSAlcwBDYW4ndCBzdGFydCBzZXJ2ZXI6IGNhbid0IGNyZWF0ZSBQSUQgZmlsZTogJXMAVW5hYmxlIHRvIGRlbGV0ZSBwaWQgZmlsZTogJXMAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgc2h1dGRvd24gcmVxdWVzdHMgKGVycm5vPSAlZCkARmFpbGVkIHRvIGFjY2VzcyBkaXJlY3RvcnkgZm9yIC0tc2VjdXJlLWZpbGUtcHJpdi4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIGFjY2Vzc2libGUgYnkgTXlTUUwgU2VydmVyLiBTdXBwbGllZCB2YWx1ZSA6ICVzAElnbm9yaW5nIC0tc2VjdXJlLWZpbGUtcHJpdiB2YWx1ZSBhcyBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIC0taW5pdGlhbGl6ZSgtaW5zZWN1cmUpLgBJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLXNlY3VyZS1maWxlLXByaXY6IEN1cnJlbnQgdmFsdWUgZG9lcyBub3QgcmVzdHJpY3QgbG9jYXRpb24gb2YgZ2VuZXJhdGVkIGZpbGVzLiBDb25zaWRlciBzZXR0aW5nIGl0IHRvIGEgdmFsaWQsIG5vbi1lbXB0eSBwYXRoLgAtLXNlY3VyZS1maWxlLXByaXYgaXMgc2V0IHRvIE5VTEwuIE9wZXJhdGlvbnMgcmVsYXRlZCB0byBpbXBvcnRpbmcgYW5kIGV4cG9ydGluZyBkYXRhIGFyZSBkaXNhYmxlZABJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLXNlY3VyZS1maWxlLXByaXY6ICVzIGlzIGFjY2Vzc2libGUgdGhyb3VnaCAtLXNlY3VyZS1maWxlLXByaXYuIENvbnNpZGVyIGNob29zaW5nIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4ARmFpbGVkIHRvIGdldCBzdGF0IGZvciBkaXJlY3RvcnkgcG9pbnRlZCBvdXQgYnkgLS1zZWN1cmUtZmlsZS1wcml2AEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tc2VjdXJlLWZpbGUtcHJpdjogTG9jYXRpb24gaXMgYWNjZXNzaWJsZSB0byBhbGwgT1MgdXNlcnMuIENvbnNpZGVyIGNob29zaW5nIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4AVmFsdWUgZm9yIC0tc2VjdXJlLWZpbGUtcHJpdiBpcyBsb25nZXIgdGhhbiBtYXhpbXVtIGxpbWl0IG9mICVkAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIG5hbWVkIHBpcGVzIChlcnJubz0gJWQpAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIFRDUC9JUCAoZXJybm89ICVkKQBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBzaGFyZWQgbWVtb3J5IChlcnJubz0gJWQpAENhbid0IGNyZWF0ZSBpbnRlcnJ1cHQtdGhyZWFkIChlcnJvciAlZCwgZXJybm86ICVkKQBXb3JsZC13cml0YWJsZSBjb25maWcgZmlsZSAnJXMnIGhhcyBiZWVuIHJlbW92ZWQuAHNldHJsaW1pdCBjb3VsZCBub3QgY2hhbmdlIHRoZSBzaXplIG9mIGNvcmUgZmlsZXMgdG8gJ2luZmluaXR5JzsgIFdlIG1heSBub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBhIGNvcmUgZmlsZSBvbiBzaWduYWxzAFdyb25nIGRhdGUvdGltZSBmb3JtYXQgc3BlY2lmaWVyOiAlcwBDb3VsZCBub3QgYWxsb2NhdGUgcmVwbGljYXRpb24gYW5kIGJpbmxvZyBmaWx0ZXJzOiAlcwBDYW5ub3QgYWxsb2NhdGUgdGhlIGtleWNhY2hlAEN1cnJlbnQgdGltZSBoYXMgZ290IHBhc3QgeWVhciAyMDM4LiBWYWxpZGF0aW5nIGN1cnJlbnQgdGltZSB3aXRoICVkIGl0ZXJhdGlvbnMgYmVmb3JlIGluaXRpYXRpbmcgdGhlIG5vcm1hbCBzZXJ2ZXIgc2h1dGRvd24gcHJvY2Vzcy4ASXRlcmF0aW9uICVkOiBPYnRhaW5lZCB2YWxpZCBjdXJyZW50IHRpbWUgZnJvbSBzeXN0ZW0ASXRlcmF0aW9uICVkOiBDdXJyZW50IHRpbWUgb2J0YWluZWQgZnJvbSBzeXN0ZW0gaXMgZ3JlYXRlciB0aGFuIDIwMzgAVGhpcyBNeVNRTCBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IGRhdGVzIGxhdGVyIHRoZW4gMjAzOAAlcyAobXlzcWxkICVzKSBzdGFydGluZyBhcyBwcm9jZXNzICVsdQBTaHV0dGluZyBkb3duIHJlcGxpY2EgdGhyZWFkcwBGb3JjZWZ1bGx5IGRpc2Nvbm5lY3RpbmcgJWQgcmVtYWluaW5nIGNsaWVudHMAQWJvcnRpbmcAQmlubG9nIGVuZABnZXRob3N0bmFtZSBmYWlsZWQsIHVzaW5nICclcycgYXMgaG9zdG5hbWUAT25lIGNhbiBvbmx5IHVzZSB0aGUgLS11c2VyIHN3aXRjaCBpZiBydW5uaW5nIGFzIHJvb3QARmF0YWwgZXJyb3I6IFBsZWFzZSByZWFkICJTZWN1cml0eSIgc2VjdGlvbiBvZiB0aGUgbWFudWFsIHRvIGZpbmQgb3V0IGhvdyB0byBydW4gbXlzcWxkIGFzIHJvb3QhAEZhdGFsIGVycm9yOiBDYW4ndCBjaGFuZ2UgdG8gcnVuIGFzIHVzZXIgJyVzJyA7ICBQbGVhc2UgY2hlY2sgdGhhdCB0aGUgdXNlciBleGlzdHMhAFNlcnZlciBpcyBzdGFydGVkIHdpdGggLS1yZXF1aXJlLXNlY3VyZS10cmFuc3BvcnQ9T04gYnV0IG5vIHNlY3VyZSB0cmFuc3BvcnRzIChTU0wgb3IgU2hhcmVkIE1lbW9yeSkgYXJlIGNvbmZpZ3VyZWQuAHNldGdpZDogJXMAc2V0dWlkOiAlcwBzZXRyZWdpZDogJXMAc2V0cmV1aWQ6ICVzAGNocm9vdDogJXMAVENQL0lQLCAtLXNoYXJlZC1tZW1vcnksIG9yIC0tbmFtZWQtcGlwZSBzaG91bGQgYmUgY29uZmlndXJlZCBvbiBOVCBPUwBDVFJMLUMgaWdub3JlZCBkdXJpbmcgc3RhcnR1cAAnJXMnIGNhbiBub3QgYmUgdXNlZCBhcyBjbGllbnQgY2hhcmFjdGVyIHNldC4gJyVzJyB3aWxsIGJlIHVzZWQgYXMgZGVmYXVsdCBjbGllbnQgY2hhcmFjdGVyIHNldC4AT3V0IG9mIG1lbW9yeQBGYWlsZWQgdG8gbG9jayBtZW1vcnkuIEVycm5vOiAlZABteV9pbml0KCkgZmFpbGVkLgBFeGVjdXRpb24gb2YgaW5pdF9maWxlICclcycgc3RhcnRlZC4ARXhlY3V0aW9uIG9mIGluaXRfZmlsZSAnJXMnIGVuZGVkLgBDaGFuZ2VkIGxpbWl0czogbWF4X29wZW5fZmlsZXM6ICVsdSAocmVxdWVzdGVkICVsdSkAQ291bGQgbm90IGluY3JlYXNlIG51bWJlciBvZiBtYXhfb3Blbl9maWxlcyB0byBtb3JlIHRoYW4gJWx1IChyZXF1ZXN0OiAlbHUpAENoYW5nZWQgbGltaXRzOiBtYXhfY29ubmVjdGlvbnM6ICVsdSAocmVxdWVzdGVkICVsdSkAQ2hhbmdlZCBsaW1pdHM6IHRhYmxlX29wZW5fY2FjaGU6ICVsdSAocmVxdWVzdGVkICVsdSkASWdub3JpbmcgdXNlciBjaGFuZ2UgdG8gJyVzJyBiZWNhdXNlIHRoZSB1c2VyIHdhcyBzZXQgdG8gJyVzJyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUAQ291bGQgbm90IGFkZCBkbyB0YWJsZSBydWxlICclcychAENvdWxkIG5vdCBhZGQgaWdub3JlIHRhYmxlIHJ1bGUgJyVzJyEAVGhlIHZhcmlhYmxlIHNlc3Npb25fdHJhY2tfc3lzdGVtX3ZhcmlhYmxlcyBlaXRoZXIgaGFzIGR1cGxpY2F0ZSB2YWx1ZXMgb3IgaW52YWxpZCB2YWx1ZXMuAFRvbyBtYW55IGFyZ3VtZW50cyAoZmlyc3QgZXh0cmEgaXMgJyVzJykuAFVzZSAtLXZlcmJvc2UgLS1oZWxwIHRvIGdldCBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMhAFVuYWJsZSB0byByZWFkIGVycm1zZy5zeXMgZmlsZQBDYW4ndCBpbml0IGRhdGFiYXNlcwBUaGVyZSB3ZXJlIG90aGVyIHZhbHVlcyBzcGVjaWZpZWQgdG8gbG9nLW91dHB1dCBiZXNpZGVzIE5PTkUuIERpc2FibGluZyBzbG93IGFuZCBnZW5lcmFsIGxvZ3MgYW55d2F5LgBDU1YgZW5naW5lIGlzIG5vdCBwcmVzZW50LCBmYWxsaW5nIGJhY2sgdG8gdGhlIGxvZyBmaWxlcwBCYWQgc3ludGF4IGluIHJlcGxpY2F0ZS1yZXdyaXRlLWRiIC0gbWlzc2luZyAnLT4nIQBCYWQgc3ludGF4IGluIHJlcGxpY2F0ZS1yZXdyaXRlLWRiIC0gZW1wdHkgRlJPTSBkYiEAQmFkIHN5bnRheCBpbiByZXBsaWNhdGUtcmV3cml0ZS1kYiAtIGVtcHR5IFRPIGRiIQBBbHRob3VnaCBhIHBhdGggd2FzIHNwZWNpZmllZCBmb3IgdGhlICVzLCBsb2cgdGFibGVzIGFyZSB1c2VkLiBUbyBlbmFibGUgbG9nZ2luZyB0byBmaWxlcyB1c2UgdGhlIC0tbG9nLW91dHB1dD1maWxlIG9wdGlvbi4ASW52YWxpZCB2YWx1ZSBmb3IgJXM6ICVzAFRoZSBzZXJ2ZXIgb3B0aW9uICdsb3dlcl9jYXNlX3RhYmxlX25hbWVzJyBpcyBjb25maWd1cmVkIHRvIHVzZSBjYXNlIHNlbnNpdGl2ZSB0YWJsZSBuYW1lcyBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGlzIG9uIGEgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbSB3aGljaCBpcyBhbiB1bnN1cHBvcnRlZCBjb21iaW5hdGlvbi4gUGxlYXNlIGNvbnNpZGVyIGVpdGhlciB1c2luZyBhIGNhc2Ugc2Vuc2l0aXZlIGZpbGUgc3lzdGVtIGZvciB5b3VyIGRhdGEgZGlyZWN0b3J5IG9yIHN3aXRjaGluZyB0byBhIGNhc2UtaW5zZW5zaXRpdmUgdGFibGUgbmFtZSBtb2RlLgBTZXR0aW5nIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXM9MiBiZWNhdXNlIGZpbGUgc3lzdGVtIGZvciAlcyBpcyBjYXNlIGluc2Vuc2l0aXZlAGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgd2FzIHNldCB0byAyLCBldmVuIHRob3VnaCB5b3VyIHRoZSBmaWxlIHN5c3RlbSAnJXMnIGlzIGNhc2Ugc2Vuc2l0aXZlLiAgTm93IHNldHRpbmcgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyB0byAwIHRvIGF2b2lkIGZ1dHVyZSBwcm9ibGVtcy4AWW91IG5lZWQgdG8gdXNlIC0tbG9nLWJpbiB0byBtYWtlICVzIHdvcmsuAFBhdGggJyVzJyBpcyBhIGRpcmVjdG9yeSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZSBmb3IgJXMgb3B0aW9uAE5vIGFyZ3VtZW50IHdhcyBwcm92aWRlZCB0byAtLWxvZy1iaW4sIGFuZCAtLWxvZy1iaW4taW5kZXggd2FzIG5vdCB1c2VkOyBzbyByZXBsaWNhdGlvbiBtYXkgYnJlYWsgd2hlbiB0aGlzIE15U1FMIHNlcnZlciBhY3RzIGFzIGEgc291cmNlIGFuZCBoYXMgaGlzIGhvc3RuYW1lIGNoYW5nZWQhISBQbGVhc2UgdXNlICctLWxvZy1iaW49JXMnIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS4AWW91IGhhdmUgZW5hYmxlZCB0aGUgYmluYXJ5IGxvZywgYnV0IHlvdSBoYXZlbid0IHByb3ZpZGVkIHRoZSBtYW5kYXRvcnkgc2VydmVyLWlkLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHByb3BlciBzZXJ2ZXIgc3RhcnQtdXAgcGFyYW1ldGVycyBkb2N1bWVudGF0aW9uAFVuYWJsZSB0byBjcmVhdGUgcmVwbGljYXRpb24gcGF0aCBuYW1lczogb3V0IG9mIG1lbW9yeSBvciBwYXRoIG5hbWVzIHRvbyBsb25nIChwYXRoIG5hbWUgZXhjZWVkcyAlZCBvciBmaWxlIG5hbWUgZXhjZWVkcyAlZCkuAEZhaWxlZCB0byBpbml0aWFsaXplIEdUSUQgc3RydWN0dXJlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgZWFybHkgcGx1Z2lucy4ARmFpbGVkIHRvIGluaXRpYWxpemUgYnVpbHRpbiBwbHVnaW5zLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkeW5hbWljIHBsdWdpbnMuAFBlcmZvcm1hbmNlIHNjaGVtYSBkaXNhYmxlZCAocmVhc29uOiBpbml0IGZhaWxlZCkuAEFza2VkIGZvciAlbHUgdGhyZWFkIHN0YWNrLCBidXQgZ290ICVsZABmYWlsZWQgdG8gc2V0IGRhdGFkaXIgdG8gJXMAQ2FuJ3QgcmVhZCBkYXRhIGRpcmVjdG9yeSdzIHN0YXRzICglZCk6ICVzLiBBc3N1bWluZyB0aGF0IGl0J3Mgbm90IG93bmVkIGJ5IHRoZSBzYW1lIHVzZXIvZ3JvdXAAQ2FuJ3QgY2hhbmdlIGRhdGEgZGlyZWN0b3J5IG93bmVyIHRvICVzAFNldHRpbmcgcGVyc2lzdGVudCBvcHRpb25zIGZhaWxlZC4ARmFpbGVkIHRvIHNhdmUgdGhlIHNldCBvZiBHbG9iYWwgVHJhbnNhY3Rpb24gSWRlbnRpZmllcnMgb2YgdGhlIGxhc3QgYmluYXJ5IGxvZyBpbnRvIHRoZSBteXNxbC5ndGlkX2V4ZWN1dGVkIHRhYmxlIHdoaWxlIHRoZSBzZXJ2ZXIgd2FzIHNodXR0aW5nIGRvd24uIFRoZSBuZXh0IHNlcnZlciByZXN0YXJ0IHdpbGwgbWFrZSBhbm90aGVyIGF0dGVtcHQgdG8gc2F2ZSBHbG9iYWwgVHJhbnNhY3Rpb24gSWRlbnRpZmllcnMgaW50byB0aGUgdGFibGUuAENhbid0IHN0YXJ0IHNlcnZlcjogSW52YWxpZCB2YWx1ZSBmb3IgLS1kZWZhdWx0LWF1dGhlbnRpY2F0aW9uLXBsdWdpbgBDb3VsZCBub3Qgam9pbiAlc3RocmVhZC4gZXJyb3I6JWQAQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYnVpbGRpbmcgZG9fdGFibGUgYW5kIGlnbm9yZV90YWJsZSBydWxlcyB0byBoYXNoZXMgZm9yIGdsb2JhbCByZXBsaWNhdGlvbiBmaWx0ZXIuAEVycm9yIG9wZW5pbmcgQ0EgY2VydGlmaWNhdGUgZmlsZQBFcnJvciBhY2Nlc3NpbmcgZGlyZWN0b3J5IHBvaW50ZWQgYnkgLS1zc2wtY2FwYXRoAEZvdW5kICVzLCAlcyBhbmQgJXMgaW4gZGF0YSBkaXJlY3RvcnkuIFRyeWluZyB0byBlbmFibGUgU1NMIHN1cHBvcnQgdXNpbmcgdGhlbS4ARmFpbGVkIHRvIGNyZWF0ZSAlcyhmaWxlOiAnJXMnLCBlcnJubyAlZCkARmFpbGVkIHRvIGluaXRpYWxpemUgdGltZXIgY29tcG9uZW50IChlcnJubyAlZCkuAHNlcnZlci1pZCBjb25maWd1cmVkIGlzIHRvbyBsYXJnZSB0byByZXByZXNlbnQgd2l0aCBzZXJ2ZXItaWQtYml0cyBjb25maWd1cmVkLgBEZWZhdWx0JXMgc3RvcmFnZSBlbmdpbmUgKCVzKSBpcyBub3QgYXZhaWxhYmxlAENvdWxkIG5vdCBvcGVuIGZpbGUgJyVzJyBmb3IgZXJyb3IgbG9nZ2luZyVzJXMASW52YWxpZCBsb2cgZmlsZSBuYW1lIGFmdGVyIGV4cGFuZGluZyBzeW1saW5rczogJyVzJwB1c2luZyAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZCBpbiBjb25qdW5jdGlvbiB3aXRoIC0tbG9nLXJlcGxpY2EtdXBkYXRlcyBpcyBpbXBvc3NpYmxlLCBpdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIGxvb3BzIGluIHRoaXMgc2VydmVyLgB1c2luZyAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZCBpbiBjb25qdW5jdGlvbiB3aXRoIC0tbG9nLXJlcGxpY2EtdXBkYXRlcyB3b3VsZCBsZWFkIHRvIGluZmluaXRlIGxvb3BzIGluIHRoaXMgc2VydmVyLiBIb3dldmVyIHRoaXMgd2lsbCBiZSBpZ25vcmVkIGFzIHRoZSAtLWxvZy1iaW4gb3B0aW9uIGlzIG5vdCBkZWZpbmVkIG9yIHlvdXIgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCBnbG9iYWwgdHJhbnNhY3Rpb24gaWRlbnRpZXJzIGVuYWJsZWQuAE5EQiA6IFRhYmxlcyBub3QgYXZhaWxhYmxlIGFmdGVyICVsdSBzZWNvbmRzLiBDb25zaWRlciBpbmNyZWFzaW5nIC0tbmRiLXdhaXQtc2V0dXAgdmFsdWUAJXMAVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gVGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZXNwYWNlICclcycgZG9lcyBub3QgZXhpc3QuAENvbm5lY3Rpb24gY29sbGF0aW9uIGlzIG1pc3NpbmcgZm9yIHRyaWdnZXIgb2YgdGFibGUgJXMuIFVzaW5nIGRlZmF1bHQgY29ubmVjdGlvbiBjb2xsYXRpb24uAERhdGFiYXNlIGNvbGxhdGlvbiBpcyBtaXNzaW5nIGZvciB0cmlnZ2VyIG9mIHRhYmxlICVzLiBVc2luZyBEZWZhdWx0IGNoYXJhY3RlciBzZXQuAEVycm9yIGluIE1lbW9yeSBhbGxvY2F0aW9uIGZvciBEZWZpbmVyICVzIGZvciBUcmlnZ2VyLgBFcnJvciBpbiByZWFkaW5nICVzLlRSRyBmaWxlLgBFcnJvciBpbiBwYXJzaW5nIFRyaWdnZXJzIGZyb20gJXMuVFJHIGZpbGUuAEVycm9yIGluIGNyZWF0aW5nIEREIGVudHJ5IGZvciBUcmlnZ2VyICVzLiVzAFJlc29sdmluZyBkZXBlbmRlbmN5IGZvciB0aGUgdmlldyAnJXMuJXMnIGZhaWxlZC4gVmlldyBpcyBubyBtb3JlIHZhbGlkIHRvIHVzZQAlcy4lcyBoYXMgbm8gZGVmaW5lciAoYXMgcGVyIGFuIG9sZCB2aWV3IGZvcm1hdCkuIEN1cnJlbnQgdXNlciBpcyB1c2VkIGFzIGRlZmluZXIuIFBsZWFzZSByZWNyZWF0ZSB0aGUgdmlldy4AUGx1Z2luICclcycgaW5pdCBmdW5jdGlvbiByZXR1cm5lZCBlcnJvci4ASW5pdGlhbGl6YXRpb24gb2YgdHJhbnNhY3Rpb24gZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4ASW5pdGlhbGl6YXRpb24gYmlubG9nIHN0b3JhZ2UgZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4ASW5pdGlhbGl6YXRpb24gb2YgYmlubG9nIHRyYW5zbWl0IGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAEluaXRpYWxpemF0aW9uIGJpbmxvZyByZWxheSBJTyBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBSdW4gZnVuY3Rpb24gJy4uLicgaW4gcGx1Z2luICclcycgZmFpbGVkAG15c3FsX2hhX3JlYWQ6IEdvdCBlcnJvciAlZCB3aGVuIHJlYWRpbmcgdGFibGUgJyVzJwBTdG9yZWQgcm91dGluZSAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uICVzLgBJbnZhbGlkIGNyZWF0aW9uIGNvbnRleHQgJyVzLiVzJy4AR290IGVycm9yICVkIHdoZW4gcmVhZGluZyB0YWJsZSAnJXMnAGxvYWRfZGVzX2ZpbGU6ICBGb3VuZCB3cm9uZyBrZXlfbnVtYmVyOiAlYwBGYWlsZWQgdG8gc2V0IHBlcnNpc3RlZCBvcHRpb25zLgBQZXJzaXN0ZWQgY29uZmlnIGZpbGUgaXMgY29ycnVwdC4gUGxlYXNlIGVuc3VyZSBteXNxbGQtYXV0by5jbmYgZmlsZSBpcyB2YWxpZCBKU09OLgBGb3VuZCBvcHRpb24gd2l0aG91dCBwcmVjZWRpbmcgZ3JvdXAgaW4gY29uZmlnIGZpbGUAVkFMR1JJTkRfRE9fUVVJQ0tfTEVBS19DSEVDSwBWQUxHUklORF9DT1VOVF9MRUFLUyByZXBvcnRzICVsdSBsZWFrZWQgYnl0ZXMgZm9yIHF1ZXJ5ICclLipzJwBMT0FEIERBVEEgSU5GSUxFIGluIHRoZSByZXBsaWNhIFNRTCBUaHJlYWQgY2FuIG9ubHkgcmVhZCBmcm9tIC0tcmVwbGljYS1sb2FkLXRtcGRpci4gUGxlYXNlLCByZXBvcnQgYSBidWcuAEdvdCB1bmtub3duIGVycm9yOiAlZABDYW4ndCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHVkZiBzdHJ1Y3R1cmVzAENhbid0IGFsbG9jIG1lbW9yeSBmb3IgdWRmIGZ1bmN0aW9uOiAnJS42NHMnAEludmFsaWQgcm93IGluIG15c3FsLmZ1bmMgdGFibGUgZm9yIGZ1bmN0aW9uICclLjY0cycAQ291bGQgbm90IG9wZW4gdGhlIG15c3FsLmZ1bmMgdGFibGUuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4ARm91bmQgJWQgcHJlcGFyZWQgdHJhbnNhY3Rpb24ocykgaW4gJXMARm91bmQgJWQgcHJlcGFyZWQgWEEgdHJhbnNhY3Rpb25zAGlnbm9yZSB4aWQgJXMAY29tbWl0IHhpZCAlcwByb2xsYmFjayB4aWQgJXMAU3RhcnRpbmcgWEEgY3Jhc2ggcmVjb3ZlcnkuLi4ALS10Yy1oZXVyaXN0aWMtcmVjb3ZlciByb2xsYmFjayBzdHJhdGVneSBpcyBub3Qgc2FmZSBvbiBzeXN0ZW1zIHdpdGggbW9yZSB0aGFuIG9uZSAyLXBoYXNlLWNvbW1pdC1jYXBhYmxlIHN0b3JhZ2UgZW5naW5lLiBBYm9ydGluZyBjcmFzaCByZWNvdmVyeS4ARm91bmQgJWQgcHJlcGFyZWQgdHJhbnNhY3Rpb25zISBJdCBtZWFucyB0aGF0IG15c3FsZCB3YXMgbm90IHNodXQgZG93biBwcm9wZXJseSBsYXN0IHRpbWUgYW5kIGNyaXRpY2FsIHJlY292ZXJ5IGluZm9ybWF0aW9uIChsYXN0IGJpbmxvZyBvciAlcyBmaWxlKSB3YXMgbWFudWFsbHkgZGVsZXRlZCBhZnRlciBhIGNyYXNoLiBZb3UgaGF2ZSB0byBzdGFydCBteXNxbGQgd2l0aCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyIHN3aXRjaCB0byBjb21taXQgb3Igcm9sbGJhY2sgcGVuZGluZyB0cmFuc2FjdGlvbnMuAFhBIGNyYXNoIHJlY292ZXJ5IGZpbmlzaGVkLgBGYWlsZWQgdG8gY29sbGVjdCBHVElEIHRvIHNlbmQgaW4gdGhlIHJlc3BvbnNlIHBhY2tldCEATVlTUUwuREVGQVVMVF9ST0xFUyBjb3VsZG4ndCBiZSB1cGRhdGVkIGZvciBhdXRob3JpemF0aW9uIGlkZW50aWZpZXIgJXMARm9sbG93aW5nIHVzZXJzIHdlcmUgc3BlY2lmaWVkIGluIENSRUFURSBVU0VSIElGIE5PVCBFWElTVFMgYnV0IHRoZXkgYWxyZWFkeSBleGlzdC4gQ29ycmVzcG9uZGluZyBlbnRyeSBpbiBiaW5hcnkgbG9nIHVzZWQgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJyVzJyB0byByZXdyaXRlIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIChpZiBhbnkpIGZvciB0aGVtOiAlcwBGb2xsb3dpbmcgdXNlcnMgd2VyZSBzcGVjaWZpZWQgaW4gQUxURVIgVVNFUiBJRiBFWElTVFMgYnV0IHRoZXkgZG8gbm90IGV4aXN0LiBDb3JyZXNwb25kaW5nIGVudHJ5IGluIGJpbmFyeSBsb2cgdXNlZCBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAnJXMnIHRvIHJld3JpdGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gKGlmIGFueSkgZm9yIHRoZW06ICVzAFRhYmxlICclLTE5MnMnIGNvcnJ1cHRlZDogcm93IGluIHdyb25nIHBhcnRpdGlvbjogJXMgLS0gUGxlYXNlIFJFUEFJUiB0aGUgdGFibGUhAEdvdCBhbiBlcnJvciBmcm9tIHRocmVhZF9pZD0ldSwgJXM6JWQAR290IGFuIGVycm9yIGZyb20gdW5rbm93biB0aHJlYWQsICVzOiVkAFRvbyBtYW55IHN0b3JhZ2UgZW5naW5lcyEAU3RvcmFnZSBlbmdpbmUgJyVzJyBoYXMgY29uZmxpY3RpbmcgdHlwZWNvZGUuIEFzc2lnbmluZyB2YWx1ZSAlZC4AT3V0IG9mIG1lbW9yeSBvbiB0cmFuc2FjdGlvbiB3cml0ZSBzZXQgZXh0cmFjdGlvbgBVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBwbHVnaW4gJyVzJyBoYW5kbGVydG9uLgBTaGFyZWQgbWVtb3J5IHNldHRpbmcgdXAgbGlzdGVuZXIAQ2FuJ3QgY3JlYXRlIHNoYXJlZCBtZW1vcnkgc2VydmljZTogJXMuIDogJXMAQ2FuJ3QgY3JlYXRlIHNoYXJlZCBtZW1vcnkgY29ubmVjdGlvbjogJXMuIDogJXMAQ2FuJ3QgY3JlYXRlIGV2ZW50LCBsYXN0IGVycm9yPSV1AENhbid0IGNyZWF0ZSBuZXcgbmFtZWQgcGlwZSE6ICVzAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIG5ldyBjb25uZWN0aW9uKGVycm5vPSAlZCkARmFpbGVkIHRvIGNyZWF0ZSBhIHNvY2tldCBmb3IgJXMgJyVzJzogZXJybm86ICVkLgBTZXJ2ZXIgc29ja2V0IGNyZWF0ZWQgb24gSVA6ICclcycuAFNlcnZlciBob3N0bmFtZSAoYmluZC1hZGRyZXNzKTogJyVzJzsgcG9ydDogJWQASVB2NiBpcyBhdmFpbGFibGUuAElQdjYgaXMgbm90IGF2YWlsYWJsZS4AQ2FuJ3QgY3JlYXRlIElQIHNvY2tldDogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBjYW5ub3QgcmVzb2x2ZSBob3N0bmFtZSEARG8geW91IGFscmVhZHkgaGF2ZSBhbm90aGVyIG15c3FsZCBzZXJ2ZXIgcnVubmluZyBvbiBwb3J0OiAlZCA/AERvIHlvdSBhbHJlYWR5IGhhdmUgYW5vdGhlciBteXNxbGQgc2VydmVyIHJ1bm5pbmcgb24gc29ja2V0OiAlcyA/AEFub3RoZXIgcHJvY2VzcyB3aXRoIHBpZCAlZCBpcyB1c2luZyB1bml4IHNvY2tldCBmaWxlLgBGYWlsZWQgdG8gcmVzZXQgSVBWNl9WNk9OTFkgZmxhZyAoZXJyb3I6ICVkKS4gVGhlIHNlcnZlciB3aWxsIGxpc3RlbiB0byBJUHY2IGFkZHJlc3NlcyBvbmx5LgBSZXRyeWluZyBiaW5kIG9uIFRDUC9JUCBwb3J0ICV1AENhbid0IHN0YXJ0IHNlcnZlcjogQmluZCBvbiBUQ1AvSVAgcG9ydDogJXMARmFpbHMgdG8gcHJpbnQgb3V0IElQLWFkZHJlc3MuACAgLSAnJXMnIHJlc29sdmVzIHRvICclcyc7AENhbid0IHN0YXJ0IHNlcnZlcjogbGlzdGVuKCkgb24gVENQL0lQIHBvcnQ6ICVzAGxpc3RlbigpIG9uIFRDUC9JUCBmYWlsZWQgd2l0aCBlcnJvciAlZABUaGUgc29ja2V0IGZpbGUgcGF0aCBpcyB0b28gbG9uZyAoPiAldSk6ICVzAFVuYWJsZSB0byBzZXR1cCB1bml4IHNvY2tldCBsb2NrIGZpbGUuAENhbid0IHN0YXJ0IHNlcnZlcjogVU5JWCBTb2NrZXQgOiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBCaW5kIG9uIHVuaXggc29ja2V0OiAlcwBsaXN0ZW4oKSBvbiBVbml4IHNvY2tldCBmYWlsZWQgd2l0aCBlcnJvciAlZABVbmFibGUgdG8gY3JlYXRlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBhZnRlciByZXRyaWVzLgBDb3VsZCBub3QgY3JlYXRlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AQ291bGQgbm90IG9wZW4gdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBDb3VsZCBub3QgcmVhZCB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAFVuaXggc29ja2V0IGxvY2sgZmlsZSBpcyBlbXB0eSAlcy4ASW52YWxpZCBwaWQgaW4gdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBDb3VsZCBub3Qgd3JpdGUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBDb3VsZCBub3QgcmVtb3ZlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AQ291bGQgbm90IHN5bmMgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBDb3VsZCBub3QgY2xvc2UgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBteXNxbGQ6IEdvdCBlcnJvciAlZCBmcm9tIHNlbGVjdABFcnJvciBpbiBhY2NlcHQ6ICVzAFJTQSAlcyBrZXkgZmlsZSBub3QgZm91bmQ6ICVzLiBTb21lIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgd2lsbCBub3Qgd29yay4ARmFpbHVyZSB0byBwYXJzZSBSU0EgJXMga2V5IChmaWxlIGV4aXN0cyk6ICVzOiAlcwBGYWlsdXJlIHRvIHJlYWQga2V5IGZpbGU6ICVzAFJTQSBrZXkgZmlsZXMgbm90IGZvdW5kLiBTb21lIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgd2lsbCBub3Qgd29yay4AQ29ubmVjdGlvbiBhdHRyaWJ1dGVzIG9mIGxlbmd0aCAlbHUgd2VyZSB0cnVuY2F0ZWQgKCVkIGJ5dGVzIGxvc3QpIGZvciBjb25uZWN0aW9uICVsbHUsIHVzZXIgJXNAJXMgKGFzICVzKSwgYXV0aDogJXMAWC41MDkgY2lwaGVycyBtaXNtYXRjaDogc2hvdWxkIGJlICclcycgYnV0IGlzICclcycAWC41MDkgaXNzdWVyIG1pc21hdGNoOiBzaG91bGQgYmUgJyVzJyBidXQgaXMgJyVzJwBYLjUwOSBzdWJqZWN0IG1pc21hdGNoOiBzaG91bGQgYmUgJyVzJyBidXQgaXMgJyVzJwBGYWlsZWQgdG8gYWN0aXZhdGUgZGVmYXVsdCByb2xlICVzIGZvciAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgUlNBIHByaXZhdGUga2V5IHJlcXVpcmVkIGZvciBYLjUwOSBjZXJ0aWZpY2F0ZS4AQ291bGQgbm90IHdyaXRlIGtleSBmaWxlOiAlcwBDb3VsZCBub3Qgc2V0IGZpbGUgcGVybWlzc2lvbiBmb3IgJXMAQ291bGQgbm90IHJlYWQgQ0Ega2V5IGZpbGU6ICVzAENvdWxkIG5vdCByZWFkIENBIGNlcnRpZmljYXRlIGZpbGU6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBYLjUwOSBjZXJ0aWZpY2F0ZS4AQ291bGQgbm90IHdyaXRlIGNlcnRpZmljYXRlIGZpbGU6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBSU0EgUHJpdmF0ZS9QdWJsaWMga2V5IHBhaXIAQ291bGQgbm90IHdyaXRlIHByaXZhdGUga2V5IGZpbGU6ICVzAENvdWxkIG5vdCB3cml0ZSBwdWJsaWMga2V5IGZpbGU6ICVzAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgU1NMIGNlcnRpZmljYXRlcyBhcyBvcHRpb25zIHJlbGF0ZWQgdG8gU1NMIGFyZSBzcGVjaWZpZWQuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgU1NMIGNlcnRpZmljYXRlcyBhcyBjZXJ0aWZpY2F0ZSBmaWxlcyBhcmUgcHJlc2VudCBpbiBkYXRhIGRpcmVjdG9yeS4AQXV0byBnZW5lcmF0ZWQgU1NMIGNlcnRpZmljYXRlcyBhcmUgcGxhY2VkIGluIGRhdGEgZGlyZWN0b3J5LgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFNTTCBjZXJ0aWZpY2F0ZXMgYXMgLS1hdXRvX2dlbmVyYXRlX2NlcnRzIGlzIHNldCB0byBPRkYuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgUlNBIGtleSBwYWlyIHRocm91Z2ggJXMgYXMgb3B0aW9ucyByZWxhdGVkIHRvIFJTQSBrZXlzIGFyZSBzcGVjaWZpZWQuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgUlNBIGtleSBwYWlyIHRocm91Z2ggJXMgYXMga2V5IGZpbGVzIGFyZSBwcmVzZW50IGluIGRhdGEgZGlyZWN0b3J5LgBBdXRvIGdlbmVyYXRlZCBSU0Ega2V5IGZpbGVzIHRocm91Z2ggJXMgYXJlIHBsYWNlZCBpbiBkYXRhIGRpcmVjdG9yeS4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBSU0Ega2V5IHBhaXIgYXMgJXMgaXMgc2V0IHRvIE9GRi4AJ3Byb3hpZXNfcHJpdicgZW50cnkgJyVzQCVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4AVGhlIHBsdWdpbiAnJS4qcycgdXNlZCB0byBhdXRoZW50aWNhdGUgdXNlciAnJXMnQCclLipzJyBpcyBub3QgbG9hZGVkLiBOb2JvZHkgY2FuIGN1cnJlbnRseSBsb2dpbiB1c2luZyB0aGlzIGFjY291bnQuAFRoZSBwbHVnaW4gJyVzJyBpcyB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB1c2VyICclcydAJyUuKnMnLCAlcyBjb25maWd1cmVkLiBOb2JvZHkgY2FuIGN1cnJlbnRseSBsb2dpbiB1c2luZyB0aGlzIGFjY291bnQuAENvdWxkIG5vdCBsb2FkIG15c3FsLnJvbGVfZWRnZXMgYW5kIG15c3FsLmRlZmF1bHRfcm9sZXMgdGFibGVzLiBBQ0wgRERMcyB3aWxsIG5vdCB3b3JrIHVubGVzcyB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUgaXMgcGVyZm9ybWVkLgAndXNlcicgZW50cnkgJyVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4ARmF0YWwgZXJyb3I6IENvdWxkIG5vdCByZWFkIHRoZSBjb2x1bW4gJ2F1dGhlbnRpY2F0aW9uX3N0cmluZycgZnJvbSB0YWJsZSAnbXlzcWwudXNlcicuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AVXNlciBlbnRyeSAnJXMnQCclcycgaGFzIGEgZGVwcmVjYXRlZCBwcmUtNC4xIHBhc3N3b3JkLiBUaGUgdXNlciB3aWxsIGJlIGlnbm9yZWQgYW5kIG5vIG9uZSBjYW4gbG9naW4gd2l0aCB0aGlzIHVzZXIgYW55bW9yZS4AVXNlciBlbnRyeSAnJXMnQCclcycgaGFzIGFuIGVtcHR5IHBsdWdpbiB2YWx1ZS4gVGhlIHVzZXIgd2lsbCBiZSBpZ25vcmVkIGFuZCBubyBvbmUgY2FuIGxvZ2luIHdpdGggdGhpcyB1c2VyIGFueW1vcmUuAEZvdW5kIGludmFsaWQgcGFzc3dvcmQgZm9yIHVzZXI6ICclc0Alcyc7IElnbm9yaW5nIHVzZXIAJ3VzZXInIGVudHJ5ICclc0AlcycgaGFzIHRoZSBwYXNzd29yZCBpZ25vcmUgZmxhZyByYWlzZWQsIGJ1dCBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luIGRvZXNuJ3Qgc3VwcG9ydCBwYXNzd29yZCBleHBpcmF0aW9uLiBUaGUgdXNlciBpZCB3aWxsIGJlIGlnbm9yZWQuAFNvbWUgb2YgdGhlIHVzZXIgYWNjb3VudHMgd2l0aCBTVVBFUiBwcml2aWxlZ2VzIHdlcmUgZGlzYWJsZWQgYmVjYXVzZSBvZiBlbXB0eSBteXNxbC51c2VyLnBsdWdpbiB2YWx1ZS4gSWYgeW91IGFyZSB1cGdyYWRpbmcgZnJvbSBNeVNRTCA1LjYgdG8gTXlTUUwgNS43IGl0IG1lYW5zIHRoYXQgc3Vic3RpdHV0aW9uIGZvciB0aGUgZW1wdHkgcGx1Z2luIGNvbHVtbiB3YXMgbm90IHBvc3NpYmxlLiBQcm9iYWJseSBiZWNhdXNlIG9mIHByZSA0LjEgcGFzc3dvcmQgaGFzaC4gSWYgeW91ciBhY2NvdW50IGlzIGRpc2FibGVkIHlvdSB3aWxsIG5lZWQgdG8gcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuIEZvciBjb21wbGV0ZSBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHVwZ3JhZGUgTXlTUUwgdG8gYSBuZXcgdmVyc2lvbiBwbGVhc2Ugc2VlIHRoZSAnVXBncmFkaW5nIE15U1FMJyBzZWN0aW9uIGZyb20gdGhlIE15U1FMIG1hbnVhbC4ARm91bmQgYW4gZW50cnkgaW4gdGhlICdkYicgdGFibGUgd2l0aCBlbXB0eSBkYXRhYmFzZSBuYW1lOyBTa2lwcGVkACdkYicgZW50cnkgJyVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4AJ2RiJyBlbnRyeSAnJXMgJXNAJXMnIGhhZCBkYXRhYmFzZSBpbiBtaXhlZCBjYXNlIHRoYXQgaGFzIGJlZW4gZm9yY2VkIHRvIGxvd2VyY2FzZSBiZWNhdXNlIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgaXMgc2V0LiBJdCB3aWxsIG5vdCBiZSBwb3NzaWJsZSB0byByZW1vdmUgdGhpcyBwcml2aWxlZ2UgdXNpbmcgUkVWT0tFLgBUaGUgc3lzdGVtIHRhYmxlIG15c3FsLnByb3hpZXNfcHJpdiBpcyBtaXNzaW5nLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEZhdGFsIGVycm9yOiBDYW4ndCBvcGVuIGFuZCBsb2NrIHByaXZpbGVnZSB0YWJsZXM6ICVzAEZhdGFsOiBjYW4ndCBpbml0aWFsaXplIGdyYW50IHN1YnN5c3RlbSAtICclcycAJ3Byb2NzX3ByaXYnIGVudHJ5ICclcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuACdwcm9jc19wcml2JyBlbnRyeSAnJXMnIGlnbm9yZWQsIGJhZCByb3V0aW5lIHR5cGUAJ3RhYmxlc19wcml2JyBlbnRyeSAnJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgBGYWlsZWQgdG8gYWRkICVzIGluIGV4dHJhX3VzZXJzLiBCaW5hcnkgbG9nIGVudHJ5IG1heSBtaXNzIHNvbWUgb2YgdGhlIHVzZXJzLgBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHNjaGVtYSAnJXMnIGRvZXMgbm90IGV4aXN0LgBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlICclcycgZG9lcyBub3QgZXhpc3QuAEZhaWxlZCB0byBpbml0aWFsaXplIEREIFN0b3JhZ2UgRW5naW5lAEZvdW5kIHBhcnRpYWxseSB1cGdyYWRlZCBERC4gQWJvcnRpbmcgdXBncmFkZSBhbmQgZGVsZXRpbmcgYWxsIEREIHRhYmxlcy4gU3RhcnQgdGhlIHVwZ3JhZGUgcHJvY2VzcyBhZ2Fpbi4ARm91bmQgLmZybSBmaWxlIHdpdGggc2FtZSBuYW1lIGFzIG9uZSBvZiB0aGUgRGljdGlvbmFyeSBUYWJsZXMuAENyZWF0ZWQgRGF0YSBEaWN0aW9uYXJ5IGZvciB1cGdyYWRlAENhbid0IGZpbmQgZXJyb3ItbWVzc2FnZSBmaWxlICclcycuIENoZWNrIGVycm9yLW1lc3NhZ2UgZmlsZSBsb2NhdGlvbiBhbmQgJ2xjLW1lc3NhZ2VzLWRpcicgY29uZmlndXJhdGlvbiBkaXJlY3RpdmUuAFVzaW5nIHByZSA1LjUgc2VtYW50aWNzIHRvIGxvYWQgZXJyb3IgbWVzc2FnZXMgZnJvbSAlcy4gSWYgdGhpcyBpcyBub3QgaW50ZW5kZWQsIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB2YWxpZCB1c2FnZSBvZiAtLWxjLW1lc3NhZ2VzLWRpciBhbmQgLS1sYW5ndWFnZSBwYXJhbWV0ZXJzLgBFcnJvciBtZXNzYWdlIGZpbGUgJyVzJyBoYWQgb25seSAlZCBlcnJvciBtZXNzYWdlcywgYnV0IGl0IHNob3VsZCBjb250YWluIGF0IGxlYXN0ICVkIGVycm9yIG1lc3NhZ2VzLiBDaGVjayB0aGF0IHRoZSBhYm92ZSBmaWxlIGlzIHRoZSByaWdodCB2ZXJzaW9uIGZvciB0aGlzIHByb2dyYW0hAE5vdCBlbm91Z2ggbWVtb3J5IGZvciBtZXNzYWdlZmlsZSAnJXMnAENhbid0IHJlYWQgZnJvbSBtZXNzYWdlZmlsZSAnJXMnAEZvdW5kIGluY29tcGF0aWJsZSBERUNJTUFMIGZpZWxkICclcycgaW4gJXM7IFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCVzYCBGT1JDRSIgdG8gZml4IGl0IQBGb3VuZCBpbmNvbXBhdGlibGUgWUVBUih4KSBmaWVsZCAnJXMnIGluICVzOyBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlc2AgRk9SQ0UiIHRvIGZpeCBpdCEAJyVzJyBoYWQgbm8gb3IgaW52YWxpZCBjaGFyYWN0ZXIgc2V0LCBhbmQgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0IGlzIG11bHRpLWJ5dGUsIHNvIGNoYXJhY3RlciBjb2x1bW4gc2l6ZXMgbWF5IGhhdmUgY2hhbmdlZABGb3VuZCB3cm9uZyBrZXkgZGVmaW5pdGlvbiBpbiAlczsgUGxlYXNlIGRvICJBTFRFUiBUQUJMRSBgJXNgIEZPUkNFICIgdG8gZml4IGl0IQBVbmFibGUgdG8gb3BlbiBmaWxlICVzAEVycm9yIGluIHJlYWRpbmcgZmlsZSAlcwBUYWJsZSAnJXMnIHdhcyBjcmVhdGVkIHdpdGggYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBNeVNRTCBhbmQgY2Fubm90IGJlIHJlYWQAVW5hYmxlIHRvIHJlYWQgdmlldyAlcwBGaWxlICVzIGhhcyB1bmtub3duIHR5cGUgaW4gaXRzIGhlYWRlci4ASW5jb3JyZWN0IGluZm9ybWF0aW9uIGluIGZpbGUgJXMAQ2FuJ3Qgb3BlbiBhbmQgbG9jayBwcml2aWxlZ2UgdGFibGVzOiAlcwBQbHVnaW4gJyVzJyBjYW5ub3Qgc3Vic2NyaWJlIHRvIE1ZU1FMX0FVRElUX0FVVEhPUklaQVRJT04gZXZlbnRzLiBDdXJyZW50bHkgbm90IHN1cHBvcnRlZC4AUGx1Z2luICclcycgaGFzIGludmFsaWQgZGF0YS4ARmF0YWwgZXJyb3I6IE9PTSB3aGlsZSBpbml0aWFsaXppbmcgdGltZSB6b25lcwBDYW4ndCBvcGVuIGFuZCBsb2NrIHRpbWUgem9uZSB0YWJsZTogJXMgdHJ5aW5nIHRvIGxpdmUgd2l0aG91dCB0aGVtAEZhdGFsIGVycm9yOiBPdXQgb2YgbWVtb3J5IHdoaWxlIGxvYWRpbmcgbXlzcWwudGltZV96b25lX2xlYXBfc2Vjb25kIHRhYmxlAEZhdGFsIGVycm9yOiBXaGlsZSBsb2FkaW5nIG15c3FsLnRpbWVfem9uZV9sZWFwX3NlY29uZCB0YWJsZTogdG9vIG11Y2ggbGVhcHMARmF0YWwgZXJyb3I6IEVycm9yIHdoaWxlIGxvYWRpbmcgbXlzcWwudGltZV96b25lX2xlYXBfc2Vjb25kIHRhYmxlAEZhdGFsIGVycm9yOiBJbGxlZ2FsIG9yIHVua25vd24gZGVmYXVsdCB0aW1lIHpvbmUgJyVzJwBDYW4ndCBmaW5kIGRlc2NyaXB0aW9uIG9mIHRpbWUgem9uZSAnJS4qcycAQ2FuJ3QgZmluZCBkZXNjcmlwdGlvbiBvZiB0aW1lIHpvbmUgJyV1JwBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uX3R5cGUgdGFibGU6IHRvbyBiaWcgdHJhbnNpdGlvbiB0eXBlIGlkAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb25fdHlwZSB0YWJsZTogbm90IGVub3VnaCByb29tIGZvciBhYmJyZXZpYXRpb25zAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb25fdHlwZSB0YWJsZQBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uIHRhYmxlOiB0b28gbXVjaCB0cmFuc2l0aW9ucwBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uIHRhYmxlOiBiYWQgdHJhbnNpdGlvbiB0eXBlIGlkAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb24gdGFibGUAbG9hZGluZyB0aW1lIHpvbmUgd2l0aG91dCB0cmFuc2l0aW9uIHR5cGVzAE91dCBvZiBtZW1vcnkgd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24AVW5hYmxlIHRvIGJ1aWxkIG1rdGltZSBtYXAgZm9yIHRpbWUgem9uZQBPdXQgb2YgbWVtb3J5IHdoaWxlIGxvYWRpbmcgdGltZSB6b25lAEZhdGFsIGVycm9yOiBPdXQgb2YgbWVtb3J5IHdoaWxlIHNldHRpbmcgbmV3IHRpbWUgem9uZQBSZXBsaWNhIFNRTCB0aHJlYWQgaXMgc3RvcHBlZCBiZWNhdXNlIFVOVElMIGNvbmRpdGlvbiBpcyBiYWQoJXM6JWxsdSkuAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBpdHMgVU5USUwgcG9zaXRpb24gJWxsdQBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIFVOVElMIFNRTF9CRUZPUkVfR1RJRFMgJXMgaXMgYWxyZWFkeSBhcHBsaWVkAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBVTlRJTCBTUUxfQkVGT1JFX0dUSURTICVzAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgaXQgcmVhY2hlZCBVTlRJTCBTUUxfQUZURVJfR1RJRFMgJXMAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYWNjb3JkaW5nIHRvIFVOVElMIFNRTF9BRlRFUl9NVFNfR0FQUyBhcyBpdCBoYXMgcHJvY2Vzc2VkIGFsbCBnYXAgdHJhbnNhY3Rpb25zIGxlZnQgZnJvbSB0aGUgcHJldmlvdXMgcmVwbGljYSBzZXNzaW9uLgBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gaXMgbm90IGluc3RhbGxlZC4AVGhlIHRyYW5zYWN0aW9uIG93bmVkIEdUSUQgaXMgYWxyZWFkeSBpbiB0aGUgJXMgdGFibGUsIHdoaWNoIGlzIGNhdXNlZCBieSBhbiBleHBsaWNpdCBtb2RpZnlpbmcgZnJvbSB1c2VyIGNsaWVudC4ARmFpbGVkIHRvIGRlbGV0ZSB0aGUgcm93OiAnJXMnIGZyb20gdGhlIGd0aWRfZXhlY3V0ZWQgdGFibGUuAEZhaWxlZCB0byBjb21wcmVzcyB0aGUgZ3RpZF9leGVjdXRlZCB0YWJsZS4ARmFpbGVkIHRvIGNvbXByZXNzIHRoZSBndGlkX2V4ZWN1dGVkIHRhYmxlLCBiZWNhdXNlIGl0IGlzIGZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgVEhELgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQgYXR0cmlidXRlIHdoZW4gY3JlYXRpbmcgY29tcHJlc3Npb24gdGhyZWFkLgBDYW4gbm90IGNyZWF0ZSB0aHJlYWQgdG8gY29tcHJlc3MgZ3RpZF9leGVjdXRlZCB0YWJsZSAoZXJybm89ICVkKQBDb3VsZCBub3Qgam9pbiBndGlkX2V4ZWN1dGVkIHRhYmxlIGNvbXByZXNzaW9uIHRocmVhZC4gZXJyb3I6JWQAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogSW5pdGlhbGl6ZSBzZWN1cml0eSBkZXNjcmlwdG9yOiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBTZXQgc2VjdXJpdHkgZGVzY3JpcHRvcjogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogTmFtZWQgUGlwZSAiJXMiIGFscmVhZHkgaW4gdXNlLgBOREIgUmVwbGljYSA6IEF0IFNRTCB0aHJlYWQgc3RhcnQgYXBwbHlpbmcgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBmcm9tIFNvdXJjZSBTZXJ2ZXJJZCAldSB3aGljaCBpcyBsb3dlciB0aGFuIHByZXZpb3VzbHkgYXBwbGllZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpLiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuICBDaGVjayByZXBsaWNhIHBvc2l0aW9uaW5nLgBOREIgUmVwbGljYSA6IFNRTCB0aHJlYWQgc3RvcHBlZCBhcyBhcHBseWluZyBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGZyb20gU291cmNlIFNlcnZlcklkICV1IHdoaWNoIGlzIGxvd2VyIHRoYW4gcHJldmlvdXNseSBhcHBsaWVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdQBOREIgUmVwbGljYSA6IFNRTCB0aHJlYWQgc3RvcHBlZCBhcyBhdHRlbXB0ZWQgdG8gcmVhcHBseSBhbHJlYWR5IGNvbW1pdHRlZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGZyb20gc2VydmVyIGlkICV1LiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuAE5EQiBSZXBsaWNhIDogU1FMIHRocmVhZCBzdG9wcGVkIGFzIGF0dGVtcHRpbmcgdG8gYXBwbHkgbmV3IGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgd2hpbGUgbG93ZXIgcmVjZWl2ZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBoYXMgbm90IGJlZW4gY29tbWl0dGVkLiAgU291cmNlIHNlcnZlciBpZCA6ICV1LiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUuAE5EQiBSZXBsaWNhOiBtaXNzaW5nIGRhdGEgZm9yICVzIHRpbWVzdGFtcCBjb2x1bW4gJXUuAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyBsb2dnaW5nIGV4Y2VwdGlvbnMgdG8gJXMuJXMATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIDogJXMsIGxvdyBlcG9jaCByZXNvbHV0aW9uAEZvdW5kIHVuZXhwZWN0ZWQgZmllbGQgdHlwZSAldQBGYWlsZWQgdG8gY3JlYXRlIE5kYkluZm8ARmFpbGVkIHRvIGluaXQgTmRiSW5mbwBuZGJfc2VyaWFsaXplX2NvbmQ6IFVuZXhwZWN0ZWQgbWlzbWF0Y2ggb2YgZm91bmQgYW5kIGV4cGVjdGVkIG51bWJlciBvZiBmdW5jdGlvbiBhcmd1bWVudHMgJXUAJXMgLSAlcy4lcwAlcwBJbmZvIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBvcGVuZWQuAEluZm8gdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIHNjYW5uZWQuAENvcnJ1cHRlZCB0YWJsZSAlcy4lcy4gQ2hlY2sgb3V0IHRhYmxlIGRlZmluaXRpb24uAEluZm8gdGFibGUgaGFzIGEgcHJvYmxlbSB3aXRoIGl0cyBrZXkgZmllbGQocykuIFRhYmxlICclcy4lcycgZXhwZWN0ZWQgZmllbGQgIyV1IHRvIGJlICclcycgYnV0IGZvdW5kICclcycgaW5zdGVhZC4AQ2hvb3Npbmcgd29ya2VyIGlkICVsdSwgdGhlIGZvbGxvd2luZyBpcyBnb2luZyB0byBiZSAlbHUAVHJhbnNhY3Rpb24gaXMgdGFnZ2VkIHdpdGggaW5jb25zaXN0ZW50IGxvZ2ljYWwgdGltZXN0YW1wczogc2VxdWVuY2VfbnVtYmVyICglbGxkKSA8PSBsYXN0X2NvbW1pdHRlZCAoJWxsZCkAVHJhbnNhY3Rpb24ncyBzZXF1ZW5jZSBudW1iZXIgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhhdCBvZiBhIHByZWNlZGluZyBvbmU6IHNlcXVlbmNlX251bWJlciAoJWxsZCkgPD0gcHJldmlvdXMgc2VxdWVuY2VfbnVtYmVyICglbGxkKQBGb3IgdGhlIGNyZWF0aW9uIG9mIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIGFuZCBhcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcmllcyBtdXN0IGJlIHNldCB0byBUQUJMRQBGb3IgdGhlIGNyZWF0aW9uIG9mIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHRoZSBzZXJ2ZXIgaWQgbXVzdCBiZSBkaWZmZXJlbnQgZnJvbSAwAFJlcGxpY2E6IFdyb25nIHJlcG9zaXRvcnkuIFJlcG9zaXRvcnkgc2hvdWxkIGJlIFRBQkxFAEVycm9yIGNyZWF0aW5nIGNvbm5lY3Rpb24gbWV0YWRhdGE6ICVzLgBFcnJvciBjaGFuZ2luZyB0aGUgdHlwZSBvZiBjb25uZWN0aW9uIG1ldGFkYXRhJ3MgcmVwb3NpdG9yeTogJXMuAEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHJlbGF5IGxvZyByZXBvc2l0b3J5IGJlY2F1c2UgdGhlcmUgYXJlIHdvcmtlcnMgcmVwb3NpdG9yaWVzIHdpdGggcG9zc2libGUgZXhlY3V0aW9uIGdhcHMuIFRoZSB2YWx1ZSBvZiAtLXJlbGF5X2xvZ19pbmZvX3JlcG9zaXRvcnkgaXMgYWx0ZXJlZCB0byBvbmUgb2YgdGhlIGZvdW5kIFdvcmtlciByZXBvc2l0b3JpZXMuIFRoZSBnYXBzIGhhdmUgdG8gYmUgc29ydGVkIG91dCBiZWZvcmUgcmVzdW1pbmcgd2l0aCB0aGUgdHlwZSBjaGFuZ2UuAEVycm9yIGNyZWF0aW5nIGFwcGxpZXIgbWV0YWRhdGE6ICVzLgBFcnJvciBjaGFuZ2luZyB0aGUgdHlwZSBvZiBhcHBsaWVyIG1ldGFkYXRhJ3MgcmVwb3NpdG9yeTogJXMuAENvdWxkIG5vdCBkZWxldGUgZnJvbSBSZXBsaWNhIFdvcmtlcnMgaW5mbyByZXBvc2l0b3J5LgBDb3VsZCBub3Qgc3RvcmUgdGhlIHJlc2V0IFJlcGxpY2EgV29ya2VyIHN0YXRlIGludG8gdGhlIHJlcGxpY2EgaW5mbyByZXBvc2l0b3J5LgBFcnJvciBpbiBjaGVja2luZyAlcyByZXBvc2l0b3J5IGluZm8gdHlwZSBvZiAlcy4AUmVwbGljYTogJXMAUmVwbGljYTogQ291bGQgbm90IGNyZWF0ZSBjaGFubmVsIGxpc3QAUmVwbGljYTogVGhpcyByZXBsaWNhIHdhcyBhIG11bHRpc291cmNlZCByZXBsaWNhIHByZXZpb3VzbHkgd2hpY2ggaXMgc3VwcG9ydGVkIG9ubHkgYnkgYm90aCBUQUJMRSBiYXNlZCBjb25uZWN0aW9uIG1ldGFkYXRhIGFuZCBhcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcmllcy4gRm91bmQgb25lIG9yIGJvdGggb2YgdGhlIGluZm8gcmVwb3MgdG8gYmUgdHlwZSBGSUxFLiBTZXQgYm90aCByZXBvcyB0byB0eXBlIFRBQkxFLgBSZXBsaWNhOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZm9yIGNoYW5uZWwgJyVzJzsgaXRzIHJlY29yZCBtYXkgc3RpbGwgYmUgcHJlc2VudCBpbiB0aGUgYXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3J5LCBjb25zaWRlciBkZWxldGluZyBpdC4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlJXMAUmVwbGljYTogRmFpbGVkIHRvIGNyZWF0ZSBhIGNoYW5uZWwgZnJvbSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkuAEZhaWxlZCB0byBjcmVhdGUgYSBuZXcgaW5mbyBmaWxlIChmaWxlICclcycsIGVycm5vICVkKQBGYWlsZWQgdG8gY3JlYXRlIGEgY2FjaGUgb24gaW5mbyBmaWxlIChmaWxlICclcycpAEZhaWxlZCB0byBvcGVuIHRoZSBleGlzdGluZyBpbmZvIGZpbGUgKGZpbGUgJyVzJywgZXJybm8gJWQpAFNlcnZlciBvdmVyY29tZXMgdGhlIHRlbXBvcmFyeSAnb3V0IG9mIG1lbW9yeScgaW4gJyVkJyB0cmllcyB3aGlsZSBhbGxvY2F0aW5nIGEgbmV3IGNodW5rIG9mIGludGVydmFscyBmb3Igc3RvcmluZyBHVElEcy4AVW5rbm93biBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuc2VydmVyX2Nvc3QgdGFibGUASW52YWxpZCB2YWx1ZSBmb3IgY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLnNlcnZlcl9jb3N0IHRhYmxlOiAlLjFmAFVua25vd24gY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlAFVua25vd24gc3RvcmFnZSBlbmdpbmUgIiVzIiBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZQBJbnZhbGlkIGRldmljZSB0eXBlICVkIGZvciAiJXMiIHN0b3JhZ2UgZW5naW5lIGZvciBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUASW52YWxpZCB2YWx1ZSBmb3IgY29zdCBjb25zdGFudCAiJXMiIGZvciAiJXMiIHN0b3JhZ2UgZW5naW5lIGFuZCBkZXZpY2UgdHlwZSAlZCBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZTogJS4xZgBFcnJvciB3aGlsZSByZWFkaW5nIGZyb20gbXlzcWwuc2VydmVyX2Nvc3QgdGFibGUuAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJvbSBteXNxbC5lbmdpbmVfY29zdCB0YWJsZS4ARmFpbGVkIHRvIG9wZW4gb3B0aW1pemVyIGNvc3QgY29uc3RhbnQgdGFibGVzAFVuc3VwcG9ydGVkIG5vbi1pZ25vcmFibGUgZXZlbnQgZmVkIGludG8gdGhlIGV2ZW50IHN0cmVhbS4AR1RJRF9MT0dfRVZFTlQgb3IgQU5PTllNT1VTX0dUSURfTE9HX0VWRU5UIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gJXMuAFFVRVJZKEJFR0lOKSBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtIGluIHRoZSBtaWRkbGUgb2YgYSAlcy4AUVVFUlkoQ09NTUlUIG9yIFJPTExCQUNLKSBvciBYSURfTE9HX0VWRU5UIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gJXMuAFFVRVJZKFhBIFJPTExCQUNLKSBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtICVzLgBFdmVudCBTY2hlZHVsZXI6IFslc10uWyVzLiVzXSBleGVjdXRpb24gZmFpbGVkLCBmYWlsZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyLgBFdmVudCBTY2hlZHVsZXI6IFslc10uWyVzLiVzXSBleGVjdXRpb24gZmFpbGVkLCB1c2VyIG5vIGxvbmdlciBoYXMgRVZFTlQgcHJpdmlsZWdlLgBFdmVudCBTY2hlZHVsZXI6ICVzZXJyb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mICVzLiVzAEV2ZW50IFNjaGVkdWxlcjogRHJvcHBpbmcgJXMuJXMATmRiIHNjaGVtYVslcy4lc106ICVzAEluIFJCUiBtb2RlLCBSZXBsaWNhIHJlY2VpdmVkIGluY29tcGF0aWJsZSBERUNJTUFMIGZpZWxkIChvbGQtc3R5bGUgZGVjaW1hbCBmaWVsZCkgZnJvbSBTb3VyY2Ugd2hpbGUgY3JlYXRpbmcgY29udmVyc2lvbiB0YWJsZS4gUGxlYXNlIGNvbnNpZGVyIGNoYW5naW5nIGRhdGF0eXBlIG9uIFNvdXJjZSB0byBuZXcgc3R5bGUgZGVjaW1hbCBieSBleGVjdXRpbmcgQUxURVIgY29tbWFuZCBmb3IgY29sdW1uIE5hbWU6ICVzLiVzLiVzLgByb290QGxvY2FsaG9zdCBpcyBjcmVhdGVkIHdpdGggYW4gZW1wdHkgcGFzc3dvcmQgISBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIG9mZiB0aGUgLS1pbml0aWFsaXplLWluc2VjdXJlIG9wdGlvbi4AQSB0ZW1wb3JhcnkgcGFzc3dvcmQgaXMgZ2VuZXJhdGVkIGZvciByb290QGxvY2FsaG9zdDogJXMARmFpbGVkIHRvIG9wZW4gdGhlIGJvb3RzdHJhcCBmaWxlICVzAEJvb3RzdHJhcHBpbmcgY29tcGxldGUALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGhhcyBmaWxlcyBpbiBpdC4gQWJvcnRpbmcuAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgb24gYW4gZXhpc3RpbmcgZGF0YSBkaXJlY3RvcnkuAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBleGlzdHMgYW5kIHRoZSBwYXRoIGlzIHRvbyBsb25nLiBBYm9ydGluZy4ALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMgbm90IHdyaXRhYmxlLiBBYm9ydGluZy4AQ3JlYXRpbmcgdGhlIGRhdGEgZGlyZWN0b3J5ICVzAFN0YXJ0IGJpbmxvZ19kdW1wIHRvIHNvdXJjZV90aHJlYWRfaWQoJXUpIHJlcGxpY2Ffc2VydmVyKCV1KSwgcG9zKCVzLCAlbGx1KQBzb3VyY2Ugc2VuZHMgaGVhcnRiZWF0IG1lc3NhZ2UAdGhlIHJlc3Qgb2YgaGVhcnRiZWF0IGluZm8gc2tpcHBlZCAuLi4AU291cmNlIGlzIGNvbmZpZ3VyZWQgdG8gbG9nIHJlcGxpY2F0aW9uIGV2ZW50cyB3aXRoIGNoZWNrc3VtLCBidXQgd2lsbCBub3Qgc2VuZCBzdWNoIGV2ZW50cyB0byByZXBsaWNhcyB0aGF0IGNhbm5vdCBwcm9jZXNzIHRoZW0ATkRCOiBRdWVyeSAnJXMnIGZhaWxlZCwgZXJyb3I6ICVkOiAlcwBLaWxsaW5nIHRocmVhZCAlbHUAUGx1Z2luICVzIGlzIGRlaW5pdGlhbGl6aW5nIGEgdGhyZWFkIGJ1dCBsZWZ0IGEgc2Vzc2lvbiBhdHRhY2hlZC4gRGV0YWNoaW5nIGl0IGZvcmNlZnVsbHkuAEZhaWxlZCB0byBkZXRhY2ggdGhlIHNlc3Npb24uAENsb3NlZCBmb3JjZWZ1bGx5ICV1IHNlc3Npb24lcyBsZWZ0IG9wZW5lZCBieSBwbHVnaW4gJXMARmFpbGVkIHRvIGRlY3JlbWVudCB0aGUgbnVtYmVyIG9mIHRocmVhZHMAUGx1Z2luICVzIGRpZCBub3QgZGVpbml0aWFsaXplICV1IHRocmVhZHMAS2lsbGVkICV1IHRocmVhZHMgb2YgcGx1Z2luICVzAE5EQiBSZXBsaWNhIDogQ291bGQgbm90IGRldGVybWluZSBtYXhpbXVtIHJlcGxpY2F0ZWQgZXBvY2ggZnJvbSAlcy4lcyBhdCBSZXBsaWNhIHN0YXJ0LCBlcnJvciAldSAlcwBOREIgUmVwbGljYSA6IE1heFJlcGxpY2F0ZWRFcG9jaCBzZXQgdG8gJWxsdSAoJXUvJXUpIGF0IFJlcGxpY2Egc3RhcnQATkRCOiBOb2RlSUQgaXMgJWx1LCBtYW5hZ2VtZW50IHNlcnZlciAnJXM6JWx1JwB0aWQgJXU6IG5vZGVbJXVdIHRyYW5zYWN0aW9uX2hpbnQ9JXUsIHRyYW5zYWN0aW9uX25vX2hpbnQ9JXUATkRCIEludGVybmFsIGVycm9yOiBEZWZhdWx0IHZhbHVlcyBkaWZmZXIgZm9yIGNvbHVtbiAldSwgbmRiX2RlZmF1bHQ6ICVkAE5EQiBJbnRlcm5hbCBlcnJvcjogQ29sdW1uICV1IGhhcyBuYXRpdmUgZGVmYXVsdCwgYnV0IHNob3VsZG4ndC4gRmxhZ3M9JXUsIHR5cGU9JXUAZmllbGRbIG5hbWU6ICclcycsIHR5cGU6ICV1LCByZWFsX3R5cGU6ICV1LCBmbGFnczogMHgleCwgaXNfbnVsbDogJWRdAG5kYkNvbFtuYW1lOiAnJXMnLCB0eXBlOiAldSwgY29sdW1uX25vOiAlZCwgbnVsbGFibGU6ICVkXQBmaXhfdW5pcXVlX2luZGV4X2F0dHJfb3JkZXI6IG15X21hbGxvYygldSkgZmFpbHVyZQBOREIgUmVwbGljYSA6IE1hbGZvcm1lZCBldmVudCByZWNlaXZlZCBvbiB0YWJsZSAlcyBjYW5ub3QgcGFyc2UuICBTdG9wcGluZyBSZXBsaWNhLgBOREIgUmVwbGljYSA6IENvbmZsaWN0IGZ1bmN0aW9uICVzIGRlZmluZWQgb24gdGFibGUgJXMgcmVxdWlyZXMgbmRiX3JlcGxpY2FfY29uZmxpY3Rfcm9sZSB2YXJpYWJsZSB0byBiZSBzZXQuICBTdG9wcGluZyByZXBsaWNhLgBOREIgUmVwbGljYSA6IFRyYW5zYWN0aW9uYWwgY29uZmxpY3QgZGV0ZWN0aW9uIGRlZmluZWQgb24gdGFibGUgJXMsIGJ1dCBldmVudHMgcmVjZWl2ZWQgd2l0aG91dCB0cmFuc2FjdGlvbiBpZHMuICBDaGVjayAtLW5kYi1sb2ctdHJhbnNhY3Rpb24taWQgc2V0dGluZyBvbiB1cHN0cmVhbSBDbHVzdGVyLgBOREIgUmVwbGljYSA6IEJpbmxvZyBldmVudCBvbiB0YWJsZSAlcyBtaXNzaW5nIGluZm8gbmVjZXNzYXJ5IGZvciBjb25mbGljdCBkZXRlY3Rpb24uICBDaGVjayBiaW5sb2cgZm9ybWF0IG9wdGlvbnMgb24gdXBzdHJlYW0gY2x1c3Rlci4ARXJyb3IgJWx1IGluIHJlYWRBdXRvSW5jcmVtZW50VmFsdWUoKTogJXMAZm91bmQgdW5jb21taXR0ZWQgYXV0b2NvbW1pdCtyYndyIHRyYW5zYWN0aW9uLCBjb21taXQgc3RhdHVzOiAlZABOZGIgcmVwbGljYSByZXRyaWVkIHRyYW5zYWN0aW9uICV1IHRpbWUocykgaW4gdmFpbi4gIEdpdmluZyB1cC4ARXJyb3IgJWx1IGluIDo6dXBkYXRlX2NyZWF0ZV9pbmZvKCk6ICVzAE5EQjogYWxsb2NhdGluZyB0YWJsZSBzaGFyZSBmb3IgJXMgZmFpbGVkAE5EQiBCaW5sb2c6ICglZCklcwBOREIgQmlubG9nOiBDUkVBVEUgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IEZBSUxFRCBDUkVBVEUgVEFCTEUgZXZlbnQgb3BlcmF0aW9ucy4gRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IFJFTkFNRSBFdmVudDogJXMATkRCIEJpbmxvZzogRkFJTEVEIGNyZWF0ZSBldmVudCBvcGVyYXRpb25zIGR1cmluZyBSRU5BTUUuIEV2ZW50ICVzAFVuZXhwZWN0ZWQgcmVuYW1lIGNhc2UgZGV0ZWN0ZWQsIHNxbF9jb21tYW5kOiAlZABFcnJvciAlbHUgaW4gOjpnZXRfYXV0b19pbmNyZW1lbnQoKTogJXMAQ2FsbGluZyBuZGJjbHVzdGVyX2NyZWF0ZV9iaW5sb2dfc2V0dXAoJXMpIGluIDo6b3BlbgB0YWJsZSAnJXMnIG9wZW5lZCByZWFkIG9ubHkATkRCOiAnLS1pbml0aWFsaXplJyAtPiBuZGJjbHVzdGVyIHBsdWdpbiBkaXNhYmxlZABOREI6IENoYW5nZWQgZ2xvYmFsIHZhbHVlIG9mIGJpbmxvZ19mb3JtYXQgZnJvbSBTVEFURU1FTlQgdG8gTUlYRUQATkRCX1NIQVJFOiB0cmFpbGluZyBzaGFyZSAlcywgcmVsZWFzZWQgYnkgY2xvc2VfY2FjaGVkX3RhYmxlcwBOREJfU0hBUkU6ICVzIGFscmVhZHkgZXhpc3RzIHVzZV9jb3VudD0lZC4gTW92aW5nIGF3YXkgZm9yIHNhZmV0eSwgYnV0IHBvc3NpYmxlIG1lbWxlYWsuAGhhbmRsZV90cmFpbGluZ19zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX2dldF9zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX3JlYWxfZnJlZV9zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX3JlYWxfZnJlZV9zaGFyZTogJXMsIHN0aWxsIG9wZW4gLSBpZ25vcmVkICdmcmVlJyAobGVha2VkPykAbmRiY2x1c3Rlcl9mcmVlX3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfbWFya19zaGFyZV9kcm9wcGVkOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfbWFya19zaGFyZV9kcm9wcGVkOiBkZXN0cm95cyBzaGFyZSAlcwBDb3VsZCBub3QgYWxsb2NhdGUgVGhkX25kYiBvYmplY3QATkRCIEJpbmxvZzogTmRiIHRhYmxlcyBpbml0aWFsbHkgcmVhZCBvbmx5LgBuZGIgdXRpbCB0aHJlYWQ6IG1hbGxvYyBmYWlsdXJlLCBxdWVyeSBjYWNoZSBub3QgbWFpbnRhaW5lZCBwcm9wZXJseQBUcnlpbmcgdG8gc2V0IG5kYl9yZWN2X3RocmVhZF9jcHVfbWFzayB0byBpbGxlZ2FsIHZhbHVlID0gJXMsIGlnbm9yZWQAVHJ5aW5nIHRvIHNldCB0b28gbWFueSBDUFUncyBpbiBuZGJfcmVjdl90aHJlYWRfY3B1X21hc2ssIGlnbm9yZWQgdGhpcyB2YXJpYWJsZSwgZXJyb25ldXMgdmFsdWUgPSAlcwBkYnVnX2NoZWNrX3NoYXJlcyBvcGVuOgAgICVzLiVzOiBzdGF0ZTogJXMoJXUpIHVzZV9jb3VudDogJXUAZGJ1Z19jaGVja19zaGFyZXMgZHJvcHBlZDoASW52YWxpZCAob2xkPykgdGFibGUgb3IgZGF0YWJhc2UgbmFtZSAnJXMnAFJlY292ZXJpbmcgYWZ0ZXIgYSBjcmFzaCB1c2luZyAlcwBDYW5ub3QgcGVyZm9ybSBhdXRvbWF0aWMgY3Jhc2ggcmVjb3Zlcnkgd2hlbiAtLXRjLWhldXJpc3RpYy1yZWNvdmVyIGlzIHVzZWQAQmFkIG1hZ2ljIGhlYWRlciBpbiB0YyBsb2cAUmVjb3ZlcnkgZmFpbGVkISBZb3UgbXVzdCBlbmFibGUgZXhhY3RseSAlZCBzdG9yYWdlIGVuZ2luZXMgdGhhdCBzdXBwb3J0IHR3by1waGFzZSBjb21taXQgcHJvdG9jb2wAQ3Jhc2ggcmVjb3ZlcnkgZmFpbGVkLiBFaXRoZXIgY29ycmVjdCB0aGUgcHJvYmxlbSAoaWYgaXQncywgZm9yIGV4YW1wbGUsIG91dCBvZiBtZW1vcnkgZXJyb3IpIGFuZCByZXN0YXJ0LCBvciBkZWxldGUgdGMgbG9nIGFuZCBzdGFydCBteXNxbGQgd2l0aCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyPXtjb21taXR8cm9sbGJhY2t9AEhldXJpc3RpYyBjcmFzaCByZWNvdmVyeSBtb2RlAEhldXJpc3RpYyBjcmFzaCByZWNvdmVyeSBmYWlsZWQAUGxlYXNlIHJlc3RhcnQgbXlzcWxkIHdpdGhvdXQgLS10Yy1oZXVyaXN0aWMtcmVjb3ZlcgBGYWlsZWQgdG8gY3JlYXRlIG9yIHJlY292ZXIgcmVwbGljYXRpb24gaW5mbyByZXBvc2l0b3JpZXMuAERldGVjdGVkIG1pc2NvbmZpZ3VyYXRpb246IHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIGNvbmZpZ3VyZWQgd2l0aCBBVVRPX1BPU0lUSU9OID0gMSwgYnV0IHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCAtLWd0aWQtbW9kZT1vZmYuIEVpdGhlciByZWNvbmZpZ3VyZSByZXBsaWNhdGlvbiB1c2luZyBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMCBGT1IgQ0hBTk5FTCAnJS4xOTJzJywgb3IgY2hhbmdlIEdUSURfTU9ERSB0byBzb21lIHZhbHVlIG90aGVyIHRoYW4gT0ZGLCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkLgBSZXBsaWNhOiBDb3VsZCBub3Qgc3RhcnQgcmVwbGljYSBmb3IgY2hhbm5lbCAnJXMnLiBvcGVyYXRpb24gZGlzY29udGludWVkAFJlcGxpY2E6IENvdWxkIG5vdCBzdG9wIHJlcGxpY2EgZm9yIGNoYW5uZWwgJyVzJyBvcGVyYXRpb24gZGlzY29udGludWVkAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogQ291bGQgbm90IGxvY2F0ZSByb3RhdGUgZXZlbnQgZnJvbSB0aGUgc291cmNlLgBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IEVycm9yIHJlYWRpbmcgZXZlbnRzIGZyb20gcmVsYXkgbG9nOiAlZABFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IEVycm9yIHdoaWxlIGZyZWVpbmcgSU9fQ0FDSEUgb2JqZWN0AFJlbGF5IGxvZyByZWNvdmVyeSBza2lwcGVkIGZvciBncm91cCByZXBsaWNhdGlvbiBjaGFubmVsLgBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6ICVzAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogQ291bGQgbm90IHJlYWQgcmVsYXkgbG9nIGluZGV4IGZpbGUgZHVlIHRvIGFuIElPIGVycm9yLgBSZWNvdmVyeSBmcm9tIHNvdXJjZSBwb3MgJWxkIGFuZCBmaWxlICVzJXMuIFByZXZpb3VzIHJlbGF5IGxvZyBwb3MgYW5kIHJlbGF5IGxvZyBmaWxlIGhhZCBiZWVuIHNldCB0byAlbGxkLCAlcyByZXNwZWN0aXZlbHkuAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogcmVwbGljYXRlX3NhbWVfc2VydmVyX2lkIGlzIGluIHVzZSBhbmQgc3FsIHRocmVhZCdzIHBvc2l0aW9ucyBhcmUgbm90IGluaXRpYWxpemVkLCBoZW5jZSByZWxheSBsb2cgcmVjb3ZlcnkgY2Fubm90IGhhcHBlbi4ATVRBIHJlY292ZXJ5OiBzdGFydGluZyBjb29yZGluYXRvciB0aHJlYWQgdG8gZmlsbCBNVEEgZ2Fwcy4ATVRBIHJlY292ZXJ5OiBmYWlsZWQgdG8gc3RhcnQgdGhlIGNvb3JkaW5hdG9yIHRocmVhZC4gQ2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgBNVEEgcmVjb3Zlcnk6IGF1dG9tYXRpYyByZWNvdmVyeSBmYWlsZWQuIEVpdGhlciB0aGUgcmVwbGljYSBzZXJ2ZXIgaGFkIHN0b3BwZWQgZHVlIHRvIGFuIGVycm9yIGR1cmluZyBhbiBlYXJsaWVyIHNlc3Npb24gb3IgcmVsYXkgbG9ncyBhcmUgY29ycnVwdGVkLkZpeCB0aGUgY2F1c2Ugb2YgdGhlIHJlcGxpY2Egc2lkZSBlcnJvciBhbmQgcmVzdGFydCB0aGUgcmVwbGljYSBzZXJ2ZXIgb3IgY29uc2lkZXIgdXNpbmcgUkVTRVQgUkVQTElDQS4ARmFpbGVkIHRvIG9wZW4gdGhlIHJlbGF5IGxvZyAnJXMnIChyZWxheV9sb2dfcG9zICVzKS4ATVRBIHJlY292ZXJ5OiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgBTZXJ2ZXIgaWQgbm90IHNldCwgd2lsbCBub3Qgc3RhcnQgcmVwbGljYSVzAENhbid0IGNyZWF0ZSByZXBsaWNhIHRocmVhZCVzLgBUaGUgcmVwbGljYSBJTyB0aHJlYWQlcyB3YXMga2lsbGVkIHdoaWxlIGV4ZWN1dGluZyBpbml0aWFsaXphdGlvbiBxdWVyeSAnJXMnAFRoZSBzb3VyY2UncyBVVUlEIGhhcyBjaGFuZ2VkLCBhbHRob3VnaCB0aGlzIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyB5b3UgaGF2ZSBjaGFuZ2VkIGl0IG1hbnVhbGx5LiBUaGUgb2xkIFVVSUQgd2FzICVzLgBGb3VuZCBhIHNvdXJjZSB3aXRoIE15U1FMIHNlcnZlciB2ZXJzaW9uIG9sZGVyIHRoYW4gNS4wLiBXaXRoIGNoZWNrc3VtcyBlbmFibGVkIG9uIHRoZSByZXBsaWNhLCByZXBsaWNhdGlvbiBtaWdodCBub3Qgd29yayBjb3JyZWN0bHkuIFRvIGVuc3VyZSBjb3JyZWN0IHJlcGxpY2F0aW9uLCByZXN0YXJ0IHRoZSByZXBsaWNhIHNlcnZlciB3aXRoIC0tcmVwbGljYV9zcWxfdmVyaWZ5X2NoZWNrc3VtPTAuACJTRUxFQ1QgVU5JWF9USU1FU1RBTVAoKSIgZmFpbGVkIG9uIHNvdXJjZSwgZG8gbm90IHRydXN0IGNvbHVtbiBTZWNvbmRzX0JlaGluZF9Tb3VyY2Ugb2YgU0hPVyBSRVBMSUNBIFNUQVRVUy4gRXJyb3I6ICVzICglZCkARmFpbGVkIHRvIGZsdXNoIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeS4AVGhlIGxlbmd0aCBvZiByZXBvcnRfaG9zdCBpcyAlenUuIEl0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXggbGVuZ3RoKCVkKSwgc28gdGhpcyByZXBsaWNhIGNhbm5vdCBiZSByZWdpc3RlcmVkIHRvIHRoZSBzb3VyY2Ulcy4AVGhlIGxlbmd0aCBvZiByZXBvcnRfdXNlciBpcyAlenUuIEl0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXggbGVuZ3RoKCVkKSwgc28gdGhpcyByZXBsaWNhIGNhbm5vdCBiZSByZWdpc3RlcmVkIHRvIHRoZSBzb3VyY2Ulcy4AVGhlIGxlbmd0aCBvZiByZXBvcnRfcGFzc3dvcmQgaXMgJXp1LiBJdCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IGxlbmd0aCglZCksIHNvIHRoaXMgcmVwbGljYSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCB0byB0aGUgc291cmNlJXMuAEVycm9yIG9uICVzOiAlZCAgJXMsIHdpbGwgcmV0cnkgaW4gJWQgc2VjcwBFcnJvciByZWFkaW5nIHBhY2tldCBmcm9tIHNlcnZlciVzOiAlcyAoc2VydmVyX2Vycm5vPSVkKQBSZXBsaWNhJXM6IHJlY2VpdmVkIGVuZCBwYWNrZXQgZnJvbSBzZXJ2ZXIgZHVlIHRvIGR1bXAgdGhyZWFkIGJlaW5nIGtpbGxlZCBvbiBzb3VyY2UuIER1bXAgdGhyZWFkcyBhcmUga2lsbGVkIGZvciBleGFtcGxlIGR1cmluZyBzb3VyY2Ugc2h1dGRvd24sIGV4cGxpY2l0bHkgYnkgYSB1c2VyLCBvciB3aGVuIHRoZSBzb3VyY2UgcmVjZWl2ZXMgYSBiaW5sb2cgc2VuZCByZXF1ZXN0IGZyb20gYSBkdXBsaWNhdGUgc2VydmVyIFVVSUQgPCVzPiA6IEVycm9yICVzAE11bHRpLXRocmVhZGVkIHJlcGxpY2Egc3RhdGlzdGljcyVzOiBzZWNvbmRzIGVsYXBzZWQgPSAlbHU7IGV2ZW50cyBhc3NpZ25lZCA9ICVsbHU7IHdvcmtlciBxdWV1ZXMgZmlsbGVkIG92ZXIgb3ZlcnJ1biBsZXZlbCA9ICVsdTsgd2FpdGVkIGR1ZSBhIFdvcmtlciBxdWV1ZSBmdWxsID0gJWx1OyB3YWl0ZWQgZHVlIHRoZSB0b3RhbCBzaXplID0gJWx1OyB3YWl0ZWQgYXQgY2xvY2sgY29uZmxpY3RzID0gJWxsdSB3YWl0ZWQgKGNvdW50KSB3aGVuIFdvcmtlcnMgb2NjdXBpZWQgPSAlbHUgd2FpdGVkIHdoZW4gV29ya2VycyBvY2N1cGllZCA9ICVsbHUAUmVwbGljYSVzOiBNVEEgUmVjb3ZlcnkgaGFzIGNvbXBsZXRlZCBhdCByZWxheSBsb2cgJXMsIHBvc2l0aW9uICVsbHUgc291cmNlIGxvZyAlcywgcG9zaXRpb24gJWxsdS4ARXJyb3IgaW5pdGlhbGl6aW5nIHJlbGF5IGxvZyBwb3NpdGlvbiVzOiAlcwBSZXBsaWNhIEkvTyB0aHJlYWQlczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnLHJlcGxpY2F0aW9uIHN0YXJ0ZWQgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMAUmVwbGljYSBJL08gdGhyZWFkJXMga2lsbGVkIHdoaWxlIGNvbm5lY3RpbmcgdG8gc291cmNlAFJlcGxpY2EgSS9PIHRocmVhZCBjb3VsZG4ndCByZWdpc3RlciBvbiBzb3VyY2UARm9yY2luZyB0byByZWNvbm5lY3QgcmVwbGljYSBJL08gdGhyZWFkJXMARmFpbGVkIG9uIHJlcXVlc3RfZHVtcCgpJXMATG9nIGVudHJ5IG9uIHNvdXJjZSBpcyBsb25nZXIgdGhhbiByZXBsaWNhX21heF9hbGxvd2VkX3BhY2tldCAoJWx1KSBvbiByZXBsaWNhLiBJZiB0aGUgZW50cnkgaXMgY29ycmVjdCwgcmVzdGFydCB0aGUgc2VydmVyIHdpdGggYSBoaWdoZXIgdmFsdWUgb2YgcmVwbGljYV9tYXhfYWxsb3dlZF9wYWNrZXQAU3RvcHBpbmcgcmVwbGljYSBJL08gdGhyZWFkIGR1ZSB0byBvdXQtb2YtbWVtb3J5IGVycm9yIGZyb20gc291cmNlAFJlcGxpY2EgSS9PIHRocmVhZCBhYm9ydGVkIHdoaWxlIHdhaXRpbmcgZm9yIHJlbGF5IGxvZyBzcGFjZQBSZXBsaWNhIEkvTyB0aHJlYWQgZXhpdGluZyVzLCByZWFkIHVwIHRvIGxvZyAnJXMnLCBwb3NpdGlvbiAlcwBGYWlsZWQgZHVyaW5nIHJlcGxpY2Egd29ya2VyIGluaXRpYWxpemF0aW9uJXMAUmVwbGljYTogTVRBIGdyb3VwIHJlY292ZXJ5IGFwcGxpZXIgbWV0YWRhdGEgYmFzZWQgb24gV29ya2VyLUlkICVsdSwgZ3JvdXBfcmVsYXlfbG9nX25hbWUgJXMsIGdyb3VwX3JlbGF5X2xvZ19wb3MgJWxsdSBncm91cF9zb3VyY2VfbG9nX25hbWUgJXMsIGdyb3VwX3NvdXJjZV9sb2dfcG9zICVsbHUARXJyb3IgbG9va2luZyBmb3IgJXMuAFJlcGxpY2E6IE1UQSBncm91cCByZWNvdmVyeSBhcHBsaWVyIG1ldGFkYXRhIGdyb3VwX3NvdXJjZV9sb2dfbmFtZSAlcywgZXZlbnRfc291cmNlX2xvZ19wb3MgJWxsdS4ARXJyb3IgbG9va2luZyBmb3IgZmlsZSBhZnRlciAlcy4AVGhpcyBhbiBlcnJvciBjbnQgIT0gbXRhX2NoZWNrcG9pbnRfcGVyaW9kAEZhaWxlZCBkdXJpbmcgcmVwbGljYSB3b3JrZXIgdGhyZWFkIGNyZWF0aW9uJXMARmFpbGVkIGR1cmluZyByZXBsaWNhIHdvcmtlciB0aHJlYWQgY3JlYXRpb24lcyAoZXJybm89ICVkKQBGYWlsZWQgdG8gaW5pdCBwYXJ0aXRpb25zIGhhc2gAUmVwbGljYSBTUUwgdGhyZWFkIDogTkRCIDogVGFibGVzIG5vdCBhdmFpbGFibGUgYWZ0ZXIgJWx1IHNlY29uZHMuIENvbnNpZGVyIGluY3JlYXNpbmcgLS1uZGItd2FpdC1zZXR1cCB2YWx1ZQBSZXBsaWNhIFNRTCB0aHJlYWQlcyBpbml0aWFsaXplZCwgc3RhcnRpbmcgcmVwbGljYXRpb24gaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMsIHJlbGF5IGxvZyAnJXMnIHBvc2l0aW9uOiAlcwAnU1FMX1JFUExJQ0FfU0tJUF9DT1VOVEVSPSVsZCcgZXhlY3V0ZWQgYXQgcmVsYXlfbG9nX2ZpbGU9JyVzJywgcmVsYXlfbG9nX3Bvcz0nJWxkJywgc291cmNlX2xvZ19uYW1lPSclcycsIHNvdXJjZV9sb2dfcG9zPSclbGQnIGFuZCBuZXcgcG9zaXRpb24gYXQgcmVsYXlfbG9nX2ZpbGU9JyVzJywgcmVsYXlfbG9nX3Bvcz0nJWxkJywgc291cmNlX2xvZ19uYW1lPSclcycsIHNvdXJjZV9sb2dfcG9zPSclbGQnIABSZXBsaWNhIChhZGRpdGlvbmFsIGluZm8pOiAlcyBFcnJvcl9jb2RlOiBNWS0lMDZkAFJlcGxpY2E6ICVzIEVycm9yX2NvZGU6IE1ZLSUwNmQARXJyb3IgbG9hZGluZyB1c2VyLWRlZmluZWQgbGlicmFyeSwgcmVwbGljYSBTUUwgdGhyZWFkIGFib3J0ZWQuIEluc3RhbGwgdGhlIG1pc3NpbmcgbGlicmFyeSwgYW5kIHJlc3RhcnQgdGhlIHJlcGxpY2EgU1FMIHRocmVhZCB3aXRoICJTVEFSVCBSRVBMSUNBIi4gV2Ugc3RvcHBlZCBhdCBsb2cgJyVzJyBwb3NpdGlvbiAlcwBFcnJvciBydW5uaW5nIHF1ZXJ5LCByZXBsaWNhIFNRTCB0aHJlYWQgYWJvcnRlZC4gRml4IHRoZSBwcm9ibGVtLCBhbmQgcmVzdGFydCB0aGUgcmVwbGljYSBTUUwgdGhyZWFkIHdpdGggIlNUQVJUIFJFUExJQ0EiLiBXZSBzdG9wcGVkIGF0IGxvZyAnJXMnIHBvc2l0aW9uICVzAFJlcGxpY2EgU1FMIHRocmVhZCVzIGV4aXRpbmcsIHJlcGxpY2F0aW9uIHN0b3BwZWQgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMAUmVhZCBpbnZhbGlkIGV2ZW50IGZyb20gc291cmNlOiAnJXMnLCBzb3VyY2UgY291bGQgYmUgY29ycnVwdCBidXQgYSBtb3JlIGxpa2VseSBjYXVzZSBvZiB0aGlzIGlzIGEgYnVnAFRoZSBxdWV1ZSBldmVudCBmYWlsZWQgZm9yIGNoYW5uZWwgJyVzJyBhcyBpdHMgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLgBBbiB1bmV4cGVjdGVkIGV2ZW50IHNlcXVlbmNlIHdhcyBkZXRlY3RlZCBieSB0aGUgSU8gdGhyZWFkIHdoaWxlIHF1ZXVpbmcgdGhlIGV2ZW50IHJlY2VpdmVkIGZyb20gc291cmNlICclcycgYmluYXJ5IGxvZyBmaWxlLCBhdCBwb3NpdGlvbiAlbGx1LgAnJXMnIGNhbiBub3QgYmUgdXNlZCBhcyBjbGllbnQgY2hhcmFjdGVyIHNldC4gJyVzJyB3aWxsIGJlIHVzZWQgYXMgZGVmYXVsdCBjbGllbnQgY2hhcmFjdGVyIHNldCB3aGlsZSBjb25uZWN0aW5nIHRvIHNvdXJjZS4AUmVwbGljYSVzOiBjb25uZWN0ZWQgdG8gc291cmNlICclc0AlczolZCcscmVwbGljYXRpb24gcmVzdW1lZCBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcwBuZXh0IGxvZyAnJXMnIGlzIGFjdGl2ZQBuZXh0IGxvZyAnJXMnIGlzIG5vdCBhY3RpdmUAUmVwbGljYSBTUUwgdGhyZWFkJXM6IEkvTyBlcnJvciByZWFkaW5nIGV2ZW50IChlcnJubzogJWQgIGN1cl9sb2ctPmVycm9yOiAlZCkARXJyb3IgcmVhZGluZyByZWxheSBsb2cgZXZlbnQlczogJXMAJ0NIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8lcyBleGVjdXRlZCcuIFByZXZpb3VzIHN0YXRlIHNvdXJjZV9ob3N0PSclcycsIHNvdXJjZV9wb3J0PSAldSwgc291cmNlX2xvZ19maWxlPSclcycsIHNvdXJjZV9sb2dfcG9zPSAlbGQsIHNvdXJjZV9iaW5kPSclcycuIE5ldyBzdGF0ZSBzb3VyY2VfaG9zdD0nJXMnLCBzb3VyY2VfcG9ydD0gJXUsIHNvdXJjZV9sb2dfZmlsZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0gJWxkLCBzb3VyY2VfYmluZD0nJXMnLgBSZXBsaWNhOiBDYW5ub3QgY3JlYXRlIG5ldyBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSB3aGVuIHJlcG9zaXRvcmllcyBhcmUgb2YgdHlwZSBGSUxFLiBDb252ZXJ0IHJlcGxpY2EgcmVwb3NpdG9yaWVzIHRvIFRBQkxFIHRvIHJlcGxpY2F0ZSBmcm9tIG11bHRpcGxlIHNvdXJjZXMuAGxvZyAlcyBsaXN0ZWQgaW4gdGhlIGluZGV4LCBidXQgZmFpbGVkIHRvIHN0YXQuAENvdWxkIG5vdCBmaW5kIGZpcnN0IGxvZyB3aGlsZSBjb3VudGluZyByZWxheSBsb2cgc3BhY2UuAFVuYWJsZSB0byB1c2UgcmVwbGljYSdzIHRlbXBvcmFyeSBkaXJlY3RvcnkgJyVzJy4AUGF0aCAnJXMnIGlzIGEgZGlyZWN0b3J5IG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGZvciAtLXJlbGF5LWxvZyBvcHRpb24uAFBhdGggJyVzJyBpcyBhIGRpcmVjdG9yeSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZSBmb3IgLS1yZWxheS1sb2ctaW5kZXggb3B0aW9uLgBOZWl0aGVyIC0tcmVsYXktbG9nIG5vciAtLXJlbGF5LWxvZy1pbmRleCB3ZXJlIHVzZWQ7IHNvIHJlcGxpY2F0aW9uIG1heSBicmVhayB3aGVuIHRoaXMgTXlTUUwgc2VydmVyIGFjdHMgYXMgYSByZXBsaWNhIGFuZCBoYXMgaGlzIGhvc3RuYW1lIGNoYW5nZWQhISBQbGVhc2UgdXNlICctLXJlbGF5LWxvZz0lcycgdG8gYXZvaWQgdGhpcyBwcm9ibGVtLgBGYWlsZWQgaW4gb3Blbl9pbmRleF9maWxlKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARmFpbGVkIGluIGluaXRfZ3RpZF9zZXRzKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARmFpbGVkIGluIG9wZW5fbG9nKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARXJyb3Igd3JpdGluZyByZWxheSBsb2cgY29uZmlndXJhdGlvbi4AZ2V0X25kYl9ibG9ic192YWx1ZTogbXlfbWFsbG9jKCV1KSBmYWlsZWQATkRCOiBUaHJlYWQgaWQgJXUgdGltZWQgb3V0ICgzMHMpIHdhaXRpbmcgZm9yIGVwb2NoICV1LyV1IHRvIGJlIGhhbmRsZWQuICBQcm9ncmVzcyA6ICV1LyV1IC0+ICV1LyV1LgBOREI6IEluY29uc2lzdGVuY3kgZGV0ZWN0ZWQgaW4gZGlzdHJpYnV0ZWQgcHJpdmlsZWdlIHRhYmxlcy4gVGFibGUgJyVzLiVzJyBpcyBub3QgZGlzdHJpYnV0ZWQATkRCOiBDcmVhdGluZyAlcy4lcwBOREI6IEZsdXNoaW5nICVzLiVzAE5EQjogQ2xlYW5pbmcgc3RyYXkgdGFibGVzIGZyb20gZGF0YWJhc2UgJyVzJwBOREI6IERpc2NvdmVyZWQgbWlzc2luZyBkYXRhYmFzZSAnJXMnAE5EQjogRGlzY292ZXJlZCByZW1haW5pbmcgZGF0YWJhc2UgJyVzJwBOREI6IG5kYmNsdXN0ZXJfZmluZF9hbGxfZGF0YWJhc2VzIHJldHJ5OiAldSAtICVzAE5EQjogbmRiY2x1c3Rlcl9maW5kX2FsbF9kYXRhYmFzZXMgZmFpbDogJXUgLSAlcwBOREI6IHNraXBwaW5nIHNldHVwIHRhYmxlICVzLiVzLCBpbiBzdGF0ZSAlZABOREI6IGZhaWxlZCB0byBzZXR1cCB0YWJsZSAlcy4lcywgZXJyb3I6ICVkLCAlcwBOREI6IG1pc3NpbmcgZnJtIGZvciAlcy4lcywgZGlzY292ZXJpbmcuLi4ATkRCOiBtaXNtYXRjaCBpbiBmcm0gZm9yICVzLiVzLCBkaXNjb3ZlcmluZy4uLgBuZGJfYmlubG9nX3NldHVwOiBDbGVhbiB1cCBsZWZ0b3ZlcnMATkRCICVzOiB3YWl0aW5nIG1heCAldSBzZWMgZm9yICVzICVzLiAgZXBvY2hzOiAoJXUvJXUsJXUvJXUsJXUvJXUpICBpbmplY3RvciBwcm9jX2luZm86ICVzAE5EQiAlczogd2FpdGluZyBtYXggJXUgc2VjIGZvciAlcyAlcy4gIGVwb2NoczogKCV1LyV1LCV1LyV1LCV1LyV1KSAgaW5qZWN0b3IgcHJvY19pbmZvOiAlcyBtYXA6ICV4JTA4eABOREIgJXM6IGRpc3RyaWJ1dGluZyAlcyB0aW1lZCBvdXQuIElnbm9yaW5nLi4uAE5EQiAlczogbm90IHdhaXRpbmcgZm9yIGRpc3RyaWJ1dGluZyAlcwBOREI6IGRpc3RyaWJ1dGVkICVzLiVzKCV1LyV1KSB0eXBlOiAlcygldSkgcXVlcnk6ICclcycgdG8gJXglMDh4AE5EQjogZGlzdHJpYnV0aW9uIG9mICVzLiVzKCV1LyV1KSB0eXBlOiAlcygldSkgcXVlcnk6ICclcycgLSBjb21wbGV0ZSEATkRCIFNjaGVtYSBkaXN0OiBEYXRhIG5vZGU6ICVkIGZhaWxlZCwgc3Vic2NyaWJlciBiaXRtYXNrICV4JTA4eABOREIgU2NoZW1hIGRpc3Q6IERhdGEgbm9kZTogJWQgcmVwb3J0cyBzdWJzY3JpYmUgZnJvbSBub2RlICVkLCBzdWJzY3JpYmVyIGJpdG1hc2sgJXglMDh4AE5EQiBTY2hlbWEgZGlzdDogRGF0YSBub2RlOiAlZCByZXBvcnRzIHVuc3Vic2NyaWJlIGZyb20gbm9kZSAlZCwgc3Vic2NyaWJlciBiaXRtYXNrICV4JTA4eABOREIgQmlubG9nOiBDb3VsZCBub3QgZGlzY292ZXIgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIG15X2Vycm5vOiAlZABOREI6IHVua25vd24gdmFsdWUgZm9yIGJpbmxvZyBzaWduYWxsaW5nIDB4JVgsICVzIG5vdCBsb2dnZWQATkRCOiByZXBseSB0byAlcy4lcygldS8ldSkgZnJvbSAlcyB0byAleCUwOHgATkRCOiBDb3VsZCBub3QgcmVsZWFzZSBzbG9jayBvbiAnJXMuJXMnLCBFcnJvciBjb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgc2NoZW1hOiBDb3VsZCBub3QgZmluZCB0YWJsZSAnJXMuJXMnIGluIE5EQgBOREI6IERpc2NhcmRpbmcgZXZlbnQuLi5ubyBvYmo6ICVzICgldS8ldSkATkRCOiBEaXNjYXJkaW5nIGV2ZW50Li4ua2V5OiAlcyBub24gbWF0Y2hpbmcgaWQvdmVyc2lvbiBbJXUvJXVdICE9IFsldS8ldV0ATkRCOiBDTEVBUl9TTE9DSyBrZXk6ICVzKCV1LyV1KSAleCUwOHgsIGZyb20gJXMgdG8gJXglMDh4AE5EQiBCaW5sb2c6IFNraXBwaW5nIGxvY2FsbHkgZGVmaW5lZCB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4ATkRCIEJpbmxvZzogaGFuZGxpbmcgb25saW5lIGFsdGVyL3JlbmFtZQBOREIgQmlubG9nOiBGYWlsZWQgdG8gcmUtb3BlbiBzaGFkb3cgdGFibGUgJXMuJXMATkRCIEJpbmxvZzogaGFuZGxpbmcgb25saW5lIGFsdGVyL3JlbmFtZSBkb25lAE5EQiBCaW5sb2c6IFNraXBwaW5nIGRyb3Agb2YgbG9jYWxseSBkZWZpbmVkIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAATkRCIEJpbmxvZzogU2tpcHBpbmcgcmVuYW1pbmcgbG9jYWxseSBkZWZpbmVkIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAATkRCIEJpbmxvZzogU2tpcHBpbmcgZHJvcCBkYXRhYmFzZSAnJXMnIHNpbmNlIGl0IGNvbnRhaW5lZCBsb2NhbCB0YWJsZXMgYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gAEdvdCBkaXN0X3ByaXYgZXZlbnQ6ICVzLCBmbHVzaGluZyBwcml2aWxlZ2VzAE5EQjogZ290IHNjaGVtYSBldmVudCBvbiAlcy4lcygldS8ldSkgcXVlcnk6ICclcycgdHlwZTogJXMoJWQpIG5vZGU6ICV1IHNsb2NrOiAleCUwOHgATkRCIHNjaGVtYTogU2tpcHBpbmcgb2xkIHNjaGVtYSBvcGVyYXRpb24oUkVOQU1FX1RBQkxFX05FVykgb24gJXMuJXMATkRCIFNjaGVtYSBkaXN0OiBjbHVzdGVyIGZhaWx1cmUgYXQgZXBvY2ggJXUvJXUuAE5EQiBCaW5sb2c6IG5kYiB0YWJsZXMgaW5pdGlhbGx5IHJlYWQgb25seSBvbiByZWNvbm5lY3QuAE5EQiBTY2hlbWEgZGlzdDogdW5rbm93biBldmVudCAldSwgaWdub3JpbmcuLi4ATkRCIEJpbmxvZzogT3BlbmluZyBuZGJfYmlubG9nX2luZGV4OiAlZCwgJyVzJwBOREIgQmlubG9nOiBVbmFibGUgdG8gbG9jayB0YWJsZSBuZGJfYmlubG9nX2luZGV4AE5EQiBCaW5sb2c6IEluamVjdGluZyByYW5kb20gd3JpdGUgZmFpbHVyZQBOREIgQmlubG9nOiBGYWlsZWQgd3JpdGluZyB0byBuZGJfYmlubG9nX2luZGV4IGZvciBlcG9jaCAldS8ldSAgb3JpZ19zZXJ2ZXJfaWQgJXUgb3JpZ19lcG9jaCAldS8ldSB3aXRoIGVycm9yICVkLgBOREIgQmlubG9nOiBXcml0aW5nIHJvdyAoJXMpIHRvIG5kYl9iaW5sb2dfaW5kZXggLSAlcwBOREIgQmlubG9nOiBGYWlsZWQgY29tbWl0dGluZyB0cmFuc2FjdGlvbiB0byBuZGJfYmlubG9nX2luZGV4IHdpdGggZXJyb3IgJWQuAE5EQiBCaW5sb2c6IEZhaWxlZCB3cml0aW5nIHRvIG5kYl9iaW5sb2dfaW5kZXggdGFibGUgd2hpbGUgcmV0cnlpbmcgYWZ0ZXIga2lsbCBkdXJpbmcgc2h1dGRvd24ATkRCOiBzZXJ2ZXIgaWQgc2V0IHRvIHplcm8gLSBjaGFuZ2VzIGxvZ2dlZCB0byBiaW4gbG9nIHdpdGggc2VydmVyIGlkIHplcm8gd2lsbCBiZSBsb2dnZWQgd2l0aCBhbm90aGVyIHNlcnZlciBpZCBieSByZXBsaWNhIG15c3FsZHMATkRCOiBzZXJ2ZXIgaWQgcHJvdmlkZWQgaXMgdG9vIGxhcmdlIHRvIGJlIHJlcHJlc2VudGVkIGluIG9wdF9zZXJ2ZXJfaWRfYml0cyBvciBpcyByZXNlcnZlZABOREI6IC0tbmRiLWxvZy10cmFuc2FjdGlvbi1pZCByZXF1aXJlcyB2MiBCaW5sb2cgcm93IGV2ZW50cyBidXQgc2VydmVyIGlzIHVzaW5nIHYxLgBOREI6IG5kYi1sb2ctYXBwbHktc3RhdHVzIGZvcmNpbmcgJXMuJXMgdG8gRlVMTCBVU0VfV1JJVEUATkRCIEJpbmxvZzogJXMAJXMAJXMATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIDogUGFyc2UgZXJyb3Igb24gY29uZmxpY3QgZm4gOiAlcwBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgOiAlcwBOREIgQmlubG9nOiBGYWlsZWQgdG8gZ2V0IHRhYmxlICVzIGZyb20gbmRiOiAlcywgJWQATkRCIEJpbmxvZzogTk9UIGxvZ2dpbmcgJXMATkRCIEJpbmxvZzogRkFJTEVEIENSRUFURSAoRElTQ09WRVIpIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBDUkVBVEUgKERJU0NPVkVSKSBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogRElTQ09WRVIgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IGxvZ2dpbmcgb2YgdGFibGUgJXMgd2l0aCBCTE9CIGF0dHJpYnV0ZSBhbmQgbm8gUEsgaXMgbm90IHN1cHBvcnRlZABOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiBFdmVudDogJXMgIEVycm9yIENvZGU6ICVkICBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiAgQXR0ZW1wdCB0byBjb3JyZWN0IHdpdGggZHJvcCBmYWlsZWQuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiAgQXR0ZW1wdCB0byBjb3JyZWN0IHdpdGggZHJvcCBvaywgYnV0IGNyZWF0ZSBmYWlsZWQuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBkaXNjb3ZlciByZXVzaW5nIG9sZCBldiBvcABOREIgQmlubG9nOiBDcmVhdGluZyBOZGJFdmVudE9wZXJhdGlvbiBmYWlsZWQgZm9yICVzAE5EQiBCaW5sb2c6IENyZWF0aW5nIE5kYkV2ZW50T3BlcmF0aW9uIGJsb2IgZmllbGQgJXUgaGFuZGxlcyBmYWlsZWQgKGNvZGU9JWQpIGZvciAlcwBOREIgQmlubG9nOiBuZGJldmVudC0+ZXhlY3V0ZSBmYWlsZWQgZm9yICVzOyAlZCAlcwBOREIgQmlubG9nOiBsb2dnaW5nICVzICglcywlcykATkRCIEJpbmxvZzogVW5hYmxlIHRvIGRyb3AgZXZlbnQgaW4gZGF0YWJhc2UuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgJXM6ICVzIHRpbWVkIG91dC4gSWdub3JpbmcuLi4ATkRCIEJpbmxvZzogdW5oYW5kbGVkIGVycm9yICVkIGZvciB0YWJsZSAlcwBOREIgQmlubG9nOiBjbHVzdGVyIGZhaWx1cmUgZm9yICVzIGF0IGVwb2NoICV1LyV1LgBOREIgQmlubG9nOiB1bmtub3duIG5vbiBkYXRhIGV2ZW50ICVkIGZvciAlcy4gSWdub3JpbmcuLi4ATkRCOiBCaW5sb2cgSW5qZWN0b3IgZGlzY2FyZGluZyByb3cgZXZlbnQgbWV0YSBkYXRhIGFzIHNlcnZlciBpcyB1c2luZyB2MSByb3cgZXZlbnRzLiAoJXUgJXgpAHJlbW92ZV9hbGxfZXZlbnRfb3BlcmF0aW9uczogUmVtYWluaW5nIG9wZW4gdGFibGVzOiAAICAlcy4lcywgdXNlX2NvdW50OiAldQBOREI6IENvdWxkIG5vdCBnZXQgYXBwbHkgc3RhdHVzIHNoYXJlAE5EQiBCaW5sb2c6IFNlcnZlciBzaHV0ZG93biBkZXRlY3RlZCB3aGlsZSB3YWl0aW5nIGZvciBuZGJjbHVzdGVyIHRvIHN0YXJ0Li4uAE5EQiBCaW5sb2c6IGNsdXN0ZXIgaGFzIGJlZW4gcmVzdGFydGVkIC0taW5pdGlhbCBvciB3aXRoIG9sZGVyIGZpbGVzeXN0ZW0uIG5kYl9sYXRlc3RfaGFuZGxlZF9iaW5sb2dfZXBvY2g6ICV1LyV1LCB3aGlsZSBjdXJyZW50IGVwb2NoOiAldS8ldS4gUkVTRVQgU09VUkNFIHNob3VsZCBiZSBpc3N1ZWQuIFJlc2V0dGluZyBuZGJfbGF0ZXN0X2hhbmRsZWRfYmlubG9nX2Vwb2NoLgBOREIgQmlubG9nOiBjbHVzdGVyIGhhcyByZWNvbm5lY3RlZC4gQ2hhbmdlcyB0byB0aGUgZGF0YWJhc2UgdGhhdCBvY2N1cnJlZCB3aGlsZSBkaXNjb25uZWN0ZWQgd2lsbCBub3QgYmUgaW4gdGhlIGJpbmxvZwBOREIgQmlubG9nOiBzdGFydGluZyBsb2cgYXQgZXBvY2ggJXUvJXUATkRCIEJpbmxvZzogbmRiIHRhYmxlcyB3cml0YWJsZQBOREIgQmlubG9nOiBTZXJ2ZXIgc2h1dGRvd24gZGV0ZWN0ZWQuLi4ATkRCIEJpbmxvZzogSnVzdCBsb3N0IHNjaGVtYSBjb25uZWN0aW9uLCBoYW5naW5nIGFyb3VuZABOREIgQmlubG9nOiAuLi5hbmQgb24gb3VyIHdheQBOREI6IGVycm9yICVsdSAoJXMpIG9uIGhhbmRsaW5nIGJpbmxvZyBzY2hlbWEgZXZlbnQATkRCIEJpbmxvZzogRmFpbGVkIHRvIGluamVjdCBhcHBseSBzdGF0dXMgd3JpdGUgcm93AE5EQiBCaW5sb2c6IEVycm9yIGR1cmluZyBST0xMQkFDSyBvZiBHQ0kgJXUvJXUuIEVycm9yOiAlZABOREIgQmlubG9nOiBFcnJvciBkdXJpbmcgQ09NTUlUIG9mIEdDSS4gRXJyb3I6ICVkAE5EQiBCaW5sb2c6IGxhdGVzdCB0cmFuc2FjdGlvbiBpbiBlcG9jaCAldS8ldSBub3QgaW4gYmlubG9nIGFzIGxhdGVzdCBoYW5kbGVkIGVwb2NoIGlzICV1LyV1AE5EQiBCaW5sb2c6IFJlbGVhc2UgZXh0cmEgc2hhcmUgcmVmZXJlbmNlcwBOREIgQmlubG9nOiByZW1haW5pbmcgb3BlbiB0YWJsZXM6IAAgICVzLiVzIHN0YXRlOiAldSB1c2VfY291bnQ6ICV1AFdyb25nIHRyZWU6IFBhcmVudCBkb2Vzbid0IHBvaW50IGF0IHBhcmVudABXcm9uZyB0cmVlOiBSb290IHNob3VsZCBiZSBibGFjawBXcm9uZyB0cmVlOiBGb3VuZCB0d28gcmVkIGluIGEgcm93AFdyb25nIHRyZWU6IEZvdW5kIHJpZ2h0ID09IGxlZnQAV3JvbmcgdHJlZTogSW5jb3JyZWN0IGJsYWNrLWNvdW50OiAlZCAtICVkAFVzZV9jb3VudDogV3JvbmcgY291bnQgJWx1IGZvciBvcmlnaW4gJXAAVXNlX2NvdW50OiBXcm9uZyBjb3VudCBmb3Iga2V5IGF0ICVwLCAlbHUgc2hvdWxkIGJlICVsdQBXcm9uZyBudW1iZXIgb2YgZWxlbWVudHM6ICV1IChzaG91bGQgYmUgJXUpIGZvciB0cmVlIGF0ICVwAEVycm9yIHJlYWRpbmcgcmVwbGljYSB3b3JrZXIgY29uZmlndXJhdGlvbgBFcnJvciB3cml0aW5nIHJlcGxpY2Egd29ya2VyIGNvbmZpZ3VyYXRpb24ARmFpbGVkIHRvIG9wZW4gcmVsYXkgbG9nICVzLCBlcnJvcjogJXMARXJyb3Igd2hlbiB3b3JrZXIgcmVhZCByZWxheSBsb2cgZXZlbnRzLHJlbGF5IGxvZyBuYW1lICVzLCBwb3NpdGlvbiAlbGx1AEZhaWxlZCB0byBmaW5kIG5leHQgcmVsYXkgbG9nIHdoZW4gcmV0cnlpbmcgdGhlIHRyYW5zYWN0aW9uLCBjdXJyZW50IHJlbGF5IGxvZyBpcyAlcwBNdWx0aS10aHJlYWRlZCByZXBsaWNhOiBDb29yZGluYXRvciBoYXMgd2FpdGVkICVsdSB0aW1lcyBoaXR0aW5nIHJlcGxpY2FfcGVuZGluZ19qb2JzX3NpemVfbWF4OyBjdXJyZW50IGV2ZW50IHNpemUgPSAlenUuAEZhaWxlZCB0byB3cml0ZSB0aGUgRFJPUCBzdGF0ZW1lbnQgZm9yIHRlbXBvcmFyeSB0YWJsZXMgdG8gYmluYXJ5IGxvZwBXaGVuIG9wZW5pbmcgSEVBUCB0YWJsZSwgY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSB0byB3cml0ZSAnREVMRVRFIEZST00gYCVzYC5gJXNgJyB0byB0aGUgYmluYXJ5IGxvZwBDb3VsZG4ndCByZXBhaXIgdGFibGU6ICVzLiVzAENvdWxkIG5vdCByZW1vdmUgdGVtcG9yYXJ5IHRhYmxlOiAnJXMnLCBlcnJvcjogJWQAU3lzdGVtIHRhYmxlICclLipzJyBpcyBleHBlY3RlZCB0byBiZSB0cmFuc2FjdGlvbmFsLgBFcnJvciB3cml0aW5nIHNvdXJjZSBjb25maWd1cmF0aW9uLgBFcnJvciByZWFkaW5nIHNvdXJjZSBjb25maWd1cmF0aW9uLgBTU0wgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBhcmUgaWdub3JlZCBiZWNhdXNlIHRoaXMgTXlTUUwgcmVwbGljYSB3YXMgY29tcGlsZWQgd2l0aG91dCBTU0wgc3VwcG9ydC4AUGx1Z2luICclcycgb2YgdHlwZSAlcyBmYWlsZWQgZGVpbml0aWFsaXphdGlvbgBQbHVnaW4gJyVzJyBoYXMgcmVmX2NvdW50PSVkIGFmdGVyIGRlaW5pdGlhbGl6YXRpb24uAFNodXR0aW5nIGRvd24gcGx1Z2luICclcycAUGx1Z2luICclcycgcmVnaXN0cmF0aW9uIGFzIGEgJXMgZmFpbGVkLgBDb3VsZCBub3Qgb3BlbiB0aGUgbXlzcWwucGx1Z2luIHRhYmxlLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAENvdWxkbid0IGxvYWQgcGx1Z2luIG5hbWVkICclcycgd2l0aCBzb25hbWUgJyVzJy4AcGx1Z2luLWxvYWQgcGFyYW1ldGVyIHRvbyBsb25nAFBsdWdpbiAnJXMnIHdpbGwgYmUgZm9yY2VkIHRvIHNodXRkb3duAFBsdWdpbiAnJXMnIGhhcyByZWZfY291bnQ9JWQgYWZ0ZXIgc2h1dGRvd24uAFVua25vd24gdmFyaWFibGUgdHlwZSBjb2RlIDB4JXggaW4gcGx1Z2luICclcycuAFNlcnZlciB2YXJpYWJsZSAlcyBvZiBwbHVnaW4gJXMgd2FzIGZvcmNlZCB0byBiZSByZWFkLW9ubHk6IHN0cmluZyB2YXJpYWJsZSB3aXRob3V0IHVwZGF0ZV9mdW5jIGFuZCBQTFVHSU5fVkFSX01FTUFMTE9DIGZsYWcATWlzc2luZyB2YXJpYWJsZSBuYW1lIGluIHBsdWdpbiAnJXMnLgBUaHJlYWQgbG9jYWwgdmFyaWFibGUgJyVzJyBub3QgYWxsb2NhdGVkIGluIHBsdWdpbiAnJXMnLgBPdXQgb2YgbWVtb3J5IGZvciBwbHVnaW4gJyVzJy4AQmFkIG9wdGlvbnMgZm9yIHBsdWdpbiAnJXMnLgBQYXJzaW5nIG9wdGlvbnMgZm9yIHBsdWdpbiAnJXMnIGZhaWxlZC4AUGx1Z2luICclcycgaXMgZGlzYWJsZWQuAFBsdWdpbiAnJXMnIGhhcyBjb25mbGljdGluZyBzeXN0ZW0gdmFyaWFibGVzAFNldHRpbmcgcGVyc2lzdGVudCBvcHRpb25zIGZvciBwbHVnaW4gJyVzJyBmYWlsZWQuAEZhaWxlZCBvbiBteV9uZXRfd3JpdGUsIHdyaXRpbmcgdG8gc3RkZXJyIGluc3RlYWQ6ICVzAFJldHJ5aW5nIHJlcGFpciBvZjogJyVzJyB3aXRob3V0IHF1aWNrAFJldHJ5aW5nIHJlcGFpciBvZjogJyVzJyB3aXRoIGtleWNhY2hlAEZvdW5kICVzIG9mICVzIHJvd3Mgd2hlbiByZXBhaXJpbmcgJyVzJwBXYXJuaW5nOiBPcHRpbWl6ZSB0YWJsZSBnb3QgZXJybm8gJWQgb24gJXMuJXMsIHJldHJ5aW5nAFdhcm5pbmc6IEVuYWJsaW5nIGtleXMgZ290IGVycm5vICVkIG9uICVzLiVzLCByZXRyeWluZwBDaGVja2luZyB0YWJsZTogICAnJXMnAFJlY292ZXJpbmcgdGFibGU6ICclcycARXJyb3IgaW4gY3JlYXRpbmcgVEFCTEVfU0hBUkUgZnJvbSAlcy5mcm0gZmlsZS4AVW5hYmxlIHRvIGFjcXVpcmUgbG9jayBvbiAlcy4lcwBFcnJvciBpbiBhbGxvY2F0aW9uIG1lbW9yeSBmb3IgVEFCTEUgb2JqZWN0LgBFcnJvciBpbiBjcmVhdGluZyBoYW5kbGVyIG9iamVjdCBmb3IgdGFibGUgJXMuJXMARXJyb3IgaW4gc2V0dGluZyBoYW5kbGVyIHJlZmVyZW5jZSBmb3IgdGFibGUgJXMuJXMAVW5hYmxlIHRvIGFjcXVpcmUgbG9jayBvbiB0YWJsZXNwYWNlIG5hbWUgJXMARXJyb3IgaW4gcHJvY2Vzc2luZyBnZW5lcmF0ZWQgY29sdW1ucyBmb3IgdGFibGUgJXMuJXMARXJyb3IgaW4gQ3JlYXRpbmcgREQgZW50cnkgZm9yICVzLiVzAEVycm9yIGluIGZldGNoaW5nICVzLiVzIHRhYmxlIGRhdGEgZnJvbSBkaWN0aW9uYXJ5AEVycm9yIGluIGZpeGluZyBTRSBkYXRhIGZvciAlcy4lcwBFcnJvciBpbiBjcmVhdGluZyBzdG9yZWQgcHJvZ3JhbSAnJXMuJXMnAFVuYWJsZSB0byBvcGVuIGRiLm9wdCBmaWxlICVzLiBVc2luZyBkZWZhdWx0IENoYXJhY3RlciBzZXQuAFVuYWJsZSB0byBpbnRpYWxpemUgSU8gY2FjaGUgdG8gb3BlbiBkYi5vcHQgZmlsZSAlcy4gAFVuYWJsZSB0byBpZGVudGlmeSB0aGUgY2hhcnNldCBpbiAlcy4gVXNpbmcgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0LgBkYi5vcHQgZmlsZSBub3QgZm91bmQgZm9yICVzIGRhdGFiYXNlLiBVc2luZyBkZWZhdWx0IENoYXJhY3RlciBzZXQuAEV2ZW50ICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gbXlzcWwuZXZlbnQudGltZV96b25lLgBFdmVudCAnJXMnLiclcyc6IGhhcyBpbnZhbGlkIHRpbWUgem9uZSB2YWx1ZSAARXZlbnQgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiBteXNxbC5ldmVudC5jaGFyYWN0ZXJfc2V0X2NsaWVudC4ARXZlbnQgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiBteXNxbC5ldmVudC5jb2xsYXRpb25fY29ubmVjdGlvbi4ARmFpbGVkIHRvIG9wZW4gbXlzcWwuZXZlbnQgVGFibGUuAFBhcnNpbmcgJyVzLiVzJyByb3V0aW5lIGJvZHkgZmFpbGVkLiVzAEZhaWxlZCB0byBvcGVuIG15c3FsLnByb2MgVGFibGUuAEZhaWxlZCB0byByZWFkIG15c3FsLnByb2MgdGFibGUuAEZvdW5kICVzIGZpbGUgaW4gbXlzcWwgc2NoZW1hLiBERCB3aWxsIGNyZWF0ZSAuaWJkIGZpbGUgd2l0aCBzYW1lIG5hbWUuIFBsZWFzZSByZW5hbWUgdGFibGUgYW5kIHN0YXJ0IHVwZ3JhZGUgcHJvY2VzcyBhZ2Fpbi4AVW5hYmxlIHRvIG9wZW4gdGhlIGRhdGEgZGlyZWN0b3J5ICVzIGR1cmluZyBjbGVhbiB1cCBhZnRlciB1cGdyYWRlIGZhaWxlZABGYWlsZWQgdG8gc2V0IHBhdGggJXMARmFpbGVkIHRvIG9wZW4gZGlyICVzAE5EQjogRm91bmQgZW1wdHkgbm9kZWlkIHNwZWNpZmllZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogQ291bGQgbm90IHBhcnNlICclcycgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IEludmFsaWQgbm9kZWlkICVkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBGb3VuZCBkdXBsaWNhdGUgbm9kZWlkICVkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBUaGUgc2l6ZSBvZiB0aGUgY2x1c3RlciBjb25uZWN0aW9uIHBvb2wgbXVzdCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIG5vZGVpZHMgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IFRoZSBub2RlaWQgc3BlY2lmaWVkIGJ5IC0tbmRiLW5vZGVpZCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBmaXJzdCBub2RlaWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IHVzaW5nIG5vZGVpZCAldQBOREI6IGZhaWxlZCB0byBhbGxvY2F0ZSBnbG9iYWwgbmRiIGNsdXN0ZXIgY29ubmVjdGlvbgBOREI6IGZhaWxlZCB0byBhbGxvY2F0ZSBnbG9iYWwgbmRiIG9iamVjdABOREJbJXVdOiB1c2luZyBub2RlaWQgJXUATkRCWyV1XTogZmFpbGVkIHRvIGFsbG9jYXRlIGNsdXN0ZXIgY29ubmVjdCBvYmplY3QATkRCWyV1XTogc3RhcnRpbmcgY29ubmVjdCB0aHJlYWQATkRCWyV1XTogTm9kZUlEOiAlZCwgJXMATkRCWyV1XTogZmFpbGVkIHRvIHN0YXJ0IGNvbm5lY3QgdGhyZWFkAE5EQjogZXJyb3IgKCV1KSAlcwBJZ25vcmVkIHJlY2VpdmUgdGhyZWFkIENQVSBtYXNrLCBtYXNrIHRvbyBzaG9ydCwgJXUgQ1BVcyBuZWVkZWQgaW4gbWFzaywgb25seSAldSBDUFVzIHByb3ZpZGVkAEV2ZW50IEVycm9yOiBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBjcmVhdGluZyBxdWVyeSBzdHJpbmcsIGJlZm9yZSB3cml0aW5nIGl0IGludG8gYmluYXJ5IGxvZy4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciB3aGlsZSBsb2FkaW5nIGZyb20gZGlzay4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciBnZXR0aW5nIGV2ZW50IG9iamVjdC4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciB3aGlsZSBsb2FkaW5nIGV2ZW50cyBmcm9tIG15c3FsLmV2ZW50cy5UaGUgdGFibGUgcHJvYmFibHkgY29udGFpbnMgYmFkIGRhdGEgb3IgaXMgY29ycnVwdGVkAFVuYWJsZSB0byBvYnRhaW4gbG9jayBmb3IgZHJvcHBpbmcgZXZlbnQgJXMgZnJvbSBzY2hlbWEgJXMAVW5hYmxlIHRvIGRyb3AgZXZlbnQgJXMgZnJvbSBzY2hlbWEgJXMAU2VydmVyIG92ZXJjb21lcyB0aGUgdGVtcG9yYXJ5ICdvdXQgb2YgbWVtb3J5JyBpbiAnJWQnIHRyaWVzIHdoaWxlIGF0dGFjaGluZyB0byBzZXNzaW9uIHRocmVhZCBkdXJpbmcgdGhlIGdyb3VwIGNvbW1pdCBwaGFzZS4AVW5hYmxlIHRvIHJlc2l6ZSBiaW5sb2cgSU9DQUNIRSBhdXhpbGlhcnkgZmlsZQBmaWxlICVzIHdhcyBub3QgcHVyZ2VkIGJlY2F1c2UgaXQgd2FzIGJlaW5nIHJlYWQgYnkgdGhyZWFkIG51bWJlciAldQBJL08gZXJyb3IgcmVhZGluZyB0aGUgaGVhZGVyIGZyb20gdGhlIGJpbmFyeSBsb2csIGVycm5vPSVkLCBpbyBjYWNoZSBjb2RlPSVkAEZhaWxlZCB0byBvcGVuIGxvZyAoZmlsZSAnJXMnLCBlcnJubyAlZCkARmFpbGVkIHRvIGNyZWF0ZSBhIGNhY2hlIG9uIGxvZyAoZmlsZSAnJXMnKQBMb2cgZmlsZW5hbWUgZXh0ZW5zaW9uIG51bWJlciBleGhhdXN0ZWQ6ICUwNmx1LiBQbGVhc2UgZml4IHRoaXMgYnkgYXJjaGl2aW5nIG9sZCBsb2dzIGFuZCB1cGRhdGluZyB0aGUgaW5kZXggZmlsZXMuAExvZyBmaWxlbmFtZSB0b28gbGFyZ2U6ICVzJXMgKCV6dSkuIFBsZWFzZSBmaXggdGhpcyBieSBhcmNoaXZpbmcgb2xkIGxvZ3MgYW5kIHVwZGF0aW5nIHRoZSBpbmRleCBmaWxlcy4ATmV4dCBsb2cgZXh0ZW5zaW9uOiAlbHUuIFJlbWFpbmluZyBsb2cgZmlsZW5hbWUgZXh0ZW5zaW9uczogJWx1LiBQbGVhc2UgY29uc2lkZXIgYXJjaGl2aW5nIHNvbWUgbG9ncy4AQ291bGQgbm90IG9wZW4gJXMgZm9yIGxvZ2dpbmcgKGVycm9yICVkKS4gVHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4ATVlTUUxfQklOX0xPRzo6b3Blbl9pbmRleF9maWxlIGZhaWxlZCB0byBzeW5jIHRoZSBpbmRleCBmaWxlLgBFcnJvciByZWFkaW5nIEdUSURzIGZyb20gcmVsYXlsb2c6ICVkACVsdSBldmVudHMgcmVhZCBpbiByZWxheWxvZyBmaWxlICclcycgZm9yIHVwZGF0aW5nIFJldHJpZXZlZF9HdGlkX1NldCBhbmQvb3IgSU8gdGhyZWFkIHRyYW5zYWN0aW9uIHBhcnNlciBzdGF0ZS4ARXJyb3IgcmVhZGluZyBHVElEcyBmcm9tIGJpbmFyeSBsb2c6ICVkAFJlYWQgJWx1IGV2ZW50cyBmcm9tIGJpbmFyeSBsb2cgZmlsZSAnJXMnIHRvIGRldGVybWluZSB0aGUgR1RJRHMgcHVyZ2VkIGZyb20gYmluYXJ5IGxvZ3MuAE1ZU1FMX0JJTl9MT0c6Om9wZW4gZmFpbGVkIHRvIGdlbmVyYXRlIG5ldyBmaWxlIG5hbWUuAE1ZU1FMX0JJTl9MT0c6Om9wZW4gZmFpbGVkIHRvIHN5bmMgdGhlIGluZGV4IGZpbGUuAENvdWxkIG5vdCB1c2UgJXMgZm9yIGxvZ2dpbmcgKGVycm9yICVkKS4gVHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4AV2hpbGUgcmVidWlsZGluZyBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gY2xvc2UgdGhlIGluZGV4IGZpbGUuAFdoaWxlIHJlYnVpbGRpbmcgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIGRlbGV0ZSB0aGUgZXhpc3RpbmcgaW5kZXggZmlsZS4gSXQgY291bGQgYmUgdGhhdCBmaWxlIGlzIGJlaW5nIHVzZWQgYnkgc29tZSBvdGhlciBwcm9jZXNzLgBXaGlsZSByZWJ1aWxkaW5nIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byByZW5hbWUgdGhlIG5ldyBpbmRleCBmaWxlIHRvIHRoZSBleGlzdGluZyBpbmRleCBmaWxlLgBBZnRlciByZWJ1aWxkaW5nIHRoZSBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gb3BlbiB0aGUgaW5kZXggZmlsZS4ATVlTUUxfQklOX0xPRzo6YWRkX2xvZ190b19pbmRleCBmYWlsZWQgdG8gYXBwZW5kIGxvZyBmaWxlIG5hbWU6ICVzLCB0byBjcmFzaCBzYWZlIGluZGV4IGZpbGUuAEZhaWxlZCB0byBsb2NhdGUgb2xkIGJpbmxvZyBvciByZWxheSBsb2cgZmlsZXMARmFpbGVkIHRvIGRlbGV0ZSBmaWxlICclcycATVlTUUxfQklOX0xPRzo6c2V0X2NyYXNoX3NhZmVfaW5kZXhfZmlsZV9uYW1lIGZhaWxlZCB0byBzZXQgZmlsZSBuYW1lLgBNWVNRTF9CSU5fTE9HOjpvcGVuX2NyYXNoX3NhZmVfaW5kZXhfZmlsZSBmYWlsZWQgdG8gb3BlbiB0ZW1wb3JhcnkgaW5kZXggZmlsZS4AbmV4dCBsb2cgZXJyb3I6ICVkICBvZmZzZXQ6ICVzICBsb2c6ICVzIGluY2x1ZGVkOiAlZAAlcyBmYWlsZWQgdG8gb3BlbiB0aGUgY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgAlcyBmYWlsZWQgdG8gY29weSBpbmRleCBmaWxlIHRvIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4AJXMgZmFpbGVkIHRvIGNsb3NlIHRoZSBjcmFzaCBzYWZlIGluZGV4IGZpbGUuACVzIGZhaWxlZCB0byBtb3ZlIGNyYXNoIHNhZmUgaW5kZXggZmlsZSB0byBpbmRleCBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIHdhcyBjYWxsZWQgd2l0aCBmaWxlICVzIG5vdCBsaXN0ZWQgaW4gdGhlIGluZGV4LgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBzeW5jIHRoZSBpbmRleCBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBjb3B5ICVzIHRvIHJlZ2lzdGVyIGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIGZsdXNoIHJlZ2lzdGVyIGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIHVwZGF0ZSB0aGUgaW5kZXggZmlsZQBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBwcm9jZXNzIHJlZ2lzdGVyZWQgZmlsZXMgdGhhdCB3b3VsZCBiZSBwdXJnZWQuAE1ZU1FMX0JJTl9MT0c6OnNldF9wdXJnZV9pbmRleF9maWxlX25hbWUgZmFpbGVkIHRvIHNldCBmaWxlIG5hbWUuAE1ZU1FMX0JJTl9MT0c6Om9wZW5fcHVyZ2VfaW5kZXhfZmlsZSBmYWlsZWQgdG8gb3BlbiByZWdpc3RlciBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9pbmRleF9lbnRyeSBmYWlsZWQgdG8gcmVpbml0IHJlZ2lzdGVyIGZpbGUgZm9yIHJlYWQATVlTUUxfQklOX0xPRzo6cHVyZ2VfaW5kZXhfZW50cnkgZXJyb3IgJWQgcmVhZGluZyBmcm9tIHJlZ2lzdGVyIGZpbGUuAEZhaWxlZCB0byBleGVjdXRlIG15c3FsX2ZpbGVfc3RhdCBvbiBmaWxlICclcycARmFpbGVkIHRvIGRlbGV0ZSBsb2cgZmlsZSAnJXMnOyBjb25zaWRlciBleGFtaW5pbmcgY29ycmVzcG9uZGVuY2Ugb2YgeW91ciBiaW5sb2cgaW5kZXggZmlsZSB0byB0aGUgYWN0dWFsIGJpbmxvZyBmaWxlcwBGYWlsZWQgdG8gZGVsZXRlIGZpbGUgJyVzJyBhbmQgcmVhZCB0aGUgYmlubG9nIGluZGV4IGZpbGUARmFpbGVkIHRvIGRlbGV0ZSBsb2cgZmlsZSAnJXMnACVzIEFuIGluY2lkZW50IGV2ZW50IGhhcyBiZWVuIHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cgd2hpY2ggd2lsbCBzdG9wIHRoZSByZXBsaWNhcy4AZmluZF9sb2dfcG9zKCkgZmFpbGVkIChlcnJvcjogJWQpAFJlY292ZXJpbmcgYWZ0ZXIgYSBjcmFzaCB1c2luZyAlcwBGYWlsZWQgdG8gb3BlbiB0aGUgY3Jhc2hlZCBiaW5sb2cgZmlsZSB3aGVuIHNvdXJjZSBzZXJ2ZXIgaXMgcmVjb3ZlcmluZyBpdC4ARmFpbGVkIHRvIHRyaW0gdGhlIGNyYXNoZWQgYmlubG9nIGZpbGUgd2hlbiBzb3VyY2Ugc2VydmVyIGlzIHJlY292ZXJpbmcgaXQuAENyYXNoZWQgYmlubG9nIGZpbGUgJXMgc2l6ZSBpcyAlbGx1LCBidXQgcmVjb3ZlcmVkIHVwIHRvICVsbHUuIEJpbmxvZyB0cmltbWVkIHRvICVsbHUgYnl0ZXMuAEZhaWxlZCB0byBjbGVhciBMT0dfRVZFTlRfQklOTE9HX0lOX1VTRV9GIGZvciB0aGUgY3Jhc2hlZCBiaW5sb2cgZmlsZSB3aGVuIHNvdXJjZSBzZXJ2ZXIgaXMgcmVjb3ZlcmluZyBpdC4ARmFpbGVkIHRvIHJ1biAnYWZ0ZXJfc3luYycgaG9va3MAJXMgSGVuY2UgdHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4ARmFpbGVkIHRvIHJ1biAnYWZ0ZXJfZmx1c2gnIGhvb2tzAENyYXNoIHJlY292ZXJ5IGZhaWxlZC4gRWl0aGVyIGNvcnJlY3QgdGhlIHByb2JsZW0gKGlmIGl0J3MsIGZvciBleGFtcGxlLCBvdXQgb2YgbWVtb3J5IGVycm9yKSBhbmQgcmVzdGFydCwgb3IgZGVsZXRlIChvciByZW5hbWUpIGJpbmFyeSBsb2cgYW5kIHN0YXJ0IG15c3FsZCB3aXRoIC0tdGMtaGV1cmlzdGljLXJlY292ZXI9e2NvbW1pdHxyb2xsYmFja30AVGhlIGZvbGxvd2luZyB3YXJuaW5nIHdhcyBzdXBwcmVzc2VkICVkIHRpbWVzIGR1cmluZyB0aGUgbGFzdCAlZCBzZWNvbmRzIGluIHRoZSBlcnJvciBsb2cATkRCOiAlcwBOREIgJXM6ICVzAE5EQjogVW5hYmxlIHRvIHB1cmdlICVzLiVzIEZpbGU9JXMgKGZhaWxlZCB0byBzZXR1cCB0aGQpAFVua25vd24gY29sbGF0aW9uICMlbHUuAHN5bnRheCBlcnJvciBpbiBpbm5vZGJfbG9nX2dyb3VwX2hvbWVfZGlyAHN5bnRheCBlcnJvciBpbiBpbm5vZGJfdW5kb19kaXJlY3RvcnkASW5ub0RCOiBpbm5vZGJfYnVmZmVyX3Bvb2xfZmlsZW5hbWUgY2Fubm90IGhhdmUgY29sb24gKDopIGluIHRoZSBmaWxlIG5hbWUuAElubm9EQjogSW52YWxpZCBwYWdlIHNpemU9JWx1LgBJbm5vREI6IGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0X2x3bSBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0LiBTZXR0aW5nIGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0X2x3bSB0byAlbGYASW5ub0RCOiBpbm5vZGJfaW9fY2FwYWNpdHkgY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiBpbm5vZGJfaW9fY2FwYWNpdHlfbWF4LiBTZXR0aW5nIGlubm9kYl9pb19jYXBhY2l0eSB0byAlbHUAJXMgYW5kICVzIGZpbGUgbmFtZXMgc2VlbSB0byBiZSB0aGUgc2FtZS4AVHJhbnNhY3Rpb24gbm90IHJlZ2lzdGVyZWQgZm9yIE15U1FMIDJQQywgYnV0IHRyYW5zYWN0aW9uIGlzIGFjdGl2ZQBNeVNRTCBpcyBjbG9zaW5nIGEgY29ubmVjdGlvbiB0aGF0IGhhcyBhbiBhY3RpdmUgSW5ub0RCIHRyYW5zYWN0aW9uLiAlbGx1IHJvdyBtb2RpZmljYXRpb25zIHdpbGwgcm9sbCBiYWNrLgBJbm5vREI6IGZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4gTnVtYmVyIG9mIEluZGV4OiVsdSwgYXJyYXkgc2l6ZTolbHUAQ2Fubm90IGZpbmQgaW5kZXggJXMgaW4gSW5ub0RCIGluZGV4IGRpY3Rpb25hcnkuAEZvdW5kIGluZGV4ICVzIHdob3NlIGNvbHVtbiBpbmZvIGRvZXMgbm90IG1hdGNoIHRoYXQgb2YgTXlTUUwuAEZhaWxlZCB0byBvcGVuIHRhYmxlICVzLgBCdWlsZCBJbm5vREIgaW5kZXggdHJhbnNsYXRpb24gdGFibGUgZm9yIFRhYmxlICVzIGZhaWxlZABUYWJsZSAlcyBoYXMgYSBwcmltYXJ5IGtleSBpbiBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5LCBidXQgbm90IGluIE15U1FMIQBUYWJsZSAlcyBoYXMgbm8gcHJpbWFyeSBrZXkgaW4gSW5ub0RCIGRhdGEgZGljdGlvbmFyeSwgYnV0IGhhcyBvbmUgaW4gTXlTUUwhIElmIHlvdSBjcmVhdGVkIHRoZSB0YWJsZSB3aXRoIGEgTXlTUUwgdmVyc2lvbiA8IDMuMjMuNTQgYW5kIGRpZCBub3QgZGVmaW5lIGEgcHJpbWFyeSBrZXksIGJ1dCBkZWZpbmVkIGEgdW5pcXVlIGtleSB3aXRoIGFsbCBub24tTlVMTCBjb2x1bW5zLCB0aGVuIE15U1FMIGludGVybmFsbHkgdHJlYXRzIHRoYXQga2V5IGFzIHRoZSBwcmltYXJ5IGtleS4gWW91IGNhbiBmaXggdGhpcyBlcnJvciBieSBkdW1wICsgRFJPUCArIENSRUFURSArIHJlaW1wb3J0IG9mIHRoZSB0YWJsZS4AVGFibGUgJXMga2V5X3VzZWRfb25fc2NhbiBpcyAlbHUgZXZlbiB0aG91Z2ggdGhlcmUgaXMgbm8gcHJpbWFyeSBrZXkgaW5zaWRlIElubm9EQi4AUGFydGl0aW9uIHRhYmxlICVzIG9wZW5lZCBhZnRlciBjb252ZXJ0aW5nIHRvIGxvd2VyIGNhc2UuIFRoZSB0YWJsZSBtYXkgaGF2ZSBiZWVuIG1vdmVkIGZyb20gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHRhYmxlIGluIHRoZSBjdXJyZW50IGZpbGUgc3lzdGVtLgBDYW5ub3QgcmVwbGFjZSBlcnJvciBtZXNzYWdlICglcywlcywlcykgIiVzIiB3aXRoICIlcyI7IHdyb25nIG51bWJlciBvciB0eXBlIG9mICUlIHN1YnNpdHV0aW9ucy4AVGFibGUgZm9yIGVycm9yIG1lc3NhZ2UgcmVwbGFjZW1lbnRzIGNvdWxkIG5vdCBiZSBmb3VuZCBvciByZWFkLCBvciBvbmUgb3IgbW9yZSByZXBsYWNlbWVudHMgY291bGQgbm90IGJlIGFwcGxpZWQuACVzOiAlcwBUYWJsZSAnJS0xOTJzJzogRGVsZXRlIGZyb20gcGFydCAlZCBmYWlsZWQgd2l0aCBlcnJvciAlZC4gQnV0IGl0IHdhcyBhbHJlYWR5IGluc2VydGVkIGludG8gcGFydCAlZCwgd2hlbiBtb3ZpbmcgdGhlIG1pc3BsYWNlZCByb3chIFBsZWFzZSBtYW51YWxseSBmaXggdGhlIGR1cGxpY2F0ZSByb3c6ICVzAENvbW1hbmQgJyVzJyBjYW5ub3QgYmUgYWJvcnRlZC4gVGhlIHRyaWdnZXIgZXJyb3Igd2FzICglZCkgWyVzXTogJXMARXZlbnQgJyVzJyBjYW5ub3QgYmUgYWJvcnRlZC4gVGhlIHRyaWdnZXIgZXJyb3Igd2FzICglZCkgWyVzXTogJXMAJXMuIFRoZSB0cmlnZ2VyIGVycm9yIHdhcyAoJWQpIFslc106ICVzAFJlcGxpY2EgU1FMOiBDb25maWd1cmF0aW9uIHdpdGggbnVtYmVyIG9mIHJlcGxpY2F0aW9uIHNvdXJjZXMgPSAldScgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGFwcGx5aW5nIHRvIE5kYgBSZXBsaWNhIFNRTDogQ29uZmlndXJhdGlvbiAncmVwbGljYV9wYXJhbGxlbF93b3JrZXJzID0gJWx1JyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYXBwbHlpbmcgdG8gTmRiAE5EQiAlczogZGlzdHJpYnV0aW5nICVzIGVycjogJXUAU3RvcmluZyBNeVNRTCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBpcyBub3Qgc2VjdXJlIGFuZCBpcyB0aGVyZWZvcmUgbm90IHJlY29tbWVuZGVkLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgdGhlIFVTRVIgYW5kIFBBU1NXT1JEIGNvbm5lY3Rpb24gb3B0aW9ucyBmb3IgU1RBUlQgUkVQTElDQTsgc2VlIHRoZSAnU1RBUlQgUkVQTElDQSBTeW50YXgnIGluIHRoZSBNeVNRTCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEZMVVNIIFJFTEFZIExPR1MgY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBjaGFubmVsICclLS4xOTJzJy4AUmVwbGljYSBjaGFubmVsICclcycgZG9lcyBub3QgZXhpc3QuAENhbid0IGZpbmQgc3ltYm9sICclLS4xMjhzJyBpbiBsaWJyYXJ5LgBDYW4ndCBvcGVuIHNoYXJlZCBsaWJyYXJ5ICclLS4xOTJzJyAoZXJybm86ICVkICUtLjEyOHMpLgBUaHJlYWQgcHJpb3JpdHkgYXR0cmlidXRlIHNldHRpbmcgaW4gUmVzb3VyY2UgR3JvdXAgU1FMIHNoYWxsIGJlIGlnbm9yZWQgZHVlIHRvIHVuc3VwcG9ydGVkIHBsYXRmb3JtIG9yIGluc3VmZmljaWVudCBwcml2aWxlZ2UuAE9wdGlvbiBiaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KSBpcyBncmVhdGVyIHRoYW4gbWF4X2JpbmxvZ19jYWNoZV9zaXplICglbHUpOyBzZXR0aW5nIGJpbmxvZ19jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfY2FjaGVfc2l6ZS4AT3B0aW9uIGJpbmxvZ19zdG10X2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpOyBzZXR0aW5nIGJpbmxvZ19zdG10X2NhY2hlX3NpemUgZXF1YWwgdG8gbWF4X2JpbmxvZ19zdG10X2NhY2hlX3NpemUuAENhbid0IGdlbmVyYXRlIGEgdW5pcXVlIGxvZy1maWxlbmFtZSAlLS4yMDBzLigxLTk5OSkuAEVycm9yIHJlYWRpbmcgZmlsZSAnJS0uMjAwcycgKGVycm5vOiAlZCAtICVzKQBFcnJvciB3cml0aW5nIGZpbGUgJyUtLjIwMHMnIChlcnJubzogJWQgLSAlcykAJXMgU3RhdGVtZW50OiAlcwAlczogRm9yY2luZyBjbG9zZSBvZiB0aHJlYWQgJWxkICB1c2VyOiAnJS0uNDhzJy4AJXM6IFNodXRkb3duIGNvbXBsZXRlIChteXNxbGQgJXMpICAlcy4AQ2Fubm90IGhhdmUgc2FtZSBiYXNlIG5hbWUgJyVzJyBmb3IgYm90aCBiaW5hcnkgYW5kIHJlbGF5IGxvZ3MuIFBsZWFzZSBjaGVjayAlcyAoZGVmYXVsdCAnJXMnIGlmIC0tbG9nLWJpbiBvcHRpb24gaXMgbm90IHVzZWQsIGRlZmF1bHQgJyVzJyBpZiAtLWxvZy1iaW4gb3B0aW9uIGlzIHVzZWQgd2l0aG91dCBhcmd1bWVudCkgYW5kICVzIChkZWZhdWx0ICclcycpIG9wdGlvbnMgdG8gZW5zdXJlIHRoZXkgZG8gbm90IGNvbmZsaWN0LgBHVElEX01PREUgPSBPTiByZXF1aXJlcyBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTi4AWW91IGhhdmUgbm90IHByb3ZpZGVkIGEgbWFuZGF0b3J5IHNlcnZlci1pZC4gU2VydmVycyBpbiBhIHJlcGxpY2F0aW9uIHRvcG9sb2d5IG11c3QgaGF2ZSB1bmlxdWUgc2VydmVyLWlkcy4gUGxlYXNlIHJlZmVyIHRvIHRoZSBwcm9wZXIgc2VydmVyIHN0YXJ0LXVwIHBhcmFtZXRlcnMgZG9jdW1lbnRhdGlvbi4AQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHMpLgAnTk9fWkVST19EQVRFJywgJ05PX1pFUk9fSU5fREFURScgYW5kICdFUlJPUl9GT1JfRElWSVNJT05fQllfWkVSTycgc3FsIG1vZGVzIHNob3VsZCBiZSB1c2VkIHdpdGggc3RyaWN0IG1vZGUuIFRoZXkgd2lsbCBiZSBtZXJnZWQgd2l0aCBzdHJpY3QgbW9kZSBpbiBhIGZ1dHVyZSByZWxlYXNlLgBAQEdMT0JBTC5HVElEX1BVUkdFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AQEBHTE9CQUwuR1RJRF9FWEVDVVRFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkLgBUcmlnZ2VycyBmb3IgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AgaGF2ZSBubyBjcmVhdGlvbiBjb250ZXh0ACclLS4xOTJzJyBoYXMgYW4gb2xkIGZvcm1hdCwgeW91IHNob3VsZCByZS1jcmVhdGUgdGhlICclcycgb2JqZWN0KHMpAFZpZXcgYCUtLjY0c2AuYCUtLjY0c2AgaGFzIG5vIGNyZWF0aW9uIGNvbnRleHQATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gYSBwYXRoIGxlbmd0aCB0b28gbG9uZyBmb3IgdGFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIHRoZSBwYXRoIGxpbWl0IGZvciB5b3VyIE9TLgBUYWJsZSB1cGdyYWRlIHJlcXVpcmVkLiBQbGVhc2UgZG8gIlJFUEFJUiBUQUJMRSBgJS0uNjRzYCIgb3IgZHVtcC9yZWxvYWQgdG8gZml4IGl0IQBHb3QgZXJyb3IgJWQgLSAnJS0uMTkycycgZnJvbSBzdG9yYWdlIGVuZ2luZS4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJwBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnICh1c2luZyBwYXNzd29yZDogJXMpAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgbG9ja2VkLgBZb3VyIHBhc3N3b3JkIGhhcyBleHBpcmVkLiBUbyBsb2cgaW4geW91IG11c3QgY2hhbmdlIGl0IHVzaW5nIGEgY2xpZW50IHRoYXQgc3VwcG9ydHMgZXhwaXJlZCBwYXNzd29yZHMuAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBzeXN0ZW0gdGFibGVzLiBbJXMuJXNdLgBTb3J0IGFib3J0ZWQAJXM6IHJlYWR5IGZvciBjb25uZWN0aW9ucy4gVmVyc2lvbjogJyVzJyAgc29ja2V0OiAnJXMnICBwb3J0OiAlZCAgJXMuAFVua25vd24gbG9jYWxlOiAnJS0uNjRzJy4AVW5rbm93biBjb2xsYXRpb246ICclLS42NHMnLgBPdXQgb2YgbWVtb3J5OyBjaGVjayBpZiBteXNxbGQgb3Igc29tZSBvdGhlciBwcm9jZXNzIHVzZXMgYWxsIGF2YWlsYWJsZSBtZW1vcnk7IGlmIG5vdCwgeW91IG1heSBoYXZlIHRvIHVzZSAndWxpbWl0JyB0byBhbGxvdyBteXNxbGQgdG8gdXNlIG1vcmUgbWVtb3J5IG9yIHlvdSBjYW4gYWRkIG1vcmUgc3dhcCBzcGFjZQBPdXQgb2YgbWVtb3J5OyByZXN0YXJ0IHNlcnZlciBhbmQgdHJ5IGFnYWluIChuZWVkZWQgJWQgYnl0ZXMpAENPTExBVElPTiAnJXMnIGlzIG5vdCB2YWxpZCBmb3IgQ0hBUkFDVEVSIFNFVCAnJXMnAEZhaWxlZCB0byBzZXQgJXMgYXQgb3IgYXJvdW5kICIlcyIgLS0gc2VydmljZSBpcyB2YWxpZCwgYnV0IGNhbiBub3QgYmUgaW5pdGlhbGl6ZWQ7IHBsZWFzZSBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBhbmQgbWFrZSBzdXJlIGl0IGNhbiByZWFkIGl0cyBpbnB1dChzKSBhbmQgd3JpdGUgdG8gaXRzIG91dHB1dChzKS4AR2VuZXJhdGluZyBhIG5ldyBVVUlEOiAlcy4ARmFpbGVkIHRvIGdldCBhYnNvbHV0ZSBwYXRoIG9mIHByb2dyYW0gZXhlY3V0YWJsZSAlcwBGYWlsZWQgdG8gYm9vdHN0cmFwIHBlcmZvcm1hbmNlIHNjaGVtYSBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBGYWlsZWQgdG8gZGVpbml0IHBlcmZvcm1hbmNlIHNjaGVtYSBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBDb3VsZCBub3Qgb3BlbiBkdXBsaWNhdGUgZmQgZm9yICVzOiAlcy4AU3lzdGVtIHZpZXdzIGluaXRpYWxpemF0aW9uIGZhaWxlZC4AUmVzb3VyY2UgZ3JvdXAgcG9zdCBpbml0aWFsaXphdGlvbiBmYWlsZWQuAFJlc291cmNlIEdyb3VwIHN1YnN5c3RlbSBpbml0aWFsaXphdGlvbiBmYWlsZWQuAEZhaWxlZCB0byBzdGFydCBteXNxbGQgZGFlbW9uLiBDaGVjayBteXNxbGQgZXJyb3IgbG9nLgBDYW5ub3QgY2hhbmdlIHRvIHJvb3QgZGlyZWN0b3J5OiAlcy4ARmFpbGVkIHRvIGJvb3RzdHJhcCBwZXJzaXN0ZW50IHByaXZpbGVnZXMuAEJhc2VkaXIgc2V0IHRvICVzLgBDb3VsZCBub3QgYWRkIHdpbGQgZG8gdGFibGUgcnVsZSAnJXMnIQBDb3VsZCBub3QgYWRkIHdpbGQgaWdub3JlIHRhYmxlIHJ1bGUgJyVzJyEAVGhlIHByaXZpbGVnZSBzeXN0ZW0gZmFpbGVkIHRvIGluaXRpYWxpemUgY29ycmVjdGx5LiBGb3IgY29tcGxldGUgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1cGdyYWRlIE15U1FMIHRvIGEgbmV3IHZlcnNpb24gcGxlYXNlIHNlZSB0aGUgJ1VwZ3JhZGluZyBNeVNRTCcgc2VjdGlvbiBmcm9tIHRoZSBNeVNRTCBtYW51YWwuAENhbm5vdCBzZXQgc2VydmljZXMgIiVzIiByZXF1ZXN0ZWQgaW4gLS1sb2ctZXJyb3Itc2VydmljZXMsIHVzaW5nIGRlZmF1bHRzLgBQZXJmb3JtYW5jZSBzY2hlbWEgdGFibGVzIGluaXRpYWxpemF0aW9uIGZhaWxlZC4AVGhlIHRyYW5zYWN0aW9uX3dyaXRlX3NldF9leHRyYWN0aW9uIG11c3QgYmUgc2V0IHRvICVzIHdoZW4gYmlubG9nX3RyYW5zYWN0aW9uX2RlcGVuZGVuY3lfdHJhY2tpbmcgaXMgJXMuAEludmFsaWQgcmVwbGljYXRpb24gdGltZXN0YW1wczogb3JpZ2luYWwgY29tbWl0IHRpbWVzdGFtcCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbW1lZGlhdGUgY29tbWl0IHRpbWVzdGFtcC4gVGhpcyBtYXkgYmUgYW4gaXNzdWUgaWYgZGVsYXllZCByZXBsaWNhdGlvbiBpcyBhY3RpdmUuIE1ha2Ugc3VyZSB0aGF0IHNlcnZlcnMgaGF2ZSB0aGVpciBjbG9ja3Mgc2V0IHRvIHRoZSBjb3JyZWN0IHRpbWUuIE5vIGZ1cnRoZXIgbWVzc2FnZSB3aWxsIGJlIGVtaXR0ZWQgdW50aWwgYWZ0ZXIgdGltZXN0YW1wcyBiZWNvbWUgdmFsaWQgYWdhaW4uAFRoZSByZXBsaWNhdGlvbiB0aW1lc3RhbXBzIGhhdmUgcmV0dXJuZWQgdG8gbm9ybWFsIHZhbHVlcy4AJXMuAEZhaWxlZCB0byB3cml0ZSBhbiBpbmNpZGVudCBldmVudCBpbnRvIHN0bXRfY2FjaGUuAFJlbGF5bG9nIGZpbGUgJXMgc2l6ZSB3YXMgJWxsdSwgYnV0IHdhcyB0cnVuY2F0ZWQgYXQgJWxsdS4AVW5hYmxlIHRvIHB1cmdlIHJlbGF5IGxvZyBmaWxlcy4gJXM6JXMuAFJlcGxpY2E6IGZhaWxlZCBpbiBjcmVhdGluZyBmaWx0ZXIgZm9yIGNoYW5uZWwgJyVzJy4AUmVwbGljYTogZmFpbGVkIGluIGNvcHlpbmcgdGhlIGdsb2JhbCBmaWx0ZXJzIHRvIGl0cyBvd24gcGVyLWNoYW5uZWwgZmlsdGVycyBvbiBjb25maWd1cmF0aW9uIGZvciBjaGFubmVsICclcycuAFRoZXJlIGFyZSBwZXItY2hhbm5lbCByZXBsaWNhdGlvbiBmaWx0ZXIocykgY29uZmlndXJlZCBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3aGljaCBkb2VzIG5vdCBleGlzdC4gVGhlIGZpbHRlcihzKSBoYXZlIGJlZW4gZGlzY2FyZGVkLgBUaGUgc3lzdGVtIHRhYmxlIG15c3FsLmdsb2JhbF9ncmFudHMgaXMgbWlzc2luZy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBBQ0wgdGFibGUgbXlzcWwuJS4qcyBtaXNzaW5nLiBTb21lIG9wZXJhdGlvbnMgbWF5IGZhaWwuAENhbid0IHNldCBtYW5kYXRvcnlfcm9sZSAlc0AlczogQW5vbnltb3VzIGF1dGhvcml6YXRpb24gSURzIGFyZSBub3QgYWxsb3dlZCBhcyByb2xlcy4AQ2FuJ3Qgc2V0IG1hbmRhdG9yeV9yb2xlOiBUaGVyZSdzIG5vIHN1Y2ggYXV0aG9yaXphdGlvbiBJRCAlc0Alcy4AVGFibGUgJyUtMTkycycgZmFpbGVkIHRvIG1vdmUvaW5zZXJ0IGEgcm93IGZyb20gcGFydCAlZCBpbnRvIHBhcnQgJWQ6ICVzLgBTa2lwcGVkIHVwZGF0aW5nIHJlc291cmNlIGdyb3VwIG1ldGFkYXRhIGluIElubm9EQiByZWFkIG9ubHkgbW9kZS4ARmFpbGVkIHRvIHBlcnNpc3QgcmVzb3VyY2UgZ3JvdXAgJXMgdG8gRGF0YSBEaWN0aW9uYXJ5LgBGYWlsZWQgdG8gZGVzZXJpYWxpemUgcmVzb3VyY2UgZ3JvdXAgJXMuAFVwZGF0ZSBvZiByZXNvdXJjZSBncm91cCAlcyBmYWlsZWQuAFZhbGlkYXRpb24gb2YgcmVzb3VyY2UgZ3JvdXAgJXMgZmFpbGVkLiBSZXNvdXJjZSBncm91cCBpcyBkaXNhYmxlZC4AVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgUmVzb3VyY2UgR3JvdXAgJXMuAEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHJlc291cmNlIGdyb3VwIGhhc2guAEZhaWxlZCB0byBhZGQgcmVzb3VyY2UgZ3JvdXAgJXMgdG8gcmVzb3VyY2UgZ3JvdXAgbWFwLgBSZXNvdXJjZSBncm91cCBmZWF0dXJlIGlzIGRpc2FibGVkLiAoU2VydmVyIGlzIGNvbXBpbGVkIHdpdGggRElTQUJMRV9QU0lfVEhSRUFEKS4AVW5hYmxlIHRvIGFwcGx5IHJlc291cmNlIGdyb3VwIGNvbnRyb2xsZXIgJXMuAFVuYWJsZSB0byBhY3F1aXJlIGxvY2sgb24gdGhlIHJlc291cmNlIGdyb3VwICVzLiBIaW50IHRvIHN3aXRjaCByZXNvdXJjZSBncm91cCBzaGFsbCBiZSBpZ25vcmVkLgBQRlMgJXMgbm90aWZpY2F0aW9uIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbiBmYWlsZWQuAFVuYWJsZSB0byBiaW5kIHRocmVhZCBpZCAlbGx1IHRvIGNwdSBpZCAldSAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBVbmFibGUgdG8gYmluZCB0aHJlYWQgaWQgJWxsdSB0byBjcHUgaWRzIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFVuYmluZCB0aHJlYWQgaWQgJWxsdSBmYWlsZWQuIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFNldHRpbmcgdGhyZWFkIHByaW9yaXR5ICVkIHRvIHRocmVhZCBpZCAlbGx1IGZhaWxlZC4gKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AVW5hYmxlIHRvIGRldGVybWluZSBDQVBfU1lTX05JQ0UgY2FwYWJpbGl0eS4AJXMgZmFpbGVkOiBGYWlsZWQgdG8gZ2V0IGhhbmRsZSBmb3IgdGhyZWFkICVsbHUuAFJldHJpZXZhbCBvZiB0aHJlYWQgcHJpb3JpdHkgdW5zdXBwb3J0ZWQgb24gJXMuAFVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDUFVzLgBSZXNvdXJjZSBncm91cCBmZWF0dXJlIHNoYWxsIG5vdCBiZSBhdmFpbGFibGUuIEluY29tcGF0aWJsZSB0aHJlYWQgaGFuZGxpbmcgb3B0aW9uLgBJbnZhbGlkIHRocmVhZCBwcmlvcml0eSAlZCBmb3IgYSAlcyByZXNvdXJjZSBncm91cC4gQWxsb3dlZCByYW5nZSBpcyBbJWQsICVkXS4AYmluZF90b19jcHUgZmFpbGVkOiBwcm9jZXNzb3JfYmluZCBmb3IgY3B1aWQgJXUgZmFpbGVkIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAGJpbmRfdG9fY3B1IGZhaWxlZDogcHJvY2Vzc29yX2JpbmQgZm9yIHRocmVhZCAlJWxseCB3aXRoIGNwdSBpZCAldSAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgAlcyBmYWlsZWQ6IHByb2Nlc3Nvcl9hZmZpbml0eSBmYWlsZWQgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4ARXJyb3IgaW4gcmVuYW1pbmcgbXlzcWxfaW5kZXhfc3RhdHMuaWJkLgBFcnJvciBpbiBvcGVuaW5nIGRhdGEgZGlyZWN0b3J5ICVzLgBFcnJvciBpbiBmZXRjaGluZyBsaXN0IG9mIHRhYmxlc3BhY2VzLgBFcnJvciBpbiBhY3F1aXJpbmcgVGFibGVzcGFjZSBmb3IgU0RJIGluc2VydGlvbiAlcy4ARXJyb3IgaW4gcmVzb2x2aW5nIEVuZ2luZSBuYW1lIGZvciB0YWJsZXNwYWNlICVzIHdpdGggZW5naW5lICVzLgBFcnJvciBpbiBjcmVhdGluZyBTREkgZm9yICVzIHRhYmxlc3BhY2UuAEVycm9yIGluIHN0b3JpbmcgU0RJIGZvciAlcyB0YWJsZXNwYWNlLgBFcnJvciBpbiBmZXRjaGluZyBsaXN0IG9mIHRhYmxlcy4ARmluaXNoZWQgcG9wdWxhdGluZyBEYXRhIERpY3Rpb25hcnkgdGFibGVzIHdpdGggZGF0YS4AQ291bGQgbm90IG9wZW4gdGhlIHVwZ3JhZGUgaW5mbyBmaWxlICclcycgaW4gdGhlIE15U1FMIHNlcnZlcnMgZGF0YWRpciwgZXJybm86ICVkLgBDb3VsZCBub3QgY2xvc2UgdGhlIHVwZ3JhZGUgaW5mbyBmaWxlICclcycgaW4gdGhlIE15U1FMIHNlcnZlcnMgZGF0YWRpciwgZXJybm86ICVkLgBHb3QgZXJyb3IgJWQgZnJvbSBTRSB3aGlsZSBtaWdyYXRpbmcgdGFibGVzcGFjZXMuAEVycm9yIGluIGNyZWF0aW5nIFRBQkxFIHN0YXRpc3RpY3MgZW50cnkuIEZpeCBzdGF0aXN0aWNzIGRhdGEgYnkgdXNpbmcgQU5BTFlaRSBjb21tYW5kLgBGaW5pc2hlZCBtaWdyYXRpbmcgVEFCTEUgc3RhdGlzdGljcyBkYXRhLgBFcnJvciBpbiBjcmVhdGluZyBJbmRleCBzdGF0aXN0aWNzIGVudHJ5LiBGaXggc3RhdGlzdGljcyBkYXRhIGJ5IHVzaW5nIEFOQUxZWkUgY29tbWFuZC4ARmluaXNoZWQgbWlncmF0aW5nIElOREVYIHN0YXRpc3RpY3MgZGF0YS4ARmFpbGVkIHRvIGZpbmQgdmFsaWQgZGF0YSBkaXJlY3RvcnkuAFN0YXJ0aW5nIHVwZ3JhZGUgb2YgZGF0YSBkaXJlY3RvcnkuAEZhaWxlZCB0byBpbml0aWFsaXplIEREIFN0b3JhZ2UgRW5naW5lLgBGb3VuZCBwYXJ0aWFsbHkgdXBncmFkZWQgREQuIEFib3J0aW5nIHVwZ3JhZGUgYW5kIGRlbGV0aW5nIGFsbCBERCB0YWJsZXMuIFN0YXJ0IHRoZSB1cGdyYWRlIHByb2Nlc3MgYWdhaW4uAEZvdW5kIHBhcnRpYWxseSB1cGdyYWRlZCBERC4gVXBncmFkZSB3aWxsIGNvbnRpbnVlIGFuZCBzdGFydCB0aGUgc2VydmVyLgBFcnJvciBpbiB1cGdyYWRpbmcgZW5naW5lIGxvZ3MuAEVycm9yIGluIHVwZGF0aW5nIFNESSBpbmZvcm1hdGlvbi4AU2tpcCB1cGRhdGluZyAlcyBtZXRhZGF0YSBpbiBJbm5vREIgcmVhZC1vbmx5IG1vZGUuAENyZWF0ZWQgc3lzdGVtIHZpZXdzIHdpdGggSV9TIHZlcnNpb24gJWQuAFVua25vd24gZXJyb3IgZGV0ZWN0ZWQgJWQgaW4gaGFuZGxlci4ARXJyb3IgaW4gTG9nX2V2ZW50OjpyZWFkX2xvZ19ldmVudCgpOiAnJXMnLCBkYXRhX2xlbjogJWx1LCBldmVudF90eXBlOiAlZC4AVGhlIHJvdyBkYXRhIGlzIGdyZWF0ZXIgdGhhbiA0R0IsIHdoaWNoIGlzIHRvbyBiaWcgdG8gd3JpdGUgdG8gdGhlIGJpbmFyeSBsb2cuAFVuYWJsZSB0byBjb25zdHJ1Y3QgRFJPUCBFVkVOVCBTUUwgcXVlcnkgc3RyaW5nLgBVbmFibGUgdG8gYmlubG9nIGRyb3AgZXZlbnQgJXMuJXMuAEZhaWxlZCB0byBzdGFydCByZXBsaWNhIHRocmVhZHMgZm9yIGNoYW5uZWwgJyVzJy4AJXMlcy4ARmFpbGVkIHJlZ2lzdGVyaW5nIG9uIHNvdXJjZSwgcmVjb25uZWN0aW5nIHRvIHRyeSBhZ2FpbiwgbG9nICclcycgYXQgcG9zaXRpb24gJXMuICVzLgBSZXBsaWNhIEkvTyB0aHJlYWQga2lsbGVkIGR1cmluZyBvciBhZnRlciByZWNvbm5lY3QuAFNvbWUgb2YgdGhlIGNoYW5uZWxzIGFyZSBub3QgY3JlYXRlZC9pbml0aWFsaXplZCBwcm9wZXJseS4gQ2hlY2sgZm9yIGFkZGl0aW9uYWwgbWVzc2FnZXMgYWJvdmUuIFlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIHN0YXJ0IHJlcGxpY2F0aW9uIG9uIHRob3NlIGNoYW5uZWxzIHVudGlsIHRoZSBpc3N1ZSBpcyByZXNvbHZlZCBhbmQgdGhlIHNlcnZlciByZXN0YXJ0ZWQuAEZhaWxlZCB0byBhZGQgYSByZXBsaWNhdGlvbiBmaWx0ZXIgaW50byBmaWx0ZXIgbWFwIGZvciBjaGFubmVsICclLjE5MnMnLgBUaGVyZSBhcmUgcGVyLWNoYW5uZWwgcmVwbGljYXRpb24gZmlsdGVyKHMpIGNvbmZpZ3VyZWQgZm9yIGdyb3VwIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2hpY2ggaXMgZGlzYWxsb3dlZC4gVGhlIGZpbHRlcihzKSBoYXZlIGJlZW4gZGlzY2FyZGVkLgBUaGVyZSBhcmUgcGVyLWNoYW5uZWwgcmVwbGljYXRpb24gZmlsdGVyKHMpIGNvbmZpZ3VyZWQgZm9yIGNoYW5uZWwgJyUuMTkycycgd2hpY2ggZG9lcyBub3QgZXhpc3QuIFRoZSBmaWx0ZXIocykgaGF2ZSBiZWVuIGRpc2NhcmRlZC4AQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYnVpbGRpbmcgZG9fdGFibGUgYW5kIGlnbm9yZV90YWJsZSBydWxlcyB0byBoYXNoZXMgZm9yIHBlci1jaGFubmVsIGZpbHRlci4AQ2xvbmUgcGx1Z2luIGNhbm5vdCBiZSBsb2FkZWQuAENsb25lIEhhbmRsZXIgZXhpc3RzLgBDb3VsZCBub3QgY3JlYXRlIENsb25lIEhhbmRsZXIuAFRoZSBDWUNMRSB0aW1lciBpcyBub3QgYXZhaWxhYmxlLiBXQUlUIGV2ZW50cyBpbiB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hIHdpbGwgbm90IGJlIHRpbWVkLgBUaGUgTkFOT1NFQ09ORCB0aW1lciBpcyBub3QgYXZhaWxhYmxlLiBJRExFL1NUQUdFL1NUQVRFTUVOVC9UUkFOU0FDVElPTiBldmVudHMgaW4gdGhlIHBlcmZvcm1hbmNlX3NjaGVtYSB3aWxsIG5vdCBiZSB0aW1lZC4AVGhlIE1JQ1JPU0VDT05EIHRpbWVyIGlzIG5vdCBhdmFpbGFibGUuIElETEUvU1RBR0UvU1RBVEVNRU5UL1RSQU5TQUNUSU9OIGV2ZW50cyBpbiB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hIHdpbGwgbm90IGJlIHRpbWVkLgBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciAlenUgY2h1bmtzIGVhY2ggb2Ygc2l6ZSAlenUgZm9yIGJ1ZmZlciAnJXMnIGR1ZSB0byBvdmVyZmxvdy4ARmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlcyBmb3IgYnVmZmVyICclcycgZHVlIHRvIG91dC1vZi1tZW1vcnkuAElubm9EQiBjb3VsZCBub3QgZmluZCBpbmRleCAlcyBrZXkgbm8gJXUgZm9yIHRhYmxlICVzIHRocm91Z2ggaXRzIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLgBDYW5ub3QgZmluZCBpbmRleCAlcyBpbiBJbm5vREIgaW5kZXggdHJhbnNsYXRpb24gdGFibGUuAElubm9EQiBjb3VsZCBub3QgZmluZCBrZXkgbm8gJXUgd2l0aCBuYW1lICVzIGZyb20gZGljdCBjYWNoZSBmb3IgdGFibGUgJXMuAElubm9EQjogY2hhbmdlX2FjdGl2ZV9pbmRleCgldSkgZmFpbGVkLgBTdG9yZWQgcmVmIGxlbiBpcyAlbHUsIGJ1dCB0YWJsZSByZWYgbGVuIGlzICVsdS4ATXlTUUwgaXMgdHJ5aW5nIHRvIGNyZWF0ZSBhIGNvbHVtbiBwcmVmaXggaW5kZXggZmllbGQsIG9uIGFuIGluYXBwcm9wcmlhdGUgZGF0YSB0eXBlLiBUYWJsZSBuYW1lICVzLCBjb2x1bW4gbmFtZSAlcy4AQ2Fubm90IGNyZWF0ZSB0YWJsZSAlcy4ARm91bmQgaW5kZXggJXMgaW4gSW5ub0RCIGluZGV4IGxpc3QgYnV0IG5vdCBpdHMgTXlTUUwgaW5kZXggbnVtYmVyLiBJdCBjb3VsZCBiZSBhbiBJbm5vREIgaW50ZXJuYWwgaW5kZXguAElubm9EQjogVGFibGUgJXMgY29udGFpbnMgJWx1IGluZGV4ZXMgaW5zaWRlIElubm9EQiwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gdGhlIG51bWJlciBvZiBpbmRleGVzICV1IGRlZmluZWQgaW4gTXlTUUwuAFRhYmxlICVzIGNvbnRhaW5zIGZld2VyIGluZGV4ZXMgaW5zaWRlIElubm9EQiB0aGFuIGFyZSBkZWZpbmVkIGluIHRoZSBNeVNRTC4gSGF2ZSB5b3UgbWl4ZWQgdXAgd2l0aCBkYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWZmZXJlbnQgaW5zdGFsbGF0aW9uPwBJbmRleCAlcyBvZiAlcyBoYXMgJWx1IGNvbHVtbnMgdW5pcXVlIGluc2lkZSBJbm5vREIsIGJ1dCBNeVNRTCBpcyBhc2tpbmcgc3RhdGlzdGljcyBmb3IgJWx1IGNvbHVtbnMuIEhhdmUgeW91IG1peGVkIGRhdGEgZGljdGlvbmFyeSBmcm9tIGRpZmZlcmVudCBpbnN0YWxsYXRpb24/AE1vbml0b3IgY291bnRlciAnJXMnIGNhbm5vdCBiZSB0dXJuZWQgb24vb2ZmIGluZGl2aWR1YWxseS4gUGxlYXNlIHVzZSBpdHMgbW9kdWxlIG5hbWUgdG8gdHVybiBvbi9vZmYgdGhlIGNvdW50ZXJzIGluIHRoZSBtb2R1bGUgYXMgYSBncm91cC4ARGVmYXVsdCB2YWx1ZSBpcyBub3QgZGVmaW5lZCBmb3IgdGhpcyBzZXQgb3B0aW9uLiBQbGVhc2Ugc3BlY2lmeSBjb3JyZWN0IGNvdW50ZXIgb3IgbW9kdWxlIG5hbWUuAElubm9EQjogTW9uaXRvciAlcyBpcyBhbHJlYWR5IGVuYWJsZWQuAEludmFsaWQgbW9uaXRvciBjb3VudGVyIDogJXMuAExvYWRMaWJyYXJ5KCIlcyIpIGZhaWxlZDogR2V0TGFzdEVycm9yIHJldHVybnMgJWx1LgAlcy4AJXMuACVzLgAlcy4AJXMuACVzLgBVbmFibGUgdG8gd2FpdCBmb3IgcHJvY2VzcyAlbGxkLgBVbmFibGUgdG8gZGV0ZXJtaW5lIGlmIGRhZW1vbiBpcyBydW5uaW5nOiAlcyAocmM9JWQpLgAlcwBbRkFUQUxdIElubm9EQjogJXMAVGhlIHN5bnRheCAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQuAFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AJXMAQmluYXJ5IGxvZ2dpbmcgbm90IHBvc3NpYmxlLiBNZXNzYWdlOiAlcy4ARmFpbGVkIHRvIHNldCBwZXJzaXN0ZWQgb3B0aW9ucy4AQ2Fubm90IGFjcXVpcmUgc3BlY2lmaWVkIHNlcnZpY2UgaW1wbGVtZW50YXRpb246ICclLjE5MnMnLgBJbnZhbGlkIFZDUFUgcmFuZ2UgJXUtJXUuAEludmFsaWQgY3B1IGlkICV1LgBHb3QgZXJyb3IgJWQgZHVyaW5nIEZMVVNIX0xPR1MuAFByb2JsZW0gd2hpbGUgZHJvcHBpbmcgZGF0YWJhc2UuIENhbid0IHJlbW92ZSBkYXRhYmFzZSBkaXJlY3RvcnkgKCVzKS4gUGxlYXNlIHJlbW92ZSBpdCBtYW51YWxseS4AVGhlIG9wdGlvbiBleHBpcmVfbG9nc19kYXlzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggb3B0aW9uIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzLiBUaGVyZWZvcmUsIHZhbHVlIG9mIGV4cGlyZV9sb2dzX2RheXMgaXMgaWdub3JlZC4AbWFsZm9ybWVkIG9yIHZlcnkgb2xkIHJlbGF5IGxvZyB3aGljaCBkb2VzIG5vdCBoYXZlIEZvcm1hdERlc2NyaXB0b3IuAFVwZ3JhZGUgb2YgdmlldyAnJXMuJXMnIGZhaWxlZC4gUmUtY3JlYXRlIHRoZSB2aWV3IHdpdGggdGhlIGV4cGxpY2l0IGNvbHVtbiBuYW1lIGxlc3NlciB0aGFuIDY0IGNoYXJhY3RlcnMuAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQgZm9yIGAlLS42NHNgLmAlLS42NHNgLiBQbGVhc2UgZHVtcC9yZWxvYWQgdGFibGUgdG8gZml4IGl0IQBFcnJvciBpbiB1cGRhdGluZyB2ZXJzaW9uIG51bWJlciBpbiAlcyB0YWJsZXNwYWNlLgBLZXlyaW5nIG1pZ3JhdGlvbiBmYWlsZWQuAEtleXJpbmcgbWlncmF0aW9uIHN1Y2Nlc3NmdWwuAFJlY2VpdmVkIFJFU1RBUlQgZnJvbSB1c2VyICVzLiAgUmVzdGFydGluZyBteXNxbGQgKFZlcnNpb246ICVzKS4ARGlmZmVyZW50IGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgc2V0dGluZ3MgZm9yIHNlcnZlciAoJyV1JykgYW5kIGRhdGEgZGljdGlvbmFyeSAoJyV1JykuAERhdGEgZGljdGlvbmFyeSBpbml0aWFsaXppbmcgdmVyc2lvbiAnJXUnLgBEYXRhIGRpY3Rpb25hcnkgcmVzdGFydGluZyB2ZXJzaW9uICcldScuAERhdGEgZGljdGlvbmFyeSB1cGdyYWRpbmcgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4ARGF0YSBkaWN0aW9uYXJ5IHVwZ3JhZGUgcHJvaGliaXRlZCBieSB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS1ub19kZF91cGdyYWRlJy4AVXBncmFkaW5nIHRoZSBkYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWN0aW9uYXJ5IHZlcnNpb24gJyV1JyBpcyBub3Qgc3VwcG9ydGVkLgBVcGdyYWRpbmcgdGhlIGRhdGEgZGljdGlvbmFyeSBmYWlsZWQsIHRlbXBvcmFyeSBzY2hlbWEgbmFtZSAnJS0uMTkycycgbm90IGF2YWlsYWJsZS4ARGF0YSBkaWN0aW9uYXJ5IG1pbm9yIGRvd25ncmFkZSBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBNaW5vciBkb3duZ3JhZGUgb2YgdGhlIERhdGEgZGljdGlvbmFyeSBmcm9tIGRpY3Rpb25hcnkgdmVyc2lvbiAnJXUnIGlzIG5vdCBzdXBwb3J0ZWQuAE5vIGRhdGEgZGljdGlvbmFyeSB2ZXJzaW9uIG51bWJlciBmb3VuZC4AVGhyZWFkIHBvb2wgbm90IHN1cHBvcnRlZCwgcmVxdWlyZXMgYSBtaW5pbXVtIG9mICVzLgB0aHJlYWRfcG9vbF9zaXplPTAgbWVhbnMgdGhyZWFkIHBvb2wgZGlzYWJsZWQsIEFsbG93ZWQgcmFuZ2Ugb2YgdGhyZWFkX3Bvb2xfc2l6ZSBpcyAlZC0lZC4AdGhyZWFkX3Bvb2xfc2l6ZT0lbHUgaXMgdG9vIGhpZ2gsICVkIGlzIG1heGltdW0sIHRocmVhZCBwb29sIGlzIGRpc2FibGVkLiBBbGxvd2VkIHJhbmdlIG9mIHRocmVhZF9wb29sX3NpemUgaXMgJWQtJWQuAHRocmVhZF9wb29sX2FsZ29yaXRobSBjYW4gYmUgc2V0IHRvIDAgYW5kIDEsIDAgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGxvdyBjb25jdXJyZW5jeSBhbGdvcml0aG0sIDEgbWVhbnMgYSBoaWdoIGNvbmN1cnJlbmN5IGFsZ29yaXRobS4AdGhyZWFkX3Bvb2xfc3RhbGxfbGltaXQgY2FuIGJlICVkIGF0IG1pbmltdW0gYW5kICVkIGF0IG1heGltdW0sIHNtYWxsZXIgdmFsdWVzIHdvdWxkIHJlbmRlciB0aGUgdGhyZWFkIHBvb2wgZmFpcmx5IHVzZWxlc3MgYW5kIGhpZ2hlciB2YWx1ZXMgY291bGQgbWFrZSBpdCBwb3NzaWJsZSB0byBoYXZlIHVuZGV0ZWN0ZWQgZGVhZGxvY2sgaXNzdWVzIGluIHRoZSBNeVNRTCBTZXJ2ZXIuAEludmFsaWQgdmFsdWUgb2YgdGhyZWFkX3Bvb2xfcHJpb19raWNrdXBfdGltZXIgc3BlY2lmaWVkLiBWYWx1ZSBvZiB0aHJlYWRfcG9vbF9wcmlvX2tpY2t1cF90aW1lciBzaG91bGQgYmUgaW4gcmFuZ2UgMC00Mjk0OTY3Mjk0LgB0aHJlYWRfcG9vbF9tYXhfdW51c2VkX3RocmVhZHMgY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiAlZC4ARmFpbGVkIHRvIGluc3RhbnRpYXRlIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgb2JqZWN0LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQgcG9vbCBwbHVnaW4uAFRocmVhZCBwb29sIHBsdWdpbiBzdGFydGVkIHN1Y2Nlc3NmdWxseSB3aXRoIHBhcmFtZXRlcnM6IHRocmVhZF9wb29sX3NpemUgPSAlbHUsIHRocmVhZF9wb29sX2FsZ29yaXRobSA9ICVzLCB0aHJlYWRfcG9vbF9zdGFsbF9saW1pdCA9ICV1LCB0aHJlYWRfcG9vbF9wcmlvX2tpY2t1cF90aW1lciA9ICV1LCB0aHJlYWRfcG9vbF9tYXhfdW51c2VkX3RocmVhZHMgPSAldSwgdGhyZWFkX3Bvb2xfaGlnaF9wcmlvcml0eV9jb25uZWN0aW9uID0gJWQuAENhbid0IHNldHVwIGNvbm5lY3Rpb24gdGVhcmRvd24gdGhyZWFkLXNwZWNpZmljIGRhdGEuAENyZWF0aW9uIG9mIGNvbm5lY3QgaGFuZGxlciB0aHJlYWQgZmFpbGVkLgBGYWlsZWQgdG8gY3JlYXRlIHRoZCBhbmQgYXV0aGVudGljYXRlIGNvbm5lY3Rpb24uAEZhaWxlZCB0byBwcm9jZXNzIGNvbm5lY3Rpb24gZXZlbnQuAENhbid0IGNyZWF0ZSBwb29sIHRocmVhZCAoZXJyb3IgJWQsIGVycm5vOiAlZCkuACUuKnMuAHRwX2dyb3VwX2xvd19sZXZlbF9pbml0KCkgZmFpbGVkLgBSZWFybSBmYWlsZWQgZXZlbiBhZnRlciAzMCBzZWNvbmRzLCBjYW4ndCBjb250aW51ZSB3aXRob3V0IG5vdGlmeSBzb2NrZXQuACVzOiAlcyBidWZmZXIgaXMgdG9vIHNtYWxsAE1lY2FiIHYlcyBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgbG93ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGlzIHYlcy4ATWVjYWIgdiVzIGlzIG5vdCB2ZXJpZmllZCwgdGhlIGhpZ2hlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgaXMgdiVzLgBNZWNhYjogVHJ5aW5nIGNyZWF0ZU1vZGVsKCVzKS4ATWVjYWI6IGNyZWF0ZU1vZGVsKCkgZmFpbGVkOiAlcy4ATWVjYWI6IGNyZWF0ZVRhZ2dlcigpIGZhaWxlZDogJXMuAE1lY2FiOiBVbnN1cHBvcnRlZCBkaWN0aW9uYXJ5IGNoYXJzZXQgJXMuAE1lY2FiOiBMb2FkZWQgZGljdGlvbmFyeSBjaGFyc2V0IGlzICVzLgBNZWNhYjogcGFyc2UoKSBmYWlsZWQ6ICVzLgBNZWNhYjogcGFyc2UoKSBmYWlsZWQ6IG91dCBvZiBtZW1vcnkuAE1lY2FiOiBjcmVhdGVMYXR0aWNlKCkgZmFpbGVkOiAlcy4ALS0tPiAlcyBlbnRlci4APC0tLSAlcyBleGl0ICglZCkuADwtLS0gJXMgZXhpdCAoJXMpLgA8LS0tICVzIGV4aXQuAFNlbWktc3luYyByZXBsaWNhdGlvbiBpbml0aWFsaXplZCBmb3IgdHJhbnNhY3Rpb25zLgAlczogdHJhbnNhY3Rpb24gbm9kZSBhbGxvY2F0aW9uIGZhaWxlZCBmb3I6ICglcywgJWx1KS4AJXM6IGJpbmxvZyB3cml0ZSBvdXQtb2Ytb3JkZXIsIHRhaWwgKCVzLCAlbHUpLCBuZXcgbm9kZSAoJXMsICVsdSkuACVzOiBpbnNlcnQgKCVzLCAlbHUpIGluIGVudHJ5KCV1KS4AJXM6IHByb2JlICglcywgJWx1KSBpbiBlbnRyeSgldSkuACVzOiBjbGVhcmVkIGFsbCBub2Rlcy4AJXM6IGNsZWFyZWQgJWQgbm9kZXMgYmFjayB1bnRpbCBwb3MgKCVzLCAlbHUpLgBSZWFkIHNlbWktc3luYyByZXBseSBtYWdpYyBudW1iZXIgZXJyb3IuAFJlYWQgc2VtaS1zeW5jIHJlcGx5IGxlbmd0aCBlcnJvcjogcGFja2V0IGlzIHRvbyBzbWFsbC4AUmVhZCBzZW1pLXN5bmMgcmVwbHkgYmlubG9nIGZpbGUgbGVuZ3RoIHRvbyBsYXJnZS4AJXM6IEdvdCByZXBseSglcywgJWx1KSBmcm9tIHNlcnZlciAldS4AJXMgY2FsbGVkIHR3aWNlLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gZW5hYmxlZCBvbiB0aGUgc291cmNlLgBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IHRvIGVuYWJsZSBzZW1pLXN5bmMgb24gdGhlIHNvdXJjZS4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIGRpc2FibGVkIG9uIHRoZSBzb3VyY2UuAFNFTUlTWU5DOiBGb3JjZWQgc2h1dGRvd24uIFNvbWUgdXBkYXRlcyBtaWdodCBub3QgYmUgcmVwbGljYXRlZC4AJXM6IEdvdCByZXBseSBhdCAoJXMsICVsdSkuACVzOiBzaWduYWwgYWxsIHdhaXRpbmcgdGhyZWFkcy4AJXM6IHdhaXQgcG9zICglcywgJWx1KSwgcmVwbCglZCkuACVzOiBCaW5sb2cgcmVwbHkgaXMgYWhlYWQgKCVzLCAlbHUpLgAlczogbW92ZSBiYWNrIHdhaXQgcG9zaXRpb24gKCVzLCAlbHUpLgAlczogaW5pdCB3YWl0IHBvc2l0aW9uICglcywgJWx1KS4AJXM6IHdhaXQgJWx1IG1zIGZvciBiaW5sb2cgc2VudCAoJXMsICVsdSkuAFRpbWVvdXQgd2FpdGluZyBmb3IgcmVwbHkgb2YgYmlubG9nIChmaWxlOiAlcywgcG9zOiAlbHUpLCBzZW1pLXN5bmMgdXAgdG8gZmlsZSAlcywgcG9zaXRpb24gJWx1LgBBc3Nlc3NtZW50IG9mIHdhaXRpbmcgdGltZSBmb3IgY29tbWl0VHJ4IGZhaWxlZCBhdCB3YWl0IHBvc2l0aW9uICglcywgJWx1KS4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIHN3aXRjaGVkIE9GRi4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIHN3aXRjaGVkIE9OIGF0ICglcywgJWx1KS4ATm8gZW5vdWdoIHNwYWNlIGluIHRoZSBwYWNrZXQgZm9yIHNlbWktc3luYyBleHRyYSBoZWFkZXIsIHNlbWktc3luYyByZXBsaWNhdGlvbiBkaXNhYmxlZC4AJXM6IHNlcnZlciglZCksICglcywgJWx1KSBzeW5jKCVkKSwgcmVwbCglZCkuAFNlbWktc3luYyBmYWlsZWQgdG8gaW5zZXJ0IHRyYW54X25vZGUgZm9yIGJpbmxvZyBmaWxlOiAlcywgcG9zaXRpb246ICVsdS4AJXM6IFRyYW5zYWN0aW9uIHNraXBwZWQgYXQgKCVzLCAlbHUpLgBTZW1pLXN5bmMgc291cmNlIGZhaWxlZCBvbiBuZXRfZmx1c2goKSBiZWZvcmUgd2FpdGluZyBmb3IgcmVwbGljYSByZXBseS4AVGhlIHJlY2VpdmVkIGFjayBpcyBzbWFsbGVyIHRoYW4gbV9ncmVhdGVzdF9hY2suAEFkZCB0aGUgYWNrIGludG8gc2xvdCAldS4AVXBkYXRlIGFuIGV4c2l0aW5nIGFjayBpbiBzbG90ICV1LgBGYWlsZWQgdG8gc3RhcnQgc2VtaS1zeW5jIEFDSyByZWNlaXZlciB0aHJlYWQsICBjb3VsZCBub3QgY3JlYXRlIHRocmVhZChlcnJubzolZCkuAFN0YXJ0aW5nIGFjayByZWNlaXZlciB0aHJlYWQuAEZhaWxlZCB0byB3YWl0IG9uIHNlbWktc3luYyBkdW1wIHNvY2tldHMsIGVycm9yOiBlcnJubz0lZC4AU3RvcHBpbmcgYWNrIHJlY2VpdmVyIHRocmVhZC4ARmFpbGVkIHRvIHJlZ2lzdGVyIHJlcGxpY2EgdG8gc2VtaS1zeW5jIEFDSyByZWNlaXZlciB0aHJlYWQuAFN0YXJ0ICVzIGJpbmxvZ19kdW1wIHRvIHJlcGxpY2EgKHNlcnZlcl9pZDogJWQpLCBwb3MoJXMsICVsdSkuAFN0b3AgJXMgYmlubG9nX2R1bXAgdG8gcmVwbGljYSAoc2VydmVyX2lkOiAlZCkuAHVucmVnaXN0ZXJfdHJhbnNfb2JzZXJ2ZXIgZmFpbGVkLgB1bnJlZ2lzdGVyX2JpbmxvZ19zdG9yYWdlX29ic2VydmVyIGZhaWxlZC4AdW5yZWdpc3Rlcl9iaW5sb2dfdHJhbnNtaXRfb2JzZXJ2ZXIgZmFpbGVkLgB1bnJlZ2lzdGVyX3JlcGxpY2F0b3IgT0suAFNlbWlzeW5jIHJlcGxpY2Egc29ja2V0IGZkIGlzICV1LiBzZWxlY3QoKSBjYW5ub3QgaGFuZGxlIGlmIHRoZSBzb2NrZXQgZmQgaXMgYmlnZ2VyIHRoYW4gJXUgKEZEX1NFVFNJWkUpLgAlczogcmVwbHkgLSAlZC4ATWlzc2luZyBtYWdpYyBudW1iZXIgZm9yIHNlbWktc3luYyBwYWNrZXQsIHBhY2tldCBsZW46ICVsdS4AUmVwbGljYSBJL08gdGhyZWFkOiBTdGFydCAlcyByZXBsaWNhdGlvbiB0byBzb3VyY2UgJyVzQCVzOiVkJyBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlbHUuACVzOiByZXBseSAoJXMsICVsdSkuAFNlbWktc3luYyByZXBsaWNhIG5ldF9mbHVzaCgpIHJlcGx5IGZhaWxlZC4AU2VtaS1zeW5jIHJlcGxpY2Egc2VuZCByZXBseSBmYWlsZWQ6ICVzICglZCkuAEV4ZWN1dGlvbiBmYWlsZWQgb24gc291cmNlOiAlczsgZXJyb3IgJWQAU291cmNlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHNlbWktc3luYywgZmFsbGJhY2sgdG8gYXN5bmNocm9ub3VzIHJlcGxpY2F0aW9uAFNldCAncnBsX3NlbWlfc3luY19yZXBsaWNhPTEnIG9uIHNvdXJjZSBmYWlsZWQARmFpbGVkIHRvIHN0b3AgYWNrIHJlY2VpdmVyIHRocmVhZCBvbiBteV90aHJlYWRfam9pbiwgZXJybm8oJWQpLgBGYWlsZWQgdG8gcmVhZCB0aGUgZmlyZXdhbGwgdGFibGVzAEZhaWxlZCB0byByZWdpc3RlciBkeW5hbWljIHByaXZpbGVnZXMAU3RhdGVtZW50IHdhcyB0cnVuY2F0ZWQgYW5kIG5vdCByZWNvcmRlZDogJXMAU3RhdGVtZW50IHdpdGggbm8gdGV4dCB3YXMgbm90IHJlY29yZGVkAFNVU1BJQ0lPVVMgU1RBVEVNRU5UIGZyb20gJyVzJy4gUmVhc29uOiAlcyBTdGF0ZW1lbnQ6ICVzAEFDQ0VTUyBERU5JRUQgZm9yICclcycuIFJlYXNvbjogJXMgU3RhdGVtZW50OiAlcwBTa2lwcGVkIHVua25vd24gdXNlciBtb2RlICclcycAUmVsb2FkaW5nIGNhY2hlIGZyb20gZGlzawBGSVJFV0FMTCBSRVNFVCBmb3IgJyVzJwBDb3VudGVycyBhcmUgcmVzZXQgdG8gemVybwAlcwBBdWRpdCBMb2cgcGx1Z2luIHN1cHBvcnRzIGZpbHRlcmluZyBtb2RlLCB3aGljaCBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHlldC4gQXVkaXQgTG9nIHBsdWdpbiB3aWxsIHJ1biBpbiB0aGUgbGVnYWN5IG1vZGUsIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLgBQcmV2aW91c2x5IGV4Y2x1ZGUgbGlzdCBpcyB1c2VkLCBub3cgd2Ugc3RhcnQgdXNpbmcgaW5jbHVkZSBsaXN0LCBleGNsdWRlIGxpc3QgaXMgc2V0IHRvIE5VTEwuAENhbm5vdCBzZXQgYXVkaXRfbG9nX3BvbGljeSBzaW11bHRhbmVvdXNseSB3aXRoIGVpdGhlciBhdWRpdF9sb2dfY29ubmVjdGlvbl9wb2xpY3kgb3IgIGF1ZGl0X2xvZ19zdGF0ZW1lbnRfcG9saWN5LCBzZXR0aW5nIGF1ZGl0X2xvZ19jb25uZWN0aW9uX3BvbGljeSBhbmQgYXVkaXRfbG9nX3N0YXRlbWVudF9wb2xpY3kgYmFzZWQgb24gYXVkaXRfbG9nX3BvbGljeS4AQm90aCBpbmNsdWRlIGFuZCBleGNsdWRlIGxpc3RzIHByb3ZpZGVkLCBpbmNsdWRlIGxpc3QgaXMgcHJlZmVycmVkLCBleGNsdWRlIGxpc3QgaXMgc2V0IHRvIE5VTEwuAENvdWxkIG5vdCBhY2Nlc3MgJyVzJyBkaXJlY3RvcnkuAENvdWxkIG5vdCByZW5hbWUgZmlsZSBmcm9tICclcycgdG8gJyVzJy4ARmlsZSAnJXMnIHNob3VsZCBub3QgZXhpc3QuIEl0IG1heSBiZSBpbmNvbXBsZXRlLiBUaGUgc2VydmVyIGNyYXNoZWQuAENvdWxkIG5vdCByZW5hbWUgZmlsZSBmcm9tICclcycgdG8gJyVzJy4gUmVtb3ZlIHRoZSBmaWxlIG1hbnVhbGx5LgBJbmNvbXBsZXRlIGZpbGUgcmVuYW1lZCBmcm9tICclcycgdG8gJyVzJy4ARXJyb3Igd3JpdGluZyBmaWxlICclLS4yMDBzJyAoZXJybm86ICVkIC0gJXMpLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsZSBlbmNyeXB0aW9uLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsZSBjb21wcmVzc2lvbi4AQ291bGQgbm90IGNyZWF0ZSAnJXMnIGZpbGUgZm9yIGF1ZGl0IGxvZ2dpbmcuAEF1ZGl0IGxvZyBmaWxlICglcykgbXVzdCBiZSBtYW51YWxseSByZW5hbWVkIGJlZm9yZSBhdWRpdF9sb2dfZmx1c2ggaXMgc2V0IHRvIHRydWUuACVzAEVycm9yIHBhcnNpbmcgSlNPTiBldmVudC4gRXZlbnQgbm90IGFjY2Vzc2libGUuAEJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCBKU09OIGV2ZW50LiBOdW1iZXIgb2YgZXZlbnRzIHNraXBwZWQ6ICV6dS4AQ291bGQgbm90IG9wZW4gSlNPTiBmaWxlIGZvciByZWFkaW5nLiBSZWFkaW5nIG5leHQgZmlsZSBpZiBleGlzdHMuAEpTT04gZmlsZSBwYXJzaW5nIGVycm9yLiBSZWFkaW5nIG5leHQgZmlsZSBpZiBleGlzdHMASW52YWxpZCBjb2x1bW4gY291bnQgaW4gdGhlICclcy4lcycgdGFibGUuAEludmFsaWQgY29sdW1uIGRlZmluaXRpb24gb2YgdGhlICclcy4lcycgdGFibGUuAENvdWxkIG5vdCBzdG9yZSBmaWVsZCBvZiB0aGUgJXMgdGFibGUuAENvdWxkIG5vdCB1cGRhdGUgJXMgdGFibGUuAENvdWxkIG5vdCBpbnNlcnQgaW50byAlcyB0YWJsZS4AQ291bGQgbm90IGRlbGV0ZSBmcm9tICVzIHRhYmxlLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSAlcyB0YWJsZSBmb3IgcmVhZGluZy4AQ291bGQgbm90IHJlYWQgJXMgdGFibGUuAENvdWxkIG5vdCBjbG9zZSAlcyB0YWJsZSByZWFkaW5nLgBCb3RoIHVzZXIgYW5kIGhvc3QgY29sdW1ucyBvZiAlcyB0YWJsZSBjYW5ub3QgYmUgZW1wdHkuAEZpbHRlcm5hbWUgY29sdW1uIG9mICVzIHRhYmxlIGNhbm5vdCBiZSBlbXB0eS4ARGljdGlvbmFyeSBmaWxlIG5vdCBzcGVjaWZpZWQARGljdGlvbmFyeSBmaWxlIG5vdCBsb2FkZWQARGljdGlvbmFyeSBmaWxlIHNpemUgZXhjZWVkZWQgTUFYX0RJQ1RJT05BUllfRklMRV9MRU5HVEgsIG5vdCBsb2FkZWQARXhjZXB0aW9uIHdoaWxlIHJlYWRpbmcgdGhlIGRpY3Rpb25hcnkgZmlsZQBDYW4ndCByZXRyaWV2ZSB0aGUgJXMgZnJvbSB0aGUgc2VjdXJpdHkgY29udGV4dABDYW4ndCByZXRyaWV2ZSB0aGUgc2VjdXJpdHkgY29udGV4dABFZmZlY3RpdmUgdmFsdWUgb2YgdmFsaWRhdGVfcGFzc3dvcmRfbGVuZ3RoIGlzIGNoYW5nZWQuIE5ldyB2YWx1ZSBpcyAlZAAlcwBSZXdyaXR0ZW4gcXVlcnkgZmFpbGVkIHRvIHBhcnNlOiVzAFN0YXJ0dXAgZmFpbGVkIHdpdGggZXJyb3IgIiVzIgBFeGl0aW5nAEV4aXQgZG9uZQBVc2luZyBTU0wgY29uZmlndXJhdGlvbiBmcm9tIE15U1FMIFNlcnZlcgBVc2luZyBTU0wgY29uZmlndXJhdGlvbiBmcm9tIE15c3FseCBQbHVnaW4ATmVpdGhlciBNeVNRTCBTZXJ2ZXIgbm9yIE15c3FseCBQbHVnaW4gaGFzIHZhbGlkIFNTTCBjb25maWd1cmF0aW9uAFVzaW5nICVzIGZvciBUTFMgY29ubmVjdGlvbnMARm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIFVzaW5nIFNlY3VyZSBDb25uZWN0aW9ucyB3aXRoIFggUGx1Z2luIHNlY3Rpb24gaW4gdGhlIE15U1FMIGRvY3VtZW50YXRpb24AJXMARmFpbGVkIHRvIHBhcnNlIHN0b3JlZCBhdXRoZW50aWNhdGlvbiBzdHJpbmcgZm9yICVzLiBQbGVhc2UgY2hlY2sgaWYgbXlzcWwudXNlciB0YWJsZSBub3QgY29ycnVwdGVkAEVycm9yIGluIGdlbmVyYXRpbmcgbXVsdGktcm91bmQgaGFzaCBmb3IgJXMuIFBsdWdpbiBjYW4gbm90IHBlcmZvcm0gYXV0aGVudGljYXRpb24gd2l0aG91dCBpdC4gVGhpcyBtYXkgYmUgYSB0cmFuc2llbnQgcHJvYmxlbQBBdXRoZW50aWNhdGlvbiByZXF1aXJlcyBlaXRoZXIgUlNBIGtleXMgb3IgU1NMIGVuY3J5cHRpb24AUlNBIGtleSBjaXBoZXIgbGVuZ3RoIG9mICV1IGlzIHRvbyBsb25nLiBNYXggdmFsdWUgaXMgJXUARmFpbGVkIHRvIG9wZW4gdGhlICVzIGZpbHRlciB0YWJsZXMARmFpbGVkIHRvIG9wZW4gJyVzLiVzJyAlcyB0YWJsZQAlcwAlcwAlcwBQYXNzd29yZCBzYWx0IGZvciB1c2VyICclcycgaXMgY29ycnVwdABPdXQgb2YgbWVtb3J5IGZvciBjb21wb25lbnQgc3lzdGVtIHZhcmlhYmxlICclcycuAHZhcmlhYmxlICVzIG9mIGNvbXBvbmVudCAlcyB3YXMgZm9yY2VkIHRvIGJlIHJlYWQtb25seTogc3RyaW5nIHZhcmlhYmxlIHdpdGhvdXQgdXBkYXRlX2Z1bmMgYW5kIFBMVUdJTl9WQVJfTUVNQUxMT0MgZmxhZy4AVW5rbm93biB2YXJpYWJsZSB0eXBlIGNvZGUgMHgleCBpbiBjb21wb25lbnQgJyVzJy4AUGFyc2luZyBvcHRpb25zIGZvciB2YXJpYWJsZSAnJXMnIGZhaWxlZC4AU2V0dGluZyBwZXJzaXN0ZW50IG9wdGlvbnMgZm9yIGNvbXBvbmVudCB2YXJpYWJsZSAnJXMnIGZhaWxlZC4AVGhlIGxvZy1maWx0ZXIgY29tcG9uZW50ICIlcyIgZ290IGNvbmZ1c2VkIGF0ICIlcyIgKHN0YXRlOiAlcykgLi4uAFdhaXRpbmcgdW50aWwgSS9PIHRocmVhZCBmb3IgY2hhbm5lbCAnJXMnIGZpbmlzaCB3cml0aW5nIHRvIGRpc2sgYmVmb3JlIHN0b3BwaW5nLiBGcmVlIHNvbWUgZGlzayBzcGFjZSBvciB1c2UgJ0tJTEwnIHRvIGFib3J0IEkvTyB0aHJlYWQgb3BlcmF0aW9uLiBOb3RpY2UgdGhhdCBhYm9ydGluZyB0aGUgSS9PIHRocmVhZCB3aGlsZSByb3RhdGluZyB0aGUgcmVsYXkgbG9nIG1pZ2h0IGNvcnJ1cHQgdGhlIHJlbGF5IGxvZ3MsIHJlcXVpcmluZyBhIHNlcnZlciByZXN0YXJ0IHRvIGZpeCBpdC4AQ291bGQgbm90IHVzZSAlcyBmb3IgbG9nZ2luZyAoZXJyb3IgJWQgLSAlcykuIFR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgdGhlbiVzIHJlc3RhcnQgdGhlIE15U1FMIHNlcnZlci4AVW5hYmxlIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gZm9yIGNvbHVtbiAnJS0uMTkycyc6ICUtLjE5MnMuACd1dGY4JyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4ATkFUSU9OQUwvTkNIQVIvTlZBUkNIQVIgaW1wbGllcyB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIENIQVIoeCkgQ0hBUkFDVEVSIFNFVCBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBBIGNvbW1pdCBmb3IgYW4gYXRvbWljIERETCBzdGF0ZW1lbnQgd2FzIHVuc3VjY2Vzc2Z1bCBvbiB0aGUgc291cmNlIGFuZCB0aGUgcmVwbGljYS4gVGhlIHJlcGxpY2Egc3VwcG9ydHMgYXRvbWljIERETCBzdGF0ZW1lbnRzIGJ1dCB0aGUgc291cmNlIGRvZXMgbm90LCBzbyB0aGUgYWN0aW9uIHRha2VuIGJ5IHRoZSByZXBsaWNhIGFuZCBzb3VyY2UgbWlnaHQgZGlmZmVyLiBDaGVjayB0aGF0IHRoZWlyIHN0YXRlcyBoYXZlIG5vdCBkaXZlcmdlZCBiZWZvcmUgcHJvY2VlZGluZy4AQ29uZmlndXJpbmcgcGVyc2lzdGVkIG9wdGlvbnMgZmFpbGVkOiAiJXMiLgBUaGUgc3RvcmFnZSBlbmdpbmUgJyUtLjE5MnMnIGRvZXMgbm90IHByb3ZpZGUgZHluYW1pYyB0YWJsZSBzdGF0aXN0aWNzAFRoaXMgb3B0aW9uIGNhbm5vdCBiZSBzZXQgJXMuAFRoZSB0YWJsZSAnJS0uMTkycycgbWF5IG5vdCBiZSBjcmVhdGVkIGluIHRoZSByZXNlcnZlZCB0YWJsZXNwYWNlICclLS4xOTJzJy4AU1NMIGZpcHMgbW9kZSBlcnJvcjogJXMAaW5pdF9jb25uZWN0IHZhcmlhYmxlIGlzIGlnbm9yZWQgZm9yIHVzZXI6ICVzIGhvc3Q6ICVzIGR1ZSB0byBleHBpcmVkIHBhc3N3b3JkLgBzcWxfbW9kZT0weCUwOHggaXMgbm90IHN1cHBvcnRlZABPdXQgb2YgbWVtb3J5LgBXcm9uZyBjb2x1bW4gY291bnQgb3IgbmFtZXMgd2hlbiBsb2FkaW5nIHJ1bGVzLgBTb21lIHJ1bGVzIGZhaWxlZCB0byBsb2FkLgBHb3QgZXJyb3IgZnJvbSBzdG9yYWdlIGVuZ2luZSB3aGlsZSByZWZyZXNoaW5nIHJld3JpdGUgcnVsZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIENvbm5lY3Rpb25fZXZlbnRfY29vcmRpbmF0b3IARmFpbGVkIHRvIHVwZGF0ZSBjb25uZWN0aW9uIGRlbGF5IHRyaWdnZXJlZCBzdGF0cwBGYWlsZWQgdG8gcmVzZXQgY29ubmVjdGlvbiBkZWxheSB0cmlnZ2VyZWQgc3RhdHMAVW5leHBlY3RlZCBvcHRpb24gdHlwZSBmb3IgY29ubmVjdGlvbiBkZWxheS4ARmFpbGVkIHRvIGluaXRpYWxpemUgQ29ubmVjdGlvbl9kZWxheV9hY3Rpb24AQ291bGQgbm90IHNldCAlcyBkZWxheSBmb3IgY29ubmVjdGlvbiBkZWxheS4ARmFpbGVkIHRvIHVwZGF0ZSBjb25uZWN0aW9uIGRlbGF5IGhhc2ggZm9yIGFjY291bnQgOiAlcwAlczogRm9yY2Ugc3RvcHBpbmcgY2xpZW50IGJlY2F1c2UgZXhjZXB0aW9uIG9jY3VycmVkOiAlcwAlcy4ldTogTWF4aW11bSBudW1iZXIgb2YgYXV0aGVudGljYXRpb24gYXR0ZW1wdHMgcmVhY2hlZCwgbG9naW4gZmFpbGVkLgBFcnJvciBhbGxvY2F0aW5nIEJ1ZmZlcl9wYWdlOiAlcwBEZXRlY3RlZCAldSBoYW5naW5nIGNsaWVudChzKQBFcnJvciBhY2NlcHRpbmcgY2xpZW50AEludGVybmFsIGVycm9yIHNjaGVkdWxpbmcgY2xpZW50IGZvciBleGVjdXRpb24AUHJlcGFyYXRpb24gb2YgSS9PIGludGVyZmFjZXMgZmFpbGVkLCBYIFByb3RvY29sIHdvbid0IGJlIGFjY2Vzc2libGUAc3J2X3Nlc3Npb25faW5pdF90aHJlYWQgcmV0dXJuZWQgZXJyb3IAVW5hYmxlIHRvIHVzZSB1c2VyIG15c3FsLnNlc3Npb24gYWNjb3VudCB3aGVuIGNvbm5lY3RpbmcgdGhlIHNlcnZlciBmb3IgaW50ZXJuYWwgcGx1Z2luIHJlcXVlc3RzLgBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSB0aGUgWCBQbHVnaW4gVXNlciBBY2NvdW50IHNlY3Rpb24gaW4gdGhlIE15U1FMIGRvY3VtZW50YXRpb24AJXM6IFVuZXhwZWN0ZWQgZXhjZXB0aW9uIGRpc3BhdGNoaW5nIGNvbW1hbmQ6ICVzAEV4Y2VwdGlvbiBpbiBwb3N0OiAlcwBJbnRlcm5hbCBlcnJvciBzY2hlZHVsaW5nIHRhc2sARXhjZXB0aW9uIGluIGV2ZW50IGxvb3A6ICIlcyI6ICVzAFNldHVwIG9mICVzIGZhaWxlZCwgJXMAJXMARmFpbGVkIGF0IFNTTCBjb25maWd1cmF0aW9uOiAiJXMiAEVycm9yIGR1cmluZyBTU0wgaGFuZHNoYWtlIGZvciBjbGllbnQgY29ubmVjdGlvbiAoJWkpACVzOiBFcnJvciBkdXJpbmcgU1NMIGhhbmRzaGFrZQAlczogRXJyb3IgY3JlYXRpbmcgc2Vzc2lvbiBmb3IgY29ubmVjdGlvbiBmcm9tICVzACVzOiBFcnJvciBpbml0aWFsaXppbmcgc2Vzc2lvbiBmb3IgY29ubmVjdGlvbjogJXMAJXM6IE1lc3NhZ2Ugb2Ygc2l6ZSAldSByZWNlaXZlZCwgZXhjZWVkaW5nIHRoZSBsaW1pdCBvZiAlaQBNZXNzYWdlIGlzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZDogJXMAVW5hYmxlIHRvIHNldCBtaW5pbWFsIG51bWJlciBvZiB3b3JrZXJzIHRvICV1OyBhY3R1YWwgdmFsdWUgaXMgJWkAVW5hYmxlIHRvIGFjY2VwdCBjb25uZWN0aW9uLCBkaXNjb25uZWN0aW5nIGNsaWVudABBbGwgSS9PIGludGVyZmFjZXMgYXJlIGRpc2FibGVkLCBYIFByb3RvY29sIHdvbid0IGJlIGFjY2Vzc2libGUAJXM6IEludmFsaWQgbWVzc2FnZSAlaSByZWNlaXZlZCBkdXJpbmcgY2xpZW50IGluaXRpYWxpemF0aW9uACVzOiBjbG9zaW5nIGNsaWVudCBiZWNhdXNlIG9mIHNodXRkb3duIChzdGF0ZTogJWkpACVzOiBFcnJvciByZWFkaW5nIGZyb20gc29ja2V0ICVzICglaSkAJXM6IHBlZXIgZGlzY29ubmVjdGVkIHdoaWxlIHJlYWRpbmcgbWVzc2FnZSBib2R5AGNsaWVudF9pZDolcyAtICVzIHdoaWxlIHJlYWRpbmcgZnJvbSBzb2NrZXQsIGNsb3NpbmcgY29ubmVjdGlvbgAlcy4ldTogSW52YWxpZCBhdXRoZW50aWNhdGlvbiBtZXRob2QgJXMAJXM6IFVuZXhwZWN0ZWQgbWVzc2FnZSBvZiB0eXBlICVpIHJlY2VpdmVkIGR1cmluZyBhdXRoZW50aWNhdGlvbgBFcnJvciB3cml0aW5nIHRvIGNsaWVudDogJXMgKCVpKQBTY2hlZHVsZXIgIiVzIiBzdGFydGVkLgBTY2hlZHVsZXIgIiVzIiBzdG9wcGVkLgBQbGVhc2Ugc2VlIHRoZSBNeVNRTCBkb2N1bWVudGF0aW9uIGZvciAnJXMnIHN5c3RlbSB2YXJpYWJsZXMgdG8gZml4IHRoZSBlcnJvcgBYIFBsdWdpbiByZWFkeSBmb3IgY29ubmVjdGlvbnMuICVzAFJldHJ5aW5nIGBiaW5kKClgIG9uIFRDUC9JUCBwb3J0ICVpAFNodXRkb3duIHRyaWdnZXJlZCBieSBteXNxbGQgYWJvcnQgZmxhZwBVc2luZyAlcyBhY2NvdW50IGZvciBhdXRoZW50aWNhdGlvbiB3aGljaCBoYXMgYWxsIHJlcXVpcmVkIHBlcm1pc3Npb25zAFVzaW5nIGV4aXN0aW5nICVzIGFjY291bnQgZm9yIGF1dGhlbnRpY2F0aW9uLiBJbmNvbXBsZXRlIGdyYW50cyB3aWxsIGJlIGZpeGVkAFNlcnZlciBzdGFydHMgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMAU3RvcHBlZCBoYW5kbGluZyBpbmNvbWluZyBjb25uZWN0aW9ucwAlczogQ291bGQgbm90IGludGVycnVwdCBjbGllbnQgc2Vzc2lvbgAlczogcmVsZWFzZSB0cmlnZ2VyZWQgYnkgdGltZW91dCBpbiBzdGF0ZTolaQBJUHY2IGlzIGF2YWlsYWJsZQBVTklYIHNvY2tldCBub3QgY29uZmlndXJlZABLaWxsIGNsaWVudDogJWkgJXMAQ291bGQgbm90IGdldCBzZWN1cml0eSBjb250ZXh0IGZvciBzZXNzaW9uAFVuYWJsZSB0byBzd2l0Y2ggc2VjdXJpdHkgY29udGV4dCB0byByb290AEVycm9yIGNsb3NpbmcgU1FMIHNlc3Npb24ARXJyb3IgZXhlY3V0aW5nIGFkbWluIGNvbW1hbmQgJXM6ICVzAEVycm9yIGV4ZWN1dGluZyBlbXB0eSBhZG1pbiBjb21tYW5kAFVuYWJsZSB0byByZXRyaWV2ZSBzeXN0ZW0gdmFyaWFibGUgJyVzJwBVbmFibGUgdG8gZ2V0IGNyZWF0aW9uIHN0bXQgZm9yIGNvbGxlY3Rpb24gJyVzJzsgcXVlcnkgcmVzdWx0IHNpemU6ICVsdQBVbmFibGUgdG8gZ2V0IGVuZ2luZSBpbmZvIGZvciBjb2xsZWN0aW9uICclcyc7IGNyZWF0aW9uIHN0bXQ6ICVzAEVycm9yIGdldHRpbmcgcmVzdWx0IGRhdGE6ICVzAENhcGFiaWxpdHkgZXhwaXJlZCBwYXNzd29yZCBmYWlsZWQgd2l0aCBlcnJvcjogJXMARmFpbGVkIHRvIHNldCBTT19SRVVTRUFERFIgZmxhZyAoZXJyb3I6ICVkKS4AQ291bGQgbm90IG9wZW4gaW50ZXJuYWwgTXlTUUwgc2Vzc2lvbgBVbmFibGUgdG8gc3dpdGNoIGNvbnRleHQgdG8gdXNlciAlcwBDYW4ndCB1bnJlZ2lzdGVyICclcycgdXNlciBkZWZpbmVkIGZ1bmN0aW9uACVzOiBnZXQgcGVlciBhZGRyZXNzIGZhaWxlZCwgY2FuJ3QgcmVzb2x2ZSBJUCB0byBob3N0bmFtZQBDYXBhYmlsaXR5IGNsaWVudCBpbnRlcmFjdGl2ZSBmYWlsZWQgd2l0aCBlcnJvcjogJXMARmFpbGVkIHRvIHJlc2V0IElQVjZfVjZPTkxZIGZsYWcgKGVycm9yOiAlZCkuIFRoZSBzZXJ2ZXIgd2lsbCBsaXN0ZW4gdG8gSVB2NiBhZGRyZXNzZXMgb25seS4ASW52YWxpZCBrZXkgdHlwZQBJbnZhbGlkIGtleSBsZW5ndGggZm9yIGdpdmVuIGJsb2NrIGNpcGhlcgBDb3VsZCBub3QgY3JlYXRlIGtleXJpbmcgZGlyZWN0b3J5LiBUaGUga2V5cmluZ19maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0IHBhdGggdG8gdGhlIGtleXJpbmcgZGlyZWN0b3J5IGdldHMgcHJvdmlkZWQAa2V5cmluZ19maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZ19maWxlX2RhdGEgcG9pbnRzIHRvIHJlYWRhYmxlIGtleXJpbmcgZmlsZSBvciBrZXlyaW5nIGZpbGUgY2FuIGJlIGNyZWF0ZWQgaW4gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4gVGhlIGtleXJpbmdfZmlsZSB3aWxsIHN0YXkgdW51c2FibGUgdW50aWwgY29ycmVjdCBwYXRoIHRvIHRoZSBrZXlyaW5nIGZpbGUgZ2V0cyBwcm92aWRlZABrZXlyaW5nX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luLgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19maWxlIHBsdWdpbgBFcnJvciB3aGlsZSAlcyBrZXk6IGludmFsaWQga2V5X3R5cGUARXJyb3Igd2hpbGUgJXMga2V5OiBrZXlfaWQgY2Fubm90IGJlIGVtcHR5AEZhaWxlZCB0byAlcyBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSAlcyBwbHVnaW4ASW5jb3JyZWN0IEtleXJpbmcgZmlsZQBGb3VuZCBtYWxmb3JtZWQga2V5cmluZyBiYWNrdXAgZmlsZSAtIHJlbW92aW5nIGl0AEVycm9yIHdoaWxlIHJlc3RvcmluZyBrZXlyaW5nIGZyb20gYmFja3VwIGZpbGUgY2Fubm90IG92ZXJ3cml0ZSBrZXlyaW5nIHdpdGggYmFja3VwAEVycm9yIHdoaWxlIGZsdXNoaW5nIGluLW1lbW9yeSBrZXlyaW5nIGludG8ga2V5cmluZyBmaWxlAEVycm9yIHdoaWxlIHJlYWRpbmcgc3RhdCBmb3IgJXMuUGxlYXNlIGNoZWNrIGlmIGZpbGUgJXMgd2FzIG5vdCByZW1vdmVkLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmVtb3ZlIGZpbGUgJXMgT1MgcmV0dW5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgdHJ1bmNhdGUgZmlsZSAlcy4gT1MgcmV0dW5lZCB0aGlzIGVycm9yOiAlcwBVbmtub3duIGVycm9yICVkAGtleXJpbmdfZmlsZV9kYXRhIGNhbm5vdCBiZSBzZXQgdG8gbmV3IHZhbHVlIGFzIHRoZSBrZXlyaW5nIGZpbGUgY2Fubm90IGJlIGNyZWF0ZWQvYWNjZXNzZWQgaW4gdGhlIHByb3ZpZGVkIHBhdGgAJXMARXJyb3Igd2hpbGUgbG9hZGluZyBrZXlyaW5nIGNvbnRlbnQuIFRoZSBrZXlyaW5nIG1pZ2h0IGJlIG1hbGZvcm1lZABDb3VsZCBub3QgZmx1c2gga2V5cyB0byBrZXlyaW5nAENvdWxkIG5vdCBmbHVzaCBrZXlzIHRvIGtleXJpbmcncyBiYWNrdXAARXJyb3Igd2hpbGUgZmV0Y2hpbmcga2V5OiBrZXlfaWQgY2Fubm90IGJlIGVtcHR5AEVycm9yIHdoaWxlIHJlbW92aW5nIGtleToga2V5X2lkIGNhbm5vdCBiZSBlbXB0eQBGb3Iga2V5cmluZ19va3YgdG8gYmUgaW5pdGlhbGl6ZWQsIHBsZWFzZSBwb2ludCBrZXlyaW5nX29rdl9jb25mX2RpciB2YXJpYWJsZSB0byBhIGRpcmVjdG9yeSB3aXRoIE9yYWNsZSBLZXkgVmF1bHQgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzc2wgbWF0ZXJpYWxzAGtleXJpbmdfb2t2IGluaXRpYWxpemF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayB0aGF0IHRoZSBrZXlyaW5nX29rdl9jb25mX2RpciBwb2ludHMgdG8gYSByZWFkYWJsZSBkaXJlY3RvcnkgYW5kIHRoYXQgdGhlIGRpcmVjdG9yeSBjb250YWlucyBPcmFjbGUgS2V5IFZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgc3NsIG1hdGVyaWFscy4gUGxlYXNlIGFsc28gY2hlY2sgdGhhdCBPcmFjbGUgS2V5IFZhdWx0IGlzIHVwIGFuZCBydW5uaW5nLgBrZXlyaW5nX29rdiBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4ASW52YWxpZCBrZXkgdHlwZQBJbnZhbGlkIGtleSBsZW5ndGggZm9yIGdpdmVuIGJsb2NrIGNpcGhlcgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19va3YgcGx1Z2luAENvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciBzZXJ2ZXIgaW4gY29uZmlndXJhdGlvbiBmaWxlICVzAENvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciBzdGFuZGJ5IHNlcnZlciBpbiBjb25maWd1cmF0aW9uIGZpbGUgJXMAQ291bGQgbm90IHBhcnNlIHRoZSAlcyBmaWxlIHByb3ZpZGVkAENvdWxkIG5vdCBsb2FkIGtleXMnIHVpZHMgZnJvbSB0aGUgT0tWIHNlcnZlcgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBzc2wgbGF5ZXIAQ291bGQgbm90IGluaXRpYWxpemUgT0tWIGNsaWVudABDb3VsZCBub3QgY29ubmVjdCB0byB0aGUgT0tWIHNlcnZlcgBDb3VsZCBub3QgcmVtb3ZlIHRoZSBrZXkAQ291bGQgbm90IGFkZCBhdHRyaWJ1dGUsIGF0dHJpYnV0ZV9uYW1lPSVzIGF0dHJpYnV0ZSB2YWx1ZT0lcwBDb3VsZCBub3QgZ2VuZXJhdGUgdGhlIGtleS4AQ291bGQgbm90IHN0b3JlIHRoZSBrZXkuAENvdWxkIG5vdCBhY3RpdmF0ZSB0aGUga2V5LgBDb3VsZCBub3QgZmV0Y2ggZ2VuZXJhdGVkIGtleQBDb3VsZCBub3Qgc3RvcmUvZ2VuZXJhdGUgdGhlIGtleSAtIGZhaWxlZCB0byBzZXQga2V5IGF0dHJpYnV0ZSB4LWtleS1yZWFkeQBDb3VsZCBub3QgcmV0cmlldmUga2V5IHNpZ25hdHVyZSBmcm9tIGN1c3RvbSBhdHRyaWJ1dGVzAENvdWxkIG5vdCByZXRyaWV2ZSBrZXkgZnJvbSBPS1YARXJyb3IgbG9hZGluZyB0cnVzdCBzdG9yZQBFcnJvciBzZXR0aW5nIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlLgBFcnJvciBzZXR0aW5nIHRoZSBrZXkgZmlsZS4AUHJpdmF0ZSBrZXkgZG9lcyBub3QgbWF0Y2ggdGhlIGNlcnRpZmljYXRlIHB1YmxpYyBrZXkASW5jb3JyZWN0IEtleXJpbmcgZmlsZQBLZXlyaW5nX2VuY3J5cHRlZF9maWxlIGRlY3J5cHRpb24gZmFpbGVkLiBQbGVhc2UgdmVyaWZ5IC0ta2V5cmluZy1lbmNyeXB0ZWQtZmlsZS1wYXNzd29yZCBvcHRpb24gdmFsdWUuAEZvdW5kIG1hbGZvcm1lZCBrZXlyaW5nIGJhY2t1cCBmaWxlIC0gcmVtb3ZpbmcgaXQARXJyb3Igd2hpbGUgcmVzdG9yaW5nIGtleXJpbmcgZnJvbSBiYWNrdXAgZmlsZSBjYW5ub3Qgb3ZlcndyaXRlIGtleXJpbmcgd2l0aCBiYWNrdXAARXJyb3Igd2hpbGUgZmx1c2hpbmcgaW4tbWVtb3J5IGtleXJpbmcgaW50byBrZXlyaW5nIGZpbGUAS2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBlbmNyeXB0aW9uIGZhaWxlZC4gUGxlYXNlIHZlcmlmeSAtLWtleXJpbmctZW5jcnlwdGVkLWZpbGUtcGFzc3dvcmQgb3B0aW9uIHZhbHVlLgBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX2RhdGEgY2Fubm90IGJlIHNldCB0byBuZXcgdmFsdWUgYXMgdGhlIGtleXJpbmcgZmlsZSBjYW5ub3QgYmUgY3JlYXRlZC9hY2Nlc3NlZCBpbiB0aGUgcHJvdmlkZWQgcGF0aABDb3VsZCBub3QgY3JlYXRlIGtleXJpbmcgZGlyZWN0b3J5IFRoZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0IHBhdGggdG8gdGhlIGtleXJpbmcgZGlyZWN0b3J5IGdldHMgcHJvdmlkZWQAVGhlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfcGFzc3dvcmQgbXVzdCBiZSBzZXQgdG8gYSB2YWxpZCB2YWx1ZS4AVG9vIGxvbmcga2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9wYXNzd29yZCB2YWx1ZS4Aa2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlLiBQbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfZGF0YSBwb2ludHMgdG8gcmVhZGFibGUga2V5cmluZyBmaWxlIG9yIGtleXJpbmcgZmlsZSBjYW4gYmUgY3JlYXRlZCBpbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uIG9yIHBhc3N3b3JkIHRvIGRlY3J5cHQga2V5cmluZyBmaWxlIGlzIGNvcnJlY3QuAGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIHBsdWdpbgBrZXlyaW5nX2F3c19jbWtfaWQgY2Fubm90IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlIGFzIEFXUyBLTVMgc2VlbXMgdG8gbm90IHVuZGVyc3RhbmQgdGhlIGlkIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhhdCBDTUsgaWQgcHJvdmlkZWQgaXMgY29ycmVjdC4Aa2V5cmluZ19hd3NfcmVnaW9uIGNhbm5vdCBiZSBzZXQgdG8gdGhlIG5ldyB2YWx1ZSBhcyBBV1MgS01TIHNlZW1zIHRvIG5vdCB1bmRlcnN0YW5kIHRoZSByZWdpb24gcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGF0IHJlZ2lvbiBwcm92aWRlZCBpcyBjb3JyZWN0LgBDb3VsZCBub3Qgb3BlbiBrZXlyaW5nX2F3cyBjb25maWd1cmF0aW9uIGZpbGU6ICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmVhZCBBV1MgYWNjZXNzIGtleSBpZCBmcm9tIGtleXJpbmdfYXdzIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZWFkIEFXUyBhY2Nlc3Mga2V5IGZyb20ga2V5cmluZ19hd3MgY29uZmlndXJhdGlvbiBmaWxlOiAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAUGF0aCB0byBrZXlyaW5nIGF3cyBjb25maWd1cmF0aW9uIGZpbGUgY2Fubm90IGJlIGVtcHR5AFBhdGggdG8ga2V5cmluZ19hd3Mgc3RvcmFnZSBmaWxlIGNhbm5vdCBiZSBlbXB0eS4AVW5hYmxlIHRvIGNyZWF0ZS9hY2Nlc3Mga2V5cmluZyBkaXJlY3RvcnkuAFVuYWJsZSB0byBjcmVhdGUvYWNjZXNzIGtleXJpbmdfYXdzIHN0b3JhZ2UgZmlsZS4gUGxlYXNlIGNoZWNrIGlmIGtleXJpbmdfYXdzX2RhdGFfZmlsZSBwb2ludHMgdG8gbG9jYXRpb24gd2hlcmUga2V5cmluZyBmaWxlIGNhbiBiZSBjcmVhdGVkL2FjY2Vzc2VkLiBQbGVhc2UgYWxzbyBtYWtlIHN1cmUgdGhhdCBNeVNRTCBzZXJ2ZXIncyB1c2VyIGhhcyBoaWdoIGVub3VnaCBwcml2aWxlZ2VzIHRvIGFjY2VzcyB0aGlzIGxvY2F0aW9uLgBrZXlyaW5nX2F3cyBpbml0aWFsaXphdGlvbiBmYWlsZWQgZHVlIHRvIGludGVybmFsIGVycm9yIHdoZW4gaW5pdGlhbGl6aW5nIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgLSAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXM6AENvdWxkIG5vdCBhY2Nlc3Mga2V5cmluZ19hd3Mgc3RvcmFnZSBmaWxlIGluIHRoZSBwYXRoIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmdfYXdzIGRpcmVjdG9yeSBjYW4gYmUgYWNjZXNzZWQgYnkgTXlTUUwgU2VydmVyAGtleXJpbmdfYXdzX2Nta19pZCBoYXMgdG8gYmUgc2V0AENvdWxkIG5vdCBnZXQgQVdTIEtNUyBjcmVkZW50aWFscyBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGZpbGUAa2V5cmluZ19hd3MgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4Aa2V5cmluZ19hd3MgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luAEludmFsaWQga2V5IGxlbmd0aCBmb3IgZ2l2ZW4gYmxvY2sgY2lwaGVyAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX2ZpbGUgcGx1Z2luAEluY29ycmVjdCBLZXlyaW5nIGZpbGUARm91bmQgbWFsZm9ybWVkIGtleXJpbmcgYmFja3VwIGZpbGUgLSByZW1vdmluZyBpdABFcnJvciB3aGlsZSByZXN0b3Jpbmcga2V5cmluZyBmcm9tIGJhY2t1cCBmaWxlIGNhbm5vdCBvdmVyd3JpdGUga2V5cmluZyB3aXRoIGJhY2t1cABFcnJvciB3aGlsZSBmbHVzaGluZyBpbi1tZW1vcnkga2V5cmluZyBpbnRvIGtleXJpbmcgZmlsZQBXcm9uZyByZWdpb24AQ291bGQgbm90IGNvbm5lY3QgdG8gQVdTIEtNUyB3aXRoIHRoZSBjcmVkZW50aWFscyBwcm92aWRlZC4gUGxlYXNlIG1ha2Ugc3VyZSB0aGV5IGFyZSBjb3JyZWN0LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBhIG5ldyBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IGVuY3J5cHQga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZS1lbmNyeXB0IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgZGVjcnlwdCBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJvdGF0ZSB0aGUgQ01LLiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAFRoZSByZXF1ZXN0ZWQgR1RJRCAnJXM6JWxsZCcgd2FzIGFscmVhZHkgdXNlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2suAFRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZCB3YXMga2lsbGVkLgBFcnJvciBhdCBldmVudCBoYW5kbGluZyEgR290IGVycm9yOiAlZC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIGdyb3VwIEdUSUQgZXhlY3V0aW9uIGluZm9ybWF0aW9uLCBzb21lIHJlY292ZXJ5IG9wZXJhdGlvbnMgbWF5IGZhY2UgZnV0dXJlIGlzc3Vlcy4AQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiB0cnlpbmcgdG8gcmVkdWNlIHRoZSBDZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uIHNpemUgZm9yIHRyYW5zbWlzc2lvbi4ARmFpbGVkIHRvIGNyZWF0ZSBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBhcHBsaWVyIGNhY2hlIQBVbmJsb2NraW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiB0aHJlYWQgd2FpdGluZyBmb3IgYXBwbGllciB0byBzdGFydCwgYXMgdGhlIHN0YXJ0IGdyb3VwIHJlcGxpY2F0aW9uIHdhcyBraWxsZWQuAFRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHBpcGVsaW5lIHdhcyBub3QgcHJvcGVybHkgZGlzcG9zZWQuIENoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGZ1cnRoZXIgaW5mby4AVGhlIGFwcGxpZXIgdGhyZWFkIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4gVW5hYmxlIHRvIHByb2Nlc3MgbW9yZSB0cmFuc2FjdGlvbnMsIHRoaXMgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4ARmF0YWwgZXJyb3IgZHVyaW5nIGV4ZWN1dGlvbiBvbiB0aGUgQXBwbGllciBwcm9jZXNzIG9mIEdyb3VwIFJlcGxpY2F0aW9uLiBUaGUgc2VydmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuICVzAEVycm9yIHNlbmRpbmcgc2luZ2xlIHByaW1hcnkgbWVzc2FnZSBpbmZvcm1pbmcgdGhhdCBwcmltYXJ5IGRpZCBhcHBseSByZWxheSBsb2dzLgBFcnJvciB1cGRhdGluZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCB2ZXJzaW9uIGFmdGVyIHRyYW5zYWN0aW9uIGJlaW5nIHBvc2l0aXZlbHkgY2VydGlmaWVkLgBFcnJvciBmZXRjaGluZyB0cmFuc2FjdGlvbiBzaWRubyBhZnRlciB0cmFuc2FjdGlvbiBiZWluZyBwb3NpdGl2ZWx5IGNlcnRpZmllZC4AQnJvYWRjYXN0IG9mIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgbWVzc2FnZSBmYWlsZWQuAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gYWRkIHRoZSBncm91cF9zaWQgaW4gdGhlIGdyb3VwX2d0aWRfc2lkX21hcCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB1cGRhdGluZyBncm91cF9ndGlkX2V4ZWN1dGVkIEdJVEQgc2V0IGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBoYW5kbGUgdGhlIGRvbm9yJ3MgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gd2hlbiBpbml0aWFsaXppbmcgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBjb21wb25lbnQuIFBvc3NpYmxlIG91dCBvZiBtZW1vcnkgZXJyb3IuAEVycm9yIHdoZW4gZXN0YWJsaXNoaW5nIGEgc2VydmVyIGNvbm5lY3Rpb24gZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIEdUSUQgZXhlY3V0ZWQgc2V0LiBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBjYW4ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4ARXJyb3Igd2hpbGUgYWRkaW5nIHRoZSBzZXJ2ZXIgR1RJRCBFWEVDVVRFRCBzZXQgdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZSBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgcmV0cmlldmVkIHNldCBmb3IgaXRzIGFwcGxpZXIuIENlcnRpZmljYXRpb24gbW9kdWxlIGNhbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLgBFcnJvciB3aGlsZSBhZGRpbmcgdGhlIG1lbWJlciByZXRyaWV2ZWQgc2V0IHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIGR1cmluZyBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIHVwZGF0ZSBsYXN0IGNvbmZsaWN0IGZyZWUgdHJhbnNhY3Rpb24sIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBub3QgYmUgdHJhY2tlZCBvbiBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX3N0YXRzLmxhc3RfY29uZmxpY3RfZnJlZV90cmFuc2FjdGlvbi4ARXJyb3IgdXBkYXRpbmcgdHJhbnNhY3Rpb24gc25hcHNob3QgdmVyc2lvbiByZWZlcmVuY2UgZm9yIGludGVybmFsIHN0b3JhZ2UuAEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uIHNpZG5vIHdoaWxlIGFkZGluZyB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQuAEVycm9yIHdoaWxlIGVuc3VyaW5nIHRoZSBzaWRubyBiZSBwcmVzZW50IGluIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkLgBJbXBvc3NpYmxlIHRvIGdlbmVyYXRlIEdsb2JhbCBUcmFuc2FjdGlvbiBJZGVudGlmaWVyOiB0aGUgaW50ZWdlciBjb21wb25lbnQgcmVhY2hlZCB0aGUgbWF4aW1hbCB2YWx1ZS4gUmVzdGFydCB0aGUgZ3JvdXAgd2l0aCBhIG5ldyBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBJbnZhbGlkIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciB1cGRhdGluZyBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4AVGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gZmlsbGluZyB0aGUgbWlzc2luZyBHVElEcyBvbiB0aGUgYXBwbGllciBjaGFubmVsIHJlY2VpdmVkIHNldC4gRGVzcGl0ZSBub3QgY3JpdGljYWwsIG9uIHRoZSBsb25nIHJ1biB0aGlzIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZXMuAFNraXBwaW5nIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgVHJhbnNhY3Rpb25zX2NvbW1pdHRlZF9hbGxfbWVtYmVycyBmaWVsZCBhcyBhbiBvbGRlciBpbnN0YW5jZSBvZiB0aGlzIGNvbXB1dGF0aW9uIGlzIHN0aWxsIG9uZ29pbmcuAE51bGwgcGFja2V0IG9uIGNlcnRpZmllcidzIHF1ZXVlLgBFcnJvciByZWFkaW5nIEdUSURzIGZyb20gdGhlIG1lc3NhZ2UuAEVycm9yIHByb2Nlc3Npbmcgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHByb2Nlc3NpbmcgaW50ZXJzZWN0aW9uIG9mIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciBzZXR0aW5nIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciByZWFkaW5nIGdyb3VwX2d0aWRfZXh0cmFjdGVkIGZyb20gdGhlIFZpZXdfY2hhbmdlX2xvZ19ldmVudC4ARXJyb3IgcmVhZGluZyB0aGUgd3JpdGUgc2V0IGl0ZW0gJyVzJyBmcm9tIHRoZSBWaWV3X2NoYW5nZV9sb2dfZXZlbnQuAEVycm9yIGR1cmluZyBjZXJ0aWZpY2F0aW9uX2luZm8gaW5pdGlhbGl6YXRpb24uAFByaW1hcnkgaGFkIGFwcGxpZWQgYWxsIHJlbGF5IGxvZ3MsIGRpc2FibGVkIGNvbmZsaWN0IGRldGVjdGlvbi4ATWVzc2FnZSByZWNlaXZlZCB3aGlsZSB0aGUgcGx1Z2luIGlzIG5vdCByZWFkeSwgbWVzc2FnZSBkaXNjYXJkZWQuAE1lc3NhZ2UgcmVjZWl2ZWQgd2l0aG91dCBhIHByb3BlciBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyLgBFcnJvciBwcm9jZXNzaW5nIG1lc3NhZ2UgaW4gQ2VydGlmaWVyLgBUaGlzIHNlcnZlciB3YXMgbm90IGRlY2xhcmVkIG9ubGluZSBzaW5jZSBpdCBpcyBvbiBzdGF0dXMgJXMuAFRoaXMgc2VydmVyIHdhcyBkZWNsYXJlZCBvbmxpbmUgd2l0aGluIHRoZSByZXBsaWNhdGlvbiBncm91cC4AV2hlbiBkZWNsYXJpbmcgdGhlIHBsdWdpbiBvbmxpbmUgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSBzZXJ2ZXIgcmVhZCBtb2RlIHNldHRpbmdzLiBUcnkgdG8gZGlzYWJsZSBpdCBtYW51YWxseS4AVGhlIG1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgd2FzIGRlY2xhcmVkIG9ubGluZSB3aXRoaW4gdGhlIHJlcGxpY2F0aW9uIGdyb3VwLgBNZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IGhhcyBiZWNvbWUgdW5yZWFjaGFibGUuAE1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgaXMgcmVhY2hhYmxlIGFnYWluLgBUaGlzIHNlcnZlciBpcyBub3QgYWJsZSB0byByZWFjaCBhIG1ham9yaXR5IG9mIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBUaGlzIHNlcnZlciB3aWxsIG5vdyBibG9jayBhbGwgdXBkYXRlcy4gVGhlIHNlcnZlciB3aWxsIHJlbWFpbiBibG9ja2VkIHVudGlsIGNvbnRhY3Qgd2l0aCB0aGUgbWFqb3JpdHkgaXMgcmVzdG9yZWQuIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAuAFRoaXMgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHJlYWNoIGEgbWFqb3JpdHkgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFRoaXMgc2VydmVyIHdpbGwgbm93IGJsb2NrIGFsbCB1cGRhdGVzLiBUaGUgc2VydmVyIHdpbGwgcmVtYWluIGJsb2NrZWQgZm9yIHRoZSBuZXh0ICVsdSBzZWNvbmRzLiBVbmxlc3MgY29udGFjdCB3aXRoIHRoZSBtYWpvcml0eSBpcyByZXN0b3JlZCwgYWZ0ZXIgdGhpcyB0aW1lIHRoZSBtZW1iZXIgd2lsbCBlcnJvciBvdXQgYW5kIGxlYXZlIHRoZSBncm91cC4gSXQgaXMgcG9zc2libGUgdG8gdXNlIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdG8gZm9yY2UgYSBuZXcgZ3JvdXAgbWVtYmVyc2hpcC4AQSBncm91cCBtZW1iZXJzaGlwIGNoYW5nZSB3YXMgcmVjZWl2ZWQgYnV0IHRoZSBwbHVnaW4gaXMgYWxyZWFkeSBsZWF2aW5nIGR1ZSB0byB0aGUgY29uZmlndXJlZCB0aW1lb3V0IG9uIGdyb3VwX3JlcGxpY2F0aW9uX3VucmVhY2hhYmxlX21ham9yaXR5X3RpbWVvdXQgb3B0aW9uLgBUaGUgbWVtYmVyIGhhcyByZXN1bWVkIGNvbnRhY3Qgd2l0aCBhIG1ham9yaXR5IG9mIHRoZSBtZW1iZXJzIGluIHRoZSBncm91cC4gUmVndWxhciBvcGVyYXRpb24gaXMgcmVzdG9yZWQgYW5kIHRyYW5zYWN0aW9ucyBhcmUgdW5ibG9ja2VkLgBNZW1iZXJzIHJlbW92ZWQgZnJvbSB0aGUgZ3JvdXA6ICVzAFByaW1hcnkgc2VydmVyIHdpdGggYWRkcmVzcyAlcyBsZWZ0IHRoZSBncm91cC4gRWxlY3RpbmcgbmV3IFByaW1hcnkuAE1lbWJlcnMgam9pbmVkIHRoZSBncm91cDogJXMAVGhlcmUgd2FzIGEgcHJldmlvdXMgcGx1Z2luIGVycm9yIHdoaWxlIHRoZSBtZW1iZXIgam9pbmVkIHRoZSBncm91cC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AR3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2VkIHRvICVzIG9uIHZpZXcgJXMuAEdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlZDogVGhpcyBtZW1iZXIgaGFzIGxlZnQgdGhlIGdyb3VwLgBNZW1iZXIgd2FzIGV4cGVsbGVkIGZyb20gdGhlIGdyb3VwIGR1ZSB0byBuZXR3b3JrIGZhaWx1cmVzLCBjaGFuZ2luZyBtZW1iZXIgc3RhdHVzIHRvIEVSUk9SLgBVbmFibGUgdG8gb3BlbiBzZXNzaW9uIHRvIChyZSlzZXQgcmVhZCBvbmx5IG1vZGUuIFNraXBwaW5nLgBBIG5ldyBwcmltYXJ5IHdpdGggYWRkcmVzcyAlczoldSB3YXMgZWxlY3RlZC4gJXMAVW5hYmxlIHRvIGRpc2FibGUgc3VwZXIgcmVhZCBvbmx5IGZsYWcuIFRyeSB0byBkaXNhYmxlIGl0IG1hbnVhbGx5AFVuYWJsZSB0byBzZXQgc3VwZXIgcmVhZCBvbmx5IGZsYWcuIFRyeSB0byBzZXQgaXQgbWFudWFsbHkuAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgcHJpbWFyeSBtZW1iZXIuAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgc2Vjb25kYXJ5IG1lbWJlciB3aXRoIHByaW1hcnkgbWVtYmVyIGFkZHJlc3MgJXM6JXUuAFVuYWJsZSB0byBzZXQgYW55IG1lbWJlciBhcyBwcmltYXJ5LiBObyBzdWl0YWJsZSBjYW5kaWRhdGUuAEVycm9yIHdoZW4gYWN0aXZhdGluZyBzdXBlcl9yZWFkX29ubHkgbW9kZSBvbiBzdGFydC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AR3JvdXAgY29udGFpbnMgJWx1IG1lbWJlcnMgd2hpY2ggaXMgZ3JlYXRlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudCB2YWx1ZSBvZiAlbHUuIFRoaXMgY2FuIGxlYWQgdG8gYSBoaWdoZXIgdHJhbnNhY3Rpb25hbCBhYm9ydCByYXRlLgBNZW1iZXIgd2l0aCBhZGRyZXNzICclczoldScgZGlkbid0IHByb3ZpZGUgYW55IGRhdGEgZHVyaW5nIHRoZSBsYXN0IGdyb3VwIGNoYW5nZS4gR3JvdXAgaW5mb3JtYXRpb24gY2FuIGJlIG91dGRhdGVkIGFuZCBsZWFkIHRvIGVycm9ycyBvbiByZWNvdmVyeS4AVGhlcmUgaXMgYWxyZWFkeSBhIG1lbWJlciB3aXRoIHNlcnZlcl91dWlkICVzLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZm9yIGdyb3VwIGNoYW5nZS4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIEdUSUQgZXhlY3V0ZWQgc2V0LiBPcGVyYXRpb25zIGFuZCBjaGVja3MgbWFkZSB0byBncm91cCBqb2luZXJzIG1heSBiZSBpbmNvbXBsZXRlLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgcmV0cmlldmVkIHNldCBmb3IgaXRzIGFwcGxpZXIuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgZ3JvdXAgYWxyZWFkeSBoYXMgOSBtZW1iZXJzLgBNZW1iZXIgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgY29udGFpbnMgdHJhbnNhY3Rpb25zIG5vdCBwcmVzZW50IGluIHRoZSBncm91cC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBhc3Nlc3MgaWYgdGhlIG1lbWJlciBoYXMgbW9yZSB0cmFuc2FjdGlvbnMgdGhhbiB0aGUgZ3JvdXAuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAE1lbWJlciB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gc29tZSBncm91cCBtZW1iZXIsIGJ1dCBzaW5jZSBvcHRpb24gJ2dyb3VwX3JlcGxpY2F0aW9uX2FsbG93X2xvY2FsX2xvd2VyX3ZlcnNpb25fam9pbiBpcyBlbmFibGVkLCBtZW1iZXIgd2lsbCBiZSBhbGxvd2VkIHRvIGpvaW4uAEVycm9yIHByb2Nlc3NpbmcgbG9jYWwgR1RJRCBzZXRzIHdoZW4gY29tcGFyaW5nIHRoaXMgbWVtYmVyIHRyYW5zYWN0aW9ucyBhZ2FpbnN0IHRoZSBncm91cC4AVGhpcyBtZW1iZXIgaGFzIG1vcmUgZXhlY3V0ZWQgdHJhbnNhY3Rpb25zIHRoYW4gdGhvc2UgcHJlc2VudCBpbiB0aGUgZ3JvdXAuIExvY2FsIHRyYW5zYWN0aW9uczogJXMgPiBHcm91cCB0cmFuc2FjdGlvbnM6ICVzAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fZ3RpZF9hc3NpZ25tZW50X2Jsb2NrX3NpemUgb3B0aW9uIHZhbHVlICclbGx1JyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVsbHUnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIHRyYW5zYWN0aW9uLXdyaXRlLXNldC1leHRyYWN0aW9uIG9wdGlvbiB2YWx1ZSAnJXMnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJXMnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGNvbmZpZ3VyYXRpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAgY29uZmlndXJhdGlvbi4gVmFyaWFibGVzIHN1Y2ggYXMgZ3JvdXBfcmVwbGljYXRpb25fc2luZ2xlX3ByaW1hcnlfbW9kZSBvciBncm91cF9yZXBsaWNhdGlvbl9lbmZvcmNlX3VwZGF0ZV9ldmVyeXdoZXJlX2NoZWNrcyBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUgb24gZXZlcnkgc2VydmVyIGluIHRoZSBncm91cC4gKG1lbWJlciBjb25maWd1cmF0aW9uIG9wdGlvbjogWyVzXSwgZ3JvdXAgY29uZmlndXJhdGlvbiBvcHRpb246IFslc10pLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gJXMARGV0ZWN0ZWQgcHJldmlvdXMgUkVTRVQgU09VUkNFIGludm9jYXRpb24gb3IgYW4gaXNzdWUgZXhpc3RzIGluIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHJlbGF5IGxvZy4gUHVyZ2luZyBleGlzdGluZyBhcHBsaWVyIGxvZ3MuAFVua25vd24gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmVzZXR0aW5nIGFwcGxpZXIncyBtb2R1bGUgbG9ncy4ARmFpbGVkIHRvIHNldHVwIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZC4ARXJyb3Igd2hpbGUgc3RhcnRpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkAEZhaWxlZCB0byBzdG9wIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZC4ARmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9uIGRhdGEgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBhcHBsaWVyAENhbid0IHN0YXJ0IHJlcGxpY2EgSU8gVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIGFuZCB0aGUgcHJpbWFyeSBtZW1iZXIgaXMgbm90IGtub3duLgBDYW4ndCBzdGFydCByZXBsaWNhIElPIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBvbiBhIHNlY29uZGFyeSBtZW1iZXIuAENhbid0IHN0YXJ0IHJlcGxpY2EgU1FMIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBhbmQgdGhlIHByaW1hcnkgbWVtYmVyIGlzIG5vdCBrbm93bi4AQ2FuJ3Qgc3RhcnQgcmVwbGljYSBTUUwgVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIG9uIGEgc2Vjb25kYXJ5IG1lbWJlci4AVGFibGUgJXMgZG9lcyBub3QgdXNlIHRoZSBJbm5vREIgc3RvcmFnZSBlbmdpbmUuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AVGFibGUgJXMgZG9lcyBub3QgaGF2ZSBhbnkgUFJJTUFSWSBLRVkuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AVGFibGUgJXMgaGFzIGEgZm9yZWlnbiBrZXkgd2l0aCAnQ0FTQ0FERScsICdTRVQgTlVMTCcgb3IgJ1NFVCBERUZBVUxUJyBjbGF1c2UuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50IGlzIHJlc2V0IHRvICVsdQBhdXRvX2luY3JlbWVudF9vZmZzZXQgaXMgcmVzZXQgdG8gJWx1AGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudCBpcyBzZXQgdG8gJWx1AGF1dG9faW5jcmVtZW50X29mZnNldCBpcyBzZXQgdG8gJWx1AEZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbiBjb250ZXh0IGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBGYWlsZWQgdG8gZmV0Y2ggRm9ybWF0X2Rlc2NyaXB0aW9uX2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHNlcnZlciBpbmZvIGZvciBhcHBsaWVyAEZhaWxlZCB0byBmZXRjaCBUcmFuc2FjdGlvbl9jb250ZXh0X2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGNlcnRpZmljYXRpb24ARmFpbGVkIHRvIHJlYWQgc25hcHNob3QgdmVyc2lvbiBmcm9tIHRyYW5zYWN0aW9uIGNvbnRleHQgZXZlbnQgcmVxdWlyZWQgZm9yIGNlcnRpZmljYXRpb24ARmFpbGVkIHRvIGZldGNoIEd0aWRfbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBVbmFibGUgdG8gdXBkYXRlIGNlcnRpZmljYXRpb24gcmVzdWx0IG9uIHNlcnZlciBzaWRlLCB0aHJlYWRfaWQ6ICVsdQBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIGxvY2FsIHRyYW5zYWN0aW9ucwBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gbm8gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIGxvY2FsIHRyYW5zYWN0aW9ucwBGYWlsZWQgdG8gbm90aWZ5IGNlcnRpZmljYXRpb24gb3V0Y29tZQBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIHJlbW90ZSB0cmFuc2FjdGlvbnMAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIGd0aWQgd2FzIG5vdCBwcm92aWRlZCBmb3IgcmVtb3RlIHRyYW5zYWN0aW9ucwBGYWlsZWQgdG8gZmV0Y2ggVmlld19jaGFuZ2VfbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBFcnJvciB3aGVuIGNvbnRhY3RpbmcgdGhlIHNlcnZlciB0byBlbnN1cmUgdGhlIHByb3BlciBsb2dnaW5nIG9mIGEgZ3JvdXAgY2hhbmdlIGluIHRoZSBiaW5sb2cAVGltZW91dCB3aGVuIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gZXhlY3V0ZSBsb2NhbCB0cmFuc2FjdGlvbnMgaW4gb3JkZXIgYXNzdXJlIHRoZSBncm91cCBjaGFuZ2UgcHJvcGVyIGxvZ2dpbmcARmFpbGVkIHRvIGZldGNoIExvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHNlcnZlciBpbmZvIGZvciBhcHBsaWVyAFVuYWJsZSB0byBzdGFydCBHcm91cCBSZXBsaWNhdGlvbi4gUmVwbGljYXRpb24gYXBwbGllciBpbmZyYXN0cnVjdHVyZSBpcyBub3QgaW5pdGlhbGl6ZWQgc2luY2UgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIC0taW5pdGlhbGl6ZSwgLS1pbml0aWFsaXplLWluc2VjdXJlIG9yIC0tdXBncmFkZT1NSU5JTUFMIG9uIGEgc2VydmVyIHVwZ3JhZGUuAEZhaWxlZCB0byBlc3RhYmxpc2ggYW4gaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24gdG8gZXhlY3V0ZSBwbHVnaW4gb3BlcmF0aW9ucwBTZXR0aW5nIHN1cGVyX3JlYWRfb25seT1PTi4AU2V0dGluZyBzdXBlcl9yZWFkX29ubHk9T0ZGLgBraWxsZWQgc2Vzc2lvbiBpZDogJWQgc3RhdHVzOiAlZABraWxsZWQgZmFpbGVkIGlkOiAlZCBmYWlsZWQ6ICVkAEludGVybmFsIHF1ZXJ5OiAlcyByZXN1bHQgaW4gZXJyb3IuIEVycm9yIG51bWJlcjogJWxkAEVycm9yIGNvcHlpbmcgZnJvbSBlbXB0eSBzdHJpbmcgAFF1ZXJ5IGV4ZWN1dGlvbiByZXN1bHRlZCBpbiBmYWlsdXJlLiBlcnJubzogJWQAVW5hYmxlIHRvIGNyZWF0ZSBhIHNlc3Npb24gZm9yIGV4ZWN1dGluZyB0aGUgcXVlcmllcyBvbiB0aGUgc2VydmVyAFRoZSBtZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IGhhcyB1bmV4cGVjdGVkbHkgZGlzYXBwZWFyZWQsIGtpbGxpbmcgdGhlIGN1cnJlbnQgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgY29ubmVjdGlvbgBNYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIHdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgdG8gYSBkb25vciByZWFjaGVkLiBBYm9ydGluZyBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeS4AQWxsIGRvbm9ycyBsZWZ0LiBBYm9ydGluZyBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeS4ARXN0YWJsaXNoaW5nIGdyb3VwIHJlY292ZXJ5IGNvbm5lY3Rpb24gd2l0aCBhIHBvc3NpYmxlIGRvbm9yLiBBdHRlbXB0ICVkLyVkAFJldHJ5aW5nIGdyb3VwIHJlY292ZXJ5IGNvbm5lY3Rpb24gd2l0aCBhbm90aGVyIGRvbm9yLiBBdHRlbXB0ICVkLyVkAE5vIHZhbGlkIGRvbm9ycyBleGlzdCBpbiB0aGUgZ3JvdXAsIHJldHJ5aW5nAEVycm9yIHdoZW4gY29uZmlndXJpbmcgdGhlIGFzeW5jaHJvbm91cyByZWNvdmVyeSBjaGFubmVsIGNvbm5lY3Rpb24gdG8gdGhlIGRvbm9yLgBFc3RhYmxpc2hpbmcgY29ubmVjdGlvbiB0byBhIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGRvbm9yICVzIGF0ICVzIHBvcnQ6ICVkLgBFcnJvciB3aGlsZSBjcmVhdGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgY2hhbm5lbCB3aXRoIGRvbm9yICVzIGF0ICVzIHBvcnQ6ICVkLgBUaGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBkb25vciBzZXJ2ZXIuIFBsZWFzZSBjaGVjayB0aGF0IGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5IGNoYW5uZWwgY3JlZGVudGlhbHMgYW5kIGFsbCBNRU1CRVJfSE9TVCBjb2x1bW4gdmFsdWVzIG9mIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJzIHRhYmxlIGFyZSBjb3JyZWN0IGFuZCBETlMgcmVzb2x2YWJsZS4ARm9yIGRldGFpbHMgcGxlYXNlIGNoZWNrIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9jb25uZWN0aW9uX3N0YXR1cyB0YWJsZSBhbmQgZXJyb3IgbG9nIG1lc3NhZ2VzIG9mIFJlcGxpY2EgSS9PIGZvciBjaGFubmVsIGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5LgBFcnJvciB3aGlsZSBzdGFydGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkgcmVjZWl2ZXIvYXBwbGllciB0aHJlYWRzAFRlcm1pbmF0aW5nIGV4aXN0aW5nIGdyb3VwIHJlcGxpY2F0aW9uIGRvbm9yIGNvbm5lY3Rpb24gYW5kIHB1cmdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbG9ncy4ARXJyb3Igd2hlbiBzdG9wcGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkncyBkb25vciBjb25uZWN0aW9uAEVycm9yIHdoZW4gcHVyZ2luZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkncyByZWxheSBsb2dzAFVuYWJsZSB0byBraWxsIHRoZSBjdXJyZW50IGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGRvbm9yIGNvbm5lY3Rpb24gYWZ0ZXIgYW4gYXBwbGllciBlcnJvci4gSW5jcmVtZW50YWwgcmVjb3Zlcnkgd2lsbCBzaHV0ZG93bi4AVW5hYmxlIHRvIGtpbGwgdGhlIGN1cnJlbnQgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgZG9ub3IgY29ubmVjdGlvbiBkdXJpbmcgZmFpbG92ZXIuIEluY3JlbWVudGFsIHJlY292ZXJ5IHdpbGwgc2h1dGRvd24uAFVuZXhwZWN0ZWQgZXJyb3Igd2hlbiBub3RpZnlpbmcgYW4gaW50ZXJuYWwgY29tcG9uZW50IG5hbWVkICVzIHJlZ2FyZGluZyBhIGdyb3VwIG1lbWJlcnNoaXAgZXZlbnQuAEFuIHVuZGVmaW5lZCBlcnJvciB3YXMgZm91bmQgd2hpbGUgYnJvYWRjYXN0aW5nIGFuIGludGVybmFsIGdyb3VwIG1lbWJlcnNoaXAgbm90aWZpY2F0aW9uISBUaGlzIGlzIGxpa2VseSB0byBoYXBwZW4gaWYgeW91ciBjb21wb25lbnRzIG9yIHBsdWdpbnMgYXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgb3IgYXJlIG1hbGZ1bmN0aW9uaW5nIQBBbiB1bmRlZmluZWQgZXJyb3Igd2FzIGZvdW5kIHdoaWxlIGJyb2FkY2FzdGluZyBhbiBpbnRlcm5hbCBncm91cCBtZW1iZXIgc3RhdHVzIG5vdGlmaWNhdGlvbiEgVGhpcyBpcyBsaWtlbHkgdG8gaGFwcGVuIGlmIHlvdXIgY29tcG9uZW50cyBvciBwbHVnaW5zIGFyZSBub3QgcHJvcGVybHkgbG9hZGVkIG9yIGFyZSBtYWxmdW5jdGlvbmluZyEATm8gbWVtb3J5IHRvIGdlbmVyYXRlIHdyaXRlIGlkZW50aWZpY2F0aW9uIGhhc2gAQmFzZSA2NCBlbmNvZGluZyBvZiB0aGUgd3JpdGUgaWRlbnRpZmljYXRpb24gaGFzaCBmYWlsZWQAQmlubG9nIGZvcm1hdCBzaG91bGQgYmUgUk9XIGZvciBHcm91cCBSZXBsaWNhdGlvbgBiaW5sb2dfY2hlY2tzdW0gc2hvdWxkIGJlIE5PTkUgZm9yIEdyb3VwIFJlcGxpY2F0aW9uAEEgdHJhbnNhY3Rpb25fd3JpdGVfc2V0X2V4dHJhY3Rpb24gYWxnb3JpdGhtIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIHJ1bm5pbmcgR3JvdXAgUmVwbGljYXRpb24AVHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsICh0eF9pc29sYXRpb24pIGlzIHNldCB0byBTRVJJQUxJWkFCTEUsIHdoaWNoIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHN0b3BwaW5nLgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgcmVjb3ZlcmluZy4gVHJ5IGFnYWluIHdoZW4gdGhlIHNlcnZlciBpcyBPTkxJTkUuAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBvbiBFUlJPUiBzdGF0ZS4gQ2hlY2sgZm9yIGVycm9ycyBhbmQgcmVzdGFydCB0aGUgcGx1Z2luAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBPRkZMSU5FLiBDaGVjayBmb3IgZXJyb3JzIGFuZCByZXN0YXJ0IHRoZSBwbHVnaW4AV2UgY2FuIG9ubHkgdXNlIG9uZSBjYWNoZSB0eXBlIGF0IGEgdGltZSBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byByZWluaXQgYmlubG9nIGNhY2hlIGxvZyBmb3IgcmVhZCBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBjcmVhdGUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gZXh0cmFjdCB0aGUgc2V0IG9mIGl0ZW1zIHdyaXR0ZW4gZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gZ2F0aGVyIHRoZSBzZXQgb2YgaXRlbXMgd3JpdHRlbiBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEVycm9yIG9uIHNlc3Npb24gJXUuIFRyYW5zYWN0aW9uIG9mIHNpemUgJWxsdSBleGNlZWRzIHNwZWNpZmllZCBsaW1pdCAlbHUuIFRvIGluY3JlYXNlIHRoZSBsaW1pdCBwbGVhc2UgYWRqdXN0IGdyb3VwX3JlcGxpY2F0aW9uX3RyYW5zYWN0aW9uX3NpemVfbGltaXQgb3B0aW9uLgBFcnJvciB3aGlsZSByZS1pbml0aWFsaXppbmcgYW4gaW50ZXJuYWwgY2FjaGUsIGZvciByZWFkIG9wZXJhdGlvbnMsIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgYXBwZW5kaW5nIGRhdGEgdG8gYW4gaW50ZXJuYWwgY2FjaGUgb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSB3cml0aW5nIHRvIHRyYW5zYWN0aW9uIG1lc3NhZ2Ugb24gc2Vzc2lvbiAldQBVbmFibGUgdG8gcmVnaXN0ZXIgZm9yIGdldHRpbmcgbm90aWZpY2F0aW9ucyByZWdhcmRpbmcgdGhlIG91dGNvbWUgb2YgdGhlIHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARXJyb3IgYnJvYWRjYXN0aW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBncm91cCBvbiBzZXNzaW9uICV1LiBNZXNzYWdlIGlzIHRvbyBiaWcuAEVycm9yIHdoaWxlIGJyb2FkY2FzdGluZyB0aGUgdHJhbnNhY3Rpb24gdG8gdGhlIGdyb3VwIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgY29uZmxpY3QgZGV0ZWN0aW9uIHByb2NlZHVyZSB0byBmaW5pc2ggb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSByZS1pbml0aWFsaXppbmcgYW4gaW50ZXJuYWwgY2FjaGUsIGZvciB3cml0ZSBvcGVyYXRpb25zLCBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBjcmVhdGUgZ3JvdXAgcmVwbGljYXRpb24gY29tbWl0IGNhY2hlIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIHJlaW5pdCBncm91cCByZXBsaWNhdGlvbiBjb21taXQgY2FjaGUgZm9yIHdyaXRlIG9uIHNlc3Npb24gJXUAQSBwcmV2aW91cyByZWNvdmVyeSBzZXNzaW9uIGlzIHN0aWxsIHJ1bm5pbmcuIFBsZWFzZSBzdG9wIHRoZSBncm91cCByZXBsaWNhdGlvbiBwbHVnaW4gYW5kIHdhaXQgZm9yIGl0IHRvIHN0b3AARmF0YWwgZXJyb3IgZHVyaW5nIHRoZSBpbmNyZW1lbnRhbCByZWNvdmVyeSBwcm9jZXNzIG9mIEdyb3VwIFJlcGxpY2F0aW9uLiBUaGUgc2VydmVyIHdpbGwgbGVhdmUgdGhlIGdyb3VwLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gJXMAVW5hYmxlIHRvIGV2YWx1YXRlIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGV4ZWN1dGlvbiBzdGF0dXMuIEdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IHdpbGwgc2h1dGRvd24gdG8gYXZvaWQgZGF0YSBjb3JydXB0aW9uLgBPbmx5IG9uZSBzZXJ2ZXIgYWxpdmUuIERlY2xhcmluZyB0aGlzIHNlcnZlciBhcyBvbmxpbmUgd2l0aGluIHRoZSByZXBsaWNhdGlvbiBncm91cABFcnJvciB3aGVuIHByb2Nlc3NpbmcgY2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBpbiB0aGUgaW5jcmVtZW50YWwgcmVjb3ZlcnkgcHJvY2VzcwBVbmFibGUgdG8gZW5zdXJlIHRoZSBleGVjdXRpb24gb2YgZ3JvdXAgdHJhbnNhY3Rpb25zIHJlY2VpdmVkIGR1cmluZyByZWNvdmVyeS4ARXJyb3Igd2hpbGUgc2VuZGluZyBtZXNzYWdlIGluIHRoZSBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeSBwcm9jZXNzLgBVbmFibGUgdG8gcmVhZCB0aGUgc2VydmVyIHZhbHVlIGZvciB0aGUgc3VwZXJfcmVhZF9vbmx5IHZhcmlhYmxlLgBVbmFibGUgdG8gcmVhZCB0aGUgc2VydmVyIHZhbHVlcyBmb3IgdGhlIHJlYWRfb25seSBhbmQgc3VwZXJfcmVhZF9vbmx5IHZhcmlhYmxlcy4AVW5hYmxlIHRvIHJlc2V0IHRoZSBzZXJ2ZXIgcmVhZCBtb2RlIHNldHRpbmdzLiBUcnkgdG8gcmVzZXQgdGhlbSBtYW51YWxseS4ARHVlIHRvIGEgcGx1Z2luIGVycm9yLCBzb21lIHRyYW5zYWN0aW9ucyB3ZXJlIHVuYWJsZSB0byBiZSBjZXJ0aWZpZWQgYW5kIHdpbGwgbm93IHJvbGxiYWNrLgBFcnJvciB3aGVuIHRyeWluZyB0byB1bmJsb2NrIG5vbiBjZXJ0aWZpZWQgb3IgY29uc2lzdGVudCB0cmFuc2FjdGlvbnMuIENoZWNrIGZvciBjb25zaXN0ZW5jeSBlcnJvcnMgd2hlbiByZXN0YXJ0aW5nIHRoZSBzZXJ2aWNlAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgc2Vjb25kYXJ5IG1lbWJlciB3aXRoIHByaW1hcnkgbWVtYmVyIGFkZHJlc3MgJXM6JXUuAFVuYWJsZSB0byBzdGFydCBHcm91cCBSZXBsaWNhdGlvbi4gUmVwbGljYXRpb24gYXBwbGllciBpbmZyYXN0cnVjdHVyZSBpcyBub3QgaW5pdGlhbGl6ZWQgc2luY2UgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIHNlcnZlcl9pZD0wLiBQbGVhc2UsIHJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIHNlcnZlcl9pZCBsYXJnZXIgdGhhbiAwLgBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIG11c3QgYmUgZW1wdHkgb24gZ3JvdXAgc3RhcnQuIEN1cnJlbnQgdmFsdWU6ICclcycASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBndWFyYW50ZWUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHBsdWdpbiBzdHJ1Y3R1cmVzIG9uIHNlcnZlciBzdGFydABDb3VsZCBub3QgZW5hYmxlIHRoZSBzZXJ2ZXIgcmVhZCBvbmx5IG1vZGUgYW5kIGd1YXJhbnRlZSBhIHNhZmUgcmVjb3ZlcnkgZXhlY3V0aW9uAEVycm9yIG9uIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lIGluaXRpYWxpemF0aW9uAENhbid0IHN0YXJ0IGdyb3VwIHJlcGxpY2F0aW9uIG9uIHNlY29uZGFyeSBtZW1iZXIgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIHdoaWxlIGFzeW5jaHJvbm91cyByZXBsaWNhdGlvbiBjaGFubmVscyBhcmUgcnVubmluZy4ARXJyb3Igb24gZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgc3RhcnQAVGltZW91dCBvbiB3YWl0IGZvciB2aWV3IGFmdGVyIGpvaW5pbmcgZ3JvdXAARXJyb3IgY2FsbGluZyBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMATWVtYmVyIHNlcnZlcl91dWlkIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cC4gU2VydmVyX3V1aWQgJXMgbWF0Y2hlcyBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICVzLgBNZW1iZXIgY29uZmlndXJhdGlvbjogbWVtYmVyX2lkOiAlbHU7IG1lbWJlcl91dWlkOiAiJXMiOyBzaW5nbGUtcHJpbWFyeSBtb2RlOiAiJXMiOyBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQ6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZDogIiVzIjsAVW5hYmxlIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgc2VydmVyIGhhcyBsZWZ0IHRoZSBncm91cCBvciBub3QuIENoZWNrIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJzIHRvIGNoZWNrIGdyb3VwIG1lbWJlcnNoaXAgaW5mb3JtYXRpb24uAFNraXBwaW5nIGxlYXZlIG9wZXJhdGlvbjogY29uY3VycmVudCBhdHRlbXB0IHRvIGxlYXZlIHRoZSBncm91cCBpcyBvbi1nb2luZy4AU2tpcHBpbmcgbGVhdmUgb3BlcmF0aW9uOiBtZW1iZXIgYWxyZWFkeSBsZWZ0IHRoZSBncm91cC4AR29pbmcgdG8gd2FpdCBmb3IgdmlldyBtb2RpZmljYXRpb24AV2hpbGUgbGVhdmluZyB0aGUgZ3JvdXAgZHVlIHRvIGEgc3RvcCwgc2h1dGRvd24gb3IgZmFpbHVyZSB0aGVyZSB3YXMgYSB0aW1lb3V0IHJlY2VpdmluZyBhIHZpZXcgY2hhbmdlLiBUaGlzIGNhbiBsZWFkIHRvIGEgcG9zc2libGUgaW5jb25zaXN0ZW50IHN0YXRlLiBDaGVjayB0aGUgbG9nIGZvciBtb3JlIGRldGFpbHMAUmVxdWVzdGluZyB0byBsZWF2ZSB0aGUgZ3JvdXAgZGVzcGl0ZSBvZiBub3QgYmVpbmcgYSBtZW1iZXIAUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaXMgc3RvcHBpbmcuAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGhhcyBiZWVuIHN0b3BwZWQuAE9uIHBsdWdpbiBzaHV0ZG93biBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGVuYWJsZSB0aGUgc2VydmVyIHJlYWQgb25seSBtb2RlLiBMb2NhbCB0cmFuc2FjdGlvbnMgd2lsbCBiZSBhY2NlcHRlZCBhbmQgY29tbWl0dGVkLgBPbiBzaHV0ZG93biB0aGVyZSB3YXMgYSB0aW1lb3V0IG9uIHRoZSBHcm91cCBSZXBsaWNhdGlvbiByZWNvdmVyeSBtb2R1bGUgdGVybWluYXRpb24uIENoZWNrIHRoZSBsb2cgZm9yIG1vcmUgZGV0YWlscwBPbiBzaHV0ZG93biB0aGVyZSB3YXMgYSB0aW1lb3V0IG9uIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIHRlcm1pbmF0aW9uLgBVbmV4cGVjdGVkIGZhaWx1cmUgd2hpbGUgc2h1dHRpbmcgZG93biByZWdpc3RyeSBtb2R1bGUhAEZhaWx1cmUgZHVyaW5nIEdyb3VwIFJlcGxpY2F0aW9uIGhhbmRsZXIgaW5pdGlhbGl6YXRpb24ARmFpbHVyZSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSBzZXJ2ZXIgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiByZWdpc3RlcmluZyB0aGUgdHJhbnNhY3Rpb25zIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIGJpbmxvZyBzdGF0ZSBvYnNlcnZlcnMAVW5hYmxlIHRvIHN0YXJ0IEdyb3VwIFJlcGxpY2F0aW9uIG9uIGJvb3QARmFpbHVyZSB3aGVuIHN0b3BwaW5nIEdyb3VwIFJlcGxpY2F0aW9uIG9uIHBsdWdpbiB1bmluc3RhbGwARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIHNlcnZlciBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIHRyYW5zYWN0aW9ucyBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIGJpbmxvZyBzdGF0ZSBvYnNlcnZlcnMAQWxsIEdyb3VwIFJlcGxpY2F0aW9uIHNlcnZlciBvYnNlcnZlcnMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQAVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAENhbm5vdCBzdGFydCB0aGUgR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciBhcyBhIHByZXZpb3VzIHNodXRkb3duIGlzIHN0aWxsIHJ1bm5pbmc6IFRoZSB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgaXRzIHRhc2sgaXMgY29tcGxldGUuAFVuYWJsZSB0byBpbml0aWFsaXplIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIG1vZHVsZS4AR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciBtb2R1bGUgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIQBHcm91cCBjb21tdW5pY2F0aW9uIFNTTCBjb25maWd1cmF0aW9uOiBncm91cF9yZXBsaWNhdGlvbl9zc2xfbW9kZTogIiVzIjsgc2VydmVyX2tleV9maWxlOiAiJXMiOyBzZXJ2ZXJfY2VydF9maWxlOiAiJXMiOyBjbGllbnRfa2V5X2ZpbGU6ICIlcyI7IGNsaWVudF9jZXJ0X2ZpbGU6ICIlcyI7IGNhX2ZpbGU6ICIlcyI7IGNhX3BhdGg6ICIlcyI7IGNpcGhlcjogIiVzIjsgdGxzX3ZlcnNpb246ICIlcyI7IHRsc19jaXBoZXJzdWl0ZXM6ICIlcyI7IGNybF9maWxlOiAiJXMiOyBjcmxfcGF0aDogIiVzIjsgc3NsX2ZpcHNfbW9kZTogIiVzIgBNeVNRTCBzZXJ2ZXIgZG9lcyBub3QgaGF2ZSBTU0wgc3VwcG9ydCBhbmQgZ3JvdXBfcmVwbGljYXRpb25fc3NsX21vZGUgaXMgIiVzIiwgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gd2lsbCBhYm9ydABHcm91cCBjb21tdW5pY2F0aW9uIFNTTCBjb25maWd1cmF0aW9uOiBncm91cF9yZXBsaWNhdGlvbl9zc2xfbW9kZTogIiVzIgBVbmFibGUgdG8gaW5pdGlhbGl6ZSB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUAQmlubG9nIG11c3QgYmUgZW5hYmxlZCBmb3IgR3JvdXAgUmVwbGljYXRpb24AR3RpZCBtb2RlIHNob3VsZCBiZSBPTiBmb3IgR3JvdXAgUmVwbGljYXRpb24ATE9HX1JFUExJQ0FfVVBEQVRFUyBzaG91bGQgYmUgT04gZm9yIEdyb3VwIFJlcGxpY2F0aW9uAEV4dHJhY3Rpb24gb2YgdHJhbnNhY3Rpb24gd3JpdGUgc2V0cyByZXF1aXJlcyBhbiBoYXNoIGFsZ29yaXRobSBjb25maWd1cmF0aW9uLiBQbGVhc2UsIGRvdWJsZSBjaGVjayB0aGF0IHRoZSBwYXJhbWV0ZXIgdHJhbnNhY3Rpb24td3JpdGUtc2V0LWV4dHJhY3Rpb24gaXMgc2V0IHRvIGEgdmFsaWQgYWxnb3JpdGhtLgBBcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcnkgbXVzdCBiZSBzZXQgdG8gVEFCTEUAQ29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5IG11c3QgYmUgc2V0IHRvIFRBQkxFLgBJbiBvcmRlciB0byB1c2UgcGFyYWxsZWwgYXBwbGllciBvbiBHcm91cCBSZXBsaWNhdGlvbiwgcGFyYW1ldGVyIHJlcGxpY2EtcGFyYWxsZWwtdHlwZSBtdXN0IGJlIHNldCB0byAnTE9HSUNBTF9DTE9DSycuAEdyb3VwIFJlcGxpY2F0aW9uIHJlcXVpcmVzIHJlcGxpY2EtcHJlc2VydmUtY29tbWl0LW9yZGVyIHRvIGJlIHNldCB0byBPTiB3aGVuIHVzaW5nIG1vcmUgdGhhbiAxIGFwcGxpZXIgdGhyZWFkcy4ASXQgaXMgbm90IGFsbG93ZWQgdG8gcnVuIHNpbmdsZSBwcmltYXJ5IG1vZGUgd2l0aCAnZ3JvdXBfcmVwbGljYXRpb25fZW5mb3JjZV91cGRhdGVfZXZlcnl3aGVyZV9jaGVja3MnIGVuYWJsZWQuAGVycm9yX21lc3NhZ2U6ICVzAFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lIG9wdGlvbiBpcyBtYW5kYXRvcnkAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJyBpcyBub3QgYSB2YWxpZCBVVUlELCBpdHMgbGVuZ3RoIGlzIHRvbyBiaWcAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJyBpcyBub3QgYSB2YWxpZCBVVUlEAGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcXVvdGEgY2Fubm90IGJlIGxhcmdlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9tYXhfcXVvdGEAZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9yZWNvdmVyeV9xdW90YSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21heF9xdW90YQBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWF4X3F1b3RhIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9xdW90YSBvciBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3JlY292ZXJ5X3F1b3RhAFRoZSBnaXZlbiB2YWx1ZSBmb3IgcmVjb3Zlcnkgc3NsIG9wdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fJXMnIGlzIGludmFsaWQgYXMgaXRzIGxlbmd0aCBpcyBiZXlvbmQgdGhlIGxpbWl0AFRoZXJlIGlzIG9uZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIG9wZXJhdGlvbiBhbHJlYWR5IG9uZ29pbmcAZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyBjYW4gb25seSBiZSB1cGRhdGVkIHdoZW4gR3JvdXAgUmVwbGljYXRpb24gaXMgcnVubmluZyBhbmQgYSBtYWpvcml0eSBvZiB0aGUgbWVtYmVycyBhcmUgdW5yZWFjaGFibGUASW5pdGlhbGl6ZWQgZ3JvdXAgY29tbXVuaWNhdGlvbiB3aXRoIGNvbmZpZ3VyYXRpb246IGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWU6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2xvY2FsX2FkZHJlc3M6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX3NlZWRzOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9ib290c3RyYXBfZ3JvdXA6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX3BvbGxfc3Bpbl9sb29wczogJWx1OyBncm91cF9yZXBsaWNhdGlvbl9jb21wcmVzc2lvbl90aHJlc2hvbGQ6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25faXBfYWxsb3dsaXN0OiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9jb21tdW5pY2F0aW9uX2RlYnVnX29wdGlvbnM6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX21lbWJlcl9leHBlbF90aW1lb3V0OiAnJWx1JzsgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9tYXhfbWVzc2FnZV9zaXplOiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX21lc3NhZ2VfY2FjaGVfc2l6ZTogJyVsdXU7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fc3RhY2s6ICclbHUnAFVua25vd24gZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBwaXBlbGluZSByZXF1ZXN0ZWQAVW5hYmxlIHRvIGJvb3RzdHJhcCBncm91cCByZXBsaWNhdGlvbiBldmVudCBoYW5kbGluZyBpbmZyYXN0cnVjdHVyZS4gVW5rbm93biBoYW5kbGVyIHR5cGU6ICVkAE9uZSBvZiB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVycyBpcyBudWxsIGR1ZSB0byBhbiBpbml0aWFsaXphdGlvbiBlcnJvcgBBIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlciwgbWFya2VkIGFzIHVuaXF1ZSwgaXMgYWxyZWFkeSBpbiB1c2UuAEEgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVyIHJvbGUsIHRoYXQgd2FzIG1hcmtlZCBhcyB1bmlxdWUsIGlzIGFscmVhZHkgaW4gdXNlLgBFcnJvciBvbiBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXIgaW5pdGlhbGl6YXRpb24ARXJyb3Igd2hlbiBpbml0aWFsaXppbmcgYSBzZXNzaW9uIHRocmVhZCBmb3IgaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24uAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gVGhlIGludGVybmFsIHNlcnZlciBjb21tdW5pY2F0aW9uIHNlc3Npb24gaXMgbm90IGluaXRpYWxpemVkAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gVGhlIGludGVybmFsIHNlcnZlciBzZXNzaW9uIHdhcyBraWxsZWQgb3Igc2VydmVyIGlzIHNodXR0aW5nIGRvd24uAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gR290IGludGVybmFsIFNRTCBlcnJvcjogJXMoJWQpAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gSW50ZXJuYWwgZmFpbHVyZS4ARXJyb3IsIG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgZXhjZWVkZWQgd2hlbiB3YWl0aW5nIGZvciB0aGUgaW50ZXJuYWwgc2VydmVyIHNlc3Npb24gc3RhdGUgdG8gYmUgb3BlcmF0aW5nAEVycm9yIHdoZW4gdHJ5aW5nIHRvIGZldGNoIHNlY3VyaXR5IGNvbnRleHQgd2hlbiBjb250YWN0aW5nIHRoZSBzZXJ2ZXIgZm9yIGludGVybmFsIHBsdWdpbiByZXF1ZXN0cy4AVGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyB0aGUgc2VydmVyIHdpdGggdXNlcjogJXMuIE1ha2Ugc3VyZSB0aGUgdXNlciBpcyBwcmVzZW50IGluIHRoZSBzZXJ2ZXIgYW5kIHRoYXQgdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlIHdhcyBydW4gY29ycmVjdGx5LgBGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgcGx1Z2luIG9wZXJhdGlvbnMgc2luY2UgdGhlIHNlcnZlciBkb2VzIG5vdCBoYXZlIGF2YWlsYWJsZSBjb25uZWN0aW9ucywgcGxlYXNlIGluY3JlYXNlIEBAR0xPQkFMLk1BWF9DT05ORUNUSU9OUy4gU2VydmVyIGVycm9yOiAlaS4ARmFpbGVkIHRvIGVzdGFibGlzaCBhbiBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbiB0byBleGVjdXRlIHBsdWdpbiBvcGVyYXRpb25zLiBTZXJ2ZXIgZXJyb3I6ICVpLiBTZXJ2ZXIgZXJyb3IgbWVzc2FnZTogJXMAVGhpcyBtZW1iZXIgY291bGQgbm90IHJlYWNoIGEgbWFqb3JpdHkgb2YgdGhlIG1lbWJlcnMgZm9yIG1vcmUgdGhhbiAlbGQgc2Vjb25kcy4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAgYXMgaW5zdHJ1Y3RlZCBieSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdW5yZWFjaGFibGVfbWFqb3JpdHlfdGltZW91dCBvcHRpb24uAFRoZSBzZXJ2ZXIgd2FzIGF1dG9tYXRpY2FsbHkgc2V0IGludG8gcmVhZCBvbmx5IG1vZGUgYWZ0ZXIgYW4gZXJyb3Igd2FzIGRldGVjdGVkLgBVbmFibGUgdG8gbG9nIG5vdGlmaWNhdGlvbiB0byB0YWJsZSAoZXJybm86ICVsdSkgKHJlczogJWQpISBNZXNzYWdlOiAlcwBGYWlsdXJlIGluIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lICclcycgaW5pdGlhbGl6YXRpb24AVW5hYmxlIHRvIHNldCB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgbG9nZ2VyAEN1cnJlbnQgZGVidWcgb3B0aW9ucyBhcmU6ICclcycuAFNvbWUgZGVidWcgb3B0aW9ucyBpbiAnJXMnIGFyZSBub3QgdmFsaWQuAEVycm9yIGNhbGxpbmcgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzIHdoaWxlIHRyeWluZyB0byBsZWF2ZSB0aGUgZ3JvdXAATWVtYmVyIGlzIG5vdCBPTkxJTkUsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwAEVycm9yIGNhbGxpbmcgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAEVycm9yIHNldHRpbmcgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB2YWx1ZSAnJXMnIG9uIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB2YWx1ZSAnJXMnIHdhcyBzZXQgaW4gdGhlIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBUaW1lb3V0IG9uIHdhaXQgZm9yIHZpZXcgYWZ0ZXIgc2V0dGluZyBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHZhbHVlICclcycgaW50byBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMAQnJvYWRjYXN0IG9mIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgbWVzc2FnZSBmYWlsZWQuIE1lc3NhZ2UgaXMgdG9vIGJpZy4ARXJyb3Igd2hpbGUgc2VuZGluZyBzdGF0cyBtZXNzYWdlAEZsb3cgY29udHJvbCAtIHVwZGF0ZSBtZW1iZXIgc3RhdHM6ICVzIHN0YXRzIGNlcnRpZmllcl9xdWV1ZSAlZCwgYXBwbGllcl9xdWV1ZSAlZCBjZXJ0aWZpZWQgJWxkICglbGQpLCBhcHBsaWVkICVsZCAoJWxkKSwgbG9jYWwgJWxkICglbGQpLCBxdW90YSAlbGQgKCVsZCkgbW9kZT0lZABGbG93IGNvbnRyb2w6IHRocm90dGxpbmcgdG8gJWxkIGNvbW1pdHMgcGVyICVsZCBzZWMsIHdpdGggJWQgd3JpdGluZyBhbmQgJWQgbm9uLXJlY292ZXJpbmcgbWVtYmVycywgbWluIGNhcGFjaXR5ICVsbGQsIGxpbSB0aHJvdHRsZSAlbGxkAFVuYWJsZSB0byBjb252ZXJ0IGEgcGFja2V0IGludG8gYW4gZXZlbnQgb24gdGhlIGFwcGxpZXIuIEVycm9yOiAlcwBGYWlsZWQgdG8gY3JlYXRlIGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlLgBGYWlsZWQgdG8gcmVpbml0IGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlIGZvciB3cml0ZS4AVW5hYmxlIHRvIGNvbnZlcnQgdGhlIGV2ZW50IGludG8gYSBwYWNrZXQgb24gdGhlIGFwcGxpZXIuIEVycm9yOiAlcwBGYWlsZWQgdG8gZmx1c2ggZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUuAEZhaWxlZCB0byByZWluaXQgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUgZm9yIHJlYWQuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiBHb3QgZXJyb3I6ICVkLiBQbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLgAlcwBUaGUgcmVwbGljYSBJTyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIGlzIHVuYmxvY2tlZCBhcyB0aGUgbWVtYmVyIGlzIGRlY2xhcmVkIE9OTElORSBub3cuAFRoZSByZXBsaWNhIElPIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhlIG1lbWJlciBmYWlsZWQgdG8gY29tZSBPTkxJTkUuAFRoZSByZXBsaWNhIGFwcGxpZXIgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyBpcyB1bmJsb2NrZWQgYXMgdGhlIG1lbWJlciBpcyBkZWNsYXJlZCBPTkxJTkUgbm93LgBUaGUgcmVwbGljYSBhcHBsaWVyIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhlIG1lbWJlciBmYWlsZWQgdG8gY29tZSBPTkxJTkUuAExEQVAgYXV0aGVudGljYXRpb24gaW5pdGlhbGl6ZTogZmFpbGVkIHRvIGNyZWF0ZS8gZ2V0IGNvbm5lY3Rpb24gZnJvbSB0aGUgcG9vbC4gAExEQVAgYXV0aGVudGljYXRpb24gZGVfaW5pdGlhbGl6ZSBGYWlsZWQAU2tpcHBpbmcgZ3JvdXAgc2VhcmNoLCBObyBncm91cCBhdHRyaWJ1dGUgbWVudGlvbmVkAFBvb2wgbWF4IHNpemUgaXMgMCwgY29ubmVjdGlvbiBwb29sIGlzIGRpc2FibGVkAENvbm5lY3Rpb24gcG9vbCBpbml0aWFsaXphdGlvbiwgZmFpbGVkIHRvIGNyZWF0ZSBMREFQIG9iamVjdCBjcmVhdG9yAENvbm5lY3Rpb24gcG9vbCBpbml0aWFsaXphdGlvbiwgZmFpbGVkIHRvIGNyZWF0ZSBMREFQIG9iamVjdABMREFQIFRMUyBjb25maWd1cmF0aW9uAExEQVAgVExTIGNvbm5lY3Rpb24ATERBUCBwb29sIGlzIG5vdCBjcmVhdGVkLgBMREFQIHBvb2wgaXMgaW5pdGlhbGl6aW5nAExEQVAgcG9vbCBpcyBkZS1pbml0aWFsaXppbmcAUG9vbCBtYXggc2l6ZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIDAATERBUCBwb29sIGlzIHJlLWluaXRpYWxpemluZwBQbHVnLWluIGhhcyBmYWlsZWQgdG8gd3JpdGUgdGhlIHBhY2tldC4AU2V0dGluZyBMREFQIHVzZXIgbmFtZSBhcyA6ICVzAFVzZXIgYXV0aGVudGljYXRpb24gZGF0YTogJXMgc2l6ZTogJWx1AFVzZXIgaXMgYXV0aGVudGljYXRlZCBhczogJXMgZXh0ZXJuYWwgdXNlcjogJXMAR3JvdXAgc2VhcmNoIGluZm9ybWF0aW9uIGJhc2UgRE46ICVzIHNjb3BlOiAlZCBmaWx0ZXI6ICVzIGF0dHJpYnV0ZTogJXMAU3BlY2lhbCBoYW5kbGluZyBmb3IgZ3JvdXAgc2VhcmNoLCB7R0F9IGZvdW5kAEdyb3VwIHNlYXJjaCBzcGVjaWFsIGhhbmRsaW5nLCBncm91cCBmdWxsIEROIGZvdW5kLiAAVXNlciAlcyBpcyBub3QgbWVtYmVyIG9mIGFueSBncm91cC4AVXNlciAlcyBpcyBtZW1iZXIgb2YgbW9yZSB0aGFuIG9uZSBncm91cABGb3IgdXNlciAlcyBoYXMgbXVsdGlwbGUgdXNlciBncm91cCBuYW1lcy4gUGxlYXNlIGNoZWNrIGlmIGdyb3VwIGF0dHJpYnV0ZSBuYW1lIGlzIGNvcnJlY3QAU2VhcmNoZWQgZ3JvdXAgbmFtZTogJXMATERBUCBhdXRoZW50aWNhdGlvbiBvYmplY3QgY3JlYXRpb24gdGltZV9zdGFtcDogJXMgZG46ICVzAENlcnRpZmljYXRlIG5hbWU6ICVzAEZhaWxlZCB0byBwb29sIGRlLWluaXRpYWxpemVkOiBwb29sIGlzIGFscmVhZHkgcmVjb25zdHJ1Y3RpbmcAUG9vbCBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IHBvb2wgaXMgYWxyZWFkeSBpbml0aWFsaXplZABQb29sIGluaXRpYWxpemF0aW9uIGZhaWxlZDogcG9vbCBpcyBpbml0aWFsaXppbmcAUG9vbCBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IHBvb2wgaXMgZGUtaW5pdGlhbGl6aW5nAEZhaWxlZCB0byBwb29sIGRlaW5pdGlhbGl6ZWQ6IHBvb2wgaXMgYWxyZWFkeSByZWNvbnN0cnVjdGluZwBGYWlsZWQgdG8gcG9vbCBkZWluaXRpYWxpemVkIDogcG9vbCBpcyBub3QgcmVhZHkATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldDogRmFpbGVkIHRvIHJldHVybiBjb25uZWN0aW9uIGFzIHBsdWctaW4gaXMgbm90IHJlYWR5L2luaXRpYWxpemluZy9kZS1pbml0aWFsaXppbmcAQ29ubmVjdGlvbiBwb29sIGhhcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZWQATGRhcF9jb25uZXRpb25fcG9vbDo6Z2V0IExEQVAgbWF4aW11bSBjb25uZWN0aW9uIGFsbG93ZWQgc2l6ZSBpcyByZWFjaGVkLiBJbmNyZWFzZSB0aGUgbWF4aW11bSBsaW1pdC4AU2V0IG1heCBwb29sIHNpemUgZmFpbGVkLgBQbHVnLWluIGhhcyBmYWlsZWQgdG8gcmVhZCB0aGUgcGFja2V0IGZyb20gY2xpZW50AExkYXBfYXV0aGVudGljYXRpb246OmluaXRpYWxpemU6IGNyZWF0aW5nIG5ldyBMREFQIGNvbm5lY3Rpb24uIABMZGFwX2F1dGhlbnRpY2F0aW9uOjppbml0aWFsaXplOiBnZXR0aW5nIGNvbm5lY3Rpb24gZnJvbSBwb29sLiAATGRhcF9hdXRoZW50aWNhdGlvbjo6ZGVfaW5pdGlhbGl6ZSBwdXR0aW5nIGJhY2sgY29ubmVjdGlvbiBpbiB0aGUgcG9vbABMZGFwX2F1dGhlbnRpY2F0aW9uOjpzZWFyY2hfdXNlcl9ncm91cCBubyBncm91cCBhdHRyaWJ1dGUgZm91bmQATGRhcF9jb25uZXRpb25fcG9vbDo6cHV0IGxkYXAgaW5mbyBudWxsAExkYXBfY29ubmVjdGlvbl9wb29sOjpwdXQgY29ubmVjdGlvbiBpcyBmcmVlaW5nLiAATGRhcF9jb25uZWN0aW9uX3Bvb2w6OnB1dCBjb25uZWN0aW9uIGluIHB1c2hlZCBpbiB0aGUgcG9vbABMZGFwX2Nvbm5lY3Rpb25fY3JlYXRvcjo6TGRhcF9jb25uZWN0aW9uX2NyZWF0b3IAc3RhcnRpbmcgVExTAExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQ6IChsZGFwX2luZm8gPT0gTlVMTCl8fCAoKmxkYXBfaW5mbykATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmRlaW5pdDogZGVsZXRpbmcgY29ubmVjdGlvbiBrZXkgJXMAIExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQgcG9vbGVkIGNvbm5lY3Rpb24ga2V5OiAlcwBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0IGNyZWF0ZSBjb25uZWN0aW9uIGtleTogJXMATERBUCBjb21tdW5pY2F0aW9uIGhvc3QgJXMgcG9ydCAldQBTZW5kaW5nIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB0byBjbGllbnQgOiAlcwBTQVNMIHJlcXVlc3QgcmVjZWl2ZWQgZnJvbSBteXNxbCBjbGllbnQ6ICVzAExkYXBfc2FzbF9hdXRoZW50aWNhdGlvbjo6cHJvY2Vzc19zYXNsIHJjOiAlcwBMZGFwX3Nhc2xfYXV0aGVudGljYXRpb246OnByb2Nlc3Nfc2FzbCBzYXNsIGJpbmQgc3VjY2VlZC4gZG46ICVzIG1ldGhvZDogJXMgc2VydmVyIGNyZWRlbnRpYWw6ICVzAExEQVAgYXV0aGVudGljYXRpb24gc3RhcnRlZCBmb3IgdXNlciBuYW1lOiAlcwAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIGluaXRpYWxpemUgaXMgZmFpbGVkIHdpdGg6ICVzAExEQVAgYXV0aGVudGljYXRpb24gZmFpbGVkIG9yIGdyb3VwIHJldHJpZXZhbCBmYWlsZWQ6ICVzAFNlYXJjaCB1c2VyIGdyb3VwIGhhcyBmYWlsZWQ6ICVzAExEQVAgdXNlciBiaW5kIGhhcyBmYWlsZWQ6ICVzAENvbm5lY3Rpb24gcG9vbCBnZXQ6IEZhaWxlZCB0byBjcmVhdGUgTERBUCBjb25uZWN0aW9uLiAlcwBGYWlsZWQgdG8gY3JlYXRlIG5ldyBMREFQIGNvbm5lY3Rpb246ICAlcwBGYWlsZWQgdG8gZXN0YWJsaXNoIFRMUyBjb25uZWN0aW9uOiAgJXMARmFpbGVkIHRvIHNlYXJjaCB1c2VyIGZ1bGwgZG46ICVzAExkYXBfY29ubmVjdGlvbl9wb29sOjpyZWluaXQAVGhlIHBhdGggJyVzJywgZnJvbSB0aGUgTk9USUZZX1NPQ0tFVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaXMgdG9vIGxvbmcuIEF0ICV1IGJ5dGVzIGl0IGV4Y2VlZHMgdGhlIGxpbWl0IG9mICV1IGJ5dGVzIGZvciBhbiBBRl9VTklYIHNvY2tldC4ARmFpbGVkIHRvIGNvbm5lY3QgdG8gc3lzdGVtZCBub3RpZmljYXRpb24gc29ja2V0IG5hbWVkICVzLiBFcnJvcjogJyVzJwBGYWlsZWQgdG8gd3JpdGUgJyVzJyB0byBzeXN0ZW1kIG5vdGlmaWNhdGlvbi4gRXJyb3I6ICclcycAQ2Fubm90IHJlcGxpY2F0ZSB0byBzZXJ2ZXIgd2l0aCBzZXJ2ZXJfdXVpZD0nJS4zNnMnIGJlY2F1c2UgdGhlIHByZXNlbnQgc2VydmVyIGhhcyBwdXJnZWQgcmVxdWlyZWQgYmluYXJ5IGxvZ3MuIFRoZSBjb25uZWN0aW5nIHNlcnZlciBuZWVkcyB0byByZXBsaWNhdGUgdGhlIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGZyb20gZWxzZXdoZXJlLCBvciBiZSByZXBsYWNlZCBieSBhIG5ldyBzZXJ2ZXIgY3JlYXRlZCBmcm9tIGEgbW9yZSByZWNlbnQgYmFja3VwLiBUbyBwcmV2ZW50IHRoaXMgZXJyb3IgaW4gdGhlIGZ1dHVyZSwgY29uc2lkZXIgaW5jcmVhc2luZyB0aGUgYmluYXJ5IGxvZyBleHBpcmF0aW9uIHBlcmlvZCBvbiB0aGUgcHJlc2VudCBzZXJ2ZXIuICVzLgBJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLXBpZC1maWxlOiBMb2NhdGlvbiAnJXMnIGluIHRoZSBwYXRoIGlzIGFjY2Vzc2libGUgdG8gYWxsIE9TIHVzZXJzLiBDb25zaWRlciBjaG9vc2luZyBhIGRpZmZlcmVudCBkaXJlY3RvcnkuAENhbid0IHN0YXJ0IHNlcnZlcjogY2FuJ3QgY2hlY2sgUElEIGZpbGVwYXRoOiAlcwB2YWxpZGF0ZV9wYXNzd29yZCBzdGF0dXMgdmFyaWFibGVzIHJlZ2lzdHJhdGlvbiBmYWlsZWQuAHZhbGlkYXRlX3Bhc3N3b3JkIHN0YXR1cyB2YXJpYWJsZXMgdW5yZWdpc3RyYXRpb24gZmFpbGVkLgBEaWN0aW9uYXJ5IGZpbGUgb3BlbiBmYWlsZWQAZ2l2ZW4gcGFzc3dvcmQgc3RyaW5nIGNvdWxkIGJlIG51bGwAZmFpbGVkIHRvIGNvbnZlcnQgdGhlIHBhc3N3b3JkIHN0cmluZyB0byBsb3dlciBjYXNlAGZhaWxlZCB0byBjb252ZXJ0IHRoZSBwYXNzd29yZCBzdHJpbmcgaW50byBhIGJ1ZmZlcgBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgZm9yIHN0cmluZyBoYW5kbGVyAFNpbmNlIHRoZSB2YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3kgaXMgbWVudGlvbmVkIGFzIFN0cm9uZywgZGljdGlvbmFyeSBmaWxlIG11c3QgYmUgc3BlY2lmaWVkAGNvbnZlcnRfdG9fYnVmZmVyIHNlcnZpY2UgZmFpbGVkACVzIHZhcmlhYmxlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuACVzIHZhcmlhYmxlIHVucmVnaXN0cmF0aW9uIGZhaWxlZC4AUGxlYXNlIHNwZWNpZnkgb3B0aW9ucyBzcGVjaWZpYyB0byBrZXlyaW5nIG1pZ3JhdGlvbi4gQW55IGFkZGl0aW9uYWwgb3B0aW9ucyBjYW4gYmUgaWdub3JlZC4gTk9URTogQWx0aG91Z2ggc29tZSBvcHRpb25zIGFyZSB2YWxpZCwgbWlncmF0aW9uIHRvb2wgY2FuIHN0aWxsIHJlcG9ydCBlcnJvciBleGFtcGxlOiBwbHVnaW4gdmFyaWFibGVzIGZvciB3aGljaCBwbHVnaW4gaXMgbm90IGxvYWRlZCB5ZXQuAEludmFsaWQgZGVmYXVsdCBjb2xsYXRpb24gJXM6IHV0ZjhtYjRfMDkwMF9haV9jaSBvciB1dGY4bWI0X2dlbmVyYWxfY2kgZXhwZWN0ZWQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMARmFpbGVkIHRvIHNldCBOVU1BIG1lbW9yeSBwb2xpY3kgb2YgYnVmZmVyIHBvb2wgcGFnZSBmcmFtZXMgd2l0aCBtYmluZCglcCwlenUsJXMsLi4uLC4uLiwlcykgZmFpbGVkIHdpdGggJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAUGFnZSBzdGlsbCBmaXhlZCBvciBkaXJ0eSBhdCBzaHV0ZG93bi4gJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAV2FpdGVkIGZvciAldSBzZWNzIGZvciBoYXNoIGluZGV4IHJlZl9jb3VudCAoJXp1KSB0byBkcm9wIHRvIDAuIGluZGV4OiAiJXMiIHRhYmxlOiAiJXMiACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRhYmxlIGZsYWdzIGFyZSAweCVseCBpbiB0aGUgZGF0YSBkaWN0aW9uYXJ5IGJ1dCB0aGUgZmxhZ3MgaW4gZmlsZSAlcyAgYXJlIDB4JWxseCEAQ2FuJ3QgcmVhZCBlbmNyeXB0aW9uIGtleSBmcm9tIGZpbGUgJXMhAENhbm5vdCBjbG9zZSBmaWxlICVzLCBiZWNhdXNlIG5fcGVuZGluZ19mbHVzaGVzICV6dQBDYW5ub3QgY2xvc2UgZmlsZSAlcywgYmVjYXVzZSBtb2RpZmljYXRpb24gY291bnQgJWxsZCAhPSBmbHVzaCBjb3VudCAlbGxkAENhbm5vdCBjbG9zZSBmaWxlICVzLCBiZWNhdXNlIGl0IGlzIGluIHVzZQBPcGVuIGZpbGUgbGlzdCBsZW4gaW4gc2hhcmQgJXp1IGlzICVsbHUAVGFibGVzcGFjZSAlcywgd2FpdGluZyBmb3IgSU8gdG8gc3RvcCBmb3IgJWxsZCBzZWNvbmRzACVzACVzACVzACVzACVzAFlvdSBtdXN0IHJhaXNlIHRoZSB2YWx1ZSBvZiBpbm5vZGJfb3Blbl9maWxlcyBpbiBteS5jbmYhIFJlbWVtYmVyIHRoYXQgSW5ub0RCIGtlZXBzIGFsbCByZWRvIGxvZyBmaWxlcyBhbmQgYWxsIHN5c3RlbSB0YWJsZXNwYWNlIGZpbGVzIG9wZW4gZm9yIHRoZSB3aG9sZSB0aW1lIG15c3FsZCBpcyBydW5uaW5nLCBhbmQgbmVlZHMgdG8gb3BlbiBhbHNvIHNvbWUgLmliZCBmaWxlcyBpZiB0aGUgZmlsZS1wZXItdGFibGUgc3RvcmFnZSBtb2RlbCBpcyB1c2VkLiBDdXJyZW50IG9wZW4gZmlsZXMgJXp1LCBtYXggYWxsb3dlZCBvcGVuIGZpbGVzICV6dS4ATWF4IHRhYmxlc3BhY2UgaWQgaXMgdG9vIGhpZ2gsICVsdQBUcnlpbmcgdG8gYWNjZXNzIG1pc3NpbmcgdGFibGVzcGFjZSAlbHUAVHJ5aW5nIHRvIGNsb3NlL2RlbGV0ZSB0YWJsZXNwYWNlICclcycgYnV0IHRoZXJlIGFyZSAlbHUgcGVuZGluZyBvcGVyYXRpb25zIG9uIGl0LgBUcnlpbmcgdG8gZGVsZXRlL2Nsb3NlIHRhYmxlc3BhY2UgJyVzJyBidXQgdGhlcmUgYXJlICVsdSBmbHVzaGVzIGFuZCAlenUgcGVuZGluZyBJL08ncyBvbiBpdC4AJXMAQ2Fubm90IGRlbGV0ZSB0YWJsZXNwYWNlICVsdSBiZWNhdXNlIGl0IGlzIG5vdCBmb3VuZCBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUuAFdoaWxlIGRlbGV0aW5nIHRhYmxlc3BhY2UgJWx1IGluIERJU0NBUkQgVEFCTEVTUEFDRS4gRmlsZSByZW5hbWUvZGVsZXRlIGZhaWxlZDogJXMAQ2Fubm90IGRlbGV0ZSB0YWJsZXNwYWNlICVsdSBpbiBESVNDQVJEIFRBQkxFU1BBQ0U6ICVzAENhbm5vdCByZW5hbWUgJyVzJyB0byAnJXMnIGZvciBzcGFjZSBJRCAlbHUgYmVjYXVzZSB0aGUgc291cmNlIGZpbGUgZG9lcyBub3QgZXhpc3QuAENhbm5vdCByZW5hbWUgJyVzJyB0byAnJXMnIGZvciBzcGFjZSBJRCAlbHUgYmVjYXVzZSB0aGUgdGFyZ2V0IGZpbGUgZXhpc3RzLiBSZW1vdmUgdGhlIHRhcmdldCBmaWxlIGFuZCB0cnkgYWdhaW4uAENhbm5vdCByZW5hbWUgZmlsZSAnJXMnIChzcGFjZSBpZCAlbHUpIHJldHJpZWQgJWxsdSB0aW1lcy4gVGhlcmUgYXJlIGVpdGhlciBwZW5kaW5nIElPcyBvciBmbHVzaGVzIG9yIHRoZSBmaWxlIGlzIGJlaW5nIGV4dGVuZGVkLgBDYW5ub3QgZmluZCBzcGFjZSBpZCAlbHUgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlLCB0aG91Z2ggdGhlIGZpbGUgJyVzJyBpbiBhIHJlbmFtZSBvcGVyYXRpb24gc2hvdWxkIGhhdmUgdGhhdCBJRC4AUmVuYW1lIHdhaXRpbmcgZm9yIElPIHRvIHJlc3VtZQBDYW5ub3QgZmluZCB0YWJsZXNwYWNlIGZvciAnJXMnIGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZQBDYW5ub3QgZmluZCB0YWJsZXNwYWNlIGZvciAnJXMnIGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZQBUYWJsZXNwYWNlICclcycgaXMgYWxyZWFkeSBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUAQ2Fubm90IGNyZWF0ZSBmaWxlICclcycAVGhlIGZpbGUgJyVzJyBhbHJlYWR5IGV4aXN0cyB0aG91Z2ggdGhlIGNvcnJlc3BvbmRpbmcgdGFibGUgZGlkIG5vdCBleGlzdC4gSGF2ZSB5b3UgbW92ZWQgSW5ub0RCIC5pYmQgZmlsZXMgYXJvdW5kIHdpdGhvdXQgdXNpbmcgdGhlIFNRTCBjb21tYW5kcyBESVNDQVJEIFRBQkxFU1BBQ0UgYW5kIElNUE9SVCBUQUJMRVNQQUNFLCBvciBkaWQgbXlzcWxkIGNyYXNoIGluIHRoZSBtaWRkbGUgb2YgQ1JFQVRFIFRBQkxFPyBZb3UgY2FuIHJlc29sdmUgdGhlIHByb2JsZW0gYnkgcmVtb3ZpbmcgdGhlIGZpbGUgJyVzJyB1bmRlciB0aGUgJ2RhdGFkaXInIG9mIE15U1FMLgBwb3NpeF9mYWxsb2NhdGUoKTogRmFpbGVkIHRvIHByZWFsbG9jYXRlIGRhdGEgZm9yIGZpbGUgJXMsIGRlc2lyZWQgc2l6ZSAlbGx1IE9wZXJhdGluZyBzeXN0ZW0gZXJyb3IgbnVtYmVyICVkIC0gJXMuIENoZWNrIHRoYXQgdGhlIGRpc2sgaXMgbm90IGZ1bGwgb3IgYSBkaXNrIHF1b3RhIGV4Y2VlZGVkLiBNYWtlIHN1cmUgdGhlIGZpbGUgc3lzdGVtIHN1cHBvcnRzIHRoaXMgZnVuY3Rpb24uIFJlZmVyIHRvIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvciBvcGVyYXRpbmcgc3lzdGVtIGVycm9yIGNvZGUgaW5mb3JtYXRpb24uAENvdWxkIG5vdCB3cml0ZSB0aGUgZmlyc3QgcGFnZSB0byB0YWJsZXNwYWNlICclcycARmlsZSBmbHVzaCBvZiB0YWJsZXNwYWNlICclcycgZmFpbGVkAENvdWxkIG5vdCBmaW5kIGEgdmFsaWQgdGFibGVzcGFjZSBmaWxlIGZvciBgJXNgLiAlcwBJZ25vcmluZyBkYXRhIGZpbGUgJyVzJyB3aXRoIHNwYWNlIElEICVsdS4gQW5vdGhlciBkYXRhIGZpbGUgY2FsbGVkICclcycgZXhpc3RzIHdpdGggdGhlIHNhbWUgc3BhY2UgSUQAJXMAJXMAJXMAJXMAQ2FuJ3Qgc2V0IGVuY3J5cHRpb24gaW5mb3JtYXRpb24gZm9yIHRhYmxlc3BhY2UgJXMhACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRoZSBkYXRhZmlsZSAnJXMnIGZvciB0YWJsZXNwYWNlICVzIGlzIGluIGFuIHVucHJvdGVjdGVkIGxvY2F0aW9uLiBUaGlzIGZpbGUgY2Fubm90IGJlIHJlY292ZXJlZCBhZnRlciBhIGNyYXNoIHVudGlsIHRoaXMgbG9jYXRpb24gaXMgYWRkZWQgdG8gaW5ub2RiX2RpcmVjdG9yaWVzLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBTY2FuIHBhdGggJyVzJyBpcyBpZ25vcmVkIGJlY2F1c2UgJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQSBnZW5lcmFsIHRhYmxlc3BhY2UgY2Fubm90IGJlIGxvY2F0ZWQgdW5kZXIgdGhlIGRhdGFkaXIuIENhbm5vdCBvcGVuIGZpbGUgJyVzJy4AQSBmaWxlLXBlci10YWJsZSB0YWJsZXNwYWNlIGNhbm5vdCBiZSBsb2NhdGVkIGluIHRoZSBkYXRhZGlyLiBDYW5ub3Qgb3BlbiBmaWxlICclcycuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAENhbm5vdCBjcmVhdGUgYSB0YWJsZXNwYWNlIGZvciB0YWJsZSAlcyBiZWNhdXNlIHRoZSBkaXJlY3RvcnkgaXMgbm90IGEgdmFsaWQgbG9jYXRpb24uICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEJsb2NrZWQgSGlnaCBQcmlvcml0eSBUcmFuc2FjdGlvbiAoSUQgJWxsdSwgVGhyZWFkIElEICVzKSBmb3JjZXMgcm9sbGJhY2sgb2YgdGhlIGJsb2NraW5nIHRyYW5zYWN0aW9uIChJRCAlbGx1IC0gJXMpLgAlcwAlcwBCbG9ja2VkIEhpZ2ggUHJpb3JpdHkgVHJhbnNhY3Rpb24gKFRocmVhZCBJRCAlcykgd2FraW5nIHVwIHRoZSBibG9ja2luZyB0cmFuc2FjdGlvbiAoSUQgJWxsdSkgYnkgcHJldGVuZGluZyBpdCdzIGEgZGVhZGxvY2sgdmljdGltLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUaGUgdHJhbnNhY3Rpb24gbG9nIHNpemUgaXMgdG9vIGxhcmdlIGZvciBpbm5vZGJfbG9nX2J1ZmZlcl9zaXplICglbHUgPj0gJWx1IC8gMikuIFRyeWluZyB0byBleHRlbmQgaXQuAGlubm9kYl9sb2dfYnVmZmVyX3NpemUgd2FzIGV4dGVuZGVkIHRvICVsdSBieXRlcy4AVGhlIHRyYW5zYWN0aW9uIGxvZyBmaWxlcyBhcmUgdG9vIHNtYWxsIGZvciB0aGUgc2luZ2xlIHRyYW5zYWN0aW9uIGxvZyAoc2l6ZT0lbHUpLiBTbywgdGhlIGxhc3QgY2hlY2twb2ludCBhZ2UgbWlnaHQgZXhjZWVkIHRoZSBsb2cgZ3JvdXAgY2FwYWNpdHkgJWxsdS4AVGhlIGFnZSBvZiB0aGUgbGFzdCBjaGVja3BvaW50IGlzICVsbHUsIHdoaWNoIGV4Y2VlZHMgdGhlIGxvZyBncm91cCBjYXBhY2l0eSAlbGx1LgBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLiBpYl9sb2dmaWxlcyBhcmUgdG9vIHNtYWxsIGZvciBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5ICVsdS4gVGhlIGNvbWJpbmVkIHNpemUgb2YgaWJfbG9nZmlsZXMgc2hvdWxkIGJlIGJpZ2dlciB0aGFuIDIwMCBrQiAqIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kuIFRvIGdldCBteXNxbGQgdG8gc3RhcnQgdXAsIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IGluIG15LmNuZiB0byBhIGxvd2VyIHZhbHVlLCBmb3IgZXhhbXBsZSwgdG8gOC4gQWZ0ZXIgYW4gRVJST1ItRlJFRSBzaHV0ZG93biBvZiBteXNxbGQgeW91IGNhbiBhZGp1c3QgdGhlIHNpemUgb2YgaWJfbG9nZmlsZXMuICVzAFJlZG8gbG9nIHdhcyBlbmNyeXB0ZWQsIGJ1dCBrZXlyaW5nIHBsdWdpbiBpcyBub3QgbG9hZGVkLgBSZWFkIHJlZG8gbG9nIGVuY3J5cHRpb24gbWV0YWRhdGEgc3VjY2Vzc2Z1bC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgZW5jcnlwdGlvbiBtZXRhZGF0YS4AQ2Fubm90IHJlYWQgdGhlIGVuY3J5cHRpb24gaW5mb3JtYXRpb24gaW4gbG9nIGZpbGUgaGVhZGVyLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBwbHVnaW4gbG9hZGVkIGFuZCB0aGUga2V5IGZpbGUgZXhpc3RzLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQgaW4gcmVhZC1vbmx5IG1vZGUuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQuAEZsdXNoIHdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGNhdGNoIHVwIGxhZyBMU046ICVsbHUARmx1c2ggb3ZlcndyaXRpbmcgZGF0YSB0byBhcmNoaXZlIC0gd2FpdCB0b28gbG9uZyAoMSBtaW51dGUpIGxhZyBMU046ICVsbHUAJXMAU3RhcnRpbmcgc2h1dGRvd24uLi4AV2FpdGluZyBmb3IgJXMgdG8gZXhpdABXYWl0aW5nIGZvciAlbHUgYWN0aXZlIHRyYW5zYWN0aW9ucyB0byBmaW5pc2gAV2FpdGluZyBmb3IgbWFzdGVyIHRocmVhZCB0byBiZSBzdXNwZW5kZWQAV2FpdGluZyBmb3IgcGFnZV9jbGVhbmVyIHRvIGZpbmlzaCBmbHVzaGluZyBvZiBidWZmZXIgcG9vbABQZW5kaW5nIGNoZWNrcG9pbnRfd3JpdGVzOiAlbHUuIFBlbmRpbmcgbG9nIGZsdXNoIHdyaXRlczogJWx1LgBXYWl0aW5nIGZvciAlbHUgYnVmZmVyIHBhZ2UgSS9PcyB0byBjb21wbGV0ZQBNeVNRTCBoYXMgcmVxdWVzdGVkIGEgdmVyeSBmYXN0IHNodXRkb3duIHdpdGhvdXQgZmx1c2hpbmcgdGhlIElubm9EQiBidWZmZXIgcG9vbCB0byBkYXRhIGZpbGVzLiBBdCB0aGUgbmV4dCBteXNxbGQgc3RhcnR1cCBJbm5vREIgd2lsbCBkbyBhIGNyYXNoIHJlY292ZXJ5IQBCYWNrZ3JvdW5kIHRocmVhZCAlcyB3b2tlIHVwIGR1cmluZyBzaHV0ZG93bgBXYWl0aW5nIGZvciBhcmNoaXZlciB0byBmaW5pc2ggYXJjaGl2aW5nIHBhZ2UgYW5kIGxvZwBCYWNrZ3JvdW5kIHRocmVhZCAlcyB3b2tlIHVwIGR1cmluZyBzaHV0ZG93bgBXYWl0aW5nIGZvciBkaXJ0eSBidWZmZXIgcGFnZXMgdG8gYmUgZmx1c2hlZABMb2cgc2VxdWVuY2UgbnVtYmVyIGF0IHNodXRkb3duICVsbHUgaXMgbG93ZXIgdGhhbiBhdCBzdGFydHVwICVsbHUhAFdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGZpbmlzaCBhcmNoaXZpbmcgcGFnZSBhbmQgbG9nACMjIyMjIyMjIyMjIyMjIyBDT1JSVVBUIExPRyBSRUNPUkQgRk9VTkQgIyMjIyMjIyMjIyMjIyMjAExvZyByZWNvcmQgdHlwZSAlZCwgcGFnZSAlbHU6JWx1LiBMb2cgcGFyc2luZyBwcm9jZWVkZWQgc3VjY2Vzc2Z1bGx5IHVwIHRvICVsbHUuIFByZXZpb3VzIGxvZyByZWNvcmQgdHlwZSAlZCwgaXMgbXVsdGkgJWxsdSBSZWN2IG9mZnNldCAlemQsIHByZXYgJWxsdQBIZXggZHVtcCBzdGFydGluZyAlbGx1IGJ5dGVzIGJlZm9yZSBhbmQgZW5kaW5nICVsbHUgYnl0ZXMgYWZ0ZXIgdGhlIGNvcnJ1cHRlZCByZWNvcmQ6AFNldCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgdG8gaWdub3JlIHRoaXMgZXJyb3IuAFRoZSByZWRvIGxvZyBmaWxlIG1heSBoYXZlIGJlZW4gY29ycnVwdCBhbmQgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbG9nIHNjYW4gZGlkIG5vdCBwcm9jZWVkIGZhciBlbm91Z2ggaW4gcmVjb3ZlcnkhIFBsZWFzZSBydW4gQ0hFQ0sgVEFCTEUgb24geW91ciBJbm5vREIgdGFibGVzIHRvIGNoZWNrIHRoYXQgdGhleSBhcmUgb2shIElmIG15c3FsZCBjcmFzaGVzIGFmdGVyIHRoaXMgcmVjb3Zlcnk7ICVzACVsbHUgcGFnZXMgd2l0aCBsb2cgcmVjb3JkcyB3ZXJlIGxlZnQgdW5wcm9jZXNzZWQhAFVwZ3JhZGUgYWZ0ZXIgYSBjcmFzaCBpcyBub3Qgc3VwcG9ydGVkLiBUaGlzIHJlZG8gbG9nIHdhcyBjcmVhdGVkIHdpdGggJXMsIGFuZCBpdCBhcHBlYXJzIGNvcnJ1cHRlZC4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGF0ICVzAFVwZ3JhZGUgaXMgbm90IHN1cHBvcnRlZCBhZnRlciBhIGNyYXNoIG9yIHNodXRkb3duIHdpdGggaW5ub2RiX2Zhc3Rfc2h1dGRvd24gPSAyLiBUaGlzIHJlZG8gbG9nIHdhcyBjcmVhdGVkIHdpdGggJXMsIGFuZCBpdCBhcHBlYXJzIGxvZ2ljYWxseSBub24gZW1wdHkuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCAlcwAlcwAlcwBSZWRvIGxvZyBmb3JtYXQgaXMgdiVsdS4gVGhlIHJlZG8gbG9nIHdhcyBjcmVhdGVkIGJlZm9yZSBNeVNRTCA4LjAuMzAuAFVua25vd24gcmVkbyBsb2cgZm9ybWF0ICh2JWx1KSBpbiBmaWxlICVzLiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgYXQgJXMATm8gdmFsaWQgY2hlY2twb2ludCBmb3VuZCAoY29ycnVwdGVkIHJlZG8gbG9nKS4gWW91IGNhbiB0cnkgLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9NiBhcyBhIGxhc3QgcmVzb3J0LgBBcHBseWluZyBhIGJhdGNoIG9mICVsbHUgcmVkbyBsb2cgcmVjb3JkcyAuLi4AJXMAJXMAQXBwbHkgYmF0Y2ggY29tcGxldGVkIQAlcwAlcwAlcwAlcwAlcwAlcwBBbiBvcHRpbWl6ZWQod2l0aG91dCByZWRvIGxvZ2dpbmcpIERETCBvcGVyYXRpb24gaGFzIGJlZW4gcGVyZm9ybWVkLiBBbGwgbW9kaWZpZWQgcGFnZXMgbWF5IG5vdCBoYXZlIGJlZW4gZmx1c2hlZCB0byB0aGUgZGlzayB5ZXQuClRoaXMgb2ZmbGluZSBiYWNrdXAgbWF5IG5vdCBiZSBjb25zaXN0ZW50AEV4dGVuZGluZyB0YWJsZXNwYWNlIDogJWx1IHNwYWNlIG5hbWU6ICVzIHRvIG5ldyBzaXplOiAlbHUgcGFnZXMgZHVyaW5nIHJlY292ZXJ5LgBDb3VsZCBub3QgZXh0ZW5kIHRhYmxlc3BhY2U6ICVsdSBzcGFjZSBuYW1lOiAlcyB0byBuZXcgc2l6ZTogJWx1IHBhZ2VzIGR1cmluZyByZWNvdmVyeS4ATG9nIGJsb2NrICVsdSBhdCBsc24gJWxsdSBoYXMgdmFsaWQgaGVhZGVyLCBidXQgY2hlY2tzdW0gZmllbGQgY29udGFpbnMgJWx1LCBzaG91bGQgYmUgJWx1LgBSZWNvdmVyeSBza2lwcGVkLCAtLWlubm9kYi1yZWFkLW9ubHkgc2V0IQBMb2cgc2NhbiBwcm9ncmVzc2VkIHBhc3QgdGhlIGNoZWNrcG9pbnQgTFNOICVsbHUuAExvZyBwYXJzaW5nIGJ1ZmZlciBvdmVyZmxvdy4gUmVjb3ZlcnkgbWF5IGhhdmUgZmFpbGVkISBQbGVhc2Ugc2V0IGxvZ19idWZmZXJfc2l6ZSB0byBhIHZhbHVlIGhpZ2hlciB0aGFuICVsdS4AU2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeSB0byBpZ25vcmUgdGhpcyBlcnJvci4ARG9pbmcgcmVjb3Zlcnk6IHNjYW5uZWQgdXAgdG8gbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1AERhdGFiYXNlIHdhcyBub3Qgc2h1dGRvd24gbm9ybWFsbHkhAFN0YXJ0aW5nIGNyYXNoIHJlY292ZXJ5LgBUaGUgdXNlciBoYXMgc2V0IFNSVl9GT1JDRV9OT19MT0dfUkVETyBvbiwgc2tpcHBpbmcgbG9nIHJlZG8AQ2Fubm90IHJlc3RvcmUgZnJvbSBteXNxbGJhY2t1cCwgSW5ub0RCIHJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUhAFRoZSByZWRvIGxvZyBmaWxlIHdhcyBjcmVhdGVkIGJ5IG15c3FsYmFja3VwIC0tYXBwbHktbG9nIGF0ICVzLiBUaGUgZm9sbG93aW5nIGNyYXNoIHJlY292ZXJ5IGlzIHBhcnQgb2YgYSBub3JtYWwgcmVzdG9yZS4AT3BlbmluZyBjbG9uZWQgZGF0YWJhc2UAUmVkbyBsb2cgaXMgZnJvbSBhbiBlYXJsaWVyIHZlcnNpb24sIHYlbHUuAFJlZG8gbG9nIGZvcm1hdCB2JWx1IG5vdCBzdXBwb3J0ZWQuIEN1cnJlbnQgc3VwcG9ydGVkIGZvcm1hdCBpcyB2JWx1LgBBcmUgeW91IHN1cmUgeW91IGFyZSB1c2luZyB0aGUgcmlnaHQgcmVkbyBsb2cgZmlsZXMgdG8gc3RhcnQgdXAgdGhlIGRhdGFiYXNlPyBMb2cgc2VxdWVuY2UgbnVtYmVyIGluIHRoZSByZWRvIGxvZyBmaWxlcyBpcyAlbGx1LCBsZXNzIHRoYW4gdGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgaW4gdGhlIGZpcnN0IHN5c3RlbSB0YWJsZXNwYWNlIGZpbGUgaGVhZGVyLCAlbGx1LgBUaGUgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1IGluIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSBkb2VzIG5vdCBtYXRjaCB0aGUgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1IGluIHRoZSByZWRvIGxvZyBmaWxlcyEAQ2FuJ3QgaW5pdGlhdGUgZGF0YWJhc2UgcmVjb3ZlcnksIHJ1bm5pbmcgaW4gcmVhZC1vbmx5LW1vZGUuAFdlIHNjYW5uZWQgdGhlIGxvZyB1cCB0byAlbGx1LiBBIGNoZWNrcG9pbnQgd2FzIGF0ICVsbHUgYW5kIHRoZSBtYXhpbXVtIExTTiBvbiBhIGRhdGFiYXNlIHBhZ2Ugd2FzICVsbHUuIEl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGRhdGFiYXNlIGlzIG5vdyBjb3JydXB0IQBXYWl0aW5nIGZvciByZWN2X3dyaXRlciB0byBmaW5pc2ggZmx1c2hpbmcgb2YgYnVmZmVyIHBvb2wAUmVjb3ZlcnkgcGFyc2luZyBidWZmZXIgZXh0ZW5kZWQgdG8gJXp1LgBPdXQgb2YgbWVtb3J5IHdoaWxlIHJlc2l6aW5nIHJlY292ZXJ5IHBhcnNpbmcgYnVmZmVyLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBDYW4ndCBlbmNyeXB0IGRhdGEgb2YgcmVkbyBsb2cAJXMAJXMARGVjcnlwdGlvbiBvZiByZWRvIGxvZyBibG9jayBhdCBvZmZzZXQgJWxsdSBpbiBmaWxlICVzIGZhaWxlZCBiZWNhdXNlIHRoZXJlJ3Mgbm8ga2V5cmluZyBjb25maWd1cmVkACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAE9sZCBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUgd2FzIGdyZWF0ZXIgdGhhbiB0aGUgbmV3IGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdS4gUGxlYXNlIHN1Ym1pdCBhIGJ1ZyByZXBvcnQgdG8gaHR0cDovL2J1Z3MubXlzcWwuY29tAFNlbWFwaG9yZSB3YWl0IGhhcyBsYXN0ZWQgPiAlbGx1IHNlY29uZHMuIFdlIGludGVudGlvbmFsbHkgY3Jhc2ggdGhlIHNlcnZlciBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgaHVuZy4AV2FpdGluZyBmb3IgJWxsdSB0YWJsZShzKSB0byBiZSBkcm9wcGVkAFdhaXRpbmcgZm9yIGNoYW5nZSBidWZmZXIgbWVyZ2UgdG8gY29tcGxldGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGNoYW5nZSBidWZmZXIganVzdCBtZXJnZWQ6ICVsbHUAQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZShzKSB0byBiZSBlbmNyeXB0ZWQgc2luY2UgLS1pbm5vZGJfdW5kb190YWJsZXNwYWNlcz0wLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlKHMpIHRvIGJlIGVuY3J5cHRlZCBpbiByZWFkLW9ubHktbW9kZS4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZSAnJXMnIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZSAnJXMnIHRvIGJlIGVuY3J5cHRlZC4gRmFpbGVkIHRvIHdyaXRlIGhlYWRlciBwYWdlLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlICclcycgdG8gYmUgZW5jcnlwdGVkLiBFcnJvciAlZCAtICVzAEVuY3J5cHRpb24gaXMgZW5hYmxlZCBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuAENhbid0IHJvdGF0ZSBlbmNyeXB0aW9uIG9uIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBFbmNyeXB0aW9uIGlzIGVuYWJsZWQgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBvc19maWxlX2dldF9zdGF0dXMoKSBmYWlsZWQgb24gJyVzJy4gQ2FuJ3QgZGV0ZXJtaW5lIGZpbGUgcGVybWlzc2lvbnMuACVzIGNhbid0IGJlIG9wZW5lZCBpbiAlcyBtb2RlLgAnJXMnIG5vdCBhIHJlZ3VsYXIgZmlsZS4AQ2Fubm90IGNyZWF0ZSAlcwBTZXR0aW5nIGZpbGUgJXMgc2l6ZSB0byAlbGx1IE1CLiBQcm9ncmVzcyA6ICV1JSUAQ2Fubm90IHJlc2l6ZSByZWRvIGxvZyBmaWxlICVzIHRvICVsbHUgTUIgKCVzKQBDYW5ub3QgY3JlYXRlIHJlZG8gbG9nIGZpbGVzIGluIHJlYWQtb25seSBtb2RlICgtLWlubm9kYi1yZWFkLW9ubHkpLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGJ1dCB0aGUga2V5cmluZyBpcyBub3QgbG9hZGVkLgBGYWlsZWQgdG8gY3JlYXRlIHJlZG8gbG9nIGZpbGUgJXMgKGVycm9yOiAlZCkgZm9yIHN0YXJ0IExTTiAlbGx1AFJlbmFtaW5nIGxvZyBmaWxlICVzIHRvICVzAE5ldyByZWRvIGxvZyBmaWxlcyBjcmVhdGVkLCBMU049JWxsdQBVbmFibGUgdG8gb3BlbiAnJXMnIChlcnJvcjogJWQpLgBDYW5ub3QgY3JlYXRlIGNvbnN0cnVjdGlvbiBsb2cgZmlsZSAnJXMnIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AQ3JlYXRpbmcgVU5ETyBUYWJsZXNwYWNlICVzAFNldHRpbmcgZmlsZSAlcyBzaXplIHRvICVsbHUgTUIAUGh5c2ljYWxseSB3cml0aW5nIHRoZSBmaWxlIGZ1bGwARXJyb3IgaW4gY3JlYXRpbmcgJXM6IHByb2JhYmx5IG91dCBvZiBkaXNrIHNwYWNlAENhbid0IHNldCBlbmNyeXB0aW9uIG1ldGFkYXRhIGZvciBzcGFjZSAlcwBDYW5ub3QgcmVhZCBmaXJzdCBwYWdlIG9mICclcycgLSAlcwBVbmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdSB3YXMgYmVpbmcgdHJ1bmNhdGVkIHdoZW4gbXlzcWxkIHF1aXQuAENhbm5vdCByZWNvdmVyIGEgdHJ1bmNhdGVkIHVuZG8gdGFibGVzcGFjZSBpbiByZWFkLW9ubHkgbW9kZQBSZWNvbnN0cnVjdGluZyB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4AQ2Fubm90IGNyZWF0ZSAlcyBiZWNhdXNlICVzIGFscmVhZHkgdXNlcyBTcGFjZSBJRD0lbHUhIERpZCB5b3UgY2hhbmdlIGlubm9kYl91bmRvX2RpcmVjdG9yeT8AVU5ETyB0YWJsZXNwYWNlICVzIG11c3QgYmUgJXMARXJyb3IgY3JlYXRpbmcgZmlsZSBmb3IgJXMARXJyb3IgcmVhZGluZyBlbmNyeXB0aW9uIGZvciAlcwBVbmFibGUgdG8gb3BlbiB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdQBPcGVuZWQgJWxsdSBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzLgBDYW5ub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZXMgc2luY2UgaW5ub2RiXyVzIGhhcyBiZWVuIHNldC4gVXNpbmcgJWxsdSBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzLgBDYW5ub3QgY29udGludWUgSW5ub0RCIHN0YXJ0dXAgaW4gJXMgbW9kZSBiZWNhdXNlIHRoZXJlIGFyZSBubyBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzIGZvdW5kLgBDb3VsZCBub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBFcnJvciAlZCAtICVzIC0gb3BlbmluZyBuZXdseSBjcmVhdGVkIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBDcmVhdGVkICVsbHUgdW5kbyB0YWJsZXNwYWNlcy4AVW5hYmxlIHRvIGNyZWF0ZSBlbmNyeXB0ZWQgdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuIHBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZyBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkARW5jcnlwdGlvbiBpcyBlbmFibGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4AVW5hYmxlIHRvIGluaXRpYWxpemUgdGhlIGhlYWRlciBwYWdlIGluIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LgBDYW5ub3QgZGVsZXRlIG9sZCB1bmRvIHRhYmxlc3BhY2VzIGJlY2F1c2UgdGhleSBjb250YWluIHVuZG8gbG9ncyBmb3IgWEEgUFJFUEFSRUQgdHJhbnNhY3Rpb25zLgBVcGdyYWRpbmcgJXp1IGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMgdGhhdCB3ZXJlIHRyYWNrZWQgaW4gdGhlIHN5c3RlbSB0YWJsZXNwYWNlIHRvICVsdSBuZXcgaW5kZXBlbmRlbnQgdW5kbyB0YWJsZXNwYWNlcy4ARGVsZXRpbmcgJWxsdSBuZXcgaW5kZXBlbmRlbnQgdW5kbyB0YWJsZXNwYWNlcyB0aGF0IHdlIGp1c3QgY3JlYXRlZC4AV2FpdGluZyBmb3IgcHVyZ2UgdG8gc3RhcnQAQ3JlYXRpbmcgc2hhcmVkIHRhYmxlc3BhY2UgZm9yIHRlbXBvcmFyeSB0YWJsZXMAVGhlICVzIGRhdGEgZmlsZSBtdXN0IGJlIHdyaXRhYmxlIQBDb3VsZCBub3QgY3JlYXRlIHRoZSBzaGFyZWQgJXMuAFVuYWJsZSB0byBjcmVhdGUgdGhlIHNoYXJlZCAlcy4AVGhlICVzIGRhdGEgZmlsZSBjYW5ub3QgYmUgcmUtb3BlbmVkIGFmdGVyIGNoZWNrX2ZpbGVfc3BlYygpIHN1Y2NlZWRlZCEAJWQgdGhyZWFkcyBjcmVhdGVkIGJ5IElubm9EQiBoYWQgbm90IGV4aXRlZCBhdCBzaHV0ZG93biEASW5ub0RCIERhdGFiYXNlIGNyZWF0aW9uIHdhcyBhYm9ydGVkICVzd2l0aCBlcnJvciAlcy4gWW91IG1heSBuZWVkIHRvIGRlbGV0ZSB0aGUgaWJkYXRhMSBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gc3RhcnQgdXAgYWdhaW4uAFBsdWdpbiBpbml0aWFsaXphdGlvbiBhYm9ydGVkICVzd2l0aCBlcnJvciAlcy4AV2FpdGluZyBmb3IgJXp1IGJ1ZmZlciBwYWdlIEkvT3MgdG8gY29tcGxldGUuAFBVTkNIIEhPTEUgc3VwcG9ydCBhdmFpbGFibGUAUFVOQ0ggSE9MRSBzdXBwb3J0IG5vdCBhdmFpbGFibGUAU2l6ZSBvZiBJbm5vREIncyB1bGludCBpcyAlenUgYnV0IHNpemUgb2Ygdm9pZCogaXMgJXp1LiBUaGUgc2l6ZXMgc2hvdWxkIGJlIHRoZSBzYW1lIHNvIHRoYXQgb24gYSA2NC1iaXQgcGxhdGZvcm1zIHlvdSBjYW4gYWxsb2NhdGUgbW9yZSB0aGFuIDQgR0Igb2YgbWVtb3J5LgBEYXRhYmFzZSB1cGdyYWRlIGNhbm5vdCBiZSBhY2NvbXBsaXNoZWQgaW4gcmVhZC1vbmx5IG1vZGUuAERhdGFiYXNlIHVwZ3JhZGUgY2Fubm90IGJlIGFjY29tcGxpc2hlZCB3aXRoIGlubm9kYl9mb3JjZV9yZWNvdmVyeSA+IDAAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMATXlTUUwgd2FzIGJ1aWx0IHdpdGhvdXQgYSBtZW1vcnkgYmFycmllciBjYXBhYmlsaXR5IG9uIHRoaXMgYXJjaGl0ZWN0dXJlLCB3aGljaCBtaWdodCBhbGxvdyBhIG11dGV4L3J3X2xvY2sgdmlvbGF0aW9uIHVuZGVyIGhpZ2ggdGhyZWFkIGNvbmN1cnJlbmN5LiBUaGlzIG1heSBjYXVzZSBhIGhhbmcuAENvbXByZXNzZWQgdGFibGVzIHVzZSB6bGliICVzACVzAFN0YXJ0dXAgY2FsbGVkIHNlY29uZCB0aW1lIGR1cmluZyB0aGUgcHJvY2VzcyBsaWZldGltZS4gSW4gdGhlIE15U1FMIEVtYmVkZGVkIFNlcnZlciBMaWJyYXJ5IHlvdSBjYW5ub3QgY2FsbCBzZXJ2ZXJfaW5pdCgpIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgcHJvY2VzcyBsaWZldGltZS4AJXMAVW5hYmxlIHRvIGNyZWF0ZSBtb25pdG9yIGZpbGUgJXM6ICVzAERpc2FibGluZyBiYWNrZ3JvdW5kIGlidWYgSU8gcmVhZCB0aHJlYWRzLgBDYW5ub3QgaW5pdGlhbGl6ZSBBSU8gc3ViLXN5c3RlbQBJbml0aWFsaXppbmcgYnVmZmVyIHBvb2wsIHRvdGFsIHNpemUgPSAlbGYlYywgaW5zdGFuY2VzID0gJWx1LCBjaHVuayBzaXplID0lbGYlYyAAQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBwb29sAENvbXBsZXRlZCBpbml0aWFsaXphdGlvbiBvZiBidWZmZXIgcG9vbABTbWFsbCBidWZmZXIgcG9vbCBzaXplICglbGx1TSksIHRoZSBmbHN0X3ZhbGlkYXRlKCkgZGVidWcgZnVuY3Rpb24gY2FuIGNhdXNlIGEgZGVhZGxvY2sgaWYgdGhlIGJ1ZmZlciBwb29sIGZpbGxzIHVwLgBDb3VsZCBub3Qgb3BlbiBvciBjcmVhdGUgdGhlIHN5c3RlbSB0YWJsZXNwYWNlLiBJZiB5b3UgdHJpZWQgdG8gYWRkIG5ldyBkYXRhIGZpbGVzIHRvIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSwgYW5kIGl0IGZhaWxlZCBoZXJlLCB5b3Ugc2hvdWxkIG5vdyBlZGl0IGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgYmFjayB0byB3aGF0IGl0IHdhcywgYW5kIHJlbW92ZSB0aGUgbmV3IGliZGF0YSBmaWxlcyBJbm5vREIgY3JlYXRlZCBpbiB0aGlzIGZhaWxlZCBhdHRlbXB0LiBJbm5vREIgb25seSB3cm90ZSB0aG9zZSBmaWxlcyBmdWxsIG9mIHplcm9zLCBidXQgZGlkIG5vdCB5ZXQgdXNlIHRoZW0gaW4gYW55IHdheS4gQnV0IGJlIGNhcmVmdWw6IGRvIG5vdCByZW1vdmUgb2xkIGRhdGEgZmlsZXMgd2hpY2ggY29udGFpbiB5b3VyIHByZWNpb3VzIGRhdGEhAENhbm5vdCBjcmVhdGUgcmVkbyBsb2cgZmlsZXMgYmVjYXVzZSBkYXRhIGZpbGVzIGFyZSBjb3JydXB0IG9yIHRoZSBkYXRhYmFzZSB3YXMgbm90IHNodXQgZG93biBjbGVhbmx5IGFmdGVyIGNyZWF0aW5nIHRoZSBkYXRhIGZpbGVzLgBPbmx5IG9uZSByZWRvIGxvZyBmaWxlIGZvdW5kAFRoZSByZWRvIGxvZyBmaWxlICVzIHNpemUgJWxsdSBpcyBub3QgYSBtdWx0aXBsZSBvZiBpbm5vZGJfcGFnZV9zaXplAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIG9mIGRpZmZlcmVudCBzaXplICVsbHUgYnl0ZXMgdGhhbiBvdGhlciBsb2cgZmlsZXMgJWxsdSBieXRlcyEAVXNlIC0taW5ub2RiLWRpcmVjdG9yaWVzIHRvIGZpbmQgdGhlIHRhYmxlc3BhY2UgZmlsZXMuIElmIHRoYXQgZmFpbHMgdGhlbiB1c2UgLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9MSB0byBpZ25vcmUgdGhpcyBhbmQgdG8gcGVybWFuZW50bHkgbG9zZSBhbGwgY2hhbmdlcyB0byB0aGUgbWlzc2luZyB0YWJsZXNwYWNlKHMpAFRoZSByZWRvIGxvZyBmaWxlIG1heSBoYXZlIGJlZW4gY29ycnVwdCBhbmQgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbG9nIHNjYW4gb3IgcGFyc2luZyBkaWQgbm90IHByb2NlZWQgZmFyIGVub3VnaCBpbiByZWNvdmVyeS4gUGxlYXNlIHJ1biBDSEVDSyBUQUJMRSBvbiB5b3VyIElubm9EQiB0YWJsZXMgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBvayEgSXQgbWF5IGJlIHNhZmVzdCB0byByZWNvdmVyIHlvdXIgSW5ub0RCIGRhdGFiYXNlIGZyb20gYSBiYWNrdXAhAENhbm5vdCByZXNpemUgcmVkbyBsb2cgZmlsZXMgaW4gcmVhZC1vbmx5IG1vZGUuIFByb3ZpZGUgLS1pbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgPj0gJWxsdU1CIG9yIHN0YXJ0IHdpdGhvdXQgLS1pbm5vZGItcmVhZC1vbmx5LgBDYW5ub3Qgb3BlbiBERCB0YWJsZXNwYWNlLgBTdGFydGluZyB0byBkZWxldGUgYW5kIHJld3JpdGUgcmVkbyBsb2cgZmlsZXMuAFVuZG8gZnJvbSA1LjcgZm91bmQuIEl0IHdpbGwgYmUgcHVyZ2VkACVzACVzAFRhYmxlc3BhY2Ugc2l6ZSBzdG9yZWQgaW4gaGVhZGVyIGlzICVsdSBwYWdlcywgYnV0IHRoZSBzdW0gb2YgZGF0YSBmaWxlIHNpemVzIGlzICVsdSBwYWdlcwBDYW5ub3Qgc3RhcnQgSW5ub0RCLiBUaGUgdGFpbCBvZiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgaXMgbWlzc2luZy4gSGF2ZSB5b3UgZWRpdGVkIGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgaW4gYW4gaW5hcHByb3ByaWF0ZSB3YXksIHJlbW92aW5nIGliZGF0YSBmaWxlcyBmcm9tIHRoZXJlPyBZb3UgY2FuIHNldCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9MSBpbiBteS5jbmYgdG8gZm9yY2UgYSBzdGFydHVwIGlmIHlvdSBhcmUgdHJ5aW5nIHRvIHJlY292ZXIgYSBiYWRseSBjb3JydXB0IGRhdGFiYXNlLgBUYWJsZXNwYWNlIHNpemUgc3RvcmVkIGluIGhlYWRlciBpcyAlbHUgcGFnZXMsIGJ1dCB0aGUgc3VtIG9mIGRhdGEgZmlsZSBzaXplcyBpcyBvbmx5ICVsdSBwYWdlcwBDYW5ub3Qgc3RhcnQgSW5ub0RCLiBUaGUgdGFpbCBvZiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgaXMgbWlzc2luZy4gSGF2ZSB5b3UgZWRpdGVkIGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgaW4gYW4gSW5ub0RCOiBpbmFwcHJvcHJpYXRlIHdheSwgcmVtb3ZpbmcgaWJkYXRhIGZpbGVzIGZyb20gdGhlcmU/IFlvdSBjYW4gc2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeT0xIGluIG15LmNuZiB0byBmb3JjZSBJbm5vREI6IGEgc3RhcnR1cCBpZiB5b3UgYXJlIHRyeWluZyB0byByZWNvdmVyIGEgYmFkbHkgY29ycnVwdCBkYXRhYmFzZS4AJXMgc3RhcnRlZDsgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1AFdhaXRpbmcgZm9yIHB1cmdlIHRvIGNvbXBsZXRlAFdhaXRpbmcgZm9yIGRpY3Rfc3RhdHNfdGhyZWFkIHRvIGV4aXQAUXVlcnkgY291bnRlciBzaG93cyAlbGxkIHF1ZXJpZXMgc3RpbGwgaW5zaWRlIElubm9EQiBhdCBzaHV0ZG93bgBTaHV0ZG93biBjb21wbGV0ZWQ7IGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdQBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBVbmFibGUgdG8gcmVhZCB0aGUgZXhpc3RpbmcgdW5kbyB0cnVuY2F0ZSBsb2cgZmlsZSAnJXMnLiBUaGUgZXJyb3IgaXMgJXMAVW5kbyB0YWJsZXNwYWNlICVzIGlzIG1hcmtlZCBmb3IgdHJ1bmNhdGUAJXMAVHJ1bmNhdGluZyBVTkRPIHRhYmxlc3BhY2UgJXMAJXMAQ2Fubm90IGNyZWF0ZSB0cnVuY2F0ZSBsb2cgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgAlcwBGYWlsZWQgdG8gdHJ1bmNhdGUgdW5kbyB0YWJsZXNwYWNlICclcycuACVzAENvbXBsZXRlZCB0cnVuY2F0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFJvbGxiYWNrIG9mIG5vbi1wcmVwYXJlZCB0cmFuc2FjdGlvbnMgY29tcGxldGVkACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEJsb2NrZWQgSGlnaCBQcmlvcml0eSBUcmFuc2FjdGlvbiAoSUQgJWxsdSwgVGhyZWFkIElEICVzKSBraWxsZWQgdGhlIGJsb2NraW5nIHRyYW5zYWN0aW9uIChJRCAlbGx1IC0gJXMpIGJ5IHJvbGxpbmcgaXQgYmFjay4AJXMAZ2V0dGltZW9mZGF5KCkgZmFpbGVkOiAlcwBDYW4ndCBjcmVhdGUgVU5ETyB0YWJsZXNwYWNlICVzICVzACVzAFJlc2l6aW5nIHJlZG8gbG9nIGZyb20gJWxsdU0gdG8gJWxsdU0gKExTTj0lbGx1KSBzeW5jaHJvbm91c2x5LiBJZiB0aGlzIHRha2VzIHRvbyBsb25nLCBjb25zaWRlciBzdGFydGluZyB0aGUgc2VydmVyIHdpdGggbGFyZ2UgLS1pbm5vZGJfcmVkb19sb2dfY2FwYWNpdHksIGFuZCByZXNpemluZyB0aGUgcmVkbyBsb2cgb25saW5lIHVzaW5nIFNFVC4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAT3V0IG9mIHNwYWNlIGluIHRoZSByZWRvIGxvZy4gQ2hlY2twb2ludCBMU046ICVsbHUuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgAlcwBMb2cgd3JpdGVyIHdhaXRlZCB0b28gbG9uZyBmb3IgcmVkby1hcmNoaXZlciB0byBhZHZhbmNlICgxIHNlY29uZCkuIFRoZXJlIGFyZSB1bmFyY2hpdmVkOiAlbGx1IGJ5dGVzLiBBcmNoaXZlciBMU046ICVsbHUuIEFib3J0ZWQgdGhlIHJlZG8tYXJjaGl2ZXIuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBMb2cgd3JpdGVyIGlzIHdhaXRpbmcgZm9yIHJlZG8tYXJjaGl2ZXIgdG8gY2F0Y2ggdXAgdW5hcmNoaXZlZDogJWxsdSBieXRlcy4gQXJjaGl2ZXIgTFNOOiAlbGx1LiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AJXMAJXMAJXMAJXMAQ2FuJ3Qgc2V0IHJlZG8gbG9nIGZpbGVzIHRvIGJlIGVuY3J5cHRlZCBpbiByZWFkLW9ubHkgbW9kZS4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIGZpbGVzIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQuAFdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGZpbmlzaCBhcmNoaXZpbmcgcGFnZSBhbmQgbG9nAFN0YXJ0aW5nIHNodXRkb3duLi4uAFdhaXRpbmcgZm9yICVzIHRvIGV4aXQuAFdhaXRpbmcgZm9yIHJvbGxiYWNrIG9mICV6dSByZWNvdmVyZWQgdHJhbnNhY3Rpb25zLCBiZWZvcmUgc2h1dGRvd24uAFdhaXRpbmcgZm9yIG1hc3RlciB0aHJlYWQgdG8gYmUgc3VzcGVuZGVkLgBXYWl0aW5nIGZvciBwYWdlX2NsZWFuZXIgdG8gZmluaXNoIGZsdXNoaW5nIG9mIGJ1ZmZlciBwb29sLgBTaHV0ZG93biBpcyB3YWl0aW5nIGZvciAlenUgYnVmZmVyIHBhZ2UgSS9PcyB0byBjb21wbGV0ZS4ATXlTUUwgaGFzIHJlcXVlc3RlZCBhIHZlcnkgZmFzdCBzaHV0ZG93biB3aXRob3V0IGZsdXNoaW5nIHRoZSBJbm5vREIgYnVmZmVyIHBvb2wgdG8gZGF0YSBmaWxlcy4gQXQgdGhlIG5leHQgbXlzcWxkIHN0YXJ0dXAgSW5ub0RCIHdpbGwgZG8gYSBjcmFzaCByZWNvdmVyeSEAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMASW52YWxpZCByZWRvIGxvZyBoZWFkZXIgY2hlY2tzdW0uAFVuc3VwcG9ydGVkIHJlZG8gbG9nIGZvcm1hdCAodiVsdSkuIFRoZSByZWRvIGxvZyB3YXMgY3JlYXRlZCBiZWZvcmUgTXlTUUwgNS43LjkAJXMAQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4gVGhlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eT0lbGx1TSBpcyB0b28gc21hbGwgZm9yIHRoZSBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5PSVsdS4gVGhlIGNhcGFjaXR5IG9mIHJlZG8gc2hvdWxkIGJlID49ICVsbHVNLiBUbyBnZXQgbXlzcWxkIHJ1bm5pbmcsIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IHRvIGEgc21hbGxlciB2YWx1ZSBvciBpbmNyZWFzZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuICVzACVzACVzAFVzZXIgaGFzIHNldCBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5IHRvICVsdS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgU1FMIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgU1FMIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBJTyB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIElPIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogVXBkYXRlcyB0byBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgY2FuIG9ubHkgYmUgZG9uZSBpbiBlaXRoZXIgYXV0b2NvbW1pdHRlZCBzdGF0ZW1lbnRzIG9yIHNpbmdsZS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLCBhbmQgbmV2ZXIgaW4gdGhlIHNhbWUgc3RhdGVtZW50IGFzIHVwZGF0ZXMgdG8gdHJhbnNhY3Rpb25hbCB0YWJsZXMuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEFCTEUgLi4uIFNFTEVDVC4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIG91dHNpZGUgdHJhbnNhY3Rpb25hbCBjb250ZXh0LiAgVGhlc2Ugc3RhdGVtZW50cyBhcmUgYWxzbyBub3QgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIG9yIHRyaWdnZXIgYmVjYXVzZSBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBhbHNvIGNvbnNpZGVyZWQgdG8gYmUgbXVsdGktc3RhdGVtZW50IHRyYW5zYWN0aW9ucy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIGlnbm9yZWQgYW5kIHVwZGF0ZXMgd2lsbCBiZSB3cml0dGVuIGluIGZ1bGwgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGxvZ19iaW5fdXNlX3YxX3Jvd19ldmVudHM9MSB3aWxsIGJlIGlnbm9yZWQgYW5kIHJvdyBldmVudHMgd2lsbCBiZSB3cml0dGVuIGluIG5ldyBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIHVzZWQgb25seSBmb3IgdGhlIGFmdGVyLWltYWdlLiBGdWxsIHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gdGhlIGJlZm9yZS1pbWFnZSwgc28gdGhlIHNhdmluZyBpbiBkaXNrIHNwYWNlIGR1ZSB0byBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnMgaXMgbGltaXRlZCB0byBsZXNzIHRoYW4gNTAlJS4AQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHMpLgAlczogTm9ybWFsIHNodXRkb3duLgBDYW4gbm90IHBlcmZvcm0ga2V5cmluZyBtaWdyYXRpb24gOiAlcy4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIG9wdGlvbiB2YWx1ZSAnJXUnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJXUnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLiBJZiB0aGVyZSBpcyBleGlzdGluZyBkYXRhIG9uIG1lbWJlciwgaXQgbWF5IGJlIGluY29tcGF0aWJsZSB3aXRoIGdyb3VwIGlmIGl0IHdhcyBjcmVhdGVkIHdpdGggYSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHZhbHVlIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cC4AQW4gb3V0LW9mLW1lbW9yeSBlcnJvciBvY2N1cnJlZCB3aGlsZSBzYXZpbmcgdGhlIHNldCBvZiBHVElEcyBmcm9tIHRoZSBsYXN0IGJpbmFyeSBsb2cgaW50byB0aGUgbXlzcWwuZ3RpZF9leGVjdXRlZCB0YWJsZQBUaGUgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBzZXR0aW5nIGZvciB0aGUgZGF0YSBkaWN0aW9uYXJ5IHdhcyBub3QgZm91bmQuIFN0YXJ0aW5nIHRoZSBzZXJ2ZXIgdXNpbmcgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9ICcldScuAEEgY2FwdHVyZSBncm91cCBoYXMgYW4gaW52YWxpZCBuYW1lLgBWYXJpYWJsZSAnJS0uNjRzJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclLS4yMDBzJwBTdG9wcGluZyBzZXJ2aWNlcyBmYWlsZWQgd2l0aCBlcnJvciAiJXMiAFF1ZXJ5IGNhdXNlZCBkaWZmZXJlbnQgZXJyb3JzIG9uIHNvdXJjZSBhbmQgcmVwbGljYS4gRXJyb3Igb24gc291cmNlOiBtZXNzYWdlIChmb3JtYXQpPSclcycgZXJyb3IgY29kZT0lZDsgRXJyb3Igb24gcmVwbGljYTphY3R1YWwgbWVzc2FnZT0nJXMnLCBlcnJvciBjb2RlPSVkLiBEZWZhdWx0IGRhdGFiYXNlOiclcycuIFF1ZXJ5OiclcycAR290IGZhdGFsIGVycm9yICVkIGZyb20gc291cmNlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYmluYXJ5IGxvZzogJyUtLjUxMnMnAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIG5ldHdvcmsuAEZhaWxlZCB0byBjcmVhdGUgJXMARmF0YWwgZXJyb3I6ICVzAFVuZXhwZWN0ZWQgc291cmNlJ3MgaGVhcnRiZWF0IGRhdGE6ICVzAFRoZSBpbmNpZGVudCAlcyBvY2N1cnJlZCBvbiB0aGUgc291cmNlLiBNZXNzYWdlOiAlcwBTb3VyY2UgY29tbWFuZCAlcyBmYWlsZWQ6ICVzAFJlbGF5IGxvZyByZWFkIGZhaWx1cmU6ICVzAFJlbGF5IGxvZyB3cml0ZSBmYWlsdXJlOiAlcwBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBhcHBsaWVyIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AEdvdCBhIHBhY2tldCBiaWdnZXIgdGhhbiAnbWF4X2FsbG93ZWRfcGFja2V0JyBieXRlcwBBY2Nlc3MgdG8gJS42NHMgJyUuNjRzLiUuNjRzJyBpcyByZWplY3RlZC4AVW5rbm93biBlcnJvcgBVbmtub3duIHN5c3RlbSB2YXJpYWJsZSAnJS0uNjRzJwBBIG1lc3NhZ2UgaW50ZW5kZWQgZm9yIGEgY2xpZW50IGNhbm5vdCBiZSBzZW50IHRoZXJlIGFzIG5vIGNsaWVudC1zZXNzaW9uIGlzIGF0dGFjaGVkLiBUaGVyZWZvcmUsIHdlJ3JlIHNlbmRpbmcgdGhlIGluZm9ybWF0aW9uIHRvIHRoZSBlcnJvci1sb2cgaW5zdGVhZDogTVktJTA2ZCAtICVzAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzOyBkaWFnbm9zdGljcyBhcmVhOiBNWS0lMDZkIC0gJS0uNjRzKQBPdXQgb2Ygc29ydCBtZW1vcnksIGNvbnNpZGVyIGluY3JlYXNpbmcgc2VydmVyIHNvcnQgYnVmZmVyIHNpemUhAFRoZSB0YWJsZSAnJS0uMTkycycgaXMgZnVsbCEAQ3JlYXRlIHRhYmxlL3RhYmxlc3BhY2UgJyUtLjE5MnMnIGZhaWxlZCwgYXMgZGlzayBpcyBmdWxsLgBIYW5kbGVyIHJlcG9ydGVkIGVycm9yICVkIC0gJXMASW5jb3JyZWN0IGluZm9ybWF0aW9uIGluIGZpbGU6ICclLS4yMDBzJwBDYW4ndCBvcGVuIGZpbGU6ICclLS4yMDBzJyAoT1MgZXJybm86ICVkIC0gJXMpAENhbid0IGZpbmQgZmlsZTogJyUtLjIwMHMnIChPUyBlcnJubzogJWQgLSAlcykAJyUtLjE5MnMnIGlzIGxvY2tlZCBhZ2FpbnN0IGNoYW5nZSAoT1MgZXJybm86ICVkIC0gJXMpAENhbm5vdCBsb2FkIGZyb20gJXMuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQhAEVycm9yIGluIGRpYWdub3N0aWNzIGFyZWE6IE1ZLSUwNmQgLSAlcwBJbmNvcnJlY3QgZGVmaW5pdGlvbiBvZiB0YWJsZSAlcy4lczogZXhwZWN0ZWQgY29sdW1uICclcycgYXQgcG9zaXRpb24gJWQsIGZvdW5kICclcycuAFRoZSBjb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gQ3JlYXRlZCB3aXRoIE15U1FMICVkLCBub3cgcnVubmluZyAlZC4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBDb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZAAiAFJlcGxpY2EgU1FMIHRocmVhZCBhYm9ydGVkLiBDYW4ndCBleGVjdXRlIGluaXRfcmVwbGljYSBxdWVyeSwgTVktJTA2ZCAtICclcycAQ29sdW1uICVkIG9mIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZnJvbSB0eXBlICclLS4zMnMnIHRvIHR5cGUgJyUtLjMycycAUmVwbGljYSBTUUwgdGhyZWFkIGlnbm9yZWQgdGhlIHF1ZXJ5IGJlY2F1c2Ugb2YgcmVwbGljYXRlLSotdGFibGUgcnVsZXMAQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBBVVRPX1BPU0lUSU9OID0gMSwgYXQgZmlsZSAlLjQwMHMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04sIGF0IGZpbGUgJS40MDBzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIEdUSUQtdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYsIGF0IGZpbGUgJS40MDBzLCBwb3NpdGlvbiAlbGxkLgBTaW11bGF0ZWQgZXJyb3IAJXMAQXVkaXQgTG9nIGZpbHRlcmluZyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkLgBGYWlsZWQgdG8gb3BlbiB0aGUgJXMgZmlsdGVyIHRhYmxlcy4ARmFpbGVkIHRvIG9wZW4gJyVzLiVzJyAlcyB0YWJsZS4ARmlsdGVyIG5hbWUgY2Fubm90IGJlIGVtcHR5LgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgdXNlciBuYW1lLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclcydAJyVzJy4gU1VQRVIgb3IgQVVESVRfQURNSU4gbmVlZGVkIHRvIHBlcmZvcm0gb3BlcmF0aW9uAE5vIGtleXJpbmcgaW5zdGFsbGVkLgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgaG9zdCBuYW1lLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBoYXMgbm90IGJlZW4gc2V0OyBpdCB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiBVc2UgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfZ2V0IHRvIG9idGFpbiB0aGUgcGFzc3dvcmQgb3IgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfc2V0IHRvIHNldCBhIG5ldyBvbmUuAENvdWxkIG5vdCBjcmVhdGUgQUVTIGtleS4gT3BlblNTTCdzIEVWUF9CeXRlc1RvS2V5IGZ1bmN0aW9uIGZhaWxlZC4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgY2Fubm90IGJlIGZldGNoZWQgZnJvbSB0aGUga2V5cmluZy4gUGFzc3dvcmQgdXNlZCBzbyBmYXIgaXMgdXNlZCBmb3IgZW5jcnlwdGlvbi4AQ291bGQgbm90IHJlaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsdGVycy4AVXNlciBjYW5ub3QgYmUgZW1wdHkuAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdXNlciBuYW1lIG11c3QgYmUgYWxwaGFudW1lcmljLgBTcGVjaWZpZWQgZmlsdGVyIGhhcyBub3QgYmVlbiBmb3VuZC4AQ2Fubm90IHVwZ3JhZGUgc2VydmVyIGVhcmxpZXIgdGhhbiA1LjcgdG8gOC4wACVzIChteXNxbGQgJXMpIGluaXRpYWxpemluZyBvZiBzZXJ2ZXIgaW4gcHJvZ3Jlc3MgYXMgcHJvY2VzcyAlbHUAJXMgKG15c3FsZCAlcykgaW5pdGlhbGl6aW5nIG9mIHNlcnZlciBoYXMgY29tcGxldGVkAENhbm5vdCBib290IHNlcnZlciB2ZXJzaW9uICVsdSBvbiBkYXRhIGRpcmVjdG9yeSBidWlsdCBieSB2ZXJzaW9uICVsbHUuIERvd25ncmFkZSBpcyBub3Qgc3VwcG9ydGVkAFJlY2VpdmVkIFNIVVRET1dOIGZyb20gdXNlciAlcy4gU2h1dHRpbmcgZG93biBteXNxbGQgKFZlcnNpb246ICVzKS4AVGhlIHBsdWdpbiBlbmNvdW50ZXJlZCBhIGNyaXRpY2FsIGVycm9yIGFuZCB3aWxsIGFib3J0OiAlcwBJbnZhbGlkIG1hdGNoIG1vZGUgZmxhZyBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSB1c2Ugb2YgcmVwbGljYXRpb24gZmlsdGVycyB3aXRoIFhBIHRyYW5zYWN0aW9ucyBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgY2FuIGxlYWQgdG8gYW4gdW5kZWZpbmVkIHN0YXRlIGluIHRoZSByZXBsaWNhLgBDYW5ub3QgdXBkYXRlIEdUSURfUFVSR0VEIHdpdGggdGhlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBydW5uaW5nACclcy4lcycgdGFibGUgZGVmaW5pdGlvbiBoYXMgbm90IGJlZW4gdXBncmFkZWQ7IFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4ARXhlY3V0aW9uIG9mIHNlcnZlci1zaWRlIFNRTCBzdGF0ZW1lbnQgJyVzJyBmYWlsZWQgd2l0aCBlcnJvciBjb2RlID0gJWQsIGVycm9yIG1lc3NhZ2UgPSAnJXMnLgBObyBwYXRocyBhbGxvd2VkIGZvciBzaGFyZWQgbGlicmFyeS4ARnVuY3Rpb24gJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzLgBHb3QgRXJyb3I6ICVsZCBmcm9tIFNldEV2ZW50LgBFcnJvciBhbGxvY2F0aW5nIFNTTCBCSU8uACVzAE9uZSBvciBzZXZlcmFsIGxvY2F0aW9ucyB3ZXJlIGluYWNjZXNzaWJsZSB3aGlsZSBjaGVja2luZyBQSUQgZmlsZXBhdGguAEN1cnJlbnRseSB1bmtub3duIHZhcmlhYmxlICclcycgd2FzIHJlYWQgZnJvbSB0aGUgcGVyc2lzdGVkIGNvbmZpZyBmaWxlLgBGYXRhbCBlcnJvciBpbiBkZWZhdWx0cyBoYW5kbGluZy4gUHJvZ3JhbSBhYm9ydGVkIQBEdXBsaWNhdGUgdmFyaWFibGUgbmFtZSAnJXMnLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBzeXN0ZW0gdmFyaWFibGVzLgBWYXJpYWJsZSBuYW1lICclcycgbm90IGZvdW5kLgBTb21lICglZCkgdGhyZWFkcyBhcmUgc3RpbGwgYWN0aXZlACVzAFNvdXJjZSB0YWJsZXNwYWNlIGlzIGVuY3J5cHRlZCBidXQgdGFyZ2V0IHRhYmxlc3BhY2UgaXMgbm90LgBXYWl0aW5nIGZvciB0YWJsZXNwYWNlX2FsdGVyX2VuY3J5cHRfdGhyZWFkIHRvIGV4aXQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXM6IENvdWxkIG5vdCBhZGQgc3VwcHJlc3Npb24gcnVsZSBmb3IgY29kZSAiJXMiLiBSdWxlLXNldCBtYXkgYmUgZnVsbCwgb3IgY29kZSBtYXkgbm90IGNvcnJlc3BvbmQgdG8gYW4gZXJyb3ItbG9nIG1lc3NhZ2UuAEludmFsaWQgdmFsdWUgZm9yIGNvbW1hbmQgbGluZSBvcHRpb24gYmluZC1hZGRyZXNzZXM6ICclcycASWdub3JpbmcgdGhlIEBAZ2xvYmFsLnJlbGF5X2xvZ19zcGFjZV9saW1pdCBvcHRpb24gYmVjYXVzZSBAQGdsb2JhbC5yZWxheV9sb2dfcHVyZ2UgaXMgZGlzYWJsZWQuAEVycm9yIHdoZW4gZXh0cmFjdGluZyBHVElEIGV4ZWN1dGlvbiBpbmZvcm1hdGlvbjogJXMATWVzc2FnZSByZWNlaXZlZCB3aXRob3V0IGEgcHJvcGVyIGdyb3VwIGNvb3JkaW5hdG9yIG1vZHVsZS4AQSBtZW1iZXIgY2Fubm90IGpvaW4gdGhlIGdyb3VwIHdoaWxlIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyBpcyBydW5uaW5nIGluaXRpYXRlZCBieSAnJXMnLgBBIG1lbWJlciBpcyBqb2luaW5nIHRoZSBncm91cCB3aGlsZSBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgaXMgcnVubmluZyBpbml0aWF0ZWQgYnkgJyVzJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAENhbid0IHN0YXJ0ICVzIGZvciBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyBpbml0aWF0ZWQgYnkgJyVzJy4AQSBwcmltYXJ5IGVsZWN0aW9uIHdhcyBpbnZva2VkIGJ1dCB0aGUgcmVxdWVzdGVkIHByaW1hcnkgbWVtYmVyIGlzIG5vdCBpbiB0aGUgZ3JvdXAuIFJlcXVlc3QgaWdub3JlZC4ARXJyb3Igd2hpbGUgc2VuZGluZyBtZXNzYWdlLiBDb250ZXh0OiAlcwBFcnJvciB3aGlsZSBleGVjdXRpbmcgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbjogJXMAQ29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyB0ZXJtaW5hdGVkLiAlcwBTdGFydGluZyBncm91cCBvcGVyYXRpb24gbG9jYWwgZXhlY3V0aW9uOiAlcwBUZXJtaW5hdGlvbiBvZiBncm91cCBvcGVyYXRpb24gbG9jYWwgZXhlY3V0aW9uOiAlcwBBIGNvbmZpZ3VyYXRpb24gY2hhbmdlIHdhcyBraWxsZWQgaW4gdGhpcyBtZW1iZXIuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwIGFzIGl0cyBjb25maWd1cmF0aW9uIG1heSBoYXZlIGRpdmVyZ2VkLgBUaGVyZSB3YXMgYW4gaXNzdWUgb24gdGhlIHByaW1hcnkgZWxlY3Rpb24gcHJvY2VzczogJXMgVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIHN0b3BwaW5nIGEgcHJldmlvdXMgZWxlY3Rpb24gcHJvY2VzczogJXMASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBpbml0aWFsaXplIHN0YWdlIGxvZ2dpbmcgZm9yIHRoaXMgdGFzay4gVGhlIG9wZXJhdGlvbiB3aWxsIHN0aWxsIHJ1biB3aXRob3V0IHN0YWdlIHRyYWNraW5nLgBDb3VsZCBub3QgZXhlY3V0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIEdyb3VwIFJlcGxpY2F0aW9uIFVERiBmdW5jdGlvbjogJXMuIENoZWNrIGlmIHRoZSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQsIGlmIHNvLCB0cnkgdG8gcmVtb3ZlIGl0AENvdWxkIG5vdCB1bmluc3RhbGwgR3JvdXAgUmVwbGljYXRpb24gVURGIGZ1bmN0aW9ucy4gVHJ5IHRvIHJlbW92ZSB0aGVtIG1hbnVhbGx5IGlmIHByZXNlbnQuAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgR3JvdXAgUmVwbGljYXRpb24gVURGIGZ1bmN0aW9ucy4gQ2hlY2sgZm9yIG90aGVyIGVycm9ycyBpbiB0aGUgbG9nIGFuZCB0cnkgdG8gcmVpbnN0YWxsIHRoZSBwbHVnaW4AVGhlIGZ1bmN0aW9uICclcycgZmFpbGVkLiAlcwBEbyBub3Qgc3BlY2lmeSB0aGUgY3VycmVudCBwYXNzd29yZCB3aGlsZSBjaGFuZ2luZyBpdCBmb3Igb3RoZXIgdXNlcnMuAEluY29ycmVjdCBjdXJyZW50IHBhc3N3b3JkLiBTcGVjaWZ5IHRoZSBjb3JyZWN0IHBhc3N3b3JkIHdoaWNoIGhhcyB0byBiZSByZXBsYWNlZC4AQ3VycmVudCBwYXNzd29yZCBuZWVkcyB0byBiZSBzcGVjaWZpZWQgaW4gdGhlIFJFUExBQ0UgY2xhdXNlIGluIG9yZGVyIHRvIGNoYW5nZSBpdC4AVmFyaWFibGUgJyUtLjY0cycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycAJXMgd2FzIHVuYWJsZSB0byBjcmVhdGUgYSBuZXcgV2luZG93cyByZWdpc3RyeSBrZXkgJXMgZm9yICVzOyBjb250aW51aW5nIHRvIHVzZSB0aGUgcHJldmlvdXMgaWRlbnQuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBhcmUgbm90IGFsbG93ZWQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gb3IgaW5zaWRlIGEgcHJvY2VkdXJlIGluIGEgdHJhbnNhY3Rpb25hbCBjb250ZXh0IHdoZW4gQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQ9U1RBVEVNRU5ULgBTZWNvbmRhcnkgZW5naW5lIG9wZXJhdGlvbiBmYWlsZWQuICVzLgBERExzIG9uIGEgdGFibGUgd2l0aCBhIHNlY29uZGFyeSBlbmdpbmUgZGVmaW5lZCBhcmUgbm90IGFsbG93ZWQuAFVuYWJsZSB0byBhbGxvY2F0ZSB0ZW1wb3JhcnkgdGFibGVzcGFjZSBmb3IgdGhpcyBzZXNzaW9uAFVuYWJsZSB0byBzd2l0Y2ggc2VjdXJpdHkgY29udGV4dCB0byB1c2VyOiAlcwBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQUxURVIgVEFCTEUgLi4uIEFERCBDT0xVTU4gLi4gd2l0aCBleHByZXNzaW9uIGFzIERFRkFVTFQuAEVycm9yIGluIHBhcnNpbmcgJXMgJyVzJy4nJXMnIGR1cmluZyB1cGdyYWRlLiAlcwBUaGUgZGVzaWduYXRlZCBkYXRhIGRpcmVjdG9yeSAlcyBpcyB1bnVzYWJsZS4gWW91IGNhbiByZW1vdmUgYWxsIGZpbGVzIHRoYXQgdGhlIHNlcnZlciBhZGRlZCB0byBpdC4AR3JvdXAgc2VhcmNoIHJlYmluZGluZyB2aWEgcm9vdCBETjogJXMgAEVycm9yIGluc3RhbGxpbmcgcGx1Z2luICclcyc6ICVzAEVycm9yIHVuaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMAUGFydGl0aW9uZWQgdGFibGUgJyVzJyBpcyBub3QgYWxsb3dlZCB0byB1c2Ugc2hhcmVkIHRhYmxlc3BhY2UgJyVzJy4gUGxlYXNlIG1vdmUgYWxsIHBhcnRpdGlvbnMgdG8gZmlsZS1wZXItdGFibGUgdGFibGVzcGFjZXMgYmVmb3JlIHVwZ3JhZGUuAENhbm5vdCBkZXRlcm1pbmUgdGhlIHR5cGUgb2YgdGhlIHRhYmxlc3BhY2UgbmFtZWQgJyVzJy4AJXM6ICd1dGY4JyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIGJ1dCB3aWxsIGJlIGFuIGFsaWFzIGZvciBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgAlczogVGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW5zdGVhZC4AJXM6ICclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgVVRGOE1CMy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4AVGhlIFNTTCBsaWJyYXJ5IGZ1bmN0aW9uICVzIGZhaWxlZC4gVGhpcyBpcyB0eXBpY2FsbHkgY2F1c2VkIGJ5IHRoZSBTU0wgbGlicmFyeSBhbHJlYWR5IGJlaW5nIHVzZWQuIEFzIGEgcmVzdWx0IHRoZSBTU0wgbWVtb3J5IGFsbG9jYXRpb24gd2lsbCBub3QgYmUgaW5zdHJ1bWVudGVkLgBEaXNhYmxpbmcgQEBjb3JlX2ZpbGUgYmVjYXVzZSBAQGlubm9kYl9idWZmZXJfcG9vbF9pbl9jb3JlX2ZpbGUgaXMgZGlzYWJsZWQsIHlldCBNQURWX0RPTlREVU1QIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybQBEaXNhYmxpbmcgQEBjb3JlX2ZpbGUgYmVjYXVzZSBAQGlubm9kYl9idWZmZXJfcG9vbF9pbl9jb3JlX2ZpbGUgaXMgZGlzYWJsZWQsIHlldCBtYWR2aXNlKCVwLCV6dSwlcykgZmFpbGVkIHdpdGggJXMAQ291bGQgbm90IGNoYW5nZSBjb2x1bW4gJyVzJyBvZiB0YWJsZSAnJXMnLiBUaGUgcmVzdWx0aW5nIHNpemUgb2YgaW5kZXggJyVzJyB3b3VsZCBleGNlZWQgdGhlIG1heCBrZXkgbGVuZ3RoIG9mICVkIGJ5dGVzLgBzcWxfbW9kZT0weCUwOHggaGFzIGJlZW4gcmVtb3ZlZCBhbmQgd2lsbCBiZSBpZ25vcmVkAEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgcG9vbCBvZiBzaXplICV6dSBieXRlcy4gV2lsbCB3YWl0IGZvciAlenUgc2Vjb25kcyBmb3IgYSB0aHJlYWQgdG8gZnJlZSBhIHJlc291cmNlLgBOdW1iZXIgb2YgcG9vbHM6ICV6dQBVc2luZyB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AJXMgVW5hYmxlIHRvIHNhdmUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGFibGVzcGFjZSAnJXMnIHRvIHRoZSBkYXRhIGRpY3Rpb25hcnkAQ2Fubm90IGNyZWF0ZSB1bmRvIHRhYmxlc3BhY2UgJXMgYXQgJXMgYmVjYXVzZSAlZCB1bmRvIHRhYmxlc3BhY2VzIGFscmVhZHkgZXhpc3QuAEVycm9yICVkIG9wZW5pbmcgbmV3bHkgY3JlYXRlZCB1bmRvIHRhYmxlc3BhY2UgJXMuAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfQlVGX0VSUk9SAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfTUVNX0VSUk9SAFNESSBDb21wcmVzc2lvbiBmYWlsZWQsIFpfU1RSRUFNX0VSUk9SACVzAEV4cGVjdGVkIHRvIGZpbmQgdW5kbyB0YWJsZXNwYWNlICclcycgZm9yIFNwYWNlIElEPSVsdSwgYnV0IGZvdW5kICclcycgaW5zdGVhZCEgIERpZCB5b3UgY2hhbmdlIGlubm9kYl91bmRvX2RpcmVjdG9yeT8AQ2Fubm90IHVzZSAlcyBhcyBhbiB1bmRvIHRhYmxlc3BhY2UgYmVjYXVzZSBpdCBkb2VzIG5vdCBlbmQgd2l0aCAnLmlidScuAGliX3VuZG9fdHJ1bmNfZW1wdHlfZmlsZQBpYl91bmRvX3RydW5jX2JlZm9yZV9kZF91cGRhdGUAaWJfdW5kb190cnVuY19iZWZvcmVfZG9uZV9sb2dnaW5nAGliX3VuZG9fdHJ1bmNfYmVmb3JlX3JzZWdzACVzIEZhaWxlZCB0byBmaW5pc2ggdHJ1bmNhdGluZyBVbmRvIFRhYmxlc3BhY2UgJyVzJwBUaGUgc2V0dGluZyBJTk5PREJfVU5ET19UQUJMRVNQQUNFUyBpcyBkZXByZWNhdGVkIGFuZCBpcyBubyBsb25nZXIgdXNlZC4gIElubm9EQiBhbHdheXMgY3JlYXRlcyAyIHVuZG8gdGFibGVzcGFjZXMgdG8gc3RhcnQgd2l0aC4gSWYgeW91IG5lZWQgbW9yZSwgcGxlYXNlIHVzZSBDUkVBVEUgVU5ETyBUQUJMRVNQQUNFLgBUaGUgZGlyZWN0b3J5IGZvciB0YWJsZXNwYWNlICVzIGRvZXMgbm90IGV4aXN0IG9yIGlzIGluY29ycmVjdC4AJXMAQ2xvbmUgZG9ub3IgcmVwb3J0ZWQgOiAlLjUxMnMuAENsb25lIHJlY2VpdmVkIHVuZXhwZWN0ZWQgcmVzcG9uc2UgZnJvbSBkb25vciA6ICUuNTEycy4AQ2xpZW50OiAlLjUxMnMuAFNlcnZlcjogJS41MTJzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlcyBzZXJ2aWNlLgBGYWlsZWQgdG8gYWRkIHRocmVhZCBwb29sIHBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZXMuAEZhaWxlZCB0byBzZXQgZGF0YWRpciB0byAnJS0uMjAwcycgKE9TIGVycm5vOiAlZCAtICVzKQBUaGUgaW5ub2RiX3VuZG9fZGlyZWN0b3J5IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFuIGFuY2VzdG9yIG9mIHRoZSBkYXRhZGlyLgBGYWlsZWQgdG8gZmV0Y2gga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBDYW4ndCBmaW5kIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpbiB0aGUgc2VydmVyIGxvZyBpZiBhIGtleXJpbmcgaXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuAEZldGNoZWQgYW4gaW52YWxpZCBrZXkgZnJvbSBrZXlyaW5nLgBFcnJvciByZWFkaW5nIGEgcmVwbGljYXRpb24gbG9nIGVuY3J5cHRpb24gaGVhZGVyOiAlcy4ARmFpbGVkIHRvIHJvdGF0ZSBzb21lIGxvZ3MgYWZ0ZXIgY2hhbmdpbmcgYmlubG9nIGVuY3J5cHRpb24gc2V0dGluZ3MuIFBsZWFzZSBmaXggdGhlIHByb2JsZW0gYW5kIHJvdGF0ZSB0aGUgbG9ncyBtYW51YWxseS4AS2V5ICVzIGV4aXN0cyB1bmV4cGVjdGVkLgBGYWlsZWQgdG8gZ2VuZXJhdGUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBzdG9yZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHJlbW92ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4AVW5hYmxlIHRvIHJlY292ZXIgYmlubG9nIGVuY3J5cHRpb24gbWFzdGVyIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBiaW5sb2cgZW5jcnlwdGlvbiwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcm90YXRlIGJpbmxvZyBlbmNyeXB0aW9uIG1hc3RlciBrZXkgYXQgc3RhcnR1cCwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBJZ25vcmluZyBiaW5sb2dfcm90YXRlX2VuY3J5cHRpb25fbWFzdGVyX2tleV9hdF9zdGFydHVwIGJlY2F1c2UgYmlubG9nX2VuY3J5cHRpb24gb3B0aW9uIGlzIGRpc2FibGVkLgBJbnZhbGlkIHZhbHVlIGZvciBjb21tYW5kIGxpbmUgb3B0aW9uIGFkbWluLWFkZHJlc3M6ICclcycAQWRtaW4gaW50ZXJmYWNlIHJlYWR5IGZvciBjb25uZWN0aW9ucywgYWRkcmVzczogJyVzJyAgcG9ydDogJWQAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgYWRtaW4gY29ubmVjdGlvbnMgKGVycm5vPSAlZCkAUkVUQUlOIENVUlJFTlQgUEFTU1dPUkQgaWdub3JlZCBmb3IgdXNlciAnJXMnQCclcycgYXMgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAlcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHBhc3N3b3Jkcy4ARElTQ0FSRCBPTEQgUEFTU1dPUkQgaWdub3JlZCBmb3IgdXNlciAnJXMnQCclcycgYXMgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAlcyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpcGxlIHBhc3N3b3Jkcy4ARW1wdHkgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBhcyBzZWNvbmQgcGFzc3dvcmQgZm9yIHVzZXIgJyVzJ0AnJXMnLgBDdXJyZW50IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGJlY2F1c2UgYXV0aGVudGljYXRpb24gcGx1Z2luIGlzIGJlaW5nIGNoYW5nZWQuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBuZXcgcGFzc3dvcmQgaXMgZW1wdHkuAENhbiBub3QgcmVhZCBhbmQgcHJvY2VzcyB2YWx1ZSBvZiBVc2VyX2F0dHJpYnV0ZXMgY29sdW1uIGZyb20gbXlzcWwudXNlciB0YWJsZSBmb3IgdXNlcjogJyVzQCVzJzsgSWdub3JpbmcgdXNlci4AU2Vjb25kIHBhc3N3b3JkIHdhcyB1c2VkIGZvciBsb2dpbiBieSB1c2VyOiAnJXMnQCclcycuAFNlY29uZCBwYXNzd29yZCB3YXMgdXNlZCBmb3IgbG9naW4gYnkgdXNlcjogJyVzJ0AnJXMnLgBTZWNvbmQgcGFzc3dvcmQgd2FzIHVzZWQgZm9yIGxvZ2luIGJ5IHVzZXI6ICclcydAJyVzJy4ARXJyb3Igc2VuZGluZyB0cmFuc2FjdGlvbiAnJWQ6JWxsZCcgcHJlcGFyZWQgbWVzc2FnZSBmcm9tIHNlc3Npb24gJyV1Jy4ARXJyb3IgcmVsZWFzaW5nIHRyYW5zYWN0aW9uICclZDolbGxkJyBmb3IgY29tbWl0IG9uIHNlc3Npb24gJyV1JyBhZnRlciBiZWluZyBwcmVwYXJlZCBvbiBhbGwgZ3JvdXAgbWVtYmVycy4AVHJhbnNhY3Rpb24gJyVkOiVsbGQnIGFscmVhZHkgZXhpc3RzIG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgd2hpbGUgYmVpbmcgcmVnaXN0ZXJlZCBhZnRlciBjb25mbGljdCBkZXRlY3Rpb24uAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uICclZDolbGxkJyBvbiBHcm91cCBSZXBsaWNhdGlvbiBjb25zaXN0ZW5jeSBtYW5hZ2VyIGFmdGVyIGNvbmZsaWN0IGRldGVjdGlvbi4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gJyVkOiVsbGQnIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIGJlaW5nIHByZXBhcmVkIG9uIGFsbCBncm91cCBtZW1iZXJzLgBFcnJvciBvbiB0cmFuc2FjdGlvbiAnJWQ6JWxsZCcgZnJvbSBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3IgYmVpbmcgcHJlcGFyZWQgb24gYWxsIGdyb3VwIG1lbWJlcnMuAFRyYW5zYWN0aW9uICclZDolbGxkJyBkb2VzIG5vdCBleGlzdCBvbiBHcm91cCBSZXBsaWNhdGlvbiBjb25zaXN0ZW5jeSBtYW5hZ2VyIHdoaWxlIHJlY2VpdmluZyByZW1vdGUgdHJhbnNhY3Rpb24gcHJlcGFyZS4ARXJyb3IgcmVsZWFzaW5nIHRyYW5zYWN0aW9uICclZDolbGxkJyBmb3IgZXhlY3V0aW9uIG9uIHNlc3Npb24gJyV1JyBhZnRlciBpdHMgZGVwZW5kZW5jaWVzIGRpZCBjb21wbGV0ZSBjb21taXQuAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIGl0cyBkZXBlbmRlbmNpZXMgdG8gY29tcGxldGUgY29tbWl0LgBFcnJvciBvbiBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3IgaXRzIGRlcGVuZGVuY2llcyB0byBjb21wbGV0ZSBjb21taXQuAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uIGZyb20gc2Vzc2lvbiAnJXUnIHRvIHdhaXQgZm9yIHN5bmMgYmVmb3JlIGV4ZWN1dGlvbi4ARXJyb3Igc2VuZGluZyBzeW5jIGJlZm9yZSBleGVjdXRpb24gbWVzc2FnZSBmcm9tIHNlc3Npb24gJyV1Jy4ARXJyb3Igb24gdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgd2hpbGUgd2FpdGluZyBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gZm9yIGV4ZWN1dGlvbiBvbiBzZXNzaW9uICcldScgYWZ0ZXIgd2FpdCBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciB3YWl0aW5nIGZvciBncm91cCBleGVjdXRlZCB0cmFuc2FjdGlvbnMgY29tbWl0IG9uIHNlc3Npb24gJyV1Jy4AVGhlcmUncyBubyB1bml0IG9mIG1lYXN1cmUgbmFtZWQgJyVzJy4AVGhlIGZ1bmN0aW9uICVzIHVzZXMgJXMgYXMgYSB1bml0LCBidXQgd2FzIHBhc3NlZCBnZW9tZXRyeSB3aXRob3V0IHVuaXRzICgiU1JJRCAwIikuIENvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLgBDb3VsZCBub3QgcGFyc2Uga2V5LXZhbHVlIHBhaXJzIGluIHByb3BlcnR5IHN0cmluZyAnJXMnAFByb3BlcnR5IGtleSAnJXMnIGlzIGludmFsaWQuAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGUgZ3JvdXBfcmVwbGljYXRpb25fYXBwbGllciBjaGFubmVsIHJlY2VpdmVkIHRyYW5zYWN0aW9ucyBzZXQuIFVuYWJsZSB0byBlbnN1cmUgdGhlIGV4ZWN1dGlvbiBvZiBncm91cCB0cmFuc2FjdGlvbnMgcmVjZWl2ZWQgZHVyaW5nIHJlY292ZXJ5LgBGYWlsZWQgdG8gZW5jcnlwdCBjb250ZW50IHRvIHdyaXRlIGludG8gYmlubG9nIGZpbGU6ICVzLgBDYW5ub3QgZ2V0IHRoZSBzZXJ2ZXIgdmVyc2lvbiBudW1iZXIgZnJvbSB0aGUgZGljdGlvbmFyeSB0YWJsZXNwYWNlIGhlYWRlci4AQ2Fubm90IHNldCB0aGUgc2VydmVyIHZlcnNpb24gbnVtYmVyIGluIHRoZSBkaWN0aW9uYXJ5IHRhYmxlc3BhY2UgaGVhZGVyLgBVcGdyYWRpbmcgdGhlIHNlcnZlciBmcm9tIHNlcnZlciB2ZXJzaW9uICcldScgaXMgbm90IHN1cHBvcnRlZC4ATXlTUUwgc2VydmVyIHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBUaGUgY2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBjb3VsZCBub3QgYmUgc2V0IGluIHRoaXMgc2VydmVyOiAnJXMnAEEgcmVxdWVzdCB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwIHdhcyBpc3N1ZWQgd2hlbiB0aGUgbWVtYmVyIGlzIGxlYXZpbmcgdGhlIGdyb3VwLgBUcmlnZ2VyICVzLiVzIGZvciB0YWJsZSAlcy4lcyBpcyBsaXN0ZWQgaW4gd3Jvbmcgb3JkZXIuIFBsZWFzZSBkcm9wIGFuZCByZWNyZWF0ZSBhbGwgdHJpZ2dlcnMgZm9yIHRoZSB0YWJsZS4AJXMAU3BlY2lhbCBoYW5kbGluZyBmb3IgZ3JvdXAgc2VhcmNoLCB7R0F9IG5vdCBmb3VuZABVc2VyIGdyb3VwIHJldHJpZXZhbDogVXNlciBvYmplY3QgaGFzIGdyb3VwIGluZm9ybWF0aW9uAEdyb3VwIGluZm9ybWF0aW9uIGZvdW5kIGluIG11bHRpcGxlIHVzZXIgb2JqZWN0cy4gU2VhcmNoIGZpbHRlciBjb25maWd1cmF0aW9uIGlzIGluY29ycmVjdC4AVXNlciBncm91cCByZXRyaWV2YWw6IG5vIGdyb3VwIGF0dHJpYnV0ZSBmb3VuZC4gSW5jb3JyZWN0IGdyb3VwIHNlYXJjaCBhdHRyaWJ1dGUuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogR3JvdXAgYXR0cmlidXRlIHZhbHVlcyBpcyBOVUxMLiAAVXNlciBncm91cCByZXRyaWV2YWw6IHBhcnNpbmcgRE4gZmFpbGVkLiAAVXNlciBncm91cCByZXRyaWV2YWw6IEdyb3VwIG9iamVjdCBoYXMgdXNlciBpbmZvcm1hdGlvbgBSZXNlcnZlZCBwb3J0IGZvciBsZGFwcyB1c2luZyBsZGFwcwBHZXQgdXNlciBwcm94eQBHZXQgdXNlciBwcm94eTogVXNlciBkb2Vzbid0IGJlbG9uZ3MgdG8gYW55IGdyb3VwLCB1c2VyIG5hbWUgd2lsbCBiZSB0cmVhdGVkIGFzIGF1dGhlbnRpY2F0ZWQgdXNlci4AR2V0IHVzZXIgcHJveHk6IGNvbmZpZ3VyZWQgbWFwcGluZyBpbmZvOiAlcwBHZXQgdXNlciBwcm94eTogVXNlciBkb2Vzbid0IGhhdmUgZ3JvdXAgbWFwcGluZyBpbmZvcm1hdGlvbiwgRmlyc3QgTERBUCBncm91cCB3aWxsIGJlIHRyZWF0ZWQgYXMgYXV0aGVudGljYXRlZCB1c2VyLgBQcm9jZXNzIGdyb3VwIHByb3h5IG1hcHBpbmcAQ2hlY2sgZGVsaW1pdGVyIGFmdGVyIHF1b3RlAFByb2Nlc3NpbmcgZGVsaW1pdGVyAFByb2Nlc3NpbmcgZGVsaW1pdGVyLCBzZXBhcmF0b3IgPSBub3QgZm91bmQsIHJlc2V0dGluZyBwb3NpdGlvbgAiUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIGZhaWxlZCB0byBnZXQgZGF0YSBmb3IgPSBzZXBhcmF0b3IgdHJ5IGZvciBzZXBhcmF0b3IgLC4iAFByb2Nlc3NpbmcgZGVsaW1pdGVyLCBzZXBhcmF0b3IgLCBub3QgZm91bmQsIHJlc2V0dGluZyBwb3NpdGlvbgBQcm9jZXNzaW5nIGRlbGltaXRlcjogTm8gbWFwcGluZyBzZXBhcmF0b3IgaXMgZm91bmQsIGVuZCBvZiBncm91cCBpbmZvcm1hdGlvbgBHZXR0aW5nIG5leHQgbWFwcGluZyBpbmZvcm1hdGlvbgBQYXJzaW5nIG1hcHBpbmcsIGN1cnJlbnQgc3RhdGU6ICVkICBkZWxpbWl0ZXIgY2hhcjogJWMgAFBhcnNpbmcgbWFwcGluZyBpbmZvLCBMREFQIGdyb3VwOiAlcyBNeVNRTCBwcm94eTogJXMATWFwcGluZyBwYXJzaW5nIGVycm9yAFRyaW1taW5nIGxlZnQgc3BhY2VzAENoZWNraW5nIGlmIGN1cnJlbnQgY2hhcmFjdGVycyBpcyBxdW90ZQBOb3QgZGVzaXJlZCBzdGF0ZSBvciB1bi1kZWZpbmVkIHN0YXRlcy4ASW52YWxpZCB2YWx1ZSBmb3IgbmFtZWRfcGlwZV9mdWxsX2FjY2Vzc19ncm91cC4AUmV0cnkgdGhlIHN0YXRlbWVudCB1c2luZyBhIHNlY29uZGFyeSBzdG9yYWdlIGVuZ2luZS4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAENhbm5vdCBzZXQgbWFuZGF0b3J5X3JvbGVzOiBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGhhcyAnJXMnIHByaXZpbGVnZS4AVW5hYmxlIHRvIHJlY292ZXIgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LCB0aGUgY29tYmluYXRpb24gb2YgbmV3X21hc3Rlcl9rZXlfc2Vxbm89JXUsIG1hc3Rlcl9rZXlfc2Vxbm89JXUgYW5kIG9sZF9tYXN0ZXJfa2V5X3NlcW5vPSV1IGFyZSB3cm9uZy4ARmFpbGVkIHRvIHJlbW92ZSBhdXhpbGlhcnkgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIGNsZWFudXAgb2YgdGhlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSByb3RhdGlvbiBwcm9jZXNzIGRpZCBub3QgZmluaXNoIGFzIGV4cGVjdGVkIGFuZCB0aGUgY2xlYW51cCB3aWxsIHRha2UgcGxhY2UgdXBvbiBzZXJ2ZXIgcmVzdGFydCBvciBuZXh0ICdBTFRFUiBJTlNUQU5DRSBST1RBVEUgQklOTE9HIE1BU1RFUiBLRVknIGV4ZWN1dGlvbi4AQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBpcyBzZXQgYXMgbWFuZGF0b3J5X3JvbGVzLiBDYW5ub3QgZ3JhbnQgdGhlICclcycgcHJpdmlsZWdlLgAnJXMnIHByaXZpbGVnZSBmb3IgZGF0YWJhc2UgJyVzJyBleGlzdHMgYm90aCBhcyBwYXJ0aWFsIHJldm9rZSBhbmQgbXlzcWwuZGIgc2ltdWx0YW5lb3VzbHkuIEl0IGNvdWxkIG1lYW4gJ215c3FsJyBzY2hlbWEgaXMgY29ycnVwdGVkLgBBY2Nlc3MgZGVuaWVkIGZvciBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIHRvIGRhdGFiYXNlICclLS4xOTJzJy4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUaGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycgbXVzdCBiZSBzZXQgdG8gT04uAEF0IGxlYXN0IG9uZSBwYXJ0aWFsIHJldm9rZSBleGlzdHMgb24gYSBkYXRhYmFzZS4gVHVybmluZyBPTiB0aGUgc3lzdGVtIHZhcmlhYmxlICdAQHBhcnRpYWxfcmV2b2tlcycuAEZvciB1c2VyICclcydAJyVzJywgb25lIG9yIG1vcmUgcHJpdmlsZWdlcyBncmFudGVkIHRocm91Z2ggbXlzcWwuZGIgZm9yIGRhdGFiYXNlICclcycsIGNvbmZsaWN0IHdpdGggcGFydGlhbCByZXZva2UuIEl0IGNvdWxkIG1lYW4gJ215c3FsJyBzY2hlbWEgaXMgY29ycnVwdGVkLgBGb3IgdXNlciAlcywgaWdub3JlZCByZXN0cmljdGlvbnMgZm9yIHByaXZpbGVnZShzKSAnJXMnIGZvciBkYXRhYmFzZSAnJXMnIGFzIHRoZXNlIGFyZSBub3QgdmFsaWQgZGF0YWJhc2UgcHJpdmlsZWdlcy4ARm9yIHVzZXIgJXMsIGlnbm9yZWQgcmVzdHJpY3Rpb25zIGZvciBwcml2aWxlZ2UocykgJyVzJyBmb3IgZGF0YWJhc2UgJyVzJyBhcyBjb3JyZXNwb25kaW5nIGdsb2JhbCBwcml2aWxlZ2UocykgYXJlIG5vdCBncmFudGVkLgAnJXMnIGlzIGFuIGludmFsaWQgdmFsdWUgZm9yIGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fcHJvdG9jb2xfam9pbiwgcGxlYXNlIHVzZSBhIE15U1FMIHZlcnNpb24gYmV0d2VlbiA1LjcuMTQgYW5kIHRoaXMgc2VydmVyJ3MgdmVyc2lvbgBTdGFydGVkIGF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUAVGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHZpZXcgY2hhbmdlIGV2ZW50IGR1cmluZyB0aGUgYXV0by1yZWpvaW4gcHJvY2VkdXJlAEF1dG8tcmVqb2luIHByb2NlZHVyZSBhdHRlbXB0ICVsdSBvZiAlbHUgZmluaXNoZWQuIE1lbWJlciB3YXMlcyBhYmxlIHRvIGpvaW4gdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGRlZmF1bHRfdGFibGVfZW5jcnlwdGlvbiBvcHRpb24gdmFsdWUgJyVkJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVkJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AU2VydmVyIHNodXR0aW5nIGRvd24gYmVjYXVzZSB1cGdyYWRlIGlzIHJlcXVpcmVkLCB5ZXQgcHJvaGliaXRlZCBieSB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS11cGdyYWRlPU5PTkUnLgBTZXJ2ZXIgdXBncmFkZSBpcyByZXF1aXJlZCwgYnV0IHNraXBwZWQgYnkgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS11cGdyYWRlPU1JTklNQUwnLgBTZXJ2ZXIgdXBncmFkZSBzdGFydGVkIHdpdGggdmVyc2lvbiAlZCwgYnV0IHNlcnZlciB1cGdyYWRlIG9mIHZlcnNpb24gJWQgaXMgc3RpbGwgcGVuZGluZy4ARmFpbGVkIHRvIHVwZ3JhZGUgc2VydmVyLgBTZXJ2ZXIgdXBncmFkZSBmcm9tICclZCcgdG8gJyVkJyAlcy4AVGFibGUgJyVzJyByZXF1aXJlcyByZXBhaXIuAFRhYmxlICclcycgcmVwYWlyICVzLgBDb3VsZCBub3Qgb3BlbiBzZXJ2ZXIgdXBncmFkZSBpbmZvIGZpbGUgJyVzJyBmb3Igd3JpdGluZy4gUGxlYXNlIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB3cml0YWJsZS4AVXBncmFkaW5nIHRoZSBzeXMgc2NoZW1hLgBSdW5uaW5nIHF1ZXJpZXMgdG8gdXBncmFkZSBNeVNRTCBzZXJ2ZXIuAFVwZ3JhZGluZyBzeXN0ZW0gdGFibGUgZGF0YS4ARm91bmQgZW1wdHkgc3lzIGRhdGFiYXNlLiBJbnN0YWxsaW5nIHRoZSBzeXMgc2NoZW1hLgBBIHN5cyBzY2hlbWEgZXhpc3RzIHdpdGggbm8gc3lzLnZlcnNpb24gdmlldy4gSWYgeW91IGhhdmUgYSB1c2VyIGNyZWF0ZWQgc3lzIHNjaGVtYSwgdGhpcyBtdXN0IGJlIHJlbmFtZWQgZm9yIHRoZSB1cGdyYWRlIHRvIHN1Y2NlZWQuAEEgc3lzIHNjaGVtYSBleGlzdHMgd2l0aCBhIHN5cy52ZXJzaW9uIHZpZXcsIGJ1dCBpdCByZXR1cm5zIG5vIHJlc3VsdHMuAEZvdW5kIG91dGRhdGVkIHN5cyBzY2hlbWEgdmVyc2lvbiAlcy4AVGhlIHN5cyBzY2hlbWEgaXMgYWxyZWFkeSB1cCB0byBkYXRlICh2ZXJzaW9uICVzKS4ARm91bmQgJWQgc3lzICVzLCBidXQgZXhwZWN0ZWQgJWQuIFJlLWluc3RhbGxpbmcgdGhlIHN5cyBzY2hlbWEuAENoZWNraW5nICclcycgc2NoZW1hLgBUb28gbWFueSBjb25jdXJyZW50IHRyYW5zYWN0aW9ucyB3aGlsZSBjbGVhcmluZyB0aGUgRERMIExvZy4gUGxlYXNlIGluY3JlYXNlIHRoZSBudW1iZXIgb2YgUm9sbGJhY2sgU2VnbWVudHMuAEVycm9yIGluIERETCBMb2cgcmVjb3ZlcnkgZHVyaW5nIFBvc3QtUmVjb3ZlcnkgcHJvY2Vzc2luZy4ARXJyb3IgaW4gUG9zdC1UYWJsZXNwYWNlLUVuY3J5cHRpb24gZHVyaW5nIFBvc3QtUmVjb3ZlcnkgcHJvY2Vzc2luZy4ARXJyb3IgaW4gRExMIExvZyBjbGVhbnVwIGR1cmluZyBQb3N0LURETCBwcm9jZXNzaW5nLgAnJXMnIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgc3lzdGVtIGZ1bmN0aW9uIHRoYXQgbWF5IHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AVXBncmFkZSBvZiBoZWxwIHRhYmxlcyAlcy4ARXJyb3Igd2hlbiB3YWl0aW5nIGZvciB0aGUgc2VydmVyIHRvIGV4ZWN1dGUgbG9jYWwgdHJhbnNhY3Rpb25zIGluIG9yZGVyIGFzc3VyZSB0aGUgZ3JvdXAgY2hhbmdlIHByb3BlciBsb2dnaW5nAFVuYWJsZSB0byBsb2cgdGhlIGdyb3VwIGNoYW5nZSBWaWV3IGxvZyBldmVudCBpbiBpdHMgZXhhY3Rpb24gcG9zaXRpb24gaW4gdGhlIGxvZy4gVGhpcyB3aWxsIG5vdCBob3dldmVyIGFmZmVjdCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgcHJvY2VzcyBvciB0aGUgb3ZlcmFsbCBwbHVnaW4gcHJvY2Vzcy4AQ2Fubm90IGdyYW50IHJvbGVzIHRvIGFuIGFub255bW91cyB1c2VyLgBVbmFibGUgdG8gY3JlYXRlIGEgbmV3IGJpbmxvZyBmaWxlOiBUYWJsZSBgbXlzcWwuZ3RpZF9leGVjdXRlZGAgY291bGRuJ3QgYmUgb3BlbmVkLiAlcwBOZXR3b3JrIE5hbWVzcGFjZXMgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtAFVua25vd24gbmV0d29yayBuYW1lc3BhY2UgJyVzJwBOZXR3b3JrIG5hbWVzcGFjZSBub3QgYWxsb3dlZCBmb3Igd2lsZGNhcmQgaW50ZXJmYWNlIGFkZHJlc3MAc2V0bnMoKSBmYWlsZWQgd2l0aCBlcnJvciAnJXMnAFdpbGRjYXJkIGFkZHJlc3MgdmFsdWUgbm90IGFsbG93ZWQgZm9yIG11bHRpdmFsdWVkIGJpbmQgYWRkcmVzcwBUaGUgcGF0aCB0byBhIHNwZWNpYWwgbmV0d29yayBuYW1lc3BhY2UgZmlsZSBpcyB0b28gbG9uZy4gKGdvdCAldSA+IG1heCAldSkAQ2Fubm90IGNyZWF0ZSB0YWJsZXNwYWNlICclcycuIFRoZSBmaWxlcGF0aCBpcyB0b28gbG9uZyBmb3IgdGhpcyBPUy4AVGhlIGxhc3QgYmxvY2sgb2YgcmVkbyBoYWQgY29ycnVwdGVkIGZpcnN0X3JlY19ncm91cCBhbmQgYmVjYW1lIGZpeGVkICgldSAtPiAldSkuAERhdGEgZGljdGlvbmFyeSB1cGdyYWRlIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScgY29tcGxldGVkLgBTZXJ2ZXIgU1NMIGNlcnRpZmljYXRlIGRvZXNuJ3QgdmVyaWZ5OiAlcwBUcnVuY2F0ZWQgYSB1c2VyIG5hbWUgZm9yICVzIHRoYXQgd2FzIHRvbyBsb25nIHdoaWxlIHJlYWRpbmcgdGhlIHBlcnNpc3RlZCB2YXJpYWJsZXMgZmlsZQBUcnVuY2F0ZWQgYSBob3N0IG5hbWUgZm9yICVzIHRoYXQgd2FzIHRvbyBsb25nIHdoaWxlIHJlYWRpbmcgdGhlIHBlcnNpc3RlZCB2YXJpYWJsZXMgZmlsZQBUaGUgd2FpdF90aW1lb3V0IHBlcmlvZCB3YXMgZXhjZWVkZWQsIHRoZSBpZGxlIHRpbWUgc2luY2UgbGFzdCBjb21tYW5kIHdhcyB0b28gbG9uZy4AJyVzJyBmb3VuZCBub3QgZW5jcnlwdGVkIHdoaWxlICclcycgaXMgT04uIFRyeWluZyB0byBlbmNyeXB0IGl0IG5vdy4AQ0xPQ0tfTU9OT1RPTklDIGlzIHVuc3VwcG9ydGVkLCBzbyBkbyBub3QgY2hhbmdlIHRoZSBzeXN0ZW0gdGltZSB3aGVuIE15U1FMIGlzIHJ1bm5pbmcgIQBjbG9ja19nZXR0aW1lKCkgZmFpbGVkOiAlcwBQbHVnaW4gJyVzJyBpcyBub3QgdG8gYmUgdXNlZCBhcyBhbiAiZWFybHkiIHBsdWdpbi4gRG9uJ3QgYWRkIGl0IHRvIC0tZWFybHktcGx1Z2luLWxvYWQsIGtleXJpbmcgbWlncmF0aW9uIGV0Yy4AUGx1Z2luICclcycgaXMgbWFya2VkIGFzIG5vdCBkeW5hbWljYWxseSBpbnN0YWxsYWJsZS4gWW91IGhhdmUgdG8gc3RvcCB0aGUgc2VydmVyIHRvIGluc3RhbGwgaXQuAFNRTF9DQUxDX0ZPVU5EX1JPV1MgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIHR3byBzZXBhcmF0ZSBxdWVyaWVzIGluc3RlYWQuAEZPVU5EX1JPV1MoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgQ09VTlQoKikgaW5zdGVhZC4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBpbnZva2VzIGEgdHJpZ2dlciBvciBhIHN0b3JlZCBmdW5jdGlvbiB0aGF0IG1vZGlmaWVzIGEgdGFibGUgdGhhdCBoYXMgYSBjb2x1bW4gd2l0aCBhIERFRkFVTFQgZXhwcmVzc2lvbiB0aGF0IG1heSByZXR1cm4gYSBkaWZmZXJlbnQgdmFsdWUgb24gdGhlIHJlcGxpY2EuAE1lbWJlciB2ZXJzaW9uIGlzIHJlYWQgY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cC4ATG9jayBvcmRlciBkaXNhYmxlZCAocmVhc29uOiBpbml0IGZhaWxlZCkuAEtleXJpbmcgSUQgdGltZXN0YW1wIHZhbHVlIGlzIGludmFsaWQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSB0aW1lc3RhbXAgdmFsdWUgaXMgbWlzc2luZyBvciBpbnZhbGlkOiAnJXMnAENhbm5vdCBwcm9jZXNzIGF1ZGl0IGxvZyBmaWxlLiBGaWxlIG5hbWUgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBmb3JtYXQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSBrZXlyaW5nIElEIHZhbHVlIGlzIG1pc3Npbmc6ICclcycAQXVkaXQgbG9nIGZpbGUgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZDogJyVzJwBDb3VsZCBub3Qgb3BlbiBhdWRpdCBsb2cgZmlsZSBmb3IgcmVhZGluZzogJyVzJwBJbnZhbGlkIGF1ZGl0IGxvZyBmaWxlIGNvbnRlbnQ6ICclcycAQ2Fubm90IHJlYWQgcGFzc3dvcmQ6ICclLjMycycuAENhbm5vdCBzdG9yZSBwYXNzd29yZDogJyUuMzJzJy4AQ2Fubm90IHJlbW92ZSBwYXNzd29yZDogJyUuMzJzJy4AJ2F1ZGl0X2xvZycgcGFzc3dvcmQgaGFzIGJlZW4gY29waWVkIGludG8gJyUuMzJzJyBhbmQgd2lsbCBiZSByZW1vdmVkIHdpdGggZmlyc3QgcHVyZ2VkIHBhc3N3b3JkLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclLjY0cydAJyUuNjRzJy4gUm9sZSBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb246ICclLjMycycAQ2FuJ3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIGEgc2NhbGFyIGtleSBwYXJ0IG9mIHRoZSBpbmRleCAnJS4xOTJzJwBDYW5ub3QgdXNlIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycgZHVlIHRvIHR5cGUgb3IgY29sbGF0aW9uIGNvbnZlcnNpb24ARXhjZWVkZWQgbWF4IG51bWJlciBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IHZhbHVlKHMpAEV4Y2VlZGVkIG1heCB0b3RhbCBsZW5ndGggb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSBieXRlcwBEYXRhIHRvbyBsb25nIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAEludmFsaWQgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJwBPdXQgb2YgcmFuZ2UgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJwBFbXB0eSB1c2VyIGRuIG9yIHBhc3N3b3JkIGlzIG5vdCBhbGxvd2VkLCBub3QgYXR0ZW1wdGluZyBMREFQIGJpbmQuAEdyb3VwaW5nIG9uIHRlbXBvcmFsIGlzIG5vbi1kZXRlcm1pbmlzdGljIGZvciB0aW1lem9uZXMgaGF2aW5nIERTVC4gUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyB0byBVVEMgZm9yIHRoaXMgcXVlcnkuAFRoZSBjdXJyZW50IGxheW91dCBvZiB0aGUgQUNMIHRhYmxlcyBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBzZXJ2ZXIncyBleHBlY3RlZCBsYXlvdXQuIFRoZXkncmUgZWl0aGVyIGFsdGVyZWQsIG1pc3Npbmcgb3Igbm90IHVwZ3JhZGVkIGZyb20gYSBwcmV2aW91cyB2ZXJzaW9uLiBIb3dldmVyIGEgYmVzdCBlZmZvcnQgYXR0ZW1wdCB0byByZWFkIGRhdGEgZnJvbSB0aGVzZSB0YWJsZXMgd2lsbCBzdGlsbCBiZSBtYWRlLgBMT0NLX09SREVSOiBGYWlsZWQgdG8gd3JpdGUgdG8gZmlsZSA8JXM+LgBMT0NLX09SREVSOiBGYWlsZWQgdG8gcmVhZCBmcm9tIGZpbGUgPCVzPi4ATE9DS19PUkRFUiBtZXNzYWdlOiAlcwBMb2NrIG9yZGVyIGRlcGVuZGVuY2llcyBmaWxlIDwlcz4gKCVkOiVkKSAtICglZDolZCkgOiAlcwBMb2NrIG9yZGVyIHNjYW5uZXI6ICglZDolZCkgLSAoJWQ6JWQpIDogJXMAVGhlIG5ld2x5IGNyZWF0ZWQgZGF0YSBkaXJlY3RvcnkgJXMgYnkgLS1pbml0aWFsaXplIGlzIHVudXNhYmxlLiBZb3UgY2FuIHJlbW92ZSBpdC4ATm8uIG9mIEItdHJlZSBsZXZlbCBjcmVhdGVkIGZvciBpbmRleCAlcyBoYXMgY3Jvc3NlZCB0aGUgcGVybWlzc2libGUgbGltaXQuIElmIGRlYnVnIG9wdGlvbiBpbm5vZGJfbGltaXRfb3B0aW1pc3RpY19pbnNlcnRfZGVidWcgaXMgYmVpbmcgdXNlZCB0cnkgdHdlYWtpbmcgaXQgdG8gaW5jbHVkZSBtb3JlIHJlY29yZHMgaW4gYSBwYWdlLgAlcwAlcwAlcwBDbG9uZSByZW1vdmluZyBhbGwgdXNlciBkYXRhIGZvciBwcm92aXNpb25pbmc6ICVzAE5vbiBpbm5vZGIgdGFibGU6ICVzLiVzIGlzIG5vdCBjbG9uZWQgYW5kIGlzIGVtcHR5LgBDbG9uZSBzaHV0dGluZyBkb3duIHNlcnZlciBhcyBSRVNUQVJUIGZhaWxlZC4gUGxlYXNlIHN0YXJ0IHNlcnZlciB0byBjb21wbGV0ZSBjbG9uZSBvcGVyYXRpb24uAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciBHVElEIHB1cmdlZCBzZXQuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIHRoZSByZW1vdGUgY2xvbmluZyBwcm9jZXNzOiAlcwBUaGVyZSB3YXMgYW4gaXNzdWUgd2hlbiBjbG9uaW5nIGZyb20gYW5vdGhlciBzZXJ2ZXI6ICVzAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIHRyeWluZyB0byBldmFsdWF0ZSB0aGUgYmVzdCBkaXN0cmlidXRlZCByZWNvdmVyeSBzdHJhdGVneSB3aGlsZSBqb2luaW5nLiVzAE5vIHZhbGlkIG9yIE9OTElORSBtZW1iZXJzIGV4aXN0IHRvIGdldCB0aGUgbWlzc2luZyBkYXRhIGZyb20gdGhlIGdyb3VwLiBGb3IgY2xvbmluZyBjaGVjayBpZiBkb25vcnMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhbmQgd2l0aCBjbG9uZSBwbHVnaW4gaW5zdGFsbGVkIGV4aXN0LiBGb3IgaW5jcmVtZW50YWwgcmVjb3ZlcnkgY2hlY2sgaWYgeW91IGhhdmUgZG9ub3JzIHdoZXJlIHRoZSByZXF1aXJlZCBkYXRhIHdhcyBub3QgcHVyZ2VkIGZyb20gdGhlIGJpbmFyeSBsb2dzLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gcGx1Z2luIGNvdWxkIG5vdCBraWxsIHRoZSBwbHVnaW4gcm91dGluZSBmb3IgJXMuICVzAFRoaXMgbWVtYmVyIHdpbGwgc3RhcnQgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgdXNpbmcgY2xvbmUuIEl0IGlzIGR1ZSB0byB0aGUgbnVtYmVyIG9mIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGJlaW5nIGhpZ2hlciB0aGFuIHRoZSBjb25maWd1cmVkIHRocmVzaG9sZCBvZiAlbGx1LgBUaGlzIG1lbWJlciB3aWxsIHN0YXJ0IGRpc3RyaWJ1dGVkIHJlY292ZXJ5IHVzaW5nIGNsb25lLiBJdCBpcyBkdWUgdG8gbm8gT05MSU5FIG1lbWJlciBoYXMgdGhlIG1pc3NpbmcgZGF0YSBmb3IgcmVjb3ZlcmluZyBpbiBpdHMgYmluYXJ5IGxvZ3MuAERpc3RyaWJ1dGVkIHJlY292ZXJ5IHdpbGwgdHJhbnNmZXIgZGF0YSB1c2luZzogJXMARHVlIHRvIHNvbWUgaXNzdWUgb24gdGhlIHByZXZpb3VzIHN0ZXAgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgaXMgbm93IGV4ZWN1dGluZzogJXMARHVlIHRvIGEgY3JpdGljYWwgY2xvbmluZyBlcnJvciBvciBsYWNrIG9mIGRvbm9ycywgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgY2Fubm90IGJlIGV4ZWN1dGVkLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AVGhlICclcycgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGUgc2VydmVyIHdpbGwgYXR0ZW1wdCB0byBjbG9uZSBhbm90aGVyIHNlcnZlcgBVbmtub3duIHRhYmxlICclLS4xMjlzJwBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBwYXRoIGxlbmd0aCBleGNlZWRpbmcgJWQgY2hhcmFjdGVycy4gUGF0aDogJyVzJy4AWEE6IEZhaWxlZCB0byB0YWtlIE1ETCBMb2NrIGJhY2t1cCBvZiBQUkVQQVJFRCBYQSB0cmFuc2FjdGlvbiBkdXJpbmcgY2xpZW50IGRpc2Nvbm5lY3QuAFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIHJlcXVpcmVkIGZvciAnJXMnQCclcycgdXNlci4ASW52YWxpZCBhcmd1bWVudCB0eXBlAEludmFsaWQgYXJndW1lbnQgY291bnQAYXVkaXRfbG9nIHBsdWdpbiBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHVzaW5nIElOU1RBTEwgUExVR0lOIHN5bnRheC4ASW52YWxpZCAibWF4X2FycmF5X2xlbmd0aCIgYXJndW1lbnQgdHlwZS4ARmFpbGVkIHRvIHdyaXRlIHRvICVzOiAlcyAoJXMpAFVwZ3JhZGluZyBmcm9tIHNlcnZlciB2ZXJzaW9uICVkIHdpdGggcGFydGl0aW9uZWQgdGFibGVzIGFuZCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID09IDEgb24gYSBjYXNlIHNlbnNpdGl2ZSBmaWxlIHN5c3RlbSBtYXkgY2F1c2UgaXNzdWVzLCBhbmQgaXMgdGhlcmVmb3JlIHByb2hpYml0ZWQuIFRvIHVwZ3JhZGUgYW55d2F5LCByZXN0YXJ0IHRoZSBuZXcgc2VydmVyIHZlcnNpb24gd2l0aCB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAndXBncmFkZT1GT1JDRScuIFdoZW4gdXBncmFkZSBpcyBjb21wbGV0ZWQsIHBsZWFzZSBleGVjdXRlICdSRU5BTUUgVEFCTEUgPHBhcnRfdGFibGVfbmFtZT4gVE8gPG5ld190YWJsZV9uYW1lPjsgUkVOQU1FIFRBQkxFIDxuZXdfdGFibGVfbmFtZT4gVE8gPHBhcnRfdGFibGVfbmFtZT47JyBmb3IgZWFjaCBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGVzLiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgBJbmNvcnJlY3QgZW52aXJvbm1lbnQgdmFyaWFibGUgJXMsIGludmFsaWQgcG9ydDogJXMAVGhlIHNlcnZlciB3YXMgYXV0b21hdGljYWxseSBzZXQgaW50byBvZmZsaW5lIG1vZGUgYWZ0ZXIgYW4gZXJyb3Igd2FzIGRldGVjdGVkLgBBIG1lc3NhZ2Ugc2VudCB0aHJvdWdoIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBtZXNzYWdlIGRlbGl2ZXIgc2VydmljZSB3YXMgbm90IGRlbGl2ZXJlZCBzdWNjZXNzZnVsbHkuIFRoZSBzZXJ2ZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLiBUcnkgdG8gYWRkIHRoZSBzZXJ2ZXIgYmFjayB0byB0aGUgZ3JvdXAgYW5kIGNoZWNrIGlmIHRoZSBwcm9ibGVtIHBlcnNpc3RzLCBvciBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgbG9nIGZvciBoaW50cyBvZiB3aGF0IGNvdWxkIGJlIHRoZSBwcm9ibGVtLgBJbnZhbGlkIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TICclLjE5MnMnIGZvdW5kIGluIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFJlc2V0dGluZyB0byAndW5jb21wcmVzc2VkJyAobm8gY29tcHJlc3Npb24pLgBJbnZhbGlkIFNPVVJDRV9aU1REX0NPTVBSRVNTSU9OX0xFVkVMIGZvdW5kIGluIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFJlc2V0dGluZyB0byAldS4AT3B0aW9uIC0tcHJvdG9jb2wtY29tcHJlc3Npb24tYWxnb3JpdGhtcyBpcyByZXNldCB0byBkZWZhdWx0IHZhbHVlLgBGYXRhbCBlcnJvciB3aGlsZSBjb21wcmVzc2luZyBvdXRnb2luZyBkYXRhIC0gJXMAJXMAVW5rbm93biBrZXlyaW5nX2F3c19yZWdpb24gJyUuMTkycycuIENvbm5lY3Rpb24gdG8gQVdTIEtNUyBtYXkgZmFpbC4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgaXMgbm90IGFuIGV4aXN0aW5nIHVzZXIuIENvcnJlY3QgdGhpcyBiZWZvcmUgc3RhcnRpbmcgcmVwbGljYXRpb24gdGhyZWFkcy4ASW52YWxpZCwgY29ycnVwdGVkIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB3YXMgZm91bmQgaW4gdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gVXNlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gUFJJVklMRUdFX0NIRUNLU19VU0VSIHRvIGNvcnJlY3QgdGhlIGNvbmZpZ3VyYXRpb24uAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIHVzZXIgZG9lcyBub3QgaGF2ZSBSRVBMSUNBVElPTl9BUFBMSUVSIHByaXZpbGVnZS4gQ29ycmVjdCB0aGlzIGJlZm9yZSBzdGFydGluZyB0aGUgcmVwbGljYXRpb24gdGhyZWFkcy4AVGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3b3VsZCBuZWVkIEZJTEUgcHJpdmlsZWdlIHRvIGV4ZWN1dGUgYSBMT0FEIERBVEEgSU5GSUxFIHN0YXRlbWVudCByZXBsaWNhdGVkIGluIHN0YXRlbWVudCBmb3JtYXQuIENvbnNpZGVyIHVzaW5nIGJpbmxvZ19mb3JtYXQ9Uk9XIG9uIHNvdXJjZS4gSWYgdGhlIHJlcGxpY2F0ZWQgZXZlbnRzIGFyZSB0cnVzdGVkLCByZWNvdmVyIGZyb20gdGhlIGZhaWx1cmUgYnkgdGVtcG9yYXJpbHkgZ3JhbnRpbmcgRklMRSB0byB0aGUgUFJJVklMRUdFX0NIRUNLU19VU0VSLgBSZXBsaWNhIFNRTCB0aHJlYWQlcyBpbml0aWFsaXplZCwgc3RhcnRpbmcgcmVwbGljYXRpb24gaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMsIHJlbGF5IGxvZyAnJXMnIHBvc2l0aW9uOiAlcywgdXNlcjogJyUuNjRzJ0AnJS4yNTVzJywgcm9sZXM6ICUuNTEycwBDYW5ub3QgZ2VuZXJhdGUgcGFzc3dvcmQ6ICclLjMycycARmFpbGVkIHRvIGdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkIGZvciByb290LiBQcm9iYWJhYmx5IG5vdCBlbm91Z2ggZW50aHJvcHkuAElnbm9yaW5nIC0tcGx1Z2luLWxvYWRbX2FkZF0gbGlzdCBhcyB0aGUgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCAtLWluaXRpYWxpemUoLWluc2VjdXJlKS4AQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLiBBdXRoSWQocykgc2V0IGluIHRoZSBtYW5kYXRvcnlfcm9sZXMgYXJlIGlnbm9yZWQuAERpcmVjdG9yeSAnJXMnIHdpbGwgbm90IGJlIHNjYW5uZWQgYmVjYXVzZSBpdCBpcyBhIGhpZGRlbiBkaXJlY3RvcnkuAFNlcnZlciB3YXMgbm90IGFibGUgdG8gZmluZCBhIHJvdGF0ZSBldmVudCBmcm9tIHNvdXJjZSBzZXJ2ZXIgdG8gaW5pdGlhbGl6ZSByZWxheSBsb2cgcmVjb3ZlcnkgZm9yIGNoYW5uZWwgJyVzJy4gU2tpcHBpbmcgcmVsYXkgbG9nIHJlY292ZXJ5IGZvciB0aGUgY2hhbm5lbC4AUm9sbGluZyBiYWNrIExPQiBmb3IgdHJhbnNhY3Rpb24gJWxsdSB1bmRvIG51bWJlciAlbGx1IDogY3VycmVudCBpbmRleCBsZW5ndGggJWxsdS4gKGl0ZXJhdGlvbiAlbGx1KQBFcnJvciBpbiBwcm9jZXNzaW5nIChwb3NzaWJseSBkZXByZWNhdGVkKSBleHByZXNzaW9uIG9yIGZ1bmN0aW9uICclLjEyOHMnIGZvciBnZW5lcmF0ZWQgY29sdW1uICUuNjRzLiUuNjRzLiUuNjRzAFRoZSBxdWV1ZSBldmVudCBmYWlsZWQgZm9yIGNoYW5uZWwgJyVzJyBhcyBhbiBpbnZhbGlkIGV2ZW50IGFjY29yZGluZyB0byBSRVFVSVJFX1JPV19GT1JNQVQgd2FzIGZvdW5kLgBUaGUgYXBwbGljYXRpb24gb2YgcmVsYXkgZXZlbnRzIGZhaWxlZCBmb3IgY2hhbm5lbCAnJXMnIGFzIGFuIGludmFsaWQgZXZlbnQgYWNjb3JkaW5nIHRvIFJFUVVJUkVfUk9XX0ZPUk1BVCB3YXMgZm91bmQuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBjYW4ndCBiZSBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCB1bmxlc3MgUkVRVUlSRV9ST1dfRk9STUFUIGlzIGFsc28gc2V0IHRvICVkLgBBbiB1bmV4cGVjdGVkIGV2ZW50IHNlcXVlbmNlIHdhcyBkZXRlY3RlZCBieSB0aGUgU1FMIHRocmVhZCB3aGlsZSBhcHBseWluZyBhbiBldmVudC4AVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgYW5kIGFsbCBvdGhlciBwYXJ0aXRpb24gZmlsZXMgZHVyaW5nIHVwZ3JhZGUAVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgYW5kIGFsbCBvdGhlciBwYXJ0aXRpb24gZmlsZXMgZHVyaW5nIGRvd25ncmFkZQBVcGRhdGluZyBwYXJ0aXRpb24gZmlsZSBuYW1lICclcycgdG8gJyVzJyBmb3IgaW1wb3J0AFVuYWJsZSB0byBvcGVuIHBhcnRpdGlvbiBmaWxlIHdpdGggbmV3IG5hbWUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGlubm9kYl9kaXJlY3RvcmllcyBpcyBzZXQgdG8gaW5jbHVkZSBhbGwgZXh0ZXJuYWwgZmlsZSBwYXRocwAlcyBERCBJRDogJWxsdSAtIFBhcnRpdGlvbiB0YWJsZXNwYWNlICV1LCBuYW1lICclcycgaXMgY29ycmVjdGVkIHRvICclcycAJXMgREQgSUQ6ICVsbHUgLSBUYWJsZXNwYWNlICV1LCBuYW1lICclcycsICclcycgaXMgbW92ZWQgdG8gJyVzJwAlcyBERCBJRDogJWxsdSAtIFBhcnRpdGlvbiB0YWJsZXNwYWNlICV1LCBuYW1lICclcycsICclcycgaXMgdXBkYXRlZCB0byAnJXMnACVzIFRvbyBtYW55IGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCwgZGlzYWJsaW5nIGxvZ2dpbmcgb2YgZGV0YWlsZWQgbWVzc2FnZXMARWxlY3RlZCBwcmltYXJ5IG1lbWJlciAlczogJXMAU2NoZW1hIG5hbWUgJyVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBpcyBub3QgYWxsb3dlZCB3aXRoIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxLgBUYWJsZSBuYW1lICclcy4lcycgY29udGFpbmluZyB1cHBlciBjYXNlIGNoYXJhY3RlcnMgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AU2NoZW1hIG5hbWUgJyVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycywgdXNlZCBieSBmb3JlaWduIGtleSAnJXMnIGluIHRhYmxlICclcy4lcycsIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIG5hbWUgJyVzLiVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycywgdXNlZCBieSBmb3JlaWduIGtleSAnJXMnIGluIHRhYmxlICclcy4lcycsIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIFBhcnRpdGlvbjogJXMgaXMgbm90IGZvdW5kIGluIElubm9EQiBkaWN0aW9uYXJ5AEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgYmxvY2tlZCBmb3IgJXMgZGF5KHMpICglcyBkYXkocykgcmVtYWluaW5nKSBkdWUgdG8gJXUgY29uc2VjdXRpdmUgZmFpbGVkIGxvZ2lucy4gVXNlIEZMVVNIIFBSSVZJTEVHRVMgb3IgQUxURVIgVVNFUiB0byByZXNldC4AJXMAVXBncmFkZSBjYW5ub3QgcHJvY2VlZCBkdWUgdG8gYW4gZXhpc3RpbmcgcHJlcGFyZWQgWEEgdHJhbnNhY3Rpb24uAENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGtleV9pbmZvIHdoZW4gbWlncmF0aW5nIHRhYmxlICVzLiVzAEFwcGxpZXIgbWV0YWRhdGEgaW5mb3JtYXRpb24gZm9yIGNoYW5uZWwgJyVzJyB3YXMgZm91bmQgYWZ0ZXIgYSBjbG9uZSBvcGVyYXRpb24uIFJlbGF5IGxvZyByZWNvdmVyeSB3aWxsIGJlIGV4ZWN1dGVkIHRvIGFkanVzdCBwb3NpdGlvbnMgYW5kIGZpbGUgaW5mb3JtYXRpb24gZm9yIHRoaXMgbmV3IHNlcnZlci4gU2hvdWxkIHRoYXQgYXV0b21hdGljIHByb2NlZHVyZSBmYWlsIHBsZWFzZSBhZGp1c3QgdGhlIHBvc2l0aW9ucyB0aHJvdWdoICdDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPJwBGYWlsZWQgdG8gZGVsZXRlIDUuNyB1bmRvIHRhYmxlc3BhY2U6ICVzIGR1cmluZyB1cGdyYWRlAEVtcHR5IGRvdWJsZXdyaXRlIGZpbGU6ICVzAFVzaW5nICclcycgZm9yIGRvdWJsZXdyaXRlAEVycm9yIHJlYWRpbmcgZG91Ymxld3JpdGUgYnVmZmVyIGZyb20gdGhlIHN5c3RlbSB0YWJsZXNwYWNlAENhbm5vdCBjcmVhdGUgZG91Ymxld3JpdGUgYnVmZmVyOiB5b3UgbXVzdCBpbmNyZWFzZSB5b3VyIGJ1ZmZlciBwb29sIHNpemUuIENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uAFRoZSBwYWdlIGluIHRoZSBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHQuIENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uIFlvdSBjYW4gdHJ5IHRvIHJlY292ZXIgdGhlIGRhdGFiYXNlIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTYAVGhlIGRvdWJsZXdyaXRlIGZpbGVuYW1lICclcycgaXMgaW5jb3JyZWN0LgAlcwBEb3VibGV3cml0ZSBmaWxlIGNyZWF0ZSBmYWlsZWQ6ICVzAERCTFdSVGhyZWFkOiBwdGhyZWFkX3NldGFmZmluaXR5KCkgZmFpbGVkIQAlcwAlcwBEb3VibGV3cml0ZSBmaWxlIHJlYWQgZmFpbGVkOiAlcwBEdW1wIG9mIHRoZSBkYXRhIGZpbGUgcGFnZToAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMARG91Ymxld3JpdGUgbG9hZCBmaWxlICVzIHNpemUgJWx1IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBjb25maWd1cmVkIHBhZ2Ugc2l6ZSAlbHUiAERvdWJsZXdyaXRlIGZpbGUgJXMgdHJ1bmNhdGUgZmFpbGVkAERvdWJsZXdyaXRlIGZpbGUgJXMgZmFpbGVkIHRvIHdyaXQgemVyb3MARG91Ymxld3JpdGUgY3JlYXRlIGZpbGUgJXMgc2l6ZSAlbHUgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGNvbmZpZ3VyZWQgcGFnZSBzaXplICVsdSIAJXMAJXMAJXMAJXMAJXMAQ291bGQgbm90IGZsdXNoIGFsbCBHVElEcyBkdXJpbmcgc2xvdyBzaHV0ZG93bi4gV2lsbCByZWNvdmVyIEdUSURzIHdoZW4gc2VydmVyIHJlc3RhcnRzLgBGYWlsZWQgdG8gZGVsZXRlIDUuNyBzdGF0IHRhYmxlc3BhY2U6ICVzIGR1cmluZyB1cGdyYWRlAEluc3RhbGxpbmcgbmRiaW5mbyBzY2hlbWEgdmVyc2lvbiAlcwBJbnN0YWxsZWQgbmRiaW5mbyBzY2hlbWEgaXMgY3VycmVudC4gTm90IHVwZ3JhZGluZy4ARmFpbGVkIHRvIHVwZ3JhZGUgbmRiaW5mbyBzY2hlbWEuACVzAElubm9EQiBpbml0aWFsaXphdGlvbiBoYXMgc3RhcnRlZC4ASW5ub0RCIGluaXRpYWxpemF0aW9uIGhhcyBlbmRlZC4AQ291bGQgbm90IGZpbmQgYXBwcm9wcmlhdGUgcmVzZXQgcG9pbnRzLgBVbmFibGUgdG8gZmx1c2guIFBhZ2UgYXJjaGl2aW5nIGRhdGEgbWF5IGJlIGNvcnJ1cHQgaW4gY2FzZSBvZiBhIGNyYXNoLgBQYWdlIGFyY2hpdmVyJ3MgZG91Ymxld3JpdGUgYnVmZmVyIGZvciAlbGQgaXMgbm90IHZhbGlkLgBQYWdlIGFyY2hpdmVyIHN5c3RlbSdzIHJlY292ZXJ5IGZhaWxlZC4ASW52YWxpZCBhcmNoaXZlZCBmaWxlIG5hbWUgZm9ybWF0LiBUaGUgYXJjaGl2ZWQgZmlsZSBpcyBzdXBwb3NlZCB0byBoYXZlIHRoZSBmb3JtYXQgJXMgKyBbMC05XSouAFggUGx1Z2lucyBVTklYIHNvY2tldCBtdXN0IHVzZSBkaWZmZXJlbnQgZmlsZSB0aGFuIE15U1FMIHNlcnZlci4gWCBQbHVnaW4gd29uJ3QgYmUgYWNjZXNzaWJsZSB0aHJvdWdoIFVOSVggc29ja2V0ACVzAENvbHVtbiAnJS42NHMuJS42NHMuJS42NHMnIGhhdmluZyBwcmVmaXgga2V5IHBhcnQgJyUuNjRzKCV1KScgaXMgaWdub3JlZCBieSB0aGUgcGFydGl0aW9uaW5nIGZ1bmN0aW9uLiBVc2Ugb2YgcHJlZml4ZWQgY29sdW1ucyBpbiB0aGUgUEFSVElUSU9OIEJZIEtFWSgpIGNsYXVzZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVW5kbyBUcnVuY2F0aW9uIGlzIG9jY3VycmluZyB0b28gb2Z0ZW4uIENvbnNpZGVyIGluY3JlYXNpbmcgLS1pbm5vZGItbWF4LXVuZG8tbG9nLXNpemUuAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGlzIHN0YXJ0aW5nLgBDYW5ub3QgY3JlYXRlIHRhYmxlc3BhY2UgJXMgYmVjYXVzZSB0aGUgZGlyZWN0b3J5IGlzIG5vdCBhIHZhbGlkIGxvY2F0aW9uLiAlcwBTY2FubmVkIGZpbGUgJyVzJyBmb3IgdGFibGVzcGFjZSAlcyBjYW5ub3QgYmUgb3BlbmVkIGJlY2F1c2UgaXQgaXMgbm90IGluIGEgc3ViLWRpcmVjdG9yeSBuYW1lZCBmb3IgdGhlIHNjaGVtYS4AQ2Fubm90IGZpbmQgdW5kbyB0YWJsZXNwYWNlICVzIHdpdGggZmlsZW5hbWUgJyVzJyBhcyBpbmRpY2F0ZWQgYnkgdGhlIERhdGEgRGljdGlvbmFyeS4gRGlkIHlvdSBtb3ZlIG9yIGRlbGV0ZSB0aGlzIHRhYmxlc3BhY2U/IEFueSB1bmRvIGxvZ3MgaW4gaXQgY2Fubm90IGJlIHVzZWQuAEludmFsaWQgaW5wdXQgdmFsdWUgZm9yIHJlY292ZXJ5IHNvY2tldCBlbmRwb2ludHMgJyVzJy4gUGxlYXNlLCBwcm92aWRlIGEgdmFsaWQsIGNvbW1hIHNlcGFyYXRlZCwgbGlzdCBvZiBlbmRwb2ludHMgKElQOnBvcnQpAFRoZSBzZXJ2ZXIgaXMgbm90IGxpc3RlbmluZyBvbiBlbmRwb2ludCAnJXMnLiBPbmx5IGVuZHBvaW50cyB0aGF0IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uIGFyZSB2YWxpZCByZWNvdmVyeSBlbmRwb2ludHMuAFJlY2VpdmVkIGludmFsaWQgcmVjb3ZlcnkgZW5kcG9pbnRzIGNvbmZpZ3VyYXRpb24gZnJvbSBkb25vci4gVGhpcyBtZW1iZXIgaXMgbm90IGEgdmFsaWQgZG9ub3IgZm9yIHJlY292ZXJ5LCBzbyBpdCB3aWxsIGJlIHNraXBwZWQuAEZhaWxlZCB0byByZXRyaWV2ZSBJUCBhZGRyZXNzZXMgZnJvbSBlbmFibGVkIGhvc3QgbmV0d29yayBpbnRlcmZhY2VzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBUTFMgZm9yIGNoYW5uZWw6ICVzLiBTZWUgYmVsb3cgZm9yIHRoZSBkZXNjcmlwdGlvbiBvZiBleGFjdCBpc3N1ZS4AVmFsaWRhdGlvbiBvZiB2YWx1ZSAnJXMnIHNldCB0byBgTXlzcWx4X2JpbmRfYWRkcmVzc2AgZmFpbGVkOiAlcy4gU2tpcHBpbmcgdGhpcyB2YWx1ZS4AVmFsdWUgJyVzJyBzZXQgdG8gYE15c3FseF9iaW5kX2FkZHJlc3NgLCBYIFBsdWdpbiBjYW4ndCBiaW5kIHRvIGl0LiBTa2lwcGluZyB0aGlzIHZhbHVlLgBTZXJ2ZXIgd2FzIGtpbGxlZCB3aGVuIElubm9EQiByZWRvIGxvZ2dpbmcgd2FzIGRpc2FibGVkLiBEYXRhIGZpbGVzIGNvdWxkIGJlIGNvcnJ1cHQuIFlvdSBjYW4gdHJ5IHRvIHJlc3RhcnQgdGhlIGRhdGFiYXNlIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTYASW5ub0RCIGNhbm5vdCBkbyBjb2xkIHNodXRkb3duICdpbm5vZGJfZmFzdF9zaHV0ZG93biA9IDInIGFuZCBpcyBmb3JjaW5nICdpbm5vZGJfZmFzdF9zaHV0ZG93biA9IDEnIGFzIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gSW5ub0RCIHdvdWxkIGZsdXNoIGFsbCBkaXJ0eSBwYWdlcyB0byBlbnN1cmUgcGh5c2ljYWwgZGF0YSBjb25zaXN0ZW5jeS4ASW5ub0RCIHJlZG8gbG9nZ2luZyBpcyBkaXNhYmxlZC4gQWxsIGRhdGEgY291bGQgYmUgbG9zdCBpbiBjYXNlIG9mIGEgc2VydmVyIGNyYXNoLgBJbm5vREIgcmVkbyBsb2dnaW5nIGlzIGVuYWJsZWQuIERhdGEgaXMgbm93IHNhZmUgYW5kIGNhbiBiZSByZWNvdmVyZWQgaW4gY2FzZSBvZiBhIHNlcnZlciBjcmFzaC4AQ2hhbm5lbCAlcyBjb25maWd1cmVkIHRvIHN1cHBvcnQgVExTLiBFbmNyeXB0ZWQgY29ubmVjdGlvbnMgYXJlIG5vdyBzdXBwb3J0ZWQgZm9yIHRoaXMgY2hhbm5lbC4ATm8gVExTIGNvbmZpZ3VyYXRpb24gd2FzIGdpdmVuIGZvciBjaGFubmVsICVzOyByZS11c2luZyBUTFMgY29uZmlndXJhdGlvbiBvZiBjaGFubmVsICVzLgBTa2lwcGluZyBJbm5vREIgdGFibGVzcGFjZSBwYXRoIHZhbGlkYXRpb24uIE1hbnVhbGx5IG1vdmVkIHRhYmxlc3BhY2UgZmlsZXMgd2lsbCBub3QgYmUgZGV0ZWN0ZWQhAFVwZ3JhZGUgZmFpbGVkIGJlY2F1c2UgZGF0YWJhc2UgY29udGFpbnMgZGlzY2FyZGVkIHRhYmxlc3BhY2VzLgBUaGUgdXNlciBuYW1lICclcycgZXhjZWVkcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCBjaGFyYWN0ZXJzICVkIGFuZCBpcyB0cnVua2F0ZWQuAFRoZSBob3N0IG5hbWUgJyVzJyBleGNlZWRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIGNoYXJhY3RlcnMgJWQgYW5kIGlzIHRydW5rYXRlZC4AUm9sbGJhY2sgb2Ygbm9uLXByZXBhcmVkIHRyYW5zYWN0aW9ucyBub3QgY29tcGxldGVkLCBkdWUgdG8gZmFzdCBzaHV0ZG93bgBGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ3JvbGVfZWRnZXMnIHRhYmxlIHdpdGggZW1wdHkgYXV0aG9yaXphdGlvbiBJRDsgU2tpcHBlZABGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ3JvbGVfZWRnZXMnIHRhYmxlIHdpdGggdW5rbm93biBhdXRob3JpemF0aW9uIElEICclcyc7IFNraXBwZWQARm91bmQgYW4gZW50cnkgaW4gdGhlICdkZWZhdWx0X3JvbGVzJyB0YWJsZSB3aXRoIGVtcHR5IGF1dGhvcml6YXRpb24gSUQ7IFNraXBwZWQARm91bmQgYW4gZW50cnkgaW4gdGhlICdkZWZhdWx0X3JvbGVzJyB0YWJsZSB3aXRoIHVua25vd24gYXV0aG9yaXphdGlvbiBJRCAnJXMnOyBTa2lwcGVkAENvdWxkbid0IGluc2VydCBlbnRyeSBpbiBkZGwgbG9nIGZvciBkZGwuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvIGFjdGl2ZSBpbXBsaWNpdGx5LgBUaGUgc3RhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGlzIHNldCB0byAnYWN0aXZlJyBieSBBTFRFUiBUQUJMRVNQQUNFLgBUaGUgc3RhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGlzIHNldCB0byAnaW5hY3RpdmUnIGJ5IEFMVEVSIFRBQkxFU1BBQ0UuAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvICdlbXB0eScuAERlbGF5aW5nIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBkdWUgdG8gY2xvbmUgYWN0aXZpdHkuAERlbGF5aW5nIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBkdWUgdG8gYSBtZXRhZGF0YSBsb2NrLgBJbmplY3RlZCBkZWJ1ZyBjcmFzaCBwb2ludDogJXMASW5qZWN0ZWQgZGVidWcgZmFpbHVyZSBwb2ludDogJXMAVGltZW91dCB3aGlsZSB3YWl0aW5nIGZvciBhIHZpZXcgY2hhbmdlIGV2ZW50IGR1cmluZyB0aGUgbGVhdmUgc3RlcCBiZWZvcmUgYSBhdXRvLXJlam9pbiBhdHRlbXB0LgBGYWlsZWQgdG8gYXV0b21hdGljYWxseSByZS1jb25uZWN0IHRvIGEgZGlmZmVyZW50IHNvdXJjZSwgZm9yIGNoYW5uZWwgJyVzJywgYmVjYXVzZSAlcy4gVG8gZml4IHRoaXMgJXMuAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgVURGIGZ1bmN0aW9ucy4gQ2hlY2sgZm9yIG90aGVyIGVycm9ycyBpbiB0aGUgbG9nAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgVURGIGZ1bmN0aW9uOiAlcy4gQ2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgcHJlc2VudCwgaWYgc28sIHRyeSB0byByZW1vdmUgaXQuAENvdWxkIG5vdCB1bmluc3RhbGwgVURGIGZ1bmN0aW9ucy4gVHJ5IHRvIHJlbW92ZSB0aGVtIG1hbnVhbGx5IGlmIHByZXNlbnQuAEFuIGVtcHR5IG9yIGlsbGVnYWwgcHJpdmlsZWdlIGlkZW50aWZpZXIgd2FzIGlnbm9yZWQgd2hlbiBnbG9iYWwgcHJpdmlsZWdlcyB3ZXJlIHJlYWQgZnJvbSBkaXNrLgAlcwBBIHRtcGRpciB0ZW1wb3JhcnkgcGF0aCAiJXMiIGlzIHRvbyBsb25nICg+ICV6dSkgZm9yIHRoaXMgT1MuIFRoaXMgd291bGQgbm90IGxlYXZlIGVub3VnaCBzcGFjZSBmb3IgYSB0ZW1wb3JhcnkgZmlsZW5hbWUgb2YgbGVuZ3RoICV6dSB3aXRoaW4gaXQuAEVycm9yLWxvZyBkZXN0aW5hdGlvbiAiJXMiIGlzIG5vdCBhIGZpbGUuIENhbiBub3QgcmVzdG9yZSBlcnJvciBsb2cgbWVzc2FnZXMgZnJvbSBwcmV2aW91cyBydW4uAE5vbmUgb2YgdGhlIGxvZy1zaW5rcyBzZWxlY3RlZCB3aXRoIC0tbG9nLWVycm9yLXNlcnZpY2VzPS4uLiBwcm92aWRlcyBhIGxvZy1wYXJzZXIuIFRoZSBzZXJ2ZXIgd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIHRoZSBwcmV2aW91cyBydW5zJyBlcnJvci1sb2dzIGF2YWlsYWJsZSBpbiBwZXJmb3JtYW5jZV9zY2hlbWEuZXJyb3JfbG9nLgBUaGUgc2NoZW1hICIlLjY0cyIgcmVmZXJlbmNlZCBieSAlLjE2cyAiJS4xMjhzIiBkb2VzIG5vdCBleGlzdC4gUGxlYXNlIGNsZWFuIHVwIGFueSBvcnBoYW4gJS4xNnMgYmVmb3JlIHVwZ3JhZGluZy4AQ3JlYXRlZCB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ARHJvcHBlZCB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AVGhlIElubm9EQiBFbmNyeXB0aW9uIE1hc3RlciBLZXkgaGFzIGJlZW4gcm90YXRlZCBpbiAlZCB0YWJsZXNwYWNlcy4ARmFpbGVkIHRvIGRlY29tcHJlc3MgYSBEQkxXUiBwYWdlIChlcnI9JWQpLiAgVGhlIG9yaWdpbmFsIHNpemUgaXMgJWQuIFJlcG9ydGluZyB0aGUgZGJsd3IgcGFnZSBhcyBjb3JydXB0ZWQuAERlY3J5cHRpbmcgYSBwYWdlIGluIGRvdWJsZXdyaXRlIGZpbGUgZmFpbGVkOiAlcy4ARW5jcnlwdGlvbiBrZXkgbWlzc2luZzogJXMuAEkvTyBlcnJvciB3aGlsZSB3cml0aW5nIHRvIGZpbGU6ICVzLiBSZXRyeWluZyAuLi4ARmFpbGVkIHRvIHdyaXRlIGRhdGEgdG8gZmlsZTogJXMATG9nIGNvbXBvbmVudCAlcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4AVGhlIE1vbml0b3IgSU8gdGhyZWFkIGZhaWxlZCB0byBjb25uZWN0IHRvIHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJywgdGhlbmNlIGl0IHdpbGwgdHJ5IHRvIGNvbm5lY3QgdG8gYW5vdGhlciBzb3VyY2UuAFRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJyBoYXMgam9pbmVkIHRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpLCBhbmQgc28gYWRkZWQgaXRzIGVudHJ5IGludG8gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAFRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJyBoYXMgbGVmdCB0aGUgZ3JvdXAgKGdyb3VwX25hbWU6ICVzKSwgYW5kIHNvIHJlbW92ZWQgaXRzIGVudHJ5IGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAFRoZSBNb25pdG9yIElPIHRocmVhZCBkZXRlY3RlZCB0aGF0IHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBncm91cCBtYWpvcml0eSwgdGhlbmNlIHRoZSBjaGFubmVsICclcycgd2lsbCB0cnkgdG8gY29ubmVjdCB0byBhbm90aGVyIHNvdXJjZS4AVGhlIElPIHRocmVhZCBkZXRlY3RlZCB0aGF0IHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBncm91cCBtYWpvcml0eSwgdGhlbmNlIHRoZSBjaGFubmVsICclcycgd2lsbCB0cnkgdG8gY29ubmVjdCB0byBhbm90aGVyIHNvdXJjZS4AJXMgb24gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLgBSZXBsaWNhIE1vbml0b3IgSU8gdGhyZWFkIGV4aXRpbmcuAFRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpIGZvciB0aGUgY2hhbm5lbCAnJXMnIGhhcyBiZWVuIHJlbW92ZWQsIGFuZCBzbyByZW1vdmVkIGl0cyBlbnRyeSBmcm9tIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQgYW5kIGFsbCB0aGUgZ3JvdXAgbWVtYmVycyBmcm9tIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyIHRhYmxlLgBUaGUgZ3JvdXAgKGdyb3VwX25hbWU6ICVzKSBmb3IgdGhlIGNoYW5uZWwgJyVzJyBoYXMgYmVlbiBhZGRlZCwgYW5kIHNvIGFkZGVkIGl0cyBlbnRyeSBpbiByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkIGFuZCBzb3VyY2UgdG8gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAEVycm9yIHJlYWRpbmcgZmFpbG92ZXIgc291cmNlcyBmb3IgY2hhbm5lbCAnJXMnIGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAEVycm9yICVzIHRoZSBjaGFubmVsICclcycsIHRoZSBvcGVyYXRpb24gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHJldHJpZWQuAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TPSclcycsIHdoaWNoIGlzIGludmFsaWQgd2hlbiBHVElEX01PREUgPD4gT04uIElmIHlvdSBpbnRlbmQgdG8gdXNlIEdUSURfTU9ERSA9IE9OIGV2ZXJ5d2hlcmUsIGNoYW5nZSB0byBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IE9GRiBhbmQgdXNlIHRoZSBwcm9jZWR1cmUgZm9yIGVuYWJsaW5nIEdUSURzIG9ubGluZSAoc2VlIHRoZSBkb2N1bWVudGF0aW9uKS4gSWYgeW91IGludGVuZCB0byB1c2UgR1RJRHMgb24gdGhpcyByZXBsaWNhIGFuZCBjYW5ub3QgZW5hYmxlIEdUSURzIG9uIHRoZSBzb3VyY2UsIGVuYWJsZSBHVElEX01PREUgPSBPTiBhbmQgbGVhdmUgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4uIElmIHlvdSBpbnRlbmQgdG8gbm90IHVzZSBHVElEcyBhdCBhbGwgaW4gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5LCBjaGFuZ2UgdG8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9T0ZGIGFuZCBsZWF2ZSBHVElEX01PREUgPSAnJXMnLgBSZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUz0nJXMnIHdoaWNoIGlzIGVxdWFsIHRvIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuIFRvIGZpeCB0aGlzIGlzc3VlLCBlaXRoZXIgY2hhbmdlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICBvciB1c2UgYSBkaWZmZXJlbnQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TLgBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAnJXMnIGlzIHRoZSBzYW1lIGFzIHRoZSBVVUlEIHZhbHVlIGZvciBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyBpbiBhIHNlcnZlciBjaGFubmVsAFRoZSBpbnRlZ2VyIGNvbXBvbmVudCBvZiB0aGUgR1RJRCBudW1iZXIgaXMgaGlnaC4gU3VnZ2VzdCByZXN0YXJ0aW5nIHRoZSBzZXJ2ZXIgd2l0aCBhIG5ldyBzZXJ2ZXJfdXVpZCB0byBwcmV2ZW50IGl0IGZyb20gcmVhY2hpbmcgdGhlIG1heGltdW0gbnVtYmVyIDJeNjMtMSwgd2hpY2ggd2lsbCBtYWtlIGl0IGltcG9zc2libGUgdG8gd3JpdGUgdGhlIGJpbmFyeSBsb2cgYW5kIGludm9rZSB0aGUgYmVoYXZpb3Igc3BlY2lmaWVkIGJ5IGJpbmxvZ19lcnJvcl9hY3Rpb24uACVzACVzACVzACVzOiBXYXJuaW5nIExldmVsIDEgKCVsbHUgTWlCKTogbW91bnQgcG9pbnQgPSAnJXMnLCBhdmFpbGFibGUgPSAlbGx1IE1pQiwgdG90YWwgPSAlbGx1IE1pQiwgdXNlZCA9ICUuMmYlJSwgbG93IGxpbWl0ID0gJWxsdSBNaUIsIGNyaXRpY2FsIGxldmVsID0gJWxsdSBNaUIAJXM6IFdhcm5pbmcgTGV2ZWwgMiAoJWxsdSBNaUIpOiBtb3VudCBwb2ludCA9ICclcycsIGF2YWlsYWJsZSA9ICVsbHUgTWlCLCB0b3RhbCA9ICVsbHUgTWlCLCB1c2VkID0gJS4yZiUlLCBsb3cgbGltaXQgPSAlbGx1IE1pQiwgY3JpdGljYWwgbGV2ZWwgPSAlbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAzICglbGx1IE1pQik6IG1vdW50IHBvaW50ID0gJyVzJywgYXZhaWxhYmxlID0gJWxsdSBNaUIsIHRvdGFsID0gJWxsdSBNaUIsIHVzZWQgPSAlLjJmJSUsIGxvdyBsaW1pdCA9ICVsbHUgTWlCLCBjcml0aWNhbCBsZXZlbCA9ICVsbHUgTWlCAElubm9EQjogU2l6ZSBvZiB0YWJsZXNwYWNlICVzIGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBzaXplIGFsbG93ZWQuAFRoZSBncm91cF9yZXBsaWNhdGlvbl9hcHBsaWVyIGNoYW5uZWwgaXMgc3RpbGwgcnVubmluZywgbW9zdCBsaWtlbHkgaXQgaXMgd2FpdGluZyBmb3IgYSBkYXRhYmFzZS90YWJsZSBsb2NrLCB3aGljaCBpcyBwcmV2ZW50aW5nIHRoZSBjaGFubmVsIGZyb20gc3RvcHBpbmcuIFBsZWFzZSBjaGVjayBkYXRhYmFzZS90YWJsZSBsb2NrcywgaW5jbHVkaW5nIHRoZSBvbmVzIGNyZWF0ZWQgYnkgYmFja3VwIHRvb2xzLgBEZXRlY3RlZCBtaXNjb25maWd1cmF0aW9uOiByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBjb25maWd1cmVkIHdpdGggU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEsIGJ1dCB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggYSB2YWx1ZSBvdGhlciB0aGVuIC0tZ3RpZC1tb2RlID0gT04uIEVpdGhlciByZWNvbmZpZ3VyZSByZXBsaWNhdGlvbiB1c2luZyBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAwIEZPUiBDSEFOTkVMICclLjE5MnMnLCBvciBjaGFuZ2UgR1RJRF9NT0RFIHRvIHZhbHVlIE9OLCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkLgBDb3VsZCBub3QgYWNxdWlyZSByZXF1aXJlZCBjb21wb25lbnQgc2VydmljZXMuAEF1dG9tYXRpYyByZWdpc3RyYXRpb24gb2YgZnVuY3Rpb24ocykgZmFpbGVkLgBBdXRvbWF0aWMgcmVnaXN0cmF0aW9uIG9mIFBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZShzKSBmYWlsZWQuACVzAEZhaWxlZCB0byBhdXRvLXBydW5lIGZpbGUgJyVzJywgRXJyb3IgKCVkKTogJXMARmlsZSAnJXMnIGF1dG8tcHJ1bmVkAFJlY2VpdmVkIGFuIGVycm9yIHdoaWxlIHByb2Nlc3NpbmcgY29tcG9uZW50cyBmcm9tIG1hbmlmZXN0IGZpbGU6ICVzAFJlY2VpdmVkIGFuIGVycm9yIHdoaWxlIHVubG9hZGluZyBjb21wb25lbnRzIHJlYWQgZnJvbSBtYW5pZmVzdCBmaWxlOiAlcwBNYW5pZmVzdCBmaWxlICclcycgaXMgbm90IHJlYWQtb25seS4gRm9yIGJldHRlciBzZWN1cml0eSwgcGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHRoZSBmaWxlIGlzIHJlYWQtb25seS4ATm8gc3VpdGFibGUgJyVzJyBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvdW5kIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuAEtleXJpbmcgY29tcG9uZW50IGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4AVGhlIGNvbXBvbmVudCBpcyBub3QgaW5pdGlhbGl6ZWQgcHJvcGVybHkuIE1ha2Ugc3VyZSB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgcHJvcGVyIGFuZCB1c2UgQUxURVIgSU5TVEFOQ0UgUkVMT0FEIEtFWVJJTkcgdG8gcmVpbml0aWFsaXplIHRoZSBjb21wb25lbnQuAEtleXJpbmcgY29tcG9uZW50IGVuY291bnRlcmVkIGFuIGV4Y2VwdGlvbiB3aGlsZSBleGVjdXRpbmcgOiAnJXMnIEFQSSBvZiBzZXJ2aWNlOiAnJXMnAEZhaWxlZCB0byBhbGxvY2F0ZWQgbWVtb3J5IGZvciAnJXMnIHdoaWxlIGV4ZWN1dGluZzogJyVzJyBBUEkgb2Ygc2VydmljZTogJyVzJwBFbXB0eSBvciAwIHZhbHVlcyBmb3IgQUVTIGVuY3J5cHRpb24gbW9kZSBhbmQvb3IgYmxvY2sgc2l6ZSBhcmUgbm90IHBlcm1pdHRlZC4AQSB2YWxpZCBkYXRhIGlkZW50aWZpZXIgaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8gZmV0Y2ggdGhlIGtleSByZXF1aXJlZCBmb3IgdGhlIEFFUyBvcGVyYXRpb24uAEtleSBpZGVudGlmaWVkIGJ5IERhdGEgSUQ6ICclcycgYW5kIEF1dGggSUQ6ICclcycgaXMgbm90IG9mIHR5cGUgQUVTLgBFbmNvdW50ZXJlZCBlcnJvcjogJyVzJyB3aGlsZSBleGVjdXRpbmcgJyVzJyBBUEkgb2Yga2V5cmluZ19hZXMgc2VydmljZS4gS2V5IGRldGFpbHMgYXJlIERhdGEgSUQ6ICclcycgYW5kIEF1dGggSUQ6ICclcycuAENvdWxkIG5vdCBmaW5kIHRoZSBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4ATWF4aW11bSBwZXJtaXNzaWJsZSBzaXplIG9mIGRhdGEgaXMgJyV6dScgYml0cwBFcnJvciB3cml0aW5nIGRhdGEgZm9yIERhdGEgSUQ6ICclcycsIEF1dGggSUQ6ICclcycuIEVpdGhlciBkYXRhIGFscmVhZHkgZXhpc3RzIHdpdGggc2FtZSBpZGVudGlmaWVyIG9yIGtleXJpbmcgYmFja2VuZCBlbmNvdW50ZXJlZCBhbiBlcnJvci4ARXJyb3IgcmVtb3ZpbmcgZGF0YSBmb3IgRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4gRWl0aGVyIGRhdGEgZG9lcyBub3QgZXhpc3RzIHdpdGggc2FtZSBpZGVudGlmaWVyIG9yIGtleXJpbmcgYmFja2VuZCBlbmNvdW50ZXJlZCBhbiBlcnJvci4ARXJyb3IgZ2VuZXJhdGluZyBkYXRhIGZvciBEYXRhIElEOiAnJXMnLCBBdXRoIElEOiAnJXMnLiBFaXRoZXIgZGF0YSBhbHJlYWR5IGV4aXN0cyB3aXRoIHNhbWUgaWRlbnRpZmllciBvciBrZXlyaW5nIGJhY2tlbmQgZW5jb3VudGVyZWQgYW4gZXJyb3IuAEZhaWxlZCB0byBnZXQgbWV0YWRhdGEgZnJvbSBjdXJyZW50IGtleXMgbWV0YWRhdGEgaXRlcmF0b3IgcG9zaXRpb24uAEtleSBhbmQgdmFsdWUgbGVuZ3RoIHBhcmFtZXRlcnMgbXVzdCBub3QgYmUgbnVsbC4ASW5ub2RiIGNvdWxkIG5vdCBhY3F1aXJlIHNlcnZpY2UgOiAlcwBDb2x1bW4gJXMgb2YgdHlwZSBHRU9NRVRSWSBpcyBpbiBvbGQgKDUuNikgZm9ybWF0IHdoaWNoIGNvdWxkIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS4gVG8gY2hhbmdlIHRoZSBmb3JtYXQgdG8gbGF0ZXN0LCBwbGVhc2UgY29uc2lkZXIgcmVidWlsZGluZyB0aGUgdGFibGUgYWZ0ZXIgdGhlIHVwZ3JhZGUuACd3YWl0X3RpbWVvdXQnIHBlcmlvZCBvZiAlcyBzZWNvbmRzIHdhcyBleGNlZWRlZCBmb3IgJXMuIFRoZSBpZGxlIHRpbWUgc2luY2UgbGFzdCBjb21tYW5kIHdhcyB0b28gbG9uZy4AVGhlIG1lbWJlciBhY3Rpb24gIiVzIiBmb3IgZXZlbnQgIiVzIiB3aXRoIHByaW9yaXR5ICIldSIgd2lsbCBiZSBydW4uAFRoZSBtZW1iZXIgYWN0aW9uICIlcyIgZm9yIGV2ZW50ICIlcyIgd2l0aCBwcmlvcml0eSAiJXUiIGZhaWxlZCwgdGhpcyBlcnJvciBpcyBpZ25vcmVkIGFzIGluc3RydWN0ZWQuIFBsZWFzZSBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgZXJyb3IgbG9nIGZvciBoaW50cyBhYm91dCB3aGF0IGNvdWxkIGhhdmUgY2F1c2VkIHRoaXMgZmFpbHVyZS4AVGhlIG1lbWJlciBhY3Rpb24gIiVzIiBmb3IgZXZlbnQgIiVzIiB3aXRoIHByaW9yaXR5ICIldSIgZmFpbGVkLiBQbGVhc2UgY2hlY2sgcHJldmlvdXMgbWVzc2FnZXMgaW4gdGhlIGVycm9yIGxvZyBmb3IgaGludHMgYWJvdXQgd2hhdCBjb3VsZCBoYXZlIGNhdXNlZCB0aGlzIGZhaWx1cmUuAFVuYWJsZSB0byBwYXJzZSB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBzZW50IGJ5IHRoZSBwcmltYXJ5LgBVbmFibGUgdG8gdXBkYXRlIHRoZSBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIHdpdGggdGhlIG9uZSBzZW50IGJ5IHRoZSBwcmltYXJ5LiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVW5hYmxlIHRvIHJlYWQgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gZHVyaW5nIGdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlLiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVGhpcyBtZW1iZXIgam9pbmVkIGEgZ3JvdXAgb24gd2hpY2ggYWxsIG1lbWJlcnMgZG8gbm90IHN1cHBvcnQgbWVtYmVyIGFjdGlvbnMsIGFzIHN1Y2ggaXQgZGlkIHJlc2V0IGl0cyBtZW1iZXIgY29uZmlndXJhdGlvbiB0byB0aGUgZGVmYXVsdCBvbmUuAFVuYWJsZSB0byByZXNldCB0byBtZW1iZXIgYWN0aW9ucyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBVbmFibGUgdG8gcGFyc2UgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gc2VudCBieSB0aGUgZ3JvdXAgb24gbWVtYmVyIGpvaW4uAFVuYWJsZSB0byB1cGRhdGUgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBUaGUgZ3JvdXAgbWVtYmVycyB3ZXJlIHVuYWJsZSB0byBzZW5kIHRoZWlyIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nIG9uIGFsbCBtZW1iZXJzLgBNZW1iZXIgYWN0aW9uIGVuYWJsZWQ6ICIlcyIsIHR5cGU6ICIlcyIsIGV2ZW50OiAiJXMiLCBwcmlvcml0eTogIiV1IiwgZXJyb3JfaGFuZGxpbmc6ICIlcyIuAE1lbWJlciBhY3Rpb24gZGlzYWJsZWQ6ICIlcyIsIHR5cGU6ICIlcyIsIGV2ZW50OiAiJXMiLCBwcmlvcml0eTogIiV1IiwgZXJyb3JfaGFuZGxpbmc6ICIlcyIuAE1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gd2FzIHJlc2V0LgBBY2NlcHRlZCBhIGNvbm5lY3Rpb24gd2l0aCBkZXByZWNhdGVkIHByb3RvY29sICclcycgZm9yIGFjY291bnQgYCVzYEBgJXNgIGZyb20gaG9zdCBgJXNgLiBDbGllbnQgc3VwcGxpZWQgdXNlcm5hbWUgYCVzYABBIGRlcHJlY2F0ZWQgVExTIHZlcnNpb24gJXMgaXMgZW5hYmxlZCBmb3IgY2hhbm5lbCAlcwBVc2VyIHByb2ZpbGUgJyVzJyBsb2FkZWQuIEZpcmV3YWxsIHVzZXIgcHJvZmlsZXMgYXJlIGRlcHJlY2F0ZWQsIGNvbnNpZGVyIG1pZ3JhdGluZyB0byBncm91cCBwcm9maWxlcy4ASW52YWxpZCBpbnB1dCB2YWx1ZSBmb3IgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCAnJXMnLiBQbGVhc2UsIHByb3ZpZGUgYSB2YWxpZCBVVUlELgBWYXJpYWJsZSAnZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCcgY2Fubm90IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyVzJy4gSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBVVUlEIG9mICdncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lJyBmb3IgdGhlIFVVSUQgb2YgVmlld19jaGFuZ2VfbG9nX2V2ZW50cywgcGxlYXNlIHNldCAnZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCcgdG8gQVVUT01BVElDLgBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycsIHdoaWNoIGlzIHRoZSBzYW1lIGFzIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuIFBsZWFzZSBjaGFuZ2UgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCB0byBBVVRPTUFUSUMAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgJyVzJyBpcyB0aGUgc2FtZSBhcyB0aGUgVVVJRCB2YWx1ZSBmb3IgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgaW4gYSBzZXJ2ZXIgY2hhbm5lbABncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGlzIGluY29tcGF0aWJsZSB3aXRoIGdyb3VwLiBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkICVzIG1hdGNoZXMgc2VydmVyX3V1aWQgJXMuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBvcHRpb24gdmFsdWUgJyVzJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVzJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AUmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9JyVzJyB3aGljaCBpcyBlcXVhbCB0byBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLiBUbyBmaXggdGhpcyBpc3N1ZSwgZWl0aGVyIGNoYW5nZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBvciB1c2UgYSBkaWZmZXJlbnQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuAFVuYWJsZSB0byBnZW5lcmF0ZSBzaWRubyBmb3IgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4AVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHVwZGF0aW5nIGdyb3VwX2d0aWRfZXhlY3V0ZWQgR1RJRCBzZXQgd2l0aCB2aWV3IGNoYW5nZSB1dWlkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBhZGQgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgc2lkbm8gaW4gdGhlIGdyb3VwX2d0aWRfc2lkX21hcCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gaGFuZGxlIHRoZSBkb25vcidzIHZpZXcgY2hhbmdlIHV1aWQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gd2hlbiBpbml0aWFsaXppbmcgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBjb21wb25lbnQuIFBvc3NpYmxlIG91dCBvZiBtZW1vcnkgZXJyb3IuAFVuYWJsZSB0byByZXRyaWV2ZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIGR1cmluZyBzZXJ2ZXIgY2hlY2tzIG9uIHJlcGxpY2F0aW9uIG9wZXJhdGlvbnMuAEJvdGggYXVkaXRfbG9nX21heF9zaXplIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBhcmUgc2V0IHRvIG5vbi16ZXJvLiBhdWRpdF9sb2dfbWF4X3NpemUgdGFrZXMgcHJlY2VkZW5jZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgaXMgaWdub3JlZABhdWRpdF9sb2dfcm90YXRlX29uX3NpemUgaXMgbm90IGdyYW51bGFyIGVub3VnaCBmb3IgdGhlIHZhbHVlIG9mIGF1ZGl0X2xvZ19tYXhfc2l6ZSBzdXBwbGllZC4gU2hvdWxkIGJlIGF0IGxlYXN0ICVkIHRpbWVzIHNtYWxsZXIuAEludmFsaWQgdGFibGUgZGVmaW5pdGlvbiBmb3IgJyVzLiVzJy4AJXMAQ2Fubm90IGluc3RhbGwgdGhlICUuMTkycyBwbHVnaW4gd2hlbiB0aGUgJS4xOTJzIHBsdWdpbiBpcyBpbnN0YWxsZWQuAFRoZSB2YXJpYWJsZSAlcyBoYXMgYmVlbiByZW5hbWVkIHRvICVzLCBhbmQgdGhlIG9sZCBuYW1lIGRlcHJlY2F0ZWQuIE9ubHkgdGhlIG9sZCBuYW1lIHdhcyBmb3VuZCBpbiB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlIGZpbGUuIE5leHQgdGltZSB0aGUgZmlsZSBpcyBzYXZlZCwgYm90aCBuYW1lcyB3aWxsIGJlIHN0b3JlZC4gSXNzdWUgYW55IFNFVCBQRVJTSVNUIGNvbW1hbmQgdG8gc2F2ZSB0aGUgZmlsZSwgZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIGFuZCBwcmVwYXJlIHRoZSBwZXJzaXN0ZWQgY29uZmlndXJhdGlvbiBmb3Igd2hlbiB0aGUgdmFyaWFibGUgaXMgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uLgAlZCBlcnJvciBsb2dnaW5nIGNvbXBvbmVudChzKSBmYWlsZWQgdG8gZmx1c2guIEZvciBmaWxlLWJhc2VkIGxvZ3MgdGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIHBhdGggb3IgcGVybWlzc2lvbnMgb2YgdGhlIGxvZy1maWxlIGhhdmUgY2hhbmdlZC4gRmFpbHVyZSB0byBmbHVzaCBmaWxlZC1iYXNlZCBsb2dzIG1heSBhZmZlY3QgbG9nLXJvdGF0aW9uLgBUYWJsZXNwYWNlIGtleSBmb3IgJXMgaGFzIGJlZW4gcmUtZW5jcnlwdGVkIHVzaW5nIHRoZSBsYXRlc3QgSW5ub0RCIG1hc3RlciBrZXkuIEhvd2V2ZXIsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSByZWJ1aWxkIHRoZSB0YWJsZSBmb3IgYmV0dGVyIHNlY3VyaXR5LgBUYWJsZXNwYWNlIGtleSBmb3IgJXMgaGFzIGJlZW4gcmUtZW5jcnlwdGVkIHVzaW5nIHRoZSBsYXRlc3QgSW5ub0RCIG1hc3RlciBrZXkuIEhvd2V2ZXIsIHdlIHJlY29tbWVuZCB0aGF0IHlvdSByZWVuY3J5cHQgdGhlIHRhYmxlc3BhY2UgZm9yIGJldHRlciBzZWN1cml0eS4AUGFnZSBBcmNoaXZlcidzIGRvdWJsZXdyaXRlIGJ1ZmZlciBpbml0aWFsaXNhdGlvbiBmYWlsZWQuIFBhZ2UgdHJhY2tpbmcgaXMgYXQgcmlzayBvZiBsb3NpbmcgdHJhY2tlZCBpbmZvcm1hdGlvbi4AVGhlcmUgaXMgbm90IGVub3VnaCBmcmVlIHNwYWNlIGluIHRoZSByZWRvIGxvZyBkdXJpbmcgcmVjb3ZlcnkgdG8gcGVyZm9ybSBwZW5kaW5nIGlidWYgbWVyZ2VzLiBQbGVhc2UgcmV0cnkgc3RhcnRpbmcgTXlTUUwgd2l0aCAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT00LgBUaGVyZSBpcyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIHJlZG8gbG9nIGR1cmluZyByZWNvdmVyeSwgcmVzdG9yZSBmcm9tIGJhY2t1cCAob3IgcmV0cnkgd2l0aCAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT02KS4AYXVkaXRfbG9nX2Zvcm1hdF91bml4X3RpbWVzdGFtcCBpcyBhcHBsaWNhYmxlIG9ubHkgd2hlbiBhdWRpdF9sb2dfZm9ybWF0ID0gSlNPTi4AUmV0cnkgdGhlIHN0YXRlbWVudCB1c2luZyB0aGUgcHJpbWFyeSBzdG9yYWdlIGVuZ2luZS4AUGFyYWxsZWwgaW5pdGlhbGl6YXRpb24gb2YgcnNlZyBjb21wbGV0ZQBUaW1lIHRha2VuIHRvIGluaXRpYWxpemUgcnNlZyB1c2luZyAldSB0aHJlYWQ6ICV1IG1zLgBEREwgZmFpbGVkIHRvIGNyZWF0ZSBhIHRocmVhZCB0byBsb2FkIGFuIGluZGV4LCBmYWxsIGJhY2sgdG8gc2luZ2xlIHRocmVhZABEZWJ1Z19jaGVja19ub19sYXRjaGluZyBmYWlsZWQsIHNsb3QtPnR5cGU9JWQARmFpbGVkIHRvIGVzdGFibGlzaCBNeVNRTCBjbGllbnQgY29ubmVjdGlvbiBpbiBHcm91cCBSZXBsaWNhdGlvbi4gRXJyb3IgZXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24uIFBsZWFzZSByZWZlciB0byB0aGUgbWFudWFsIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdSBjb25maWd1cmVkIEdyb3VwIFJlcGxpY2F0aW9uIHByb3Blcmx5IHRvIHdvcmsgd2l0aCBNeVNRTCBQcm90b2NvbCBjb25uZWN0aW9ucy4ARmFpbGVkIHRvIGVzdGFibGlzaCBNeVNRTCBjbGllbnQgY29ubmVjdGlvbiBpbiBHcm91cCBSZXBsaWNhdGlvbi4gRXJyb3Igc2VuZGluZyBjb25uZWN0aW9uIGRlbGVnYXRpb24gY29tbWFuZC4gUGxlYXNlIHJlZmVyIHRvIHRoZSBtYW51YWwgdG8gbWFrZSBzdXJlIHRoYXQgeW91IGNvbmZpZ3VyZWQgR3JvdXAgUmVwbGljYXRpb24gcHJvcGVybHkgdG8gd29yayB3aXRoIE15U1FMIFByb3RvY29sIGNvbm5lY3Rpb25zLgBVbmFibGUgdG8gcmVhZCB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiBkdXJpbmcgZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2UuIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlcicsICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFRoaXMgbWVtYmVyIGpvaW5lZCBhIGdyb3VwIG9uIHdoaWNoIGFsbCBtZW1iZXJzIGRvIG5vdCBzdXBwb3J0IHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGludGVncmF0aW9uIG9uIEdyb3VwIFJlcGxpY2F0aW9uLCBhcyBzdWNoIGl0IGRpZCByZXNldCBpdHMgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiB0byB0aGUgZGVmYXVsdCBvbmUuAFVuYWJsZSB0byByZXNldCB0byByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb24gbWVtYmVyIGpvaW4uIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlcicsICdteXNxbC5yZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9tYW5hZ2VkJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFVuYWJsZSB0byBwYXJzZSB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgY29uZmlndXJhdGlvbiBzZW50IGJ5IHRoZSBncm91cCBvbiBtZW1iZXIgam9pbi4AVW5hYmxlIHRvIHNldCBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSIG9uIGEgbm9uLWV4aXN0ZW50IG9yIG1pc2NvbmZpZ3VyZWQgcmVwbGljYXRpb24gY2hhbm5lbCAnJXMnLCBwbGVhc2UgY3JlYXRlIHRoZSBjaGFubmVsIGFuZCByZWpvaW4gdGhlIHNlcnZlciB0byB0aGUgZ3JvdXAuAFVuYWJsZSB0byByZWdpc3RlciB0aGUgbGlzdGVuZXIgJ3JlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX2NvbmZpZ3VyYXRpb24nIHRvIHRoZSBzZXJ2aWNlICdncm91cF9yZXBsaWNhdGlvbl9tZXNzYWdlX3NlcnZpY2VfcmVjdicuAFRoaXMgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHJlYWNoIGEgbWFqb3JpdHkgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFRoaXMgc2VydmVyIHdpbGwgc2tpcCB0aGUgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgaGFuZGxpbmcgdW50aWwgdGhpcyBzZXJ2ZXIgaXMgYmFjayB0byB0aGUgZ3JvdXAgbWFqb3JpdHkuAFRoaXMgc2VydmVyIGlzIGJhY2sgdG8gdGhlIGdyb3VwIG1ham9yaXR5LiBSZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBoYW5kbGluZyBpcyByZXN1bWVkLgBFcnJvciBpbmNyZW1lbnRpbmcgbWVtYmVyIGFjdGlvbiBjb25maWd1cmF0aW9uIHZlcnNpb24gZm9yICVzLiVzIHRhYmxlLgBUaGUgJyVzJyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoaXMgc2VydmVyIGlzIGEgZ3JvdXAgc2Vjb25kYXJ5LgBDbG9uZSBEREwgTm90aWZpY2F0aW9uOiAlcwBDbG9uZSBEREwgQVBQTFk6ICVzAENsb25lIERETCBJbnZhbGlkYXRlIDogJXMARW5jcnlwdGlvbiBrZXkgaXMgbG9hZGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ASWdub3JpbmcgZW5jcnlwdGlvbiBJTkZPIHNpemUgaW4gcmVkbyBsb2c6ICV6dSwgZXhwZWN0ZWQ6ICV6dQBPcHRpb24gLS1hdXRoZW50aWNhdGlvbi1wb2xpY3kgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIFBsZWFzZSBjaGVjayBpZiB0aGUgc3BlY2lmaWVkIGF1dGhlbnRpY2F0aW9uIHBsdWdpbnMgYXJlIHZhbGlkLgBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCBkdXJpbmcgcmVnaXN0cmF0aW9uLgBCdWZmZXIgdG9vIHNtYWxsIHRvIGhvbGQgcmVnaXN0cmF0aW9uIGNoYWxsZW5nZSByZXNwb25zZS4ARklETyBkZXZpY2UgYXV0aGVudGljYXRvciBkYXRhIGNvcnJ1cHQuAEZJRE8gZGV2aWNlIHNpZ25hdHVyZSBjb3JydXB0LgBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxlZCBkdXJpbmcgYXV0aGVudGljYXRpb24uAE91dCBvZiBtZW1vcnkuAENhbid0IGluaXRpYWxpemUgbG9nZ2luZyBzZXJ2aWNlAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEdUSURfT05MWT0xLCB3aGljaCBpcyBpbnZhbGlkIHdoZW4gR1RJRF9NT0RFIDw+IE9OLiBJZiB5b3UgaW50ZW5kIHRvIGRpc2FibGUgR1RJRHMgaW4gdGhlIHJlcGxpY2F0aW9uIHRvcG9sb2d5LCBjaGFuZ2UgR1RJRF9PTkxZIHRvIDAuAFRoZSByZXBsaWNhdGlvbiBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gdGhlIHNvdXJjZSBtYXkgYmUgb3V0LW9mLWRhdGUgb24gY2hhbm5lbCAnJS4xOTJzJywgZHVlIHRvIHRoZSB1c2Ugb2YgR1RJRF9PTkxZPTEuIFRoZSBvdXQtb2YtZGF0ZSBwb3NpdGlvbnMgY2FuIHN0aWxsIGJlIHVzZWQgaW4gc29tZSBjYXNlcyBzbywgaW4gb3JkZXIgdG8gdXBkYXRlIHRoZW0sIHdlIHN1Z2dlc3QgdGhhdCB5b3Ugc3RhcnQgdGhlIHJlcGxpY2F0aW9uIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGF0IGxlYXN0IG9uZSB0cmFuc2FjdGlvbiwgd2hpY2ggd2lsbCBzZXQgdGhlIHBvc2l0aW9ucyB0byB2YWxpZCB2YWx1ZXMuAENvdWxkIG5vdCBvcGVuIHJlbGF5IGxvZzogJXMAQXV0aGVudGljYXRpb24gcGx1Z2luIG5vdCBpbml0aWFsaXplZC4AQ2Fubm90IHVzZSB0aGUgZ2VuZXJhdGVkIHByaXZhdGUga2V5IGZpbGUuAFVuYXZhaWxhYmxlIHB1YmxpYyBrZXkgd2l0aCBmaW5nZXJwcmludCAlcyBmb3IgdXNlciAlcyBpbiB0ZW5hbmN5ICVzIC4AQ2Fubm90IG9idGFpbiB0aGUgT0NJIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgSU1EUyBzZXJ2aWNlLgBDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgSUFNIHNlcnZpY2UuAEludmFsaWQgYXV0aGVudGljYXRpb24gc3RyaW5nIGRldGFpbHMgZm9yIHVzZXI6IGAlc2BAYCVzYC4ATm9uZSBvZiB0aGUgZ3JvdXBzIHJldHVybmVkIGJ5IElBTSBtYXRjaGVzIGFueSBvZiB0aGUgZW50cmllcyBmcm9tIGF1dGhlbnRpY2F0aW9uIHN0cmluZy4AVXNlciBpcyBub3QgcGFydCBvZiBhbnkgZ3JvdXBzLiBIb3dldmVyLCBhY2NvdW50IGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGdyb3VwIG1hcHBpbmcuAFJlY2VpdmVkIE9wZW5TU0wgZXJyb3I6ICVzIHdoaWxlIGF1dGhlbnRpY2F0aW5nIHVzZXIgJXMgd2l0aCBmaW5nZXJwcmludCAlcyBpbiB0ZW5hbmN5ICVzIC4AJXM6IFdhcm5pbmcgTGV2ZWwgMSAoJWxsdSBNaUIpOiBhdmFpbGFibGU9JWxsdSBNaUIsIHRvdGFsPSVsbHUgTWlCLCB1c2VkPSUuMmYlJSwgbXlzcWxkPSVsbHUgTWlCACVzOiBXYXJuaW5nIExldmVsIDIgKCVsbHUgTWlCKTogYXZhaWxhYmxlPSVsbHUgTWlCLCB0b3RhbD0lbGx1IE1pQiwgdXNlZD0lLjJmJSUsIG15c3FsZD0lbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAzICglbGx1IE1pQik6IGF2YWlsYWJsZT0lbGx1IE1pQiwgdG90YWw9JWxsdSBNaUIsIHVzZWQ9JS4yZiUlLCBteXNxbGQ9JWxsdSBNaUIAVGhlIG1lbWJlciAlczoldSwgd2l0aCBVVUlEOiAlcywgd2FzIHNldCBhcyB0aGUgc2luZ2xlIHByZWZlcnJlZCBjb25zZW5zdXMgbGVhZGVyLgBTb21ldGhpbmcgd2VudCB3cm9uZyB0cnlpbmcgdG8gc2V0IHRoZSBtZW1iZXIgJXM6JXUsIHdpdGggVVVJRDogJXMsIGFzIHRoZSBzaW5nbGUgcHJlZmVycmVkIGNvbnNlbnN1cyBsZWFkZXIuIFBsZWFzZSBxdWVyeSB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX2NvbW11bmljYXRpb25faW5mb3JtYXRpb24gdGFibGUgdG8gc2VlIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiB0b29rIGVmZmVjdCwgaS5lLiB3aGV0aGVyIHRoZSBwcmVmZXJyZWQgY29uc2Vuc3VzIGxlYWRlciBtYXRjaGVzIHRoZSBjdXJyZW50IHByaW1hcnkuIElmIG5vdCwgY29uc2lkZXIgZWxlY3RpbmcgYSBkaWZmZXJlbnQgcHJpbWFyeSB0byB0cnkgYWdhaW4uIFBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbG9nIGFuZCBHQ1NfREVCVUdfVFJBQ0UgZm9yIG1vcmUgaW5mb3JtYXRpb24gdGhhdCBtYXkgaGVscCB1bmRlcnN0YW5kaW5nIHdoYXQgd2VudCB3cm9uZy4AQWxsIG1lbWJlcnMgd2VyZSBzZXQgYXMgY29uc2Vuc3VzIGxlYWRlcnMuAFNvbWV0aGluZyB3ZW50IHdyb25nIHRyeWluZyB0byBzZXQgYWxsIG1lbWJlcnMgYXMgY29uc2Vuc3VzIGxlYWRlcnMuIFBsZWFzZSBxdWVyeSB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX2NvbW11bmljYXRpb25faW5mb3JtYXRpb24gdGFibGUgdG8gc2VlIHdoZXRoZXIgdGhlIG9wZXJhdGlvbiB0b29rIGVmZmVjdCwgaS5lLiB3aGV0aGVyIHRoZSBjb25zZW5zdXMgbGVhZGVycyBtYXRjaCBhbGwgbWVtYmVycy4gSWYgbm90LCBjb25zaWRlciByZXNldHRpbmcgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gcHJvdG9jb2wgdG8gYSB2ZXJzaW9uIDwgOC4wLjIyLCBvciBzd2l0Y2ggdG8gc2luZ2xlLXByaW1hcnkgbW9kZSBhbmQgYmFjayBhZ2FpbiB0byBtdWx0aS1wcmltYXJ5IG1vZGUsIHRvIHRyeSBhZ2Fpbi4gUGxlYXNlIGNoZWNrIHRoZSBlcnJvciBsb2cgYW5kIEdDU19ERUJVR19UUkFDRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0aGF0IG1heSBoZWxwIHVuZGVyc3RhbmRpbmcgd2hhdCB3ZW50IHdyb25nLgBUaGlzIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl9wYXhvc19zaW5nbGVfbGVhZGVyIG9wdGlvbiB2YWx1ZSBvZiAnJWQnIHRoYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwJ3MgdmFsdWUgKCclZCcpLiBUaGlzIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASW52YWxpZCBhbmQvb3IgY29ycnVwdGVkIG11bHRpIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGluIFVzZXJfYXR0cmlidXRlcyBjb2x1bW4gaW4gbXlzcWwudXNlciB0YWJsZS4gIiVzIi4AUGx1Z2luICclLS4xOTJzJyBpcyBub3QgbG9hZGVkOyBJZ25vcmluZyB1c2VyACVzOiBUaGUgY2hhcmFjdGVyIHNldCAlcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nICVzIGluc3RlYWQuACVzOiAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0ICVzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgJXMgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4ATWlzc2luZyBkYXRhIGRpcmVjdG9yeSBmb3IgSUNVIHJlZ3VsYXIgZXhwcmVzc2lvbnM6ICVzLgBNb3JlIHRoYW4gOTAlJSBvZiBmaWxlcyBvcGVuZWQgb3V0IG9mIHRoZSBpbm5vZGJfb3Blbl9maWxlcyBsaW1pdCBhcmUgZmlsZXMgdGhhdCBhcmUgbm90IGVhc3kgdG8gY2xvc2UuIFRoZSBwZXJmb3JtYW5jZSBvZiBzeXN0ZW0gbWF5IGRlZ3JhZGUuIENvbnNpZGVyIGluY3JlYXNpbmcgdmFsdWUgb2YgdGhlIGlubm9kYl9vcGVuX2ZpbGVzIHN5c3RlbSB2YXJpYWJsZS4gVGhlcmUgYXJlICV6dSBzdWNoIGZpbGVzIG9wZW5lZCBvdXQgb2YgdGhlIHRvdGFsIGxpbWl0IGZvciBhbGwgZmlsZXMgb3BlbmVkIG9mICV6dS4AVHJ5aW5nIHRvIG9wZW4gYSBmaWxlIGZvciAlbGxkIHNlY29uZHMuIENvbmZpZ3VyYXRpb24gb25seSBhbGxvd3MgZm9yICV6dSBvcGVuIGZpbGVzLiBDb25zaWRlciBzZXR0aW5nIGlubm9iYXNlX29wZW5fZmlsZXMgaGlnaGVyLgBDb25uZWN0aW9uIGNsb3NlZC4gR2xvYmFsIGNvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAENvbm5lY3Rpb24gY2xvc2VkLiBDb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBBdWRpdCBMb2cgaXMgZGlzYWJsZWQuIEVuYWJsZSBpdCB3aXRoIGF1ZGl0X2xvZ19kaXNhYmxlID0gZmFsc2UuAE9wdGlvbiAtLXRscy12ZXJzaW9uIG9yIC0tYWRtaW4tdGxzLXZlcnNpb24gaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUgJXMuAFJlbGF5IGxvZyByZWNvdmVyeSBvbiBjaGFubmVsIHdpdGggR1RJRF9PTkxZPTEuIFRoZSBjaGFubmVsIHdpbGwgc3dpdGNoIHRvIGEgbmV3IHJlbGF5IGxvZyBhbmQgdGhlIEdUSUQgcHJvdG9jb2wgd2lsbCBiZSB1c2VkIHRvIHJlcGxpY2F0ZSB1bmFwcGxpZWQgdHJhbnNhY3Rpb25zLgBOdW1iZXIgb2YgU1RBTkRCWV9TRVJWRVIgdmFsdWVzIGV4Y2VlZGVkIG1heGltdW0gbGltaXQgb2YgNjQuAFNvdXJjZSBrZXlyaW5nIGRvZXMgbm90IGhhdmUgYW55IGtleXMgdG8gbWlncmF0ZS4AQ2Fubm90IHBlcnNpc3QgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZXMgYmVjYXVzZSBrZXlyaW5nIGNvbXBvbmVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlIGFuZCBwZXJzaXN0X3NlbnNpdGl2ZV92YXJpYWJsZXNfaW5fcGxhaW50ZXh0IGlzIHNldCB0byBPRkYuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBrZXlyaW5nIHNlcnZpY2VzIGFyZSBhY3RpdmUgYW5kIHJlcXVpcmVkIGtleXMgYXJlIGF2YWlsYWJsZS4AQ2Fubm90IGludGVycHJldCBwZXJzaXN0ZWQgU0VOU0lUSVZFIHN5c3RlbSB2YXJpYWJsZXMuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBrZXlyaW5nIHNlcnZpY2VzIGFyZSBhY3RpdmUgYW5kIHJlcXVpcmVkIGtleXMgYXJlIGF2YWlsYWJsZS4AS2V5cmluZyBoYXMgdG8gYmUgbG9hZGVkIHRocm91Z2ggbWFuaWZlc3QgZmlsZSBpbiBvcmRlciB0byBzdXBwb3J0IHNlY3VyZSBzdG9yYWdlIGZvciBwZXJzaXN0ZWQgdmFyaWFibGVzAENvdWxkIG5vdCBmaW5kIG1hc3RlciBrZXkgJXMgaW4ga2V5cmluZwBBIG5ldyBtYXN0ZXIga2V5ICVzIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQARmFpbGVkIHRvIGVuY3J5cHQgJXMgdXNpbmcgJXMARmFpbGVkIHRvIGRlY3J5cHQgJXMgdXNpbmcgJXMAUGVyc2lzdGluZyBTRU5TSVRJVkUgdmFyaWFibGVzIGluIGVuY3J5cHRlZCBmb3JtIHJlcXVpcmVzIGtleXJpbmcgY29tcG9uZW50IGxvYWRlZCB0aHJvdWdoIG1hbmlmZXN0IGZpbGUuAFVzaW5nIGplbWFsbG9jLmRsbCBmb3IgbXlfbWFsbG9jIGFuZCB1dDo6bWFsbG9jIGV0Yy4AJXMuACVzLgAlcy4AUGFzc3dvcmQgZm9yIHRoZSBhY2NvdW50ICclLS40OHMnQCclLS42NHMnIGhhcyBleHBpcmVkLiBUbyBsb2cgaW4sIGVpdGhlciBjaGFuZ2UgaXQgdXNpbmcgYSBjbGllbnQgdGhhdCBzdXBwb3J0cyBleHBpcmVkIHBhc3N3b3JkcyBvciBzZW5kIHRoZSBjaGFuZ2UgcmVxdWVzdCB0byBhbiBhZG1pbmlzdHJhdG9yLgBUaHJlYWQgcG9vbCBwbHVnaW4gc3RhcnRlZCBzdWNjZXNzZnVsbHkgd2l0aCBwYXJhbWV0ZXJzOiAlcwB0aHJlYWRfcG9vbF9kZWRpY2F0ZWRfbGlzdGVuZXJzIGNhbm5vdCBiZSBzZXQgdW5sZXNzIHRocmVhZF9wb29sX21heF90cmFuc2FjdGlvbnNfbGltaXQgPiAwACVzACVzAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIGVtcHR5LCB3aGljaCBpbmRpY2F0ZXMgaXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkgSW5ub0RCIG9yIGJlY29tZSBjb3JydXB0ZWQuIFBsZWFzZSByZXN0b3JlIHRoZSBjb3JyZWN0IGZpbGUgb3IgdHJ5IHJlY292ZXJpbmcgd2l0aG91dCB0aGUgcmVkbyBmaWxlcywgaW4gcmVhZC1vbmx5IG1vZGUsIGJ5IHByb3ZpZGluZyAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT02LgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBzbWFsbGVyIHRoYW4gJWxsdSBieXRlcywgd2hpY2ggaW5kaWNhdGVzIGl0IHdhcyBub3QgZ2VuZXJhdGVkIGJ5IElubm9EQiBvciBiZWNvbWUgY29ycnVwdGVkLiBQbGVhc2UgcmVzdG9yZSB0aGUgY29ycmVjdCBmaWxlLgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBsYXJnZXIgdGhhbiAlbGx1IGJ5dGVzLCB3aGljaCBpbmRpY2F0ZXMgaXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkgSW5ub0RCIG9yIGJlY29tZSBjb3JydXB0ZWQuIFBsZWFzZSByZXN0b3JlIHRoZSBjb3JyZWN0IGZpbGUuAEZhaWxlZCB0byByZWFkIGhlYWRlciBvZiB0aGUgcmVkbyBsb2cgZmlsZSAlcwAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgcmVkbyBsb2cgZGlyZWN0b3J5ICVzIGhhcyByZWRvIGxvZyBmaWxlcyBpbnNpZGUuIEFib3J0aW5nLgBGYWlsZWQgdG8gbGlzdCByZWRvIGxvZyBmaWxlcyBpbiB0aGUgcmVkbyBsb2cgZGlyZWN0b3J5ICVzAE5laXRoZXIgZm91bmQgJXMgc3ViZGlyZWN0b3J5LCBub3IgJXMqIGZpbGVzIGluICVzAENhbm5vdCByZXN0b3JlIGNsb25lZCBkYXRhIGRpcmVjdG9yeSwgSW5ub0RCIHJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUhAEVycm9yICVkIGVuY291bnRlcmVkIHdoZW4gd3JpdGluZyB0byB0aGUgcmVkbyBsb2cgZmlsZTogJXMuAFJlZG8gbG9nIHdyaXRlciBpcyB3YWl0aW5nIGZvciBhIG5ldyByZWRvIGxvZyBmaWxlLiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4ARm91bmQgY2hlY2twb2ludCBMU04gJWxsdSBpbiBhIHJlZG8gbG9nIGZpbGUgJXMsIGJ1dCB0aGUgZmlsZSByZXByZXNlbnRzIHJhbmdlIG9mIExTTiB2YWx1ZXMgWyVsbHUsICVsbHUpLCBzbyB0aGUgZmlsZSBpcyBjb3JydXB0ZWQuAFJlZG8gbG9nIGlzIHJ1bm5pbmcgb3V0IG9mIGZyZWUgc3BhY2UsIHBhdXNpbmcgdXNlciB0aHJlYWRzLi4uIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBSZWRvIGxvZyByZWNsYWltZWQgc29tZSBmcmVlIHNwYWNlLCByZXN1bWluZyB1c2VyIHRocmVhZHMuAElnbm9yZWQgZGVwcmVjYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpbm5vZGJfbG9nX2ZpbGVfc2l6ZS4gVXNlZCBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgaW5zdGVhZC4ASWdub3JlZCBkZXByZWNhdGVkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlubm9kYl9sb2dfZmlsZXNfaW5fZ3JvdXAuIFVzZWQgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IGluc3RlYWQuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgd2hlbiBpbm5vZGItZm9yY2UtcmVjb3ZlcnkgPiAwLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIGluIHJlYWQtb25seSBtb2RlICgtLWlubm9kYi1yZWFkLW9ubHkpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIG9uIGNsb25lZCBkYXRhIGRpcmVjdG9yeS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyBiZWNhdXNlIHRoZXkgYXJlIG1hcmtlZCBhcyB1bmluaXRpYWxpemVkLiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIHdoZW4gdGhlIHJlZG8gbG9nIGlzIGNvcnJ1cHRlZC4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyB3aGVuIHRoZXJlIGlzIG5vbi1wZXJzaXN0ZWQgREQgbWV0YWRhdGEgaW4gcmVkby4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcywgYmVjYXVzZSBJbm5vREIgZmFpbGVkIHRvIHJlYWNoIHN0YXRlIGluIHdoaWNoIHJlZG8gbG9nIGlzIGxvZ2ljYWxseSBlbXB0eS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4ARmFpbGVkIHRvIHJlc2l6ZSB0aGUgcmVkbyBsb2cgc3luY2hyb25vdXNseSwgYmVjYXVzZSBJbm5vREIgZmFpbGVkIHRvIHJlYWNoIHN0YXRlIGluIHdoaWNoIHJlZG8gbG9nIGlzIGxvZ2ljYWxseSBlbXB0eS4gUGxlYXNlIHVzZSBhbiBvbGRlciB2ZXJzaW9uIG9mIE15U1FMIC0gcmVjb3ZlciBhbmQgc2h1dGRvd24gKHdpdGggaW5ub2RiLWZhc3Qtc2h1dGRvd24gPCAyKS4AVGhlIHJlZG8gbG9nIGZpbGUgJXMgY29tZXMgZnJvbSBvdGhlciBkYXRhIGRpcmVjdG9yeSB0aGFuIHJlZG8gbG9nIGZpbGUgJXMuAFRoZSByZWRvIGxvZyBmaWxlICVzIGhhcyBpbnZhbGlkIHN0YXJ0X2xzbiAlbGx1LgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBoYXMgc3RhcnRfbHNuICVsbHUgYnV0IGV4cGVjdGVkICVsbHUgKGVuZF9sc24gb2YgdGhlIHByZXZpb3VzIHJlZG8gbG9nIGZpbGUpLgBNaXNzaW5nIHJlZG8gbG9nIGZpbGUgJXMgKHdpdGggc3RhcnRfbHNuID0gJWxsdSkuAFRoZSBsYXRlc3QgZm91bmQgY2hlY2twb2ludCBpcyBhdCBsc24gPSAlbGx1IGluIHJlZG8gbG9nIGZpbGUgJXMuAFVzZXIgaGFzIHNldCBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgdG8gJWxsdU0uAFJlZG8gbG9nIGhhcyBiZWVuIHJlcXVlc3RlZCB0byByZXNpemUgZnJvbSAlbGx1TSB0byAlbGx1TS4AUmVkbyBsb2cgcmVzaXplIGhhcyBiZWVuIGNhbmNlbGxlZC4AUmVkbyBsb2cgaGFzIGJlZW4gcmVzaXplZCB0byAlbGx1TS4AVXBncmFkaW5nIHJlZG8gbG9nOiAlbGx1TSwgTFNOPSVsbHUuAE1hcmtlZCB0aGUgY3VycmVudCByZWRvIGxvZyBmaWxlICVzIGFzIGluY29tcGxldGUuAEZhaWxlZCB0byByZW1vdmUgcmVkbyBsb2cgZmlsZSAlcy4ARmFpbGVkIHRvIHJlbmFtZSAlcyB3aGVuIGNyZWF0aW5nIHJlZG8gbG9nIGZpbGUgJXMgKGVycm9yOiAlZCkAUmVkbyBsb2cgZmlsZXMgY3JlYXRlZCBieSB1bmtub3duIGNyZWF0b3IgJXMuAEZvdW5kIGV4aXN0aW5nIHJlZG8gbG9nIGZpbGVzLCBidXQgYXQgbGVhc3Qgb25lIGlzIG1pc3NpbmcuIEl0IGlzIHVua25vd24gaWYgcmVjb3ZlcnkgY291bGQgcmVhY2ggcGh5c2ljYWxseSBjb25zaXN0ZW50IHN0YXRlLiBQbGVhc2UgY29uc2lkZXIgcmVzdG9yaW5nIGZyb20gYmFja3VwIG9yIHByb3ZpZGluZyAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeSA+IDAuAEZvdW5kIHJlZG8gbG9nIGZpbGUgJXMgd2hpY2ggaGFzIGZvcm1hdCAodiVsdSkgYW5kIGlzIHN0b3JlZCBvdXRzaWRlICNpbm5vZGJfcmVkby4ARm91bmQgcmVkbyBsb2cgZmlsZSAlcyB3aGljaCBoYXMgZm9ybWF0ICh2JWx1KSBhbmQgaXMgc3RvcmVkIGluc2lkZSAjaW5ub2RiX3JlZG8uAEZvdW5kIHJlZG8gbG9nIGZpbGVzIHdpdGggZGlmZmVyZW50IGZvcm1hdHM6ICVzIGhhcyBmb3JtYXQgdiVsdSwgJXMgaGFzIGZvcm1hdCB2JWx1LgBNaXNzaW5nIGliX2xvZ2ZpbGUwIGluIHRoZSBkaXJlY3RvcnkgJXMuAEZhaWxlZCB0byBpbml0aWFsaXplIHNlcnZpY2VzIHJlcXVpcmVkIHRvIGhhbmRsZSByZWRvIGxvZyBQRlMgdGFibGVzLgBGYWlsZWQgdG8gY3JlYXRlIHJlZG8gbG9nIFBGUyB0YWJsZXMuAFRydW5jYXRpbmcgcmVkbyBsb2cgZmlsZSAlcy4uLgBGYWlsZWQgdG8gcmVzaXplIHVudXNlZCByZWRvIGxvZyBmaWxlICVzIHRvICVsbHUgTUIgKCVzKS4ARmFpbGVkIHRvIHJlbW92ZSB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcy4ARmFpbGVkIHRvIHJlbmFtZSB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcyB0byAlcy4ARmFpbGVkIHRvIG1hcmsgdW51c2VkIHJlZG8gbG9nIGZpbGUgJXMgYXMgaW4gdXNlIChieSByZW5hbWluZyB0byAlcykuAEZhaWxlZCB0byBtYXJrIHJlZG8gbG9nIGZpbGUgJXMgYXMgdW51c2VkIChieSByZW5hbWluZyB0byAlcykuAE9wdGlvbiBpbm5vZGJfZGVkaWNhdGVkX3NlcnZlciBpcyBpZ25vcmVkIGZvciBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHksIGJlY2F1c2UgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LCBpbm5vZGJfbG9nX2ZpbGVfc2l6ZSBvciBpbm5vZGJfbG9nX2ZpbGVzX2luX2dyb3VwIGlzIHNwZWNpZmllZCBleHBsaWNpdGx5LiBSZWRvIGxvZyBjYXBhY2l0eTogJWxsdU0uAERlcHJlY2F0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGlubm9kYl9sb2dfZmlsZV9zaXplIGFuZC9vciBpbm5vZGJfbG9nX2ZpbGVzX2luX2dyb3VwIGhhdmUgYmVlbiB1c2VkIHRvIGNvbXB1dGUgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5PSVsbHUuIFBsZWFzZSB1c2UgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5IGluc3RlYWQuAFRoaXMgbWVtYmVyIHdhcyB1bmFibGUgdG8gbG9nIHRoZSBWaWV3X2NoYW5nZV9sb2dfZXZlbnQgaW50byB0aGUgYmluYXJ5IGxvZywgaGVuY2UgaXQgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAuIFBsZWFzZSBjaGVjayB0aGF0IHRoZXJlIGlzIGF2YWlsYWJsZSBkaXNrIHNwYWNlIGFuZCBhZGQgdGhlIG1lbWJlciBiYWNrIHRvIHRoZSBncm91cC4ARm91bmQgaW52YWxpZCBldmVudCBzZXF1ZW5jZSB3aGlsZSByZWNvdmVyaW5nIGZyb20gYmluYXJ5IGxvZyBmaWxlICclcycsIGJldHdlZW4gcG9zaXRpb25zICVsbHUgYW5kICVsbHU6ICVzLiBUaGUgcmVjb3ZlcnkgcHJvY2VzcyB3YXMgc3RvcHBlZCBlYXJseSBhbmQgbm8gdHJhbnNhY3Rpb24gd2FzIHJlY292ZXJlZC4gU2lkZSBlZmZlY3RzIG1heSBiZSB0cmFuc2FjdGlvbnMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIGJldHdlZW4gdGhlIGJpbmFyeSBsb2cgYW5kIHRoZSBzdG9yYWdlIGVuZ2luZXMsIG9yIHRyYW5zYWN0aW9ucyBrZXB0IGJ5IHN0b3JhZ2UgZW5naW5lcyBpbiBhIHByZXBhcmVkIHN0YXRlIChwb3NzaWJseSBob2xkaW5nIGxvY2tzKS4gRWl0aGVyIGZpeCB0aGUgaXNzdWVzIHdpdGggdGhlIGJpbmFyeSBsb2cgb3IsIHRvIHJlbGVhc2UgcG9zc2libHkgYWNxdWlyZWQgbG9ja3MsIGRpc2FibGUgdGhlIGJpbmFyeSBsb2cgZHVyaW5nIHNlcnZlciByZWNvdmVyeS4gTm90ZSB0aGF0IGRpc2FibGluZyB0aGUgYmluYXJ5IGxvZyBtYXkgbGVhZCB0byBsb3NzIG9mIHRyYW5zYWN0aW9ucyB0aGF0IHdlcmUgYWxyZWFkeSBhY2tub3dsZWRnZWQgYXMgc3VjY2Vzc2Z1bCB0byBjbGllbnQgY29ubmVjdGlvbnMgYW5kIG1heSBoYXZlIGJlZW4gcmVwbGljYXRlZCB0byBvdGhlciBzZXJ2ZXJzIGluIHRoZSB0b3BvbG9neS4AU3RvcmFnZSBlbmdpbmVzIGZhaWxlZCB0byByZWNvdmVyIG9uZSBvciBtb3JlIHRyYW5zYWN0aW9ucy4gVGhlIHJlY292ZXJ5IHByb2Nlc3Mgd2FzIHN0b3BwZWQgZWFybHksIGNoZWNrIHByZXZpb3VzIG1lc3NhZ2VzIGZvciB0aGUgZGV0YWlscyBvbiBmYWlsZWQgdHJhbnNhY3Rpb25zLiBTaWRlIGVmZmVjdHMgbWF5IGJlIHRyYW5zYWN0aW9ucyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgYmV0d2VlbiB0aGUgYmluYXJ5IGxvZyBhbmQgdGhlIHN0b3JhZ2UgZW5naW5lcywgb3IgdHJhbnNhY3Rpb25zIGtlcHQgYnkgc3RvcmFnZSBlbmdpbmVzIGluIGEgcHJlcGFyZWQgc3RhdGUgKHBvc3NpYmx5IGhvbGRpbmcgbG9ja3MpLiBFaXRoZXIgZml4IHRoZSBpc3N1ZXMgd2l0aCB0aGUgc3RvcmFnZSBlbmdpbmUgKG91dC1vZi1tZW1vcnksIG5vIGRpc2sgc3BhY2UsIGV0Yykgb3IsIHRvIHJlbGVhc2UgcG9zc2libHkgYWNxdWlyZWQgbG9ja3MgaGVsZCBieSBYQSB0cmFuc2FjdGlvbnMsIGRpc2FibGUgdGhlIGJpbmFyeSBsb2cgZHVyaW5nIHNlcnZlciByZWNvdmVyeSBhbmQgY2hlY2sgY29uc2lzdGVuY3kgYmV0d2VlbiBzdG9yYWdlIGVuZ2luZXMgYW5kIGJpbmFyeSBsb2cgZmlsZXMuAENyYXNoIHJlY292ZXJ5IGZpbmlzaGVkIGluICVzIGVuZ2luZS4gJXMARmFpbGVkIHRvIGNvbW1pdCAlcyBpbiAlcywgd2l0aCBmYWlsdXJlIGNvZGUgJXMuAEZhaWxlZCB0byByb2xsYmFjayAlcyBpbiAlcywgd2l0aCBmYWlsdXJlIGNvZGUgJXMuAEZhaWxlZCB0byBwcmVwYXJlICVzIGluICVzLCB3aXRoIGZhaWx1cmUgY29kZSAlcy4AQ2Fubm90IHJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGFub3RoZXIgY29tcG9uZW50LgBDYW5ub3QgdW5yZWdpc3RlciB2YXJpYWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBDYW5ub3QgcmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQuAENhbm5vdCB1bnJlZ2lzdGVyIGZ1bmN0aW9uICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAEludmFsaWQgYXJndW1lbnRzIHRvIGZ1bmN0aW9uICclcycuIEV4cGVjdGVkIHZhbHVlczogJXMuAEludmFsaWQgYWxnb3JpdGhtIHZhbHVlICclLjIwcycgaW4gZnVuY3Rpb24gJXMuAEludmFsaWQga2V5IGxlbmd0aCAnJWQnIGZvciBmdW5jdGlvbiAnJXMnIHdpdGggYWxnb3JpdGhtICclLjIwcycuIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgYmV0d2VlbiBbJWQsICVkXS4ARmFpbGVkIHRvIGdlbmVyYXRlIHByaXZhdGUga2V5IG9mIGxlbmd0aCAnJWQnIHdpdGggYWxnb3JpdGhtICclLjIwcycgaW4gZnVuY3Rpb24gJyVzJy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAEZhaWxlZCB0byBnZW5lcmF0ZSBwdWJsaWMga2V5IHdpdGggYWxnb3JpdGhtICclLjIwcycgZm9yIGdpdmVuIHByaXZhdGUga2V5IGluIGZ1bmN0aW9uICclcycuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3Igd291bGQgaGF2ZSBiZWVuIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBJbnZhbGlkIGRhdGEgbGVuZ3RoICclZCcgKGluIGJ5dGVzKSBmb3IgZnVuY3Rpb24gJyVzJyB3aXRoIGFsZ29yaXRobSAnJS4yMHMnLiBUaGUgbWF4aW11bSBzdXBwb3J0IGRhdGEgbGVuZ3RoIGZvciBnaXZlbiBwcml2YXRlIGtleSBpcyAlZCAoaW4gYnl0ZXMpLgBDb3VsZCBub3QgZW5jcnlwdCBkYXRhIGluIGZ1bmN0aW9uICclcycgdXNpbmcgYWxnb3JpdGhtICclLjIwcycuIERhdGEgbGVuZ3RoIHdhcyAnJWQnIGJ5dGVzLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgYmVlbiBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4AQ291bGQgbm90IGRlY3J5cHQgZGF0YSBpbiBmdW5jdGlvbiAnJXMnIHVzaW5nIGFsZ29yaXRobSAnJS4yMHMnLiBEYXRhIGxlbmd0aCB3YXMgJyVkJyBieXRlcy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAENvdWxkIG5vdCBzaWduIGRhdGEgaW4gZnVuY3Rpb24gJyVzJyB1c2luZyBhbGdvcml0aG0gJyUuMjBzJyBhbmQgZGlnZXN0IHR5cGUgJyUuMjBzJy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBSZWNlaXZlZCBPcGVuU1NMIGVycm9yIGluIGZ1bmN0aW9uICclcycgZm9yIGFsZ29yaXRobSAnJXMnOiAnJXMnAEluIGZ1bmN0aW9uICclcycgd2l0aCBhbGdvcml0aG0gJyVzJzogaW5zdWZmaWNpZW50IG91dHB1dCBidWZmZXIgbGVuZ3RoICclenUnLiBSZXF1aXJlZCBsZW5ndGggJyV6dScuACVzJXMAU2V0dGluZyBzZXNzaW9uIHZhbHVlcyBmb3Igc3lzdGVtIHZhcmlhYmxlcyBvbmx5IG1ha2VzIHNlbnNlIGluIGEgdXNlciBzZXNzaW9uIChmYWlsZWQgdG8gc2V0ICclLjI1NnMnKS4AQnVpbGRJRFtzaGExXT0lcwBGYWlsZWQgdG8gcmVnaXN0ZXIgZHluYW1pYyBwcml2aWxlZ2UgJXMuAFJlZG8gbG9nIHdyaXRlciBpcyB3YWl0aW5nIGZvciAlcyByZWRvIGxvZyBjb25zdW1lciB3aGljaCBpcyBjdXJyZW50bHkgcmVhZGluZyBMU049JWxsdSBwcmV2ZW50aW5nIHJlY2xhbWF0aW9uIG9mIHN1YnNlcXVlbnQgcG9ydGlvbiBvZiB0aGUgcmVkbyBsb2cuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgAlcwBSZWNvdmVyeTogR2VuZXJhdGluZyBpbmRleCBpbmZvcm1hdGlvbiBmb3IgSU5TVEFOVCBEREwgVGFibGUgaW4gOC4wLjI5IGZvcm1hdABGYWlsZWQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwLiAlcwBGYWlsZWQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwLiBDb3VsZCBub3QgYWNxdWlyZSByZXNvdXJjZSBncm91cHMgZ2xvYmFsIGxvY2suAEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuIENvdWxkIG5vdCBhY3F1aXJlIGxvY2sgb24gcmVzb3VyY2UgZ3JvdXAgJXMuAEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuIFVuYWJsZSB0byBhcHBseSByZXNvdXJjZSBncm91cCBjb250cm9sbGVyICVzLgBGYWlsZWQgdG8gY2xlYXIgaW5zdGFudCBkcm9wIGNvbHVtbiBtZXRhZGF0YSBmb3IgdGFibGUgJXMAQ2Fubm90IG9wZW4gc2lnbmluZyBrZXkgZmlsZSAlcy4AT3V0IG9mIG1lbW9yeSEgQ2Fubm90IGNyZWF0ZSBwcml2YXRlIGtleS4AQ2Fubm90IHJlYWQgc2lnbmluZyBrZXkgZmlsZSAlcy4ASW5jb21wbGV0ZSBrZXk6IG1pc3NpbmcgTmFtZS9UeXBlIGZvciB0aGUgS2V5OiAlcy4ARHVwbGljYXRlIGtleSBmb3VuZCBpbiBrZXlyaW5nIHdpdGggTmFtZTogJXMgYW5kIE93bmVyOiAlcy4ARXJyb3IgcGFyc2luZyBKU09OIHJlc3BvbnNlICVzLgBJbnZhbGlkIEpTT04gcmVzcG9uc2UhAEhUVFAgcmVxdWVzdCBmYWlsZWQgd2l0aCBlcnJvcjogJyVzJwBWYXJpYWJsZSB0aHJlYWRfcG9vbC4lcyB3YXMgdXBkYXRlZDogJXMAJXMAU3RhdHVzIGNvZGUgJXU6IENvbXBsZXRlZABTdGF0dXMgY29kZSAldTogJXUlJSBjb21wbGV0ZQBTdGF0dXMgY29kZSAldTogJXMASW52YWxpZCB2YWx1ZSBzZXQgdG8gdGhyZWFkX3Bvb2xfcXVlcnlfdGhyZWFkc19wZXJfZ3JvdXAuIFZhbGlkIHZhbHVlIHJhbmdlIGlzICV1IC0gJXUuAFF1ZXJ5IHRocmVhZHMgY291bnQoJXUpIGV4Y2VlZHMgdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCgldSkgcGVyIGdyb3VwLiBQbGVhc2UgdXNlIHF1ZXJ5IHRocmVhZHMgY291bnQgcGVyIGdyb3VwIHNtYWxsZXIgb3IgZXF1YWwgdG8gbWF4IHRyYW5zYWN0aW9uIHRocmVhZHMgbGltaXQgcGVyIGdyb3VwAEZvdW5kIHBhZ2UgdHlwZSBtaXNtYXRjaC4gRXhwZWN0ZWQgJXUsIGZvdW5kICV1LCBpbiBwYWdlOiBzcGFjZV9pZD0lbHUgcGFnZV9ubz0gJWx1AHByZWFkZXI6IHNwYWNlX2lkPSV6dSwgdGFibGU9JXMsIGluZGV4PSVzLCBzY2FuX2N0eD0lenUsIGN0eD0lenUsIHRocmVhZF9pZD0lenUsIG5fdGhyZWFkcz0lenUAYnVsa2xvYWQ6IHNwYWNlX2lkPSV6dSwgdGFibGU9JXMsIGluZGV4PSVzLCBoZWlnaHQ9JXp1LCBuX2V4dGVudHM9JXp1LCBuX3BhZ2VzPSV6dQBidWxrZmx1c2hlcjogc2xlZXBfY291bnQ9JXp1LCBzbGVlcF9kdXJhdGlvbj0lenUgbWlsbGlzZWNvbmRzLCB0b3RhbF9zbGVlcD0lenUgbWlsbGlzZWNvbmRzLCBwYWdlc19mbHVzaGVkPSV6dQAlczogT3ZlciA2NyBwZXJjZW50IG9mIHRoZSBidWZmZXIgcG9vbCAoY3Vycl9zaXplPSV6dSBNQikgaXMgb2NjdXBpZWQgYnkgbG9jayBoZWFwcyBvciB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleCBvciBCVUZfQkxPQ0tfTUVNT1JZIHBhZ2VzLiBDaGVjayB0aGF0IHlvdXIgdHJhbnNhY3Rpb25zIGRvIG5vdCBzZXQgdG9vIG1hbnkgcm93IGxvY2tzLiBNYXliZSB5b3Ugc2hvdWxkIG1ha2UgdGhlIGJ1ZmZlciBwb29sIGJpZ2dlcj8uIFN0YXJ0aW5nIHRoZSBJbm5vREIgTW9uaXRvciB0byBwcmludCBkaWFnbm9zdGljcy4AJXM6IE92ZXIgOTUgcGVyY2VudCBvZiB0aGUgYnVmZmVyIHBvb2wgKGN1cnJfc2l6ZT0lenUgTUIpIGlzIG9jY3VwaWVkIGJ5IGxvY2sgaGVhcHMgb3IgdGhlIGFkYXB0aXZlIGhhc2ggaW5kZXggb3IgQlVGX0JMT0NLX01FTU9SWSBwYWdlcy4gQ2hlY2sgdGhhdCB5b3VyIHRyYW5zYWN0aW9ucyBkbyBub3Qgc2V0IHRvbyBtYW55IHJvdyBsb2Nrcy4gTWF5YmUgeW91IHNob3VsZCBtYWtlIHRoZSBidWZmZXIgcG9vbCBiaWdnZXI/LiBXZSBpbnRlbnRpb25hbGx5IGdlbmVyYXRlIGEgc2VnIGZhdWx0IHRvIHByaW50IGEgc3RhY2sgdHJhY2Ugb24gTGludXghACVzOiB0YWJsZT0lcywgaW5kZXg9JXMsIG5fdW5pcT0lenUsIG5fZmllbGRzPSV6dSwgbGhzPSglcyksIHJocz0oJXMpAEZhaWxlZCB0byBhcHBseSByb3cgZXZlbnQgd2l0aCAlZCBjb2x1bW5zLCBvcmlnaW5hdGluZyBmcm9tIGEgc2VydmVyIG9mIHZlcnNpb24gJXMgb24gdGFibGUgJyUtLjE5MnMuJS0uMTkycycsIHdoaWNoIGhhcyAlZCBjb2x1bW5zLCBvbmUgb2Ygd2hpY2ggaXMgYSBnZW5lcmF0ZWQgaW1wbGljaXQgcHJpbWFyeSBrZXkuIFJlcGxpY2F0aW9uIGlzIHVuc3VwcG9ydGVkIHdoZW4gdGhlIHNvdXJjZSBzZXJ2ZXIgaXMgb2xkZXIgdGhhbiA4LjAuMzAsIHRoZSByZXBsaWNhIHRhYmxlIGhhcyBhIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleSwgYW5kIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBjb2x1bW4gY291bnQsIG5vdCBjb3VudGluZyB0aGUgcmVwbGljYSdzIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleS4gQWxpZ24gdGhlIHRhYmxlIHNjaGVtYXMgb24gc291cmNlIGFuZCByZXBsaWNhLCBhbmQgcmVzdGFydCByZXBsaWNhdGlvbi4AQnVsayBleGVjdXRvcjogJXMAQnVsayBsb2FkZXI6ICVzAFRoZSBmaXJzdCBmaWxlIGJlaW5nIGxvYWRlZCBjb250YWluZWQgbGVzcyBsaW5lcyB0aGFuIHRoZSBpZ25vcmUgY2xhdXNlAEJ1bGsgcmVhZGVyOiAlcwBCdWxrIHJlYWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBsaWJjdXJsAEJ1bGsgcmVhZGVyIGdvdCBsaWJjdXJsIGVycm9yOiAlcwBCdWxrIHJlYWRlciBnb3QgZXJyb3IgcmVzcG9uc2UgZnJvbSBzZXJ2ZXI6ICVsZABCdWxrIHJlYWRlciBnb3QgZXJyb3IgaW4gY29tbXVuaWNhdGlvbiB3aXRoIHNvdXJjZSBzZXJ2ZXIsIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscwBNaXNzaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBhdCByb3cgJWxkIGluIGZpbGUgJXMuIEFkZCBPUFRJT05BTExZIHRvIHRoZSBFTkNMT1NFRCBCWSBjbGF1c2UgdG8gYWxsb3cgdGhpcyBpbnB1dC4AVGhlIG51bWJlciBvZiBpbnB1dCBjb2x1bW5zIHRoYXQgbmVlZCB0byBiZSBidWZmZXJlZCBmb3IgcGFyc2luZyBleGNlZWRlZCBwcmVkZWZpbmVkIGJ1ZmZlciBtYXggc2l6ZSBmb3IgZmlsZSAnJXMnLgBUaGUgY29sdW1uIGRhdGEgdGhhdCBuZWVkZWQgdG8gYmUgY29waWVkIGR1ZSB0byBlc2NhcGVkIGNoYXJhY3RlcnMgZXhjZWVkZWQgdGhlIHNpemUgb2YgdGhlIGludGVybmFsIGNvcHkgYnVmZmVyIGZvciBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCByb3cgdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBlbmRpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgTlVMTCBlc2NhcGUgKE4pIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgY29sdW1uIHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnIHJlc3VsdGluZyBpbiBpbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZS4ASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUtLjE5MnMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycATlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnACVzOiBMT0FEIEJVTEsgREFUQSB0aHJlYWQgZmFpbHVyZSAoZXJyPSVsdSksIHRhYmxlPSVzLCBpbmRleD0lcwAlczogRmFpbGVkIHRvIG1lcmdlIHN1Yi10cmVlcyBpbiBMT0FEIEJVTEsgREFUQSwgdGFibGU9JXMsIGluZGV4PSVzLCBkZXRhaWxzPSVzAExPQUQgQlVMSyBEQVRBOiBCdWZmZXIgcG9vbCBzaXplIGlzICV6dS4gUmVkdWNpbmcgY29uY3VycmVuY3kgZnJvbSAlenUgdG8gJXp1LiB0YWJsZT0lcy4AQysrIEV4Y2VwdGlvbiBjYXVnaHQgd2hpbGUgJXMgdGhlICVzIHBsdWdpbjogWyVzXQBSZXBsaWNhdGlvbiBjb25maWd1cmF0aW9uIGFwcGVhcnMgdG8gYmUgY29ycnVwdGVkLiBPbiBHcm91cCBSZXBsaWNhdGlvbiBjaGFubmVsICclcycsIHNldHRpbmcgUkVRVUlSRV9UQUJMRV9QUklNQVJZX0tFWV9DSEVDSyB0byAnR0VORVJBVEUnIGlzIG5vdCBhbGxvd2VkLiBSdW4gUkVTRVQgUkVQTElDQSBBTEwgdG8gcmVzZXQgaXQuAFJlY29yZCBoYXMgYm90aCBpbnN0YW50IGFuZCB2ZXJzaW9uIGJpdCBzZXQuAFRoaXMgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX3BheG9zX3NpbmdsZV9sZWFkZXIgb3B0aW9uIHZhbHVlIG9mIDEgYW5kIGl0IGlzIHRyeWluZyB0byBqb2luIGEgZ3JvdXAgd2l0aCBDb21tdW5pY2F0aW9uIFByb3RvY29sIFZlcnNpb24gYmVsb3cgOC4wLjI3LiBJbiBvcmRlciB0byBqb2luIHRoaXMgZ3JvdXAsIGdyb3VwX3JlcGxpY2F0aW9uX3BheG9zX3NpbmdsZV9sZWFkZXIgdmFsdWUgbXVzdCBiZSBjb25maWd1cmVkIHRvIHRoZSB2YWx1ZSAwLiBUaGlzIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASWdub3JlZCB0aGUgaW5ub2RiLXJlZG8tbG9nLWNhcGFjaXR5IG9wdGlvbiBpbiB0aGUgSW5ub2RiIHJlYWQtb25seSBtb2RlLiBTZXJ2ZXIgaXMgdXNpbmcgYWN0aXZlIHJlZG8gbG9nIGZpbGVzLgBVbmV4cGVjdGVkIElOU1RBTlRMWSBBZGRlZCAvIERyb3BwZWQgY29sdW1uOiAnJXMnIGF0IHBvc2l0aW9uICVsdSBmb3IgVGFibGUgJyVzJywgSW5kZXggJyVzJyB3aGlsZSBnZXR0aW5nIFByaW1hcnkgS2V5IGZvciByb3cgbG9nZ2luZwAlcwBDb2x1bW4gbmFtZSAlcyBhbmQgaW50ZXJuYWxseSBnZW5lcmF0ZWQgSU5TVEFOVCBEUk9QIGNvbHVtbiBuYW1lICVzIGlzIGNhdXNpbmcgYSBjb25mbGljdC4ARmllbGQgbnVtYmVyOiAlbGx1IHRvbyBsYXJnZSwgVG90YWwgZmllbGRzIGluIFJlY29yZDogJXp1LgAlcwBUaGUgY29ubmVjdGlvbiBoYXMgdGltZWQgb3V0IGFmdGVyICVsdSByZXRyaWVzIGNvbm5lY3RpbmcgdG8gJyVzQCVzOiVkJyVzLCBhbmQgdGhlcmVmb3JlIHRoZSBNeVNRTCBzZXJ2ZXIgaXMgZ29pbmcgdG8gYXR0ZW1wdCBhbiBhc3luY2hyb25vdXMgcmVwbGljYXRpb24gY29ubmVjdGlvbiBmYWlsb3ZlciwgdG8gJyVzQCVzOiVkJwBUaGUgUmVwbGljYSB3aGljaCB3YXMgY29ubmVjdGVkIHRvIHNvdXJjZSAnJXM6JWQnLCBpcyBub3cgY29ubmVjdGVkIHRvIG5ldyBzb3VyY2UgJyVzOiVkJywgYnV0IHN0aWxsIGhhcyB0aGUgc2FtZSBzZXJ2ZXJfdXVpZCAlcy4AVGhlIHNlcnZlcl91dWlkIGZvciBzb3VyY2Ugc2VydmVyICclczolZCcgaGFzIGNoYW5nZWQgZnJvbSAlcyB0byAlcy4gVGhpcyBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgeW91IGhhdmUgY2hhbmdlZCBpdCBtYW51YWxseS4AVGhlIHNvdXJjZSBzZXJ2ZXIgaGFzIGNoYW5nZWQgZnJvbSAnJXM6JWQnIHdpdGggc2VydmVyX3V1aWQgJXMsIHRvICclczolZCcgd2l0aCBzZXJ2ZXJfdXVpZCAlcy4AUmVwbGljYSByZWNlaXZlciB0aHJlYWQlczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnIHdpdGggc2VydmVyX3V1aWQ9JXMsIHNlcnZlcl9pZD0lZC4gU3RhcnRpbmcgcmVwbGljYXRpb24gZnJvbSBmaWxlICclcycsIHBvc2l0aW9uICclcycuAFJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkJXM6IGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzQCVzOiVkJyB3aXRoIHNlcnZlcl91dWlkPSVzLCBzZXJ2ZXJfaWQ9JWQuIFN0YXJ0aW5nIEdUSUQtYmFzZWQgcmVwbGljYXRpb24uAExvYWRlcjo6YnVpbGRfYWxsKCk6IENvbXBsZXRlZCBidWlsZGluZyAlenUgaW5kZXhlcyBmb3Igb2xkX3RhYmxlPSVzLCBuZXdfdGFibGU9JXMsIGVycj0lenUuAEJ1aWxkZXI6OmZpbmlzaCgpOiBDb21wbGV0ZWQgYnVpbGRpbmcgaW5kZXg9JXMgb2YgdGFibGU9JXMsIGVycj0lenUuACVzOiAnJXMnIGlzIGEgdXNlciBkZWZpbmVkIGNvbGxhdGlvbi4gVXNlciBkZWZpbmVkIGNvbGxhdGlvbnMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBhIGNvbXBpbGVkIGNvbGxhdGlvbiBpbnN0ZWFkLgBCdWlsZGVyOjppbml0KCk6IEluaXRpYWxpemUgZm9yIGJ1aWxkaW5nIGluZGV4PSVzIG9mIHRhYmxlPSVzLCBuX3RocmVhZHM9JXp1LCBzb3J0IGJ1ZmZlciBzaXplPSV6dSBieXRlcywgaS9vIGJ1ZmZlciBzaXplPSV6dSBieXRlcy4AU0VMRUNUIENPVU5UKCopIEZST00gdGFibGU9JXMsIG5fdGhyZWFkcz0lenUsIG5fcGFydGl0aW9ucz0lenUuAEluZGV4IGxvZyB2ZXJzaW9uICV1IGRpZCBub3QgbWF0Y2guIE1heCBpbmRleCB2ZXJzaW9uIGlzICV1LiBSZWNvdmVyeSBjYW4ndCBjb250aW51ZS4gUGxlYXNlIG1ha2Ugc3VyZSBzZXJ2ZXIgaXMgbm90IHN0YXJ0aW5nIHVwIHdpdGggdGhlIGRhdGFkaXIgZ2VuZXJhdGVkIGluIGZ1dHVyZSB2ZXJzaW9uLgBNdWx0aXBsZSBrZXlyaW5nIGNvbXBvbmVudCBVUk5zICclcycgZm91bmQgaW4gbWFuaWZlc3QgZmlsZSAnJXMnLiBPbmx5IG9uZSBrZXlyaW5nIGNvbXBvbmVudCBjYW4gYmUgbG9hZGVkIGF0IGEgdGltZS4AUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaGFzIGJlZW4gc3RhcnRlZC4ATWluaW11bSByZWNvcmQgZmxhZyBpcyB3cm9uZ2x5IHNldCB0byByZWMgb24gcGFnZSAnJWx1JyBhdCBsZXZlbCAnJWx1JyBmb3IgaW5kZXggJyVzJyBvZiB0YWJsZSAnJXMnLgBNaW5pbXVtIHJlY29yZCBmbGFnIGlzIG5vdCBzZXQgdG8gZmlyc3QgcmVjIG9uIHBhZ2UgJyVsdScgYXQgbGV2ZWwgJyVsdScgZm9yIGluZGV4ICclcycgb2YgdGFibGUgJyVzJy4AU3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQgc2xvdCAnJWQnIGZvciBjb21wb25lbnQgJyVzJy4AU3VjY2Vzc2Z1bGx5IGRlLXJlZ2lzdGVyZWQgc2xvdCAnJWQnIGZyb20gY29tcG9uZW50ICclcycuAENhbm5vdCBmcmVlIHJlc291cmNlcyBzdG9yZWQgYnkgY29tcG9uZW50ICclcycgaW4gdGhyZWFkIHdpdGggSUQ6ICclZCcuIENvbXBvbmVudCBmYWlsZWQgdG8gZnJlZSByZXF1aXJlZCByZXNvdXJjZXMuAFRyYW5zYWN0aW9uIElEOiAlbHUgZm91bmQgZm9yIHJlc3VycmVjdGluZyBpbnNlcnRzAFRyYW5zYWN0aW9uIElEOiAlbHUgZm91bmQgZm9yIHJlc3VycmVjdGluZyB1cGRhdGVzAElkZW50aWZpZWQgdGFibGUgSUQ6ICVsdSB0byBhY3F1aXJlIGxvY2sAQWNxdWlyZWQgbG9jayBvbiB0YWJsZSBJRDogJWx1LCBuYW1lOiAlcwBSZWNvcmRzIHJlYWQ6ICVsdSAtIFBhZ2VzIHJlYWQ6ICVsdQBUb3RhbCByZWNvcmRzIHJlc3VycmVjdGVkOiAlbHUgLSBUb3RhbCBwYWdlcyByZWFkOiAlbHUgLSBUb3RhbCB0YWJsZXMgYWNxdWlyZWQ6ICVsdQBSZXN1cnJlY3RlZCAlbHUgdHJhbnNhY3Rpb25zIGRvaW5nIGluc2VydHMuAFJlc3VycmVjdGVkICVsdSB0cmFuc2FjdGlvbnMgZG9pbmcgdXBkYXRlcy4ASW52YWxpZCBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcyc6ICVzLgBVbmtub3duIHVzZXIvdGVuYW5jeSAodXNlcjogJXMgdGVuYW5jeTogJXMpIGZvdW5kIGluIHNlY3VyaXR5IHRva2VuIHByb3ZpZGVkIGJ5ICclcycgZm9yICclcydAJyVzJy4AVmVyaWZpY2F0aW9uIGZhaWxlZCBmb3Igc2VjdXJpdHkgdG9rZW4gcHJvdmlkZWQgYnkgJyVzJyBmb3IgJyVzJ0AnJXMnIDogJXMuAENvdWxkIG5vdCBkb3dubG9hZCBJRERQIFB1YmxpYyBrZXkuIFBsZWFzZSBjaGVjayBpZiBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcycgaXMgdmFsaWQuAE5vbmUgb2YgdGhlIGdyb3VwcyBleHRyYWN0ZWQgZnJvbSBzZWN1cml0eSB0b2tlbiBtYXRjaGVzIGFueSBvZiB0aGUgZW50cmllcyBmcm9tIGF1dGhlbnRpY2F0aW9uIHN0cmluZy4AQ2Fubm90IHJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGFub3RoZXIgY29tcG9uZW50LgBDYW5ub3QgdW5yZWdpc3RlciB2YXJpYWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBDYW5ub3QgcmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgYW5vdGhlciBjb21wb25lbnQuAENhbm5vdCB1bnJlZ2lzdGVyIGZ1bmN0aW9uICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAENhbm5vdCByZWdpc3RlciBwcml2aWxlZ2UgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQuAENhbm5vdCB1bnJlZ2lzdGVyIHByaXZpbGVnZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBFcnJvciB3aGlsZSBleGVjdXRpbmcgVURGICVzLgBFcnJvciB3aGlsZSBleGVjdXRpbmcgVURGICVzOiAlcy4AJXMgZmFpbGVkLgAlcyBmYWlsZWQgd2l0aCAldS4ATG9jayBmYWlsZWQgYXQgJXMgOiAldS4ATG9jayBmcm9tICVzIDogJXUgZmFpbGVkIHRvIHVubG9jay4ATWFza2luZyBjb21wb25lbnQgZXJyb3I6ICclcycuACVzIGZhaWxlZC4AJXMgZmFpbGVkIGJlY2F1c2UgJXMuAENyZWF0aW9uIG9mIHJhbmRvbSBjb250ZXh0IGZhaWxlZC4AQ3JlYXRpb24gb2YgcmFuZG9tIGNvbnRleHQgZmFpbGVkIGJlY2F1c2UgJXMuAENhbm5vdCBhY2Nlc3MgJXMuJXMgdGFibGUuAENhbm5vdCByZWNvdmVyIGZyb20gZGV0ZWN0X29ubHkgZG91Ymxld3JpdGUgYnVmZmVyIGFzIHBhZ2UgJXUgZnJvbSBiYXRjaCBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHRlZC4ARGF0YWJhc2UgcGFnZSBjb3JydXB0aW9uIG9mIHRhYmxlc3BhY2UgJXMgc3BhY2VfaWQ6ICV1IHBhZ2VfbnVtOiAldS4gQ2Fubm90IHJlY292ZXIgaXQgZnJvbSB0aGUgZG91Ymxld3JpdGUgYnVmZmVyIGJlY2F1c2UgaXQgd2FzIHdyaXR0ZW4gaW4gZGV0ZWN0X29ubHktZG91Ymxld3JpdGUgbW9kZS4AaW5pdF9jb25uZWN0IHZhcmlhYmxlIGlzIGlnbm9yZWQgZm9yIHVzZXI6ICVzIGhvc3Q6ICVzIGR1ZSB0byBtdWx0aS1mYWN0b3IgcmVnaXN0cmF0aW9uIHJlcXVpcmVkIHNhbmRib3hpbmcARXhlY3V0aW9uIG9mIGFsdGVyIHRhYmxlICVzICVzIGZhaWxlZCBiZWNhdXNlICVzLgBUUCBjb25uIChwb3J0OiBtYW5hZ2VkKGRlbHRhKSwgYWN0aXZlLCBvcGVuZWQsIGNsb3NlZCwgYWRkZWQsIGRyb3BwZWQpOiAlcwBTY2hlZHVsZWQgcnVuIG9mIHRhc2sgJXMgZmFpbGVkAEludmFsaWQgZmx1c2ggaW50ZXJ2YWwgc3BlY2lmaWVkOiAlbHUuIFZhbGlkIHZhbHVlcyBhcmUgMCAob2ZmKSBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJWQuIEFkanVzdGluZyB0byAlZABDb3VsZCBub3QgcHVyZ2UgYmluYXJ5IGxvZ3Mgc2luY2UgYW5vdGhlciBzZXNzaW9uIGlzIGV4ZWN1dGluZyBMT0NLIElOU1RBTkNFIEZPUiBCQUNLVVAuIFdhaXQgZm9yIHRoYXQgc2Vzc2lvbiB0byByZWxlYXNlIHRoZSBsb2NrLgBNdWx0aS12YWx1ZXMgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBNeVNRTCBmb3JtYXQ6ICVzAEhlYXAgcmVxdWlyZWQgdG8gY29udmVydCBjb2x1bW5zIGlzIG5vdCBwcmVzZW50LgBNeVNRTCBzZXJ2ZXIgZG93bmdyYWRpbmcgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgZG93bmdyYWRlOiBDYW5ub3QgZG93bmdyYWRlIGZyb20gJXUgdG8gJXUuIFRhcmdldCBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBpcyBsb3dlciB0aGFuIHRoZSBzZXJ2ZXIgZG93bmdyYWRlIHRocmVzaG9sZCAldS4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgdXBncmFkZTogQ2Fubm90IHVwZ3JhZGUgZnJvbSAldSB0byAldS4gVGFyZ2V0IE15U1FMIHNlcnZlciB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gdGhlIHNlcnZlciB1cGdyYWRlIHRocmVzaG9sZCAldS4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgdXBncmFkZTogQ2Fubm90IHVwZ3JhZGUgZnJvbSAldSB0byAldS4gVXBncmFkZSB0byBuZXh0IG1ham9yIHZlcnNpb24gaXMgb25seSBhbGxvd2VkIGZyb20gdGhlIGxhc3QgTFRTIHJlbGVhc2UsIHdoaWNoIHZlcnNpb24gJXUgaXMgbm90LgBJbnZhbGlkIE15U1FMIHNlcnZlciBkb3duZ3JhZGU6IENhbm5vdCBkb3duZ3JhZGUgZnJvbSAldSB0byAldS4gRG93bmdyYWRlIGlzIG9ubHkgcGVybWl0dGVkIGJldHdlZW4gcGF0Y2ggcmVsZWFzZXMuAEZhaWxlZCB0byBnZXQgdGhlIGRhdGEgZGljdGlvbmFyeSBwcm9wZXJ0eSAlcy4ARmFpbGVkIHRvIHNldCB0aGUgZGF0YSBkaWN0aW9uYXJ5IHByb3BlcnR5ICVzLgBTZXJ2ZXIgZG93bmdyYWRlIGZyb20gJyVkJyB0byAnJWQnICVzLgAlcyBpbmZvcm1hdGlvbiBzY2hlbWEgZnJvbSB2ZXJzaW9uICV1IHRvICV1LgAlcyBwZXJmb3JtYW5jZSBzY2hlbWEgZnJvbSB2ZXJzaW9uICV1IHRvICV1LgBWYWx1ZSBmb3Igb3B0aW9uICclcycgY29udGFpbnMgY2lwaGVyICclcycgdGhhdCBpcyBlaXRoZXIgYmxvY2tlZCBvciBkZXByZWNhdGVkIChhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UpLiBQbGVhc2UgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4ARERMIGZhaWxlZCBhcyBCdWlsZGVyIGlzIGFscmVhZHkgZnJlZWQuIEJ1aWxkZXI6IHN0YXRlPSV1LCBlcnJvcl9zdGF0ZT0ldS4gSW5kZXg6IGlkPSV6dSwgbmFtZT0nJXMnLCBzcGFjZV9pZD0ldSwgcGFnZT0ldS4gVGFibGU6IG9sZF9uYW1lPSclcycsIG5ld19uYW1lPSclcycuAE1lbWJlciBpZGVudGlmaWVkICVzOiAnJXMnIGRvZXMgbm90IGV4aXN0IG9uIEdyb3VwIFJlcGxpY2F0aW9uIG1lbWJlcnNoaXAgZHVyaW5nICVzLgBEZXByZWNhdGVkICclcycgdXNlZCAlcyB0aW1lcywgbGFzdCB0aW1lIHVzZWQgJyVzJy4AV2FpdGluZyBmb3IgJXUgY29ubmVjdGlvbnMgdG8gYmUgY2xvc2VkLgBXYWl0aW5nIGZvciBUSERzIGluIHBhcnRpdGlvbiAldSB0byBiZSBjbG9zZWQsICV1IHN0aWxsIGxlZnQuICV1IFRIRHMgbGVmdCBpbiB0b3RhbCBmb3IgYWxsIHBhcnRpdGlvbnMuAEluZGV4ICVzIG9mICVzLiVzIGV4Y2VlZHMgbGltaXQgb2YgJWx1IGJ5dGVzIHBlciBjb2x1bW4uAEZhaWxlZCB0byB1cGRhdGUgZGF0YSBkaXJlY3RvcnkgZmxhZyBmb3IgZGQgdGFibGUgd2l0aCB0YWJsZXNwYWNlIGlkICclbGx1JyB3aGVuIGliZCBmaWxlIGZvciAnJXMnIGlzIG1vdmVkIHRvIG5ldyBsb2NhdGlvbiAnJXMnIGR1cmluZyBzZXJ2ZXIgc2h1dGRvd24AJXMgREQgSUQ6ICVsbHUgLSBUYWJsZXNwYWNlICV1LCBuYW1lICclcycsIGZvdW5kIGF0ICclcycgb3V0c2lkZSBkZWZhdWx0IGRhdGEgZGlyZWN0b3J5LCBidXQgREQgbWlzc2VzIGluZm8gYWJvdXQgREFUQSBESVJFQ1RPUlkAVXBvbiByZWNvbm5lY3Rpb24gd2l0aCB0aGUgcmVwbGljYSwgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBkdW1wIHRocmVhZCBmb3IgJXMgPCVzPiwgYW4gZXhpc3RpbmcgZHVtcCB0aHJlYWQgd2l0aCB0aGUgc2FtZSAlcyB3YXMgZGV0ZWN0ZWQuIFRoZSBzb3VyY2UgaXMgdGVybWluYXRpbmcgdGhlIHByZXZpb3VzIGR1bXAgdGhyZWFkICgldSksIHdoaWNoIGlzIG5vcm1hbCBhbmQgZXhwZWN0ZWQuAFRoZSB0cmFuc2FjdGlvbiAnJS0uMTkycycgd2lsbCBjb21taXQgb3V0IG9mIG9yZGVyIHdpdGggcmVzcGVjdCB0byBpdHMgc291cmNlIHRvIGZvbGxvdyB0aGUgZ3JvdXAgZ2xvYmFsIG9yZGVyLgBDYW4gbm90IG9wZW4gdGFibGUgYCVzYC5gJXNgOyBmdW5jdGlvbnMgaW4gY29uc3RyYWludHMsIHBhcnRpdGlvbnMsIG9yIHZpcnR1YWwgY29sdW1ucyBtYXkgaGF2ZSBmYWlsZWQuACVzAEZhaWxlZCB0byBjcmVhdGUgdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGNlcnRpZmllciBicm9hZGNhc3QgdGhyZWFkIChUSERfY2VydGlmaWVyX2Jyb2FkY2FzdCkuAFRoZSBHcm91cCBSZXBsaWNhdGlvbiBjZXJ0aWZpZXIgYnJvYWRjYXN0IHRocmVhZCAoVEhEX2NlcnRpZmllcl9icm9hZGNhc3QpIHN0YXJ0ZWQuAFRoZSBHcm91cCBSZXBsaWNhdGlvbiBjZXJ0aWZpZXIgYnJvYWRjYXN0IHRocmVhZCAoVEhEX2NlcnRpZmllcl9icm9hZGNhc3QpIHN0b3BwZWQuAA==
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 1
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
errmsg.sys
379.13 KB
lrw-r--r--
2025-03-31 09:54:51
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).