REDROOM
PHP 7.4.33
Path:
Logout
Edit File
Size: 379.82 KB
Close
//usr/share/mysql-8.0/bulgarian/errmsg.sys
Text
Base64
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UBMEAFMTBABWEwQAWRMEAFwTBABfEwQAYhMEAGUTBABoEwQAaxMEAG4TBABxEwQAdBMEAHcTBAB6EwQAfRMEAIATBADoEwQAGhQEALMUBAAGFQQAcxYEAK0WBADbFgQADhcEAIgXBADJFwQA+BcEACcYBABHGAQAfBgEAMcYBADKGAQA3xgEAPYYBAAkGQQAThkEAIkZBADIGQQA9RkEAJEaBAC+GgQA9BoEACEbBABOGwQAkhsEAMgbBAABHAQAmBwEAO4cBAAeHQQABR4EADgeBADCHgQAgB8EAIMfBACGHwQAzR8EAB0gBACFIAQAsyAEALYgBAC5IAQA0CAEANMgBADWIAQA2SAEANwgBADfIAQA4iAEAI8hBADhIQQAOSIEAJUiBAC/IgQA8SIEAF8jBACPIwQAxiMEAOojBAADJAQAQCQEAIMkBAD9JAQAFSUEAEAlBACGJQQAWyYEANQmBAARJwQAqycEAOUnBAAOKAQARCgEAEcoBABKKAQATSgEAFAoBABTKAQAVigEAFkoBABcKAQAXygEAGIoBABlKAQAaCgEAGsoBABuKAQAcSgEAHQoBAB3KAQAeigEAH0oBACAKAQAgygEAIYoBACJKAQAjCgEAI8oBACSKAQAlSgEAJgoBACbKAQAnigEAKEoBACkKAQApygEAKooBACtKAQAsCgEALMoBAC2KAQAuSgEALwoBAC/KAQAwigEAMUoBADIKAQAyygEAM4oBADRKAQA1CgEANcoBADaKAQA3SgEAOAoBADjKAQA5igEAOkoBADsKAQA7ygEAPIoBAD1KAQA+CgEAPsoBAD+KAQAASkEAAQpBAAHKQQACikEAA0pBAAQKQQAEykEABYpBAAZKQQAHCkEAB8pBAAiKQQAJSkEACgpBAArKQQALikEADEpBAA0KQQANykEADopBAA9KQQAQCkEAEMpBABGKQQASSkEAEwpBABPKQQAUikEAFUpBABYKQQAWykEAF4pBABhKQQAZCkEAGcpBABqKQQAbSkEAHApBABzKQQAdikEAJUpBACYKQQAmykEAP8pBAACKgQABSoEAAgqBAALKgQADioEABEqBAAUKgQAFyoEABoqBAAdKgQAICoEACMqBAAmKgQAKSoEACwqBAAvKgQAMioEADUqBAA4KgQAOyoEAD4qBABBKgQARCoEAEcqBABKKgQATSoEAFAqBABTKgQAVioEAFkqBABcKgQAXyoEAGIqBABlKgQAaCoEAGsqBABuKgQAcSoEAHQqBAB3KgQAeioEAH0qBACAKgQAgyoEAIYqBACJKgQAjCoEAI8qBACSKgQAlSoEAJgqBACbKgQAnioEAKEqBACkKgQApyoEAKoqBACtKgQAsCoEALMqBAC2KgQAuSoEALwqBAC/KgQAwioEAMUqBADIKgQAyyoEAM4qBADRKgQA1CoEANcqBADaKgQA3SoEAOAqBADjKgQA5ioEAOkqBADsKgQA7yoEAPIqBAD1KgQA+CoEAPsqBAD+KgQAASsEAAQrBAAHKwQACisEAA0rBAAQKwQAEysEABYrBAAZKwQAHCsEAB8rBAAiKwQAJSsEACgrBAArKwQALisEADErBAA0KwQANysEADorBAA9KwQAQCsEAEMrBABGKwQASSsEAEwrBABPKwQAUisEAFUrBABYKwQAWysEAF4rBABhKwQAZCsEAGcrBABqKwQAbSsEAHArBABzKwQAdisEAHkrBAB8KwQAfysEAIIrBACFKwQAiCsEAIsrBACOKwQAkSsEAJQrBACXKwQAmisEAJ0rBACgKwQAoysEAKYrBACpKwQArCsEAK8rBACyKwQAtSsEALgrBAC7KwQAvisEAMErBADEKwQAxysEAMorBADNKwQA0CsEANMrBADWKwQA2SsEANwrBADfKwQA4isEAOUrBADoKwQA6ysEAO4rBADxKwQA9CsEAPcrBAD6KwQA/SsEAAAsBAADLAQABiwEAAksBAAMLAQADywEABIsBAAVLAQAGCwEABssBAAeLAQAISwEACQsBAAnLAQAKiwEAC0sBAAwLAQAMywEADYsBAA5LAQAPCwEAD8sBABCLAQARSwEAEgsBABLLAQATiwEAFEsBABULAQA2CwEAEMtBABrLQQAyi0EABouBABaLgQAii4EANcuBAAVLwQARS8EAHYvBACmLwQA7S8EAAwwBAAlMAQANjAEAGcwBACWMAQA2zAEABoxBABbMQQAdjEEAJsxBAC8MQQA/zEEABsyBAA7MgQAXDIEAI0yBAC4MgQA3DIEAB0zBABaMwQAhTMEAOIzBAAANAQAGzQEADs0BABlNAQAjDQEAO80BABPNQQAdjUEALI1BADRNQQAPTYEAHM2BAC3NgQAFzcEAJM3BADYNwQA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b3J0IGJ1ZmZlciBzaXplAFVuZXhwZWN0ZWQgRU9GIGZvdW5kIHdoZW4gcmVhZGluZyBmaWxlICclLS4xOTJzJyAoZXJybm86ICVkIC0gJXMpAFRvbyBtYW55IGNvbm5lY3Rpb25zAE91dCBvZiBtZW1vcnk7IGNoZWNrIGlmIG15c3FsZCBvciBzb21lIG90aGVyIHByb2Nlc3MgdXNlcyBhbGwgYXZhaWxhYmxlIG1lbW9yeTsgaWYgbm90LCB5b3UgbWF5IGhhdmUgdG8gdXNlICd1bGltaXQnIHRvIGFsbG93IG15c3FsZCB0byB1c2UgbW9yZSBtZW1vcnkgb3IgeW91IGNhbiBhZGQgbW9yZSBzd2FwIHNwYWNlAENhbid0IGdldCBob3N0bmFtZSBmb3IgeW91ciBhZGRyZXNzAEJhZCBoYW5kc2hha2UAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJyB0byBkYXRhYmFzZSAnJS0uMTkycycAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJyAodXNpbmcgcGFzc3dvcmQ6ICVzKQBObyBkYXRhYmFzZSBzZWxlY3RlZABVbmtub3duIGNvbW1hbmQAQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgbnVsbABVbmtub3duIGRhdGFiYXNlICclLS4xOTJzJwBUYWJsZSAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMAVW5rbm93biB0YWJsZSAnJS0uMTI5cycAQ29sdW1uICclLS4xOTJzJyBpbiAlLS4xOTJzIGlzIGFtYmlndW91cwBTZXJ2ZXIgc2h1dGRvd24gaW4gcHJvZ3Jlc3MAVW5rbm93biBjb2x1bW4gJyUtLjE5MnMnIGluICclLS4xOTJzJwAnJS0uMTkycycgaXNuJ3QgaW4gR1JPVVAgQlkAQ2FuJ3QgZ3JvdXAgb24gJyUtLjE5MnMnAFN0YXRlbWVudCBoYXMgc3VtIGZ1bmN0aW9ucyBhbmQgY29sdW1ucyBpbiBzYW1lIHN0YXRlbWVudABDb2x1bW4gY291bnQgZG9lc24ndCBtYXRjaCB2YWx1ZSBjb3VudABJZGVudGlmaWVyIG5hbWUgJyUtLjEwMHMnIGlzIHRvbyBsb25nAER1cGxpY2F0ZSBjb2x1bW4gbmFtZSAnJS0uMTkycycARHVwbGljYXRlIGtleSBuYW1lICclLS4xOTJzJwBEdXBsaWNhdGUgZW50cnkgJyUtLjE5MnMnIGZvciBrZXkgJWQASW5jb3JyZWN0IGNvbHVtbiBzcGVjaWZpZXIgZm9yIGNvbHVtbiAnJS0uMTkycycAJXMgbmVhciAnJS0uODBzJyBhdCBsaW5lICVkAFF1ZXJ5IHdhcyBlbXB0eQBOb3QgdW5pcXVlIHRhYmxlL2FsaWFzOiAnJS0uMTkycycASW52YWxpZCBkZWZhdWx0IHZhbHVlIGZvciAnJS0uMTkycycATXVsdGlwbGUgcHJpbWFyeSBrZXkgZGVmaW5lZABUb28gbWFueSBrZXlzIHNwZWNpZmllZDsgbWF4ICVkIGtleXMgYWxsb3dlZABUb28gbWFueSBrZXkgcGFydHMgc3BlY2lmaWVkOyBtYXggJWQgcGFydHMgYWxsb3dlZABTcGVjaWZpZWQga2V5IHdhcyB0b28gbG9uZzsgbWF4IGtleSBsZW5ndGggaXMgJWQgYnl0ZXMAS2V5IGNvbHVtbiAnJS0uMTkycycgZG9lc24ndCBleGlzdCBpbiB0YWJsZQBCTE9CIGNvbHVtbiAnJS0uMTkycycgY2FuJ3QgYmUgdXNlZCBpbiBrZXkgc3BlY2lmaWNhdGlvbiB3aXRoIHRoZSB1c2VkIHRhYmxlIHR5cGUAQ29sdW1uIGxlbmd0aCB0b28gYmlnIGZvciBjb2x1bW4gJyUtLjE5MnMnIChtYXggPSAlbHUpOyB1c2UgQkxPQiBvciBURVhUIGluc3RlYWQASW5jb3JyZWN0IHRhYmxlIGRlZmluaXRpb247IHRoZXJlIGNhbiBiZSBvbmx5IG9uZSBhdXRvIGNvbHVtbiBhbmQgaXQgbXVzdCBiZSBkZWZpbmVkIGFzIGEga2V5ACVzOiByZWFkeSBmb3IgY29ubmVjdGlvbnMuClZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQAJXM6IE5vcm1hbCBzaHV0ZG93bgoAJXM6IEdvdCBzaWduYWwgJWQuIEFib3J0aW5nIQoAJXM6IFNodXRkb3duIGNvbXBsZXRlCgAlczogRm9yY2luZyBjbG9zZSBvZiB0aHJlYWQgJWxkICB1c2VyOiAnJS0uNDhzJwoAQ2FuJ3QgY3JlYXRlIElQIHNvY2tldABUYWJsZSAnJS0uMTkycycgaGFzIG5vIGluZGV4IGxpa2UgdGhlIG9uZSB1c2VkIGluIENSRUFURSBJTkRFWDsgcmVjcmVhdGUgdGhlIHRhYmxlAEZpZWxkIHNlcGFyYXRvciBhcmd1bWVudCBpcyBub3Qgd2hhdCBpcyBleHBlY3RlZDsgY2hlY2sgdGhlIG1hbnVhbABZb3UgY2FuJ3QgdXNlIGZpeGVkIHJvd2xlbmd0aCB3aXRoIEJMT0JzOyBwbGVhc2UgdXNlICdmaWVsZHMgdGVybWluYXRlZCBieScAVGhlIGZpbGUgJyUtLjEyOHMnIG11c3QgYmUgaW4gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSBvciBiZSByZWFkYWJsZSBieSBhbGwARmlsZSAnJS0uMjAwcycgYWxyZWFkeSBleGlzdHMAUmVjb3JkczogJWxkICBEZWxldGVkOiAlbGQgIFNraXBwZWQ6ICVsZCAgV2FybmluZ3M6ICVsZABSZWNvcmRzOiAlbGQgIER1cGxpY2F0ZXM6ICVsZABJbmNvcnJlY3QgcHJlZml4IGtleTsgdGhlIHVzZWQga2V5IHBhcnQgaXNuJ3QgYSBzdHJpbmcsIHRoZSB1c2VkIGxlbmd0aCBpcyBsb25nZXIgdGhhbiB0aGUga2V5IHBhcnQsIG9yIHRoZSBzdG9yYWdlIGVuZ2luZSBkb2Vzbid0IHN1cHBvcnQgdW5pcXVlIHByZWZpeCBrZXlzAFlvdSBjYW4ndCBkZWxldGUgYWxsIGNvbHVtbnMgd2l0aCBBTFRFUiBUQUJMRTsgdXNlIERST1AgVEFCTEUgaW5zdGVhZABDYW4ndCBEUk9QICclLS4xOTJzJzsgY2hlY2sgdGhhdCBjb2x1bW4va2V5IGV4aXN0cwBSZWNvcmRzOiAlbGQgIER1cGxpY2F0ZXM6ICVsZCAgV2FybmluZ3M6ICVsZABZb3UgY2FuJ3Qgc3BlY2lmeSB0YXJnZXQgdGFibGUgJyUtLjE5MnMnIGZvciB1cGRhdGUgaW4gRlJPTSBjbGF1c2UAVW5rbm93biB0aHJlYWQgaWQ6ICVsdQBZb3UgYXJlIG5vdCBvd25lciBvZiB0aHJlYWQgJWx1AE5vIHRhYmxlcyB1c2VkAFRvbyBtYW55IHN0cmluZ3MgZm9yIGNvbHVtbiAlLS4xOTJzIGFuZCBTRVQAQ2FuJ3QgZ2VuZXJhdGUgYSB1bmlxdWUgbG9nLWZpbGVuYW1lICUtLjIwMHMuKDEtOTk5KQoAVGFibGUgJyUtLjE5MnMnIHdhcyBsb2NrZWQgd2l0aCBhIFJFQUQgbG9jayBhbmQgY2FuJ3QgYmUgdXBkYXRlZABUYWJsZSAnJS0uMTkycycgd2FzIG5vdCBsb2NrZWQgd2l0aCBMT0NLIFRBQkxFUwBCTE9CLCBURVhULCBHRU9NRVRSWSBvciBKU09OIGNvbHVtbiAnJS0uMTkycycgY2FuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUASW5jb3JyZWN0IGRhdGFiYXNlIG5hbWUgJyUtLjEwMHMnAEluY29ycmVjdCB0YWJsZSBuYW1lICclLS4xMDBzJwBUaGUgU0VMRUNUIHdvdWxkIGV4YW1pbmUgbW9yZSB0aGFuIE1BWF9KT0lOX1NJWkUgcm93czsgY2hlY2sgeW91ciBXSEVSRSBhbmQgdXNlIFNFVCBTUUxfQklHX1NFTEVDVFM9MSBvciBTRVQgTUFYX0pPSU5fU0laRT0jIGlmIHRoZSBTRUxFQ1QgaXMgb2theQBVbmtub3duIGVycm9yAFVua25vd24gcHJvY2VkdXJlICclLS4xOTJzJwBJbmNvcnJlY3QgcGFyYW1ldGVyIGNvdW50IHRvIHByb2NlZHVyZSAnJS0uMTkycycASW5jb3JyZWN0IHBhcmFtZXRlcnMgdG8gcHJvY2VkdXJlICclLS4xOTJzJwBVbmtub3duIHRhYmxlICclLS4xOTJzJyBpbiAlLS4zMnMAQ29sdW1uICclLS4xOTJzJyBzcGVjaWZpZWQgdHdpY2UASW52YWxpZCB1c2Ugb2YgZ3JvdXAgZnVuY3Rpb24AVGFibGUgJyUtLjE5MnMnIHVzZXMgYW4gZXh0ZW5zaW9uIHRoYXQgZG9lc24ndCBleGlzdCBpbiB0aGlzIE15U1FMIHZlcnNpb24AQSB0YWJsZSBtdXN0IGhhdmUgYXQgbGVhc3QgMSBjb2x1bW4AVGhlIHRhYmxlICclLS4xOTJzJyBpcyBmdWxsAFVua25vd24gY2hhcmFjdGVyIHNldDogJyUtLjY0cycAVG9vIG1hbnkgdGFibGVzOyBNeVNRTCBjYW4gb25seSB1c2UgJWQgdGFibGVzIGluIGEgam9pbgBUb28gbWFueSBjb2x1bW5zAFJvdyBzaXplIHRvbyBsYXJnZS4gVGhlIG1heGltdW0gcm93IHNpemUgZm9yIHRoZSB1c2VkIHRhYmxlIHR5cGUsIG5vdCBjb3VudGluZyBCTE9CcywgaXMgJWxkLiBUaGlzIGluY2x1ZGVzIHN0b3JhZ2Ugb3ZlcmhlYWQsIGNoZWNrIHRoZSBtYW51YWwuIFlvdSBoYXZlIHRvIGNoYW5nZSBzb21lIGNvbHVtbnMgdG8gVEVYVCBvciBCTE9CcwBUaHJlYWQgc3RhY2sgb3ZlcnJ1bjogIFVzZWQ6ICVsZCBvZiBhICVsZCBzdGFjay4gIFVzZSAnbXlzcWxkIC0tdGhyZWFkX3N0YWNrPSMnIHRvIHNwZWNpZnkgYSBiaWdnZXIgc3RhY2sgaWYgbmVlZGVkAENyb3NzIGRlcGVuZGVuY3kgZm91bmQgaW4gT1VURVIgSk9JTjsgZXhhbWluZSB5b3VyIE9OIGNvbmRpdGlvbnMAVGFibGUgaGFuZGxlciBkb2Vzbid0IHN1cHBvcnQgTlVMTCBpbiBnaXZlbiBpbmRleC4gUGxlYXNlIGNoYW5nZSBjb2x1bW4gJyUtLjE5MnMnIHRvIGJlIE5PVCBOVUxMIG9yIHVzZSBhbm90aGVyIGhhbmRsZXIAQ2FuJ3QgbG9hZCBmdW5jdGlvbiAnJS0uMTkycycAQ2FuJ3QgaW5pdGlhbGl6ZSBmdW5jdGlvbiAnJS0uMTkycyc7ICUtLjE5MnMATm8gcGF0aHMgYWxsb3dlZCBmb3Igc2hhcmVkIGxpYnJhcnkARnVuY3Rpb24gJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzAENhbid0IG9wZW4gc2hhcmVkIGxpYnJhcnkgJyUtLjE5MnMnIChlcnJubzogJWQgJS0uMTI4cykAQ2FuJ3QgZmluZCBzeW1ib2wgJyUtLjEyOHMnIGluIGxpYnJhcnkARnVuY3Rpb24gJyUtLjE5MnMnIGlzIG5vdCBkZWZpbmVkAEhvc3QgJyUtLjI1NXMnIGlzIGJsb2NrZWQgYmVjYXVzZSBvZiBtYW55IGNvbm5lY3Rpb24gZXJyb3JzOyB1bmJsb2NrIHdpdGggJ215c3FsYWRtaW4gZmx1c2gtaG9zdHMnAEhvc3QgJyUtLjI1NXMnIGlzIG5vdCBhbGxvd2VkIHRvIGNvbm5lY3QgdG8gdGhpcyBNeVNRTCBzZXJ2ZXIAWW91IGFyZSB1c2luZyBNeVNRTCBhcyBhbiBhbm9ueW1vdXMgdXNlciBhbmQgYW5vbnltb3VzIHVzZXJzIGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgcGFzc3dvcmRzAFlvdSBtdXN0IGhhdmUgcHJpdmlsZWdlcyB0byB1cGRhdGUgdGFibGVzIGluIHRoZSBteXNxbCBkYXRhYmFzZSB0byBiZSBhYmxlIHRvIGNoYW5nZSBwYXNzd29yZHMgZm9yIG90aGVycwBDYW4ndCBmaW5kIGFueSBtYXRjaGluZyByb3cgaW4gdGhlIHVzZXIgdGFibGUAUm93cyBtYXRjaGVkOiAlbGQgIENoYW5nZWQ6ICVsZCAgV2FybmluZ3M6ICVsZABDYW4ndCBjcmVhdGUgYSBuZXcgdGhyZWFkIChlcnJubyAlZCk7IGlmIHlvdSBhcmUgbm90IG91dCBvZiBhdmFpbGFibGUgbWVtb3J5LCB5b3UgY2FuIGNvbnN1bHQgdGhlIG1hbnVhbCBmb3IgYSBwb3NzaWJsZSBPUy1kZXBlbmRlbnQgYnVnAENvbHVtbiBjb3VudCBkb2Vzbid0IG1hdGNoIHZhbHVlIGNvdW50IGF0IHJvdyAlbGQAQ2FuJ3QgcmVvcGVuIHRhYmxlOiAnJS0uMTkycycASW52YWxpZCB1c2Ugb2YgTlVMTCB2YWx1ZQBHb3QgZXJyb3IgJyUtLjY0cycgZnJvbSByZWdleHAATWl4aW5nIG9mIEdST1VQIGNvbHVtbnMgKE1JTigpLE1BWCgpLENPVU5UKCksLi4uKSB3aXRoIG5vIEdST1VQIGNvbHVtbnMgaXMgaWxsZWdhbCBpZiB0aGVyZSBpcyBubyBHUk9VUCBCWSBjbGF1c2UAVGhlcmUgaXMgbm8gc3VjaCBncmFudCBkZWZpbmVkIGZvciB1c2VyICclLS40OHMnIG9uIGhvc3QgJyUtLjI1NXMnACUtLjEyOHMgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAnJS0uNDhzJ0AnJS0uNjRzJyBmb3IgdGFibGUgJyUtLjY0cycAJS0uMTZzIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgZm9yIGNvbHVtbiAnJS0uMTkycycgaW4gdGFibGUgJyUtLjE5MnMnAElsbGVnYWwgR1JBTlQvUkVWT0tFIGNvbW1hbmQ7IHBsZWFzZSBjb25zdWx0IHRoZSBtYW51YWwgdG8gc2VlIHdoaWNoIHByaXZpbGVnZXMgY2FuIGJlIHVzZWQAVGhlIGhvc3Qgb3IgdXNlciBhcmd1bWVudCB0byBHUkFOVCBpcyB0b28gbG9uZwBUYWJsZSAnJS0uMTkycy4lLS4xOTJzJyBkb2Vzbid0IGV4aXN0AFRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5lZCBmb3IgdXNlciAnJS0uNDhzJyBvbiBob3N0ICclLS4yNTVzJyBvbiB0YWJsZSAnJS0uMTkycycAVGhlIHVzZWQgY29tbWFuZCBpcyBub3QgYWxsb3dlZCB3aXRoIHRoaXMgTXlTUUwgdmVyc2lvbgBZb3UgaGF2ZSBhbiBlcnJvciBpbiB5b3VyIFNRTCBzeW50YXg7IGNoZWNrIHRoZSBtYW51YWwgdGhhdCBjb3JyZXNwb25kcyB0byB5b3VyIE15U1FMIHNlcnZlciB2ZXJzaW9uIGZvciB0aGUgcmlnaHQgc3ludGF4IHRvIHVzZQBEZWxheWVkIGluc2VydCB0aHJlYWQgY291bGRuJ3QgZ2V0IHJlcXVlc3RlZCBsb2NrIGZvciB0YWJsZSAlLS4xOTJzAFRvbyBtYW55IGRlbGF5ZWQgdGhyZWFkcyBpbiB1c2UAQWJvcnRlZCBjb25uZWN0aW9uICVsZCB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnICglLS42NHMpAEdvdCBhIHBhY2tldCBiaWdnZXIgdGhhbiAnbWF4X2FsbG93ZWRfcGFja2V0JyBieXRlcwBHb3QgYSByZWFkIGVycm9yIGZyb20gdGhlIGNvbm5lY3Rpb24gcGlwZQBHb3QgYW4gZXJyb3IgZnJvbSBmY250bCgpAEdvdCBwYWNrZXRzIG91dCBvZiBvcmRlcgBDb3VsZG4ndCB1bmNvbXByZXNzIGNvbW11bmljYXRpb24gcGFja2V0AEdvdCBhbiBlcnJvciByZWFkaW5nIGNvbW11bmljYXRpb24gcGFja2V0cwBHb3QgdGltZW91dCByZWFkaW5nIGNvbW11bmljYXRpb24gcGFja2V0cwBHb3QgYW4gZXJyb3Igd3JpdGluZyBjb21tdW5pY2F0aW9uIHBhY2tldHMAR290IHRpbWVvdXQgd3JpdGluZyBjb21tdW5pY2F0aW9uIHBhY2tldHMAUmVzdWx0IHN0cmluZyBpcyBsb25nZXIgdGhhbiAnbWF4X2FsbG93ZWRfcGFja2V0JyBieXRlcwBUaGUgdXNlZCB0YWJsZSB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCBCTE9CL1RFWFQgY29sdW1ucwBUaGUgdXNlZCB0YWJsZSB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCBBVVRPX0lOQ1JFTUVOVCBjb2x1bW5zAElOU0VSVCBERUxBWUVEIGNhbid0IGJlIHVzZWQgd2l0aCB0YWJsZSAnJS0uMTkycycgYmVjYXVzZSBpdCBpcyBsb2NrZWQgd2l0aCBMT0NLIFRBQkxFUwBJbmNvcnJlY3QgY29sdW1uIG5hbWUgJyUtLjEwMHMnAFRoZSB1c2VkIHN0b3JhZ2UgZW5naW5lIGNhbid0IGluZGV4IGNvbHVtbiAnJS0uMTkycycAVW5hYmxlIHRvIG9wZW4gdW5kZXJseWluZyB0YWJsZSB3aGljaCBpcyBkaWZmZXJlbnRseSBkZWZpbmVkIG9yIG9mIG5vbi1NeUlTQU0gdHlwZSBvciBkb2Vzbid0IGV4aXN0AENhbid0IHdyaXRlLCBiZWNhdXNlIG9mIHVuaXF1ZSBjb25zdHJhaW50LCB0byB0YWJsZSAnJS0uMTkycycAQkxPQi9URVhUIGNvbHVtbiAnJS0uMTkycycgdXNlZCBpbiBrZXkgc3BlY2lmaWNhdGlvbiB3aXRob3V0IGEga2V5IGxlbmd0aABBbGwgcGFydHMgb2YgYSBQUklNQVJZIEtFWSBtdXN0IGJlIE5PVCBOVUxMOyBpZiB5b3UgbmVlZCBOVUxMIGluIGEga2V5LCB1c2UgVU5JUVVFIGluc3RlYWQAUmVzdWx0IGNvbnNpc3RlZCBvZiBtb3JlIHRoYW4gb25lIHJvdwBUaGlzIHRhYmxlIHR5cGUgcmVxdWlyZXMgYSBwcmltYXJ5IGtleQBUaGlzIHZlcnNpb24gb2YgTXlTUUwgaXMgbm90IGNvbXBpbGVkIHdpdGggUkFJRCBzdXBwb3J0AFlvdSBhcmUgdXNpbmcgc2FmZSB1cGRhdGUgbW9kZSBhbmQgeW91IHRyaWVkIHRvIHVwZGF0ZSBhIHRhYmxlIHdpdGhvdXQgYSBXSEVSRSB0aGF0IHVzZXMgYSBLRVkgY29sdW1uLiAlcwBLZXkgJyUtLjE5MnMnIGRvZXNuJ3QgZXhpc3QgaW4gdGFibGUgJyUtLjE5MnMnAENhbid0IG9wZW4gdGFibGUAVGhlIHN0b3JhZ2UgZW5naW5lIGZvciB0aGUgdGFibGUgZG9lc24ndCBzdXBwb3J0ICVzAFlvdSBhcmUgbm90IGFsbG93ZWQgdG8gZXhlY3V0ZSB0aGlzIGNvbW1hbmQgaW4gYSB0cmFuc2FjdGlvbgBHb3QgZXJyb3IgJWQgLSAnJS0uMTkycycgZHVyaW5nIENPTU1JVABHb3QgZXJyb3IgJWQgLSAnJS0uMTkycycgZHVyaW5nIFJPTExCQUNLAEdvdCBlcnJvciAlZCBkdXJpbmcgRkxVU0hfTE9HUwBHb3QgZXJyb3IgJWQgZHVyaW5nIENIRUNLUE9JTlQAQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHMpAFRoZSBzdG9yYWdlIGVuZ2luZSBmb3IgdGhlIHRhYmxlIGRvZXMgbm90IHN1cHBvcnQgYmluYXJ5IHRhYmxlIGR1bXAAQmlubG9nIGNsb3NlZCwgY2Fubm90IFJFU0VUIFNPVVJDRQBGYWlsZWQgcmVidWlsZGluZyB0aGUgaW5kZXggb2YgIGR1bXBlZCB0YWJsZSAnJS0uMTkycycARXJyb3IgZnJvbSBzb3VyY2U6ICclLS42NHMnAE5ldCBlcnJvciByZWFkaW5nIGZyb20gc291cmNlAE5ldCBlcnJvciB3cml0aW5nIHRvIHNvdXJjZQBDYW4ndCBmaW5kIEZVTExURVhUIGluZGV4IG1hdGNoaW5nIHRoZSBjb2x1bW4gbGlzdABDYW4ndCBleGVjdXRlIHRoZSBnaXZlbiBjb21tYW5kIGJlY2F1c2UgeW91IGhhdmUgYWN0aXZlIGxvY2tlZCB0YWJsZXMgb3IgYW4gYWN0aXZlIHRyYW5zYWN0aW9uAFVua25vd24gc3lzdGVtIHZhcmlhYmxlICclLS42NHMnAFRhYmxlICclLS4xOTJzJyBpcyBtYXJrZWQgYXMgY3Jhc2hlZCBhbmQgc2hvdWxkIGJlIHJlcGFpcmVkAFRhYmxlICclLS4xOTJzJyBpcyBtYXJrZWQgYXMgY3Jhc2hlZCBhbmQgbGFzdCAoYXV0b21hdGljPykgcmVwYWlyIGZhaWxlZABTb21lIG5vbi10cmFuc2FjdGlvbmFsIGNoYW5nZWQgdGFibGVzIGNvdWxkbid0IGJlIHJvbGxlZCBiYWNrAE11bHRpLXN0YXRlbWVudCB0cmFuc2FjdGlvbiByZXF1aXJlZCBtb3JlIHRoYW4gJ21heF9iaW5sb2dfY2FjaGVfc2l6ZScgYnl0ZXMgb2Ygc3RvcmFnZTsgaW5jcmVhc2UgdGhpcyBteXNxbGQgdmFyaWFibGUgYW5kIHRyeSBhZ2FpbgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2E7IHJ1biBTVE9QIFJFUExJQ0EgZmlyc3QAVGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgYSBydW5uaW5nIHJlcGxpY2E7IGNvbmZpZ3VyZSByZXBsaWNhIGFuZCBkbyBTVEFSVCBSRVBMSUNBAFRoZSBzZXJ2ZXIgaXMgbm90IGNvbmZpZ3VyZWQgYXMgcmVwbGljYTsgZml4IGluIGNvbmZpZyBmaWxlIG9yIHdpdGggQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTwBDb3VsZCBub3QgaW5pdGlhbGl6ZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZTsgbW9yZSBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZwBDb3VsZCBub3QgY3JlYXRlIHJlcGxpY2EgdGhyZWFkOyBjaGVjayBzeXN0ZW0gcmVzb3VyY2VzAFVzZXIgJS0uNjRzIGFscmVhZHkgaGFzIG1vcmUgdGhhbiAnbWF4X3VzZXJfY29ubmVjdGlvbnMnIGFjdGl2ZSBjb25uZWN0aW9ucwBZb3UgbWF5IG9ubHkgdXNlIGNvbnN0YW50IGV4cHJlc3Npb25zIHdpdGggU0VUAExvY2sgd2FpdCB0aW1lb3V0IGV4Y2VlZGVkOyB0cnkgcmVzdGFydGluZyB0cmFuc2FjdGlvbgBUaGUgdG90YWwgbnVtYmVyIG9mIGxvY2tzIGV4Y2VlZHMgdGhlIGxvY2sgdGFibGUgc2l6ZQBVcGRhdGUgbG9ja3MgY2Fubm90IGJlIGFjcXVpcmVkIGR1cmluZyBhIFJFQUQgVU5DT01NSVRURUQgdHJhbnNhY3Rpb24ARFJPUCBEQVRBQkFTRSBub3QgYWxsb3dlZCB3aGlsZSB0aHJlYWQgaXMgaG9sZGluZyBnbG9iYWwgcmVhZCBsb2NrAENSRUFURSBEQVRBQkFTRSBub3QgYWxsb3dlZCB3aGlsZSB0aHJlYWQgaXMgaG9sZGluZyBnbG9iYWwgcmVhZCBsb2NrAEluY29ycmVjdCBhcmd1bWVudHMgdG8gJXMAJyUtLjQ4cydAJyUtLjY0cycgaXMgbm90IGFsbG93ZWQgdG8gY3JlYXRlIG5ldyB1c2VycwBJbmNvcnJlY3QgdGFibGUgZGVmaW5pdGlvbjsgYWxsIE1FUkdFIHRhYmxlcyBtdXN0IGJlIGluIHRoZSBzYW1lIGRhdGFiYXNlAERlYWRsb2NrIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIGdldCBsb2NrOyB0cnkgcmVzdGFydGluZyB0cmFuc2FjdGlvbgBUaGUgdXNlZCB0YWJsZSB0eXBlIGRvZXNuJ3Qgc3VwcG9ydCBGVUxMVEVYVCBpbmRleGVzAENhbm5vdCBhZGQgZm9yZWlnbiBrZXkgY29uc3RyYWludABDYW5ub3QgYWRkIG9yIHVwZGF0ZSBhIGNoaWxkIHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzAENhbm5vdCBkZWxldGUgb3IgdXBkYXRlIGEgcGFyZW50IHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzAEVycm9yIGNvbm5lY3RpbmcgdG8gc291cmNlOiAlLS4xMjhzAEVycm9yIHJ1bm5pbmcgcXVlcnkgb24gc291cmNlOiAlLS4xMjhzAEVycm9yIHdoZW4gZXhlY3V0aW5nIGNvbW1hbmQgJXM6ICUtLjEyOHMASW5jb3JyZWN0IHVzYWdlIG9mICVzIGFuZCAlcwBUaGUgdXNlZCBTRUxFQ1Qgc3RhdGVtZW50cyBoYXZlIGEgZGlmZmVyZW50IG51bWJlciBvZiBjb2x1bW5zAENhbid0IGV4ZWN1dGUgdGhlIHF1ZXJ5IGJlY2F1c2UgeW91IGhhdmUgYSBjb25mbGljdGluZyByZWFkIGxvY2sATWl4aW5nIG9mIHRyYW5zYWN0aW9uYWwgYW5kIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyBpcyBkaXNhYmxlZABPcHRpb24gJyVzJyB1c2VkIHR3aWNlIGluIHN0YXRlbWVudABVc2VyICclLS42NHMnIGhhcyBleGNlZWRlZCB0aGUgJyVzJyByZXNvdXJjZSAoY3VycmVudCB2YWx1ZTogJWxkKQBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAoYXQgbGVhc3Qgb25lIG9mKSB0aGUgJS0uMTI4cyBwcml2aWxlZ2UocykgZm9yIHRoaXMgb3BlcmF0aW9uAFZhcmlhYmxlICclLS42NHMnIGlzIGEgU0VTU0lPTiB2YXJpYWJsZSBhbmQgY2FuJ3QgYmUgdXNlZCB3aXRoIFNFVCBHTE9CQUwAVmFyaWFibGUgJyUtLjY0cycgaXMgYSBHTE9CQUwgdmFyaWFibGUgYW5kIHNob3VsZCBiZSBzZXQgd2l0aCBTRVQgR0xPQkFMAFZhcmlhYmxlICclLS42NHMnIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAVmFyaWFibGUgJyUtLjY0cycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycASW5jb3JyZWN0IGFyZ3VtZW50IHR5cGUgdG8gdmFyaWFibGUgJyUtLjY0cycAVmFyaWFibGUgJyUtLjY0cycgY2FuIG9ubHkgYmUgc2V0LCBub3QgcmVhZABJbmNvcnJlY3QgdXNhZ2UvcGxhY2VtZW50IG9mICclcycAVGhpcyB2ZXJzaW9uIG9mIE15U1FMIGRvZXNuJ3QgeWV0IHN1cHBvcnQgJyVzJwBHb3QgZmF0YWwgZXJyb3IgJWQgZnJvbSBzb3VyY2Ugd2hlbiByZWFkaW5nIGRhdGEgZnJvbSBiaW5hcnkgbG9nOiAnJS0uNTEycycAUmVwbGljYSBTUUwgdGhyZWFkIGlnbm9yZWQgdGhlIHF1ZXJ5IGJlY2F1c2Ugb2YgcmVwbGljYXRlLSotdGFibGUgcnVsZXMAVmFyaWFibGUgJyUtLjE5MnMnIGlzIGEgJXMgdmFyaWFibGUASW5jb3JyZWN0IGZvcmVpZ24ga2V5IGRlZmluaXRpb24gZm9yICclLS4xOTJzJzogJXMAS2V5IHJlZmVyZW5jZSBhbmQgdGFibGUgcmVmZXJlbmNlIGRvbid0IG1hdGNoAE9wZXJhbmQgc2hvdWxkIGNvbnRhaW4gJWQgY29sdW1uKHMpAFN1YnF1ZXJ5IHJldHVybnMgbW9yZSB0aGFuIDEgcm93AFVua25vd24gcHJlcGFyZWQgc3RhdGVtZW50IGhhbmRsZXIgKCUuKnMpIGdpdmVuIHRvICVzAEhlbHAgZGF0YWJhc2UgaXMgY29ycnVwdCBvciBkb2VzIG5vdCBleGlzdABDeWNsaWMgcmVmZXJlbmNlIG9uIHN1YnF1ZXJpZXMAQ29udmVydGluZyBjb2x1bW4gJyVzJyBmcm9tICVzIHRvICVzAFJlZmVyZW5jZSAnJS0uNjRzJyBub3Qgc3VwcG9ydGVkICglcykARXZlcnkgZGVyaXZlZCB0YWJsZSBtdXN0IGhhdmUgaXRzIG93biBhbGlhcwBTZWxlY3QgJXUgd2FzIHJlZHVjZWQgZHVyaW5nIG9wdGltaXphdGlvbgBUYWJsZSAnJS0uMTkycycgZnJvbSBvbmUgb2YgdGhlIFNFTEVDVHMgY2Fubm90IGJlIHVzZWQgaW4gJS0uMzJzAENsaWVudCBkb2VzIG5vdCBzdXBwb3J0IGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIHJlcXVlc3RlZCBieSBzZXJ2ZXI7IGNvbnNpZGVyIHVwZ3JhZGluZyBNeVNRTCBjbGllbnQAQWxsIHBhcnRzIG9mIGEgU1BBVElBTCBpbmRleCBtdXN0IGJlIE5PVCBOVUxMAENPTExBVElPTiAnJXMnIGlzIG5vdCB2YWxpZCBmb3IgQ0hBUkFDVEVSIFNFVCAnJXMnAFJlcGxpY2EgaXMgYWxyZWFkeSBydW5uaW5nAFJlcGxpY2EgYWxyZWFkeSBoYXMgYmVlbiBzdG9wcGVkAFVuY29tcHJlc3NlZCBkYXRhIHNpemUgdG9vIGxhcmdlOyB0aGUgbWF4aW11bSBzaXplIGlzICVkIChwcm9iYWJseSwgbGVuZ3RoIG9mIHVuY29tcHJlc3NlZCBkYXRhIHdhcyBjb3JydXB0ZWQpAFpMSUI6IE5vdCBlbm91Z2ggbWVtb3J5AFpMSUI6IE5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciAocHJvYmFibHksIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgZGF0YSB3YXMgY29ycnVwdGVkKQBaTElCOiBJbnB1dCBkYXRhIGNvcnJ1cHRlZABSb3cgJXUgd2FzIGN1dCBieSBHUk9VUF9DT05DQVQoKQBSb3cgJWxkIGRvZXNuJ3QgY29udGFpbiBkYXRhIGZvciBhbGwgY29sdW1ucwBSb3cgJWxkIHdhcyB0cnVuY2F0ZWQ7IGl0IGNvbnRhaW5lZCBtb3JlIGRhdGEgdGhhbiB0aGVyZSB3ZXJlIGlucHV0IGNvbHVtbnMAQ29sdW1uIHNldCB0byBkZWZhdWx0IHZhbHVlOyBOVUxMIHN1cHBsaWVkIHRvIE5PVCBOVUxMIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQAT3V0IG9mIHJhbmdlIHZhbHVlIGZvciBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAERhdGEgdHJ1bmNhdGVkIGZvciBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAFVzaW5nIHN0b3JhZ2UgZW5naW5lICVzIGZvciB0YWJsZSAnJXMnAElsbGVnYWwgbWl4IG9mIGNvbGxhdGlvbnMgKCVzLCVzKSBhbmQgKCVzLCVzKSBmb3Igb3BlcmF0aW9uICclcycAQ2Fubm90IGRyb3Agb25lIG9yIG1vcmUgb2YgdGhlIHJlcXVlc3RlZCB1c2VycwBDYW4ndCByZXZva2UgYWxsIHByaXZpbGVnZXMgZm9yIG9uZSBvciBtb3JlIG9mIHRoZSByZXF1ZXN0ZWQgdXNlcnMASWxsZWdhbCBtaXggb2YgY29sbGF0aW9ucyAoJXMsJXMpLCAoJXMsJXMpLCAoJXMsJXMpIGZvciBvcGVyYXRpb24gJyVzJwBJbGxlZ2FsIG1peCBvZiBjb2xsYXRpb25zIGZvciBvcGVyYXRpb24gJyVzJwBWYXJpYWJsZSAnJS0uNjRzJyBpcyBub3QgYSB2YXJpYWJsZSBjb21wb25lbnQgKGNhbid0IGJlIHVzZWQgYXMgWFhYWC52YXJpYWJsZV9uYW1lKQBVbmtub3duIGNvbGxhdGlvbjogJyUtLjY0cycAU1NMIHBhcmFtZXRlcnMgaW4gQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBhcmUgaWdub3JlZCBiZWNhdXNlIHRoaXMgTXlTUUwgcmVwbGljYSB3YXMgY29tcGlsZWQgd2l0aG91dCBTU0wgc3VwcG9ydDsgdGhleSBjYW4gYmUgdXNlZCBsYXRlciBpZiBNeVNRTCByZXBsaWNhIHdpdGggU1NMIGlzIHN0YXJ0ZWQAU2VydmVyIGlzIHJ1bm5pbmcgaW4gLS1zZWN1cmUtYXV0aCBtb2RlLCBidXQgJyVzJ0AnJXMnIGhhcyBhIHBhc3N3b3JkIGluIHRoZSBvbGQgZm9ybWF0OyBwbGVhc2UgY2hhbmdlIHRoZSBwYXNzd29yZCB0byB0aGUgbmV3IGZvcm1hdABGaWVsZCBvciByZWZlcmVuY2UgJyUtLjE5MnMlcyUtLjE5MnMlcyUtLjE5MnMnIG9mIFNFTEVDVCAjJWQgd2FzIHJlc29sdmVkIGluIFNFTEVDVCAjJWQASW5jb3JyZWN0IHBhcmFtZXRlciBvciBjb21iaW5hdGlvbiBvZiBwYXJhbWV0ZXJzIGZvciBTVEFSVCBSRVBMSUNBIFVOVElMAEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSAtLXNraXAtcmVwbGljYS1zdGFydCB3aGVuIGRvaW5nIHN0ZXAtYnktc3RlcCByZXBsaWNhdGlvbiB3aXRoIFNUQVJUIFJFUExJQ0EgVU5USUw7IG90aGVyd2lzZSwgeW91IHdpbGwgZ2V0IHByb2JsZW1zIGlmIHlvdSBnZXQgYW4gdW5leHBlY3RlZCByZXBsaWNhJ3MgbXlzcWxkIHJlc3RhcnQAU1FMIHRocmVhZCBpcyBub3QgdG8gYmUgc3RhcnRlZCBzbyBVTlRJTCBvcHRpb25zIGFyZSBpZ25vcmVkAEluY29ycmVjdCBpbmRleCBuYW1lICclLS4xMDBzJwBJbmNvcnJlY3QgY2F0YWxvZyBuYW1lICclLS4xMDBzJwBRdWVyeSBjYWNoZSBmYWlsZWQgdG8gc2V0IHNpemUgJWx1OyBuZXcgcXVlcnkgY2FjaGUgc2l6ZSBpcyAlbHUAQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgcGFydCBvZiBGVUxMVEVYVCBpbmRleABVbmtub3duIGtleSBjYWNoZSAnJS0uMTAwcycATXlTUUwgaXMgc3RhcnRlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGU7IHlvdSBtdXN0IHJlc3RhcnQgaXQgd2l0aG91dCB0aGlzIHN3aXRjaCBmb3IgdGhpcyBncmFudCB0byB3b3JrAFVua25vd24gc3RvcmFnZSBlbmdpbmUgJyVzJwAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQAVGhlIHRhcmdldCB0YWJsZSAlLS4xMDBzIG9mIHRoZSAlcyBpcyBub3QgdXBkYXRhYmxlAFRoZSAnJXMnIGZlYXR1cmUgaXMgZGlzYWJsZWQ7IHlvdSBuZWVkIE15U1FMIGJ1aWx0IHdpdGggJyVzJyB0byBoYXZlIGl0IHdvcmtpbmcAVGhlIE15U1FMIHNlcnZlciBpcyBydW5uaW5nIHdpdGggdGhlICVzIG9wdGlvbiBzbyBpdCBjYW5ub3QgZXhlY3V0ZSB0aGlzIHN0YXRlbWVudABDb2x1bW4gJyUtLjEwMHMnIGhhcyBkdXBsaWNhdGVkIHZhbHVlICclLS42NHMnIGluICVzAFRydW5jYXRlZCBpbmNvcnJlY3QgJS0uNjRzIHZhbHVlOiAnJS0uMTI4cycASW5jb3JyZWN0IHRhYmxlIGRlZmluaXRpb247IHRoZXJlIGNhbiBiZSBvbmx5IG9uZSBUSU1FU1RBTVAgY29sdW1uIHdpdGggQ1VSUkVOVF9USU1FU1RBTVAgaW4gREVGQVVMVCBvciBPTiBVUERBVEUgY2xhdXNlAEludmFsaWQgT04gVVBEQVRFIGNsYXVzZSBmb3IgJyUtLjE5MnMnIGNvbHVtbgBUaGlzIGNvbW1hbmQgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGUgcHJlcGFyZWQgc3RhdGVtZW50IHByb3RvY29sIHlldABHb3QgZXJyb3IgJWQgJyUtLjEwMHMnIGZyb20gJXMAR290IHRlbXBvcmFyeSBlcnJvciAlZCAnJS0uMTAwcycgZnJvbSAlcwBVbmtub3duIG9yIGluY29ycmVjdCB0aW1lIHpvbmU6ICclLS42NHMnAEludmFsaWQgVElNRVNUQU1QIHZhbHVlIGluIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQASW52YWxpZCAlcyBjaGFyYWN0ZXIgc3RyaW5nOiAnJS42NHMnAFJlc3VsdCBvZiAlcygpIHdhcyBsYXJnZXIgdGhhbiBtYXhfYWxsb3dlZF9wYWNrZXQgKCVsZCkgLSB0cnVuY2F0ZWQAQ29uZmxpY3RpbmcgZGVjbGFyYXRpb25zOiAnJXMlcycgYW5kICclcyVzJwBDYW4ndCBjcmVhdGUgYSAlcyBmcm9tIHdpdGhpbiBhbm90aGVyIHN0b3JlZCByb3V0aW5lACVzICVzIGFscmVhZHkgZXhpc3RzACVzICVzIGRvZXMgbm90IGV4aXN0AEZhaWxlZCB0byBEUk9QICVzICVzAEZhaWxlZCB0byBDUkVBVEUgJXMgJXMAJXMgd2l0aCBubyBtYXRjaGluZyBsYWJlbDogJXMAUmVkZWZpbmluZyBsYWJlbCAlcwBFbmQtbGFiZWwgJXMgd2l0aG91dCBtYXRjaABSZWZlcnJpbmcgdG8gdW5pbml0aWFsaXplZCB2YXJpYWJsZSAlcwBQUk9DRURVUkUgJXMgY2FuJ3QgcmV0dXJuIGEgcmVzdWx0IHNldCBpbiB0aGUgZ2l2ZW4gY29udGV4dABSRVRVUk4gaXMgb25seSBhbGxvd2VkIGluIGEgRlVOQ1RJT04AJXMgaXMgbm90IGFsbG93ZWQgaW4gc3RvcmVkIHByb2NlZHVyZXMAVGhlIHVwZGF0ZSBsb2cgaXMgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQgYnkgdGhlIGJpbmFyeSBsb2c7IFNFVCBTUUxfTE9HX1VQREFURSBoYXMgYmVlbiBpZ25vcmVkLgBUaGUgdXBkYXRlIGxvZyBpcyBkZXByZWNhdGVkIGFuZCByZXBsYWNlZCBieSB0aGUgYmluYXJ5IGxvZzsgU0VUIFNRTF9MT0dfVVBEQVRFIGhhcyBiZWVuIHRyYW5zbGF0ZWQgdG8gU0VUIFNRTF9MT0dfQklOLgBRdWVyeSBleGVjdXRpb24gd2FzIGludGVycnVwdGVkAEluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciAlcyAlczsgZXhwZWN0ZWQgJXUsIGdvdCAldQBVbmRlZmluZWQgQ09ORElUSU9OOiAlcwBObyBSRVRVUk4gZm91bmQgaW4gRlVOQ1RJT04gJXMARlVOQ1RJT04gJXMgZW5kZWQgd2l0aG91dCBSRVRVUk4AQ3Vyc29yIHN0YXRlbWVudCBtdXN0IGJlIGEgU0VMRUNUAEN1cnNvciBTRUxFQ1QgbXVzdCBub3QgaGF2ZSBJTlRPAFVuZGVmaW5lZCBDVVJTT1I6ICVzAEN1cnNvciBpcyBhbHJlYWR5IG9wZW4AQ3Vyc29yIGlzIG5vdCBvcGVuAFVuZGVjbGFyZWQgdmFyaWFibGU6ICVzAEluY29ycmVjdCBudW1iZXIgb2YgRkVUQ0ggdmFyaWFibGVzAE5vIGRhdGEgLSB6ZXJvIHJvd3MgZmV0Y2hlZCwgc2VsZWN0ZWQsIG9yIHByb2Nlc3NlZABEdXBsaWNhdGUgcGFyYW1ldGVyOiAlcwBEdXBsaWNhdGUgdmFyaWFibGU6ICVzAER1cGxpY2F0ZSBjb25kaXRpb246ICVzAER1cGxpY2F0ZSBjdXJzb3I6ICVzAEZhaWxlZCB0byBBTFRFUiAlcyAlcwBTdWJxdWVyeSB2YWx1ZSBub3Qgc3VwcG9ydGVkACVzIGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAFZhcmlhYmxlIG9yIGNvbmRpdGlvbiBkZWNsYXJhdGlvbiBhZnRlciBjdXJzb3Igb3IgaGFuZGxlciBkZWNsYXJhdGlvbgBDdXJzb3IgZGVjbGFyYXRpb24gYWZ0ZXIgaGFuZGxlciBkZWNsYXJhdGlvbgBDYXNlIG5vdCBmb3VuZCBmb3IgQ0FTRSBzdGF0ZW1lbnQAQ29uZmlndXJhdGlvbiBmaWxlICclLS4xOTJzJyBpcyB0b28gYmlnAE1hbGZvcm1lZCBmaWxlIHR5cGUgaGVhZGVyIGluIGZpbGUgJyUtLjE5MnMnAFVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgd2hpbGUgcGFyc2luZyBjb21tZW50ICclLS4yMDBzJwBFcnJvciB3aGlsZSBwYXJzaW5nIHBhcmFtZXRlciAnJS0uMTkycycgKGxpbmU6ICclLS4xOTJzJykAVW5leHBlY3RlZCBlbmQgb2YgZmlsZSB3aGlsZSBza2lwcGluZyB1bmtub3duIHBhcmFtZXRlciAnJS0uMTkycycARVhQTEFJTi9TSE9XIGNhbiBub3QgYmUgaXNzdWVkOyBsYWNraW5nIHByaXZpbGVnZXMgZm9yIHVuZGVybHlpbmcgdGFibGUARmlsZSAnJS0uMTkycycgaGFzIHVua25vd24gdHlwZSAnJS0uNjRzJyBpbiBpdHMgaGVhZGVyACclLS4xOTJzLiUtLjE5MnMnIGlzIG5vdCAlcwBDb2x1bW4gJyUtLjE5MnMnIGlzIG5vdCB1cGRhdGFibGUAVmlldydzIFNFTEVDVCBjb250YWlucyBhIHN1YnF1ZXJ5IGluIHRoZSBGUk9NIGNsYXVzZQBWaWV3J3MgU0VMRUNUIGNvbnRhaW5zIGEgJyVzJyBjbGF1c2UAVmlldydzIFNFTEVDVCBjb250YWlucyBhIHZhcmlhYmxlIG9yIHBhcmFtZXRlcgBWaWV3J3MgU0VMRUNUIHJlZmVycyB0byBhIHRlbXBvcmFyeSB0YWJsZSAnJS0uMTkycycASW4gZGVmaW5pdGlvbiBvZiB2aWV3LCBkZXJpdmVkIHRhYmxlIG9yIGNvbW1vbiB0YWJsZSBleHByZXNzaW9uLCBTRUxFQ1QgbGlzdCBhbmQgY29sdW1uIG5hbWVzIGxpc3QgaGF2ZSBkaWZmZXJlbnQgY29sdW1uIGNvdW50cwBWaWV3IG1lcmdlIGFsZ29yaXRobSBjYW4ndCBiZSB1c2VkIGhlcmUgZm9yIG5vdyAoYXNzdW1lZCB1bmRlZmluZWQgYWxnb3JpdGhtKQBWaWV3IGJlaW5nIHVwZGF0ZWQgZG9lcyBub3QgaGF2ZSBjb21wbGV0ZSBrZXkgb2YgdW5kZXJseWluZyB0YWJsZSBpbiBpdABWaWV3ICclLS4xOTJzLiUtLjE5MnMnIHJlZmVyZW5jZXMgaW52YWxpZCB0YWJsZShzKSBvciBjb2x1bW4ocykgb3IgZnVuY3Rpb24ocykgb3IgZGVmaW5lci9pbnZva2VyIG9mIHZpZXcgbGFjayByaWdodHMgdG8gdXNlIHRoZW0AQ2FuJ3QgZHJvcCBvciBhbHRlciBhICVzIGZyb20gd2l0aGluIGFub3RoZXIgc3RvcmVkIHJvdXRpbmUAR09UTyBpcyBub3QgYWxsb3dlZCBpbiBhIHN0b3JlZCBwcm9jZWR1cmUgaGFuZGxlcgBUcmlnZ2VyIGFscmVhZHkgZXhpc3RzAFRyaWdnZXIgZG9lcyBub3QgZXhpc3QAVHJpZ2dlcidzICclLS4xOTJzJyBpcyB2aWV3IG9yIHRlbXBvcmFyeSB0YWJsZQBVcGRhdGluZyBvZiAlcyByb3cgaXMgbm90IGFsbG93ZWQgaW4gJXN0cmlnZ2VyAFRoZXJlIGlzIG5vICVzIHJvdyBpbiAlcyB0cmlnZ2VyAEZpZWxkICclLS4xOTJzJyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAERpdmlzaW9uIGJ5IDAASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBjb2x1bW4gJyUuMTkycycgYXQgcm93ICVsZABJbGxlZ2FsICVzICclLS4xOTJzJyB2YWx1ZSBmb3VuZCBkdXJpbmcgcGFyc2luZwBDSEVDSyBPUFRJT04gb24gbm9uLXVwZGF0YWJsZSB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAENIRUNLIE9QVElPTiBmYWlsZWQgJyUtLjE5MnMuJS0uMTkycycAJS0uMTZzIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgZm9yIHJvdXRpbmUgJyUtLjE5MnMnAEZhaWxlZCBwdXJnaW5nIG9sZCByZWxheSBsb2dzOiAlcwBQYXNzd29yZCBoYXNoIHNob3VsZCBiZSBhICVkLWRpZ2l0IGhleGFkZWNpbWFsIG51bWJlcgBUYXJnZXQgbG9nIG5vdCBmb3VuZCBpbiBiaW5sb2cgaW5kZXgASS9PIGVycm9yIHJlYWRpbmcgbG9nIGluZGV4IGZpbGUAU2VydmVyIGNvbmZpZ3VyYXRpb24gZG9lcyBub3QgcGVybWl0IGJpbmxvZyBwdXJnZQBGYWlsZWQgb24gZnNlZWsoKQBGYXRhbCBlcnJvciBkdXJpbmcgbG9nIHB1cmdlAEEgcHVyZ2VhYmxlIGxvZyBpcyBpbiB1c2UsIHdpbGwgbm90IHB1cmdlAFVua25vd24gZXJyb3IgZHVyaW5nIGxvZyBwdXJnZQBGYWlsZWQgaW5pdGlhbGl6aW5nIHJlbGF5IGxvZyBwb3NpdGlvbjogJXMAWW91IGFyZSBub3QgdXNpbmcgYmluYXJ5IGxvZ2dpbmcAVGhlICclLS42NHMnIHN5bnRheCBpcyByZXNlcnZlZCBmb3IgcHVycG9zZXMgaW50ZXJuYWwgdG8gdGhlIE15U1FMIHNlcnZlcgBXU0FTdGFydHVwIEZhaWxlZABDYW4ndCBoYW5kbGUgcHJvY2VkdXJlcyB3aXRoIGRpZmZlcmVudCBncm91cHMgeWV0AFNlbGVjdCBtdXN0IGhhdmUgYSBncm91cCB3aXRoIHRoaXMgcHJvY2VkdXJlAENhbid0IHVzZSBPUkRFUiBjbGF1c2Ugd2l0aCB0aGlzIHByb2NlZHVyZQBCaW5hcnkgbG9nZ2luZyBhbmQgcmVwbGljYXRpb24gZm9yYmlkIGNoYW5naW5nIHRoZSBnbG9iYWwgc2VydmVyICVzAENhbid0IG1hcCBmaWxlOiAlLS4yMDBzLCBlcnJubzogJWQAV3JvbmcgbWFnaWMgaW4gJS0uNjRzAFByZXBhcmVkIHN0YXRlbWVudCBjb250YWlucyB0b28gbWFueSBwbGFjZWhvbGRlcnMAS2V5IHBhcnQgJyUtLjE5MnMnIGxlbmd0aCBjYW5ub3QgYmUgMABWaWV3IHRleHQgY2hlY2tzdW0gZmFpbGVkAENhbiBub3QgbW9kaWZ5IG1vcmUgdGhhbiBvbmUgYmFzZSB0YWJsZSB0aHJvdWdoIGEgam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAENhbiBub3QgaW5zZXJ0IGludG8gam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnIHdpdGhvdXQgZmllbGRzIGxpc3QAQ2FuIG5vdCBkZWxldGUgZnJvbSBqb2luIHZpZXcgJyUtLjE5MnMuJS0uMTkycycAT3BlcmF0aW9uICVzIGZhaWxlZCBmb3IgJS4yNTZzAFhBRVJfTk9UQTogVW5rbm93biBYSUQAWEFFUl9JTlZBTDogSW52YWxpZCBhcmd1bWVudHMgKG9yIHVuc3VwcG9ydGVkIGNvbW1hbmQpAFhBRVJfUk1GQUlMOiBUaGUgY29tbWFuZCBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hlbiBnbG9iYWwgdHJhbnNhY3Rpb24gaXMgaW4gdGhlICAlLjY0cyBzdGF0ZQBYQUVSX09VVFNJREU6IFNvbWUgd29yayBpcyBkb25lIG91dHNpZGUgZ2xvYmFsIHRyYW5zYWN0aW9uAFhBRVJfUk1FUlI6IEZhdGFsIGVycm9yIG9jY3VycmVkIGluIHRoZSB0cmFuc2FjdGlvbiBicmFuY2ggLSBjaGVjayB5b3VyIGRhdGEgZm9yIGNvbnNpc3RlbmN5AFhBX1JCUk9MTEJBQ0s6IFRyYW5zYWN0aW9uIGJyYW5jaCB3YXMgcm9sbGVkIGJhY2sAVGhlcmUgaXMgbm8gc3VjaCBncmFudCBkZWZpbmVkIGZvciB1c2VyICclLS40OHMnIG9uIGhvc3QgJyUtLjI1NXMnIG9uIHJvdXRpbmUgJyUtLjE5MnMnAEZhaWxlZCB0byBncmFudCBFWEVDVVRFIGFuZCBBTFRFUiBST1VUSU5FIHByaXZpbGVnZXMARmFpbGVkIHRvIHJldm9rZSBhbGwgcHJpdmlsZWdlcyB0byBkcm9wcGVkIHJvdXRpbmUARGF0YSB0b28gbG9uZyBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABCYWQgU1FMU1RBVEU6ICclcycAJXM6IHJlYWR5IGZvciBjb25uZWN0aW9ucy4gVmVyc2lvbjogJyVzJyAgc29ja2V0OiAnJXMnICBwb3J0OiAlZCAgJXMAQ2FuJ3QgbG9hZCB2YWx1ZSBmcm9tIGZpbGUgd2l0aCBmaXhlZCBzaXplIHJvd3MgdG8gdmFyaWFibGUAWW91IGFyZSBub3QgYWxsb3dlZCB0byBjcmVhdGUgYSB1c2VyIHdpdGggR1JBTlQASW5jb3JyZWN0ICUtLjMycyB2YWx1ZTogJyUtLjEyOHMnIGZvciBmdW5jdGlvbiAlLS4zMnMAVGFibGUgZGVmaW5pdGlvbiBoYXMgY2hhbmdlZCwgcGxlYXNlIHJldHJ5IHRyYW5zYWN0aW9uAER1cGxpY2F0ZSBoYW5kbGVyIGRlY2xhcmVkIGluIHRoZSBzYW1lIGJsb2NrAE9VVCBvciBJTk9VVCBhcmd1bWVudCAlZCBmb3Igcm91dGluZSAlcyBpcyBub3QgYSB2YXJpYWJsZSBvciBORVcgcHNldWRvLXZhcmlhYmxlIGluIEJFRk9SRSB0cmlnZ2VyAE5vdCBhbGxvd2VkIHRvIHJldHVybiBhIHJlc3VsdCBzZXQgZnJvbSBhICVzAENhbm5vdCBnZXQgZ2VvbWV0cnkgb2JqZWN0IGZyb20gZGF0YSB5b3Ugc2VuZCB0byB0aGUgR0VPTUVUUlkgZmllbGQAQSByb3V0aW5lIGZhaWxlZCBhbmQgaGFzIG5laXRoZXIgTk8gU1FMIG5vciBSRUFEUyBTUUwgREFUQSBpbiBpdHMgZGVjbGFyYXRpb24gYW5kIGJpbmFyeSBsb2dnaW5nIGlzIGVuYWJsZWQ7IGlmIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyB3ZXJlIHVwZGF0ZWQsIHRoZSBiaW5hcnkgbG9nIHdpbGwgbWlzcyB0aGVpciBjaGFuZ2VzAFRoaXMgZnVuY3Rpb24gaGFzIG5vbmUgb2YgREVURVJNSU5JU1RJQywgTk8gU1FMLCBvciBSRUFEUyBTUUwgREFUQSBpbiBpdHMgZGVjbGFyYXRpb24gYW5kIGJpbmFyeSBsb2dnaW5nIGlzIGVuYWJsZWQgKHlvdSAqbWlnaHQqIHdhbnQgdG8gdXNlIHRoZSBsZXNzIHNhZmUgbG9nX2Jpbl90cnVzdF9mdW5jdGlvbl9jcmVhdG9ycyB2YXJpYWJsZSkAWW91IGRvIG5vdCBoYXZlIHRoZSBTVVBFUiBwcml2aWxlZ2UgYW5kIGJpbmFyeSBsb2dnaW5nIGlzIGVuYWJsZWQgKHlvdSAqbWlnaHQqIHdhbnQgdG8gdXNlIHRoZSBsZXNzIHNhZmUgbG9nX2Jpbl90cnVzdF9mdW5jdGlvbl9jcmVhdG9ycyB2YXJpYWJsZSkAWW91IGNhbid0IGV4ZWN1dGUgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgd2hpY2ggaGFzIGFuIG9wZW4gY3Vyc29yIGFzc29jaWF0ZWQgd2l0aCBpdC4gUmVzZXQgdGhlIHN0YXRlbWVudCB0byByZS1leGVjdXRlIGl0LgBUaGUgc3RhdGVtZW50ICglbHUpIGhhcyBubyBvcGVuIGN1cnNvci4ARXhwbGljaXQgb3IgaW1wbGljaXQgY29tbWl0IGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyLgBGaWVsZCBvZiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnIHVuZGVybHlpbmcgdGFibGUgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBSZWN1cnNpdmUgc3RvcmVkIGZ1bmN0aW9ucyBhbmQgdHJpZ2dlcnMgYXJlIG5vdCBhbGxvd2VkLgBUb28gYmlnIHNjYWxlICVkIHNwZWNpZmllZCBmb3IgY29sdW1uICclLS4xOTJzJy4gTWF4aW11bSBpcyAlbHUuAFRvby1iaWcgcHJlY2lzaW9uICVkIHNwZWNpZmllZCBmb3IgJyUtLjE5MnMnLiBNYXhpbXVtIGlzICVsdS4ARm9yIGZsb2F0KE0sRCksIGRvdWJsZShNLEQpIG9yIGRlY2ltYWwoTSxEKSwgTSBtdXN0IGJlID49IEQgKGNvbHVtbiAnJS0uMTkycycpLgBZb3UgY2FuJ3QgY29tYmluZSB3cml0ZS1sb2NraW5nIG9mIHN5c3RlbSB0YWJsZXMgd2l0aCBvdGhlciB0YWJsZXMgb3IgbG9jayB0eXBlcwBVbmFibGUgdG8gY29ubmVjdCB0byBmb3JlaWduIGRhdGEgc291cmNlOiAlLjY0cwBUaGVyZSB3YXMgYSBwcm9ibGVtIHByb2Nlc3NpbmcgdGhlIHF1ZXJ5IG9uIHRoZSBmb3JlaWduIGRhdGEgc291cmNlLiBEYXRhIHNvdXJjZSBlcnJvcjogJS0uNjRzAFRoZSBmb3JlaWduIGRhdGEgc291cmNlIHlvdSBhcmUgdHJ5aW5nIHRvIHJlZmVyZW5jZSBkb2VzIG5vdCBleGlzdC4gRGF0YSBzb3VyY2UgZXJyb3I6ICAlLS42NHMAQ2FuJ3QgY3JlYXRlIGZlZGVyYXRlZCB0YWJsZS4gVGhlIGRhdGEgc291cmNlIGNvbm5lY3Rpb24gc3RyaW5nICclLS42NHMnIGlzIG5vdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQAVGhlIGRhdGEgc291cmNlIGNvbm5lY3Rpb24gc3RyaW5nICclLS42NHMnIGlzIG5vdCBpbiB0aGUgY29ycmVjdCBmb3JtYXQAQ2FuJ3QgY3JlYXRlIGZlZGVyYXRlZCB0YWJsZS4gRm9yZWlnbiBkYXRhIHNyYyBlcnJvcjogICUtLjY0cwBUcmlnZ2VyIGluIHdyb25nIHNjaGVtYQBUaHJlYWQgc3RhY2sgb3ZlcnJ1bjogICVsZCBieXRlcyB1c2VkIG9mIGEgJWxkIGJ5dGUgc3RhY2ssIGFuZCAlbGQgYnl0ZXMgbmVlZGVkLiAgVXNlICdteXNxbGQgLS10aHJlYWRfc3RhY2s9IycgdG8gc3BlY2lmeSBhIGJpZ2dlciBzdGFjay4AUm91dGluZSBib2R5IGZvciAnJS0uMTAwcycgaXMgdG9vIGxvbmcAQ2Fubm90IGRyb3AgZGVmYXVsdCBrZXljYWNoZQBEaXNwbGF5IHdpZHRoIG91dCBvZiByYW5nZSBmb3IgY29sdW1uICclLS4xOTJzJyAobWF4ID0gJWx1KQBYQUVSX0RVUElEOiBUaGUgWElEIGFscmVhZHkgZXhpc3RzAERhdGV0aW1lIGZ1bmN0aW9uOiAlLS4zMnMgZmllbGQgb3ZlcmZsb3cAQ2FuJ3QgdXBkYXRlIHRhYmxlICclLS4xOTJzJyBpbiBzdG9yZWQgZnVuY3Rpb24vdHJpZ2dlciBiZWNhdXNlIGl0IGlzIGFscmVhZHkgdXNlZCBieSBzdGF0ZW1lbnQgd2hpY2ggaW52b2tlZCB0aGlzIHN0b3JlZCBmdW5jdGlvbi90cmlnZ2VyLgBUaGUgZGVmaW5pdGlvbiBvZiB0YWJsZSAnJS0uMTkycycgcHJldmVudHMgb3BlcmF0aW9uICUuMTkycyBvbiB0YWJsZSAnJS0uMTkycycuAFRoZSBwcmVwYXJlZCBzdGF0ZW1lbnQgY29udGFpbnMgYSBzdG9yZWQgcm91dGluZSBjYWxsIHRoYXQgcmVmZXJzIHRvIHRoYXQgc2FtZSBzdGF0ZW1lbnQuIEl0J3Mgbm90IGFsbG93ZWQgdG8gZXhlY3V0ZSBhIHByZXBhcmVkIHN0YXRlbWVudCBpbiBzdWNoIGEgcmVjdXJzaXZlIG1hbm5lcgBOb3QgYWxsb3dlZCB0byBzZXQgYXV0b2NvbW1pdCBmcm9tIGEgc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIARGVmaW5lciBpcyBub3QgZnVsbHkgcXVhbGlmaWVkAFZpZXcgJyUtLjE5MnMnLiclLS4xOTJzJyBoYXMgbm8gZGVmaW5lciBpbmZvcm1hdGlvbiAob2xkIHRhYmxlIGZvcm1hdCkuIEN1cnJlbnQgdXNlciBpcyB1c2VkIGFzIGRlZmluZXIuIFBsZWFzZSByZWNyZWF0ZSB0aGUgdmlldyEAWW91IG5lZWQgdGhlIFNVUEVSIHByaXZpbGVnZSBmb3IgY3JlYXRpb24gdmlldyB3aXRoICclLS4xOTJzJ0AnJS0uMTkycycgZGVmaW5lcgBUaGUgdXNlciBzcGVjaWZpZWQgYXMgYSBkZWZpbmVyICgnJS0uNjRzJ0AnJS0uNjRzJykgZG9lcyBub3QgZXhpc3QAQ2hhbmdpbmcgc2NoZW1hIGZyb20gJyUtLjE5MnMnIHRvICclLS4xOTJzJyBpcyBub3QgYWxsb3dlZC4AQ2Fubm90IGRlbGV0ZSBvciB1cGRhdGUgYSBwYXJlbnQgcm93OiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZmFpbHMgKCUuMTkycykAQ2Fubm90IGFkZCBvciB1cGRhdGUgYSBjaGlsZCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscyAoJS4xOTJzKQBWYXJpYWJsZSAnJS0uNjRzJyBtdXN0IGJlIHF1b3RlZCB3aXRoIGAuLi5gLCBvciByZW5hbWVkAE5vIGRlZmluZXIgYXR0cmlidXRlIGZvciB0cmlnZ2VyICclLS4xOTJzJy4nJS0uMTkycycuIEl0J3MgZGlzYWxsb3dlZCB0byBjcmVhdGUgdHJpZ2dlciB3aXRob3V0IGRlZmluZXIuACclLS4xOTJzJyBoYXMgYW4gb2xkIGZvcm1hdCwgeW91IHNob3VsZCByZS1jcmVhdGUgdGhlICclcycgb2JqZWN0KHMpAFJlY3Vyc2l2ZSBsaW1pdCAlZCAoYXMgc2V0IGJ5IHRoZSBtYXhfc3BfcmVjdXJzaW9uX2RlcHRoIHZhcmlhYmxlKSB3YXMgZXhjZWVkZWQgZm9yIHJvdXRpbmUgJS4xOTJzAEZhaWxlZCB0byBsb2FkIHJvdXRpbmUgJS0uMTkycy4gVGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZSBtaXNzaW5nLCBjb3JydXB0LCBvciBjb250YWlucyBiYWQgZGF0YSAoaW50ZXJuYWwgY29kZSAlZCkASW5jb3JyZWN0IHJvdXRpbmUgbmFtZSAnJS0uMTkycycAVGFibGUgdXBncmFkZSByZXF1aXJlZC4gUGxlYXNlIGRvICJSRVBBSVIgVEFCTEUgYCUtLjY0c2AiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEAQUdHUkVHQVRFIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHN0b3JlZCBmdW5jdGlvbnMAQ2FuJ3QgY3JlYXRlIG1vcmUgdGhhbiBtYXhfcHJlcGFyZWRfc3RtdF9jb3VudCBzdGF0ZW1lbnRzIChjdXJyZW50IHZhbHVlOiAlbHUpAGAlLS4xOTJzYC5gJS0uMTkyc2AgY29udGFpbnMgdmlldyByZWN1cnNpb24ATm9uLWdyb3VwaW5nIGZpZWxkICclLS4xOTJzJyBpcyB1c2VkIGluICUtLjY0cyBjbGF1c2UAVGhlIHVzZWQgdGFibGUgdHlwZSBkb2Vzbid0IHN1cHBvcnQgU1BBVElBTCBpbmRleGVzAFRyaWdnZXJzIGNhbiBub3QgYmUgY3JlYXRlZCBvbiBzeXN0ZW0gdGFibGVzAExlYWRpbmcgc3BhY2VzIGFyZSByZW1vdmVkIGZyb20gbmFtZSAnJXMnAEZhaWxlZCB0byByZWFkIGF1dG8taW5jcmVtZW50IHZhbHVlIGZyb20gc3RvcmFnZSBlbmdpbmUAdXNlciBuYW1lAGhvc3QgbmFtZQBTdHJpbmcgJyUtLjcwcycgaXMgdG9vIGxvbmcgZm9yICVzIChzaG91bGQgYmUgbm8gbG9uZ2VyIHRoYW4gJWQpAFRoZSB0YXJnZXQgdGFibGUgJS0uMTAwcyBvZiB0aGUgJXMgaXMgbm90IGluc2VydGFibGUtaW50bwBUYWJsZSAnJS0uNjRzJyBpcyBkaWZmZXJlbnRseSBkZWZpbmVkIG9yIG9mIG5vbi1NeUlTQU0gdHlwZSBvciBkb2Vzbid0IGV4aXN0AFRvbyBoaWdoIGxldmVsIG9mIG5lc3RpbmcgZm9yIHNlbGVjdABOYW1lICclLS42NHMnIGhhcyBiZWNvbWUgJycARmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBGSUVMRFMgVEVSTUlOQVRFRCBzdHJpbmcgaXMgYW1iaWd1b3VzOyBwbGVhc2UgdXNlIG5vbi1vcHRpb25hbCBhbmQgbm9uLWVtcHR5IEZJRUxEUyBFTkNMT1NFRCBCWQBUaGUgZm9yZWlnbiBzZXJ2ZXIsICVzLCB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgYWxyZWFkeSBleGlzdHMuAFRoZSBmb3JlaWduIHNlcnZlciBuYW1lIHlvdSBhcmUgdHJ5aW5nIHRvIHJlZmVyZW5jZSBkb2VzIG5vdCBleGlzdC4gRGF0YSBzb3VyY2UgZXJyb3I6ICAlLS42NHMAVGFibGUgc3RvcmFnZSBlbmdpbmUgJyUtLjY0cycgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY3JlYXRlIG9wdGlvbiAnJS42NHMnAFN5bnRheCBlcnJvcjogJS0uNjRzIFBBUlRJVElPTklORyByZXF1aXJlcyBkZWZpbml0aW9uIG9mIFZBTFVFUyAlLS42NHMgZm9yIGVhY2ggcGFydGl0aW9uAE9ubHkgJS0uNjRzIFBBUlRJVElPTklORyBjYW4gdXNlIFZBTFVFUyAlLS42NHMgaW4gcGFydGl0aW9uIGRlZmluaXRpb24ATUFYVkFMVUUgY2FuIG9ubHkgYmUgdXNlZCBpbiBsYXN0IHBhcnRpdGlvbiBkZWZpbml0aW9uAFN1YnBhcnRpdGlvbnMgY2FuIG9ubHkgYmUgaGFzaCBwYXJ0aXRpb25zIGFuZCBieSBrZXkATXVzdCBkZWZpbmUgc3VicGFydGl0aW9ucyBvbiBhbGwgcGFydGl0aW9ucyBpZiBvbiBvbmUgcGFydGl0aW9uAFdyb25nIG51bWJlciBvZiBwYXJ0aXRpb25zIGRlZmluZWQsIG1pc21hdGNoIHdpdGggcHJldmlvdXMgc2V0dGluZwBXcm9uZyBudW1iZXIgb2Ygc3VicGFydGl0aW9ucyBkZWZpbmVkLCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIHNldHRpbmcAQ29uc3RhbnQsIHJhbmRvbSBvciB0aW1lem9uZS1kZXBlbmRlbnQgZXhwcmVzc2lvbnMgaW4gKHN1YilwYXJ0aXRpb25pbmcgZnVuY3Rpb24gYXJlIG5vdCBhbGxvd2VkAEV4cHJlc3Npb24gaW4gUkFOR0UvTElTVCBWQUxVRVMgbXVzdCBiZSBjb25zdGFudABGaWVsZCBpbiBsaXN0IG9mIGZpZWxkcyBmb3IgcGFydGl0aW9uIGZ1bmN0aW9uIG5vdCBmb3VuZCBpbiB0YWJsZQBMaXN0IG9mIGZpZWxkcyBpcyBvbmx5IGFsbG93ZWQgaW4gS0VZIHBhcnRpdGlvbnMAVGhlIHBhcnRpdGlvbiBpbmZvIGluIHRoZSBmcm0gZmlsZSBpcyBub3QgY29uc2lzdGVudCB3aXRoIHdoYXQgY2FuIGJlIHdyaXR0ZW4gaW50byB0aGUgZnJtIGZpbGUAVGhlICUtLjE5MnMgZnVuY3Rpb24gcmV0dXJucyB0aGUgd3JvbmcgdHlwZQBGb3IgJS0uNjRzIHBhcnRpdGlvbnMgZWFjaCBwYXJ0aXRpb24gbXVzdCBiZSBkZWZpbmVkAFZBTFVFUyBMRVNTIFRIQU4gdmFsdWUgbXVzdCBiZSBzdHJpY3RseSBpbmNyZWFzaW5nIGZvciBlYWNoIHBhcnRpdGlvbgBWQUxVRVMgdmFsdWUgbXVzdCBiZSBvZiBzYW1lIHR5cGUgYXMgcGFydGl0aW9uIGZ1bmN0aW9uAE11bHRpcGxlIGRlZmluaXRpb24gb2Ygc2FtZSBjb25zdGFudCBpbiBsaXN0IHBhcnRpdGlvbmluZwBQYXJ0aXRpb25pbmcgY2FuIG5vdCBiZSB1c2VkIHN0YW5kLWFsb25lIGluIHF1ZXJ5AFRoZSBtaXggb2YgaGFuZGxlcnMgaW4gdGhlIHBhcnRpdGlvbnMgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIE15U1FMAEZvciB0aGUgcGFydGl0aW9uZWQgZW5naW5lIGl0IGlzIG5lY2Vzc2FyeSB0byBkZWZpbmUgYWxsICUtLjY0cwBUb28gbWFueSBwYXJ0aXRpb25zIChpbmNsdWRpbmcgc3VicGFydGl0aW9ucykgd2VyZSBkZWZpbmVkAEl0IGlzIG9ubHkgcG9zc2libGUgdG8gbWl4IFJBTkdFL0xJU1QgcGFydGl0aW9uaW5nIHdpdGggSEFTSC9LRVkgcGFydGl0aW9uaW5nIGZvciBzdWJwYXJ0aXRpb25pbmcARmFpbGVkIHRvIGNyZWF0ZSBzcGVjaWZpYyBoYW5kbGVyIGZpbGUAQSBCTE9CIGZpZWxkIGlzIG5vdCBhbGxvd2VkIGluIHBhcnRpdGlvbiBmdW5jdGlvbgBBICUtLjE5MnMgbXVzdCBpbmNsdWRlIGFsbCBjb2x1bW5zIGluIHRoZSB0YWJsZSdzIHBhcnRpdGlvbmluZyBmdW5jdGlvbiAocHJlZml4ZWQgY29sdW1ucyBhcmUgbm90IGNvbnNpZGVyZWQpLgBOdW1iZXIgb2YgJS0uNjRzID0gMCBpcyBub3QgYW4gYWxsb3dlZCB2YWx1ZQBQYXJ0aXRpb24gbWFuYWdlbWVudCBvbiBhIG5vdCBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3QgcG9zc2libGUARm9yZWlnbiBrZXlzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHBhcnRpdGlvbmluZwBFcnJvciBpbiBsaXN0IG9mIHBhcnRpdGlvbnMgdG8gJS0uNjRzAENhbm5vdCByZW1vdmUgYWxsIHBhcnRpdGlvbnMsIHVzZSBEUk9QIFRBQkxFIGluc3RlYWQAQ09BTEVTQ0UgUEFSVElUSU9OIGNhbiBvbmx5IGJlIHVzZWQgb24gSEFTSC9LRVkgcGFydGl0aW9ucwBSRU9SR0FOSVpFIFBBUlRJVElPTiBjYW4gb25seSBiZSB1c2VkIHRvIHJlb3JnYW5pemUgcGFydGl0aW9ucyBub3QgdG8gY2hhbmdlIHRoZWlyIG51bWJlcnMAUkVPUkdBTklaRSBQQVJUSVRJT04gd2l0aG91dCBwYXJhbWV0ZXJzIGNhbiBvbmx5IGJlIHVzZWQgb24gYXV0by1wYXJ0aXRpb25lZCB0YWJsZXMgdXNpbmcgSEFTSCBQQVJUSVRJT05zACUtLjY0cyBQQVJUSVRJT04gY2FuIG9ubHkgYmUgdXNlZCBvbiBSQU5HRS9MSVNUIHBhcnRpdGlvbnMAVHJ5aW5nIHRvIEFkZCBwYXJ0aXRpb24ocykgd2l0aCB3cm9uZyBudW1iZXIgb2Ygc3VicGFydGl0aW9ucwBBdCBsZWFzdCBvbmUgcGFydGl0aW9uIG11c3QgYmUgYWRkZWQAQXQgbGVhc3Qgb25lIHBhcnRpdGlvbiBtdXN0IGJlIGNvYWxlc2NlZABNb3JlIHBhcnRpdGlvbnMgdG8gcmVvcmdhbml6ZSB0aGFuIHRoZXJlIGFyZSBwYXJ0aXRpb25zAER1cGxpY2F0ZSBwYXJ0aXRpb24gbmFtZSAlLS4xOTJzAEl0IGlzIG5vdCBhbGxvd2VkIHRvIHNodXQgb2ZmIGJpbmxvZyBvbiB0aGlzIGNvbW1hbmQAV2hlbiByZW9yZ2FuaXppbmcgYSBzZXQgb2YgcGFydGl0aW9ucyB0aGV5IG11c3QgYmUgaW4gY29uc2VjdXRpdmUgb3JkZXIAUmVvcmdhbml6ZSBvZiByYW5nZSBwYXJ0aXRpb25zIGNhbm5vdCBjaGFuZ2UgdG90YWwgcmFuZ2VzIGV4Y2VwdCBmb3IgbGFzdCBwYXJ0aXRpb24gd2hlcmUgaXQgY2FuIGV4dGVuZCB0aGUgcmFuZ2UAUGFydGl0aW9uIGZ1bmN0aW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIGZvciB0aGlzIGhhbmRsZXIAUGFydGl0aW9uIHN0YXRlIGNhbm5vdCBiZSBkZWZpbmVkIGZyb20gQ1JFQVRFL0FMVEVSIFRBQkxFAFRoZSAlLS42NHMgaGFuZGxlciBvbmx5IHN1cHBvcnRzIDMyIGJpdCBpbnRlZ2VycyBpbiBWQUxVRVMAUGx1Z2luICclLS4xOTJzJyBpcyBub3QgbG9hZGVkAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJwBUYWJsZSBoYXMgbm8gcGFydGl0aW9uIGZvciB2YWx1ZSAlLS42NHMASXQgaXMgbm90IGFsbG93ZWQgdG8gc3BlY2lmeSAlcyBtb3JlIHRoYW4gb25jZQBGYWlsZWQgdG8gY3JlYXRlICVzAEZhaWxlZCB0byBkcm9wICVzAFRoZSBoYW5kbGVyIGRvZXNuJ3Qgc3VwcG9ydCBhdXRvZXh0ZW5kIG9mIHRhYmxlc3BhY2VzAEEgc2l6ZSBwYXJhbWV0ZXIgd2FzIGluY29ycmVjdGx5IHNwZWNpZmllZCwgZWl0aGVyIG51bWJlciBvciBvbiB0aGUgZm9ybSAxME0AVGhlIHNpemUgbnVtYmVyIHdhcyBjb3JyZWN0IGJ1dCB3ZSBkb24ndCBhbGxvdyB0aGUgZGlnaXQgcGFydCB0byBiZSBtb3JlIHRoYW4gMiBiaWxsaW9uAEZhaWxlZCB0byBhbHRlcjogJXMAV3JpdGluZyBvbmUgcm93IHRvIHRoZSByb3ctYmFzZWQgYmluYXJ5IGxvZyBmYWlsZWQAVGFibGUgZGVmaW5pdGlvbiBvbiBzb3VyY2UgYW5kIHJlcGxpY2EgZG9lcyBub3QgbWF0Y2g6ICVzAFJlcGxpY2EgcnVubmluZyB3aXRoIC0tbG9nLXJlcGxpY2EtdXBkYXRlcyBtdXN0IHVzZSByb3ctYmFzZWQgYmluYXJ5IGxvZ2dpbmcgdG8gYmUgYWJsZSB0byByZXBsaWNhdGUgcm93LWJhc2VkIGJpbmFyeSBsb2cgZXZlbnRzAEV2ZW50ICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cwBGYWlsZWQgdG8gc3RvcmUgZXZlbnQgJXMuIEVycm9yIGNvZGUgJWQgZnJvbSBzdG9yYWdlIGVuZ2luZS4AVW5rbm93biBldmVudCAnJS0uMTkycycARmFpbGVkIHRvIGFsdGVyIGV2ZW50ICclLS4xOTJzJwBGYWlsZWQgdG8gZHJvcCAlcwBJTlRFUlZBTCBpcyBlaXRoZXIgbm90IHBvc2l0aXZlIG9yIHRvbyBiaWcARU5EUyBpcyBlaXRoZXIgaW52YWxpZCBvciBiZWZvcmUgU1RBUlRTAEV2ZW50IGV4ZWN1dGlvbiB0aW1lIGlzIGluIHRoZSBwYXN0LiBFdmVudCBoYXMgYmVlbiBkaXNhYmxlZABGYWlsZWQgdG8gb3BlbiBteXNxbC5ldmVudABObyBkYXRldGltZSBleHByZXNzaW9uIHByb3ZpZGVkAENvbHVtbiBjb3VudCBvZiBteXNxbC4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAENhbm5vdCBsb2FkIGZyb20gbXlzcWwuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQARmFpbGVkIHRvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSBteXNxbC5ldmVudABFcnJvciBkdXJpbmcgY29tcGlsYXRpb24gb2YgZXZlbnQncyBib2R5AFNhbWUgb2xkIGFuZCBuZXcgZXZlbnQgbmFtZQBEYXRhIGZvciBjb2x1bW4gJyVzJyB0b28gbG9uZwBDYW5ub3QgZHJvcCBpbmRleCAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQAVGhlIHN5bnRheCAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNeVNRTCAlcy4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAFlvdSBjYW4ndCB3cml0ZS1sb2NrIGEgbG9nIHRhYmxlLiBPbmx5IHJlYWQgYWNjZXNzIGlzIHBvc3NpYmxlAFlvdSBjYW4ndCB1c2UgbG9ja3Mgd2l0aCBsb2cgdGFibGVzLgBVcGhvbGRpbmcgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgZm9yIHRhYmxlICclLjE5MnMnLCBlbnRyeSAnJS0uMTkycycsIGtleSAlZCB3b3VsZCBsZWFkIHRvIGEgZHVwbGljYXRlIGVudHJ5AFRoZSBjb2x1bW4gY291bnQgb2YgbXlzcWwuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gQ3JlYXRlZCB3aXRoIE15U1FMICVkLCBub3cgcnVubmluZyAlZC4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBDYW5ub3Qgc3dpdGNoIG91dCBvZiB0aGUgcm93LWJhc2VkIGJpbmFyeSBsb2cgZm9ybWF0IHdoZW4gdGhlIHNlc3Npb24gaGFzIG9wZW4gdGVtcG9yYXJ5IHRhYmxlcwBDYW5ub3QgY2hhbmdlIHRoZSBiaW5hcnkgbG9nZ2luZyBmb3JtYXQgaW5zaWRlIGEgc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIAVGhlIE5EQiBjbHVzdGVyIGVuZ2luZSBkb2VzIG5vdCBzdXBwb3J0IGNoYW5naW5nIHRoZSBiaW5sb2cgZm9ybWF0IG9uIHRoZSBmbHkgeWV0AENhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IHRhYmxlIHdpdGggcGFydGl0aW9ucwBQYXJ0aXRpb24gY29uc3RhbnQgaXMgb3V0IG9mIHBhcnRpdGlvbiBmdW5jdGlvbiBkb21haW4AVGhpcyBwYXJ0aXRpb24gZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQARXJyb3IgaW4gRERMIGxvZwBOb3QgYWxsb3dlZCB0byB1c2UgTlVMTCB2YWx1ZSBpbiBWQUxVRVMgTEVTUyBUSEFOAEluY29ycmVjdCBwYXJ0aXRpb24gbmFtZQBUcmFuc2FjdGlvbiBjaGFyYWN0ZXJpc3RpY3MgY2FuJ3QgYmUgY2hhbmdlZCB3aGlsZSBhIHRyYW5zYWN0aW9uIGlzIGluIHByb2dyZXNzAEFMVEVSIFRBQkxFIGNhdXNlcyBhdXRvX2luY3JlbWVudCByZXNlcXVlbmNpbmcsIHJlc3VsdGluZyBpbiBkdXBsaWNhdGUgZW50cnkgJyUtLjE5MnMnIGZvciBrZXkgJyUtLjE5MnMnAEludGVybmFsIHNjaGVkdWxlciBlcnJvciAlZABFcnJvciBkdXJpbmcgc3RhcnRpbmcvc3RvcHBpbmcgb2YgdGhlIHNjaGVkdWxlci4gRXJyb3IgY29kZSAldQBFbmdpbmUgY2Fubm90IGJlIHVzZWQgaW4gcGFydGl0aW9uZWQgdGFibGVzAENhbm5vdCBhY3RpdmF0ZSAnJS0uNjRzJyBsb2cAVGhlIHNlcnZlciB3YXMgbm90IGJ1aWx0IHdpdGggcm93LWJhc2VkIHJlcGxpY2F0aW9uAERlY29kaW5nIG9mIGJhc2U2NCBzdHJpbmcgZmFpbGVkAFJlY3Vyc2lvbiBvZiBFVkVOVCBEREwgc3RhdGVtZW50cyBpcyBmb3JiaWRkZW4gd2hlbiBib2R5IGlzIHByZXNlbnQAQ2Fubm90IHByb2NlZWQgYmVjYXVzZSBzeXN0ZW0gdGFibGVzIHVzZWQgYnkgRXZlbnQgU2NoZWR1bGVyIHdlcmUgZm91bmQgZGFtYWdlZCBhdCBzZXJ2ZXIgc3RhcnQAT25seSBpbnRlZ2VycyBhbGxvd2VkIGFzIG51bWJlciBoZXJlAFRoaXMgc3RvcmFnZSBlbmdpbmUgY2Fubm90IGJlIHVzZWQgZm9yIGxvZyB0YWJsZXMAWW91IGNhbm5vdCAnJXMnIGEgbG9nIHRhYmxlIGlmIGxvZ2dpbmcgaXMgZW5hYmxlZABDYW5ub3QgcmVuYW1lICclcycuIFdoZW4gbG9nZ2luZyBlbmFibGVkLCByZW5hbWUgdG8vZnJvbSBsb2cgdGFibGUgbXVzdCByZW5hbWUgdHdvIHRhYmxlczogdGhlIGxvZyB0YWJsZSB0byBhbiBhcmNoaXZlIHRhYmxlIGFuZCBhbm90aGVyIHRhYmxlIGJhY2sgdG8gJyVzJwBJbmNvcnJlY3QgcGFyYW1ldGVyIGNvdW50IGluIHRoZSBjYWxsIHRvIG5hdGl2ZSBmdW5jdGlvbiAnJS0uMTkycycASW5jb3JyZWN0IHBhcmFtZXRlcnMgaW4gdGhlIGNhbGwgdG8gbmF0aXZlIGZ1bmN0aW9uICclLS4xOTJzJwBJbmNvcnJlY3QgcGFyYW1ldGVycyBpbiB0aGUgY2FsbCB0byBzdG9yZWQgZnVuY3Rpb24gJS0uMTkycwBUaGlzIGZ1bmN0aW9uICclLS4xOTJzJyBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG5hdGl2ZSBmdW5jdGlvbgBEdXBsaWNhdGUgZW50cnkgJyUtLjY0cycgZm9yIGtleSAnJS0uMzg1cycAVG9vIG1hbnkgZmlsZXMgb3BlbmVkLCBwbGVhc2UgZXhlY3V0ZSB0aGUgY29tbWFuZCBhZ2FpbgBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdCBhbmQgT04gQ09NUExFVElPTiBOT1QgUFJFU0VSVkUgaXMgc2V0LiBUaGUgZXZlbnQgd2FzIGRyb3BwZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpb24uAEV2ZW50IGV4ZWN1dGlvbiB0aW1lIGlzIGluIHRoZSBwYXN0IGFuZCBPTiBDT01QTEVUSU9OIE5PVCBQUkVTRVJWRSBpcyBzZXQuIFRoZSBldmVudCB3YXMgbm90IGNoYW5nZWQuIFNwZWNpZnkgYSB0aW1lIGluIHRoZSBmdXR1cmUuAFRoZSBpbmNpZGVudCAlcyBvY2N1cnJlZCBvbiB0aGUgc291cmNlLiBNZXNzYWdlOiAlcwBUYWJsZSBoYXMgbm8gcGFydGl0aW9uIGZvciBzb21lIGV4aXN0aW5nIHZhbHVlcwBVbnNhZmUgc3RhdGVtZW50IHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cgdXNpbmcgc3RhdGVtZW50IGZvcm1hdCBzaW5jZSBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5ULiAlcwBGYXRhbCBlcnJvcjogJXMAUmVsYXkgbG9nIHJlYWQgZmFpbHVyZTogJXMAUmVsYXkgbG9nIHdyaXRlIGZhaWx1cmU6ICVzAEZhaWxlZCB0byBjcmVhdGUgJXMAU291cmNlIGNvbW1hbmQgJXMgZmFpbGVkOiAlcwBCaW5hcnkgbG9nZ2luZyBub3QgcG9zc2libGUuIE1lc3NhZ2U6ICVzAFZpZXcgYCUtLjY0c2AuYCUtLjY0c2AgaGFzIG5vIGNyZWF0aW9uIGNvbnRleHQAQ3JlYXRpb24gY29udGV4dCBvZiB2aWV3IGAlLS42NHNgLmAlLS42NHMnIGlzIGludmFsaWQAQ3JlYXRpb24gY29udGV4dCBvZiBzdG9yZWQgcm91dGluZSBgJS0uNjRzYC5gJS0uNjRzYCBpcyBpbnZhbGlkAENvcnJ1cHRlZCBUUkcgZmlsZSBmb3IgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AAVHJpZ2dlcnMgZm9yIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgIGhhdmUgbm8gY3JlYXRpb24gY29udGV4dABUcmlnZ2VyIGNyZWF0aW9uIGNvbnRleHQgb2YgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AgaXMgaW52YWxpZABDcmVhdGlvbiBjb250ZXh0IG9mIGV2ZW50IGAlLS42NHNgLmAlLS42NHNgIGlzIGludmFsaWQAQ2Fubm90IG9wZW4gdGFibGUgZm9yIHRyaWdnZXIgYCUtLjY0c2AuYCUtLjY0c2AAQ2Fubm90IGNyZWF0ZSBzdG9yZWQgcm91dGluZSBgJS0uNjRzYC4gQ2hlY2sgd2FybmluZ3MAQW1iaWd1b3VzIHJlcGxpY2EgbW9kZXMgY29tYmluYXRpb24uICVzAFRoZSBCSU5MT0cgc3RhdGVtZW50IG9mIHR5cGUgYCVzYCB3YXMgbm90IHByZWNlZGVkIGJ5IGEgZm9ybWF0IGRlc2NyaXB0aW9uIEJJTkxPRyBzdGF0ZW1lbnQuAENvcnJ1cHRlZCByZXBsaWNhdGlvbiBldmVudCB3YXMgZGV0ZWN0ZWQASW52YWxpZCBjb2x1bW4gcmVmZXJlbmNlICglLS42NHMpIGluIExPQUQgREFUQQBCZWluZyBwdXJnZWQgbG9nICVzIHdhcyBub3QgZm91bmQAWEFfUkJUSU1FT1VUOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrOiB0b29rIHRvbyBsb25nAFhBX1JCREVBRExPQ0s6IFRyYW5zYWN0aW9uIGJyYW5jaCB3YXMgcm9sbGVkIGJhY2s6IGRlYWRsb2NrIHdhcyBkZXRlY3RlZABQcmVwYXJlZCBzdGF0ZW1lbnQgbmVlZHMgdG8gYmUgcmUtcHJlcGFyZWQAREVMQVlFRCBvcHRpb24gbm90IHN1cHBvcnRlZCBmb3IgdGFibGUgJyUtLjE5MnMnAFRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBkb2VzIG5vdCBleGlzdAA8JS0uNjRzPiBvcHRpb24gaWdub3JlZABCdWlsdC1pbiBwbHVnaW5zIGNhbm5vdCBiZSBkZWxldGVkAFBsdWdpbiBpcyBidXN5IGFuZCB3aWxsIGJlIHVuaW5zdGFsbGVkIG9uIHNodXRkb3duACVzIHZhcmlhYmxlICclcycgaXMgcmVhZC1vbmx5LiBVc2UgU0VUICVzIHRvIGFzc2lnbiB0aGUgdmFsdWUAU3RvcmFnZSBlbmdpbmUgJXMgZG9lcyBub3Qgc3VwcG9ydCByb2xsYmFjayBmb3IgdGhpcyBzdGF0ZW1lbnQuIFRyYW5zYWN0aW9uIHJvbGxlZCBiYWNrIGFuZCBtdXN0IGJlIHJlc3RhcnRlZABVbmV4cGVjdGVkIHNvdXJjZSdzIGhlYXJ0YmVhdCBkYXRhOiAlcwBUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBpcyBlaXRoZXIgbmVnYXRpdmUgb3IgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkICglcyBzZWNvbmRzKS4AQmFkIHNjaGVtYSBmb3IgbXlzcWwubmRiX3JlcGxpY2F0aW9uIHRhYmxlLiBNZXNzYWdlOiAlLS42NHMARXJyb3IgaW4gcGFyc2luZyBjb25mbGljdCBmdW5jdGlvbi4gTWVzc2FnZTogJS0uNjRzAFdyaXRlIHRvIGV4Y2VwdGlvbnMgdGFibGUgZmFpbGVkLiBNZXNzYWdlOiAlLS4xMjhzAENvbW1lbnQgZm9yIHRhYmxlICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAENvbW1lbnQgZm9yIGZpZWxkICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAEZVTkNUSU9OICVzIGRvZXMgbm90IGV4aXN0LiBDaGVjayB0aGUgJ0Z1bmN0aW9uIE5hbWUgUGFyc2luZyBhbmQgUmVzb2x1dGlvbicgc2VjdGlvbiBpbiB0aGUgUmVmZXJlbmNlIE1hbnVhbABEYXRhYmFzZQBUYWJsZQBQYXJ0aXRpb24AU3VicGFydGl0aW9uAFRlbXBvcmFyeQBSZW5hbWVkAFRvbyBtYW55IGFjdGl2ZSBjb25jdXJyZW50IHRyYW5zYWN0aW9ucwBOb24tQVNDSUkgc2VwYXJhdG9yIGFyZ3VtZW50cyBhcmUgbm90IGZ1bGx5IHN1cHBvcnRlZABkZWJ1ZyBzeW5jIHBvaW50IHdhaXQgdGltZWQgb3V0AGRlYnVnIHN5bmMgcG9pbnQgaGl0IGxpbWl0IHJlYWNoZWQARHVwbGljYXRlIGNvbmRpdGlvbiBpbmZvcm1hdGlvbiBpdGVtICclcycAVW5oYW5kbGVkIHVzZXItZGVmaW5lZCB3YXJuaW5nIGNvbmRpdGlvbgBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIG5vdCBmb3VuZCBjb25kaXRpb24AVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNlcHRpb24gY29uZGl0aW9uAFJFU0lHTkFMIHdoZW4gaGFuZGxlciBub3QgYWN0aXZlAFNJR05BTC9SRVNJR05BTCBjYW4gb25seSB1c2UgYSBDT05ESVRJT04gZGVmaW5lZCB3aXRoIFNRTFNUQVRFAERhdGEgdHJ1bmNhdGVkIGZvciBjb25kaXRpb24gaXRlbSAnJXMnAERhdGEgdG9vIGxvbmcgZm9yIGNvbmRpdGlvbiBpdGVtICclcycAVW5rbm93biBsb2NhbGU6ICclLS42NHMnAFRoZSByZXF1ZXN0ZWQgc2VydmVyIGlkICVkIGNsYXNoZXMgd2l0aCB0aGUgcmVwbGljYSBzdGFydHVwIG9wdGlvbiAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZABRdWVyeSBjYWNoZSBpcyBkaXNhYmxlZDsgcmVzdGFydCB0aGUgc2VydmVyIHdpdGggcXVlcnlfY2FjaGVfdHlwZT0xIHRvIGVuYWJsZSBpdABEdXBsaWNhdGUgcGFydGl0aW9uIGZpZWxkIG5hbWUgJyUtLjE5MnMnAEluY29uc2lzdGVuY3kgaW4gdXNhZ2Ugb2YgY29sdW1uIGxpc3RzIGZvciBwYXJ0aXRpb25pbmcAUGFydGl0aW9uIGNvbHVtbiB2YWx1ZXMgb2YgaW5jb3JyZWN0IHR5cGUAVG9vIG1hbnkgZmllbGRzIGluICclLS4xOTJzJwBDYW5ub3QgdXNlIE1BWFZBTFVFIGFzIHZhbHVlIGluIFZBTFVFUyBJTgBDYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIHZhbHVlIGZvciB0aGlzIHR5cGUgb2YgJS0uNjRzIHBhcnRpdGlvbmluZwBSb3cgZXhwcmVzc2lvbnMgaW4gVkFMVUVTIElOIG9ubHkgYWxsb3dlZCBmb3IgbXVsdGktZmllbGQgY29sdW1uIHBhcnRpdGlvbmluZwBGaWVsZCAnJS0uMTkycycgaXMgb2YgYSBub3QgYWxsb3dlZCB0eXBlIGZvciB0aGlzIHR5cGUgb2YgcGFydGl0aW9uaW5nAFRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIHBhcnRpdGlvbmluZyBmaWVsZHMgaXMgdG9vIGxhcmdlAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIGJvdGggcm93LWluY2FwYWJsZSBlbmdpbmVzIGFuZCBzdGF0ZW1lbnQtaW5jYXBhYmxlIGVuZ2luZXMgYXJlIGludm9sdmVkLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBCSU5MT0dfRk9STUFUID0gUk9XIGFuZCBhdCBsZWFzdCBvbmUgdGFibGUgdXNlcyBhIHN0b3JhZ2UgZW5naW5lIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIHN0YXRlbWVudCBpcyB1bnNhZmUsIHN0b3JhZ2UgZW5naW5lIGlzIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcsIGFuZCBCSU5MT0dfRk9STUFUID0gTUlYRUQuICVzAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIHN0YXRlbWVudCBpcyBpbiByb3cgZm9ybWF0IGFuZCBhdCBsZWFzdCBvbmUgdGFibGUgdXNlcyBhIHN0b3JhZ2UgZW5naW5lIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQgYW5kIGF0IGxlYXN0IG9uZSB0YWJsZSB1c2VzIGEgc3RvcmFnZSBlbmdpbmUgbGltaXRlZCB0byByb3ctYmFzZWQgbG9nZ2luZy4lcwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBzdGF0ZW1lbnQgaXMgaW4gcm93IGZvcm1hdCBhbmQgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVC4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgbW9yZSB0aGFuIG9uZSBlbmdpbmUgaXMgaW52b2x2ZWQgYW5kIGF0IGxlYXN0IG9uZSBlbmdpbmUgaXMgc2VsZi1sb2dnaW5nLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBMSU1JVCBjbGF1c2UuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIHNldCBvZiByb3dzIGluY2x1ZGVkIGNhbm5vdCBiZSBwcmVkaWN0ZWQuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBJTlNFUlQgREVMQVlFRC4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgdGltZXMgd2hlbiByb3dzIGFyZSBpbnNlcnRlZCBjYW5ub3QgYmUgcHJlZGljdGVkLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgdGhlIGdlbmVyYWwgbG9nLCBzbG93IHF1ZXJ5IGxvZywgb3IgcGVyZm9ybWFuY2Vfc2NoZW1hIHRhYmxlKHMpLiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIHN5c3RlbSB0YWJsZXMgbWF5IGRpZmZlciBvbiByZXBsaWNhcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGludm9rZXMgYSB0cmlnZ2VyIG9yIGEgc3RvcmVkIGZ1bmN0aW9uIHRoYXQgaW5zZXJ0cyBpbnRvIGFuIEFVVE9fSU5DUkVNRU5UIGNvbHVtbi4gSW5zZXJ0ZWQgdmFsdWVzIGNhbm5vdCBiZSBsb2dnZWQgY29ycmVjdGx5LgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIFVERiB3aGljaCBtYXkgbm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gdmFyaWFibGUgdGhhdCBtYXkgaGF2ZSBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gZnVuY3Rpb24gdGhhdCBtYXkgcmV0dXJuIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgYWNjZXNzZXMgYSBub24tdHJhbnNhY3Rpb25hbCB0YWJsZSBhZnRlciBhY2Nlc3NpbmcgYSB0cmFuc2FjdGlvbmFsIHRhYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4AJXMgU3RhdGVtZW50OiAlcwBDb2x1bW4gJWQgb2YgdGFibGUgJyUtLjE5MnMuJS0uMTkycycgY2Fubm90IGJlIGNvbnZlcnRlZCBmcm9tIHR5cGUgJyUtLjMycycgdG8gdHlwZSAnJS0uMzJzJwBDYW4ndCBjcmVhdGUgY29udmVyc2lvbiB0YWJsZSBmb3IgdGFibGUgJyUtLjE5MnMuJS0uMTkycycAQ2Fubm90IG1vZGlmeSBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdCBpbnNpZGUgYSB0cmFuc2FjdGlvbgBUaGUgcGF0aCBzcGVjaWZpZWQgZm9yICUuNjRzIGlzIHRvbyBsb25nLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBOYXRpdmUgdGFibGUgJyUtLjY0cycuJyUtLjY0cycgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmUASW52YWxpZCBwZXJmb3JtYW5jZV9zY2hlbWEgdXNhZ2UuAFRhYmxlICclcycuJyVzJyB3YXMgc2tpcHBlZCBzaW5jZSBpdHMgZGVmaW5pdGlvbiBpcyBiZWluZyBtb2RpZmllZCBieSBjb25jdXJyZW50IERETCBzdGF0ZW1lbnQAQ2Fubm90IG1vZGlmeSBAQHNlc3Npb24uYmlubG9nX2RpcmVjdF9ub25fdHJhbnNhY3Rpb25hbF91cGRhdGVzIGluc2lkZSBhIHRyYW5zYWN0aW9uAENhbm5vdCBjaGFuZ2UgdGhlIGJpbmxvZyBkaXJlY3QgZmxhZyBpbnNpZGUgYSBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBBIFNQQVRJQUwgaW5kZXggbWF5IG9ubHkgY29udGFpbiBhIGdlb21ldHJpY2FsIHR5cGUgY29sdW1uAENvbW1lbnQgZm9yIGluZGV4ICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAFdhaXQgb24gYSBsb2NrIHdhcyBhYm9ydGVkIGR1ZSB0byBhIHBlbmRpbmcgZXhjbHVzaXZlIGxvY2sAJXMgdmFsdWUgaXMgb3V0IG9mIHJhbmdlIGluICclcycAQSB2YXJpYWJsZSBvZiBhIG5vbi1pbnRlZ2VyIGJhc2VkIHR5cGUgaW4gTElNSVQgY2xhdXNlAE1peGluZyBzZWxmLWxvZ2dpbmcgYW5kIG5vbi1zZWxmLWxvZ2dpbmcgZW5naW5lcyBpbiBhIHN0YXRlbWVudCBpcyB1bnNhZmUuAFN0YXRlbWVudCBhY2Nlc3NlcyBub250cmFuc2FjdGlvbmFsIHRhYmxlIGFzIHdlbGwgYXMgdHJhbnNhY3Rpb25hbCBvciB0ZW1wb3JhcnkgdGFibGUsIGFuZCB3cml0ZXMgdG8gYW55IG9mIHRoZW0uAENhbm5vdCBtb2RpZnkgQEBzZXNzaW9uLnNxbF9sb2dfYmluIGluc2lkZSBhIHRyYW5zYWN0aW9uAENhbm5vdCBjaGFuZ2UgdGhlIHNxbF9sb2dfYmluIGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAEZhaWxlZCB0byByZWFkIGZyb20gdGhlIC5wYXIgZmlsZQBWQUxVRVMgdmFsdWUgZm9yIHBhcnRpdGlvbiAnJS0uNjRzJyBtdXN0IGhhdmUgdHlwZSBJTlQAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJwBTRVQgUEFTU1dPUkQgaGFzIG5vIHNpZ25pZmljYW5jZSBmb3IgdXNlcnMgYXV0aGVudGljYXRpbmcgdmlhIHBsdWdpbnMAR1JBTlQgd2l0aCBJREVOVElGSUVEIFdJVEggaXMgaWxsZWdhbCBiZWNhdXNlIHRoZSB1c2VyICUtLipzIGFscmVhZHkgZXhpc3RzAENhbm5vdCB0cnVuY2F0ZSBhIHRhYmxlIHJlZmVyZW5jZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICglLjE5MnMpAFBsdWdpbiAnJXMnIGlzIGZvcmNlX3BsdXNfcGVybWFuZW50IGFuZCBjYW4gbm90IGJlIHVubG9hZGVkAFRoZSByZXF1ZXN0ZWQgdmFsdWUgZm9yIHRoZSBoZWFydGJlYXQgcGVyaW9kIGlzIGxlc3MgdGhhbiAxIG1pbGxpc2Vjb25kLiBUaGUgdmFsdWUgaXMgcmVzZXQgdG8gMCwgbWVhbmluZyB0aGF0IGhlYXJ0YmVhdGluZyB3aWxsIGVmZmVjdGl2ZWx5IGJlIGRpc2FibGVkLgBUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBleGNlZWRzIHRoZSB2YWx1ZSBvZiBgcmVwbGljYV9uZXRfdGltZW91dCcgc2Vjb25kcy4gQSBzZW5zaWJsZSB2YWx1ZSBmb3IgdGhlIHBlcmlvZCBzaG91bGQgYmUgbGVzcyB0aGFuIHRoZSB0aW1lb3V0LgBNdWx0aS1yb3cgc3RhdGVtZW50cyByZXF1aXJlZCBtb3JlIHRoYW4gJ21heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplJyBieXRlcyBvZiBzdG9yYWdlOyBpbmNyZWFzZSB0aGlzIG15c3FsZCB2YXJpYWJsZSBhbmQgdHJ5IGFnYWluAFByaW1hcnkga2V5L3BhcnRpdGlvbiBrZXkgdXBkYXRlIGlzIG5vdCBhbGxvd2VkIHNpbmNlIHRoZSB0YWJsZSBpcyB1cGRhdGVkIGJvdGggYXMgJyUtLjE5MnMnIGFuZCAnJS0uMTkycycuAFRhYmxlIHJlYnVpbGQgcmVxdWlyZWQuIFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCUtLjY0c2AgRk9SQ0UiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEAVGhlIHZhbHVlIG9mICclcycgc2hvdWxkIGJlIG5vIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgJyVzJwBJbmRleCBjb2x1bW4gc2l6ZSB0b28gbGFyZ2UuIFRoZSBtYXhpbXVtIGNvbHVtbiBzaXplIGlzICVsdSBieXRlcy4AVHJpZ2dlciAnJS0uNjRzJyBoYXMgYW4gZXJyb3IgaW4gaXRzIGJvZHk6ICclLS4yNTZzJwBVbmtub3duIHRyaWdnZXIgaGFzIGFuIGVycm9yIGluIGl0cyBib2R5OiAnJS0uMjU2cycASW5kZXggJXMgaXMgY29ycnVwdGVkAFVuZG8gbG9nIHJlY29yZCBpcyB0b28gYmlnLgBJTlNFUlQgSUdOT1JFLi4uIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4ASU5TRVJULi4uIFNFTEVDVC4uLiBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSB1cGRhdGVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AUkVQTEFDRS4uLiBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgcmVwbGFjZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBDUkVBVEUuLi4gSUdOT1JFIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AQ1JFQVRFLi4uIFJFUExBQ0UgU0VMRUNUIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIHJlcGxhY2VkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AVVBEQVRFIElHTk9SRSBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgdXBkYXRlZCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIGlnbm9yZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IHVuaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byB1bmluc3RhbGwgaXQuAFBsdWdpbiAnJXMnIGlzIG1hcmtlZCBhcyBub3QgZHluYW1pY2FsbHkgaW5zdGFsbGFibGUuIFlvdSBoYXZlIHRvIHN0b3AgdGhlIHNlcnZlciB0byBpbnN0YWxsIGl0LgBTdGF0ZW1lbnRzIHdyaXRpbmcgdG8gYSB0YWJsZSB3aXRoIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbiBhZnRlciBzZWxlY3RpbmcgZnJvbSBhbm90aGVyIHRhYmxlIGFyZSB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGRldGVybWluZXMgd2hhdCAoaWYgYW55KSByb3dzIHdpbGwgYmUgd3JpdHRlbi4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAENSRUFURSBUQUJMRS4uLiBTRUxFQ1QuLi4gIG9uIGEgdGFibGUgd2l0aCBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaW5zZXJ0ZWQuIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBJTlNFUlQuLi4gT04gRFVQTElDQVRFIEtFWSBVUERBVEUgIG9uIGEgdGFibGUgd2l0aCBtb3JlIHRoYW4gb25lIFVOSVFVRSBLRVkgaXMgdW5zYWZlAFRhYmxlIGlzIGJlaW5nIHVzZWQgaW4gZm9yZWlnbiBrZXkgY2hlY2suAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBzeXN0ZW0gdGFibGVzLiBbJXMuJXNdAElOU0VSVCBpbnRvIGF1dG9pbmNyZW1lbnQgZmllbGQgd2hpY2ggaXMgbm90IHRoZSBmaXJzdCBwYXJ0IGluIHRoZSBjb21wb3NlZCBwcmltYXJ5IGtleSBpcyB1bnNhZmUuAENhbm5vdCBsb2FkIGZyb20gJXMuJXMuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAVGhlIHJlcXVlc3RlZCB2YWx1ZSAlcyBmb3IgdGhlIHNvdXJjZSBkZWxheSBleGNlZWRzIHRoZSBtYXhpbXVtICV1AE9ubHkgRm9ybWF0X2Rlc2NyaXB0aW9uX2xvZ19ldmVudCBhbmQgcm93IGV2ZW50cyBhcmUgYWxsb3dlZCBpbiBCSU5MT0cgc3RhdGVtZW50cyAoYnV0ICVzIHdhcyBwcm92aWRlZCkATm9uIG1hdGNoaW5nIGF0dHJpYnV0ZSAnJS0uNjRzJyBiZXR3ZWVuIHBhcnRpdGlvbiBhbmQgdGFibGUAVGFibGUgdG8gZXhjaGFuZ2Ugd2l0aCBwYXJ0aXRpb24gaXMgcGFydGl0aW9uZWQ6ICclLS42NHMnAFRhYmxlIHRvIGV4Y2hhbmdlIHdpdGggcGFydGl0aW9uIGlzIHRlbXBvcmFyeTogJyUtLjY0cycAU3VicGFydGl0aW9uZWQgdGFibGUsIHVzZSBzdWJwYXJ0aXRpb24gaW5zdGVhZCBvZiBwYXJ0aXRpb24AVW5rbm93biBwYXJ0aXRpb24gJyUtLjY0cycgaW4gdGFibGUgJyUtLjY0cycAVGFibGVzIGhhdmUgZGlmZmVyZW50IGRlZmluaXRpb25zAEZvdW5kIGEgcm93IHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIHBhcnRpdGlvbgBPcHRpb24gYmlubG9nX2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX2NhY2hlX3NpemUuAENhbm5vdCB1c2UgJS0uNjRzIGFjY2VzcyBvbiBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbiBvbiBmaWVsZCAnJS0uNjRzJwBUYWJsZSB0byBleGNoYW5nZSB3aXRoIHBhcnRpdGlvbiBoYXMgZm9yZWlnbiBrZXkgcmVmZXJlbmNlczogJyUtLjY0cycAS2V5IHZhbHVlICclLS4xOTJzJyB3YXMgbm90IGZvdW5kIGluIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnAERhdGEgZm9yIGNvbHVtbiAnJXMnIHRvbyBsb25nAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIG5ldHdvcmsuAFJlcGxpY2F0aW9uIGV2ZW50IGNoZWNrc3VtIHZlcmlmaWNhdGlvbiBmYWlsZWQgd2hpbGUgcmVhZGluZyBmcm9tIGEgbG9nIGZpbGUuAE9wdGlvbiBiaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfc3RtdF9jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplLgBDYW4ndCB1cGRhdGUgdGFibGUgJyUtLjE5MnMnIHdoaWxlICclLS4xOTJzJyBpcyBiZWluZyBjcmVhdGVkLgBQQVJUSVRJT04gKCkgY2xhdXNlIG9uIG5vbiBwYXJ0aXRpb25lZCB0YWJsZQBGb3VuZCBhIHJvdyBub3QgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhcnRpdGlvbiBzZXQAcGFydGl0aW9uICclLS42NHMnIGRvZXNuJ3QgZXhpc3QARmFpbHVyZSB3aGlsZSBjaGFuZ2luZyB0aGUgdHlwZSBvZiByZXBsaWNhdGlvbiByZXBvc2l0b3J5OiAlcy4AVGhlIGNyZWF0aW9uIG9mIHNvbWUgdGVtcG9yYXJ5IHRhYmxlcyBjb3VsZCBub3QgYmUgcm9sbGVkIGJhY2suAFNvbWUgdGVtcG9yYXJ5IHRhYmxlcyB3ZXJlIGRyb3BwZWQsIGJ1dCB0aGVzZSBvcGVyYXRpb25zIGNvdWxkIG5vdCBiZSByb2xsZWQgYmFjay4AJXMgaXMgbm90IHN1cHBvcnRlZCBpbiBtdWx0aS10aHJlYWRlZCByZXBsaWNhIG1vZGUuICVzAFRoZSBudW1iZXIgb2YgbW9kaWZpZWQgZGF0YWJhc2VzIGV4Y2VlZHMgdGhlIG1heGltdW0gJWQ7IHRoZSBkYXRhYmFzZSBuYW1lcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVwbGljYXRpb24gZXZlbnQgbWV0YWRhdGEuAENhbm5vdCBleGVjdXRlIHRoZSBjdXJyZW50IGV2ZW50IGdyb3VwIGluIHRoZSBwYXJhbGxlbCBtb2RlLiBFbmNvdW50ZXJlZCBldmVudCAlcywgcmVsYXktbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVzIHdoaWNoIHByZXZlbnRzIGV4ZWN1dGlvbiBvZiB0aGlzIGV2ZW50IGdyb3VwIGluIHBhcmFsbGVsIG1vZGUuIFJlYXNvbjogJXMuACVzAEZVTExURVhUIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4ASW52YWxpZCBjb25kaXRpb24gbnVtYmVyAFNlbmRpbmcgcGFzc3dvcmRzIGluIHBsYWluIHRleHQgd2l0aG91dCBTU0wvVExTIGlzIGV4dHJlbWVseSBpbnNlY3VyZS4AU3RvcmluZyBNeVNRTCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBpcyBub3Qgc2VjdXJlIGFuZCBpcyB0aGVyZWZvcmUgbm90IHJlY29tbWVuZGVkLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgdGhlIFVTRVIgYW5kIFBBU1NXT1JEIGNvbm5lY3Rpb24gb3B0aW9ucyBmb3IgU1RBUlQgUkVQTElDQTsgc2VlIHRoZSAnU1RBUlQgUkVQTElDQSBTeW50YXgnIGluIHRoZSBNeVNRTCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZm9yIHRhYmxlICclLjE5MnMnLCByZWNvcmQgJyUtLjE5MnMnIHdvdWxkIGxlYWQgdG8gYSBkdXBsaWNhdGUgZW50cnkgaW4gdGFibGUgJyUuMTkycycsIGtleSAnJS4xOTJzJwBGb3JlaWduIGtleSBjb25zdHJhaW50IGZvciB0YWJsZSAnJS4xOTJzJywgcmVjb3JkICclLS4xOTJzJyB3b3VsZCBsZWFkIHRvIGEgZHVwbGljYXRlIGVudHJ5IGluIGEgY2hpbGQgdGFibGUAU2V0dGluZyBhdXRoZW50aWNhdGlvbiBvcHRpb25zIGlzIG5vdCBwb3NzaWJsZSB3aGVuIG9ubHkgdGhlIFJlcGxpY2EgU1FMIFRocmVhZCBpcyBiZWluZyBzdGFydGVkLgBUaGUgdGFibGUgZG9lcyBub3QgaGF2ZSBGVUxMVEVYVCBpbmRleCB0byBzdXBwb3J0IHRoaXMgcXVlcnkAVGhlIHN5c3RlbSB2YXJpYWJsZSAlLjIwMHMgY2Fubm90IGJlIHNldCBpbiBzdG9yZWQgZnVuY3Rpb25zIG9yIHRyaWdnZXJzLgBUaGUgc3lzdGVtIHZhcmlhYmxlICUuMjAwcyBjYW5ub3QgYmUgc2V0IHdoZW4gdGhlcmUgaXMgYW4gb25nb2luZyB0cmFuc2FjdGlvbi4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGhhcyB0aGUgdmFsdWUgJS4yMDBzLCB3aGljaCBpcyBub3QgbGlzdGVkIGluIEBAU0VTU0lPTi5HVElEX05FWFRfTElTVC4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBjaGFuZ2UgaW5zaWRlIGEgdHJhbnNhY3Rpb24uAFRoZSBzdGF0ZW1lbnQgJ1NFVCAlLjIwMHMnIGNhbm5vdCBpbnZva2UgYSBzdG9yZWQgZnVuY3Rpb24uAFRoZSBzeXN0ZW0gdmFyaWFibGUgQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgJ0FVVE9NQVRJQycgd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUX0xJU1QgaXMgbm9uLU5VTEwuAFNraXBwaW5nIHRyYW5zYWN0aW9uICUuMjAwcyBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gZXhlY3V0ZWQgYW5kIGxvZ2dlZC4ATWFsZm9ybWVkIEdUSUQgc2V0IHNwZWNpZmljYXRpb24gJyUuMjAwcycuAE1hbGZvcm1lZCBHVElEIHNldCBlbmNvZGluZy4ATWFsZm9ybWVkIEdUSUQgc3BlY2lmaWNhdGlvbiAnJS4yMDBzJy4ASW1wb3NzaWJsZSB0byBnZW5lcmF0ZSBHVElEOiB0aGUgaW50ZWdlciBjb21wb25lbnQgcmVhY2hlZCB0aGUgbWF4aW11bSB2YWx1ZS4gUmVzdGFydCB0aGUgc2VydmVyIHdpdGggYSBuZXcgc2VydmVyX3V1aWQuAFBhcmFtZXRlcnMgU09VUkNFX0xPR19GSUxFLCBTT1VSQ0VfTE9HX1BPUywgUkVMQVlfTE9HX0ZJTEUgYW5kIFJFTEFZX0xPR19QT1MgY2Fubm90IGJlIHNldCB3aGVuIFNPVVJDRV9BVVRPX1BPU0lUSU9OIGlzIGFjdGl2ZS4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDEgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnRzIHdpdGggaW1wbGljaXQgY29tbWl0IGluc2lkZSBhIHRyYW5zYWN0aW9uIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBHVElEX01PREUgPSBPTiByZXF1aXJlcyBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTi4AQEBHTE9CQUwuR1RJRF9NT0RFID0gT04gb3IgT05fUEVSTUlTU0lWRSBvciBPRkZfUEVSTUlTU0lWRSByZXF1aXJlcyAtLWxvZy1iaW4gYW5kIC0tbG9nLXJlcGxpY2EtdXBkYXRlcy4AQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgc2V0IHRvIFVVSUQ6TlVNQkVSIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSBzZXQgdG8gQU5PTllNT1VTIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uAEBAU0VTU0lPTi5HVElEX05FWFRfTElTVCBjYW5ub3QgYmUgc2V0IHRvIGEgbm9uLU5VTEwgdmFsdWUgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAEZvdW5kIGEgR3RpZF9sb2dfZXZlbnQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBVcGRhdGVzIHRvIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyBjYW4gb25seSBiZSBkb25lIGluIGVpdGhlciBhdXRvY29tbWl0dGVkIHN0YXRlbWVudHMgb3Igc2luZ2xlLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMsIGFuZCBuZXZlciBpbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYXMgdXBkYXRlcyB0byB0cmFuc2FjdGlvbmFsIHRhYmxlcy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBUQUJMRSAuLi4gU0VMRUNULgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgY2FuIG9ubHkgYmUgZXhlY3V0ZWQgb3V0c2lkZSB0cmFuc2FjdGlvbmFsIGNvbnRleHQuICBUaGVzZSBzdGF0ZW1lbnRzIGFyZSBhbHNvIG5vdCBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgdHJpZ2dlciBiZWNhdXNlIGZ1bmN0aW9ucyBhbmQgdHJpZ2dlcnMgYXJlIGFsc28gY29uc2lkZXJlZCB0byBiZSBtdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLgBUaGUgdmFsdWUgb2YgQEBHTE9CQUwuR1RJRF9NT0RFIGNhbiBvbmx5IGJlIGNoYW5nZWQgb25lIHN0ZXAgYXQgYSB0aW1lOiBPRkYgPC0+IE9GRl9QRVJNSVNTSVZFIDwtPiBPTl9QRVJNSVNTSVZFIDwtPiBPTi4gQWxzbyBub3RlIHRoYXQgdGhpcyB2YWx1ZSBtdXN0IGJlIHN0ZXBwZWQgdXAgb3IgZG93biBzaW11bHRhbmVvdXNseSBvbiBhbGwgc2VydmVycy4gU2VlIHRoZSBNYW51YWwgZm9yIGluc3RydWN0aW9ucy4AQ2Fubm90IHJlcGxpY2F0ZSBiZWNhdXNlIHRoZSBzb3VyY2UgcHVyZ2VkIHJlcXVpcmVkIGJpbmFyeSBsb2dzLiBSZXBsaWNhdGUgdGhlIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGZyb20gZWxzZXdoZXJlLCBvciBwcm92aXNpb24gYSBuZXcgcmVwbGljYSBmcm9tIGJhY2t1cC4gQ29uc2lkZXIgaW5jcmVhc2luZyB0aGUgc291cmNlJ3MgYmluYXJ5IGxvZyBleHBpcmF0aW9uIHBlcmlvZC4gJXMAQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgY2hhbmdlZCBieSBhIGNsaWVudCB0aGF0IG93bnMgYSBHVElELiBUaGUgY2xpZW50IG93bnMgJXMuIE93bmVyc2hpcCBpcyByZWxlYXNlZCBvbiBDT01NSVQgb3IgUk9MTEJBQ0suAFVua25vd24gRVhQTEFJTiBmb3JtYXQgbmFtZTogJyVzJwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQgaW4gYSBSRUFEIE9OTFkgdHJhbnNhY3Rpb24uAENvbW1lbnQgZm9yIHRhYmxlIHBhcnRpdGlvbiAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBSZXBsaWNhIGlzIG5vdCBjb25maWd1cmVkIG9yIGZhaWxlZCB0byBpbml0aWFsaXplIHByb3Blcmx5LiBZb3UgbXVzdCBhdCBsZWFzdCBzZXQgLS1zZXJ2ZXItaWQgdG8gZW5hYmxlIGVpdGhlciBhIHNvdXJjZSBvciBhIHJlcGxpY2EuIEFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cuAElubm9EQiBwcmVzZW50bHkgc3VwcG9ydHMgb25lIEZVTExURVhUIGluZGV4IGNyZWF0aW9uIGF0IGEgdGltZQBDYW5ub3QgY3JlYXRlIEZVTExURVhUIGluZGV4IG9uIHRlbXBvcmFyeSBJbm5vREIgdGFibGUAQ29sdW1uICclLS4xOTJzJyBpcyBvZiB3cm9uZyB0eXBlIGZvciBhbiBJbm5vREIgRlVMTFRFWFQgaW5kZXgASW5kZXggJyUtLjE5MnMnIGlzIG9mIHdyb25nIHR5cGUgZm9yIGFuIElubm9EQiBGVUxMVEVYVCBpbmRleABDcmVhdGluZyBpbmRleCAnJS0uMTkycycgcmVxdWlyZWQgbW9yZSB0aGFuICdpbm5vZGJfb25saW5lX2FsdGVyX2xvZ19tYXhfc2l6ZScgYnl0ZXMgb2YgbW9kaWZpY2F0aW9uIGxvZy4gUGxlYXNlIHRyeSBhZ2Fpbi4AVW5rbm93biBBTEdPUklUSE0gJyVzJwBVbmtub3duIExPQ0sgdHlwZSAnJXMnAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHJlcGxpY2Egd2FzIHN0b3BwZWQgd2l0aCBhbiBlcnJvciBvciBraWxsZWQgaW4gTVRBIG1vZGUuIENvbnNpZGVyIHVzaW5nIFJFU0VUIFJFUExJQ0Egb3IgU1RBUlQgUkVQTElDQSBVTlRJTC4AQ2Fubm90IHJlY292ZXIgYWZ0ZXIgUkVQTElDQSBlcnJvcmVkIG91dCBpbiBwYXJhbGxlbCBleGVjdXRpb24gbW9kZS4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4AQ2Fubm90IGNsZWFuIHVwIHdvcmtlciBpbmZvIHRhYmxlcy4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4AQ29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAUmVwbGljYSBtdXN0IHNpbGVudGx5IHJldHJ5IGN1cnJlbnQgdHJhbnNhY3Rpb24AVGhlcmUgaXMgYSBmb3JlaWduIGtleSBjaGVjayBydW5uaW5nIG9uIHRhYmxlICclLS4xOTJzJy4gQ2Fubm90IGRpc2NhcmQgdGhlIHRhYmxlLgBTY2hlbWEgbWlzbWF0Y2ggKCVzKQBUYWJsZSAnJS0uMTkycycgaW4gc3lzdGVtIHRhYmxlc3BhY2UASU8gUmVhZCBlcnJvcjogKCVsdSwgJXMpICVzAElPIFdyaXRlIGVycm9yOiAoJWx1LCAlcykgJXMAVGFibGVzcGFjZSBpcyBtaXNzaW5nIGZvciB0YWJsZSAlcy4AVGFibGVzcGFjZSAnJS0uMTkycycgZXhpc3RzLgBUYWJsZXNwYWNlIGhhcyBiZWVuIGRpc2NhcmRlZCBmb3IgdGFibGUgJyUtLjE5MnMnAEludGVybmFsIGVycm9yOiAlcwBBTFRFUiBUQUJMRSAlLS4xOTJzIElNUE9SVCBUQUJMRVNQQUNFIGZhaWxlZCB3aXRoIGVycm9yICVsdSA6ICclcycASW5kZXggY29ycnVwdDogJXMASW52YWxpZCBkaXNwbGF5IHdpZHRoLiBVc2UgWUVBUiBpbnN0ZWFkLgBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJlcXVpcmVtZW50cwDQotGA0Y/QsdCy0LAg0L/RitGA0LLQviDQtNCwINGB0Lgg0YHQvNC10L3QuNGC0LUg0L/QsNGA0L7Qu9Cw0YLQsCDRgdGK0YEgU0VUIFBBU1NXT1JEINC30LAg0LTQsCDQvNC+0LbQtdGC0LUg0LTQsCDQuNC30L/RitC70L3QuNGC0LUg0YLQsNC30Lgg0LrQvtC80LDQvdC00LAARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC4gTWlzc2luZyBpbmRleCBmb3IgY29uc3RyYWludCAnJXMnIGluIHRoZSBmb3JlaWduIHRhYmxlICclcycARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC4gTWlzc2luZyBpbmRleCBmb3IgY29uc3RyYWludCAnJXMnIGluIHRoZSByZWZlcmVuY2VkIHRhYmxlICclcycARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJXMnIHRvIHN5c3RlbSB0YWJsZXMARmFpbGVkIHRvIG9wZW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgJyVzJwBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRhYmxlICclcycuIEluY29ycmVjdCBvcHRpb25zIGluIEZPUkVJR04gS0VZIGNvbnN0cmFpbnQgJyVzJwBEdXBsaWNhdGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBuYW1lICclcycAVGhlIHBhc3N3b3JkIGhhc2ggZG9lc24ndCBoYXZlIHRoZSBleHBlY3RlZCBmb3JtYXQuAENhbm5vdCBkcm9wIGNvbHVtbiAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnAENhbm5vdCBkcm9wIGNvbHVtbiAnJS0uMTkycyc6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIG9mIHRhYmxlICclLS4xOTJzJwBDb2x1bW4gJyUtLjE5MnMnIGNhbm5vdCBiZSBOT1QgTlVMTDogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgU0VUIE5VTEwARHVwbGljYXRlIGluZGV4ICclLS42NHMnIGRlZmluZWQgb24gdGhlIHRhYmxlICclLS42NHMuJS0uNjRzJy4gVGhpcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIGRpc2FsbG93ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQ2Fubm90IGNoYW5nZSBjb2x1bW4gJyUtLjE5MnMnOiB1c2VkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycAQ2Fubm90IGNoYW5nZSBjb2x1bW4gJyUtLjE5MnMnOiB1c2VkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgb2YgdGFibGUgJyUtLjE5MnMnAENhbm5vdCBkZWxldGUgcm93cyBmcm9tIHRhYmxlIHdoaWNoIGlzIHBhcmVudCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIG9mIHRhYmxlICclLS4xOTJzJwBNYWxmb3JtZWQgY29tbXVuaWNhdGlvbiBwYWNrZXQuAFJ1bm5pbmcgaW4gcmVhZC1vbmx5IG1vZGUAV2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUIGlzIHNldCB0byBhIEdUSUQsIHlvdSBtdXN0IGV4cGxpY2l0bHkgc2V0IGl0IHRvIGEgZGlmZmVyZW50IHZhbHVlIGFmdGVyIGEgQ09NTUlUIG9yIFJPTExCQUNLLiBQbGVhc2UgY2hlY2sgR1RJRF9ORVhUIHZhcmlhYmxlIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxlZCBleHBsYW5hdGlvbi4gQ3VycmVudCBAQFNFU1NJT04uR1RJRF9ORVhUIGlzICclcycuAFRoZSBzeXN0ZW0gdmFyaWFibGUgJS4yMDBzIGNhbm5vdCBiZSBzZXQgaW4gc3RvcmVkIHByb2NlZHVyZXMuAEBAR0xPQkFMLkdUSURfUFVSR0VEIGNhbiBvbmx5IGJlIHNldCB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW4gb25seSBiZSBzZXQgd2hlbiBAQEdMT0JBTC5HVElEX0VYRUNVVEVEIGlzIGVtcHR5LgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW4gb25seSBiZSBzZXQgd2hlbiB0aGVyZSBhcmUgbm8gb25nb2luZyB0cmFuc2FjdGlvbnMgKG5vdCBldmVuIGluIG90aGVyIGNsaWVudHMpLgBAQEdMT0JBTC5HVElEX1BVUkdFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AQEBHTE9CQUwuR1RJRF9FWEVDVVRFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVCwgYW5kIGJvdGggcmVwbGljYXRlZCBhbmQgbm9uIHJlcGxpY2F0ZWQgdGFibGVzIGFyZSB3cml0dGVuIHRvLgAlcyBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIG9wZXJhdGlvbi4gVHJ5ICVzLgAlcyBpcyBub3Qgc3VwcG9ydGVkLiBSZWFzb246ICVzLiBUcnkgJXMuAENPUFkgYWxnb3JpdGhtIHJlcXVpcmVzIGEgbG9jawBQYXJ0aXRpb24gc3BlY2lmaWMgb3BlcmF0aW9ucyBkbyBub3QgeWV0IHN1cHBvcnQgTE9DSy9BTEdPUklUSE0AQ29sdW1ucyBwYXJ0aWNpcGF0aW5nIGluIGEgZm9yZWlnbiBrZXkgYXJlIHJlbmFtZWQAQ2Fubm90IGNoYW5nZSBjb2x1bW4gdHlwZSBJTlBMQUNFAEFkZGluZyBmb3JlaWduIGtleXMgbmVlZHMgZm9yZWlnbl9rZXlfY2hlY2tzPU9GRgBDcmVhdGluZyB1bmlxdWUgaW5kZXhlcyB3aXRoIElHTk9SRSByZXF1aXJlcyBDT1BZIGFsZ29yaXRobSB0byByZW1vdmUgZHVwbGljYXRlIHJvd3MARHJvcHBpbmcgYSBwcmltYXJ5IGtleSBpcyBub3QgYWxsb3dlZCB3aXRob3V0IGFsc28gYWRkaW5nIGEgbmV3IHByaW1hcnkga2V5AEFkZGluZyBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gcmVxdWlyZXMgYSBsb2NrAENhbm5vdCByZXBsYWNlIGhpZGRlbiBGVFNfRE9DX0lEIHdpdGggYSB1c2VyLXZpc2libGUgb25lAENhbm5vdCBkcm9wIG9yIHJlbmFtZSBGVFNfRE9DX0lEAEZ1bGx0ZXh0IGluZGV4IGNyZWF0aW9uIHJlcXVpcmVzIGEgbG9jawBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgY2FuIG5vdCBiZSBzZXQgd2hlbiB0aGUgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4gSW5zdGVhZCwgZm9yIGVhY2ggdHJhbnNhY3Rpb24gdGhhdCB5b3Ugd2FudCB0byBza2lwLCBnZW5lcmF0ZSBhbiBlbXB0eSB0cmFuc2FjdGlvbiB3aXRoIHRoZSBzYW1lIEdUSUQgYXMgdGhlIHRyYW5zYWN0aW9uAER1cGxpY2F0ZSBlbnRyeSBmb3Iga2V5ICclLS4xOTJzJwBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBwYXRoIGxlbmd0aCBleGNlZWRpbmcgJWQgY2hhcmFjdGVycy4gUGF0aDogJyVzJy4AY2Fubm90IHNpbGVudGx5IGNvbnZlcnQgTlVMTCB2YWx1ZXMsIGFzIHJlcXVpcmVkIGluIHRoaXMgU1FMX01PREUA0J/QsNGA0L7Qu9Cw0YLQsCDQstC4INC1INC40LfRgtC10LrQu9CwLiDQl9CwINC00LAg0LLQu9C10LfQtdGC0LUg0YLRgNGP0LHQstCwINC00LAg0Y8g0YHQvNC10L3QuNGC0LUg0LjQt9C/0L7Qu9C30LLQsNC50LrQuCDQutC70LjQtdC90YIg0LrQvtC50YLQviDQv9C+0LTQtNGA0YrRgNC20LAg0YLQsNC60LjQstCwINC/0LDRgNC+0LvQuC4ARm91bmQgYSByb3cgaW4gd3JvbmcgcGFydGl0aW9uICVzAENhbm5vdCBzY2hlZHVsZSBldmVudCAlcywgcmVsYXktbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVzIHRvIFdvcmtlciB0aHJlYWQgYmVjYXVzZSBpdHMgc2l6ZSAlbHUgZXhjZWVkcyAlbHUgb2YgcmVwbGljYV9wZW5kaW5nX2pvYnNfc2l6ZV9tYXguAENhbm5vdCBDUkVBVEUgRlVMTFRFWFQgSU5ERVggV0lUSCBQQVJTRVIgb24gSW5ub0RCIHRhYmxlAFRoZSBiaW5hcnkgbG9nIGZpbGUgJyVzJyBpcyBsb2dpY2FsbHkgY29ycnVwdGVkOiAlcwBmaWxlICVzIHdhcyBub3QgcHVyZ2VkIGJlY2F1c2UgaXQgd2FzIGJlaW5nIHJlYWQgYnkgJWQgdGhyZWFkKHMpLCBwdXJnZWQgb25seSAlZCBvdXQgb2YgJWQgZmlsZXMuAGZpbGUgJXMgd2FzIG5vdCBwdXJnZWQgYmVjYXVzZSBpdCBpcyB0aGUgYWN0aXZlIGxvZyBmaWxlLgBBdXRvLWluY3JlbWVudCB2YWx1ZSBpbiBVUERBVEUgY29uZmxpY3RzIHdpdGggaW50ZXJuYWxseSBnZW5lcmF0ZWQgdmFsdWVzAFJvdyBldmVudHMgYXJlIG5vdCBsb2dnZWQgZm9yICVzIHN0YXRlbWVudHMgdGhhdCBtb2RpZnkgQkxBQ0tIT0xFIHRhYmxlcyBpbiByb3cgZm9ybWF0LiBUYWJsZShzKTogJyUtLjE5MnMnAFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGFwcGxpZXIgbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkA0J7RgtC60LDQt9Cw0L0g0LTQvtGB0YLRitC/INC/0YDQuCDQvtC/0LjRgiDQt9CwINGB0LzRj9C90LAg0LrRitC8INC/0L7RgtGA0LXQsdC40YLQtdC7ICUtLjQ4cydAJyUtLjY0cycgKNC40LfQv9C+0LvQt9Cy0LDQvdCwINC/0LDRgNC+0LvQsDogJXMpLiDQl9Cw0YLQstCw0YDRj9C90LUg0L3QsCDQstGA0YrQt9C60LDRgtCwLgBJbm5vREIgaXMgaW4gcmVhZCBvbmx5IG1vZGUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIFNRTCB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIFNRTCB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgSU8gdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBJTyB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AT3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQuIFRoZSB0YWJsZSAnJS0uNjRzLiUtLjY0cycgaXMgbWlzc2luZywgY29ycnVwdCBvciBjb250YWlucyBiYWQgZGF0YS4AVGVtcG9yYXJ5IGZpbGUgd3JpdGUgZmFpbHVyZS4AVXBncmFkZSBpbmRleCBuYW1lIGZhaWxlZCwgcGxlYXNlIHVzZSBjcmVhdGUgaW5kZXgoYWx0ZXIgdGFibGUpIGFsZ29yaXRobSBjb3B5IHRvIHJlYnVpbGQgaW5kZXguAFRJTUUvVElNRVNUQU1QL0RBVEVUSU1FIGNvbHVtbnMgb2Ygb2xkIGZvcm1hdCBoYXZlIGJlZW4gdXBncmFkZWQgdG8gdGhlIG5ldyBmb3JtYXQuAE9wZXJhdGlvbiBub3QgYWxsb3dlZCB3aGVuIGlubm9kYl9mb3JjZV9yZWNvdmVyeSA+IDAuANCY0L3QuNGG0LjQsNC70LjQt9Cw0YbQuNC+0L3QvdC40Y8g0LLQtdC60YLQvtGAINC/0L7QtNCw0LTQtdC9INC90LAgJXMg0LUg0L/RgNC10LrQsNC70LXQvdC+INC60YrRgS4g0KLRgNGP0LHQstCwINC00LAg0LUg0L/QvtC90LUgJWQg0LHQsNC50YLQsABQbHVnaW4gJyVzJyBjYW5ub3QgYmUgdW5pbnN0YWxsZWQgbm93LiAlcwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQgYmVjYXVzZSBpdCBuZWVkcyB0byBiZSB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nIGFzIG11bHRpcGxlIHN0YXRlbWVudHMsIGFuZCB0aGlzIGlzIG5vdCBhbGxvd2VkIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBSZXBsaWNhIGhhcyBtb3JlIEdUSURzIHRoYW4gdGhlIHNvdXJjZSBoYXMsIHVzaW5nIHRoZSBzb3VyY2UncyBTRVJWRVJfVVVJRC4gVGhpcyBtYXkgaW5kaWNhdGUgdGhhdCB0aGUgdGhlIGxhc3QgYmluYXJ5IGxvZyBmaWxlIHdhcyB0cnVuY2F0ZWQgb3IgbG9zdCwgZS5nLiwgYWZ0ZXIgYSBwb3dlciBmYWlsdXJlIHdoZW4gc3luY19iaW5sb2cgIT0gMS4gVGhlIHNvdXJjZSBtYXkgaGF2ZSByb2xsZWQgYmFjayB0cmFuc2FjdGlvbnMgdGhhdCB3ZXJlIGFscmVhZHkgcmVwbGljYXRlZCB0byB0aGUgcmVwbGljYS4gUmVwbGljYXRlIGFueSB0cmFuc2FjdGlvbnMgdGhhdCBzb3VyY2UgaGFzIHJvbGxlZCBiYWNrIGZyb20gcmVwbGljYSB0byBzb3VyY2UsIGFuZC9vciBjb21taXQgZW1wdHkgdHJhbnNhY3Rpb25zIG9uIHNvdXJjZSB0byBhY2NvdW50IGZvciB0cmFuc2FjdGlvbnMgdGhhdCBoYXZlIGJlZW4gY29tbWl0dGVkIG9uIHNvdXJjZSBidXQgYXJlIG5vdCBpbmNsdWRlZCBpbiBHVElEX0VYRUNVVEVELgBUaGUgdGFibGUgJyVzLiVzJyBkb2VzIG5vdCBoYXZlIHRoZSBuZWNlc3Nhcnkga2V5KHMpIGRlZmluZWQgb24gaXQuIFBsZWFzZSBjaGVjayB0aGUgdGFibGUgZGVmaW5pdGlvbiBhbmQgY3JlYXRlIGluZGV4KHMpIGFjY29yZGluZ2x5LgBTZXR0aW5nIG5hbWVkX3BpcGVfZnVsbF9hY2Nlc3NfZ3JvdXA9JyVzJyBpcyBpbnNlY3VyZS4gQ29uc2lkZXIgdXNpbmcgYSBXaW5kb3dzIGdyb3VwIHdpdGggZmV3ZXIgbWVtYmVycy4ARmlsZSAlcyBpcyBjb3JydXB0ZWQAUXVlcnkgcGFydGlhbGx5IGNvbXBsZXRlZCBvbiB0aGUgc291cmNlIChlcnJvciBvbiBzb3VyY2U6ICVkKSBhbmQgd2FzIGFib3J0ZWQuIFRoZXJlIGlzIGEgY2hhbmNlIHRoYXQgeW91ciBzb3VyY2UgaXMgaW5jb25zaXN0ZW50IGF0IHRoaXMgcG9pbnQuIElmIHlvdSBhcmUgc3VyZSB0aGF0IHlvdXIgc291cmNlIGlzIG9rLCBydW4gdGhpcyBxdWVyeSBtYW51YWxseSBvbiB0aGUgcmVwbGljYSBhbmQgdGhlbiByZXN0YXJ0IHRoZSByZXBsaWNhIHdpdGggU0VUIEdMT0JBTCBTUUxfUkVQTElDQV9TS0lQX0NPVU5URVI9MTsgU1RBUlQgUkVQTElDQTsuIFF1ZXJ5OiclcycAUXVlcnkgY2F1c2VkIGRpZmZlcmVudCBlcnJvcnMgb24gc291cmNlIGFuZCByZXBsaWNhLiBFcnJvciBvbiBzb3VyY2U6IG1lc3NhZ2UgKGZvcm1hdCk9JyVzJyBlcnJvciBjb2RlPSVkOyBFcnJvciBvbiByZXBsaWNhOmFjdHVhbCBtZXNzYWdlPSclcycsIGVycm9yIGNvZGU9JWQuIERlZmF1bHQgZGF0YWJhc2U6JyVzJy4gUXVlcnk6JyVzJwBTdG9yYWdlIGVuZ2luZSBmb3IgdGFibGUgJyVzJy4nJXMnIGlzIG5vdCBsb2FkZWQuAEdFVCBTVEFDS0VEIERJQUdOT1NUSUNTIHdoZW4gaGFuZGxlciBub3QgYWN0aXZlACVzIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIFRoZSBzdGF0ZW1lbnQgd2FzIGNvbnZlcnRlZCB0byAlcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBmdWxsdGV4dCBwYXJzZXIgcGx1Z2luIHdoaWNoIG1heSBub3QgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIG9uIHRoZSByZXBsaWNhLgBDYW5ub3QgRElTQ0FSRC9JTVBPUlQgdGFibGVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGVtcG9yYXJ5IHRhYmxlAEZvcmVpZ24ga2V5IGNhc2NhZGUgZGVsZXRlL3VwZGF0ZSBleGNlZWRzIG1heCBkZXB0aCBvZiAlZC4AVGhlIGNvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBDcmVhdGVkIHdpdGggTXlTUUwgJWQsIG5vdyBydW5uaW5nICVkLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAFRyaWdnZXIgJXMuJXMuJXMgZG9lcyBub3QgaGF2ZSBDUkVBVEVEIGF0dHJpYnV0ZS4AUmVmZXJlbmNlZCB0cmlnZ2VyICclcycgZm9yIHRoZSBnaXZlbiBhY3Rpb24gdGltZSBhbmQgZXZlbnQgdHlwZSBkb2VzIG5vdCBleGlzdC4ARVhQTEFJTiBGT1IgQ09OTkVDVElPTiBjb21tYW5kIGlzIHN1cHBvcnRlZCBvbmx5IGZvciBTRUxFQ1QvVVBEQVRFL0lOU0VSVC9ERUxFVEUvUkVQTEFDRQBJbnZhbGlkIHNpemUgZm9yIGNvbHVtbiAnJS0uMTkycycuAFRhYmxlIHN0b3JhZ2UgZW5naW5lICclLS42NHMnIGZvdW5kIHJlcXVpcmVkIGNyZWF0ZSBvcHRpb24gbWlzc2luZwBPdXQgb2YgbWVtb3J5IGluIHN0b3JhZ2UgZW5naW5lICclLS42NHMnLgBUaGUgcGFzc3dvcmQgZm9yIGFub255bW91cyB1c2VyIGNhbm5vdCBiZSBleHBpcmVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2Egc3FsIHRocmVhZDsgcnVuIFNUT1AgUkVQTElDQSBTUUxfVEhSRUFEIGZpcnN0AENhbm5vdCBjcmVhdGUgRlVMTFRFWFQgaW5kZXggb24gbWF0ZXJpYWxpemVkIHN1YnF1ZXJ5AFVuZG8gTG9nIGVycm9yOiAlcwBJbnZhbGlkIGFyZ3VtZW50IGZvciBsb2dhcml0aG0AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhIGlvIHRocmVhZDsgcnVuIFNUT1AgUkVQTElDQSBJT19USFJFQUQgRk9SIENIQU5ORUwgJyVzJyBmaXJzdC4AVGhpcyBvcGVyYXRpb24gbWF5IG5vdCBiZSBzYWZlIHdoZW4gdGhlIHJlcGxpY2EgaGFzIHRlbXBvcmFyeSB0YWJsZXMuIFRoZSB0YWJsZXMgd2lsbCBiZSBrZXB0IG9wZW4gdW50aWwgdGhlIHNlcnZlciByZXN0YXJ0cyBvciB1bnRpbCB0aGUgdGFibGVzIGFyZSBkZWxldGVkIGJ5IGFueSByZXBsaWNhdGVkIERST1Agc3RhdGVtZW50LiBTdWdnZXN0IHRvIHdhaXQgdW50aWwgcmVwbGljYV9vcGVuX3RlbXBfdGFibGVzID0gMC4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyB3aXRoIGEgU09VUkNFX0xPR19GSUxFIGNsYXVzZSBidXQgbm8gU09VUkNFX0xPR19QT1MgY2xhdXNlIG1heSBub3QgYmUgc2FmZS4gVGhlIG9sZCBwb3NpdGlvbiB2YWx1ZSBtYXkgbm90IGJlIHZhbGlkIGZvciB0aGUgbmV3IGJpbmFyeSBsb2cgZmlsZS4AUXVlcnkgZXhlY3V0aW9uIHdhcyBpbnRlcnJ1cHRlZCwgbWF4aW11bSBzdGF0ZW1lbnQgZXhlY3V0aW9uIHRpbWUgZXhjZWVkZWQAU2VsZWN0IGlzIG5vdCBhIHJlYWQgb25seSBzdGF0ZW1lbnQsIGRpc2FibGluZyB0aW1lcgBEdXBsaWNhdGUgZW50cnkgJyUtLjE5MnMnLgAnJXMnIG1vZGUgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LiBVc2UgU1RSSUNUX0FMTF9UQUJMRVMgb3IgU1RSSUNUX1RSQU5TX1RBQkxFUyBpbnN0ZWFkLgBFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjb250YWlucyBhZ2dyZWdhdGUgZnVuY3Rpb24gYW5kIGFwcGxpZXMgdG8gYSBVTklPTiwgRVhDRVBUIG9yIElOVEVSU0VDVABFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjb250YWlucyBhZ2dyZWdhdGUgZnVuY3Rpb24gYW5kIGFwcGxpZXMgdG8gdGhlIHJlc3VsdCBvZiBhIG5vbi1hZ2dyZWdhdGVkIHF1ZXJ5AFJlcGxpY2Egd29ya2VyIGhhcyBzdG9wcGVkIGFmdGVyIGF0IGxlYXN0IG9uZSBwcmV2aW91cyB3b3JrZXIgZW5jb3VudGVyZWQgYW4gZXJyb3Igd2hlbiByZXBsaWNhLXByZXNlcnZlLWNvbW1pdC1vcmRlciB3YXMgZW5hYmxlZC4gVG8gcHJlc2VydmUgY29tbWl0IG9yZGVyLCB0aGUgbGFzdCB0cmFuc2FjdGlvbiBleGVjdXRlZCBieSB0aGlzIHRocmVhZCBoYXMgbm90IGJlZW4gY29tbWl0dGVkLiBXaGVuIHJlc3RhcnRpbmcgdGhlIHJlcGxpY2EgYWZ0ZXIgZml4aW5nIGFueSBmYWlsZWQgdGhyZWFkcywgeW91IHNob3VsZCBmaXggdGhpcyB3b3JrZXIgYXMgd2VsbC4AcmVwbGljYV9wcmVzZXJ2ZV9jb21taXRfb3JkZXIgaXMgbm90IHN1cHBvcnRlZCAlcy4AVGhlIHNlcnZlciBpcyBjdXJyZW50bHkgaW4gb2ZmbGluZSBtb2RlAEJpbmFyeSBnZW9tZXRyeSBmdW5jdGlvbiAlcyBnaXZlbiB0d28gZ2VvbWV0cmllcyBvZiBkaWZmZXJlbnQgc3JpZHM6ICV1IGFuZCAldSwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBpZGVudGljYWwuAENhbGxpbmcgZ2VvbWV0cnkgZnVuY3Rpb24gJXMgd2l0aCB1bnN1cHBvcnRlZCB0eXBlcyBvZiBhcmd1bWVudHMuAFVua25vd24gR0lTIGVycm9yIG9jY3VycmVkIGluIGZ1bmN0aW9uICVzLgBVbmtub3duIGV4Y2VwdGlvbiBjYXVnaHQgaW4gR0lTIGZ1bmN0aW9uICVzLgBJbnZhbGlkIEdJUyBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzLgBUaGUgZ2VvbWV0cnkgaGFzIG5vIGRhdGEgaW4gZnVuY3Rpb24gJXMuAFVuYWJsZSB0byBjYWxjdWxhdGUgY2VudHJvaWQgYmVjYXVzZSBnZW9tZXRyeSBpcyBlbXB0eSBpbiBmdW5jdGlvbiAlcy4AR2VvbWV0cnkgb3ZlcmxheSBjYWxjdWxhdGlvbiBlcnJvcjogZ2VvbWV0cnkgZGF0YSBpcyBpbnZhbGlkIGluIGZ1bmN0aW9uICVzLgBHZW9tZXRyeSB0dXJuIGluZm8gY2FsY3VsYXRpb24gZXJyb3I6IGdlb21ldHJ5IGRhdGEgaXMgaW52YWxpZCBpbiBmdW5jdGlvbiAlcy4AQW5hbHlzaXMgcHJvY2VkdXJlcyBvZiBpbnRlcnNlY3Rpb24gcG9pbnRzIGludGVycnVwdGVkIHVuZXhwZWN0ZWRseSBpbiBmdW5jdGlvbiAlcy4AVW5rbm93biBleGNlcHRpb24gdGhyb3duIGluIGZ1bmN0aW9uICVzLgBNZW1vcnkgYWxsb2NhdGlvbiBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ARG9tYWluIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBMZW5ndGggZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAEludmFsaWQgYXJndW1lbnQgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAE91dCBvZiByYW5nZSBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AT3ZlcmZsb3cgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFJhbmdlIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBVbmRlcmZsb3cgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAExvZ2ljIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBSdW50aW1lIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBVbmtub3duIGV4Y2VwdGlvbjogJS0uMzg0cyBpbiBmdW5jdGlvbiAlcy4AR2VvbWV0cnkgYnl0ZSBzdHJpbmcgbXVzdCBiZSBsaXR0bGUgZW5kaWFuLgBUaGUgcGFzc3dvcmQgcHJvdmlkZWQgZm9yIHRoZSByZXBsaWNhdGlvbiB1c2VyIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIDMyIGNoYXJhY3RlcnMASW5jb3JyZWN0IHVzZXItbGV2ZWwgbG9jayBuYW1lICclLS4xOTJzJy4gVGhlIG5hbWUgaXMgZW1wdHksIE5VTEwsIG9yIGNhbiBub3QgYmUgZXhwcmVzc2VkIGluIHRoZSBjdXJyZW50IGNoYXJhY3Rlci1zZXQuAERlYWRsb2NrIGZvdW5kIHdoZW4gdHJ5aW5nIHRvIGdldCB1c2VyLWxldmVsIGxvY2s7IHRyeSByb2xsaW5nIGJhY2sgdHJhbnNhY3Rpb24vcmVsZWFzaW5nIGxvY2tzIGFuZCByZXN0YXJ0aW5nIGxvY2sgYWNxdWlzaXRpb24uAFJFUExBQ0UgY2Fubm90IGJlIGV4ZWN1dGVkIGFzIGl0IHJlcXVpcmVzIGRlbGV0aW5nIHJvd3MgdGhhdCBhcmUgbm90IGluIHRoZSB2aWV3AERvIG5vdCBzdXBwb3J0IG9ubGluZSBvcGVyYXRpb24gb24gdGFibGUgd2l0aCBHSVMgaW5kZXgAVXNlciB2YXJpYWJsZSBuYW1lICclLS4xMDBzJyBpcyBpbGxlZ2FsAENhbm5vdCAlcyB3aGVuIEdUSURfTU9ERSA9IE9GRi4AQ2Fubm90ICVzIGZyb20gYSByZXBsaWNhIHRocmVhZC4ASW5jb3JyZWN0IHR5cGUgZm9yIGFyZ3VtZW50ICVzIGluIGZ1bmN0aW9uICVzLgBFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjbGF1c2UgaXMgbm90IGluIFNFTEVDVCBsaXN0LCByZWZlcmVuY2VzIGNvbHVtbiAnJS0uMTkycycgd2hpY2ggaXMgbm90IGluIFNFTEVDVCBsaXN0OyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoICVzAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNsYXVzZSBpcyBub3QgaW4gU0VMRUNUIGxpc3QsIGNvbnRhaW5zIGFnZ3JlZ2F0ZSBmdW5jdGlvbjsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAlcwBTdXBwbGllZCBmaWx0ZXIgbGlzdCBjb250YWlucyBhIHZhbHVlIHdoaWNoIGlzIG5vdCBpbiB0aGUgcmVxdWlyZWQgZm9ybWF0ICdkYl9wYXR0ZXJuLnRhYmxlX3BhdHRlcm4nAE9LIHBhY2tldCB0b28gbGFyZ2UASW52YWxpZCBKU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6ICVzAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBNaXNzaW5nIHJlcXVpcmVkIG1lbWJlciAnJXMnAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBNZW1iZXIgJyVzJyBtdXN0IGJlIG9mIHR5cGUgJyVzJwBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlcwBVbnN1cHBvcnRlZCBudW1iZXIgb2YgY29vcmRpbmF0ZSBkaW1lbnNpb25zIGluIGZ1bmN0aW9uICVzOiBGb3VuZCAldSwgZXhwZWN0ZWQgJXUAUmVwbGljYSBjaGFubmVsICclcycgZG9lcyBub3QgZXhpc3QuAEEgcmVwbGljYSBjaGFubmVsICclcycgYWxyZWFkeSBleGlzdHMgZm9yIHRoZSBnaXZlbiBob3N0IGFuZCBwb3J0IGNvbWJpbmF0aW9uLgBDb3VsZG4ndCBjcmVhdGUgY2hhbm5lbDogQ2hhbm5lbCBuYW1lIGlzIGVpdGhlciBpbnZhbGlkIG9yIHRvbyBsb25nLgBUbyBoYXZlIG11bHRpcGxlIGNoYW5uZWxzLCByZXBvc2l0b3J5IGNhbm5vdCBiZSBvZiB0eXBlIEZJTEU7IFBsZWFzZSBjaGVjayB0aGUgcmVwb3NpdG9yeSBjb25maWd1cmF0aW9uIGFuZCBjb252ZXJ0IHRoZW0gdG8gVEFCTEUuAENhbm5vdCBkZWxldGUgcmVwbGljYSBpbmZvIG9iamVjdHMgZm9yIGNoYW5uZWwgJyVzJy4ATXVsdGlwbGUgY2hhbm5lbHMgZXhpc3Qgb24gdGhlIHJlcGxpY2EuIFBsZWFzZSBwcm92aWRlIGNoYW5uZWwgbmFtZSBhcyBhbiBhcmd1bWVudC4ATWF4aW11bSBudW1iZXIgb2YgcmVwbGljYXRpb24gY2hhbm5lbHMgYWxsb3dlZCBleGNlZWRlZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIHJ1bm5pbmcgcmVwbGljYXRpb24gdGhyZWFkczsgcnVuIFNUT1AgUkVQTElDQSBGT1IgQ0hBTk5FTCAnJXMnIGZpcnN0AFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIHJ1bm5pbmcgcmVwbGljYXRpb24gdGhyZWFkczsgY29uZmlndXJlIHJlcGxpY2EgYW5kIHJ1biBTVEFSVCBSRVBMSUNBIEZPUiBDSEFOTkVMICclcycAUmVwbGljYXRpb24gdGhyZWFkKHMpIGZvciBjaGFubmVsICclcycgYXJlIGFscmVhZHkgcnVubm5pbmcuAFJlcGxpY2F0aW9uIHRocmVhZChzKSBmb3IgY2hhbm5lbCAnJXMnIGFyZSBhbHJlYWR5IHN0b3BwZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBhIHJ1bm5pbmcgcmVwbGljYSBzcWwgdGhyZWFkOyBydW4gU1RPUCBSRVBMSUNBIFNRTF9USFJFQUQgRk9SIENIQU5ORUwgJyVzJyBmaXJzdC4AV2hlbiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgPiAwLCBpdCBpcyBub3QgYWxsb3dlZCB0byBzdGFydCBtb3JlIHRoYW4gb25lIFNRTCB0aHJlYWQgYnkgdXNpbmcgJ1NUQVJUIFJFUExJQ0EgW1NRTF9USFJFQURdJy4gVmFsdWUgb2Ygc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyIGNhbiBvbmx5IGJlIHVzZWQgYnkgb25lIFNRTCB0aHJlYWQgYXQgYSB0aW1lLiBQbGVhc2UgdXNlICdTVEFSVCBSRVBMSUNBIFtTUUxfVEhSRUFEXSBGT1IgQ0hBTk5FTCcgdG8gc3RhcnQgdGhlIFNRTCB0aHJlYWQgd2hpY2ggd2lsbCB1c2UgdGhlIHZhbHVlIG9mIHNxbF9yZXBsaWNhX3NraXBfY291bnRlci4ARXhwcmVzc2lvbiAjJXUgb2YgJXMgaXMgbm90IGluIEdST1VQIEJZIGNsYXVzZSBhbmQgY29udGFpbnMgbm9uYWdncmVnYXRlZCBjb2x1bW4gJyUtLjE5MnMnIHdoaWNoIGlzIG5vdCBmdW5jdGlvbmFsbHkgZGVwZW5kZW50IG9uIGNvbHVtbnMgaW4gR1JPVVAgQlkgY2xhdXNlOyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoIHNxbF9tb2RlPW9ubHlfZnVsbF9ncm91cF9ieQBJbiBhZ2dyZWdhdGVkIHF1ZXJ5IHdpdGhvdXQgR1JPVVAgQlksIGV4cHJlc3Npb24gIyV1IG9mICVzIGNvbnRhaW5zIG5vbmFnZ3JlZ2F0ZWQgY29sdW1uICclLS4xOTJzJzsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzcWxfbW9kZT1vbmx5X2Z1bGxfZ3JvdXBfYnkAVXBkYXRpbmcgJyVzJyBpcyBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIG1hZGUgcmVhZC1vbmx5IGluIGEgZnV0dXJlIHJlbGVhc2UuAENoYW5naW5nIHNxbCBtb2RlICclcycgaXMgZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAERST1AgREFUQUJBU0UgZmFpbGVkOyBzb21lIHRhYmxlcyBtYXkgaGF2ZSBiZWVuIGRyb3BwZWQgYnV0IHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgcmVtYWlucy4gVGhlIEdUSUQgaGFzIG5vdCBiZWVuIGFkZGVkIHRvIEdUSURfRVhFQ1VURUQgYW5kIHRoZSBzdGF0ZW1lbnQgd2FzIG5vdCB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nLiBGaXggdGhpcyBhcyBmb2xsb3dzOiAoMSkgcmVtb3ZlIGFsbCBmaWxlcyBmcm9tIHRoZSBkYXRhYmFzZSBkaXJlY3RvcnkgJS0uMTkyczsgKDIpIFNFVCBHVElEX05FWFQ9JyUtLjE5MnMnOyAoMykgRFJPUCBEQVRBQkFTRSBgJS0uMTkyc2AuAFRoZSBzZXJ2ZXIgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkgdG8gYmUgYW4gYWN0aXZlIG1lbWJlciBvZiB0aGUgZ3JvdXAuIFBsZWFzZSBzZWUgbW9yZSBkZXRhaWxzIG9uIGVycm9yIGxvZy4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBncm91cCBpcyBhbHJlYWR5IHJ1bm5pbmcuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGUgYXBwbGllciBtb2R1bGUgZmFpbGVkIHRvIHN0YXJ0LgBUaGUgU1RPUCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBUaGUgYXBwbGllciB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCB3aGlsZSBpdCB3YXMgYnVzeS4gVGhlIGFwcGxpZXIgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBpbml0aWFsaXppbmcgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gbGF5ZXIuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBhcyB0aGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBqb2luaW5nIHRoZSBjb21tdW5pY2F0aW9uIGdyb3VwLgBUaGUgdGFibGUgZG9lcyBub3QgY29tcGx5IHdpdGggdGhlIHJlcXVpcmVtZW50cyBieSBhbiBleHRlcm5hbCBwbHVnaW4uAENhbm5vdCBjaGFuZ2UgdGhlIHZhbHVlIG9mIHZhcmlhYmxlICVzIHdpdGhvdXQgYmluYXJ5IGxvZyBmb3JtYXQgYXMgUk9XLgBFcnJvciBvbiBvYnNlcnZlciB3aGlsZSBydW5uaW5nIHJlcGxpY2F0aW9uIGhvb2sgJyVzJy4AUGx1Z2luIGluc3RydWN0ZWQgdGhlIHNlcnZlciB0byByb2xsYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY29udGFpbnMgYSBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBJTlBMQUNFIEFERCBvciBEUk9QIG9mIHZpcnR1YWwgY29sdW1ucyBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciBBTFRFUiBUQUJMRSBhY3Rpb25zAENhbm5vdCBkZWZpbmUgZm9yZWlnbiBrZXkgd2l0aCAlcyBjbGF1c2Ugb24gYSBnZW5lcmF0ZWQgY29sdW1uLgBUaGUgdmFsdWUgc3BlY2lmaWVkIGZvciBnZW5lcmF0ZWQgY29sdW1uICclcycgaW4gdGFibGUgJyVzJyBpcyBub3QgYWxsb3dlZC4AJyVzJyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZW5lcmF0ZWQgY29sdW1ucy4AR2VuZXJhdGVkIGNvbHVtbiBjYW4gcmVmZXIgb25seSB0byBnZW5lcmF0ZWQgY29sdW1ucyBkZWZpbmVkIHByaW9yIHRvIGl0LgBDb2x1bW4gJyVzJyBoYXMgYSBnZW5lcmF0ZWQgY29sdW1uIGRlcGVuZGVuY3kuAEdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBUaGUgJyUtLjY0cycgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlOyB5b3UgbmVlZCB0byByZW1vdmUgJyUtLjY0cycgb3IgdXNlIE15U1FMIGJ1aWx0IHdpdGggJyUtLjY0cycAU0VUIEBAR0xPQkFMLkdUSURfTU9ERSA9ICUtLjY0cyBpcyBub3QgYWxsb3dlZCBiZWNhdXNlICUtLjM4NHMuAFRoZSByZXBsaWNhdGlvbiByZWNlaXZlciB0aHJlYWQlLS4xOTJzIGNhbm5vdCBzdGFydCBpbiBBVVRPX1BPU0lUSU9OIG1vZGU6IHRoaXMgc2VydmVyIHVzZXMgQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEFVVE9fUE9TSVRJT04gPSAxLCBhdCBmaWxlICUuNTEycywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTiwgYXQgZmlsZSAlLjUxMnMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgR1RJRC10cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRiwgYXQgZmlsZSAlLjUxMnMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCBzZXQgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZID0gT04gYmVjYXVzZSB0aGVyZSBhcmUgb25nb2luZyB0cmFuc2FjdGlvbnMgdGhhdCB2aW9sYXRlIEdUSUQgY29uc2lzdGVuY3kuAFRoZXJlIGFyZSBvbmdvaW5nIHRyYW5zYWN0aW9ucyB0aGF0IHZpb2xhdGUgR1RJRCBjb25zaXN0ZW5jeS4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBsb2NrZWQuAEluY29ycmVjdCB0YWJsZXNwYWNlIG5hbWUgYCUtLjE5MnNgAFRhYmxlc3BhY2UgYCUtLjE5MnNgIGlzIG5vdCBlbXB0eS4ASW5jb3JyZWN0IEZpbGUgTmFtZSAnJXMnLgBJbmNvbnNpc3RlbnQgaW50ZXJzZWN0aW9uIHBvaW50cy4AT3B0aW1pemVyIGhpbnQgc3ludGF4IGVycm9yAFVuc3VwcG9ydGVkIE1BWF9FWEVDVVRJT05fVElNRQBNQVhfRVhFQ1VUSU9OX1RJTUUgaGludCBpcyBzdXBwb3J0ZWQgYnkgdG9wLWxldmVsIHN0YW5kYWxvbmUgU0VMRUNUIHN0YXRlbWVudHMgb25seQBIaW50ICVzIGlzIGlnbm9yZWQgYXMgY29uZmxpY3RpbmcvZHVwbGljYXRlZABRdWVyeSBibG9jayBuYW1lICVzIGlzIG5vdCBmb3VuZCBmb3IgJXMgaGludABVbnJlc29sdmVkIG5hbWUgJXMgZm9yICVzIGhpbnQAUGxlYXNlIGRvIG5vdCBtb2RpZnkgdGhlICVzIHRhYmxlLiBUaGlzIGlzIGEgbXlzcWwgaW50ZXJuYWwgc3lzdGVtIHRhYmxlIHRvIHN0b3JlIEdUSURzIGZvciBjb21taXR0ZWQgdHJhbnNhY3Rpb25zLiBNb2RpZnlpbmcgaXQgY2FuIGxlYWQgdG8gYW4gaW5jb25zaXN0ZW50IEdUSUQgc3RhdGUuAENvbW1hbmQgbm90IHN1cHBvcnRlZCBieSBwbHVnZ2FibGUgcHJvdG9jb2xzAEluY29ycmVjdCBsb2NraW5nIHNlcnZpY2UgbG9jayBuYW1lICclLS4xOTJzJy4ARGVhZGxvY2sgZm91bmQgd2hlbiB0cnlpbmcgdG8gZ2V0IGxvY2tpbmcgc2VydmljZSBsb2NrOyB0cnkgcmVsZWFzaW5nIGxvY2tzIGFuZCByZXN0YXJ0aW5nIGxvY2sgYWNxdWlzaXRpb24uAFNlcnZpY2UgbG9jayB3YWl0IHRpbWVvdXQgZXhjZWVkZWQuAFBhcmFtZXRlciAlcyBleGNlZWRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb2ludHMgaW4gYSBnZW9tZXRyeSAoJWx1KSBpbiBmdW5jdGlvbiAlcy4AJ05PX1pFUk9fREFURScsICdOT19aRVJPX0lOX0RBVEUnIGFuZCAnRVJST1JfRk9SX0RJVklTSU9OX0JZX1pFUk8nIHNxbCBtb2RlcyBzaG91bGQgYmUgdXNlZCB3aXRoIHN0cmljdCBtb2RlLiBUaGV5IHdpbGwgYmUgbWVyZ2VkIHdpdGggc3RyaWN0IG1vZGUgaW4gYSBmdXR1cmUgcmVsZWFzZS4A0JrQu9C10LnQvNC+0YLQviDQt9CwINCy0LXRgNGB0LjRjyAlLipzINC90LUg0YHRitCy0L/QsNC00LAuINCf0YDQsNCy0LjQu9C90LDRgtCwINGB0YLQvtC50L3QvtGB0YIg0LUgJS4qcwDQndC1INC1INC90LDQvNC10YDQtdC90L4g0LrQu9C10LnQvNC+INC30LAg0LLQtdGA0YHQuNGPICUuKnMAVmFyaWFibGUgJS0uMTkycyBjYW5ub3QgYmUgY2hhbmdlZCBieSBhIGNsaWVudCB0aGF0IG93bnMgYSBHVElELiBUaGUgY2xpZW50IG93bnMgJXMuIE93bmVyc2hpcCBpcyByZWxlYXNlZCBvbiBDT01NSVQgb3IgUk9MTEJBQ0suACUtLjE5MnMgY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBjaGFubmVsICclLS4xOTJzJy4ASW52YWxpZCBKU09OIHRleHQ6ICIlcyIgYXQgcG9zaXRpb24gJXUgaW4gdmFsdWUgZm9yIGNvbHVtbiAnJS0uMjAwcycuAEludmFsaWQgSlNPTiB0ZXh0IGluIGFyZ3VtZW50ICV1IHRvIGZ1bmN0aW9uICVzOiAiJXMiIGF0IHBvc2l0aW9uICV1LiUtLjBzAFRoZSBKU09OIGJpbmFyeSB2YWx1ZSBjb250YWlucyBpbnZhbGlkIGRhdGEuAEludmFsaWQgSlNPTiBwYXRoIGV4cHJlc3Npb24uIFRoZSBlcnJvciBpcyBhcm91bmQgY2hhcmFjdGVyIHBvc2l0aW9uICV1LiUtLjIwMHMAQ2Fubm90IGNyZWF0ZSBhIEpTT04gdmFsdWUgZnJvbSBhIHN0cmluZyB3aXRoIENIQVJBQ1RFUiBTRVQgJyVzJy4ASW52YWxpZCBKU09OIGNoYXJhY3RlciBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiAnJXMnOyB1dGY4IGlzIHJlcXVpcmVkLgBJbnZhbGlkIGRhdGEgdHlwZSBmb3IgSlNPTiBkYXRhIGluIGFyZ3VtZW50ICV1IHRvIGZ1bmN0aW9uICVzOyBhIEpTT04gc3RyaW5nIG9yIEpTT04gdHlwZSBpcyByZXF1aXJlZC4AQ2Fubm90IENBU1QgdmFsdWUgdG8gSlNPTi4AQSBwYXRoIGV4cHJlc3Npb24gbXVzdCBiZSBlbmNvZGVkIGluIHRoZSB1dGY4IGNoYXJhY3RlciBzZXQuIFRoZSBwYXRoIGV4cHJlc3Npb24gJyUtLjIwMHMnIGlzIGVuY29kZWQgaW4gY2hhcmFjdGVyIHNldCAnJS0uMjAwcycuAEluIHRoaXMgc2l0dWF0aW9uLCBwYXRoIGV4cHJlc3Npb25zIG1heSBub3QgY29udGFpbiB0aGUgKiBhbmQgKiogdG9rZW5zIG9yIGFuIGFycmF5IHJhbmdlLgBUaGUgSlNPTiB2YWx1ZSBpcyB0b28gYmlnIHRvIGJlIHN0b3JlZCBpbiBhIEpTT04gY29sdW1uLgBUaGUgSlNPTiBvYmplY3QgY29udGFpbnMgYSBrZXkgbmFtZSB0aGF0IGlzIHRvbyBsb25nLgBKU09OIGNvbHVtbiAnJS0uMTkycycgc3VwcG9ydHMgaW5kZXhpbmcgb25seSB2aWEgZ2VuZXJhdGVkIGNvbHVtbnMgb24gYSBzcGVjaWZpZWQgSlNPTiBwYXRoLgBUaGUgcGF0aCBleHByZXNzaW9uICckJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuAFRoZSBvbmVPckFsbCBhcmd1bWVudCB0byAlcyBtYXkgdGFrZSB0aGVzZSB2YWx1ZXM6ICdvbmUnIG9yICdhbGwnLgBPdXQgb2YgcmFuZ2UgSlNPTiB2YWx1ZSBmb3IgQ0FTVCB0byAlcyUtLjBzIGZyb20gY29sdW1uICVzIGF0IHJvdyAlbGQASW52YWxpZCBKU09OIHZhbHVlIGZvciBDQVNUIHRvICVzJS0uMHMgZnJvbSBjb2x1bW4gJXMgYXQgcm93ICVsZABUaGUgSlNPTiBkb2N1bWVudCBleGNlZWRzIHRoZSBtYXhpbXVtIGRlcHRoLgBKU09OIGRvY3VtZW50cyBtYXkgbm90IGNvbnRhaW4gTlVMTCBtZW1iZXIgbmFtZXMuAENvbm5lY3Rpb25zIHVzaW5nIGluc2VjdXJlIHRyYW5zcG9ydCBhcmUgcHJvaGliaXRlZCB3aGlsZSAtLXJlcXVpcmVfc2VjdXJlX3RyYW5zcG9ydD1PTi4ATm8gc2VjdXJlIHRyYW5zcG9ydHMgKFNTTCBvciBTaGFyZWQgTWVtb3J5KSBhcmUgY29uZmlndXJlZCwgdW5hYmxlIHRvIHNldCAtLXJlcXVpcmVfc2VjdXJlX3RyYW5zcG9ydD1PTi4AU3RvcmFnZSBlbmdpbmUgJXMgaXMgZGlzYWJsZWQgKFRhYmxlIGNyZWF0aW9uIGlzIGRpc2FsbG93ZWQpLgBBdXRob3JpemF0aW9uIElEICVzIGRvZXMgbm90IGV4aXN0LgBBdXRob3JpemF0aW9uIElEICVzIGFscmVhZHkgZXhpc3RzLgBBYm9ydGVkIGJ5IEF1ZGl0IEFQSSAoJyUtLjQ4cyc7JWQpLgBBIHBhdGggZXhwcmVzc2lvbiBpcyBub3QgYSBwYXRoIHRvIGEgY2VsbCBpbiBhbiBhcnJheS4AQW5vdGhlciBidWZmZXIgcG9vbCByZXNpemUgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4AVGhlICclcycgZmVhdHVyZSBpcyBkaXNhYmxlZDsgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciAnJXMnAFNlcnZlciBpc24ndCBhdmFpbGFibGUAU2Vzc2lvbiB3YXMga2lsbGVkAE1lbW9yeSBjYXBhY2l0eSBvZiAlbGx1IGJ5dGVzIGZvciAnJXMnIGV4Y2VlZGVkLiAlcwBSYW5nZSBvcHRpbWl6YXRpb24gd2FzIG5vdCBkb25lIGZvciB0aGlzIHF1ZXJ5LgBQYXJ0aXRpb25pbmcgdXBncmFkZSByZXF1aXJlZC4gUGxlYXNlIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCBvciBkbzogQUxURVIgVEFCTEUgYCUtLjE5MnNgLmAlLS4xOTJzYCBVUEdSQURFIFBBUlRJVElPTklORwBUaGUgY2xpZW50IGhvbGRzIG93bmVyc2hpcCBvZiB0aGUgR1RJRCAlcy4gVGhlcmVmb3JlLCBXQUlUX0ZPUl9FWEVDVVRFRF9HVElEX1NFVCBjYW5ub3Qgd2FpdCBmb3IgdGhpcyBHVElELgBDYW5ub3QgYWRkIGZvcmVpZ24ga2V5IG9uIHRoZSBiYXNlIGNvbHVtbiBvZiBpbmRleGVkIHZpcnR1YWwgY29sdW1uLgBDYW5ub3QgY3JlYXRlIGluZGV4IG9uIHZpcnR1YWwgY29sdW1uIHdob3NlIGJhc2UgY29sdW1uIGhhcyBmb3JlaWduIGNvbnN0cmFpbnQuAFBsZWFzZSBkbyBub3QgbW9kaWZ5IHRoZSAlcyB0YWJsZSB3aXRoIGFuIFhBIHRyYW5zYWN0aW9uLiBUaGlzIGlzIGFuIGludGVybmFsIHN5c3RlbSB0YWJsZSB1c2VkIHRvIHN0b3JlIEdUSURzIGZvciBjb21taXR0ZWQgdHJhbnNhY3Rpb25zLiBBbHRob3VnaCBtb2RpZnlpbmcgaXQgY2FuIGxlYWQgdG8gYW4gaW5jb25zaXN0ZW50IEdUSUQgc3RhdGUsIGlmIG5lY2Vzc2FyeSB5b3UgY2FuIG1vZGlmeSBpdCB3aXRoIGEgbm9uLVhBIHRyYW5zYWN0aW9uLgBMb2NrIGFjcXVpc2l0aW9uIHJlZnVzZWQgYnkgc3RvcmFnZSBlbmdpbmUuAEFERCBDT0xVTU4gY29sLi4uVklSVFVBTCwgQUREIElOREVYKGNvbCkATWFzdGVyIGtleSByb3RhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN0b3JhZ2UgZW5naW5lLgBFbmNyeXB0aW9uIGtleSByb3RhdGlvbiBlcnJvciByZXBvcnRlZCBieSBTRTogJXMAV3JpdGUgdG8gYmlubG9nIGZhaWxlZC4gSG93ZXZlciwgbWFzdGVyIGtleSByb3RhdGlvbiBoYXMgYmVlbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgBTdG9yYWdlIGVuZ2luZSBpcyBub3QgYXZhaWxhYmxlLgBUaGlzIHRhYmxlc3BhY2UgY2FuJ3QgYmUgZW5jcnlwdGVkLgBJbnZhbGlkIGVuY3J5cHRpb24gb3B0aW9uLgBDYW4ndCBmaW5kIG1hc3RlciBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaW4gdGhlIHNlcnZlciBsb2cgaWYgYSBrZXlyaW5nIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LgBQYXJzZXIgYmFpbGVkIG91dCBmb3IgdGhpcyBxdWVyeS4AQ2Fubm90IGFsdGVyIGVuY3J5cHRpb24gYXR0cmlidXRlIGJ5IGlucGxhY2UgYWxnb3JpdGhtLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIHVuZGVybHlpbmcga2V5cmluZyBzZXJ2aWNlIHJldHVybmVkIGFuIGVycm9yLiBQbGVhc2UgY2hlY2sgaWYgYSBrZXlyaW5nIGlzIGluc3RhbGxlZCBhbmQgdGhhdCBwcm92aWRlZCBhcmd1bWVudHMgYXJlIHZhbGlkIGZvciB0aGUga2V5cmluZyB5b3UgYXJlIHVzaW5nLgBJdCBzZWVtcyB0aGF0IHlvdXIgZGIgc2NoZW1hIGlzIG9sZC4gVGhlICVzIGNvbHVtbiBpcyA3NyBjaGFyYWN0ZXJzIGxvbmcgYW5kIHNob3VsZCBiZSA5MyBjaGFyYWN0ZXJzIGxvbmcuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AUkVTRVQgU09VUkNFIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgJS0uMzg0cy4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBncm91cCBhbHJlYWR5IGhhcyA5IG1lbWJlcnMuAENhbm5vdCBhZGQgZm9yZWlnbiBrZXkgb24gdGhlIGJhc2UgY29sdW1uIG9mIHN0b3JlZCBjb2x1bW4uIABDYW5ub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBiZWNhdXNlIHRhYmxlIGlzIHJlZmVyZW5jZWQgYnkgYW5vdGhlciBjb25uZWN0aW9uLgBUaGUgcGFydGl0aW9uIGVuZ2luZSwgdXNlZCBieSB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJywgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSB1c2UgbmF0aXZlIHBhcnRpdGlvbmluZyBpbnN0ZWFkLgAlLjE5MnMoZ2VvbWV0cnkpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVwbGFjZWQgYnkgc3Rfc3JpZChnZW9tZXRyeSwgMCkgaW4gYSBmdXR1cmUgdmVyc2lvbi4gVXNlICUuMTkycyhzdF9hc3drYihnZW9tZXRyeSksIDApIGluc3RlYWQuACUuMTkycyhnZW9tZXRyeSwgc3JpZCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSBzdF9zcmlkKGdlb21ldHJ5LCBzcmlkKSBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBVc2UgJS4xOTJzKHN0X2Fzd2tiKGdlb21ldHJ5KSwgc3JpZCkgaW5zdGVhZC4AVGhlIHJlc291cmNlIG1hbmFnZXIgaXMgbm90IGFibGUgdG8gY29tbWl0IHRoZSB0cmFuc2FjdGlvbiBicmFuY2ggYXQgdGhpcyB0aW1lLiBQbGVhc2UgcmV0cnkgbGF0ZXIuAEZ1bmN0aW9uICVzIGZhaWxlZCBkdWUgdG86ICVzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgaXMgYmVpbmcgdXNlZCBpbnNpZGUgYSBYQSB0cmFuc2FjdGlvbi4gQ29uY3VycmVudCBYQSB0cmFuc2FjdGlvbnMgbWF5IGRlYWRsb2NrIG9uIHJlcGxpY2FzIHdoZW4gcmVwbGljYXRlZCB1c2luZyBzdGF0ZW1lbnRzLgAlcyBVREYgZmFpbGVkOyAlcwBDYW4gbm90IHBlcmZvcm0ga2V5cmluZyBtaWdyYXRpb24gOiAlcwBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAlLS4xMjhzIHByaXZpbGVnZXMgZm9yIHRoaXMgb3BlcmF0aW9uAEtleXJpbmcgbWlncmF0aW9uICVzLgBGYWlsZWQgdG8gb3BlbiB0aGUgJXMgZmlsdGVyIHRhYmxlcy4ARmFpbGVkIHRvIG9wZW4gJyVzLiVzJyAlcyB0YWJsZS4ATm8ga2V5cmluZyBwbHVnaW4gaW5zdGFsbGVkLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBoYXMgbm90IGJlZW4gc2V0OyBpdCB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiBVc2UgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfZ2V0IHRvIG9idGFpbiB0aGUgcGFzc3dvcmQgb3IgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfc2V0IHRvIHNldCBhIG5ldyBvbmUuAENvdWxkIG5vdCBjcmVhdGUgQUVTIGtleS4gT3BlblNTTCdzIEVWUF9CeXRlc1RvS2V5IGZ1bmN0aW9uIGZhaWxlZC4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgY2Fubm90IGJlIGZldGNoZWQgZnJvbSB0aGUga2V5cmluZy4gUGFzc3dvcmQgdXNlZCBzbyBmYXIgaXMgdXNlZCBmb3IgZW5jcnlwdGlvbi4AQXVkaXQgTG9nIGZpbHRlcmluZyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclcydAJyVzJy4gU1VQRVIgcHJpdmlsZWdlIG9yIEFVRElUX0FETUlOIHJvbGUgbmVlZGVkIHRvIHBlcmZvcm0gb3BlcmF0aW9uAFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIHJlcXVpcmVkIGZvciAnJXMnQCclcycgdXNlci4AQ291bGQgbm90IHJlaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsdGVycy4ASW52YWxpZCBhcmd1bWVudCB0eXBlAEludmFsaWQgYXJndW1lbnQgY291bnQAYXVkaXRfbG9nIHBsdWdpbiBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHVzaW5nIElOU1RBTEwgUExVR0lOIHN5bnRheC4ASW52YWxpZCAibWF4X2FycmF5X2xlbmd0aCIgYXJndW1lbnQgdHlwZS4ASW52YWxpZCAibWF4X2FycmF5X2xlbmd0aCIgYXJndW1lbnQgdmFsdWUuACVzAEZpbHRlciBuYW1lIGNhbm5vdCBiZSBlbXB0eS4AVXNlciBjYW5ub3QgYmUgZW1wdHkuAFNwZWNpZmllZCBmaWx0ZXIgaGFzIG5vdCBiZWVuIGZvdW5kLgBGaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHVzZXIgbmFtZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gdGhlIHVzZXIgbmFtZS4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gdGhlIGhvc3QgbmFtZS4AV2l0aCB0aGUgTUFYREIgU1FMIG1vZGUgZW5hYmxlZCwgVElNRVNUQU1QIGlzIGlkZW50aWNhbCB3aXRoIERBVEVUSU1FLiBUaGUgTUFYREIgU1FMIG1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBkaXNhYmxlIHRoZSBNQVhEQiBTUUwgbW9kZSBhbmQgdXNlIERBVEVUSU1FIGluc3RlYWQuAFRoZSB1c2Ugb2YgcmVwbGljYXRpb24gZmlsdGVycyB3aXRoIFhBIHRyYW5zYWN0aW9ucyBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgY2FuIGxlYWQgdG8gYW4gdW5kZWZpbmVkIHN0YXRlIGluIHRoZSByZXBsaWNhLgBDb3VsZCBub3Qgb3BlbiBmaWxlICclcycgZm9yIGVycm9yIGxvZ2dpbmclcyVzAEdyb3VwaW5nIG9uIHRlbXBvcmFsIGlzIG5vbi1kZXRlcm1pbmlzdGljIGZvciB0aW1lem9uZXMgaGF2aW5nIERTVC4gUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyB0byBVVEMgZm9yIHRoaXMgcXVlcnkuAENhbid0IHN0YXJ0IHNlcnZlciA6IE5hbWVkIFBpcGUgIiVzIiBhbHJlYWR5IGluIHVzZS4AVGhlIHNpemUgb2Ygd3JpdGVzZXQgZGF0YSBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gZXhjZWVkcyBhIGxpbWl0IGltcG9zZWQgYnkgYW4gZXh0ZXJuYWwgY29tcG9uZW50LiBJZiB1c2luZyBHcm91cCBSZXBsaWNhdGlvbiBjaGVjayAnZ3JvdXBfcmVwbGljYXRpb25fdHJhbnNhY3Rpb25fc2l6ZV9saW1pdCcuAEFjY2VwdGVkIGEgY29ubmVjdGlvbiB3aXRoIGRlcHJlY2F0ZWQgcHJvdG9jb2wgJyVzJyBmb3IgYWNjb3VudCBgJXNgQGAlc2AgZnJvbSBob3N0IGAlc2AuIENsaWVudCBzdXBwbGllZCB1c2VybmFtZSBgJXNgAEEgZGVwcmVjYXRlZCBUTFMgdmVyc2lvbiAlcyBpcyBlbmFibGVkLiBQbGVhc2UgdXNlIFRMU3YxLjIgb3IgaGlnaGVyLgBPcHRpb25hbCBuYXRpdmUgdGFibGUgJyUtLjY0cycuJyUtLjY0cycgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmUgb3IgaXMgbWlzc2luZy4AS0RGIG1ldGhvZCBuYW1lIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHVzZSBoa2RmIG9yIHBia2RmMl9obWFjIG1ldGhvZCBuYW1lAEZvciBLREYgbWV0aG9kIHBia2RmMl9obWFjIGl0ZXJhdGlvbnMgdmFsdWUgbGVzcyB0aGFuIDEwMDAgb3IgbW9yZSB0aGFuIDY1NTM1IGlzIG5vdCBhbGxvd2VkIGR1ZSB0byBzZWN1cml0eSByZWFzb25zLiBQbGVhc2UgcHJvdmlkZSBpdGVyYXRpb25zID49IDEwMDAgYW5kIGl0ZXJhdGlvbnMgPCA2NTUzNQBBRVMga2V5IHNpemUgc2hvdWxkIGJlICVkIGJ5dGVzIGxlbmd0aCBvciBzZWN1cmUgS0RGIG1ldGhvZHMgaGtkZiBvciBwYmtkZjJfaG1hYyBzaG91bGQgYmUgdXNlZCwgcGxlYXNlIHByb3ZpZGUgZXhhY3QgQUVTIGtleSBzaXplIG9yIHVzZSBLREYgbWV0aG9kcyBmb3IgYmV0dGVyIHNlY3VyaXR5LgBLREYgb3B0aW9uIHNpemUgaXMgaW52YWxpZCwgcGxlYXNlIHByb3ZpZGUgdmFsaWQgc2l6ZSA8ICVkIGJ5dGVzIGFuZCBub3QgTlVMTABDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGlzIG5vdCBhbGxvd2VkIHdpdGggUk9XX0ZPUk1BVD1DT01QUkVTU0VEIG9yIEtFWV9CTE9DS19TSVpFLgBUaGUgQUNMIG9wZXJhdGlvbiBmYWlsZWQgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3IgZnJvbSBTRTogZXJyY29kZSAlZCAtICUuMjU2cwBUaGlzIHN0b3JhZ2UgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgdGhlICVzIGluZGV4IGFsZ29yaXRobSwgc3RvcmFnZSBlbmdpbmUgZGVmYXVsdCB3YXMgdXNlZCBpbnN0ZWFkLgBEYXRhYmFzZSAnJS0uMTkycycgZG9lc24ndCBleGlzdABUb28gbWFueSBlbnVtZXJhdGlvbiB2YWx1ZXMgZm9yIGNvbHVtbiAlLjE5MnMuAFRvbyBsb25nIGVudW1lcmF0aW9uL3NldCB2YWx1ZSBmb3IgY29sdW1uICUuMTkycy4AJXMgZGljdGlvbmFyeSBvYmplY3QgaXMgaW52YWxpZC4gKCUuMTkycykARmFpbGVkIHRvIHVwZGF0ZSAlLjE5MnMgZGljdGlvbmFyeSBvYmplY3QuAERpY3Rpb25hcnkgb2JqZWN0IGlkICglbHUpIGRvZXMgbm90IGV4aXN0LgBEaWN0aW9uYXJ5IG9iamVjdCBuYW1lICclcycgaXMgaW52YWxpZC4gKCUuMTkycykAVGFibGVzcGFjZSAlLS4xOTJzIGRvZXNuJ3QgZXhpc3QuAENvbW1lbnQgZm9yIHJvdXRpbmUgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkARmFpbGVkIHRvIGxvYWQgcm91dGluZSAnJS0uNjRzJy4AQmluYXJ5IG9wZXJhbmRzIG9mIGJpdHdpc2Ugb3BlcmF0b3JzIG11c3QgYmUgb2YgZXF1YWwgbGVuZ3RoAEFnZ3JlZ2F0ZSBiaXR3aXNlIGZ1bmN0aW9ucyBjYW5ub3QgYWNjZXB0IGFyZ3VtZW50cyBsb25nZXIgdGhhbiA1MTEgYnl0ZXM7IGNvbnNpZGVyIHVzaW5nIHRoZSBTVUJTVFJJTkcoKSBmdW5jdGlvbgBIaW50cyBhcmVuJ3Qgc3VwcG9ydGVkIGluICVzACUuNjRzIHZhbHVlIGlzIGEgZ2VvbWV0cnkgb2YgdW5leHBlY3RlZCB0eXBlICUuNjRzIGluICUuNjRzLgBDYW4ndCBwYXJzZSB0aGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gb2YgU1JJRCAldS4AVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIGZvciBTUklEICV1IGRvZXMgbm90IHNwZWNpZnkgdGhlIG1hbmRhdG9yeSAlcyAoRVBTRyAldSkgcHJvamVjdGlvbiBwYXJhbWV0ZXIuAFRoZXJlJ3Mgbm8gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4ARnVuY3Rpb24gJXMgaXMgb25seSBkZWZpbmVkIGZvciBDYXJ0ZXNpYW4gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcywgYnV0IG9uZSBvZiBpdHMgYXJndW1lbnRzIGlzIGluIFNSSUQgJXUsIHdoaWNoIGlzIG5vdCBDYXJ0ZXNpYW4uAEZ1bmN0aW9uICVzIGlzIG9ubHkgZGVmaW5lZCBmb3IgQ2FydGVzaWFuIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMsIGJ1dCBvbmUgb2YgaXRzIGFyZ3VtZW50cyBpcyBpbiBTUklEICV1LCB3aGljaCBoYXMgbm90IGJlZW4gZGVmaW5lZC4AQSBwcmltYXJ5IGtleSBpbmRleCBjYW5ub3QgYmUgaW52aXNpYmxlAFVua25vd24gYXV0aG9yaXphdGlvbiBJRCBgJS42NHNgQGAlLjY0c2AARmFpbGVkIHRvIGdyYW50ICUuOTBzYCB0byAlLjkwcwBGYWlsZWQgdG8gb3BlbiB0aGUgc2VjdXJpdHkgc3lzdGVtIHRhYmxlcwBGYWlsZWQgdG8gc2V0IGRlZmF1bHQgcm9sZXMAQ2Fubm90IGZpbmQgc2NoZW1hIGluIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBDYW5ub3QgYWNxdWlyZSBzY2hlbWUgbG9hZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvciBzY2hlbWEgJyUuMTkycycgaW4gc3BlY2lmaWVkIFVSTjogJyUuMTkycycuAENhbm5vdCBsb2FkIGNvbXBvbmVudCBmcm9tIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBgJS42NHNgQGAlLjY0c2AgaXMgbm90IGdyYW50ZWQgdG8gYCUuNjRzYEBgJS42NHNgAENvdWxkIG5vdCByZXZva2Ugcm9sZSBmcm9tIGAlLjY0c2BAYCUuNjRzYABSZW5hbWluZyBvZiBhIHJvbGUgaWRlbnRpZmllciBpcyBmb3JiaWRkZW4AQ2Fubm90IGFjcXVpcmUgc3BlY2lmaWVkIHNlcnZpY2UgaW1wbGVtZW50YXRpb246ICclLjE5MnMnLgBDYW5ub3Qgc2F0aXNmeSBkZXBlbmRlbmN5IGZvciBzZXJ2aWNlICclLjE5MnMnIHJlcXVpcmVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJy4AQ2Fubm90IHJlZ2lzdGVyIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gJyUuMTkycycgcHJvdmlkZWQgYnkgY29tcG9uZW50ICclLjE5MnMnLgBJbml0aWFsaXphdGlvbiBtZXRob2QgcHJvdmlkZWQgYnkgY29tcG9uZW50ICclLjE5MnMnIGZhaWxlZC4AQ29tcG9uZW50IHNwZWNpZmllZCBieSBVUk4gJyUuMTkycycgdG8gdW5sb2FkIGhhcyBub3QgYmVlbiBsb2FkZWQgYmVmb3JlLgBEZS1pbml0aWFsaXphdGlvbiBtZXRob2QgcHJvdmlkZWQgYnkgY29tcG9uZW50ICclLjE5MnMnIGZhaWxlZC4AUmVsZWFzZSBvZiBwcmV2aW91c2x5IGFjcXVpcmVkIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gZmFpbGVkLgBVbnJlZ2lzdHJhdGlvbiBvZiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uICclLjE5MnMnIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJyBmYWlsZWQgZHVyaW5nIHVubG9hZGluZyBvZiB0aGUgY29tcG9uZW50LgBDYW5ub3QgdW5sb2FkIGNvbXBvbmVudCBmcm9tIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBUaGUgUGVyc2lzdGVudCBEeW5hbWljIExvYWRlciB3YXMgdXNlZCB0byB1bmxvYWQgYSBjb21wb25lbnQgJyUuMTkycycsIGJ1dCBpdCB3YXMgbm90IHVzZWQgdG8gbG9hZCB0aGF0IGNvbXBvbmVudCBiZWZvcmUuAFRoZSBteXNxbC5jb21wb25lbnQgdGFibGUgaXMgbWlzc2luZyBvciBoYXMgYW4gaW5jb3JyZWN0IGRlZmluaXRpb24uAEZhaWxlZCB0byBtYW5pcHVsYXRlIGNvbXBvbmVudCAnJS4xOTJzJyBwZXJzaXN0ZW5jZSBkYXRhLiBFcnJvciBjb2RlICVkIGZyb20gc3RvcmFnZSBlbmdpbmUuAFRoZSBjb21wb25lbnQgd2l0aCBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJyB3YXMgc3BlY2lmaWVkIGluIGdyb3VwIG1vcmUgdGhhbiBvbmNlLgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW5ub3QgYmUgY2hhbmdlZDogJXMAQ2FuIG5vdCBsb2NrIHVzZXIgbWFuYWdlbWVudCBjYWNoZXMgZm9yIHByb2Nlc3NpbmcuAFRoZXJlJ3Mgbm8gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4AVmFyaWFibGVzIGNhbm5vdCBiZSBwZXJzaXN0ZWQuIFBsZWFzZSByZXRyeS4ASW5mb3JtYXRpb24gc2NoZW1hIHF1ZXJpZXMgZG8gbm90IHN1cHBvcnQgdGhlICclcycgY2xhdXNlLgBVbmFibGUgdG8gc3RvcmUgZHluYW1pYyAlcyBzdGF0aXN0aWNzIGludG8gZGF0YSBkaWN0aW9uYXJ5LgBBY2Nlc3MgdG8gc3lzdGVtIHNjaGVtYSAnJS42NHMnIGlzIHJlamVjdGVkLgBBY2Nlc3MgdG8gc3lzdGVtIHRhYmxlc3BhY2UgJyUuNjRzJyBpcyByZWplY3RlZC4AQWNjZXNzIHRvICUuNjRzICclLjY0cy4lLjY0cycgaXMgcmVqZWN0ZWQuAGRhdGEgZGljdGlvbmFyeSB0YWJsZQBzeXN0ZW0gdGFibGUAdGFibGUASW52YWxpZCBvcHRpb24ga2V5ICclLjE5MnMnIGluIGZ1bmN0aW9uICUuMTkycy4ASW52YWxpZCB2YWx1ZSAnJS4xOTJzJyBmb3Igb3B0aW9uICclLjE5MnMnIGluIGZ1bmN0aW9uICclLjE5MnMnLgBUaGUgc3RyaW5nICclLjE5MnMnIGlzIG5vdCBhIHZhbGlkIGtleSAlYyB2YWx1ZSBwYWlyIGluIGZ1bmN0aW9uICUuMTkycy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIHN0YXJ0cyB3aXRoIHRoZSBpbnZhbGlkIGNoYXJhY3RlciAnJWMnLgBUaGUgb3B0aW9ucyBhcmd1bWVudCBpbiBmdW5jdGlvbiAlLjE5MnMgZW5kcyB3aXRoIHRoZSBpbnZhbGlkIGNoYXJhY3RlciAnJWMnLgBUaGUgb3B0aW9ucyBhcmd1bWVudCBpbiBmdW5jdGlvbiAlLjE5MnMgY29udGFpbnMgdGhlIGludmFsaWQgY2hhcmFjdGVyIHNlcXVlbmNlICclLjE5MnMnLgBEdXBsaWNhdGUgb3B0aW9uIGtleSAnJS4xOTJzJyBpbiBmdW50aW9uICclLjE5MnMnLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuIFRoZSBheGlzIG9yZGVyIGlzIHVua25vd24uAEFjY2VzcyB0byBuYXRpdmUgZnVuY3Rpb24gJyUuNjRzJyBpcyByZWplY3RlZC4AVGhlIHJlcXVlc3RlZCB2YWx1ZSAnJWxsdScgZm9yIHRoZSBuZXh0IGJpbmFyeSBsb2cgaW5kZXggaXMgb3V0IG9mIHJhbmdlLiBQbGVhc2UgdXNlIGEgdmFsdWUgYmV0d2VlbiAnMScgYW5kICclbHUnLgBVbnJlc29sdmVkIHRhYmxlIG5hbWUgJXMgaW4gbG9ja2luZyBjbGF1c2UuAFRhYmxlICVzIGFwcGVhcnMgaW4gbXVsdGlwbGUgbG9ja2luZyBjbGF1c2VzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBTS0lQIExPQ0tFRC4gVGhlIHNldCBvZiBpbnNlcnRlZCB2YWx1ZXMgaXMgbm9uLWRldGVybWluaXN0aWMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIE5PV0FJVC4gV2hldGhlciB0aGUgY29tbWFuZCB3aWxsIHN1Y2NlZWQgb3IgZmFpbCBpcyBub3QgZGV0ZXJtaW5pc3RpYy4AU3RhdGVtZW50IGFib3J0ZWQgYmVjYXVzZSBsb2NrKHMpIGNvdWxkIG5vdCBiZSBhY3F1aXJlZCBpbW1lZGlhdGVseSBhbmQgTk9XQUlUIGlzIHNldC4AUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgc2hvdWxkIGNvbnRhaW4gYSBVTklPTgBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJyBzaG91bGQgaGF2ZSBvbmUgb3IgbW9yZSBub24tcmVjdXJzaXZlIHF1ZXJ5IGJsb2NrcyBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSByZWN1cnNpdmUgb25lcwBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJyBjYW4gY29udGFpbiBuZWl0aGVyIGFnZ3JlZ2F0aW9uIG5vciB3aW5kb3cgZnVuY3Rpb25zIGluIHJlY3Vyc2l2ZSBxdWVyeSBibG9jawBJbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sgb2YgUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycsIHRoZSByZWN1cnNpdmUgdGFibGUgbXVzdCBuZWl0aGVyIGJlIGluIHRoZSByaWdodCBhcmd1bWVudCBvZiBhIExFRlQgSk9JTiwgbm9yIGJlIGZvcmNlZCB0byBiZSBub24tZmlyc3Qgd2l0aCBqb2luIG9yZGVyIGhpbnRzAEluIHJlY3Vyc2l2ZSBxdWVyeSBibG9jayBvZiBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJywgdGhlIHJlY3Vyc2l2ZSB0YWJsZSBtdXN0IGJlIHJlZmVyZW5jZWQgb25seSBvbmNlLCBhbmQgbm90IGluIGFueSBzdWJxdWVyeQAnJXMnIHJlcXVpcmVzIEBAaW50ZXJuYWxfdG1wX2Rpc2tfc3RvcmFnZV9lbmdpbmU9SW5ub0RCAFdpbmRvdyBuYW1lICclcycgaXMgbm90IGRlZmluZWQuAFRoZXJlIGlzIGEgY2lyY3VsYXJpdHkgaW4gdGhlIHdpbmRvdyBkZXBlbmRlbmN5IGdyYXBoLgBBIHdpbmRvdyB3aGljaCBkZXBlbmRzIG9uIGFub3RoZXIgY2Fubm90IGRlZmluZSBwYXJ0aXRpb25pbmcuAFdpbmRvdyAnJXMnIGhhcyBhIGZyYW1lIGRlZmluaXRpb24sIHNvIGNhbm5vdCBiZSByZWZlcmVuY2VkIGJ5IGFub3RoZXIgd2luZG93LgBXaW5kb3cgJyVzJyBjYW5ub3QgaW5oZXJpdCAnJXMnIHNpbmNlIGJvdGggY29udGFpbiBhbiBPUkRFUiBCWSBjbGF1c2UuAFdpbmRvdyAnJXMnOiBmcmFtZSBzdGFydCBjYW5ub3QgYmUgVU5CT1VOREVEIEZPTExPV0lORy4AV2luZG93ICclcyc6IGZyYW1lIGVuZCBjYW5ub3QgYmUgVU5CT1VOREVEIFBSRUNFRElORy4AV2luZG93ICclcyc6IGZyYW1lIHN0YXJ0IG9yIGVuZCBpcyBuZWdhdGl2ZSwgTlVMTCBvciBvZiBub24taW50ZWdyYWwgdHlwZQBXaW5kb3cgJyVzJyB3aXRoIFJBTkdFIE4gUFJFQ0VESU5HL0ZPTExPV0lORyBmcmFtZSByZXF1aXJlcyBleGFjdGx5IG9uZSBPUkRFUiBCWSBleHByZXNzaW9uLCBvZiBudW1lcmljIG9yIHRlbXBvcmFsIHR5cGUAV2luZG93ICclcycgd2l0aCBSQU5HRSBmcmFtZSBoYXMgT1JERVIgQlkgZXhwcmVzc2lvbiBvZiBkYXRldGltZSB0eXBlLiBPbmx5IElOVEVSVkFMIGJvdW5kIHZhbHVlIGFsbG93ZWQuAFdpbmRvdyAnJXMnIHdpdGggUkFOR0UgZnJhbWUgaGFzIE9SREVSIEJZIGV4cHJlc3Npb24gb2YgbnVtZXJpYyB0eXBlLCBJTlRFUlZBTCBib3VuZCB2YWx1ZSBub3QgYWxsb3dlZC4AV2luZG93ICclcycgaGFzIGEgbm9uLWNvbnN0YW50IGZyYW1lIGJvdW5kLgBXaW5kb3cgJyVzJyBpcyBkZWZpbmVkIHR3aWNlLgBXaW5kb3cgJyVzJzogT1JERVIgQlkgb3IgUEFSVElUSU9OIEJZIHVzZXMgbGVnYWN5IHBvc2l0aW9uIGluZGljYXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCwgdXNlIGV4cHJlc3Npb24uAFlvdSBjYW5ub3QgdXNlIHRoZSB3aW5kb3cgZnVuY3Rpb24gJyVzJyBpbiB0aGlzIGNvbnRleHQuJwBZb3UgY2Fubm90IHVzZSB0aGUgYWxpYXMgJyVzJyBvZiBhbiBleHByZXNzaW9uIGNvbnRhaW5pbmcgYSB3aW5kb3cgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0LicAWW91IGNhbm5vdCBuZXN0IGEgd2luZG93IGZ1bmN0aW9uIGluIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHdpbmRvdyAnJXMnLgBXaW5kb3cgJyVzJzogSU5URVJWQUwgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFJBTkdFIGZyYW1lcy4AQVNDIG9yIERFU0Mgd2l0aCBHUk9VUCBCWSBpc24ndCBhbGxvd2VkIHdpdGggd2luZG93IGZ1bmN0aW9uczsgcHV0IEFTQyBvciBERVNDIGluIE9SREVSIEJZAFRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB3aW5kb3cgZnVuY3Rpb25zIHVzZSBFWFBMQUlOIEZPUk1BVD1KU09OAFdpbmRvdyBmdW5jdGlvbiAnJXMnIGlnbm9yZXMgdGhlIGZyYW1lIGNsYXVzZSBvZiB3aW5kb3cgJyVzJyBhbmQgYWdncmVnYXRlcyBvdmVyIHRoZSB3aG9sZSBwYXJ0aXRpb24AV2luZG93aW5nIHJlcXVpcmVzIEBAaW50ZXJuYWxfdG1wX21lbV9zdG9yYWdlX2VuZ2luZT1UZW1wVGFibGUuAFRvbyBtYW55IGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gJXM6ICVsdTsgbWF4aW11bSBhbGxvd2VkIGlzICVzLgBBcmd1bWVudCAjJXUgb2YgR1JPVVBJTkcgZnVuY3Rpb24gaXMgbm90IGluIEdST1VQIEJZAENvbW1lbnQgZm9yIHRhYmxlc3BhY2UgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAU3RvcmFnZSBlbmdpbmUgY2FuJ3QgZHJvcCB0YWJsZSAnJS0uMTI5cycAU3RvcmFnZSBlbmdpbmUgY2FuJ3QgZHJvcCB0YWJsZSAnJS0uMTI5cycgYmVjYXVzZSBpdCBpcyBtaXNzaW5nLiBVc2UgRFJPUCBUQUJMRSBJRiBFWElTVFMgdG8gcmVtb3ZlIGl0IGZyb20gZGF0YS1kaWN0aW9uYXJ5LgBEdXBsaWNhdGUgZmlsZSBuYW1lIGZvciB0YWJsZXNwYWNlICclLS42NHMnAFByb2JsZW0gd2hpbGUgZHJvcHBpbmcgZGF0YWJhc2UuIENhbid0IHJlbW92ZSBkYXRhYmFzZSBkaXJlY3RvcnkgKCVzKS4gUGxlYXNlIHJlbW92ZSBpdCBtYW51YWxseS4ATm8gU0RJIGZpbGVzIG1hdGNoZWQgdGhlIHBhdHRlcm4gJyVzJwBTY2hlbWEgJyUuMjU2cycsIHJlZmVyZW5jZWQgaW4gU0RJLCBkb2VzIG5vdCBleGlzdC4AVGFibGUgJyUuMjU2cy4lLjI1NnMnLCByZWZlcmVuY2VkIGluIFNESSwgYWxyZWFkeSBleGlzdHMuAEltcG9ydGVkIG15c3FsZF92ZXJzaW9uICglbGx1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgKCVsbHUpAEltcG9ydGVkIGRkIHZlcnNpb24gKCV1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgKCV1KQBJbXBvcnRlZCBzZGkgdmVyc2lvbiAoJWxsdSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICglbGx1KQBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGhpbnQgJXMAVmFyaWFibGUgJXMgZG9lcyBub3QgZXhpc3QgaW4gcGVyc2lzdGVkIGNvbmZpZyBmaWxlAExvbmdpdHVkZSAlZiBpcyBvdXQgb2YgcmFuZ2UgaW4gZnVuY3Rpb24gJS4xOTJzLiBJdCBtdXN0IGJlIHdpdGhpbiAoJWYsICVmXS4ATGF0aXR1ZGUgJWYgaXMgb3V0IG9mIHJhbmdlIGluIGZ1bmN0aW9uICUuMTkycy4gSXQgbXVzdCBiZSB3aXRoaW4gWyVmLCAlZl0uACUuMTkycyglLjgwcykgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciBnZW9ncmFwaGljIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMuAElsbGVnYWwgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllZCBmb3IgJXMAQWNjZXNzIHRvIHN5c3RlbSB2aWV3IElORk9STUFUSU9OX1NDSEVNQS4nJS42NHMnIGlzIHJlamVjdGVkLgBUaGUgbG9nLWZpbHRlciBjb21wb25lbnQgIiVzIiBnb3QgY29uZnVzZWQgYXQgIiVzIiAuLi4AUGFydGl0aW9uaW5nIGV4cHJlc3Npb24gaXMgdG9vIGxvbmcuAERST1AgRlVOQ1RJT04gY2FuJ3QgZHJvcCBhIGR5bmFtaWNhbGx5IHJlZ2lzdGVyZWQgdXNlciBkZWZpbmVkIGZ1bmN0aW9uAFVuYWJsZSB0byBzdG9yZSBjb2x1bW4gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFVuYWJsZSB0byB1cGRhdGUgY29sdW1uIHN0YXRpc3RpY3MgZm9yIGNvbHVtbiAnJS42NHMnIGluIHRhYmxlICclLjY0cycuJyUuNjRzJwBVbmFibGUgdG8gcmVtb3ZlIGNvbHVtbiBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVW5hYmxlIHRvIGJ1aWxkIGhpc3RvZ3JhbSBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVGhlIHJvbGUgJXMgaXMgYSBtYW5kYXRvcnkgcm9sZSBhbmQgY2FuJ3QgYmUgcmV2b2tlZCBvciBkcm9wcGVkLiBUaGUgcmVzdHJpY3Rpb24gY2FuIGJlIGxpZnRlZCBieSBleGNsdWRpbmcgdGhlIHJvbGUgaWRlbnRpZmllciBmcm9tIHRoZSBnbG9iYWwgdmFyaWFibGUgbWFuZGF0b3J5X3JvbGVzLgBUYWJsZXNwYWNlICclLjE5MnMnIGRvZXMgbm90IGhhdmUgYSBmaWxlIG5hbWVkICclLjE5MnMnAEFjY2VzcyBkZW5pZWQ7IHlvdSBuZWVkICUtLjEyOHMgcHJpdmlsZWdlcyBmb3IgdGhpcyBvcGVyYXRpb24AWW91IG5lZWQgdGhlIFNVUEVSIHByaXZpbGVnZSBmb3IgY29tbWFuZCAnJS0uMTkycycAUGF0aCBpcyB3aXRoaW4gdGhlIGN1cnJlbnQgZGF0YSBkaXJlY3RvcnkgJyUtLjE5MnMnAENvbmN1cnJlbnQgRERMIGlzIHBlcmZvcm1lZCBkdXJpbmcgY2xvbmUgb3BlcmF0aW9uLiBQbGVhc2UgdHJ5IGFnYWluLgBUb28gbWFueSBjb25jdXJyZW50IGNsb25lIG9wZXJhdGlvbnMuIE1heGltdW0gYWxsb3dlZCAtICVkLgBUaGUgdGFibGUgaW4gdHJhbnNhY3Rpb24gJXMgZG9lcyBub3QgY29tcGx5IHdpdGggdGhlIHJlcXVpcmVtZW50cyBieSBhbiBleHRlcm5hbCBwbHVnaW4uAFJlY3Vyc2l2ZSBxdWVyeSBhYm9ydGVkIGFmdGVyICV1IGl0ZXJhdGlvbnMuIFRyeSBpbmNyZWFzaW5nIEBAY3RlX21heF9yZWN1cnNpb25fZGVwdGggdG8gYSBsYXJnZXIgdmFsdWUuAFZhcmlhYmxlICVzIGNhbm5vdCBiZSBzZXQgdXNpbmcgU0VUX1ZBUiBoaW50LgBDYW5ub3QgdXNlIHRoZXNlIGNyZWRlbnRpYWxzIGZvciAnJS4qc0AlLipzJyBiZWNhdXNlIHRoZXkgY29udHJhZGljdCB0aGUgcGFzc3dvcmQgaGlzdG9yeSBwb2xpY3kATm9uLXplcm8gcGFzc3dvcmQgaGlzdG9yeSBjbGF1c2VzIGlnbm9yZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGFzIGl0cyBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJXMgZG9lcyBub3Qgc3VwcG9ydCBwYXNzd29yZCBoaXN0b3J5AFRoZSBjbGllbnQgZG9lc24ndCBzdXBwb3J0ICVzAFRhYmxlc3BhY2UgJyVzJyB3YXMgc2tpcHBlZCBzaW5jZSBpdHMgZGVmaW5pdGlvbiBpcyBiZWluZyBtb2RpZmllZCBieSBjb25jdXJyZW50IERETCBzdGF0ZW1lbnQARW5naW5lICclLjE5MnMnIGRvZXMgbm90IG1hdGNoIHN0b3JlZCBlbmdpbmUgJyUuMTkycycgZm9yIHRhYmxlc3BhY2UgJyUuMTkycycAVGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IGRvZXMgbm90IG1hdGNoIHRoZSBTUklEIG9mIHRoZSBjb2x1bW4gJyUuNjRzJy4gVGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IGlzICVsdSwgYnV0IHRoZSBTUklEIG9mIHRoZSBjb2x1bW4gaXMgJWx1LiBDb25zaWRlciBjaGFuZ2luZyB0aGUgU1JJRCBvZiB0aGUgZ2VvbWV0cnkgb3IgdGhlIFNSSUQgcHJvcGVydHkgb2YgdGhlIGNvbHVtbi4AVGhlIFNSSUQgc3BlY2lmaWNhdGlvbiBvbiB0aGUgY29sdW1uICclLjY0cycgY2Fubm90IGJlIGNoYW5nZWQgYmVjYXVzZSB0aGVyZSBpcyBhIHNwYXRpYWwgaW5kZXggb24gdGhlIGNvbHVtbi4gUGxlYXNlIHJlbW92ZSB0aGUgc3BhdGlhbCBpbmRleCBiZWZvcmUgYWx0ZXJpbmcgdGhlIFNSSUQgc3BlY2lmaWNhdGlvbi4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIGlnbm9yZWQgYW5kIHVwZGF0ZXMgd2lsbCBiZSB3cml0dGVuIGluIGZ1bGwgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGxvZ19iaW5fdXNlX3YxX3Jvd19ldmVudHM9MSB3aWxsIGJlIGlnbm9yZWQgYW5kIHJvdyBldmVudHMgd2lsbCBiZSB3cml0dGVuIGluIG5ldyBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIHVzZWQgb25seSBmb3IgdGhlIGFmdGVyLWltYWdlLiBGdWxsIHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gdGhlIGJlZm9yZS1pbWFnZSwgc28gdGhlIHNhdmluZyBpbiBkaXNrIHNwYWNlIGR1ZSB0byBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnMgaXMgbGltaXRlZCB0byBsZXNzIHRoYW4gNTAlJS4AQ291bGQgbm90IGFwcGx5IEpTT04gZGlmZiBpbiB0YWJsZSAlLipzLCBjb2x1bW4gJXMuAENvcnJ1cHRlZCBKU09OIGRpZmYgZm9yIHRhYmxlICUuKnMsIGNvbHVtbiAlcy4AUmVzb3VyY2UgR3JvdXAgJyUtLjE5MnMnIGV4aXN0cwBSZXNvdXJjZSBHcm91cCAnJS0uMTkycycgZG9lcyBub3QgZXhpc3QuAEludmFsaWQgY3B1IGlkICV1AEludmFsaWQgVkNQVSByYW5nZSAldS0ldQBJbnZhbGlkIHRocmVhZCBwcmlvcml0eSB2YWx1ZSAlZCBmb3IgJXMgcmVzb3VyY2UgZ3JvdXAgJXMuIEFsbG93ZWQgcmFuZ2UgaXMgWyVkLCAlZF0uACVzIG9wZXJhdGlvbiBpcyBkaXNhbGxvd2VkIG9uICVzAFJlc291cmNlIGdyb3VwICVzIGlzIGJ1c3kuAFJlc291cmNlIGdyb3VwICVzIGlzIGRpc2FibGVkLgBGZWF0dXJlICVzIGlzIHVuc3VwcG9ydGVkICglcykuAEF0dHJpYnV0ZSAlcyBpcyBpZ25vcmVkICglcykuAEludmFsaWQgdGhyZWFkIGlkICglbGx1KS4AVW5hYmxlIHRvIGJpbmQgcmVzb3VyY2UgZ3JvdXAgJXMgd2l0aCB0aHJlYWQgaWQgKCVsbHUpLiglcykuAE9wdGlvbiBGT1JDRSBpbnZhbGlkIGFzIERJU0FCTEUgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQuAFRoZSAlcyBjb21tYW5kIGVuY291bnRlcmVkIGEgZmFpbHVyZS4gJXMARmFpbGVkIHRvICVzIFNESSAnJS4xOTJzLiUuMTkycycgaW4gdGFibGVzcGFjZSAnJS4xOTJzJy4ATWlzc2luZyB2YWx1ZSBmb3IgSlNPTl9UQUJMRSBjb2x1bW4gJyUuMTkycycAQ2FuJ3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIHRoZSBzY2FsYXIgSlNPTl9UQUJMRSBjb2x1bW4gJyUuMTkycycARXZlcnkgdGFibGUgZnVuY3Rpb24gbXVzdCBoYXZlIGFuIGFsaWFzAElOTkVSIG9yIExFRlQgSk9JTiBtdXN0IGJlIHVzZWQgZm9yIExBVEVSQUwgcmVmZXJlbmNlcyBtYWRlIGJ5ICclLjE5MnMnAFZhbHVlIGlzIG91dCBvZiByYW5nZSBmb3IgSlNPTl9UQUJMRSdzIGNvbHVtbiAnJS4xOTJzJwBNb3JlIHRoYW4gc3VwcG9ydGVkICV1IE5FU1RFRCBQQVRIcyB3ZXJlIGZvdW5kIGluIEpTT05fVEFCTEUgJyUuMTkycycA0JjQt9Cx0YDQsNC90LjRjyDQvNC10YLQvtC0INC30LAg0YPQtNC+0YHRgtC+0LLQtdGA0Y/QstCw0L3QtSAlLipzINC90LUg0L/QvtC00LTRitGA0LbQsCDQuNC30YLQuNGH0LDQvdC1INC90LAg0L/QsNGA0L7Qu9C4AEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBNZW1iZXIgJ2NycycgbXVzdCBiZSBzcGVjaWZpZWQgaW4gdGhlIHRvcCBsZXZlbCBvYmplY3QuAENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIG51bGwAVGhlIHNwYXRpYWwgaW5kZXggb24gY29sdW1uICclLjY0cycgd2lsbCBub3QgYmUgdXNlZCBieSB0aGUgcXVlcnkgb3B0aW1pemVyIHNpbmNlIHRoZSBjb2x1bW4gZG9lcyBub3QgaGF2ZSBhbiBTUklEIGF0dHJpYnV0ZS4gQ29uc2lkZXIgYWRkaW5nIGFuIFNSSUQgYXR0cmlidXRlIHRvIHRoZSBjb2x1bW4uAENyZWF0ZSB0YWJsZS90YWJsZXNwYWNlICclLS4xOTJzJyBmYWlsZWQsIGFzIGRpc2sgaXMgZnVsbABDb3VsZCBub3QgcGFyc2UgYXJndW1lbnQgdG8gZGlnZXN0IGZ1bmN0aW9uOiAiJXMiLgBDb3VsZCBub3QgcGFyc2UgYXJndW1lbnQgdG8gZGlnZXN0IGZ1bmN0aW9uLgBTY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIGFscmVhZHkgZXhpc3RzLiBUaGlzIG11c3QgYmUgcmVzb2x2ZWQgbWFudWFsbHkgKGUuZy4gYnkgbW92aW5nIHRoZSBzY2hlbWEgZGlyZWN0b3J5IHRvIGFub3RoZXIgbG9jYXRpb24pLgBTY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIGRvZXMgbm90IGV4aXN0AEZhaWxlZCB0byBjcmVhdGUgc2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyAoZXJybm86ICVkIC0gJXMpAFNjaGVtYSAnJS4xOTJzJyBkb2VzIG5vdCBleGlzdCwgYnV0IHNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgd2FzIGZvdW5kLiBUaGlzIG11c3QgYmUgcmVzb2x2ZWQgbWFudWFsbHkgKGUuZy4gYnkgbW92aW5nIHRoZSBzY2hlbWEgZGlyZWN0b3J5IHRvIGFub3RoZXIgbG9jYXRpb24pLgBGdW5jdGlvbiAlLjE5MnMgaXMgb25seSBkZWZpbmVkIGZvciBTUklEIDAgYW5kIFNSSUQgNDMyNi4AVGhlIG9wdGlvbiBleHBpcmVfbG9nc19kYXlzIGFuZCBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4gUGxlYXNlIHVzZSBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcyB0byBzZXQgdGhlIGV4cGlyZSB0aW1lIChleHBpcmVfbG9nc19kYXlzIGlzIGRlcHJlY2F0ZWQpAFRoZSByZXN1bHQgc3RyaW5nIGlzIGxhcmdlciB0aGFuIHRoZSByZXN1bHQgYnVmZmVyLgBJbGxlZ2FsIGFyZ3VtZW50IHRvIGEgcmVndWxhciBleHByZXNzaW9uLgBJbmRleCBvdXQgb2YgYm91bmRzIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBzZWFyY2guAEludGVybmFsIGVycm9yIGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeS4AU3ludGF4IGVycm9yIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBvbiBsaW5lICV1LCBjaGFyYWN0ZXIgJXUuAFVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2UgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zIGEgZmVhdHVyZSB0aGF0IGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGlzIGxpYnJhcnkgdmVyc2lvbi4ATWlzbWF0Y2hlZCBwYXJlbnRoZXNpcyBpbiByZWd1bGFyIGV4cHJlc3Npb24uAEluY29ycmVjdCBkZXNjcmlwdGlvbiBvZiBhIHttaW4sbWF4fSBpbnRlcnZhbC4AVGhlIG1heGltdW0gaXMgbGVzcyB0aGFuIHRoZSBtaW51bXVtIGluIGEge21pbixtYXh9IGludGVydmFsLgBJbnZhbGlkIGJhY2stcmVmZXJlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIGxvb2stYmVoaW5kIGFzc2VydGlvbiBleGNlZWRzIHRoZSBsaW1pdCBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gY29udGFpbnMgYW4gdW5jbG9zZWQgYnJhY2tldCBleHByZXNzaW9uLgBUaGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zIGFuIFt4LXldIGNoYXJhY3RlciByYW5nZSB3aGVyZSB4IGNvbWVzIGFmdGVyIHkuAE92ZXJmbG93IGluIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gYmFja3RyYWNrIHN0YWNrLgBUaW1lb3V0IGV4Y2VlZGVkIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaC4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBwYXR0ZXJuIGV4Y2VlZHMgbGltaXRzIG9uIHNpemUgb3IgY29tcGxleGl0eS4AVmFsdWUgZm9yICVzIGdvdCBjb25mdXNpbmcgYXQgb3IgYXJvdW5kICIlcyIuIFN5bnRheCBtYXkgYmUgd3JvbmcsIGNvbXBvbmVudCBtYXkgbm90IGJlIElOU1RBTExlZCwgb3IgYSBjb21wb25lbnQgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IGluc3RhbmNlcyBtYXkgYmUgbGlzdGVkIG1vcmUgdGhhbiBvbmNlLgBTZXR0aW5nIGFuIGVtcHR5ICVzIHBpcGVsaW5lIGRpc2FibGVzIGVycm9yIGxvZ2dpbmchAGZpbHRlciAlczogJXMAJS4xOTJzKCUuODBzKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIENhcnRlc2lhbiBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLgAlLjE5MnMoJS44MHMpIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgcHJvamVjdGVkIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMuAEludmFsaWQgcmFkaXVzIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiBSYWRpdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AUmVzdGFydCBzZXJ2ZXIgZmFpbGVkICglcykuAE1pc3NpbmcgbWFuZGF0b3J5IGF0dHJpYnV0ZSAlcy4ATXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgYXR0cmlidXRlICVzLgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIG5hbWUgY2FuJ3QgYmUgYW4gZW1wdHkgc3RyaW5nIG9yIHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UuAFRoZSBvcmdhbml6YXRpb24gbmFtZSBjYW4ndCBiZSBhbiBlbXB0eSBzdHJpbmcgb3Igc3RhcnQgb3IgZW5kIHdpdGggd2hpdGVzcGFjZS4AVGhlcmUgaXMgYWxyZWFkeSBhIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuAFRoZXJlIGlzIGFscmVhZHkgYSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LgBTUklEIDAgaXMgbm90IG1vZGlmaWFibGUuAFRoZSBTUklEIHJhbmdlIFsldSwgJXVdIGhhcyBiZWVuIHJlc2VydmVkIGZvciBzeXN0ZW0gdXNlLiBTUlNzIGluIHRoaXMgcmFuZ2UgbWF5IGJlIGFkZGVkLCBtb2RpZmllZCBvciByZW1vdmVkIHdpdGhvdXQgd2FybmluZyBkdXJpbmcgdXBncmFkZS4AQ2FuJ3QgbW9kaWZ5IFNSSUQgJXUuIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjb2x1bW4gZGVwZW5kaW5nIG9uIGl0LgBJbnZhbGlkIGNoYXJhY3RlciBpbiBhdHRyaWJ1dGUgJXMuAEF0dHJpYnV0ZSAlcyBpcyB0b28gbG9uZy4gVGhlIG1heGltdW0gbGVuZ3RoIGlzICV1IGNoYXJhY3RlcnMuACd1dGY4JyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIGJ1dCB3aWxsIGJlIGFuIGFsaWFzIGZvciBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBOQVRJT05BTC9OQ0hBUi9OVkFSQ0hBUiBpbXBsaWVzIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQ0hBUih4KSBDSEFSQUNURVIgU0VUIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAEludmFsaWQgZGVmYXVsdCBjb2xsYXRpb24gJXM6IHV0ZjhtYjRfMDkwMF9haV9jaSBvciB1dGY4bWI0X2dlbmVyYWxfY2kgZXhwZWN0ZWQAVW5hYmxlIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gZm9yIGNvbHVtbiAnJS0uMTkycyc6ICUtLjE5MnMuAFRoZSB0YWJsZSAnJS0uMTkycycgbWF5IG5vdCBiZSBjcmVhdGVkIGluIHRoZSByZXNlcnZlZCB0YWJsZXNwYWNlICclLS4xOTJzJy4AVGhpcyBvcHRpb24gY2Fubm90IGJlIHNldCAlcy4AQSBjb21taXQgZm9yIGFuIGF0b21pYyBEREwgc3RhdGVtZW50IHdhcyB1bnN1Y2Nlc3NmdWwgb24gdGhlIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuIFRoZSByZXBsaWNhIHN1cHBvcnRzIGF0b21pYyBEREwgc3RhdGVtZW50cyBidXQgdGhlIHNvdXJjZSBkb2VzIG5vdCwgc28gdGhlIGFjdGlvbiB0YWtlbiBieSB0aGUgcmVwbGljYSBhbmQgc291cmNlIG1pZ2h0IGRpZmZlci4gQ2hlY2sgdGhhdCB0aGVpciBzdGF0ZXMgaGF2ZSBub3QgZGl2ZXJnZWQgYmVmb3JlIHByb2NlZWRpbmcuAEZ1bmN0aW9uICVzIGlzIG9ubHkgZGVmaW5lZCBmb3IgZ2VvZ3JhcGhpYyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLCBidXQgb25lIG9mIGl0cyBhcmd1bWVudHMgaXMgaW4gU1JJRCAldSwgd2hpY2ggaXMgbm90IGdlb2dyYXBoaWMuAEZ1bmN0aW9uICVzIGVuY291bnRlcmVkIGEgcG9seWdvbiB0aGF0IHdhcyB0b28gbGFyZ2UuIFBvbHlnb25zIG11c3QgY292ZXIgbGVzcyB0aGFuIGhhbGYgdGhlIHBsYW5ldC4AU3BhdGlhbCBpbmRleGVzIGNhbid0IGJlIHByaW1hcnkgb3IgdW5pcXVlIGluZGV4ZXMuAFRoZSBpbmRleCB0eXBlICUuMjBzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNwYXRpYWwgaW5kZXhlcy4AQ2Fubm90IGRyb3AgdGFibGUgJyVzJyByZWZlcmVuY2VkIGJ5IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJXMnIG9uIHRhYmxlICclcycuAEEgcGFyYW1ldGVyIG9mIGZ1bmN0aW9uICUuMTkycyBjb250YWlucyBhIGdlb21ldHJ5IHdpdGggbG9uZ2l0dWRlICVmLCB3aGljaCBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgd2l0aGluICglZiwgJWZdLgBBIHBhcmFtZXRlciBvZiBmdW5jdGlvbiAlLjE5MnMgY29udGFpbnMgYSBnZW9tZXRyeSB3aXRoIGxhdGl0dWRlICVmLCB3aGljaCBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgd2l0aGluIFslZiwgJWZdLgBGb3JlaWduIGtleSAnJXMnIHVzZXMgdmlydHVhbCBjb2x1bW4gJyVzJyB3aGljaCBpcyBub3Qgc3VwcG9ydGVkLgBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50LiBNaXNzaW5nIGNvbHVtbiAnJXMnIGZvciBjb25zdHJhaW50ICclcycgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgJyVzJwAlczogQ291bGQgbm90IGFkZCBzdXBwcmVzc2lvbiBydWxlIGZvciBjb2RlICIlcyIuIFJ1bGUtc2V0IG1heSBiZSBmdWxsLCBvciBjb2RlIG1heSBub3QgY29ycmVzcG9uZCB0byBhbiBlcnJvci1sb2cgbWVzc2FnZS4AVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIGZvciBTUklEICV1IHNwZWNpZmllcyBpbnZhbGlkIGdlb2dyYXBoaWMgYXhlcyAnJS4yMHMnIGFuZCAnJS4yMHMnLiBPbmUgYXhpcyBtdXN0IGJlIE5PUlRIIG9yIFNPVVRIIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBFQVNUIG9yIFdFU1QuAFRoZSBsZW5ndGggb2YgdGhlIHNlbWktbWFqb3IgYXhpcyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLgBUaGUgaW52ZXJzZSBmbGF0dGVuaW5nIG11c3QgYmUgbGFyZ2VyIHRoYW4gMS4wLCBvciAwLjAgaWYgdGhlIGVsbGlwc29pZCBpcyBhIHNwaGVyZS4AVGhlIGFuZ3VsYXIgdW5pdCBjb252ZXJzaW9uIGZhY3RvciBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyLgBUaGUgcHJpbWUgbWVyaWRpYW4gbXVzdCBiZSB3aXRoaW4gKC0xODAsIDE4MF0gZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LgBUcmFuc2Zvcm1hdGlvbiBmcm9tIFNSSUQgJXUgaXMgbm90IHN1cHBvcnRlZC4AVHJhbnNmb3JtYXRpb24gdG8gU1JJRCAldSBpcyBub3Qgc3VwcG9ydGVkLgBUcmFuc2Zvcm1hdGlvbiBmcm9tIFNSSUQgJXUgaXMgbm90IHN1cHBvcnRlZC4gVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBoYXMgbm8gVE9XR1M4NCBjbGF1c2UuAFRyYW5zZm9ybWF0aW9uIHRvIFNSSUQgJXUgaXMgbm90IHN1cHBvcnRlZC4gVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBoYXMgbm8gVE9XR1M4NCBjbGF1c2UuAENoYW5naW5nIEBAc2Vzc2lvbi5iaW5sb2dfZm9ybWF0IGlzIGRpc2FsbG93ZWQgd2hlbiB0aGUgc2Vzc2lvbiBoYXMgb3BlbiB0ZW1wb3JhcnkgdGFibGUocykuIFlvdSBjb3VsZCB3YWl0IHVudGlsIHRoZXNlIHRlbXBvcmFyeSB0YWJsZShzKSBhcmUgZHJvcHBlZCBhbmQgdHJ5IGFnYWluLgBDaGFuZ2luZyBAQGdsb2JhbC5iaW5sb2dfZm9ybWF0IG9yIEBAcGVyc2lzdC5iaW5sb2dfZm9ybWF0IGlzIGRpc2FsbG93ZWQgd2hlbiBhbnkgcmVwbGljYXRpb24gY2hhbm5lbCBoYXMgb3BlbiB0ZW1wb3JhcnkgdGFibGUocykuIFlvdSBjb3VsZCB3YWl0IHVudGlsIFJlcGxpY2Ffb3Blbl90ZW1wX3RhYmxlcyA9IDAgYW5kIHRyeSBhZ2FpbgBDaGFuZ2luZyBAQGdsb2JhbC5iaW5sb2dfZm9ybWF0IG9yIEBAcGVyc2lzdC5iaW5sb2dfZm9ybWF0IGlzIGRpc2FsbG93ZWQgd2hlbiBhbnkgcmVwbGljYXRpb24gY2hhbm5lbCBhcHBsaWVyIHRocmVhZCBpcyBydW5uaW5nLiBZb3UgY291bGQgZXhlY3V0ZSBTVE9QIFJFUExJQ0EgU1FMX1RIUkVBRCBhbmQgdHJ5IGFnYWluLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgYXJlIG5vdCBhbGxvd2VkIGluc2lkZSBhIHRyYW5zYWN0aW9uIG9yIGluc2lkZSBhIHByb2NlZHVyZSBpbiBhIHRyYW5zYWN0aW9uYWwgY29udGV4dCB3aGVuIEBAc2Vzc2lvbi5iaW5sb2dfZm9ybWF0PVNUQVRFTUVOVC4AWEE6IEZhaWxlZCB0byB0YWtlIE1ETCBMb2NrIGJhY2t1cCBvZiBQUkVQQVJFRCBYQSB0cmFuc2FjdGlvbiBkdXJpbmcgY2xpZW50IGRpc2Nvbm5lY3QuAFVuYWJsZSB0byBjcmVhdGUgb3IgY2hhbmdlIGEgdGFibGUgd2l0aG91dCBhIHByaW1hcnkga2V5LCB3aGVuIHRoZSBzeXN0ZW0gdmFyaWFibGUgJ3NxbF9yZXF1aXJlX3ByaW1hcnlfa2V5JyBpcyBzZXQuIEFkZCBhIHByaW1hcnkga2V5IHRvIHRoZSB0YWJsZSBvciB1bnNldCB0aGlzIHZhcmlhYmxlIHRvIGF2b2lkIHRoaXMgbWVzc2FnZS4gTm90ZSB0aGF0IHRhYmxlcyB3aXRob3V0IGEgcHJpbWFyeSBrZXkgY2FuIGNhdXNlIHBlcmZvcm1hbmNlIHByb2JsZW1zIGluIHJvdy1iYXNlZCByZXBsaWNhdGlvbiwgc28gcGxlYXNlIGNvbnN1bHQgeW91ciBEQkEgYmVmb3JlIGNoYW5naW5nIHRoaXMgc2V0dGluZy4ARGF0YSB0cnVuY2F0ZWQgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyVzJyBhdCByb3cgJWxkAFZhbHVlIGlzIG91dCBvZiByYW5nZSBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGF0IHJvdyAlbGQAQ2Fubm90IGNyZWF0ZSBhIGZ1bmN0aW9uYWwgaW5kZXggb24gYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBKU09OIG9yIEdFT01FVFJZIHZhbHVlLgBGdW5jdGlvbmFsIGluZGV4ICclLjY0cycgY2Fubm90IHJlZmVyIHRvIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbi4AQ2Fubm90IGRyb3AgY29sdW1uICclLS42NHMnIGJlY2F1c2UgaXQgaXMgdXNlZCBieSBhIGZ1bmN0aW9uYWwgaW5kZXguIEluIG9yZGVyIHRvIGRyb3AgdGhlIGNvbHVtbiwgeW91IG11c3QgcmVtb3ZlIHRoZSBmdW5jdGlvbmFsIGluZGV4LgBUaGUgcHJpbWFyeSBrZXkgY2Fubm90IGJlIGEgZnVuY3Rpb25hbCBpbmRleABDYW5ub3QgY3JlYXRlIGEgZnVuY3Rpb25hbCBpbmRleCBvbiBhbiBleHByZXNzaW9uIHRoYXQgcmV0dXJucyBhIEJMT0Igb3IgVEVYVC4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIENBU1QuAEV4cHJlc3Npb24gb2YgZnVuY3Rpb25hbCBpbmRleCAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbi4ARnVsbHRleHQgZnVuY3Rpb25hbCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkLgBTcGF0aWFsIGZ1bmN0aW9uYWwgaW5kZXggaXMgbm90IHN1cHBvcnRlZC4AVGhlIHVzZWQgc3RvcmFnZSBlbmdpbmUgY2Fubm90IGluZGV4IHRoZSBleHByZXNzaW9uICclcycuAEZ1bmN0aW9uYWwgaW5kZXggb24gYSBjb2x1bW4gaXMgbm90IHN1cHBvcnRlZC4gQ29uc2lkZXIgdXNpbmcgYSByZWd1bGFyIGluZGV4IGluc3RlYWQuAEV4cHJlc3Npb24gb2YgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbjogJXMuAEV4cHJlc3Npb24gb2YgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4ARXhwcmVzc2lvbiBvZiBnZW5lcmF0ZWQgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHVzZXIgb3Igc3lzdGVtIHZhcmlhYmxlcy4AQ29sdW1uICclcycgb2YgdGFibGUgJyVzJyBoYXMgYSBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gZGVwZW5kZW5jeSBhbmQgY2Fubm90IGJlIGRyb3BwZWQgb3IgcmVuYW1lZC4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhIGNvbHVtbiBkZWZpbmVkIGFmdGVyIGl0IGlmIHRoYXQgY29sdW1uIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbiBvciBoYXMgYW4gZXhwcmVzc2lvbiBhcyBkZWZhdWx0IHZhbHVlLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbi4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbi4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbjogJXMuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdXNlciBvciBzeXN0ZW0gdmFyaWFibGVzLgBERUZBVUxUIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucwAnJXMnIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBBTFRFUiBUQUJMRSAuLi4gQUREIENPTFVNTiAuLiB3aXRoIGV4cHJlc3Npb24gYXMgREVGQVVMVC4AQ2Fubm90IGNoYW5nZSB0YWJsZSdzIHN0b3JhZ2UgZW5naW5lIGJlY2F1c2UgdGhlIHRhYmxlIHBhcnRpY2lwYXRlcyBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuAFNldHRpbmcgdXNlciB2YXJpYWJsZXMgd2l0aGluIGV4cHJlc3Npb25zIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciBhbHRlcm5hdGl2ZXM6ICdTRVQgdmFyaWFibGU9ZXhwcmVzc2lvbiwgLi4uJywgb3IgJ1NFTEVDVCBleHByZXNzaW9uKHMpIElOVE8gdmFyaWFibGVzKHMpJy4AJyUtLjY0cycgaXMgYSBjb2xsYXRpb24gb2YgdGhlIGRlcHJlY2F0ZWQgY2hhcmFjdGVyIHNldCBVVEY4TUIzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgBOZXN0ZWQgY29tbWVudCBzeW50YXggaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFJlZmVyZW5jaW5nIGNvbHVtbiAnJXMnIGFuZCByZWZlcmVuY2VkIGNvbHVtbiAnJXMnIGluIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyVzJyBhcmUgaW5jb21wYXRpYmxlLgBUaW1lb3V0IGV4Y2VlZGVkIGZvciBoZWxkIHN0YXRlbWVudCB3aGlsZSBuZXcgR3JvdXAgUmVwbGljYXRpb24gcHJpbWFyeSBtZW1iZXIgaXMgYXBwbHlpbmcgYmFja2xvZy4ASGVsZCBzdGF0ZW1lbnQgYWJvcnRlZCBiZWNhdXNlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBnb3Qgc2h1dCBkb3duIG9yIHRocmVhZCB3YXMga2lsbGVkIHdoaWxlIG5ldyBwcmltYXJ5IG1lbWJlciB3YXMgYXBwbHlpbmcgYmFja2xvZy4ASGVsZCBzdGF0ZW1lbnQgd2FzIGFib3J0ZWQgZHVlIHRvIG1lbWJlciBiZWluZyBpbiBlcnJvciBzdGF0ZSwgd2hpbGUgYmFja2xvZyBpcyBiZWluZyBhcHBsaWVkIGR1cmluZyBHcm91cCBSZXBsaWNhdGlvbiBwcmltYXJ5IGVsZWN0aW9uLgBGYWlsZWQgdG8gZmV0Y2gga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBDYW4ndCBmaW5kIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpbiB0aGUgc2VydmVyIGxvZyBpZiBhIGtleXJpbmcgaXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuAEZldGNoZWQgYW4gaW52YWxpZCBrZXkgZnJvbSBrZXlyaW5nLgBFcnJvciByZWFkaW5nIGEgcmVwbGljYXRpb24gbG9nIGVuY3J5cHRpb24gaGVhZGVyOiAlcy4ARmFpbGVkIHRvIHJvdGF0ZSBzb21lIGxvZ3MgYWZ0ZXIgY2hhbmdpbmcgYmlubG9nIGVuY3J5cHRpb24gc2V0dGluZ3MuIFBsZWFzZSBmaXggdGhlIHByb2JsZW0gYW5kIHJvdGF0ZSB0aGUgbG9ncyBtYW51YWxseS4AS2V5ICVzIGV4aXN0cyB1bmV4cGVjdGVkLgBGYWlsZWQgdG8gZ2VuZXJhdGUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBzdG9yZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHJlbW92ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIGNoYW5nZSBiaW5sb2dfZW5jcnlwdGlvbiB2YWx1ZS4gJS0uODBzLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5sb2cgZW5jcnlwdGlvbiBtYXN0ZXIga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAHNsb3cgcXVlcnkgbG9nIGZpbGUgZm9ybWF0IGNoYW5nZWQgYXMgcmVxdWVzdGVkLCBidXQgc2V0dGluZyB3aWxsIGhhdmUgbm8gZWZmZWN0IHdoZW4gbm90IGFjdHVhbGx5IGxvZ2dpbmcgdG8gYSBmaWxlLgBUaGUgb3B0aW9uIGdyb3VwX3JlcGxpY2F0aW9uX2NvbnNpc3RlbmN5IGNhbm5vdCBiZSB1c2VkIG9uIHRoZSBjdXJyZW50IG1lbWJlciBzdGF0ZS4ARXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgZ3JvdXAgdHJhbnNhY3Rpb25zIGNvbW1pdCBvbiBncm91cF9yZXBsaWNhdGlvbl9jb25zaXN0ZW5jeT0gJ0JFRk9SRScuAEVycm9yIHdoaWxlIHdhaXRpbmcgZm9yIHRyYW5zYWN0aW9ucyB3aXRoIGdyb3VwX3JlcGxpY2F0aW9uX2NvbnNpc3RlbmN5PSAnQUZURVInIHRvIGNvbW1pdC4AVGhlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBpcyBzdG9wcGluZywgdGhlcmVmb3JlIG5ldyB0cmFuc2FjdGlvbnMgYXJlIG5vdCBhbGxvd2VkIHRvIHN0YXJ0LgBFeHByZXNzaW9uIG9mIGZ1bmN0aW9uYWwgaW5kZXggJyVzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAEZhaWxlZCB0byBlbmNyeXB0IGNvbnRlbnQgdG8gd3JpdGUgaW50byBiaW5sb2cgZmlsZTogJXMuAFBhZ2UgVHJhY2tpbmcgaXMgbm90IHN0YXJ0ZWQgeWV0LgBUcmFja2luZyB3YXMgbm90IGVuYWJsZWQgZm9yIHRoZSBMU04gcmFuZ2Ugc3BlY2lmaWVkAENhbm5vdCBwdXJnZSBkYXRhIHdoZW4gY29uY3VycmVudCBjbG9uZSBpcyBpbiBwcm9ncmVzcy4gVHJ5IGxhdGVyLgBDYW5ub3Qgcm90YXRlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSB3aGVuICdiaW5sb2ctZW5jcnlwdGlvbicgaXMgb2ZmLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5hcnkgbG9nIG1hc3RlciBrZXksIHRoZSBjb21iaW5hdGlvbiBvZiBuZXdfbWFzdGVyX2tleV9zZXFubz0ldSwgbWFzdGVyX2tleV9zZXFubz0ldSBhbmQgb2xkX21hc3Rlcl9rZXlfc2Vxbm89JXUgYXJlIHdyb25nLgBGYWlsZWQgdG8gb3BlcmF0ZSBiaW5hcnkgbG9nIG1hc3RlciBrZXkgb24ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgc3RhdGVtZW50IGhhZCBubyBlZmZlY3Q6IHRoZSBvbGQgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IGlzIHN0aWxsIGluIHVzZSwgdGhlIGtleXJpbmcsIGJpbmFyeSBhbmQgcmVsYXkgbG9nIGZpbGVzIGFyZSB1bmNoYW5nZWQsIGFuZCB0aGUgc2VydmVyIGNvdWxkIG5vdCBzdGFydCB1c2luZyBhIG5ldyBiaW5hcnkgbG9nIG1hc3RlciBrZXkgZm9yIGVuY3J5cHRpbmcgbmV3IGJpbmFyeSBhbmQgcmVsYXkgbG9nIGZpbGVzLgBGYWlsZWQgdG8gcm90YXRlIG9uZSBvciBtb3JlIGJpbmFyeSBvciByZWxheSBsb2cgZmlsZXMuIEEgbmV3IGJpbmFyeSBsb2cgbWFzdGVyIGtleSB3YXMgZ2VuZXJhdGVkIGFuZCB3aWxsIGJlIHVzZWQgdG8gZW5jcnlwdCBuZXcgYmluYXJ5IGFuZCByZWxheSBsb2cgZmlsZXMuIFRoZXJlIG1heSBzdGlsbCBleGlzdCBiaW5hcnkgb3IgcmVsYXkgbG9nIGZpbGVzIHVzaW5nIHRoZSBwcmV2aW91cyBiaW5hcnkgbG9nIG1hc3RlciBrZXkuACVzLiBBIG5ldyBiaW5hcnkgbG9nIG1hc3RlciBrZXkgd2FzIGdlbmVyYXRlZCBhbmQgd2lsbCBiZSB1c2VkIHRvIGVuY3J5cHQgbmV3IGJpbmFyeSBhbmQgcmVsYXkgbG9nIGZpbGVzLiBUaGVyZSBtYXkgc3RpbGwgZXhpc3QgYmluYXJ5IG9yIHJlbGF5IGxvZyBmaWxlcyB1c2luZyB0aGUgcHJldmlvdXMgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LgBGYWlsZWQgdG8gcmVtb3ZlIHVudXNlZCBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5cyBmcm9tIHRoZSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuIFRoZSB1bnVzZWQgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleXMgbWF5IHN0aWxsIGV4aXN0IGluIHRoZSBrZXlyaW5nLCBhbmQgdGhleSB3aWxsIGJlIHJlbW92ZWQgdXBvbiBzZXJ2ZXIgcmVzdGFydCBvciBuZXh0ICdBTFRFUiBJTlNUQU5DRSBST1RBVEUgQklOTE9HIE1BU1RFUiBLRVknIGV4ZWN1dGlvbi4ARmFpbGVkIHRvIHJlbW92ZSBhdXhpbGlhcnkgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIGNsZWFudXAgb2YgdGhlIGJpbmFyeSBsb2cgbWFzdGVyIGtleSByb3RhdGlvbiBwcm9jZXNzIGRpZCBub3QgZmluaXNoIGFzIGV4cGVjdGVkIGFuZCB0aGUgY2xlYW51cCB3aWxsIHRha2UgcGxhY2UgdXBvbiBzZXJ2ZXIgcmVzdGFydCBvciBuZXh0ICdBTFRFUiBJTlNUQU5DRSBST1RBVEUgQklOTE9HIE1BU1RFUiBLRVknIGV4ZWN1dGlvbi4AQW4gZXhwcmVzc2lvbiBvZiBub24tYm9vbGVhbiB0eXBlIHNwZWNpZmllZCB0byBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnLgBDb2x1bW4gY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgcmVmZXJlbmNlcyBvdGhlciBjb2x1bW4uAEFuIGV4cHJlc3Npb24gb2YgYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjb250YWlucyBkaXNhbGxvd2VkIGZ1bmN0aW9uOiAlcy4AQW4gZXhwcmVzc2lvbiBvZiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNvbnRhaW5zIGRpc2FsbG93ZWQgZnVuY3Rpb24uAEFuIGV4cHJlc3Npb24gb2YgYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjYW5ub3QgcmVmZXIgdG8gYSB1c2VyIG9yIHN5c3RlbSB2YXJpYWJsZS4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjYW5ub3QgcmVmZXIgdG8gYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBpcyB2aW9sYXRlZC4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgcmVmZXJzIHRvIG5vbi1leGlzdGluZyBjb2x1bW4gJyUtLjE5MnMnLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBpcyBub3QgZm91bmQgaW4gdGhlIHRhYmxlLgBEdXBsaWNhdGUgY2hlY2sgY29uc3RyYWludCBuYW1lICclLS4xOTJzJy4AQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgdXNlZCBpbiBhIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyByZWZlcmVudGlhbCBhY3Rpb24uAENyZWF0aW5nIGFuIHVuZW5jcnlwdGVkIHRhYmxlIGluIGEgZGF0YWJhc2Ugd2l0aCBkZWZhdWx0IGVuY3J5cHRpb24gZW5hYmxlZC4AUmVxdWVzdCB0byBjcmVhdGUgJXMgdGFibGUgd2hpbGUgdXNpbmcgYW4gJXMgdGFibGVzcGFjZS4AVGFibGUgZW5jcnlwdGlvbiBkaWZmZXIgZnJvbSBpdHMgZGF0YWJhc2UgZGVmYXVsdCBlbmNyeXB0aW9uLCBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4ARGF0YWJhc2UgZGVmYXVsdCBlbmNyeXB0aW9uIGRpZmZlciBmcm9tICdkZWZhdWx0X3RhYmxlX2VuY3J5cHRpb24nIHNldHRpbmcsIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBUYWJsZXNwYWNlIGVuY3J5cHRpb24gZGlmZmVyIGZyb20gJ2RlZmF1bHRfdGFibGVfZW5jcnlwdGlvbicgc2V0dGluZywgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAFRoaXMgdGFibGVzcGFjZSBjYW4ndCBiZSBlbmNyeXB0ZWQsIGJlY2F1c2Ugb25lIG9mIHRhYmxlJ3Mgc2NoZW1hIGhhcyBkZWZhdWx0IGVuY3J5cHRpb24gT0ZGIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBUaGlzIHRhYmxlc3BhY2UgY2FuJ3QgYmUgZGVjcnlwdGVkLCBiZWNhdXNlIG9uZSBvZiB0YWJsZSdzIHNjaGVtYSBoYXMgZGVmYXVsdCBlbmNyeXB0aW9uIE9OIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBDYW5ub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSB0YWJsZXNwYWNlIG5hbWVkICclcycuAFNvdXJjZSB0YWJsZXNwYWNlIGlzIGVuY3J5cHRlZCBidXQgdGFyZ2V0IHRhYmxlc3BhY2UgaXMgbm90LgBFTkNSWVBUSU9OIGNsYXVzZSBpcyBub3QgdmFsaWQgZm9yICVzIHRhYmxlc3BhY2UuAE11bHRpcGxlICVzIGNsYXVzZXMAR1JBTlQgLi4uIEFTIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQgb25seSBmb3IgZ2xvYmFsIHByaXZpbGVnZXMuAEVpdGhlciBzb21lIG9mIHRoZSBhdXRob3JpemF0aW9uIElEcyBpbiB0aGUgQVMgY2xhdXNlIGFyZSBpbnZhbGlkIG9yIHRoZSBjdXJyZW50IHVzZXIgbGFja3MgcHJpdmlsZWdlcyB0byBleGVjdXRlIHRoZSBzdGF0ZW1lbnQuAENvbHVtbiAnJXMnIGhhcyBhIGZ1bmN0aW9uYWwgaW5kZXggZGVwZW5kZW5jeSBhbmQgY2Fubm90IGJlIGRyb3BwZWQgb3IgcmVuYW1lZC4A0J/RgNC40YHRgtCw0LLQutCw0YLQsCAnJXMnINC90LUg0LzQvtC20LUg0LTQsCDRgdC1INC40LfQv9C+0LvQt9Cy0LAg0LrQsNGC0L4g0YDQsNC90L3QsCDQv9GA0LjRgdGC0LDQstC60LAuINCd0LUg0Y8g0LTQvtCx0LDQstCw0LnRgtC1INCyIC0tZWFybHktcGx1Z2luLWxvYWQg0Lgg0YIu0L0uAFJlZG8gbG9nIGFyY2hpdmluZyBzdGFydCBwcm9oaWJpdHMgcGF0aCBuYW1lIGluICdzdWJkaXInIGFyZ3VtZW50AFJlZG8gbG9nIGFyY2hpdmluZyBzdGFydCB0aW1lZCBvdXQAU2VydmVyIHZhcmlhYmxlICdpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9kaXJzJyBpcyBOVUxMIG9yIGVtcHR5AExhYmVsICclLjE5MnMnIG5vdCBmb3VuZCBpbiBzZXJ2ZXIgdmFyaWFibGUgJ2lubm9kYl9yZWRvX2xvZ19hcmNoaXZlX2RpcnMnAERpcmVjdG9yeSBpcyBlbXB0eSBhZnRlciBsYWJlbCAnJS4xOTJzJyBpbiBzZXJ2ZXIgdmFyaWFibGUgJ2lubm9kYl9yZWRvX2xvZ19hcmNoaXZlX2RpcnMnAFJlZG8gbG9nIGFyY2hpdmUgZGlyZWN0b3J5ICclLjE5MnMnIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhIGRpcmVjdG9yeQBSZWRvIGxvZyBhcmNoaXZlIGRpcmVjdG9yeSAnJS4xOTJzJyBpcyBpbiwgdW5kZXIsIG9yIG92ZXIgc2VydmVyIGRpcmVjdG9yeSAnJS4xOTJzJyAtICclLjE5MnMnAFJlZG8gbG9nIGFyY2hpdmUgZGlyZWN0b3J5ICclLjE5MnMnIGlzIGFjY2Vzc2libGUgdG8gYWxsIE9TIHVzZXJzAENhbm5vdCBjcmVhdGUgcmVkbyBsb2cgYXJjaGl2ZSBmaWxlICclLjUxMnMnIChPUyBlcnJubzogJWQgLSAlLjEyOHMpAFJlZG8gbG9nIGFyY2hpdmluZyBoYXMgYmVlbiBzdGFydGVkIG9uICclLjUxMnMnIC0gQ2FsbCBpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9zdG9wKCkgZmlyc3QAUmVkbyBsb2cgYXJjaGl2aW5nIGlzIG5vdCBhY3RpdmUAUmVkbyBsb2cgYXJjaGl2aW5nIGZhaWxlZDogJS41MTJzAFJlZG8gbG9nIGFyY2hpdmluZyBoYXMgbm90IGJlZW4gc3RhcnRlZCBieSB0aGlzIHNlc3Npb24AUmVnZXggZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAEludmFsaWQgSlNPTiB0eXBlIGluIGFyZ3VtZW50ICV1IHRvIGZ1bmN0aW9uICVzOyBhbiAlcyBpcyByZXF1aXJlZC4AQ2Fubm90IGNvbnZlcnQgc3RyaW5nICclLjY0cycgZnJvbSAlcyB0byAlcwBDb2x1bW4gJyVzJyBoYXMgYSBwYXJ0aXRpb25pbmcgZnVuY3Rpb24gZGVwZW5kZW5jeSBhbmQgY2Fubm90IGJlIGRyb3BwZWQgb3IgcmVuYW1lZC4AQVVUT19JTkNSRU1FTlQgc3VwcG9ydCBmb3IgRkxPQVQvRE9VQkxFIGNvbHVtbnMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHJlbW92aW5nIEFVVE9fSU5DUkVNRU5UIGZyb20gY29sdW1uICclLS4xOTJzJy4AQ2Fubm90IHN0b3AgdGhlIHJlcGxpY2EgU1FMIHRocmVhZCB3aGlsZSB0aGUgaW5zdGFuY2UgaXMgbG9ja2VkIGZvciBiYWNrdXAuIFRyeSBydW5uaW5nIGBVTkxPQ0sgSU5TVEFOQ0VgIGZpcnN0LgBTcGVjaWZ5aW5nIG51bWJlciBvZiBkaWdpdHMgZm9yIGZsb2F0aW5nIHBvaW50IGRhdGEgdHlwZXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFVOU0lHTkVEIGZvciBkZWNpbWFsIGFuZCBmbG9hdGluZyBwb2ludCBkYXRhIHR5cGVzIGlzIGRlcHJlY2F0ZWQgYW5kIHN1cHBvcnQgZm9yIGl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBJbnRlZ2VyIGRpc3BsYXkgd2lkdGggaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFRoZSBaRVJPRklMTCBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFVzZSB0aGUgTFBBRCBmdW5jdGlvbiB0byB6ZXJvLXBhZCBudW1iZXJzLCBvciBzdG9yZSB0aGUgZm9ybWF0dGVkIG51bWJlcnMgaW4gYSBDSEFSIGNvbHVtbi4AQ2xvbmUgRG9ub3IgRXJyb3I6ICUuNTEycy4AQ2xvbmUgcmVjZWl2ZWQgdW5leHBlY3RlZCByZXNwb25zZSBmcm9tIERvbm9yIDogJS41MTJzLgBDbG9uZSBEb25vciBNeVNRTCB2ZXJzaW9uOiAlLjY0cyBpcyBkaWZmZXJlbnQgZnJvbSBSZWNpcGllbnQgTXlTUUwgdmVyc2lvbiAlLjY0cy4AQ2xvbmUgRG9ub3IgT1M6ICUuNjRzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCBPUzogJS42NHMuAENsb25lIERvbm9yIHBsYXRmb3JtOiAlLjY0cyBpcyBkaWZmZXJlbnQgZnJvbSBSZWNpcGllbnQgcGxhdGZvcm06ICUuNjRzLgBDbG9uZSBEb25vciBjb2xsYXRpb246ICUuMTI4cyBpcyB1bmF2YWlsYWJsZSBpbiBSZWNpcGllbnQuAENsb25lIENvbmZpZ3VyYXRpb24gJS4xMjhzOiBEb25vciB2YWx1ZTogJS4xMjhzIGlzIGRpZmZlcmVudCBmcm9tIFJlY2lwaWVudCB2YWx1ZTogJS4xMjhzLgBDbG9uZSBzeXN0ZW0gY29uZmlndXJhdGlvbjogJS41MTJzAENsb25lIERvbm9yIHBsdWdpbiAlLjEyOHMgaXMgbm90IGFjdGl2ZSBpbiBSZWNpcGllbnQuAENsb25lIGNhbm5vdCB1c2UgbG9vcCBiYWNrIGNvbm5lY3Rpb24gd2hpbGUgY2xvbmluZyBpbnRvIGN1cnJlbnQgZGF0YSBkaXJlY3RvcnkuAENsb25lIG5lZWRzIFNTTCBjb25uZWN0aW9uIGZvciBlbmNyeXB0ZWQgdGFibGUuAENsb25lIGVzdGltYXRlZCBkYXRhYmFzZSBzaXplIGlzICUuNjRzLiBBdmFpbGFibGUgc3BhY2UgJS42NHMgaXMgbm90IGVub3VnaC4AQ29uY3VycmVudCBjbG9uZSBpbiBwcm9ncmVzcy4gUGxlYXNlIHRyeSBhZnRlciBjbG9uZSBpcyBjb21wbGV0ZS4AVGhlIGNsb25lIG9wZXJhdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hlbiAlcy4AQ2Fubm90IGdyYW50IHJvbGVzIHRvIGFuIGFub255bW91cyB1c2VyLgAlcwBFbXB0eSBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGFzIHNlY29uZCBwYXNzd29yZCBmb3IgdXNlciAnJXMnQCclcycuAEFjY2VzcyBkZW5pZWQgZm9yIEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgdG8gZGF0YWJhc2UgJyUtLjE5MnMnLgBDYW5ub3Qgc2V0IG1hbmRhdG9yeV9yb2xlczogQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBoYXMgJyVzJyBwcml2aWxlZ2UuAEd0aWQgdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIG9wZW5lZC4AVGhlIGdlb21ldHJ5IHBhc3NlZCB0byBmdW5jdGlvbiAlcyBpcyBpbiBTUklEIDAsIHdoaWNoIGRvZXNuJ3Qgc3BlY2lmeSBhIGxlbmd0aCB1bml0LiBDYW4ndCBjb252ZXJ0IHRvICclcycuAEVycm9yIGluc3RhbGxpbmcgcGx1Z2luICclcyc6ICVzAFN0b3JhZ2UgZW5naW5lIGNvdWxkIG5vdCBhbGxvY2F0ZSB0ZW1wb3JhcnkgdGFibGVzcGFjZSBmb3IgdGhpcyBzZXNzaW9uLgBHb3QgdW5rbm93biBlcnJvcjogJWQAQ291bGQgbm90IGNoYW5nZSBjb2x1bW4gJyVzJyBvZiB0YWJsZSAnJXMnLiBUaGUgcmVzdWx0aW5nIHNpemUgb2YgaW5kZXggJyVzJyB3b3VsZCBleGNlZWQgdGhlIG1heCBrZXkgbGVuZ3RoIG9mICVkIGJ5dGVzLgBBIGNhcHR1cmUgZ3JvdXAgaGFzIGFuIGludmFsaWQgbmFtZS4ARmFpbGVkIHRvIHNldCB1cCBTU0wgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIFNTTCBsaWJyYXJ5IGVycm9yOiAlcwBTZWNvbmRhcnkgZW5naW5lIG9wZXJhdGlvbiBmYWlsZWQuICVzLgBERExzIG9uIGEgdGFibGUgd2l0aCBhIHNlY29uZGFyeSBlbmdpbmUgZGVmaW5lZCBhcmUgbm90IGFsbG93ZWQuAEluY29ycmVjdCBjdXJyZW50IHBhc3N3b3JkLiBTcGVjaWZ5IHRoZSBjb3JyZWN0IHBhc3N3b3JkIHdoaWNoIGhhcyB0byBiZSByZXBsYWNlZC4AQ3VycmVudCBwYXNzd29yZCBuZWVkcyB0byBiZSBzcGVjaWZpZWQgaW4gdGhlIFJFUExBQ0UgY2xhdXNlIGluIG9yZGVyIHRvIGNoYW5nZSBpdC4ARG8gbm90IHNwZWNpZnkgdGhlIGN1cnJlbnQgcGFzc3dvcmQgd2hpbGUgY2hhbmdpbmcgaXQgZm9yIG90aGVyIHVzZXJzLgBDdXJyZW50IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGJlY2F1c2UgYXV0aGVudGljYXRpb24gcGx1Z2luIGlzIGJlaW5nIGNoYW5nZWQuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBuZXcgcGFzc3dvcmQgaXMgZW1wdHkuAEF0IGxlYXN0IG9uZSBwYXJ0aWFsIHJldm9rZSBleGlzdHMgb24gYSBkYXRhYmFzZS4gVGhlIHN5c3RlbSB2YXJpYWJsZSAnQEBwYXJ0aWFsX3Jldm9rZXMnIG11c3QgYmUgc2V0IHRvIE9OLgBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGlzIHNldCBhcyBtYW5kYXRvcnlfcm9sZXMuIENhbm5vdCBncmFudCB0aGUgJyVzJyBwcml2aWxlZ2UuAFRoZSB1c2Ugb2YgcmVwbGljYXRpb24gZmlsdGVycyB3aXRoIFhBIHRyYW5zYWN0aW9ucyBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgY2FuIGxlYWQgdG8gYW4gdW5kZWZpbmVkIHN0YXRlIGluIHRoZSByZXBsaWNhLgBzcWxfbW9kZT0weCUwOHggaXMgbm90IHN1cHBvcnRlZC4ASW52YWxpZCBtYXRjaCBtb2RlIGZsYWcgaW4gcmVndWxhciBleHByZXNzaW9uLgAnJXMnIHByaXZpbGVnZSBmb3IgZGF0YWJhc2UgJyVzJyBleGlzdHMgYm90aCBhcyBwYXJ0aWFsIHJldm9rZSBhbmQgbXlzcWwuZGIgc2ltdWx0YW5lb3VzbHkuIEl0IGNvdWxkIG1lYW4gdGhhdCB0aGUgJ215c3FsJyBzY2hlbWEgaXMgY29ycnVwdGVkLgBUaGVyZSdzIG5vIHVuaXQgb2YgbWVhc3VyZSBuYW1lZCAnJXMnLgBJbnZhbGlkIEpTT04gdmFsdWUgZm9yIENBU1QgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycuAE91dCBvZiByYW5nZSBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnLgBFeGNlZWRlZCBtYXggbnVtYmVyIG9mIHZhbHVlcyBwZXIgcmVjb3JkIGZvciBtdWx0aS12YWx1ZWQgaW5kZXggJyUtLjY0cycgYnkgJXUgdmFsdWUocykuAEV4Y2VlZGVkIG1heCB0b3RhbCBsZW5ndGggb2YgdmFsdWVzIHBlciByZWNvcmQgZm9yIG11bHRpLXZhbHVlZCBpbmRleCAnJS0uNjRzJyBieSAldSBieXRlcy4ARGF0YSB0b28gbG9uZyBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJy4AQ2Fubm90IHN0b3JlIGFuIGFycmF5IG9yIGFuIG9iamVjdCBpbiBhIHNjYWxhciBrZXkgcGFydCBvZiB0aGUgaW5kZXggJyUuMTkycycuAENhbm5vdCB1c2UgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbi4AVGhlIGZ1bmN0aW9uICclcycgZmFpbGVkLiAlcwBDYW5ub3QgdXBkYXRlIEdUSURfUFVSR0VEIHdpdGggdGhlIEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBydW5uaW5nAEdyb3VwaW5nIG9uIHRlbXBvcmFsIGlzIG5vbi1kZXRlcm1pbmlzdGljIGZvciB0aW1lem9uZXMgaGF2aW5nIERTVC4gUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyB0byBVVEMgZm9yIHRoaXMgcXVlcnkuAExvbmcgZGF0YWJhc2UgbmFtZSBhbmQgaWRlbnRpZmllciBmb3Igb2JqZWN0IHJlc3VsdGVkIGluIGEgcGF0aCBsZW5ndGggdG9vIGxvbmcgZm9yIHRhYmxlICclcycuIFBsZWFzZSBjaGVjayB0aGUgcGF0aCBsaW1pdCBmb3IgeW91ciBPUy4AUmVxdWVzdCBpZ25vcmVkIGZvciAnJS42NHMnQCclLjY0cycuIFJvbGUgbmVlZGVkIHRvIHBlcmZvcm0gb3BlcmF0aW9uOiAnJS4zMnMnACdhdWRpdF9sb2cnIHBhc3N3b3JkIGhhcyBiZWVuIGNvcGllZCBpbnRvICclLjMycycgYW5kIHdpbGwgYmUgcmVtb3ZlZCB3aXRoIGZpcnN0IHB1cmdlZCBwYXNzd29yZC4AU3RhcnRlZCBhdXRvLXJlam9pbiBwcm9jZWR1cmUgYXR0ZW1wdCAlbHUgb2YgJWx1AEEgcGx1Z2luIHdhcyBsb2FkZWQgb3IgdW5sb2FkZWQgZHVyaW5nIGEgcXVlcnksIGEgc3lzdGVtIHZhcmlhYmxlIHRhYmxlIHdhcyBjaGFuZ2VkLgBBIHBsdWdpbiB3YXMgbG9hZGVkIG9yIHVubG9hZGVkIGR1cmluZyBhIHF1ZXJ5LCBhIGdsb2JhbCBzdGF0dXMgdmFyaWFibGUgd2FzIGNoYW5nZWQuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCB0byBzdGFydCBpdHMgbWVzc2FnZSBzZXJ2aWNlLgBJbnZhbGlkIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TICclLjE5MnMnIGZvciBjaGFubmVsICclLjE5MnMnLgBJbnZhbGlkIFNPVVJDRV9aU1REX0NPTVBSRVNTSU9OX0xFVkVMICV1IGZvciBjaGFubmVsICclLjE5MnMnLgBJbnZhbGlkIGNvbXByZXNzaW9uIGFsZ29yaXRobSAnJS4xOTJzJy4ASW52YWxpZCB6c3RkIGNvbXByZXNzaW9uIGxldmVsIGZvciBhbGdvcml0aG0gJyUuMTkycycuAFNwZWNpZmllZCBjb21wcmVzc2lvbiBhbGdvcml0aG0gbGlzdCAnJS4xOTJzJyBleGNlZWRzIHRvdGFsIGNvdW50IG9mIDMgZm9yIGNoYW5uZWwgJyUuMTkycycuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGBgQGAlLjI1NXNgLCBidXQgYW5vbnltb3VzIHVzZXJzIGFyZSBkaXNhbGxvd2VkIGZvciBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIGlzIG5vdCBhbiBleGlzdGluZyB1c2VyLgBJbnZhbGlkLCBjb3JydXB0ZWQgUFJJVklMRUdFX0NIRUNLU19VU0VSIHdhcyBmb3VuZCBpbiB0aGUgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiByZXBvc2l0b3J5IGZvciBjaGFubmVsICclLjE5MnMnLiBVc2UgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgdG8gY29ycmVjdCB0aGUgY29uZmlndXJhdGlvbi4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgdXNlciBkb2VzIG5vdCBoYXZlIFJFUExJQ0FUSU9OX0FQUExJRVIgcHJpdmlsZWdlLgBEeW5hbWljIHByaXZpbGVnZSAnJXMnIGlzIG5vdCByZWdpc3RlcmVkIHdpdGggdGhlIHNlcnZlci4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgaXMgaW52YWxpZC4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgdHlwZSBpcyBpbnZhbGlkLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSBsZW5ndGggaXMgdG9vIGxvbmcuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IHR5cGUgaXMgdG9vIGxvbmcuACVzLgBJbnZhbGlkIGNoYXJhY3RlciBzZXQgJyVzJyB3YXMgc3BlY2lmaWVkLiBJdCBtdXN0IGJlIGVpdGhlciBjaGFyYWN0ZXIgc2V0IG5hbWUgb3IgY29sbGF0aW9uIG5hbWUgYXMgc3VwcG9ydGVkIGJ5IHNlcnZlci4ASW52YWxpZCBjaGFyYWN0ZXIgc2V0ICclcycgd2FzIHNwZWNpZmllZC4gSXQgbXVzdCBiZSBhIGNoYXJhY3RlciBzZXQgbmFtZSBhcyBzdXBwb3J0ZWQgYnkgc2VydmVyLgBJbnZhbGlkIGNvbGxhdGlvbiAnJXMnIHdhcyBzcGVjaWZpZWQuIEl0IG11c3QgYmUgYSBjb2xsYXRpb24gbmFtZSBhcyBzdXBwb3J0ZWQgYnkgc2VydmVyLgBJbnZhbGlkIGV4dGVuc2lvbiBhcmd1bWVudCB0eXBlICclcycgd2FzIHNwZWNpZmllZC4gUmVmZXIgdGhlIE15U1FMIG1hbnVhbCBmb3IgdGhlIHZhbGlkIFVERiBleHRlbnNpb24gYXJndW1lbnRzIHR5cGUuAFRhYmxlIGhhcyBtdWx0aXBsZSBjb25zdHJhaW50cyB3aXRoIHRoZSBuYW1lICclLS4xOTJzJy4gUGxlYXNlIHVzZSBjb25zdHJhaW50IHNwZWNpZmljICclcycgY2xhdXNlLgBDb25zdHJhaW50ICclLS4xOTJzJyBkb2VzIG5vdCBleGlzdC4AQWx0ZXJpbmcgY29uc3RyYWludCBlbmZvcmNlbWVudCBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGUgY29uc3RyYWludCAnJS0uMTkycycuIEVuZm9yY2VtZW50IHN0YXRlIGFsdGVyIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoZSBQUklNQVJZLCBVTklRVUUgYW5kIEZPUkVJR04gS0VZIHR5cGUgY29uc3RyYWludHMuAEVhY2ggcm93IG9mIGEgVkFMVUVTIGNsYXVzZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNvbHVtbiwgdW5sZXNzIHdoZW4gdXNlZCBhcyBzb3VyY2UgaW4gYW4gSU5TRVJUIHN0YXRlbWVudC4AQSBWQUxVRVMgY2xhdXNlIGNhbm5vdCB1c2UgREVGQVVMVCB2YWx1ZXMsIHVubGVzcyB1c2VkIGFzIGEgc291cmNlIGluIGFuIElOU0VSVCBzdGF0ZW1lbnQuAFRoZSBxdWVyeSBkb2VzIG5vdCBjb21wbHkgd2l0aCB2YXJpYWJsZSByZXF1aXJlX3Jvd19mb3JtYXQgcmVzdHJpY3Rpb25zLgBUaGUgcmVxdWVzdGVkIHZhbHVlICVzIGlzIGludmFsaWQgZm9yIFJFUVVJUkVfUk9XX0ZPUk1BVCwgbXVzdCBiZSBlaXRoZXIgMCBvciAxLgBGYWlsZWQgdG8gYWNxdWlyZSBsb2NrIG9uIHVzZXIgbWFuYWdlbWVudCBzZXJ2aWNlLCB1bmFibGUgdG8gZGV0ZXJtaW5lIGlmIHJvbGUgYCVzYEBgJXNgIGlzIG1hbmRhdG9yeQBGYWlsZWQgdG8gYWNxdWlyZSBsb2NrIG9uIHVzZXIgbWFuYWdlbWVudCBzZXJ2aWNlLCB1bmFibGUgdG8gZmV0Y2ggbWFuZGF0b3J5IHJvbGUgbGlzdABMb2FkaW5nIGxvY2FsIGRhdGEgaXMgZGlzYWJsZWQ7IHRoaXMgbXVzdCBiZSBlbmFibGVkIG9uIGJvdGggdGhlIGNsaWVudCBhbmQgc2VydmVyIHNpZGVzAEZhaWxlZCB0byBpbXBvcnQgJXMgYmVjYXVzZSB0aGUgQ0ZHIGZpbGUgdmVyc2lvbiAoJXUpIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQgdmVyc2lvbiAoJXUpAE91dCBvZiBtZW1vcnkAQ2hhcmFjdGVyIHNldCBjYW4gYmUgc2V0IG9ubHkgZm9yIHRoZSBVREYgYXJndW1lbnQgdHlwZSBTVFJJTkcuAENoYXJhY3RlciBzZXQgY2FuIGJlIHNldCBvbmx5IGZvciB0aGUgVURGIFJFVFVSTiB0eXBlIFNUUklORy4ATXVsdGlwbGUgSU5UTyBjbGF1c2VzIGluIG9uZSBxdWVyeSBibG9jay4ATWlzcGxhY2VkIElOVE8gY2xhdXNlLCBJTlRPIGlzIG5vdCBhbGxvd2VkIGluc2lkZSBzdWJxdWVyaWVzLCBhbmQgbXVzdCBiZSBwbGFjZWQgYXQgZW5kIG9mIFVOSU9OIGNsYXVzZXMuAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgYmxvY2tlZCBmb3IgJXMgZGF5KHMpICglcyBkYXkocykgcmVtYWluaW5nKSBkdWUgdG8gJXUgY29uc2VjdXRpdmUgZmFpbGVkIGxvZ2lucy4AVU5TSUdORUQgZm9yIHRoZSBZRUFSIGRhdGEgdHlwZSBpcyBkZXByZWNhdGVkIGFuZCBzdXBwb3J0IGZvciBpdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQ2xvbmUgbmVlZHMgbWF4X2FsbG93ZWRfcGFja2V0IHZhbHVlIHRvIGJlICV1IG9yIG1vcmUuIEN1cnJlbnQgdmFsdWUgaXMgJXUARmFpbGVkIHRvICVzIHNkaSBmb3IgJXMuJXMgaW4gJXMgZHVlIHRvIG1pc3NpbmcgcmVjb3JkLgBDaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyB1c2VzIGNvbHVtbiAnJS0uMTkycycsIGhlbmNlIGNvbHVtbiBjYW5ub3QgYmUgZHJvcHBlZCBvciByZW5hbWVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHJ1bm5pbmc7IHJ1biBTVE9QIEdST1VQX1JFUExJQ0FUSU9OIGZpcnN0AFNwZWNpZnlpbmcgYW4gT04gRU1QVFkgY2xhdXNlIGFmdGVyIHRoZSBPTiBFUlJPUiBjbGF1c2UgaW4gYSBKU09OX1RBQkxFIGNvbHVtbiBkZWZpbml0aW9uIGlzIGRlcHJlY2F0ZWQgc3ludGF4IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gU3BlY2lmeSBPTiBFTVBUWSBiZWZvcmUgT04gRVJST1IgaW5zdGVhZC4AVGhlIElOVE8gY2xhdXNlIGlzIGRlcHJlY2F0ZWQgaW5zaWRlIHF1ZXJ5IGJsb2NrcyBvZiBxdWVyeSBleHByZXNzaW9ucyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBtb3ZlIHRoZSBJTlRPIGNsYXVzZSB0byB0aGUgZW5kIG9mIHN0YXRlbWVudCBpbnN0ZWFkLgBUaGUgVkFMVUVTIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBJdCBhbHdheXMgcmV0dXJucyBOVUxMIGluIHRoaXMgY29udGV4dC4gSWYgeW91IG1lYW50IHRvIGFjY2VzcyBhIHZhbHVlIGZyb20gdGhlIFZBTFVFUyBjbGF1c2Ugb2YgdGhlIElOU0VSVCBzdGF0ZW1lbnQsIGNvbnNpZGVyIHVzaW5nIGFuIGFsaWFzIChJTlNFUlQgSU5UTyAuLi4gVkFMVUVTICguLi4pIEFTIGFsaWFzKSBhbmQgcmVmZXJlbmNlIGFsaWFzLmNvbCBpbnN0ZWFkIG9mIFZBTFVFUyhjb2wpIGluIHRoZSBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSBjbGF1c2UuAFNRTF9DQUxDX0ZPVU5EX1JPV1MgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIHR3byBzZXBhcmF0ZSBxdWVyaWVzIGluc3RlYWQuAEZPVU5EX1JPV1MoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgQ09VTlQoKikgaW5zdGVhZC4ATm8gdmFsdWUgd2FzIGZvdW5kIGJ5ICclLjE5MnMnIG9uIHRoZSBzcGVjaWZpZWQgcGF0aC4ATW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQgYnkgJyUuMTkycycgb24gdGhlIHNwZWNpZmllZCBwYXRoLgBIb3N0bmFtZSBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gJWQgY2hhcmFjdGVycy4AQ29sdW1uICclLjY0cy4lLjY0cy4lLjY0cycgaGF2aW5nIHByZWZpeCBrZXkgcGFydCAnJS42NHMoJXUpJyBpcyBpZ25vcmVkIGJ5IHRoZSBwYXJ0aXRpb25pbmcgZnVuY3Rpb24uIFVzZSBvZiBwcmVmaXhlZCBjb2x1bW5zIGluIHRoZSBQQVJUSVRJT04gQlkgS0VZKCkgY2xhdXNlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIHVzZXJuYW1lIHByb3ZpZGVkIGZvciByZWNvdmVyeSBjaGFubmVsIGlzIGVtcHR5LgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIFVTRVIgb3B0aW9uIHdhcyBub3QgcHJvdmlkZWQgd2l0aCBQQVNTV09SRCBmb3IgcmVjb3ZlcnkgY2hhbm5lbC4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBwYXNzd29yZCBwcm92aWRlZCBmb3IgdGhlIHJlY292ZXJ5IGNoYW5uZWwgZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgMzIgY2hhcmFjdGVycy4AU3RhdGVtZW50IHJlcXVpcmVzIGEgdHJhbnNmb3JtIG9mIGEgc3VicXVlcnkgdG8gYSBub24tU0VUIG9wZXJhdGlvbiAobGlrZSBJTjJFWElTVFMsIG9yIHN1YnF1ZXJ5LXRvLUxBVEVSQUwtZGVyaXZlZC10YWJsZSkuIFRoaXMgaXMgbm90IGFsbG93ZWQgd2l0aCBvcHRpbWl6ZXIgc3dpdGNoICdzdWJxdWVyeV90b19kZXJpdmVkJyBvbgBJbnZhbGlkIGlucHV0IHZhbHVlIGZvciByZWNvdmVyeSBzb2NrZXQgZW5kcG9pbnRzICclcycuIFBsZWFzZSwgcHJvdmlkZSBhIHZhbGlkLCBjb21tYSBzZXBhcmF0ZWQsIGxpc3Qgb2YgZW5kcG9pbnRzIChJUDpwb3J0KQBUaGUgc2VydmVyIGlzIG5vdCBsaXN0ZW5pbmcgb24gZW5kcG9pbnQgJyVzJy4gT25seSBlbmRwb2ludHMgdGhhdCB0aGUgc2VydmVyIGlzIGxpc3RlbmluZyBvbiBhcmUgdmFsaWQgcmVjb3ZlcnkgZW5kcG9pbnRzLgBWYXJpYWJsZSAnJS0uNjRzJyBjYW5ub3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycuICUtLjIwMHMAT25seSBCSU5MT0cgSU5TRVJULCBDT01NSVQgYW5kIFJPTExCQUNLIHN0YXRlbWVudHMgYXJlIGFsbG93ZWQgYWZ0ZXIgQ1JFQVRFIFRBQkxFIHdpdGggU1RBUlQgVFJBTlNBQ1RJT04gc3RhdGVtZW50LgBGb3JlaWduIGtleSBjcmVhdGlvbiBpcyBub3QgYWxsb3dlZCB3aXRoIENSRUFURSBUQUJMRSBhcyBTRUxFQ1QgYW5kIENSRUFURSBUQUJMRSB3aXRoIFNUQVJUIFRSQU5TQUNUSU9OIHN0YXRlbWVudC4AU1RBUlQgVFJBTlNBQ1RJT04gY2xhdXNlIGNhbm5vdCBiZSB1c2VkICUuMTI4cwBJbnZhbGlkIGpzb24gYXR0cmlidXRlLCBlcnJvcjogIiVzIiBhdCBwb3MgJXU6ICclcycAU3RvcmFnZSBlbmdpbmUgJyVzJyBkb2VzIG5vdCBzdXBwb3J0IEVOR0lORV9BVFRSSUJVVEUuAFRoZSB1c2VyIGF0dHJpYnV0ZSBtdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3QAQ2Fubm90IHBlcmZvcm0gb3BlcmF0aW9uIGFzIElubm9EQiByZWRvIGxvZ2dpbmcgaXMgZGlzYWJsZWQuIFBsZWFzZSByZXRyeSBhZnRlciBlbmFibGluZyByZWRvIGxvZyB3aXRoIEFMVEVSIElOU1RBTkNFAENhbm5vdCBwZXJmb3JtIG9wZXJhdGlvbiBhcyBJbm5vREIgaXMgYXJjaGl2aW5nIHJlZG8gbG9nLiBQbGVhc2UgcmV0cnkgYWZ0ZXIgc3RvcHBpbmcgcmVkbyBhcmNoaXZlIGJ5IGludm9raW5nIGlubm9kYl9yZWRvX2xvZ19hcmNoaXZlX3N0b3AoKQBOb3QgZW5vdWdoIHJlc291cmNlcyB0byBjb21wbGV0ZSBsb2NrIHJlcXVlc3QuAEV2YWx1YXRpbmcgYSBKU09OIHZhbHVlIGluIFNRTCBib29sZWFuIGNvbnRleHQgZG9lcyBhbiBpbXBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgSlNPTiBpbnRlZ2VyIDA7IGlmIHRoaXMgaXMgbm90IHdoYXQgeW91IHdhbnQsIGNvbnNpZGVyIGNvbnZlcnRpbmcgSlNPTiB0byBhIFNRTCBudW1lcmljIHR5cGUgd2l0aCBKU09OX1ZBTFVFIFJFVFVSTklORwBUaGUgZnVuY3Rpb24gJXMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY2hhcmFjdGVyIHNldCAnJXMnLgBDb252ZXJzaW9uIGZyb20gY29sbGF0aW9uICVzIGludG8gJXMgaW1wb3NzaWJsZSBmb3IgJXMAU2NoZW1hICclcycgaXMgaW4gcmVhZCBvbmx5IG1vZGUuAEZhaWxlZCB0byBlbmFibGUgQXN5bmNocm9ub3VzIFJlcGxpY2F0aW9uIENvbm5lY3Rpb24gRmFpbG92ZXIgZmVhdHVyZS4gVGhlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEgY2FuIG9ubHkgYmUgc2V0IHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uAEZhaWxlZCB0byBlbmFibGUgQXN5bmNocm9ub3VzIFJlcGxpY2F0aW9uIENvbm5lY3Rpb24gRmFpbG92ZXIgZmVhdHVyZS4gVGhlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEgY2FuIG9ubHkgYmUgc2V0IHdoZW4gU09VUkNFX0FVVE9fUE9TSVRJT04gb3B0aW9uIG9mIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gaXMgZW5hYmxlZC4AVGhlIEBAR0xPQkFMLkdUSURfTU9ERSA9ICUtLjY0cyBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBpcyBlbmFibGVkIGkuZS4gQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMS4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDAgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQXN5bmNocm9ub3VzIFJlcGxpY2F0aW9uIENvbm5lY3Rpb24gRmFpbG92ZXIgaXMgZW5hYmxlZCBpLmUuIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEuAEludmFsaWQgdXNlIG9mIHBhcmFtZXRlcnMgaW4gJyVzJwBDaGFyYWN0ZXIgc2V0ICclcycgY2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnJXMnIGluIGNhbGwgdG8gJXMuAENoYW5naW5nICVzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4gRmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0LgBJbnZhbGlkIHRpbWUgem9uZSBpbnRlcnZhbDogJyVzJwBDYW5ub3QgY2FzdCB2YWx1ZSB0byAlcy4AVGhlIGh5cGVyZ3JhcGggb3B0aW1pemVyIGRvZXMgbm90IHlldCBzdXBwb3J0ICclcycAVGhlIGh5cGVyZ3JhcGggb3B0aW1pemVyIGlzIGhpZ2hseSBleHBlcmltZW50YWwgYW5kIGlzIG1lYW50IGZvciB0ZXN0aW5nIG9ubHkuIERvIG5vdCBlbmFibGUgaXQgdW5sZXNzIHlvdSBhcmUgYSBNeVNRTCBkZXZlbG9wZXIuAE5vbmUgb2YgdGhlIGxvZy1zaW5rcyBzZWxlY3RlZCB3aXRoIC0tbG9nLWVycm9yLXNlcnZpY2VzPS4uLiBwcm92aWRlcyBhIGxvZy1wYXJzZXIuIFRoZSBzZXJ2ZXIgd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIHRoZSBwcmV2aW91cyBydW5zJyBlcnJvci1sb2dzIGF2YWlsYWJsZSBpbiBwZXJmb3JtYW5jZV9zY2hlbWEuZXJyb3JfbG9nLgBOb25lIG9mIHRoZSBsb2ctc2lua3Mgc2VsZWN0ZWQgaW4gQEBnbG9iYWwubG9nX2Vycm9yX3NlcnZpY2VzIHN1cHBvcnRzIHdyaXRpbmcgdG8gdGhlIHBlcmZvcm1hbmNlIHNjaGVtYS4gVGhlIHNlcnZlciB3aWxsIG5vdCBiZSBhYmxlIHRvIG1ha2UgdGhlIGN1cnJlbnQgcnVucycgZXJyb3IgZXZlbnRzIGF2YWlsYWJsZSBpbiBwZXJmb3JtYW5jZV9zY2hlbWEuZXJyb3JfbG9nLiBUbyBjaGFuZ2UgdGhpcywgYWRkIGEgbG9nLXNpbmsgdGhhdCBzdXBwb3J0cyB0aGUgcGVyZm9ybWFuY2Ugc2NoZW1hIHRvIEBAZ2xvYmFsLmxvZ19lcnJvcl9zZXJ2aWNlcy4AQEBnbG9iYWwubG9nX2Vycm9yX3NlcnZpY2VzIGxpc3RzIG1vcmUgdGhhbiBvbmUgbG9nLWZpbHRlciBzZXJ2aWNlLiBUaGlzIGlzIGRpc2NvdXJhZ2VkIGFzIGl0IHdpbGwgbWFrZSBpdCBoYXJkIHRvIHVuZGVyc3RhbmQgd2hpY2ggcnVsZSBpbiB3aGljaCBmaWx0ZXIgYWZmZWN0ZWQgYSBsb2ctZXZlbnQuAENvdWxkIG5vdCBvcGVuIGZpbGUgJyVzJyBmb3IgZXJyb3IgbG9nZ2luZyVzJXMAVXNlciAlLjI1NnMgaXMgcmVmZXJlbmNlZCBhcyBhIGRlZmluZXIgYWNjb3VudCBpbiAlcy4AT3BlcmF0aW9uICVzIGZhaWxlZCBmb3IgJS4yNTZzIGFzIGl0IGlzIHJlZmVyZW5jZWQgYXMgYSBkZWZpbmVyIGFjY291bnQgaW4gJXMuAERlY2ltYWwgbnVtYmVyIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyB0b28gbGFyZ2UuAFRoZSB2YXJpYWJsZSAiJXMiIGhhcyBhIG5vbi1pbnRlZ2VyIGJhc2VkIHR5cGUAUmVhZHMgd2l0aCBzZXJpYWxpemFibGUgaXNvbGF0aW9uL1NFTEVDVCBGT1IgU0hBUkUgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIEFDTCB0YWJsZXMuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXBkYXRlcyBhIHRhYmxlIGRlcGVuZGluZyBvbiBBQ0wgdGFibGUgcmVhZCBvcGVyYXRpb24uIEFzIHN0b3JhZ2UgZW5naW5lIHJvdyBsb2NrcyBhcmUgc2tpcHBlZCBmb3IgQUNMIHRhYmxlLCBpdCBtYXkgbm90IGhhdmUgc2FtZSBlZmZlY3Qgb24gc291cmNlIGFuZCByZXBsaWNhLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBNb25pdG9yIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgTW9uaXRvciB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AVGhlIFJlcGxpY2EgTW9uaXRvciB0aHJlYWQgZmFpbGVkIHRvIHN0YXJ0LgBSZXBsaWNhdGlvbiBjYW5ub3Qgc3RhcnQlLjE5MnMgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPiBhcyB0aGlzIHNlcnZlciB1c2VzIEBAR0xPQkFMLkdUSURfTU9ERSA8PiBPTi4AVGhlIG9wdGlvbnMgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4gYW5kIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSBAQEdMT0JBTC5HVElEX01PREUgPD4gT04uAFRoZSB2YWx1ZSBvZiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgd2lsbCBvbmx5IHRha2UgZWZmZWN0IGZvciBjaGFubmVscyBydW5uaW5nIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPD4gT0ZGLgBVc2luZyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyBjcmVhdGVzIGxpbWl0YXRpb25zIG9uIHRoZSByZXBsaWNhdGlvbiB0b3BvbG9neSAtIHlvdSBjYW5ub3QgZmFpbCBvdmVyIGJldHdlZW4gZG93bnN0cmVhbSBhbmQgdXBzdHJlYW0gc2VydmVycy4gT25seSB1c2UgdGhpcyBvcHRpb24gaWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGVuYWJsZSBHVElEcyBvbiB0aGUgc291cmNlLCBmb3IgaW5zdGFuY2UsIGJlY2F1c2Ugb2YgbGFjayBvZiBwZXJtaXNzaW9ucy4gSWYgcG9zc2libGUsIHVzZSB0aGUgcHJvY2VkdXJlIGZvciBlbmFibGluZyBHVElEIHRyYW5zYWN0aW9ucyBvbmxpbmUgaW5zdGVhZCwgYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgBXQUlUX1VOVElMX1NRTF9USFJFQURfQUZURVJfR1RJRFMgY2Fubm90IGJlIHVzZWQgb24gYSBjaGFubmVsIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPgBUaGUgU1FMX0FGVEVSX0dUSURTIG9yIFNRTF9CRUZPUkVfR1RJRFMgY2xhdXNlcyBmb3IgU1RBUlQgUkVQTElDQSBjYW5ub3QgYmUgdXNlZCB3aGVuIHRoZSByZXBsaWNhdGlvbiBjaGFubmVsIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPi4AUmVwbGljYXRpb24gJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IHdoZXJlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAFRoZSBncm91cF9yZXBsaWNhdGlvbl9yZWNvdmVyeSBjaGFubmVsIGlzIHN0aWxsIHJ1bm5pbmcsIG1vc3QgbGlrZWx5IGl0IGlzIHdhaXRpbmcgZm9yIGEgZGF0YWJhc2UvdGFibGUgbG9jaywgd2hpY2ggaXMgcHJldmVudGluZyB0aGUgY2hhbm5lbCBmcm9tIHN0b3BwaW5nLiBQbGVhc2UgY2hlY2sgZGF0YWJhc2UvdGFibGUgbG9ja3MsIGluY2x1ZGluZyB0aGUgb25lcyBjcmVhdGVkIGJ5IGJhY2t1cCB0b29scy4AQVVUT0VYVEVORF9TSVpFIHNob3VsZCBiZSBhIG11bHRpcGxlIG9mICV1TQBJbm5vREI6ICIlcyIgbm90IGFsbG93ZWQgd2l0aCBnZW5lcmFsIHRhYmxlc3BhY2VzAEFVVE9FWFRFTkRfU0laRSB2YWx1ZSBzaG91bGQgYmUgYmV0d2VlbiAldU0gYW5kICV1TQBBVVRPRVhURU5EX1NJWkUgY2xhdXNlIGlzIG5vdCB2YWxpZCBmb3IgJXMgdGFibGVzcGFjZS4AVXNlciBhY2NvdW50ICVzIGlzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZ3JhbnRlZCB0byB0aGUgcm9sZSAlcy4gVGhlIEdSQU5UIHdvdWxkIGNyZWF0ZSBhIGxvb3AAQSB0YWJsZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHZpc2libGUgY29sdW1uLgBDb21wcmVzc2lvbiBmYWlsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGVycm9yIDogJXMAVGhlIHBhcmFtZXRlciBuZXR3b3JrX25hbWVzcGFjZSBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4gUGxlYXNlIHVzZSB0aGUgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBjb21tYW5kIHRvIHNldCBjaGFubmVsIG5ldHdvcmtfbmFtZXNwYWNlIHBhcmFtZXRlci4AVGhlIGNsaWVudCB3YXMgZGlzY29ubmVjdGVkIGJ5IHRoZSBzZXJ2ZXIgYmVjYXVzZSBvZiBpbmFjdGl2aXR5LiBTZWUgd2FpdF90aW1lb3V0IGFuZCBpbnRlcmFjdGl2ZV90aW1lb3V0IGZvciBjb25maWd1cmluZyB0aGlzIGJlaGF2aW9yLgBJbnZhbGlkIGNhc3QgZnJvbSAlcyB0byAlcy4ASW52YWxpZCBjYXN0IGZyb20gJXMgdG8gJXMuIEEgcG9seWdvbiByaW5nIGlzIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24uAEFyZ3VtZW50cyB0byBmdW5jdGlvbiAlcyBjb250YWlucyBnZW9tZXRyaWVzIHdpdGggZGlmZmVyZW50IFNSSURzOiAldSBhbmQgJXUuIEFsbCBnZW9tZXRyaWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBTUklELgBLZXlyaW5nIHJlbG9hZCBmYWlsZWQuIFBsZWFzZSBjaGVjayBlcnJvciBsb2cgZm9yIG1vcmUgZGV0YWlscy4AVGFibGVzcGFjZSAnJS4xOTJzJyBpcyBpbnZhbGlkIGZvciBTREkgb3BlcmF0aW9ucy4AVmFsdWUgdG9vIGxvbmcgc2V0dGluZyBTT1VSQ0VfQ09NUFJFU1NJT05fQUxHT1JJVEhNUyBvcHRpb24gdG8gYSAlZCBjaGFycyBsb25nIHN0cmluZyBmb3IgY2hhbm5lbCAnJS4xOTJzJy4AQSBkZXByZWNhdGVkIFRMUyB2ZXJzaW9uICVzIGlzIGVuYWJsZWQgZm9yIGNoYW5uZWwgJXMuIFBsZWFzZSB1c2UgVExTdjEuMiBvciBoaWdoZXIuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuAFJlcGxpY2F0aW9uICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiB3aGVyZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZABVbmFibGUgdG8gcmV0cmlldmUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCB2YXJpYWJsZSBkdXJpbmcgc2VydmVyIGNoZWNrcyBvbiByZXBsaWNhdGlvbiBvcGVyYXRpb25zLgBCb3RoIGF1ZGl0X2xvZ19tYXhfc2l6ZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgYXJlIHNldCB0byBub24temVyby4gYXVkaXRfbG9nX21heF9zaXplIHRha2VzIHByZWNlZGVuY2UgYW5kIGF1ZGl0X2xvZ19wcnVuZV9zZWNvbmRzIGlzIGlnbm9yZWQAYXVkaXRfbG9nX3JvdGF0ZV9vbl9zaXplIGlzIG5vdCBncmFudWxhciBlbm91Z2ggZm9yIHRoZSB2YWx1ZSBvZiBhdWRpdF9sb2dfbWF4X3NpemUgc3VwcGxpZWQuIFNob3VsZCBiZSBhdCBsZWFzdCAlZCB0aW1lcyBzbWFsbGVyLgBDcmVhdGUvQWx0ZXIgdXNlciBoYXMgZmFpbGVkLCBDb25maWd1cmVkIHVzZXIgcmVhbG0gYXMgYXV0aGVudGljYXRpb24gc3RyaW5nIGlzIGVtcHR5LCBQbGVhc2UgbWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSBhdXRoZW50aWNhdGlvbiBzdHJpbmcgYXMgdXNlciByZWFsbS4AQ2Fubm90IGluc3RhbGwgdGhlICUuMTkycyBwbHVnaW4gd2hlbiB0aGUgJS4xOTJzIHBsdWdpbiBpcyBpbnN0YWxsZWQuACVkIGVycm9yIGxvZ2dpbmcgY29tcG9uZW50KHMpIGZhaWxlZCB0byBmbHVzaC4gRm9yIGZpbGUtYmFzZWQgbG9ncyB0aGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgcGF0aCBvciBwZXJtaXNzaW9ucyBvZiB0aGUgbG9nLWZpbGUgaGF2ZSBjaGFuZ2VkLiBGYWlsdXJlIHRvIGZsdXNoIGZpbGVkLWJhc2VkIGxvZ3MgbWF5IGFmZmVjdCBsb2ctcm90YXRpb24uAFRoZSB1bnRpbCBjbGF1c2UgU1FMX0FGVEVSX01UU19HQVBTIGlzIGJlaW5nIHVzZWQgZm9yIGNoYW5uZWwgJyUuMTkycycgd2hlbiBHVElEX01PREUgPSBPTiBhbmQgU09VUkNFX0FVVE9fUE9TSVRJT049MSBtZWFuaW5nIHRoZSBzZXJ2ZXIgZGlkIG5vdCBjb21wdXRlIGludGVybmFsbHkgd2hhdCBnYXBzIG1heSBleGlzdCBpbiB0aGUgcmVsYXkgbG9nIHRyYW5zYWN0aW9uIGV4ZWN1dGlvbi4gVG8gY2xvc2UgYW55IGV4ZWN1dGlvbiBnYXBzIHVzZSBlaXRoZXIgdGhlIFNRTF9CRUZPUkVfR1RJRFMgb3IgU1FMX0FGVEVSX0dUSURTIHVudGlsIGNsYXVzZS4ASW52YWxpZCB0YXJnZXQgZm9yIGFzc2lnbm1lbnQgaW4gSU5TRVJUIG9yIFVQREFURSBzdGF0ZW1lbnQgJyUuMTkycycuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gYSBHcm91cCBSZXBsaWNhdGlvbiBzZWNvbmRhcnkgbWVtYmVyLCBpdCBtdXN0IGJlIGRvbmUgb24gdGhlIGdyb3VwIHByaW1hcnkuAFVuYWJsZSB0byBwcm9wYWdhdGUgdGhlIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgdmFsdWUgZm9yIGNoYW5uZWwgJyVzJyB0byBncm91cCByZXBsaWNhdGlvbiBtZW1iZXJzLiBQbGVhc2UgcmV0cnkgdGhlIG9wZXJhdGlvbi4AYXVkaXRfbG9nX2Zvcm1hdF91bml4X3RpbWVzdGFtcCBpcyBhcHBsaWNhYmxlIG9ubHkgd2hlbiBhdWRpdF9sb2dfZm9ybWF0ID0gSlNPTi4ASW52YWxpZCBwbHVnaW4gIiVzIiBzcGVjaWZpZWQgYXMgJWQgZmFjdG9yIGR1cmluZyAiJXMiLgBJREVOVElGSUVEIEJZIGNsYXVzZSBkdXJpbmcgIiVzIiBub3Qgc3VwcG9ydGVkIGZvciBwbHVnaW4gIiVzIi4AVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgcGx1Z2luICIlcyIuAEF1dGhlbnRpY2F0aW9uIHBsdWdpbiByZXF1aXJlcyByZWdpc3RyYXRpb24uIFBsZWFzZSByZWZlciBBTFRFUiBVU0VSIHN5bnRheCBvciBzZXQgLS1maWRvLXJlZ2lzdGVyLWZhY3RvciBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGRvIHJlZ2lzdHJhdGlvbi4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBleGlzdHMuIFBsZWFzZSBkbyBBTFRFUiBVU0VSLi4uIERST1AgJWQgZmFjdG9yIGJlZm9yZSBkb2luZyB0aGlzIG9wZXJhdGlvbiBPUiBkbyBBTFRFUiBVU0VSLi4uIE1PRElGWSAlZCBmYWN0b3IuLi4gdG8gbW9kaWZ5IGV4aXN0aW5nICVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QuACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgZG9lc24ndCBleGlzdC4gUGxlYXNlIGRvIEFMVEVSIFVTRVIuLi4gQUREICVkIGZhY3Rvci4uLiBiZWZvcmUgZG9pbmcgdGhpcyBvcGVyYXRpb24uACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgZG9lcyBub3QgbWF0Y2ggYWdhaW5zdCBhdXRoZW50aWNhdGlvbiBwb2xpY3kuIFBsZWFzZSByZWZlciBAQGF1dGhlbnRpY2F0aW9uX3BvbGljeSBzeXN0ZW0gdmFyaWFibGUuAFRoZSByZWdpc3RyYXRpb24gZm9yICVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgaXMgYWxyZWFkeSBjb21wbGV0ZWQuIFlvdSBjYW5ub3QgcGVyZm9ybSByZWdpc3RyYXRpb24gbXVsdGlwbGUgdGltZXMuAFRoZSByZWdpc3RyYXRpb24gb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGZvciB1c2VyICclcydAJyVzJy4gVGhlIG9wZXJhdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgaW4gdXNlcidzIG93biBzZXNzaW9uLgBBdXRoZW50aWNhdGlvbiBwbHVnaW4ncyByZWdpc3RyYXRpb24gZmFpbGVkLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIHNob3VsZCBiZSBhZGRlZCBiZWZvcmUgJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZC4AQXV0aGVudGljYXRpb24gZmFjdG9yIHNob3VsZCBiZSBkaWZmZXJlbnQuAFRoZSBvcGVyYXRpb24gIiVzIiBjYW5ub3QgYmUgcGVyZm9ybWVkIGZvciB1c2VyICclcydAJyVzJyBjb25maWd1cmVkIHRvIGNvbm5lY3Qgd2l0aG91dCBhIHBhc3N3b3JkLgBHVElEX09OTFkgY2Fubm90IGJlIGVuYWJsZWQgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycuIFlvdSBuZWVkIEdUSURfTU9ERSA9IE9OLCBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDEgYW5kIFJFUVVJUkVfUk9XX0ZPUk1BVCA9IDEuAFJFUVVJUkVfUk9XX0ZPUk1BVCBjYW5ub3QgYmUgZGlzYWJsZWQgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2hlbiBHVElEX09OTFk9MS4AU09VUkNFX0FVVE9fUE9TSVRJT04gY2Fubm90IGJlIGRpc2FibGVkIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdoZW4gR1RJRF9PTkxZPTEuAFdoZW4gZGlzYWJsaW5nIEdUSURfT05MWSBhbmQgU09VUkNFX0FVVE9fUE9TSVRJT04gRk9SIENIQU5ORUwgJyUuMTkycycgeW91IG11c3QgcHJvdmlkZSBTT1VSQ0VfTE9HX0ZJTEUgYW5kIFNPVVJDRV9MT0dfUE9TIGFzIHNvdXJjZSBwb3NpdGlvbnMgYXJlIGludmFsaWQuAFdoZW4gZGlzYWJsaW5nIFNPVVJDRV9BVVRPX1BPU0lUSU9OIEZPUiBDSEFOTkVMICclLjE5MnMnIHlvdSBtdXN0IHByb3ZpZGUgU09VUkNFX0xPR19GSUxFIGFuZCBTT1VSQ0VfTE9HX1BPUyBhcyBzb3VyY2UgcG9zaXRpb25zIGFyZSBpbnZhbGlkLgBXaGVuIGNvbmZpZ3VyaW5nIGEgZ3JvdXAgcmVwbGljYXRpb24gY2hhbm5lbCB5b3UgbXVzdCBkbyBpdCB3aGVuIEdUSURfTU9ERSA9IE9OLgBSZXBsaWNhdGlvbiBjYW5ub3Qgc3RhcnQlLjE5MnMgd2l0aCBHVElEX09OTFkgPSAxIGFzIHRoaXMgc2VydmVyIHVzZXMgQEBHTE9CQUwuR1RJRF9NT0RFIDw+IE9OLgBUaGUgcmVwbGljYXRpb24gcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgbWF5IGJlIG91dC1vZi1kYXRlIG9uIGNoYW5uZWwgJyUuMTkycycsIGR1ZSB0byB0aGUgdXNlIG9mIEdUSURfT05MWT0xLiBUaGUgb3V0LW9mLWRhdGUgcG9zaXRpb25zIGNhbiBzdGlsbCBiZSB1c2VkIGluIHNvbWUgY2FzZXMgc28sIGluIG9yZGVyIHRvIHVwZGF0ZSB0aGVtLCB3ZSBzdWdnZXN0IHRoYXQgeW91IHN0YXJ0IHRoZSByZXBsaWNhdGlvbiB0byByZWNlaXZlIGFuZCBhcHBseSBhdCBsZWFzdCBvbmUgdHJhbnNhY3Rpb24sIHdoaWNoIHdpbGwgc2V0IHRoZSBwb3NpdGlvbnMgdG8gdmFsaWQgdmFsdWVzLgBTU0wgZmlwcyBtb2RlIGVycm9yOiAlcwAlcz0lbGx1IGlzIG91dHNpZGUgdGhlIHZhbGlkIHJhbmdlIFslbGx1LCVsbHVdLiAlbGx1IHdpbGwgYmUgdXNlZC4ATUFUQ0ggZG9lcyBub3Qgc3VwcG9ydCBST0xMVVAgY29sdW1ucy4ATWlzc2luZyBsb2NhbGUgcmVzb3VyY2UgaW4gcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkuAFJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5IHVzZWQgZGVmYXVsdCAocm9vdCkgbG9jYWxlLgBNaXNzaW5nIGRhdGEgZmlsZSBpbiByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeS4AJyUtLjY0cycgaXMgYSBjb2xsYXRpb24gb2YgdGhlIGRlcHJlY2F0ZWQgY2hhcmFjdGVyIHNldCAlcy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nICVzIHdpdGggYW4gYXBwcm9wcmlhdGUgY29sbGF0aW9uIGluc3RlYWQuAFRoZSAlcyB3YXMgY2FsbGVkIHdoZW4gdGhlcmUgd2FzIGFscmVhZHkgYW5vdGhlciBjb25jdXJyZW50IGNhbGwgdG8gdGhpcyBwcm9jZWR1cmUuIE5vIGFjdGlvbiB3YXMgdGFrZW4uIFdhaXQgZm9yIG90aGVyIGNhbGxzIHRvICVzIHRvIGZpbmlzaCBiZWZvcmUgcmV0cnlpbmcuAENvbm5lY3Rpb24gY2xvc2VkLiBHbG9iYWwgY29ubmVjdGlvbiBtZW1vcnkgbGltaXQgJWxsdSBieXRlcyBleGNlZWRlZC4gQ29uc3VtZWQgJWxsdSBieXRlcy4AQ29ubmVjdGlvbiBjbG9zZWQuIENvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAE5lZWQgdG8gcmVidWlsZCB0aGUgdGFibGUgdG8gY2hhbmdlIGNvbHVtbiB0eXBlAFRoaXMgZnVuY3Rpb24gJyUtLjE5MnMnIGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgbG9hZGFibGUgZnVuY3Rpb24gKFVERikuIFRvIGludm9rZSB0aGUgc3RvcmVkIGZ1bmN0aW9uLCBpdCBpcyBuZWNlc3NhcnkgdG8gcXVhbGlmeSBpdCB3aXRoIHRoZSBzY2hlbWEgbmFtZS4AQ291bGQgbm90IHB1cmdlIGJpbmFyeSBsb2dzIHNpbmNlIGFub3RoZXIgc2Vzc2lvbiBpcyBleGVjdXRpbmcgTE9DSyBJTlNUQU5DRSBGT1IgQkFDS1VQLiBXYWl0IGZvciB0aGF0IHNlc3Npb24gdG8gcmVsZWFzZSB0aGUgbG9jay4AVG9vIG1hbnkgd2luZG93cyBpbiBTRUxFQ1Q6ICVkLiBNYXhpbXVtIGFsbG93ZWQgaXMgJWQuIFVzZSBuYW1lZCB3aW5kb3dzIHRvIHNoYXJlIHdpbmRvd3MgYmV0d2VlbiB3aW5kb3cgZnVuY3Rpb25zLgAlcwBDb21tZW50IGZvciAlcyAnJXMnIGNvbnRhaW5zIGFuIGludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJy4ARGVmaW5pdGlvbiBvZiAlcyAnJS0uMTkycy4lLS4xOTJzJyBjb250YWlucyBhbiBpbnZhbGlkICVzIGNoYXJhY3RlciBzdHJpbmc6ICclLjY0cycuAENhbid0IGV4ZWN1dGUgdGhlIGdpdmVuIGNvbW1hbmQgd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUID09ICdVVUlEOk5VTUJFUicuAFhBOiBUZW1wb3JhcnkgdGFibGVzIGNhbm5vdCBiZSBhY2Nlc3NlZCBpbnNpZGUgWEEgdHJhbnNhY3Rpb25zIHdoZW4geGFfZGV0YWNoX29uX3ByZXBhcmU9T04ATWF4aW11bSByb3cgdmVyc2lvbnMgcmVhY2hlZCBmb3IgdGFibGUgJXMuIE5vIG1vcmUgY29sdW1ucyBjYW4gYmUgYWRkZWQgb3IgZHJvcHBlZCBpbnN0YW50bHkuIFBsZWFzZSB1c2UgQ09QWS9JTlBMQUNFLgBDb2x1bW4gY2FuJ3QgYmUgYWRkZWQgd2l0aCBBTEdPUklUSE09SU5TVEFOVCBhcyBhZnRlciB0aGlzIG1heCBwb3NzaWJsZSByb3cgc2l6ZSBjcm9zc2VzIG1heCBwZXJtaXNzaWJsZSByb3cgc2l6ZS4gVHJ5IEFMR09SSVRITT1JTlBMQUNFL0NPUFkuAEFsbCBxdWVyaWVzIGhhdmUgYmVlbiBibG9ja2VkIHdoaWxlIGZ1bmN0aW9uICdncm91cF9yZXBsaWNhdGlvbl9zZXRfYXNfcHJpbWFyeSgpJyBpcyBleGVjdXRpbmcuIFBsZWFzZSByZWZlciB0aW1lb3V0IHBhcmFtZXRlciBvZiBmdW5jdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fc2V0X2FzX3ByaW1hcnkoKScuAERlbGltaXRlciAnJXMnIGluIHBvc2l0aW9uICVkIGluIGRhdGV0aW1lIHZhbHVlICclcycgYXQgcm93ICVkIGlzIGRlcHJlY2F0ZWQuIFByZWZlciB0aGUgc3RhbmRhcmQgJyVjJy4ARGVsaW1pdGVyICclcycgaW4gcG9zaXRpb24gJWQgaW4gZGF0ZXRpbWUgdmFsdWUgJyVzJyBhdCByb3cgJWQgaXMgc3VwZXJmbHVvdXMgYW5kIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSByZW1vdmUuAENhbm5vdCBwZXJzaXN0IFNFTlNJVElWRSBzeXN0ZW0gdmFyaWFibGUgJyVzJyBiZWNhdXNlIGtleXJpbmcgY29tcG9uZW50IHN1cHBvcnQgaXMgdW5hdmFpbGFibGUuAFNFTlNJVElWRSBzeXN0ZW0gdmFyaWFibGUgJyVzJyB3YXMgcGVyc2lzdGVkIHdpdGhvdXQgZW5jcnlwdGlvbi4gQ29uc2lkZXIgcmVzdGFydGluZyBzZXJ2ZXIgd2l0aCBrZXlyaW5nIGNvbXBvbmVudCBzdXBwb3J0IHRvIHBlcnNpc3QgU0VOU0lUSVZFIHZhcmlhYmxlcyBzZWN1cmVseS4AVHJpZ2dlciAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMgb24gdGhlIHRhYmxlICclLS4xOTJzJy4nJS0uMTkycycuAFRyaWdnZXIgJyUtLjE5MnMnLiclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cyBvbiBhIGRpZmZlcmVudCB0YWJsZS4gVGhlICdJRiBOT1QgRVhJU1RTJyBjbGF1c2UgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRyaWdnZXJzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2FtZSB0YWJsZS4AVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBuYXRpdmUgZnVuY3Rpb24uIFRoZSAnSUYgTk9UIEVYSVNUUycgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2hpbGUgY3JlYXRpbmcgYSBsb2FkYWJsZSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgYSBuYXRpdmUgZnVuY3Rpb24uAFNFVCBQQVNTV09SRCBoYXMgbm8gc2lnbmlmaWNhbmNlIGZvciB1c2VyICclcydAJyVzJyBhcyB0aGUgYXV0aGVudGljYXRpb24gbWV0aG9kIHVzZWQgZG9lc24ndCBzdG9yZSBhdXRoZW50aWNhdGlvbiBkYXRhIGluIHRoZSBNeVNRTCBzZXJ2ZXIuIFBsZWFzZSBjb25zaWRlciB1c2luZyBBTFRFUiBVU0VSIGluc3RlYWQgaWYgeW91IHdhbnQgdG8gY2hhbmdlIGF1dGhlbnRpY2F0aW9uIHBhcmFtZXRlcnMuAENhbm5vdCByZWNvdmVyIGZyb20gZGV0ZWN0X29ubHkgZG91Ymxld3JpdGUgYnVmZmVyIGFzIHBhZ2UgJXUgZnJvbSBiYXRjaCBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHRlZC4ARGF0YWJhc2UgcGFnZSBjb3JydXB0aW9uIG9mIHRhYmxlc3BhY2UgJXMgc3BhY2VfaWQ6ICV1IHBhZ2VfbnVtOiAldS4gQ2Fubm90IHJlY292ZXIgaXQgZnJvbSB0aGUgZG91Ymxld3JpdGUgYnVmZmVyIGJlY2F1c2UgaXQgd2FzIHdyaXR0ZW4gaW4gZGV0ZWN0X29ubHktZG91Ymxld3JpdGUgbW9kZS4ATGF0aXR1ZGUgb2Ygb3JpZ2luIG11c3QgYmUgd2l0aGluIFstOTAsIDkwXSBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQuAExvbmdpdHVkZSBvZiBvcmlnaW4gbXVzdCBiZSB3aXRoaW4gKC0xODAsIDE4MF0gZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gZm9yIFNSSUQgJXUgY29udGFpbnMgdW51c2VkIHByb2plY3Rpb24gcGFyYW1ldGVyICIlcyIuAEZhaWxlZCB0byBnZW5lcmF0ZSBpbnZpc2libGUgcHJpbWFyeSBrZXkuIENvbHVtbiAnbXlfcm93X2lkJyBhbHJlYWR5IGV4aXN0cy4ARmFpbGVkIHRvIGdlbmVyYXRlIGludmlzaWJsZSBwcmltYXJ5IGtleS4gQXV0by1pbmNyZW1lbnQgY29sdW1uIGFscmVhZHkgZXhpc3RzLgBBbHRlcmluZyBnZW5lcmF0ZWQgaW52aXNpYmxlIHByaW1hcnkga2V5IGNvbHVtbiAnbXlfcm93X2lkJyBpcyBub3QgYWxsb3dlZC4AUGxlYXNlIGRyb3AgcHJpbWFyeSBrZXkgY29sdW1uIHRvIGJlIGFibGUgdG8gZHJvcCBnZW5lcmF0ZWQgaW52aXNpYmxlIHByaW1hcnkga2V5LgBHZW5lcmF0aW5nIGFuIGludmlzaWJsZSBwcmltYXJ5IGtleSBmb3IgYSB0YWJsZSBjcmVhdGVkIHVzaW5nIENSRUFURSBUQUJMRSAuLi4gU0VMRUNUIC4uLiBpcyBkaXNhbGxvd2VkIHdoZW4gYmlubG9nX2Zvcm1hdD1TVEFURU1FTlQuIEl0IGNhbm5vdCBiZSBndWFyYW50ZWVkIHRoYXQgdGhlIFNFTEVDVCByZXRyaWV2ZXMgcm93cyBpbiB0aGUgc2FtZSBvcmRlciBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuIFRoZXJlZm9yZSwgaXQgY2Fubm90IGJlIGd1YXJhbnRlZWQgdGhhdCB0aGUgdmFsdWUgZ2VuZXJhdGVkIGZvciB0aGUgZ2VuZXJhdGVkIGltcGxpY2l0IHByaW1hcnkga2V5IGNvbHVtbiB3aWxsIGJlIHRoZSBzYW1lIG9uIHNvdXJjZSBhbmQgcmVwbGljYSBmb3IgYWxsIHJvd3MuIFVzZSBiaW5sb2dfZm9ybWF0PVJPVyBvciBNSVhFRCB0byBleGVjdXRlIHRoaXMgc3RhdGVtZW50LgBUaGUgb3B0aW9uIGV4cGlyZV9sb2dzX2RheXMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBvcHRpb24gYmlubG9nX2V4cGlyZV9sb2dzX3NlY29uZHMuIFRvIHNldCBvbmUsIGZpcnN0IHVuc2V0IHRoZSBvdGhlciBieSBzZXR0aW5nIGl0IHRvIDAuAFJlY3Vyc2l2ZSB0YWJsZSByZWZlcmVuY2UgaW4gRVhDRVBUIG9yIElOVEVSU0VDVCBvcGVyYW5kIGlzIG5vdCBhbGxvd2VkLgBFcnJvciB3aGVuIHRyeWluZyB0byBmZXRjaCBpbmZvcm1hdGlvbiBmcm9tIHNlY3VyaXR5IGNvbnRleHQgb2JqZWN0LCB3aGVuIHRyeWluZyB0byBjb25uZWN0IHRoZSBzZXJ2ZXIuAEVycm9yIGluIGNvbW1hbmQgc2VydmljZSBiYWNrZW5kIGludGVyZmFjZSwgYmVjYXVzZSBvZiA6ICIlcyIAVGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3b3VsZCBuZWVkIEZJTEUgcHJpdmlsZWdlIHRvIGV4ZWN1dGUgYSBMT0FEIERBVEEgSU5GSUxFIHN0YXRlbWVudCByZXBsaWNhdGVkIGluIHN0YXRlbWVudCBmb3JtYXQuIENvbnNpZGVyIHVzaW5nIGJpbmxvZ19mb3JtYXQ9Uk9XIG9uIHNvdXJjZS4gSWYgdGhlIHJlcGxpY2F0ZWQgZXZlbnRzIGFyZSB0cnVzdGVkLCByZWNvdmVyIGZyb20gdGhlIGZhaWx1cmUgYnkgdGVtcG9yYXJpbHkgZ3JhbnRpbmcgRklMRSB0byB0aGUgUFJJVklMRUdFX0NIRUNLU19VU0VSLgBUaGUgJ1NFVCBHTE9CQUwgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycz0lcycgY29tbWFuZCBlbmNvdW50ZXJlZCBhIGZhaWx1cmUuICVzAFVzaW5nICVzIGFzIHVucXVvdGVkIGlkZW50aWZpZXIgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBxdW90ZXMgb3IgcmVuYW1lIHRoZSBpZGVudGlmaWVyLgBNYXggbnVtYmVyIG9mIGR1cGxpY2F0ZSByb3dzIGluIElOVEVSU0VDVCBBTEwgZXhjZWVkZWQuAFF1ZXJ5IHRocmVhZHMgY291bnQoJXUpIGV4Y2VlZHMgdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCgldSkgcGVyIGdyb3VwLiBQbGVhc2UgdXNlIHF1ZXJ5IHRocmVhZHMgY291bnQgcGVyIGdyb3VwIHNtYWxsZXIgb3IgZXF1YWwgdG8gbWF4IHRyYW5zYWN0aW9uIHRocmVhZHMgbGltaXQgcGVyIGdyb3VwAEludmFsaWQgdGltZXN0YW1wIGZvcm1hdCBpbiAlcyB1ZGYAU0hBUEVfUFJFRElDVElPTiBVREYgJXMgZ290IGVycm9yIGJlY2F1c2Ugb2YgJXMuAEhlaWdodCBwYXJhbWV0ZXIgbXVzdCBiZSBub24gbmVnYXRpdmUuAFNjYWxpbmcgcGFyYW1ldGVyIG11c3QgYmUgbm9uIG5lZ2F0aXZlLgBab25lIHdpZHRoIHBhcmFtZXRlciBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxLTYwLgBMYXRpdHVkZSBvZiBvcmlnaW4gbXVzdCBiZSArLTkwIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdCwgaW4gUG9sYXIgU3RlcmVvZ3JhcGhpYyAodmFyaWFudCBBKSBwcm9qZWN0aW9uIG1ldGhvZCAoRVBTRzo5ODEwKS4AVGhlIGNsaWVudCBpcyB1c2luZyBhIGRlcHJlY2F0ZWQgQ0xJRU5UX05PX1NDSEVNQSBjbGllbnQgb3B0aW9uLiBDTElFTlRfTk9fU0NIRU1BIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBUYWJsZSAnJS0uMTkycycgaXMgbm90IGVtcHR5LgBUYWJsZSAnJS0uMTkycycgaGFzIG5vIHByaW1hcnkga2V5LgBUYWJsZSAnJS0uMTkycycgaXMgaW4gYSBzaGFyZWQgdGFibGVzcGFjZS4AVGFibGUgJyUtLjE5MnMnIGhhcyBpbmRleGVzIG90aGVyIHRoYW4gcHJpbWFyeSBrZXkuAFtJTiBQUklNQVJZIEtFWSBPUkRFUl0gc3BlY2lmaWVkIGJ1dCBkYXRhIG5vdCBzb3J0ZWQ6IExPQUQgQlVMSyBEQVRBIGludG8gdGFibGUgJyUtLjE5MnMnIGZhaWxlZDogJXMAQnVsayBleGVjdXRvciBlcnJvcjogJXMAQnVsayByZWFkZXIgZmFpbGVkIHRvIGluaXRpYWxpemUgbGliY3VybABCdWxrIHJlYWRlciBnb3QgbGliY3VybCBlcnJvcjogJXMAQnVsayByZWFkZXIgZ290IGVycm9yIHJlc3BvbnNlIGZyb20gc2VydmVyOiAlbGQAQnVsayByZWFkZXIgZ290IGVycm9yIGluIGNvbW11bmljYXRpb24gd2l0aCBzb3VyY2Ugc2VydmVyLCBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuAEJ1bGsgbG9hZGVyIGZhaWxlZCwgbXlzcWxfbG9hZC0+bG9hZCByZXR1cm5lZCBhbiBlcnJvciwgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgBDU1YgY29sdW1uIHRvbyBiaWcgZm9yIGxlZnRvdmVyIGJ1ZmZlci4AQnVsayBsb2FkZXIgY29tcG9uZW50IGVycm9yOiAlcwBUaGUgZmlyc3QgZmlsZSBiZWluZyBsb2FkZWQgY29udGFpbmVkIGxlc3MgbGluZXMgdGhhbiB0aGUgaWdub3JlIGNsYXVzZQBNaXNzaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gQWRkIE9QVElPTkFMTFkgdG8gdGhlIEVOQ0xPU0VEIEJZIGNsYXVzZSB0byBhbGxvdyB0aGlzIGlucHV0LgBUaGUgbnVtYmVyIG9mIGlucHV0IGNvbHVtbnMgdGhhdCBuZWVkIHRvIGJlIGJ1ZmZlcmVkIGZvciBwYXJzaW5nIGV4Y2VlZGVkIHByZWRlZmluZWQgYnVmZmVyIG1heCBzaXplIGZvciBmaWxlICclcycuAFRoZSBjb2x1bW4gZGF0YSB0aGF0IG5lZWRlZCB0byBiZSBjb3BpZWQgZHVlIHRvIGVzY2FwZWQgY2hhcmFjdGVycyBleGNlZWRlZCB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJuYWwgY29weSBidWZmZXIgZm9yIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIERhdGEgZm9yIHNvbWUgY29sdW1ucyBpcyBtaXNzaW5nLgBVbmV4cGVjdGVkIHJvdyB0ZXJtaW5hdG9yIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGVuZGluZyBFTkNMT1NFRCBCWSBjaGFyYWN0ZXIgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBOVUxMIGVzY2FwZSAoTikgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBjb2x1bW4gdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycgcmVzdWx0aW5nIGluIGluY29tcGxldGUgZXNjYXBlIHNlcXVlbmNlLgBMT0FEIEJVTEsgREFUQSBpbnRvIHRhYmxlICclLS4xOTJzJyBmYWlsZWQ6ICVzAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgY29sdW1uICclLS4xOTJzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnAE5VTEwgc3VwcGxpZWQgdG8gTk9UIE5VTEwgY29sdW1uICclcycgYXQgcm93ICVsZCBpbiBmaWxlICclLS4xOTJzJwBPbiBhIEdyb3VwIFJlcGxpY2F0aW9uIGNoYW5uZWwsIHNldHRpbmcgUkVRVUlSRV9UQUJMRV9QUklNQVJZX0tFWV9DSEVDSyB0byAnR0VORVJBVEUnIGlzIG5vdCBhbGxvd2VkLgBDYW5ub3QgY2hhbmdlIHRoZSAnJXMnIHN5c3RlbSB2YXJpYWJsZSBpbiByZWFkLW9ubHkgbW9kZS4AQ29sdW1uIGNhbid0IGJlIGFkZGVkIG9yIGRyb3BwZWQgd2l0aCBBTEdPUklUSE09SU5TVEFOVCBhcyBlaXRoZXIgbWF4IHBvc3NpYmxlIHJvdyBzaXplIGFscmVhZHkgY3Jvc3NlcyBtYXggcGVybWlzc2libGUgcm93IHNpemUgb3IgbWF5IGNyb3NzIGl0IGFmdGVyIGFkZC4gVHJ5IEFMR09SSVRITT1JTlBMQUNFL0NPUFkuAENvbHVtbiBjYW4ndCBiZSBhZGRlZCB0byAnJXMnIHdpdGggQUxHT1JJVEhNPUlOU1RBTlQgYW55bW9yZS4gUGxlYXNlIHRyeSBBTEdPUklUSE09SU5QTEFDRS9DT1BZLgBGYWlsZWQgdG8gc2V0IHBlcnNpc3RlZCBvcHRpb25zLgBUaGUgdmFsdWUgc3VwcGxpZWQgZm9yICVzIGluIHRoZSBTRVQgbGlzdCBjYW5ub3QgYmUgbnVsbABUaGUgYXNzaWdubWVudCBvZiAlcyBpbiBTRVQgZG9lc24ndCBtYXRjaCBhbnkgb2YgdGhlIHZhcmlhYmxlcyByZWdpc3RlcmVkIGJ5IHRoZSBjb21wb25lbnQocykAJyVzJyBpcyBhIHVzZXIgZGVmaW5lZCBjb2xsYXRpb24uIFVzZXIgZGVmaW5lZCBjb2xsYXRpb25zIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgYSBjb21waWxlZCBjb2xsYXRpb24gaW5zdGVhZC4AVXNlci1sZXZlbCBsb2NrIG5hbWUgJyUtLjE5MnMnIHNob3VsZCBub3QgZXhjZWVkICVkIGNoYXJhY3RlcnMuAEltbWVkaWF0ZWx5IHN0YXJ0aW5nIHRoZSB2ZXJzaW9uIGNvbW1lbnQgYWZ0ZXIgdGhlIHZlcnNpb24gbnVtYmVyIGlzIGRlcHJlY2F0ZWQgYW5kIG1heSBjaGFuZ2UgYmVoYXZpb3IgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGluc2VydCBhIHdoaXRlLXNwYWNlIGNoYXJhY3RlciBhZnRlciB0aGUgdmVyc2lvbiBudW1iZXIuAFRoZSBuZXcgcGFzc3dvcmQgbXVzdCBoYXZlIGF0IGxlYXN0ICcldScgY2hhcmFjdGVycyB0aGF0IGFyZSBkaWZmZXJlbnQgZnJvbSB0aGUgb2xkIHBhc3N3b3JkLiBJdCBoYXMgb25seSAnJXUnIGNoYXJhY3RlcihzKSBkaWZmZXJlbnQuIEZvciB0aGlzIGNvbXBhcmlzb24sIHVwcGVyY2FzZSBsZXR0ZXJzIGFuZCBsb3dlcmNhc2UgbGV0dGVycyBhcmUgY29uc2lkZXJlZCB0byBiZSBlcXVhbC4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gJXMAUGFyc2VyIHNhdzogJXMAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgYm9vdHN0cmFwIChlcnJubzogJWQpAFRyaWdnZXIgZm9yIHRhYmxlICclcycuJyVzJzogaW52YWxpZCAlcyB2YWx1ZSAoJXMpLgBXcm9uZyB0cmVlOiAlcwBFcnJvcjogSW52YWxpZCAlcwBTa2lwIHJlLXBvcHVsYXRpbmcgY29sbGF0aW9ucyBhbmQgY2hhcmFjdGVyIHNldHMgdGFibGVzIGluICVzJXNyZWFkLW9ubHkgbW9kZS4AVXNpbmcgZGF0YSBkaWN0aW9uYXJ5IHdpdGggdmVyc2lvbiAnJWQnLgBJbnN0YWxsZWQgZGF0YSBkaWN0aW9uYXJ5IHdpdGggdmVyc2lvbiAlZABEYXRhIERpY3Rpb25hcnkgdmVyc2lvbiAnJWQnIG5vdCBzdXBwb3J0ZWQuAEZhaWxlZCB0byBzZXQgc3lzbG9nIGZhY2lsaXR5IHRvICIlcyIsIHNldHRpbmcgdG8gIiVzIiAoJWQpIGluc3RlYWQuAENhbm5vdCBvcGVuICVzOyBjaGVjayBwcml2aWxlZ2VzLCBvciByZW1vdmUgc3lzZXZlbnRsb2cgZnJvbSAtLWxvZy1lcnJvci1zZXJ2aWNlcyEAIGVpdGhlciByZXN0YXJ0IHRoZSBxdWVyeSBsb2dnaW5nIGJ5IHVzaW5nICJTRVQgR0xPQkFMIFNMT1dfUVVFUllfTE9HPU9OIiBvcgAgZWl0aGVyIHJlc3RhcnQgdGhlIHF1ZXJ5IGxvZ2dpbmcgYnkgdXNpbmcgIlNFVCBHTE9CQUwgR0VORVJBTF9MT0c9T04iIG9yAEZhaWxlZCB0byB3cml0ZSB0byAlczogJXMAV2hpbGUgaW5pdGlhbGl6aW5nIGR1bXAgdGhyZWFkIGZvciByZXBsaWNhIHdpdGggJXMgPCVzPiwgZm91bmQgYSB6b21iaWUgZHVtcCB0aHJlYWQgd2l0aCB0aGUgc2FtZSAlcy4gU291cmNlIGlzIGtpbGxpbmcgdGhlIHpvbWJpZSBkdW1wIHRocmVhZCgldSkuAEd0aWQgdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIG9wZW5lZC4AU3lzdGVtIHNjaGVtYSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QuAEVycm9yIGluIGluaXRpYWxpemluZyBkaWN0aW9uYXJ5LCB1cGdyYWRlIHdpbGwgZG8gYSBjbGVhbnVwIGFuZCBleGl0AFZpZXcgJyVzJy4nJXMnOiB1bmtub3duIGNoYXJzZXQgbmFtZSBhbmQvb3IgY29sbGF0aW9uIG5hbWUgKGNsaWVudDogJyVzJzsgY29ubmVjdGlvbjogJyVzJykuAEVycm9yIGluIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBjaGFyYWN0ZXIgc2V0IG5hbWUgZm9yIHZpZXcgJXMuJXMuAERhdGEgRGljdGlvbmFyeSBpbml0aWFsaXphdGlvbiBmYWlsZWQuAEZhaWxlZCB0byB1cGRhdGUgcGx1Z2luIG1ldGFkYXRhIGluIGRpY3Rpb25hcnkgdGFibGVzLgBGYWlsZWQgdG8gUG9wdWxhdGUgREQgdGFibGVzLgBFcnJvciBpbiBDcmVhdGluZyBWaWV3ICVzLiVzAFVuYWJsZSB0byBzdGFydCBzZXJ2ZXIuIENhbm5vdCBmaW5kIHRoZSBtZXRhIGRhdGEgZm9yIGRhdGEgZGljdGlvbmFyeSB0YWJsZSAnJXMnLgBEaWN0aW9uYXJ5IGNhY2hlIG5vdCBlbXB0eSBhdCBzaHV0ZG93bi4ARGljdGlvbmFyeSBvYmplY3RzIHVzZWQgYnV0IG5vdCByZWxlYXNlZC4ARGljdGlvbmFyeSBvYmplY3RzIGxlZnQgaW4gZGVmYXVsdCByZWxlYXNlci4ARGljdGlvbmFyeSBvYmplY3QgYXV0byByZWxlYXNlciBub3QgZGVsZXRlZABFcnJvcjogVW5hYmxlIHRvIGNyZWF0ZSBwcmltYXJ5IG9iamVjdCBrZXkARXJyb3I6IFVuYWJsZSB0byBjcmVhdGUgb2JqZWN0IGtleQBDYW4ndCBjcmVhdGUgaGFuZGxlX21hbmFnZXIgdGhyZWFkIChlcnJubz0gJWQpAEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHJlbGF5IGxvZydzIHJlcG9zaXRvcnkgYmVjYXVzZSB0aGVyZSBhcmUgd29ya2VycycgcmVwb3NpdG9yaWVzIHdpdGggZ2Fwcy4gUGxlYXNlLCBmaXggdGhlIGdhcHMgZmlyc3QgYmVmb3JlIGRvaW5nIHN1Y2ggY2hhbmdlLgBvcHRpb24gJ2VuZm9yY2UtZ3RpZC1jb25zaXN0ZW5jeSc6IHZhbHVlICclcycgd2FzIG5vdCByZWNvZ25pemVkLiBTZXR0aW5nIGVuZm9yY2UtZ3RpZC1jb25zaXN0ZW5jeSB0byBPRkYuAENoYW5nZWQgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZIGZyb20gJXMgdG8gJXMuAENoYW5nZWQgR1RJRF9NT0RFIGZyb20gJXMgdG8gJXMuACVzIGlzIHNldCB0byBhIGRpc2FibGVkIHN0b3JhZ2UgZW5naW5lICVzLgBEZWJ1ZyBzeW5jIHBvaW50cyBoaXQ6ICAgICAgICAgICAgICAgICAgICUyMnMARGVidWcgc3luYyBwb2ludHMgZXhlY3V0ZWQ6ICAgICAgICAgICAgICAlMjJzAERlYnVnIHN5bmMgcG9pbnRzIG1heCBhY3RpdmUgcGVyIHRocmVhZDogJTIycwBEZWJ1ZyBTeW5jIEZhY2lsaXR5IGRpc2FibGVkIGR1ZSB0byBsYWNrIG9mIG1lbW9yeS4AQ2FuJ3QgaW5pdCB0YyBsb2cARXZlbnQgU2NoZWR1bGVyOiBDYW4ndCBpbml0aWFsaXplIHRoZSBleGVjdXRpb24gcXVldWUARXZlbnQgU2NoZWR1bGVyOiBQdXJnaW5nIHRoZSBxdWV1ZS4gJXUgZXZlbnRzAEV2ZW50IFNjaGVkdWxlcjogTGFzdCBleGVjdXRpb24gb2YgJXMuJXMuICVzACUqcwBFdmVudCBTY2hlZHVsZXI6IFslc10uWyVzLiVzXSBldmVudCBleGVjdXRpb24gZmFpbGVkLgBFdmVudCBTY2hlZHVsZXI6IENhbm5vdCBpbml0aWFsaXplIHRoZSBzY2hlZHVsZXIgdGhyZWFkAEV2ZW50IFNjaGVkdWxlcjogU3RvcHBlZABFdmVudCBzY2hlZHVsZXI6IEZhaWxlZCB0byBzdGFydCBzY2hlZHVsZXIsIENhbiBub3QgY3JlYXRlIHRocmVhZCBmb3IgZXZlbnQgc2NoZWR1bGVyIChlcnJubz0lZCkARXZlbnQgU2NoZWR1bGVyOiBXYWl0aW5nIGZvciB0aGUgc2NoZWR1bGVyIHRocmVhZCB0byByZXBseQBFdmVudCBTY2hlZHVsZXI6IHNjaGVkdWxlciB0aHJlYWQgc3RhcnRlZCB3aXRoIGlkICV1AEV2ZW50IFNjaGVkdWxlcjogU2VyaW91cyBlcnJvciBkdXJpbmcgZ2V0dGluZyBuZXh0IGV2ZW50IHRvIGV4ZWN1dGUuIFN0b3BwaW5nAEV2ZW50X3NjaGVkdWxlcjo6ZXhlY3V0ZV90b3A6IENhbiBub3QgY3JlYXRlIGV2ZW50IHdvcmtlciB0aHJlYWQgKGVycm5vPSVkKS4gU3RvcHBpbmcgZXZlbnQgc2NoZWR1bGVyAEV2ZW50IFNjaGVkdWxlcjogS2lsbGluZyB0aGUgc2NoZWR1bGVyIHRocmVhZCwgdGhyZWFkIGlkICV1AElQIGFkZHJlc3MgJyVzJyBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICVzAEhvc3QgbmFtZSAnJXMnIGNvdWxkIG5vdCBiZSByZXNvbHZlZDogJXMASVAgYWRkcmVzcyAnJXMnIGhhcyBiZWVuIHJlc29sdmVkIHRvIHRoZSBob3N0IG5hbWUgJyVzJywgd2hpY2ggcmVzZW1ibGVzIElQdjQtYWRkcmVzcyBpdHNlbGYuAEhvc3RuYW1lICclcycgZG9lcyBub3QgcmVzb2x2ZSB0byAnJXMnLgBIb3N0bmFtZSAnJXMnIGhhcyB0aGUgZm9sbG93aW5nIElQIGFkZHJlc3NlczoAIC0gJXMARGVmaW5lciBjbGF1c2UgaXMgbWlzc2luZyBpbiBUcmlnZ2VyIG9mIFRhYmxlICVzLiBSZWJ1aWxkIFRyaWdnZXIgdG8gZml4IGRlZmluZXIuAENsaWVudCBjaGFyYWN0ZXIgc2V0IGlzIG1pc3NpbmcgZm9yIHRyaWdnZXIgb2YgdGFibGUgJXMuIFVzaW5nIGRlZmF1bHQgY2hhcmFjdGVyIHNldC4ARXJyb3IgaW4gcGFyc2luZyB2aWV3ICVzLiVzAEZhaWxlZCB0byBib290c3RyYXAgY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4ARmFpbGVkIHRvIHNodXRkb3duIGNvbXBvbmVudHMgaW5mcmFzdHJ1Y3R1cmUuAEZhaWxlZCB0byBib290c3RyYXAgcGVyc2lzdGVudCBjb21wb25lbnRzIGxvYWRlci4AR2l2aW5nICVkIGNsaWVudCB0aHJlYWRzIGEgY2hhbmNlIHRvIGRpZSBncmFjZWZ1bGx5AENBIGNlcnRpZmljYXRlICVzIGlzIHNlbGYgc2lnbmVkLgBGYWlsZWQgdG8gc2V0IHVwIFNTTCBiZWNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgU1NMIGxpYnJhcnkgZXJyb3I6ICVzAEZhaWxlZCB0byBnZW5lcmF0ZSBhIHNlcnZlciBVVUlEIGJlY2F1c2UgaXQgaXMgZmFpbGVkIHRvIGFsbG9jYXRlIHRoZSBUSEQuAFNhbHRpbmcgdXVpZCBnZW5lcmF0b3IgdmFyaWFibGVzLCBjdXJyZW50X3BpZDogJWx1LCBzZXJ2ZXJfc3RhcnRfdGltZTogJWx1LCBieXRlc19zZW50OiAlbGx1LCAAR2VuZXJhdGVkIHV1aWQ6ICclcycsIHNlcnZlcl9zdGFydF90aW1lOiAlbHUsIGJ5dGVzX3NlbnQ6ICVsbHUAVGhlIHNlcnZlcl91dWlkIHN0b3JlZCBpbiBhdXRvLmNuZiBmaWxlIGlzIG5vdCBhIHZhbGlkIFVVSUQuAEdhcmJhZ2UgY2hhcmFjdGVycyBmb3VuZCBhdCB0aGUgZW5kIG9mIHRoZSBzZXJ2ZXJfdXVpZCB2YWx1ZSBpbiBhdXRvLmNuZiBmaWxlLiBJdCBzaG91bGQgYmUgb2YgbGVuZ3RoICclZCcgKFVVSURfTEVOR1RIKS4gQ2xlYXIgaXQgYW5kIHJlc3RhcnQgdGhlIHNlcnZlci4gAE5vIGV4aXN0aW5nIFVVSUQgaGFzIGJlZW4gZm91bmQsIHNvIHdlIGFzc3VtZSB0aGF0IHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhhdCB0aGlzIHNlcnZlciBoYXMgYmVlbiBzdGFydGVkLiBHZW5lcmF0aW5nIGEgbmV3IFVVSUQ6ICVzLgBJbml0aWFsaXphdGlvbiBvZiB0aGUgc2VydmVyJ3MgVVVJRCBmYWlsZWQgYmVjYXVzZSBpdCBjb3VsZCBub3QgYmUgcmVhZCBmcm9tIHRoZSBhdXRvLmNuZiBmaWxlLiBJZiB0aGlzIGlzIGEgbmV3IHNlcnZlciwgdGhlIGluaXRpYWxpemF0aW9uIGZhaWxlZCBiZWNhdXNlIGl0IHdhcyBub3QgcG9zc2libGUgdG8gZ2VuZXJhdGUgYSBuZXcgVVVJRC4AVW5rbm93bi91bnN1cHBvcnRlZCBzdG9yYWdlIGVuZ2luZTogJXMAVW5zdXBwb3J0ZWQgdmFsdWUgMCBmb3Igc2VjdXJlLWF1dGgASW52YWxpZCBpbnN0cnVtZW50IG5hbWUgb3IgdmFsdWUgZm9yIHBlcmZvcm1hbmNlX3NjaGVtYV9pbnN0cnVtZW50ICclcycAVGhlIHVzZSBvZiBJbm5vREIgaXMgbWFuZGF0b3J5IHNpbmNlIE15U1FMIDUuNy4gVGhlIGZvcm1lciBvcHRpb25zIGxpa2UgJy0taW5ub2RiPTAvMS9PRkYvT04nIG9yICctLXNraXAtaW5ub2RiJyBhcmUgaWdub3JlZC4AaWdub3JlLWJ1aWx0aW4taW5ub2RiIGlzIGlnbm9yZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgcmVsZWFzZXMuAEludmFsaWQgb2xkX3Bhc3N3b3JkcyBtb2RlOiAxLiBWYWxpZCB2YWx1ZXMgYXJlIDIgYW5kIDAALS12ZXJib3NlIGlzIGZvciB1c2Ugd2l0aCAtLWhlbHA7IGRpZCB5b3UgbWVhbiAtLWxvZy1lcnJvci12ZXJib3NpdHk/AG9wdGlvbnMgLS1sb2ctc2xvdy1hZG1pbi1zdGF0ZW1lbnRzLCAtLWxvZy1xdWVyaWVzLW5vdC11c2luZy1pbmRleGVzIGFuZCAtLWxvZy1zbG93LXJlcGxpY2Etc3RhdGVtZW50cyBoYXZlIG5vIGVmZmVjdCBpZiAtLXNsb3ctcXVlcnktbG9nIGlzIG5vdCBzZXQAbmV0X2J1ZmZlcl9sZW5ndGggKCVsdSkgaXMgc2V0IHRvIGJlIGxhcmdlciB0aGFuIG1heF9hbGxvd2VkX3BhY2tldCAoJWx1KS4gUGxlYXNlIHJlY3RpZnkuAFRJTUVTVEFNUCB3aXRoIGltcGxpY2l0IERFRkFVTFQgdmFsdWUgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSAtLWV4cGxpY2l0X2RlZmF1bHRzX2Zvcl90aW1lc3RhbXAgc2VydmVyIG9wdGlvbiAoc2VlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscykuAEludmFsaWQgZnQtYm9vbGVhbi1zeW50YXggc3RyaW5nOiAlcwAnTk9fQVVUT19DUkVBVEVfVVNFUicgc3FsIG1vZGUgd2FzIG5vdCBzZXQuAENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGNvbm5lY3Rpb24gaGFuZGxpbmcAQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhyZWFkIGhhbmRsaW5nAENhbid0IGNyZWF0ZSB0ZXN0IGZpbGUgJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBjYW4ndCBjcmVhdGUgUElEIGZpbGU6ICVzAFVuYWJsZSB0byBkZWxldGUgcGlkIGZpbGU6ICVzAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIHNodXRkb3duIHJlcXVlc3RzIChlcnJubz0gJWQpAEZhaWxlZCB0byBhY2Nlc3MgZGlyZWN0b3J5IGZvciAtLXNlY3VyZS1maWxlLXByaXYuIFBsZWFzZSBtYWtlIHN1cmUgdGhhdCBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBhY2Nlc3NpYmxlIGJ5IE15U1FMIFNlcnZlci4gU3VwcGxpZWQgdmFsdWUgOiAlcwBJZ25vcmluZyAtLXNlY3VyZS1maWxlLXByaXYgdmFsdWUgYXMgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCAtLWluaXRpYWxpemUoLWluc2VjdXJlKS4ASW5zZWN1cmUgY29uZmlndXJhdGlvbiBmb3IgLS1zZWN1cmUtZmlsZS1wcml2OiBDdXJyZW50IHZhbHVlIGRvZXMgbm90IHJlc3RyaWN0IGxvY2F0aW9uIG9mIGdlbmVyYXRlZCBmaWxlcy4gQ29uc2lkZXIgc2V0dGluZyBpdCB0byBhIHZhbGlkLCBub24tZW1wdHkgcGF0aC4ALS1zZWN1cmUtZmlsZS1wcml2IGlzIHNldCB0byBOVUxMLiBPcGVyYXRpb25zIHJlbGF0ZWQgdG8gaW1wb3J0aW5nIGFuZCBleHBvcnRpbmcgZGF0YSBhcmUgZGlzYWJsZWQASW5zZWN1cmUgY29uZmlndXJhdGlvbiBmb3IgLS1zZWN1cmUtZmlsZS1wcml2OiAlcyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggLS1zZWN1cmUtZmlsZS1wcml2LiBDb25zaWRlciBjaG9vc2luZyBhIGRpZmZlcmVudCBkaXJlY3RvcnkuAEZhaWxlZCB0byBnZXQgc3RhdCBmb3IgZGlyZWN0b3J5IHBvaW50ZWQgb3V0IGJ5IC0tc2VjdXJlLWZpbGUtcHJpdgBJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLXNlY3VyZS1maWxlLXByaXY6IExvY2F0aW9uIGlzIGFjY2Vzc2libGUgdG8gYWxsIE9TIHVzZXJzLiBDb25zaWRlciBjaG9vc2luZyBhIGRpZmZlcmVudCBkaXJlY3RvcnkuAFZhbHVlIGZvciAtLXNlY3VyZS1maWxlLXByaXYgaXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBsaW1pdCBvZiAlZABDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBuYW1lZCBwaXBlcyAoZXJybm89ICVkKQBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBUQ1AvSVAgKGVycm5vPSAlZCkAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgc2hhcmVkIG1lbW9yeSAoZXJybm89ICVkKQBDYW4ndCBjcmVhdGUgaW50ZXJydXB0LXRocmVhZCAoZXJyb3IgJWQsIGVycm5vOiAlZCkAV29ybGQtd3JpdGFibGUgY29uZmlnIGZpbGUgJyVzJyBoYXMgYmVlbiByZW1vdmVkLgBzZXRybGltaXQgY291bGQgbm90IGNoYW5nZSB0aGUgc2l6ZSBvZiBjb3JlIGZpbGVzIHRvICdpbmZpbml0eSc7ICBXZSBtYXkgbm90IGJlIGFibGUgdG8gZ2VuZXJhdGUgYSBjb3JlIGZpbGUgb24gc2lnbmFscwBXcm9uZyBkYXRlL3RpbWUgZm9ybWF0IHNwZWNpZmllcjogJXMAQ291bGQgbm90IGFsbG9jYXRlIHJlcGxpY2F0aW9uIGFuZCBiaW5sb2cgZmlsdGVyczogJXMAQ2Fubm90IGFsbG9jYXRlIHRoZSBrZXljYWNoZQBDdXJyZW50IHRpbWUgaGFzIGdvdCBwYXN0IHllYXIgMjAzOC4gVmFsaWRhdGluZyBjdXJyZW50IHRpbWUgd2l0aCAlZCBpdGVyYXRpb25zIGJlZm9yZSBpbml0aWF0aW5nIHRoZSBub3JtYWwgc2VydmVyIHNodXRkb3duIHByb2Nlc3MuAEl0ZXJhdGlvbiAlZDogT2J0YWluZWQgdmFsaWQgY3VycmVudCB0aW1lIGZyb20gc3lzdGVtAEl0ZXJhdGlvbiAlZDogQ3VycmVudCB0aW1lIG9idGFpbmVkIGZyb20gc3lzdGVtIGlzIGdyZWF0ZXIgdGhhbiAyMDM4AFRoaXMgTXlTUUwgc2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCBkYXRlcyBsYXRlciB0aGVuIDIwMzgAJXMgKG15c3FsZCAlcykgc3RhcnRpbmcgYXMgcHJvY2VzcyAlbHUAU2h1dHRpbmcgZG93biByZXBsaWNhIHRocmVhZHMARm9yY2VmdWxseSBkaXNjb25uZWN0aW5nICVkIHJlbWFpbmluZyBjbGllbnRzAEFib3J0aW5nAEJpbmxvZyBlbmQAZ2V0aG9zdG5hbWUgZmFpbGVkLCB1c2luZyAnJXMnIGFzIGhvc3RuYW1lAE9uZSBjYW4gb25seSB1c2UgdGhlIC0tdXNlciBzd2l0Y2ggaWYgcnVubmluZyBhcyByb290AEZhdGFsIGVycm9yOiBQbGVhc2UgcmVhZCAiU2VjdXJpdHkiIHNlY3Rpb24gb2YgdGhlIG1hbnVhbCB0byBmaW5kIG91dCBob3cgdG8gcnVuIG15c3FsZCBhcyByb290IQBGYXRhbCBlcnJvcjogQ2FuJ3QgY2hhbmdlIHRvIHJ1biBhcyB1c2VyICclcycgOyAgUGxlYXNlIGNoZWNrIHRoYXQgdGhlIHVzZXIgZXhpc3RzIQBTZXJ2ZXIgaXMgc3RhcnRlZCB3aXRoIC0tcmVxdWlyZS1zZWN1cmUtdHJhbnNwb3J0PU9OIGJ1dCBubyBzZWN1cmUgdHJhbnNwb3J0cyAoU1NMIG9yIFNoYXJlZCBNZW1vcnkpIGFyZSBjb25maWd1cmVkLgBzZXRnaWQ6ICVzAHNldHVpZDogJXMAc2V0cmVnaWQ6ICVzAHNldHJldWlkOiAlcwBjaHJvb3Q6ICVzAFRDUC9JUCwgLS1zaGFyZWQtbWVtb3J5LCBvciAtLW5hbWVkLXBpcGUgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgb24gTlQgT1MAQ1RSTC1DIGlnbm9yZWQgZHVyaW5nIHN0YXJ0dXAAJyVzJyBjYW4gbm90IGJlIHVzZWQgYXMgY2xpZW50IGNoYXJhY3RlciBzZXQuICclcycgd2lsbCBiZSB1c2VkIGFzIGRlZmF1bHQgY2xpZW50IGNoYXJhY3RlciBzZXQuAE91dCBvZiBtZW1vcnkARmFpbGVkIHRvIGxvY2sgbWVtb3J5LiBFcnJubzogJWQAbXlfaW5pdCgpIGZhaWxlZC4ARXhlY3V0aW9uIG9mIGluaXRfZmlsZSAnJXMnIHN0YXJ0ZWQuAEV4ZWN1dGlvbiBvZiBpbml0X2ZpbGUgJyVzJyBlbmRlZC4AQ2hhbmdlZCBsaW1pdHM6IG1heF9vcGVuX2ZpbGVzOiAlbHUgKHJlcXVlc3RlZCAlbHUpAENvdWxkIG5vdCBpbmNyZWFzZSBudW1iZXIgb2YgbWF4X29wZW5fZmlsZXMgdG8gbW9yZSB0aGFuICVsdSAocmVxdWVzdDogJWx1KQBDaGFuZ2VkIGxpbWl0czogbWF4X2Nvbm5lY3Rpb25zOiAlbHUgKHJlcXVlc3RlZCAlbHUpAENoYW5nZWQgbGltaXRzOiB0YWJsZV9vcGVuX2NhY2hlOiAlbHUgKHJlcXVlc3RlZCAlbHUpAElnbm9yaW5nIHVzZXIgY2hhbmdlIHRvICclcycgYmVjYXVzZSB0aGUgdXNlciB3YXMgc2V0IHRvICclcycgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lAENvdWxkIG5vdCBhZGQgZG8gdGFibGUgcnVsZSAnJXMnIQBDb3VsZCBub3QgYWRkIGlnbm9yZSB0YWJsZSBydWxlICclcychAFRoZSB2YXJpYWJsZSBzZXNzaW9uX3RyYWNrX3N5c3RlbV92YXJpYWJsZXMgZWl0aGVyIGhhcyBkdXBsaWNhdGUgdmFsdWVzIG9yIGludmFsaWQgdmFsdWVzLgBUb28gbWFueSBhcmd1bWVudHMgKGZpcnN0IGV4dHJhIGlzICclcycpLgBVc2UgLS12ZXJib3NlIC0taGVscCB0byBnZXQgYSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zIQBVbmFibGUgdG8gcmVhZCBlcnJtc2cuc3lzIGZpbGUAQ2FuJ3QgaW5pdCBkYXRhYmFzZXMAVGhlcmUgd2VyZSBvdGhlciB2YWx1ZXMgc3BlY2lmaWVkIHRvIGxvZy1vdXRwdXQgYmVzaWRlcyBOT05FLiBEaXNhYmxpbmcgc2xvdyBhbmQgZ2VuZXJhbCBsb2dzIGFueXdheS4AQ1NWIGVuZ2luZSBpcyBub3QgcHJlc2VudCwgZmFsbGluZyBiYWNrIHRvIHRoZSBsb2cgZmlsZXMAQmFkIHN5bnRheCBpbiByZXBsaWNhdGUtcmV3cml0ZS1kYiAtIG1pc3NpbmcgJy0+JyEAQmFkIHN5bnRheCBpbiByZXBsaWNhdGUtcmV3cml0ZS1kYiAtIGVtcHR5IEZST00gZGIhAEJhZCBzeW50YXggaW4gcmVwbGljYXRlLXJld3JpdGUtZGIgLSBlbXB0eSBUTyBkYiEAQWx0aG91Z2ggYSBwYXRoIHdhcyBzcGVjaWZpZWQgZm9yIHRoZSAlcywgbG9nIHRhYmxlcyBhcmUgdXNlZC4gVG8gZW5hYmxlIGxvZ2dpbmcgdG8gZmlsZXMgdXNlIHRoZSAtLWxvZy1vdXRwdXQ9ZmlsZSBvcHRpb24uAEludmFsaWQgdmFsdWUgZm9yICVzOiAlcwBUaGUgc2VydmVyIG9wdGlvbiAnbG93ZXJfY2FzZV90YWJsZV9uYW1lcycgaXMgY29uZmlndXJlZCB0byB1c2UgY2FzZSBzZW5zaXRpdmUgdGFibGUgbmFtZXMgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBpcyBvbiBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW0gd2hpY2ggaXMgYW4gdW5zdXBwb3J0ZWQgY29tYmluYXRpb24uIFBsZWFzZSBjb25zaWRlciBlaXRoZXIgdXNpbmcgYSBjYXNlIHNlbnNpdGl2ZSBmaWxlIHN5c3RlbSBmb3IgeW91ciBkYXRhIGRpcmVjdG9yeSBvciBzd2l0Y2hpbmcgdG8gYSBjYXNlLWluc2Vuc2l0aXZlIHRhYmxlIG5hbWUgbW9kZS4AU2V0dGluZyBsb3dlcl9jYXNlX3RhYmxlX25hbWVzPTIgYmVjYXVzZSBmaWxlIHN5c3RlbSBmb3IgJXMgaXMgY2FzZSBpbnNlbnNpdGl2ZQBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHdhcyBzZXQgdG8gMiwgZXZlbiB0aG91Z2ggeW91ciB0aGUgZmlsZSBzeXN0ZW0gJyVzJyBpcyBjYXNlIHNlbnNpdGl2ZS4gIE5vdyBzZXR0aW5nIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgdG8gMCB0byBhdm9pZCBmdXR1cmUgcHJvYmxlbXMuAFlvdSBuZWVkIHRvIHVzZSAtLWxvZy1iaW4gdG8gbWFrZSAlcyB3b3JrLgBQYXRoICclcycgaXMgYSBkaXJlY3RvcnkgbmFtZSwgcGxlYXNlIHNwZWNpZnkgYSBmaWxlIG5hbWUgZm9yICVzIG9wdGlvbgBObyBhcmd1bWVudCB3YXMgcHJvdmlkZWQgdG8gLS1sb2ctYmluLCBhbmQgLS1sb2ctYmluLWluZGV4IHdhcyBub3QgdXNlZDsgc28gcmVwbGljYXRpb24gbWF5IGJyZWFrIHdoZW4gdGhpcyBNeVNRTCBzZXJ2ZXIgYWN0cyBhcyBhIHNvdXJjZSBhbmQgaGFzIGhpcyBob3N0bmFtZSBjaGFuZ2VkISEgUGxlYXNlIHVzZSAnLS1sb2ctYmluPSVzJyB0byBhdm9pZCB0aGlzIHByb2JsZW0uAFlvdSBoYXZlIGVuYWJsZWQgdGhlIGJpbmFyeSBsb2csIGJ1dCB5b3UgaGF2ZW4ndCBwcm92aWRlZCB0aGUgbWFuZGF0b3J5IHNlcnZlci1pZC4gUGxlYXNlIHJlZmVyIHRvIHRoZSBwcm9wZXIgc2VydmVyIHN0YXJ0LXVwIHBhcmFtZXRlcnMgZG9jdW1lbnRhdGlvbgBVbmFibGUgdG8gY3JlYXRlIHJlcGxpY2F0aW9uIHBhdGggbmFtZXM6IG91dCBvZiBtZW1vcnkgb3IgcGF0aCBuYW1lcyB0b28gbG9uZyAocGF0aCBuYW1lIGV4Y2VlZHMgJWQgb3IgZmlsZSBuYW1lIGV4Y2VlZHMgJWQpLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBHVElEIHN0cnVjdHVyZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIGVhcmx5IHBsdWdpbnMuAEZhaWxlZCB0byBpbml0aWFsaXplIGJ1aWx0aW4gcGx1Z2lucy4ARmFpbGVkIHRvIGluaXRpYWxpemUgZHluYW1pYyBwbHVnaW5zLgBQZXJmb3JtYW5jZSBzY2hlbWEgZGlzYWJsZWQgKHJlYXNvbjogaW5pdCBmYWlsZWQpLgBBc2tlZCBmb3IgJWx1IHRocmVhZCBzdGFjaywgYnV0IGdvdCAlbGQAZmFpbGVkIHRvIHNldCBkYXRhZGlyIHRvICVzAENhbid0IHJlYWQgZGF0YSBkaXJlY3RvcnkncyBzdGF0cyAoJWQpOiAlcy4gQXNzdW1pbmcgdGhhdCBpdCdzIG5vdCBvd25lZCBieSB0aGUgc2FtZSB1c2VyL2dyb3VwAENhbid0IGNoYW5nZSBkYXRhIGRpcmVjdG9yeSBvd25lciB0byAlcwBTZXR0aW5nIHBlcnNpc3RlbnQgb3B0aW9ucyBmYWlsZWQuAEZhaWxlZCB0byBzYXZlIHRoZSBzZXQgb2YgR2xvYmFsIFRyYW5zYWN0aW9uIElkZW50aWZpZXJzIG9mIHRoZSBsYXN0IGJpbmFyeSBsb2cgaW50byB0aGUgbXlzcWwuZ3RpZF9leGVjdXRlZCB0YWJsZSB3aGlsZSB0aGUgc2VydmVyIHdhcyBzaHV0dGluZyBkb3duLiBUaGUgbmV4dCBzZXJ2ZXIgcmVzdGFydCB3aWxsIG1ha2UgYW5vdGhlciBhdHRlbXB0IHRvIHNhdmUgR2xvYmFsIFRyYW5zYWN0aW9uIElkZW50aWZpZXJzIGludG8gdGhlIHRhYmxlLgBDYW4ndCBzdGFydCBzZXJ2ZXI6IEludmFsaWQgdmFsdWUgZm9yIC0tZGVmYXVsdC1hdXRoZW50aWNhdGlvbi1wbHVnaW4AQ291bGQgbm90IGpvaW4gJXN0aHJlYWQuIGVycm9yOiVkAEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGJ1aWxkaW5nIGRvX3RhYmxlIGFuZCBpZ25vcmVfdGFibGUgcnVsZXMgdG8gaGFzaGVzIGZvciBnbG9iYWwgcmVwbGljYXRpb24gZmlsdGVyLgBFcnJvciBvcGVuaW5nIENBIGNlcnRpZmljYXRlIGZpbGUARXJyb3IgYWNjZXNzaW5nIGRpcmVjdG9yeSBwb2ludGVkIGJ5IC0tc3NsLWNhcGF0aABGb3VuZCAlcywgJXMgYW5kICVzIGluIGRhdGEgZGlyZWN0b3J5LiBUcnlpbmcgdG8gZW5hYmxlIFNTTCBzdXBwb3J0IHVzaW5nIHRoZW0uAEZhaWxlZCB0byBjcmVhdGUgJXMoZmlsZTogJyVzJywgZXJybm8gJWQpAEZhaWxlZCB0byBpbml0aWFsaXplIHRpbWVyIGNvbXBvbmVudCAoZXJybm8gJWQpLgBzZXJ2ZXItaWQgY29uZmlndXJlZCBpcyB0b28gbGFyZ2UgdG8gcmVwcmVzZW50IHdpdGggc2VydmVyLWlkLWJpdHMgY29uZmlndXJlZC4ARGVmYXVsdCVzIHN0b3JhZ2UgZW5naW5lICglcykgaXMgbm90IGF2YWlsYWJsZQBDb3VsZCBub3Qgb3BlbiBmaWxlICclcycgZm9yIGVycm9yIGxvZ2dpbmclcyVzAEludmFsaWQgbG9nIGZpbGUgbmFtZSBhZnRlciBleHBhbmRpbmcgc3ltbGlua3M6ICclcycAdXNpbmcgLS1yZXBsaWNhdGUtc2FtZS1zZXJ2ZXItaWQgaW4gY29uanVuY3Rpb24gd2l0aCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMgaXMgaW1wb3NzaWJsZSwgaXQgd291bGQgbGVhZCB0byBpbmZpbml0ZSBsb29wcyBpbiB0aGlzIHNlcnZlci4AdXNpbmcgLS1yZXBsaWNhdGUtc2FtZS1zZXJ2ZXItaWQgaW4gY29uanVuY3Rpb24gd2l0aCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMgd291bGQgbGVhZCB0byBpbmZpbml0ZSBsb29wcyBpbiB0aGlzIHNlcnZlci4gSG93ZXZlciB0aGlzIHdpbGwgYmUgaWdub3JlZCBhcyB0aGUgLS1sb2ctYmluIG9wdGlvbiBpcyBub3QgZGVmaW5lZCBvciB5b3VyIHNlcnZlciBpcyBydW5uaW5nIHdpdGggZ2xvYmFsIHRyYW5zYWN0aW9uIGlkZW50aWVycyBlbmFibGVkLgBOREIgOiBUYWJsZXMgbm90IGF2YWlsYWJsZSBhZnRlciAlbHUgc2Vjb25kcy4gQ29uc2lkZXIgaW5jcmVhc2luZyAtLW5kYi13YWl0LXNldHVwIHZhbHVlACVzAFVuYWJsZSB0byBzdGFydCBzZXJ2ZXIuIFRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGVzcGFjZSAnJXMnIGRvZXMgbm90IGV4aXN0LgBDb25uZWN0aW9uIGNvbGxhdGlvbiBpcyBtaXNzaW5nIGZvciB0cmlnZ2VyIG9mIHRhYmxlICVzLiBVc2luZyBkZWZhdWx0IGNvbm5lY3Rpb24gY29sbGF0aW9uLgBEYXRhYmFzZSBjb2xsYXRpb24gaXMgbWlzc2luZyBmb3IgdHJpZ2dlciBvZiB0YWJsZSAlcy4gVXNpbmcgRGVmYXVsdCBjaGFyYWN0ZXIgc2V0LgBFcnJvciBpbiBNZW1vcnkgYWxsb2NhdGlvbiBmb3IgRGVmaW5lciAlcyBmb3IgVHJpZ2dlci4ARXJyb3IgaW4gcmVhZGluZyAlcy5UUkcgZmlsZS4ARXJyb3IgaW4gcGFyc2luZyBUcmlnZ2VycyBmcm9tICVzLlRSRyBmaWxlLgBFcnJvciBpbiBjcmVhdGluZyBERCBlbnRyeSBmb3IgVHJpZ2dlciAlcy4lcwBSZXNvbHZpbmcgZGVwZW5kZW5jeSBmb3IgdGhlIHZpZXcgJyVzLiVzJyBmYWlsZWQuIFZpZXcgaXMgbm8gbW9yZSB2YWxpZCB0byB1c2UAJXMuJXMgaGFzIG5vIGRlZmluZXIgKGFzIHBlciBhbiBvbGQgdmlldyBmb3JtYXQpLiBDdXJyZW50IHVzZXIgaXMgdXNlZCBhcyBkZWZpbmVyLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHZpZXcuAFBsdWdpbiAnJXMnIGluaXQgZnVuY3Rpb24gcmV0dXJuZWQgZXJyb3IuAEluaXRpYWxpemF0aW9uIG9mIHRyYW5zYWN0aW9uIGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAEluaXRpYWxpemF0aW9uIGJpbmxvZyBzdG9yYWdlIGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAEluaXRpYWxpemF0aW9uIG9mIGJpbmxvZyB0cmFuc21pdCBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBJbml0aWFsaXphdGlvbiBiaW5sb2cgcmVsYXkgSU8gZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4AUnVuIGZ1bmN0aW9uICcuLi4nIGluIHBsdWdpbiAnJXMnIGZhaWxlZABteXNxbF9oYV9yZWFkOiBHb3QgZXJyb3IgJWQgd2hlbiByZWFkaW5nIHRhYmxlICclcycAU3RvcmVkIHJvdXRpbmUgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiAlcy4ASW52YWxpZCBjcmVhdGlvbiBjb250ZXh0ICclcy4lcycuAEdvdCBlcnJvciAlZCB3aGVuIHJlYWRpbmcgdGFibGUgJyVzJwBsb2FkX2Rlc19maWxlOiAgRm91bmQgd3Jvbmcga2V5X251bWJlcjogJWMARmFpbGVkIHRvIHNldCBwZXJzaXN0ZWQgb3B0aW9ucy4AUGVyc2lzdGVkIGNvbmZpZyBmaWxlIGlzIGNvcnJ1cHQuIFBsZWFzZSBlbnN1cmUgbXlzcWxkLWF1dG8uY25mIGZpbGUgaXMgdmFsaWQgSlNPTi4ARm91bmQgb3B0aW9uIHdpdGhvdXQgcHJlY2VkaW5nIGdyb3VwIGluIGNvbmZpZyBmaWxlAFZBTEdSSU5EX0RPX1FVSUNLX0xFQUtfQ0hFQ0sAVkFMR1JJTkRfQ09VTlRfTEVBS1MgcmVwb3J0cyAlbHUgbGVha2VkIGJ5dGVzIGZvciBxdWVyeSAnJS4qcycATE9BRCBEQVRBIElORklMRSBpbiB0aGUgcmVwbGljYSBTUUwgVGhyZWFkIGNhbiBvbmx5IHJlYWQgZnJvbSAtLXJlcGxpY2EtbG9hZC10bXBkaXIuIFBsZWFzZSwgcmVwb3J0IGEgYnVnLgBHb3QgdW5rbm93biBlcnJvcjogJWQAQ2FuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciB1ZGYgc3RydWN0dXJlcwBDYW4ndCBhbGxvYyBtZW1vcnkgZm9yIHVkZiBmdW5jdGlvbjogJyUuNjRzJwBJbnZhbGlkIHJvdyBpbiBteXNxbC5mdW5jIHRhYmxlIGZvciBmdW5jdGlvbiAnJS42NHMnAENvdWxkIG5vdCBvcGVuIHRoZSBteXNxbC5mdW5jIHRhYmxlLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEZvdW5kICVkIHByZXBhcmVkIHRyYW5zYWN0aW9uKHMpIGluICVzAEZvdW5kICVkIHByZXBhcmVkIFhBIHRyYW5zYWN0aW9ucwBpZ25vcmUgeGlkICVzAGNvbW1pdCB4aWQgJXMAcm9sbGJhY2sgeGlkICVzAFN0YXJ0aW5nIFhBIGNyYXNoIHJlY292ZXJ5Li4uAC0tdGMtaGV1cmlzdGljLXJlY292ZXIgcm9sbGJhY2sgc3RyYXRlZ3kgaXMgbm90IHNhZmUgb24gc3lzdGVtcyB3aXRoIG1vcmUgdGhhbiBvbmUgMi1waGFzZS1jb21taXQtY2FwYWJsZSBzdG9yYWdlIGVuZ2luZS4gQWJvcnRpbmcgY3Jhc2ggcmVjb3ZlcnkuAEZvdW5kICVkIHByZXBhcmVkIHRyYW5zYWN0aW9ucyEgSXQgbWVhbnMgdGhhdCBteXNxbGQgd2FzIG5vdCBzaHV0IGRvd24gcHJvcGVybHkgbGFzdCB0aW1lIGFuZCBjcml0aWNhbCByZWNvdmVyeSBpbmZvcm1hdGlvbiAobGFzdCBiaW5sb2cgb3IgJXMgZmlsZSkgd2FzIG1hbnVhbGx5IGRlbGV0ZWQgYWZ0ZXIgYSBjcmFzaC4gWW91IGhhdmUgdG8gc3RhcnQgbXlzcWxkIHdpdGggLS10Yy1oZXVyaXN0aWMtcmVjb3ZlciBzd2l0Y2ggdG8gY29tbWl0IG9yIHJvbGxiYWNrIHBlbmRpbmcgdHJhbnNhY3Rpb25zLgBYQSBjcmFzaCByZWNvdmVyeSBmaW5pc2hlZC4ARmFpbGVkIHRvIGNvbGxlY3QgR1RJRCB0byBzZW5kIGluIHRoZSByZXNwb25zZSBwYWNrZXQhAE1ZU1FMLkRFRkFVTFRfUk9MRVMgY291bGRuJ3QgYmUgdXBkYXRlZCBmb3IgYXV0aG9yaXphdGlvbiBpZGVudGlmaWVyICVzAEZvbGxvd2luZyB1c2VycyB3ZXJlIHNwZWNpZmllZCBpbiBDUkVBVEUgVVNFUiBJRiBOT1QgRVhJU1RTIGJ1dCB0aGV5IGFscmVhZHkgZXhpc3QuIENvcnJlc3BvbmRpbmcgZW50cnkgaW4gYmluYXJ5IGxvZyB1c2VkIGRlZmF1bHQgYXV0aGVudGljYXRpb24gcGx1Z2luICclcycgdG8gcmV3cml0ZSBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiAoaWYgYW55KSBmb3IgdGhlbTogJXMARm9sbG93aW5nIHVzZXJzIHdlcmUgc3BlY2lmaWVkIGluIEFMVEVSIFVTRVIgSUYgRVhJU1RTIGJ1dCB0aGV5IGRvIG5vdCBleGlzdC4gQ29ycmVzcG9uZGluZyBlbnRyeSBpbiBiaW5hcnkgbG9nIHVzZWQgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJyVzJyB0byByZXdyaXRlIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uIChpZiBhbnkpIGZvciB0aGVtOiAlcwBUYWJsZSAnJS0xOTJzJyBjb3JydXB0ZWQ6IHJvdyBpbiB3cm9uZyBwYXJ0aXRpb246ICVzIC0tIFBsZWFzZSBSRVBBSVIgdGhlIHRhYmxlIQBHb3QgYW4gZXJyb3IgZnJvbSB0aHJlYWRfaWQ9JXUsICVzOiVkAEdvdCBhbiBlcnJvciBmcm9tIHVua25vd24gdGhyZWFkLCAlczolZABUb28gbWFueSBzdG9yYWdlIGVuZ2luZXMhAFN0b3JhZ2UgZW5naW5lICclcycgaGFzIGNvbmZsaWN0aW5nIHR5cGVjb2RlLiBBc3NpZ25pbmcgdmFsdWUgJWQuAE91dCBvZiBtZW1vcnkgb24gdHJhbnNhY3Rpb24gd3JpdGUgc2V0IGV4dHJhY3Rpb24AVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgcGx1Z2luICclcycgaGFuZGxlcnRvbi4AU2hhcmVkIG1lbW9yeSBzZXR0aW5nIHVwIGxpc3RlbmVyAENhbid0IGNyZWF0ZSBzaGFyZWQgbWVtb3J5IHNlcnZpY2U6ICVzLiA6ICVzAENhbid0IGNyZWF0ZSBzaGFyZWQgbWVtb3J5IGNvbm5lY3Rpb246ICVzLiA6ICVzAENhbid0IGNyZWF0ZSBldmVudCwgbGFzdCBlcnJvcj0ldQBDYW4ndCBjcmVhdGUgbmV3IG5hbWVkIHBpcGUhOiAlcwBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBuZXcgY29ubmVjdGlvbihlcnJubz0gJWQpAEZhaWxlZCB0byBjcmVhdGUgYSBzb2NrZXQgZm9yICVzICclcyc6IGVycm5vOiAlZC4AU2VydmVyIHNvY2tldCBjcmVhdGVkIG9uIElQOiAnJXMnLgBTZXJ2ZXIgaG9zdG5hbWUgKGJpbmQtYWRkcmVzcyk6ICclcyc7IHBvcnQ6ICVkAElQdjYgaXMgYXZhaWxhYmxlLgBJUHY2IGlzIG5vdCBhdmFpbGFibGUuAENhbid0IGNyZWF0ZSBJUCBzb2NrZXQ6ICVzAENhbid0IHN0YXJ0IHNlcnZlcjogY2Fubm90IHJlc29sdmUgaG9zdG5hbWUhAERvIHlvdSBhbHJlYWR5IGhhdmUgYW5vdGhlciBteXNxbGQgc2VydmVyIHJ1bm5pbmcgb24gcG9ydDogJWQgPwBEbyB5b3UgYWxyZWFkeSBoYXZlIGFub3RoZXIgbXlzcWxkIHNlcnZlciBydW5uaW5nIG9uIHNvY2tldDogJXMgPwBBbm90aGVyIHByb2Nlc3Mgd2l0aCBwaWQgJWQgaXMgdXNpbmcgdW5peCBzb2NrZXQgZmlsZS4ARmFpbGVkIHRvIHJlc2V0IElQVjZfVjZPTkxZIGZsYWcgKGVycm9yOiAlZCkuIFRoZSBzZXJ2ZXIgd2lsbCBsaXN0ZW4gdG8gSVB2NiBhZGRyZXNzZXMgb25seS4AUmV0cnlpbmcgYmluZCBvbiBUQ1AvSVAgcG9ydCAldQBDYW4ndCBzdGFydCBzZXJ2ZXI6IEJpbmQgb24gVENQL0lQIHBvcnQ6ICVzAEZhaWxzIHRvIHByaW50IG91dCBJUC1hZGRyZXNzLgAgIC0gJyVzJyByZXNvbHZlcyB0byAnJXMnOwBDYW4ndCBzdGFydCBzZXJ2ZXI6IGxpc3RlbigpIG9uIFRDUC9JUCBwb3J0OiAlcwBsaXN0ZW4oKSBvbiBUQ1AvSVAgZmFpbGVkIHdpdGggZXJyb3IgJWQAVGhlIHNvY2tldCBmaWxlIHBhdGggaXMgdG9vIGxvbmcgKD4gJXUpOiAlcwBVbmFibGUgdG8gc2V0dXAgdW5peCBzb2NrZXQgbG9jayBmaWxlLgBDYW4ndCBzdGFydCBzZXJ2ZXI6IFVOSVggU29ja2V0IDogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogQmluZCBvbiB1bml4IHNvY2tldDogJXMAbGlzdGVuKCkgb24gVW5peCBzb2NrZXQgZmFpbGVkIHdpdGggZXJyb3IgJWQAVW5hYmxlIHRvIGNyZWF0ZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgYWZ0ZXIgcmV0cmllcy4AQ291bGQgbm90IGNyZWF0ZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAENvdWxkIG5vdCBvcGVuIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AQ291bGQgbm90IHJlYWQgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBVbml4IHNvY2tldCBsb2NrIGZpbGUgaXMgZW1wdHkgJXMuAEludmFsaWQgcGlkIGluIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AQ291bGQgbm90IHdyaXRlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AQ291bGQgbm90IHJlbW92ZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgZXJybm8gJWQuAENvdWxkIG5vdCBzeW5jIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AQ291bGQgbm90IGNsb3NlIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcyBlcnJubyAlZC4AbXlzcWxkOiBHb3QgZXJyb3IgJWQgZnJvbSBzZWxlY3QARXJyb3IgaW4gYWNjZXB0OiAlcwBSU0EgJXMga2V5IGZpbGUgbm90IGZvdW5kOiAlcy4gU29tZSBhdXRoZW50aWNhdGlvbiBwbHVnaW5zIHdpbGwgbm90IHdvcmsuAEZhaWx1cmUgdG8gcGFyc2UgUlNBICVzIGtleSAoZmlsZSBleGlzdHMpOiAlczogJXMARmFpbHVyZSB0byByZWFkIGtleSBmaWxlOiAlcwBSU0Ega2V5IGZpbGVzIG5vdCBmb3VuZC4gU29tZSBhdXRoZW50aWNhdGlvbiBwbHVnaW5zIHdpbGwgbm90IHdvcmsuAENvbm5lY3Rpb24gYXR0cmlidXRlcyBvZiBsZW5ndGggJWx1IHdlcmUgdHJ1bmNhdGVkICglZCBieXRlcyBsb3N0KSBmb3IgY29ubmVjdGlvbiAlbGx1LCB1c2VyICVzQCVzIChhcyAlcyksIGF1dGg6ICVzAFguNTA5IGNpcGhlcnMgbWlzbWF0Y2g6IHNob3VsZCBiZSAnJXMnIGJ1dCBpcyAnJXMnAFguNTA5IGlzc3VlciBtaXNtYXRjaDogc2hvdWxkIGJlICclcycgYnV0IGlzICclcycAWC41MDkgc3ViamVjdCBtaXNtYXRjaDogc2hvdWxkIGJlICclcycgYnV0IGlzICclcycARmFpbGVkIHRvIGFjdGl2YXRlIGRlZmF1bHQgcm9sZSAlcyBmb3IgJXMAQ291bGQgbm90IGdlbmVyYXRlIFJTQSBwcml2YXRlIGtleSByZXF1aXJlZCBmb3IgWC41MDkgY2VydGlmaWNhdGUuAENvdWxkIG5vdCB3cml0ZSBrZXkgZmlsZTogJXMAQ291bGQgbm90IHNldCBmaWxlIHBlcm1pc3Npb24gZm9yICVzAENvdWxkIG5vdCByZWFkIENBIGtleSBmaWxlOiAlcwBDb3VsZCBub3QgcmVhZCBDQSBjZXJ0aWZpY2F0ZSBmaWxlOiAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgWC41MDkgY2VydGlmaWNhdGUuAENvdWxkIG5vdCB3cml0ZSBjZXJ0aWZpY2F0ZSBmaWxlOiAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgUlNBIFByaXZhdGUvUHVibGljIGtleSBwYWlyAENvdWxkIG5vdCB3cml0ZSBwcml2YXRlIGtleSBmaWxlOiAlcwBDb3VsZCBub3Qgd3JpdGUgcHVibGljIGtleSBmaWxlOiAlcwBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFNTTCBjZXJ0aWZpY2F0ZXMgYXMgb3B0aW9ucyByZWxhdGVkIHRvIFNTTCBhcmUgc3BlY2lmaWVkLgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFNTTCBjZXJ0aWZpY2F0ZXMgYXMgY2VydGlmaWNhdGUgZmlsZXMgYXJlIHByZXNlbnQgaW4gZGF0YSBkaXJlY3RvcnkuAEF1dG8gZ2VuZXJhdGVkIFNTTCBjZXJ0aWZpY2F0ZXMgYXJlIHBsYWNlZCBpbiBkYXRhIGRpcmVjdG9yeS4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBTU0wgY2VydGlmaWNhdGVzIGFzIC0tYXV0b19nZW5lcmF0ZV9jZXJ0cyBpcyBzZXQgdG8gT0ZGLgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFJTQSBrZXkgcGFpciB0aHJvdWdoICVzIGFzIG9wdGlvbnMgcmVsYXRlZCB0byBSU0Ega2V5cyBhcmUgc3BlY2lmaWVkLgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFJTQSBrZXkgcGFpciB0aHJvdWdoICVzIGFzIGtleSBmaWxlcyBhcmUgcHJlc2VudCBpbiBkYXRhIGRpcmVjdG9yeS4AQXV0byBnZW5lcmF0ZWQgUlNBIGtleSBmaWxlcyB0aHJvdWdoICVzIGFyZSBwbGFjZWQgaW4gZGF0YSBkaXJlY3RvcnkuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgUlNBIGtleSBwYWlyIGFzICVzIGlzIHNldCB0byBPRkYuACdwcm94aWVzX3ByaXYnIGVudHJ5ICclc0AlcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuAFRoZSBwbHVnaW4gJyUuKnMnIHVzZWQgdG8gYXV0aGVudGljYXRlIHVzZXIgJyVzJ0AnJS4qcycgaXMgbm90IGxvYWRlZC4gTm9ib2R5IGNhbiBjdXJyZW50bHkgbG9naW4gdXNpbmcgdGhpcyBhY2NvdW50LgBUaGUgcGx1Z2luICclcycgaXMgdXNlZCB0byBhdXRoZW50aWNhdGUgdXNlciAnJXMnQCclLipzJywgJXMgY29uZmlndXJlZC4gTm9ib2R5IGNhbiBjdXJyZW50bHkgbG9naW4gdXNpbmcgdGhpcyBhY2NvdW50LgBDb3VsZCBub3QgbG9hZCBteXNxbC5yb2xlX2VkZ2VzIGFuZCBteXNxbC5kZWZhdWx0X3JvbGVzIHRhYmxlcy4gQUNMIERETHMgd2lsbCBub3Qgd29yayB1bmxlc3MgdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlIGlzIHBlcmZvcm1lZC4AJ3VzZXInIGVudHJ5ICclc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuAEZhdGFsIGVycm9yOiBDb3VsZCBub3QgcmVhZCB0aGUgY29sdW1uICdhdXRoZW50aWNhdGlvbl9zdHJpbmcnIGZyb20gdGFibGUgJ215c3FsLnVzZXInLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAFVzZXIgZW50cnkgJyVzJ0AnJXMnIGhhcyBhIGRlcHJlY2F0ZWQgcHJlLTQuMSBwYXNzd29yZC4gVGhlIHVzZXIgd2lsbCBiZSBpZ25vcmVkIGFuZCBubyBvbmUgY2FuIGxvZ2luIHdpdGggdGhpcyB1c2VyIGFueW1vcmUuAFVzZXIgZW50cnkgJyVzJ0AnJXMnIGhhcyBhbiBlbXB0eSBwbHVnaW4gdmFsdWUuIFRoZSB1c2VyIHdpbGwgYmUgaWdub3JlZCBhbmQgbm8gb25lIGNhbiBsb2dpbiB3aXRoIHRoaXMgdXNlciBhbnltb3JlLgBGb3VuZCBpbnZhbGlkIHBhc3N3b3JkIGZvciB1c2VyOiAnJXNAJXMnOyBJZ25vcmluZyB1c2VyACd1c2VyJyBlbnRyeSAnJXNAJXMnIGhhcyB0aGUgcGFzc3dvcmQgaWdub3JlIGZsYWcgcmFpc2VkLCBidXQgaXRzIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiBkb2Vzbid0IHN1cHBvcnQgcGFzc3dvcmQgZXhwaXJhdGlvbi4gVGhlIHVzZXIgaWQgd2lsbCBiZSBpZ25vcmVkLgBTb21lIG9mIHRoZSB1c2VyIGFjY291bnRzIHdpdGggU1VQRVIgcHJpdmlsZWdlcyB3ZXJlIGRpc2FibGVkIGJlY2F1c2Ugb2YgZW1wdHkgbXlzcWwudXNlci5wbHVnaW4gdmFsdWUuIElmIHlvdSBhcmUgdXBncmFkaW5nIGZyb20gTXlTUUwgNS42IHRvIE15U1FMIDUuNyBpdCBtZWFucyB0aGF0IHN1YnN0aXR1dGlvbiBmb3IgdGhlIGVtcHR5IHBsdWdpbiBjb2x1bW4gd2FzIG5vdCBwb3NzaWJsZS4gUHJvYmFibHkgYmVjYXVzZSBvZiBwcmUgNC4xIHBhc3N3b3JkIGhhc2guIElmIHlvdXIgYWNjb3VudCBpcyBkaXNhYmxlZCB5b3Ugd2lsbCBuZWVkIHRvIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLiBGb3IgY29tcGxldGUgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1cGdyYWRlIE15U1FMIHRvIGEgbmV3IHZlcnNpb24gcGxlYXNlIHNlZSB0aGUgJ1VwZ3JhZGluZyBNeVNRTCcgc2VjdGlvbiBmcm9tIHRoZSBNeVNRTCBtYW51YWwuAEZvdW5kIGFuIGVudHJ5IGluIHRoZSAnZGInIHRhYmxlIHdpdGggZW1wdHkgZGF0YWJhc2UgbmFtZTsgU2tpcHBlZAAnZGInIGVudHJ5ICclcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuACdkYicgZW50cnkgJyVzICVzQCVzJyBoYWQgZGF0YWJhc2UgaW4gbWl4ZWQgY2FzZSB0aGF0IGhhcyBiZWVuIGZvcmNlZCB0byBsb3dlcmNhc2UgYmVjYXVzZSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIGlzIHNldC4gSXQgd2lsbCBub3QgYmUgcG9zc2libGUgdG8gcmVtb3ZlIHRoaXMgcHJpdmlsZWdlIHVzaW5nIFJFVk9LRS4AVGhlIHN5c3RlbSB0YWJsZSBteXNxbC5wcm94aWVzX3ByaXYgaXMgbWlzc2luZy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBGYXRhbCBlcnJvcjogQ2FuJ3Qgb3BlbiBhbmQgbG9jayBwcml2aWxlZ2UgdGFibGVzOiAlcwBGYXRhbDogY2FuJ3QgaW5pdGlhbGl6ZSBncmFudCBzdWJzeXN0ZW0gLSAnJXMnACdwcm9jc19wcml2JyBlbnRyeSAnJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgAncHJvY3NfcHJpdicgZW50cnkgJyVzJyBpZ25vcmVkLCBiYWQgcm91dGluZSB0eXBlACd0YWJsZXNfcHJpdicgZW50cnkgJyVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4ARmFpbGVkIHRvIGFkZCAlcyBpbiBleHRyYV91c2Vycy4gQmluYXJ5IGxvZyBlbnRyeSBtYXkgbWlzcyBzb21lIG9mIHRoZSB1c2Vycy4AVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gVGhlIGRhdGEgZGljdGlvbmFyeSBzY2hlbWEgJyVzJyBkb2VzIG5vdCBleGlzdC4AVW5hYmxlIHRvIHN0YXJ0IHNlcnZlci4gVGhlIGRhdGEgZGljdGlvbmFyeSB0YWJsZSAnJXMnIGRvZXMgbm90IGV4aXN0LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBERCBTdG9yYWdlIEVuZ2luZQBGb3VuZCBwYXJ0aWFsbHkgdXBncmFkZWQgREQuIEFib3J0aW5nIHVwZ3JhZGUgYW5kIGRlbGV0aW5nIGFsbCBERCB0YWJsZXMuIFN0YXJ0IHRoZSB1cGdyYWRlIHByb2Nlc3MgYWdhaW4uAEZvdW5kIC5mcm0gZmlsZSB3aXRoIHNhbWUgbmFtZSBhcyBvbmUgb2YgdGhlIERpY3Rpb25hcnkgVGFibGVzLgBDcmVhdGVkIERhdGEgRGljdGlvbmFyeSBmb3IgdXBncmFkZQBDYW4ndCBmaW5kIGVycm9yLW1lc3NhZ2UgZmlsZSAnJXMnLiBDaGVjayBlcnJvci1tZXNzYWdlIGZpbGUgbG9jYXRpb24gYW5kICdsYy1tZXNzYWdlcy1kaXInIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlLgBVc2luZyBwcmUgNS41IHNlbWFudGljcyB0byBsb2FkIGVycm9yIG1lc3NhZ2VzIGZyb20gJXMuIElmIHRoaXMgaXMgbm90IGludGVuZGVkLCByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdmFsaWQgdXNhZ2Ugb2YgLS1sYy1tZXNzYWdlcy1kaXIgYW5kIC0tbGFuZ3VhZ2UgcGFyYW1ldGVycy4ARXJyb3IgbWVzc2FnZSBmaWxlICclcycgaGFkIG9ubHkgJWQgZXJyb3IgbWVzc2FnZXMsIGJ1dCBpdCBzaG91bGQgY29udGFpbiBhdCBsZWFzdCAlZCBlcnJvciBtZXNzYWdlcy4gQ2hlY2sgdGhhdCB0aGUgYWJvdmUgZmlsZSBpcyB0aGUgcmlnaHQgdmVyc2lvbiBmb3IgdGhpcyBwcm9ncmFtIQBOb3QgZW5vdWdoIG1lbW9yeSBmb3IgbWVzc2FnZWZpbGUgJyVzJwBDYW4ndCByZWFkIGZyb20gbWVzc2FnZWZpbGUgJyVzJwBGb3VuZCBpbmNvbXBhdGlibGUgREVDSU1BTCBmaWVsZCAnJXMnIGluICVzOyBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlc2AgRk9SQ0UiIHRvIGZpeCBpdCEARm91bmQgaW5jb21wYXRpYmxlIFlFQVIoeCkgZmllbGQgJyVzJyBpbiAlczsgUGxlYXNlIGRvICJBTFRFUiBUQUJMRSBgJXNgIEZPUkNFIiB0byBmaXggaXQhACclcycgaGFkIG5vIG9yIGludmFsaWQgY2hhcmFjdGVyIHNldCwgYW5kIGRlZmF1bHQgY2hhcmFjdGVyIHNldCBpcyBtdWx0aS1ieXRlLCBzbyBjaGFyYWN0ZXIgY29sdW1uIHNpemVzIG1heSBoYXZlIGNoYW5nZWQARm91bmQgd3Jvbmcga2V5IGRlZmluaXRpb24gaW4gJXM7IFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCVzYCBGT1JDRSAiIHRvIGZpeCBpdCEAVW5hYmxlIHRvIG9wZW4gZmlsZSAlcwBFcnJvciBpbiByZWFkaW5nIGZpbGUgJXMAVGFibGUgJyVzJyB3YXMgY3JlYXRlZCB3aXRoIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgTXlTUUwgYW5kIGNhbm5vdCBiZSByZWFkAFVuYWJsZSB0byByZWFkIHZpZXcgJXMARmlsZSAlcyBoYXMgdW5rbm93biB0eXBlIGluIGl0cyBoZWFkZXIuAEluY29ycmVjdCBpbmZvcm1hdGlvbiBpbiBmaWxlICVzAENhbid0IG9wZW4gYW5kIGxvY2sgcHJpdmlsZWdlIHRhYmxlczogJXMAUGx1Z2luICclcycgY2Fubm90IHN1YnNjcmliZSB0byBNWVNRTF9BVURJVF9BVVRIT1JJWkFUSU9OIGV2ZW50cy4gQ3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuAFBsdWdpbiAnJXMnIGhhcyBpbnZhbGlkIGRhdGEuAEZhdGFsIGVycm9yOiBPT00gd2hpbGUgaW5pdGlhbGl6aW5nIHRpbWUgem9uZXMAQ2FuJ3Qgb3BlbiBhbmQgbG9jayB0aW1lIHpvbmUgdGFibGU6ICVzIHRyeWluZyB0byBsaXZlIHdpdGhvdXQgdGhlbQBGYXRhbCBlcnJvcjogT3V0IG9mIG1lbW9yeSB3aGlsZSBsb2FkaW5nIG15c3FsLnRpbWVfem9uZV9sZWFwX3NlY29uZCB0YWJsZQBGYXRhbCBlcnJvcjogV2hpbGUgbG9hZGluZyBteXNxbC50aW1lX3pvbmVfbGVhcF9zZWNvbmQgdGFibGU6IHRvbyBtdWNoIGxlYXBzAEZhdGFsIGVycm9yOiBFcnJvciB3aGlsZSBsb2FkaW5nIG15c3FsLnRpbWVfem9uZV9sZWFwX3NlY29uZCB0YWJsZQBGYXRhbCBlcnJvcjogSWxsZWdhbCBvciB1bmtub3duIGRlZmF1bHQgdGltZSB6b25lICclcycAQ2FuJ3QgZmluZCBkZXNjcmlwdGlvbiBvZiB0aW1lIHpvbmUgJyUuKnMnAENhbid0IGZpbmQgZGVzY3JpcHRpb24gb2YgdGltZSB6b25lICcldScARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbl90eXBlIHRhYmxlOiB0b28gYmlnIHRyYW5zaXRpb24gdHlwZSBpZABFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uX3R5cGUgdGFibGU6IG5vdCBlbm91Z2ggcm9vbSBmb3IgYWJicmV2aWF0aW9ucwBFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uX3R5cGUgdGFibGUARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbiB0YWJsZTogdG9vIG11Y2ggdHJhbnNpdGlvbnMARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbiB0YWJsZTogYmFkIHRyYW5zaXRpb24gdHlwZSBpZABFcnJvciB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbiBmcm9tIG15c3FsLnRpbWVfem9uZV90cmFuc2l0aW9uIHRhYmxlAGxvYWRpbmcgdGltZSB6b25lIHdpdGhvdXQgdHJhbnNpdGlvbiB0eXBlcwBPdXQgb2YgbWVtb3J5IHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uAFVuYWJsZSB0byBidWlsZCBta3RpbWUgbWFwIGZvciB0aW1lIHpvbmUAT3V0IG9mIG1lbW9yeSB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZQBGYXRhbCBlcnJvcjogT3V0IG9mIG1lbW9yeSB3aGlsZSBzZXR0aW5nIG5ldyB0aW1lIHpvbmUAUmVwbGljYSBTUUwgdGhyZWFkIGlzIHN0b3BwZWQgYmVjYXVzZSBVTlRJTCBjb25kaXRpb24gaXMgYmFkKCVzOiVsbHUpLgBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgaXRzIFVOVElMIHBvc2l0aW9uICVsbHUAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYmVjYXVzZSBVTlRJTCBTUUxfQkVGT1JFX0dUSURTICVzIGlzIGFscmVhZHkgYXBwbGllZABSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgVU5USUwgU1FMX0JFRk9SRV9HVElEUyAlcwBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBiZWNhdXNlIGl0IHJlYWNoZWQgVU5USUwgU1FMX0FGVEVSX0dUSURTICVzAFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGFjY29yZGluZyB0byBVTlRJTCBTUUxfQUZURVJfTVRTX0dBUFMgYXMgaXQgaGFzIHByb2Nlc3NlZCBhbGwgZ2FwIHRyYW5zYWN0aW9ucyBsZWZ0IGZyb20gdGhlIHByZXZpb3VzIHJlcGxpY2Egc2Vzc2lvbi4AR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIGlzIG5vdCBpbnN0YWxsZWQuAFRoZSB0cmFuc2FjdGlvbiBvd25lZCBHVElEIGlzIGFscmVhZHkgaW4gdGhlICVzIHRhYmxlLCB3aGljaCBpcyBjYXVzZWQgYnkgYW4gZXhwbGljaXQgbW9kaWZ5aW5nIGZyb20gdXNlciBjbGllbnQuAEZhaWxlZCB0byBkZWxldGUgdGhlIHJvdzogJyVzJyBmcm9tIHRoZSBndGlkX2V4ZWN1dGVkIHRhYmxlLgBGYWlsZWQgdG8gY29tcHJlc3MgdGhlIGd0aWRfZXhlY3V0ZWQgdGFibGUuAEZhaWxlZCB0byBjb21wcmVzcyB0aGUgZ3RpZF9leGVjdXRlZCB0YWJsZSwgYmVjYXVzZSBpdCBpcyBmYWlsZWQgdG8gYWxsb2NhdGUgdGhlIFRIRC4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhyZWFkIGF0dHJpYnV0ZSB3aGVuIGNyZWF0aW5nIGNvbXByZXNzaW9uIHRocmVhZC4AQ2FuIG5vdCBjcmVhdGUgdGhyZWFkIHRvIGNvbXByZXNzIGd0aWRfZXhlY3V0ZWQgdGFibGUgKGVycm5vPSAlZCkAQ291bGQgbm90IGpvaW4gZ3RpZF9leGVjdXRlZCB0YWJsZSBjb21wcmVzc2lvbiB0aHJlYWQuIGVycm9yOiVkAENhbid0IHN0YXJ0IHNlcnZlciA6IEluaXRpYWxpemUgc2VjdXJpdHkgZGVzY3JpcHRvcjogJXMAQ2FuJ3Qgc3RhcnQgc2VydmVyIDogU2V0IHNlY3VyaXR5IGRlc2NyaXB0b3I6ICVzAENhbid0IHN0YXJ0IHNlcnZlciA6IE5hbWVkIFBpcGUgIiVzIiBhbHJlYWR5IGluIHVzZS4ATkRCIFJlcGxpY2EgOiBBdCBTUUwgdGhyZWFkIHN0YXJ0IGFwcGx5aW5nIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgZnJvbSBTb3VyY2UgU2VydmVySWQgJXUgd2hpY2ggaXMgbG93ZXIgdGhhbiBwcmV2aW91c2x5IGFwcGxpZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KS4gIEdyb3VwIFNvdXJjZSBMb2cgOiAlcyAgR3JvdXAgU291cmNlIExvZyBQb3MgOiAlbGx1LiAgQ2hlY2sgcmVwbGljYSBwb3NpdGlvbmluZy4ATkRCIFJlcGxpY2EgOiBTUUwgdGhyZWFkIHN0b3BwZWQgYXMgYXBwbHlpbmcgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBmcm9tIFNvdXJjZSBTZXJ2ZXJJZCAldSB3aGljaCBpcyBsb3dlciB0aGFuIHByZXZpb3VzbHkgYXBwbGllZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpLiAgR3JvdXAgU291cmNlIExvZyA6ICVzICBHcm91cCBTb3VyY2UgTG9nIFBvcyA6ICVsbHUATkRCIFJlcGxpY2EgOiBTUUwgdGhyZWFkIHN0b3BwZWQgYXMgYXR0ZW1wdGVkIHRvIHJlYXBwbHkgYWxyZWFkeSBjb21taXR0ZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSBmcm9tIHNlcnZlciBpZCAldS4gIEdyb3VwIFNvdXJjZSBMb2cgOiAlcyAgR3JvdXAgU291cmNlIExvZyBQb3MgOiAlbGx1LgBOREIgUmVwbGljYSA6IFNRTCB0aHJlYWQgc3RvcHBlZCBhcyBhdHRlbXB0aW5nIHRvIGFwcGx5IG5ldyBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIHdoaWxlIGxvd2VyIHJlY2VpdmVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgaGFzIG5vdCBiZWVuIGNvbW1pdHRlZC4gIFNvdXJjZSBzZXJ2ZXIgaWQgOiAldS4gIEdyb3VwIFNvdXJjZSBMb2cgOiAlcyAgR3JvdXAgU291cmNlIExvZyBQb3MgOiAlbGx1LgBOREIgUmVwbGljYTogbWlzc2luZyBkYXRhIGZvciAlcyB0aW1lc3RhbXAgY29sdW1uICV1LgBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgbG9nZ2luZyBleGNlcHRpb25zIHRvICVzLiVzAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyA6ICVzLCBsb3cgZXBvY2ggcmVzb2x1dGlvbgBGb3VuZCB1bmV4cGVjdGVkIGZpZWxkIHR5cGUgJXUARmFpbGVkIHRvIGNyZWF0ZSBOZGJJbmZvAEZhaWxlZCB0byBpbml0IE5kYkluZm8AbmRiX3NlcmlhbGl6ZV9jb25kOiBVbmV4cGVjdGVkIG1pc21hdGNoIG9mIGZvdW5kIGFuZCBleHBlY3RlZCBudW1iZXIgb2YgZnVuY3Rpb24gYXJndW1lbnRzICV1ACVzIC0gJXMuJXMAJXMASW5mbyB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgb3BlbmVkLgBJbmZvIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBzY2FubmVkLgBDb3JydXB0ZWQgdGFibGUgJXMuJXMuIENoZWNrIG91dCB0YWJsZSBkZWZpbml0aW9uLgBJbmZvIHRhYmxlIGhhcyBhIHByb2JsZW0gd2l0aCBpdHMga2V5IGZpZWxkKHMpLiBUYWJsZSAnJXMuJXMnIGV4cGVjdGVkIGZpZWxkICMldSB0byBiZSAnJXMnIGJ1dCBmb3VuZCAnJXMnIGluc3RlYWQuAENob29zaW5nIHdvcmtlciBpZCAlbHUsIHRoZSBmb2xsb3dpbmcgaXMgZ29pbmcgdG8gYmUgJWx1AFRyYW5zYWN0aW9uIGlzIHRhZ2dlZCB3aXRoIGluY29uc2lzdGVudCBsb2dpY2FsIHRpbWVzdGFtcHM6IHNlcXVlbmNlX251bWJlciAoJWxsZCkgPD0gbGFzdF9jb21taXR0ZWQgKCVsbGQpAFRyYW5zYWN0aW9uJ3Mgc2VxdWVuY2UgbnVtYmVyIGlzIGluY29uc2lzdGVudCB3aXRoIHRoYXQgb2YgYSBwcmVjZWRpbmcgb25lOiBzZXF1ZW5jZV9udW1iZXIgKCVsbGQpIDw9IHByZXZpb3VzIHNlcXVlbmNlX251bWJlciAoJWxsZCkARm9yIHRoZSBjcmVhdGlvbiBvZiByZXBsaWNhdGlvbiBjaGFubmVscyB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSBhbmQgYXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3JpZXMgbXVzdCBiZSBzZXQgdG8gVEFCTEUARm9yIHRoZSBjcmVhdGlvbiBvZiByZXBsaWNhdGlvbiBjaGFubmVscyB0aGUgc2VydmVyIGlkIG11c3QgYmUgZGlmZmVyZW50IGZyb20gMABSZXBsaWNhOiBXcm9uZyByZXBvc2l0b3J5LiBSZXBvc2l0b3J5IHNob3VsZCBiZSBUQUJMRQBFcnJvciBjcmVhdGluZyBjb25uZWN0aW9uIG1ldGFkYXRhOiAlcy4ARXJyb3IgY2hhbmdpbmcgdGhlIHR5cGUgb2YgY29ubmVjdGlvbiBtZXRhZGF0YSdzIHJlcG9zaXRvcnk6ICVzLgBJdCBpcyBub3QgcG9zc2libGUgdG8gY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSByZWxheSBsb2cgcmVwb3NpdG9yeSBiZWNhdXNlIHRoZXJlIGFyZSB3b3JrZXJzIHJlcG9zaXRvcmllcyB3aXRoIHBvc3NpYmxlIGV4ZWN1dGlvbiBnYXBzLiBUaGUgdmFsdWUgb2YgLS1yZWxheV9sb2dfaW5mb19yZXBvc2l0b3J5IGlzIGFsdGVyZWQgdG8gb25lIG9mIHRoZSBmb3VuZCBXb3JrZXIgcmVwb3NpdG9yaWVzLiBUaGUgZ2FwcyBoYXZlIHRvIGJlIHNvcnRlZCBvdXQgYmVmb3JlIHJlc3VtaW5nIHdpdGggdGhlIHR5cGUgY2hhbmdlLgBFcnJvciBjcmVhdGluZyBhcHBsaWVyIG1ldGFkYXRhOiAlcy4ARXJyb3IgY2hhbmdpbmcgdGhlIHR5cGUgb2YgYXBwbGllciBtZXRhZGF0YSdzIHJlcG9zaXRvcnk6ICVzLgBDb3VsZCBub3QgZGVsZXRlIGZyb20gUmVwbGljYSBXb3JrZXJzIGluZm8gcmVwb3NpdG9yeS4AQ291bGQgbm90IHN0b3JlIHRoZSByZXNldCBSZXBsaWNhIFdvcmtlciBzdGF0ZSBpbnRvIHRoZSByZXBsaWNhIGluZm8gcmVwb3NpdG9yeS4ARXJyb3IgaW4gY2hlY2tpbmcgJXMgcmVwb3NpdG9yeSBpbmZvIHR5cGUgb2YgJXMuAFJlcGxpY2E6ICVzAFJlcGxpY2E6IENvdWxkIG5vdCBjcmVhdGUgY2hhbm5lbCBsaXN0AFJlcGxpY2E6IFRoaXMgcmVwbGljYSB3YXMgYSBtdWx0aXNvdXJjZWQgcmVwbGljYSBwcmV2aW91c2x5IHdoaWNoIGlzIHN1cHBvcnRlZCBvbmx5IGJ5IGJvdGggVEFCTEUgYmFzZWQgY29ubmVjdGlvbiBtZXRhZGF0YSBhbmQgYXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3JpZXMuIEZvdW5kIG9uZSBvciBib3RoIG9mIHRoZSBpbmZvIHJlcG9zIHRvIGJlIHR5cGUgRklMRS4gU2V0IGJvdGggcmVwb3MgdG8gdHlwZSBUQUJMRS4AUmVwbGljYTogRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGZvciBjaGFubmVsICclcyc7IGl0cyByZWNvcmQgbWF5IHN0aWxsIGJlIHByZXNlbnQgaW4gdGhlIGFwcGxpZXIgbWV0YWRhdGEgcmVwb3NpdG9yeSwgY29uc2lkZXIgZGVsZXRpbmcgaXQuAEZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSVzAFJlcGxpY2E6IEZhaWxlZCB0byBjcmVhdGUgYSBjaGFubmVsIGZyb20gY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5LgBGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IGluZm8gZmlsZSAoZmlsZSAnJXMnLCBlcnJubyAlZCkARmFpbGVkIHRvIGNyZWF0ZSBhIGNhY2hlIG9uIGluZm8gZmlsZSAoZmlsZSAnJXMnKQBGYWlsZWQgdG8gb3BlbiB0aGUgZXhpc3RpbmcgaW5mbyBmaWxlIChmaWxlICclcycsIGVycm5vICVkKQBTZXJ2ZXIgb3ZlcmNvbWVzIHRoZSB0ZW1wb3JhcnkgJ291dCBvZiBtZW1vcnknIGluICclZCcgdHJpZXMgd2hpbGUgYWxsb2NhdGluZyBhIG5ldyBjaHVuayBvZiBpbnRlcnZhbHMgZm9yIHN0b3JpbmcgR1RJRHMuAFVua25vd24gY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLnNlcnZlcl9jb3N0IHRhYmxlAEludmFsaWQgdmFsdWUgZm9yIGNvc3QgY29uc3RhbnQgIiVzIiBpbiBteXNxbC5zZXJ2ZXJfY29zdCB0YWJsZTogJS4xZgBVbmtub3duIGNvc3QgY29uc3RhbnQgIiVzIiBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZQBVbmtub3duIHN0b3JhZ2UgZW5naW5lICIlcyIgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUASW52YWxpZCBkZXZpY2UgdHlwZSAlZCBmb3IgIiVzIiBzdG9yYWdlIGVuZ2luZSBmb3IgY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlAEludmFsaWQgdmFsdWUgZm9yIGNvc3QgY29uc3RhbnQgIiVzIiBmb3IgIiVzIiBzdG9yYWdlIGVuZ2luZSBhbmQgZGV2aWNlIHR5cGUgJWQgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGU6ICUuMWYARXJyb3Igd2hpbGUgcmVhZGluZyBmcm9tIG15c3FsLnNlcnZlcl9jb3N0IHRhYmxlLgBFcnJvciB3aGlsZSByZWFkaW5nIGZyb20gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUuAEZhaWxlZCB0byBvcGVuIG9wdGltaXplciBjb3N0IGNvbnN0YW50IHRhYmxlcwBVbnN1cHBvcnRlZCBub24taWdub3JhYmxlIGV2ZW50IGZlZCBpbnRvIHRoZSBldmVudCBzdHJlYW0uAEdUSURfTE9HX0VWRU5UIG9yIEFOT05ZTU9VU19HVElEX0xPR19FVkVOVCBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtICVzLgBRVUVSWShCRUdJTikgaXMgbm90IGV4cGVjdGVkIGluIGFuIGV2ZW50IHN0cmVhbSBpbiB0aGUgbWlkZGxlIG9mIGEgJXMuAFFVRVJZKENPTU1JVCBvciBST0xMQkFDSykgb3IgWElEX0xPR19FVkVOVCBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtICVzLgBRVUVSWShYQSBST0xMQkFDSykgaXMgbm90IGV4cGVjdGVkIGluIGFuIGV2ZW50IHN0cmVhbSAlcy4ARXZlbnQgU2NoZWR1bGVyOiBbJXNdLlslcy4lc10gZXhlY3V0aW9uIGZhaWxlZCwgZmFpbGVkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlci4ARXZlbnQgU2NoZWR1bGVyOiBbJXNdLlslcy4lc10gZXhlY3V0aW9uIGZhaWxlZCwgdXNlciBubyBsb25nZXIgaGFzIEVWRU5UIHByaXZpbGVnZS4ARXZlbnQgU2NoZWR1bGVyOiAlc2Vycm9yIGR1cmluZyBjb21waWxhdGlvbiBvZiAlcy4lcwBFdmVudCBTY2hlZHVsZXI6IERyb3BwaW5nICVzLiVzAE5kYiBzY2hlbWFbJXMuJXNdOiAlcwBJbiBSQlIgbW9kZSwgUmVwbGljYSByZWNlaXZlZCBpbmNvbXBhdGlibGUgREVDSU1BTCBmaWVsZCAob2xkLXN0eWxlIGRlY2ltYWwgZmllbGQpIGZyb20gU291cmNlIHdoaWxlIGNyZWF0aW5nIGNvbnZlcnNpb24gdGFibGUuIFBsZWFzZSBjb25zaWRlciBjaGFuZ2luZyBkYXRhdHlwZSBvbiBTb3VyY2UgdG8gbmV3IHN0eWxlIGRlY2ltYWwgYnkgZXhlY3V0aW5nIEFMVEVSIGNvbW1hbmQgZm9yIGNvbHVtbiBOYW1lOiAlcy4lcy4lcy4Acm9vdEBsb2NhbGhvc3QgaXMgY3JlYXRlZCB3aXRoIGFuIGVtcHR5IHBhc3N3b3JkICEgUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyBvZmYgdGhlIC0taW5pdGlhbGl6ZS1pbnNlY3VyZSBvcHRpb24uAEEgdGVtcG9yYXJ5IHBhc3N3b3JkIGlzIGdlbmVyYXRlZCBmb3Igcm9vdEBsb2NhbGhvc3Q6ICVzAEZhaWxlZCB0byBvcGVuIHRoZSBib290c3RyYXAgZmlsZSAlcwBCb290c3RyYXBwaW5nIGNvbXBsZXRlAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBoYXMgZmlsZXMgaW4gaXQuIEFib3J0aW5nLgAtLWluaXRpYWxpemUgc3BlY2lmaWVkIG9uIGFuIGV4aXN0aW5nIGRhdGEgZGlyZWN0b3J5LgAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgZGF0YSBkaXJlY3RvcnkgZXhpc3RzIGFuZCB0aGUgcGF0aCBpcyB0b28gbG9uZy4gQWJvcnRpbmcuAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIG5vdCB3cml0YWJsZS4gQWJvcnRpbmcuAENyZWF0aW5nIHRoZSBkYXRhIGRpcmVjdG9yeSAlcwBTdGFydCBiaW5sb2dfZHVtcCB0byBzb3VyY2VfdGhyZWFkX2lkKCV1KSByZXBsaWNhX3NlcnZlcigldSksIHBvcyglcywgJWxsdSkAc291cmNlIHNlbmRzIGhlYXJ0YmVhdCBtZXNzYWdlAHRoZSByZXN0IG9mIGhlYXJ0YmVhdCBpbmZvIHNraXBwZWQgLi4uAFNvdXJjZSBpcyBjb25maWd1cmVkIHRvIGxvZyByZXBsaWNhdGlvbiBldmVudHMgd2l0aCBjaGVja3N1bSwgYnV0IHdpbGwgbm90IHNlbmQgc3VjaCBldmVudHMgdG8gcmVwbGljYXMgdGhhdCBjYW5ub3QgcHJvY2VzcyB0aGVtAE5EQjogUXVlcnkgJyVzJyBmYWlsZWQsIGVycm9yOiAlZDogJXMAS2lsbGluZyB0aHJlYWQgJWx1AFBsdWdpbiAlcyBpcyBkZWluaXRpYWxpemluZyBhIHRocmVhZCBidXQgbGVmdCBhIHNlc3Npb24gYXR0YWNoZWQuIERldGFjaGluZyBpdCBmb3JjZWZ1bGx5LgBGYWlsZWQgdG8gZGV0YWNoIHRoZSBzZXNzaW9uLgBDbG9zZWQgZm9yY2VmdWxseSAldSBzZXNzaW9uJXMgbGVmdCBvcGVuZWQgYnkgcGx1Z2luICVzAEZhaWxlZCB0byBkZWNyZW1lbnQgdGhlIG51bWJlciBvZiB0aHJlYWRzAFBsdWdpbiAlcyBkaWQgbm90IGRlaW5pdGlhbGl6ZSAldSB0aHJlYWRzAEtpbGxlZCAldSB0aHJlYWRzIG9mIHBsdWdpbiAlcwBOREIgUmVwbGljYSA6IENvdWxkIG5vdCBkZXRlcm1pbmUgbWF4aW11bSByZXBsaWNhdGVkIGVwb2NoIGZyb20gJXMuJXMgYXQgUmVwbGljYSBzdGFydCwgZXJyb3IgJXUgJXMATkRCIFJlcGxpY2EgOiBNYXhSZXBsaWNhdGVkRXBvY2ggc2V0IHRvICVsbHUgKCV1LyV1KSBhdCBSZXBsaWNhIHN0YXJ0AE5EQjogTm9kZUlEIGlzICVsdSwgbWFuYWdlbWVudCBzZXJ2ZXIgJyVzOiVsdScAdGlkICV1OiBub2RlWyV1XSB0cmFuc2FjdGlvbl9oaW50PSV1LCB0cmFuc2FjdGlvbl9ub19oaW50PSV1AE5EQiBJbnRlcm5hbCBlcnJvcjogRGVmYXVsdCB2YWx1ZXMgZGlmZmVyIGZvciBjb2x1bW4gJXUsIG5kYl9kZWZhdWx0OiAlZABOREIgSW50ZXJuYWwgZXJyb3I6IENvbHVtbiAldSBoYXMgbmF0aXZlIGRlZmF1bHQsIGJ1dCBzaG91bGRuJ3QuIEZsYWdzPSV1LCB0eXBlPSV1AGZpZWxkWyBuYW1lOiAnJXMnLCB0eXBlOiAldSwgcmVhbF90eXBlOiAldSwgZmxhZ3M6IDB4JXgsIGlzX251bGw6ICVkXQBuZGJDb2xbbmFtZTogJyVzJywgdHlwZTogJXUsIGNvbHVtbl9ubzogJWQsIG51bGxhYmxlOiAlZF0AZml4X3VuaXF1ZV9pbmRleF9hdHRyX29yZGVyOiBteV9tYWxsb2MoJXUpIGZhaWx1cmUATkRCIFJlcGxpY2EgOiBNYWxmb3JtZWQgZXZlbnQgcmVjZWl2ZWQgb24gdGFibGUgJXMgY2Fubm90IHBhcnNlLiAgU3RvcHBpbmcgUmVwbGljYS4ATkRCIFJlcGxpY2EgOiBDb25mbGljdCBmdW5jdGlvbiAlcyBkZWZpbmVkIG9uIHRhYmxlICVzIHJlcXVpcmVzIG5kYl9yZXBsaWNhX2NvbmZsaWN0X3JvbGUgdmFyaWFibGUgdG8gYmUgc2V0LiAgU3RvcHBpbmcgcmVwbGljYS4ATkRCIFJlcGxpY2EgOiBUcmFuc2FjdGlvbmFsIGNvbmZsaWN0IGRldGVjdGlvbiBkZWZpbmVkIG9uIHRhYmxlICVzLCBidXQgZXZlbnRzIHJlY2VpdmVkIHdpdGhvdXQgdHJhbnNhY3Rpb24gaWRzLiAgQ2hlY2sgLS1uZGItbG9nLXRyYW5zYWN0aW9uLWlkIHNldHRpbmcgb24gdXBzdHJlYW0gQ2x1c3Rlci4ATkRCIFJlcGxpY2EgOiBCaW5sb2cgZXZlbnQgb24gdGFibGUgJXMgbWlzc2luZyBpbmZvIG5lY2Vzc2FyeSBmb3IgY29uZmxpY3QgZGV0ZWN0aW9uLiAgQ2hlY2sgYmlubG9nIGZvcm1hdCBvcHRpb25zIG9uIHVwc3RyZWFtIGNsdXN0ZXIuAEVycm9yICVsdSBpbiByZWFkQXV0b0luY3JlbWVudFZhbHVlKCk6ICVzAGZvdW5kIHVuY29tbWl0dGVkIGF1dG9jb21taXQrcmJ3ciB0cmFuc2FjdGlvbiwgY29tbWl0IHN0YXR1czogJWQATmRiIHJlcGxpY2EgcmV0cmllZCB0cmFuc2FjdGlvbiAldSB0aW1lKHMpIGluIHZhaW4uICBHaXZpbmcgdXAuAEVycm9yICVsdSBpbiA6OnVwZGF0ZV9jcmVhdGVfaW5mbygpOiAlcwBOREI6IGFsbG9jYXRpbmcgdGFibGUgc2hhcmUgZm9yICVzIGZhaWxlZABOREIgQmlubG9nOiAoJWQpJXMATkRCIEJpbmxvZzogQ1JFQVRFIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBGQUlMRUQgQ1JFQVRFIFRBQkxFIGV2ZW50IG9wZXJhdGlvbnMuIEV2ZW50OiAlcwBOREIgQmlubG9nOiBSRU5BTUUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IEZBSUxFRCBjcmVhdGUgZXZlbnQgb3BlcmF0aW9ucyBkdXJpbmcgUkVOQU1FLiBFdmVudCAlcwBVbmV4cGVjdGVkIHJlbmFtZSBjYXNlIGRldGVjdGVkLCBzcWxfY29tbWFuZDogJWQARXJyb3IgJWx1IGluIDo6Z2V0X2F1dG9faW5jcmVtZW50KCk6ICVzAENhbGxpbmcgbmRiY2x1c3Rlcl9jcmVhdGVfYmlubG9nX3NldHVwKCVzKSBpbiA6Om9wZW4AdGFibGUgJyVzJyBvcGVuZWQgcmVhZCBvbmx5AE5EQjogJy0taW5pdGlhbGl6ZScgLT4gbmRiY2x1c3RlciBwbHVnaW4gZGlzYWJsZWQATkRCOiBDaGFuZ2VkIGdsb2JhbCB2YWx1ZSBvZiBiaW5sb2dfZm9ybWF0IGZyb20gU1RBVEVNRU5UIHRvIE1JWEVEAE5EQl9TSEFSRTogdHJhaWxpbmcgc2hhcmUgJXMsIHJlbGVhc2VkIGJ5IGNsb3NlX2NhY2hlZF90YWJsZXMATkRCX1NIQVJFOiAlcyBhbHJlYWR5IGV4aXN0cyB1c2VfY291bnQ9JWQuIE1vdmluZyBhd2F5IGZvciBzYWZldHksIGJ1dCBwb3NzaWJsZSBtZW1sZWFrLgBoYW5kbGVfdHJhaWxpbmdfc2hhcmU6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9nZXRfc2hhcmU6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9yZWFsX2ZyZWVfc2hhcmU6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9yZWFsX2ZyZWVfc2hhcmU6ICVzLCBzdGlsbCBvcGVuIC0gaWdub3JlZCAnZnJlZScgKGxlYWtlZD8pAG5kYmNsdXN0ZXJfZnJlZV9zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX21hcmtfc2hhcmVfZHJvcHBlZDogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX21hcmtfc2hhcmVfZHJvcHBlZDogZGVzdHJveXMgc2hhcmUgJXMAQ291bGQgbm90IGFsbG9jYXRlIFRoZF9uZGIgb2JqZWN0AE5EQiBCaW5sb2c6IE5kYiB0YWJsZXMgaW5pdGlhbGx5IHJlYWQgb25seS4AbmRiIHV0aWwgdGhyZWFkOiBtYWxsb2MgZmFpbHVyZSwgcXVlcnkgY2FjaGUgbm90IG1haW50YWluZWQgcHJvcGVybHkAVHJ5aW5nIHRvIHNldCBuZGJfcmVjdl90aHJlYWRfY3B1X21hc2sgdG8gaWxsZWdhbCB2YWx1ZSA9ICVzLCBpZ25vcmVkAFRyeWluZyB0byBzZXQgdG9vIG1hbnkgQ1BVJ3MgaW4gbmRiX3JlY3ZfdGhyZWFkX2NwdV9tYXNrLCBpZ25vcmVkIHRoaXMgdmFyaWFibGUsIGVycm9uZXVzIHZhbHVlID0gJXMAZGJ1Z19jaGVja19zaGFyZXMgb3BlbjoAICAlcy4lczogc3RhdGU6ICVzKCV1KSB1c2VfY291bnQ6ICV1AGRidWdfY2hlY2tfc2hhcmVzIGRyb3BwZWQ6AEludmFsaWQgKG9sZD8pIHRhYmxlIG9yIGRhdGFiYXNlIG5hbWUgJyVzJwBSZWNvdmVyaW5nIGFmdGVyIGEgY3Jhc2ggdXNpbmcgJXMAQ2Fubm90IHBlcmZvcm0gYXV0b21hdGljIGNyYXNoIHJlY292ZXJ5IHdoZW4gLS10Yy1oZXVyaXN0aWMtcmVjb3ZlciBpcyB1c2VkAEJhZCBtYWdpYyBoZWFkZXIgaW4gdGMgbG9nAFJlY292ZXJ5IGZhaWxlZCEgWW91IG11c3QgZW5hYmxlIGV4YWN0bHkgJWQgc3RvcmFnZSBlbmdpbmVzIHRoYXQgc3VwcG9ydCB0d28tcGhhc2UgY29tbWl0IHByb3RvY29sAENyYXNoIHJlY292ZXJ5IGZhaWxlZC4gRWl0aGVyIGNvcnJlY3QgdGhlIHByb2JsZW0gKGlmIGl0J3MsIGZvciBleGFtcGxlLCBvdXQgb2YgbWVtb3J5IGVycm9yKSBhbmQgcmVzdGFydCwgb3IgZGVsZXRlIHRjIGxvZyBhbmQgc3RhcnQgbXlzcWxkIHdpdGggLS10Yy1oZXVyaXN0aWMtcmVjb3Zlcj17Y29tbWl0fHJvbGxiYWNrfQBIZXVyaXN0aWMgY3Jhc2ggcmVjb3ZlcnkgbW9kZQBIZXVyaXN0aWMgY3Jhc2ggcmVjb3ZlcnkgZmFpbGVkAFBsZWFzZSByZXN0YXJ0IG15c3FsZCB3aXRob3V0IC0tdGMtaGV1cmlzdGljLXJlY292ZXIARmFpbGVkIHRvIGNyZWF0ZSBvciByZWNvdmVyIHJlcGxpY2F0aW9uIGluZm8gcmVwb3NpdG9yaWVzLgBEZXRlY3RlZCBtaXNjb25maWd1cmF0aW9uOiByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBjb25maWd1cmVkIHdpdGggQVVUT19QT1NJVElPTiA9IDEsIGJ1dCB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggLS1ndGlkLW1vZGU9b2ZmLiBFaXRoZXIgcmVjb25maWd1cmUgcmVwbGljYXRpb24gdXNpbmcgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDAgRk9SIENIQU5ORUwgJyUuMTkycycsIG9yIGNoYW5nZSBHVElEX01PREUgdG8gc29tZSB2YWx1ZSBvdGhlciB0aGFuIE9GRiwgYmVmb3JlIHN0YXJ0aW5nIHRoZSByZXBsaWNhIHJlY2VpdmVyIHRocmVhZC4AUmVwbGljYTogQ291bGQgbm90IHN0YXJ0IHJlcGxpY2EgZm9yIGNoYW5uZWwgJyVzJy4gb3BlcmF0aW9uIGRpc2NvbnRpbnVlZABSZXBsaWNhOiBDb3VsZCBub3Qgc3RvcCByZXBsaWNhIGZvciBjaGFubmVsICclcycgb3BlcmF0aW9uIGRpc2NvbnRpbnVlZABFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IENvdWxkIG5vdCBsb2NhdGUgcm90YXRlIGV2ZW50IGZyb20gdGhlIHNvdXJjZS4ARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiBFcnJvciByZWFkaW5nIGV2ZW50cyBmcm9tIHJlbGF5IGxvZzogJWQARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiBFcnJvciB3aGlsZSBmcmVlaW5nIElPX0NBQ0hFIG9iamVjdABSZWxheSBsb2cgcmVjb3Zlcnkgc2tpcHBlZCBmb3IgZ3JvdXAgcmVwbGljYXRpb24gY2hhbm5lbC4ARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiAlcwBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IENvdWxkIG5vdCByZWFkIHJlbGF5IGxvZyBpbmRleCBmaWxlIGR1ZSB0byBhbiBJTyBlcnJvci4AUmVjb3ZlcnkgZnJvbSBzb3VyY2UgcG9zICVsZCBhbmQgZmlsZSAlcyVzLiBQcmV2aW91cyByZWxheSBsb2cgcG9zIGFuZCByZWxheSBsb2cgZmlsZSBoYWQgYmVlbiBzZXQgdG8gJWxsZCwgJXMgcmVzcGVjdGl2ZWx5LgBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IHJlcGxpY2F0ZV9zYW1lX3NlcnZlcl9pZCBpcyBpbiB1c2UgYW5kIHNxbCB0aHJlYWQncyBwb3NpdGlvbnMgYXJlIG5vdCBpbml0aWFsaXplZCwgaGVuY2UgcmVsYXkgbG9nIHJlY292ZXJ5IGNhbm5vdCBoYXBwZW4uAE1UQSByZWNvdmVyeTogc3RhcnRpbmcgY29vcmRpbmF0b3IgdGhyZWFkIHRvIGZpbGwgTVRBIGdhcHMuAE1UQSByZWNvdmVyeTogZmFpbGVkIHRvIHN0YXJ0IHRoZSBjb29yZGluYXRvciB0aHJlYWQuIENoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4ATVRBIHJlY292ZXJ5OiBhdXRvbWF0aWMgcmVjb3ZlcnkgZmFpbGVkLiBFaXRoZXIgdGhlIHJlcGxpY2Egc2VydmVyIGhhZCBzdG9wcGVkIGR1ZSB0byBhbiBlcnJvciBkdXJpbmcgYW4gZWFybGllciBzZXNzaW9uIG9yIHJlbGF5IGxvZ3MgYXJlIGNvcnJ1cHRlZC5GaXggdGhlIGNhdXNlIG9mIHRoZSByZXBsaWNhIHNpZGUgZXJyb3IgYW5kIHJlc3RhcnQgdGhlIHJlcGxpY2Egc2VydmVyIG9yIGNvbnNpZGVyIHVzaW5nIFJFU0VUIFJFUExJQ0EuAEZhaWxlZCB0byBvcGVuIHRoZSByZWxheSBsb2cgJyVzJyAocmVsYXlfbG9nX3BvcyAlcykuAE1UQSByZWNvdmVyeTogY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4AU2VydmVyIGlkIG5vdCBzZXQsIHdpbGwgbm90IHN0YXJ0IHJlcGxpY2ElcwBDYW4ndCBjcmVhdGUgcmVwbGljYSB0aHJlYWQlcy4AVGhlIHJlcGxpY2EgSU8gdGhyZWFkJXMgd2FzIGtpbGxlZCB3aGlsZSBleGVjdXRpbmcgaW5pdGlhbGl6YXRpb24gcXVlcnkgJyVzJwBUaGUgc291cmNlJ3MgVVVJRCBoYXMgY2hhbmdlZCwgYWx0aG91Z2ggdGhpcyBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3MgeW91IGhhdmUgY2hhbmdlZCBpdCBtYW51YWxseS4gVGhlIG9sZCBVVUlEIHdhcyAlcy4ARm91bmQgYSBzb3VyY2Ugd2l0aCBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBvbGRlciB0aGFuIDUuMC4gV2l0aCBjaGVja3N1bXMgZW5hYmxlZCBvbiB0aGUgcmVwbGljYSwgcmVwbGljYXRpb24gbWlnaHQgbm90IHdvcmsgY29ycmVjdGx5LiBUbyBlbnN1cmUgY29ycmVjdCByZXBsaWNhdGlvbiwgcmVzdGFydCB0aGUgcmVwbGljYSBzZXJ2ZXIgd2l0aCAtLXJlcGxpY2Ffc3FsX3ZlcmlmeV9jaGVja3N1bT0wLgAiU0VMRUNUIFVOSVhfVElNRVNUQU1QKCkiIGZhaWxlZCBvbiBzb3VyY2UsIGRvIG5vdCB0cnVzdCBjb2x1bW4gU2Vjb25kc19CZWhpbmRfU291cmNlIG9mIFNIT1cgUkVQTElDQSBTVEFUVVMuIEVycm9yOiAlcyAoJWQpAEZhaWxlZCB0byBmbHVzaCBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkuAFRoZSBsZW5ndGggb2YgcmVwb3J0X2hvc3QgaXMgJXp1LiBJdCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IGxlbmd0aCglZCksIHNvIHRoaXMgcmVwbGljYSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCB0byB0aGUgc291cmNlJXMuAFRoZSBsZW5ndGggb2YgcmVwb3J0X3VzZXIgaXMgJXp1LiBJdCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IGxlbmd0aCglZCksIHNvIHRoaXMgcmVwbGljYSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCB0byB0aGUgc291cmNlJXMuAFRoZSBsZW5ndGggb2YgcmVwb3J0X3Bhc3N3b3JkIGlzICV6dS4gSXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heCBsZW5ndGgoJWQpLCBzbyB0aGlzIHJlcGxpY2EgY2Fubm90IGJlIHJlZ2lzdGVyZWQgdG8gdGhlIHNvdXJjZSVzLgBFcnJvciBvbiAlczogJWQgICVzLCB3aWxsIHJldHJ5IGluICVkIHNlY3MARXJyb3IgcmVhZGluZyBwYWNrZXQgZnJvbSBzZXJ2ZXIlczogJXMgKHNlcnZlcl9lcnJubz0lZCkAUmVwbGljYSVzOiByZWNlaXZlZCBlbmQgcGFja2V0IGZyb20gc2VydmVyIGR1ZSB0byBkdW1wIHRocmVhZCBiZWluZyBraWxsZWQgb24gc291cmNlLiBEdW1wIHRocmVhZHMgYXJlIGtpbGxlZCBmb3IgZXhhbXBsZSBkdXJpbmcgc291cmNlIHNodXRkb3duLCBleHBsaWNpdGx5IGJ5IGEgdXNlciwgb3Igd2hlbiB0aGUgc291cmNlIHJlY2VpdmVzIGEgYmlubG9nIHNlbmQgcmVxdWVzdCBmcm9tIGEgZHVwbGljYXRlIHNlcnZlciBVVUlEIDwlcz4gOiBFcnJvciAlcwBNdWx0aS10aHJlYWRlZCByZXBsaWNhIHN0YXRpc3RpY3Mlczogc2Vjb25kcyBlbGFwc2VkID0gJWx1OyBldmVudHMgYXNzaWduZWQgPSAlbGx1OyB3b3JrZXIgcXVldWVzIGZpbGxlZCBvdmVyIG92ZXJydW4gbGV2ZWwgPSAlbHU7IHdhaXRlZCBkdWUgYSBXb3JrZXIgcXVldWUgZnVsbCA9ICVsdTsgd2FpdGVkIGR1ZSB0aGUgdG90YWwgc2l6ZSA9ICVsdTsgd2FpdGVkIGF0IGNsb2NrIGNvbmZsaWN0cyA9ICVsbHUgd2FpdGVkIChjb3VudCkgd2hlbiBXb3JrZXJzIG9jY3VwaWVkID0gJWx1IHdhaXRlZCB3aGVuIFdvcmtlcnMgb2NjdXBpZWQgPSAlbGx1AFJlcGxpY2ElczogTVRBIFJlY292ZXJ5IGhhcyBjb21wbGV0ZWQgYXQgcmVsYXkgbG9nICVzLCBwb3NpdGlvbiAlbGx1IHNvdXJjZSBsb2cgJXMsIHBvc2l0aW9uICVsbHUuAEVycm9yIGluaXRpYWxpemluZyByZWxheSBsb2cgcG9zaXRpb24lczogJXMAUmVwbGljYSBJL08gdGhyZWFkJXM6IGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzQCVzOiVkJyxyZXBsaWNhdGlvbiBzdGFydGVkIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzAFJlcGxpY2EgSS9PIHRocmVhZCVzIGtpbGxlZCB3aGlsZSBjb25uZWN0aW5nIHRvIHNvdXJjZQBSZXBsaWNhIEkvTyB0aHJlYWQgY291bGRuJ3QgcmVnaXN0ZXIgb24gc291cmNlAEZvcmNpbmcgdG8gcmVjb25uZWN0IHJlcGxpY2EgSS9PIHRocmVhZCVzAEZhaWxlZCBvbiByZXF1ZXN0X2R1bXAoKSVzAExvZyBlbnRyeSBvbiBzb3VyY2UgaXMgbG9uZ2VyIHRoYW4gcmVwbGljYV9tYXhfYWxsb3dlZF9wYWNrZXQgKCVsdSkgb24gcmVwbGljYS4gSWYgdGhlIGVudHJ5IGlzIGNvcnJlY3QsIHJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIGEgaGlnaGVyIHZhbHVlIG9mIHJlcGxpY2FfbWF4X2FsbG93ZWRfcGFja2V0AFN0b3BwaW5nIHJlcGxpY2EgSS9PIHRocmVhZCBkdWUgdG8gb3V0LW9mLW1lbW9yeSBlcnJvciBmcm9tIHNvdXJjZQBSZXBsaWNhIEkvTyB0aHJlYWQgYWJvcnRlZCB3aGlsZSB3YWl0aW5nIGZvciByZWxheSBsb2cgc3BhY2UAUmVwbGljYSBJL08gdGhyZWFkIGV4aXRpbmclcywgcmVhZCB1cCB0byBsb2cgJyVzJywgcG9zaXRpb24gJXMARmFpbGVkIGR1cmluZyByZXBsaWNhIHdvcmtlciBpbml0aWFsaXphdGlvbiVzAFJlcGxpY2E6IE1UQSBncm91cCByZWNvdmVyeSBhcHBsaWVyIG1ldGFkYXRhIGJhc2VkIG9uIFdvcmtlci1JZCAlbHUsIGdyb3VwX3JlbGF5X2xvZ19uYW1lICVzLCBncm91cF9yZWxheV9sb2dfcG9zICVsbHUgZ3JvdXBfc291cmNlX2xvZ19uYW1lICVzLCBncm91cF9zb3VyY2VfbG9nX3BvcyAlbGx1AEVycm9yIGxvb2tpbmcgZm9yICVzLgBSZXBsaWNhOiBNVEEgZ3JvdXAgcmVjb3ZlcnkgYXBwbGllciBtZXRhZGF0YSBncm91cF9zb3VyY2VfbG9nX25hbWUgJXMsIGV2ZW50X3NvdXJjZV9sb2dfcG9zICVsbHUuAEVycm9yIGxvb2tpbmcgZm9yIGZpbGUgYWZ0ZXIgJXMuAFRoaXMgYW4gZXJyb3IgY250ICE9IG10YV9jaGVja3BvaW50X3BlcmlvZABGYWlsZWQgZHVyaW5nIHJlcGxpY2Egd29ya2VyIHRocmVhZCBjcmVhdGlvbiVzAEZhaWxlZCBkdXJpbmcgcmVwbGljYSB3b3JrZXIgdGhyZWFkIGNyZWF0aW9uJXMgKGVycm5vPSAlZCkARmFpbGVkIHRvIGluaXQgcGFydGl0aW9ucyBoYXNoAFJlcGxpY2EgU1FMIHRocmVhZCA6IE5EQiA6IFRhYmxlcyBub3QgYXZhaWxhYmxlIGFmdGVyICVsdSBzZWNvbmRzLiBDb25zaWRlciBpbmNyZWFzaW5nIC0tbmRiLXdhaXQtc2V0dXAgdmFsdWUAUmVwbGljYSBTUUwgdGhyZWFkJXMgaW5pdGlhbGl6ZWQsIHN0YXJ0aW5nIHJlcGxpY2F0aW9uIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzLCByZWxheSBsb2cgJyVzJyBwb3NpdGlvbjogJXMAJ1NRTF9SRVBMSUNBX1NLSVBfQ09VTlRFUj0lbGQnIGV4ZWN1dGVkIGF0IHJlbGF5X2xvZ19maWxlPSclcycsIHJlbGF5X2xvZ19wb3M9JyVsZCcsIHNvdXJjZV9sb2dfbmFtZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0nJWxkJyBhbmQgbmV3IHBvc2l0aW9uIGF0IHJlbGF5X2xvZ19maWxlPSclcycsIHJlbGF5X2xvZ19wb3M9JyVsZCcsIHNvdXJjZV9sb2dfbmFtZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0nJWxkJyAAUmVwbGljYSAoYWRkaXRpb25hbCBpbmZvKTogJXMgRXJyb3JfY29kZTogTVktJTA2ZABSZXBsaWNhOiAlcyBFcnJvcl9jb2RlOiBNWS0lMDZkAEVycm9yIGxvYWRpbmcgdXNlci1kZWZpbmVkIGxpYnJhcnksIHJlcGxpY2EgU1FMIHRocmVhZCBhYm9ydGVkLiBJbnN0YWxsIHRoZSBtaXNzaW5nIGxpYnJhcnksIGFuZCByZXN0YXJ0IHRoZSByZXBsaWNhIFNRTCB0aHJlYWQgd2l0aCAiU1RBUlQgUkVQTElDQSIuIFdlIHN0b3BwZWQgYXQgbG9nICclcycgcG9zaXRpb24gJXMARXJyb3IgcnVubmluZyBxdWVyeSwgcmVwbGljYSBTUUwgdGhyZWFkIGFib3J0ZWQuIEZpeCB0aGUgcHJvYmxlbSwgYW5kIHJlc3RhcnQgdGhlIHJlcGxpY2EgU1FMIHRocmVhZCB3aXRoICJTVEFSVCBSRVBMSUNBIi4gV2Ugc3RvcHBlZCBhdCBsb2cgJyVzJyBwb3NpdGlvbiAlcwBSZXBsaWNhIFNRTCB0aHJlYWQlcyBleGl0aW5nLCByZXBsaWNhdGlvbiBzdG9wcGVkIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzAFJlYWQgaW52YWxpZCBldmVudCBmcm9tIHNvdXJjZTogJyVzJywgc291cmNlIGNvdWxkIGJlIGNvcnJ1cHQgYnV0IGEgbW9yZSBsaWtlbHkgY2F1c2Ugb2YgdGhpcyBpcyBhIGJ1ZwBUaGUgcXVldWUgZXZlbnQgZmFpbGVkIGZvciBjaGFubmVsICclcycgYXMgaXRzIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZC4AQW4gdW5leHBlY3RlZCBldmVudCBzZXF1ZW5jZSB3YXMgZGV0ZWN0ZWQgYnkgdGhlIElPIHRocmVhZCB3aGlsZSBxdWV1aW5nIHRoZSBldmVudCByZWNlaXZlZCBmcm9tIHNvdXJjZSAnJXMnIGJpbmFyeSBsb2cgZmlsZSwgYXQgcG9zaXRpb24gJWxsdS4AJyVzJyBjYW4gbm90IGJlIHVzZWQgYXMgY2xpZW50IGNoYXJhY3RlciBzZXQuICclcycgd2lsbCBiZSB1c2VkIGFzIGRlZmF1bHQgY2xpZW50IGNoYXJhY3RlciBzZXQgd2hpbGUgY29ubmVjdGluZyB0byBzb3VyY2UuAFJlcGxpY2ElczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnLHJlcGxpY2F0aW9uIHJlc3VtZWQgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMAbmV4dCBsb2cgJyVzJyBpcyBhY3RpdmUAbmV4dCBsb2cgJyVzJyBpcyBub3QgYWN0aXZlAFJlcGxpY2EgU1FMIHRocmVhZCVzOiBJL08gZXJyb3IgcmVhZGluZyBldmVudCAoZXJybm86ICVkICBjdXJfbG9nLT5lcnJvcjogJWQpAEVycm9yIHJlYWRpbmcgcmVsYXkgbG9nIGV2ZW50JXM6ICVzACdDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPJXMgZXhlY3V0ZWQnLiBQcmV2aW91cyBzdGF0ZSBzb3VyY2VfaG9zdD0nJXMnLCBzb3VyY2VfcG9ydD0gJXUsIHNvdXJjZV9sb2dfZmlsZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0gJWxkLCBzb3VyY2VfYmluZD0nJXMnLiBOZXcgc3RhdGUgc291cmNlX2hvc3Q9JyVzJywgc291cmNlX3BvcnQ9ICV1LCBzb3VyY2VfbG9nX2ZpbGU9JyVzJywgc291cmNlX2xvZ19wb3M9ICVsZCwgc291cmNlX2JpbmQ9JyVzJy4AUmVwbGljYTogQ2Fubm90IGNyZWF0ZSBuZXcgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgd2hlbiByZXBvc2l0b3JpZXMgYXJlIG9mIHR5cGUgRklMRS4gQ29udmVydCByZXBsaWNhIHJlcG9zaXRvcmllcyB0byBUQUJMRSB0byByZXBsaWNhdGUgZnJvbSBtdWx0aXBsZSBzb3VyY2VzLgBsb2cgJXMgbGlzdGVkIGluIHRoZSBpbmRleCwgYnV0IGZhaWxlZCB0byBzdGF0LgBDb3VsZCBub3QgZmluZCBmaXJzdCBsb2cgd2hpbGUgY291bnRpbmcgcmVsYXkgbG9nIHNwYWNlLgBVbmFibGUgdG8gdXNlIHJlcGxpY2EncyB0ZW1wb3JhcnkgZGlyZWN0b3J5ICclcycuAFBhdGggJyVzJyBpcyBhIGRpcmVjdG9yeSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZSBmb3IgLS1yZWxheS1sb2cgb3B0aW9uLgBQYXRoICclcycgaXMgYSBkaXJlY3RvcnkgbmFtZSwgcGxlYXNlIHNwZWNpZnkgYSBmaWxlIG5hbWUgZm9yIC0tcmVsYXktbG9nLWluZGV4IG9wdGlvbi4ATmVpdGhlciAtLXJlbGF5LWxvZyBub3IgLS1yZWxheS1sb2ctaW5kZXggd2VyZSB1c2VkOyBzbyByZXBsaWNhdGlvbiBtYXkgYnJlYWsgd2hlbiB0aGlzIE15U1FMIHNlcnZlciBhY3RzIGFzIGEgcmVwbGljYSBhbmQgaGFzIGhpcyBob3N0bmFtZSBjaGFuZ2VkISEgUGxlYXNlIHVzZSAnLS1yZWxheS1sb2c9JXMnIHRvIGF2b2lkIHRoaXMgcHJvYmxlbS4ARmFpbGVkIGluIG9wZW5faW5kZXhfZmlsZSgpIGNhbGxlZCBmcm9tIFJlbGF5X2xvZ19pbmZvOjpybGlfaW5pdF9pbmZvKCkuAEZhaWxlZCBpbiBpbml0X2d0aWRfc2V0cygpIGNhbGxlZCBmcm9tIFJlbGF5X2xvZ19pbmZvOjpybGlfaW5pdF9pbmZvKCkuAEZhaWxlZCBpbiBvcGVuX2xvZygpIGNhbGxlZCBmcm9tIFJlbGF5X2xvZ19pbmZvOjpybGlfaW5pdF9pbmZvKCkuAEVycm9yIHdyaXRpbmcgcmVsYXkgbG9nIGNvbmZpZ3VyYXRpb24uAGdldF9uZGJfYmxvYnNfdmFsdWU6IG15X21hbGxvYygldSkgZmFpbGVkAE5EQjogVGhyZWFkIGlkICV1IHRpbWVkIG91dCAoMzBzKSB3YWl0aW5nIGZvciBlcG9jaCAldS8ldSB0byBiZSBoYW5kbGVkLiAgUHJvZ3Jlc3MgOiAldS8ldSAtPiAldS8ldS4ATkRCOiBJbmNvbnNpc3RlbmN5IGRldGVjdGVkIGluIGRpc3RyaWJ1dGVkIHByaXZpbGVnZSB0YWJsZXMuIFRhYmxlICclcy4lcycgaXMgbm90IGRpc3RyaWJ1dGVkAE5EQjogQ3JlYXRpbmcgJXMuJXMATkRCOiBGbHVzaGluZyAlcy4lcwBOREI6IENsZWFuaW5nIHN0cmF5IHRhYmxlcyBmcm9tIGRhdGFiYXNlICclcycATkRCOiBEaXNjb3ZlcmVkIG1pc3NpbmcgZGF0YWJhc2UgJyVzJwBOREI6IERpc2NvdmVyZWQgcmVtYWluaW5nIGRhdGFiYXNlICclcycATkRCOiBuZGJjbHVzdGVyX2ZpbmRfYWxsX2RhdGFiYXNlcyByZXRyeTogJXUgLSAlcwBOREI6IG5kYmNsdXN0ZXJfZmluZF9hbGxfZGF0YWJhc2VzIGZhaWw6ICV1IC0gJXMATkRCOiBza2lwcGluZyBzZXR1cCB0YWJsZSAlcy4lcywgaW4gc3RhdGUgJWQATkRCOiBmYWlsZWQgdG8gc2V0dXAgdGFibGUgJXMuJXMsIGVycm9yOiAlZCwgJXMATkRCOiBtaXNzaW5nIGZybSBmb3IgJXMuJXMsIGRpc2NvdmVyaW5nLi4uAE5EQjogbWlzbWF0Y2ggaW4gZnJtIGZvciAlcy4lcywgZGlzY292ZXJpbmcuLi4AbmRiX2JpbmxvZ19zZXR1cDogQ2xlYW4gdXAgbGVmdG92ZXJzAE5EQiAlczogd2FpdGluZyBtYXggJXUgc2VjIGZvciAlcyAlcy4gIGVwb2NoczogKCV1LyV1LCV1LyV1LCV1LyV1KSAgaW5qZWN0b3IgcHJvY19pbmZvOiAlcwBOREIgJXM6IHdhaXRpbmcgbWF4ICV1IHNlYyBmb3IgJXMgJXMuICBlcG9jaHM6ICgldS8ldSwldS8ldSwldS8ldSkgIGluamVjdG9yIHByb2NfaW5mbzogJXMgbWFwOiAleCUwOHgATkRCICVzOiBkaXN0cmlidXRpbmcgJXMgdGltZWQgb3V0LiBJZ25vcmluZy4uLgBOREIgJXM6IG5vdCB3YWl0aW5nIGZvciBkaXN0cmlidXRpbmcgJXMATkRCOiBkaXN0cmlidXRlZCAlcy4lcygldS8ldSkgdHlwZTogJXMoJXUpIHF1ZXJ5OiAnJXMnIHRvICV4JTA4eABOREI6IGRpc3RyaWJ1dGlvbiBvZiAlcy4lcygldS8ldSkgdHlwZTogJXMoJXUpIHF1ZXJ5OiAnJXMnIC0gY29tcGxldGUhAE5EQiBTY2hlbWEgZGlzdDogRGF0YSBub2RlOiAlZCBmYWlsZWQsIHN1YnNjcmliZXIgYml0bWFzayAleCUwOHgATkRCIFNjaGVtYSBkaXN0OiBEYXRhIG5vZGU6ICVkIHJlcG9ydHMgc3Vic2NyaWJlIGZyb20gbm9kZSAlZCwgc3Vic2NyaWJlciBiaXRtYXNrICV4JTA4eABOREIgU2NoZW1hIGRpc3Q6IERhdGEgbm9kZTogJWQgcmVwb3J0cyB1bnN1YnNjcmliZSBmcm9tIG5vZGUgJWQsIHN1YnNjcmliZXIgYml0bWFzayAleCUwOHgATkRCIEJpbmxvZzogQ291bGQgbm90IGRpc2NvdmVyIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiBteV9lcnJubzogJWQATkRCOiB1bmtub3duIHZhbHVlIGZvciBiaW5sb2cgc2lnbmFsbGluZyAweCVYLCAlcyBub3QgbG9nZ2VkAE5EQjogcmVwbHkgdG8gJXMuJXMoJXUvJXUpIGZyb20gJXMgdG8gJXglMDh4AE5EQjogQ291bGQgbm90IHJlbGVhc2Ugc2xvY2sgb24gJyVzLiVzJywgRXJyb3IgY29kZTogJWQgTWVzc2FnZTogJXMATkRCIHNjaGVtYTogQ291bGQgbm90IGZpbmQgdGFibGUgJyVzLiVzJyBpbiBOREIATkRCOiBEaXNjYXJkaW5nIGV2ZW50Li4ubm8gb2JqOiAlcyAoJXUvJXUpAE5EQjogRGlzY2FyZGluZyBldmVudC4uLmtleTogJXMgbm9uIG1hdGNoaW5nIGlkL3ZlcnNpb24gWyV1LyV1XSAhPSBbJXUvJXVdAE5EQjogQ0xFQVJfU0xPQ0sga2V5OiAlcygldS8ldSkgJXglMDh4LCBmcm9tICVzIHRvICV4JTA4eABOREIgQmlubG9nOiBTa2lwcGluZyBsb2NhbGx5IGRlZmluZWQgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuAE5EQiBCaW5sb2c6IGhhbmRsaW5nIG9ubGluZSBhbHRlci9yZW5hbWUATkRCIEJpbmxvZzogRmFpbGVkIHRvIHJlLW9wZW4gc2hhZG93IHRhYmxlICVzLiVzAE5EQiBCaW5sb2c6IGhhbmRsaW5nIG9ubGluZSBhbHRlci9yZW5hbWUgZG9uZQBOREIgQmlubG9nOiBTa2lwcGluZyBkcm9wIG9mIGxvY2FsbHkgZGVmaW5lZCB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gAE5EQiBCaW5sb2c6IFNraXBwaW5nIHJlbmFtaW5nIGxvY2FsbHkgZGVmaW5lZCB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gAE5EQiBCaW5sb2c6IFNraXBwaW5nIGRyb3AgZGF0YWJhc2UgJyVzJyBzaW5jZSBpdCBjb250YWluZWQgbG9jYWwgdGFibGVzIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIABHb3QgZGlzdF9wcml2IGV2ZW50OiAlcywgZmx1c2hpbmcgcHJpdmlsZWdlcwBOREI6IGdvdCBzY2hlbWEgZXZlbnQgb24gJXMuJXMoJXUvJXUpIHF1ZXJ5OiAnJXMnIHR5cGU6ICVzKCVkKSBub2RlOiAldSBzbG9jazogJXglMDh4AE5EQiBzY2hlbWE6IFNraXBwaW5nIG9sZCBzY2hlbWEgb3BlcmF0aW9uKFJFTkFNRV9UQUJMRV9ORVcpIG9uICVzLiVzAE5EQiBTY2hlbWEgZGlzdDogY2x1c3RlciBmYWlsdXJlIGF0IGVwb2NoICV1LyV1LgBOREIgQmlubG9nOiBuZGIgdGFibGVzIGluaXRpYWxseSByZWFkIG9ubHkgb24gcmVjb25uZWN0LgBOREIgU2NoZW1hIGRpc3Q6IHVua25vd24gZXZlbnQgJXUsIGlnbm9yaW5nLi4uAE5EQiBCaW5sb2c6IE9wZW5pbmcgbmRiX2JpbmxvZ19pbmRleDogJWQsICclcycATkRCIEJpbmxvZzogVW5hYmxlIHRvIGxvY2sgdGFibGUgbmRiX2JpbmxvZ19pbmRleABOREIgQmlubG9nOiBJbmplY3RpbmcgcmFuZG9tIHdyaXRlIGZhaWx1cmUATkRCIEJpbmxvZzogRmFpbGVkIHdyaXRpbmcgdG8gbmRiX2JpbmxvZ19pbmRleCBmb3IgZXBvY2ggJXUvJXUgIG9yaWdfc2VydmVyX2lkICV1IG9yaWdfZXBvY2ggJXUvJXUgd2l0aCBlcnJvciAlZC4ATkRCIEJpbmxvZzogV3JpdGluZyByb3cgKCVzKSB0byBuZGJfYmlubG9nX2luZGV4IC0gJXMATkRCIEJpbmxvZzogRmFpbGVkIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24gdG8gbmRiX2JpbmxvZ19pbmRleCB3aXRoIGVycm9yICVkLgBOREIgQmlubG9nOiBGYWlsZWQgd3JpdGluZyB0byBuZGJfYmlubG9nX2luZGV4IHRhYmxlIHdoaWxlIHJldHJ5aW5nIGFmdGVyIGtpbGwgZHVyaW5nIHNodXRkb3duAE5EQjogc2VydmVyIGlkIHNldCB0byB6ZXJvIC0gY2hhbmdlcyBsb2dnZWQgdG8gYmluIGxvZyB3aXRoIHNlcnZlciBpZCB6ZXJvIHdpbGwgYmUgbG9nZ2VkIHdpdGggYW5vdGhlciBzZXJ2ZXIgaWQgYnkgcmVwbGljYSBteXNxbGRzAE5EQjogc2VydmVyIGlkIHByb3ZpZGVkIGlzIHRvbyBsYXJnZSB0byBiZSByZXByZXNlbnRlZCBpbiBvcHRfc2VydmVyX2lkX2JpdHMgb3IgaXMgcmVzZXJ2ZWQATkRCOiAtLW5kYi1sb2ctdHJhbnNhY3Rpb24taWQgcmVxdWlyZXMgdjIgQmlubG9nIHJvdyBldmVudHMgYnV0IHNlcnZlciBpcyB1c2luZyB2MS4ATkRCOiBuZGItbG9nLWFwcGx5LXN0YXR1cyBmb3JjaW5nICVzLiVzIHRvIEZVTEwgVVNFX1dSSVRFAE5EQiBCaW5sb2c6ICVzACVzACVzAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyA6IFBhcnNlIGVycm9yIG9uIGNvbmZsaWN0IGZuIDogJXMATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIDogJXMATkRCIEJpbmxvZzogRmFpbGVkIHRvIGdldCB0YWJsZSAlcyBmcm9tIG5kYjogJXMsICVkAE5EQiBCaW5sb2c6IE5PVCBsb2dnaW5nICVzAE5EQiBCaW5sb2c6IEZBSUxFRCBDUkVBVEUgKERJU0NPVkVSKSBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogQ1JFQVRFIChESVNDT1ZFUikgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IERJU0NPVkVSIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBsb2dnaW5nIG9mIHRhYmxlICVzIHdpdGggQkxPQiBhdHRyaWJ1dGUgYW5kIG5vIFBLIGlzIG5vdCBzdXBwb3J0ZWQATkRCIEJpbmxvZzogVW5hYmxlIHRvIGNyZWF0ZSBldmVudCBpbiBkYXRhYmFzZS4gRXZlbnQ6ICVzICBFcnJvciBDb2RlOiAlZCAgTWVzc2FnZTogJXMATkRCIEJpbmxvZzogVW5hYmxlIHRvIGNyZWF0ZSBldmVudCBpbiBkYXRhYmFzZS4gIEF0dGVtcHQgdG8gY29ycmVjdCB3aXRoIGRyb3AgZmFpbGVkLiBFdmVudDogJXMgRXJyb3IgQ29kZTogJWQgTWVzc2FnZTogJXMATkRCIEJpbmxvZzogVW5hYmxlIHRvIGNyZWF0ZSBldmVudCBpbiBkYXRhYmFzZS4gIEF0dGVtcHQgdG8gY29ycmVjdCB3aXRoIGRyb3Agb2ssIGJ1dCBjcmVhdGUgZmFpbGVkLiBFdmVudDogJXMgRXJyb3IgQ29kZTogJWQgTWVzc2FnZTogJXMATkRCIEJpbmxvZzogZGlzY292ZXIgcmV1c2luZyBvbGQgZXYgb3AATkRCIEJpbmxvZzogQ3JlYXRpbmcgTmRiRXZlbnRPcGVyYXRpb24gZmFpbGVkIGZvciAlcwBOREIgQmlubG9nOiBDcmVhdGluZyBOZGJFdmVudE9wZXJhdGlvbiBibG9iIGZpZWxkICV1IGhhbmRsZXMgZmFpbGVkIChjb2RlPSVkKSBmb3IgJXMATkRCIEJpbmxvZzogbmRiZXZlbnQtPmV4ZWN1dGUgZmFpbGVkIGZvciAlczsgJWQgJXMATkRCIEJpbmxvZzogbG9nZ2luZyAlcyAoJXMsJXMpAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBkcm9wIGV2ZW50IGluIGRhdGFiYXNlLiBFdmVudDogJXMgRXJyb3IgQ29kZTogJWQgTWVzc2FnZTogJXMATkRCICVzOiAlcyB0aW1lZCBvdXQuIElnbm9yaW5nLi4uAE5EQiBCaW5sb2c6IHVuaGFuZGxlZCBlcnJvciAlZCBmb3IgdGFibGUgJXMATkRCIEJpbmxvZzogY2x1c3RlciBmYWlsdXJlIGZvciAlcyBhdCBlcG9jaCAldS8ldS4ATkRCIEJpbmxvZzogdW5rbm93biBub24gZGF0YSBldmVudCAlZCBmb3IgJXMuIElnbm9yaW5nLi4uAE5EQjogQmlubG9nIEluamVjdG9yIGRpc2NhcmRpbmcgcm93IGV2ZW50IG1ldGEgZGF0YSBhcyBzZXJ2ZXIgaXMgdXNpbmcgdjEgcm93IGV2ZW50cy4gKCV1ICV4KQByZW1vdmVfYWxsX2V2ZW50X29wZXJhdGlvbnM6IFJlbWFpbmluZyBvcGVuIHRhYmxlczogACAgJXMuJXMsIHVzZV9jb3VudDogJXUATkRCOiBDb3VsZCBub3QgZ2V0IGFwcGx5IHN0YXR1cyBzaGFyZQBOREIgQmlubG9nOiBTZXJ2ZXIgc2h1dGRvd24gZGV0ZWN0ZWQgd2hpbGUgd2FpdGluZyBmb3IgbmRiY2x1c3RlciB0byBzdGFydC4uLgBOREIgQmlubG9nOiBjbHVzdGVyIGhhcyBiZWVuIHJlc3RhcnRlZCAtLWluaXRpYWwgb3Igd2l0aCBvbGRlciBmaWxlc3lzdGVtLiBuZGJfbGF0ZXN0X2hhbmRsZWRfYmlubG9nX2Vwb2NoOiAldS8ldSwgd2hpbGUgY3VycmVudCBlcG9jaDogJXUvJXUuIFJFU0VUIFNPVVJDRSBzaG91bGQgYmUgaXNzdWVkLiBSZXNldHRpbmcgbmRiX2xhdGVzdF9oYW5kbGVkX2JpbmxvZ19lcG9jaC4ATkRCIEJpbmxvZzogY2x1c3RlciBoYXMgcmVjb25uZWN0ZWQuIENoYW5nZXMgdG8gdGhlIGRhdGFiYXNlIHRoYXQgb2NjdXJyZWQgd2hpbGUgZGlzY29ubmVjdGVkIHdpbGwgbm90IGJlIGluIHRoZSBiaW5sb2cATkRCIEJpbmxvZzogc3RhcnRpbmcgbG9nIGF0IGVwb2NoICV1LyV1AE5EQiBCaW5sb2c6IG5kYiB0YWJsZXMgd3JpdGFibGUATkRCIEJpbmxvZzogU2VydmVyIHNodXRkb3duIGRldGVjdGVkLi4uAE5EQiBCaW5sb2c6IEp1c3QgbG9zdCBzY2hlbWEgY29ubmVjdGlvbiwgaGFuZ2luZyBhcm91bmQATkRCIEJpbmxvZzogLi4uYW5kIG9uIG91ciB3YXkATkRCOiBlcnJvciAlbHUgKCVzKSBvbiBoYW5kbGluZyBiaW5sb2cgc2NoZW1hIGV2ZW50AE5EQiBCaW5sb2c6IEZhaWxlZCB0byBpbmplY3QgYXBwbHkgc3RhdHVzIHdyaXRlIHJvdwBOREIgQmlubG9nOiBFcnJvciBkdXJpbmcgUk9MTEJBQ0sgb2YgR0NJICV1LyV1LiBFcnJvcjogJWQATkRCIEJpbmxvZzogRXJyb3IgZHVyaW5nIENPTU1JVCBvZiBHQ0kuIEVycm9yOiAlZABOREIgQmlubG9nOiBsYXRlc3QgdHJhbnNhY3Rpb24gaW4gZXBvY2ggJXUvJXUgbm90IGluIGJpbmxvZyBhcyBsYXRlc3QgaGFuZGxlZCBlcG9jaCBpcyAldS8ldQBOREIgQmlubG9nOiBSZWxlYXNlIGV4dHJhIHNoYXJlIHJlZmVyZW5jZXMATkRCIEJpbmxvZzogcmVtYWluaW5nIG9wZW4gdGFibGVzOiAAICAlcy4lcyBzdGF0ZTogJXUgdXNlX2NvdW50OiAldQBXcm9uZyB0cmVlOiBQYXJlbnQgZG9lc24ndCBwb2ludCBhdCBwYXJlbnQAV3JvbmcgdHJlZTogUm9vdCBzaG91bGQgYmUgYmxhY2sAV3JvbmcgdHJlZTogRm91bmQgdHdvIHJlZCBpbiBhIHJvdwBXcm9uZyB0cmVlOiBGb3VuZCByaWdodCA9PSBsZWZ0AFdyb25nIHRyZWU6IEluY29ycmVjdCBibGFjay1jb3VudDogJWQgLSAlZABVc2VfY291bnQ6IFdyb25nIGNvdW50ICVsdSBmb3Igb3JpZ2luICVwAFVzZV9jb3VudDogV3JvbmcgY291bnQgZm9yIGtleSBhdCAlcCwgJWx1IHNob3VsZCBiZSAlbHUAV3JvbmcgbnVtYmVyIG9mIGVsZW1lbnRzOiAldSAoc2hvdWxkIGJlICV1KSBmb3IgdHJlZSBhdCAlcABFcnJvciByZWFkaW5nIHJlcGxpY2Egd29ya2VyIGNvbmZpZ3VyYXRpb24ARXJyb3Igd3JpdGluZyByZXBsaWNhIHdvcmtlciBjb25maWd1cmF0aW9uAEZhaWxlZCB0byBvcGVuIHJlbGF5IGxvZyAlcywgZXJyb3I6ICVzAEVycm9yIHdoZW4gd29ya2VyIHJlYWQgcmVsYXkgbG9nIGV2ZW50cyxyZWxheSBsb2cgbmFtZSAlcywgcG9zaXRpb24gJWxsdQBGYWlsZWQgdG8gZmluZCBuZXh0IHJlbGF5IGxvZyB3aGVuIHJldHJ5aW5nIHRoZSB0cmFuc2FjdGlvbiwgY3VycmVudCByZWxheSBsb2cgaXMgJXMATXVsdGktdGhyZWFkZWQgcmVwbGljYTogQ29vcmRpbmF0b3IgaGFzIHdhaXRlZCAlbHUgdGltZXMgaGl0dGluZyByZXBsaWNhX3BlbmRpbmdfam9ic19zaXplX21heDsgY3VycmVudCBldmVudCBzaXplID0gJXp1LgBGYWlsZWQgdG8gd3JpdGUgdGhlIERST1Agc3RhdGVtZW50IGZvciB0ZW1wb3JhcnkgdGFibGVzIHRvIGJpbmFyeSBsb2cAV2hlbiBvcGVuaW5nIEhFQVAgdGFibGUsIGNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgdG8gd3JpdGUgJ0RFTEVURSBGUk9NIGAlc2AuYCVzYCcgdG8gdGhlIGJpbmFyeSBsb2cAQ291bGRuJ3QgcmVwYWlyIHRhYmxlOiAlcy4lcwBDb3VsZCBub3QgcmVtb3ZlIHRlbXBvcmFyeSB0YWJsZTogJyVzJywgZXJyb3I6ICVkAFN5c3RlbSB0YWJsZSAnJS4qcycgaXMgZXhwZWN0ZWQgdG8gYmUgdHJhbnNhY3Rpb25hbC4ARXJyb3Igd3JpdGluZyBzb3VyY2UgY29uZmlndXJhdGlvbi4ARXJyb3IgcmVhZGluZyBzb3VyY2UgY29uZmlndXJhdGlvbi4AU1NMIGluZm9ybWF0aW9uIGluIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkgYXJlIGlnbm9yZWQgYmVjYXVzZSB0aGlzIE15U1FMIHJlcGxpY2Egd2FzIGNvbXBpbGVkIHdpdGhvdXQgU1NMIHN1cHBvcnQuAFBsdWdpbiAnJXMnIG9mIHR5cGUgJXMgZmFpbGVkIGRlaW5pdGlhbGl6YXRpb24AUGx1Z2luICclcycgaGFzIHJlZl9jb3VudD0lZCBhZnRlciBkZWluaXRpYWxpemF0aW9uLgBTaHV0dGluZyBkb3duIHBsdWdpbiAnJXMnAFBsdWdpbiAnJXMnIHJlZ2lzdHJhdGlvbiBhcyBhICVzIGZhaWxlZC4AQ291bGQgbm90IG9wZW4gdGhlIG15c3FsLnBsdWdpbiB0YWJsZS4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBDb3VsZG4ndCBsb2FkIHBsdWdpbiBuYW1lZCAnJXMnIHdpdGggc29uYW1lICclcycuAHBsdWdpbi1sb2FkIHBhcmFtZXRlciB0b28gbG9uZwBQbHVnaW4gJyVzJyB3aWxsIGJlIGZvcmNlZCB0byBzaHV0ZG93bgBQbHVnaW4gJyVzJyBoYXMgcmVmX2NvdW50PSVkIGFmdGVyIHNodXRkb3duLgBVbmtub3duIHZhcmlhYmxlIHR5cGUgY29kZSAweCV4IGluIHBsdWdpbiAnJXMnLgBTZXJ2ZXIgdmFyaWFibGUgJXMgb2YgcGx1Z2luICVzIHdhcyBmb3JjZWQgdG8gYmUgcmVhZC1vbmx5OiBzdHJpbmcgdmFyaWFibGUgd2l0aG91dCB1cGRhdGVfZnVuYyBhbmQgUExVR0lOX1ZBUl9NRU1BTExPQyBmbGFnAE1pc3NpbmcgdmFyaWFibGUgbmFtZSBpbiBwbHVnaW4gJyVzJy4AVGhyZWFkIGxvY2FsIHZhcmlhYmxlICclcycgbm90IGFsbG9jYXRlZCBpbiBwbHVnaW4gJyVzJy4AT3V0IG9mIG1lbW9yeSBmb3IgcGx1Z2luICclcycuAEJhZCBvcHRpb25zIGZvciBwbHVnaW4gJyVzJy4AUGFyc2luZyBvcHRpb25zIGZvciBwbHVnaW4gJyVzJyBmYWlsZWQuAFBsdWdpbiAnJXMnIGlzIGRpc2FibGVkLgBQbHVnaW4gJyVzJyBoYXMgY29uZmxpY3Rpbmcgc3lzdGVtIHZhcmlhYmxlcwBTZXR0aW5nIHBlcnNpc3RlbnQgb3B0aW9ucyBmb3IgcGx1Z2luICclcycgZmFpbGVkLgBGYWlsZWQgb24gbXlfbmV0X3dyaXRlLCB3cml0aW5nIHRvIHN0ZGVyciBpbnN0ZWFkOiAlcwBSZXRyeWluZyByZXBhaXIgb2Y6ICclcycgd2l0aG91dCBxdWljawBSZXRyeWluZyByZXBhaXIgb2Y6ICclcycgd2l0aCBrZXljYWNoZQBGb3VuZCAlcyBvZiAlcyByb3dzIHdoZW4gcmVwYWlyaW5nICclcycAV2FybmluZzogT3B0aW1pemUgdGFibGUgZ290IGVycm5vICVkIG9uICVzLiVzLCByZXRyeWluZwBXYXJuaW5nOiBFbmFibGluZyBrZXlzIGdvdCBlcnJubyAlZCBvbiAlcy4lcywgcmV0cnlpbmcAQ2hlY2tpbmcgdGFibGU6ICAgJyVzJwBSZWNvdmVyaW5nIHRhYmxlOiAnJXMnAEVycm9yIGluIGNyZWF0aW5nIFRBQkxFX1NIQVJFIGZyb20gJXMuZnJtIGZpbGUuAFVuYWJsZSB0byBhY3F1aXJlIGxvY2sgb24gJXMuJXMARXJyb3IgaW4gYWxsb2NhdGlvbiBtZW1vcnkgZm9yIFRBQkxFIG9iamVjdC4ARXJyb3IgaW4gY3JlYXRpbmcgaGFuZGxlciBvYmplY3QgZm9yIHRhYmxlICVzLiVzAEVycm9yIGluIHNldHRpbmcgaGFuZGxlciByZWZlcmVuY2UgZm9yIHRhYmxlICVzLiVzAFVuYWJsZSB0byBhY3F1aXJlIGxvY2sgb24gdGFibGVzcGFjZSBuYW1lICVzAEVycm9yIGluIHByb2Nlc3NpbmcgZ2VuZXJhdGVkIGNvbHVtbnMgZm9yIHRhYmxlICVzLiVzAEVycm9yIGluIENyZWF0aW5nIEREIGVudHJ5IGZvciAlcy4lcwBFcnJvciBpbiBmZXRjaGluZyAlcy4lcyB0YWJsZSBkYXRhIGZyb20gZGljdGlvbmFyeQBFcnJvciBpbiBmaXhpbmcgU0UgZGF0YSBmb3IgJXMuJXMARXJyb3IgaW4gY3JlYXRpbmcgc3RvcmVkIHByb2dyYW0gJyVzLiVzJwBVbmFibGUgdG8gb3BlbiBkYi5vcHQgZmlsZSAlcy4gVXNpbmcgZGVmYXVsdCBDaGFyYWN0ZXIgc2V0LgBVbmFibGUgdG8gaW50aWFsaXplIElPIGNhY2hlIHRvIG9wZW4gZGIub3B0IGZpbGUgJXMuIABVbmFibGUgdG8gaWRlbnRpZnkgdGhlIGNoYXJzZXQgaW4gJXMuIFVzaW5nIGRlZmF1bHQgY2hhcmFjdGVyIHNldC4AZGIub3B0IGZpbGUgbm90IGZvdW5kIGZvciAlcyBkYXRhYmFzZS4gVXNpbmcgZGVmYXVsdCBDaGFyYWN0ZXIgc2V0LgBFdmVudCAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uIG15c3FsLmV2ZW50LnRpbWVfem9uZS4ARXZlbnQgJyVzJy4nJXMnOiBoYXMgaW52YWxpZCB0aW1lIHpvbmUgdmFsdWUgAEV2ZW50ICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gbXlzcWwuZXZlbnQuY2hhcmFjdGVyX3NldF9jbGllbnQuAEV2ZW50ICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gbXlzcWwuZXZlbnQuY29sbGF0aW9uX2Nvbm5lY3Rpb24uAEZhaWxlZCB0byBvcGVuIG15c3FsLmV2ZW50IFRhYmxlLgBQYXJzaW5nICclcy4lcycgcm91dGluZSBib2R5IGZhaWxlZC4lcwBGYWlsZWQgdG8gb3BlbiBteXNxbC5wcm9jIFRhYmxlLgBGYWlsZWQgdG8gcmVhZCBteXNxbC5wcm9jIHRhYmxlLgBGb3VuZCAlcyBmaWxlIGluIG15c3FsIHNjaGVtYS4gREQgd2lsbCBjcmVhdGUgLmliZCBmaWxlIHdpdGggc2FtZSBuYW1lLiBQbGVhc2UgcmVuYW1lIHRhYmxlIGFuZCBzdGFydCB1cGdyYWRlIHByb2Nlc3MgYWdhaW4uAFVuYWJsZSB0byBvcGVuIHRoZSBkYXRhIGRpcmVjdG9yeSAlcyBkdXJpbmcgY2xlYW4gdXAgYWZ0ZXIgdXBncmFkZSBmYWlsZWQARmFpbGVkIHRvIHNldCBwYXRoICVzAEZhaWxlZCB0byBvcGVuIGRpciAlcwBOREI6IEZvdW5kIGVtcHR5IG5vZGVpZCBzcGVjaWZpZWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IENvdWxkIG5vdCBwYXJzZSAnJXMnIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBJbnZhbGlkIG5vZGVpZCAlZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogRm91bmQgZHVwbGljYXRlIG5vZGVpZCAlZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogVGhlIHNpemUgb2YgdGhlIGNsdXN0ZXIgY29ubmVjdGlvbiBwb29sIG11c3QgYmUgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBub2RlaWRzIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBUaGUgbm9kZWlkIHNwZWNpZmllZCBieSAtLW5kYi1ub2RlaWQgbXVzdCBiZSBlcXVhbCB0byB0aGUgZmlyc3Qgbm9kZWlkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiB1c2luZyBub2RlaWQgJXUATkRCOiBmYWlsZWQgdG8gYWxsb2NhdGUgZ2xvYmFsIG5kYiBjbHVzdGVyIGNvbm5lY3Rpb24ATkRCOiBmYWlsZWQgdG8gYWxsb2NhdGUgZ2xvYmFsIG5kYiBvYmplY3QATkRCWyV1XTogdXNpbmcgbm9kZWlkICV1AE5EQlsldV06IGZhaWxlZCB0byBhbGxvY2F0ZSBjbHVzdGVyIGNvbm5lY3Qgb2JqZWN0AE5EQlsldV06IHN0YXJ0aW5nIGNvbm5lY3QgdGhyZWFkAE5EQlsldV06IE5vZGVJRDogJWQsICVzAE5EQlsldV06IGZhaWxlZCB0byBzdGFydCBjb25uZWN0IHRocmVhZABOREI6IGVycm9yICgldSkgJXMASWdub3JlZCByZWNlaXZlIHRocmVhZCBDUFUgbWFzaywgbWFzayB0b28gc2hvcnQsICV1IENQVXMgbmVlZGVkIGluIG1hc2ssIG9ubHkgJXUgQ1BVcyBwcm92aWRlZABFdmVudCBFcnJvcjogQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgY3JlYXRpbmcgcXVlcnkgc3RyaW5nLCBiZWZvcmUgd3JpdGluZyBpdCBpbnRvIGJpbmFyeSBsb2cuAEV2ZW50IFNjaGVkdWxlcjogRXJyb3Igd2hpbGUgbG9hZGluZyBmcm9tIGRpc2suAEV2ZW50IFNjaGVkdWxlcjogRXJyb3IgZ2V0dGluZyBldmVudCBvYmplY3QuAEV2ZW50IFNjaGVkdWxlcjogRXJyb3Igd2hpbGUgbG9hZGluZyBldmVudHMgZnJvbSBteXNxbC5ldmVudHMuVGhlIHRhYmxlIHByb2JhYmx5IGNvbnRhaW5zIGJhZCBkYXRhIG9yIGlzIGNvcnJ1cHRlZABVbmFibGUgdG8gb2J0YWluIGxvY2sgZm9yIGRyb3BwaW5nIGV2ZW50ICVzIGZyb20gc2NoZW1hICVzAFVuYWJsZSB0byBkcm9wIGV2ZW50ICVzIGZyb20gc2NoZW1hICVzAFNlcnZlciBvdmVyY29tZXMgdGhlIHRlbXBvcmFyeSAnb3V0IG9mIG1lbW9yeScgaW4gJyVkJyB0cmllcyB3aGlsZSBhdHRhY2hpbmcgdG8gc2Vzc2lvbiB0aHJlYWQgZHVyaW5nIHRoZSBncm91cCBjb21taXQgcGhhc2UuAFVuYWJsZSB0byByZXNpemUgYmlubG9nIElPQ0FDSEUgYXV4aWxpYXJ5IGZpbGUAZmlsZSAlcyB3YXMgbm90IHB1cmdlZCBiZWNhdXNlIGl0IHdhcyBiZWluZyByZWFkIGJ5IHRocmVhZCBudW1iZXIgJXUASS9PIGVycm9yIHJlYWRpbmcgdGhlIGhlYWRlciBmcm9tIHRoZSBiaW5hcnkgbG9nLCBlcnJubz0lZCwgaW8gY2FjaGUgY29kZT0lZABGYWlsZWQgdG8gb3BlbiBsb2cgKGZpbGUgJyVzJywgZXJybm8gJWQpAEZhaWxlZCB0byBjcmVhdGUgYSBjYWNoZSBvbiBsb2cgKGZpbGUgJyVzJykATG9nIGZpbGVuYW1lIGV4dGVuc2lvbiBudW1iZXIgZXhoYXVzdGVkOiAlMDZsdS4gUGxlYXNlIGZpeCB0aGlzIGJ5IGFyY2hpdmluZyBvbGQgbG9ncyBhbmQgdXBkYXRpbmcgdGhlIGluZGV4IGZpbGVzLgBMb2cgZmlsZW5hbWUgdG9vIGxhcmdlOiAlcyVzICglenUpLiBQbGVhc2UgZml4IHRoaXMgYnkgYXJjaGl2aW5nIG9sZCBsb2dzIGFuZCB1cGRhdGluZyB0aGUgaW5kZXggZmlsZXMuAE5leHQgbG9nIGV4dGVuc2lvbjogJWx1LiBSZW1haW5pbmcgbG9nIGZpbGVuYW1lIGV4dGVuc2lvbnM6ICVsdS4gUGxlYXNlIGNvbnNpZGVyIGFyY2hpdmluZyBzb21lIGxvZ3MuAENvdWxkIG5vdCBvcGVuICVzIGZvciBsb2dnaW5nIChlcnJvciAlZCkuIFR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSB3aG9sZSBkdXJhdGlvbiBvZiB0aGUgTXlTUUwgc2VydmVyIHByb2Nlc3MuIFRvIHR1cm4gaXQgb24gYWdhaW46IGZpeCB0aGUgY2F1c2UsIHNodXRkb3duIHRoZSBNeVNRTCBzZXJ2ZXIgYW5kIHJlc3RhcnQgaXQuAE1ZU1FMX0JJTl9MT0c6Om9wZW5faW5kZXhfZmlsZSBmYWlsZWQgdG8gc3luYyB0aGUgaW5kZXggZmlsZS4ARXJyb3IgcmVhZGluZyBHVElEcyBmcm9tIHJlbGF5bG9nOiAlZAAlbHUgZXZlbnRzIHJlYWQgaW4gcmVsYXlsb2cgZmlsZSAnJXMnIGZvciB1cGRhdGluZyBSZXRyaWV2ZWRfR3RpZF9TZXQgYW5kL29yIElPIHRocmVhZCB0cmFuc2FjdGlvbiBwYXJzZXIgc3RhdGUuAEVycm9yIHJlYWRpbmcgR1RJRHMgZnJvbSBiaW5hcnkgbG9nOiAlZABSZWFkICVsdSBldmVudHMgZnJvbSBiaW5hcnkgbG9nIGZpbGUgJyVzJyB0byBkZXRlcm1pbmUgdGhlIEdUSURzIHB1cmdlZCBmcm9tIGJpbmFyeSBsb2dzLgBNWVNRTF9CSU5fTE9HOjpvcGVuIGZhaWxlZCB0byBnZW5lcmF0ZSBuZXcgZmlsZSBuYW1lLgBNWVNRTF9CSU5fTE9HOjpvcGVuIGZhaWxlZCB0byBzeW5jIHRoZSBpbmRleCBmaWxlLgBDb3VsZCBub3QgdXNlICVzIGZvciBsb2dnaW5nIChlcnJvciAlZCkuIFR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSB3aG9sZSBkdXJhdGlvbiBvZiB0aGUgTXlTUUwgc2VydmVyIHByb2Nlc3MuIFRvIHR1cm4gaXQgb24gYWdhaW46IGZpeCB0aGUgY2F1c2UsIHNodXRkb3duIHRoZSBNeVNRTCBzZXJ2ZXIgYW5kIHJlc3RhcnQgaXQuAFdoaWxlIHJlYnVpbGRpbmcgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIGNsb3NlIHRoZSBpbmRleCBmaWxlLgBXaGlsZSByZWJ1aWxkaW5nIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byBkZWxldGUgdGhlIGV4aXN0aW5nIGluZGV4IGZpbGUuIEl0IGNvdWxkIGJlIHRoYXQgZmlsZSBpcyBiZWluZyB1c2VkIGJ5IHNvbWUgb3RoZXIgcHJvY2Vzcy4AV2hpbGUgcmVidWlsZGluZyBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gcmVuYW1lIHRoZSBuZXcgaW5kZXggZmlsZSB0byB0aGUgZXhpc3RpbmcgaW5kZXggZmlsZS4AQWZ0ZXIgcmVidWlsZGluZyB0aGUgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIG9wZW4gdGhlIGluZGV4IGZpbGUuAE1ZU1FMX0JJTl9MT0c6OmFkZF9sb2dfdG9faW5kZXggZmFpbGVkIHRvIGFwcGVuZCBsb2cgZmlsZSBuYW1lOiAlcywgdG8gY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgBGYWlsZWQgdG8gbG9jYXRlIG9sZCBiaW5sb2cgb3IgcmVsYXkgbG9nIGZpbGVzAEZhaWxlZCB0byBkZWxldGUgZmlsZSAnJXMnAE1ZU1FMX0JJTl9MT0c6OnNldF9jcmFzaF9zYWZlX2luZGV4X2ZpbGVfbmFtZSBmYWlsZWQgdG8gc2V0IGZpbGUgbmFtZS4ATVlTUUxfQklOX0xPRzo6b3Blbl9jcmFzaF9zYWZlX2luZGV4X2ZpbGUgZmFpbGVkIHRvIG9wZW4gdGVtcG9yYXJ5IGluZGV4IGZpbGUuAG5leHQgbG9nIGVycm9yOiAlZCAgb2Zmc2V0OiAlcyAgbG9nOiAlcyBpbmNsdWRlZDogJWQAJXMgZmFpbGVkIHRvIG9wZW4gdGhlIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4AJXMgZmFpbGVkIHRvIGNvcHkgaW5kZXggZmlsZSB0byBjcmFzaCBzYWZlIGluZGV4IGZpbGUuACVzIGZhaWxlZCB0byBjbG9zZSB0aGUgY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgAlcyBmYWlsZWQgdG8gbW92ZSBjcmFzaCBzYWZlIGluZGV4IGZpbGUgdG8gaW5kZXggZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyB3YXMgY2FsbGVkIHdpdGggZmlsZSAlcyBub3QgbGlzdGVkIGluIHRoZSBpbmRleC4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gc3luYyB0aGUgaW5kZXggZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gY29weSAlcyB0byByZWdpc3RlciBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBmbHVzaCByZWdpc3RlciBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byB1cGRhdGUgdGhlIGluZGV4IGZpbGUATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gcHJvY2VzcyByZWdpc3RlcmVkIGZpbGVzIHRoYXQgd291bGQgYmUgcHVyZ2VkLgBNWVNRTF9CSU5fTE9HOjpzZXRfcHVyZ2VfaW5kZXhfZmlsZV9uYW1lIGZhaWxlZCB0byBzZXQgZmlsZSBuYW1lLgBNWVNRTF9CSU5fTE9HOjpvcGVuX3B1cmdlX2luZGV4X2ZpbGUgZmFpbGVkIHRvIG9wZW4gcmVnaXN0ZXIgZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfaW5kZXhfZW50cnkgZmFpbGVkIHRvIHJlaW5pdCByZWdpc3RlciBmaWxlIGZvciByZWFkAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2luZGV4X2VudHJ5IGVycm9yICVkIHJlYWRpbmcgZnJvbSByZWdpc3RlciBmaWxlLgBGYWlsZWQgdG8gZXhlY3V0ZSBteXNxbF9maWxlX3N0YXQgb24gZmlsZSAnJXMnAEZhaWxlZCB0byBkZWxldGUgbG9nIGZpbGUgJyVzJzsgY29uc2lkZXIgZXhhbWluaW5nIGNvcnJlc3BvbmRlbmNlIG9mIHlvdXIgYmlubG9nIGluZGV4IGZpbGUgdG8gdGhlIGFjdHVhbCBiaW5sb2cgZmlsZXMARmFpbGVkIHRvIGRlbGV0ZSBmaWxlICclcycgYW5kIHJlYWQgdGhlIGJpbmxvZyBpbmRleCBmaWxlAEZhaWxlZCB0byBkZWxldGUgbG9nIGZpbGUgJyVzJwAlcyBBbiBpbmNpZGVudCBldmVudCBoYXMgYmVlbiB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nIHdoaWNoIHdpbGwgc3RvcCB0aGUgcmVwbGljYXMuAGZpbmRfbG9nX3BvcygpIGZhaWxlZCAoZXJyb3I6ICVkKQBSZWNvdmVyaW5nIGFmdGVyIGEgY3Jhc2ggdXNpbmcgJXMARmFpbGVkIHRvIG9wZW4gdGhlIGNyYXNoZWQgYmlubG9nIGZpbGUgd2hlbiBzb3VyY2Ugc2VydmVyIGlzIHJlY292ZXJpbmcgaXQuAEZhaWxlZCB0byB0cmltIHRoZSBjcmFzaGVkIGJpbmxvZyBmaWxlIHdoZW4gc291cmNlIHNlcnZlciBpcyByZWNvdmVyaW5nIGl0LgBDcmFzaGVkIGJpbmxvZyBmaWxlICVzIHNpemUgaXMgJWxsdSwgYnV0IHJlY292ZXJlZCB1cCB0byAlbGx1LiBCaW5sb2cgdHJpbW1lZCB0byAlbGx1IGJ5dGVzLgBGYWlsZWQgdG8gY2xlYXIgTE9HX0VWRU5UX0JJTkxPR19JTl9VU0VfRiBmb3IgdGhlIGNyYXNoZWQgYmlubG9nIGZpbGUgd2hlbiBzb3VyY2Ugc2VydmVyIGlzIHJlY292ZXJpbmcgaXQuAEZhaWxlZCB0byBydW4gJ2FmdGVyX3N5bmMnIGhvb2tzACVzIEhlbmNlIHR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSB3aG9sZSBkdXJhdGlvbiBvZiB0aGUgTXlTUUwgc2VydmVyIHByb2Nlc3MuIFRvIHR1cm4gaXQgb24gYWdhaW46IGZpeCB0aGUgY2F1c2UsIHNodXRkb3duIHRoZSBNeVNRTCBzZXJ2ZXIgYW5kIHJlc3RhcnQgaXQuAEZhaWxlZCB0byBydW4gJ2FmdGVyX2ZsdXNoJyBob29rcwBDcmFzaCByZWNvdmVyeSBmYWlsZWQuIEVpdGhlciBjb3JyZWN0IHRoZSBwcm9ibGVtIChpZiBpdCdzLCBmb3IgZXhhbXBsZSwgb3V0IG9mIG1lbW9yeSBlcnJvcikgYW5kIHJlc3RhcnQsIG9yIGRlbGV0ZSAob3IgcmVuYW1lKSBiaW5hcnkgbG9nIGFuZCBzdGFydCBteXNxbGQgd2l0aCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyPXtjb21taXR8cm9sbGJhY2t9AFRoZSBmb2xsb3dpbmcgd2FybmluZyB3YXMgc3VwcHJlc3NlZCAlZCB0aW1lcyBkdXJpbmcgdGhlIGxhc3QgJWQgc2Vjb25kcyBpbiB0aGUgZXJyb3IgbG9nAE5EQjogJXMATkRCICVzOiAlcwBOREI6IFVuYWJsZSB0byBwdXJnZSAlcy4lcyBGaWxlPSVzIChmYWlsZWQgdG8gc2V0dXAgdGhkKQBVbmtub3duIGNvbGxhdGlvbiAjJWx1LgBzeW50YXggZXJyb3IgaW4gaW5ub2RiX2xvZ19ncm91cF9ob21lX2RpcgBzeW50YXggZXJyb3IgaW4gaW5ub2RiX3VuZG9fZGlyZWN0b3J5AElubm9EQjogaW5ub2RiX2J1ZmZlcl9wb29sX2ZpbGVuYW1lIGNhbm5vdCBoYXZlIGNvbG9uICg6KSBpbiB0aGUgZmlsZSBuYW1lLgBJbm5vREI6IEludmFsaWQgcGFnZSBzaXplPSVsdS4ASW5ub0RCOiBpbm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdF9sd20gY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiBpbm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdC4gU2V0dGluZyBpbm5vZGJfbWF4X2RpcnR5X3BhZ2VzX3BjdF9sd20gdG8gJWxmAElubm9EQjogaW5ub2RiX2lvX2NhcGFjaXR5IGNhbm5vdCBiZSBzZXQgaGlnaGVyIHRoYW4gaW5ub2RiX2lvX2NhcGFjaXR5X21heC4gU2V0dGluZyBpbm5vZGJfaW9fY2FwYWNpdHkgdG8gJWx1ACVzIGFuZCAlcyBmaWxlIG5hbWVzIHNlZW0gdG8gYmUgdGhlIHNhbWUuAFRyYW5zYWN0aW9uIG5vdCByZWdpc3RlcmVkIGZvciBNeVNRTCAyUEMsIGJ1dCB0cmFuc2FjdGlvbiBpcyBhY3RpdmUATXlTUUwgaXMgY2xvc2luZyBhIGNvbm5lY3Rpb24gdGhhdCBoYXMgYW4gYWN0aXZlIElubm9EQiB0cmFuc2FjdGlvbi4gJWxsdSByb3cgbW9kaWZpY2F0aW9ucyB3aWxsIHJvbGwgYmFjay4ASW5ub0RCOiBmYWlsIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgaW5kZXggdHJhbnNsYXRpb24gdGFibGUuIE51bWJlciBvZiBJbmRleDolbHUsIGFycmF5IHNpemU6JWx1AENhbm5vdCBmaW5kIGluZGV4ICVzIGluIElubm9EQiBpbmRleCBkaWN0aW9uYXJ5LgBGb3VuZCBpbmRleCAlcyB3aG9zZSBjb2x1bW4gaW5mbyBkb2VzIG5vdCBtYXRjaCB0aGF0IG9mIE15U1FMLgBGYWlsZWQgdG8gb3BlbiB0YWJsZSAlcy4AQnVpbGQgSW5ub0RCIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlIGZvciBUYWJsZSAlcyBmYWlsZWQAVGFibGUgJXMgaGFzIGEgcHJpbWFyeSBrZXkgaW4gSW5ub0RCIGRhdGEgZGljdGlvbmFyeSwgYnV0IG5vdCBpbiBNeVNRTCEAVGFibGUgJXMgaGFzIG5vIHByaW1hcnkga2V5IGluIElubm9EQiBkYXRhIGRpY3Rpb25hcnksIGJ1dCBoYXMgb25lIGluIE15U1FMISBJZiB5b3UgY3JlYXRlZCB0aGUgdGFibGUgd2l0aCBhIE15U1FMIHZlcnNpb24gPCAzLjIzLjU0IGFuZCBkaWQgbm90IGRlZmluZSBhIHByaW1hcnkga2V5LCBidXQgZGVmaW5lZCBhIHVuaXF1ZSBrZXkgd2l0aCBhbGwgbm9uLU5VTEwgY29sdW1ucywgdGhlbiBNeVNRTCBpbnRlcm5hbGx5IHRyZWF0cyB0aGF0IGtleSBhcyB0aGUgcHJpbWFyeSBrZXkuIFlvdSBjYW4gZml4IHRoaXMgZXJyb3IgYnkgZHVtcCArIERST1AgKyBDUkVBVEUgKyByZWltcG9ydCBvZiB0aGUgdGFibGUuAFRhYmxlICVzIGtleV91c2VkX29uX3NjYW4gaXMgJWx1IGV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vIHByaW1hcnkga2V5IGluc2lkZSBJbm5vREIuAFBhcnRpdGlvbiB0YWJsZSAlcyBvcGVuZWQgYWZ0ZXIgY29udmVydGluZyB0byBsb3dlciBjYXNlLiBUaGUgdGFibGUgbWF5IGhhdmUgYmVlbiBtb3ZlZCBmcm9tIGEgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbS4gUGxlYXNlIHJlY3JlYXRlIHRoZSB0YWJsZSBpbiB0aGUgY3VycmVudCBmaWxlIHN5c3RlbS4AQ2Fubm90IHJlcGxhY2UgZXJyb3IgbWVzc2FnZSAoJXMsJXMsJXMpICIlcyIgd2l0aCAiJXMiOyB3cm9uZyBudW1iZXIgb3IgdHlwZSBvZiAlJSBzdWJzaXR1dGlvbnMuAFRhYmxlIGZvciBlcnJvciBtZXNzYWdlIHJlcGxhY2VtZW50cyBjb3VsZCBub3QgYmUgZm91bmQgb3IgcmVhZCwgb3Igb25lIG9yIG1vcmUgcmVwbGFjZW1lbnRzIGNvdWxkIG5vdCBiZSBhcHBsaWVkLgAlczogJXMAVGFibGUgJyUtMTkycyc6IERlbGV0ZSBmcm9tIHBhcnQgJWQgZmFpbGVkIHdpdGggZXJyb3IgJWQuIEJ1dCBpdCB3YXMgYWxyZWFkeSBpbnNlcnRlZCBpbnRvIHBhcnQgJWQsIHdoZW4gbW92aW5nIHRoZSBtaXNwbGFjZWQgcm93ISBQbGVhc2UgbWFudWFsbHkgZml4IHRoZSBkdXBsaWNhdGUgcm93OiAlcwBDb21tYW5kICclcycgY2Fubm90IGJlIGFib3J0ZWQuIFRoZSB0cmlnZ2VyIGVycm9yIHdhcyAoJWQpIFslc106ICVzAEV2ZW50ICclcycgY2Fubm90IGJlIGFib3J0ZWQuIFRoZSB0cmlnZ2VyIGVycm9yIHdhcyAoJWQpIFslc106ICVzACVzLiBUaGUgdHJpZ2dlciBlcnJvciB3YXMgKCVkKSBbJXNdOiAlcwBSZXBsaWNhIFNRTDogQ29uZmlndXJhdGlvbiB3aXRoIG51bWJlciBvZiByZXBsaWNhdGlvbiBzb3VyY2VzID0gJXUnIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhcHBseWluZyB0byBOZGIAUmVwbGljYSBTUUw6IENvbmZpZ3VyYXRpb24gJ3JlcGxpY2FfcGFyYWxsZWxfd29ya2VycyA9ICVsdScgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGFwcGx5aW5nIHRvIE5kYgBOREIgJXM6IGRpc3RyaWJ1dGluZyAlcyBlcnI6ICV1AFN0b3JpbmcgTXlTUUwgdXNlciBuYW1lIG9yIHBhc3N3b3JkIGluZm9ybWF0aW9uIGluIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkgaXMgbm90IHNlY3VyZSBhbmQgaXMgdGhlcmVmb3JlIG5vdCByZWNvbW1lbmRlZC4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHRoZSBVU0VSIGFuZCBQQVNTV09SRCBjb25uZWN0aW9uIG9wdGlvbnMgZm9yIFNUQVJUIFJFUExJQ0E7IHNlZSB0aGUgJ1NUQVJUIFJFUExJQ0EgU3ludGF4JyBpbiB0aGUgTXlTUUwgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgBGTFVTSCBSRUxBWSBMT0dTIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gY2hhbm5lbCAnJS0uMTkycycuAFJlcGxpY2EgY2hhbm5lbCAnJXMnIGRvZXMgbm90IGV4aXN0LgBDYW4ndCBmaW5kIHN5bWJvbCAnJS0uMTI4cycgaW4gbGlicmFyeS4AQ2FuJ3Qgb3BlbiBzaGFyZWQgbGlicmFyeSAnJS0uMTkycycgKGVycm5vOiAlZCAlLS4xMjhzKS4AVGhyZWFkIHByaW9yaXR5IGF0dHJpYnV0ZSBzZXR0aW5nIGluIFJlc291cmNlIEdyb3VwIFNRTCBzaGFsbCBiZSBpZ25vcmVkIGR1ZSB0byB1bnN1cHBvcnRlZCBwbGF0Zm9ybSBvciBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlLgBPcHRpb24gYmlubG9nX2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX2NhY2hlX3NpemUuAE9wdGlvbiBiaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KTsgc2V0dGluZyBiaW5sb2dfc3RtdF9jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplLgBDYW4ndCBnZW5lcmF0ZSBhIHVuaXF1ZSBsb2ctZmlsZW5hbWUgJS0uMjAwcy4oMS05OTkpLgBFcnJvciByZWFkaW5nIGZpbGUgJyUtLjIwMHMnIChlcnJubzogJWQgLSAlcykARXJyb3Igd3JpdGluZyBmaWxlICclLS4yMDBzJyAoZXJybm86ICVkIC0gJXMpACVzIFN0YXRlbWVudDogJXMAJXM6IEZvcmNpbmcgY2xvc2Ugb2YgdGhyZWFkICVsZCAgdXNlcjogJyUtLjQ4cycuACVzOiBTaHV0ZG93biBjb21wbGV0ZSAobXlzcWxkICVzKSAgJXMuAENhbm5vdCBoYXZlIHNhbWUgYmFzZSBuYW1lICclcycgZm9yIGJvdGggYmluYXJ5IGFuZCByZWxheSBsb2dzLiBQbGVhc2UgY2hlY2sgJXMgKGRlZmF1bHQgJyVzJyBpZiAtLWxvZy1iaW4gb3B0aW9uIGlzIG5vdCB1c2VkLCBkZWZhdWx0ICclcycgaWYgLS1sb2ctYmluIG9wdGlvbiBpcyB1c2VkIHdpdGhvdXQgYXJndW1lbnQpIGFuZCAlcyAoZGVmYXVsdCAnJXMnKSBvcHRpb25zIHRvIGVuc3VyZSB0aGV5IGRvIG5vdCBjb25mbGljdC4AR1RJRF9NT0RFID0gT04gcmVxdWlyZXMgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZID0gT04uAFlvdSBoYXZlIG5vdCBwcm92aWRlZCBhIG1hbmRhdG9yeSBzZXJ2ZXItaWQuIFNlcnZlcnMgaW4gYSByZXBsaWNhdGlvbiB0b3BvbG9neSBtdXN0IGhhdmUgdW5pcXVlIHNlcnZlci1pZHMuIFBsZWFzZSByZWZlciB0byB0aGUgcHJvcGVyIHNlcnZlciBzdGFydC11cCBwYXJhbWV0ZXJzIGRvY3VtZW50YXRpb24uAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzKS4AJ05PX1pFUk9fREFURScsICdOT19aRVJPX0lOX0RBVEUnIGFuZCAnRVJST1JfRk9SX0RJVklTSU9OX0JZX1pFUk8nIHNxbCBtb2RlcyBzaG91bGQgYmUgdXNlZCB3aXRoIHN0cmljdCBtb2RlLiBUaGV5IHdpbGwgYmUgbWVyZ2VkIHdpdGggc3RyaWN0IG1vZGUgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuAEBAR0xPQkFMLkdUSURfRVhFQ1VURUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZC4AVHJpZ2dlcnMgZm9yIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgIGhhdmUgbm8gY3JlYXRpb24gY29udGV4dAAnJS0uMTkycycgaGFzIGFuIG9sZCBmb3JtYXQsIHlvdSBzaG91bGQgcmUtY3JlYXRlIHRoZSAnJXMnIG9iamVjdChzKQBWaWV3IGAlLS42NHNgLmAlLS42NHNgIGhhcyBubyBjcmVhdGlvbiBjb250ZXh0AExvbmcgZGF0YWJhc2UgbmFtZSBhbmQgaWRlbnRpZmllciBmb3Igb2JqZWN0IHJlc3VsdGVkIGluIGEgcGF0aCBsZW5ndGggdG9vIGxvbmcgZm9yIHRhYmxlICclcycuIFBsZWFzZSBjaGVjayB0aGUgcGF0aCBsaW1pdCBmb3IgeW91ciBPUy4AVGFibGUgdXBncmFkZSByZXF1aXJlZC4gUGxlYXNlIGRvICJSRVBBSVIgVEFCTEUgYCUtLjY0c2AiIG9yIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCEAR290IGVycm9yICVkIC0gJyUtLjE5MnMnIGZyb20gc3RvcmFnZSBlbmdpbmUuAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJyAodXNpbmcgcGFzc3dvcmQ6ICVzKQBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLiBBY2NvdW50IGlzIGxvY2tlZC4AWW91ciBwYXNzd29yZCBoYXMgZXhwaXJlZC4gVG8gbG9nIGluIHlvdSBtdXN0IGNoYW5nZSBpdCB1c2luZyBhIGNsaWVudCB0aGF0IHN1cHBvcnRzIGV4cGlyZWQgcGFzc3dvcmRzLgBTdG9yYWdlIGVuZ2luZSAnJXMnIGRvZXMgbm90IHN1cHBvcnQgc3lzdGVtIHRhYmxlcy4gWyVzLiVzXS4AU29ydCBhYm9ydGVkACVzOiByZWFkeSBmb3IgY29ubmVjdGlvbnMuIFZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQgICVzLgBVbmtub3duIGxvY2FsZTogJyUtLjY0cycuAFVua25vd24gY29sbGF0aW9uOiAnJS0uNjRzJy4AT3V0IG9mIG1lbW9yeTsgY2hlY2sgaWYgbXlzcWxkIG9yIHNvbWUgb3RoZXIgcHJvY2VzcyB1c2VzIGFsbCBhdmFpbGFibGUgbWVtb3J5OyBpZiBub3QsIHlvdSBtYXkgaGF2ZSB0byB1c2UgJ3VsaW1pdCcgdG8gYWxsb3cgbXlzcWxkIHRvIHVzZSBtb3JlIG1lbW9yeSBvciB5b3UgY2FuIGFkZCBtb3JlIHN3YXAgc3BhY2UAT3V0IG9mIG1lbW9yeTsgcmVzdGFydCBzZXJ2ZXIgYW5kIHRyeSBhZ2FpbiAobmVlZGVkICVkIGJ5dGVzKQBDT0xMQVRJT04gJyVzJyBpcyBub3QgdmFsaWQgZm9yIENIQVJBQ1RFUiBTRVQgJyVzJwBGYWlsZWQgdG8gc2V0ICVzIGF0IG9yIGFyb3VuZCAiJXMiIC0tIHNlcnZpY2UgaXMgdmFsaWQsIGJ1dCBjYW4gbm90IGJlIGluaXRpYWxpemVkOyBwbGVhc2UgY2hlY2sgaXRzIGNvbmZpZ3VyYXRpb24gYW5kIG1ha2Ugc3VyZSBpdCBjYW4gcmVhZCBpdHMgaW5wdXQocykgYW5kIHdyaXRlIHRvIGl0cyBvdXRwdXQocykuAEdlbmVyYXRpbmcgYSBuZXcgVVVJRDogJXMuAEZhaWxlZCB0byBnZXQgYWJzb2x1dGUgcGF0aCBvZiBwcm9ncmFtIGV4ZWN1dGFibGUgJXMARmFpbGVkIHRvIGJvb3RzdHJhcCBwZXJmb3JtYW5jZSBzY2hlbWEgY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4ARmFpbGVkIHRvIGRlaW5pdCBwZXJmb3JtYW5jZSBzY2hlbWEgY29tcG9uZW50cyBpbmZyYXN0cnVjdHVyZS4AQ291bGQgbm90IG9wZW4gZHVwbGljYXRlIGZkIGZvciAlczogJXMuAFN5c3RlbSB2aWV3cyBpbml0aWFsaXphdGlvbiBmYWlsZWQuAFJlc291cmNlIGdyb3VwIHBvc3QgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBSZXNvdXJjZSBHcm91cCBzdWJzeXN0ZW0gaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBGYWlsZWQgdG8gc3RhcnQgbXlzcWxkIGRhZW1vbi4gQ2hlY2sgbXlzcWxkIGVycm9yIGxvZy4AQ2Fubm90IGNoYW5nZSB0byByb290IGRpcmVjdG9yeTogJXMuAEZhaWxlZCB0byBib290c3RyYXAgcGVyc2lzdGVudCBwcml2aWxlZ2VzLgBCYXNlZGlyIHNldCB0byAlcy4AQ291bGQgbm90IGFkZCB3aWxkIGRvIHRhYmxlIHJ1bGUgJyVzJyEAQ291bGQgbm90IGFkZCB3aWxkIGlnbm9yZSB0YWJsZSBydWxlICclcychAFRoZSBwcml2aWxlZ2Ugc3lzdGVtIGZhaWxlZCB0byBpbml0aWFsaXplIGNvcnJlY3RseS4gRm9yIGNvbXBsZXRlIGluc3RydWN0aW9ucyBvbiBob3cgdG8gdXBncmFkZSBNeVNRTCB0byBhIG5ldyB2ZXJzaW9uIHBsZWFzZSBzZWUgdGhlICdVcGdyYWRpbmcgTXlTUUwnIHNlY3Rpb24gZnJvbSB0aGUgTXlTUUwgbWFudWFsLgBDYW5ub3Qgc2V0IHNlcnZpY2VzICIlcyIgcmVxdWVzdGVkIGluIC0tbG9nLWVycm9yLXNlcnZpY2VzLCB1c2luZyBkZWZhdWx0cy4AUGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlcyBpbml0aWFsaXphdGlvbiBmYWlsZWQuAFRoZSB0cmFuc2FjdGlvbl93cml0ZV9zZXRfZXh0cmFjdGlvbiBtdXN0IGJlIHNldCB0byAlcyB3aGVuIGJpbmxvZ190cmFuc2FjdGlvbl9kZXBlbmRlbmN5X3RyYWNraW5nIGlzICVzLgBJbnZhbGlkIHJlcGxpY2F0aW9uIHRpbWVzdGFtcHM6IG9yaWdpbmFsIGNvbW1pdCB0aW1lc3RhbXAgaXMgbW9yZSByZWNlbnQgdGhhbiB0aGUgaW1tZWRpYXRlIGNvbW1pdCB0aW1lc3RhbXAuIFRoaXMgbWF5IGJlIGFuIGlzc3VlIGlmIGRlbGF5ZWQgcmVwbGljYXRpb24gaXMgYWN0aXZlLiBNYWtlIHN1cmUgdGhhdCBzZXJ2ZXJzIGhhdmUgdGhlaXIgY2xvY2tzIHNldCB0byB0aGUgY29ycmVjdCB0aW1lLiBObyBmdXJ0aGVyIG1lc3NhZ2Ugd2lsbCBiZSBlbWl0dGVkIHVudGlsIGFmdGVyIHRpbWVzdGFtcHMgYmVjb21lIHZhbGlkIGFnYWluLgBUaGUgcmVwbGljYXRpb24gdGltZXN0YW1wcyBoYXZlIHJldHVybmVkIHRvIG5vcm1hbCB2YWx1ZXMuACVzLgBGYWlsZWQgdG8gd3JpdGUgYW4gaW5jaWRlbnQgZXZlbnQgaW50byBzdG10X2NhY2hlLgBSZWxheWxvZyBmaWxlICVzIHNpemUgd2FzICVsbHUsIGJ1dCB3YXMgdHJ1bmNhdGVkIGF0ICVsbHUuAFVuYWJsZSB0byBwdXJnZSByZWxheSBsb2cgZmlsZXMuICVzOiVzLgBSZXBsaWNhOiBmYWlsZWQgaW4gY3JlYXRpbmcgZmlsdGVyIGZvciBjaGFubmVsICclcycuAFJlcGxpY2E6IGZhaWxlZCBpbiBjb3B5aW5nIHRoZSBnbG9iYWwgZmlsdGVycyB0byBpdHMgb3duIHBlci1jaGFubmVsIGZpbHRlcnMgb24gY29uZmlndXJhdGlvbiBmb3IgY2hhbm5lbCAnJXMnLgBUaGVyZSBhcmUgcGVyLWNoYW5uZWwgcmVwbGljYXRpb24gZmlsdGVyKHMpIGNvbmZpZ3VyZWQgZm9yIGNoYW5uZWwgJyUuMTkycycgd2hpY2ggZG9lcyBub3QgZXhpc3QuIFRoZSBmaWx0ZXIocykgaGF2ZSBiZWVuIGRpc2NhcmRlZC4AVGhlIHN5c3RlbSB0YWJsZSBteXNxbC5nbG9iYWxfZ3JhbnRzIGlzIG1pc3NpbmcuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQUNMIHRhYmxlIG15c3FsLiUuKnMgbWlzc2luZy4gU29tZSBvcGVyYXRpb25zIG1heSBmYWlsLgBDYW4ndCBzZXQgbWFuZGF0b3J5X3JvbGUgJXNAJXM6IEFub255bW91cyBhdXRob3JpemF0aW9uIElEcyBhcmUgbm90IGFsbG93ZWQgYXMgcm9sZXMuAENhbid0IHNldCBtYW5kYXRvcnlfcm9sZTogVGhlcmUncyBubyBzdWNoIGF1dGhvcml6YXRpb24gSUQgJXNAJXMuAFRhYmxlICclLTE5MnMnIGZhaWxlZCB0byBtb3ZlL2luc2VydCBhIHJvdyBmcm9tIHBhcnQgJWQgaW50byBwYXJ0ICVkOiAlcy4AU2tpcHBlZCB1cGRhdGluZyByZXNvdXJjZSBncm91cCBtZXRhZGF0YSBpbiBJbm5vREIgcmVhZCBvbmx5IG1vZGUuAEZhaWxlZCB0byBwZXJzaXN0IHJlc291cmNlIGdyb3VwICVzIHRvIERhdGEgRGljdGlvbmFyeS4ARmFpbGVkIHRvIGRlc2VyaWFsaXplIHJlc291cmNlIGdyb3VwICVzLgBVcGRhdGUgb2YgcmVzb3VyY2UgZ3JvdXAgJXMgZmFpbGVkLgBWYWxpZGF0aW9uIG9mIHJlc291cmNlIGdyb3VwICVzIGZhaWxlZC4gUmVzb3VyY2UgZ3JvdXAgaXMgZGlzYWJsZWQuAFVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIFJlc291cmNlIEdyb3VwICVzLgBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciByZXNvdXJjZSBncm91cCBoYXNoLgBGYWlsZWQgdG8gYWRkIHJlc291cmNlIGdyb3VwICVzIHRvIHJlc291cmNlIGdyb3VwIG1hcC4AUmVzb3VyY2UgZ3JvdXAgZmVhdHVyZSBpcyBkaXNhYmxlZC4gKFNlcnZlciBpcyBjb21waWxlZCB3aXRoIERJU0FCTEVfUFNJX1RIUkVBRCkuAFVuYWJsZSB0byBhcHBseSByZXNvdXJjZSBncm91cCBjb250cm9sbGVyICVzLgBVbmFibGUgdG8gYWNxdWlyZSBsb2NrIG9uIHRoZSByZXNvdXJjZSBncm91cCAlcy4gSGludCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAgc2hhbGwgYmUgaWdub3JlZC4AUEZTICVzIG5vdGlmaWNhdGlvbiBmdW5jdGlvbiByZWdpc3RyYXRpb24gZmFpbGVkLgBVbmFibGUgdG8gYmluZCB0aHJlYWQgaWQgJWxsdSB0byBjcHUgaWQgJXUgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AVW5hYmxlIHRvIGJpbmQgdGhyZWFkIGlkICVsbHUgdG8gY3B1IGlkcyAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBVbmJpbmQgdGhyZWFkIGlkICVsbHUgZmFpbGVkLiAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBTZXR0aW5nIHRocmVhZCBwcmlvcml0eSAlZCB0byB0aHJlYWQgaWQgJWxsdSBmYWlsZWQuIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFVuYWJsZSB0byBkZXRlcm1pbmUgQ0FQX1NZU19OSUNFIGNhcGFiaWxpdHkuACVzIGZhaWxlZDogRmFpbGVkIHRvIGdldCBoYW5kbGUgZm9yIHRocmVhZCAlbGx1LgBSZXRyaWV2YWwgb2YgdGhyZWFkIHByaW9yaXR5IHVuc3VwcG9ydGVkIG9uICVzLgBVbmFibGUgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgQ1BVcy4AUmVzb3VyY2UgZ3JvdXAgZmVhdHVyZSBzaGFsbCBub3QgYmUgYXZhaWxhYmxlLiBJbmNvbXBhdGlibGUgdGhyZWFkIGhhbmRsaW5nIG9wdGlvbi4ASW52YWxpZCB0aHJlYWQgcHJpb3JpdHkgJWQgZm9yIGEgJXMgcmVzb3VyY2UgZ3JvdXAuIEFsbG93ZWQgcmFuZ2UgaXMgWyVkLCAlZF0uAGJpbmRfdG9fY3B1IGZhaWxlZDogcHJvY2Vzc29yX2JpbmQgZm9yIGNwdWlkICV1IGZhaWxlZCAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBiaW5kX3RvX2NwdSBmYWlsZWQ6IHByb2Nlc3Nvcl9iaW5kIGZvciB0aHJlYWQgJSVsbHggd2l0aCBjcHUgaWQgJXUgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AJXMgZmFpbGVkOiBwcm9jZXNzb3JfYWZmaW5pdHkgZmFpbGVkIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAEVycm9yIGluIHJlbmFtaW5nIG15c3FsX2luZGV4X3N0YXRzLmliZC4ARXJyb3IgaW4gb3BlbmluZyBkYXRhIGRpcmVjdG9yeSAlcy4ARXJyb3IgaW4gZmV0Y2hpbmcgbGlzdCBvZiB0YWJsZXNwYWNlcy4ARXJyb3IgaW4gYWNxdWlyaW5nIFRhYmxlc3BhY2UgZm9yIFNESSBpbnNlcnRpb24gJXMuAEVycm9yIGluIHJlc29sdmluZyBFbmdpbmUgbmFtZSBmb3IgdGFibGVzcGFjZSAlcyB3aXRoIGVuZ2luZSAlcy4ARXJyb3IgaW4gY3JlYXRpbmcgU0RJIGZvciAlcyB0YWJsZXNwYWNlLgBFcnJvciBpbiBzdG9yaW5nIFNESSBmb3IgJXMgdGFibGVzcGFjZS4ARXJyb3IgaW4gZmV0Y2hpbmcgbGlzdCBvZiB0YWJsZXMuAEZpbmlzaGVkIHBvcHVsYXRpbmcgRGF0YSBEaWN0aW9uYXJ5IHRhYmxlcyB3aXRoIGRhdGEuAENvdWxkIG5vdCBvcGVuIHRoZSB1cGdyYWRlIGluZm8gZmlsZSAnJXMnIGluIHRoZSBNeVNRTCBzZXJ2ZXJzIGRhdGFkaXIsIGVycm5vOiAlZC4AQ291bGQgbm90IGNsb3NlIHRoZSB1cGdyYWRlIGluZm8gZmlsZSAnJXMnIGluIHRoZSBNeVNRTCBzZXJ2ZXJzIGRhdGFkaXIsIGVycm5vOiAlZC4AR290IGVycm9yICVkIGZyb20gU0Ugd2hpbGUgbWlncmF0aW5nIHRhYmxlc3BhY2VzLgBFcnJvciBpbiBjcmVhdGluZyBUQUJMRSBzdGF0aXN0aWNzIGVudHJ5LiBGaXggc3RhdGlzdGljcyBkYXRhIGJ5IHVzaW5nIEFOQUxZWkUgY29tbWFuZC4ARmluaXNoZWQgbWlncmF0aW5nIFRBQkxFIHN0YXRpc3RpY3MgZGF0YS4ARXJyb3IgaW4gY3JlYXRpbmcgSW5kZXggc3RhdGlzdGljcyBlbnRyeS4gRml4IHN0YXRpc3RpY3MgZGF0YSBieSB1c2luZyBBTkFMWVpFIGNvbW1hbmQuAEZpbmlzaGVkIG1pZ3JhdGluZyBJTkRFWCBzdGF0aXN0aWNzIGRhdGEuAEZhaWxlZCB0byBmaW5kIHZhbGlkIGRhdGEgZGlyZWN0b3J5LgBTdGFydGluZyB1cGdyYWRlIG9mIGRhdGEgZGlyZWN0b3J5LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBERCBTdG9yYWdlIEVuZ2luZS4ARm91bmQgcGFydGlhbGx5IHVwZ3JhZGVkIERELiBBYm9ydGluZyB1cGdyYWRlIGFuZCBkZWxldGluZyBhbGwgREQgdGFibGVzLiBTdGFydCB0aGUgdXBncmFkZSBwcm9jZXNzIGFnYWluLgBGb3VuZCBwYXJ0aWFsbHkgdXBncmFkZWQgREQuIFVwZ3JhZGUgd2lsbCBjb250aW51ZSBhbmQgc3RhcnQgdGhlIHNlcnZlci4ARXJyb3IgaW4gdXBncmFkaW5nIGVuZ2luZSBsb2dzLgBFcnJvciBpbiB1cGRhdGluZyBTREkgaW5mb3JtYXRpb24uAFNraXAgdXBkYXRpbmcgJXMgbWV0YWRhdGEgaW4gSW5ub0RCIHJlYWQtb25seSBtb2RlLgBDcmVhdGVkIHN5c3RlbSB2aWV3cyB3aXRoIElfUyB2ZXJzaW9uICVkLgBVbmtub3duIGVycm9yIGRldGVjdGVkICVkIGluIGhhbmRsZXIuAEVycm9yIGluIExvZ19ldmVudDo6cmVhZF9sb2dfZXZlbnQoKTogJyVzJywgZGF0YV9sZW46ICVsdSwgZXZlbnRfdHlwZTogJWQuAFRoZSByb3cgZGF0YSBpcyBncmVhdGVyIHRoYW4gNEdCLCB3aGljaCBpcyB0b28gYmlnIHRvIHdyaXRlIHRvIHRoZSBiaW5hcnkgbG9nLgBVbmFibGUgdG8gY29uc3RydWN0IERST1AgRVZFTlQgU1FMIHF1ZXJ5IHN0cmluZy4AVW5hYmxlIHRvIGJpbmxvZyBkcm9wIGV2ZW50ICVzLiVzLgBGYWlsZWQgdG8gc3RhcnQgcmVwbGljYSB0aHJlYWRzIGZvciBjaGFubmVsICclcycuACVzJXMuAEZhaWxlZCByZWdpc3RlcmluZyBvbiBzb3VyY2UsIHJlY29ubmVjdGluZyB0byB0cnkgYWdhaW4sIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzLiAlcy4AUmVwbGljYSBJL08gdGhyZWFkIGtpbGxlZCBkdXJpbmcgb3IgYWZ0ZXIgcmVjb25uZWN0LgBTb21lIG9mIHRoZSBjaGFubmVscyBhcmUgbm90IGNyZWF0ZWQvaW5pdGlhbGl6ZWQgcHJvcGVybHkuIENoZWNrIGZvciBhZGRpdGlvbmFsIG1lc3NhZ2VzIGFib3ZlLiBZb3Ugd2lsbCBub3QgYmUgYWJsZSB0byBzdGFydCByZXBsaWNhdGlvbiBvbiB0aG9zZSBjaGFubmVscyB1bnRpbCB0aGUgaXNzdWUgaXMgcmVzb2x2ZWQgYW5kIHRoZSBzZXJ2ZXIgcmVzdGFydGVkLgBGYWlsZWQgdG8gYWRkIGEgcmVwbGljYXRpb24gZmlsdGVyIGludG8gZmlsdGVyIG1hcCBmb3IgY2hhbm5lbCAnJS4xOTJzJy4AVGhlcmUgYXJlIHBlci1jaGFubmVsIHJlcGxpY2F0aW9uIGZpbHRlcihzKSBjb25maWd1cmVkIGZvciBncm91cCByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdoaWNoIGlzIGRpc2FsbG93ZWQuIFRoZSBmaWx0ZXIocykgaGF2ZSBiZWVuIGRpc2NhcmRlZC4AVGhlcmUgYXJlIHBlci1jaGFubmVsIHJlcGxpY2F0aW9uIGZpbHRlcihzKSBjb25maWd1cmVkIGZvciBjaGFubmVsICclLjE5MnMnIHdoaWNoIGRvZXMgbm90IGV4aXN0LiBUaGUgZmlsdGVyKHMpIGhhdmUgYmVlbiBkaXNjYXJkZWQuAEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGJ1aWxkaW5nIGRvX3RhYmxlIGFuZCBpZ25vcmVfdGFibGUgcnVsZXMgdG8gaGFzaGVzIGZvciBwZXItY2hhbm5lbCBmaWx0ZXIuAENsb25lIHBsdWdpbiBjYW5ub3QgYmUgbG9hZGVkLgBDbG9uZSBIYW5kbGVyIGV4aXN0cy4AQ291bGQgbm90IGNyZWF0ZSBDbG9uZSBIYW5kbGVyLgBUaGUgQ1lDTEUgdGltZXIgaXMgbm90IGF2YWlsYWJsZS4gV0FJVCBldmVudHMgaW4gdGhlIHBlcmZvcm1hbmNlX3NjaGVtYSB3aWxsIG5vdCBiZSB0aW1lZC4AVGhlIE5BTk9TRUNPTkQgdGltZXIgaXMgbm90IGF2YWlsYWJsZS4gSURMRS9TVEFHRS9TVEFURU1FTlQvVFJBTlNBQ1RJT04gZXZlbnRzIGluIHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEgd2lsbCBub3QgYmUgdGltZWQuAFRoZSBNSUNST1NFQ09ORCB0aW1lciBpcyBub3QgYXZhaWxhYmxlLiBJRExFL1NUQUdFL1NUQVRFTUVOVC9UUkFOU0FDVElPTiBldmVudHMgaW4gdGhlIHBlcmZvcm1hbmNlX3NjaGVtYSB3aWxsIG5vdCBiZSB0aW1lZC4ARmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgJXp1IGNodW5rcyBlYWNoIG9mIHNpemUgJXp1IGZvciBidWZmZXIgJyVzJyBkdWUgdG8gb3ZlcmZsb3cuAEZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXMgZm9yIGJ1ZmZlciAnJXMnIGR1ZSB0byBvdXQtb2YtbWVtb3J5LgBJbm5vREIgY291bGQgbm90IGZpbmQgaW5kZXggJXMga2V5IG5vICV1IGZvciB0YWJsZSAlcyB0aHJvdWdoIGl0cyBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4AQ2Fubm90IGZpbmQgaW5kZXggJXMgaW4gSW5ub0RCIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLgBJbm5vREIgY291bGQgbm90IGZpbmQga2V5IG5vICV1IHdpdGggbmFtZSAlcyBmcm9tIGRpY3QgY2FjaGUgZm9yIHRhYmxlICVzLgBJbm5vREI6IGNoYW5nZV9hY3RpdmVfaW5kZXgoJXUpIGZhaWxlZC4AU3RvcmVkIHJlZiBsZW4gaXMgJWx1LCBidXQgdGFibGUgcmVmIGxlbiBpcyAlbHUuAE15U1FMIGlzIHRyeWluZyB0byBjcmVhdGUgYSBjb2x1bW4gcHJlZml4IGluZGV4IGZpZWxkLCBvbiBhbiBpbmFwcHJvcHJpYXRlIGRhdGEgdHlwZS4gVGFibGUgbmFtZSAlcywgY29sdW1uIG5hbWUgJXMuAENhbm5vdCBjcmVhdGUgdGFibGUgJXMuAEZvdW5kIGluZGV4ICVzIGluIElubm9EQiBpbmRleCBsaXN0IGJ1dCBub3QgaXRzIE15U1FMIGluZGV4IG51bWJlci4gSXQgY291bGQgYmUgYW4gSW5ub0RCIGludGVybmFsIGluZGV4LgBJbm5vREI6IFRhYmxlICVzIGNvbnRhaW5zICVsdSBpbmRleGVzIGluc2lkZSBJbm5vREIsIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBudW1iZXIgb2YgaW5kZXhlcyAldSBkZWZpbmVkIGluIE15U1FMLgBUYWJsZSAlcyBjb250YWlucyBmZXdlciBpbmRleGVzIGluc2lkZSBJbm5vREIgdGhhbiBhcmUgZGVmaW5lZCBpbiB0aGUgTXlTUUwuIEhhdmUgeW91IG1peGVkIHVwIHdpdGggZGF0YSBkaWN0aW9uYXJ5IGZyb20gZGlmZmVyZW50IGluc3RhbGxhdGlvbj8ASW5kZXggJXMgb2YgJXMgaGFzICVsdSBjb2x1bW5zIHVuaXF1ZSBpbnNpZGUgSW5ub0RCLCBidXQgTXlTUUwgaXMgYXNraW5nIHN0YXRpc3RpY3MgZm9yICVsdSBjb2x1bW5zLiBIYXZlIHlvdSBtaXhlZCBkYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWZmZXJlbnQgaW5zdGFsbGF0aW9uPwBNb25pdG9yIGNvdW50ZXIgJyVzJyBjYW5ub3QgYmUgdHVybmVkIG9uL29mZiBpbmRpdmlkdWFsbHkuIFBsZWFzZSB1c2UgaXRzIG1vZHVsZSBuYW1lIHRvIHR1cm4gb24vb2ZmIHRoZSBjb3VudGVycyBpbiB0aGUgbW9kdWxlIGFzIGEgZ3JvdXAuAERlZmF1bHQgdmFsdWUgaXMgbm90IGRlZmluZWQgZm9yIHRoaXMgc2V0IG9wdGlvbi4gUGxlYXNlIHNwZWNpZnkgY29ycmVjdCBjb3VudGVyIG9yIG1vZHVsZSBuYW1lLgBJbm5vREI6IE1vbml0b3IgJXMgaXMgYWxyZWFkeSBlbmFibGVkLgBJbnZhbGlkIG1vbml0b3IgY291bnRlciA6ICVzLgBMb2FkTGlicmFyeSgiJXMiKSBmYWlsZWQ6IEdldExhc3RFcnJvciByZXR1cm5zICVsdS4AJXMuACVzLgAlcy4AJXMuACVzLgAlcy4AVW5hYmxlIHRvIHdhaXQgZm9yIHByb2Nlc3MgJWxsZC4AVW5hYmxlIHRvIGRldGVybWluZSBpZiBkYWVtb24gaXMgcnVubmluZzogJXMgKHJjPSVkKS4AJXMAW0ZBVEFMXSBJbm5vREI6ICVzAFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkLgBUaGUgc3ludGF4ICclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuACVzAEJpbmFyeSBsb2dnaW5nIG5vdCBwb3NzaWJsZS4gTWVzc2FnZTogJXMuAEZhaWxlZCB0byBzZXQgcGVyc2lzdGVkIG9wdGlvbnMuAENhbm5vdCBhY3F1aXJlIHNwZWNpZmllZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uOiAnJS4xOTJzJy4ASW52YWxpZCBWQ1BVIHJhbmdlICV1LSV1LgBJbnZhbGlkIGNwdSBpZCAldS4AR290IGVycm9yICVkIGR1cmluZyBGTFVTSF9MT0dTLgBQcm9ibGVtIHdoaWxlIGRyb3BwaW5nIGRhdGFiYXNlLiBDYW4ndCByZW1vdmUgZGF0YWJhc2UgZGlyZWN0b3J5ICglcykuIFBsZWFzZSByZW1vdmUgaXQgbWFudWFsbHkuAFRoZSBvcHRpb24gZXhwaXJlX2xvZ3NfZGF5cyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIG9wdGlvbiBiaW5sb2dfZXhwaXJlX2xvZ3Nfc2Vjb25kcy4gVGhlcmVmb3JlLCB2YWx1ZSBvZiBleHBpcmVfbG9nc19kYXlzIGlzIGlnbm9yZWQuAG1hbGZvcm1lZCBvciB2ZXJ5IG9sZCByZWxheSBsb2cgd2hpY2ggZG9lcyBub3QgaGF2ZSBGb3JtYXREZXNjcmlwdG9yLgBVcGdyYWRlIG9mIHZpZXcgJyVzLiVzJyBmYWlsZWQuIFJlLWNyZWF0ZSB0aGUgdmlldyB3aXRoIHRoZSBleHBsaWNpdCBjb2x1bW4gbmFtZSBsZXNzZXIgdGhhbiA2NCBjaGFyYWN0ZXJzLgBUYWJsZSB1cGdyYWRlIHJlcXVpcmVkIGZvciBgJS0uNjRzYC5gJS0uNjRzYC4gUGxlYXNlIGR1bXAvcmVsb2FkIHRhYmxlIHRvIGZpeCBpdCEARXJyb3IgaW4gdXBkYXRpbmcgdmVyc2lvbiBudW1iZXIgaW4gJXMgdGFibGVzcGFjZS4AS2V5cmluZyBtaWdyYXRpb24gZmFpbGVkLgBLZXlyaW5nIG1pZ3JhdGlvbiBzdWNjZXNzZnVsLgBSZWNlaXZlZCBSRVNUQVJUIGZyb20gdXNlciAlcy4gIFJlc3RhcnRpbmcgbXlzcWxkIChWZXJzaW9uOiAlcykuAERpZmZlcmVudCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHNldHRpbmdzIGZvciBzZXJ2ZXIgKCcldScpIGFuZCBkYXRhIGRpY3Rpb25hcnkgKCcldScpLgBEYXRhIGRpY3Rpb25hcnkgaW5pdGlhbGl6aW5nIHZlcnNpb24gJyV1Jy4ARGF0YSBkaWN0aW9uYXJ5IHJlc3RhcnRpbmcgdmVyc2lvbiAnJXUnLgBEYXRhIGRpY3Rpb25hcnkgdXBncmFkaW5nIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScuAERhdGEgZGljdGlvbmFyeSB1cGdyYWRlIHByb2hpYml0ZWQgYnkgdGhlIGNvbW1hbmQgbGluZSBvcHRpb24gJy0tbm9fZGRfdXBncmFkZScuAFVwZ3JhZGluZyB0aGUgZGF0YSBkaWN0aW9uYXJ5IGZyb20gZGljdGlvbmFyeSB2ZXJzaW9uICcldScgaXMgbm90IHN1cHBvcnRlZC4AVXBncmFkaW5nIHRoZSBkYXRhIGRpY3Rpb25hcnkgZmFpbGVkLCB0ZW1wb3Jhcnkgc2NoZW1hIG5hbWUgJyUtLjE5MnMnIG5vdCBhdmFpbGFibGUuAERhdGEgZGljdGlvbmFyeSBtaW5vciBkb3duZ3JhZGUgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4ATWlub3IgZG93bmdyYWRlIG9mIHRoZSBEYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWN0aW9uYXJ5IHZlcnNpb24gJyV1JyBpcyBub3Qgc3VwcG9ydGVkLgBObyBkYXRhIGRpY3Rpb25hcnkgdmVyc2lvbiBudW1iZXIgZm91bmQuAFRocmVhZCBwb29sIG5vdCBzdXBwb3J0ZWQsIHJlcXVpcmVzIGEgbWluaW11bSBvZiAlcy4AdGhyZWFkX3Bvb2xfc2l6ZT0wIG1lYW5zIHRocmVhZCBwb29sIGRpc2FibGVkLCBBbGxvd2VkIHJhbmdlIG9mIHRocmVhZF9wb29sX3NpemUgaXMgJWQtJWQuAHRocmVhZF9wb29sX3NpemU9JWx1IGlzIHRvbyBoaWdoLCAlZCBpcyBtYXhpbXVtLCB0aHJlYWQgcG9vbCBpcyBkaXNhYmxlZC4gQWxsb3dlZCByYW5nZSBvZiB0aHJlYWRfcG9vbF9zaXplIGlzICVkLSVkLgB0aHJlYWRfcG9vbF9hbGdvcml0aG0gY2FuIGJlIHNldCB0byAwIGFuZCAxLCAwIGluZGljYXRlcyB0aGUgZGVmYXVsdCBsb3cgY29uY3VycmVuY3kgYWxnb3JpdGhtLCAxIG1lYW5zIGEgaGlnaCBjb25jdXJyZW5jeSBhbGdvcml0aG0uAHRocmVhZF9wb29sX3N0YWxsX2xpbWl0IGNhbiBiZSAlZCBhdCBtaW5pbXVtIGFuZCAlZCBhdCBtYXhpbXVtLCBzbWFsbGVyIHZhbHVlcyB3b3VsZCByZW5kZXIgdGhlIHRocmVhZCBwb29sIGZhaXJseSB1c2VsZXNzIGFuZCBoaWdoZXIgdmFsdWVzIGNvdWxkIG1ha2UgaXQgcG9zc2libGUgdG8gaGF2ZSB1bmRldGVjdGVkIGRlYWRsb2NrIGlzc3VlcyBpbiB0aGUgTXlTUUwgU2VydmVyLgBJbnZhbGlkIHZhbHVlIG9mIHRocmVhZF9wb29sX3ByaW9fa2lja3VwX3RpbWVyIHNwZWNpZmllZC4gVmFsdWUgb2YgdGhyZWFkX3Bvb2xfcHJpb19raWNrdXBfdGltZXIgc2hvdWxkIGJlIGluIHJhbmdlIDAtNDI5NDk2NzI5NC4AdGhyZWFkX3Bvb2xfbWF4X3VudXNlZF90aHJlYWRzIGNhbm5vdCBiZSBzZXQgaGlnaGVyIHRoYW4gJWQuAEZhaWxlZCB0byBpbnN0YW50aWF0ZSB0aGUgY29ubmVjdGlvbiBoYW5kbGVyIG9iamVjdC4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhyZWFkIHBvb2wgcGx1Z2luLgBUaHJlYWQgcG9vbCBwbHVnaW4gc3RhcnRlZCBzdWNjZXNzZnVsbHkgd2l0aCBwYXJhbWV0ZXJzOiB0aHJlYWRfcG9vbF9zaXplID0gJWx1LCB0aHJlYWRfcG9vbF9hbGdvcml0aG0gPSAlcywgdGhyZWFkX3Bvb2xfc3RhbGxfbGltaXQgPSAldSwgdGhyZWFkX3Bvb2xfcHJpb19raWNrdXBfdGltZXIgPSAldSwgdGhyZWFkX3Bvb2xfbWF4X3VudXNlZF90aHJlYWRzID0gJXUsIHRocmVhZF9wb29sX2hpZ2hfcHJpb3JpdHlfY29ubmVjdGlvbiA9ICVkLgBDYW4ndCBzZXR1cCBjb25uZWN0aW9uIHRlYXJkb3duIHRocmVhZC1zcGVjaWZpYyBkYXRhLgBDcmVhdGlvbiBvZiBjb25uZWN0IGhhbmRsZXIgdGhyZWFkIGZhaWxlZC4ARmFpbGVkIHRvIGNyZWF0ZSB0aGQgYW5kIGF1dGhlbnRpY2F0ZSBjb25uZWN0aW9uLgBGYWlsZWQgdG8gcHJvY2VzcyBjb25uZWN0aW9uIGV2ZW50LgBDYW4ndCBjcmVhdGUgcG9vbCB0aHJlYWQgKGVycm9yICVkLCBlcnJubzogJWQpLgAlLipzLgB0cF9ncm91cF9sb3dfbGV2ZWxfaW5pdCgpIGZhaWxlZC4AUmVhcm0gZmFpbGVkIGV2ZW4gYWZ0ZXIgMzAgc2Vjb25kcywgY2FuJ3QgY29udGludWUgd2l0aG91dCBub3RpZnkgc29ja2V0LgAlczogJXMgYnVmZmVyIGlzIHRvbyBzbWFsbABNZWNhYiB2JXMgaXMgbm90IHN1cHBvcnRlZCwgdGhlIGxvd2VzdCB2ZXJzaW9uIHN1cHBvcnRlZCBpcyB2JXMuAE1lY2FiIHYlcyBpcyBub3QgdmVyaWZpZWQsIHRoZSBoaWdoZXN0IHZlcnNpb24gc3VwcG9ydGVkIGlzIHYlcy4ATWVjYWI6IFRyeWluZyBjcmVhdGVNb2RlbCglcykuAE1lY2FiOiBjcmVhdGVNb2RlbCgpIGZhaWxlZDogJXMuAE1lY2FiOiBjcmVhdGVUYWdnZXIoKSBmYWlsZWQ6ICVzLgBNZWNhYjogVW5zdXBwb3J0ZWQgZGljdGlvbmFyeSBjaGFyc2V0ICVzLgBNZWNhYjogTG9hZGVkIGRpY3Rpb25hcnkgY2hhcnNldCBpcyAlcy4ATWVjYWI6IHBhcnNlKCkgZmFpbGVkOiAlcy4ATWVjYWI6IHBhcnNlKCkgZmFpbGVkOiBvdXQgb2YgbWVtb3J5LgBNZWNhYjogY3JlYXRlTGF0dGljZSgpIGZhaWxlZDogJXMuAC0tLT4gJXMgZW50ZXIuADwtLS0gJXMgZXhpdCAoJWQpLgA8LS0tICVzIGV4aXQgKCVzKS4APC0tLSAlcyBleGl0LgBTZW1pLXN5bmMgcmVwbGljYXRpb24gaW5pdGlhbGl6ZWQgZm9yIHRyYW5zYWN0aW9ucy4AJXM6IHRyYW5zYWN0aW9uIG5vZGUgYWxsb2NhdGlvbiBmYWlsZWQgZm9yOiAoJXMsICVsdSkuACVzOiBiaW5sb2cgd3JpdGUgb3V0LW9mLW9yZGVyLCB0YWlsICglcywgJWx1KSwgbmV3IG5vZGUgKCVzLCAlbHUpLgAlczogaW5zZXJ0ICglcywgJWx1KSBpbiBlbnRyeSgldSkuACVzOiBwcm9iZSAoJXMsICVsdSkgaW4gZW50cnkoJXUpLgAlczogY2xlYXJlZCBhbGwgbm9kZXMuACVzOiBjbGVhcmVkICVkIG5vZGVzIGJhY2sgdW50aWwgcG9zICglcywgJWx1KS4AUmVhZCBzZW1pLXN5bmMgcmVwbHkgbWFnaWMgbnVtYmVyIGVycm9yLgBSZWFkIHNlbWktc3luYyByZXBseSBsZW5ndGggZXJyb3I6IHBhY2tldCBpcyB0b28gc21hbGwuAFJlYWQgc2VtaS1zeW5jIHJlcGx5IGJpbmxvZyBmaWxlIGxlbmd0aCB0b28gbGFyZ2UuACVzOiBHb3QgcmVwbHkoJXMsICVsdSkgZnJvbSBzZXJ2ZXIgJXUuACVzIGNhbGxlZCB0d2ljZS4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIGVuYWJsZWQgb24gdGhlIHNvdXJjZS4AQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSB0byBlbmFibGUgc2VtaS1zeW5jIG9uIHRoZSBzb3VyY2UuAFNlbWktc3luYyByZXBsaWNhdGlvbiBkaXNhYmxlZCBvbiB0aGUgc291cmNlLgBTRU1JU1lOQzogRm9yY2VkIHNodXRkb3duLiBTb21lIHVwZGF0ZXMgbWlnaHQgbm90IGJlIHJlcGxpY2F0ZWQuACVzOiBHb3QgcmVwbHkgYXQgKCVzLCAlbHUpLgAlczogc2lnbmFsIGFsbCB3YWl0aW5nIHRocmVhZHMuACVzOiB3YWl0IHBvcyAoJXMsICVsdSksIHJlcGwoJWQpLgAlczogQmlubG9nIHJlcGx5IGlzIGFoZWFkICglcywgJWx1KS4AJXM6IG1vdmUgYmFjayB3YWl0IHBvc2l0aW9uICglcywgJWx1KS4AJXM6IGluaXQgd2FpdCBwb3NpdGlvbiAoJXMsICVsdSkuACVzOiB3YWl0ICVsdSBtcyBmb3IgYmlubG9nIHNlbnQgKCVzLCAlbHUpLgBUaW1lb3V0IHdhaXRpbmcgZm9yIHJlcGx5IG9mIGJpbmxvZyAoZmlsZTogJXMsIHBvczogJWx1KSwgc2VtaS1zeW5jIHVwIHRvIGZpbGUgJXMsIHBvc2l0aW9uICVsdS4AQXNzZXNzbWVudCBvZiB3YWl0aW5nIHRpbWUgZm9yIGNvbW1pdFRyeCBmYWlsZWQgYXQgd2FpdCBwb3NpdGlvbiAoJXMsICVsdSkuAFNlbWktc3luYyByZXBsaWNhdGlvbiBzd2l0Y2hlZCBPRkYuAFNlbWktc3luYyByZXBsaWNhdGlvbiBzd2l0Y2hlZCBPTiBhdCAoJXMsICVsdSkuAE5vIGVub3VnaCBzcGFjZSBpbiB0aGUgcGFja2V0IGZvciBzZW1pLXN5bmMgZXh0cmEgaGVhZGVyLCBzZW1pLXN5bmMgcmVwbGljYXRpb24gZGlzYWJsZWQuACVzOiBzZXJ2ZXIoJWQpLCAoJXMsICVsdSkgc3luYyglZCksIHJlcGwoJWQpLgBTZW1pLXN5bmMgZmFpbGVkIHRvIGluc2VydCB0cmFueF9ub2RlIGZvciBiaW5sb2cgZmlsZTogJXMsIHBvc2l0aW9uOiAlbHUuACVzOiBUcmFuc2FjdGlvbiBza2lwcGVkIGF0ICglcywgJWx1KS4AU2VtaS1zeW5jIHNvdXJjZSBmYWlsZWQgb24gbmV0X2ZsdXNoKCkgYmVmb3JlIHdhaXRpbmcgZm9yIHJlcGxpY2EgcmVwbHkuAFRoZSByZWNlaXZlZCBhY2sgaXMgc21hbGxlciB0aGFuIG1fZ3JlYXRlc3RfYWNrLgBBZGQgdGhlIGFjayBpbnRvIHNsb3QgJXUuAFVwZGF0ZSBhbiBleHNpdGluZyBhY2sgaW4gc2xvdCAldS4ARmFpbGVkIHRvIHN0YXJ0IHNlbWktc3luYyBBQ0sgcmVjZWl2ZXIgdGhyZWFkLCAgY291bGQgbm90IGNyZWF0ZSB0aHJlYWQoZXJybm86JWQpLgBTdGFydGluZyBhY2sgcmVjZWl2ZXIgdGhyZWFkLgBGYWlsZWQgdG8gd2FpdCBvbiBzZW1pLXN5bmMgZHVtcCBzb2NrZXRzLCBlcnJvcjogZXJybm89JWQuAFN0b3BwaW5nIGFjayByZWNlaXZlciB0aHJlYWQuAEZhaWxlZCB0byByZWdpc3RlciByZXBsaWNhIHRvIHNlbWktc3luYyBBQ0sgcmVjZWl2ZXIgdGhyZWFkLgBTdGFydCAlcyBiaW5sb2dfZHVtcCB0byByZXBsaWNhIChzZXJ2ZXJfaWQ6ICVkKSwgcG9zKCVzLCAlbHUpLgBTdG9wICVzIGJpbmxvZ19kdW1wIHRvIHJlcGxpY2EgKHNlcnZlcl9pZDogJWQpLgB1bnJlZ2lzdGVyX3RyYW5zX29ic2VydmVyIGZhaWxlZC4AdW5yZWdpc3Rlcl9iaW5sb2dfc3RvcmFnZV9vYnNlcnZlciBmYWlsZWQuAHVucmVnaXN0ZXJfYmlubG9nX3RyYW5zbWl0X29ic2VydmVyIGZhaWxlZC4AdW5yZWdpc3Rlcl9yZXBsaWNhdG9yIE9LLgBTZW1pc3luYyByZXBsaWNhIHNvY2tldCBmZCBpcyAldS4gc2VsZWN0KCkgY2Fubm90IGhhbmRsZSBpZiB0aGUgc29ja2V0IGZkIGlzIGJpZ2dlciB0aGFuICV1IChGRF9TRVRTSVpFKS4AJXM6IHJlcGx5IC0gJWQuAE1pc3NpbmcgbWFnaWMgbnVtYmVyIGZvciBzZW1pLXN5bmMgcGFja2V0LCBwYWNrZXQgbGVuOiAlbHUuAFJlcGxpY2EgSS9PIHRocmVhZDogU3RhcnQgJXMgcmVwbGljYXRpb24gdG8gc291cmNlICclc0AlczolZCcgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJWx1LgAlczogcmVwbHkgKCVzLCAlbHUpLgBTZW1pLXN5bmMgcmVwbGljYSBuZXRfZmx1c2goKSByZXBseSBmYWlsZWQuAFNlbWktc3luYyByZXBsaWNhIHNlbmQgcmVwbHkgZmFpbGVkOiAlcyAoJWQpLgBFeGVjdXRpb24gZmFpbGVkIG9uIHNvdXJjZTogJXM7IGVycm9yICVkAFNvdXJjZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBzZW1pLXN5bmMsIGZhbGxiYWNrIHRvIGFzeW5jaHJvbm91cyByZXBsaWNhdGlvbgBTZXQgJ3JwbF9zZW1pX3N5bmNfcmVwbGljYT0xJyBvbiBzb3VyY2UgZmFpbGVkAEZhaWxlZCB0byBzdG9wIGFjayByZWNlaXZlciB0aHJlYWQgb24gbXlfdGhyZWFkX2pvaW4sIGVycm5vKCVkKS4ARmFpbGVkIHRvIHJlYWQgdGhlIGZpcmV3YWxsIHRhYmxlcwBGYWlsZWQgdG8gcmVnaXN0ZXIgZHluYW1pYyBwcml2aWxlZ2VzAFN0YXRlbWVudCB3YXMgdHJ1bmNhdGVkIGFuZCBub3QgcmVjb3JkZWQ6ICVzAFN0YXRlbWVudCB3aXRoIG5vIHRleHQgd2FzIG5vdCByZWNvcmRlZABTVVNQSUNJT1VTIFNUQVRFTUVOVCBmcm9tICclcycuIFJlYXNvbjogJXMgU3RhdGVtZW50OiAlcwBBQ0NFU1MgREVOSUVEIGZvciAnJXMnLiBSZWFzb246ICVzIFN0YXRlbWVudDogJXMAU2tpcHBlZCB1bmtub3duIHVzZXIgbW9kZSAnJXMnAFJlbG9hZGluZyBjYWNoZSBmcm9tIGRpc2sARklSRVdBTEwgUkVTRVQgZm9yICclcycAQ291bnRlcnMgYXJlIHJlc2V0IHRvIHplcm8AJXMAQXVkaXQgTG9nIHBsdWdpbiBzdXBwb3J0cyBmaWx0ZXJpbmcgbW9kZSwgd2hpY2ggaGFzIG5vdCBiZWVuIGluc3RhbGxlZCB5ZXQuIEF1ZGl0IExvZyBwbHVnaW4gd2lsbCBydW4gaW4gdGhlIGxlZ2FjeSBtb2RlLCB3aGljaCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS4AUHJldmlvdXNseSBleGNsdWRlIGxpc3QgaXMgdXNlZCwgbm93IHdlIHN0YXJ0IHVzaW5nIGluY2x1ZGUgbGlzdCwgZXhjbHVkZSBsaXN0IGlzIHNldCB0byBOVUxMLgBDYW5ub3Qgc2V0IGF1ZGl0X2xvZ19wb2xpY3kgc2ltdWx0YW5lb3VzbHkgd2l0aCBlaXRoZXIgYXVkaXRfbG9nX2Nvbm5lY3Rpb25fcG9saWN5IG9yICBhdWRpdF9sb2dfc3RhdGVtZW50X3BvbGljeSwgc2V0dGluZyBhdWRpdF9sb2dfY29ubmVjdGlvbl9wb2xpY3kgYW5kIGF1ZGl0X2xvZ19zdGF0ZW1lbnRfcG9saWN5IGJhc2VkIG9uIGF1ZGl0X2xvZ19wb2xpY3kuAEJvdGggaW5jbHVkZSBhbmQgZXhjbHVkZSBsaXN0cyBwcm92aWRlZCwgaW5jbHVkZSBsaXN0IGlzIHByZWZlcnJlZCwgZXhjbHVkZSBsaXN0IGlzIHNldCB0byBOVUxMLgBDb3VsZCBub3QgYWNjZXNzICclcycgZGlyZWN0b3J5LgBDb3VsZCBub3QgcmVuYW1lIGZpbGUgZnJvbSAnJXMnIHRvICclcycuAEZpbGUgJyVzJyBzaG91bGQgbm90IGV4aXN0LiBJdCBtYXkgYmUgaW5jb21wbGV0ZS4gVGhlIHNlcnZlciBjcmFzaGVkLgBDb3VsZCBub3QgcmVuYW1lIGZpbGUgZnJvbSAnJXMnIHRvICclcycuIFJlbW92ZSB0aGUgZmlsZSBtYW51YWxseS4ASW5jb21wbGV0ZSBmaWxlIHJlbmFtZWQgZnJvbSAnJXMnIHRvICclcycuAEVycm9yIHdyaXRpbmcgZmlsZSAnJS0uMjAwcycgKGVycm5vOiAlZCAtICVzKS4AQ291bGQgbm90IGluaXRpYWxpemUgYXVkaXQgbG9nIGZpbGUgZW5jcnlwdGlvbi4AQ291bGQgbm90IGluaXRpYWxpemUgYXVkaXQgbG9nIGZpbGUgY29tcHJlc3Npb24uAENvdWxkIG5vdCBjcmVhdGUgJyVzJyBmaWxlIGZvciBhdWRpdCBsb2dnaW5nLgBBdWRpdCBsb2cgZmlsZSAoJXMpIG11c3QgYmUgbWFudWFsbHkgcmVuYW1lZCBiZWZvcmUgYXVkaXRfbG9nX2ZsdXNoIGlzIHNldCB0byB0cnVlLgAlcwBFcnJvciBwYXJzaW5nIEpTT04gZXZlbnQuIEV2ZW50IG5vdCBhY2Nlc3NpYmxlLgBCdWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhvbGQgSlNPTiBldmVudC4gTnVtYmVyIG9mIGV2ZW50cyBza2lwcGVkOiAlenUuAENvdWxkIG5vdCBvcGVuIEpTT04gZmlsZSBmb3IgcmVhZGluZy4gUmVhZGluZyBuZXh0IGZpbGUgaWYgZXhpc3RzLgBKU09OIGZpbGUgcGFyc2luZyBlcnJvci4gUmVhZGluZyBuZXh0IGZpbGUgaWYgZXhpc3RzAEludmFsaWQgY29sdW1uIGNvdW50IGluIHRoZSAnJXMuJXMnIHRhYmxlLgBJbnZhbGlkIGNvbHVtbiBkZWZpbml0aW9uIG9mIHRoZSAnJXMuJXMnIHRhYmxlLgBDb3VsZCBub3Qgc3RvcmUgZmllbGQgb2YgdGhlICVzIHRhYmxlLgBDb3VsZCBub3QgdXBkYXRlICVzIHRhYmxlLgBDb3VsZCBub3QgaW5zZXJ0IGludG8gJXMgdGFibGUuAENvdWxkIG5vdCBkZWxldGUgZnJvbSAlcyB0YWJsZS4AQ291bGQgbm90IGluaXRpYWxpemUgJXMgdGFibGUgZm9yIHJlYWRpbmcuAENvdWxkIG5vdCByZWFkICVzIHRhYmxlLgBDb3VsZCBub3QgY2xvc2UgJXMgdGFibGUgcmVhZGluZy4AQm90aCB1c2VyIGFuZCBob3N0IGNvbHVtbnMgb2YgJXMgdGFibGUgY2Fubm90IGJlIGVtcHR5LgBGaWx0ZXJuYW1lIGNvbHVtbiBvZiAlcyB0YWJsZSBjYW5ub3QgYmUgZW1wdHkuAERpY3Rpb25hcnkgZmlsZSBub3Qgc3BlY2lmaWVkAERpY3Rpb25hcnkgZmlsZSBub3QgbG9hZGVkAERpY3Rpb25hcnkgZmlsZSBzaXplIGV4Y2VlZGVkIE1BWF9ESUNUSU9OQVJZX0ZJTEVfTEVOR1RILCBub3QgbG9hZGVkAEV4Y2VwdGlvbiB3aGlsZSByZWFkaW5nIHRoZSBkaWN0aW9uYXJ5IGZpbGUAQ2FuJ3QgcmV0cmlldmUgdGhlICVzIGZyb20gdGhlIHNlY3VyaXR5IGNvbnRleHQAQ2FuJ3QgcmV0cmlldmUgdGhlIHNlY3VyaXR5IGNvbnRleHQARWZmZWN0aXZlIHZhbHVlIG9mIHZhbGlkYXRlX3Bhc3N3b3JkX2xlbmd0aCBpcyBjaGFuZ2VkLiBOZXcgdmFsdWUgaXMgJWQAJXMAUmV3cml0dGVuIHF1ZXJ5IGZhaWxlZCB0byBwYXJzZTolcwBTdGFydHVwIGZhaWxlZCB3aXRoIGVycm9yICIlcyIARXhpdGluZwBFeGl0IGRvbmUAVXNpbmcgU1NMIGNvbmZpZ3VyYXRpb24gZnJvbSBNeVNRTCBTZXJ2ZXIAVXNpbmcgU1NMIGNvbmZpZ3VyYXRpb24gZnJvbSBNeXNxbHggUGx1Z2luAE5laXRoZXIgTXlTUUwgU2VydmVyIG5vciBNeXNxbHggUGx1Z2luIGhhcyB2YWxpZCBTU0wgY29uZmlndXJhdGlvbgBVc2luZyAlcyBmb3IgVExTIGNvbm5lY3Rpb25zAEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSBVc2luZyBTZWN1cmUgQ29ubmVjdGlvbnMgd2l0aCBYIFBsdWdpbiBzZWN0aW9uIGluIHRoZSBNeVNRTCBkb2N1bWVudGF0aW9uACVzAEZhaWxlZCB0byBwYXJzZSBzdG9yZWQgYXV0aGVudGljYXRpb24gc3RyaW5nIGZvciAlcy4gUGxlYXNlIGNoZWNrIGlmIG15c3FsLnVzZXIgdGFibGUgbm90IGNvcnJ1cHRlZABFcnJvciBpbiBnZW5lcmF0aW5nIG11bHRpLXJvdW5kIGhhc2ggZm9yICVzLiBQbHVnaW4gY2FuIG5vdCBwZXJmb3JtIGF1dGhlbnRpY2F0aW9uIHdpdGhvdXQgaXQuIFRoaXMgbWF5IGJlIGEgdHJhbnNpZW50IHByb2JsZW0AQXV0aGVudGljYXRpb24gcmVxdWlyZXMgZWl0aGVyIFJTQSBrZXlzIG9yIFNTTCBlbmNyeXB0aW9uAFJTQSBrZXkgY2lwaGVyIGxlbmd0aCBvZiAldSBpcyB0b28gbG9uZy4gTWF4IHZhbHVlIGlzICV1AEZhaWxlZCB0byBvcGVuIHRoZSAlcyBmaWx0ZXIgdGFibGVzAEZhaWxlZCB0byBvcGVuICclcy4lcycgJXMgdGFibGUAJXMAJXMAJXMAUGFzc3dvcmQgc2FsdCBmb3IgdXNlciAnJXMnIGlzIGNvcnJ1cHQAT3V0IG9mIG1lbW9yeSBmb3IgY29tcG9uZW50IHN5c3RlbSB2YXJpYWJsZSAnJXMnLgB2YXJpYWJsZSAlcyBvZiBjb21wb25lbnQgJXMgd2FzIGZvcmNlZCB0byBiZSByZWFkLW9ubHk6IHN0cmluZyB2YXJpYWJsZSB3aXRob3V0IHVwZGF0ZV9mdW5jIGFuZCBQTFVHSU5fVkFSX01FTUFMTE9DIGZsYWcuAFVua25vd24gdmFyaWFibGUgdHlwZSBjb2RlIDB4JXggaW4gY29tcG9uZW50ICclcycuAFBhcnNpbmcgb3B0aW9ucyBmb3IgdmFyaWFibGUgJyVzJyBmYWlsZWQuAFNldHRpbmcgcGVyc2lzdGVudCBvcHRpb25zIGZvciBjb21wb25lbnQgdmFyaWFibGUgJyVzJyBmYWlsZWQuAFRoZSBsb2ctZmlsdGVyIGNvbXBvbmVudCAiJXMiIGdvdCBjb25mdXNlZCBhdCAiJXMiIChzdGF0ZTogJXMpIC4uLgBXYWl0aW5nIHVudGlsIEkvTyB0aHJlYWQgZm9yIGNoYW5uZWwgJyVzJyBmaW5pc2ggd3JpdGluZyB0byBkaXNrIGJlZm9yZSBzdG9wcGluZy4gRnJlZSBzb21lIGRpc2sgc3BhY2Ugb3IgdXNlICdLSUxMJyB0byBhYm9ydCBJL08gdGhyZWFkIG9wZXJhdGlvbi4gTm90aWNlIHRoYXQgYWJvcnRpbmcgdGhlIEkvTyB0aHJlYWQgd2hpbGUgcm90YXRpbmcgdGhlIHJlbGF5IGxvZyBtaWdodCBjb3JydXB0IHRoZSByZWxheSBsb2dzLCByZXF1aXJpbmcgYSBzZXJ2ZXIgcmVzdGFydCB0byBmaXggaXQuAENvdWxkIG5vdCB1c2UgJXMgZm9yIGxvZ2dpbmcgKGVycm9yICVkIC0gJXMpLiBUdXJuaW5nIGxvZ2dpbmcgb2ZmIGZvciB0aGUgc2VydmVyIHByb2Nlc3MuIFRvIHR1cm4gaXQgb24gYWdhaW46IGZpeCB0aGUgY2F1c2UsIHRoZW4lcyByZXN0YXJ0IHRoZSBNeVNRTCBzZXJ2ZXIuAFVuYWJsZSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGZvciBjb2x1bW4gJyUtLjE5MnMnOiAlLS4xOTJzLgAndXRmOCcgaXMgY3VycmVudGx5IGFuIGFsaWFzIGZvciB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAE5BVElPTkFML05DSEFSL05WQVJDSEFSIGltcGxpZXMgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBDSEFSKHgpIENIQVJBQ1RFUiBTRVQgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4AQSBjb21taXQgZm9yIGFuIGF0b21pYyBEREwgc3RhdGVtZW50IHdhcyB1bnN1Y2Nlc3NmdWwgb24gdGhlIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuIFRoZSByZXBsaWNhIHN1cHBvcnRzIGF0b21pYyBEREwgc3RhdGVtZW50cyBidXQgdGhlIHNvdXJjZSBkb2VzIG5vdCwgc28gdGhlIGFjdGlvbiB0YWtlbiBieSB0aGUgcmVwbGljYSBhbmQgc291cmNlIG1pZ2h0IGRpZmZlci4gQ2hlY2sgdGhhdCB0aGVpciBzdGF0ZXMgaGF2ZSBub3QgZGl2ZXJnZWQgYmVmb3JlIHByb2NlZWRpbmcuAENvbmZpZ3VyaW5nIHBlcnNpc3RlZCBvcHRpb25zIGZhaWxlZDogIiVzIi4AVGhlIHN0b3JhZ2UgZW5naW5lICclLS4xOTJzJyBkb2VzIG5vdCBwcm92aWRlIGR5bmFtaWMgdGFibGUgc3RhdGlzdGljcwBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgc2V0ICVzLgBUaGUgdGFibGUgJyUtLjE5MnMnIG1heSBub3QgYmUgY3JlYXRlZCBpbiB0aGUgcmVzZXJ2ZWQgdGFibGVzcGFjZSAnJS0uMTkycycuAFNTTCBmaXBzIG1vZGUgZXJyb3I6ICVzAGluaXRfY29ubmVjdCB2YXJpYWJsZSBpcyBpZ25vcmVkIGZvciB1c2VyOiAlcyBob3N0OiAlcyBkdWUgdG8gZXhwaXJlZCBwYXNzd29yZC4Ac3FsX21vZGU9MHglMDh4IGlzIG5vdCBzdXBwb3J0ZWQAT3V0IG9mIG1lbW9yeS4AV3JvbmcgY29sdW1uIGNvdW50IG9yIG5hbWVzIHdoZW4gbG9hZGluZyBydWxlcy4AU29tZSBydWxlcyBmYWlsZWQgdG8gbG9hZC4AR290IGVycm9yIGZyb20gc3RvcmFnZSBlbmdpbmUgd2hpbGUgcmVmcmVzaGluZyByZXdyaXRlIHJ1bGVzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb25uZWN0aW9uX2V2ZW50X2Nvb3JkaW5hdG9yAEZhaWxlZCB0byB1cGRhdGUgY29ubmVjdGlvbiBkZWxheSB0cmlnZ2VyZWQgc3RhdHMARmFpbGVkIHRvIHJlc2V0IGNvbm5lY3Rpb24gZGVsYXkgdHJpZ2dlcmVkIHN0YXRzAFVuZXhwZWN0ZWQgb3B0aW9uIHR5cGUgZm9yIGNvbm5lY3Rpb24gZGVsYXkuAEZhaWxlZCB0byBpbml0aWFsaXplIENvbm5lY3Rpb25fZGVsYXlfYWN0aW9uAENvdWxkIG5vdCBzZXQgJXMgZGVsYXkgZm9yIGNvbm5lY3Rpb24gZGVsYXkuAEZhaWxlZCB0byB1cGRhdGUgY29ubmVjdGlvbiBkZWxheSBoYXNoIGZvciBhY2NvdW50IDogJXMAJXM6IEZvcmNlIHN0b3BwaW5nIGNsaWVudCBiZWNhdXNlIGV4Y2VwdGlvbiBvY2N1cnJlZDogJXMAJXMuJXU6IE1heGltdW0gbnVtYmVyIG9mIGF1dGhlbnRpY2F0aW9uIGF0dGVtcHRzIHJlYWNoZWQsIGxvZ2luIGZhaWxlZC4ARXJyb3IgYWxsb2NhdGluZyBCdWZmZXJfcGFnZTogJXMARGV0ZWN0ZWQgJXUgaGFuZ2luZyBjbGllbnQocykARXJyb3IgYWNjZXB0aW5nIGNsaWVudABJbnRlcm5hbCBlcnJvciBzY2hlZHVsaW5nIGNsaWVudCBmb3IgZXhlY3V0aW9uAFByZXBhcmF0aW9uIG9mIEkvTyBpbnRlcmZhY2VzIGZhaWxlZCwgWCBQcm90b2NvbCB3b24ndCBiZSBhY2Nlc3NpYmxlAHNydl9zZXNzaW9uX2luaXRfdGhyZWFkIHJldHVybmVkIGVycm9yAFVuYWJsZSB0byB1c2UgdXNlciBteXNxbC5zZXNzaW9uIGFjY291bnQgd2hlbiBjb25uZWN0aW5nIHRoZSBzZXJ2ZXIgZm9yIGludGVybmFsIHBsdWdpbiByZXF1ZXN0cy4ARm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIFggUGx1Z2luIFVzZXIgQWNjb3VudCBzZWN0aW9uIGluIHRoZSBNeVNRTCBkb2N1bWVudGF0aW9uACVzOiBVbmV4cGVjdGVkIGV4Y2VwdGlvbiBkaXNwYXRjaGluZyBjb21tYW5kOiAlcwBFeGNlcHRpb24gaW4gcG9zdDogJXMASW50ZXJuYWwgZXJyb3Igc2NoZWR1bGluZyB0YXNrAEV4Y2VwdGlvbiBpbiBldmVudCBsb29wOiAiJXMiOiAlcwBTZXR1cCBvZiAlcyBmYWlsZWQsICVzACVzAEZhaWxlZCBhdCBTU0wgY29uZmlndXJhdGlvbjogIiVzIgBFcnJvciBkdXJpbmcgU1NMIGhhbmRzaGFrZSBmb3IgY2xpZW50IGNvbm5lY3Rpb24gKCVpKQAlczogRXJyb3IgZHVyaW5nIFNTTCBoYW5kc2hha2UAJXM6IEVycm9yIGNyZWF0aW5nIHNlc3Npb24gZm9yIGNvbm5lY3Rpb24gZnJvbSAlcwAlczogRXJyb3IgaW5pdGlhbGl6aW5nIHNlc3Npb24gZm9yIGNvbm5lY3Rpb246ICVzACVzOiBNZXNzYWdlIG9mIHNpemUgJXUgcmVjZWl2ZWQsIGV4Y2VlZGluZyB0aGUgbGltaXQgb2YgJWkATWVzc2FnZSBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQ6ICVzAFVuYWJsZSB0byBzZXQgbWluaW1hbCBudW1iZXIgb2Ygd29ya2VycyB0byAldTsgYWN0dWFsIHZhbHVlIGlzICVpAFVuYWJsZSB0byBhY2NlcHQgY29ubmVjdGlvbiwgZGlzY29ubmVjdGluZyBjbGllbnQAQWxsIEkvTyBpbnRlcmZhY2VzIGFyZSBkaXNhYmxlZCwgWCBQcm90b2NvbCB3b24ndCBiZSBhY2Nlc3NpYmxlACVzOiBJbnZhbGlkIG1lc3NhZ2UgJWkgcmVjZWl2ZWQgZHVyaW5nIGNsaWVudCBpbml0aWFsaXphdGlvbgAlczogY2xvc2luZyBjbGllbnQgYmVjYXVzZSBvZiBzaHV0ZG93biAoc3RhdGU6ICVpKQAlczogRXJyb3IgcmVhZGluZyBmcm9tIHNvY2tldCAlcyAoJWkpACVzOiBwZWVyIGRpc2Nvbm5lY3RlZCB3aGlsZSByZWFkaW5nIG1lc3NhZ2UgYm9keQBjbGllbnRfaWQ6JXMgLSAlcyB3aGlsZSByZWFkaW5nIGZyb20gc29ja2V0LCBjbG9zaW5nIGNvbm5lY3Rpb24AJXMuJXU6IEludmFsaWQgYXV0aGVudGljYXRpb24gbWV0aG9kICVzACVzOiBVbmV4cGVjdGVkIG1lc3NhZ2Ugb2YgdHlwZSAlaSByZWNlaXZlZCBkdXJpbmcgYXV0aGVudGljYXRpb24ARXJyb3Igd3JpdGluZyB0byBjbGllbnQ6ICVzICglaSkAU2NoZWR1bGVyICIlcyIgc3RhcnRlZC4AU2NoZWR1bGVyICIlcyIgc3RvcHBlZC4AUGxlYXNlIHNlZSB0aGUgTXlTUUwgZG9jdW1lbnRhdGlvbiBmb3IgJyVzJyBzeXN0ZW0gdmFyaWFibGVzIHRvIGZpeCB0aGUgZXJyb3IAWCBQbHVnaW4gcmVhZHkgZm9yIGNvbm5lY3Rpb25zLiAlcwBSZXRyeWluZyBgYmluZCgpYCBvbiBUQ1AvSVAgcG9ydCAlaQBTaHV0ZG93biB0cmlnZ2VyZWQgYnkgbXlzcWxkIGFib3J0IGZsYWcAVXNpbmcgJXMgYWNjb3VudCBmb3IgYXV0aGVudGljYXRpb24gd2hpY2ggaGFzIGFsbCByZXF1aXJlZCBwZXJtaXNzaW9ucwBVc2luZyBleGlzdGluZyAlcyBhY2NvdW50IGZvciBhdXRoZW50aWNhdGlvbi4gSW5jb21wbGV0ZSBncmFudHMgd2lsbCBiZSBmaXhlZABTZXJ2ZXIgc3RhcnRzIGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zAFN0b3BwZWQgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMAJXM6IENvdWxkIG5vdCBpbnRlcnJ1cHQgY2xpZW50IHNlc3Npb24AJXM6IHJlbGVhc2UgdHJpZ2dlcmVkIGJ5IHRpbWVvdXQgaW4gc3RhdGU6JWkASVB2NiBpcyBhdmFpbGFibGUAVU5JWCBzb2NrZXQgbm90IGNvbmZpZ3VyZWQAS2lsbCBjbGllbnQ6ICVpICVzAENvdWxkIG5vdCBnZXQgc2VjdXJpdHkgY29udGV4dCBmb3Igc2Vzc2lvbgBVbmFibGUgdG8gc3dpdGNoIHNlY3VyaXR5IGNvbnRleHQgdG8gcm9vdABFcnJvciBjbG9zaW5nIFNRTCBzZXNzaW9uAEVycm9yIGV4ZWN1dGluZyBhZG1pbiBjb21tYW5kICVzOiAlcwBFcnJvciBleGVjdXRpbmcgZW1wdHkgYWRtaW4gY29tbWFuZABVbmFibGUgdG8gcmV0cmlldmUgc3lzdGVtIHZhcmlhYmxlICclcycAVW5hYmxlIHRvIGdldCBjcmVhdGlvbiBzdG10IGZvciBjb2xsZWN0aW9uICclcyc7IHF1ZXJ5IHJlc3VsdCBzaXplOiAlbHUAVW5hYmxlIHRvIGdldCBlbmdpbmUgaW5mbyBmb3IgY29sbGVjdGlvbiAnJXMnOyBjcmVhdGlvbiBzdG10OiAlcwBFcnJvciBnZXR0aW5nIHJlc3VsdCBkYXRhOiAlcwBDYXBhYmlsaXR5IGV4cGlyZWQgcGFzc3dvcmQgZmFpbGVkIHdpdGggZXJyb3I6ICVzAEZhaWxlZCB0byBzZXQgU09fUkVVU0VBRERSIGZsYWcgKGVycm9yOiAlZCkuAENvdWxkIG5vdCBvcGVuIGludGVybmFsIE15U1FMIHNlc3Npb24AVW5hYmxlIHRvIHN3aXRjaCBjb250ZXh0IHRvIHVzZXIgJXMAQ2FuJ3QgdW5yZWdpc3RlciAnJXMnIHVzZXIgZGVmaW5lZCBmdW5jdGlvbgAlczogZ2V0IHBlZXIgYWRkcmVzcyBmYWlsZWQsIGNhbid0IHJlc29sdmUgSVAgdG8gaG9zdG5hbWUAQ2FwYWJpbGl0eSBjbGllbnQgaW50ZXJhY3RpdmUgZmFpbGVkIHdpdGggZXJyb3I6ICVzAEZhaWxlZCB0byByZXNldCBJUFY2X1Y2T05MWSBmbGFnIChlcnJvcjogJWQpLiBUaGUgc2VydmVyIHdpbGwgbGlzdGVuIHRvIElQdjYgYWRkcmVzc2VzIG9ubHkuAEludmFsaWQga2V5IHR5cGUASW52YWxpZCBrZXkgbGVuZ3RoIGZvciBnaXZlbiBibG9jayBjaXBoZXIAQ291bGQgbm90IGNyZWF0ZSBrZXlyaW5nIGRpcmVjdG9yeS4gVGhlIGtleXJpbmdfZmlsZSB3aWxsIHN0YXkgdW51c2FibGUgdW50aWwgY29ycmVjdCBwYXRoIHRvIHRoZSBrZXlyaW5nIGRpcmVjdG9yeSBnZXRzIHByb3ZpZGVkAGtleXJpbmdfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlLiBQbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmdfZmlsZV9kYXRhIHBvaW50cyB0byByZWFkYWJsZSBrZXlyaW5nIGZpbGUgb3Iga2V5cmluZyBmaWxlIGNhbiBiZSBjcmVhdGVkIGluIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24uIFRoZSBrZXlyaW5nX2ZpbGUgd2lsbCBzdGF5IHVudXNhYmxlIHVudGlsIGNvcnJlY3QgcGF0aCB0byB0aGUga2V5cmluZyBmaWxlIGdldHMgcHJvdmlkZWQAa2V5cmluZ19maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIHBsdWdpbi4ARmFpbGVkIHRvIGdlbmVyYXRlIGEga2V5IGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIGtleXJpbmdfZmlsZSBwbHVnaW4ARXJyb3Igd2hpbGUgJXMga2V5OiBpbnZhbGlkIGtleV90eXBlAEVycm9yIHdoaWxlICVzIGtleToga2V5X2lkIGNhbm5vdCBiZSBlbXB0eQBGYWlsZWQgdG8gJXMgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgJXMgcGx1Z2luAEluY29ycmVjdCBLZXlyaW5nIGZpbGUARm91bmQgbWFsZm9ybWVkIGtleXJpbmcgYmFja3VwIGZpbGUgLSByZW1vdmluZyBpdABFcnJvciB3aGlsZSByZXN0b3Jpbmcga2V5cmluZyBmcm9tIGJhY2t1cCBmaWxlIGNhbm5vdCBvdmVyd3JpdGUga2V5cmluZyB3aXRoIGJhY2t1cABFcnJvciB3aGlsZSBmbHVzaGluZyBpbi1tZW1vcnkga2V5cmluZyBpbnRvIGtleXJpbmcgZmlsZQBFcnJvciB3aGlsZSByZWFkaW5nIHN0YXQgZm9yICVzLlBsZWFzZSBjaGVjayBpZiBmaWxlICVzIHdhcyBub3QgcmVtb3ZlZC4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJlbW92ZSBmaWxlICVzIE9TIHJldHVuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHRydW5jYXRlIGZpbGUgJXMuIE9TIHJldHVuZWQgdGhpcyBlcnJvcjogJXMAVW5rbm93biBlcnJvciAlZABrZXlyaW5nX2ZpbGVfZGF0YSBjYW5ub3QgYmUgc2V0IHRvIG5ldyB2YWx1ZSBhcyB0aGUga2V5cmluZyBmaWxlIGNhbm5vdCBiZSBjcmVhdGVkL2FjY2Vzc2VkIGluIHRoZSBwcm92aWRlZCBwYXRoACVzAEVycm9yIHdoaWxlIGxvYWRpbmcga2V5cmluZyBjb250ZW50LiBUaGUga2V5cmluZyBtaWdodCBiZSBtYWxmb3JtZWQAQ291bGQgbm90IGZsdXNoIGtleXMgdG8ga2V5cmluZwBDb3VsZCBub3QgZmx1c2gga2V5cyB0byBrZXlyaW5nJ3MgYmFja3VwAEVycm9yIHdoaWxlIGZldGNoaW5nIGtleToga2V5X2lkIGNhbm5vdCBiZSBlbXB0eQBFcnJvciB3aGlsZSByZW1vdmluZyBrZXk6IGtleV9pZCBjYW5ub3QgYmUgZW1wdHkARm9yIGtleXJpbmdfb2t2IHRvIGJlIGluaXRpYWxpemVkLCBwbGVhc2UgcG9pbnQga2V5cmluZ19va3ZfY29uZl9kaXIgdmFyaWFibGUgdG8gYSBkaXJlY3Rvcnkgd2l0aCBPcmFjbGUgS2V5IFZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgc3NsIG1hdGVyaWFscwBrZXlyaW5nX29rdiBpbml0aWFsaXphdGlvbiBmYWlsdXJlLiBQbGVhc2UgY2hlY2sgdGhhdCB0aGUga2V5cmluZ19va3ZfY29uZl9kaXIgcG9pbnRzIHRvIGEgcmVhZGFibGUgZGlyZWN0b3J5IGFuZCB0aGF0IHRoZSBkaXJlY3RvcnkgY29udGFpbnMgT3JhY2xlIEtleSBWYXVsdCBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNzbCBtYXRlcmlhbHMuIFBsZWFzZSBhbHNvIGNoZWNrIHRoYXQgT3JhY2xlIEtleSBWYXVsdCBpcyB1cCBhbmQgcnVubmluZy4Aa2V5cmluZ19va3YgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luAEludmFsaWQga2V5IHR5cGUASW52YWxpZCBrZXkgbGVuZ3RoIGZvciBnaXZlbiBibG9jayBjaXBoZXIARmFpbGVkIHRvIGdlbmVyYXRlIGEga2V5IGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIGtleXJpbmdfb2t2IHBsdWdpbgBDb3VsZCBub3QgZmluZCBlbnRyeSBmb3Igc2VydmVyIGluIGNvbmZpZ3VyYXRpb24gZmlsZSAlcwBDb3VsZCBub3QgZmluZCBlbnRyeSBmb3Igc3RhbmRieSBzZXJ2ZXIgaW4gY29uZmlndXJhdGlvbiBmaWxlICVzAENvdWxkIG5vdCBwYXJzZSB0aGUgJXMgZmlsZSBwcm92aWRlZABDb3VsZCBub3QgbG9hZCBrZXlzJyB1aWRzIGZyb20gdGhlIE9LViBzZXJ2ZXIAQ291bGQgbm90IGluaXRpYWxpemUgc3NsIGxheWVyAENvdWxkIG5vdCBpbml0aWFsaXplIE9LViBjbGllbnQAQ291bGQgbm90IGNvbm5lY3QgdG8gdGhlIE9LViBzZXJ2ZXIAQ291bGQgbm90IHJlbW92ZSB0aGUga2V5AENvdWxkIG5vdCBhZGQgYXR0cmlidXRlLCBhdHRyaWJ1dGVfbmFtZT0lcyBhdHRyaWJ1dGUgdmFsdWU9JXMAQ291bGQgbm90IGdlbmVyYXRlIHRoZSBrZXkuAENvdWxkIG5vdCBzdG9yZSB0aGUga2V5LgBDb3VsZCBub3QgYWN0aXZhdGUgdGhlIGtleS4AQ291bGQgbm90IGZldGNoIGdlbmVyYXRlZCBrZXkAQ291bGQgbm90IHN0b3JlL2dlbmVyYXRlIHRoZSBrZXkgLSBmYWlsZWQgdG8gc2V0IGtleSBhdHRyaWJ1dGUgeC1rZXktcmVhZHkAQ291bGQgbm90IHJldHJpZXZlIGtleSBzaWduYXR1cmUgZnJvbSBjdXN0b20gYXR0cmlidXRlcwBDb3VsZCBub3QgcmV0cmlldmUga2V5IGZyb20gT0tWAEVycm9yIGxvYWRpbmcgdHJ1c3Qgc3RvcmUARXJyb3Igc2V0dGluZyB0aGUgY2VydGlmaWNhdGUgZmlsZS4ARXJyb3Igc2V0dGluZyB0aGUga2V5IGZpbGUuAFByaXZhdGUga2V5IGRvZXMgbm90IG1hdGNoIHRoZSBjZXJ0aWZpY2F0ZSBwdWJsaWMga2V5AEluY29ycmVjdCBLZXlyaW5nIGZpbGUAS2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBkZWNyeXB0aW9uIGZhaWxlZC4gUGxlYXNlIHZlcmlmeSAtLWtleXJpbmctZW5jcnlwdGVkLWZpbGUtcGFzc3dvcmQgb3B0aW9uIHZhbHVlLgBGb3VuZCBtYWxmb3JtZWQga2V5cmluZyBiYWNrdXAgZmlsZSAtIHJlbW92aW5nIGl0AEVycm9yIHdoaWxlIHJlc3RvcmluZyBrZXlyaW5nIGZyb20gYmFja3VwIGZpbGUgY2Fubm90IG92ZXJ3cml0ZSBrZXlyaW5nIHdpdGggYmFja3VwAEVycm9yIHdoaWxlIGZsdXNoaW5nIGluLW1lbW9yeSBrZXlyaW5nIGludG8ga2V5cmluZyBmaWxlAEtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgZW5jcnlwdGlvbiBmYWlsZWQuIFBsZWFzZSB2ZXJpZnkgLS1rZXlyaW5nLWVuY3J5cHRlZC1maWxlLXBhc3N3b3JkIG9wdGlvbiB2YWx1ZS4Aa2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9kYXRhIGNhbm5vdCBiZSBzZXQgdG8gbmV3IHZhbHVlIGFzIHRoZSBrZXlyaW5nIGZpbGUgY2Fubm90IGJlIGNyZWF0ZWQvYWNjZXNzZWQgaW4gdGhlIHByb3ZpZGVkIHBhdGgAQ291bGQgbm90IGNyZWF0ZSBrZXlyaW5nIGRpcmVjdG9yeSBUaGUga2V5cmluZ19lbmNyeXB0ZWRfZmlsZSB3aWxsIHN0YXkgdW51c2FibGUgdW50aWwgY29ycmVjdCBwYXRoIHRvIHRoZSBrZXlyaW5nIGRpcmVjdG9yeSBnZXRzIHByb3ZpZGVkAFRoZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX3Bhc3N3b3JkIG11c3QgYmUgc2V0IHRvIGEgdmFsaWQgdmFsdWUuAFRvbyBsb25nIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfcGFzc3dvcmQgdmFsdWUuAGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4gUGxlYXNlIGNoZWNrIGlmIHRoZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX2RhdGEgcG9pbnRzIHRvIHJlYWRhYmxlIGtleXJpbmcgZmlsZSBvciBrZXlyaW5nIGZpbGUgY2FuIGJlIGNyZWF0ZWQgaW4gdGhlIHNwZWNpZmllZCBsb2NhdGlvbiBvciBwYXNzd29yZCB0byBkZWNyeXB0IGtleXJpbmcgZmlsZSBpcyBjb3JyZWN0LgBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIHBsdWdpbgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBwbHVnaW4Aa2V5cmluZ19hd3NfY21rX2lkIGNhbm5vdCBiZSBzZXQgdG8gdGhlIG5ldyB2YWx1ZSBhcyBBV1MgS01TIHNlZW1zIHRvIG5vdCB1bmRlcnN0YW5kIHRoZSBpZCBwcm92aWRlZC4gUGxlYXNlIGNoZWNrIHRoYXQgQ01LIGlkIHByb3ZpZGVkIGlzIGNvcnJlY3QuAGtleXJpbmdfYXdzX3JlZ2lvbiBjYW5ub3QgYmUgc2V0IHRvIHRoZSBuZXcgdmFsdWUgYXMgQVdTIEtNUyBzZWVtcyB0byBub3QgdW5kZXJzdGFuZCB0aGUgcmVnaW9uIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhhdCByZWdpb24gcHJvdmlkZWQgaXMgY29ycmVjdC4AQ291bGQgbm90IG9wZW4ga2V5cmluZ19hd3MgY29uZmlndXJhdGlvbiBmaWxlOiAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJlYWQgQVdTIGFjY2VzcyBrZXkgaWQgZnJvbSBrZXlyaW5nX2F3cyBjb25maWd1cmF0aW9uIGZpbGU6ICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmVhZCBBV1MgYWNjZXNzIGtleSBmcm9tIGtleXJpbmdfYXdzIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAFBhdGggdG8ga2V5cmluZyBhd3MgY29uZmlndXJhdGlvbiBmaWxlIGNhbm5vdCBiZSBlbXB0eQBQYXRoIHRvIGtleXJpbmdfYXdzIHN0b3JhZ2UgZmlsZSBjYW5ub3QgYmUgZW1wdHkuAFVuYWJsZSB0byBjcmVhdGUvYWNjZXNzIGtleXJpbmcgZGlyZWN0b3J5LgBVbmFibGUgdG8gY3JlYXRlL2FjY2VzcyBrZXlyaW5nX2F3cyBzdG9yYWdlIGZpbGUuIFBsZWFzZSBjaGVjayBpZiBrZXlyaW5nX2F3c19kYXRhX2ZpbGUgcG9pbnRzIHRvIGxvY2F0aW9uIHdoZXJlIGtleXJpbmcgZmlsZSBjYW4gYmUgY3JlYXRlZC9hY2Nlc3NlZC4gUGxlYXNlIGFsc28gbWFrZSBzdXJlIHRoYXQgTXlTUUwgc2VydmVyJ3MgdXNlciBoYXMgaGlnaCBlbm91Z2ggcHJpdmlsZWdlcyB0byBhY2Nlc3MgdGhpcyBsb2NhdGlvbi4Aa2V5cmluZ19hd3MgaW5pdGlhbGl6YXRpb24gZmFpbGVkIGR1ZSB0byBpbnRlcm5hbCBlcnJvciB3aGVuIGluaXRpYWxpemluZyBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlIC0gJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzOgBDb3VsZCBub3QgYWNjZXNzIGtleXJpbmdfYXdzIHN0b3JhZ2UgZmlsZSBpbiB0aGUgcGF0aCBwcm92aWRlZC4gUGxlYXNlIGNoZWNrIGlmIHRoZSBrZXlyaW5nX2F3cyBkaXJlY3RvcnkgY2FuIGJlIGFjY2Vzc2VkIGJ5IE15U1FMIFNlcnZlcgBrZXlyaW5nX2F3c19jbWtfaWQgaGFzIHRvIGJlIHNldABDb3VsZCBub3QgZ2V0IEFXUyBLTVMgY3JlZGVudGlhbHMgZnJvbSB0aGUgY29uZmlndXJhdGlvbiBmaWxlAGtleXJpbmdfYXdzIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuAGtleXJpbmdfYXdzIGluaXRpYWxpemF0aW9uIGZhaWx1cmUgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIHBsdWdpbgBJbnZhbGlkIGtleSBsZW5ndGggZm9yIGdpdmVuIGJsb2NrIGNpcGhlcgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19maWxlIHBsdWdpbgBJbmNvcnJlY3QgS2V5cmluZyBmaWxlAEZvdW5kIG1hbGZvcm1lZCBrZXlyaW5nIGJhY2t1cCBmaWxlIC0gcmVtb3ZpbmcgaXQARXJyb3Igd2hpbGUgcmVzdG9yaW5nIGtleXJpbmcgZnJvbSBiYWNrdXAgZmlsZSBjYW5ub3Qgb3ZlcndyaXRlIGtleXJpbmcgd2l0aCBiYWNrdXAARXJyb3Igd2hpbGUgZmx1c2hpbmcgaW4tbWVtb3J5IGtleXJpbmcgaW50byBrZXlyaW5nIGZpbGUAV3JvbmcgcmVnaW9uAENvdWxkIG5vdCBjb25uZWN0IHRvIEFXUyBLTVMgd2l0aCB0aGUgY3JlZGVudGlhbHMgcHJvdmlkZWQuIFBsZWFzZSBtYWtlIHN1cmUgdGhleSBhcmUgY29ycmVjdC4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgZ2VuZXJhdGUgYSBuZXcga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCBlbmNyeXB0IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmUtZW5jcnlwdCBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IGRlY3J5cHQga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByb3RhdGUgdGhlIENNSy4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBUaGUgcmVxdWVzdGVkIEdUSUQgJyVzOiVsbGQnIHdhcyBhbHJlYWR5IHVzZWQsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIHJvbGxiYWNrLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQgd2FzIGtpbGxlZC4ARXJyb3IgYXQgZXZlbnQgaGFuZGxpbmchIEdvdCBlcnJvcjogJWQuAEVycm9yIHdoZW4gZXh0cmFjdGluZyBncm91cCBHVElEIGV4ZWN1dGlvbiBpbmZvcm1hdGlvbiwgc29tZSByZWNvdmVyeSBvcGVyYXRpb25zIG1heSBmYWNlIGZ1dHVyZSBpc3N1ZXMuAEFuIGVycm9yIG9jY3VycmVkIHdoZW4gdHJ5aW5nIHRvIHJlZHVjZSB0aGUgQ2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBzaXplIGZvciB0cmFuc21pc3Npb24uAEZhaWxlZCB0byBjcmVhdGUgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgYXBwbGllciBjYWNoZSEAVW5ibG9ja2luZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gdGhyZWFkIHdhaXRpbmcgZm9yIGFwcGxpZXIgdG8gc3RhcnQsIGFzIHRoZSBzdGFydCBncm91cCByZXBsaWNhdGlvbiB3YXMga2lsbGVkLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBwaXBlbGluZSB3YXMgbm90IHByb3Blcmx5IGRpc3Bvc2VkLiBDaGVjayB0aGUgZXJyb3IgbG9nIGZvciBmdXJ0aGVyIGluZm8uAFRoZSBhcHBsaWVyIHRocmVhZCBleGVjdXRpb24gd2FzIGFib3J0ZWQuIFVuYWJsZSB0byBwcm9jZXNzIG1vcmUgdHJhbnNhY3Rpb25zLCB0aGlzIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAEZhdGFsIGVycm9yIGR1cmluZyBleGVjdXRpb24gb24gdGhlIEFwcGxpZXIgcHJvY2VzcyBvZiBHcm91cCBSZXBsaWNhdGlvbi4gVGhlIHNlcnZlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiAlcwBFcnJvciBzZW5kaW5nIHNpbmdsZSBwcmltYXJ5IG1lc3NhZ2UgaW5mb3JtaW5nIHRoYXQgcHJpbWFyeSBkaWQgYXBwbHkgcmVsYXkgbG9ncy4ARXJyb3IgdXBkYXRpbmcgdHJhbnNhY3Rpb24gc25hcHNob3QgdmVyc2lvbiBhZnRlciB0cmFuc2FjdGlvbiBiZWluZyBwb3NpdGl2ZWx5IGNlcnRpZmllZC4ARXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24gc2lkbm8gYWZ0ZXIgdHJhbnNhY3Rpb24gYmVpbmcgcG9zaXRpdmVseSBjZXJ0aWZpZWQuAEJyb2FkY2FzdCBvZiBjb21taXR0ZWQgdHJhbnNhY3Rpb25zIG1lc3NhZ2UgZmFpbGVkLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIGFkZCB0aGUgZ3JvdXBfc2lkIGluIHRoZSBncm91cF9ndGlkX3NpZF9tYXAgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3IgdXBkYXRpbmcgZ3JvdXBfZ3RpZF9leGVjdXRlZCBHSVREIHNldCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gaGFuZGxlIHRoZSBkb25vcidzIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBjb25mbGljdCBkZXRlY3Rpb24gY29tcG9uZW50LiBQb3NzaWJsZSBvdXQgb2YgbWVtb3J5IGVycm9yLgBFcnJvciB3aGVuIGVzdGFibGlzaGluZyBhIHNlcnZlciBjb25uZWN0aW9uIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciBHVElEIGV4ZWN1dGVkIHNldC4gQ2VydGlmaWNhdGlvbiBtb2R1bGUgY2FuJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuAEVycm9yIHdoaWxlIGFkZGluZyB0aGUgc2VydmVyIEdUSUQgRVhFQ1VURUQgc2V0IHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGUgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIHJldHJpZXZlZCBzZXQgZm9yIGl0cyBhcHBsaWVyLiBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBjYW4ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4ARXJyb3Igd2hpbGUgYWRkaW5nIHRoZSBtZW1iZXIgcmV0cmlldmVkIHNldCB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciBkdXJpbmcgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byB1cGRhdGUgbGFzdCBjb25mbGljdCBmcmVlIHRyYW5zYWN0aW9uLCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgbm90IGJlIHRyYWNrZWQgb24gcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9zdGF0cy5sYXN0X2NvbmZsaWN0X2ZyZWVfdHJhbnNhY3Rpb24uAEVycm9yIHVwZGF0aW5nIHRyYW5zYWN0aW9uIHNuYXBzaG90IHZlcnNpb24gcmVmZXJlbmNlIGZvciBpbnRlcm5hbCBzdG9yYWdlLgBFcnJvciBmZXRjaGluZyB0cmFuc2FjdGlvbiBzaWRubyB3aGlsZSBhZGRpbmcgdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0LgBFcnJvciB3aGlsZSBlbnN1cmluZyB0aGUgc2lkbm8gYmUgcHJlc2VudCBpbiB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZC4ASW1wb3NzaWJsZSB0byBnZW5lcmF0ZSBHbG9iYWwgVHJhbnNhY3Rpb24gSWRlbnRpZmllcjogdGhlIGludGVnZXIgY29tcG9uZW50IHJlYWNoZWQgdGhlIG1heGltYWwgdmFsdWUuIFJlc3RhcnQgdGhlIGdyb3VwIHdpdGggYSBuZXcgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4ASW52YWxpZCBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4ARXJyb3IgdXBkYXRpbmcgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAFRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIGZpbGxpbmcgdGhlIG1pc3NpbmcgR1RJRHMgb24gdGhlIGFwcGxpZXIgY2hhbm5lbCByZWNlaXZlZCBzZXQuIERlc3BpdGUgbm90IGNyaXRpY2FsLCBvbiB0aGUgbG9uZyBydW4gdGhpcyBtYXkgY2F1c2UgcGVyZm9ybWFuY2UgaXNzdWVzLgBTa2lwcGluZyB0aGUgY29tcHV0YXRpb24gb2YgdGhlIFRyYW5zYWN0aW9uc19jb21taXR0ZWRfYWxsX21lbWJlcnMgZmllbGQgYXMgYW4gb2xkZXIgaW5zdGFuY2Ugb2YgdGhpcyBjb21wdXRhdGlvbiBpcyBzdGlsbCBvbmdvaW5nLgBOdWxsIHBhY2tldCBvbiBjZXJ0aWZpZXIncyBxdWV1ZS4ARXJyb3IgcmVhZGluZyBHVElEcyBmcm9tIHRoZSBtZXNzYWdlLgBFcnJvciBwcm9jZXNzaW5nIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciBwcm9jZXNzaW5nIGludGVyc2VjdGlvbiBvZiBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4ARXJyb3Igc2V0dGluZyBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4ARXJyb3IgcmVhZGluZyBncm91cF9ndGlkX2V4dHJhY3RlZCBmcm9tIHRoZSBWaWV3X2NoYW5nZV9sb2dfZXZlbnQuAEVycm9yIHJlYWRpbmcgdGhlIHdyaXRlIHNldCBpdGVtICclcycgZnJvbSB0aGUgVmlld19jaGFuZ2VfbG9nX2V2ZW50LgBFcnJvciBkdXJpbmcgY2VydGlmaWNhdGlvbl9pbmZvIGluaXRpYWxpemF0aW9uLgBQcmltYXJ5IGhhZCBhcHBsaWVkIGFsbCByZWxheSBsb2dzLCBkaXNhYmxlZCBjb25mbGljdCBkZXRlY3Rpb24uAE1lc3NhZ2UgcmVjZWl2ZWQgd2hpbGUgdGhlIHBsdWdpbiBpcyBub3QgcmVhZHksIG1lc3NhZ2UgZGlzY2FyZGVkLgBNZXNzYWdlIHJlY2VpdmVkIHdpdGhvdXQgYSBwcm9wZXIgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllci4ARXJyb3IgcHJvY2Vzc2luZyBtZXNzYWdlIGluIENlcnRpZmllci4AVGhpcyBzZXJ2ZXIgd2FzIG5vdCBkZWNsYXJlZCBvbmxpbmUgc2luY2UgaXQgaXMgb24gc3RhdHVzICVzLgBUaGlzIHNlcnZlciB3YXMgZGVjbGFyZWQgb25saW5lIHdpdGhpbiB0aGUgcmVwbGljYXRpb24gZ3JvdXAuAFdoZW4gZGVjbGFyaW5nIHRoZSBwbHVnaW4gb25saW5lIGl0IHdhcyBub3QgcG9zc2libGUgdG8gZGlzYWJsZSB0aGUgc2VydmVyIHJlYWQgbW9kZSBzZXR0aW5ncy4gVHJ5IHRvIGRpc2FibGUgaXQgbWFudWFsbHkuAFRoZSBtZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IHdhcyBkZWNsYXJlZCBvbmxpbmUgd2l0aGluIHRoZSByZXBsaWNhdGlvbiBncm91cC4ATWVtYmVyIHdpdGggYWRkcmVzcyAlczoldSBoYXMgYmVjb21lIHVucmVhY2hhYmxlLgBNZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IGlzIHJlYWNoYWJsZSBhZ2Fpbi4AVGhpcyBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcmVhY2ggYSBtYWpvcml0eSBvZiBtZW1iZXJzIGluIHRoZSBncm91cC4gVGhpcyBzZXJ2ZXIgd2lsbCBub3cgYmxvY2sgYWxsIHVwZGF0ZXMuIFRoZSBzZXJ2ZXIgd2lsbCByZW1haW4gYmxvY2tlZCB1bnRpbCBjb250YWN0IHdpdGggdGhlIG1ham9yaXR5IGlzIHJlc3RvcmVkLiBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwLgBUaGlzIHNlcnZlciBpcyBub3QgYWJsZSB0byByZWFjaCBhIG1ham9yaXR5IG9mIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBUaGlzIHNlcnZlciB3aWxsIG5vdyBibG9jayBhbGwgdXBkYXRlcy4gVGhlIHNlcnZlciB3aWxsIHJlbWFpbiBibG9ja2VkIGZvciB0aGUgbmV4dCAlbHUgc2Vjb25kcy4gVW5sZXNzIGNvbnRhY3Qgd2l0aCB0aGUgbWFqb3JpdHkgaXMgcmVzdG9yZWQsIGFmdGVyIHRoaXMgdGltZSB0aGUgbWVtYmVyIHdpbGwgZXJyb3Igb3V0IGFuZCBsZWF2ZSB0aGUgZ3JvdXAuIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAuAEEgZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2Ugd2FzIHJlY2VpdmVkIGJ1dCB0aGUgcGx1Z2luIGlzIGFscmVhZHkgbGVhdmluZyBkdWUgdG8gdGhlIGNvbmZpZ3VyZWQgdGltZW91dCBvbiBncm91cF9yZXBsaWNhdGlvbl91bnJlYWNoYWJsZV9tYWpvcml0eV90aW1lb3V0IG9wdGlvbi4AVGhlIG1lbWJlciBoYXMgcmVzdW1lZCBjb250YWN0IHdpdGggYSBtYWpvcml0eSBvZiB0aGUgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFJlZ3VsYXIgb3BlcmF0aW9uIGlzIHJlc3RvcmVkIGFuZCB0cmFuc2FjdGlvbnMgYXJlIHVuYmxvY2tlZC4ATWVtYmVycyByZW1vdmVkIGZyb20gdGhlIGdyb3VwOiAlcwBQcmltYXJ5IHNlcnZlciB3aXRoIGFkZHJlc3MgJXMgbGVmdCB0aGUgZ3JvdXAuIEVsZWN0aW5nIG5ldyBQcmltYXJ5LgBNZW1iZXJzIGpvaW5lZCB0aGUgZ3JvdXA6ICVzAFRoZXJlIHdhcyBhIHByZXZpb3VzIHBsdWdpbiBlcnJvciB3aGlsZSB0aGUgbWVtYmVyIGpvaW5lZCB0aGUgZ3JvdXAuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlZCB0byAlcyBvbiB2aWV3ICVzLgBHcm91cCBtZW1iZXJzaGlwIGNoYW5nZWQ6IFRoaXMgbWVtYmVyIGhhcyBsZWZ0IHRoZSBncm91cC4ATWVtYmVyIHdhcyBleHBlbGxlZCBmcm9tIHRoZSBncm91cCBkdWUgdG8gbmV0d29yayBmYWlsdXJlcywgY2hhbmdpbmcgbWVtYmVyIHN0YXR1cyB0byBFUlJPUi4AVW5hYmxlIHRvIG9wZW4gc2Vzc2lvbiB0byAocmUpc2V0IHJlYWQgb25seSBtb2RlLiBTa2lwcGluZy4AQSBuZXcgcHJpbWFyeSB3aXRoIGFkZHJlc3MgJXM6JXUgd2FzIGVsZWN0ZWQuICVzAFVuYWJsZSB0byBkaXNhYmxlIHN1cGVyIHJlYWQgb25seSBmbGFnLiBUcnkgdG8gZGlzYWJsZSBpdCBtYW51YWxseQBVbmFibGUgdG8gc2V0IHN1cGVyIHJlYWQgb25seSBmbGFnLiBUcnkgdG8gc2V0IGl0IG1hbnVhbGx5LgBUaGlzIHNlcnZlciBpcyB3b3JraW5nIGFzIHByaW1hcnkgbWVtYmVyLgBUaGlzIHNlcnZlciBpcyB3b3JraW5nIGFzIHNlY29uZGFyeSBtZW1iZXIgd2l0aCBwcmltYXJ5IG1lbWJlciBhZGRyZXNzICVzOiV1LgBVbmFibGUgdG8gc2V0IGFueSBtZW1iZXIgYXMgcHJpbWFyeS4gTm8gc3VpdGFibGUgY2FuZGlkYXRlLgBFcnJvciB3aGVuIGFjdGl2YXRpbmcgc3VwZXJfcmVhZF9vbmx5IG1vZGUgb24gc3RhcnQuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEdyb3VwIGNvbnRhaW5zICVsdSBtZW1iZXJzIHdoaWNoIGlzIGdyZWF0ZXIgdGhhbiBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQgdmFsdWUgb2YgJWx1LiBUaGlzIGNhbiBsZWFkIHRvIGEgaGlnaGVyIHRyYW5zYWN0aW9uYWwgYWJvcnQgcmF0ZS4ATWVtYmVyIHdpdGggYWRkcmVzcyAnJXM6JXUnIGRpZG4ndCBwcm92aWRlIGFueSBkYXRhIGR1cmluZyB0aGUgbGFzdCBncm91cCBjaGFuZ2UuIEdyb3VwIGluZm9ybWF0aW9uIGNhbiBiZSBvdXRkYXRlZCBhbmQgbGVhZCB0byBlcnJvcnMgb24gcmVjb3ZlcnkuAFRoZXJlIGlzIGFscmVhZHkgYSBtZW1iZXIgd2l0aCBzZXJ2ZXJfdXVpZCAlcy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIGluZm9ybWF0aW9uIGZvciBncm91cCBjaGFuZ2UuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciBHVElEIGV4ZWN1dGVkIHNldC4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIHJldHJpZXZlZCBzZXQgZm9yIGl0cyBhcHBsaWVyLiBPcGVyYXRpb25zIGFuZCBjaGVja3MgbWFkZSB0byBncm91cCBqb2luZXJzIG1heSBiZSBpbmNvbXBsZXRlLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIGdyb3VwIGFscmVhZHkgaGFzIDkgbWVtYmVycy4ATWVtYmVyIHZlcnNpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGNvbnRhaW5zIHRyYW5zYWN0aW9ucyBub3QgcHJlc2VudCBpbiB0aGUgZ3JvdXAuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEl0IHdhcyBub3QgcG9zc2libGUgdG8gYXNzZXNzIGlmIHRoZSBtZW1iZXIgaGFzIG1vcmUgdHJhbnNhY3Rpb25zIHRoYW4gdGhlIGdyb3VwLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBNZW1iZXIgdmVyc2lvbiBpcyBsb3dlciB0aGFuIHNvbWUgZ3JvdXAgbWVtYmVyLCBidXQgc2luY2Ugb3B0aW9uICdncm91cF9yZXBsaWNhdGlvbl9hbGxvd19sb2NhbF9sb3dlcl92ZXJzaW9uX2pvaW4gaXMgZW5hYmxlZCwgbWVtYmVyIHdpbGwgYmUgYWxsb3dlZCB0byBqb2luLgBFcnJvciBwcm9jZXNzaW5nIGxvY2FsIEdUSUQgc2V0cyB3aGVuIGNvbXBhcmluZyB0aGlzIG1lbWJlciB0cmFuc2FjdGlvbnMgYWdhaW5zdCB0aGUgZ3JvdXAuAFRoaXMgbWVtYmVyIGhhcyBtb3JlIGV4ZWN1dGVkIHRyYW5zYWN0aW9ucyB0aGFuIHRob3NlIHByZXNlbnQgaW4gdGhlIGdyb3VwLiBMb2NhbCB0cmFuc2FjdGlvbnM6ICVzID4gR3JvdXAgdHJhbnNhY3Rpb25zOiAlcwBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX2d0aWRfYXNzaWdubWVudF9ibG9ja19zaXplIG9wdGlvbiB2YWx1ZSAnJWxsdScgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICclbGx1Jy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSB0cmFuc2FjdGlvbi13cml0ZS1zZXQtZXh0cmFjdGlvbiBvcHRpb24gdmFsdWUgJyVzJyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVzJy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AVGhlIG1lbWJlciBjb25maWd1cmF0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwIGNvbmZpZ3VyYXRpb24uIFZhcmlhYmxlcyBzdWNoIGFzIGdyb3VwX3JlcGxpY2F0aW9uX3NpbmdsZV9wcmltYXJ5X21vZGUgb3IgZ3JvdXBfcmVwbGljYXRpb25fZW5mb3JjZV91cGRhdGVfZXZlcnl3aGVyZV9jaGVja3MgbXVzdCBoYXZlIHRoZSBzYW1lIHZhbHVlIG9uIGV2ZXJ5IHNlcnZlciBpbiB0aGUgZ3JvdXAuIChtZW1iZXIgY29uZmlndXJhdGlvbiBvcHRpb246IFslc10sIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3B0aW9uOiBbJXNdKS4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuICVzAERldGVjdGVkIHByZXZpb3VzIFJFU0VUIFNPVVJDRSBpbnZvY2F0aW9uIG9yIGFuIGlzc3VlIGV4aXN0cyBpbiB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciByZWxheSBsb2cuIFB1cmdpbmcgZXhpc3RpbmcgYXBwbGllciBsb2dzLgBVbmtub3duIGVycm9yIG9jY3VycmVkIHdoaWxlIHJlc2V0dGluZyBhcHBsaWVyJ3MgbW9kdWxlIGxvZ3MuAEZhaWxlZCB0byBzZXR1cCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQuAEVycm9yIHdoaWxlIHN0YXJ0aW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZABGYWlsZWQgdG8gc3RvcCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQuAEZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbiBkYXRhIGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgYXBwbGllcgBDYW4ndCBzdGFydCByZXBsaWNhIElPIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBhbmQgdGhlIHByaW1hcnkgbWVtYmVyIGlzIG5vdCBrbm93bi4AQ2FuJ3Qgc3RhcnQgcmVwbGljYSBJTyBUSFJFQUQgb2YgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgb24gYSBzZWNvbmRhcnkgbWVtYmVyLgBDYW4ndCBzdGFydCByZXBsaWNhIFNRTCBUSFJFQUQgb2YgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgYW5kIHRoZSBwcmltYXJ5IG1lbWJlciBpcyBub3Qga25vd24uAENhbid0IHN0YXJ0IHJlcGxpY2EgU1FMIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBvbiBhIHNlY29uZGFyeSBtZW1iZXIuAFRhYmxlICVzIGRvZXMgbm90IHVzZSB0aGUgSW5ub0RCIHN0b3JhZ2UgZW5naW5lLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24uAFRhYmxlICVzIGRvZXMgbm90IGhhdmUgYW55IFBSSU1BUlkgS0VZLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24uAFRhYmxlICVzIGhhcyBhIGZvcmVpZ24ga2V5IHdpdGggJ0NBU0NBREUnLCAnU0VUIE5VTEwnIG9yICdTRVQgREVGQVVMVCcgY2xhdXNlLiBUaGlzIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24uAGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudCBpcyByZXNldCB0byAlbHUAYXV0b19pbmNyZW1lbnRfb2Zmc2V0IGlzIHJlc2V0IHRvICVsdQBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQgaXMgc2V0IHRvICVsdQBhdXRvX2luY3JlbWVudF9vZmZzZXQgaXMgc2V0IHRvICVsdQBGYWlsZWQgdG8gZmV0Y2ggdHJhbnNhY3Rpb24gY29udGV4dCBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGNlcnRpZmljYXRpb24ARmFpbGVkIHRvIGZldGNoIEZvcm1hdF9kZXNjcmlwdGlvbl9sb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCBzZXJ2ZXIgaW5mbyBmb3IgYXBwbGllcgBGYWlsZWQgdG8gZmV0Y2ggVHJhbnNhY3Rpb25fY29udGV4dF9sb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBjZXJ0aWZpY2F0aW9uAEZhaWxlZCB0byByZWFkIHNuYXBzaG90IHZlcnNpb24gZnJvbSB0cmFuc2FjdGlvbiBjb250ZXh0IGV2ZW50IHJlcXVpcmVkIGZvciBjZXJ0aWZpY2F0aW9uAEZhaWxlZCB0byBmZXRjaCBHdGlkX2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGNlcnRpZmljYXRpb24AVW5hYmxlIHRvIHVwZGF0ZSBjZXJ0aWZpY2F0aW9uIHJlc3VsdCBvbiBzZXJ2ZXIgc2lkZSwgdGhyZWFkX2lkOiAlbHUAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIGd0aWQgd2FzIHByb3ZpZGVkIGZvciBsb2NhbCB0cmFuc2FjdGlvbnMAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIG5vIGd0aWQgd2FzIHByb3ZpZGVkIGZvciBsb2NhbCB0cmFuc2FjdGlvbnMARmFpbGVkIHRvIG5vdGlmeSBjZXJ0aWZpY2F0aW9uIG91dGNvbWUAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIGd0aWQgd2FzIHByb3ZpZGVkIGZvciByZW1vdGUgdHJhbnNhY3Rpb25zAFVuYWJsZSB0byBhZGQgZ3RpZCBpbmZvcm1hdGlvbiB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQgd2hlbiBndGlkIHdhcyBub3QgcHJvdmlkZWQgZm9yIHJlbW90ZSB0cmFuc2FjdGlvbnMARmFpbGVkIHRvIGZldGNoIFZpZXdfY2hhbmdlX2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIGluZm8gZm9yIGNlcnRpZmljYXRpb24ARXJyb3Igd2hlbiBjb250YWN0aW5nIHRoZSBzZXJ2ZXIgdG8gZW5zdXJlIHRoZSBwcm9wZXIgbG9nZ2luZyBvZiBhIGdyb3VwIGNoYW5nZSBpbiB0aGUgYmlubG9nAFRpbWVvdXQgd2hlbiB3YWl0aW5nIGZvciB0aGUgc2VydmVyIHRvIGV4ZWN1dGUgbG9jYWwgdHJhbnNhY3Rpb25zIGluIG9yZGVyIGFzc3VyZSB0aGUgZ3JvdXAgY2hhbmdlIHByb3BlciBsb2dnaW5nAEZhaWxlZCB0byBmZXRjaCBMb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCBzZXJ2ZXIgaW5mbyBmb3IgYXBwbGllcgBVbmFibGUgdG8gc3RhcnQgR3JvdXAgUmVwbGljYXRpb24uIFJlcGxpY2F0aW9uIGFwcGxpZXIgaW5mcmFzdHJ1Y3R1cmUgaXMgbm90IGluaXRpYWxpemVkIHNpbmNlIHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCAtLWluaXRpYWxpemUsIC0taW5pdGlhbGl6ZS1pbnNlY3VyZSBvciAtLXVwZ3JhZGU9TUlOSU1BTCBvbiBhIHNlcnZlciB1cGdyYWRlLgBGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgcGx1Z2luIG9wZXJhdGlvbnMAU2V0dGluZyBzdXBlcl9yZWFkX29ubHk9T04uAFNldHRpbmcgc3VwZXJfcmVhZF9vbmx5PU9GRi4Aa2lsbGVkIHNlc3Npb24gaWQ6ICVkIHN0YXR1czogJWQAa2lsbGVkIGZhaWxlZCBpZDogJWQgZmFpbGVkOiAlZABJbnRlcm5hbCBxdWVyeTogJXMgcmVzdWx0IGluIGVycm9yLiBFcnJvciBudW1iZXI6ICVsZABFcnJvciBjb3B5aW5nIGZyb20gZW1wdHkgc3RyaW5nIABRdWVyeSBleGVjdXRpb24gcmVzdWx0ZWQgaW4gZmFpbHVyZS4gZXJybm86ICVkAFVuYWJsZSB0byBjcmVhdGUgYSBzZXNzaW9uIGZvciBleGVjdXRpbmcgdGhlIHF1ZXJpZXMgb24gdGhlIHNlcnZlcgBUaGUgbWVtYmVyIHdpdGggYWRkcmVzcyAlczoldSBoYXMgdW5leHBlY3RlZGx5IGRpc2FwcGVhcmVkLCBraWxsaW5nIHRoZSBjdXJyZW50IGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGNvbm5lY3Rpb24ATWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyB3aGVuIHRyeWluZyB0byBjb25uZWN0IHRvIGEgZG9ub3IgcmVhY2hlZC4gQWJvcnRpbmcgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkuAEFsbCBkb25vcnMgbGVmdC4gQWJvcnRpbmcgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkuAEVzdGFibGlzaGluZyBncm91cCByZWNvdmVyeSBjb25uZWN0aW9uIHdpdGggYSBwb3NzaWJsZSBkb25vci4gQXR0ZW1wdCAlZC8lZABSZXRyeWluZyBncm91cCByZWNvdmVyeSBjb25uZWN0aW9uIHdpdGggYW5vdGhlciBkb25vci4gQXR0ZW1wdCAlZC8lZABObyB2YWxpZCBkb25vcnMgZXhpc3QgaW4gdGhlIGdyb3VwLCByZXRyeWluZwBFcnJvciB3aGVuIGNvbmZpZ3VyaW5nIHRoZSBhc3luY2hyb25vdXMgcmVjb3ZlcnkgY2hhbm5lbCBjb25uZWN0aW9uIHRvIHRoZSBkb25vci4ARXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24gdG8gYSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBkb25vciAlcyBhdCAlcyBwb3J0OiAlZC4ARXJyb3Igd2hpbGUgY3JlYXRpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGNoYW5uZWwgd2l0aCBkb25vciAlcyBhdCAlcyBwb3J0OiAlZC4AVGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gY29ubmVjdGluZyB0byB0aGUgZG9ub3Igc2VydmVyLiBQbGVhc2UgY2hlY2sgdGhhdCBncm91cF9yZXBsaWNhdGlvbl9yZWNvdmVyeSBjaGFubmVsIGNyZWRlbnRpYWxzIGFuZCBhbGwgTUVNQkVSX0hPU1QgY29sdW1uIHZhbHVlcyBvZiBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVycyB0YWJsZSBhcmUgY29ycmVjdCBhbmQgRE5TIHJlc29sdmFibGUuAEZvciBkZXRhaWxzIHBsZWFzZSBjaGVjayBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fY29ubmVjdGlvbl9zdGF0dXMgdGFibGUgYW5kIGVycm9yIGxvZyBtZXNzYWdlcyBvZiBSZXBsaWNhIEkvTyBmb3IgY2hhbm5lbCBncm91cF9yZXBsaWNhdGlvbl9yZWNvdmVyeS4ARXJyb3Igd2hpbGUgc3RhcnRpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5IHJlY2VpdmVyL2FwcGxpZXIgdGhyZWFkcwBUZXJtaW5hdGluZyBleGlzdGluZyBncm91cCByZXBsaWNhdGlvbiBkb25vciBjb25uZWN0aW9uIGFuZCBwdXJnaW5nIHRoZSBjb3JyZXNwb25kaW5nIGxvZ3MuAEVycm9yIHdoZW4gc3RvcHBpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5J3MgZG9ub3IgY29ubmVjdGlvbgBFcnJvciB3aGVuIHB1cmdpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5J3MgcmVsYXkgbG9ncwBVbmFibGUgdG8ga2lsbCB0aGUgY3VycmVudCBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBkb25vciBjb25uZWN0aW9uIGFmdGVyIGFuIGFwcGxpZXIgZXJyb3IuIEluY3JlbWVudGFsIHJlY292ZXJ5IHdpbGwgc2h1dGRvd24uAFVuYWJsZSB0byBraWxsIHRoZSBjdXJyZW50IGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGRvbm9yIGNvbm5lY3Rpb24gZHVyaW5nIGZhaWxvdmVyLiBJbmNyZW1lbnRhbCByZWNvdmVyeSB3aWxsIHNodXRkb3duLgBVbmV4cGVjdGVkIGVycm9yIHdoZW4gbm90aWZ5aW5nIGFuIGludGVybmFsIGNvbXBvbmVudCBuYW1lZCAlcyByZWdhcmRpbmcgYSBncm91cCBtZW1iZXJzaGlwIGV2ZW50LgBBbiB1bmRlZmluZWQgZXJyb3Igd2FzIGZvdW5kIHdoaWxlIGJyb2FkY2FzdGluZyBhbiBpbnRlcm5hbCBncm91cCBtZW1iZXJzaGlwIG5vdGlmaWNhdGlvbiEgVGhpcyBpcyBsaWtlbHkgdG8gaGFwcGVuIGlmIHlvdXIgY29tcG9uZW50cyBvciBwbHVnaW5zIGFyZSBub3QgcHJvcGVybHkgbG9hZGVkIG9yIGFyZSBtYWxmdW5jdGlvbmluZyEAQW4gdW5kZWZpbmVkIGVycm9yIHdhcyBmb3VuZCB3aGlsZSBicm9hZGNhc3RpbmcgYW4gaW50ZXJuYWwgZ3JvdXAgbWVtYmVyIHN0YXR1cyBub3RpZmljYXRpb24hIFRoaXMgaXMgbGlrZWx5IHRvIGhhcHBlbiBpZiB5b3VyIGNvbXBvbmVudHMgb3IgcGx1Z2lucyBhcmUgbm90IHByb3Blcmx5IGxvYWRlZCBvciBhcmUgbWFsZnVuY3Rpb25pbmchAE5vIG1lbW9yeSB0byBnZW5lcmF0ZSB3cml0ZSBpZGVudGlmaWNhdGlvbiBoYXNoAEJhc2UgNjQgZW5jb2Rpbmcgb2YgdGhlIHdyaXRlIGlkZW50aWZpY2F0aW9uIGhhc2ggZmFpbGVkAEJpbmxvZyBmb3JtYXQgc2hvdWxkIGJlIFJPVyBmb3IgR3JvdXAgUmVwbGljYXRpb24AYmlubG9nX2NoZWNrc3VtIHNob3VsZCBiZSBOT05FIGZvciBHcm91cCBSZXBsaWNhdGlvbgBBIHRyYW5zYWN0aW9uX3dyaXRlX3NldF9leHRyYWN0aW9uIGFsZ29yaXRobSBzaG91bGQgYmUgc2VsZWN0ZWQgd2hlbiBydW5uaW5nIEdyb3VwIFJlcGxpY2F0aW9uAFRyYW5zYWN0aW9uIGlzb2xhdGlvbiBsZXZlbCAodHhfaXNvbGF0aW9uKSBpcyBzZXQgdG8gU0VSSUFMSVpBQkxFLCB3aGljaCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEdyb3VwIFJlcGxpY2F0aW9uAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBzdG9wcGluZy4AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHJlY292ZXJpbmcuIFRyeSBhZ2FpbiB3aGVuIHRoZSBzZXJ2ZXIgaXMgT05MSU5FLgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgb24gRVJST1Igc3RhdGUuIENoZWNrIGZvciBlcnJvcnMgYW5kIHJlc3RhcnQgdGhlIHBsdWdpbgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgT0ZGTElORS4gQ2hlY2sgZm9yIGVycm9ycyBhbmQgcmVzdGFydCB0aGUgcGx1Z2luAFdlIGNhbiBvbmx5IHVzZSBvbmUgY2FjaGUgdHlwZSBhdCBhIHRpbWUgb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gcmVpbml0IGJpbmxvZyBjYWNoZSBsb2cgZm9yIHJlYWQgb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gY3JlYXRlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIGV4dHJhY3QgdGhlIHNldCBvZiBpdGVtcyB3cml0dGVuIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIGdhdGhlciB0aGUgc2V0IG9mIGl0ZW1zIHdyaXR0ZW4gZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBFcnJvciBvbiBzZXNzaW9uICV1LiBUcmFuc2FjdGlvbiBvZiBzaXplICVsbHUgZXhjZWVkcyBzcGVjaWZpZWQgbGltaXQgJWx1LiBUbyBpbmNyZWFzZSB0aGUgbGltaXQgcGxlYXNlIGFkanVzdCBncm91cF9yZXBsaWNhdGlvbl90cmFuc2FjdGlvbl9zaXplX2xpbWl0IG9wdGlvbi4ARXJyb3Igd2hpbGUgcmUtaW5pdGlhbGl6aW5nIGFuIGludGVybmFsIGNhY2hlLCBmb3IgcmVhZCBvcGVyYXRpb25zLCBvbiBzZXNzaW9uICV1AEVycm9yIHdoaWxlIGFwcGVuZGluZyBkYXRhIHRvIGFuIGludGVybmFsIGNhY2hlIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgd3JpdGluZyB0byB0cmFuc2FjdGlvbiBtZXNzYWdlIG9uIHNlc3Npb24gJXUAVW5hYmxlIHRvIHJlZ2lzdGVyIGZvciBnZXR0aW5nIG5vdGlmaWNhdGlvbnMgcmVnYXJkaW5nIHRoZSBvdXRjb21lIG9mIHRoZSB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEVycm9yIGJyb2FkY2FzdGluZyB0cmFuc2FjdGlvbiB0byB0aGUgZ3JvdXAgb24gc2Vzc2lvbiAldS4gTWVzc2FnZSBpcyB0b28gYmlnLgBFcnJvciB3aGlsZSBicm9hZGNhc3RpbmcgdGhlIHRyYW5zYWN0aW9uIHRvIHRoZSBncm91cCBvbiBzZXNzaW9uICV1AEVycm9yIHdoaWxlIHdhaXRpbmcgZm9yIGNvbmZsaWN0IGRldGVjdGlvbiBwcm9jZWR1cmUgdG8gZmluaXNoIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgcmUtaW5pdGlhbGl6aW5nIGFuIGludGVybmFsIGNhY2hlLCBmb3Igd3JpdGUgb3BlcmF0aW9ucywgb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gY3JlYXRlIGdyb3VwIHJlcGxpY2F0aW9uIGNvbW1pdCBjYWNoZSBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byByZWluaXQgZ3JvdXAgcmVwbGljYXRpb24gY29tbWl0IGNhY2hlIGZvciB3cml0ZSBvbiBzZXNzaW9uICV1AEEgcHJldmlvdXMgcmVjb3Zlcnkgc2Vzc2lvbiBpcyBzdGlsbCBydW5uaW5nLiBQbGVhc2Ugc3RvcCB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcGx1Z2luIGFuZCB3YWl0IGZvciBpdCB0byBzdG9wAEZhdGFsIGVycm9yIGR1cmluZyB0aGUgaW5jcmVtZW50YWwgcmVjb3ZlcnkgcHJvY2VzcyBvZiBHcm91cCBSZXBsaWNhdGlvbi4gVGhlIHNlcnZlciB3aWxsIGxlYXZlIHRoZSBncm91cC4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuICVzAFVuYWJsZSB0byBldmFsdWF0ZSB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBleGVjdXRpb24gc3RhdHVzLiBHcm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSB3aWxsIHNodXRkb3duIHRvIGF2b2lkIGRhdGEgY29ycnVwdGlvbi4AT25seSBvbmUgc2VydmVyIGFsaXZlLiBEZWNsYXJpbmcgdGhpcyBzZXJ2ZXIgYXMgb25saW5lIHdpdGhpbiB0aGUgcmVwbGljYXRpb24gZ3JvdXAARXJyb3Igd2hlbiBwcm9jZXNzaW5nIGNlcnRpZmljYXRpb24gaW5mb3JtYXRpb24gaW4gdGhlIGluY3JlbWVudGFsIHJlY292ZXJ5IHByb2Nlc3MAVW5hYmxlIHRvIGVuc3VyZSB0aGUgZXhlY3V0aW9uIG9mIGdyb3VwIHRyYW5zYWN0aW9ucyByZWNlaXZlZCBkdXJpbmcgcmVjb3ZlcnkuAEVycm9yIHdoaWxlIHNlbmRpbmcgbWVzc2FnZSBpbiB0aGUgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkgcHJvY2Vzcy4AVW5hYmxlIHRvIHJlYWQgdGhlIHNlcnZlciB2YWx1ZSBmb3IgdGhlIHN1cGVyX3JlYWRfb25seSB2YXJpYWJsZS4AVW5hYmxlIHRvIHJlYWQgdGhlIHNlcnZlciB2YWx1ZXMgZm9yIHRoZSByZWFkX29ubHkgYW5kIHN1cGVyX3JlYWRfb25seSB2YXJpYWJsZXMuAFVuYWJsZSB0byByZXNldCB0aGUgc2VydmVyIHJlYWQgbW9kZSBzZXR0aW5ncy4gVHJ5IHRvIHJlc2V0IHRoZW0gbWFudWFsbHkuAER1ZSB0byBhIHBsdWdpbiBlcnJvciwgc29tZSB0cmFuc2FjdGlvbnMgd2VyZSB1bmFibGUgdG8gYmUgY2VydGlmaWVkIGFuZCB3aWxsIG5vdyByb2xsYmFjay4ARXJyb3Igd2hlbiB0cnlpbmcgdG8gdW5ibG9jayBub24gY2VydGlmaWVkIG9yIGNvbnNpc3RlbnQgdHJhbnNhY3Rpb25zLiBDaGVjayBmb3IgY29uc2lzdGVuY3kgZXJyb3JzIHdoZW4gcmVzdGFydGluZyB0aGUgc2VydmljZQBUaGlzIHNlcnZlciBpcyB3b3JraW5nIGFzIHNlY29uZGFyeSBtZW1iZXIgd2l0aCBwcmltYXJ5IG1lbWJlciBhZGRyZXNzICVzOiV1LgBVbmFibGUgdG8gc3RhcnQgR3JvdXAgUmVwbGljYXRpb24uIFJlcGxpY2F0aW9uIGFwcGxpZXIgaW5mcmFzdHJ1Y3R1cmUgaXMgbm90IGluaXRpYWxpemVkIHNpbmNlIHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCBzZXJ2ZXJfaWQ9MC4gUGxlYXNlLCByZXN0YXJ0IHRoZSBzZXJ2ZXIgd2l0aCBzZXJ2ZXJfaWQgbGFyZ2VyIHRoYW4gMC4AZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyBtdXN0IGJlIGVtcHR5IG9uIGdyb3VwIHN0YXJ0LiBDdXJyZW50IHZhbHVlOiAnJXMnAEl0IHdhcyBub3QgcG9zc2libGUgdG8gZ3VhcmFudGVlIHRoZSBpbml0aWFsaXphdGlvbiBvZiBwbHVnaW4gc3RydWN0dXJlcyBvbiBzZXJ2ZXIgc3RhcnQAQ291bGQgbm90IGVuYWJsZSB0aGUgc2VydmVyIHJlYWQgb25seSBtb2RlIGFuZCBndWFyYW50ZWUgYSBzYWZlIHJlY292ZXJ5IGV4ZWN1dGlvbgBFcnJvciBvbiBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZSBpbml0aWFsaXphdGlvbgBDYW4ndCBzdGFydCBncm91cCByZXBsaWNhdGlvbiBvbiBzZWNvbmRhcnkgbWVtYmVyIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSB3aGlsZSBhc3luY2hyb25vdXMgcmVwbGljYXRpb24gY2hhbm5lbHMgYXJlIHJ1bm5pbmcuAEVycm9yIG9uIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lIHN0YXJ0AFRpbWVvdXQgb24gd2FpdCBmb3IgdmlldyBhZnRlciBqb2luaW5nIGdyb3VwAEVycm9yIGNhbGxpbmcgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAE1lbWJlciBzZXJ2ZXJfdXVpZCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAuIFNlcnZlcl91dWlkICVzIG1hdGNoZXMgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAlcy4ATWVtYmVyIGNvbmZpZ3VyYXRpb246IG1lbWJlcl9pZDogJWx1OyBtZW1iZXJfdXVpZDogIiVzIjsgc2luZ2xlLXByaW1hcnkgbW9kZTogIiVzIjsgZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50OiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQ6ICIlcyI7AFVuYWJsZSB0byBjb25maXJtIHdoZXRoZXIgdGhlIHNlcnZlciBoYXMgbGVmdCB0aGUgZ3JvdXAgb3Igbm90LiBDaGVjayBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVycyB0byBjaGVjayBncm91cCBtZW1iZXJzaGlwIGluZm9ybWF0aW9uLgBTa2lwcGluZyBsZWF2ZSBvcGVyYXRpb246IGNvbmN1cnJlbnQgYXR0ZW1wdCB0byBsZWF2ZSB0aGUgZ3JvdXAgaXMgb24tZ29pbmcuAFNraXBwaW5nIGxlYXZlIG9wZXJhdGlvbjogbWVtYmVyIGFscmVhZHkgbGVmdCB0aGUgZ3JvdXAuAEdvaW5nIHRvIHdhaXQgZm9yIHZpZXcgbW9kaWZpY2F0aW9uAFdoaWxlIGxlYXZpbmcgdGhlIGdyb3VwIGR1ZSB0byBhIHN0b3AsIHNodXRkb3duIG9yIGZhaWx1cmUgdGhlcmUgd2FzIGEgdGltZW91dCByZWNlaXZpbmcgYSB2aWV3IGNoYW5nZS4gVGhpcyBjYW4gbGVhZCB0byBhIHBvc3NpYmxlIGluY29uc2lzdGVudCBzdGF0ZS4gQ2hlY2sgdGhlIGxvZyBmb3IgbW9yZSBkZXRhaWxzAFJlcXVlc3RpbmcgdG8gbGVhdmUgdGhlIGdyb3VwIGRlc3BpdGUgb2Ygbm90IGJlaW5nIGEgbWVtYmVyAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGlzIHN0b3BwaW5nLgBQbHVnaW4gJ2dyb3VwX3JlcGxpY2F0aW9uJyBoYXMgYmVlbiBzdG9wcGVkLgBPbiBwbHVnaW4gc2h1dGRvd24gaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBlbmFibGUgdGhlIHNlcnZlciByZWFkIG9ubHkgbW9kZS4gTG9jYWwgdHJhbnNhY3Rpb25zIHdpbGwgYmUgYWNjZXB0ZWQgYW5kIGNvbW1pdHRlZC4AT24gc2h1dGRvd24gdGhlcmUgd2FzIGEgdGltZW91dCBvbiB0aGUgR3JvdXAgUmVwbGljYXRpb24gcmVjb3ZlcnkgbW9kdWxlIHRlcm1pbmF0aW9uLiBDaGVjayB0aGUgbG9nIGZvciBtb3JlIGRldGFpbHMAT24gc2h1dGRvd24gdGhlcmUgd2FzIGEgdGltZW91dCBvbiB0aGUgR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciB0ZXJtaW5hdGlvbi4AVW5leHBlY3RlZCBmYWlsdXJlIHdoaWxlIHNodXR0aW5nIGRvd24gcmVnaXN0cnkgbW9kdWxlIQBGYWlsdXJlIGR1cmluZyBHcm91cCBSZXBsaWNhdGlvbiBoYW5kbGVyIGluaXRpYWxpemF0aW9uAEZhaWx1cmUgd2hlbiByZWdpc3RlcmluZyB0aGUgc2VydmVyIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIHRyYW5zYWN0aW9ucyBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSBiaW5sb2cgc3RhdGUgb2JzZXJ2ZXJzAFVuYWJsZSB0byBzdGFydCBHcm91cCBSZXBsaWNhdGlvbiBvbiBib290AEZhaWx1cmUgd2hlbiBzdG9wcGluZyBHcm91cCBSZXBsaWNhdGlvbiBvbiBwbHVnaW4gdW5pbnN0YWxsAEZhaWx1cmUgd2hlbiB1bnJlZ2lzdGVyaW5nIHRoZSBzZXJ2ZXIgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiB1bnJlZ2lzdGVyaW5nIHRoZSB0cmFuc2FjdGlvbnMgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiB1bnJlZ2lzdGVyaW5nIHRoZSBiaW5sb2cgc3RhdGUgb2JzZXJ2ZXJzAEFsbCBHcm91cCBSZXBsaWNhdGlvbiBzZXJ2ZXIgb2JzZXJ2ZXJzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgdW5yZWdpc3RlcmVkAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4AVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBDYW5ub3Qgc3RhcnQgdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGFwcGxpZXIgYXMgYSBwcmV2aW91cyBzaHV0ZG93biBpcyBzdGlsbCBydW5uaW5nOiBUaGUgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIGl0cyB0YXNrIGlzIGNvbXBsZXRlLgBVbmFibGUgdG8gaW5pdGlhbGl6ZSB0aGUgR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciBtb2R1bGUuAEdyb3VwIFJlcGxpY2F0aW9uIGFwcGxpZXIgbW9kdWxlIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCEAR3JvdXAgY29tbXVuaWNhdGlvbiBTU0wgY29uZmlndXJhdGlvbjogZ3JvdXBfcmVwbGljYXRpb25fc3NsX21vZGU6ICIlcyI7IHNlcnZlcl9rZXlfZmlsZTogIiVzIjsgc2VydmVyX2NlcnRfZmlsZTogIiVzIjsgY2xpZW50X2tleV9maWxlOiAiJXMiOyBjbGllbnRfY2VydF9maWxlOiAiJXMiOyBjYV9maWxlOiAiJXMiOyBjYV9wYXRoOiAiJXMiOyBjaXBoZXI6ICIlcyI7IHRsc192ZXJzaW9uOiAiJXMiOyB0bHNfY2lwaGVyc3VpdGVzOiAiJXMiOyBjcmxfZmlsZTogIiVzIjsgY3JsX3BhdGg6ICIlcyI7IHNzbF9maXBzX21vZGU6ICIlcyIATXlTUUwgc2VydmVyIGRvZXMgbm90IGhhdmUgU1NMIHN1cHBvcnQgYW5kIGdyb3VwX3JlcGxpY2F0aW9uX3NzbF9tb2RlIGlzICIlcyIsIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIHdpbGwgYWJvcnQAR3JvdXAgY29tbXVuaWNhdGlvbiBTU0wgY29uZmlndXJhdGlvbjogZ3JvdXBfcmVwbGljYXRpb25fc3NsX21vZGU6ICIlcyIAVW5hYmxlIHRvIGluaXRpYWxpemUgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lAEJpbmxvZyBtdXN0IGJlIGVuYWJsZWQgZm9yIEdyb3VwIFJlcGxpY2F0aW9uAEd0aWQgbW9kZSBzaG91bGQgYmUgT04gZm9yIEdyb3VwIFJlcGxpY2F0aW9uAExPR19SRVBMSUNBX1VQREFURVMgc2hvdWxkIGJlIE9OIGZvciBHcm91cCBSZXBsaWNhdGlvbgBFeHRyYWN0aW9uIG9mIHRyYW5zYWN0aW9uIHdyaXRlIHNldHMgcmVxdWlyZXMgYW4gaGFzaCBhbGdvcml0aG0gY29uZmlndXJhdGlvbi4gUGxlYXNlLCBkb3VibGUgY2hlY2sgdGhhdCB0aGUgcGFyYW1ldGVyIHRyYW5zYWN0aW9uLXdyaXRlLXNldC1leHRyYWN0aW9uIGlzIHNldCB0byBhIHZhbGlkIGFsZ29yaXRobS4AQXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3J5IG11c3QgYmUgc2V0IHRvIFRBQkxFAENvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBtdXN0IGJlIHNldCB0byBUQUJMRS4ASW4gb3JkZXIgdG8gdXNlIHBhcmFsbGVsIGFwcGxpZXIgb24gR3JvdXAgUmVwbGljYXRpb24sIHBhcmFtZXRlciByZXBsaWNhLXBhcmFsbGVsLXR5cGUgbXVzdCBiZSBzZXQgdG8gJ0xPR0lDQUxfQ0xPQ0snLgBHcm91cCBSZXBsaWNhdGlvbiByZXF1aXJlcyByZXBsaWNhLXByZXNlcnZlLWNvbW1pdC1vcmRlciB0byBiZSBzZXQgdG8gT04gd2hlbiB1c2luZyBtb3JlIHRoYW4gMSBhcHBsaWVyIHRocmVhZHMuAEl0IGlzIG5vdCBhbGxvd2VkIHRvIHJ1biBzaW5nbGUgcHJpbWFyeSBtb2RlIHdpdGggJ2dyb3VwX3JlcGxpY2F0aW9uX2VuZm9yY2VfdXBkYXRlX2V2ZXJ5d2hlcmVfY2hlY2tzJyBlbmFibGVkLgBlcnJvcl9tZXNzYWdlOiAlcwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSBvcHRpb24gaXMgbWFuZGF0b3J5AFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycgaXMgbm90IGEgdmFsaWQgVVVJRCwgaXRzIGxlbmd0aCBpcyB0b28gYmlnAFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycgaXMgbm90IGEgdmFsaWQgVVVJRABncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3F1b3RhIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWF4X3F1b3RhAGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcmVjb3ZlcnlfcXVvdGEgY2Fubm90IGJlIGxhcmdlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9tYXhfcXVvdGEAZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21heF9xdW90YSBjYW5ub3QgYmUgc21hbGxlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcXVvdGEgb3IgZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9yZWNvdmVyeV9xdW90YQBUaGUgZ2l2ZW4gdmFsdWUgZm9yIHJlY292ZXJ5IHNzbCBvcHRpb24gJ2dyb3VwX3JlcGxpY2F0aW9uXyVzJyBpcyBpbnZhbGlkIGFzIGl0cyBsZW5ndGggaXMgYmV5b25kIHRoZSBsaW1pdABUaGVyZSBpcyBvbmUgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyBvcGVyYXRpb24gYWxyZWFkeSBvbmdvaW5nAGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgY2FuIG9ubHkgYmUgdXBkYXRlZCB3aGVuIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgYW5kIGEgbWFqb3JpdHkgb2YgdGhlIG1lbWJlcnMgYXJlIHVucmVhY2hhYmxlAEluaXRpYWxpemVkIGdyb3VwIGNvbW11bmljYXRpb24gd2l0aCBjb25maWd1cmF0aW9uOiBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9sb2NhbF9hZGRyZXNzOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9zZWVkczogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fYm9vdHN0cmFwX2dyb3VwOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9wb2xsX3NwaW5fbG9vcHM6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25fY29tcHJlc3Npb25fdGhyZXNob2xkOiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX2lwX2FsbG93bGlzdDogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9kZWJ1Z19vcHRpb25zOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9tZW1iZXJfZXhwZWxfdGltZW91dDogJyVsdSc7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fbWF4X21lc3NhZ2Vfc2l6ZTogJWx1OyBncm91cF9yZXBsaWNhdGlvbl9tZXNzYWdlX2NhY2hlX3NpemU6ICclbHV1OyBncm91cF9yZXBsaWNhdGlvbl9jb21tdW5pY2F0aW9uX3N0YWNrOiAnJWx1JwBVbmtub3duIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgcGlwZWxpbmUgcmVxdWVzdGVkAFVuYWJsZSB0byBib290c3RyYXAgZ3JvdXAgcmVwbGljYXRpb24gZXZlbnQgaGFuZGxpbmcgaW5mcmFzdHJ1Y3R1cmUuIFVua25vd24gaGFuZGxlciB0eXBlOiAlZABPbmUgb2YgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlcnMgaXMgbnVsbCBkdWUgdG8gYW4gaW5pdGlhbGl6YXRpb24gZXJyb3IAQSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXIsIG1hcmtlZCBhcyB1bmlxdWUsIGlzIGFscmVhZHkgaW4gdXNlLgBBIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlciByb2xlLCB0aGF0IHdhcyBtYXJrZWQgYXMgdW5pcXVlLCBpcyBhbHJlYWR5IGluIHVzZS4ARXJyb3Igb24gZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVyIGluaXRpYWxpemF0aW9uAEVycm9yIHdoZW4gaW5pdGlhbGl6aW5nIGEgc2Vzc2lvbiB0aHJlYWQgZm9yIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uLgBFcnJvciBydW5uaW5nIGludGVybmFsIFNRTCBxdWVyeTogJXMuIFRoZSBpbnRlcm5hbCBzZXJ2ZXIgY29tbXVuaWNhdGlvbiBzZXNzaW9uIGlzIG5vdCBpbml0aWFsaXplZABFcnJvciBydW5uaW5nIGludGVybmFsIFNRTCBxdWVyeTogJXMuIFRoZSBpbnRlcm5hbCBzZXJ2ZXIgc2Vzc2lvbiB3YXMga2lsbGVkIG9yIHNlcnZlciBpcyBzaHV0dGluZyBkb3duLgBFcnJvciBydW5uaW5nIGludGVybmFsIFNRTCBxdWVyeTogJXMuIEdvdCBpbnRlcm5hbCBTUUwgZXJyb3I6ICVzKCVkKQBFcnJvciBydW5uaW5nIGludGVybmFsIFNRTCBxdWVyeTogJXMuIEludGVybmFsIGZhaWx1cmUuAEVycm9yLCBtYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIGV4Y2VlZGVkIHdoZW4gd2FpdGluZyBmb3IgdGhlIGludGVybmFsIHNlcnZlciBzZXNzaW9uIHN0YXRlIHRvIGJlIG9wZXJhdGluZwBFcnJvciB3aGVuIHRyeWluZyB0byBmZXRjaCBzZWN1cml0eSBjb250ZXh0IHdoZW4gY29udGFjdGluZyB0aGUgc2VydmVyIGZvciBpbnRlcm5hbCBwbHVnaW4gcmVxdWVzdHMuAFRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIHRyeWluZyB0byBhY2Nlc3MgdGhlIHNlcnZlciB3aXRoIHVzZXI6ICVzLiBNYWtlIHN1cmUgdGhlIHVzZXIgaXMgcHJlc2VudCBpbiB0aGUgc2VydmVyIGFuZCB0aGF0IHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZSB3YXMgcnVuIGNvcnJlY3RseS4ARmFpbGVkIHRvIGVzdGFibGlzaCBhbiBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbiB0byBleGVjdXRlIHBsdWdpbiBvcGVyYXRpb25zIHNpbmNlIHRoZSBzZXJ2ZXIgZG9lcyBub3QgaGF2ZSBhdmFpbGFibGUgY29ubmVjdGlvbnMsIHBsZWFzZSBpbmNyZWFzZSBAQEdMT0JBTC5NQVhfQ09OTkVDVElPTlMuIFNlcnZlciBlcnJvcjogJWkuAEZhaWxlZCB0byBlc3RhYmxpc2ggYW4gaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24gdG8gZXhlY3V0ZSBwbHVnaW4gb3BlcmF0aW9ucy4gU2VydmVyIGVycm9yOiAlaS4gU2VydmVyIGVycm9yIG1lc3NhZ2U6ICVzAFRoaXMgbWVtYmVyIGNvdWxkIG5vdCByZWFjaCBhIG1ham9yaXR5IG9mIHRoZSBtZW1iZXJzIGZvciBtb3JlIHRoYW4gJWxkIHNlY29uZHMuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwIGFzIGluc3RydWN0ZWQgYnkgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3VucmVhY2hhYmxlX21ham9yaXR5X3RpbWVvdXQgb3B0aW9uLgBUaGUgc2VydmVyIHdhcyBhdXRvbWF0aWNhbGx5IHNldCBpbnRvIHJlYWQgb25seSBtb2RlIGFmdGVyIGFuIGVycm9yIHdhcyBkZXRlY3RlZC4AVW5hYmxlIHRvIGxvZyBub3RpZmljYXRpb24gdG8gdGFibGUgKGVycm5vOiAlbHUpIChyZXM6ICVkKSEgTWVzc2FnZTogJXMARmFpbHVyZSBpbiBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZSAnJXMnIGluaXRpYWxpemF0aW9uAFVuYWJsZSB0byBzZXQgdGhlIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lIGxvZ2dlcgBDdXJyZW50IGRlYnVnIG9wdGlvbnMgYXJlOiAnJXMnLgBTb21lIGRlYnVnIG9wdGlvbnMgaW4gJyVzJyBhcmUgbm90IHZhbGlkLgBFcnJvciBjYWxsaW5nIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcyB3aGlsZSB0cnlpbmcgdG8gbGVhdmUgdGhlIGdyb3VwAE1lbWJlciBpcyBub3QgT05MSU5FLCBpdCBpcyBub3QgcG9zc2libGUgdG8gZm9yY2UgYSBuZXcgZ3JvdXAgbWVtYmVyc2hpcABFcnJvciBjYWxsaW5nIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBFcnJvciBzZXR0aW5nIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdmFsdWUgJyVzJyBvbiBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdmFsdWUgJyVzJyB3YXMgc2V0IGluIHRoZSBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMAVGltZW91dCBvbiB3YWl0IGZvciB2aWV3IGFmdGVyIHNldHRpbmcgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB2YWx1ZSAnJXMnIGludG8gZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAEJyb2FkY2FzdCBvZiBjb21taXR0ZWQgdHJhbnNhY3Rpb25zIG1lc3NhZ2UgZmFpbGVkLiBNZXNzYWdlIGlzIHRvbyBiaWcuAEVycm9yIHdoaWxlIHNlbmRpbmcgc3RhdHMgbWVzc2FnZQBGbG93IGNvbnRyb2wgLSB1cGRhdGUgbWVtYmVyIHN0YXRzOiAlcyBzdGF0cyBjZXJ0aWZpZXJfcXVldWUgJWQsIGFwcGxpZXJfcXVldWUgJWQgY2VydGlmaWVkICVsZCAoJWxkKSwgYXBwbGllZCAlbGQgKCVsZCksIGxvY2FsICVsZCAoJWxkKSwgcXVvdGEgJWxkICglbGQpIG1vZGU9JWQARmxvdyBjb250cm9sOiB0aHJvdHRsaW5nIHRvICVsZCBjb21taXRzIHBlciAlbGQgc2VjLCB3aXRoICVkIHdyaXRpbmcgYW5kICVkIG5vbi1yZWNvdmVyaW5nIG1lbWJlcnMsIG1pbiBjYXBhY2l0eSAlbGxkLCBsaW0gdGhyb3R0bGUgJWxsZABVbmFibGUgdG8gY29udmVydCBhIHBhY2tldCBpbnRvIGFuIGV2ZW50IG9uIHRoZSBhcHBsaWVyLiBFcnJvcjogJXMARmFpbGVkIHRvIGNyZWF0ZSBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBjYWNoZS4ARmFpbGVkIHRvIHJlaW5pdCBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBjYWNoZSBmb3Igd3JpdGUuAFVuYWJsZSB0byBjb252ZXJ0IHRoZSBldmVudCBpbnRvIGEgcGFja2V0IG9uIHRoZSBhcHBsaWVyLiBFcnJvcjogJXMARmFpbGVkIHRvIGZsdXNoIGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlLgBGYWlsZWQgdG8gcmVpbml0IGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlIGZvciByZWFkLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gR290IGVycm9yOiAlZC4gUGxlYXNlIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIG1vcmUgZGV0YWlscy4AJXMAVGhlIHJlcGxpY2EgSU8gdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyBpcyB1bmJsb2NrZWQgYXMgdGhlIG1lbWJlciBpcyBkZWNsYXJlZCBPTkxJTkUgbm93LgBUaGUgcmVwbGljYSBJTyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoZSBtZW1iZXIgZmFpbGVkIHRvIGNvbWUgT05MSU5FLgBUaGUgcmVwbGljYSBhcHBsaWVyIHRocmVhZCBvZiBjaGFubmVsICclcycgaXMgdW5ibG9ja2VkIGFzIHRoZSBtZW1iZXIgaXMgZGVjbGFyZWQgT05MSU5FIG5vdy4AVGhlIHJlcGxpY2EgYXBwbGllciB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoZSBtZW1iZXIgZmFpbGVkIHRvIGNvbWUgT05MSU5FLgBMREFQIGF1dGhlbnRpY2F0aW9uIGluaXRpYWxpemU6IGZhaWxlZCB0byBjcmVhdGUvIGdldCBjb25uZWN0aW9uIGZyb20gdGhlIHBvb2wuIABMREFQIGF1dGhlbnRpY2F0aW9uIGRlX2luaXRpYWxpemUgRmFpbGVkAFNraXBwaW5nIGdyb3VwIHNlYXJjaCwgTm8gZ3JvdXAgYXR0cmlidXRlIG1lbnRpb25lZABQb29sIG1heCBzaXplIGlzIDAsIGNvbm5lY3Rpb24gcG9vbCBpcyBkaXNhYmxlZABDb25uZWN0aW9uIHBvb2wgaW5pdGlhbGl6YXRpb24sIGZhaWxlZCB0byBjcmVhdGUgTERBUCBvYmplY3QgY3JlYXRvcgBDb25uZWN0aW9uIHBvb2wgaW5pdGlhbGl6YXRpb24sIGZhaWxlZCB0byBjcmVhdGUgTERBUCBvYmplY3QATERBUCBUTFMgY29uZmlndXJhdGlvbgBMREFQIFRMUyBjb25uZWN0aW9uAExEQVAgcG9vbCBpcyBub3QgY3JlYXRlZC4ATERBUCBwb29sIGlzIGluaXRpYWxpemluZwBMREFQIHBvb2wgaXMgZGUtaW5pdGlhbGl6aW5nAFBvb2wgbWF4IHNpemUgb2xkIGFuZCBuZXcgdmFsdWVzIGFyZSAwAExEQVAgcG9vbCBpcyByZS1pbml0aWFsaXppbmcAUGx1Zy1pbiBoYXMgZmFpbGVkIHRvIHdyaXRlIHRoZSBwYWNrZXQuAFNldHRpbmcgTERBUCB1c2VyIG5hbWUgYXMgOiAlcwBVc2VyIGF1dGhlbnRpY2F0aW9uIGRhdGE6ICVzIHNpemU6ICVsdQBVc2VyIGlzIGF1dGhlbnRpY2F0ZWQgYXM6ICVzIGV4dGVybmFsIHVzZXI6ICVzAEdyb3VwIHNlYXJjaCBpbmZvcm1hdGlvbiBiYXNlIEROOiAlcyBzY29wZTogJWQgZmlsdGVyOiAlcyBhdHRyaWJ1dGU6ICVzAFNwZWNpYWwgaGFuZGxpbmcgZm9yIGdyb3VwIHNlYXJjaCwge0dBfSBmb3VuZABHcm91cCBzZWFyY2ggc3BlY2lhbCBoYW5kbGluZywgZ3JvdXAgZnVsbCBETiBmb3VuZC4gAFVzZXIgJXMgaXMgbm90IG1lbWJlciBvZiBhbnkgZ3JvdXAuAFVzZXIgJXMgaXMgbWVtYmVyIG9mIG1vcmUgdGhhbiBvbmUgZ3JvdXAARm9yIHVzZXIgJXMgaGFzIG11bHRpcGxlIHVzZXIgZ3JvdXAgbmFtZXMuIFBsZWFzZSBjaGVjayBpZiBncm91cCBhdHRyaWJ1dGUgbmFtZSBpcyBjb3JyZWN0AFNlYXJjaGVkIGdyb3VwIG5hbWU6ICVzAExEQVAgYXV0aGVudGljYXRpb24gb2JqZWN0IGNyZWF0aW9uIHRpbWVfc3RhbXA6ICVzIGRuOiAlcwBDZXJ0aWZpY2F0ZSBuYW1lOiAlcwBGYWlsZWQgdG8gcG9vbCBkZS1pbml0aWFsaXplZDogcG9vbCBpcyBhbHJlYWR5IHJlY29uc3RydWN0aW5nAFBvb2wgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiBwb29sIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQAUG9vbCBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IHBvb2wgaXMgaW5pdGlhbGl6aW5nAFBvb2wgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiBwb29sIGlzIGRlLWluaXRpYWxpemluZwBGYWlsZWQgdG8gcG9vbCBkZWluaXRpYWxpemVkOiBwb29sIGlzIGFscmVhZHkgcmVjb25zdHJ1Y3RpbmcARmFpbGVkIHRvIHBvb2wgZGVpbml0aWFsaXplZCA6IHBvb2wgaXMgbm90IHJlYWR5AExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQ6IEZhaWxlZCB0byByZXR1cm4gY29ubmVjdGlvbiBhcyBwbHVnLWluIGlzIG5vdCByZWFkeS9pbml0aWFsaXppbmcvZGUtaW5pdGlhbGl6aW5nAENvbm5lY3Rpb24gcG9vbCBoYXMgZmFpbGVkIHRvIGluaXRpYWxpemVkAExkYXBfY29ubmV0aW9uX3Bvb2w6OmdldCBMREFQIG1heGltdW0gY29ubmVjdGlvbiBhbGxvd2VkIHNpemUgaXMgcmVhY2hlZC4gSW5jcmVhc2UgdGhlIG1heGltdW0gbGltaXQuAFNldCBtYXggcG9vbCBzaXplIGZhaWxlZC4AUGx1Zy1pbiBoYXMgZmFpbGVkIHRvIHJlYWQgdGhlIHBhY2tldCBmcm9tIGNsaWVudABMZGFwX2F1dGhlbnRpY2F0aW9uOjppbml0aWFsaXplOiBjcmVhdGluZyBuZXcgTERBUCBjb25uZWN0aW9uLiAATGRhcF9hdXRoZW50aWNhdGlvbjo6aW5pdGlhbGl6ZTogZ2V0dGluZyBjb25uZWN0aW9uIGZyb20gcG9vbC4gAExkYXBfYXV0aGVudGljYXRpb246OmRlX2luaXRpYWxpemUgcHV0dGluZyBiYWNrIGNvbm5lY3Rpb24gaW4gdGhlIHBvb2wATGRhcF9hdXRoZW50aWNhdGlvbjo6c2VhcmNoX3VzZXJfZ3JvdXAgbm8gZ3JvdXAgYXR0cmlidXRlIGZvdW5kAExkYXBfY29ubmV0aW9uX3Bvb2w6OnB1dCBsZGFwIGluZm8gbnVsbABMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6cHV0IGNvbm5lY3Rpb24gaXMgZnJlZWluZy4gAExkYXBfY29ubmVjdGlvbl9wb29sOjpwdXQgY29ubmVjdGlvbiBpbiBwdXNoZWQgaW4gdGhlIHBvb2wATGRhcF9jb25uZWN0aW9uX2NyZWF0b3I6OkxkYXBfY29ubmVjdGlvbl9jcmVhdG9yAHN0YXJ0aW5nIFRMUwBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0OiAobGRhcF9pbmZvID09IE5VTEwpfHwgKCpsZGFwX2luZm8pAExkYXBfY29ubmVjdGlvbl9wb29sOjpkZWluaXQ6IGRlbGV0aW5nIGNvbm5lY3Rpb24ga2V5ICVzACBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0IHBvb2xlZCBjb25uZWN0aW9uIGtleTogJXMATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldCBjcmVhdGUgY29ubmVjdGlvbiBrZXk6ICVzAExEQVAgY29tbXVuaWNhdGlvbiBob3N0ICVzIHBvcnQgJXUAU2VuZGluZyBhdXRoZW50aWNhdGlvbiBtZXRob2QgdG8gY2xpZW50IDogJXMAU0FTTCByZXF1ZXN0IHJlY2VpdmVkIGZyb20gbXlzcWwgY2xpZW50OiAlcwBMZGFwX3Nhc2xfYXV0aGVudGljYXRpb246OnByb2Nlc3Nfc2FzbCByYzogJXMATGRhcF9zYXNsX2F1dGhlbnRpY2F0aW9uOjpwcm9jZXNzX3Nhc2wgc2FzbCBiaW5kIHN1Y2NlZWQuIGRuOiAlcyBtZXRob2Q6ICVzIHNlcnZlciBjcmVkZW50aWFsOiAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIHN0YXJ0ZWQgZm9yIHVzZXIgbmFtZTogJXMAJXMATERBUCBhdXRoZW50aWNhdGlvbiBpbml0aWFsaXplIGlzIGZhaWxlZCB3aXRoOiAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIGZhaWxlZCBvciBncm91cCByZXRyaWV2YWwgZmFpbGVkOiAlcwBTZWFyY2ggdXNlciBncm91cCBoYXMgZmFpbGVkOiAlcwBMREFQIHVzZXIgYmluZCBoYXMgZmFpbGVkOiAlcwBDb25uZWN0aW9uIHBvb2wgZ2V0OiBGYWlsZWQgdG8gY3JlYXRlIExEQVAgY29ubmVjdGlvbi4gJXMARmFpbGVkIHRvIGNyZWF0ZSBuZXcgTERBUCBjb25uZWN0aW9uOiAgJXMARmFpbGVkIHRvIGVzdGFibGlzaCBUTFMgY29ubmVjdGlvbjogICVzAEZhaWxlZCB0byBzZWFyY2ggdXNlciBmdWxsIGRuOiAlcwBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6cmVpbml0AFRoZSBwYXRoICclcycsIGZyb20gdGhlIE5PVElGWV9TT0NLRVQgZW52aXJvbm1lbnQgdmFyaWFibGUsIGlzIHRvbyBsb25nLiBBdCAldSBieXRlcyBpdCBleGNlZWRzIHRoZSBsaW1pdCBvZiAldSBieXRlcyBmb3IgYW4gQUZfVU5JWCBzb2NrZXQuAEZhaWxlZCB0byBjb25uZWN0IHRvIHN5c3RlbWQgbm90aWZpY2F0aW9uIHNvY2tldCBuYW1lZCAlcy4gRXJyb3I6ICclcycARmFpbGVkIHRvIHdyaXRlICclcycgdG8gc3lzdGVtZCBub3RpZmljYXRpb24uIEVycm9yOiAnJXMnAENhbm5vdCByZXBsaWNhdGUgdG8gc2VydmVyIHdpdGggc2VydmVyX3V1aWQ9JyUuMzZzJyBiZWNhdXNlIHRoZSBwcmVzZW50IHNlcnZlciBoYXMgcHVyZ2VkIHJlcXVpcmVkIGJpbmFyeSBsb2dzLiBUaGUgY29ubmVjdGluZyBzZXJ2ZXIgbmVlZHMgdG8gcmVwbGljYXRlIHRoZSBtaXNzaW5nIHRyYW5zYWN0aW9ucyBmcm9tIGVsc2V3aGVyZSwgb3IgYmUgcmVwbGFjZWQgYnkgYSBuZXcgc2VydmVyIGNyZWF0ZWQgZnJvbSBhIG1vcmUgcmVjZW50IGJhY2t1cC4gVG8gcHJldmVudCB0aGlzIGVycm9yIGluIHRoZSBmdXR1cmUsIGNvbnNpZGVyIGluY3JlYXNpbmcgdGhlIGJpbmFyeSBsb2cgZXhwaXJhdGlvbiBwZXJpb2Qgb24gdGhlIHByZXNlbnQgc2VydmVyLiAlcy4ASW5zZWN1cmUgY29uZmlndXJhdGlvbiBmb3IgLS1waWQtZmlsZTogTG9jYXRpb24gJyVzJyBpbiB0aGUgcGF0aCBpcyBhY2Nlc3NpYmxlIHRvIGFsbCBPUyB1c2Vycy4gQ29uc2lkZXIgY2hvb3NpbmcgYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgBDYW4ndCBzdGFydCBzZXJ2ZXI6IGNhbid0IGNoZWNrIFBJRCBmaWxlcGF0aDogJXMAdmFsaWRhdGVfcGFzc3dvcmQgc3RhdHVzIHZhcmlhYmxlcyByZWdpc3RyYXRpb24gZmFpbGVkLgB2YWxpZGF0ZV9wYXNzd29yZCBzdGF0dXMgdmFyaWFibGVzIHVucmVnaXN0cmF0aW9uIGZhaWxlZC4ARGljdGlvbmFyeSBmaWxlIG9wZW4gZmFpbGVkAGdpdmVuIHBhc3N3b3JkIHN0cmluZyBjb3VsZCBiZSBudWxsAGZhaWxlZCB0byBjb252ZXJ0IHRoZSBwYXNzd29yZCBzdHJpbmcgdG8gbG93ZXIgY2FzZQBmYWlsZWQgdG8gY29udmVydCB0aGUgcGFzc3dvcmQgc3RyaW5nIGludG8gYSBidWZmZXIAbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIGZvciBzdHJpbmcgaGFuZGxlcgBTaW5jZSB0aGUgdmFsaWRhdGVfcGFzc3dvcmRfcG9saWN5IGlzIG1lbnRpb25lZCBhcyBTdHJvbmcsIGRpY3Rpb25hcnkgZmlsZSBtdXN0IGJlIHNwZWNpZmllZABjb252ZXJ0X3RvX2J1ZmZlciBzZXJ2aWNlIGZhaWxlZAAlcyB2YXJpYWJsZSByZWdpc3RyYXRpb24gZmFpbGVkLgAlcyB2YXJpYWJsZSB1bnJlZ2lzdHJhdGlvbiBmYWlsZWQuAFBsZWFzZSBzcGVjaWZ5IG9wdGlvbnMgc3BlY2lmaWMgdG8ga2V5cmluZyBtaWdyYXRpb24uIEFueSBhZGRpdGlvbmFsIG9wdGlvbnMgY2FuIGJlIGlnbm9yZWQuIE5PVEU6IEFsdGhvdWdoIHNvbWUgb3B0aW9ucyBhcmUgdmFsaWQsIG1pZ3JhdGlvbiB0b29sIGNhbiBzdGlsbCByZXBvcnQgZXJyb3IgZXhhbXBsZTogcGx1Z2luIHZhcmlhYmxlcyBmb3Igd2hpY2ggcGx1Z2luIGlzIG5vdCBsb2FkZWQgeWV0LgBJbnZhbGlkIGRlZmF1bHQgY29sbGF0aW9uICVzOiB1dGY4bWI0XzA5MDBfYWlfY2kgb3IgdXRmOG1iNF9nZW5lcmFsX2NpIGV4cGVjdGVkACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEZhaWxlZCB0byBzZXQgTlVNQSBtZW1vcnkgcG9saWN5IG9mIGJ1ZmZlciBwb29sIHBhZ2UgZnJhbWVzIHdpdGggbWJpbmQoJXAsJXp1LCVzLC4uLiwuLi4sJXMpIGZhaWxlZCB3aXRoICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFBhZ2Ugc3RpbGwgZml4ZWQgb3IgZGlydHkgYXQgc2h1dGRvd24uICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFdhaXRlZCBmb3IgJXUgc2VjcyBmb3IgaGFzaCBpbmRleCByZWZfY291bnQgKCV6dSkgdG8gZHJvcCB0byAwLiBpbmRleDogIiVzIiB0YWJsZTogIiVzIgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUYWJsZSBmbGFncyBhcmUgMHglbHggaW4gdGhlIGRhdGEgZGljdGlvbmFyeSBidXQgdGhlIGZsYWdzIGluIGZpbGUgJXMgIGFyZSAweCVsbHghAENhbid0IHJlYWQgZW5jcnlwdGlvbiBrZXkgZnJvbSBmaWxlICVzIQBDYW5ub3QgY2xvc2UgZmlsZSAlcywgYmVjYXVzZSBuX3BlbmRpbmdfZmx1c2hlcyAlenUAQ2Fubm90IGNsb3NlIGZpbGUgJXMsIGJlY2F1c2UgbW9kaWZpY2F0aW9uIGNvdW50ICVsbGQgIT0gZmx1c2ggY291bnQgJWxsZABDYW5ub3QgY2xvc2UgZmlsZSAlcywgYmVjYXVzZSBpdCBpcyBpbiB1c2UAT3BlbiBmaWxlIGxpc3QgbGVuIGluIHNoYXJkICV6dSBpcyAlbGx1AFRhYmxlc3BhY2UgJXMsIHdhaXRpbmcgZm9yIElPIHRvIHN0b3AgZm9yICVsbGQgc2Vjb25kcwAlcwAlcwAlcwAlcwAlcwBZb3UgbXVzdCByYWlzZSB0aGUgdmFsdWUgb2YgaW5ub2RiX29wZW5fZmlsZXMgaW4gbXkuY25mISBSZW1lbWJlciB0aGF0IElubm9EQiBrZWVwcyBhbGwgcmVkbyBsb2cgZmlsZXMgYW5kIGFsbCBzeXN0ZW0gdGFibGVzcGFjZSBmaWxlcyBvcGVuIGZvciB0aGUgd2hvbGUgdGltZSBteXNxbGQgaXMgcnVubmluZywgYW5kIG5lZWRzIHRvIG9wZW4gYWxzbyBzb21lIC5pYmQgZmlsZXMgaWYgdGhlIGZpbGUtcGVyLXRhYmxlIHN0b3JhZ2UgbW9kZWwgaXMgdXNlZC4gQ3VycmVudCBvcGVuIGZpbGVzICV6dSwgbWF4IGFsbG93ZWQgb3BlbiBmaWxlcyAlenUuAE1heCB0YWJsZXNwYWNlIGlkIGlzIHRvbyBoaWdoLCAlbHUAVHJ5aW5nIHRvIGFjY2VzcyBtaXNzaW5nIHRhYmxlc3BhY2UgJWx1AFRyeWluZyB0byBjbG9zZS9kZWxldGUgdGFibGVzcGFjZSAnJXMnIGJ1dCB0aGVyZSBhcmUgJWx1IHBlbmRpbmcgb3BlcmF0aW9ucyBvbiBpdC4AVHJ5aW5nIHRvIGRlbGV0ZS9jbG9zZSB0YWJsZXNwYWNlICclcycgYnV0IHRoZXJlIGFyZSAlbHUgZmx1c2hlcyBhbmQgJXp1IHBlbmRpbmcgSS9PJ3Mgb24gaXQuACVzAENhbm5vdCBkZWxldGUgdGFibGVzcGFjZSAlbHUgYmVjYXVzZSBpdCBpcyBub3QgZm91bmQgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlLgBXaGlsZSBkZWxldGluZyB0YWJsZXNwYWNlICVsdSBpbiBESVNDQVJEIFRBQkxFU1BBQ0UuIEZpbGUgcmVuYW1lL2RlbGV0ZSBmYWlsZWQ6ICVzAENhbm5vdCBkZWxldGUgdGFibGVzcGFjZSAlbHUgaW4gRElTQ0FSRCBUQUJMRVNQQUNFOiAlcwBDYW5ub3QgcmVuYW1lICclcycgdG8gJyVzJyBmb3Igc3BhY2UgSUQgJWx1IGJlY2F1c2UgdGhlIHNvdXJjZSBmaWxlIGRvZXMgbm90IGV4aXN0LgBDYW5ub3QgcmVuYW1lICclcycgdG8gJyVzJyBmb3Igc3BhY2UgSUQgJWx1IGJlY2F1c2UgdGhlIHRhcmdldCBmaWxlIGV4aXN0cy4gUmVtb3ZlIHRoZSB0YXJnZXQgZmlsZSBhbmQgdHJ5IGFnYWluLgBDYW5ub3QgcmVuYW1lIGZpbGUgJyVzJyAoc3BhY2UgaWQgJWx1KSByZXRyaWVkICVsbHUgdGltZXMuIFRoZXJlIGFyZSBlaXRoZXIgcGVuZGluZyBJT3Mgb3IgZmx1c2hlcyBvciB0aGUgZmlsZSBpcyBiZWluZyBleHRlbmRlZC4AQ2Fubm90IGZpbmQgc3BhY2UgaWQgJWx1IGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZSwgdGhvdWdoIHRoZSBmaWxlICclcycgaW4gYSByZW5hbWUgb3BlcmF0aW9uIHNob3VsZCBoYXZlIHRoYXQgSUQuAFJlbmFtZSB3YWl0aW5nIGZvciBJTyB0byByZXN1bWUAQ2Fubm90IGZpbmQgdGFibGVzcGFjZSBmb3IgJyVzJyBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUAQ2Fubm90IGZpbmQgdGFibGVzcGFjZSBmb3IgJyVzJyBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUAVGFibGVzcGFjZSAnJXMnIGlzIGFscmVhZHkgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlAENhbm5vdCBjcmVhdGUgZmlsZSAnJXMnAFRoZSBmaWxlICclcycgYWxyZWFkeSBleGlzdHMgdGhvdWdoIHRoZSBjb3JyZXNwb25kaW5nIHRhYmxlIGRpZCBub3QgZXhpc3QuIEhhdmUgeW91IG1vdmVkIElubm9EQiAuaWJkIGZpbGVzIGFyb3VuZCB3aXRob3V0IHVzaW5nIHRoZSBTUUwgY29tbWFuZHMgRElTQ0FSRCBUQUJMRVNQQUNFIGFuZCBJTVBPUlQgVEFCTEVTUEFDRSwgb3IgZGlkIG15c3FsZCBjcmFzaCBpbiB0aGUgbWlkZGxlIG9mIENSRUFURSBUQUJMRT8gWW91IGNhbiByZXNvbHZlIHRoZSBwcm9ibGVtIGJ5IHJlbW92aW5nIHRoZSBmaWxlICclcycgdW5kZXIgdGhlICdkYXRhZGlyJyBvZiBNeVNRTC4AcG9zaXhfZmFsbG9jYXRlKCk6IEZhaWxlZCB0byBwcmVhbGxvY2F0ZSBkYXRhIGZvciBmaWxlICVzLCBkZXNpcmVkIHNpemUgJWxsdSBPcGVyYXRpbmcgc3lzdGVtIGVycm9yIG51bWJlciAlZCAtICVzLiBDaGVjayB0aGF0IHRoZSBkaXNrIGlzIG5vdCBmdWxsIG9yIGEgZGlzayBxdW90YSBleGNlZWRlZC4gTWFrZSBzdXJlIHRoZSBmaWxlIHN5c3RlbSBzdXBwb3J0cyB0aGlzIGZ1bmN0aW9uLiBSZWZlciB0byB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBmb3Igb3BlcmF0aW5nIHN5c3RlbSBlcnJvciBjb2RlIGluZm9ybWF0aW9uLgBDb3VsZCBub3Qgd3JpdGUgdGhlIGZpcnN0IHBhZ2UgdG8gdGFibGVzcGFjZSAnJXMnAEZpbGUgZmx1c2ggb2YgdGFibGVzcGFjZSAnJXMnIGZhaWxlZABDb3VsZCBub3QgZmluZCBhIHZhbGlkIHRhYmxlc3BhY2UgZmlsZSBmb3IgYCVzYC4gJXMASWdub3JpbmcgZGF0YSBmaWxlICclcycgd2l0aCBzcGFjZSBJRCAlbHUuIEFub3RoZXIgZGF0YSBmaWxlIGNhbGxlZCAnJXMnIGV4aXN0cyB3aXRoIHRoZSBzYW1lIHNwYWNlIElEACVzACVzACVzACVzAENhbid0IHNldCBlbmNyeXB0aW9uIGluZm9ybWF0aW9uIGZvciB0YWJsZXNwYWNlICVzIQAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBUaGUgZGF0YWZpbGUgJyVzJyBmb3IgdGFibGVzcGFjZSAlcyBpcyBpbiBhbiB1bnByb3RlY3RlZCBsb2NhdGlvbi4gVGhpcyBmaWxlIGNhbm5vdCBiZSByZWNvdmVyZWQgYWZ0ZXIgYSBjcmFzaCB1bnRpbCB0aGlzIGxvY2F0aW9uIGlzIGFkZGVkIHRvIGlubm9kYl9kaXJlY3Rvcmllcy4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAU2NhbiBwYXRoICclcycgaXMgaWdub3JlZCBiZWNhdXNlICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEEgZ2VuZXJhbCB0YWJsZXNwYWNlIGNhbm5vdCBiZSBsb2NhdGVkIHVuZGVyIHRoZSBkYXRhZGlyLiBDYW5ub3Qgb3BlbiBmaWxlICclcycuAEEgZmlsZS1wZXItdGFibGUgdGFibGVzcGFjZSBjYW5ub3QgYmUgbG9jYXRlZCBpbiB0aGUgZGF0YWRpci4gQ2Fubm90IG9wZW4gZmlsZSAnJXMnLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBDYW5ub3QgY3JlYXRlIGEgdGFibGVzcGFjZSBmb3IgdGFibGUgJXMgYmVjYXVzZSB0aGUgZGlyZWN0b3J5IGlzIG5vdCBhIHZhbGlkIGxvY2F0aW9uLiAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBCbG9ja2VkIEhpZ2ggUHJpb3JpdHkgVHJhbnNhY3Rpb24gKElEICVsbHUsIFRocmVhZCBJRCAlcykgZm9yY2VzIHJvbGxiYWNrIG9mIHRoZSBibG9ja2luZyB0cmFuc2FjdGlvbiAoSUQgJWxsdSAtICVzKS4AJXMAJXMAQmxvY2tlZCBIaWdoIFByaW9yaXR5IFRyYW5zYWN0aW9uIChUaHJlYWQgSUQgJXMpIHdha2luZyB1cCB0aGUgYmxvY2tpbmcgdHJhbnNhY3Rpb24gKElEICVsbHUpIGJ5IHByZXRlbmRpbmcgaXQncyBhIGRlYWRsb2NrIHZpY3RpbS4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVGhlIHRyYW5zYWN0aW9uIGxvZyBzaXplIGlzIHRvbyBsYXJnZSBmb3IgaW5ub2RiX2xvZ19idWZmZXJfc2l6ZSAoJWx1ID49ICVsdSAvIDIpLiBUcnlpbmcgdG8gZXh0ZW5kIGl0LgBpbm5vZGJfbG9nX2J1ZmZlcl9zaXplIHdhcyBleHRlbmRlZCB0byAlbHUgYnl0ZXMuAFRoZSB0cmFuc2FjdGlvbiBsb2cgZmlsZXMgYXJlIHRvbyBzbWFsbCBmb3IgdGhlIHNpbmdsZSB0cmFuc2FjdGlvbiBsb2cgKHNpemU9JWx1KS4gU28sIHRoZSBsYXN0IGNoZWNrcG9pbnQgYWdlIG1pZ2h0IGV4Y2VlZCB0aGUgbG9nIGdyb3VwIGNhcGFjaXR5ICVsbHUuAFRoZSBhZ2Ugb2YgdGhlIGxhc3QgY2hlY2twb2ludCBpcyAlbGx1LCB3aGljaCBleGNlZWRzIHRoZSBsb2cgZ3JvdXAgY2FwYWNpdHkgJWxsdS4AQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4gaWJfbG9nZmlsZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSAlbHUuIFRoZSBjb21iaW5lZCBzaXplIG9mIGliX2xvZ2ZpbGVzIHNob3VsZCBiZSBiaWdnZXIgdGhhbiAyMDAga0IgKiBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5LiBUbyBnZXQgbXlzcWxkIHRvIHN0YXJ0IHVwLCBzZXQgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSBpbiBteS5jbmYgdG8gYSBsb3dlciB2YWx1ZSwgZm9yIGV4YW1wbGUsIHRvIDguIEFmdGVyIGFuIEVSUk9SLUZSRUUgc2h1dGRvd24gb2YgbXlzcWxkIHlvdSBjYW4gYWRqdXN0IHRoZSBzaXplIG9mIGliX2xvZ2ZpbGVzLiAlcwBSZWRvIGxvZyB3YXMgZW5jcnlwdGVkLCBidXQga2V5cmluZyBwbHVnaW4gaXMgbm90IGxvYWRlZC4AUmVhZCByZWRvIGxvZyBlbmNyeXB0aW9uIG1ldGFkYXRhIHN1Y2Nlc3NmdWwuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIGVuY3J5cHRpb24gbWV0YWRhdGEuAENhbm5vdCByZWFkIHRoZSBlbmNyeXB0aW9uIGluZm9ybWF0aW9uIGluIGxvZyBmaWxlIGhlYWRlciwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgcGx1Z2luIGxvYWRlZCBhbmQgdGhlIGtleSBmaWxlIGV4aXN0cy4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkIGluIHJlYWQtb25seSBtb2RlLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZC4AUmVkbyBsb2cgZW5jcnlwdGlvbiBpcyBlbmFibGVkLgBGbHVzaCB3YWl0aW5nIGZvciBhcmNoaXZlciB0byBjYXRjaCB1cCBsYWcgTFNOOiAlbGx1AEZsdXNoIG92ZXJ3cml0aW5nIGRhdGEgdG8gYXJjaGl2ZSAtIHdhaXQgdG9vIGxvbmcgKDEgbWludXRlKSBsYWcgTFNOOiAlbGx1ACVzAFN0YXJ0aW5nIHNodXRkb3duLi4uAFdhaXRpbmcgZm9yICVzIHRvIGV4aXQAV2FpdGluZyBmb3IgJWx1IGFjdGl2ZSB0cmFuc2FjdGlvbnMgdG8gZmluaXNoAFdhaXRpbmcgZm9yIG1hc3RlciB0aHJlYWQgdG8gYmUgc3VzcGVuZGVkAFdhaXRpbmcgZm9yIHBhZ2VfY2xlYW5lciB0byBmaW5pc2ggZmx1c2hpbmcgb2YgYnVmZmVyIHBvb2wAUGVuZGluZyBjaGVja3BvaW50X3dyaXRlczogJWx1LiBQZW5kaW5nIGxvZyBmbHVzaCB3cml0ZXM6ICVsdS4AV2FpdGluZyBmb3IgJWx1IGJ1ZmZlciBwYWdlIEkvT3MgdG8gY29tcGxldGUATXlTUUwgaGFzIHJlcXVlc3RlZCBhIHZlcnkgZmFzdCBzaHV0ZG93biB3aXRob3V0IGZsdXNoaW5nIHRoZSBJbm5vREIgYnVmZmVyIHBvb2wgdG8gZGF0YSBmaWxlcy4gQXQgdGhlIG5leHQgbXlzcWxkIHN0YXJ0dXAgSW5ub0RCIHdpbGwgZG8gYSBjcmFzaCByZWNvdmVyeSEAQmFja2dyb3VuZCB0aHJlYWQgJXMgd29rZSB1cCBkdXJpbmcgc2h1dGRvd24AV2FpdGluZyBmb3IgYXJjaGl2ZXIgdG8gZmluaXNoIGFyY2hpdmluZyBwYWdlIGFuZCBsb2cAQmFja2dyb3VuZCB0aHJlYWQgJXMgd29rZSB1cCBkdXJpbmcgc2h1dGRvd24AV2FpdGluZyBmb3IgZGlydHkgYnVmZmVyIHBhZ2VzIHRvIGJlIGZsdXNoZWQATG9nIHNlcXVlbmNlIG51bWJlciBhdCBzaHV0ZG93biAlbGx1IGlzIGxvd2VyIHRoYW4gYXQgc3RhcnR1cCAlbGx1IQBXYWl0aW5nIGZvciBhcmNoaXZlciB0byBmaW5pc2ggYXJjaGl2aW5nIHBhZ2UgYW5kIGxvZwAjIyMjIyMjIyMjIyMjIyMgQ09SUlVQVCBMT0cgUkVDT1JEIEZPVU5EICMjIyMjIyMjIyMjIyMjIwBMb2cgcmVjb3JkIHR5cGUgJWQsIHBhZ2UgJWx1OiVsdS4gTG9nIHBhcnNpbmcgcHJvY2VlZGVkIHN1Y2Nlc3NmdWxseSB1cCB0byAlbGx1LiBQcmV2aW91cyBsb2cgcmVjb3JkIHR5cGUgJWQsIGlzIG11bHRpICVsbHUgUmVjdiBvZmZzZXQgJXpkLCBwcmV2ICVsbHUASGV4IGR1bXAgc3RhcnRpbmcgJWxsdSBieXRlcyBiZWZvcmUgYW5kIGVuZGluZyAlbGx1IGJ5dGVzIGFmdGVyIHRoZSBjb3JydXB0ZWQgcmVjb3JkOgBTZXQgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5IHRvIGlnbm9yZSB0aGlzIGVycm9yLgBUaGUgcmVkbyBsb2cgZmlsZSBtYXkgaGF2ZSBiZWVuIGNvcnJ1cHQgYW5kIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGxvZyBzY2FuIGRpZCBub3QgcHJvY2VlZCBmYXIgZW5vdWdoIGluIHJlY292ZXJ5ISBQbGVhc2UgcnVuIENIRUNLIFRBQkxFIG9uIHlvdXIgSW5ub0RCIHRhYmxlcyB0byBjaGVjayB0aGF0IHRoZXkgYXJlIG9rISBJZiBteXNxbGQgY3Jhc2hlcyBhZnRlciB0aGlzIHJlY292ZXJ5OyAlcwAlbGx1IHBhZ2VzIHdpdGggbG9nIHJlY29yZHMgd2VyZSBsZWZ0IHVucHJvY2Vzc2VkIQBVcGdyYWRlIGFmdGVyIGEgY3Jhc2ggaXMgbm90IHN1cHBvcnRlZC4gVGhpcyByZWRvIGxvZyB3YXMgY3JlYXRlZCB3aXRoICVzLCBhbmQgaXQgYXBwZWFycyBjb3JydXB0ZWQuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCAlcwBVcGdyYWRlIGlzIG5vdCBzdXBwb3J0ZWQgYWZ0ZXIgYSBjcmFzaCBvciBzaHV0ZG93biB3aXRoIGlubm9kYl9mYXN0X3NodXRkb3duID0gMi4gVGhpcyByZWRvIGxvZyB3YXMgY3JlYXRlZCB3aXRoICVzLCBhbmQgaXQgYXBwZWFycyBsb2dpY2FsbHkgbm9uIGVtcHR5LiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgYXQgJXMAJXMAJXMAUmVkbyBsb2cgZm9ybWF0IGlzIHYlbHUuIFRoZSByZWRvIGxvZyB3YXMgY3JlYXRlZCBiZWZvcmUgTXlTUUwgOC4wLjMwLgBVbmtub3duIHJlZG8gbG9nIGZvcm1hdCAodiVsdSkgaW4gZmlsZSAlcy4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGF0ICVzAE5vIHZhbGlkIGNoZWNrcG9pbnQgZm91bmQgKGNvcnJ1cHRlZCByZWRvIGxvZykuIFlvdSBjYW4gdHJ5IC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTYgYXMgYSBsYXN0IHJlc29ydC4AQXBwbHlpbmcgYSBiYXRjaCBvZiAlbGx1IHJlZG8gbG9nIHJlY29yZHMgLi4uACVzACVzAEFwcGx5IGJhdGNoIGNvbXBsZXRlZCEAJXMAJXMAJXMAJXMAJXMAJXMAQW4gb3B0aW1pemVkKHdpdGhvdXQgcmVkbyBsb2dnaW5nKSBEREwgb3BlcmF0aW9uIGhhcyBiZWVuIHBlcmZvcm1lZC4gQWxsIG1vZGlmaWVkIHBhZ2VzIG1heSBub3QgaGF2ZSBiZWVuIGZsdXNoZWQgdG8gdGhlIGRpc2sgeWV0LgpUaGlzIG9mZmxpbmUgYmFja3VwIG1heSBub3QgYmUgY29uc2lzdGVudABFeHRlbmRpbmcgdGFibGVzcGFjZSA6ICVsdSBzcGFjZSBuYW1lOiAlcyB0byBuZXcgc2l6ZTogJWx1IHBhZ2VzIGR1cmluZyByZWNvdmVyeS4AQ291bGQgbm90IGV4dGVuZCB0YWJsZXNwYWNlOiAlbHUgc3BhY2UgbmFtZTogJXMgdG8gbmV3IHNpemU6ICVsdSBwYWdlcyBkdXJpbmcgcmVjb3ZlcnkuAExvZyBibG9jayAlbHUgYXQgbHNuICVsbHUgaGFzIHZhbGlkIGhlYWRlciwgYnV0IGNoZWNrc3VtIGZpZWxkIGNvbnRhaW5zICVsdSwgc2hvdWxkIGJlICVsdS4AUmVjb3Zlcnkgc2tpcHBlZCwgLS1pbm5vZGItcmVhZC1vbmx5IHNldCEATG9nIHNjYW4gcHJvZ3Jlc3NlZCBwYXN0IHRoZSBjaGVja3BvaW50IExTTiAlbGx1LgBMb2cgcGFyc2luZyBidWZmZXIgb3ZlcmZsb3cuIFJlY292ZXJ5IG1heSBoYXZlIGZhaWxlZCEgUGxlYXNlIHNldCBsb2dfYnVmZmVyX3NpemUgdG8gYSB2YWx1ZSBoaWdoZXIgdGhhbiAlbHUuAFNldCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgdG8gaWdub3JlIHRoaXMgZXJyb3IuAERvaW5nIHJlY292ZXJ5OiBzY2FubmVkIHVwIHRvIGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdQBEYXRhYmFzZSB3YXMgbm90IHNodXRkb3duIG5vcm1hbGx5IQBTdGFydGluZyBjcmFzaCByZWNvdmVyeS4AVGhlIHVzZXIgaGFzIHNldCBTUlZfRk9SQ0VfTk9fTE9HX1JFRE8gb24sIHNraXBwaW5nIGxvZyByZWRvAENhbm5vdCByZXN0b3JlIGZyb20gbXlzcWxiYWNrdXAsIElubm9EQiBydW5uaW5nIGluIHJlYWQtb25seSBtb2RlIQBUaGUgcmVkbyBsb2cgZmlsZSB3YXMgY3JlYXRlZCBieSBteXNxbGJhY2t1cCAtLWFwcGx5LWxvZyBhdCAlcy4gVGhlIGZvbGxvd2luZyBjcmFzaCByZWNvdmVyeSBpcyBwYXJ0IG9mIGEgbm9ybWFsIHJlc3RvcmUuAE9wZW5pbmcgY2xvbmVkIGRhdGFiYXNlAFJlZG8gbG9nIGlzIGZyb20gYW4gZWFybGllciB2ZXJzaW9uLCB2JWx1LgBSZWRvIGxvZyBmb3JtYXQgdiVsdSBub3Qgc3VwcG9ydGVkLiBDdXJyZW50IHN1cHBvcnRlZCBmb3JtYXQgaXMgdiVsdS4AQXJlIHlvdSBzdXJlIHlvdSBhcmUgdXNpbmcgdGhlIHJpZ2h0IHJlZG8gbG9nIGZpbGVzIHRvIHN0YXJ0IHVwIHRoZSBkYXRhYmFzZT8gTG9nIHNlcXVlbmNlIG51bWJlciBpbiB0aGUgcmVkbyBsb2cgZmlsZXMgaXMgJWxsdSwgbGVzcyB0aGFuIHRoZSBsb2cgc2VxdWVuY2UgbnVtYmVyIGluIHRoZSBmaXJzdCBzeXN0ZW0gdGFibGVzcGFjZSBmaWxlIGhlYWRlciwgJWxsdS4AVGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdSBpbiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgZG9lcyBub3QgbWF0Y2ggdGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdSBpbiB0aGUgcmVkbyBsb2cgZmlsZXMhAENhbid0IGluaXRpYXRlIGRhdGFiYXNlIHJlY292ZXJ5LCBydW5uaW5nIGluIHJlYWQtb25seS1tb2RlLgBXZSBzY2FubmVkIHRoZSBsb2cgdXAgdG8gJWxsdS4gQSBjaGVja3BvaW50IHdhcyBhdCAlbGx1IGFuZCB0aGUgbWF4aW11bSBMU04gb24gYSBkYXRhYmFzZSBwYWdlIHdhcyAlbGx1LiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBkYXRhYmFzZSBpcyBub3cgY29ycnVwdCEAV2FpdGluZyBmb3IgcmVjdl93cml0ZXIgdG8gZmluaXNoIGZsdXNoaW5nIG9mIGJ1ZmZlciBwb29sAFJlY292ZXJ5IHBhcnNpbmcgYnVmZmVyIGV4dGVuZGVkIHRvICV6dS4AT3V0IG9mIG1lbW9yeSB3aGlsZSByZXNpemluZyByZWNvdmVyeSBwYXJzaW5nIGJ1ZmZlci4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQ2FuJ3QgZW5jcnlwdCBkYXRhIG9mIHJlZG8gbG9nACVzACVzAERlY3J5cHRpb24gb2YgcmVkbyBsb2cgYmxvY2sgYXQgb2Zmc2V0ICVsbHUgaW4gZmlsZSAlcyBmYWlsZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGtleXJpbmcgY29uZmlndXJlZAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBPbGQgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1IHdhcyBncmVhdGVyIHRoYW4gdGhlIG5ldyBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUuIFBsZWFzZSBzdWJtaXQgYSBidWcgcmVwb3J0IHRvIGh0dHA6Ly9idWdzLm15c3FsLmNvbQBTZW1hcGhvcmUgd2FpdCBoYXMgbGFzdGVkID4gJWxsdSBzZWNvbmRzLiBXZSBpbnRlbnRpb25hbGx5IGNyYXNoIHRoZSBzZXJ2ZXIgYmVjYXVzZSBpdCBhcHBlYXJzIHRvIGJlIGh1bmcuAFdhaXRpbmcgZm9yICVsbHUgdGFibGUocykgdG8gYmUgZHJvcHBlZABXYWl0aW5nIGZvciBjaGFuZ2UgYnVmZmVyIG1lcmdlIHRvIGNvbXBsZXRlIG51bWJlciBvZiBieXRlcyBvZiBjaGFuZ2UgYnVmZmVyIGp1c3QgbWVyZ2VkOiAlbGx1AENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UocykgdG8gYmUgZW5jcnlwdGVkIHNpbmNlIC0taW5ub2RiX3VuZG9fdGFibGVzcGFjZXM9MC4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZShzKSB0byBiZSBlbmNyeXB0ZWQgaW4gcmVhZC1vbmx5LW1vZGUuAENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UgJyVzJyB0byBiZSBlbmNyeXB0ZWQuAENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UgJyVzJyB0byBiZSBlbmNyeXB0ZWQuIEZhaWxlZCB0byB3cml0ZSBoZWFkZXIgcGFnZS4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZSAnJXMnIHRvIGJlIGVuY3J5cHRlZC4gRXJyb3IgJWQgLSAlcwBFbmNyeXB0aW9uIGlzIGVuYWJsZWQgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBDYW4ndCByb3RhdGUgZW5jcnlwdGlvbiBvbiB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ARW5jcnlwdGlvbiBpcyBlbmFibGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4Ab3NfZmlsZV9nZXRfc3RhdHVzKCkgZmFpbGVkIG9uICclcycuIENhbid0IGRldGVybWluZSBmaWxlIHBlcm1pc3Npb25zLgAlcyBjYW4ndCBiZSBvcGVuZWQgaW4gJXMgbW9kZS4AJyVzJyBub3QgYSByZWd1bGFyIGZpbGUuAENhbm5vdCBjcmVhdGUgJXMAU2V0dGluZyBmaWxlICVzIHNpemUgdG8gJWxsdSBNQi4gUHJvZ3Jlc3MgOiAldSUlAENhbm5vdCByZXNpemUgcmVkbyBsb2cgZmlsZSAlcyB0byAlbGx1IE1CICglcykAQ2Fubm90IGNyZWF0ZSByZWRvIGxvZyBmaWxlcyBpbiByZWFkLW9ubHkgbW9kZSAoLS1pbm5vZGItcmVhZC1vbmx5KS4AUmVkbyBsb2cgZW5jcnlwdGlvbiBpcyBlbmFibGVkLCBidXQgdGhlIGtleXJpbmcgaXMgbm90IGxvYWRlZC4ARmFpbGVkIHRvIGNyZWF0ZSByZWRvIGxvZyBmaWxlICVzIChlcnJvcjogJWQpIGZvciBzdGFydCBMU04gJWxsdQBSZW5hbWluZyBsb2cgZmlsZSAlcyB0byAlcwBOZXcgcmVkbyBsb2cgZmlsZXMgY3JlYXRlZCwgTFNOPSVsbHUAVW5hYmxlIHRvIG9wZW4gJyVzJyAoZXJyb3I6ICVkKS4AQ2Fubm90IGNyZWF0ZSBjb25zdHJ1Y3Rpb24gbG9nIGZpbGUgJyVzJyBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuAENyZWF0aW5nIFVORE8gVGFibGVzcGFjZSAlcwBTZXR0aW5nIGZpbGUgJXMgc2l6ZSB0byAlbGx1IE1CAFBoeXNpY2FsbHkgd3JpdGluZyB0aGUgZmlsZSBmdWxsAEVycm9yIGluIGNyZWF0aW5nICVzOiBwcm9iYWJseSBvdXQgb2YgZGlzayBzcGFjZQBDYW4ndCBzZXQgZW5jcnlwdGlvbiBtZXRhZGF0YSBmb3Igc3BhY2UgJXMAQ2Fubm90IHJlYWQgZmlyc3QgcGFnZSBvZiAnJXMnIC0gJXMAVW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUgd2FzIGJlaW5nIHRydW5jYXRlZCB3aGVuIG15c3FsZCBxdWl0LgBDYW5ub3QgcmVjb3ZlciBhIHRydW5jYXRlZCB1bmRvIHRhYmxlc3BhY2UgaW4gcmVhZC1vbmx5IG1vZGUAUmVjb25zdHJ1Y3RpbmcgdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuAENhbm5vdCBjcmVhdGUgJXMgYmVjYXVzZSAlcyBhbHJlYWR5IHVzZXMgU3BhY2UgSUQ9JWx1ISBEaWQgeW91IGNoYW5nZSBpbm5vZGJfdW5kb19kaXJlY3Rvcnk/AFVORE8gdGFibGVzcGFjZSAlcyBtdXN0IGJlICVzAEVycm9yIGNyZWF0aW5nIGZpbGUgZm9yICVzAEVycm9yIHJlYWRpbmcgZW5jcnlwdGlvbiBmb3IgJXMAVW5hYmxlIHRvIG9wZW4gdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUAT3BlbmVkICVsbHUgZXhpc3RpbmcgdW5kbyB0YWJsZXNwYWNlcy4AQ2Fubm90IGNyZWF0ZSB1bmRvIHRhYmxlc3BhY2VzIHNpbmNlIGlubm9kYl8lcyBoYXMgYmVlbiBzZXQuIFVzaW5nICVsbHUgZXhpc3RpbmcgdW5kbyB0YWJsZXNwYWNlcy4AQ2Fubm90IGNvbnRpbnVlIElubm9EQiBzdGFydHVwIGluICVzIG1vZGUgYmVjYXVzZSB0aGVyZSBhcmUgbm8gZXhpc3RpbmcgdW5kbyB0YWJsZXNwYWNlcyBmb3VuZC4AQ291bGQgbm90IGNyZWF0ZSB1bmRvIHRhYmxlc3BhY2UgJyVzJy4ARXJyb3IgJWQgLSAlcyAtIG9wZW5pbmcgbmV3bHkgY3JlYXRlZCB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AQ3JlYXRlZCAlbGx1IHVuZG8gdGFibGVzcGFjZXMuAFVuYWJsZSB0byBjcmVhdGUgZW5jcnlwdGVkIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LiBwbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmcgaXMgaW5pdGlhbGl6ZWQgY29ycmVjdGx5AEVuY3J5cHRpb24gaXMgZW5hYmxlZCBmb3IgdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuAFVuYWJsZSB0byBpbml0aWFsaXplIHRoZSBoZWFkZXIgcGFnZSBpbiB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4AQ2Fubm90IGRlbGV0ZSBvbGQgdW5kbyB0YWJsZXNwYWNlcyBiZWNhdXNlIHRoZXkgY29udGFpbiB1bmRvIGxvZ3MgZm9yIFhBIFBSRVBBUkVEIHRyYW5zYWN0aW9ucy4AVXBncmFkaW5nICV6dSBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzIHRoYXQgd2VyZSB0cmFja2VkIGluIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSB0byAlbHUgbmV3IGluZGVwZW5kZW50IHVuZG8gdGFibGVzcGFjZXMuAERlbGV0aW5nICVsbHUgbmV3IGluZGVwZW5kZW50IHVuZG8gdGFibGVzcGFjZXMgdGhhdCB3ZSBqdXN0IGNyZWF0ZWQuAFdhaXRpbmcgZm9yIHB1cmdlIHRvIHN0YXJ0AENyZWF0aW5nIHNoYXJlZCB0YWJsZXNwYWNlIGZvciB0ZW1wb3JhcnkgdGFibGVzAFRoZSAlcyBkYXRhIGZpbGUgbXVzdCBiZSB3cml0YWJsZSEAQ291bGQgbm90IGNyZWF0ZSB0aGUgc2hhcmVkICVzLgBVbmFibGUgdG8gY3JlYXRlIHRoZSBzaGFyZWQgJXMuAFRoZSAlcyBkYXRhIGZpbGUgY2Fubm90IGJlIHJlLW9wZW5lZCBhZnRlciBjaGVja19maWxlX3NwZWMoKSBzdWNjZWVkZWQhACVkIHRocmVhZHMgY3JlYXRlZCBieSBJbm5vREIgaGFkIG5vdCBleGl0ZWQgYXQgc2h1dGRvd24hAElubm9EQiBEYXRhYmFzZSBjcmVhdGlvbiB3YXMgYWJvcnRlZCAlc3dpdGggZXJyb3IgJXMuIFlvdSBtYXkgbmVlZCB0byBkZWxldGUgdGhlIGliZGF0YTEgZmlsZSBiZWZvcmUgdHJ5aW5nIHRvIHN0YXJ0IHVwIGFnYWluLgBQbHVnaW4gaW5pdGlhbGl6YXRpb24gYWJvcnRlZCAlc3dpdGggZXJyb3IgJXMuAFdhaXRpbmcgZm9yICV6dSBidWZmZXIgcGFnZSBJL09zIHRvIGNvbXBsZXRlLgBQVU5DSCBIT0xFIHN1cHBvcnQgYXZhaWxhYmxlAFBVTkNIIEhPTEUgc3VwcG9ydCBub3QgYXZhaWxhYmxlAFNpemUgb2YgSW5ub0RCJ3MgdWxpbnQgaXMgJXp1IGJ1dCBzaXplIG9mIHZvaWQqIGlzICV6dS4gVGhlIHNpemVzIHNob3VsZCBiZSB0aGUgc2FtZSBzbyB0aGF0IG9uIGEgNjQtYml0IHBsYXRmb3JtcyB5b3UgY2FuIGFsbG9jYXRlIG1vcmUgdGhhbiA0IEdCIG9mIG1lbW9yeS4ARGF0YWJhc2UgdXBncmFkZSBjYW5ub3QgYmUgYWNjb21wbGlzaGVkIGluIHJlYWQtb25seSBtb2RlLgBEYXRhYmFzZSB1cGdyYWRlIGNhbm5vdCBiZSBhY2NvbXBsaXNoZWQgd2l0aCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgPiAwACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAE15U1FMIHdhcyBidWlsdCB3aXRob3V0IGEgbWVtb3J5IGJhcnJpZXIgY2FwYWJpbGl0eSBvbiB0aGlzIGFyY2hpdGVjdHVyZSwgd2hpY2ggbWlnaHQgYWxsb3cgYSBtdXRleC9yd19sb2NrIHZpb2xhdGlvbiB1bmRlciBoaWdoIHRocmVhZCBjb25jdXJyZW5jeS4gVGhpcyBtYXkgY2F1c2UgYSBoYW5nLgBDb21wcmVzc2VkIHRhYmxlcyB1c2UgemxpYiAlcwAlcwBTdGFydHVwIGNhbGxlZCBzZWNvbmQgdGltZSBkdXJpbmcgdGhlIHByb2Nlc3MgbGlmZXRpbWUuIEluIHRoZSBNeVNRTCBFbWJlZGRlZCBTZXJ2ZXIgTGlicmFyeSB5b3UgY2Fubm90IGNhbGwgc2VydmVyX2luaXQoKSBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIHByb2Nlc3MgbGlmZXRpbWUuACVzAFVuYWJsZSB0byBjcmVhdGUgbW9uaXRvciBmaWxlICVzOiAlcwBEaXNhYmxpbmcgYmFja2dyb3VuZCBpYnVmIElPIHJlYWQgdGhyZWFkcy4AQ2Fubm90IGluaXRpYWxpemUgQUlPIHN1Yi1zeXN0ZW0ASW5pdGlhbGl6aW5nIGJ1ZmZlciBwb29sLCB0b3RhbCBzaXplID0gJWxmJWMsIGluc3RhbmNlcyA9ICVsdSwgY2h1bmsgc2l6ZSA9JWxmJWMgAENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBidWZmZXIgcG9vbABDb21wbGV0ZWQgaW5pdGlhbGl6YXRpb24gb2YgYnVmZmVyIHBvb2wAU21hbGwgYnVmZmVyIHBvb2wgc2l6ZSAoJWxsdU0pLCB0aGUgZmxzdF92YWxpZGF0ZSgpIGRlYnVnIGZ1bmN0aW9uIGNhbiBjYXVzZSBhIGRlYWRsb2NrIGlmIHRoZSBidWZmZXIgcG9vbCBmaWxscyB1cC4AQ291bGQgbm90IG9wZW4gb3IgY3JlYXRlIHRoZSBzeXN0ZW0gdGFibGVzcGFjZS4gSWYgeW91IHRyaWVkIHRvIGFkZCBuZXcgZGF0YSBmaWxlcyB0byB0aGUgc3lzdGVtIHRhYmxlc3BhY2UsIGFuZCBpdCBmYWlsZWQgaGVyZSwgeW91IHNob3VsZCBub3cgZWRpdCBpbm5vZGJfZGF0YV9maWxlX3BhdGggaW4gbXkuY25mIGJhY2sgdG8gd2hhdCBpdCB3YXMsIGFuZCByZW1vdmUgdGhlIG5ldyBpYmRhdGEgZmlsZXMgSW5ub0RCIGNyZWF0ZWQgaW4gdGhpcyBmYWlsZWQgYXR0ZW1wdC4gSW5ub0RCIG9ubHkgd3JvdGUgdGhvc2UgZmlsZXMgZnVsbCBvZiB6ZXJvcywgYnV0IGRpZCBub3QgeWV0IHVzZSB0aGVtIGluIGFueSB3YXkuIEJ1dCBiZSBjYXJlZnVsOiBkbyBub3QgcmVtb3ZlIG9sZCBkYXRhIGZpbGVzIHdoaWNoIGNvbnRhaW4geW91ciBwcmVjaW91cyBkYXRhIQBDYW5ub3QgY3JlYXRlIHJlZG8gbG9nIGZpbGVzIGJlY2F1c2UgZGF0YSBmaWxlcyBhcmUgY29ycnVwdCBvciB0aGUgZGF0YWJhc2Ugd2FzIG5vdCBzaHV0IGRvd24gY2xlYW5seSBhZnRlciBjcmVhdGluZyB0aGUgZGF0YSBmaWxlcy4AT25seSBvbmUgcmVkbyBsb2cgZmlsZSBmb3VuZABUaGUgcmVkbyBsb2cgZmlsZSAlcyBzaXplICVsbHUgaXMgbm90IGEgbXVsdGlwbGUgb2YgaW5ub2RiX3BhZ2Vfc2l6ZQBUaGUgcmVkbyBsb2cgZmlsZSAlcyBpcyBvZiBkaWZmZXJlbnQgc2l6ZSAlbGx1IGJ5dGVzIHRoYW4gb3RoZXIgbG9nIGZpbGVzICVsbHUgYnl0ZXMhAFVzZSAtLWlubm9kYi1kaXJlY3RvcmllcyB0byBmaW5kIHRoZSB0YWJsZXNwYWNlIGZpbGVzLiBJZiB0aGF0IGZhaWxzIHRoZW4gdXNlIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTEgdG8gaWdub3JlIHRoaXMgYW5kIHRvIHBlcm1hbmVudGx5IGxvc2UgYWxsIGNoYW5nZXMgdG8gdGhlIG1pc3NpbmcgdGFibGVzcGFjZShzKQBUaGUgcmVkbyBsb2cgZmlsZSBtYXkgaGF2ZSBiZWVuIGNvcnJ1cHQgYW5kIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGxvZyBzY2FuIG9yIHBhcnNpbmcgZGlkIG5vdCBwcm9jZWVkIGZhciBlbm91Z2ggaW4gcmVjb3ZlcnkuIFBsZWFzZSBydW4gQ0hFQ0sgVEFCTEUgb24geW91ciBJbm5vREIgdGFibGVzIHRvIGNoZWNrIHRoYXQgdGhleSBhcmUgb2shIEl0IG1heSBiZSBzYWZlc3QgdG8gcmVjb3ZlciB5b3VyIElubm9EQiBkYXRhYmFzZSBmcm9tIGEgYmFja3VwIQBDYW5ub3QgcmVzaXplIHJlZG8gbG9nIGZpbGVzIGluIHJlYWQtb25seSBtb2RlLiBQcm92aWRlIC0taW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5ID49ICVsbHVNQiBvciBzdGFydCB3aXRob3V0IC0taW5ub2RiLXJlYWQtb25seS4AQ2Fubm90IG9wZW4gREQgdGFibGVzcGFjZS4AU3RhcnRpbmcgdG8gZGVsZXRlIGFuZCByZXdyaXRlIHJlZG8gbG9nIGZpbGVzLgBVbmRvIGZyb20gNS43IGZvdW5kLiBJdCB3aWxsIGJlIHB1cmdlZAAlcwAlcwBUYWJsZXNwYWNlIHNpemUgc3RvcmVkIGluIGhlYWRlciBpcyAlbHUgcGFnZXMsIGJ1dCB0aGUgc3VtIG9mIGRhdGEgZmlsZSBzaXplcyBpcyAlbHUgcGFnZXMAQ2Fubm90IHN0YXJ0IElubm9EQi4gVGhlIHRhaWwgb2YgdGhlIHN5c3RlbSB0YWJsZXNwYWNlIGlzIG1pc3NpbmcuIEhhdmUgeW91IGVkaXRlZCBpbm5vZGJfZGF0YV9maWxlX3BhdGggaW4gbXkuY25mIGluIGFuIGluYXBwcm9wcmlhdGUgd2F5LCByZW1vdmluZyBpYmRhdGEgZmlsZXMgZnJvbSB0aGVyZT8gWW91IGNhbiBzZXQgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTEgaW4gbXkuY25mIHRvIGZvcmNlIGEgc3RhcnR1cCBpZiB5b3UgYXJlIHRyeWluZyB0byByZWNvdmVyIGEgYmFkbHkgY29ycnVwdCBkYXRhYmFzZS4AVGFibGVzcGFjZSBzaXplIHN0b3JlZCBpbiBoZWFkZXIgaXMgJWx1IHBhZ2VzLCBidXQgdGhlIHN1bSBvZiBkYXRhIGZpbGUgc2l6ZXMgaXMgb25seSAlbHUgcGFnZXMAQ2Fubm90IHN0YXJ0IElubm9EQi4gVGhlIHRhaWwgb2YgdGhlIHN5c3RlbSB0YWJsZXNwYWNlIGlzIG1pc3NpbmcuIEhhdmUgeW91IGVkaXRlZCBpbm5vZGJfZGF0YV9maWxlX3BhdGggaW4gbXkuY25mIGluIGFuIElubm9EQjogaW5hcHByb3ByaWF0ZSB3YXksIHJlbW92aW5nIGliZGF0YSBmaWxlcyBmcm9tIHRoZXJlPyBZb3UgY2FuIHNldCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9MSBpbiBteS5jbmYgdG8gZm9yY2UgSW5ub0RCOiBhIHN0YXJ0dXAgaWYgeW91IGFyZSB0cnlpbmcgdG8gcmVjb3ZlciBhIGJhZGx5IGNvcnJ1cHQgZGF0YWJhc2UuACVzIHN0YXJ0ZWQ7IGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdQBXYWl0aW5nIGZvciBwdXJnZSB0byBjb21wbGV0ZQBXYWl0aW5nIGZvciBkaWN0X3N0YXRzX3RocmVhZCB0byBleGl0AFF1ZXJ5IGNvdW50ZXIgc2hvd3MgJWxsZCBxdWVyaWVzIHN0aWxsIGluc2lkZSBJbm5vREIgYXQgc2h1dGRvd24AU2h1dGRvd24gY29tcGxldGVkOyBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUAQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVW5hYmxlIHRvIHJlYWQgdGhlIGV4aXN0aW5nIHVuZG8gdHJ1bmNhdGUgbG9nIGZpbGUgJyVzJy4gVGhlIGVycm9yIGlzICVzAFVuZG8gdGFibGVzcGFjZSAlcyBpcyBtYXJrZWQgZm9yIHRydW5jYXRlACVzAFRydW5jYXRpbmcgVU5ETyB0YWJsZXNwYWNlICVzACVzAENhbm5vdCBjcmVhdGUgdHJ1bmNhdGUgbG9nIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AJXMARmFpbGVkIHRvIHRydW5jYXRlIHVuZG8gdGFibGVzcGFjZSAnJXMnLgAlcwBDb21wbGV0ZWQgdHJ1bmNhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBSb2xsYmFjayBvZiBub24tcHJlcGFyZWQgdHJhbnNhY3Rpb25zIGNvbXBsZXRlZAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBCbG9ja2VkIEhpZ2ggUHJpb3JpdHkgVHJhbnNhY3Rpb24gKElEICVsbHUsIFRocmVhZCBJRCAlcykga2lsbGVkIHRoZSBibG9ja2luZyB0cmFuc2FjdGlvbiAoSUQgJWxsdSAtICVzKSBieSByb2xsaW5nIGl0IGJhY2suACVzAGdldHRpbWVvZmRheSgpIGZhaWxlZDogJXMAQ2FuJ3QgY3JlYXRlIFVORE8gdGFibGVzcGFjZSAlcyAlcwAlcwBSZXNpemluZyByZWRvIGxvZyBmcm9tICVsbHVNIHRvICVsbHVNIChMU049JWxsdSkgc3luY2hyb25vdXNseS4gSWYgdGhpcyB0YWtlcyB0b28gbG9uZywgY29uc2lkZXIgc3RhcnRpbmcgdGhlIHNlcnZlciB3aXRoIGxhcmdlIC0taW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LCBhbmQgcmVzaXppbmcgdGhlIHJlZG8gbG9nIG9ubGluZSB1c2luZyBTRVQuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAE91dCBvZiBzcGFjZSBpbiB0aGUgcmVkbyBsb2cuIENoZWNrcG9pbnQgTFNOOiAlbGx1LiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AJXMATG9nIHdyaXRlciB3YWl0ZWQgdG9vIGxvbmcgZm9yIHJlZG8tYXJjaGl2ZXIgdG8gYWR2YW5jZSAoMSBzZWNvbmQpLiBUaGVyZSBhcmUgdW5hcmNoaXZlZDogJWxsdSBieXRlcy4gQXJjaGl2ZXIgTFNOOiAlbGx1LiBBYm9ydGVkIHRoZSByZWRvLWFyY2hpdmVyLiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4ATG9nIHdyaXRlciBpcyB3YWl0aW5nIGZvciByZWRvLWFyY2hpdmVyIHRvIGNhdGNoIHVwIHVuYXJjaGl2ZWQ6ICVsbHUgYnl0ZXMuIEFyY2hpdmVyIExTTjogJWxsdS4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuACVzACVzACVzACVzAENhbid0IHNldCByZWRvIGxvZyBmaWxlcyB0byBiZSBlbmNyeXB0ZWQgaW4gcmVhZC1vbmx5IG1vZGUuAENhbid0IHNldCByZWRvIGxvZyBmaWxlcyB0byBiZSBlbmNyeXB0ZWQuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZC4AUmVkbyBsb2cgZW5jcnlwdGlvbiBpcyBlbmFibGVkLgBXYWl0aW5nIGZvciBhcmNoaXZlciB0byBmaW5pc2ggYXJjaGl2aW5nIHBhZ2UgYW5kIGxvZwBTdGFydGluZyBzaHV0ZG93bi4uLgBXYWl0aW5nIGZvciAlcyB0byBleGl0LgBXYWl0aW5nIGZvciByb2xsYmFjayBvZiAlenUgcmVjb3ZlcmVkIHRyYW5zYWN0aW9ucywgYmVmb3JlIHNodXRkb3duLgBXYWl0aW5nIGZvciBtYXN0ZXIgdGhyZWFkIHRvIGJlIHN1c3BlbmRlZC4AV2FpdGluZyBmb3IgcGFnZV9jbGVhbmVyIHRvIGZpbmlzaCBmbHVzaGluZyBvZiBidWZmZXIgcG9vbC4AU2h1dGRvd24gaXMgd2FpdGluZyBmb3IgJXp1IGJ1ZmZlciBwYWdlIEkvT3MgdG8gY29tcGxldGUuAE15U1FMIGhhcyByZXF1ZXN0ZWQgYSB2ZXJ5IGZhc3Qgc2h1dGRvd24gd2l0aG91dCBmbHVzaGluZyB0aGUgSW5ub0RCIGJ1ZmZlciBwb29sIHRvIGRhdGEgZmlsZXMuIEF0IHRoZSBuZXh0IG15c3FsZCBzdGFydHVwIElubm9EQiB3aWxsIGRvIGEgY3Jhc2ggcmVjb3ZlcnkhACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEludmFsaWQgcmVkbyBsb2cgaGVhZGVyIGNoZWNrc3VtLgBVbnN1cHBvcnRlZCByZWRvIGxvZyBmb3JtYXQgKHYlbHUpLiBUaGUgcmVkbyBsb2cgd2FzIGNyZWF0ZWQgYmVmb3JlIE15U1FMIDUuNy45ACVzAENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uIFRoZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHk9JWxsdU0gaXMgdG9vIHNtYWxsIGZvciB0aGUgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeT0lbHUuIFRoZSBjYXBhY2l0eSBvZiByZWRvIHNob3VsZCBiZSA+PSAlbGx1TS4gVG8gZ2V0IG15c3FsZCBydW5uaW5nLCBzZXQgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSB0byBhIHNtYWxsZXIgdmFsdWUgb3IgaW5jcmVhc2UgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LiAlcwAlcwAlcwBVc2VyIGhhcyBzZXQgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSB0byAlbHUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIFNRTCB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIFNRTCB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgSU8gdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBJTyB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IFVwZGF0ZXMgdG8gbm9uLXRyYW5zYWN0aW9uYWwgdGFibGVzIGNhbiBvbmx5IGJlIGRvbmUgaW4gZWl0aGVyIGF1dG9jb21taXR0ZWQgc3RhdGVtZW50cyBvciBzaW5nbGUtc3RhdGVtZW50IHRyYW5zYWN0aW9ucywgYW5kIG5ldmVyIGluIHRoZSBzYW1lIHN0YXRlbWVudCBhcyB1cGRhdGVzIHRvIHRyYW5zYWN0aW9uYWwgdGFibGVzLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRBQkxFIC4uLiBTRUxFQ1QuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBjYW4gb25seSBiZSBleGVjdXRlZCBvdXRzaWRlIHRyYW5zYWN0aW9uYWwgY29udGV4dC4gIFRoZXNlIHN0YXRlbWVudHMgYXJlIGFsc28gbm90IGFsbG93ZWQgaW4gYSBmdW5jdGlvbiBvciB0cmlnZ2VyIGJlY2F1c2UgZnVuY3Rpb25zIGFuZCB0cmlnZ2VycyBhcmUgYWxzbyBjb25zaWRlcmVkIHRvIGJlIG11bHRpLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB1cGRhdGVzIHdpbGwgYmUgd3JpdHRlbiBpbiBmdWxsIGZvcm1hdCB0byBiaW5hcnkgbG9nLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBsb2dfYmluX3VzZV92MV9yb3dfZXZlbnRzPTEgd2lsbCBiZSBpZ25vcmVkIGFuZCByb3cgZXZlbnRzIHdpbGwgYmUgd3JpdHRlbiBpbiBuZXcgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSB1c2VkIG9ubHkgZm9yIHRoZSBhZnRlci1pbWFnZS4gRnVsbCB2YWx1ZXMgd2lsbCBiZSB3cml0dGVuIGluIHRoZSBiZWZvcmUtaW1hZ2UsIHNvIHRoZSBzYXZpbmcgaW4gZGlzayBzcGFjZSBkdWUgdG8gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zIGlzIGxpbWl0ZWQgdG8gbGVzcyB0aGFuIDUwJSUuAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzKS4AJXM6IE5vcm1hbCBzaHV0ZG93bi4AQ2FuIG5vdCBwZXJmb3JtIGtleXJpbmcgbWlncmF0aW9uIDogJXMuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBvcHRpb24gdmFsdWUgJyV1JyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyV1Jy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4gSWYgdGhlcmUgaXMgZXhpc3RpbmcgZGF0YSBvbiBtZW1iZXIsIGl0IG1heSBiZSBpbmNvbXBhdGlibGUgd2l0aCBncm91cCBpZiBpdCB3YXMgY3JlYXRlZCB3aXRoIGEgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyB2YWx1ZSBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAuAEFuIG91dC1vZi1tZW1vcnkgZXJyb3Igb2NjdXJyZWQgd2hpbGUgc2F2aW5nIHRoZSBzZXQgb2YgR1RJRHMgZnJvbSB0aGUgbGFzdCBiaW5hcnkgbG9nIGludG8gdGhlIG15c3FsLmd0aWRfZXhlY3V0ZWQgdGFibGUAVGhlIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgc2V0dGluZyBmb3IgdGhlIGRhdGEgZGljdGlvbmFyeSB3YXMgbm90IGZvdW5kLiBTdGFydGluZyB0aGUgc2VydmVyIHVzaW5nIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAnJXUnLgBBIGNhcHR1cmUgZ3JvdXAgaGFzIGFuIGludmFsaWQgbmFtZS4AVmFyaWFibGUgJyUtLjY0cycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycAU3RvcHBpbmcgc2VydmljZXMgZmFpbGVkIHdpdGggZXJyb3IgIiVzIgBRdWVyeSBjYXVzZWQgZGlmZmVyZW50IGVycm9ycyBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuIEVycm9yIG9uIHNvdXJjZTogbWVzc2FnZSAoZm9ybWF0KT0nJXMnIGVycm9yIGNvZGU9JWQ7IEVycm9yIG9uIHJlcGxpY2E6YWN0dWFsIG1lc3NhZ2U9JyVzJywgZXJyb3IgY29kZT0lZC4gRGVmYXVsdCBkYXRhYmFzZTonJXMnLiBRdWVyeTonJXMnAEdvdCBmYXRhbCBlcnJvciAlZCBmcm9tIHNvdXJjZSB3aGVuIHJlYWRpbmcgZGF0YSBmcm9tIGJpbmFyeSBsb2c6ICclLS41MTJzJwBSZXBsaWNhdGlvbiBldmVudCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIHdoaWxlIHJlYWRpbmcgZnJvbSBuZXR3b3JrLgBGYWlsZWQgdG8gY3JlYXRlICVzAEZhdGFsIGVycm9yOiAlcwBVbmV4cGVjdGVkIHNvdXJjZSdzIGhlYXJ0YmVhdCBkYXRhOiAlcwBUaGUgaW5jaWRlbnQgJXMgb2NjdXJyZWQgb24gdGhlIHNvdXJjZS4gTWVzc2FnZTogJXMAU291cmNlIGNvbW1hbmQgJXMgZmFpbGVkOiAlcwBSZWxheSBsb2cgcmVhZCBmYWlsdXJlOiAlcwBSZWxheSBsb2cgd3JpdGUgZmFpbHVyZTogJXMAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgYXBwbGllciBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBHb3QgYSBwYWNrZXQgYmlnZ2VyIHRoYW4gJ21heF9hbGxvd2VkX3BhY2tldCcgYnl0ZXMAQWNjZXNzIHRvICUuNjRzICclLjY0cy4lLjY0cycgaXMgcmVqZWN0ZWQuAFVua25vd24gZXJyb3IAVW5rbm93biBzeXN0ZW0gdmFyaWFibGUgJyUtLjY0cycAQSBtZXNzYWdlIGludGVuZGVkIGZvciBhIGNsaWVudCBjYW5ub3QgYmUgc2VudCB0aGVyZSBhcyBubyBjbGllbnQtc2Vzc2lvbiBpcyBhdHRhY2hlZC4gVGhlcmVmb3JlLCB3ZSdyZSBzZW5kaW5nIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgZXJyb3ItbG9nIGluc3RlYWQ6IE1ZLSUwNmQgLSAlcwBBYm9ydGVkIGNvbm5lY3Rpb24gJXUgdG8gZGI6ICclLS4xOTJzJyB1c2VyOiAnJS0uNDhzJyBob3N0OiAnJS0uMjU1cycgKCUtLjY0czsgZGlhZ25vc3RpY3MgYXJlYTogTVktJTA2ZCAtICUtLjY0cykAT3V0IG9mIHNvcnQgbWVtb3J5LCBjb25zaWRlciBpbmNyZWFzaW5nIHNlcnZlciBzb3J0IGJ1ZmZlciBzaXplIQBUaGUgdGFibGUgJyUtLjE5MnMnIGlzIGZ1bGwhAENyZWF0ZSB0YWJsZS90YWJsZXNwYWNlICclLS4xOTJzJyBmYWlsZWQsIGFzIGRpc2sgaXMgZnVsbC4ASGFuZGxlciByZXBvcnRlZCBlcnJvciAlZCAtICVzAEluY29ycmVjdCBpbmZvcm1hdGlvbiBpbiBmaWxlOiAnJS0uMjAwcycAQ2FuJ3Qgb3BlbiBmaWxlOiAnJS0uMjAwcycgKE9TIGVycm5vOiAlZCAtICVzKQBDYW4ndCBmaW5kIGZpbGU6ICclLS4yMDBzJyAoT1MgZXJybm86ICVkIC0gJXMpACclLS4xOTJzJyBpcyBsb2NrZWQgYWdhaW5zdCBjaGFuZ2UgKE9TIGVycm5vOiAlZCAtICVzKQBDYW5ub3QgbG9hZCBmcm9tICVzLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkIQBFcnJvciBpbiBkaWFnbm9zdGljcyBhcmVhOiBNWS0lMDZkIC0gJXMASW5jb3JyZWN0IGRlZmluaXRpb24gb2YgdGFibGUgJXMuJXM6IGV4cGVjdGVkIGNvbHVtbiAnJXMnIGF0IHBvc2l0aW9uICVkLCBmb3VuZCAnJXMnLgBUaGUgY29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIENyZWF0ZWQgd2l0aCBNeVNRTCAlZCwgbm93IHJ1bm5pbmcgJWQuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQ29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAIgBSZXBsaWNhIFNRTCB0aHJlYWQgYWJvcnRlZC4gQ2FuJ3QgZXhlY3V0ZSBpbml0X3JlcGxpY2EgcXVlcnksIE1ZLSUwNmQgLSAnJXMnAENvbHVtbiAlZCBvZiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJyBjYW5ub3QgYmUgY29udmVydGVkIGZyb20gdHlwZSAnJS0uMzJzJyB0byB0eXBlICclLS4zMnMnAFJlcGxpY2EgU1FMIHRocmVhZCBpZ25vcmVkIHRoZSBxdWVyeSBiZWNhdXNlIG9mIHJlcGxpY2F0ZS0qLXRhYmxlIHJ1bGVzAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQVVUT19QT1NJVElPTiA9IDEsIGF0IGZpbGUgJS40MDBzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLCBhdCBmaWxlICUuNDAwcywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBHVElELXRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLCBhdCBmaWxlICUuNDAwcywgcG9zaXRpb24gJWxsZC4AU2ltdWxhdGVkIGVycm9yACVzAEF1ZGl0IExvZyBmaWx0ZXJpbmcgaGFzIG5vdCBiZWVuIGluc3RhbGxlZC4ARmFpbGVkIHRvIG9wZW4gdGhlICVzIGZpbHRlciB0YWJsZXMuAEZhaWxlZCB0byBvcGVuICclcy4lcycgJXMgdGFibGUuAEZpbHRlciBuYW1lIGNhbm5vdCBiZSBlbXB0eS4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gdGhlIHVzZXIgbmFtZS4AUmVxdWVzdCBpZ25vcmVkIGZvciAnJXMnQCclcycuIFNVUEVSIG9yIEFVRElUX0FETUlOIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbgBObyBrZXlyaW5nIGluc3RhbGxlZC4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gdGhlIGhvc3QgbmFtZS4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgaGFzIG5vdCBiZWVuIHNldDsgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4gVXNlIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX2dldCB0byBvYnRhaW4gdGhlIHBhc3N3b3JkIG9yIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX3NldCB0byBzZXQgYSBuZXcgb25lLgBDb3VsZCBub3QgY3JlYXRlIEFFUyBrZXkuIE9wZW5TU0wncyBFVlBfQnl0ZXNUb0tleSBmdW5jdGlvbiBmYWlsZWQuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGNhbm5vdCBiZSBmZXRjaGVkIGZyb20gdGhlIGtleXJpbmcuIFBhc3N3b3JkIHVzZWQgc28gZmFyIGlzIHVzZWQgZm9yIGVuY3J5cHRpb24uAENvdWxkIG5vdCByZWluaXRpYWxpemUgYXVkaXQgbG9nIGZpbHRlcnMuAFVzZXIgY2Fubm90IGJlIGVtcHR5LgBGaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHVzZXIgbmFtZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4AU3BlY2lmaWVkIGZpbHRlciBoYXMgbm90IGJlZW4gZm91bmQuAENhbm5vdCB1cGdyYWRlIHNlcnZlciBlYXJsaWVyIHRoYW4gNS43IHRvIDguMAAlcyAobXlzcWxkICVzKSBpbml0aWFsaXppbmcgb2Ygc2VydmVyIGluIHByb2dyZXNzIGFzIHByb2Nlc3MgJWx1ACVzIChteXNxbGQgJXMpIGluaXRpYWxpemluZyBvZiBzZXJ2ZXIgaGFzIGNvbXBsZXRlZABDYW5ub3QgYm9vdCBzZXJ2ZXIgdmVyc2lvbiAlbHUgb24gZGF0YSBkaXJlY3RvcnkgYnVpbHQgYnkgdmVyc2lvbiAlbGx1LiBEb3duZ3JhZGUgaXMgbm90IHN1cHBvcnRlZABSZWNlaXZlZCBTSFVURE9XTiBmcm9tIHVzZXIgJXMuIFNodXR0aW5nIGRvd24gbXlzcWxkIChWZXJzaW9uOiAlcykuAFRoZSBwbHVnaW4gZW5jb3VudGVyZWQgYSBjcml0aWNhbCBlcnJvciBhbmQgd2lsbCBhYm9ydDogJXMASW52YWxpZCBtYXRjaCBtb2RlIGZsYWcgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgdXNlIG9mIHJlcGxpY2F0aW9uIGZpbHRlcnMgd2l0aCBYQSB0cmFuc2FjdGlvbnMgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGNhbiBsZWFkIHRvIGFuIHVuZGVmaW5lZCBzdGF0ZSBpbiB0aGUgcmVwbGljYS4AQ2Fubm90IHVwZGF0ZSBHVElEX1BVUkdFRCB3aXRoIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gcnVubmluZwAnJXMuJXMnIHRhYmxlIGRlZmluaXRpb24gaGFzIG5vdCBiZWVuIHVwZ3JhZGVkOyBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEV4ZWN1dGlvbiBvZiBzZXJ2ZXItc2lkZSBTUUwgc3RhdGVtZW50ICclcycgZmFpbGVkIHdpdGggZXJyb3IgY29kZSA9ICVkLCBlcnJvciBtZXNzYWdlID0gJyVzJy4ATm8gcGF0aHMgYWxsb3dlZCBmb3Igc2hhcmVkIGxpYnJhcnkuAEZ1bmN0aW9uICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cy4AR290IEVycm9yOiAlbGQgZnJvbSBTZXRFdmVudC4ARXJyb3IgYWxsb2NhdGluZyBTU0wgQklPLgAlcwBPbmUgb3Igc2V2ZXJhbCBsb2NhdGlvbnMgd2VyZSBpbmFjY2Vzc2libGUgd2hpbGUgY2hlY2tpbmcgUElEIGZpbGVwYXRoLgBDdXJyZW50bHkgdW5rbm93biB2YXJpYWJsZSAnJXMnIHdhcyByZWFkIGZyb20gdGhlIHBlcnNpc3RlZCBjb25maWcgZmlsZS4ARmF0YWwgZXJyb3IgaW4gZGVmYXVsdHMgaGFuZGxpbmcuIFByb2dyYW0gYWJvcnRlZCEARHVwbGljYXRlIHZhcmlhYmxlIG5hbWUgJyVzJy4ARmFpbGVkIHRvIGluaXRpYWxpemUgc3lzdGVtIHZhcmlhYmxlcy4AVmFyaWFibGUgbmFtZSAnJXMnIG5vdCBmb3VuZC4AU29tZSAoJWQpIHRocmVhZHMgYXJlIHN0aWxsIGFjdGl2ZQAlcwBTb3VyY2UgdGFibGVzcGFjZSBpcyBlbmNyeXB0ZWQgYnV0IHRhcmdldCB0YWJsZXNwYWNlIGlzIG5vdC4AV2FpdGluZyBmb3IgdGFibGVzcGFjZV9hbHRlcl9lbmNyeXB0X3RocmVhZCB0byBleGl0ACVzACVzACVzACVzACVzACVzACVzACVzACVzOiBDb3VsZCBub3QgYWRkIHN1cHByZXNzaW9uIHJ1bGUgZm9yIGNvZGUgIiVzIi4gUnVsZS1zZXQgbWF5IGJlIGZ1bGwsIG9yIGNvZGUgbWF5IG5vdCBjb3JyZXNwb25kIHRvIGFuIGVycm9yLWxvZyBtZXNzYWdlLgBJbnZhbGlkIHZhbHVlIGZvciBjb21tYW5kIGxpbmUgb3B0aW9uIGJpbmQtYWRkcmVzc2VzOiAnJXMnAElnbm9yaW5nIHRoZSBAQGdsb2JhbC5yZWxheV9sb2dfc3BhY2VfbGltaXQgb3B0aW9uIGJlY2F1c2UgQEBnbG9iYWwucmVsYXlfbG9nX3B1cmdlIGlzIGRpc2FibGVkLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgR1RJRCBleGVjdXRpb24gaW5mb3JtYXRpb246ICVzAE1lc3NhZ2UgcmVjZWl2ZWQgd2l0aG91dCBhIHByb3BlciBncm91cCBjb29yZGluYXRvciBtb2R1bGUuAEEgbWVtYmVyIGNhbm5vdCBqb2luIHRoZSBncm91cCB3aGlsZSBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgaXMgcnVubmluZyBpbml0aWF0ZWQgYnkgJyVzJy4AQSBtZW1iZXIgaXMgam9pbmluZyB0aGUgZ3JvdXAgd2hpbGUgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiAnJXMnIGlzIHJ1bm5pbmcgaW5pdGlhdGVkIGJ5ICclcycuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBDYW4ndCBzdGFydCAlcyBmb3IgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgaW5pdGlhdGVkIGJ5ICclcycuAEEgcHJpbWFyeSBlbGVjdGlvbiB3YXMgaW52b2tlZCBidXQgdGhlIHJlcXVlc3RlZCBwcmltYXJ5IG1lbWJlciBpcyBub3QgaW4gdGhlIGdyb3VwLiBSZXF1ZXN0IGlnbm9yZWQuAEVycm9yIHdoaWxlIHNlbmRpbmcgbWVzc2FnZS4gQ29udGV4dDogJXMARXJyb3Igd2hpbGUgZXhlY3V0aW5nIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb246ICVzAENvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgdGVybWluYXRlZC4gJXMAU3RhcnRpbmcgZ3JvdXAgb3BlcmF0aW9uIGxvY2FsIGV4ZWN1dGlvbjogJXMAVGVybWluYXRpb24gb2YgZ3JvdXAgb3BlcmF0aW9uIGxvY2FsIGV4ZWN1dGlvbjogJXMAQSBjb25maWd1cmF0aW9uIGNoYW5nZSB3YXMga2lsbGVkIGluIHRoaXMgbWVtYmVyLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cCBhcyBpdHMgY29uZmlndXJhdGlvbiBtYXkgaGF2ZSBkaXZlcmdlZC4AVGhlcmUgd2FzIGFuIGlzc3VlIG9uIHRoZSBwcmltYXJ5IGVsZWN0aW9uIHByb2Nlc3M6ICVzIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBUaGVyZSB3YXMgYW4gaXNzdWUgd2hlbiBzdG9wcGluZyBhIHByZXZpb3VzIGVsZWN0aW9uIHByb2Nlc3M6ICVzAEl0IHdhcyBub3QgcG9zc2libGUgdG8gaW5pdGlhbGl6ZSBzdGFnZSBsb2dnaW5nIGZvciB0aGlzIHRhc2suIFRoZSBvcGVyYXRpb24gd2lsbCBzdGlsbCBydW4gd2l0aG91dCBzdGFnZSB0cmFja2luZy4AQ291bGQgbm90IGV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBvZiBHcm91cCBSZXBsaWNhdGlvbiBVREYgZnVuY3Rpb246ICVzLiBDaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50LCBpZiBzbywgdHJ5IHRvIHJlbW92ZSBpdABDb3VsZCBub3QgdW5pbnN0YWxsIEdyb3VwIFJlcGxpY2F0aW9uIFVERiBmdW5jdGlvbnMuIFRyeSB0byByZW1vdmUgdGhlbSBtYW51YWxseSBpZiBwcmVzZW50LgBDb3VsZCBub3QgZXhlY3V0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIEdyb3VwIFJlcGxpY2F0aW9uIFVERiBmdW5jdGlvbnMuIENoZWNrIGZvciBvdGhlciBlcnJvcnMgaW4gdGhlIGxvZyBhbmQgdHJ5IHRvIHJlaW5zdGFsbCB0aGUgcGx1Z2luAFRoZSBmdW5jdGlvbiAnJXMnIGZhaWxlZC4gJXMARG8gbm90IHNwZWNpZnkgdGhlIGN1cnJlbnQgcGFzc3dvcmQgd2hpbGUgY2hhbmdpbmcgaXQgZm9yIG90aGVyIHVzZXJzLgBJbmNvcnJlY3QgY3VycmVudCBwYXNzd29yZC4gU3BlY2lmeSB0aGUgY29ycmVjdCBwYXNzd29yZCB3aGljaCBoYXMgdG8gYmUgcmVwbGFjZWQuAEN1cnJlbnQgcGFzc3dvcmQgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBSRVBMQUNFIGNsYXVzZSBpbiBvcmRlciB0byBjaGFuZ2UgaXQuAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnACVzIHdhcyB1bmFibGUgdG8gY3JlYXRlIGEgbmV3IFdpbmRvd3MgcmVnaXN0cnkga2V5ICVzIGZvciAlczsgY29udGludWluZyB0byB1c2UgdGhlIHByZXZpb3VzIGlkZW50LgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgYXJlIG5vdCBhbGxvd2VkIGluc2lkZSBhIHRyYW5zYWN0aW9uIG9yIGluc2lkZSBhIHByb2NlZHVyZSBpbiBhIHRyYW5zYWN0aW9uYWwgY29udGV4dCB3aGVuIEBAc2Vzc2lvbi5iaW5sb2dfZm9ybWF0PVNUQVRFTUVOVC4AU2Vjb25kYXJ5IGVuZ2luZSBvcGVyYXRpb24gZmFpbGVkLiAlcy4ARERMcyBvbiBhIHRhYmxlIHdpdGggYSBzZWNvbmRhcnkgZW5naW5lIGRlZmluZWQgYXJlIG5vdCBhbGxvd2VkLgBVbmFibGUgdG8gYWxsb2NhdGUgdGVtcG9yYXJ5IHRhYmxlc3BhY2UgZm9yIHRoaXMgc2Vzc2lvbgBVbmFibGUgdG8gc3dpdGNoIHNlY3VyaXR5IGNvbnRleHQgdG8gdXNlcjogJXMAU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IEFMVEVSIFRBQkxFIC4uLiBBREQgQ09MVU1OIC4uIHdpdGggZXhwcmVzc2lvbiBhcyBERUZBVUxULgBFcnJvciBpbiBwYXJzaW5nICVzICclcycuJyVzJyBkdXJpbmcgdXBncmFkZS4gJXMA0JfQsNC00LDQtNC10L3QsNGC0LAg0L/QsNC/0LrQsCDQt9CwINCx0LDQt9Cw0YLQsCAlcyDQtSDQvdC10LjQt9C/0L7Qu9C30LLQsNC10LzQsC4g0JzQvtC20LXRgtC1INC00LAg0LjQt9GC0YDQuNC10YLQtSDRhNCw0LnQu9C+0LLQtdGC0LUg0LrQvtC40YLQviDRgdGK0YDQstGK0YDQsCDQtNC+0LHQsNCy0Lgg0LIg0L3QtdGPLgBHcm91cCBzZWFyY2ggcmViaW5kaW5nIHZpYSByb290IEROOiAlcyAARXJyb3IgaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMARXJyb3IgdW5pbnN0YWxsaW5nIHBsdWdpbiAnJXMnOiAlcwBQYXJ0aXRpb25lZCB0YWJsZSAnJXMnIGlzIG5vdCBhbGxvd2VkIHRvIHVzZSBzaGFyZWQgdGFibGVzcGFjZSAnJXMnLiBQbGVhc2UgbW92ZSBhbGwgcGFydGl0aW9ucyB0byBmaWxlLXBlci10YWJsZSB0YWJsZXNwYWNlcyBiZWZvcmUgdXBncmFkZS4AQ2Fubm90IGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgdGFibGVzcGFjZSBuYW1lZCAnJXMnLgAlczogJ3V0ZjgnIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgYnV0IHdpbGwgYmUgYW4gYWxpYXMgZm9yIFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuACVzOiBUaGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbnN0ZWFkLgAlczogJyUtLjY0cycgaXMgYSBjb2xsYXRpb24gb2YgdGhlIGRlcHJlY2F0ZWQgY2hhcmFjdGVyIHNldCBVVEY4TUIzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgDQpNGD0L3QutGG0LjRj9GC0LAg0L7RgiBTU0wg0LHQuNCx0LvQuNC+0YLQtdC60LDRgtCwICVzINCy0YrRgNC90LAg0LPRgNC10YjQutCwLiDQotC+0LLQsCDQvtCx0LjQutC90L7QstC10L3QviDQtSDQt9Cw0YnQvtGC0L4gU1NMINCx0LjQsdC70LjQvtGC0LXQutCw0YLQsCDQstC10YfQtSDQtSDQsdC40LvQsCDQuNC30L/QvtC70LfQstCw0L3QsC4g0JfQsNGA0LDQtNC4INGC0L7QstCwIFNTTCDQv9Cw0LzQtdGC0YLQsCDQvdGP0LzQsCDQtNCwINGB0LUg0LjQvdGB0YLRgNGD0LzQtdC90YLQuNGA0LAuAERpc2FibGluZyBAQGNvcmVfZmlsZSBiZWNhdXNlIEBAaW5ub2RiX2J1ZmZlcl9wb29sX2luX2NvcmVfZmlsZSBpcyBkaXNhYmxlZCwgeWV0IE1BRFZfRE9OVERVTVAgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtAERpc2FibGluZyBAQGNvcmVfZmlsZSBiZWNhdXNlIEBAaW5ub2RiX2J1ZmZlcl9wb29sX2luX2NvcmVfZmlsZSBpcyBkaXNhYmxlZCwgeWV0IG1hZHZpc2UoJXAsJXp1LCVzKSBmYWlsZWQgd2l0aCAlcwBDb3VsZCBub3QgY2hhbmdlIGNvbHVtbiAnJXMnIG9mIHRhYmxlICclcycuIFRoZSByZXN1bHRpbmcgc2l6ZSBvZiBpbmRleCAnJXMnIHdvdWxkIGV4Y2VlZCB0aGUgbWF4IGtleSBsZW5ndGggb2YgJWQgYnl0ZXMuAHNxbF9tb2RlPTB4JTA4eCBoYXMgYmVlbiByZW1vdmVkIGFuZCB3aWxsIGJlIGlnbm9yZWQARmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgYSBwb29sIG9mIHNpemUgJXp1IGJ5dGVzLiBXaWxsIHdhaXQgZm9yICV6dSBzZWNvbmRzIGZvciBhIHRocmVhZCB0byBmcmVlIGEgcmVzb3VyY2UuAE51bWJlciBvZiBwb29sczogJXp1AFVzaW5nIHVuZG8gdGFibGVzcGFjZSAnJXMnLgAlcyBVbmFibGUgdG8gc2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0YWJsZXNwYWNlICclcycgdG8gdGhlIGRhdGEgZGljdGlvbmFyeQBDYW5ub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZSAlcyBhdCAlcyBiZWNhdXNlICVkIHVuZG8gdGFibGVzcGFjZXMgYWxyZWFkeSBleGlzdC4ARXJyb3IgJWQgb3BlbmluZyBuZXdseSBjcmVhdGVkIHVuZG8gdGFibGVzcGFjZSAlcy4AU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9CVUZfRVJST1IAU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9NRU1fRVJST1IAU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9TVFJFQU1fRVJST1IAJXMARXhwZWN0ZWQgdG8gZmluZCB1bmRvIHRhYmxlc3BhY2UgJyVzJyBmb3IgU3BhY2UgSUQ9JWx1LCBidXQgZm91bmQgJyVzJyBpbnN0ZWFkISAgRGlkIHlvdSBjaGFuZ2UgaW5ub2RiX3VuZG9fZGlyZWN0b3J5PwBDYW5ub3QgdXNlICVzIGFzIGFuIHVuZG8gdGFibGVzcGFjZSBiZWNhdXNlIGl0IGRvZXMgbm90IGVuZCB3aXRoICcuaWJ1Jy4AaWJfdW5kb190cnVuY19lbXB0eV9maWxlAGliX3VuZG9fdHJ1bmNfYmVmb3JlX2RkX3VwZGF0ZQBpYl91bmRvX3RydW5jX2JlZm9yZV9kb25lX2xvZ2dpbmcAaWJfdW5kb190cnVuY19iZWZvcmVfcnNlZ3MAJXMgRmFpbGVkIHRvIGZpbmlzaCB0cnVuY2F0aW5nIFVuZG8gVGFibGVzcGFjZSAnJXMnAFRoZSBzZXR0aW5nIElOTk9EQl9VTkRPX1RBQkxFU1BBQ0VTIGlzIGRlcHJlY2F0ZWQgYW5kIGlzIG5vIGxvbmdlciB1c2VkLiAgSW5ub0RCIGFsd2F5cyBjcmVhdGVzIDIgdW5kbyB0YWJsZXNwYWNlcyB0byBzdGFydCB3aXRoLiBJZiB5b3UgbmVlZCBtb3JlLCBwbGVhc2UgdXNlIENSRUFURSBVTkRPIFRBQkxFU1BBQ0UuAFRoZSBkaXJlY3RvcnkgZm9yIHRhYmxlc3BhY2UgJXMgZG9lcyBub3QgZXhpc3Qgb3IgaXMgaW5jb3JyZWN0LgAlcwBDbG9uZSBkb25vciByZXBvcnRlZCA6ICUuNTEycy4AQ2xvbmUgcmVjZWl2ZWQgdW5leHBlY3RlZCByZXNwb25zZSBmcm9tIGRvbm9yIDogJS41MTJzLgBDbGllbnQ6ICUuNTEycy4AU2VydmVyOiAlLjUxMnMuAEZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEgdGFibGVzIHNlcnZpY2UuAEZhaWxlZCB0byBhZGQgdGhyZWFkIHBvb2wgcGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlcy4ARmFpbGVkIHRvIHNldCBkYXRhZGlyIHRvICclLS4yMDBzJyAoT1MgZXJybm86ICVkIC0gJXMpAFRoZSBpbm5vZGJfdW5kb19kaXJlY3RvcnkgaXMgbm90IGFsbG93ZWQgdG8gYmUgYW4gYW5jZXN0b3Igb2YgdGhlIGRhdGFkaXIuAEZhaWxlZCB0byBmZXRjaCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAENhbid0IGZpbmQga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4ARmV0Y2hlZCBhbiBpbnZhbGlkIGtleSBmcm9tIGtleXJpbmcuAEVycm9yIHJlYWRpbmcgYSByZXBsaWNhdGlvbiBsb2cgZW5jcnlwdGlvbiBoZWFkZXI6ICVzLgBGYWlsZWQgdG8gcm90YXRlIHNvbWUgbG9ncyBhZnRlciBjaGFuZ2luZyBiaW5sb2cgZW5jcnlwdGlvbiBzZXR0aW5ncy4gUGxlYXNlIGZpeCB0aGUgcHJvYmxlbSBhbmQgcm90YXRlIHRoZSBsb2dzIG1hbnVhbGx5LgBLZXkgJXMgZXhpc3RzIHVuZXhwZWN0ZWQuAEZhaWxlZCB0byBnZW5lcmF0ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHN0b3JlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcmVtb3ZlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5sb2cgZW5jcnlwdGlvbiBtYXN0ZXIga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBpbml0aWFsaXplIGJpbmxvZyBlbmNyeXB0aW9uLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byByb3RhdGUgYmlubG9nIGVuY3J5cHRpb24gbWFzdGVyIGtleSBhdCBzdGFydHVwLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAElnbm9yaW5nIGJpbmxvZ19yb3RhdGVfZW5jcnlwdGlvbl9tYXN0ZXJfa2V5X2F0X3N0YXJ0dXAgYmVjYXVzZSBiaW5sb2dfZW5jcnlwdGlvbiBvcHRpb24gaXMgZGlzYWJsZWQuAEludmFsaWQgdmFsdWUgZm9yIGNvbW1hbmQgbGluZSBvcHRpb24gYWRtaW4tYWRkcmVzczogJyVzJwBBZG1pbiBpbnRlcmZhY2UgcmVhZHkgZm9yIGNvbm5lY3Rpb25zLCBhZGRyZXNzOiAnJXMnICBwb3J0OiAlZABDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBhZG1pbiBjb25uZWN0aW9ucyAoZXJybm89ICVkKQBSRVRBSU4gQ1VSUkVOVCBQQVNTV09SRCBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcGFzc3dvcmRzLgBESVNDQVJEIE9MRCBQQVNTV09SRCBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcGFzc3dvcmRzLgBFbXB0eSBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGFzIHNlY29uZCBwYXNzd29yZCBmb3IgdXNlciAnJXMnQCclcycuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBhdXRoZW50aWNhdGlvbiBwbHVnaW4gaXMgYmVpbmcgY2hhbmdlZC4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIG5ldyBwYXNzd29yZCBpcyBlbXB0eS4AQ2FuIG5vdCByZWFkIGFuZCBwcm9jZXNzIHZhbHVlIG9mIFVzZXJfYXR0cmlidXRlcyBjb2x1bW4gZnJvbSBteXNxbC51c2VyIHRhYmxlIGZvciB1c2VyOiAnJXNAJXMnOyBJZ25vcmluZyB1c2VyLgBTZWNvbmQgcGFzc3dvcmQgd2FzIHVzZWQgZm9yIGxvZ2luIGJ5IHVzZXI6ICclcydAJyVzJy4AU2Vjb25kIHBhc3N3b3JkIHdhcyB1c2VkIGZvciBsb2dpbiBieSB1c2VyOiAnJXMnQCclcycuAFNlY29uZCBwYXNzd29yZCB3YXMgdXNlZCBmb3IgbG9naW4gYnkgdXNlcjogJyVzJ0AnJXMnLgBFcnJvciBzZW5kaW5nIHRyYW5zYWN0aW9uICclZDolbGxkJyBwcmVwYXJlZCBtZXNzYWdlIGZyb20gc2Vzc2lvbiAnJXUnLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gJyVkOiVsbGQnIGZvciBjb21taXQgb24gc2Vzc2lvbiAnJXUnIGFmdGVyIGJlaW5nIHByZXBhcmVkIG9uIGFsbCBncm91cCBtZW1iZXJzLgBUcmFuc2FjdGlvbiAnJWQ6JWxsZCcgYWxyZWFkeSBleGlzdHMgb24gR3JvdXAgUmVwbGljYXRpb24gY29uc2lzdGVuY3kgbWFuYWdlciB3aGlsZSBiZWluZyByZWdpc3RlcmVkIGFmdGVyIGNvbmZsaWN0IGRldGVjdGlvbi4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gJyVkOiVsbGQnIG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgYWZ0ZXIgY29uZmxpY3QgZGV0ZWN0aW9uLgBFcnJvciByZWdpc3RlcmluZyB0cmFuc2FjdGlvbiAnJWQ6JWxsZCcgZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3IgYmVpbmcgcHJlcGFyZWQgb24gYWxsIGdyb3VwIG1lbWJlcnMuAEVycm9yIG9uIHRyYW5zYWN0aW9uICclZDolbGxkJyBmcm9tIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBiZWluZyBwcmVwYXJlZCBvbiBhbGwgZ3JvdXAgbWVtYmVycy4AVHJhbnNhY3Rpb24gJyVkOiVsbGQnIGRvZXMgbm90IGV4aXN0IG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgd2hpbGUgcmVjZWl2aW5nIHJlbW90ZSB0cmFuc2FjdGlvbiBwcmVwYXJlLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gJyVkOiVsbGQnIGZvciBleGVjdXRpb24gb24gc2Vzc2lvbiAnJXUnIGFmdGVyIGl0cyBkZXBlbmRlbmNpZXMgZGlkIGNvbXBsZXRlIGNvbW1pdC4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3IgaXRzIGRlcGVuZGVuY2llcyB0byBjb21wbGV0ZSBjb21taXQuAEVycm9yIG9uIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBpdHMgZGVwZW5kZW5jaWVzIHRvIGNvbXBsZXRlIGNvbW1pdC4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciBzZW5kaW5nIHN5bmMgYmVmb3JlIGV4ZWN1dGlvbiBtZXNzYWdlIGZyb20gc2Vzc2lvbiAnJXUnLgBFcnJvciBvbiB0cmFuc2FjdGlvbiBmcm9tIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBzeW5jIGJlZm9yZSBleGVjdXRpb24uAEVycm9yIHJlbGVhc2luZyB0cmFuc2FjdGlvbiBmb3IgZXhlY3V0aW9uIG9uIHNlc3Npb24gJyV1JyBhZnRlciB3YWl0IGZvciBzeW5jIGJlZm9yZSBleGVjdXRpb24uAEVycm9yIHdhaXRpbmcgZm9yIGdyb3VwIGV4ZWN1dGVkIHRyYW5zYWN0aW9ucyBjb21taXQgb24gc2Vzc2lvbiAnJXUnLgBUaGVyZSdzIG5vIHVuaXQgb2YgbWVhc3VyZSBuYW1lZCAnJXMnLgBUaGUgZnVuY3Rpb24gJXMgdXNlcyAlcyBhcyBhIHVuaXQsIGJ1dCB3YXMgcGFzc2VkIGdlb21ldHJ5IHdpdGhvdXQgdW5pdHMgKCJTUklEIDAiKS4gQ29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuAENvdWxkIG5vdCBwYXJzZSBrZXktdmFsdWUgcGFpcnMgaW4gcHJvcGVydHkgc3RyaW5nICclcycAUHJvcGVydHkga2V5ICclcycgaXMgaW52YWxpZC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoZSBncm91cF9yZXBsaWNhdGlvbl9hcHBsaWVyIGNoYW5uZWwgcmVjZWl2ZWQgdHJhbnNhY3Rpb25zIHNldC4gVW5hYmxlIHRvIGVuc3VyZSB0aGUgZXhlY3V0aW9uIG9mIGdyb3VwIHRyYW5zYWN0aW9ucyByZWNlaXZlZCBkdXJpbmcgcmVjb3ZlcnkuAEZhaWxlZCB0byBlbmNyeXB0IGNvbnRlbnQgdG8gd3JpdGUgaW50byBiaW5sb2cgZmlsZTogJXMuAENhbm5vdCBnZXQgdGhlIHNlcnZlciB2ZXJzaW9uIG51bWJlciBmcm9tIHRoZSBkaWN0aW9uYXJ5IHRhYmxlc3BhY2UgaGVhZGVyLgBDYW5ub3Qgc2V0IHRoZSBzZXJ2ZXIgdmVyc2lvbiBudW1iZXIgaW4gdGhlIGRpY3Rpb25hcnkgdGFibGVzcGFjZSBoZWFkZXIuAFVwZ3JhZGluZyB0aGUgc2VydmVyIGZyb20gc2VydmVyIHZlcnNpb24gJyV1JyBpcyBub3Qgc3VwcG9ydGVkLgBNeVNRTCBzZXJ2ZXIgdXBncmFkaW5nIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScuAFRoZSBjZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uIGNvdWxkIG5vdCBiZSBzZXQgaW4gdGhpcyBzZXJ2ZXI6ICclcycAQSByZXF1ZXN0IHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAgd2FzIGlzc3VlZCB3aGVuIHRoZSBtZW1iZXIgaXMgbGVhdmluZyB0aGUgZ3JvdXAuAFRyaWdnZXIgJXMuJXMgZm9yIHRhYmxlICVzLiVzIGlzIGxpc3RlZCBpbiB3cm9uZyBvcmRlci4gUGxlYXNlIGRyb3AgYW5kIHJlY3JlYXRlIGFsbCB0cmlnZ2VycyBmb3IgdGhlIHRhYmxlLgAlcwBTcGVjaWFsIGhhbmRsaW5nIGZvciBncm91cCBzZWFyY2gsIHtHQX0gbm90IGZvdW5kAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBVc2VyIG9iamVjdCBoYXMgZ3JvdXAgaW5mb3JtYXRpb24AR3JvdXAgaW5mb3JtYXRpb24gZm91bmQgaW4gbXVsdGlwbGUgdXNlciBvYmplY3RzLiBTZWFyY2ggZmlsdGVyIGNvbmZpZ3VyYXRpb24gaXMgaW5jb3JyZWN0LgBVc2VyIGdyb3VwIHJldHJpZXZhbDogbm8gZ3JvdXAgYXR0cmlidXRlIGZvdW5kLiBJbmNvcnJlY3QgZ3JvdXAgc2VhcmNoIGF0dHJpYnV0ZS4gAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBHcm91cCBhdHRyaWJ1dGUgdmFsdWVzIGlzIE5VTEwuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogcGFyc2luZyBETiBmYWlsZWQuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogR3JvdXAgb2JqZWN0IGhhcyB1c2VyIGluZm9ybWF0aW9uAFJlc2VydmVkIHBvcnQgZm9yIGxkYXBzIHVzaW5nIGxkYXBzAEdldCB1c2VyIHByb3h5AEdldCB1c2VyIHByb3h5OiBVc2VyIGRvZXNuJ3QgYmVsb25ncyB0byBhbnkgZ3JvdXAsIHVzZXIgbmFtZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYXV0aGVudGljYXRlZCB1c2VyLgBHZXQgdXNlciBwcm94eTogY29uZmlndXJlZCBtYXBwaW5nIGluZm86ICVzAEdldCB1c2VyIHByb3h5OiBVc2VyIGRvZXNuJ3QgaGF2ZSBncm91cCBtYXBwaW5nIGluZm9ybWF0aW9uLCBGaXJzdCBMREFQIGdyb3VwIHdpbGwgYmUgdHJlYXRlZCBhcyBhdXRoZW50aWNhdGVkIHVzZXIuAFByb2Nlc3MgZ3JvdXAgcHJveHkgbWFwcGluZwBDaGVjayBkZWxpbWl0ZXIgYWZ0ZXIgcXVvdGUAUHJvY2Vzc2luZyBkZWxpbWl0ZXIAUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIHNlcGFyYXRvciA9IG5vdCBmb3VuZCwgcmVzZXR0aW5nIHBvc2l0aW9uACJQcm9jZXNzaW5nIGRlbGltaXRlciwgZmFpbGVkIHRvIGdldCBkYXRhIGZvciA9IHNlcGFyYXRvciB0cnkgZm9yIHNlcGFyYXRvciAsLiIAUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIHNlcGFyYXRvciAsIG5vdCBmb3VuZCwgcmVzZXR0aW5nIHBvc2l0aW9uAFByb2Nlc3NpbmcgZGVsaW1pdGVyOiBObyBtYXBwaW5nIHNlcGFyYXRvciBpcyBmb3VuZCwgZW5kIG9mIGdyb3VwIGluZm9ybWF0aW9uAEdldHRpbmcgbmV4dCBtYXBwaW5nIGluZm9ybWF0aW9uAFBhcnNpbmcgbWFwcGluZywgY3VycmVudCBzdGF0ZTogJWQgIGRlbGltaXRlciBjaGFyOiAlYyAAUGFyc2luZyBtYXBwaW5nIGluZm8sIExEQVAgZ3JvdXA6ICVzIE15U1FMIHByb3h5OiAlcwBNYXBwaW5nIHBhcnNpbmcgZXJyb3IAVHJpbW1pbmcgbGVmdCBzcGFjZXMAQ2hlY2tpbmcgaWYgY3VycmVudCBjaGFyYWN0ZXJzIGlzIHF1b3RlAE5vdCBkZXNpcmVkIHN0YXRlIG9yIHVuLWRlZmluZWQgc3RhdGVzLgBJbnZhbGlkIHZhbHVlIGZvciBuYW1lZF9waXBlX2Z1bGxfYWNjZXNzX2dyb3VwLgBSZXRyeSB0aGUgc3RhdGVtZW50IHVzaW5nIGEgc2Vjb25kYXJ5IHN0b3JhZ2UgZW5naW5lLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQAQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5hcnkgbG9nIG1hc3RlciBrZXksIHRoZSBjb21iaW5hdGlvbiBvZiBuZXdfbWFzdGVyX2tleV9zZXFubz0ldSwgbWFzdGVyX2tleV9zZXFubz0ldSBhbmQgb2xkX21hc3Rlcl9rZXlfc2Vxbm89JXUgYXJlIHdyb25nLgBGYWlsZWQgdG8gcmVtb3ZlIGF1eGlsaWFyeSBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgY2xlYW51cCBvZiB0aGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHJvdGF0aW9uIHByb2Nlc3MgZGlkIG5vdCBmaW5pc2ggYXMgZXhwZWN0ZWQgYW5kIHRoZSBjbGVhbnVwIHdpbGwgdGFrZSBwbGFjZSB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGlzIHNldCBhcyBtYW5kYXRvcnlfcm9sZXMuIENhbm5vdCBncmFudCB0aGUgJyVzJyBwcml2aWxlZ2UuACclcycgcHJpdmlsZWdlIGZvciBkYXRhYmFzZSAnJXMnIGV4aXN0cyBib3RoIGFzIHBhcnRpYWwgcmV2b2tlIGFuZCBteXNxbC5kYiBzaW11bHRhbmVvdXNseS4gSXQgY291bGQgbWVhbiAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAEFjY2VzcyBkZW5pZWQgZm9yIEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgdG8gZGF0YWJhc2UgJyUtLjE5MnMnLgBBdCBsZWFzdCBvbmUgcGFydGlhbCByZXZva2UgZXhpc3RzIG9uIGEgZGF0YWJhc2UuIFRoZSBzeXN0ZW0gdmFyaWFibGUgJ0BAcGFydGlhbF9yZXZva2VzJyBtdXN0IGJlIHNldCB0byBPTi4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUdXJuaW5nIE9OIHRoZSBzeXN0ZW0gdmFyaWFibGUgJ0BAcGFydGlhbF9yZXZva2VzJy4ARm9yIHVzZXIgJyVzJ0AnJXMnLCBvbmUgb3IgbW9yZSBwcml2aWxlZ2VzIGdyYW50ZWQgdGhyb3VnaCBteXNxbC5kYiBmb3IgZGF0YWJhc2UgJyVzJywgY29uZmxpY3Qgd2l0aCBwYXJ0aWFsIHJldm9rZS4gSXQgY291bGQgbWVhbiAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAEZvciB1c2VyICVzLCBpZ25vcmVkIHJlc3RyaWN0aW9ucyBmb3IgcHJpdmlsZWdlKHMpICclcycgZm9yIGRhdGFiYXNlICclcycgYXMgdGhlc2UgYXJlIG5vdCB2YWxpZCBkYXRhYmFzZSBwcml2aWxlZ2VzLgBGb3IgdXNlciAlcywgaWdub3JlZCByZXN0cmljdGlvbnMgZm9yIHByaXZpbGVnZShzKSAnJXMnIGZvciBkYXRhYmFzZSAnJXMnIGFzIGNvcnJlc3BvbmRpbmcgZ2xvYmFsIHByaXZpbGVnZShzKSBhcmUgbm90IGdyYW50ZWQuACclcycgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9wcm90b2NvbF9qb2luLCBwbGVhc2UgdXNlIGEgTXlTUUwgdmVyc2lvbiBiZXR3ZWVuIDUuNy4xNCBhbmQgdGhpcyBzZXJ2ZXIncyB2ZXJzaW9uAFN0YXJ0ZWQgYXV0by1yZWpvaW4gcHJvY2VkdXJlIGF0dGVtcHQgJWx1IG9mICVsdQBUaW1lb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGEgdmlldyBjaGFuZ2UgZXZlbnQgZHVyaW5nIHRoZSBhdXRvLXJlam9pbiBwcm9jZWR1cmUAQXV0by1yZWpvaW4gcHJvY2VkdXJlIGF0dGVtcHQgJWx1IG9mICVsdSBmaW5pc2hlZC4gTWVtYmVyIHdhcyVzIGFibGUgdG8gam9pbiB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uIG9wdGlvbiB2YWx1ZSAnJWQnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJWQnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBTZXJ2ZXIgc2h1dHRpbmcgZG93biBiZWNhdXNlIHVwZ3JhZGUgaXMgcmVxdWlyZWQsIHlldCBwcm9oaWJpdGVkIGJ5IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICctLXVwZ3JhZGU9Tk9ORScuAFNlcnZlciB1cGdyYWRlIGlzIHJlcXVpcmVkLCBidXQgc2tpcHBlZCBieSBjb21tYW5kIGxpbmUgb3B0aW9uICctLXVwZ3JhZGU9TUlOSU1BTCcuAFNlcnZlciB1cGdyYWRlIHN0YXJ0ZWQgd2l0aCB2ZXJzaW9uICVkLCBidXQgc2VydmVyIHVwZ3JhZGUgb2YgdmVyc2lvbiAlZCBpcyBzdGlsbCBwZW5kaW5nLgBGYWlsZWQgdG8gdXBncmFkZSBzZXJ2ZXIuAFNlcnZlciB1cGdyYWRlIGZyb20gJyVkJyB0byAnJWQnICVzLgBUYWJsZSAnJXMnIHJlcXVpcmVzIHJlcGFpci4AVGFibGUgJyVzJyByZXBhaXIgJXMuAENvdWxkIG5vdCBvcGVuIHNlcnZlciB1cGdyYWRlIGluZm8gZmlsZSAnJXMnIGZvciB3cml0aW5nLiBQbGVhc2UgbWFrZSBzdXJlIHRoZSBmaWxlIGlzIHdyaXRhYmxlLgBVcGdyYWRpbmcgdGhlIHN5cyBzY2hlbWEuAFJ1bm5pbmcgcXVlcmllcyB0byB1cGdyYWRlIE15U1FMIHNlcnZlci4AVXBncmFkaW5nIHN5c3RlbSB0YWJsZSBkYXRhLgBGb3VuZCBlbXB0eSBzeXMgZGF0YWJhc2UuIEluc3RhbGxpbmcgdGhlIHN5cyBzY2hlbWEuAEEgc3lzIHNjaGVtYSBleGlzdHMgd2l0aCBubyBzeXMudmVyc2lvbiB2aWV3LiBJZiB5b3UgaGF2ZSBhIHVzZXIgY3JlYXRlZCBzeXMgc2NoZW1hLCB0aGlzIG11c3QgYmUgcmVuYW1lZCBmb3IgdGhlIHVwZ3JhZGUgdG8gc3VjY2VlZC4AQSBzeXMgc2NoZW1hIGV4aXN0cyB3aXRoIGEgc3lzLnZlcnNpb24gdmlldywgYnV0IGl0IHJldHVybnMgbm8gcmVzdWx0cy4ARm91bmQgb3V0ZGF0ZWQgc3lzIHNjaGVtYSB2ZXJzaW9uICVzLgBUaGUgc3lzIHNjaGVtYSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUgKHZlcnNpb24gJXMpLgBGb3VuZCAlZCBzeXMgJXMsIGJ1dCBleHBlY3RlZCAlZC4gUmUtaW5zdGFsbGluZyB0aGUgc3lzIHNjaGVtYS4AQ2hlY2tpbmcgJyVzJyBzY2hlbWEuAFRvbyBtYW55IGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zIHdoaWxlIGNsZWFyaW5nIHRoZSBEREwgTG9nLiBQbGVhc2UgaW5jcmVhc2UgdGhlIG51bWJlciBvZiBSb2xsYmFjayBTZWdtZW50cy4ARXJyb3IgaW4gRERMIExvZyByZWNvdmVyeSBkdXJpbmcgUG9zdC1SZWNvdmVyeSBwcm9jZXNzaW5nLgBFcnJvciBpbiBQb3N0LVRhYmxlc3BhY2UtRW5jcnlwdGlvbiBkdXJpbmcgUG9zdC1SZWNvdmVyeSBwcm9jZXNzaW5nLgBFcnJvciBpbiBETEwgTG9nIGNsZWFudXAgZHVyaW5nIFBvc3QtRERMIHByb2Nlc3NpbmcuACclcycgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gZnVuY3Rpb24gdGhhdCBtYXkgcmV0dXJuIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBVcGdyYWRlIG9mIGhlbHAgdGFibGVzICVzLgBFcnJvciB3aGVuIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gZXhlY3V0ZSBsb2NhbCB0cmFuc2FjdGlvbnMgaW4gb3JkZXIgYXNzdXJlIHRoZSBncm91cCBjaGFuZ2UgcHJvcGVyIGxvZ2dpbmcAVW5hYmxlIHRvIGxvZyB0aGUgZ3JvdXAgY2hhbmdlIFZpZXcgbG9nIGV2ZW50IGluIGl0cyBleGFjdGlvbiBwb3NpdGlvbiBpbiB0aGUgbG9nLiBUaGlzIHdpbGwgbm90IGhvd2V2ZXIgYWZmZWN0IHRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBwcm9jZXNzIG9yIHRoZSBvdmVyYWxsIHBsdWdpbiBwcm9jZXNzLgBDYW5ub3QgZ3JhbnQgcm9sZXMgdG8gYW4gYW5vbnltb3VzIHVzZXIuAFVuYWJsZSB0byBjcmVhdGUgYSBuZXcgYmlubG9nIGZpbGU6IFRhYmxlIGBteXNxbC5ndGlkX2V4ZWN1dGVkYCBjb3VsZG4ndCBiZSBvcGVuZWQuICVzAE5ldHdvcmsgTmFtZXNwYWNlcyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0AVW5rbm93biBuZXR3b3JrIG5hbWVzcGFjZSAnJXMnAE5ldHdvcmsgbmFtZXNwYWNlIG5vdCBhbGxvd2VkIGZvciB3aWxkY2FyZCBpbnRlcmZhY2UgYWRkcmVzcwBzZXRucygpIGZhaWxlZCB3aXRoIGVycm9yICclcycAV2lsZGNhcmQgYWRkcmVzcyB2YWx1ZSBub3QgYWxsb3dlZCBmb3IgbXVsdGl2YWx1ZWQgYmluZCBhZGRyZXNzAFRoZSBwYXRoIHRvIGEgc3BlY2lhbCBuZXR3b3JrIG5hbWVzcGFjZSBmaWxlIGlzIHRvbyBsb25nLiAoZ290ICV1ID4gbWF4ICV1KQBDYW5ub3QgY3JlYXRlIHRhYmxlc3BhY2UgJyVzJy4gVGhlIGZpbGVwYXRoIGlzIHRvbyBsb25nIGZvciB0aGlzIE9TLgBUaGUgbGFzdCBibG9jayBvZiByZWRvIGhhZCBjb3JydXB0ZWQgZmlyc3RfcmVjX2dyb3VwIGFuZCBiZWNhbWUgZml4ZWQgKCV1IC0+ICV1KS4ARGF0YSBkaWN0aW9uYXJ5IHVwZ3JhZGUgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1JyBjb21wbGV0ZWQuAFNlcnZlciBTU0wgY2VydGlmaWNhdGUgZG9lc24ndCB2ZXJpZnk6ICVzAFRydW5jYXRlZCBhIHVzZXIgbmFtZSBmb3IgJXMgdGhhdCB3YXMgdG9vIGxvbmcgd2hpbGUgcmVhZGluZyB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlcyBmaWxlAFRydW5jYXRlZCBhIGhvc3QgbmFtZSBmb3IgJXMgdGhhdCB3YXMgdG9vIGxvbmcgd2hpbGUgcmVhZGluZyB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlcyBmaWxlAFRoZSB3YWl0X3RpbWVvdXQgcGVyaW9kIHdhcyBleGNlZWRlZCwgdGhlIGlkbGUgdGltZSBzaW5jZSBsYXN0IGNvbW1hbmQgd2FzIHRvbyBsb25nLgAnJXMnIGZvdW5kIG5vdCBlbmNyeXB0ZWQgd2hpbGUgJyVzJyBpcyBPTi4gVHJ5aW5nIHRvIGVuY3J5cHQgaXQgbm93LgBDTE9DS19NT05PVE9OSUMgaXMgdW5zdXBwb3J0ZWQsIHNvIGRvIG5vdCBjaGFuZ2UgdGhlIHN5c3RlbSB0aW1lIHdoZW4gTXlTUUwgaXMgcnVubmluZyAhAGNsb2NrX2dldHRpbWUoKSBmYWlsZWQ6ICVzANCf0YDQuNGB0YLQsNCy0LrQsNGC0LAgJyVzJyDQvdC1INC80L7QttC1INC00LAg0YHQtSDQuNC30L/QvtC70LfQstCwINC60LDRgtC+INGA0LDQvdC90LAg0L/RgNC40YHRgtCw0LLQutCwLiDQndC1INGPINC00L7QsdCw0LLQsNC50YLQtSDQsiAtLWVhcmx5LXBsdWdpbi1sb2FkINC4INGCLtC9LgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IGluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gaW5zdGFsbCBpdC4AU1FMX0NBTENfRk9VTkRfUk9XUyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgdHdvIHNlcGFyYXRlIHF1ZXJpZXMgaW5zdGVhZC4ARk9VTkRfUk9XUygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBDT1VOVCgqKSBpbnN0ZWFkLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGludm9rZXMgYSB0cmlnZ2VyIG9yIGEgc3RvcmVkIGZ1bmN0aW9uIHRoYXQgbW9kaWZpZXMgYSB0YWJsZSB0aGF0IGhhcyBhIGNvbHVtbiB3aXRoIGEgREVGQVVMVCBleHByZXNzaW9uIHRoYXQgbWF5IHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4ATWVtYmVyIHZlcnNpb24gaXMgcmVhZCBjb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwLgBMb2NrIG9yZGVyIGRpc2FibGVkIChyZWFzb246IGluaXQgZmFpbGVkKS4AS2V5cmluZyBJRCB0aW1lc3RhbXAgdmFsdWUgaXMgaW52YWxpZDogJyVzJwBDYW5ub3QgcHJvY2VzcyBhdWRpdCBsb2cgZmlsZS4gRmlsZSBuYW1lIHRpbWVzdGFtcCB2YWx1ZSBpcyBtaXNzaW5nIG9yIGludmFsaWQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGZvcm1hdDogJyVzJwBDYW5ub3QgcHJvY2VzcyBhdWRpdCBsb2cgZmlsZS4gRmlsZSBuYW1lIGtleXJpbmcgSUQgdmFsdWUgaXMgbWlzc2luZzogJyVzJwBBdWRpdCBsb2cgZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkOiAnJXMnAENvdWxkIG5vdCBvcGVuIGF1ZGl0IGxvZyBmaWxlIGZvciByZWFkaW5nOiAnJXMnAEludmFsaWQgYXVkaXQgbG9nIGZpbGUgY29udGVudDogJyVzJwBDYW5ub3QgcmVhZCBwYXNzd29yZDogJyUuMzJzJy4AQ2Fubm90IHN0b3JlIHBhc3N3b3JkOiAnJS4zMnMnLgBDYW5ub3QgcmVtb3ZlIHBhc3N3b3JkOiAnJS4zMnMnLgAnYXVkaXRfbG9nJyBwYXNzd29yZCBoYXMgYmVlbiBjb3BpZWQgaW50byAnJS4zMnMnIGFuZCB3aWxsIGJlIHJlbW92ZWQgd2l0aCBmaXJzdCBwdXJnZWQgcGFzc3dvcmQuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyUuNjRzJ0AnJS42NHMnLiBSb2xlIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbjogJyUuMzJzJwBDYW4ndCBzdG9yZSBhbiBhcnJheSBvciBhbiBvYmplY3QgaW4gYSBzY2FsYXIga2V5IHBhcnQgb2YgdGhlIGluZGV4ICclLjE5MnMnAENhbm5vdCB1c2UgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbgBFeGNlZWRlZCBtYXggbnVtYmVyIG9mIHZhbHVlcyBwZXIgcmVjb3JkIGZvciBtdWx0aS12YWx1ZWQgaW5kZXggJyUtLjY0cycgYnkgJXUgdmFsdWUocykARXhjZWVkZWQgbWF4IHRvdGFsIGxlbmd0aCBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IGJ5dGVzAERhdGEgdG9vIGxvbmcgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycASW52YWxpZCBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAE91dCBvZiByYW5nZSBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAEVtcHR5IHVzZXIgZG4gb3IgcGFzc3dvcmQgaXMgbm90IGFsbG93ZWQsIG5vdCBhdHRlbXB0aW5nIExEQVAgYmluZC4AR3JvdXBpbmcgb24gdGVtcG9yYWwgaXMgbm9uLWRldGVybWluaXN0aWMgZm9yIHRpbWV6b25lcyBoYXZpbmcgRFNULiBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIHRvIFVUQyBmb3IgdGhpcyBxdWVyeS4AVGhlIGN1cnJlbnQgbGF5b3V0IG9mIHRoZSBBQ0wgdGFibGVzIGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIHNlcnZlcidzIGV4cGVjdGVkIGxheW91dC4gVGhleSdyZSBlaXRoZXIgYWx0ZXJlZCwgbWlzc2luZyBvciBub3QgdXBncmFkZWQgZnJvbSBhIHByZXZpb3VzIHZlcnNpb24uIEhvd2V2ZXIgYSBiZXN0IGVmZm9ydCBhdHRlbXB0IHRvIHJlYWQgZGF0YSBmcm9tIHRoZXNlIHRhYmxlcyB3aWxsIHN0aWxsIGJlIG1hZGUuAExPQ0tfT1JERVI6IEZhaWxlZCB0byB3cml0ZSB0byBmaWxlIDwlcz4uAExPQ0tfT1JERVI6IEZhaWxlZCB0byByZWFkIGZyb20gZmlsZSA8JXM+LgBMT0NLX09SREVSIG1lc3NhZ2U6ICVzAExvY2sgb3JkZXIgZGVwZW5kZW5jaWVzIGZpbGUgPCVzPiAoJWQ6JWQpIC0gKCVkOiVkKSA6ICVzAExvY2sgb3JkZXIgc2Nhbm5lcjogKCVkOiVkKSAtICglZDolZCkgOiAlcwDQndC+0LLQvtGB0YrQt9C00LDQtNC10L3QsNGC0LAg0L7RgiAtLWluaXRpYWxpemUg0L/QsNC/0LrQsCDQt9CwINCx0LDQt9Cw0YLQsCAlcyDQtSDQvdC10LjQt9C/0L7Qu9C30LLQsNC10LzQsC4g0JzQvtC20LXRgtC1INC00LAg0Y8g0LjQt9GC0YDQuNC10YLQtS4ATm8uIG9mIEItdHJlZSBsZXZlbCBjcmVhdGVkIGZvciBpbmRleCAlcyBoYXMgY3Jvc3NlZCB0aGUgcGVybWlzc2libGUgbGltaXQuIElmIGRlYnVnIG9wdGlvbiBpbm5vZGJfbGltaXRfb3B0aW1pc3RpY19pbnNlcnRfZGVidWcgaXMgYmVpbmcgdXNlZCB0cnkgdHdlYWtpbmcgaXQgdG8gaW5jbHVkZSBtb3JlIHJlY29yZHMgaW4gYSBwYWdlLgAlcwAlcwAlcwBDbG9uZSByZW1vdmluZyBhbGwgdXNlciBkYXRhIGZvciBwcm92aXNpb25pbmc6ICVzAE5vbiBpbm5vZGIgdGFibGU6ICVzLiVzIGlzIG5vdCBjbG9uZWQgYW5kIGlzIGVtcHR5LgBDbG9uZSBzaHV0dGluZyBkb3duIHNlcnZlciBhcyBSRVNUQVJUIGZhaWxlZC4gUGxlYXNlIHN0YXJ0IHNlcnZlciB0byBjb21wbGV0ZSBjbG9uZSBvcGVyYXRpb24uAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciBHVElEIHB1cmdlZCBzZXQuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIGNvbmZpZ3VyaW5nIHRoZSByZW1vdGUgY2xvbmluZyBwcm9jZXNzOiAlcwBUaGVyZSB3YXMgYW4gaXNzdWUgd2hlbiBjbG9uaW5nIGZyb20gYW5vdGhlciBzZXJ2ZXI6ICVzAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIHRyeWluZyB0byBldmFsdWF0ZSB0aGUgYmVzdCBkaXN0cmlidXRlZCByZWNvdmVyeSBzdHJhdGVneSB3aGlsZSBqb2luaW5nLiVzAE5vIHZhbGlkIG9yIE9OTElORSBtZW1iZXJzIGV4aXN0IHRvIGdldCB0aGUgbWlzc2luZyBkYXRhIGZyb20gdGhlIGdyb3VwLiBGb3IgY2xvbmluZyBjaGVjayBpZiBkb25vcnMgb2YgdGhlIHNhbWUgdmVyc2lvbiBhbmQgd2l0aCBjbG9uZSBwbHVnaW4gaW5zdGFsbGVkIGV4aXN0LiBGb3IgaW5jcmVtZW50YWwgcmVjb3ZlcnkgY2hlY2sgaWYgeW91IGhhdmUgZG9ub3JzIHdoZXJlIHRoZSByZXF1aXJlZCBkYXRhIHdhcyBub3QgcHVyZ2VkIGZyb20gdGhlIGJpbmFyeSBsb2dzLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gcGx1Z2luIGNvdWxkIG5vdCBraWxsIHRoZSBwbHVnaW4gcm91dGluZSBmb3IgJXMuICVzAFRoaXMgbWVtYmVyIHdpbGwgc3RhcnQgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgdXNpbmcgY2xvbmUuIEl0IGlzIGR1ZSB0byB0aGUgbnVtYmVyIG9mIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGJlaW5nIGhpZ2hlciB0aGFuIHRoZSBjb25maWd1cmVkIHRocmVzaG9sZCBvZiAlbGx1LgBUaGlzIG1lbWJlciB3aWxsIHN0YXJ0IGRpc3RyaWJ1dGVkIHJlY292ZXJ5IHVzaW5nIGNsb25lLiBJdCBpcyBkdWUgdG8gbm8gT05MSU5FIG1lbWJlciBoYXMgdGhlIG1pc3NpbmcgZGF0YSBmb3IgcmVjb3ZlcmluZyBpbiBpdHMgYmluYXJ5IGxvZ3MuAERpc3RyaWJ1dGVkIHJlY292ZXJ5IHdpbGwgdHJhbnNmZXIgZGF0YSB1c2luZzogJXMARHVlIHRvIHNvbWUgaXNzdWUgb24gdGhlIHByZXZpb3VzIHN0ZXAgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgaXMgbm93IGV4ZWN1dGluZzogJXMARHVlIHRvIGEgY3JpdGljYWwgY2xvbmluZyBlcnJvciBvciBsYWNrIG9mIGRvbm9ycywgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgY2Fubm90IGJlIGV4ZWN1dGVkLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AVGhlICclcycgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGUgc2VydmVyIHdpbGwgYXR0ZW1wdCB0byBjbG9uZSBhbm90aGVyIHNlcnZlcgBVbmtub3duIHRhYmxlICclLS4xMjlzJwBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBwYXRoIGxlbmd0aCBleGNlZWRpbmcgJWQgY2hhcmFjdGVycy4gUGF0aDogJyVzJy4AWEE6IEZhaWxlZCB0byB0YWtlIE1ETCBMb2NrIGJhY2t1cCBvZiBQUkVQQVJFRCBYQSB0cmFuc2FjdGlvbiBkdXJpbmcgY2xpZW50IGRpc2Nvbm5lY3QuAFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIHJlcXVpcmVkIGZvciAnJXMnQCclcycgdXNlci4ASW52YWxpZCBhcmd1bWVudCB0eXBlAEludmFsaWQgYXJndW1lbnQgY291bnQAYXVkaXRfbG9nIHBsdWdpbiBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHVzaW5nIElOU1RBTEwgUExVR0lOIHN5bnRheC4ASW52YWxpZCAibWF4X2FycmF5X2xlbmd0aCIgYXJndW1lbnQgdHlwZS4ARmFpbGVkIHRvIHdyaXRlIHRvICVzOiAlcyAoJXMpAFVwZ3JhZGluZyBmcm9tIHNlcnZlciB2ZXJzaW9uICVkIHdpdGggcGFydGl0aW9uZWQgdGFibGVzIGFuZCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID09IDEgb24gYSBjYXNlIHNlbnNpdGl2ZSBmaWxlIHN5c3RlbSBtYXkgY2F1c2UgaXNzdWVzLCBhbmQgaXMgdGhlcmVmb3JlIHByb2hpYml0ZWQuIFRvIHVwZ3JhZGUgYW55d2F5LCByZXN0YXJ0IHRoZSBuZXcgc2VydmVyIHZlcnNpb24gd2l0aCB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAndXBncmFkZT1GT1JDRScuIFdoZW4gdXBncmFkZSBpcyBjb21wbGV0ZWQsIHBsZWFzZSBleGVjdXRlICdSRU5BTUUgVEFCTEUgPHBhcnRfdGFibGVfbmFtZT4gVE8gPG5ld190YWJsZV9uYW1lPjsgUkVOQU1FIFRBQkxFIDxuZXdfdGFibGVfbmFtZT4gVE8gPHBhcnRfdGFibGVfbmFtZT47JyBmb3IgZWFjaCBvZiB0aGUgcGFydGl0aW9uZWQgdGFibGVzLiBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgBJbmNvcnJlY3QgZW52aXJvbm1lbnQgdmFyaWFibGUgJXMsIGludmFsaWQgcG9ydDogJXMAVGhlIHNlcnZlciB3YXMgYXV0b21hdGljYWxseSBzZXQgaW50byBvZmZsaW5lIG1vZGUgYWZ0ZXIgYW4gZXJyb3Igd2FzIGRldGVjdGVkLgBBIG1lc3NhZ2Ugc2VudCB0aHJvdWdoIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBtZXNzYWdlIGRlbGl2ZXIgc2VydmljZSB3YXMgbm90IGRlbGl2ZXJlZCBzdWNjZXNzZnVsbHkuIFRoZSBzZXJ2ZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLiBUcnkgdG8gYWRkIHRoZSBzZXJ2ZXIgYmFjayB0byB0aGUgZ3JvdXAgYW5kIGNoZWNrIGlmIHRoZSBwcm9ibGVtIHBlcnNpc3RzLCBvciBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgbG9nIGZvciBoaW50cyBvZiB3aGF0IGNvdWxkIGJlIHRoZSBwcm9ibGVtLgBJbnZhbGlkIFNPVVJDRV9DT01QUkVTU0lPTl9BTEdPUklUSE1TICclLjE5MnMnIGZvdW5kIGluIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFJlc2V0dGluZyB0byAndW5jb21wcmVzc2VkJyAobm8gY29tcHJlc3Npb24pLgBJbnZhbGlkIFNPVVJDRV9aU1REX0NPTVBSRVNTSU9OX0xFVkVMIGZvdW5kIGluIHJlcG9zaXRvcnkgZm9yIGNoYW5uZWwgJyUuMTkycycuIFJlc2V0dGluZyB0byAldS4AT3B0aW9uIC0tcHJvdG9jb2wtY29tcHJlc3Npb24tYWxnb3JpdGhtcyBpcyByZXNldCB0byBkZWZhdWx0IHZhbHVlLgBGYXRhbCBlcnJvciB3aGlsZSBjb21wcmVzc2luZyBvdXRnb2luZyBkYXRhIC0gJXMAJXMAVW5rbm93biBrZXlyaW5nX2F3c19yZWdpb24gJyUuMTkycycuIENvbm5lY3Rpb24gdG8gQVdTIEtNUyBtYXkgZmFpbC4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgaXMgbm90IGFuIGV4aXN0aW5nIHVzZXIuIENvcnJlY3QgdGhpcyBiZWZvcmUgc3RhcnRpbmcgcmVwbGljYXRpb24gdGhyZWFkcy4ASW52YWxpZCwgY29ycnVwdGVkIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB3YXMgZm91bmQgaW4gdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gVXNlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gUFJJVklMRUdFX0NIRUNLU19VU0VSIHRvIGNvcnJlY3QgdGhlIGNvbmZpZ3VyYXRpb24uAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIHVzZXIgZG9lcyBub3QgaGF2ZSBSRVBMSUNBVElPTl9BUFBMSUVSIHByaXZpbGVnZS4gQ29ycmVjdCB0aGlzIGJlZm9yZSBzdGFydGluZyB0aGUgcmVwbGljYXRpb24gdGhyZWFkcy4AVGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3b3VsZCBuZWVkIEZJTEUgcHJpdmlsZWdlIHRvIGV4ZWN1dGUgYSBMT0FEIERBVEEgSU5GSUxFIHN0YXRlbWVudCByZXBsaWNhdGVkIGluIHN0YXRlbWVudCBmb3JtYXQuIENvbnNpZGVyIHVzaW5nIGJpbmxvZ19mb3JtYXQ9Uk9XIG9uIHNvdXJjZS4gSWYgdGhlIHJlcGxpY2F0ZWQgZXZlbnRzIGFyZSB0cnVzdGVkLCByZWNvdmVyIGZyb20gdGhlIGZhaWx1cmUgYnkgdGVtcG9yYXJpbHkgZ3JhbnRpbmcgRklMRSB0byB0aGUgUFJJVklMRUdFX0NIRUNLU19VU0VSLgBSZXBsaWNhIFNRTCB0aHJlYWQlcyBpbml0aWFsaXplZCwgc3RhcnRpbmcgcmVwbGljYXRpb24gaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMsIHJlbGF5IGxvZyAnJXMnIHBvc2l0aW9uOiAlcywgdXNlcjogJyUuNjRzJ0AnJS4yNTVzJywgcm9sZXM6ICUuNTEycwBDYW5ub3QgZ2VuZXJhdGUgcGFzc3dvcmQ6ICclLjMycycARmFpbGVkIHRvIGdlbmVyYXRlIGEgcmFuZG9tIHBhc3N3b3JkIGZvciByb290LiBQcm9iYWJhYmx5IG5vdCBlbm91Z2ggZW50aHJvcHkuAElnbm9yaW5nIC0tcGx1Z2luLWxvYWRbX2FkZF0gbGlzdCBhcyB0aGUgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCAtLWluaXRpYWxpemUoLWluc2VjdXJlKS4AQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLiBBdXRoSWQocykgc2V0IGluIHRoZSBtYW5kYXRvcnlfcm9sZXMgYXJlIGlnbm9yZWQuAERpcmVjdG9yeSAnJXMnIHdpbGwgbm90IGJlIHNjYW5uZWQgYmVjYXVzZSBpdCBpcyBhIGhpZGRlbiBkaXJlY3RvcnkuAFNlcnZlciB3YXMgbm90IGFibGUgdG8gZmluZCBhIHJvdGF0ZSBldmVudCBmcm9tIHNvdXJjZSBzZXJ2ZXIgdG8gaW5pdGlhbGl6ZSByZWxheSBsb2cgcmVjb3ZlcnkgZm9yIGNoYW5uZWwgJyVzJy4gU2tpcHBpbmcgcmVsYXkgbG9nIHJlY292ZXJ5IGZvciB0aGUgY2hhbm5lbC4AUm9sbGluZyBiYWNrIExPQiBmb3IgdHJhbnNhY3Rpb24gJWxsdSB1bmRvIG51bWJlciAlbGx1IDogY3VycmVudCBpbmRleCBsZW5ndGggJWxsdS4gKGl0ZXJhdGlvbiAlbGx1KQBFcnJvciBpbiBwcm9jZXNzaW5nIChwb3NzaWJseSBkZXByZWNhdGVkKSBleHByZXNzaW9uIG9yIGZ1bmN0aW9uICclLjEyOHMnIGZvciBnZW5lcmF0ZWQgY29sdW1uICUuNjRzLiUuNjRzLiUuNjRzAFRoZSBxdWV1ZSBldmVudCBmYWlsZWQgZm9yIGNoYW5uZWwgJyVzJyBhcyBhbiBpbnZhbGlkIGV2ZW50IGFjY29yZGluZyB0byBSRVFVSVJFX1JPV19GT1JNQVQgd2FzIGZvdW5kLgBUaGUgYXBwbGljYXRpb24gb2YgcmVsYXkgZXZlbnRzIGZhaWxlZCBmb3IgY2hhbm5lbCAnJXMnIGFzIGFuIGludmFsaWQgZXZlbnQgYWNjb3JkaW5nIHRvIFJFUVVJUkVfUk9XX0ZPUk1BVCB3YXMgZm91bmQuAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBjYW4ndCBiZSBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCB1bmxlc3MgUkVRVUlSRV9ST1dfRk9STUFUIGlzIGFsc28gc2V0IHRvICVkLgBBbiB1bmV4cGVjdGVkIGV2ZW50IHNlcXVlbmNlIHdhcyBkZXRlY3RlZCBieSB0aGUgU1FMIHRocmVhZCB3aGlsZSBhcHBseWluZyBhbiBldmVudC4AVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgYW5kIGFsbCBvdGhlciBwYXJ0aXRpb24gZmlsZXMgZHVyaW5nIHVwZ3JhZGUAVXBkYXRpbmcgcGFydGl0aW9uIGZpbGUgbmFtZSAnJXMnIHRvICclcycgYW5kIGFsbCBvdGhlciBwYXJ0aXRpb24gZmlsZXMgZHVyaW5nIGRvd25ncmFkZQBVcGRhdGluZyBwYXJ0aXRpb24gZmlsZSBuYW1lICclcycgdG8gJyVzJyBmb3IgaW1wb3J0AFVuYWJsZSB0byBvcGVuIHBhcnRpdGlvbiBmaWxlIHdpdGggbmV3IG5hbWUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGlubm9kYl9kaXJlY3RvcmllcyBpcyBzZXQgdG8gaW5jbHVkZSBhbGwgZXh0ZXJuYWwgZmlsZSBwYXRocwAlcyBERCBJRDogJWxsdSAtIFBhcnRpdGlvbiB0YWJsZXNwYWNlICV1LCBuYW1lICclcycgaXMgY29ycmVjdGVkIHRvICclcycAJXMgREQgSUQ6ICVsbHUgLSBUYWJsZXNwYWNlICV1LCBuYW1lICclcycsICclcycgaXMgbW92ZWQgdG8gJyVzJwAlcyBERCBJRDogJWxsdSAtIFBhcnRpdGlvbiB0YWJsZXNwYWNlICV1LCBuYW1lICclcycsICclcycgaXMgdXBkYXRlZCB0byAnJXMnACVzIFRvbyBtYW55IGZpbGVzIGhhdmUgYmVlbiBtb3ZlZCwgZGlzYWJsaW5nIGxvZ2dpbmcgb2YgZGV0YWlsZWQgbWVzc2FnZXMARWxlY3RlZCBwcmltYXJ5IG1lbWJlciAlczogJXMAU2NoZW1hIG5hbWUgJyVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBpcyBub3QgYWxsb3dlZCB3aXRoIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxLgBUYWJsZSBuYW1lICclcy4lcycgY29udGFpbmluZyB1cHBlciBjYXNlIGNoYXJhY3RlcnMgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AU2NoZW1hIG5hbWUgJyVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycywgdXNlZCBieSBmb3JlaWduIGtleSAnJXMnIGluIHRhYmxlICclcy4lcycsIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIG5hbWUgJyVzLiVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycywgdXNlZCBieSBmb3JlaWduIGtleSAnJXMnIGluIHRhYmxlICclcy4lcycsIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIFBhcnRpdGlvbjogJXMgaXMgbm90IGZvdW5kIGluIElubm9EQiBkaWN0aW9uYXJ5AEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgYmxvY2tlZCBmb3IgJXMgZGF5KHMpICglcyBkYXkocykgcmVtYWluaW5nKSBkdWUgdG8gJXUgY29uc2VjdXRpdmUgZmFpbGVkIGxvZ2lucy4gVXNlIEZMVVNIIFBSSVZJTEVHRVMgb3IgQUxURVIgVVNFUiB0byByZXNldC4AJXMAVXBncmFkZSBjYW5ub3QgcHJvY2VlZCBkdWUgdG8gYW4gZXhpc3RpbmcgcHJlcGFyZWQgWEEgdHJhbnNhY3Rpb24uAENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGtleV9pbmZvIHdoZW4gbWlncmF0aW5nIHRhYmxlICVzLiVzAEFwcGxpZXIgbWV0YWRhdGEgaW5mb3JtYXRpb24gZm9yIGNoYW5uZWwgJyVzJyB3YXMgZm91bmQgYWZ0ZXIgYSBjbG9uZSBvcGVyYXRpb24uIFJlbGF5IGxvZyByZWNvdmVyeSB3aWxsIGJlIGV4ZWN1dGVkIHRvIGFkanVzdCBwb3NpdGlvbnMgYW5kIGZpbGUgaW5mb3JtYXRpb24gZm9yIHRoaXMgbmV3IHNlcnZlci4gU2hvdWxkIHRoYXQgYXV0b21hdGljIHByb2NlZHVyZSBmYWlsIHBsZWFzZSBhZGp1c3QgdGhlIHBvc2l0aW9ucyB0aHJvdWdoICdDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPJwBGYWlsZWQgdG8gZGVsZXRlIDUuNyB1bmRvIHRhYmxlc3BhY2U6ICVzIGR1cmluZyB1cGdyYWRlAEVtcHR5IGRvdWJsZXdyaXRlIGZpbGU6ICVzAFVzaW5nICclcycgZm9yIGRvdWJsZXdyaXRlAEVycm9yIHJlYWRpbmcgZG91Ymxld3JpdGUgYnVmZmVyIGZyb20gdGhlIHN5c3RlbSB0YWJsZXNwYWNlAENhbm5vdCBjcmVhdGUgZG91Ymxld3JpdGUgYnVmZmVyOiB5b3UgbXVzdCBpbmNyZWFzZSB5b3VyIGJ1ZmZlciBwb29sIHNpemUuIENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uAFRoZSBwYWdlIGluIHRoZSBkb3VibGV3cml0ZSBmaWxlIGlzIGNvcnJ1cHQuIENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uIFlvdSBjYW4gdHJ5IHRvIHJlY292ZXIgdGhlIGRhdGFiYXNlIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTYAVGhlIGRvdWJsZXdyaXRlIGZpbGVuYW1lICclcycgaXMgaW5jb3JyZWN0LgAlcwBEb3VibGV3cml0ZSBmaWxlIGNyZWF0ZSBmYWlsZWQ6ICVzAERCTFdSVGhyZWFkOiBwdGhyZWFkX3NldGFmZmluaXR5KCkgZmFpbGVkIQAlcwAlcwBEb3VibGV3cml0ZSBmaWxlIHJlYWQgZmFpbGVkOiAlcwBEdW1wIG9mIHRoZSBkYXRhIGZpbGUgcGFnZToAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMARG91Ymxld3JpdGUgbG9hZCBmaWxlICVzIHNpemUgJWx1IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBjb25maWd1cmVkIHBhZ2Ugc2l6ZSAlbHUiAERvdWJsZXdyaXRlIGZpbGUgJXMgdHJ1bmNhdGUgZmFpbGVkAERvdWJsZXdyaXRlIGZpbGUgJXMgZmFpbGVkIHRvIHdyaXQgemVyb3MARG91Ymxld3JpdGUgY3JlYXRlIGZpbGUgJXMgc2l6ZSAlbHUgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGNvbmZpZ3VyZWQgcGFnZSBzaXplICVsdSIAJXMAJXMAJXMAJXMAJXMAQ291bGQgbm90IGZsdXNoIGFsbCBHVElEcyBkdXJpbmcgc2xvdyBzaHV0ZG93bi4gV2lsbCByZWNvdmVyIEdUSURzIHdoZW4gc2VydmVyIHJlc3RhcnRzLgBGYWlsZWQgdG8gZGVsZXRlIDUuNyBzdGF0IHRhYmxlc3BhY2U6ICVzIGR1cmluZyB1cGdyYWRlAEluc3RhbGxpbmcgbmRiaW5mbyBzY2hlbWEgdmVyc2lvbiAlcwBJbnN0YWxsZWQgbmRiaW5mbyBzY2hlbWEgaXMgY3VycmVudC4gTm90IHVwZ3JhZGluZy4ARmFpbGVkIHRvIHVwZ3JhZGUgbmRiaW5mbyBzY2hlbWEuACVzAElubm9EQiBpbml0aWFsaXphdGlvbiBoYXMgc3RhcnRlZC4ASW5ub0RCIGluaXRpYWxpemF0aW9uIGhhcyBlbmRlZC4AQ291bGQgbm90IGZpbmQgYXBwcm9wcmlhdGUgcmVzZXQgcG9pbnRzLgBVbmFibGUgdG8gZmx1c2guIFBhZ2UgYXJjaGl2aW5nIGRhdGEgbWF5IGJlIGNvcnJ1cHQgaW4gY2FzZSBvZiBhIGNyYXNoLgBQYWdlIGFyY2hpdmVyJ3MgZG91Ymxld3JpdGUgYnVmZmVyIGZvciAlbGQgaXMgbm90IHZhbGlkLgBQYWdlIGFyY2hpdmVyIHN5c3RlbSdzIHJlY292ZXJ5IGZhaWxlZC4ASW52YWxpZCBhcmNoaXZlZCBmaWxlIG5hbWUgZm9ybWF0LiBUaGUgYXJjaGl2ZWQgZmlsZSBpcyBzdXBwb3NlZCB0byBoYXZlIHRoZSBmb3JtYXQgJXMgKyBbMC05XSouAFggUGx1Z2lucyBVTklYIHNvY2tldCBtdXN0IHVzZSBkaWZmZXJlbnQgZmlsZSB0aGFuIE15U1FMIHNlcnZlci4gWCBQbHVnaW4gd29uJ3QgYmUgYWNjZXNzaWJsZSB0aHJvdWdoIFVOSVggc29ja2V0ACVzAENvbHVtbiAnJS42NHMuJS42NHMuJS42NHMnIGhhdmluZyBwcmVmaXgga2V5IHBhcnQgJyUuNjRzKCV1KScgaXMgaWdub3JlZCBieSB0aGUgcGFydGl0aW9uaW5nIGZ1bmN0aW9uLiBVc2Ugb2YgcHJlZml4ZWQgY29sdW1ucyBpbiB0aGUgUEFSVElUSU9OIEJZIEtFWSgpIGNsYXVzZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVW5kbyBUcnVuY2F0aW9uIGlzIG9jY3VycmluZyB0b28gb2Z0ZW4uIENvbnNpZGVyIGluY3JlYXNpbmcgLS1pbm5vZGItbWF4LXVuZG8tbG9nLXNpemUuAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGlzIHN0YXJ0aW5nLgBDYW5ub3QgY3JlYXRlIHRhYmxlc3BhY2UgJXMgYmVjYXVzZSB0aGUgZGlyZWN0b3J5IGlzIG5vdCBhIHZhbGlkIGxvY2F0aW9uLiAlcwBTY2FubmVkIGZpbGUgJyVzJyBmb3IgdGFibGVzcGFjZSAlcyBjYW5ub3QgYmUgb3BlbmVkIGJlY2F1c2UgaXQgaXMgbm90IGluIGEgc3ViLWRpcmVjdG9yeSBuYW1lZCBmb3IgdGhlIHNjaGVtYS4AQ2Fubm90IGZpbmQgdW5kbyB0YWJsZXNwYWNlICVzIHdpdGggZmlsZW5hbWUgJyVzJyBhcyBpbmRpY2F0ZWQgYnkgdGhlIERhdGEgRGljdGlvbmFyeS4gRGlkIHlvdSBtb3ZlIG9yIGRlbGV0ZSB0aGlzIHRhYmxlc3BhY2U/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.82 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).