REDROOM
PHP 7.4.33
Path:
Logout
Edit File
Size: 380.35 KB
Close
//usr/share/mysql-8.0/french/errmsg.sys
Text
Base64
/v4DAQEAb5UFAPUWAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAABAAAAAUAAAAGAAAAE8AAACEAAAAtgAAAOsAAAAgAQAAUwEAAJEBAADCAQAA9gEAADACAABtAgAAnwIAANcCAAAQAwAATAMAAI0DAADZAwAALQQAAG4EAACkBAAA3gQAABwFAABXBQAAigUAAKcFAADbBQAAEAYAAEYGAAB2BgAApwYAAOcGAAAjBwAARgcAAJgHAADGBwAABwgAABoIAAA3CAAAZggAAHoIAADACAAACQkAAC4JAABACQAAbQkAAIUJAACmCQAAvwkAAOgJAAADCgAAKAoAAEwKAABoCgAArQoAANQKAAAHCwAALgsAAFQLAACBCwAAtQsAANkLAADoCwAACgwAADUMAABZDAAAkwwAANMMAAACDQAALw0AAGkNAAChDQAA3w0AACMOAABBDgAAZQ4AAIUOAADJDgAA8Q4AAE8PAACIDwAA7Q8AAEAQAABjEAAArxAAANMQAAA0EQAAgREAALkRAADyEQAANRIAAFQSAACIEgAAnxIAANESAAANEwAAUhMAAIkTAAC8EwAA5xMAAAgUAACtFAAAvRQAANkUAAARFQAAPhUAAGMVAACIFQAAsBUAAP0VAAArFgAASRYAAG4WAACwFgAAvxYAADgXAADaFwAAJRgAAJ0YAADIGAAAABkAADMZAABXGQAApBkAAOYZAAAPGgAAjxoAANsaAABRGwAA1BsAAB0cAABgHAAA+xwAAC0dAABYHQAAgR0AAKUdAAAlHgAAdh4AANUeAABMHwAAgx8AAMYfAADuHwAAViAAAI4gAACgIAAA5CAAAAQhAABRIQAAgiEAALAhAADKIQAA6yEAABciAAA8IgAAYiIAAIoiAACzIgAA8SIAACkjAABmIwAAviMAAOEjAAAdJAAAaCQAAK8kAAASJQAAmSUAAMglAAAEJgAARCYAALEmAADnJgAABCcAACwnAAB3JwAAnCcAAMMnAADgJwAA/ScAAFooAACPKAAAsigAAPgoAAAbKQAARykAAHQpAADFKQAAKSoAAE0qAACSKgAA3ioAAFwrAAD1KwAAUCwAAKwsAAAeLQAAuy0AAAYuAABdLgAAmS4AALsuAAAALwAAUi8AALAvAAAQMAAAKDAAAHEwAADWMAAANDEAAHExAACmMQAA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upcAAEaYAADDmAAASJkAAO6ZAACMmgAA6poAAFCbAAC4mwAAPZwAAE6cAACrnAAA5ZwAACCdAABKnQAAhp0AAL2dAADfnQAAPp4AAJOeAADcngAAF58AAEqfAACFnwAApp8AAN2fAAAooAAAmqAAANOgAAAVoQAAN6EAAG6hAACkoQAA6qEAADaiAAB+ogAAuqIAAFSjAAD2owAAeaQAAOWkAAA+pQAAeaUAALylAADxpQAAJaYAADumAABXpgAAKqcAABGoAADfqAAAsqkAAIeqAABAqwAApasAAAasAAAWrQAAFq4AAGyuAACWrgAA0q4AADWvAABtrwAAsK8AABiwAABUsAAAjrAAAMawAAACsQAAL7EAAFGxAAB/sQAABbIAAGayAACssgAA6bIAAAezAABSswAAoLMAADq0AAB5tAAAprQAANe0AAD6tAAAObUAAHm1AADMtQAAA7YAAIe2AABEtwAAR7cAAH+3AACYtwAA37cAAAC5AAB8uQAA6bkAAEu6AACIugAA0roAACG7AACQuwAA3LsAABi8AACBvAAAzrwAAPm8AAAWvQAAPb0AALa9AAA2vgAAob4AABC/AABHvwAAsL8AAADAAABNwAAAp8AAAN3AAADAwQAA/sEAAB7DAAAMxAAA6sQAAG/FAACRxQAAxsUAAAPGAADIxgAACMcAAD/HAAB+xwAAvMcAADjIAABPyAAAZsgAAArJAACOyQAA8ckAAEjKAAB4ygAAy8oAAODKAAAFywAAIcsAAD7LAABiywAAf8sAALHLAADEywAAB8wAABnMAABCzAAAgcwAANrMAABAzQAAqc0AAOjNAAARzgAAes4AAKXOAADZzgAAJM8AAILPAADdzwAAW9AAAKbQAAAE0QAAa9EAAIvRAACl0QAAh9IAAMbSAAAJ0wAAVNMAAL3TAADx0wAAJ9QAAMLUAADy1AAAG9UAADrVAAB61QAArdUAAM/VAAAA1gAAVdYAAKHWAADR1gAACtcAACvXAABT1wAALdgAAFfYAADB2AAAA9kAAGvZAACN2QAAGtoAAFPaAACH2gAA6doAACPbAABt2wAA2dsAACjcAAB03AAA0twAAO/cAACN3QAAKd4AAIzeAACq3gAAC98AAF/fAACV3wAA698AABXgAAC64AAAvuIAAEXjAACv4wAAxOMAAAjlAADK5QAA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txYEALoWBAC9FgQAwBYEAMMWBADGFgQAyRYEAMwWBADPFgQA0hYEANUWBADYFgQA2xYEAN4WBADhFgQA5BYEAOcWBABPFwQAgRcEABoYBABtGAQA2hkEABQaBABCGgQAdRoEAO8aBAAwGwQAXxsEAI4bBACuGwQA4xsEAC4cBAAxHAQARhwEAF0cBACLHAQAtRwEAPAcBAAvHQQAXB0EAPgdBAAlHgQAWx4EAIgeBAC1HgQA+R4EAC8fBABoHwQA/x8EAFUgBACFIAQAbCEEAJ8hBAApIgQA5yIEAOoiBADtIgQANCMEAIQjBADsIwQAGiQEAB0kBAAgJAQANyQEADokBAA9JAQAQCQEAEMkBABGJAQASSQEAPYkBABIJQQAoCUEAPwlBAAmJgQAWCYEAMYmBAD2JgQALScEAFEnBABqJwQApycEAOonBABkKAQAfCgEAKcoBADtKAQAwikEADsqBAB4KgQAEisEAEwrBAB1KwQAqysEAK4rBACxKwQAtCsEALcrBAC6KwQAvSsEAMArBADDKwQAxisEAMkrBADMKwQAzysEANIrBADVKwQA2CsEANsrBADeKwQA4SsEAOQrBADnKwQA6isEAO0rBADwKwQA8ysEAPYrBAD5KwQA/CsEAP8rBAACLAQABSwEAAgsBAALLAQADiwEABEsBAAULAQAFywEABosBAAdLAQAICwEACMsBAAmLAQAKSwEACwsBAAvLAQAMiwEADUsBAA4LAQAOywEAD4sBABBLAQARCwEAEcsBABKLAQATSwEAFAsBABTLAQAViwEAFksBABcLAQAXywEAGIsBABlLAQAaCwEAGssBABuLAQAcSwEAHQsBAB3LAQAeiwEAH0sBACALAQAgywEAIYsBACJLAQAjCwEAI8sBACSLAQAlSwEAJgsBACbLAQAniwEAKEsBACkLAQApywEAKosBACtLAQAsCwEALMsBAC2LAQAuSwEALwsBAC/LAQAwiwEAMUsBADILAQAyywEAM4sBADRLAQA1CwEANcsBADaLAQA3SwEAPwsBAD/LAQAAi0EAGYtBABpLQQAbC0EAG8tBAByLQQAdS0EAHgtBAB7LQQAfi0EAIEtBACELQQAhy0EAIotBACNLQQAkC0EAJMtBACWLQQAmS0EAJwtBACfLQQAoi0EAKUtBACoLQQAqy0EAK4tBACxLQQA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SmYEAKhmBAAMZwQAbGcEAHxnBAB/ZwQAq2cEANBnBADxZwQADmgEADJoBACCaAQAmGgEALxoBACEaQQAyGkEADdqBABhagQAd2oEAK5qBADTagQAAWsEAEJrBAB2awQA2WsEAB1sBABYbAQAh2wEAABtBABEbQQAoG0EAP9tBAAkbgQAR24EAGVuBAB/bgQAgm4EAMpuBAATbwQARm8EAGRvBACLbwQAqW8EAMxvBADPbwQADHAEAEBwBABDcAQARnAEAElwBABMcAQAT3AEAFJwBABVcAQAWHAEANRwBAAPcQQAcHEEAKVxBADhcQQASXIEANVyBABPcwQAtXMEAN5zBAAYdAQARHQEAHF0BACkdAQAInUEAH51BAC/dQQAM3YEAL92BAAcdwQApXcEAMJ3BAAJeAQAXHgEALB4BADpeAQATXkEACB6BABHegQAiHoEAMF6BADvegQATnsEAH97BADjewQAC3wEACx8BABPfAQA3XwEABV9BADFfQQAQX4EAMt+BABvfwQA8H8EAGOABADdgAQAEoEEAIWBBACagQQAtoEEAASCBABWggQAiYIEAK2CBADRggQA+IIEAPuCBABygwQAu4MEANSDBADzgwQAFYQEADCEBABkhAQAG4UEAFuFBABehQQAfYUEALWFBADFhQQA1YUEABGGBABGhgQAfYYEAMiGBAANhwQAfocEAKOHBADahwQAVYgEAG+IBACqiAQA4ogEABuJBABuiQQAuYkEABaKBAB8igQAtooEAPWKBAAxiwQAqYsEAB6MBABojAQA0IwEACeNBACYjQQAz40EAAaOBAA9jgQAhY4EAPGOBABwjwQA248EAEaQBACukAQAKJEEAJiRBAD5kQQARpIEAJmSBADYkgQAKJMEAIiTBADOkwQA9ZMEAGaUBACelAQAvJQEAGKVBACblQQA55UEADGWBABxlgQAo5YEAOeWBABClwQAr5cEALKXBADklwQAHJgEAHiYBADLmAQAApkEACyZBABkmQQAiJkEAJeZBAD7mQQAJ5oEAJyaBAC4mgQA1JoEAOmaBAApmwQAeZsEALmbBAAHnAQAKJwEAGCcBACVnAQAq5wEAMCcBADonAQAEJ0EAECdBAB2nQQAyJ0EAA+eBACfngQAy58EAB6gBACloAQA5aAEAFKhBAC4oQQAWKIEAM6iBABOowQA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bWF4ID0gJWx1KS4gVXRpbGlzZXogdW4gQkxPQgBVbiBzZXVsIGNoYW1wIGF1dG9tYXRpcXVlIGVzdCBwZXJtaXMgZXQgaWwgZG9pdCDDqnRyZSBpbmRleMOpACVzOiBQcsOqdCBwb3VyIGRlcyBjb25uZXhpb25zClZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQAJXM6IEFycsOqdCBub3JtYWwgZHUgc2VydmV1cgoAJXM6IFJlw6d1IGxlIHNpZ25hbCAlZC4gQWJhbmRvbm5lIQoAJXM6IEFycsOqdCBkdSBzZXJ2ZXVyIHRlcm1pbsOpCgAlczogQXJyw6p0IGZvcmPDqSBkZSBsYSB0w6JjaGUgKHRocmVhZCkgJWxkICB1dGlsaXNhdGV1cjogJyUtLjQ4cycKAE5lIHBldXQgY3LDqWVyIGxhIGNvbm5leGlvbiBJUCAoc29ja2V0KQBMYSB0YWJsZSAnJS0uMTkycycgbidhIHBhcyBkJ2luZGV4IGNvbW1lIGNlbGxlIHV0aWxpc8OpZSBkYW5zIENSRUFURSBJTkRFWC4gUmVjcsOpZXogbGEgdGFibGUAU8OpcGFyYXRldXIgZGUgY2hhbXBzIGluY29ubnUuICBWw6lyaWZpZXogZGFucyBsZSBtYW51ZWwAVm91cyBuZSBwb3V2ZXogdXRpbGlzZXIgZGVzIGxpZ25lcyBkZSBsb25ndWV1ciBmaXhlIGF2ZWMgZGVzIEJMT0JzLiBVdGlsaXNlciAnZmllbGRzIHRlcm1pbmF0ZWQgYnknLgBMZSBmaWNoaWVyICclLS4xMjhzJyBkb2l0IMOqdHJlIGRhbnMgbGUgcsOpcGVydG9pcmUgZGUgbGEgYmFzZSBldCBsaXNpYmxlIHBhciB0b3VzAExlIGZpY2hpZXIgJyUtLjIwMHMnIGV4aXN0ZSBkw6lqw6AARW5yZWdpc3RyZW1lbnRzOiAlbGQgIEVmZmFjw6lzOiAlbGQgIE5vbiB0cmFpdMOpczogJWxkICBBdmVydGlzc2VtZW50czogJWxkAEVucmVnaXN0cmVtZW50czogJWxkICBEb3VibG9uczogJWxkAE1hdXZhaXNlIHNvdXMtY2xlZi4gQ2Ugbidlc3QgcGFzIHVuICdzdHJpbmcnIG91IGxhIGxvbmd1ZXVyIGTDqXBhc3NlIGNlbGxlIGTDqWZpbmllIGRhbnMgbGEgY2xlZgBWb3VzIG5lIHBvdXZleiBlZmZhY2VyIHRvdXMgbGVzIGNoYW1wcyBhdmVjIEFMVEVSIFRBQkxFLiBVdGlsaXNleiBEUk9QIFRBQkxFAE5lIHBldXQgZWZmYWNlciAoRFJPUCkgJyUtLjE5MnMnLiBWw6lyaWZpZXogcydpbCBleGlzdGUARW5yZWdpc3RyZW1lbnRzOiAlbGQgIERvdWJsb25zOiAlbGQgIEF2ZXJ0aXNzZW1lbnRzOiAlbGQAWW91IGNhbid0IHNwZWNpZnkgdGFyZ2V0IHRhYmxlICclLS4xOTJzJyBmb3IgdXBkYXRlIGluIEZST00gY2xhdXNlAE51bcOpcm8gZGUgdMOiY2hlIGluY29ubnU6ICVsdQBWb3VzIG4nw6p0ZXMgcGFzIHByb3ByacOpdGFpcmUgZGUgbGEgdMOiY2hlIG5vOiAlbHUAQXVjdW5lIHRhYmxlIHV0aWxpc8OpZQBUcm9wIGRlIGNoYcOubmVzIGRhbnMgbGEgY29sb25uZSAlLS4xOTJzIGF2ZWMgU0VUAE5lIHBldXQgZ8OpbsOpcmVyIHVuIHVuaXF1ZSBub20gZGUgam91cm5hbCAlLS4yMDBzLigxLTk5OSkKAFRhYmxlICclLS4xOTJzJyB2ZXJyb3VpbGzDqWUgbGVjdHVyZSAoUkVBRCk6IG1vZGlmaWNhdGlvbiBpbXBvc3NpYmxlAFRhYmxlICclLS4xOTJzJyBub24gdmVycm91aWxsw6llOiB1dGlsaXNleiBMT0NLIFRBQkxFUwBCTE9CICclLS4xOTJzJyBuZSBwZXV0IGF2b2lyIGRlIHZhbGV1ciBwYXIgZMOpZmF1dABOb20gZGUgYmFzZSBkZSBkb25uw6llIGlsbMOpZ2FsOiAnJS0uMTAwcycATm9tIGRlIHRhYmxlIGlsbMOpZ2FsOiAnJS0uMTAwcycAU0VMRUNUIHZhIGRldm9pciBleGFtaW5lciBiZWF1Y291cCBkJ2VucmVnaXN0cmVtZW50cyBjZSBxdWkgdmEgcHJlbmRyZSBkdSB0ZW1wcy4gVsOpcmlmaWV6IGxhIGNsYXVzZSBXSEVSRSBldCB1dGlsaXNleiBTRVQgU1FMX0JJR19TRUxFQ1RTPTEgc2kgU0VMRUNUIHNlIHBhc3NlIGJpZW4ARXJyZXVyIGluY29ubnVlAFByb2PDqWR1cmUgJS0uMTkycyBpbmNvbm51ZQBNYXV2YWlzIG5vbWJyZSBkZSBwYXJhbcOodHJlcyBwb3VyIGxhIHByb2NlZHVyZSAlLS4xOTJzAFBhcmFtw6h0cmUgZXJyb27DqSBwb3VyIGxhIHByb2NlZHVyZSAlLS4xOTJzAFRhYmxlIGluY29ubnVlICclLS4xOTJzJyBkYW5zICUtLjMycwBDaGFtcCAnJS0uMTkycycgc3DDqWNpZmnDqSBkZXV4IGZvaXMAVXRpbGlzYXRpb24gaW52YWxpZGUgZGUgbGEgY2xhdXNlIEdST1VQAFRhYmxlICclLS4xOTJzJyA6IHV0aWxpc2UgdW5lIGV4dGVuc2lvbiBpbnZhbGlkZSBwb3VyIGNldHRlIHZlcnNpb24gZGUgTXlTUUwAVW5lIHRhYmxlIGRvaXQgY29tcG9ydGVyIGF1IG1vaW5zIHVuZSBjb2xvbm5lAExhIHRhYmxlICclLS4xOTJzJyBlc3QgcGxlaW5lAEpldSBkZSBjYXJhY3TDqHJlcyBpbmNvbm51OiAnJS0uNjRzJwBUcm9wIGRlIHRhYmxlcy4gTXlTUUwgbmUgcGV1dCB1dGlsaXNlciBxdWUgJWQgdGFibGVzIGRhbnMgdW4gSk9JTgBUcm9wIGRlIGNoYW1wcwBMaWduZSB0cm9wIGdyYW5kZS4gTGUgdGFpbGxlIG1heGltYWxlIGQndW5lIGxpZ25lLCBzYXVmIGxlcyBCTE9CcywgZXN0ICVsZC4gQ2hhbmdleiBsZSB0eXBlIGRlIHF1ZWxxdWVzIGNvbG9ubmVzIGVuIEJMT0IARMOpYm9yZGVtZW50IGRlIGxhIHBpbGUgZGVzIHTDomNoZXMgKFRocmVhZCBzdGFjaykuIFV0aWxpc8OpZXM6ICVsZCBwb3VyIHVuZSBwaWxlIGRlICVsZC4gIEVzc2F5ZXogJ215c3FsZCAtLXRocmVhZF9zdGFjaz0jJyBwb3VyIGluZGlxdWVyIHVuZSBwbHVzIGdyYW5kZSB2YWxldXIARMOpcGVuZGFuY2UgY3JvaXPDqWUgZGFucyB1bmUgY2xhdXNlIE9VVEVSIEpPSU4uIFbDqXJpZmlleiBsYSBjb25kaXRpb24gT04AVGFibGUgaGFuZGxlciBkb2Vzbid0IHN1cHBvcnQgTlVMTCBpbiBnaXZlbiBpbmRleC4gUGxlYXNlIGNoYW5nZSBjb2x1bW4gJyUtLjE5MnMnIHRvIGJlIE5PVCBOVUxMIG9yIHVzZSBhbm90aGVyIGhhbmRsZXIASW1wb3NpYmxlIGRlIGNoYXJnZXIgbGEgZm9uY3Rpb24gJyUtLjE5MnMnAEltcG9zc2libGUgZCdpbml0aWFsaXNlciBsYSBmb25jdGlvbiAnJS0uMTkycyc7ICUtLjE5MnMAQ2hlbWluIGludGVyZGl0IHBvdXIgbGVzIGJpYmxpb3Row6hxdWVzIHBhcnRhZ8OpZXMATGEgZm9uY3Rpb24gJyUtLjE5MnMnIGV4aXN0ZSBkw6lqw6AASW1wb3NzaWJsZSBkJ291dnJpciBsYSBiaWJsaW90aMOocXVlIHBhcnRhZ8OpZSAnJS0uMTkycycgKGVycm5vOiAlZCAlLS4xMjhzKQBJbXBvc3NpYmxlIGRlIHRyb3V2ZXIgbGEgZm9uY3Rpb24gJyUtLjEyOHMnIGRhbnMgbGEgYmlibGlvdGjDqHF1ZQBMYSBmb25jdGlvbiAnJS0uMTkycycgbidlc3QgcGFzIGTDqWZpbmllAEwnaMO0dGUgJyUtLjI1NXMnIGVzdCBibG9xdcOpIMOgIGNhdXNlIGQndW4gdHJvcCBncmFuZCBub21icmUgZCdlcnJldXIgZGUgY29ubmV4aW9uLiBEw6libG9xdWVyIGxlIHBhciAnbXlzcWxhZG1pbiBmbHVzaC1ob3N0cycATGUgaMO0dGUgJyUtLjI1NXMnIG4nZXN0IHBhcyBhdXRob3Jpc8OpIMOgIHNlIGNvbm5lY3RlciDDoCBjZSBzZXJ2ZXVyIE15U1FMAFZvdXMgdXRpbGlzZXogdW4gdXRpbGlzYXRldXIgYW5vbnltZSBldCBsZXMgdXRpbGlzYXRldXJzIGFub255bWVzIG5lIHNvbnQgcGFzIGF1dG9yaXPDqXMgw6AgY2hhbmdlciBsZXMgbW90cyBkZSBwYXNzZQBWb3VzIGRldmV6IGF2b2lyIGxlIHByaXZpbMOoZ2UgdXBkYXRlIHN1ciBsZXMgdGFibGVzIGRlIGxhIGJhc2UgZGUgZG9ubsOpZSBteXNxbCBwb3VyIHBvdXZvaXIgY2hhbmdlciBsZXMgbW90cyBkZSBwYXNzZSBkZXMgYXV0cmVzAEltcG9zc2libGUgZGUgdHJvdXZlciB1biBlbnJlZ2lzdHJlbWVudCBjb3JyZXNwb25kYW50IGRhbnMgbGEgdGFibGUgdXNlcgBFbnJlZ2lzdHJlbWVudHMgY29ycmVzcG9uZGFudHM6ICVsZCAgTW9kaWZpw6lzOiAlbGQgIFdhcm5pbmdzOiAlbGQASW1wb3NzaWJsZSBkZSBjcsOpZXIgdW5lIG5vdXZlbGxlIHTDomNoZSAoZXJybm8gJWQpLiBTJ2lsIHJlc3RlIGRlIGxhIG3DqW1vaXJlIGxpYnJlLCBjb25zdWx0ZXogbGUgbWFudWFsIHBvdXIgdHJvdXZlciB1biDDqXZlbnR1ZWwgYnVnIGTDqXBlbmRhbnQgZGUgbCdPUwBDb2x1bW4gY291bnQgZG9lc24ndCBtYXRjaCB2YWx1ZSBjb3VudCBhdCByb3cgJWxkAEltcG9zc2libGUgZGUgcsOpb3V2cmlyIGxhIHRhYmxlOiAnJS0uMTkycwBVdGlsaXNhdGlvbiBpbmNvcnJlY3RlIGRlIGxhIHZhbGV1ciBOVUxMAEVycmV1ciAnJS0uNjRzJyBwcm92ZW5hbnQgZGUgcmVnZXhwAE3DqWxhbmdlciBsZXMgY29sb25uZXMgR1JPVVAgKE1JTigpLE1BWCgpLENPVU5UKCkuLi4pIGF2ZWMgZGVzIGNvbG9ubmVzIG5vcm1hbGVzIGVzdCBpbnRlcmRpdCBzJ2lsIG4neSBhIHBhcyBkZSBjbGF1c2UgR1JPVVAgQlkAVW4gdGVsIGRyb2l0IG4nZXN0IHBhcyBkw6lmaW5pIHBvdXIgbCd1dGlsaXNhdGV1ciAnJS0uNDhzJyBzdXIgbCdow7R0ZSAnJS0uMjU1cycATGEgY29tbWFuZGUgJyUtLjEyOHMnIGVzdCBpbnRlcmRpdGUgw6AgbCd1dGlsaXNhdGV1cjogJyUtLjQ4cydAJ0AlLS42NHMnIHN1ciBsYSB0YWJsZSAnJS0uNjRzJwBMYSBjb21tYW5kZSAnJS0uMTZzJyBlc3QgaW50ZXJkaXRlIMOgIGwndXRpbGlzYXRldXI6ICclLS40OHMnQCdAJS0uNjRzJyBzdXIgbGEgY29sb25uZSAnJS0uMTkycycgZGUgbGEgdGFibGUgJyUtLjE5MnMnAENvbW1hbmRlIEdSQU5UL1JFVk9LRSBpbmNvcnJlY3RlLiBDb25zdWx0ZXogbGUgbWFudWVsLgBMJ2jDtHRlIG91IGwndXRpbGlzYXRldXIgZG9ubsOpIGVuIGFyZ3VtZW50IMOgIEdSQU5UIGVzdCB0cm9wIGxvbmcATGEgdGFibGUgJyUtLjE5MnMuJS0uMTkycycgbidleGlzdGUgcGFzAFVuIHRlbCBkcm9pdCBuJ2VzdCBwYXMgZMOpZmluaSBwb3VyIGwndXRpbGlzYXRldXIgJyUtLjQ4cycgc3VyIGwnaMO0dGUgJyUtLjI1NXMnIHN1ciBsYSB0YWJsZSAnJS0uMTkycycAQ2V0dGUgY29tbWFuZGUgbidleGlzdGUgcGFzIGRhbnMgY2V0dGUgdmVyc2lvbiBkZSBNeVNRTABFcnJldXIgZGUgc3ludGF4ZQBEZWxheWVkIGluc2VydCB0aHJlYWQgY291bGRuJ3QgZ2V0IHJlcXVlc3RlZCBsb2NrIGZvciB0YWJsZSAlLS4xOTJzAFRvbyBtYW55IGRlbGF5ZWQgdGhyZWFkcyBpbiB1c2UAQ29ubmVjdGlvbiAlbGQgYXZvcnTDqWUgdmVycyBsYSBiZDogJyUtLjE5MnMnIHV0aWxpc2F0ZXVyOiAnJS0uNDhzJyAoJS0uNjRzKQBQYXF1ZXQgcGx1cyBncmFuZCBxdWUgJ21heF9hbGxvd2VkX3BhY2tldCcgcmXDp3UARXJyZXVyIGRlIGxlY3R1cmUgcmXDp3VlIGR1IHBpcGUgZGUgY29ubmV4aW9uAEVycmV1ciByZcOndWUgZGUgZmNudGwoKSAAUGFxdWV0cyByZcOndXMgZGFucyBsZSBkw6lzb3JkcmUASW1wb3NzaWJsZSBkZSBkw6ljb21wcmVzc2VyIGxlIHBhcXVldCByZcOndQBFcnJldXIgZGUgbGVjdHVyZSBkZXMgcGFxdWV0cyByZcOndXMAVGltZW91dCBlbiBsZWN0dXJlIGRlcyBwYXF1ZXRzIHJlw6d1cwBFcnJldXIgZCfDqWNyaXR1cmUgZGVzIHBhcXVldHMgZW52b3nDqXMAVGltZW91dCBkJ8OpY3JpdHVyZSBkZXMgcGFxdWV0cyBlbnZvecOpcwBMYSBjaGHDrm5lIHLDqXN1bHRhdCBlc3QgcGx1cyBncmFuZGUgcXVlICdtYXhfYWxsb3dlZF9wYWNrZXQnAENlIHR5cGUgZGUgdGFibGUgbmUgc3VwcG9ydGUgcGFzIGxlcyBjb2xvbm5lcyBCTE9CL1RFWFQAQ2UgdHlwZSBkZSB0YWJsZSBuZSBzdXBwb3J0ZSBwYXMgbGVzIGNvbG9ubmVzIEFVVE9fSU5DUkVNRU5UAElOU0VSVCBERUxBWUVEIGNhbid0IGJlIHVzZWQgd2l0aCB0YWJsZSAnJS0uMTkycycgYmVjYXVzZSBpdCBpcyBsb2NrZWQgd2l0aCBMT0NLIFRBQkxFUwBOb20gZGUgY29sb25uZSAnJS0uMTAwcycgaW5jb3JyZWN0AExlIGhhbmRsZXIgZGUgbGEgdGFibGUgbmUgcGV1dCBpbmRleMOpIGxhIGNvbG9ubmUgJyUtLjE5MnMnAFRvdXRlcyBsZXMgdGFibGVzIGRlIGxhIHRhYmxlIGRlIHR5cGUgTUVSR0UgbidvbnQgcGFzIGxhIG3Dqm1lIGTDqWZpbml0aW9uAMOJY3JpdHVyZSBpbXBvc3NpYmxlIMOgIGNhdXNlIGQndW4gaW5kZXggVU5JUVVFIHN1ciBsYSB0YWJsZSAnJS0uMTkycycATGEgY29sb25uZSAnJS0uMTkycycgZGUgdHlwZSBCTE9CIGVzdCB1dGlsaXPDqWUgZGFucyB1bmUgZMOpZmluaXRpb24gZCdpbmRleCBzYW5zIGxvbmd1ZXVyIGQnaW5kZXgAVG91dGVzIGxlcyBwYXJ0aWVzIGQndW4gaW5kZXggUFJJTUFSWSBLRVkgZG9pdmVudCDDqnRyZSBOT1QgTlVMTDsgU2kgdm91cyBhdmV6IGJlc29pbiBkJ3VuIE5VTEwgZGFucyBsJ2luZGV4LCB1dGlsaXNleiB1biBpbmRleCBVTklRVUUATGUgcsOpc3VsdGF0IGNvbnRpZW50IHBsdXMgZCd1biBlbnJlZ2lzdHJlbWVudABDZSB0eXBlIGRlIHRhYmxlIG7DqWNlc3NpdGUgdW5lIGNsw6kgcHJpbWFpcmUgKFBSSU1BUlkgS0VZKQBDZXR0ZSB2ZXJzaW9uIGRlIE15U1FMIG4nZXN0IHBhcyBjb21waWzDqWUgYXZlYyBsZSBzdXBwb3J0IFJBSUQAVm91cyDDqnRlcyBlbiBtb2RlICdzYWZlIHVwZGF0ZScgZXQgdm91cyBlc3NheWV6IGRlIGZhaXJlIHVuIFVQREFURSBzYW5zIGNsYXVzZSBXSEVSRSB1dGlsaXNhbnQgdW4gaW5kZXguICVzAEwnaW5kZXggJyUtLjE5MnMnIG4nZXhpc3RlIHBhcyBzdXIgbGEgdGFibGUgJyUtLjE5MnMnAEltcG9zc2libGUgZCdvdXZyaXIgbGEgdGFibGUAQ2UgdHlwZSBkZSB0YWJsZSBuZSBzdXBwb3J0ZSBwYXMgbGVzICVzAFZvdXMgbifDqnRlcyBwYXMgYXV0b3Jpc8OpIMOgIGV4w6ljdXRlIGNldHRlIGNvbW1hbmRlIGRhbnMgdW5lIHRyYW5zYWN0aW9uAEVycmV1ciAlZCAtICclLS4xOTJzJyBsb3JzIGR1IENPTU1JVABFcnJldXIgJWQgLSAnJS0uMTkycycgbG9ycyBkdSBST0xMQkFDSwBFcnJldXIgJWQgbG9ycyBkdSBGTFVTSF9MT0dTAEVycmV1ciAlZCBsb3JzIGR1IENIRUNLUE9JTlQAQ29ubmVjdGlvbiAldSBhdm9ydMOpZSB2ZXJzIGxhIGJkOiAnJS0uMTkycycgdXRpbGlzYXRldXI6ICclLS40OHMnIGjDtHRlOiAnJS0uMjU1cycgKCUtLjY0cykAQ2UgdHlwZSBkZSB0YWJsZSBuZSBzdXBwb3J0ZSBwYXMgbGVzIGNvcGllcyBiaW5haXJlcwBCaW5sb2cgY2xvc2VkLCBjYW5ub3QgUkVTRVQgU09VUkNFAExhIHJlY29uc3RydWN0aW9uIGRlIGwnaW5kZXggZGUgbGEgdGFibGUgY29wacOpZSAnJS0uMTkycycgYSDDqWNob3XDqQBFcnJldXIgcmXDp3VlIGR1IG1hw650cmU6ICclLS42NHMnAEVycmV1ciBkZSBsZWN0dXJlIHLDqXNlYXUgcmXDp3VlIGR1IG1hw650cmUARXJyZXVyIGQnw6ljcml0dXJlIHLDqXNlYXUgcmXDp3VlIGR1IG1hw650cmUASW1wb3NzaWJsZSBkZSB0cm91dmVyIHVuIGluZGV4IEZVTExURVhUIGNvcnJlc3BvbmRhbnQgw6AgY2V0dGUgbGlzdGUgZGUgY29sb25uZXMASW1wb3NzaWJsZSBkJ2V4w6ljdXRlciBsYSBjb21tYW5kZSBjYXIgdm91cyBhdmV6IGRlcyB0YWJsZXMgdmVycm91aWxsw6llcyBvdSB1bmUgdHJhbnNhY3Rpb24gYWN0aXZlAFZhcmlhYmxlIHN5c3TDqG1lICclLS42NHMnIGluY29ubnVlAExhIHRhYmxlICclLS4xOTJzJyBlc3QgbWFycXXDqWUgJ2NyYXNoZWQnIGV0IGRldnJhaXQgw6p0cmUgcsOpcGFyw6llAExhIHRhYmxlICclLS4xOTJzJyBlc3QgbWFycXXDqWUgJ2NyYXNoZWQnIGV0IGxlIGRlcm5pZXIgJ3JlcGFpcicgYSDDqWNob3XDqQBBdHRlbnRpb246IGNlcnRhaW5lcyB0YWJsZXMgbmUgc3VwcG9ydGFudCBwYXMgbGVzIHRyYW5zYWN0aW9ucyBvbnQgw6l0w6kgY2hhbmfDqWVzIGV0IGVsbGVzIG5lIHBvdXJyb250IHBhcyDDqnRyZSByZXN0aXR1w6llcwBDZXR0ZSB0cmFuc2FjdGlvbiDDoCBjb21tYW5kZXMgbXVsdGlwbGVzIG7DqWNlc3NpdGUgcGx1cyBkZSAnbWF4X2JpbmxvZ19jYWNoZV9zaXplJyBvY3RldHMgZGUgc3RvY2thZ2UsIGF1Z21lbnRleiBjZXR0ZSB2YXJpYWJsZSBkZSBteXNxbGQgZXQgcsOpZXNzYXllegBDZXR0ZSBvcMOpcmF0aW9uIG5lIHBldXQgw6p0cmUgcsOpYWxpc8OpZSBhdmVjIHVuIGVzY2xhdmUgYWN0aWYsIGZhaXRlcyBTVE9QIFNMQVZFIGQnYWJvcmQAQ2V0dGUgb3DDqXJhdGlvbiBuw6ljZXNzaXRlIHVuIGVzY2xhdmUgYWN0aWYsIGNvbmZpZ3VyZXogbGVzIGVzY2xhdmVzIGV0IGZhaXRlcyBTVEFSVCBTTEFWRQBMZSBzZXJ2ZXIgbidlc3QgcGFzIGNvbmZpZ3Vyw6kgY29tbWUgdW4gZXNjbGF2ZSwgY2hhbmdleiBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gb3UgdXRpbGlzZXogQ0hBTkdFIE1BU1RFUiBUTwBJbXBvc3NpYmxlIGQnaW5pdGlhbGlzZXIgbGVzIHN0cnVjdHVyZXMgZCdpbmZvcm1hdGlvbiBkZSBtYcOudHJlLCB2b3VzIHRyb3V2ZXJleiBkZXMgbWVzc2FnZXMgZCdlcnJldXIgc3VwcGzDqW1lbnRhaXJlcyBkYW5zIGxlIGpvdXJuYWwgZGVzIGVycmV1cnMgZGUgTXlTUUwASW1wb3NzaWJsZSBkZSBjcsOpZXIgdW5lIHTDomNoZSBlc2NsYXZlLCB2w6lyaWZpZXogbGVzIHJlc3NvdXJjZXMgc3lzdMOobWUATCd1dGlsaXNhdGV1ciAlLS42NHMgcG9zc8OoZGUgZMOpasOgIHBsdXMgZGUgJ21heF91c2VyX2Nvbm5lY3Rpb25zJyBjb25uZXhpb25zIGFjdGl2ZXMAU2V1bGVzIGxlcyBleHByZXNzaW9ucyBjb25zdGFudGVzIHNvbnQgYXV0b3Jpc8OpZXMgYXZlYyBTRVQAVGltZW91dCBzdXIgbCdvYnRlbnRpb24gZHUgdmVycm91AExlIG5vbWJyZSB0b3RhbCBkZSB2ZXJyb3UgZMOpcGFzc2UgbGEgdGFpbGxlIGRlIGxhIHRhYmxlIGRlcyB2ZXJyb3VzAFVuIHZlcnJvdSBlbiB1cGRhdGUgbmUgcGV1dCDDqnRyZSBhY3F1aXQgcGVuZGFudCB1bmUgdHJhbnNhY3Rpb24gUkVBRCBVTkNPTU1JVFRFRABEUk9QIERBVEFCQVNFIG4nZXN0IHBhcyBhdXRvcmlzw6llIHBlbmRhbnQgcXUndW5lIHTDomNoZSBwb3Nzw6hkZSB1biB2ZXJyb3UgZ2xvYmFsIGVuIGxlY3R1cmUAQ1JFQVRFIERBVEFCQVNFIG4nZXN0IHBhcyBhdXRvcmlzw6llIHBlbmRhbnQgcXUndW5lIHTDomNoZSBwb3Nzw6hkZSB1biB2ZXJyb3UgZ2xvYmFsIGVuIGxlY3R1cmUATWF1dmFpcyBhcmd1bWVudHMgw6AgJXMAJyUtLjQ4cydAJyUtLjY0cycgbidlc3QgcGFzIGF1dG9yaXPDqSDDoCBjcsOpZXIgZGUgbm91dmVhdXggdXRpbGlzYXRldXJzAETDqWZpbml0aW9uIGRlIHRhYmxlIGluY29ycmVjdGU7IHRvdXRlcyBsZXMgdGFibGVzIE1FUkdFIGRvaXZlbnQgw6p0cmUgZGFucyBsYSBtw6ptZSBiYXNlIGRlIGRvbm7DqWUARGVhZGxvY2sgZMOpY291dmVydCBlbiBlc3NheWFudCBkJ29idGVuaXIgbGVzIHZlcnJvdXMgOiBlc3NheWV6IGRlIHJlZMOpbWFycmVyIGxhIHRyYW5zYWN0aW9uAExlIHR5cGUgZGUgdGFibGUgdXRpbGlzw6kgbmUgc3VwcG9ydGUgcGFzIGxlcyBpbmRleCBGVUxMVEVYVABJbXBvc3NpYmxlIGQnYWpvdXRlciBkZXMgY29udHJhaW50ZXMgZCdpbmRleCBleHRlcm5lAEltcG9zc2libGUgZCdham91dGVyIHVuIGVucmVnaXN0cmVtZW50IGZpbHMgOiB1bmUgY29uc3RyYWludGUgZXh0ZXJuZSBsJ2VtcMOoY2hlAEltcG9zc2libGUgZGUgc3VwcHJpbWVyIHVuIGVucmVnaXN0cmVtZW50IHDDqHJlIDogdW5lIGNvbnN0cmFpbnRlIGV4dGVybmUgbCdlbXDDqGNoZQBFcnJvciBjb25uZWN0aW5nIHRvIHNvdXJjZTogJS0uMTI4cwBFcnJvciBydW5uaW5nIHF1ZXJ5IG9uIHNvdXJjZTogJS0uMTI4cwBFcnJvciB3aGVuIGV4ZWN1dGluZyBjb21tYW5kICVzOiAlLS4xMjhzAEluY29ycmVjdCB1c2FnZSBvZiAlcyBhbmQgJXMAVGhlIHVzZWQgU0VMRUNUIHN0YXRlbWVudHMgaGF2ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgY29sdW1ucwBDYW4ndCBleGVjdXRlIHRoZSBxdWVyeSBiZWNhdXNlIHlvdSBoYXZlIGEgY29uZmxpY3RpbmcgcmVhZCBsb2NrAE1peGluZyBvZiB0cmFuc2FjdGlvbmFsIGFuZCBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgaXMgZGlzYWJsZWQAT3B0aW9uICclcycgdXNlZCB0d2ljZSBpbiBzdGF0ZW1lbnQAVXNlciAnJS0uNjRzJyBoYXMgZXhjZWVkZWQgdGhlICclcycgcmVzb3VyY2UgKGN1cnJlbnQgdmFsdWU6ICVsZCkAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9uZSBvZikgdGhlICUtLjEyOHMgcHJpdmlsZWdlKHMpIGZvciB0aGlzIG9wZXJhdGlvbgBWYXJpYWJsZSAnJS0uNjRzJyBpcyBhIFNFU1NJT04gdmFyaWFibGUgYW5kIGNhbid0IGJlIHVzZWQgd2l0aCBTRVQgR0xPQkFMAFZhcmlhYmxlICclLS42NHMnIGlzIGEgR0xPQkFMIHZhcmlhYmxlIGFuZCBzaG91bGQgYmUgc2V0IHdpdGggU0VUIEdMT0JBTABWYXJpYWJsZSAnJS0uNjRzJyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnAEluY29ycmVjdCBhcmd1bWVudCB0eXBlIHRvIHZhcmlhYmxlICclLS42NHMnAFZhcmlhYmxlICclLS42NHMnIGNhbiBvbmx5IGJlIHNldCwgbm90IHJlYWQASW5jb3JyZWN0IHVzYWdlL3BsYWNlbWVudCBvZiAnJXMnAFRoaXMgdmVyc2lvbiBvZiBNeVNRTCBkb2Vzbid0IHlldCBzdXBwb3J0ICclcycAR290IGZhdGFsIGVycm9yICVkIGZyb20gc291cmNlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYmluYXJ5IGxvZzogJyUtLjUxMnMnAFJlcGxpY2EgU1FMIHRocmVhZCBpZ25vcmVkIHRoZSBxdWVyeSBiZWNhdXNlIG9mIHJlcGxpY2F0ZS0qLXRhYmxlIHJ1bGVzAFZhcmlhYmxlICclLS4xOTJzJyBpcyBhICVzIHZhcmlhYmxlAEluY29ycmVjdCBmb3JlaWduIGtleSBkZWZpbml0aW9uIGZvciAnJS0uMTkycyc6ICVzAEtleSByZWZlcmVuY2UgYW5kIHRhYmxlIHJlZmVyZW5jZSBkb24ndCBtYXRjaABPcGVyYW5kIHNob3VsZCBjb250YWluICVkIGNvbHVtbihzKQBTdWJxdWVyeSByZXR1cm5zIG1vcmUgdGhhbiAxIHJvdwBVbmtub3duIHByZXBhcmVkIHN0YXRlbWVudCBoYW5kbGVyICglLipzKSBnaXZlbiB0byAlcwBIZWxwIGRhdGFiYXNlIGlzIGNvcnJ1cHQgb3IgZG9lcyBub3QgZXhpc3QAQ3ljbGljIHJlZmVyZW5jZSBvbiBzdWJxdWVyaWVzAENvbnZlcnRpbmcgY29sdW1uICclcycgZnJvbSAlcyB0byAlcwBSZWZlcmVuY2UgJyUtLjY0cycgbm90IHN1cHBvcnRlZCAoJXMpAEV2ZXJ5IGRlcml2ZWQgdGFibGUgbXVzdCBoYXZlIGl0cyBvd24gYWxpYXMAU2VsZWN0ICV1IHdhcyByZWR1Y2VkIGR1cmluZyBvcHRpbWl6YXRpb24AVGFibGUgJyUtLjE5MnMnIGZyb20gb25lIG9mIHRoZSBTRUxFQ1RzIGNhbm5vdCBiZSB1c2VkIGluICUtLjMycwBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCByZXF1ZXN0ZWQgYnkgc2VydmVyOyBjb25zaWRlciB1cGdyYWRpbmcgTXlTUUwgY2xpZW50AEFsbCBwYXJ0cyBvZiBhIFNQQVRJQUwgaW5kZXggbXVzdCBiZSBOT1QgTlVMTABDT0xMQVRJT04gJyVzJyBpcyBub3QgdmFsaWQgZm9yIENIQVJBQ1RFUiBTRVQgJyVzJwBSZXBsaWNhIGlzIGFscmVhZHkgcnVubmluZwBSZXBsaWNhIGFscmVhZHkgaGFzIGJlZW4gc3RvcHBlZABVbmNvbXByZXNzZWQgZGF0YSBzaXplIHRvbyBsYXJnZTsgdGhlIG1heGltdW0gc2l6ZSBpcyAlZCAocHJvYmFibHksIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgZGF0YSB3YXMgY29ycnVwdGVkKQBaTElCOiBOb3QgZW5vdWdoIG1lbW9yeQBaTElCOiBOb3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIgKHByb2JhYmx5LCBsZW5ndGggb2YgdW5jb21wcmVzc2VkIGRhdGEgd2FzIGNvcnJ1cHRlZCkAWkxJQjogSW5wdXQgZGF0YSBjb3JydXB0ZWQAUm93ICV1IHdhcyBjdXQgYnkgR1JPVVBfQ09OQ0FUKCkAUm93ICVsZCBkb2Vzbid0IGNvbnRhaW4gZGF0YSBmb3IgYWxsIGNvbHVtbnMAUm93ICVsZCB3YXMgdHJ1bmNhdGVkOyBpdCBjb250YWluZWQgbW9yZSBkYXRhIHRoYW4gdGhlcmUgd2VyZSBpbnB1dCBjb2x1bW5zAENvbHVtbiBzZXQgdG8gZGVmYXVsdCB2YWx1ZTsgTlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAE91dCBvZiByYW5nZSB2YWx1ZSBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABEYXRhIHRydW5jYXRlZCBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABVc2luZyBzdG9yYWdlIGVuZ2luZSAlcyBmb3IgdGFibGUgJyVzJwBJbGxlZ2FsIG1peCBvZiBjb2xsYXRpb25zICglcywlcykgYW5kICglcywlcykgZm9yIG9wZXJhdGlvbiAnJXMnAENhbm5vdCBkcm9wIG9uZSBvciBtb3JlIG9mIHRoZSByZXF1ZXN0ZWQgdXNlcnMAQ2FuJ3QgcmV2b2tlIGFsbCBwcml2aWxlZ2VzIGZvciBvbmUgb3IgbW9yZSBvZiB0aGUgcmVxdWVzdGVkIHVzZXJzAElsbGVnYWwgbWl4IG9mIGNvbGxhdGlvbnMgKCVzLCVzKSwgKCVzLCVzKSwgKCVzLCVzKSBmb3Igb3BlcmF0aW9uICclcycASWxsZWdhbCBtaXggb2YgY29sbGF0aW9ucyBmb3Igb3BlcmF0aW9uICclcycAVmFyaWFibGUgJyUtLjY0cycgaXMgbm90IGEgdmFyaWFibGUgY29tcG9uZW50IChjYW4ndCBiZSB1c2VkIGFzIFhYWFgudmFyaWFibGVfbmFtZSkAVW5rbm93biBjb2xsYXRpb246ICclLS42NHMnAFNTTCBwYXJhbWV0ZXJzIGluIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgYXJlIGlnbm9yZWQgYmVjYXVzZSB0aGlzIE15U1FMIHJlcGxpY2Egd2FzIGNvbXBpbGVkIHdpdGhvdXQgU1NMIHN1cHBvcnQ7IHRoZXkgY2FuIGJlIHVzZWQgbGF0ZXIgaWYgTXlTUUwgcmVwbGljYSB3aXRoIFNTTCBpcyBzdGFydGVkAFNlcnZlciBpcyBydW5uaW5nIGluIC0tc2VjdXJlLWF1dGggbW9kZSwgYnV0ICclcydAJyVzJyBoYXMgYSBwYXNzd29yZCBpbiB0aGUgb2xkIGZvcm1hdDsgcGxlYXNlIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhlIG5ldyBmb3JtYXQARmllbGQgb3IgcmVmZXJlbmNlICclLS4xOTJzJXMlLS4xOTJzJXMlLS4xOTJzJyBvZiBTRUxFQ1QgIyVkIHdhcyByZXNvbHZlZCBpbiBTRUxFQ1QgIyVkAEluY29ycmVjdCBwYXJhbWV0ZXIgb3IgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBmb3IgU1RBUlQgUkVQTElDQSBVTlRJTABJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgLS1za2lwLXJlcGxpY2Etc3RhcnQgd2hlbiBkb2luZyBzdGVwLWJ5LXN0ZXAgcmVwbGljYXRpb24gd2l0aCBTVEFSVCBSRVBMSUNBIFVOVElMOyBvdGhlcndpc2UsIHlvdSB3aWxsIGdldCBwcm9ibGVtcyBpZiB5b3UgZ2V0IGFuIHVuZXhwZWN0ZWQgcmVwbGljYSdzIG15c3FsZCByZXN0YXJ0AFNRTCB0aHJlYWQgaXMgbm90IHRvIGJlIHN0YXJ0ZWQgc28gVU5USUwgb3B0aW9ucyBhcmUgaWdub3JlZABJbmNvcnJlY3QgaW5kZXggbmFtZSAnJS0uMTAwcycASW5jb3JyZWN0IGNhdGFsb2cgbmFtZSAnJS0uMTAwcycAUXVlcnkgY2FjaGUgZmFpbGVkIHRvIHNldCBzaXplICVsdTsgbmV3IHF1ZXJ5IGNhY2hlIHNpemUgaXMgJWx1AENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIHBhcnQgb2YgRlVMTFRFWFQgaW5kZXgAVW5rbm93biBrZXkgY2FjaGUgJyUtLjEwMHMnAE15U1FMIGlzIHN0YXJ0ZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlOyB5b3UgbXVzdCByZXN0YXJ0IGl0IHdpdGhvdXQgdGhpcyBzd2l0Y2ggZm9yIHRoaXMgZ3JhbnQgdG8gd29yawBVbmtub3duIHN0b3JhZ2UgZW5naW5lICclcycAJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAFRoZSB0YXJnZXQgdGFibGUgJS0uMTAwcyBvZiB0aGUgJXMgaXMgbm90IHVwZGF0YWJsZQBUaGUgJyVzJyBmZWF0dXJlIGlzIGRpc2FibGVkOyB5b3UgbmVlZCBNeVNRTCBidWlsdCB3aXRoICclcycgdG8gaGF2ZSBpdCB3b3JraW5nAFRoZSBNeVNRTCBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIHRoZSAlcyBvcHRpb24gc28gaXQgY2Fubm90IGV4ZWN1dGUgdGhpcyBzdGF0ZW1lbnQAQ29sdW1uICclLS4xMDBzJyBoYXMgZHVwbGljYXRlZCB2YWx1ZSAnJS0uNjRzJyBpbiAlcwBUcnVuY2F0ZWQgaW5jb3JyZWN0ICUtLjY0cyB2YWx1ZTogJyUtLjEyOHMnAEluY29ycmVjdCB0YWJsZSBkZWZpbml0aW9uOyB0aGVyZSBjYW4gYmUgb25seSBvbmUgVElNRVNUQU1QIGNvbHVtbiB3aXRoIENVUlJFTlRfVElNRVNUQU1QIGluIERFRkFVTFQgb3IgT04gVVBEQVRFIGNsYXVzZQBJbnZhbGlkIE9OIFVQREFURSBjbGF1c2UgZm9yICclLS4xOTJzJyBjb2x1bW4AVGhpcyBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHByZXBhcmVkIHN0YXRlbWVudCBwcm90b2NvbCB5ZXQAR290IGVycm9yICVkICclLS4xMDBzJyBmcm9tICVzAEdvdCB0ZW1wb3JhcnkgZXJyb3IgJWQgJyUtLjEwMHMnIGZyb20gJXMAVW5rbm93biBvciBpbmNvcnJlY3QgdGltZSB6b25lOiAnJS0uNjRzJwBJbnZhbGlkIFRJTUVTVEFNUCB2YWx1ZSBpbiBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAEludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJwBSZXN1bHQgb2YgJXMoKSB3YXMgbGFyZ2VyIHRoYW4gbWF4X2FsbG93ZWRfcGFja2V0ICglbGQpIC0gdHJ1bmNhdGVkAENvbmZsaWN0aW5nIGRlY2xhcmF0aW9uczogJyVzJXMnIGFuZCAnJXMlcycAQ2FuJ3QgY3JlYXRlIGEgJXMgZnJvbSB3aXRoaW4gYW5vdGhlciBzdG9yZWQgcm91dGluZQAlcyAlcyBhbHJlYWR5IGV4aXN0cwAlcyAlcyBkb2VzIG5vdCBleGlzdABGYWlsZWQgdG8gRFJPUCAlcyAlcwBGYWlsZWQgdG8gQ1JFQVRFICVzICVzACVzIHdpdGggbm8gbWF0Y2hpbmcgbGFiZWw6ICVzAFJlZGVmaW5pbmcgbGFiZWwgJXMARW5kLWxhYmVsICVzIHdpdGhvdXQgbWF0Y2gAUmVmZXJyaW5nIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgJXMAUFJPQ0VEVVJFICVzIGNhbid0IHJldHVybiBhIHJlc3VsdCBzZXQgaW4gdGhlIGdpdmVuIGNvbnRleHQAUkVUVVJOIGlzIG9ubHkgYWxsb3dlZCBpbiBhIEZVTkNUSU9OACVzIGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBwcm9jZWR1cmVzAFRoZSB1cGRhdGUgbG9nIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IHRoZSBiaW5hcnkgbG9nOyBTRVQgU1FMX0xPR19VUERBVEUgaGFzIGJlZW4gaWdub3JlZC4AVGhlIHVwZGF0ZSBsb2cgaXMgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQgYnkgdGhlIGJpbmFyeSBsb2c7IFNFVCBTUUxfTE9HX1VQREFURSBoYXMgYmVlbiB0cmFuc2xhdGVkIHRvIFNFVCBTUUxfTE9HX0JJTi4AUXVlcnkgZXhlY3V0aW9uIHdhcyBpbnRlcnJ1cHRlZABJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgJXMgJXM7IGV4cGVjdGVkICV1LCBnb3QgJXUAVW5kZWZpbmVkIENPTkRJVElPTjogJXMATm8gUkVUVVJOIGZvdW5kIGluIEZVTkNUSU9OICVzAEZVTkNUSU9OICVzIGVuZGVkIHdpdGhvdXQgUkVUVVJOAEN1cnNvciBzdGF0ZW1lbnQgbXVzdCBiZSBhIFNFTEVDVABDdXJzb3IgU0VMRUNUIG11c3Qgbm90IGhhdmUgSU5UTwBVbmRlZmluZWQgQ1VSU09SOiAlcwBDdXJzb3IgaXMgYWxyZWFkeSBvcGVuAEN1cnNvciBpcyBub3Qgb3BlbgBVbmRlY2xhcmVkIHZhcmlhYmxlOiAlcwBJbmNvcnJlY3QgbnVtYmVyIG9mIEZFVENIIHZhcmlhYmxlcwBObyBkYXRhIC0gemVybyByb3dzIGZldGNoZWQsIHNlbGVjdGVkLCBvciBwcm9jZXNzZWQARHVwbGljYXRlIHBhcmFtZXRlcjogJXMARHVwbGljYXRlIHZhcmlhYmxlOiAlcwBEdXBsaWNhdGUgY29uZGl0aW9uOiAlcwBEdXBsaWNhdGUgY3Vyc29yOiAlcwBGYWlsZWQgdG8gQUxURVIgJXMgJXMAU3VicXVlcnkgdmFsdWUgbm90IHN1cHBvcnRlZAAlcyBpcyBub3QgYWxsb3dlZCBpbiBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBWYXJpYWJsZSBvciBjb25kaXRpb24gZGVjbGFyYXRpb24gYWZ0ZXIgY3Vyc29yIG9yIGhhbmRsZXIgZGVjbGFyYXRpb24AQ3Vyc29yIGRlY2xhcmF0aW9uIGFmdGVyIGhhbmRsZXIgZGVjbGFyYXRpb24AQ2FzZSBub3QgZm91bmQgZm9yIENBU0Ugc3RhdGVtZW50AENvbmZpZ3VyYXRpb24gZmlsZSAnJS0uMTkycycgaXMgdG9vIGJpZwBNYWxmb3JtZWQgZmlsZSB0eXBlIGhlYWRlciBpbiBmaWxlICclLS4xOTJzJwBVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIHdoaWxlIHBhcnNpbmcgY29tbWVudCAnJS0uMjAwcycARXJyb3Igd2hpbGUgcGFyc2luZyBwYXJhbWV0ZXIgJyUtLjE5MnMnIChsaW5lOiAnJS0uMTkycycpAFVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgd2hpbGUgc2tpcHBpbmcgdW5rbm93biBwYXJhbWV0ZXIgJyUtLjE5MnMnAEVYUExBSU4vU0hPVyBjYW4gbm90IGJlIGlzc3VlZDsgbGFja2luZyBwcml2aWxlZ2VzIGZvciB1bmRlcmx5aW5nIHRhYmxlAEZpbGUgJyUtLjE5MnMnIGhhcyB1bmtub3duIHR5cGUgJyUtLjY0cycgaW4gaXRzIGhlYWRlcgAnJS0uMTkycy4lLS4xOTJzJyBpcyBub3QgJXMAQ29sdW1uICclLS4xOTJzJyBpcyBub3QgdXBkYXRhYmxlAFZpZXcncyBTRUxFQ1QgY29udGFpbnMgYSBzdWJxdWVyeSBpbiB0aGUgRlJPTSBjbGF1c2UAVmlldydzIFNFTEVDVCBjb250YWlucyBhICclcycgY2xhdXNlAFZpZXcncyBTRUxFQ1QgY29udGFpbnMgYSB2YXJpYWJsZSBvciBwYXJhbWV0ZXIAVmlldydzIFNFTEVDVCByZWZlcnMgdG8gYSB0ZW1wb3JhcnkgdGFibGUgJyUtLjE5MnMnAEluIGRlZmluaXRpb24gb2YgdmlldywgZGVyaXZlZCB0YWJsZSBvciBjb21tb24gdGFibGUgZXhwcmVzc2lvbiwgU0VMRUNUIGxpc3QgYW5kIGNvbHVtbiBuYW1lcyBsaXN0IGhhdmUgZGlmZmVyZW50IGNvbHVtbiBjb3VudHMAVmlldyBtZXJnZSBhbGdvcml0aG0gY2FuJ3QgYmUgdXNlZCBoZXJlIGZvciBub3cgKGFzc3VtZWQgdW5kZWZpbmVkIGFsZ29yaXRobSkAVmlldyBiZWluZyB1cGRhdGVkIGRvZXMgbm90IGhhdmUgY29tcGxldGUga2V5IG9mIHVuZGVybHlpbmcgdGFibGUgaW4gaXQAVmlldyAnJS0uMTkycy4lLS4xOTJzJyByZWZlcmVuY2VzIGludmFsaWQgdGFibGUocykgb3IgY29sdW1uKHMpIG9yIGZ1bmN0aW9uKHMpIG9yIGRlZmluZXIvaW52b2tlciBvZiB2aWV3IGxhY2sgcmlnaHRzIHRvIHVzZSB0aGVtAENhbid0IGRyb3Agb3IgYWx0ZXIgYSAlcyBmcm9tIHdpdGhpbiBhbm90aGVyIHN0b3JlZCByb3V0aW5lAEdPVE8gaXMgbm90IGFsbG93ZWQgaW4gYSBzdG9yZWQgcHJvY2VkdXJlIGhhbmRsZXIAVHJpZ2dlciBhbHJlYWR5IGV4aXN0cwBUcmlnZ2VyIGRvZXMgbm90IGV4aXN0AFRyaWdnZXIncyAnJS0uMTkycycgaXMgdmlldyBvciB0ZW1wb3JhcnkgdGFibGUAVXBkYXRpbmcgb2YgJXMgcm93IGlzIG5vdCBhbGxvd2VkIGluICVzdHJpZ2dlcgBUaGVyZSBpcyBubyAlcyByb3cgaW4gJXMgdHJpZ2dlcgBGaWVsZCAnJS0uMTkycycgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBEaXZpc2lvbiBieSAwAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgY29sdW1uICclLjE5MnMnIGF0IHJvdyAlbGQASWxsZWdhbCAlcyAnJS0uMTkycycgdmFsdWUgZm91bmQgZHVyaW5nIHBhcnNpbmcAQ0hFQ0sgT1BUSU9OIG9uIG5vbi11cGRhdGFibGUgdmlldyAnJS0uMTkycy4lLS4xOTJzJwBDSEVDSyBPUFRJT04gZmFpbGVkICclLS4xOTJzLiUtLjE5MnMnACUtLjE2cyBjb21tYW5kIGRlbmllZCB0byB1c2VyICclLS40OHMnQCclLS42NHMnIGZvciByb3V0aW5lICclLS4xOTJzJwBGYWlsZWQgcHVyZ2luZyBvbGQgcmVsYXkgbG9nczogJXMAUGFzc3dvcmQgaGFzaCBzaG91bGQgYmUgYSAlZC1kaWdpdCBoZXhhZGVjaW1hbCBudW1iZXIAVGFyZ2V0IGxvZyBub3QgZm91bmQgaW4gYmlubG9nIGluZGV4AEkvTyBlcnJvciByZWFkaW5nIGxvZyBpbmRleCBmaWxlAFNlcnZlciBjb25maWd1cmF0aW9uIGRvZXMgbm90IHBlcm1pdCBiaW5sb2cgcHVyZ2UARmFpbGVkIG9uIGZzZWVrKCkARmF0YWwgZXJyb3IgZHVyaW5nIGxvZyBwdXJnZQBBIHB1cmdlYWJsZSBsb2cgaXMgaW4gdXNlLCB3aWxsIG5vdCBwdXJnZQBVbmtub3duIGVycm9yIGR1cmluZyBsb2cgcHVyZ2UARmFpbGVkIGluaXRpYWxpemluZyByZWxheSBsb2cgcG9zaXRpb246ICVzAFlvdSBhcmUgbm90IHVzaW5nIGJpbmFyeSBsb2dnaW5nAFRoZSAnJS0uNjRzJyBzeW50YXggaXMgcmVzZXJ2ZWQgZm9yIHB1cnBvc2VzIGludGVybmFsIHRvIHRoZSBNeVNRTCBzZXJ2ZXIAV1NBU3RhcnR1cCBGYWlsZWQAQ2FuJ3QgaGFuZGxlIHByb2NlZHVyZXMgd2l0aCBkaWZmZXJlbnQgZ3JvdXBzIHlldABTZWxlY3QgbXVzdCBoYXZlIGEgZ3JvdXAgd2l0aCB0aGlzIHByb2NlZHVyZQBDYW4ndCB1c2UgT1JERVIgY2xhdXNlIHdpdGggdGhpcyBwcm9jZWR1cmUAQmluYXJ5IGxvZ2dpbmcgYW5kIHJlcGxpY2F0aW9uIGZvcmJpZCBjaGFuZ2luZyB0aGUgZ2xvYmFsIHNlcnZlciAlcwBDYW4ndCBtYXAgZmlsZTogJS0uMjAwcywgZXJybm86ICVkAFdyb25nIG1hZ2ljIGluICUtLjY0cwBQcmVwYXJlZCBzdGF0ZW1lbnQgY29udGFpbnMgdG9vIG1hbnkgcGxhY2Vob2xkZXJzAEtleSBwYXJ0ICclLS4xOTJzJyBsZW5ndGggY2Fubm90IGJlIDAAVmlldyB0ZXh0IGNoZWNrc3VtIGZhaWxlZABDYW4gbm90IG1vZGlmeSBtb3JlIHRoYW4gb25lIGJhc2UgdGFibGUgdGhyb3VnaCBhIGpvaW4gdmlldyAnJS0uMTkycy4lLS4xOTJzJwBDYW4gbm90IGluc2VydCBpbnRvIGpvaW4gdmlldyAnJS0uMTkycy4lLS4xOTJzJyB3aXRob3V0IGZpZWxkcyBsaXN0AENhbiBub3QgZGVsZXRlIGZyb20gam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAE9wZXJhdGlvbiAlcyBmYWlsZWQgZm9yICUuMjU2cwBYQUVSX05PVEE6IFVua25vd24gWElEAFhBRVJfSU5WQUw6IEludmFsaWQgYXJndW1lbnRzIChvciB1bnN1cHBvcnRlZCBjb21tYW5kKQBYQUVSX1JNRkFJTDogVGhlIGNvbW1hbmQgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gZ2xvYmFsIHRyYW5zYWN0aW9uIGlzIGluIHRoZSAgJS42NHMgc3RhdGUAWEFFUl9PVVRTSURFOiBTb21lIHdvcmsgaXMgZG9uZSBvdXRzaWRlIGdsb2JhbCB0cmFuc2FjdGlvbgBYQUVSX1JNRVJSOiBGYXRhbCBlcnJvciBvY2N1cnJlZCBpbiB0aGUgdHJhbnNhY3Rpb24gYnJhbmNoIC0gY2hlY2sgeW91ciBkYXRhIGZvciBjb25zaXN0ZW5jeQBYQV9SQlJPTExCQUNLOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrAFRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5lZCBmb3IgdXNlciAnJS0uNDhzJyBvbiBob3N0ICclLS4yNTVzJyBvbiByb3V0aW5lICclLS4xOTJzJwBGYWlsZWQgdG8gZ3JhbnQgRVhFQ1VURSBhbmQgQUxURVIgUk9VVElORSBwcml2aWxlZ2VzAEZhaWxlZCB0byByZXZva2UgYWxsIHByaXZpbGVnZXMgdG8gZHJvcHBlZCByb3V0aW5lAERhdGEgdG9vIGxvbmcgZm9yIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQAQmFkIFNRTFNUQVRFOiAnJXMnACVzOiByZWFkeSBmb3IgY29ubmVjdGlvbnMuIFZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQgICVzAENhbid0IGxvYWQgdmFsdWUgZnJvbSBmaWxlIHdpdGggZml4ZWQgc2l6ZSByb3dzIHRvIHZhcmlhYmxlAFlvdSBhcmUgbm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgdXNlciB3aXRoIEdSQU5UAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgZnVuY3Rpb24gJS0uMzJzAFRhYmxlIGRlZmluaXRpb24gaGFzIGNoYW5nZWQsIHBsZWFzZSByZXRyeSB0cmFuc2FjdGlvbgBEdXBsaWNhdGUgaGFuZGxlciBkZWNsYXJlZCBpbiB0aGUgc2FtZSBibG9jawBPVVQgb3IgSU5PVVQgYXJndW1lbnQgJWQgZm9yIHJvdXRpbmUgJXMgaXMgbm90IGEgdmFyaWFibGUgb3IgTkVXIHBzZXVkby12YXJpYWJsZSBpbiBCRUZPUkUgdHJpZ2dlcgBOb3QgYWxsb3dlZCB0byByZXR1cm4gYSByZXN1bHQgc2V0IGZyb20gYSAlcwBDYW5ub3QgZ2V0IGdlb21ldHJ5IG9iamVjdCBmcm9tIGRhdGEgeW91IHNlbmQgdG8gdGhlIEdFT01FVFJZIGZpZWxkAEEgcm91dGluZSBmYWlsZWQgYW5kIGhhcyBuZWl0aGVyIE5PIFNRTCBub3IgUkVBRFMgU1FMIERBVEEgaW4gaXRzIGRlY2xhcmF0aW9uIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkOyBpZiBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgd2VyZSB1cGRhdGVkLCB0aGUgYmluYXJ5IGxvZyB3aWxsIG1pc3MgdGhlaXIgY2hhbmdlcwBUaGlzIGZ1bmN0aW9uIGhhcyBub25lIG9mIERFVEVSTUlOSVNUSUMsIE5PIFNRTCwgb3IgUkVBRFMgU1FMIERBVEEgaW4gaXRzIGRlY2xhcmF0aW9uIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkICh5b3UgKm1pZ2h0KiB3YW50IHRvIHVzZSB0aGUgbGVzcyBzYWZlIGxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgdmFyaWFibGUpAFlvdSBkbyBub3QgaGF2ZSB0aGUgU1VQRVIgcHJpdmlsZWdlIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkICh5b3UgKm1pZ2h0KiB3YW50IHRvIHVzZSB0aGUgbGVzcyBzYWZlIGxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgdmFyaWFibGUpAFlvdSBjYW4ndCBleGVjdXRlIGEgcHJlcGFyZWQgc3RhdGVtZW50IHdoaWNoIGhhcyBhbiBvcGVuIGN1cnNvciBhc3NvY2lhdGVkIHdpdGggaXQuIFJlc2V0IHRoZSBzdGF0ZW1lbnQgdG8gcmUtZXhlY3V0ZSBpdC4AVGhlIHN0YXRlbWVudCAoJWx1KSBoYXMgbm8gb3BlbiBjdXJzb3IuAEV4cGxpY2l0IG9yIGltcGxpY2l0IGNvbW1pdCBpcyBub3QgYWxsb3dlZCBpbiBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlci4ARmllbGQgb2YgdmlldyAnJS0uMTkycy4lLS4xOTJzJyB1bmRlcmx5aW5nIHRhYmxlIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAUmVjdXJzaXZlIHN0b3JlZCBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBub3QgYWxsb3dlZC4AVG9vIGJpZyBzY2FsZSAlZCBzcGVjaWZpZWQgZm9yIGNvbHVtbiAnJS0uMTkycycuIE1heGltdW0gaXMgJWx1LgBUb28tYmlnIHByZWNpc2lvbiAlZCBzcGVjaWZpZWQgZm9yICclLS4xOTJzJy4gTWF4aW11bSBpcyAlbHUuAEZvciBmbG9hdChNLEQpLCBkb3VibGUoTSxEKSBvciBkZWNpbWFsKE0sRCksIE0gbXVzdCBiZSA+PSBEIChjb2x1bW4gJyUtLjE5MnMnKS4AWW91IGNhbid0IGNvbWJpbmUgd3JpdGUtbG9ja2luZyBvZiBzeXN0ZW0gdGFibGVzIHdpdGggb3RoZXIgdGFibGVzIG9yIGxvY2sgdHlwZXMAVW5hYmxlIHRvIGNvbm5lY3QgdG8gZm9yZWlnbiBkYXRhIHNvdXJjZTogJS42NHMAVGhlcmUgd2FzIGEgcHJvYmxlbSBwcm9jZXNzaW5nIHRoZSBxdWVyeSBvbiB0aGUgZm9yZWlnbiBkYXRhIHNvdXJjZS4gRGF0YSBzb3VyY2UgZXJyb3I6ICUtLjY0cwBUaGUgZm9yZWlnbiBkYXRhIHNvdXJjZSB5b3UgYXJlIHRyeWluZyB0byByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuIERhdGEgc291cmNlIGVycm9yOiAgJS0uNjRzAENhbid0IGNyZWF0ZSBmZWRlcmF0ZWQgdGFibGUuIFRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uIHN0cmluZyAnJS0uNjRzJyBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0AFRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uIHN0cmluZyAnJS0uNjRzJyBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0AENhbid0IGNyZWF0ZSBmZWRlcmF0ZWQgdGFibGUuIEZvcmVpZ24gZGF0YSBzcmMgZXJyb3I6ICAlLS42NHMAVHJpZ2dlciBpbiB3cm9uZyBzY2hlbWEAVGhyZWFkIHN0YWNrIG92ZXJydW46ICAlbGQgYnl0ZXMgdXNlZCBvZiBhICVsZCBieXRlIHN0YWNrLCBhbmQgJWxkIGJ5dGVzIG5lZWRlZC4gIFVzZSAnbXlzcWxkIC0tdGhyZWFkX3N0YWNrPSMnIHRvIHNwZWNpZnkgYSBiaWdnZXIgc3RhY2suAFJvdXRpbmUgYm9keSBmb3IgJyUtLjEwMHMnIGlzIHRvbyBsb25nAENhbm5vdCBkcm9wIGRlZmF1bHQga2V5Y2FjaGUARGlzcGxheSB3aWR0aCBvdXQgb2YgcmFuZ2UgZm9yIGNvbHVtbiAnJS0uMTkycycgKG1heCA9ICVsdSkAWEFFUl9EVVBJRDogVGhlIFhJRCBhbHJlYWR5IGV4aXN0cwBEYXRldGltZSBmdW5jdGlvbjogJS0uMzJzIGZpZWxkIG92ZXJmbG93AENhbid0IHVwZGF0ZSB0YWJsZSAnJS0uMTkycycgaW4gc3RvcmVkIGZ1bmN0aW9uL3RyaWdnZXIgYmVjYXVzZSBpdCBpcyBhbHJlYWR5IHVzZWQgYnkgc3RhdGVtZW50IHdoaWNoIGludm9rZWQgdGhpcyBzdG9yZWQgZnVuY3Rpb24vdHJpZ2dlci4AVGhlIGRlZmluaXRpb24gb2YgdGFibGUgJyUtLjE5MnMnIHByZXZlbnRzIG9wZXJhdGlvbiAlLjE5MnMgb24gdGFibGUgJyUtLjE5MnMnLgBUaGUgcHJlcGFyZWQgc3RhdGVtZW50IGNvbnRhaW5zIGEgc3RvcmVkIHJvdXRpbmUgY2FsbCB0aGF0IHJlZmVycyB0byB0aGF0IHNhbWUgc3RhdGVtZW50LiBJdCdzIG5vdCBhbGxvd2VkIHRvIGV4ZWN1dGUgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgaW4gc3VjaCBhIHJlY3Vyc2l2ZSBtYW5uZXIATm90IGFsbG93ZWQgdG8gc2V0IGF1dG9jb21taXQgZnJvbSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAERlZmluZXIgaXMgbm90IGZ1bGx5IHF1YWxpZmllZABWaWV3ICclLS4xOTJzJy4nJS0uMTkycycgaGFzIG5vIGRlZmluZXIgaW5mb3JtYXRpb24gKG9sZCB0YWJsZSBmb3JtYXQpLiBDdXJyZW50IHVzZXIgaXMgdXNlZCBhcyBkZWZpbmVyLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHZpZXchAFlvdSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIGNyZWF0aW9uIHZpZXcgd2l0aCAnJS0uMTkycydAJyUtLjE5MnMnIGRlZmluZXIAVGhlIHVzZXIgc3BlY2lmaWVkIGFzIGEgZGVmaW5lciAoJyUtLjY0cydAJyUtLjY0cycpIGRvZXMgbm90IGV4aXN0AENoYW5naW5nIHNjaGVtYSBmcm9tICclLS4xOTJzJyB0byAnJS0uMTkycycgaXMgbm90IGFsbG93ZWQuAENhbm5vdCBkZWxldGUgb3IgdXBkYXRlIGEgcGFyZW50IHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzICglLjE5MnMpAENhbm5vdCBhZGQgb3IgdXBkYXRlIGEgY2hpbGQgcm93OiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZmFpbHMgKCUuMTkycykAVmFyaWFibGUgJyUtLjY0cycgbXVzdCBiZSBxdW90ZWQgd2l0aCBgLi4uYCwgb3IgcmVuYW1lZABObyBkZWZpbmVyIGF0dHJpYnV0ZSBmb3IgdHJpZ2dlciAnJS0uMTkycycuJyUtLjE5MnMnLiBJdCdzIGRpc2FsbG93ZWQgdG8gY3JlYXRlIHRyaWdnZXIgd2l0aG91dCBkZWZpbmVyLgAnJS0uMTkycycgaGFzIGFuIG9sZCBmb3JtYXQsIHlvdSBzaG91bGQgcmUtY3JlYXRlIHRoZSAnJXMnIG9iamVjdChzKQBSZWN1cnNpdmUgbGltaXQgJWQgKGFzIHNldCBieSB0aGUgbWF4X3NwX3JlY3Vyc2lvbl9kZXB0aCB2YXJpYWJsZSkgd2FzIGV4Y2VlZGVkIGZvciByb3V0aW5lICUuMTkycwBGYWlsZWQgdG8gbG9hZCByb3V0aW5lICUtLjE5MnMuIFRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGUgbWlzc2luZywgY29ycnVwdCwgb3IgY29udGFpbnMgYmFkIGRhdGEgKGludGVybmFsIGNvZGUgJWQpAEluY29ycmVjdCByb3V0aW5lIG5hbWUgJyUtLjE5MnMnAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkbyAiUkVQQUlSIFRBQkxFIGAlLS42NHNgIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAEFHR1JFR0FURSBpcyBub3Qgc3VwcG9ydGVkIGZvciBzdG9yZWQgZnVuY3Rpb25zAENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gbWF4X3ByZXBhcmVkX3N0bXRfY291bnQgc3RhdGVtZW50cyAoY3VycmVudCB2YWx1ZTogJWx1KQBgJS0uMTkyc2AuYCUtLjE5MnNgIGNvbnRhaW5zIHZpZXcgcmVjdXJzaW9uAE5vbi1ncm91cGluZyBmaWVsZCAnJS0uMTkycycgaXMgdXNlZCBpbiAlLS42NHMgY2xhdXNlAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IFNQQVRJQUwgaW5kZXhlcwBUcmlnZ2VycyBjYW4gbm90IGJlIGNyZWF0ZWQgb24gc3lzdGVtIHRhYmxlcwBMZWFkaW5nIHNwYWNlcyBhcmUgcmVtb3ZlZCBmcm9tIG5hbWUgJyVzJwBGYWlsZWQgdG8gcmVhZCBhdXRvLWluY3JlbWVudCB2YWx1ZSBmcm9tIHN0b3JhZ2UgZW5naW5lAHVzZXIgbmFtZQBob3N0IG5hbWUAU3RyaW5nICclLS43MHMnIGlzIHRvbyBsb25nIGZvciAlcyAoc2hvdWxkIGJlIG5vIGxvbmdlciB0aGFuICVkKQBUaGUgdGFyZ2V0IHRhYmxlICUtLjEwMHMgb2YgdGhlICVzIGlzIG5vdCBpbnNlcnRhYmxlLWludG8AVGFibGUgJyUtLjY0cycgaXMgZGlmZmVyZW50bHkgZGVmaW5lZCBvciBvZiBub24tTXlJU0FNIHR5cGUgb3IgZG9lc24ndCBleGlzdABUb28gaGlnaCBsZXZlbCBvZiBuZXN0aW5nIGZvciBzZWxlY3QATmFtZSAnJS0uNjRzJyBoYXMgYmVjb21lICcnAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgRklFTERTIFRFUk1JTkFURUQgc3RyaW5nIGlzIGFtYmlndW91czsgcGxlYXNlIHVzZSBub24tb3B0aW9uYWwgYW5kIG5vbi1lbXB0eSBGSUVMRFMgRU5DTE9TRUQgQlkAVGhlIGZvcmVpZ24gc2VydmVyLCAlcywgeW91IGFyZSB0cnlpbmcgdG8gY3JlYXRlIGFscmVhZHkgZXhpc3RzLgBUaGUgZm9yZWlnbiBzZXJ2ZXIgbmFtZSB5b3UgYXJlIHRyeWluZyB0byByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuIERhdGEgc291cmNlIGVycm9yOiAgJS0uNjRzAFRhYmxlIHN0b3JhZ2UgZW5naW5lICclLS42NHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJyUuNjRzJwBTeW50YXggZXJyb3I6ICUtLjY0cyBQQVJUSVRJT05JTkcgcmVxdWlyZXMgZGVmaW5pdGlvbiBvZiBWQUxVRVMgJS0uNjRzIGZvciBlYWNoIHBhcnRpdGlvbgBPbmx5ICUtLjY0cyBQQVJUSVRJT05JTkcgY2FuIHVzZSBWQUxVRVMgJS0uNjRzIGluIHBhcnRpdGlvbiBkZWZpbml0aW9uAE1BWFZBTFVFIGNhbiBvbmx5IGJlIHVzZWQgaW4gbGFzdCBwYXJ0aXRpb24gZGVmaW5pdGlvbgBTdWJwYXJ0aXRpb25zIGNhbiBvbmx5IGJlIGhhc2ggcGFydGl0aW9ucyBhbmQgYnkga2V5AE11c3QgZGVmaW5lIHN1YnBhcnRpdGlvbnMgb24gYWxsIHBhcnRpdGlvbnMgaWYgb24gb25lIHBhcnRpdGlvbgBXcm9uZyBudW1iZXIgb2YgcGFydGl0aW9ucyBkZWZpbmVkLCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIHNldHRpbmcAV3JvbmcgbnVtYmVyIG9mIHN1YnBhcnRpdGlvbnMgZGVmaW5lZCwgbWlzbWF0Y2ggd2l0aCBwcmV2aW91cyBzZXR0aW5nAENvbnN0YW50LCByYW5kb20gb3IgdGltZXpvbmUtZGVwZW5kZW50IGV4cHJlc3Npb25zIGluIChzdWIpcGFydGl0aW9uaW5nIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZABFeHByZXNzaW9uIGluIFJBTkdFL0xJU1QgVkFMVUVTIG11c3QgYmUgY29uc3RhbnQARmllbGQgaW4gbGlzdCBvZiBmaWVsZHMgZm9yIHBhcnRpdGlvbiBmdW5jdGlvbiBub3QgZm91bmQgaW4gdGFibGUATGlzdCBvZiBmaWVsZHMgaXMgb25seSBhbGxvd2VkIGluIEtFWSBwYXJ0aXRpb25zAFRoZSBwYXJ0aXRpb24gaW5mbyBpbiB0aGUgZnJtIGZpbGUgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB3aGF0IGNhbiBiZSB3cml0dGVuIGludG8gdGhlIGZybSBmaWxlAFRoZSAlLS4xOTJzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHdyb25nIHR5cGUARm9yICUtLjY0cyBwYXJ0aXRpb25zIGVhY2ggcGFydGl0aW9uIG11c3QgYmUgZGVmaW5lZABWQUxVRVMgTEVTUyBUSEFOIHZhbHVlIG11c3QgYmUgc3RyaWN0bHkgaW5jcmVhc2luZyBmb3IgZWFjaCBwYXJ0aXRpb24AVkFMVUVTIHZhbHVlIG11c3QgYmUgb2Ygc2FtZSB0eXBlIGFzIHBhcnRpdGlvbiBmdW5jdGlvbgBNdWx0aXBsZSBkZWZpbml0aW9uIG9mIHNhbWUgY29uc3RhbnQgaW4gbGlzdCBwYXJ0aXRpb25pbmcAUGFydGl0aW9uaW5nIGNhbiBub3QgYmUgdXNlZCBzdGFuZC1hbG9uZSBpbiBxdWVyeQBUaGUgbWl4IG9mIGhhbmRsZXJzIGluIHRoZSBwYXJ0aXRpb25zIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgdmVyc2lvbiBvZiBNeVNRTABGb3IgdGhlIHBhcnRpdGlvbmVkIGVuZ2luZSBpdCBpcyBuZWNlc3NhcnkgdG8gZGVmaW5lIGFsbCAlLS42NHMAVG9vIG1hbnkgcGFydGl0aW9ucyAoaW5jbHVkaW5nIHN1YnBhcnRpdGlvbnMpIHdlcmUgZGVmaW5lZABJdCBpcyBvbmx5IHBvc3NpYmxlIHRvIG1peCBSQU5HRS9MSVNUIHBhcnRpdGlvbmluZyB3aXRoIEhBU0gvS0VZIHBhcnRpdGlvbmluZyBmb3Igc3VicGFydGl0aW9uaW5nAEZhaWxlZCB0byBjcmVhdGUgc3BlY2lmaWMgaGFuZGxlciBmaWxlAEEgQkxPQiBmaWVsZCBpcyBub3QgYWxsb3dlZCBpbiBwYXJ0aXRpb24gZnVuY3Rpb24AQSAlLS4xOTJzIG11c3QgaW5jbHVkZSBhbGwgY29sdW1ucyBpbiB0aGUgdGFibGUncyBwYXJ0aXRpb25pbmcgZnVuY3Rpb24gKHByZWZpeGVkIGNvbHVtbnMgYXJlIG5vdCBjb25zaWRlcmVkKS4ATnVtYmVyIG9mICUtLjY0cyA9IDAgaXMgbm90IGFuIGFsbG93ZWQgdmFsdWUAUGFydGl0aW9uIG1hbmFnZW1lbnQgb24gYSBub3QgcGFydGl0aW9uZWQgdGFibGUgaXMgbm90IHBvc3NpYmxlAEZvcmVpZ24ga2V5cyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBwYXJ0aXRpb25pbmcARXJyb3IgaW4gbGlzdCBvZiBwYXJ0aXRpb25zIHRvICUtLjY0cwBDYW5ub3QgcmVtb3ZlIGFsbCBwYXJ0aXRpb25zLCB1c2UgRFJPUCBUQUJMRSBpbnN0ZWFkAENPQUxFU0NFIFBBUlRJVElPTiBjYW4gb25seSBiZSB1c2VkIG9uIEhBU0gvS0VZIHBhcnRpdGlvbnMAUkVPUkdBTklaRSBQQVJUSVRJT04gY2FuIG9ubHkgYmUgdXNlZCB0byByZW9yZ2FuaXplIHBhcnRpdGlvbnMgbm90IHRvIGNoYW5nZSB0aGVpciBudW1iZXJzAFJFT1JHQU5JWkUgUEFSVElUSU9OIHdpdGhvdXQgcGFyYW1ldGVycyBjYW4gb25seSBiZSB1c2VkIG9uIGF1dG8tcGFydGl0aW9uZWQgdGFibGVzIHVzaW5nIEhBU0ggUEFSVElUSU9OcwAlLS42NHMgUEFSVElUSU9OIGNhbiBvbmx5IGJlIHVzZWQgb24gUkFOR0UvTElTVCBwYXJ0aXRpb25zAFRyeWluZyB0byBBZGQgcGFydGl0aW9uKHMpIHdpdGggd3JvbmcgbnVtYmVyIG9mIHN1YnBhcnRpdGlvbnMAQXQgbGVhc3Qgb25lIHBhcnRpdGlvbiBtdXN0IGJlIGFkZGVkAEF0IGxlYXN0IG9uZSBwYXJ0aXRpb24gbXVzdCBiZSBjb2FsZXNjZWQATW9yZSBwYXJ0aXRpb25zIHRvIHJlb3JnYW5pemUgdGhhbiB0aGVyZSBhcmUgcGFydGl0aW9ucwBEdXBsaWNhdGUgcGFydGl0aW9uIG5hbWUgJS0uMTkycwBJdCBpcyBub3QgYWxsb3dlZCB0byBzaHV0IG9mZiBiaW5sb2cgb24gdGhpcyBjb21tYW5kAFdoZW4gcmVvcmdhbml6aW5nIGEgc2V0IG9mIHBhcnRpdGlvbnMgdGhleSBtdXN0IGJlIGluIGNvbnNlY3V0aXZlIG9yZGVyAFJlb3JnYW5pemUgb2YgcmFuZ2UgcGFydGl0aW9ucyBjYW5ub3QgY2hhbmdlIHRvdGFsIHJhbmdlcyBleGNlcHQgZm9yIGxhc3QgcGFydGl0aW9uIHdoZXJlIGl0IGNhbiBleHRlbmQgdGhlIHJhbmdlAFBhcnRpdGlvbiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbiBmb3IgdGhpcyBoYW5kbGVyAFBhcnRpdGlvbiBzdGF0ZSBjYW5ub3QgYmUgZGVmaW5lZCBmcm9tIENSRUFURS9BTFRFUiBUQUJMRQBUaGUgJS0uNjRzIGhhbmRsZXIgb25seSBzdXBwb3J0cyAzMiBiaXQgaW50ZWdlcnMgaW4gVkFMVUVTAFBsdWdpbiAnJS0uMTkycycgaXMgbm90IGxvYWRlZABJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycAVGFibGUgaGFzIG5vIHBhcnRpdGlvbiBmb3IgdmFsdWUgJS0uNjRzAEl0IGlzIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgJXMgbW9yZSB0aGFuIG9uY2UARmFpbGVkIHRvIGNyZWF0ZSAlcwBGYWlsZWQgdG8gZHJvcCAlcwBUaGUgaGFuZGxlciBkb2Vzbid0IHN1cHBvcnQgYXV0b2V4dGVuZCBvZiB0YWJsZXNwYWNlcwBBIHNpemUgcGFyYW1ldGVyIHdhcyBpbmNvcnJlY3RseSBzcGVjaWZpZWQsIGVpdGhlciBudW1iZXIgb3Igb24gdGhlIGZvcm0gMTBNAFRoZSBzaXplIG51bWJlciB3YXMgY29ycmVjdCBidXQgd2UgZG9uJ3QgYWxsb3cgdGhlIGRpZ2l0IHBhcnQgdG8gYmUgbW9yZSB0aGFuIDIgYmlsbGlvbgBGYWlsZWQgdG8gYWx0ZXI6ICVzAFdyaXRpbmcgb25lIHJvdyB0byB0aGUgcm93LWJhc2VkIGJpbmFyeSBsb2cgZmFpbGVkAFRhYmxlIGRlZmluaXRpb24gb24gc291cmNlIGFuZCByZXBsaWNhIGRvZXMgbm90IG1hdGNoOiAlcwBSZXBsaWNhIHJ1bm5pbmcgd2l0aCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMgbXVzdCB1c2Ugcm93LWJhc2VkIGJpbmFyeSBsb2dnaW5nIHRvIGJlIGFibGUgdG8gcmVwbGljYXRlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGV2ZW50cwBFdmVudCAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMARmFpbGVkIHRvIHN0b3JlIGV2ZW50ICVzLiBFcnJvciBjb2RlICVkIGZyb20gc3RvcmFnZSBlbmdpbmUuAFVua25vd24gZXZlbnQgJyUtLjE5MnMnAEZhaWxlZCB0byBhbHRlciBldmVudCAnJS0uMTkycycARmFpbGVkIHRvIGRyb3AgJXMASU5URVJWQUwgaXMgZWl0aGVyIG5vdCBwb3NpdGl2ZSBvciB0b28gYmlnAEVORFMgaXMgZWl0aGVyIGludmFsaWQgb3IgYmVmb3JlIFNUQVJUUwBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdC4gRXZlbnQgaGFzIGJlZW4gZGlzYWJsZWQARmFpbGVkIHRvIG9wZW4gbXlzcWwuZXZlbnQATm8gZGF0ZXRpbWUgZXhwcmVzc2lvbiBwcm92aWRlZABDb2x1bW4gY291bnQgb2YgbXlzcWwuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZABDYW5ub3QgbG9hZCBmcm9tIG15c3FsLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAEZhaWxlZCB0byBkZWxldGUgdGhlIGV2ZW50IGZyb20gbXlzcWwuZXZlbnQARXJyb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIGV2ZW50J3MgYm9keQBTYW1lIG9sZCBhbmQgbmV3IGV2ZW50IG5hbWUARGF0YSBmb3IgY29sdW1uICclcycgdG9vIGxvbmcAQ2Fubm90IGRyb3AgaW5kZXggJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50AFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTXlTUUwgJXMuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZABZb3UgY2FuJ3Qgd3JpdGUtbG9jayBhIGxvZyB0YWJsZS4gT25seSByZWFkIGFjY2VzcyBpcyBwb3NzaWJsZQBZb3UgY2FuJ3QgdXNlIGxvY2tzIHdpdGggbG9nIHRhYmxlcy4AVXBob2xkaW5nIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGZvciB0YWJsZSAnJS4xOTJzJywgZW50cnkgJyUtLjE5MnMnLCBrZXkgJWQgd291bGQgbGVhZCB0byBhIGR1cGxpY2F0ZSBlbnRyeQBUaGUgY29sdW1uIGNvdW50IG9mIG15c3FsLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIENyZWF0ZWQgd2l0aCBNeVNRTCAlZCwgbm93IHJ1bm5pbmcgJWQuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQ2Fubm90IHN3aXRjaCBvdXQgb2YgdGhlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGZvcm1hdCB3aGVuIHRoZSBzZXNzaW9uIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZXMAQ2Fubm90IGNoYW5nZSB0aGUgYmluYXJ5IGxvZ2dpbmcgZm9ybWF0IGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAFRoZSBOREIgY2x1c3RlciBlbmdpbmUgZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgYmlubG9nIGZvcm1hdCBvbiB0aGUgZmx5IHlldABDYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSB0YWJsZSB3aXRoIHBhcnRpdGlvbnMAUGFydGl0aW9uIGNvbnN0YW50IGlzIG91dCBvZiBwYXJ0aXRpb24gZnVuY3Rpb24gZG9tYWluAFRoaXMgcGFydGl0aW9uIGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkAEVycm9yIGluIERETCBsb2cATm90IGFsbG93ZWQgdG8gdXNlIE5VTEwgdmFsdWUgaW4gVkFMVUVTIExFU1MgVEhBTgBJbmNvcnJlY3QgcGFydGl0aW9uIG5hbWUAVHJhbnNhY3Rpb24gY2hhcmFjdGVyaXN0aWNzIGNhbid0IGJlIGNoYW5nZWQgd2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcwBBTFRFUiBUQUJMRSBjYXVzZXMgYXV0b19pbmNyZW1lbnQgcmVzZXF1ZW5jaW5nLCByZXN1bHRpbmcgaW4gZHVwbGljYXRlIGVudHJ5ICclLS4xOTJzJyBmb3Iga2V5ICclLS4xOTJzJwBJbnRlcm5hbCBzY2hlZHVsZXIgZXJyb3IgJWQARXJyb3IgZHVyaW5nIHN0YXJ0aW5nL3N0b3BwaW5nIG9mIHRoZSBzY2hlZHVsZXIuIEVycm9yIGNvZGUgJXUARW5naW5lIGNhbm5vdCBiZSB1c2VkIGluIHBhcnRpdGlvbmVkIHRhYmxlcwBDYW5ub3QgYWN0aXZhdGUgJyUtLjY0cycgbG9nAFRoZSBzZXJ2ZXIgd2FzIG5vdCBidWlsdCB3aXRoIHJvdy1iYXNlZCByZXBsaWNhdGlvbgBEZWNvZGluZyBvZiBiYXNlNjQgc3RyaW5nIGZhaWxlZABSZWN1cnNpb24gb2YgRVZFTlQgRERMIHN0YXRlbWVudHMgaXMgZm9yYmlkZGVuIHdoZW4gYm9keSBpcyBwcmVzZW50AENhbm5vdCBwcm9jZWVkIGJlY2F1c2Ugc3lzdGVtIHRhYmxlcyB1c2VkIGJ5IEV2ZW50IFNjaGVkdWxlciB3ZXJlIGZvdW5kIGRhbWFnZWQgYXQgc2VydmVyIHN0YXJ0AE9ubHkgaW50ZWdlcnMgYWxsb3dlZCBhcyBudW1iZXIgaGVyZQBUaGlzIHN0b3JhZ2UgZW5naW5lIGNhbm5vdCBiZSB1c2VkIGZvciBsb2cgdGFibGVzAFlvdSBjYW5ub3QgJyVzJyBhIGxvZyB0YWJsZSBpZiBsb2dnaW5nIGlzIGVuYWJsZWQAQ2Fubm90IHJlbmFtZSAnJXMnLiBXaGVuIGxvZ2dpbmcgZW5hYmxlZCwgcmVuYW1lIHRvL2Zyb20gbG9nIHRhYmxlIG11c3QgcmVuYW1lIHR3byB0YWJsZXM6IHRoZSBsb2cgdGFibGUgdG8gYW4gYXJjaGl2ZSB0YWJsZSBhbmQgYW5vdGhlciB0YWJsZSBiYWNrIHRvICclcycASW5jb3JyZWN0IHBhcmFtZXRlciBjb3VudCBpbiB0aGUgY2FsbCB0byBuYXRpdmUgZnVuY3Rpb24gJyUtLjE5MnMnAEluY29ycmVjdCBwYXJhbWV0ZXJzIGluIHRoZSBjYWxsIHRvIG5hdGl2ZSBmdW5jdGlvbiAnJS0uMTkycycASW5jb3JyZWN0IHBhcmFtZXRlcnMgaW4gdGhlIGNhbGwgdG8gc3RvcmVkIGZ1bmN0aW9uICUtLjE5MnMAVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBuYXRpdmUgZnVuY3Rpb24ARHVwbGljYXRhIGR1IGNoYW1wICclLS42NHMnIHBvdXIgbGEgY2xlZiAnJS0uMzg1cycAVG9vIG1hbnkgZmlsZXMgb3BlbmVkLCBwbGVhc2UgZXhlY3V0ZSB0aGUgY29tbWFuZCBhZ2FpbgBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdCBhbmQgT04gQ09NUExFVElPTiBOT1QgUFJFU0VSVkUgaXMgc2V0LiBUaGUgZXZlbnQgd2FzIGRyb3BwZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpb24uAEV2ZW50IGV4ZWN1dGlvbiB0aW1lIGlzIGluIHRoZSBwYXN0IGFuZCBPTiBDT01QTEVUSU9OIE5PVCBQUkVTRVJWRSBpcyBzZXQuIFRoZSBldmVudCB3YXMgbm90IGNoYW5nZWQuIFNwZWNpZnkgYSB0aW1lIGluIHRoZSBmdXR1cmUuAFRoZSBpbmNpZGVudCAlcyBvY2N1cnJlZCBvbiB0aGUgc291cmNlLiBNZXNzYWdlOiAlcwBUYWJsZSBoYXMgbm8gcGFydGl0aW9uIGZvciBzb21lIGV4aXN0aW5nIHZhbHVlcwBVbnNhZmUgc3RhdGVtZW50IHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cgdXNpbmcgc3RhdGVtZW50IGZvcm1hdCBzaW5jZSBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5ULiAlcwBGYXRhbCBlcnJvcjogJXMAUmVsYXkgbG9nIHJlYWQgZmFpbHVyZTogJXMAUmVsYXkgbG9nIHdyaXRlIGZhaWx1cmU6ICVzAEZhaWxlZCB0byBjcmVhdGUgJXMAU291cmNlIGNvbW1hbmQgJXMgZmFpbGVkOiAlcwBCaW5hcnkgbG9nZ2luZyBub3QgcG9zc2libGUuIE1lc3NhZ2U6ICVzAFZpZXcgYCUtLjY0c2AuYCUtLjY0c2AgaGFzIG5vIGNyZWF0aW9uIGNvbnRleHQAQ3JlYXRpb24gY29udGV4dCBvZiB2aWV3IGAlLS42NHNgLmAlLS42NHMnIGlzIGludmFsaWQAQ3JlYXRpb24gY29udGV4dCBvZiBzdG9yZWQgcm91dGluZSBgJS0uNjRzYC5gJS0uNjRzYCBpcyBpbnZhbGlkAENvcnJ1cHRlZCBUUkcgZmlsZSBmb3IgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AAVHJpZ2dlcnMgZm9yIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgIGhhdmUgbm8gY3JlYXRpb24gY29udGV4dABUcmlnZ2VyIGNyZWF0aW9uIGNvbnRleHQgb2YgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AgaXMgaW52YWxpZABDcmVhdGlvbiBjb250ZXh0IG9mIGV2ZW50IGAlLS42NHNgLmAlLS42NHNgIGlzIGludmFsaWQAQ2Fubm90IG9wZW4gdGFibGUgZm9yIHRyaWdnZXIgYCUtLjY0c2AuYCUtLjY0c2AAQ2Fubm90IGNyZWF0ZSBzdG9yZWQgcm91dGluZSBgJS0uNjRzYC4gQ2hlY2sgd2FybmluZ3MAQW1iaWd1b3VzIHJlcGxpY2EgbW9kZXMgY29tYmluYXRpb24uICVzAFRoZSBCSU5MT0cgc3RhdGVtZW50IG9mIHR5cGUgYCVzYCB3YXMgbm90IHByZWNlZGVkIGJ5IGEgZm9ybWF0IGRlc2NyaXB0aW9uIEJJTkxPRyBzdGF0ZW1lbnQuAENvcnJ1cHRlZCByZXBsaWNhdGlvbiBldmVudCB3YXMgZGV0ZWN0ZWQASW52YWxpZCBjb2x1bW4gcmVmZXJlbmNlICglLS42NHMpIGluIExPQUQgREFUQQBCZWluZyBwdXJnZWQgbG9nICVzIHdhcyBub3QgZm91bmQAWEFfUkJUSU1FT1VUOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrOiB0b29rIHRvbyBsb25nAFhBX1JCREVBRExPQ0s6IFRyYW5zYWN0aW9uIGJyYW5jaCB3YXMgcm9sbGVkIGJhY2s6IGRlYWRsb2NrIHdhcyBkZXRlY3RlZABQcmVwYXJlZCBzdGF0ZW1lbnQgbmVlZHMgdG8gYmUgcmUtcHJlcGFyZWQAREVMQVlFRCBvcHRpb24gbm90IHN1cHBvcnRlZCBmb3IgdGFibGUgJyUtLjE5MnMnAFRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBkb2VzIG5vdCBleGlzdAA8JS0uNjRzPiBvcHRpb24gaWdub3JlZABCdWlsdC1pbiBwbHVnaW5zIGNhbm5vdCBiZSBkZWxldGVkAFBsdWdpbiBpcyBidXN5IGFuZCB3aWxsIGJlIHVuaW5zdGFsbGVkIG9uIHNodXRkb3duACVzIHZhcmlhYmxlICclcycgaXMgcmVhZC1vbmx5LiBVc2UgU0VUICVzIHRvIGFzc2lnbiB0aGUgdmFsdWUAU3RvcmFnZSBlbmdpbmUgJXMgZG9lcyBub3Qgc3VwcG9ydCByb2xsYmFjayBmb3IgdGhpcyBzdGF0ZW1lbnQuIFRyYW5zYWN0aW9uIHJvbGxlZCBiYWNrIGFuZCBtdXN0IGJlIHJlc3RhcnRlZABVbmV4cGVjdGVkIHNvdXJjZSdzIGhlYXJ0YmVhdCBkYXRhOiAlcwBUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBpcyBlaXRoZXIgbmVnYXRpdmUgb3IgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkICglcyBzZWNvbmRzKS4AQmFkIHNjaGVtYSBmb3IgbXlzcWwubmRiX3JlcGxpY2F0aW9uIHRhYmxlLiBNZXNzYWdlOiAlLS42NHMARXJyb3IgaW4gcGFyc2luZyBjb25mbGljdCBmdW5jdGlvbi4gTWVzc2FnZTogJS0uNjRzAFdyaXRlIHRvIGV4Y2VwdGlvbnMgdGFibGUgZmFpbGVkLiBNZXNzYWdlOiAlLS4xMjhzAENvbW1lbnQgZm9yIHRhYmxlICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAENvbW1lbnQgZm9yIGZpZWxkICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAEZVTkNUSU9OICVzIGRvZXMgbm90IGV4aXN0LiBDaGVjayB0aGUgJ0Z1bmN0aW9uIE5hbWUgUGFyc2luZyBhbmQgUmVzb2x1dGlvbicgc2VjdGlvbiBpbiB0aGUgUmVmZXJlbmNlIE1hbnVhbABEYXRhYmFzZQBUYWJsZQBQYXJ0aXRpb24AU3VicGFydGl0aW9uAFRlbXBvcmFyeQBSZW5hbWVkAFRvbyBtYW55IGFjdGl2ZSBjb25jdXJyZW50IHRyYW5zYWN0aW9ucwBOb24tQVNDSUkgc2VwYXJhdG9yIGFyZ3VtZW50cyBhcmUgbm90IGZ1bGx5IHN1cHBvcnRlZABkZWJ1ZyBzeW5jIHBvaW50IHdhaXQgdGltZWQgb3V0AGRlYnVnIHN5bmMgcG9pbnQgaGl0IGxpbWl0IHJlYWNoZWQARHVwbGljYXRlIGNvbmRpdGlvbiBpbmZvcm1hdGlvbiBpdGVtICclcycAVW5oYW5kbGVkIHVzZXItZGVmaW5lZCB3YXJuaW5nIGNvbmRpdGlvbgBVbmhhbmRsZWQgdXNlci1kZWZpbmVkIG5vdCBmb3VuZCBjb25kaXRpb24AVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBleGNlcHRpb24gY29uZGl0aW9uAFJFU0lHTkFMIHdoZW4gaGFuZGxlciBub3QgYWN0aXZlAFNJR05BTC9SRVNJR05BTCBjYW4gb25seSB1c2UgYSBDT05ESVRJT04gZGVmaW5lZCB3aXRoIFNRTFNUQVRFAERhdGEgdHJ1bmNhdGVkIGZvciBjb25kaXRpb24gaXRlbSAnJXMnAERhdGEgdG9vIGxvbmcgZm9yIGNvbmRpdGlvbiBpdGVtICclcycAVW5rbm93biBsb2NhbGU6ICclLS42NHMnAFRoZSByZXF1ZXN0ZWQgc2VydmVyIGlkICVkIGNsYXNoZXMgd2l0aCB0aGUgcmVwbGljYSBzdGFydHVwIG9wdGlvbiAtLXJlcGxpY2F0ZS1zYW1lLXNlcnZlci1pZABRdWVyeSBjYWNoZSBpcyBkaXNhYmxlZDsgcmVzdGFydCB0aGUgc2VydmVyIHdpdGggcXVlcnlfY2FjaGVfdHlwZT0xIHRvIGVuYWJsZSBpdABEdXBsaWNhdGUgcGFydGl0aW9uIGZpZWxkIG5hbWUgJyUtLjE5MnMnAEluY29uc2lzdGVuY3kgaW4gdXNhZ2Ugb2YgY29sdW1uIGxpc3RzIGZvciBwYXJ0aXRpb25pbmcAUGFydGl0aW9uIGNvbHVtbiB2YWx1ZXMgb2YgaW5jb3JyZWN0IHR5cGUAVG9vIG1hbnkgZmllbGRzIGluICclLS4xOTJzJwBDYW5ub3QgdXNlIE1BWFZBTFVFIGFzIHZhbHVlIGluIFZBTFVFUyBJTgBDYW5ub3QgaGF2ZSBtb3JlIHRoYW4gb25lIHZhbHVlIGZvciB0aGlzIHR5cGUgb2YgJS0uNjRzIHBhcnRpdGlvbmluZwBSb3cgZXhwcmVzc2lvbnMgaW4gVkFMVUVTIElOIG9ubHkgYWxsb3dlZCBmb3IgbXVsdGktZmllbGQgY29sdW1uIHBhcnRpdGlvbmluZwBGaWVsZCAnJS0uMTkycycgaXMgb2YgYSBub3QgYWxsb3dlZCB0eXBlIGZvciB0aGlzIHR5cGUgb2YgcGFydGl0aW9uaW5nAFRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIHBhcnRpdGlvbmluZyBmaWVsZHMgaXMgdG9vIGxhcmdlAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIGJvdGggcm93LWluY2FwYWJsZSBlbmdpbmVzIGFuZCBzdGF0ZW1lbnQtaW5jYXBhYmxlIGVuZ2luZXMgYXJlIGludm9sdmVkLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBCSU5MT0dfRk9STUFUID0gUk9XIGFuZCBhdCBsZWFzdCBvbmUgdGFibGUgdXNlcyBhIHN0b3JhZ2UgZW5naW5lIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIHN0YXRlbWVudCBpcyB1bnNhZmUsIHN0b3JhZ2UgZW5naW5lIGlzIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcsIGFuZCBCSU5MT0dfRk9STUFUID0gTUlYRUQuICVzAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIHN0YXRlbWVudCBpcyBpbiByb3cgZm9ybWF0IGFuZCBhdCBsZWFzdCBvbmUgdGFibGUgdXNlcyBhIHN0b3JhZ2UgZW5naW5lIGxpbWl0ZWQgdG8gc3RhdGVtZW50LWJhc2VkIGxvZ2dpbmcuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQgYW5kIGF0IGxlYXN0IG9uZSB0YWJsZSB1c2VzIGEgc3RvcmFnZSBlbmdpbmUgbGltaXRlZCB0byByb3ctYmFzZWQgbG9nZ2luZy4lcwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBzdGF0ZW1lbnQgaXMgaW4gcm93IGZvcm1hdCBhbmQgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVC4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgbW9yZSB0aGFuIG9uZSBlbmdpbmUgaXMgaW52b2x2ZWQgYW5kIGF0IGxlYXN0IG9uZSBlbmdpbmUgaXMgc2VsZi1sb2dnaW5nLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBMSU1JVCBjbGF1c2UuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIHNldCBvZiByb3dzIGluY2x1ZGVkIGNhbm5vdCBiZSBwcmVkaWN0ZWQuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBJTlNFUlQgREVMQVlFRC4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgdGltZXMgd2hlbiByb3dzIGFyZSBpbnNlcnRlZCBjYW5ub3QgYmUgcHJlZGljdGVkLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgdGhlIGdlbmVyYWwgbG9nLCBzbG93IHF1ZXJ5IGxvZywgb3IgcGVyZm9ybWFuY2Vfc2NoZW1hIHRhYmxlKHMpLiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIHN5c3RlbSB0YWJsZXMgbWF5IGRpZmZlciBvbiByZXBsaWNhcy4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGludm9rZXMgYSB0cmlnZ2VyIG9yIGEgc3RvcmVkIGZ1bmN0aW9uIHRoYXQgaW5zZXJ0cyBpbnRvIGFuIEFVVE9fSU5DUkVNRU5UIGNvbHVtbi4gSW5zZXJ0ZWQgdmFsdWVzIGNhbm5vdCBiZSBsb2dnZWQgY29ycmVjdGx5LgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIFVERiB3aGljaCBtYXkgbm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gdmFyaWFibGUgdGhhdCBtYXkgaGF2ZSBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gZnVuY3Rpb24gdGhhdCBtYXkgcmV0dXJuIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgYWNjZXNzZXMgYSBub24tdHJhbnNhY3Rpb25hbCB0YWJsZSBhZnRlciBhY2Nlc3NpbmcgYSB0cmFuc2FjdGlvbmFsIHRhYmxlIHdpdGhpbiB0aGUgc2FtZSB0cmFuc2FjdGlvbi4AJXMgU3RhdGVtZW50OiAlcwBDb2x1bW4gJWQgb2YgdGFibGUgJyUtLjE5MnMuJS0uMTkycycgY2Fubm90IGJlIGNvbnZlcnRlZCBmcm9tIHR5cGUgJyUtLjMycycgdG8gdHlwZSAnJS0uMzJzJwBDYW4ndCBjcmVhdGUgY29udmVyc2lvbiB0YWJsZSBmb3IgdGFibGUgJyUtLjE5MnMuJS0uMTkycycAQ2Fubm90IG1vZGlmeSBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdCBpbnNpZGUgYSB0cmFuc2FjdGlvbgBUaGUgcGF0aCBzcGVjaWZpZWQgZm9yICUuNjRzIGlzIHRvbyBsb25nLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBOYXRpdmUgdGFibGUgJyUtLjY0cycuJyUtLjY0cycgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmUASW52YWxpZCBwZXJmb3JtYW5jZV9zY2hlbWEgdXNhZ2UuAFRhYmxlICclcycuJyVzJyB3YXMgc2tpcHBlZCBzaW5jZSBpdHMgZGVmaW5pdGlvbiBpcyBiZWluZyBtb2RpZmllZCBieSBjb25jdXJyZW50IERETCBzdGF0ZW1lbnQAQ2Fubm90IG1vZGlmeSBAQHNlc3Npb24uYmlubG9nX2RpcmVjdF9ub25fdHJhbnNhY3Rpb25hbF91cGRhdGVzIGluc2lkZSBhIHRyYW5zYWN0aW9uAENhbm5vdCBjaGFuZ2UgdGhlIGJpbmxvZyBkaXJlY3QgZmxhZyBpbnNpZGUgYSBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBBIFNQQVRJQUwgaW5kZXggbWF5IG9ubHkgY29udGFpbiBhIGdlb21ldHJpY2FsIHR5cGUgY29sdW1uAENvbW1lbnQgZm9yIGluZGV4ICclLS42NHMnIGlzIHRvbyBsb25nIChtYXggPSAlbHUpAFdhaXQgb24gYSBsb2NrIHdhcyBhYm9ydGVkIGR1ZSB0byBhIHBlbmRpbmcgZXhjbHVzaXZlIGxvY2sAJXMgdmFsdWUgaXMgb3V0IG9mIHJhbmdlIGluICclcycAQSB2YXJpYWJsZSBvZiBhIG5vbi1pbnRlZ2VyIGJhc2VkIHR5cGUgaW4gTElNSVQgY2xhdXNlAE1peGluZyBzZWxmLWxvZ2dpbmcgYW5kIG5vbi1zZWxmLWxvZ2dpbmcgZW5naW5lcyBpbiBhIHN0YXRlbWVudCBpcyB1bnNhZmUuAFN0YXRlbWVudCBhY2Nlc3NlcyBub250cmFuc2FjdGlvbmFsIHRhYmxlIGFzIHdlbGwgYXMgdHJhbnNhY3Rpb25hbCBvciB0ZW1wb3JhcnkgdGFibGUsIGFuZCB3cml0ZXMgdG8gYW55IG9mIHRoZW0uAENhbm5vdCBtb2RpZnkgQEBzZXNzaW9uLnNxbF9sb2dfYmluIGluc2lkZSBhIHRyYW5zYWN0aW9uAENhbm5vdCBjaGFuZ2UgdGhlIHNxbF9sb2dfYmluIGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAEZhaWxlZCB0byByZWFkIGZyb20gdGhlIC5wYXIgZmlsZQBWQUxVRVMgdmFsdWUgZm9yIHBhcnRpdGlvbiAnJS0uNjRzJyBtdXN0IGhhdmUgdHlwZSBJTlQAQWNjw6hzIHJlZnVzw6kgcG91ciBsJ3V0aWxpc2F0ZXVyOiAnJS0uNDhzJ0AnQCUtLjY0cycAU0VUIFBBU1NXT1JEIGhhcyBubyBzaWduaWZpY2FuY2UgZm9yIHVzZXJzIGF1dGhlbnRpY2F0aW5nIHZpYSBwbHVnaW5zAEdSQU5UIHdpdGggSURFTlRJRklFRCBXSVRIIGlzIGlsbGVnYWwgYmVjYXVzZSB0aGUgdXNlciAlLS4qcyBhbHJlYWR5IGV4aXN0cwBDYW5ub3QgdHJ1bmNhdGUgYSB0YWJsZSByZWZlcmVuY2VkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAoJS4xOTJzKQBQbHVnaW4gJyVzJyBpcyBmb3JjZV9wbHVzX3Blcm1hbmVudCBhbmQgY2FuIG5vdCBiZSB1bmxvYWRlZABUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBpcyBsZXNzIHRoYW4gMSBtaWxsaXNlY29uZC4gVGhlIHZhbHVlIGlzIHJlc2V0IHRvIDAsIG1lYW5pbmcgdGhhdCBoZWFydGJlYXRpbmcgd2lsbCBlZmZlY3RpdmVseSBiZSBkaXNhYmxlZC4AVGhlIHJlcXVlc3RlZCB2YWx1ZSBmb3IgdGhlIGhlYXJ0YmVhdCBwZXJpb2QgZXhjZWVkcyB0aGUgdmFsdWUgb2YgYHJlcGxpY2FfbmV0X3RpbWVvdXQnIHNlY29uZHMuIEEgc2Vuc2libGUgdmFsdWUgZm9yIHRoZSBwZXJpb2Qgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgdGltZW91dC4ATXVsdGktcm93IHN0YXRlbWVudHMgcmVxdWlyZWQgbW9yZSB0aGFuICdtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZScgYnl0ZXMgb2Ygc3RvcmFnZTsgaW5jcmVhc2UgdGhpcyBteXNxbGQgdmFyaWFibGUgYW5kIHRyeSBhZ2FpbgBQcmltYXJ5IGtleS9wYXJ0aXRpb24ga2V5IHVwZGF0ZSBpcyBub3QgYWxsb3dlZCBzaW5jZSB0aGUgdGFibGUgaXMgdXBkYXRlZCBib3RoIGFzICclLS4xOTJzJyBhbmQgJyUtLjE5MnMnLgBUYWJsZSByZWJ1aWxkIHJlcXVpcmVkLiBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlLS42NHNgIEZPUkNFIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAFRoZSB2YWx1ZSBvZiAnJXMnIHNob3VsZCBiZSBubyBsZXNzIHRoYW4gdGhlIHZhbHVlIG9mICclcycASW5kZXggY29sdW1uIHNpemUgdG9vIGxhcmdlLiBUaGUgbWF4aW11bSBjb2x1bW4gc2l6ZSBpcyAlbHUgYnl0ZXMuAFRyaWdnZXIgJyUtLjY0cycgaGFzIGFuIGVycm9yIGluIGl0cyBib2R5OiAnJS0uMjU2cycAVW5rbm93biB0cmlnZ2VyIGhhcyBhbiBlcnJvciBpbiBpdHMgYm9keTogJyUtLjI1NnMnAEluZGV4ICVzIGlzIGNvcnJ1cHRlZABVbmRvIGxvZyByZWNvcmQgaXMgdG9vIGJpZy4ASU5TRVJUIElHTk9SRS4uLiBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaWdub3JlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAElOU0VSVC4uLiBTRUxFQ1QuLi4gT04gRFVQTElDQVRFIEtFWSBVUERBVEUgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgdXBkYXRlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAFJFUExBQ0UuLi4gU0VMRUNUIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIHJlcGxhY2VkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AQ1JFQVRFLi4uIElHTk9SRSBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaWdub3JlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAENSRUFURS4uLiBSRVBMQUNFIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSByZXBsYWNlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAFVQREFURSBJR05PUkUgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHVwZGF0ZWQgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AUGx1Z2luICclcycgaXMgbWFya2VkIGFzIG5vdCBkeW5hbWljYWxseSB1bmluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gdW5pbnN0YWxsIGl0LgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IGluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gaW5zdGFsbCBpdC4AU3RhdGVtZW50cyB3cml0aW5nIHRvIGEgdGFibGUgd2l0aCBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gYWZ0ZXIgc2VsZWN0aW5nIGZyb20gYW5vdGhlciB0YWJsZSBhcmUgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBkZXRlcm1pbmVzIHdoYXQgKGlmIGFueSkgcm93cyB3aWxsIGJlIHdyaXR0ZW4uIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBDUkVBVEUgVEFCTEUuLi4gU0VMRUNULi4uICBvbiBhIHRhYmxlIHdpdGggYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIGluc2VydGVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4ASU5TRVJULi4uIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFICBvbiBhIHRhYmxlIHdpdGggbW9yZSB0aGFuIG9uZSBVTklRVUUgS0VZIGlzIHVuc2FmZQBUYWJsZSBpcyBiZWluZyB1c2VkIGluIGZvcmVpZ24ga2V5IGNoZWNrLgBTdG9yYWdlIGVuZ2luZSAnJXMnIGRvZXMgbm90IHN1cHBvcnQgc3lzdGVtIHRhYmxlcy4gWyVzLiVzXQBJTlNFUlQgaW50byBhdXRvaW5jcmVtZW50IGZpZWxkIHdoaWNoIGlzIG5vdCB0aGUgZmlyc3QgcGFydCBpbiB0aGUgY29tcG9zZWQgcHJpbWFyeSBrZXkgaXMgdW5zYWZlLgBDYW5ub3QgbG9hZCBmcm9tICVzLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJXMgZm9yIHRoZSBzb3VyY2UgZGVsYXkgZXhjZWVkcyB0aGUgbWF4aW11bSAldQBPbmx5IEZvcm1hdF9kZXNjcmlwdGlvbl9sb2dfZXZlbnQgYW5kIHJvdyBldmVudHMgYXJlIGFsbG93ZWQgaW4gQklOTE9HIHN0YXRlbWVudHMgKGJ1dCAlcyB3YXMgcHJvdmlkZWQpAE5vbiBtYXRjaGluZyBhdHRyaWJ1dGUgJyUtLjY0cycgYmV0d2VlbiBwYXJ0aXRpb24gYW5kIHRhYmxlAFRhYmxlIHRvIGV4Y2hhbmdlIHdpdGggcGFydGl0aW9uIGlzIHBhcnRpdGlvbmVkOiAnJS0uNjRzJwBUYWJsZSB0byBleGNoYW5nZSB3aXRoIHBhcnRpdGlvbiBpcyB0ZW1wb3Jhcnk6ICclLS42NHMnAFN1YnBhcnRpdGlvbmVkIHRhYmxlLCB1c2Ugc3VicGFydGl0aW9uIGluc3RlYWQgb2YgcGFydGl0aW9uAFVua25vd24gcGFydGl0aW9uICclLS42NHMnIGluIHRhYmxlICclLS42NHMnAFRhYmxlcyBoYXZlIGRpZmZlcmVudCBkZWZpbml0aW9ucwBGb3VuZCBhIHJvdyB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZSBwYXJ0aXRpb24AT3B0aW9uIGJpbmxvZ19jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX2NhY2hlX3NpemUgZXF1YWwgdG8gbWF4X2JpbmxvZ19jYWNoZV9zaXplLgBDYW5ub3QgdXNlICUtLjY0cyBhY2Nlc3Mgb24gaW5kZXggJyUtLjY0cycgZHVlIHRvIHR5cGUgb3IgY29sbGF0aW9uIGNvbnZlcnNpb24gb24gZmllbGQgJyUtLjY0cycAVGFibGUgdG8gZXhjaGFuZ2Ugd2l0aCBwYXJ0aXRpb24gaGFzIGZvcmVpZ24ga2V5IHJlZmVyZW5jZXM6ICclLS42NHMnAEtleSB2YWx1ZSAnJS0uMTkycycgd2FzIG5vdCBmb3VuZCBpbiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJwBEYXRhIGZvciBjb2x1bW4gJyVzJyB0b28gbG9uZwBSZXBsaWNhdGlvbiBldmVudCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIHdoaWxlIHJlYWRpbmcgZnJvbSBuZXR3b3JrLgBSZXBsaWNhdGlvbiBldmVudCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIHdoaWxlIHJlYWRpbmcgZnJvbSBhIGxvZyBmaWxlLgBPcHRpb24gYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KSBpcyBncmVhdGVyIHRoYW4gbWF4X2JpbmxvZ19zdG10X2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZS4AQ2FuJ3QgdXBkYXRlIHRhYmxlICclLS4xOTJzJyB3aGlsZSAnJS0uMTkycycgaXMgYmVpbmcgY3JlYXRlZC4AUEFSVElUSU9OICgpIGNsYXVzZSBvbiBub24gcGFydGl0aW9uZWQgdGFibGUARm91bmQgYSByb3cgbm90IG1hdGNoaW5nIHRoZSBnaXZlbiBwYXJ0aXRpb24gc2V0AExhIHBhcnRpdGlvbiAnJS0uNjRzJyBuJ2V4aXN0ZSBwYXMARmFpbHVyZSB3aGlsZSBjaGFuZ2luZyB0aGUgdHlwZSBvZiByZXBsaWNhdGlvbiByZXBvc2l0b3J5OiAlcy4AVGhlIGNyZWF0aW9uIG9mIHNvbWUgdGVtcG9yYXJ5IHRhYmxlcyBjb3VsZCBub3QgYmUgcm9sbGVkIGJhY2suAFNvbWUgdGVtcG9yYXJ5IHRhYmxlcyB3ZXJlIGRyb3BwZWQsIGJ1dCB0aGVzZSBvcGVyYXRpb25zIGNvdWxkIG5vdCBiZSByb2xsZWQgYmFjay4AJXMgaXMgbm90IHN1cHBvcnRlZCBpbiBtdWx0aS10aHJlYWRlZCByZXBsaWNhIG1vZGUuICVzAFRoZSBudW1iZXIgb2YgbW9kaWZpZWQgZGF0YWJhc2VzIGV4Y2VlZHMgdGhlIG1heGltdW0gJWQ7IHRoZSBkYXRhYmFzZSBuYW1lcyB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVwbGljYXRpb24gZXZlbnQgbWV0YWRhdGEuAENhbm5vdCBleGVjdXRlIHRoZSBjdXJyZW50IGV2ZW50IGdyb3VwIGluIHRoZSBwYXJhbGxlbCBtb2RlLiBFbmNvdW50ZXJlZCBldmVudCAlcywgcmVsYXktbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVzIHdoaWNoIHByZXZlbnRzIGV4ZWN1dGlvbiBvZiB0aGlzIGV2ZW50IGdyb3VwIGluIHBhcmFsbGVsIG1vZGUuIFJlYXNvbjogJXMuACVzAEZVTExURVhUIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBhcnRpdGlvbmVkIHRhYmxlcy4ASW52YWxpZCBjb25kaXRpb24gbnVtYmVyAFNlbmRpbmcgcGFzc3dvcmRzIGluIHBsYWluIHRleHQgd2l0aG91dCBTU0wvVExTIGlzIGV4dHJlbWVseSBpbnNlY3VyZS4AU3RvcmluZyBNeVNRTCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBpcyBub3Qgc2VjdXJlIGFuZCBpcyB0aGVyZWZvcmUgbm90IHJlY29tbWVuZGVkLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgdGhlIFVTRVIgYW5kIFBBU1NXT1JEIGNvbm5lY3Rpb24gb3B0aW9ucyBmb3IgU1RBUlQgUkVQTElDQTsgc2VlIHRoZSAnU1RBUlQgUkVQTElDQSBTeW50YXgnIGluIHRoZSBNeVNRTCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZm9yIHRhYmxlICclLjE5MnMnLCByZWNvcmQgJyUtLjE5MnMnIHdvdWxkIGxlYWQgdG8gYSBkdXBsaWNhdGUgZW50cnkgaW4gdGFibGUgJyUuMTkycycsIGtleSAnJS4xOTJzJwBGb3JlaWduIGtleSBjb25zdHJhaW50IGZvciB0YWJsZSAnJS4xOTJzJywgcmVjb3JkICclLS4xOTJzJyB3b3VsZCBsZWFkIHRvIGEgZHVwbGljYXRlIGVudHJ5IGluIGEgY2hpbGQgdGFibGUAU2V0dGluZyBhdXRoZW50aWNhdGlvbiBvcHRpb25zIGlzIG5vdCBwb3NzaWJsZSB3aGVuIG9ubHkgdGhlIFJlcGxpY2EgU1FMIFRocmVhZCBpcyBiZWluZyBzdGFydGVkLgBUaGUgdGFibGUgZG9lcyBub3QgaGF2ZSBGVUxMVEVYVCBpbmRleCB0byBzdXBwb3J0IHRoaXMgcXVlcnkAVGhlIHN5c3RlbSB2YXJpYWJsZSAlLjIwMHMgY2Fubm90IGJlIHNldCBpbiBzdG9yZWQgZnVuY3Rpb25zIG9yIHRyaWdnZXJzLgBUaGUgc3lzdGVtIHZhcmlhYmxlICUuMjAwcyBjYW5ub3QgYmUgc2V0IHdoZW4gdGhlcmUgaXMgYW4gb25nb2luZyB0cmFuc2FjdGlvbi4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGhhcyB0aGUgdmFsdWUgJS4yMDBzLCB3aGljaCBpcyBub3QgbGlzdGVkIGluIEBAU0VTU0lPTi5HVElEX05FWFRfTElTVC4AVGhlIHN5c3RlbSB2YXJpYWJsZSBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBjaGFuZ2UgaW5zaWRlIGEgdHJhbnNhY3Rpb24uAFRoZSBzdGF0ZW1lbnQgJ1NFVCAlLjIwMHMnIGNhbm5vdCBpbnZva2UgYSBzdG9yZWQgZnVuY3Rpb24uAFRoZSBzeXN0ZW0gdmFyaWFibGUgQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgJ0FVVE9NQVRJQycgd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUX0xJU1QgaXMgbm9uLU5VTEwuAFNraXBwaW5nIHRyYW5zYWN0aW9uICUuMjAwcyBiZWNhdXNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gZXhlY3V0ZWQgYW5kIGxvZ2dlZC4ATWFsZm9ybWVkIEdUSUQgc2V0IHNwZWNpZmljYXRpb24gJyUuMjAwcycuAE1hbGZvcm1lZCBHVElEIHNldCBlbmNvZGluZy4ATWFsZm9ybWVkIEdUSUQgc3BlY2lmaWNhdGlvbiAnJS4yMDBzJy4ASW1wb3NzaWJsZSB0byBnZW5lcmF0ZSBHVElEOiB0aGUgaW50ZWdlciBjb21wb25lbnQgcmVhY2hlZCB0aGUgbWF4aW11bSB2YWx1ZS4gUmVzdGFydCB0aGUgc2VydmVyIHdpdGggYSBuZXcgc2VydmVyX3V1aWQuAFBhcmFtZXRlcnMgU09VUkNFX0xPR19GSUxFLCBTT1VSQ0VfTE9HX1BPUywgUkVMQVlfTE9HX0ZJTEUgYW5kIFJFTEFZX0xPR19QT1MgY2Fubm90IGJlIHNldCB3aGVuIFNPVVJDRV9BVVRPX1BPU0lUSU9OIGlzIGFjdGl2ZS4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDEgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnRzIHdpdGggaW1wbGljaXQgY29tbWl0IGluc2lkZSBhIHRyYW5zYWN0aW9uIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBHVElEX01PREUgPSBPTiByZXF1aXJlcyBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTi4AQEBHTE9CQUwuR1RJRF9NT0RFID0gT04gb3IgT05fUEVSTUlTU0lWRSBvciBPRkZfUEVSTUlTU0lWRSByZXF1aXJlcyAtLWxvZy1iaW4gYW5kIC0tbG9nLXJlcGxpY2EtdXBkYXRlcy4AQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgc2V0IHRvIFVVSUQ6TlVNQkVSIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSBzZXQgdG8gQU5PTllNT1VTIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uAEBAU0VTU0lPTi5HVElEX05FWFRfTElTVCBjYW5ub3QgYmUgc2V0IHRvIGEgbm9uLU5VTEwgdmFsdWUgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAEZvdW5kIGEgR3RpZF9sb2dfZXZlbnQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBVcGRhdGVzIHRvIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyBjYW4gb25seSBiZSBkb25lIGluIGVpdGhlciBhdXRvY29tbWl0dGVkIHN0YXRlbWVudHMgb3Igc2luZ2xlLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMsIGFuZCBuZXZlciBpbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYXMgdXBkYXRlcyB0byB0cmFuc2FjdGlvbmFsIHRhYmxlcy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBUQUJMRSAuLi4gU0VMRUNULgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgY2FuIG9ubHkgYmUgZXhlY3V0ZWQgb3V0c2lkZSB0cmFuc2FjdGlvbmFsIGNvbnRleHQuICBUaGVzZSBzdGF0ZW1lbnRzIGFyZSBhbHNvIG5vdCBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgdHJpZ2dlciBiZWNhdXNlIGZ1bmN0aW9ucyBhbmQgdHJpZ2dlcnMgYXJlIGFsc28gY29uc2lkZXJlZCB0byBiZSBtdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLgBUaGUgdmFsdWUgb2YgQEBHTE9CQUwuR1RJRF9NT0RFIGNhbiBvbmx5IGJlIGNoYW5nZWQgb25lIHN0ZXAgYXQgYSB0aW1lOiBPRkYgPC0+IE9GRl9QRVJNSVNTSVZFIDwtPiBPTl9QRVJNSVNTSVZFIDwtPiBPTi4gQWxzbyBub3RlIHRoYXQgdGhpcyB2YWx1ZSBtdXN0IGJlIHN0ZXBwZWQgdXAgb3IgZG93biBzaW11bHRhbmVvdXNseSBvbiBhbGwgc2VydmVycy4gU2VlIHRoZSBNYW51YWwgZm9yIGluc3RydWN0aW9ucy4AQ2Fubm90IHJlcGxpY2F0ZSBiZWNhdXNlIHRoZSBzb3VyY2UgcHVyZ2VkIHJlcXVpcmVkIGJpbmFyeSBsb2dzLiBSZXBsaWNhdGUgdGhlIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGZyb20gZWxzZXdoZXJlLCBvciBwcm92aXNpb24gYSBuZXcgcmVwbGljYSBmcm9tIGJhY2t1cC4gQ29uc2lkZXIgaW5jcmVhc2luZyB0aGUgc291cmNlJ3MgYmluYXJ5IGxvZyBleHBpcmF0aW9uIHBlcmlvZC4gJXMAQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgY2hhbmdlZCBieSBhIGNsaWVudCB0aGF0IG93bnMgYSBHVElELiBUaGUgY2xpZW50IG93bnMgJXMuIE93bmVyc2hpcCBpcyByZWxlYXNlZCBvbiBDT01NSVQgb3IgUk9MTEJBQ0suAFVua25vd24gRVhQTEFJTiBmb3JtYXQgbmFtZTogJyVzJwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQgaW4gYSBSRUFEIE9OTFkgdHJhbnNhY3Rpb24uAENvbW1lbnQgZm9yIHRhYmxlIHBhcnRpdGlvbiAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBSZXBsaWNhIGlzIG5vdCBjb25maWd1cmVkIG9yIGZhaWxlZCB0byBpbml0aWFsaXplIHByb3Blcmx5LiBZb3UgbXVzdCBhdCBsZWFzdCBzZXQgLS1zZXJ2ZXItaWQgdG8gZW5hYmxlIGVpdGhlciBhIHNvdXJjZSBvciBhIHJlcGxpY2EuIEFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cuAElubm9EQiBwcmVzZW50bHkgc3VwcG9ydHMgb25lIEZVTExURVhUIGluZGV4IGNyZWF0aW9uIGF0IGEgdGltZQBDYW5ub3QgY3JlYXRlIEZVTExURVhUIGluZGV4IG9uIHRlbXBvcmFyeSBJbm5vREIgdGFibGUAQ29sdW1uICclLS4xOTJzJyBpcyBvZiB3cm9uZyB0eXBlIGZvciBhbiBJbm5vREIgRlVMTFRFWFQgaW5kZXgASW5kZXggJyUtLjE5MnMnIGlzIG9mIHdyb25nIHR5cGUgZm9yIGFuIElubm9EQiBGVUxMVEVYVCBpbmRleABDcmVhdGluZyBpbmRleCAnJS0uMTkycycgcmVxdWlyZWQgbW9yZSB0aGFuICdpbm5vZGJfb25saW5lX2FsdGVyX2xvZ19tYXhfc2l6ZScgYnl0ZXMgb2YgbW9kaWZpY2F0aW9uIGxvZy4gUGxlYXNlIHRyeSBhZ2Fpbi4AVW5rbm93biBBTEdPUklUSE0gJyVzJwBVbmtub3duIExPQ0sgdHlwZSAnJXMnAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHJlcGxpY2Egd2FzIHN0b3BwZWQgd2l0aCBhbiBlcnJvciBvciBraWxsZWQgaW4gTVRBIG1vZGUuIENvbnNpZGVyIHVzaW5nIFJFU0VUIFJFUExJQ0Egb3IgU1RBUlQgUkVQTElDQSBVTlRJTC4AQ2Fubm90IHJlY292ZXIgYWZ0ZXIgUkVQTElDQSBlcnJvcmVkIG91dCBpbiBwYXJhbGxlbCBleGVjdXRpb24gbW9kZS4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4AQ2Fubm90IGNsZWFuIHVwIHdvcmtlciBpbmZvIHRhYmxlcy4gQWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyBjYW4gYmUgZm91bmQgaW4gdGhlIE15U1FMIGVycm9yIGxvZy4AQ29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQAUmVwbGljYSBtdXN0IHNpbGVudGx5IHJldHJ5IGN1cnJlbnQgdHJhbnNhY3Rpb24AVGhlcmUgaXMgYSBmb3JlaWduIGtleSBjaGVjayBydW5uaW5nIG9uIHRhYmxlICclLS4xOTJzJy4gQ2Fubm90IGRpc2NhcmQgdGhlIHRhYmxlLgBTY2hlbWEgbWlzbWF0Y2ggKCVzKQBUYWJsZSAnJS0uMTkycycgaW4gc3lzdGVtIHRhYmxlc3BhY2UASU8gUmVhZCBlcnJvcjogKCVsdSwgJXMpICVzAElPIFdyaXRlIGVycm9yOiAoJWx1LCAlcykgJXMAVGFibGVzcGFjZSBpcyBtaXNzaW5nIGZvciB0YWJsZSAlcy4AVGFibGVzcGFjZSAnJS0uMTkycycgZXhpc3RzLgBUYWJsZXNwYWNlIGhhcyBiZWVuIGRpc2NhcmRlZCBmb3IgdGFibGUgJyUtLjE5MnMnAEludGVybmFsIGVycm9yOiAlcwBBTFRFUiBUQUJMRSAlLS4xOTJzIElNUE9SVCBUQUJMRVNQQUNFIGZhaWxlZCB3aXRoIGVycm9yICVsdSA6ICclcycASW5kZXggY29ycnVwdDogJXMASW52YWxpZCBkaXNwbGF5IHdpZHRoLiBVc2UgWUVBUiBpbnN0ZWFkLgBZb3VyIHBhc3N3b3JkIGRvZXMgbm90IHNhdGlzZnkgdGhlIGN1cnJlbnQgcG9saWN5IHJlcXVpcmVtZW50cwBZb3UgbXVzdCByZXNldCB5b3VyIHBhc3N3b3JkIHVzaW5nIEFMVEVSIFVTRVIgc3RhdGVtZW50IGJlZm9yZSBleGVjdXRpbmcgdGhpcyBzdGF0ZW1lbnQuAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgaW5kZXggZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgZm9yZWlnbiB0YWJsZSAnJXMnAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuIE1pc3NpbmcgaW5kZXggZm9yIGNvbnN0cmFpbnQgJyVzJyBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyVzJyB0byBzeXN0ZW0gdGFibGVzAEZhaWxlZCB0byBvcGVuIHRoZSByZWZlcmVuY2VkIHRhYmxlICclcycARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0YWJsZSAnJXMnLiBJbmNvcnJlY3Qgb3B0aW9ucyBpbiBGT1JFSUdOIEtFWSBjb25zdHJhaW50ICclcycARHVwbGljYXRlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgbmFtZSAnJXMnAFRoZSBwYXNzd29yZCBoYXNoIGRvZXNuJ3QgaGF2ZSB0aGUgZXhwZWN0ZWQgZm9ybWF0LgBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJwBDYW5ub3QgZHJvcCBjb2x1bW4gJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBvZiB0YWJsZSAnJS0uMTkycycAQ29sdW1uICclLS4xOTJzJyBjYW5ub3QgYmUgTk9UIE5VTEw6IG5lZWRlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIFNFVCBOVUxMAER1cGxpY2F0ZSBpbmRleCAnJS0uNjRzJyBkZWZpbmVkIG9uIHRoZSB0YWJsZSAnJS0uNjRzLiUtLjY0cycuIFRoaXMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSBkaXNhbGxvd2VkIGluIGEgZnV0dXJlIHJlbGVhc2UuAENhbm5vdCBjaGFuZ2UgY29sdW1uICclLS4xOTJzJzogdXNlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnAENhbm5vdCBjaGFuZ2UgY29sdW1uICclLS4xOTJzJzogdXNlZCBpbiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyUtLjE5MnMnIG9mIHRhYmxlICclLS4xOTJzJwBDYW5ub3QgZGVsZXRlIHJvd3MgZnJvbSB0YWJsZSB3aGljaCBpcyBwYXJlbnQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBvZiB0YWJsZSAnJS0uMTkycycATWFsZm9ybWVkIGNvbW11bmljYXRpb24gcGFja2V0LgBSdW5uaW5nIGluIHJlYWQtb25seSBtb2RlAFdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCBpcyBzZXQgdG8gYSBHVElELCB5b3UgbXVzdCBleHBsaWNpdGx5IHNldCBpdCB0byBhIGRpZmZlcmVudCB2YWx1ZSBhZnRlciBhIENPTU1JVCBvciBST0xMQkFDSy4gUGxlYXNlIGNoZWNrIEdUSURfTkVYVCB2YXJpYWJsZSBtYW51YWwgcGFnZSBmb3IgZGV0YWlsZWQgZXhwbGFuYXRpb24uIEN1cnJlbnQgQEBTRVNTSU9OLkdUSURfTkVYVCBpcyAnJXMnLgBUaGUgc3lzdGVtIHZhcmlhYmxlICUuMjAwcyBjYW5ub3QgYmUgc2V0IGluIHN0b3JlZCBwcm9jZWR1cmVzLgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW4gb25seSBiZSBzZXQgd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTi4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2FuIG9ubHkgYmUgc2V0IHdoZW4gQEBHTE9CQUwuR1RJRF9FWEVDVVRFRCBpcyBlbXB0eS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2FuIG9ubHkgYmUgc2V0IHdoZW4gdGhlcmUgYXJlIG5vIG9uZ29pbmcgdHJhbnNhY3Rpb25zIChub3QgZXZlbiBpbiBvdGhlciBjbGllbnRzKS4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuAEBAR0xPQkFMLkdUSURfRVhFQ1VURUQgd2FzIGNoYW5nZWQgZnJvbSAnJXMnIHRvICclcycuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQsIGFuZCBib3RoIHJlcGxpY2F0ZWQgYW5kIG5vbiByZXBsaWNhdGVkIHRhYmxlcyBhcmUgd3JpdHRlbiB0by4AJXMgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBvcGVyYXRpb24uIFRyeSAlcy4AJXMgaXMgbm90IHN1cHBvcnRlZC4gUmVhc29uOiAlcy4gVHJ5ICVzLgBDT1BZIGFsZ29yaXRobSByZXF1aXJlcyBhIGxvY2sAUGFydGl0aW9uIHNwZWNpZmljIG9wZXJhdGlvbnMgZG8gbm90IHlldCBzdXBwb3J0IExPQ0svQUxHT1JJVEhNAENvbHVtbnMgcGFydGljaXBhdGluZyBpbiBhIGZvcmVpZ24ga2V5IGFyZSByZW5hbWVkAENhbm5vdCBjaGFuZ2UgY29sdW1uIHR5cGUgSU5QTEFDRQBBZGRpbmcgZm9yZWlnbiBrZXlzIG5lZWRzIGZvcmVpZ25fa2V5X2NoZWNrcz1PRkYAQ3JlYXRpbmcgdW5pcXVlIGluZGV4ZXMgd2l0aCBJR05PUkUgcmVxdWlyZXMgQ09QWSBhbGdvcml0aG0gdG8gcmVtb3ZlIGR1cGxpY2F0ZSByb3dzAERyb3BwaW5nIGEgcHJpbWFyeSBrZXkgaXMgbm90IGFsbG93ZWQgd2l0aG91dCBhbHNvIGFkZGluZyBhIG5ldyBwcmltYXJ5IGtleQBBZGRpbmcgYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uIHJlcXVpcmVzIGEgbG9jawBDYW5ub3QgcmVwbGFjZSBoaWRkZW4gRlRTX0RPQ19JRCB3aXRoIGEgdXNlci12aXNpYmxlIG9uZQBDYW5ub3QgZHJvcCBvciByZW5hbWUgRlRTX0RPQ19JRABGdWxsdGV4dCBpbmRleCBjcmVhdGlvbiByZXF1aXJlcyBhIGxvY2sAc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyIGNhbiBub3QgYmUgc2V0IHdoZW4gdGhlIHNlcnZlciBpcyBydW5uaW5nIHdpdGggQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uIEluc3RlYWQsIGZvciBlYWNoIHRyYW5zYWN0aW9uIHRoYXQgeW91IHdhbnQgdG8gc2tpcCwgZ2VuZXJhdGUgYW4gZW1wdHkgdHJhbnNhY3Rpb24gd2l0aCB0aGUgc2FtZSBHVElEIGFzIHRoZSB0cmFuc2FjdGlvbgBEdXBsaWNhdGEgZHUgY2hhbXAgcG91ciBsYSBjbGVmICclLS4xOTJzJwBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBwYXRoIGxlbmd0aCBleGNlZWRpbmcgJWQgY2hhcmFjdGVycy4gUGF0aDogJyVzJy4AY2Fubm90IHNpbGVudGx5IGNvbnZlcnQgTlVMTCB2YWx1ZXMsIGFzIHJlcXVpcmVkIGluIHRoaXMgU1FMX01PREUAWW91ciBwYXNzd29yZCBoYXMgZXhwaXJlZC4gVG8gbG9nIGluIHlvdSBtdXN0IGNoYW5nZSBpdCB1c2luZyBhIGNsaWVudCB0aGF0IHN1cHBvcnRzIGV4cGlyZWQgcGFzc3dvcmRzLgBGb3VuZCBhIHJvdyBpbiB3cm9uZyBwYXJ0aXRpb24gJXMAQ2Fubm90IHNjaGVkdWxlIGV2ZW50ICVzLCByZWxheS1sb2cgbmFtZSAlcywgcG9zaXRpb24gJXMgdG8gV29ya2VyIHRocmVhZCBiZWNhdXNlIGl0cyBzaXplICVsdSBleGNlZWRzICVsdSBvZiByZXBsaWNhX3BlbmRpbmdfam9ic19zaXplX21heC4AQ2Fubm90IENSRUFURSBGVUxMVEVYVCBJTkRFWCBXSVRIIFBBUlNFUiBvbiBJbm5vREIgdGFibGUAVGhlIGJpbmFyeSBsb2cgZmlsZSAnJXMnIGlzIGxvZ2ljYWxseSBjb3JydXB0ZWQ6ICVzAGZpbGUgJXMgd2FzIG5vdCBwdXJnZWQgYmVjYXVzZSBpdCB3YXMgYmVpbmcgcmVhZCBieSAlZCB0aHJlYWQocyksIHB1cmdlZCBvbmx5ICVkIG91dCBvZiAlZCBmaWxlcy4AZmlsZSAlcyB3YXMgbm90IHB1cmdlZCBiZWNhdXNlIGl0IGlzIHRoZSBhY3RpdmUgbG9nIGZpbGUuAEF1dG8taW5jcmVtZW50IHZhbHVlIGluIFVQREFURSBjb25mbGljdHMgd2l0aCBpbnRlcm5hbGx5IGdlbmVyYXRlZCB2YWx1ZXMAUm93IGV2ZW50cyBhcmUgbm90IGxvZ2dlZCBmb3IgJXMgc3RhdGVtZW50cyB0aGF0IG1vZGlmeSBCTEFDS0hPTEUgdGFibGVzIGluIHJvdyBmb3JtYXQuIFRhYmxlKHMpOiAnJS0uMTkycycAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgYXBwbGllciBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBBY2Nlc3MgZGVuaWVkIHRyeWluZyB0byBjaGFuZ2UgdG8gdXNlciAnJS0uNDhzJ0AnJS0uNjRzJyAodXNpbmcgcGFzc3dvcmQ6ICVzKS4gRGlzY29ubmVjdGluZy4ASW5ub0RCIGlzIGluIHJlYWQgb25seSBtb2RlLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBTUUwgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBTUUwgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIElPIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgSU8gdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAE9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkLiBUaGUgdGFibGUgJyUtLjY0cy4lLS42NHMnIGlzIG1pc3NpbmcsIGNvcnJ1cHQgb3IgY29udGFpbnMgYmFkIGRhdGEuAFRlbXBvcmFyeSBmaWxlIHdyaXRlIGZhaWx1cmUuAFVwZ3JhZGUgaW5kZXggbmFtZSBmYWlsZWQsIHBsZWFzZSB1c2UgY3JlYXRlIGluZGV4KGFsdGVyIHRhYmxlKSBhbGdvcml0aG0gY29weSB0byByZWJ1aWxkIGluZGV4LgBUSU1FL1RJTUVTVEFNUC9EQVRFVElNRSBjb2x1bW5zIG9mIG9sZCBmb3JtYXQgaGF2ZSBiZWVuIHVwZ3JhZGVkIHRvIHRoZSBuZXcgZm9ybWF0LgBPcGVyYXRpb24gbm90IGFsbG93ZWQgd2hlbiBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgPiAwLgBUaGUgaW5pdGlhbGl6YXRpb24gdmVjdG9yIHN1cHBsaWVkIHRvICVzIGlzIHRvbyBzaG9ydC4gTXVzdCBiZSBhdCBsZWFzdCAlZCBieXRlcyBsb25nAFBsdWdpbiAnJXMnIGNhbm5vdCBiZSB1bmluc3RhbGxlZCBub3cuICVzAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudCBiZWNhdXNlIGl0IG5lZWRzIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cgYXMgbXVsdGlwbGUgc3RhdGVtZW50cywgYW5kIHRoaXMgaXMgbm90IGFsbG93ZWQgd2hlbiBAQFNFU1NJT04uR1RJRF9ORVhUID09ICdVVUlEOk5VTUJFUicuAFJlcGxpY2EgaGFzIG1vcmUgR1RJRHMgdGhhbiB0aGUgc291cmNlIGhhcywgdXNpbmcgdGhlIHNvdXJjZSdzIFNFUlZFUl9VVUlELiBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSB0aGUgbGFzdCBiaW5hcnkgbG9nIGZpbGUgd2FzIHRydW5jYXRlZCBvciBsb3N0LCBlLmcuLCBhZnRlciBhIHBvd2VyIGZhaWx1cmUgd2hlbiBzeW5jX2JpbmxvZyAhPSAxLiBUaGUgc291cmNlIG1heSBoYXZlIHJvbGxlZCBiYWNrIHRyYW5zYWN0aW9ucyB0aGF0IHdlcmUgYWxyZWFkeSByZXBsaWNhdGVkIHRvIHRoZSByZXBsaWNhLiBSZXBsaWNhdGUgYW55IHRyYW5zYWN0aW9ucyB0aGF0IHNvdXJjZSBoYXMgcm9sbGVkIGJhY2sgZnJvbSByZXBsaWNhIHRvIHNvdXJjZSwgYW5kL29yIGNvbW1pdCBlbXB0eSB0cmFuc2FjdGlvbnMgb24gc291cmNlIHRvIGFjY291bnQgZm9yIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgYmVlbiBjb21taXR0ZWQgb24gc291cmNlIGJ1dCBhcmUgbm90IGluY2x1ZGVkIGluIEdUSURfRVhFQ1VURUQuAFRoZSB0YWJsZSAnJXMuJXMnIGRvZXMgbm90IGhhdmUgdGhlIG5lY2Vzc2FyeSBrZXkocykgZGVmaW5lZCBvbiBpdC4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZSBkZWZpbml0aW9uIGFuZCBjcmVhdGUgaW5kZXgocykgYWNjb3JkaW5nbHkuAFNldHRpbmcgbmFtZWRfcGlwZV9mdWxsX2FjY2Vzc19ncm91cD0nJXMnIGlzIGluc2VjdXJlLiBDb25zaWRlciB1c2luZyBhIFdpbmRvd3MgZ3JvdXAgd2l0aCBmZXdlciBtZW1iZXJzLgBGaWxlICVzIGlzIGNvcnJ1cHRlZABRdWVyeSBwYXJ0aWFsbHkgY29tcGxldGVkIG9uIHRoZSBzb3VyY2UgKGVycm9yIG9uIHNvdXJjZTogJWQpIGFuZCB3YXMgYWJvcnRlZC4gVGhlcmUgaXMgYSBjaGFuY2UgdGhhdCB5b3VyIHNvdXJjZSBpcyBpbmNvbnNpc3RlbnQgYXQgdGhpcyBwb2ludC4gSWYgeW91IGFyZSBzdXJlIHRoYXQgeW91ciBzb3VyY2UgaXMgb2ssIHJ1biB0aGlzIHF1ZXJ5IG1hbnVhbGx5IG9uIHRoZSByZXBsaWNhIGFuZCB0aGVuIHJlc3RhcnQgdGhlIHJlcGxpY2Egd2l0aCBTRVQgR0xPQkFMIFNRTF9SRVBMSUNBX1NLSVBfQ09VTlRFUj0xOyBTVEFSVCBSRVBMSUNBOy4gUXVlcnk6JyVzJwBRdWVyeSBjYXVzZWQgZGlmZmVyZW50IGVycm9ycyBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuIEVycm9yIG9uIHNvdXJjZTogbWVzc2FnZSAoZm9ybWF0KT0nJXMnIGVycm9yIGNvZGU9JWQ7IEVycm9yIG9uIHJlcGxpY2E6YWN0dWFsIG1lc3NhZ2U9JyVzJywgZXJyb3IgY29kZT0lZC4gRGVmYXVsdCBkYXRhYmFzZTonJXMnLiBRdWVyeTonJXMnAFN0b3JhZ2UgZW5naW5lIGZvciB0YWJsZSAnJXMnLiclcycgaXMgbm90IGxvYWRlZC4AR0VUIFNUQUNLRUQgRElBR05PU1RJQ1Mgd2hlbiBoYW5kbGVyIG5vdCBhY3RpdmUAJXMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gVGhlIHN0YXRlbWVudCB3YXMgY29udmVydGVkIHRvICVzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBhIGZ1bGx0ZXh0IHBhcnNlciBwbHVnaW4gd2hpY2ggbWF5IG5vdCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgb24gdGhlIHJlcGxpY2EuAENhbm5vdCBESVNDQVJEL0lNUE9SVCB0YWJsZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0ZW1wb3JhcnkgdGFibGUARm9yZWlnbiBrZXkgY2FzY2FkZSBkZWxldGUvdXBkYXRlIGV4Y2VlZHMgbWF4IGRlcHRoIG9mICVkLgBUaGUgY29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIENyZWF0ZWQgd2l0aCBNeVNRTCAlZCwgbm93IHJ1bm5pbmcgJWQuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AVHJpZ2dlciAlcy4lcy4lcyBkb2VzIG5vdCBoYXZlIENSRUFURUQgYXR0cmlidXRlLgBSZWZlcmVuY2VkIHRyaWdnZXIgJyVzJyBmb3IgdGhlIGdpdmVuIGFjdGlvbiB0aW1lIGFuZCBldmVudCB0eXBlIGRvZXMgbm90IGV4aXN0LgBFWFBMQUlOIEZPUiBDT05ORUNUSU9OIGNvbW1hbmQgaXMgc3VwcG9ydGVkIG9ubHkgZm9yIFNFTEVDVC9VUERBVEUvSU5TRVJUL0RFTEVURS9SRVBMQUNFAEludmFsaWQgc2l6ZSBmb3IgY29sdW1uICclLS4xOTJzJy4AVGFibGUgc3RvcmFnZSBlbmdpbmUgJyUtLjY0cycgZm91bmQgcmVxdWlyZWQgY3JlYXRlIG9wdGlvbiBtaXNzaW5nAE91dCBvZiBtZW1vcnkgaW4gc3RvcmFnZSBlbmdpbmUgJyUtLjY0cycuAFRoZSBwYXNzd29yZCBmb3IgYW5vbnltb3VzIHVzZXIgY2Fubm90IGJlIGV4cGlyZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBhIHJ1bm5pbmcgcmVwbGljYSBzcWwgdGhyZWFkOyBydW4gU1RPUCBSRVBMSUNBIFNRTF9USFJFQUQgZmlyc3QAQ2Fubm90IGNyZWF0ZSBGVUxMVEVYVCBpbmRleCBvbiBtYXRlcmlhbGl6ZWQgc3VicXVlcnkAVW5kbyBMb2cgZXJyb3I6ICVzAEludmFsaWQgYXJndW1lbnQgZm9yIGxvZ2FyaXRobQBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2EgaW8gdGhyZWFkOyBydW4gU1RPUCBSRVBMSUNBIElPX1RIUkVBRCBGT1IgQ0hBTk5FTCAnJXMnIGZpcnN0LgBUaGlzIG9wZXJhdGlvbiBtYXkgbm90IGJlIHNhZmUgd2hlbiB0aGUgcmVwbGljYSBoYXMgdGVtcG9yYXJ5IHRhYmxlcy4gVGhlIHRhYmxlcyB3aWxsIGJlIGtlcHQgb3BlbiB1bnRpbCB0aGUgc2VydmVyIHJlc3RhcnRzIG9yIHVudGlsIHRoZSB0YWJsZXMgYXJlIGRlbGV0ZWQgYnkgYW55IHJlcGxpY2F0ZWQgRFJPUCBzdGF0ZW1lbnQuIFN1Z2dlc3QgdG8gd2FpdCB1bnRpbCByZXBsaWNhX29wZW5fdGVtcF90YWJsZXMgPSAwLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIHdpdGggYSBTT1VSQ0VfTE9HX0ZJTEUgY2xhdXNlIGJ1dCBubyBTT1VSQ0VfTE9HX1BPUyBjbGF1c2UgbWF5IG5vdCBiZSBzYWZlLiBUaGUgb2xkIHBvc2l0aW9uIHZhbHVlIG1heSBub3QgYmUgdmFsaWQgZm9yIHRoZSBuZXcgYmluYXJ5IGxvZyBmaWxlLgBRdWVyeSBleGVjdXRpb24gd2FzIGludGVycnVwdGVkLCBtYXhpbXVtIHN0YXRlbWVudCBleGVjdXRpb24gdGltZSBleGNlZWRlZABTZWxlY3QgaXMgbm90IGEgcmVhZCBvbmx5IHN0YXRlbWVudCwgZGlzYWJsaW5nIHRpbWVyAER1cGxpY2F0ZSBlbnRyeSAnJS0uMTkycycuACclcycgbW9kZSBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuIFVzZSBTVFJJQ1RfQUxMX1RBQkxFUyBvciBTVFJJQ1RfVFJBTlNfVEFCTEVTIGluc3RlYWQuAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNvbnRhaW5zIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBhbmQgYXBwbGllcyB0byBhIFVOSU9OLCBFWENFUFQgb3IgSU5URVJTRUNUAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNvbnRhaW5zIGFnZ3JlZ2F0ZSBmdW5jdGlvbiBhbmQgYXBwbGllcyB0byB0aGUgcmVzdWx0IG9mIGEgbm9uLWFnZ3JlZ2F0ZWQgcXVlcnkAUmVwbGljYSB3b3JrZXIgaGFzIHN0b3BwZWQgYWZ0ZXIgYXQgbGVhc3Qgb25lIHByZXZpb3VzIHdvcmtlciBlbmNvdW50ZXJlZCBhbiBlcnJvciB3aGVuIHJlcGxpY2EtcHJlc2VydmUtY29tbWl0LW9yZGVyIHdhcyBlbmFibGVkLiBUbyBwcmVzZXJ2ZSBjb21taXQgb3JkZXIsIHRoZSBsYXN0IHRyYW5zYWN0aW9uIGV4ZWN1dGVkIGJ5IHRoaXMgdGhyZWFkIGhhcyBub3QgYmVlbiBjb21taXR0ZWQuIFdoZW4gcmVzdGFydGluZyB0aGUgcmVwbGljYSBhZnRlciBmaXhpbmcgYW55IGZhaWxlZCB0aHJlYWRzLCB5b3Ugc2hvdWxkIGZpeCB0aGlzIHdvcmtlciBhcyB3ZWxsLgByZXBsaWNhX3ByZXNlcnZlX2NvbW1pdF9vcmRlciBpcyBub3Qgc3VwcG9ydGVkICVzLgBUaGUgc2VydmVyIGlzIGN1cnJlbnRseSBpbiBvZmZsaW5lIG1vZGUAQmluYXJ5IGdlb21ldHJ5IGZ1bmN0aW9uICVzIGdpdmVuIHR3byBnZW9tZXRyaWVzIG9mIGRpZmZlcmVudCBzcmlkczogJXUgYW5kICV1LCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIGlkZW50aWNhbC4AQ2FsbGluZyBnZW9tZXRyeSBmdW5jdGlvbiAlcyB3aXRoIHVuc3VwcG9ydGVkIHR5cGVzIG9mIGFyZ3VtZW50cy4AVW5rbm93biBHSVMgZXJyb3Igb2NjdXJyZWQgaW4gZnVuY3Rpb24gJXMuAFVua25vd24gZXhjZXB0aW9uIGNhdWdodCBpbiBHSVMgZnVuY3Rpb24gJXMuAEludmFsaWQgR0lTIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXMuAFRoZSBnZW9tZXRyeSBoYXMgbm8gZGF0YSBpbiBmdW5jdGlvbiAlcy4AVW5hYmxlIHRvIGNhbGN1bGF0ZSBjZW50cm9pZCBiZWNhdXNlIGdlb21ldHJ5IGlzIGVtcHR5IGluIGZ1bmN0aW9uICVzLgBHZW9tZXRyeSBvdmVybGF5IGNhbGN1bGF0aW9uIGVycm9yOiBnZW9tZXRyeSBkYXRhIGlzIGludmFsaWQgaW4gZnVuY3Rpb24gJXMuAEdlb21ldHJ5IHR1cm4gaW5mbyBjYWxjdWxhdGlvbiBlcnJvcjogZ2VvbWV0cnkgZGF0YSBpcyBpbnZhbGlkIGluIGZ1bmN0aW9uICVzLgBBbmFseXNpcyBwcm9jZWR1cmVzIG9mIGludGVyc2VjdGlvbiBwb2ludHMgaW50ZXJydXB0ZWQgdW5leHBlY3RlZGx5IGluIGZ1bmN0aW9uICVzLgBVbmtub3duIGV4Y2VwdGlvbiB0aHJvd24gaW4gZnVuY3Rpb24gJXMuAE1lbW9yeSBhbGxvY2F0aW9uIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBEb21haW4gZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAExlbmd0aCBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ASW52YWxpZCBhcmd1bWVudCBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AT3V0IG9mIHJhbmdlIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBPdmVyZmxvdyBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AUmFuZ2UgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFVuZGVyZmxvdyBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ATG9naWMgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFJ1bnRpbWUgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAFVua25vd24gZXhjZXB0aW9uOiAlLS4zODRzIGluIGZ1bmN0aW9uICVzLgBHZW9tZXRyeSBieXRlIHN0cmluZyBtdXN0IGJlIGxpdHRsZSBlbmRpYW4uAFRoZSBwYXNzd29yZCBwcm92aWRlZCBmb3IgdGhlIHJlcGxpY2F0aW9uIHVzZXIgZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGggb2YgMzIgY2hhcmFjdGVycwBJbmNvcnJlY3QgdXNlci1sZXZlbCBsb2NrIG5hbWUgJyUtLjE5MnMnLiBUaGUgbmFtZSBpcyBlbXB0eSwgTlVMTCwgb3IgY2FuIG5vdCBiZSBleHByZXNzZWQgaW4gdGhlIGN1cnJlbnQgY2hhcmFjdGVyLXNldC4ARGVhZGxvY2sgZm91bmQgd2hlbiB0cnlpbmcgdG8gZ2V0IHVzZXItbGV2ZWwgbG9jazsgdHJ5IHJvbGxpbmcgYmFjayB0cmFuc2FjdGlvbi9yZWxlYXNpbmcgbG9ja3MgYW5kIHJlc3RhcnRpbmcgbG9jayBhY3F1aXNpdGlvbi4AUkVQTEFDRSBjYW5ub3QgYmUgZXhlY3V0ZWQgYXMgaXQgcmVxdWlyZXMgZGVsZXRpbmcgcm93cyB0aGF0IGFyZSBub3QgaW4gdGhlIHZpZXcARG8gbm90IHN1cHBvcnQgb25saW5lIG9wZXJhdGlvbiBvbiB0YWJsZSB3aXRoIEdJUyBpbmRleABVc2VyIHZhcmlhYmxlIG5hbWUgJyUtLjEwMHMnIGlzIGlsbGVnYWwAQ2Fubm90ICVzIHdoZW4gR1RJRF9NT0RFID0gT0ZGLgBDYW5ub3QgJXMgZnJvbSBhIHJlcGxpY2EgdGhyZWFkLgBJbmNvcnJlY3QgdHlwZSBmb3IgYXJndW1lbnQgJXMgaW4gZnVuY3Rpb24gJXMuAEV4cHJlc3Npb24gIyV1IG9mIE9SREVSIEJZIGNsYXVzZSBpcyBub3QgaW4gU0VMRUNUIGxpc3QsIHJlZmVyZW5jZXMgY29sdW1uICclLS4xOTJzJyB3aGljaCBpcyBub3QgaW4gU0VMRUNUIGxpc3Q7IHRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJXMARXhwcmVzc2lvbiAjJXUgb2YgT1JERVIgQlkgY2xhdXNlIGlzIG5vdCBpbiBTRUxFQ1QgbGlzdCwgY29udGFpbnMgYWdncmVnYXRlIGZ1bmN0aW9uOyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoICVzAFN1cHBsaWVkIGZpbHRlciBsaXN0IGNvbnRhaW5zIGEgdmFsdWUgd2hpY2ggaXMgbm90IGluIHRoZSByZXF1aXJlZCBmb3JtYXQgJ2RiX3BhdHRlcm4udGFibGVfcGF0dGVybicAT0sgcGFja2V0IHRvbyBsYXJnZQBJbnZhbGlkIEpTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogJXMASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IE1pc3NpbmcgcmVxdWlyZWQgbWVtYmVyICclcycASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6IE1lbWJlciAnJXMnIG11c3QgYmUgb2YgdHlwZSAnJXMnAEludmFsaWQgR2VvSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzAFVuc3VwcG9ydGVkIG51bWJlciBvZiBjb29yZGluYXRlIGRpbWVuc2lvbnMgaW4gZnVuY3Rpb24gJXM6IEZvdW5kICV1LCBleHBlY3RlZCAldQBSZXBsaWNhIGNoYW5uZWwgJyVzJyBkb2VzIG5vdCBleGlzdC4AQSByZXBsaWNhIGNoYW5uZWwgJyVzJyBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGdpdmVuIGhvc3QgYW5kIHBvcnQgY29tYmluYXRpb24uAENvdWxkbid0IGNyZWF0ZSBjaGFubmVsOiBDaGFubmVsIG5hbWUgaXMgZWl0aGVyIGludmFsaWQgb3IgdG9vIGxvbmcuAFRvIGhhdmUgbXVsdGlwbGUgY2hhbm5lbHMsIHJlcG9zaXRvcnkgY2Fubm90IGJlIG9mIHR5cGUgRklMRTsgUGxlYXNlIGNoZWNrIHRoZSByZXBvc2l0b3J5IGNvbmZpZ3VyYXRpb24gYW5kIGNvbnZlcnQgdGhlbSB0byBUQUJMRS4AQ2Fubm90IGRlbGV0ZSByZXBsaWNhIGluZm8gb2JqZWN0cyBmb3IgY2hhbm5lbCAnJXMnLgBNdWx0aXBsZSBjaGFubmVscyBleGlzdCBvbiB0aGUgcmVwbGljYS4gUGxlYXNlIHByb3ZpZGUgY2hhbm5lbCBuYW1lIGFzIGFuIGFyZ3VtZW50LgBNYXhpbXVtIG51bWJlciBvZiByZXBsaWNhdGlvbiBjaGFubmVscyBhbGxvd2VkIGV4Y2VlZGVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggcnVubmluZyByZXBsaWNhdGlvbiB0aHJlYWRzOyBydW4gU1RPUCBSRVBMSUNBIEZPUiBDSEFOTkVMICclcycgZmlyc3QAVGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgcnVubmluZyByZXBsaWNhdGlvbiB0aHJlYWRzOyBjb25maWd1cmUgcmVwbGljYSBhbmQgcnVuIFNUQVJUIFJFUExJQ0EgRk9SIENIQU5ORUwgJyVzJwBSZXBsaWNhdGlvbiB0aHJlYWQocykgZm9yIGNoYW5uZWwgJyVzJyBhcmUgYWxyZWFkeSBydW5ubmluZy4AUmVwbGljYXRpb24gdGhyZWFkKHMpIGZvciBjaGFubmVsICclcycgYXJlIGFscmVhZHkgc3RvcHBlZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhIHNxbCB0aHJlYWQ7IHJ1biBTVE9QIFJFUExJQ0EgU1FMX1RIUkVBRCBGT1IgQ0hBTk5FTCAnJXMnIGZpcnN0LgBXaGVuIHNxbF9yZXBsaWNhX3NraXBfY291bnRlciA+IDAsIGl0IGlzIG5vdCBhbGxvd2VkIHRvIHN0YXJ0IG1vcmUgdGhhbiBvbmUgU1FMIHRocmVhZCBieSB1c2luZyAnU1RBUlQgUkVQTElDQSBbU1FMX1RIUkVBRF0nLiBWYWx1ZSBvZiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgY2FuIG9ubHkgYmUgdXNlZCBieSBvbmUgU1FMIHRocmVhZCBhdCBhIHRpbWUuIFBsZWFzZSB1c2UgJ1NUQVJUIFJFUExJQ0EgW1NRTF9USFJFQURdIEZPUiBDSEFOTkVMJyB0byBzdGFydCB0aGUgU1FMIHRocmVhZCB3aGljaCB3aWxsIHVzZSB0aGUgdmFsdWUgb2Ygc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyLgBFeHByZXNzaW9uICMldSBvZiAlcyBpcyBub3QgaW4gR1JPVVAgQlkgY2xhdXNlIGFuZCBjb250YWlucyBub25hZ2dyZWdhdGVkIGNvbHVtbiAnJS0uMTkycycgd2hpY2ggaXMgbm90IGZ1bmN0aW9uYWxseSBkZXBlbmRlbnQgb24gY29sdW1ucyBpbiBHUk9VUCBCWSBjbGF1c2U7IHRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3FsX21vZGU9b25seV9mdWxsX2dyb3VwX2J5AEluIGFnZ3JlZ2F0ZWQgcXVlcnkgd2l0aG91dCBHUk9VUCBCWSwgZXhwcmVzc2lvbiAjJXUgb2YgJXMgY29udGFpbnMgbm9uYWdncmVnYXRlZCBjb2x1bW4gJyUtLjE5MnMnOyB0aGlzIGlzIGluY29tcGF0aWJsZSB3aXRoIHNxbF9tb2RlPW9ubHlfZnVsbF9ncm91cF9ieQBVcGRhdGluZyAnJXMnIGlzIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgbWFkZSByZWFkLW9ubHkgaW4gYSBmdXR1cmUgcmVsZWFzZS4AQ2hhbmdpbmcgc3FsIG1vZGUgJyVzJyBpcyBkZXByZWNhdGVkLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4ARFJPUCBEQVRBQkFTRSBmYWlsZWQ7IHNvbWUgdGFibGVzIG1heSBoYXZlIGJlZW4gZHJvcHBlZCBidXQgdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSByZW1haW5zLiBUaGUgR1RJRCBoYXMgbm90IGJlZW4gYWRkZWQgdG8gR1RJRF9FWEVDVVRFRCBhbmQgdGhlIHN0YXRlbWVudCB3YXMgbm90IHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cuIEZpeCB0aGlzIGFzIGZvbGxvd3M6ICgxKSByZW1vdmUgYWxsIGZpbGVzIGZyb20gdGhlIGRhdGFiYXNlIGRpcmVjdG9yeSAlLS4xOTJzOyAoMikgU0VUIEdUSURfTkVYVD0nJS0uMTkycyc7ICgzKSBEUk9QIERBVEFCQVNFIGAlLS4xOTJzYC4AVGhlIHNlcnZlciBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSB0byBiZSBhbiBhY3RpdmUgbWVtYmVyIG9mIHRoZSBncm91cC4gUGxlYXNlIHNlZSBtb3JlIGRldGFpbHMgb24gZXJyb3IgbG9nLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIGdyb3VwIGlzIGFscmVhZHkgcnVubmluZy4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIGFzIHRoZSBhcHBsaWVyIG1vZHVsZSBmYWlsZWQgdG8gc3RhcnQuAFRoZSBTVE9QIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFRoZSBhcHBsaWVyIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsIHdoaWxlIGl0IHdhcyBidXN5LiBUaGUgYXBwbGllciB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIGFzIHRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIGluaXRpYWxpemluZyB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBsYXllci4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIGFzIHRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIGpvaW5pbmcgdGhlIGNvbW11bmljYXRpb24gZ3JvdXAuAFRoZSB0YWJsZSBkb2VzIG5vdCBjb21wbHkgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIGJ5IGFuIGV4dGVybmFsIHBsdWdpbi4AQ2Fubm90IGNoYW5nZSB0aGUgdmFsdWUgb2YgdmFyaWFibGUgJXMgd2l0aG91dCBiaW5hcnkgbG9nIGZvcm1hdCBhcyBST1cuAEVycm9yIG9uIG9ic2VydmVyIHdoaWxlIHJ1bm5pbmcgcmVwbGljYXRpb24gaG9vayAnJXMnLgBQbHVnaW4gaW5zdHJ1Y3RlZCB0aGUgc2VydmVyIHRvIHJvbGxiYWNrIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb24uAElOUExBQ0UgQUREIG9yIERST1Agb2YgdmlydHVhbCBjb2x1bW5zIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIEFMVEVSIFRBQkxFIGFjdGlvbnMAQ2Fubm90IGRlZmluZSBmb3JlaWduIGtleSB3aXRoICVzIGNsYXVzZSBvbiBhIGdlbmVyYXRlZCBjb2x1bW4uAFRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBpbiB0YWJsZSAnJXMnIGlzIG5vdCBhbGxvd2VkLgAnJXMnIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGdlbmVyYXRlZCBjb2x1bW5zLgBHZW5lcmF0ZWQgY29sdW1uIGNhbiByZWZlciBvbmx5IHRvIGdlbmVyYXRlZCBjb2x1bW5zIGRlZmluZWQgcHJpb3IgdG8gaXQuAENvbHVtbiAnJXMnIGhhcyBhIGdlbmVyYXRlZCBjb2x1bW4gZGVwZW5kZW5jeS4AR2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhdXRvLWluY3JlbWVudCBjb2x1bW4uAFRoZSAnJS0uNjRzJyBmZWF0dXJlIGlzIG5vdCBhdmFpbGFibGU7IHlvdSBuZWVkIHRvIHJlbW92ZSAnJS0uNjRzJyBvciB1c2UgTXlTUUwgYnVpbHQgd2l0aCAnJS0uNjRzJwBTRVQgQEBHTE9CQUwuR1RJRF9NT0RFID0gJS0uNjRzIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgJS0uMzg0cy4AVGhlIHJlcGxpY2F0aW9uIHJlY2VpdmVyIHRocmVhZCUtLjE5MnMgY2Fubm90IHN0YXJ0IGluIEFVVE9fUE9TSVRJT04gbW9kZTogdGhpcyBzZXJ2ZXIgdXNlcyBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYuAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQVVUT19QT1NJVElPTiA9IDEsIGF0IGZpbGUgJS41MTJzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLCBhdCBmaWxlICUuNTEycywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBHVElELXRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLCBhdCBmaWxlICUuNTEycywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHNldCBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTiBiZWNhdXNlIHRoZXJlIGFyZSBvbmdvaW5nIHRyYW5zYWN0aW9ucyB0aGF0IHZpb2xhdGUgR1RJRCBjb25zaXN0ZW5jeS4AVGhlcmUgYXJlIG9uZ29pbmcgdHJhbnNhY3Rpb25zIHRoYXQgdmlvbGF0ZSBHVElEIGNvbnNpc3RlbmN5LgBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLiBBY2NvdW50IGlzIGxvY2tlZC4ASW5jb3JyZWN0IHRhYmxlc3BhY2UgbmFtZSBgJS0uMTkyc2AAVGFibGVzcGFjZSBgJS0uMTkyc2AgaXMgbm90IGVtcHR5LgBJbmNvcnJlY3QgRmlsZSBOYW1lICclcycuAEluY29uc2lzdGVudCBpbnRlcnNlY3Rpb24gcG9pbnRzLgBPcHRpbWl6ZXIgaGludCBzeW50YXggZXJyb3IAVW5zdXBwb3J0ZWQgTUFYX0VYRUNVVElPTl9USU1FAE1BWF9FWEVDVVRJT05fVElNRSBoaW50IGlzIHN1cHBvcnRlZCBieSB0b3AtbGV2ZWwgc3RhbmRhbG9uZSBTRUxFQ1Qgc3RhdGVtZW50cyBvbmx5AEhpbnQgJXMgaXMgaWdub3JlZCBhcyBjb25mbGljdGluZy9kdXBsaWNhdGVkAFF1ZXJ5IGJsb2NrIG5hbWUgJXMgaXMgbm90IGZvdW5kIGZvciAlcyBoaW50AFVucmVzb2x2ZWQgbmFtZSAlcyBmb3IgJXMgaGludABQbGVhc2UgZG8gbm90IG1vZGlmeSB0aGUgJXMgdGFibGUuIFRoaXMgaXMgYSBteXNxbCBpbnRlcm5hbCBzeXN0ZW0gdGFibGUgdG8gc3RvcmUgR1RJRHMgZm9yIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMuIE1vZGlmeWluZyBpdCBjYW4gbGVhZCB0byBhbiBpbmNvbnNpc3RlbnQgR1RJRCBzdGF0ZS4AQ29tbWFuZCBub3Qgc3VwcG9ydGVkIGJ5IHBsdWdnYWJsZSBwcm90b2NvbHMASW5jb3JyZWN0IGxvY2tpbmcgc2VydmljZSBsb2NrIG5hbWUgJyUtLjE5MnMnLgBEZWFkbG9jayBmb3VuZCB3aGVuIHRyeWluZyB0byBnZXQgbG9ja2luZyBzZXJ2aWNlIGxvY2s7IHRyeSByZWxlYXNpbmcgbG9ja3MgYW5kIHJlc3RhcnRpbmcgbG9jayBhY3F1aXNpdGlvbi4AU2VydmljZSBsb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZC4AUGFyYW1ldGVyICVzIGV4Y2VlZHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBvaW50cyBpbiBhIGdlb21ldHJ5ICglbHUpIGluIGZ1bmN0aW9uICVzLgAnTk9fWkVST19EQVRFJywgJ05PX1pFUk9fSU5fREFURScgYW5kICdFUlJPUl9GT1JfRElWSVNJT05fQllfWkVSTycgc3FsIG1vZGVzIHNob3VsZCBiZSB1c2VkIHdpdGggc3RyaWN0IG1vZGUuIFRoZXkgd2lsbCBiZSBtZXJnZWQgd2l0aCBzdHJpY3QgbW9kZSBpbiBhIGZ1dHVyZSByZWxlYXNlLgBWZXJzaW9uIHRva2VuIG1pc21hdGNoIGZvciAlLipzLiBDb3JyZWN0IHZhbHVlICUuKnMAVmVyc2lvbiB0b2tlbiAlLipzIG5vdCBmb3VuZC4AVmFyaWFibGUgJS0uMTkycyBjYW5ub3QgYmUgY2hhbmdlZCBieSBhIGNsaWVudCB0aGF0IG93bnMgYSBHVElELiBUaGUgY2xpZW50IG93bnMgJXMuIE93bmVyc2hpcCBpcyByZWxlYXNlZCBvbiBDT01NSVQgb3IgUk9MTEJBQ0suACUtLjE5MnMgY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBjaGFubmVsICclLS4xOTJzJy4ASW52YWxpZCBKU09OIHRleHQ6ICIlcyIgYXQgcG9zaXRpb24gJXUgaW4gdmFsdWUgZm9yIGNvbHVtbiAnJS0uMjAwcycuAEludmFsaWQgSlNPTiB0ZXh0IGluIGFyZ3VtZW50ICV1IHRvIGZ1bmN0aW9uICVzOiAiJXMiIGF0IHBvc2l0aW9uICV1LiUtLjBzAFRoZSBKU09OIGJpbmFyeSB2YWx1ZSBjb250YWlucyBpbnZhbGlkIGRhdGEuAEludmFsaWQgSlNPTiBwYXRoIGV4cHJlc3Npb24uIFRoZSBlcnJvciBpcyBhcm91bmQgY2hhcmFjdGVyIHBvc2l0aW9uICV1LiUtLjIwMHMAQ2Fubm90IGNyZWF0ZSBhIEpTT04gdmFsdWUgZnJvbSBhIHN0cmluZyB3aXRoIENIQVJBQ1RFUiBTRVQgJyVzJy4ASW52YWxpZCBKU09OIGNoYXJhY3RlciBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiAnJXMnOyB1dGY4IGlzIHJlcXVpcmVkLgBJbnZhbGlkIGRhdGEgdHlwZSBmb3IgSlNPTiBkYXRhIGluIGFyZ3VtZW50ICV1IHRvIGZ1bmN0aW9uICVzOyBhIEpTT04gc3RyaW5nIG9yIEpTT04gdHlwZSBpcyByZXF1aXJlZC4AQ2Fubm90IENBU1QgdmFsdWUgdG8gSlNPTi4AQSBwYXRoIGV4cHJlc3Npb24gbXVzdCBiZSBlbmNvZGVkIGluIHRoZSB1dGY4IGNoYXJhY3RlciBzZXQuIFRoZSBwYXRoIGV4cHJlc3Npb24gJyUtLjIwMHMnIGlzIGVuY29kZWQgaW4gY2hhcmFjdGVyIHNldCAnJS0uMjAwcycuAEluIHRoaXMgc2l0dWF0aW9uLCBwYXRoIGV4cHJlc3Npb25zIG1heSBub3QgY29udGFpbiB0aGUgKiBhbmQgKiogdG9rZW5zIG9yIGFuIGFycmF5IHJhbmdlLgBUaGUgSlNPTiB2YWx1ZSBpcyB0b28gYmlnIHRvIGJlIHN0b3JlZCBpbiBhIEpTT04gY29sdW1uLgBUaGUgSlNPTiBvYmplY3QgY29udGFpbnMgYSBrZXkgbmFtZSB0aGF0IGlzIHRvbyBsb25nLgBKU09OIGNvbHVtbiAnJS0uMTkycycgc3VwcG9ydHMgaW5kZXhpbmcgb25seSB2aWEgZ2VuZXJhdGVkIGNvbHVtbnMgb24gYSBzcGVjaWZpZWQgSlNPTiBwYXRoLgBUaGUgcGF0aCBleHByZXNzaW9uICckJyBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIGNvbnRleHQuAFRoZSBvbmVPckFsbCBhcmd1bWVudCB0byAlcyBtYXkgdGFrZSB0aGVzZSB2YWx1ZXM6ICdvbmUnIG9yICdhbGwnLgBPdXQgb2YgcmFuZ2UgSlNPTiB2YWx1ZSBmb3IgQ0FTVCB0byAlcyUtLjBzIGZyb20gY29sdW1uICVzIGF0IHJvdyAlbGQASW52YWxpZCBKU09OIHZhbHVlIGZvciBDQVNUIHRvICVzJS0uMHMgZnJvbSBjb2x1bW4gJXMgYXQgcm93ICVsZABUaGUgSlNPTiBkb2N1bWVudCBleGNlZWRzIHRoZSBtYXhpbXVtIGRlcHRoLgBKU09OIGRvY3VtZW50cyBtYXkgbm90IGNvbnRhaW4gTlVMTCBtZW1iZXIgbmFtZXMuAENvbm5lY3Rpb25zIHVzaW5nIGluc2VjdXJlIHRyYW5zcG9ydCBhcmUgcHJvaGliaXRlZCB3aGlsZSAtLXJlcXVpcmVfc2VjdXJlX3RyYW5zcG9ydD1PTi4ATm8gc2VjdXJlIHRyYW5zcG9ydHMgKFNTTCBvciBTaGFyZWQgTWVtb3J5KSBhcmUgY29uZmlndXJlZCwgdW5hYmxlIHRvIHNldCAtLXJlcXVpcmVfc2VjdXJlX3RyYW5zcG9ydD1PTi4AU3RvcmFnZSBlbmdpbmUgJXMgaXMgZGlzYWJsZWQgKFRhYmxlIGNyZWF0aW9uIGlzIGRpc2FsbG93ZWQpLgBBdXRob3JpemF0aW9uIElEICVzIGRvZXMgbm90IGV4aXN0LgBBdXRob3JpemF0aW9uIElEICVzIGFscmVhZHkgZXhpc3RzLgBBYm9ydGVkIGJ5IEF1ZGl0IEFQSSAoJyUtLjQ4cyc7JWQpLgBBIHBhdGggZXhwcmVzc2lvbiBpcyBub3QgYSBwYXRoIHRvIGEgY2VsbCBpbiBhbiBhcnJheS4AQW5vdGhlciBidWZmZXIgcG9vbCByZXNpemUgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcy4AVGhlICclcycgZmVhdHVyZSBpcyBkaXNhYmxlZDsgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciAnJXMnAFNlcnZlciBpc24ndCBhdmFpbGFibGUAU2Vzc2lvbiB3YXMga2lsbGVkAE1lbW9yeSBjYXBhY2l0eSBvZiAlbGx1IGJ5dGVzIGZvciAnJXMnIGV4Y2VlZGVkLiAlcwBSYW5nZSBvcHRpbWl6YXRpb24gd2FzIG5vdCBkb25lIGZvciB0aGlzIHF1ZXJ5LgBQYXJ0aXRpb25pbmcgdXBncmFkZSByZXF1aXJlZC4gUGxlYXNlIGR1bXAvcmVsb2FkIHRvIGZpeCBpdCBvciBkbzogQUxURVIgVEFCTEUgYCUtLjE5MnNgLmAlLS4xOTJzYCBVUEdSQURFIFBBUlRJVElPTklORwBUaGUgY2xpZW50IGhvbGRzIG93bmVyc2hpcCBvZiB0aGUgR1RJRCAlcy4gVGhlcmVmb3JlLCBXQUlUX0ZPUl9FWEVDVVRFRF9HVElEX1NFVCBjYW5ub3Qgd2FpdCBmb3IgdGhpcyBHVElELgBDYW5ub3QgYWRkIGZvcmVpZ24ga2V5IG9uIHRoZSBiYXNlIGNvbHVtbiBvZiBpbmRleGVkIHZpcnR1YWwgY29sdW1uLgBDYW5ub3QgY3JlYXRlIGluZGV4IG9uIHZpcnR1YWwgY29sdW1uIHdob3NlIGJhc2UgY29sdW1uIGhhcyBmb3JlaWduIGNvbnN0cmFpbnQuAFBsZWFzZSBkbyBub3QgbW9kaWZ5IHRoZSAlcyB0YWJsZSB3aXRoIGFuIFhBIHRyYW5zYWN0aW9uLiBUaGlzIGlzIGFuIGludGVybmFsIHN5c3RlbSB0YWJsZSB1c2VkIHRvIHN0b3JlIEdUSURzIGZvciBjb21taXR0ZWQgdHJhbnNhY3Rpb25zLiBBbHRob3VnaCBtb2RpZnlpbmcgaXQgY2FuIGxlYWQgdG8gYW4gaW5jb25zaXN0ZW50IEdUSUQgc3RhdGUsIGlmIG5lY2Vzc2FyeSB5b3UgY2FuIG1vZGlmeSBpdCB3aXRoIGEgbm9uLVhBIHRyYW5zYWN0aW9uLgBMb2NrIGFjcXVpc2l0aW9uIHJlZnVzZWQgYnkgc3RvcmFnZSBlbmdpbmUuAEFERCBDT0xVTU4gY29sLi4uVklSVFVBTCwgQUREIElOREVYKGNvbCkATWFzdGVyIGtleSByb3RhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN0b3JhZ2UgZW5naW5lLgBFbmNyeXB0aW9uIGtleSByb3RhdGlvbiBlcnJvciByZXBvcnRlZCBieSBTRTogJXMAV3JpdGUgdG8gYmlubG9nIGZhaWxlZC4gSG93ZXZlciwgbWFzdGVyIGtleSByb3RhdGlvbiBoYXMgYmVlbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgBTdG9yYWdlIGVuZ2luZSBpcyBub3QgYXZhaWxhYmxlLgBUaGlzIHRhYmxlc3BhY2UgY2FuJ3QgYmUgZW5jcnlwdGVkLgBJbnZhbGlkIGVuY3J5cHRpb24gb3B0aW9uLgBDYW4ndCBmaW5kIG1hc3RlciBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaW4gdGhlIHNlcnZlciBsb2cgaWYgYSBrZXlyaW5nIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LgBQYXJzZXIgYmFpbGVkIG91dCBmb3IgdGhpcyBxdWVyeS4AQ2Fubm90IGFsdGVyIGVuY3J5cHRpb24gYXR0cmlidXRlIGJ5IGlucGxhY2UgYWxnb3JpdGhtLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIHVuZGVybHlpbmcga2V5cmluZyBzZXJ2aWNlIHJldHVybmVkIGFuIGVycm9yLiBQbGVhc2UgY2hlY2sgaWYgYSBrZXlyaW5nIGlzIGluc3RhbGxlZCBhbmQgdGhhdCBwcm92aWRlZCBhcmd1bWVudHMgYXJlIHZhbGlkIGZvciB0aGUga2V5cmluZyB5b3UgYXJlIHVzaW5nLgBJdCBzZWVtcyB0aGF0IHlvdXIgZGIgc2NoZW1hIGlzIG9sZC4gVGhlICVzIGNvbHVtbiBpcyA3NyBjaGFyYWN0ZXJzIGxvbmcgYW5kIHNob3VsZCBiZSA5MyBjaGFyYWN0ZXJzIGxvbmcuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AUkVTRVQgU09VUkNFIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgJS0uMzg0cy4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBncm91cCBhbHJlYWR5IGhhcyA5IG1lbWJlcnMuAENhbm5vdCBhZGQgZm9yZWlnbiBrZXkgb24gdGhlIGJhc2UgY29sdW1uIG9mIHN0b3JlZCBjb2x1bW4uIABDYW5ub3QgY29tcGxldGUgdGhlIG9wZXJhdGlvbiBiZWNhdXNlIHRhYmxlIGlzIHJlZmVyZW5jZWQgYnkgYW5vdGhlciBjb25uZWN0aW9uLgBUaGUgcGFydGl0aW9uIGVuZ2luZSwgdXNlZCBieSB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJywgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSB1c2UgbmF0aXZlIHBhcnRpdGlvbmluZyBpbnN0ZWFkLgAlLjE5MnMoZ2VvbWV0cnkpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVwbGFjZWQgYnkgc3Rfc3JpZChnZW9tZXRyeSwgMCkgaW4gYSBmdXR1cmUgdmVyc2lvbi4gVXNlICUuMTkycyhzdF9hc3drYihnZW9tZXRyeSksIDApIGluc3RlYWQuACUuMTkycyhnZW9tZXRyeSwgc3JpZCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSBzdF9zcmlkKGdlb21ldHJ5LCBzcmlkKSBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBVc2UgJS4xOTJzKHN0X2Fzd2tiKGdlb21ldHJ5KSwgc3JpZCkgaW5zdGVhZC4AVGhlIHJlc291cmNlIG1hbmFnZXIgaXMgbm90IGFibGUgdG8gY29tbWl0IHRoZSB0cmFuc2FjdGlvbiBicmFuY2ggYXQgdGhpcyB0aW1lLiBQbGVhc2UgcmV0cnkgbGF0ZXIuAEZ1bmN0aW9uICVzIGZhaWxlZCBkdWUgdG86ICVzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgaXMgYmVpbmcgdXNlZCBpbnNpZGUgYSBYQSB0cmFuc2FjdGlvbi4gQ29uY3VycmVudCBYQSB0cmFuc2FjdGlvbnMgbWF5IGRlYWRsb2NrIG9uIHJlcGxpY2FzIHdoZW4gcmVwbGljYXRlZCB1c2luZyBzdGF0ZW1lbnRzLgAlcyBVREYgZmFpbGVkOyAlcwBDYW4gbm90IHBlcmZvcm0ga2V5cmluZyBtaWdyYXRpb24gOiAlcwBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAlLS4xMjhzIHByaXZpbGVnZXMgZm9yIHRoaXMgb3BlcmF0aW9uAEtleXJpbmcgbWlncmF0aW9uICVzLgBGYWlsZWQgdG8gb3BlbiB0aGUgJXMgZmlsdGVyIHRhYmxlcy4ARmFpbGVkIHRvIG9wZW4gJyVzLiVzJyAlcyB0YWJsZS4ATm8ga2V5cmluZyBwbHVnaW4gaW5zdGFsbGVkLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBoYXMgbm90IGJlZW4gc2V0OyBpdCB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5LiBVc2UgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfZ2V0IHRvIG9idGFpbiB0aGUgcGFzc3dvcmQgb3IgYXVkaXRfbG9nX2VuY3J5cHRpb25fcGFzc3dvcmRfc2V0IHRvIHNldCBhIG5ldyBvbmUuAENvdWxkIG5vdCBjcmVhdGUgQUVTIGtleS4gT3BlblNTTCdzIEVWUF9CeXRlc1RvS2V5IGZ1bmN0aW9uIGZhaWxlZC4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgY2Fubm90IGJlIGZldGNoZWQgZnJvbSB0aGUga2V5cmluZy4gUGFzc3dvcmQgdXNlZCBzbyBmYXIgaXMgdXNlZCBmb3IgZW5jcnlwdGlvbi4AQXVkaXQgTG9nIGZpbHRlcmluZyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkLgBSZXF1ZXN0IGlnbm9yZWQgZm9yICclcydAJyVzJy4gU1VQRVIgcHJpdmlsZWdlIG9yIEFVRElUX0FETUlOIHJvbGUgbmVlZGVkIHRvIHBlcmZvcm0gb3BlcmF0aW9uAFNVUEVSIHByaXZpbGVnZSBvciBBVURJVF9BRE1JTiByb2xlIHJlcXVpcmVkIGZvciAnJXMnQCclcycgdXNlci4AQ291bGQgbm90IHJlaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsdGVycy4ASW52YWxpZCBhcmd1bWVudCB0eXBlAEludmFsaWQgYXJndW1lbnQgY291bnQAYXVkaXRfbG9nIHBsdWdpbiBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHVzaW5nIElOU1RBTEwgUExVR0lOIHN5bnRheC4ASW52YWxpZCAibWF4X2FycmF5X2xlbmd0aCIgYXJndW1lbnQgdHlwZS4ASW52YWxpZCAibWF4X2FycmF5X2xlbmd0aCIgYXJndW1lbnQgdmFsdWUuACVzAEZpbHRlciBuYW1lIGNhbm5vdCBiZSBlbXB0eS4AVXNlciBjYW5ub3QgYmUgZW1wdHkuAFNwZWNpZmllZCBmaWx0ZXIgaGFzIG5vdCBiZWVuIGZvdW5kLgBGaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHVzZXIgbmFtZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gdGhlIHVzZXIgbmFtZS4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gdGhlIGhvc3QgbmFtZS4AV2l0aCB0aGUgTUFYREIgU1FMIG1vZGUgZW5hYmxlZCwgVElNRVNUQU1QIGlzIGlkZW50aWNhbCB3aXRoIERBVEVUSU1FLiBUaGUgTUFYREIgU1FMIG1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBkaXNhYmxlIHRoZSBNQVhEQiBTUUwgbW9kZSBhbmQgdXNlIERBVEVUSU1FIGluc3RlYWQuAFRoZSB1c2Ugb2YgcmVwbGljYXRpb24gZmlsdGVycyB3aXRoIFhBIHRyYW5zYWN0aW9ucyBpcyBub3Qgc3VwcG9ydGVkLCBhbmQgY2FuIGxlYWQgdG8gYW4gdW5kZWZpbmVkIHN0YXRlIGluIHRoZSByZXBsaWNhLgBDb3VsZCBub3Qgb3BlbiBmaWxlICclcycgZm9yIGVycm9yIGxvZ2dpbmclcyVzAEdyb3VwaW5nIG9uIHRlbXBvcmFsIGlzIG5vbi1kZXRlcm1pbmlzdGljIGZvciB0aW1lem9uZXMgaGF2aW5nIERTVC4gUGxlYXNlIGNvbnNpZGVyIHN3aXRjaGluZyB0byBVVEMgZm9yIHRoaXMgcXVlcnkuAENhbid0IHN0YXJ0IHNlcnZlciA6IE5hbWVkIFBpcGUgIiVzIiBhbHJlYWR5IGluIHVzZS4AVGhlIHNpemUgb2Ygd3JpdGVzZXQgZGF0YSBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gZXhjZWVkcyBhIGxpbWl0IGltcG9zZWQgYnkgYW4gZXh0ZXJuYWwgY29tcG9uZW50LiBJZiB1c2luZyBHcm91cCBSZXBsaWNhdGlvbiBjaGVjayAnZ3JvdXBfcmVwbGljYXRpb25fdHJhbnNhY3Rpb25fc2l6ZV9saW1pdCcuAEFjY2VwdGVkIGEgY29ubmVjdGlvbiB3aXRoIGRlcHJlY2F0ZWQgcHJvdG9jb2wgJyVzJyBmb3IgYWNjb3VudCBgJXNgQGAlc2AgZnJvbSBob3N0IGAlc2AuIENsaWVudCBzdXBwbGllZCB1c2VybmFtZSBgJXNgAEEgZGVwcmVjYXRlZCBUTFMgdmVyc2lvbiAlcyBpcyBlbmFibGVkLiBQbGVhc2UgdXNlIFRMU3YxLjIgb3IgaGlnaGVyLgBPcHRpb25hbCBuYXRpdmUgdGFibGUgJyUtLjY0cycuJyUtLjY0cycgaGFzIHRoZSB3cm9uZyBzdHJ1Y3R1cmUgb3IgaXMgbWlzc2luZy4AS0RGIG1ldGhvZCBuYW1lIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHVzZSBoa2RmIG9yIHBia2RmMl9obWFjIG1ldGhvZCBuYW1lAEZvciBLREYgbWV0aG9kIHBia2RmMl9obWFjIGl0ZXJhdGlvbnMgdmFsdWUgbGVzcyB0aGFuIDEwMDAgb3IgbW9yZSB0aGFuIDY1NTM1IGlzIG5vdCBhbGxvd2VkIGR1ZSB0byBzZWN1cml0eSByZWFzb25zLiBQbGVhc2UgcHJvdmlkZSBpdGVyYXRpb25zID49IDEwMDAgYW5kIGl0ZXJhdGlvbnMgPCA2NTUzNQBBRVMga2V5IHNpemUgc2hvdWxkIGJlICVkIGJ5dGVzIGxlbmd0aCBvciBzZWN1cmUgS0RGIG1ldGhvZHMgaGtkZiBvciBwYmtkZjJfaG1hYyBzaG91bGQgYmUgdXNlZCwgcGxlYXNlIHByb3ZpZGUgZXhhY3QgQUVTIGtleSBzaXplIG9yIHVzZSBLREYgbWV0aG9kcyBmb3IgYmV0dGVyIHNlY3VyaXR5LgBLREYgb3B0aW9uIHNpemUgaXMgaW52YWxpZCwgcGxlYXNlIHByb3ZpZGUgdmFsaWQgc2l6ZSA8ICVkIGJ5dGVzIGFuZCBub3QgTlVMTABDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGlzIG5vdCBhbGxvd2VkIHdpdGggUk9XX0ZPUk1BVD1DT01QUkVTU0VEIG9yIEtFWV9CTE9DS19TSVpFLgBUaGUgQUNMIG9wZXJhdGlvbiBmYWlsZWQgZHVlIHRvIHRoZSBmb2xsb3dpbmcgZXJyb3IgZnJvbSBTRTogZXJyY29kZSAlZCAtICUuMjU2cwBUaGlzIHN0b3JhZ2UgZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgdGhlICVzIGluZGV4IGFsZ29yaXRobSwgc3RvcmFnZSBlbmdpbmUgZGVmYXVsdCB3YXMgdXNlZCBpbnN0ZWFkLgBEYXRhYmFzZSAnJS0uMTkycycgZG9lc24ndCBleGlzdABUb28gbWFueSBlbnVtZXJhdGlvbiB2YWx1ZXMgZm9yIGNvbHVtbiAlLjE5MnMuAFRvbyBsb25nIGVudW1lcmF0aW9uL3NldCB2YWx1ZSBmb3IgY29sdW1uICUuMTkycy4AJXMgZGljdGlvbmFyeSBvYmplY3QgaXMgaW52YWxpZC4gKCUuMTkycykARmFpbGVkIHRvIHVwZGF0ZSAlLjE5MnMgZGljdGlvbmFyeSBvYmplY3QuAERpY3Rpb25hcnkgb2JqZWN0IGlkICglbHUpIGRvZXMgbm90IGV4aXN0LgBEaWN0aW9uYXJ5IG9iamVjdCBuYW1lICclcycgaXMgaW52YWxpZC4gKCUuMTkycykAVGFibGVzcGFjZSAlLS4xOTJzIGRvZXNuJ3QgZXhpc3QuAENvbW1lbnQgZm9yIHJvdXRpbmUgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkARmFpbGVkIHRvIGxvYWQgcm91dGluZSAnJS0uNjRzJy4AQmluYXJ5IG9wZXJhbmRzIG9mIGJpdHdpc2Ugb3BlcmF0b3JzIG11c3QgYmUgb2YgZXF1YWwgbGVuZ3RoAEFnZ3JlZ2F0ZSBiaXR3aXNlIGZ1bmN0aW9ucyBjYW5ub3QgYWNjZXB0IGFyZ3VtZW50cyBsb25nZXIgdGhhbiA1MTEgYnl0ZXM7IGNvbnNpZGVyIHVzaW5nIHRoZSBTVUJTVFJJTkcoKSBmdW5jdGlvbgBIaW50cyBhcmVuJ3Qgc3VwcG9ydGVkIGluICVzACUuNjRzIHZhbHVlIGlzIGEgZ2VvbWV0cnkgb2YgdW5leHBlY3RlZCB0eXBlICUuNjRzIGluICUuNjRzLgBDYW4ndCBwYXJzZSB0aGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gb2YgU1JJRCAldS4AVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIGZvciBTUklEICV1IGRvZXMgbm90IHNwZWNpZnkgdGhlIG1hbmRhdG9yeSAlcyAoRVBTRyAldSkgcHJvamVjdGlvbiBwYXJhbWV0ZXIuAFRoZXJlJ3Mgbm8gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4ARnVuY3Rpb24gJXMgaXMgb25seSBkZWZpbmVkIGZvciBDYXJ0ZXNpYW4gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcywgYnV0IG9uZSBvZiBpdHMgYXJndW1lbnRzIGlzIGluIFNSSUQgJXUsIHdoaWNoIGlzIG5vdCBDYXJ0ZXNpYW4uAEZ1bmN0aW9uICVzIGlzIG9ubHkgZGVmaW5lZCBmb3IgQ2FydGVzaWFuIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMsIGJ1dCBvbmUgb2YgaXRzIGFyZ3VtZW50cyBpcyBpbiBTUklEICV1LCB3aGljaCBoYXMgbm90IGJlZW4gZGVmaW5lZC4AQSBwcmltYXJ5IGtleSBpbmRleCBjYW5ub3QgYmUgaW52aXNpYmxlAFVua25vd24gYXV0aG9yaXphdGlvbiBJRCBgJS42NHNgQGAlLjY0c2AARmFpbGVkIHRvIGdyYW50ICUuOTBzYCB0byAlLjkwcwBGYWlsZWQgdG8gb3BlbiB0aGUgc2VjdXJpdHkgc3lzdGVtIHRhYmxlcwBGYWlsZWQgdG8gc2V0IGRlZmF1bHQgcm9sZXMAQ2Fubm90IGZpbmQgc2NoZW1hIGluIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBDYW5ub3QgYWNxdWlyZSBzY2hlbWUgbG9hZCBzZXJ2aWNlIGltcGxlbWVudGF0aW9uIGZvciBzY2hlbWEgJyUuMTkycycgaW4gc3BlY2lmaWVkIFVSTjogJyUuMTkycycuAENhbm5vdCBsb2FkIGNvbXBvbmVudCBmcm9tIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBgJS42NHNgQGAlLjY0c2AgaXMgbm90IGdyYW50ZWQgdG8gYCUuNjRzYEBgJS42NHNgAENvdWxkIG5vdCByZXZva2Ugcm9sZSBmcm9tIGAlLjY0c2BAYCUuNjRzYABSZW5hbWluZyBvZiBhIHJvbGUgaWRlbnRpZmllciBpcyBmb3JiaWRkZW4AQ2Fubm90IGFjcXVpcmUgc3BlY2lmaWVkIHNlcnZpY2UgaW1wbGVtZW50YXRpb246ICclLjE5MnMnLgBDYW5ub3Qgc2F0aXNmeSBkZXBlbmRlbmN5IGZvciBzZXJ2aWNlICclLjE5MnMnIHJlcXVpcmVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJy4AQ2Fubm90IHJlZ2lzdGVyIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gJyUuMTkycycgcHJvdmlkZWQgYnkgY29tcG9uZW50ICclLjE5MnMnLgBJbml0aWFsaXphdGlvbiBtZXRob2QgcHJvdmlkZWQgYnkgY29tcG9uZW50ICclLjE5MnMnIGZhaWxlZC4AQ29tcG9uZW50IHNwZWNpZmllZCBieSBVUk4gJyUuMTkycycgdG8gdW5sb2FkIGhhcyBub3QgYmVlbiBsb2FkZWQgYmVmb3JlLgBEZS1pbml0aWFsaXphdGlvbiBtZXRob2QgcHJvdmlkZWQgYnkgY29tcG9uZW50ICclLjE5MnMnIGZhaWxlZC4AUmVsZWFzZSBvZiBwcmV2aW91c2x5IGFjcXVpcmVkIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gZmFpbGVkLgBVbnJlZ2lzdHJhdGlvbiBvZiBzZXJ2aWNlIGltcGxlbWVudGF0aW9uICclLjE5MnMnIHByb3ZpZGVkIGJ5IGNvbXBvbmVudCAnJS4xOTJzJyBmYWlsZWQgZHVyaW5nIHVubG9hZGluZyBvZiB0aGUgY29tcG9uZW50LgBDYW5ub3QgdW5sb2FkIGNvbXBvbmVudCBmcm9tIHNwZWNpZmllZCBVUk46ICclLjE5MnMnLgBUaGUgUGVyc2lzdGVudCBEeW5hbWljIExvYWRlciB3YXMgdXNlZCB0byB1bmxvYWQgYSBjb21wb25lbnQgJyUuMTkycycsIGJ1dCBpdCB3YXMgbm90IHVzZWQgdG8gbG9hZCB0aGF0IGNvbXBvbmVudCBiZWZvcmUuAFRoZSBteXNxbC5jb21wb25lbnQgdGFibGUgaXMgbWlzc2luZyBvciBoYXMgYW4gaW5jb3JyZWN0IGRlZmluaXRpb24uAEZhaWxlZCB0byBtYW5pcHVsYXRlIGNvbXBvbmVudCAnJS4xOTJzJyBwZXJzaXN0ZW5jZSBkYXRhLiBFcnJvciBjb2RlICVkIGZyb20gc3RvcmFnZSBlbmdpbmUuAFRoZSBjb21wb25lbnQgd2l0aCBzcGVjaWZpZWQgVVJOOiAnJS4xOTJzJyB3YXMgc3BlY2lmaWVkIGluIGdyb3VwIG1vcmUgdGhhbiBvbmNlLgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW5ub3QgYmUgY2hhbmdlZDogJXMAQ2FuIG5vdCBsb2NrIHVzZXIgbWFuYWdlbWVudCBjYWNoZXMgZm9yIHByb2Nlc3NpbmcuAFRoZXJlJ3Mgbm8gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4AVmFyaWFibGVzIGNhbm5vdCBiZSBwZXJzaXN0ZWQuIFBsZWFzZSByZXRyeS4ASW5mb3JtYXRpb24gc2NoZW1hIHF1ZXJpZXMgZG8gbm90IHN1cHBvcnQgdGhlICclcycgY2xhdXNlLgBVbmFibGUgdG8gc3RvcmUgZHluYW1pYyAlcyBzdGF0aXN0aWNzIGludG8gZGF0YSBkaWN0aW9uYXJ5LgBBY2Nlc3MgdG8gc3lzdGVtIHNjaGVtYSAnJS42NHMnIGlzIHJlamVjdGVkLgBBY2Nlc3MgdG8gc3lzdGVtIHRhYmxlc3BhY2UgJyUuNjRzJyBpcyByZWplY3RlZC4AQWNjZXNzIHRvICUuNjRzICclLjY0cy4lLjY0cycgaXMgcmVqZWN0ZWQuAGRhdGEgZGljdGlvbmFyeSB0YWJsZQBzeXN0ZW0gdGFibGUAdGFibGUASW52YWxpZCBvcHRpb24ga2V5ICclLjE5MnMnIGluIGZ1bmN0aW9uICUuMTkycy4ASW52YWxpZCB2YWx1ZSAnJS4xOTJzJyBmb3Igb3B0aW9uICclLjE5MnMnIGluIGZ1bmN0aW9uICclLjE5MnMnLgBUaGUgc3RyaW5nICclLjE5MnMnIGlzIG5vdCBhIHZhbGlkIGtleSAlYyB2YWx1ZSBwYWlyIGluIGZ1bmN0aW9uICUuMTkycy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIHN0YXJ0cyB3aXRoIHRoZSBpbnZhbGlkIGNoYXJhY3RlciAnJWMnLgBUaGUgb3B0aW9ucyBhcmd1bWVudCBpbiBmdW5jdGlvbiAlLjE5MnMgZW5kcyB3aXRoIHRoZSBpbnZhbGlkIGNoYXJhY3RlciAnJWMnLgBUaGUgb3B0aW9ucyBhcmd1bWVudCBpbiBmdW5jdGlvbiAlLjE5MnMgY29udGFpbnMgdGhlIGludmFsaWQgY2hhcmFjdGVyIHNlcXVlbmNlICclLjE5MnMnLgBEdXBsaWNhdGUgb3B0aW9uIGtleSAnJS4xOTJzJyBpbiBmdW50aW9uICclLjE5MnMnLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuIFRoZSBheGlzIG9yZGVyIGlzIHVua25vd24uAEFjY2VzcyB0byBuYXRpdmUgZnVuY3Rpb24gJyUuNjRzJyBpcyByZWplY3RlZC4AVGhlIHJlcXVlc3RlZCB2YWx1ZSAnJWxsdScgZm9yIHRoZSBuZXh0IGJpbmFyeSBsb2cgaW5kZXggaXMgb3V0IG9mIHJhbmdlLiBQbGVhc2UgdXNlIGEgdmFsdWUgYmV0d2VlbiAnMScgYW5kICclbHUnLgBVbnJlc29sdmVkIHRhYmxlIG5hbWUgJXMgaW4gbG9ja2luZyBjbGF1c2UuAFRhYmxlICVzIGFwcGVhcnMgaW4gbXVsdGlwbGUgbG9ja2luZyBjbGF1c2VzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBTS0lQIExPQ0tFRC4gVGhlIHNldCBvZiBpbnNlcnRlZCB2YWx1ZXMgaXMgbm9uLWRldGVybWluaXN0aWMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIE5PV0FJVC4gV2hldGhlciB0aGUgY29tbWFuZCB3aWxsIHN1Y2NlZWQgb3IgZmFpbCBpcyBub3QgZGV0ZXJtaW5pc3RpYy4AU3RhdGVtZW50IGFib3J0ZWQgYmVjYXVzZSBsb2NrKHMpIGNvdWxkIG5vdCBiZSBhY3F1aXJlZCBpbW1lZGlhdGVseSBhbmQgTk9XQUlUIGlzIHNldC4AUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgc2hvdWxkIGNvbnRhaW4gYSBVTklPTgBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJyBzaG91bGQgaGF2ZSBvbmUgb3IgbW9yZSBub24tcmVjdXJzaXZlIHF1ZXJ5IGJsb2NrcyBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSByZWN1cnNpdmUgb25lcwBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJyBjYW4gY29udGFpbiBuZWl0aGVyIGFnZ3JlZ2F0aW9uIG5vciB3aW5kb3cgZnVuY3Rpb25zIGluIHJlY3Vyc2l2ZSBxdWVyeSBibG9jawBJbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sgb2YgUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycsIHRoZSByZWN1cnNpdmUgdGFibGUgbXVzdCBuZWl0aGVyIGJlIGluIHRoZSByaWdodCBhcmd1bWVudCBvZiBhIExFRlQgSk9JTiwgbm9yIGJlIGZvcmNlZCB0byBiZSBub24tZmlyc3Qgd2l0aCBqb2luIG9yZGVyIGhpbnRzAEluIHJlY3Vyc2l2ZSBxdWVyeSBibG9jayBvZiBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJywgdGhlIHJlY3Vyc2l2ZSB0YWJsZSBtdXN0IGJlIHJlZmVyZW5jZWQgb25seSBvbmNlLCBhbmQgbm90IGluIGFueSBzdWJxdWVyeQAnJXMnIHJlcXVpcmVzIEBAaW50ZXJuYWxfdG1wX2Rpc2tfc3RvcmFnZV9lbmdpbmU9SW5ub0RCAFdpbmRvdyBuYW1lICclcycgaXMgbm90IGRlZmluZWQuAFRoZXJlIGlzIGEgY2lyY3VsYXJpdHkgaW4gdGhlIHdpbmRvdyBkZXBlbmRlbmN5IGdyYXBoLgBBIHdpbmRvdyB3aGljaCBkZXBlbmRzIG9uIGFub3RoZXIgY2Fubm90IGRlZmluZSBwYXJ0aXRpb25pbmcuAFdpbmRvdyAnJXMnIGhhcyBhIGZyYW1lIGRlZmluaXRpb24sIHNvIGNhbm5vdCBiZSByZWZlcmVuY2VkIGJ5IGFub3RoZXIgd2luZG93LgBXaW5kb3cgJyVzJyBjYW5ub3QgaW5oZXJpdCAnJXMnIHNpbmNlIGJvdGggY29udGFpbiBhbiBPUkRFUiBCWSBjbGF1c2UuAFdpbmRvdyAnJXMnOiBmcmFtZSBzdGFydCBjYW5ub3QgYmUgVU5CT1VOREVEIEZPTExPV0lORy4AV2luZG93ICclcyc6IGZyYW1lIGVuZCBjYW5ub3QgYmUgVU5CT1VOREVEIFBSRUNFRElORy4AV2luZG93ICclcyc6IGZyYW1lIHN0YXJ0IG9yIGVuZCBpcyBuZWdhdGl2ZSwgTlVMTCBvciBvZiBub24taW50ZWdyYWwgdHlwZQBXaW5kb3cgJyVzJyB3aXRoIFJBTkdFIE4gUFJFQ0VESU5HL0ZPTExPV0lORyBmcmFtZSByZXF1aXJlcyBleGFjdGx5IG9uZSBPUkRFUiBCWSBleHByZXNzaW9uLCBvZiBudW1lcmljIG9yIHRlbXBvcmFsIHR5cGUAV2luZG93ICclcycgd2l0aCBSQU5HRSBmcmFtZSBoYXMgT1JERVIgQlkgZXhwcmVzc2lvbiBvZiBkYXRldGltZSB0eXBlLiBPbmx5IElOVEVSVkFMIGJvdW5kIHZhbHVlIGFsbG93ZWQuAFdpbmRvdyAnJXMnIHdpdGggUkFOR0UgZnJhbWUgaGFzIE9SREVSIEJZIGV4cHJlc3Npb24gb2YgbnVtZXJpYyB0eXBlLCBJTlRFUlZBTCBib3VuZCB2YWx1ZSBub3QgYWxsb3dlZC4AV2luZG93ICclcycgaGFzIGEgbm9uLWNvbnN0YW50IGZyYW1lIGJvdW5kLgBXaW5kb3cgJyVzJyBpcyBkZWZpbmVkIHR3aWNlLgBXaW5kb3cgJyVzJzogT1JERVIgQlkgb3IgUEFSVElUSU9OIEJZIHVzZXMgbGVnYWN5IHBvc2l0aW9uIGluZGljYXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCwgdXNlIGV4cHJlc3Npb24uAFlvdSBjYW5ub3QgdXNlIHRoZSB3aW5kb3cgZnVuY3Rpb24gJyVzJyBpbiB0aGlzIGNvbnRleHQuJwBZb3UgY2Fubm90IHVzZSB0aGUgYWxpYXMgJyVzJyBvZiBhbiBleHByZXNzaW9uIGNvbnRhaW5pbmcgYSB3aW5kb3cgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0LicAWW91IGNhbm5vdCBuZXN0IGEgd2luZG93IGZ1bmN0aW9uIGluIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHdpbmRvdyAnJXMnLgBXaW5kb3cgJyVzJzogSU5URVJWQUwgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFJBTkdFIGZyYW1lcy4AQVNDIG9yIERFU0Mgd2l0aCBHUk9VUCBCWSBpc24ndCBhbGxvd2VkIHdpdGggd2luZG93IGZ1bmN0aW9uczsgcHV0IEFTQyBvciBERVNDIGluIE9SREVSIEJZAFRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB3aW5kb3cgZnVuY3Rpb25zIHVzZSBFWFBMQUlOIEZPUk1BVD1KU09OAFdpbmRvdyBmdW5jdGlvbiAnJXMnIGlnbm9yZXMgdGhlIGZyYW1lIGNsYXVzZSBvZiB3aW5kb3cgJyVzJyBhbmQgYWdncmVnYXRlcyBvdmVyIHRoZSB3aG9sZSBwYXJ0aXRpb24AV2luZG93aW5nIHJlcXVpcmVzIEBAaW50ZXJuYWxfdG1wX21lbV9zdG9yYWdlX2VuZ2luZT1UZW1wVGFibGUuAFRvbyBtYW55IGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gJXM6ICVsdTsgbWF4aW11bSBhbGxvd2VkIGlzICVzLgBBcmd1bWVudCAjJXUgb2YgR1JPVVBJTkcgZnVuY3Rpb24gaXMgbm90IGluIEdST1VQIEJZAENvbW1lbnQgZm9yIHRhYmxlc3BhY2UgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAU3RvcmFnZSBlbmdpbmUgY2FuJ3QgZHJvcCB0YWJsZSAnJS0uMTI5cycAU3RvcmFnZSBlbmdpbmUgY2FuJ3QgZHJvcCB0YWJsZSAnJS0uMTI5cycgYmVjYXVzZSBpdCBpcyBtaXNzaW5nLiBVc2UgRFJPUCBUQUJMRSBJRiBFWElTVFMgdG8gcmVtb3ZlIGl0IGZyb20gZGF0YS1kaWN0aW9uYXJ5LgBEdXBsaWNhdGUgZmlsZSBuYW1lIGZvciB0YWJsZXNwYWNlICclLS42NHMnAFByb2JsZW0gd2hpbGUgZHJvcHBpbmcgZGF0YWJhc2UuIENhbid0IHJlbW92ZSBkYXRhYmFzZSBkaXJlY3RvcnkgKCVzKS4gUGxlYXNlIHJlbW92ZSBpdCBtYW51YWxseS4ATm8gU0RJIGZpbGVzIG1hdGNoZWQgdGhlIHBhdHRlcm4gJyVzJwBTY2hlbWEgJyUuMjU2cycsIHJlZmVyZW5jZWQgaW4gU0RJLCBkb2VzIG5vdCBleGlzdC4AVGFibGUgJyUuMjU2cy4lLjI1NnMnLCByZWZlcmVuY2VkIGluIFNESSwgYWxyZWFkeSBleGlzdHMuAEltcG9ydGVkIG15c3FsZF92ZXJzaW9uICglbGx1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgKCVsbHUpAEltcG9ydGVkIGRkIHZlcnNpb24gKCV1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgKCV1KQBJbXBvcnRlZCBzZGkgdmVyc2lvbiAoJWxsdSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICglbGx1KQBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGhpbnQgJXMAVmFyaWFibGUgJXMgZG9lcyBub3QgZXhpc3QgaW4gcGVyc2lzdGVkIGNvbmZpZyBmaWxlAExvbmdpdHVkZSAlZiBpcyBvdXQgb2YgcmFuZ2UgaW4gZnVuY3Rpb24gJS4xOTJzLiBJdCBtdXN0IGJlIHdpdGhpbiAoJWYsICVmXS4ATGF0aXR1ZGUgJWYgaXMgb3V0IG9mIHJhbmdlIGluIGZ1bmN0aW9uICUuMTkycy4gSXQgbXVzdCBiZSB3aXRoaW4gWyVmLCAlZl0uACUuMTkycyglLjgwcykgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciBnZW9ncmFwaGljIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMuAElsbGVnYWwgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllZCBmb3IgJXMAQWNjZXNzIHRvIHN5c3RlbSB2aWV3IElORk9STUFUSU9OX1NDSEVNQS4nJS42NHMnIGlzIHJlamVjdGVkLgBUaGUgbG9nLWZpbHRlciBjb21wb25lbnQgIiVzIiBnb3QgY29uZnVzZWQgYXQgIiVzIiAuLi4AUGFydGl0aW9uaW5nIGV4cHJlc3Npb24gaXMgdG9vIGxvbmcuAERST1AgRlVOQ1RJT04gY2FuJ3QgZHJvcCBhIGR5bmFtaWNhbGx5IHJlZ2lzdGVyZWQgdXNlciBkZWZpbmVkIGZ1bmN0aW9uAFVuYWJsZSB0byBzdG9yZSBjb2x1bW4gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFVuYWJsZSB0byB1cGRhdGUgY29sdW1uIHN0YXRpc3RpY3MgZm9yIGNvbHVtbiAnJS42NHMnIGluIHRhYmxlICclLjY0cycuJyUuNjRzJwBVbmFibGUgdG8gcmVtb3ZlIGNvbHVtbiBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVW5hYmxlIHRvIGJ1aWxkIGhpc3RvZ3JhbSBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVGhlIHJvbGUgJXMgaXMgYSBtYW5kYXRvcnkgcm9sZSBhbmQgY2FuJ3QgYmUgcmV2b2tlZCBvciBkcm9wcGVkLiBUaGUgcmVzdHJpY3Rpb24gY2FuIGJlIGxpZnRlZCBieSBleGNsdWRpbmcgdGhlIHJvbGUgaWRlbnRpZmllciBmcm9tIHRoZSBnbG9iYWwgdmFyaWFibGUgbWFuZGF0b3J5X3JvbGVzLgBUYWJsZXNwYWNlICclLjE5MnMnIGRvZXMgbm90IGhhdmUgYSBmaWxlIG5hbWVkICclLjE5MnMnAEFjY2VzcyBkZW5pZWQ7IHlvdSBuZWVkICUtLjEyOHMgcHJpdmlsZWdlcyBmb3IgdGhpcyBvcGVyYXRpb24AWW91IG5lZWQgdGhlIFNVUEVSIHByaXZpbGVnZSBmb3IgY29tbWFuZCAnJS0uMTkycycAUGF0aCBpcyB3aXRoaW4gdGhlIGN1cnJlbnQgZGF0YSBkaXJlY3RvcnkgJyUtLjE5MnMnAENvbmN1cnJlbnQgRERMIGlzIHBlcmZvcm1lZCBkdXJpbmcgY2xvbmUgb3BlcmF0aW9uLiBQbGVhc2UgdHJ5IGFnYWluLgBUb28gbWFueSBjb25jdXJyZW50IGNsb25lIG9wZXJhdGlvbnMuIE1heGltdW0gYWxsb3dlZCAtICVkLgBUaGUgdGFibGUgaW4gdHJhbnNhY3Rpb24gJXMgZG9lcyBub3QgY29tcGx5IHdpdGggdGhlIHJlcXVpcmVtZW50cyBieSBhbiBleHRlcm5hbCBwbHVnaW4uAFJlY3Vyc2l2ZSBxdWVyeSBhYm9ydGVkIGFmdGVyICV1IGl0ZXJhdGlvbnMuIFRyeSBpbmNyZWFzaW5nIEBAY3RlX21heF9yZWN1cnNpb25fZGVwdGggdG8gYSBsYXJnZXIgdmFsdWUuAFZhcmlhYmxlICVzIGNhbm5vdCBiZSBzZXQgdXNpbmcgU0VUX1ZBUiBoaW50LgBDYW5ub3QgdXNlIHRoZXNlIGNyZWRlbnRpYWxzIGZvciAnJS4qc0AlLipzJyBiZWNhdXNlIHRoZXkgY29udHJhZGljdCB0aGUgcGFzc3dvcmQgaGlzdG9yeSBwb2xpY3kATm9uLXplcm8gcGFzc3dvcmQgaGlzdG9yeSBjbGF1c2VzIGlnbm9yZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGFzIGl0cyBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJXMgZG9lcyBub3Qgc3VwcG9ydCBwYXNzd29yZCBoaXN0b3J5AFRoZSBjbGllbnQgZG9lc24ndCBzdXBwb3J0ICVzAFRhYmxlc3BhY2UgJyVzJyB3YXMgc2tpcHBlZCBzaW5jZSBpdHMgZGVmaW5pdGlvbiBpcyBiZWluZyBtb2RpZmllZCBieSBjb25jdXJyZW50IERETCBzdGF0ZW1lbnQARW5naW5lICclLjE5MnMnIGRvZXMgbm90IG1hdGNoIHN0b3JlZCBlbmdpbmUgJyUuMTkycycgZm9yIHRhYmxlc3BhY2UgJyUuMTkycycAVGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IGRvZXMgbm90IG1hdGNoIHRoZSBTUklEIG9mIHRoZSBjb2x1bW4gJyUuNjRzJy4gVGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IGlzICVsdSwgYnV0IHRoZSBTUklEIG9mIHRoZSBjb2x1bW4gaXMgJWx1LiBDb25zaWRlciBjaGFuZ2luZyB0aGUgU1JJRCBvZiB0aGUgZ2VvbWV0cnkgb3IgdGhlIFNSSUQgcHJvcGVydHkgb2YgdGhlIGNvbHVtbi4AVGhlIFNSSUQgc3BlY2lmaWNhdGlvbiBvbiB0aGUgY29sdW1uICclLjY0cycgY2Fubm90IGJlIGNoYW5nZWQgYmVjYXVzZSB0aGVyZSBpcyBhIHNwYXRpYWwgaW5kZXggb24gdGhlIGNvbHVtbi4gUGxlYXNlIHJlbW92ZSB0aGUgc3BhdGlhbCBpbmRleCBiZWZvcmUgYWx0ZXJpbmcgdGhlIFNSSUQgc3BlY2lmaWNhdGlvbi4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIGlnbm9yZWQgYW5kIHVwZGF0ZXMgd2lsbCBiZSB3cml0dGVuIGluIGZ1bGwgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGxvZ19iaW5fdXNlX3YxX3Jvd19ldmVudHM9MSB3aWxsIGJlIGlnbm9yZWQgYW5kIHJvdyBldmVudHMgd2lsbCBiZSB3cml0dGVuIGluIG5ldyBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIHVzZWQgb25seSBmb3IgdGhlIGFmdGVyLWltYWdlLiBGdWxsIHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gdGhlIGJlZm9yZS1pbWFnZSwgc28gdGhlIHNhdmluZyBpbiBkaXNrIHNwYWNlIGR1ZSB0byBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnMgaXMgbGltaXRlZCB0byBsZXNzIHRoYW4gNTAlJS4AQ291bGQgbm90IGFwcGx5IEpTT04gZGlmZiBpbiB0YWJsZSAlLipzLCBjb2x1bW4gJXMuAENvcnJ1cHRlZCBKU09OIGRpZmYgZm9yIHRhYmxlICUuKnMsIGNvbHVtbiAlcy4AUmVzb3VyY2UgR3JvdXAgJyUtLjE5MnMnIGV4aXN0cwBSZXNvdXJjZSBHcm91cCAnJS0uMTkycycgZG9lcyBub3QgZXhpc3QuAEludmFsaWQgY3B1IGlkICV1AEludmFsaWQgVkNQVSByYW5nZSAldS0ldQBJbnZhbGlkIHRocmVhZCBwcmlvcml0eSB2YWx1ZSAlZCBmb3IgJXMgcmVzb3VyY2UgZ3JvdXAgJXMuIEFsbG93ZWQgcmFuZ2UgaXMgWyVkLCAlZF0uACVzIG9wZXJhdGlvbiBpcyBkaXNhbGxvd2VkIG9uICVzAFJlc291cmNlIGdyb3VwICVzIGlzIGJ1c3kuAFJlc291cmNlIGdyb3VwICVzIGlzIGRpc2FibGVkLgBGZWF0dXJlICVzIGlzIHVuc3VwcG9ydGVkICglcykuAEF0dHJpYnV0ZSAlcyBpcyBpZ25vcmVkICglcykuAEludmFsaWQgdGhyZWFkIGlkICglbGx1KS4AVW5hYmxlIHRvIGJpbmQgcmVzb3VyY2UgZ3JvdXAgJXMgd2l0aCB0aHJlYWQgaWQgKCVsbHUpLiglcykuAE9wdGlvbiBGT1JDRSBpbnZhbGlkIGFzIERJU0FCTEUgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQuAFRoZSAlcyBjb21tYW5kIGVuY291bnRlcmVkIGEgZmFpbHVyZS4gJXMARmFpbGVkIHRvICVzIFNESSAnJS4xOTJzLiUuMTkycycgaW4gdGFibGVzcGFjZSAnJS4xOTJzJy4ATWlzc2luZyB2YWx1ZSBmb3IgSlNPTl9UQUJMRSBjb2x1bW4gJyUuMTkycycAQ2FuJ3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIHRoZSBzY2FsYXIgSlNPTl9UQUJMRSBjb2x1bW4gJyUuMTkycycARXZlcnkgdGFibGUgZnVuY3Rpb24gbXVzdCBoYXZlIGFuIGFsaWFzAElOTkVSIG9yIExFRlQgSk9JTiBtdXN0IGJlIHVzZWQgZm9yIExBVEVSQUwgcmVmZXJlbmNlcyBtYWRlIGJ5ICclLjE5MnMnAFZhbHVlIGlzIG91dCBvZiByYW5nZSBmb3IgSlNPTl9UQUJMRSdzIGNvbHVtbiAnJS4xOTJzJwBNb3JlIHRoYW4gc3VwcG9ydGVkICV1IE5FU1RFRCBQQVRIcyB3ZXJlIGZvdW5kIGluIEpTT05fVEFCTEUgJyUuMTkycycAVGhlIHNlbGVjdGVkIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAlLipzIGRvZXMgbm90IHN1cHBvcnQgcGFzc3dvcmQgZXhwaXJhdGlvbgBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogTWVtYmVyICdjcnMnIG11c3QgYmUgc3BlY2lmaWVkIGluIHRoZSB0b3AgbGV2ZWwgb2JqZWN0LgBDb2x1bW4gJyUtLjE5MnMnIGNhbm5vdCBiZSBudWxsAFRoZSBzcGF0aWFsIGluZGV4IG9uIGNvbHVtbiAnJS42NHMnIHdpbGwgbm90IGJlIHVzZWQgYnkgdGhlIHF1ZXJ5IG9wdGltaXplciBzaW5jZSB0aGUgY29sdW1uIGRvZXMgbm90IGhhdmUgYW4gU1JJRCBhdHRyaWJ1dGUuIENvbnNpZGVyIGFkZGluZyBhbiBTUklEIGF0dHJpYnV0ZSB0byB0aGUgY29sdW1uLgBDcmVhdGUgdGFibGUvdGFibGVzcGFjZSAnJS0uMTkycycgZmFpbGVkLCBhcyBkaXNrIGlzIGZ1bGwAQ291bGQgbm90IHBhcnNlIGFyZ3VtZW50IHRvIGRpZ2VzdCBmdW5jdGlvbjogIiVzIi4AQ291bGQgbm90IHBhcnNlIGFyZ3VtZW50IHRvIGRpZ2VzdCBmdW5jdGlvbi4AU2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyBhbHJlYWR5IGV4aXN0cy4gVGhpcyBtdXN0IGJlIHJlc29sdmVkIG1hbnVhbGx5IChlLmcuIGJ5IG1vdmluZyB0aGUgc2NoZW1hIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uKS4AU2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyBkb2VzIG5vdCBleGlzdABGYWlsZWQgdG8gY3JlYXRlIHNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgKGVycm5vOiAlZCAtICVzKQBTY2hlbWEgJyUuMTkycycgZG9lcyBub3QgZXhpc3QsIGJ1dCBzY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIHdhcyBmb3VuZC4gVGhpcyBtdXN0IGJlIHJlc29sdmVkIG1hbnVhbGx5IChlLmcuIGJ5IG1vdmluZyB0aGUgc2NoZW1hIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uKS4ARnVuY3Rpb24gJS4xOTJzIGlzIG9ubHkgZGVmaW5lZCBmb3IgU1JJRCAwIGFuZCBTUklEIDQzMjYuAFRoZSBvcHRpb24gZXhwaXJlX2xvZ3NfZGF5cyBhbmQgYmlubG9nX2V4cGlyZV9sb2dzX3NlY29uZHMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuIFBsZWFzZSB1c2UgYmlubG9nX2V4cGlyZV9sb2dzX3NlY29uZHMgdG8gc2V0IHRoZSBleHBpcmUgdGltZSAoZXhwaXJlX2xvZ3NfZGF5cyBpcyBkZXByZWNhdGVkKQBUaGUgcmVzdWx0IHN0cmluZyBpcyBsYXJnZXIgdGhhbiB0aGUgcmVzdWx0IGJ1ZmZlci4ASWxsZWdhbCBhcmd1bWVudCB0byBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4ASW5kZXggb3V0IG9mIGJvdW5kcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gc2VhcmNoLgBJbnRlcm5hbCBlcnJvciBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkuAFN5bnRheCBlcnJvciBpbiByZWd1bGFyIGV4cHJlc3Npb24gb24gbGluZSAldSwgY2hhcmFjdGVyICV1LgBVbnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucyBhIGZlYXR1cmUgdGhhdCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBsaWJyYXJ5IHZlcnNpb24uAE1pc21hdGNoZWQgcGFyZW50aGVzaXMgaW4gcmVndWxhciBleHByZXNzaW9uLgBJbmNvcnJlY3QgZGVzY3JpcHRpb24gb2YgYSB7bWluLG1heH0gaW50ZXJ2YWwuAFRoZSBtYXhpbXVtIGlzIGxlc3MgdGhhbiB0aGUgbWludW11bSBpbiBhIHttaW4sbWF4fSBpbnRlcnZhbC4ASW52YWxpZCBiYWNrLXJlZmVyZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSBsb29rLWJlaGluZCBhc3NlcnRpb24gZXhjZWVkcyB0aGUgbGltaXQgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zIGFuIHVuY2xvc2VkIGJyYWNrZXQgZXhwcmVzc2lvbi4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucyBhbiBbeC15XSBjaGFyYWN0ZXIgcmFuZ2Ugd2hlcmUgeCBjb21lcyBhZnRlciB5LgBPdmVyZmxvdyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uIGJhY2t0cmFjayBzdGFjay4AVGltZW91dCBleGNlZWRlZCBpbiByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2guAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBleGNlZWRzIGxpbWl0cyBvbiBzaXplIG9yIGNvbXBsZXhpdHkuAFZhbHVlIGZvciAlcyBnb3QgY29uZnVzaW5nIGF0IG9yIGFyb3VuZCAiJXMiLiBTeW50YXggbWF5IGJlIHdyb25nLCBjb21wb25lbnQgbWF5IG5vdCBiZSBJTlNUQUxMZWQsIG9yIGEgY29tcG9uZW50IHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBpbnN0YW5jZXMgbWF5IGJlIGxpc3RlZCBtb3JlIHRoYW4gb25jZS4AU2V0dGluZyBhbiBlbXB0eSAlcyBwaXBlbGluZSBkaXNhYmxlcyBlcnJvciBsb2dnaW5nIQBmaWx0ZXIgJXM6ICVzACUuMTkycyglLjgwcykgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciBDYXJ0ZXNpYW4gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcy4AJS4xOTJzKCUuODBzKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHByb2plY3RlZCBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLgBJbnZhbGlkIHJhZGl1cyBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogUmFkaXVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAFJlc3RhcnQgc2VydmVyIGZhaWxlZCAoJXMpLgBNaXNzaW5nIG1hbmRhdG9yeSBhdHRyaWJ1dGUgJXMuAE11bHRpcGxlIGRlZmluaXRpb25zIG9mIGF0dHJpYnV0ZSAlcy4AVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBuYW1lIGNhbid0IGJlIGFuIGVtcHR5IHN0cmluZyBvciBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlLgBUaGUgb3JnYW5pemF0aW9uIG5hbWUgY2FuJ3QgYmUgYW4gZW1wdHkgc3RyaW5nIG9yIHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UuAFRoZXJlIGlzIGFscmVhZHkgYSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LgBUaGVyZSBpcyBhbHJlYWR5IGEgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4AU1JJRCAwIGlzIG5vdCBtb2RpZmlhYmxlLgBUaGUgU1JJRCByYW5nZSBbJXUsICV1XSBoYXMgYmVlbiByZXNlcnZlZCBmb3Igc3lzdGVtIHVzZS4gU1JTcyBpbiB0aGlzIHJhbmdlIG1heSBiZSBhZGRlZCwgbW9kaWZpZWQgb3IgcmVtb3ZlZCB3aXRob3V0IHdhcm5pbmcgZHVyaW5nIHVwZ3JhZGUuAENhbid0IG1vZGlmeSBTUklEICV1LiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgY29sdW1uIGRlcGVuZGluZyBvbiBpdC4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gYXR0cmlidXRlICVzLgBBdHRyaWJ1dGUgJXMgaXMgdG9vIGxvbmcuIFRoZSBtYXhpbXVtIGxlbmd0aCBpcyAldSBjaGFyYWN0ZXJzLgAndXRmOCcgaXMgY3VycmVudGx5IGFuIGFsaWFzIGZvciB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCBidXQgd2lsbCBiZSBhbiBhbGlhcyBmb3IgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4ATkFUSU9OQUwvTkNIQVIvTlZBUkNIQVIgaW1wbGllcyB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIENIQVIoeCkgQ0hBUkFDVEVSIFNFVCBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBJbnZhbGlkIGRlZmF1bHQgY29sbGF0aW9uICVzOiB1dGY4bWI0XzA5MDBfYWlfY2kgb3IgdXRmOG1iNF9nZW5lcmFsX2NpIGV4cGVjdGVkAFVuYWJsZSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGZvciBjb2x1bW4gJyUtLjE5MnMnOiAlLS4xOTJzLgBUaGUgdGFibGUgJyUtLjE5MnMnIG1heSBub3QgYmUgY3JlYXRlZCBpbiB0aGUgcmVzZXJ2ZWQgdGFibGVzcGFjZSAnJS0uMTkycycuAFRoaXMgb3B0aW9uIGNhbm5vdCBiZSBzZXQgJXMuAEEgY29tbWl0IGZvciBhbiBhdG9taWMgRERMIHN0YXRlbWVudCB3YXMgdW5zdWNjZXNzZnVsIG9uIHRoZSBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLiBUaGUgcmVwbGljYSBzdXBwb3J0cyBhdG9taWMgRERMIHN0YXRlbWVudHMgYnV0IHRoZSBzb3VyY2UgZG9lcyBub3QsIHNvIHRoZSBhY3Rpb24gdGFrZW4gYnkgdGhlIHJlcGxpY2EgYW5kIHNvdXJjZSBtaWdodCBkaWZmZXIuIENoZWNrIHRoYXQgdGhlaXIgc3RhdGVzIGhhdmUgbm90IGRpdmVyZ2VkIGJlZm9yZSBwcm9jZWVkaW5nLgBGdW5jdGlvbiAlcyBpcyBvbmx5IGRlZmluZWQgZm9yIGdlb2dyYXBoaWMgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcywgYnV0IG9uZSBvZiBpdHMgYXJndW1lbnRzIGlzIGluIFNSSUQgJXUsIHdoaWNoIGlzIG5vdCBnZW9ncmFwaGljLgBGdW5jdGlvbiAlcyBlbmNvdW50ZXJlZCBhIHBvbHlnb24gdGhhdCB3YXMgdG9vIGxhcmdlLiBQb2x5Z29ucyBtdXN0IGNvdmVyIGxlc3MgdGhhbiBoYWxmIHRoZSBwbGFuZXQuAFNwYXRpYWwgaW5kZXhlcyBjYW4ndCBiZSBwcmltYXJ5IG9yIHVuaXF1ZSBpbmRleGVzLgBUaGUgaW5kZXggdHlwZSAlLjIwcyBpcyBub3Qgc3VwcG9ydGVkIGZvciBzcGF0aWFsIGluZGV4ZXMuAENhbm5vdCBkcm9wIHRhYmxlICclcycgcmVmZXJlbmNlZCBieSBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyVzJyBvbiB0YWJsZSAnJXMnLgBBIHBhcmFtZXRlciBvZiBmdW5jdGlvbiAlLjE5MnMgY29udGFpbnMgYSBnZW9tZXRyeSB3aXRoIGxvbmdpdHVkZSAlZiwgd2hpY2ggaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIHdpdGhpbiAoJWYsICVmXS4AQSBwYXJhbWV0ZXIgb2YgZnVuY3Rpb24gJS4xOTJzIGNvbnRhaW5zIGEgZ2VvbWV0cnkgd2l0aCBsYXRpdHVkZSAlZiwgd2hpY2ggaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIHdpdGhpbiBbJWYsICVmXS4ARm9yZWlnbiBrZXkgJyVzJyB1c2VzIHZpcnR1YWwgY29sdW1uICclcycgd2hpY2ggaXMgbm90IHN1cHBvcnRlZC4ARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC4gTWlzc2luZyBjb2x1bW4gJyVzJyBmb3IgY29uc3RyYWludCAnJXMnIGluIHRoZSByZWZlcmVuY2VkIHRhYmxlICclcycAJXM6IENvdWxkIG5vdCBhZGQgc3VwcHJlc3Npb24gcnVsZSBmb3IgY29kZSAiJXMiLiBSdWxlLXNldCBtYXkgYmUgZnVsbCwgb3IgY29kZSBtYXkgbm90IGNvcnJlc3BvbmQgdG8gYW4gZXJyb3ItbG9nIG1lc3NhZ2UuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgU1JJRCAldSBzcGVjaWZpZXMgaW52YWxpZCBnZW9ncmFwaGljIGF4ZXMgJyUuMjBzJyBhbmQgJyUuMjBzJy4gT25lIGF4aXMgbXVzdCBiZSBOT1JUSCBvciBTT1VUSCBhbmQgdGhlIG90aGVyIG11c3QgYmUgRUFTVCBvciBXRVNULgBUaGUgbGVuZ3RoIG9mIHRoZSBzZW1pLW1ham9yIGF4aXMgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlci4AVGhlIGludmVyc2UgZmxhdHRlbmluZyBtdXN0IGJlIGxhcmdlciB0aGFuIDEuMCwgb3IgMC4wIGlmIHRoZSBlbGxpcHNvaWQgaXMgYSBzcGhlcmUuAFRoZSBhbmd1bGFyIHVuaXQgY29udmVyc2lvbiBmYWN0b3IgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlci4AVGhlIHByaW1lIG1lcmlkaWFuIG11c3QgYmUgd2l0aGluICgtMTgwLCAxODBdIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdC4AVHJhbnNmb3JtYXRpb24gZnJvbSBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuAFRyYW5zZm9ybWF0aW9uIHRvIFNSSUQgJXUgaXMgbm90IHN1cHBvcnRlZC4AVHJhbnNmb3JtYXRpb24gZnJvbSBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gaGFzIG5vIFRPV0dTODQgY2xhdXNlLgBUcmFuc2Zvcm1hdGlvbiB0byBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gaGFzIG5vIFRPV0dTODQgY2xhdXNlLgBDaGFuZ2luZyBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdCBpcyBkaXNhbGxvd2VkIHdoZW4gdGhlIHNlc3Npb24gaGFzIG9wZW4gdGVtcG9yYXJ5IHRhYmxlKHMpLiBZb3UgY291bGQgd2FpdCB1bnRpbCB0aGVzZSB0ZW1wb3JhcnkgdGFibGUocykgYXJlIGRyb3BwZWQgYW5kIHRyeSBhZ2Fpbi4AQ2hhbmdpbmcgQEBnbG9iYWwuYmlubG9nX2Zvcm1hdCBvciBAQHBlcnNpc3QuYmlubG9nX2Zvcm1hdCBpcyBkaXNhbGxvd2VkIHdoZW4gYW55IHJlcGxpY2F0aW9uIGNoYW5uZWwgaGFzIG9wZW4gdGVtcG9yYXJ5IHRhYmxlKHMpLiBZb3UgY291bGQgd2FpdCB1bnRpbCBSZXBsaWNhX29wZW5fdGVtcF90YWJsZXMgPSAwIGFuZCB0cnkgYWdhaW4AQ2hhbmdpbmcgQEBnbG9iYWwuYmlubG9nX2Zvcm1hdCBvciBAQHBlcnNpc3QuYmlubG9nX2Zvcm1hdCBpcyBkaXNhbGxvd2VkIHdoZW4gYW55IHJlcGxpY2F0aW9uIGNoYW5uZWwgYXBwbGllciB0aHJlYWQgaXMgcnVubmluZy4gWW91IGNvdWxkIGV4ZWN1dGUgU1RPUCBSRVBMSUNBIFNRTF9USFJFQUQgYW5kIHRyeSBhZ2Fpbi4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGFyZSBub3QgYWxsb3dlZCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBvciBpbnNpZGUgYSBwcm9jZWR1cmUgaW4gYSB0cmFuc2FjdGlvbmFsIGNvbnRleHQgd2hlbiBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdD1TVEFURU1FTlQuAFhBOiBGYWlsZWQgdG8gdGFrZSBNREwgTG9jayBiYWNrdXAgb2YgUFJFUEFSRUQgWEEgdHJhbnNhY3Rpb24gZHVyaW5nIGNsaWVudCBkaXNjb25uZWN0LgBVbmFibGUgdG8gY3JlYXRlIG9yIGNoYW5nZSBhIHRhYmxlIHdpdGhvdXQgYSBwcmltYXJ5IGtleSwgd2hlbiB0aGUgc3lzdGVtIHZhcmlhYmxlICdzcWxfcmVxdWlyZV9wcmltYXJ5X2tleScgaXMgc2V0LiBBZGQgYSBwcmltYXJ5IGtleSB0byB0aGUgdGFibGUgb3IgdW5zZXQgdGhpcyB2YXJpYWJsZSB0byBhdm9pZCB0aGlzIG1lc3NhZ2UuIE5vdGUgdGhhdCB0YWJsZXMgd2l0aG91dCBhIHByaW1hcnkga2V5IGNhbiBjYXVzZSBwZXJmb3JtYW5jZSBwcm9ibGVtcyBpbiByb3ctYmFzZWQgcmVwbGljYXRpb24sIHNvIHBsZWFzZSBjb25zdWx0IHlvdXIgREJBIGJlZm9yZSBjaGFuZ2luZyB0aGlzIHNldHRpbmcuAERhdGEgdHJ1bmNhdGVkIGZvciBmdW5jdGlvbmFsIGluZGV4ICclcycgYXQgcm93ICVsZABWYWx1ZSBpcyBvdXQgb2YgcmFuZ2UgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyVzJyBhdCByb3cgJWxkAENhbm5vdCBjcmVhdGUgYSBmdW5jdGlvbmFsIGluZGV4IG9uIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgSlNPTiBvciBHRU9NRVRSWSB2YWx1ZS4ARnVuY3Rpb25hbCBpbmRleCAnJS42NHMnIGNhbm5vdCByZWZlciB0byBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4uAENhbm5vdCBkcm9wIGNvbHVtbiAnJS0uNjRzJyBiZWNhdXNlIGl0IGlzIHVzZWQgYnkgYSBmdW5jdGlvbmFsIGluZGV4LiBJbiBvcmRlciB0byBkcm9wIHRoZSBjb2x1bW4sIHlvdSBtdXN0IHJlbW92ZSB0aGUgZnVuY3Rpb25hbCBpbmRleC4AVGhlIHByaW1hcnkga2V5IGNhbm5vdCBiZSBhIGZ1bmN0aW9uYWwgaW5kZXgAQ2Fubm90IGNyZWF0ZSBhIGZ1bmN0aW9uYWwgaW5kZXggb24gYW4gZXhwcmVzc2lvbiB0aGF0IHJldHVybnMgYSBCTE9CIG9yIFRFWFQuIFBsZWFzZSBjb25zaWRlciB1c2luZyBDQVNULgBFeHByZXNzaW9uIG9mIGZ1bmN0aW9uYWwgaW5kZXggJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb24uAEZ1bGx0ZXh0IGZ1bmN0aW9uYWwgaW5kZXggaXMgbm90IHN1cHBvcnRlZC4AU3BhdGlhbCBmdW5jdGlvbmFsIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQuAFRoZSB1c2VkIHN0b3JhZ2UgZW5naW5lIGNhbm5vdCBpbmRleCB0aGUgZXhwcmVzc2lvbiAnJXMnLgBGdW5jdGlvbmFsIGluZGV4IG9uIGEgY29sdW1uIGlzIG5vdCBzdXBwb3J0ZWQuIENvbnNpZGVyIHVzaW5nIGEgcmVndWxhciBpbmRleCBpbnN0ZWFkLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb246ICVzLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAEV4cHJlc3Npb24gb2YgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB1c2VyIG9yIHN5c3RlbSB2YXJpYWJsZXMuAENvbHVtbiAnJXMnIG9mIHRhYmxlICclcycgaGFzIGEgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGRlcGVuZGVuY3kgYW5kIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYSBjb2x1bW4gZGVmaW5lZCBhZnRlciBpdCBpZiB0aGF0IGNvbHVtbiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4gb3IgaGFzIGFuIGV4cHJlc3Npb24gYXMgZGVmYXVsdCB2YWx1ZS4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4uAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb24uAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb246ICVzLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHVzZXIgb3Igc3lzdGVtIHZhcmlhYmxlcy4AREVGQVVMVCBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMAJyVzJyBpcyBub3Qgc3VwcG9ydGVkIGZvciBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQUxURVIgVEFCTEUgLi4uIEFERCBDT0xVTU4gLi4gd2l0aCBleHByZXNzaW9uIGFzIERFRkFVTFQuAENhbm5vdCBjaGFuZ2UgdGFibGUncyBzdG9yYWdlIGVuZ2luZSBiZWNhdXNlIHRoZSB0YWJsZSBwYXJ0aWNpcGF0ZXMgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50LgBTZXR0aW5nIHVzZXIgdmFyaWFibGVzIHdpdGhpbiBleHByZXNzaW9ucyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgYWx0ZXJuYXRpdmVzOiAnU0VUIHZhcmlhYmxlPWV4cHJlc3Npb24sIC4uLicsIG9yICdTRUxFQ1QgZXhwcmVzc2lvbihzKSBJTlRPIHZhcmlhYmxlcyhzKScuACclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgVVRGOE1CMy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4ATmVzdGVkIGNvbW1lbnQgc3ludGF4IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBSZWZlcmVuY2luZyBjb2x1bW4gJyVzJyBhbmQgcmVmZXJlbmNlZCBjb2x1bW4gJyVzJyBpbiBmb3JlaWduIGtleSBjb25zdHJhaW50ICclcycgYXJlIGluY29tcGF0aWJsZS4AVGltZW91dCBleGNlZWRlZCBmb3IgaGVsZCBzdGF0ZW1lbnQgd2hpbGUgbmV3IEdyb3VwIFJlcGxpY2F0aW9uIHByaW1hcnkgbWVtYmVyIGlzIGFwcGx5aW5nIGJhY2tsb2cuAEhlbGQgc3RhdGVtZW50IGFib3J0ZWQgYmVjYXVzZSBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gZ290IHNodXQgZG93biBvciB0aHJlYWQgd2FzIGtpbGxlZCB3aGlsZSBuZXcgcHJpbWFyeSBtZW1iZXIgd2FzIGFwcGx5aW5nIGJhY2tsb2cuAEhlbGQgc3RhdGVtZW50IHdhcyBhYm9ydGVkIGR1ZSB0byBtZW1iZXIgYmVpbmcgaW4gZXJyb3Igc3RhdGUsIHdoaWxlIGJhY2tsb2cgaXMgYmVpbmcgYXBwbGllZCBkdXJpbmcgR3JvdXAgUmVwbGljYXRpb24gcHJpbWFyeSBlbGVjdGlvbi4ARmFpbGVkIHRvIGZldGNoIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4AQ2FuJ3QgZmluZCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaW4gdGhlIHNlcnZlciBsb2cgaWYgYSBrZXlyaW5nIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LgBGZXRjaGVkIGFuIGludmFsaWQga2V5IGZyb20ga2V5cmluZy4ARXJyb3IgcmVhZGluZyBhIHJlcGxpY2F0aW9uIGxvZyBlbmNyeXB0aW9uIGhlYWRlcjogJXMuAEZhaWxlZCB0byByb3RhdGUgc29tZSBsb2dzIGFmdGVyIGNoYW5naW5nIGJpbmxvZyBlbmNyeXB0aW9uIHNldHRpbmdzLiBQbGVhc2UgZml4IHRoZSBwcm9ibGVtIGFuZCByb3RhdGUgdGhlIGxvZ3MgbWFudWFsbHkuAEtleSAlcyBleGlzdHMgdW5leHBlY3RlZC4ARmFpbGVkIHRvIGdlbmVyYXRlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gc3RvcmUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byByZW1vdmUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBjaGFuZ2UgYmlubG9nX2VuY3J5cHRpb24gdmFsdWUuICUtLjgwcy4AVW5hYmxlIHRvIHJlY292ZXIgYmlubG9nIGVuY3J5cHRpb24gbWFzdGVyIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBzbG93IHF1ZXJ5IGxvZyBmaWxlIGZvcm1hdCBjaGFuZ2VkIGFzIHJlcXVlc3RlZCwgYnV0IHNldHRpbmcgd2lsbCBoYXZlIG5vIGVmZmVjdCB3aGVuIG5vdCBhY3R1YWxseSBsb2dnaW5nIHRvIGEgZmlsZS4AVGhlIG9wdGlvbiBncm91cF9yZXBsaWNhdGlvbl9jb25zaXN0ZW5jeSBjYW5ub3QgYmUgdXNlZCBvbiB0aGUgY3VycmVudCBtZW1iZXIgc3RhdGUuAEVycm9yIHdoaWxlIHdhaXRpbmcgZm9yIGdyb3VwIHRyYW5zYWN0aW9ucyBjb21taXQgb24gZ3JvdXBfcmVwbGljYXRpb25fY29uc2lzdGVuY3k9ICdCRUZPUkUnLgBFcnJvciB3aGlsZSB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMgd2l0aCBncm91cF9yZXBsaWNhdGlvbl9jb25zaXN0ZW5jeT0gJ0FGVEVSJyB0byBjb21taXQuAFRoZSBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gaXMgc3RvcHBpbmcsIHRoZXJlZm9yZSBuZXcgdHJhbnNhY3Rpb25zIGFyZSBub3QgYWxsb3dlZCB0byBzdGFydC4ARXhwcmVzc2lvbiBvZiBmdW5jdGlvbmFsIGluZGV4ICclcycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBGYWlsZWQgdG8gZW5jcnlwdCBjb250ZW50IHRvIHdyaXRlIGludG8gYmlubG9nIGZpbGU6ICVzLgBQYWdlIFRyYWNraW5nIGlzIG5vdCBzdGFydGVkIHlldC4AVHJhY2tpbmcgd2FzIG5vdCBlbmFibGVkIGZvciB0aGUgTFNOIHJhbmdlIHNwZWNpZmllZABDYW5ub3QgcHVyZ2UgZGF0YSB3aGVuIGNvbmN1cnJlbnQgY2xvbmUgaXMgaW4gcHJvZ3Jlc3MuIFRyeSBsYXRlci4AQ2Fubm90IHJvdGF0ZSBiaW5hcnkgbG9nIG1hc3RlciBrZXkgd2hlbiAnYmlubG9nLWVuY3J5cHRpb24nIGlzIG9mZi4AVW5hYmxlIHRvIHJlY292ZXIgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LCB0aGUgY29tYmluYXRpb24gb2YgbmV3X21hc3Rlcl9rZXlfc2Vxbm89JXUsIG1hc3Rlcl9rZXlfc2Vxbm89JXUgYW5kIG9sZF9tYXN0ZXJfa2V5X3NlcW5vPSV1IGFyZSB3cm9uZy4ARmFpbGVkIHRvIG9wZXJhdGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IG9uIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIHN0YXRlbWVudCBoYWQgbm8gZWZmZWN0OiB0aGUgb2xkIGJpbmFyeSBsb2cgbWFzdGVyIGtleSBpcyBzdGlsbCBpbiB1c2UsIHRoZSBrZXlyaW5nLCBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcyBhcmUgdW5jaGFuZ2VkLCBhbmQgdGhlIHNlcnZlciBjb3VsZCBub3Qgc3RhcnQgdXNpbmcgYSBuZXcgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IGZvciBlbmNyeXB0aW5nIG5ldyBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcy4ARmFpbGVkIHRvIHJvdGF0ZSBvbmUgb3IgbW9yZSBiaW5hcnkgb3IgcmVsYXkgbG9nIGZpbGVzLiBBIG5ldyBiaW5hcnkgbG9nIG1hc3RlciBrZXkgd2FzIGdlbmVyYXRlZCBhbmQgd2lsbCBiZSB1c2VkIHRvIGVuY3J5cHQgbmV3IGJpbmFyeSBhbmQgcmVsYXkgbG9nIGZpbGVzLiBUaGVyZSBtYXkgc3RpbGwgZXhpc3QgYmluYXJ5IG9yIHJlbGF5IGxvZyBmaWxlcyB1c2luZyB0aGUgcHJldmlvdXMgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LgAlcy4gQSBuZXcgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHdhcyBnZW5lcmF0ZWQgYW5kIHdpbGwgYmUgdXNlZCB0byBlbmNyeXB0IG5ldyBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcy4gVGhlcmUgbWF5IHN0aWxsIGV4aXN0IGJpbmFyeSBvciByZWxheSBsb2cgZmlsZXMgdXNpbmcgdGhlIHByZXZpb3VzIGJpbmFyeSBsb2cgbWFzdGVyIGtleS4ARmFpbGVkIHRvIHJlbW92ZSB1bnVzZWQgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleXMgZnJvbSB0aGUga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgdW51c2VkIGJpbmFyeSBsb2cgZW5jcnlwdGlvbiBrZXlzIG1heSBzdGlsbCBleGlzdCBpbiB0aGUga2V5cmluZywgYW5kIHRoZXkgd2lsbCBiZSByZW1vdmVkIHVwb24gc2VydmVyIHJlc3RhcnQgb3IgbmV4dCAnQUxURVIgSU5TVEFOQ0UgUk9UQVRFIEJJTkxPRyBNQVNURVIgS0VZJyBleGVjdXRpb24uAEZhaWxlZCB0byByZW1vdmUgYXV4aWxpYXJ5IGJpbmFyeSBsb2cgZW5jcnlwdGlvbiBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuIFRoZSBjbGVhbnVwIG9mIHRoZSBiaW5hcnkgbG9nIG1hc3RlciBrZXkgcm90YXRpb24gcHJvY2VzcyBkaWQgbm90IGZpbmlzaCBhcyBleHBlY3RlZCBhbmQgdGhlIGNsZWFudXAgd2lsbCB0YWtlIHBsYWNlIHVwb24gc2VydmVyIHJlc3RhcnQgb3IgbmV4dCAnQUxURVIgSU5TVEFOQ0UgUk9UQVRFIEJJTkxPRyBNQVNURVIgS0VZJyBleGVjdXRpb24uAEFuIGV4cHJlc3Npb24gb2Ygbm9uLWJvb2xlYW4gdHlwZSBzcGVjaWZpZWQgdG8gYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJy4AQ29sdW1uIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIHJlZmVyZW5jZXMgb3RoZXIgY29sdW1uLgBBbiBleHByZXNzaW9uIG9mIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY29udGFpbnMgZGlzYWxsb3dlZCBmdW5jdGlvbjogJXMuAEFuIGV4cHJlc3Npb24gb2YgYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjb250YWlucyBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBBbiBleHByZXNzaW9uIG9mIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY2Fubm90IHJlZmVyIHRvIGEgdXNlciBvciBzeXN0ZW0gdmFyaWFibGUuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY2Fubm90IHJlZmVyIHRvIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbi4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgaXMgdmlvbGF0ZWQuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIHJlZmVycyB0byBub24tZXhpc3RpbmcgY29sdW1uICclLS4xOTJzJy4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgaXMgbm90IGZvdW5kIGluIHRoZSB0YWJsZS4ARHVwbGljYXRlIGNoZWNrIGNvbnN0cmFpbnQgbmFtZSAnJS0uMTkycycuAENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIHVzZWQgaW4gYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJzogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgcmVmZXJlbnRpYWwgYWN0aW9uLgBDcmVhdGluZyBhbiB1bmVuY3J5cHRlZCB0YWJsZSBpbiBhIGRhdGFiYXNlIHdpdGggZGVmYXVsdCBlbmNyeXB0aW9uIGVuYWJsZWQuAFJlcXVlc3QgdG8gY3JlYXRlICVzIHRhYmxlIHdoaWxlIHVzaW5nIGFuICVzIHRhYmxlc3BhY2UuAFRhYmxlIGVuY3J5cHRpb24gZGlmZmVyIGZyb20gaXRzIGRhdGFiYXNlIGRlZmF1bHQgZW5jcnlwdGlvbiwgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAERhdGFiYXNlIGRlZmF1bHQgZW5jcnlwdGlvbiBkaWZmZXIgZnJvbSAnZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uJyBzZXR0aW5nLCBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AVGFibGVzcGFjZSBlbmNyeXB0aW9uIGRpZmZlciBmcm9tICdkZWZhdWx0X3RhYmxlX2VuY3J5cHRpb24nIHNldHRpbmcsIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBUaGlzIHRhYmxlc3BhY2UgY2FuJ3QgYmUgZW5jcnlwdGVkLCBiZWNhdXNlIG9uZSBvZiB0YWJsZSdzIHNjaGVtYSBoYXMgZGVmYXVsdCBlbmNyeXB0aW9uIE9GRiBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AVGhpcyB0YWJsZXNwYWNlIGNhbid0IGJlIGRlY3J5cHRlZCwgYmVjYXVzZSBvbmUgb2YgdGFibGUncyBzY2hlbWEgaGFzIGRlZmF1bHQgZW5jcnlwdGlvbiBPTiBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AQ2Fubm90IGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgdGFibGVzcGFjZSBuYW1lZCAnJXMnLgBTb3VyY2UgdGFibGVzcGFjZSBpcyBlbmNyeXB0ZWQgYnV0IHRhcmdldCB0YWJsZXNwYWNlIGlzIG5vdC4ARU5DUllQVElPTiBjbGF1c2UgaXMgbm90IHZhbGlkIGZvciAlcyB0YWJsZXNwYWNlLgBNdWx0aXBsZSAlcyBjbGF1c2VzAEdSQU5UIC4uLiBBUyBpcyBjdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgZm9yIGdsb2JhbCBwcml2aWxlZ2VzLgBFaXRoZXIgc29tZSBvZiB0aGUgYXV0aG9yaXphdGlvbiBJRHMgaW4gdGhlIEFTIGNsYXVzZSBhcmUgaW52YWxpZCBvciB0aGUgY3VycmVudCB1c2VyIGxhY2tzIHByaXZpbGVnZXMgdG8gZXhlY3V0ZSB0aGUgc3RhdGVtZW50LgBDb2x1bW4gJyVzJyBoYXMgYSBmdW5jdGlvbmFsIGluZGV4IGRlcGVuZGVuY3kgYW5kIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAFBsdWdpbiAnJXMnIGlzIG5vdCB0byBiZSB1c2VkIGFzIGFuICJlYXJseSIgcGx1Z2luLiBEb24ndCBhZGQgaXQgdG8gLS1lYXJseS1wbHVnaW4tbG9hZCwga2V5cmluZyBtaWdyYXRpb24gZXRjLgBSZWRvIGxvZyBhcmNoaXZpbmcgc3RhcnQgcHJvaGliaXRzIHBhdGggbmFtZSBpbiAnc3ViZGlyJyBhcmd1bWVudABSZWRvIGxvZyBhcmNoaXZpbmcgc3RhcnQgdGltZWQgb3V0AFNlcnZlciB2YXJpYWJsZSAnaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfZGlycycgaXMgTlVMTCBvciBlbXB0eQBMYWJlbCAnJS4xOTJzJyBub3QgZm91bmQgaW4gc2VydmVyIHZhcmlhYmxlICdpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9kaXJzJwBEaXJlY3RvcnkgaXMgZW1wdHkgYWZ0ZXIgbGFiZWwgJyUuMTkycycgaW4gc2VydmVyIHZhcmlhYmxlICdpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9kaXJzJwBSZWRvIGxvZyBhcmNoaXZlIGRpcmVjdG9yeSAnJS4xOTJzJyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYSBkaXJlY3RvcnkAUmVkbyBsb2cgYXJjaGl2ZSBkaXJlY3RvcnkgJyUuMTkycycgaXMgaW4sIHVuZGVyLCBvciBvdmVyIHNlcnZlciBkaXJlY3RvcnkgJyUuMTkycycgLSAnJS4xOTJzJwBSZWRvIGxvZyBhcmNoaXZlIGRpcmVjdG9yeSAnJS4xOTJzJyBpcyBhY2Nlc3NpYmxlIHRvIGFsbCBPUyB1c2VycwBDYW5ub3QgY3JlYXRlIHJlZG8gbG9nIGFyY2hpdmUgZmlsZSAnJS41MTJzJyAoT1MgZXJybm86ICVkIC0gJS4xMjhzKQBSZWRvIGxvZyBhcmNoaXZpbmcgaGFzIGJlZW4gc3RhcnRlZCBvbiAnJS41MTJzJyAtIENhbGwgaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfc3RvcCgpIGZpcnN0AFJlZG8gbG9nIGFyY2hpdmluZyBpcyBub3QgYWN0aXZlAFJlZG8gbG9nIGFyY2hpdmluZyBmYWlsZWQ6ICUuNTEycwBSZWRvIGxvZyBhcmNoaXZpbmcgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgYnkgdGhpcyBzZXNzaW9uAFJlZ2V4IGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBJbnZhbGlkIEpTT04gdHlwZSBpbiBhcmd1bWVudCAldSB0byBmdW5jdGlvbiAlczsgYW4gJXMgaXMgcmVxdWlyZWQuAENhbm5vdCBjb252ZXJ0IHN0cmluZyAnJS42NHMnIGZyb20gJXMgdG8gJXMAQ29sdW1uICclcycgaGFzIGEgcGFydGl0aW9uaW5nIGZ1bmN0aW9uIGRlcGVuZGVuY3kgYW5kIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAEFVVE9fSU5DUkVNRU5UIHN1cHBvcnQgZm9yIEZMT0FUL0RPVUJMRSBjb2x1bW5zIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciByZW1vdmluZyBBVVRPX0lOQ1JFTUVOVCBmcm9tIGNvbHVtbiAnJS0uMTkycycuAENhbm5vdCBzdG9wIHRoZSByZXBsaWNhIFNRTCB0aHJlYWQgd2hpbGUgdGhlIGluc3RhbmNlIGlzIGxvY2tlZCBmb3IgYmFja3VwLiBUcnkgcnVubmluZyBgVU5MT0NLIElOU1RBTkNFYCBmaXJzdC4AU3BlY2lmeWluZyBudW1iZXIgb2YgZGlnaXRzIGZvciBmbG9hdGluZyBwb2ludCBkYXRhIHR5cGVzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBVTlNJR05FRCBmb3IgZGVjaW1hbCBhbmQgZmxvYXRpbmcgcG9pbnQgZGF0YSB0eXBlcyBpcyBkZXByZWNhdGVkIGFuZCBzdXBwb3J0IGZvciBpdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4ASW50ZWdlciBkaXNwbGF5IHdpZHRoIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBUaGUgWkVST0ZJTEwgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBVc2UgdGhlIExQQUQgZnVuY3Rpb24gdG8gemVyby1wYWQgbnVtYmVycywgb3Igc3RvcmUgdGhlIGZvcm1hdHRlZCBudW1iZXJzIGluIGEgQ0hBUiBjb2x1bW4uAENsb25lIERvbm9yIEVycm9yOiAlLjUxMnMuAENsb25lIHJlY2VpdmVkIHVuZXhwZWN0ZWQgcmVzcG9uc2UgZnJvbSBEb25vciA6ICUuNTEycy4AQ2xvbmUgRG9ub3IgTXlTUUwgdmVyc2lvbjogJS42NHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IE15U1FMIHZlcnNpb24gJS42NHMuAENsb25lIERvbm9yIE9TOiAlLjY0cyBpcyBkaWZmZXJlbnQgZnJvbSBSZWNpcGllbnQgT1M6ICUuNjRzLgBDbG9uZSBEb25vciBwbGF0Zm9ybTogJS42NHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IHBsYXRmb3JtOiAlLjY0cy4AQ2xvbmUgRG9ub3IgY29sbGF0aW9uOiAlLjEyOHMgaXMgdW5hdmFpbGFibGUgaW4gUmVjaXBpZW50LgBDbG9uZSBDb25maWd1cmF0aW9uICUuMTI4czogRG9ub3IgdmFsdWU6ICUuMTI4cyBpcyBkaWZmZXJlbnQgZnJvbSBSZWNpcGllbnQgdmFsdWU6ICUuMTI4cy4AQ2xvbmUgc3lzdGVtIGNvbmZpZ3VyYXRpb246ICUuNTEycwBDbG9uZSBEb25vciBwbHVnaW4gJS4xMjhzIGlzIG5vdCBhY3RpdmUgaW4gUmVjaXBpZW50LgBDbG9uZSBjYW5ub3QgdXNlIGxvb3AgYmFjayBjb25uZWN0aW9uIHdoaWxlIGNsb25pbmcgaW50byBjdXJyZW50IGRhdGEgZGlyZWN0b3J5LgBDbG9uZSBuZWVkcyBTU0wgY29ubmVjdGlvbiBmb3IgZW5jcnlwdGVkIHRhYmxlLgBDbG9uZSBlc3RpbWF0ZWQgZGF0YWJhc2Ugc2l6ZSBpcyAlLjY0cy4gQXZhaWxhYmxlIHNwYWNlICUuNjRzIGlzIG5vdCBlbm91Z2guAENvbmN1cnJlbnQgY2xvbmUgaW4gcHJvZ3Jlc3MuIFBsZWFzZSB0cnkgYWZ0ZXIgY2xvbmUgaXMgY29tcGxldGUuAFRoZSBjbG9uZSBvcGVyYXRpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gJXMuAENhbm5vdCBncmFudCByb2xlcyB0byBhbiBhbm9ueW1vdXMgdXNlci4AJXMARW1wdHkgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBhcyBzZWNvbmQgcGFzc3dvcmQgZm9yIHVzZXIgJyVzJ0AnJXMnLgBBY2Nlc3MgZGVuaWVkIGZvciBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIHRvIGRhdGFiYXNlICclLS4xOTJzJy4AQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLgBHdGlkIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBvcGVuZWQuAFRoZSBnZW9tZXRyeSBwYXNzZWQgdG8gZnVuY3Rpb24gJXMgaXMgaW4gU1JJRCAwLCB3aGljaCBkb2Vzbid0IHNwZWNpZnkgYSBsZW5ndGggdW5pdC4gQ2FuJ3QgY29udmVydCB0byAnJXMnLgBFcnJvciBpbnN0YWxsaW5nIHBsdWdpbiAnJXMnOiAlcwBTdG9yYWdlIGVuZ2luZSBjb3VsZCBub3QgYWxsb2NhdGUgdGVtcG9yYXJ5IHRhYmxlc3BhY2UgZm9yIHRoaXMgc2Vzc2lvbi4AR290IHVua25vd24gZXJyb3I6ICVkAENvdWxkIG5vdCBjaGFuZ2UgY29sdW1uICclcycgb2YgdGFibGUgJyVzJy4gVGhlIHJlc3VsdGluZyBzaXplIG9mIGluZGV4ICclcycgd291bGQgZXhjZWVkIHRoZSBtYXgga2V5IGxlbmd0aCBvZiAlZCBieXRlcy4AQSBjYXB0dXJlIGdyb3VwIGhhcyBhbiBpbnZhbGlkIG5hbWUuAEZhaWxlZCB0byBzZXQgdXAgU1NMIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBTU0wgbGlicmFyeSBlcnJvcjogJXMAU2Vjb25kYXJ5IGVuZ2luZSBvcGVyYXRpb24gZmFpbGVkLiAlcy4ARERMcyBvbiBhIHRhYmxlIHdpdGggYSBzZWNvbmRhcnkgZW5naW5lIGRlZmluZWQgYXJlIG5vdCBhbGxvd2VkLgBJbmNvcnJlY3QgY3VycmVudCBwYXNzd29yZC4gU3BlY2lmeSB0aGUgY29ycmVjdCBwYXNzd29yZCB3aGljaCBoYXMgdG8gYmUgcmVwbGFjZWQuAEN1cnJlbnQgcGFzc3dvcmQgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBSRVBMQUNFIGNsYXVzZSBpbiBvcmRlciB0byBjaGFuZ2UgaXQuAERvIG5vdCBzcGVjaWZ5IHRoZSBjdXJyZW50IHBhc3N3b3JkIHdoaWxlIGNoYW5naW5nIGl0IGZvciBvdGhlciB1c2Vycy4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiBpcyBiZWluZyBjaGFuZ2VkLgBDdXJyZW50IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGJlY2F1c2UgbmV3IHBhc3N3b3JkIGlzIGVtcHR5LgBBdCBsZWFzdCBvbmUgcGFydGlhbCByZXZva2UgZXhpc3RzIG9uIGEgZGF0YWJhc2UuIFRoZSBzeXN0ZW0gdmFyaWFibGUgJ0BAcGFydGlhbF9yZXZva2VzJyBtdXN0IGJlIHNldCB0byBPTi4AQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBpcyBzZXQgYXMgbWFuZGF0b3J5X3JvbGVzLiBDYW5ub3QgZ3JhbnQgdGhlICclcycgcHJpdmlsZWdlLgBUaGUgdXNlIG9mIHJlcGxpY2F0aW9uIGZpbHRlcnMgd2l0aCBYQSB0cmFuc2FjdGlvbnMgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGNhbiBsZWFkIHRvIGFuIHVuZGVmaW5lZCBzdGF0ZSBpbiB0aGUgcmVwbGljYS4Ac3FsX21vZGU9MHglMDh4IGlzIG5vdCBzdXBwb3J0ZWQuAEludmFsaWQgbWF0Y2ggbW9kZSBmbGFnIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AJyVzJyBwcml2aWxlZ2UgZm9yIGRhdGFiYXNlICclcycgZXhpc3RzIGJvdGggYXMgcGFydGlhbCByZXZva2UgYW5kIG15c3FsLmRiIHNpbXVsdGFuZW91c2x5LiBJdCBjb3VsZCBtZWFuIHRoYXQgdGhlICdteXNxbCcgc2NoZW1hIGlzIGNvcnJ1cHRlZC4AVGhlcmUncyBubyB1bml0IG9mIG1lYXN1cmUgbmFtZWQgJyVzJy4ASW52YWxpZCBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnLgBPdXQgb2YgcmFuZ2UgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJy4ARXhjZWVkZWQgbWF4IG51bWJlciBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IHZhbHVlKHMpLgBFeGNlZWRlZCBtYXggdG90YWwgbGVuZ3RoIG9mIHZhbHVlcyBwZXIgcmVjb3JkIGZvciBtdWx0aS12YWx1ZWQgaW5kZXggJyUtLjY0cycgYnkgJXUgYnl0ZXMuAERhdGEgdG9vIGxvbmcgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycuAENhbm5vdCBzdG9yZSBhbiBhcnJheSBvciBhbiBvYmplY3QgaW4gYSBzY2FsYXIga2V5IHBhcnQgb2YgdGhlIGluZGV4ICclLjE5MnMnLgBDYW5ub3QgdXNlIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycgZHVlIHRvIHR5cGUgb3IgY29sbGF0aW9uIGNvbnZlcnNpb24uAFRoZSBmdW5jdGlvbiAnJXMnIGZhaWxlZC4gJXMAQ2Fubm90IHVwZGF0ZSBHVElEX1BVUkdFRCB3aXRoIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gcnVubmluZwBHcm91cGluZyBvbiB0ZW1wb3JhbCBpcyBub24tZGV0ZXJtaW5pc3RpYyBmb3IgdGltZXpvbmVzIGhhdmluZyBEU1QuIFBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgdG8gVVRDIGZvciB0aGlzIHF1ZXJ5LgBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBhIHBhdGggbGVuZ3RoIHRvbyBsb25nIGZvciB0YWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgdGhlIHBhdGggbGltaXQgZm9yIHlvdXIgT1MuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyUuNjRzJ0AnJS42NHMnLiBSb2xlIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbjogJyUuMzJzJwAnYXVkaXRfbG9nJyBwYXNzd29yZCBoYXMgYmVlbiBjb3BpZWQgaW50byAnJS4zMnMnIGFuZCB3aWxsIGJlIHJlbW92ZWQgd2l0aCBmaXJzdCBwdXJnZWQgcGFzc3dvcmQuAFN0YXJ0ZWQgYXV0by1yZWpvaW4gcHJvY2VkdXJlIGF0dGVtcHQgJWx1IG9mICVsdQBBIHBsdWdpbiB3YXMgbG9hZGVkIG9yIHVubG9hZGVkIGR1cmluZyBhIHF1ZXJ5LCBhIHN5c3RlbSB2YXJpYWJsZSB0YWJsZSB3YXMgY2hhbmdlZC4AQSBwbHVnaW4gd2FzIGxvYWRlZCBvciB1bmxvYWRlZCBkdXJpbmcgYSBxdWVyeSwgYSBnbG9iYWwgc3RhdHVzIHZhcmlhYmxlIHdhcyBjaGFuZ2VkLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgdG8gc3RhcnQgaXRzIG1lc3NhZ2Ugc2VydmljZS4ASW52YWxpZCBTT1VSQ0VfQ09NUFJFU1NJT05fQUxHT1JJVEhNUyAnJS4xOTJzJyBmb3IgY2hhbm5lbCAnJS4xOTJzJy4ASW52YWxpZCBTT1VSQ0VfWlNURF9DT01QUkVTU0lPTl9MRVZFTCAldSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4ASW52YWxpZCBjb21wcmVzc2lvbiBhbGdvcml0aG0gJyUuMTkycycuAEludmFsaWQgenN0ZCBjb21wcmVzc2lvbiBsZXZlbCBmb3IgYWxnb3JpdGhtICclLjE5MnMnLgBTcGVjaWZpZWQgY29tcHJlc3Npb24gYWxnb3JpdGhtIGxpc3QgJyUuMTkycycgZXhjZWVkcyB0b3RhbCBjb3VudCBvZiAzIGZvciBjaGFubmVsICclLjE5MnMnLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgYEBgJS4yNTVzYCwgYnV0IGFub255bW91cyB1c2VycyBhcmUgZGlzYWxsb3dlZCBmb3IgUFJJVklMRUdFX0NIRUNLU19VU0VSLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgJS42NHNgQGAlLjI1NXNgLCBidXQgdGhpcyBpcyBub3QgYW4gZXhpc3RpbmcgdXNlci4ASW52YWxpZCwgY29ycnVwdGVkIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB3YXMgZm91bmQgaW4gdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gVXNlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gUFJJVklMRUdFX0NIRUNLU19VU0VSIHRvIGNvcnJlY3QgdGhlIGNvbmZpZ3VyYXRpb24uAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIHVzZXIgZG9lcyBub3QgaGF2ZSBSRVBMSUNBVElPTl9BUFBMSUVSIHByaXZpbGVnZS4ARHluYW1pYyBwcml2aWxlZ2UgJyVzJyBpcyBub3QgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzZXJ2ZXIuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IGlzIGludmFsaWQuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IHR5cGUgaXMgaW52YWxpZC4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgbGVuZ3RoIGlzIHRvbyBsb25nLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSB0eXBlIGlzIHRvbyBsb25nLgAlcy4ASW52YWxpZCBjaGFyYWN0ZXIgc2V0ICclcycgd2FzIHNwZWNpZmllZC4gSXQgbXVzdCBiZSBlaXRoZXIgY2hhcmFjdGVyIHNldCBuYW1lIG9yIGNvbGxhdGlvbiBuYW1lIGFzIHN1cHBvcnRlZCBieSBzZXJ2ZXIuAEludmFsaWQgY2hhcmFjdGVyIHNldCAnJXMnIHdhcyBzcGVjaWZpZWQuIEl0IG11c3QgYmUgYSBjaGFyYWN0ZXIgc2V0IG5hbWUgYXMgc3VwcG9ydGVkIGJ5IHNlcnZlci4ASW52YWxpZCBjb2xsYXRpb24gJyVzJyB3YXMgc3BlY2lmaWVkLiBJdCBtdXN0IGJlIGEgY29sbGF0aW9uIG5hbWUgYXMgc3VwcG9ydGVkIGJ5IHNlcnZlci4ASW52YWxpZCBleHRlbnNpb24gYXJndW1lbnQgdHlwZSAnJXMnIHdhcyBzcGVjaWZpZWQuIFJlZmVyIHRoZSBNeVNRTCBtYW51YWwgZm9yIHRoZSB2YWxpZCBVREYgZXh0ZW5zaW9uIGFyZ3VtZW50cyB0eXBlLgBUYWJsZSBoYXMgbXVsdGlwbGUgY29uc3RyYWludHMgd2l0aCB0aGUgbmFtZSAnJS0uMTkycycuIFBsZWFzZSB1c2UgY29uc3RyYWludCBzcGVjaWZpYyAnJXMnIGNsYXVzZS4AQ29uc3RyYWludCAnJS0uMTkycycgZG9lcyBub3QgZXhpc3QuAEFsdGVyaW5nIGNvbnN0cmFpbnQgZW5mb3JjZW1lbnQgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIGNvbnN0cmFpbnQgJyUtLjE5MnMnLiBFbmZvcmNlbWVudCBzdGF0ZSBhbHRlciBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGUgUFJJTUFSWSwgVU5JUVVFIGFuZCBGT1JFSUdOIEtFWSB0eXBlIGNvbnN0cmFpbnRzLgBFYWNoIHJvdyBvZiBhIFZBTFVFUyBjbGF1c2UgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBjb2x1bW4sIHVubGVzcyB3aGVuIHVzZWQgYXMgc291cmNlIGluIGFuIElOU0VSVCBzdGF0ZW1lbnQuAEEgVkFMVUVTIGNsYXVzZSBjYW5ub3QgdXNlIERFRkFVTFQgdmFsdWVzLCB1bmxlc3MgdXNlZCBhcyBhIHNvdXJjZSBpbiBhbiBJTlNFUlQgc3RhdGVtZW50LgBUaGUgcXVlcnkgZG9lcyBub3QgY29tcGx5IHdpdGggdmFyaWFibGUgcmVxdWlyZV9yb3dfZm9ybWF0IHJlc3RyaWN0aW9ucy4AVGhlIHJlcXVlc3RlZCB2YWx1ZSAlcyBpcyBpbnZhbGlkIGZvciBSRVFVSVJFX1JPV19GT1JNQVQsIG11c3QgYmUgZWl0aGVyIDAgb3IgMS4ARmFpbGVkIHRvIGFjcXVpcmUgbG9jayBvbiB1c2VyIG1hbmFnZW1lbnQgc2VydmljZSwgdW5hYmxlIHRvIGRldGVybWluZSBpZiByb2xlIGAlc2BAYCVzYCBpcyBtYW5kYXRvcnkARmFpbGVkIHRvIGFjcXVpcmUgbG9jayBvbiB1c2VyIG1hbmFnZW1lbnQgc2VydmljZSwgdW5hYmxlIHRvIGZldGNoIG1hbmRhdG9yeSByb2xlIGxpc3QATG9hZGluZyBsb2NhbCBkYXRhIGlzIGRpc2FibGVkOyB0aGlzIG11c3QgYmUgZW5hYmxlZCBvbiBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlcwBGYWlsZWQgdG8gaW1wb3J0ICVzIGJlY2F1c2UgdGhlIENGRyBmaWxlIHZlcnNpb24gKCV1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24gKCV1KQBPdXQgb2YgbWVtb3J5AENoYXJhY3RlciBzZXQgY2FuIGJlIHNldCBvbmx5IGZvciB0aGUgVURGIGFyZ3VtZW50IHR5cGUgU1RSSU5HLgBDaGFyYWN0ZXIgc2V0IGNhbiBiZSBzZXQgb25seSBmb3IgdGhlIFVERiBSRVRVUk4gdHlwZSBTVFJJTkcuAE11bHRpcGxlIElOVE8gY2xhdXNlcyBpbiBvbmUgcXVlcnkgYmxvY2suAE1pc3BsYWNlZCBJTlRPIGNsYXVzZSwgSU5UTyBpcyBub3QgYWxsb3dlZCBpbnNpZGUgc3VicXVlcmllcywgYW5kIG11c3QgYmUgcGxhY2VkIGF0IGVuZCBvZiBVTklPTiBjbGF1c2VzLgBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLiBBY2NvdW50IGlzIGJsb2NrZWQgZm9yICVzIGRheShzKSAoJXMgZGF5KHMpIHJlbWFpbmluZykgZHVlIHRvICV1IGNvbnNlY3V0aXZlIGZhaWxlZCBsb2dpbnMuAFVOU0lHTkVEIGZvciB0aGUgWUVBUiBkYXRhIHR5cGUgaXMgZGVwcmVjYXRlZCBhbmQgc3VwcG9ydCBmb3IgaXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAENsb25lIG5lZWRzIG1heF9hbGxvd2VkX3BhY2tldCB2YWx1ZSB0byBiZSAldSBvciBtb3JlLiBDdXJyZW50IHZhbHVlIGlzICV1AEZhaWxlZCB0byAlcyBzZGkgZm9yICVzLiVzIGluICVzIGR1ZSB0byBtaXNzaW5nIHJlY29yZC4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgdXNlcyBjb2x1bW4gJyUtLjE5MnMnLCBoZW5jZSBjb2x1bW4gY2Fubm90IGJlIGRyb3BwZWQgb3IgcmVuYW1lZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBydW5uaW5nOyBydW4gU1RPUCBHUk9VUF9SRVBMSUNBVElPTiBmaXJzdABTcGVjaWZ5aW5nIGFuIE9OIEVNUFRZIGNsYXVzZSBhZnRlciB0aGUgT04gRVJST1IgY2xhdXNlIGluIGEgSlNPTl9UQUJMRSBjb2x1bW4gZGVmaW5pdGlvbiBpcyBkZXByZWNhdGVkIHN5bnRheCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFNwZWNpZnkgT04gRU1QVFkgYmVmb3JlIE9OIEVSUk9SIGluc3RlYWQuAFRoZSBJTlRPIGNsYXVzZSBpcyBkZXByZWNhdGVkIGluc2lkZSBxdWVyeSBibG9ja3Mgb2YgcXVlcnkgZXhwcmVzc2lvbnMgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgbW92ZSB0aGUgSU5UTyBjbGF1c2UgdG8gdGhlIGVuZCBvZiBzdGF0ZW1lbnQgaW5zdGVhZC4AVGhlIFZBTFVFUyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gSXQgYWx3YXlzIHJldHVybnMgTlVMTCBpbiB0aGlzIGNvbnRleHQuIElmIHlvdSBtZWFudCB0byBhY2Nlc3MgYSB2YWx1ZSBmcm9tIHRoZSBWQUxVRVMgY2xhdXNlIG9mIHRoZSBJTlNFUlQgc3RhdGVtZW50LCBjb25zaWRlciB1c2luZyBhbiBhbGlhcyAoSU5TRVJUIElOVE8gLi4uIFZBTFVFUyAoLi4uKSBBUyBhbGlhcykgYW5kIHJlZmVyZW5jZSBhbGlhcy5jb2wgaW5zdGVhZCBvZiBWQUxVRVMoY29sKSBpbiB0aGUgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgY2xhdXNlLgBTUUxfQ0FMQ19GT1VORF9ST1dTIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyB0d28gc2VwYXJhdGUgcXVlcmllcyBpbnN0ZWFkLgBGT1VORF9ST1dTKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIENPVU5UKCopIGluc3RlYWQuAE5vIHZhbHVlIHdhcyBmb3VuZCBieSAnJS4xOTJzJyBvbiB0aGUgc3BlY2lmaWVkIHBhdGguAE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kIGJ5ICclLjE5MnMnIG9uIHRoZSBzcGVjaWZpZWQgcGF0aC4ASG9zdG5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuICVkIGNoYXJhY3RlcnMuAENvbHVtbiAnJS42NHMuJS42NHMuJS42NHMnIGhhdmluZyBwcmVmaXgga2V5IHBhcnQgJyUuNjRzKCV1KScgaXMgaWdub3JlZCBieSB0aGUgcGFydGl0aW9uaW5nIGZ1bmN0aW9uLiBVc2Ugb2YgcHJlZml4ZWQgY29sdW1ucyBpbiB0aGUgUEFSVElUSU9OIEJZIEtFWSgpIGNsYXVzZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSB1c2VybmFtZSBwcm92aWRlZCBmb3IgcmVjb3ZlcnkgY2hhbm5lbCBpcyBlbXB0eS4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBVU0VSIG9wdGlvbiB3YXMgbm90IHByb3ZpZGVkIHdpdGggUEFTU1dPUkQgZm9yIHJlY292ZXJ5IGNoYW5uZWwuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgcGFzc3dvcmQgcHJvdmlkZWQgZm9yIHRoZSByZWNvdmVyeSBjaGFubmVsIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIDMyIGNoYXJhY3RlcnMuAFN0YXRlbWVudCByZXF1aXJlcyBhIHRyYW5zZm9ybSBvZiBhIHN1YnF1ZXJ5IHRvIGEgbm9uLVNFVCBvcGVyYXRpb24gKGxpa2UgSU4yRVhJU1RTLCBvciBzdWJxdWVyeS10by1MQVRFUkFMLWRlcml2ZWQtdGFibGUpLiBUaGlzIGlzIG5vdCBhbGxvd2VkIHdpdGggb3B0aW1pemVyIHN3aXRjaCAnc3VicXVlcnlfdG9fZGVyaXZlZCcgb24ASW52YWxpZCBpbnB1dCB2YWx1ZSBmb3IgcmVjb3Zlcnkgc29ja2V0IGVuZHBvaW50cyAnJXMnLiBQbGVhc2UsIHByb3ZpZGUgYSB2YWxpZCwgY29tbWEgc2VwYXJhdGVkLCBsaXN0IG9mIGVuZHBvaW50cyAoSVA6cG9ydCkAVGhlIHNlcnZlciBpcyBub3QgbGlzdGVuaW5nIG9uIGVuZHBvaW50ICclcycuIE9ubHkgZW5kcG9pbnRzIHRoYXQgdGhlIHNlcnZlciBpcyBsaXN0ZW5pbmcgb24gYXJlIHZhbGlkIHJlY292ZXJ5IGVuZHBvaW50cy4AVmFyaWFibGUgJyUtLjY0cycgY2Fubm90IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnLiAlLS4yMDBzAE9ubHkgQklOTE9HIElOU0VSVCwgQ09NTUlUIGFuZCBST0xMQkFDSyBzdGF0ZW1lbnRzIGFyZSBhbGxvd2VkIGFmdGVyIENSRUFURSBUQUJMRSB3aXRoIFNUQVJUIFRSQU5TQUNUSU9OIHN0YXRlbWVudC4ARm9yZWlnbiBrZXkgY3JlYXRpb24gaXMgbm90IGFsbG93ZWQgd2l0aCBDUkVBVEUgVEFCTEUgYXMgU0VMRUNUIGFuZCBDUkVBVEUgVEFCTEUgd2l0aCBTVEFSVCBUUkFOU0FDVElPTiBzdGF0ZW1lbnQuAFNUQVJUIFRSQU5TQUNUSU9OIGNsYXVzZSBjYW5ub3QgYmUgdXNlZCAlLjEyOHMASW52YWxpZCBqc29uIGF0dHJpYnV0ZSwgZXJyb3I6ICIlcyIgYXQgcG9zICV1OiAnJXMnAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBFTkdJTkVfQVRUUklCVVRFLgBUaGUgdXNlciBhdHRyaWJ1dGUgbXVzdCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0AENhbm5vdCBwZXJmb3JtIG9wZXJhdGlvbiBhcyBJbm5vREIgcmVkbyBsb2dnaW5nIGlzIGRpc2FibGVkLiBQbGVhc2UgcmV0cnkgYWZ0ZXIgZW5hYmxpbmcgcmVkbyBsb2cgd2l0aCBBTFRFUiBJTlNUQU5DRQBDYW5ub3QgcGVyZm9ybSBvcGVyYXRpb24gYXMgSW5ub0RCIGlzIGFyY2hpdmluZyByZWRvIGxvZy4gUGxlYXNlIHJldHJ5IGFmdGVyIHN0b3BwaW5nIHJlZG8gYXJjaGl2ZSBieSBpbnZva2luZyBpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9zdG9wKCkATm90IGVub3VnaCByZXNvdXJjZXMgdG8gY29tcGxldGUgbG9jayByZXF1ZXN0LgBFdmFsdWF0aW5nIGEgSlNPTiB2YWx1ZSBpbiBTUUwgYm9vbGVhbiBjb250ZXh0IGRvZXMgYW4gaW1wbGljaXQgY29tcGFyaXNvbiBhZ2FpbnN0IEpTT04gaW50ZWdlciAwOyBpZiB0aGlzIGlzIG5vdCB3aGF0IHlvdSB3YW50LCBjb25zaWRlciBjb252ZXJ0aW5nIEpTT04gdG8gYSBTUUwgbnVtZXJpYyB0eXBlIHdpdGggSlNPTl9WQUxVRSBSRVRVUk5JTkcAVGhlIGZ1bmN0aW9uICVzIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNoYXJhY3RlciBzZXQgJyVzJy4AQ29udmVyc2lvbiBmcm9tIGNvbGxhdGlvbiAlcyBpbnRvICVzIGltcG9zc2libGUgZm9yICVzAFNjaGVtYSAnJXMnIGlzIGluIHJlYWQgb25seSBtb2RlLgBGYWlsZWQgdG8gZW5hYmxlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGZlYXR1cmUuIFRoZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxIGNhbiBvbmx5IGJlIHNldCB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLgBGYWlsZWQgdG8gZW5hYmxlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGZlYXR1cmUuIFRoZSBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxIGNhbiBvbmx5IGJlIHNldCB3aGVuIFNPVVJDRV9BVVRPX1BPU0lUSU9OIG9wdGlvbiBvZiBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIGlzIGVuYWJsZWQuAFRoZSBAQEdMT0JBTC5HVElEX01PREUgPSAlLS42NHMgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQXN5bmNocm9ub3VzIFJlcGxpY2F0aW9uIENvbm5lY3Rpb24gRmFpbG92ZXIgaXMgZW5hYmxlZCBpLmUuIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0FVVE9fUE9TSVRJT04gPSAwIGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEFzeW5jaHJvbm91cyBSZXBsaWNhdGlvbiBDb25uZWN0aW9uIEZhaWxvdmVyIGlzIGVuYWJsZWQgaS5lLiBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgPSAxLgBJbnZhbGlkIHVzZSBvZiBwYXJhbWV0ZXJzIGluICclcycAQ2hhcmFjdGVyIHNldCAnJXMnIGNhbm5vdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggJyVzJyBpbiBjYWxsIHRvICVzLgBDaGFuZ2luZyAlcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIEZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdC4ASW52YWxpZCB0aW1lIHpvbmUgaW50ZXJ2YWw6ICclcycAQ2Fubm90IGNhc3QgdmFsdWUgdG8gJXMuAFRoZSBoeXBlcmdyYXBoIG9wdGltaXplciBkb2VzIG5vdCB5ZXQgc3VwcG9ydCAnJXMnAFRoZSBoeXBlcmdyYXBoIG9wdGltaXplciBpcyBoaWdobHkgZXhwZXJpbWVudGFsIGFuZCBpcyBtZWFudCBmb3IgdGVzdGluZyBvbmx5LiBEbyBub3QgZW5hYmxlIGl0IHVubGVzcyB5b3UgYXJlIGEgTXlTUUwgZGV2ZWxvcGVyLgBOb25lIG9mIHRoZSBsb2ctc2lua3Mgc2VsZWN0ZWQgd2l0aCAtLWxvZy1lcnJvci1zZXJ2aWNlcz0uLi4gcHJvdmlkZXMgYSBsb2ctcGFyc2VyLiBUaGUgc2VydmVyIHdpbGwgbm90IGJlIGFibGUgdG8gbWFrZSB0aGUgcHJldmlvdXMgcnVucycgZXJyb3ItbG9ncyBhdmFpbGFibGUgaW4gcGVyZm9ybWFuY2Vfc2NoZW1hLmVycm9yX2xvZy4ATm9uZSBvZiB0aGUgbG9nLXNpbmtzIHNlbGVjdGVkIGluIEBAZ2xvYmFsLmxvZ19lcnJvcl9zZXJ2aWNlcyBzdXBwb3J0cyB3cml0aW5nIHRvIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEuIFRoZSBzZXJ2ZXIgd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIHRoZSBjdXJyZW50IHJ1bnMnIGVycm9yIGV2ZW50cyBhdmFpbGFibGUgaW4gcGVyZm9ybWFuY2Vfc2NoZW1hLmVycm9yX2xvZy4gVG8gY2hhbmdlIHRoaXMsIGFkZCBhIGxvZy1zaW5rIHRoYXQgc3VwcG9ydHMgdGhlIHBlcmZvcm1hbmNlIHNjaGVtYSB0byBAQGdsb2JhbC5sb2dfZXJyb3Jfc2VydmljZXMuAEBAZ2xvYmFsLmxvZ19lcnJvcl9zZXJ2aWNlcyBsaXN0cyBtb3JlIHRoYW4gb25lIGxvZy1maWx0ZXIgc2VydmljZS4gVGhpcyBpcyBkaXNjb3VyYWdlZCBhcyBpdCB3aWxsIG1ha2UgaXQgaGFyZCB0byB1bmRlcnN0YW5kIHdoaWNoIHJ1bGUgaW4gd2hpY2ggZmlsdGVyIGFmZmVjdGVkIGEgbG9nLWV2ZW50LgBDb3VsZCBub3Qgb3BlbiBmaWxlICclcycgZm9yIGVycm9yIGxvZ2dpbmclcyVzAFVzZXIgJS4yNTZzIGlzIHJlZmVyZW5jZWQgYXMgYSBkZWZpbmVyIGFjY291bnQgaW4gJXMuAE9wZXJhdGlvbiAlcyBmYWlsZWQgZm9yICUuMjU2cyBhcyBpdCBpcyByZWZlcmVuY2VkIGFzIGEgZGVmaW5lciBhY2NvdW50IGluICVzLgBEZWNpbWFsIG51bWJlciBpbiByZWd1bGFyIGV4cHJlc3Npb24gaXMgdG9vIGxhcmdlLgBUaGUgdmFyaWFibGUgIiVzIiBoYXMgYSBub24taW50ZWdlciBiYXNlZCB0eXBlAFJlYWRzIHdpdGggc2VyaWFsaXphYmxlIGlzb2xhdGlvbi9TRUxFQ1QgRk9SIFNIQVJFIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBBQ0wgdGFibGVzLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVwZGF0ZXMgYSB0YWJsZSBkZXBlbmRpbmcgb24gQUNMIHRhYmxlIHJlYWQgb3BlcmF0aW9uLiBBcyBzdG9yYWdlIGVuZ2luZSByb3cgbG9ja3MgYXJlIHNraXBwZWQgZm9yIEFDTCB0YWJsZSwgaXQgbWF5IG5vdCBoYXZlIHNhbWUgZWZmZWN0IG9uIHNvdXJjZSBhbmQgcmVwbGljYS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgTW9uaXRvciB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIE1vbml0b3IgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFRoZSBSZXBsaWNhIE1vbml0b3IgdGhyZWFkIGZhaWxlZCB0byBzdGFydC4AUmVwbGljYXRpb24gY2Fubm90IHN0YXJ0JS4xOTJzIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4gYXMgdGhpcyBzZXJ2ZXIgdXNlcyBAQEdMT0JBTC5HVElEX01PREUgPD4gT04uAFRoZSBvcHRpb25zIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gTE9DQUx8PFVVSUQ+IGFuZCBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDEgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4gY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQEBHTE9CQUwuR1RJRF9NT0RFIDw+IE9OLgBUaGUgdmFsdWUgb2Ygc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyIHdpbGwgb25seSB0YWtlIGVmZmVjdCBmb3IgY2hhbm5lbHMgcnVubmluZyB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TIDw+IE9GRi4AVXNpbmcgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgY3JlYXRlcyBsaW1pdGF0aW9ucyBvbiB0aGUgcmVwbGljYXRpb24gdG9wb2xvZ3kgLSB5b3UgY2Fubm90IGZhaWwgb3ZlciBiZXR3ZWVuIGRvd25zdHJlYW0gYW5kIHVwc3RyZWFtIHNlcnZlcnMuIE9ubHkgdXNlIHRoaXMgb3B0aW9uIGlmIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBlbmFibGUgR1RJRHMgb24gdGhlIHNvdXJjZSwgZm9yIGluc3RhbmNlLCBiZWNhdXNlIG9mIGxhY2sgb2YgcGVybWlzc2lvbnMuIElmIHBvc3NpYmxlLCB1c2UgdGhlIHByb2NlZHVyZSBmb3IgZW5hYmxpbmcgR1RJRCB0cmFuc2FjdGlvbnMgb25saW5lIGluc3RlYWQsIGFzIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbi4AV0FJVF9VTlRJTF9TUUxfVEhSRUFEX0FGVEVSX0dUSURTIGNhbm5vdCBiZSB1c2VkIG9uIGEgY2hhbm5lbCBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4AVGhlIFNRTF9BRlRFUl9HVElEUyBvciBTUUxfQkVGT1JFX0dUSURTIGNsYXVzZXMgZm9yIFNUQVJUIFJFUExJQ0EgY2Fubm90IGJlIHVzZWQgd2hlbiB0aGUgcmVwbGljYXRpb24gY2hhbm5lbCBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4uAFJlcGxpY2F0aW9uICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiB3aGVyZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZQBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBUaGUgZ3JvdXBfcmVwbGljYXRpb25fcmVjb3ZlcnkgY2hhbm5lbCBpcyBzdGlsbCBydW5uaW5nLCBtb3N0IGxpa2VseSBpdCBpcyB3YWl0aW5nIGZvciBhIGRhdGFiYXNlL3RhYmxlIGxvY2ssIHdoaWNoIGlzIHByZXZlbnRpbmcgdGhlIGNoYW5uZWwgZnJvbSBzdG9wcGluZy4gUGxlYXNlIGNoZWNrIGRhdGFiYXNlL3RhYmxlIGxvY2tzLCBpbmNsdWRpbmcgdGhlIG9uZXMgY3JlYXRlZCBieSBiYWNrdXAgdG9vbHMuAEFVVE9FWFRFTkRfU0laRSBzaG91bGQgYmUgYSBtdWx0aXBsZSBvZiAldU0ASW5ub0RCOiAiJXMiIG5vdCBhbGxvd2VkIHdpdGggZ2VuZXJhbCB0YWJsZXNwYWNlcwBBVVRPRVhURU5EX1NJWkUgdmFsdWUgc2hvdWxkIGJlIGJldHdlZW4gJXVNIGFuZCAldU0AQVVUT0VYVEVORF9TSVpFIGNsYXVzZSBpcyBub3QgdmFsaWQgZm9yICVzIHRhYmxlc3BhY2UuAFVzZXIgYWNjb3VudCAlcyBpcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGdyYW50ZWQgdG8gdGhlIHJvbGUgJXMuIFRoZSBHUkFOVCB3b3VsZCBjcmVhdGUgYSBsb29wAEEgdGFibGUgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSB2aXNpYmxlIGNvbHVtbi4AQ29tcHJlc3Npb24gZmFpbGVkIHdpdGggdGhlIGZvbGxvd2luZyBlcnJvciA6ICVzAFRoZSBwYXJhbWV0ZXIgbmV0d29ya19uYW1lc3BhY2UgaXMgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UuIFBsZWFzZSB1c2UgdGhlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgY29tbWFuZCB0byBzZXQgY2hhbm5lbCBuZXR3b3JrX25hbWVzcGFjZSBwYXJhbWV0ZXIuAFRoZSBjbGllbnQgd2FzIGRpc2Nvbm5lY3RlZCBieSB0aGUgc2VydmVyIGJlY2F1c2Ugb2YgaW5hY3Rpdml0eS4gU2VlIHdhaXRfdGltZW91dCBhbmQgaW50ZXJhY3RpdmVfdGltZW91dCBmb3IgY29uZmlndXJpbmcgdGhpcyBiZWhhdmlvci4ASW52YWxpZCBjYXN0IGZyb20gJXMgdG8gJXMuAEludmFsaWQgY2FzdCBmcm9tICVzIHRvICVzLiBBIHBvbHlnb24gcmluZyBpcyBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uLgBBcmd1bWVudHMgdG8gZnVuY3Rpb24gJXMgY29udGFpbnMgZ2VvbWV0cmllcyB3aXRoIGRpZmZlcmVudCBTUklEczogJXUgYW5kICV1LiBBbGwgZ2VvbWV0cmllcyBtdXN0IGhhdmUgdGhlIHNhbWUgU1JJRC4AS2V5cmluZyByZWxvYWQgZmFpbGVkLiBQbGVhc2UgY2hlY2sgZXJyb3IgbG9nIGZvciBtb3JlIGRldGFpbHMuAFRhYmxlc3BhY2UgJyUuMTkycycgaXMgaW52YWxpZCBmb3IgU0RJIG9wZXJhdGlvbnMuAFZhbHVlIHRvbyBsb25nIHNldHRpbmcgU09VUkNFX0NPTVBSRVNTSU9OX0FMR09SSVRITVMgb3B0aW9uIHRvIGEgJWQgY2hhcnMgbG9uZyBzdHJpbmcgZm9yIGNoYW5uZWwgJyUuMTkycycuAEEgZGVwcmVjYXRlZCBUTFMgdmVyc2lvbiAlcyBpcyBlbmFibGVkIGZvciBjaGFubmVsICVzLiBQbGVhc2UgdXNlIFRMU3YxLjIgb3IgaGlnaGVyLgBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLgBSZXBsaWNhdGlvbiAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gd2hlcmUgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQAVW5hYmxlIHRvIHJldHJpZXZlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgdmFyaWFibGUgZHVyaW5nIHNlcnZlciBjaGVja3Mgb24gcmVwbGljYXRpb24gb3BlcmF0aW9ucy4AQm90aCBhdWRpdF9sb2dfbWF4X3NpemUgYW5kIGF1ZGl0X2xvZ19wcnVuZV9zZWNvbmRzIGFyZSBzZXQgdG8gbm9uLXplcm8uIGF1ZGl0X2xvZ19tYXhfc2l6ZSB0YWtlcyBwcmVjZWRlbmNlIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBpcyBpZ25vcmVkAGF1ZGl0X2xvZ19yb3RhdGVfb25fc2l6ZSBpcyBub3QgZ3JhbnVsYXIgZW5vdWdoIGZvciB0aGUgdmFsdWUgb2YgYXVkaXRfbG9nX21heF9zaXplIHN1cHBsaWVkLiBTaG91bGQgYmUgYXQgbGVhc3QgJWQgdGltZXMgc21hbGxlci4AQ3JlYXRlL0FsdGVyIHVzZXIgaGFzIGZhaWxlZCwgQ29uZmlndXJlZCB1c2VyIHJlYWxtIGFzIGF1dGhlbnRpY2F0aW9uIHN0cmluZyBpcyBlbXB0eSwgUGxlYXNlIG1ha2Ugc3VyZSB0byBjb25maWd1cmUgYXV0aGVudGljYXRpb24gc3RyaW5nIGFzIHVzZXIgcmVhbG0uAENhbm5vdCBpbnN0YWxsIHRoZSAlLjE5MnMgcGx1Z2luIHdoZW4gdGhlICUuMTkycyBwbHVnaW4gaXMgaW5zdGFsbGVkLgAlZCBlcnJvciBsb2dnaW5nIGNvbXBvbmVudChzKSBmYWlsZWQgdG8gZmx1c2guIEZvciBmaWxlLWJhc2VkIGxvZ3MgdGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIHBhdGggb3IgcGVybWlzc2lvbnMgb2YgdGhlIGxvZy1maWxlIGhhdmUgY2hhbmdlZC4gRmFpbHVyZSB0byBmbHVzaCBmaWxlZC1iYXNlZCBsb2dzIG1heSBhZmZlY3QgbG9nLXJvdGF0aW9uLgBUaGUgdW50aWwgY2xhdXNlIFNRTF9BRlRFUl9NVFNfR0FQUyBpcyBiZWluZyB1c2VkIGZvciBjaGFubmVsICclLjE5MnMnIHdoZW4gR1RJRF9NT0RFID0gT04gYW5kIFNPVVJDRV9BVVRPX1BPU0lUSU9OPTEgbWVhbmluZyB0aGUgc2VydmVyIGRpZCBub3QgY29tcHV0ZSBpbnRlcm5hbGx5IHdoYXQgZ2FwcyBtYXkgZXhpc3QgaW4gdGhlIHJlbGF5IGxvZyB0cmFuc2FjdGlvbiBleGVjdXRpb24uIFRvIGNsb3NlIGFueSBleGVjdXRpb24gZ2FwcyB1c2UgZWl0aGVyIHRoZSBTUUxfQkVGT1JFX0dUSURTIG9yIFNRTF9BRlRFUl9HVElEUyB1bnRpbCBjbGF1c2UuAEludmFsaWQgdGFyZ2V0IGZvciBhc3NpZ25tZW50IGluIElOU0VSVCBvciBVUERBVEUgc3RhdGVtZW50ICclLjE5MnMnLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIGEgR3JvdXAgUmVwbGljYXRpb24gc2Vjb25kYXJ5IG1lbWJlciwgaXQgbXVzdCBiZSBkb25lIG9uIHRoZSBncm91cCBwcmltYXJ5LgBVbmFibGUgdG8gcHJvcGFnYXRlIHRoZSBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSIHZhbHVlIGZvciBjaGFubmVsICclcycgdG8gZ3JvdXAgcmVwbGljYXRpb24gbWVtYmVycy4gUGxlYXNlIHJldHJ5IHRoZSBvcGVyYXRpb24uAGF1ZGl0X2xvZ19mb3JtYXRfdW5peF90aW1lc3RhbXAgaXMgYXBwbGljYWJsZSBvbmx5IHdoZW4gYXVkaXRfbG9nX2Zvcm1hdCA9IEpTT04uAEludmFsaWQgcGx1Z2luICIlcyIgc3BlY2lmaWVkIGFzICVkIGZhY3RvciBkdXJpbmcgIiVzIi4ASURFTlRJRklFRCBCWSBjbGF1c2UgZHVyaW5nICIlcyIgbm90IHN1cHBvcnRlZCBmb3IgcGx1Z2luICIlcyIuAFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHBsdWdpbiAiJXMiLgBBdXRoZW50aWNhdGlvbiBwbHVnaW4gcmVxdWlyZXMgcmVnaXN0cmF0aW9uLiBQbGVhc2UgcmVmZXIgQUxURVIgVVNFUiBzeW50YXggb3Igc2V0IC0tZmlkby1yZWdpc3Rlci1mYWN0b3IgY29tbWFuZCBsaW5lIG9wdGlvbiB0byBkbyByZWdpc3RyYXRpb24uACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgZXhpc3RzLiBQbGVhc2UgZG8gQUxURVIgVVNFUi4uLiBEUk9QICVkIGZhY3RvciBiZWZvcmUgZG9pbmcgdGhpcyBvcGVyYXRpb24gT1IgZG8gQUxURVIgVVNFUi4uLiBNT0RJRlkgJWQgZmFjdG9yLi4uIHRvIG1vZGlmeSBleGlzdGluZyAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGRvZXNuJ3QgZXhpc3QuIFBsZWFzZSBkbyBBTFRFUiBVU0VSLi4uIEFERCAlZCBmYWN0b3IuLi4gYmVmb3JlIGRvaW5nIHRoaXMgb3BlcmF0aW9uLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGRvZXMgbm90IG1hdGNoIGFnYWluc3QgYXV0aGVudGljYXRpb24gcG9saWN5LiBQbGVhc2UgcmVmZXIgQEBhdXRoZW50aWNhdGlvbl9wb2xpY3kgc3lzdGVtIHZhcmlhYmxlLgBUaGUgcmVnaXN0cmF0aW9uIGZvciAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIGFscmVhZHkgY29tcGxldGVkLiBZb3UgY2Fubm90IHBlcmZvcm0gcmVnaXN0cmF0aW9uIG11bHRpcGxlIHRpbWVzLgBUaGUgcmVnaXN0cmF0aW9uIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBmb3IgdXNlciAnJXMnQCclcycuIFRoZSBvcGVyYXRpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGluIHVzZXIncyBvd24gc2Vzc2lvbi4AQXV0aGVudGljYXRpb24gcGx1Z2luJ3MgcmVnaXN0cmF0aW9uIGZhaWxlZC4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBzaG91bGQgYmUgYWRkZWQgYmVmb3JlICVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QuAEF1dGhlbnRpY2F0aW9uIGZhY3RvciBzaG91bGQgYmUgZGlmZmVyZW50LgBUaGUgb3BlcmF0aW9uICIlcyIgY2Fubm90IGJlIHBlcmZvcm1lZCBmb3IgdXNlciAnJXMnQCclcycgY29uZmlndXJlZCB0byBjb25uZWN0IHdpdGhvdXQgYSBwYXNzd29yZC4AR1RJRF9PTkxZIGNhbm5vdCBiZSBlbmFibGVkIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnLiBZb3UgbmVlZCBHVElEX01PREUgPSBPTiwgU09VUkNFX0FVVE9fUE9TSVRJT04gPSAxIGFuZCBSRVFVSVJFX1JPV19GT1JNQVQgPSAxLgBSRVFVSVJFX1JPV19GT1JNQVQgY2Fubm90IGJlIGRpc2FibGVkIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdoZW4gR1RJRF9PTkxZPTEuAFNPVVJDRV9BVVRPX1BPU0lUSU9OIGNhbm5vdCBiZSBkaXNhYmxlZCBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3aGVuIEdUSURfT05MWT0xLgBXaGVuIGRpc2FibGluZyBHVElEX09OTFkgYW5kIFNPVVJDRV9BVVRPX1BPU0lUSU9OIEZPUiBDSEFOTkVMICclLjE5MnMnIHlvdSBtdXN0IHByb3ZpZGUgU09VUkNFX0xPR19GSUxFIGFuZCBTT1VSQ0VfTE9HX1BPUyBhcyBzb3VyY2UgcG9zaXRpb25zIGFyZSBpbnZhbGlkLgBXaGVuIGRpc2FibGluZyBTT1VSQ0VfQVVUT19QT1NJVElPTiBGT1IgQ0hBTk5FTCAnJS4xOTJzJyB5b3UgbXVzdCBwcm92aWRlIFNPVVJDRV9MT0dfRklMRSBhbmQgU09VUkNFX0xPR19QT1MgYXMgc291cmNlIHBvc2l0aW9ucyBhcmUgaW52YWxpZC4AV2hlbiBjb25maWd1cmluZyBhIGdyb3VwIHJlcGxpY2F0aW9uIGNoYW5uZWwgeW91IG11c3QgZG8gaXQgd2hlbiBHVElEX01PREUgPSBPTi4AUmVwbGljYXRpb24gY2Fubm90IHN0YXJ0JS4xOTJzIHdpdGggR1RJRF9PTkxZID0gMSBhcyB0aGlzIHNlcnZlciB1c2VzIEBAR0xPQkFMLkdUSURfTU9ERSA8PiBPTi4AVGhlIHJlcGxpY2F0aW9uIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc291cmNlIG1heSBiZSBvdXQtb2YtZGF0ZSBvbiBjaGFubmVsICclLjE5MnMnLCBkdWUgdG8gdGhlIHVzZSBvZiBHVElEX09OTFk9MS4gVGhlIG91dC1vZi1kYXRlIHBvc2l0aW9ucyBjYW4gc3RpbGwgYmUgdXNlZCBpbiBzb21lIGNhc2VzIHNvLCBpbiBvcmRlciB0byB1cGRhdGUgdGhlbSwgd2Ugc3VnZ2VzdCB0aGF0IHlvdSBzdGFydCB0aGUgcmVwbGljYXRpb24gdG8gcmVjZWl2ZSBhbmQgYXBwbHkgYXQgbGVhc3Qgb25lIHRyYW5zYWN0aW9uLCB3aGljaCB3aWxsIHNldCB0aGUgcG9zaXRpb25zIHRvIHZhbGlkIHZhbHVlcy4AU1NMIGZpcHMgbW9kZSBlcnJvcjogJXMAJXM9JWxsdSBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZSBbJWxsdSwlbGx1XS4gJWxsdSB3aWxsIGJlIHVzZWQuAE1BVENIIGRvZXMgbm90IHN1cHBvcnQgUk9MTFVQIGNvbHVtbnMuAE1pc3NpbmcgbG9jYWxlIHJlc291cmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgBSZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeSB1c2VkIGRlZmF1bHQgKHJvb3QpIGxvY2FsZS4ATWlzc2luZyBkYXRhIGZpbGUgaW4gcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkuACclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgJXMuIFBsZWFzZSBjb25zaWRlciB1c2luZyAlcyB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgBUaGUgJXMgd2FzIGNhbGxlZCB3aGVuIHRoZXJlIHdhcyBhbHJlYWR5IGFub3RoZXIgY29uY3VycmVudCBjYWxsIHRvIHRoaXMgcHJvY2VkdXJlLiBObyBhY3Rpb24gd2FzIHRha2VuLiBXYWl0IGZvciBvdGhlciBjYWxscyB0byAlcyB0byBmaW5pc2ggYmVmb3JlIHJldHJ5aW5nLgBDb25uZWN0aW9uIGNsb3NlZC4gR2xvYmFsIGNvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAENvbm5lY3Rpb24gY2xvc2VkLiBDb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBOZWVkIHRvIHJlYnVpbGQgdGhlIHRhYmxlIHRvIGNoYW5nZSBjb2x1bW4gdHlwZQBUaGlzIGZ1bmN0aW9uICclLS4xOTJzJyBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIGxvYWRhYmxlIGZ1bmN0aW9uIChVREYpLiBUbyBpbnZva2UgdGhlIHN0b3JlZCBmdW5jdGlvbiwgaXQgaXMgbmVjZXNzYXJ5IHRvIHF1YWxpZnkgaXQgd2l0aCB0aGUgc2NoZW1hIG5hbWUuAENvdWxkIG5vdCBwdXJnZSBiaW5hcnkgbG9ncyBzaW5jZSBhbm90aGVyIHNlc3Npb24gaXMgZXhlY3V0aW5nIExPQ0sgSU5TVEFOQ0UgRk9SIEJBQ0tVUC4gV2FpdCBmb3IgdGhhdCBzZXNzaW9uIHRvIHJlbGVhc2UgdGhlIGxvY2suAFRvbyBtYW55IHdpbmRvd3MgaW4gU0VMRUNUOiAlZC4gTWF4aW11bSBhbGxvd2VkIGlzICVkLiBVc2UgbmFtZWQgd2luZG93cyB0byBzaGFyZSB3aW5kb3dzIGJldHdlZW4gd2luZG93IGZ1bmN0aW9ucy4AJXMAQ29tbWVudCBmb3IgJXMgJyVzJyBjb250YWlucyBhbiBpbnZhbGlkICVzIGNoYXJhY3RlciBzdHJpbmc6ICclLjY0cycuAERlZmluaXRpb24gb2YgJXMgJyUtLjE5MnMuJS0uMTkycycgY29udGFpbnMgYW4gaW52YWxpZCAlcyBjaGFyYWN0ZXIgc3RyaW5nOiAnJS42NHMnLgBDYW4ndCBleGVjdXRlIHRoZSBnaXZlbiBjb21tYW5kIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBYQTogVGVtcG9yYXJ5IHRhYmxlcyBjYW5ub3QgYmUgYWNjZXNzZWQgaW5zaWRlIFhBIHRyYW5zYWN0aW9ucyB3aGVuIHhhX2RldGFjaF9vbl9wcmVwYXJlPU9OAE1heGltdW0gcm93IHZlcnNpb25zIHJlYWNoZWQgZm9yIHRhYmxlICVzLiBObyBtb3JlIGNvbHVtbnMgY2FuIGJlIGFkZGVkIG9yIGRyb3BwZWQgaW5zdGFudGx5LiBQbGVhc2UgdXNlIENPUFkvSU5QTEFDRS4AQ29sdW1uIGNhbid0IGJlIGFkZGVkIHdpdGggQUxHT1JJVEhNPUlOU1RBTlQgYXMgYWZ0ZXIgdGhpcyBtYXggcG9zc2libGUgcm93IHNpemUgY3Jvc3NlcyBtYXggcGVybWlzc2libGUgcm93IHNpemUuIFRyeSBBTEdPUklUSE09SU5QTEFDRS9DT1BZLgBBbGwgcXVlcmllcyBoYXZlIGJlZW4gYmxvY2tlZCB3aGlsZSBmdW5jdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fc2V0X2FzX3ByaW1hcnkoKScgaXMgZXhlY3V0aW5nLiBQbGVhc2UgcmVmZXIgdGltZW91dCBwYXJhbWV0ZXIgb2YgZnVuY3Rpb24gJ2dyb3VwX3JlcGxpY2F0aW9uX3NldF9hc19wcmltYXJ5KCknLgBEZWxpbWl0ZXIgJyVzJyBpbiBwb3NpdGlvbiAlZCBpbiBkYXRldGltZSB2YWx1ZSAnJXMnIGF0IHJvdyAlZCBpcyBkZXByZWNhdGVkLiBQcmVmZXIgdGhlIHN0YW5kYXJkICclYycuAERlbGltaXRlciAnJXMnIGluIHBvc2l0aW9uICVkIGluIGRhdGV0aW1lIHZhbHVlICclcycgYXQgcm93ICVkIGlzIHN1cGVyZmx1b3VzIGFuZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcmVtb3ZlLgBDYW5ub3QgcGVyc2lzdCBTRU5TSVRJVkUgc3lzdGVtIHZhcmlhYmxlICclcycgYmVjYXVzZSBrZXlyaW5nIGNvbXBvbmVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLgBTRU5TSVRJVkUgc3lzdGVtIHZhcmlhYmxlICclcycgd2FzIHBlcnNpc3RlZCB3aXRob3V0IGVuY3J5cHRpb24uIENvbnNpZGVyIHJlc3RhcnRpbmcgc2VydmVyIHdpdGgga2V5cmluZyBjb21wb25lbnQgc3VwcG9ydCB0byBwZXJzaXN0IFNFTlNJVElWRSB2YXJpYWJsZXMgc2VjdXJlbHkuAFRyaWdnZXIgJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzIG9uIHRoZSB0YWJsZSAnJS0uMTkycycuJyUtLjE5MnMnLgBUcmlnZ2VyICclLS4xOTJzJy4nJS0uMTkycycgYWxyZWFkeSBleGlzdHMgb24gYSBkaWZmZXJlbnQgdGFibGUuIFRoZSAnSUYgTk9UIEVYSVNUUycgY2xhdXNlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciB0cmlnZ2VycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgdGFibGUuAFRoaXMgZnVuY3Rpb24gJyUtLjE5MnMnIGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgbmF0aXZlIGZ1bmN0aW9uLiBUaGUgJ0lGIE5PVCBFWElTVFMnIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdoaWxlIGNyZWF0aW5nIGEgbG9hZGFibGUgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGEgbmF0aXZlIGZ1bmN0aW9uLgBTRVQgUEFTU1dPUkQgaGFzIG5vIHNpZ25pZmljYW5jZSBmb3IgdXNlciAnJXMnQCclcycgYXMgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB1c2VkIGRvZXNuJ3Qgc3RvcmUgYXV0aGVudGljYXRpb24gZGF0YSBpbiB0aGUgTXlTUUwgc2VydmVyLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQUxURVIgVVNFUiBpbnN0ZWFkIGlmIHlvdSB3YW50IHRvIGNoYW5nZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzLgBDYW5ub3QgcmVjb3ZlciBmcm9tIGRldGVjdF9vbmx5IGRvdWJsZXdyaXRlIGJ1ZmZlciBhcyBwYWdlICV1IGZyb20gYmF0Y2ggZG91Ymxld3JpdGUgZmlsZSBpcyBjb3JydXB0ZWQuAERhdGFiYXNlIHBhZ2UgY29ycnVwdGlvbiBvZiB0YWJsZXNwYWNlICVzIHNwYWNlX2lkOiAldSBwYWdlX251bTogJXUuIENhbm5vdCByZWNvdmVyIGl0IGZyb20gdGhlIGRvdWJsZXdyaXRlIGJ1ZmZlciBiZWNhdXNlIGl0IHdhcyB3cml0dGVuIGluIGRldGVjdF9vbmx5LWRvdWJsZXdyaXRlIG1vZGUuAExhdGl0dWRlIG9mIG9yaWdpbiBtdXN0IGJlIHdpdGhpbiBbLTkwLCA5MF0gZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LgBMb25naXR1ZGUgb2Ygb3JpZ2luIG11c3QgYmUgd2l0aGluICgtMTgwLCAxODBdIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdC4AVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIGZvciBTUklEICV1IGNvbnRhaW5zIHVudXNlZCBwcm9qZWN0aW9uIHBhcmFtZXRlciAiJXMiLgBGYWlsZWQgdG8gZ2VuZXJhdGUgaW52aXNpYmxlIHByaW1hcnkga2V5LiBDb2x1bW4gJ215X3Jvd19pZCcgYWxyZWFkeSBleGlzdHMuAEZhaWxlZCB0byBnZW5lcmF0ZSBpbnZpc2libGUgcHJpbWFyeSBrZXkuIEF1dG8taW5jcmVtZW50IGNvbHVtbiBhbHJlYWR5IGV4aXN0cy4AQWx0ZXJpbmcgZ2VuZXJhdGVkIGludmlzaWJsZSBwcmltYXJ5IGtleSBjb2x1bW4gJ215X3Jvd19pZCcgaXMgbm90IGFsbG93ZWQuAFBsZWFzZSBkcm9wIHByaW1hcnkga2V5IGNvbHVtbiB0byBiZSBhYmxlIHRvIGRyb3AgZ2VuZXJhdGVkIGludmlzaWJsZSBwcmltYXJ5IGtleS4AR2VuZXJhdGluZyBhbiBpbnZpc2libGUgcHJpbWFyeSBrZXkgZm9yIGEgdGFibGUgY3JlYXRlZCB1c2luZyBDUkVBVEUgVEFCTEUgLi4uIFNFTEVDVCAuLi4gaXMgZGlzYWxsb3dlZCB3aGVuIGJpbmxvZ19mb3JtYXQ9U1RBVEVNRU5ULiBJdCBjYW5ub3QgYmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBTRUxFQ1QgcmV0cmlldmVzIHJvd3MgaW4gdGhlIHNhbWUgb3JkZXIgb24gc291cmNlIGFuZCByZXBsaWNhLiBUaGVyZWZvcmUsIGl0IGNhbm5vdCBiZSBndWFyYW50ZWVkIHRoYXQgdGhlIHZhbHVlIGdlbmVyYXRlZCBmb3IgdGhlIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleSBjb2x1bW4gd2lsbCBiZSB0aGUgc2FtZSBvbiBzb3VyY2UgYW5kIHJlcGxpY2EgZm9yIGFsbCByb3dzLiBVc2UgYmlubG9nX2Zvcm1hdD1ST1cgb3IgTUlYRUQgdG8gZXhlY3V0ZSB0aGlzIHN0YXRlbWVudC4AVGhlIG9wdGlvbiBleHBpcmVfbG9nc19kYXlzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggb3B0aW9uIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzLiBUbyBzZXQgb25lLCBmaXJzdCB1bnNldCB0aGUgb3RoZXIgYnkgc2V0dGluZyBpdCB0byAwLgBSZWN1cnNpdmUgdGFibGUgcmVmZXJlbmNlIGluIEVYQ0VQVCBvciBJTlRFUlNFQ1Qgb3BlcmFuZCBpcyBub3QgYWxsb3dlZC4ARXJyb3Igd2hlbiB0cnlpbmcgdG8gZmV0Y2ggaW5mb3JtYXRpb24gZnJvbSBzZWN1cml0eSBjb250ZXh0IG9iamVjdCwgd2hlbiB0cnlpbmcgdG8gY29ubmVjdCB0aGUgc2VydmVyLgBFcnJvciBpbiBjb21tYW5kIHNlcnZpY2UgYmFja2VuZCBpbnRlcmZhY2UsIGJlY2F1c2Ugb2YgOiAiJXMiAFRoZSBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIGNoYW5uZWwgJyUuMTkycycgd291bGQgbmVlZCBGSUxFIHByaXZpbGVnZSB0byBleGVjdXRlIGEgTE9BRCBEQVRBIElORklMRSBzdGF0ZW1lbnQgcmVwbGljYXRlZCBpbiBzdGF0ZW1lbnQgZm9ybWF0LiBDb25zaWRlciB1c2luZyBiaW5sb2dfZm9ybWF0PVJPVyBvbiBzb3VyY2UuIElmIHRoZSByZXBsaWNhdGVkIGV2ZW50cyBhcmUgdHJ1c3RlZCwgcmVjb3ZlciBmcm9tIHRoZSBmYWlsdXJlIGJ5IHRlbXBvcmFyaWx5IGdyYW50aW5nIEZJTEUgdG8gdGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUi4AVGhlICdTRVQgR0xPQkFMIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnM9JXMnIGNvbW1hbmQgZW5jb3VudGVyZWQgYSBmYWlsdXJlLiAlcwBVc2luZyAlcyBhcyB1bnF1b3RlZCBpZGVudGlmaWVyIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgcXVvdGVzIG9yIHJlbmFtZSB0aGUgaWRlbnRpZmllci4ATWF4IG51bWJlciBvZiBkdXBsaWNhdGUgcm93cyBpbiBJTlRFUlNFQ1QgQUxMIGV4Y2VlZGVkLgBRdWVyeSB0aHJlYWRzIGNvdW50KCV1KSBleGNlZWRzIHRyYW5zYWN0aW9uIHRocmVhZHMgbGltaXQoJXUpIHBlciBncm91cC4gUGxlYXNlIHVzZSBxdWVyeSB0aHJlYWRzIGNvdW50IHBlciBncm91cCBzbWFsbGVyIG9yIGVxdWFsIHRvIG1heCB0cmFuc2FjdGlvbiB0aHJlYWRzIGxpbWl0IHBlciBncm91cABJbnZhbGlkIHRpbWVzdGFtcCBmb3JtYXQgaW4gJXMgdWRmAFNIQVBFX1BSRURJQ1RJT04gVURGICVzIGdvdCBlcnJvciBiZWNhdXNlIG9mICVzLgBIZWlnaHQgcGFyYW1ldGVyIG11c3QgYmUgbm9uIG5lZ2F0aXZlLgBTY2FsaW5nIHBhcmFtZXRlciBtdXN0IGJlIG5vbiBuZWdhdGl2ZS4AWm9uZSB3aWR0aCBwYXJhbWV0ZXIgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMS02MC4ATGF0aXR1ZGUgb2Ygb3JpZ2luIG11c3QgYmUgKy05MCBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQsIGluIFBvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQSkgcHJvamVjdGlvbiBtZXRob2QgKEVQU0c6OTgxMCkuAFRoZSBjbGllbnQgaXMgdXNpbmcgYSBkZXByZWNhdGVkIENMSUVOVF9OT19TQ0hFTUEgY2xpZW50IG9wdGlvbi4gQ0xJRU5UX05PX1NDSEVNQSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVGFibGUgJyUtLjE5MnMnIGlzIG5vdCBlbXB0eS4AVGFibGUgJyUtLjE5MnMnIGhhcyBubyBwcmltYXJ5IGtleS4AVGFibGUgJyUtLjE5MnMnIGlzIGluIGEgc2hhcmVkIHRhYmxlc3BhY2UuAFRhYmxlICclLS4xOTJzJyBoYXMgaW5kZXhlcyBvdGhlciB0aGFuIHByaW1hcnkga2V5LgBbSU4gUFJJTUFSWSBLRVkgT1JERVJdIHNwZWNpZmllZCBidXQgZGF0YSBub3Qgc29ydGVkOiBMT0FEIEJVTEsgREFUQSBpbnRvIHRhYmxlICclLS4xOTJzJyBmYWlsZWQ6ICVzAEJ1bGsgZXhlY3V0b3IgZXJyb3I6ICVzAEJ1bGsgcmVhZGVyIGZhaWxlZCB0byBpbml0aWFsaXplIGxpYmN1cmwAQnVsayByZWFkZXIgZ290IGxpYmN1cmwgZXJyb3I6ICVzAEJ1bGsgcmVhZGVyIGdvdCBlcnJvciByZXNwb25zZSBmcm9tIHNlcnZlcjogJWxkAEJ1bGsgcmVhZGVyIGdvdCBlcnJvciBpbiBjb21tdW5pY2F0aW9uIHdpdGggc291cmNlIHNlcnZlciwgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgBCdWxrIGxvYWRlciBmYWlsZWQsIG15c3FsX2xvYWQtPmxvYWQgcmV0dXJuZWQgYW4gZXJyb3IsIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4AQ1NWIGNvbHVtbiB0b28gYmlnIGZvciBsZWZ0b3ZlciBidWZmZXIuAEJ1bGsgbG9hZGVyIGNvbXBvbmVudCBlcnJvcjogJXMAVGhlIGZpcnN0IGZpbGUgYmVpbmcgbG9hZGVkIGNvbnRhaW5lZCBsZXNzIGxpbmVzIHRoYW4gdGhlIGlnbm9yZSBjbGF1c2UATWlzc2luZyBFTkNMT1NFRCBCWSBjaGFyYWN0ZXIgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIEFkZCBPUFRJT05BTExZIHRvIHRoZSBFTkNMT1NFRCBCWSBjbGF1c2UgdG8gYWxsb3cgdGhpcyBpbnB1dC4AVGhlIG51bWJlciBvZiBpbnB1dCBjb2x1bW5zIHRoYXQgbmVlZCB0byBiZSBidWZmZXJlZCBmb3IgcGFyc2luZyBleGNlZWRlZCBwcmVkZWZpbmVkIGJ1ZmZlciBtYXggc2l6ZSBmb3IgZmlsZSAnJXMnLgBUaGUgY29sdW1uIGRhdGEgdGhhdCBuZWVkZWQgdG8gYmUgY29waWVkIGR1ZSB0byBlc2NhcGVkIGNoYXJhY3RlcnMgZXhjZWVkZWQgdGhlIHNpemUgb2YgdGhlIGludGVybmFsIGNvcHkgYnVmZmVyIGZvciBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCByb3cgdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBlbmRpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgTlVMTCBlc2NhcGUgKE4pIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgY29sdW1uIHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnIHJlc3VsdGluZyBpbiBpbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZS4ATE9BRCBCVUxLIERBVEEgaW50byB0YWJsZSAnJS0uMTkycycgZmFpbGVkOiAlcwBJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycgZm9yIGNvbHVtbiAnJS0uMTkycycgYXQgcm93ICVsZCBpbiBmaWxlICclLS4xOTJzJwBOVUxMIHN1cHBsaWVkIHRvIE5PVCBOVUxMIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycAT24gYSBHcm91cCBSZXBsaWNhdGlvbiBjaGFubmVsLCBzZXR0aW5nIFJFUVVJUkVfVEFCTEVfUFJJTUFSWV9LRVlfQ0hFQ0sgdG8gJ0dFTkVSQVRFJyBpcyBub3QgYWxsb3dlZC4AQ2Fubm90IGNoYW5nZSB0aGUgJyVzJyBzeXN0ZW0gdmFyaWFibGUgaW4gcmVhZC1vbmx5IG1vZGUuAENvbHVtbiBjYW4ndCBiZSBhZGRlZCBvciBkcm9wcGVkIHdpdGggQUxHT1JJVEhNPUlOU1RBTlQgYXMgZWl0aGVyIG1heCBwb3NzaWJsZSByb3cgc2l6ZSBhbHJlYWR5IGNyb3NzZXMgbWF4IHBlcm1pc3NpYmxlIHJvdyBzaXplIG9yIG1heSBjcm9zcyBpdCBhZnRlciBhZGQuIFRyeSBBTEdPUklUSE09SU5QTEFDRS9DT1BZLgBDb2x1bW4gY2FuJ3QgYmUgYWRkZWQgdG8gJyVzJyB3aXRoIEFMR09SSVRITT1JTlNUQU5UIGFueW1vcmUuIFBsZWFzZSB0cnkgQUxHT1JJVEhNPUlOUExBQ0UvQ09QWS4ARmFpbGVkIHRvIHNldCBwZXJzaXN0ZWQgb3B0aW9ucy4AVGhlIHZhbHVlIHN1cHBsaWVkIGZvciAlcyBpbiB0aGUgU0VUIGxpc3QgY2Fubm90IGJlIG51bGwAVGhlIGFzc2lnbm1lbnQgb2YgJXMgaW4gU0VUIGRvZXNuJ3QgbWF0Y2ggYW55IG9mIHRoZSB2YXJpYWJsZXMgcmVnaXN0ZXJlZCBieSB0aGUgY29tcG9uZW50KHMpACclcycgaXMgYSB1c2VyIGRlZmluZWQgY29sbGF0aW9uLiBVc2VyIGRlZmluZWQgY29sbGF0aW9ucyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIGEgY29tcGlsZWQgY29sbGF0aW9uIGluc3RlYWQuAFVzZXItbGV2ZWwgbG9jayBuYW1lICclLS4xOTJzJyBzaG91bGQgbm90IGV4Y2VlZCAlZCBjaGFyYWN0ZXJzLgBJbW1lZGlhdGVseSBzdGFydGluZyB0aGUgdmVyc2lvbiBjb21tZW50IGFmdGVyIHRoZSB2ZXJzaW9uIG51bWJlciBpcyBkZXByZWNhdGVkIGFuZCBtYXkgY2hhbmdlIGJlaGF2aW9yIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBpbnNlcnQgYSB3aGl0ZS1zcGFjZSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIHZlcnNpb24gbnVtYmVyLgBUaGUgbmV3IHBhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCAnJXUnIGNoYXJhY3RlcnMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBwYXNzd29yZC4gSXQgaGFzIG9ubHkgJyV1JyBjaGFyYWN0ZXIocykgZGlmZmVyZW50LiBGb3IgdGhpcyBjb21wYXJpc29uLCB1cHBlcmNhc2UgbGV0dGVycyBhbmQgbG93ZXJjYXNlIGxldHRlcnMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgZXF1YWwuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuICVzAFBhcnNlciBzYXc6ICVzAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIGJvb3RzdHJhcCAoZXJybm86ICVkKQBUcmlnZ2VyIGZvciB0YWJsZSAnJXMnLiclcyc6IGludmFsaWQgJXMgdmFsdWUgKCVzKS4AV3JvbmcgdHJlZTogJXMARXJyb3I6IEludmFsaWQgJXMAU2tpcCByZS1wb3B1bGF0aW5nIGNvbGxhdGlvbnMgYW5kIGNoYXJhY3RlciBzZXRzIHRhYmxlcyBpbiAlcyVzcmVhZC1vbmx5IG1vZGUuAFVzaW5nIGRhdGEgZGljdGlvbmFyeSB3aXRoIHZlcnNpb24gJyVkJy4ASW5zdGFsbGVkIGRhdGEgZGljdGlvbmFyeSB3aXRoIHZlcnNpb24gJWQARGF0YSBEaWN0aW9uYXJ5IHZlcnNpb24gJyVkJyBub3Qgc3VwcG9ydGVkLgBGYWlsZWQgdG8gc2V0IHN5c2xvZyBmYWNpbGl0eSB0byAiJXMiLCBzZXR0aW5nIHRvICIlcyIgKCVkKSBpbnN0ZWFkLgBDYW5ub3Qgb3BlbiAlczsgY2hlY2sgcHJpdmlsZWdlcywgb3IgcmVtb3ZlIHN5c2V2ZW50bG9nIGZyb20gLS1sb2ctZXJyb3Itc2VydmljZXMhACBlaXRoZXIgcmVzdGFydCB0aGUgcXVlcnkgbG9nZ2luZyBieSB1c2luZyAiU0VUIEdMT0JBTCBTTE9XX1FVRVJZX0xPRz1PTiIgb3IAIGVpdGhlciByZXN0YXJ0IHRoZSBxdWVyeSBsb2dnaW5nIGJ5IHVzaW5nICJTRVQgR0xPQkFMIEdFTkVSQUxfTE9HPU9OIiBvcgBGYWlsZWQgdG8gd3JpdGUgdG8gJXM6ICVzAFdoaWxlIGluaXRpYWxpemluZyBkdW1wIHRocmVhZCBmb3IgcmVwbGljYSB3aXRoICVzIDwlcz4sIGZvdW5kIGEgem9tYmllIGR1bXAgdGhyZWFkIHdpdGggdGhlIHNhbWUgJXMuIFNvdXJjZSBpcyBraWxsaW5nIHRoZSB6b21iaWUgZHVtcCB0aHJlYWQoJXUpLgBHdGlkIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBvcGVuZWQuAFN5c3RlbSBzY2hlbWEgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LgBFcnJvciBpbiBpbml0aWFsaXppbmcgZGljdGlvbmFyeSwgdXBncmFkZSB3aWxsIGRvIGEgY2xlYW51cCBhbmQgZXhpdABWaWV3ICclcycuJyVzJzogdW5rbm93biBjaGFyc2V0IG5hbWUgYW5kL29yIGNvbGxhdGlvbiBuYW1lIChjbGllbnQ6ICclcyc7IGNvbm5lY3Rpb246ICclcycpLgBFcnJvciBpbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgY2hhcmFjdGVyIHNldCBuYW1lIGZvciB2aWV3ICVzLiVzLgBEYXRhIERpY3Rpb25hcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBGYWlsZWQgdG8gdXBkYXRlIHBsdWdpbiBtZXRhZGF0YSBpbiBkaWN0aW9uYXJ5IHRhYmxlcy4ARmFpbGVkIHRvIFBvcHVsYXRlIEREIHRhYmxlcy4ARXJyb3IgaW4gQ3JlYXRpbmcgVmlldyAlcy4lcwBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBDYW5ub3QgZmluZCB0aGUgbWV0YSBkYXRhIGZvciBkYXRhIGRpY3Rpb25hcnkgdGFibGUgJyVzJy4ARGljdGlvbmFyeSBjYWNoZSBub3QgZW1wdHkgYXQgc2h1dGRvd24uAERpY3Rpb25hcnkgb2JqZWN0cyB1c2VkIGJ1dCBub3QgcmVsZWFzZWQuAERpY3Rpb25hcnkgb2JqZWN0cyBsZWZ0IGluIGRlZmF1bHQgcmVsZWFzZXIuAERpY3Rpb25hcnkgb2JqZWN0IGF1dG8gcmVsZWFzZXIgbm90IGRlbGV0ZWQARXJyb3I6IFVuYWJsZSB0byBjcmVhdGUgcHJpbWFyeSBvYmplY3Qga2V5AEVycm9yOiBVbmFibGUgdG8gY3JlYXRlIG9iamVjdCBrZXkAQ2FuJ3QgY3JlYXRlIGhhbmRsZV9tYW5hZ2VyIHRocmVhZCAoZXJybm89ICVkKQBJdCBpcyBub3QgcG9zc2libGUgdG8gY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSByZWxheSBsb2cncyByZXBvc2l0b3J5IGJlY2F1c2UgdGhlcmUgYXJlIHdvcmtlcnMnIHJlcG9zaXRvcmllcyB3aXRoIGdhcHMuIFBsZWFzZSwgZml4IHRoZSBnYXBzIGZpcnN0IGJlZm9yZSBkb2luZyBzdWNoIGNoYW5nZS4Ab3B0aW9uICdlbmZvcmNlLWd0aWQtY29uc2lzdGVuY3knOiB2YWx1ZSAnJXMnIHdhcyBub3QgcmVjb2duaXplZC4gU2V0dGluZyBlbmZvcmNlLWd0aWQtY29uc2lzdGVuY3kgdG8gT0ZGLgBDaGFuZ2VkIEVORk9SQ0VfR1RJRF9DT05TSVNURU5DWSBmcm9tICVzIHRvICVzLgBDaGFuZ2VkIEdUSURfTU9ERSBmcm9tICVzIHRvICVzLgAlcyBpcyBzZXQgdG8gYSBkaXNhYmxlZCBzdG9yYWdlIGVuZ2luZSAlcy4ARGVidWcgc3luYyBwb2ludHMgaGl0OiAgICAgICAgICAgICAgICAgICAlMjJzAERlYnVnIHN5bmMgcG9pbnRzIGV4ZWN1dGVkOiAgICAgICAgICAgICAgJTIycwBEZWJ1ZyBzeW5jIHBvaW50cyBtYXggYWN0aXZlIHBlciB0aHJlYWQ6ICUyMnMARGVidWcgU3luYyBGYWNpbGl0eSBkaXNhYmxlZCBkdWUgdG8gbGFjayBvZiBtZW1vcnkuAENhbid0IGluaXQgdGMgbG9nAEV2ZW50IFNjaGVkdWxlcjogQ2FuJ3QgaW5pdGlhbGl6ZSB0aGUgZXhlY3V0aW9uIHF1ZXVlAEV2ZW50IFNjaGVkdWxlcjogUHVyZ2luZyB0aGUgcXVldWUuICV1IGV2ZW50cwBFdmVudCBTY2hlZHVsZXI6IExhc3QgZXhlY3V0aW9uIG9mICVzLiVzLiAlcwAlKnMARXZlbnQgU2NoZWR1bGVyOiBbJXNdLlslcy4lc10gZXZlbnQgZXhlY3V0aW9uIGZhaWxlZC4ARXZlbnQgU2NoZWR1bGVyOiBDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2NoZWR1bGVyIHRocmVhZABFdmVudCBTY2hlZHVsZXI6IFN0b3BwZWQARXZlbnQgc2NoZWR1bGVyOiBGYWlsZWQgdG8gc3RhcnQgc2NoZWR1bGVyLCBDYW4gbm90IGNyZWF0ZSB0aHJlYWQgZm9yIGV2ZW50IHNjaGVkdWxlciAoZXJybm89JWQpAEV2ZW50IFNjaGVkdWxlcjogV2FpdGluZyBmb3IgdGhlIHNjaGVkdWxlciB0aHJlYWQgdG8gcmVwbHkARXZlbnQgU2NoZWR1bGVyOiBzY2hlZHVsZXIgdGhyZWFkIHN0YXJ0ZWQgd2l0aCBpZCAldQBFdmVudCBTY2hlZHVsZXI6IFNlcmlvdXMgZXJyb3IgZHVyaW5nIGdldHRpbmcgbmV4dCBldmVudCB0byBleGVjdXRlLiBTdG9wcGluZwBFdmVudF9zY2hlZHVsZXI6OmV4ZWN1dGVfdG9wOiBDYW4gbm90IGNyZWF0ZSBldmVudCB3b3JrZXIgdGhyZWFkIChlcnJubz0lZCkuIFN0b3BwaW5nIGV2ZW50IHNjaGVkdWxlcgBFdmVudCBTY2hlZHVsZXI6IEtpbGxpbmcgdGhlIHNjaGVkdWxlciB0aHJlYWQsIHRocmVhZCBpZCAldQBJUCBhZGRyZXNzICclcycgY291bGQgbm90IGJlIHJlc29sdmVkOiAlcwBIb3N0IG5hbWUgJyVzJyBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICVzAElQIGFkZHJlc3MgJyVzJyBoYXMgYmVlbiByZXNvbHZlZCB0byB0aGUgaG9zdCBuYW1lICclcycsIHdoaWNoIHJlc2VtYmxlcyBJUHY0LWFkZHJlc3MgaXRzZWxmLgBIb3N0bmFtZSAnJXMnIGRvZXMgbm90IHJlc29sdmUgdG8gJyVzJy4ASG9zdG5hbWUgJyVzJyBoYXMgdGhlIGZvbGxvd2luZyBJUCBhZGRyZXNzZXM6ACAtICVzAERlZmluZXIgY2xhdXNlIGlzIG1pc3NpbmcgaW4gVHJpZ2dlciBvZiBUYWJsZSAlcy4gUmVidWlsZCBUcmlnZ2VyIHRvIGZpeCBkZWZpbmVyLgBDbGllbnQgY2hhcmFjdGVyIHNldCBpcyBtaXNzaW5nIGZvciB0cmlnZ2VyIG9mIHRhYmxlICVzLiBVc2luZyBkZWZhdWx0IGNoYXJhY3RlciBzZXQuAEVycm9yIGluIHBhcnNpbmcgdmlldyAlcy4lcwBGYWlsZWQgdG8gYm9vdHN0cmFwIGNvbXBvbmVudHMgaW5mcmFzdHJ1Y3R1cmUuAEZhaWxlZCB0byBzaHV0ZG93biBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBGYWlsZWQgdG8gYm9vdHN0cmFwIHBlcnNpc3RlbnQgY29tcG9uZW50cyBsb2FkZXIuAEdpdmluZyAlZCBjbGllbnQgdGhyZWFkcyBhIGNoYW5jZSB0byBkaWUgZ3JhY2VmdWxseQBDQSBjZXJ0aWZpY2F0ZSAlcyBpcyBzZWxmIHNpZ25lZC4ARmFpbGVkIHRvIHNldCB1cCBTU0wgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIFNTTCBsaWJyYXJ5IGVycm9yOiAlcwBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBzZXJ2ZXIgVVVJRCBiZWNhdXNlIGl0IGlzIGZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgVEhELgBTYWx0aW5nIHV1aWQgZ2VuZXJhdG9yIHZhcmlhYmxlcywgY3VycmVudF9waWQ6ICVsdSwgc2VydmVyX3N0YXJ0X3RpbWU6ICVsdSwgYnl0ZXNfc2VudDogJWxsdSwgAEdlbmVyYXRlZCB1dWlkOiAnJXMnLCBzZXJ2ZXJfc3RhcnRfdGltZTogJWx1LCBieXRlc19zZW50OiAlbGx1AFRoZSBzZXJ2ZXJfdXVpZCBzdG9yZWQgaW4gYXV0by5jbmYgZmlsZSBpcyBub3QgYSB2YWxpZCBVVUlELgBHYXJiYWdlIGNoYXJhY3RlcnMgZm91bmQgYXQgdGhlIGVuZCBvZiB0aGUgc2VydmVyX3V1aWQgdmFsdWUgaW4gYXV0by5jbmYgZmlsZS4gSXQgc2hvdWxkIGJlIG9mIGxlbmd0aCAnJWQnIChVVUlEX0xFTkdUSCkuIENsZWFyIGl0IGFuZCByZXN0YXJ0IHRoZSBzZXJ2ZXIuIABObyBleGlzdGluZyBVVUlEIGhhcyBiZWVuIGZvdW5kLCBzbyB3ZSBhc3N1bWUgdGhhdCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHRoYXQgdGhpcyBzZXJ2ZXIgaGFzIGJlZW4gc3RhcnRlZC4gR2VuZXJhdGluZyBhIG5ldyBVVUlEOiAlcy4ASW5pdGlhbGl6YXRpb24gb2YgdGhlIHNlcnZlcidzIFVVSUQgZmFpbGVkIGJlY2F1c2UgaXQgY291bGQgbm90IGJlIHJlYWQgZnJvbSB0aGUgYXV0by5jbmYgZmlsZS4gSWYgdGhpcyBpcyBhIG5ldyBzZXJ2ZXIsIHRoZSBpbml0aWFsaXphdGlvbiBmYWlsZWQgYmVjYXVzZSBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdlbmVyYXRlIGEgbmV3IFVVSUQuAFVua25vd24vdW5zdXBwb3J0ZWQgc3RvcmFnZSBlbmdpbmU6ICVzAFVuc3VwcG9ydGVkIHZhbHVlIDAgZm9yIHNlY3VyZS1hdXRoAEludmFsaWQgaW5zdHJ1bWVudCBuYW1lIG9yIHZhbHVlIGZvciBwZXJmb3JtYW5jZV9zY2hlbWFfaW5zdHJ1bWVudCAnJXMnAFRoZSB1c2Ugb2YgSW5ub0RCIGlzIG1hbmRhdG9yeSBzaW5jZSBNeVNRTCA1LjcuIFRoZSBmb3JtZXIgb3B0aW9ucyBsaWtlICctLWlubm9kYj0wLzEvT0ZGL09OJyBvciAnLS1za2lwLWlubm9kYicgYXJlIGlnbm9yZWQuAGlnbm9yZS1idWlsdGluLWlubm9kYiBpcyBpZ25vcmVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHJlbGVhc2VzLgBJbnZhbGlkIG9sZF9wYXNzd29yZHMgbW9kZTogMS4gVmFsaWQgdmFsdWVzIGFyZSAyIGFuZCAwAC0tdmVyYm9zZSBpcyBmb3IgdXNlIHdpdGggLS1oZWxwOyBkaWQgeW91IG1lYW4gLS1sb2ctZXJyb3ItdmVyYm9zaXR5PwBvcHRpb25zIC0tbG9nLXNsb3ctYWRtaW4tc3RhdGVtZW50cywgLS1sb2ctcXVlcmllcy1ub3QtdXNpbmctaW5kZXhlcyBhbmQgLS1sb2ctc2xvdy1yZXBsaWNhLXN0YXRlbWVudHMgaGF2ZSBubyBlZmZlY3QgaWYgLS1zbG93LXF1ZXJ5LWxvZyBpcyBub3Qgc2V0AG5ldF9idWZmZXJfbGVuZ3RoICglbHUpIGlzIHNldCB0byBiZSBsYXJnZXIgdGhhbiBtYXhfYWxsb3dlZF9wYWNrZXQgKCVsdSkuIFBsZWFzZSByZWN0aWZ5LgBUSU1FU1RBTVAgd2l0aCBpbXBsaWNpdCBERUZBVUxUIHZhbHVlIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgLS1leHBsaWNpdF9kZWZhdWx0c19mb3JfdGltZXN0YW1wIHNlcnZlciBvcHRpb24gKHNlZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMpLgBJbnZhbGlkIGZ0LWJvb2xlYW4tc3ludGF4IHN0cmluZzogJXMAJ05PX0FVVE9fQ1JFQVRFX1VTRVInIHNxbCBtb2RlIHdhcyBub3Qgc2V0LgBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBjb25uZWN0aW9uIGhhbmRsaW5nAENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZCBoYW5kbGluZwBDYW4ndCBjcmVhdGUgdGVzdCBmaWxlICVzAENhbid0IHN0YXJ0IHNlcnZlcjogY2FuJ3QgY3JlYXRlIFBJRCBmaWxlOiAlcwBVbmFibGUgdG8gZGVsZXRlIHBpZCBmaWxlOiAlcwBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBzaHV0ZG93biByZXF1ZXN0cyAoZXJybm89ICVkKQBGYWlsZWQgdG8gYWNjZXNzIGRpcmVjdG9yeSBmb3IgLS1zZWN1cmUtZmlsZS1wcml2LiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMgYWNjZXNzaWJsZSBieSBNeVNRTCBTZXJ2ZXIuIFN1cHBsaWVkIHZhbHVlIDogJXMASWdub3JpbmcgLS1zZWN1cmUtZmlsZS1wcml2IHZhbHVlIGFzIHNlcnZlciBpcyBydW5uaW5nIHdpdGggLS1pbml0aWFsaXplKC1pbnNlY3VyZSkuAEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tc2VjdXJlLWZpbGUtcHJpdjogQ3VycmVudCB2YWx1ZSBkb2VzIG5vdCByZXN0cmljdCBsb2NhdGlvbiBvZiBnZW5lcmF0ZWQgZmlsZXMuIENvbnNpZGVyIHNldHRpbmcgaXQgdG8gYSB2YWxpZCwgbm9uLWVtcHR5IHBhdGguAC0tc2VjdXJlLWZpbGUtcHJpdiBpcyBzZXQgdG8gTlVMTC4gT3BlcmF0aW9ucyByZWxhdGVkIHRvIGltcG9ydGluZyBhbmQgZXhwb3J0aW5nIGRhdGEgYXJlIGRpc2FibGVkAEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tc2VjdXJlLWZpbGUtcHJpdjogJXMgaXMgYWNjZXNzaWJsZSB0aHJvdWdoIC0tc2VjdXJlLWZpbGUtcHJpdi4gQ29uc2lkZXIgY2hvb3NpbmcgYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgBGYWlsZWQgdG8gZ2V0IHN0YXQgZm9yIGRpcmVjdG9yeSBwb2ludGVkIG91dCBieSAtLXNlY3VyZS1maWxlLXByaXYASW5zZWN1cmUgY29uZmlndXJhdGlvbiBmb3IgLS1zZWN1cmUtZmlsZS1wcml2OiBMb2NhdGlvbiBpcyBhY2Nlc3NpYmxlIHRvIGFsbCBPUyB1c2Vycy4gQ29uc2lkZXIgY2hvb3NpbmcgYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgBWYWx1ZSBmb3IgLS1zZWN1cmUtZmlsZS1wcml2IGlzIGxvbmdlciB0aGFuIG1heGltdW0gbGltaXQgb2YgJWQAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgbmFtZWQgcGlwZXMgKGVycm5vPSAlZCkAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgVENQL0lQIChlcnJubz0gJWQpAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIHNoYXJlZCBtZW1vcnkgKGVycm5vPSAlZCkAQ2FuJ3QgY3JlYXRlIGludGVycnVwdC10aHJlYWQgKGVycm9yICVkLCBlcnJubzogJWQpAFdvcmxkLXdyaXRhYmxlIGNvbmZpZyBmaWxlICclcycgaGFzIGJlZW4gcmVtb3ZlZC4Ac2V0cmxpbWl0IGNvdWxkIG5vdCBjaGFuZ2UgdGhlIHNpemUgb2YgY29yZSBmaWxlcyB0byAnaW5maW5pdHknOyAgV2UgbWF5IG5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIGEgY29yZSBmaWxlIG9uIHNpZ25hbHMAV3JvbmcgZGF0ZS90aW1lIGZvcm1hdCBzcGVjaWZpZXI6ICVzAENvdWxkIG5vdCBhbGxvY2F0ZSByZXBsaWNhdGlvbiBhbmQgYmlubG9nIGZpbHRlcnM6ICVzAENhbm5vdCBhbGxvY2F0ZSB0aGUga2V5Y2FjaGUAQ3VycmVudCB0aW1lIGhhcyBnb3QgcGFzdCB5ZWFyIDIwMzguIFZhbGlkYXRpbmcgY3VycmVudCB0aW1lIHdpdGggJWQgaXRlcmF0aW9ucyBiZWZvcmUgaW5pdGlhdGluZyB0aGUgbm9ybWFsIHNlcnZlciBzaHV0ZG93biBwcm9jZXNzLgBJdGVyYXRpb24gJWQ6IE9idGFpbmVkIHZhbGlkIGN1cnJlbnQgdGltZSBmcm9tIHN5c3RlbQBJdGVyYXRpb24gJWQ6IEN1cnJlbnQgdGltZSBvYnRhaW5lZCBmcm9tIHN5c3RlbSBpcyBncmVhdGVyIHRoYW4gMjAzOABUaGlzIE15U1FMIHNlcnZlciBkb2Vzbid0IHN1cHBvcnQgZGF0ZXMgbGF0ZXIgdGhlbiAyMDM4ACVzIChteXNxbGQgJXMpIHN0YXJ0aW5nIGFzIHByb2Nlc3MgJWx1AFNodXR0aW5nIGRvd24gcmVwbGljYSB0aHJlYWRzAEZvcmNlZnVsbHkgZGlzY29ubmVjdGluZyAlZCByZW1haW5pbmcgY2xpZW50cwBBYm9ydGluZwBCaW5sb2cgZW5kAGdldGhvc3RuYW1lIGZhaWxlZCwgdXNpbmcgJyVzJyBhcyBob3N0bmFtZQBPbmUgY2FuIG9ubHkgdXNlIHRoZSAtLXVzZXIgc3dpdGNoIGlmIHJ1bm5pbmcgYXMgcm9vdABGYXRhbCBlcnJvcjogUGxlYXNlIHJlYWQgIlNlY3VyaXR5IiBzZWN0aW9uIG9mIHRoZSBtYW51YWwgdG8gZmluZCBvdXQgaG93IHRvIHJ1biBteXNxbGQgYXMgcm9vdCEARmF0YWwgZXJyb3I6IENhbid0IGNoYW5nZSB0byBydW4gYXMgdXNlciAnJXMnIDsgIFBsZWFzZSBjaGVjayB0aGF0IHRoZSB1c2VyIGV4aXN0cyEAU2VydmVyIGlzIHN0YXJ0ZWQgd2l0aCAtLXJlcXVpcmUtc2VjdXJlLXRyYW5zcG9ydD1PTiBidXQgbm8gc2VjdXJlIHRyYW5zcG9ydHMgKFNTTCBvciBTaGFyZWQgTWVtb3J5KSBhcmUgY29uZmlndXJlZC4Ac2V0Z2lkOiAlcwBzZXR1aWQ6ICVzAHNldHJlZ2lkOiAlcwBzZXRyZXVpZDogJXMAY2hyb290OiAlcwBUQ1AvSVAsIC0tc2hhcmVkLW1lbW9yeSwgb3IgLS1uYW1lZC1waXBlIHNob3VsZCBiZSBjb25maWd1cmVkIG9uIE5UIE9TAENUUkwtQyBpZ25vcmVkIGR1cmluZyBzdGFydHVwACclcycgY2FuIG5vdCBiZSB1c2VkIGFzIGNsaWVudCBjaGFyYWN0ZXIgc2V0LiAnJXMnIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0IGNsaWVudCBjaGFyYWN0ZXIgc2V0LgBPdXQgb2YgbWVtb3J5AEZhaWxlZCB0byBsb2NrIG1lbW9yeS4gRXJybm86ICVkAG15X2luaXQoKSBmYWlsZWQuAEV4ZWN1dGlvbiBvZiBpbml0X2ZpbGUgJyVzJyBzdGFydGVkLgBFeGVjdXRpb24gb2YgaW5pdF9maWxlICclcycgZW5kZWQuAENoYW5nZWQgbGltaXRzOiBtYXhfb3Blbl9maWxlczogJWx1IChyZXF1ZXN0ZWQgJWx1KQBDb3VsZCBub3QgaW5jcmVhc2UgbnVtYmVyIG9mIG1heF9vcGVuX2ZpbGVzIHRvIG1vcmUgdGhhbiAlbHUgKHJlcXVlc3Q6ICVsdSkAQ2hhbmdlZCBsaW1pdHM6IG1heF9jb25uZWN0aW9uczogJWx1IChyZXF1ZXN0ZWQgJWx1KQBDaGFuZ2VkIGxpbWl0czogdGFibGVfb3Blbl9jYWNoZTogJWx1IChyZXF1ZXN0ZWQgJWx1KQBJZ25vcmluZyB1c2VyIGNoYW5nZSB0byAnJXMnIGJlY2F1c2UgdGhlIHVzZXIgd2FzIHNldCB0byAnJXMnIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZQBDb3VsZCBub3QgYWRkIGRvIHRhYmxlIHJ1bGUgJyVzJyEAQ291bGQgbm90IGFkZCBpZ25vcmUgdGFibGUgcnVsZSAnJXMnIQBUaGUgdmFyaWFibGUgc2Vzc2lvbl90cmFja19zeXN0ZW1fdmFyaWFibGVzIGVpdGhlciBoYXMgZHVwbGljYXRlIHZhbHVlcyBvciBpbnZhbGlkIHZhbHVlcy4AVG9vIG1hbnkgYXJndW1lbnRzIChmaXJzdCBleHRyYSBpcyAnJXMnKS4AVXNlIC0tdmVyYm9zZSAtLWhlbHAgdG8gZ2V0IGEgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucyEAVW5hYmxlIHRvIHJlYWQgZXJybXNnLnN5cyBmaWxlAENhbid0IGluaXQgZGF0YWJhc2VzAFRoZXJlIHdlcmUgb3RoZXIgdmFsdWVzIHNwZWNpZmllZCB0byBsb2ctb3V0cHV0IGJlc2lkZXMgTk9ORS4gRGlzYWJsaW5nIHNsb3cgYW5kIGdlbmVyYWwgbG9ncyBhbnl3YXkuAENTViBlbmdpbmUgaXMgbm90IHByZXNlbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgbG9nIGZpbGVzAEJhZCBzeW50YXggaW4gcmVwbGljYXRlLXJld3JpdGUtZGIgLSBtaXNzaW5nICctPichAEJhZCBzeW50YXggaW4gcmVwbGljYXRlLXJld3JpdGUtZGIgLSBlbXB0eSBGUk9NIGRiIQBCYWQgc3ludGF4IGluIHJlcGxpY2F0ZS1yZXdyaXRlLWRiIC0gZW1wdHkgVE8gZGIhAEFsdGhvdWdoIGEgcGF0aCB3YXMgc3BlY2lmaWVkIGZvciB0aGUgJXMsIGxvZyB0YWJsZXMgYXJlIHVzZWQuIFRvIGVuYWJsZSBsb2dnaW5nIHRvIGZpbGVzIHVzZSB0aGUgLS1sb2ctb3V0cHV0PWZpbGUgb3B0aW9uLgBJbnZhbGlkIHZhbHVlIGZvciAlczogJXMAVGhlIHNlcnZlciBvcHRpb24gJ2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMnIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGNhc2Ugc2Vuc2l0aXZlIHRhYmxlIG5hbWVzIGJ1dCB0aGUgZGF0YSBkaXJlY3RvcnkgaXMgb24gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtIHdoaWNoIGlzIGFuIHVuc3VwcG9ydGVkIGNvbWJpbmF0aW9uLiBQbGVhc2UgY29uc2lkZXIgZWl0aGVyIHVzaW5nIGEgY2FzZSBzZW5zaXRpdmUgZmlsZSBzeXN0ZW0gZm9yIHlvdXIgZGF0YSBkaXJlY3Rvcnkgb3Igc3dpdGNoaW5nIHRvIGEgY2FzZS1pbnNlbnNpdGl2ZSB0YWJsZSBuYW1lIG1vZGUuAFNldHRpbmcgbG93ZXJfY2FzZV90YWJsZV9uYW1lcz0yIGJlY2F1c2UgZmlsZSBzeXN0ZW0gZm9yICVzIGlzIGNhc2UgaW5zZW5zaXRpdmUAbG93ZXJfY2FzZV90YWJsZV9uYW1lcyB3YXMgc2V0IHRvIDIsIGV2ZW4gdGhvdWdoIHlvdXIgdGhlIGZpbGUgc3lzdGVtICclcycgaXMgY2FzZSBzZW5zaXRpdmUuICBOb3cgc2V0dGluZyBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHRvIDAgdG8gYXZvaWQgZnV0dXJlIHByb2JsZW1zLgBZb3UgbmVlZCB0byB1c2UgLS1sb2ctYmluIHRvIG1ha2UgJXMgd29yay4AUGF0aCAnJXMnIGlzIGEgZGlyZWN0b3J5IG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGZvciAlcyBvcHRpb24ATm8gYXJndW1lbnQgd2FzIHByb3ZpZGVkIHRvIC0tbG9nLWJpbiwgYW5kIC0tbG9nLWJpbi1pbmRleCB3YXMgbm90IHVzZWQ7IHNvIHJlcGxpY2F0aW9uIG1heSBicmVhayB3aGVuIHRoaXMgTXlTUUwgc2VydmVyIGFjdHMgYXMgYSBzb3VyY2UgYW5kIGhhcyBoaXMgaG9zdG5hbWUgY2hhbmdlZCEhIFBsZWFzZSB1c2UgJy0tbG9nLWJpbj0lcycgdG8gYXZvaWQgdGhpcyBwcm9ibGVtLgBZb3UgaGF2ZSBlbmFibGVkIHRoZSBiaW5hcnkgbG9nLCBidXQgeW91IGhhdmVuJ3QgcHJvdmlkZWQgdGhlIG1hbmRhdG9yeSBzZXJ2ZXItaWQuIFBsZWFzZSByZWZlciB0byB0aGUgcHJvcGVyIHNlcnZlciBzdGFydC11cCBwYXJhbWV0ZXJzIGRvY3VtZW50YXRpb24AVW5hYmxlIHRvIGNyZWF0ZSByZXBsaWNhdGlvbiBwYXRoIG5hbWVzOiBvdXQgb2YgbWVtb3J5IG9yIHBhdGggbmFtZXMgdG9vIGxvbmcgKHBhdGggbmFtZSBleGNlZWRzICVkIG9yIGZpbGUgbmFtZSBleGNlZWRzICVkKS4ARmFpbGVkIHRvIGluaXRpYWxpemUgR1RJRCBzdHJ1Y3R1cmVzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBlYXJseSBwbHVnaW5zLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBidWlsdGluIHBsdWdpbnMuAEZhaWxlZCB0byBpbml0aWFsaXplIGR5bmFtaWMgcGx1Z2lucy4AUGVyZm9ybWFuY2Ugc2NoZW1hIGRpc2FibGVkIChyZWFzb246IGluaXQgZmFpbGVkKS4AQXNrZWQgZm9yICVsdSB0aHJlYWQgc3RhY2ssIGJ1dCBnb3QgJWxkAGZhaWxlZCB0byBzZXQgZGF0YWRpciB0byAlcwBDYW4ndCByZWFkIGRhdGEgZGlyZWN0b3J5J3Mgc3RhdHMgKCVkKTogJXMuIEFzc3VtaW5nIHRoYXQgaXQncyBub3Qgb3duZWQgYnkgdGhlIHNhbWUgdXNlci9ncm91cABDYW4ndCBjaGFuZ2UgZGF0YSBkaXJlY3Rvcnkgb3duZXIgdG8gJXMAU2V0dGluZyBwZXJzaXN0ZW50IG9wdGlvbnMgZmFpbGVkLgBGYWlsZWQgdG8gc2F2ZSB0aGUgc2V0IG9mIEdsb2JhbCBUcmFuc2FjdGlvbiBJZGVudGlmaWVycyBvZiB0aGUgbGFzdCBiaW5hcnkgbG9nIGludG8gdGhlIG15c3FsLmd0aWRfZXhlY3V0ZWQgdGFibGUgd2hpbGUgdGhlIHNlcnZlciB3YXMgc2h1dHRpbmcgZG93bi4gVGhlIG5leHQgc2VydmVyIHJlc3RhcnQgd2lsbCBtYWtlIGFub3RoZXIgYXR0ZW1wdCB0byBzYXZlIEdsb2JhbCBUcmFuc2FjdGlvbiBJZGVudGlmaWVycyBpbnRvIHRoZSB0YWJsZS4AQ2FuJ3Qgc3RhcnQgc2VydmVyOiBJbnZhbGlkIHZhbHVlIGZvciAtLWRlZmF1bHQtYXV0aGVudGljYXRpb24tcGx1Z2luAENvdWxkIG5vdCBqb2luICVzdGhyZWFkLiBlcnJvcjolZABBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBidWlsZGluZyBkb190YWJsZSBhbmQgaWdub3JlX3RhYmxlIHJ1bGVzIHRvIGhhc2hlcyBmb3IgZ2xvYmFsIHJlcGxpY2F0aW9uIGZpbHRlci4ARXJyb3Igb3BlbmluZyBDQSBjZXJ0aWZpY2F0ZSBmaWxlAEVycm9yIGFjY2Vzc2luZyBkaXJlY3RvcnkgcG9pbnRlZCBieSAtLXNzbC1jYXBhdGgARm91bmQgJXMsICVzIGFuZCAlcyBpbiBkYXRhIGRpcmVjdG9yeS4gVHJ5aW5nIHRvIGVuYWJsZSBTU0wgc3VwcG9ydCB1c2luZyB0aGVtLgBGYWlsZWQgdG8gY3JlYXRlICVzKGZpbGU6ICclcycsIGVycm5vICVkKQBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aW1lciBjb21wb25lbnQgKGVycm5vICVkKS4Ac2VydmVyLWlkIGNvbmZpZ3VyZWQgaXMgdG9vIGxhcmdlIHRvIHJlcHJlc2VudCB3aXRoIHNlcnZlci1pZC1iaXRzIGNvbmZpZ3VyZWQuAERlZmF1bHQlcyBzdG9yYWdlIGVuZ2luZSAoJXMpIGlzIG5vdCBhdmFpbGFibGUAQ291bGQgbm90IG9wZW4gZmlsZSAnJXMnIGZvciBlcnJvciBsb2dnaW5nJXMlcwBJbnZhbGlkIGxvZyBmaWxlIG5hbWUgYWZ0ZXIgZXhwYW5kaW5nIHN5bWxpbmtzOiAnJXMnAHVzaW5nIC0tcmVwbGljYXRlLXNhbWUtc2VydmVyLWlkIGluIGNvbmp1bmN0aW9uIHdpdGggLS1sb2ctcmVwbGljYS11cGRhdGVzIGlzIGltcG9zc2libGUsIGl0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgbG9vcHMgaW4gdGhpcyBzZXJ2ZXIuAHVzaW5nIC0tcmVwbGljYXRlLXNhbWUtc2VydmVyLWlkIGluIGNvbmp1bmN0aW9uIHdpdGggLS1sb2ctcmVwbGljYS11cGRhdGVzIHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgbG9vcHMgaW4gdGhpcyBzZXJ2ZXIuIEhvd2V2ZXIgdGhpcyB3aWxsIGJlIGlnbm9yZWQgYXMgdGhlIC0tbG9nLWJpbiBvcHRpb24gaXMgbm90IGRlZmluZWQgb3IgeW91ciBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIGdsb2JhbCB0cmFuc2FjdGlvbiBpZGVudGllcnMgZW5hYmxlZC4ATkRCIDogVGFibGVzIG5vdCBhdmFpbGFibGUgYWZ0ZXIgJWx1IHNlY29uZHMuIENvbnNpZGVyIGluY3JlYXNpbmcgLS1uZGItd2FpdC1zZXR1cCB2YWx1ZQAlcwBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlc3BhY2UgJyVzJyBkb2VzIG5vdCBleGlzdC4AQ29ubmVjdGlvbiBjb2xsYXRpb24gaXMgbWlzc2luZyBmb3IgdHJpZ2dlciBvZiB0YWJsZSAlcy4gVXNpbmcgZGVmYXVsdCBjb25uZWN0aW9uIGNvbGxhdGlvbi4ARGF0YWJhc2UgY29sbGF0aW9uIGlzIG1pc3NpbmcgZm9yIHRyaWdnZXIgb2YgdGFibGUgJXMuIFVzaW5nIERlZmF1bHQgY2hhcmFjdGVyIHNldC4ARXJyb3IgaW4gTWVtb3J5IGFsbG9jYXRpb24gZm9yIERlZmluZXIgJXMgZm9yIFRyaWdnZXIuAEVycm9yIGluIHJlYWRpbmcgJXMuVFJHIGZpbGUuAEVycm9yIGluIHBhcnNpbmcgVHJpZ2dlcnMgZnJvbSAlcy5UUkcgZmlsZS4ARXJyb3IgaW4gY3JlYXRpbmcgREQgZW50cnkgZm9yIFRyaWdnZXIgJXMuJXMAUmVzb2x2aW5nIGRlcGVuZGVuY3kgZm9yIHRoZSB2aWV3ICclcy4lcycgZmFpbGVkLiBWaWV3IGlzIG5vIG1vcmUgdmFsaWQgdG8gdXNlACVzLiVzIGhhcyBubyBkZWZpbmVyIChhcyBwZXIgYW4gb2xkIHZpZXcgZm9ybWF0KS4gQ3VycmVudCB1c2VyIGlzIHVzZWQgYXMgZGVmaW5lci4gUGxlYXNlIHJlY3JlYXRlIHRoZSB2aWV3LgBQbHVnaW4gJyVzJyBpbml0IGZ1bmN0aW9uIHJldHVybmVkIGVycm9yLgBJbml0aWFsaXphdGlvbiBvZiB0cmFuc2FjdGlvbiBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBJbml0aWFsaXphdGlvbiBiaW5sb2cgc3RvcmFnZSBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBJbml0aWFsaXphdGlvbiBvZiBiaW5sb2cgdHJhbnNtaXQgZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4ASW5pdGlhbGl6YXRpb24gYmlubG9nIHJlbGF5IElPIGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAFJ1biBmdW5jdGlvbiAnLi4uJyBpbiBwbHVnaW4gJyVzJyBmYWlsZWQAbXlzcWxfaGFfcmVhZDogR290IGVycm9yICVkIHdoZW4gcmVhZGluZyB0YWJsZSAnJXMnAFN0b3JlZCByb3V0aW5lICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gJXMuAEludmFsaWQgY3JlYXRpb24gY29udGV4dCAnJXMuJXMnLgBHb3QgZXJyb3IgJWQgd2hlbiByZWFkaW5nIHRhYmxlICclcycAbG9hZF9kZXNfZmlsZTogIEZvdW5kIHdyb25nIGtleV9udW1iZXI6ICVjAEZhaWxlZCB0byBzZXQgcGVyc2lzdGVkIG9wdGlvbnMuAFBlcnNpc3RlZCBjb25maWcgZmlsZSBpcyBjb3JydXB0LiBQbGVhc2UgZW5zdXJlIG15c3FsZC1hdXRvLmNuZiBmaWxlIGlzIHZhbGlkIEpTT04uAEZvdW5kIG9wdGlvbiB3aXRob3V0IHByZWNlZGluZyBncm91cCBpbiBjb25maWcgZmlsZQBWQUxHUklORF9ET19RVUlDS19MRUFLX0NIRUNLAFZBTEdSSU5EX0NPVU5UX0xFQUtTIHJlcG9ydHMgJWx1IGxlYWtlZCBieXRlcyBmb3IgcXVlcnkgJyUuKnMnAExPQUQgREFUQSBJTkZJTEUgaW4gdGhlIHJlcGxpY2EgU1FMIFRocmVhZCBjYW4gb25seSByZWFkIGZyb20gLS1yZXBsaWNhLWxvYWQtdG1wZGlyLiBQbGVhc2UsIHJlcG9ydCBhIGJ1Zy4AR290IHVua25vd24gZXJyb3I6ICVkAENhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdWRmIHN0cnVjdHVyZXMAQ2FuJ3QgYWxsb2MgbWVtb3J5IGZvciB1ZGYgZnVuY3Rpb246ICclLjY0cycASW52YWxpZCByb3cgaW4gbXlzcWwuZnVuYyB0YWJsZSBmb3IgZnVuY3Rpb24gJyUuNjRzJwBDb3VsZCBub3Qgb3BlbiB0aGUgbXlzcWwuZnVuYyB0YWJsZS4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBGb3VuZCAlZCBwcmVwYXJlZCB0cmFuc2FjdGlvbihzKSBpbiAlcwBGb3VuZCAlZCBwcmVwYXJlZCBYQSB0cmFuc2FjdGlvbnMAaWdub3JlIHhpZCAlcwBjb21taXQgeGlkICVzAHJvbGxiYWNrIHhpZCAlcwBTdGFydGluZyBYQSBjcmFzaCByZWNvdmVyeS4uLgAtLXRjLWhldXJpc3RpYy1yZWNvdmVyIHJvbGxiYWNrIHN0cmF0ZWd5IGlzIG5vdCBzYWZlIG9uIHN5c3RlbXMgd2l0aCBtb3JlIHRoYW4gb25lIDItcGhhc2UtY29tbWl0LWNhcGFibGUgc3RvcmFnZSBlbmdpbmUuIEFib3J0aW5nIGNyYXNoIHJlY292ZXJ5LgBGb3VuZCAlZCBwcmVwYXJlZCB0cmFuc2FjdGlvbnMhIEl0IG1lYW5zIHRoYXQgbXlzcWxkIHdhcyBub3Qgc2h1dCBkb3duIHByb3Blcmx5IGxhc3QgdGltZSBhbmQgY3JpdGljYWwgcmVjb3ZlcnkgaW5mb3JtYXRpb24gKGxhc3QgYmlubG9nIG9yICVzIGZpbGUpIHdhcyBtYW51YWxseSBkZWxldGVkIGFmdGVyIGEgY3Jhc2guIFlvdSBoYXZlIHRvIHN0YXJ0IG15c3FsZCB3aXRoIC0tdGMtaGV1cmlzdGljLXJlY292ZXIgc3dpdGNoIHRvIGNvbW1pdCBvciByb2xsYmFjayBwZW5kaW5nIHRyYW5zYWN0aW9ucy4AWEEgY3Jhc2ggcmVjb3ZlcnkgZmluaXNoZWQuAEZhaWxlZCB0byBjb2xsZWN0IEdUSUQgdG8gc2VuZCBpbiB0aGUgcmVzcG9uc2UgcGFja2V0IQBNWVNRTC5ERUZBVUxUX1JPTEVTIGNvdWxkbid0IGJlIHVwZGF0ZWQgZm9yIGF1dGhvcml6YXRpb24gaWRlbnRpZmllciAlcwBGb2xsb3dpbmcgdXNlcnMgd2VyZSBzcGVjaWZpZWQgaW4gQ1JFQVRFIFVTRVIgSUYgTk9UIEVYSVNUUyBidXQgdGhleSBhbHJlYWR5IGV4aXN0LiBDb3JyZXNwb25kaW5nIGVudHJ5IGluIGJpbmFyeSBsb2cgdXNlZCBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAnJXMnIHRvIHJld3JpdGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gKGlmIGFueSkgZm9yIHRoZW06ICVzAEZvbGxvd2luZyB1c2VycyB3ZXJlIHNwZWNpZmllZCBpbiBBTFRFUiBVU0VSIElGIEVYSVNUUyBidXQgdGhleSBkbyBub3QgZXhpc3QuIENvcnJlc3BvbmRpbmcgZW50cnkgaW4gYmluYXJ5IGxvZyB1c2VkIGRlZmF1bHQgYXV0aGVudGljYXRpb24gcGx1Z2luICclcycgdG8gcmV3cml0ZSBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiAoaWYgYW55KSBmb3IgdGhlbTogJXMAVGFibGUgJyUtMTkycycgY29ycnVwdGVkOiByb3cgaW4gd3JvbmcgcGFydGl0aW9uOiAlcyAtLSBQbGVhc2UgUkVQQUlSIHRoZSB0YWJsZSEAR290IGFuIGVycm9yIGZyb20gdGhyZWFkX2lkPSV1LCAlczolZABHb3QgYW4gZXJyb3IgZnJvbSB1bmtub3duIHRocmVhZCwgJXM6JWQAVG9vIG1hbnkgc3RvcmFnZSBlbmdpbmVzIQBTdG9yYWdlIGVuZ2luZSAnJXMnIGhhcyBjb25mbGljdGluZyB0eXBlY29kZS4gQXNzaWduaW5nIHZhbHVlICVkLgBPdXQgb2YgbWVtb3J5IG9uIHRyYW5zYWN0aW9uIHdyaXRlIHNldCBleHRyYWN0aW9uAFVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHBsdWdpbiAnJXMnIGhhbmRsZXJ0b24uAFNoYXJlZCBtZW1vcnkgc2V0dGluZyB1cCBsaXN0ZW5lcgBDYW4ndCBjcmVhdGUgc2hhcmVkIG1lbW9yeSBzZXJ2aWNlOiAlcy4gOiAlcwBDYW4ndCBjcmVhdGUgc2hhcmVkIG1lbW9yeSBjb25uZWN0aW9uOiAlcy4gOiAlcwBDYW4ndCBjcmVhdGUgZXZlbnQsIGxhc3QgZXJyb3I9JXUAQ2FuJ3QgY3JlYXRlIG5ldyBuYW1lZCBwaXBlITogJXMAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgbmV3IGNvbm5lY3Rpb24oZXJybm89ICVkKQBGYWlsZWQgdG8gY3JlYXRlIGEgc29ja2V0IGZvciAlcyAnJXMnOiBlcnJubzogJWQuAFNlcnZlciBzb2NrZXQgY3JlYXRlZCBvbiBJUDogJyVzJy4AU2VydmVyIGhvc3RuYW1lIChiaW5kLWFkZHJlc3MpOiAnJXMnOyBwb3J0OiAlZABJUHY2IGlzIGF2YWlsYWJsZS4ASVB2NiBpcyBub3QgYXZhaWxhYmxlLgBDYW4ndCBjcmVhdGUgSVAgc29ja2V0OiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXI6IGNhbm5vdCByZXNvbHZlIGhvc3RuYW1lIQBEbyB5b3UgYWxyZWFkeSBoYXZlIGFub3RoZXIgbXlzcWxkIHNlcnZlciBydW5uaW5nIG9uIHBvcnQ6ICVkID8ARG8geW91IGFscmVhZHkgaGF2ZSBhbm90aGVyIG15c3FsZCBzZXJ2ZXIgcnVubmluZyBvbiBzb2NrZXQ6ICVzID8AQW5vdGhlciBwcm9jZXNzIHdpdGggcGlkICVkIGlzIHVzaW5nIHVuaXggc29ja2V0IGZpbGUuAEZhaWxlZCB0byByZXNldCBJUFY2X1Y2T05MWSBmbGFnIChlcnJvcjogJWQpLiBUaGUgc2VydmVyIHdpbGwgbGlzdGVuIHRvIElQdjYgYWRkcmVzc2VzIG9ubHkuAFJldHJ5aW5nIGJpbmQgb24gVENQL0lQIHBvcnQgJXUAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBCaW5kIG9uIFRDUC9JUCBwb3J0OiAlcwBGYWlscyB0byBwcmludCBvdXQgSVAtYWRkcmVzcy4AICAtICclcycgcmVzb2x2ZXMgdG8gJyVzJzsAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBsaXN0ZW4oKSBvbiBUQ1AvSVAgcG9ydDogJXMAbGlzdGVuKCkgb24gVENQL0lQIGZhaWxlZCB3aXRoIGVycm9yICVkAFRoZSBzb2NrZXQgZmlsZSBwYXRoIGlzIHRvbyBsb25nICg+ICV1KTogJXMAVW5hYmxlIHRvIHNldHVwIHVuaXggc29ja2V0IGxvY2sgZmlsZS4AQ2FuJ3Qgc3RhcnQgc2VydmVyOiBVTklYIFNvY2tldCA6ICVzAENhbid0IHN0YXJ0IHNlcnZlciA6IEJpbmQgb24gdW5peCBzb2NrZXQ6ICVzAGxpc3RlbigpIG9uIFVuaXggc29ja2V0IGZhaWxlZCB3aXRoIGVycm9yICVkAFVuYWJsZSB0byBjcmVhdGUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGFmdGVyIHJldHJpZXMuAENvdWxkIG5vdCBjcmVhdGUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBDb3VsZCBub3Qgb3BlbiB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAENvdWxkIG5vdCByZWFkIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AVW5peCBzb2NrZXQgbG9jayBmaWxlIGlzIGVtcHR5ICVzLgBJbnZhbGlkIHBpZCBpbiB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAENvdWxkIG5vdCB3cml0ZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgZXJybm8gJWQuAENvdWxkIG5vdCByZW1vdmUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBDb3VsZCBub3Qgc3luYyB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgZXJybm8gJWQuAENvdWxkIG5vdCBjbG9zZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgZXJybm8gJWQuAG15c3FsZDogR290IGVycm9yICVkIGZyb20gc2VsZWN0AEVycm9yIGluIGFjY2VwdDogJXMAUlNBICVzIGtleSBmaWxlIG5vdCBmb3VuZDogJXMuIFNvbWUgYXV0aGVudGljYXRpb24gcGx1Z2lucyB3aWxsIG5vdCB3b3JrLgBGYWlsdXJlIHRvIHBhcnNlIFJTQSAlcyBrZXkgKGZpbGUgZXhpc3RzKTogJXM6ICVzAEZhaWx1cmUgdG8gcmVhZCBrZXkgZmlsZTogJXMAUlNBIGtleSBmaWxlcyBub3QgZm91bmQuIFNvbWUgYXV0aGVudGljYXRpb24gcGx1Z2lucyB3aWxsIG5vdCB3b3JrLgBDb25uZWN0aW9uIGF0dHJpYnV0ZXMgb2YgbGVuZ3RoICVsdSB3ZXJlIHRydW5jYXRlZCAoJWQgYnl0ZXMgbG9zdCkgZm9yIGNvbm5lY3Rpb24gJWxsdSwgdXNlciAlc0AlcyAoYXMgJXMpLCBhdXRoOiAlcwBYLjUwOSBjaXBoZXJzIG1pc21hdGNoOiBzaG91bGQgYmUgJyVzJyBidXQgaXMgJyVzJwBYLjUwOSBpc3N1ZXIgbWlzbWF0Y2g6IHNob3VsZCBiZSAnJXMnIGJ1dCBpcyAnJXMnAFguNTA5IHN1YmplY3QgbWlzbWF0Y2g6IHNob3VsZCBiZSAnJXMnIGJ1dCBpcyAnJXMnAEZhaWxlZCB0byBhY3RpdmF0ZSBkZWZhdWx0IHJvbGUgJXMgZm9yICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBSU0EgcHJpdmF0ZSBrZXkgcmVxdWlyZWQgZm9yIFguNTA5IGNlcnRpZmljYXRlLgBDb3VsZCBub3Qgd3JpdGUga2V5IGZpbGU6ICVzAENvdWxkIG5vdCBzZXQgZmlsZSBwZXJtaXNzaW9uIGZvciAlcwBDb3VsZCBub3QgcmVhZCBDQSBrZXkgZmlsZTogJXMAQ291bGQgbm90IHJlYWQgQ0EgY2VydGlmaWNhdGUgZmlsZTogJXMAQ291bGQgbm90IGdlbmVyYXRlIFguNTA5IGNlcnRpZmljYXRlLgBDb3VsZCBub3Qgd3JpdGUgY2VydGlmaWNhdGUgZmlsZTogJXMAQ291bGQgbm90IGdlbmVyYXRlIFJTQSBQcml2YXRlL1B1YmxpYyBrZXkgcGFpcgBDb3VsZCBub3Qgd3JpdGUgcHJpdmF0ZSBrZXkgZmlsZTogJXMAQ291bGQgbm90IHdyaXRlIHB1YmxpYyBrZXkgZmlsZTogJXMAU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBTU0wgY2VydGlmaWNhdGVzIGFzIG9wdGlvbnMgcmVsYXRlZCB0byBTU0wgYXJlIHNwZWNpZmllZC4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBTU0wgY2VydGlmaWNhdGVzIGFzIGNlcnRpZmljYXRlIGZpbGVzIGFyZSBwcmVzZW50IGluIGRhdGEgZGlyZWN0b3J5LgBBdXRvIGdlbmVyYXRlZCBTU0wgY2VydGlmaWNhdGVzIGFyZSBwbGFjZWQgaW4gZGF0YSBkaXJlY3RvcnkuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgU1NMIGNlcnRpZmljYXRlcyBhcyAtLWF1dG9fZ2VuZXJhdGVfY2VydHMgaXMgc2V0IHRvIE9GRi4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBSU0Ega2V5IHBhaXIgdGhyb3VnaCAlcyBhcyBvcHRpb25zIHJlbGF0ZWQgdG8gUlNBIGtleXMgYXJlIHNwZWNpZmllZC4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBSU0Ega2V5IHBhaXIgdGhyb3VnaCAlcyBhcyBrZXkgZmlsZXMgYXJlIHByZXNlbnQgaW4gZGF0YSBkaXJlY3RvcnkuAEF1dG8gZ2VuZXJhdGVkIFJTQSBrZXkgZmlsZXMgdGhyb3VnaCAlcyBhcmUgcGxhY2VkIGluIGRhdGEgZGlyZWN0b3J5LgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFJTQSBrZXkgcGFpciBhcyAlcyBpcyBzZXQgdG8gT0ZGLgAncHJveGllc19wcml2JyBlbnRyeSAnJXNAJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgBUaGUgcGx1Z2luICclLipzJyB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB1c2VyICclcydAJyUuKnMnIGlzIG5vdCBsb2FkZWQuIE5vYm9keSBjYW4gY3VycmVudGx5IGxvZ2luIHVzaW5nIHRoaXMgYWNjb3VudC4AVGhlIHBsdWdpbiAnJXMnIGlzIHVzZWQgdG8gYXV0aGVudGljYXRlIHVzZXIgJyVzJ0AnJS4qcycsICVzIGNvbmZpZ3VyZWQuIE5vYm9keSBjYW4gY3VycmVudGx5IGxvZ2luIHVzaW5nIHRoaXMgYWNjb3VudC4AQ291bGQgbm90IGxvYWQgbXlzcWwucm9sZV9lZGdlcyBhbmQgbXlzcWwuZGVmYXVsdF9yb2xlcyB0YWJsZXMuIEFDTCBERExzIHdpbGwgbm90IHdvcmsgdW5sZXNzIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZSBpcyBwZXJmb3JtZWQuACd1c2VyJyBlbnRyeSAnJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgBGYXRhbCBlcnJvcjogQ291bGQgbm90IHJlYWQgdGhlIGNvbHVtbiAnYXV0aGVudGljYXRpb25fc3RyaW5nJyBmcm9tIHRhYmxlICdteXNxbC51c2VyJy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBVc2VyIGVudHJ5ICclcydAJyVzJyBoYXMgYSBkZXByZWNhdGVkIHByZS00LjEgcGFzc3dvcmQuIFRoZSB1c2VyIHdpbGwgYmUgaWdub3JlZCBhbmQgbm8gb25lIGNhbiBsb2dpbiB3aXRoIHRoaXMgdXNlciBhbnltb3JlLgBVc2VyIGVudHJ5ICclcydAJyVzJyBoYXMgYW4gZW1wdHkgcGx1Z2luIHZhbHVlLiBUaGUgdXNlciB3aWxsIGJlIGlnbm9yZWQgYW5kIG5vIG9uZSBjYW4gbG9naW4gd2l0aCB0aGlzIHVzZXIgYW55bW9yZS4ARm91bmQgaW52YWxpZCBwYXNzd29yZCBmb3IgdXNlcjogJyVzQCVzJzsgSWdub3JpbmcgdXNlcgAndXNlcicgZW50cnkgJyVzQCVzJyBoYXMgdGhlIHBhc3N3b3JkIGlnbm9yZSBmbGFnIHJhaXNlZCwgYnV0IGl0cyBhdXRoZW50aWNhdGlvbiBwbHVnaW4gZG9lc24ndCBzdXBwb3J0IHBhc3N3b3JkIGV4cGlyYXRpb24uIFRoZSB1c2VyIGlkIHdpbGwgYmUgaWdub3JlZC4AU29tZSBvZiB0aGUgdXNlciBhY2NvdW50cyB3aXRoIFNVUEVSIHByaXZpbGVnZXMgd2VyZSBkaXNhYmxlZCBiZWNhdXNlIG9mIGVtcHR5IG15c3FsLnVzZXIucGx1Z2luIHZhbHVlLiBJZiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tIE15U1FMIDUuNiB0byBNeVNRTCA1LjcgaXQgbWVhbnMgdGhhdCBzdWJzdGl0dXRpb24gZm9yIHRoZSBlbXB0eSBwbHVnaW4gY29sdW1uIHdhcyBub3QgcG9zc2libGUuIFByb2JhYmx5IGJlY2F1c2Ugb2YgcHJlIDQuMSBwYXNzd29yZCBoYXNoLiBJZiB5b3VyIGFjY291bnQgaXMgZGlzYWJsZWQgeW91IHdpbGwgbmVlZCB0byBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4gRm9yIGNvbXBsZXRlIGluc3RydWN0aW9ucyBvbiBob3cgdG8gdXBncmFkZSBNeVNRTCB0byBhIG5ldyB2ZXJzaW9uIHBsZWFzZSBzZWUgdGhlICdVcGdyYWRpbmcgTXlTUUwnIHNlY3Rpb24gZnJvbSB0aGUgTXlTUUwgbWFudWFsLgBGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ2RiJyB0YWJsZSB3aXRoIGVtcHR5IGRhdGFiYXNlIG5hbWU7IFNraXBwZWQAJ2RiJyBlbnRyeSAnJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgAnZGInIGVudHJ5ICclcyAlc0AlcycgaGFkIGRhdGFiYXNlIGluIG1peGVkIGNhc2UgdGhhdCBoYXMgYmVlbiBmb3JjZWQgdG8gbG93ZXJjYXNlIGJlY2F1c2UgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBpcyBzZXQuIEl0IHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIHJlbW92ZSB0aGlzIHByaXZpbGVnZSB1c2luZyBSRVZPS0UuAFRoZSBzeXN0ZW0gdGFibGUgbXlzcWwucHJveGllc19wcml2IGlzIG1pc3NpbmcuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4ARmF0YWwgZXJyb3I6IENhbid0IG9wZW4gYW5kIGxvY2sgcHJpdmlsZWdlIHRhYmxlczogJXMARmF0YWw6IGNhbid0IGluaXRpYWxpemUgZ3JhbnQgc3Vic3lzdGVtIC0gJyVzJwAncHJvY3NfcHJpdicgZW50cnkgJyVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4AJ3Byb2NzX3ByaXYnIGVudHJ5ICclcycgaWdub3JlZCwgYmFkIHJvdXRpbmUgdHlwZQAndGFibGVzX3ByaXYnIGVudHJ5ICclcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuAEZhaWxlZCB0byBhZGQgJXMgaW4gZXh0cmFfdXNlcnMuIEJpbmFyeSBsb2cgZW50cnkgbWF5IG1pc3Mgc29tZSBvZiB0aGUgdXNlcnMuAFVuYWJsZSB0byBzdGFydCBzZXJ2ZXIuIFRoZSBkYXRhIGRpY3Rpb25hcnkgc2NoZW1hICclcycgZG9lcyBub3QgZXhpc3QuAFVuYWJsZSB0byBzdGFydCBzZXJ2ZXIuIFRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGUgJyVzJyBkb2VzIG5vdCBleGlzdC4ARmFpbGVkIHRvIGluaXRpYWxpemUgREQgU3RvcmFnZSBFbmdpbmUARm91bmQgcGFydGlhbGx5IHVwZ3JhZGVkIERELiBBYm9ydGluZyB1cGdyYWRlIGFuZCBkZWxldGluZyBhbGwgREQgdGFibGVzLiBTdGFydCB0aGUgdXBncmFkZSBwcm9jZXNzIGFnYWluLgBGb3VuZCAuZnJtIGZpbGUgd2l0aCBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBEaWN0aW9uYXJ5IFRhYmxlcy4AQ3JlYXRlZCBEYXRhIERpY3Rpb25hcnkgZm9yIHVwZ3JhZGUAQ2FuJ3QgZmluZCBlcnJvci1tZXNzYWdlIGZpbGUgJyVzJy4gQ2hlY2sgZXJyb3ItbWVzc2FnZSBmaWxlIGxvY2F0aW9uIGFuZCAnbGMtbWVzc2FnZXMtZGlyJyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZS4AVXNpbmcgcHJlIDUuNSBzZW1hbnRpY3MgdG8gbG9hZCBlcnJvciBtZXNzYWdlcyBmcm9tICVzLiBJZiB0aGlzIGlzIG5vdCBpbnRlbmRlZCwgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHZhbGlkIHVzYWdlIG9mIC0tbGMtbWVzc2FnZXMtZGlyIGFuZCAtLWxhbmd1YWdlIHBhcmFtZXRlcnMuAEVycm9yIG1lc3NhZ2UgZmlsZSAnJXMnIGhhZCBvbmx5ICVkIGVycm9yIG1lc3NhZ2VzLCBidXQgaXQgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgJWQgZXJyb3IgbWVzc2FnZXMuIENoZWNrIHRoYXQgdGhlIGFib3ZlIGZpbGUgaXMgdGhlIHJpZ2h0IHZlcnNpb24gZm9yIHRoaXMgcHJvZ3JhbSEATm90IGVub3VnaCBtZW1vcnkgZm9yIG1lc3NhZ2VmaWxlICclcycAQ2FuJ3QgcmVhZCBmcm9tIG1lc3NhZ2VmaWxlICclcycARm91bmQgaW5jb21wYXRpYmxlIERFQ0lNQUwgZmllbGQgJyVzJyBpbiAlczsgUGxlYXNlIGRvICJBTFRFUiBUQUJMRSBgJXNgIEZPUkNFIiB0byBmaXggaXQhAEZvdW5kIGluY29tcGF0aWJsZSBZRUFSKHgpIGZpZWxkICclcycgaW4gJXM7IFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCVzYCBGT1JDRSIgdG8gZml4IGl0IQAnJXMnIGhhZCBubyBvciBpbnZhbGlkIGNoYXJhY3RlciBzZXQsIGFuZCBkZWZhdWx0IGNoYXJhY3RlciBzZXQgaXMgbXVsdGktYnl0ZSwgc28gY2hhcmFjdGVyIGNvbHVtbiBzaXplcyBtYXkgaGF2ZSBjaGFuZ2VkAEZvdW5kIHdyb25nIGtleSBkZWZpbml0aW9uIGluICVzOyBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlc2AgRk9SQ0UgIiB0byBmaXggaXQhAFVuYWJsZSB0byBvcGVuIGZpbGUgJXMARXJyb3IgaW4gcmVhZGluZyBmaWxlICVzAFRhYmxlICclcycgd2FzIGNyZWF0ZWQgd2l0aCBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIE15U1FMIGFuZCBjYW5ub3QgYmUgcmVhZABVbmFibGUgdG8gcmVhZCB2aWV3ICVzAEZpbGUgJXMgaGFzIHVua25vd24gdHlwZSBpbiBpdHMgaGVhZGVyLgBJbmNvcnJlY3QgaW5mb3JtYXRpb24gaW4gZmlsZSAlcwBDYW4ndCBvcGVuIGFuZCBsb2NrIHByaXZpbGVnZSB0YWJsZXM6ICVzAFBsdWdpbiAnJXMnIGNhbm5vdCBzdWJzY3JpYmUgdG8gTVlTUUxfQVVESVRfQVVUSE9SSVpBVElPTiBldmVudHMuIEN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgBQbHVnaW4gJyVzJyBoYXMgaW52YWxpZCBkYXRhLgBGYXRhbCBlcnJvcjogT09NIHdoaWxlIGluaXRpYWxpemluZyB0aW1lIHpvbmVzAENhbid0IG9wZW4gYW5kIGxvY2sgdGltZSB6b25lIHRhYmxlOiAlcyB0cnlpbmcgdG8gbGl2ZSB3aXRob3V0IHRoZW0ARmF0YWwgZXJyb3I6IE91dCBvZiBtZW1vcnkgd2hpbGUgbG9hZGluZyBteXNxbC50aW1lX3pvbmVfbGVhcF9zZWNvbmQgdGFibGUARmF0YWwgZXJyb3I6IFdoaWxlIGxvYWRpbmcgbXlzcWwudGltZV96b25lX2xlYXBfc2Vjb25kIHRhYmxlOiB0b28gbXVjaCBsZWFwcwBGYXRhbCBlcnJvcjogRXJyb3Igd2hpbGUgbG9hZGluZyBteXNxbC50aW1lX3pvbmVfbGVhcF9zZWNvbmQgdGFibGUARmF0YWwgZXJyb3I6IElsbGVnYWwgb3IgdW5rbm93biBkZWZhdWx0IHRpbWUgem9uZSAnJXMnAENhbid0IGZpbmQgZGVzY3JpcHRpb24gb2YgdGltZSB6b25lICclLipzJwBDYW4ndCBmaW5kIGRlc2NyaXB0aW9uIG9mIHRpbWUgem9uZSAnJXUnAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb25fdHlwZSB0YWJsZTogdG9vIGJpZyB0cmFuc2l0aW9uIHR5cGUgaWQARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbl90eXBlIHRhYmxlOiBub3QgZW5vdWdoIHJvb20gZm9yIGFiYnJldmlhdGlvbnMARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbl90eXBlIHRhYmxlAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb24gdGFibGU6IHRvbyBtdWNoIHRyYW5zaXRpb25zAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb24gdGFibGU6IGJhZCB0cmFuc2l0aW9uIHR5cGUgaWQARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbiB0YWJsZQBsb2FkaW5nIHRpbWUgem9uZSB3aXRob3V0IHRyYW5zaXRpb24gdHlwZXMAT3V0IG9mIG1lbW9yeSB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbgBVbmFibGUgdG8gYnVpbGQgbWt0aW1lIG1hcCBmb3IgdGltZSB6b25lAE91dCBvZiBtZW1vcnkgd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUARmF0YWwgZXJyb3I6IE91dCBvZiBtZW1vcnkgd2hpbGUgc2V0dGluZyBuZXcgdGltZSB6b25lAFJlcGxpY2EgU1FMIHRocmVhZCBpcyBzdG9wcGVkIGJlY2F1c2UgVU5USUwgY29uZGl0aW9uIGlzIGJhZCglczolbGx1KS4AUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYmVjYXVzZSBpdCByZWFjaGVkIGl0cyBVTlRJTCBwb3NpdGlvbiAlbGx1AFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgVU5USUwgU1FMX0JFRk9SRV9HVElEUyAlcyBpcyBhbHJlYWR5IGFwcGxpZWQAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYmVjYXVzZSBpdCByZWFjaGVkIFVOVElMIFNRTF9CRUZPUkVfR1RJRFMgJXMAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYmVjYXVzZSBpdCByZWFjaGVkIFVOVElMIFNRTF9BRlRFUl9HVElEUyAlcwBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBhY2NvcmRpbmcgdG8gVU5USUwgU1FMX0FGVEVSX01UU19HQVBTIGFzIGl0IGhhcyBwcm9jZXNzZWQgYWxsIGdhcCB0cmFuc2FjdGlvbnMgbGVmdCBmcm9tIHRoZSBwcmV2aW91cyByZXBsaWNhIHNlc3Npb24uAEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBpcyBub3QgaW5zdGFsbGVkLgBUaGUgdHJhbnNhY3Rpb24gb3duZWQgR1RJRCBpcyBhbHJlYWR5IGluIHRoZSAlcyB0YWJsZSwgd2hpY2ggaXMgY2F1c2VkIGJ5IGFuIGV4cGxpY2l0IG1vZGlmeWluZyBmcm9tIHVzZXIgY2xpZW50LgBGYWlsZWQgdG8gZGVsZXRlIHRoZSByb3c6ICclcycgZnJvbSB0aGUgZ3RpZF9leGVjdXRlZCB0YWJsZS4ARmFpbGVkIHRvIGNvbXByZXNzIHRoZSBndGlkX2V4ZWN1dGVkIHRhYmxlLgBGYWlsZWQgdG8gY29tcHJlc3MgdGhlIGd0aWRfZXhlY3V0ZWQgdGFibGUsIGJlY2F1c2UgaXQgaXMgZmFpbGVkIHRvIGFsbG9jYXRlIHRoZSBUSEQuAEZhaWxlZCB0byBpbml0aWFsaXplIHRocmVhZCBhdHRyaWJ1dGUgd2hlbiBjcmVhdGluZyBjb21wcmVzc2lvbiB0aHJlYWQuAENhbiBub3QgY3JlYXRlIHRocmVhZCB0byBjb21wcmVzcyBndGlkX2V4ZWN1dGVkIHRhYmxlIChlcnJubz0gJWQpAENvdWxkIG5vdCBqb2luIGd0aWRfZXhlY3V0ZWQgdGFibGUgY29tcHJlc3Npb24gdGhyZWFkLiBlcnJvcjolZABDYW4ndCBzdGFydCBzZXJ2ZXIgOiBJbml0aWFsaXplIHNlY3VyaXR5IGRlc2NyaXB0b3I6ICVzAENhbid0IHN0YXJ0IHNlcnZlciA6IFNldCBzZWN1cml0eSBkZXNjcmlwdG9yOiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBOYW1lZCBQaXBlICIlcyIgYWxyZWFkeSBpbiB1c2UuAE5EQiBSZXBsaWNhIDogQXQgU1FMIHRocmVhZCBzdGFydCBhcHBseWluZyBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGZyb20gU291cmNlIFNlcnZlcklkICV1IHdoaWNoIGlzIGxvd2VyIHRoYW4gcHJldmlvdXNseSBhcHBsaWVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdS4gIENoZWNrIHJlcGxpY2EgcG9zaXRpb25pbmcuAE5EQiBSZXBsaWNhIDogU1FMIHRocmVhZCBzdG9wcGVkIGFzIGFwcGx5aW5nIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgZnJvbSBTb3VyY2UgU2VydmVySWQgJXUgd2hpY2ggaXMgbG93ZXIgdGhhbiBwcmV2aW91c2x5IGFwcGxpZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KS4gIEdyb3VwIFNvdXJjZSBMb2cgOiAlcyAgR3JvdXAgU291cmNlIExvZyBQb3MgOiAlbGx1AE5EQiBSZXBsaWNhIDogU1FMIHRocmVhZCBzdG9wcGVkIGFzIGF0dGVtcHRlZCB0byByZWFwcGx5IGFscmVhZHkgY29tbWl0dGVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgZnJvbSBzZXJ2ZXIgaWQgJXUuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdS4ATkRCIFJlcGxpY2EgOiBTUUwgdGhyZWFkIHN0b3BwZWQgYXMgYXR0ZW1wdGluZyB0byBhcHBseSBuZXcgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSB3aGlsZSBsb3dlciByZWNlaXZlZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGhhcyBub3QgYmVlbiBjb21taXR0ZWQuICBTb3VyY2Ugc2VydmVyIGlkIDogJXUuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdS4ATkRCIFJlcGxpY2E6IG1pc3NpbmcgZGF0YSBmb3IgJXMgdGltZXN0YW1wIGNvbHVtbiAldS4ATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIGxvZ2dpbmcgZXhjZXB0aW9ucyB0byAlcy4lcwBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgOiAlcywgbG93IGVwb2NoIHJlc29sdXRpb24ARm91bmQgdW5leHBlY3RlZCBmaWVsZCB0eXBlICV1AEZhaWxlZCB0byBjcmVhdGUgTmRiSW5mbwBGYWlsZWQgdG8gaW5pdCBOZGJJbmZvAG5kYl9zZXJpYWxpemVfY29uZDogVW5leHBlY3RlZCBtaXNtYXRjaCBvZiBmb3VuZCBhbmQgZXhwZWN0ZWQgbnVtYmVyIG9mIGZ1bmN0aW9uIGFyZ3VtZW50cyAldQAlcyAtICVzLiVzACVzAEluZm8gdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIG9wZW5lZC4ASW5mbyB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgc2Nhbm5lZC4AQ29ycnVwdGVkIHRhYmxlICVzLiVzLiBDaGVjayBvdXQgdGFibGUgZGVmaW5pdGlvbi4ASW5mbyB0YWJsZSBoYXMgYSBwcm9ibGVtIHdpdGggaXRzIGtleSBmaWVsZChzKS4gVGFibGUgJyVzLiVzJyBleHBlY3RlZCBmaWVsZCAjJXUgdG8gYmUgJyVzJyBidXQgZm91bmQgJyVzJyBpbnN0ZWFkLgBDaG9vc2luZyB3b3JrZXIgaWQgJWx1LCB0aGUgZm9sbG93aW5nIGlzIGdvaW5nIHRvIGJlICVsdQBUcmFuc2FjdGlvbiBpcyB0YWdnZWQgd2l0aCBpbmNvbnNpc3RlbnQgbG9naWNhbCB0aW1lc3RhbXBzOiBzZXF1ZW5jZV9udW1iZXIgKCVsbGQpIDw9IGxhc3RfY29tbWl0dGVkICglbGxkKQBUcmFuc2FjdGlvbidzIHNlcXVlbmNlIG51bWJlciBpcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGF0IG9mIGEgcHJlY2VkaW5nIG9uZTogc2VxdWVuY2VfbnVtYmVyICglbGxkKSA8PSBwcmV2aW91cyBzZXF1ZW5jZV9udW1iZXIgKCVsbGQpAEZvciB0aGUgY3JlYXRpb24gb2YgcmVwbGljYXRpb24gY2hhbm5lbHMgdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgYW5kIGFwcGxpZXIgbWV0YWRhdGEgcmVwb3NpdG9yaWVzIG11c3QgYmUgc2V0IHRvIFRBQkxFAEZvciB0aGUgY3JlYXRpb24gb2YgcmVwbGljYXRpb24gY2hhbm5lbHMgdGhlIHNlcnZlciBpZCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIDAAUmVwbGljYTogV3JvbmcgcmVwb3NpdG9yeS4gUmVwb3NpdG9yeSBzaG91bGQgYmUgVEFCTEUARXJyb3IgY3JlYXRpbmcgY29ubmVjdGlvbiBtZXRhZGF0YTogJXMuAEVycm9yIGNoYW5naW5nIHRoZSB0eXBlIG9mIGNvbm5lY3Rpb24gbWV0YWRhdGEncyByZXBvc2l0b3J5OiAlcy4ASXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUgcmVsYXkgbG9nIHJlcG9zaXRvcnkgYmVjYXVzZSB0aGVyZSBhcmUgd29ya2VycyByZXBvc2l0b3JpZXMgd2l0aCBwb3NzaWJsZSBleGVjdXRpb24gZ2Fwcy4gVGhlIHZhbHVlIG9mIC0tcmVsYXlfbG9nX2luZm9fcmVwb3NpdG9yeSBpcyBhbHRlcmVkIHRvIG9uZSBvZiB0aGUgZm91bmQgV29ya2VyIHJlcG9zaXRvcmllcy4gVGhlIGdhcHMgaGF2ZSB0byBiZSBzb3J0ZWQgb3V0IGJlZm9yZSByZXN1bWluZyB3aXRoIHRoZSB0eXBlIGNoYW5nZS4ARXJyb3IgY3JlYXRpbmcgYXBwbGllciBtZXRhZGF0YTogJXMuAEVycm9yIGNoYW5naW5nIHRoZSB0eXBlIG9mIGFwcGxpZXIgbWV0YWRhdGEncyByZXBvc2l0b3J5OiAlcy4AQ291bGQgbm90IGRlbGV0ZSBmcm9tIFJlcGxpY2EgV29ya2VycyBpbmZvIHJlcG9zaXRvcnkuAENvdWxkIG5vdCBzdG9yZSB0aGUgcmVzZXQgUmVwbGljYSBXb3JrZXIgc3RhdGUgaW50byB0aGUgcmVwbGljYSBpbmZvIHJlcG9zaXRvcnkuAEVycm9yIGluIGNoZWNraW5nICVzIHJlcG9zaXRvcnkgaW5mbyB0eXBlIG9mICVzLgBSZXBsaWNhOiAlcwBSZXBsaWNhOiBDb3VsZCBub3QgY3JlYXRlIGNoYW5uZWwgbGlzdABSZXBsaWNhOiBUaGlzIHJlcGxpY2Egd2FzIGEgbXVsdGlzb3VyY2VkIHJlcGxpY2EgcHJldmlvdXNseSB3aGljaCBpcyBzdXBwb3J0ZWQgb25seSBieSBib3RoIFRBQkxFIGJhc2VkIGNvbm5lY3Rpb24gbWV0YWRhdGEgYW5kIGFwcGxpZXIgbWV0YWRhdGEgcmVwb3NpdG9yaWVzLiBGb3VuZCBvbmUgb3IgYm90aCBvZiB0aGUgaW5mbyByZXBvcyB0byBiZSB0eXBlIEZJTEUuIFNldCBib3RoIHJlcG9zIHRvIHR5cGUgVEFCTEUuAFJlcGxpY2E6IEZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBmb3IgY2hhbm5lbCAnJXMnOyBpdHMgcmVjb3JkIG1heSBzdGlsbCBiZSBwcmVzZW50IGluIHRoZSBhcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcnksIGNvbnNpZGVyIGRlbGV0aW5nIGl0LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUlcwBSZXBsaWNhOiBGYWlsZWQgdG8gY3JlYXRlIGEgY2hhbm5lbCBmcm9tIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeS4ARmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbmZvIGZpbGUgKGZpbGUgJyVzJywgZXJybm8gJWQpAEZhaWxlZCB0byBjcmVhdGUgYSBjYWNoZSBvbiBpbmZvIGZpbGUgKGZpbGUgJyVzJykARmFpbGVkIHRvIG9wZW4gdGhlIGV4aXN0aW5nIGluZm8gZmlsZSAoZmlsZSAnJXMnLCBlcnJubyAlZCkAU2VydmVyIG92ZXJjb21lcyB0aGUgdGVtcG9yYXJ5ICdvdXQgb2YgbWVtb3J5JyBpbiAnJWQnIHRyaWVzIHdoaWxlIGFsbG9jYXRpbmcgYSBuZXcgY2h1bmsgb2YgaW50ZXJ2YWxzIGZvciBzdG9yaW5nIEdUSURzLgBVbmtub3duIGNvc3QgY29uc3RhbnQgIiVzIiBpbiBteXNxbC5zZXJ2ZXJfY29zdCB0YWJsZQBJbnZhbGlkIHZhbHVlIGZvciBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuc2VydmVyX2Nvc3QgdGFibGU6ICUuMWYAVW5rbm93biBjb3N0IGNvbnN0YW50ICIlcyIgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUAVW5rbm93biBzdG9yYWdlIGVuZ2luZSAiJXMiIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlAEludmFsaWQgZGV2aWNlIHR5cGUgJWQgZm9yICIlcyIgc3RvcmFnZSBlbmdpbmUgZm9yIGNvc3QgY29uc3RhbnQgIiVzIiBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZQBJbnZhbGlkIHZhbHVlIGZvciBjb3N0IGNvbnN0YW50ICIlcyIgZm9yICIlcyIgc3RvcmFnZSBlbmdpbmUgYW5kIGRldmljZSB0eXBlICVkIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlOiAlLjFmAEVycm9yIHdoaWxlIHJlYWRpbmcgZnJvbSBteXNxbC5zZXJ2ZXJfY29zdCB0YWJsZS4ARXJyb3Igd2hpbGUgcmVhZGluZyBmcm9tIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlLgBGYWlsZWQgdG8gb3BlbiBvcHRpbWl6ZXIgY29zdCBjb25zdGFudCB0YWJsZXMAVW5zdXBwb3J0ZWQgbm9uLWlnbm9yYWJsZSBldmVudCBmZWQgaW50byB0aGUgZXZlbnQgc3RyZWFtLgBHVElEX0xPR19FVkVOVCBvciBBTk9OWU1PVVNfR1RJRF9MT0dfRVZFTlQgaXMgbm90IGV4cGVjdGVkIGluIGFuIGV2ZW50IHN0cmVhbSAlcy4AUVVFUlkoQkVHSU4pIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gaW4gdGhlIG1pZGRsZSBvZiBhICVzLgBRVUVSWShDT01NSVQgb3IgUk9MTEJBQ0spIG9yIFhJRF9MT0dfRVZFTlQgaXMgbm90IGV4cGVjdGVkIGluIGFuIGV2ZW50IHN0cmVhbSAlcy4AUVVFUlkoWEEgUk9MTEJBQ0spIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gJXMuAEV2ZW50IFNjaGVkdWxlcjogWyVzXS5bJXMuJXNdIGV4ZWN1dGlvbiBmYWlsZWQsIGZhaWxlZCB0byBhdXRoZW50aWNhdGUgdGhlIHVzZXIuAEV2ZW50IFNjaGVkdWxlcjogWyVzXS5bJXMuJXNdIGV4ZWN1dGlvbiBmYWlsZWQsIHVzZXIgbm8gbG9uZ2VyIGhhcyBFVkVOVCBwcml2aWxlZ2UuAEV2ZW50IFNjaGVkdWxlcjogJXNlcnJvciBkdXJpbmcgY29tcGlsYXRpb24gb2YgJXMuJXMARXZlbnQgU2NoZWR1bGVyOiBEcm9wcGluZyAlcy4lcwBOZGIgc2NoZW1hWyVzLiVzXTogJXMASW4gUkJSIG1vZGUsIFJlcGxpY2EgcmVjZWl2ZWQgaW5jb21wYXRpYmxlIERFQ0lNQUwgZmllbGQgKG9sZC1zdHlsZSBkZWNpbWFsIGZpZWxkKSBmcm9tIFNvdXJjZSB3aGlsZSBjcmVhdGluZyBjb252ZXJzaW9uIHRhYmxlLiBQbGVhc2UgY29uc2lkZXIgY2hhbmdpbmcgZGF0YXR5cGUgb24gU291cmNlIHRvIG5ldyBzdHlsZSBkZWNpbWFsIGJ5IGV4ZWN1dGluZyBBTFRFUiBjb21tYW5kIGZvciBjb2x1bW4gTmFtZTogJXMuJXMuJXMuAHJvb3RAbG9jYWxob3N0IGlzIGNyZWF0ZWQgd2l0aCBhbiBlbXB0eSBwYXNzd29yZCAhIFBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgb2ZmIHRoZSAtLWluaXRpYWxpemUtaW5zZWN1cmUgb3B0aW9uLgBBIHRlbXBvcmFyeSBwYXNzd29yZCBpcyBnZW5lcmF0ZWQgZm9yIHJvb3RAbG9jYWxob3N0OiAlcwBGYWlsZWQgdG8gb3BlbiB0aGUgYm9vdHN0cmFwIGZpbGUgJXMAQm9vdHN0cmFwcGluZyBjb21wbGV0ZQAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgZGF0YSBkaXJlY3RvcnkgaGFzIGZpbGVzIGluIGl0LiBBYm9ydGluZy4ALS1pbml0aWFsaXplIHNwZWNpZmllZCBvbiBhbiBleGlzdGluZyBkYXRhIGRpcmVjdG9yeS4ALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGV4aXN0cyBhbmQgdGhlIHBhdGggaXMgdG9vIGxvbmcuIEFib3J0aW5nLgAtLWluaXRpYWxpemUgc3BlY2lmaWVkIGJ1dCB0aGUgZGF0YSBkaXJlY3RvcnkgZXhpc3RzIGFuZCBpcyBub3Qgd3JpdGFibGUuIEFib3J0aW5nLgBDcmVhdGluZyB0aGUgZGF0YSBkaXJlY3RvcnkgJXMAU3RhcnQgYmlubG9nX2R1bXAgdG8gc291cmNlX3RocmVhZF9pZCgldSkgcmVwbGljYV9zZXJ2ZXIoJXUpLCBwb3MoJXMsICVsbHUpAHNvdXJjZSBzZW5kcyBoZWFydGJlYXQgbWVzc2FnZQB0aGUgcmVzdCBvZiBoZWFydGJlYXQgaW5mbyBza2lwcGVkIC4uLgBTb3VyY2UgaXMgY29uZmlndXJlZCB0byBsb2cgcmVwbGljYXRpb24gZXZlbnRzIHdpdGggY2hlY2tzdW0sIGJ1dCB3aWxsIG5vdCBzZW5kIHN1Y2ggZXZlbnRzIHRvIHJlcGxpY2FzIHRoYXQgY2Fubm90IHByb2Nlc3MgdGhlbQBOREI6IFF1ZXJ5ICclcycgZmFpbGVkLCBlcnJvcjogJWQ6ICVzAEtpbGxpbmcgdGhyZWFkICVsdQBQbHVnaW4gJXMgaXMgZGVpbml0aWFsaXppbmcgYSB0aHJlYWQgYnV0IGxlZnQgYSBzZXNzaW9uIGF0dGFjaGVkLiBEZXRhY2hpbmcgaXQgZm9yY2VmdWxseS4ARmFpbGVkIHRvIGRldGFjaCB0aGUgc2Vzc2lvbi4AQ2xvc2VkIGZvcmNlZnVsbHkgJXUgc2Vzc2lvbiVzIGxlZnQgb3BlbmVkIGJ5IHBsdWdpbiAlcwBGYWlsZWQgdG8gZGVjcmVtZW50IHRoZSBudW1iZXIgb2YgdGhyZWFkcwBQbHVnaW4gJXMgZGlkIG5vdCBkZWluaXRpYWxpemUgJXUgdGhyZWFkcwBLaWxsZWQgJXUgdGhyZWFkcyBvZiBwbHVnaW4gJXMATkRCIFJlcGxpY2EgOiBDb3VsZCBub3QgZGV0ZXJtaW5lIG1heGltdW0gcmVwbGljYXRlZCBlcG9jaCBmcm9tICVzLiVzIGF0IFJlcGxpY2Egc3RhcnQsIGVycm9yICV1ICVzAE5EQiBSZXBsaWNhIDogTWF4UmVwbGljYXRlZEVwb2NoIHNldCB0byAlbGx1ICgldS8ldSkgYXQgUmVwbGljYSBzdGFydABOREI6IE5vZGVJRCBpcyAlbHUsIG1hbmFnZW1lbnQgc2VydmVyICclczolbHUnAHRpZCAldTogbm9kZVsldV0gdHJhbnNhY3Rpb25faGludD0ldSwgdHJhbnNhY3Rpb25fbm9faGludD0ldQBOREIgSW50ZXJuYWwgZXJyb3I6IERlZmF1bHQgdmFsdWVzIGRpZmZlciBmb3IgY29sdW1uICV1LCBuZGJfZGVmYXVsdDogJWQATkRCIEludGVybmFsIGVycm9yOiBDb2x1bW4gJXUgaGFzIG5hdGl2ZSBkZWZhdWx0LCBidXQgc2hvdWxkbid0LiBGbGFncz0ldSwgdHlwZT0ldQBmaWVsZFsgbmFtZTogJyVzJywgdHlwZTogJXUsIHJlYWxfdHlwZTogJXUsIGZsYWdzOiAweCV4LCBpc19udWxsOiAlZF0AbmRiQ29sW25hbWU6ICclcycsIHR5cGU6ICV1LCBjb2x1bW5fbm86ICVkLCBudWxsYWJsZTogJWRdAGZpeF91bmlxdWVfaW5kZXhfYXR0cl9vcmRlcjogbXlfbWFsbG9jKCV1KSBmYWlsdXJlAE5EQiBSZXBsaWNhIDogTWFsZm9ybWVkIGV2ZW50IHJlY2VpdmVkIG9uIHRhYmxlICVzIGNhbm5vdCBwYXJzZS4gIFN0b3BwaW5nIFJlcGxpY2EuAE5EQiBSZXBsaWNhIDogQ29uZmxpY3QgZnVuY3Rpb24gJXMgZGVmaW5lZCBvbiB0YWJsZSAlcyByZXF1aXJlcyBuZGJfcmVwbGljYV9jb25mbGljdF9yb2xlIHZhcmlhYmxlIHRvIGJlIHNldC4gIFN0b3BwaW5nIHJlcGxpY2EuAE5EQiBSZXBsaWNhIDogVHJhbnNhY3Rpb25hbCBjb25mbGljdCBkZXRlY3Rpb24gZGVmaW5lZCBvbiB0YWJsZSAlcywgYnV0IGV2ZW50cyByZWNlaXZlZCB3aXRob3V0IHRyYW5zYWN0aW9uIGlkcy4gIENoZWNrIC0tbmRiLWxvZy10cmFuc2FjdGlvbi1pZCBzZXR0aW5nIG9uIHVwc3RyZWFtIENsdXN0ZXIuAE5EQiBSZXBsaWNhIDogQmlubG9nIGV2ZW50IG9uIHRhYmxlICVzIG1pc3NpbmcgaW5mbyBuZWNlc3NhcnkgZm9yIGNvbmZsaWN0IGRldGVjdGlvbi4gIENoZWNrIGJpbmxvZyBmb3JtYXQgb3B0aW9ucyBvbiB1cHN0cmVhbSBjbHVzdGVyLgBFcnJvciAlbHUgaW4gcmVhZEF1dG9JbmNyZW1lbnRWYWx1ZSgpOiAlcwBmb3VuZCB1bmNvbW1pdHRlZCBhdXRvY29tbWl0K3Jid3IgdHJhbnNhY3Rpb24sIGNvbW1pdCBzdGF0dXM6ICVkAE5kYiByZXBsaWNhIHJldHJpZWQgdHJhbnNhY3Rpb24gJXUgdGltZShzKSBpbiB2YWluLiAgR2l2aW5nIHVwLgBFcnJvciAlbHUgaW4gOjp1cGRhdGVfY3JlYXRlX2luZm8oKTogJXMATkRCOiBhbGxvY2F0aW5nIHRhYmxlIHNoYXJlIGZvciAlcyBmYWlsZWQATkRCIEJpbmxvZzogKCVkKSVzAE5EQiBCaW5sb2c6IENSRUFURSBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogRkFJTEVEIENSRUFURSBUQUJMRSBldmVudCBvcGVyYXRpb25zLiBFdmVudDogJXMATkRCIEJpbmxvZzogUkVOQU1FIEV2ZW50OiAlcwBOREIgQmlubG9nOiBGQUlMRUQgY3JlYXRlIGV2ZW50IG9wZXJhdGlvbnMgZHVyaW5nIFJFTkFNRS4gRXZlbnQgJXMAVW5leHBlY3RlZCByZW5hbWUgY2FzZSBkZXRlY3RlZCwgc3FsX2NvbW1hbmQ6ICVkAEVycm9yICVsdSBpbiA6OmdldF9hdXRvX2luY3JlbWVudCgpOiAlcwBDYWxsaW5nIG5kYmNsdXN0ZXJfY3JlYXRlX2JpbmxvZ19zZXR1cCglcykgaW4gOjpvcGVuAHRhYmxlICclcycgb3BlbmVkIHJlYWQgb25seQBOREI6ICctLWluaXRpYWxpemUnIC0+IG5kYmNsdXN0ZXIgcGx1Z2luIGRpc2FibGVkAE5EQjogQ2hhbmdlZCBnbG9iYWwgdmFsdWUgb2YgYmlubG9nX2Zvcm1hdCBmcm9tIFNUQVRFTUVOVCB0byBNSVhFRABOREJfU0hBUkU6IHRyYWlsaW5nIHNoYXJlICVzLCByZWxlYXNlZCBieSBjbG9zZV9jYWNoZWRfdGFibGVzAE5EQl9TSEFSRTogJXMgYWxyZWFkeSBleGlzdHMgdXNlX2NvdW50PSVkLiBNb3ZpbmcgYXdheSBmb3Igc2FmZXR5LCBidXQgcG9zc2libGUgbWVtbGVhay4AaGFuZGxlX3RyYWlsaW5nX3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfZ2V0X3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfcmVhbF9mcmVlX3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfcmVhbF9mcmVlX3NoYXJlOiAlcywgc3RpbGwgb3BlbiAtIGlnbm9yZWQgJ2ZyZWUnIChsZWFrZWQ/KQBuZGJjbHVzdGVyX2ZyZWVfc2hhcmU6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9tYXJrX3NoYXJlX2Ryb3BwZWQ6ICVzIHVzZV9jb3VudDogJXUAbmRiY2x1c3Rlcl9tYXJrX3NoYXJlX2Ryb3BwZWQ6IGRlc3Ryb3lzIHNoYXJlICVzAENvdWxkIG5vdCBhbGxvY2F0ZSBUaGRfbmRiIG9iamVjdABOREIgQmlubG9nOiBOZGIgdGFibGVzIGluaXRpYWxseSByZWFkIG9ubHkuAG5kYiB1dGlsIHRocmVhZDogbWFsbG9jIGZhaWx1cmUsIHF1ZXJ5IGNhY2hlIG5vdCBtYWludGFpbmVkIHByb3Blcmx5AFRyeWluZyB0byBzZXQgbmRiX3JlY3ZfdGhyZWFkX2NwdV9tYXNrIHRvIGlsbGVnYWwgdmFsdWUgPSAlcywgaWdub3JlZABUcnlpbmcgdG8gc2V0IHRvbyBtYW55IENQVSdzIGluIG5kYl9yZWN2X3RocmVhZF9jcHVfbWFzaywgaWdub3JlZCB0aGlzIHZhcmlhYmxlLCBlcnJvbmV1cyB2YWx1ZSA9ICVzAGRidWdfY2hlY2tfc2hhcmVzIG9wZW46ACAgJXMuJXM6IHN0YXRlOiAlcygldSkgdXNlX2NvdW50OiAldQBkYnVnX2NoZWNrX3NoYXJlcyBkcm9wcGVkOgBJbnZhbGlkIChvbGQ/KSB0YWJsZSBvciBkYXRhYmFzZSBuYW1lICclcycAUmVjb3ZlcmluZyBhZnRlciBhIGNyYXNoIHVzaW5nICVzAENhbm5vdCBwZXJmb3JtIGF1dG9tYXRpYyBjcmFzaCByZWNvdmVyeSB3aGVuIC0tdGMtaGV1cmlzdGljLXJlY292ZXIgaXMgdXNlZABCYWQgbWFnaWMgaGVhZGVyIGluIHRjIGxvZwBSZWNvdmVyeSBmYWlsZWQhIFlvdSBtdXN0IGVuYWJsZSBleGFjdGx5ICVkIHN0b3JhZ2UgZW5naW5lcyB0aGF0IHN1cHBvcnQgdHdvLXBoYXNlIGNvbW1pdCBwcm90b2NvbABDcmFzaCByZWNvdmVyeSBmYWlsZWQuIEVpdGhlciBjb3JyZWN0IHRoZSBwcm9ibGVtIChpZiBpdCdzLCBmb3IgZXhhbXBsZSwgb3V0IG9mIG1lbW9yeSBlcnJvcikgYW5kIHJlc3RhcnQsIG9yIGRlbGV0ZSB0YyBsb2cgYW5kIHN0YXJ0IG15c3FsZCB3aXRoIC0tdGMtaGV1cmlzdGljLXJlY292ZXI9e2NvbW1pdHxyb2xsYmFja30ASGV1cmlzdGljIGNyYXNoIHJlY292ZXJ5IG1vZGUASGV1cmlzdGljIGNyYXNoIHJlY292ZXJ5IGZhaWxlZABQbGVhc2UgcmVzdGFydCBteXNxbGQgd2l0aG91dCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyAEZhaWxlZCB0byBjcmVhdGUgb3IgcmVjb3ZlciByZXBsaWNhdGlvbiBpbmZvIHJlcG9zaXRvcmllcy4ARGV0ZWN0ZWQgbWlzY29uZmlndXJhdGlvbjogcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgY29uZmlndXJlZCB3aXRoIEFVVE9fUE9TSVRJT04gPSAxLCBidXQgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIC0tZ3RpZC1tb2RlPW9mZi4gRWl0aGVyIHJlY29uZmlndXJlIHJlcGxpY2F0aW9uIHVzaW5nIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0FVVE9fUE9TSVRJT04gPSAwIEZPUiBDSEFOTkVMICclLjE5MnMnLCBvciBjaGFuZ2UgR1RJRF9NT0RFIHRvIHNvbWUgdmFsdWUgb3RoZXIgdGhhbiBPRkYsIGJlZm9yZSBzdGFydGluZyB0aGUgcmVwbGljYSByZWNlaXZlciB0aHJlYWQuAFJlcGxpY2E6IENvdWxkIG5vdCBzdGFydCByZXBsaWNhIGZvciBjaGFubmVsICclcycuIG9wZXJhdGlvbiBkaXNjb250aW51ZWQAUmVwbGljYTogQ291bGQgbm90IHN0b3AgcmVwbGljYSBmb3IgY2hhbm5lbCAnJXMnIG9wZXJhdGlvbiBkaXNjb250aW51ZWQARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiBDb3VsZCBub3QgbG9jYXRlIHJvdGF0ZSBldmVudCBmcm9tIHRoZSBzb3VyY2UuAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogRXJyb3IgcmVhZGluZyBldmVudHMgZnJvbSByZWxheSBsb2c6ICVkAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogRXJyb3Igd2hpbGUgZnJlZWluZyBJT19DQUNIRSBvYmplY3QAUmVsYXkgbG9nIHJlY292ZXJ5IHNraXBwZWQgZm9yIGdyb3VwIHJlcGxpY2F0aW9uIGNoYW5uZWwuAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogJXMARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiBDb3VsZCBub3QgcmVhZCByZWxheSBsb2cgaW5kZXggZmlsZSBkdWUgdG8gYW4gSU8gZXJyb3IuAFJlY292ZXJ5IGZyb20gc291cmNlIHBvcyAlbGQgYW5kIGZpbGUgJXMlcy4gUHJldmlvdXMgcmVsYXkgbG9nIHBvcyBhbmQgcmVsYXkgbG9nIGZpbGUgaGFkIGJlZW4gc2V0IHRvICVsbGQsICVzIHJlc3BlY3RpdmVseS4ARXJyb3IgZHVyaW5nIC0tcmVsYXktbG9nLXJlY292ZXJ5OiByZXBsaWNhdGVfc2FtZV9zZXJ2ZXJfaWQgaXMgaW4gdXNlIGFuZCBzcWwgdGhyZWFkJ3MgcG9zaXRpb25zIGFyZSBub3QgaW5pdGlhbGl6ZWQsIGhlbmNlIHJlbGF5IGxvZyByZWNvdmVyeSBjYW5ub3QgaGFwcGVuLgBNVEEgcmVjb3Zlcnk6IHN0YXJ0aW5nIGNvb3JkaW5hdG9yIHRocmVhZCB0byBmaWxsIE1UQSBnYXBzLgBNVEEgcmVjb3Zlcnk6IGZhaWxlZCB0byBzdGFydCB0aGUgY29vcmRpbmF0b3IgdGhyZWFkLiBDaGVjayB0aGUgZXJyb3IgbG9nIGZvciBhZGRpdGlvbmFsIGRldGFpbHMuAE1UQSByZWNvdmVyeTogYXV0b21hdGljIHJlY292ZXJ5IGZhaWxlZC4gRWl0aGVyIHRoZSByZXBsaWNhIHNlcnZlciBoYWQgc3RvcHBlZCBkdWUgdG8gYW4gZXJyb3IgZHVyaW5nIGFuIGVhcmxpZXIgc2Vzc2lvbiBvciByZWxheSBsb2dzIGFyZSBjb3JydXB0ZWQuRml4IHRoZSBjYXVzZSBvZiB0aGUgcmVwbGljYSBzaWRlIGVycm9yIGFuZCByZXN0YXJ0IHRoZSByZXBsaWNhIHNlcnZlciBvciBjb25zaWRlciB1c2luZyBSRVNFVCBSRVBMSUNBLgBGYWlsZWQgdG8gb3BlbiB0aGUgcmVsYXkgbG9nICclcycgKHJlbGF5X2xvZ19wb3MgJXMpLgBNVEEgcmVjb3Zlcnk6IGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuAFNlcnZlciBpZCBub3Qgc2V0LCB3aWxsIG5vdCBzdGFydCByZXBsaWNhJXMAQ2FuJ3QgY3JlYXRlIHJlcGxpY2EgdGhyZWFkJXMuAFRoZSByZXBsaWNhIElPIHRocmVhZCVzIHdhcyBraWxsZWQgd2hpbGUgZXhlY3V0aW5nIGluaXRpYWxpemF0aW9uIHF1ZXJ5ICclcycAVGhlIHNvdXJjZSdzIFVVSUQgaGFzIGNoYW5nZWQsIGFsdGhvdWdoIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gdW5sZXNzIHlvdSBoYXZlIGNoYW5nZWQgaXQgbWFudWFsbHkuIFRoZSBvbGQgVVVJRCB3YXMgJXMuAEZvdW5kIGEgc291cmNlIHdpdGggTXlTUUwgc2VydmVyIHZlcnNpb24gb2xkZXIgdGhhbiA1LjAuIFdpdGggY2hlY2tzdW1zIGVuYWJsZWQgb24gdGhlIHJlcGxpY2EsIHJlcGxpY2F0aW9uIG1pZ2h0IG5vdCB3b3JrIGNvcnJlY3RseS4gVG8gZW5zdXJlIGNvcnJlY3QgcmVwbGljYXRpb24sIHJlc3RhcnQgdGhlIHJlcGxpY2Egc2VydmVyIHdpdGggLS1yZXBsaWNhX3NxbF92ZXJpZnlfY2hlY2tzdW09MC4AIlNFTEVDVCBVTklYX1RJTUVTVEFNUCgpIiBmYWlsZWQgb24gc291cmNlLCBkbyBub3QgdHJ1c3QgY29sdW1uIFNlY29uZHNfQmVoaW5kX1NvdXJjZSBvZiBTSE9XIFJFUExJQ0EgU1RBVFVTLiBFcnJvcjogJXMgKCVkKQBGYWlsZWQgdG8gZmx1c2ggY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5LgBUaGUgbGVuZ3RoIG9mIHJlcG9ydF9ob3N0IGlzICV6dS4gSXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heCBsZW5ndGgoJWQpLCBzbyB0aGlzIHJlcGxpY2EgY2Fubm90IGJlIHJlZ2lzdGVyZWQgdG8gdGhlIHNvdXJjZSVzLgBUaGUgbGVuZ3RoIG9mIHJlcG9ydF91c2VyIGlzICV6dS4gSXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1heCBsZW5ndGgoJWQpLCBzbyB0aGlzIHJlcGxpY2EgY2Fubm90IGJlIHJlZ2lzdGVyZWQgdG8gdGhlIHNvdXJjZSVzLgBUaGUgbGVuZ3RoIG9mIHJlcG9ydF9wYXNzd29yZCBpcyAlenUuIEl0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXggbGVuZ3RoKCVkKSwgc28gdGhpcyByZXBsaWNhIGNhbm5vdCBiZSByZWdpc3RlcmVkIHRvIHRoZSBzb3VyY2Ulcy4ARXJyb3Igb24gJXM6ICVkICAlcywgd2lsbCByZXRyeSBpbiAlZCBzZWNzAEVycm9yIHJlYWRpbmcgcGFja2V0IGZyb20gc2VydmVyJXM6ICVzIChzZXJ2ZXJfZXJybm89JWQpAFJlcGxpY2ElczogcmVjZWl2ZWQgZW5kIHBhY2tldCBmcm9tIHNlcnZlciBkdWUgdG8gZHVtcCB0aHJlYWQgYmVpbmcga2lsbGVkIG9uIHNvdXJjZS4gRHVtcCB0aHJlYWRzIGFyZSBraWxsZWQgZm9yIGV4YW1wbGUgZHVyaW5nIHNvdXJjZSBzaHV0ZG93biwgZXhwbGljaXRseSBieSBhIHVzZXIsIG9yIHdoZW4gdGhlIHNvdXJjZSByZWNlaXZlcyBhIGJpbmxvZyBzZW5kIHJlcXVlc3QgZnJvbSBhIGR1cGxpY2F0ZSBzZXJ2ZXIgVVVJRCA8JXM+IDogRXJyb3IgJXMATXVsdGktdGhyZWFkZWQgcmVwbGljYSBzdGF0aXN0aWNzJXM6IHNlY29uZHMgZWxhcHNlZCA9ICVsdTsgZXZlbnRzIGFzc2lnbmVkID0gJWxsdTsgd29ya2VyIHF1ZXVlcyBmaWxsZWQgb3ZlciBvdmVycnVuIGxldmVsID0gJWx1OyB3YWl0ZWQgZHVlIGEgV29ya2VyIHF1ZXVlIGZ1bGwgPSAlbHU7IHdhaXRlZCBkdWUgdGhlIHRvdGFsIHNpemUgPSAlbHU7IHdhaXRlZCBhdCBjbG9jayBjb25mbGljdHMgPSAlbGx1IHdhaXRlZCAoY291bnQpIHdoZW4gV29ya2VycyBvY2N1cGllZCA9ICVsdSB3YWl0ZWQgd2hlbiBXb3JrZXJzIG9jY3VwaWVkID0gJWxsdQBSZXBsaWNhJXM6IE1UQSBSZWNvdmVyeSBoYXMgY29tcGxldGVkIGF0IHJlbGF5IGxvZyAlcywgcG9zaXRpb24gJWxsdSBzb3VyY2UgbG9nICVzLCBwb3NpdGlvbiAlbGx1LgBFcnJvciBpbml0aWFsaXppbmcgcmVsYXkgbG9nIHBvc2l0aW9uJXM6ICVzAFJlcGxpY2EgSS9PIHRocmVhZCVzOiBjb25uZWN0ZWQgdG8gc291cmNlICclc0AlczolZCcscmVwbGljYXRpb24gc3RhcnRlZCBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcwBSZXBsaWNhIEkvTyB0aHJlYWQlcyBraWxsZWQgd2hpbGUgY29ubmVjdGluZyB0byBzb3VyY2UAUmVwbGljYSBJL08gdGhyZWFkIGNvdWxkbid0IHJlZ2lzdGVyIG9uIHNvdXJjZQBGb3JjaW5nIHRvIHJlY29ubmVjdCByZXBsaWNhIEkvTyB0aHJlYWQlcwBGYWlsZWQgb24gcmVxdWVzdF9kdW1wKCklcwBMb2cgZW50cnkgb24gc291cmNlIGlzIGxvbmdlciB0aGFuIHJlcGxpY2FfbWF4X2FsbG93ZWRfcGFja2V0ICglbHUpIG9uIHJlcGxpY2EuIElmIHRoZSBlbnRyeSBpcyBjb3JyZWN0LCByZXN0YXJ0IHRoZSBzZXJ2ZXIgd2l0aCBhIGhpZ2hlciB2YWx1ZSBvZiByZXBsaWNhX21heF9hbGxvd2VkX3BhY2tldABTdG9wcGluZyByZXBsaWNhIEkvTyB0aHJlYWQgZHVlIHRvIG91dC1vZi1tZW1vcnkgZXJyb3IgZnJvbSBzb3VyY2UAUmVwbGljYSBJL08gdGhyZWFkIGFib3J0ZWQgd2hpbGUgd2FpdGluZyBmb3IgcmVsYXkgbG9nIHNwYWNlAFJlcGxpY2EgSS9PIHRocmVhZCBleGl0aW5nJXMsIHJlYWQgdXAgdG8gbG9nICclcycsIHBvc2l0aW9uICVzAEZhaWxlZCBkdXJpbmcgcmVwbGljYSB3b3JrZXIgaW5pdGlhbGl6YXRpb24lcwBSZXBsaWNhOiBNVEEgZ3JvdXAgcmVjb3ZlcnkgYXBwbGllciBtZXRhZGF0YSBiYXNlZCBvbiBXb3JrZXItSWQgJWx1LCBncm91cF9yZWxheV9sb2dfbmFtZSAlcywgZ3JvdXBfcmVsYXlfbG9nX3BvcyAlbGx1IGdyb3VwX3NvdXJjZV9sb2dfbmFtZSAlcywgZ3JvdXBfc291cmNlX2xvZ19wb3MgJWxsdQBFcnJvciBsb29raW5nIGZvciAlcy4AUmVwbGljYTogTVRBIGdyb3VwIHJlY292ZXJ5IGFwcGxpZXIgbWV0YWRhdGEgZ3JvdXBfc291cmNlX2xvZ19uYW1lICVzLCBldmVudF9zb3VyY2VfbG9nX3BvcyAlbGx1LgBFcnJvciBsb29raW5nIGZvciBmaWxlIGFmdGVyICVzLgBUaGlzIGFuIGVycm9yIGNudCAhPSBtdGFfY2hlY2twb2ludF9wZXJpb2QARmFpbGVkIGR1cmluZyByZXBsaWNhIHdvcmtlciB0aHJlYWQgY3JlYXRpb24lcwBGYWlsZWQgZHVyaW5nIHJlcGxpY2Egd29ya2VyIHRocmVhZCBjcmVhdGlvbiVzIChlcnJubz0gJWQpAEZhaWxlZCB0byBpbml0IHBhcnRpdGlvbnMgaGFzaABSZXBsaWNhIFNRTCB0aHJlYWQgOiBOREIgOiBUYWJsZXMgbm90IGF2YWlsYWJsZSBhZnRlciAlbHUgc2Vjb25kcy4gQ29uc2lkZXIgaW5jcmVhc2luZyAtLW5kYi13YWl0LXNldHVwIHZhbHVlAFJlcGxpY2EgU1FMIHRocmVhZCVzIGluaXRpYWxpemVkLCBzdGFydGluZyByZXBsaWNhdGlvbiBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcywgcmVsYXkgbG9nICclcycgcG9zaXRpb246ICVzACdTUUxfUkVQTElDQV9TS0lQX0NPVU5URVI9JWxkJyBleGVjdXRlZCBhdCByZWxheV9sb2dfZmlsZT0nJXMnLCByZWxheV9sb2dfcG9zPSclbGQnLCBzb3VyY2VfbG9nX25hbWU9JyVzJywgc291cmNlX2xvZ19wb3M9JyVsZCcgYW5kIG5ldyBwb3NpdGlvbiBhdCByZWxheV9sb2dfZmlsZT0nJXMnLCByZWxheV9sb2dfcG9zPSclbGQnLCBzb3VyY2VfbG9nX25hbWU9JyVzJywgc291cmNlX2xvZ19wb3M9JyVsZCcgAFJlcGxpY2EgKGFkZGl0aW9uYWwgaW5mbyk6ICVzIEVycm9yX2NvZGU6IE1ZLSUwNmQAUmVwbGljYTogJXMgRXJyb3JfY29kZTogTVktJTA2ZABFcnJvciBsb2FkaW5nIHVzZXItZGVmaW5lZCBsaWJyYXJ5LCByZXBsaWNhIFNRTCB0aHJlYWQgYWJvcnRlZC4gSW5zdGFsbCB0aGUgbWlzc2luZyBsaWJyYXJ5LCBhbmQgcmVzdGFydCB0aGUgcmVwbGljYSBTUUwgdGhyZWFkIHdpdGggIlNUQVJUIFJFUExJQ0EiLiBXZSBzdG9wcGVkIGF0IGxvZyAnJXMnIHBvc2l0aW9uICVzAEVycm9yIHJ1bm5pbmcgcXVlcnksIHJlcGxpY2EgU1FMIHRocmVhZCBhYm9ydGVkLiBGaXggdGhlIHByb2JsZW0sIGFuZCByZXN0YXJ0IHRoZSByZXBsaWNhIFNRTCB0aHJlYWQgd2l0aCAiU1RBUlQgUkVQTElDQSIuIFdlIHN0b3BwZWQgYXQgbG9nICclcycgcG9zaXRpb24gJXMAUmVwbGljYSBTUUwgdGhyZWFkJXMgZXhpdGluZywgcmVwbGljYXRpb24gc3RvcHBlZCBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcwBSZWFkIGludmFsaWQgZXZlbnQgZnJvbSBzb3VyY2U6ICclcycsIHNvdXJjZSBjb3VsZCBiZSBjb3JydXB0IGJ1dCBhIG1vcmUgbGlrZWx5IGNhdXNlIG9mIHRoaXMgaXMgYSBidWcAVGhlIHF1ZXVlIGV2ZW50IGZhaWxlZCBmb3IgY2hhbm5lbCAnJXMnIGFzIGl0cyBjb25maWd1cmF0aW9uIGlzIGludmFsaWQuAEFuIHVuZXhwZWN0ZWQgZXZlbnQgc2VxdWVuY2Ugd2FzIGRldGVjdGVkIGJ5IHRoZSBJTyB0aHJlYWQgd2hpbGUgcXVldWluZyB0aGUgZXZlbnQgcmVjZWl2ZWQgZnJvbSBzb3VyY2UgJyVzJyBiaW5hcnkgbG9nIGZpbGUsIGF0IHBvc2l0aW9uICVsbHUuACclcycgY2FuIG5vdCBiZSB1c2VkIGFzIGNsaWVudCBjaGFyYWN0ZXIgc2V0LiAnJXMnIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0IGNsaWVudCBjaGFyYWN0ZXIgc2V0IHdoaWxlIGNvbm5lY3RpbmcgdG8gc291cmNlLgBSZXBsaWNhJXM6IGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzQCVzOiVkJyxyZXBsaWNhdGlvbiByZXN1bWVkIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVzAG5leHQgbG9nICclcycgaXMgYWN0aXZlAG5leHQgbG9nICclcycgaXMgbm90IGFjdGl2ZQBSZXBsaWNhIFNRTCB0aHJlYWQlczogSS9PIGVycm9yIHJlYWRpbmcgZXZlbnQgKGVycm5vOiAlZCAgY3VyX2xvZy0+ZXJyb3I6ICVkKQBFcnJvciByZWFkaW5nIHJlbGF5IGxvZyBldmVudCVzOiAlcwAnQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyVzIGV4ZWN1dGVkJy4gUHJldmlvdXMgc3RhdGUgc291cmNlX2hvc3Q9JyVzJywgc291cmNlX3BvcnQ9ICV1LCBzb3VyY2VfbG9nX2ZpbGU9JyVzJywgc291cmNlX2xvZ19wb3M9ICVsZCwgc291cmNlX2JpbmQ9JyVzJy4gTmV3IHN0YXRlIHNvdXJjZV9ob3N0PSclcycsIHNvdXJjZV9wb3J0PSAldSwgc291cmNlX2xvZ19maWxlPSclcycsIHNvdXJjZV9sb2dfcG9zPSAlbGQsIHNvdXJjZV9iaW5kPSclcycuAFJlcGxpY2E6IENhbm5vdCBjcmVhdGUgbmV3IGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIHdoZW4gcmVwb3NpdG9yaWVzIGFyZSBvZiB0eXBlIEZJTEUuIENvbnZlcnQgcmVwbGljYSByZXBvc2l0b3JpZXMgdG8gVEFCTEUgdG8gcmVwbGljYXRlIGZyb20gbXVsdGlwbGUgc291cmNlcy4AbG9nICVzIGxpc3RlZCBpbiB0aGUgaW5kZXgsIGJ1dCBmYWlsZWQgdG8gc3RhdC4AQ291bGQgbm90IGZpbmQgZmlyc3QgbG9nIHdoaWxlIGNvdW50aW5nIHJlbGF5IGxvZyBzcGFjZS4AVW5hYmxlIHRvIHVzZSByZXBsaWNhJ3MgdGVtcG9yYXJ5IGRpcmVjdG9yeSAnJXMnLgBQYXRoICclcycgaXMgYSBkaXJlY3RvcnkgbmFtZSwgcGxlYXNlIHNwZWNpZnkgYSBmaWxlIG5hbWUgZm9yIC0tcmVsYXktbG9nIG9wdGlvbi4AUGF0aCAnJXMnIGlzIGEgZGlyZWN0b3J5IG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGZvciAtLXJlbGF5LWxvZy1pbmRleCBvcHRpb24uAE5laXRoZXIgLS1yZWxheS1sb2cgbm9yIC0tcmVsYXktbG9nLWluZGV4IHdlcmUgdXNlZDsgc28gcmVwbGljYXRpb24gbWF5IGJyZWFrIHdoZW4gdGhpcyBNeVNRTCBzZXJ2ZXIgYWN0cyBhcyBhIHJlcGxpY2EgYW5kIGhhcyBoaXMgaG9zdG5hbWUgY2hhbmdlZCEhIFBsZWFzZSB1c2UgJy0tcmVsYXktbG9nPSVzJyB0byBhdm9pZCB0aGlzIHByb2JsZW0uAEZhaWxlZCBpbiBvcGVuX2luZGV4X2ZpbGUoKSBjYWxsZWQgZnJvbSBSZWxheV9sb2dfaW5mbzo6cmxpX2luaXRfaW5mbygpLgBGYWlsZWQgaW4gaW5pdF9ndGlkX3NldHMoKSBjYWxsZWQgZnJvbSBSZWxheV9sb2dfaW5mbzo6cmxpX2luaXRfaW5mbygpLgBGYWlsZWQgaW4gb3Blbl9sb2coKSBjYWxsZWQgZnJvbSBSZWxheV9sb2dfaW5mbzo6cmxpX2luaXRfaW5mbygpLgBFcnJvciB3cml0aW5nIHJlbGF5IGxvZyBjb25maWd1cmF0aW9uLgBnZXRfbmRiX2Jsb2JzX3ZhbHVlOiBteV9tYWxsb2MoJXUpIGZhaWxlZABOREI6IFRocmVhZCBpZCAldSB0aW1lZCBvdXQgKDMwcykgd2FpdGluZyBmb3IgZXBvY2ggJXUvJXUgdG8gYmUgaGFuZGxlZC4gIFByb2dyZXNzIDogJXUvJXUgLT4gJXUvJXUuAE5EQjogSW5jb25zaXN0ZW5jeSBkZXRlY3RlZCBpbiBkaXN0cmlidXRlZCBwcml2aWxlZ2UgdGFibGVzLiBUYWJsZSAnJXMuJXMnIGlzIG5vdCBkaXN0cmlidXRlZABOREI6IENyZWF0aW5nICVzLiVzAE5EQjogRmx1c2hpbmcgJXMuJXMATkRCOiBDbGVhbmluZyBzdHJheSB0YWJsZXMgZnJvbSBkYXRhYmFzZSAnJXMnAE5EQjogRGlzY292ZXJlZCBtaXNzaW5nIGRhdGFiYXNlICclcycATkRCOiBEaXNjb3ZlcmVkIHJlbWFpbmluZyBkYXRhYmFzZSAnJXMnAE5EQjogbmRiY2x1c3Rlcl9maW5kX2FsbF9kYXRhYmFzZXMgcmV0cnk6ICV1IC0gJXMATkRCOiBuZGJjbHVzdGVyX2ZpbmRfYWxsX2RhdGFiYXNlcyBmYWlsOiAldSAtICVzAE5EQjogc2tpcHBpbmcgc2V0dXAgdGFibGUgJXMuJXMsIGluIHN0YXRlICVkAE5EQjogZmFpbGVkIHRvIHNldHVwIHRhYmxlICVzLiVzLCBlcnJvcjogJWQsICVzAE5EQjogbWlzc2luZyBmcm0gZm9yICVzLiVzLCBkaXNjb3ZlcmluZy4uLgBOREI6IG1pc21hdGNoIGluIGZybSBmb3IgJXMuJXMsIGRpc2NvdmVyaW5nLi4uAG5kYl9iaW5sb2dfc2V0dXA6IENsZWFuIHVwIGxlZnRvdmVycwBOREIgJXM6IHdhaXRpbmcgbWF4ICV1IHNlYyBmb3IgJXMgJXMuICBlcG9jaHM6ICgldS8ldSwldS8ldSwldS8ldSkgIGluamVjdG9yIHByb2NfaW5mbzogJXMATkRCICVzOiB3YWl0aW5nIG1heCAldSBzZWMgZm9yICVzICVzLiAgZXBvY2hzOiAoJXUvJXUsJXUvJXUsJXUvJXUpICBpbmplY3RvciBwcm9jX2luZm86ICVzIG1hcDogJXglMDh4AE5EQiAlczogZGlzdHJpYnV0aW5nICVzIHRpbWVkIG91dC4gSWdub3JpbmcuLi4ATkRCICVzOiBub3Qgd2FpdGluZyBmb3IgZGlzdHJpYnV0aW5nICVzAE5EQjogZGlzdHJpYnV0ZWQgJXMuJXMoJXUvJXUpIHR5cGU6ICVzKCV1KSBxdWVyeTogJyVzJyB0byAleCUwOHgATkRCOiBkaXN0cmlidXRpb24gb2YgJXMuJXMoJXUvJXUpIHR5cGU6ICVzKCV1KSBxdWVyeTogJyVzJyAtIGNvbXBsZXRlIQBOREIgU2NoZW1hIGRpc3Q6IERhdGEgbm9kZTogJWQgZmFpbGVkLCBzdWJzY3JpYmVyIGJpdG1hc2sgJXglMDh4AE5EQiBTY2hlbWEgZGlzdDogRGF0YSBub2RlOiAlZCByZXBvcnRzIHN1YnNjcmliZSBmcm9tIG5vZGUgJWQsIHN1YnNjcmliZXIgYml0bWFzayAleCUwOHgATkRCIFNjaGVtYSBkaXN0OiBEYXRhIG5vZGU6ICVkIHJlcG9ydHMgdW5zdWJzY3JpYmUgZnJvbSBub2RlICVkLCBzdWJzY3JpYmVyIGJpdG1hc2sgJXglMDh4AE5EQiBCaW5sb2c6IENvdWxkIG5vdCBkaXNjb3ZlciB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gbXlfZXJybm86ICVkAE5EQjogdW5rbm93biB2YWx1ZSBmb3IgYmlubG9nIHNpZ25hbGxpbmcgMHglWCwgJXMgbm90IGxvZ2dlZABOREI6IHJlcGx5IHRvICVzLiVzKCV1LyV1KSBmcm9tICVzIHRvICV4JTA4eABOREI6IENvdWxkIG5vdCByZWxlYXNlIHNsb2NrIG9uICclcy4lcycsIEVycm9yIGNvZGU6ICVkIE1lc3NhZ2U6ICVzAE5EQiBzY2hlbWE6IENvdWxkIG5vdCBmaW5kIHRhYmxlICclcy4lcycgaW4gTkRCAE5EQjogRGlzY2FyZGluZyBldmVudC4uLm5vIG9iajogJXMgKCV1LyV1KQBOREI6IERpc2NhcmRpbmcgZXZlbnQuLi5rZXk6ICVzIG5vbiBtYXRjaGluZyBpZC92ZXJzaW9uIFsldS8ldV0gIT0gWyV1LyV1XQBOREI6IENMRUFSX1NMT0NLIGtleTogJXMoJXUvJXUpICV4JTA4eCwgZnJvbSAlcyB0byAleCUwOHgATkRCIEJpbmxvZzogU2tpcHBpbmcgbG9jYWxseSBkZWZpbmVkIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLgBOREIgQmlubG9nOiBoYW5kbGluZyBvbmxpbmUgYWx0ZXIvcmVuYW1lAE5EQiBCaW5sb2c6IEZhaWxlZCB0byByZS1vcGVuIHNoYWRvdyB0YWJsZSAlcy4lcwBOREIgQmlubG9nOiBoYW5kbGluZyBvbmxpbmUgYWx0ZXIvcmVuYW1lIGRvbmUATkRCIEJpbmxvZzogU2tpcHBpbmcgZHJvcCBvZiBsb2NhbGx5IGRlZmluZWQgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIABOREIgQmlubG9nOiBTa2lwcGluZyByZW5hbWluZyBsb2NhbGx5IGRlZmluZWQgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIABOREIgQmlubG9nOiBTa2lwcGluZyBkcm9wIGRhdGFiYXNlICclcycgc2luY2UgaXQgY29udGFpbmVkIGxvY2FsIHRhYmxlcyBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAAR290IGRpc3RfcHJpdiBldmVudDogJXMsIGZsdXNoaW5nIHByaXZpbGVnZXMATkRCOiBnb3Qgc2NoZW1hIGV2ZW50IG9uICVzLiVzKCV1LyV1KSBxdWVyeTogJyVzJyB0eXBlOiAlcyglZCkgbm9kZTogJXUgc2xvY2s6ICV4JTA4eABOREIgc2NoZW1hOiBTa2lwcGluZyBvbGQgc2NoZW1hIG9wZXJhdGlvbihSRU5BTUVfVEFCTEVfTkVXKSBvbiAlcy4lcwBOREIgU2NoZW1hIGRpc3Q6IGNsdXN0ZXIgZmFpbHVyZSBhdCBlcG9jaCAldS8ldS4ATkRCIEJpbmxvZzogbmRiIHRhYmxlcyBpbml0aWFsbHkgcmVhZCBvbmx5IG9uIHJlY29ubmVjdC4ATkRCIFNjaGVtYSBkaXN0OiB1bmtub3duIGV2ZW50ICV1LCBpZ25vcmluZy4uLgBOREIgQmlubG9nOiBPcGVuaW5nIG5kYl9iaW5sb2dfaW5kZXg6ICVkLCAnJXMnAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBsb2NrIHRhYmxlIG5kYl9iaW5sb2dfaW5kZXgATkRCIEJpbmxvZzogSW5qZWN0aW5nIHJhbmRvbSB3cml0ZSBmYWlsdXJlAE5EQiBCaW5sb2c6IEZhaWxlZCB3cml0aW5nIHRvIG5kYl9iaW5sb2dfaW5kZXggZm9yIGVwb2NoICV1LyV1ICBvcmlnX3NlcnZlcl9pZCAldSBvcmlnX2Vwb2NoICV1LyV1IHdpdGggZXJyb3IgJWQuAE5EQiBCaW5sb2c6IFdyaXRpbmcgcm93ICglcykgdG8gbmRiX2JpbmxvZ19pbmRleCAtICVzAE5EQiBCaW5sb2c6IEZhaWxlZCBjb21taXR0aW5nIHRyYW5zYWN0aW9uIHRvIG5kYl9iaW5sb2dfaW5kZXggd2l0aCBlcnJvciAlZC4ATkRCIEJpbmxvZzogRmFpbGVkIHdyaXRpbmcgdG8gbmRiX2JpbmxvZ19pbmRleCB0YWJsZSB3aGlsZSByZXRyeWluZyBhZnRlciBraWxsIGR1cmluZyBzaHV0ZG93bgBOREI6IHNlcnZlciBpZCBzZXQgdG8gemVybyAtIGNoYW5nZXMgbG9nZ2VkIHRvIGJpbiBsb2cgd2l0aCBzZXJ2ZXIgaWQgemVybyB3aWxsIGJlIGxvZ2dlZCB3aXRoIGFub3RoZXIgc2VydmVyIGlkIGJ5IHJlcGxpY2EgbXlzcWxkcwBOREI6IHNlcnZlciBpZCBwcm92aWRlZCBpcyB0b28gbGFyZ2UgdG8gYmUgcmVwcmVzZW50ZWQgaW4gb3B0X3NlcnZlcl9pZF9iaXRzIG9yIGlzIHJlc2VydmVkAE5EQjogLS1uZGItbG9nLXRyYW5zYWN0aW9uLWlkIHJlcXVpcmVzIHYyIEJpbmxvZyByb3cgZXZlbnRzIGJ1dCBzZXJ2ZXIgaXMgdXNpbmcgdjEuAE5EQjogbmRiLWxvZy1hcHBseS1zdGF0dXMgZm9yY2luZyAlcy4lcyB0byBGVUxMIFVTRV9XUklURQBOREIgQmlubG9nOiAlcwAlcwAlcwBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgOiBQYXJzZSBlcnJvciBvbiBjb25mbGljdCBmbiA6ICVzAE5EQiBSZXBsaWNhOiBUYWJsZSAlcy4lcyA6ICVzAE5EQiBCaW5sb2c6IEZhaWxlZCB0byBnZXQgdGFibGUgJXMgZnJvbSBuZGI6ICVzLCAlZABOREIgQmlubG9nOiBOT1QgbG9nZ2luZyAlcwBOREIgQmlubG9nOiBGQUlMRUQgQ1JFQVRFIChESVNDT1ZFUikgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IENSRUFURSAoRElTQ09WRVIpIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBESVNDT1ZFUiBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogbG9nZ2luZyBvZiB0YWJsZSAlcyB3aXRoIEJMT0IgYXR0cmlidXRlIGFuZCBubyBQSyBpcyBub3Qgc3VwcG9ydGVkAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBjcmVhdGUgZXZlbnQgaW4gZGF0YWJhc2UuIEV2ZW50OiAlcyAgRXJyb3IgQ29kZTogJWQgIE1lc3NhZ2U6ICVzAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBjcmVhdGUgZXZlbnQgaW4gZGF0YWJhc2UuICBBdHRlbXB0IHRvIGNvcnJlY3Qgd2l0aCBkcm9wIGZhaWxlZC4gRXZlbnQ6ICVzIEVycm9yIENvZGU6ICVkIE1lc3NhZ2U6ICVzAE5EQiBCaW5sb2c6IFVuYWJsZSB0byBjcmVhdGUgZXZlbnQgaW4gZGF0YWJhc2UuICBBdHRlbXB0IHRvIGNvcnJlY3Qgd2l0aCBkcm9wIG9rLCBidXQgY3JlYXRlIGZhaWxlZC4gRXZlbnQ6ICVzIEVycm9yIENvZGU6ICVkIE1lc3NhZ2U6ICVzAE5EQiBCaW5sb2c6IGRpc2NvdmVyIHJldXNpbmcgb2xkIGV2IG9wAE5EQiBCaW5sb2c6IENyZWF0aW5nIE5kYkV2ZW50T3BlcmF0aW9uIGZhaWxlZCBmb3IgJXMATkRCIEJpbmxvZzogQ3JlYXRpbmcgTmRiRXZlbnRPcGVyYXRpb24gYmxvYiBmaWVsZCAldSBoYW5kbGVzIGZhaWxlZCAoY29kZT0lZCkgZm9yICVzAE5EQiBCaW5sb2c6IG5kYmV2ZW50LT5leGVjdXRlIGZhaWxlZCBmb3IgJXM7ICVkICVzAE5EQiBCaW5sb2c6IGxvZ2dpbmcgJXMgKCVzLCVzKQBOREIgQmlubG9nOiBVbmFibGUgdG8gZHJvcCBldmVudCBpbiBkYXRhYmFzZS4gRXZlbnQ6ICVzIEVycm9yIENvZGU6ICVkIE1lc3NhZ2U6ICVzAE5EQiAlczogJXMgdGltZWQgb3V0LiBJZ25vcmluZy4uLgBOREIgQmlubG9nOiB1bmhhbmRsZWQgZXJyb3IgJWQgZm9yIHRhYmxlICVzAE5EQiBCaW5sb2c6IGNsdXN0ZXIgZmFpbHVyZSBmb3IgJXMgYXQgZXBvY2ggJXUvJXUuAE5EQiBCaW5sb2c6IHVua25vd24gbm9uIGRhdGEgZXZlbnQgJWQgZm9yICVzLiBJZ25vcmluZy4uLgBOREI6IEJpbmxvZyBJbmplY3RvciBkaXNjYXJkaW5nIHJvdyBldmVudCBtZXRhIGRhdGEgYXMgc2VydmVyIGlzIHVzaW5nIHYxIHJvdyBldmVudHMuICgldSAleCkAcmVtb3ZlX2FsbF9ldmVudF9vcGVyYXRpb25zOiBSZW1haW5pbmcgb3BlbiB0YWJsZXM6IAAgICVzLiVzLCB1c2VfY291bnQ6ICV1AE5EQjogQ291bGQgbm90IGdldCBhcHBseSBzdGF0dXMgc2hhcmUATkRCIEJpbmxvZzogU2VydmVyIHNodXRkb3duIGRldGVjdGVkIHdoaWxlIHdhaXRpbmcgZm9yIG5kYmNsdXN0ZXIgdG8gc3RhcnQuLi4ATkRCIEJpbmxvZzogY2x1c3RlciBoYXMgYmVlbiByZXN0YXJ0ZWQgLS1pbml0aWFsIG9yIHdpdGggb2xkZXIgZmlsZXN5c3RlbS4gbmRiX2xhdGVzdF9oYW5kbGVkX2JpbmxvZ19lcG9jaDogJXUvJXUsIHdoaWxlIGN1cnJlbnQgZXBvY2g6ICV1LyV1LiBSRVNFVCBTT1VSQ0Ugc2hvdWxkIGJlIGlzc3VlZC4gUmVzZXR0aW5nIG5kYl9sYXRlc3RfaGFuZGxlZF9iaW5sb2dfZXBvY2guAE5EQiBCaW5sb2c6IGNsdXN0ZXIgaGFzIHJlY29ubmVjdGVkLiBDaGFuZ2VzIHRvIHRoZSBkYXRhYmFzZSB0aGF0IG9jY3VycmVkIHdoaWxlIGRpc2Nvbm5lY3RlZCB3aWxsIG5vdCBiZSBpbiB0aGUgYmlubG9nAE5EQiBCaW5sb2c6IHN0YXJ0aW5nIGxvZyBhdCBlcG9jaCAldS8ldQBOREIgQmlubG9nOiBuZGIgdGFibGVzIHdyaXRhYmxlAE5EQiBCaW5sb2c6IFNlcnZlciBzaHV0ZG93biBkZXRlY3RlZC4uLgBOREIgQmlubG9nOiBKdXN0IGxvc3Qgc2NoZW1hIGNvbm5lY3Rpb24sIGhhbmdpbmcgYXJvdW5kAE5EQiBCaW5sb2c6IC4uLmFuZCBvbiBvdXIgd2F5AE5EQjogZXJyb3IgJWx1ICglcykgb24gaGFuZGxpbmcgYmlubG9nIHNjaGVtYSBldmVudABOREIgQmlubG9nOiBGYWlsZWQgdG8gaW5qZWN0IGFwcGx5IHN0YXR1cyB3cml0ZSByb3cATkRCIEJpbmxvZzogRXJyb3IgZHVyaW5nIFJPTExCQUNLIG9mIEdDSSAldS8ldS4gRXJyb3I6ICVkAE5EQiBCaW5sb2c6IEVycm9yIGR1cmluZyBDT01NSVQgb2YgR0NJLiBFcnJvcjogJWQATkRCIEJpbmxvZzogbGF0ZXN0IHRyYW5zYWN0aW9uIGluIGVwb2NoICV1LyV1IG5vdCBpbiBiaW5sb2cgYXMgbGF0ZXN0IGhhbmRsZWQgZXBvY2ggaXMgJXUvJXUATkRCIEJpbmxvZzogUmVsZWFzZSBleHRyYSBzaGFyZSByZWZlcmVuY2VzAE5EQiBCaW5sb2c6IHJlbWFpbmluZyBvcGVuIHRhYmxlczogACAgJXMuJXMgc3RhdGU6ICV1IHVzZV9jb3VudDogJXUAV3JvbmcgdHJlZTogUGFyZW50IGRvZXNuJ3QgcG9pbnQgYXQgcGFyZW50AFdyb25nIHRyZWU6IFJvb3Qgc2hvdWxkIGJlIGJsYWNrAFdyb25nIHRyZWU6IEZvdW5kIHR3byByZWQgaW4gYSByb3cAV3JvbmcgdHJlZTogRm91bmQgcmlnaHQgPT0gbGVmdABXcm9uZyB0cmVlOiBJbmNvcnJlY3QgYmxhY2stY291bnQ6ICVkIC0gJWQAVXNlX2NvdW50OiBXcm9uZyBjb3VudCAlbHUgZm9yIG9yaWdpbiAlcABVc2VfY291bnQ6IFdyb25nIGNvdW50IGZvciBrZXkgYXQgJXAsICVsdSBzaG91bGQgYmUgJWx1AFdyb25nIG51bWJlciBvZiBlbGVtZW50czogJXUgKHNob3VsZCBiZSAldSkgZm9yIHRyZWUgYXQgJXAARXJyb3IgcmVhZGluZyByZXBsaWNhIHdvcmtlciBjb25maWd1cmF0aW9uAEVycm9yIHdyaXRpbmcgcmVwbGljYSB3b3JrZXIgY29uZmlndXJhdGlvbgBGYWlsZWQgdG8gb3BlbiByZWxheSBsb2cgJXMsIGVycm9yOiAlcwBFcnJvciB3aGVuIHdvcmtlciByZWFkIHJlbGF5IGxvZyBldmVudHMscmVsYXkgbG9nIG5hbWUgJXMsIHBvc2l0aW9uICVsbHUARmFpbGVkIHRvIGZpbmQgbmV4dCByZWxheSBsb2cgd2hlbiByZXRyeWluZyB0aGUgdHJhbnNhY3Rpb24sIGN1cnJlbnQgcmVsYXkgbG9nIGlzICVzAE11bHRpLXRocmVhZGVkIHJlcGxpY2E6IENvb3JkaW5hdG9yIGhhcyB3YWl0ZWQgJWx1IHRpbWVzIGhpdHRpbmcgcmVwbGljYV9wZW5kaW5nX2pvYnNfc2l6ZV9tYXg7IGN1cnJlbnQgZXZlbnQgc2l6ZSA9ICV6dS4ARmFpbGVkIHRvIHdyaXRlIHRoZSBEUk9QIHN0YXRlbWVudCBmb3IgdGVtcG9yYXJ5IHRhYmxlcyB0byBiaW5hcnkgbG9nAFdoZW4gb3BlbmluZyBIRUFQIHRhYmxlLCBjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IHRvIHdyaXRlICdERUxFVEUgRlJPTSBgJXNgLmAlc2AnIHRvIHRoZSBiaW5hcnkgbG9nAENvdWxkbid0IHJlcGFpciB0YWJsZTogJXMuJXMAQ291bGQgbm90IHJlbW92ZSB0ZW1wb3JhcnkgdGFibGU6ICclcycsIGVycm9yOiAlZABTeXN0ZW0gdGFibGUgJyUuKnMnIGlzIGV4cGVjdGVkIHRvIGJlIHRyYW5zYWN0aW9uYWwuAEVycm9yIHdyaXRpbmcgc291cmNlIGNvbmZpZ3VyYXRpb24uAEVycm9yIHJlYWRpbmcgc291cmNlIGNvbmZpZ3VyYXRpb24uAFNTTCBpbmZvcm1hdGlvbiBpbiB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5IGFyZSBpZ25vcmVkIGJlY2F1c2UgdGhpcyBNeVNRTCByZXBsaWNhIHdhcyBjb21waWxlZCB3aXRob3V0IFNTTCBzdXBwb3J0LgBQbHVnaW4gJyVzJyBvZiB0eXBlICVzIGZhaWxlZCBkZWluaXRpYWxpemF0aW9uAFBsdWdpbiAnJXMnIGhhcyByZWZfY291bnQ9JWQgYWZ0ZXIgZGVpbml0aWFsaXphdGlvbi4AU2h1dHRpbmcgZG93biBwbHVnaW4gJyVzJwBQbHVnaW4gJyVzJyByZWdpc3RyYXRpb24gYXMgYSAlcyBmYWlsZWQuAENvdWxkIG5vdCBvcGVuIHRoZSBteXNxbC5wbHVnaW4gdGFibGUuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQ291bGRuJ3QgbG9hZCBwbHVnaW4gbmFtZWQgJyVzJyB3aXRoIHNvbmFtZSAnJXMnLgBwbHVnaW4tbG9hZCBwYXJhbWV0ZXIgdG9vIGxvbmcAUGx1Z2luICclcycgd2lsbCBiZSBmb3JjZWQgdG8gc2h1dGRvd24AUGx1Z2luICclcycgaGFzIHJlZl9jb3VudD0lZCBhZnRlciBzaHV0ZG93bi4AVW5rbm93biB2YXJpYWJsZSB0eXBlIGNvZGUgMHgleCBpbiBwbHVnaW4gJyVzJy4AU2VydmVyIHZhcmlhYmxlICVzIG9mIHBsdWdpbiAlcyB3YXMgZm9yY2VkIHRvIGJlIHJlYWQtb25seTogc3RyaW5nIHZhcmlhYmxlIHdpdGhvdXQgdXBkYXRlX2Z1bmMgYW5kIFBMVUdJTl9WQVJfTUVNQUxMT0MgZmxhZwBNaXNzaW5nIHZhcmlhYmxlIG5hbWUgaW4gcGx1Z2luICclcycuAFRocmVhZCBsb2NhbCB2YXJpYWJsZSAnJXMnIG5vdCBhbGxvY2F0ZWQgaW4gcGx1Z2luICclcycuAE91dCBvZiBtZW1vcnkgZm9yIHBsdWdpbiAnJXMnLgBCYWQgb3B0aW9ucyBmb3IgcGx1Z2luICclcycuAFBhcnNpbmcgb3B0aW9ucyBmb3IgcGx1Z2luICclcycgZmFpbGVkLgBQbHVnaW4gJyVzJyBpcyBkaXNhYmxlZC4AUGx1Z2luICclcycgaGFzIGNvbmZsaWN0aW5nIHN5c3RlbSB2YXJpYWJsZXMAU2V0dGluZyBwZXJzaXN0ZW50IG9wdGlvbnMgZm9yIHBsdWdpbiAnJXMnIGZhaWxlZC4ARmFpbGVkIG9uIG15X25ldF93cml0ZSwgd3JpdGluZyB0byBzdGRlcnIgaW5zdGVhZDogJXMAUmV0cnlpbmcgcmVwYWlyIG9mOiAnJXMnIHdpdGhvdXQgcXVpY2sAUmV0cnlpbmcgcmVwYWlyIG9mOiAnJXMnIHdpdGgga2V5Y2FjaGUARm91bmQgJXMgb2YgJXMgcm93cyB3aGVuIHJlcGFpcmluZyAnJXMnAFdhcm5pbmc6IE9wdGltaXplIHRhYmxlIGdvdCBlcnJubyAlZCBvbiAlcy4lcywgcmV0cnlpbmcAV2FybmluZzogRW5hYmxpbmcga2V5cyBnb3QgZXJybm8gJWQgb24gJXMuJXMsIHJldHJ5aW5nAENoZWNraW5nIHRhYmxlOiAgICclcycAUmVjb3ZlcmluZyB0YWJsZTogJyVzJwBFcnJvciBpbiBjcmVhdGluZyBUQUJMRV9TSEFSRSBmcm9tICVzLmZybSBmaWxlLgBVbmFibGUgdG8gYWNxdWlyZSBsb2NrIG9uICVzLiVzAEVycm9yIGluIGFsbG9jYXRpb24gbWVtb3J5IGZvciBUQUJMRSBvYmplY3QuAEVycm9yIGluIGNyZWF0aW5nIGhhbmRsZXIgb2JqZWN0IGZvciB0YWJsZSAlcy4lcwBFcnJvciBpbiBzZXR0aW5nIGhhbmRsZXIgcmVmZXJlbmNlIGZvciB0YWJsZSAlcy4lcwBVbmFibGUgdG8gYWNxdWlyZSBsb2NrIG9uIHRhYmxlc3BhY2UgbmFtZSAlcwBFcnJvciBpbiBwcm9jZXNzaW5nIGdlbmVyYXRlZCBjb2x1bW5zIGZvciB0YWJsZSAlcy4lcwBFcnJvciBpbiBDcmVhdGluZyBERCBlbnRyeSBmb3IgJXMuJXMARXJyb3IgaW4gZmV0Y2hpbmcgJXMuJXMgdGFibGUgZGF0YSBmcm9tIGRpY3Rpb25hcnkARXJyb3IgaW4gZml4aW5nIFNFIGRhdGEgZm9yICVzLiVzAEVycm9yIGluIGNyZWF0aW5nIHN0b3JlZCBwcm9ncmFtICclcy4lcycAVW5hYmxlIHRvIG9wZW4gZGIub3B0IGZpbGUgJXMuIFVzaW5nIGRlZmF1bHQgQ2hhcmFjdGVyIHNldC4AVW5hYmxlIHRvIGludGlhbGl6ZSBJTyBjYWNoZSB0byBvcGVuIGRiLm9wdCBmaWxlICVzLiAAVW5hYmxlIHRvIGlkZW50aWZ5IHRoZSBjaGFyc2V0IGluICVzLiBVc2luZyBkZWZhdWx0IGNoYXJhY3RlciBzZXQuAGRiLm9wdCBmaWxlIG5vdCBmb3VuZCBmb3IgJXMgZGF0YWJhc2UuIFVzaW5nIGRlZmF1bHQgQ2hhcmFjdGVyIHNldC4ARXZlbnQgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiBteXNxbC5ldmVudC50aW1lX3pvbmUuAEV2ZW50ICclcycuJyVzJzogaGFzIGludmFsaWQgdGltZSB6b25lIHZhbHVlIABFdmVudCAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uIG15c3FsLmV2ZW50LmNoYXJhY3Rlcl9zZXRfY2xpZW50LgBFdmVudCAnJXMnLiclcyc6IGludmFsaWQgdmFsdWUgaW4gY29sdW1uIG15c3FsLmV2ZW50LmNvbGxhdGlvbl9jb25uZWN0aW9uLgBGYWlsZWQgdG8gb3BlbiBteXNxbC5ldmVudCBUYWJsZS4AUGFyc2luZyAnJXMuJXMnIHJvdXRpbmUgYm9keSBmYWlsZWQuJXMARmFpbGVkIHRvIG9wZW4gbXlzcWwucHJvYyBUYWJsZS4ARmFpbGVkIHRvIHJlYWQgbXlzcWwucHJvYyB0YWJsZS4ARm91bmQgJXMgZmlsZSBpbiBteXNxbCBzY2hlbWEuIEREIHdpbGwgY3JlYXRlIC5pYmQgZmlsZSB3aXRoIHNhbWUgbmFtZS4gUGxlYXNlIHJlbmFtZSB0YWJsZSBhbmQgc3RhcnQgdXBncmFkZSBwcm9jZXNzIGFnYWluLgBVbmFibGUgdG8gb3BlbiB0aGUgZGF0YSBkaXJlY3RvcnkgJXMgZHVyaW5nIGNsZWFuIHVwIGFmdGVyIHVwZ3JhZGUgZmFpbGVkAEZhaWxlZCB0byBzZXQgcGF0aCAlcwBGYWlsZWQgdG8gb3BlbiBkaXIgJXMATkRCOiBGb3VuZCBlbXB0eSBub2RlaWQgc3BlY2lmaWVkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBDb3VsZCBub3QgcGFyc2UgJyVzJyBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogSW52YWxpZCBub2RlaWQgJWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IEZvdW5kIGR1cGxpY2F0ZSBub2RlaWQgJWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IFRoZSBzaXplIG9mIHRoZSBjbHVzdGVyIGNvbm5lY3Rpb24gcG9vbCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2Ygbm9kZWlkcyBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogVGhlIG5vZGVpZCBzcGVjaWZpZWQgYnkgLS1uZGItbm9kZWlkIG11c3QgYmUgZXF1YWwgdG8gdGhlIGZpcnN0IG5vZGVpZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogdXNpbmcgbm9kZWlkICV1AE5EQjogZmFpbGVkIHRvIGFsbG9jYXRlIGdsb2JhbCBuZGIgY2x1c3RlciBjb25uZWN0aW9uAE5EQjogZmFpbGVkIHRvIGFsbG9jYXRlIGdsb2JhbCBuZGIgb2JqZWN0AE5EQlsldV06IHVzaW5nIG5vZGVpZCAldQBOREJbJXVdOiBmYWlsZWQgdG8gYWxsb2NhdGUgY2x1c3RlciBjb25uZWN0IG9iamVjdABOREJbJXVdOiBzdGFydGluZyBjb25uZWN0IHRocmVhZABOREJbJXVdOiBOb2RlSUQ6ICVkLCAlcwBOREJbJXVdOiBmYWlsZWQgdG8gc3RhcnQgY29ubmVjdCB0aHJlYWQATkRCOiBlcnJvciAoJXUpICVzAElnbm9yZWQgcmVjZWl2ZSB0aHJlYWQgQ1BVIG1hc2ssIG1hc2sgdG9vIHNob3J0LCAldSBDUFVzIG5lZWRlZCBpbiBtYXNrLCBvbmx5ICV1IENQVXMgcHJvdmlkZWQARXZlbnQgRXJyb3I6IEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGNyZWF0aW5nIHF1ZXJ5IHN0cmluZywgYmVmb3JlIHdyaXRpbmcgaXQgaW50byBiaW5hcnkgbG9nLgBFdmVudCBTY2hlZHVsZXI6IEVycm9yIHdoaWxlIGxvYWRpbmcgZnJvbSBkaXNrLgBFdmVudCBTY2hlZHVsZXI6IEVycm9yIGdldHRpbmcgZXZlbnQgb2JqZWN0LgBFdmVudCBTY2hlZHVsZXI6IEVycm9yIHdoaWxlIGxvYWRpbmcgZXZlbnRzIGZyb20gbXlzcWwuZXZlbnRzLlRoZSB0YWJsZSBwcm9iYWJseSBjb250YWlucyBiYWQgZGF0YSBvciBpcyBjb3JydXB0ZWQAVW5hYmxlIHRvIG9idGFpbiBsb2NrIGZvciBkcm9wcGluZyBldmVudCAlcyBmcm9tIHNjaGVtYSAlcwBVbmFibGUgdG8gZHJvcCBldmVudCAlcyBmcm9tIHNjaGVtYSAlcwBTZXJ2ZXIgb3ZlcmNvbWVzIHRoZSB0ZW1wb3JhcnkgJ291dCBvZiBtZW1vcnknIGluICclZCcgdHJpZXMgd2hpbGUgYXR0YWNoaW5nIHRvIHNlc3Npb24gdGhyZWFkIGR1cmluZyB0aGUgZ3JvdXAgY29tbWl0IHBoYXNlLgBVbmFibGUgdG8gcmVzaXplIGJpbmxvZyBJT0NBQ0hFIGF1eGlsaWFyeSBmaWxlAGZpbGUgJXMgd2FzIG5vdCBwdXJnZWQgYmVjYXVzZSBpdCB3YXMgYmVpbmcgcmVhZCBieSB0aHJlYWQgbnVtYmVyICV1AEkvTyBlcnJvciByZWFkaW5nIHRoZSBoZWFkZXIgZnJvbSB0aGUgYmluYXJ5IGxvZywgZXJybm89JWQsIGlvIGNhY2hlIGNvZGU9JWQARmFpbGVkIHRvIG9wZW4gbG9nIChmaWxlICclcycsIGVycm5vICVkKQBGYWlsZWQgdG8gY3JlYXRlIGEgY2FjaGUgb24gbG9nIChmaWxlICclcycpAExvZyBmaWxlbmFtZSBleHRlbnNpb24gbnVtYmVyIGV4aGF1c3RlZDogJTA2bHUuIFBsZWFzZSBmaXggdGhpcyBieSBhcmNoaXZpbmcgb2xkIGxvZ3MgYW5kIHVwZGF0aW5nIHRoZSBpbmRleCBmaWxlcy4ATG9nIGZpbGVuYW1lIHRvbyBsYXJnZTogJXMlcyAoJXp1KS4gUGxlYXNlIGZpeCB0aGlzIGJ5IGFyY2hpdmluZyBvbGQgbG9ncyBhbmQgdXBkYXRpbmcgdGhlIGluZGV4IGZpbGVzLgBOZXh0IGxvZyBleHRlbnNpb246ICVsdS4gUmVtYWluaW5nIGxvZyBmaWxlbmFtZSBleHRlbnNpb25zOiAlbHUuIFBsZWFzZSBjb25zaWRlciBhcmNoaXZpbmcgc29tZSBsb2dzLgBDb3VsZCBub3Qgb3BlbiAlcyBmb3IgbG9nZ2luZyAoZXJyb3IgJWQpLiBUdXJuaW5nIGxvZ2dpbmcgb2ZmIGZvciB0aGUgd2hvbGUgZHVyYXRpb24gb2YgdGhlIE15U1FMIHNlcnZlciBwcm9jZXNzLiBUbyB0dXJuIGl0IG9uIGFnYWluOiBmaXggdGhlIGNhdXNlLCBzaHV0ZG93biB0aGUgTXlTUUwgc2VydmVyIGFuZCByZXN0YXJ0IGl0LgBNWVNRTF9CSU5fTE9HOjpvcGVuX2luZGV4X2ZpbGUgZmFpbGVkIHRvIHN5bmMgdGhlIGluZGV4IGZpbGUuAEVycm9yIHJlYWRpbmcgR1RJRHMgZnJvbSByZWxheWxvZzogJWQAJWx1IGV2ZW50cyByZWFkIGluIHJlbGF5bG9nIGZpbGUgJyVzJyBmb3IgdXBkYXRpbmcgUmV0cmlldmVkX0d0aWRfU2V0IGFuZC9vciBJTyB0aHJlYWQgdHJhbnNhY3Rpb24gcGFyc2VyIHN0YXRlLgBFcnJvciByZWFkaW5nIEdUSURzIGZyb20gYmluYXJ5IGxvZzogJWQAUmVhZCAlbHUgZXZlbnRzIGZyb20gYmluYXJ5IGxvZyBmaWxlICclcycgdG8gZGV0ZXJtaW5lIHRoZSBHVElEcyBwdXJnZWQgZnJvbSBiaW5hcnkgbG9ncy4ATVlTUUxfQklOX0xPRzo6b3BlbiBmYWlsZWQgdG8gZ2VuZXJhdGUgbmV3IGZpbGUgbmFtZS4ATVlTUUxfQklOX0xPRzo6b3BlbiBmYWlsZWQgdG8gc3luYyB0aGUgaW5kZXggZmlsZS4AQ291bGQgbm90IHVzZSAlcyBmb3IgbG9nZ2luZyAoZXJyb3IgJWQpLiBUdXJuaW5nIGxvZ2dpbmcgb2ZmIGZvciB0aGUgd2hvbGUgZHVyYXRpb24gb2YgdGhlIE15U1FMIHNlcnZlciBwcm9jZXNzLiBUbyB0dXJuIGl0IG9uIGFnYWluOiBmaXggdGhlIGNhdXNlLCBzaHV0ZG93biB0aGUgTXlTUUwgc2VydmVyIGFuZCByZXN0YXJ0IGl0LgBXaGlsZSByZWJ1aWxkaW5nIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byBjbG9zZSB0aGUgaW5kZXggZmlsZS4AV2hpbGUgcmVidWlsZGluZyBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gZGVsZXRlIHRoZSBleGlzdGluZyBpbmRleCBmaWxlLiBJdCBjb3VsZCBiZSB0aGF0IGZpbGUgaXMgYmVpbmcgdXNlZCBieSBzb21lIG90aGVyIHByb2Nlc3MuAFdoaWxlIHJlYnVpbGRpbmcgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIHJlbmFtZSB0aGUgbmV3IGluZGV4IGZpbGUgdG8gdGhlIGV4aXN0aW5nIGluZGV4IGZpbGUuAEFmdGVyIHJlYnVpbGRpbmcgdGhlIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byBvcGVuIHRoZSBpbmRleCBmaWxlLgBNWVNRTF9CSU5fTE9HOjphZGRfbG9nX3RvX2luZGV4IGZhaWxlZCB0byBhcHBlbmQgbG9nIGZpbGUgbmFtZTogJXMsIHRvIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4ARmFpbGVkIHRvIGxvY2F0ZSBvbGQgYmlubG9nIG9yIHJlbGF5IGxvZyBmaWxlcwBGYWlsZWQgdG8gZGVsZXRlIGZpbGUgJyVzJwBNWVNRTF9CSU5fTE9HOjpzZXRfY3Jhc2hfc2FmZV9pbmRleF9maWxlX25hbWUgZmFpbGVkIHRvIHNldCBmaWxlIG5hbWUuAE1ZU1FMX0JJTl9MT0c6Om9wZW5fY3Jhc2hfc2FmZV9pbmRleF9maWxlIGZhaWxlZCB0byBvcGVuIHRlbXBvcmFyeSBpbmRleCBmaWxlLgBuZXh0IGxvZyBlcnJvcjogJWQgIG9mZnNldDogJXMgIGxvZzogJXMgaW5jbHVkZWQ6ICVkACVzIGZhaWxlZCB0byBvcGVuIHRoZSBjcmFzaCBzYWZlIGluZGV4IGZpbGUuACVzIGZhaWxlZCB0byBjb3B5IGluZGV4IGZpbGUgdG8gY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgAlcyBmYWlsZWQgdG8gY2xvc2UgdGhlIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4AJXMgZmFpbGVkIHRvIG1vdmUgY3Jhc2ggc2FmZSBpbmRleCBmaWxlIHRvIGluZGV4IGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3Mgd2FzIGNhbGxlZCB3aXRoIGZpbGUgJXMgbm90IGxpc3RlZCBpbiB0aGUgaW5kZXguAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIHN5bmMgdGhlIGluZGV4IGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIGNvcHkgJXMgdG8gcmVnaXN0ZXIgZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gZmx1c2ggcmVnaXN0ZXIgZmlsZS4ATVlTUUxfQklOX0xPRzo6cHVyZ2VfbG9ncyBmYWlsZWQgdG8gdXBkYXRlIHRoZSBpbmRleCBmaWxlAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIHByb2Nlc3MgcmVnaXN0ZXJlZCBmaWxlcyB0aGF0IHdvdWxkIGJlIHB1cmdlZC4ATVlTUUxfQklOX0xPRzo6c2V0X3B1cmdlX2luZGV4X2ZpbGVfbmFtZSBmYWlsZWQgdG8gc2V0IGZpbGUgbmFtZS4ATVlTUUxfQklOX0xPRzo6b3Blbl9wdXJnZV9pbmRleF9maWxlIGZhaWxlZCB0byBvcGVuIHJlZ2lzdGVyIGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2luZGV4X2VudHJ5IGZhaWxlZCB0byByZWluaXQgcmVnaXN0ZXIgZmlsZSBmb3IgcmVhZABNWVNRTF9CSU5fTE9HOjpwdXJnZV9pbmRleF9lbnRyeSBlcnJvciAlZCByZWFkaW5nIGZyb20gcmVnaXN0ZXIgZmlsZS4ARmFpbGVkIHRvIGV4ZWN1dGUgbXlzcWxfZmlsZV9zdGF0IG9uIGZpbGUgJyVzJwBGYWlsZWQgdG8gZGVsZXRlIGxvZyBmaWxlICclcyc7IGNvbnNpZGVyIGV4YW1pbmluZyBjb3JyZXNwb25kZW5jZSBvZiB5b3VyIGJpbmxvZyBpbmRleCBmaWxlIHRvIHRoZSBhY3R1YWwgYmlubG9nIGZpbGVzAEZhaWxlZCB0byBkZWxldGUgZmlsZSAnJXMnIGFuZCByZWFkIHRoZSBiaW5sb2cgaW5kZXggZmlsZQBGYWlsZWQgdG8gZGVsZXRlIGxvZyBmaWxlICclcycAJXMgQW4gaW5jaWRlbnQgZXZlbnQgaGFzIGJlZW4gd3JpdHRlbiB0byB0aGUgYmluYXJ5IGxvZyB3aGljaCB3aWxsIHN0b3AgdGhlIHJlcGxpY2FzLgBmaW5kX2xvZ19wb3MoKSBmYWlsZWQgKGVycm9yOiAlZCkAUmVjb3ZlcmluZyBhZnRlciBhIGNyYXNoIHVzaW5nICVzAEZhaWxlZCB0byBvcGVuIHRoZSBjcmFzaGVkIGJpbmxvZyBmaWxlIHdoZW4gc291cmNlIHNlcnZlciBpcyByZWNvdmVyaW5nIGl0LgBGYWlsZWQgdG8gdHJpbSB0aGUgY3Jhc2hlZCBiaW5sb2cgZmlsZSB3aGVuIHNvdXJjZSBzZXJ2ZXIgaXMgcmVjb3ZlcmluZyBpdC4AQ3Jhc2hlZCBiaW5sb2cgZmlsZSAlcyBzaXplIGlzICVsbHUsIGJ1dCByZWNvdmVyZWQgdXAgdG8gJWxsdS4gQmlubG9nIHRyaW1tZWQgdG8gJWxsdSBieXRlcy4ARmFpbGVkIHRvIGNsZWFyIExPR19FVkVOVF9CSU5MT0dfSU5fVVNFX0YgZm9yIHRoZSBjcmFzaGVkIGJpbmxvZyBmaWxlIHdoZW4gc291cmNlIHNlcnZlciBpcyByZWNvdmVyaW5nIGl0LgBGYWlsZWQgdG8gcnVuICdhZnRlcl9zeW5jJyBob29rcwAlcyBIZW5jZSB0dXJuaW5nIGxvZ2dpbmcgb2ZmIGZvciB0aGUgd2hvbGUgZHVyYXRpb24gb2YgdGhlIE15U1FMIHNlcnZlciBwcm9jZXNzLiBUbyB0dXJuIGl0IG9uIGFnYWluOiBmaXggdGhlIGNhdXNlLCBzaHV0ZG93biB0aGUgTXlTUUwgc2VydmVyIGFuZCByZXN0YXJ0IGl0LgBGYWlsZWQgdG8gcnVuICdhZnRlcl9mbHVzaCcgaG9va3MAQ3Jhc2ggcmVjb3ZlcnkgZmFpbGVkLiBFaXRoZXIgY29ycmVjdCB0aGUgcHJvYmxlbSAoaWYgaXQncywgZm9yIGV4YW1wbGUsIG91dCBvZiBtZW1vcnkgZXJyb3IpIGFuZCByZXN0YXJ0LCBvciBkZWxldGUgKG9yIHJlbmFtZSkgYmluYXJ5IGxvZyBhbmQgc3RhcnQgbXlzcWxkIHdpdGggLS10Yy1oZXVyaXN0aWMtcmVjb3Zlcj17Y29tbWl0fHJvbGxiYWNrfQBUaGUgZm9sbG93aW5nIHdhcm5pbmcgd2FzIHN1cHByZXNzZWQgJWQgdGltZXMgZHVyaW5nIHRoZSBsYXN0ICVkIHNlY29uZHMgaW4gdGhlIGVycm9yIGxvZwBOREI6ICVzAE5EQiAlczogJXMATkRCOiBVbmFibGUgdG8gcHVyZ2UgJXMuJXMgRmlsZT0lcyAoZmFpbGVkIHRvIHNldHVwIHRoZCkAVW5rbm93biBjb2xsYXRpb24gIyVsdS4Ac3ludGF4IGVycm9yIGluIGlubm9kYl9sb2dfZ3JvdXBfaG9tZV9kaXIAc3ludGF4IGVycm9yIGluIGlubm9kYl91bmRvX2RpcmVjdG9yeQBJbm5vREI6IGlubm9kYl9idWZmZXJfcG9vbF9maWxlbmFtZSBjYW5ub3QgaGF2ZSBjb2xvbiAoOikgaW4gdGhlIGZpbGUgbmFtZS4ASW5ub0RCOiBJbnZhbGlkIHBhZ2Ugc2l6ZT0lbHUuAElubm9EQjogaW5ub2RiX21heF9kaXJ0eV9wYWdlc19wY3RfbHdtIGNhbm5vdCBiZSBzZXQgaGlnaGVyIHRoYW4gaW5ub2RiX21heF9kaXJ0eV9wYWdlc19wY3QuIFNldHRpbmcgaW5ub2RiX21heF9kaXJ0eV9wYWdlc19wY3RfbHdtIHRvICVsZgBJbm5vREI6IGlubm9kYl9pb19jYXBhY2l0eSBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIGlubm9kYl9pb19jYXBhY2l0eV9tYXguIFNldHRpbmcgaW5ub2RiX2lvX2NhcGFjaXR5IHRvICVsdQAlcyBhbmQgJXMgZmlsZSBuYW1lcyBzZWVtIHRvIGJlIHRoZSBzYW1lLgBUcmFuc2FjdGlvbiBub3QgcmVnaXN0ZXJlZCBmb3IgTXlTUUwgMlBDLCBidXQgdHJhbnNhY3Rpb24gaXMgYWN0aXZlAE15U1FMIGlzIGNsb3NpbmcgYSBjb25uZWN0aW9uIHRoYXQgaGFzIGFuIGFjdGl2ZSBJbm5vREIgdHJhbnNhY3Rpb24uICVsbHUgcm93IG1vZGlmaWNhdGlvbnMgd2lsbCByb2xsIGJhY2suAElubm9EQjogZmFpbCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLiBOdW1iZXIgb2YgSW5kZXg6JWx1LCBhcnJheSBzaXplOiVsdQBDYW5ub3QgZmluZCBpbmRleCAlcyBpbiBJbm5vREIgaW5kZXggZGljdGlvbmFyeS4ARm91bmQgaW5kZXggJXMgd2hvc2UgY29sdW1uIGluZm8gZG9lcyBub3QgbWF0Y2ggdGhhdCBvZiBNeVNRTC4ARmFpbGVkIHRvIG9wZW4gdGFibGUgJXMuAEJ1aWxkIElubm9EQiBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgVGFibGUgJXMgZmFpbGVkAFRhYmxlICVzIGhhcyBhIHByaW1hcnkga2V5IGluIElubm9EQiBkYXRhIGRpY3Rpb25hcnksIGJ1dCBub3QgaW4gTXlTUUwhAFRhYmxlICVzIGhhcyBubyBwcmltYXJ5IGtleSBpbiBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5LCBidXQgaGFzIG9uZSBpbiBNeVNRTCEgSWYgeW91IGNyZWF0ZWQgdGhlIHRhYmxlIHdpdGggYSBNeVNRTCB2ZXJzaW9uIDwgMy4yMy41NCBhbmQgZGlkIG5vdCBkZWZpbmUgYSBwcmltYXJ5IGtleSwgYnV0IGRlZmluZWQgYSB1bmlxdWUga2V5IHdpdGggYWxsIG5vbi1OVUxMIGNvbHVtbnMsIHRoZW4gTXlTUUwgaW50ZXJuYWxseSB0cmVhdHMgdGhhdCBrZXkgYXMgdGhlIHByaW1hcnkga2V5LiBZb3UgY2FuIGZpeCB0aGlzIGVycm9yIGJ5IGR1bXAgKyBEUk9QICsgQ1JFQVRFICsgcmVpbXBvcnQgb2YgdGhlIHRhYmxlLgBUYWJsZSAlcyBrZXlfdXNlZF9vbl9zY2FuIGlzICVsdSBldmVuIHRob3VnaCB0aGVyZSBpcyBubyBwcmltYXJ5IGtleSBpbnNpZGUgSW5ub0RCLgBQYXJ0aXRpb24gdGFibGUgJXMgb3BlbmVkIGFmdGVyIGNvbnZlcnRpbmcgdG8gbG93ZXIgY2FzZS4gVGhlIHRhYmxlIG1heSBoYXZlIGJlZW4gbW92ZWQgZnJvbSBhIGNhc2UtaW5zZW5zaXRpdmUgZmlsZSBzeXN0ZW0uIFBsZWFzZSByZWNyZWF0ZSB0aGUgdGFibGUgaW4gdGhlIGN1cnJlbnQgZmlsZSBzeXN0ZW0uAENhbm5vdCByZXBsYWNlIGVycm9yIG1lc3NhZ2UgKCVzLCVzLCVzKSAiJXMiIHdpdGggIiVzIjsgd3JvbmcgbnVtYmVyIG9yIHR5cGUgb2YgJSUgc3Vic2l0dXRpb25zLgBUYWJsZSBmb3IgZXJyb3IgbWVzc2FnZSByZXBsYWNlbWVudHMgY291bGQgbm90IGJlIGZvdW5kIG9yIHJlYWQsIG9yIG9uZSBvciBtb3JlIHJlcGxhY2VtZW50cyBjb3VsZCBub3QgYmUgYXBwbGllZC4AJXM6ICVzAFRhYmxlICclLTE5MnMnOiBEZWxldGUgZnJvbSBwYXJ0ICVkIGZhaWxlZCB3aXRoIGVycm9yICVkLiBCdXQgaXQgd2FzIGFscmVhZHkgaW5zZXJ0ZWQgaW50byBwYXJ0ICVkLCB3aGVuIG1vdmluZyB0aGUgbWlzcGxhY2VkIHJvdyEgUGxlYXNlIG1hbnVhbGx5IGZpeCB0aGUgZHVwbGljYXRlIHJvdzogJXMAQ29tbWFuZCAnJXMnIGNhbm5vdCBiZSBhYm9ydGVkLiBUaGUgdHJpZ2dlciBlcnJvciB3YXMgKCVkKSBbJXNdOiAlcwBFdmVudCAnJXMnIGNhbm5vdCBiZSBhYm9ydGVkLiBUaGUgdHJpZ2dlciBlcnJvciB3YXMgKCVkKSBbJXNdOiAlcwAlcy4gVGhlIHRyaWdnZXIgZXJyb3Igd2FzICglZCkgWyVzXTogJXMAUmVwbGljYSBTUUw6IENvbmZpZ3VyYXRpb24gd2l0aCBudW1iZXIgb2YgcmVwbGljYXRpb24gc291cmNlcyA9ICV1JyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYXBwbHlpbmcgdG8gTmRiAFJlcGxpY2EgU1FMOiBDb25maWd1cmF0aW9uICdyZXBsaWNhX3BhcmFsbGVsX3dvcmtlcnMgPSAlbHUnIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhcHBseWluZyB0byBOZGIATkRCICVzOiBkaXN0cmlidXRpbmcgJXMgZXJyOiAldQBTdG9yaW5nIE15U1FMIHVzZXIgbmFtZSBvciBwYXNzd29yZCBpbmZvcm1hdGlvbiBpbiB0aGUgY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5IGlzIG5vdCBzZWN1cmUgYW5kIGlzIHRoZXJlZm9yZSBub3QgcmVjb21tZW5kZWQuIFBsZWFzZSBjb25zaWRlciB1c2luZyB0aGUgVVNFUiBhbmQgUEFTU1dPUkQgY29ubmVjdGlvbiBvcHRpb25zIGZvciBTVEFSVCBSRVBMSUNBOyBzZWUgdGhlICdTVEFSVCBSRVBMSUNBIFN5bnRheCcgaW4gdGhlIE15U1FMIE1hbnVhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4ARkxVU0ggUkVMQVkgTE9HUyBjYW5ub3QgYmUgcGVyZm9ybWVkIG9uIGNoYW5uZWwgJyUtLjE5MnMnLgBSZXBsaWNhIGNoYW5uZWwgJyVzJyBkb2VzIG5vdCBleGlzdC4AQ2FuJ3QgZmluZCBzeW1ib2wgJyUtLjEyOHMnIGluIGxpYnJhcnkuAENhbid0IG9wZW4gc2hhcmVkIGxpYnJhcnkgJyUtLjE5MnMnIChlcnJubzogJWQgJS0uMTI4cykuAFRocmVhZCBwcmlvcml0eSBhdHRyaWJ1dGUgc2V0dGluZyBpbiBSZXNvdXJjZSBHcm91cCBTUUwgc2hhbGwgYmUgaWdub3JlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgcGxhdGZvcm0gb3IgaW5zdWZmaWNpZW50IHByaXZpbGVnZS4AT3B0aW9uIGJpbmxvZ19jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX2NhY2hlX3NpemUgZXF1YWwgdG8gbWF4X2JpbmxvZ19jYWNoZV9zaXplLgBPcHRpb24gYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KSBpcyBncmVhdGVyIHRoYW4gbWF4X2JpbmxvZ19zdG10X2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZS4AQ2FuJ3QgZ2VuZXJhdGUgYSB1bmlxdWUgbG9nLWZpbGVuYW1lICUtLjIwMHMuKDEtOTk5KS4ARXJyb3IgcmVhZGluZyBmaWxlICclLS4yMDBzJyAoZXJybm86ICVkIC0gJXMpAEVycm9yIHdyaXRpbmcgZmlsZSAnJS0uMjAwcycgKGVycm5vOiAlZCAtICVzKQAlcyBTdGF0ZW1lbnQ6ICVzACVzOiBGb3JjaW5nIGNsb3NlIG9mIHRocmVhZCAlbGQgIHVzZXI6ICclLS40OHMnLgAlczogU2h1dGRvd24gY29tcGxldGUgKG15c3FsZCAlcykgICVzLgBDYW5ub3QgaGF2ZSBzYW1lIGJhc2UgbmFtZSAnJXMnIGZvciBib3RoIGJpbmFyeSBhbmQgcmVsYXkgbG9ncy4gUGxlYXNlIGNoZWNrICVzIChkZWZhdWx0ICclcycgaWYgLS1sb2ctYmluIG9wdGlvbiBpcyBub3QgdXNlZCwgZGVmYXVsdCAnJXMnIGlmIC0tbG9nLWJpbiBvcHRpb24gaXMgdXNlZCB3aXRob3V0IGFyZ3VtZW50KSBhbmQgJXMgKGRlZmF1bHQgJyVzJykgb3B0aW9ucyB0byBlbnN1cmUgdGhleSBkbyBub3QgY29uZmxpY3QuAEdUSURfTU9ERSA9IE9OIHJlcXVpcmVzIEVORk9SQ0VfR1RJRF9DT05TSVNURU5DWSA9IE9OLgBZb3UgaGF2ZSBub3QgcHJvdmlkZWQgYSBtYW5kYXRvcnkgc2VydmVyLWlkLiBTZXJ2ZXJzIGluIGEgcmVwbGljYXRpb24gdG9wb2xvZ3kgbXVzdCBoYXZlIHVuaXF1ZSBzZXJ2ZXItaWRzLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHByb3BlciBzZXJ2ZXIgc3RhcnQtdXAgcGFyYW1ldGVycyBkb2N1bWVudGF0aW9uLgBBYm9ydGVkIGNvbm5lY3Rpb24gJXUgdG8gZGI6ICclLS4xOTJzJyB1c2VyOiAnJS0uNDhzJyBob3N0OiAnJS0uMjU1cycgKCUtLjY0cykuACdOT19aRVJPX0RBVEUnLCAnTk9fWkVST19JTl9EQVRFJyBhbmQgJ0VSUk9SX0ZPUl9ESVZJU0lPTl9CWV9aRVJPJyBzcWwgbW9kZXMgc2hvdWxkIGJlIHVzZWQgd2l0aCBzdHJpY3QgbW9kZS4gVGhleSB3aWxsIGJlIG1lcmdlZCB3aXRoIHN0cmljdCBtb2RlIGluIGEgZnV0dXJlIHJlbGVhc2UuAEBAR0xPQkFMLkdUSURfUFVSR0VEIHdhcyBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnLgBAQEdMT0JBTC5HVElEX0VYRUNVVEVEIHdhcyBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQuAFRyaWdnZXJzIGZvciB0YWJsZSBgJS0uNjRzYC5gJS0uNjRzYCBoYXZlIG5vIGNyZWF0aW9uIGNvbnRleHQAJyUtLjE5MnMnIGhhcyBhbiBvbGQgZm9ybWF0LCB5b3Ugc2hvdWxkIHJlLWNyZWF0ZSB0aGUgJyVzJyBvYmplY3QocykAVmlldyBgJS0uNjRzYC5gJS0uNjRzYCBoYXMgbm8gY3JlYXRpb24gY29udGV4dABMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBhIHBhdGggbGVuZ3RoIHRvbyBsb25nIGZvciB0YWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgdGhlIHBhdGggbGltaXQgZm9yIHlvdXIgT1MuAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkbyAiUkVQQUlSIFRBQkxFIGAlLS42NHNgIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAEdvdCBlcnJvciAlZCAtICclLS4xOTJzJyBmcm9tIHN0b3JhZ2UgZW5naW5lLgBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgKHVzaW5nIHBhc3N3b3JkOiAlcykAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBsb2NrZWQuAFlvdXIgcGFzc3dvcmQgaGFzIGV4cGlyZWQuIFRvIGxvZyBpbiB5b3UgbXVzdCBjaGFuZ2UgaXQgdXNpbmcgYSBjbGllbnQgdGhhdCBzdXBwb3J0cyBleHBpcmVkIHBhc3N3b3Jkcy4AU3RvcmFnZSBlbmdpbmUgJyVzJyBkb2VzIG5vdCBzdXBwb3J0IHN5c3RlbSB0YWJsZXMuIFslcy4lc10uAFNvcnQgYWJvcnRlZAAlczogcmVhZHkgZm9yIGNvbm5lY3Rpb25zLiBWZXJzaW9uOiAnJXMnICBzb2NrZXQ6ICclcycgIHBvcnQ6ICVkICAlcy4AVW5rbm93biBsb2NhbGU6ICclLS42NHMnLgBVbmtub3duIGNvbGxhdGlvbjogJyUtLjY0cycuAE91dCBvZiBtZW1vcnk7IGNoZWNrIGlmIG15c3FsZCBvciBzb21lIG90aGVyIHByb2Nlc3MgdXNlcyBhbGwgYXZhaWxhYmxlIG1lbW9yeTsgaWYgbm90LCB5b3UgbWF5IGhhdmUgdG8gdXNlICd1bGltaXQnIHRvIGFsbG93IG15c3FsZCB0byB1c2UgbW9yZSBtZW1vcnkgb3IgeW91IGNhbiBhZGQgbW9yZSBzd2FwIHNwYWNlAE91dCBvZiBtZW1vcnk7IHJlc3RhcnQgc2VydmVyIGFuZCB0cnkgYWdhaW4gKG5lZWRlZCAlZCBieXRlcykAQ09MTEFUSU9OICclcycgaXMgbm90IHZhbGlkIGZvciBDSEFSQUNURVIgU0VUICclcycARmFpbGVkIHRvIHNldCAlcyBhdCBvciBhcm91bmQgIiVzIiAtLSBzZXJ2aWNlIGlzIHZhbGlkLCBidXQgY2FuIG5vdCBiZSBpbml0aWFsaXplZDsgcGxlYXNlIGNoZWNrIGl0cyBjb25maWd1cmF0aW9uIGFuZCBtYWtlIHN1cmUgaXQgY2FuIHJlYWQgaXRzIGlucHV0KHMpIGFuZCB3cml0ZSB0byBpdHMgb3V0cHV0KHMpLgBHZW5lcmF0aW5nIGEgbmV3IFVVSUQ6ICVzLgBGYWlsZWQgdG8gZ2V0IGFic29sdXRlIHBhdGggb2YgcHJvZ3JhbSBleGVjdXRhYmxlICVzAEZhaWxlZCB0byBib290c3RyYXAgcGVyZm9ybWFuY2Ugc2NoZW1hIGNvbXBvbmVudHMgaW5mcmFzdHJ1Y3R1cmUuAEZhaWxlZCB0byBkZWluaXQgcGVyZm9ybWFuY2Ugc2NoZW1hIGNvbXBvbmVudHMgaW5mcmFzdHJ1Y3R1cmUuAENvdWxkIG5vdCBvcGVuIGR1cGxpY2F0ZSBmZCBmb3IgJXM6ICVzLgBTeXN0ZW0gdmlld3MgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBSZXNvdXJjZSBncm91cCBwb3N0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4AUmVzb3VyY2UgR3JvdXAgc3Vic3lzdGVtIGluaXRpYWxpemF0aW9uIGZhaWxlZC4ARmFpbGVkIHRvIHN0YXJ0IG15c3FsZCBkYWVtb24uIENoZWNrIG15c3FsZCBlcnJvciBsb2cuAENhbm5vdCBjaGFuZ2UgdG8gcm9vdCBkaXJlY3Rvcnk6ICVzLgBGYWlsZWQgdG8gYm9vdHN0cmFwIHBlcnNpc3RlbnQgcHJpdmlsZWdlcy4AQmFzZWRpciBzZXQgdG8gJXMuAENvdWxkIG5vdCBhZGQgd2lsZCBkbyB0YWJsZSBydWxlICclcychAENvdWxkIG5vdCBhZGQgd2lsZCBpZ25vcmUgdGFibGUgcnVsZSAnJXMnIQBUaGUgcHJpdmlsZWdlIHN5c3RlbSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb3JyZWN0bHkuIEZvciBjb21wbGV0ZSBpbnN0cnVjdGlvbnMgb24gaG93IHRvIHVwZ3JhZGUgTXlTUUwgdG8gYSBuZXcgdmVyc2lvbiBwbGVhc2Ugc2VlIHRoZSAnVXBncmFkaW5nIE15U1FMJyBzZWN0aW9uIGZyb20gdGhlIE15U1FMIG1hbnVhbC4AQ2Fubm90IHNldCBzZXJ2aWNlcyAiJXMiIHJlcXVlc3RlZCBpbiAtLWxvZy1lcnJvci1zZXJ2aWNlcywgdXNpbmcgZGVmYXVsdHMuAFBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZXMgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBUaGUgdHJhbnNhY3Rpb25fd3JpdGVfc2V0X2V4dHJhY3Rpb24gbXVzdCBiZSBzZXQgdG8gJXMgd2hlbiBiaW5sb2dfdHJhbnNhY3Rpb25fZGVwZW5kZW5jeV90cmFja2luZyBpcyAlcy4ASW52YWxpZCByZXBsaWNhdGlvbiB0aW1lc3RhbXBzOiBvcmlnaW5hbCBjb21taXQgdGltZXN0YW1wIGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGltbWVkaWF0ZSBjb21taXQgdGltZXN0YW1wLiBUaGlzIG1heSBiZSBhbiBpc3N1ZSBpZiBkZWxheWVkIHJlcGxpY2F0aW9uIGlzIGFjdGl2ZS4gTWFrZSBzdXJlIHRoYXQgc2VydmVycyBoYXZlIHRoZWlyIGNsb2NrcyBzZXQgdG8gdGhlIGNvcnJlY3QgdGltZS4gTm8gZnVydGhlciBtZXNzYWdlIHdpbGwgYmUgZW1pdHRlZCB1bnRpbCBhZnRlciB0aW1lc3RhbXBzIGJlY29tZSB2YWxpZCBhZ2Fpbi4AVGhlIHJlcGxpY2F0aW9uIHRpbWVzdGFtcHMgaGF2ZSByZXR1cm5lZCB0byBub3JtYWwgdmFsdWVzLgAlcy4ARmFpbGVkIHRvIHdyaXRlIGFuIGluY2lkZW50IGV2ZW50IGludG8gc3RtdF9jYWNoZS4AUmVsYXlsb2cgZmlsZSAlcyBzaXplIHdhcyAlbGx1LCBidXQgd2FzIHRydW5jYXRlZCBhdCAlbGx1LgBVbmFibGUgdG8gcHVyZ2UgcmVsYXkgbG9nIGZpbGVzLiAlczolcy4AUmVwbGljYTogZmFpbGVkIGluIGNyZWF0aW5nIGZpbHRlciBmb3IgY2hhbm5lbCAnJXMnLgBSZXBsaWNhOiBmYWlsZWQgaW4gY29weWluZyB0aGUgZ2xvYmFsIGZpbHRlcnMgdG8gaXRzIG93biBwZXItY2hhbm5lbCBmaWx0ZXJzIG9uIGNvbmZpZ3VyYXRpb24gZm9yIGNoYW5uZWwgJyVzJy4AVGhlcmUgYXJlIHBlci1jaGFubmVsIHJlcGxpY2F0aW9uIGZpbHRlcihzKSBjb25maWd1cmVkIGZvciBjaGFubmVsICclLjE5MnMnIHdoaWNoIGRvZXMgbm90IGV4aXN0LiBUaGUgZmlsdGVyKHMpIGhhdmUgYmVlbiBkaXNjYXJkZWQuAFRoZSBzeXN0ZW0gdGFibGUgbXlzcWwuZ2xvYmFsX2dyYW50cyBpcyBtaXNzaW5nLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEFDTCB0YWJsZSBteXNxbC4lLipzIG1pc3NpbmcuIFNvbWUgb3BlcmF0aW9ucyBtYXkgZmFpbC4AQ2FuJ3Qgc2V0IG1hbmRhdG9yeV9yb2xlICVzQCVzOiBBbm9ueW1vdXMgYXV0aG9yaXphdGlvbiBJRHMgYXJlIG5vdCBhbGxvd2VkIGFzIHJvbGVzLgBDYW4ndCBzZXQgbWFuZGF0b3J5X3JvbGU6IFRoZXJlJ3Mgbm8gc3VjaCBhdXRob3JpemF0aW9uIElEICVzQCVzLgBUYWJsZSAnJS0xOTJzJyBmYWlsZWQgdG8gbW92ZS9pbnNlcnQgYSByb3cgZnJvbSBwYXJ0ICVkIGludG8gcGFydCAlZDogJXMuAFNraXBwZWQgdXBkYXRpbmcgcmVzb3VyY2UgZ3JvdXAgbWV0YWRhdGEgaW4gSW5ub0RCIHJlYWQgb25seSBtb2RlLgBGYWlsZWQgdG8gcGVyc2lzdCByZXNvdXJjZSBncm91cCAlcyB0byBEYXRhIERpY3Rpb25hcnkuAEZhaWxlZCB0byBkZXNlcmlhbGl6ZSByZXNvdXJjZSBncm91cCAlcy4AVXBkYXRlIG9mIHJlc291cmNlIGdyb3VwICVzIGZhaWxlZC4AVmFsaWRhdGlvbiBvZiByZXNvdXJjZSBncm91cCAlcyBmYWlsZWQuIFJlc291cmNlIGdyb3VwIGlzIGRpc2FibGVkLgBVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBSZXNvdXJjZSBHcm91cCAlcy4ARmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgcmVzb3VyY2UgZ3JvdXAgaGFzaC4ARmFpbGVkIHRvIGFkZCByZXNvdXJjZSBncm91cCAlcyB0byByZXNvdXJjZSBncm91cCBtYXAuAFJlc291cmNlIGdyb3VwIGZlYXR1cmUgaXMgZGlzYWJsZWQuIChTZXJ2ZXIgaXMgY29tcGlsZWQgd2l0aCBESVNBQkxFX1BTSV9USFJFQUQpLgBVbmFibGUgdG8gYXBwbHkgcmVzb3VyY2UgZ3JvdXAgY29udHJvbGxlciAlcy4AVW5hYmxlIHRvIGFjcXVpcmUgbG9jayBvbiB0aGUgcmVzb3VyY2UgZ3JvdXAgJXMuIEhpbnQgdG8gc3dpdGNoIHJlc291cmNlIGdyb3VwIHNoYWxsIGJlIGlnbm9yZWQuAFBGUyAlcyBub3RpZmljYXRpb24gZnVuY3Rpb24gcmVnaXN0cmF0aW9uIGZhaWxlZC4AVW5hYmxlIHRvIGJpbmQgdGhyZWFkIGlkICVsbHUgdG8gY3B1IGlkICV1IChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFVuYWJsZSB0byBiaW5kIHRocmVhZCBpZCAlbGx1IHRvIGNwdSBpZHMgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AVW5iaW5kIHRocmVhZCBpZCAlbGx1IGZhaWxlZC4gKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AU2V0dGluZyB0aHJlYWQgcHJpb3JpdHkgJWQgdG8gdGhyZWFkIGlkICVsbHUgZmFpbGVkLiAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBVbmFibGUgdG8gZGV0ZXJtaW5lIENBUF9TWVNfTklDRSBjYXBhYmlsaXR5LgAlcyBmYWlsZWQ6IEZhaWxlZCB0byBnZXQgaGFuZGxlIGZvciB0aHJlYWQgJWxsdS4AUmV0cmlldmFsIG9mIHRocmVhZCBwcmlvcml0eSB1bnN1cHBvcnRlZCBvbiAlcy4AVW5hYmxlIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIENQVXMuAFJlc291cmNlIGdyb3VwIGZlYXR1cmUgc2hhbGwgbm90IGJlIGF2YWlsYWJsZS4gSW5jb21wYXRpYmxlIHRocmVhZCBoYW5kbGluZyBvcHRpb24uAEludmFsaWQgdGhyZWFkIHByaW9yaXR5ICVkIGZvciBhICVzIHJlc291cmNlIGdyb3VwLiBBbGxvd2VkIHJhbmdlIGlzIFslZCwgJWRdLgBiaW5kX3RvX2NwdSBmYWlsZWQ6IHByb2Nlc3Nvcl9iaW5kIGZvciBjcHVpZCAldSBmYWlsZWQgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AYmluZF90b19jcHUgZmFpbGVkOiBwcm9jZXNzb3JfYmluZCBmb3IgdGhyZWFkICUlbGx4IHdpdGggY3B1IGlkICV1IChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuACVzIGZhaWxlZDogcHJvY2Vzc29yX2FmZmluaXR5IGZhaWxlZCAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBFcnJvciBpbiByZW5hbWluZyBteXNxbF9pbmRleF9zdGF0cy5pYmQuAEVycm9yIGluIG9wZW5pbmcgZGF0YSBkaXJlY3RvcnkgJXMuAEVycm9yIGluIGZldGNoaW5nIGxpc3Qgb2YgdGFibGVzcGFjZXMuAEVycm9yIGluIGFjcXVpcmluZyBUYWJsZXNwYWNlIGZvciBTREkgaW5zZXJ0aW9uICVzLgBFcnJvciBpbiByZXNvbHZpbmcgRW5naW5lIG5hbWUgZm9yIHRhYmxlc3BhY2UgJXMgd2l0aCBlbmdpbmUgJXMuAEVycm9yIGluIGNyZWF0aW5nIFNESSBmb3IgJXMgdGFibGVzcGFjZS4ARXJyb3IgaW4gc3RvcmluZyBTREkgZm9yICVzIHRhYmxlc3BhY2UuAEVycm9yIGluIGZldGNoaW5nIGxpc3Qgb2YgdGFibGVzLgBGaW5pc2hlZCBwb3B1bGF0aW5nIERhdGEgRGljdGlvbmFyeSB0YWJsZXMgd2l0aCBkYXRhLgBDb3VsZCBub3Qgb3BlbiB0aGUgdXBncmFkZSBpbmZvIGZpbGUgJyVzJyBpbiB0aGUgTXlTUUwgc2VydmVycyBkYXRhZGlyLCBlcnJubzogJWQuAENvdWxkIG5vdCBjbG9zZSB0aGUgdXBncmFkZSBpbmZvIGZpbGUgJyVzJyBpbiB0aGUgTXlTUUwgc2VydmVycyBkYXRhZGlyLCBlcnJubzogJWQuAEdvdCBlcnJvciAlZCBmcm9tIFNFIHdoaWxlIG1pZ3JhdGluZyB0YWJsZXNwYWNlcy4ARXJyb3IgaW4gY3JlYXRpbmcgVEFCTEUgc3RhdGlzdGljcyBlbnRyeS4gRml4IHN0YXRpc3RpY3MgZGF0YSBieSB1c2luZyBBTkFMWVpFIGNvbW1hbmQuAEZpbmlzaGVkIG1pZ3JhdGluZyBUQUJMRSBzdGF0aXN0aWNzIGRhdGEuAEVycm9yIGluIGNyZWF0aW5nIEluZGV4IHN0YXRpc3RpY3MgZW50cnkuIEZpeCBzdGF0aXN0aWNzIGRhdGEgYnkgdXNpbmcgQU5BTFlaRSBjb21tYW5kLgBGaW5pc2hlZCBtaWdyYXRpbmcgSU5ERVggc3RhdGlzdGljcyBkYXRhLgBGYWlsZWQgdG8gZmluZCB2YWxpZCBkYXRhIGRpcmVjdG9yeS4AU3RhcnRpbmcgdXBncmFkZSBvZiBkYXRhIGRpcmVjdG9yeS4ARmFpbGVkIHRvIGluaXRpYWxpemUgREQgU3RvcmFnZSBFbmdpbmUuAEZvdW5kIHBhcnRpYWxseSB1cGdyYWRlZCBERC4gQWJvcnRpbmcgdXBncmFkZSBhbmQgZGVsZXRpbmcgYWxsIEREIHRhYmxlcy4gU3RhcnQgdGhlIHVwZ3JhZGUgcHJvY2VzcyBhZ2Fpbi4ARm91bmQgcGFydGlhbGx5IHVwZ3JhZGVkIERELiBVcGdyYWRlIHdpbGwgY29udGludWUgYW5kIHN0YXJ0IHRoZSBzZXJ2ZXIuAEVycm9yIGluIHVwZ3JhZGluZyBlbmdpbmUgbG9ncy4ARXJyb3IgaW4gdXBkYXRpbmcgU0RJIGluZm9ybWF0aW9uLgBTa2lwIHVwZGF0aW5nICVzIG1ldGFkYXRhIGluIElubm9EQiByZWFkLW9ubHkgbW9kZS4AQ3JlYXRlZCBzeXN0ZW0gdmlld3Mgd2l0aCBJX1MgdmVyc2lvbiAlZC4AVW5rbm93biBlcnJvciBkZXRlY3RlZCAlZCBpbiBoYW5kbGVyLgBFcnJvciBpbiBMb2dfZXZlbnQ6OnJlYWRfbG9nX2V2ZW50KCk6ICclcycsIGRhdGFfbGVuOiAlbHUsIGV2ZW50X3R5cGU6ICVkLgBUaGUgcm93IGRhdGEgaXMgZ3JlYXRlciB0aGFuIDRHQiwgd2hpY2ggaXMgdG9vIGJpZyB0byB3cml0ZSB0byB0aGUgYmluYXJ5IGxvZy4AVW5hYmxlIHRvIGNvbnN0cnVjdCBEUk9QIEVWRU5UIFNRTCBxdWVyeSBzdHJpbmcuAFVuYWJsZSB0byBiaW5sb2cgZHJvcCBldmVudCAlcy4lcy4ARmFpbGVkIHRvIHN0YXJ0IHJlcGxpY2EgdGhyZWFkcyBmb3IgY2hhbm5lbCAnJXMnLgAlcyVzLgBGYWlsZWQgcmVnaXN0ZXJpbmcgb24gc291cmNlLCByZWNvbm5lY3RpbmcgdG8gdHJ5IGFnYWluLCBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcy4gJXMuAFJlcGxpY2EgSS9PIHRocmVhZCBraWxsZWQgZHVyaW5nIG9yIGFmdGVyIHJlY29ubmVjdC4AU29tZSBvZiB0aGUgY2hhbm5lbHMgYXJlIG5vdCBjcmVhdGVkL2luaXRpYWxpemVkIHByb3Blcmx5LiBDaGVjayBmb3IgYWRkaXRpb25hbCBtZXNzYWdlcyBhYm92ZS4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gc3RhcnQgcmVwbGljYXRpb24gb24gdGhvc2UgY2hhbm5lbHMgdW50aWwgdGhlIGlzc3VlIGlzIHJlc29sdmVkIGFuZCB0aGUgc2VydmVyIHJlc3RhcnRlZC4ARmFpbGVkIHRvIGFkZCBhIHJlcGxpY2F0aW9uIGZpbHRlciBpbnRvIGZpbHRlciBtYXAgZm9yIGNoYW5uZWwgJyUuMTkycycuAFRoZXJlIGFyZSBwZXItY2hhbm5lbCByZXBsaWNhdGlvbiBmaWx0ZXIocykgY29uZmlndXJlZCBmb3IgZ3JvdXAgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3aGljaCBpcyBkaXNhbGxvd2VkLiBUaGUgZmlsdGVyKHMpIGhhdmUgYmVlbiBkaXNjYXJkZWQuAFRoZXJlIGFyZSBwZXItY2hhbm5lbCByZXBsaWNhdGlvbiBmaWx0ZXIocykgY29uZmlndXJlZCBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3aGljaCBkb2VzIG5vdCBleGlzdC4gVGhlIGZpbHRlcihzKSBoYXZlIGJlZW4gZGlzY2FyZGVkLgBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBidWlsZGluZyBkb190YWJsZSBhbmQgaWdub3JlX3RhYmxlIHJ1bGVzIHRvIGhhc2hlcyBmb3IgcGVyLWNoYW5uZWwgZmlsdGVyLgBDbG9uZSBwbHVnaW4gY2Fubm90IGJlIGxvYWRlZC4AQ2xvbmUgSGFuZGxlciBleGlzdHMuAENvdWxkIG5vdCBjcmVhdGUgQ2xvbmUgSGFuZGxlci4AVGhlIENZQ0xFIHRpbWVyIGlzIG5vdCBhdmFpbGFibGUuIFdBSVQgZXZlbnRzIGluIHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEgd2lsbCBub3QgYmUgdGltZWQuAFRoZSBOQU5PU0VDT05EIHRpbWVyIGlzIG5vdCBhdmFpbGFibGUuIElETEUvU1RBR0UvU1RBVEVNRU5UL1RSQU5TQUNUSU9OIGV2ZW50cyBpbiB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hIHdpbGwgbm90IGJlIHRpbWVkLgBUaGUgTUlDUk9TRUNPTkQgdGltZXIgaXMgbm90IGF2YWlsYWJsZS4gSURMRS9TVEFHRS9TVEFURU1FTlQvVFJBTlNBQ1RJT04gZXZlbnRzIGluIHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEgd2lsbCBub3QgYmUgdGltZWQuAEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yICV6dSBjaHVua3MgZWFjaCBvZiBzaXplICV6dSBmb3IgYnVmZmVyICclcycgZHVlIHRvIG92ZXJmbG93LgBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzIGZvciBidWZmZXIgJyVzJyBkdWUgdG8gb3V0LW9mLW1lbW9yeS4ASW5ub0RCIGNvdWxkIG5vdCBmaW5kIGluZGV4ICVzIGtleSBubyAldSBmb3IgdGFibGUgJXMgdGhyb3VnaCBpdHMgaW5kZXggdHJhbnNsYXRpb24gdGFibGUuAENhbm5vdCBmaW5kIGluZGV4ICVzIGluIElubm9EQiBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4ASW5ub0RCIGNvdWxkIG5vdCBmaW5kIGtleSBubyAldSB3aXRoIG5hbWUgJXMgZnJvbSBkaWN0IGNhY2hlIGZvciB0YWJsZSAlcy4ASW5ub0RCOiBjaGFuZ2VfYWN0aXZlX2luZGV4KCV1KSBmYWlsZWQuAFN0b3JlZCByZWYgbGVuIGlzICVsdSwgYnV0IHRhYmxlIHJlZiBsZW4gaXMgJWx1LgBNeVNRTCBpcyB0cnlpbmcgdG8gY3JlYXRlIGEgY29sdW1uIHByZWZpeCBpbmRleCBmaWVsZCwgb24gYW4gaW5hcHByb3ByaWF0ZSBkYXRhIHR5cGUuIFRhYmxlIG5hbWUgJXMsIGNvbHVtbiBuYW1lICVzLgBDYW5ub3QgY3JlYXRlIHRhYmxlICVzLgBGb3VuZCBpbmRleCAlcyBpbiBJbm5vREIgaW5kZXggbGlzdCBidXQgbm90IGl0cyBNeVNRTCBpbmRleCBudW1iZXIuIEl0IGNvdWxkIGJlIGFuIElubm9EQiBpbnRlcm5hbCBpbmRleC4ASW5ub0RCOiBUYWJsZSAlcyBjb250YWlucyAlbHUgaW5kZXhlcyBpbnNpZGUgSW5ub0RCLCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbnVtYmVyIG9mIGluZGV4ZXMgJXUgZGVmaW5lZCBpbiBNeVNRTC4AVGFibGUgJXMgY29udGFpbnMgZmV3ZXIgaW5kZXhlcyBpbnNpZGUgSW5ub0RCIHRoYW4gYXJlIGRlZmluZWQgaW4gdGhlIE15U1FMLiBIYXZlIHlvdSBtaXhlZCB1cCB3aXRoIGRhdGEgZGljdGlvbmFyeSBmcm9tIGRpZmZlcmVudCBpbnN0YWxsYXRpb24/AEluZGV4ICVzIG9mICVzIGhhcyAlbHUgY29sdW1ucyB1bmlxdWUgaW5zaWRlIElubm9EQiwgYnV0IE15U1FMIGlzIGFza2luZyBzdGF0aXN0aWNzIGZvciAlbHUgY29sdW1ucy4gSGF2ZSB5b3UgbWl4ZWQgZGF0YSBkaWN0aW9uYXJ5IGZyb20gZGlmZmVyZW50IGluc3RhbGxhdGlvbj8ATW9uaXRvciBjb3VudGVyICclcycgY2Fubm90IGJlIHR1cm5lZCBvbi9vZmYgaW5kaXZpZHVhbGx5LiBQbGVhc2UgdXNlIGl0cyBtb2R1bGUgbmFtZSB0byB0dXJuIG9uL29mZiB0aGUgY291bnRlcnMgaW4gdGhlIG1vZHVsZSBhcyBhIGdyb3VwLgBEZWZhdWx0IHZhbHVlIGlzIG5vdCBkZWZpbmVkIGZvciB0aGlzIHNldCBvcHRpb24uIFBsZWFzZSBzcGVjaWZ5IGNvcnJlY3QgY291bnRlciBvciBtb2R1bGUgbmFtZS4ASW5ub0RCOiBNb25pdG9yICVzIGlzIGFscmVhZHkgZW5hYmxlZC4ASW52YWxpZCBtb25pdG9yIGNvdW50ZXIgOiAlcy4ATG9hZExpYnJhcnkoIiVzIikgZmFpbGVkOiBHZXRMYXN0RXJyb3IgcmV0dXJucyAlbHUuACVzLgAlcy4AJXMuACVzLgAlcy4AJXMuAFVuYWJsZSB0byB3YWl0IGZvciBwcm9jZXNzICVsbGQuAFVuYWJsZSB0byBkZXRlcm1pbmUgaWYgZGFlbW9uIGlzIHJ1bm5pbmc6ICVzIChyYz0lZCkuACVzAFtGQVRBTF0gSW5ub0RCOiAlcwBUaGUgc3ludGF4ICclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZC4AVGhlIHN5bnRheCAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgAlcwBCaW5hcnkgbG9nZ2luZyBub3QgcG9zc2libGUuIE1lc3NhZ2U6ICVzLgBGYWlsZWQgdG8gc2V0IHBlcnNpc3RlZCBvcHRpb25zLgBDYW5ub3QgYWNxdWlyZSBzcGVjaWZpZWQgc2VydmljZSBpbXBsZW1lbnRhdGlvbjogJyUuMTkycycuAEludmFsaWQgVkNQVSByYW5nZSAldS0ldS4ASW52YWxpZCBjcHUgaWQgJXUuAEdvdCBlcnJvciAlZCBkdXJpbmcgRkxVU0hfTE9HUy4AUHJvYmxlbSB3aGlsZSBkcm9wcGluZyBkYXRhYmFzZS4gQ2FuJ3QgcmVtb3ZlIGRhdGFiYXNlIGRpcmVjdG9yeSAoJXMpLiBQbGVhc2UgcmVtb3ZlIGl0IG1hbnVhbGx5LgBUaGUgb3B0aW9uIGV4cGlyZV9sb2dzX2RheXMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBvcHRpb24gYmlubG9nX2V4cGlyZV9sb2dzX3NlY29uZHMuIFRoZXJlZm9yZSwgdmFsdWUgb2YgZXhwaXJlX2xvZ3NfZGF5cyBpcyBpZ25vcmVkLgBtYWxmb3JtZWQgb3IgdmVyeSBvbGQgcmVsYXkgbG9nIHdoaWNoIGRvZXMgbm90IGhhdmUgRm9ybWF0RGVzY3JpcHRvci4AVXBncmFkZSBvZiB2aWV3ICclcy4lcycgZmFpbGVkLiBSZS1jcmVhdGUgdGhlIHZpZXcgd2l0aCB0aGUgZXhwbGljaXQgY29sdW1uIG5hbWUgbGVzc2VyIHRoYW4gNjQgY2hhcmFjdGVycy4AVGFibGUgdXBncmFkZSByZXF1aXJlZCBmb3IgYCUtLjY0c2AuYCUtLjY0c2AuIFBsZWFzZSBkdW1wL3JlbG9hZCB0YWJsZSB0byBmaXggaXQhAEVycm9yIGluIHVwZGF0aW5nIHZlcnNpb24gbnVtYmVyIGluICVzIHRhYmxlc3BhY2UuAEtleXJpbmcgbWlncmF0aW9uIGZhaWxlZC4AS2V5cmluZyBtaWdyYXRpb24gc3VjY2Vzc2Z1bC4AUmVjZWl2ZWQgUkVTVEFSVCBmcm9tIHVzZXIgJXMuICBSZXN0YXJ0aW5nIG15c3FsZCAoVmVyc2lvbjogJXMpLgBEaWZmZXJlbnQgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBzZXR0aW5ncyBmb3Igc2VydmVyICgnJXUnKSBhbmQgZGF0YSBkaWN0aW9uYXJ5ICgnJXUnKS4ARGF0YSBkaWN0aW9uYXJ5IGluaXRpYWxpemluZyB2ZXJzaW9uICcldScuAERhdGEgZGljdGlvbmFyeSByZXN0YXJ0aW5nIHZlcnNpb24gJyV1Jy4ARGF0YSBkaWN0aW9uYXJ5IHVwZ3JhZGluZyBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBEYXRhIGRpY3Rpb25hcnkgdXBncmFkZSBwcm9oaWJpdGVkIGJ5IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICctLW5vX2RkX3VwZ3JhZGUnLgBVcGdyYWRpbmcgdGhlIGRhdGEgZGljdGlvbmFyeSBmcm9tIGRpY3Rpb25hcnkgdmVyc2lvbiAnJXUnIGlzIG5vdCBzdXBwb3J0ZWQuAFVwZ3JhZGluZyB0aGUgZGF0YSBkaWN0aW9uYXJ5IGZhaWxlZCwgdGVtcG9yYXJ5IHNjaGVtYSBuYW1lICclLS4xOTJzJyBub3QgYXZhaWxhYmxlLgBEYXRhIGRpY3Rpb25hcnkgbWlub3IgZG93bmdyYWRlIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScuAE1pbm9yIGRvd25ncmFkZSBvZiB0aGUgRGF0YSBkaWN0aW9uYXJ5IGZyb20gZGljdGlvbmFyeSB2ZXJzaW9uICcldScgaXMgbm90IHN1cHBvcnRlZC4ATm8gZGF0YSBkaWN0aW9uYXJ5IHZlcnNpb24gbnVtYmVyIGZvdW5kLgBUaHJlYWQgcG9vbCBub3Qgc3VwcG9ydGVkLCByZXF1aXJlcyBhIG1pbmltdW0gb2YgJXMuAHRocmVhZF9wb29sX3NpemU9MCBtZWFucyB0aHJlYWQgcG9vbCBkaXNhYmxlZCwgQWxsb3dlZCByYW5nZSBvZiB0aHJlYWRfcG9vbF9zaXplIGlzICVkLSVkLgB0aHJlYWRfcG9vbF9zaXplPSVsdSBpcyB0b28gaGlnaCwgJWQgaXMgbWF4aW11bSwgdGhyZWFkIHBvb2wgaXMgZGlzYWJsZWQuIEFsbG93ZWQgcmFuZ2Ugb2YgdGhyZWFkX3Bvb2xfc2l6ZSBpcyAlZC0lZC4AdGhyZWFkX3Bvb2xfYWxnb3JpdGhtIGNhbiBiZSBzZXQgdG8gMCBhbmQgMSwgMCBpbmRpY2F0ZXMgdGhlIGRlZmF1bHQgbG93IGNvbmN1cnJlbmN5IGFsZ29yaXRobSwgMSBtZWFucyBhIGhpZ2ggY29uY3VycmVuY3kgYWxnb3JpdGhtLgB0aHJlYWRfcG9vbF9zdGFsbF9saW1pdCBjYW4gYmUgJWQgYXQgbWluaW11bSBhbmQgJWQgYXQgbWF4aW11bSwgc21hbGxlciB2YWx1ZXMgd291bGQgcmVuZGVyIHRoZSB0aHJlYWQgcG9vbCBmYWlybHkgdXNlbGVzcyBhbmQgaGlnaGVyIHZhbHVlcyBjb3VsZCBtYWtlIGl0IHBvc3NpYmxlIHRvIGhhdmUgdW5kZXRlY3RlZCBkZWFkbG9jayBpc3N1ZXMgaW4gdGhlIE15U1FMIFNlcnZlci4ASW52YWxpZCB2YWx1ZSBvZiB0aHJlYWRfcG9vbF9wcmlvX2tpY2t1cF90aW1lciBzcGVjaWZpZWQuIFZhbHVlIG9mIHRocmVhZF9wb29sX3ByaW9fa2lja3VwX3RpbWVyIHNob3VsZCBiZSBpbiByYW5nZSAwLTQyOTQ5NjcyOTQuAHRocmVhZF9wb29sX21heF91bnVzZWRfdGhyZWFkcyBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuICVkLgBGYWlsZWQgdG8gaW5zdGFudGlhdGUgdGhlIGNvbm5lY3Rpb24gaGFuZGxlciBvYmplY3QuAEZhaWxlZCB0byBpbml0aWFsaXplIHRocmVhZCBwb29sIHBsdWdpbi4AVGhyZWFkIHBvb2wgcGx1Z2luIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5IHdpdGggcGFyYW1ldGVyczogdGhyZWFkX3Bvb2xfc2l6ZSA9ICVsdSwgdGhyZWFkX3Bvb2xfYWxnb3JpdGhtID0gJXMsIHRocmVhZF9wb29sX3N0YWxsX2xpbWl0ID0gJXUsIHRocmVhZF9wb29sX3ByaW9fa2lja3VwX3RpbWVyID0gJXUsIHRocmVhZF9wb29sX21heF91bnVzZWRfdGhyZWFkcyA9ICV1LCB0aHJlYWRfcG9vbF9oaWdoX3ByaW9yaXR5X2Nvbm5lY3Rpb24gPSAlZC4AQ2FuJ3Qgc2V0dXAgY29ubmVjdGlvbiB0ZWFyZG93biB0aHJlYWQtc3BlY2lmaWMgZGF0YS4AQ3JlYXRpb24gb2YgY29ubmVjdCBoYW5kbGVyIHRocmVhZCBmYWlsZWQuAEZhaWxlZCB0byBjcmVhdGUgdGhkIGFuZCBhdXRoZW50aWNhdGUgY29ubmVjdGlvbi4ARmFpbGVkIHRvIHByb2Nlc3MgY29ubmVjdGlvbiBldmVudC4AQ2FuJ3QgY3JlYXRlIHBvb2wgdGhyZWFkIChlcnJvciAlZCwgZXJybm86ICVkKS4AJS4qcy4AdHBfZ3JvdXBfbG93X2xldmVsX2luaXQoKSBmYWlsZWQuAFJlYXJtIGZhaWxlZCBldmVuIGFmdGVyIDMwIHNlY29uZHMsIGNhbid0IGNvbnRpbnVlIHdpdGhvdXQgbm90aWZ5IHNvY2tldC4AJXM6ICVzIGJ1ZmZlciBpcyB0b28gc21hbGwATWVjYWIgdiVzIGlzIG5vdCBzdXBwb3J0ZWQsIHRoZSBsb3dlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgaXMgdiVzLgBNZWNhYiB2JXMgaXMgbm90IHZlcmlmaWVkLCB0aGUgaGlnaGVzdCB2ZXJzaW9uIHN1cHBvcnRlZCBpcyB2JXMuAE1lY2FiOiBUcnlpbmcgY3JlYXRlTW9kZWwoJXMpLgBNZWNhYjogY3JlYXRlTW9kZWwoKSBmYWlsZWQ6ICVzLgBNZWNhYjogY3JlYXRlVGFnZ2VyKCkgZmFpbGVkOiAlcy4ATWVjYWI6IFVuc3VwcG9ydGVkIGRpY3Rpb25hcnkgY2hhcnNldCAlcy4ATWVjYWI6IExvYWRlZCBkaWN0aW9uYXJ5IGNoYXJzZXQgaXMgJXMuAE1lY2FiOiBwYXJzZSgpIGZhaWxlZDogJXMuAE1lY2FiOiBwYXJzZSgpIGZhaWxlZDogb3V0IG9mIG1lbW9yeS4ATWVjYWI6IGNyZWF0ZUxhdHRpY2UoKSBmYWlsZWQ6ICVzLgAtLS0+ICVzIGVudGVyLgA8LS0tICVzIGV4aXQgKCVkKS4APC0tLSAlcyBleGl0ICglcykuADwtLS0gJXMgZXhpdC4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIGluaXRpYWxpemVkIGZvciB0cmFuc2FjdGlvbnMuACVzOiB0cmFuc2FjdGlvbiBub2RlIGFsbG9jYXRpb24gZmFpbGVkIGZvcjogKCVzLCAlbHUpLgAlczogYmlubG9nIHdyaXRlIG91dC1vZi1vcmRlciwgdGFpbCAoJXMsICVsdSksIG5ldyBub2RlICglcywgJWx1KS4AJXM6IGluc2VydCAoJXMsICVsdSkgaW4gZW50cnkoJXUpLgAlczogcHJvYmUgKCVzLCAlbHUpIGluIGVudHJ5KCV1KS4AJXM6IGNsZWFyZWQgYWxsIG5vZGVzLgAlczogY2xlYXJlZCAlZCBub2RlcyBiYWNrIHVudGlsIHBvcyAoJXMsICVsdSkuAFJlYWQgc2VtaS1zeW5jIHJlcGx5IG1hZ2ljIG51bWJlciBlcnJvci4AUmVhZCBzZW1pLXN5bmMgcmVwbHkgbGVuZ3RoIGVycm9yOiBwYWNrZXQgaXMgdG9vIHNtYWxsLgBSZWFkIHNlbWktc3luYyByZXBseSBiaW5sb2cgZmlsZSBsZW5ndGggdG9vIGxhcmdlLgAlczogR290IHJlcGx5KCVzLCAlbHUpIGZyb20gc2VydmVyICV1LgAlcyBjYWxsZWQgdHdpY2UuAFNlbWktc3luYyByZXBsaWNhdGlvbiBlbmFibGVkIG9uIHRoZSBzb3VyY2UuAENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgdG8gZW5hYmxlIHNlbWktc3luYyBvbiB0aGUgc291cmNlLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gZGlzYWJsZWQgb24gdGhlIHNvdXJjZS4AU0VNSVNZTkM6IEZvcmNlZCBzaHV0ZG93bi4gU29tZSB1cGRhdGVzIG1pZ2h0IG5vdCBiZSByZXBsaWNhdGVkLgAlczogR290IHJlcGx5IGF0ICglcywgJWx1KS4AJXM6IHNpZ25hbCBhbGwgd2FpdGluZyB0aHJlYWRzLgAlczogd2FpdCBwb3MgKCVzLCAlbHUpLCByZXBsKCVkKS4AJXM6IEJpbmxvZyByZXBseSBpcyBhaGVhZCAoJXMsICVsdSkuACVzOiBtb3ZlIGJhY2sgd2FpdCBwb3NpdGlvbiAoJXMsICVsdSkuACVzOiBpbml0IHdhaXQgcG9zaXRpb24gKCVzLCAlbHUpLgAlczogd2FpdCAlbHUgbXMgZm9yIGJpbmxvZyBzZW50ICglcywgJWx1KS4AVGltZW91dCB3YWl0aW5nIGZvciByZXBseSBvZiBiaW5sb2cgKGZpbGU6ICVzLCBwb3M6ICVsdSksIHNlbWktc3luYyB1cCB0byBmaWxlICVzLCBwb3NpdGlvbiAlbHUuAEFzc2Vzc21lbnQgb2Ygd2FpdGluZyB0aW1lIGZvciBjb21taXRUcnggZmFpbGVkIGF0IHdhaXQgcG9zaXRpb24gKCVzLCAlbHUpLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gc3dpdGNoZWQgT0ZGLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gc3dpdGNoZWQgT04gYXQgKCVzLCAlbHUpLgBObyBlbm91Z2ggc3BhY2UgaW4gdGhlIHBhY2tldCBmb3Igc2VtaS1zeW5jIGV4dHJhIGhlYWRlciwgc2VtaS1zeW5jIHJlcGxpY2F0aW9uIGRpc2FibGVkLgAlczogc2VydmVyKCVkKSwgKCVzLCAlbHUpIHN5bmMoJWQpLCByZXBsKCVkKS4AU2VtaS1zeW5jIGZhaWxlZCB0byBpbnNlcnQgdHJhbnhfbm9kZSBmb3IgYmlubG9nIGZpbGU6ICVzLCBwb3NpdGlvbjogJWx1LgAlczogVHJhbnNhY3Rpb24gc2tpcHBlZCBhdCAoJXMsICVsdSkuAFNlbWktc3luYyBzb3VyY2UgZmFpbGVkIG9uIG5ldF9mbHVzaCgpIGJlZm9yZSB3YWl0aW5nIGZvciByZXBsaWNhIHJlcGx5LgBUaGUgcmVjZWl2ZWQgYWNrIGlzIHNtYWxsZXIgdGhhbiBtX2dyZWF0ZXN0X2Fjay4AQWRkIHRoZSBhY2sgaW50byBzbG90ICV1LgBVcGRhdGUgYW4gZXhzaXRpbmcgYWNrIGluIHNsb3QgJXUuAEZhaWxlZCB0byBzdGFydCBzZW1pLXN5bmMgQUNLIHJlY2VpdmVyIHRocmVhZCwgIGNvdWxkIG5vdCBjcmVhdGUgdGhyZWFkKGVycm5vOiVkKS4AU3RhcnRpbmcgYWNrIHJlY2VpdmVyIHRocmVhZC4ARmFpbGVkIHRvIHdhaXQgb24gc2VtaS1zeW5jIGR1bXAgc29ja2V0cywgZXJyb3I6IGVycm5vPSVkLgBTdG9wcGluZyBhY2sgcmVjZWl2ZXIgdGhyZWFkLgBGYWlsZWQgdG8gcmVnaXN0ZXIgcmVwbGljYSB0byBzZW1pLXN5bmMgQUNLIHJlY2VpdmVyIHRocmVhZC4AU3RhcnQgJXMgYmlubG9nX2R1bXAgdG8gcmVwbGljYSAoc2VydmVyX2lkOiAlZCksIHBvcyglcywgJWx1KS4AU3RvcCAlcyBiaW5sb2dfZHVtcCB0byByZXBsaWNhIChzZXJ2ZXJfaWQ6ICVkKS4AdW5yZWdpc3Rlcl90cmFuc19vYnNlcnZlciBmYWlsZWQuAHVucmVnaXN0ZXJfYmlubG9nX3N0b3JhZ2Vfb2JzZXJ2ZXIgZmFpbGVkLgB1bnJlZ2lzdGVyX2JpbmxvZ190cmFuc21pdF9vYnNlcnZlciBmYWlsZWQuAHVucmVnaXN0ZXJfcmVwbGljYXRvciBPSy4AU2VtaXN5bmMgcmVwbGljYSBzb2NrZXQgZmQgaXMgJXUuIHNlbGVjdCgpIGNhbm5vdCBoYW5kbGUgaWYgdGhlIHNvY2tldCBmZCBpcyBiaWdnZXIgdGhhbiAldSAoRkRfU0VUU0laRSkuACVzOiByZXBseSAtICVkLgBNaXNzaW5nIG1hZ2ljIG51bWJlciBmb3Igc2VtaS1zeW5jIHBhY2tldCwgcGFja2V0IGxlbjogJWx1LgBSZXBsaWNhIEkvTyB0aHJlYWQ6IFN0YXJ0ICVzIHJlcGxpY2F0aW9uIHRvIHNvdXJjZSAnJXNAJXM6JWQnIGluIGxvZyAnJXMnIGF0IHBvc2l0aW9uICVsdS4AJXM6IHJlcGx5ICglcywgJWx1KS4AU2VtaS1zeW5jIHJlcGxpY2EgbmV0X2ZsdXNoKCkgcmVwbHkgZmFpbGVkLgBTZW1pLXN5bmMgcmVwbGljYSBzZW5kIHJlcGx5IGZhaWxlZDogJXMgKCVkKS4ARXhlY3V0aW9uIGZhaWxlZCBvbiBzb3VyY2U6ICVzOyBlcnJvciAlZABTb3VyY2Ugc2VydmVyIGRvZXMgbm90IHN1cHBvcnQgc2VtaS1zeW5jLCBmYWxsYmFjayB0byBhc3luY2hyb25vdXMgcmVwbGljYXRpb24AU2V0ICdycGxfc2VtaV9zeW5jX3JlcGxpY2E9MScgb24gc291cmNlIGZhaWxlZABGYWlsZWQgdG8gc3RvcCBhY2sgcmVjZWl2ZXIgdGhyZWFkIG9uIG15X3RocmVhZF9qb2luLCBlcnJubyglZCkuAEZhaWxlZCB0byByZWFkIHRoZSBmaXJld2FsbCB0YWJsZXMARmFpbGVkIHRvIHJlZ2lzdGVyIGR5bmFtaWMgcHJpdmlsZWdlcwBTdGF0ZW1lbnQgd2FzIHRydW5jYXRlZCBhbmQgbm90IHJlY29yZGVkOiAlcwBTdGF0ZW1lbnQgd2l0aCBubyB0ZXh0IHdhcyBub3QgcmVjb3JkZWQAU1VTUElDSU9VUyBTVEFURU1FTlQgZnJvbSAnJXMnLiBSZWFzb246ICVzIFN0YXRlbWVudDogJXMAQUNDRVNTIERFTklFRCBmb3IgJyVzJy4gUmVhc29uOiAlcyBTdGF0ZW1lbnQ6ICVzAFNraXBwZWQgdW5rbm93biB1c2VyIG1vZGUgJyVzJwBSZWxvYWRpbmcgY2FjaGUgZnJvbSBkaXNrAEZJUkVXQUxMIFJFU0VUIGZvciAnJXMnAENvdW50ZXJzIGFyZSByZXNldCB0byB6ZXJvACVzAEF1ZGl0IExvZyBwbHVnaW4gc3VwcG9ydHMgZmlsdGVyaW5nIG1vZGUsIHdoaWNoIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgeWV0LiBBdWRpdCBMb2cgcGx1Z2luIHdpbGwgcnVuIGluIHRoZSBsZWdhY3kgbW9kZSwgd2hpY2ggd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IHJlbGVhc2UuAFByZXZpb3VzbHkgZXhjbHVkZSBsaXN0IGlzIHVzZWQsIG5vdyB3ZSBzdGFydCB1c2luZyBpbmNsdWRlIGxpc3QsIGV4Y2x1ZGUgbGlzdCBpcyBzZXQgdG8gTlVMTC4AQ2Fubm90IHNldCBhdWRpdF9sb2dfcG9saWN5IHNpbXVsdGFuZW91c2x5IHdpdGggZWl0aGVyIGF1ZGl0X2xvZ19jb25uZWN0aW9uX3BvbGljeSBvciAgYXVkaXRfbG9nX3N0YXRlbWVudF9wb2xpY3ksIHNldHRpbmcgYXVkaXRfbG9nX2Nvbm5lY3Rpb25fcG9saWN5IGFuZCBhdWRpdF9sb2dfc3RhdGVtZW50X3BvbGljeSBiYXNlZCBvbiBhdWRpdF9sb2dfcG9saWN5LgBCb3RoIGluY2x1ZGUgYW5kIGV4Y2x1ZGUgbGlzdHMgcHJvdmlkZWQsIGluY2x1ZGUgbGlzdCBpcyBwcmVmZXJyZWQsIGV4Y2x1ZGUgbGlzdCBpcyBzZXQgdG8gTlVMTC4AQ291bGQgbm90IGFjY2VzcyAnJXMnIGRpcmVjdG9yeS4AQ291bGQgbm90IHJlbmFtZSBmaWxlIGZyb20gJyVzJyB0byAnJXMnLgBGaWxlICclcycgc2hvdWxkIG5vdCBleGlzdC4gSXQgbWF5IGJlIGluY29tcGxldGUuIFRoZSBzZXJ2ZXIgY3Jhc2hlZC4AQ291bGQgbm90IHJlbmFtZSBmaWxlIGZyb20gJyVzJyB0byAnJXMnLiBSZW1vdmUgdGhlIGZpbGUgbWFudWFsbHkuAEluY29tcGxldGUgZmlsZSByZW5hbWVkIGZyb20gJyVzJyB0byAnJXMnLgBFcnJvciB3cml0aW5nIGZpbGUgJyUtLjIwMHMnIChlcnJubzogJWQgLSAlcykuAENvdWxkIG5vdCBpbml0aWFsaXplIGF1ZGl0IGxvZyBmaWxlIGVuY3J5cHRpb24uAENvdWxkIG5vdCBpbml0aWFsaXplIGF1ZGl0IGxvZyBmaWxlIGNvbXByZXNzaW9uLgBDb3VsZCBub3QgY3JlYXRlICclcycgZmlsZSBmb3IgYXVkaXQgbG9nZ2luZy4AQXVkaXQgbG9nIGZpbGUgKCVzKSBtdXN0IGJlIG1hbnVhbGx5IHJlbmFtZWQgYmVmb3JlIGF1ZGl0X2xvZ19mbHVzaCBpcyBzZXQgdG8gdHJ1ZS4AJXMARXJyb3IgcGFyc2luZyBKU09OIGV2ZW50LiBFdmVudCBub3QgYWNjZXNzaWJsZS4AQnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIEpTT04gZXZlbnQuIE51bWJlciBvZiBldmVudHMgc2tpcHBlZDogJXp1LgBDb3VsZCBub3Qgb3BlbiBKU09OIGZpbGUgZm9yIHJlYWRpbmcuIFJlYWRpbmcgbmV4dCBmaWxlIGlmIGV4aXN0cy4ASlNPTiBmaWxlIHBhcnNpbmcgZXJyb3IuIFJlYWRpbmcgbmV4dCBmaWxlIGlmIGV4aXN0cwBJbnZhbGlkIGNvbHVtbiBjb3VudCBpbiB0aGUgJyVzLiVzJyB0YWJsZS4ASW52YWxpZCBjb2x1bW4gZGVmaW5pdGlvbiBvZiB0aGUgJyVzLiVzJyB0YWJsZS4AQ291bGQgbm90IHN0b3JlIGZpZWxkIG9mIHRoZSAlcyB0YWJsZS4AQ291bGQgbm90IHVwZGF0ZSAlcyB0YWJsZS4AQ291bGQgbm90IGluc2VydCBpbnRvICVzIHRhYmxlLgBDb3VsZCBub3QgZGVsZXRlIGZyb20gJXMgdGFibGUuAENvdWxkIG5vdCBpbml0aWFsaXplICVzIHRhYmxlIGZvciByZWFkaW5nLgBDb3VsZCBub3QgcmVhZCAlcyB0YWJsZS4AQ291bGQgbm90IGNsb3NlICVzIHRhYmxlIHJlYWRpbmcuAEJvdGggdXNlciBhbmQgaG9zdCBjb2x1bW5zIG9mICVzIHRhYmxlIGNhbm5vdCBiZSBlbXB0eS4ARmlsdGVybmFtZSBjb2x1bW4gb2YgJXMgdGFibGUgY2Fubm90IGJlIGVtcHR5LgBEaWN0aW9uYXJ5IGZpbGUgbm90IHNwZWNpZmllZABEaWN0aW9uYXJ5IGZpbGUgbm90IGxvYWRlZABEaWN0aW9uYXJ5IGZpbGUgc2l6ZSBleGNlZWRlZCBNQVhfRElDVElPTkFSWV9GSUxFX0xFTkdUSCwgbm90IGxvYWRlZABFeGNlcHRpb24gd2hpbGUgcmVhZGluZyB0aGUgZGljdGlvbmFyeSBmaWxlAENhbid0IHJldHJpZXZlIHRoZSAlcyBmcm9tIHRoZSBzZWN1cml0eSBjb250ZXh0AENhbid0IHJldHJpZXZlIHRoZSBzZWN1cml0eSBjb250ZXh0AEVmZmVjdGl2ZSB2YWx1ZSBvZiB2YWxpZGF0ZV9wYXNzd29yZF9sZW5ndGggaXMgY2hhbmdlZC4gTmV3IHZhbHVlIGlzICVkACVzAFJld3JpdHRlbiBxdWVyeSBmYWlsZWQgdG8gcGFyc2U6JXMAU3RhcnR1cCBmYWlsZWQgd2l0aCBlcnJvciAiJXMiAEV4aXRpbmcARXhpdCBkb25lAFVzaW5nIFNTTCBjb25maWd1cmF0aW9uIGZyb20gTXlTUUwgU2VydmVyAFVzaW5nIFNTTCBjb25maWd1cmF0aW9uIGZyb20gTXlzcWx4IFBsdWdpbgBOZWl0aGVyIE15U1FMIFNlcnZlciBub3IgTXlzcWx4IFBsdWdpbiBoYXMgdmFsaWQgU1NMIGNvbmZpZ3VyYXRpb24AVXNpbmcgJXMgZm9yIFRMUyBjb25uZWN0aW9ucwBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSB0aGUgVXNpbmcgU2VjdXJlIENvbm5lY3Rpb25zIHdpdGggWCBQbHVnaW4gc2VjdGlvbiBpbiB0aGUgTXlTUUwgZG9jdW1lbnRhdGlvbgAlcwBGYWlsZWQgdG8gcGFyc2Ugc3RvcmVkIGF1dGhlbnRpY2F0aW9uIHN0cmluZyBmb3IgJXMuIFBsZWFzZSBjaGVjayBpZiBteXNxbC51c2VyIHRhYmxlIG5vdCBjb3JydXB0ZWQARXJyb3IgaW4gZ2VuZXJhdGluZyBtdWx0aS1yb3VuZCBoYXNoIGZvciAlcy4gUGx1Z2luIGNhbiBub3QgcGVyZm9ybSBhdXRoZW50aWNhdGlvbiB3aXRob3V0IGl0LiBUaGlzIG1heSBiZSBhIHRyYW5zaWVudCBwcm9ibGVtAEF1dGhlbnRpY2F0aW9uIHJlcXVpcmVzIGVpdGhlciBSU0Ega2V5cyBvciBTU0wgZW5jcnlwdGlvbgBSU0Ega2V5IGNpcGhlciBsZW5ndGggb2YgJXUgaXMgdG9vIGxvbmcuIE1heCB2YWx1ZSBpcyAldQBGYWlsZWQgdG8gb3BlbiB0aGUgJXMgZmlsdGVyIHRhYmxlcwBGYWlsZWQgdG8gb3BlbiAnJXMuJXMnICVzIHRhYmxlACVzACVzACVzAFBhc3N3b3JkIHNhbHQgZm9yIHVzZXIgJyVzJyBpcyBjb3JydXB0AE91dCBvZiBtZW1vcnkgZm9yIGNvbXBvbmVudCBzeXN0ZW0gdmFyaWFibGUgJyVzJy4AdmFyaWFibGUgJXMgb2YgY29tcG9uZW50ICVzIHdhcyBmb3JjZWQgdG8gYmUgcmVhZC1vbmx5OiBzdHJpbmcgdmFyaWFibGUgd2l0aG91dCB1cGRhdGVfZnVuYyBhbmQgUExVR0lOX1ZBUl9NRU1BTExPQyBmbGFnLgBVbmtub3duIHZhcmlhYmxlIHR5cGUgY29kZSAweCV4IGluIGNvbXBvbmVudCAnJXMnLgBQYXJzaW5nIG9wdGlvbnMgZm9yIHZhcmlhYmxlICclcycgZmFpbGVkLgBTZXR0aW5nIHBlcnNpc3RlbnQgb3B0aW9ucyBmb3IgY29tcG9uZW50IHZhcmlhYmxlICclcycgZmFpbGVkLgBUaGUgbG9nLWZpbHRlciBjb21wb25lbnQgIiVzIiBnb3QgY29uZnVzZWQgYXQgIiVzIiAoc3RhdGU6ICVzKSAuLi4AV2FpdGluZyB1bnRpbCBJL08gdGhyZWFkIGZvciBjaGFubmVsICclcycgZmluaXNoIHdyaXRpbmcgdG8gZGlzayBiZWZvcmUgc3RvcHBpbmcuIEZyZWUgc29tZSBkaXNrIHNwYWNlIG9yIHVzZSAnS0lMTCcgdG8gYWJvcnQgSS9PIHRocmVhZCBvcGVyYXRpb24uIE5vdGljZSB0aGF0IGFib3J0aW5nIHRoZSBJL08gdGhyZWFkIHdoaWxlIHJvdGF0aW5nIHRoZSByZWxheSBsb2cgbWlnaHQgY29ycnVwdCB0aGUgcmVsYXkgbG9ncywgcmVxdWlyaW5nIGEgc2VydmVyIHJlc3RhcnQgdG8gZml4IGl0LgBDb3VsZCBub3QgdXNlICVzIGZvciBsb2dnaW5nIChlcnJvciAlZCAtICVzKS4gVHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHNlcnZlciBwcm9jZXNzLiBUbyB0dXJuIGl0IG9uIGFnYWluOiBmaXggdGhlIGNhdXNlLCB0aGVuJXMgcmVzdGFydCB0aGUgTXlTUUwgc2VydmVyLgBVbmFibGUgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBmb3IgY29sdW1uICclLS4xOTJzJzogJS0uMTkycy4AJ3V0ZjgnIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgd2hpY2ggd2lsbCBiZSByZXBsYWNlZCBieSBVVEY4TUI0IGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBOQVRJT05BTC9OQ0hBUi9OVkFSQ0hBUiBpbXBsaWVzIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQ0hBUih4KSBDSEFSQUNURVIgU0VUIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuAEEgY29tbWl0IGZvciBhbiBhdG9taWMgRERMIHN0YXRlbWVudCB3YXMgdW5zdWNjZXNzZnVsIG9uIHRoZSBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLiBUaGUgcmVwbGljYSBzdXBwb3J0cyBhdG9taWMgRERMIHN0YXRlbWVudHMgYnV0IHRoZSBzb3VyY2UgZG9lcyBub3QsIHNvIHRoZSBhY3Rpb24gdGFrZW4gYnkgdGhlIHJlcGxpY2EgYW5kIHNvdXJjZSBtaWdodCBkaWZmZXIuIENoZWNrIHRoYXQgdGhlaXIgc3RhdGVzIGhhdmUgbm90IGRpdmVyZ2VkIGJlZm9yZSBwcm9jZWVkaW5nLgBDb25maWd1cmluZyBwZXJzaXN0ZWQgb3B0aW9ucyBmYWlsZWQ6ICIlcyIuAFRoZSBzdG9yYWdlIGVuZ2luZSAnJS0uMTkycycgZG9lcyBub3QgcHJvdmlkZSBkeW5hbWljIHRhYmxlIHN0YXRpc3RpY3MAVGhpcyBvcHRpb24gY2Fubm90IGJlIHNldCAlcy4AVGhlIHRhYmxlICclLS4xOTJzJyBtYXkgbm90IGJlIGNyZWF0ZWQgaW4gdGhlIHJlc2VydmVkIHRhYmxlc3BhY2UgJyUtLjE5MnMnLgBTU0wgZmlwcyBtb2RlIGVycm9yOiAlcwBpbml0X2Nvbm5lY3QgdmFyaWFibGUgaXMgaWdub3JlZCBmb3IgdXNlcjogJXMgaG9zdDogJXMgZHVlIHRvIGV4cGlyZWQgcGFzc3dvcmQuAHNxbF9tb2RlPTB4JTA4eCBpcyBub3Qgc3VwcG9ydGVkAE91dCBvZiBtZW1vcnkuAFdyb25nIGNvbHVtbiBjb3VudCBvciBuYW1lcyB3aGVuIGxvYWRpbmcgcnVsZXMuAFNvbWUgcnVsZXMgZmFpbGVkIHRvIGxvYWQuAEdvdCBlcnJvciBmcm9tIHN0b3JhZ2UgZW5naW5lIHdoaWxlIHJlZnJlc2hpbmcgcmV3cml0ZSBydWxlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgQ29ubmVjdGlvbl9ldmVudF9jb29yZGluYXRvcgBGYWlsZWQgdG8gdXBkYXRlIGNvbm5lY3Rpb24gZGVsYXkgdHJpZ2dlcmVkIHN0YXRzAEZhaWxlZCB0byByZXNldCBjb25uZWN0aW9uIGRlbGF5IHRyaWdnZXJlZCBzdGF0cwBVbmV4cGVjdGVkIG9wdGlvbiB0eXBlIGZvciBjb25uZWN0aW9uIGRlbGF5LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb25uZWN0aW9uX2RlbGF5X2FjdGlvbgBDb3VsZCBub3Qgc2V0ICVzIGRlbGF5IGZvciBjb25uZWN0aW9uIGRlbGF5LgBGYWlsZWQgdG8gdXBkYXRlIGNvbm5lY3Rpb24gZGVsYXkgaGFzaCBmb3IgYWNjb3VudCA6ICVzACVzOiBGb3JjZSBzdG9wcGluZyBjbGllbnQgYmVjYXVzZSBleGNlcHRpb24gb2NjdXJyZWQ6ICVzACVzLiV1OiBNYXhpbXVtIG51bWJlciBvZiBhdXRoZW50aWNhdGlvbiBhdHRlbXB0cyByZWFjaGVkLCBsb2dpbiBmYWlsZWQuAEVycm9yIGFsbG9jYXRpbmcgQnVmZmVyX3BhZ2U6ICVzAERldGVjdGVkICV1IGhhbmdpbmcgY2xpZW50KHMpAEVycm9yIGFjY2VwdGluZyBjbGllbnQASW50ZXJuYWwgZXJyb3Igc2NoZWR1bGluZyBjbGllbnQgZm9yIGV4ZWN1dGlvbgBQcmVwYXJhdGlvbiBvZiBJL08gaW50ZXJmYWNlcyBmYWlsZWQsIFggUHJvdG9jb2wgd29uJ3QgYmUgYWNjZXNzaWJsZQBzcnZfc2Vzc2lvbl9pbml0X3RocmVhZCByZXR1cm5lZCBlcnJvcgBVbmFibGUgdG8gdXNlIHVzZXIgbXlzcWwuc2Vzc2lvbiBhY2NvdW50IHdoZW4gY29ubmVjdGluZyB0aGUgc2VydmVyIGZvciBpbnRlcm5hbCBwbHVnaW4gcmVxdWVzdHMuAEZvciBtb3JlIGluZm9ybWF0aW9uLCBwbGVhc2Ugc2VlIHRoZSBYIFBsdWdpbiBVc2VyIEFjY291bnQgc2VjdGlvbiBpbiB0aGUgTXlTUUwgZG9jdW1lbnRhdGlvbgAlczogVW5leHBlY3RlZCBleGNlcHRpb24gZGlzcGF0Y2hpbmcgY29tbWFuZDogJXMARXhjZXB0aW9uIGluIHBvc3Q6ICVzAEludGVybmFsIGVycm9yIHNjaGVkdWxpbmcgdGFzawBFeGNlcHRpb24gaW4gZXZlbnQgbG9vcDogIiVzIjogJXMAU2V0dXAgb2YgJXMgZmFpbGVkLCAlcwAlcwBGYWlsZWQgYXQgU1NMIGNvbmZpZ3VyYXRpb246ICIlcyIARXJyb3IgZHVyaW5nIFNTTCBoYW5kc2hha2UgZm9yIGNsaWVudCBjb25uZWN0aW9uICglaSkAJXM6IEVycm9yIGR1cmluZyBTU0wgaGFuZHNoYWtlACVzOiBFcnJvciBjcmVhdGluZyBzZXNzaW9uIGZvciBjb25uZWN0aW9uIGZyb20gJXMAJXM6IEVycm9yIGluaXRpYWxpemluZyBzZXNzaW9uIGZvciBjb25uZWN0aW9uOiAlcwAlczogTWVzc2FnZSBvZiBzaXplICV1IHJlY2VpdmVkLCBleGNlZWRpbmcgdGhlIGxpbWl0IG9mICVpAE1lc3NhZ2UgaXMgbm90IHByb3Blcmx5IGluaXRpYWxpemVkOiAlcwBVbmFibGUgdG8gc2V0IG1pbmltYWwgbnVtYmVyIG9mIHdvcmtlcnMgdG8gJXU7IGFjdHVhbCB2YWx1ZSBpcyAlaQBVbmFibGUgdG8gYWNjZXB0IGNvbm5lY3Rpb24sIGRpc2Nvbm5lY3RpbmcgY2xpZW50AEFsbCBJL08gaW50ZXJmYWNlcyBhcmUgZGlzYWJsZWQsIFggUHJvdG9jb2wgd29uJ3QgYmUgYWNjZXNzaWJsZQAlczogSW52YWxpZCBtZXNzYWdlICVpIHJlY2VpdmVkIGR1cmluZyBjbGllbnQgaW5pdGlhbGl6YXRpb24AJXM6IGNsb3NpbmcgY2xpZW50IGJlY2F1c2Ugb2Ygc2h1dGRvd24gKHN0YXRlOiAlaSkAJXM6IEVycm9yIHJlYWRpbmcgZnJvbSBzb2NrZXQgJXMgKCVpKQAlczogcGVlciBkaXNjb25uZWN0ZWQgd2hpbGUgcmVhZGluZyBtZXNzYWdlIGJvZHkAY2xpZW50X2lkOiVzIC0gJXMgd2hpbGUgcmVhZGluZyBmcm9tIHNvY2tldCwgY2xvc2luZyBjb25uZWN0aW9uACVzLiV1OiBJbnZhbGlkIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAlcwAlczogVW5leHBlY3RlZCBtZXNzYWdlIG9mIHR5cGUgJWkgcmVjZWl2ZWQgZHVyaW5nIGF1dGhlbnRpY2F0aW9uAEVycm9yIHdyaXRpbmcgdG8gY2xpZW50OiAlcyAoJWkpAFNjaGVkdWxlciAiJXMiIHN0YXJ0ZWQuAFNjaGVkdWxlciAiJXMiIHN0b3BwZWQuAFBsZWFzZSBzZWUgdGhlIE15U1FMIGRvY3VtZW50YXRpb24gZm9yICclcycgc3lzdGVtIHZhcmlhYmxlcyB0byBmaXggdGhlIGVycm9yAFggUGx1Z2luIHJlYWR5IGZvciBjb25uZWN0aW9ucy4gJXMAUmV0cnlpbmcgYGJpbmQoKWAgb24gVENQL0lQIHBvcnQgJWkAU2h1dGRvd24gdHJpZ2dlcmVkIGJ5IG15c3FsZCBhYm9ydCBmbGFnAFVzaW5nICVzIGFjY291bnQgZm9yIGF1dGhlbnRpY2F0aW9uIHdoaWNoIGhhcyBhbGwgcmVxdWlyZWQgcGVybWlzc2lvbnMAVXNpbmcgZXhpc3RpbmcgJXMgYWNjb3VudCBmb3IgYXV0aGVudGljYXRpb24uIEluY29tcGxldGUgZ3JhbnRzIHdpbGwgYmUgZml4ZWQAU2VydmVyIHN0YXJ0cyBoYW5kbGluZyBpbmNvbWluZyBjb25uZWN0aW9ucwBTdG9wcGVkIGhhbmRsaW5nIGluY29taW5nIGNvbm5lY3Rpb25zACVzOiBDb3VsZCBub3QgaW50ZXJydXB0IGNsaWVudCBzZXNzaW9uACVzOiByZWxlYXNlIHRyaWdnZXJlZCBieSB0aW1lb3V0IGluIHN0YXRlOiVpAElQdjYgaXMgYXZhaWxhYmxlAFVOSVggc29ja2V0IG5vdCBjb25maWd1cmVkAEtpbGwgY2xpZW50OiAlaSAlcwBDb3VsZCBub3QgZ2V0IHNlY3VyaXR5IGNvbnRleHQgZm9yIHNlc3Npb24AVW5hYmxlIHRvIHN3aXRjaCBzZWN1cml0eSBjb250ZXh0IHRvIHJvb3QARXJyb3IgY2xvc2luZyBTUUwgc2Vzc2lvbgBFcnJvciBleGVjdXRpbmcgYWRtaW4gY29tbWFuZCAlczogJXMARXJyb3IgZXhlY3V0aW5nIGVtcHR5IGFkbWluIGNvbW1hbmQAVW5hYmxlIHRvIHJldHJpZXZlIHN5c3RlbSB2YXJpYWJsZSAnJXMnAFVuYWJsZSB0byBnZXQgY3JlYXRpb24gc3RtdCBmb3IgY29sbGVjdGlvbiAnJXMnOyBxdWVyeSByZXN1bHQgc2l6ZTogJWx1AFVuYWJsZSB0byBnZXQgZW5naW5lIGluZm8gZm9yIGNvbGxlY3Rpb24gJyVzJzsgY3JlYXRpb24gc3RtdDogJXMARXJyb3IgZ2V0dGluZyByZXN1bHQgZGF0YTogJXMAQ2FwYWJpbGl0eSBleHBpcmVkIHBhc3N3b3JkIGZhaWxlZCB3aXRoIGVycm9yOiAlcwBGYWlsZWQgdG8gc2V0IFNPX1JFVVNFQUREUiBmbGFnIChlcnJvcjogJWQpLgBDb3VsZCBub3Qgb3BlbiBpbnRlcm5hbCBNeVNRTCBzZXNzaW9uAFVuYWJsZSB0byBzd2l0Y2ggY29udGV4dCB0byB1c2VyICVzAENhbid0IHVucmVnaXN0ZXIgJyVzJyB1c2VyIGRlZmluZWQgZnVuY3Rpb24AJXM6IGdldCBwZWVyIGFkZHJlc3MgZmFpbGVkLCBjYW4ndCByZXNvbHZlIElQIHRvIGhvc3RuYW1lAENhcGFiaWxpdHkgY2xpZW50IGludGVyYWN0aXZlIGZhaWxlZCB3aXRoIGVycm9yOiAlcwBGYWlsZWQgdG8gcmVzZXQgSVBWNl9WNk9OTFkgZmxhZyAoZXJyb3I6ICVkKS4gVGhlIHNlcnZlciB3aWxsIGxpc3RlbiB0byBJUHY2IGFkZHJlc3NlcyBvbmx5LgBJbnZhbGlkIGtleSB0eXBlAEludmFsaWQga2V5IGxlbmd0aCBmb3IgZ2l2ZW4gYmxvY2sgY2lwaGVyAENvdWxkIG5vdCBjcmVhdGUga2V5cmluZyBkaXJlY3RvcnkuIFRoZSBrZXlyaW5nX2ZpbGUgd2lsbCBzdGF5IHVudXNhYmxlIHVudGlsIGNvcnJlY3QgcGF0aCB0byB0aGUga2V5cmluZyBkaXJlY3RvcnkgZ2V0cyBwcm92aWRlZABrZXlyaW5nX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4gUGxlYXNlIGNoZWNrIGlmIHRoZSBrZXlyaW5nX2ZpbGVfZGF0YSBwb2ludHMgdG8gcmVhZGFibGUga2V5cmluZyBmaWxlIG9yIGtleXJpbmcgZmlsZSBjYW4gYmUgY3JlYXRlZCBpbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uLiBUaGUga2V5cmluZ19maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0IHBhdGggdG8gdGhlIGtleXJpbmcgZmlsZSBnZXRzIHByb3ZpZGVkAGtleXJpbmdfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4uAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX2ZpbGUgcGx1Z2luAEVycm9yIHdoaWxlICVzIGtleTogaW52YWxpZCBrZXlfdHlwZQBFcnJvciB3aGlsZSAlcyBrZXk6IGtleV9pZCBjYW5ub3QgYmUgZW1wdHkARmFpbGVkIHRvICVzIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlICVzIHBsdWdpbgBJbmNvcnJlY3QgS2V5cmluZyBmaWxlAEZvdW5kIG1hbGZvcm1lZCBrZXlyaW5nIGJhY2t1cCBmaWxlIC0gcmVtb3ZpbmcgaXQARXJyb3Igd2hpbGUgcmVzdG9yaW5nIGtleXJpbmcgZnJvbSBiYWNrdXAgZmlsZSBjYW5ub3Qgb3ZlcndyaXRlIGtleXJpbmcgd2l0aCBiYWNrdXAARXJyb3Igd2hpbGUgZmx1c2hpbmcgaW4tbWVtb3J5IGtleXJpbmcgaW50byBrZXlyaW5nIGZpbGUARXJyb3Igd2hpbGUgcmVhZGluZyBzdGF0IGZvciAlcy5QbGVhc2UgY2hlY2sgaWYgZmlsZSAlcyB3YXMgbm90IHJlbW92ZWQuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZW1vdmUgZmlsZSAlcyBPUyByZXR1bmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCB0cnVuY2F0ZSBmaWxlICVzLiBPUyByZXR1bmVkIHRoaXMgZXJyb3I6ICVzAFVua25vd24gZXJyb3IgJWQAa2V5cmluZ19maWxlX2RhdGEgY2Fubm90IGJlIHNldCB0byBuZXcgdmFsdWUgYXMgdGhlIGtleXJpbmcgZmlsZSBjYW5ub3QgYmUgY3JlYXRlZC9hY2Nlc3NlZCBpbiB0aGUgcHJvdmlkZWQgcGF0aAAlcwBFcnJvciB3aGlsZSBsb2FkaW5nIGtleXJpbmcgY29udGVudC4gVGhlIGtleXJpbmcgbWlnaHQgYmUgbWFsZm9ybWVkAENvdWxkIG5vdCBmbHVzaCBrZXlzIHRvIGtleXJpbmcAQ291bGQgbm90IGZsdXNoIGtleXMgdG8ga2V5cmluZydzIGJhY2t1cABFcnJvciB3aGlsZSBmZXRjaGluZyBrZXk6IGtleV9pZCBjYW5ub3QgYmUgZW1wdHkARXJyb3Igd2hpbGUgcmVtb3Zpbmcga2V5OiBrZXlfaWQgY2Fubm90IGJlIGVtcHR5AEZvciBrZXlyaW5nX29rdiB0byBiZSBpbml0aWFsaXplZCwgcGxlYXNlIHBvaW50IGtleXJpbmdfb2t2X2NvbmZfZGlyIHZhcmlhYmxlIHRvIGEgZGlyZWN0b3J5IHdpdGggT3JhY2xlIEtleSBWYXVsdCBjb25maWd1cmF0aW9uIGZpbGUgYW5kIHNzbCBtYXRlcmlhbHMAa2V5cmluZ19va3YgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4gUGxlYXNlIGNoZWNrIHRoYXQgdGhlIGtleXJpbmdfb2t2X2NvbmZfZGlyIHBvaW50cyB0byBhIHJlYWRhYmxlIGRpcmVjdG9yeSBhbmQgdGhhdCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zIE9yYWNsZSBLZXkgVmF1bHQgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzc2wgbWF0ZXJpYWxzLiBQbGVhc2UgYWxzbyBjaGVjayB0aGF0IE9yYWNsZSBLZXkgVmF1bHQgaXMgdXAgYW5kIHJ1bm5pbmcuAGtleXJpbmdfb2t2IGluaXRpYWxpemF0aW9uIGZhaWx1cmUgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIHBsdWdpbgBJbnZhbGlkIGtleSB0eXBlAEludmFsaWQga2V5IGxlbmd0aCBmb3IgZ2l2ZW4gYmxvY2sgY2lwaGVyAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX29rdiBwbHVnaW4AQ291bGQgbm90IGZpbmQgZW50cnkgZm9yIHNlcnZlciBpbiBjb25maWd1cmF0aW9uIGZpbGUgJXMAQ291bGQgbm90IGZpbmQgZW50cnkgZm9yIHN0YW5kYnkgc2VydmVyIGluIGNvbmZpZ3VyYXRpb24gZmlsZSAlcwBDb3VsZCBub3QgcGFyc2UgdGhlICVzIGZpbGUgcHJvdmlkZWQAQ291bGQgbm90IGxvYWQga2V5cycgdWlkcyBmcm9tIHRoZSBPS1Ygc2VydmVyAENvdWxkIG5vdCBpbml0aWFsaXplIHNzbCBsYXllcgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBPS1YgY2xpZW50AENvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBPS1Ygc2VydmVyAENvdWxkIG5vdCByZW1vdmUgdGhlIGtleQBDb3VsZCBub3QgYWRkIGF0dHJpYnV0ZSwgYXR0cmlidXRlX25hbWU9JXMgYXR0cmlidXRlIHZhbHVlPSVzAENvdWxkIG5vdCBnZW5lcmF0ZSB0aGUga2V5LgBDb3VsZCBub3Qgc3RvcmUgdGhlIGtleS4AQ291bGQgbm90IGFjdGl2YXRlIHRoZSBrZXkuAENvdWxkIG5vdCBmZXRjaCBnZW5lcmF0ZWQga2V5AENvdWxkIG5vdCBzdG9yZS9nZW5lcmF0ZSB0aGUga2V5IC0gZmFpbGVkIHRvIHNldCBrZXkgYXR0cmlidXRlIHgta2V5LXJlYWR5AENvdWxkIG5vdCByZXRyaWV2ZSBrZXkgc2lnbmF0dXJlIGZyb20gY3VzdG9tIGF0dHJpYnV0ZXMAQ291bGQgbm90IHJldHJpZXZlIGtleSBmcm9tIE9LVgBFcnJvciBsb2FkaW5nIHRydXN0IHN0b3JlAEVycm9yIHNldHRpbmcgdGhlIGNlcnRpZmljYXRlIGZpbGUuAEVycm9yIHNldHRpbmcgdGhlIGtleSBmaWxlLgBQcml2YXRlIGtleSBkb2VzIG5vdCBtYXRjaCB0aGUgY2VydGlmaWNhdGUgcHVibGljIGtleQBJbmNvcnJlY3QgS2V5cmluZyBmaWxlAEtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgZGVjcnlwdGlvbiBmYWlsZWQuIFBsZWFzZSB2ZXJpZnkgLS1rZXlyaW5nLWVuY3J5cHRlZC1maWxlLXBhc3N3b3JkIG9wdGlvbiB2YWx1ZS4ARm91bmQgbWFsZm9ybWVkIGtleXJpbmcgYmFja3VwIGZpbGUgLSByZW1vdmluZyBpdABFcnJvciB3aGlsZSByZXN0b3Jpbmcga2V5cmluZyBmcm9tIGJhY2t1cCBmaWxlIGNhbm5vdCBvdmVyd3JpdGUga2V5cmluZyB3aXRoIGJhY2t1cABFcnJvciB3aGlsZSBmbHVzaGluZyBpbi1tZW1vcnkga2V5cmluZyBpbnRvIGtleXJpbmcgZmlsZQBLZXlyaW5nX2VuY3J5cHRlZF9maWxlIGVuY3J5cHRpb24gZmFpbGVkLiBQbGVhc2UgdmVyaWZ5IC0ta2V5cmluZy1lbmNyeXB0ZWQtZmlsZS1wYXNzd29yZCBvcHRpb24gdmFsdWUuAGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfZGF0YSBjYW5ub3QgYmUgc2V0IHRvIG5ldyB2YWx1ZSBhcyB0aGUga2V5cmluZyBmaWxlIGNhbm5vdCBiZSBjcmVhdGVkL2FjY2Vzc2VkIGluIHRoZSBwcm92aWRlZCBwYXRoAENvdWxkIG5vdCBjcmVhdGUga2V5cmluZyBkaXJlY3RvcnkgVGhlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgd2lsbCBzdGF5IHVudXNhYmxlIHVudGlsIGNvcnJlY3QgcGF0aCB0byB0aGUga2V5cmluZyBkaXJlY3RvcnkgZ2V0cyBwcm92aWRlZABUaGUga2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9wYXNzd29yZCBtdXN0IGJlIHNldCB0byBhIHZhbGlkIHZhbHVlLgBUb28gbG9uZyBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX3Bhc3N3b3JkIHZhbHVlLgBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9kYXRhIHBvaW50cyB0byByZWFkYWJsZSBrZXlyaW5nIGZpbGUgb3Iga2V5cmluZyBmaWxlIGNhbiBiZSBjcmVhdGVkIGluIHRoZSBzcGVjaWZpZWQgbG9jYXRpb24gb3IgcGFzc3dvcmQgdG8gZGVjcnlwdCBrZXlyaW5nIGZpbGUgaXMgY29ycmVjdC4Aa2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4ARmFpbGVkIHRvIGdlbmVyYXRlIGEga2V5IGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgcGx1Z2luAGtleXJpbmdfYXdzX2Nta19pZCBjYW5ub3QgYmUgc2V0IHRvIHRoZSBuZXcgdmFsdWUgYXMgQVdTIEtNUyBzZWVtcyB0byBub3QgdW5kZXJzdGFuZCB0aGUgaWQgcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGF0IENNSyBpZCBwcm92aWRlZCBpcyBjb3JyZWN0LgBrZXlyaW5nX2F3c19yZWdpb24gY2Fubm90IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlIGFzIEFXUyBLTVMgc2VlbXMgdG8gbm90IHVuZGVyc3RhbmQgdGhlIHJlZ2lvbiBwcm92aWRlZC4gUGxlYXNlIGNoZWNrIHRoYXQgcmVnaW9uIHByb3ZpZGVkIGlzIGNvcnJlY3QuAENvdWxkIG5vdCBvcGVuIGtleXJpbmdfYXdzIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZWFkIEFXUyBhY2Nlc3Mga2V5IGlkIGZyb20ga2V5cmluZ19hd3MgY29uZmlndXJhdGlvbiBmaWxlOiAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJlYWQgQVdTIGFjY2VzcyBrZXkgZnJvbSBrZXlyaW5nX2F3cyBjb25maWd1cmF0aW9uIGZpbGU6ICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBQYXRoIHRvIGtleXJpbmcgYXdzIGNvbmZpZ3VyYXRpb24gZmlsZSBjYW5ub3QgYmUgZW1wdHkAUGF0aCB0byBrZXlyaW5nX2F3cyBzdG9yYWdlIGZpbGUgY2Fubm90IGJlIGVtcHR5LgBVbmFibGUgdG8gY3JlYXRlL2FjY2VzcyBrZXlyaW5nIGRpcmVjdG9yeS4AVW5hYmxlIHRvIGNyZWF0ZS9hY2Nlc3Mga2V5cmluZ19hd3Mgc3RvcmFnZSBmaWxlLiBQbGVhc2UgY2hlY2sgaWYga2V5cmluZ19hd3NfZGF0YV9maWxlIHBvaW50cyB0byBsb2NhdGlvbiB3aGVyZSBrZXlyaW5nIGZpbGUgY2FuIGJlIGNyZWF0ZWQvYWNjZXNzZWQuIFBsZWFzZSBhbHNvIG1ha2Ugc3VyZSB0aGF0IE15U1FMIHNlcnZlcidzIHVzZXIgaGFzIGhpZ2ggZW5vdWdoIHByaXZpbGVnZXMgdG8gYWNjZXNzIHRoaXMgbG9jYXRpb24uAGtleXJpbmdfYXdzIGluaXRpYWxpemF0aW9uIGZhaWxlZCBkdWUgdG8gaW50ZXJuYWwgZXJyb3Igd2hlbiBpbml0aWFsaXppbmcgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZSAtICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlczoAQ291bGQgbm90IGFjY2VzcyBrZXlyaW5nX2F3cyBzdG9yYWdlIGZpbGUgaW4gdGhlIHBhdGggcHJvdmlkZWQuIFBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZ19hd3MgZGlyZWN0b3J5IGNhbiBiZSBhY2Nlc3NlZCBieSBNeVNRTCBTZXJ2ZXIAa2V5cmluZ19hd3NfY21rX2lkIGhhcyB0byBiZSBzZXQAQ291bGQgbm90IGdldCBBV1MgS01TIGNyZWRlbnRpYWxzIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQBrZXlyaW5nX2F3cyBpbml0aWFsaXphdGlvbiBmYWlsdXJlLgBrZXlyaW5nX2F3cyBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4ASW52YWxpZCBrZXkgbGVuZ3RoIGZvciBnaXZlbiBibG9jayBjaXBoZXIARmFpbGVkIHRvIGdlbmVyYXRlIGEga2V5IGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIGtleXJpbmdfZmlsZSBwbHVnaW4ASW5jb3JyZWN0IEtleXJpbmcgZmlsZQBGb3VuZCBtYWxmb3JtZWQga2V5cmluZyBiYWNrdXAgZmlsZSAtIHJlbW92aW5nIGl0AEVycm9yIHdoaWxlIHJlc3RvcmluZyBrZXlyaW5nIGZyb20gYmFja3VwIGZpbGUgY2Fubm90IG92ZXJ3cml0ZSBrZXlyaW5nIHdpdGggYmFja3VwAEVycm9yIHdoaWxlIGZsdXNoaW5nIGluLW1lbW9yeSBrZXlyaW5nIGludG8ga2V5cmluZyBmaWxlAFdyb25nIHJlZ2lvbgBDb3VsZCBub3QgY29ubmVjdCB0byBBV1MgS01TIHdpdGggdGhlIGNyZWRlbnRpYWxzIHByb3ZpZGVkLiBQbGVhc2UgbWFrZSBzdXJlIHRoZXkgYXJlIGNvcnJlY3QuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IGdlbmVyYXRlIGEgbmV3IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgZW5jcnlwdCBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJlLWVuY3J5cHQga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCBkZWNyeXB0IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3Qgcm90YXRlIHRoZSBDTUsuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAVGhlIHJlcXVlc3RlZCBHVElEICclczolbGxkJyB3YXMgYWxyZWFkeSB1c2VkLCB0aGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjay4AVGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkIHdhcyBraWxsZWQuAEVycm9yIGF0IGV2ZW50IGhhbmRsaW5nISBHb3QgZXJyb3I6ICVkLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgZ3JvdXAgR1RJRCBleGVjdXRpb24gaW5mb3JtYXRpb24sIHNvbWUgcmVjb3Zlcnkgb3BlcmF0aW9ucyBtYXkgZmFjZSBmdXR1cmUgaXNzdWVzLgBBbiBlcnJvciBvY2N1cnJlZCB3aGVuIHRyeWluZyB0byByZWR1Y2UgdGhlIENlcnRpZmljYXRpb24gaW5mb3JtYXRpb24gc2l6ZSBmb3IgdHJhbnNtaXNzaW9uLgBGYWlsZWQgdG8gY3JlYXRlIGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGFwcGxpZXIgY2FjaGUhAFVuYmxvY2tpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHRocmVhZCB3YWl0aW5nIGZvciBhcHBsaWVyIHRvIHN0YXJ0LCBhcyB0aGUgc3RhcnQgZ3JvdXAgcmVwbGljYXRpb24gd2FzIGtpbGxlZC4AVGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgcGlwZWxpbmUgd2FzIG5vdCBwcm9wZXJseSBkaXNwb3NlZC4gQ2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgZnVydGhlciBpbmZvLgBUaGUgYXBwbGllciB0aHJlYWQgZXhlY3V0aW9uIHdhcyBhYm9ydGVkLiBVbmFibGUgdG8gcHJvY2VzcyBtb3JlIHRyYW5zYWN0aW9ucywgdGhpcyBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBGYXRhbCBlcnJvciBkdXJpbmcgZXhlY3V0aW9uIG9uIHRoZSBBcHBsaWVyIHByb2Nlc3Mgb2YgR3JvdXAgUmVwbGljYXRpb24uIFRoZSBzZXJ2ZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gJXMARXJyb3Igc2VuZGluZyBzaW5nbGUgcHJpbWFyeSBtZXNzYWdlIGluZm9ybWluZyB0aGF0IHByaW1hcnkgZGlkIGFwcGx5IHJlbGF5IGxvZ3MuAEVycm9yIHVwZGF0aW5nIHRyYW5zYWN0aW9uIHNuYXBzaG90IHZlcnNpb24gYWZ0ZXIgdHJhbnNhY3Rpb24gYmVpbmcgcG9zaXRpdmVseSBjZXJ0aWZpZWQuAEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uIHNpZG5vIGFmdGVyIHRyYW5zYWN0aW9uIGJlaW5nIHBvc2l0aXZlbHkgY2VydGlmaWVkLgBCcm9hZGNhc3Qgb2YgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBtZXNzYWdlIGZhaWxlZC4AVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBhZGQgdGhlIGdyb3VwX3NpZCBpbiB0aGUgZ3JvdXBfZ3RpZF9zaWRfbWFwIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHVwZGF0aW5nIGdyb3VwX2d0aWRfZXhlY3V0ZWQgR0lURCBzZXQgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIGhhbmRsZSB0aGUgZG9ub3IncyB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiB3aGVuIGluaXRpYWxpemluZyB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGNvbXBvbmVudC4gUG9zc2libGUgb3V0IG9mIG1lbW9yeSBlcnJvci4ARXJyb3Igd2hlbiBlc3RhYmxpc2hpbmcgYSBzZXJ2ZXIgY29ubmVjdGlvbiBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgR1RJRCBleGVjdXRlZCBzZXQuIENlcnRpZmljYXRpb24gbW9kdWxlIGNhbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLgBFcnJvciB3aGlsZSBhZGRpbmcgdGhlIHNlcnZlciBHVElEIEVYRUNVVEVEIHNldCB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciByZXRyaWV2ZWQgc2V0IGZvciBpdHMgYXBwbGllci4gQ2VydGlmaWNhdGlvbiBtb2R1bGUgY2FuJ3QgYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuAEVycm9yIHdoaWxlIGFkZGluZyB0aGUgbWVtYmVyIHJldHJpZXZlZCBzZXQgdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3IgZHVyaW5nIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gdXBkYXRlIGxhc3QgY29uZmxpY3QgZnJlZSB0cmFuc2FjdGlvbiwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIG5vdCBiZSB0cmFja2VkIG9uIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfc3RhdHMubGFzdF9jb25mbGljdF9mcmVlX3RyYW5zYWN0aW9uLgBFcnJvciB1cGRhdGluZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCB2ZXJzaW9uIHJlZmVyZW5jZSBmb3IgaW50ZXJuYWwgc3RvcmFnZS4ARXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24gc2lkbm8gd2hpbGUgYWRkaW5nIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldC4ARXJyb3Igd2hpbGUgZW5zdXJpbmcgdGhlIHNpZG5vIGJlIHByZXNlbnQgaW4gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQuAEltcG9zc2libGUgdG8gZ2VuZXJhdGUgR2xvYmFsIFRyYW5zYWN0aW9uIElkZW50aWZpZXI6IHRoZSBpbnRlZ2VyIGNvbXBvbmVudCByZWFjaGVkIHRoZSBtYXhpbWFsIHZhbHVlLiBSZXN0YXJ0IHRoZSBncm91cCB3aXRoIGEgbmV3IGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAEludmFsaWQgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHVwZGF0aW5nIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBUaGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBmaWxsaW5nIHRoZSBtaXNzaW5nIEdUSURzIG9uIHRoZSBhcHBsaWVyIGNoYW5uZWwgcmVjZWl2ZWQgc2V0LiBEZXNwaXRlIG5vdCBjcml0aWNhbCwgb24gdGhlIGxvbmcgcnVuIHRoaXMgbWF5IGNhdXNlIHBlcmZvcm1hbmNlIGlzc3Vlcy4AU2tpcHBpbmcgdGhlIGNvbXB1dGF0aW9uIG9mIHRoZSBUcmFuc2FjdGlvbnNfY29tbWl0dGVkX2FsbF9tZW1iZXJzIGZpZWxkIGFzIGFuIG9sZGVyIGluc3RhbmNlIG9mIHRoaXMgY29tcHV0YXRpb24gaXMgc3RpbGwgb25nb2luZy4ATnVsbCBwYWNrZXQgb24gY2VydGlmaWVyJ3MgcXVldWUuAEVycm9yIHJlYWRpbmcgR1RJRHMgZnJvbSB0aGUgbWVzc2FnZS4ARXJyb3IgcHJvY2Vzc2luZyBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4ARXJyb3IgcHJvY2Vzc2luZyBpbnRlcnNlY3Rpb24gb2Ygc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHNldHRpbmcgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHJlYWRpbmcgZ3JvdXBfZ3RpZF9leHRyYWN0ZWQgZnJvbSB0aGUgVmlld19jaGFuZ2VfbG9nX2V2ZW50LgBFcnJvciByZWFkaW5nIHRoZSB3cml0ZSBzZXQgaXRlbSAnJXMnIGZyb20gdGhlIFZpZXdfY2hhbmdlX2xvZ19ldmVudC4ARXJyb3IgZHVyaW5nIGNlcnRpZmljYXRpb25faW5mbyBpbml0aWFsaXphdGlvbi4AUHJpbWFyeSBoYWQgYXBwbGllZCBhbGwgcmVsYXkgbG9ncywgZGlzYWJsZWQgY29uZmxpY3QgZGV0ZWN0aW9uLgBNZXNzYWdlIHJlY2VpdmVkIHdoaWxlIHRoZSBwbHVnaW4gaXMgbm90IHJlYWR5LCBtZXNzYWdlIGRpc2NhcmRlZC4ATWVzc2FnZSByZWNlaXZlZCB3aXRob3V0IGEgcHJvcGVyIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIuAEVycm9yIHByb2Nlc3NpbmcgbWVzc2FnZSBpbiBDZXJ0aWZpZXIuAFRoaXMgc2VydmVyIHdhcyBub3QgZGVjbGFyZWQgb25saW5lIHNpbmNlIGl0IGlzIG9uIHN0YXR1cyAlcy4AVGhpcyBzZXJ2ZXIgd2FzIGRlY2xhcmVkIG9ubGluZSB3aXRoaW4gdGhlIHJlcGxpY2F0aW9uIGdyb3VwLgBXaGVuIGRlY2xhcmluZyB0aGUgcGx1Z2luIG9ubGluZSBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGRpc2FibGUgdGhlIHNlcnZlciByZWFkIG1vZGUgc2V0dGluZ3MuIFRyeSB0byBkaXNhYmxlIGl0IG1hbnVhbGx5LgBUaGUgbWVtYmVyIHdpdGggYWRkcmVzcyAlczoldSB3YXMgZGVjbGFyZWQgb25saW5lIHdpdGhpbiB0aGUgcmVwbGljYXRpb24gZ3JvdXAuAE1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgaGFzIGJlY29tZSB1bnJlYWNoYWJsZS4ATWVtYmVyIHdpdGggYWRkcmVzcyAlczoldSBpcyByZWFjaGFibGUgYWdhaW4uAFRoaXMgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHJlYWNoIGEgbWFqb3JpdHkgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFRoaXMgc2VydmVyIHdpbGwgbm93IGJsb2NrIGFsbCB1cGRhdGVzLiBUaGUgc2VydmVyIHdpbGwgcmVtYWluIGJsb2NrZWQgdW50aWwgY29udGFjdCB3aXRoIHRoZSBtYWpvcml0eSBpcyByZXN0b3JlZC4gSXQgaXMgcG9zc2libGUgdG8gdXNlIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdG8gZm9yY2UgYSBuZXcgZ3JvdXAgbWVtYmVyc2hpcC4AVGhpcyBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcmVhY2ggYSBtYWpvcml0eSBvZiBtZW1iZXJzIGluIHRoZSBncm91cC4gVGhpcyBzZXJ2ZXIgd2lsbCBub3cgYmxvY2sgYWxsIHVwZGF0ZXMuIFRoZSBzZXJ2ZXIgd2lsbCByZW1haW4gYmxvY2tlZCBmb3IgdGhlIG5leHQgJWx1IHNlY29uZHMuIFVubGVzcyBjb250YWN0IHdpdGggdGhlIG1ham9yaXR5IGlzIHJlc3RvcmVkLCBhZnRlciB0aGlzIHRpbWUgdGhlIG1lbWJlciB3aWxsIGVycm9yIG91dCBhbmQgbGVhdmUgdGhlIGdyb3VwLiBJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwLgBBIGdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlIHdhcyByZWNlaXZlZCBidXQgdGhlIHBsdWdpbiBpcyBhbHJlYWR5IGxlYXZpbmcgZHVlIHRvIHRoZSBjb25maWd1cmVkIHRpbWVvdXQgb24gZ3JvdXBfcmVwbGljYXRpb25fdW5yZWFjaGFibGVfbWFqb3JpdHlfdGltZW91dCBvcHRpb24uAFRoZSBtZW1iZXIgaGFzIHJlc3VtZWQgY29udGFjdCB3aXRoIGEgbWFqb3JpdHkgb2YgdGhlIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBSZWd1bGFyIG9wZXJhdGlvbiBpcyByZXN0b3JlZCBhbmQgdHJhbnNhY3Rpb25zIGFyZSB1bmJsb2NrZWQuAE1lbWJlcnMgcmVtb3ZlZCBmcm9tIHRoZSBncm91cDogJXMAUHJpbWFyeSBzZXJ2ZXIgd2l0aCBhZGRyZXNzICVzIGxlZnQgdGhlIGdyb3VwLiBFbGVjdGluZyBuZXcgUHJpbWFyeS4ATWVtYmVycyBqb2luZWQgdGhlIGdyb3VwOiAlcwBUaGVyZSB3YXMgYSBwcmV2aW91cyBwbHVnaW4gZXJyb3Igd2hpbGUgdGhlIG1lbWJlciBqb2luZWQgdGhlIGdyb3VwLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBHcm91cCBtZW1iZXJzaGlwIGNoYW5nZWQgdG8gJXMgb24gdmlldyAlcy4AR3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2VkOiBUaGlzIG1lbWJlciBoYXMgbGVmdCB0aGUgZ3JvdXAuAE1lbWJlciB3YXMgZXhwZWxsZWQgZnJvbSB0aGUgZ3JvdXAgZHVlIHRvIG5ldHdvcmsgZmFpbHVyZXMsIGNoYW5naW5nIG1lbWJlciBzdGF0dXMgdG8gRVJST1IuAFVuYWJsZSB0byBvcGVuIHNlc3Npb24gdG8gKHJlKXNldCByZWFkIG9ubHkgbW9kZS4gU2tpcHBpbmcuAEEgbmV3IHByaW1hcnkgd2l0aCBhZGRyZXNzICVzOiV1IHdhcyBlbGVjdGVkLiAlcwBVbmFibGUgdG8gZGlzYWJsZSBzdXBlciByZWFkIG9ubHkgZmxhZy4gVHJ5IHRvIGRpc2FibGUgaXQgbWFudWFsbHkAVW5hYmxlIHRvIHNldCBzdXBlciByZWFkIG9ubHkgZmxhZy4gVHJ5IHRvIHNldCBpdCBtYW51YWxseS4AVGhpcyBzZXJ2ZXIgaXMgd29ya2luZyBhcyBwcmltYXJ5IG1lbWJlci4AVGhpcyBzZXJ2ZXIgaXMgd29ya2luZyBhcyBzZWNvbmRhcnkgbWVtYmVyIHdpdGggcHJpbWFyeSBtZW1iZXIgYWRkcmVzcyAlczoldS4AVW5hYmxlIHRvIHNldCBhbnkgbWVtYmVyIGFzIHByaW1hcnkuIE5vIHN1aXRhYmxlIGNhbmRpZGF0ZS4ARXJyb3Igd2hlbiBhY3RpdmF0aW5nIHN1cGVyX3JlYWRfb25seSBtb2RlIG9uIHN0YXJ0LiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBHcm91cCBjb250YWlucyAlbHUgbWVtYmVycyB3aGljaCBpcyBncmVhdGVyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50IHZhbHVlIG9mICVsdS4gVGhpcyBjYW4gbGVhZCB0byBhIGhpZ2hlciB0cmFuc2FjdGlvbmFsIGFib3J0IHJhdGUuAE1lbWJlciB3aXRoIGFkZHJlc3MgJyVzOiV1JyBkaWRuJ3QgcHJvdmlkZSBhbnkgZGF0YSBkdXJpbmcgdGhlIGxhc3QgZ3JvdXAgY2hhbmdlLiBHcm91cCBpbmZvcm1hdGlvbiBjYW4gYmUgb3V0ZGF0ZWQgYW5kIGxlYWQgdG8gZXJyb3JzIG9uIHJlY292ZXJ5LgBUaGVyZSBpcyBhbHJlYWR5IGEgbWVtYmVyIHdpdGggc2VydmVyX3V1aWQgJXMuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAEVycm9yIHdoZW4gZXh0cmFjdGluZyBpbmZvcm1hdGlvbiBmb3IgZ3JvdXAgY2hhbmdlLiBPcGVyYXRpb25zIGFuZCBjaGVja3MgbWFkZSB0byBncm91cCBqb2luZXJzIG1heSBiZSBpbmNvbXBsZXRlLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgR1RJRCBleGVjdXRlZCBzZXQuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAEVycm9yIHdoZW4gZXh0cmFjdGluZyB0aGlzIG1lbWJlciByZXRyaWV2ZWQgc2V0IGZvciBpdHMgYXBwbGllci4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBncm91cCBhbHJlYWR5IGhhcyA5IG1lbWJlcnMuAE1lbWJlciB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cC4AVGhlIG1lbWJlciBjb250YWlucyB0cmFuc2FjdGlvbnMgbm90IHByZXNlbnQgaW4gdGhlIGdyb3VwLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGFzc2VzcyBpZiB0aGUgbWVtYmVyIGhhcyBtb3JlIHRyYW5zYWN0aW9ucyB0aGFuIHRoZSBncm91cC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ATWVtYmVyIHZlcnNpb24gaXMgbG93ZXIgdGhhbiBzb21lIGdyb3VwIG1lbWJlciwgYnV0IHNpbmNlIG9wdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fYWxsb3dfbG9jYWxfbG93ZXJfdmVyc2lvbl9qb2luIGlzIGVuYWJsZWQsIG1lbWJlciB3aWxsIGJlIGFsbG93ZWQgdG8gam9pbi4ARXJyb3IgcHJvY2Vzc2luZyBsb2NhbCBHVElEIHNldHMgd2hlbiBjb21wYXJpbmcgdGhpcyBtZW1iZXIgdHJhbnNhY3Rpb25zIGFnYWluc3QgdGhlIGdyb3VwLgBUaGlzIG1lbWJlciBoYXMgbW9yZSBleGVjdXRlZCB0cmFuc2FjdGlvbnMgdGhhbiB0aG9zZSBwcmVzZW50IGluIHRoZSBncm91cC4gTG9jYWwgdHJhbnNhY3Rpb25zOiAlcyA+IEdyb3VwIHRyYW5zYWN0aW9uczogJXMAVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl9ndGlkX2Fzc2lnbm1lbnRfYmxvY2tfc2l6ZSBvcHRpb24gdmFsdWUgJyVsbHUnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJWxsdScuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgdHJhbnNhY3Rpb24td3JpdGUtc2V0LWV4dHJhY3Rpb24gb3B0aW9uIHZhbHVlICclcycgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICclcycuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgY29uZmlndXJhdGlvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cCBjb25maWd1cmF0aW9uLiBWYXJpYWJsZXMgc3VjaCBhcyBncm91cF9yZXBsaWNhdGlvbl9zaW5nbGVfcHJpbWFyeV9tb2RlIG9yIGdyb3VwX3JlcGxpY2F0aW9uX2VuZm9yY2VfdXBkYXRlX2V2ZXJ5d2hlcmVfY2hlY2tzIG11c3QgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBvbiBldmVyeSBzZXJ2ZXIgaW4gdGhlIGdyb3VwLiAobWVtYmVyIGNvbmZpZ3VyYXRpb24gb3B0aW9uOiBbJXNdLCBncm91cCBjb25maWd1cmF0aW9uIG9wdGlvbjogWyVzXSkuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiAlcwBEZXRlY3RlZCBwcmV2aW91cyBSRVNFVCBTT1VSQ0UgaW52b2NhdGlvbiBvciBhbiBpc3N1ZSBleGlzdHMgaW4gdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgcmVsYXkgbG9nLiBQdXJnaW5nIGV4aXN0aW5nIGFwcGxpZXIgbG9ncy4AVW5rbm93biBlcnJvciBvY2N1cnJlZCB3aGlsZSByZXNldHRpbmcgYXBwbGllcidzIG1vZHVsZSBsb2dzLgBGYWlsZWQgdG8gc2V0dXAgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkLgBFcnJvciB3aGlsZSBzdGFydGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQARmFpbGVkIHRvIHN0b3AgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkLgBGYWlsZWQgdG8gZmV0Y2ggdHJhbnNhY3Rpb24gZGF0YSBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGFwcGxpZXIAQ2FuJ3Qgc3RhcnQgcmVwbGljYSBJTyBUSFJFQUQgb2YgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgYW5kIHRoZSBwcmltYXJ5IG1lbWJlciBpcyBub3Qga25vd24uAENhbid0IHN0YXJ0IHJlcGxpY2EgSU8gVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIG9uIGEgc2Vjb25kYXJ5IG1lbWJlci4AQ2FuJ3Qgc3RhcnQgcmVwbGljYSBTUUwgVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIGFuZCB0aGUgcHJpbWFyeSBtZW1iZXIgaXMgbm90IGtub3duLgBDYW4ndCBzdGFydCByZXBsaWNhIFNRTCBUSFJFQUQgb2YgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgb24gYSBzZWNvbmRhcnkgbWVtYmVyLgBUYWJsZSAlcyBkb2VzIG5vdCB1c2UgdGhlIElubm9EQiBzdG9yYWdlIGVuZ2luZS4gVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEdyb3VwIFJlcGxpY2F0aW9uLgBUYWJsZSAlcyBkb2VzIG5vdCBoYXZlIGFueSBQUklNQVJZIEtFWS4gVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEdyb3VwIFJlcGxpY2F0aW9uLgBUYWJsZSAlcyBoYXMgYSBmb3JlaWduIGtleSB3aXRoICdDQVNDQURFJywgJ1NFVCBOVUxMJyBvciAnU0VUIERFRkFVTFQnIGNsYXVzZS4gVGhpcyBpcyBub3QgY29tcGF0aWJsZSB3aXRoIEdyb3VwIFJlcGxpY2F0aW9uLgBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQgaXMgcmVzZXQgdG8gJWx1AGF1dG9faW5jcmVtZW50X29mZnNldCBpcyByZXNldCB0byAlbHUAZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50IGlzIHNldCB0byAlbHUAYXV0b19pbmNyZW1lbnRfb2Zmc2V0IGlzIHNldCB0byAlbHUARmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9uIGNvbnRleHQgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBjZXJ0aWZpY2F0aW9uAEZhaWxlZCB0byBmZXRjaCBGb3JtYXRfZGVzY3JpcHRpb25fbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgc2VydmVyIGluZm8gZm9yIGFwcGxpZXIARmFpbGVkIHRvIGZldGNoIFRyYW5zYWN0aW9uX2NvbnRleHRfbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBGYWlsZWQgdG8gcmVhZCBzbmFwc2hvdCB2ZXJzaW9uIGZyb20gdHJhbnNhY3Rpb24gY29udGV4dCBldmVudCByZXF1aXJlZCBmb3IgY2VydGlmaWNhdGlvbgBGYWlsZWQgdG8gZmV0Y2ggR3RpZF9sb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBjZXJ0aWZpY2F0aW9uAFVuYWJsZSB0byB1cGRhdGUgY2VydGlmaWNhdGlvbiByZXN1bHQgb24gc2VydmVyIHNpZGUsIHRocmVhZF9pZDogJWx1AFVuYWJsZSB0byBhZGQgZ3RpZCBpbmZvcm1hdGlvbiB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQgd2hlbiBndGlkIHdhcyBwcm92aWRlZCBmb3IgbG9jYWwgdHJhbnNhY3Rpb25zAFVuYWJsZSB0byBhZGQgZ3RpZCBpbmZvcm1hdGlvbiB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQgd2hlbiBubyBndGlkIHdhcyBwcm92aWRlZCBmb3IgbG9jYWwgdHJhbnNhY3Rpb25zAEZhaWxlZCB0byBub3RpZnkgY2VydGlmaWNhdGlvbiBvdXRjb21lAFVuYWJsZSB0byBhZGQgZ3RpZCBpbmZvcm1hdGlvbiB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQgd2hlbiBndGlkIHdhcyBwcm92aWRlZCBmb3IgcmVtb3RlIHRyYW5zYWN0aW9ucwBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gZ3RpZCB3YXMgbm90IHByb3ZpZGVkIGZvciByZW1vdGUgdHJhbnNhY3Rpb25zAEZhaWxlZCB0byBmZXRjaCBWaWV3X2NoYW5nZV9sb2dfZXZlbnQgY29udGFpbmluZyByZXF1aXJlZCBpbmZvIGZvciBjZXJ0aWZpY2F0aW9uAEVycm9yIHdoZW4gY29udGFjdGluZyB0aGUgc2VydmVyIHRvIGVuc3VyZSB0aGUgcHJvcGVyIGxvZ2dpbmcgb2YgYSBncm91cCBjaGFuZ2UgaW4gdGhlIGJpbmxvZwBUaW1lb3V0IHdoZW4gd2FpdGluZyBmb3IgdGhlIHNlcnZlciB0byBleGVjdXRlIGxvY2FsIHRyYW5zYWN0aW9ucyBpbiBvcmRlciBhc3N1cmUgdGhlIGdyb3VwIGNoYW5nZSBwcm9wZXIgbG9nZ2luZwBGYWlsZWQgdG8gZmV0Y2ggTG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgc2VydmVyIGluZm8gZm9yIGFwcGxpZXIAVW5hYmxlIHRvIHN0YXJ0IEdyb3VwIFJlcGxpY2F0aW9uLiBSZXBsaWNhdGlvbiBhcHBsaWVyIGluZnJhc3RydWN0dXJlIGlzIG5vdCBpbml0aWFsaXplZCBzaW5jZSB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggLS1pbml0aWFsaXplLCAtLWluaXRpYWxpemUtaW5zZWN1cmUgb3IgLS11cGdyYWRlPU1JTklNQUwgb24gYSBzZXJ2ZXIgdXBncmFkZS4ARmFpbGVkIHRvIGVzdGFibGlzaCBhbiBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbiB0byBleGVjdXRlIHBsdWdpbiBvcGVyYXRpb25zAFNldHRpbmcgc3VwZXJfcmVhZF9vbmx5PU9OLgBTZXR0aW5nIHN1cGVyX3JlYWRfb25seT1PRkYuAGtpbGxlZCBzZXNzaW9uIGlkOiAlZCBzdGF0dXM6ICVkAGtpbGxlZCBmYWlsZWQgaWQ6ICVkIGZhaWxlZDogJWQASW50ZXJuYWwgcXVlcnk6ICVzIHJlc3VsdCBpbiBlcnJvci4gRXJyb3IgbnVtYmVyOiAlbGQARXJyb3IgY29weWluZyBmcm9tIGVtcHR5IHN0cmluZyAAUXVlcnkgZXhlY3V0aW9uIHJlc3VsdGVkIGluIGZhaWx1cmUuIGVycm5vOiAlZABVbmFibGUgdG8gY3JlYXRlIGEgc2Vzc2lvbiBmb3IgZXhlY3V0aW5nIHRoZSBxdWVyaWVzIG9uIHRoZSBzZXJ2ZXIAVGhlIG1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgaGFzIHVuZXhwZWN0ZWRseSBkaXNhcHBlYXJlZCwga2lsbGluZyB0aGUgY3VycmVudCBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBjb25uZWN0aW9uAE1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgd2hlbiB0cnlpbmcgdG8gY29ubmVjdCB0byBhIGRvbm9yIHJlYWNoZWQuIEFib3J0aW5nIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5LgBBbGwgZG9ub3JzIGxlZnQuIEFib3J0aW5nIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5LgBFc3RhYmxpc2hpbmcgZ3JvdXAgcmVjb3ZlcnkgY29ubmVjdGlvbiB3aXRoIGEgcG9zc2libGUgZG9ub3IuIEF0dGVtcHQgJWQvJWQAUmV0cnlpbmcgZ3JvdXAgcmVjb3ZlcnkgY29ubmVjdGlvbiB3aXRoIGFub3RoZXIgZG9ub3IuIEF0dGVtcHQgJWQvJWQATm8gdmFsaWQgZG9ub3JzIGV4aXN0IGluIHRoZSBncm91cCwgcmV0cnlpbmcARXJyb3Igd2hlbiBjb25maWd1cmluZyB0aGUgYXN5bmNocm9ub3VzIHJlY292ZXJ5IGNoYW5uZWwgY29ubmVjdGlvbiB0byB0aGUgZG9ub3IuAEVzdGFibGlzaGluZyBjb25uZWN0aW9uIHRvIGEgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgZG9ub3IgJXMgYXQgJXMgcG9ydDogJWQuAEVycm9yIHdoaWxlIGNyZWF0aW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBjaGFubmVsIHdpdGggZG9ub3IgJXMgYXQgJXMgcG9ydDogJWQuAFRoZXJlIHdhcyBhbiBlcnJvciB3aGVuIGNvbm5lY3RpbmcgdG8gdGhlIGRvbm9yIHNlcnZlci4gUGxlYXNlIGNoZWNrIHRoYXQgZ3JvdXBfcmVwbGljYXRpb25fcmVjb3ZlcnkgY2hhbm5lbCBjcmVkZW50aWFscyBhbmQgYWxsIE1FTUJFUl9IT1NUIGNvbHVtbiB2YWx1ZXMgb2YgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcnMgdGFibGUgYXJlIGNvcnJlY3QgYW5kIEROUyByZXNvbHZhYmxlLgBGb3IgZGV0YWlscyBwbGVhc2UgY2hlY2sgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2Nvbm5lY3Rpb25fc3RhdHVzIHRhYmxlIGFuZCBlcnJvciBsb2cgbWVzc2FnZXMgb2YgUmVwbGljYSBJL08gZm9yIGNoYW5uZWwgZ3JvdXBfcmVwbGljYXRpb25fcmVjb3ZlcnkuAEVycm9yIHdoaWxlIHN0YXJ0aW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeSByZWNlaXZlci9hcHBsaWVyIHRocmVhZHMAVGVybWluYXRpbmcgZXhpc3RpbmcgZ3JvdXAgcmVwbGljYXRpb24gZG9ub3IgY29ubmVjdGlvbiBhbmQgcHVyZ2luZyB0aGUgY29ycmVzcG9uZGluZyBsb2dzLgBFcnJvciB3aGVuIHN0b3BwaW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeSdzIGRvbm9yIGNvbm5lY3Rpb24ARXJyb3Igd2hlbiBwdXJnaW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSdzIHJlbGF5IGxvZ3MAVW5hYmxlIHRvIGtpbGwgdGhlIGN1cnJlbnQgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgZG9ub3IgY29ubmVjdGlvbiBhZnRlciBhbiBhcHBsaWVyIGVycm9yLiBJbmNyZW1lbnRhbCByZWNvdmVyeSB3aWxsIHNodXRkb3duLgBVbmFibGUgdG8ga2lsbCB0aGUgY3VycmVudCBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBkb25vciBjb25uZWN0aW9uIGR1cmluZyBmYWlsb3Zlci4gSW5jcmVtZW50YWwgcmVjb3Zlcnkgd2lsbCBzaHV0ZG93bi4AVW5leHBlY3RlZCBlcnJvciB3aGVuIG5vdGlmeWluZyBhbiBpbnRlcm5hbCBjb21wb25lbnQgbmFtZWQgJXMgcmVnYXJkaW5nIGEgZ3JvdXAgbWVtYmVyc2hpcCBldmVudC4AQW4gdW5kZWZpbmVkIGVycm9yIHdhcyBmb3VuZCB3aGlsZSBicm9hZGNhc3RpbmcgYW4gaW50ZXJuYWwgZ3JvdXAgbWVtYmVyc2hpcCBub3RpZmljYXRpb24hIFRoaXMgaXMgbGlrZWx5IHRvIGhhcHBlbiBpZiB5b3VyIGNvbXBvbmVudHMgb3IgcGx1Z2lucyBhcmUgbm90IHByb3Blcmx5IGxvYWRlZCBvciBhcmUgbWFsZnVuY3Rpb25pbmchAEFuIHVuZGVmaW5lZCBlcnJvciB3YXMgZm91bmQgd2hpbGUgYnJvYWRjYXN0aW5nIGFuIGludGVybmFsIGdyb3VwIG1lbWJlciBzdGF0dXMgbm90aWZpY2F0aW9uISBUaGlzIGlzIGxpa2VseSB0byBoYXBwZW4gaWYgeW91ciBjb21wb25lbnRzIG9yIHBsdWdpbnMgYXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgb3IgYXJlIG1hbGZ1bmN0aW9uaW5nIQBObyBtZW1vcnkgdG8gZ2VuZXJhdGUgd3JpdGUgaWRlbnRpZmljYXRpb24gaGFzaABCYXNlIDY0IGVuY29kaW5nIG9mIHRoZSB3cml0ZSBpZGVudGlmaWNhdGlvbiBoYXNoIGZhaWxlZABCaW5sb2cgZm9ybWF0IHNob3VsZCBiZSBST1cgZm9yIEdyb3VwIFJlcGxpY2F0aW9uAGJpbmxvZ19jaGVja3N1bSBzaG91bGQgYmUgTk9ORSBmb3IgR3JvdXAgUmVwbGljYXRpb24AQSB0cmFuc2FjdGlvbl93cml0ZV9zZXRfZXh0cmFjdGlvbiBhbGdvcml0aG0gc2hvdWxkIGJlIHNlbGVjdGVkIHdoZW4gcnVubmluZyBHcm91cCBSZXBsaWNhdGlvbgBUcmFuc2FjdGlvbiBpc29sYXRpb24gbGV2ZWwgKHR4X2lzb2xhdGlvbikgaXMgc2V0IHRvIFNFUklBTElaQUJMRSwgd2hpY2ggaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgc3RvcHBpbmcuAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyByZWNvdmVyaW5nLiBUcnkgYWdhaW4gd2hlbiB0aGUgc2VydmVyIGlzIE9OTElORS4AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIG9uIEVSUk9SIHN0YXRlLiBDaGVjayBmb3IgZXJyb3JzIGFuZCByZXN0YXJ0IHRoZSBwbHVnaW4AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIE9GRkxJTkUuIENoZWNrIGZvciBlcnJvcnMgYW5kIHJlc3RhcnQgdGhlIHBsdWdpbgBXZSBjYW4gb25seSB1c2Ugb25lIGNhY2hlIHR5cGUgYXQgYSB0aW1lIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIHJlaW5pdCBiaW5sb2cgY2FjaGUgbG9nIGZvciByZWFkIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIGNyZWF0ZSB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBleHRyYWN0IHRoZSBzZXQgb2YgaXRlbXMgd3JpdHRlbiBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBnYXRoZXIgdGhlIHNldCBvZiBpdGVtcyB3cml0dGVuIGR1cmluZyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARXJyb3Igb24gc2Vzc2lvbiAldS4gVHJhbnNhY3Rpb24gb2Ygc2l6ZSAlbGx1IGV4Y2VlZHMgc3BlY2lmaWVkIGxpbWl0ICVsdS4gVG8gaW5jcmVhc2UgdGhlIGxpbWl0IHBsZWFzZSBhZGp1c3QgZ3JvdXBfcmVwbGljYXRpb25fdHJhbnNhY3Rpb25fc2l6ZV9saW1pdCBvcHRpb24uAEVycm9yIHdoaWxlIHJlLWluaXRpYWxpemluZyBhbiBpbnRlcm5hbCBjYWNoZSwgZm9yIHJlYWQgb3BlcmF0aW9ucywgb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSBhcHBlbmRpbmcgZGF0YSB0byBhbiBpbnRlcm5hbCBjYWNoZSBvbiBzZXNzaW9uICV1AEVycm9yIHdoaWxlIHdyaXRpbmcgdG8gdHJhbnNhY3Rpb24gbWVzc2FnZSBvbiBzZXNzaW9uICV1AFVuYWJsZSB0byByZWdpc3RlciBmb3IgZ2V0dGluZyBub3RpZmljYXRpb25zIHJlZ2FyZGluZyB0aGUgb3V0Y29tZSBvZiB0aGUgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBFcnJvciBicm9hZGNhc3RpbmcgdHJhbnNhY3Rpb24gdG8gdGhlIGdyb3VwIG9uIHNlc3Npb24gJXUuIE1lc3NhZ2UgaXMgdG9vIGJpZy4ARXJyb3Igd2hpbGUgYnJvYWRjYXN0aW5nIHRoZSB0cmFuc2FjdGlvbiB0byB0aGUgZ3JvdXAgb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSB3YWl0aW5nIGZvciBjb25mbGljdCBkZXRlY3Rpb24gcHJvY2VkdXJlIHRvIGZpbmlzaCBvbiBzZXNzaW9uICV1AEVycm9yIHdoaWxlIHJlLWluaXRpYWxpemluZyBhbiBpbnRlcm5hbCBjYWNoZSwgZm9yIHdyaXRlIG9wZXJhdGlvbnMsIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIGNyZWF0ZSBncm91cCByZXBsaWNhdGlvbiBjb21taXQgY2FjaGUgb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gcmVpbml0IGdyb3VwIHJlcGxpY2F0aW9uIGNvbW1pdCBjYWNoZSBmb3Igd3JpdGUgb24gc2Vzc2lvbiAldQBBIHByZXZpb3VzIHJlY292ZXJ5IHNlc3Npb24gaXMgc3RpbGwgcnVubmluZy4gUGxlYXNlIHN0b3AgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIHBsdWdpbiBhbmQgd2FpdCBmb3IgaXQgdG8gc3RvcABGYXRhbCBlcnJvciBkdXJpbmcgdGhlIGluY3JlbWVudGFsIHJlY292ZXJ5IHByb2Nlc3Mgb2YgR3JvdXAgUmVwbGljYXRpb24uIFRoZSBzZXJ2ZXIgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiAlcwBVbmFibGUgdG8gZXZhbHVhdGUgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgZXhlY3V0aW9uIHN0YXR1cy4gR3JvdXAgcmVwbGljYXRpb24gcmVjb3Zlcnkgd2lsbCBzaHV0ZG93biB0byBhdm9pZCBkYXRhIGNvcnJ1cHRpb24uAE9ubHkgb25lIHNlcnZlciBhbGl2ZS4gRGVjbGFyaW5nIHRoaXMgc2VydmVyIGFzIG9ubGluZSB3aXRoaW4gdGhlIHJlcGxpY2F0aW9uIGdyb3VwAEVycm9yIHdoZW4gcHJvY2Vzc2luZyBjZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uIGluIHRoZSBpbmNyZW1lbnRhbCByZWNvdmVyeSBwcm9jZXNzAFVuYWJsZSB0byBlbnN1cmUgdGhlIGV4ZWN1dGlvbiBvZiBncm91cCB0cmFuc2FjdGlvbnMgcmVjZWl2ZWQgZHVyaW5nIHJlY292ZXJ5LgBFcnJvciB3aGlsZSBzZW5kaW5nIG1lc3NhZ2UgaW4gdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGluY3JlbWVudGFsIHJlY292ZXJ5IHByb2Nlc3MuAFVuYWJsZSB0byByZWFkIHRoZSBzZXJ2ZXIgdmFsdWUgZm9yIHRoZSBzdXBlcl9yZWFkX29ubHkgdmFyaWFibGUuAFVuYWJsZSB0byByZWFkIHRoZSBzZXJ2ZXIgdmFsdWVzIGZvciB0aGUgcmVhZF9vbmx5IGFuZCBzdXBlcl9yZWFkX29ubHkgdmFyaWFibGVzLgBVbmFibGUgdG8gcmVzZXQgdGhlIHNlcnZlciByZWFkIG1vZGUgc2V0dGluZ3MuIFRyeSB0byByZXNldCB0aGVtIG1hbnVhbGx5LgBEdWUgdG8gYSBwbHVnaW4gZXJyb3IsIHNvbWUgdHJhbnNhY3Rpb25zIHdlcmUgdW5hYmxlIHRvIGJlIGNlcnRpZmllZCBhbmQgd2lsbCBub3cgcm9sbGJhY2suAEVycm9yIHdoZW4gdHJ5aW5nIHRvIHVuYmxvY2sgbm9uIGNlcnRpZmllZCBvciBjb25zaXN0ZW50IHRyYW5zYWN0aW9ucy4gQ2hlY2sgZm9yIGNvbnNpc3RlbmN5IGVycm9ycyB3aGVuIHJlc3RhcnRpbmcgdGhlIHNlcnZpY2UAVGhpcyBzZXJ2ZXIgaXMgd29ya2luZyBhcyBzZWNvbmRhcnkgbWVtYmVyIHdpdGggcHJpbWFyeSBtZW1iZXIgYWRkcmVzcyAlczoldS4AVW5hYmxlIHRvIHN0YXJ0IEdyb3VwIFJlcGxpY2F0aW9uLiBSZXBsaWNhdGlvbiBhcHBsaWVyIGluZnJhc3RydWN0dXJlIGlzIG5vdCBpbml0aWFsaXplZCBzaW5jZSB0aGUgc2VydmVyIHdhcyBzdGFydGVkIHdpdGggc2VydmVyX2lkPTAuIFBsZWFzZSwgcmVzdGFydCB0aGUgc2VydmVyIHdpdGggc2VydmVyX2lkIGxhcmdlciB0aGFuIDAuAGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgbXVzdCBiZSBlbXB0eSBvbiBncm91cCBzdGFydC4gQ3VycmVudCB2YWx1ZTogJyVzJwBJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGd1YXJhbnRlZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgcGx1Z2luIHN0cnVjdHVyZXMgb24gc2VydmVyIHN0YXJ0AENvdWxkIG5vdCBlbmFibGUgdGhlIHNlcnZlciByZWFkIG9ubHkgbW9kZSBhbmQgZ3VhcmFudGVlIGEgc2FmZSByZWNvdmVyeSBleGVjdXRpb24ARXJyb3Igb24gZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgaW5pdGlhbGl6YXRpb24AQ2FuJ3Qgc3RhcnQgZ3JvdXAgcmVwbGljYXRpb24gb24gc2Vjb25kYXJ5IG1lbWJlciB3aXRoIHNpbmdsZS1wcmltYXJ5IG1vZGUgd2hpbGUgYXN5bmNocm9ub3VzIHJlcGxpY2F0aW9uIGNoYW5uZWxzIGFyZSBydW5uaW5nLgBFcnJvciBvbiBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZSBzdGFydABUaW1lb3V0IG9uIHdhaXQgZm9yIHZpZXcgYWZ0ZXIgam9pbmluZyBncm91cABFcnJvciBjYWxsaW5nIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBNZW1iZXIgc2VydmVyX3V1aWQgaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwLiBTZXJ2ZXJfdXVpZCAlcyBtYXRjaGVzIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJXMuAE1lbWJlciBjb25maWd1cmF0aW9uOiBtZW1iZXJfaWQ6ICVsdTsgbWVtYmVyX3V1aWQ6ICIlcyI7IHNpbmdsZS1wcmltYXJ5IG1vZGU6ICIlcyI7IGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudDogJWx1OyBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkOiAiJXMiOwBVbmFibGUgdG8gY29uZmlybSB3aGV0aGVyIHRoZSBzZXJ2ZXIgaGFzIGxlZnQgdGhlIGdyb3VwIG9yIG5vdC4gQ2hlY2sgcGVyZm9ybWFuY2Vfc2NoZW1hLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcnMgdG8gY2hlY2sgZ3JvdXAgbWVtYmVyc2hpcCBpbmZvcm1hdGlvbi4AU2tpcHBpbmcgbGVhdmUgb3BlcmF0aW9uOiBjb25jdXJyZW50IGF0dGVtcHQgdG8gbGVhdmUgdGhlIGdyb3VwIGlzIG9uLWdvaW5nLgBTa2lwcGluZyBsZWF2ZSBvcGVyYXRpb246IG1lbWJlciBhbHJlYWR5IGxlZnQgdGhlIGdyb3VwLgBHb2luZyB0byB3YWl0IGZvciB2aWV3IG1vZGlmaWNhdGlvbgBXaGlsZSBsZWF2aW5nIHRoZSBncm91cCBkdWUgdG8gYSBzdG9wLCBzaHV0ZG93biBvciBmYWlsdXJlIHRoZXJlIHdhcyBhIHRpbWVvdXQgcmVjZWl2aW5nIGEgdmlldyBjaGFuZ2UuIFRoaXMgY2FuIGxlYWQgdG8gYSBwb3NzaWJsZSBpbmNvbnNpc3RlbnQgc3RhdGUuIENoZWNrIHRoZSBsb2cgZm9yIG1vcmUgZGV0YWlscwBSZXF1ZXN0aW5nIHRvIGxlYXZlIHRoZSBncm91cCBkZXNwaXRlIG9mIG5vdCBiZWluZyBhIG1lbWJlcgBQbHVnaW4gJ2dyb3VwX3JlcGxpY2F0aW9uJyBpcyBzdG9wcGluZy4AUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaGFzIGJlZW4gc3RvcHBlZC4AT24gcGx1Z2luIHNodXRkb3duIGl0IHdhcyBub3QgcG9zc2libGUgdG8gZW5hYmxlIHRoZSBzZXJ2ZXIgcmVhZCBvbmx5IG1vZGUuIExvY2FsIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFjY2VwdGVkIGFuZCBjb21taXR0ZWQuAE9uIHNodXRkb3duIHRoZXJlIHdhcyBhIHRpbWVvdXQgb24gdGhlIEdyb3VwIFJlcGxpY2F0aW9uIHJlY292ZXJ5IG1vZHVsZSB0ZXJtaW5hdGlvbi4gQ2hlY2sgdGhlIGxvZyBmb3IgbW9yZSBkZXRhaWxzAE9uIHNodXRkb3duIHRoZXJlIHdhcyBhIHRpbWVvdXQgb24gdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGFwcGxpZXIgdGVybWluYXRpb24uAFVuZXhwZWN0ZWQgZmFpbHVyZSB3aGlsZSBzaHV0dGluZyBkb3duIHJlZ2lzdHJ5IG1vZHVsZSEARmFpbHVyZSBkdXJpbmcgR3JvdXAgUmVwbGljYXRpb24gaGFuZGxlciBpbml0aWFsaXphdGlvbgBGYWlsdXJlIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIHNlcnZlciBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSB0cmFuc2FjdGlvbnMgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiByZWdpc3RlcmluZyB0aGUgYmlubG9nIHN0YXRlIG9ic2VydmVycwBVbmFibGUgdG8gc3RhcnQgR3JvdXAgUmVwbGljYXRpb24gb24gYm9vdABGYWlsdXJlIHdoZW4gc3RvcHBpbmcgR3JvdXAgUmVwbGljYXRpb24gb24gcGx1Z2luIHVuaW5zdGFsbABGYWlsdXJlIHdoZW4gdW5yZWdpc3RlcmluZyB0aGUgc2VydmVyIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gdW5yZWdpc3RlcmluZyB0aGUgdHJhbnNhY3Rpb25zIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gdW5yZWdpc3RlcmluZyB0aGUgYmlubG9nIHN0YXRlIG9ic2VydmVycwBBbGwgR3JvdXAgUmVwbGljYXRpb24gc2VydmVyIG9ic2VydmVycyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHVucmVnaXN0ZXJlZABVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4AQ2Fubm90IHN0YXJ0IHRoZSBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIGFzIGEgcHJldmlvdXMgc2h1dGRvd24gaXMgc3RpbGwgcnVubmluZzogVGhlIHRocmVhZCB3aWxsIHN0b3Agb25jZSBpdHMgdGFzayBpcyBjb21wbGV0ZS4AVW5hYmxlIHRvIGluaXRpYWxpemUgdGhlIEdyb3VwIFJlcGxpY2F0aW9uIGFwcGxpZXIgbW9kdWxlLgBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIG1vZHVsZSBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQhAEdyb3VwIGNvbW11bmljYXRpb24gU1NMIGNvbmZpZ3VyYXRpb246IGdyb3VwX3JlcGxpY2F0aW9uX3NzbF9tb2RlOiAiJXMiOyBzZXJ2ZXJfa2V5X2ZpbGU6ICIlcyI7IHNlcnZlcl9jZXJ0X2ZpbGU6ICIlcyI7IGNsaWVudF9rZXlfZmlsZTogIiVzIjsgY2xpZW50X2NlcnRfZmlsZTogIiVzIjsgY2FfZmlsZTogIiVzIjsgY2FfcGF0aDogIiVzIjsgY2lwaGVyOiAiJXMiOyB0bHNfdmVyc2lvbjogIiVzIjsgdGxzX2NpcGhlcnN1aXRlczogIiVzIjsgY3JsX2ZpbGU6ICIlcyI7IGNybF9wYXRoOiAiJXMiOyBzc2xfZmlwc19tb2RlOiAiJXMiAE15U1FMIHNlcnZlciBkb2VzIG5vdCBoYXZlIFNTTCBzdXBwb3J0IGFuZCBncm91cF9yZXBsaWNhdGlvbl9zc2xfbW9kZSBpcyAiJXMiLCBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiB3aWxsIGFib3J0AEdyb3VwIGNvbW11bmljYXRpb24gU1NMIGNvbmZpZ3VyYXRpb246IGdyb3VwX3JlcGxpY2F0aW9uX3NzbF9tb2RlOiAiJXMiAFVuYWJsZSB0byBpbml0aWFsaXplIHRoZSBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZQBCaW5sb2cgbXVzdCBiZSBlbmFibGVkIGZvciBHcm91cCBSZXBsaWNhdGlvbgBHdGlkIG1vZGUgc2hvdWxkIGJlIE9OIGZvciBHcm91cCBSZXBsaWNhdGlvbgBMT0dfUkVQTElDQV9VUERBVEVTIHNob3VsZCBiZSBPTiBmb3IgR3JvdXAgUmVwbGljYXRpb24ARXh0cmFjdGlvbiBvZiB0cmFuc2FjdGlvbiB3cml0ZSBzZXRzIHJlcXVpcmVzIGFuIGhhc2ggYWxnb3JpdGhtIGNvbmZpZ3VyYXRpb24uIFBsZWFzZSwgZG91YmxlIGNoZWNrIHRoYXQgdGhlIHBhcmFtZXRlciB0cmFuc2FjdGlvbi13cml0ZS1zZXQtZXh0cmFjdGlvbiBpcyBzZXQgdG8gYSB2YWxpZCBhbGdvcml0aG0uAEFwcGxpZXIgbWV0YWRhdGEgcmVwb3NpdG9yeSBtdXN0IGJlIHNldCB0byBUQUJMRQBDb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkgbXVzdCBiZSBzZXQgdG8gVEFCTEUuAEluIG9yZGVyIHRvIHVzZSBwYXJhbGxlbCBhcHBsaWVyIG9uIEdyb3VwIFJlcGxpY2F0aW9uLCBwYXJhbWV0ZXIgcmVwbGljYS1wYXJhbGxlbC10eXBlIG11c3QgYmUgc2V0IHRvICdMT0dJQ0FMX0NMT0NLJy4AR3JvdXAgUmVwbGljYXRpb24gcmVxdWlyZXMgcmVwbGljYS1wcmVzZXJ2ZS1jb21taXQtb3JkZXIgdG8gYmUgc2V0IHRvIE9OIHdoZW4gdXNpbmcgbW9yZSB0aGFuIDEgYXBwbGllciB0aHJlYWRzLgBJdCBpcyBub3QgYWxsb3dlZCB0byBydW4gc2luZ2xlIHByaW1hcnkgbW9kZSB3aXRoICdncm91cF9yZXBsaWNhdGlvbl9lbmZvcmNlX3VwZGF0ZV9ldmVyeXdoZXJlX2NoZWNrcycgZW5hYmxlZC4AZXJyb3JfbWVzc2FnZTogJXMAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgb3B0aW9uIGlzIG1hbmRhdG9yeQBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAnJXMnIGlzIG5vdCBhIHZhbGlkIFVVSUQsIGl0cyBsZW5ndGggaXMgdG9vIGJpZwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAnJXMnIGlzIG5vdCBhIHZhbGlkIFVVSUQAZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9xdW90YSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21heF9xdW90YQBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3JlY292ZXJ5X3F1b3RhIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWF4X3F1b3RhAGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9tYXhfcXVvdGEgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3F1b3RhIG9yIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcmVjb3ZlcnlfcXVvdGEAVGhlIGdpdmVuIHZhbHVlIGZvciByZWNvdmVyeSBzc2wgb3B0aW9uICdncm91cF9yZXBsaWNhdGlvbl8lcycgaXMgaW52YWxpZCBhcyBpdHMgbGVuZ3RoIGlzIGJleW9uZCB0aGUgbGltaXQAVGhlcmUgaXMgb25lIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgb3BlcmF0aW9uIGFscmVhZHkgb25nb2luZwBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIGNhbiBvbmx5IGJlIHVwZGF0ZWQgd2hlbiBHcm91cCBSZXBsaWNhdGlvbiBpcyBydW5uaW5nIGFuZCBhIG1ham9yaXR5IG9mIHRoZSBtZW1iZXJzIGFyZSB1bnJlYWNoYWJsZQBJbml0aWFsaXplZCBncm91cCBjb21tdW5pY2F0aW9uIHdpdGggY29uZmlndXJhdGlvbjogZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZTogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fbG9jYWxfYWRkcmVzczogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfc2VlZHM6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2Jvb3RzdHJhcF9ncm91cDogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fcG9sbF9zcGluX2xvb3BzOiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbXByZXNzaW9uX3RocmVzaG9sZDogJWx1OyBncm91cF9yZXBsaWNhdGlvbl9pcF9hbGxvd2xpc3Q6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fZGVidWdfb3B0aW9uczogJyVzJzsgZ3JvdXBfcmVwbGljYXRpb25fbWVtYmVyX2V4cGVsX3RpbWVvdXQ6ICclbHUnOyBncm91cF9yZXBsaWNhdGlvbl9jb21tdW5pY2F0aW9uX21heF9tZXNzYWdlX3NpemU6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25fbWVzc2FnZV9jYWNoZV9zaXplOiAnJWx1dTsgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9zdGFjazogJyVsdScAVW5rbm93biBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHBpcGVsaW5lIHJlcXVlc3RlZABVbmFibGUgdG8gYm9vdHN0cmFwIGdyb3VwIHJlcGxpY2F0aW9uIGV2ZW50IGhhbmRsaW5nIGluZnJhc3RydWN0dXJlLiBVbmtub3duIGhhbmRsZXIgdHlwZTogJWQAT25lIG9mIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXJzIGlzIG51bGwgZHVlIHRvIGFuIGluaXRpYWxpemF0aW9uIGVycm9yAEEgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVyLCBtYXJrZWQgYXMgdW5pcXVlLCBpcyBhbHJlYWR5IGluIHVzZS4AQSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXIgcm9sZSwgdGhhdCB3YXMgbWFya2VkIGFzIHVuaXF1ZSwgaXMgYWxyZWFkeSBpbiB1c2UuAEVycm9yIG9uIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlciBpbml0aWFsaXphdGlvbgBFcnJvciB3aGVuIGluaXRpYWxpemluZyBhIHNlc3Npb24gdGhyZWFkIGZvciBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbi4ARXJyb3IgcnVubmluZyBpbnRlcm5hbCBTUUwgcXVlcnk6ICVzLiBUaGUgaW50ZXJuYWwgc2VydmVyIGNvbW11bmljYXRpb24gc2Vzc2lvbiBpcyBub3QgaW5pdGlhbGl6ZWQARXJyb3IgcnVubmluZyBpbnRlcm5hbCBTUUwgcXVlcnk6ICVzLiBUaGUgaW50ZXJuYWwgc2VydmVyIHNlc3Npb24gd2FzIGtpbGxlZCBvciBzZXJ2ZXIgaXMgc2h1dHRpbmcgZG93bi4ARXJyb3IgcnVubmluZyBpbnRlcm5hbCBTUUwgcXVlcnk6ICVzLiBHb3QgaW50ZXJuYWwgU1FMIGVycm9yOiAlcyglZCkARXJyb3IgcnVubmluZyBpbnRlcm5hbCBTUUwgcXVlcnk6ICVzLiBJbnRlcm5hbCBmYWlsdXJlLgBFcnJvciwgbWF4aW11bSBudW1iZXIgb2YgcmV0cmllcyBleGNlZWRlZCB3aGVuIHdhaXRpbmcgZm9yIHRoZSBpbnRlcm5hbCBzZXJ2ZXIgc2Vzc2lvbiBzdGF0ZSB0byBiZSBvcGVyYXRpbmcARXJyb3Igd2hlbiB0cnlpbmcgdG8gZmV0Y2ggc2VjdXJpdHkgY29udGV4dCB3aGVuIGNvbnRhY3RpbmcgdGhlIHNlcnZlciBmb3IgaW50ZXJuYWwgcGx1Z2luIHJlcXVlc3RzLgBUaGVyZSB3YXMgYW4gZXJyb3Igd2hlbiB0cnlpbmcgdG8gYWNjZXNzIHRoZSBzZXJ2ZXIgd2l0aCB1c2VyOiAlcy4gTWFrZSBzdXJlIHRoZSB1c2VyIGlzIHByZXNlbnQgaW4gdGhlIHNlcnZlciBhbmQgdGhhdCB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUgd2FzIHJ1biBjb3JyZWN0bHkuAEZhaWxlZCB0byBlc3RhYmxpc2ggYW4gaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24gdG8gZXhlY3V0ZSBwbHVnaW4gb3BlcmF0aW9ucyBzaW5jZSB0aGUgc2VydmVyIGRvZXMgbm90IGhhdmUgYXZhaWxhYmxlIGNvbm5lY3Rpb25zLCBwbGVhc2UgaW5jcmVhc2UgQEBHTE9CQUwuTUFYX0NPTk5FQ1RJT05TLiBTZXJ2ZXIgZXJyb3I6ICVpLgBGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgcGx1Z2luIG9wZXJhdGlvbnMuIFNlcnZlciBlcnJvcjogJWkuIFNlcnZlciBlcnJvciBtZXNzYWdlOiAlcwBUaGlzIG1lbWJlciBjb3VsZCBub3QgcmVhY2ggYSBtYWpvcml0eSBvZiB0aGUgbWVtYmVycyBmb3IgbW9yZSB0aGFuICVsZCBzZWNvbmRzLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cCBhcyBpbnN0cnVjdGVkIGJ5IHRoZSBncm91cF9yZXBsaWNhdGlvbl91bnJlYWNoYWJsZV9tYWpvcml0eV90aW1lb3V0IG9wdGlvbi4AVGhlIHNlcnZlciB3YXMgYXV0b21hdGljYWxseSBzZXQgaW50byByZWFkIG9ubHkgbW9kZSBhZnRlciBhbiBlcnJvciB3YXMgZGV0ZWN0ZWQuAFVuYWJsZSB0byBsb2cgbm90aWZpY2F0aW9uIHRvIHRhYmxlIChlcnJubzogJWx1KSAocmVzOiAlZCkhIE1lc3NhZ2U6ICVzAEZhaWx1cmUgaW4gZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgJyVzJyBpbml0aWFsaXphdGlvbgBVbmFibGUgdG8gc2V0IHRoZSBncm91cCBjb21tdW5pY2F0aW9uIGVuZ2luZSBsb2dnZXIAQ3VycmVudCBkZWJ1ZyBvcHRpb25zIGFyZTogJyVzJy4AU29tZSBkZWJ1ZyBvcHRpb25zIGluICclcycgYXJlIG5vdCB2YWxpZC4ARXJyb3IgY2FsbGluZyBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMgd2hpbGUgdHJ5aW5nIHRvIGxlYXZlIHRoZSBncm91cABNZW1iZXIgaXMgbm90IE9OTElORSwgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAARXJyb3IgY2FsbGluZyBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMARXJyb3Igc2V0dGluZyBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHZhbHVlICclcycgb24gZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAFRoZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHZhbHVlICclcycgd2FzIHNldCBpbiB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAFRpbWVvdXQgb24gd2FpdCBmb3IgdmlldyBhZnRlciBzZXR0aW5nIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdmFsdWUgJyVzJyBpbnRvIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBCcm9hZGNhc3Qgb2YgY29tbWl0dGVkIHRyYW5zYWN0aW9ucyBtZXNzYWdlIGZhaWxlZC4gTWVzc2FnZSBpcyB0b28gYmlnLgBFcnJvciB3aGlsZSBzZW5kaW5nIHN0YXRzIG1lc3NhZ2UARmxvdyBjb250cm9sIC0gdXBkYXRlIG1lbWJlciBzdGF0czogJXMgc3RhdHMgY2VydGlmaWVyX3F1ZXVlICVkLCBhcHBsaWVyX3F1ZXVlICVkIGNlcnRpZmllZCAlbGQgKCVsZCksIGFwcGxpZWQgJWxkICglbGQpLCBsb2NhbCAlbGQgKCVsZCksIHF1b3RhICVsZCAoJWxkKSBtb2RlPSVkAEZsb3cgY29udHJvbDogdGhyb3R0bGluZyB0byAlbGQgY29tbWl0cyBwZXIgJWxkIHNlYywgd2l0aCAlZCB3cml0aW5nIGFuZCAlZCBub24tcmVjb3ZlcmluZyBtZW1iZXJzLCBtaW4gY2FwYWNpdHkgJWxsZCwgbGltIHRocm90dGxlICVsbGQAVW5hYmxlIHRvIGNvbnZlcnQgYSBwYWNrZXQgaW50byBhbiBldmVudCBvbiB0aGUgYXBwbGllci4gRXJyb3I6ICVzAEZhaWxlZCB0byBjcmVhdGUgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUuAEZhaWxlZCB0byByZWluaXQgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUgZm9yIHdyaXRlLgBVbmFibGUgdG8gY29udmVydCB0aGUgZXZlbnQgaW50byBhIHBhY2tldCBvbiB0aGUgYXBwbGllci4gRXJyb3I6ICVzAEZhaWxlZCB0byBmbHVzaCBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBjYWNoZS4ARmFpbGVkIHRvIHJlaW5pdCBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBjYWNoZSBmb3IgcmVhZC4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuIEdvdCBlcnJvcjogJWQuIFBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBtb3JlIGRldGFpbHMuACVzAFRoZSByZXBsaWNhIElPIHRocmVhZCBvZiBjaGFubmVsICclcycgaXMgdW5ibG9ja2VkIGFzIHRoZSBtZW1iZXIgaXMgZGVjbGFyZWQgT05MSU5FIG5vdy4AVGhlIHJlcGxpY2EgSU8gdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGUgbWVtYmVyIGZhaWxlZCB0byBjb21lIE9OTElORS4AVGhlIHJlcGxpY2EgYXBwbGllciB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIGlzIHVuYmxvY2tlZCBhcyB0aGUgbWVtYmVyIGlzIGRlY2xhcmVkIE9OTElORSBub3cuAFRoZSByZXBsaWNhIGFwcGxpZXIgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGUgbWVtYmVyIGZhaWxlZCB0byBjb21lIE9OTElORS4ATERBUCBhdXRoZW50aWNhdGlvbiBpbml0aWFsaXplOiBmYWlsZWQgdG8gY3JlYXRlLyBnZXQgY29ubmVjdGlvbiBmcm9tIHRoZSBwb29sLiAATERBUCBhdXRoZW50aWNhdGlvbiBkZV9pbml0aWFsaXplIEZhaWxlZABTa2lwcGluZyBncm91cCBzZWFyY2gsIE5vIGdyb3VwIGF0dHJpYnV0ZSBtZW50aW9uZWQAUG9vbCBtYXggc2l6ZSBpcyAwLCBjb25uZWN0aW9uIHBvb2wgaXMgZGlzYWJsZWQAQ29ubmVjdGlvbiBwb29sIGluaXRpYWxpemF0aW9uLCBmYWlsZWQgdG8gY3JlYXRlIExEQVAgb2JqZWN0IGNyZWF0b3IAQ29ubmVjdGlvbiBwb29sIGluaXRpYWxpemF0aW9uLCBmYWlsZWQgdG8gY3JlYXRlIExEQVAgb2JqZWN0AExEQVAgVExTIGNvbmZpZ3VyYXRpb24ATERBUCBUTFMgY29ubmVjdGlvbgBMREFQIHBvb2wgaXMgbm90IGNyZWF0ZWQuAExEQVAgcG9vbCBpcyBpbml0aWFsaXppbmcATERBUCBwb29sIGlzIGRlLWluaXRpYWxpemluZwBQb29sIG1heCBzaXplIG9sZCBhbmQgbmV3IHZhbHVlcyBhcmUgMABMREFQIHBvb2wgaXMgcmUtaW5pdGlhbGl6aW5nAFBsdWctaW4gaGFzIGZhaWxlZCB0byB3cml0ZSB0aGUgcGFja2V0LgBTZXR0aW5nIExEQVAgdXNlciBuYW1lIGFzIDogJXMAVXNlciBhdXRoZW50aWNhdGlvbiBkYXRhOiAlcyBzaXplOiAlbHUAVXNlciBpcyBhdXRoZW50aWNhdGVkIGFzOiAlcyBleHRlcm5hbCB1c2VyOiAlcwBHcm91cCBzZWFyY2ggaW5mb3JtYXRpb24gYmFzZSBETjogJXMgc2NvcGU6ICVkIGZpbHRlcjogJXMgYXR0cmlidXRlOiAlcwBTcGVjaWFsIGhhbmRsaW5nIGZvciBncm91cCBzZWFyY2gsIHtHQX0gZm91bmQAR3JvdXAgc2VhcmNoIHNwZWNpYWwgaGFuZGxpbmcsIGdyb3VwIGZ1bGwgRE4gZm91bmQuIABVc2VyICVzIGlzIG5vdCBtZW1iZXIgb2YgYW55IGdyb3VwLgBVc2VyICVzIGlzIG1lbWJlciBvZiBtb3JlIHRoYW4gb25lIGdyb3VwAEZvciB1c2VyICVzIGhhcyBtdWx0aXBsZSB1c2VyIGdyb3VwIG5hbWVzLiBQbGVhc2UgY2hlY2sgaWYgZ3JvdXAgYXR0cmlidXRlIG5hbWUgaXMgY29ycmVjdABTZWFyY2hlZCBncm91cCBuYW1lOiAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIG9iamVjdCBjcmVhdGlvbiB0aW1lX3N0YW1wOiAlcyBkbjogJXMAQ2VydGlmaWNhdGUgbmFtZTogJXMARmFpbGVkIHRvIHBvb2wgZGUtaW5pdGlhbGl6ZWQ6IHBvb2wgaXMgYWxyZWFkeSByZWNvbnN0cnVjdGluZwBQb29sIGluaXRpYWxpemF0aW9uIGZhaWxlZDogcG9vbCBpcyBhbHJlYWR5IGluaXRpYWxpemVkAFBvb2wgaW5pdGlhbGl6YXRpb24gZmFpbGVkOiBwb29sIGlzIGluaXRpYWxpemluZwBQb29sIGluaXRpYWxpemF0aW9uIGZhaWxlZDogcG9vbCBpcyBkZS1pbml0aWFsaXppbmcARmFpbGVkIHRvIHBvb2wgZGVpbml0aWFsaXplZDogcG9vbCBpcyBhbHJlYWR5IHJlY29uc3RydWN0aW5nAEZhaWxlZCB0byBwb29sIGRlaW5pdGlhbGl6ZWQgOiBwb29sIGlzIG5vdCByZWFkeQBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0OiBGYWlsZWQgdG8gcmV0dXJuIGNvbm5lY3Rpb24gYXMgcGx1Zy1pbiBpcyBub3QgcmVhZHkvaW5pdGlhbGl6aW5nL2RlLWluaXRpYWxpemluZwBDb25uZWN0aW9uIHBvb2wgaGFzIGZhaWxlZCB0byBpbml0aWFsaXplZABMZGFwX2Nvbm5ldGlvbl9wb29sOjpnZXQgTERBUCBtYXhpbXVtIGNvbm5lY3Rpb24gYWxsb3dlZCBzaXplIGlzIHJlYWNoZWQuIEluY3JlYXNlIHRoZSBtYXhpbXVtIGxpbWl0LgBTZXQgbWF4IHBvb2wgc2l6ZSBmYWlsZWQuAFBsdWctaW4gaGFzIGZhaWxlZCB0byByZWFkIHRoZSBwYWNrZXQgZnJvbSBjbGllbnQATGRhcF9hdXRoZW50aWNhdGlvbjo6aW5pdGlhbGl6ZTogY3JlYXRpbmcgbmV3IExEQVAgY29ubmVjdGlvbi4gAExkYXBfYXV0aGVudGljYXRpb246OmluaXRpYWxpemU6IGdldHRpbmcgY29ubmVjdGlvbiBmcm9tIHBvb2wuIABMZGFwX2F1dGhlbnRpY2F0aW9uOjpkZV9pbml0aWFsaXplIHB1dHRpbmcgYmFjayBjb25uZWN0aW9uIGluIHRoZSBwb29sAExkYXBfYXV0aGVudGljYXRpb246OnNlYXJjaF91c2VyX2dyb3VwIG5vIGdyb3VwIGF0dHJpYnV0ZSBmb3VuZABMZGFwX2Nvbm5ldGlvbl9wb29sOjpwdXQgbGRhcCBpbmZvIG51bGwATGRhcF9jb25uZWN0aW9uX3Bvb2w6OnB1dCBjb25uZWN0aW9uIGlzIGZyZWVpbmcuIABMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6cHV0IGNvbm5lY3Rpb24gaW4gcHVzaGVkIGluIHRoZSBwb29sAExkYXBfY29ubmVjdGlvbl9jcmVhdG9yOjpMZGFwX2Nvbm5lY3Rpb25fY3JlYXRvcgBzdGFydGluZyBUTFMATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldDogKGxkYXBfaW5mbyA9PSBOVUxMKXx8ICgqbGRhcF9pbmZvKQBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6ZGVpbml0OiBkZWxldGluZyBjb25uZWN0aW9uIGtleSAlcwAgTGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldCBwb29sZWQgY29ubmVjdGlvbiBrZXk6ICVzAExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQgY3JlYXRlIGNvbm5lY3Rpb24ga2V5OiAlcwBMREFQIGNvbW11bmljYXRpb24gaG9zdCAlcyBwb3J0ICV1AFNlbmRpbmcgYXV0aGVudGljYXRpb24gbWV0aG9kIHRvIGNsaWVudCA6ICVzAFNBU0wgcmVxdWVzdCByZWNlaXZlZCBmcm9tIG15c3FsIGNsaWVudDogJXMATGRhcF9zYXNsX2F1dGhlbnRpY2F0aW9uOjpwcm9jZXNzX3Nhc2wgcmM6ICVzAExkYXBfc2FzbF9hdXRoZW50aWNhdGlvbjo6cHJvY2Vzc19zYXNsIHNhc2wgYmluZCBzdWNjZWVkLiBkbjogJXMgbWV0aG9kOiAlcyBzZXJ2ZXIgY3JlZGVudGlhbDogJXMATERBUCBhdXRoZW50aWNhdGlvbiBzdGFydGVkIGZvciB1c2VyIG5hbWU6ICVzACVzAExEQVAgYXV0aGVudGljYXRpb24gaW5pdGlhbGl6ZSBpcyBmYWlsZWQgd2l0aDogJXMATERBUCBhdXRoZW50aWNhdGlvbiBmYWlsZWQgb3IgZ3JvdXAgcmV0cmlldmFsIGZhaWxlZDogJXMAU2VhcmNoIHVzZXIgZ3JvdXAgaGFzIGZhaWxlZDogJXMATERBUCB1c2VyIGJpbmQgaGFzIGZhaWxlZDogJXMAQ29ubmVjdGlvbiBwb29sIGdldDogRmFpbGVkIHRvIGNyZWF0ZSBMREFQIGNvbm5lY3Rpb24uICVzAEZhaWxlZCB0byBjcmVhdGUgbmV3IExEQVAgY29ubmVjdGlvbjogICVzAEZhaWxlZCB0byBlc3RhYmxpc2ggVExTIGNvbm5lY3Rpb246ICAlcwBGYWlsZWQgdG8gc2VhcmNoIHVzZXIgZnVsbCBkbjogJXMATGRhcF9jb25uZWN0aW9uX3Bvb2w6OnJlaW5pdABUaGUgcGF0aCAnJXMnLCBmcm9tIHRoZSBOT1RJRllfU09DS0VUIGVudmlyb25tZW50IHZhcmlhYmxlLCBpcyB0b28gbG9uZy4gQXQgJXUgYnl0ZXMgaXQgZXhjZWVkcyB0aGUgbGltaXQgb2YgJXUgYnl0ZXMgZm9yIGFuIEFGX1VOSVggc29ja2V0LgBGYWlsZWQgdG8gY29ubmVjdCB0byBzeXN0ZW1kIG5vdGlmaWNhdGlvbiBzb2NrZXQgbmFtZWQgJXMuIEVycm9yOiAnJXMnAEZhaWxlZCB0byB3cml0ZSAnJXMnIHRvIHN5c3RlbWQgbm90aWZpY2F0aW9uLiBFcnJvcjogJyVzJwBDYW5ub3QgcmVwbGljYXRlIHRvIHNlcnZlciB3aXRoIHNlcnZlcl91dWlkPSclLjM2cycgYmVjYXVzZSB0aGUgcHJlc2VudCBzZXJ2ZXIgaGFzIHB1cmdlZCByZXF1aXJlZCBiaW5hcnkgbG9ncy4gVGhlIGNvbm5lY3Rpbmcgc2VydmVyIG5lZWRzIHRvIHJlcGxpY2F0ZSB0aGUgbWlzc2luZyB0cmFuc2FjdGlvbnMgZnJvbSBlbHNld2hlcmUsIG9yIGJlIHJlcGxhY2VkIGJ5IGEgbmV3IHNlcnZlciBjcmVhdGVkIGZyb20gYSBtb3JlIHJlY2VudCBiYWNrdXAuIFRvIHByZXZlbnQgdGhpcyBlcnJvciBpbiB0aGUgZnV0dXJlLCBjb25zaWRlciBpbmNyZWFzaW5nIHRoZSBiaW5hcnkgbG9nIGV4cGlyYXRpb24gcGVyaW9kIG9uIHRoZSBwcmVzZW50IHNlcnZlci4gJXMuAEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tcGlkLWZpbGU6IExvY2F0aW9uICclcycgaW4gdGhlIHBhdGggaXMgYWNjZXNzaWJsZSB0byBhbGwgT1MgdXNlcnMuIENvbnNpZGVyIGNob29zaW5nIGEgZGlmZmVyZW50IGRpcmVjdG9yeS4AQ2FuJ3Qgc3RhcnQgc2VydmVyOiBjYW4ndCBjaGVjayBQSUQgZmlsZXBhdGg6ICVzAHZhbGlkYXRlX3Bhc3N3b3JkIHN0YXR1cyB2YXJpYWJsZXMgcmVnaXN0cmF0aW9uIGZhaWxlZC4AdmFsaWRhdGVfcGFzc3dvcmQgc3RhdHVzIHZhcmlhYmxlcyB1bnJlZ2lzdHJhdGlvbiBmYWlsZWQuAERpY3Rpb25hcnkgZmlsZSBvcGVuIGZhaWxlZABnaXZlbiBwYXNzd29yZCBzdHJpbmcgY291bGQgYmUgbnVsbABmYWlsZWQgdG8gY29udmVydCB0aGUgcGFzc3dvcmQgc3RyaW5nIHRvIGxvd2VyIGNhc2UAZmFpbGVkIHRvIGNvbnZlcnQgdGhlIHBhc3N3b3JkIHN0cmluZyBpbnRvIGEgYnVmZmVyAG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZCBmb3Igc3RyaW5nIGhhbmRsZXIAU2luY2UgdGhlIHZhbGlkYXRlX3Bhc3N3b3JkX3BvbGljeSBpcyBtZW50aW9uZWQgYXMgU3Ryb25nLCBkaWN0aW9uYXJ5IGZpbGUgbXVzdCBiZSBzcGVjaWZpZWQAY29udmVydF90b19idWZmZXIgc2VydmljZSBmYWlsZWQAJXMgdmFyaWFibGUgcmVnaXN0cmF0aW9uIGZhaWxlZC4AJXMgdmFyaWFibGUgdW5yZWdpc3RyYXRpb24gZmFpbGVkLgBQbGVhc2Ugc3BlY2lmeSBvcHRpb25zIHNwZWNpZmljIHRvIGtleXJpbmcgbWlncmF0aW9uLiBBbnkgYWRkaXRpb25hbCBvcHRpb25zIGNhbiBiZSBpZ25vcmVkLiBOT1RFOiBBbHRob3VnaCBzb21lIG9wdGlvbnMgYXJlIHZhbGlkLCBtaWdyYXRpb24gdG9vbCBjYW4gc3RpbGwgcmVwb3J0IGVycm9yIGV4YW1wbGU6IHBsdWdpbiB2YXJpYWJsZXMgZm9yIHdoaWNoIHBsdWdpbiBpcyBub3QgbG9hZGVkIHlldC4ASW52YWxpZCBkZWZhdWx0IGNvbGxhdGlvbiAlczogdXRmOG1iNF8wOTAwX2FpX2NpIG9yIHV0ZjhtYjRfZ2VuZXJhbF9jaSBleHBlY3RlZAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBGYWlsZWQgdG8gc2V0IE5VTUEgbWVtb3J5IHBvbGljeSBvZiBidWZmZXIgcG9vbCBwYWdlIGZyYW1lcyB3aXRoIG1iaW5kKCVwLCV6dSwlcywuLi4sLi4uLCVzKSBmYWlsZWQgd2l0aCAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBQYWdlIHN0aWxsIGZpeGVkIG9yIGRpcnR5IGF0IHNodXRkb3duLiAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBXYWl0ZWQgZm9yICV1IHNlY3MgZm9yIGhhc2ggaW5kZXggcmVmX2NvdW50ICglenUpIHRvIGRyb3AgdG8gMC4gaW5kZXg6ICIlcyIgdGFibGU6ICIlcyIAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVGFibGUgZmxhZ3MgYXJlIDB4JWx4IGluIHRoZSBkYXRhIGRpY3Rpb25hcnkgYnV0IHRoZSBmbGFncyBpbiBmaWxlICVzICBhcmUgMHglbGx4IQBDYW4ndCByZWFkIGVuY3J5cHRpb24ga2V5IGZyb20gZmlsZSAlcyEAQ2Fubm90IGNsb3NlIGZpbGUgJXMsIGJlY2F1c2Ugbl9wZW5kaW5nX2ZsdXNoZXMgJXp1AENhbm5vdCBjbG9zZSBmaWxlICVzLCBiZWNhdXNlIG1vZGlmaWNhdGlvbiBjb3VudCAlbGxkICE9IGZsdXNoIGNvdW50ICVsbGQAQ2Fubm90IGNsb3NlIGZpbGUgJXMsIGJlY2F1c2UgaXQgaXMgaW4gdXNlAE9wZW4gZmlsZSBsaXN0IGxlbiBpbiBzaGFyZCAlenUgaXMgJWxsdQBUYWJsZXNwYWNlICVzLCB3YWl0aW5nIGZvciBJTyB0byBzdG9wIGZvciAlbGxkIHNlY29uZHMAJXMAJXMAJXMAJXMAJXMAWW91IG11c3QgcmFpc2UgdGhlIHZhbHVlIG9mIGlubm9kYl9vcGVuX2ZpbGVzIGluIG15LmNuZiEgUmVtZW1iZXIgdGhhdCBJbm5vREIga2VlcHMgYWxsIHJlZG8gbG9nIGZpbGVzIGFuZCBhbGwgc3lzdGVtIHRhYmxlc3BhY2UgZmlsZXMgb3BlbiBmb3IgdGhlIHdob2xlIHRpbWUgbXlzcWxkIGlzIHJ1bm5pbmcsIGFuZCBuZWVkcyB0byBvcGVuIGFsc28gc29tZSAuaWJkIGZpbGVzIGlmIHRoZSBmaWxlLXBlci10YWJsZSBzdG9yYWdlIG1vZGVsIGlzIHVzZWQuIEN1cnJlbnQgb3BlbiBmaWxlcyAlenUsIG1heCBhbGxvd2VkIG9wZW4gZmlsZXMgJXp1LgBNYXggdGFibGVzcGFjZSBpZCBpcyB0b28gaGlnaCwgJWx1AFRyeWluZyB0byBhY2Nlc3MgbWlzc2luZyB0YWJsZXNwYWNlICVsdQBUcnlpbmcgdG8gY2xvc2UvZGVsZXRlIHRhYmxlc3BhY2UgJyVzJyBidXQgdGhlcmUgYXJlICVsdSBwZW5kaW5nIG9wZXJhdGlvbnMgb24gaXQuAFRyeWluZyB0byBkZWxldGUvY2xvc2UgdGFibGVzcGFjZSAnJXMnIGJ1dCB0aGVyZSBhcmUgJWx1IGZsdXNoZXMgYW5kICV6dSBwZW5kaW5nIEkvTydzIG9uIGl0LgAlcwBDYW5ub3QgZGVsZXRlIHRhYmxlc3BhY2UgJWx1IGJlY2F1c2UgaXQgaXMgbm90IGZvdW5kIGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZS4AV2hpbGUgZGVsZXRpbmcgdGFibGVzcGFjZSAlbHUgaW4gRElTQ0FSRCBUQUJMRVNQQUNFLiBGaWxlIHJlbmFtZS9kZWxldGUgZmFpbGVkOiAlcwBDYW5ub3QgZGVsZXRlIHRhYmxlc3BhY2UgJWx1IGluIERJU0NBUkQgVEFCTEVTUEFDRTogJXMAQ2Fubm90IHJlbmFtZSAnJXMnIHRvICclcycgZm9yIHNwYWNlIElEICVsdSBiZWNhdXNlIHRoZSBzb3VyY2UgZmlsZSBkb2VzIG5vdCBleGlzdC4AQ2Fubm90IHJlbmFtZSAnJXMnIHRvICclcycgZm9yIHNwYWNlIElEICVsdSBiZWNhdXNlIHRoZSB0YXJnZXQgZmlsZSBleGlzdHMuIFJlbW92ZSB0aGUgdGFyZ2V0IGZpbGUgYW5kIHRyeSBhZ2Fpbi4AQ2Fubm90IHJlbmFtZSBmaWxlICclcycgKHNwYWNlIGlkICVsdSkgcmV0cmllZCAlbGx1IHRpbWVzLiBUaGVyZSBhcmUgZWl0aGVyIHBlbmRpbmcgSU9zIG9yIGZsdXNoZXMgb3IgdGhlIGZpbGUgaXMgYmVpbmcgZXh0ZW5kZWQuAENhbm5vdCBmaW5kIHNwYWNlIGlkICVsdSBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUsIHRob3VnaCB0aGUgZmlsZSAnJXMnIGluIGEgcmVuYW1lIG9wZXJhdGlvbiBzaG91bGQgaGF2ZSB0aGF0IElELgBSZW5hbWUgd2FpdGluZyBmb3IgSU8gdG8gcmVzdW1lAENhbm5vdCBmaW5kIHRhYmxlc3BhY2UgZm9yICclcycgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlAENhbm5vdCBmaW5kIHRhYmxlc3BhY2UgZm9yICclcycgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlAFRhYmxlc3BhY2UgJyVzJyBpcyBhbHJlYWR5IGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZQBDYW5ub3QgY3JlYXRlIGZpbGUgJyVzJwBUaGUgZmlsZSAnJXMnIGFscmVhZHkgZXhpc3RzIHRob3VnaCB0aGUgY29ycmVzcG9uZGluZyB0YWJsZSBkaWQgbm90IGV4aXN0LiBIYXZlIHlvdSBtb3ZlZCBJbm5vREIgLmliZCBmaWxlcyBhcm91bmQgd2l0aG91dCB1c2luZyB0aGUgU1FMIGNvbW1hbmRzIERJU0NBUkQgVEFCTEVTUEFDRSBhbmQgSU1QT1JUIFRBQkxFU1BBQ0UsIG9yIGRpZCBteXNxbGQgY3Jhc2ggaW4gdGhlIG1pZGRsZSBvZiBDUkVBVEUgVEFCTEU/IFlvdSBjYW4gcmVzb2x2ZSB0aGUgcHJvYmxlbSBieSByZW1vdmluZyB0aGUgZmlsZSAnJXMnIHVuZGVyIHRoZSAnZGF0YWRpcicgb2YgTXlTUUwuAHBvc2l4X2ZhbGxvY2F0ZSgpOiBGYWlsZWQgdG8gcHJlYWxsb2NhdGUgZGF0YSBmb3IgZmlsZSAlcywgZGVzaXJlZCBzaXplICVsbHUgT3BlcmF0aW5nIHN5c3RlbSBlcnJvciBudW1iZXIgJWQgLSAlcy4gQ2hlY2sgdGhhdCB0aGUgZGlzayBpcyBub3QgZnVsbCBvciBhIGRpc2sgcXVvdGEgZXhjZWVkZWQuIE1ha2Ugc3VyZSB0aGUgZmlsZSBzeXN0ZW0gc3VwcG9ydHMgdGhpcyBmdW5jdGlvbi4gUmVmZXIgdG8geW91ciBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gZm9yIG9wZXJhdGluZyBzeXN0ZW0gZXJyb3IgY29kZSBpbmZvcm1hdGlvbi4AQ291bGQgbm90IHdyaXRlIHRoZSBmaXJzdCBwYWdlIHRvIHRhYmxlc3BhY2UgJyVzJwBGaWxlIGZsdXNoIG9mIHRhYmxlc3BhY2UgJyVzJyBmYWlsZWQAQ291bGQgbm90IGZpbmQgYSB2YWxpZCB0YWJsZXNwYWNlIGZpbGUgZm9yIGAlc2AuICVzAElnbm9yaW5nIGRhdGEgZmlsZSAnJXMnIHdpdGggc3BhY2UgSUQgJWx1LiBBbm90aGVyIGRhdGEgZmlsZSBjYWxsZWQgJyVzJyBleGlzdHMgd2l0aCB0aGUgc2FtZSBzcGFjZSBJRAAlcwAlcwAlcwAlcwBDYW4ndCBzZXQgZW5jcnlwdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGFibGVzcGFjZSAlcyEAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVGhlIGRhdGFmaWxlICclcycgZm9yIHRhYmxlc3BhY2UgJXMgaXMgaW4gYW4gdW5wcm90ZWN0ZWQgbG9jYXRpb24uIFRoaXMgZmlsZSBjYW5ub3QgYmUgcmVjb3ZlcmVkIGFmdGVyIGEgY3Jhc2ggdW50aWwgdGhpcyBsb2NhdGlvbiBpcyBhZGRlZCB0byBpbm5vZGJfZGlyZWN0b3JpZXMuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFNjYW4gcGF0aCAnJXMnIGlzIGlnbm9yZWQgYmVjYXVzZSAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBBIGdlbmVyYWwgdGFibGVzcGFjZSBjYW5ub3QgYmUgbG9jYXRlZCB1bmRlciB0aGUgZGF0YWRpci4gQ2Fubm90IG9wZW4gZmlsZSAnJXMnLgBBIGZpbGUtcGVyLXRhYmxlIHRhYmxlc3BhY2UgY2Fubm90IGJlIGxvY2F0ZWQgaW4gdGhlIGRhdGFkaXIuIENhbm5vdCBvcGVuIGZpbGUgJyVzJy4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQ2Fubm90IGNyZWF0ZSBhIHRhYmxlc3BhY2UgZm9yIHRhYmxlICVzIGJlY2F1c2UgdGhlIGRpcmVjdG9yeSBpcyBub3QgYSB2YWxpZCBsb2NhdGlvbi4gJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQmxvY2tlZCBIaWdoIFByaW9yaXR5IFRyYW5zYWN0aW9uIChJRCAlbGx1LCBUaHJlYWQgSUQgJXMpIGZvcmNlcyByb2xsYmFjayBvZiB0aGUgYmxvY2tpbmcgdHJhbnNhY3Rpb24gKElEICVsbHUgLSAlcykuACVzACVzAEJsb2NrZWQgSGlnaCBQcmlvcml0eSBUcmFuc2FjdGlvbiAoVGhyZWFkIElEICVzKSB3YWtpbmcgdXAgdGhlIGJsb2NraW5nIHRyYW5zYWN0aW9uIChJRCAlbGx1KSBieSBwcmV0ZW5kaW5nIGl0J3MgYSBkZWFkbG9jayB2aWN0aW0uACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRoZSB0cmFuc2FjdGlvbiBsb2cgc2l6ZSBpcyB0b28gbGFyZ2UgZm9yIGlubm9kYl9sb2dfYnVmZmVyX3NpemUgKCVsdSA+PSAlbHUgLyAyKS4gVHJ5aW5nIHRvIGV4dGVuZCBpdC4AaW5ub2RiX2xvZ19idWZmZXJfc2l6ZSB3YXMgZXh0ZW5kZWQgdG8gJWx1IGJ5dGVzLgBUaGUgdHJhbnNhY3Rpb24gbG9nIGZpbGVzIGFyZSB0b28gc21hbGwgZm9yIHRoZSBzaW5nbGUgdHJhbnNhY3Rpb24gbG9nIChzaXplPSVsdSkuIFNvLCB0aGUgbGFzdCBjaGVja3BvaW50IGFnZSBtaWdodCBleGNlZWQgdGhlIGxvZyBncm91cCBjYXBhY2l0eSAlbGx1LgBUaGUgYWdlIG9mIHRoZSBsYXN0IGNoZWNrcG9pbnQgaXMgJWxsdSwgd2hpY2ggZXhjZWVkcyB0aGUgbG9nIGdyb3VwIGNhcGFjaXR5ICVsbHUuAENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uIGliX2xvZ2ZpbGVzIGFyZSB0b28gc21hbGwgZm9yIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgJWx1LiBUaGUgY29tYmluZWQgc2l6ZSBvZiBpYl9sb2dmaWxlcyBzaG91bGQgYmUgYmlnZ2VyIHRoYW4gMjAwIGtCICogaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeS4gVG8gZ2V0IG15c3FsZCB0byBzdGFydCB1cCwgc2V0IGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgaW4gbXkuY25mIHRvIGEgbG93ZXIgdmFsdWUsIGZvciBleGFtcGxlLCB0byA4LiBBZnRlciBhbiBFUlJPUi1GUkVFIHNodXRkb3duIG9mIG15c3FsZCB5b3UgY2FuIGFkanVzdCB0aGUgc2l6ZSBvZiBpYl9sb2dmaWxlcy4gJXMAUmVkbyBsb2cgd2FzIGVuY3J5cHRlZCwgYnV0IGtleXJpbmcgcGx1Z2luIGlzIG5vdCBsb2FkZWQuAFJlYWQgcmVkbyBsb2cgZW5jcnlwdGlvbiBtZXRhZGF0YSBzdWNjZXNzZnVsLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSBlbmNyeXB0aW9uIG1ldGFkYXRhLgBDYW5ub3QgcmVhZCB0aGUgZW5jcnlwdGlvbiBpbmZvcm1hdGlvbiBpbiBsb2cgZmlsZSBoZWFkZXIsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIHBsdWdpbiBsb2FkZWQgYW5kIHRoZSBrZXkgZmlsZSBleGlzdHMuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZCBpbiByZWFkLW9ubHkgbW9kZS4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQuAFJlZG8gbG9nIGVuY3J5cHRpb24gaXMgZW5hYmxlZC4ARmx1c2ggd2FpdGluZyBmb3IgYXJjaGl2ZXIgdG8gY2F0Y2ggdXAgbGFnIExTTjogJWxsdQBGbHVzaCBvdmVyd3JpdGluZyBkYXRhIHRvIGFyY2hpdmUgLSB3YWl0IHRvbyBsb25nICgxIG1pbnV0ZSkgbGFnIExTTjogJWxsdQAlcwBTdGFydGluZyBzaHV0ZG93bi4uLgBXYWl0aW5nIGZvciAlcyB0byBleGl0AFdhaXRpbmcgZm9yICVsdSBhY3RpdmUgdHJhbnNhY3Rpb25zIHRvIGZpbmlzaABXYWl0aW5nIGZvciBtYXN0ZXIgdGhyZWFkIHRvIGJlIHN1c3BlbmRlZABXYWl0aW5nIGZvciBwYWdlX2NsZWFuZXIgdG8gZmluaXNoIGZsdXNoaW5nIG9mIGJ1ZmZlciBwb29sAFBlbmRpbmcgY2hlY2twb2ludF93cml0ZXM6ICVsdS4gUGVuZGluZyBsb2cgZmx1c2ggd3JpdGVzOiAlbHUuAFdhaXRpbmcgZm9yICVsdSBidWZmZXIgcGFnZSBJL09zIHRvIGNvbXBsZXRlAE15U1FMIGhhcyByZXF1ZXN0ZWQgYSB2ZXJ5IGZhc3Qgc2h1dGRvd24gd2l0aG91dCBmbHVzaGluZyB0aGUgSW5ub0RCIGJ1ZmZlciBwb29sIHRvIGRhdGEgZmlsZXMuIEF0IHRoZSBuZXh0IG15c3FsZCBzdGFydHVwIElubm9EQiB3aWxsIGRvIGEgY3Jhc2ggcmVjb3ZlcnkhAEJhY2tncm91bmQgdGhyZWFkICVzIHdva2UgdXAgZHVyaW5nIHNodXRkb3duAFdhaXRpbmcgZm9yIGFyY2hpdmVyIHRvIGZpbmlzaCBhcmNoaXZpbmcgcGFnZSBhbmQgbG9nAEJhY2tncm91bmQgdGhyZWFkICVzIHdva2UgdXAgZHVyaW5nIHNodXRkb3duAFdhaXRpbmcgZm9yIGRpcnR5IGJ1ZmZlciBwYWdlcyB0byBiZSBmbHVzaGVkAExvZyBzZXF1ZW5jZSBudW1iZXIgYXQgc2h1dGRvd24gJWxsdSBpcyBsb3dlciB0aGFuIGF0IHN0YXJ0dXAgJWxsdSEAV2FpdGluZyBmb3IgYXJjaGl2ZXIgdG8gZmluaXNoIGFyY2hpdmluZyBwYWdlIGFuZCBsb2cAIyMjIyMjIyMjIyMjIyMjIENPUlJVUFQgTE9HIFJFQ09SRCBGT1VORCAjIyMjIyMjIyMjIyMjIyMATG9nIHJlY29yZCB0eXBlICVkLCBwYWdlICVsdTolbHUuIExvZyBwYXJzaW5nIHByb2NlZWRlZCBzdWNjZXNzZnVsbHkgdXAgdG8gJWxsdS4gUHJldmlvdXMgbG9nIHJlY29yZCB0eXBlICVkLCBpcyBtdWx0aSAlbGx1IFJlY3Ygb2Zmc2V0ICV6ZCwgcHJldiAlbGx1AEhleCBkdW1wIHN0YXJ0aW5nICVsbHUgYnl0ZXMgYmVmb3JlIGFuZCBlbmRpbmcgJWxsdSBieXRlcyBhZnRlciB0aGUgY29ycnVwdGVkIHJlY29yZDoAU2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeSB0byBpZ25vcmUgdGhpcyBlcnJvci4AVGhlIHJlZG8gbG9nIGZpbGUgbWF5IGhhdmUgYmVlbiBjb3JydXB0IGFuZCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsb2cgc2NhbiBkaWQgbm90IHByb2NlZWQgZmFyIGVub3VnaCBpbiByZWNvdmVyeSEgUGxlYXNlIHJ1biBDSEVDSyBUQUJMRSBvbiB5b3VyIElubm9EQiB0YWJsZXMgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBvayEgSWYgbXlzcWxkIGNyYXNoZXMgYWZ0ZXIgdGhpcyByZWNvdmVyeTsgJXMAJWxsdSBwYWdlcyB3aXRoIGxvZyByZWNvcmRzIHdlcmUgbGVmdCB1bnByb2Nlc3NlZCEAVXBncmFkZSBhZnRlciBhIGNyYXNoIGlzIG5vdCBzdXBwb3J0ZWQuIFRoaXMgcmVkbyBsb2cgd2FzIGNyZWF0ZWQgd2l0aCAlcywgYW5kIGl0IGFwcGVhcnMgY29ycnVwdGVkLiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgYXQgJXMAVXBncmFkZSBpcyBub3Qgc3VwcG9ydGVkIGFmdGVyIGEgY3Jhc2ggb3Igc2h1dGRvd24gd2l0aCBpbm5vZGJfZmFzdF9zaHV0ZG93biA9IDIuIFRoaXMgcmVkbyBsb2cgd2FzIGNyZWF0ZWQgd2l0aCAlcywgYW5kIGl0IGFwcGVhcnMgbG9naWNhbGx5IG5vbiBlbXB0eS4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGF0ICVzACVzACVzAFJlZG8gbG9nIGZvcm1hdCBpcyB2JWx1LiBUaGUgcmVkbyBsb2cgd2FzIGNyZWF0ZWQgYmVmb3JlIE15U1FMIDguMC4zMC4AVW5rbm93biByZWRvIGxvZyBmb3JtYXQgKHYlbHUpIGluIGZpbGUgJXMuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCAlcwBObyB2YWxpZCBjaGVja3BvaW50IGZvdW5kIChjb3JydXB0ZWQgcmVkbyBsb2cpLiBZb3UgY2FuIHRyeSAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT02IGFzIGEgbGFzdCByZXNvcnQuAEFwcGx5aW5nIGEgYmF0Y2ggb2YgJWxsdSByZWRvIGxvZyByZWNvcmRzIC4uLgAlcwAlcwBBcHBseSBiYXRjaCBjb21wbGV0ZWQhACVzACVzACVzACVzACVzACVzAEFuIG9wdGltaXplZCh3aXRob3V0IHJlZG8gbG9nZ2luZykgRERMIG9wZXJhdGlvbiBoYXMgYmVlbiBwZXJmb3JtZWQuIEFsbCBtb2RpZmllZCBwYWdlcyBtYXkgbm90IGhhdmUgYmVlbiBmbHVzaGVkIHRvIHRoZSBkaXNrIHlldC4KVGhpcyBvZmZsaW5lIGJhY2t1cCBtYXkgbm90IGJlIGNvbnNpc3RlbnQARXh0ZW5kaW5nIHRhYmxlc3BhY2UgOiAlbHUgc3BhY2UgbmFtZTogJXMgdG8gbmV3IHNpemU6ICVsdSBwYWdlcyBkdXJpbmcgcmVjb3ZlcnkuAENvdWxkIG5vdCBleHRlbmQgdGFibGVzcGFjZTogJWx1IHNwYWNlIG5hbWU6ICVzIHRvIG5ldyBzaXplOiAlbHUgcGFnZXMgZHVyaW5nIHJlY292ZXJ5LgBMb2cgYmxvY2sgJWx1IGF0IGxzbiAlbGx1IGhhcyB2YWxpZCBoZWFkZXIsIGJ1dCBjaGVja3N1bSBmaWVsZCBjb250YWlucyAlbHUsIHNob3VsZCBiZSAlbHUuAFJlY292ZXJ5IHNraXBwZWQsIC0taW5ub2RiLXJlYWQtb25seSBzZXQhAExvZyBzY2FuIHByb2dyZXNzZWQgcGFzdCB0aGUgY2hlY2twb2ludCBMU04gJWxsdS4ATG9nIHBhcnNpbmcgYnVmZmVyIG92ZXJmbG93LiBSZWNvdmVyeSBtYXkgaGF2ZSBmYWlsZWQhIFBsZWFzZSBzZXQgbG9nX2J1ZmZlcl9zaXplIHRvIGEgdmFsdWUgaGlnaGVyIHRoYW4gJWx1LgBTZXQgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5IHRvIGlnbm9yZSB0aGlzIGVycm9yLgBEb2luZyByZWNvdmVyeTogc2Nhbm5lZCB1cCB0byBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUARGF0YWJhc2Ugd2FzIG5vdCBzaHV0ZG93biBub3JtYWxseSEAU3RhcnRpbmcgY3Jhc2ggcmVjb3ZlcnkuAFRoZSB1c2VyIGhhcyBzZXQgU1JWX0ZPUkNFX05PX0xPR19SRURPIG9uLCBza2lwcGluZyBsb2cgcmVkbwBDYW5ub3QgcmVzdG9yZSBmcm9tIG15c3FsYmFja3VwLCBJbm5vREIgcnVubmluZyBpbiByZWFkLW9ubHkgbW9kZSEAVGhlIHJlZG8gbG9nIGZpbGUgd2FzIGNyZWF0ZWQgYnkgbXlzcWxiYWNrdXAgLS1hcHBseS1sb2cgYXQgJXMuIFRoZSBmb2xsb3dpbmcgY3Jhc2ggcmVjb3ZlcnkgaXMgcGFydCBvZiBhIG5vcm1hbCByZXN0b3JlLgBPcGVuaW5nIGNsb25lZCBkYXRhYmFzZQBSZWRvIGxvZyBpcyBmcm9tIGFuIGVhcmxpZXIgdmVyc2lvbiwgdiVsdS4AUmVkbyBsb2cgZm9ybWF0IHYlbHUgbm90IHN1cHBvcnRlZC4gQ3VycmVudCBzdXBwb3J0ZWQgZm9ybWF0IGlzIHYlbHUuAEFyZSB5b3Ugc3VyZSB5b3UgYXJlIHVzaW5nIHRoZSByaWdodCByZWRvIGxvZyBmaWxlcyB0byBzdGFydCB1cCB0aGUgZGF0YWJhc2U/IExvZyBzZXF1ZW5jZSBudW1iZXIgaW4gdGhlIHJlZG8gbG9nIGZpbGVzIGlzICVsbHUsIGxlc3MgdGhhbiB0aGUgbG9nIHNlcXVlbmNlIG51bWJlciBpbiB0aGUgZmlyc3Qgc3lzdGVtIHRhYmxlc3BhY2UgZmlsZSBoZWFkZXIsICVsbHUuAFRoZSBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUgaW4gdGhlIHN5c3RlbSB0YWJsZXNwYWNlIGRvZXMgbm90IG1hdGNoIHRoZSBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUgaW4gdGhlIHJlZG8gbG9nIGZpbGVzIQBDYW4ndCBpbml0aWF0ZSBkYXRhYmFzZSByZWNvdmVyeSwgcnVubmluZyBpbiByZWFkLW9ubHktbW9kZS4AV2Ugc2Nhbm5lZCB0aGUgbG9nIHVwIHRvICVsbHUuIEEgY2hlY2twb2ludCB3YXMgYXQgJWxsdSBhbmQgdGhlIG1heGltdW0gTFNOIG9uIGEgZGF0YWJhc2UgcGFnZSB3YXMgJWxsdS4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgZGF0YWJhc2UgaXMgbm93IGNvcnJ1cHQhAFdhaXRpbmcgZm9yIHJlY3Zfd3JpdGVyIHRvIGZpbmlzaCBmbHVzaGluZyBvZiBidWZmZXIgcG9vbABSZWNvdmVyeSBwYXJzaW5nIGJ1ZmZlciBleHRlbmRlZCB0byAlenUuAE91dCBvZiBtZW1vcnkgd2hpbGUgcmVzaXppbmcgcmVjb3ZlcnkgcGFyc2luZyBidWZmZXIuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAENhbid0IGVuY3J5cHQgZGF0YSBvZiByZWRvIGxvZwAlcwAlcwBEZWNyeXB0aW9uIG9mIHJlZG8gbG9nIGJsb2NrIGF0IG9mZnNldCAlbGx1IGluIGZpbGUgJXMgZmFpbGVkIGJlY2F1c2UgdGhlcmUncyBubyBrZXlyaW5nIGNvbmZpZ3VyZWQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAT2xkIGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdSB3YXMgZ3JlYXRlciB0aGFuIHRoZSBuZXcgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1LiBQbGVhc2Ugc3VibWl0IGEgYnVnIHJlcG9ydCB0byBodHRwOi8vYnVncy5teXNxbC5jb20AU2VtYXBob3JlIHdhaXQgaGFzIGxhc3RlZCA+ICVsbHUgc2Vjb25kcy4gV2UgaW50ZW50aW9uYWxseSBjcmFzaCB0aGUgc2VydmVyIGJlY2F1c2UgaXQgYXBwZWFycyB0byBiZSBodW5nLgBXYWl0aW5nIGZvciAlbGx1IHRhYmxlKHMpIHRvIGJlIGRyb3BwZWQAV2FpdGluZyBmb3IgY2hhbmdlIGJ1ZmZlciBtZXJnZSB0byBjb21wbGV0ZSBudW1iZXIgb2YgYnl0ZXMgb2YgY2hhbmdlIGJ1ZmZlciBqdXN0IG1lcmdlZDogJWxsdQBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlKHMpIHRvIGJlIGVuY3J5cHRlZCBzaW5jZSAtLWlubm9kYl91bmRvX3RhYmxlc3BhY2VzPTAuAENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UocykgdG8gYmUgZW5jcnlwdGVkIGluIHJlYWQtb25seS1tb2RlLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlICclcycgdG8gYmUgZW5jcnlwdGVkLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlICclcycgdG8gYmUgZW5jcnlwdGVkLiBGYWlsZWQgdG8gd3JpdGUgaGVhZGVyIHBhZ2UuAENhbid0IHNldCB1bmRvIHRhYmxlc3BhY2UgJyVzJyB0byBiZSBlbmNyeXB0ZWQuIEVycm9yICVkIC0gJXMARW5jcnlwdGlvbiBpcyBlbmFibGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AQ2FuJ3Qgcm90YXRlIGVuY3J5cHRpb24gb24gdW5kbyB0YWJsZXNwYWNlICclcycuAEVuY3J5cHRpb24gaXMgZW5hYmxlZCBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuAG9zX2ZpbGVfZ2V0X3N0YXR1cygpIGZhaWxlZCBvbiAnJXMnLiBDYW4ndCBkZXRlcm1pbmUgZmlsZSBwZXJtaXNzaW9ucy4AJXMgY2FuJ3QgYmUgb3BlbmVkIGluICVzIG1vZGUuACclcycgbm90IGEgcmVndWxhciBmaWxlLgBDYW5ub3QgY3JlYXRlICVzAFNldHRpbmcgZmlsZSAlcyBzaXplIHRvICVsbHUgTUIuIFByb2dyZXNzIDogJXUlJQBDYW5ub3QgcmVzaXplIHJlZG8gbG9nIGZpbGUgJXMgdG8gJWxsdSBNQiAoJXMpAENhbm5vdCBjcmVhdGUgcmVkbyBsb2cgZmlsZXMgaW4gcmVhZC1vbmx5IG1vZGUgKC0taW5ub2RiLXJlYWQtb25seSkuAFJlZG8gbG9nIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgYnV0IHRoZSBrZXlyaW5nIGlzIG5vdCBsb2FkZWQuAEZhaWxlZCB0byBjcmVhdGUgcmVkbyBsb2cgZmlsZSAlcyAoZXJyb3I6ICVkKSBmb3Igc3RhcnQgTFNOICVsbHUAUmVuYW1pbmcgbG9nIGZpbGUgJXMgdG8gJXMATmV3IHJlZG8gbG9nIGZpbGVzIGNyZWF0ZWQsIExTTj0lbGx1AFVuYWJsZSB0byBvcGVuICclcycgKGVycm9yOiAlZCkuAENhbm5vdCBjcmVhdGUgY29uc3RydWN0aW9uIGxvZyBmaWxlICclcycgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBDcmVhdGluZyBVTkRPIFRhYmxlc3BhY2UgJXMAU2V0dGluZyBmaWxlICVzIHNpemUgdG8gJWxsdSBNQgBQaHlzaWNhbGx5IHdyaXRpbmcgdGhlIGZpbGUgZnVsbABFcnJvciBpbiBjcmVhdGluZyAlczogcHJvYmFibHkgb3V0IG9mIGRpc2sgc3BhY2UAQ2FuJ3Qgc2V0IGVuY3J5cHRpb24gbWV0YWRhdGEgZm9yIHNwYWNlICVzAENhbm5vdCByZWFkIGZpcnN0IHBhZ2Ugb2YgJyVzJyAtICVzAFVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1IHdhcyBiZWluZyB0cnVuY2F0ZWQgd2hlbiBteXNxbGQgcXVpdC4AQ2Fubm90IHJlY292ZXIgYSB0cnVuY2F0ZWQgdW5kbyB0YWJsZXNwYWNlIGluIHJlYWQtb25seSBtb2RlAFJlY29uc3RydWN0aW5nIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LgBDYW5ub3QgY3JlYXRlICVzIGJlY2F1c2UgJXMgYWxyZWFkeSB1c2VzIFNwYWNlIElEPSVsdSEgRGlkIHlvdSBjaGFuZ2UgaW5ub2RiX3VuZG9fZGlyZWN0b3J5PwBVTkRPIHRhYmxlc3BhY2UgJXMgbXVzdCBiZSAlcwBFcnJvciBjcmVhdGluZyBmaWxlIGZvciAlcwBFcnJvciByZWFkaW5nIGVuY3J5cHRpb24gZm9yICVzAFVuYWJsZSB0byBvcGVuIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1AE9wZW5lZCAlbGx1IGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMuAENhbm5vdCBjcmVhdGUgdW5kbyB0YWJsZXNwYWNlcyBzaW5jZSBpbm5vZGJfJXMgaGFzIGJlZW4gc2V0LiBVc2luZyAlbGx1IGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMuAENhbm5vdCBjb250aW51ZSBJbm5vREIgc3RhcnR1cCBpbiAlcyBtb2RlIGJlY2F1c2UgdGhlcmUgYXJlIG5vIGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMgZm91bmQuAENvdWxkIG5vdCBjcmVhdGUgdW5kbyB0YWJsZXNwYWNlICclcycuAEVycm9yICVkIC0gJXMgLSBvcGVuaW5nIG5ld2x5IGNyZWF0ZWQgdW5kbyB0YWJsZXNwYWNlICclcycuAENyZWF0ZWQgJWxsdSB1bmRvIHRhYmxlc3BhY2VzLgBVbmFibGUgdG8gY3JlYXRlIGVuY3J5cHRlZCB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4gcGxlYXNlIGNoZWNrIGlmIHRoZSBrZXlyaW5nIGlzIGluaXRpYWxpemVkIGNvcnJlY3RseQBFbmNyeXB0aW9uIGlzIGVuYWJsZWQgZm9yIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LgBVbmFibGUgdG8gaW5pdGlhbGl6ZSB0aGUgaGVhZGVyIHBhZ2UgaW4gdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuAENhbm5vdCBkZWxldGUgb2xkIHVuZG8gdGFibGVzcGFjZXMgYmVjYXVzZSB0aGV5IGNvbnRhaW4gdW5kbyBsb2dzIGZvciBYQSBQUkVQQVJFRCB0cmFuc2FjdGlvbnMuAFVwZ3JhZGluZyAlenUgZXhpc3RpbmcgdW5kbyB0YWJsZXNwYWNlcyB0aGF0IHdlcmUgdHJhY2tlZCBpbiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgdG8gJWx1IG5ldyBpbmRlcGVuZGVudCB1bmRvIHRhYmxlc3BhY2VzLgBEZWxldGluZyAlbGx1IG5ldyBpbmRlcGVuZGVudCB1bmRvIHRhYmxlc3BhY2VzIHRoYXQgd2UganVzdCBjcmVhdGVkLgBXYWl0aW5nIGZvciBwdXJnZSB0byBzdGFydABDcmVhdGluZyBzaGFyZWQgdGFibGVzcGFjZSBmb3IgdGVtcG9yYXJ5IHRhYmxlcwBUaGUgJXMgZGF0YSBmaWxlIG11c3QgYmUgd3JpdGFibGUhAENvdWxkIG5vdCBjcmVhdGUgdGhlIHNoYXJlZCAlcy4AVW5hYmxlIHRvIGNyZWF0ZSB0aGUgc2hhcmVkICVzLgBUaGUgJXMgZGF0YSBmaWxlIGNhbm5vdCBiZSByZS1vcGVuZWQgYWZ0ZXIgY2hlY2tfZmlsZV9zcGVjKCkgc3VjY2VlZGVkIQAlZCB0aHJlYWRzIGNyZWF0ZWQgYnkgSW5ub0RCIGhhZCBub3QgZXhpdGVkIGF0IHNodXRkb3duIQBJbm5vREIgRGF0YWJhc2UgY3JlYXRpb24gd2FzIGFib3J0ZWQgJXN3aXRoIGVycm9yICVzLiBZb3UgbWF5IG5lZWQgdG8gZGVsZXRlIHRoZSBpYmRhdGExIGZpbGUgYmVmb3JlIHRyeWluZyB0byBzdGFydCB1cCBhZ2Fpbi4AUGx1Z2luIGluaXRpYWxpemF0aW9uIGFib3J0ZWQgJXN3aXRoIGVycm9yICVzLgBXYWl0aW5nIGZvciAlenUgYnVmZmVyIHBhZ2UgSS9PcyB0byBjb21wbGV0ZS4AUFVOQ0ggSE9MRSBzdXBwb3J0IGF2YWlsYWJsZQBQVU5DSCBIT0xFIHN1cHBvcnQgbm90IGF2YWlsYWJsZQBTaXplIG9mIElubm9EQidzIHVsaW50IGlzICV6dSBidXQgc2l6ZSBvZiB2b2lkKiBpcyAlenUuIFRoZSBzaXplcyBzaG91bGQgYmUgdGhlIHNhbWUgc28gdGhhdCBvbiBhIDY0LWJpdCBwbGF0Zm9ybXMgeW91IGNhbiBhbGxvY2F0ZSBtb3JlIHRoYW4gNCBHQiBvZiBtZW1vcnkuAERhdGFiYXNlIHVwZ3JhZGUgY2Fubm90IGJlIGFjY29tcGxpc2hlZCBpbiByZWFkLW9ubHkgbW9kZS4ARGF0YWJhc2UgdXBncmFkZSBjYW5ub3QgYmUgYWNjb21wbGlzaGVkIHdpdGggaW5ub2RiX2ZvcmNlX3JlY292ZXJ5ID4gMAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBNeVNRTCB3YXMgYnVpbHQgd2l0aG91dCBhIG1lbW9yeSBiYXJyaWVyIGNhcGFiaWxpdHkgb24gdGhpcyBhcmNoaXRlY3R1cmUsIHdoaWNoIG1pZ2h0IGFsbG93IGEgbXV0ZXgvcndfbG9jayB2aW9sYXRpb24gdW5kZXIgaGlnaCB0aHJlYWQgY29uY3VycmVuY3kuIFRoaXMgbWF5IGNhdXNlIGEgaGFuZy4AQ29tcHJlc3NlZCB0YWJsZXMgdXNlIHpsaWIgJXMAJXMAU3RhcnR1cCBjYWxsZWQgc2Vjb25kIHRpbWUgZHVyaW5nIHRoZSBwcm9jZXNzIGxpZmV0aW1lLiBJbiB0aGUgTXlTUUwgRW1iZWRkZWQgU2VydmVyIExpYnJhcnkgeW91IGNhbm5vdCBjYWxsIHNlcnZlcl9pbml0KCkgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBwcm9jZXNzIGxpZmV0aW1lLgAlcwBVbmFibGUgdG8gY3JlYXRlIG1vbml0b3IgZmlsZSAlczogJXMARGlzYWJsaW5nIGJhY2tncm91bmQgaWJ1ZiBJTyByZWFkIHRocmVhZHMuAENhbm5vdCBpbml0aWFsaXplIEFJTyBzdWItc3lzdGVtAEluaXRpYWxpemluZyBidWZmZXIgcG9vbCwgdG90YWwgc2l6ZSA9ICVsZiVjLCBpbnN0YW5jZXMgPSAlbHUsIGNodW5rIHNpemUgPSVsZiVjIABDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgYnVmZmVyIHBvb2wAQ29tcGxldGVkIGluaXRpYWxpemF0aW9uIG9mIGJ1ZmZlciBwb29sAFNtYWxsIGJ1ZmZlciBwb29sIHNpemUgKCVsbHVNKSwgdGhlIGZsc3RfdmFsaWRhdGUoKSBkZWJ1ZyBmdW5jdGlvbiBjYW4gY2F1c2UgYSBkZWFkbG9jayBpZiB0aGUgYnVmZmVyIHBvb2wgZmlsbHMgdXAuAENvdWxkIG5vdCBvcGVuIG9yIGNyZWF0ZSB0aGUgc3lzdGVtIHRhYmxlc3BhY2UuIElmIHlvdSB0cmllZCB0byBhZGQgbmV3IGRhdGEgZmlsZXMgdG8gdGhlIHN5c3RlbSB0YWJsZXNwYWNlLCBhbmQgaXQgZmFpbGVkIGhlcmUsIHlvdSBzaG91bGQgbm93IGVkaXQgaW5ub2RiX2RhdGFfZmlsZV9wYXRoIGluIG15LmNuZiBiYWNrIHRvIHdoYXQgaXQgd2FzLCBhbmQgcmVtb3ZlIHRoZSBuZXcgaWJkYXRhIGZpbGVzIElubm9EQiBjcmVhdGVkIGluIHRoaXMgZmFpbGVkIGF0dGVtcHQuIElubm9EQiBvbmx5IHdyb3RlIHRob3NlIGZpbGVzIGZ1bGwgb2YgemVyb3MsIGJ1dCBkaWQgbm90IHlldCB1c2UgdGhlbSBpbiBhbnkgd2F5LiBCdXQgYmUgY2FyZWZ1bDogZG8gbm90IHJlbW92ZSBvbGQgZGF0YSBmaWxlcyB3aGljaCBjb250YWluIHlvdXIgcHJlY2lvdXMgZGF0YSEAQ2Fubm90IGNyZWF0ZSByZWRvIGxvZyBmaWxlcyBiZWNhdXNlIGRhdGEgZmlsZXMgYXJlIGNvcnJ1cHQgb3IgdGhlIGRhdGFiYXNlIHdhcyBub3Qgc2h1dCBkb3duIGNsZWFubHkgYWZ0ZXIgY3JlYXRpbmcgdGhlIGRhdGEgZmlsZXMuAE9ubHkgb25lIHJlZG8gbG9nIGZpbGUgZm91bmQAVGhlIHJlZG8gbG9nIGZpbGUgJXMgc2l6ZSAlbGx1IGlzIG5vdCBhIG11bHRpcGxlIG9mIGlubm9kYl9wYWdlX3NpemUAVGhlIHJlZG8gbG9nIGZpbGUgJXMgaXMgb2YgZGlmZmVyZW50IHNpemUgJWxsdSBieXRlcyB0aGFuIG90aGVyIGxvZyBmaWxlcyAlbGx1IGJ5dGVzIQBVc2UgLS1pbm5vZGItZGlyZWN0b3JpZXMgdG8gZmluZCB0aGUgdGFibGVzcGFjZSBmaWxlcy4gSWYgdGhhdCBmYWlscyB0aGVuIHVzZSAtLWlubm9kYi1mb3JjZS1yZWNvdmVyeT0xIHRvIGlnbm9yZSB0aGlzIGFuZCB0byBwZXJtYW5lbnRseSBsb3NlIGFsbCBjaGFuZ2VzIHRvIHRoZSBtaXNzaW5nIHRhYmxlc3BhY2UocykAVGhlIHJlZG8gbG9nIGZpbGUgbWF5IGhhdmUgYmVlbiBjb3JydXB0IGFuZCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBsb2cgc2NhbiBvciBwYXJzaW5nIGRpZCBub3QgcHJvY2VlZCBmYXIgZW5vdWdoIGluIHJlY292ZXJ5LiBQbGVhc2UgcnVuIENIRUNLIFRBQkxFIG9uIHlvdXIgSW5ub0RCIHRhYmxlcyB0byBjaGVjayB0aGF0IHRoZXkgYXJlIG9rISBJdCBtYXkgYmUgc2FmZXN0IHRvIHJlY292ZXIgeW91ciBJbm5vREIgZGF0YWJhc2UgZnJvbSBhIGJhY2t1cCEAQ2Fubm90IHJlc2l6ZSByZWRvIGxvZyBmaWxlcyBpbiByZWFkLW9ubHkgbW9kZS4gUHJvdmlkZSAtLWlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSA+PSAlbGx1TUIgb3Igc3RhcnQgd2l0aG91dCAtLWlubm9kYi1yZWFkLW9ubHkuAENhbm5vdCBvcGVuIEREIHRhYmxlc3BhY2UuAFN0YXJ0aW5nIHRvIGRlbGV0ZSBhbmQgcmV3cml0ZSByZWRvIGxvZyBmaWxlcy4AVW5kbyBmcm9tIDUuNyBmb3VuZC4gSXQgd2lsbCBiZSBwdXJnZWQAJXMAJXMAVGFibGVzcGFjZSBzaXplIHN0b3JlZCBpbiBoZWFkZXIgaXMgJWx1IHBhZ2VzLCBidXQgdGhlIHN1bSBvZiBkYXRhIGZpbGUgc2l6ZXMgaXMgJWx1IHBhZ2VzAENhbm5vdCBzdGFydCBJbm5vREIuIFRoZSB0YWlsIG9mIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSBpcyBtaXNzaW5nLiBIYXZlIHlvdSBlZGl0ZWQgaW5ub2RiX2RhdGFfZmlsZV9wYXRoIGluIG15LmNuZiBpbiBhbiBpbmFwcHJvcHJpYXRlIHdheSwgcmVtb3ZpbmcgaWJkYXRhIGZpbGVzIGZyb20gdGhlcmU/IFlvdSBjYW4gc2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeT0xIGluIG15LmNuZiB0byBmb3JjZSBhIHN0YXJ0dXAgaWYgeW91IGFyZSB0cnlpbmcgdG8gcmVjb3ZlciBhIGJhZGx5IGNvcnJ1cHQgZGF0YWJhc2UuAFRhYmxlc3BhY2Ugc2l6ZSBzdG9yZWQgaW4gaGVhZGVyIGlzICVsdSBwYWdlcywgYnV0IHRoZSBzdW0gb2YgZGF0YSBmaWxlIHNpemVzIGlzIG9ubHkgJWx1IHBhZ2VzAENhbm5vdCBzdGFydCBJbm5vREIuIFRoZSB0YWlsIG9mIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSBpcyBtaXNzaW5nLiBIYXZlIHlvdSBlZGl0ZWQgaW5ub2RiX2RhdGFfZmlsZV9wYXRoIGluIG15LmNuZiBpbiBhbiBJbm5vREI6IGluYXBwcm9wcmlhdGUgd2F5LCByZW1vdmluZyBpYmRhdGEgZmlsZXMgZnJvbSB0aGVyZT8gWW91IGNhbiBzZXQgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5PTEgaW4gbXkuY25mIHRvIGZvcmNlIElubm9EQjogYSBzdGFydHVwIGlmIHlvdSBhcmUgdHJ5aW5nIHRvIHJlY292ZXIgYSBiYWRseSBjb3JydXB0IGRhdGFiYXNlLgAlcyBzdGFydGVkOyBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUAV2FpdGluZyBmb3IgcHVyZ2UgdG8gY29tcGxldGUAV2FpdGluZyBmb3IgZGljdF9zdGF0c190aHJlYWQgdG8gZXhpdABRdWVyeSBjb3VudGVyIHNob3dzICVsbGQgcXVlcmllcyBzdGlsbCBpbnNpZGUgSW5ub0RCIGF0IHNodXRkb3duAFNodXRkb3duIGNvbXBsZXRlZDsgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1AENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uACVzACVzACVzACVzACVzACVzACVzACVzACVzAFVuYWJsZSB0byByZWFkIHRoZSBleGlzdGluZyB1bmRvIHRydW5jYXRlIGxvZyBmaWxlICclcycuIFRoZSBlcnJvciBpcyAlcwBVbmRvIHRhYmxlc3BhY2UgJXMgaXMgbWFya2VkIGZvciB0cnVuY2F0ZQAlcwBUcnVuY2F0aW5nIFVORE8gdGFibGVzcGFjZSAlcwAlcwBDYW5ub3QgY3JlYXRlIHRydW5jYXRlIGxvZyBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuACVzAEZhaWxlZCB0byB0cnVuY2F0ZSB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AJXMAQ29tcGxldGVkIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcy4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAUm9sbGJhY2sgb2Ygbm9uLXByZXBhcmVkIHRyYW5zYWN0aW9ucyBjb21wbGV0ZWQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQmxvY2tlZCBIaWdoIFByaW9yaXR5IFRyYW5zYWN0aW9uIChJRCAlbGx1LCBUaHJlYWQgSUQgJXMpIGtpbGxlZCB0aGUgYmxvY2tpbmcgdHJhbnNhY3Rpb24gKElEICVsbHUgLSAlcykgYnkgcm9sbGluZyBpdCBiYWNrLgAlcwBnZXR0aW1lb2ZkYXkoKSBmYWlsZWQ6ICVzAENhbid0IGNyZWF0ZSBVTkRPIHRhYmxlc3BhY2UgJXMgJXMAJXMAUmVzaXppbmcgcmVkbyBsb2cgZnJvbSAlbGx1TSB0byAlbGx1TSAoTFNOPSVsbHUpIHN5bmNocm9ub3VzbHkuIElmIHRoaXMgdGFrZXMgdG9vIGxvbmcsIGNvbnNpZGVyIHN0YXJ0aW5nIHRoZSBzZXJ2ZXIgd2l0aCBsYXJnZSAtLWlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSwgYW5kIHJlc2l6aW5nIHRoZSByZWRvIGxvZyBvbmxpbmUgdXNpbmcgU0VULgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBPdXQgb2Ygc3BhY2UgaW4gdGhlIHJlZG8gbG9nLiBDaGVja3BvaW50IExTTjogJWxsdS4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuACVzAExvZyB3cml0ZXIgd2FpdGVkIHRvbyBsb25nIGZvciByZWRvLWFyY2hpdmVyIHRvIGFkdmFuY2UgKDEgc2Vjb25kKS4gVGhlcmUgYXJlIHVuYXJjaGl2ZWQ6ICVsbHUgYnl0ZXMuIEFyY2hpdmVyIExTTjogJWxsdS4gQWJvcnRlZCB0aGUgcmVkby1hcmNoaXZlci4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuAExvZyB3cml0ZXIgaXMgd2FpdGluZyBmb3IgcmVkby1hcmNoaXZlciB0byBjYXRjaCB1cCB1bmFyY2hpdmVkOiAlbGx1IGJ5dGVzLiBBcmNoaXZlciBMU046ICVsbHUuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgAlcwAlcwAlcwAlcwBDYW4ndCBzZXQgcmVkbyBsb2cgZmlsZXMgdG8gYmUgZW5jcnlwdGVkIGluIHJlYWQtb25seSBtb2RlLgBDYW4ndCBzZXQgcmVkbyBsb2cgZmlsZXMgdG8gYmUgZW5jcnlwdGVkLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQuAFJlZG8gbG9nIGVuY3J5cHRpb24gaXMgZW5hYmxlZC4AV2FpdGluZyBmb3IgYXJjaGl2ZXIgdG8gZmluaXNoIGFyY2hpdmluZyBwYWdlIGFuZCBsb2cAU3RhcnRpbmcgc2h1dGRvd24uLi4AV2FpdGluZyBmb3IgJXMgdG8gZXhpdC4AV2FpdGluZyBmb3Igcm9sbGJhY2sgb2YgJXp1IHJlY292ZXJlZCB0cmFuc2FjdGlvbnMsIGJlZm9yZSBzaHV0ZG93bi4AV2FpdGluZyBmb3IgbWFzdGVyIHRocmVhZCB0byBiZSBzdXNwZW5kZWQuAFdhaXRpbmcgZm9yIHBhZ2VfY2xlYW5lciB0byBmaW5pc2ggZmx1c2hpbmcgb2YgYnVmZmVyIHBvb2wuAFNodXRkb3duIGlzIHdhaXRpbmcgZm9yICV6dSBidWZmZXIgcGFnZSBJL09zIHRvIGNvbXBsZXRlLgBNeVNRTCBoYXMgcmVxdWVzdGVkIGEgdmVyeSBmYXN0IHNodXRkb3duIHdpdGhvdXQgZmx1c2hpbmcgdGhlIElubm9EQiBidWZmZXIgcG9vbCB0byBkYXRhIGZpbGVzLiBBdCB0aGUgbmV4dCBteXNxbGQgc3RhcnR1cCBJbm5vREIgd2lsbCBkbyBhIGNyYXNoIHJlY292ZXJ5IQAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBJbnZhbGlkIHJlZG8gbG9nIGhlYWRlciBjaGVja3N1bS4AVW5zdXBwb3J0ZWQgcmVkbyBsb2cgZm9ybWF0ICh2JWx1KS4gVGhlIHJlZG8gbG9nIHdhcyBjcmVhdGVkIGJlZm9yZSBNeVNRTCA1LjcuOQAlcwBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLiBUaGUgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5PSVsbHVNIGlzIHRvbyBzbWFsbCBmb3IgdGhlIGlubm9kYl90aHJlYWRfY29uY3VycmVuY3k9JWx1LiBUaGUgY2FwYWNpdHkgb2YgcmVkbyBzaG91bGQgYmUgPj0gJWxsdU0uIFRvIGdldCBteXNxbGQgcnVubmluZywgc2V0IGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgdG8gYSBzbWFsbGVyIHZhbHVlIG9yIGluY3JlYXNlIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4gJXMAJXMAJXMAVXNlciBoYXMgc2V0IGlubm9kYl90aHJlYWRfY29uY3VycmVuY3kgdG8gJWx1LgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBTUUwgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBTUUwgdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIElPIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgSU8gdGhyZWFkIHdpbGwgc3RvcCBvbmNlIHRoZSBjdXJyZW50IHRhc2sgaXMgY29tcGxldGUuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBVcGRhdGVzIHRvIG5vbi10cmFuc2FjdGlvbmFsIHRhYmxlcyBjYW4gb25seSBiZSBkb25lIGluIGVpdGhlciBhdXRvY29tbWl0dGVkIHN0YXRlbWVudHMgb3Igc2luZ2xlLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMsIGFuZCBuZXZlciBpbiB0aGUgc2FtZSBzdGF0ZW1lbnQgYXMgdXBkYXRlcyB0byB0cmFuc2FjdGlvbmFsIHRhYmxlcy4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBUQUJMRSAuLi4gU0VMRUNULgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgY2FuIG9ubHkgYmUgZXhlY3V0ZWQgb3V0c2lkZSB0cmFuc2FjdGlvbmFsIGNvbnRleHQuICBUaGVzZSBzdGF0ZW1lbnRzIGFyZSBhbHNvIG5vdCBhbGxvd2VkIGluIGEgZnVuY3Rpb24gb3IgdHJpZ2dlciBiZWNhdXNlIGZ1bmN0aW9ucyBhbmQgdHJpZ2dlcnMgYXJlIGFsc28gY29uc2lkZXJlZCB0byBiZSBtdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnM9JS4xOTJzIHdpbGwgYmUgaWdub3JlZCBhbmQgdXBkYXRlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gZnVsbCBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gbG9nX2Jpbl91c2VfdjFfcm93X2V2ZW50cz0xIHdpbGwgYmUgaWdub3JlZCBhbmQgcm93IGV2ZW50cyB3aWxsIGJlIHdyaXR0ZW4gaW4gbmV3IGZvcm1hdCB0byBiaW5hcnkgbG9nLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnM9JS4xOTJzIHdpbGwgYmUgdXNlZCBvbmx5IGZvciB0aGUgYWZ0ZXItaW1hZ2UuIEZ1bGwgdmFsdWVzIHdpbGwgYmUgd3JpdHRlbiBpbiB0aGUgYmVmb3JlLWltYWdlLCBzbyB0aGUgc2F2aW5nIGluIGRpc2sgc3BhY2UgZHVlIHRvIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucyBpcyBsaW1pdGVkIHRvIGxlc3MgdGhhbiA1MCUlLgBBYm9ydGVkIGNvbm5lY3Rpb24gJXUgdG8gZGI6ICclLS4xOTJzJyB1c2VyOiAnJS0uNDhzJyBob3N0OiAnJS0uMjU1cycgKCUtLjY0cykuACVzOiBOb3JtYWwgc2h1dGRvd24uAENhbiBub3QgcGVyZm9ybSBrZXlyaW5nIG1pZ3JhdGlvbiA6ICVzLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgb3B0aW9uIHZhbHVlICcldScgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICcldScuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuIElmIHRoZXJlIGlzIGV4aXN0aW5nIGRhdGEgb24gbWVtYmVyLCBpdCBtYXkgYmUgaW5jb21wYXRpYmxlIHdpdGggZ3JvdXAgaWYgaXQgd2FzIGNyZWF0ZWQgd2l0aCBhIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgdmFsdWUgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwLgBBbiBvdXQtb2YtbWVtb3J5IGVycm9yIG9jY3VycmVkIHdoaWxlIHNhdmluZyB0aGUgc2V0IG9mIEdUSURzIGZyb20gdGhlIGxhc3QgYmluYXJ5IGxvZyBpbnRvIHRoZSBteXNxbC5ndGlkX2V4ZWN1dGVkIHRhYmxlAFRoZSBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHNldHRpbmcgZm9yIHRoZSBkYXRhIGRpY3Rpb25hcnkgd2FzIG5vdCBmb3VuZC4gU3RhcnRpbmcgdGhlIHNlcnZlciB1c2luZyBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gJyV1Jy4AQSBjYXB0dXJlIGdyb3VwIGhhcyBhbiBpbnZhbGlkIG5hbWUuAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnAFN0b3BwaW5nIHNlcnZpY2VzIGZhaWxlZCB3aXRoIGVycm9yICIlcyIAUXVlcnkgY2F1c2VkIGRpZmZlcmVudCBlcnJvcnMgb24gc291cmNlIGFuZCByZXBsaWNhLiBFcnJvciBvbiBzb3VyY2U6IG1lc3NhZ2UgKGZvcm1hdCk9JyVzJyBlcnJvciBjb2RlPSVkOyBFcnJvciBvbiByZXBsaWNhOmFjdHVhbCBtZXNzYWdlPSclcycsIGVycm9yIGNvZGU9JWQuIERlZmF1bHQgZGF0YWJhc2U6JyVzJy4gUXVlcnk6JyVzJwBHb3QgZmF0YWwgZXJyb3IgJWQgZnJvbSBzb3VyY2Ugd2hlbiByZWFkaW5nIGRhdGEgZnJvbSBiaW5hcnkgbG9nOiAnJS0uNTEycycAUmVwbGljYXRpb24gZXZlbnQgY2hlY2tzdW0gdmVyaWZpY2F0aW9uIGZhaWxlZCB3aGlsZSByZWFkaW5nIGZyb20gbmV0d29yay4ARmFpbGVkIHRvIGNyZWF0ZSAlcwBGYXRhbCBlcnJvcjogJXMAVW5leHBlY3RlZCBzb3VyY2UncyBoZWFydGJlYXQgZGF0YTogJXMAVGhlIGluY2lkZW50ICVzIG9jY3VycmVkIG9uIHRoZSBzb3VyY2UuIE1lc3NhZ2U6ICVzAFNvdXJjZSBjb21tYW5kICVzIGZhaWxlZDogJXMAUmVsYXkgbG9nIHJlYWQgZmFpbHVyZTogJXMAUmVsYXkgbG9nIHdyaXRlIGZhaWx1cmU6ICVzAFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGFwcGxpZXIgbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAR290IGEgcGFja2V0IGJpZ2dlciB0aGFuICdtYXhfYWxsb3dlZF9wYWNrZXQnIGJ5dGVzAEFjY2VzcyB0byAlLjY0cyAnJS42NHMuJS42NHMnIGlzIHJlamVjdGVkLgBVbmtub3duIGVycm9yAFVua25vd24gc3lzdGVtIHZhcmlhYmxlICclLS42NHMnAEEgbWVzc2FnZSBpbnRlbmRlZCBmb3IgYSBjbGllbnQgY2Fubm90IGJlIHNlbnQgdGhlcmUgYXMgbm8gY2xpZW50LXNlc3Npb24gaXMgYXR0YWNoZWQuIFRoZXJlZm9yZSwgd2UncmUgc2VuZGluZyB0aGUgaW5mb3JtYXRpb24gdG8gdGhlIGVycm9yLWxvZyBpbnN0ZWFkOiBNWS0lMDZkIC0gJXMAQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHM7IGRpYWdub3N0aWNzIGFyZWE6IE1ZLSUwNmQgLSAlLS42NHMpAE91dCBvZiBzb3J0IG1lbW9yeSwgY29uc2lkZXIgaW5jcmVhc2luZyBzZXJ2ZXIgc29ydCBidWZmZXIgc2l6ZSEAVGhlIHRhYmxlICclLS4xOTJzJyBpcyBmdWxsIQBDcmVhdGUgdGFibGUvdGFibGVzcGFjZSAnJS0uMTkycycgZmFpbGVkLCBhcyBkaXNrIGlzIGZ1bGwuAEhhbmRsZXIgcmVwb3J0ZWQgZXJyb3IgJWQgLSAlcwBJbmNvcnJlY3QgaW5mb3JtYXRpb24gaW4gZmlsZTogJyUtLjIwMHMnAENhbid0IG9wZW4gZmlsZTogJyUtLjIwMHMnIChPUyBlcnJubzogJWQgLSAlcykAQ2FuJ3QgZmluZCBmaWxlOiAnJS0uMjAwcycgKE9TIGVycm5vOiAlZCAtICVzKQAnJS0uMTkycycgaXMgbG9ja2VkIGFnYWluc3QgY2hhbmdlIChPUyBlcnJubzogJWQgLSAlcykAQ2Fubm90IGxvYWQgZnJvbSAlcy4lcy4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZCEARXJyb3IgaW4gZGlhZ25vc3RpY3MgYXJlYTogTVktJTA2ZCAtICVzAEluY29ycmVjdCBkZWZpbml0aW9uIG9mIHRhYmxlICVzLiVzOiBleHBlY3RlZCBjb2x1bW4gJyVzJyBhdCBwb3NpdGlvbiAlZCwgZm91bmQgJyVzJy4AVGhlIGNvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBDcmVhdGVkIHdpdGggTXlTUUwgJWQsIG5vdyBydW5uaW5nICVkLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAENvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkACIAUmVwbGljYSBTUUwgdGhyZWFkIGFib3J0ZWQuIENhbid0IGV4ZWN1dGUgaW5pdF9yZXBsaWNhIHF1ZXJ5LCBNWS0lMDZkIC0gJyVzJwBDb2x1bW4gJWQgb2YgdGFibGUgJyUtLjE5MnMuJS0uMTkycycgY2Fubm90IGJlIGNvbnZlcnRlZCBmcm9tIHR5cGUgJyUtLjMycycgdG8gdHlwZSAnJS0uMzJzJwBSZXBsaWNhIFNRTCB0aHJlYWQgaWdub3JlZCB0aGUgcXVlcnkgYmVjYXVzZSBvZiByZXBsaWNhdGUtKi10YWJsZSBydWxlcwBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEFVVE9fUE9TSVRJT04gPSAxLCBhdCBmaWxlICUuNDAwcywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPTiwgYXQgZmlsZSAlLjQwMHMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgR1RJRC10cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRiwgYXQgZmlsZSAlLjQwMHMsIHBvc2l0aW9uICVsbGQuAFNpbXVsYXRlZCBlcnJvcgAlcwBBdWRpdCBMb2cgZmlsdGVyaW5nIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQuAEZhaWxlZCB0byBvcGVuIHRoZSAlcyBmaWx0ZXIgdGFibGVzLgBGYWlsZWQgdG8gb3BlbiAnJXMuJXMnICVzIHRhYmxlLgBGaWx0ZXIgbmFtZSBjYW5ub3QgYmUgZW1wdHkuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSB1c2VyIG5hbWUuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyVzJ0AnJXMnLiBTVVBFUiBvciBBVURJVF9BRE1JTiBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb24ATm8ga2V5cmluZyBpbnN0YWxsZWQuAEludmFsaWQgY2hhcmFjdGVyIGluIHRoZSBob3N0IG5hbWUuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGhhcyBub3QgYmVlbiBzZXQ7IGl0IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIFVzZSBhdWRpdF9sb2dfZW5jcnlwdGlvbl9wYXNzd29yZF9nZXQgdG8gb2J0YWluIHRoZSBwYXNzd29yZCBvciBhdWRpdF9sb2dfZW5jcnlwdGlvbl9wYXNzd29yZF9zZXQgdG8gc2V0IGEgbmV3IG9uZS4AQ291bGQgbm90IGNyZWF0ZSBBRVMga2V5LiBPcGVuU1NMJ3MgRVZQX0J5dGVzVG9LZXkgZnVuY3Rpb24gZmFpbGVkLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBjYW5ub3QgYmUgZmV0Y2hlZCBmcm9tIHRoZSBrZXlyaW5nLiBQYXNzd29yZCB1c2VkIHNvIGZhciBpcyB1c2VkIGZvciBlbmNyeXB0aW9uLgBDb3VsZCBub3QgcmVpbml0aWFsaXplIGF1ZGl0IGxvZyBmaWx0ZXJzLgBVc2VyIGNhbm5vdCBiZSBlbXB0eS4ARmlyc3QgY2hhcmFjdGVyIG9mIHRoZSB1c2VyIG5hbWUgbXVzdCBiZSBhbHBoYW51bWVyaWMuAFNwZWNpZmllZCBmaWx0ZXIgaGFzIG5vdCBiZWVuIGZvdW5kLgBDYW5ub3QgdXBncmFkZSBzZXJ2ZXIgZWFybGllciB0aGFuIDUuNyB0byA4LjAAJXMgKG15c3FsZCAlcykgaW5pdGlhbGl6aW5nIG9mIHNlcnZlciBpbiBwcm9ncmVzcyBhcyBwcm9jZXNzICVsdQAlcyAobXlzcWxkICVzKSBpbml0aWFsaXppbmcgb2Ygc2VydmVyIGhhcyBjb21wbGV0ZWQAQ2Fubm90IGJvb3Qgc2VydmVyIHZlcnNpb24gJWx1IG9uIGRhdGEgZGlyZWN0b3J5IGJ1aWx0IGJ5IHZlcnNpb24gJWxsdS4gRG93bmdyYWRlIGlzIG5vdCBzdXBwb3J0ZWQAUmVjZWl2ZWQgU0hVVERPV04gZnJvbSB1c2VyICVzLiBTaHV0dGluZyBkb3duIG15c3FsZCAoVmVyc2lvbjogJXMpLgBUaGUgcGx1Z2luIGVuY291bnRlcmVkIGEgY3JpdGljYWwgZXJyb3IgYW5kIHdpbGwgYWJvcnQ6ICVzAEludmFsaWQgbWF0Y2ggbW9kZSBmbGFnIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIHVzZSBvZiByZXBsaWNhdGlvbiBmaWx0ZXJzIHdpdGggWEEgdHJhbnNhY3Rpb25zIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBjYW4gbGVhZCB0byBhbiB1bmRlZmluZWQgc3RhdGUgaW4gdGhlIHJlcGxpY2EuAENhbm5vdCB1cGRhdGUgR1RJRF9QVVJHRUQgd2l0aCB0aGUgR3JvdXAgUmVwbGljYXRpb24gcGx1Z2luIHJ1bm5pbmcAJyVzLiVzJyB0YWJsZSBkZWZpbml0aW9uIGhhcyBub3QgYmVlbiB1cGdyYWRlZDsgUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBFeGVjdXRpb24gb2Ygc2VydmVyLXNpZGUgU1FMIHN0YXRlbWVudCAnJXMnIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgPSAlZCwgZXJyb3IgbWVzc2FnZSA9ICclcycuAE5vIHBhdGhzIGFsbG93ZWQgZm9yIHNoYXJlZCBsaWJyYXJ5LgBGdW5jdGlvbiAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMuAEdvdCBFcnJvcjogJWxkIGZyb20gU2V0RXZlbnQuAEVycm9yIGFsbG9jYXRpbmcgU1NMIEJJTy4AJXMAT25lIG9yIHNldmVyYWwgbG9jYXRpb25zIHdlcmUgaW5hY2Nlc3NpYmxlIHdoaWxlIGNoZWNraW5nIFBJRCBmaWxlcGF0aC4AQ3VycmVudGx5IHVua25vd24gdmFyaWFibGUgJyVzJyB3YXMgcmVhZCBmcm9tIHRoZSBwZXJzaXN0ZWQgY29uZmlnIGZpbGUuAEZhdGFsIGVycm9yIGluIGRlZmF1bHRzIGhhbmRsaW5nLiBQcm9ncmFtIGFib3J0ZWQhAER1cGxpY2F0ZSB2YXJpYWJsZSBuYW1lICclcycuAEZhaWxlZCB0byBpbml0aWFsaXplIHN5c3RlbSB2YXJpYWJsZXMuAFZhcmlhYmxlIG5hbWUgJyVzJyBub3QgZm91bmQuAFNvbWUgKCVkKSB0aHJlYWRzIGFyZSBzdGlsbCBhY3RpdmUAJXMAU291cmNlIHRhYmxlc3BhY2UgaXMgZW5jcnlwdGVkIGJ1dCB0YXJnZXQgdGFibGVzcGFjZSBpcyBub3QuAFdhaXRpbmcgZm9yIHRhYmxlc3BhY2VfYWx0ZXJfZW5jcnlwdF90aHJlYWQgdG8gZXhpdAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlczogQ291bGQgbm90IGFkZCBzdXBwcmVzc2lvbiBydWxlIGZvciBjb2RlICIlcyIuIFJ1bGUtc2V0IG1heSBiZSBmdWxsLCBvciBjb2RlIG1heSBub3QgY29ycmVzcG9uZCB0byBhbiBlcnJvci1sb2cgbWVzc2FnZS4ASW52YWxpZCB2YWx1ZSBmb3IgY29tbWFuZCBsaW5lIG9wdGlvbiBiaW5kLWFkZHJlc3NlczogJyVzJwBJZ25vcmluZyB0aGUgQEBnbG9iYWwucmVsYXlfbG9nX3NwYWNlX2xpbWl0IG9wdGlvbiBiZWNhdXNlIEBAZ2xvYmFsLnJlbGF5X2xvZ19wdXJnZSBpcyBkaXNhYmxlZC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIEdUSUQgZXhlY3V0aW9uIGluZm9ybWF0aW9uOiAlcwBNZXNzYWdlIHJlY2VpdmVkIHdpdGhvdXQgYSBwcm9wZXIgZ3JvdXAgY29vcmRpbmF0b3IgbW9kdWxlLgBBIG1lbWJlciBjYW5ub3Qgam9pbiB0aGUgZ3JvdXAgd2hpbGUgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiAnJXMnIGlzIHJ1bm5pbmcgaW5pdGlhdGVkIGJ5ICclcycuAEEgbWVtYmVyIGlzIGpvaW5pbmcgdGhlIGdyb3VwIHdoaWxlIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb24gJyVzJyBpcyBydW5uaW5nIGluaXRpYXRlZCBieSAnJXMnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AQ2FuJ3Qgc3RhcnQgJXMgZm9yIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiAnJXMnIGluaXRpYXRlZCBieSAnJXMnLgBBIHByaW1hcnkgZWxlY3Rpb24gd2FzIGludm9rZWQgYnV0IHRoZSByZXF1ZXN0ZWQgcHJpbWFyeSBtZW1iZXIgaXMgbm90IGluIHRoZSBncm91cC4gUmVxdWVzdCBpZ25vcmVkLgBFcnJvciB3aGlsZSBzZW5kaW5nIG1lc3NhZ2UuIENvbnRleHQ6ICVzAEVycm9yIHdoaWxlIGV4ZWN1dGluZyBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uOiAlcwBDb25maWd1cmF0aW9uIG9wZXJhdGlvbiAnJXMnIHRlcm1pbmF0ZWQuICVzAFN0YXJ0aW5nIGdyb3VwIG9wZXJhdGlvbiBsb2NhbCBleGVjdXRpb246ICVzAFRlcm1pbmF0aW9uIG9mIGdyb3VwIG9wZXJhdGlvbiBsb2NhbCBleGVjdXRpb246ICVzAEEgY29uZmlndXJhdGlvbiBjaGFuZ2Ugd2FzIGtpbGxlZCBpbiB0aGlzIG1lbWJlci4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAgYXMgaXRzIGNvbmZpZ3VyYXRpb24gbWF5IGhhdmUgZGl2ZXJnZWQuAFRoZXJlIHdhcyBhbiBpc3N1ZSBvbiB0aGUgcHJpbWFyeSBlbGVjdGlvbiBwcm9jZXNzOiAlcyBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AVGhlcmUgd2FzIGFuIGlzc3VlIHdoZW4gc3RvcHBpbmcgYSBwcmV2aW91cyBlbGVjdGlvbiBwcm9jZXNzOiAlcwBJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGluaXRpYWxpemUgc3RhZ2UgbG9nZ2luZyBmb3IgdGhpcyB0YXNrLiBUaGUgb3BlcmF0aW9uIHdpbGwgc3RpbGwgcnVuIHdpdGhvdXQgc3RhZ2UgdHJhY2tpbmcuAENvdWxkIG5vdCBleGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgR3JvdXAgUmVwbGljYXRpb24gVURGIGZ1bmN0aW9uOiAlcy4gQ2hlY2sgaWYgdGhlIGZ1bmN0aW9uIGlzIGFscmVhZHkgcHJlc2VudCwgaWYgc28sIHRyeSB0byByZW1vdmUgaXQAQ291bGQgbm90IHVuaW5zdGFsbCBHcm91cCBSZXBsaWNhdGlvbiBVREYgZnVuY3Rpb25zLiBUcnkgdG8gcmVtb3ZlIHRoZW0gbWFudWFsbHkgaWYgcHJlc2VudC4AQ291bGQgbm90IGV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBvZiBHcm91cCBSZXBsaWNhdGlvbiBVREYgZnVuY3Rpb25zLiBDaGVjayBmb3Igb3RoZXIgZXJyb3JzIGluIHRoZSBsb2cgYW5kIHRyeSB0byByZWluc3RhbGwgdGhlIHBsdWdpbgBUaGUgZnVuY3Rpb24gJyVzJyBmYWlsZWQuICVzAERvIG5vdCBzcGVjaWZ5IHRoZSBjdXJyZW50IHBhc3N3b3JkIHdoaWxlIGNoYW5naW5nIGl0IGZvciBvdGhlciB1c2Vycy4ASW5jb3JyZWN0IGN1cnJlbnQgcGFzc3dvcmQuIFNwZWNpZnkgdGhlIGNvcnJlY3QgcGFzc3dvcmQgd2hpY2ggaGFzIHRvIGJlIHJlcGxhY2VkLgBDdXJyZW50IHBhc3N3b3JkIG5lZWRzIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgUkVQTEFDRSBjbGF1c2UgaW4gb3JkZXIgdG8gY2hhbmdlIGl0LgBWYXJpYWJsZSAnJS0uNjRzJyBjYW4ndCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclLS4yMDBzJwAlcyB3YXMgdW5hYmxlIHRvIGNyZWF0ZSBhIG5ldyBXaW5kb3dzIHJlZ2lzdHJ5IGtleSAlcyBmb3IgJXM7IGNvbnRpbnVpbmcgdG8gdXNlIHRoZSBwcmV2aW91cyBpZGVudC4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGFyZSBub3QgYWxsb3dlZCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBvciBpbnNpZGUgYSBwcm9jZWR1cmUgaW4gYSB0cmFuc2FjdGlvbmFsIGNvbnRleHQgd2hlbiBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdD1TVEFURU1FTlQuAFNlY29uZGFyeSBlbmdpbmUgb3BlcmF0aW9uIGZhaWxlZC4gJXMuAERETHMgb24gYSB0YWJsZSB3aXRoIGEgc2Vjb25kYXJ5IGVuZ2luZSBkZWZpbmVkIGFyZSBub3QgYWxsb3dlZC4AVW5hYmxlIHRvIGFsbG9jYXRlIHRlbXBvcmFyeSB0YWJsZXNwYWNlIGZvciB0aGlzIHNlc3Npb24AVW5hYmxlIHRvIHN3aXRjaCBzZWN1cml0eSBjb250ZXh0IHRvIHVzZXI6ICVzAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBBTFRFUiBUQUJMRSAuLi4gQUREIENPTFVNTiAuLiB3aXRoIGV4cHJlc3Npb24gYXMgREVGQVVMVC4ARXJyb3IgaW4gcGFyc2luZyAlcyAnJXMnLiclcycgZHVyaW5nIHVwZ3JhZGUuICVzAFRoZSBkZXNpZ25hdGVkIGRhdGEgZGlyZWN0b3J5ICVzIGlzIHVudXNhYmxlLiBZb3UgY2FuIHJlbW92ZSBhbGwgZmlsZXMgdGhhdCB0aGUgc2VydmVyIGFkZGVkIHRvIGl0LgBHcm91cCBzZWFyY2ggcmViaW5kaW5nIHZpYSByb290IEROOiAlcyAARXJyb3IgaW5zdGFsbGluZyBwbHVnaW4gJyVzJzogJXMARXJyb3IgdW5pbnN0YWxsaW5nIHBsdWdpbiAnJXMnOiAlcwBQYXJ0aXRpb25lZCB0YWJsZSAnJXMnIGlzIG5vdCBhbGxvd2VkIHRvIHVzZSBzaGFyZWQgdGFibGVzcGFjZSAnJXMnLiBQbGVhc2UgbW92ZSBhbGwgcGFydGl0aW9ucyB0byBmaWxlLXBlci10YWJsZSB0YWJsZXNwYWNlcyBiZWZvcmUgdXBncmFkZS4AQ2Fubm90IGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgdGFibGVzcGFjZSBuYW1lZCAnJXMnLgAlczogJ3V0ZjgnIGlzIGN1cnJlbnRseSBhbiBhbGlhcyBmb3IgdGhlIGNoYXJhY3RlciBzZXQgVVRGOE1CMywgYnV0IHdpbGwgYmUgYW4gYWxpYXMgZm9yIFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgaW4gb3JkZXIgdG8gYmUgdW5hbWJpZ3VvdXMuACVzOiBUaGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbnN0ZWFkLgAlczogJyUtLjY0cycgaXMgYSBjb2xsYXRpb24gb2YgdGhlIGRlcHJlY2F0ZWQgY2hhcmFjdGVyIHNldCBVVEY4TUIzLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgBUaGUgU1NMIGxpYnJhcnkgZnVuY3Rpb24gJXMgZmFpbGVkLiBUaGlzIGlzIHR5cGljYWxseSBjYXVzZWQgYnkgdGhlIFNTTCBsaWJyYXJ5IGFscmVhZHkgYmVpbmcgdXNlZC4gQXMgYSByZXN1bHQgdGhlIFNTTCBtZW1vcnkgYWxsb2NhdGlvbiB3aWxsIG5vdCBiZSBpbnN0cnVtZW50ZWQuAERpc2FibGluZyBAQGNvcmVfZmlsZSBiZWNhdXNlIEBAaW5ub2RiX2J1ZmZlcl9wb29sX2luX2NvcmVfZmlsZSBpcyBkaXNhYmxlZCwgeWV0IE1BRFZfRE9OVERVTVAgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtAERpc2FibGluZyBAQGNvcmVfZmlsZSBiZWNhdXNlIEBAaW5ub2RiX2J1ZmZlcl9wb29sX2luX2NvcmVfZmlsZSBpcyBkaXNhYmxlZCwgeWV0IG1hZHZpc2UoJXAsJXp1LCVzKSBmYWlsZWQgd2l0aCAlcwBDb3VsZCBub3QgY2hhbmdlIGNvbHVtbiAnJXMnIG9mIHRhYmxlICclcycuIFRoZSByZXN1bHRpbmcgc2l6ZSBvZiBpbmRleCAnJXMnIHdvdWxkIGV4Y2VlZCB0aGUgbWF4IGtleSBsZW5ndGggb2YgJWQgYnl0ZXMuAHNxbF9tb2RlPTB4JTA4eCBoYXMgYmVlbiByZW1vdmVkIGFuZCB3aWxsIGJlIGlnbm9yZWQARmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgYSBwb29sIG9mIHNpemUgJXp1IGJ5dGVzLiBXaWxsIHdhaXQgZm9yICV6dSBzZWNvbmRzIGZvciBhIHRocmVhZCB0byBmcmVlIGEgcmVzb3VyY2UuAE51bWJlciBvZiBwb29sczogJXp1AFVzaW5nIHVuZG8gdGFibGVzcGFjZSAnJXMnLgAlcyBVbmFibGUgdG8gc2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0YWJsZXNwYWNlICclcycgdG8gdGhlIGRhdGEgZGljdGlvbmFyeQBDYW5ub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZSAlcyBhdCAlcyBiZWNhdXNlICVkIHVuZG8gdGFibGVzcGFjZXMgYWxyZWFkeSBleGlzdC4ARXJyb3IgJWQgb3BlbmluZyBuZXdseSBjcmVhdGVkIHVuZG8gdGFibGVzcGFjZSAlcy4AU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9CVUZfRVJST1IAU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9NRU1fRVJST1IAU0RJIENvbXByZXNzaW9uIGZhaWxlZCwgWl9TVFJFQU1fRVJST1IAJXMARXhwZWN0ZWQgdG8gZmluZCB1bmRvIHRhYmxlc3BhY2UgJyVzJyBmb3IgU3BhY2UgSUQ9JWx1LCBidXQgZm91bmQgJyVzJyBpbnN0ZWFkISAgRGlkIHlvdSBjaGFuZ2UgaW5ub2RiX3VuZG9fZGlyZWN0b3J5PwBDYW5ub3QgdXNlICVzIGFzIGFuIHVuZG8gdGFibGVzcGFjZSBiZWNhdXNlIGl0IGRvZXMgbm90IGVuZCB3aXRoICcuaWJ1Jy4AaWJfdW5kb190cnVuY19lbXB0eV9maWxlAGliX3VuZG9fdHJ1bmNfYmVmb3JlX2RkX3VwZGF0ZQBpYl91bmRvX3RydW5jX2JlZm9yZV9kb25lX2xvZ2dpbmcAaWJfdW5kb190cnVuY19iZWZvcmVfcnNlZ3MAJXMgRmFpbGVkIHRvIGZpbmlzaCB0cnVuY2F0aW5nIFVuZG8gVGFibGVzcGFjZSAnJXMnAFRoZSBzZXR0aW5nIElOTk9EQl9VTkRPX1RBQkxFU1BBQ0VTIGlzIGRlcHJlY2F0ZWQgYW5kIGlzIG5vIGxvbmdlciB1c2VkLiAgSW5ub0RCIGFsd2F5cyBjcmVhdGVzIDIgdW5kbyB0YWJsZXNwYWNlcyB0byBzdGFydCB3aXRoLiBJZiB5b3UgbmVlZCBtb3JlLCBwbGVhc2UgdXNlIENSRUFURSBVTkRPIFRBQkxFU1BBQ0UuAFRoZSBkaXJlY3RvcnkgZm9yIHRhYmxlc3BhY2UgJXMgZG9lcyBub3QgZXhpc3Qgb3IgaXMgaW5jb3JyZWN0LgAlcwBDbG9uZSBkb25vciByZXBvcnRlZCA6ICUuNTEycy4AQ2xvbmUgcmVjZWl2ZWQgdW5leHBlY3RlZCByZXNwb25zZSBmcm9tIGRvbm9yIDogJS41MTJzLgBDbGllbnQ6ICUuNTEycy4AU2VydmVyOiAlLjUxMnMuAEZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBwZXJmb3JtYW5jZSBzY2hlbWEgdGFibGVzIHNlcnZpY2UuAEZhaWxlZCB0byBhZGQgdGhyZWFkIHBvb2wgcGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlcy4ARmFpbGVkIHRvIHNldCBkYXRhZGlyIHRvICclLS4yMDBzJyAoT1MgZXJybm86ICVkIC0gJXMpAFRoZSBpbm5vZGJfdW5kb19kaXJlY3RvcnkgaXMgbm90IGFsbG93ZWQgdG8gYmUgYW4gYW5jZXN0b3Igb2YgdGhlIGRhdGFkaXIuAEZhaWxlZCB0byBmZXRjaCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAENhbid0IGZpbmQga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGluIHRoZSBzZXJ2ZXIgbG9nIGlmIGEga2V5cmluZyBpcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxseS4ARmV0Y2hlZCBhbiBpbnZhbGlkIGtleSBmcm9tIGtleXJpbmcuAEVycm9yIHJlYWRpbmcgYSByZXBsaWNhdGlvbiBsb2cgZW5jcnlwdGlvbiBoZWFkZXI6ICVzLgBGYWlsZWQgdG8gcm90YXRlIHNvbWUgbG9ncyBhZnRlciBjaGFuZ2luZyBiaW5sb2cgZW5jcnlwdGlvbiBzZXR0aW5ncy4gUGxlYXNlIGZpeCB0aGUgcHJvYmxlbSBhbmQgcm90YXRlIHRoZSBsb2dzIG1hbnVhbGx5LgBLZXkgJXMgZXhpc3RzIHVuZXhwZWN0ZWQuAEZhaWxlZCB0byBnZW5lcmF0ZSBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHN0b3JlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gcmVtb3ZlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5sb2cgZW5jcnlwdGlvbiBtYXN0ZXIga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBpbml0aWFsaXplIGJpbmxvZyBlbmNyeXB0aW9uLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byByb3RhdGUgYmlubG9nIGVuY3J5cHRpb24gbWFzdGVyIGtleSBhdCBzdGFydHVwLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAElnbm9yaW5nIGJpbmxvZ19yb3RhdGVfZW5jcnlwdGlvbl9tYXN0ZXJfa2V5X2F0X3N0YXJ0dXAgYmVjYXVzZSBiaW5sb2dfZW5jcnlwdGlvbiBvcHRpb24gaXMgZGlzYWJsZWQuAEludmFsaWQgdmFsdWUgZm9yIGNvbW1hbmQgbGluZSBvcHRpb24gYWRtaW4tYWRkcmVzczogJyVzJwBBZG1pbiBpbnRlcmZhY2UgcmVhZHkgZm9yIGNvbm5lY3Rpb25zLCBhZGRyZXNzOiAnJXMnICBwb3J0OiAlZABDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBhZG1pbiBjb25uZWN0aW9ucyAoZXJybm89ICVkKQBSRVRBSU4gQ1VSUkVOVCBQQVNTV09SRCBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcGFzc3dvcmRzLgBESVNDQVJEIE9MRCBQQVNTV09SRCBpZ25vcmVkIGZvciB1c2VyICclcydAJyVzJyBhcyBpdHMgYXV0aGVudGljYXRpb24gcGx1Z2luICVzIGRvZXMgbm90IHN1cHBvcnQgbXVsdGlwbGUgcGFzc3dvcmRzLgBFbXB0eSBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGFzIHNlY29uZCBwYXNzd29yZCBmb3IgdXNlciAnJXMnQCclcycuAEN1cnJlbnQgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBmb3IgdXNlciAnJXMnQCclcycgYmVjYXVzZSBhdXRoZW50aWNhdGlvbiBwbHVnaW4gaXMgYmVpbmcgY2hhbmdlZC4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIG5ldyBwYXNzd29yZCBpcyBlbXB0eS4AQ2FuIG5vdCByZWFkIGFuZCBwcm9jZXNzIHZhbHVlIG9mIFVzZXJfYXR0cmlidXRlcyBjb2x1bW4gZnJvbSBteXNxbC51c2VyIHRhYmxlIGZvciB1c2VyOiAnJXNAJXMnOyBJZ25vcmluZyB1c2VyLgBTZWNvbmQgcGFzc3dvcmQgd2FzIHVzZWQgZm9yIGxvZ2luIGJ5IHVzZXI6ICclcydAJyVzJy4AU2Vjb25kIHBhc3N3b3JkIHdhcyB1c2VkIGZvciBsb2dpbiBieSB1c2VyOiAnJXMnQCclcycuAFNlY29uZCBwYXNzd29yZCB3YXMgdXNlZCBmb3IgbG9naW4gYnkgdXNlcjogJyVzJ0AnJXMnLgBFcnJvciBzZW5kaW5nIHRyYW5zYWN0aW9uICclZDolbGxkJyBwcmVwYXJlZCBtZXNzYWdlIGZyb20gc2Vzc2lvbiAnJXUnLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gJyVkOiVsbGQnIGZvciBjb21taXQgb24gc2Vzc2lvbiAnJXUnIGFmdGVyIGJlaW5nIHByZXBhcmVkIG9uIGFsbCBncm91cCBtZW1iZXJzLgBUcmFuc2FjdGlvbiAnJWQ6JWxsZCcgYWxyZWFkeSBleGlzdHMgb24gR3JvdXAgUmVwbGljYXRpb24gY29uc2lzdGVuY3kgbWFuYWdlciB3aGlsZSBiZWluZyByZWdpc3RlcmVkIGFmdGVyIGNvbmZsaWN0IGRldGVjdGlvbi4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gJyVkOiVsbGQnIG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgYWZ0ZXIgY29uZmxpY3QgZGV0ZWN0aW9uLgBFcnJvciByZWdpc3RlcmluZyB0cmFuc2FjdGlvbiAnJWQ6JWxsZCcgZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3IgYmVpbmcgcHJlcGFyZWQgb24gYWxsIGdyb3VwIG1lbWJlcnMuAEVycm9yIG9uIHRyYW5zYWN0aW9uICclZDolbGxkJyBmcm9tIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBiZWluZyBwcmVwYXJlZCBvbiBhbGwgZ3JvdXAgbWVtYmVycy4AVHJhbnNhY3Rpb24gJyVkOiVsbGQnIGRvZXMgbm90IGV4aXN0IG9uIEdyb3VwIFJlcGxpY2F0aW9uIGNvbnNpc3RlbmN5IG1hbmFnZXIgd2hpbGUgcmVjZWl2aW5nIHJlbW90ZSB0cmFuc2FjdGlvbiBwcmVwYXJlLgBFcnJvciByZWxlYXNpbmcgdHJhbnNhY3Rpb24gJyVkOiVsbGQnIGZvciBleGVjdXRpb24gb24gc2Vzc2lvbiAnJXUnIGFmdGVyIGl0cyBkZXBlbmRlbmNpZXMgZGlkIGNvbXBsZXRlIGNvbW1pdC4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3IgaXRzIGRlcGVuZGVuY2llcyB0byBjb21wbGV0ZSBjb21taXQuAEVycm9yIG9uIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBpdHMgZGVwZW5kZW5jaWVzIHRvIGNvbXBsZXRlIGNvbW1pdC4ARXJyb3IgcmVnaXN0ZXJpbmcgdHJhbnNhY3Rpb24gZnJvbSBzZXNzaW9uICcldScgdG8gd2FpdCBmb3Igc3luYyBiZWZvcmUgZXhlY3V0aW9uLgBFcnJvciBzZW5kaW5nIHN5bmMgYmVmb3JlIGV4ZWN1dGlvbiBtZXNzYWdlIGZyb20gc2Vzc2lvbiAnJXUnLgBFcnJvciBvbiB0cmFuc2FjdGlvbiBmcm9tIHNlc3Npb24gJyV1JyB3aGlsZSB3YWl0aW5nIGZvciBzeW5jIGJlZm9yZSBleGVjdXRpb24uAEVycm9yIHJlbGVhc2luZyB0cmFuc2FjdGlvbiBmb3IgZXhlY3V0aW9uIG9uIHNlc3Npb24gJyV1JyBhZnRlciB3YWl0IGZvciBzeW5jIGJlZm9yZSBleGVjdXRpb24uAEVycm9yIHdhaXRpbmcgZm9yIGdyb3VwIGV4ZWN1dGVkIHRyYW5zYWN0aW9ucyBjb21taXQgb24gc2Vzc2lvbiAnJXUnLgBUaGVyZSdzIG5vIHVuaXQgb2YgbWVhc3VyZSBuYW1lZCAnJXMnLgBUaGUgZnVuY3Rpb24gJXMgdXNlcyAlcyBhcyBhIHVuaXQsIGJ1dCB3YXMgcGFzc2VkIGdlb21ldHJ5IHdpdGhvdXQgdW5pdHMgKCJTUklEIDAiKS4gQ29udmVyc2lvbiBpcyBub3QgcG9zc2libGUuAENvdWxkIG5vdCBwYXJzZSBrZXktdmFsdWUgcGFpcnMgaW4gcHJvcGVydHkgc3RyaW5nICclcycAUHJvcGVydHkga2V5ICclcycgaXMgaW52YWxpZC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoZSBncm91cF9yZXBsaWNhdGlvbl9hcHBsaWVyIGNoYW5uZWwgcmVjZWl2ZWQgdHJhbnNhY3Rpb25zIHNldC4gVW5hYmxlIHRvIGVuc3VyZSB0aGUgZXhlY3V0aW9uIG9mIGdyb3VwIHRyYW5zYWN0aW9ucyByZWNlaXZlZCBkdXJpbmcgcmVjb3ZlcnkuAEZhaWxlZCB0byBlbmNyeXB0IGNvbnRlbnQgdG8gd3JpdGUgaW50byBiaW5sb2cgZmlsZTogJXMuAENhbm5vdCBnZXQgdGhlIHNlcnZlciB2ZXJzaW9uIG51bWJlciBmcm9tIHRoZSBkaWN0aW9uYXJ5IHRhYmxlc3BhY2UgaGVhZGVyLgBDYW5ub3Qgc2V0IHRoZSBzZXJ2ZXIgdmVyc2lvbiBudW1iZXIgaW4gdGhlIGRpY3Rpb25hcnkgdGFibGVzcGFjZSBoZWFkZXIuAFVwZ3JhZGluZyB0aGUgc2VydmVyIGZyb20gc2VydmVyIHZlcnNpb24gJyV1JyBpcyBub3Qgc3VwcG9ydGVkLgBNeVNRTCBzZXJ2ZXIgdXBncmFkaW5nIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScuAFRoZSBjZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uIGNvdWxkIG5vdCBiZSBzZXQgaW4gdGhpcyBzZXJ2ZXI6ICclcycAQSByZXF1ZXN0IHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAgd2FzIGlzc3VlZCB3aGVuIHRoZSBtZW1iZXIgaXMgbGVhdmluZyB0aGUgZ3JvdXAuAFRyaWdnZXIgJXMuJXMgZm9yIHRhYmxlICVzLiVzIGlzIGxpc3RlZCBpbiB3cm9uZyBvcmRlci4gUGxlYXNlIGRyb3AgYW5kIHJlY3JlYXRlIGFsbCB0cmlnZ2VycyBmb3IgdGhlIHRhYmxlLgAlcwBTcGVjaWFsIGhhbmRsaW5nIGZvciBncm91cCBzZWFyY2gsIHtHQX0gbm90IGZvdW5kAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBVc2VyIG9iamVjdCBoYXMgZ3JvdXAgaW5mb3JtYXRpb24AR3JvdXAgaW5mb3JtYXRpb24gZm91bmQgaW4gbXVsdGlwbGUgdXNlciBvYmplY3RzLiBTZWFyY2ggZmlsdGVyIGNvbmZpZ3VyYXRpb24gaXMgaW5jb3JyZWN0LgBVc2VyIGdyb3VwIHJldHJpZXZhbDogbm8gZ3JvdXAgYXR0cmlidXRlIGZvdW5kLiBJbmNvcnJlY3QgZ3JvdXAgc2VhcmNoIGF0dHJpYnV0ZS4gAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBHcm91cCBhdHRyaWJ1dGUgdmFsdWVzIGlzIE5VTEwuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogcGFyc2luZyBETiBmYWlsZWQuIABVc2VyIGdyb3VwIHJldHJpZXZhbDogR3JvdXAgb2JqZWN0IGhhcyB1c2VyIGluZm9ybWF0aW9uAFJlc2VydmVkIHBvcnQgZm9yIGxkYXBzIHVzaW5nIGxkYXBzAEdldCB1c2VyIHByb3h5AEdldCB1c2VyIHByb3h5OiBVc2VyIGRvZXNuJ3QgYmVsb25ncyB0byBhbnkgZ3JvdXAsIHVzZXIgbmFtZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYXV0aGVudGljYXRlZCB1c2VyLgBHZXQgdXNlciBwcm94eTogY29uZmlndXJlZCBtYXBwaW5nIGluZm86ICVzAEdldCB1c2VyIHByb3h5OiBVc2VyIGRvZXNuJ3QgaGF2ZSBncm91cCBtYXBwaW5nIGluZm9ybWF0aW9uLCBGaXJzdCBMREFQIGdyb3VwIHdpbGwgYmUgdHJlYXRlZCBhcyBhdXRoZW50aWNhdGVkIHVzZXIuAFByb2Nlc3MgZ3JvdXAgcHJveHkgbWFwcGluZwBDaGVjayBkZWxpbWl0ZXIgYWZ0ZXIgcXVvdGUAUHJvY2Vzc2luZyBkZWxpbWl0ZXIAUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIHNlcGFyYXRvciA9IG5vdCBmb3VuZCwgcmVzZXR0aW5nIHBvc2l0aW9uACJQcm9jZXNzaW5nIGRlbGltaXRlciwgZmFpbGVkIHRvIGdldCBkYXRhIGZvciA9IHNlcGFyYXRvciB0cnkgZm9yIHNlcGFyYXRvciAsLiIAUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIHNlcGFyYXRvciAsIG5vdCBmb3VuZCwgcmVzZXR0aW5nIHBvc2l0aW9uAFByb2Nlc3NpbmcgZGVsaW1pdGVyOiBObyBtYXBwaW5nIHNlcGFyYXRvciBpcyBmb3VuZCwgZW5kIG9mIGdyb3VwIGluZm9ybWF0aW9uAEdldHRpbmcgbmV4dCBtYXBwaW5nIGluZm9ybWF0aW9uAFBhcnNpbmcgbWFwcGluZywgY3VycmVudCBzdGF0ZTogJWQgIGRlbGltaXRlciBjaGFyOiAlYyAAUGFyc2luZyBtYXBwaW5nIGluZm8sIExEQVAgZ3JvdXA6ICVzIE15U1FMIHByb3h5OiAlcwBNYXBwaW5nIHBhcnNpbmcgZXJyb3IAVHJpbW1pbmcgbGVmdCBzcGFjZXMAQ2hlY2tpbmcgaWYgY3VycmVudCBjaGFyYWN0ZXJzIGlzIHF1b3RlAE5vdCBkZXNpcmVkIHN0YXRlIG9yIHVuLWRlZmluZWQgc3RhdGVzLgBJbnZhbGlkIHZhbHVlIGZvciBuYW1lZF9waXBlX2Z1bGxfYWNjZXNzX2dyb3VwLgBSZXRyeSB0aGUgc3RhdGVtZW50IHVzaW5nIGEgc2Vjb25kYXJ5IHN0b3JhZ2UgZW5naW5lLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQAQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5hcnkgbG9nIG1hc3RlciBrZXksIHRoZSBjb21iaW5hdGlvbiBvZiBuZXdfbWFzdGVyX2tleV9zZXFubz0ldSwgbWFzdGVyX2tleV9zZXFubz0ldSBhbmQgb2xkX21hc3Rlcl9rZXlfc2Vxbm89JXUgYXJlIHdyb25nLgBGYWlsZWQgdG8gcmVtb3ZlIGF1eGlsaWFyeSBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgY2xlYW51cCBvZiB0aGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHJvdGF0aW9uIHByb2Nlc3MgZGlkIG5vdCBmaW5pc2ggYXMgZXhwZWN0ZWQgYW5kIHRoZSBjbGVhbnVwIHdpbGwgdGFrZSBwbGFjZSB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGlzIHNldCBhcyBtYW5kYXRvcnlfcm9sZXMuIENhbm5vdCBncmFudCB0aGUgJyVzJyBwcml2aWxlZ2UuACclcycgcHJpdmlsZWdlIGZvciBkYXRhYmFzZSAnJXMnIGV4aXN0cyBib3RoIGFzIHBhcnRpYWwgcmV2b2tlIGFuZCBteXNxbC5kYiBzaW11bHRhbmVvdXNseS4gSXQgY291bGQgbWVhbiAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAEFjY2VzcyBkZW5pZWQgZm9yIEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgdG8gZGF0YWJhc2UgJyUtLjE5MnMnLgBBdCBsZWFzdCBvbmUgcGFydGlhbCByZXZva2UgZXhpc3RzIG9uIGEgZGF0YWJhc2UuIFRoZSBzeXN0ZW0gdmFyaWFibGUgJ0BAcGFydGlhbF9yZXZva2VzJyBtdXN0IGJlIHNldCB0byBPTi4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUdXJuaW5nIE9OIHRoZSBzeXN0ZW0gdmFyaWFibGUgJ0BAcGFydGlhbF9yZXZva2VzJy4ARm9yIHVzZXIgJyVzJ0AnJXMnLCBvbmUgb3IgbW9yZSBwcml2aWxlZ2VzIGdyYW50ZWQgdGhyb3VnaCBteXNxbC5kYiBmb3IgZGF0YWJhc2UgJyVzJywgY29uZmxpY3Qgd2l0aCBwYXJ0aWFsIHJldm9rZS4gSXQgY291bGQgbWVhbiAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAEZvciB1c2VyICVzLCBpZ25vcmVkIHJlc3RyaWN0aW9ucyBmb3IgcHJpdmlsZWdlKHMpICclcycgZm9yIGRhdGFiYXNlICclcycgYXMgdGhlc2UgYXJlIG5vdCB2YWxpZCBkYXRhYmFzZSBwcml2aWxlZ2VzLgBGb3IgdXNlciAlcywgaWdub3JlZCByZXN0cmljdGlvbnMgZm9yIHByaXZpbGVnZShzKSAnJXMnIGZvciBkYXRhYmFzZSAnJXMnIGFzIGNvcnJlc3BvbmRpbmcgZ2xvYmFsIHByaXZpbGVnZShzKSBhcmUgbm90IGdyYW50ZWQuACclcycgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9wcm90b2NvbF9qb2luLCBwbGVhc2UgdXNlIGEgTXlTUUwgdmVyc2lvbiBiZXR3ZWVuIDUuNy4xNCBhbmQgdGhpcyBzZXJ2ZXIncyB2ZXJzaW9uAFN0YXJ0ZWQgYXV0by1yZWpvaW4gcHJvY2VkdXJlIGF0dGVtcHQgJWx1IG9mICVsdQBUaW1lb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGEgdmlldyBjaGFuZ2UgZXZlbnQgZHVyaW5nIHRoZSBhdXRvLXJlam9pbiBwcm9jZWR1cmUAQXV0by1yZWpvaW4gcHJvY2VkdXJlIGF0dGVtcHQgJWx1IG9mICVsdSBmaW5pc2hlZC4gTWVtYmVyIHdhcyVzIGFibGUgdG8gam9pbiB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uIG9wdGlvbiB2YWx1ZSAnJWQnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJWQnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBTZXJ2ZXIgc2h1dHRpbmcgZG93biBiZWNhdXNlIHVwZ3JhZGUgaXMgcmVxdWlyZWQsIHlldCBwcm9oaWJpdGVkIGJ5IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICctLXVwZ3JhZGU9Tk9ORScuAFNlcnZlciB1cGdyYWRlIGlzIHJlcXVpcmVkLCBidXQgc2tpcHBlZCBieSBjb21tYW5kIGxpbmUgb3B0aW9uICctLXVwZ3JhZGU9TUlOSU1BTCcuAFNlcnZlciB1cGdyYWRlIHN0YXJ0ZWQgd2l0aCB2ZXJzaW9uICVkLCBidXQgc2VydmVyIHVwZ3JhZGUgb2YgdmVyc2lvbiAlZCBpcyBzdGlsbCBwZW5kaW5nLgBGYWlsZWQgdG8gdXBncmFkZSBzZXJ2ZXIuAFNlcnZlciB1cGdyYWRlIGZyb20gJyVkJyB0byAnJWQnICVzLgBUYWJsZSAnJXMnIHJlcXVpcmVzIHJlcGFpci4AVGFibGUgJyVzJyByZXBhaXIgJXMuAENvdWxkIG5vdCBvcGVuIHNlcnZlciB1cGdyYWRlIGluZm8gZmlsZSAnJXMnIGZvciB3cml0aW5nLiBQbGVhc2UgbWFrZSBzdXJlIHRoZSBmaWxlIGlzIHdyaXRhYmxlLgBVcGdyYWRpbmcgdGhlIHN5cyBzY2hlbWEuAFJ1bm5pbmcgcXVlcmllcyB0byB1cGdyYWRlIE15U1FMIHNlcnZlci4AVXBncmFkaW5nIHN5c3RlbSB0YWJsZSBkYXRhLgBGb3VuZCBlbXB0eSBzeXMgZGF0YWJhc2UuIEluc3RhbGxpbmcgdGhlIHN5cyBzY2hlbWEuAEEgc3lzIHNjaGVtYSBleGlzdHMgd2l0aCBubyBzeXMudmVyc2lvbiB2aWV3LiBJZiB5b3UgaGF2ZSBhIHVzZXIgY3JlYXRlZCBzeXMgc2NoZW1hLCB0aGlzIG11c3QgYmUgcmVuYW1lZCBmb3IgdGhlIHVwZ3JhZGUgdG8gc3VjY2VlZC4AQSBzeXMgc2NoZW1hIGV4aXN0cyB3aXRoIGEgc3lzLnZlcnNpb24gdmlldywgYnV0IGl0IHJldHVybnMgbm8gcmVzdWx0cy4ARm91bmQgb3V0ZGF0ZWQgc3lzIHNjaGVtYSB2ZXJzaW9uICVzLgBUaGUgc3lzIHNjaGVtYSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUgKHZlcnNpb24gJXMpLgBGb3VuZCAlZCBzeXMgJXMsIGJ1dCBleHBlY3RlZCAlZC4gUmUtaW5zdGFsbGluZyB0aGUgc3lzIHNjaGVtYS4AQ2hlY2tpbmcgJyVzJyBzY2hlbWEuAFRvbyBtYW55IGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zIHdoaWxlIGNsZWFyaW5nIHRoZSBEREwgTG9nLiBQbGVhc2UgaW5jcmVhc2UgdGhlIG51bWJlciBvZiBSb2xsYmFjayBTZWdtZW50cy4ARXJyb3IgaW4gRERMIExvZyByZWNvdmVyeSBkdXJpbmcgUG9zdC1SZWNvdmVyeSBwcm9jZXNzaW5nLgBFcnJvciBpbiBQb3N0LVRhYmxlc3BhY2UtRW5jcnlwdGlvbiBkdXJpbmcgUG9zdC1SZWNvdmVyeSBwcm9jZXNzaW5nLgBFcnJvciBpbiBETEwgTG9nIGNsZWFudXAgZHVyaW5nIFBvc3QtRERMIHByb2Nlc3NpbmcuACclcycgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gZnVuY3Rpb24gdGhhdCBtYXkgcmV0dXJuIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBVcGdyYWRlIG9mIGhlbHAgdGFibGVzICVzLgBFcnJvciB3aGVuIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gZXhlY3V0ZSBsb2NhbCB0cmFuc2FjdGlvbnMgaW4gb3JkZXIgYXNzdXJlIHRoZSBncm91cCBjaGFuZ2UgcHJvcGVyIGxvZ2dpbmcAVW5hYmxlIHRvIGxvZyB0aGUgZ3JvdXAgY2hhbmdlIFZpZXcgbG9nIGV2ZW50IGluIGl0cyBleGFjdGlvbiBwb3NpdGlvbiBpbiB0aGUgbG9nLiBUaGlzIHdpbGwgbm90IGhvd2V2ZXIgYWZmZWN0IHRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBwcm9jZXNzIG9yIHRoZSBvdmVyYWxsIHBsdWdpbiBwcm9jZXNzLgBDYW5ub3QgZ3JhbnQgcm9sZXMgdG8gYW4gYW5vbnltb3VzIHVzZXIuAFVuYWJsZSB0byBjcmVhdGUgYSBuZXcgYmlubG9nIGZpbGU6IFRhYmxlIGBteXNxbC5ndGlkX2V4ZWN1dGVkYCBjb3VsZG4ndCBiZSBvcGVuZWQuICVzAE5ldHdvcmsgTmFtZXNwYWNlcyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0AVW5rbm93biBuZXR3b3JrIG5hbWVzcGFjZSAnJXMnAE5ldHdvcmsgbmFtZXNwYWNlIG5vdCBhbGxvd2VkIGZvciB3aWxkY2FyZCBpbnRlcmZhY2UgYWRkcmVzcwBzZXRucygpIGZhaWxlZCB3aXRoIGVycm9yICclcycAV2lsZGNhcmQgYWRkcmVzcyB2YWx1ZSBub3QgYWxsb3dlZCBmb3IgbXVsdGl2YWx1ZWQgYmluZCBhZGRyZXNzAFRoZSBwYXRoIHRvIGEgc3BlY2lhbCBuZXR3b3JrIG5hbWVzcGFjZSBmaWxlIGlzIHRvbyBsb25nLiAoZ290ICV1ID4gbWF4ICV1KQBDYW5ub3QgY3JlYXRlIHRhYmxlc3BhY2UgJyVzJy4gVGhlIGZpbGVwYXRoIGlzIHRvbyBsb25nIGZvciB0aGlzIE9TLgBUaGUgbGFzdCBibG9jayBvZiByZWRvIGhhZCBjb3JydXB0ZWQgZmlyc3RfcmVjX2dyb3VwIGFuZCBiZWNhbWUgZml4ZWQgKCV1IC0+ICV1KS4ARGF0YSBkaWN0aW9uYXJ5IHVwZ3JhZGUgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1JyBjb21wbGV0ZWQuAFNlcnZlciBTU0wgY2VydGlmaWNhdGUgZG9lc24ndCB2ZXJpZnk6ICVzAFRydW5jYXRlZCBhIHVzZXIgbmFtZSBmb3IgJXMgdGhhdCB3YXMgdG9vIGxvbmcgd2hpbGUgcmVhZGluZyB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlcyBmaWxlAFRydW5jYXRlZCBhIGhvc3QgbmFtZSBmb3IgJXMgdGhhdCB3YXMgdG9vIGxvbmcgd2hpbGUgcmVhZGluZyB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlcyBmaWxlAFRoZSB3YWl0X3RpbWVvdXQgcGVyaW9kIHdhcyBleGNlZWRlZCwgdGhlIGlkbGUgdGltZSBzaW5jZSBsYXN0IGNvbW1hbmQgd2FzIHRvbyBsb25nLgAnJXMnIGZvdW5kIG5vdCBlbmNyeXB0ZWQgd2hpbGUgJyVzJyBpcyBPTi4gVHJ5aW5nIHRvIGVuY3J5cHQgaXQgbm93LgBDTE9DS19NT05PVE9OSUMgaXMgdW5zdXBwb3J0ZWQsIHNvIGRvIG5vdCBjaGFuZ2UgdGhlIHN5c3RlbSB0aW1lIHdoZW4gTXlTUUwgaXMgcnVubmluZyAhAGNsb2NrX2dldHRpbWUoKSBmYWlsZWQ6ICVzAFBsdWdpbiAnJXMnIGlzIG5vdCB0byBiZSB1c2VkIGFzIGFuICJlYXJseSIgcGx1Z2luLiBEb24ndCBhZGQgaXQgdG8gLS1lYXJseS1wbHVnaW4tbG9hZCwga2V5cmluZyBtaWdyYXRpb24gZXRjLgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IGluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gaW5zdGFsbCBpdC4AU1FMX0NBTENfRk9VTkRfUk9XUyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgdHdvIHNlcGFyYXRlIHF1ZXJpZXMgaW5zdGVhZC4ARk9VTkRfUk9XUygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBDT1VOVCgqKSBpbnN0ZWFkLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGludm9rZXMgYSB0cmlnZ2VyIG9yIGEgc3RvcmVkIGZ1bmN0aW9uIHRoYXQgbW9kaWZpZXMgYSB0YWJsZSB0aGF0IGhhcyBhIGNvbHVtbiB3aXRoIGEgREVGQVVMVCBleHByZXNzaW9uIHRoYXQgbWF5IHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4ATWVtYmVyIHZlcnNpb24gaXMgcmVhZCBjb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwLgBMb2NrIG9yZGVyIGRpc2FibGVkIChyZWFzb246IGluaXQgZmFpbGVkKS4AS2V5cmluZyBJRCB0aW1lc3RhbXAgdmFsdWUgaXMgaW52YWxpZDogJyVzJwBDYW5ub3QgcHJvY2VzcyBhdWRpdCBsb2cgZmlsZS4gRmlsZSBuYW1lIHRpbWVzdGFtcCB2YWx1ZSBpcyBtaXNzaW5nIG9yIGludmFsaWQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGZvcm1hdDogJyVzJwBDYW5ub3QgcHJvY2VzcyBhdWRpdCBsb2cgZmlsZS4gRmlsZSBuYW1lIGtleXJpbmcgSUQgdmFsdWUgaXMgbWlzc2luZzogJyVzJwBBdWRpdCBsb2cgZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkOiAnJXMnAENvdWxkIG5vdCBvcGVuIGF1ZGl0IGxvZyBmaWxlIGZvciByZWFkaW5nOiAnJXMnAEludmFsaWQgYXVkaXQgbG9nIGZpbGUgY29udGVudDogJyVzJwBDYW5ub3QgcmVhZCBwYXNzd29yZDogJyUuMzJzJy4AQ2Fubm90IHN0b3JlIHBhc3N3b3JkOiAnJS4zMnMnLgBDYW5ub3QgcmVtb3ZlIHBhc3N3b3JkOiAnJS4zMnMnLgAnYXVkaXRfbG9nJyBwYXNzd29yZCBoYXMgYmVlbiBjb3BpZWQgaW50byAnJS4zMnMnIGFuZCB3aWxsIGJlIHJlbW92ZWQgd2l0aCBmaXJzdCBwdXJnZWQgcGFzc3dvcmQuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyUuNjRzJ0AnJS42NHMnLiBSb2xlIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbjogJyUuMzJzJwBDYW4ndCBzdG9yZSBhbiBhcnJheSBvciBhbiBvYmplY3QgaW4gYSBzY2FsYXIga2V5IHBhcnQgb2YgdGhlIGluZGV4ICclLjE5MnMnAENhbm5vdCB1c2UgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbgBFeGNlZWRlZCBtYXggbnVtYmVyIG9mIHZhbHVlcyBwZXIgcmVjb3JkIGZvciBtdWx0aS12YWx1ZWQgaW5kZXggJyUtLjY0cycgYnkgJXUgdmFsdWUocykARXhjZWVkZWQgbWF4IHRvdGFsIGxlbmd0aCBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IGJ5dGVzAERhdGEgdG9vIGxvbmcgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycASW52YWxpZCBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAE91dCBvZiByYW5nZSBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAEVtcHR5IHVzZXIgZG4gb3IgcGFzc3dvcmQgaXMgbm90IGFsbG93ZWQsIG5vdCBhdHRlbXB0aW5nIExEQVAgYmluZC4AR3JvdXBpbmcgb24gdGVtcG9yYWwgaXMgbm9uLWRldGVybWluaXN0aWMgZm9yIHRpbWV6b25lcyBoYXZpbmcgRFNULiBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIHRvIFVUQyBmb3IgdGhpcyBxdWVyeS4AVGhlIGN1cnJlbnQgbGF5b3V0IG9mIHRoZSBBQ0wgdGFibGVzIGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIHNlcnZlcidzIGV4cGVjdGVkIGxheW91dC4gVGhleSdyZSBlaXRoZXIgYWx0ZXJlZCwgbWlzc2luZyBvciBub3QgdXBncmFkZWQgZnJvbSBhIHByZXZpb3VzIHZlcnNpb24uIEhvd2V2ZXIgYSBiZXN0IGVmZm9ydCBhdHRlbXB0IHRvIHJlYWQgZGF0YSBmcm9tIHRoZXNlIHRhYmxlcyB3aWxsIHN0aWxsIGJlIG1hZGUuAExPQ0tfT1JERVI6IEZhaWxlZCB0byB3cml0ZSB0byBmaWxlIDwlcz4uAExPQ0tfT1JERVI6IEZhaWxlZCB0byByZWFkIGZyb20gZmlsZSA8JXM+LgBMT0NLX09SREVSIG1lc3NhZ2U6ICVzAExvY2sgb3JkZXIgZGVwZW5kZW5jaWVzIGZpbGUgPCVzPiAoJWQ6JWQpIC0gKCVkOiVkKSA6ICVzAExvY2sgb3JkZXIgc2Nhbm5lcjogKCVkOiVkKSAtICglZDolZCkgOiAlcwBUaGUgbmV3bHkgY3JlYXRlZCBkYXRhIGRpcmVjdG9yeSAlcyBieSAtLWluaXRpYWxpemUgaXMgdW51c2FibGUuIFlvdSBjYW4gcmVtb3ZlIGl0LgBOby4gb2YgQi10cmVlIGxldmVsIGNyZWF0ZWQgZm9yIGluZGV4ICVzIGhhcyBjcm9zc2VkIHRoZSBwZXJtaXNzaWJsZSBsaW1pdC4gSWYgZGVidWcgb3B0aW9uIGlubm9kYl9saW1pdF9vcHRpbWlzdGljX2luc2VydF9kZWJ1ZyBpcyBiZWluZyB1c2VkIHRyeSB0d2Vha2luZyBpdCB0byBpbmNsdWRlIG1vcmUgcmVjb3JkcyBpbiBhIHBhZ2UuACVzACVzACVzAENsb25lIHJlbW92aW5nIGFsbCB1c2VyIGRhdGEgZm9yIHByb3Zpc2lvbmluZzogJXMATm9uIGlubm9kYiB0YWJsZTogJXMuJXMgaXMgbm90IGNsb25lZCBhbmQgaXMgZW1wdHkuAENsb25lIHNodXR0aW5nIGRvd24gc2VydmVyIGFzIFJFU1RBUlQgZmFpbGVkLiBQbGVhc2Ugc3RhcnQgc2VydmVyIHRvIGNvbXBsZXRlIGNsb25lIG9wZXJhdGlvbi4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIEdUSUQgcHVyZ2VkIHNldC4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4AVGhlcmUgd2FzIGFuIGlzc3VlIHdoZW4gY29uZmlndXJpbmcgdGhlIHJlbW90ZSBjbG9uaW5nIHByb2Nlc3M6ICVzAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIGNsb25pbmcgZnJvbSBhbm90aGVyIHNlcnZlcjogJXMAVGhlcmUgd2FzIGFuIGlzc3VlIHdoZW4gdHJ5aW5nIHRvIGV2YWx1YXRlIHRoZSBiZXN0IGRpc3RyaWJ1dGVkIHJlY292ZXJ5IHN0cmF0ZWd5IHdoaWxlIGpvaW5pbmcuJXMATm8gdmFsaWQgb3IgT05MSU5FIG1lbWJlcnMgZXhpc3QgdG8gZ2V0IHRoZSBtaXNzaW5nIGRhdGEgZnJvbSB0aGUgZ3JvdXAuIEZvciBjbG9uaW5nIGNoZWNrIGlmIGRvbm9ycyBvZiB0aGUgc2FtZSB2ZXJzaW9uIGFuZCB3aXRoIGNsb25lIHBsdWdpbiBpbnN0YWxsZWQgZXhpc3QuIEZvciBpbmNyZW1lbnRhbCByZWNvdmVyeSBjaGVjayBpZiB5b3UgaGF2ZSBkb25vcnMgd2hlcmUgdGhlIHJlcXVpcmVkIGRhdGEgd2FzIG5vdCBwdXJnZWQgZnJvbSB0aGUgYmluYXJ5IGxvZ3MuAFRoZSBncm91cCByZXBsaWNhdGlvbiBwbHVnaW4gY291bGQgbm90IGtpbGwgdGhlIHBsdWdpbiByb3V0aW5lIGZvciAlcy4gJXMAVGhpcyBtZW1iZXIgd2lsbCBzdGFydCBkaXN0cmlidXRlZCByZWNvdmVyeSB1c2luZyBjbG9uZS4gSXQgaXMgZHVlIHRvIHRoZSBudW1iZXIgb2YgbWlzc2luZyB0cmFuc2FjdGlvbnMgYmVpbmcgaGlnaGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdGhyZXNob2xkIG9mICVsbHUuAFRoaXMgbWVtYmVyIHdpbGwgc3RhcnQgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgdXNpbmcgY2xvbmUuIEl0IGlzIGR1ZSB0byBubyBPTkxJTkUgbWVtYmVyIGhhcyB0aGUgbWlzc2luZyBkYXRhIGZvciByZWNvdmVyaW5nIGluIGl0cyBiaW5hcnkgbG9ncy4ARGlzdHJpYnV0ZWQgcmVjb3Zlcnkgd2lsbCB0cmFuc2ZlciBkYXRhIHVzaW5nOiAlcwBEdWUgdG8gc29tZSBpc3N1ZSBvbiB0aGUgcHJldmlvdXMgc3RlcCBkaXN0cmlidXRlZCByZWNvdmVyeSBpcyBub3cgZXhlY3V0aW5nOiAlcwBEdWUgdG8gYSBjcml0aWNhbCBjbG9uaW5nIGVycm9yIG9yIGxhY2sgb2YgZG9ub3JzLCBkaXN0cmlidXRlZCByZWNvdmVyeSBjYW5ub3QgYmUgZXhlY3V0ZWQuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBUaGUgJyVzJyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoZSBzZXJ2ZXIgd2lsbCBhdHRlbXB0IHRvIGNsb25lIGFub3RoZXIgc2VydmVyAFVua25vd24gdGFibGUgJyUtLjEyOXMnAExvbmcgZGF0YWJhc2UgbmFtZSBhbmQgaWRlbnRpZmllciBmb3Igb2JqZWN0IHJlc3VsdGVkIGluIHBhdGggbGVuZ3RoIGV4Y2VlZGluZyAlZCBjaGFyYWN0ZXJzLiBQYXRoOiAnJXMnLgBYQTogRmFpbGVkIHRvIHRha2UgTURMIExvY2sgYmFja3VwIG9mIFBSRVBBUkVEIFhBIHRyYW5zYWN0aW9uIGR1cmluZyBjbGllbnQgZGlzY29ubmVjdC4AU1VQRVIgcHJpdmlsZWdlIG9yIEFVRElUX0FETUlOIHJvbGUgcmVxdWlyZWQgZm9yICclcydAJyVzJyB1c2VyLgBJbnZhbGlkIGFyZ3VtZW50IHR5cGUASW52YWxpZCBhcmd1bWVudCBjb3VudABhdWRpdF9sb2cgcGx1Z2luIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgdXNpbmcgSU5TVEFMTCBQTFVHSU4gc3ludGF4LgBJbnZhbGlkICJtYXhfYXJyYXlfbGVuZ3RoIiBhcmd1bWVudCB0eXBlLgBGYWlsZWQgdG8gd3JpdGUgdG8gJXM6ICVzICglcykAVXBncmFkaW5nIGZyb20gc2VydmVyIHZlcnNpb24gJWQgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPT0gMSBvbiBhIGNhc2Ugc2Vuc2l0aXZlIGZpbGUgc3lzdGVtIG1heSBjYXVzZSBpc3N1ZXMsIGFuZCBpcyB0aGVyZWZvcmUgcHJvaGliaXRlZC4gVG8gdXBncmFkZSBhbnl3YXksIHJlc3RhcnQgdGhlIG5ldyBzZXJ2ZXIgdmVyc2lvbiB3aXRoIHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICd1cGdyYWRlPUZPUkNFJy4gV2hlbiB1cGdyYWRlIGlzIGNvbXBsZXRlZCwgcGxlYXNlIGV4ZWN1dGUgJ1JFTkFNRSBUQUJMRSA8cGFydF90YWJsZV9uYW1lPiBUTyA8bmV3X3RhYmxlX25hbWU+OyBSRU5BTUUgVEFCTEUgPG5ld190YWJsZV9uYW1lPiBUTyA8cGFydF90YWJsZV9uYW1lPjsnIGZvciBlYWNoIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZXMuIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uAEluY29ycmVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcywgaW52YWxpZCBwb3J0OiAlcwBUaGUgc2VydmVyIHdhcyBhdXRvbWF0aWNhbGx5IHNldCBpbnRvIG9mZmxpbmUgbW9kZSBhZnRlciBhbiBlcnJvciB3YXMgZGV0ZWN0ZWQuAEEgbWVzc2FnZSBzZW50IHRocm91Z2ggdGhlIEdyb3VwIFJlcGxpY2F0aW9uIG1lc3NhZ2UgZGVsaXZlciBzZXJ2aWNlIHdhcyBub3QgZGVsaXZlcmVkIHN1Y2Nlc3NmdWxseS4gVGhlIHNlcnZlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuIFRyeSB0byBhZGQgdGhlIHNlcnZlciBiYWNrIHRvIHRoZSBncm91cCBhbmQgY2hlY2sgaWYgdGhlIHByb2JsZW0gcGVyc2lzdHMsIG9yIGNoZWNrIHByZXZpb3VzIG1lc3NhZ2VzIGluIHRoZSBsb2cgZm9yIGhpbnRzIG9mIHdoYXQgY291bGQgYmUgdGhlIHByb2JsZW0uAEludmFsaWQgU09VUkNFX0NPTVBSRVNTSU9OX0FMR09SSVRITVMgJyUuMTkycycgZm91bmQgaW4gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gUmVzZXR0aW5nIHRvICd1bmNvbXByZXNzZWQnIChubyBjb21wcmVzc2lvbikuAEludmFsaWQgU09VUkNFX1pTVERfQ09NUFJFU1NJT05fTEVWRUwgZm91bmQgaW4gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gUmVzZXR0aW5nIHRvICV1LgBPcHRpb24gLS1wcm90b2NvbC1jb21wcmVzc2lvbi1hbGdvcml0aG1zIGlzIHJlc2V0IHRvIGRlZmF1bHQgdmFsdWUuAEZhdGFsIGVycm9yIHdoaWxlIGNvbXByZXNzaW5nIG91dGdvaW5nIGRhdGEgLSAlcwAlcwBVbmtub3duIGtleXJpbmdfYXdzX3JlZ2lvbiAnJS4xOTJzJy4gQ29ubmVjdGlvbiB0byBBV1MgS01TIG1heSBmYWlsLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgJS42NHNgQGAlLjI1NXNgLCBidXQgdGhpcyBpcyBub3QgYW4gZXhpc3RpbmcgdXNlci4gQ29ycmVjdCB0aGlzIGJlZm9yZSBzdGFydGluZyByZXBsaWNhdGlvbiB0aHJlYWRzLgBJbnZhbGlkLCBjb3JydXB0ZWQgUFJJVklMRUdFX0NIRUNLU19VU0VSIHdhcyBmb3VuZCBpbiB0aGUgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiByZXBvc2l0b3J5IGZvciBjaGFubmVsICclLjE5MnMnLiBVc2UgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgdG8gY29ycmVjdCB0aGUgY29uZmlndXJhdGlvbi4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgdXNlciBkb2VzIG5vdCBoYXZlIFJFUExJQ0FUSU9OX0FQUExJRVIgcHJpdmlsZWdlLiBDb3JyZWN0IHRoaXMgYmVmb3JlIHN0YXJ0aW5nIHRoZSByZXBsaWNhdGlvbiB0aHJlYWRzLgBUaGUgUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciBjaGFubmVsICclLjE5MnMnIHdvdWxkIG5lZWQgRklMRSBwcml2aWxlZ2UgdG8gZXhlY3V0ZSBhIExPQUQgREFUQSBJTkZJTEUgc3RhdGVtZW50IHJlcGxpY2F0ZWQgaW4gc3RhdGVtZW50IGZvcm1hdC4gQ29uc2lkZXIgdXNpbmcgYmlubG9nX2Zvcm1hdD1ST1cgb24gc291cmNlLiBJZiB0aGUgcmVwbGljYXRlZCBldmVudHMgYXJlIHRydXN0ZWQsIHJlY292ZXIgZnJvbSB0aGUgZmFpbHVyZSBieSB0ZW1wb3JhcmlseSBncmFudGluZyBGSUxFIHRvIHRoZSBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIuAFJlcGxpY2EgU1FMIHRocmVhZCVzIGluaXRpYWxpemVkLCBzdGFydGluZyByZXBsaWNhdGlvbiBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcywgcmVsYXkgbG9nICclcycgcG9zaXRpb246ICVzLCB1c2VyOiAnJS42NHMnQCclLjI1NXMnLCByb2xlczogJS41MTJzAENhbm5vdCBnZW5lcmF0ZSBwYXNzd29yZDogJyUuMzJzJwBGYWlsZWQgdG8gZ2VuZXJhdGUgYSByYW5kb20gcGFzc3dvcmQgZm9yIHJvb3QuIFByb2JhYmFibHkgbm90IGVub3VnaCBlbnRocm9weS4ASWdub3JpbmcgLS1wbHVnaW4tbG9hZFtfYWRkXSBsaXN0IGFzIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIC0taW5pdGlhbGl6ZSgtaW5zZWN1cmUpLgBDYW5ub3Qgc2V0IG1hbmRhdG9yeV9yb2xlczogQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBoYXMgJyVzJyBwcml2aWxlZ2UuIEF1dGhJZChzKSBzZXQgaW4gdGhlIG1hbmRhdG9yeV9yb2xlcyBhcmUgaWdub3JlZC4ARGlyZWN0b3J5ICclcycgd2lsbCBub3QgYmUgc2Nhbm5lZCBiZWNhdXNlIGl0IGlzIGEgaGlkZGVuIGRpcmVjdG9yeS4AU2VydmVyIHdhcyBub3QgYWJsZSB0byBmaW5kIGEgcm90YXRlIGV2ZW50IGZyb20gc291cmNlIHNlcnZlciB0byBpbml0aWFsaXplIHJlbGF5IGxvZyByZWNvdmVyeSBmb3IgY2hhbm5lbCAnJXMnLiBTa2lwcGluZyByZWxheSBsb2cgcmVjb3ZlcnkgZm9yIHRoZSBjaGFubmVsLgBSb2xsaW5nIGJhY2sgTE9CIGZvciB0cmFuc2FjdGlvbiAlbGx1IHVuZG8gbnVtYmVyICVsbHUgOiBjdXJyZW50IGluZGV4IGxlbmd0aCAlbGx1LiAoaXRlcmF0aW9uICVsbHUpAEVycm9yIGluIHByb2Nlc3NpbmcgKHBvc3NpYmx5IGRlcHJlY2F0ZWQpIGV4cHJlc3Npb24gb3IgZnVuY3Rpb24gJyUuMTI4cycgZm9yIGdlbmVyYXRlZCBjb2x1bW4gJS42NHMuJS42NHMuJS42NHMAVGhlIHF1ZXVlIGV2ZW50IGZhaWxlZCBmb3IgY2hhbm5lbCAnJXMnIGFzIGFuIGludmFsaWQgZXZlbnQgYWNjb3JkaW5nIHRvIFJFUVVJUkVfUk9XX0ZPUk1BVCB3YXMgZm91bmQuAFRoZSBhcHBsaWNhdGlvbiBvZiByZWxheSBldmVudHMgZmFpbGVkIGZvciBjaGFubmVsICclcycgYXMgYW4gaW52YWxpZCBldmVudCBhY2NvcmRpbmcgdG8gUkVRVUlSRV9ST1dfRk9STUFUIHdhcyBmb3VuZC4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGNhbid0IGJlIHNldCB0byBgJS42NHNgQGAlLjI1NXNgIHVubGVzcyBSRVFVSVJFX1JPV19GT1JNQVQgaXMgYWxzbyBzZXQgdG8gJWQuAEFuIHVuZXhwZWN0ZWQgZXZlbnQgc2VxdWVuY2Ugd2FzIGRldGVjdGVkIGJ5IHRoZSBTUUwgdGhyZWFkIHdoaWxlIGFwcGx5aW5nIGFuIGV2ZW50LgBVcGRhdGluZyBwYXJ0aXRpb24gZmlsZSBuYW1lICclcycgdG8gJyVzJyBhbmQgYWxsIG90aGVyIHBhcnRpdGlvbiBmaWxlcyBkdXJpbmcgdXBncmFkZQBVcGRhdGluZyBwYXJ0aXRpb24gZmlsZSBuYW1lICclcycgdG8gJyVzJyBhbmQgYWxsIG90aGVyIHBhcnRpdGlvbiBmaWxlcyBkdXJpbmcgZG93bmdyYWRlAFVwZGF0aW5nIHBhcnRpdGlvbiBmaWxlIG5hbWUgJyVzJyB0byAnJXMnIGZvciBpbXBvcnQAVW5hYmxlIHRvIG9wZW4gcGFydGl0aW9uIGZpbGUgd2l0aCBuZXcgbmFtZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaW5ub2RiX2RpcmVjdG9yaWVzIGlzIHNldCB0byBpbmNsdWRlIGFsbCBleHRlcm5hbCBmaWxlIHBhdGhzACVzIEREIElEOiAlbGx1IC0gUGFydGl0aW9uIHRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJyBpcyBjb3JyZWN0ZWQgdG8gJyVzJwAlcyBERCBJRDogJWxsdSAtIFRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJywgJyVzJyBpcyBtb3ZlZCB0byAnJXMnACVzIEREIElEOiAlbGx1IC0gUGFydGl0aW9uIHRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJywgJyVzJyBpcyB1cGRhdGVkIHRvICclcycAJXMgVG9vIG1hbnkgZmlsZXMgaGF2ZSBiZWVuIG1vdmVkLCBkaXNhYmxpbmcgbG9nZ2luZyBvZiBkZXRhaWxlZCBtZXNzYWdlcwBFbGVjdGVkIHByaW1hcnkgbWVtYmVyICVzOiAlcwBTY2hlbWEgbmFtZSAnJXMnIGNvbnRhaW5pbmcgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIG5hbWUgJyVzLiVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBpcyBub3QgYWxsb3dlZCB3aXRoIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxLgBTY2hlbWEgbmFtZSAnJXMnIGNvbnRhaW5pbmcgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzLCB1c2VkIGJ5IGZvcmVpZ24ga2V5ICclcycgaW4gdGFibGUgJyVzLiVzJywgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AVGFibGUgbmFtZSAnJXMuJXMnIGNvbnRhaW5pbmcgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzLCB1c2VkIGJ5IGZvcmVpZ24ga2V5ICclcycgaW4gdGFibGUgJyVzLiVzJywgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AVGFibGUgUGFydGl0aW9uOiAlcyBpcyBub3QgZm91bmQgaW4gSW5ub0RCIGRpY3Rpb25hcnkAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBibG9ja2VkIGZvciAlcyBkYXkocykgKCVzIGRheShzKSByZW1haW5pbmcpIGR1ZSB0byAldSBjb25zZWN1dGl2ZSBmYWlsZWQgbG9naW5zLiBVc2UgRkxVU0ggUFJJVklMRUdFUyBvciBBTFRFUiBVU0VSIHRvIHJlc2V0LgAlcwBVcGdyYWRlIGNhbm5vdCBwcm9jZWVkIGR1ZSB0byBhbiBleGlzdGluZyBwcmVwYXJlZCBYQSB0cmFuc2FjdGlvbi4AQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3Iga2V5X2luZm8gd2hlbiBtaWdyYXRpbmcgdGFibGUgJXMuJXMAQXBwbGllciBtZXRhZGF0YSBpbmZvcm1hdGlvbiBmb3IgY2hhbm5lbCAnJXMnIHdhcyBmb3VuZCBhZnRlciBhIGNsb25lIG9wZXJhdGlvbi4gUmVsYXkgbG9nIHJlY292ZXJ5IHdpbGwgYmUgZXhlY3V0ZWQgdG8gYWRqdXN0IHBvc2l0aW9ucyBhbmQgZmlsZSBpbmZvcm1hdGlvbiBmb3IgdGhpcyBuZXcgc2VydmVyLiBTaG91bGQgdGhhdCBhdXRvbWF0aWMgcHJvY2VkdXJlIGZhaWwgcGxlYXNlIGFkanVzdCB0aGUgcG9zaXRpb25zIHRocm91Z2ggJ0NIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8nAEZhaWxlZCB0byBkZWxldGUgNS43IHVuZG8gdGFibGVzcGFjZTogJXMgZHVyaW5nIHVwZ3JhZGUARW1wdHkgZG91Ymxld3JpdGUgZmlsZTogJXMAVXNpbmcgJyVzJyBmb3IgZG91Ymxld3JpdGUARXJyb3IgcmVhZGluZyBkb3VibGV3cml0ZSBidWZmZXIgZnJvbSB0aGUgc3lzdGVtIHRhYmxlc3BhY2UAQ2Fubm90IGNyZWF0ZSBkb3VibGV3cml0ZSBidWZmZXI6IHlvdSBtdXN0IGluY3JlYXNlIHlvdXIgYnVmZmVyIHBvb2wgc2l6ZS4gQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4AVGhlIHBhZ2UgaW4gdGhlIGRvdWJsZXdyaXRlIGZpbGUgaXMgY29ycnVwdC4gQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4gWW91IGNhbiB0cnkgdG8gcmVjb3ZlciB0aGUgZGF0YWJhc2Ugd2l0aCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9NgBUaGUgZG91Ymxld3JpdGUgZmlsZW5hbWUgJyVzJyBpcyBpbmNvcnJlY3QuACVzAERvdWJsZXdyaXRlIGZpbGUgY3JlYXRlIGZhaWxlZDogJXMAREJMV1JUaHJlYWQ6IHB0aHJlYWRfc2V0YWZmaW5pdHkoKSBmYWlsZWQhACVzACVzAERvdWJsZXdyaXRlIGZpbGUgcmVhZCBmYWlsZWQ6ICVzAER1bXAgb2YgdGhlIGRhdGEgZmlsZSBwYWdlOgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBEb3VibGV3cml0ZSBsb2FkIGZpbGUgJXMgc2l6ZSAlbHUgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGNvbmZpZ3VyZWQgcGFnZSBzaXplICVsdSIARG91Ymxld3JpdGUgZmlsZSAlcyB0cnVuY2F0ZSBmYWlsZWQARG91Ymxld3JpdGUgZmlsZSAlcyBmYWlsZWQgdG8gd3JpdCB6ZXJvcwBEb3VibGV3cml0ZSBjcmVhdGUgZmlsZSAlcyBzaXplICVsdSBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgY29uZmlndXJlZCBwYWdlIHNpemUgJWx1IgAlcwAlcwAlcwAlcwAlcwBDb3VsZCBub3QgZmx1c2ggYWxsIEdUSURzIGR1cmluZyBzbG93IHNodXRkb3duLiBXaWxsIHJlY292ZXIgR1RJRHMgd2hlbiBzZXJ2ZXIgcmVzdGFydHMuAEZhaWxlZCB0byBkZWxldGUgNS43IHN0YXQgdGFibGVzcGFjZTogJXMgZHVyaW5nIHVwZ3JhZGUASW5zdGFsbGluZyBuZGJpbmZvIHNjaGVtYSB2ZXJzaW9uICVzAEluc3RhbGxlZCBuZGJpbmZvIHNjaGVtYSBpcyBjdXJyZW50LiBOb3QgdXBncmFkaW5nLgBGYWlsZWQgdG8gdXBncmFkZSBuZGJpbmZvIHNjaGVtYS4AJXMASW5ub0RCIGluaXRpYWxpemF0aW9uIGhhcyBzdGFydGVkLgBJbm5vREIgaW5pdGlhbGl6YXRpb24gaGFzIGVuZGVkLgBDb3VsZCBub3QgZmluZCBhcHByb3ByaWF0ZSByZXNldCBwb2ludHMuAFVuYWJsZSB0byBmbHVzaC4gUGFnZSBhcmNoaXZpbmcgZGF0YSBtYXkgYmUgY29ycnVwdCBpbiBjYXNlIG9mIGEgY3Jhc2guAFBhZ2UgYXJjaGl2ZXIncyBkb3VibGV3cml0ZSBidWZmZXIgZm9yICVsZCBpcyBub3QgdmFsaWQuAFBhZ2UgYXJjaGl2ZXIgc3lzdGVtJ3MgcmVjb3ZlcnkgZmFpbGVkLgBJbnZhbGlkIGFyY2hpdmVkIGZpbGUgbmFtZSBmb3JtYXQuIFRoZSBhcmNoaXZlZCBmaWxlIGlzIHN1cHBvc2VkIHRvIGhhdmUgdGhlIGZvcm1hdCAlcyArIFswLTldKi4AWCBQbHVnaW5zIFVOSVggc29ja2V0IG11c3QgdXNlIGRpZmZlcmVudCBmaWxlIHRoYW4gTXlTUUwgc2VydmVyLiBYIFBsdWdpbiB3b24ndCBiZSBhY2Nlc3NpYmxlIHRocm91Z2ggVU5JWCBzb2NrZXQAJXMAQ29sdW1uICclLjY0cy4lLjY0cy4lLjY0cycgaGF2aW5nIHByZWZpeCBrZXkgcGFydCAnJS42NHMoJXUpJyBpcyBpZ25vcmVkIGJ5IHRoZSBwYXJ0aXRpb25pbmcgZnVuY3Rpb24uIFVzZSBvZiBwcmVmaXhlZCBjb2x1bW5zIGluIHRoZSBQQVJUSVRJT04gQlkgS0VZKCkgY2xhdXNlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBVbmRvIFRydW5jYXRpb24gaXMgb2NjdXJyaW5nIHRvbyBvZnRlbi4gQ29uc2lkZXIgaW5jcmVhc2luZyAtLWlubm9kYi1tYXgtdW5kby1sb2ctc2l6ZS4AUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaXMgc3RhcnRpbmcuAENhbm5vdCBjcmVhdGUgdGFibGVzcGFjZSAlcyBiZWNhdXNlIHRoZSBkaXJlY3RvcnkgaXMgbm90IGEgdmFsaWQgbG9jYXRpb24uICVzAFNjYW5uZWQgZmlsZSAnJXMnIGZvciB0YWJsZXNwYWNlICVzIGNhbm5vdCBiZSBvcGVuZWQgYmVjYXVzZSBpdCBpcyBub3QgaW4gYSBzdWItZGlyZWN0b3J5IG5hbWVkIGZvciB0aGUgc2NoZW1hLgBDYW5ub3QgZmluZCB1bmRvIHRhYmxlc3BhY2UgJXMgd2l0aCBmaWxlbmFtZSAnJXMnIGFzIGluZGljYXRlZCBieSB0aGUgRGF0YSBEaWN0aW9uYXJ5LiBEaWQgeW91IG1vdmUgb3IgZGVsZXRlIHRoaXMgdGFibGVzcGFjZT8gQW55IHVuZG8gbG9ncyBpbiBpdCBjYW5ub3QgYmUgdXNlZC4ASW52YWxpZCBpbnB1dCB2YWx1ZSBmb3IgcmVjb3Zlcnkgc29ja2V0IGVuZHBvaW50cyAnJXMnLiBQbGVhc2UsIHByb3ZpZGUgYSB2YWxpZCwgY29tbWEgc2VwYXJhdGVkLCBsaXN0IG9mIGVuZHBvaW50cyAoSVA6cG9ydCkAVGhlIHNlcnZlciBpcyBub3QgbGlzdGVuaW5nIG9uIGVuZHBvaW50ICclcycuIE9ubHkgZW5kcG9pbnRzIHRoYXQgdGhlIHNlcnZlciBpcyBsaXN0ZW5pbmcgb24gYXJlIHZhbGlkIHJlY292ZXJ5IGVuZHBvaW50cy4AUmVjZWl2ZWQgaW52YWxpZCByZWNvdmVyeSBlbmRwb2ludHMgY29uZmlndXJhdGlvbiBmcm9tIGRvbm9yLiBUaGlzIG1lbWJlciBpcyBub3QgYSB2YWxpZCBkb25vciBmb3IgcmVjb3ZlcnksIHNvIGl0IHdpbGwgYmUgc2tpcHBlZC4ARmFpbGVkIHRvIHJldHJpZXZlIElQIGFkZHJlc3NlcyBmcm9tIGVuYWJsZWQgaG9zdCBuZXR3b3JrIGludGVyZmFjZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIFRMUyBmb3IgY2hhbm5lbDogJXMuIFNlZSBiZWxvdyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIGV4YWN0IGlzc3VlLgBWYWxpZGF0aW9uIG9mIHZhbHVlICclcycgc2V0IHRvIGBNeXNxbHhfYmluZF9hZGRyZXNzYCBmYWlsZWQ6ICVzLiBTa2lwcGluZyB0aGlzIHZhbHVlLgBWYWx1ZSAnJXMnIHNldCB0byBgTXlzcWx4X2JpbmRfYWRkcmVzc2AsIFggUGx1Z2luIGNhbid0IGJpbmQgdG8gaXQuIFNraXBwaW5nIHRoaXMgdmFsdWUuAFNlcnZlciB3YXMga2lsbGVkIHdoZW4gSW5ub0RCIHJlZG8gbG9nZ2luZyB3YXMgZGlzYWJsZWQuIERhdGEgZmlsZXMgY291bGQgYmUgY29ycnVwdC4gWW91IGNhbiB0cnkgdG8gcmVzdGFydCB0aGUgZGF0YWJhc2Ugd2l0aCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9NgBJbm5vREIgY2Fubm90IGRvIGNvbGQgc2h1dGRvd24gJ2lubm9kYl9mYXN0X3NodXRkb3duID0gMicgYW5kIGlzIGZvcmNpbmcgJ2lubm9kYl9mYXN0X3NodXRkb3duID0gMScgYXMgcmVkbyBsb2dnaW5nIGlzIGRpc2FibGVkLiBJbm5vREIgd291bGQgZmx1c2ggYWxsIGRpcnR5IHBhZ2VzIHRvIGVuc3VyZSBwaHlzaWNhbCBkYXRhIGNvbnNpc3RlbmN5LgBJbm5vREIgcmVkbyBsb2dnaW5nIGlzIGRpc2FibGVkLiBBbGwgZGF0YSBjb3VsZCBiZSBsb3N0IGluIGNhc2Ugb2YgYSBzZXJ2ZXIgY3Jhc2guAElubm9EQiByZWRvIGxvZ2dpbmcgaXMgZW5hYmxlZC4gRGF0YSBpcyBub3cgc2FmZSBhbmQgY2FuIGJlIHJlY292ZXJlZCBpbiBjYXNlIG9mIGEgc2VydmVyIGNyYXNoLgBDaGFubmVsICVzIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCBUTFMuIEVuY3J5cHRlZCBjb25uZWN0aW9ucyBhcmUgbm93IHN1cHBvcnRlZCBmb3IgdGhpcyBjaGFubmVsLgBObyBUTFMgY29uZmlndXJhdGlvbiB3YXMgZ2l2ZW4gZm9yIGNoYW5uZWwgJXM7IHJlLXVzaW5nIFRMUyBjb25maWd1cmF0aW9uIG9mIGNoYW5uZWwgJXMuAFNraXBwaW5nIElubm9EQiB0YWJsZXNwYWNlIHBhdGggdmFsaWRhdGlvbi4gTWFudWFsbHkgbW92ZWQgdGFibGVzcGFjZSBmaWxlcyB3aWxsIG5vdCBiZSBkZXRlY3RlZCEAVXBncmFkZSBmYWlsZWQgYmVjYXVzZSBkYXRhYmFzZSBjb250YWlucyBkaXNjYXJkZWQgdGFibGVzcGFjZXMuAFRoZSB1c2VyIG5hbWUgJyVzJyBleGNlZWRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIGNoYXJhY3RlcnMgJWQgYW5kIGlzIHRydW5rYXRlZC4AVGhlIGhvc3QgbmFtZSAnJXMnIGV4Y2VlZHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQgY2hhcmFjdGVycyAlZCBhbmQgaXMgdHJ1bmthdGVkLgBSb2xsYmFjayBvZiBub24tcHJlcGFyZWQgdHJhbnNhY3Rpb25zIG5vdCBjb21wbGV0ZWQsIGR1ZSB0byBmYXN0IHNodXRkb3duAEZvdW5kIGFuIGVudHJ5IGluIHRoZSAncm9sZV9lZGdlcycgdGFibGUgd2l0aCBlbXB0eSBhdXRob3JpemF0aW9uIElEOyBTa2lwcGVkAEZvdW5kIGFuIGVudHJ5IGluIHRoZSAncm9sZV9lZGdlcycgdGFibGUgd2l0aCB1bmtub3duIGF1dGhvcml6YXRpb24gSUQgJyVzJzsgU2tpcHBlZABGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ2RlZmF1bHRfcm9sZXMnIHRhYmxlIHdpdGggZW1wdHkgYXV0aG9yaXphdGlvbiBJRDsgU2tpcHBlZABGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ2RlZmF1bHRfcm9sZXMnIHRhYmxlIHdpdGggdW5rbm93biBhdXRob3JpemF0aW9uIElEICclcyc7IFNraXBwZWQAQ291bGRuJ3QgaW5zZXJ0IGVudHJ5IGluIGRkbCBsb2cgZm9yIGRkbC4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVGhlIHN0YXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBpcyBzZXQgdG8gYWN0aXZlIGltcGxpY2l0bHkuAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvICdhY3RpdmUnIGJ5IEFMVEVSIFRBQkxFU1BBQ0UuAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvICdpbmFjdGl2ZScgYnkgQUxURVIgVEFCTEVTUEFDRS4AVGhlIHN0YXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBpcyBzZXQgdG8gJ2VtcHR5Jy4ARGVsYXlpbmcgdHJ1bmNhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGR1ZSB0byBjbG9uZSBhY3Rpdml0eS4ARGVsYXlpbmcgdHJ1bmNhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGR1ZSB0byBhIG1ldGFkYXRhIGxvY2suAEluamVjdGVkIGRlYnVnIGNyYXNoIHBvaW50OiAlcwBJbmplY3RlZCBkZWJ1ZyBmYWlsdXJlIHBvaW50OiAlcwBUaW1lb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGEgdmlldyBjaGFuZ2UgZXZlbnQgZHVyaW5nIHRoZSBsZWF2ZSBzdGVwIGJlZm9yZSBhIGF1dG8tcmVqb2luIGF0dGVtcHQuAEZhaWxlZCB0byBhdXRvbWF0aWNhbGx5IHJlLWNvbm5lY3QgdG8gYSBkaWZmZXJlbnQgc291cmNlLCBmb3IgY2hhbm5lbCAnJXMnLCBiZWNhdXNlICVzLiBUbyBmaXggdGhpcyAlcy4AQ291bGQgbm90IGV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBvZiBVREYgZnVuY3Rpb25zLiBDaGVjayBmb3Igb3RoZXIgZXJyb3JzIGluIHRoZSBsb2cAQ291bGQgbm90IGV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBvZiBVREYgZnVuY3Rpb246ICVzLiBDaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50LCBpZiBzbywgdHJ5IHRvIHJlbW92ZSBpdC4AQ291bGQgbm90IHVuaW5zdGFsbCBVREYgZnVuY3Rpb25zLiBUcnkgdG8gcmVtb3ZlIHRoZW0gbWFudWFsbHkgaWYgcHJlc2VudC4AQW4gZW1wdHkgb3IgaWxsZWdhbCBwcml2aWxlZ2UgaWRlbnRpZmllciB3YXMgaWdub3JlZCB3aGVuIGdsb2JhbCBwcml2aWxlZ2VzIHdlcmUgcmVhZCBmcm9tIGRpc2suACVzAEEgdG1wZGlyIHRlbXBvcmFyeSBwYXRoICIlcyIgaXMgdG9vIGxvbmcgKD4gJXp1KSBmb3IgdGhpcyBPUy4gVGhpcyB3b3VsZCBub3QgbGVhdmUgZW5vdWdoIHNwYWNlIGZvciBhIHRlbXBvcmFyeSBmaWxlbmFtZSBvZiBsZW5ndGggJXp1IHdpdGhpbiBpdC4ARXJyb3ItbG9nIGRlc3RpbmF0aW9uICIlcyIgaXMgbm90IGEgZmlsZS4gQ2FuIG5vdCByZXN0b3JlIGVycm9yIGxvZyBtZXNzYWdlcyBmcm9tIHByZXZpb3VzIHJ1bi4ATm9uZSBvZiB0aGUgbG9nLXNpbmtzIHNlbGVjdGVkIHdpdGggLS1sb2ctZXJyb3Itc2VydmljZXM9Li4uIHByb3ZpZGVzIGEgbG9nLXBhcnNlci4gVGhlIHNlcnZlciB3aWxsIG5vdCBiZSBhYmxlIHRvIG1ha2UgdGhlIHByZXZpb3VzIHJ1bnMnIGVycm9yLWxvZ3MgYXZhaWxhYmxlIGluIHBlcmZvcm1hbmNlX3NjaGVtYS5lcnJvcl9sb2cuAFRoZSBzY2hlbWEgIiUuNjRzIiByZWZlcmVuY2VkIGJ5ICUuMTZzICIlLjEyOHMiIGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY2xlYW4gdXAgYW55IG9ycGhhbiAlLjE2cyBiZWZvcmUgdXBncmFkaW5nLgBDcmVhdGVkIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBEcm9wcGVkIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBUaGUgSW5ub0RCIEVuY3J5cHRpb24gTWFzdGVyIEtleSBoYXMgYmVlbiByb3RhdGVkIGluICVkIHRhYmxlc3BhY2VzLgBGYWlsZWQgdG8gZGVjb21wcmVzcyBhIERCTFdSIHBhZ2UgKGVycj0lZCkuICBUaGUgb3JpZ2luYWwgc2l6ZSBpcyAlZC4gUmVwb3J0aW5nIHRoZSBkYmx3ciBwYWdlIGFzIGNvcnJ1cHRlZC4ARGVjcnlwdGluZyBhIHBhZ2UgaW4gZG91Ymxld3JpdGUgZmlsZSBmYWlsZWQ6ICVzLgBFbmNyeXB0aW9uIGtleSBtaXNzaW5nOiAlcy4ASS9PIGVycm9yIHdoaWxlIHdyaXRpbmcgdG8gZmlsZTogJXMuIFJldHJ5aW5nIC4uLgBGYWlsZWQgdG8gd3JpdGUgZGF0YSB0byBmaWxlOiAlcwBMb2cgY29tcG9uZW50ICVzIGZhaWxlZCB0byBpbml0aWFsaXplLgBUaGUgTW9uaXRvciBJTyB0aHJlYWQgZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLCB0aGVuY2UgaXQgd2lsbCB0cnkgdG8gY29ubmVjdCB0byBhbm90aGVyIHNvdXJjZS4AVGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnIGhhcyBqb2luZWQgdGhlIGdyb3VwIChncm91cF9uYW1lOiAlcyksIGFuZCBzbyBhZGRlZCBpdHMgZW50cnkgaW50byByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4AVGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnIGhhcyBsZWZ0IHRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpLCBhbmQgc28gcmVtb3ZlZCBpdHMgZW50cnkgZnJvbSByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4AVGhlIE1vbml0b3IgSU8gdGhyZWFkIGRldGVjdGVkIHRoYXQgdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGdyb3VwIG1ham9yaXR5LCB0aGVuY2UgdGhlIGNoYW5uZWwgJyVzJyB3aWxsIHRyeSB0byBjb25uZWN0IHRvIGFub3RoZXIgc291cmNlLgBUaGUgSU8gdGhyZWFkIGRldGVjdGVkIHRoYXQgdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGdyb3VwIG1ham9yaXR5LCB0aGVuY2UgdGhlIGNoYW5uZWwgJyVzJyB3aWxsIHRyeSB0byBjb25uZWN0IHRvIGFub3RoZXIgc291cmNlLgAlcyBvbiB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycuAFJlcGxpY2EgTW9uaXRvciBJTyB0aHJlYWQgZXhpdGluZy4AVGhlIGdyb3VwIChncm91cF9uYW1lOiAlcykgZm9yIHRoZSBjaGFubmVsICclcycgaGFzIGJlZW4gcmVtb3ZlZCwgYW5kIHNvIHJlbW92ZWQgaXRzIGVudHJ5IGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXJfbWFuYWdlZCBhbmQgYWxsIHRoZSBncm91cCBtZW1iZXJzIGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAFRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpIGZvciB0aGUgY2hhbm5lbCAnJXMnIGhhcyBiZWVuIGFkZGVkLCBhbmQgc28gYWRkZWQgaXRzIGVudHJ5IGluIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQgYW5kIHNvdXJjZSB0byByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4ARXJyb3IgcmVhZGluZyBmYWlsb3ZlciBzb3VyY2VzIGZvciBjaGFubmVsICclcycgZnJvbSByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4ARXJyb3IgJXMgdGhlIGNoYW5uZWwgJyVzJywgdGhlIG9wZXJhdGlvbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmV0cmllZC4AUmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9JyVzJywgd2hpY2ggaXMgaW52YWxpZCB3aGVuIEdUSURfTU9ERSA8PiBPTi4gSWYgeW91IGludGVuZCB0byB1c2UgR1RJRF9NT0RFID0gT04gZXZlcnl3aGVyZSwgY2hhbmdlIHRvIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gT0ZGIGFuZCB1c2UgdGhlIHByb2NlZHVyZSBmb3IgZW5hYmxpbmcgR1RJRHMgb25saW5lIChzZWUgdGhlIGRvY3VtZW50YXRpb24pLiBJZiB5b3UgaW50ZW5kIHRvIHVzZSBHVElEcyBvbiB0aGlzIHJlcGxpY2EgYW5kIGNhbm5vdCBlbmFibGUgR1RJRHMgb24gdGhlIHNvdXJjZSwgZW5hYmxlIEdUSURfTU9ERSA9IE9OIGFuZCBsZWF2ZSBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPi4gSWYgeW91IGludGVuZCB0byBub3QgdXNlIEdUSURzIGF0IGFsbCBpbiB0aGUgcmVwbGljYXRpb24gdG9wb2xvZ3ksIGNoYW5nZSB0byBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUz1PRkYgYW5kIGxlYXZlIEdUSURfTU9ERSA9ICclcycuAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TPSclcycgd2hpY2ggaXMgZXF1YWwgdG8gZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4gVG8gZml4IHRoaXMgaXNzdWUsIGVpdGhlciBjaGFuZ2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgIG9yIHVzZSBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMuAFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycgaXMgdGhlIHNhbWUgYXMgdGhlIFVVSUQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TIGluIGEgc2VydmVyIGNoYW5uZWwAVGhlIGludGVnZXIgY29tcG9uZW50IG9mIHRoZSBHVElEIG51bWJlciBpcyBoaWdoLiBTdWdnZXN0IHJlc3RhcnRpbmcgdGhlIHNlcnZlciB3aXRoIGEgbmV3IHNlcnZlcl91dWlkIHRvIHByZXZlbnQgaXQgZnJvbSByZWFjaGluZyB0aGUgbWF4aW11bSBudW1iZXIgMl42My0xLCB3aGljaCB3aWxsIG1ha2UgaXQgaW1wb3NzaWJsZSB0byB3cml0ZSB0aGUgYmluYXJ5IGxvZyBhbmQgaW52b2tlIHRoZSBiZWhhdmlvciBzcGVjaWZpZWQgYnkgYmlubG9nX2Vycm9yX2FjdGlvbi4AJXMAJXMAJXMAJXM6IFdhcm5pbmcgTGV2ZWwgMSAoJWxsdSBNaUIpOiBtb3VudCBwb2ludCA9ICclcycsIGF2YWlsYWJsZSA9ICVsbHUgTWlCLCB0b3RhbCA9ICVsbHUgTWlCLCB1c2VkID0gJS4yZiUlLCBsb3cgbGltaXQgPSAlbGx1IE1pQiwgY3JpdGljYWwgbGV2ZWwgPSAlbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAyICglbGx1IE1pQik6IG1vdW50IHBvaW50ID0gJyVzJywgYXZhaWxhYmxlID0gJWxsdSBNaUIsIHRvdGFsID0gJWxsdSBNaUIsIHVzZWQgPSAlLjJmJSUsIGxvdyBsaW1pdCA9ICVsbHUgTWlCLCBjcml0aWNhbCBsZXZlbCA9ICVsbHUgTWlCACVzOiBXYXJuaW5nIExldmVsIDMgKCVsbHUgTWlCKTogbW91bnQgcG9pbnQgPSAnJXMnLCBhdmFpbGFibGUgPSAlbGx1IE1pQiwgdG90YWwgPSAlbGx1IE1pQiwgdXNlZCA9ICUuMmYlJSwgbG93IGxpbWl0ID0gJWxsdSBNaUIsIGNyaXRpY2FsIGxldmVsID0gJWxsdSBNaUIASW5ub0RCOiBTaXplIG9mIHRhYmxlc3BhY2UgJXMgaXMgbW9yZSB0aGFuIHRoZSBtYXhpbXVtIHNpemUgYWxsb3dlZC4AVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2FwcGxpZXIgY2hhbm5lbCBpcyBzdGlsbCBydW5uaW5nLCBtb3N0IGxpa2VseSBpdCBpcyB3YWl0aW5nIGZvciBhIGRhdGFiYXNlL3RhYmxlIGxvY2ssIHdoaWNoIGlzIHByZXZlbnRpbmcgdGhlIGNoYW5uZWwgZnJvbSBzdG9wcGluZy4gUGxlYXNlIGNoZWNrIGRhdGFiYXNlL3RhYmxlIGxvY2tzLCBpbmNsdWRpbmcgdGhlIG9uZXMgY3JlYXRlZCBieSBiYWNrdXAgdG9vbHMuAERldGVjdGVkIG1pc2NvbmZpZ3VyYXRpb246IHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIGNvbmZpZ3VyZWQgd2l0aCBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMSwgYnV0IHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCBhIHZhbHVlIG90aGVyIHRoZW4gLS1ndGlkLW1vZGUgPSBPTi4gRWl0aGVyIHJlY29uZmlndXJlIHJlcGxpY2F0aW9uIHVzaW5nIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDAgRk9SIENIQU5ORUwgJyUuMTkycycsIG9yIGNoYW5nZSBHVElEX01PREUgdG8gdmFsdWUgT04sIGJlZm9yZSBzdGFydGluZyB0aGUgcmVwbGljYSByZWNlaXZlciB0aHJlYWQuAENvdWxkIG5vdCBhY3F1aXJlIHJlcXVpcmVkIGNvbXBvbmVudCBzZXJ2aWNlcy4AQXV0b21hdGljIHJlZ2lzdHJhdGlvbiBvZiBmdW5jdGlvbihzKSBmYWlsZWQuAEF1dG9tYXRpYyByZWdpc3RyYXRpb24gb2YgUGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlKHMpIGZhaWxlZC4AJXMARmFpbGVkIHRvIGF1dG8tcHJ1bmUgZmlsZSAnJXMnLCBFcnJvciAoJWQpOiAlcwBGaWxlICclcycgYXV0by1wcnVuZWQAUmVjZWl2ZWQgYW4gZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBjb21wb25lbnRzIGZyb20gbWFuaWZlc3QgZmlsZTogJXMAUmVjZWl2ZWQgYW4gZXJyb3Igd2hpbGUgdW5sb2FkaW5nIGNvbXBvbmVudHMgcmVhZCBmcm9tIG1hbmlmZXN0IGZpbGU6ICVzAE1hbmlmZXN0IGZpbGUgJyVzJyBpcyBub3QgcmVhZC1vbmx5LiBGb3IgYmV0dGVyIHNlY3VyaXR5LCBwbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlIGZpbGUgaXMgcmVhZC1vbmx5LgBObyBzdWl0YWJsZSAnJXMnIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gZm91bmQgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4AS2V5cmluZyBjb21wb25lbnQgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LgBUaGUgY29tcG9uZW50IGlzIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4gTWFrZSBzdXJlIHRoYXQgY29uZmlndXJhdGlvbiBpcyBwcm9wZXIgYW5kIHVzZSBBTFRFUiBJTlNUQU5DRSBSRUxPQUQgS0VZUklORyB0byByZWluaXRpYWxpemUgdGhlIGNvbXBvbmVudC4AS2V5cmluZyBjb21wb25lbnQgZW5jb3VudGVyZWQgYW4gZXhjZXB0aW9uIHdoaWxlIGV4ZWN1dGluZyA6ICclcycgQVBJIG9mIHNlcnZpY2U6ICclcycARmFpbGVkIHRvIGFsbG9jYXRlZCBtZW1vcnkgZm9yICclcycgd2hpbGUgZXhlY3V0aW5nOiAnJXMnIEFQSSBvZiBzZXJ2aWNlOiAnJXMnAEVtcHR5IG9yIDAgdmFsdWVzIGZvciBBRVMgZW5jcnlwdGlvbiBtb2RlIGFuZC9vciBibG9jayBzaXplIGFyZSBub3QgcGVybWl0dGVkLgBBIHZhbGlkIGRhdGEgaWRlbnRpZmllciBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBmZXRjaCB0aGUga2V5IHJlcXVpcmVkIGZvciB0aGUgQUVTIG9wZXJhdGlvbi4AS2V5IGlkZW50aWZpZWQgYnkgRGF0YSBJRDogJyVzJyBhbmQgQXV0aCBJRDogJyVzJyBpcyBub3Qgb2YgdHlwZSBBRVMuAEVuY291bnRlcmVkIGVycm9yOiAnJXMnIHdoaWxlIGV4ZWN1dGluZyAnJXMnIEFQSSBvZiBrZXlyaW5nX2FlcyBzZXJ2aWNlLiBLZXkgZGV0YWlscyBhcmUgRGF0YSBJRDogJyVzJyBhbmQgQXV0aCBJRDogJyVzJy4AQ291bGQgbm90IGZpbmQgdGhlIGRhdGEgY29ycmVzcG9uZGluZyB0byBEYXRhIElEOiAnJXMnLCBBdXRoIElEOiAnJXMnLgBNYXhpbXVtIHBlcm1pc3NpYmxlIHNpemUgb2YgZGF0YSBpcyAnJXp1JyBiaXRzAEVycm9yIHdyaXRpbmcgZGF0YSBmb3IgRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4gRWl0aGVyIGRhdGEgYWxyZWFkeSBleGlzdHMgd2l0aCBzYW1lIGlkZW50aWZpZXIgb3Iga2V5cmluZyBiYWNrZW5kIGVuY291bnRlcmVkIGFuIGVycm9yLgBFcnJvciByZW1vdmluZyBkYXRhIGZvciBEYXRhIElEOiAnJXMnLCBBdXRoIElEOiAnJXMnLiBFaXRoZXIgZGF0YSBkb2VzIG5vdCBleGlzdHMgd2l0aCBzYW1lIGlkZW50aWZpZXIgb3Iga2V5cmluZyBiYWNrZW5kIGVuY291bnRlcmVkIGFuIGVycm9yLgBFcnJvciBnZW5lcmF0aW5nIGRhdGEgZm9yIERhdGEgSUQ6ICclcycsIEF1dGggSUQ6ICclcycuIEVpdGhlciBkYXRhIGFscmVhZHkgZXhpc3RzIHdpdGggc2FtZSBpZGVudGlmaWVyIG9yIGtleXJpbmcgYmFja2VuZCBlbmNvdW50ZXJlZCBhbiBlcnJvci4ARmFpbGVkIHRvIGdldCBtZXRhZGF0YSBmcm9tIGN1cnJlbnQga2V5cyBtZXRhZGF0YSBpdGVyYXRvciBwb3NpdGlvbi4AS2V5IGFuZCB2YWx1ZSBsZW5ndGggcGFyYW1ldGVycyBtdXN0IG5vdCBiZSBudWxsLgBJbm5vZGIgY291bGQgbm90IGFjcXVpcmUgc2VydmljZSA6ICVzAENvbHVtbiAlcyBvZiB0eXBlIEdFT01FVFJZIGlzIGluIG9sZCAoNS42KSBmb3JtYXQgd2hpY2ggY291bGQgYmUgZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLiBUbyBjaGFuZ2UgdGhlIGZvcm1hdCB0byBsYXRlc3QsIHBsZWFzZSBjb25zaWRlciByZWJ1aWxkaW5nIHRoZSB0YWJsZSBhZnRlciB0aGUgdXBncmFkZS4AJ3dhaXRfdGltZW91dCcgcGVyaW9kIG9mICVzIHNlY29uZHMgd2FzIGV4Y2VlZGVkIGZvciAlcy4gVGhlIGlkbGUgdGltZSBzaW5jZSBsYXN0IGNvbW1hbmQgd2FzIHRvbyBsb25nLgBUaGUgbWVtYmVyIGFjdGlvbiAiJXMiIGZvciBldmVudCAiJXMiIHdpdGggcHJpb3JpdHkgIiV1IiB3aWxsIGJlIHJ1bi4AVGhlIG1lbWJlciBhY3Rpb24gIiVzIiBmb3IgZXZlbnQgIiVzIiB3aXRoIHByaW9yaXR5ICIldSIgZmFpbGVkLCB0aGlzIGVycm9yIGlzIGlnbm9yZWQgYXMgaW5zdHJ1Y3RlZC4gUGxlYXNlIGNoZWNrIHByZXZpb3VzIG1lc3NhZ2VzIGluIHRoZSBlcnJvciBsb2cgZm9yIGhpbnRzIGFib3V0IHdoYXQgY291bGQgaGF2ZSBjYXVzZWQgdGhpcyBmYWlsdXJlLgBUaGUgbWVtYmVyIGFjdGlvbiAiJXMiIGZvciBldmVudCAiJXMiIHdpdGggcHJpb3JpdHkgIiV1IiBmYWlsZWQuIFBsZWFzZSBjaGVjayBwcmV2aW91cyBtZXNzYWdlcyBpbiB0aGUgZXJyb3IgbG9nIGZvciBoaW50cyBhYm91dCB3aGF0IGNvdWxkIGhhdmUgY2F1c2VkIHRoaXMgZmFpbHVyZS4AVW5hYmxlIHRvIHBhcnNlIHRoZSBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIHNlbnQgYnkgdGhlIHByaW1hcnkuAFVuYWJsZSB0byB1cGRhdGUgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgb25lIHNlbnQgYnkgdGhlIHByaW1hcnkuIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBVbmFibGUgdG8gcmVhZCB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBkdXJpbmcgZ3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2UuIFBsZWFzZSBjaGVjayB0aGUgdGFibGVzICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJfYWN0aW9ucycgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBUaGlzIG1lbWJlciBqb2luZWQgYSBncm91cCBvbiB3aGljaCBhbGwgbWVtYmVycyBkbyBub3Qgc3VwcG9ydCBtZW1iZXIgYWN0aW9ucywgYXMgc3VjaCBpdCBkaWQgcmVzZXQgaXRzIG1lbWJlciBjb25maWd1cmF0aW9uIHRvIHRoZSBkZWZhdWx0IG9uZS4AVW5hYmxlIHRvIHJlc2V0IHRvIG1lbWJlciBhY3Rpb25zIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvbiBtZW1iZXIgam9pbi4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9hY3Rpb25zJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFVuYWJsZSB0byBwYXJzZSB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBzZW50IGJ5IHRoZSBncm91cCBvbiBtZW1iZXIgam9pbi4AVW5hYmxlIHRvIHVwZGF0ZSB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiBvbiBtZW1iZXIgam9pbi4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9hY3Rpb25zJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFRoZSBncm91cCBtZW1iZXJzIHdlcmUgdW5hYmxlIHRvIHNlbmQgdGhlaXIgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbi4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9hY3Rpb25zJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicgb24gYWxsIG1lbWJlcnMuAE1lbWJlciBhY3Rpb24gZW5hYmxlZDogIiVzIiwgdHlwZTogIiVzIiwgZXZlbnQ6ICIlcyIsIHByaW9yaXR5OiAiJXUiLCBlcnJvcl9oYW5kbGluZzogIiVzIi4ATWVtYmVyIGFjdGlvbiBkaXNhYmxlZDogIiVzIiwgdHlwZTogIiVzIiwgZXZlbnQ6ICIlcyIsIHByaW9yaXR5OiAiJXUiLCBlcnJvcl9oYW5kbGluZzogIiVzIi4ATWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiB3YXMgcmVzZXQuAEFjY2VwdGVkIGEgY29ubmVjdGlvbiB3aXRoIGRlcHJlY2F0ZWQgcHJvdG9jb2wgJyVzJyBmb3IgYWNjb3VudCBgJXNgQGAlc2AgZnJvbSBob3N0IGAlc2AuIENsaWVudCBzdXBwbGllZCB1c2VybmFtZSBgJXNgAEEgZGVwcmVjYXRlZCBUTFMgdmVyc2lvbiAlcyBpcyBlbmFibGVkIGZvciBjaGFubmVsICVzAFVzZXIgcHJvZmlsZSAnJXMnIGxvYWRlZC4gRmlyZXdhbGwgdXNlciBwcm9maWxlcyBhcmUgZGVwcmVjYXRlZCwgY29uc2lkZXIgbWlncmF0aW5nIHRvIGdyb3VwIHByb2ZpbGVzLgBJbnZhbGlkIGlucHV0IHZhbHVlIGZvciBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkICclcycuIFBsZWFzZSwgcHJvdmlkZSBhIHZhbGlkIFVVSUQuAFZhcmlhYmxlICdncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkJyBjYW5ub3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJXMnLiBJZiB5b3Ugd2FudCB0byB1c2UgdGhlIFVVSUQgb2YgJ2dyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUnIGZvciB0aGUgVVVJRCBvZiBWaWV3X2NoYW5nZV9sb2dfZXZlbnRzLCBwbGVhc2Ugc2V0ICdncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkJyB0byBBVVRPTUFUSUMuAGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJywgd2hpY2ggaXMgdGhlIHNhbWUgYXMgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4gUGxlYXNlIGNoYW5nZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIHRvIEFVVE9NQVRJQwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCAnJXMnIGlzIHRoZSBzYW1lIGFzIHRoZSBVVUlEIHZhbHVlIGZvciBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyBpbiBhIHNlcnZlciBjaGFubmVsAGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgaXMgaW5jb21wYXRpYmxlIHdpdGggZ3JvdXAuIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgJXMgbWF0Y2hlcyBzZXJ2ZXJfdXVpZCAlcy4AVGhlIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIG9wdGlvbiB2YWx1ZSAnJXMnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJXMnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBSZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUz0nJXMnIHdoaWNoIGlzIGVxdWFsIHRvIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuIFRvIGZpeCB0aGlzIGlzc3VlLCBlaXRoZXIgY2hhbmdlIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIG9yIHVzZSBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMuAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4AVW5hYmxlIHRvIGdlbmVyYXRlIHNpZG5vIGZvciBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3IgdXBkYXRpbmcgZ3JvdXBfZ3RpZF9leGVjdXRlZCBHVElEIHNldCB3aXRoIHZpZXcgY2hhbmdlIHV1aWQgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIGFkZCB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBzaWRubyBpbiB0aGUgZ3JvdXBfZ3RpZF9zaWRfbWFwIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBoYW5kbGUgdGhlIGRvbm9yJ3MgdmlldyBjaGFuZ2UgdXVpZCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiB3aGVuIGluaXRpYWxpemluZyB0aGUgY29uZmxpY3QgZGV0ZWN0aW9uIGNvbXBvbmVudC4gUG9zc2libGUgb3V0IG9mIG1lbW9yeSBlcnJvci4AVW5hYmxlIHRvIHJldHJpZXZlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgZHVyaW5nIHNlcnZlciBjaGVja3Mgb24gcmVwbGljYXRpb24gb3BlcmF0aW9ucy4AQm90aCBhdWRpdF9sb2dfbWF4X3NpemUgYW5kIGF1ZGl0X2xvZ19wcnVuZV9zZWNvbmRzIGFyZSBzZXQgdG8gbm9uLXplcm8uIGF1ZGl0X2xvZ19tYXhfc2l6ZSB0YWtlcyBwcmVjZWRlbmNlIGFuZCBhdWRpdF9sb2dfcHJ1bmVfc2Vjb25kcyBpcyBpZ25vcmVkAGF1ZGl0X2xvZ19yb3RhdGVfb25fc2l6ZSBpcyBub3QgZ3JhbnVsYXIgZW5vdWdoIGZvciB0aGUgdmFsdWUgb2YgYXVkaXRfbG9nX21heF9zaXplIHN1cHBsaWVkLiBTaG91bGQgYmUgYXQgbGVhc3QgJWQgdGltZXMgc21hbGxlci4ASW52YWxpZCB0YWJsZSBkZWZpbml0aW9uIGZvciAnJXMuJXMnLgAlcwBDYW5ub3QgaW5zdGFsbCB0aGUgJS4xOTJzIHBsdWdpbiB3aGVuIHRoZSAlLjE5MnMgcGx1Z2luIGlzIGluc3RhbGxlZC4AVGhlIHZhcmlhYmxlICVzIGhhcyBiZWVuIHJlbmFtZWQgdG8gJXMsIGFuZCB0aGUgb2xkIG5hbWUgZGVwcmVjYXRlZC4gT25seSB0aGUgb2xkIG5hbWUgd2FzIGZvdW5kIGluIHRoZSBwZXJzaXN0ZWQgdmFyaWFibGUgZmlsZS4gTmV4dCB0aW1lIHRoZSBmaWxlIGlzIHNhdmVkLCBib3RoIG5hbWVzIHdpbGwgYmUgc3RvcmVkLiBJc3N1ZSBhbnkgU0VUIFBFUlNJU1QgY29tbWFuZCB0byBzYXZlIHRoZSBmaWxlLCBnZXQgcmlkIG9mIHRoaXMgd2FybmluZywgYW5kIHByZXBhcmUgdGhlIHBlcnNpc3RlZCBjb25maWd1cmF0aW9uIGZvciB3aGVuIHRoZSB2YXJpYWJsZSBpcyByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uACVkIGVycm9yIGxvZ2dpbmcgY29tcG9uZW50KHMpIGZhaWxlZCB0byBmbHVzaC4gRm9yIGZpbGUtYmFzZWQgbG9ncyB0aGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgcGF0aCBvciBwZXJtaXNzaW9ucyBvZiB0aGUgbG9nLWZpbGUgaGF2ZSBjaGFuZ2VkLiBGYWlsdXJlIHRvIGZsdXNoIGZpbGVkLWJhc2VkIGxvZ3MgbWF5IGFmZmVjdCBsb2ctcm90YXRpb24uAFRhYmxlc3BhY2Uga2V5IGZvciAlcyBoYXMgYmVlbiByZS1lbmNyeXB0ZWQgdXNpbmcgdGhlIGxhdGVzdCBJbm5vREIgbWFzdGVyIGtleS4gSG93ZXZlciwgd2UgcmVjb21tZW5kIHRoYXQgeW91IHJlYnVpbGQgdGhlIHRhYmxlIGZvciBiZXR0ZXIgc2VjdXJpdHkuAFRhYmxlc3BhY2Uga2V5IGZvciAlcyBoYXMgYmVlbiByZS1lbmNyeXB0ZWQgdXNpbmcgdGhlIGxhdGVzdCBJbm5vREIgbWFzdGVyIGtleS4gSG93ZXZlciwgd2UgcmVjb21tZW5kIHRoYXQgeW91IHJlZW5jcnlwdCB0aGUgdGFibGVzcGFjZSBmb3IgYmV0dGVyIHNlY3VyaXR5LgBQYWdlIEFyY2hpdmVyJ3MgZG91Ymxld3JpdGUgYnVmZmVyIGluaXRpYWxpc2F0aW9uIGZhaWxlZC4gUGFnZSB0cmFja2luZyBpcyBhdCByaXNrIG9mIGxvc2luZyB0cmFja2VkIGluZm9ybWF0aW9uLgBUaGVyZSBpcyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIHJlZG8gbG9nIGR1cmluZyByZWNvdmVyeSB0byBwZXJmb3JtIHBlbmRpbmcgaWJ1ZiBtZXJnZXMuIFBsZWFzZSByZXRyeSBzdGFydGluZyBNeVNRTCB3aXRoIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTQuAFRoZXJlIGlzIG5vdCBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgcmVkbyBsb2cgZHVyaW5nIHJlY292ZXJ5LCByZXN0b3JlIGZyb20gYmFja3VwIChvciByZXRyeSB3aXRoIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTYpLgBhdWRpdF9sb2dfZm9ybWF0X3VuaXhfdGltZXN0YW1wIGlzIGFwcGxpY2FibGUgb25seSB3aGVuIGF1ZGl0X2xvZ19mb3JtYXQgPSBKU09OLgBSZXRyeSB0aGUgc3RhdGVtZW50IHVzaW5nIHRoZSBwcmltYXJ5IHN0b3JhZ2UgZW5naW5lLgBQYXJhbGxlbCBpbml0aWFsaXphdGlvbiBvZiByc2VnIGNvbXBsZXRlAFRpbWUgdGFrZW4gdG8gaW5pdGlhbGl6ZSByc2VnIHVzaW5nICV1IHRocmVhZDogJXUgbXMuAERETCBmYWlsZWQgdG8gY3JlYXRlIGEgdGhyZWFkIHRvIGxvYWQgYW4gaW5kZXgsIGZhbGwgYmFjayB0byBzaW5nbGUgdGhyZWFkAERlYnVnX2NoZWNrX25vX2xhdGNoaW5nIGZhaWxlZCwgc2xvdC0+dHlwZT0lZABGYWlsZWQgdG8gZXN0YWJsaXNoIE15U1FMIGNsaWVudCBjb25uZWN0aW9uIGluIEdyb3VwIFJlcGxpY2F0aW9uLiBFcnJvciBlc3RhYmxpc2hpbmcgY29ubmVjdGlvbi4gUGxlYXNlIHJlZmVyIHRvIHRoZSBtYW51YWwgdG8gbWFrZSBzdXJlIHRoYXQgeW91IGNvbmZpZ3VyZWQgR3JvdXAgUmVwbGljYXRpb24gcHJvcGVybHkgdG8gd29yayB3aXRoIE15U1FMIFByb3RvY29sIGNvbm5lY3Rpb25zLgBGYWlsZWQgdG8gZXN0YWJsaXNoIE15U1FMIGNsaWVudCBjb25uZWN0aW9uIGluIEdyb3VwIFJlcGxpY2F0aW9uLiBFcnJvciBzZW5kaW5nIGNvbm5lY3Rpb24gZGVsZWdhdGlvbiBjb21tYW5kLiBQbGVhc2UgcmVmZXIgdG8gdGhlIG1hbnVhbCB0byBtYWtlIHN1cmUgdGhhdCB5b3UgY29uZmlndXJlZCBHcm91cCBSZXBsaWNhdGlvbiBwcm9wZXJseSB0byB3b3JrIHdpdGggTXlTUUwgUHJvdG9jb2wgY29ubmVjdGlvbnMuAFVuYWJsZSB0byByZWFkIHRoZSByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBjb25maWd1cmF0aW9uIGR1cmluZyBncm91cCBtZW1iZXJzaGlwIGNoYW5nZS4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyJywgJ215c3FsLnJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVGhpcyBtZW1iZXIgam9pbmVkIGEgZ3JvdXAgb24gd2hpY2ggYWxsIG1lbWJlcnMgZG8gbm90IHN1cHBvcnQgcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgaW50ZWdyYXRpb24gb24gR3JvdXAgUmVwbGljYXRpb24sIGFzIHN1Y2ggaXQgZGlkIHJlc2V0IGl0cyByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBjb25maWd1cmF0aW9uIHRvIHRoZSBkZWZhdWx0IG9uZS4AVW5hYmxlIHRvIHJlc2V0IHRvIHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGRlZmF1bHQgY29uZmlndXJhdGlvbiBvbiBtZW1iZXIgam9pbi4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyJywgJ215c3FsLnJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVW5hYmxlIHRvIHBhcnNlIHRoZSByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBjb25maWd1cmF0aW9uIHNlbnQgYnkgdGhlIGdyb3VwIG9uIG1lbWJlciBqb2luLgBVbmFibGUgdG8gc2V0IFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgb24gYSBub24tZXhpc3RlbnQgb3IgbWlzY29uZmlndXJlZCByZXBsaWNhdGlvbiBjaGFubmVsICclcycsIHBsZWFzZSBjcmVhdGUgdGhlIGNoYW5uZWwgYW5kIHJlam9pbiB0aGUgc2VydmVyIHRvIHRoZSBncm91cC4AVW5hYmxlIHRvIHJlZ2lzdGVyIHRoZSBsaXN0ZW5lciAncmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXJfY29uZmlndXJhdGlvbicgdG8gdGhlIHNlcnZpY2UgJ2dyb3VwX3JlcGxpY2F0aW9uX21lc3NhZ2Vfc2VydmljZV9yZWN2Jy4AVGhpcyBzZXJ2ZXIgaXMgbm90IGFibGUgdG8gcmVhY2ggYSBtYWpvcml0eSBvZiBtZW1iZXJzIGluIHRoZSBncm91cC4gVGhpcyBzZXJ2ZXIgd2lsbCBza2lwIHRoZSByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBoYW5kbGluZyB1bnRpbCB0aGlzIHNlcnZlciBpcyBiYWNrIHRvIHRoZSBncm91cCBtYWpvcml0eS4AVGhpcyBzZXJ2ZXIgaXMgYmFjayB0byB0aGUgZ3JvdXAgbWFqb3JpdHkuIFJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGhhbmRsaW5nIGlzIHJlc3VtZWQuAEVycm9yIGluY3JlbWVudGluZyBtZW1iZXIgYWN0aW9uIGNvbmZpZ3VyYXRpb24gdmVyc2lvbiBmb3IgJXMuJXMgdGFibGUuAFRoZSAnJXMnIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhpcyBzZXJ2ZXIgaXMgYSBncm91cCBzZWNvbmRhcnkuAENsb25lIERETCBOb3RpZmljYXRpb246ICVzAENsb25lIERETCBBUFBMWTogJXMAQ2xvbmUgRERMIEludmFsaWRhdGUgOiAlcwBFbmNyeXB0aW9uIGtleSBpcyBsb2FkZWQgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBJZ25vcmluZyBlbmNyeXB0aW9uIElORk8gc2l6ZSBpbiByZWRvIGxvZzogJXp1LCBleHBlY3RlZDogJXp1AE9wdGlvbiAtLWF1dGhlbnRpY2F0aW9uLXBvbGljeSBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZS4gUGxlYXNlIGNoZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXV0aGVudGljYXRpb24gcGx1Z2lucyBhcmUgdmFsaWQuAFNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIGR1cmluZyByZWdpc3RyYXRpb24uAEJ1ZmZlciB0b28gc21hbGwgdG8gaG9sZCByZWdpc3RyYXRpb24gY2hhbGxlbmdlIHJlc3BvbnNlLgBGSURPIGRldmljZSBhdXRoZW50aWNhdG9yIGRhdGEgY29ycnVwdC4ARklETyBkZXZpY2Ugc2lnbmF0dXJlIGNvcnJ1cHQuAFNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZmFpbGVkIGR1cmluZyBhdXRoZW50aWNhdGlvbi4AT3V0IG9mIG1lbW9yeS4AQ2FuJ3QgaW5pdGlhbGl6ZSBsb2dnaW5nIHNlcnZpY2UAUmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggR1RJRF9PTkxZPTEsIHdoaWNoIGlzIGludmFsaWQgd2hlbiBHVElEX01PREUgPD4gT04uIElmIHlvdSBpbnRlbmQgdG8gZGlzYWJsZSBHVElEcyBpbiB0aGUgcmVwbGljYXRpb24gdG9wb2xvZ3ksIGNoYW5nZSBHVElEX09OTFkgdG8gMC4AVGhlIHJlcGxpY2F0aW9uIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc291cmNlIG1heSBiZSBvdXQtb2YtZGF0ZSBvbiBjaGFubmVsICclLjE5MnMnLCBkdWUgdG8gdGhlIHVzZSBvZiBHVElEX09OTFk9MS4gVGhlIG91dC1vZi1kYXRlIHBvc2l0aW9ucyBjYW4gc3RpbGwgYmUgdXNlZCBpbiBzb21lIGNhc2VzIHNvLCBpbiBvcmRlciB0byB1cGRhdGUgdGhlbSwgd2Ugc3VnZ2VzdCB0aGF0IHlvdSBzdGFydCB0aGUgcmVwbGljYXRpb24gdG8gcmVjZWl2ZSBhbmQgYXBwbHkgYXQgbGVhc3Qgb25lIHRyYW5zYWN0aW9uLCB3aGljaCB3aWxsIHNldCB0aGUgcG9zaXRpb25zIHRvIHZhbGlkIHZhbHVlcy4AQ291bGQgbm90IG9wZW4gcmVsYXkgbG9nOiAlcwBBdXRoZW50aWNhdGlvbiBwbHVnaW4gbm90IGluaXRpYWxpemVkLgBDYW5ub3QgdXNlIHRoZSBnZW5lcmF0ZWQgcHJpdmF0ZSBrZXkgZmlsZS4AVW5hdmFpbGFibGUgcHVibGljIGtleSB3aXRoIGZpbmdlcnByaW50ICVzIGZvciB1c2VyICVzIGluIHRlbmFuY3kgJXMgLgBDYW5ub3Qgb2J0YWluIHRoZSBPQ0kgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBJTURTIHNlcnZpY2UuAENhbm5vdCBpbml0aWFsaXplIHRoZSBJQU0gc2VydmljZS4ASW52YWxpZCBhdXRoZW50aWNhdGlvbiBzdHJpbmcgZGV0YWlscyBmb3IgdXNlcjogYCVzYEBgJXNgLgBOb25lIG9mIHRoZSBncm91cHMgcmV0dXJuZWQgYnkgSUFNIG1hdGNoZXMgYW55IG9mIHRoZSBlbnRyaWVzIGZyb20gYXV0aGVudGljYXRpb24gc3RyaW5nLgBVc2VyIGlzIG5vdCBwYXJ0IG9mIGFueSBncm91cHMuIEhvd2V2ZXIsIGFjY291bnQgaXMgY29uZmlndXJlZCB0byB1c2UgZ3JvdXAgbWFwcGluZy4AUmVjZWl2ZWQgT3BlblNTTCBlcnJvcjogJXMgd2hpbGUgYXV0aGVudGljYXRpbmcgdXNlciAlcyB3aXRoIGZpbmdlcnByaW50ICVzIGluIHRlbmFuY3kgJXMgLgAlczogV2FybmluZyBMZXZlbCAxICglbGx1IE1pQik6IGF2YWlsYWJsZT0lbGx1IE1pQiwgdG90YWw9JWxsdSBNaUIsIHVzZWQ9JS4yZiUlLCBteXNxbGQ9JWxsdSBNaUIAJXM6IFdhcm5pbmcgTGV2ZWwgMiAoJWxsdSBNaUIpOiBhdmFpbGFibGU9JWxsdSBNaUIsIHRvdGFsPSVsbHUgTWlCLCB1c2VkPSUuMmYlJSwgbXlzcWxkPSVsbHUgTWlCACVzOiBXYXJuaW5nIExldmVsIDMgKCVsbHUgTWlCKTogYXZhaWxhYmxlPSVsbHUgTWlCLCB0b3RhbD0lbGx1IE1pQiwgdXNlZD0lLjJmJSUsIG15c3FsZD0lbGx1IE1pQgBUaGUgbWVtYmVyICVzOiV1LCB3aXRoIFVVSUQ6ICVzLCB3YXMgc2V0IGFzIHRoZSBzaW5nbGUgcHJlZmVycmVkIGNvbnNlbnN1cyBsZWFkZXIuAFNvbWV0aGluZyB3ZW50IHdyb25nIHRyeWluZyB0byBzZXQgdGhlIG1lbWJlciAlczoldSwgd2l0aCBVVUlEOiAlcywgYXMgdGhlIHNpbmdsZSBwcmVmZXJyZWQgY29uc2Vuc3VzIGxlYWRlci4gUGxlYXNlIHF1ZXJ5IHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfY29tbXVuaWNhdGlvbl9pbmZvcm1hdGlvbiB0YWJsZSB0byBzZWUgd2hldGhlciB0aGUgb3BlcmF0aW9uIHRvb2sgZWZmZWN0LCBpLmUuIHdoZXRoZXIgdGhlIHByZWZlcnJlZCBjb25zZW5zdXMgbGVhZGVyIG1hdGNoZXMgdGhlIGN1cnJlbnQgcHJpbWFyeS4gSWYgbm90LCBjb25zaWRlciBlbGVjdGluZyBhIGRpZmZlcmVudCBwcmltYXJ5IHRvIHRyeSBhZ2Fpbi4gUGxlYXNlIGNoZWNrIHRoZSBlcnJvciBsb2cgYW5kIEdDU19ERUJVR19UUkFDRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0aGF0IG1heSBoZWxwIHVuZGVyc3RhbmRpbmcgd2hhdCB3ZW50IHdyb25nLgBBbGwgbWVtYmVycyB3ZXJlIHNldCBhcyBjb25zZW5zdXMgbGVhZGVycy4AU29tZXRoaW5nIHdlbnQgd3JvbmcgdHJ5aW5nIHRvIHNldCBhbGwgbWVtYmVycyBhcyBjb25zZW5zdXMgbGVhZGVycy4gUGxlYXNlIHF1ZXJ5IHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfY29tbXVuaWNhdGlvbl9pbmZvcm1hdGlvbiB0YWJsZSB0byBzZWUgd2hldGhlciB0aGUgb3BlcmF0aW9uIHRvb2sgZWZmZWN0LCBpLmUuIHdoZXRoZXIgdGhlIGNvbnNlbnN1cyBsZWFkZXJzIG1hdGNoIGFsbCBtZW1iZXJzLiBJZiBub3QsIGNvbnNpZGVyIHJlc2V0dGluZyB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBwcm90b2NvbCB0byBhIHZlcnNpb24gPCA4LjAuMjIsIG9yIHN3aXRjaCB0byBzaW5nbGUtcHJpbWFyeSBtb2RlIGFuZCBiYWNrIGFnYWluIHRvIG11bHRpLXByaW1hcnkgbW9kZSwgdG8gdHJ5IGFnYWluLiBQbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBhbmQgR0NTX0RFQlVHX1RSQUNFIGZvciBtb3JlIGluZm9ybWF0aW9uIHRoYXQgbWF5IGhlbHAgdW5kZXJzdGFuZGluZyB3aGF0IHdlbnQgd3JvbmcuAFRoaXMgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX3BheG9zX3NpbmdsZV9sZWFkZXIgb3B0aW9uIHZhbHVlIG9mICclZCcgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAncyB2YWx1ZSAoJyVkJykuIFRoaXMgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBJbnZhbGlkIGFuZC9vciBjb3JydXB0ZWQgbXVsdGkgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgaW4gVXNlcl9hdHRyaWJ1dGVzIGNvbHVtbiBpbiBteXNxbC51c2VyIHRhYmxlLiAiJXMiLgBQbHVnaW4gJyUtLjE5MnMnIGlzIG5vdCBsb2FkZWQ7IElnbm9yaW5nIHVzZXIAJXM6IFRoZSBjaGFyYWN0ZXIgc2V0ICVzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgJXMgaW5zdGVhZC4AJXM6ICclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgJXMuIFBsZWFzZSBjb25zaWRlciB1c2luZyAlcyB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgBNaXNzaW5nIGRhdGEgZGlyZWN0b3J5IGZvciBJQ1UgcmVndWxhciBleHByZXNzaW9uczogJXMuAE1vcmUgdGhhbiA5MCUlIG9mIGZpbGVzIG9wZW5lZCBvdXQgb2YgdGhlIGlubm9kYl9vcGVuX2ZpbGVzIGxpbWl0IGFyZSBmaWxlcyB0aGF0IGFyZSBub3QgZWFzeSB0byBjbG9zZS4gVGhlIHBlcmZvcm1hbmNlIG9mIHN5c3RlbSBtYXkgZGVncmFkZS4gQ29uc2lkZXIgaW5jcmVhc2luZyB2YWx1ZSBvZiB0aGUgaW5ub2RiX29wZW5fZmlsZXMgc3lzdGVtIHZhcmlhYmxlLiBUaGVyZSBhcmUgJXp1IHN1Y2ggZmlsZXMgb3BlbmVkIG91dCBvZiB0aGUgdG90YWwgbGltaXQgZm9yIGFsbCBmaWxlcyBvcGVuZWQgb2YgJXp1LgBUcnlpbmcgdG8gb3BlbiBhIGZpbGUgZm9yICVsbGQgc2Vjb25kcy4gQ29uZmlndXJhdGlvbiBvbmx5IGFsbG93cyBmb3IgJXp1IG9wZW4gZmlsZXMuIENvbnNpZGVyIHNldHRpbmcgaW5ub2Jhc2Vfb3Blbl9maWxlcyBoaWdoZXIuAENvbm5lY3Rpb24gY2xvc2VkLiBHbG9iYWwgY29ubmVjdGlvbiBtZW1vcnkgbGltaXQgJWxsdSBieXRlcyBleGNlZWRlZC4gQ29uc3VtZWQgJWxsdSBieXRlcy4AQ29ubmVjdGlvbiBjbG9zZWQuIENvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAEF1ZGl0IExvZyBpcyBkaXNhYmxlZC4gRW5hYmxlIGl0IHdpdGggYXVkaXRfbG9nX2Rpc2FibGUgPSBmYWxzZS4AT3B0aW9uIC0tdGxzLXZlcnNpb24gb3IgLS1hZG1pbi10bHMtdmVyc2lvbiBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZSAlcy4AUmVsYXkgbG9nIHJlY292ZXJ5IG9uIGNoYW5uZWwgd2l0aCBHVElEX09OTFk9MS4gVGhlIGNoYW5uZWwgd2lsbCBzd2l0Y2ggdG8gYSBuZXcgcmVsYXkgbG9nIGFuZCB0aGUgR1RJRCBwcm90b2NvbCB3aWxsIGJlIHVzZWQgdG8gcmVwbGljYXRlIHVuYXBwbGllZCB0cmFuc2FjdGlvbnMuAE51bWJlciBvZiBTVEFOREJZX1NFUlZFUiB2YWx1ZXMgZXhjZWVkZWQgbWF4aW11bSBsaW1pdCBvZiA2NC4AU291cmNlIGtleXJpbmcgZG9lcyBub3QgaGF2ZSBhbnkga2V5cyB0byBtaWdyYXRlLgBDYW5ub3QgcGVyc2lzdCBTRU5TSVRJVkUgc3lzdGVtIHZhcmlhYmxlcyBiZWNhdXNlIGtleXJpbmcgY29tcG9uZW50IHN1cHBvcnQgaXMgdW5hdmFpbGFibGUgYW5kIHBlcnNpc3Rfc2Vuc2l0aXZlX3ZhcmlhYmxlc19pbl9wbGFpbnRleHQgaXMgc2V0IHRvIE9GRi4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IGtleXJpbmcgc2VydmljZXMgYXJlIGFjdGl2ZSBhbmQgcmVxdWlyZWQga2V5cyBhcmUgYXZhaWxhYmxlLgBDYW5ub3QgaW50ZXJwcmV0IHBlcnNpc3RlZCBTRU5TSVRJVkUgc3lzdGVtIHZhcmlhYmxlcy4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IGtleXJpbmcgc2VydmljZXMgYXJlIGFjdGl2ZSBhbmQgcmVxdWlyZWQga2V5cyBhcmUgYXZhaWxhYmxlLgBLZXlyaW5nIGhhcyB0byBiZSBsb2FkZWQgdGhyb3VnaCBtYW5pZmVzdCBmaWxlIGluIG9yZGVyIHRvIHN1cHBvcnQgc2VjdXJlIHN0b3JhZ2UgZm9yIHBlcnNpc3RlZCB2YXJpYWJsZXMAQ291bGQgbm90IGZpbmQgbWFzdGVyIGtleSAlcyBpbiBrZXlyaW5nAEEgbmV3IG1hc3RlciBrZXkgJXMgY291bGQgbm90IGJlIGdlbmVyYXRlZABGYWlsZWQgdG8gZW5jcnlwdCAlcyB1c2luZyAlcwBGYWlsZWQgdG8gZGVjcnlwdCAlcyB1c2luZyAlcwBQZXJzaXN0aW5nIFNFTlNJVElWRSB2YXJpYWJsZXMgaW4gZW5jcnlwdGVkIGZvcm0gcmVxdWlyZXMga2V5cmluZyBjb21wb25lbnQgbG9hZGVkIHRocm91Z2ggbWFuaWZlc3QgZmlsZS4AVXNpbmcgamVtYWxsb2MuZGxsIGZvciBteV9tYWxsb2MgYW5kIHV0OjptYWxsb2MgZXRjLgAlcy4AJXMuACVzLgBQYXNzd29yZCBmb3IgdGhlIGFjY291bnQgJyUtLjQ4cydAJyUtLjY0cycgaGFzIGV4cGlyZWQuIFRvIGxvZyBpbiwgZWl0aGVyIGNoYW5nZSBpdCB1c2luZyBhIGNsaWVudCB0aGF0IHN1cHBvcnRzIGV4cGlyZWQgcGFzc3dvcmRzIG9yIHNlbmQgdGhlIGNoYW5nZSByZXF1ZXN0IHRvIGFuIGFkbWluaXN0cmF0b3IuAFRocmVhZCBwb29sIHBsdWdpbiBzdGFydGVkIHN1Y2Nlc3NmdWxseSB3aXRoIHBhcmFtZXRlcnM6ICVzAHRocmVhZF9wb29sX2RlZGljYXRlZF9saXN0ZW5lcnMgY2Fubm90IGJlIHNldCB1bmxlc3MgdGhyZWFkX3Bvb2xfbWF4X3RyYW5zYWN0aW9uc19saW1pdCA+IDAAJXMAJXMAVGhlIHJlZG8gbG9nIGZpbGUgJXMgaXMgZW1wdHksIHdoaWNoIGluZGljYXRlcyBpdCB3YXMgbm90IGdlbmVyYXRlZCBieSBJbm5vREIgb3IgYmVjb21lIGNvcnJ1cHRlZC4gUGxlYXNlIHJlc3RvcmUgdGhlIGNvcnJlY3QgZmlsZSBvciB0cnkgcmVjb3ZlcmluZyB3aXRob3V0IHRoZSByZWRvIGZpbGVzLCBpbiByZWFkLW9ubHkgbW9kZSwgYnkgcHJvdmlkaW5nIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTYuAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIHNtYWxsZXIgdGhhbiAlbGx1IGJ5dGVzLCB3aGljaCBpbmRpY2F0ZXMgaXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkgSW5ub0RCIG9yIGJlY29tZSBjb3JydXB0ZWQuIFBsZWFzZSByZXN0b3JlIHRoZSBjb3JyZWN0IGZpbGUuAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIGxhcmdlciB0aGFuICVsbHUgYnl0ZXMsIHdoaWNoIGluZGljYXRlcyBpdCB3YXMgbm90IGdlbmVyYXRlZCBieSBJbm5vREIgb3IgYmVjb21lIGNvcnJ1cHRlZC4gUGxlYXNlIHJlc3RvcmUgdGhlIGNvcnJlY3QgZmlsZS4ARmFpbGVkIHRvIHJlYWQgaGVhZGVyIG9mIHRoZSByZWRvIGxvZyBmaWxlICVzAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSByZWRvIGxvZyBkaXJlY3RvcnkgJXMgaGFzIHJlZG8gbG9nIGZpbGVzIGluc2lkZS4gQWJvcnRpbmcuAEZhaWxlZCB0byBsaXN0IHJlZG8gbG9nIGZpbGVzIGluIHRoZSByZWRvIGxvZyBkaXJlY3RvcnkgJXMATmVpdGhlciBmb3VuZCAlcyBzdWJkaXJlY3RvcnksIG5vciAlcyogZmlsZXMgaW4gJXMAQ2Fubm90IHJlc3RvcmUgY2xvbmVkIGRhdGEgZGlyZWN0b3J5LCBJbm5vREIgcnVubmluZyBpbiByZWFkLW9ubHkgbW9kZSEARXJyb3IgJWQgZW5jb3VudGVyZWQgd2hlbiB3cml0aW5nIHRvIHRoZSByZWRvIGxvZyBmaWxlOiAlcy4AUmVkbyBsb2cgd3JpdGVyIGlzIHdhaXRpbmcgZm9yIGEgbmV3IHJlZG8gbG9nIGZpbGUuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBGb3VuZCBjaGVja3BvaW50IExTTiAlbGx1IGluIGEgcmVkbyBsb2cgZmlsZSAlcywgYnV0IHRoZSBmaWxlIHJlcHJlc2VudHMgcmFuZ2Ugb2YgTFNOIHZhbHVlcyBbJWxsdSwgJWxsdSksIHNvIHRoZSBmaWxlIGlzIGNvcnJ1cHRlZC4AUmVkbyBsb2cgaXMgcnVubmluZyBvdXQgb2YgZnJlZSBzcGFjZSwgcGF1c2luZyB1c2VyIHRocmVhZHMuLi4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuAFJlZG8gbG9nIHJlY2xhaW1lZCBzb21lIGZyZWUgc3BhY2UsIHJlc3VtaW5nIHVzZXIgdGhyZWFkcy4ASWdub3JlZCBkZXByZWNhdGVkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlubm9kYl9sb2dfZmlsZV9zaXplLiBVc2VkIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSBpbnN0ZWFkLgBJZ25vcmVkIGRlcHJlY2F0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaW5ub2RiX2xvZ19maWxlc19pbl9ncm91cC4gVXNlZCBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgaW5zdGVhZC4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyB3aGVuIGlubm9kYi1mb3JjZS1yZWNvdmVyeSA+IDAuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgaW4gcmVhZC1vbmx5IG1vZGUgKC0taW5ub2RiLXJlYWQtb25seSkuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgb24gY2xvbmVkIGRhdGEgZGlyZWN0b3J5LiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIGJlY2F1c2UgdGhleSBhcmUgbWFya2VkIGFzIHVuaW5pdGlhbGl6ZWQuIFBsZWFzZSB1c2UgYW4gb2xkZXIgdmVyc2lvbiBvZiBNeVNRTCAtIHJlY292ZXIgYW5kIHNodXRkb3duICh3aXRoIGlubm9kYi1mYXN0LXNodXRkb3duIDwgMikuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgd2hlbiB0aGUgcmVkbyBsb2cgaXMgY29ycnVwdGVkLiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIHdoZW4gdGhlcmUgaXMgbm9uLXBlcnNpc3RlZCBERCBtZXRhZGF0YSBpbiByZWRvLiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzLCBiZWNhdXNlIElubm9EQiBmYWlsZWQgdG8gcmVhY2ggc3RhdGUgaW4gd2hpY2ggcmVkbyBsb2cgaXMgbG9naWNhbGx5IGVtcHR5LiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBGYWlsZWQgdG8gcmVzaXplIHRoZSByZWRvIGxvZyBzeW5jaHJvbm91c2x5LCBiZWNhdXNlIElubm9EQiBmYWlsZWQgdG8gcmVhY2ggc3RhdGUgaW4gd2hpY2ggcmVkbyBsb2cgaXMgbG9naWNhbGx5IGVtcHR5LiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBjb21lcyBmcm9tIG90aGVyIGRhdGEgZGlyZWN0b3J5IHRoYW4gcmVkbyBsb2cgZmlsZSAlcy4AVGhlIHJlZG8gbG9nIGZpbGUgJXMgaGFzIGludmFsaWQgc3RhcnRfbHNuICVsbHUuAFRoZSByZWRvIGxvZyBmaWxlICVzIGhhcyBzdGFydF9sc24gJWxsdSBidXQgZXhwZWN0ZWQgJWxsdSAoZW5kX2xzbiBvZiB0aGUgcHJldmlvdXMgcmVkbyBsb2cgZmlsZSkuAE1pc3NpbmcgcmVkbyBsb2cgZmlsZSAlcyAod2l0aCBzdGFydF9sc24gPSAlbGx1KS4AVGhlIGxhdGVzdCBmb3VuZCBjaGVja3BvaW50IGlzIGF0IGxzbiA9ICVsbHUgaW4gcmVkbyBsb2cgZmlsZSAlcy4AVXNlciBoYXMgc2V0IGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSB0byAlbGx1TS4AUmVkbyBsb2cgaGFzIGJlZW4gcmVxdWVzdGVkIHRvIHJlc2l6ZSBmcm9tICVsbHVNIHRvICVsbHVNLgBSZWRvIGxvZyByZXNpemUgaGFzIGJlZW4gY2FuY2VsbGVkLgBSZWRvIGxvZyBoYXMgYmVlbiByZXNpemVkIHRvICVsbHVNLgBVcGdyYWRpbmcgcmVkbyBsb2c6ICVsbHVNLCBMU049JWxsdS4ATWFya2VkIHRoZSBjdXJyZW50IHJlZG8gbG9nIGZpbGUgJXMgYXMgaW5jb21wbGV0ZS4ARmFpbGVkIHRvIHJlbW92ZSByZWRvIGxvZyBmaWxlICVzLgBGYWlsZWQgdG8gcmVuYW1lICVzIHdoZW4gY3JlYXRpbmcgcmVkbyBsb2cgZmlsZSAlcyAoZXJyb3I6ICVkKQBSZWRvIGxvZyBmaWxlcyBjcmVhdGVkIGJ5IHVua25vd24gY3JlYXRvciAlcy4ARm91bmQgZXhpc3RpbmcgcmVkbyBsb2cgZmlsZXMsIGJ1dCBhdCBsZWFzdCBvbmUgaXMgbWlzc2luZy4gSXQgaXMgdW5rbm93biBpZiByZWNvdmVyeSBjb3VsZCByZWFjaCBwaHlzaWNhbGx5IGNvbnNpc3RlbnQgc3RhdGUuIFBsZWFzZSBjb25zaWRlciByZXN0b3JpbmcgZnJvbSBiYWNrdXAgb3IgcHJvdmlkaW5nIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5ID4gMC4ARm91bmQgcmVkbyBsb2cgZmlsZSAlcyB3aGljaCBoYXMgZm9ybWF0ICh2JWx1KSBhbmQgaXMgc3RvcmVkIG91dHNpZGUgI2lubm9kYl9yZWRvLgBGb3VuZCByZWRvIGxvZyBmaWxlICVzIHdoaWNoIGhhcyBmb3JtYXQgKHYlbHUpIGFuZCBpcyBzdG9yZWQgaW5zaWRlICNpbm5vZGJfcmVkby4ARm91bmQgcmVkbyBsb2cgZmlsZXMgd2l0aCBkaWZmZXJlbnQgZm9ybWF0czogJXMgaGFzIGZvcm1hdCB2JWx1LCAlcyBoYXMgZm9ybWF0IHYlbHUuAE1pc3NpbmcgaWJfbG9nZmlsZTAgaW4gdGhlIGRpcmVjdG9yeSAlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgc2VydmljZXMgcmVxdWlyZWQgdG8gaGFuZGxlIHJlZG8gbG9nIFBGUyB0YWJsZXMuAEZhaWxlZCB0byBjcmVhdGUgcmVkbyBsb2cgUEZTIHRhYmxlcy4AVHJ1bmNhdGluZyByZWRvIGxvZyBmaWxlICVzLi4uAEZhaWxlZCB0byByZXNpemUgdW51c2VkIHJlZG8gbG9nIGZpbGUgJXMgdG8gJWxsdSBNQiAoJXMpLgBGYWlsZWQgdG8gcmVtb3ZlIHVudXNlZCByZWRvIGxvZyBmaWxlICVzLgBGYWlsZWQgdG8gcmVuYW1lIHVudXNlZCByZWRvIGxvZyBmaWxlICVzIHRvICVzLgBGYWlsZWQgdG8gbWFyayB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcyBhcyBpbiB1c2UgKGJ5IHJlbmFtaW5nIHRvICVzKS4ARmFpbGVkIHRvIG1hcmsgcmVkbyBsb2cgZmlsZSAlcyBhcyB1bnVzZWQgKGJ5IHJlbmFtaW5nIHRvICVzKS4AT3B0aW9uIGlubm9kYl9kZWRpY2F0ZWRfc2VydmVyIGlzIGlnbm9yZWQgZm9yIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSwgYmVjYXVzZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHksIGlubm9kYl9sb2dfZmlsZV9zaXplIG9yIGlubm9kYl9sb2dfZmlsZXNfaW5fZ3JvdXAgaXMgc3BlY2lmaWVkIGV4cGxpY2l0bHkuIFJlZG8gbG9nIGNhcGFjaXR5OiAlbGx1TS4ARGVwcmVjYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW5ub2RiX2xvZ19maWxlX3NpemUgYW5kL29yIGlubm9kYl9sb2dfZmlsZXNfaW5fZ3JvdXAgaGF2ZSBiZWVuIHVzZWQgdG8gY29tcHV0ZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHk9JWxsdS4gUGxlYXNlIHVzZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgaW5zdGVhZC4AVGhpcyBtZW1iZXIgd2FzIHVuYWJsZSB0byBsb2cgdGhlIFZpZXdfY2hhbmdlX2xvZ19ldmVudCBpbnRvIHRoZSBiaW5hcnkgbG9nLCBoZW5jZSBpdCB3aWxsIGxlYXZlIHRoZSBncm91cC4gUGxlYXNlIGNoZWNrIHRoYXQgdGhlcmUgaXMgYXZhaWxhYmxlIGRpc2sgc3BhY2UgYW5kIGFkZCB0aGUgbWVtYmVyIGJhY2sgdG8gdGhlIGdyb3VwLgBGb3VuZCBpbnZhbGlkIGV2ZW50IHNlcXVlbmNlIHdoaWxlIHJlY292ZXJpbmcgZnJvbSBiaW5hcnkgbG9nIGZpbGUgJyVzJywgYmV0d2VlbiBwb3NpdGlvbnMgJWxsdSBhbmQgJWxsdTogJXMuIFRoZSByZWNvdmVyeSBwcm9jZXNzIHdhcyBzdG9wcGVkIGVhcmx5IGFuZCBubyB0cmFuc2FjdGlvbiB3YXMgcmVjb3ZlcmVkLiBTaWRlIGVmZmVjdHMgbWF5IGJlIHRyYW5zYWN0aW9ucyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgYmV0d2VlbiB0aGUgYmluYXJ5IGxvZyBhbmQgdGhlIHN0b3JhZ2UgZW5naW5lcywgb3IgdHJhbnNhY3Rpb25zIGtlcHQgYnkgc3RvcmFnZSBlbmdpbmVzIGluIGEgcHJlcGFyZWQgc3RhdGUgKHBvc3NpYmx5IGhvbGRpbmcgbG9ja3MpLiBFaXRoZXIgZml4IHRoZSBpc3N1ZXMgd2l0aCB0aGUgYmluYXJ5IGxvZyBvciwgdG8gcmVsZWFzZSBwb3NzaWJseSBhY3F1aXJlZCBsb2NrcywgZGlzYWJsZSB0aGUgYmluYXJ5IGxvZyBkdXJpbmcgc2VydmVyIHJlY292ZXJ5LiBOb3RlIHRoYXQgZGlzYWJsaW5nIHRoZSBiaW5hcnkgbG9nIG1heSBsZWFkIHRvIGxvc3Mgb2YgdHJhbnNhY3Rpb25zIHRoYXQgd2VyZSBhbHJlYWR5IGFja25vd2xlZGdlZCBhcyBzdWNjZXNzZnVsIHRvIGNsaWVudCBjb25uZWN0aW9ucyBhbmQgbWF5IGhhdmUgYmVlbiByZXBsaWNhdGVkIHRvIG90aGVyIHNlcnZlcnMgaW4gdGhlIHRvcG9sb2d5LgBTdG9yYWdlIGVuZ2luZXMgZmFpbGVkIHRvIHJlY292ZXIgb25lIG9yIG1vcmUgdHJhbnNhY3Rpb25zLiBUaGUgcmVjb3ZlcnkgcHJvY2VzcyB3YXMgc3RvcHBlZCBlYXJseSwgY2hlY2sgcHJldmlvdXMgbWVzc2FnZXMgZm9yIHRoZSBkZXRhaWxzIG9uIGZhaWxlZCB0cmFuc2FjdGlvbnMuIFNpZGUgZWZmZWN0cyBtYXkgYmUgdHJhbnNhY3Rpb25zIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSBiZXR3ZWVuIHRoZSBiaW5hcnkgbG9nIGFuZCB0aGUgc3RvcmFnZSBlbmdpbmVzLCBvciB0cmFuc2FjdGlvbnMga2VwdCBieSBzdG9yYWdlIGVuZ2luZXMgaW4gYSBwcmVwYXJlZCBzdGF0ZSAocG9zc2libHkgaG9sZGluZyBsb2NrcykuIEVpdGhlciBmaXggdGhlIGlzc3VlcyB3aXRoIHRoZSBzdG9yYWdlIGVuZ2luZSAob3V0LW9mLW1lbW9yeSwgbm8gZGlzayBzcGFjZSwgZXRjKSBvciwgdG8gcmVsZWFzZSBwb3NzaWJseSBhY3F1aXJlZCBsb2NrcyBoZWxkIGJ5IFhBIHRyYW5zYWN0aW9ucywgZGlzYWJsZSB0aGUgYmluYXJ5IGxvZyBkdXJpbmcgc2VydmVyIHJlY292ZXJ5IGFuZCBjaGVjayBjb25zaXN0ZW5jeSBiZXR3ZWVuIHN0b3JhZ2UgZW5naW5lcyBhbmQgYmluYXJ5IGxvZyBmaWxlcy4AQ3Jhc2ggcmVjb3ZlcnkgZmluaXNoZWQgaW4gJXMgZW5naW5lLiAlcwBGYWlsZWQgdG8gY29tbWl0ICVzIGluICVzLCB3aXRoIGZhaWx1cmUgY29kZSAlcy4ARmFpbGVkIHRvIHJvbGxiYWNrICVzIGluICVzLCB3aXRoIGZhaWx1cmUgY29kZSAlcy4ARmFpbGVkIHRvIHByZXBhcmUgJXMgaW4gJXMsIHdpdGggZmFpbHVyZSBjb2RlICVzLgBDYW5ub3QgcmVnaXN0ZXIgdmFyaWFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgYW5vdGhlciBjb21wb25lbnQuAENhbm5vdCB1bnJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAENhbm5vdCByZWdpc3RlciBmdW5jdGlvbiAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZC4AQ2Fubm90IHVucmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IHdhcyByZWdpc3RlcmVkIHByb3Blcmx5IGluIHRoZSBmaXJzdCBwbGFjZS4ASW52YWxpZCBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJyVzJy4gRXhwZWN0ZWQgdmFsdWVzOiAlcy4ASW52YWxpZCBhbGdvcml0aG0gdmFsdWUgJyUuMjBzJyBpbiBmdW5jdGlvbiAlcy4ASW52YWxpZCBrZXkgbGVuZ3RoICclZCcgZm9yIGZ1bmN0aW9uICclcycgd2l0aCBhbGdvcml0aG0gJyUuMjBzJy4gUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBiZXR3ZWVuIFslZCwgJWRdLgBGYWlsZWQgdG8gZ2VuZXJhdGUgcHJpdmF0ZSBrZXkgb2YgbGVuZ3RoICclZCcgd2l0aCBhbGdvcml0aG0gJyUuMjBzJyBpbiBmdW5jdGlvbiAnJXMnLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgYmVlbiBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4ARmFpbGVkIHRvIGdlbmVyYXRlIHB1YmxpYyBrZXkgd2l0aCBhbGdvcml0aG0gJyUuMjBzJyBmb3IgZ2l2ZW4gcHJpdmF0ZSBrZXkgaW4gZnVuY3Rpb24gJyVzJy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAEludmFsaWQgZGF0YSBsZW5ndGggJyVkJyAoaW4gYnl0ZXMpIGZvciBmdW5jdGlvbiAnJXMnIHdpdGggYWxnb3JpdGhtICclLjIwcycuIFRoZSBtYXhpbXVtIHN1cHBvcnQgZGF0YSBsZW5ndGggZm9yIGdpdmVuIHByaXZhdGUga2V5IGlzICVkIChpbiBieXRlcykuAENvdWxkIG5vdCBlbmNyeXB0IGRhdGEgaW4gZnVuY3Rpb24gJyVzJyB1c2luZyBhbGdvcml0aG0gJyUuMjBzJy4gRGF0YSBsZW5ndGggd2FzICclZCcgYnl0ZXMuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3Igd291bGQgaGF2ZSBiZWVuIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBDb3VsZCBub3QgZGVjcnlwdCBkYXRhIGluIGZ1bmN0aW9uICclcycgdXNpbmcgYWxnb3JpdGhtICclLjIwcycuIERhdGEgbGVuZ3RoIHdhcyAnJWQnIGJ5dGVzLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgYmVlbiBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4AQ291bGQgbm90IHNpZ24gZGF0YSBpbiBmdW5jdGlvbiAnJXMnIHVzaW5nIGFsZ29yaXRobSAnJS4yMHMnIGFuZCBkaWdlc3QgdHlwZSAnJS4yMHMnLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAFJlY2VpdmVkIE9wZW5TU0wgZXJyb3IgaW4gZnVuY3Rpb24gJyVzJyBmb3IgYWxnb3JpdGhtICclcyc6ICclcycASW4gZnVuY3Rpb24gJyVzJyB3aXRoIGFsZ29yaXRobSAnJXMnOiBpbnN1ZmZpY2llbnQgb3V0cHV0IGJ1ZmZlciBsZW5ndGggJyV6dScuIFJlcXVpcmVkIGxlbmd0aCAnJXp1Jy4AJXMlcwBTZXR0aW5nIHNlc3Npb24gdmFsdWVzIGZvciBzeXN0ZW0gdmFyaWFibGVzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gYSB1c2VyIHNlc3Npb24gKGZhaWxlZCB0byBzZXQgJyUuMjU2cycpLgBCdWlsZElEW3NoYTFdPSVzAEZhaWxlZCB0byByZWdpc3RlciBkeW5hbWljIHByaXZpbGVnZSAlcy4AUmVkbyBsb2cgd3JpdGVyIGlzIHdhaXRpbmcgZm9yICVzIHJlZG8gbG9nIGNvbnN1bWVyIHdoaWNoIGlzIGN1cnJlbnRseSByZWFkaW5nIExTTj0lbGx1IHByZXZlbnRpbmcgcmVjbGFtYXRpb24gb2Ygc3Vic2VxdWVudCBwb3J0aW9uIG9mIHRoZSByZWRvIGxvZy4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuACVzAFJlY292ZXJ5OiBHZW5lcmF0aW5nIGluZGV4IGluZm9ybWF0aW9uIGZvciBJTlNUQU5UIERETCBUYWJsZSBpbiA4LjAuMjkgZm9ybWF0AEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuICVzAEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuIENvdWxkIG5vdCBhY3F1aXJlIHJlc291cmNlIGdyb3VwcyBnbG9iYWwgbG9jay4ARmFpbGVkIHRvIHN3aXRjaCByZXNvdXJjZSBncm91cC4gQ291bGQgbm90IGFjcXVpcmUgbG9jayBvbiByZXNvdXJjZSBncm91cCAlcy4ARmFpbGVkIHRvIHN3aXRjaCByZXNvdXJjZSBncm91cC4gVW5hYmxlIHRvIGFwcGx5IHJlc291cmNlIGdyb3VwIGNvbnRyb2xsZXIgJXMuAEZhaWxlZCB0byBjbGVhciBpbnN0YW50IGRyb3AgY29sdW1uIG1ldGFkYXRhIGZvciB0YWJsZSAlcwBDYW5ub3Qgb3BlbiBzaWduaW5nIGtleSBmaWxlICVzLgBPdXQgb2YgbWVtb3J5ISBDYW5ub3QgY3JlYXRlIHByaXZhdGUga2V5LgBDYW5ub3QgcmVhZCBzaWduaW5nIGtleSBmaWxlICVzLgBJbmNvbXBsZXRlIGtleTogbWlzc2luZyBOYW1lL1R5cGUgZm9yIHRoZSBLZXk6ICVzLgBEdXBsaWNhdGUga2V5IGZvdW5kIGluIGtleXJpbmcgd2l0aCBOYW1lOiAlcyBhbmQgT3duZXI6ICVzLgBFcnJvciBwYXJzaW5nIEpTT04gcmVzcG9uc2UgJXMuAEludmFsaWQgSlNPTiByZXNwb25zZSEASFRUUCByZXF1ZXN0IGZhaWxlZCB3aXRoIGVycm9yOiAnJXMnAFZhcmlhYmxlIHRocmVhZF9wb29sLiVzIHdhcyB1cGRhdGVkOiAlcwAlcwBTdGF0dXMgY29kZSAldTogQ29tcGxldGVkAFN0YXR1cyBjb2RlICV1OiAldSUlIGNvbXBsZXRlAFN0YXR1cyBjb2RlICV1OiAlcwBJbnZhbGlkIHZhbHVlIHNldCB0byB0aHJlYWRfcG9vbF9xdWVyeV90aHJlYWRzX3Blcl9ncm91cC4gVmFsaWQgdmFsdWUgcmFuZ2UgaXMgJXUgLSAldS4AUXVlcnkgdGhyZWFkcyBjb3VudCgldSkgZXhjZWVkcyB0cmFuc2FjdGlvbiB0aHJlYWRzIGxpbWl0KCV1KSBwZXIgZ3JvdXAuIFBsZWFzZSB1c2UgcXVlcnkgdGhyZWFkcyBjb3VudCBwZXIgZ3JvdXAgc21hbGxlciBvciBlcXVhbCB0byBtYXggdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCBwZXIgZ3JvdXAARm91bmQgcGFnZSB0eXBlIG1pc21hdGNoLiBFeHBlY3RlZCAldSwgZm91bmQgJXUsIGluIHBhZ2U6IHNwYWNlX2lkPSVsdSBwYWdlX25vPSAlbHUAcHJlYWRlcjogc3BhY2VfaWQ9JXp1LCB0YWJsZT0lcywgaW5kZXg9JXMsIHNjYW5fY3R4PSV6dSwgY3R4PSV6dSwgdGhyZWFkX2lkPSV6dSwgbl90aHJlYWRzPSV6dQBidWxrbG9hZDogc3BhY2VfaWQ9JXp1LCB0YWJsZT0lcywgaW5kZXg9JXMsIGhlaWdodD0lenUsIG5fZXh0ZW50cz0lenUsIG5fcGFnZXM9JXp1AGJ1bGtmbHVzaGVyOiBzbGVlcF9jb3VudD0lenUsIHNsZWVwX2R1cmF0aW9uPSV6dSBtaWxsaXNlY29uZHMsIHRvdGFsX3NsZWVwPSV6dSBtaWxsaXNlY29uZHMsIHBhZ2VzX2ZsdXNoZWQ9JXp1ACVzOiBPdmVyIDY3IHBlcmNlbnQgb2YgdGhlIGJ1ZmZlciBwb29sIChjdXJyX3NpemU9JXp1IE1CKSBpcyBvY2N1cGllZCBieSBsb2NrIGhlYXBzIG9yIHRoZSBhZGFwdGl2ZSBoYXNoIGluZGV4IG9yIEJVRl9CTE9DS19NRU1PUlkgcGFnZXMuIENoZWNrIHRoYXQgeW91ciB0cmFuc2FjdGlvbnMgZG8gbm90IHNldCB0b28gbWFueSByb3cgbG9ja3MuIE1heWJlIHlvdSBzaG91bGQgbWFrZSB0aGUgYnVmZmVyIHBvb2wgYmlnZ2VyPy4gU3RhcnRpbmcgdGhlIElubm9EQiBNb25pdG9yIHRvIHByaW50IGRpYWdub3N0aWNzLgAlczogT3ZlciA5NSBwZXJjZW50IG9mIHRoZSBidWZmZXIgcG9vbCAoY3Vycl9zaXplPSV6dSBNQikgaXMgb2NjdXBpZWQgYnkgbG9jayBoZWFwcyBvciB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleCBvciBCVUZfQkxPQ0tfTUVNT1JZIHBhZ2VzLiBDaGVjayB0aGF0IHlvdXIgdHJhbnNhY3Rpb25zIGRvIG5vdCBzZXQgdG9vIG1hbnkgcm93IGxvY2tzLiBNYXliZSB5b3Ugc2hvdWxkIG1ha2UgdGhlIGJ1ZmZlciBwb29sIGJpZ2dlcj8uIFdlIGludGVudGlvbmFsbHkgZ2VuZXJhdGUgYSBzZWcgZmF1bHQgdG8gcHJpbnQgYSBzdGFjayB0cmFjZSBvbiBMaW51eCEAJXM6IHRhYmxlPSVzLCBpbmRleD0lcywgbl91bmlxPSV6dSwgbl9maWVsZHM9JXp1LCBsaHM9KCVzKSwgcmhzPSglcykARmFpbGVkIHRvIGFwcGx5IHJvdyBldmVudCB3aXRoICVkIGNvbHVtbnMsIG9yaWdpbmF0aW5nIGZyb20gYSBzZXJ2ZXIgb2YgdmVyc2lvbiAlcyBvbiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJywgd2hpY2ggaGFzICVkIGNvbHVtbnMsIG9uZSBvZiB3aGljaCBpcyBhIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleS4gUmVwbGljYXRpb24gaXMgdW5zdXBwb3J0ZWQgd2hlbiB0aGUgc291cmNlIHNlcnZlciBpcyBvbGRlciB0aGFuIDguMC4zMCwgdGhlIHJlcGxpY2EgdGFibGUgaGFzIGEgZ2VuZXJhdGVkIGltcGxpY2l0IHByaW1hcnkga2V5LCBhbmQgdGhlcmUgaXMgYSBkaWZmZXJlbmNlIGluIGNvbHVtbiBjb3VudCwgbm90IGNvdW50aW5nIHRoZSByZXBsaWNhJ3MgZ2VuZXJhdGVkIGltcGxpY2l0IHByaW1hcnkga2V5LiBBbGlnbiB0aGUgdGFibGUgc2NoZW1hcyBvbiBzb3VyY2UgYW5kIHJlcGxpY2EsIGFuZCByZXN0YXJ0IHJlcGxpY2F0aW9uLgBCdWxrIGV4ZWN1dG9yOiAlcwBCdWxrIGxvYWRlcjogJXMAVGhlIGZpcnN0IGZpbGUgYmVpbmcgbG9hZGVkIGNvbnRhaW5lZCBsZXNzIGxpbmVzIHRoYW4gdGhlIGlnbm9yZSBjbGF1c2UAQnVsayByZWFkZXI6ICVzAEJ1bGsgcmVhZGVyIGZhaWxlZCB0byBpbml0aWFsaXplIGxpYmN1cmwAQnVsayByZWFkZXIgZ290IGxpYmN1cmwgZXJyb3I6ICVzAEJ1bGsgcmVhZGVyIGdvdCBlcnJvciByZXNwb25zZSBmcm9tIHNlcnZlcjogJWxkAEJ1bGsgcmVhZGVyIGdvdCBlcnJvciBpbiBjb21tdW5pY2F0aW9uIHdpdGggc291cmNlIHNlcnZlciwgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzAE1pc3NpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGF0IHJvdyAlbGQgaW4gZmlsZSAlcy4gQWRkIE9QVElPTkFMTFkgdG8gdGhlIEVOQ0xPU0VEIEJZIGNsYXVzZSB0byBhbGxvdyB0aGlzIGlucHV0LgBUaGUgbnVtYmVyIG9mIGlucHV0IGNvbHVtbnMgdGhhdCBuZWVkIHRvIGJlIGJ1ZmZlcmVkIGZvciBwYXJzaW5nIGV4Y2VlZGVkIHByZWRlZmluZWQgYnVmZmVyIG1heCBzaXplIGZvciBmaWxlICclcycuAFRoZSBjb2x1bW4gZGF0YSB0aGF0IG5lZWRlZCB0byBiZSBjb3BpZWQgZHVlIHRvIGVzY2FwZWQgY2hhcmFjdGVycyBleGNlZWRlZCB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJuYWwgY29weSBidWZmZXIgZm9yIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIERhdGEgZm9yIHNvbWUgY29sdW1ucyBpcyBtaXNzaW5nLgBVbmV4cGVjdGVkIHJvdyB0ZXJtaW5hdG9yIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGVuZGluZyBFTkNMT1NFRCBCWSBjaGFyYWN0ZXIgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBOVUxMIGVzY2FwZSAoTikgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBjb2x1bW4gdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycgcmVzdWx0aW5nIGluIGluY29tcGxldGUgZXNjYXBlIHNlcXVlbmNlLgBJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycgZm9yIGNvbHVtbiAnJS0uMTkycycgYXQgcm93ICVsZCBpbiBmaWxlICclLS4xOTJzJwBOVUxMIHN1cHBsaWVkIHRvIE5PVCBOVUxMIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycAJXM6IExPQUQgQlVMSyBEQVRBIHRocmVhZCBmYWlsdXJlIChlcnI9JWx1KSwgdGFibGU9JXMsIGluZGV4PSVzACVzOiBGYWlsZWQgdG8gbWVyZ2Ugc3ViLXRyZWVzIGluIExPQUQgQlVMSyBEQVRBLCB0YWJsZT0lcywgaW5kZXg9JXMsIGRldGFpbHM9JXMATE9BRCBCVUxLIERBVEE6IEJ1ZmZlciBwb29sIHNpemUgaXMgJXp1LiBSZWR1Y2luZyBjb25jdXJyZW5jeSBmcm9tICV6dSB0byAlenUuIHRhYmxlPSVzLgBDKysgRXhjZXB0aW9uIGNhdWdodCB3aGlsZSAlcyB0aGUgJXMgcGx1Z2luOiBbJXNdAFJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gYXBwZWFycyB0byBiZSBjb3JydXB0ZWQuIE9uIEdyb3VwIFJlcGxpY2F0aW9uIGNoYW5uZWwgJyVzJywgc2V0dGluZyBSRVFVSVJFX1RBQkxFX1BSSU1BUllfS0VZX0NIRUNLIHRvICdHRU5FUkFURScgaXMgbm90IGFsbG93ZWQuIFJ1biBSRVNFVCBSRVBMSUNBIEFMTCB0byByZXNldCBpdC4AUmVjb3JkIGhhcyBib3RoIGluc3RhbnQgYW5kIHZlcnNpb24gYml0IHNldC4AVGhpcyBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fcGF4b3Nfc2luZ2xlX2xlYWRlciBvcHRpb24gdmFsdWUgb2YgMSBhbmQgaXQgaXMgdHJ5aW5nIHRvIGpvaW4gYSBncm91cCB3aXRoIENvbW11bmljYXRpb24gUHJvdG9jb2wgVmVyc2lvbiBiZWxvdyA4LjAuMjcuIEluIG9yZGVyIHRvIGpvaW4gdGhpcyBncm91cCwgZ3JvdXBfcmVwbGljYXRpb25fcGF4b3Nfc2luZ2xlX2xlYWRlciB2YWx1ZSBtdXN0IGJlIGNvbmZpZ3VyZWQgdG8gdGhlIHZhbHVlIDAuIFRoaXMgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBJZ25vcmVkIHRoZSBpbm5vZGItcmVkby1sb2ctY2FwYWNpdHkgb3B0aW9uIGluIHRoZSBJbm5vZGIgcmVhZC1vbmx5IG1vZGUuIFNlcnZlciBpcyB1c2luZyBhY3RpdmUgcmVkbyBsb2cgZmlsZXMuAFVuZXhwZWN0ZWQgSU5TVEFOVExZIEFkZGVkIC8gRHJvcHBlZCBjb2x1bW46ICclcycgYXQgcG9zaXRpb24gJWx1IGZvciBUYWJsZSAnJXMnLCBJbmRleCAnJXMnIHdoaWxlIGdldHRpbmcgUHJpbWFyeSBLZXkgZm9yIHJvdyBsb2dnaW5nACVzAENvbHVtbiBuYW1lICVzIGFuZCBpbnRlcm5hbGx5IGdlbmVyYXRlZCBJTlNUQU5UIERST1AgY29sdW1uIG5hbWUgJXMgaXMgY2F1c2luZyBhIGNvbmZsaWN0LgBGaWVsZCBudW1iZXI6ICVsbHUgdG9vIGxhcmdlLCBUb3RhbCBmaWVsZHMgaW4gUmVjb3JkOiAlenUuACVzAFRoZSBjb25uZWN0aW9uIGhhcyB0aW1lZCBvdXQgYWZ0ZXIgJWx1IHJldHJpZXMgY29ubmVjdGluZyB0byAnJXNAJXM6JWQnJXMsIGFuZCB0aGVyZWZvcmUgdGhlIE15U1FMIHNlcnZlciBpcyBnb2luZyB0byBhdHRlbXB0IGFuIGFzeW5jaHJvbm91cyByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGZhaWxvdmVyLCB0byAnJXNAJXM6JWQnAFRoZSBSZXBsaWNhIHdoaWNoIHdhcyBjb25uZWN0ZWQgdG8gc291cmNlICclczolZCcsIGlzIG5vdyBjb25uZWN0ZWQgdG8gbmV3IHNvdXJjZSAnJXM6JWQnLCBidXQgc3RpbGwgaGFzIHRoZSBzYW1lIHNlcnZlcl91dWlkICVzLgBUaGUgc2VydmVyX3V1aWQgZm9yIHNvdXJjZSBzZXJ2ZXIgJyVzOiVkJyBoYXMgY2hhbmdlZCBmcm9tICVzIHRvICVzLiBUaGlzIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyB5b3UgaGF2ZSBjaGFuZ2VkIGl0IG1hbnVhbGx5LgBUaGUgc291cmNlIHNlcnZlciBoYXMgY2hhbmdlZCBmcm9tICclczolZCcgd2l0aCBzZXJ2ZXJfdXVpZCAlcywgdG8gJyVzOiVkJyB3aXRoIHNlcnZlcl91dWlkICVzLgBSZXBsaWNhIHJlY2VpdmVyIHRocmVhZCVzOiBjb25uZWN0ZWQgdG8gc291cmNlICclc0AlczolZCcgd2l0aCBzZXJ2ZXJfdXVpZD0lcywgc2VydmVyX2lkPSVkLiBTdGFydGluZyByZXBsaWNhdGlvbiBmcm9tIGZpbGUgJyVzJywgcG9zaXRpb24gJyVzJy4AUmVwbGljYSByZWNlaXZlciB0aHJlYWQlczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnIHdpdGggc2VydmVyX3V1aWQ9JXMsIHNlcnZlcl9pZD0lZC4gU3RhcnRpbmcgR1RJRC1iYXNlZCByZXBsaWNhdGlvbi4ATG9hZGVyOjpidWlsZF9hbGwoKTogQ29tcGxldGVkIGJ1aWxkaW5nICV6dSBpbmRleGVzIGZvciBvbGRfdGFibGU9JXMsIG5ld190YWJsZT0lcywgZXJyPSV6dS4AQnVpbGRlcjo6ZmluaXNoKCk6IENvbXBsZXRlZCBidWlsZGluZyBpbmRleD0lcyBvZiB0YWJsZT0lcywgZXJyPSV6dS4AJXM6ICclcycgaXMgYSB1c2VyIGRlZmluZWQgY29sbGF0aW9uLiBVc2VyIGRlZmluZWQgY29sbGF0aW9ucyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIGEgY29tcGlsZWQgY29sbGF0aW9uIGluc3RlYWQuAEJ1aWxkZXI6OmluaXQoKTogSW5pdGlhbGl6ZSBmb3IgYnVpbGRpbmcgaW5kZXg9JXMgb2YgdGFibGU9JXMsIG5fdGhyZWFkcz0lenUsIHNvcnQgYnVmZmVyIHNpemU9JXp1IGJ5dGVzLCBpL28gYnVmZmVyIHNpemU9JXp1IGJ5dGVzLgBTRUxFQ1QgQ09VTlQoKikgRlJPTSB0YWJsZT0lcywgbl90aHJlYWRzPSV6dSwgbl9wYXJ0aXRpb25zPSV6dS4ASW5kZXggbG9nIHZlcnNpb24gJXUgZGlkIG5vdCBtYXRjaC4gTWF4IGluZGV4IHZlcnNpb24gaXMgJXUuIFJlY292ZXJ5IGNhbid0IGNvbnRpbnVlLiBQbGVhc2UgbWFrZSBzdXJlIHNlcnZlciBpcyBub3Qgc3RhcnRpbmcgdXAgd2l0aCB0aGUgZGF0YWRpciBnZW5lcmF0ZWQgaW4gZnV0dXJlIHZlcnNpb24uAE11bHRpcGxlIGtleXJpbmcgY29tcG9uZW50IFVSTnMgJyVzJyBmb3VuZCBpbiBtYW5pZmVzdCBmaWxlICclcycuIE9ubHkgb25lIGtleXJpbmcgY29tcG9uZW50IGNhbiBiZSBsb2FkZWQgYXQgYSB0aW1lLgBQbHVnaW4gJ2dyb3VwX3JlcGxpY2F0aW9uJyBoYXMgYmVlbiBzdGFydGVkLgBNaW5pbXVtIHJlY29yZCBmbGFnIGlzIHdyb25nbHkgc2V0IHRvIHJlYyBvbiBwYWdlICclbHUnIGF0IGxldmVsICclbHUnIGZvciBpbmRleCAnJXMnIG9mIHRhYmxlICclcycuAE1pbmltdW0gcmVjb3JkIGZsYWcgaXMgbm90IHNldCB0byBmaXJzdCByZWMgb24gcGFnZSAnJWx1JyBhdCBsZXZlbCAnJWx1JyBmb3IgaW5kZXggJyVzJyBvZiB0YWJsZSAnJXMnLgBTdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZCBzbG90ICclZCcgZm9yIGNvbXBvbmVudCAnJXMnLgBTdWNjZXNzZnVsbHkgZGUtcmVnaXN0ZXJlZCBzbG90ICclZCcgZnJvbSBjb21wb25lbnQgJyVzJy4AQ2Fubm90IGZyZWUgcmVzb3VyY2VzIHN0b3JlZCBieSBjb21wb25lbnQgJyVzJyBpbiB0aHJlYWQgd2l0aCBJRDogJyVkJy4gQ29tcG9uZW50IGZhaWxlZCB0byBmcmVlIHJlcXVpcmVkIHJlc291cmNlcy4AVHJhbnNhY3Rpb24gSUQ6ICVsdSBmb3VuZCBmb3IgcmVzdXJyZWN0aW5nIGluc2VydHMAVHJhbnNhY3Rpb24gSUQ6ICVsdSBmb3VuZCBmb3IgcmVzdXJyZWN0aW5nIHVwZGF0ZXMASWRlbnRpZmllZCB0YWJsZSBJRDogJWx1IHRvIGFjcXVpcmUgbG9jawBBY3F1aXJlZCBsb2NrIG9uIHRhYmxlIElEOiAlbHUsIG5hbWU6ICVzAFJlY29yZHMgcmVhZDogJWx1IC0gUGFnZXMgcmVhZDogJWx1AFRvdGFsIHJlY29yZHMgcmVzdXJyZWN0ZWQ6ICVsdSAtIFRvdGFsIHBhZ2VzIHJlYWQ6ICVsdSAtIFRvdGFsIHRhYmxlcyBhY3F1aXJlZDogJWx1AFJlc3VycmVjdGVkICVsdSB0cmFuc2FjdGlvbnMgZG9pbmcgaW5zZXJ0cy4AUmVzdXJyZWN0ZWQgJWx1IHRyYW5zYWN0aW9ucyBkb2luZyB1cGRhdGVzLgBJbnZhbGlkIHNlY3VyaXR5IHRva2VuIHByb3ZpZGVkIGJ5ICclcycgZm9yICclcydAJyVzJzogJXMuAFVua25vd24gdXNlci90ZW5hbmN5ICh1c2VyOiAlcyB0ZW5hbmN5OiAlcykgZm91bmQgaW4gc2VjdXJpdHkgdG9rZW4gcHJvdmlkZWQgYnkgJyVzJyBmb3IgJyVzJ0AnJXMnLgBWZXJpZmljYXRpb24gZmFpbGVkIGZvciBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcycgOiAlcy4AQ291bGQgbm90IGRvd25sb2FkIElERFAgUHVibGljIGtleS4gUGxlYXNlIGNoZWNrIGlmIHNlY3VyaXR5IHRva2VuIHByb3ZpZGVkIGJ5ICclcycgZm9yICclcydAJyVzJyBpcyB2YWxpZC4ATm9uZSBvZiB0aGUgZ3JvdXBzIGV4dHJhY3RlZCBmcm9tIHNlY3VyaXR5IHRva2VuIG1hdGNoZXMgYW55IG9mIHRoZSBlbnRyaWVzIGZyb20gYXV0aGVudGljYXRpb24gc3RyaW5nLgBDYW5ub3QgcmVnaXN0ZXIgdmFyaWFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgYW5vdGhlciBjb21wb25lbnQuAENhbm5vdCB1bnJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAENhbm5vdCByZWdpc3RlciBmdW5jdGlvbiAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZCBieSBhbm90aGVyIGNvbXBvbmVudC4AQ2Fubm90IHVucmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IHdhcyByZWdpc3RlcmVkIHByb3Blcmx5IGluIHRoZSBmaXJzdCBwbGFjZS4AQ2Fubm90IHJlZ2lzdGVyIHByaXZpbGVnZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZC4AQ2Fubm90IHVucmVnaXN0ZXIgcHJpdmlsZWdlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAEVycm9yIHdoaWxlIGV4ZWN1dGluZyBVREYgJXMuAEVycm9yIHdoaWxlIGV4ZWN1dGluZyBVREYgJXM6ICVzLgAlcyBmYWlsZWQuACVzIGZhaWxlZCB3aXRoICV1LgBMb2NrIGZhaWxlZCBhdCAlcyA6ICV1LgBMb2NrIGZyb20gJXMgOiAldSBmYWlsZWQgdG8gdW5sb2NrLgBNYXNraW5nIGNvbXBvbmVudCBlcnJvcjogJyVzJy4AJXMgZmFpbGVkLgAlcyBmYWlsZWQgYmVjYXVzZSAlcy4AQ3JlYXRpb24gb2YgcmFuZG9tIGNvbnRleHQgZmFpbGVkLgBDcmVhdGlvbiBvZiByYW5kb20gY29udGV4dCBmYWlsZWQgYmVjYXVzZSAlcy4AQ2Fubm90IGFjY2VzcyAlcy4lcyB0YWJsZS4AQ2Fubm90IHJlY292ZXIgZnJvbSBkZXRlY3Rfb25seSBkb3VibGV3cml0ZSBidWZmZXIgYXMgcGFnZSAldSBmcm9tIGJhdGNoIGRvdWJsZXdyaXRlIGZpbGUgaXMgY29ycnVwdGVkLgBEYXRhYmFzZSBwYWdlIGNvcnJ1cHRpb24gb2YgdGFibGVzcGFjZSAlcyBzcGFjZV9pZDogJXUgcGFnZV9udW06ICV1LiBDYW5ub3QgcmVjb3ZlciBpdCBmcm9tIHRoZSBkb3VibGV3cml0ZSBidWZmZXIgYmVjYXVzZSBpdCB3YXMgd3JpdHRlbiBpbiBkZXRlY3Rfb25seS1kb3VibGV3cml0ZSBtb2RlLgBpbml0X2Nvbm5lY3QgdmFyaWFibGUgaXMgaWdub3JlZCBmb3IgdXNlcjogJXMgaG9zdDogJXMgZHVlIHRvIG11bHRpLWZhY3RvciByZWdpc3RyYXRpb24gcmVxdWlyZWQgc2FuZGJveGluZwBFeGVjdXRpb24gb2YgYWx0ZXIgdGFibGUgJXMgJXMgZmFpbGVkIGJlY2F1c2UgJXMuAFRQIGNvbm4gKHBvcnQ6IG1hbmFnZWQoZGVsdGEpLCBhY3RpdmUsIG9wZW5lZCwgY2xvc2VkLCBhZGRlZCwgZHJvcHBlZCk6ICVzAFNjaGVkdWxlZCBydW4gb2YgdGFzayAlcyBmYWlsZWQASW52YWxpZCBmbHVzaCBpbnRlcnZhbCBzcGVjaWZpZWQ6ICVsdS4gVmFsaWQgdmFsdWVzIGFyZSAwIChvZmYpIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlZC4gQWRqdXN0aW5nIHRvICVkAENvdWxkIG5vdCBwdXJnZSBiaW5hcnkgbG9ncyBzaW5jZSBhbm90aGVyIHNlc3Npb24gaXMgZXhlY3V0aW5nIExPQ0sgSU5TVEFOQ0UgRk9SIEJBQ0tVUC4gV2FpdCBmb3IgdGhhdCBzZXNzaW9uIHRvIHJlbGVhc2UgdGhlIGxvY2suAE11bHRpLXZhbHVlcyBjYW5ub3QgYmUgY29udmVydGVkIHRvIE15U1FMIGZvcm1hdDogJXMASGVhcCByZXF1aXJlZCB0byBjb252ZXJ0IGNvbHVtbnMgaXMgbm90IHByZXNlbnQuAE15U1FMIHNlcnZlciBkb3duZ3JhZGluZyBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBJbnZhbGlkIE15U1FMIHNlcnZlciBkb3duZ3JhZGU6IENhbm5vdCBkb3duZ3JhZGUgZnJvbSAldSB0byAldS4gVGFyZ2V0IE15U1FMIHNlcnZlciB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gdGhlIHNlcnZlciBkb3duZ3JhZGUgdGhyZXNob2xkICV1LgBJbnZhbGlkIE15U1FMIHNlcnZlciB1cGdyYWRlOiBDYW5ub3QgdXBncmFkZSBmcm9tICV1IHRvICV1LiBUYXJnZXQgTXlTUUwgc2VydmVyIHZlcnNpb24gaXMgbG93ZXIgdGhhbiB0aGUgc2VydmVyIHVwZ3JhZGUgdGhyZXNob2xkICV1LgBJbnZhbGlkIE15U1FMIHNlcnZlciB1cGdyYWRlOiBDYW5ub3QgdXBncmFkZSBmcm9tICV1IHRvICV1LiBVcGdyYWRlIHRvIG5leHQgbWFqb3IgdmVyc2lvbiBpcyBvbmx5IGFsbG93ZWQgZnJvbSB0aGUgbGFzdCBMVFMgcmVsZWFzZSwgd2hpY2ggdmVyc2lvbiAldSBpcyBub3QuAEludmFsaWQgTXlTUUwgc2VydmVyIGRvd25ncmFkZTogQ2Fubm90IGRvd25ncmFkZSBmcm9tICV1IHRvICV1LiBEb3duZ3JhZGUgaXMgb25seSBwZXJtaXR0ZWQgYmV0d2VlbiBwYXRjaCByZWxlYXNlcy4ARmFpbGVkIHRvIGdldCB0aGUgZGF0YSBkaWN0aW9uYXJ5IHByb3BlcnR5ICVzLgBGYWlsZWQgdG8gc2V0IHRoZSBkYXRhIGRpY3Rpb25hcnkgcHJvcGVydHkgJXMuAFNlcnZlciBkb3duZ3JhZGUgZnJvbSAnJWQnIHRvICclZCcgJXMuACVzIGluZm9ybWF0aW9uIHNjaGVtYSBmcm9tIHZlcnNpb24gJXUgdG8gJXUuACVzIHBlcmZvcm1hbmNlIHNjaGVtYSBmcm9tIHZlcnNpb24gJXUgdG8gJXUuAFZhbHVlIGZvciBvcHRpb24gJyVzJyBjb250YWlucyBjaXBoZXIgJyVzJyB0aGF0IGlzIGVpdGhlciBibG9ja2VkIG9yIGRlcHJlY2F0ZWQgKGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSkuIFBsZWFzZSByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgBEREwgZmFpbGVkIGFzIEJ1aWxkZXIgaXMgYWxyZWFkeSBmcmVlZC4gQnVpbGRlcjogc3RhdGU9JXUsIGVycm9yX3N0YXRlPSV1LiBJbmRleDogaWQ9JXp1LCBuYW1lPSclcycsIHNwYWNlX2lkPSV1LCBwYWdlPSV1LiBUYWJsZTogb2xkX25hbWU9JyVzJywgbmV3X25hbWU9JyVzJy4ATWVtYmVyIGlkZW50aWZpZWQgJXM6ICclcycgZG9lcyBub3QgZXhpc3Qgb24gR3JvdXAgUmVwbGljYXRpb24gbWVtYmVyc2hpcCBkdXJpbmcgJXMuAERlcHJlY2F0ZWQgJyVzJyB1c2VkICVzIHRpbWVzLCBsYXN0IHRpbWUgdXNlZCAnJXMnLgBXYWl0aW5nIGZvciAldSBjb25uZWN0aW9ucyB0byBiZSBjbG9zZWQuAFdhaXRpbmcgZm9yIFRIRHMgaW4gcGFydGl0aW9uICV1IHRvIGJlIGNsb3NlZCwgJXUgc3RpbGwgbGVmdC4gJXUgVEhEcyBsZWZ0IGluIHRvdGFsIGZvciBhbGwgcGFydGl0aW9ucy4ASW5kZXggJXMgb2YgJXMuJXMgZXhjZWVkcyBsaW1pdCBvZiAlbHUgYnl0ZXMgcGVyIGNvbHVtbi4ARmFpbGVkIHRvIHVwZGF0ZSBkYXRhIGRpcmVjdG9yeSBmbGFnIGZvciBkZCB0YWJsZSB3aXRoIHRhYmxlc3BhY2UgaWQgJyVsbHUnIHdoZW4gaWJkIGZpbGUgZm9yICclcycgaXMgbW92ZWQgdG8gbmV3IGxvY2F0aW9uICclcycgZHVyaW5nIHNlcnZlciBzaHV0ZG93bgAlcyBERCBJRDogJWxsdSAtIFRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJywgZm91bmQgYXQgJyVzJyBvdXRzaWRlIGRlZmF1bHQgZGF0YSBkaXJlY3RvcnksIGJ1dCBERCBtaXNzZXMgaW5mbyBhYm91dCBEQVRBIERJUkVDVE9SWQBVcG9uIHJlY29ubmVjdGlvbiB3aXRoIHRoZSByZXBsaWNhLCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIGR1bXAgdGhyZWFkIGZvciAlcyA8JXM+LCBhbiBleGlzdGluZyBkdW1wIHRocmVhZCB3aXRoIHRoZSBzYW1lICVzIHdhcyBkZXRlY3RlZC4gVGhlIHNvdXJjZSBpcyB0ZXJtaW5hdGluZyB0aGUgcHJldmlvdXMgZHVtcCB0aHJlYWQgKCV1KSwgd2hpY2ggaXMgbm9ybWFsIGFuZCBleHBlY3RlZC4AVGhlIHRyYW5zYWN0aW9uICclLS4xOTJzJyB3aWxsIGNvbW1pdCBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0IHRvIGl0cyBzb3VyY2UgdG8gZm9sbG93IHRoZSBncm91cCBnbG9iYWwgb3JkZXIuAENhbiBub3Qgb3BlbiB0YWJsZSBgJXNgLmAlc2A7IGZ1bmN0aW9ucyBpbiBjb25zdHJhaW50cywgcGFydGl0aW9ucywgb3IgdmlydHVhbCBjb2x1bW5zIG1heSBoYXZlIGZhaWxlZC4AJXMARmFpbGVkIHRvIGNyZWF0ZSB0aGUgR3JvdXAgUmVwbGljYXRpb24gY2VydGlmaWVyIGJyb2FkY2FzdCB0aHJlYWQgKFRIRF9jZXJ0aWZpZXJfYnJvYWRjYXN0KS4AVGhlIEdyb3VwIFJlcGxpY2F0aW9uIGNlcnRpZmllciBicm9hZGNhc3QgdGhyZWFkIChUSERfY2VydGlmaWVyX2Jyb2FkY2FzdCkgc3RhcnRlZC4AVGhlIEdyb3VwIFJlcGxpY2F0aW9uIGNlcnRpZmllciBicm9hZGNhc3QgdGhyZWFkIChUSERfY2VydGlmaWVyX2Jyb2FkY2FzdCkgc3RvcHBlZC4A
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
380.35 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).