REDROOM
PHP 8.5.2
Path:
Logout
Edit File
Size: 416.03 KB
Close
//usr/share/mysql/polish/errmsg.sys
Text
Base64
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WDEEAFsxBABeMQQAYTEEAGQxBABnMQQAajEEAG0xBABwMQQAczEEAHYxBAB5MQQAfDEEAH8xBACCMQQAhTEEAIgxBACLMQQAjjEEAJExBACUMQQAlzEEAJoxBACdMQQAoDEEAKMxBACmMQQAqTEEAKwxBACvMQQAsjEEALUxBAC4MQQAuzEEAL4xBADBMQQAxDEEAMcxBADKMQQAzTEEANAxBADTMQQA1jEEANkxBADcMQQA3zEEAOIxBADlMQQA6DEEAOsxBADuMQQA8TEEAPQxBABgMgQAYzIEAGYyBABpMgQAbDIEAG8yBAByMgQAdTIEAHgyBAB7MgQAfjIEAIEyBACEMgQAhzIEAIoyBACNMgQAkDIEAJMyBACWMgQAmTIEAJwyBACfMgQAojIEAKUyBACoMgQAqzIEAK4yBACxMgQAtDIEAN4yBADhMgQA5DIEAOcyBADqMgQA7TIEAPAyBADzMgQA9jIEAPkyBAD8MgQA/zIEAAIzBAAFMwQACDMEAAszBAAOMwQAETMEABQzBAAXMwQAGjMEAB0zBAAgMwQAIzMEACYzBAApMwQALDMEAC8zBAAyMwQANTMEADgzBAA7MwQAPjMEAEEzBABEMwQARzMEAEozBABNMwQAUDMEAFMzBABWMwQAWTMEAFwzBABfMwQAYjMEAGUzBABoMwQAazMEAG4zBABxMwQAdDMEAHczBAB6MwQAfTMEAIAzBACDMwQAhjMEAIkzBACMMwQAjzMEAJIzBACVMwQAmDMEAJszBACeMwQAoTMEAKQzBACnMwQAqjMEAK0zBACwMwQAszMEALYzBAC5MwQAvDMEAL8zBADCMwQAxTMEAMgzBADLMwQAzjMEANEzBADUMwQA1zMEANozBADdMwQA4DMEAOMzBADmMwQA6TMEAOwzBADvMwQA8jMEAPUzBAD4MwQA+zMEAP4zBAABNAQAWTQEAFw0BABfNAQAYjQEAGU0BABoNAQAazQEAG40BABxNAQAdDQEAHc0BAB6NAQAfTQEAIA0BACDNAQAhjQEAIk0BACMNAQAjzQEAJI0BACVNAQAmDQEAJs0BACeNAQAoTQEAKQ0BACnNAQAqjQEAK00BACwNAQAszQEALY0BAC5NAQAvDQEAL80BADCNAQAxTQEAMg0BADLNAQAzjQEANE0BADUNAQA1zQEANo0BADdNAQA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0l4EANVeBADYXgQA214EAN5eBADhXgQA5F4EAOdeBADqXgQA7V4EAPBeBADzXgQA9l4EAPleBAD8XgQA/14EAAJfBAAFXwQACF8EAAtfBAAOXwQAEV8EABRfBAAXXwQAGl8EAB1fBAAgXwQAI18EACZfBAApXwQALF8EAC9fBAAyXwQANV8EADhfBAA7XwQAPl8EAEFfBABEXwQAR18EAEpfBABNXwQAUF8EAFNfBABWXwQAWV8EAGZfBABpXwQAbF8EAG9fBAByXwQAdV8EAHhfBAB7XwQAfl8EAIFfBACEXwQAh18EAIpfBACNXwQAkF8EAJNfBACWXwQAmV8EAJxfBACfXwQAol8EAKVfBACoXwQAq18EAK5fBACxXwQAtF8EALdfBAC6XwQAvV8EAMBfBADDXwQAxl8EAMlfBADMXwQAz18EANJfBADVXwQA2F8EANtfBADeXwQA4V8EAORfBADnXwQA6l8EAO1fBADwXwQA818EAPZfBAD5XwQA/F8EAP9fBAACYAQABWAEAAhgBAALYAQADmAEABFgBAAUYAQAF2AEABpgBAAdYAQAIGAEACNgBAAmYAQAKWAEACxgBABLYAQATmAEAFFgBABUYAQAV2AEAFpgBABdYAQAYGAEAGNgBABmYAQAaWAEAGxgBABvYAQAcmAEAHVgBAB4YAQAe2AEAH5gBACBYAQAhGAEAIdgBACKYAQAjWAEAJBgBACTYAQAlmAEAJlgBACcYAQAn2AEAKJgBAClYAQAqGAEACxhBACXYQQAv2EEAB5iBABuYgQArmIEAN5iBAArYwQAaWMEAJljBADKYwQA+mMEAEFkBABgZAQAeWQEAIpkBAC7ZAQA6mQEAC9lBABuZQQAr2UEAMplBADvZQQAEGYEAFNmBABvZgQAj2YEALBmBADhZgQADGcEADBnBABxZwQArmcEANlnBAA2aAQAVGgEAG9oBACPaAQAuWgEAOBoBABDaQQAo2kEAMppBAAGagQAJWoEAJFqBADHagQAC2sEAGtrBADnawQALGwEAEdsBAB3bAQAmmwEALpsBADabAQAIm0EAFttBADabQQACW4EADduBABUbgQAdW4EABNvBABObwQAlW8EAJhvBACbbwQAnm8EAKFvBACkbwQAp28EAKpvBACtbwQAsG8EALNvBABfcAQAfXAEAIBwBAAncQQAKnEEAE9xBAB6cQQAm3EEAO1xBAAYcgQAQHIEALVyBABndAQA7HQEAAl1BABOdQQApHUEAFx2BABkdwQA5ncEAAF4BAAweAQAV3gEAFp4BABdeAQAuHgEAN55BAA+egQAdHsEAJl7BAC3ewQA3XsEAB58BABLfAQAZnwEAGl8BABsfAQAb3wEAHJ8BAB1fAQAeHwEAHt8BAB+fAQAgXwEAMp8BAD0fAQA93wEABV9BAAYfQQATX0EAFB9BAB5fQQAfH0EAKZ9BACpfQQArH0EAK99BACyfQQAtX0EALh9BAC7fQQAvn0EAGR+BABnfgQAan4EAG1+BABwfgQAc34EAKN+BACmfgQAqX4EAKx+BACvfgQAsn4EALV+BAC4fgQAu34EAL5+BADBfgQAxH4EAMd+BADKfgQAzX4EANB+BADTfgQA1n4EANl+BADcfgQA334EAFx/BABffwQAeX8EAJx/BACffwQAZ4AEAGqABABtgAQAcIAEAHOABAB2gAQAeYAEAHyABAB/gAQAgoAEAIWABACIgAQAi4AEAI6ABACRgAQAlIAEAJeABACagAQA/IAEAP+ABADCgQQAUIIEAFOCBABWggQAWYIEAFyCBACYggQAwoIEAPGCBAARgwQAR4MEAFyDBAB0gwQAuYMEAOSDBAAghAQAWoQEAPaEBAD5hAQA/IQEAP+EBAAChQQABYUEAAiFBAALhQQADoUEABGFBAAUhQQANoUEAIaFBACJhQQAlYYEAJiGBACbhgQAyoYEAGiHBAAEiAQA54gEACWJBABFigQAx4oEAEeLBAAxjAQAgYwEAJaMBAC+jAQA4Y0EAFuOBADejgQAA48EADyPBABljwQAJ5AEAHOQBAC+kAQA0pAEAOKQBAAJkQQAPZEEAFqRBAB1kQQAkZEEAOCRBAAskgQAYJIEAIuSBACZkgQAupIEAGGTBADUkwQAFZQEADKUBABtlAQAjJQEALWUBADklAQAE5UEAEqVBACDlQQAq5UEAAGWBACPlgQA55YEAOiWBAA1lwQAkpcEANqXBAA4mAQAnJgEAPyYBAAMmQQAD5kEADuZBABgmQQAgZkEAJ6ZBADCmQQAEpoEACiaBABMmgQAFJsEAFibBADHmwQA8ZsEAAecBAA+nAQAY5wEAJGcBADSnAQABp0EAGmdBACtnQQA6J0EABeeBACQngQA1J4EADCfBACPnwQAtJ8EANefBAD1nwQAD6AEABKgBABaoAQAo6AEANagBAD0oAQAG6EEADmhBABcoQQAX6EEAJyhBADQoQQA06EEANahBADZoQQA3KEEAN+hBADioQQA5aEEAOihBABkogQAn6IEAACjBAA1owQAcaMEANmjBABlpAQA36QEAEWlBABupQQAqKUEANSlBAABpgQANKYEALKmBAAOpwQAT6cEAMOnBABPqAQArKgEADWpBABSqQQAmakEAOypBABAqgQAeaoEAN2qBACwqwQA16sEABisBABRrAQAf6wEAN6sBAAPrQQAc60EAJutBAC8rQQA360EAG2uBAClrgQAVa8EANGvBABbsAQA/7AEAICxBADzsQQAbbIEAKKyBAAVswQAKrMEAEazBACUswQA5rMEABm0BAA9tAQAYbQEAIi0BACLtAQAArUEAEu1BABktQQAg7UEAKW1BADAtQQA9LUEAKu2BADrtgQA7rYEAA23BABFtwQAVbcEAGW3BAChtwQA1rcEAA24BABYuAQAnbgEAA65BAAzuQQAarkEAOW5BAD/uQQAOroEAHK6BACrugQA/roEAEm7BACmuwQADLwEAEa8BACFvAQAwbwEADm9BACuvQQA+L0EAGC+BAC3vgQAKL8EAF+/BACWvwQAzb8EABXABACBwAQAAMEEAGvBBADWwQQAPsIEALjCBAAowwQAicMEANbDBAApxAQAaMQEALjEBAAYxQQAXsUEAIXFBAD2xQQALsYEAEzGBADyxgQAK8cEAHfHBADBxwQAAcgEADPIBAB3yAQA0sgEAD/JBABCyQQAdMkEAKzJBAAIygQAW8oEAJLKBAC8ygQA9MoEABjLBAAnywQAi8sEALfLBAAszAQASMwEAGTMBAB5zAQAucwEAAfNBABHzQQAlc0EALbNBADuzQQAI84EADnOBABOzgQAds4EAJ7OBADOzgQABM8EAFbPBACdzwQALdAEAFnRBACs0QQAM9IEAHPSBADg0gQARtMEAObTBABc1AQA3NQEAGzVBACd1QQA7NUEAETWBADS1gQAQNcEAJTXBADv1wQACdgEAC7YBABK2AQAYNgEAMHYBADb2AQABNkEACHZBABW2QQA3NkEACTaBABK2gQAfdoEAL3aBADT2gQAQdsEAHzbBADB2wQA9tsEAGPcBAB+3AQA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cmFubyDFvGFkbmVqIGJhenkgZGFueWNoAE5pZXpuYW5hIGtvbWVuZGEAS29sdW1uYSAnJS0uMTkycycgbmllIG1vxbxlIGJ5xIcgbnVsbABOaWV6bmFuYSBiYXphIGRhbnljaCAnJS0uMTkycycAVGFiZWxhICclLS4xOTJzJyBqdcW8IGlzdG5pZWplAE5pZXpuYW5hIHRhYmVsYSAnJS0uMTI5cycAS29sdW1uYTogJyUtLjE5MnMnIHcgICUtLjE5MnMgamVzdCBkd3V6bmFjem5hAFRyd2Ega2/FhGN6ZW5pZSBkemlhxYJhbmlhIHNlcndlcmEATmllem5hbmEga29sdW1uYSAnJS0uMTkycycgdyAgJS0uMTkycwBVxbx5dG8gJyUtLjE5MnMnIGJleiB1bWllc3pjemVuaWEgdyBncm91cCBieQBOaWUgbW/FvG5hIGdydXBvd2HEhyBwbyAnJS0uMTkycycAWmFweXRhbmllIG1hIGZ1bmtjamUgc3VtdWo/Y2UgaSBrb2x1bW55IHcgdHltIHNhbXltIHphcHl0YW5pdQBMaWN6YmEga29sdW1uIG5pZSBvZHBvd2lhZGEgbGljemJpZSB3YXJ0bz9jaQBOYXp3YSBpZGVudHlmaWthdG9yYSAnJS0uMTAwcycgamVzdCB6Ynl0IGTFgnVnYQBQb3d0w7Nyem9uYSBuYXp3YSBrb2x1bW55ICclLS4xOTJzJwBQb3d0w7Nyem9ueSBuYXp3YSBrbHVjemEgJyUtLjE5MnMnAFBvd3TDs3J6b25lIHd5c3TEhXBpZW5pZSAnJS0uMTkycycgZGxhIGtsdWN6YSAlZABCxYLEmWRuYSBzcGVjeWZpa2FjamEga29sdW1ueSBkbGEga29sdW1ueSAnJS0uMTkycycAJXMgb2JvayAnJS0uODBzJyB3IGxpbmlpICVkAFphcHl0YW5pZSBiecWCbyBwdXN0ZQBUYWJlbGEvYWxpYXMgbmllIHM/IHVuaWthbG5lOiAnJS0uMTkycycATmlld8WCYT9jaXdhIHdhcnRvP8SHIGRvbXk/bG5hIGRsYSAnJS0uMTkycycAWmRlZmluaW93YW5vIHdpZWxlIGtsdWN6eSBwb2RzdGF3b3d5Y2gAT2tyZT9sb25vIHpieXQgd2llbGUga2x1Y3p5LiBEb3N0xJlwbnljaCBqZXN0IG1ha3N5bWFsbmllICVkIGtsdWN6eQBPa3JlP2xvbm8gemJ5dCB3aWVsZSBjesSZP2NpIGtsdWN6YS4gRG9zdMSZcG55Y2ggamVzdCBtYWtzeW1hbG5pZSAlZCBjesSZP2NpAFpkZWZpbm93YW55IGtsdWN6IGplc3QgemJ5dCBkxYJ1Z2kuIE1ha3N5bWFsbj8gZMWCdWdvP2NpPyBrbHVjemEgamVzdCAlZABLb2x1bW5hICclLS4xOTJzJyB6ZGVmaW5pb3dhbmEgdyBrbHVjenUgbmllIGlzdG5pZWplIHcgdGFiZWxpAEtvbHVtbmEgdHlwdSBCbG9iICclLS4xOTJzJyBuaWUgbW/FvGUgYnnEhyB1xbx5dGEgdyBzcGVjeWZpa2Fjamkga2x1Y3phAFpieXQgZHXFvGEgZMWCdWdvP8SHIGtvbHVtbnkgJyUtLjE5MnMnIChtYWtzLiA9ICVsdSkuIFcgemFtaWFuIHXFvHlqIHR5cHUgQkxPQgBXIHRhYmVsaSBtb8W8ZSBiecSHIHR5bGtvIGplZG5vIHBvbGUgYXV0byBpIG11c2kgb25vIGJ5xIcgemRlZmluaW93YW5lIGpha28ga2x1Y3oAJXM6IGdvdG93ZSBkbyBwb8WCP2N6ZW5pYQpWZXJzaW9uOiAnJXMnICBzb2NrZXQ6ICclcycgIHBvcnQ6ICVkACVzOiBTdGFuZGFyZG93ZSB6YWtvxYRjemVuaWUgZHppYcWCYW5pYQoAJXM6IE90cnp5bWFubyBzeWduYcWCICVkLiBLb8WEY3plbmllIGR6aWHFgmFuaWEhCgAlczogWmFrb8WEY3plbmllIGR6aWHFgmFuaWEgd3lrb25hbmUKACVzOiBXeW11c3plbmllIHphbWtuacSZY2lhIHc/dGt1ICVsZCAgdcW8eXRrb3duaWs6ICclLS40OHMnCgBOaWUgbW/FvG5hIHN0d29yennEhyBzb2NrZXQndSBJUABUYWJlbGEgJyUtLjE5MnMnIG5pZSBtYSBpbmRla3N1IHRha2llZ28gamFrIHcgQ1JFQVRFIElOREVYLiBTdHfDs3J6IHRhYmVsxJkATmllIG9jemVraXdhbm8gc2VwYXJhdG9yYS4gU3ByYXdkxL0gcG9kcsSZY3puaWsATmllIG1vxbxuYSB1xbx5xIcgc3RhxYJlaiBkxYJ1Z28/Y2kgd2llcnN6YSB6IHBvbGFtaSB0eXB1IEJMT0IuIFXFvHlqICdmaWVsZHMgdGVybWluYXRlZCBieScuAFBsaWsgJyUtLjEyOHMnIG11c2kgem5hamRvd2HEhyBzaWUgdyBrYXRhbG9ndSBiYXp5IGRhbnljaCBsdWIgbWllxIcgcHJhd2EgY3p5dGFuaWEgcHJ6ZXogd3N6eXN0a2ljaABQbGlrICclLS4yMDBzJyBqdcW8IGlzdG5pZWplAFJlY29yZMOzdzogJWxkICBVc3VuacSZdHljaDogJWxkICBQb21pbmnEmXR5Y2g6ICVsZCAgT3N0cnplxbxlxYQ6ICVsZABSZWtvcmTDs3c6ICVsZCAgRHVwbGlrYXTDs3c6ICVsZABCxYLEmWRuYSBwb2RjesSZP8SHIGtsdWN6YS4gVcW8eXRhIGN6xJk/xIcga2x1Y3phIG5pZSBqZXN0IMWCYcWEY3VjaGVtIGx1YiB1xbx5dGEgZMWCdWdvP8SHICBqZXN0IHdpxJlrc3phIG5pxbwgY3rEmT/EhyBrbHVjemEATmllIG1vxbxuYSB1c3VuP8SHIHdzenlzdGtpY2ggcMOzbCB3eWtvcnp5c3R1aj9jIEFMVEVSIFRBQkxFLiBXIHphbWlhbiB1xbx5aiBEUk9QIFRBQkxFAE5pZSBtb8W8bmEgd3lrb25hxIcgb3BlcmFjamkgRFJPUCAnJS0uMTkycycuIFNwcmF3ZMS9LCBjenkgdG8gcG9sZS9rbHVjeiBpc3RuaWVqZQBSZWtvcmTDs3c6ICVsZCAgRHVwbGlrYXTDs3c6ICVsZCAgT3N0cnplxbxlxYQ6ICVsZABZb3UgY2FuJ3Qgc3BlY2lmeSB0YXJnZXQgdGFibGUgJyUtLjE5MnMnIGZvciB1cGRhdGUgaW4gRlJPTSBjbGF1c2UATmllem5hbnkgaWRlbnR5ZmlrYXRvciB3P3RrdTogJWx1AE5pZSBqZXN0ZT8gd8WCYT9jaWNpZWxlbSB3P3RrdSAlbHUATmllIG1hIMW8YWRlaiB1xbx5dGVqIHRhYmVsaQBaYnl0IHdpZWxlIMWCYcWEY3VjaMOzdyBkbGEga29sdW1ueSAlLS4xOTJzIGkgcG9sZWNlbmlhIFNFVABOaWUgbW/FvG5hIHN0d29yennEhyB1bmlrYWxuZWogbmF6d3kgcGxpa3UgeiBsb2dpZW0gJS0uMjAwcy4oMS05OTkpCgBUYWJlbGEgJyUtLjE5MnMnIHpvc3RhxYJhIHphYmxva293YW5hIHByemV6IFJFQUQgaSBuaWUgbW/FvGUgem9zdGHEhyB6YWt0dWFsaXpvd2FuYQBUYWJlbGEgJyUtLjE5MnMnIG5pZSB6b3N0YcWCYSB6YWJsb2tvd2FuYSBwb2xlY2VuaWVtIExPQ0sgVEFCTEVTAFBvbGUgdHlwdSBibG9iICclLS4xOTJzJyBuaWUgbW/FvGUgbWllxIcgZG9teT9sbmVqIHdhcnRvP2NpAE5pZWRvendvbG9uYSBuYXp3YSBiYXp5IGRhbnljaCAnJS0uMTAwcycATmllZG96d29sb25hIG5hendhIHRhYmVsaSAnJS0uMTAwcycuLi4AT3BlcmFjamEgU0VMRUNUIGLEmWR6aWUgZG90eWN6ecWCYSB6Ynl0IHdpZWx1IHJla29yZMOzdyBpIHByYXdkb3BvZG9ibmllIHpham1pZSBiYXJkem8gZHXFvG8gY3phc3UuIFNwcmF3ZMS9IHdhcnVuZWsgV0hFUkUgaSB1xbx5aiBTUUxfT1BUSU9OIEJJR19TRUxFQ1RTPTEgamU/bGkgb3BlcmFjamEgU0VMRUNUIGplc3QgcG9wcmF3bmEAVW5rbm93biBlcnJvcgBVbmtvd24gcHJvY2VkdXJlICUtLjE5MnMASW5jb3JyZWN0IHBhcmFtZXRlciBjb3VudCB0byBwcm9jZWR1cmUgJS0uMTkycwBJbmNvcnJlY3QgcGFyYW1ldGVycyB0byBwcm9jZWR1cmUgJS0uMTkycwBVbmtub3duIHRhYmxlICclLS4xOTJzJyBpbiAlLS4zMnMARmllbGQgJyUtLjE5MnMnIHNwZWNpZmllZCB0d2ljZQBJbnZhbGlkIHVzZSBvZiBncm91cCBmdW5jdGlvbgBUYWJsZSAnJS0uMTkycycgdXNlcyBhIGV4dGVuc2lvbiB0aGF0IGRvZXNuJ3QgZXhpc3QgaW4gdGhpcyBNeVNRTCB2ZXJzaW9uAEEgdGFibGUgbXVzdCBoYXZlIGF0IGxlYXN0IDEgY29sdW1uAFRoZSB0YWJsZSAnJS0uMTkycycgaXMgZnVsbABVbmtub3duIGNoYXJhY3RlciBzZXQ6ICclLS42NHMnAFRvbyBtYW55IHRhYmxlczsgTXlTUUwgY2FuIG9ubHkgdXNlICVkIHRhYmxlcyBpbiBhIGpvaW4AVG9vIG1hbnkgY29sdW1ucwBSb3cgc2l6ZSB0b28gbGFyZ2UuIFRoZSBtYXhpbXVtIHJvdyBzaXplIGZvciB0aGUgdXNlZCB0YWJsZSB0eXBlLCBub3QgY291bnRpbmcgQkxPQnMsIGlzICVsZC4gVGhpcyBpbmNsdWRlcyBzdG9yYWdlIG92ZXJoZWFkLCBjaGVjayB0aGUgbWFudWFsLiBZb3UgaGF2ZSB0byBjaGFuZ2Ugc29tZSBjb2x1bW5zIHRvIFRFWFQgb3IgQkxPQnMAVGhyZWFkIHN0YWNrIG92ZXJydW46ICBVc2VkOiAlbGQgb2YgYSAlbGQgc3RhY2suICBVc2UgJ215c3FsZCAtLXRocmVhZF9zdGFjaz0jJyB0byBzcGVjaWZ5IGEgYmlnZ2VyIHN0YWNrIGlmIG5lZWRlZABDcm9zcyBkZXBlbmRlbmN5IGZvdW5kIGluIE9VVEVSIEpPSU47IGV4YW1pbmUgeW91ciBPTiBjb25kaXRpb25zAFRhYmxlIGhhbmRsZXIgZG9lc24ndCBzdXBwb3J0IE5VTEwgaW4gZ2l2ZW4gaW5kZXguIFBsZWFzZSBjaGFuZ2UgY29sdW1uICclLS4xOTJzJyB0byBiZSBOT1QgTlVMTCBvciB1c2UgYW5vdGhlciBoYW5kbGVyAENhbid0IGxvYWQgZnVuY3Rpb24gJyUtLjE5MnMnAENhbid0IGluaXRpYWxpemUgZnVuY3Rpb24gJyUtLjE5MnMnOyAlLS4xOTJzAE5vIHBhdGhzIGFsbG93ZWQgZm9yIHNoYXJlZCBsaWJyYXJ5AEZ1bmN0aW9uICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cwBDYW4ndCBvcGVuIHNoYXJlZCBsaWJyYXJ5ICclLS4xOTJzJyAoZXJybm86ICVkICUtLjE5MnMpAENhbid0IGZpbmQgc3ltYm9sICclLS4xMjhzJyBpbiBsaWJyYXJ5AEZ1bmN0aW9uICclLS4xOTJzJyBpcyBub3QgZGVmaW5lZABIb3N0ICclLS4yNTVzJyBpcyBibG9ja2VkIGJlY2F1c2Ugb2YgbWFueSBjb25uZWN0aW9uIGVycm9yczsgdW5ibG9jayB3aXRoICdteXNxbGFkbWluIGZsdXNoLWhvc3RzJwBIb3N0ICclLS4yNTVzJyBpcyBub3QgYWxsb3dlZCB0byBjb25uZWN0IHRvIHRoaXMgTXlTUUwgc2VydmVyAFlvdSBhcmUgdXNpbmcgTXlTUUwgYXMgYW4gYW5vbnltb3VzIHVzZXIgYW5kIGFub255bW91cyB1c2VycyBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHBhc3N3b3JkcwBZb3UgbXVzdCBoYXZlIHByaXZpbGVnZXMgdG8gdXBkYXRlIHRhYmxlcyBpbiB0aGUgbXlzcWwgZGF0YWJhc2UgdG8gYmUgYWJsZSB0byBjaGFuZ2UgcGFzc3dvcmRzIGZvciBvdGhlcnMAQ2FuJ3QgZmluZCBhbnkgbWF0Y2hpbmcgcm93IGluIHRoZSB1c2VyIHRhYmxlAFJvd3MgbWF0Y2hlZDogJWxkICBDaGFuZ2VkOiAlbGQgIFdhcm5pbmdzOiAlbGQAQ2FuJ3QgY3JlYXRlIGEgbmV3IHRocmVhZCAoZXJybm8gJWQpOyBpZiB5b3UgYXJlIG5vdCBvdXQgb2YgYXZhaWxhYmxlIG1lbW9yeSB5b3UgY2FuIGNvbnN1bHQgdGhlIG1hbnVhbCBmb3IgYW55IHBvc3NpYmxlIE9TIGRlcGVuZGVudCBidWcAQ29sdW1uIGNvdW50IGRvZXNuJ3QgbWF0Y2ggdmFsdWUgY291bnQgYXQgcm93ICVsZABDYW4ndCByZW9wZW4gdGFibGU6ICclLS4xOTJzAEludmFsaWQgdXNlIG9mIE5VTEwgdmFsdWUAR290IGVycm9yICclLS42NHMnIGZyb20gcmVnZXhwAE1peGluZyBvZiBHUk9VUCBjb2x1bW5zIChNSU4oKSxNQVgoKSxDT1VOVCgpLC4uLikgd2l0aCBubyBHUk9VUCBjb2x1bW5zIGlzIGlsbGVnYWwgaWYgdGhlcmUgaXMgbm8gR1JPVVAgQlkgY2xhdXNlAFRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5lZCBmb3IgdXNlciAnJS0uNDhzJyBvbiBob3N0ICclLS4yNTVzJwAlLS4xMjhzIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycgZm9yIHRhYmxlICclLS42NHMnACUtLjE2cyBjb21tYW5kIGRlbmllZCB0byB1c2VyICclLS40OHMnQCclLS42NHMnIGZvciBjb2x1bW4gJyUtLjE5MnMnIGluIHRhYmxlICclLS4xOTJzJwBJbGxlZ2FsIEdSQU5UL1JFVk9LRSBjb21tYW5kOyBwbGVhc2UgY29uc3VsdCB0aGUgbWFudWFsIHRvIHNlZSB3aGljaCBwcml2bGVnZXMgY2FuIGJlIHVzZWQuAFRoZSBob3N0IG9yIHVzZXIgYXJndW1lbnQgdG8gR1JBTlQgaXMgdG9vIGxvbmcAVGFibGUgJyUtLjE5MnMuJS0uMTkycycgZG9lc24ndCBleGlzdABUaGVyZSBpcyBubyBzdWNoIGdyYW50IGRlZmluZWQgZm9yIHVzZXIgJyUtLjQ4cycgb24gaG9zdCAnJS0uMjU1cycgb24gdGFibGUgJyUtLjE5MnMnAFRoZSB1c2VkIGNvbW1hbmQgaXMgbm90IGFsbG93ZWQgd2l0aCB0aGlzIE15U1FMIHZlcnNpb24AU29tZXRoaW5nIGlzIHdyb25nIGluIHlvdXIgc3ludGF4AERlbGF5ZWQgaW5zZXJ0IHRocmVhZCBjb3VsZG4ndCBnZXQgcmVxdWVzdGVkIGxvY2sgZm9yIHRhYmxlICUtLjE5MnMAVG9vIG1hbnkgZGVsYXllZCB0aHJlYWRzIGluIHVzZQBBYm9ydGVkIGNvbm5lY3Rpb24gJWxkIHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgKCUtLjY0cykAR290IGEgcGFja2V0IGJpZ2dlciB0aGFuICdtYXhfYWxsb3dlZF9wYWNrZXQnIGJ5dGVzAEdvdCBhIHJlYWQgZXJyb3IgZnJvbSB0aGUgY29ubmVjdGlvbiBwaXBlAEdvdCBhbiBlcnJvciBmcm9tIGZjbnRsKCkAR290IHBhY2tldHMgb3V0IG9mIG9yZGVyAENvdWxkbid0IHVuY29tcHJlc3MgY29tbXVuaWNhdGlvbiBwYWNrZXQAR290IGFuIGVycm9yIHJlYWRpbmcgY29tbXVuaWNhdGlvbiBwYWNrZXRzAEdvdCB0aW1lb3V0IHJlYWRpbmcgY29tbXVuaWNhdGlvbiBwYWNrZXRzAEdvdCBhbiBlcnJvciB3cml0aW5nIGNvbW11bmljYXRpb24gcGFja2V0cwBHb3QgdGltZW91dCB3cml0aW5nIGNvbW11bmljYXRpb24gcGFja2V0cwBSZXN1bHQgc3RyaW5nIGlzIGxvbmdlciB0aGFuICdtYXhfYWxsb3dlZF9wYWNrZXQnIGJ5dGVzAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IEJMT0IvVEVYVCBjb2x1bW5zAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IEFVVE9fSU5DUkVNRU5UIGNvbHVtbnMASU5TRVJUIERFTEFZRUQgY2FuJ3QgYmUgdXNlZCB3aXRoIHRhYmxlICclLS4xOTJzJyBiZWNhdXNlIGl0IGlzIGxvY2tlZCB3aXRoIExPQ0sgVEFCTEVTAEluY29ycmVjdCBjb2x1bW4gbmFtZSAnJS0uMTAwcycAVGhlIHVzZWQgdGFibGUgaGFuZGxlciBjYW4ndCBpbmRleCBjb2x1bW4gJyUtLjE5MnMnAEFsbCB0YWJsZXMgaW4gdGhlIE1FUkdFIHRhYmxlIGFyZSBub3QgZGVmaW5lZCBpZGVudGljYWxseQBDYW4ndCB3cml0ZSwgYmVjYXVzZSBvZiB1bmlxdWUgY29uc3RyYWludCwgdG8gdGFibGUgJyUtLjE5MnMnAEJMT0IgY29sdW1uICclLS4xOTJzJyB1c2VkIGluIGtleSBzcGVjaWZpY2F0aW9uIHdpdGhvdXQgYSBrZXkgbGVuZ3RoAEFsbCBwYXJ0cyBvZiBhIFBSSU1BUlkgS0VZIG11c3QgYmUgTk9UIE5VTEw7IGlmIHlvdSBuZWVkIE5VTEwgaW4gYSBrZXksIHVzZSBVTklRVUUgaW5zdGVhZABSZXN1bHQgY29uc2lzdGVkIG9mIG1vcmUgdGhhbiBvbmUgcm93AFRoaXMgdGFibGUgdHlwZSByZXF1aXJlcyBhIHByaW1hcnkga2V5AFRoaXMgdmVyc2lvbiBvZiBNeVNRTCBpcyBub3QgY29tcGlsZWQgd2l0aCBSQUlEIHN1cHBvcnQAWW91IGFyZSB1c2luZyBzYWZlIHVwZGF0ZSBtb2RlIGFuZCB5b3UgdHJpZWQgdG8gdXBkYXRlIGEgdGFibGUgd2l0aG91dCBhIFdIRVJFIHRoYXQgdXNlcyBhIEtFWSBjb2x1bW4uICVzAEtleSAnJS0uMTkycycgZG9lc24ndCBleGlzdCBpbiB0YWJsZSAnJS0uMTkycycAQ2FuJ3Qgb3BlbiB0YWJsZQBUaGUgaGFuZGxlciBmb3IgdGhlIHRhYmxlIGRvZXNuJ3Qgc3VwcG9ydCAlcwBZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGV4ZWN1dGUgdGhpcyBjb21tYW5kIGluIGEgdHJhbnNhY3Rpb24AR290IGVycm9yICVkIC0gJyUtLjE5MnMnIGR1cmluZyBDT01NSVQAR290IGVycm9yICVkIC0gJyUtLjE5MnMnIGR1cmluZyBST0xMQkFDSwBHb3QgZXJyb3IgJWQgZHVyaW5nIEZMVVNIX0xPR1MAR290IGVycm9yICVkIGR1cmluZyBDSEVDS1BPSU5UAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzKQBUaGUgc3RvcmFnZSBlbmdpbmUgZm9yIHRoZSB0YWJsZSBkb2VzIG5vdCBzdXBwb3J0IGJpbmFyeSB0YWJsZSBkdW1wAEJpbmxvZyBjbG9zZWQsIGNhbm5vdCBSRVNFVCBCSU5BUlkgTE9HUyBBTkQgR1RJRFMARmFpbGVkIHJlYnVpbGRpbmcgdGhlIGluZGV4IG9mICBkdW1wZWQgdGFibGUgJyUtLjE5MnMnAEVycm9yIGZyb20gc291cmNlOiAnJS0uNjRzJwBOZXQgZXJyb3IgcmVhZGluZyBmcm9tIHNvdXJjZQBOZXQgZXJyb3Igd3JpdGluZyB0byBzb3VyY2UAQ2FuJ3QgZmluZCBGVUxMVEVYVCBpbmRleCBtYXRjaGluZyB0aGUgY29sdW1uIGxpc3QAQ2FuJ3QgZXhlY3V0ZSB0aGUgZ2l2ZW4gY29tbWFuZCBiZWNhdXNlIHlvdSBoYXZlIGFjdGl2ZSBsb2NrZWQgdGFibGVzIG9yIGFuIGFjdGl2ZSB0cmFuc2FjdGlvbgBVbmtub3duIHN5c3RlbSB2YXJpYWJsZSAnJS0uNjRzJwBUYWJsZSAnJS0uMTkycycgaXMgbWFya2VkIGFzIGNyYXNoZWQgYW5kIHNob3VsZCBiZSByZXBhaXJlZABUYWJsZSAnJS0uMTkycycgaXMgbWFya2VkIGFzIGNyYXNoZWQgYW5kIGxhc3QgKGF1dG9tYXRpYz8pIHJlcGFpciBmYWlsZWQAU29tZSBub24tdHJhbnNhY3Rpb25hbCBjaGFuZ2VkIHRhYmxlcyBjb3VsZG4ndCBiZSByb2xsZWQgYmFjawBNdWx0aS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb24gcmVxdWlyZWQgbW9yZSB0aGFuICdtYXhfYmlubG9nX2NhY2hlX3NpemUnIGJ5dGVzIG9mIHN0b3JhZ2U7IGluY3JlYXNlIHRoaXMgbXlzcWxkIHZhcmlhYmxlIGFuZCB0cnkgYWdhaW4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhOyBydW4gU1RPUCBSRVBMSUNBIGZpcnN0AFRoaXMgb3BlcmF0aW9uIHJlcXVpcmVzIGEgcnVubmluZyByZXBsaWNhOyBjb25maWd1cmUgcmVwbGljYSBhbmQgZG8gU1RBUlQgUkVQTElDQQBUaGUgc2VydmVyIGlzIG5vdCBjb25maWd1cmVkIGFzIHJlcGxpY2E7IGZpeCBpbiBjb25maWcgZmlsZSBvciB3aXRoIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8AQ291bGQgbm90IGluaXRpYWxpemUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmU7IG1vcmUgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cAQ291bGQgbm90IGNyZWF0ZSByZXBsaWNhIHRocmVhZDsgY2hlY2sgc3lzdGVtIHJlc291cmNlcwBVc2VyICUtLjY0cyBhbHJlYWR5IGhhcyBtb3JlIHRoYW4gJ21heF91c2VyX2Nvbm5lY3Rpb25zJyBhY3RpdmUgY29ubmVjdGlvbnMAWW91IG1heSBvbmx5IHVzZSBjb25zdGFudCBleHByZXNzaW9ucyB3aXRoIFNFVABMb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZDsgdHJ5IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24AVGhlIHRvdGFsIG51bWJlciBvZiBsb2NrcyBleGNlZWRzIHRoZSBsb2NrIHRhYmxlIHNpemUAVXBkYXRlIGxvY2tzIGNhbm5vdCBiZSBhY3F1aXJlZCBkdXJpbmcgYSBSRUFEIFVOQ09NTUlUVEVEIHRyYW5zYWN0aW9uAERST1AgREFUQUJBU0Ugbm90IGFsbG93ZWQgd2hpbGUgdGhyZWFkIGlzIGhvbGRpbmcgZ2xvYmFsIHJlYWQgbG9jawBDUkVBVEUgREFUQUJBU0Ugbm90IGFsbG93ZWQgd2hpbGUgdGhyZWFkIGlzIGhvbGRpbmcgZ2xvYmFsIHJlYWQgbG9jawBJbmNvcnJlY3QgYXJndW1lbnRzIHRvICVzACclLS40OHMnQCclLS42NHMnIGlzIG5vdCBhbGxvd2VkIHRvIGNyZWF0ZSBuZXcgdXNlcnMASW5jb3JyZWN0IHRhYmxlIGRlZmluaXRpb247IGFsbCBNRVJHRSB0YWJsZXMgbXVzdCBiZSBpbiB0aGUgc2FtZSBkYXRhYmFzZQBEZWFkbG9jayBmb3VuZCB3aGVuIHRyeWluZyB0byBnZXQgbG9jazsgdHJ5IHJlc3RhcnRpbmcgdHJhbnNhY3Rpb24AVGhlIHVzZWQgdGFibGUgdHlwZSBkb2Vzbid0IHN1cHBvcnQgRlVMTFRFWFQgaW5kZXhlcwBDYW5ub3QgYWRkIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQAQ2Fubm90IGFkZCBvciB1cGRhdGUgYSBjaGlsZCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscwBDYW5ub3QgZGVsZXRlIG9yIHVwZGF0ZSBhIHBhcmVudCByb3c6IGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBmYWlscwBFcnJvciBjb25uZWN0aW5nIHRvIHNvdXJjZTogJS0uMTI4cwBFcnJvciBydW5uaW5nIHF1ZXJ5IG9uIHNvdXJjZTogJS0uMTI4cwBFcnJvciB3aGVuIGV4ZWN1dGluZyBjb21tYW5kICVzOiAlLS4xMjhzAEluY29ycmVjdCB1c2FnZSBvZiAlcyBhbmQgJXMAVGhlIHVzZWQgU0VMRUNUIHN0YXRlbWVudHMgaGF2ZSBhIGRpZmZlcmVudCBudW1iZXIgb2YgY29sdW1ucwBDYW4ndCBleGVjdXRlIHRoZSBxdWVyeSBiZWNhdXNlIHlvdSBoYXZlIGEgY29uZmxpY3RpbmcgcmVhZCBsb2NrAE1peGluZyBvZiB0cmFuc2FjdGlvbmFsIGFuZCBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgaXMgZGlzYWJsZWQAT3B0aW9uICclcycgdXNlZCB0d2ljZSBpbiBzdGF0ZW1lbnQAVXNlciAnJS0uNjRzJyBoYXMgZXhjZWVkZWQgdGhlICclcycgcmVzb3VyY2UgKGN1cnJlbnQgdmFsdWU6ICVsZCkAQWNjZXNzIGRlbmllZDsgeW91IG5lZWQgKGF0IGxlYXN0IG9uZSBvZikgdGhlICUtLjEyOHMgcHJpdmlsZWdlKHMpIGZvciB0aGlzIG9wZXJhdGlvbgBWYXJpYWJsZSAnJS0uNjRzJyBpcyBhIFNFU1NJT04gdmFyaWFibGUgYW5kIGNhbid0IGJlIHVzZWQgd2l0aCBTRVQgR0xPQkFMAFZhcmlhYmxlICclLS42NHMnIGlzIGEgR0xPQkFMIHZhcmlhYmxlIGFuZCBzaG91bGQgYmUgc2V0IHdpdGggU0VUIEdMT0JBTABWYXJpYWJsZSAnJS0uNjRzJyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IHZhbHVlAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnAEluY29ycmVjdCBhcmd1bWVudCB0eXBlIHRvIHZhcmlhYmxlICclLS42NHMnAFZhcmlhYmxlICclLS42NHMnIGNhbiBvbmx5IGJlIHNldCwgbm90IHJlYWQASW5jb3JyZWN0IHVzYWdlL3BsYWNlbWVudCBvZiAnJXMnAFRoaXMgdmVyc2lvbiBvZiBNeVNRTCBkb2Vzbid0IHlldCBzdXBwb3J0ICclcycAR290IGZhdGFsIGVycm9yICVkIGZyb20gc291cmNlIHdoZW4gcmVhZGluZyBkYXRhIGZyb20gYmluYXJ5IGxvZzogJyUtLjUxMnMnAFJlcGxpY2EgU1FMIHRocmVhZCBpZ25vcmVkIHRoZSBxdWVyeSBiZWNhdXNlIG9mIHJlcGxpY2F0ZS0qLXRhYmxlIHJ1bGVzAFZhcmlhYmxlICclLS4xOTJzJyBpcyBhICVzIHZhcmlhYmxlAEluY29ycmVjdCBmb3JlaWduIGtleSBkZWZpbml0aW9uIGZvciAnJS0uMTkycyc6ICVzAEtleSByZWZlcmVuY2UgYW5kIHRhYmxlIHJlZmVyZW5jZSBkb24ndCBtYXRjaABPcGVyYW5kIHNob3VsZCBjb250YWluICVkIGNvbHVtbihzKQBTdWJxdWVyeSByZXR1cm5zIG1vcmUgdGhhbiAxIHJvdwBVbmtub3duIHByZXBhcmVkIHN0YXRlbWVudCBoYW5kbGVyICglLipzKSBnaXZlbiB0byAlcwBIZWxwIGRhdGFiYXNlIGlzIGNvcnJ1cHQgb3IgZG9lcyBub3QgZXhpc3QAQ3ljbGljIHJlZmVyZW5jZSBvbiBzdWJxdWVyaWVzAENvbnZlcnRpbmcgY29sdW1uICclcycgZnJvbSAlcyB0byAlcwBSZWZlcmVuY2UgJyUtLjY0cycgbm90IHN1cHBvcnRlZCAoJXMpAEV2ZXJ5IGRlcml2ZWQgdGFibGUgbXVzdCBoYXZlIGl0cyBvd24gYWxpYXMAU2VsZWN0ICV1IHdhcyByZWR1Y2VkIGR1cmluZyBvcHRpbWl6YXRpb24AVGFibGUgJyUtLjE5MnMnIGZyb20gb25lIG9mIHRoZSBTRUxFQ1RzIGNhbm5vdCBiZSB1c2VkIGluICUtLjMycwBDbGllbnQgZG9lcyBub3Qgc3VwcG9ydCBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCByZXF1ZXN0ZWQgYnkgc2VydmVyOyBjb25zaWRlciB1cGdyYWRpbmcgTXlTUUwgY2xpZW50AEFsbCBwYXJ0cyBvZiBhIFNQQVRJQUwgaW5kZXggbXVzdCBiZSBOT1QgTlVMTABDT0xMQVRJT04gJyVzJyBpcyBub3QgdmFsaWQgZm9yIENIQVJBQ1RFUiBTRVQgJyVzJwBSZXBsaWNhIGlzIGFscmVhZHkgcnVubmluZwBSZXBsaWNhIGFscmVhZHkgaGFzIGJlZW4gc3RvcHBlZABVbmNvbXByZXNzZWQgZGF0YSBzaXplIHRvbyBsYXJnZTsgdGhlIG1heGltdW0gc2l6ZSBpcyAlZCAocHJvYmFibHksIGxlbmd0aCBvZiB1bmNvbXByZXNzZWQgZGF0YSB3YXMgY29ycnVwdGVkKQBaTElCOiBOb3QgZW5vdWdoIG1lbW9yeQBaTElCOiBOb3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIgKHByb2JhYmx5LCBsZW5ndGggb2YgdW5jb21wcmVzc2VkIGRhdGEgd2FzIGNvcnJ1cHRlZCkAWkxJQjogSW5wdXQgZGF0YSBjb3JydXB0ZWQAUm93ICV1IHdhcyBjdXQgYnkgR1JPVVBfQ09OQ0FUKCkAUm93ICVsZCBkb2Vzbid0IGNvbnRhaW4gZGF0YSBmb3IgYWxsIGNvbHVtbnMAUm93ICVsZCB3YXMgdHJ1bmNhdGVkOyBpdCBjb250YWluZWQgbW9yZSBkYXRhIHRoYW4gdGhlcmUgd2VyZSBpbnB1dCBjb2x1bW5zAENvbHVtbiBzZXQgdG8gZGVmYXVsdCB2YWx1ZTsgTlVMTCBzdXBwbGllZCB0byBOT1QgTlVMTCBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAE91dCBvZiByYW5nZSB2YWx1ZSBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABEYXRhIHRydW5jYXRlZCBmb3IgY29sdW1uICclcycgYXQgcm93ICVsZABVc2luZyBzdG9yYWdlIGVuZ2luZSAlcyBmb3IgdGFibGUgJyVzJwBJbGxlZ2FsIG1peCBvZiBjb2xsYXRpb25zICglcywlcykgYW5kICglcywlcykgZm9yIG9wZXJhdGlvbiAnJXMnAENhbm5vdCBkcm9wIG9uZSBvciBtb3JlIG9mIHRoZSByZXF1ZXN0ZWQgdXNlcnMAQ2FuJ3QgcmV2b2tlIGFsbCBwcml2aWxlZ2VzIGZvciBvbmUgb3IgbW9yZSBvZiB0aGUgcmVxdWVzdGVkIHVzZXJzAElsbGVnYWwgbWl4IG9mIGNvbGxhdGlvbnMgKCVzLCVzKSwgKCVzLCVzKSwgKCVzLCVzKSBmb3Igb3BlcmF0aW9uICclcycASWxsZWdhbCBtaXggb2YgY29sbGF0aW9ucyBmb3Igb3BlcmF0aW9uICclcycAVmFyaWFibGUgJyUtLjY0cycgaXMgbm90IGEgdmFyaWFibGUgY29tcG9uZW50IChjYW4ndCBiZSB1c2VkIGFzIFhYWFgudmFyaWFibGVfbmFtZSkAVW5rbm93biBjb2xsYXRpb246ICclLS42NHMnAFNTTCBwYXJhbWV0ZXJzIGluIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgYXJlIGlnbm9yZWQgYmVjYXVzZSB0aGlzIE15U1FMIHJlcGxpY2Egd2FzIGNvbXBpbGVkIHdpdGhvdXQgU1NMIHN1cHBvcnQ7IHRoZXkgY2FuIGJlIHVzZWQgbGF0ZXIgaWYgTXlTUUwgcmVwbGljYSB3aXRoIFNTTCBpcyBzdGFydGVkAFNlcnZlciBpcyBydW5uaW5nIGluIC0tc2VjdXJlLWF1dGggbW9kZSwgYnV0ICclcydAJyVzJyBoYXMgYSBwYXNzd29yZCBpbiB0aGUgb2xkIGZvcm1hdDsgcGxlYXNlIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhlIG5ldyBmb3JtYXQARmllbGQgb3IgcmVmZXJlbmNlICclLS4xOTJzJXMlLS4xOTJzJXMlLS4xOTJzJyBvZiBTRUxFQ1QgIyVkIHdhcyByZXNvbHZlZCBpbiBTRUxFQ1QgIyVkAEluY29ycmVjdCBwYXJhbWV0ZXIgb3IgY29tYmluYXRpb24gb2YgcGFyYW1ldGVycyBmb3IgU1RBUlQgUkVQTElDQSBVTlRJTABJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgLS1za2lwLXJlcGxpY2Etc3RhcnQgd2hlbiBkb2luZyBzdGVwLWJ5LXN0ZXAgcmVwbGljYXRpb24gd2l0aCBTVEFSVCBSRVBMSUNBIFVOVElMOyBvdGhlcndpc2UsIHlvdSB3aWxsIGdldCBwcm9ibGVtcyBpZiB5b3UgZ2V0IGFuIHVuZXhwZWN0ZWQgcmVwbGljYSdzIG15c3FsZCByZXN0YXJ0AFNRTCB0aHJlYWQgaXMgbm90IHRvIGJlIHN0YXJ0ZWQgc28gVU5USUwgb3B0aW9ucyBhcmUgaWdub3JlZABJbmNvcnJlY3QgaW5kZXggbmFtZSAnJS0uMTAwcycASW5jb3JyZWN0IGNhdGFsb2cgbmFtZSAnJS0uMTAwcycAUXVlcnkgY2FjaGUgZmFpbGVkIHRvIHNldCBzaXplICVsdTsgbmV3IHF1ZXJ5IGNhY2hlIHNpemUgaXMgJWx1AENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIHBhcnQgb2YgRlVMTFRFWFQgaW5kZXgAVW5rbm93biBrZXkgY2FjaGUgJyUtLjEwMHMnAE15U1FMIGlzIHN0YXJ0ZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlOyB5b3UgbXVzdCByZXN0YXJ0IGl0IHdpdGhvdXQgdGhpcyBzd2l0Y2ggZm9yIHRoaXMgZ3JhbnQgdG8gd29yawBVbmtub3duIHN0b3JhZ2UgZW5naW5lICclcycAJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkAFRoZSB0YXJnZXQgdGFibGUgJS0uMTAwcyBvZiB0aGUgJXMgaXMgbm90IHVwZGF0YWJsZQBUaGUgJyVzJyBmZWF0dXJlIGlzIGRpc2FibGVkOyB5b3UgbmVlZCBNeVNRTCBidWlsdCB3aXRoICclcycgdG8gaGF2ZSBpdCB3b3JraW5nAFRoZSBNeVNRTCBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIHRoZSAlcyBvcHRpb24gc28gaXQgY2Fubm90IGV4ZWN1dGUgdGhpcyBzdGF0ZW1lbnQAQ29sdW1uICclLS4xMDBzJyBoYXMgZHVwbGljYXRlZCB2YWx1ZSAnJS0uNjRzJyBpbiAlcwBUcnVuY2F0ZWQgaW5jb3JyZWN0ICUtLjY0cyB2YWx1ZTogJyUtLjEyOHMnAEluY29ycmVjdCB0YWJsZSBkZWZpbml0aW9uOyB0aGVyZSBjYW4gYmUgb25seSBvbmUgVElNRVNUQU1QIGNvbHVtbiB3aXRoIENVUlJFTlRfVElNRVNUQU1QIGluIERFRkFVTFQgb3IgT04gVVBEQVRFIGNsYXVzZQBJbnZhbGlkIE9OIFVQREFURSBjbGF1c2UgZm9yICclLS4xOTJzJyBjb2x1bW4AVGhpcyBjb21tYW5kIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIHByZXBhcmVkIHN0YXRlbWVudCBwcm90b2NvbCB5ZXQAR290IGVycm9yICVkICclLS4xMDBzJyBmcm9tICVzAEdvdCB0ZW1wb3JhcnkgZXJyb3IgJWQgJyUtLjEwMHMnIGZyb20gJXMAVW5rbm93biBvciBpbmNvcnJlY3QgdGltZSB6b25lOiAnJS0uNjRzJwBJbnZhbGlkIFRJTUVTVEFNUCB2YWx1ZSBpbiBjb2x1bW4gJyVzJyBhdCByb3cgJWxkAEludmFsaWQgJXMgY2hhcmFjdGVyIHN0cmluZzogJyUuNjRzJwBSZXN1bHQgb2YgJXMoKSB3YXMgbGFyZ2VyIHRoYW4gbWF4X2FsbG93ZWRfcGFja2V0ICglbGQpIC0gdHJ1bmNhdGVkAENvbmZsaWN0aW5nIGRlY2xhcmF0aW9uczogJyVzJXMnIGFuZCAnJXMlcycAQ2FuJ3QgY3JlYXRlIGEgJXMgZnJvbSB3aXRoaW4gYW5vdGhlciBzdG9yZWQgcm91dGluZQAlcyAlcyBhbHJlYWR5IGV4aXN0cwAlcyAlcyBkb2VzIG5vdCBleGlzdABGYWlsZWQgdG8gRFJPUCAlcyAlcwBGYWlsZWQgdG8gQ1JFQVRFICVzICVzACVzIHdpdGggbm8gbWF0Y2hpbmcgbGFiZWw6ICVzAFJlZGVmaW5pbmcgbGFiZWwgJXMARW5kLWxhYmVsICVzIHdpdGhvdXQgbWF0Y2gAUmVmZXJyaW5nIHRvIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgJXMAUFJPQ0VEVVJFICVzIGNhbid0IHJldHVybiBhIHJlc3VsdCBzZXQgaW4gdGhlIGdpdmVuIGNvbnRleHQAUkVUVVJOIGlzIG9ubHkgYWxsb3dlZCBpbiBhIEZVTkNUSU9OACVzIGlzIG5vdCBhbGxvd2VkIGluIHN0b3JlZCBwcm9jZWR1cmVzAFRoZSB1cGRhdGUgbG9nIGlzIGRlcHJlY2F0ZWQgYW5kIHJlcGxhY2VkIGJ5IHRoZSBiaW5hcnkgbG9nOyBTRVQgU1FMX0xPR19VUERBVEUgaGFzIGJlZW4gaWdub3JlZC4AVGhlIHVwZGF0ZSBsb2cgaXMgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQgYnkgdGhlIGJpbmFyeSBsb2c7IFNFVCBTUUxfTE9HX1VQREFURSBoYXMgYmVlbiB0cmFuc2xhdGVkIHRvIFNFVCBTUUxfTE9HX0JJTi4AUXVlcnkgZXhlY3V0aW9uIHdhcyBpbnRlcnJ1cHRlZABJbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgJXMgJXM7IGV4cGVjdGVkICV1LCBnb3QgJXUAVW5kZWZpbmVkIENPTkRJVElPTjogJXMATm8gUkVUVVJOIGZvdW5kIGluIEZVTkNUSU9OICVzAEZVTkNUSU9OICVzIGVuZGVkIHdpdGhvdXQgUkVUVVJOAEN1cnNvciBzdGF0ZW1lbnQgbXVzdCBiZSBhIFNFTEVDVABDdXJzb3IgU0VMRUNUIG11c3Qgbm90IGhhdmUgSU5UTwBVbmRlZmluZWQgQ1VSU09SOiAlcwBDdXJzb3IgaXMgYWxyZWFkeSBvcGVuAEN1cnNvciBpcyBub3Qgb3BlbgBVbmRlY2xhcmVkIHZhcmlhYmxlOiAlcwBJbmNvcnJlY3QgbnVtYmVyIG9mIEZFVENIIHZhcmlhYmxlcwBObyBkYXRhIC0gemVybyByb3dzIGZldGNoZWQsIHNlbGVjdGVkLCBvciBwcm9jZXNzZWQARHVwbGljYXRlIHBhcmFtZXRlcjogJXMARHVwbGljYXRlIHZhcmlhYmxlOiAlcwBEdXBsaWNhdGUgY29uZGl0aW9uOiAlcwBEdXBsaWNhdGUgY3Vyc29yOiAlcwBGYWlsZWQgdG8gQUxURVIgJXMgJXMAU3VicXVlcnkgdmFsdWUgbm90IHN1cHBvcnRlZAAlcyBpcyBub3QgYWxsb3dlZCBpbiBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBWYXJpYWJsZSBvciBjb25kaXRpb24gZGVjbGFyYXRpb24gYWZ0ZXIgY3Vyc29yIG9yIGhhbmRsZXIgZGVjbGFyYXRpb24AQ3Vyc29yIGRlY2xhcmF0aW9uIGFmdGVyIGhhbmRsZXIgZGVjbGFyYXRpb24AQ2FzZSBub3QgZm91bmQgZm9yIENBU0Ugc3RhdGVtZW50AENvbmZpZ3VyYXRpb24gZmlsZSAnJS0uMTkycycgaXMgdG9vIGJpZwBNYWxmb3JtZWQgZmlsZSB0eXBlIGhlYWRlciBpbiBmaWxlICclLS4xOTJzJwBVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIHdoaWxlIHBhcnNpbmcgY29tbWVudCAnJS0uMjAwcycARXJyb3Igd2hpbGUgcGFyc2luZyBwYXJhbWV0ZXIgJyUtLjE5MnMnIChsaW5lOiAnJS0uMTkycycpAFVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUgd2hpbGUgc2tpcHBpbmcgdW5rbm93biBwYXJhbWV0ZXIgJyUtLjE5MnMnAEVYUExBSU4vU0hPVyBjYW4gbm90IGJlIGlzc3VlZDsgbGFja2luZyBwcml2aWxlZ2VzIGZvciB1bmRlcmx5aW5nIHRhYmxlAEZpbGUgJyUtLjE5MnMnIGhhcyB1bmtub3duIHR5cGUgJyUtLjY0cycgaW4gaXRzIGhlYWRlcgAnJS0uMTkycy4lLS4xOTJzJyBpcyBub3QgJXMAQ29sdW1uICclLS4xOTJzJyBpcyBub3QgdXBkYXRhYmxlAFZpZXcncyBTRUxFQ1QgY29udGFpbnMgYSBzdWJxdWVyeSBpbiB0aGUgRlJPTSBjbGF1c2UAVmlldydzIFNFTEVDVCBjb250YWlucyBhICclcycgY2xhdXNlAFZpZXcncyBTRUxFQ1QgY29udGFpbnMgYSB2YXJpYWJsZSBvciBwYXJhbWV0ZXIAVmlldydzIFNFTEVDVCByZWZlcnMgdG8gYSB0ZW1wb3JhcnkgdGFibGUgJyUtLjE5MnMnAEluIGRlZmluaXRpb24gb2YgdmlldywgZGVyaXZlZCB0YWJsZSBvciBjb21tb24gdGFibGUgZXhwcmVzc2lvbiwgU0VMRUNUIGxpc3QgYW5kIGNvbHVtbiBuYW1lcyBsaXN0IGhhdmUgZGlmZmVyZW50IGNvbHVtbiBjb3VudHMAVmlldyBtZXJnZSBhbGdvcml0aG0gY2FuJ3QgYmUgdXNlZCBoZXJlIGZvciBub3cgKGFzc3VtZWQgdW5kZWZpbmVkIGFsZ29yaXRobSkAVmlldyBiZWluZyB1cGRhdGVkIGRvZXMgbm90IGhhdmUgY29tcGxldGUga2V5IG9mIHVuZGVybHlpbmcgdGFibGUgaW4gaXQAVmlldyAnJS0uMTkycy4lLS4xOTJzJyByZWZlcmVuY2VzIGludmFsaWQgdGFibGUocykgb3IgY29sdW1uKHMpIG9yIGZ1bmN0aW9uKHMpIG9yIGRlZmluZXIvaW52b2tlciBvZiB2aWV3IGxhY2sgcmlnaHRzIHRvIHVzZSB0aGVtAENhbid0IGRyb3Agb3IgYWx0ZXIgYSAlcyBmcm9tIHdpdGhpbiBhbm90aGVyIHN0b3JlZCByb3V0aW5lAEdPVE8gaXMgbm90IGFsbG93ZWQgaW4gYSBzdG9yZWQgcHJvY2VkdXJlIGhhbmRsZXIAVHJpZ2dlciBhbHJlYWR5IGV4aXN0cwBUcmlnZ2VyIGRvZXMgbm90IGV4aXN0AFRyaWdnZXIncyAnJS0uMTkycycgaXMgdmlldyBvciB0ZW1wb3JhcnkgdGFibGUAVXBkYXRpbmcgb2YgJXMgcm93IGlzIG5vdCBhbGxvd2VkIGluICVzdHJpZ2dlcgBUaGVyZSBpcyBubyAlcyByb3cgaW4gJXMgdHJpZ2dlcgBGaWVsZCAnJS0uMTkycycgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZQBEaXZpc2lvbiBieSAwAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgY29sdW1uICclLjE5MnMnIGF0IHJvdyAlbGQASWxsZWdhbCAlcyAnJS0uMTkycycgdmFsdWUgZm91bmQgZHVyaW5nIHBhcnNpbmcAQ0hFQ0sgT1BUSU9OIG9uIG5vbi11cGRhdGFibGUgdmlldyAnJS0uMTkycy4lLS4xOTJzJwBDSEVDSyBPUFRJT04gZmFpbGVkICclLS4xOTJzLiUtLjE5MnMnACUtLjE2cyBjb21tYW5kIGRlbmllZCB0byB1c2VyICclLS40OHMnQCclLS42NHMnIGZvciByb3V0aW5lICclLS4xOTJzJwBGYWlsZWQgcHVyZ2luZyBvbGQgcmVsYXkgbG9nczogJXMAUGFzc3dvcmQgaGFzaCBzaG91bGQgYmUgYSAlZC1kaWdpdCBoZXhhZGVjaW1hbCBudW1iZXIAVGFyZ2V0IGxvZyBub3QgZm91bmQgaW4gYmlubG9nIGluZGV4AEkvTyBlcnJvciByZWFkaW5nIGxvZyBpbmRleCBmaWxlAFNlcnZlciBjb25maWd1cmF0aW9uIGRvZXMgbm90IHBlcm1pdCBiaW5sb2cgcHVyZ2UARmFpbGVkIG9uIGZzZWVrKCkARmF0YWwgZXJyb3IgZHVyaW5nIGxvZyBwdXJnZQBBIHB1cmdlYWJsZSBsb2cgaXMgaW4gdXNlLCB3aWxsIG5vdCBwdXJnZQBVbmtub3duIGVycm9yIGR1cmluZyBsb2cgcHVyZ2UARmFpbGVkIGluaXRpYWxpemluZyByZWxheSBsb2cgcG9zaXRpb246ICVzAFlvdSBhcmUgbm90IHVzaW5nIGJpbmFyeSBsb2dnaW5nAFRoZSAnJS0uNjRzJyBzeW50YXggaXMgcmVzZXJ2ZWQgZm9yIHB1cnBvc2VzIGludGVybmFsIHRvIHRoZSBNeVNRTCBzZXJ2ZXIAV1NBU3RhcnR1cCBGYWlsZWQAQ2FuJ3QgaGFuZGxlIHByb2NlZHVyZXMgd2l0aCBkaWZmZXJlbnQgZ3JvdXBzIHlldABTZWxlY3QgbXVzdCBoYXZlIGEgZ3JvdXAgd2l0aCB0aGlzIHByb2NlZHVyZQBDYW4ndCB1c2UgT1JERVIgY2xhdXNlIHdpdGggdGhpcyBwcm9jZWR1cmUAQmluYXJ5IGxvZ2dpbmcgYW5kIHJlcGxpY2F0aW9uIGZvcmJpZCBjaGFuZ2luZyB0aGUgZ2xvYmFsIHNlcnZlciAlcwBDYW4ndCBtYXAgZmlsZTogJS0uMjAwcywgZXJybm86ICVkAFdyb25nIG1hZ2ljIGluICUtLjY0cwBQcmVwYXJlZCBzdGF0ZW1lbnQgY29udGFpbnMgdG9vIG1hbnkgcGxhY2Vob2xkZXJzAEtleSBwYXJ0ICclLS4xOTJzJyBsZW5ndGggY2Fubm90IGJlIDAAVmlldyB0ZXh0IGNoZWNrc3VtIGZhaWxlZABDYW4gbm90IG1vZGlmeSBtb3JlIHRoYW4gb25lIGJhc2UgdGFibGUgdGhyb3VnaCBhIGpvaW4gdmlldyAnJS0uMTkycy4lLS4xOTJzJwBDYW4gbm90IGluc2VydCBpbnRvIGpvaW4gdmlldyAnJS0uMTkycy4lLS4xOTJzJyB3aXRob3V0IGZpZWxkcyBsaXN0AENhbiBub3QgZGVsZXRlIGZyb20gam9pbiB2aWV3ICclLS4xOTJzLiUtLjE5MnMnAE9wZXJhdGlvbiAlcyBmYWlsZWQgZm9yICUuMjU2cwBYQUVSX05PVEE6IFVua25vd24gWElEAFhBRVJfSU5WQUw6IEludmFsaWQgYXJndW1lbnRzIChvciB1bnN1cHBvcnRlZCBjb21tYW5kKQBYQUVSX1JNRkFJTDogVGhlIGNvbW1hbmQgY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gZ2xvYmFsIHRyYW5zYWN0aW9uIGlzIGluIHRoZSAgJS42NHMgc3RhdGUAWEFFUl9PVVRTSURFOiBTb21lIHdvcmsgaXMgZG9uZSBvdXRzaWRlIGdsb2JhbCB0cmFuc2FjdGlvbgBYQUVSX1JNRVJSOiBGYXRhbCBlcnJvciBvY2N1cnJlZCBpbiB0aGUgdHJhbnNhY3Rpb24gYnJhbmNoIC0gY2hlY2sgeW91ciBkYXRhIGZvciBjb25zaXN0ZW5jeQBYQV9SQlJPTExCQUNLOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrAFRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5lZCBmb3IgdXNlciAnJS0uNDhzJyBvbiBob3N0ICclLS4yNTVzJyBvbiByb3V0aW5lICclLS4xOTJzJwBGYWlsZWQgdG8gZ3JhbnQgRVhFQ1VURSBhbmQgQUxURVIgUk9VVElORSBwcml2aWxlZ2VzAEZhaWxlZCB0byByZXZva2UgYWxsIHByaXZpbGVnZXMgdG8gZHJvcHBlZCByb3V0aW5lAERhdGEgdG9vIGxvbmcgZm9yIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQAQmFkIFNRTFNUQVRFOiAnJXMnACVzOiByZWFkeSBmb3IgY29ubmVjdGlvbnMuIFZlcnNpb246ICclcycgIHNvY2tldDogJyVzJyAgcG9ydDogJWQgICVzAENhbid0IGxvYWQgdmFsdWUgZnJvbSBmaWxlIHdpdGggZml4ZWQgc2l6ZSByb3dzIHRvIHZhcmlhYmxlAFlvdSBhcmUgbm90IGFsbG93ZWQgdG8gY3JlYXRlIGEgdXNlciB3aXRoIEdSQU5UAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgZnVuY3Rpb24gJS0uMzJzAFRhYmxlIGRlZmluaXRpb24gaGFzIGNoYW5nZWQsIHBsZWFzZSByZXRyeSB0cmFuc2FjdGlvbgBEdXBsaWNhdGUgaGFuZGxlciBkZWNsYXJlZCBpbiB0aGUgc2FtZSBibG9jawBPVVQgb3IgSU5PVVQgYXJndW1lbnQgJWQgZm9yIHJvdXRpbmUgJXMgaXMgbm90IGEgdmFyaWFibGUgb3IgTkVXIHBzZXVkby12YXJpYWJsZSBpbiBCRUZPUkUgdHJpZ2dlcgBOb3QgYWxsb3dlZCB0byByZXR1cm4gYSByZXN1bHQgc2V0IGZyb20gYSAlcwBDYW5ub3QgZ2V0IGdlb21ldHJ5IG9iamVjdCBmcm9tIGRhdGEgeW91IHNlbmQgdG8gdGhlIEdFT01FVFJZIGZpZWxkAEEgcm91dGluZSBmYWlsZWQgYW5kIGhhcyBuZWl0aGVyIE5PIFNRTCBub3IgUkVBRFMgU1FMIERBVEEgaW4gaXRzIGRlY2xhcmF0aW9uIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkOyBpZiBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgd2VyZSB1cGRhdGVkLCB0aGUgYmluYXJ5IGxvZyB3aWxsIG1pc3MgdGhlaXIgY2hhbmdlcwBUaGlzIGZ1bmN0aW9uIGhhcyBub25lIG9mIERFVEVSTUlOSVNUSUMsIE5PIFNRTCwgb3IgUkVBRFMgU1FMIERBVEEgaW4gaXRzIGRlY2xhcmF0aW9uIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkICh5b3UgKm1pZ2h0KiB3YW50IHRvIHVzZSB0aGUgbGVzcyBzYWZlIGxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgdmFyaWFibGUpAFlvdSBkbyBub3QgaGF2ZSB0aGUgU1VQRVIgcHJpdmlsZWdlIGFuZCBiaW5hcnkgbG9nZ2luZyBpcyBlbmFibGVkICh5b3UgKm1pZ2h0KiB3YW50IHRvIHVzZSB0aGUgbGVzcyBzYWZlIGxvZ19iaW5fdHJ1c3RfZnVuY3Rpb25fY3JlYXRvcnMgdmFyaWFibGUpAFlvdSBjYW4ndCBleGVjdXRlIGEgcHJlcGFyZWQgc3RhdGVtZW50IHdoaWNoIGhhcyBhbiBvcGVuIGN1cnNvciBhc3NvY2lhdGVkIHdpdGggaXQuIFJlc2V0IHRoZSBzdGF0ZW1lbnQgdG8gcmUtZXhlY3V0ZSBpdC4AVGhlIHN0YXRlbWVudCAoJWx1KSBoYXMgbm8gb3BlbiBjdXJzb3IuAEV4cGxpY2l0IG9yIGltcGxpY2l0IGNvbW1pdCBpcyBub3QgYWxsb3dlZCBpbiBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlci4ARmllbGQgb2YgdmlldyAnJS0uMTkycy4lLS4xOTJzJyB1bmRlcmx5aW5nIHRhYmxlIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAUmVjdXJzaXZlIHN0b3JlZCBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBub3QgYWxsb3dlZC4AVG9vIGJpZyBzY2FsZSAlZCBzcGVjaWZpZWQgZm9yIGNvbHVtbiAnJS0uMTkycycuIE1heGltdW0gaXMgJWx1LgBUb28tYmlnIHByZWNpc2lvbiAlZCBzcGVjaWZpZWQgZm9yICclLS4xOTJzJy4gTWF4aW11bSBpcyAlbHUuAEZvciBmbG9hdChNLEQpLCBkb3VibGUoTSxEKSBvciBkZWNpbWFsKE0sRCksIE0gbXVzdCBiZSA+PSBEIChjb2x1bW4gJyUtLjE5MnMnKS4AWW91IGNhbid0IGNvbWJpbmUgd3JpdGUtbG9ja2luZyBvZiBzeXN0ZW0gdGFibGVzIHdpdGggb3RoZXIgdGFibGVzIG9yIGxvY2sgdHlwZXMAVW5hYmxlIHRvIGNvbm5lY3QgdG8gZm9yZWlnbiBkYXRhIHNvdXJjZTogJS42NHMAVGhlcmUgd2FzIGEgcHJvYmxlbSBwcm9jZXNzaW5nIHRoZSBxdWVyeSBvbiB0aGUgZm9yZWlnbiBkYXRhIHNvdXJjZS4gRGF0YSBzb3VyY2UgZXJyb3I6ICUtLjY0cwBUaGUgZm9yZWlnbiBkYXRhIHNvdXJjZSB5b3UgYXJlIHRyeWluZyB0byByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuIERhdGEgc291cmNlIGVycm9yOiAgJS0uNjRzAENhbid0IGNyZWF0ZSBmZWRlcmF0ZWQgdGFibGUuIFRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uIHN0cmluZyAnJS0uNjRzJyBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0AFRoZSBkYXRhIHNvdXJjZSBjb25uZWN0aW9uIHN0cmluZyAnJS0uNjRzJyBpcyBub3QgaW4gdGhlIGNvcnJlY3QgZm9ybWF0AENhbid0IGNyZWF0ZSBmZWRlcmF0ZWQgdGFibGUuIEZvcmVpZ24gZGF0YSBzcmMgZXJyb3I6ICAlLS42NHMAVHJpZ2dlciBpbiB3cm9uZyBzY2hlbWEAVGhyZWFkIHN0YWNrIG92ZXJydW46ICAlbGQgYnl0ZXMgdXNlZCBvZiBhICVsZCBieXRlIHN0YWNrLCBhbmQgJWxkIGJ5dGVzIG5lZWRlZC4gIFVzZSAnbXlzcWxkIC0tdGhyZWFkX3N0YWNrPSMnIHRvIHNwZWNpZnkgYSBiaWdnZXIgc3RhY2suAFJvdXRpbmUgYm9keSBmb3IgJyUtLjEwMHMnIGlzIHRvbyBsb25nAENhbm5vdCBkcm9wIGRlZmF1bHQga2V5Y2FjaGUARGlzcGxheSB3aWR0aCBvdXQgb2YgcmFuZ2UgZm9yIGNvbHVtbiAnJS0uMTkycycgKG1heCA9ICVsdSkAWEFFUl9EVVBJRDogVGhlIFhJRCBhbHJlYWR5IGV4aXN0cwBEYXRldGltZSBmdW5jdGlvbjogJS0uMzJzIGZpZWxkIG92ZXJmbG93AENhbid0IHVwZGF0ZSB0YWJsZSAnJS0uMTkycycgaW4gc3RvcmVkIGZ1bmN0aW9uL3RyaWdnZXIgYmVjYXVzZSBpdCBpcyBhbHJlYWR5IHVzZWQgYnkgc3RhdGVtZW50IHdoaWNoIGludm9rZWQgdGhpcyBzdG9yZWQgZnVuY3Rpb24vdHJpZ2dlci4AVGhlIGRlZmluaXRpb24gb2YgdGFibGUgJyUtLjE5MnMnIHByZXZlbnRzIG9wZXJhdGlvbiAlLjE5MnMgb24gdGFibGUgJyUtLjE5MnMnLgBUaGUgcHJlcGFyZWQgc3RhdGVtZW50IGNvbnRhaW5zIGEgc3RvcmVkIHJvdXRpbmUgY2FsbCB0aGF0IHJlZmVycyB0byB0aGF0IHNhbWUgc3RhdGVtZW50LiBJdCdzIG5vdCBhbGxvd2VkIHRvIGV4ZWN1dGUgYSBwcmVwYXJlZCBzdGF0ZW1lbnQgaW4gc3VjaCBhIHJlY3Vyc2l2ZSBtYW5uZXIATm90IGFsbG93ZWQgdG8gc2V0IGF1dG9jb21taXQgZnJvbSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAERlZmluZXIgaXMgbm90IGZ1bGx5IHF1YWxpZmllZABWaWV3ICclLS4xOTJzJy4nJS0uMTkycycgaGFzIG5vIGRlZmluZXIgaW5mb3JtYXRpb24gKG9sZCB0YWJsZSBmb3JtYXQpLiBDdXJyZW50IHVzZXIgaXMgdXNlZCBhcyBkZWZpbmVyLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHZpZXchAFlvdSBuZWVkIHRoZSBTVVBFUiBwcml2aWxlZ2UgZm9yIGNyZWF0aW9uIHZpZXcgd2l0aCAnJS0uMTkycydAJyUtLjE5MnMnIGRlZmluZXIAVGhlIHVzZXIgc3BlY2lmaWVkIGFzIGEgZGVmaW5lciAoJyUtLjY0cydAJyUtLjY0cycpIGRvZXMgbm90IGV4aXN0AENoYW5naW5nIHNjaGVtYSBmcm9tICclLS4xOTJzJyB0byAnJS0uMTkycycgaXMgbm90IGFsbG93ZWQuAENhbm5vdCBkZWxldGUgb3IgdXBkYXRlIGEgcGFyZW50IHJvdzogYSBmb3JlaWduIGtleSBjb25zdHJhaW50IGZhaWxzJS4xOTJzAENhbm5vdCBhZGQgb3IgdXBkYXRlIGEgY2hpbGQgcm93OiBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgZmFpbHMlLjE5MnMAVmFyaWFibGUgJyUtLjY0cycgbXVzdCBiZSBxdW90ZWQgd2l0aCBgLi4uYCwgb3IgcmVuYW1lZABObyBkZWZpbmVyIGF0dHJpYnV0ZSBmb3IgdHJpZ2dlciAnJS0uMTkycycuJyUtLjE5MnMnLiBJdCdzIGRpc2FsbG93ZWQgdG8gY3JlYXRlIHRyaWdnZXIgd2l0aG91dCBkZWZpbmVyLgAnJS0uMTkycycgaGFzIGFuIG9sZCBmb3JtYXQsIHlvdSBzaG91bGQgcmUtY3JlYXRlIHRoZSAnJXMnIG9iamVjdChzKQBSZWN1cnNpdmUgbGltaXQgJWQgKGFzIHNldCBieSB0aGUgbWF4X3NwX3JlY3Vyc2lvbl9kZXB0aCB2YXJpYWJsZSkgd2FzIGV4Y2VlZGVkIGZvciByb3V0aW5lICUuMTkycwBGYWlsZWQgdG8gbG9hZCByb3V0aW5lICUtLjE5MnMuIFRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGUgbWlzc2luZywgY29ycnVwdCwgb3IgY29udGFpbnMgYmFkIGRhdGEgKGludGVybmFsIGNvZGUgJWQpAEluY29ycmVjdCByb3V0aW5lIG5hbWUgJyUtLjE5MnMnAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQuIFBsZWFzZSBkbyAiUkVQQUlSIFRBQkxFIGAlLS42NHNgIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAEFHR1JFR0FURSBpcyBub3Qgc3VwcG9ydGVkIGZvciBzdG9yZWQgZnVuY3Rpb25zAENhbid0IGNyZWF0ZSBtb3JlIHRoYW4gbWF4X3ByZXBhcmVkX3N0bXRfY291bnQgc3RhdGVtZW50cyAoY3VycmVudCB2YWx1ZTogJWx1KQBgJS0uMTkyc2AuYCUtLjE5MnNgIGNvbnRhaW5zIHZpZXcgcmVjdXJzaW9uAE5vbi1ncm91cGluZyBmaWVsZCAnJS0uMTkycycgaXMgdXNlZCBpbiAlLS42NHMgY2xhdXNlAFRoZSB1c2VkIHRhYmxlIHR5cGUgZG9lc24ndCBzdXBwb3J0IFNQQVRJQUwgaW5kZXhlcwBUcmlnZ2VycyBjYW4gbm90IGJlIGNyZWF0ZWQgb24gc3lzdGVtIHRhYmxlcwBMZWFkaW5nIHNwYWNlcyBhcmUgcmVtb3ZlZCBmcm9tIG5hbWUgJyVzJwBGYWlsZWQgdG8gcmVhZCBhdXRvLWluY3JlbWVudCB2YWx1ZSBmcm9tIHN0b3JhZ2UgZW5naW5lAHVzZXIgbmFtZQBob3N0IG5hbWUAU3RyaW5nICclLS43MHMnIGlzIHRvbyBsb25nIGZvciAlcyAoc2hvdWxkIGJlIG5vIGxvbmdlciB0aGFuICVkKQBUaGUgdGFyZ2V0IHRhYmxlICUtLjEwMHMgb2YgdGhlICVzIGlzIG5vdCBpbnNlcnRhYmxlLWludG8AVGFibGUgJyUtLjY0cycgaXMgZGlmZmVyZW50bHkgZGVmaW5lZCBvciBvZiBub24tTXlJU0FNIHR5cGUgb3IgZG9lc24ndCBleGlzdABUb28gaGlnaCBsZXZlbCBvZiBuZXN0aW5nIGZvciBzZWxlY3QATmFtZSAnJS0uNjRzJyBoYXMgYmVjb21lICcnAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgRklFTERTIFRFUk1JTkFURUQgc3RyaW5nIGlzIGFtYmlndW91czsgcGxlYXNlIHVzZSBub24tb3B0aW9uYWwgYW5kIG5vbi1lbXB0eSBGSUVMRFMgRU5DTE9TRUQgQlkAVGhlIGZvcmVpZ24gc2VydmVyLCAlcywgeW91IGFyZSB0cnlpbmcgdG8gY3JlYXRlIGFscmVhZHkgZXhpc3RzLgBUaGUgZm9yZWlnbiBzZXJ2ZXIgbmFtZSB5b3UgYXJlIHRyeWluZyB0byByZWZlcmVuY2UgZG9lcyBub3QgZXhpc3QuIERhdGEgc291cmNlIGVycm9yOiAgJS0uNjRzAFRhYmxlIHN0b3JhZ2UgZW5naW5lICclLS42NHMnIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNyZWF0ZSBvcHRpb24gJyUuNjRzJwBTeW50YXggZXJyb3I6ICUtLjY0cyBQQVJUSVRJT05JTkcgcmVxdWlyZXMgZGVmaW5pdGlvbiBvZiBWQUxVRVMgJS0uNjRzIGZvciBlYWNoIHBhcnRpdGlvbgBPbmx5ICUtLjY0cyBQQVJUSVRJT05JTkcgY2FuIHVzZSBWQUxVRVMgJS0uNjRzIGluIHBhcnRpdGlvbiBkZWZpbml0aW9uAE1BWFZBTFVFIGNhbiBvbmx5IGJlIHVzZWQgaW4gbGFzdCBwYXJ0aXRpb24gZGVmaW5pdGlvbgBTdWJwYXJ0aXRpb25zIGNhbiBvbmx5IGJlIGhhc2ggcGFydGl0aW9ucyBhbmQgYnkga2V5AE11c3QgZGVmaW5lIHN1YnBhcnRpdGlvbnMgb24gYWxsIHBhcnRpdGlvbnMgaWYgb24gb25lIHBhcnRpdGlvbgBXcm9uZyBudW1iZXIgb2YgcGFydGl0aW9ucyBkZWZpbmVkLCBtaXNtYXRjaCB3aXRoIHByZXZpb3VzIHNldHRpbmcAV3JvbmcgbnVtYmVyIG9mIHN1YnBhcnRpdGlvbnMgZGVmaW5lZCwgbWlzbWF0Y2ggd2l0aCBwcmV2aW91cyBzZXR0aW5nAENvbnN0YW50LCByYW5kb20gb3IgdGltZXpvbmUtZGVwZW5kZW50IGV4cHJlc3Npb25zIGluIChzdWIpcGFydGl0aW9uaW5nIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZABFeHByZXNzaW9uIGluIFJBTkdFL0xJU1QgVkFMVUVTIG11c3QgYmUgY29uc3RhbnQARmllbGQgaW4gbGlzdCBvZiBmaWVsZHMgZm9yIHBhcnRpdGlvbiBmdW5jdGlvbiBub3QgZm91bmQgaW4gdGFibGUATGlzdCBvZiBmaWVsZHMgaXMgb25seSBhbGxvd2VkIGluIEtFWSBwYXJ0aXRpb25zAFRoZSBwYXJ0aXRpb24gaW5mbyBpbiB0aGUgZnJtIGZpbGUgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB3aGF0IGNhbiBiZSB3cml0dGVuIGludG8gdGhlIGZybSBmaWxlAFRoZSAlLS4xOTJzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHdyb25nIHR5cGUARm9yICUtLjY0cyBwYXJ0aXRpb25zIGVhY2ggcGFydGl0aW9uIG11c3QgYmUgZGVmaW5lZABWQUxVRVMgTEVTUyBUSEFOIHZhbHVlIG11c3QgYmUgc3RyaWN0bHkgaW5jcmVhc2luZyBmb3IgZWFjaCBwYXJ0aXRpb24AVkFMVUVTIHZhbHVlIG11c3QgYmUgb2Ygc2FtZSB0eXBlIGFzIHBhcnRpdGlvbiBmdW5jdGlvbgBNdWx0aXBsZSBkZWZpbml0aW9uIG9mIHNhbWUgY29uc3RhbnQgaW4gbGlzdCBwYXJ0aXRpb25pbmcAUGFydGl0aW9uaW5nIGNhbiBub3QgYmUgdXNlZCBzdGFuZC1hbG9uZSBpbiBxdWVyeQBUaGUgbWl4IG9mIGhhbmRsZXJzIGluIHRoZSBwYXJ0aXRpb25zIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgdmVyc2lvbiBvZiBNeVNRTABGb3IgdGhlIHBhcnRpdGlvbmVkIGVuZ2luZSBpdCBpcyBuZWNlc3NhcnkgdG8gZGVmaW5lIGFsbCAlLS42NHMAVG9vIG1hbnkgcGFydGl0aW9ucyAoaW5jbHVkaW5nIHN1YnBhcnRpdGlvbnMpIHdlcmUgZGVmaW5lZABJdCBpcyBvbmx5IHBvc3NpYmxlIHRvIG1peCBSQU5HRS9MSVNUIHBhcnRpdGlvbmluZyB3aXRoIEhBU0gvS0VZIHBhcnRpdGlvbmluZyBmb3Igc3VicGFydGl0aW9uaW5nAEZhaWxlZCB0byBjcmVhdGUgc3BlY2lmaWMgaGFuZGxlciBmaWxlAEEgQkxPQiBmaWVsZCBpcyBub3QgYWxsb3dlZCBpbiBwYXJ0aXRpb24gZnVuY3Rpb24AQSAlLS4xOTJzIG11c3QgaW5jbHVkZSBhbGwgY29sdW1ucyBpbiB0aGUgdGFibGUncyBwYXJ0aXRpb25pbmcgZnVuY3Rpb24gKHByZWZpeGVkIGNvbHVtbnMgYXJlIG5vdCBjb25zaWRlcmVkKS4ATnVtYmVyIG9mICUtLjY0cyA9IDAgaXMgbm90IGFuIGFsbG93ZWQgdmFsdWUAUGFydGl0aW9uIG1hbmFnZW1lbnQgb24gYSBub3QgcGFydGl0aW9uZWQgdGFibGUgaXMgbm90IHBvc3NpYmxlAEZvcmVpZ24ga2V5cyBhcmUgbm90IHlldCBzdXBwb3J0ZWQgaW4gY29uanVuY3Rpb24gd2l0aCBwYXJ0aXRpb25pbmcARXJyb3IgaW4gbGlzdCBvZiBwYXJ0aXRpb25zIHRvICUtLjY0cwBDYW5ub3QgcmVtb3ZlIGFsbCBwYXJ0aXRpb25zLCB1c2UgRFJPUCBUQUJMRSBpbnN0ZWFkAENPQUxFU0NFIFBBUlRJVElPTiBjYW4gb25seSBiZSB1c2VkIG9uIEhBU0gvS0VZIHBhcnRpdGlvbnMAUkVPUkdBTklaRSBQQVJUSVRJT04gY2FuIG9ubHkgYmUgdXNlZCB0byByZW9yZ2FuaXplIHBhcnRpdGlvbnMgbm90IHRvIGNoYW5nZSB0aGVpciBudW1iZXJzAFJFT1JHQU5JWkUgUEFSVElUSU9OIHdpdGhvdXQgcGFyYW1ldGVycyBjYW4gb25seSBiZSB1c2VkIG9uIGF1dG8tcGFydGl0aW9uZWQgdGFibGVzIHVzaW5nIEhBU0ggUEFSVElUSU9OcwAlLS42NHMgUEFSVElUSU9OIGNhbiBvbmx5IGJlIHVzZWQgb24gUkFOR0UvTElTVCBwYXJ0aXRpb25zAFRyeWluZyB0byBBZGQgcGFydGl0aW9uKHMpIHdpdGggd3JvbmcgbnVtYmVyIG9mIHN1YnBhcnRpdGlvbnMAQXQgbGVhc3Qgb25lIHBhcnRpdGlvbiBtdXN0IGJlIGFkZGVkAEF0IGxlYXN0IG9uZSBwYXJ0aXRpb24gbXVzdCBiZSBjb2FsZXNjZWQATW9yZSBwYXJ0aXRpb25zIHRvIHJlb3JnYW5pemUgdGhhbiB0aGVyZSBhcmUgcGFydGl0aW9ucwBEdXBsaWNhdGUgcGFydGl0aW9uIG5hbWUgJS0uMTkycwBJdCBpcyBub3QgYWxsb3dlZCB0byBzaHV0IG9mZiBiaW5sb2cgb24gdGhpcyBjb21tYW5kAFdoZW4gcmVvcmdhbml6aW5nIGEgc2V0IG9mIHBhcnRpdGlvbnMgdGhleSBtdXN0IGJlIGluIGNvbnNlY3V0aXZlIG9yZGVyAFJlb3JnYW5pemUgb2YgcmFuZ2UgcGFydGl0aW9ucyBjYW5ub3QgY2hhbmdlIHRvdGFsIHJhbmdlcyBleGNlcHQgZm9yIGxhc3QgcGFydGl0aW9uIHdoZXJlIGl0IGNhbiBleHRlbmQgdGhlIHJhbmdlAFBhcnRpdGlvbiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbiBmb3IgdGhpcyBoYW5kbGVyAFBhcnRpdGlvbiBzdGF0ZSBjYW5ub3QgYmUgZGVmaW5lZCBmcm9tIENSRUFURS9BTFRFUiBUQUJMRQBUaGUgJS0uNjRzIGhhbmRsZXIgb25seSBzdXBwb3J0cyAzMiBiaXQgaW50ZWdlcnMgaW4gVkFMVUVTAFBsdWdpbiAnJS0uMTkycycgaXMgbm90IGxvYWRlZABJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycAVGFibGUgaGFzIG5vIHBhcnRpdGlvbiBmb3IgdmFsdWUgJS0uNjRzAEl0IGlzIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgJXMgbW9yZSB0aGFuIG9uY2UARmFpbGVkIHRvIGNyZWF0ZSAlcwBGYWlsZWQgdG8gZHJvcCAlcwBUaGUgaGFuZGxlciBkb2Vzbid0IHN1cHBvcnQgYXV0b2V4dGVuZCBvZiB0YWJsZXNwYWNlcwBBIHNpemUgcGFyYW1ldGVyIHdhcyBpbmNvcnJlY3RseSBzcGVjaWZpZWQsIGVpdGhlciBudW1iZXIgb3Igb24gdGhlIGZvcm0gMTBNAFRoZSBzaXplIG51bWJlciB3YXMgY29ycmVjdCBidXQgd2UgZG9uJ3QgYWxsb3cgdGhlIGRpZ2l0IHBhcnQgdG8gYmUgbW9yZSB0aGFuIDIgYmlsbGlvbgBGYWlsZWQgdG8gYWx0ZXI6ICVzAFdyaXRpbmcgb25lIHJvdyB0byB0aGUgcm93LWJhc2VkIGJpbmFyeSBsb2cgZmFpbGVkAFRhYmxlIGRlZmluaXRpb24gb24gc291cmNlIGFuZCByZXBsaWNhIGRvZXMgbm90IG1hdGNoOiAlcwBSZXBsaWNhIHJ1bm5pbmcgd2l0aCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMgbXVzdCB1c2Ugcm93LWJhc2VkIGJpbmFyeSBsb2dnaW5nIHRvIGJlIGFibGUgdG8gcmVwbGljYXRlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGV2ZW50cwBFdmVudCAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMARmFpbGVkIHRvIHN0b3JlIGV2ZW50ICVzLiBFcnJvciBjb2RlICVkIGZyb20gc3RvcmFnZSBlbmdpbmUuAFVua25vd24gZXZlbnQgJyUtLjE5MnMnAEZhaWxlZCB0byBhbHRlciBldmVudCAnJS0uMTkycycARmFpbGVkIHRvIGRyb3AgJXMASU5URVJWQUwgaXMgZWl0aGVyIG5vdCBwb3NpdGl2ZSBvciB0b28gYmlnAEVORFMgaXMgZWl0aGVyIGludmFsaWQgb3IgYmVmb3JlIFNUQVJUUwBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdC4gRXZlbnQgaGFzIGJlZW4gZGlzYWJsZWQARmFpbGVkIHRvIG9wZW4gbXlzcWwuZXZlbnQATm8gZGF0ZXRpbWUgZXhwcmVzc2lvbiBwcm92aWRlZABDb2x1bW4gY291bnQgb2YgbXlzcWwuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gVGhlIHRhYmxlIGlzIHByb2JhYmx5IGNvcnJ1cHRlZABDYW5ub3QgbG9hZCBmcm9tIG15c3FsLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAEZhaWxlZCB0byBkZWxldGUgdGhlIGV2ZW50IGZyb20gbXlzcWwuZXZlbnQARXJyb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIGV2ZW50J3MgYm9keQBTYW1lIG9sZCBhbmQgbmV3IGV2ZW50IG5hbWUARGF0YSBmb3IgY29sdW1uICclcycgdG9vIGxvbmcAQ2Fubm90IGRyb3AgaW5kZXggJyUtLjE5MnMnOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50AFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTXlTUUwgJXMuIFBsZWFzZSB1c2UgJXMgaW5zdGVhZABZb3UgY2FuJ3Qgd3JpdGUtbG9jayBhIGxvZyB0YWJsZS4gT25seSByZWFkIGFjY2VzcyBpcyBwb3NzaWJsZQBZb3UgY2FuJ3QgdXNlIGxvY2tzIHdpdGggbG9nIHRhYmxlcy4AVXBob2xkaW5nIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIGZvciB0YWJsZSAnJS4xOTJzJywgZW50cnkgJyUtLjE5MnMnLCBrZXkgJWQgd291bGQgbGVhZCB0byBhIGR1cGxpY2F0ZSBlbnRyeQBUaGUgY29sdW1uIGNvdW50IG9mIG15c3FsLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIENyZWF0ZWQgd2l0aCBNeVNRTCAlZCwgbm93IHJ1bm5pbmcgJWQuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQ2Fubm90IHN3aXRjaCBvdXQgb2YgdGhlIHJvdy1iYXNlZCBiaW5hcnkgbG9nIGZvcm1hdCB3aGVuIHRoZSBzZXNzaW9uIGhhcyBvcGVuIHRlbXBvcmFyeSB0YWJsZXMAQ2Fubm90IGNoYW5nZSB0aGUgYmluYXJ5IGxvZ2dpbmcgZm9ybWF0IGluc2lkZSBhIHN0b3JlZCBmdW5jdGlvbiBvciB0cmlnZ2VyAFRoZSBOREIgY2x1c3RlciBlbmdpbmUgZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgYmlubG9nIGZvcm1hdCBvbiB0aGUgZmx5IHlldABDYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSB0YWJsZSB3aXRoIHBhcnRpdGlvbnMAUGFydGl0aW9uIGNvbnN0YW50IGlzIG91dCBvZiBwYXJ0aXRpb24gZnVuY3Rpb24gZG9tYWluAFRoaXMgcGFydGl0aW9uIGZ1bmN0aW9uIGlzIG5vdCBhbGxvd2VkAEVycm9yIGluIERETCBsb2cATm90IGFsbG93ZWQgdG8gdXNlIE5VTEwgdmFsdWUgaW4gVkFMVUVTIExFU1MgVEhBTgBJbmNvcnJlY3QgcGFydGl0aW9uIG5hbWUAVHJhbnNhY3Rpb24gY2hhcmFjdGVyaXN0aWNzIGNhbid0IGJlIGNoYW5nZWQgd2hpbGUgYSB0cmFuc2FjdGlvbiBpcyBpbiBwcm9ncmVzcwBBTFRFUiBUQUJMRSBjYXVzZXMgYXV0b19pbmNyZW1lbnQgcmVzZXF1ZW5jaW5nLCByZXN1bHRpbmcgaW4gZHVwbGljYXRlIGVudHJ5ICclLS4xOTJzJyBmb3Iga2V5ICclLS4xOTJzJwBJbnRlcm5hbCBzY2hlZHVsZXIgZXJyb3IgJWQARXJyb3IgZHVyaW5nIHN0YXJ0aW5nL3N0b3BwaW5nIG9mIHRoZSBzY2hlZHVsZXIuIEVycm9yIGNvZGUgJXUARW5naW5lIGNhbm5vdCBiZSB1c2VkIGluIHBhcnRpdGlvbmVkIHRhYmxlcwBDYW5ub3QgYWN0aXZhdGUgJyUtLjY0cycgbG9nAFRoZSBzZXJ2ZXIgd2FzIG5vdCBidWlsdCB3aXRoIHJvdy1iYXNlZCByZXBsaWNhdGlvbgBEZWNvZGluZyBvZiBiYXNlNjQgc3RyaW5nIGZhaWxlZABSZWN1cnNpb24gb2YgRVZFTlQgRERMIHN0YXRlbWVudHMgaXMgZm9yYmlkZGVuIHdoZW4gYm9keSBpcyBwcmVzZW50AENhbm5vdCBwcm9jZWVkIGJlY2F1c2Ugc3lzdGVtIHRhYmxlcyB1c2VkIGJ5IEV2ZW50IFNjaGVkdWxlciB3ZXJlIGZvdW5kIGRhbWFnZWQgYXQgc2VydmVyIHN0YXJ0AE9ubHkgaW50ZWdlcnMgYWxsb3dlZCBhcyBudW1iZXIgaGVyZQBUaGlzIHN0b3JhZ2UgZW5naW5lIGNhbm5vdCBiZSB1c2VkIGZvciBsb2cgdGFibGVzAFlvdSBjYW5ub3QgJyVzJyBhIGxvZyB0YWJsZSBpZiBsb2dnaW5nIGlzIGVuYWJsZWQAQ2Fubm90IHJlbmFtZSAnJXMnLiBXaGVuIGxvZ2dpbmcgZW5hYmxlZCwgcmVuYW1lIHRvL2Zyb20gbG9nIHRhYmxlIG11c3QgcmVuYW1lIHR3byB0YWJsZXM6IHRoZSBsb2cgdGFibGUgdG8gYW4gYXJjaGl2ZSB0YWJsZSBhbmQgYW5vdGhlciB0YWJsZSBiYWNrIHRvICclcycASW5jb3JyZWN0IHBhcmFtZXRlciBjb3VudCBpbiB0aGUgY2FsbCB0byBuYXRpdmUgZnVuY3Rpb24gJyUtLjE5MnMnAEluY29ycmVjdCBwYXJhbWV0ZXJzIGluIHRoZSBjYWxsIHRvIG5hdGl2ZSBmdW5jdGlvbiAnJS0uMTkycycASW5jb3JyZWN0IHBhcmFtZXRlcnMgaW4gdGhlIGNhbGwgdG8gc3RvcmVkIGZ1bmN0aW9uICUtLjE5MnMAVGhpcyBmdW5jdGlvbiAnJS0uMTkycycgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBuYXRpdmUgZnVuY3Rpb24AUG93dMOzcnpvbmUgd3lzdMSFcGllbmllICclLS42NHMnIGRsYSBrbHVjemEgJyUtLjM4NXMnAFRvbyBtYW55IGZpbGVzIG9wZW5lZCwgcGxlYXNlIGV4ZWN1dGUgdGhlIGNvbW1hbmQgYWdhaW4ARXZlbnQgZXhlY3V0aW9uIHRpbWUgaXMgaW4gdGhlIHBhc3QgYW5kIE9OIENPTVBMRVRJT04gTk9UIFBSRVNFUlZFIGlzIHNldC4gVGhlIGV2ZW50IHdhcyBkcm9wcGVkIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW9uLgBFdmVudCBleGVjdXRpb24gdGltZSBpcyBpbiB0aGUgcGFzdCBhbmQgT04gQ09NUExFVElPTiBOT1QgUFJFU0VSVkUgaXMgc2V0LiBUaGUgZXZlbnQgd2FzIG5vdCBjaGFuZ2VkLiBTcGVjaWZ5IGEgdGltZSBpbiB0aGUgZnV0dXJlLgBUaGUgaW5jaWRlbnQgJXMgb2NjdXJyZWQgb24gdGhlIHNvdXJjZS4gTWVzc2FnZTogJXMAVGFibGUgaGFzIG5vIHBhcnRpdGlvbiBmb3Igc29tZSBleGlzdGluZyB2YWx1ZXMAVW5zYWZlIHN0YXRlbWVudCB3cml0dGVuIHRvIHRoZSBiaW5hcnkgbG9nIHVzaW5nIHN0YXRlbWVudCBmb3JtYXQgc2luY2UgQklOTE9HX0ZPUk1BVCA9IFNUQVRFTUVOVC4gJXMARmF0YWwgZXJyb3I6ICVzAFJlbGF5IGxvZyByZWFkIGZhaWx1cmU6ICVzAFJlbGF5IGxvZyB3cml0ZSBmYWlsdXJlOiAlcwBGYWlsZWQgdG8gY3JlYXRlICVzAFNvdXJjZSBjb21tYW5kICVzIGZhaWxlZDogJXMAQmluYXJ5IGxvZ2dpbmcgbm90IHBvc3NpYmxlLiBNZXNzYWdlOiAlcwBWaWV3IGAlLS42NHNgLmAlLS42NHNgIGhhcyBubyBjcmVhdGlvbiBjb250ZXh0AENyZWF0aW9uIGNvbnRleHQgb2YgdmlldyBgJS0uNjRzYC5gJS0uNjRzJyBpcyBpbnZhbGlkAENyZWF0aW9uIGNvbnRleHQgb2Ygc3RvcmVkIHJvdXRpbmUgYCUtLjY0c2AuYCUtLjY0c2AgaXMgaW52YWxpZABDb3JydXB0ZWQgVFJHIGZpbGUgZm9yIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgAFRyaWdnZXJzIGZvciB0YWJsZSBgJS0uNjRzYC5gJS0uNjRzYCBoYXZlIG5vIGNyZWF0aW9uIGNvbnRleHQAVHJpZ2dlciBjcmVhdGlvbiBjb250ZXh0IG9mIHRhYmxlIGAlLS42NHNgLmAlLS42NHNgIGlzIGludmFsaWQAQ3JlYXRpb24gY29udGV4dCBvZiBldmVudCBgJS0uNjRzYC5gJS0uNjRzYCBpcyBpbnZhbGlkAENhbm5vdCBvcGVuIHRhYmxlIGZvciB0cmlnZ2VyIGAlLS42NHNgLmAlLS42NHNgAENhbm5vdCBjcmVhdGUgc3RvcmVkIHJvdXRpbmUgYCUtLjY0c2AuIENoZWNrIHdhcm5pbmdzAEFtYmlndW91cyByZXBsaWNhIG1vZGVzIGNvbWJpbmF0aW9uLiAlcwBUaGUgQklOTE9HIHN0YXRlbWVudCBvZiB0eXBlIGAlc2Agd2FzIG5vdCBwcmVjZWRlZCBieSBhIGZvcm1hdCBkZXNjcmlwdGlvbiBCSU5MT0cgc3RhdGVtZW50LgBDb3JydXB0ZWQgcmVwbGljYXRpb24gZXZlbnQgd2FzIGRldGVjdGVkAEludmFsaWQgY29sdW1uIHJlZmVyZW5jZSAoJS0uNjRzKSBpbiBMT0FEIERBVEEAQmVpbmcgcHVyZ2VkIGxvZyAlcyB3YXMgbm90IGZvdW5kAFhBX1JCVElNRU9VVDogVHJhbnNhY3Rpb24gYnJhbmNoIHdhcyByb2xsZWQgYmFjazogdG9vayB0b28gbG9uZwBYQV9SQkRFQURMT0NLOiBUcmFuc2FjdGlvbiBicmFuY2ggd2FzIHJvbGxlZCBiYWNrOiBkZWFkbG9jayB3YXMgZGV0ZWN0ZWQAUHJlcGFyZWQgc3RhdGVtZW50IG5lZWRzIHRvIGJlIHJlLXByZXBhcmVkAERFTEFZRUQgb3B0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlICclLS4xOTJzJwBUaGUgY29ubmVjdGlvbiBtZXRhZGF0YSBzdHJ1Y3R1cmUgZG9lcyBub3QgZXhpc3QAPCUtLjY0cz4gb3B0aW9uIGlnbm9yZWQAQnVpbHQtaW4gcGx1Z2lucyBjYW5ub3QgYmUgZGVsZXRlZABQbHVnaW4gaXMgYnVzeSBhbmQgd2lsbCBiZSB1bmluc3RhbGxlZCBvbiBzaHV0ZG93bgAlcyB2YXJpYWJsZSAnJXMnIGlzIHJlYWQtb25seS4gVXNlIFNFVCAlcyB0byBhc3NpZ24gdGhlIHZhbHVlAFN0b3JhZ2UgZW5naW5lICVzIGRvZXMgbm90IHN1cHBvcnQgcm9sbGJhY2sgZm9yIHRoaXMgc3RhdGVtZW50LiBUcmFuc2FjdGlvbiByb2xsZWQgYmFjayBhbmQgbXVzdCBiZSByZXN0YXJ0ZWQAVW5leHBlY3RlZCBzb3VyY2UncyBoZWFydGJlYXQgZGF0YTogJXMAVGhlIHJlcXVlc3RlZCB2YWx1ZSBmb3IgdGhlIGhlYXJ0YmVhdCBwZXJpb2QgaXMgZWl0aGVyIG5lZ2F0aXZlIG9yIGV4Y2VlZHMgdGhlIG1heGltdW0gYWxsb3dlZCAoJXMgc2Vjb25kcykuAEJhZCBzY2hlbWEgZm9yIG15c3FsLm5kYl9yZXBsaWNhdGlvbiB0YWJsZS4gTWVzc2FnZTogJS0uNjRzAEVycm9yIGluIHBhcnNpbmcgY29uZmxpY3QgZnVuY3Rpb24uIE1lc3NhZ2U6ICUtLjY0cwBXcml0ZSB0byBleGNlcHRpb25zIHRhYmxlIGZhaWxlZC4gTWVzc2FnZTogJS0uMTI4cwBDb21tZW50IGZvciB0YWJsZSAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBDb21tZW50IGZvciBmaWVsZCAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBGVU5DVElPTiAlcyBkb2VzIG5vdCBleGlzdC4gQ2hlY2sgdGhlICdGdW5jdGlvbiBOYW1lIFBhcnNpbmcgYW5kIFJlc29sdXRpb24nIHNlY3Rpb24gaW4gdGhlIFJlZmVyZW5jZSBNYW51YWwARGF0YWJhc2UAVGFibGUAUGFydGl0aW9uAFN1YnBhcnRpdGlvbgBUZW1wb3JhcnkAUmVuYW1lZABUb28gbWFueSBhY3RpdmUgY29uY3VycmVudCB0cmFuc2FjdGlvbnMATm9uLUFTQ0lJIHNlcGFyYXRvciBhcmd1bWVudHMgYXJlIG5vdCBmdWxseSBzdXBwb3J0ZWQAZGVidWcgc3luYyBwb2ludCB3YWl0IHRpbWVkIG91dABkZWJ1ZyBzeW5jIHBvaW50IGhpdCBsaW1pdCByZWFjaGVkAER1cGxpY2F0ZSBjb25kaXRpb24gaW5mb3JtYXRpb24gaXRlbSAnJXMnAFVuaGFuZGxlZCB1c2VyLWRlZmluZWQgd2FybmluZyBjb25kaXRpb24AVW5oYW5kbGVkIHVzZXItZGVmaW5lZCBub3QgZm91bmQgY29uZGl0aW9uAFVuaGFuZGxlZCB1c2VyLWRlZmluZWQgZXhjZXB0aW9uIGNvbmRpdGlvbgBSRVNJR05BTCB3aGVuIGhhbmRsZXIgbm90IGFjdGl2ZQBTSUdOQUwvUkVTSUdOQUwgY2FuIG9ubHkgdXNlIGEgQ09ORElUSU9OIGRlZmluZWQgd2l0aCBTUUxTVEFURQBEYXRhIHRydW5jYXRlZCBmb3IgY29uZGl0aW9uIGl0ZW0gJyVzJwBEYXRhIHRvbyBsb25nIGZvciBjb25kaXRpb24gaXRlbSAnJXMnAFVua25vd24gbG9jYWxlOiAnJS0uNjRzJwBUaGUgcmVxdWVzdGVkIHNlcnZlciBpZCAlZCBjbGFzaGVzIHdpdGggdGhlIHJlcGxpY2Egc3RhcnR1cCBvcHRpb24gLS1yZXBsaWNhdGUtc2FtZS1zZXJ2ZXItaWQAUXVlcnkgY2FjaGUgaXMgZGlzYWJsZWQ7IHJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIHF1ZXJ5X2NhY2hlX3R5cGU9MSB0byBlbmFibGUgaXQARHVwbGljYXRlIHBhcnRpdGlvbiBmaWVsZCBuYW1lICclLS4xOTJzJwBJbmNvbnNpc3RlbmN5IGluIHVzYWdlIG9mIGNvbHVtbiBsaXN0cyBmb3IgcGFydGl0aW9uaW5nAFBhcnRpdGlvbiBjb2x1bW4gdmFsdWVzIG9mIGluY29ycmVjdCB0eXBlAFRvbyBtYW55IGZpZWxkcyBpbiAnJS0uMTkycycAQ2Fubm90IHVzZSBNQVhWQUxVRSBhcyB2YWx1ZSBpbiBWQUxVRVMgSU4AQ2Fubm90IGhhdmUgbW9yZSB0aGFuIG9uZSB2YWx1ZSBmb3IgdGhpcyB0eXBlIG9mICUtLjY0cyBwYXJ0aXRpb25pbmcAUm93IGV4cHJlc3Npb25zIGluIFZBTFVFUyBJTiBvbmx5IGFsbG93ZWQgZm9yIG11bHRpLWZpZWxkIGNvbHVtbiBwYXJ0aXRpb25pbmcARmllbGQgJyUtLjE5MnMnIGlzIG9mIGEgbm90IGFsbG93ZWQgdHlwZSBmb3IgdGhpcyB0eXBlIG9mIHBhcnRpdGlvbmluZwBUaGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBwYXJ0aXRpb25pbmcgZmllbGRzIGlzIHRvbyBsYXJnZQBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBib3RoIHJvdy1pbmNhcGFibGUgZW5naW5lcyBhbmQgc3RhdGVtZW50LWluY2FwYWJsZSBlbmdpbmVzIGFyZSBpbnZvbHZlZC4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2UgQklOTE9HX0ZPUk1BVCA9IFJPVyBhbmQgYXQgbGVhc3Qgb25lIHRhYmxlIHVzZXMgYSBzdG9yYWdlIGVuZ2luZSBsaW1pdGVkIHRvIHN0YXRlbWVudC1iYXNlZCBsb2dnaW5nLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBzdGF0ZW1lbnQgaXMgdW5zYWZlLCBzdG9yYWdlIGVuZ2luZSBpcyBsaW1pdGVkIHRvIHN0YXRlbWVudC1iYXNlZCBsb2dnaW5nLCBhbmQgQklOTE9HX0ZPUk1BVCA9IE1JWEVELiAlcwBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBzdGF0ZW1lbnQgaXMgaW4gcm93IGZvcm1hdCBhbmQgYXQgbGVhc3Qgb25lIHRhYmxlIHVzZXMgYSBzdG9yYWdlIGVuZ2luZSBsaW1pdGVkIHRvIHN0YXRlbWVudC1iYXNlZCBsb2dnaW5nLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5UIGFuZCBhdCBsZWFzdCBvbmUgdGFibGUgdXNlcyBhIHN0b3JhZ2UgZW5naW5lIGxpbWl0ZWQgdG8gcm93LWJhc2VkIGxvZ2dpbmcuJXMAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50OiBpbXBvc3NpYmxlIHRvIHdyaXRlIHRvIGJpbmFyeSBsb2cgc2luY2Ugc3RhdGVtZW50IGlzIGluIHJvdyBmb3JtYXQgYW5kIEJJTkxPR19GT1JNQVQgPSBTVEFURU1FTlQuAENhbm5vdCBleGVjdXRlIHN0YXRlbWVudDogaW1wb3NzaWJsZSB0byB3cml0ZSB0byBiaW5hcnkgbG9nIHNpbmNlIG1vcmUgdGhhbiBvbmUgZW5naW5lIGlzIGludm9sdmVkIGFuZCBhdCBsZWFzdCBvbmUgZW5naW5lIGlzIHNlbGYtbG9nZ2luZy4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgTElNSVQgY2xhdXNlLiBUaGlzIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBzZXQgb2Ygcm93cyBpbmNsdWRlZCBjYW5ub3QgYmUgcHJlZGljdGVkLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgSU5TRVJUIERFTEFZRUQuIFRoaXMgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIHRpbWVzIHdoZW4gcm93cyBhcmUgaW5zZXJ0ZWQgY2Fubm90IGJlIHByZWRpY3RlZC4AVGhlIHN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIHRoZSBnZW5lcmFsIGxvZywgc2xvdyBxdWVyeSBsb2csIG9yIHBlcmZvcm1hbmNlX3NjaGVtYSB0YWJsZShzKS4gVGhpcyBpcyB1bnNhZmUgYmVjYXVzZSBzeXN0ZW0gdGFibGVzIG1heSBkaWZmZXIgb24gcmVwbGljYXMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBpbnZva2VzIGEgdHJpZ2dlciBvciBhIHN0b3JlZCBmdW5jdGlvbiB0aGF0IGluc2VydHMgaW50byBhbiBBVVRPX0lOQ1JFTUVOVCBjb2x1bW4uIEluc2VydGVkIHZhbHVlcyBjYW5ub3QgYmUgbG9nZ2VkIGNvcnJlY3RseS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBVREYgd2hpY2ggbWF5IG5vdCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgb24gdGhlIHJlcGxpY2EuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgc3lzdGVtIHZhcmlhYmxlIHRoYXQgbWF5IGhhdmUgYSBkaWZmZXJlbnQgdmFsdWUgb24gdGhlIHJlcGxpY2EuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgc3lzdGVtIGZ1bmN0aW9uIHRoYXQgbWF5IHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AU3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGFjY2Vzc2VzIGEgbm9uLXRyYW5zYWN0aW9uYWwgdGFibGUgYWZ0ZXIgYWNjZXNzaW5nIGEgdHJhbnNhY3Rpb25hbCB0YWJsZSB3aXRoaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24uACVzIFN0YXRlbWVudDogJXMAQ29sdW1uICVkIG9mIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnIGNhbm5vdCBiZSBjb252ZXJ0ZWQgZnJvbSB0eXBlICclLS4zMnMnIHRvIHR5cGUgJyUtLjMycycAQ2FuJ3QgY3JlYXRlIGNvbnZlcnNpb24gdGFibGUgZm9yIHRhYmxlICclLS4xOTJzLiUtLjE5MnMnAENhbm5vdCBtb2RpZnkgQEBzZXNzaW9uLmJpbmxvZ19mb3JtYXQgaW5zaWRlIGEgdHJhbnNhY3Rpb24AVGhlIHBhdGggc3BlY2lmaWVkIGZvciAlLjY0cyBpcyB0b28gbG9uZy4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4ATmF0aXZlIHRhYmxlICclLS42NHMnLiclLS42NHMnIGhhcyB0aGUgd3Jvbmcgc3RydWN0dXJlAEludmFsaWQgcGVyZm9ybWFuY2Vfc2NoZW1hIHVzYWdlLgBUYWJsZSAnJXMnLiclcycgd2FzIHNraXBwZWQgc2luY2UgaXRzIGRlZmluaXRpb24gaXMgYmVpbmcgbW9kaWZpZWQgYnkgY29uY3VycmVudCBEREwgc3RhdGVtZW50AENhbm5vdCBtb2RpZnkgQEBzZXNzaW9uLmJpbmxvZ19kaXJlY3Rfbm9uX3RyYW5zYWN0aW9uYWxfdXBkYXRlcyBpbnNpZGUgYSB0cmFuc2FjdGlvbgBDYW5ub3QgY2hhbmdlIHRoZSBiaW5sb2cgZGlyZWN0IGZsYWcgaW5zaWRlIGEgc3RvcmVkIGZ1bmN0aW9uIG9yIHRyaWdnZXIAQSBTUEFUSUFMIGluZGV4IG1heSBvbmx5IGNvbnRhaW4gYSBnZW9tZXRyaWNhbCB0eXBlIGNvbHVtbgBDb21tZW50IGZvciBpbmRleCAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBXYWl0IG9uIGEgbG9jayB3YXMgYWJvcnRlZCBkdWUgdG8gYSBwZW5kaW5nIGV4Y2x1c2l2ZSBsb2NrACVzIHZhbHVlIGlzIG91dCBvZiByYW5nZSBpbiAnJXMnAEEgdmFyaWFibGUgb2YgYSBub24taW50ZWdlciBiYXNlZCB0eXBlIGluIExJTUlUIGNsYXVzZQBNaXhpbmcgc2VsZi1sb2dnaW5nIGFuZCBub24tc2VsZi1sb2dnaW5nIGVuZ2luZXMgaW4gYSBzdGF0ZW1lbnQgaXMgdW5zYWZlLgBTdGF0ZW1lbnQgYWNjZXNzZXMgbm9udHJhbnNhY3Rpb25hbCB0YWJsZSBhcyB3ZWxsIGFzIHRyYW5zYWN0aW9uYWwgb3IgdGVtcG9yYXJ5IHRhYmxlLCBhbmQgd3JpdGVzIHRvIGFueSBvZiB0aGVtLgBDYW5ub3QgbW9kaWZ5IEBAc2Vzc2lvbi5zcWxfbG9nX2JpbiBpbnNpZGUgYSB0cmFuc2FjdGlvbgBDYW5ub3QgY2hhbmdlIHRoZSBzcWxfbG9nX2JpbiBpbnNpZGUgYSBzdG9yZWQgZnVuY3Rpb24gb3IgdHJpZ2dlcgBGYWlsZWQgdG8gcmVhZCBmcm9tIHRoZSAucGFyIGZpbGUAVkFMVUVTIHZhbHVlIGZvciBwYXJ0aXRpb24gJyUtLjY0cycgbXVzdCBoYXZlIHR5cGUgSU5UAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycAU0VUIFBBU1NXT1JEIGhhcyBubyBzaWduaWZpY2FuY2UgZm9yIHVzZXJzIGF1dGhlbnRpY2F0aW5nIHZpYSBwbHVnaW5zAEdSQU5UIHdpdGggSURFTlRJRklFRCBXSVRIIGlzIGlsbGVnYWwgYmVjYXVzZSB0aGUgdXNlciAlLS4qcyBhbHJlYWR5IGV4aXN0cwBDYW5ub3QgdHJ1bmNhdGUgYSB0YWJsZSByZWZlcmVuY2VkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAoJS4xOTJzKQBQbHVnaW4gJyVzJyBpcyBmb3JjZV9wbHVzX3Blcm1hbmVudCBhbmQgY2FuIG5vdCBiZSB1bmxvYWRlZABUaGUgcmVxdWVzdGVkIHZhbHVlIGZvciB0aGUgaGVhcnRiZWF0IHBlcmlvZCBpcyBsZXNzIHRoYW4gMSBtaWxsaXNlY29uZC4gVGhlIHZhbHVlIGlzIHJlc2V0IHRvIDAsIG1lYW5pbmcgdGhhdCBoZWFydGJlYXRpbmcgd2lsbCBlZmZlY3RpdmVseSBiZSBkaXNhYmxlZC4AVGhlIHJlcXVlc3RlZCB2YWx1ZSBmb3IgdGhlIGhlYXJ0YmVhdCBwZXJpb2QgZXhjZWVkcyB0aGUgdmFsdWUgb2YgYHJlcGxpY2FfbmV0X3RpbWVvdXQnIHNlY29uZHMuIEEgc2Vuc2libGUgdmFsdWUgZm9yIHRoZSBwZXJpb2Qgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgdGltZW91dC4ATXVsdGktcm93IHN0YXRlbWVudHMgcmVxdWlyZWQgbW9yZSB0aGFuICdtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZScgYnl0ZXMgb2Ygc3RvcmFnZTsgaW5jcmVhc2UgdGhpcyBteXNxbGQgdmFyaWFibGUgYW5kIHRyeSBhZ2FpbgBQcmltYXJ5IGtleS9wYXJ0aXRpb24ga2V5IHVwZGF0ZSBpcyBub3QgYWxsb3dlZCBzaW5jZSB0aGUgdGFibGUgaXMgdXBkYXRlZCBib3RoIGFzICclLS4xOTJzJyBhbmQgJyUtLjE5MnMnLgBUYWJsZSByZWJ1aWxkIHJlcXVpcmVkLiBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlLS42NHNgIEZPUkNFIiBvciBkdW1wL3JlbG9hZCB0byBmaXggaXQhAFRoZSB2YWx1ZSBvZiAnJXMnIHNob3VsZCBiZSBubyBsZXNzIHRoYW4gdGhlIHZhbHVlIG9mICclcycASW5kZXggY29sdW1uIHNpemUgdG9vIGxhcmdlLiBUaGUgbWF4aW11bSBjb2x1bW4gc2l6ZSBpcyAlbHUgYnl0ZXMuAFRyaWdnZXIgJyUtLjY0cycgaGFzIGFuIGVycm9yIGluIGl0cyBib2R5OiAnJS0uMjU2cycAVW5rbm93biB0cmlnZ2VyIGhhcyBhbiBlcnJvciBpbiBpdHMgYm9keTogJyUtLjI1NnMnAEluZGV4ICVzIGlzIGNvcnJ1cHRlZABVbmRvIGxvZyByZWNvcmQgaXMgdG9vIGJpZy4ASU5TRVJUIElHTk9SRS4uLiBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaWdub3JlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAElOU0VSVC4uLiBTRUxFQ1QuLi4gT04gRFVQTElDQVRFIEtFWSBVUERBVEUgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgdXBkYXRlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAFJFUExBQ0UuLi4gU0VMRUNUIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIHJlcGxhY2VkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AQ1JFQVRFLi4uIElHTk9SRSBTRUxFQ1QgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBieSB0aGUgU0VMRUNUIGRldGVybWluZXMgd2hpY2ggKGlmIGFueSkgcm93cyBhcmUgaWdub3JlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAENSRUFURS4uLiBSRVBMQUNFIFNFTEVDVCBpcyB1bnNhZmUgYmVjYXVzZSB0aGUgb3JkZXIgaW4gd2hpY2ggcm93cyBhcmUgcmV0cmlldmVkIGJ5IHRoZSBTRUxFQ1QgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSByZXBsYWNlZC4gVGhpcyBvcmRlciBjYW5ub3QgYmUgcHJlZGljdGVkIGFuZCBtYXkgZGlmZmVyIG9uIHNvdXJjZSBhbmQgdGhlIHJlcGxpY2EuAFVQREFURSBJR05PUkUgaXMgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHVwZGF0ZWQgZGV0ZXJtaW5lcyB3aGljaCAoaWYgYW55KSByb3dzIGFyZSBpZ25vcmVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4AUGx1Z2luICclcycgaXMgbWFya2VkIGFzIG5vdCBkeW5hbWljYWxseSB1bmluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gdW5pbnN0YWxsIGl0LgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IGluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gaW5zdGFsbCBpdC4AU3RhdGVtZW50cyB3cml0aW5nIHRvIGEgdGFibGUgd2l0aCBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4gYWZ0ZXIgc2VsZWN0aW5nIGZyb20gYW5vdGhlciB0YWJsZSBhcmUgdW5zYWZlIGJlY2F1c2UgdGhlIG9yZGVyIGluIHdoaWNoIHJvd3MgYXJlIHJldHJpZXZlZCBkZXRlcm1pbmVzIHdoYXQgKGlmIGFueSkgcm93cyB3aWxsIGJlIHdyaXR0ZW4uIFRoaXMgb3JkZXIgY2Fubm90IGJlIHByZWRpY3RlZCBhbmQgbWF5IGRpZmZlciBvbiBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLgBDUkVBVEUgVEFCTEUuLi4gU0VMRUNULi4uICBvbiBhIHRhYmxlIHdpdGggYW4gYXV0by1pbmNyZW1lbnQgY29sdW1uIGlzIHVuc2FmZSBiZWNhdXNlIHRoZSBvcmRlciBpbiB3aGljaCByb3dzIGFyZSByZXRyaWV2ZWQgYnkgdGhlIFNFTEVDVCBkZXRlcm1pbmVzIHdoaWNoIChpZiBhbnkpIHJvd3MgYXJlIGluc2VydGVkLiBUaGlzIG9yZGVyIGNhbm5vdCBiZSBwcmVkaWN0ZWQgYW5kIG1heSBkaWZmZXIgb24gc291cmNlIGFuZCB0aGUgcmVwbGljYS4ASU5TRVJULi4uIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFICBvbiBhIHRhYmxlIHdpdGggbW9yZSB0aGFuIG9uZSBVTklRVUUgS0VZIGlzIHVuc2FmZQBUYWJsZSBpcyBiZWluZyB1c2VkIGluIGZvcmVpZ24ga2V5IGNoZWNrLgBTdG9yYWdlIGVuZ2luZSAnJXMnIGRvZXMgbm90IHN1cHBvcnQgc3lzdGVtIHRhYmxlcy4gWyVzLiVzXQBJTlNFUlQgaW50byBhdXRvaW5jcmVtZW50IGZpZWxkIHdoaWNoIGlzIG5vdCB0aGUgZmlyc3QgcGFydCBpbiB0aGUgY29tcG9zZWQgcHJpbWFyeSBrZXkgaXMgdW5zYWZlLgBDYW5ub3QgbG9hZCBmcm9tICVzLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAFRoZSByZXF1ZXN0ZWQgdmFsdWUgJXMgZm9yIHRoZSBzb3VyY2UgZGVsYXkgZXhjZWVkcyB0aGUgbWF4aW11bSAldQBPbmx5IEZvcm1hdF9kZXNjcmlwdGlvbl9sb2dfZXZlbnQgYW5kIHJvdyBldmVudHMgYXJlIGFsbG93ZWQgaW4gQklOTE9HIHN0YXRlbWVudHMgKGJ1dCAlcyB3YXMgcHJvdmlkZWQpAE5vbiBtYXRjaGluZyBhdHRyaWJ1dGUgJyUtLjY0cycgYmV0d2VlbiBwYXJ0aXRpb24gYW5kIHRhYmxlAFRhYmxlIHRvIGV4Y2hhbmdlIHdpdGggcGFydGl0aW9uIGlzIHBhcnRpdGlvbmVkOiAnJS0uNjRzJwBUYWJsZSB0byBleGNoYW5nZSB3aXRoIHBhcnRpdGlvbiBpcyB0ZW1wb3Jhcnk6ICclLS42NHMnAFN1YnBhcnRpdGlvbmVkIHRhYmxlLCB1c2Ugc3VicGFydGl0aW9uIGluc3RlYWQgb2YgcGFydGl0aW9uAFVua25vd24gcGFydGl0aW9uICclLS42NHMnIGluIHRhYmxlICclLS42NHMnAFRhYmxlcyBoYXZlIGRpZmZlcmVudCBkZWZpbml0aW9ucwBGb3VuZCBhIHJvdyB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZSBwYXJ0aXRpb24AT3B0aW9uIGJpbmxvZ19jYWNoZV9zaXplICglbHUpIGlzIGdyZWF0ZXIgdGhhbiBtYXhfYmlubG9nX2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX2NhY2hlX3NpemUgZXF1YWwgdG8gbWF4X2JpbmxvZ19jYWNoZV9zaXplLgBDYW5ub3QgdXNlICUtLjY0cyBhY2Nlc3Mgb24gaW5kZXggJyUtLjY0cycgZHVlIHRvIHR5cGUgb3IgY29sbGF0aW9uIGNvbnZlcnNpb24gb24gZmllbGQgJyUtLjY0cycAVGFibGUgdG8gZXhjaGFuZ2Ugd2l0aCBwYXJ0aXRpb24gaGFzIGZvcmVpZ24ga2V5IHJlZmVyZW5jZXM6ICclLS42NHMnAEtleSB2YWx1ZSAnJS0uMTkycycgd2FzIG5vdCBmb3VuZCBpbiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJwBEYXRhIGZvciBjb2x1bW4gJyVzJyB0b28gbG9uZwBSZXBsaWNhdGlvbiBldmVudCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIHdoaWxlIHJlYWRpbmcgZnJvbSBuZXR3b3JrLgBSZXBsaWNhdGlvbiBldmVudCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIHdoaWxlIHJlYWRpbmcgZnJvbSBhIGxvZyBmaWxlLgBPcHRpb24gYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSAoJWx1KSBpcyBncmVhdGVyIHRoYW4gbWF4X2JpbmxvZ19zdG10X2NhY2hlX3NpemUgKCVsdSk7IHNldHRpbmcgYmlubG9nX3N0bXRfY2FjaGVfc2l6ZSBlcXVhbCB0byBtYXhfYmlubG9nX3N0bXRfY2FjaGVfc2l6ZS4AQ2FuJ3QgdXBkYXRlIHRhYmxlICclLS4xOTJzJyB3aGlsZSAnJS0uMTkycycgaXMgYmVpbmcgY3JlYXRlZC4AUEFSVElUSU9OICgpIGNsYXVzZSBvbiBub24gcGFydGl0aW9uZWQgdGFibGUARm91bmQgYSByb3cgbm90IG1hdGNoaW5nIHRoZSBnaXZlbiBwYXJ0aXRpb24gc2V0AFBhcnRpdGlvbiAnJS0uNjRzJyBkb2Vzbid0IGV4aXN0AEZhaWx1cmUgd2hpbGUgY2hhbmdpbmcgdGhlIHR5cGUgb2YgcmVwbGljYXRpb24gcmVwb3NpdG9yeTogJXMuAFRoZSBjcmVhdGlvbiBvZiBzb21lIHRlbXBvcmFyeSB0YWJsZXMgY291bGQgbm90IGJlIHJvbGxlZCBiYWNrLgBTb21lIHRlbXBvcmFyeSB0YWJsZXMgd2VyZSBkcm9wcGVkLCBidXQgdGhlc2Ugb3BlcmF0aW9ucyBjb3VsZCBub3QgYmUgcm9sbGVkIGJhY2suACVzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gbXVsdGktdGhyZWFkZWQgcmVwbGljYSBtb2RlLiAlcwBUaGUgbnVtYmVyIG9mIG1vZGlmaWVkIGRhdGFiYXNlcyBleGNlZWRzIHRoZSBtYXhpbXVtICVkOyB0aGUgZGF0YWJhc2UgbmFtZXMgd2lsbCBub3QgYmUgaW5jbHVkZWQgaW4gdGhlIHJlcGxpY2F0aW9uIGV2ZW50IG1ldGFkYXRhLgBDYW5ub3QgZXhlY3V0ZSB0aGUgY3VycmVudCBldmVudCBncm91cCBpbiB0aGUgcGFyYWxsZWwgbW9kZS4gRW5jb3VudGVyZWQgZXZlbnQgJXMsIHJlbGF5LWxvZyBuYW1lICVzLCBwb3NpdGlvbiAlcyB3aGljaCBwcmV2ZW50cyBleGVjdXRpb24gb2YgdGhpcyBldmVudCBncm91cCBpbiBwYXJhbGxlbCBtb2RlLiBSZWFzb246ICVzLgAlcwBGVUxMVEVYVCBpbmRleCBpcyBub3Qgc3VwcG9ydGVkIGZvciBwYXJ0aXRpb25lZCB0YWJsZXMuAEludmFsaWQgY29uZGl0aW9uIG51bWJlcgBTZW5kaW5nIHBhc3N3b3JkcyBpbiBwbGFpbiB0ZXh0IHdpdGhvdXQgU1NML1RMUyBpcyBleHRyZW1lbHkgaW5zZWN1cmUuAFN0b3JpbmcgTXlTUUwgdXNlciBuYW1lIG9yIHBhc3N3b3JkIGluZm9ybWF0aW9uIGluIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHJlcG9zaXRvcnkgaXMgbm90IHNlY3VyZSBhbmQgaXMgdGhlcmVmb3JlIG5vdCByZWNvbW1lbmRlZC4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIHRoZSBVU0VSIGFuZCBQQVNTV09SRCBjb25uZWN0aW9uIG9wdGlvbnMgZm9yIFNUQVJUIFJFUExJQ0E7IHNlZSB0aGUgJ1NUQVJUIFJFUExJQ0EgU3ludGF4JyBpbiB0aGUgTXlTUUwgTWFudWFsIGZvciBtb3JlIGluZm9ybWF0aW9uLgBGb3JlaWduIGtleSBjb25zdHJhaW50IGZvciB0YWJsZSAnJS4xOTJzJywgcmVjb3JkICclLS4xOTJzJyB3b3VsZCBsZWFkIHRvIGEgZHVwbGljYXRlIGVudHJ5IGluIHRhYmxlICclLjE5MnMnLCBrZXkgJyUuMTkycycARm9yZWlnbiBrZXkgY29uc3RyYWludCBmb3IgdGFibGUgJyUuMTkycycsIHJlY29yZCAnJS0uMTkycycgd291bGQgbGVhZCB0byBhIGR1cGxpY2F0ZSBlbnRyeSBpbiBhIGNoaWxkIHRhYmxlAFNldHRpbmcgYXV0aGVudGljYXRpb24gb3B0aW9ucyBpcyBub3QgcG9zc2libGUgd2hlbiBvbmx5IHRoZSBSZXBsaWNhIFNRTCBUaHJlYWQgaXMgYmVpbmcgc3RhcnRlZC4AVGhlIHRhYmxlIGRvZXMgbm90IGhhdmUgRlVMTFRFWFQgaW5kZXggdG8gc3VwcG9ydCB0aGlzIHF1ZXJ5AFRoZSBzeXN0ZW0gdmFyaWFibGUgJS4yMDBzIGNhbm5vdCBiZSBzZXQgaW4gc3RvcmVkIGZ1bmN0aW9ucyBvciB0cmlnZ2Vycy4AVGhlIHN5c3RlbSB2YXJpYWJsZSAlLjIwMHMgY2Fubm90IGJlIHNldCB3aGVuIHRoZXJlIGlzIGFuIG9uZ29pbmcgdHJhbnNhY3Rpb24uAFRoZSBzeXN0ZW0gdmFyaWFibGUgQEBTRVNTSU9OLkdUSURfTkVYVCBoYXMgdGhlIHZhbHVlICUuMjAwcywgd2hpY2ggaXMgbm90IGxpc3RlZCBpbiBAQFNFU1NJT04uR1RJRF9ORVhUX0xJU1QuAFRoZSBzeXN0ZW0gdmFyaWFibGUgQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgY2hhbmdlIGluc2lkZSBhIHRyYW5zYWN0aW9uLgBUaGUgc3RhdGVtZW50ICdTRVQgJS4yMDBzJyBjYW5ub3QgaW52b2tlIGEgc3RvcmVkIGZ1bmN0aW9uLgBUaGUgc3lzdGVtIHZhcmlhYmxlIEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlICdBVVRPTUFUSUMnIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVF9MSVNUIGlzIG5vbi1OVUxMLgBTa2lwcGluZyB0cmFuc2FjdGlvbiAlLjIwMHMgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIGV4ZWN1dGVkIGFuZCBsb2dnZWQuAE1hbGZvcm1lZCBHVElEIHNldCBzcGVjaWZpY2F0aW9uICclLjIwMHMnLgBNYWxmb3JtZWQgR1RJRCBzZXQgZW5jb2RpbmcuAE1hbGZvcm1lZCBHVElEIHNwZWNpZmljYXRpb24gJyUuMjAwcycuAEltcG9zc2libGUgdG8gZ2VuZXJhdGUgR1RJRDogdGhlIGludGVnZXIgY29tcG9uZW50IHJlYWNoZWQgdGhlIG1heGltdW0gdmFsdWUuIFJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIGEgbmV3IHNlcnZlcl91dWlkLgBQYXJhbWV0ZXJzIFNPVVJDRV9MT0dfRklMRSwgU09VUkNFX0xPR19QT1MsIFJFTEFZX0xPR19GSUxFIGFuZCBSRUxBWV9MT0dfUE9TIGNhbm5vdCBiZSBzZXQgd2hlbiBTT1VSQ0VfQVVUT19QT1NJVElPTiBpcyBhY3RpdmUuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0FVVE9fUE9TSVRJT04gPSAxIGNhbm5vdCBiZSBleGVjdXRlZCBiZWNhdXNlIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4AQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50cyB3aXRoIGltcGxpY2l0IGNvbW1pdCBpbnNpZGUgYSB0cmFuc2FjdGlvbiB3aGVuIEBAU0VTU0lPTi5HVElEX05FWFQgPT0gJ1VVSUQ6TlVNQkVSJy4AR1RJRF9NT0RFID0gT04gcmVxdWlyZXMgRU5GT1JDRV9HVElEX0NPTlNJU1RFTkNZID0gT04uAEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OIG9yIE9OX1BFUk1JU1NJVkUgb3IgT0ZGX1BFUk1JU1NJVkUgcmVxdWlyZXMgLS1sb2ctYmluIGFuZCAtLWxvZy1yZXBsaWNhLXVwZGF0ZXMuAEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlIHNldCB0byBVVUlEOk5VTUJFUiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4AQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgc2V0IHRvIEFOT05ZTU9VUyB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLgBAQFNFU1NJT04uR1RJRF9ORVhUX0xJU1QgY2Fubm90IGJlIHNldCB0byBhIG5vbi1OVUxMIHZhbHVlIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBGb3VuZCBhIEd0aWRfbG9nX2V2ZW50IHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogVXBkYXRlcyB0byBub24tdHJhbnNhY3Rpb25hbCB0YWJsZXMgY2FuIG9ubHkgYmUgZG9uZSBpbiBlaXRoZXIgYXV0b2NvbW1pdHRlZCBzdGF0ZW1lbnRzIG9yIHNpbmdsZS1zdGF0ZW1lbnQgdHJhbnNhY3Rpb25zLCBhbmQgbmV2ZXIgaW4gdGhlIHNhbWUgc3RhdGVtZW50IGFzIHVwZGF0ZXMgdG8gdHJhbnNhY3Rpb25hbCB0YWJsZXMuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEFCTEUgLi4uIFNFTEVDVC4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIG91dHNpZGUgdHJhbnNhY3Rpb25hbCBjb250ZXh0LiAgVGhlc2Ugc3RhdGVtZW50cyBhcmUgYWxzbyBub3QgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIG9yIHRyaWdnZXIgYmVjYXVzZSBmdW5jdGlvbnMgYW5kIHRyaWdnZXJzIGFyZSBhbHNvIGNvbnNpZGVyZWQgdG8gYmUgbXVsdGktc3RhdGVtZW50IHRyYW5zYWN0aW9ucy4AVGhlIHZhbHVlIG9mIEBAR0xPQkFMLkdUSURfTU9ERSBjYW4gb25seSBiZSBjaGFuZ2VkIG9uZSBzdGVwIGF0IGEgdGltZTogT0ZGIDwtPiBPRkZfUEVSTUlTU0lWRSA8LT4gT05fUEVSTUlTU0lWRSA8LT4gT04uIEFsc28gbm90ZSB0aGF0IHRoaXMgdmFsdWUgbXVzdCBiZSBzdGVwcGVkIHVwIG9yIGRvd24gc2ltdWx0YW5lb3VzbHkgb24gYWxsIHNlcnZlcnMuIFNlZSB0aGUgTWFudWFsIGZvciBpbnN0cnVjdGlvbnMuAENhbm5vdCByZXBsaWNhdGUgYmVjYXVzZSB0aGUgc291cmNlIHB1cmdlZCByZXF1aXJlZCBiaW5hcnkgbG9ncy4gUmVwbGljYXRlIHRoZSBtaXNzaW5nIHRyYW5zYWN0aW9ucyBmcm9tIGVsc2V3aGVyZSwgb3IgcHJvdmlzaW9uIGEgbmV3IHJlcGxpY2EgZnJvbSBiYWNrdXAuIENvbnNpZGVyIGluY3JlYXNpbmcgdGhlIHNvdXJjZSdzIGJpbmFyeSBsb2cgZXhwaXJhdGlvbiBwZXJpb2QuICVzAEBAU0VTU0lPTi5HVElEX05FWFQgY2Fubm90IGJlIGNoYW5nZWQgYnkgYSBjbGllbnQgdGhhdCBvd25zIGEgR1RJRC4gVGhlIGNsaWVudCBvd25zICVzLiBPd25lcnNoaXAgaXMgcmVsZWFzZWQgb24gQ09NTUlUIG9yIFJPTExCQUNLLgBVbmtub3duIEVYUExBSU4gZm9ybWF0IG5hbWU6ICclcycAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50IGluIGEgUkVBRCBPTkxZIHRyYW5zYWN0aW9uLgBDb21tZW50IGZvciB0YWJsZSBwYXJ0aXRpb24gJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAUmVwbGljYSBpcyBub3QgY29uZmlndXJlZCBvciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBwcm9wZXJseS4gWW91IG11c3QgYXQgbGVhc3Qgc2V0IC0tc2VydmVyLWlkIHRvIGVuYWJsZSBlaXRoZXIgYSBzb3VyY2Ugb3IgYSByZXBsaWNhLiBBZGRpdGlvbmFsIGVycm9yIG1lc3NhZ2VzIGNhbiBiZSBmb3VuZCBpbiB0aGUgTXlTUUwgZXJyb3IgbG9nLgBJbm5vREIgcHJlc2VudGx5IHN1cHBvcnRzIG9uZSBGVUxMVEVYVCBpbmRleCBjcmVhdGlvbiBhdCBhIHRpbWUAQ2Fubm90IGNyZWF0ZSBGVUxMVEVYVCBpbmRleCBvbiB0ZW1wb3JhcnkgSW5ub0RCIHRhYmxlAENvbHVtbiAnJS0uMTkycycgaXMgb2Ygd3JvbmcgdHlwZSBmb3IgYW4gSW5ub0RCIEZVTExURVhUIGluZGV4AEluZGV4ICclLS4xOTJzJyBpcyBvZiB3cm9uZyB0eXBlIGZvciBhbiBJbm5vREIgRlVMTFRFWFQgaW5kZXgAQ3JlYXRpbmcgaW5kZXggJyUtLjE5MnMnIHJlcXVpcmVkIG1vcmUgdGhhbiAnaW5ub2RiX29ubGluZV9hbHRlcl9sb2dfbWF4X3NpemUnIGJ5dGVzIG9mIG1vZGlmaWNhdGlvbiBsb2cuIFBsZWFzZSB0cnkgYWdhaW4uAFVua25vd24gQUxHT1JJVEhNICclcycAVW5rbm93biBMT0NLIHR5cGUgJyVzJwBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIGNhbm5vdCBiZSBleGVjdXRlZCB3aGVuIHRoZSByZXBsaWNhIHdhcyBzdG9wcGVkIHdpdGggYW4gZXJyb3Igb3Iga2lsbGVkIGluIE1UQSBtb2RlLiBDb25zaWRlciB1c2luZyBSRVNFVCBSRVBMSUNBIG9yIFNUQVJUIFJFUExJQ0EgVU5USUwuAENhbm5vdCByZWNvdmVyIGFmdGVyIFJFUExJQ0EgZXJyb3JlZCBvdXQgaW4gcGFyYWxsZWwgZXhlY3V0aW9uIG1vZGUuIEFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cuAENhbm5vdCBjbGVhbiB1cCB3b3JrZXIgaW5mbyB0YWJsZXMuIEFkZGl0aW9uYWwgZXJyb3IgbWVzc2FnZXMgY2FuIGJlIGZvdW5kIGluIHRoZSBNeVNRTCBlcnJvciBsb2cuAENvbHVtbiBjb3VudCBvZiAlcy4lcyBpcyB3cm9uZy4gRXhwZWN0ZWQgJWQsIGZvdW5kICVkLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkAFJlcGxpY2EgbXVzdCBzaWxlbnRseSByZXRyeSBjdXJyZW50IHRyYW5zYWN0aW9uAFRoZXJlIGlzIGEgZm9yZWlnbiBrZXkgY2hlY2sgcnVubmluZyBvbiB0YWJsZSAnJS0uMTkycycuIENhbm5vdCBkaXNjYXJkIHRoZSB0YWJsZS4AU2NoZW1hIG1pc21hdGNoICglcykAVGFibGUgJyUtLjE5MnMnIGluIHN5c3RlbSB0YWJsZXNwYWNlAElPIFJlYWQgZXJyb3I6ICglbHUsICVzKSAlcwBJTyBXcml0ZSBlcnJvcjogKCVsdSwgJXMpICVzAFRhYmxlc3BhY2UgaXMgbWlzc2luZyBmb3IgdGFibGUgJXMuAFRhYmxlc3BhY2UgJyUtLjE5MnMnIGV4aXN0cy4AVGFibGVzcGFjZSBoYXMgYmVlbiBkaXNjYXJkZWQgZm9yIHRhYmxlICclLS4xOTJzJwBJbnRlcm5hbCBlcnJvcjogJXMAQUxURVIgVEFCTEUgJS0uMTkycyBJTVBPUlQgVEFCTEVTUEFDRSBmYWlsZWQgd2l0aCBlcnJvciAlbHUgOiAnJXMnAEluZGV4IGNvcnJ1cHQ6ICVzAEludmFsaWQgZGlzcGxheSB3aWR0aC4gVXNlIFlFQVIgaW5zdGVhZC4AWW91ciBwYXNzd29yZCBkb2VzIG5vdCBzYXRpc2Z5IHRoZSBjdXJyZW50IHBvbGljeSByZXF1aXJlbWVudHMAWW91IG11c3QgcmVzZXQgeW91ciBwYXNzd29yZCB1c2luZyBBTFRFUiBVU0VSIHN0YXRlbWVudCBiZWZvcmUgZXhlY3V0aW5nIHRoaXMgc3RhdGVtZW50LgBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50LiBNaXNzaW5nIGluZGV4IGZvciBjb25zdHJhaW50ICclcycgaW4gdGhlIGZvcmVpZ24gdGFibGUgJyVzJwBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50LiBNaXNzaW5nIGluZGV4IGZvciBjb25zdHJhaW50ICclcycgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgJyVzJwBGYWlsZWQgdG8gYWRkIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclcycgdG8gc3lzdGVtIHRhYmxlcwBGYWlsZWQgdG8gb3BlbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSAnJXMnAEZhaWxlZCB0byBhZGQgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGFibGUgJyVzJy4gSW5jb3JyZWN0IG9wdGlvbnMgaW4gRk9SRUlHTiBLRVkgY29uc3RyYWludCAnJXMnAER1cGxpY2F0ZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG5hbWUgJyVzJwBUaGUgcGFzc3dvcmQgaGFzaCBkb2Vzbid0IGhhdmUgdGhlIGV4cGVjdGVkIGZvcm1hdC4AQ2Fubm90IGRyb3AgY29sdW1uICclLS4xOTJzJzogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycAQ2Fubm90IGRyb3AgY29sdW1uICclLS4xOTJzJzogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgb2YgdGFibGUgJyUtLjE5MnMnAENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIE5PVCBOVUxMOiBuZWVkZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBTRVQgTlVMTABEdXBsaWNhdGUgaW5kZXggJyUtLjY0cycgZGVmaW5lZCBvbiB0aGUgdGFibGUgJyUtLjY0cy4lLS42NHMnLiBUaGlzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgZGlzYWxsb3dlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBDYW5ub3QgY2hhbmdlIGNvbHVtbiAnJS0uMTkycyc6IHVzZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJwBDYW5ub3QgY2hhbmdlIGNvbHVtbiAnJS0uMTkycyc6IHVzZWQgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50ICclLS4xOTJzJyBvZiB0YWJsZSAnJS0uMTkycycAQ2Fubm90IGRlbGV0ZSByb3dzIGZyb20gdGFibGUgd2hpY2ggaXMgcGFyZW50IGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgb2YgdGFibGUgJyUtLjE5MnMnAE1hbGZvcm1lZCBjb21tdW5pY2F0aW9uIHBhY2tldC4AUnVubmluZyBpbiByZWFkLW9ubHkgbW9kZQBXaGVuIEBAU0VTU0lPTi5HVElEX05FWFQgaXMgc2V0IHRvIGEgR1RJRCwgeW91IG11c3QgZXhwbGljaXRseSBzZXQgaXQgdG8gYSBkaWZmZXJlbnQgdmFsdWUgYWZ0ZXIgYSBDT01NSVQgb3IgUk9MTEJBQ0suIFBsZWFzZSBjaGVjayBHVElEX05FWFQgdmFyaWFibGUgbWFudWFsIHBhZ2UgZm9yIGRldGFpbGVkIGV4cGxhbmF0aW9uLiBDdXJyZW50IEBAU0VTU0lPTi5HVElEX05FWFQgaXMgJyVzJy4AVGhlIHN5c3RlbSB2YXJpYWJsZSAlLjIwMHMgY2Fubm90IGJlIHNldCBpbiBzdG9yZWQgcHJvY2VkdXJlcy4AQEBHTE9CQUwuR1RJRF9QVVJHRUQgY2FuIG9ubHkgYmUgc2V0IHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uAEBAR0xPQkFMLkdUSURfUFVSR0VEIGNhbiBvbmx5IGJlIHNldCB3aGVuIEBAR0xPQkFMLkdUSURfRVhFQ1VURUQgaXMgZW1wdHkuAEBAR0xPQkFMLkdUSURfUFVSR0VEIGNhbiBvbmx5IGJlIHNldCB3aGVuIHRoZXJlIGFyZSBubyBvbmdvaW5nIHRyYW5zYWN0aW9ucyAobm90IGV2ZW4gaW4gb3RoZXIgY2xpZW50cykuAEBAR0xPQkFMLkdUSURfUFVSR0VEIHdhcyBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnLgBAQEdMT0JBTC5HVElEX0VYRUNVVEVEIHdhcyBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnLgBDYW5ub3QgZXhlY3V0ZSBzdGF0ZW1lbnQ6IGltcG9zc2libGUgdG8gd3JpdGUgdG8gYmluYXJ5IGxvZyBzaW5jZSBCSU5MT0dfRk9STUFUID0gU1RBVEVNRU5ULCBhbmQgYm90aCByZXBsaWNhdGVkIGFuZCBub24gcmVwbGljYXRlZCB0YWJsZXMgYXJlIHdyaXR0ZW4gdG8uACVzIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgb3BlcmF0aW9uLiBUcnkgJXMuACVzIGlzIG5vdCBzdXBwb3J0ZWQuIFJlYXNvbjogJXMuIFRyeSAlcy4AQ09QWSBhbGdvcml0aG0gcmVxdWlyZXMgYSBsb2NrAFBhcnRpdGlvbiBzcGVjaWZpYyBvcGVyYXRpb25zIGRvIG5vdCB5ZXQgc3VwcG9ydCBMT0NLL0FMR09SSVRITQBDb2x1bW5zIHBhcnRpY2lwYXRpbmcgaW4gYSBmb3JlaWduIGtleSBhcmUgcmVuYW1lZABDYW5ub3QgY2hhbmdlIGNvbHVtbiB0eXBlIElOUExBQ0UAQWRkaW5nIGZvcmVpZ24ga2V5cyBuZWVkcyBmb3JlaWduX2tleV9jaGVja3M9T0ZGAENyZWF0aW5nIHVuaXF1ZSBpbmRleGVzIHdpdGggSUdOT1JFIHJlcXVpcmVzIENPUFkgYWxnb3JpdGhtIHRvIHJlbW92ZSBkdXBsaWNhdGUgcm93cwBEcm9wcGluZyBhIHByaW1hcnkga2V5IGlzIG5vdCBhbGxvd2VkIHdpdGhvdXQgYWxzbyBhZGRpbmcgYSBuZXcgcHJpbWFyeSBrZXkAQWRkaW5nIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbiByZXF1aXJlcyBhIGxvY2sAQ2Fubm90IHJlcGxhY2UgaGlkZGVuIEZUU19ET0NfSUQgd2l0aCBhIHVzZXItdmlzaWJsZSBvbmUAQ2Fubm90IGRyb3Agb3IgcmVuYW1lIEZUU19ET0NfSUQARnVsbHRleHQgaW5kZXggY3JlYXRpb24gcmVxdWlyZXMgYSBsb2NrAHNxbF9yZXBsaWNhX3NraXBfY291bnRlciBjYW4gbm90IGJlIHNldCB3aGVuIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLiBJbnN0ZWFkLCBmb3IgZWFjaCB0cmFuc2FjdGlvbiB0aGF0IHlvdSB3YW50IHRvIHNraXAsIGdlbmVyYXRlIGFuIGVtcHR5IHRyYW5zYWN0aW9uIHdpdGggdGhlIHNhbWUgR1RJRCBhcyB0aGUgdHJhbnNhY3Rpb24AUG93dMOzcnpvbmUgd3lzdMSFcGllbmllIGRsYSBrbHVjemEgJyUtLjE5MnMnAExvbmcgZGF0YWJhc2UgbmFtZSBhbmQgaWRlbnRpZmllciBmb3Igb2JqZWN0IHJlc3VsdGVkIGluIHBhdGggbGVuZ3RoIGV4Y2VlZGluZyAlZCBjaGFyYWN0ZXJzLiBQYXRoOiAnJXMnLgBjYW5ub3Qgc2lsZW50bHkgY29udmVydCBOVUxMIHZhbHVlcywgYXMgcmVxdWlyZWQgaW4gdGhpcyBTUUxfTU9ERQBZb3VyIHBhc3N3b3JkIGhhcyBleHBpcmVkLiBUbyBsb2cgaW4geW91IG11c3QgY2hhbmdlIGl0IHVzaW5nIGEgY2xpZW50IHRoYXQgc3VwcG9ydHMgZXhwaXJlZCBwYXNzd29yZHMuAEZvdW5kIGEgcm93IGluIHdyb25nIHBhcnRpdGlvbiAlcwBDYW5ub3Qgc2NoZWR1bGUgZXZlbnQgJXMsIHJlbGF5LWxvZyBuYW1lICVzLCBwb3NpdGlvbiAlcyB0byBXb3JrZXIgdGhyZWFkIGJlY2F1c2UgaXRzIHNpemUgJWx1IGV4Y2VlZHMgJWx1IG9mIHJlcGxpY2FfcGVuZGluZ19qb2JzX3NpemVfbWF4LgBDYW5ub3QgQ1JFQVRFIEZVTExURVhUIElOREVYIFdJVEggUEFSU0VSIG9uIElubm9EQiB0YWJsZQBUaGUgYmluYXJ5IGxvZyBmaWxlICclcycgaXMgbG9naWNhbGx5IGNvcnJ1cHRlZDogJXMAZmlsZSAlcyB3YXMgbm90IHB1cmdlZCBiZWNhdXNlIGl0IHdhcyBiZWluZyByZWFkIGJ5ICVkIHRocmVhZChzKSwgcHVyZ2VkIG9ubHkgJWQgb3V0IG9mICVkIGZpbGVzLgBmaWxlICVzIHdhcyBub3QgcHVyZ2VkIGJlY2F1c2UgaXQgaXMgdGhlIGFjdGl2ZSBsb2cgZmlsZS4AQXV0by1pbmNyZW1lbnQgdmFsdWUgaW4gVVBEQVRFIGNvbmZsaWN0cyB3aXRoIGludGVybmFsbHkgZ2VuZXJhdGVkIHZhbHVlcwBSb3cgZXZlbnRzIGFyZSBub3QgbG9nZ2VkIGZvciAlcyBzdGF0ZW1lbnRzIHRoYXQgbW9kaWZ5IEJMQUNLSE9MRSB0YWJsZXMgaW4gcm93IGZvcm1hdC4gVGFibGUocyk6ICclLS4xOTJzJwBSZXBsaWNhIGZhaWxlZCB0byBpbml0aWFsaXplIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGZyb20gdGhlIHJlcG9zaXRvcnkAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBhcHBsaWVyIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AEFjY2VzcyBkZW5pZWQgdHJ5aW5nIHRvIGNoYW5nZSB0byB1c2VyICclLS40OHMnQCclLS42NHMnICh1c2luZyBwYXNzd29yZDogJXMpLiBEaXNjb25uZWN0aW5nLgBJbm5vREIgaXMgaW4gcmVhZCBvbmx5IG1vZGUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIFNRTCB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIFNRTCB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgSU8gdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBJTyB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AT3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQuIFRoZSB0YWJsZSAnJS0uNjRzLiUtLjY0cycgaXMgbWlzc2luZywgY29ycnVwdCBvciBjb250YWlucyBiYWQgZGF0YS4AVGVtcG9yYXJ5IGZpbGUgd3JpdGUgZmFpbHVyZS4AVXBncmFkZSBpbmRleCBuYW1lIGZhaWxlZCwgcGxlYXNlIHVzZSBjcmVhdGUgaW5kZXgoYWx0ZXIgdGFibGUpIGFsZ29yaXRobSBjb3B5IHRvIHJlYnVpbGQgaW5kZXguAFRJTUUvVElNRVNUQU1QL0RBVEVUSU1FIGNvbHVtbnMgb2Ygb2xkIGZvcm1hdCBoYXZlIGJlZW4gdXBncmFkZWQgdG8gdGhlIG5ldyBmb3JtYXQuAE9wZXJhdGlvbiBub3QgYWxsb3dlZCB3aGVuIGlubm9kYl9mb3JjZV9yZWNvdmVyeSA+IDAuAFRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3Igc3VwcGxpZWQgdG8gJXMgaXMgdG9vIHNob3J0LiBNdXN0IGJlIGF0IGxlYXN0ICVkIGJ5dGVzIGxvbmcAUGx1Z2luICclcycgY2Fubm90IGJlIHVuaW5zdGFsbGVkIG5vdy4gJXMAQ2Fubm90IGV4ZWN1dGUgc3RhdGVtZW50IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgd3JpdHRlbiB0byB0aGUgYmluYXJ5IGxvZyBhcyBtdWx0aXBsZSBzdGF0ZW1lbnRzLCBhbmQgdGhpcyBpcyBub3QgYWxsb3dlZCB3aGVuIEBAU0VTU0lPTi5HVElEX05FWFQgPT0gJ1VVSUQ6TlVNQkVSJy4AUmVwbGljYSBoYXMgbW9yZSBHVElEcyB0aGFuIHRoZSBzb3VyY2UgaGFzLCB1c2luZyB0aGUgc291cmNlJ3MgU0VSVkVSX1VVSUQuIFRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIHRoZSBsYXN0IGJpbmFyeSBsb2cgZmlsZSB3YXMgdHJ1bmNhdGVkIG9yIGxvc3QsIGUuZy4sIGFmdGVyIGEgcG93ZXIgZmFpbHVyZSB3aGVuIHN5bmNfYmlubG9nICE9IDEuIFRoZSBzb3VyY2UgbWF5IGhhdmUgcm9sbGVkIGJhY2sgdHJhbnNhY3Rpb25zIHRoYXQgd2VyZSBhbHJlYWR5IHJlcGxpY2F0ZWQgdG8gdGhlIHJlcGxpY2EuIFJlcGxpY2F0ZSBhbnkgdHJhbnNhY3Rpb25zIHRoYXQgc291cmNlIGhhcyByb2xsZWQgYmFjayBmcm9tIHJlcGxpY2EgdG8gc291cmNlLCBhbmQvb3IgY29tbWl0IGVtcHR5IHRyYW5zYWN0aW9ucyBvbiBzb3VyY2UgdG8gYWNjb3VudCBmb3IgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGNvbW1pdHRlZCBvbiBzb3VyY2UgYnV0IGFyZSBub3QgaW5jbHVkZWQgaW4gR1RJRF9FWEVDVVRFRC4AVGhlIHRhYmxlICclcy4lcycgZG9lcyBub3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IGtleShzKSBkZWZpbmVkIG9uIGl0LiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlIGRlZmluaXRpb24gYW5kIGNyZWF0ZSBpbmRleChzKSBhY2NvcmRpbmdseS4AU2V0dGluZyBuYW1lZF9waXBlX2Z1bGxfYWNjZXNzX2dyb3VwPSclcycgaXMgaW5zZWN1cmUuIENvbnNpZGVyIHVzaW5nIGEgV2luZG93cyBncm91cCB3aXRoIGZld2VyIG1lbWJlcnMuAEZpbGUgJXMgaXMgY29ycnVwdGVkAFF1ZXJ5IHBhcnRpYWxseSBjb21wbGV0ZWQgb24gdGhlIHNvdXJjZSAoZXJyb3Igb24gc291cmNlOiAlZCkgYW5kIHdhcyBhYm9ydGVkLiBUaGVyZSBpcyBhIGNoYW5jZSB0aGF0IHlvdXIgc291cmNlIGlzIGluY29uc2lzdGVudCBhdCB0aGlzIHBvaW50LiBJZiB5b3UgYXJlIHN1cmUgdGhhdCB5b3VyIHNvdXJjZSBpcyBvaywgcnVuIHRoaXMgcXVlcnkgbWFudWFsbHkgb24gdGhlIHJlcGxpY2EgYW5kIHRoZW4gcmVzdGFydCB0aGUgcmVwbGljYSB3aXRoIFNFVCBHTE9CQUwgU1FMX1JFUExJQ0FfU0tJUF9DT1VOVEVSPTE7IFNUQVJUIFJFUExJQ0E7LiBRdWVyeTonJXMnAFF1ZXJ5IGNhdXNlZCBkaWZmZXJlbnQgZXJyb3JzIG9uIHNvdXJjZSBhbmQgcmVwbGljYS4gRXJyb3Igb24gc291cmNlOiBtZXNzYWdlIChmb3JtYXQpPSclcycgZXJyb3IgY29kZT0lZDsgRXJyb3Igb24gcmVwbGljYTphY3R1YWwgbWVzc2FnZT0nJXMnLCBlcnJvciBjb2RlPSVkLiBEZWZhdWx0IGRhdGFiYXNlOiclcycuIFF1ZXJ5OiclcycAU3RvcmFnZSBlbmdpbmUgZm9yIHRhYmxlICclcycuJyVzJyBpcyBub3QgbG9hZGVkLgBHRVQgU1RBQ0tFRCBESUFHTk9TVElDUyB3aGVuIGhhbmRsZXIgbm90IGFjdGl2ZQAlcyBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiBUaGUgc3RhdGVtZW50IHdhcyBjb252ZXJ0ZWQgdG8gJXMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIGEgZnVsbHRleHQgcGFyc2VyIHBsdWdpbiB3aGljaCBtYXkgbm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZSBvbiB0aGUgcmVwbGljYS4AQ2Fubm90IERJU0NBUkQvSU1QT1JUIHRhYmxlc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRlbXBvcmFyeSB0YWJsZQBGb3JlaWduIGtleSBjYXNjYWRlIGRlbGV0ZS91cGRhdGUgZXhjZWVkcyBtYXggZGVwdGggb2YgJWQuAFRoZSBjb2x1bW4gY291bnQgb2YgJXMuJXMgaXMgd3JvbmcuIEV4cGVjdGVkICVkLCBmb3VuZCAlZC4gQ3JlYXRlZCB3aXRoIE15U1FMICVkLCBub3cgcnVubmluZyAlZC4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBUcmlnZ2VyICVzLiVzLiVzIGRvZXMgbm90IGhhdmUgQ1JFQVRFRCBhdHRyaWJ1dGUuAFJlZmVyZW5jZWQgdHJpZ2dlciAnJXMnIGZvciB0aGUgZ2l2ZW4gYWN0aW9uIHRpbWUgYW5kIGV2ZW50IHR5cGUgZG9lcyBub3QgZXhpc3QuAEVYUExBSU4gRk9SIENPTk5FQ1RJT04gY29tbWFuZCBpcyBzdXBwb3J0ZWQgb25seSBmb3IgU0VMRUNUL1VQREFURS9JTlNFUlQvREVMRVRFL1JFUExBQ0UASW52YWxpZCBzaXplIGZvciBjb2x1bW4gJyUtLjE5MnMnLgBUYWJsZSBzdG9yYWdlIGVuZ2luZSAnJS0uNjRzJyBmb3VuZCByZXF1aXJlZCBjcmVhdGUgb3B0aW9uIG1pc3NpbmcAT3V0IG9mIG1lbW9yeSBpbiBzdG9yYWdlIGVuZ2luZSAnJS0uNjRzJy4AVGhlIHBhc3N3b3JkIGZvciBhbm9ueW1vdXMgdXNlciBjYW5ub3QgYmUgZXhwaXJlZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aXRoIGEgcnVubmluZyByZXBsaWNhIHNxbCB0aHJlYWQ7IHJ1biBTVE9QIFJFUExJQ0EgU1FMX1RIUkVBRCBmaXJzdABDYW5ub3QgY3JlYXRlIEZVTExURVhUIGluZGV4IG9uIG1hdGVyaWFsaXplZCBzdWJxdWVyeQBVbmRvIExvZyBlcnJvcjogJXMASW52YWxpZCBhcmd1bWVudCBmb3IgbG9nYXJpdGhtAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBhIHJ1bm5pbmcgcmVwbGljYSBpbyB0aHJlYWQ7IHJ1biBTVE9QIFJFUExJQ0EgSU9fVEhSRUFEIEZPUiBDSEFOTkVMICclcycgZmlyc3QuAFRoaXMgb3BlcmF0aW9uIG1heSBub3QgYmUgc2FmZSB3aGVuIHRoZSByZXBsaWNhIGhhcyB0ZW1wb3JhcnkgdGFibGVzLiBUaGUgdGFibGVzIHdpbGwgYmUga2VwdCBvcGVuIHVudGlsIHRoZSBzZXJ2ZXIgcmVzdGFydHMgb3IgdW50aWwgdGhlIHRhYmxlcyBhcmUgZGVsZXRlZCBieSBhbnkgcmVwbGljYXRlZCBEUk9QIHN0YXRlbWVudC4gU3VnZ2VzdCB0byB3YWl0IHVudGlsIHJlcGxpY2Ffb3Blbl90ZW1wX3RhYmxlcyA9IDAuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gd2l0aCBhIFNPVVJDRV9MT0dfRklMRSBjbGF1c2UgYnV0IG5vIFNPVVJDRV9MT0dfUE9TIGNsYXVzZSBtYXkgbm90IGJlIHNhZmUuIFRoZSBvbGQgcG9zaXRpb24gdmFsdWUgbWF5IG5vdCBiZSB2YWxpZCBmb3IgdGhlIG5ldyBiaW5hcnkgbG9nIGZpbGUuAFF1ZXJ5IGV4ZWN1dGlvbiB3YXMgaW50ZXJydXB0ZWQsIG1heGltdW0gc3RhdGVtZW50IGV4ZWN1dGlvbiB0aW1lIGV4Y2VlZGVkAFNlbGVjdCBpcyBub3QgYSByZWFkIG9ubHkgc3RhdGVtZW50LCBkaXNhYmxpbmcgdGltZXIARHVwbGljYXRlIGVudHJ5ICclLS4xOTJzJy4AJyVzJyBtb2RlIG5vIGxvbmdlciBoYXMgYW55IGVmZmVjdC4gVXNlIFNUUklDVF9BTExfVEFCTEVTIG9yIFNUUklDVF9UUkFOU19UQUJMRVMgaW5zdGVhZC4ARXhwcmVzc2lvbiAjJXUgb2YgT1JERVIgQlkgY29udGFpbnMgYWdncmVnYXRlIGZ1bmN0aW9uIGFuZCBhcHBsaWVzIHRvIGEgVU5JT04sIEVYQ0VQVCBvciBJTlRFUlNFQ1QARXhwcmVzc2lvbiAjJXUgb2YgT1JERVIgQlkgY29udGFpbnMgYWdncmVnYXRlIGZ1bmN0aW9uIGFuZCBhcHBsaWVzIHRvIHRoZSByZXN1bHQgb2YgYSBub24tYWdncmVnYXRlZCBxdWVyeQBSZXBsaWNhIHdvcmtlciBoYXMgc3RvcHBlZCBhZnRlciBhdCBsZWFzdCBvbmUgcHJldmlvdXMgd29ya2VyIGVuY291bnRlcmVkIGFuIGVycm9yIHdoZW4gcmVwbGljYS1wcmVzZXJ2ZS1jb21taXQtb3JkZXIgd2FzIGVuYWJsZWQuIFRvIHByZXNlcnZlIGNvbW1pdCBvcmRlciwgdGhlIGxhc3QgdHJhbnNhY3Rpb24gZXhlY3V0ZWQgYnkgdGhpcyB0aHJlYWQgaGFzIG5vdCBiZWVuIGNvbW1pdHRlZC4gV2hlbiByZXN0YXJ0aW5nIHRoZSByZXBsaWNhIGFmdGVyIGZpeGluZyBhbnkgZmFpbGVkIHRocmVhZHMsIHlvdSBzaG91bGQgZml4IHRoaXMgd29ya2VyIGFzIHdlbGwuAHJlcGxpY2FfcHJlc2VydmVfY29tbWl0X29yZGVyIGlzIG5vdCBzdXBwb3J0ZWQgJXMuAFRoZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGluIG9mZmxpbmUgbW9kZQBCaW5hcnkgZ2VvbWV0cnkgZnVuY3Rpb24gJXMgZ2l2ZW4gdHdvIGdlb21ldHJpZXMgb2YgZGlmZmVyZW50IHNyaWRzOiAldSBhbmQgJXUsIHdoaWNoIHNob3VsZCBoYXZlIGJlZW4gaWRlbnRpY2FsLgBDYWxsaW5nIGdlb21ldHJ5IGZ1bmN0aW9uICVzIHdpdGggdW5zdXBwb3J0ZWQgdHlwZXMgb2YgYXJndW1lbnRzLgBVbmtub3duIEdJUyBlcnJvciBvY2N1cnJlZCBpbiBmdW5jdGlvbiAlcy4AVW5rbm93biBleGNlcHRpb24gY2F1Z2h0IGluIEdJUyBmdW5jdGlvbiAlcy4ASW52YWxpZCBHSVMgZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlcy4AVGhlIGdlb21ldHJ5IGhhcyBubyBkYXRhIGluIGZ1bmN0aW9uICVzLgBVbmFibGUgdG8gY2FsY3VsYXRlIGNlbnRyb2lkIGJlY2F1c2UgZ2VvbWV0cnkgaXMgZW1wdHkgaW4gZnVuY3Rpb24gJXMuAEdlb21ldHJ5IG92ZXJsYXkgY2FsY3VsYXRpb24gZXJyb3I6IGdlb21ldHJ5IGRhdGEgaXMgaW52YWxpZCBpbiBmdW5jdGlvbiAlcy4AR2VvbWV0cnkgdHVybiBpbmZvIGNhbGN1bGF0aW9uIGVycm9yOiBnZW9tZXRyeSBkYXRhIGlzIGludmFsaWQgaW4gZnVuY3Rpb24gJXMuAEFuYWx5c2lzIHByb2NlZHVyZXMgb2YgaW50ZXJzZWN0aW9uIHBvaW50cyBpbnRlcnJ1cHRlZCB1bmV4cGVjdGVkbHkgaW4gZnVuY3Rpb24gJXMuAFVua25vd24gZXhjZXB0aW9uIHRocm93biBpbiBmdW5jdGlvbiAlcy4ATWVtb3J5IGFsbG9jYXRpb24gZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAERvbWFpbiBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4ATGVuZ3RoIGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBJbnZhbGlkIGFyZ3VtZW50IGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBPdXQgb2YgcmFuZ2UgZXJyb3I6ICUtLjI1NnMgaW4gZnVuY3Rpb24gJXMuAE92ZXJmbG93IGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBSYW5nZSBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AVW5kZXJmbG93IGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBMb2dpYyBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AUnVudGltZSBlcnJvcjogJS0uMjU2cyBpbiBmdW5jdGlvbiAlcy4AVW5rbm93biBleGNlcHRpb246ICUtLjM4NHMgaW4gZnVuY3Rpb24gJXMuAEdlb21ldHJ5IGJ5dGUgc3RyaW5nIG11c3QgYmUgbGl0dGxlIGVuZGlhbi4AVGhlIHBhc3N3b3JkIHByb3ZpZGVkIGZvciB0aGUgcmVwbGljYXRpb24gdXNlciBleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiAzMiBjaGFyYWN0ZXJzAEluY29ycmVjdCB1c2VyLWxldmVsIGxvY2sgbmFtZSAnJS0uMTkycycuIFRoZSBuYW1lIGlzIGVtcHR5LCBOVUxMLCBvciBjYW4gbm90IGJlIGV4cHJlc3NlZCBpbiB0aGUgY3VycmVudCBjaGFyYWN0ZXItc2V0LgBEZWFkbG9jayBmb3VuZCB3aGVuIHRyeWluZyB0byBnZXQgdXNlci1sZXZlbCBsb2NrOyB0cnkgcm9sbGluZyBiYWNrIHRyYW5zYWN0aW9uL3JlbGVhc2luZyBsb2NrcyBhbmQgcmVzdGFydGluZyBsb2NrIGFjcXVpc2l0aW9uLgBSRVBMQUNFIGNhbm5vdCBiZSBleGVjdXRlZCBhcyBpdCByZXF1aXJlcyBkZWxldGluZyByb3dzIHRoYXQgYXJlIG5vdCBpbiB0aGUgdmlldwBEbyBub3Qgc3VwcG9ydCBvbmxpbmUgb3BlcmF0aW9uIG9uIHRhYmxlIHdpdGggR0lTIGluZGV4AFVzZXIgdmFyaWFibGUgbmFtZSAnJS0uMTAwcycgaXMgaWxsZWdhbABDYW5ub3QgJXMgd2hlbiBHVElEX01PREUgPSBPRkYuAENhbm5vdCAlcyBmcm9tIGEgcmVwbGljYSB0aHJlYWQuAEluY29ycmVjdCB0eXBlIGZvciBhcmd1bWVudCAlcyBpbiBmdW5jdGlvbiAlcy4ARXhwcmVzc2lvbiAjJXUgb2YgT1JERVIgQlkgY2xhdXNlIGlzIG5vdCBpbiBTRUxFQ1QgbGlzdCwgcmVmZXJlbmNlcyBjb2x1bW4gJyUtLjE5MnMnIHdoaWNoIGlzIG5vdCBpbiBTRUxFQ1QgbGlzdDsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCAlcwBFeHByZXNzaW9uICMldSBvZiBPUkRFUiBCWSBjbGF1c2UgaXMgbm90IGluIFNFTEVDVCBsaXN0LCBjb250YWlucyBhZ2dyZWdhdGUgZnVuY3Rpb247IHRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJXMAU3VwcGxpZWQgZmlsdGVyIGxpc3QgY29udGFpbnMgYSB2YWx1ZSB3aGljaCBpcyBub3QgaW4gdGhlIHJlcXVpcmVkIGZvcm1hdCAnZGJfcGF0dGVybi50YWJsZV9wYXR0ZXJuJwBPSyBwYWNrZXQgdG9vIGxhcmdlAEludmFsaWQgSlNPTiBkYXRhIHByb3ZpZGVkIHRvIGZ1bmN0aW9uICVzOiAlcwBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogTWlzc2luZyByZXF1aXJlZCBtZW1iZXIgJyVzJwBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogTWVtYmVyICclcycgbXVzdCBiZSBvZiB0eXBlICclcycASW52YWxpZCBHZW9KU09OIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXMAVW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNvb3JkaW5hdGUgZGltZW5zaW9ucyBpbiBmdW5jdGlvbiAlczogRm91bmQgJXUsIGV4cGVjdGVkICV1AFJlcGxpY2EgY2hhbm5lbCAnJXMnIGRvZXMgbm90IGV4aXN0LgBBIHJlcGxpY2EgY2hhbm5lbCAnJXMnIGFscmVhZHkgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gaG9zdCBhbmQgcG9ydCBjb21iaW5hdGlvbi4AQ291bGRuJ3QgY3JlYXRlIGNoYW5uZWw6IENoYW5uZWwgbmFtZSBpcyBlaXRoZXIgaW52YWxpZCBvciB0b28gbG9uZy4AVG8gaGF2ZSBtdWx0aXBsZSBjaGFubmVscywgcmVwb3NpdG9yeSBjYW5ub3QgYmUgb2YgdHlwZSBGSUxFOyBQbGVhc2UgY2hlY2sgdGhlIHJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiBhbmQgY29udmVydCB0aGVtIHRvIFRBQkxFLgBDYW5ub3QgZGVsZXRlIHJlcGxpY2EgaW5mbyBvYmplY3RzIGZvciBjaGFubmVsICclcycuAE11bHRpcGxlIGNoYW5uZWxzIGV4aXN0IG9uIHRoZSByZXBsaWNhLiBQbGVhc2UgcHJvdmlkZSBjaGFubmVsIG5hbWUgYXMgYW4gYXJndW1lbnQuAE1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9uIGNoYW5uZWxzIGFsbG93ZWQgZXhjZWVkZWQuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgd2l0aCBydW5uaW5nIHJlcGxpY2F0aW9uIHRocmVhZHM7IHJ1biBTVE9QIFJFUExJQ0EgRk9SIENIQU5ORUwgJyVzJyBmaXJzdABUaGlzIG9wZXJhdGlvbiByZXF1aXJlcyBydW5uaW5nIHJlcGxpY2F0aW9uIHRocmVhZHM7IGNvbmZpZ3VyZSByZXBsaWNhIGFuZCBydW4gU1RBUlQgUkVQTElDQSBGT1IgQ0hBTk5FTCAnJXMnAFJlcGxpY2F0aW9uIHRocmVhZChzKSBmb3IgY2hhbm5lbCAnJXMnIGFyZSBhbHJlYWR5IHJ1bm5uaW5nLgBSZXBsaWNhdGlvbiB0aHJlYWQocykgZm9yIGNoYW5uZWwgJyVzJyBhcmUgYWxyZWFkeSBzdG9wcGVkLgBUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcGVyZm9ybWVkIHdpdGggYSBydW5uaW5nIHJlcGxpY2Egc3FsIHRocmVhZDsgcnVuIFNUT1AgUkVQTElDQSBTUUxfVEhSRUFEIEZPUiBDSEFOTkVMICclcycgZmlyc3QuAFdoZW4gc3FsX3JlcGxpY2Ffc2tpcF9jb3VudGVyID4gMCwgaXQgaXMgbm90IGFsbG93ZWQgdG8gc3RhcnQgbW9yZSB0aGFuIG9uZSBTUUwgdGhyZWFkIGJ5IHVzaW5nICdTVEFSVCBSRVBMSUNBIFtTUUxfVEhSRUFEXScuIFZhbHVlIG9mIHNxbF9yZXBsaWNhX3NraXBfY291bnRlciBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBTUUwgdGhyZWFkIGF0IGEgdGltZS4gUGxlYXNlIHVzZSAnU1RBUlQgUkVQTElDQSBbU1FMX1RIUkVBRF0gRk9SIENIQU5ORUwnIHRvIHN0YXJ0IHRoZSBTUUwgdGhyZWFkIHdoaWNoIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIuAEV4cHJlc3Npb24gIyV1IG9mICVzIGlzIG5vdCBpbiBHUk9VUCBCWSBjbGF1c2UgYW5kIGNvbnRhaW5zIG5vbmFnZ3JlZ2F0ZWQgY29sdW1uICclLS4xOTJzJyB3aGljaCBpcyBub3QgZnVuY3Rpb25hbGx5IGRlcGVuZGVudCBvbiBjb2x1bW5zIGluIEdST1VQIEJZIGNsYXVzZTsgdGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCBzcWxfbW9kZT1vbmx5X2Z1bGxfZ3JvdXBfYnkASW4gYWdncmVnYXRlZCBxdWVyeSB3aXRob3V0IEdST1VQIEJZLCBleHByZXNzaW9uICMldSBvZiAlcyBjb250YWlucyBub25hZ2dyZWdhdGVkIGNvbHVtbiAnJS0uMTkycyc7IHRoaXMgaXMgaW5jb21wYXRpYmxlIHdpdGggc3FsX21vZGU9b25seV9mdWxsX2dyb3VwX2J5AFVwZGF0aW5nICclcycgaXMgZGVwcmVjYXRlZC4gSXQgd2lsbCBiZSBtYWRlIHJlYWQtb25seSBpbiBhIGZ1dHVyZSByZWxlYXNlLgBDaGFuZ2luZyBzcWwgbW9kZSAnJXMnIGlzIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBEUk9QIERBVEFCQVNFIGZhaWxlZDsgc29tZSB0YWJsZXMgbWF5IGhhdmUgYmVlbiBkcm9wcGVkIGJ1dCB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5IHJlbWFpbnMuIFRoZSBHVElEIGhhcyBub3QgYmVlbiBhZGRlZCB0byBHVElEX0VYRUNVVEVEIGFuZCB0aGUgc3RhdGVtZW50IHdhcyBub3Qgd3JpdHRlbiB0byB0aGUgYmluYXJ5IGxvZy4gRml4IHRoaXMgYXMgZm9sbG93czogKDEpIHJlbW92ZSBhbGwgZmlsZXMgZnJvbSB0aGUgZGF0YWJhc2UgZGlyZWN0b3J5ICUtLjE5MnM7ICgyKSBTRVQgR1RJRF9ORVhUPSclLS4xOTJzJzsgKDMpIERST1AgREFUQUJBU0UgYCUtLjE5MnNgLgBUaGUgc2VydmVyIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IHRvIGJlIGFuIGFjdGl2ZSBtZW1iZXIgb2YgdGhlIGdyb3VwLiBQbGVhc2Ugc2VlIG1vcmUgZGV0YWlscyBvbiBlcnJvciBsb2cuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgZ3JvdXAgaXMgYWxyZWFkeSBydW5uaW5nLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgYXMgdGhlIGFwcGxpZXIgbW9kdWxlIGZhaWxlZCB0byBzdGFydC4AVGhlIFNUT1AgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogVGhlIGFwcGxpZXIgdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwgd2hpbGUgaXQgd2FzIGJ1c3kuIFRoZSBhcHBsaWVyIHRocmVhZCB3aWxsIHN0b3Agb25jZSB0aGUgY3VycmVudCB0YXNrIGlzIGNvbXBsZXRlLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgYXMgdGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBncm91cCBjb21tdW5pY2F0aW9uIGxheWVyLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgYXMgdGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gam9pbmluZyB0aGUgY29tbXVuaWNhdGlvbiBncm91cC4AVGhlIHRhYmxlIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSByZXF1aXJlbWVudHMgYnkgYW4gZXh0ZXJuYWwgcGx1Z2luLgBDYW5ub3QgY2hhbmdlIHRoZSB2YWx1ZSBvZiB2YXJpYWJsZSAlcyB3aXRob3V0IGJpbmFyeSBsb2cgZm9ybWF0IGFzIFJPVy4ARXJyb3Igb24gb2JzZXJ2ZXIgd2hpbGUgcnVubmluZyByZXBsaWNhdGlvbiBob29rICclcycuAFBsdWdpbiBpbnN0cnVjdGVkIHRoZSBzZXJ2ZXIgdG8gcm9sbGJhY2sgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uAEV4cHJlc3Npb24gb2YgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNvbnRhaW5zIGEgZGlzYWxsb3dlZCBmdW5jdGlvbi4ASU5QTEFDRSBBREQgb3IgRFJPUCBvZiB2aXJ0dWFsIGNvbHVtbnMgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgQUxURVIgVEFCTEUgYWN0aW9ucwBDYW5ub3QgZGVmaW5lIGZvcmVpZ24ga2V5IHdpdGggJXMgY2xhdXNlIG9uIGEgZ2VuZXJhdGVkIGNvbHVtbi4AVGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGluIHRhYmxlICclcycgaXMgbm90IGFsbG93ZWQuACclcycgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2VuZXJhdGVkIGNvbHVtbnMuAEdlbmVyYXRlZCBjb2x1bW4gY2FuIHJlZmVyIG9ubHkgdG8gZ2VuZXJhdGVkIGNvbHVtbnMgZGVmaW5lZCBwcmlvciB0byBpdC4AQ29sdW1uICclcycgaGFzIGEgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRlbmN5LgBHZW5lcmF0ZWQgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGF1dG8taW5jcmVtZW50IGNvbHVtbi4AVGhlICclLS42NHMnIGZlYXR1cmUgaXMgbm90IGF2YWlsYWJsZTsgeW91IG5lZWQgdG8gcmVtb3ZlICclLS42NHMnIG9yIHVzZSBNeVNRTCBidWlsdCB3aXRoICclLS42NHMnAFNFVCBAQEdMT0JBTC5HVElEX01PREUgPSAlLS42NHMgaXMgbm90IGFsbG93ZWQgYmVjYXVzZSAlLS4zODRzLgBUaGUgcmVwbGljYXRpb24gcmVjZWl2ZXIgdGhyZWFkJS0uMTkycyBjYW5ub3Qgc3RhcnQgaW4gQVVUT19QT1NJVElPTiBtb2RlOiB0aGlzIHNlcnZlciB1c2VzIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRi4AQ2Fubm90IHJlcGxpY2F0ZSBhbm9ueW1vdXMgdHJhbnNhY3Rpb24gd2hlbiBBVVRPX1BPU0lUSU9OID0gMSwgYXQgZmlsZSAlLjUxMnMsIHBvc2l0aW9uICVsbGQuAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04sIGF0IGZpbGUgJS41MTJzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIEdUSUQtdHJhbnNhY3Rpb24gd2hlbiBAQEdMT0JBTC5HVElEX01PREUgPSBPRkYsIGF0IGZpbGUgJS41MTJzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3Qgc2V0IEVORk9SQ0VfR1RJRF9DT05TSVNURU5DWSA9IE9OIGJlY2F1c2UgdGhlcmUgYXJlIG9uZ29pbmcgdHJhbnNhY3Rpb25zIHRoYXQgdmlvbGF0ZSBHVElEIGNvbnNpc3RlbmN5LgBUaGVyZSBhcmUgb25nb2luZyB0cmFuc2FjdGlvbnMgdGhhdCB2aW9sYXRlIEdUSUQgY29uc2lzdGVuY3kuAE9kbW93YSBkb3N0xJlwdSBkbGEgdcW8eXRrb3duaWthICclLS40OHMnQCclLS42NHMnLiBLb250byB6YWJsb2tvd2FuZS4ASW5jb3JyZWN0IHRhYmxlc3BhY2UgbmFtZSBgJS0uMTkyc2AAVGFibGVzcGFjZSBgJS0uMTkyc2AgaXMgbm90IGVtcHR5LgBJbmNvcnJlY3QgRmlsZSBOYW1lICclcycuAEluY29uc2lzdGVudCBpbnRlcnNlY3Rpb24gcG9pbnRzLgBPcHRpbWl6ZXIgaGludCBzeW50YXggZXJyb3IAVW5zdXBwb3J0ZWQgTUFYX0VYRUNVVElPTl9USU1FAE1BWF9FWEVDVVRJT05fVElNRSBoaW50IGlzIHN1cHBvcnRlZCBieSB0b3AtbGV2ZWwgc3RhbmRhbG9uZSBTRUxFQ1Qgc3RhdGVtZW50cyBvbmx5AEhpbnQgJXMgaXMgaWdub3JlZCBhcyBjb25mbGljdGluZy9kdXBsaWNhdGVkAFF1ZXJ5IGJsb2NrIG5hbWUgJXMgaXMgbm90IGZvdW5kIGZvciAlcyBoaW50AFVucmVzb2x2ZWQgbmFtZSAlcyBmb3IgJXMgaGludABQbGVhc2UgZG8gbm90IG1vZGlmeSB0aGUgJXMgdGFibGUuIFRoaXMgaXMgYSBteXNxbCBpbnRlcm5hbCBzeXN0ZW0gdGFibGUgdG8gc3RvcmUgR1RJRHMgZm9yIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMuIE1vZGlmeWluZyBpdCBjYW4gbGVhZCB0byBhbiBpbmNvbnNpc3RlbnQgR1RJRCBzdGF0ZS4AQ29tbWFuZCBub3Qgc3VwcG9ydGVkIGJ5IHBsdWdnYWJsZSBwcm90b2NvbHMASW5jb3JyZWN0IGxvY2tpbmcgc2VydmljZSBsb2NrIG5hbWUgJyUtLjE5MnMnLgBEZWFkbG9jayBmb3VuZCB3aGVuIHRyeWluZyB0byBnZXQgbG9ja2luZyBzZXJ2aWNlIGxvY2s7IHRyeSByZWxlYXNpbmcgbG9ja3MgYW5kIHJlc3RhcnRpbmcgbG9jayBhY3F1aXNpdGlvbi4AU2VydmljZSBsb2NrIHdhaXQgdGltZW91dCBleGNlZWRlZC4AUGFyYW1ldGVyICVzIGV4Y2VlZHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBvaW50cyBpbiBhIGdlb21ldHJ5ICglbHUpIGluIGZ1bmN0aW9uICVzLgAnTk9fWkVST19EQVRFJywgJ05PX1pFUk9fSU5fREFURScgYW5kICdFUlJPUl9GT1JfRElWSVNJT05fQllfWkVSTycgc3FsIG1vZGVzIHNob3VsZCBiZSB1c2VkIHdpdGggc3RyaWN0IG1vZGUuIFRoZXkgd2lsbCBiZSBtZXJnZWQgd2l0aCBzdHJpY3QgbW9kZSBpbiBhIGZ1dHVyZSByZWxlYXNlLgBWZXJzaW9uIHRva2VuIG1pc21hdGNoIGZvciAlLipzLiBDb3JyZWN0IHZhbHVlICUuKnMAVmVyc2lvbiB0b2tlbiAlLipzIG5vdCBmb3VuZC4AVmFyaWFibGUgJS0uMTkycyBjYW5ub3QgYmUgY2hhbmdlZCBieSBhIGNsaWVudCB0aGF0IG93bnMgYSBHVElELiBUaGUgY2xpZW50IG93bnMgJXMuIE93bmVyc2hpcCBpcyByZWxlYXNlZCBvbiBDT01NSVQgb3IgUk9MTEJBQ0suACUtLjE5MnMgY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBjaGFubmVsICclLS4xOTJzJy4ASW52YWxpZCBKU09OIHRleHQ6ICIlcyIgYXQgcG9zaXRpb24gJXUgaW4gdmFsdWUgZm9yIGNvbHVtbiAnJS0uMjAwcycgYXQgcm93ICVsZC4ASW52YWxpZCBKU09OIHRleHQgaW4gYXJndW1lbnQgJXUgdG8gZnVuY3Rpb24gJXM6ICIlcyIgYXQgcG9zaXRpb24gJXUuJS0uMHMAVGhlIEpTT04gYmluYXJ5IHZhbHVlIGNvbnRhaW5zIGludmFsaWQgZGF0YS4ASW52YWxpZCBKU09OIHBhdGggZXhwcmVzc2lvbi4gVGhlIGVycm9yIGlzIGFyb3VuZCBjaGFyYWN0ZXIgcG9zaXRpb24gJXUuJS0uMjAwcwBDYW5ub3QgY3JlYXRlIGEgSlNPTiB2YWx1ZSBmcm9tIGEgc3RyaW5nIHdpdGggQ0hBUkFDVEVSIFNFVCAnJXMnLgBJbnZhbGlkIEpTT04gY2hhcmFjdGVyIGRhdGEgcHJvdmlkZWQgdG8gZnVuY3Rpb24gJXM6ICclcyc7IHV0ZjggaXMgcmVxdWlyZWQuAEludmFsaWQgZGF0YSB0eXBlIGZvciBKU09OIGRhdGEgaW4gYXJndW1lbnQgJXUgdG8gZnVuY3Rpb24gJXM7IGEgSlNPTiBzdHJpbmcgb3IgSlNPTiB0eXBlIGlzIHJlcXVpcmVkLgBDYW5ub3QgQ0FTVCB2YWx1ZSB0byBKU09OLgBBIHBhdGggZXhwcmVzc2lvbiBtdXN0IGJlIGVuY29kZWQgaW4gdGhlIHV0ZjggY2hhcmFjdGVyIHNldC4gVGhlIHBhdGggZXhwcmVzc2lvbiAnJS0uMjAwcycgaXMgZW5jb2RlZCBpbiBjaGFyYWN0ZXIgc2V0ICclLS4yMDBzJy4ASW4gdGhpcyBzaXR1YXRpb24sIHBhdGggZXhwcmVzc2lvbnMgbWF5IG5vdCBjb250YWluIHRoZSAqIGFuZCAqKiB0b2tlbnMgb3IgYW4gYXJyYXkgcmFuZ2UuAFRoZSBKU09OIHZhbHVlIGlzIHRvbyBiaWcgdG8gYmUgc3RvcmVkIGluIGEgSlNPTiBjb2x1bW4uAFRoZSBKU09OIG9iamVjdCBjb250YWlucyBhIGtleSBuYW1lIHRoYXQgaXMgdG9vIGxvbmcuAEpTT04gY29sdW1uICclLS4xOTJzJyBzdXBwb3J0cyBpbmRleGluZyBvbmx5IHZpYSBnZW5lcmF0ZWQgY29sdW1ucyBvbiBhIHNwZWNpZmllZCBKU09OIHBhdGguAFRoZSBwYXRoIGV4cHJlc3Npb24gJyQnIGlzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dC4AVGhlIG9uZU9yQWxsIGFyZ3VtZW50IHRvICVzIG1heSB0YWtlIHRoZXNlIHZhbHVlczogJ29uZScgb3IgJ2FsbCcuAE91dCBvZiByYW5nZSBKU09OIHZhbHVlIGZvciBDQVNUIHRvICVzJS0uMHMgZnJvbSBjb2x1bW4gJXMgYXQgcm93ICVsZABJbnZhbGlkIEpTT04gdmFsdWUgZm9yIENBU1QgdG8gJXMlLS4wcyBmcm9tIGNvbHVtbiAlcyBhdCByb3cgJWxkAFRoZSBKU09OIGRvY3VtZW50IGV4Y2VlZHMgdGhlIG1heGltdW0gZGVwdGguAEpTT04gZG9jdW1lbnRzIG1heSBub3QgY29udGFpbiBOVUxMIG1lbWJlciBuYW1lcy4AQ29ubmVjdGlvbnMgdXNpbmcgaW5zZWN1cmUgdHJhbnNwb3J0IGFyZSBwcm9oaWJpdGVkIHdoaWxlIC0tcmVxdWlyZV9zZWN1cmVfdHJhbnNwb3J0PU9OLgBObyBzZWN1cmUgdHJhbnNwb3J0cyAoU1NMIG9yIFNoYXJlZCBNZW1vcnkpIGFyZSBjb25maWd1cmVkLCB1bmFibGUgdG8gc2V0IC0tcmVxdWlyZV9zZWN1cmVfdHJhbnNwb3J0PU9OLgBTdG9yYWdlIGVuZ2luZSAlcyBpcyBkaXNhYmxlZCAoVGFibGUgY3JlYXRpb24gaXMgZGlzYWxsb3dlZCkuAEF1dGhvcml6YXRpb24gSUQgJXMgZG9lcyBub3QgZXhpc3QuAEF1dGhvcml6YXRpb24gSUQgJXMgYWxyZWFkeSBleGlzdHMuAEFib3J0ZWQgYnkgQXVkaXQgQVBJICgnJS0uNDhzJzslZCkuAEEgcGF0aCBleHByZXNzaW9uIGlzIG5vdCBhIHBhdGggdG8gYSBjZWxsIGluIGFuIGFycmF5LgBBbm90aGVyIGJ1ZmZlciBwb29sIHJlc2l6ZSBpcyBhbHJlYWR5IGluIHByb2dyZXNzLgBUaGUgJyVzJyBmZWF0dXJlIGlzIGRpc2FibGVkOyBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yICclcycAU2VydmVyIGlzbid0IGF2YWlsYWJsZQBTZXNzaW9uIHdhcyBraWxsZWQATWVtb3J5IGNhcGFjaXR5IG9mICVsbHUgYnl0ZXMgZm9yICclcycgZXhjZWVkZWQuICVzAFJhbmdlIG9wdGltaXphdGlvbiB3YXMgbm90IGRvbmUgZm9yIHRoaXMgcXVlcnkuAFBhcnRpdGlvbmluZyB1cGdyYWRlIHJlcXVpcmVkLiBQbGVhc2UgZHVtcC9yZWxvYWQgdG8gZml4IGl0IG9yIGRvOiBBTFRFUiBUQUJMRSBgJS0uMTkyc2AuYCUtLjE5MnNgIFVQR1JBREUgUEFSVElUSU9OSU5HAFRoZSBjbGllbnQgaG9sZHMgb3duZXJzaGlwIG9mIHRoZSBHVElEICVzLiBUaGVyZWZvcmUsIFdBSVRfRk9SX0VYRUNVVEVEX0dUSURfU0VUIGNhbm5vdCB3YWl0IGZvciB0aGlzIEdUSUQuAENhbm5vdCBhZGQgZm9yZWlnbiBrZXkgb24gdGhlIGJhc2UgY29sdW1uIG9mIGluZGV4ZWQgdmlydHVhbCBjb2x1bW4uAENhbm5vdCBjcmVhdGUgaW5kZXggb24gdmlydHVhbCBjb2x1bW4gd2hvc2UgYmFzZSBjb2x1bW4gaGFzIGZvcmVpZ24gY29uc3RyYWludC4AUGxlYXNlIGRvIG5vdCBtb2RpZnkgdGhlICVzIHRhYmxlIHdpdGggYW4gWEEgdHJhbnNhY3Rpb24uIFRoaXMgaXMgYW4gaW50ZXJuYWwgc3lzdGVtIHRhYmxlIHVzZWQgdG8gc3RvcmUgR1RJRHMgZm9yIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMuIEFsdGhvdWdoIG1vZGlmeWluZyBpdCBjYW4gbGVhZCB0byBhbiBpbmNvbnNpc3RlbnQgR1RJRCBzdGF0ZSwgaWYgbmVjZXNzYXJ5IHlvdSBjYW4gbW9kaWZ5IGl0IHdpdGggYSBub24tWEEgdHJhbnNhY3Rpb24uAExvY2sgYWNxdWlzaXRpb24gcmVmdXNlZCBieSBzdG9yYWdlIGVuZ2luZS4AQUREIENPTFVNTiBjb2wuLi5WSVJUVUFMLCBBREQgSU5ERVgoY29sKQBNYXN0ZXIga2V5IHJvdGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgc3RvcmFnZSBlbmdpbmUuAEVuY3J5cHRpb24ga2V5IHJvdGF0aW9uIGVycm9yIHJlcG9ydGVkIGJ5IFNFOiAlcwBXcml0ZSB0byBiaW5sb2cgZmFpbGVkLiBIb3dldmVyLCBtYXN0ZXIga2V5IHJvdGF0aW9uIGhhcyBiZWVuIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuAFN0b3JhZ2UgZW5naW5lIGlzIG5vdCBhdmFpbGFibGUuAFRoaXMgdGFibGVzcGFjZSBjYW4ndCBiZSBlbmNyeXB0ZWQuAEludmFsaWQgZW5jcnlwdGlvbiBvcHRpb24uAENhbid0IGZpbmQgbWFzdGVyIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpbiB0aGUgc2VydmVyIGxvZyBpZiBhIGtleXJpbmcgaXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZCBzdWNjZXNzZnVsbHkuAFBhcnNlciBiYWlsZWQgb3V0IGZvciB0aGlzIHF1ZXJ5LgBDYW5ub3QgYWx0ZXIgZW5jcnlwdGlvbiBhdHRyaWJ1dGUgYnkgaW5wbGFjZSBhbGdvcml0aG0uAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2UgdW5kZXJseWluZyBrZXlyaW5nIHNlcnZpY2UgcmV0dXJuZWQgYW4gZXJyb3IuIFBsZWFzZSBjaGVjayBpZiBhIGtleXJpbmcgaXMgaW5zdGFsbGVkIGFuZCB0aGF0IHByb3ZpZGVkIGFyZ3VtZW50cyBhcmUgdmFsaWQgZm9yIHRoZSBrZXlyaW5nIHlvdSBhcmUgdXNpbmcuAEl0IHNlZW1zIHRoYXQgeW91ciBkYiBzY2hlbWEgaXMgb2xkLiBUaGUgJXMgY29sdW1uIGlzIDc3IGNoYXJhY3RlcnMgbG9uZyBhbmQgc2hvdWxkIGJlIDkzIGNoYXJhY3RlcnMgbG9uZy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBSRVNFVCBCSU5BUlkgTE9HUyBBTkQgR1RJRFMgaXMgbm90IGFsbG93ZWQgYmVjYXVzZSAlLS4zODRzLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgc2luY2UgdGhlIGdyb3VwIGFscmVhZHkgaGFzIDkgbWVtYmVycy4AQ2Fubm90IGFkZCBmb3JlaWduIGtleSBvbiB0aGUgYmFzZSBjb2x1bW4gb2Ygc3RvcmVkIGNvbHVtbi4gAENhbm5vdCBjb21wbGV0ZSB0aGUgb3BlcmF0aW9uIGJlY2F1c2UgdGFibGUgaXMgcmVmZXJlbmNlZCBieSBhbm90aGVyIGNvbm5lY3Rpb24uAFRoZSBwYXJ0aXRpb24gZW5naW5lLCB1c2VkIGJ5IHRhYmxlICclLS4xOTJzLiUtLjE5MnMnLCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSBuYXRpdmUgcGFydGl0aW9uaW5nIGluc3RlYWQuACUuMTkycyhnZW9tZXRyeSkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSBzdF9zcmlkKGdlb21ldHJ5LCAwKSBpbiBhIGZ1dHVyZSB2ZXJzaW9uLiBVc2UgJS4xOTJzKHN0X2Fzd2tiKGdlb21ldHJ5KSwgMCkgaW5zdGVhZC4AJS4xOTJzKGdlb21ldHJ5LCBzcmlkKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlcGxhY2VkIGJ5IHN0X3NyaWQoZ2VvbWV0cnksIHNyaWQpIGluIGEgZnV0dXJlIHZlcnNpb24uIFVzZSAlLjE5MnMoc3RfYXN3a2IoZ2VvbWV0cnkpLCBzcmlkKSBpbnN0ZWFkLgBUaGUgcmVzb3VyY2UgbWFuYWdlciBpcyBub3QgYWJsZSB0byBjb21taXQgdGhlIHRyYW5zYWN0aW9uIGJyYW5jaCBhdCB0aGlzIHRpbWUuIFBsZWFzZSByZXRyeSBsYXRlci4ARnVuY3Rpb24gJXMgZmFpbGVkIGR1ZSB0bzogJXMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCBpcyBiZWluZyB1c2VkIGluc2lkZSBhIFhBIHRyYW5zYWN0aW9uLiBDb25jdXJyZW50IFhBIHRyYW5zYWN0aW9ucyBtYXkgZGVhZGxvY2sgb24gcmVwbGljYXMgd2hlbiByZXBsaWNhdGVkIHVzaW5nIHN0YXRlbWVudHMuACVzIFVERiBmYWlsZWQ7ICVzAENhbiBub3QgcGVyZm9ybSBrZXlyaW5nIG1pZ3JhdGlvbiA6ICVzAEFjY2VzcyBkZW5pZWQ7IHlvdSBuZWVkICUtLjEyOHMgcHJpdmlsZWdlcyBmb3IgdGhpcyBvcGVyYXRpb24AS2V5cmluZyBtaWdyYXRpb24gJXMuAEZhaWxlZCB0byBvcGVuIHRoZSAlcyBmaWx0ZXIgdGFibGVzLgBGYWlsZWQgdG8gb3BlbiAnJXMuJXMnICVzIHRhYmxlLgBObyBrZXlyaW5nIHBsdWdpbiBpbnN0YWxsZWQuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGhhcyBub3QgYmVlbiBzZXQ7IGl0IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuIFVzZSBhdWRpdF9sb2dfZW5jcnlwdGlvbl9wYXNzd29yZF9nZXQgdG8gb2J0YWluIHRoZSBwYXNzd29yZCBvciBhdWRpdF9sb2dfZW5jcnlwdGlvbl9wYXNzd29yZF9zZXQgdG8gc2V0IGEgbmV3IG9uZS4AQ291bGQgbm90IGNyZWF0ZSBBRVMga2V5LiBPcGVuU1NMJ3MgRVZQX0J5dGVzVG9LZXkgZnVuY3Rpb24gZmFpbGVkLgBBdWRpdCBsb2cgZW5jcnlwdGlvbiBwYXNzd29yZCBjYW5ub3QgYmUgZmV0Y2hlZCBmcm9tIHRoZSBrZXlyaW5nLiBQYXNzd29yZCB1c2VkIHNvIGZhciBpcyB1c2VkIGZvciBlbmNyeXB0aW9uLgBBdWRpdCBMb2cgZmlsdGVyaW5nIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyVzJ0AnJXMnLiBTVVBFUiBwcml2aWxlZ2Ugb3IgQVVESVRfQURNSU4gcm9sZSBuZWVkZWQgdG8gcGVyZm9ybSBvcGVyYXRpb24AU1VQRVIgcHJpdmlsZWdlIG9yIEFVRElUX0FETUlOIHJvbGUgcmVxdWlyZWQgZm9yICclcydAJyVzJyB1c2VyLgBDb3VsZCBub3QgcmVpbml0aWFsaXplIGF1ZGl0IGxvZyBmaWx0ZXJzLgBJbnZhbGlkIGFyZ3VtZW50IHR5cGUASW52YWxpZCBhcmd1bWVudCBjb3VudABhdWRpdF9sb2cgcGx1Z2luIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgdXNpbmcgSU5TVEFMTCBQTFVHSU4gc3ludGF4LgBJbnZhbGlkICJtYXhfYXJyYXlfbGVuZ3RoIiBhcmd1bWVudCB0eXBlLgBJbnZhbGlkICJtYXhfYXJyYXlfbGVuZ3RoIiBhcmd1bWVudCB2YWx1ZS4AJXMARmlsdGVyIG5hbWUgY2Fubm90IGJlIGVtcHR5LgBVc2VyIGNhbm5vdCBiZSBlbXB0eS4AU3BlY2lmaWVkIGZpbHRlciBoYXMgbm90IGJlZW4gZm91bmQuAEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdXNlciBuYW1lIG11c3QgYmUgYWxwaGFudW1lcmljLgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgdXNlciBuYW1lLgBJbnZhbGlkIGNoYXJhY3RlciBpbiB0aGUgaG9zdCBuYW1lLgBXaXRoIHRoZSBNQVhEQiBTUUwgbW9kZSBlbmFibGVkLCBUSU1FU1RBTVAgaXMgaWRlbnRpY2FsIHdpdGggREFURVRJTUUuIFRoZSBNQVhEQiBTUUwgbW9kZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGRpc2FibGUgdGhlIE1BWERCIFNRTCBtb2RlIGFuZCB1c2UgREFURVRJTUUgaW5zdGVhZC4AVGhlIHVzZSBvZiByZXBsaWNhdGlvbiBmaWx0ZXJzIHdpdGggWEEgdHJhbnNhY3Rpb25zIGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBjYW4gbGVhZCB0byBhbiB1bmRlZmluZWQgc3RhdGUgaW4gdGhlIHJlcGxpY2EuAENvdWxkIG5vdCBvcGVuIGZpbGUgJyVzJyBmb3IgZXJyb3IgbG9nZ2luZyVzJXMAR3JvdXBpbmcgb24gdGVtcG9yYWwgaXMgbm9uLWRldGVybWluaXN0aWMgZm9yIHRpbWV6b25lcyBoYXZpbmcgRFNULiBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIHRvIFVUQyBmb3IgdGhpcyBxdWVyeS4AQ2FuJ3Qgc3RhcnQgc2VydmVyIDogTmFtZWQgUGlwZSAiJXMiIGFscmVhZHkgaW4gdXNlLgBUaGUgc2l6ZSBvZiB3cml0ZXNldCBkYXRhIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBleGNlZWRzIGEgbGltaXQgaW1wb3NlZCBieSBhbiBleHRlcm5hbCBjb21wb25lbnQuIElmIHVzaW5nIEdyb3VwIFJlcGxpY2F0aW9uIGNoZWNrICdncm91cF9yZXBsaWNhdGlvbl90cmFuc2FjdGlvbl9zaXplX2xpbWl0Jy4AQWNjZXB0ZWQgYSBjb25uZWN0aW9uIHdpdGggZGVwcmVjYXRlZCBwcm90b2NvbCAnJXMnIGZvciBhY2NvdW50IGAlc2BAYCVzYCBmcm9tIGhvc3QgYCVzYC4gQ2xpZW50IHN1cHBsaWVkIHVzZXJuYW1lIGAlc2AAQSBkZXByZWNhdGVkIFRMUyB2ZXJzaW9uICVzIGlzIGVuYWJsZWQuIFBsZWFzZSB1c2UgVExTdjEuMiBvciBoaWdoZXIuAE9wdGlvbmFsIG5hdGl2ZSB0YWJsZSAnJS0uNjRzJy4nJS0uNjRzJyBoYXMgdGhlIHdyb25nIHN0cnVjdHVyZSBvciBpcyBtaXNzaW5nLgBLREYgbWV0aG9kIG5hbWUgaXMgbm90IHZhbGlkLiBQbGVhc2UgdXNlIGhrZGYgb3IgcGJrZGYyX2htYWMgbWV0aG9kIG5hbWUARm9yIEtERiBtZXRob2QgcGJrZGYyX2htYWMgaXRlcmF0aW9ucyB2YWx1ZSBsZXNzIHRoYW4gMTAwMCBvciBtb3JlIHRoYW4gNjU1MzUgaXMgbm90IGFsbG93ZWQgZHVlIHRvIHNlY3VyaXR5IHJlYXNvbnMuIFBsZWFzZSBwcm92aWRlIGl0ZXJhdGlvbnMgPj0gMTAwMCBhbmQgaXRlcmF0aW9ucyA8IDY1NTM1AEFFUyBrZXkgc2l6ZSBzaG91bGQgYmUgJWQgYnl0ZXMgbGVuZ3RoIG9yIHNlY3VyZSBLREYgbWV0aG9kcyBoa2RmIG9yIHBia2RmMl9obWFjIHNob3VsZCBiZSB1c2VkLCBwbGVhc2UgcHJvdmlkZSBleGFjdCBBRVMga2V5IHNpemUgb3IgdXNlIEtERiBtZXRob2RzIGZvciBiZXR0ZXIgc2VjdXJpdHkuAEtERiBvcHRpb24gc2l6ZSBpcyBpbnZhbGlkLCBwbGVhc2UgcHJvdmlkZSB2YWxpZCBzaXplIDwgJWQgYnl0ZXMgYW5kIG5vdCBOVUxMAENSRUFURSBURU1QT1JBUlkgVEFCTEUgaXMgbm90IGFsbG93ZWQgd2l0aCBST1dfRk9STUFUPUNPTVBSRVNTRUQgb3IgS0VZX0JMT0NLX1NJWkUuAFRoZSBBQ0wgb3BlcmF0aW9uIGZhaWxlZCBkdWUgdG8gdGhlIGZvbGxvd2luZyBlcnJvciBmcm9tIFNFOiBlcnJjb2RlICVkIC0gJS4yNTZzAFRoaXMgc3RvcmFnZSBlbmdpbmUgZG9lcyBub3Qgc3VwcG9ydCB0aGUgJXMgaW5kZXggYWxnb3JpdGhtLCBzdG9yYWdlIGVuZ2luZSBkZWZhdWx0IHdhcyB1c2VkIGluc3RlYWQuAERhdGFiYXNlICclLS4xOTJzJyBkb2Vzbid0IGV4aXN0AFRvbyBtYW55IGVudW1lcmF0aW9uIHZhbHVlcyBmb3IgY29sdW1uICUuMTkycy4AVG9vIGxvbmcgZW51bWVyYXRpb24vc2V0IHZhbHVlIGZvciBjb2x1bW4gJS4xOTJzLgAlcyBkaWN0aW9uYXJ5IG9iamVjdCBpcyBpbnZhbGlkLiAoJS4xOTJzKQBGYWlsZWQgdG8gdXBkYXRlICUuMTkycyBkaWN0aW9uYXJ5IG9iamVjdC4ARGljdGlvbmFyeSBvYmplY3QgaWQgKCVsdSkgZG9lcyBub3QgZXhpc3QuAERpY3Rpb25hcnkgb2JqZWN0IG5hbWUgJyVzJyBpcyBpbnZhbGlkLiAoJS4xOTJzKQBUYWJsZXNwYWNlICUtLjE5MnMgZG9lc24ndCBleGlzdC4AQ29tbWVudCBmb3Igcm91dGluZSAnJS0uNjRzJyBpcyB0b28gbG9uZyAobWF4ID0gJWx1KQBGYWlsZWQgdG8gbG9hZCByb3V0aW5lICclLS42NHMnLgBCaW5hcnkgb3BlcmFuZHMgb2YgYml0d2lzZSBvcGVyYXRvcnMgbXVzdCBiZSBvZiBlcXVhbCBsZW5ndGgAQWdncmVnYXRlIGJpdHdpc2UgZnVuY3Rpb25zIGNhbm5vdCBhY2NlcHQgYXJndW1lbnRzIGxvbmdlciB0aGFuIDUxMSBieXRlczsgY29uc2lkZXIgdXNpbmcgdGhlIFNVQlNUUklORygpIGZ1bmN0aW9uAEhpbnRzIGFyZW4ndCBzdXBwb3J0ZWQgaW4gJXMAJS42NHMgdmFsdWUgaXMgYSBnZW9tZXRyeSBvZiB1bmV4cGVjdGVkIHR5cGUgJS42NHMgaW4gJS42NHMuAENhbid0IHBhcnNlIHRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBvZiBTUklEICV1LgBUaGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb24gZm9yIFNSSUQgJXUgZG9lcyBub3Qgc3BlY2lmeSB0aGUgbWFuZGF0b3J5ICVzIChFUFNHICV1KSBwcm9qZWN0aW9uIHBhcmFtZXRlci4AVGhlcmUncyBubyBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LgBGdW5jdGlvbiAlcyBpcyBvbmx5IGRlZmluZWQgZm9yIENhcnRlc2lhbiBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLCBidXQgb25lIG9mIGl0cyBhcmd1bWVudHMgaXMgaW4gU1JJRCAldSwgd2hpY2ggaXMgbm90IENhcnRlc2lhbi4ARnVuY3Rpb24gJXMgaXMgb25seSBkZWZpbmVkIGZvciBDYXJ0ZXNpYW4gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcywgYnV0IG9uZSBvZiBpdHMgYXJndW1lbnRzIGlzIGluIFNSSUQgJXUsIHdoaWNoIGhhcyBub3QgYmVlbiBkZWZpbmVkLgBBIHByaW1hcnkga2V5IGluZGV4IGNhbm5vdCBiZSBpbnZpc2libGUAVW5rbm93biBhdXRob3JpemF0aW9uIElEIGAlLjY0c2BAYCUuNjRzYABGYWlsZWQgdG8gZ3JhbnQgJS45MHNgIHRvICUuOTBzAEZhaWxlZCB0byBvcGVuIHRoZSBzZWN1cml0eSBzeXN0ZW0gdGFibGVzAEZhaWxlZCB0byBzZXQgZGVmYXVsdCByb2xlcwBOaWUgbW/FvG5hIHpuYWxlxbrEhyByb2R6YWp1IHphc29idSB3IHBvZGFueW0gVVJOOiAnJS4xOTJzJy4ATmllIG1vxbxuYSB6bmFsZcW6xIcgaW1wbGVtZW50YWNqaSB1c8WCdWdpIMWCYWR1asSFY2VqIHJvZHphaiB6YXNvYnUgZGxhIHphc29idSAnJS4xOTJzJyB3IHBvZGFueW0gVVJOOiAnJS4xOTJzJy4ATmllIG1vxbxuYSB3Y3p5dGHEhyBrb21wb25lbnR1IHBvZCBwb2RhbnltIFVSTjogJyUuMTkycycuAGAlLjY0c2BAYCUuNjRzYCBpcyBub3QgZ3JhbnRlZCB0byBgJS42NHNgQGAlLjY0c2AAQ291bGQgbm90IHJldm9rZSByb2xlIGZyb20gYCUuNjRzYEBgJS42NHNgAFJlbmFtaW5nIG9mIGEgcm9sZSBpZGVudGlmaWVyIGlzIGZvcmJpZGRlbgBOaWUgbW/FvG5hIHBvenlza2HEhyBwb2RhbmVqIGltcGxlbWVudGFjamkgdXPFgnVnaTogJyUuMTkycycuAE5pZSBtb8W8bmEgc3BlxYJuacSHIHphbGXFvG5vxZtjaSB3IHBvc3RhY2kgdXPFgnVnaSAnJS4xOTJzJyB3eW1hZ2FuZWogcHJ6ZXoga29tcG9uZW50ICclLjE5MnMnLgBOaWUgbW/FvG5hIHdwaXNhxIcgaW1wbGVtZW50YWNqaSB1c8WCdWdpICclLjE5MnMnIGRvc3RhcmN6YW5laiBwcnpleiBrb21wb25lbnQgJyUuMTkycycuAE1ldG9kYSBpbmljamFsaXp1asSFY2EgZG9zdGFyY3pvbmEgcHJ6ZXoga29tcG9uZW50ICclLjE5MnMnIG5pZSB6YWtvxYRjennFgmEgc2nEmSB6IHBvd29kemVuaWVtLgBLb21wb25lbnQgcG9kYW55IGRvIG9kxYLEhWN6ZW5pYSBwcnpleiBVUk4gJyUuMTkycycgbmllIGJ5xYIgd2N6ZcWbbmllaiB6YcWCYWRvd2FueS4ATWV0b2RhIGRlLWluaWNqYWxpenVqxIVjYSBkb3N0YXJjem9uYSBwcnpleiBrb21wb25lbnQgJyUuMTkycycgbmllIHpha2/FhGN6ecWCYSBzacSZIHogcG93b2R6ZW5pZW0uAFp3b2xuaWVuaWUgd2N6ZcWbbmllaiBwb3p5c2thbmVqIGltcGxlbWVudGFjamkgdXPFgnVnaSBuaWUgcG93aW9kxYJvIHNpxJkuAFd5cmVqc3Ryb3dhbmllIGltcGxlbWVudGFjamkgdXPFgnVnaSAnJS4xOTJzJyBkb3N0YXJjem9uZWogcHJ6ZXoga29tcG9uZW50ICclLjE5MnMnIHd5a29ueXdhbmUgcG9kY3phcyBvZMWCxIVjemFuaWEga29tcG9uZW50dSBuaWUgemFrb8WEY3p5xYJhIHNpxJkgeiBwb3dvZHplbmllbS4ATmllIG1vxbxuYSBvZMWCxIVjennEhyBrb21wb25lbnR1IHBvZCBwb2RhbnltIFVSTjogJyUuMTkycycuAFBlcnNpc3RlbnQgRHluYW1pYyBMb2FkZXIgem9zdGHFgiB1xbx5dHkgZG8gb2TFgsSFY3plbmlhIGtvbXBvbmVudHUgJyUuMTkycycsIGt0w7NyeSBuaWUgYnnFgiBwcnpleiBuaWVnbyB3Y3plxZtuaWVqIHdjenl0YW55LgBUYWJlbGEgbXlzcWwuY29tcG9uZW50IG5pZSBpc3RuaWVqZSBsdWIgbWEgbmllb2Rwb3dpZWRuacSFIGRlZmluaWNqxJkuAEZhaWxlZCB0byBtYW5pcHVsYXRlIGNvbXBvbmVudCAnJS4xOTJzJyBwZXJzaXN0ZW5jZSBkYXRhLiBFcnJvciBjb2RlICVkIGZyb20gc3RvcmFnZSBlbmdpbmUuAEtvbXBvbmVudCB6IHBvZGFueW0gVVJOOiAnJS4xOTJzJyB6b3N0YcWCIHBvZGFueSB3IGdydXBpZSB3acSZY2VqIG5pxbwgcmF6LgBAQEdMT0JBTC5HVElEX1BVUkdFRCBjYW5ub3QgYmUgY2hhbmdlZDogJXMAQ2FuIG5vdCBsb2NrIHVzZXIgbWFuYWdlbWVudCBjYWNoZXMgZm9yIHByb2Nlc3NpbmcuAFRoZXJlJ3Mgbm8gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4AVmFyaWFibGVzIGNhbm5vdCBiZSBwZXJzaXN0ZWQuIFBsZWFzZSByZXRyeS4ASW5mb3JtYXRpb24gc2NoZW1hIHF1ZXJpZXMgZG8gbm90IHN1cHBvcnQgdGhlICclcycgY2xhdXNlLgBVbmFibGUgdG8gc3RvcmUgZHluYW1pYyAlcyBzdGF0aXN0aWNzIGludG8gZGF0YSBkaWN0aW9uYXJ5LgBBY2Nlc3MgdG8gc3lzdGVtIHNjaGVtYSAnJS42NHMnIGlzIHJlamVjdGVkLgBBY2Nlc3MgdG8gc3lzdGVtIHRhYmxlc3BhY2UgJyUuNjRzJyBpcyByZWplY3RlZC4AQWNjZXNzIHRvICUuNjRzICclLjY0cy4lLjY0cycgaXMgcmVqZWN0ZWQuAGRhdGEgZGljdGlvbmFyeSB0YWJsZQBzeXN0ZW0gdGFibGUAdGFibGUASW52YWxpZCBvcHRpb24ga2V5ICclLjE5MnMnIGluIGZ1bmN0aW9uICUuMTkycy4ASW52YWxpZCB2YWx1ZSAnJS4xOTJzJyBmb3Igb3B0aW9uICclLjE5MnMnIGluIGZ1bmN0aW9uICclLjE5MnMnLgBUaGUgc3RyaW5nICclLjE5MnMnIGlzIG5vdCBhIHZhbGlkIGtleSAlYyB2YWx1ZSBwYWlyIGluIGZ1bmN0aW9uICUuMTkycy4AVGhlIG9wdGlvbnMgYXJndW1lbnQgaW4gZnVuY3Rpb24gJS4xOTJzIHN0YXJ0cyB3aXRoIHRoZSBpbnZhbGlkIGNoYXJhY3RlciAnJWMnLgBUaGUgb3B0aW9ucyBhcmd1bWVudCBpbiBmdW5jdGlvbiAlLjE5MnMgZW5kcyB3aXRoIHRoZSBpbnZhbGlkIGNoYXJhY3RlciAnJWMnLgBUaGUgb3B0aW9ucyBhcmd1bWVudCBpbiBmdW5jdGlvbiAlLjE5MnMgY29udGFpbnMgdGhlIGludmFsaWQgY2hhcmFjdGVyIHNlcXVlbmNlICclLjE5MnMnLgBEdXBsaWNhdGUgb3B0aW9uIGtleSAnJS4xOTJzJyBpbiBmdW50aW9uICclLjE5MnMnLgBUaGVyZSdzIG5vIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSB3aXRoIFNSSUQgJXUuIFRoZSBheGlzIG9yZGVyIGlzIHVua25vd24uAEFjY2VzcyB0byBuYXRpdmUgZnVuY3Rpb24gJyUuNjRzJyBpcyByZWplY3RlZC4AVGhlIHJlcXVlc3RlZCB2YWx1ZSAnJWxsdScgZm9yIHRoZSBuZXh0IGJpbmFyeSBsb2cgaW5kZXggaXMgb3V0IG9mIHJhbmdlLiBQbGVhc2UgdXNlIGEgdmFsdWUgYmV0d2VlbiAnMScgYW5kICclbHUnLgBVbnJlc29sdmVkIHRhYmxlIG5hbWUgJXMgaW4gbG9ja2luZyBjbGF1c2UuAFRhYmxlICVzIGFwcGVhcnMgaW4gbXVsdGlwbGUgbG9ja2luZyBjbGF1c2VzLgBTdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXNlcyBTS0lQIExPQ0tFRC4gVGhlIHNldCBvZiBpbnNlcnRlZCB2YWx1ZXMgaXMgbm9uLWRldGVybWluaXN0aWMuAFN0YXRlbWVudCBpcyB1bnNhZmUgYmVjYXVzZSBpdCB1c2VzIE5PV0FJVC4gV2hldGhlciB0aGUgY29tbWFuZCB3aWxsIHN1Y2NlZWQgb3IgZmFpbCBpcyBub3QgZGV0ZXJtaW5pc3RpYy4AU3RhdGVtZW50IGFib3J0ZWQgYmVjYXVzZSBsb2NrKHMpIGNvdWxkIG5vdCBiZSBhY3F1aXJlZCBpbW1lZGlhdGVseSBhbmQgTk9XQUlUIGlzIHNldC4AUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycgc2hvdWxkIGNvbnRhaW4gYSBVTklPTgBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJyBzaG91bGQgaGF2ZSBvbmUgb3IgbW9yZSBub24tcmVjdXJzaXZlIHF1ZXJ5IGJsb2NrcyBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSByZWN1cnNpdmUgb25lcwBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJyBjYW4gY29udGFpbiBuZWl0aGVyIGFnZ3JlZ2F0aW9uIG5vciB3aW5kb3cgZnVuY3Rpb25zIGluIHJlY3Vyc2l2ZSBxdWVyeSBibG9jawBJbiByZWN1cnNpdmUgcXVlcnkgYmxvY2sgb2YgUmVjdXJzaXZlIENvbW1vbiBUYWJsZSBFeHByZXNzaW9uICclcycsIHRoZSByZWN1cnNpdmUgdGFibGUgbXVzdCBuZWl0aGVyIGJlIGluIHRoZSByaWdodCBhcmd1bWVudCBvZiBhIExFRlQgSk9JTiwgbm9yIGJlIGZvcmNlZCB0byBiZSBub24tZmlyc3Qgd2l0aCBqb2luIG9yZGVyIGhpbnRzAEluIHJlY3Vyc2l2ZSBxdWVyeSBibG9jayBvZiBSZWN1cnNpdmUgQ29tbW9uIFRhYmxlIEV4cHJlc3Npb24gJyVzJywgdGhlIHJlY3Vyc2l2ZSB0YWJsZSBtdXN0IGJlIHJlZmVyZW5jZWQgb25seSBvbmNlLCBhbmQgbm90IGluIGFueSBzdWJxdWVyeQAnJXMnIHJlcXVpcmVzIEBAaW50ZXJuYWxfdG1wX2Rpc2tfc3RvcmFnZV9lbmdpbmU9SW5ub0RCAFdpbmRvdyBuYW1lICclcycgaXMgbm90IGRlZmluZWQuAFRoZXJlIGlzIGEgY2lyY3VsYXJpdHkgaW4gdGhlIHdpbmRvdyBkZXBlbmRlbmN5IGdyYXBoLgBBIHdpbmRvdyB3aGljaCBkZXBlbmRzIG9uIGFub3RoZXIgY2Fubm90IGRlZmluZSBwYXJ0aXRpb25pbmcuAFdpbmRvdyAnJXMnIGhhcyBhIGZyYW1lIGRlZmluaXRpb24sIHNvIGNhbm5vdCBiZSByZWZlcmVuY2VkIGJ5IGFub3RoZXIgd2luZG93LgBXaW5kb3cgJyVzJyBjYW5ub3QgaW5oZXJpdCAnJXMnIHNpbmNlIGJvdGggY29udGFpbiBhbiBPUkRFUiBCWSBjbGF1c2UuAFdpbmRvdyAnJXMnOiBmcmFtZSBzdGFydCBjYW5ub3QgYmUgVU5CT1VOREVEIEZPTExPV0lORy4AV2luZG93ICclcyc6IGZyYW1lIGVuZCBjYW5ub3QgYmUgVU5CT1VOREVEIFBSRUNFRElORy4AV2luZG93ICclcyc6IGZyYW1lIHN0YXJ0IG9yIGVuZCBpcyBuZWdhdGl2ZSwgTlVMTCBvciBvZiBub24taW50ZWdyYWwgdHlwZQBXaW5kb3cgJyVzJyB3aXRoIFJBTkdFIE4gUFJFQ0VESU5HL0ZPTExPV0lORyBmcmFtZSByZXF1aXJlcyBleGFjdGx5IG9uZSBPUkRFUiBCWSBleHByZXNzaW9uLCBvZiBudW1lcmljIG9yIHRlbXBvcmFsIHR5cGUAV2luZG93ICclcycgd2l0aCBSQU5HRSBmcmFtZSBoYXMgT1JERVIgQlkgZXhwcmVzc2lvbiBvZiBkYXRldGltZSB0eXBlLiBPbmx5IElOVEVSVkFMIGJvdW5kIHZhbHVlIGFsbG93ZWQuAFdpbmRvdyAnJXMnIHdpdGggUkFOR0UgZnJhbWUgaGFzIE9SREVSIEJZIGV4cHJlc3Npb24gb2YgbnVtZXJpYyB0eXBlLCBJTlRFUlZBTCBib3VuZCB2YWx1ZSBub3QgYWxsb3dlZC4AV2luZG93ICclcycgaGFzIGEgbm9uLWNvbnN0YW50IGZyYW1lIGJvdW5kLgBXaW5kb3cgJyVzJyBpcyBkZWZpbmVkIHR3aWNlLgBXaW5kb3cgJyVzJzogT1JERVIgQlkgb3IgUEFSVElUSU9OIEJZIHVzZXMgbGVnYWN5IHBvc2l0aW9uIGluZGljYXRpb24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCwgdXNlIGV4cHJlc3Npb24uAFlvdSBjYW5ub3QgdXNlIHRoZSB3aW5kb3cgZnVuY3Rpb24gJyVzJyBpbiB0aGlzIGNvbnRleHQuJwBZb3UgY2Fubm90IHVzZSB0aGUgYWxpYXMgJyVzJyBvZiBhbiBleHByZXNzaW9uIGNvbnRhaW5pbmcgYSB3aW5kb3cgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0LicAWW91IGNhbm5vdCBuZXN0IGEgd2luZG93IGZ1bmN0aW9uIGluIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHdpbmRvdyAnJXMnLgBXaW5kb3cgJyVzJzogSU5URVJWQUwgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIFJBTkdFIGZyYW1lcy4AQVNDIG9yIERFU0Mgd2l0aCBHUk9VUCBCWSBpc24ndCBhbGxvd2VkIHdpdGggd2luZG93IGZ1bmN0aW9uczsgcHV0IEFTQyBvciBERVNDIGluIE9SREVSIEJZAFRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB3aW5kb3cgZnVuY3Rpb25zIHVzZSBFWFBMQUlOIEZPUk1BVD1KU09OAFdpbmRvdyBmdW5jdGlvbiAnJXMnIGlnbm9yZXMgdGhlIGZyYW1lIGNsYXVzZSBvZiB3aW5kb3cgJyVzJyBhbmQgYWdncmVnYXRlcyBvdmVyIHRoZSB3aG9sZSBwYXJ0aXRpb24AV2luZG93aW5nIHJlcXVpcmVzIEBAaW50ZXJuYWxfdG1wX21lbV9zdG9yYWdlX2VuZ2luZT1UZW1wVGFibGUuAFRvbyBtYW55IGFyZ3VtZW50cyBmb3IgZnVuY3Rpb24gJXM6ICVsdTsgbWF4aW11bSBhbGxvd2VkIGlzICVzLgBBcmd1bWVudCAjJXUgb2YgR1JPVVBJTkcgZnVuY3Rpb24gaXMgbm90IGluIEdST1VQIEJZAENvbW1lbnQgZm9yIHRhYmxlc3BhY2UgJyUtLjY0cycgaXMgdG9vIGxvbmcgKG1heCA9ICVsdSkAU3RvcmFnZSBlbmdpbmUgY2FuJ3QgZHJvcCB0YWJsZSAnJS0uMTI5cycAU3RvcmFnZSBlbmdpbmUgY2FuJ3QgZHJvcCB0YWJsZSAnJS0uMTI5cycgYmVjYXVzZSBpdCBpcyBtaXNzaW5nLiBVc2UgRFJPUCBUQUJMRSBJRiBFWElTVFMgdG8gcmVtb3ZlIGl0IGZyb20gZGF0YS1kaWN0aW9uYXJ5LgBEdXBsaWNhdGUgZmlsZSBuYW1lIGZvciB0YWJsZXNwYWNlICclLS42NHMnAFByb2JsZW0gd2hpbGUgZHJvcHBpbmcgZGF0YWJhc2UuIENhbid0IHJlbW92ZSBkYXRhYmFzZSBkaXJlY3RvcnkgKCVzKS4gUGxlYXNlIHJlbW92ZSBpdCBtYW51YWxseS4ATm8gU0RJIGZpbGVzIG1hdGNoZWQgdGhlIHBhdHRlcm4gJyVzJwBTY2hlbWEgJyUuMjU2cycsIHJlZmVyZW5jZWQgaW4gU0RJLCBkb2VzIG5vdCBleGlzdC4AVGFibGUgJyUuMjU2cy4lLjI1NnMnLCByZWZlcmVuY2VkIGluIFNESSwgYWxyZWFkeSBleGlzdHMuAEltcG9ydGVkIG15c3FsZF92ZXJzaW9uICglbGx1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgKCVsbHUpAEltcG9ydGVkIGRkIHZlcnNpb24gKCV1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgKCV1KQBJbXBvcnRlZCBzZGkgdmVyc2lvbiAoJWxsdSkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBjdXJyZW50ICglbGx1KQBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGhpbnQgJXMAVmFyaWFibGUgJXMgZG9lcyBub3QgZXhpc3QgaW4gcGVyc2lzdGVkIGNvbmZpZyBmaWxlAExvbmdpdHVkZSAlZiBpcyBvdXQgb2YgcmFuZ2UgaW4gZnVuY3Rpb24gJS4xOTJzLiBJdCBtdXN0IGJlIHdpdGhpbiAoJWYsICVmXS4ATGF0aXR1ZGUgJWYgaXMgb3V0IG9mIHJhbmdlIGluIGZ1bmN0aW9uICUuMTkycy4gSXQgbXVzdCBiZSB3aXRoaW4gWyVmLCAlZl0uACUuMTkycyglLjgwcykgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciBnZW9ncmFwaGljIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbXMuAElsbGVnYWwgcHJpdmlsZWdlIGxldmVsIHNwZWNpZmllZCBmb3IgJXMAQWNjZXNzIHRvIHN5c3RlbSB2aWV3IElORk9STUFUSU9OX1NDSEVNQS4nJS42NHMnIGlzIHJlamVjdGVkLgBUaGUgbG9nLWZpbHRlciBjb21wb25lbnQgIiVzIiBnb3QgY29uZnVzZWQgYXQgIiVzIiAuLi4AUGFydGl0aW9uaW5nIGV4cHJlc3Npb24gaXMgdG9vIGxvbmcuAERST1AgRlVOQ1RJT04gY2FuJ3QgZHJvcCBhIGR5bmFtaWNhbGx5IHJlZ2lzdGVyZWQgdXNlciBkZWZpbmVkIGZ1bmN0aW9uAFVuYWJsZSB0byBzdG9yZSBjb2x1bW4gc3RhdGlzdGljcyBmb3IgY29sdW1uICclLjY0cycgaW4gdGFibGUgJyUuNjRzJy4nJS42NHMnAFVuYWJsZSB0byB1cGRhdGUgY29sdW1uIHN0YXRpc3RpY3MgZm9yIGNvbHVtbiAnJS42NHMnIGluIHRhYmxlICclLjY0cycuJyUuNjRzJwBVbmFibGUgdG8gcmVtb3ZlIGNvbHVtbiBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVW5hYmxlIHRvIGJ1aWxkIGhpc3RvZ3JhbSBzdGF0aXN0aWNzIGZvciBjb2x1bW4gJyUuNjRzJyBpbiB0YWJsZSAnJS42NHMnLiclLjY0cycAVGhlIHJvbGUgJXMgaXMgYSBtYW5kYXRvcnkgcm9sZSBhbmQgY2FuJ3QgYmUgcmV2b2tlZCBvciBkcm9wcGVkLiBUaGUgcmVzdHJpY3Rpb24gY2FuIGJlIGxpZnRlZCBieSBleGNsdWRpbmcgdGhlIHJvbGUgaWRlbnRpZmllciBmcm9tIHRoZSBnbG9iYWwgdmFyaWFibGUgbWFuZGF0b3J5X3JvbGVzLgBUYWJsZXNwYWNlICclLjE5MnMnIGRvZXMgbm90IGhhdmUgYSBmaWxlIG5hbWVkICclLjE5MnMnAEFjY2VzcyBkZW5pZWQ7IHlvdSBuZWVkICUtLjEyOHMgcHJpdmlsZWdlcyBmb3IgdGhpcyBvcGVyYXRpb24AWW91IG5lZWQgdGhlIFNVUEVSIHByaXZpbGVnZSBmb3IgY29tbWFuZCAnJS0uMTkycycAUGF0aCBpcyB3aXRoaW4gdGhlIGN1cnJlbnQgZGF0YSBkaXJlY3RvcnkgJyUtLjE5MnMnAENvbmN1cnJlbnQgRERMIGlzIHBlcmZvcm1lZCBkdXJpbmcgY2xvbmUgb3BlcmF0aW9uLiBQbGVhc2UgdHJ5IGFnYWluLgBUb28gbWFueSBjb25jdXJyZW50IGNsb25lIG9wZXJhdGlvbnMuIE1heGltdW0gYWxsb3dlZCAtICVkLgBUaGUgdGFibGUgaW4gdHJhbnNhY3Rpb24gJXMgZG9lcyBub3QgY29tcGx5IHdpdGggdGhlIHJlcXVpcmVtZW50cyBieSBhbiBleHRlcm5hbCBwbHVnaW4uAFJlY3Vyc2l2ZSBxdWVyeSBhYm9ydGVkIGFmdGVyICV1IGl0ZXJhdGlvbnMuIFRyeSBpbmNyZWFzaW5nIEBAY3RlX21heF9yZWN1cnNpb25fZGVwdGggdG8gYSBsYXJnZXIgdmFsdWUuAFZhcmlhYmxlICVzIGNhbm5vdCBiZSBzZXQgdXNpbmcgU0VUX1ZBUiBoaW50LgBDYW5ub3QgdXNlIHRoZXNlIGNyZWRlbnRpYWxzIGZvciAnJS4qc0AlLipzJyBiZWNhdXNlIHRoZXkgY29udHJhZGljdCB0aGUgcGFzc3dvcmQgaGlzdG9yeSBwb2xpY3kATm9uLXplcm8gcGFzc3dvcmQgaGlzdG9yeSBjbGF1c2VzIGlnbm9yZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGFzIGl0cyBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJXMgZG9lcyBub3Qgc3VwcG9ydCBwYXNzd29yZCBoaXN0b3J5AFRoZSBjbGllbnQgZG9lc24ndCBzdXBwb3J0ICVzAFRhYmxlc3BhY2UgJyVzJyB3YXMgc2tpcHBlZCBzaW5jZSBpdHMgZGVmaW5pdGlvbiBpcyBiZWluZyBtb2RpZmllZCBieSBjb25jdXJyZW50IERETCBzdGF0ZW1lbnQARW5naW5lICclLjE5MnMnIGRvZXMgbm90IG1hdGNoIHN0b3JlZCBlbmdpbmUgJyUuMTkycycgZm9yIHRhYmxlc3BhY2UgJyUuMTkycycAVGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IGRvZXMgbm90IG1hdGNoIHRoZSBTUklEIG9mIHRoZSBjb2x1bW4gJyUuNjRzJy4gVGhlIFNSSUQgb2YgdGhlIGdlb21ldHJ5IGlzICVsdSwgYnV0IHRoZSBTUklEIG9mIHRoZSBjb2x1bW4gaXMgJWx1LiBDb25zaWRlciBjaGFuZ2luZyB0aGUgU1JJRCBvZiB0aGUgZ2VvbWV0cnkgb3IgdGhlIFNSSUQgcHJvcGVydHkgb2YgdGhlIGNvbHVtbi4AVGhlIFNSSUQgc3BlY2lmaWNhdGlvbiBvbiB0aGUgY29sdW1uICclLjY0cycgY2Fubm90IGJlIGNoYW5nZWQgYmVjYXVzZSB0aGVyZSBpcyBhIHNwYXRpYWwgaW5kZXggb24gdGhlIGNvbHVtbi4gUGxlYXNlIHJlbW92ZSB0aGUgc3BhdGlhbCBpbmRleCBiZWZvcmUgYWx0ZXJpbmcgdGhlIFNSSUQgc3BlY2lmaWNhdGlvbi4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIGlnbm9yZWQgYW5kIHVwZGF0ZXMgd2lsbCBiZSB3cml0dGVuIGluIGZ1bGwgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGxvZ19iaW5fdXNlX3YxX3Jvd19ldmVudHM9MSB3aWxsIGJlIGlnbm9yZWQgYW5kIHJvdyBldmVudHMgd2lsbCBiZSB3cml0dGVuIGluIG5ldyBmb3JtYXQgdG8gYmluYXJ5IGxvZy4AV2hlbiAlLjE5MnMsIHRoZSBvcHRpb24gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zPSUuMTkycyB3aWxsIGJlIHVzZWQgb25seSBmb3IgdGhlIGFmdGVyLWltYWdlLiBGdWxsIHZhbHVlcyB3aWxsIGJlIHdyaXR0ZW4gaW4gdGhlIGJlZm9yZS1pbWFnZSwgc28gdGhlIHNhdmluZyBpbiBkaXNrIHNwYWNlIGR1ZSB0byBiaW5sb2dfcm93X3ZhbHVlX29wdGlvbnMgaXMgbGltaXRlZCB0byBsZXNzIHRoYW4gNTAlJS4AQ291bGQgbm90IGFwcGx5IEpTT04gZGlmZiBpbiB0YWJsZSAlLipzLCBjb2x1bW4gJXMuAENvcnJ1cHRlZCBKU09OIGRpZmYgZm9yIHRhYmxlICUuKnMsIGNvbHVtbiAlcy4AUmVzb3VyY2UgR3JvdXAgJyUtLjE5MnMnIGV4aXN0cwBSZXNvdXJjZSBHcm91cCAnJS0uMTkycycgZG9lcyBub3QgZXhpc3QuAEludmFsaWQgY3B1IGlkICV1AEludmFsaWQgVkNQVSByYW5nZSAldS0ldQBJbnZhbGlkIHRocmVhZCBwcmlvcml0eSB2YWx1ZSAlZCBmb3IgJXMgcmVzb3VyY2UgZ3JvdXAgJXMuIEFsbG93ZWQgcmFuZ2UgaXMgWyVkLCAlZF0uACVzIG9wZXJhdGlvbiBpcyBkaXNhbGxvd2VkIG9uICVzAFJlc291cmNlIGdyb3VwICVzIGlzIGJ1c3kuAFJlc291cmNlIGdyb3VwICVzIGlzIGRpc2FibGVkLgBGZWF0dXJlICVzIGlzIHVuc3VwcG9ydGVkICglcykuAEF0dHJpYnV0ZSAlcyBpcyBpZ25vcmVkICglcykuAEludmFsaWQgdGhyZWFkIGlkICglbGx1KS4AVW5hYmxlIHRvIGJpbmQgcmVzb3VyY2UgZ3JvdXAgJXMgd2l0aCB0aHJlYWQgaWQgKCVsbHUpLiglcykuAE9wdGlvbiBGT1JDRSBpbnZhbGlkIGFzIERJU0FCTEUgb3B0aW9uIGlzIG5vdCBzcGVjaWZpZWQuAFRoZSAlcyBjb21tYW5kIGVuY291bnRlcmVkIGEgZmFpbHVyZS4gJXMARmFpbGVkIHRvICVzIFNESSAnJS4xOTJzLiUuMTkycycgaW4gdGFibGVzcGFjZSAnJS4xOTJzJy4ATWlzc2luZyB2YWx1ZSBmb3IgSlNPTl9UQUJMRSBjb2x1bW4gJyUuMTkycycAQ2FuJ3Qgc3RvcmUgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGluIHRoZSBzY2FsYXIgSlNPTl9UQUJMRSBjb2x1bW4gJyUuMTkycycARXZlcnkgdGFibGUgZnVuY3Rpb24gbXVzdCBoYXZlIGFuIGFsaWFzAElOTkVSIG9yIExFRlQgSk9JTiBtdXN0IGJlIHVzZWQgZm9yIExBVEVSQUwgcmVmZXJlbmNlcyBtYWRlIGJ5ICclLjE5MnMnAFZhbHVlIGlzIG91dCBvZiByYW5nZSBmb3IgSlNPTl9UQUJMRSdzIGNvbHVtbiAnJS4xOTJzJwBNb3JlIHRoYW4gc3VwcG9ydGVkICV1IE5FU1RFRCBQQVRIcyB3ZXJlIGZvdW5kIGluIEpTT05fVEFCTEUgJyUuMTkycycAVGhlIHNlbGVjdGVkIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCAlLipzIGRvZXMgbm90IHN1cHBvcnQgcGFzc3dvcmQgZXhwaXJhdGlvbgBJbnZhbGlkIEdlb0pTT04gZGF0YSBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogTWVtYmVyICdjcnMnIG11c3QgYmUgc3BlY2lmaWVkIGluIHRoZSB0b3AgbGV2ZWwgb2JqZWN0LgBDb2x1bW4gJyUtLjE5MnMnIGNhbm5vdCBiZSBudWxsAFRoZSBzcGF0aWFsIGluZGV4IG9uIGNvbHVtbiAnJS42NHMnIHdpbGwgbm90IGJlIHVzZWQgYnkgdGhlIHF1ZXJ5IG9wdGltaXplciBzaW5jZSB0aGUgY29sdW1uIGRvZXMgbm90IGhhdmUgYW4gU1JJRCBhdHRyaWJ1dGUuIENvbnNpZGVyIGFkZGluZyBhbiBTUklEIGF0dHJpYnV0ZSB0byB0aGUgY29sdW1uLgBDcmVhdGUgdGFibGUvdGFibGVzcGFjZSAnJS0uMTkycycgZmFpbGVkLCBhcyBkaXNrIGlzIGZ1bGwAQ291bGQgbm90IHBhcnNlIGFyZ3VtZW50IHRvIGRpZ2VzdCBmdW5jdGlvbjogIiVzIi4AQ291bGQgbm90IHBhcnNlIGFyZ3VtZW50IHRvIGRpZ2VzdCBmdW5jdGlvbi4AU2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyBhbHJlYWR5IGV4aXN0cy4gVGhpcyBtdXN0IGJlIHJlc29sdmVkIG1hbnVhbGx5IChlLmcuIGJ5IG1vdmluZyB0aGUgc2NoZW1hIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uKS4AU2NoZW1hIGRpcmVjdG9yeSAnJS4xOTJzJyBkb2VzIG5vdCBleGlzdABGYWlsZWQgdG8gY3JlYXRlIHNjaGVtYSBkaXJlY3RvcnkgJyUuMTkycycgKGVycm5vOiAlZCAtICVzKQBTY2hlbWEgJyUuMTkycycgZG9lcyBub3QgZXhpc3QsIGJ1dCBzY2hlbWEgZGlyZWN0b3J5ICclLjE5MnMnIHdhcyBmb3VuZC4gVGhpcyBtdXN0IGJlIHJlc29sdmVkIG1hbnVhbGx5IChlLmcuIGJ5IG1vdmluZyB0aGUgc2NoZW1hIGRpcmVjdG9yeSB0byBhbm90aGVyIGxvY2F0aW9uKS4ARnVuY3Rpb24gJS4xOTJzIGlzIG9ubHkgZGVmaW5lZCBmb3IgU1JJRCAwIGFuZCBTUklEIDQzMjYuAFRoZSBvcHRpb24gZXhwaXJlX2xvZ3NfZGF5cyBhbmQgYmlubG9nX2V4cGlyZV9sb2dzX3NlY29uZHMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIuIFBsZWFzZSB1c2UgYmlubG9nX2V4cGlyZV9sb2dzX3NlY29uZHMgdG8gc2V0IHRoZSBleHBpcmUgdGltZSAoZXhwaXJlX2xvZ3NfZGF5cyBpcyBkZXByZWNhdGVkKQBUaGUgcmVzdWx0IHN0cmluZyBpcyBsYXJnZXIgdGhhbiB0aGUgcmVzdWx0IGJ1ZmZlci4ASWxsZWdhbCBhcmd1bWVudCB0byBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4ASW5kZXggb3V0IG9mIGJvdW5kcyBpbiByZWd1bGFyIGV4cHJlc3Npb24gc2VhcmNoLgBJbnRlcm5hbCBlcnJvciBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkuAFN5bnRheCBlcnJvciBpbiByZWd1bGFyIGV4cHJlc3Npb24gb24gbGluZSAldSwgY2hhcmFjdGVyICV1LgBVbnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucyBhIGZlYXR1cmUgdGhhdCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBsaWJyYXJ5IHZlcnNpb24uAE1pc21hdGNoZWQgcGFyZW50aGVzaXMgaW4gcmVndWxhciBleHByZXNzaW9uLgBJbmNvcnJlY3QgZGVzY3JpcHRpb24gb2YgYSB7bWluLG1heH0gaW50ZXJ2YWwuAFRoZSBtYXhpbXVtIGlzIGxlc3MgdGhhbiB0aGUgbWludW11bSBpbiBhIHttaW4sbWF4fSBpbnRlcnZhbC4ASW52YWxpZCBiYWNrLXJlZmVyZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24uAFRoZSBsb29rLWJlaGluZCBhc3NlcnRpb24gZXhjZWVkcyB0aGUgbGltaXQgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgcmVndWxhciBleHByZXNzaW9uIGNvbnRhaW5zIGFuIHVuY2xvc2VkIGJyYWNrZXQgZXhwcmVzc2lvbi4AVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjb250YWlucyBhbiBbeC15XSBjaGFyYWN0ZXIgcmFuZ2Ugd2hlcmUgeCBjb21lcyBhZnRlciB5LgBPdmVyZmxvdyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uIGJhY2t0cmFjayBzdGFjay4AVGltZW91dCBleGNlZWRlZCBpbiByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2guAFRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVybiBleGNlZWRzIGxpbWl0cyBvbiBzaXplIG9yIGNvbXBsZXhpdHkuAFZhbHVlIGZvciAlcyBnb3QgY29uZnVzaW5nIGF0IG9yIGFyb3VuZCAiJXMiLiBTeW50YXggbWF5IGJlIHdyb25nLCBjb21wb25lbnQgbWF5IG5vdCBiZSBJTlNUQUxMZWQsIG9yIGEgY29tcG9uZW50IHRoYXQgZG9lcyBub3Qgc3VwcG9ydCBpbnN0YW5jZXMgbWF5IGJlIGxpc3RlZCBtb3JlIHRoYW4gb25jZS4AU2V0dGluZyBhbiBlbXB0eSAlcyBwaXBlbGluZSBkaXNhYmxlcyBlcnJvciBsb2dnaW5nIQBmaWx0ZXIgJXM6ICVzACUuMTkycyglLjgwcykgaGFzIG5vdCBiZWVuIGltcGxlbWVudGVkIGZvciBDYXJ0ZXNpYW4gc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcy4AJS4xOTJzKCUuODBzKSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgZm9yIHByb2plY3RlZCBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW1zLgBJbnZhbGlkIHJhZGl1cyBwcm92aWRlZCB0byBmdW5jdGlvbiAlczogUmFkaXVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAFJlc3RhcnQgc2VydmVyIGZhaWxlZCAoJXMpLgBNaXNzaW5nIG1hbmRhdG9yeSBhdHRyaWJ1dGUgJXMuAE11bHRpcGxlIGRlZmluaXRpb25zIG9mIGF0dHJpYnV0ZSAlcy4AVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBuYW1lIGNhbid0IGJlIGFuIGVtcHR5IHN0cmluZyBvciBzdGFydCBvciBlbmQgd2l0aCB3aGl0ZXNwYWNlLgBUaGUgb3JnYW5pemF0aW9uIG5hbWUgY2FuJ3QgYmUgYW4gZW1wdHkgc3RyaW5nIG9yIHN0YXJ0IG9yIGVuZCB3aXRoIHdoaXRlc3BhY2UuAFRoZXJlIGlzIGFscmVhZHkgYSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gd2l0aCBTUklEICV1LgBUaGVyZSBpcyBhbHJlYWR5IGEgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHdpdGggU1JJRCAldS4AU1JJRCAwIGlzIG5vdCBtb2RpZmlhYmxlLgBUaGUgU1JJRCByYW5nZSBbJXUsICV1XSBoYXMgYmVlbiByZXNlcnZlZCBmb3Igc3lzdGVtIHVzZS4gU1JTcyBpbiB0aGlzIHJhbmdlIG1heSBiZSBhZGRlZCwgbW9kaWZpZWQgb3IgcmVtb3ZlZCB3aXRob3V0IHdhcm5pbmcgZHVyaW5nIHVwZ3JhZGUuAENhbid0IG1vZGlmeSBTUklEICV1LiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgY29sdW1uIGRlcGVuZGluZyBvbiBpdC4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gYXR0cmlidXRlICVzLgBBdHRyaWJ1dGUgJXMgaXMgdG9vIGxvbmcuIFRoZSBtYXhpbXVtIGxlbmd0aCBpcyAldSBjaGFyYWN0ZXJzLgAndXRmOCcgaXMgY3VycmVudGx5IGFuIGFsaWFzIGZvciB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCBidXQgd2lsbCBiZSBhbiBhbGlhcyBmb3IgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4ATkFUSU9OQUwvTkNIQVIvTlZBUkNIQVIgaW1wbGllcyB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIENIQVIoeCkgQ0hBUkFDVEVSIFNFVCBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBJbnZhbGlkIGRlZmF1bHQgY29sbGF0aW9uICVzOiB1dGY4bWI0XzA5MDBfYWlfY2kgb3IgdXRmOG1iNF9nZW5lcmFsX2NpIGV4cGVjdGVkAFVuYWJsZSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGZvciBjb2x1bW4gJyUtLjE5MnMnOiAlLS4xOTJzLgBUaGUgdGFibGUgJyUtLjE5MnMnIG1heSBub3QgYmUgY3JlYXRlZCBpbiB0aGUgcmVzZXJ2ZWQgdGFibGVzcGFjZSAnJS0uMTkycycuAFRoaXMgb3B0aW9uIGNhbm5vdCBiZSBzZXQgJXMuAEEgY29tbWl0IGZvciBhbiBhdG9taWMgRERMIHN0YXRlbWVudCB3YXMgdW5zdWNjZXNzZnVsIG9uIHRoZSBzb3VyY2UgYW5kIHRoZSByZXBsaWNhLiBUaGUgcmVwbGljYSBzdXBwb3J0cyBhdG9taWMgRERMIHN0YXRlbWVudHMgYnV0IHRoZSBzb3VyY2UgZG9lcyBub3QsIHNvIHRoZSBhY3Rpb24gdGFrZW4gYnkgdGhlIHJlcGxpY2EgYW5kIHNvdXJjZSBtaWdodCBkaWZmZXIuIENoZWNrIHRoYXQgdGhlaXIgc3RhdGVzIGhhdmUgbm90IGRpdmVyZ2VkIGJlZm9yZSBwcm9jZWVkaW5nLgBGdW5jdGlvbiAlcyBpcyBvbmx5IGRlZmluZWQgZm9yIGdlb2dyYXBoaWMgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtcywgYnV0IG9uZSBvZiBpdHMgYXJndW1lbnRzIGlzIGluIFNSSUQgJXUsIHdoaWNoIGlzIG5vdCBnZW9ncmFwaGljLgBGdW5jdGlvbiAlcyBlbmNvdW50ZXJlZCBhIHBvbHlnb24gdGhhdCB3YXMgdG9vIGxhcmdlLiBQb2x5Z29ucyBtdXN0IGNvdmVyIGxlc3MgdGhhbiBoYWxmIHRoZSBwbGFuZXQuAFNwYXRpYWwgaW5kZXhlcyBjYW4ndCBiZSBwcmltYXJ5IG9yIHVuaXF1ZSBpbmRleGVzLgBUaGUgaW5kZXggdHlwZSAlLjIwcyBpcyBub3Qgc3VwcG9ydGVkIGZvciBzcGF0aWFsIGluZGV4ZXMuAENhbm5vdCBkcm9wIHRhYmxlICclcycgcmVmZXJlbmNlZCBieSBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgJyVzJyBvbiB0YWJsZSAnJXMnLgBBIHBhcmFtZXRlciBvZiBmdW5jdGlvbiAlLjE5MnMgY29udGFpbnMgYSBnZW9tZXRyeSB3aXRoIGxvbmdpdHVkZSAlZiwgd2hpY2ggaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIHdpdGhpbiAoJWYsICVmXS4AQSBwYXJhbWV0ZXIgb2YgZnVuY3Rpb24gJS4xOTJzIGNvbnRhaW5zIGEgZ2VvbWV0cnkgd2l0aCBsYXRpdHVkZSAlZiwgd2hpY2ggaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIHdpdGhpbiBbJWYsICVmXS4ARm9yZWlnbiBrZXkgJyVzJyB1c2VzIHZpcnR1YWwgY29sdW1uICclcycgd2hpY2ggaXMgbm90IHN1cHBvcnRlZC4ARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC4gTWlzc2luZyBjb2x1bW4gJyVzJyBmb3IgY29uc3RyYWludCAnJXMnIGluIHRoZSByZWZlcmVuY2VkIHRhYmxlICclcycAJXM6IENvdWxkIG5vdCBhZGQgc3VwcHJlc3Npb24gcnVsZSBmb3IgY29kZSAiJXMiLiBSdWxlLXNldCBtYXkgYmUgZnVsbCwgb3IgY29kZSBtYXkgbm90IGNvcnJlc3BvbmQgdG8gYW4gZXJyb3ItbG9nIG1lc3NhZ2UuAFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbiBmb3IgU1JJRCAldSBzcGVjaWZpZXMgaW52YWxpZCBnZW9ncmFwaGljIGF4ZXMgJyUuMjBzJyBhbmQgJyUuMjBzJy4gT25lIGF4aXMgbXVzdCBiZSBOT1JUSCBvciBTT1VUSCBhbmQgdGhlIG90aGVyIG11c3QgYmUgRUFTVCBvciBXRVNULgBUaGUgbGVuZ3RoIG9mIHRoZSBzZW1pLW1ham9yIGF4aXMgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlci4AVGhlIGludmVyc2UgZmxhdHRlbmluZyBtdXN0IGJlIGxhcmdlciB0aGFuIDEuMCwgb3IgMC4wIGlmIHRoZSBlbGxpcHNvaWQgaXMgYSBzcGhlcmUuAFRoZSBhbmd1bGFyIHVuaXQgY29udmVyc2lvbiBmYWN0b3IgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlci4AVGhlIHByaW1lIG1lcmlkaWFuIG11c3QgYmUgd2l0aGluICgtMTgwLCAxODBdIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdC4AVHJhbnNmb3JtYXRpb24gZnJvbSBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuAFRyYW5zZm9ybWF0aW9uIHRvIFNSSUQgJXUgaXMgbm90IHN1cHBvcnRlZC4AVHJhbnNmb3JtYXRpb24gZnJvbSBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gaGFzIG5vIFRPV0dTODQgY2xhdXNlLgBUcmFuc2Zvcm1hdGlvbiB0byBTUklEICV1IGlzIG5vdCBzdXBwb3J0ZWQuIFRoZSBzcGF0aWFsIHJlZmVyZW5jZSBzeXN0ZW0gaGFzIG5vIFRPV0dTODQgY2xhdXNlLgBDaGFuZ2luZyBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdCBpcyBkaXNhbGxvd2VkIHdoZW4gdGhlIHNlc3Npb24gaGFzIG9wZW4gdGVtcG9yYXJ5IHRhYmxlKHMpLiBZb3UgY291bGQgd2FpdCB1bnRpbCB0aGVzZSB0ZW1wb3JhcnkgdGFibGUocykgYXJlIGRyb3BwZWQgYW5kIHRyeSBhZ2Fpbi4AQ2hhbmdpbmcgQEBnbG9iYWwuYmlubG9nX2Zvcm1hdCBvciBAQHBlcnNpc3QuYmlubG9nX2Zvcm1hdCBpcyBkaXNhbGxvd2VkIHdoZW4gYW55IHJlcGxpY2F0aW9uIGNoYW5uZWwgaGFzIG9wZW4gdGVtcG9yYXJ5IHRhYmxlKHMpLiBZb3UgY291bGQgd2FpdCB1bnRpbCBSZXBsaWNhX29wZW5fdGVtcF90YWJsZXMgPSAwIGFuZCB0cnkgYWdhaW4AQ2hhbmdpbmcgQEBnbG9iYWwuYmlubG9nX2Zvcm1hdCBvciBAQHBlcnNpc3QuYmlubG9nX2Zvcm1hdCBpcyBkaXNhbGxvd2VkIHdoZW4gYW55IHJlcGxpY2F0aW9uIGNoYW5uZWwgYXBwbGllciB0aHJlYWQgaXMgcnVubmluZy4gWW91IGNvdWxkIGV4ZWN1dGUgU1RPUCBSRVBMSUNBIFNRTF9USFJFQUQgYW5kIHRyeSBhZ2Fpbi4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IENSRUFURSBURU1QT1JBUlkgVEFCTEUgYW5kIERST1AgVEVNUE9SQVJZIFRBQkxFIGFyZSBub3QgYWxsb3dlZCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBvciBpbnNpZGUgYSBwcm9jZWR1cmUgaW4gYSB0cmFuc2FjdGlvbmFsIGNvbnRleHQgd2hlbiBAQHNlc3Npb24uYmlubG9nX2Zvcm1hdD1TVEFURU1FTlQuAFhBOiBGYWlsZWQgdG8gdGFrZSBNREwgTG9jayBiYWNrdXAgb2YgUFJFUEFSRUQgWEEgdHJhbnNhY3Rpb24gZHVyaW5nIGNsaWVudCBkaXNjb25uZWN0LgBVbmFibGUgdG8gY3JlYXRlIG9yIGNoYW5nZSBhIHRhYmxlIHdpdGhvdXQgYSBwcmltYXJ5IGtleSwgd2hlbiB0aGUgc3lzdGVtIHZhcmlhYmxlICdzcWxfcmVxdWlyZV9wcmltYXJ5X2tleScgaXMgc2V0LiBBZGQgYSBwcmltYXJ5IGtleSB0byB0aGUgdGFibGUgb3IgdW5zZXQgdGhpcyB2YXJpYWJsZSB0byBhdm9pZCB0aGlzIG1lc3NhZ2UuIE5vdGUgdGhhdCB0YWJsZXMgd2l0aG91dCBhIHByaW1hcnkga2V5IGNhbiBjYXVzZSBwZXJmb3JtYW5jZSBwcm9ibGVtcyBpbiByb3ctYmFzZWQgcmVwbGljYXRpb24sIHNvIHBsZWFzZSBjb25zdWx0IHlvdXIgREJBIGJlZm9yZSBjaGFuZ2luZyB0aGlzIHNldHRpbmcuAERhdGEgdHJ1bmNhdGVkIGZvciBmdW5jdGlvbmFsIGluZGV4ICclcycgYXQgcm93ICVsZABWYWx1ZSBpcyBvdXQgb2YgcmFuZ2UgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyVzJyBhdCByb3cgJWxkAENhbm5vdCBjcmVhdGUgYSBmdW5jdGlvbmFsIGluZGV4IG9uIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgSlNPTiBvciBHRU9NRVRSWSB2YWx1ZS4ARnVuY3Rpb25hbCBpbmRleCAnJS42NHMnIGNhbm5vdCByZWZlciB0byBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4uAENhbm5vdCBkcm9wIGNvbHVtbiAnJS0uNjRzJyBiZWNhdXNlIGl0IGlzIHVzZWQgYnkgYSBmdW5jdGlvbmFsIGluZGV4LiBJbiBvcmRlciB0byBkcm9wIHRoZSBjb2x1bW4sIHlvdSBtdXN0IHJlbW92ZSB0aGUgZnVuY3Rpb25hbCBpbmRleC4AVGhlIHByaW1hcnkga2V5IGNhbm5vdCBiZSBhIGZ1bmN0aW9uYWwgaW5kZXgAQ2Fubm90IGNyZWF0ZSBhIGZ1bmN0aW9uYWwgaW5kZXggb24gYW4gZXhwcmVzc2lvbiB0aGF0IHJldHVybnMgYSBCTE9CIG9yIFRFWFQuIFBsZWFzZSBjb25zaWRlciB1c2luZyBDQVNULgBFeHByZXNzaW9uIG9mIGZ1bmN0aW9uYWwgaW5kZXggJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb24uAEZ1bGx0ZXh0IGZ1bmN0aW9uYWwgaW5kZXggaXMgbm90IHN1cHBvcnRlZC4AU3BhdGlhbCBmdW5jdGlvbmFsIGluZGV4IGlzIG5vdCBzdXBwb3J0ZWQuAFRoZSB1c2VkIHN0b3JhZ2UgZW5naW5lIGNhbm5vdCBpbmRleCB0aGUgZXhwcmVzc2lvbiAnJXMnLgBGdW5jdGlvbmFsIGluZGV4IG9uIGEgY29sdW1uIGlzIG5vdCBzdXBwb3J0ZWQuIENvbnNpZGVyIHVzaW5nIGEgcmVndWxhciBpbmRleCBpbnN0ZWFkLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb246ICVzLgBFeHByZXNzaW9uIG9mIGdlbmVyYXRlZCBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYSByb3cgdmFsdWUuAEV4cHJlc3Npb24gb2YgZ2VuZXJhdGVkIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB1c2VyIG9yIHN5c3RlbSB2YXJpYWJsZXMuAENvbHVtbiAnJXMnIG9mIHRhYmxlICclcycgaGFzIGEgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIGRlcGVuZGVuY3kgYW5kIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjYW5ub3QgcmVmZXIgdG8gYSBjb2x1bW4gZGVmaW5lZCBhZnRlciBpdCBpZiB0aGF0IGNvbHVtbiBpcyBhIGdlbmVyYXRlZCBjb2x1bW4gb3IgaGFzIGFuIGV4cHJlc3Npb24gYXMgZGVmYXVsdCB2YWx1ZS4ARGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9mIGNvbHVtbiAnJXMnIGNhbm5vdCByZWZlciB0byBhbiBhdXRvLWluY3JlbWVudCBjb2x1bW4uAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb24uAERlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBvZiBjb2x1bW4gJyVzJyBjb250YWlucyBhIGRpc2FsbG93ZWQgZnVuY3Rpb246ICVzLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBEZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb2YgY29sdW1uICclcycgY2Fubm90IHJlZmVyIHVzZXIgb3Igc3lzdGVtIHZhcmlhYmxlcy4AREVGQVVMVCBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCB3aXRoIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMAJyVzJyBpcyBub3Qgc3VwcG9ydGVkIGZvciBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQUxURVIgVEFCTEUgLi4uIEFERCBDT0xVTU4gLi4gd2l0aCBleHByZXNzaW9uIGFzIERFRkFVTFQuAENhbm5vdCBjaGFuZ2UgdGFibGUncyBzdG9yYWdlIGVuZ2luZSBiZWNhdXNlIHRoZSB0YWJsZSBwYXJ0aWNpcGF0ZXMgaW4gYSBmb3JlaWduIGtleSBjb25zdHJhaW50LgBTZXR0aW5nIHVzZXIgdmFyaWFibGVzIHdpdGhpbiBleHByZXNzaW9ucyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgYWx0ZXJuYXRpdmVzOiAnU0VUIHZhcmlhYmxlPWV4cHJlc3Npb24sIC4uLicsIG9yICdTRUxFQ1QgZXhwcmVzc2lvbihzKSBJTlRPIHZhcmlhYmxlcyhzKScuACclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgVVRGOE1CMy4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIFVURjhNQjQgd2l0aCBhbiBhcHByb3ByaWF0ZSBjb2xsYXRpb24gaW5zdGVhZC4ATmVzdGVkIGNvbW1lbnQgc3ludGF4IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBSZWZlcmVuY2luZyBjb2x1bW4gJyVzJyBhbmQgcmVmZXJlbmNlZCBjb2x1bW4gJyVzJyBpbiBmb3JlaWduIGtleSBjb25zdHJhaW50ICclcycgYXJlIGluY29tcGF0aWJsZS4AVGltZW91dCBleGNlZWRlZCBmb3IgaGVsZCBzdGF0ZW1lbnQgd2hpbGUgbmV3IEdyb3VwIFJlcGxpY2F0aW9uIHByaW1hcnkgbWVtYmVyIGlzIGFwcGx5aW5nIGJhY2tsb2cuAEhlbGQgc3RhdGVtZW50IGFib3J0ZWQgYmVjYXVzZSBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gZ290IHNodXQgZG93biBvciB0aHJlYWQgd2FzIGtpbGxlZCB3aGlsZSBuZXcgcHJpbWFyeSBtZW1iZXIgd2FzIGFwcGx5aW5nIGJhY2tsb2cuAEhlbGQgc3RhdGVtZW50IHdhcyBhYm9ydGVkIGR1ZSB0byBtZW1iZXIgYmVpbmcgaW4gZXJyb3Igc3RhdGUsIHdoaWxlIGJhY2tsb2cgaXMgYmVpbmcgYXBwbGllZCBkdXJpbmcgR3JvdXAgUmVwbGljYXRpb24gcHJpbWFyeSBlbGVjdGlvbi4ARmFpbGVkIHRvIGZldGNoIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4AQ2FuJ3QgZmluZCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaW4gdGhlIHNlcnZlciBsb2cgaWYgYSBrZXlyaW5nIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LgBGZXRjaGVkIGFuIGludmFsaWQga2V5IGZyb20ga2V5cmluZy4ARXJyb3IgcmVhZGluZyBhIHJlcGxpY2F0aW9uIGxvZyBlbmNyeXB0aW9uIGhlYWRlcjogJXMuAEZhaWxlZCB0byByb3RhdGUgc29tZSBsb2dzIGFmdGVyIGNoYW5naW5nIGJpbmxvZyBlbmNyeXB0aW9uIHNldHRpbmdzLiBQbGVhc2UgZml4IHRoZSBwcm9ibGVtIGFuZCByb3RhdGUgdGhlIGxvZ3MgbWFudWFsbHkuAEtleSAlcyBleGlzdHMgdW5leHBlY3RlZC4ARmFpbGVkIHRvIGdlbmVyYXRlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gc3RvcmUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byByZW1vdmUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byBjaGFuZ2UgYmlubG9nX2VuY3J5cHRpb24gdmFsdWUuICUtLjgwcy4AVW5hYmxlIHRvIHJlY292ZXIgYmlubG9nIGVuY3J5cHRpb24gbWFzdGVyIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBzbG93IHF1ZXJ5IGxvZyBmaWxlIGZvcm1hdCBjaGFuZ2VkIGFzIHJlcXVlc3RlZCwgYnV0IHNldHRpbmcgd2lsbCBoYXZlIG5vIGVmZmVjdCB3aGVuIG5vdCBhY3R1YWxseSBsb2dnaW5nIHRvIGEgZmlsZS4AVGhlIG9wdGlvbiBncm91cF9yZXBsaWNhdGlvbl9jb25zaXN0ZW5jeSBjYW5ub3QgYmUgdXNlZCBvbiB0aGUgY3VycmVudCBtZW1iZXIgc3RhdGUuAEVycm9yIHdoaWxlIHdhaXRpbmcgZm9yIGdyb3VwIHRyYW5zYWN0aW9ucyBjb21taXQgb24gZ3JvdXBfcmVwbGljYXRpb25fY29uc2lzdGVuY3k9ICdCRUZPUkUnLgBFcnJvciB3aGlsZSB3YWl0aW5nIGZvciB0cmFuc2FjdGlvbnMgd2l0aCBncm91cF9yZXBsaWNhdGlvbl9jb25zaXN0ZW5jeT0gJ0FGVEVSJyB0byBjb21taXQuAFRoZSBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gaXMgc3RvcHBpbmcsIHRoZXJlZm9yZSBuZXcgdHJhbnNhY3Rpb25zIGFyZSBub3QgYWxsb3dlZCB0byBzdGFydC4ARXhwcmVzc2lvbiBvZiBmdW5jdGlvbmFsIGluZGV4ICclcycgY2Fubm90IHJlZmVyIHRvIGEgcm93IHZhbHVlLgBGYWlsZWQgdG8gZW5jcnlwdCBjb250ZW50IHRvIHdyaXRlIGludG8gYmlubG9nIGZpbGU6ICVzLgBQYWdlIFRyYWNraW5nIGlzIG5vdCBzdGFydGVkIHlldC4AVHJhY2tpbmcgd2FzIG5vdCBlbmFibGVkIGZvciB0aGUgTFNOIHJhbmdlIHNwZWNpZmllZABDYW5ub3QgcHVyZ2UgZGF0YSB3aGVuIGNvbmN1cnJlbnQgY2xvbmUgaXMgaW4gcHJvZ3Jlc3MuIFRyeSBsYXRlci4AQ2Fubm90IHJvdGF0ZSBiaW5hcnkgbG9nIG1hc3RlciBrZXkgd2hlbiAnYmlubG9nLWVuY3J5cHRpb24nIGlzIG9mZi4AVW5hYmxlIHRvIHJlY292ZXIgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LCB0aGUgY29tYmluYXRpb24gb2YgbmV3X21hc3Rlcl9rZXlfc2Vxbm89JXUsIG1hc3Rlcl9rZXlfc2Vxbm89JXUgYW5kIG9sZF9tYXN0ZXJfa2V5X3NlcW5vPSV1IGFyZSB3cm9uZy4ARmFpbGVkIHRvIG9wZXJhdGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IG9uIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4gVGhlIHN0YXRlbWVudCBoYWQgbm8gZWZmZWN0OiB0aGUgb2xkIGJpbmFyeSBsb2cgbWFzdGVyIGtleSBpcyBzdGlsbCBpbiB1c2UsIHRoZSBrZXlyaW5nLCBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcyBhcmUgdW5jaGFuZ2VkLCBhbmQgdGhlIHNlcnZlciBjb3VsZCBub3Qgc3RhcnQgdXNpbmcgYSBuZXcgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IGZvciBlbmNyeXB0aW5nIG5ldyBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcy4ARmFpbGVkIHRvIHJvdGF0ZSBvbmUgb3IgbW9yZSBiaW5hcnkgb3IgcmVsYXkgbG9nIGZpbGVzLiBBIG5ldyBiaW5hcnkgbG9nIG1hc3RlciBrZXkgd2FzIGdlbmVyYXRlZCBhbmQgd2lsbCBiZSB1c2VkIHRvIGVuY3J5cHQgbmV3IGJpbmFyeSBhbmQgcmVsYXkgbG9nIGZpbGVzLiBUaGVyZSBtYXkgc3RpbGwgZXhpc3QgYmluYXJ5IG9yIHJlbGF5IGxvZyBmaWxlcyB1c2luZyB0aGUgcHJldmlvdXMgYmluYXJ5IGxvZyBtYXN0ZXIga2V5LgAlcy4gQSBuZXcgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHdhcyBnZW5lcmF0ZWQgYW5kIHdpbGwgYmUgdXNlZCB0byBlbmNyeXB0IG5ldyBiaW5hcnkgYW5kIHJlbGF5IGxvZyBmaWxlcy4gVGhlcmUgbWF5IHN0aWxsIGV4aXN0IGJpbmFyeSBvciByZWxheSBsb2cgZmlsZXMgdXNpbmcgdGhlIHByZXZpb3VzIGJpbmFyeSBsb2cgbWFzdGVyIGtleS4ARmFpbGVkIHRvIHJlbW92ZSB1bnVzZWQgYmluYXJ5IGxvZyBlbmNyeXB0aW9uIGtleXMgZnJvbSB0aGUga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgdW51c2VkIGJpbmFyeSBsb2cgZW5jcnlwdGlvbiBrZXlzIG1heSBzdGlsbCBleGlzdCBpbiB0aGUga2V5cmluZywgYW5kIHRoZXkgd2lsbCBiZSByZW1vdmVkIHVwb24gc2VydmVyIHJlc3RhcnQgb3IgbmV4dCAnQUxURVIgSU5TVEFOQ0UgUk9UQVRFIEJJTkxPRyBNQVNURVIgS0VZJyBleGVjdXRpb24uAEZhaWxlZCB0byByZW1vdmUgYXV4aWxpYXJ5IGJpbmFyeSBsb2cgZW5jcnlwdGlvbiBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuIFRoZSBjbGVhbnVwIG9mIHRoZSBiaW5hcnkgbG9nIG1hc3RlciBrZXkgcm90YXRpb24gcHJvY2VzcyBkaWQgbm90IGZpbmlzaCBhcyBleHBlY3RlZCBhbmQgdGhlIGNsZWFudXAgd2lsbCB0YWtlIHBsYWNlIHVwb24gc2VydmVyIHJlc3RhcnQgb3IgbmV4dCAnQUxURVIgSU5TVEFOQ0UgUk9UQVRFIEJJTkxPRyBNQVNURVIgS0VZJyBleGVjdXRpb24uAEFuIGV4cHJlc3Npb24gb2Ygbm9uLWJvb2xlYW4gdHlwZSBzcGVjaWZpZWQgdG8gYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJy4AQ29sdW1uIGNoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIHJlZmVyZW5jZXMgb3RoZXIgY29sdW1uLgBBbiBleHByZXNzaW9uIG9mIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY29udGFpbnMgZGlzYWxsb3dlZCBmdW5jdGlvbjogJXMuAEFuIGV4cHJlc3Npb24gb2YgYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJyBjb250YWlucyBkaXNhbGxvd2VkIGZ1bmN0aW9uLgBBbiBleHByZXNzaW9uIG9mIGEgY2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY2Fubm90IHJlZmVyIHRvIGEgdXNlciBvciBzeXN0ZW0gdmFyaWFibGUuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIGNhbm5vdCByZWZlciB0byBhIHJvdyB2YWx1ZS4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgY2Fubm90IHJlZmVyIHRvIGFuIGF1dG8taW5jcmVtZW50IGNvbHVtbi4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgaXMgdmlvbGF0ZWQuAENoZWNrIGNvbnN0cmFpbnQgJyUtLjE5MnMnIHJlZmVycyB0byBub24tZXhpc3RpbmcgY29sdW1uICclLS4xOTJzJy4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgaXMgbm90IGZvdW5kIGluIHRoZSB0YWJsZS4ARHVwbGljYXRlIGNoZWNrIGNvbnN0cmFpbnQgbmFtZSAnJS0uMTkycycuAENvbHVtbiAnJS0uMTkycycgY2Fubm90IGJlIHVzZWQgaW4gYSBjaGVjayBjb25zdHJhaW50ICclLS4xOTJzJzogbmVlZGVkIGluIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCAnJS0uMTkycycgcmVmZXJlbnRpYWwgYWN0aW9uLgBDcmVhdGluZyBhbiB1bmVuY3J5cHRlZCB0YWJsZSBpbiBhIGRhdGFiYXNlIHdpdGggZGVmYXVsdCBlbmNyeXB0aW9uIGVuYWJsZWQuAFJlcXVlc3QgdG8gY3JlYXRlICVzIHRhYmxlIHdoaWxlIHVzaW5nIGFuICVzIHRhYmxlc3BhY2UuAFRhYmxlIGVuY3J5cHRpb24gZGlmZmVyIGZyb20gaXRzIGRhdGFiYXNlIGRlZmF1bHQgZW5jcnlwdGlvbiwgYW5kIHVzZXIgZG9lc24ndCBoYXZlIGVub3VnaCBwcml2aWxlZ2UuAERhdGFiYXNlIGRlZmF1bHQgZW5jcnlwdGlvbiBkaWZmZXIgZnJvbSAnZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uJyBzZXR0aW5nLCBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AVGFibGVzcGFjZSBlbmNyeXB0aW9uIGRpZmZlciBmcm9tICdkZWZhdWx0X3RhYmxlX2VuY3J5cHRpb24nIHNldHRpbmcsIGFuZCB1c2VyIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggcHJpdmlsZWdlLgBUaGlzIHRhYmxlc3BhY2UgY2FuJ3QgYmUgZW5jcnlwdGVkLCBiZWNhdXNlIG9uZSBvZiB0YWJsZSdzIHNjaGVtYSBoYXMgZGVmYXVsdCBlbmNyeXB0aW9uIE9GRiBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AVGhpcyB0YWJsZXNwYWNlIGNhbid0IGJlIGRlY3J5cHRlZCwgYmVjYXVzZSBvbmUgb2YgdGFibGUncyBzY2hlbWEgaGFzIGRlZmF1bHQgZW5jcnlwdGlvbiBPTiBhbmQgdXNlciBkb2Vzbid0IGhhdmUgZW5vdWdoIHByaXZpbGVnZS4AQ2Fubm90IGRldGVybWluZSB0aGUgdHlwZSBvZiB0aGUgdGFibGVzcGFjZSBuYW1lZCAnJXMnLgBTb3VyY2UgdGFibGVzcGFjZSBpcyBlbmNyeXB0ZWQgYnV0IHRhcmdldCB0YWJsZXNwYWNlIGlzIG5vdC4ARU5DUllQVElPTiBjbGF1c2UgaXMgbm90IHZhbGlkIGZvciAlcyB0YWJsZXNwYWNlLgBNdWx0aXBsZSAlcyBjbGF1c2VzAEdSQU5UIC4uLiBBUyBpcyBjdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgZm9yIGdsb2JhbCBwcml2aWxlZ2VzLgBFaXRoZXIgc29tZSBvZiB0aGUgYXV0aG9yaXphdGlvbiBJRHMgaW4gdGhlIEFTIGNsYXVzZSBhcmUgaW52YWxpZCBvciB0aGUgY3VycmVudCB1c2VyIGxhY2tzIHByaXZpbGVnZXMgdG8gZXhlY3V0ZSB0aGUgc3RhdGVtZW50LgBDb2x1bW4gJyVzJyBoYXMgYSBmdW5jdGlvbmFsIGluZGV4IGRlcGVuZGVuY3kgYW5kIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAFBsdWdpbiAnJXMnIGlzIG5vdCB0byBiZSB1c2VkIGFzIGFuICJlYXJseSIgcGx1Z2luLiBEb24ndCBhZGQgaXQgdG8gLS1lYXJseS1wbHVnaW4tbG9hZCwga2V5cmluZyBtaWdyYXRpb24gZXRjLgBSZWRvIGxvZyBhcmNoaXZpbmcgc3RhcnQgcHJvaGliaXRzIHBhdGggbmFtZSBpbiAnc3ViZGlyJyBhcmd1bWVudABSZWRvIGxvZyBhcmNoaXZpbmcgc3RhcnQgdGltZWQgb3V0AFNlcnZlciB2YXJpYWJsZSAnaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfZGlycycgaXMgTlVMTCBvciBlbXB0eQBMYWJlbCAnJS4xOTJzJyBub3QgZm91bmQgaW4gc2VydmVyIHZhcmlhYmxlICdpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9kaXJzJwBEaXJlY3RvcnkgaXMgZW1wdHkgYWZ0ZXIgbGFiZWwgJyUuMTkycycgaW4gc2VydmVyIHZhcmlhYmxlICdpbm5vZGJfcmVkb19sb2dfYXJjaGl2ZV9kaXJzJwBSZWRvIGxvZyBhcmNoaXZlIGRpcmVjdG9yeSAnJS4xOTJzJyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYSBkaXJlY3RvcnkAUmVkbyBsb2cgYXJjaGl2ZSBkaXJlY3RvcnkgJyUuMTkycycgaXMgaW4sIHVuZGVyLCBvciBvdmVyIHNlcnZlciBkaXJlY3RvcnkgJyUuMTkycycgLSAnJS4xOTJzJwBSZWRvIGxvZyBhcmNoaXZlIGRpcmVjdG9yeSAnJS4xOTJzJyBpcyBhY2Nlc3NpYmxlIHRvIGFsbCBPUyB1c2VycwBDYW5ub3QgY3JlYXRlIHJlZG8gbG9nIGFyY2hpdmUgZmlsZSAnJS41MTJzJyAoT1MgZXJybm86ICVkIC0gJS4xMjhzKQBSZWRvIGxvZyBhcmNoaXZpbmcgaGFzIGJlZW4gc3RhcnRlZCBvbiAnJS41MTJzJyAtIENhbGwgaW5ub2RiX3JlZG9fbG9nX2FyY2hpdmVfc3RvcCgpIGZpcnN0AFJlZG8gbG9nIGFyY2hpdmluZyBpcyBub3QgYWN0aXZlAFJlZG8gbG9nIGFyY2hpdmluZyBmYWlsZWQ6ICUuNTEycwBSZWRvIGxvZyBhcmNoaXZpbmcgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQgYnkgdGhpcyBzZXNzaW9uAFJlZ2V4IGVycm9yOiAlLS4yNTZzIGluIGZ1bmN0aW9uICVzLgBJbnZhbGlkIEpTT04gdHlwZSBpbiBhcmd1bWVudCAldSB0byBmdW5jdGlvbiAlczsgYW4gJXMgaXMgcmVxdWlyZWQuAENhbm5vdCBjb252ZXJ0IHN0cmluZyAnJS42NHMnIGZyb20gJXMgdG8gJXMAQ29sdW1uICclcycgaGFzIGEgcGFydGl0aW9uaW5nIGZ1bmN0aW9uIGRlcGVuZGVuY3kgYW5kIGNhbm5vdCBiZSBkcm9wcGVkIG9yIHJlbmFtZWQuAEFVVE9fSU5DUkVNRU5UIHN1cHBvcnQgZm9yIEZMT0FUL0RPVUJMRSBjb2x1bW5zIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciByZW1vdmluZyBBVVRPX0lOQ1JFTUVOVCBmcm9tIGNvbHVtbiAnJS0uMTkycycuAENhbm5vdCBzdG9wIHRoZSByZXBsaWNhIFNRTCB0aHJlYWQgd2hpbGUgdGhlIGluc3RhbmNlIGlzIGxvY2tlZCBmb3IgYmFja3VwLiBUcnkgcnVubmluZyBgVU5MT0NLIElOU1RBTkNFYCBmaXJzdC4AU3BlY2lmeWluZyBudW1iZXIgb2YgZGlnaXRzIGZvciBmbG9hdGluZyBwb2ludCBkYXRhIHR5cGVzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBVTlNJR05FRCBmb3IgZGVjaW1hbCBhbmQgZmxvYXRpbmcgcG9pbnQgZGF0YSB0eXBlcyBpcyBkZXByZWNhdGVkIGFuZCBzdXBwb3J0IGZvciBpdCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4ASW50ZWdlciBkaXNwbGF5IHdpZHRoIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBUaGUgWkVST0ZJTEwgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBVc2UgdGhlIExQQUQgZnVuY3Rpb24gdG8gemVyby1wYWQgbnVtYmVycywgb3Igc3RvcmUgdGhlIGZvcm1hdHRlZCBudW1iZXJzIGluIGEgQ0hBUiBjb2x1bW4uAENsb25lIERvbm9yIEVycm9yOiAlLjUxMnMuAENsb25lIHJlY2VpdmVkIHVuZXhwZWN0ZWQgcmVzcG9uc2UgZnJvbSBEb25vciA6ICUuNTEycy4AQ2xvbmUgRG9ub3IgTXlTUUwgdmVyc2lvbjogJS42NHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IE15U1FMIHZlcnNpb24gJS42NHMuAENsb25lIERvbm9yIE9TOiAlLjY0cyBpcyBkaWZmZXJlbnQgZnJvbSBSZWNpcGllbnQgT1M6ICUuNjRzLgBDbG9uZSBEb25vciBwbGF0Zm9ybTogJS42NHMgaXMgZGlmZmVyZW50IGZyb20gUmVjaXBpZW50IHBsYXRmb3JtOiAlLjY0cy4AQ2xvbmUgRG9ub3IgY29sbGF0aW9uOiAlLjEyOHMgaXMgdW5hdmFpbGFibGUgaW4gUmVjaXBpZW50LgBDbG9uZSBDb25maWd1cmF0aW9uICUuMTI4czogRG9ub3IgdmFsdWU6ICUuMTI4cyBpcyBkaWZmZXJlbnQgZnJvbSBSZWNpcGllbnQgdmFsdWU6ICUuMTI4cy4AQ2xvbmUgc3lzdGVtIGNvbmZpZ3VyYXRpb246ICUuNTEycwBDbG9uZSBEb25vciBwbHVnaW4gJS4xMjhzIGlzIG5vdCBhY3RpdmUgaW4gUmVjaXBpZW50LgBDbG9uZSBjYW5ub3QgdXNlIGxvb3AgYmFjayBjb25uZWN0aW9uIHdoaWxlIGNsb25pbmcgaW50byBjdXJyZW50IGRhdGEgZGlyZWN0b3J5LgBDbG9uZSBuZWVkcyBTU0wgY29ubmVjdGlvbiBmb3IgZW5jcnlwdGVkIHRhYmxlLgBDbG9uZSBlc3RpbWF0ZWQgZGF0YWJhc2Ugc2l6ZSBpcyAlLjY0cy4gQXZhaWxhYmxlIHNwYWNlICUuNjRzIGlzIG5vdCBlbm91Z2guAENvbmN1cnJlbnQgY2xvbmUgaW4gcHJvZ3Jlc3MuIFBsZWFzZSB0cnkgYWZ0ZXIgY2xvbmUgaXMgY29tcGxldGUuAFRoZSBjbG9uZSBvcGVyYXRpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoZW4gJXMuAENhbm5vdCBncmFudCByb2xlcyB0byBhbiBhbm9ueW1vdXMgdXNlci4AJXMARW1wdHkgcGFzc3dvcmQgY2FuIG5vdCBiZSByZXRhaW5lZCBhcyBzZWNvbmQgcGFzc3dvcmQgZm9yIHVzZXIgJyVzJ0AnJXMnLgBBY2Nlc3MgZGVuaWVkIGZvciBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIHRvIGRhdGFiYXNlICclLS4xOTJzJy4AQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLgBHdGlkIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBvcGVuZWQuAFRoZSBnZW9tZXRyeSBwYXNzZWQgdG8gZnVuY3Rpb24gJXMgaXMgaW4gU1JJRCAwLCB3aGljaCBkb2Vzbid0IHNwZWNpZnkgYSBsZW5ndGggdW5pdC4gQ2FuJ3QgY29udmVydCB0byAnJXMnLgBFcnJvciBpbnN0YWxsaW5nIHBsdWdpbiAnJXMnOiAlcwBTdG9yYWdlIGVuZ2luZSBjb3VsZCBub3QgYWxsb2NhdGUgdGVtcG9yYXJ5IHRhYmxlc3BhY2UgZm9yIHRoaXMgc2Vzc2lvbi4AR290IHVua25vd24gZXJyb3I6ICVkAENvdWxkIG5vdCBjaGFuZ2UgY29sdW1uICclcycgb2YgdGFibGUgJyVzJy4gVGhlIHJlc3VsdGluZyBzaXplIG9mIGluZGV4ICclcycgd291bGQgZXhjZWVkIHRoZSBtYXgga2V5IGxlbmd0aCBvZiAlZCBieXRlcy4AQSBjYXB0dXJlIGdyb3VwIGhhcyBhbiBpbnZhbGlkIG5hbWUuAEZhaWxlZCB0byBzZXQgdXAgU1NMIGJlY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBTU0wgbGlicmFyeSBlcnJvcjogJXMAU2Vjb25kYXJ5IGVuZ2luZSBvcGVyYXRpb24gZmFpbGVkLiAlcy4ARERMcyBvbiBhIHRhYmxlIHdpdGggYSBzZWNvbmRhcnkgZW5naW5lIGRlZmluZWQgYXJlIG5vdCBhbGxvd2VkLgBJbmNvcnJlY3QgY3VycmVudCBwYXNzd29yZC4gU3BlY2lmeSB0aGUgY29ycmVjdCBwYXNzd29yZCB3aGljaCBoYXMgdG8gYmUgcmVwbGFjZWQuAEN1cnJlbnQgcGFzc3dvcmQgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBSRVBMQUNFIGNsYXVzZSBpbiBvcmRlciB0byBjaGFuZ2UgaXQuAERvIG5vdCBzcGVjaWZ5IHRoZSBjdXJyZW50IHBhc3N3b3JkIHdoaWxlIGNoYW5naW5nIGl0IGZvciBvdGhlciB1c2Vycy4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiBpcyBiZWluZyBjaGFuZ2VkLgBDdXJyZW50IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGJlY2F1c2UgbmV3IHBhc3N3b3JkIGlzIGVtcHR5LgBBdCBsZWFzdCBvbmUgcGFydGlhbCByZXZva2UgZXhpc3RzIG9uIGEgZGF0YWJhc2UuIFRoZSBzeXN0ZW0gdmFyaWFibGUgJ0BAcGFydGlhbF9yZXZva2VzJyBtdXN0IGJlIHNldCB0byBPTi4AQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBpcyBzZXQgYXMgbWFuZGF0b3J5X3JvbGVzLiBDYW5ub3QgZ3JhbnQgdGhlICclcycgcHJpdmlsZWdlLgBUaGUgdXNlIG9mIHJlcGxpY2F0aW9uIGZpbHRlcnMgd2l0aCBYQSB0cmFuc2FjdGlvbnMgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGNhbiBsZWFkIHRvIGFuIHVuZGVmaW5lZCBzdGF0ZSBpbiB0aGUgcmVwbGljYS4Ac3FsX21vZGU9MHglMDh4IGlzIG5vdCBzdXBwb3J0ZWQuAEludmFsaWQgbWF0Y2ggbW9kZSBmbGFnIGluIHJlZ3VsYXIgZXhwcmVzc2lvbi4AJyVzJyBwcml2aWxlZ2UgZm9yIGRhdGFiYXNlICclcycgZXhpc3RzIGJvdGggYXMgcGFydGlhbCByZXZva2UgYW5kIG15c3FsLmRiIHNpbXVsdGFuZW91c2x5LiBJdCBjb3VsZCBtZWFuIHRoYXQgdGhlICdteXNxbCcgc2NoZW1hIGlzIGNvcnJ1cHRlZC4AVGhlcmUncyBubyB1bml0IG9mIG1lYXN1cmUgbmFtZWQgJyVzJy4ASW52YWxpZCBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnLgBPdXQgb2YgcmFuZ2UgSlNPTiB2YWx1ZSBmb3IgQ0FTVCBmb3IgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJy4ARXhjZWVkZWQgbWF4IG51bWJlciBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IHZhbHVlKHMpLgBFeGNlZWRlZCBtYXggdG90YWwgbGVuZ3RoIG9mIHZhbHVlcyBwZXIgcmVjb3JkIGZvciBtdWx0aS12YWx1ZWQgaW5kZXggJyUtLjY0cycgYnkgJXUgYnl0ZXMuAERhdGEgdG9vIGxvbmcgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycuAENhbm5vdCBzdG9yZSBhbiBhcnJheSBvciBhbiBvYmplY3QgaW4gYSBzY2FsYXIga2V5IHBhcnQgb2YgdGhlIGluZGV4ICclLjE5MnMnLgBDYW5ub3QgdXNlIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycgZHVlIHRvIHR5cGUgb3IgY29sbGF0aW9uIGNvbnZlcnNpb24uAFRoZSBmdW5jdGlvbiAnJXMnIGZhaWxlZC4gJXMAQ2Fubm90IHVwZGF0ZSBHVElEX1BVUkdFRCB3aXRoIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gcnVubmluZwBHcm91cGluZyBvbiB0ZW1wb3JhbCBpcyBub24tZGV0ZXJtaW5pc3RpYyBmb3IgdGltZXpvbmVzIGhhdmluZyBEU1QuIFBsZWFzZSBjb25zaWRlciBzd2l0Y2hpbmcgdG8gVVRDIGZvciB0aGlzIHF1ZXJ5LgBMb25nIGRhdGFiYXNlIG5hbWUgYW5kIGlkZW50aWZpZXIgZm9yIG9iamVjdCByZXN1bHRlZCBpbiBhIHBhdGggbGVuZ3RoIHRvbyBsb25nIGZvciB0YWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgdGhlIHBhdGggbGltaXQgZm9yIHlvdXIgT1MuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyUuNjRzJ0AnJS42NHMnLiBSb2xlIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbjogJyUuMzJzJwAnYXVkaXRfbG9nJyBwYXNzd29yZCBoYXMgYmVlbiBjb3BpZWQgaW50byAnJS4zMnMnIGFuZCB3aWxsIGJlIHJlbW92ZWQgd2l0aCBmaXJzdCBwdXJnZWQgcGFzc3dvcmQuAFN0YXJ0ZWQgYXV0by1yZWpvaW4gcHJvY2VkdXJlIGF0dGVtcHQgJWx1IG9mICVsdQBBIHBsdWdpbiB3YXMgbG9hZGVkIG9yIHVubG9hZGVkIGR1cmluZyBhIHF1ZXJ5LCBhIHN5c3RlbSB2YXJpYWJsZSB0YWJsZSB3YXMgY2hhbmdlZC4AQSBwbHVnaW4gd2FzIGxvYWRlZCBvciB1bmxvYWRlZCBkdXJpbmcgYSBxdWVyeSwgYSBnbG9iYWwgc3RhdHVzIHZhcmlhYmxlIHdhcyBjaGFuZ2VkLgBUaGUgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gY29tbWFuZCBmYWlsZWQgdG8gc3RhcnQgaXRzIG1lc3NhZ2Ugc2VydmljZS4ASW52YWxpZCBTT1VSQ0VfQ09NUFJFU1NJT05fQUxHT1JJVEhNUyAnJS4xOTJzJyBmb3IgY2hhbm5lbCAnJS4xOTJzJy4ASW52YWxpZCBTT1VSQ0VfWlNURF9DT01QUkVTU0lPTl9MRVZFTCAldSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4ASW52YWxpZCBjb21wcmVzc2lvbiBhbGdvcml0aG0gJyUuMTkycycuAEludmFsaWQgenN0ZCBjb21wcmVzc2lvbiBsZXZlbCBmb3IgYWxnb3JpdGhtICclLjE5MnMnLgBTcGVjaWZpZWQgY29tcHJlc3Npb24gYWxnb3JpdGhtIGxpc3QgJyUuMTkycycgZXhjZWVkcyB0b3RhbCBjb3VudCBvZiAzIGZvciBjaGFubmVsICclLjE5MnMnLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgYEBgJS4yNTVzYCwgYnV0IGFub255bW91cyB1c2VycyBhcmUgZGlzYWxsb3dlZCBmb3IgUFJJVklMRUdFX0NIRUNLU19VU0VSLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgJS42NHNgQGAlLjI1NXNgLCBidXQgdGhpcyBpcyBub3QgYW4gZXhpc3RpbmcgdXNlci4ASW52YWxpZCwgY29ycnVwdGVkIFBSSVZJTEVHRV9DSEVDS1NfVVNFUiB3YXMgZm91bmQgaW4gdGhlIHJlcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gVXNlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gUFJJVklMRUdFX0NIRUNLU19VU0VSIHRvIGNvcnJlY3QgdGhlIGNvbmZpZ3VyYXRpb24uAFBSSVZJTEVHRV9DSEVDS1NfVVNFUiBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3YXMgc2V0IHRvIGAlLjY0c2BAYCUuMjU1c2AsIGJ1dCB0aGlzIHVzZXIgZG9lcyBub3QgaGF2ZSBSRVBMSUNBVElPTl9BUFBMSUVSIHByaXZpbGVnZS4ARHluYW1pYyBwcml2aWxlZ2UgJyVzJyBpcyBub3QgcmVnaXN0ZXJlZCB3aXRoIHRoZSBzZXJ2ZXIuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IGlzIGludmFsaWQuAEZ1bmN0aW9uICclcycgZmFpbGVkIGJlY2F1c2Uga2V5IHR5cGUgaXMgaW52YWxpZC4ARnVuY3Rpb24gJyVzJyBmYWlsZWQgYmVjYXVzZSBrZXkgbGVuZ3RoIGlzIHRvbyBsb25nLgBGdW5jdGlvbiAnJXMnIGZhaWxlZCBiZWNhdXNlIGtleSB0eXBlIGlzIHRvbyBsb25nLgAlcy4ASW52YWxpZCBjaGFyYWN0ZXIgc2V0ICclcycgd2FzIHNwZWNpZmllZC4gSXQgbXVzdCBiZSBlaXRoZXIgY2hhcmFjdGVyIHNldCBuYW1lIG9yIGNvbGxhdGlvbiBuYW1lIGFzIHN1cHBvcnRlZCBieSBzZXJ2ZXIuAEludmFsaWQgY2hhcmFjdGVyIHNldCAnJXMnIHdhcyBzcGVjaWZpZWQuIEl0IG11c3QgYmUgYSBjaGFyYWN0ZXIgc2V0IG5hbWUgYXMgc3VwcG9ydGVkIGJ5IHNlcnZlci4ASW52YWxpZCBjb2xsYXRpb24gJyVzJyB3YXMgc3BlY2lmaWVkLiBJdCBtdXN0IGJlIGEgY29sbGF0aW9uIG5hbWUgYXMgc3VwcG9ydGVkIGJ5IHNlcnZlci4ASW52YWxpZCBleHRlbnNpb24gYXJndW1lbnQgdHlwZSAnJXMnIHdhcyBzcGVjaWZpZWQuIFJlZmVyIHRoZSBNeVNRTCBtYW51YWwgZm9yIHRoZSB2YWxpZCBVREYgZXh0ZW5zaW9uIGFyZ3VtZW50cyB0eXBlLgBUYWJsZSBoYXMgbXVsdGlwbGUgY29uc3RyYWludHMgd2l0aCB0aGUgbmFtZSAnJS0uMTkycycuIFBsZWFzZSB1c2UgY29uc3RyYWludCBzcGVjaWZpYyAnJXMnIGNsYXVzZS4AQ29uc3RyYWludCAnJS0uMTkycycgZG9lcyBub3QgZXhpc3QuAEFsdGVyaW5nIGNvbnN0cmFpbnQgZW5mb3JjZW1lbnQgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIGNvbnN0cmFpbnQgJyUtLjE5MnMnLiBFbmZvcmNlbWVudCBzdGF0ZSBhbHRlciBpcyBub3Qgc3VwcG9ydGVkIGZvciB0aGUgUFJJTUFSWSwgVU5JUVVFIGFuZCBGT1JFSUdOIEtFWSB0eXBlIGNvbnN0cmFpbnRzLgBFYWNoIHJvdyBvZiBhIFZBTFVFUyBjbGF1c2UgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBjb2x1bW4sIHVubGVzcyB3aGVuIHVzZWQgYXMgc291cmNlIGluIGFuIElOU0VSVCBzdGF0ZW1lbnQuAEEgVkFMVUVTIGNsYXVzZSBjYW5ub3QgdXNlIERFRkFVTFQgdmFsdWVzLCB1bmxlc3MgdXNlZCBhcyBhIHNvdXJjZSBpbiBhbiBJTlNFUlQgc3RhdGVtZW50LgBUaGUgcXVlcnkgZG9lcyBub3QgY29tcGx5IHdpdGggdmFyaWFibGUgcmVxdWlyZV9yb3dfZm9ybWF0IHJlc3RyaWN0aW9ucy4AVGhlIHJlcXVlc3RlZCB2YWx1ZSAlcyBpcyBpbnZhbGlkIGZvciBSRVFVSVJFX1JPV19GT1JNQVQsIG11c3QgYmUgZWl0aGVyIDAgb3IgMS4ARmFpbGVkIHRvIGFjcXVpcmUgbG9jayBvbiB1c2VyIG1hbmFnZW1lbnQgc2VydmljZSwgdW5hYmxlIHRvIGRldGVybWluZSBpZiByb2xlIGAlc2BAYCVzYCBpcyBtYW5kYXRvcnkARmFpbGVkIHRvIGFjcXVpcmUgbG9jayBvbiB1c2VyIG1hbmFnZW1lbnQgc2VydmljZSwgdW5hYmxlIHRvIGZldGNoIG1hbmRhdG9yeSByb2xlIGxpc3QATG9hZGluZyBsb2NhbCBkYXRhIGlzIGRpc2FibGVkOyB0aGlzIG11c3QgYmUgZW5hYmxlZCBvbiBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzaWRlcwBGYWlsZWQgdG8gaW1wb3J0ICVzIGJlY2F1c2UgdGhlIENGRyBmaWxlIHZlcnNpb24gKCV1KSBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24gKCV1KQBPdXQgb2YgbWVtb3J5AENoYXJhY3RlciBzZXQgY2FuIGJlIHNldCBvbmx5IGZvciB0aGUgVURGIGFyZ3VtZW50IHR5cGUgU1RSSU5HLgBDaGFyYWN0ZXIgc2V0IGNhbiBiZSBzZXQgb25seSBmb3IgdGhlIFVERiBSRVRVUk4gdHlwZSBTVFJJTkcuAE11bHRpcGxlIElOVE8gY2xhdXNlcyBpbiBvbmUgcXVlcnkgYmxvY2suAE1pc3BsYWNlZCBJTlRPIGNsYXVzZSwgSU5UTyBpcyBub3QgYWxsb3dlZCBpbnNpZGUgc3VicXVlcmllcywgYW5kIG11c3QgYmUgcGxhY2VkIGF0IGVuZCBvZiBVTklPTiBjbGF1c2VzLgBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLiBBY2NvdW50IGlzIGJsb2NrZWQgZm9yICVzIGRheShzKSAoJXMgZGF5KHMpIHJlbWFpbmluZykgZHVlIHRvICV1IGNvbnNlY3V0aXZlIGZhaWxlZCBsb2dpbnMuAFVOU0lHTkVEIGZvciB0aGUgWUVBUiBkYXRhIHR5cGUgaXMgZGVwcmVjYXRlZCBhbmQgc3VwcG9ydCBmb3IgaXQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAENsb25lIG5lZWRzIG1heF9hbGxvd2VkX3BhY2tldCB2YWx1ZSB0byBiZSAldSBvciBtb3JlLiBDdXJyZW50IHZhbHVlIGlzICV1AEZhaWxlZCB0byAlcyBzZGkgZm9yICVzLiVzIGluICVzIGR1ZSB0byBtaXNzaW5nIHJlY29yZC4AQ2hlY2sgY29uc3RyYWludCAnJS0uMTkycycgdXNlcyBjb2x1bW4gJyUtLjE5MnMnLCBoZW5jZSBjb2x1bW4gY2Fubm90IGJlIGRyb3BwZWQgb3IgcmVuYW1lZC4AVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBydW5uaW5nOyBydW4gU1RPUCBHUk9VUF9SRVBMSUNBVElPTiBmaXJzdABTcGVjaWZ5aW5nIGFuIE9OIEVNUFRZIGNsYXVzZSBhZnRlciB0aGUgT04gRVJST1IgY2xhdXNlIGluIGEgSlNPTl9UQUJMRSBjb2x1bW4gZGVmaW5pdGlvbiBpcyBkZXByZWNhdGVkIHN5bnRheCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFNwZWNpZnkgT04gRU1QVFkgYmVmb3JlIE9OIEVSUk9SIGluc3RlYWQuAFRoZSBJTlRPIGNsYXVzZSBpcyBkZXByZWNhdGVkIGluc2lkZSBxdWVyeSBibG9ja3Mgb2YgcXVlcnkgZXhwcmVzc2lvbnMgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgbW92ZSB0aGUgSU5UTyBjbGF1c2UgdG8gdGhlIGVuZCBvZiBzdGF0ZW1lbnQgaW5zdGVhZC4AVGhlIFZBTFVFUyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gSXQgYWx3YXlzIHJldHVybnMgTlVMTCBpbiB0aGlzIGNvbnRleHQuIElmIHlvdSBtZWFudCB0byBhY2Nlc3MgYSB2YWx1ZSBmcm9tIHRoZSBWQUxVRVMgY2xhdXNlIG9mIHRoZSBJTlNFUlQgc3RhdGVtZW50LCBjb25zaWRlciB1c2luZyBhbiBhbGlhcyAoSU5TRVJUIElOVE8gLi4uIFZBTFVFUyAoLi4uKSBBUyBhbGlhcykgYW5kIHJlZmVyZW5jZSBhbGlhcy5jb2wgaW5zdGVhZCBvZiBWQUxVRVMoY29sKSBpbiB0aGUgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgY2xhdXNlLgBTUUxfQ0FMQ19GT1VORF9ST1dTIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyB0d28gc2VwYXJhdGUgcXVlcmllcyBpbnN0ZWFkLgBGT1VORF9ST1dTKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIENPVU5UKCopIGluc3RlYWQuAE5vIHZhbHVlIHdhcyBmb3VuZCBieSAnJS4xOTJzJyBvbiB0aGUgc3BlY2lmaWVkIHBhdGguAE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kIGJ5ICclLjE5MnMnIG9uIHRoZSBzcGVjaWZpZWQgcGF0aC4ASG9zdG5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuICVkIGNoYXJhY3RlcnMuAENvbHVtbiAnJS42NHMuJS42NHMuJS42NHMnIGhhdmluZyBwcmVmaXgga2V5IHBhcnQgJyUuNjRzKCV1KScgaXMgaWdub3JlZCBieSB0aGUgcGFydGl0aW9uaW5nIGZ1bmN0aW9uLiBVc2Ugb2YgcHJlZml4ZWQgY29sdW1ucyBpbiB0aGUgUEFSVElUSU9OIEJZIEtFWSgpIGNsYXVzZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSB1c2VybmFtZSBwcm92aWRlZCBmb3IgcmVjb3ZlcnkgY2hhbm5lbCBpcyBlbXB0eS4AVGhlIFNUQVJUIEdST1VQX1JFUExJQ0FUSU9OIGNvbW1hbmQgZmFpbGVkIHNpbmNlIHRoZSBVU0VSIG9wdGlvbiB3YXMgbm90IHByb3ZpZGVkIHdpdGggUEFTU1dPUkQgZm9yIHJlY292ZXJ5IGNoYW5uZWwuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgcGFzc3dvcmQgcHJvdmlkZWQgZm9yIHRoZSByZWNvdmVyeSBjaGFubmVsIGV4Y2VlZHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIDMyIGNoYXJhY3RlcnMuAFN0YXRlbWVudCByZXF1aXJlcyBhIHRyYW5zZm9ybSBvZiBhIHN1YnF1ZXJ5IHRvIGEgbm9uLVNFVCBvcGVyYXRpb24gKGxpa2UgSU4yRVhJU1RTLCBvciBzdWJxdWVyeS10by1MQVRFUkFMLWRlcml2ZWQtdGFibGUpLiBUaGlzIGlzIG5vdCBhbGxvd2VkIHdpdGggb3B0aW1pemVyIHN3aXRjaCAnc3VicXVlcnlfdG9fZGVyaXZlZCcgb24uAEludmFsaWQgaW5wdXQgdmFsdWUgZm9yIHJlY292ZXJ5IHNvY2tldCBlbmRwb2ludHMgJyVzJy4gUGxlYXNlLCBwcm92aWRlIGEgdmFsaWQsIGNvbW1hIHNlcGFyYXRlZCwgbGlzdCBvZiBlbmRwb2ludHMgKElQOnBvcnQpLgBUaGUgc2VydmVyIGlzIG5vdCBsaXN0ZW5pbmcgb24gZW5kcG9pbnQgJyVzJy4gT25seSBlbmRwb2ludHMgdGhhdCB0aGUgc2VydmVyIGlzIGxpc3RlbmluZyBvbiBhcmUgdmFsaWQgcmVjb3ZlcnkgZW5kcG9pbnRzLgBWYXJpYWJsZSAnJS0uNjRzJyBjYW5ub3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycuICUtLjIwMHMAT25seSBCSU5MT0cgSU5TRVJULCBDT01NSVQgYW5kIFJPTExCQUNLIHN0YXRlbWVudHMgYXJlIGFsbG93ZWQgYWZ0ZXIgQ1JFQVRFIFRBQkxFIHdpdGggU1RBUlQgVFJBTlNBQ1RJT04gc3RhdGVtZW50LgBGb3JlaWduIGtleSBjcmVhdGlvbiBpcyBub3QgYWxsb3dlZCB3aXRoIENSRUFURSBUQUJMRSBhcyBTRUxFQ1QgYW5kIENSRUFURSBUQUJMRSB3aXRoIFNUQVJUIFRSQU5TQUNUSU9OIHN0YXRlbWVudC4AU1RBUlQgVFJBTlNBQ1RJT04gY2xhdXNlIGNhbm5vdCBiZSB1c2VkICUuMTI4cwBJbnZhbGlkIGpzb24gYXR0cmlidXRlLCBlcnJvcjogIiVzIiBhdCBwb3MgJXU6ICclcycAU3RvcmFnZSBlbmdpbmUgJyVzJyBkb2VzIG5vdCBzdXBwb3J0IEVOR0lORV9BVFRSSUJVVEUuAFRoZSB1c2VyIGF0dHJpYnV0ZSBtdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3QAQ2Fubm90IHBlcmZvcm0gb3BlcmF0aW9uIGFzIElubm9EQiByZWRvIGxvZ2dpbmcgaXMgZGlzYWJsZWQuIFBsZWFzZSByZXRyeSBhZnRlciBlbmFibGluZyByZWRvIGxvZyB3aXRoIEFMVEVSIElOU1RBTkNFAENhbm5vdCBwZXJmb3JtIG9wZXJhdGlvbiBhcyBJbm5vREIgaXMgYXJjaGl2aW5nIHJlZG8gbG9nLiBQbGVhc2UgcmV0cnkgYWZ0ZXIgc3RvcHBpbmcgcmVkbyBhcmNoaXZlIGJ5IGludm9raW5nIGlubm9kYl9yZWRvX2xvZ19hcmNoaXZlX3N0b3AoKQBOb3QgZW5vdWdoIHJlc291cmNlcyB0byBjb21wbGV0ZSBsb2NrIHJlcXVlc3QuAEV2YWx1YXRpbmcgYSBKU09OIHZhbHVlIGluIFNRTCBib29sZWFuIGNvbnRleHQgZG9lcyBhbiBpbXBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgSlNPTiBpbnRlZ2VyIDA7IGlmIHRoaXMgaXMgbm90IHdoYXQgeW91IHdhbnQsIGNvbnNpZGVyIGNvbnZlcnRpbmcgSlNPTiB0byBhIFNRTCBudW1lcmljIHR5cGUgd2l0aCBKU09OX1ZBTFVFIFJFVFVSTklORwBUaGUgZnVuY3Rpb24gJXMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgY2hhcmFjdGVyIHNldCAnJXMnLgBDb252ZXJzaW9uIGZyb20gY29sbGF0aW9uICVzIGludG8gJXMgaW1wb3NzaWJsZSBmb3IgJXMAU2NoZW1hICclcycgaXMgaW4gcmVhZCBvbmx5IG1vZGUuAEZhaWxlZCB0byBlbmFibGUgQXN5bmNocm9ub3VzIFJlcGxpY2F0aW9uIENvbm5lY3Rpb24gRmFpbG92ZXIgZmVhdHVyZS4gVGhlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEgY2FuIG9ubHkgYmUgc2V0IHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT04uAEZhaWxlZCB0byBlbmFibGUgQXN5bmNocm9ub3VzIFJlcGxpY2F0aW9uIENvbm5lY3Rpb24gRmFpbG92ZXIgZmVhdHVyZS4gVGhlIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEgY2FuIG9ubHkgYmUgc2V0IHdoZW4gU09VUkNFX0FVVE9fUE9TSVRJT04gb3B0aW9uIG9mIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gaXMgZW5hYmxlZC4AVGhlIEBAR0xPQkFMLkdUSURfTU9ERSA9ICUtLjY0cyBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSBBc3luY2hyb25vdXMgUmVwbGljYXRpb24gQ29ubmVjdGlvbiBGYWlsb3ZlciBpcyBlbmFibGVkIGkuZS4gQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMS4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBTT1VSQ0VfQVVUT19QT1NJVElPTiA9IDAgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgQXN5bmNocm9ub3VzIFJlcGxpY2F0aW9uIENvbm5lY3Rpb24gRmFpbG92ZXIgaXMgZW5hYmxlZCBpLmUuIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDEuAEludmFsaWQgdXNlIG9mIHBhcmFtZXRlcnMgaW4gJyVzJwBDaGFyYWN0ZXIgc2V0ICclcycgY2Fubm90IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCAnJXMnIGluIGNhbGwgdG8gJXMuAENoYW5naW5nICVzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4gRmFsbGluZyBiYWNrIHRvIHRoZSBkZWZhdWx0LgBJbnZhbGlkIHRpbWUgem9uZSBpbnRlcnZhbDogJyVzJwBDYW5ub3QgY2FzdCB2YWx1ZSB0byAlcy4AVGhlIGh5cGVyZ3JhcGggb3B0aW1pemVyIGRvZXMgbm90IHlldCBzdXBwb3J0ICclcycAVGhlIGh5cGVyZ3JhcGggb3B0aW1pemVyIGlzIGhpZ2hseSBleHBlcmltZW50YWwgYW5kIGlzIG1lYW50IGZvciB0ZXN0aW5nIG9ubHkuIERvIG5vdCBlbmFibGUgaXQgdW5sZXNzIHlvdSBhcmUgYSBNeVNRTCBkZXZlbG9wZXIuAE5vbmUgb2YgdGhlIGxvZy1zaW5rcyBzZWxlY3RlZCB3aXRoIC0tbG9nLWVycm9yLXNlcnZpY2VzPS4uLiBwcm92aWRlcyBhIGxvZy1wYXJzZXIuIFRoZSBzZXJ2ZXIgd2lsbCBub3QgYmUgYWJsZSB0byBtYWtlIHRoZSBwcmV2aW91cyBydW5zJyBlcnJvci1sb2dzIGF2YWlsYWJsZSBpbiBwZXJmb3JtYW5jZV9zY2hlbWEuZXJyb3JfbG9nLgBOb25lIG9mIHRoZSBsb2ctc2lua3Mgc2VsZWN0ZWQgaW4gQEBnbG9iYWwubG9nX2Vycm9yX3NlcnZpY2VzIHN1cHBvcnRzIHdyaXRpbmcgdG8gdGhlIHBlcmZvcm1hbmNlIHNjaGVtYS4gVGhlIHNlcnZlciB3aWxsIG5vdCBiZSBhYmxlIHRvIG1ha2UgdGhlIGN1cnJlbnQgcnVucycgZXJyb3IgZXZlbnRzIGF2YWlsYWJsZSBpbiBwZXJmb3JtYW5jZV9zY2hlbWEuZXJyb3JfbG9nLiBUbyBjaGFuZ2UgdGhpcywgYWRkIGEgbG9nLXNpbmsgdGhhdCBzdXBwb3J0cyB0aGUgcGVyZm9ybWFuY2Ugc2NoZW1hIHRvIEBAZ2xvYmFsLmxvZ19lcnJvcl9zZXJ2aWNlcy4AQEBnbG9iYWwubG9nX2Vycm9yX3NlcnZpY2VzIGxpc3RzIG1vcmUgdGhhbiBvbmUgbG9nLWZpbHRlciBzZXJ2aWNlLiBUaGlzIGlzIGRpc2NvdXJhZ2VkIGFzIGl0IHdpbGwgbWFrZSBpdCBoYXJkIHRvIHVuZGVyc3RhbmQgd2hpY2ggcnVsZSBpbiB3aGljaCBmaWx0ZXIgYWZmZWN0ZWQgYSBsb2ctZXZlbnQuAENvdWxkIG5vdCBvcGVuIGZpbGUgJyVzJyBmb3IgZXJyb3IgbG9nZ2luZyVzJXMAVXNlciAlLjI1NnMgaXMgcmVmZXJlbmNlZCBhcyBhIGRlZmluZXIgYWNjb3VudCBpbiAlcy4AT3BlcmF0aW9uICVzIGZhaWxlZCBmb3IgJS4yNTZzIGFzIGl0IGlzIHJlZmVyZW5jZWQgYXMgYSBkZWZpbmVyIGFjY291bnQgaW4gJXMuAERlY2ltYWwgbnVtYmVyIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcyB0b28gbGFyZ2UuAFRoZSB2YXJpYWJsZSAiJXMiIGhhcyBhIG5vbi1pbnRlZ2VyIGJhc2VkIHR5cGUAUmVhZHMgd2l0aCBzZXJpYWxpemFibGUgaXNvbGF0aW9uL1NFTEVDVCBGT1IgU0hBUkUgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIEFDTCB0YWJsZXMuAFRoZSBzdGF0ZW1lbnQgaXMgdW5zYWZlIGJlY2F1c2UgaXQgdXBkYXRlcyBhIHRhYmxlIGRlcGVuZGluZyBvbiBBQ0wgdGFibGUgcmVhZCBvcGVyYXRpb24uIEFzIHN0b3JhZ2UgZW5naW5lIHJvdyBsb2NrcyBhcmUgc2tpcHBlZCBmb3IgQUNMIHRhYmxlLCBpdCBtYXkgbm90IGhhdmUgc2FtZSBlZmZlY3Qgb24gc291cmNlIGFuZCByZXBsaWNhLgBTVE9QIFJFUExJQ0EgY29tbWFuZCBleGVjdXRpb24gaXMgaW5jb21wbGV0ZTogUmVwbGljYSBNb25pdG9yIHRocmVhZCBnb3QgdGhlIHN0b3Agc2lnbmFsLCB0aHJlYWQgaXMgYnVzeSwgTW9uaXRvciB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AVGhlIFJlcGxpY2EgTW9uaXRvciB0aHJlYWQgZmFpbGVkIHRvIHN0YXJ0LgBSZXBsaWNhdGlvbiBjYW5ub3Qgc3RhcnQlLjE5MnMgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPiBhcyB0aGlzIHNlcnZlciB1c2VzIEBAR0xPQkFMLkdUSURfTU9ERSA8PiBPTi4AVGhlIG9wdGlvbnMgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSBMT0NBTHw8VVVJRD4gYW5kIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMSBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4AQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPiBjYW5ub3QgYmUgZXhlY3V0ZWQgYmVjYXVzZSBAQEdMT0JBTC5HVElEX01PREUgPD4gT04uAFRoZSB2YWx1ZSBvZiBzcWxfcmVwbGljYV9za2lwX2NvdW50ZXIgd2lsbCBvbmx5IHRha2UgZWZmZWN0IGZvciBjaGFubmVscyBydW5uaW5nIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPD4gT0ZGLgBVc2luZyBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyBjcmVhdGVzIGxpbWl0YXRpb25zIG9uIHRoZSByZXBsaWNhdGlvbiB0b3BvbG9neSAtIHlvdSBjYW5ub3QgZmFpbCBvdmVyIGJldHdlZW4gZG93bnN0cmVhbSBhbmQgdXBzdHJlYW0gc2VydmVycy4gT25seSB1c2UgdGhpcyBvcHRpb24gaWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGVuYWJsZSBHVElEcyBvbiB0aGUgc291cmNlLCBmb3IgaW5zdGFuY2UsIGJlY2F1c2Ugb2YgbGFjayBvZiBwZXJtaXNzaW9ucy4gSWYgcG9zc2libGUsIHVzZSB0aGUgcHJvY2VkdXJlIGZvciBlbmFibGluZyBHVElEIHRyYW5zYWN0aW9ucyBvbmxpbmUgaW5zdGVhZCwgYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgBXQUlUX1VOVElMX1NRTF9USFJFQURfQUZURVJfR1RJRFMgY2Fubm90IGJlIHVzZWQgb24gYSBjaGFubmVsIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPgBUaGUgU1FMX0FGVEVSX0dUSURTIG9yIFNRTF9CRUZPUkVfR1RJRFMgY2xhdXNlcyBmb3IgU1RBUlQgUkVQTElDQSBjYW5ub3QgYmUgdXNlZCB3aGVuIHRoZSByZXBsaWNhdGlvbiBjaGFubmVsIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPi4AUmVwbGljYXRpb24gJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gPFVVSUQ+IHdoZXJlIHRoZSBVVUlEIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAFRoZSBncm91cF9yZXBsaWNhdGlvbl9yZWNvdmVyeSBjaGFubmVsIGlzIHN0aWxsIHJ1bm5pbmcsIG1vc3QgbGlrZWx5IGl0IGlzIHdhaXRpbmcgZm9yIGEgZGF0YWJhc2UvdGFibGUgbG9jaywgd2hpY2ggaXMgcHJldmVudGluZyB0aGUgY2hhbm5lbCBmcm9tIHN0b3BwaW5nLiBQbGVhc2UgY2hlY2sgZGF0YWJhc2UvdGFibGUgbG9ja3MsIGluY2x1ZGluZyB0aGUgb25lcyBjcmVhdGVkIGJ5IGJhY2t1cCB0b29scy4AQVVUT0VYVEVORF9TSVpFIHNob3VsZCBiZSBhIG11bHRpcGxlIG9mICV1TQBJbm5vREI6ICIlcyIgbm90IGFsbG93ZWQgd2l0aCBnZW5lcmFsIHRhYmxlc3BhY2VzAEFVVE9FWFRFTkRfU0laRSB2YWx1ZSBzaG91bGQgYmUgYmV0d2VlbiAldU0gYW5kICV1TQBBVVRPRVhURU5EX1NJWkUgY2xhdXNlIGlzIG5vdCB2YWxpZCBmb3IgJXMgdGFibGVzcGFjZS4AVXNlciBhY2NvdW50ICVzIGlzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgZ3JhbnRlZCB0byB0aGUgcm9sZSAlcy4gVGhlIEdSQU5UIHdvdWxkIGNyZWF0ZSBhIGxvb3AAQSB0YWJsZSBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIHZpc2libGUgY29sdW1uLgBDb21wcmVzc2lvbiBmYWlsZWQgd2l0aCB0aGUgZm9sbG93aW5nIGVycm9yIDogJXMAVGhlIHBhcmFtZXRlciBuZXR3b3JrX25hbWVzcGFjZSBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZS4gUGxlYXNlIHVzZSB0aGUgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBjb21tYW5kIHRvIHNldCBjaGFubmVsIG5ldHdvcmtfbmFtZXNwYWNlIHBhcmFtZXRlci4AVGhlIGNsaWVudCB3YXMgZGlzY29ubmVjdGVkIGJ5IHRoZSBzZXJ2ZXIgYmVjYXVzZSBvZiBpbmFjdGl2aXR5LiBTZWUgd2FpdF90aW1lb3V0IGFuZCBpbnRlcmFjdGl2ZV90aW1lb3V0IGZvciBjb25maWd1cmluZyB0aGlzIGJlaGF2aW9yLgBJbnZhbGlkIGNhc3QgZnJvbSAlcyB0byAlcy4ASW52YWxpZCBjYXN0IGZyb20gJXMgdG8gJXMuIEEgcG9seWdvbiByaW5nIGlzIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24uAEFyZ3VtZW50cyB0byBmdW5jdGlvbiAlcyBjb250YWlucyBnZW9tZXRyaWVzIHdpdGggZGlmZmVyZW50IFNSSURzOiAldSBhbmQgJXUuIEFsbCBnZW9tZXRyaWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBTUklELgBLZXlyaW5nIHJlbG9hZCBmYWlsZWQuIFBsZWFzZSBjaGVjayBlcnJvciBsb2cgZm9yIG1vcmUgZGV0YWlscy4AVGFibGVzcGFjZSAnJS4xOTJzJyBpcyBpbnZhbGlkIGZvciBTREkgb3BlcmF0aW9ucy4AVmFsdWUgdG9vIGxvbmcgc2V0dGluZyBTT1VSQ0VfQ09NUFJFU1NJT05fQUxHT1JJVEhNUyBvcHRpb24gdG8gYSAlZCBjaGFycyBsb25nIHN0cmluZyBmb3IgY2hhbm5lbCAnJS4xOTJzJy4AQSBkZXByZWNhdGVkIFRMUyB2ZXJzaW9uICVzIGlzIGVuYWJsZWQgZm9yIGNoYW5uZWwgJXMuIFBsZWFzZSB1c2UgVExTdjEuMiBvciBoaWdoZXIuAENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMgPSA8VVVJRD4gY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgdGhlIFVVSUQgdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuAFJlcGxpY2F0aW9uICclLjE5MnMnIGlzIGNvbmZpZ3VyZWQgd2l0aCBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IDxVVUlEPiB3aGVyZSB0aGUgVVVJRCB2YWx1ZSBpcyBlcXVhbCB0byB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZABVbmFibGUgdG8gcmV0cmlldmUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCB2YXJpYWJsZSBkdXJpbmcgc2VydmVyIGNoZWNrcyBvbiByZXBsaWNhdGlvbiBvcGVyYXRpb25zLgBCb3RoIGF1ZGl0X2xvZ19tYXhfc2l6ZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgYXJlIHNldCB0byBub24temVyby4gYXVkaXRfbG9nX21heF9zaXplIHRha2VzIHByZWNlZGVuY2UgYW5kIGF1ZGl0X2xvZ19wcnVuZV9zZWNvbmRzIGlzIGlnbm9yZWQAYXVkaXRfbG9nX3JvdGF0ZV9vbl9zaXplIGlzIG5vdCBncmFudWxhciBlbm91Z2ggZm9yIHRoZSB2YWx1ZSBvZiBhdWRpdF9sb2dfbWF4X3NpemUgc3VwcGxpZWQuIFNob3VsZCBiZSBhdCBsZWFzdCAlZCB0aW1lcyBzbWFsbGVyLgBDcmVhdGUvQWx0ZXIgdXNlciBoYXMgZmFpbGVkLCBDb25maWd1cmVkIHVzZXIgcmVhbG0gYXMgYXV0aGVudGljYXRpb24gc3RyaW5nIGlzIGVtcHR5LCBQbGVhc2UgbWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSBhdXRoZW50aWNhdGlvbiBzdHJpbmcgYXMgdXNlciByZWFsbS4AQ2Fubm90IGluc3RhbGwgdGhlICUuMTkycyBwbHVnaW4gd2hlbiB0aGUgJS4xOTJzIHBsdWdpbiBpcyBpbnN0YWxsZWQuACVkIGVycm9yIGxvZ2dpbmcgY29tcG9uZW50KHMpIGZhaWxlZCB0byBmbHVzaC4gRm9yIGZpbGUtYmFzZWQgbG9ncyB0aGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgcGF0aCBvciBwZXJtaXNzaW9ucyBvZiB0aGUgbG9nLWZpbGUgaGF2ZSBjaGFuZ2VkLiBGYWlsdXJlIHRvIGZsdXNoIGZpbGVkLWJhc2VkIGxvZ3MgbWF5IGFmZmVjdCBsb2ctcm90YXRpb24uAFRoZSB1bnRpbCBjbGF1c2UgU1FMX0FGVEVSX01UU19HQVBTIGlzIGJlaW5nIHVzZWQgZm9yIGNoYW5uZWwgJyUuMTkycycgd2hlbiBHVElEX01PREUgPSBPTiBhbmQgU09VUkNFX0FVVE9fUE9TSVRJT049MSBtZWFuaW5nIHRoZSBzZXJ2ZXIgZGlkIG5vdCBjb21wdXRlIGludGVybmFsbHkgd2hhdCBnYXBzIG1heSBleGlzdCBpbiB0aGUgcmVsYXkgbG9nIHRyYW5zYWN0aW9uIGV4ZWN1dGlvbi4gVG8gY2xvc2UgYW55IGV4ZWN1dGlvbiBnYXBzIHVzZSBlaXRoZXIgdGhlIFNRTF9CRUZPUkVfR1RJRFMgb3IgU1FMX0FGVEVSX0dUSURTIHVudGlsIGNsYXVzZS4ASW52YWxpZCB0YXJnZXQgZm9yIGFzc2lnbm1lbnQgaW4gSU5TRVJUIG9yIFVQREFURSBzdGF0ZW1lbnQgJyUuMTkycycuAFRoaXMgb3BlcmF0aW9uIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24gYSBHcm91cCBSZXBsaWNhdGlvbiBzZWNvbmRhcnkgbWVtYmVyLCBpdCBtdXN0IGJlIGRvbmUgb24gdGhlIGdyb3VwIHByaW1hcnkuAFVuYWJsZSB0byBwcm9wYWdhdGUgdGhlIFNPVVJDRV9DT05ORUNUSU9OX0FVVE9fRkFJTE9WRVIgdmFsdWUgZm9yIGNoYW5uZWwgJyVzJyB0byBncm91cCByZXBsaWNhdGlvbiBtZW1iZXJzLiBQbGVhc2UgcmV0cnkgdGhlIG9wZXJhdGlvbi4AYXVkaXRfbG9nX2Zvcm1hdF91bml4X3RpbWVzdGFtcCBpcyBhcHBsaWNhYmxlIG9ubHkgd2hlbiBhdWRpdF9sb2dfZm9ybWF0ID0gSlNPTi4ASW52YWxpZCBwbHVnaW4gIiVzIiBzcGVjaWZpZWQgYXMgJWQgZmFjdG9yIGR1cmluZyAiJXMiLgBJREVOVElGSUVEIEJZIGNsYXVzZSBkdXJpbmcgIiVzIiBub3Qgc3VwcG9ydGVkIGZvciBwbHVnaW4gIiVzIi4AVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgcGx1Z2luICIlcyIuAEF1dGhlbnRpY2F0aW9uIHBsdWdpbiByZXF1aXJlcyByZWdpc3RyYXRpb24uIFBsZWFzZSByZWZlciBBTFRFUiBVU0VSIHN5bnRheCBvciBzZXQgLS1yZWdpc3Rlci1mYWN0b3IgY29tbWFuZCBsaW5lIG9wdGlvbiB0byBkbyByZWdpc3RyYXRpb24uACVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QgZXhpc3RzLiBQbGVhc2UgZG8gQUxURVIgVVNFUi4uLiBEUk9QICVkIGZhY3RvciBiZWZvcmUgZG9pbmcgdGhpcyBvcGVyYXRpb24gT1IgZG8gQUxURVIgVVNFUi4uLiBNT0RJRlkgJWQgZmFjdG9yLi4uIHRvIG1vZGlmeSBleGlzdGluZyAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGRvZXNuJ3QgZXhpc3QuIFBsZWFzZSBkbyBBTFRFUiBVU0VSLi4uIEFERCAlZCBmYWN0b3IuLi4gYmVmb3JlIGRvaW5nIHRoaXMgb3BlcmF0aW9uLgAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGRvZXMgbm90IG1hdGNoIGFnYWluc3QgYXV0aGVudGljYXRpb24gcG9saWN5LiBQbGVhc2UgcmVmZXIgQEBhdXRoZW50aWNhdGlvbl9wb2xpY3kgc3lzdGVtIHZhcmlhYmxlLgBUaGUgcmVnaXN0cmF0aW9uIGZvciAlZCBmYWN0b3IgYXV0aGVudGljYXRpb24gbWV0aG9kIGlzIGFscmVhZHkgY29tcGxldGVkLiBZb3UgY2Fubm90IHBlcmZvcm0gcmVnaXN0cmF0aW9uIG11bHRpcGxlIHRpbWVzLgBUaGUgcmVnaXN0cmF0aW9uIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBmb3IgdXNlciAnJXMnQCclcycuIFRoZSBvcGVyYXRpb24gY2FuIG9ubHkgYmUgcGVyZm9ybWVkIGluIHVzZXIncyBvd24gc2Vzc2lvbi4AQXV0aGVudGljYXRpb24gcGx1Z2luJ3MgcmVnaXN0cmF0aW9uIGZhaWxlZC4AJWQgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBzaG91bGQgYmUgYWRkZWQgYmVmb3JlICVkIGZhY3RvciBhdXRoZW50aWNhdGlvbiBtZXRob2QuAEF1dGhlbnRpY2F0aW9uIGZhY3RvciBzaG91bGQgYmUgZGlmZmVyZW50LgBUaGUgb3BlcmF0aW9uICIlcyIgY2Fubm90IGJlIHBlcmZvcm1lZCBmb3IgdXNlciAnJXMnQCclcycgY29uZmlndXJlZCB0byBjb25uZWN0IHdpdGhvdXQgYSBwYXNzd29yZC4AR1RJRF9PTkxZIGNhbm5vdCBiZSBlbmFibGVkIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnLiBZb3UgbmVlZCBHVElEX01PREUgPSBPTiwgU09VUkNFX0FVVE9fUE9TSVRJT04gPSAxIGFuZCBSRVFVSVJFX1JPV19GT1JNQVQgPSAxLgBSRVFVSVJFX1JPV19GT1JNQVQgY2Fubm90IGJlIGRpc2FibGVkIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdoZW4gR1RJRF9PTkxZPTEuAFNPVVJDRV9BVVRPX1BPU0lUSU9OIGNhbm5vdCBiZSBkaXNhYmxlZCBmb3IgcmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyB3aGVuIEdUSURfT05MWT0xLgBXaGVuIGRpc2FibGluZyBHVElEX09OTFkgYW5kIFNPVVJDRV9BVVRPX1BPU0lUSU9OIEZPUiBDSEFOTkVMICclLjE5MnMnIHlvdSBtdXN0IHByb3ZpZGUgU09VUkNFX0xPR19GSUxFIGFuZCBTT1VSQ0VfTE9HX1BPUyBhcyBzb3VyY2UgcG9zaXRpb25zIGFyZSBpbnZhbGlkLgBXaGVuIGRpc2FibGluZyBTT1VSQ0VfQVVUT19QT1NJVElPTiBGT1IgQ0hBTk5FTCAnJS4xOTJzJyB5b3UgbXVzdCBwcm92aWRlIFNPVVJDRV9MT0dfRklMRSBhbmQgU09VUkNFX0xPR19QT1MgYXMgc291cmNlIHBvc2l0aW9ucyBhcmUgaW52YWxpZC4AV2hlbiBjb25maWd1cmluZyBhIGdyb3VwIHJlcGxpY2F0aW9uIGNoYW5uZWwgeW91IG11c3QgZG8gaXQgd2hlbiBHVElEX01PREUgPSBPTi4AUmVwbGljYXRpb24gY2Fubm90IHN0YXJ0JS4xOTJzIHdpdGggR1RJRF9PTkxZID0gMSBhcyB0aGlzIHNlcnZlciB1c2VzIEBAR0xPQkFMLkdUSURfTU9ERSA8PiBPTi4AVGhlIHJlcGxpY2F0aW9uIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc291cmNlIG1heSBiZSBvdXQtb2YtZGF0ZSBvbiBjaGFubmVsICclLjE5MnMnLCBkdWUgdG8gdGhlIHVzZSBvZiBHVElEX09OTFk9MS4gVGhlIG91dC1vZi1kYXRlIHBvc2l0aW9ucyBjYW4gc3RpbGwgYmUgdXNlZCBpbiBzb21lIGNhc2VzIHNvLCBpbiBvcmRlciB0byB1cGRhdGUgdGhlbSwgd2Ugc3VnZ2VzdCB0aGF0IHlvdSBzdGFydCB0aGUgcmVwbGljYXRpb24gdG8gcmVjZWl2ZSBhbmQgYXBwbHkgYXQgbGVhc3Qgb25lIHRyYW5zYWN0aW9uLCB3aGljaCB3aWxsIHNldCB0aGUgcG9zaXRpb25zIHRvIHZhbGlkIHZhbHVlcy4AU1NMIGZpcHMgbW9kZSBlcnJvcjogJXMAJXM9JWxsdSBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZSBbJWxsdSwlbGx1XS4gJWxsdSB3aWxsIGJlIHVzZWQuAE1BVENIIGRvZXMgbm90IHN1cHBvcnQgUk9MTFVQIGNvbHVtbnMuAE1pc3NpbmcgbG9jYWxlIHJlc291cmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5LgBSZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeSB1c2VkIGRlZmF1bHQgKHJvb3QpIGxvY2FsZS4ATWlzc2luZyBkYXRhIGZpbGUgaW4gcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnkuACclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgJXMuIFBsZWFzZSBjb25zaWRlciB1c2luZyAlcyB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgBUaGUgJXMgd2FzIGNhbGxlZCB3aGVuIHRoZXJlIHdhcyBhbHJlYWR5IGFub3RoZXIgY29uY3VycmVudCBjYWxsIHRvIHRoaXMgcHJvY2VkdXJlLiBObyBhY3Rpb24gd2FzIHRha2VuLiBXYWl0IGZvciBvdGhlciBjYWxscyB0byAlcyB0byBmaW5pc2ggYmVmb3JlIHJldHJ5aW5nLgBDb25uZWN0aW9uIGNsb3NlZC4gR2xvYmFsIGNvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAENvbm5lY3Rpb24gY2xvc2VkLiBDb25uZWN0aW9uIG1lbW9yeSBsaW1pdCAlbGx1IGJ5dGVzIGV4Y2VlZGVkLiBDb25zdW1lZCAlbGx1IGJ5dGVzLgBOZWVkIHRvIHJlYnVpbGQgdGhlIHRhYmxlIHRvIGNoYW5nZSBjb2x1bW4gdHlwZQBUaGlzIGZ1bmN0aW9uICclLS4xOTJzJyBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIGxvYWRhYmxlIGZ1bmN0aW9uIChVREYpLiBUbyBpbnZva2UgdGhlIHN0b3JlZCBmdW5jdGlvbiwgaXQgaXMgbmVjZXNzYXJ5IHRvIHF1YWxpZnkgaXQgd2l0aCB0aGUgc2NoZW1hIG5hbWUuAENvdWxkIG5vdCBwdXJnZSBiaW5hcnkgbG9ncyBzaW5jZSBhbm90aGVyIHNlc3Npb24gaXMgZXhlY3V0aW5nIExPQ0sgSU5TVEFOQ0UgRk9SIEJBQ0tVUC4gV2FpdCBmb3IgdGhhdCBzZXNzaW9uIHRvIHJlbGVhc2UgdGhlIGxvY2suAFRvbyBtYW55IHdpbmRvd3MgaW4gU0VMRUNUOiAlZC4gTWF4aW11bSBhbGxvd2VkIGlzICVkLiBVc2UgbmFtZWQgd2luZG93cyB0byBzaGFyZSB3aW5kb3dzIGJldHdlZW4gd2luZG93IGZ1bmN0aW9ucy4AJXMAQ29tbWVudCBmb3IgJXMgJyVzJyBjb250YWlucyBhbiBpbnZhbGlkICVzIGNoYXJhY3RlciBzdHJpbmc6ICclLjY0cycuAERlZmluaXRpb24gb2YgJXMgJyUtLjE5MnMuJS0uMTkycycgY29udGFpbnMgYW4gaW52YWxpZCAlcyBjaGFyYWN0ZXIgc3RyaW5nOiAnJS42NHMnLgBDYW4ndCBleGVjdXRlIHRoZSBnaXZlbiBjb21tYW5kIHdoZW4gQEBTRVNTSU9OLkdUSURfTkVYVCA9PSAnVVVJRDpOVU1CRVInLgBYQTogVGVtcG9yYXJ5IHRhYmxlcyBjYW5ub3QgYmUgYWNjZXNzZWQgaW5zaWRlIFhBIHRyYW5zYWN0aW9ucyB3aGVuIHhhX2RldGFjaF9vbl9wcmVwYXJlPU9OAE1heGltdW0gcm93IHZlcnNpb25zIHJlYWNoZWQgZm9yIHRhYmxlICVzLiBObyBtb3JlIGNvbHVtbnMgY2FuIGJlIGFkZGVkIG9yIGRyb3BwZWQgaW5zdGFudGx5LiBQbGVhc2UgdXNlIENPUFkvSU5QTEFDRS4AQ29sdW1uIGNhbid0IGJlIGFkZGVkIHdpdGggQUxHT1JJVEhNPUlOU1RBTlQgYXMgYWZ0ZXIgdGhpcyBtYXggcG9zc2libGUgcm93IHNpemUgY3Jvc3NlcyBtYXggcGVybWlzc2libGUgcm93IHNpemUuIFRyeSBBTEdPUklUSE09SU5QTEFDRS9DT1BZLgBBbGwgcXVlcmllcyBoYXZlIGJlZW4gYmxvY2tlZCB3aGlsZSBmdW5jdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fc2V0X2FzX3ByaW1hcnkoKScgaXMgZXhlY3V0aW5nLiBQbGVhc2UgcmVmZXIgdGltZW91dCBwYXJhbWV0ZXIgb2YgZnVuY3Rpb24gJ2dyb3VwX3JlcGxpY2F0aW9uX3NldF9hc19wcmltYXJ5KCknLgBEZWxpbWl0ZXIgJyVzJyBpbiBwb3NpdGlvbiAlZCBpbiBkYXRldGltZSB2YWx1ZSAnJXMnIGF0IHJvdyAlZCBpcyBkZXByZWNhdGVkLiBQcmVmZXIgdGhlIHN0YW5kYXJkICclYycuAERlbGltaXRlciAnJXMnIGluIHBvc2l0aW9uICVkIGluIGRhdGV0aW1lIHZhbHVlICclcycgYXQgcm93ICVkIGlzIHN1cGVyZmx1b3VzIGFuZCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcmVtb3ZlLgBDYW5ub3QgcGVyc2lzdCBTRU5TSVRJVkUgc3lzdGVtIHZhcmlhYmxlICclcycgYmVjYXVzZSBrZXlyaW5nIGNvbXBvbmVudCBzdXBwb3J0IGlzIHVuYXZhaWxhYmxlLgBTRU5TSVRJVkUgc3lzdGVtIHZhcmlhYmxlICclcycgd2FzIHBlcnNpc3RlZCB3aXRob3V0IGVuY3J5cHRpb24uIENvbnNpZGVyIHJlc3RhcnRpbmcgc2VydmVyIHdpdGgga2V5cmluZyBjb21wb25lbnQgc3VwcG9ydCB0byBwZXJzaXN0IFNFTlNJVElWRSB2YXJpYWJsZXMgc2VjdXJlbHkuAFRyaWdnZXIgJyUtLjE5MnMnIGFscmVhZHkgZXhpc3RzIG9uIHRoZSB0YWJsZSAnJS0uMTkycycuJyUtLjE5MnMnLgBUcmlnZ2VyICclLS4xOTJzJy4nJS0uMTkycycgYWxyZWFkeSBleGlzdHMgb24gYSBkaWZmZXJlbnQgdGFibGUuIFRoZSAnSUYgTk9UIEVYSVNUUycgY2xhdXNlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciB0cmlnZ2VycyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgdGFibGUuAFRoaXMgZnVuY3Rpb24gJyUtLjE5MnMnIGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgbmF0aXZlIGZ1bmN0aW9uLiBUaGUgJ0lGIE5PVCBFWElTVFMnIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkIHdoaWxlIGNyZWF0aW5nIGEgbG9hZGFibGUgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGEgbmF0aXZlIGZ1bmN0aW9uLgBTRVQgUEFTU1dPUkQgaGFzIG5vIHNpZ25pZmljYW5jZSBmb3IgdXNlciAnJXMnQCclcycgYXMgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB1c2VkIGRvZXNuJ3Qgc3RvcmUgYXV0aGVudGljYXRpb24gZGF0YSBpbiB0aGUgTXlTUUwgc2VydmVyLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgQUxURVIgVVNFUiBpbnN0ZWFkIGlmIHlvdSB3YW50IHRvIGNoYW5nZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzLgBDYW5ub3QgcmVjb3ZlciBmcm9tIGRldGVjdF9vbmx5IGRvdWJsZXdyaXRlIGJ1ZmZlciBhcyBwYWdlICV1IGZyb20gYmF0Y2ggZG91Ymxld3JpdGUgZmlsZSBpcyBjb3JydXB0ZWQuAERhdGFiYXNlIHBhZ2UgY29ycnVwdGlvbiBvZiB0YWJsZXNwYWNlICVzIHNwYWNlX2lkOiAldSBwYWdlX251bTogJXUuIENhbm5vdCByZWNvdmVyIGl0IGZyb20gdGhlIGRvdWJsZXdyaXRlIGJ1ZmZlciBiZWNhdXNlIGl0IHdhcyB3cml0dGVuIGluIGRldGVjdF9vbmx5LWRvdWJsZXdyaXRlIG1vZGUuAExhdGl0dWRlIG9mIG9yaWdpbiBtdXN0IGJlIHdpdGhpbiBbLTkwLCA5MF0gZGVncmVlcywgc3BlY2lmaWVkIGluIHRoZSBTUlMgYW5ndWxhciB1bml0LgBMb25naXR1ZGUgb2Ygb3JpZ2luIG11c3QgYmUgd2l0aGluICgtMTgwLCAxODBdIGRlZ3JlZXMsIHNwZWNpZmllZCBpbiB0aGUgU1JTIGFuZ3VsYXIgdW5pdC4AVGhlIHNwYXRpYWwgcmVmZXJlbmNlIHN5c3RlbSBkZWZpbml0aW9uIGZvciBTUklEICV1IGNvbnRhaW5zIHVudXNlZCBwcm9qZWN0aW9uIHBhcmFtZXRlciAiJXMiLgBGYWlsZWQgdG8gZ2VuZXJhdGUgaW52aXNpYmxlIHByaW1hcnkga2V5LiBDb2x1bW4gJ215X3Jvd19pZCcgYWxyZWFkeSBleGlzdHMuAEZhaWxlZCB0byBnZW5lcmF0ZSBpbnZpc2libGUgcHJpbWFyeSBrZXkuIEF1dG8taW5jcmVtZW50IGNvbHVtbiBhbHJlYWR5IGV4aXN0cy4AQWx0ZXJpbmcgZ2VuZXJhdGVkIGludmlzaWJsZSBwcmltYXJ5IGtleSBjb2x1bW4gJ215X3Jvd19pZCcgaXMgbm90IGFsbG93ZWQuAFBsZWFzZSBkcm9wIHByaW1hcnkga2V5IGNvbHVtbiB0byBiZSBhYmxlIHRvIGRyb3AgZ2VuZXJhdGVkIGludmlzaWJsZSBwcmltYXJ5IGtleS4AR2VuZXJhdGluZyBhbiBpbnZpc2libGUgcHJpbWFyeSBrZXkgZm9yIGEgdGFibGUgY3JlYXRlZCB1c2luZyBDUkVBVEUgVEFCTEUgLi4uIFNFTEVDVCAuLi4gaXMgZGlzYWxsb3dlZCB3aGVuIGJpbmxvZ19mb3JtYXQ9U1RBVEVNRU5ULiBJdCBjYW5ub3QgYmUgZ3VhcmFudGVlZCB0aGF0IHRoZSBTRUxFQ1QgcmV0cmlldmVzIHJvd3MgaW4gdGhlIHNhbWUgb3JkZXIgb24gc291cmNlIGFuZCByZXBsaWNhLiBUaGVyZWZvcmUsIGl0IGNhbm5vdCBiZSBndWFyYW50ZWVkIHRoYXQgdGhlIHZhbHVlIGdlbmVyYXRlZCBmb3IgdGhlIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleSBjb2x1bW4gd2lsbCBiZSB0aGUgc2FtZSBvbiBzb3VyY2UgYW5kIHJlcGxpY2EgZm9yIGFsbCByb3dzLiBVc2UgYmlubG9nX2Zvcm1hdD1ST1cgb3IgTUlYRUQgdG8gZXhlY3V0ZSB0aGlzIHN0YXRlbWVudC4AVGhlIG9wdGlvbiBleHBpcmVfbG9nc19kYXlzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggb3B0aW9uIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzLiBUbyBzZXQgb25lLCBmaXJzdCB1bnNldCB0aGUgb3RoZXIgYnkgc2V0dGluZyBpdCB0byAwLgBSZWN1cnNpdmUgdGFibGUgcmVmZXJlbmNlIGluIEVYQ0VQVCBvciBJTlRFUlNFQ1Qgb3BlcmFuZCBpcyBub3QgYWxsb3dlZC4ARXJyb3Igd2hlbiB0cnlpbmcgdG8gZmV0Y2ggaW5mb3JtYXRpb24gZnJvbSBzZWN1cml0eSBjb250ZXh0IG9iamVjdCwgd2hlbiB0cnlpbmcgdG8gY29ubmVjdCB0aGUgc2VydmVyLgBFcnJvciBpbiBjb21tYW5kIHNlcnZpY2UgYmFja2VuZCBpbnRlcmZhY2UsIGJlY2F1c2Ugb2YgOiAiJXMiAFRoZSBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIGNoYW5uZWwgJyUuMTkycycgd291bGQgbmVlZCBGSUxFIHByaXZpbGVnZSB0byBleGVjdXRlIGEgTE9BRCBEQVRBIElORklMRSBzdGF0ZW1lbnQgcmVwbGljYXRlZCBpbiBzdGF0ZW1lbnQgZm9ybWF0LiBDb25zaWRlciB1c2luZyBiaW5sb2dfZm9ybWF0PVJPVyBvbiBzb3VyY2UuIElmIHRoZSByZXBsaWNhdGVkIGV2ZW50cyBhcmUgdHJ1c3RlZCwgcmVjb3ZlciBmcm9tIHRoZSBmYWlsdXJlIGJ5IHRlbXBvcmFyaWx5IGdyYW50aW5nIEZJTEUgdG8gdGhlIFBSSVZJTEVHRV9DSEVDS1NfVVNFUi4AVGhlICdTRVQgR0xPQkFMIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnM9JXMnIGNvbW1hbmQgZW5jb3VudGVyZWQgYSBmYWlsdXJlLiAlcwBVc2luZyAlcyBhcyB1bnF1b3RlZCBpZGVudGlmaWVyIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgcXVvdGVzIG9yIHJlbmFtZSB0aGUgaWRlbnRpZmllci4ATWF4IG51bWJlciBvZiBkdXBsaWNhdGUgcm93cyBpbiBJTlRFUlNFQ1QgQUxMIGV4Y2VlZGVkLgBRdWVyeSB0aHJlYWRzIGNvdW50KCV1KSBleGNlZWRzIHRyYW5zYWN0aW9uIHRocmVhZHMgbGltaXQoJXUpIHBlciBncm91cC4gUGxlYXNlIHVzZSBxdWVyeSB0aHJlYWRzIGNvdW50IHBlciBncm91cCBzbWFsbGVyIG9yIGVxdWFsIHRvIG1heCB0cmFuc2FjdGlvbiB0aHJlYWRzIGxpbWl0IHBlciBncm91cABJbnZhbGlkIHRpbWVzdGFtcCBmb3JtYXQgaW4gJXMgdWRmAFNIQVBFX1BSRURJQ1RJT04gVURGICVzIGdvdCBlcnJvciBiZWNhdXNlIG9mICVzLgBIZWlnaHQgcGFyYW1ldGVyIG11c3QgYmUgbm9uIG5lZ2F0aXZlLgBTY2FsaW5nIHBhcmFtZXRlciBtdXN0IGJlIG5vbiBuZWdhdGl2ZS4AWm9uZSB3aWR0aCBwYXJhbWV0ZXIgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMS02MC4ATGF0aXR1ZGUgb2Ygb3JpZ2luIG11c3QgYmUgKy05MCBkZWdyZWVzLCBzcGVjaWZpZWQgaW4gdGhlIFNSUyBhbmd1bGFyIHVuaXQsIGluIFBvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQSkgcHJvamVjdGlvbiBtZXRob2QgKEVQU0c6OTgxMCkuAFRoZSBjbGllbnQgaXMgdXNpbmcgYSBkZXByZWNhdGVkIENMSUVOVF9OT19TQ0hFTUEgY2xpZW50IG9wdGlvbi4gQ0xJRU5UX05PX1NDSEVNQSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AVGFibGUgJyUtLjE5MnMnIGlzIG5vdCBlbXB0eS4AVGFibGUgJyUtLjE5MnMnIGhhcyBubyBwcmltYXJ5IGtleS4AVGFibGUgJyUtLjE5MnMnIGlzIGluIGEgc2hhcmVkIHRhYmxlc3BhY2UuAFRhYmxlICclLS4xOTJzJyBoYXMgaW5kZXhlcyBvdGhlciB0aGFuIHByaW1hcnkga2V5LgBbSU4gUFJJTUFSWSBLRVkgT1JERVJdIHNwZWNpZmllZCBidXQgZGF0YSBub3Qgc29ydGVkOiAnJS0uNjRzJwBCdWxrIGV4ZWN1dG9yIGVycm9yOiAlcwBCdWxrIHJlYWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBsaWJjdXJsAEJ1bGsgcmVhZGVyIGdvdCBsaWJjdXJsIGVycm9yOiAlcwBCdWxrIHJlYWRlciBnb3QgZXJyb3IgcmVzcG9uc2UgZnJvbSBzZXJ2ZXI6ICVsZABCdWxrIHJlYWRlciBnb3QgZXJyb3IgaW4gY29tbXVuaWNhdGlvbiB3aXRoIHNvdXJjZSBzZXJ2ZXIsIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4AQnVsayBsb2FkZXIgZmFpbGVkIGluIElubm9kYiBzdG9yYWdlIGVuZ2luZSwgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgBDU1YgY29sdW1uIHRvbyBiaWcgZm9yIGxlZnRvdmVyIGJ1ZmZlci4AQnVsayBsb2FkZXIgY29tcG9uZW50IGVycm9yOiAlcwBUaGUgZmlyc3QgZmlsZSBiZWluZyBsb2FkZWQgY29udGFpbmVkIGxlc3MgbGluZXMgdGhhbiB0aGUgaWdub3JlIGNsYXVzZQBNaXNzaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gQWRkIE9QVElPTkFMTFkgdG8gdGhlIEVOQ0xPU0VEIEJZIGNsYXVzZSB0byBhbGxvdyB0aGlzIGlucHV0LgBUaGUgbnVtYmVyIG9mIGlucHV0IGNvbHVtbnMgdGhhdCBuZWVkIHRvIGJlIGJ1ZmZlcmVkIGZvciBwYXJzaW5nIGV4Y2VlZGVkIHByZWRlZmluZWQgYnVmZmVyIG1heCBzaXplIGZvciBmaWxlICclcycuAFRoZSBjb2x1bW4gZGF0YSB0aGF0IG5lZWRlZCB0byBiZSBjb3BpZWQgZHVlIHRvIGVzY2FwZWQgY2hhcmFjdGVycyBleGNlZWRlZCB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJuYWwgY29weSBidWZmZXIgZm9yIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuIERhdGEgZm9yIHNvbWUgY29sdW1ucyBpcyBtaXNzaW5nLgBVbmV4cGVjdGVkIHJvdyB0ZXJtaW5hdG9yIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGVuZGluZyBFTkNMT1NFRCBCWSBjaGFyYWN0ZXIgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBOVUxMIGVzY2FwZSAoXE4pIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgY29sdW1uIHRlcm1pbmF0b3IgZm91bmQgYXQgcm93ICVsZCBpbiBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnIHJlc3VsdGluZyBpbiBpbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZS4ATE9BRCBCVUxLIERBVEEgaW50byB0YWJsZSAnJS0uMTkycycgZmFpbGVkOiAlcwBJbmNvcnJlY3QgJS0uMzJzIHZhbHVlOiAnJS0uMTI4cycgZm9yIGNvbHVtbiAnJS0uMTkycycgYXQgcm93ICVsZCBpbiBmaWxlICclLS4xOTJzJwBOVUxMIHN1cHBsaWVkIHRvIE5PVCBOVUxMIGNvbHVtbiAnJXMnIGF0IHJvdyAlbGQgaW4gZmlsZSAnJS0uMTkycycAT24gYSBHcm91cCBSZXBsaWNhdGlvbiBjaGFubmVsLCBzZXR0aW5nIFJFUVVJUkVfVEFCTEVfUFJJTUFSWV9LRVlfQ0hFQ0sgdG8gJ0dFTkVSQVRFJyBpcyBub3QgYWxsb3dlZC4AQ2Fubm90IGNoYW5nZSB0aGUgJyVzJyBzeXN0ZW0gdmFyaWFibGUgaW4gcmVhZC1vbmx5IG1vZGUuAENvbHVtbiBjYW4ndCBiZSBhZGRlZCBvciBkcm9wcGVkIHdpdGggQUxHT1JJVEhNPUlOU1RBTlQgYXMgZWl0aGVyIG1heCBwb3NzaWJsZSByb3cgc2l6ZSBhbHJlYWR5IGNyb3NzZXMgbWF4IHBlcm1pc3NpYmxlIHJvdyBzaXplIG9yIG1heSBjcm9zcyBpdCBhZnRlciBhZGQuIFRyeSBBTEdPUklUSE09SU5QTEFDRS9DT1BZLgBDb2x1bW4gY2FuJ3QgYmUgYWRkZWQgdG8gJyVzJyB3aXRoIEFMR09SSVRITT1JTlNUQU5UIGFueW1vcmUuIFBsZWFzZSB0cnkgQUxHT1JJVEhNPUlOUExBQ0UvQ09QWS4ARmFpbGVkIHRvIHNldCBwZXJzaXN0ZWQgb3B0aW9ucy4AVGhlIHZhbHVlIHN1cHBsaWVkIGZvciAlcyBpbiB0aGUgU0VUIGxpc3QgY2Fubm90IGJlIG51bGwAVGhlIGFzc2lnbm1lbnQgb2YgJXMgaW4gU0VUIGRvZXNuJ3QgbWF0Y2ggYW55IG9mIHRoZSB2YXJpYWJsZXMgcmVnaXN0ZXJlZCBieSB0aGUgY29tcG9uZW50KHMpACclcycgaXMgYSB1c2VyIGRlZmluZWQgY29sbGF0aW9uLiBVc2VyIGRlZmluZWQgY29sbGF0aW9ucyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIENvbnNpZGVyIHVzaW5nIGEgY29tcGlsZWQgY29sbGF0aW9uIGluc3RlYWQuAFVzZXItbGV2ZWwgbG9jayBuYW1lICclLS4xOTJzJyBzaG91bGQgbm90IGV4Y2VlZCAlZCBjaGFyYWN0ZXJzLgBJbW1lZGlhdGVseSBzdGFydGluZyB0aGUgdmVyc2lvbiBjb21tZW50IGFmdGVyIHRoZSB2ZXJzaW9uIG51bWJlciBpcyBkZXByZWNhdGVkIGFuZCBtYXkgY2hhbmdlIGJlaGF2aW9yIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBpbnNlcnQgYSB3aGl0ZS1zcGFjZSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIHZlcnNpb24gbnVtYmVyLgBUaGUgbmV3IHBhc3N3b3JkIG11c3QgaGF2ZSBhdCBsZWFzdCAnJXUnIGNoYXJhY3RlcnMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBwYXNzd29yZC4gSXQgaGFzIG9ubHkgJyV1JyBjaGFyYWN0ZXIocykgZGlmZmVyZW50LiBGb3IgdGhpcyBjb21wYXJpc29uLCB1cHBlcmNhc2UgbGV0dGVycyBhbmQgbG93ZXJjYXNlIGxldHRlcnMgYXJlIGNvbnNpZGVyZWQgdG8gYmUgZXF1YWwuACclcycgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuICVzAFJ1bm5pbmcgcmVjdXJzaXZlIGNhbGxzIHRvIFNRTCBleGVjdXRpb24gc2VydmljZSBpcyBub3Qgc3VwcG9ydGVkACVzAExhbmd1YWdlIGNvbXBvbmVudDogTm90IGF2YWlsYWJsZS4ATGFuZ3VhZ2UgY29tcG9uZW50OiBVbnN1cHBvcnRlZCBsYW5ndWFnZSAnJXMnAExhbmd1YWdlIGNvbXBvbmVudDogQ2Fubm90IHVuaW5zdGFsbCBkdWUgdG8gY29ubmVjdGVkIHNlc3Npb25zLiBQbGVhc2UgZGlzY29ubmVjdCBhbGwgc2Vzc2lvbnMgYW5kIHRyeSBhZ2Fpbi4AQWx0ZXJpbmcgdGhlIGxhbmd1YWdlIG9mIGFuIGV4aXN0aW5nIHJvdXRpbmUgaXMgbm90IHBvc3NpYmxlLgBFWFBMQUlOIEFOQUxZWkUgZG9lcyBub3Qgc3VwcG9ydCB0aGUgSU5UTyBjbGF1c2UuAEVYUExBSU4gSU5UTyBkb2VzIG5vdCBzdXBwb3J0IGltcGxpY2l0IEZPUk1BVC4ARVhQTEFJTiBJTlRPIGRvZXMgbm90IHN1cHBvcnQgRk9STUFUPSVzLgBUcnlpbmcgdG8gcGVyc2lzdCBhIE5VTEwgaW50byBhIHZhcmlhYmxlICclLS4xOTJzJyB0aGF0J3Mgc2V0dGFibGUgb25seSBvbiBjb21tYW5kIGxpbmUgaXMgbm90IHN1cHBvcnRlZABFWFBMQUlOIEZPUiBDT05ORUNUSU9OIGRvZXMgbm90IHN1cHBvcnQgdGhlIElOVE8gY2xhdXNlLgBFbnVtIGVsZW1lbnQgbmFtZSBsZW5ndGggJWx1LCBpcyBpbnZhbGlkIGZvciBjb2x1bW4gJXMATnVtYmVyIG9mIGluZGV4ZXMgaW4gbWV0YS1kYXRhIGZpbGUgaXMgMABOdW1iZXIgb2YgaW5kZXhlcyBpbiBtZXRhLWRhdGEgZmlsZSBpcyB0b28gaGlnaDogJWxsdQBERCBtZXRhZGF0YSBmb3IgSU5TVEFOVCBEUk9QIGNvbHVtbiAlcyBpbiB0YXJnZXQgdGFibGUgZG9lc24ndCBtYXRjaCB3aXRoIENGRy4ARW51bS9TZXQgZWxlbWVudCBuYW1lIG1pc3NpbmcgbnVsbCB0ZXJtaW5hdG9yIGZvciBjb2x1bW4gJyVzJwAlcyAlcyAlenUuAFRoZSBwcml2aWxlZ2UgJyVzJyBpcyBkZXByZWNhdGVkLgBCdWxrIE11bHRpIFJlYWRlcjogRmFpbGVkIHRvIG9wZW4gZmlsZQBCdWxrIE11bHRpIFJlYWRlcjogRmFpbGVkIHRvIHJlYWQgZmlsZQBCdWxrIE1lcmdlIExvYWRlcjogSW52YWxpZCBDaHVuawBCdWxrIE1lcmdlIExvYWRlcjogTm90IGFsbCBjaHVua3MgY29uc3VtZWQAQnVsayB3cml0ZXIgZmFpbGVkIHRvIGluaXRpYWxpemUgbGliY3VybABCdWxrIHdyaXRlciBnb3QgbGliY3VybCBlcnJvcjogJXMAQnVsayBTb3J0aW5nIExvYWRlcjogRmFpbGVkIHRvIHdyaXRlIGRhdGEgdG8gdGVtcG9yYXJ5IGZpbGUAQnVsayBTb3J0aW5nIExvYWRlcjogSW50ZXJydXB0ZWQgd2hpbGUgd2FpdGluZwBCdWxrIFJlYWRlcjogRmFpbGVkIHRvIGFjY2VzcyBmaWxlICVzAEJ1bGsgTG9hZGVyOiBUYWJsZSAnJS0uMTkycycgaGFzIGluc3RhbnRseSBhZGRlZC9kcm9wcGVkIGNvbHVtbnMuIFBsZWFzZSBUUlVOQ0FURSBUQUJMRSBhbmQgcmV0cnkuAEJ1bGsgTG9hZGVyOiBOb3QgZW5vdWdoIG1lbW9yeSBhdmFpbGFibGUuIE1lbW9yeSBuZWVkZWQgZm9yIGxvYWRpbmcgJXMgZGF0YTogJXMgZm9yICV1IHRocmVhZHMsICVzIHdpdGggbWluaW1hbCBjb25maWd1cmF0aW9uLiBUb3RhbCBjb25maWd1cmVkIG1lbW9yeSBpcyAlcywgQXZhaWxhYmxlIG1lbW9yeSBpcyAlcy4ATE9BRCBEQVRBIHdpdGggQlVMSyBBbGdvcml0aG0gaXMgbm90IHN1cHBvcnRlZCBvbiBhIHRhYmxlIHdpdGggc2Vjb25kYXJ5IGVuZ2luZS4AQnVsayByZWFkZXIgZXJyb3I6ICVzAEZpbGUgbm90IGZvdW5kLCBjaGVjayB3aGV0aGVyIGl0IGV4aXN0czogJXMAQ291bGRuJ3QgcmVzb2x2ZSBob3N0OiAlcwBDYW5ub3Qgc3RhcnQgcmVwbGljYXRpb24gY2hhbm5lbCAnJXMnIGJlY2F1c2UgJXMuACclcycgaXMgbm90IHN1cHBvcnRlZAAnJXMnIGlzIHN1cHBvcnRlZCB3aXRoIG1heGltdW0gJWQgZWxlbWVudHMgaW4gdGhlIEdST1VQIEJZIGxpc3QAJyVzJyBmb3IgJyVzJyBzdG9yYWdlIGVuZ2luZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AUVVBTElGWSBjbGF1c2UgY2Fubm90IGJlIHVzZWQgd2l0aG91dCBhIHdpbmRvdyBmdW5jdGlvbi4AJyVzJyBjYW4gYmUgdXNlZCBvbmx5IGlmIHRoZSBoeXBlcmdyYXBoIG9wdGltaXplciBpcyBlbmFibGVkLgBBY2Nlc3MgZGVuaWVkOyB5b3UgbmVlZCAlLS4yNTZzIHByaXZpbGVnZShzKSBmb3IgdGhpcyBvcGVyYXRpb24AQEBTRVNTSU9OLkdUSURfTkVYVCBjYW5ub3QgYmUgc2V0IHRvIEFVVE9NQVRJQzo8VEFHPiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9GRiBvciBPRkZfUEVSTUlTU0lWRQBAQFNFU1NJT04uR1RJRF9ORVhUIGNhbm5vdCBiZSBzZXQgdG8gVVVJRDpUQUc6TlVNQkVSIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLgBDb2x1bW4gJWQgb2YgJXMgOiBDb2x1bW4gY29udGFpbnMgbnVsbCBidXQgaXQgaXMgbm90IG51bGxhYmxlLgBDb2x1bW4gJWQgb2YgJXMgOiBDb2x1bW4gaXMgbWlzc2luZywgYnV0IGl0IGlzIG5vdCBudWxsYWJsZSBhbmQgbm8gZXhwbGljaXQgZGVmYXVsdCB2YWx1ZSBpcyBwcm92aWRlZC4AQ29sdW1uICVkIG9mICVzIDogQ29sdW1uIGlzIGVtcHR5LgBDb2x1bW4gJWQgb2YgJXMgOiBDb2x1bW4gaXMgZW1wdHksIHNldHRpbmcgZGVmYXVsdCB2YWx1ZS4AQ29sdW1uICVkIG9mICVzIDogSW52YWxpZCAlcyB2YWx1ZS4AQ29sdW1uICVkIG9mICVzIDogVW5rbm93biBlcnJvciB3aGlsZSBwYXJzaW5nIGRlY2ltYWwuAENvbHVtbiAlZCBvZiAlcyA6IE91dCBvZiBtZW1vcnkgbG9hZGluZyBkZWNpbWFsLgBDb2x1bW4gJWQgb2YgJXMgOiBGcmFjdGlvbiBleGNlZWRzIHNjaGVtYSwgcm91bmRpbmcgdmFsdWUuAENvbHVtbiAlZCBvZiAlcyA6IGRlY2ltYWwgcHJlY2lzaW9uIGV4Y2VlZHMgc2NoZW1hLgBDb2x1bW4gJWQgb2YgJXMgOiAlcyBleGNlZWRzIG1pbi4AQ29sdW1uICVkIG9mICVzIDogJXMgZXhjZWVkcyBtYXguAENvbHVtbiAlZCBvZiAlcyA6ICVzIGV4Y2VlZHMgbWluLCBzZXR0aW5nIHRvIG1pbiB2YWx1ZSBwb3NzaWJsZS4AQ29sdW1uICVkIG9mICVzIDogJXMgZXhjZWVkcyBtYXgsIHNldHRpbmcgdG8gbWF4IHZhbHVlIHBvc3NpYmxlLgBDb2x1bW4gJWQgb2YgJXMgOiBSZWFsIHZhbHVlIGlzIE5hTi4AQ29sdW1uICVkIG9mICVzIDogJXMgdmFsdWUgaXMgb3V0IG9mIHJhbmdlLgBDb2x1bW4gJWQgb2YgJXMgOiBFcnJvciB3aGlsZSBhcHBseWluZyAlcyBmb3JtYXQuAENvbHVtbiAlZCBvZiAlcyA6ICVzIHZhbHVlIHdhcyB0cnVuY2F0ZWQuAENvbHVtbiAlZCBvZiAlcyA6IENhbm5vdCBjb252ZXJ0IHN0cmluZyAlcy4AUmVzb3VyY2UgcHJpbmNpcGFsIGVycm9yLgBBV1MgYXV0aGVudGljYXRpb24gZXJyb3IuACVzOiVsdTogUGFyc2luZyBlcnJvciBmb3VuZC4gJXMuACVzOiBNaXNtYXRjaCBpbiB0aGUgbnVtYmVyIG9mIGNvbHVtbnMuIEV4cGVjdGVkICV1LCBmb3VuZCAldS4AJXM6IE1vcmUgdGhhbiAldSBjb2x1bW4ocykgZm91bmQuAENvbHVtbiAlZCBpbiAlczogQ2hhcnNldCBpcyBub3Qgc3VwcG9ydGVkLgBDb2x1bW4gJWQgaW4gJXM6IERlY2ltYWwgY29udmVyc2lvbiBlcnJvci4AQ29sdW1uICVkIGluICVzOiBTdHJpbmcgaXMgdG9vIGxvbmcuAFJlc291cmNlIFByaW5jaXBhbCBlbmRwb2ludCBpcyBub3QgY29uZmlndXJlZC4gQ2Fubm90IGFjY2VzcyBmb2xsb3dpbmcgYnVja2V0czogJXMuAE5vIGZpbGVzIGZvdW5kIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZvbGxvd2luZyBkYXRhIGxvY2F0aW9uczogJXMuAEZpbGUgJXMgaXMgZW1wdHkuAEZpbGUgJXMgd2FzIG5vdCBwcm9jZXNzZWQgKGR1cGxpY2F0ZSkuAEZpbGUgJXM6IEF2cm8gc2NoZW1hIGRlcHRoIGV4Y2VlZHMgbWF4IGFsbG93ZWQgZGVwdGguAEZpbGUgJXM6IEhlYWRlciBkb2VzIG5vdCBtYXRjaCBvdGhlciBmaWxlcy4ARmlsZSAlczogRW51bSBzeW1ib2wgY2FuJ3QgY29udmVydCB0byBjb2x1bW4gY2hhcnNldC4ARmlsZSAlczogRW51bSBzeW1ib2xzIGFyZSBub3QgdGhlIHNhbWUsIG9yIGFyZSBub3QgaW4gdGhlIHNhbWUgb3JkZXIuAENvbHVtbiAlZCBpbiAlczogQXZybyB2YWx1ZSBvZiBwaHlzaWNhbCB0eXBlICUuKnMgbG9naWNhbCB0eXBlICUuKnMgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBteXNxbCB0eXBlICVzLgBGaWxlICUuKnM6IEVuZHMgdW5leHBlY3RlZGx5LgBGaWxlICUuKnM6IEZpbGUgZGF0YSBtaWdodCBiZSBjb3JydXB0LgBDb2x1bW4gJWQgaW4gJXM6IEludmFsaWQgdW5pb24gZW5jb3VudGVyZWQuIFVuaW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgdG8gcmVwcmVzZW50IG51bGxhYmxlIGNvbHVtbnMuIE9uZSBvZiB0aGUgdHdvIHR5cGVzIG9mIHRoZSB1bmlvbiBtdXN0IGJlIG51bGwuAEZpbGUgJS4qczogSW52YWxpZCBhdnJvIGJsb2NrIHNpemUuAEZpbGUgJS4qczogSW52YWxpZCBBdnJvIGJsb2NrIHJlY29yZCBjb3VudC4ARmlsZSAlLipzOiBDYW5ub3QgbG9jYXRlICVzIHNwZWNpZmljIG1ldGFkYXRhLiBFaXRoZXIgdGhlIGZpbGUgaXMgY29ycnVwdGVkIG9yIHRoaXMgaXMgbm90IGFuICVzIGZpbGUuAEZpbGUgJS4qczogQ291bGQgbm90IHByb2Nlc3MgQXZybyBoZWFkZXIgbWV0YWRhdGEuIFRoZSBtZXRhZGF0YSBpcyBjb3JydXB0ZWQgb3IgaW52YWxpZC4ARmlsZSAlLipzOiBObyBzY2hlbWEgaW4gQXZybyBoZWFkZXIgbWV0YWRhdGEuAEZpbGUgJS4qczogTm8gY29kZWMgaW4gQXZybyBoZWFkZXIgbWV0YWRhdGEuAEZpbGUgJS4qczogSW52YWxpZCBuYW1lIGluIEF2cm8gc2NoZW1hLgBGaWxlICUuKnM6IEVycm9yIGRlY29kaW5nIEF2cm8gJS4qcy4gJXMAQ29sdW1uICVkIGluICVzOiBTdHJpbmcgd2l0aCBub24tdXRmOCBmaWxlIGVuY29kaW5nLgBEaWZmZXJlbmNlIGluIHNjaGVtYSBhbW9uZyBQYXJxdWV0IGZpbGVzLgBGaWxlICVzOiBTaXplIG9mIHJvdyBncm91cCAlbGQgaXMgbGFyZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIHNpemUgKCVkKS4ARmlsZSAlczogQ2Fubm90IGxvY2F0ZSBvZmZzZXQgb2Ygcm93IGdyb3VwICVsZCBpbiBtZXRhZGF0YS4AQ29sdW1uICVkIGluIHBhcnF1ZXQgdGFibGUgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBteXNxbCBmb3JtYXQuAENhbm5vdCBsb2NhdGUgc2NoZW1hIGluICVzLgBGb3VuZCBmaWxlcyB3aXRoIG1pc21hdGNoZWQgc2NoZW1hcy4ASW5zdWZmaWNpZW50IG1lbW9yeS4AU2tpcHBlZCAlbHUgbGluZShzKSBkdWUgdG8gbWlzbWF0Y2hlZCBudW0gb2YgY29scy4AU2tpcHBlZCAlbHUgZmlsZShzKSBkdWUgdG8gbWlzbWF0Y2hlZCBudW0gb2YgY29scy4ARmlsZSAlcyBpcyBza2lwcGVkIGJlY2F1c2UgaXQgaGFzIG5vIHZhbGlkIGRhdGEuIEZpbGUgaXMgZWl0aGVyIGVtcHR5IG9yIGFsbCByb3dzIGFyZSBza2lwcGVkLgBObyB2YWxpZCBkYXRhIGZvdW5kIGZvciBwcm9jZXNzaW5nLgBObyB2YWxpZCBmaWxlcyBmb3VuZCBmb3IgcHJvY2Vzc2luZy4AVXNlZCBkZWZhdWx0IGNvbHVtbiBuYW1lcyBmb3IgY29sdW1uIGluZGV4KHMpICVzIGFzIHRoZXkgYXJlICVzLgBGaWxlICVzOiBVbmFibGUgdG8gcmVhZCBQYXJxdWV0IGhlYWRlci4AR290IGFuIGV4Y2VwdGlvbiB3aGlsZSB0cnlpbmcgdG8gcHJvY2VzcyBmaWxlIHRhc2suAEZpbGUgJS4qczogQ291bGQgbm90IHBhcnNlIGF2cm8gaGVhZGVyLiBQcm9iYWJseSBjb3JydXB0ZWQgYXZybyBmaWxlLgBQYXJxdWV0IHJlYWRlciBjYW5ub3Qgb3BlbiAlcy4gJXMARmlsZSAlLipzOiAlcwBGaWxlICUuKnM6ICVzAFRhYmxlc2FtcGxlIHBlcmNlbnRhZ2Ugc2hvdWxkIHJhbmdlIGJldHdlZW4gMCBhbmQgMTAwLgBUYWJsZXNhbXBsZSBjYW4gYmUgYXBwbGllZCBvbmx5IG9uIGJhc2UgdGFibGVzLgBQYXJhbWV0ZXIgaW5kZXggJWxsdSBpcyBvdXQgb2YgcmFuZ2UAUmVzdWx0IHNpemUgbGltaXQgZXhjZWVkZWQuAExhbmd1YWdlIGNvbXBvbmVudDogSW50ZXJuYWwgZXJyb3IuAExhbmd1YWdlIGNvbXBvbmVudDogQ29uY3VycmVuY3kgbGltaXQgKCVzKSBoYXMgYmVlbiByZWFjaGVkLgAlcz4gJXMAJXM+IFRpbWUgem9uZSAlcyBpcyBub3Qgc3VwcG9ydGVkLgAlcz4gVGhlIGlkZW50aWZpZXIgJyVzJyBpcyBhIHJlc2VydmVkIHdvcmQuAExhbmd1YWdlIGNvbXBvbmVudDogU3lzdGVtIHZhcmlhYmxlICclcycgY2Fubm90IGJlIGNvbmZpZ3VyZWQgd2hlbiBjb21wb25lbnQgaXMgYWN0aXZlLgAlcz4gJXMAJXM+ICVzAFN0b3JlZCBwcm9ncmFtIHN0YXRlbWVudCBpcyBwYXJ0aWFsbHkgY29tcGxldGVkLiBSZXN1bHQgc2V0IG1pZ2h0IG5vdCBjb250YWluIGFsbCB0aGUgcm93cy4ARXhlY3V0aW5nIFNRTCBzdGF0ZW1lbnQgdXNpbmcgJXMgU3RhdGVtZW50IEhhbmRsZSBJbnRlcmZhY2UgaXMgbm90IGFsbG93ZWQgd2l0aGluIHN0b3JlZCBmdW5jdGlvbiwgdHJpZ2dlciBvciBsb2FkYWJsZSBmdW5jdGlvbiAoVURGKS4AQ29sdW1uICVkIG9mICVzIDogJXMARW5naW5lICVzIGNhbm5vdCBiZSBzZXQgYXMgZGVmYXVsdF9zdG9yYWdlX2VuZ2luZS4AQ29sdW1uICclLjY0cy4lLjY0cy4lLjY0cycgaGF2aW5nIHByZWZpeCBrZXkgcGFydCAnJS42NHMoJXUpJyBpbiB0aGUgUEFSVElUSU9OIEJZIEtFWSgpIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkLgBGb3JlaWduIGtleSAnJS42NHMnIHJlZmVycyB0byBub24tdW5pcXVlIGtleSBvciBwYXJ0aWFsIGtleS4gVGhpcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4ARmFpbGVkIHRvIGFkZCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludC4gTWlzc2luZyB1bmlxdWUga2V5IGZvciBjb25zdHJhaW50ICclcycgaW4gdGhlIHJlZmVyZW5jZWQgdGFibGUgJyVzJwBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnLCBtaXNzaW5nIHByb3h5IHByaXZpbGVnZS4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJywgcHJveGllZCB1c2VyIGRvZXNuJ3QgZXhpc3QuAFVuYWJsZSB0byBhY2Nlc3MgdGhlIGZvbGxvd2luZyBkYXRhIGxvY2F0aW9uczogJXMAWlNURCBkZWNvbXByZXNzaW9uIGZhaWxlZDogJXMAJXMASW52YWxpZCBqc29uIGZpbGUgZm9ybWF0IHNjaGVtYTogJXMASW5mZXJyZWQgaW52YWxpZCBzY2hlbWEuIEEgc2luZ2xlIGNvbHVtbiB3aXRoIEpTT04gdHlwZSBpcyB0aGUgb25seSB2YWxpZCBzY2hlbWEgZm9yIEpTT04gZmlsZSBmb3JtYXQuAEFsdGVyZWQgdGhlIGluZmVycmVkIHNjaGVtYSB0byBhIHNpbmdsZSBKU09OIGNvbHVtbi4ATm9uLXNjYWxhciAoZS5nLiwgdmVjdG9yKSBjb2x1bW4gJyUuNjRzJyBjYW5ub3QgYmUgdXNlZCBhcyBrZXkuAENvbHVtbnMgYWdncmVnYXRlZCB3aXRoIGluY29tcGF0aWJsZSB0eXBlczogJyUuNjRzJywgJyUuNjRzJy4AVmFsdWUgb2YgdHlwZSAnJS4xNnMsIHNpemU6ICV6dScgY2Fubm90IGJlIGNvbnZlcnRlZCB0byAndmVjdG9yJyB0eXBlLgBEYXRhIHNpemUgKCV6dSBCeXRlcywgJXUgZGltZW5zaW9ucykgZXhjZWVkcyBWRUNUT1IgbWF4ICglenUgQnl0ZXMsICV1IGRpbWVuc2lvbnMpIGZvciBjb2x1bW46ICclLjY0cycARGF0YSBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgdmFsaWQgdmVjdG9yOiAnJS4qcycAVGhpcyBzdG9yYWdlIGVuZ2luZSBpZ25vcmVzIHRoZSAlcyBpbmRleCBhbGdvcml0aG0uAFRoZSB2YXJpYWJsZSB0aHJlYWRfcG9vbF9tYXhfdHJhbnNhY3Rpb25zX2xpbWl0IGNhbm5vdCBiZSBzZXQgdG8gMCB3aGVuIHRocmVhZF9wb29sX2RlZGljYXRlZF9saXN0ZXJuZXMgaXMgT04uAENhbid0IGV4ZWN1dGUgdGhlIHF1ZXJ5IGJlY2F1c2UgeW91IGhhdmUgYSBjb25mbGljdGluZyBiYWNrdXAgbG9jawBDb21wcmVzc2VkIGNvbHVtbiAnJS0uMTkycycgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGtleSBsaXN0AENhbiBub3QgZGVmaW5lIGNvbHVtbiAnJS0uMTkycycgaW4gY29tcHJlc3NlZCBmb3JtYXQAQ29tcHJlc3Npb24gZGljdGlvbmFyeSAnJS0uMTkycycgYWxyZWFkeSBleGlzdHMAQ29tcHJlc3Npb24gZGljdGlvbmFyeSAnJS0uMTkycycgZG9lcyBub3QgZXhpc3QAQ29tcHJlc3Npb24gZGljdGlvbmFyeSBuYW1lICclLS4xOTJzJyBpcyB0b28gbG9uZyAobWF4IGxlbmd0aCA9ICVsdSkARGF0YSBmb3IgY29tcHJlc3Npb24gZGljdGlvbmFyeSAnJS0uMTkycycgaXMgdG9vIGxvbmcgKG1heCBsZW5ndGggPSAlbHUpAENvbXByZXNzaW9uIGRpY3Rpb25hcnkgJyUtLjE5MnMnIGlzIGluIHVzZQBSZWRvIGxvZyBlbmNyeXB0aW9uIG1vZGUgY2FuJ3QgYmUgc3dpdGNoZWQgd2l0aG91dCBzdG9wcGluZyB0aGUgc2VydmVyIGFuZCByZWNyZWF0aW5nIHRoZSByZWRvIGxvZ3MuIEN1cnJlbnQgbW9kZSBpcyAlcywgcmVxdWVzdGVkICVzLgBSZWRvIGxvZyBrZXkgZ2VuZXJhdGlvbiBmYWlsZWQuAEZhaWxlZCB0byBsb2FkIHJlZG8ga2V5IHZlcnNpb24gJXUAQ291bGRuJ3QgZmV0Y2ggbmV3bHkgZ2VuZXJhdGVkIHJlZG8ga2V5LgBDb3VsZG4ndCBwYXJzZSBzeXN0ZW0ga2V5OiAlcwBSZWRvIGxvZyBjYW5ub3QgYmUgZW5jcnlwdGVkIGlmIHRoZSBrZXlyaW5nIGlzIG5vdCBsb2FkZWQuAFVuZG8gbG9nIGNhbid0IGJlIGVuY3J5cHRlZCBpZiB0aGUga2V5cmluZyBpcyBub3QgbG9hZGVkLgBUYWJsZSAlcyBpcyBlbmNyeXB0ZWQgYnV0IGRlY3J5cHRpb24gZmFpbGVkLiBTZWVtcyB0aGF0IHRoZSBlbmNyeXB0aW9uIGtleSBmZXRjaGVkIGZyb20ga2V5cmluZyBpcyBub3QgdGhlIGNvcnJlY3Qgb25lLiBBcmUgeW91IHVzaW5nIHRoZSBjb3JyZWN0IGtleXJpbmc/AFRhYmxlc3BhY2UgJXMgaXMgZnVsbHkgb3IgcGFydGlhbGx5IGVuY3J5cHRlZCBieSBlbmNyeXB0aW9uIHRocmVhZHMgYW5kIHRodXMgY2Fubm90IGJlIGV4Y2x1ZGVkIGZyb20gZW5jcnlwdGlvbiB0aHJlYWRzLiBQbGVhc2UgZmlyc3QgZmluaXNoIG9mZiBlbmNyeXB0aW9uL2RlY3J5cHRpb24gYW5kIHRyeSBhZ2Fpbi4AVGFibGVzcGFjZSAlcyBpcyBlbmNyeXB0ZWQgYnkgZW5jcnlwdGlvbiB0aHJlYWRzIGFuZCBjYW5ub3QgYmUgZXhwbGljaXRseSBkZWNyeXB0ZWQuIFBsZWFzZSB1c2UgZGVmYXVsdC10YWJsZS1lbmNyeXB0aW9uPU9OTElORV9GUk9NX0tFWVJJTkdfVE9fVU5FTkNSWVBURUQgdG8gZGVjeXB0IHRoZSB0YWJsZXNwYWNlLgBUYWJsZXNwYWNlICVzIGlzIGVuY3J5cHRlZCBieSBlbmNyeXB0aW9uIHRocmVhZHMgYW5kIGNhbm5vdCBiZSBBTFRFUmVkIHRvIE1hc3RlciBLZXkgZW5jcnlwdGlvbi4gSW4gb3JkZXIgdG8gZW5jcnlwdCB0aGlzIHRhYmxlc3BhY2Ugd2l0aCBNYXN0ZXIgS2V5IGVuY3J5cHRpb24sIGZpcnN0IGRlY3J5cHQgdGhpcyB0YWJsZXNwYWNlIHdpdGggZW5jcnlwdGlvbiB0aHJlYWRzLgBEYXRhYmFzZSBkZWZhdWx0IGVuY3J5cHRpb24gY2Fubm90IGJlIHNldCB0byBZIChNYXN0ZXIgS2V5IGVuY3J5cHRpb24pIHdoaWxlIGRlZmF1bHRfdGFibGVfZW5jcnlwdGlvbiBpcyBzZXQgdG8gT05MSU5FX1RPX0tFWVJJTkcuIEl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gY3JlYXRlIG5ldyBNYXN0ZXIgS2V5IGVuY3J5cHRlZCB0YWJsZXMgaWYgdGhlIGludGVudGlvbiBpcyB0byByZS1lbmNyeXB0IHRoZW0gdG8gS0VZUklORyBlbmNyeXB0aW9uLgBEYXRhYmFzZSBkZWZhdWx0IGVuY3J5cHRpb24gY2Fubm90IGJlIHNldCB0byBOIChleHBsaWNpdGx5IHJlcXVlc3QgZm9yIHRhYmxlcyBpbiBkYXRhYmFzZSB0byBiZSB1bmVuY3J5cHRlZCkgd2hpbGUgZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uIGlzIHNldCB0byBPTkxJTkVfVE9fS0VZUklORy4gSWYgeW91IHdhbnQgdG8gZXhjbHVkZSB0YWJsZSBmcm9tIGJlaW5nIGVuY3J5cHRlZCBieSBlbmNyeXB0aW9uIHRocmVhZHMgeW91IGNhbiBzdGlsbCBkbyBpdCB3aGlsZSBjcmVhdGluZyB0YWJsZS4gRm9yIHRoYXQgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzcGVjaWZ5IEVOQ1JZUFRJT049J04nIHdoaWxlIGNyZWF0aW5nIGEgdGFibGUuAFRhYmxlc3BhY2UgJXMgY2Fubm90IGhhdmUgaXRzIEVOQ1JZUFRJT04gYWx0ZXJlZCBhcyBpdCBpcyBiZWluZyBjdXJyZW50bHkgZW5jcnlwdGVkL2RlY3J5cHRlZCBieSBlbmNyeXB0aW9uIHRocmVhZHMuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuAEVuY3J5cHRpb24gb3B0aW9uIGlzIG5vdCBhbGxvd2VkLiAlcwBUaGUgbnVtYmVyIG9mIHJlY29yZHMgZ2VuZXJhdGVkIGJ5IFBFUkNPTkFfU0VRVUVOQ0VfVEFCTEUoKSBjYW5ub3QgZXhjZWVkICVsbHUgKCVsbHUgcmVxdWVzdGVkKS4gVHJ5IGluY3JlYXNpbmcgQEB0Zl9zZXF1ZW5jZV90YWJsZV9tYXhfdXBwZXJfYm91bmQgdG8gYSBsYXJnZXIgdmFsdWUuAElubm9EQiBzeXN0ZW0ga2V5ICVsdSBjYW5ub3QgYmUgcm90YXRlZCwgYmVjYXVzZSBpdCBkb2VzIG5vdCBleGlzdC4ASW5ub0RCIHN5c3RlbSBrZXkgY2Fubm90IGhhdmUgdmFsdWUgZ3JlYXRlciB0aGFuIDQyOTQ5NjcyOTQuAENhbm5vdCBnZW5lcmF0ZSBuZXcgdmVyc2lvbiBvZiBzeXN0ZW0ga2V5ICVsdS4gS2V5cmluZyByZXBvcnRlZCBhbiBlcnJvci4gUGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgYXZhaWxhYmxlLgBUaGUgcmVxdWVzdGVkIHZhbHVlICVsdSBmb3IgdGhlIGVuY3J5cHRpb25fa2V5X2lkIGV4Y2VlZHMgdGhlIG1heGltdW0gYWxsb3dlZCAlbHUAV3JhcHBlZCBVREYgZXhjZXB0aW9uIGluIGZ1bmN0aW9uICclLS4xOTJzJzsgJS0uODBzAE11bHRpIHRhYmxlIGRyb3AgaXMgbm90IHN1cHBvcnRlZCB3aGVuICclcycgb3B0aW9uIGlzIGVuYWJsZWQAVGhlIG51bWJlciBvZiBwcm92aWRlZCBlcnJvciBjb2RlcyBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgJWx1AFByb3ZpZGVkIGVycm9yIGNvZGUgaXMgYmlnZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkICVsdQBUaGUgcm9sZSAlcyBpcyBhIGR5bmFtaWMgcm9sZSBhbmQgY2FuJ3QgYmUgcmV2b2tlZCBvciBkcm9wcGVkLiBJdCBzaG91bGQgYmUgbWFuYWdlZCBieSB0aGUgZXh0ZXJuYWwgYXV0aGVudGljYXRpb24gcGx1Z2luIGluc3RlYWQuAFRoZSAtLXNlY3VyZS1maWxlLXBhdGggaXMgY29uZmlndXJlZCwgJXMgbXVzdCBiZSBzZXQgYWNjb3JkaW5nbHkuAEtleXMgYXJlIG91dCBvcmRlciBkdXJpbmcgYnVsayBsb2FkAEJ1bGsgbG9hZCByb3dzIG92ZXJsYXAgZXhpc3Rpbmcgcm93cwBDYW4ndCBleGVjdXRlIHVwZGF0ZXMgb24gbWFzdGVyIHdpdGggYmlubG9nX2Zvcm1hdCAhPSBST1cuAE15Um9ja3Mgc3VwcG9ydHMgb25seSBSRUFEIENPTU1JVFRFRCBhbmQgUkVQRUFUQUJMRSBSRUFEIGlzb2xhdGlvbiBsZXZlbHMuIFBsZWFzZSBjaGFuZ2UgZnJvbSBjdXJyZW50IGlzb2xhdGlvbiBsZXZlbCAlcwBXaGVuIHVuaXF1ZSBjaGVja2luZyBpcyBkaXNhYmxlZCBpbiBNeVJvY2tzLCBJTlNFUlQsVVBEQVRFLExPQUQgc3RhdGVtZW50cyB3aXRoIGNsYXVzZXMgdGhhdCB1cGRhdGUgb3IgcmVwbGFjZSB0aGUga2V5IChpLmUuIElOU0VSVCBPTiBEVVBMSUNBVEUgS0VZIFVQREFURSwgUkVQTEFDRSkgYXJlIG5vdCBhbGxvd2VkLiBRdWVyeTogJXMAQ2FuJ3QgZXhlY3V0ZSB1cGRhdGVzIHdoZW4geW91IHN0YXJ0ZWQgYSB0cmFuc2FjdGlvbiB3aXRoIFNUQVJUIFRSQU5TQUNUSU9OIFdJVEggQ09OU0lTVEVOVCBbUk9DS1NEQl0gU05BUFNIT1QuAFRoaXMgdHJhbnNhY3Rpb24gd2FzIHJvbGxlZCBiYWNrIGFuZCBjYW5ub3QgYmUgY29tbWl0dGVkLiBPbmx5IHN1cHBvcnRlZCBvcGVyYXRpb24gaXMgdG8gcm9sbCBpdCBiYWNrLCBzbyBhbGwgcGVuZGluZyBjaGFuZ2VzIHdpbGwgYmUgZGlzY2FyZGVkLiBQbGVhc2UgcmVzdGFydCBhbm90aGVyIHRyYW5zYWN0aW9uLgBNeVJvY2tzIGN1cnJlbnRseSBkb2VzIG5vdCBzdXBwb3J0IFJPTExCQUNLIFRPIFNBVkVQT0lOVCBpZiBtb2RpZnlpbmcgcm93cy4AT25seSBSRVBFQVRBQkxFIFJFQUQgaXNvbGF0aW9uIGxldmVsIGlzIHN1cHBvcnRlZCBmb3IgU1RBUlQgVFJBTlNBQ1RJT04gV0lUSCBDT05TSVNURU5UIFNOQVBTSE9UIGluIFJvY2tzREIgU3RvcmFnZSBFbmdpbmUuAFVuc3VwcG9ydGVkIGNvbGxhdGlvbiBvbiBzdHJpbmcgaW5kZXhlZCBjb2x1bW4gJXMuJXMgVXNlIGJpbmFyeSBjb2xsYXRpb24gKCVzKS4AVGFibGUgJyVzJyBkb2VzIG5vdCBleGlzdCwgYnV0IG1ldGFkYXRhIGluZm9ybWF0aW9uIGV4aXN0cyBpbnNpZGUgTXlSb2Nrcy4gVGhpcyBpcyBhIHNpZ24gb2YgZGF0YSBpbmNvbnNpc3RlbmN5LgBNeVJvY2tzIGZhaWxlZCBjcmVhdGluZyBuZXcga2V5IGRlZmluaXRpb25zIGR1cmluZyBhbHRlci4ATXlSb2NrcyBmYWlsZWQgcG9wdWxhdGluZyBzZWNvbmRhcnkga2V5IGR1cmluZyBhbHRlci4AQ29sdW1uIGZhbWlseSAoJyUuKnMnKSBmbGFnICglZCkgaXMgZGlmZmVyZW50IGZyb20gYW4gZXhpc3RpbmcgZmxhZyAoJWQpLiBBc3NpZ24gYSBuZXcgQ0YgZmxhZywgb3IgZG8gbm90IGNoYW5nZSBleGlzdGluZyBDRiBmbGFnLgBUVEwgc3VwcG9ydCBpcyBjdXJyZW50bHkgZGlzYWJsZWQgd2hlbiB0YWJsZSBoYXMgYSBoaWRkZW4gUEsuAFRUTCBjb2x1bW4gKCVzKSBpbiBNeVJvY2tzIG11c3QgYmUgYW4gdW5zaWduZWQgbm9uLW51bGwgNjQtYml0IGludGVnZXIgb3Igbm9uLW51bGwgdGltZXN0YW1wLCBleGlzdCBpbnNpZGUgdGhlIHRhYmxlLCBhbmQgaGF2ZSBhbiBhY2NvbXBhbnlpbmcgdHRsIGR1cmF0aW9uLgBUVEwgZHVyYXRpb24gKCVzKSBpbiBNeVJvY2tzIG11c3QgYmUgYW4gdW5zaWduZWQgbm9uLW51bGwgNjQtYml0IGludGVnZXIuAFRoZSBwZXItaW5kZXggY29sdW1uIGZhbWlseSBvcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZC4AQ29sdW1uIGZhbWlseSAoJyVzJykgaXMgYmVpbmcgZHJvcHBlZC4AQ2Fubm90IGRyb3AgQ29sdW1uIGZhbWlseSAoJyVzJykgYmVjYXVzZSBpdCBpcyBpbiB1c2Ugb3IgZG9lcyBub3QgZXhpc3QuAFBhcnNlciBzYXc6ICVzAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIGJvb3RzdHJhcCAoZXJybm86ICVkKQBUcmlnZ2VyIGZvciB0YWJsZSAnJXMnLiclcyc6IGludmFsaWQgJXMgdmFsdWUgKCVzKS4AV3JvbmcgdHJlZTogJXMARXJyb3I6IEludmFsaWQgJXMAU2tpcCByZS1wb3B1bGF0aW5nIGNvbGxhdGlvbnMgYW5kIGNoYXJhY3RlciBzZXRzIHRhYmxlcyBpbiAlcyVzcmVhZC1vbmx5IG1vZGUuAFVzaW5nIGRhdGEgZGljdGlvbmFyeSB3aXRoIHZlcnNpb24gJyVkJy4ASW5zdGFsbGVkIGRhdGEgZGljdGlvbmFyeSB3aXRoIHZlcnNpb24gJWQARGF0YSBEaWN0aW9uYXJ5IHZlcnNpb24gJyVkJyBub3Qgc3VwcG9ydGVkLgBGYWlsZWQgdG8gc2V0IHN5c2xvZyBmYWNpbGl0eSB0byAiJXMiLCBzZXR0aW5nIHRvICIlcyIgKCVkKSBpbnN0ZWFkLgBDYW5ub3Qgb3BlbiAlczsgY2hlY2sgcHJpdmlsZWdlcywgb3IgcmVtb3ZlIHN5c2V2ZW50bG9nIGZyb20gLS1sb2ctZXJyb3Itc2VydmljZXMhACBlaXRoZXIgcmVzdGFydCB0aGUgcXVlcnkgbG9nZ2luZyBieSB1c2luZyAiU0VUIEdMT0JBTCBTTE9XX1FVRVJZX0xPRz1PTiIgb3IAIGVpdGhlciByZXN0YXJ0IHRoZSBxdWVyeSBsb2dnaW5nIGJ5IHVzaW5nICJTRVQgR0xPQkFMIEdFTkVSQUxfTE9HPU9OIiBvcgBGYWlsZWQgdG8gd3JpdGUgdG8gJXM6ICVzAFdoaWxlIGluaXRpYWxpemluZyBkdW1wIHRocmVhZCBmb3IgcmVwbGljYSB3aXRoICVzIDwlcz4sIGZvdW5kIGEgem9tYmllIGR1bXAgdGhyZWFkIHdpdGggdGhlIHNhbWUgJXMuIFNvdXJjZSBpcyBraWxsaW5nIHRoZSB6b21iaWUgZHVtcCB0aHJlYWQoJXUpLgBHdGlkIHRhYmxlIGlzIG5vdCByZWFkeSB0byBiZSB1c2VkLiBUYWJsZSAnJXMuJXMnIGNhbm5vdCBiZSBvcGVuZWQuAFN5c3RlbSBzY2hlbWEgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LgBFcnJvciBpbiBpbml0aWFsaXppbmcgZGljdGlvbmFyeSwgdXBncmFkZSB3aWxsIGRvIGEgY2xlYW51cCBhbmQgZXhpdABWaWV3ICclcycuJyVzJzogdW5rbm93biBjaGFyc2V0IG5hbWUgYW5kL29yIGNvbGxhdGlvbiBuYW1lIChjbGllbnQ6ICclcyc7IGNvbm5lY3Rpb246ICclcycpLgBFcnJvciBpbiBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgY2hhcmFjdGVyIHNldCBuYW1lIGZvciB2aWV3ICVzLiVzLgBEYXRhIERpY3Rpb25hcnkgaW5pdGlhbGl6YXRpb24gZmFpbGVkLgBGYWlsZWQgdG8gdXBkYXRlIHBsdWdpbiBtZXRhZGF0YSBpbiBkaWN0aW9uYXJ5IHRhYmxlcy4ARmFpbGVkIHRvIFBvcHVsYXRlIEREIHRhYmxlcy4ARXJyb3IgaW4gQ3JlYXRpbmcgVmlldyAlcy4lcwBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBDYW5ub3QgZmluZCB0aGUgbWV0YSBkYXRhIGZvciBkYXRhIGRpY3Rpb25hcnkgdGFibGUgJyVzJy4ARGljdGlvbmFyeSBjYWNoZSBub3QgZW1wdHkgYXQgc2h1dGRvd24uAERpY3Rpb25hcnkgb2JqZWN0cyB1c2VkIGJ1dCBub3QgcmVsZWFzZWQuAERpY3Rpb25hcnkgb2JqZWN0cyBsZWZ0IGluIGRlZmF1bHQgcmVsZWFzZXIuAERpY3Rpb25hcnkgb2JqZWN0IGF1dG8gcmVsZWFzZXIgbm90IGRlbGV0ZWQARXJyb3I6IFVuYWJsZSB0byBjcmVhdGUgcHJpbWFyeSBvYmplY3Qga2V5AEVycm9yOiBVbmFibGUgdG8gY3JlYXRlIG9iamVjdCBrZXkAQ2FuJ3QgY3JlYXRlIGhhbmRsZV9tYW5hZ2VyIHRocmVhZCAoZXJybm89ICVkKQBJdCBpcyBub3QgcG9zc2libGUgdG8gY2hhbmdlIHRoZSB0eXBlIG9mIHRoZSByZWxheSBsb2cncyByZXBvc2l0b3J5IGJlY2F1c2UgdGhlcmUgYXJlIHdvcmtlcnMnIHJlcG9zaXRvcmllcyB3aXRoIGdhcHMuIFBsZWFzZSwgZml4IHRoZSBnYXBzIGZpcnN0IGJlZm9yZSBkb2luZyBzdWNoIGNoYW5nZS4Ab3B0aW9uICdlbmZvcmNlLWd0aWQtY29uc2lzdGVuY3knOiB2YWx1ZSAnJXMnIHdhcyBub3QgcmVjb2duaXplZC4gU2V0dGluZyBlbmZvcmNlLWd0aWQtY29uc2lzdGVuY3kgdG8gT0ZGLgBDaGFuZ2VkIEVORk9SQ0VfR1RJRF9DT05TSVNURU5DWSBmcm9tICVzIHRvICVzLgBDaGFuZ2VkIEdUSURfTU9ERSBmcm9tICVzIHRvICVzLgAlcyBpcyBzZXQgdG8gYSBkaXNhYmxlZCBzdG9yYWdlIGVuZ2luZSAlcy4ARGVidWcgc3luYyBwb2ludHMgaGl0OiAgICAgICAgICAgICAgICAgICAlMjJzAERlYnVnIHN5bmMgcG9pbnRzIGV4ZWN1dGVkOiAgICAgICAgICAgICAgJTIycwBEZWJ1ZyBzeW5jIHBvaW50cyBtYXggYWN0aXZlIHBlciB0aHJlYWQ6ICUyMnMARGVidWcgU3luYyBGYWNpbGl0eSBkaXNhYmxlZCBkdWUgdG8gbGFjayBvZiBtZW1vcnkuAENhbid0IGluaXQgdGMgbG9nAEV2ZW50IFNjaGVkdWxlcjogQ2FuJ3QgaW5pdGlhbGl6ZSB0aGUgZXhlY3V0aW9uIHF1ZXVlAEV2ZW50IFNjaGVkdWxlcjogUHVyZ2luZyB0aGUgcXVldWUuICV1IGV2ZW50cwBFdmVudCBTY2hlZHVsZXI6IExhc3QgZXhlY3V0aW9uIG9mICVzLiVzLiAlcwAlKnMARXZlbnQgU2NoZWR1bGVyOiBbJXNdLlslcy4lc10gZXZlbnQgZXhlY3V0aW9uIGZhaWxlZC4ARXZlbnQgU2NoZWR1bGVyOiBDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2NoZWR1bGVyIHRocmVhZABFdmVudCBTY2hlZHVsZXI6IFN0b3BwZWQARXZlbnQgc2NoZWR1bGVyOiBGYWlsZWQgdG8gc3RhcnQgc2NoZWR1bGVyLCBDYW4gbm90IGNyZWF0ZSB0aHJlYWQgZm9yIGV2ZW50IHNjaGVkdWxlciAoZXJybm89JWQpAEV2ZW50IFNjaGVkdWxlcjogV2FpdGluZyBmb3IgdGhlIHNjaGVkdWxlciB0aHJlYWQgdG8gcmVwbHkARXZlbnQgU2NoZWR1bGVyOiBzY2hlZHVsZXIgdGhyZWFkIHN0YXJ0ZWQgd2l0aCBpZCAldQBFdmVudCBTY2hlZHVsZXI6IFNlcmlvdXMgZXJyb3IgZHVyaW5nIGdldHRpbmcgbmV4dCBldmVudCB0byBleGVjdXRlLiBTdG9wcGluZwBFdmVudF9zY2hlZHVsZXI6OmV4ZWN1dGVfdG9wOiBDYW4gbm90IGNyZWF0ZSBldmVudCB3b3JrZXIgdGhyZWFkIChlcnJubz0lZCkuIFN0b3BwaW5nIGV2ZW50IHNjaGVkdWxlcgBFdmVudCBTY2hlZHVsZXI6IEtpbGxpbmcgdGhlIHNjaGVkdWxlciB0aHJlYWQsIHRocmVhZCBpZCAldQBJUCBhZGRyZXNzICclcycgY291bGQgbm90IGJlIHJlc29sdmVkOiAlcwBIb3N0IG5hbWUgJyVzJyBjb3VsZCBub3QgYmUgcmVzb2x2ZWQ6ICVzAElQIGFkZHJlc3MgJyVzJyBoYXMgYmVlbiByZXNvbHZlZCB0byB0aGUgaG9zdCBuYW1lICclcycsIHdoaWNoIHJlc2VtYmxlcyBJUHY0LWFkZHJlc3MgaXRzZWxmLgBIb3N0bmFtZSAnJXMnIGRvZXMgbm90IHJlc29sdmUgdG8gJyVzJy4ASG9zdG5hbWUgJyVzJyBoYXMgdGhlIGZvbGxvd2luZyBJUCBhZGRyZXNzZXM6ACAtICVzAERlZmluZXIgY2xhdXNlIGlzIG1pc3NpbmcgaW4gVHJpZ2dlciBvZiBUYWJsZSAlcy4gUmVidWlsZCBUcmlnZ2VyIHRvIGZpeCBkZWZpbmVyLgBDbGllbnQgY2hhcmFjdGVyIHNldCBpcyBtaXNzaW5nIGZvciB0cmlnZ2VyIG9mIHRhYmxlICVzLiBVc2luZyBkZWZhdWx0IGNoYXJhY3RlciBzZXQuAEVycm9yIGluIHBhcnNpbmcgdmlldyAlcy4lcwBGYWlsZWQgdG8gYm9vdHN0cmFwIGNvbXBvbmVudHMgaW5mcmFzdHJ1Y3R1cmUuAEZhaWxlZCB0byBzaHV0ZG93biBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBGYWlsZWQgdG8gYm9vdHN0cmFwIHBlcnNpc3RlbnQgY29tcG9uZW50cyBsb2FkZXIuAEdpdmluZyAlZCBjbGllbnQgdGhyZWFkcyBhIGNoYW5jZSB0byBkaWUgZ3JhY2VmdWxseQBDQSBjZXJ0aWZpY2F0ZSAlcyBpcyBzZWxmIHNpZ25lZC4ARmFpbGVkIHRvIHNldCB1cCBTU0wgYmVjYXVzZSBvZiB0aGUgZm9sbG93aW5nIFNTTCBsaWJyYXJ5IGVycm9yOiAlcwBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBzZXJ2ZXIgVVVJRCBiZWNhdXNlIGl0IGlzIGZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgVEhELgBTYWx0aW5nIHV1aWQgZ2VuZXJhdG9yIHZhcmlhYmxlcywgY3VycmVudF9waWQ6ICVsdSwgc2VydmVyX3N0YXJ0X3RpbWU6ICVsdSwgYnl0ZXNfc2VudDogJWxsdSwgAEdlbmVyYXRlZCB1dWlkOiAnJXMnLCBzZXJ2ZXJfc3RhcnRfdGltZTogJWx1LCBieXRlc19zZW50OiAlbGx1AFRoZSBzZXJ2ZXJfdXVpZCBzdG9yZWQgaW4gYXV0by5jbmYgZmlsZSBpcyBub3QgYSB2YWxpZCBVVUlELgBHYXJiYWdlIGNoYXJhY3RlcnMgZm91bmQgYXQgdGhlIGVuZCBvZiB0aGUgc2VydmVyX3V1aWQgdmFsdWUgaW4gYXV0by5jbmYgZmlsZS4gSXQgc2hvdWxkIGJlIG9mIGxlbmd0aCAnJWQnIChVVUlEX0xFTkdUSCkuIENsZWFyIGl0IGFuZCByZXN0YXJ0IHRoZSBzZXJ2ZXIuIABObyBleGlzdGluZyBVVUlEIGhhcyBiZWVuIGZvdW5kLCBzbyB3ZSBhc3N1bWUgdGhhdCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHRoYXQgdGhpcyBzZXJ2ZXIgaGFzIGJlZW4gc3RhcnRlZC4gR2VuZXJhdGluZyBhIG5ldyBVVUlEOiAlcy4ASW5pdGlhbGl6YXRpb24gb2YgdGhlIHNlcnZlcidzIFVVSUQgZmFpbGVkIGJlY2F1c2UgaXQgY291bGQgbm90IGJlIHJlYWQgZnJvbSB0aGUgYXV0by5jbmYgZmlsZS4gSWYgdGhpcyBpcyBhIG5ldyBzZXJ2ZXIsIHRoZSBpbml0aWFsaXphdGlvbiBmYWlsZWQgYmVjYXVzZSBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdlbmVyYXRlIGEgbmV3IFVVSUQuAFVua25vd24vdW5zdXBwb3J0ZWQgc3RvcmFnZSBlbmdpbmU6ICVzAFVuc3VwcG9ydGVkIHZhbHVlIDAgZm9yIHNlY3VyZS1hdXRoAEludmFsaWQgaW5zdHJ1bWVudCBuYW1lIG9yIHZhbHVlIGZvciBwZXJmb3JtYW5jZV9zY2hlbWFfaW5zdHJ1bWVudCAnJXMnLgBUaGUgdXNlIG9mIElubm9EQiBpcyBtYW5kYXRvcnkgc2luY2UgTXlTUUwgNS43LiBUaGUgZm9ybWVyIG9wdGlvbnMgbGlrZSAnLS1pbm5vZGI9MC8xL09GRi9PTicgb3IgJy0tc2tpcC1pbm5vZGInIGFyZSBpZ25vcmVkLgBpZ25vcmUtYnVpbHRpbi1pbm5vZGIgaXMgaWdub3JlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSByZWxlYXNlcy4ASW52YWxpZCBvbGRfcGFzc3dvcmRzIG1vZGU6IDEuIFZhbGlkIHZhbHVlcyBhcmUgMiBhbmQgMAAtLXZlcmJvc2UgaXMgZm9yIHVzZSB3aXRoIC0taGVscDsgZGlkIHlvdSBtZWFuIC0tbG9nLWVycm9yLXZlcmJvc2l0eT8Ab3B0aW9ucyAtLWxvZy1zbG93LWFkbWluLXN0YXRlbWVudHMsIC0tbG9nLXF1ZXJpZXMtbm90LXVzaW5nLWluZGV4ZXMsIC0tbG9nLXNsb3ctcmVwbGljYS1zdGF0ZW1lbnRzIGFuZCAtLWxvZy1xdWVyeS1lcnJvcnMgaGF2ZSBubyBlZmZlY3QgaWYgLS1zbG93LXF1ZXJ5LWxvZyBpcyBub3Qgc2V0AG5ldF9idWZmZXJfbGVuZ3RoICglbHUpIGlzIHNldCB0byBiZSBsYXJnZXIgdGhhbiBtYXhfYWxsb3dlZF9wYWNrZXQgKCVsdSkuIFBsZWFzZSByZWN0aWZ5LgBUSU1FU1RBTVAgd2l0aCBpbXBsaWNpdCBERUZBVUxUIHZhbHVlIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgLS1leHBsaWNpdF9kZWZhdWx0c19mb3JfdGltZXN0YW1wIHNlcnZlciBvcHRpb24gKHNlZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMpLgBJbnZhbGlkIGZ0LWJvb2xlYW4tc3ludGF4IHN0cmluZzogJXMAJ05PX0FVVE9fQ1JFQVRFX1VTRVInIHNxbCBtb2RlIHdhcyBub3Qgc2V0LgBDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBjb25uZWN0aW9uIGhhbmRsaW5nAENvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRocmVhZCBoYW5kbGluZwBDYW4ndCBjcmVhdGUgdGVzdCBmaWxlICVzAENhbid0IHN0YXJ0IHNlcnZlcjogY2FuJ3QgY3JlYXRlIFBJRCBmaWxlOiAlcwBVbmFibGUgdG8gZGVsZXRlIHBpZCBmaWxlOiAlcwBDYW4ndCBjcmVhdGUgdGhyZWFkIHRvIGhhbmRsZSBzaHV0ZG93biByZXF1ZXN0cyAoZXJybm89ICVkKQBGYWlsZWQgdG8gYWNjZXNzIGRpcmVjdG9yeSBmb3IgLS0lcy4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IGRpcmVjdG9yeSBleGlzdHMgYW5kIGlzIGFjY2Vzc2libGUgYnkgTXlTUUwgU2VydmVyLiBTdXBwbGllZCB2YWx1ZSA6ICVzAElnbm9yaW5nIC0tJXMgdmFsdWUgYXMgc2VydmVyIGlzIHJ1bm5pbmcgd2l0aCAtLWluaXRpYWxpemUoLWluc2VjdXJlKS4ASW5zZWN1cmUgY29uZmlndXJhdGlvbiBmb3IgLS0lczogQ3VycmVudCB2YWx1ZSBkb2VzIG5vdCByZXN0cmljdCBsb2NhdGlvbiBvZiBnZW5lcmF0ZWQgZmlsZXMuIENvbnNpZGVyIHNldHRpbmcgaXQgdG8gYSB2YWxpZCwgbm9uLWVtcHR5IHBhdGguAC0tJXMgaXMgc2V0IHRvIE5VTEwuIE9wZXJhdGlvbnMgcmVsYXRlZCB0byBpbXBvcnRpbmcgYW5kIGV4cG9ydGluZyBkYXRhIGFyZSBkaXNhYmxlZABJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLSVzOiAlcyBpcyBhY2Nlc3NpYmxlIHRocm91Z2ggLS0lcy4gQ29uc2lkZXIgY2hvb3NpbmcgYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgBGYWlsZWQgdG8gZ2V0IHN0YXQgZm9yIGRpcmVjdG9yeSBwb2ludGVkIG91dCBieSAtLSVzAEluc2VjdXJlIGNvbmZpZ3VyYXRpb24gZm9yIC0tJXM6IExvY2F0aW9uIGlzIGFjY2Vzc2libGUgdG8gYWxsIE9TIHVzZXJzLiBDb25zaWRlciBjaG9vc2luZyBhIGRpZmZlcmVudCBkaXJlY3RvcnkuAFZhbHVlIGZvciAtLSVzIGlzIGxvbmdlciB0aGFuIG1heGltdW0gbGltaXQgb2YgJWQAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgbmFtZWQgcGlwZXMgKGVycm5vPSAlZCkAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgVENQL0lQIChlcnJubz0gJWQpAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIHNoYXJlZCBtZW1vcnkgKGVycm5vPSAlZCkAQ2FuJ3QgY3JlYXRlIGludGVycnVwdC10aHJlYWQgKGVycm9yICVkLCBlcnJubzogJWQpAFdvcmxkLXdyaXRhYmxlIGNvbmZpZyBmaWxlICclcycgaGFzIGJlZW4gcmVtb3ZlZC4Ac2V0cmxpbWl0IGNvdWxkIG5vdCBjaGFuZ2UgdGhlIHNpemUgb2YgY29yZSBmaWxlcyB0byAnaW5maW5pdHknOyAgV2UgbWF5IG5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIGEgY29yZSBmaWxlIG9uIHNpZ25hbHMAV3JvbmcgZGF0ZS90aW1lIGZvcm1hdCBzcGVjaWZpZXI6ICVzAENvdWxkIG5vdCBhbGxvY2F0ZSByZXBsaWNhdGlvbiBhbmQgYmlubG9nIGZpbHRlcnM6ICVzAENhbm5vdCBhbGxvY2F0ZSB0aGUga2V5Y2FjaGUAQ3VycmVudCB0aW1lIGhhcyBnb3QgcGFzdCB5ZWFyIDIwMzguIFZhbGlkYXRpbmcgY3VycmVudCB0aW1lIHdpdGggJWQgaXRlcmF0aW9ucyBiZWZvcmUgaW5pdGlhdGluZyB0aGUgbm9ybWFsIHNlcnZlciBzaHV0ZG93biBwcm9jZXNzLgBJdGVyYXRpb24gJWQ6IE9idGFpbmVkIHZhbGlkIGN1cnJlbnQgdGltZSBmcm9tIHN5c3RlbQBJdGVyYXRpb24gJWQ6IEN1cnJlbnQgdGltZSBvYnRhaW5lZCBmcm9tIHN5c3RlbSBpcyBncmVhdGVyIHRoYW4gMjAzOABUaGlzIE15U1FMIHNlcnZlciBkb2Vzbid0IHN1cHBvcnQgZGF0ZXMgbGF0ZXIgdGhlbiAyMDM4ACVzIChteXNxbGQgJXMpIHN0YXJ0aW5nIGFzIHByb2Nlc3MgJWx1AFNodXR0aW5nIGRvd24gcmVwbGljYSB0aHJlYWRzAEZvcmNlZnVsbHkgZGlzY29ubmVjdGluZyAlZCByZW1haW5pbmcgY2xpZW50cwBBYm9ydGluZwBCaW5sb2cgZW5kAGdldGhvc3RuYW1lIGZhaWxlZCwgdXNpbmcgJyVzJyBhcyBob3N0bmFtZQBPbmUgY2FuIG9ubHkgdXNlIHRoZSAtLXVzZXIgc3dpdGNoIGlmIHJ1bm5pbmcgYXMgcm9vdABGYXRhbCBlcnJvcjogUGxlYXNlIHJlYWQgIlNlY3VyaXR5IiBzZWN0aW9uIG9mIHRoZSBtYW51YWwgdG8gZmluZCBvdXQgaG93IHRvIHJ1biBteXNxbGQgYXMgcm9vdCEARmF0YWwgZXJyb3I6IENhbid0IGNoYW5nZSB0byBydW4gYXMgdXNlciAnJXMnIDsgIFBsZWFzZSBjaGVjayB0aGF0IHRoZSB1c2VyIGV4aXN0cyEAU2VydmVyIGlzIHN0YXJ0ZWQgd2l0aCAtLXJlcXVpcmUtc2VjdXJlLXRyYW5zcG9ydD1PTiBidXQgbm8gc2VjdXJlIHRyYW5zcG9ydHMgKFNTTCBvciBTaGFyZWQgTWVtb3J5KSBhcmUgY29uZmlndXJlZC4Ac2V0Z2lkOiAlcwBzZXR1aWQ6ICVzAHNldHJlZ2lkOiAlcwBzZXRyZXVpZDogJXMAY2hyb290OiAlcwBUQ1AvSVAsIC0tc2hhcmVkLW1lbW9yeSwgb3IgLS1uYW1lZC1waXBlIHNob3VsZCBiZSBjb25maWd1cmVkIG9uIE5UIE9TAENUUkwtQyBpZ25vcmVkIGR1cmluZyBzdGFydHVwACclcycgY2FuIG5vdCBiZSB1c2VkIGFzIGNsaWVudCBjaGFyYWN0ZXIgc2V0LiAnJXMnIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0IGNsaWVudCBjaGFyYWN0ZXIgc2V0LgBPdXQgb2YgbWVtb3J5AEZhaWxlZCB0byBsb2NrIG1lbW9yeS4gRXJybm86ICVkAG15X2luaXQoKSBmYWlsZWQuAEV4ZWN1dGlvbiBvZiBpbml0X2ZpbGUgJyVzJyBzdGFydGVkLgBFeGVjdXRpb24gb2YgaW5pdF9maWxlICclcycgZW5kZWQuAENoYW5nZWQgbGltaXRzOiBtYXhfb3Blbl9maWxlczogJWx1IChyZXF1ZXN0ZWQgJWx1KQBDb3VsZCBub3QgaW5jcmVhc2UgbnVtYmVyIG9mIG1heF9vcGVuX2ZpbGVzIHRvIG1vcmUgdGhhbiAlbHUgKHJlcXVlc3Q6ICVsdSkAQ2hhbmdlZCBsaW1pdHM6IG1heF9jb25uZWN0aW9uczogJWx1IChyZXF1ZXN0ZWQgJWx1KQBDaGFuZ2VkIGxpbWl0czogdGFibGVfb3Blbl9jYWNoZTogJWx1IChyZXF1ZXN0ZWQgJWx1KQBJZ25vcmluZyB1c2VyIGNoYW5nZSB0byAnJXMnIGJlY2F1c2UgdGhlIHVzZXIgd2FzIHNldCB0byAnJXMnIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZQBDb3VsZCBub3QgYWRkIGRvIHRhYmxlIHJ1bGUgJyVzJyEAQ291bGQgbm90IGFkZCBpZ25vcmUgdGFibGUgcnVsZSAnJXMnIQBUaGUgdmFyaWFibGUgc2Vzc2lvbl90cmFja19zeXN0ZW1fdmFyaWFibGVzIGVpdGhlciBoYXMgZHVwbGljYXRlIHZhbHVlcyBvciBpbnZhbGlkIHZhbHVlcy4AVG9vIG1hbnkgYXJndW1lbnRzIChmaXJzdCBleHRyYSBpcyAnJXMnKS4AVXNlIC0tdmVyYm9zZSAtLWhlbHAgdG8gZ2V0IGEgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucyEAVW5hYmxlIHRvIHJlYWQgZXJybXNnLnN5cyBmaWxlAENhbid0IGluaXQgZGF0YWJhc2VzAFRoZXJlIHdlcmUgb3RoZXIgdmFsdWVzIHNwZWNpZmllZCB0byBsb2ctb3V0cHV0IGJlc2lkZXMgTk9ORS4gRGlzYWJsaW5nIHNsb3cgYW5kIGdlbmVyYWwgbG9ncyBhbnl3YXkuAENTViBlbmdpbmUgaXMgbm90IHByZXNlbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgbG9nIGZpbGVzAEJhZCBzeW50YXggaW4gcmVwbGljYXRlLXJld3JpdGUtZGIgLSBtaXNzaW5nICctPichAEJhZCBzeW50YXggaW4gcmVwbGljYXRlLXJld3JpdGUtZGIgLSBlbXB0eSBGUk9NIGRiIQBCYWQgc3ludGF4IGluIHJlcGxpY2F0ZS1yZXdyaXRlLWRiIC0gZW1wdHkgVE8gZGIhAEFsdGhvdWdoIGEgcGF0aCB3YXMgc3BlY2lmaWVkIGZvciB0aGUgJXMsIGxvZyB0YWJsZXMgYXJlIHVzZWQuIFRvIGVuYWJsZSBsb2dnaW5nIHRvIGZpbGVzIHVzZSB0aGUgLS1sb2ctb3V0cHV0PWZpbGUgb3B0aW9uLgBJbnZhbGlkIHZhbHVlIGZvciAlczogJXMAVGhlIHNlcnZlciBvcHRpb24gJ2xvd2VyX2Nhc2VfdGFibGVfbmFtZXMnIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIGNhc2Ugc2Vuc2l0aXZlIHRhYmxlIG5hbWVzIGJ1dCB0aGUgZGF0YSBkaXJlY3RvcnkgaXMgb24gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtIHdoaWNoIGlzIGFuIHVuc3VwcG9ydGVkIGNvbWJpbmF0aW9uLiBQbGVhc2UgY29uc2lkZXIgZWl0aGVyIHVzaW5nIGEgY2FzZSBzZW5zaXRpdmUgZmlsZSBzeXN0ZW0gZm9yIHlvdXIgZGF0YSBkaXJlY3Rvcnkgb3Igc3dpdGNoaW5nIHRvIGEgY2FzZS1pbnNlbnNpdGl2ZSB0YWJsZSBuYW1lIG1vZGUuAFNldHRpbmcgbG93ZXJfY2FzZV90YWJsZV9uYW1lcz0yIGJlY2F1c2UgZmlsZSBzeXN0ZW0gZm9yICVzIGlzIGNhc2UgaW5zZW5zaXRpdmUAbG93ZXJfY2FzZV90YWJsZV9uYW1lcyB3YXMgc2V0IHRvIDIsIGV2ZW4gdGhvdWdoIHlvdXIgdGhlIGZpbGUgc3lzdGVtICclcycgaXMgY2FzZSBzZW5zaXRpdmUuICBOb3cgc2V0dGluZyBsb3dlcl9jYXNlX3RhYmxlX25hbWVzIHRvIDAgdG8gYXZvaWQgZnV0dXJlIHByb2JsZW1zLgBZb3UgbmVlZCB0byB1c2UgLS1sb2ctYmluIHRvIG1ha2UgJXMgd29yay4AUGF0aCAnJXMnIGlzIGEgZGlyZWN0b3J5IG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGZvciAlcyBvcHRpb24ATm8gYXJndW1lbnQgd2FzIHByb3ZpZGVkIHRvIC0tbG9nLWJpbiwgYW5kIC0tbG9nLWJpbi1pbmRleCB3YXMgbm90IHVzZWQ7IHNvIHJlcGxpY2F0aW9uIG1heSBicmVhayB3aGVuIHRoaXMgTXlTUUwgc2VydmVyIGFjdHMgYXMgYSBzb3VyY2UgYW5kIGhhcyBoaXMgaG9zdG5hbWUgY2hhbmdlZCEhIFBsZWFzZSB1c2UgJy0tbG9nLWJpbj0lcycgdG8gYXZvaWQgdGhpcyBwcm9ibGVtLgBZb3UgaGF2ZSBlbmFibGVkIHRoZSBiaW5hcnkgbG9nLCBidXQgeW91IGhhdmVuJ3QgcHJvdmlkZWQgdGhlIG1hbmRhdG9yeSBzZXJ2ZXItaWQuIFBsZWFzZSByZWZlciB0byB0aGUgcHJvcGVyIHNlcnZlciBzdGFydC11cCBwYXJhbWV0ZXJzIGRvY3VtZW50YXRpb24AVW5hYmxlIHRvIGNyZWF0ZSByZXBsaWNhdGlvbiBwYXRoIG5hbWVzOiBvdXQgb2YgbWVtb3J5IG9yIHBhdGggbmFtZXMgdG9vIGxvbmcgKHBhdGggbmFtZSBleGNlZWRzICVkIG9yIGZpbGUgbmFtZSBleGNlZWRzICVkKS4ARmFpbGVkIHRvIGluaXRpYWxpemUgR1RJRCBzdHJ1Y3R1cmVzLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBlYXJseSBwbHVnaW5zLgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBidWlsdGluIHBsdWdpbnMuAEZhaWxlZCB0byBpbml0aWFsaXplIGR5bmFtaWMgcGx1Z2lucy4AUGVyZm9ybWFuY2Ugc2NoZW1hIGRpc2FibGVkIChyZWFzb246IGluaXQgZmFpbGVkKS4AQXNrZWQgZm9yICVsdSB0aHJlYWQgc3RhY2ssIGJ1dCBnb3QgJWxkAGZhaWxlZCB0byBzZXQgZGF0YWRpciB0byAlcwBDYW4ndCByZWFkIGRhdGEgZGlyZWN0b3J5J3Mgc3RhdHMgKCVkKTogJXMuIEFzc3VtaW5nIHRoYXQgaXQncyBub3Qgb3duZWQgYnkgdGhlIHNhbWUgdXNlci9ncm91cABDYW4ndCBjaGFuZ2UgZGF0YSBkaXJlY3Rvcnkgb3duZXIgdG8gJXMAU2V0dGluZyBwZXJzaXN0ZW50IG9wdGlvbnMgZmFpbGVkLgBGYWlsZWQgdG8gc2F2ZSB0aGUgc2V0IG9mIEdsb2JhbCBUcmFuc2FjdGlvbiBJZGVudGlmaWVycyBvZiB0aGUgbGFzdCBiaW5hcnkgbG9nIGludG8gdGhlIG15c3FsLmd0aWRfZXhlY3V0ZWQgdGFibGUgd2hpbGUgdGhlIHNlcnZlciB3YXMgc2h1dHRpbmcgZG93bi4gVGhlIG5leHQgc2VydmVyIHJlc3RhcnQgd2lsbCBtYWtlIGFub3RoZXIgYXR0ZW1wdCB0byBzYXZlIEdsb2JhbCBUcmFuc2FjdGlvbiBJZGVudGlmaWVycyBpbnRvIHRoZSB0YWJsZS4AQ2FuJ3Qgc3RhcnQgc2VydmVyOiBJbnZhbGlkIHZhbHVlIGZvciAtLWRlZmF1bHQtYXV0aGVudGljYXRpb24tcGx1Z2luAENvdWxkIG5vdCBqb2luICVzdGhyZWFkLiBlcnJvcjolZABBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBidWlsZGluZyBkb190YWJsZSBhbmQgaWdub3JlX3RhYmxlIHJ1bGVzIHRvIGhhc2hlcyBmb3IgZ2xvYmFsIHJlcGxpY2F0aW9uIGZpbHRlci4ARXJyb3Igb3BlbmluZyBDQSBjZXJ0aWZpY2F0ZSBmaWxlAEVycm9yIGFjY2Vzc2luZyBkaXJlY3RvcnkgcG9pbnRlZCBieSAtLXNzbC1jYXBhdGgARm91bmQgJXMsICVzIGFuZCAlcyBpbiBkYXRhIGRpcmVjdG9yeS4gVHJ5aW5nIHRvIGVuYWJsZSBTU0wgc3VwcG9ydCB1c2luZyB0aGVtLgBGYWlsZWQgdG8gY3JlYXRlICVzKGZpbGU6ICclcycsIGVycm5vICVkKQBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aW1lciBjb21wb25lbnQgKGVycm5vICVkKS4Ac2VydmVyLWlkIGNvbmZpZ3VyZWQgaXMgdG9vIGxhcmdlIHRvIHJlcHJlc2VudCB3aXRoIHNlcnZlci1pZC1iaXRzIGNvbmZpZ3VyZWQuAERlZmF1bHQlcyBzdG9yYWdlIGVuZ2luZSAoJXMpIGlzIG5vdCBhdmFpbGFibGUAQ291bGQgbm90IG9wZW4gZmlsZSAnJXMnIGZvciBlcnJvciBsb2dnaW5nJXMlcwBJbnZhbGlkIGxvZyBmaWxlIG5hbWUgYWZ0ZXIgZXhwYW5kaW5nIHN5bWxpbmtzOiAnJXMnAHVzaW5nIC0tcmVwbGljYXRlLXNhbWUtc2VydmVyLWlkIGluIGNvbmp1bmN0aW9uIHdpdGggLS1sb2ctcmVwbGljYS11cGRhdGVzIGlzIGltcG9zc2libGUsIGl0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgbG9vcHMgaW4gdGhpcyBzZXJ2ZXIuAHVzaW5nIC0tcmVwbGljYXRlLXNhbWUtc2VydmVyLWlkIGluIGNvbmp1bmN0aW9uIHdpdGggLS1sb2ctcmVwbGljYS11cGRhdGVzIHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgbG9vcHMgaW4gdGhpcyBzZXJ2ZXIuIEhvd2V2ZXIgdGhpcyB3aWxsIGJlIGlnbm9yZWQgYXMgdGhlIC0tbG9nLWJpbiBvcHRpb24gaXMgbm90IGRlZmluZWQgb3IgeW91ciBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIGdsb2JhbCB0cmFuc2FjdGlvbiBpZGVudGllcnMgZW5hYmxlZC4ATkRCIDogVGFibGVzIG5vdCBhdmFpbGFibGUgYWZ0ZXIgJWx1IHNlY29uZHMuIENvbnNpZGVyIGluY3JlYXNpbmcgLS1uZGItd2FpdC1zZXR1cCB2YWx1ZQAlcwBVbmFibGUgdG8gc3RhcnQgc2VydmVyLiBUaGUgZGF0YSBkaWN0aW9uYXJ5IHRhYmxlc3BhY2UgJyVzJyBkb2VzIG5vdCBleGlzdC4AQ29ubmVjdGlvbiBjb2xsYXRpb24gaXMgbWlzc2luZyBmb3IgdHJpZ2dlciBvZiB0YWJsZSAlcy4gVXNpbmcgZGVmYXVsdCBjb25uZWN0aW9uIGNvbGxhdGlvbi4ARGF0YWJhc2UgY29sbGF0aW9uIGlzIG1pc3NpbmcgZm9yIHRyaWdnZXIgb2YgdGFibGUgJXMuIFVzaW5nIERlZmF1bHQgY2hhcmFjdGVyIHNldC4ARXJyb3IgaW4gTWVtb3J5IGFsbG9jYXRpb24gZm9yIERlZmluZXIgJXMgZm9yIFRyaWdnZXIuAEVycm9yIGluIHJlYWRpbmcgJXMuVFJHIGZpbGUuAEVycm9yIGluIHBhcnNpbmcgVHJpZ2dlcnMgZnJvbSAlcy5UUkcgZmlsZS4ARXJyb3IgaW4gY3JlYXRpbmcgREQgZW50cnkgZm9yIFRyaWdnZXIgJXMuJXMAUmVzb2x2aW5nIGRlcGVuZGVuY3kgZm9yIHRoZSB2aWV3ICclcy4lcycgZmFpbGVkLiBWaWV3IGlzIG5vIG1vcmUgdmFsaWQgdG8gdXNlACVzLiVzIGhhcyBubyBkZWZpbmVyIChhcyBwZXIgYW4gb2xkIHZpZXcgZm9ybWF0KS4gQ3VycmVudCB1c2VyIGlzIHVzZWQgYXMgZGVmaW5lci4gUGxlYXNlIHJlY3JlYXRlIHRoZSB2aWV3LgBQbHVnaW4gJyVzJyBpbml0IGZ1bmN0aW9uIHJldHVybmVkIGVycm9yLgBJbml0aWFsaXphdGlvbiBvZiB0cmFuc2FjdGlvbiBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBJbml0aWFsaXphdGlvbiBiaW5sb2cgc3RvcmFnZSBkZWxlZ2F0ZXMgZmFpbGVkLiBQbGVhc2UgcmVwb3J0IGEgYnVnLgBJbml0aWFsaXphdGlvbiBvZiBiaW5sb2cgdHJhbnNtaXQgZGVsZWdhdGVzIGZhaWxlZC4gUGxlYXNlIHJlcG9ydCBhIGJ1Zy4ASW5pdGlhbGl6YXRpb24gYmlubG9nIHJlbGF5IElPIGRlbGVnYXRlcyBmYWlsZWQuIFBsZWFzZSByZXBvcnQgYSBidWcuAFJ1biBmdW5jdGlvbiAnLi4uJyBpbiBwbHVnaW4gJyVzJyBmYWlsZWQAbXlzcWxfaGFfcmVhZDogR290IGVycm9yICVkIHdoZW4gcmVhZGluZyB0YWJsZSAnJXMnAFN0b3JlZCByb3V0aW5lICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gJXMuAEludmFsaWQgY3JlYXRpb24gY29udGV4dCAnJXMuJXMnLgBHb3QgZXJyb3IgJWQgd2hlbiByZWFkaW5nIHRhYmxlICclcycAbG9hZF9kZXNfZmlsZTogIEZvdW5kIHdyb25nIGtleV9udW1iZXI6ICVjAEZhaWxlZCB0byBzZXQgcGVyc2lzdGVkIG9wdGlvbnMuAFBlcnNpc3RlZCBjb25maWcgZmlsZSBpcyBjb3JydXB0LiBQbGVhc2UgZW5zdXJlIG15c3FsZC1hdXRvLmNuZiBmaWxlIGlzIHZhbGlkIEpTT04uAEZvdW5kIG9wdGlvbiB3aXRob3V0IHByZWNlZGluZyBncm91cCBpbiBjb25maWcgZmlsZQBWQUxHUklORF9ET19RVUlDS19MRUFLX0NIRUNLAFZBTEdSSU5EX0NPVU5UX0xFQUtTIHJlcG9ydHMgJWx1IGxlYWtlZCBieXRlcyBmb3IgcXVlcnkgJyUuKnMnAExPQUQgREFUQSBJTkZJTEUgaW4gdGhlIHJlcGxpY2EgU1FMIFRocmVhZCBjYW4gb25seSByZWFkIGZyb20gLS1yZXBsaWNhLWxvYWQtdG1wZGlyLiBQbGVhc2UsIHJlcG9ydCBhIGJ1Zy4AR290IHVua25vd24gZXJyb3I6ICVkAENhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgdWRmIHN0cnVjdHVyZXMAQ2FuJ3QgYWxsb2MgbWVtb3J5IGZvciB1ZGYgZnVuY3Rpb246ICclLjY0cycASW52YWxpZCByb3cgaW4gbXlzcWwuZnVuYyB0YWJsZSBmb3IgZnVuY3Rpb24gJyUuNjRzJwBDb3VsZCBub3Qgb3BlbiB0aGUgbXlzcWwuZnVuYyB0YWJsZS4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBGb3VuZCAlZCBwcmVwYXJlZCB0cmFuc2FjdGlvbihzKSBpbiAlcwBGb3VuZCAlZCBwcmVwYXJlZCBYQSB0cmFuc2FjdGlvbnMAaWdub3JlIHhpZCAlcwBjb21taXQgeGlkICVzAHJvbGxiYWNrIHhpZCAlcwBTdGFydGluZyBYQSBjcmFzaCByZWNvdmVyeS4uLgAtLXRjLWhldXJpc3RpYy1yZWNvdmVyIHJvbGxiYWNrIHN0cmF0ZWd5IGlzIG5vdCBzYWZlIG9uIHN5c3RlbXMgd2l0aCBtb3JlIHRoYW4gb25lIDItcGhhc2UtY29tbWl0LWNhcGFibGUgc3RvcmFnZSBlbmdpbmUuIEFib3J0aW5nIGNyYXNoIHJlY292ZXJ5LgBGb3VuZCAlZCBwcmVwYXJlZCB0cmFuc2FjdGlvbnMhIEl0IG1lYW5zIHRoYXQgbXlzcWxkIHdhcyBub3Qgc2h1dCBkb3duIHByb3Blcmx5IGxhc3QgdGltZSBhbmQgY3JpdGljYWwgcmVjb3ZlcnkgaW5mb3JtYXRpb24gKGxhc3QgYmlubG9nIG9yICVzIGZpbGUpIHdhcyBtYW51YWxseSBkZWxldGVkIGFmdGVyIGEgY3Jhc2guIFlvdSBoYXZlIHRvIHN0YXJ0IG15c3FsZCB3aXRoIC0tdGMtaGV1cmlzdGljLXJlY292ZXIgc3dpdGNoIHRvIGNvbW1pdCBvciByb2xsYmFjayBwZW5kaW5nIHRyYW5zYWN0aW9ucy4AWEEgY3Jhc2ggcmVjb3ZlcnkgZmluaXNoZWQuAEZhaWxlZCB0byBjb2xsZWN0IEdUSUQgdG8gc2VuZCBpbiB0aGUgcmVzcG9uc2UgcGFja2V0IQBNWVNRTC5ERUZBVUxUX1JPTEVTIGNvdWxkbid0IGJlIHVwZGF0ZWQgZm9yIGF1dGhvcml6YXRpb24gaWRlbnRpZmllciAlcwBGb2xsb3dpbmcgdXNlcnMgd2VyZSBzcGVjaWZpZWQgaW4gQ1JFQVRFIFVTRVIgSUYgTk9UIEVYSVNUUyBidXQgdGhleSBhbHJlYWR5IGV4aXN0LiBDb3JyZXNwb25kaW5nIGVudHJ5IGluIGJpbmFyeSBsb2cgdXNlZCBkZWZhdWx0IGF1dGhlbnRpY2F0aW9uIHBsdWdpbiAnJXMnIHRvIHJld3JpdGUgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24gKGlmIGFueSkgZm9yIHRoZW06ICVzAEZvbGxvd2luZyB1c2VycyB3ZXJlIHNwZWNpZmllZCBpbiBBTFRFUiBVU0VSIElGIEVYSVNUUyBidXQgdGhleSBkbyBub3QgZXhpc3QuIENvcnJlc3BvbmRpbmcgZW50cnkgaW4gYmluYXJ5IGxvZyB1c2VkIGRlZmF1bHQgYXV0aGVudGljYXRpb24gcGx1Z2luICclcycgdG8gcmV3cml0ZSBhdXRoZW50aWNhdGlvbiBpbmZvcm1hdGlvbiAoaWYgYW55KSBmb3IgdGhlbTogJXMAVGFibGUgJyUtMTkycycgY29ycnVwdGVkOiByb3cgaW4gd3JvbmcgcGFydGl0aW9uOiAlcyAtLSBQbGVhc2UgUkVQQUlSIHRoZSB0YWJsZSEAR290IGFuIGVycm9yIGZyb20gdGhyZWFkX2lkPSV1LCAlczolZABHb3QgYW4gZXJyb3IgZnJvbSB1bmtub3duIHRocmVhZCwgJXM6JWQAVG9vIG1hbnkgc3RvcmFnZSBlbmdpbmVzIQBTdG9yYWdlIGVuZ2luZSAnJXMnIGhhcyBjb25mbGljdGluZyB0eXBlY29kZS4gQXNzaWduaW5nIHZhbHVlICVkLgBPdXQgb2YgbWVtb3J5IG9uIHRyYW5zYWN0aW9uIHdyaXRlIHNldCBleHRyYWN0aW9uAFVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHBsdWdpbiAnJXMnIGhhbmRsZXJ0b24uAFNoYXJlZCBtZW1vcnkgc2V0dGluZyB1cCBsaXN0ZW5lcgBDYW4ndCBjcmVhdGUgc2hhcmVkIG1lbW9yeSBzZXJ2aWNlOiAlcy4gOiAlcwBDYW4ndCBjcmVhdGUgc2hhcmVkIG1lbW9yeSBjb25uZWN0aW9uOiAlcy4gOiAlcwBDYW4ndCBjcmVhdGUgZXZlbnQsIGxhc3QgZXJyb3I9JXUAQ2FuJ3QgY3JlYXRlIG5ldyBuYW1lZCBwaXBlITogJXMAQ2FuJ3QgY3JlYXRlIHRocmVhZCB0byBoYW5kbGUgbmV3IGNvbm5lY3Rpb24oZXJybm89ICVkKQBGYWlsZWQgdG8gY3JlYXRlIGEgc29ja2V0IGZvciAlcyAnJXMnOiBlcnJubzogJWQuAFNlcnZlciBzb2NrZXQgY3JlYXRlZCBvbiBJUDogJyVzJy4AU2VydmVyIGhvc3RuYW1lIChiaW5kLWFkZHJlc3MpOiAnJXMnOyBwb3J0OiAlZABJUHY2IGlzIGF2YWlsYWJsZS4ASVB2NiBpcyBub3QgYXZhaWxhYmxlLgBDYW4ndCBjcmVhdGUgSVAgc29ja2V0OiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXI6IGNhbm5vdCByZXNvbHZlIGhvc3RuYW1lIQBEbyB5b3UgYWxyZWFkeSBoYXZlIGFub3RoZXIgbXlzcWxkIHNlcnZlciBydW5uaW5nIG9uIHBvcnQ6ICVkID8ARG8geW91IGFscmVhZHkgaGF2ZSBhbm90aGVyIG15c3FsZCBzZXJ2ZXIgcnVubmluZyBvbiBzb2NrZXQ6ICVzID8AQW5vdGhlciBwcm9jZXNzIHdpdGggcGlkICVkIGlzIHVzaW5nIHVuaXggc29ja2V0IGZpbGUuAEZhaWxlZCB0byByZXNldCBJUFY2X1Y2T05MWSBmbGFnIChlcnJvcjogJWQpLiBUaGUgc2VydmVyIHdpbGwgbGlzdGVuIHRvIElQdjYgYWRkcmVzc2VzIG9ubHkuAFJldHJ5aW5nIGJpbmQgb24gVENQL0lQIHBvcnQgJXUAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBCaW5kIG9uIFRDUC9JUCBwb3J0OiAlcwBGYWlscyB0byBwcmludCBvdXQgSVAtYWRkcmVzcy4AICAtICclcycgcmVzb2x2ZXMgdG8gJyVzJzsAQ2FuJ3Qgc3RhcnQgc2VydmVyOiBsaXN0ZW4oKSBvbiBUQ1AvSVAgcG9ydDogJXMAbGlzdGVuKCkgb24gVENQL0lQIGZhaWxlZCB3aXRoIGVycm9yICVkAFRoZSBzb2NrZXQgZmlsZSBwYXRoIGlzIHRvbyBsb25nICg+ICV1KTogJXMAVW5hYmxlIHRvIHNldHVwIHVuaXggc29ja2V0IGxvY2sgZmlsZS4AQ2FuJ3Qgc3RhcnQgc2VydmVyOiBVTklYIFNvY2tldCA6ICVzAENhbid0IHN0YXJ0IHNlcnZlciA6IEJpbmQgb24gdW5peCBzb2NrZXQ6ICVzAGxpc3RlbigpIG9uIFVuaXggc29ja2V0IGZhaWxlZCB3aXRoIGVycm9yICVkAFVuYWJsZSB0byBjcmVhdGUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGFmdGVyIHJldHJpZXMuAENvdWxkIG5vdCBjcmVhdGUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzLgBDb3VsZCBub3Qgb3BlbiB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAENvdWxkIG5vdCByZWFkIHVuaXggc29ja2V0IGxvY2sgZmlsZSAlcy4AVW5peCBzb2NrZXQgbG9jayBmaWxlIGlzIGVtcHR5ICVzLgBJbnZhbGlkIHBpZCBpbiB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMuAENvdWxkIG5vdCB3cml0ZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgZXJybm8gJWQuAENvdWxkIG5vdCByZW1vdmUgdW5peCBzb2NrZXQgbG9jayBmaWxlICVzIGVycm5vICVkLgBDb3VsZCBub3Qgc3luYyB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgZXJybm8gJWQuAENvdWxkIG5vdCBjbG9zZSB1bml4IHNvY2tldCBsb2NrIGZpbGUgJXMgZXJybm8gJWQuAG15c3FsZDogR290IGVycm9yICVkIGZyb20gc2VsZWN0AEVycm9yIGluIGFjY2VwdDogJXMAUlNBICVzIGtleSBmaWxlIG5vdCBmb3VuZDogJXMuIFNvbWUgYXV0aGVudGljYXRpb24gcGx1Z2lucyB3aWxsIG5vdCB3b3JrLgBGYWlsdXJlIHRvIHBhcnNlIFJTQSAlcyBrZXkgKGZpbGUgZXhpc3RzKTogJXM6ICVzAEZhaWx1cmUgdG8gcmVhZCBrZXkgZmlsZTogJXMAUlNBIGtleSBmaWxlcyBub3QgZm91bmQuIFNvbWUgYXV0aGVudGljYXRpb24gcGx1Z2lucyB3aWxsIG5vdCB3b3JrLgBDb25uZWN0aW9uIGF0dHJpYnV0ZXMgb2YgbGVuZ3RoICVsdSB3ZXJlIHRydW5jYXRlZCAoJWQgYnl0ZXMgbG9zdCkgZm9yIGNvbm5lY3Rpb24gJWxsdSwgdXNlciAlc0AlcyAoYXMgJXMpLCBhdXRoOiAlcwBYLjUwOSBjaXBoZXJzIG1pc21hdGNoOiBzaG91bGQgYmUgJyVzJyBidXQgaXMgJyVzJwBYLjUwOSBpc3N1ZXIgbWlzbWF0Y2g6IHNob3VsZCBiZSAnJXMnIGJ1dCBpcyAnJXMnAFguNTA5IHN1YmplY3QgbWlzbWF0Y2g6IHNob3VsZCBiZSAnJXMnIGJ1dCBpcyAnJXMnAEZhaWxlZCB0byBhY3RpdmF0ZSBkZWZhdWx0IHJvbGUgJXMgZm9yICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBSU0EgcHJpdmF0ZSBrZXkgcmVxdWlyZWQgZm9yIFguNTA5IGNlcnRpZmljYXRlLgBDb3VsZCBub3Qgd3JpdGUga2V5IGZpbGU6ICVzAENvdWxkIG5vdCBzZXQgZmlsZSBwZXJtaXNzaW9uIGZvciAlcwBDb3VsZCBub3QgcmVhZCBDQSBrZXkgZmlsZTogJXMAQ291bGQgbm90IHJlYWQgQ0EgY2VydGlmaWNhdGUgZmlsZTogJXMAQ291bGQgbm90IGdlbmVyYXRlIFguNTA5IGNlcnRpZmljYXRlLgBDb3VsZCBub3Qgd3JpdGUgY2VydGlmaWNhdGUgZmlsZTogJXMAQ291bGQgbm90IGdlbmVyYXRlIFJTQSBQcml2YXRlL1B1YmxpYyBrZXkgcGFpcgBDb3VsZCBub3Qgd3JpdGUgcHJpdmF0ZSBrZXkgZmlsZTogJXMAQ291bGQgbm90IHdyaXRlIHB1YmxpYyBrZXkgZmlsZTogJXMAU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBTU0wgY2VydGlmaWNhdGVzIGFzIG9wdGlvbnMgcmVsYXRlZCB0byBTU0wgYXJlIHNwZWNpZmllZC4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBTU0wgY2VydGlmaWNhdGVzIGFzIGNlcnRpZmljYXRlIGZpbGVzIGFyZSBwcmVzZW50IGluIGRhdGEgZGlyZWN0b3J5LgBBdXRvIGdlbmVyYXRlZCBTU0wgY2VydGlmaWNhdGVzIGFyZSBwbGFjZWQgaW4gZGF0YSBkaXJlY3RvcnkuAFNraXBwaW5nIGdlbmVyYXRpb24gb2YgU1NMIGNlcnRpZmljYXRlcyBhcyAtLWF1dG9fZ2VuZXJhdGVfY2VydHMgaXMgc2V0IHRvIE9GRi4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBSU0Ega2V5IHBhaXIgdGhyb3VnaCAlcyBhcyBvcHRpb25zIHJlbGF0ZWQgdG8gUlNBIGtleXMgYXJlIHNwZWNpZmllZC4AU2tpcHBpbmcgZ2VuZXJhdGlvbiBvZiBSU0Ega2V5IHBhaXIgdGhyb3VnaCAlcyBhcyBrZXkgZmlsZXMgYXJlIHByZXNlbnQgaW4gZGF0YSBkaXJlY3RvcnkuAEF1dG8gZ2VuZXJhdGVkIFJTQSBrZXkgZmlsZXMgdGhyb3VnaCAlcyBhcmUgcGxhY2VkIGluIGRhdGEgZGlyZWN0b3J5LgBTa2lwcGluZyBnZW5lcmF0aW9uIG9mIFJTQSBrZXkgcGFpciBhcyAlcyBpcyBzZXQgdG8gT0ZGLgAncHJveGllc19wcml2JyBlbnRyeSAnJXNAJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgBUaGUgcGx1Z2luICclLipzJyB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB1c2VyICclcydAJyUuKnMnIGlzIG5vdCBsb2FkZWQuIE5vYm9keSBjYW4gY3VycmVudGx5IGxvZ2luIHVzaW5nIHRoaXMgYWNjb3VudC4AVGhlIHBsdWdpbiAnJXMnIGlzIHVzZWQgdG8gYXV0aGVudGljYXRlIHVzZXIgJyVzJ0AnJS4qcycsICVzIGNvbmZpZ3VyZWQuIE5vYm9keSBjYW4gY3VycmVudGx5IGxvZ2luIHVzaW5nIHRoaXMgYWNjb3VudC4AQ291bGQgbm90IGxvYWQgbXlzcWwucm9sZV9lZGdlcyBhbmQgbXlzcWwuZGVmYXVsdF9yb2xlcyB0YWJsZXMuIEFDTCBERExzIHdpbGwgbm90IHdvcmsgdW5sZXNzIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZSBpcyBwZXJmb3JtZWQuACd1c2VyJyBlbnRyeSAnJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgBGYXRhbCBlcnJvcjogQ291bGQgbm90IHJlYWQgdGhlIGNvbHVtbiAnYXV0aGVudGljYXRpb25fc3RyaW5nJyBmcm9tIHRhYmxlICdteXNxbC51c2VyJy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBVc2VyIGVudHJ5ICclcydAJyVzJyBoYXMgYSBkZXByZWNhdGVkIHByZS00LjEgcGFzc3dvcmQuIFRoZSB1c2VyIHdpbGwgYmUgaWdub3JlZCBhbmQgbm8gb25lIGNhbiBsb2dpbiB3aXRoIHRoaXMgdXNlciBhbnltb3JlLgBVc2VyIGVudHJ5ICclcydAJyVzJyBoYXMgYW4gZW1wdHkgcGx1Z2luIHZhbHVlLiBUaGUgdXNlciB3aWxsIGJlIGlnbm9yZWQgYW5kIG5vIG9uZSBjYW4gbG9naW4gd2l0aCB0aGlzIHVzZXIgYW55bW9yZS4ARm91bmQgaW52YWxpZCBwYXNzd29yZCBmb3IgdXNlcjogJyVzQCVzJzsgSWdub3JpbmcgdXNlcgAndXNlcicgZW50cnkgJyVzQCVzJyBoYXMgdGhlIHBhc3N3b3JkIGlnbm9yZSBmbGFnIHJhaXNlZCwgYnV0IGl0cyBhdXRoZW50aWNhdGlvbiBwbHVnaW4gZG9lc24ndCBzdXBwb3J0IHBhc3N3b3JkIGV4cGlyYXRpb24uIFRoZSB1c2VyIGlkIHdpbGwgYmUgaWdub3JlZC4AU29tZSBvZiB0aGUgdXNlciBhY2NvdW50cyB3aXRoIFNVUEVSIHByaXZpbGVnZXMgd2VyZSBkaXNhYmxlZCBiZWNhdXNlIG9mIGVtcHR5IG15c3FsLnVzZXIucGx1Z2luIHZhbHVlLiBJZiB5b3UgYXJlIHVwZ3JhZGluZyBmcm9tIE15U1FMIDUuNiB0byBNeVNRTCA1LjcgaXQgbWVhbnMgdGhhdCBzdWJzdGl0dXRpb24gZm9yIHRoZSBlbXB0eSBwbHVnaW4gY29sdW1uIHdhcyBub3QgcG9zc2libGUuIFByb2JhYmx5IGJlY2F1c2Ugb2YgcHJlIDQuMSBwYXNzd29yZCBoYXNoLiBJZiB5b3VyIGFjY291bnQgaXMgZGlzYWJsZWQgeW91IHdpbGwgbmVlZCB0byBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4gRm9yIGNvbXBsZXRlIGluc3RydWN0aW9ucyBvbiBob3cgdG8gdXBncmFkZSBNeVNRTCB0byBhIG5ldyB2ZXJzaW9uIHBsZWFzZSBzZWUgdGhlICdVcGdyYWRpbmcgTXlTUUwnIHNlY3Rpb24gZnJvbSB0aGUgTXlTUUwgbWFudWFsLgBGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ2RiJyB0YWJsZSB3aXRoIGVtcHR5IGRhdGFiYXNlIG5hbWU7IFNraXBwZWQAJ2RiJyBlbnRyeSAnJXMgJXNAJXMnIGlnbm9yZWQgaW4gLS1za2lwLW5hbWUtcmVzb2x2ZSBtb2RlLgAnZGInIGVudHJ5ICclcyAlc0AlcycgaGFkIGRhdGFiYXNlIGluIG1peGVkIGNhc2UgdGhhdCBoYXMgYmVlbiBmb3JjZWQgdG8gbG93ZXJjYXNlIGJlY2F1c2UgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBpcyBzZXQuIEl0IHdpbGwgbm90IGJlIHBvc3NpYmxlIHRvIHJlbW92ZSB0aGlzIHByaXZpbGVnZSB1c2luZyBSRVZPS0UuAFRoZSBzeXN0ZW0gdGFibGUgbXlzcWwucHJveGllc19wcml2IGlzIG1pc3NpbmcuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4ARmF0YWwgZXJyb3I6IENhbid0IG9wZW4gYW5kIGxvY2sgcHJpdmlsZWdlIHRhYmxlczogJXMARmF0YWw6IGNhbid0IGluaXRpYWxpemUgZ3JhbnQgc3Vic3lzdGVtIC0gJyVzJwAncHJvY3NfcHJpdicgZW50cnkgJyVzICVzQCVzJyBpZ25vcmVkIGluIC0tc2tpcC1uYW1lLXJlc29sdmUgbW9kZS4AJ3Byb2NzX3ByaXYnIGVudHJ5ICclcycgaWdub3JlZCwgYmFkIHJvdXRpbmUgdHlwZQAndGFibGVzX3ByaXYnIGVudHJ5ICclcyAlc0AlcycgaWdub3JlZCBpbiAtLXNraXAtbmFtZS1yZXNvbHZlIG1vZGUuAEZhaWxlZCB0byBhZGQgJXMgaW4gZXh0cmFfdXNlcnMuIEJpbmFyeSBsb2cgZW50cnkgbWF5IG1pc3Mgc29tZSBvZiB0aGUgdXNlcnMuAFVuYWJsZSB0byBzdGFydCBzZXJ2ZXIuIFRoZSBkYXRhIGRpY3Rpb25hcnkgc2NoZW1hICclcycgZG9lcyBub3QgZXhpc3QuAFVuYWJsZSB0byBzdGFydCBzZXJ2ZXIuIFRoZSBkYXRhIGRpY3Rpb25hcnkgdGFibGUgJyVzJyBkb2VzIG5vdCBleGlzdC4ARmFpbGVkIHRvIGluaXRpYWxpemUgREQgU3RvcmFnZSBFbmdpbmUARm91bmQgcGFydGlhbGx5IHVwZ3JhZGVkIERELiBBYm9ydGluZyB1cGdyYWRlIGFuZCBkZWxldGluZyBhbGwgREQgdGFibGVzLiBTdGFydCB0aGUgdXBncmFkZSBwcm9jZXNzIGFnYWluLgBGb3VuZCAuZnJtIGZpbGUgd2l0aCBzYW1lIG5hbWUgYXMgb25lIG9mIHRoZSBEaWN0aW9uYXJ5IFRhYmxlcy4AQ3JlYXRlZCBEYXRhIERpY3Rpb25hcnkgZm9yIHVwZ3JhZGUAQ2FuJ3QgZmluZCBlcnJvci1tZXNzYWdlIGZpbGUgJyVzJy4gQ2hlY2sgZXJyb3ItbWVzc2FnZSBmaWxlIGxvY2F0aW9uIGFuZCAnbGMtbWVzc2FnZXMtZGlyJyBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZS4AVXNpbmcgcHJlIDUuNSBzZW1hbnRpY3MgdG8gbG9hZCBlcnJvciBtZXNzYWdlcyBmcm9tICVzLiBJZiB0aGlzIGlzIG5vdCBpbnRlbmRlZCwgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHZhbGlkIHVzYWdlIG9mIC0tbGMtbWVzc2FnZXMtZGlyIGFuZCAtLWxhbmd1YWdlIHBhcmFtZXRlcnMuAEVycm9yIG1lc3NhZ2UgZmlsZSAnJXMnIGhhZCBvbmx5ICVkIGVycm9yIG1lc3NhZ2VzLCBidXQgaXQgc2hvdWxkIGNvbnRhaW4gYXQgbGVhc3QgJWQgZXJyb3IgbWVzc2FnZXMuIENoZWNrIHRoYXQgdGhlIGFib3ZlIGZpbGUgaXMgdGhlIHJpZ2h0IHZlcnNpb24gZm9yIHRoaXMgcHJvZ3JhbSEATm90IGVub3VnaCBtZW1vcnkgZm9yIG1lc3NhZ2VmaWxlICclcycAQ2FuJ3QgcmVhZCBmcm9tIG1lc3NhZ2VmaWxlICclcycARm91bmQgaW5jb21wYXRpYmxlIERFQ0lNQUwgZmllbGQgJyVzJyBpbiAlczsgUGxlYXNlIGRvICJBTFRFUiBUQUJMRSBgJXNgIEZPUkNFIiB0byBmaXggaXQhAEZvdW5kIGluY29tcGF0aWJsZSBZRUFSKHgpIGZpZWxkICclcycgaW4gJXM7IFBsZWFzZSBkbyAiQUxURVIgVEFCTEUgYCVzYCBGT1JDRSIgdG8gZml4IGl0IQAnJXMnIGhhZCBubyBvciBpbnZhbGlkIGNoYXJhY3RlciBzZXQsIGFuZCBkZWZhdWx0IGNoYXJhY3RlciBzZXQgaXMgbXVsdGktYnl0ZSwgc28gY2hhcmFjdGVyIGNvbHVtbiBzaXplcyBtYXkgaGF2ZSBjaGFuZ2VkAEZvdW5kIHdyb25nIGtleSBkZWZpbml0aW9uIGluICVzOyBQbGVhc2UgZG8gIkFMVEVSIFRBQkxFIGAlc2AgRk9SQ0UgIiB0byBmaXggaXQhAFVuYWJsZSB0byBvcGVuIGZpbGUgJXMARXJyb3IgaW4gcmVhZGluZyBmaWxlICVzAFRhYmxlICclcycgd2FzIGNyZWF0ZWQgd2l0aCBhIGRpZmZlcmVudCB2ZXJzaW9uIG9mIE15U1FMIGFuZCBjYW5ub3QgYmUgcmVhZABVbmFibGUgdG8gcmVhZCB2aWV3ICVzAEZpbGUgJXMgaGFzIHVua25vd24gdHlwZSBpbiBpdHMgaGVhZGVyLgBJbmNvcnJlY3QgaW5mb3JtYXRpb24gaW4gZmlsZSAlcwBDYW4ndCBvcGVuIGFuZCBsb2NrIHByaXZpbGVnZSB0YWJsZXM6ICVzAFBsdWdpbiAnJXMnIGNhbm5vdCBzdWJzY3JpYmUgdG8gTVlTUUxfQVVESVRfQVVUSE9SSVpBVElPTiBldmVudHMuIEN1cnJlbnRseSBub3Qgc3VwcG9ydGVkLgBQbHVnaW4gJyVzJyBoYXMgaW52YWxpZCBkYXRhLgBGYXRhbCBlcnJvcjogT09NIHdoaWxlIGluaXRpYWxpemluZyB0aW1lIHpvbmVzAENhbid0IG9wZW4gYW5kIGxvY2sgdGltZSB6b25lIHRhYmxlOiAlcyB0cnlpbmcgdG8gbGl2ZSB3aXRob3V0IHRoZW0ARmF0YWwgZXJyb3I6IE91dCBvZiBtZW1vcnkgd2hpbGUgbG9hZGluZyBteXNxbC50aW1lX3pvbmVfbGVhcF9zZWNvbmQgdGFibGUARmF0YWwgZXJyb3I6IFdoaWxlIGxvYWRpbmcgbXlzcWwudGltZV96b25lX2xlYXBfc2Vjb25kIHRhYmxlOiB0b28gbXVjaCBsZWFwcwBGYXRhbCBlcnJvcjogRXJyb3Igd2hpbGUgbG9hZGluZyBteXNxbC50aW1lX3pvbmVfbGVhcF9zZWNvbmQgdGFibGUARmF0YWwgZXJyb3I6IElsbGVnYWwgb3IgdW5rbm93biBkZWZhdWx0IHRpbWUgem9uZSAnJXMnAENhbid0IGZpbmQgZGVzY3JpcHRpb24gb2YgdGltZSB6b25lICclLipzJwBDYW4ndCBmaW5kIGRlc2NyaXB0aW9uIG9mIHRpbWUgem9uZSAnJXUnAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb25fdHlwZSB0YWJsZTogdG9vIGJpZyB0cmFuc2l0aW9uIHR5cGUgaWQARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbl90eXBlIHRhYmxlOiBub3QgZW5vdWdoIHJvb20gZm9yIGFiYnJldmlhdGlvbnMARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbl90eXBlIHRhYmxlAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb24gdGFibGU6IHRvbyBtdWNoIHRyYW5zaXRpb25zAEVycm9yIHdoaWxlIGxvYWRpbmcgdGltZSB6b25lIGRlc2NyaXB0aW9uIGZyb20gbXlzcWwudGltZV96b25lX3RyYW5zaXRpb24gdGFibGU6IGJhZCB0cmFuc2l0aW9uIHR5cGUgaWQARXJyb3Igd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUgZGVzY3JpcHRpb24gZnJvbSBteXNxbC50aW1lX3pvbmVfdHJhbnNpdGlvbiB0YWJsZQBsb2FkaW5nIHRpbWUgem9uZSB3aXRob3V0IHRyYW5zaXRpb24gdHlwZXMAT3V0IG9mIG1lbW9yeSB3aGlsZSBsb2FkaW5nIHRpbWUgem9uZSBkZXNjcmlwdGlvbgBVbmFibGUgdG8gYnVpbGQgbWt0aW1lIG1hcCBmb3IgdGltZSB6b25lAE91dCBvZiBtZW1vcnkgd2hpbGUgbG9hZGluZyB0aW1lIHpvbmUARmF0YWwgZXJyb3I6IE91dCBvZiBtZW1vcnkgd2hpbGUgc2V0dGluZyBuZXcgdGltZSB6b25lAFJlcGxpY2EgU1FMIHRocmVhZCBpcyBzdG9wcGVkIGJlY2F1c2UgVU5USUwgY29uZGl0aW9uIGlzIGJhZCglczolbGx1KS4AUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYmVjYXVzZSBpdCByZWFjaGVkIGl0cyBVTlRJTCBwb3NpdGlvbiAlbGx1AFJlcGxpY2EgU1FMIHRocmVhZCBzdG9wcGVkIGJlY2F1c2UgVU5USUwgU1FMX0JFRk9SRV9HVElEUyAlcyBpcyBhbHJlYWR5IGFwcGxpZWQAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYmVjYXVzZSBpdCByZWFjaGVkIFVOVElMIFNRTF9CRUZPUkVfR1RJRFMgJXMAUmVwbGljYSBTUUwgdGhyZWFkIHN0b3BwZWQgYmVjYXVzZSBpdCByZWFjaGVkIFVOVElMIFNRTF9BRlRFUl9HVElEUyAlcwBSZXBsaWNhIFNRTCB0aHJlYWQgc3RvcHBlZCBhY2NvcmRpbmcgdG8gVU5USUwgU1FMX0FGVEVSX01UU19HQVBTIGFzIGl0IGhhcyBwcm9jZXNzZWQgYWxsIGdhcCB0cmFuc2FjdGlvbnMgbGVmdCBmcm9tIHRoZSBwcmV2aW91cyByZXBsaWNhIHNlc3Npb24uAEdyb3VwIFJlcGxpY2F0aW9uIHBsdWdpbiBpcyBub3QgaW5zdGFsbGVkLgBUaGUgdHJhbnNhY3Rpb24gb3duZWQgR1RJRCBpcyBhbHJlYWR5IGluIHRoZSAlcyB0YWJsZSwgd2hpY2ggaXMgY2F1c2VkIGJ5IGFuIGV4cGxpY2l0IG1vZGlmeWluZyBmcm9tIHVzZXIgY2xpZW50LgBGYWlsZWQgdG8gZGVsZXRlIHRoZSByb3c6ICclcycgZnJvbSB0aGUgZ3RpZF9leGVjdXRlZCB0YWJsZS4ARmFpbGVkIHRvIGNvbXByZXNzIHRoZSBndGlkX2V4ZWN1dGVkIHRhYmxlLgBGYWlsZWQgdG8gY29tcHJlc3MgdGhlIGd0aWRfZXhlY3V0ZWQgdGFibGUsIGJlY2F1c2UgaXQgaXMgZmFpbGVkIHRvIGFsbG9jYXRlIHRoZSBUSEQuAEZhaWxlZCB0byBpbml0aWFsaXplIHRocmVhZCBhdHRyaWJ1dGUgd2hlbiBjcmVhdGluZyBjb21wcmVzc2lvbiB0aHJlYWQuAENhbiBub3QgY3JlYXRlIHRocmVhZCB0byBjb21wcmVzcyBndGlkX2V4ZWN1dGVkIHRhYmxlIChlcnJubz0gJWQpAENvdWxkIG5vdCBqb2luIGd0aWRfZXhlY3V0ZWQgdGFibGUgY29tcHJlc3Npb24gdGhyZWFkLiBlcnJvcjolZABDYW4ndCBzdGFydCBzZXJ2ZXIgOiBJbml0aWFsaXplIHNlY3VyaXR5IGRlc2NyaXB0b3I6ICVzAENhbid0IHN0YXJ0IHNlcnZlciA6IFNldCBzZWN1cml0eSBkZXNjcmlwdG9yOiAlcwBDYW4ndCBzdGFydCBzZXJ2ZXIgOiBOYW1lZCBQaXBlICIlcyIgYWxyZWFkeSBpbiB1c2UuAE5EQiBSZXBsaWNhIDogQXQgU1FMIHRocmVhZCBzdGFydCBhcHBseWluZyBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGZyb20gU291cmNlIFNlcnZlcklkICV1IHdoaWNoIGlzIGxvd2VyIHRoYW4gcHJldmlvdXNseSBhcHBsaWVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdS4gIENoZWNrIHJlcGxpY2EgcG9zaXRpb25pbmcuAE5EQiBSZXBsaWNhIDogU1FMIHRocmVhZCBzdG9wcGVkIGFzIGFwcGx5aW5nIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgZnJvbSBTb3VyY2UgU2VydmVySWQgJXUgd2hpY2ggaXMgbG93ZXIgdGhhbiBwcmV2aW91c2x5IGFwcGxpZWQgZXBvY2ggJWxsdS8lbGx1ICglbGx1KS4gIEdyb3VwIFNvdXJjZSBMb2cgOiAlcyAgR3JvdXAgU291cmNlIExvZyBQb3MgOiAlbGx1AE5EQiBSZXBsaWNhIDogU1FMIHRocmVhZCBzdG9wcGVkIGFzIGF0dGVtcHRlZCB0byByZWFwcGx5IGFscmVhZHkgY29tbWl0dGVkIGVwb2NoICVsbHUvJWxsdSAoJWxsdSkgZnJvbSBzZXJ2ZXIgaWQgJXUuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdS4ATkRCIFJlcGxpY2EgOiBTUUwgdGhyZWFkIHN0b3BwZWQgYXMgYXR0ZW1wdGluZyB0byBhcHBseSBuZXcgZXBvY2ggJWxsdS8lbGx1ICglbGx1KSB3aGlsZSBsb3dlciByZWNlaXZlZCBlcG9jaCAlbGx1LyVsbHUgKCVsbHUpIGhhcyBub3QgYmVlbiBjb21taXR0ZWQuICBTb3VyY2Ugc2VydmVyIGlkIDogJXUuICBHcm91cCBTb3VyY2UgTG9nIDogJXMgIEdyb3VwIFNvdXJjZSBMb2cgUG9zIDogJWxsdS4ATkRCIFJlcGxpY2E6IG1pc3NpbmcgZGF0YSBmb3IgJXMgdGltZXN0YW1wIGNvbHVtbiAldS4ATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIGxvZ2dpbmcgZXhjZXB0aW9ucyB0byAlcy4lcwBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgOiAlcywgbG93IGVwb2NoIHJlc29sdXRpb24ARm91bmQgdW5leHBlY3RlZCBmaWVsZCB0eXBlICV1AEZhaWxlZCB0byBjcmVhdGUgTmRiSW5mbwBGYWlsZWQgdG8gaW5pdCBOZGJJbmZvAG5kYl9zZXJpYWxpemVfY29uZDogVW5leHBlY3RlZCBtaXNtYXRjaCBvZiBmb3VuZCBhbmQgZXhwZWN0ZWQgbnVtYmVyIG9mIGZ1bmN0aW9uIGFyZ3VtZW50cyAldQAlcyAtICVzLiVzACVzAEluZm8gdGFibGUgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQuIFRhYmxlICclcy4lcycgY2Fubm90IGJlIG9wZW5lZC4ASW5mbyB0YWJsZSBpcyBub3QgcmVhZHkgdG8gYmUgdXNlZC4gVGFibGUgJyVzLiVzJyBjYW5ub3QgYmUgc2Nhbm5lZC4AQ29ycnVwdGVkIHRhYmxlICVzLiVzLiBDaGVjayBvdXQgdGFibGUgZGVmaW5pdGlvbi4ASW5mbyB0YWJsZSBoYXMgYSBwcm9ibGVtIHdpdGggaXRzIGtleSBmaWVsZChzKS4gVGFibGUgJyVzLiVzJyBleHBlY3RlZCBmaWVsZCAjJXUgdG8gYmUgJyVzJyBidXQgZm91bmQgJyVzJyBpbnN0ZWFkLgBDaG9vc2luZyB3b3JrZXIgaWQgJWx1LCB0aGUgZm9sbG93aW5nIGlzIGdvaW5nIHRvIGJlICVsdQBUcmFuc2FjdGlvbiBpcyB0YWdnZWQgd2l0aCBpbmNvbnNpc3RlbnQgbG9naWNhbCB0aW1lc3RhbXBzOiBzZXF1ZW5jZV9udW1iZXIgKCVsbGQpIDw9IGxhc3RfY29tbWl0dGVkICglbGxkKQBUcmFuc2FjdGlvbidzIHNlcXVlbmNlIG51bWJlciBpcyBpbmNvbnNpc3RlbnQgd2l0aCB0aGF0IG9mIGEgcHJlY2VkaW5nIG9uZTogc2VxdWVuY2VfbnVtYmVyICglbGxkKSA8PSBwcmV2aW91cyBzZXF1ZW5jZV9udW1iZXIgKCVsbGQpAEZvciB0aGUgY3JlYXRpb24gb2YgcmVwbGljYXRpb24gY2hhbm5lbHMgdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgYW5kIGFwcGxpZXIgbWV0YWRhdGEgcmVwb3NpdG9yaWVzIG11c3QgYmUgc2V0IHRvIFRBQkxFAEZvciB0aGUgY3JlYXRpb24gb2YgcmVwbGljYXRpb24gY2hhbm5lbHMgdGhlIHNlcnZlciBpZCBtdXN0IGJlIGRpZmZlcmVudCBmcm9tIDAAUmVwbGljYTogV3JvbmcgcmVwb3NpdG9yeS4gUmVwb3NpdG9yeSBzaG91bGQgYmUgVEFCTEUARXJyb3IgY3JlYXRpbmcgY29ubmVjdGlvbiBtZXRhZGF0YTogJXMuAEVycm9yIGNoYW5naW5nIHRoZSB0eXBlIG9mIGNvbm5lY3Rpb24gbWV0YWRhdGEncyByZXBvc2l0b3J5OiAlcy4ASXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgdHlwZSBvZiB0aGUgcmVsYXkgbG9nIHJlcG9zaXRvcnkgYmVjYXVzZSB0aGVyZSBhcmUgd29ya2VycyByZXBvc2l0b3JpZXMgd2l0aCBwb3NzaWJsZSBleGVjdXRpb24gZ2Fwcy4gVGhlIHZhbHVlIG9mIC0tcmVsYXlfbG9nX2luZm9fcmVwb3NpdG9yeSBpcyBhbHRlcmVkIHRvIG9uZSBvZiB0aGUgZm91bmQgV29ya2VyIHJlcG9zaXRvcmllcy4gVGhlIGdhcHMgaGF2ZSB0byBiZSBzb3J0ZWQgb3V0IGJlZm9yZSByZXN1bWluZyB3aXRoIHRoZSB0eXBlIGNoYW5nZS4ARXJyb3IgY3JlYXRpbmcgYXBwbGllciBtZXRhZGF0YTogJXMuAEVycm9yIGNoYW5naW5nIHRoZSB0eXBlIG9mIGFwcGxpZXIgbWV0YWRhdGEncyByZXBvc2l0b3J5OiAlcy4AQ291bGQgbm90IGRlbGV0ZSBmcm9tIFJlcGxpY2EgV29ya2VycyBpbmZvIHJlcG9zaXRvcnkuAENvdWxkIG5vdCBzdG9yZSB0aGUgcmVzZXQgUmVwbGljYSBXb3JrZXIgc3RhdGUgaW50byB0aGUgcmVwbGljYSBpbmZvIHJlcG9zaXRvcnkuAEVycm9yIGluIGNoZWNraW5nICVzIHJlcG9zaXRvcnkuAFJlcGxpY2E6ICVzAFJlcGxpY2E6IENvdWxkIG5vdCBjcmVhdGUgY2hhbm5lbCBsaXN0AFJlcGxpY2E6IFRoaXMgcmVwbGljYSB3YXMgYSBtdWx0aXNvdXJjZWQgcmVwbGljYSBwcmV2aW91c2x5IHdoaWNoIGlzIHN1cHBvcnRlZCBvbmx5IGJ5IGJvdGggVEFCTEUgYmFzZWQgY29ubmVjdGlvbiBtZXRhZGF0YSBhbmQgYXBwbGllciBtZXRhZGF0YSByZXBvc2l0b3JpZXMuIEZvdW5kIG9uZSBvciBib3RoIG9mIHRoZSBpbmZvIHJlcG9zIHRvIGJlIHR5cGUgRklMRS4gU2V0IGJvdGggcmVwb3MgdG8gdHlwZSBUQUJMRS4AUmVwbGljYTogRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgc3RydWN0dXJlIGZvciBjaGFubmVsICclcyc7IGl0cyByZWNvcmQgbWF5IHN0aWxsIGJlIHByZXNlbnQgaW4gdGhlIGFwcGxpZXIgbWV0YWRhdGEgcmVwb3NpdG9yeSwgY29uc2lkZXIgZGVsZXRpbmcgaXQuAEZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSVzAFJlcGxpY2E6IEZhaWxlZCB0byBjcmVhdGUgYSBjaGFubmVsIGZyb20gY29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5LgBGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IGluZm8gZmlsZSAoZmlsZSAnJXMnLCBlcnJubyAlZCkARmFpbGVkIHRvIGNyZWF0ZSBhIGNhY2hlIG9uIGluZm8gZmlsZSAoZmlsZSAnJXMnKQBGYWlsZWQgdG8gb3BlbiB0aGUgZXhpc3RpbmcgaW5mbyBmaWxlIChmaWxlICclcycsIGVycm5vICVkKQBTZXJ2ZXIgb3ZlcmNvbWVzIHRoZSB0ZW1wb3JhcnkgJ291dCBvZiBtZW1vcnknIGluICclZCcgdHJpZXMgd2hpbGUgYWxsb2NhdGluZyBhIG5ldyBjaHVuayBvZiBpbnRlcnZhbHMgZm9yIHN0b3JpbmcgR1RJRHMuAFVua25vd24gY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLnNlcnZlcl9jb3N0IHRhYmxlAEludmFsaWQgdmFsdWUgZm9yIGNvc3QgY29uc3RhbnQgIiVzIiBpbiBteXNxbC5zZXJ2ZXJfY29zdCB0YWJsZTogJS4xZgBVbmtub3duIGNvc3QgY29uc3RhbnQgIiVzIiBpbiBteXNxbC5lbmdpbmVfY29zdCB0YWJsZQBVbmtub3duIHN0b3JhZ2UgZW5naW5lICIlcyIgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUASW52YWxpZCBkZXZpY2UgdHlwZSAlZCBmb3IgIiVzIiBzdG9yYWdlIGVuZ2luZSBmb3IgY29zdCBjb25zdGFudCAiJXMiIGluIG15c3FsLmVuZ2luZV9jb3N0IHRhYmxlAEludmFsaWQgdmFsdWUgZm9yIGNvc3QgY29uc3RhbnQgIiVzIiBmb3IgIiVzIiBzdG9yYWdlIGVuZ2luZSBhbmQgZGV2aWNlIHR5cGUgJWQgaW4gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGU6ICUuMWYARXJyb3Igd2hpbGUgcmVhZGluZyBmcm9tIG15c3FsLnNlcnZlcl9jb3N0IHRhYmxlLgBFcnJvciB3aGlsZSByZWFkaW5nIGZyb20gbXlzcWwuZW5naW5lX2Nvc3QgdGFibGUuAEZhaWxlZCB0byBvcGVuIG9wdGltaXplciBjb3N0IGNvbnN0YW50IHRhYmxlcwBVbnN1cHBvcnRlZCBub24taWdub3JhYmxlIGV2ZW50IGZlZCBpbnRvIHRoZSBldmVudCBzdHJlYW0uAEdUSURfTE9HX0VWRU5ULCBHVElEX1RBR0dFRF9MT0dfRVZFTlQgb3IgQU5PTllNT1VTX0dUSURfTE9HX0VWRU5UIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gJXMuAFFVRVJZKEJFR0lOKSBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtIGluIHRoZSBtaWRkbGUgb2YgYSAlcy4AUVVFUlkoQ09NTUlUIG9yIFJPTExCQUNLKSBvciBYSURfTE9HX0VWRU5UIGlzIG5vdCBleHBlY3RlZCBpbiBhbiBldmVudCBzdHJlYW0gJXMuAFFVRVJZKFhBIFJPTExCQUNLKSBpcyBub3QgZXhwZWN0ZWQgaW4gYW4gZXZlbnQgc3RyZWFtICVzLgBFdmVudCBTY2hlZHVsZXI6IFslc10uWyVzLiVzXSBleGVjdXRpb24gZmFpbGVkLCBmYWlsZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyLgBFdmVudCBTY2hlZHVsZXI6IFslc10uWyVzLiVzXSBleGVjdXRpb24gZmFpbGVkLCB1c2VyIG5vIGxvbmdlciBoYXMgRVZFTlQgcHJpdmlsZWdlLgBFdmVudCBTY2hlZHVsZXI6ICVzZXJyb3IgZHVyaW5nIGNvbXBpbGF0aW9uIG9mICVzLiVzAEV2ZW50IFNjaGVkdWxlcjogRHJvcHBpbmcgJXMuJXMATmRiIHNjaGVtYVslcy4lc106ICVzAEluIFJCUiBtb2RlLCBSZXBsaWNhIHJlY2VpdmVkIGluY29tcGF0aWJsZSBERUNJTUFMIGZpZWxkIChvbGQtc3R5bGUgZGVjaW1hbCBmaWVsZCkgZnJvbSBTb3VyY2Ugd2hpbGUgY3JlYXRpbmcgY29udmVyc2lvbiB0YWJsZS4gUGxlYXNlIGNvbnNpZGVyIGNoYW5naW5nIGRhdGF0eXBlIG9uIFNvdXJjZSB0byBuZXcgc3R5bGUgZGVjaW1hbCBieSBleGVjdXRpbmcgQUxURVIgY29tbWFuZCBmb3IgY29sdW1uIE5hbWU6ICVzLiVzLiVzLgByb290QGxvY2FsaG9zdCBpcyBjcmVhdGVkIHdpdGggYW4gZW1wdHkgcGFzc3dvcmQgISBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIG9mZiB0aGUgLS1pbml0aWFsaXplLWluc2VjdXJlIG9wdGlvbi4AQSB0ZW1wb3JhcnkgcGFzc3dvcmQgaXMgZ2VuZXJhdGVkIGZvciByb290QGxvY2FsaG9zdDogJXMARmFpbGVkIHRvIG9wZW4gdGhlIGJvb3RzdHJhcCBmaWxlICVzAEJvb3RzdHJhcHBpbmcgY29tcGxldGUALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGhhcyBmaWxlcyBpbiBpdC4gQWJvcnRpbmcuAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgb24gYW4gZXhpc3RpbmcgZGF0YSBkaXJlY3RvcnkuAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSBkYXRhIGRpcmVjdG9yeSBleGlzdHMgYW5kIHRoZSBwYXRoIGlzIHRvbyBsb25nLiBBYm9ydGluZy4ALS1pbml0aWFsaXplIHNwZWNpZmllZCBidXQgdGhlIGRhdGEgZGlyZWN0b3J5IGV4aXN0cyBhbmQgaXMgbm90IHdyaXRhYmxlLiBBYm9ydGluZy4AQ3JlYXRpbmcgdGhlIGRhdGEgZGlyZWN0b3J5ICVzAFN0YXJ0IGJpbmxvZ19kdW1wIHRvIHNvdXJjZV90aHJlYWRfaWQoJXUpIHJlcGxpY2Ffc2VydmVyKCV1KSwgcG9zKCVzLCAlbGx1KQBzb3VyY2Ugc2VuZHMgaGVhcnRiZWF0IG1lc3NhZ2UAdGhlIHJlc3Qgb2YgaGVhcnRiZWF0IGluZm8gc2tpcHBlZCAuLi4AU291cmNlIGlzIGNvbmZpZ3VyZWQgdG8gbG9nIHJlcGxpY2F0aW9uIGV2ZW50cyB3aXRoIGNoZWNrc3VtLCBidXQgd2lsbCBub3Qgc2VuZCBzdWNoIGV2ZW50cyB0byByZXBsaWNhcyB0aGF0IGNhbm5vdCBwcm9jZXNzIHRoZW0ATkRCOiBRdWVyeSAnJXMnIGZhaWxlZCwgZXJyb3I6ICVkOiAlcwBLaWxsaW5nIHRocmVhZCAlbHUAUGx1Z2luICVzIGlzIGRlaW5pdGlhbGl6aW5nIGEgdGhyZWFkIGJ1dCBsZWZ0IGEgc2Vzc2lvbiBhdHRhY2hlZC4gRGV0YWNoaW5nIGl0IGZvcmNlZnVsbHkuAEZhaWxlZCB0byBkZXRhY2ggdGhlIHNlc3Npb24uAENsb3NlZCBmb3JjZWZ1bGx5ICV1IHNlc3Npb24lcyBsZWZ0IG9wZW5lZCBieSBwbHVnaW4gJXMARmFpbGVkIHRvIGRlY3JlbWVudCB0aGUgbnVtYmVyIG9mIHRocmVhZHMAUGx1Z2luICVzIGRpZCBub3QgZGVpbml0aWFsaXplICV1IHRocmVhZHMAS2lsbGVkICV1IHRocmVhZHMgb2YgcGx1Z2luICVzAE5EQiBSZXBsaWNhIDogQ291bGQgbm90IGRldGVybWluZSBtYXhpbXVtIHJlcGxpY2F0ZWQgZXBvY2ggZnJvbSAlcy4lcyBhdCBSZXBsaWNhIHN0YXJ0LCBlcnJvciAldSAlcwBOREIgUmVwbGljYSA6IE1heFJlcGxpY2F0ZWRFcG9jaCBzZXQgdG8gJWxsdSAoJXUvJXUpIGF0IFJlcGxpY2Egc3RhcnQATkRCOiBOb2RlSUQgaXMgJWx1LCBtYW5hZ2VtZW50IHNlcnZlciAnJXM6JWx1JwB0aWQgJXU6IG5vZGVbJXVdIHRyYW5zYWN0aW9uX2hpbnQ9JXUsIHRyYW5zYWN0aW9uX25vX2hpbnQ9JXUATkRCIEludGVybmFsIGVycm9yOiBEZWZhdWx0IHZhbHVlcyBkaWZmZXIgZm9yIGNvbHVtbiAldSwgbmRiX2RlZmF1bHQ6ICVkAE5EQiBJbnRlcm5hbCBlcnJvcjogQ29sdW1uICV1IGhhcyBuYXRpdmUgZGVmYXVsdCwgYnV0IHNob3VsZG4ndC4gRmxhZ3M9JXUsIHR5cGU9JXUAZmllbGRbIG5hbWU6ICclcycsIHR5cGU6ICV1LCByZWFsX3R5cGU6ICV1LCBmbGFnczogMHgleCwgaXNfbnVsbDogJWRdAG5kYkNvbFtuYW1lOiAnJXMnLCB0eXBlOiAldSwgY29sdW1uX25vOiAlZCwgbnVsbGFibGU6ICVkXQBmaXhfdW5pcXVlX2luZGV4X2F0dHJfb3JkZXI6IG15X21hbGxvYygldSkgZmFpbHVyZQBOREIgUmVwbGljYSA6IE1hbGZvcm1lZCBldmVudCByZWNlaXZlZCBvbiB0YWJsZSAlcyBjYW5ub3QgcGFyc2UuICBTdG9wcGluZyBSZXBsaWNhLgBOREIgUmVwbGljYSA6IENvbmZsaWN0IGZ1bmN0aW9uICVzIGRlZmluZWQgb24gdGFibGUgJXMgcmVxdWlyZXMgbmRiX3JlcGxpY2FfY29uZmxpY3Rfcm9sZSB2YXJpYWJsZSB0byBiZSBzZXQuICBTdG9wcGluZyByZXBsaWNhLgBOREIgUmVwbGljYSA6IFRyYW5zYWN0aW9uYWwgY29uZmxpY3QgZGV0ZWN0aW9uIGRlZmluZWQgb24gdGFibGUgJXMsIGJ1dCBldmVudHMgcmVjZWl2ZWQgd2l0aG91dCB0cmFuc2FjdGlvbiBpZHMuICBDaGVjayAtLW5kYi1sb2ctdHJhbnNhY3Rpb24taWQgc2V0dGluZyBvbiB1cHN0cmVhbSBDbHVzdGVyLgBOREIgUmVwbGljYSA6IEJpbmxvZyBldmVudCBvbiB0YWJsZSAlcyBtaXNzaW5nIGluZm8gbmVjZXNzYXJ5IGZvciBjb25mbGljdCBkZXRlY3Rpb24uICBDaGVjayBiaW5sb2cgZm9ybWF0IG9wdGlvbnMgb24gdXBzdHJlYW0gY2x1c3Rlci4ARXJyb3IgJWx1IGluIHJlYWRBdXRvSW5jcmVtZW50VmFsdWUoKTogJXMAZm91bmQgdW5jb21taXR0ZWQgYXV0b2NvbW1pdCtyYndyIHRyYW5zYWN0aW9uLCBjb21taXQgc3RhdHVzOiAlZABOZGIgcmVwbGljYSByZXRyaWVkIHRyYW5zYWN0aW9uICV1IHRpbWUocykgaW4gdmFpbi4gIEdpdmluZyB1cC4ARXJyb3IgJWx1IGluIDo6dXBkYXRlX2NyZWF0ZV9pbmZvKCk6ICVzAE5EQjogYWxsb2NhdGluZyB0YWJsZSBzaGFyZSBmb3IgJXMgZmFpbGVkAE5EQiBCaW5sb2c6ICglZCklcwBOREIgQmlubG9nOiBDUkVBVEUgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IEZBSUxFRCBDUkVBVEUgVEFCTEUgZXZlbnQgb3BlcmF0aW9ucy4gRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IFJFTkFNRSBFdmVudDogJXMATkRCIEJpbmxvZzogRkFJTEVEIGNyZWF0ZSBldmVudCBvcGVyYXRpb25zIGR1cmluZyBSRU5BTUUuIEV2ZW50ICVzAFVuZXhwZWN0ZWQgcmVuYW1lIGNhc2UgZGV0ZWN0ZWQsIHNxbF9jb21tYW5kOiAlZABFcnJvciAlbHUgaW4gOjpnZXRfYXV0b19pbmNyZW1lbnQoKTogJXMAQ2FsbGluZyBuZGJjbHVzdGVyX2NyZWF0ZV9iaW5sb2dfc2V0dXAoJXMpIGluIDo6b3BlbgB0YWJsZSAnJXMnIG9wZW5lZCByZWFkIG9ubHkATkRCOiAnLS1pbml0aWFsaXplJyAtPiBuZGJjbHVzdGVyIHBsdWdpbiBkaXNhYmxlZABOREI6IENoYW5nZWQgZ2xvYmFsIHZhbHVlIG9mIGJpbmxvZ19mb3JtYXQgZnJvbSBTVEFURU1FTlQgdG8gTUlYRUQATkRCX1NIQVJFOiB0cmFpbGluZyBzaGFyZSAlcywgcmVsZWFzZWQgYnkgY2xvc2VfY2FjaGVkX3RhYmxlcwBOREJfU0hBUkU6ICVzIGFscmVhZHkgZXhpc3RzIHVzZV9jb3VudD0lZC4gTW92aW5nIGF3YXkgZm9yIHNhZmV0eSwgYnV0IHBvc3NpYmxlIG1lbWxlYWsuAGhhbmRsZV90cmFpbGluZ19zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX2dldF9zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX3JlYWxfZnJlZV9zaGFyZTogJXMgdXNlX2NvdW50OiAldQBuZGJjbHVzdGVyX3JlYWxfZnJlZV9zaGFyZTogJXMsIHN0aWxsIG9wZW4gLSBpZ25vcmVkICdmcmVlJyAobGVha2VkPykAbmRiY2x1c3Rlcl9mcmVlX3NoYXJlOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfbWFya19zaGFyZV9kcm9wcGVkOiAlcyB1c2VfY291bnQ6ICV1AG5kYmNsdXN0ZXJfbWFya19zaGFyZV9kcm9wcGVkOiBkZXN0cm95cyBzaGFyZSAlcwBDb3VsZCBub3QgYWxsb2NhdGUgVGhkX25kYiBvYmplY3QATkRCIEJpbmxvZzogTmRiIHRhYmxlcyBpbml0aWFsbHkgcmVhZCBvbmx5LgBuZGIgdXRpbCB0aHJlYWQ6IG1hbGxvYyBmYWlsdXJlLCBxdWVyeSBjYWNoZSBub3QgbWFpbnRhaW5lZCBwcm9wZXJseQBUcnlpbmcgdG8gc2V0IG5kYl9yZWN2X3RocmVhZF9jcHVfbWFzayB0byBpbGxlZ2FsIHZhbHVlID0gJXMsIGlnbm9yZWQAVHJ5aW5nIHRvIHNldCB0b28gbWFueSBDUFUncyBpbiBuZGJfcmVjdl90aHJlYWRfY3B1X21hc2ssIGlnbm9yZWQgdGhpcyB2YXJpYWJsZSwgZXJyb25ldXMgdmFsdWUgPSAlcwBkYnVnX2NoZWNrX3NoYXJlcyBvcGVuOgAgICVzLiVzOiBzdGF0ZTogJXMoJXUpIHVzZV9jb3VudDogJXUAZGJ1Z19jaGVja19zaGFyZXMgZHJvcHBlZDoASW52YWxpZCAob2xkPykgdGFibGUgb3IgZGF0YWJhc2UgbmFtZSAnJXMnAFJlY292ZXJpbmcgYWZ0ZXIgYSBjcmFzaCB1c2luZyAlcwBDYW5ub3QgcGVyZm9ybSBhdXRvbWF0aWMgY3Jhc2ggcmVjb3Zlcnkgd2hlbiAtLXRjLWhldXJpc3RpYy1yZWNvdmVyIGlzIHVzZWQAQmFkIG1hZ2ljIGhlYWRlciBpbiB0YyBsb2cAUmVjb3ZlcnkgZmFpbGVkISBZb3UgbXVzdCBlbmFibGUgZXhhY3RseSAlZCBzdG9yYWdlIGVuZ2luZXMgdGhhdCBzdXBwb3J0IHR3by1waGFzZSBjb21taXQgcHJvdG9jb2wAQ3Jhc2ggcmVjb3ZlcnkgZmFpbGVkLiBFaXRoZXIgY29ycmVjdCB0aGUgcHJvYmxlbSAoaWYgaXQncywgZm9yIGV4YW1wbGUsIG91dCBvZiBtZW1vcnkgZXJyb3IpIGFuZCByZXN0YXJ0LCBvciBkZWxldGUgdGMgbG9nIGFuZCBzdGFydCBteXNxbGQgd2l0aCAtLXRjLWhldXJpc3RpYy1yZWNvdmVyPXtjb21taXR8cm9sbGJhY2t9AEhldXJpc3RpYyBjcmFzaCByZWNvdmVyeSBtb2RlAEhldXJpc3RpYyBjcmFzaCByZWNvdmVyeSBmYWlsZWQAUGxlYXNlIHJlc3RhcnQgbXlzcWxkIHdpdGhvdXQgLS10Yy1oZXVyaXN0aWMtcmVjb3ZlcgBGYWlsZWQgdG8gY3JlYXRlIG9yIHJlY292ZXIgcmVwbGljYXRpb24gaW5mbyByZXBvc2l0b3JpZXMuAERldGVjdGVkIG1pc2NvbmZpZ3VyYXRpb246IHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIGNvbmZpZ3VyZWQgd2l0aCBBVVRPX1BPU0lUSU9OID0gMSwgYnV0IHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCAtLWd0aWQtbW9kZT1vZmYuIEVpdGhlciByZWNvbmZpZ3VyZSByZXBsaWNhdGlvbiB1c2luZyBDSEFOR0UgUkVQTElDQVRJT04gU09VUkNFIFRPIFNPVVJDRV9BVVRPX1BPU0lUSU9OID0gMCBGT1IgQ0hBTk5FTCAnJS4xOTJzJywgb3IgY2hhbmdlIEdUSURfTU9ERSB0byBzb21lIHZhbHVlIG90aGVyIHRoYW4gT0ZGLCBiZWZvcmUgc3RhcnRpbmcgdGhlIHJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkLgBSZXBsaWNhOiBDb3VsZCBub3Qgc3RhcnQgcmVwbGljYSBmb3IgY2hhbm5lbCAnJXMnLiBvcGVyYXRpb24gZGlzY29udGludWVkAFJlcGxpY2E6IENvdWxkIG5vdCBzdG9wIHJlcGxpY2EgZm9yIGNoYW5uZWwgJyVzJyBvcGVyYXRpb24gZGlzY29udGludWVkAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogQ291bGQgbm90IGxvY2F0ZSByb3RhdGUgZXZlbnQgZnJvbSB0aGUgc291cmNlLgBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IEVycm9yIHJlYWRpbmcgZXZlbnRzIGZyb20gcmVsYXkgbG9nOiAlZABFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6IEVycm9yIHdoaWxlIGZyZWVpbmcgSU9fQ0FDSEUgb2JqZWN0AFJlbGF5IGxvZyByZWNvdmVyeSBza2lwcGVkIGZvciBncm91cCByZXBsaWNhdGlvbiBjaGFubmVsLgBFcnJvciBkdXJpbmcgLS1yZWxheS1sb2ctcmVjb3Zlcnk6ICVzAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogQ291bGQgbm90IHJlYWQgcmVsYXkgbG9nIGluZGV4IGZpbGUgZHVlIHRvIGFuIElPIGVycm9yLgBSZWNvdmVyeSBmcm9tIHNvdXJjZSBwb3MgJWxkIGFuZCBmaWxlICVzJXMuIFByZXZpb3VzIHJlbGF5IGxvZyBwb3MgYW5kIHJlbGF5IGxvZyBmaWxlIGhhZCBiZWVuIHNldCB0byAlbGxkLCAlcyByZXNwZWN0aXZlbHkuAEVycm9yIGR1cmluZyAtLXJlbGF5LWxvZy1yZWNvdmVyeTogcmVwbGljYXRlX3NhbWVfc2VydmVyX2lkIGlzIGluIHVzZSBhbmQgc3FsIHRocmVhZCdzIHBvc2l0aW9ucyBhcmUgbm90IGluaXRpYWxpemVkLCBoZW5jZSByZWxheSBsb2cgcmVjb3ZlcnkgY2Fubm90IGhhcHBlbi4ATVRBIHJlY292ZXJ5OiBzdGFydGluZyBjb29yZGluYXRvciB0aHJlYWQgdG8gZmlsbCBNVEEgZ2Fwcy4ATVRBIHJlY292ZXJ5OiBmYWlsZWQgdG8gc3RhcnQgdGhlIGNvb3JkaW5hdG9yIHRocmVhZC4gQ2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgBNVEEgcmVjb3Zlcnk6IGF1dG9tYXRpYyByZWNvdmVyeSBmYWlsZWQuIEVpdGhlciB0aGUgcmVwbGljYSBzZXJ2ZXIgaGFkIHN0b3BwZWQgZHVlIHRvIGFuIGVycm9yIGR1cmluZyBhbiBlYXJsaWVyIHNlc3Npb24gb3IgcmVsYXkgbG9ncyBhcmUgY29ycnVwdGVkLkZpeCB0aGUgY2F1c2Ugb2YgdGhlIHJlcGxpY2Egc2lkZSBlcnJvciBhbmQgcmVzdGFydCB0aGUgcmVwbGljYSBzZXJ2ZXIgb3IgY29uc2lkZXIgdXNpbmcgUkVTRVQgUkVQTElDQS4ARmFpbGVkIHRvIG9wZW4gdGhlIHJlbGF5IGxvZyAnJXMnIChyZWxheV9sb2dfcG9zICVzKS4ATVRBIHJlY292ZXJ5OiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgBTZXJ2ZXIgaWQgbm90IHNldCwgd2lsbCBub3Qgc3RhcnQgcmVwbGljYSVzAENhbid0IGNyZWF0ZSByZXBsaWNhIHRocmVhZCVzLgBUaGUgcmVwbGljYSBJTyB0aHJlYWQlcyB3YXMga2lsbGVkIHdoaWxlIGV4ZWN1dGluZyBpbml0aWFsaXphdGlvbiBxdWVyeSAnJXMnAFRoZSBzb3VyY2UncyBVVUlEIGhhcyBjaGFuZ2VkLCBhbHRob3VnaCB0aGlzIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyB5b3UgaGF2ZSBjaGFuZ2VkIGl0IG1hbnVhbGx5LiBUaGUgb2xkIFVVSUQgd2FzICVzLgBGb3VuZCBhIHNvdXJjZSB3aXRoIE15U1FMIHNlcnZlciB2ZXJzaW9uIG9sZGVyIHRoYW4gNS4wLiBXaXRoIGNoZWNrc3VtcyBlbmFibGVkIG9uIHRoZSByZXBsaWNhLCByZXBsaWNhdGlvbiBtaWdodCBub3Qgd29yayBjb3JyZWN0bHkuIFRvIGVuc3VyZSBjb3JyZWN0IHJlcGxpY2F0aW9uLCByZXN0YXJ0IHRoZSByZXBsaWNhIHNlcnZlciB3aXRoIC0tcmVwbGljYV9zcWxfdmVyaWZ5X2NoZWNrc3VtPTAuACJTRUxFQ1QgVU5JWF9USU1FU1RBTVAoKSIgZmFpbGVkIG9uIHNvdXJjZSwgZG8gbm90IHRydXN0IGNvbHVtbiBTZWNvbmRzX0JlaGluZF9Tb3VyY2Ugb2YgU0hPVyBSRVBMSUNBIFNUQVRVUy4gRXJyb3I6ICVzICglZCkARmFpbGVkIHRvIGZsdXNoIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeS4AVGhlIGxlbmd0aCBvZiByZXBvcnRfaG9zdCBpcyAlenUuIEl0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXggbGVuZ3RoKCVkKSwgc28gdGhpcyByZXBsaWNhIGNhbm5vdCBiZSByZWdpc3RlcmVkIHRvIHRoZSBzb3VyY2Ulcy4AVGhlIGxlbmd0aCBvZiByZXBvcnRfdXNlciBpcyAlenUuIEl0IGlzIGxhcmdlciB0aGFuIHRoZSBtYXggbGVuZ3RoKCVkKSwgc28gdGhpcyByZXBsaWNhIGNhbm5vdCBiZSByZWdpc3RlcmVkIHRvIHRoZSBzb3VyY2Ulcy4AVGhlIGxlbmd0aCBvZiByZXBvcnRfcGFzc3dvcmQgaXMgJXp1LiBJdCBpcyBsYXJnZXIgdGhhbiB0aGUgbWF4IGxlbmd0aCglZCksIHNvIHRoaXMgcmVwbGljYSBjYW5ub3QgYmUgcmVnaXN0ZXJlZCB0byB0aGUgc291cmNlJXMuAEVycm9yIG9uICVzOiAlZCAgJXMsIHdpbGwgcmV0cnkgaW4gJWQgc2VjcwBFcnJvciByZWFkaW5nIHBhY2tldCBmcm9tIHNlcnZlciVzOiAlcyAoc2VydmVyX2Vycm5vPSVkKQBSZXBsaWNhJXM6IHJlY2VpdmVkIGVuZCBwYWNrZXQgZnJvbSBzZXJ2ZXIgZHVlIHRvIGR1bXAgdGhyZWFkIGJlaW5nIGtpbGxlZCBvbiBzb3VyY2UuIER1bXAgdGhyZWFkcyBhcmUga2lsbGVkIGZvciBleGFtcGxlIGR1cmluZyBzb3VyY2Ugc2h1dGRvd24sIGV4cGxpY2l0bHkgYnkgYSB1c2VyLCBvciB3aGVuIHRoZSBzb3VyY2UgcmVjZWl2ZXMgYSBiaW5sb2cgc2VuZCByZXF1ZXN0IGZyb20gYSBkdXBsaWNhdGUgc2VydmVyIFVVSUQgPCVzPiA6IEVycm9yICVzAE11bHRpLXRocmVhZGVkIHJlcGxpY2Egc3RhdGlzdGljcyVzOiBzZWNvbmRzIGVsYXBzZWQgPSAlbHU7IGV2ZW50cyBhc3NpZ25lZCA9ICVsbHU7IHdvcmtlciBxdWV1ZXMgZmlsbGVkIG92ZXIgb3ZlcnJ1biBsZXZlbCA9ICVsdTsgd2FpdGVkIGR1ZSBhIFdvcmtlciBxdWV1ZSBmdWxsID0gJWx1OyB3YWl0ZWQgZHVlIHRoZSB0b3RhbCBzaXplID0gJWx1OyB3YWl0ZWQgYXQgY2xvY2sgY29uZmxpY3RzID0gJWxsdSB3YWl0ZWQgKGNvdW50KSB3aGVuIFdvcmtlcnMgb2NjdXBpZWQgPSAlbHUgd2FpdGVkIHdoZW4gV29ya2VycyBvY2N1cGllZCA9ICVsbHUAUmVwbGljYSVzOiBNVEEgUmVjb3ZlcnkgaGFzIGNvbXBsZXRlZCBhdCByZWxheSBsb2cgJXMsIHBvc2l0aW9uICVsbHUgc291cmNlIGxvZyAlcywgcG9zaXRpb24gJWxsdS4ARXJyb3IgaW5pdGlhbGl6aW5nIHJlbGF5IGxvZyBwb3NpdGlvbiVzOiAlcwBSZXBsaWNhIEkvTyB0aHJlYWQlczogY29ubmVjdGVkIHRvIHNvdXJjZSAnJXNAJXM6JWQnLHJlcGxpY2F0aW9uIHN0YXJ0ZWQgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMAUmVwbGljYSBJL08gdGhyZWFkJXMga2lsbGVkIHdoaWxlIGNvbm5lY3RpbmcgdG8gc291cmNlAFJlcGxpY2EgSS9PIHRocmVhZCBjb3VsZG4ndCByZWdpc3RlciBvbiBzb3VyY2UARm9yY2luZyB0byByZWNvbm5lY3QgcmVwbGljYSBJL08gdGhyZWFkJXMARmFpbGVkIG9uIHJlcXVlc3RfZHVtcCgpJXMATG9nIGVudHJ5IG9uIHNvdXJjZSBpcyBsb25nZXIgdGhhbiByZXBsaWNhX21heF9hbGxvd2VkX3BhY2tldCAoJWx1KSBvbiByZXBsaWNhLiBJZiB0aGUgZW50cnkgaXMgY29ycmVjdCwgcmVzdGFydCB0aGUgc2VydmVyIHdpdGggYSBoaWdoZXIgdmFsdWUgb2YgcmVwbGljYV9tYXhfYWxsb3dlZF9wYWNrZXQAU3RvcHBpbmcgcmVwbGljYSBJL08gdGhyZWFkIGR1ZSB0byBvdXQtb2YtbWVtb3J5IGVycm9yIGZyb20gc291cmNlAFJlcGxpY2EgSS9PIHRocmVhZCBhYm9ydGVkIHdoaWxlIHdhaXRpbmcgZm9yIHJlbGF5IGxvZyBzcGFjZQBSZXBsaWNhIEkvTyB0aHJlYWQgZXhpdGluZyVzLCByZWFkIHVwIHRvIGxvZyAnJXMnLCBwb3NpdGlvbiAlcwBGYWlsZWQgZHVyaW5nIHJlcGxpY2Egd29ya2VyIGluaXRpYWxpemF0aW9uJXMAUmVwbGljYTogTVRBIGdyb3VwIHJlY292ZXJ5IGFwcGxpZXIgbWV0YWRhdGEgYmFzZWQgb24gV29ya2VyLUlkICVsdSwgZ3JvdXBfcmVsYXlfbG9nX25hbWUgJXMsIGdyb3VwX3JlbGF5X2xvZ19wb3MgJWxsdSBncm91cF9zb3VyY2VfbG9nX25hbWUgJXMsIGdyb3VwX3NvdXJjZV9sb2dfcG9zICVsbHUARXJyb3IgbG9va2luZyBmb3IgJXMuAFJlcGxpY2E6IE1UQSBncm91cCByZWNvdmVyeSBhcHBsaWVyIG1ldGFkYXRhIGdyb3VwX3NvdXJjZV9sb2dfbmFtZSAlcywgZXZlbnRfc291cmNlX2xvZ19wb3MgJWxsdS4ARXJyb3IgbG9va2luZyBmb3IgZmlsZSBhZnRlciAlcy4AVGhpcyBhbiBlcnJvciBjbnQgIT0gbXRhX2NoZWNrcG9pbnRfcGVyaW9kAEZhaWxlZCBkdXJpbmcgcmVwbGljYSB3b3JrZXIgdGhyZWFkIGNyZWF0aW9uJXMARmFpbGVkIGR1cmluZyByZXBsaWNhIHdvcmtlciB0aHJlYWQgY3JlYXRpb24lcyAoZXJybm89ICVkKQBGYWlsZWQgdG8gaW5pdCBwYXJ0aXRpb25zIGhhc2gAUmVwbGljYSBTUUwgdGhyZWFkIDogTkRCIDogVGFibGVzIG5vdCBhdmFpbGFibGUgYWZ0ZXIgJWx1IHNlY29uZHMuIENvbnNpZGVyIGluY3JlYXNpbmcgLS1uZGItd2FpdC1zZXR1cCB2YWx1ZQBSZXBsaWNhIFNRTCB0aHJlYWQlcyBpbml0aWFsaXplZCwgc3RhcnRpbmcgcmVwbGljYXRpb24gaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMsIHJlbGF5IGxvZyAnJXMnIHBvc2l0aW9uOiAlcwAnU1FMX1JFUExJQ0FfU0tJUF9DT1VOVEVSPSVsZCcgZXhlY3V0ZWQgYXQgcmVsYXlfbG9nX2ZpbGU9JyVzJywgcmVsYXlfbG9nX3Bvcz0nJWxkJywgc291cmNlX2xvZ19uYW1lPSclcycsIHNvdXJjZV9sb2dfcG9zPSclbGQnIGFuZCBuZXcgcG9zaXRpb24gYXQgcmVsYXlfbG9nX2ZpbGU9JyVzJywgcmVsYXlfbG9nX3Bvcz0nJWxkJywgc291cmNlX2xvZ19uYW1lPSclcycsIHNvdXJjZV9sb2dfcG9zPSclbGQnIABSZXBsaWNhIChhZGRpdGlvbmFsIGluZm8pOiAlcyBFcnJvcl9jb2RlOiBNWS0lMDZkAFJlcGxpY2E6ICVzIEVycm9yX2NvZGU6IE1ZLSUwNmQARXJyb3IgbG9hZGluZyB1c2VyLWRlZmluZWQgbGlicmFyeSwgcmVwbGljYSBTUUwgdGhyZWFkIGFib3J0ZWQuIEluc3RhbGwgdGhlIG1pc3NpbmcgbGlicmFyeSwgYW5kIHJlc3RhcnQgdGhlIHJlcGxpY2EgU1FMIHRocmVhZCB3aXRoICJTVEFSVCBSRVBMSUNBIi4gV2Ugc3RvcHBlZCBhdCBsb2cgJyVzJyBwb3NpdGlvbiAlcwBFcnJvciBydW5uaW5nIHF1ZXJ5LCByZXBsaWNhIFNRTCB0aHJlYWQgYWJvcnRlZC4gRml4IHRoZSBwcm9ibGVtLCBhbmQgcmVzdGFydCB0aGUgcmVwbGljYSBTUUwgdGhyZWFkIHdpdGggIlNUQVJUIFJFUExJQ0EiLiBXZSBzdG9wcGVkIGF0IGxvZyAnJXMnIHBvc2l0aW9uICVzAFJlcGxpY2EgU1FMIHRocmVhZCVzIGV4aXRpbmcsIHJlcGxpY2F0aW9uIHN0b3BwZWQgaW4gbG9nICclcycgYXQgcG9zaXRpb24gJXMAUmVhZCBpbnZhbGlkIGV2ZW50IGZyb20gc291cmNlOiAnJXMnLCBzb3VyY2UgY291bGQgYmUgY29ycnVwdCBidXQgYSBtb3JlIGxpa2VseSBjYXVzZSBvZiB0aGlzIGlzIGEgYnVnAFRoZSBxdWV1ZSBldmVudCBmYWlsZWQgZm9yIGNoYW5uZWwgJyVzJyBhcyBpdHMgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLgBBbiB1bmV4cGVjdGVkIGV2ZW50IHNlcXVlbmNlIHdhcyBkZXRlY3RlZCBieSB0aGUgSU8gdGhyZWFkIHdoaWxlIHF1ZXVpbmcgdGhlIGV2ZW50IHJlY2VpdmVkIGZyb20gc291cmNlICclcycgYmluYXJ5IGxvZyBmaWxlLCBhdCBwb3NpdGlvbiAlbGx1LgAnJXMnIGNhbiBub3QgYmUgdXNlZCBhcyBjbGllbnQgY2hhcmFjdGVyIHNldC4gJyVzJyB3aWxsIGJlIHVzZWQgYXMgZGVmYXVsdCBjbGllbnQgY2hhcmFjdGVyIHNldCB3aGlsZSBjb25uZWN0aW5nIHRvIHNvdXJjZS4AUmVwbGljYSVzOiBjb25uZWN0ZWQgdG8gc291cmNlICclc0AlczolZCcscmVwbGljYXRpb24gcmVzdW1lZCBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcwBuZXh0IGxvZyAnJXMnIGlzIGFjdGl2ZQBuZXh0IGxvZyAnJXMnIGlzIG5vdCBhY3RpdmUAUmVwbGljYSBTUUwgdGhyZWFkJXM6IEkvTyBlcnJvciByZWFkaW5nIGV2ZW50IChlcnJubzogJWQgIGN1cl9sb2ctPmVycm9yOiAlZCkARXJyb3IgcmVhZGluZyByZWxheSBsb2cgZXZlbnQlczogJXMAJ0NIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8lcyBleGVjdXRlZCcuIFByZXZpb3VzIHN0YXRlIHNvdXJjZV9ob3N0PSclcycsIHNvdXJjZV9wb3J0PSAldSwgc291cmNlX2xvZ19maWxlPSclcycsIHNvdXJjZV9sb2dfcG9zPSAlbGQsIHNvdXJjZV9iaW5kPSclcycuIE5ldyBzdGF0ZSBzb3VyY2VfaG9zdD0nJXMnLCBzb3VyY2VfcG9ydD0gJXUsIHNvdXJjZV9sb2dfZmlsZT0nJXMnLCBzb3VyY2VfbG9nX3Bvcz0gJWxkLCBzb3VyY2VfYmluZD0nJXMnLgBSZXBsaWNhOiBDYW5ub3QgY3JlYXRlIG5ldyBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSB3aGVuIHJlcG9zaXRvcmllcyBhcmUgb2YgdHlwZSBGSUxFLiBDb252ZXJ0IHJlcGxpY2EgcmVwb3NpdG9yaWVzIHRvIFRBQkxFIHRvIHJlcGxpY2F0ZSBmcm9tIG11bHRpcGxlIHNvdXJjZXMuAGxvZyAlcyBsaXN0ZWQgaW4gdGhlIGluZGV4LCBidXQgZmFpbGVkIHRvIHN0YXQuAENvdWxkIG5vdCBmaW5kIGZpcnN0IGxvZyB3aGlsZSBjb3VudGluZyByZWxheSBsb2cgc3BhY2UuAFVuYWJsZSB0byB1c2UgcmVwbGljYSdzIHRlbXBvcmFyeSBkaXJlY3RvcnkgJyVzJy4AUGF0aCAnJXMnIGlzIGEgZGlyZWN0b3J5IG5hbWUsIHBsZWFzZSBzcGVjaWZ5IGEgZmlsZSBuYW1lIGZvciAtLXJlbGF5LWxvZyBvcHRpb24uAFBhdGggJyVzJyBpcyBhIGRpcmVjdG9yeSBuYW1lLCBwbGVhc2Ugc3BlY2lmeSBhIGZpbGUgbmFtZSBmb3IgLS1yZWxheS1sb2ctaW5kZXggb3B0aW9uLgBOZWl0aGVyIC0tcmVsYXktbG9nIG5vciAtLXJlbGF5LWxvZy1pbmRleCB3ZXJlIHVzZWQ7IHNvIHJlcGxpY2F0aW9uIG1heSBicmVhayB3aGVuIHRoaXMgTXlTUUwgc2VydmVyIGFjdHMgYXMgYSByZXBsaWNhIGFuZCBoYXMgaGlzIGhvc3RuYW1lIGNoYW5nZWQhISBQbGVhc2UgdXNlICctLXJlbGF5LWxvZz0lcycgdG8gYXZvaWQgdGhpcyBwcm9ibGVtLgBGYWlsZWQgaW4gb3Blbl9pbmRleF9maWxlKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARmFpbGVkIGluIGluaXRfZ3RpZF9zZXRzKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARmFpbGVkIGluIG9wZW5fbG9nKCkgY2FsbGVkIGZyb20gUmVsYXlfbG9nX2luZm86OnJsaV9pbml0X2luZm8oKS4ARXJyb3Igd3JpdGluZyByZWxheSBsb2cgY29uZmlndXJhdGlvbi4AZ2V0X25kYl9ibG9ic192YWx1ZTogbXlfbWFsbG9jKCV1KSBmYWlsZWQATkRCOiBUaHJlYWQgaWQgJXUgdGltZWQgb3V0ICgzMHMpIHdhaXRpbmcgZm9yIGVwb2NoICV1LyV1IHRvIGJlIGhhbmRsZWQuICBQcm9ncmVzcyA6ICV1LyV1IC0+ICV1LyV1LgBOREI6IEluY29uc2lzdGVuY3kgZGV0ZWN0ZWQgaW4gZGlzdHJpYnV0ZWQgcHJpdmlsZWdlIHRhYmxlcy4gVGFibGUgJyVzLiVzJyBpcyBub3QgZGlzdHJpYnV0ZWQATkRCOiBDcmVhdGluZyAlcy4lcwBOREI6IEZsdXNoaW5nICVzLiVzAE5EQjogQ2xlYW5pbmcgc3RyYXkgdGFibGVzIGZyb20gZGF0YWJhc2UgJyVzJwBOREI6IERpc2NvdmVyZWQgbWlzc2luZyBkYXRhYmFzZSAnJXMnAE5EQjogRGlzY292ZXJlZCByZW1haW5pbmcgZGF0YWJhc2UgJyVzJwBOREI6IG5kYmNsdXN0ZXJfZmluZF9hbGxfZGF0YWJhc2VzIHJldHJ5OiAldSAtICVzAE5EQjogbmRiY2x1c3Rlcl9maW5kX2FsbF9kYXRhYmFzZXMgZmFpbDogJXUgLSAlcwBOREI6IHNraXBwaW5nIHNldHVwIHRhYmxlICVzLiVzLCBpbiBzdGF0ZSAlZABOREI6IGZhaWxlZCB0byBzZXR1cCB0YWJsZSAlcy4lcywgZXJyb3I6ICVkLCAlcwBOREI6IG1pc3NpbmcgZnJtIGZvciAlcy4lcywgZGlzY292ZXJpbmcuLi4ATkRCOiBtaXNtYXRjaCBpbiBmcm0gZm9yICVzLiVzLCBkaXNjb3ZlcmluZy4uLgBuZGJfYmlubG9nX3NldHVwOiBDbGVhbiB1cCBsZWZ0b3ZlcnMATkRCICVzOiB3YWl0aW5nIG1heCAldSBzZWMgZm9yICVzICVzLiAgZXBvY2hzOiAoJXUvJXUsJXUvJXUsJXUvJXUpICBpbmplY3RvciBwcm9jX2luZm86ICVzAE5EQiAlczogd2FpdGluZyBtYXggJXUgc2VjIGZvciAlcyAlcy4gIGVwb2NoczogKCV1LyV1LCV1LyV1LCV1LyV1KSAgaW5qZWN0b3IgcHJvY19pbmZvOiAlcyBtYXA6ICV4JTA4eABOREIgJXM6IGRpc3RyaWJ1dGluZyAlcyB0aW1lZCBvdXQuIElnbm9yaW5nLi4uAE5EQiAlczogbm90IHdhaXRpbmcgZm9yIGRpc3RyaWJ1dGluZyAlcwBOREI6IGRpc3RyaWJ1dGVkICVzLiVzKCV1LyV1KSB0eXBlOiAlcygldSkgcXVlcnk6ICclcycgdG8gJXglMDh4AE5EQjogZGlzdHJpYnV0aW9uIG9mICVzLiVzKCV1LyV1KSB0eXBlOiAlcygldSkgcXVlcnk6ICclcycgLSBjb21wbGV0ZSEATkRCIFNjaGVtYSBkaXN0OiBEYXRhIG5vZGU6ICVkIGZhaWxlZCwgc3Vic2NyaWJlciBiaXRtYXNrICV4JTA4eABOREIgU2NoZW1hIGRpc3Q6IERhdGEgbm9kZTogJWQgcmVwb3J0cyBzdWJzY3JpYmUgZnJvbSBub2RlICVkLCBzdWJzY3JpYmVyIGJpdG1hc2sgJXglMDh4AE5EQiBTY2hlbWEgZGlzdDogRGF0YSBub2RlOiAlZCByZXBvcnRzIHVuc3Vic2NyaWJlIGZyb20gbm9kZSAlZCwgc3Vic2NyaWJlciBiaXRtYXNrICV4JTA4eABOREIgQmlubG9nOiBDb3VsZCBub3QgZGlzY292ZXIgdGFibGUgJyVzLiVzJyBmcm9tIGJpbmxvZyBzY2hlbWEgZXZlbnQgJyVzJyBmcm9tIG5vZGUgJWQuIG15X2Vycm5vOiAlZABOREI6IHVua25vd24gdmFsdWUgZm9yIGJpbmxvZyBzaWduYWxsaW5nIDB4JVgsICVzIG5vdCBsb2dnZWQATkRCOiByZXBseSB0byAlcy4lcygldS8ldSkgZnJvbSAlcyB0byAleCUwOHgATkRCOiBDb3VsZCBub3QgcmVsZWFzZSBzbG9jayBvbiAnJXMuJXMnLCBFcnJvciBjb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgc2NoZW1hOiBDb3VsZCBub3QgZmluZCB0YWJsZSAnJXMuJXMnIGluIE5EQgBOREI6IERpc2NhcmRpbmcgZXZlbnQuLi5ubyBvYmo6ICVzICgldS8ldSkATkRCOiBEaXNjYXJkaW5nIGV2ZW50Li4ua2V5OiAlcyBub24gbWF0Y2hpbmcgaWQvdmVyc2lvbiBbJXUvJXVdICE9IFsldS8ldV0ATkRCOiBDTEVBUl9TTE9DSyBrZXk6ICVzKCV1LyV1KSAleCUwOHgsIGZyb20gJXMgdG8gJXglMDh4AE5EQiBCaW5sb2c6IFNraXBwaW5nIGxvY2FsbHkgZGVmaW5lZCB0YWJsZSAnJXMuJXMnIGZyb20gYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4ATkRCIEJpbmxvZzogaGFuZGxpbmcgb25saW5lIGFsdGVyL3JlbmFtZQBOREIgQmlubG9nOiBGYWlsZWQgdG8gcmUtb3BlbiBzaGFkb3cgdGFibGUgJXMuJXMATkRCIEJpbmxvZzogaGFuZGxpbmcgb25saW5lIGFsdGVyL3JlbmFtZSBkb25lAE5EQiBCaW5sb2c6IFNraXBwaW5nIGRyb3Agb2YgbG9jYWxseSBkZWZpbmVkIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAATkRCIEJpbmxvZzogU2tpcHBpbmcgcmVuYW1pbmcgbG9jYWxseSBkZWZpbmVkIHRhYmxlICclcy4lcycgZnJvbSBiaW5sb2cgc2NoZW1hIGV2ZW50ICclcycgZnJvbSBub2RlICVkLiAATkRCIEJpbmxvZzogU2tpcHBpbmcgZHJvcCBkYXRhYmFzZSAnJXMnIHNpbmNlIGl0IGNvbnRhaW5lZCBsb2NhbCB0YWJsZXMgYmlubG9nIHNjaGVtYSBldmVudCAnJXMnIGZyb20gbm9kZSAlZC4gAEdvdCBkaXN0X3ByaXYgZXZlbnQ6ICVzLCBmbHVzaGluZyBwcml2aWxlZ2VzAE5EQjogZ290IHNjaGVtYSBldmVudCBvbiAlcy4lcygldS8ldSkgcXVlcnk6ICclcycgdHlwZTogJXMoJWQpIG5vZGU6ICV1IHNsb2NrOiAleCUwOHgATkRCIHNjaGVtYTogU2tpcHBpbmcgb2xkIHNjaGVtYSBvcGVyYXRpb24oUkVOQU1FX1RBQkxFX05FVykgb24gJXMuJXMATkRCIFNjaGVtYSBkaXN0OiBjbHVzdGVyIGZhaWx1cmUgYXQgZXBvY2ggJXUvJXUuAE5EQiBCaW5sb2c6IG5kYiB0YWJsZXMgaW5pdGlhbGx5IHJlYWQgb25seSBvbiByZWNvbm5lY3QuAE5EQiBTY2hlbWEgZGlzdDogdW5rbm93biBldmVudCAldSwgaWdub3JpbmcuLi4ATkRCIEJpbmxvZzogT3BlbmluZyBuZGJfYmlubG9nX2luZGV4OiAlZCwgJyVzJwBOREIgQmlubG9nOiBVbmFibGUgdG8gbG9jayB0YWJsZSBuZGJfYmlubG9nX2luZGV4AE5EQiBCaW5sb2c6IEluamVjdGluZyByYW5kb20gd3JpdGUgZmFpbHVyZQBOREIgQmlubG9nOiBGYWlsZWQgd3JpdGluZyB0byBuZGJfYmlubG9nX2luZGV4IGZvciBlcG9jaCAldS8ldSAgb3JpZ19zZXJ2ZXJfaWQgJXUgb3JpZ19lcG9jaCAldS8ldSB3aXRoIGVycm9yICVkLgBOREIgQmlubG9nOiBXcml0aW5nIHJvdyAoJXMpIHRvIG5kYl9iaW5sb2dfaW5kZXggLSAlcwBOREIgQmlubG9nOiBGYWlsZWQgY29tbWl0dGluZyB0cmFuc2FjdGlvbiB0byBuZGJfYmlubG9nX2luZGV4IHdpdGggZXJyb3IgJWQuAE5EQiBCaW5sb2c6IEZhaWxlZCB3cml0aW5nIHRvIG5kYl9iaW5sb2dfaW5kZXggdGFibGUgd2hpbGUgcmV0cnlpbmcgYWZ0ZXIga2lsbCBkdXJpbmcgc2h1dGRvd24ATkRCOiBzZXJ2ZXIgaWQgc2V0IHRvIHplcm8gLSBjaGFuZ2VzIGxvZ2dlZCB0byBiaW4gbG9nIHdpdGggc2VydmVyIGlkIHplcm8gd2lsbCBiZSBsb2dnZWQgd2l0aCBhbm90aGVyIHNlcnZlciBpZCBieSByZXBsaWNhIG15c3FsZHMATkRCOiBzZXJ2ZXIgaWQgcHJvdmlkZWQgaXMgdG9vIGxhcmdlIHRvIGJlIHJlcHJlc2VudGVkIGluIG9wdF9zZXJ2ZXJfaWRfYml0cyBvciBpcyByZXNlcnZlZABOREI6IC0tbmRiLWxvZy10cmFuc2FjdGlvbi1pZCByZXF1aXJlcyB2MiBCaW5sb2cgcm93IGV2ZW50cyBidXQgc2VydmVyIGlzIHVzaW5nIHYxLgBOREI6IG5kYi1sb2ctYXBwbHktc3RhdHVzIGZvcmNpbmcgJXMuJXMgdG8gRlVMTCBVU0VfV1JJVEUATkRCIEJpbmxvZzogJXMAJXMAJXMATkRCIFJlcGxpY2E6IFRhYmxlICVzLiVzIDogUGFyc2UgZXJyb3Igb24gY29uZmxpY3QgZm4gOiAlcwBOREIgUmVwbGljYTogVGFibGUgJXMuJXMgOiAlcwBOREIgQmlubG9nOiBGYWlsZWQgdG8gZ2V0IHRhYmxlICVzIGZyb20gbmRiOiAlcywgJWQATkRCIEJpbmxvZzogTk9UIGxvZ2dpbmcgJXMATkRCIEJpbmxvZzogRkFJTEVEIENSRUFURSAoRElTQ09WRVIpIFRBQkxFIEV2ZW50OiAlcwBOREIgQmlubG9nOiBDUkVBVEUgKERJU0NPVkVSKSBUQUJMRSBFdmVudDogJXMATkRCIEJpbmxvZzogRElTQ09WRVIgVEFCTEUgRXZlbnQ6ICVzAE5EQiBCaW5sb2c6IGxvZ2dpbmcgb2YgdGFibGUgJXMgd2l0aCBCTE9CIGF0dHJpYnV0ZSBhbmQgbm8gUEsgaXMgbm90IHN1cHBvcnRlZABOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiBFdmVudDogJXMgIEVycm9yIENvZGU6ICVkICBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiAgQXR0ZW1wdCB0byBjb3JyZWN0IHdpdGggZHJvcCBmYWlsZWQuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBVbmFibGUgdG8gY3JlYXRlIGV2ZW50IGluIGRhdGFiYXNlLiAgQXR0ZW1wdCB0byBjb3JyZWN0IHdpdGggZHJvcCBvaywgYnV0IGNyZWF0ZSBmYWlsZWQuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgQmlubG9nOiBkaXNjb3ZlciByZXVzaW5nIG9sZCBldiBvcABOREIgQmlubG9nOiBDcmVhdGluZyBOZGJFdmVudE9wZXJhdGlvbiBmYWlsZWQgZm9yICVzAE5EQiBCaW5sb2c6IENyZWF0aW5nIE5kYkV2ZW50T3BlcmF0aW9uIGJsb2IgZmllbGQgJXUgaGFuZGxlcyBmYWlsZWQgKGNvZGU9JWQpIGZvciAlcwBOREIgQmlubG9nOiBuZGJldmVudC0+ZXhlY3V0ZSBmYWlsZWQgZm9yICVzOyAlZCAlcwBOREIgQmlubG9nOiBsb2dnaW5nICVzICglcywlcykATkRCIEJpbmxvZzogVW5hYmxlIHRvIGRyb3AgZXZlbnQgaW4gZGF0YWJhc2UuIEV2ZW50OiAlcyBFcnJvciBDb2RlOiAlZCBNZXNzYWdlOiAlcwBOREIgJXM6ICVzIHRpbWVkIG91dC4gSWdub3JpbmcuLi4ATkRCIEJpbmxvZzogdW5oYW5kbGVkIGVycm9yICVkIGZvciB0YWJsZSAlcwBOREIgQmlubG9nOiBjbHVzdGVyIGZhaWx1cmUgZm9yICVzIGF0IGVwb2NoICV1LyV1LgBOREIgQmlubG9nOiB1bmtub3duIG5vbiBkYXRhIGV2ZW50ICVkIGZvciAlcy4gSWdub3JpbmcuLi4ATkRCOiBCaW5sb2cgSW5qZWN0b3IgZGlzY2FyZGluZyByb3cgZXZlbnQgbWV0YSBkYXRhIGFzIHNlcnZlciBpcyB1c2luZyB2MSByb3cgZXZlbnRzLiAoJXUgJXgpAHJlbW92ZV9hbGxfZXZlbnRfb3BlcmF0aW9uczogUmVtYWluaW5nIG9wZW4gdGFibGVzOiAAICAlcy4lcywgdXNlX2NvdW50OiAldQBOREI6IENvdWxkIG5vdCBnZXQgYXBwbHkgc3RhdHVzIHNoYXJlAE5EQiBCaW5sb2c6IFNlcnZlciBzaHV0ZG93biBkZXRlY3RlZCB3aGlsZSB3YWl0aW5nIGZvciBuZGJjbHVzdGVyIHRvIHN0YXJ0Li4uAE5EQiBCaW5sb2c6IGNsdXN0ZXIgaGFzIGJlZW4gcmVzdGFydGVkIC0taW5pdGlhbCBvciB3aXRoIG9sZGVyIGZpbGVzeXN0ZW0uIG5kYl9sYXRlc3RfaGFuZGxlZF9iaW5sb2dfZXBvY2g6ICV1LyV1LCB3aGlsZSBjdXJyZW50IGVwb2NoOiAldS8ldS4gUkVTRVQgQklOQVJZIExPR1MgQU5EIEdUSURTIHNob3VsZCBiZSBpc3N1ZWQuIFJlc2V0dGluZyBuZGJfbGF0ZXN0X2hhbmRsZWRfYmlubG9nX2Vwb2NoLgBOREIgQmlubG9nOiBjbHVzdGVyIGhhcyByZWNvbm5lY3RlZC4gQ2hhbmdlcyB0byB0aGUgZGF0YWJhc2UgdGhhdCBvY2N1cnJlZCB3aGlsZSBkaXNjb25uZWN0ZWQgd2lsbCBub3QgYmUgaW4gdGhlIGJpbmxvZwBOREIgQmlubG9nOiBzdGFydGluZyBsb2cgYXQgZXBvY2ggJXUvJXUATkRCIEJpbmxvZzogbmRiIHRhYmxlcyB3cml0YWJsZQBOREIgQmlubG9nOiBTZXJ2ZXIgc2h1dGRvd24gZGV0ZWN0ZWQuLi4ATkRCIEJpbmxvZzogSnVzdCBsb3N0IHNjaGVtYSBjb25uZWN0aW9uLCBoYW5naW5nIGFyb3VuZABOREIgQmlubG9nOiAuLi5hbmQgb24gb3VyIHdheQBOREI6IGVycm9yICVsdSAoJXMpIG9uIGhhbmRsaW5nIGJpbmxvZyBzY2hlbWEgZXZlbnQATkRCIEJpbmxvZzogRmFpbGVkIHRvIGluamVjdCBhcHBseSBzdGF0dXMgd3JpdGUgcm93AE5EQiBCaW5sb2c6IEVycm9yIGR1cmluZyBST0xMQkFDSyBvZiBHQ0kgJXUvJXUuIEVycm9yOiAlZABOREIgQmlubG9nOiBFcnJvciBkdXJpbmcgQ09NTUlUIG9mIEdDSS4gRXJyb3I6ICVkAE5EQiBCaW5sb2c6IGxhdGVzdCB0cmFuc2FjdGlvbiBpbiBlcG9jaCAldS8ldSBub3QgaW4gYmlubG9nIGFzIGxhdGVzdCBoYW5kbGVkIGVwb2NoIGlzICV1LyV1AE5EQiBCaW5sb2c6IFJlbGVhc2UgZXh0cmEgc2hhcmUgcmVmZXJlbmNlcwBOREIgQmlubG9nOiByZW1haW5pbmcgb3BlbiB0YWJsZXM6IAAgICVzLiVzIHN0YXRlOiAldSB1c2VfY291bnQ6ICV1AFdyb25nIHRyZWU6IFBhcmVudCBkb2Vzbid0IHBvaW50IGF0IHBhcmVudABXcm9uZyB0cmVlOiBSb290IHNob3VsZCBiZSBibGFjawBXcm9uZyB0cmVlOiBGb3VuZCB0d28gcmVkIGluIGEgcm93AFdyb25nIHRyZWU6IEZvdW5kIHJpZ2h0ID09IGxlZnQAV3JvbmcgdHJlZTogSW5jb3JyZWN0IGJsYWNrLWNvdW50OiAlZCAtICVkAFVzZV9jb3VudDogV3JvbmcgY291bnQgJWx1IGZvciBvcmlnaW4gJXAAVXNlX2NvdW50OiBXcm9uZyBjb3VudCBmb3Iga2V5IGF0ICVwLCAlbHUgc2hvdWxkIGJlICVsdQBXcm9uZyBudW1iZXIgb2YgZWxlbWVudHM6ICV1IChzaG91bGQgYmUgJXUpIGZvciB0cmVlIGF0ICVwAEVycm9yIHJlYWRpbmcgcmVwbGljYSB3b3JrZXIgY29uZmlndXJhdGlvbgBFcnJvciB3cml0aW5nIHJlcGxpY2Egd29ya2VyIGNvbmZpZ3VyYXRpb24ARmFpbGVkIHRvIG9wZW4gcmVsYXkgbG9nICVzLCBlcnJvcjogJXMARXJyb3Igd2hlbiB3b3JrZXIgcmVhZCByZWxheSBsb2cgZXZlbnRzLHJlbGF5IGxvZyBuYW1lICVzLCBwb3NpdGlvbiAlbGx1AEZhaWxlZCB0byBmaW5kIG5leHQgcmVsYXkgbG9nIHdoZW4gcmV0cnlpbmcgdGhlIHRyYW5zYWN0aW9uLCBjdXJyZW50IHJlbGF5IGxvZyBpcyAlcwBNdWx0aS10aHJlYWRlZCByZXBsaWNhOiBDb29yZGluYXRvciBoYXMgd2FpdGVkICVsdSB0aW1lcyBoaXR0aW5nIHJlcGxpY2FfcGVuZGluZ19qb2JzX3NpemVfbWF4OyBjdXJyZW50IGV2ZW50IHNpemUgPSAlenUuAEZhaWxlZCB0byB3cml0ZSB0aGUgRFJPUCBzdGF0ZW1lbnQgZm9yIHRlbXBvcmFyeSB0YWJsZXMgdG8gYmluYXJ5IGxvZwBXaGVuIG9wZW5pbmcgSEVBUCB0YWJsZSwgY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSB0byB3cml0ZSAnREVMRVRFIEZST00gYCVzYC5gJXNgJyB0byB0aGUgYmluYXJ5IGxvZwBDb3VsZG4ndCByZXBhaXIgdGFibGU6ICVzLiVzAENvdWxkIG5vdCByZW1vdmUgdGVtcG9yYXJ5IHRhYmxlOiAnJXMnLCBlcnJvcjogJWQAU3lzdGVtIHRhYmxlICclLipzJyBpcyBleHBlY3RlZCB0byBiZSB0cmFuc2FjdGlvbmFsLgBFcnJvciB3cml0aW5nIHNvdXJjZSBjb25maWd1cmF0aW9uLgBFcnJvciByZWFkaW5nIHNvdXJjZSBjb25maWd1cmF0aW9uLgBTU0wgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBhcmUgaWdub3JlZCBiZWNhdXNlIHRoaXMgTXlTUUwgcmVwbGljYSB3YXMgY29tcGlsZWQgd2l0aG91dCBTU0wgc3VwcG9ydC4AUGx1Z2luICclcycgb2YgdHlwZSAlcyBmYWlsZWQgZGVpbml0aWFsaXphdGlvbgBQbHVnaW4gJyVzJyBoYXMgcmVmX2NvdW50PSVkIGFmdGVyIGRlaW5pdGlhbGl6YXRpb24uAFNodXR0aW5nIGRvd24gcGx1Z2luICclcycAUGx1Z2luICclcycgcmVnaXN0cmF0aW9uIGFzIGEgJXMgZmFpbGVkLgBDb3VsZCBub3Qgb3BlbiB0aGUgbXlzcWwucGx1Z2luIHRhYmxlLiBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAENvdWxkbid0IGxvYWQgcGx1Z2luIG5hbWVkICclcycgd2l0aCBzb25hbWUgJyVzJy4AcGx1Z2luLWxvYWQgcGFyYW1ldGVyIHRvbyBsb25nAFBsdWdpbiAnJXMnIHdpbGwgYmUgZm9yY2VkIHRvIHNodXRkb3duAFBsdWdpbiAnJXMnIGhhcyByZWZfY291bnQ9JWQgYWZ0ZXIgc2h1dGRvd24uAFVua25vd24gdmFyaWFibGUgdHlwZSBjb2RlIDB4JXggaW4gcGx1Z2luICclcycuAFNlcnZlciB2YXJpYWJsZSAlcyBvZiBwbHVnaW4gJXMgd2FzIGZvcmNlZCB0byBiZSByZWFkLW9ubHk6IHN0cmluZyB2YXJpYWJsZSB3aXRob3V0IHVwZGF0ZV9mdW5jIGFuZCBQTFVHSU5fVkFSX01FTUFMTE9DIGZsYWcATWlzc2luZyB2YXJpYWJsZSBuYW1lIGluIHBsdWdpbiAnJXMnLgBUaHJlYWQgbG9jYWwgdmFyaWFibGUgJyVzJyBub3QgYWxsb2NhdGVkIGluIHBsdWdpbiAnJXMnLgBPdXQgb2YgbWVtb3J5IGZvciBwbHVnaW4gJyVzJy4AQmFkIG9wdGlvbnMgZm9yIHBsdWdpbiAnJXMnLgBQYXJzaW5nIG9wdGlvbnMgZm9yIHBsdWdpbiAnJXMnIGZhaWxlZC4AUGx1Z2luICclcycgaXMgZGlzYWJsZWQuAFBsdWdpbiAnJXMnIGhhcyBjb25mbGljdGluZyBzeXN0ZW0gdmFyaWFibGVzAFNldHRpbmcgcGVyc2lzdGVudCBvcHRpb25zIGZvciBwbHVnaW4gJyVzJyBmYWlsZWQuAEZhaWxlZCBvbiBteV9uZXRfd3JpdGUsIHdyaXRpbmcgdG8gc3RkZXJyIGluc3RlYWQ6ICVzAFJldHJ5aW5nIHJlcGFpciBvZjogJyVzJyB3aXRob3V0IHF1aWNrAFJldHJ5aW5nIHJlcGFpciBvZjogJyVzJyB3aXRoIGtleWNhY2hlAEZvdW5kICVzIG9mICVzIHJvd3Mgd2hlbiByZXBhaXJpbmcgJyVzJwBXYXJuaW5nOiBPcHRpbWl6ZSB0YWJsZSBnb3QgZXJybm8gJWQgb24gJXMuJXMsIHJldHJ5aW5nAFdhcm5pbmc6IEVuYWJsaW5nIGtleXMgZ290IGVycm5vICVkIG9uICVzLiVzLCByZXRyeWluZwBDaGVja2luZyB0YWJsZTogICAnJXMnAFJlY292ZXJpbmcgdGFibGU6ICclcycARXJyb3IgaW4gY3JlYXRpbmcgVEFCTEVfU0hBUkUgZnJvbSAlcy5mcm0gZmlsZS4AVW5hYmxlIHRvIGFjcXVpcmUgbG9jayBvbiAlcy4lcwBFcnJvciBpbiBhbGxvY2F0aW9uIG1lbW9yeSBmb3IgVEFCTEUgb2JqZWN0LgBFcnJvciBpbiBjcmVhdGluZyBoYW5kbGVyIG9iamVjdCBmb3IgdGFibGUgJXMuJXMARXJyb3IgaW4gc2V0dGluZyBoYW5kbGVyIHJlZmVyZW5jZSBmb3IgdGFibGUgJXMuJXMAVW5hYmxlIHRvIGFjcXVpcmUgbG9jayBvbiB0YWJsZXNwYWNlIG5hbWUgJXMARXJyb3IgaW4gcHJvY2Vzc2luZyBnZW5lcmF0ZWQgY29sdW1ucyBmb3IgdGFibGUgJXMuJXMARXJyb3IgaW4gQ3JlYXRpbmcgREQgZW50cnkgZm9yICVzLiVzAEVycm9yIGluIGZldGNoaW5nICVzLiVzIHRhYmxlIGRhdGEgZnJvbSBkaWN0aW9uYXJ5AEVycm9yIGluIGZpeGluZyBTRSBkYXRhIGZvciAlcy4lcwBFcnJvciBpbiBjcmVhdGluZyBzdG9yZWQgcHJvZ3JhbSAnJXMuJXMnAFVuYWJsZSB0byBvcGVuIGRiLm9wdCBmaWxlICVzLiBVc2luZyBkZWZhdWx0IENoYXJhY3RlciBzZXQuAFVuYWJsZSB0byBpbnRpYWxpemUgSU8gY2FjaGUgdG8gb3BlbiBkYi5vcHQgZmlsZSAlcy4gAFVuYWJsZSB0byBpZGVudGlmeSB0aGUgY2hhcnNldCBpbiAlcy4gVXNpbmcgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0LgBkYi5vcHQgZmlsZSBub3QgZm91bmQgZm9yICVzIGRhdGFiYXNlLiBVc2luZyBkZWZhdWx0IENoYXJhY3RlciBzZXQuAEV2ZW50ICclcycuJyVzJzogaW52YWxpZCB2YWx1ZSBpbiBjb2x1bW4gbXlzcWwuZXZlbnQudGltZV96b25lLgBFdmVudCAnJXMnLiclcyc6IGhhcyBpbnZhbGlkIHRpbWUgem9uZSB2YWx1ZSAARXZlbnQgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiBteXNxbC5ldmVudC5jaGFyYWN0ZXJfc2V0X2NsaWVudC4ARXZlbnQgJyVzJy4nJXMnOiBpbnZhbGlkIHZhbHVlIGluIGNvbHVtbiBteXNxbC5ldmVudC5jb2xsYXRpb25fY29ubmVjdGlvbi4ARmFpbGVkIHRvIG9wZW4gbXlzcWwuZXZlbnQgVGFibGUuAFBhcnNpbmcgJyVzLiVzJyByb3V0aW5lIGJvZHkgZmFpbGVkLiVzAEZhaWxlZCB0byBvcGVuIG15c3FsLnByb2MgVGFibGUuAEZhaWxlZCB0byByZWFkIG15c3FsLnByb2MgdGFibGUuAEZvdW5kICVzIGZpbGUgaW4gbXlzcWwgc2NoZW1hLiBERCB3aWxsIGNyZWF0ZSAuaWJkIGZpbGUgd2l0aCBzYW1lIG5hbWUuIFBsZWFzZSByZW5hbWUgdGFibGUgYW5kIHN0YXJ0IHVwZ3JhZGUgcHJvY2VzcyBhZ2Fpbi4AVW5hYmxlIHRvIG9wZW4gdGhlIGRhdGEgZGlyZWN0b3J5ICVzIGR1cmluZyBjbGVhbiB1cCBhZnRlciB1cGdyYWRlIGZhaWxlZABGYWlsZWQgdG8gc2V0IHBhdGggJXMARmFpbGVkIHRvIG9wZW4gZGlyICVzAE5EQjogRm91bmQgZW1wdHkgbm9kZWlkIHNwZWNpZmllZCBpbiAtLW5kYi1jbHVzdGVyLWNvbm5lY3Rpb24tcG9vbC1ub2RlaWRzPSclcycuAE5EQjogQ291bGQgbm90IHBhcnNlICclcycgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IEludmFsaWQgbm9kZWlkICVkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBGb3VuZCBkdXBsaWNhdGUgbm9kZWlkICVkIGluIC0tbmRiLWNsdXN0ZXItY29ubmVjdGlvbi1wb29sLW5vZGVpZHM9JyVzJy4ATkRCOiBUaGUgc2l6ZSBvZiB0aGUgY2x1c3RlciBjb25uZWN0aW9uIHBvb2wgbXVzdCBiZSBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIG5vZGVpZHMgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IFRoZSBub2RlaWQgc3BlY2lmaWVkIGJ5IC0tbmRiLW5vZGVpZCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBmaXJzdCBub2RlaWQgaW4gLS1uZGItY2x1c3Rlci1jb25uZWN0aW9uLXBvb2wtbm9kZWlkcz0nJXMnLgBOREI6IHVzaW5nIG5vZGVpZCAldQBOREI6IGZhaWxlZCB0byBhbGxvY2F0ZSBnbG9iYWwgbmRiIGNsdXN0ZXIgY29ubmVjdGlvbgBOREI6IGZhaWxlZCB0byBhbGxvY2F0ZSBnbG9iYWwgbmRiIG9iamVjdABOREJbJXVdOiB1c2luZyBub2RlaWQgJXUATkRCWyV1XTogZmFpbGVkIHRvIGFsbG9jYXRlIGNsdXN0ZXIgY29ubmVjdCBvYmplY3QATkRCWyV1XTogc3RhcnRpbmcgY29ubmVjdCB0aHJlYWQATkRCWyV1XTogTm9kZUlEOiAlZCwgJXMATkRCWyV1XTogZmFpbGVkIHRvIHN0YXJ0IGNvbm5lY3QgdGhyZWFkAE5EQjogZXJyb3IgKCV1KSAlcwBJZ25vcmVkIHJlY2VpdmUgdGhyZWFkIENQVSBtYXNrLCBtYXNrIHRvbyBzaG9ydCwgJXUgQ1BVcyBuZWVkZWQgaW4gbWFzaywgb25seSAldSBDUFVzIHByb3ZpZGVkAEV2ZW50IEVycm9yOiBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSBjcmVhdGluZyBxdWVyeSBzdHJpbmcsIGJlZm9yZSB3cml0aW5nIGl0IGludG8gYmluYXJ5IGxvZy4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciB3aGlsZSBsb2FkaW5nIGZyb20gZGlzay4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciBnZXR0aW5nIGV2ZW50IG9iamVjdC4ARXZlbnQgU2NoZWR1bGVyOiBFcnJvciB3aGlsZSBsb2FkaW5nIGV2ZW50cyBmcm9tIG15c3FsLmV2ZW50cy5UaGUgdGFibGUgcHJvYmFibHkgY29udGFpbnMgYmFkIGRhdGEgb3IgaXMgY29ycnVwdGVkAFVuYWJsZSB0byBvYnRhaW4gbG9jayBmb3IgZHJvcHBpbmcgZXZlbnQgJXMgZnJvbSBzY2hlbWEgJXMAVW5hYmxlIHRvIGRyb3AgZXZlbnQgJXMgZnJvbSBzY2hlbWEgJXMAU2VydmVyIG92ZXJjb21lcyB0aGUgdGVtcG9yYXJ5ICdvdXQgb2YgbWVtb3J5JyBpbiAnJWQnIHRyaWVzIHdoaWxlIGF0dGFjaGluZyB0byBzZXNzaW9uIHRocmVhZCBkdXJpbmcgdGhlIGdyb3VwIGNvbW1pdCBwaGFzZS4AVW5hYmxlIHRvIHJlc2l6ZSBiaW5sb2cgSU9DQUNIRSBhdXhpbGlhcnkgZmlsZQBmaWxlICVzIHdhcyBub3QgcHVyZ2VkIGJlY2F1c2UgaXQgd2FzIGJlaW5nIHJlYWQgYnkgdGhyZWFkIG51bWJlciAldQBJL08gZXJyb3IgcmVhZGluZyB0aGUgaGVhZGVyIGZyb20gdGhlIGJpbmFyeSBsb2csIGVycm5vPSVkLCBpbyBjYWNoZSBjb2RlPSVkAEZhaWxlZCB0byBvcGVuIGxvZyAoZmlsZSAnJXMnLCBlcnJubyAlZCkARmFpbGVkIHRvIGNyZWF0ZSBhIGNhY2hlIG9uIGxvZyAoZmlsZSAnJXMnKQBMb2cgZmlsZW5hbWUgZXh0ZW5zaW9uIG51bWJlciBleGhhdXN0ZWQ6ICUwNmx1LiBQbGVhc2UgZml4IHRoaXMgYnkgYXJjaGl2aW5nIG9sZCBsb2dzIGFuZCB1cGRhdGluZyB0aGUgaW5kZXggZmlsZXMuAExvZyBmaWxlbmFtZSB0b28gbGFyZ2U6ICVzJXMgKCV6dSkuIFBsZWFzZSBmaXggdGhpcyBieSBhcmNoaXZpbmcgb2xkIGxvZ3MgYW5kIHVwZGF0aW5nIHRoZSBpbmRleCBmaWxlcy4ATmV4dCBsb2cgZXh0ZW5zaW9uOiAlbHUuIFJlbWFpbmluZyBsb2cgZmlsZW5hbWUgZXh0ZW5zaW9uczogJWx1LiBQbGVhc2UgY29uc2lkZXIgYXJjaGl2aW5nIHNvbWUgbG9ncy4AQ291bGQgbm90IG9wZW4gJXMgZm9yIGxvZ2dpbmcgKGVycm9yICVkKS4gVHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4ATVlTUUxfQklOX0xPRzo6b3Blbl9pbmRleF9maWxlIGZhaWxlZCB0byBzeW5jIHRoZSBpbmRleCBmaWxlLgBFcnJvciByZWFkaW5nIEdUSURzIGZyb20gcmVsYXlsb2c6ICVkACVsdSBldmVudHMgcmVhZCBpbiByZWxheWxvZyBmaWxlICclcycgZm9yIHVwZGF0aW5nIFJldHJpZXZlZF9HdGlkX1NldCBhbmQvb3IgSU8gdGhyZWFkIHRyYW5zYWN0aW9uIHBhcnNlciBzdGF0ZS4ARXJyb3IgcmVhZGluZyBHVElEcyBmcm9tIGJpbmFyeSBsb2c6ICVkAFJlYWQgJWx1IGV2ZW50cyBmcm9tIGJpbmFyeSBsb2cgZmlsZSAnJXMnIHRvIGRldGVybWluZSB0aGUgR1RJRHMgcHVyZ2VkIGZyb20gYmluYXJ5IGxvZ3MuAE1ZU1FMX0JJTl9MT0c6Om9wZW4gZmFpbGVkIHRvIGdlbmVyYXRlIG5ldyBmaWxlIG5hbWUuAE1ZU1FMX0JJTl9MT0c6Om9wZW4gZmFpbGVkIHRvIHN5bmMgdGhlIGluZGV4IGZpbGUuAENvdWxkIG5vdCB1c2UgJXMgZm9yIGxvZ2dpbmcgKGVycm9yICVkKS4gVHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4AV2hpbGUgcmVidWlsZGluZyBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gY2xvc2UgdGhlIGluZGV4IGZpbGUuAFdoaWxlIHJlYnVpbGRpbmcgaW5kZXggZmlsZSAlczogRmFpbGVkIHRvIGRlbGV0ZSB0aGUgZXhpc3RpbmcgaW5kZXggZmlsZS4gSXQgY291bGQgYmUgdGhhdCBmaWxlIGlzIGJlaW5nIHVzZWQgYnkgc29tZSBvdGhlciBwcm9jZXNzLgBXaGlsZSByZWJ1aWxkaW5nIGluZGV4IGZpbGUgJXM6IEZhaWxlZCB0byByZW5hbWUgdGhlIG5ldyBpbmRleCBmaWxlIHRvIHRoZSBleGlzdGluZyBpbmRleCBmaWxlLgBBZnRlciByZWJ1aWxkaW5nIHRoZSBpbmRleCBmaWxlICVzOiBGYWlsZWQgdG8gb3BlbiB0aGUgaW5kZXggZmlsZS4ATVlTUUxfQklOX0xPRzo6YWRkX2xvZ190b19pbmRleCBmYWlsZWQgdG8gYXBwZW5kIGxvZyBmaWxlIG5hbWU6ICVzLCB0byBjcmFzaCBzYWZlIGluZGV4IGZpbGUuAEZhaWxlZCB0byBsb2NhdGUgb2xkIGJpbmxvZyBvciByZWxheSBsb2cgZmlsZXMARmFpbGVkIHRvIGRlbGV0ZSBmaWxlICclcycATVlTUUxfQklOX0xPRzo6c2V0X2NyYXNoX3NhZmVfaW5kZXhfZmlsZV9uYW1lIGZhaWxlZCB0byBzZXQgZmlsZSBuYW1lLgBNWVNRTF9CSU5fTE9HOjpvcGVuX2NyYXNoX3NhZmVfaW5kZXhfZmlsZSBmYWlsZWQgdG8gb3BlbiB0ZW1wb3JhcnkgaW5kZXggZmlsZS4AbmV4dCBsb2cgZXJyb3I6ICVkICBvZmZzZXQ6ICVzICBsb2c6ICVzIGluY2x1ZGVkOiAlZAAlcyBmYWlsZWQgdG8gb3BlbiB0aGUgY3Jhc2ggc2FmZSBpbmRleCBmaWxlLgAlcyBmYWlsZWQgdG8gY29weSBpbmRleCBmaWxlIHRvIGNyYXNoIHNhZmUgaW5kZXggZmlsZS4AJXMgZmFpbGVkIHRvIGNsb3NlIHRoZSBjcmFzaCBzYWZlIGluZGV4IGZpbGUuACVzIGZhaWxlZCB0byBtb3ZlIGNyYXNoIHNhZmUgaW5kZXggZmlsZSB0byBpbmRleCBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIHdhcyBjYWxsZWQgd2l0aCBmaWxlICVzIG5vdCBsaXN0ZWQgaW4gdGhlIGluZGV4LgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBzeW5jIHRoZSBpbmRleCBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBjb3B5ICVzIHRvIHJlZ2lzdGVyIGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIGZsdXNoIHJlZ2lzdGVyIGZpbGUuAE1ZU1FMX0JJTl9MT0c6OnB1cmdlX2xvZ3MgZmFpbGVkIHRvIHVwZGF0ZSB0aGUgaW5kZXggZmlsZQBNWVNRTF9CSU5fTE9HOjpwdXJnZV9sb2dzIGZhaWxlZCB0byBwcm9jZXNzIHJlZ2lzdGVyZWQgZmlsZXMgdGhhdCB3b3VsZCBiZSBwdXJnZWQuAE1ZU1FMX0JJTl9MT0c6OnNldF9wdXJnZV9pbmRleF9maWxlX25hbWUgZmFpbGVkIHRvIHNldCBmaWxlIG5hbWUuAE1ZU1FMX0JJTl9MT0c6Om9wZW5fcHVyZ2VfaW5kZXhfZmlsZSBmYWlsZWQgdG8gb3BlbiByZWdpc3RlciBmaWxlLgBNWVNRTF9CSU5fTE9HOjpwdXJnZV9pbmRleF9lbnRyeSBmYWlsZWQgdG8gcmVpbml0IHJlZ2lzdGVyIGZpbGUgZm9yIHJlYWQATVlTUUxfQklOX0xPRzo6cHVyZ2VfaW5kZXhfZW50cnkgZXJyb3IgJWQgcmVhZGluZyBmcm9tIHJlZ2lzdGVyIGZpbGUuAEZhaWxlZCB0byBleGVjdXRlIG15c3FsX2ZpbGVfc3RhdCBvbiBmaWxlICclcycARmFpbGVkIHRvIGRlbGV0ZSBsb2cgZmlsZSAnJXMnOyBjb25zaWRlciBleGFtaW5pbmcgY29ycmVzcG9uZGVuY2Ugb2YgeW91ciBiaW5sb2cgaW5kZXggZmlsZSB0byB0aGUgYWN0dWFsIGJpbmxvZyBmaWxlcwBGYWlsZWQgdG8gZGVsZXRlIGZpbGUgJyVzJyBhbmQgcmVhZCB0aGUgYmlubG9nIGluZGV4IGZpbGUARmFpbGVkIHRvIGRlbGV0ZSBsb2cgZmlsZSAnJXMnACVzIEFuIGluY2lkZW50IGV2ZW50IGhhcyBiZWVuIHdyaXR0ZW4gdG8gdGhlIGJpbmFyeSBsb2cgd2hpY2ggd2lsbCBzdG9wIHRoZSByZXBsaWNhcy4AZmluZF9sb2dfcG9zKCkgZmFpbGVkIChlcnJvcjogJWQpAFJlY292ZXJpbmcgYWZ0ZXIgYSBjcmFzaCB1c2luZyAlcwBGYWlsZWQgdG8gb3BlbiB0aGUgY3Jhc2hlZCBiaW5sb2cgZmlsZSB3aGVuIHNvdXJjZSBzZXJ2ZXIgaXMgcmVjb3ZlcmluZyBpdC4ARmFpbGVkIHRvIHRyaW0gdGhlIGNyYXNoZWQgYmlubG9nIGZpbGUgd2hlbiBzb3VyY2Ugc2VydmVyIGlzIHJlY292ZXJpbmcgaXQuAENyYXNoZWQgYmlubG9nIGZpbGUgJXMgc2l6ZSBpcyAlbGx1LCBidXQgcmVjb3ZlcmVkIHVwIHRvICVsbHUuIEJpbmxvZyB0cmltbWVkIHRvICVsbHUgYnl0ZXMuAEZhaWxlZCB0byBjbGVhciBMT0dfRVZFTlRfQklOTE9HX0lOX1VTRV9GIGZvciB0aGUgY3Jhc2hlZCBiaW5sb2cgZmlsZSB3aGVuIHNvdXJjZSBzZXJ2ZXIgaXMgcmVjb3ZlcmluZyBpdC4ARmFpbGVkIHRvIHJ1biAnYWZ0ZXJfc3luYycgaG9va3MAJXMgSGVuY2UgdHVybmluZyBsb2dnaW5nIG9mZiBmb3IgdGhlIHdob2xlIGR1cmF0aW9uIG9mIHRoZSBNeVNRTCBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgc2h1dGRvd24gdGhlIE15U1FMIHNlcnZlciBhbmQgcmVzdGFydCBpdC4ARmFpbGVkIHRvIHJ1biAnYWZ0ZXJfZmx1c2gnIGhvb2tzAENyYXNoIHJlY292ZXJ5IGZhaWxlZC4gRWl0aGVyIGNvcnJlY3QgdGhlIHByb2JsZW0gKGlmIGl0J3MsIGZvciBleGFtcGxlLCBvdXQgb2YgbWVtb3J5IGVycm9yKSBhbmQgcmVzdGFydCwgb3IgZGVsZXRlIChvciByZW5hbWUpIGJpbmFyeSBsb2cgYW5kIHN0YXJ0IG15c3FsZCB3aXRoIC0tdGMtaGV1cmlzdGljLXJlY292ZXI9e2NvbW1pdHxyb2xsYmFja30AVGhlIGZvbGxvd2luZyB3YXJuaW5nIHdhcyBzdXBwcmVzc2VkICVkIHRpbWVzIGR1cmluZyB0aGUgbGFzdCAlZCBzZWNvbmRzIGluIHRoZSBlcnJvciBsb2cATkRCOiAlcwBOREIgJXM6ICVzAE5EQjogVW5hYmxlIHRvIHB1cmdlICVzLiVzIEZpbGU9JXMgKGZhaWxlZCB0byBzZXR1cCB0aGQpAFVua25vd24gY29sbGF0aW9uICMlbHUuAHN5bnRheCBlcnJvciBpbiBpbm5vZGJfbG9nX2dyb3VwX2hvbWVfZGlyAHN5bnRheCBlcnJvciBpbiBpbm5vZGJfdW5kb19kaXJlY3RvcnkASW5ub0RCOiBpbm5vZGJfYnVmZmVyX3Bvb2xfZmlsZW5hbWUgY2Fubm90IGhhdmUgY29sb24gKDopIGluIHRoZSBmaWxlIG5hbWUuAElubm9EQjogSW52YWxpZCBwYWdlIHNpemU9JWx1LgBJbm5vREI6IGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0X2x3bSBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0LiBTZXR0aW5nIGlubm9kYl9tYXhfZGlydHlfcGFnZXNfcGN0X2x3bSB0byAlbGYASW5ub0RCOiBpbm5vZGJfaW9fY2FwYWNpdHkgY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiBpbm5vZGJfaW9fY2FwYWNpdHlfbWF4LiBTZXR0aW5nIGlubm9kYl9pb19jYXBhY2l0eSB0byAlbHUAJXMgYW5kICVzIGZpbGUgbmFtZXMgc2VlbSB0byBiZSB0aGUgc2FtZS4AVHJhbnNhY3Rpb24gbm90IHJlZ2lzdGVyZWQgZm9yIE15U1FMIDJQQywgYnV0IHRyYW5zYWN0aW9uIGlzIGFjdGl2ZQBNeVNRTCBpcyBjbG9zaW5nIGEgY29ubmVjdGlvbiB0aGF0IGhhcyBhbiBhY3RpdmUgSW5ub0RCIHRyYW5zYWN0aW9uLiAlbGx1IHJvdyBtb2RpZmljYXRpb25zIHdpbGwgcm9sbCBiYWNrLgBJbm5vREI6IGZhaWwgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBpbmRleCB0cmFuc2xhdGlvbiB0YWJsZS4gTnVtYmVyIG9mIEluZGV4OiVsdSwgYXJyYXkgc2l6ZTolbHUAQ2Fubm90IGZpbmQgaW5kZXggJXMgaW4gSW5ub0RCIGluZGV4IGRpY3Rpb25hcnkuAEZvdW5kIGluZGV4ICVzIHdob3NlIGNvbHVtbiBpbmZvIGRvZXMgbm90IG1hdGNoIHRoYXQgb2YgTXlTUUwuAEZhaWxlZCB0byBvcGVuIHRhYmxlICVzLgBCdWlsZCBJbm5vREIgaW5kZXggdHJhbnNsYXRpb24gdGFibGUgZm9yIFRhYmxlICVzIGZhaWxlZABUYWJsZSAlcyBoYXMgYSBwcmltYXJ5IGtleSBpbiBJbm5vREIgZGF0YSBkaWN0aW9uYXJ5LCBidXQgbm90IGluIE15U1FMIQBUYWJsZSAlcyBoYXMgbm8gcHJpbWFyeSBrZXkgaW4gSW5ub0RCIGRhdGEgZGljdGlvbmFyeSwgYnV0IGhhcyBvbmUgaW4gTXlTUUwhIElmIHlvdSBjcmVhdGVkIHRoZSB0YWJsZSB3aXRoIGEgTXlTUUwgdmVyc2lvbiA8IDMuMjMuNTQgYW5kIGRpZCBub3QgZGVmaW5lIGEgcHJpbWFyeSBrZXksIGJ1dCBkZWZpbmVkIGEgdW5pcXVlIGtleSB3aXRoIGFsbCBub24tTlVMTCBjb2x1bW5zLCB0aGVuIE15U1FMIGludGVybmFsbHkgdHJlYXRzIHRoYXQga2V5IGFzIHRoZSBwcmltYXJ5IGtleS4gWW91IGNhbiBmaXggdGhpcyBlcnJvciBieSBkdW1wICsgRFJPUCArIENSRUFURSArIHJlaW1wb3J0IG9mIHRoZSB0YWJsZS4AVGFibGUgJXMga2V5X3VzZWRfb25fc2NhbiBpcyAlbHUgZXZlbiB0aG91Z2ggdGhlcmUgaXMgbm8gcHJpbWFyeSBrZXkgaW5zaWRlIElubm9EQi4AUGFydGl0aW9uIHRhYmxlICVzIG9wZW5lZCBhZnRlciBjb252ZXJ0aW5nIHRvIGxvd2VyIGNhc2UuIFRoZSB0YWJsZSBtYXkgaGF2ZSBiZWVuIG1vdmVkIGZyb20gYSBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtLiBQbGVhc2UgcmVjcmVhdGUgdGhlIHRhYmxlIGluIHRoZSBjdXJyZW50IGZpbGUgc3lzdGVtLgBDYW5ub3QgcmVwbGFjZSBlcnJvciBtZXNzYWdlICglcywlcywlcykgIiVzIiB3aXRoICIlcyI7IHdyb25nIG51bWJlciBvciB0eXBlIG9mICUlIHN1YnNpdHV0aW9ucy4AVGFibGUgZm9yIGVycm9yIG1lc3NhZ2UgcmVwbGFjZW1lbnRzIGNvdWxkIG5vdCBiZSBmb3VuZCBvciByZWFkLCBvciBvbmUgb3IgbW9yZSByZXBsYWNlbWVudHMgY291bGQgbm90IGJlIGFwcGxpZWQuACVzOiAlcwBUYWJsZSAnJS0xOTJzJzogRGVsZXRlIGZyb20gcGFydCAlZCBmYWlsZWQgd2l0aCBlcnJvciAlZC4gQnV0IGl0IHdhcyBhbHJlYWR5IGluc2VydGVkIGludG8gcGFydCAlZCwgd2hlbiBtb3ZpbmcgdGhlIG1pc3BsYWNlZCByb3chIFBsZWFzZSBtYW51YWxseSBmaXggdGhlIGR1cGxpY2F0ZSByb3c6ICVzAENvbW1hbmQgJyVzJyBjYW5ub3QgYmUgYWJvcnRlZC4gVGhlIHRyaWdnZXIgZXJyb3Igd2FzICglZCkgWyVzXTogJXMARXZlbnQgJyVzJyBjYW5ub3QgYmUgYWJvcnRlZC4gVGhlIHRyaWdnZXIgZXJyb3Igd2FzICglZCkgWyVzXTogJXMAJXMuIFRoZSB0cmlnZ2VyIGVycm9yIHdhcyAoJWQpIFslc106ICVzAFJlcGxpY2EgU1FMOiBDb25maWd1cmF0aW9uIHdpdGggbnVtYmVyIG9mIHJlcGxpY2F0aW9uIHNvdXJjZXMgPSAldScgaXMgbm90IHN1cHBvcnRlZCB3aGVuIGFwcGx5aW5nIHRvIE5kYgBSZXBsaWNhIFNRTDogQ29uZmlndXJhdGlvbiAncmVwbGljYV9wYXJhbGxlbF93b3JrZXJzID0gJWx1JyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYXBwbHlpbmcgdG8gTmRiAE5EQiAlczogZGlzdHJpYnV0aW5nICVzIGVycjogJXUAU3RvcmluZyBNeVNRTCB1c2VyIG5hbWUgb3IgcGFzc3dvcmQgaW5mb3JtYXRpb24gaW4gdGhlIGNvbm5lY3Rpb24gbWV0YWRhdGEgcmVwb3NpdG9yeSBpcyBub3Qgc2VjdXJlIGFuZCBpcyB0aGVyZWZvcmUgbm90IHJlY29tbWVuZGVkLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgdGhlIFVTRVIgYW5kIFBBU1NXT1JEIGNvbm5lY3Rpb24gb3B0aW9ucyBmb3IgU1RBUlQgUkVQTElDQTsgc2VlIHRoZSAnU1RBUlQgUkVQTElDQSBTeW50YXgnIGluIHRoZSBNeVNRTCBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uAEZMVVNIIFJFTEFZIExPR1MgY2Fubm90IGJlIHBlcmZvcm1lZCBvbiBjaGFubmVsICclLS4xOTJzJy4AUmVwbGljYSBjaGFubmVsICclcycgZG9lcyBub3QgZXhpc3QuAENhbid0IGZpbmQgc3ltYm9sICclLS4xMjhzJyBpbiBsaWJyYXJ5LgBDYW4ndCBvcGVuIHNoYXJlZCBsaWJyYXJ5ICclLS4xOTJzJyAoZXJybm86ICVkICUtLjE5MnMpLgBUaHJlYWQgcHJpb3JpdHkgYXR0cmlidXRlIHNldHRpbmcgaW4gUmVzb3VyY2UgR3JvdXAgU1FMIHNoYWxsIGJlIGlnbm9yZWQgZHVlIHRvIHVuc3VwcG9ydGVkIHBsYXRmb3JtIG9yIGluc3VmZmljaWVudCBwcml2aWxlZ2UuAE9wdGlvbiBiaW5sb2dfY2FjaGVfc2l6ZSAoJWx1KSBpcyBncmVhdGVyIHRoYW4gbWF4X2JpbmxvZ19jYWNoZV9zaXplICglbHUpOyBzZXR0aW5nIGJpbmxvZ19jYWNoZV9zaXplIGVxdWFsIHRvIG1heF9iaW5sb2dfY2FjaGVfc2l6ZS4AT3B0aW9uIGJpbmxvZ19zdG10X2NhY2hlX3NpemUgKCVsdSkgaXMgZ3JlYXRlciB0aGFuIG1heF9iaW5sb2dfc3RtdF9jYWNoZV9zaXplICglbHUpOyBzZXR0aW5nIGJpbmxvZ19zdG10X2NhY2hlX3NpemUgZXF1YWwgdG8gbWF4X2JpbmxvZ19zdG10X2NhY2hlX3NpemUuAENhbid0IGdlbmVyYXRlIGEgdW5pcXVlIGxvZy1maWxlbmFtZSAlLS4yMDBzLigxLTk5OSkuAEVycm9yIHJlYWRpbmcgZmlsZSAnJS0uMjAwcycgKGVycm5vOiAlZCAtICVzKQBFcnJvciB3cml0aW5nIGZpbGUgJyUtLjIwMHMnIChlcnJubzogJWQgLSAlcykAJXMgU3RhdGVtZW50OiAlcwAlczogRm9yY2luZyBjbG9zZSBvZiB0aHJlYWQgJWxkICB1c2VyOiAnJS0uNDhzJy4AJXM6IFNodXRkb3duIGNvbXBsZXRlIChteXNxbGQgJXMpICAlcy4AQ2Fubm90IGhhdmUgc2FtZSBiYXNlIG5hbWUgJyVzJyBmb3IgYm90aCBiaW5hcnkgYW5kIHJlbGF5IGxvZ3MuIFBsZWFzZSBjaGVjayAlcyAoZGVmYXVsdCAnJXMnIGlmIC0tbG9nLWJpbiBvcHRpb24gaXMgbm90IHVzZWQsIGRlZmF1bHQgJyVzJyBpZiAtLWxvZy1iaW4gb3B0aW9uIGlzIHVzZWQgd2l0aG91dCBhcmd1bWVudCkgYW5kICVzIChkZWZhdWx0ICclcycpIG9wdGlvbnMgdG8gZW5zdXJlIHRoZXkgZG8gbm90IGNvbmZsaWN0LgBHVElEX01PREUgPSBPTiByZXF1aXJlcyBFTkZPUkNFX0dUSURfQ09OU0lTVEVOQ1kgPSBPTi4AWW91IGhhdmUgbm90IHByb3ZpZGVkIGEgbWFuZGF0b3J5IHNlcnZlci1pZC4gU2VydmVycyBpbiBhIHJlcGxpY2F0aW9uIHRvcG9sb2d5IG11c3QgaGF2ZSB1bmlxdWUgc2VydmVyLWlkcy4gUGxlYXNlIHJlZmVyIHRvIHRoZSBwcm9wZXIgc2VydmVyIHN0YXJ0LXVwIHBhcmFtZXRlcnMgZG9jdW1lbnRhdGlvbi4AQWJvcnRlZCBjb25uZWN0aW9uICV1IHRvIGRiOiAnJS0uMTkycycgdXNlcjogJyUtLjQ4cycgaG9zdDogJyUtLjI1NXMnICglLS42NHMpLgAnTk9fWkVST19EQVRFJywgJ05PX1pFUk9fSU5fREFURScgYW5kICdFUlJPUl9GT1JfRElWSVNJT05fQllfWkVSTycgc3FsIG1vZGVzIHNob3VsZCBiZSB1c2VkIHdpdGggc3RyaWN0IG1vZGUuIFRoZXkgd2lsbCBiZSBtZXJnZWQgd2l0aCBzdHJpY3QgbW9kZSBpbiBhIGZ1dHVyZSByZWxlYXNlLgBAQEdMT0JBTC5HVElEX1BVUkdFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AQEBHTE9CQUwuR1RJRF9FWEVDVVRFRCB3YXMgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJy4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIHVzZSAlcyBpbnN0ZWFkLgBUcmlnZ2VycyBmb3IgdGFibGUgYCUtLjY0c2AuYCUtLjY0c2AgaGF2ZSBubyBjcmVhdGlvbiBjb250ZXh0ACclLS4xOTJzJyBoYXMgYW4gb2xkIGZvcm1hdCwgeW91IHNob3VsZCByZS1jcmVhdGUgdGhlICclcycgb2JqZWN0KHMpAFZpZXcgYCUtLjY0c2AuYCUtLjY0c2AgaGFzIG5vIGNyZWF0aW9uIGNvbnRleHQATG9uZyBkYXRhYmFzZSBuYW1lIGFuZCBpZGVudGlmaWVyIGZvciBvYmplY3QgcmVzdWx0ZWQgaW4gYSBwYXRoIGxlbmd0aCB0b28gbG9uZyBmb3IgdGFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIHRoZSBwYXRoIGxpbWl0IGZvciB5b3VyIE9TLgBUYWJsZSB1cGdyYWRlIHJlcXVpcmVkLiBQbGVhc2UgZG8gIlJFUEFJUiBUQUJMRSBgJS0uNjRzYCIgb3IgZHVtcC9yZWxvYWQgdG8gZml4IGl0IQBHb3QgZXJyb3IgJWQgLSAnJS0uMTkycycgZnJvbSBzdG9yYWdlIGVuZ2luZS4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJwBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclLS40OHMnQCclLS42NHMnICh1c2luZyBwYXNzd29yZDogJXMpAEFjY2VzcyBkZW5pZWQgZm9yIHVzZXIgJyUtLjQ4cydAJyUtLjY0cycuIEFjY291bnQgaXMgbG9ja2VkLgBZb3VyIHBhc3N3b3JkIGhhcyBleHBpcmVkLiBUbyBsb2cgaW4geW91IG11c3QgY2hhbmdlIGl0IHVzaW5nIGEgY2xpZW50IHRoYXQgc3VwcG9ydHMgZXhwaXJlZCBwYXNzd29yZHMuAFN0b3JhZ2UgZW5naW5lICclcycgZG9lcyBub3Qgc3VwcG9ydCBzeXN0ZW0gdGFibGVzLiBbJXMuJXNdLgBTb3J0IGFib3J0ZWQAJXM6IHJlYWR5IGZvciBjb25uZWN0aW9ucy4gVmVyc2lvbjogJyVzJyAgc29ja2V0OiAnJXMnICBwb3J0OiAlZCAgJXMuAFVua25vd24gbG9jYWxlOiAnJS0uNjRzJy4AVW5rbm93biBjb2xsYXRpb246ICclLS42NHMnLgBPdXQgb2YgbWVtb3J5OyBjaGVjayBpZiBteXNxbGQgb3Igc29tZSBvdGhlciBwcm9jZXNzIHVzZXMgYWxsIGF2YWlsYWJsZSBtZW1vcnk7IGlmIG5vdCwgeW91IG1heSBoYXZlIHRvIHVzZSAndWxpbWl0JyB0byBhbGxvdyBteXNxbGQgdG8gdXNlIG1vcmUgbWVtb3J5IG9yIHlvdSBjYW4gYWRkIG1vcmUgc3dhcCBzcGFjZQBPdXQgb2YgbWVtb3J5OyByZXN0YXJ0IHNlcnZlciBhbmQgdHJ5IGFnYWluIChuZWVkZWQgJWQgYnl0ZXMpAENPTExBVElPTiAnJXMnIGlzIG5vdCB2YWxpZCBmb3IgQ0hBUkFDVEVSIFNFVCAnJXMnAEZhaWxlZCB0byBzZXQgJXMgYXQgb3IgYXJvdW5kICIlcyIgLS0gc2VydmljZSBpcyB2YWxpZCwgYnV0IGNhbiBub3QgYmUgaW5pdGlhbGl6ZWQ7IHBsZWFzZSBjaGVjayBpdHMgY29uZmlndXJhdGlvbiBhbmQgbWFrZSBzdXJlIGl0IGNhbiByZWFkIGl0cyBpbnB1dChzKSBhbmQgd3JpdGUgdG8gaXRzIG91dHB1dChzKS4AR2VuZXJhdGluZyBhIG5ldyBVVUlEOiAlcy4ARmFpbGVkIHRvIGdldCBhYnNvbHV0ZSBwYXRoIG9mIHByb2dyYW0gZXhlY3V0YWJsZSAlcwBGYWlsZWQgdG8gYm9vdHN0cmFwIHBlcmZvcm1hbmNlIHNjaGVtYSBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBGYWlsZWQgdG8gZGVpbml0IHBlcmZvcm1hbmNlIHNjaGVtYSBjb21wb25lbnRzIGluZnJhc3RydWN0dXJlLgBDb3VsZCBub3Qgb3BlbiBkdXBsaWNhdGUgZmQgZm9yICVzOiAlcy4AU3lzdGVtIHZpZXdzIGluaXRpYWxpemF0aW9uIGZhaWxlZC4AUmVzb3VyY2UgZ3JvdXAgcG9zdCBpbml0aWFsaXphdGlvbiBmYWlsZWQuAFJlc291cmNlIEdyb3VwIHN1YnN5c3RlbSBpbml0aWFsaXphdGlvbiBmYWlsZWQuAEZhaWxlZCB0byBzdGFydCBteXNxbGQgZGFlbW9uLiBDaGVjayBteXNxbGQgZXJyb3IgbG9nLgBDYW5ub3QgY2hhbmdlIHRvIHJvb3QgZGlyZWN0b3J5OiAlcy4ARmFpbGVkIHRvIGJvb3RzdHJhcCBwZXJzaXN0ZW50IHByaXZpbGVnZXMuAEJhc2VkaXIgc2V0IHRvICVzLgBDb3VsZCBub3QgYWRkIHdpbGQgZG8gdGFibGUgcnVsZSAnJXMnIQBDb3VsZCBub3QgYWRkIHdpbGQgaWdub3JlIHRhYmxlIHJ1bGUgJyVzJyEAVGhlIHByaXZpbGVnZSBzeXN0ZW0gZmFpbGVkIHRvIGluaXRpYWxpemUgY29ycmVjdGx5LiBGb3IgY29tcGxldGUgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0byB1cGdyYWRlIE15U1FMIHRvIGEgbmV3IHZlcnNpb24gcGxlYXNlIHNlZSB0aGUgJ1VwZ3JhZGluZyBNeVNRTCcgc2VjdGlvbiBmcm9tIHRoZSBNeVNRTCBtYW51YWwuAENhbm5vdCBzZXQgc2VydmljZXMgIiVzIiByZXF1ZXN0ZWQgaW4gLS1sb2ctZXJyb3Itc2VydmljZXMsIHVzaW5nIGRlZmF1bHRzLgBQZXJmb3JtYW5jZSBzY2hlbWEgdGFibGVzIGluaXRpYWxpemF0aW9uIGZhaWxlZC4AVGhlIHRyYW5zYWN0aW9uX3dyaXRlX3NldF9leHRyYWN0aW9uIG11c3QgYmUgc2V0IHRvICVzIHdoZW4gYmlubG9nX3RyYW5zYWN0aW9uX2RlcGVuZGVuY3lfdHJhY2tpbmcgaXMgJXMuAEludmFsaWQgcmVwbGljYXRpb24gdGltZXN0YW1wczogb3JpZ2luYWwgY29tbWl0IHRpbWVzdGFtcCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbW1lZGlhdGUgY29tbWl0IHRpbWVzdGFtcC4gVGhpcyBtYXkgYmUgYW4gaXNzdWUgaWYgZGVsYXllZCByZXBsaWNhdGlvbiBpcyBhY3RpdmUuIE1ha2Ugc3VyZSB0aGF0IHNlcnZlcnMgaGF2ZSB0aGVpciBjbG9ja3Mgc2V0IHRvIHRoZSBjb3JyZWN0IHRpbWUuIE5vIGZ1cnRoZXIgbWVzc2FnZSB3aWxsIGJlIGVtaXR0ZWQgdW50aWwgYWZ0ZXIgdGltZXN0YW1wcyBiZWNvbWUgdmFsaWQgYWdhaW4uAFRoZSByZXBsaWNhdGlvbiB0aW1lc3RhbXBzIGhhdmUgcmV0dXJuZWQgdG8gbm9ybWFsIHZhbHVlcy4AJXMuAEZhaWxlZCB0byB3cml0ZSBhbiBpbmNpZGVudCBldmVudCBpbnRvIHN0bXRfY2FjaGUuAFJlbGF5bG9nIGZpbGUgJXMgc2l6ZSB3YXMgJWxsdSwgYnV0IHdhcyB0cnVuY2F0ZWQgYXQgJWxsdS4AVW5hYmxlIHRvIHB1cmdlIHJlbGF5IGxvZyBmaWxlcy4gJXM6JXMuAFJlcGxpY2E6IGZhaWxlZCBpbiBjcmVhdGluZyBmaWx0ZXIgZm9yIGNoYW5uZWwgJyVzJy4AUmVwbGljYTogZmFpbGVkIGluIGNvcHlpbmcgdGhlIGdsb2JhbCBmaWx0ZXJzIHRvIGl0cyBvd24gcGVyLWNoYW5uZWwgZmlsdGVycyBvbiBjb25maWd1cmF0aW9uIGZvciBjaGFubmVsICclcycuAFRoZXJlIGFyZSBwZXItY2hhbm5lbCByZXBsaWNhdGlvbiBmaWx0ZXIocykgY29uZmlndXJlZCBmb3IgY2hhbm5lbCAnJS4xOTJzJyB3aGljaCBkb2VzIG5vdCBleGlzdC4gVGhlIGZpbHRlcihzKSBoYXZlIGJlZW4gZGlzY2FyZGVkLgBUaGUgc3lzdGVtIHRhYmxlIG15c3FsLmdsb2JhbF9ncmFudHMgaXMgbWlzc2luZy4gUGxlYXNlIHBlcmZvcm0gdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlLgBBQ0wgdGFibGUgbXlzcWwuJS4qcyBtaXNzaW5nLiBTb21lIG9wZXJhdGlvbnMgbWF5IGZhaWwuAENhbid0IHNldCBtYW5kYXRvcnlfcm9sZSAlc0AlczogQW5vbnltb3VzIGF1dGhvcml6YXRpb24gSURzIGFyZSBub3QgYWxsb3dlZCBhcyByb2xlcy4AQ2FuJ3Qgc2V0IG1hbmRhdG9yeV9yb2xlOiBUaGVyZSdzIG5vIHN1Y2ggYXV0aG9yaXphdGlvbiBJRCAlc0Alcy4AVGFibGUgJyUtMTkycycgZmFpbGVkIHRvIG1vdmUvaW5zZXJ0IGEgcm93IGZyb20gcGFydCAlZCBpbnRvIHBhcnQgJWQ6ICVzLgBTa2lwcGVkIHVwZGF0aW5nIHJlc291cmNlIGdyb3VwIG1ldGFkYXRhIGluIElubm9EQiByZWFkIG9ubHkgbW9kZS4ARmFpbGVkIHRvIHBlcnNpc3QgcmVzb3VyY2UgZ3JvdXAgJXMgdG8gRGF0YSBEaWN0aW9uYXJ5LgBGYWlsZWQgdG8gZGVzZXJpYWxpemUgcmVzb3VyY2UgZ3JvdXAgJXMuAFVwZGF0ZSBvZiByZXNvdXJjZSBncm91cCAlcyBmYWlsZWQuAFZhbGlkYXRpb24gb2YgcmVzb3VyY2UgZ3JvdXAgJXMgZmFpbGVkLiBSZXNvdXJjZSBncm91cCBpcyBkaXNhYmxlZC4AVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgUmVzb3VyY2UgR3JvdXAgJXMuAEZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHJlc291cmNlIGdyb3VwIGhhc2guAEZhaWxlZCB0byBhZGQgcmVzb3VyY2UgZ3JvdXAgJXMgdG8gcmVzb3VyY2UgZ3JvdXAgbWFwLgBSZXNvdXJjZSBncm91cCBmZWF0dXJlIGlzIGRpc2FibGVkLiAoU2VydmVyIGlzIGNvbXBpbGVkIHdpdGggRElTQUJMRV9QU0lfVEhSRUFEKS4AVW5hYmxlIHRvIGFwcGx5IHJlc291cmNlIGdyb3VwIGNvbnRyb2xsZXIgJXMuAFVuYWJsZSB0byBhY3F1aXJlIGxvY2sgb24gdGhlIHJlc291cmNlIGdyb3VwICVzLiBIaW50IHRvIHN3aXRjaCByZXNvdXJjZSBncm91cCBzaGFsbCBiZSBpZ25vcmVkLgBQRlMgJXMgbm90aWZpY2F0aW9uIGZ1bmN0aW9uIHJlZ2lzdHJhdGlvbiBmYWlsZWQuAFVuYWJsZSB0byBiaW5kIHRocmVhZCBpZCAlbGx1IHRvIGNwdSBpZCAldSAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgBVbmFibGUgdG8gYmluZCB0aHJlYWQgaWQgJWxsdSB0byBjcHUgaWRzIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFVuYmluZCB0aHJlYWQgaWQgJWxsdSBmYWlsZWQuIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAFNldHRpbmcgdGhyZWFkIHByaW9yaXR5ICVkIHRvIHRocmVhZCBpZCAlbGx1IGZhaWxlZC4gKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4AVW5hYmxlIHRvIGRldGVybWluZSBDQVBfU1lTX05JQ0UgY2FwYWJpbGl0eS4AJXMgZmFpbGVkOiBGYWlsZWQgdG8gZ2V0IGhhbmRsZSBmb3IgdGhyZWFkICVsbHUuAFJldHJpZXZhbCBvZiB0aHJlYWQgcHJpb3JpdHkgdW5zdXBwb3J0ZWQgb24gJXMuAFVuYWJsZSB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDUFVzLgBSZXNvdXJjZSBncm91cCBmZWF0dXJlIHNoYWxsIG5vdCBiZSBhdmFpbGFibGUuIEluY29tcGF0aWJsZSB0aHJlYWQgaGFuZGxpbmcgb3B0aW9uLgBJbnZhbGlkIHRocmVhZCBwcmlvcml0eSAlZCBmb3IgYSAlcyByZXNvdXJjZSBncm91cC4gQWxsb3dlZCByYW5nZSBpcyBbJWQsICVkXS4AYmluZF90b19jcHUgZmFpbGVkOiBwcm9jZXNzb3JfYmluZCBmb3IgY3B1aWQgJXUgZmFpbGVkIChlcnJvciBjb2RlICVkIC0gJS0uMTkycykuAGJpbmRfdG9fY3B1IGZhaWxlZDogcHJvY2Vzc29yX2JpbmQgZm9yIHRocmVhZCAlJWxseCB3aXRoIGNwdSBpZCAldSAoZXJyb3IgY29kZSAlZCAtICUtLjE5MnMpLgAlcyBmYWlsZWQ6IHByb2Nlc3Nvcl9hZmZpbml0eSBmYWlsZWQgKGVycm9yIGNvZGUgJWQgLSAlLS4xOTJzKS4ARXJyb3IgaW4gcmVuYW1pbmcgbXlzcWxfaW5kZXhfc3RhdHMuaWJkLgBFcnJvciBpbiBvcGVuaW5nIGRhdGEgZGlyZWN0b3J5ICVzLgBFcnJvciBpbiBmZXRjaGluZyBsaXN0IG9mIHRhYmxlc3BhY2VzLgBFcnJvciBpbiBhY3F1aXJpbmcgVGFibGVzcGFjZSBmb3IgU0RJIGluc2VydGlvbiAlcy4ARXJyb3IgaW4gcmVzb2x2aW5nIEVuZ2luZSBuYW1lIGZvciB0YWJsZXNwYWNlICVzIHdpdGggZW5naW5lICVzLgBFcnJvciBpbiBjcmVhdGluZyBTREkgZm9yICVzIHRhYmxlc3BhY2UuAEVycm9yIGluIHN0b3JpbmcgU0RJIGZvciAlcyB0YWJsZXNwYWNlLgBFcnJvciBpbiBmZXRjaGluZyBsaXN0IG9mIHRhYmxlcy4ARmluaXNoZWQgcG9wdWxhdGluZyBEYXRhIERpY3Rpb25hcnkgdGFibGVzIHdpdGggZGF0YS4AQ291bGQgbm90IG9wZW4gdGhlIHVwZ3JhZGUgaW5mbyBmaWxlICclcycgaW4gdGhlIE15U1FMIHNlcnZlcnMgZGF0YWRpciwgZXJybm86ICVkLgBDb3VsZCBub3QgY2xvc2UgdGhlIHVwZ3JhZGUgaW5mbyBmaWxlICclcycgaW4gdGhlIE15U1FMIHNlcnZlcnMgZGF0YWRpciwgZXJybm86ICVkLgBHb3QgZXJyb3IgJWQgZnJvbSBTRSB3aGlsZSBtaWdyYXRpbmcgdGFibGVzcGFjZXMuAEVycm9yIGluIGNyZWF0aW5nIFRBQkxFIHN0YXRpc3RpY3MgZW50cnkuIEZpeCBzdGF0aXN0aWNzIGRhdGEgYnkgdXNpbmcgQU5BTFlaRSBjb21tYW5kLgBGaW5pc2hlZCBtaWdyYXRpbmcgVEFCTEUgc3RhdGlzdGljcyBkYXRhLgBFcnJvciBpbiBjcmVhdGluZyBJbmRleCBzdGF0aXN0aWNzIGVudHJ5LiBGaXggc3RhdGlzdGljcyBkYXRhIGJ5IHVzaW5nIEFOQUxZWkUgY29tbWFuZC4ARmluaXNoZWQgbWlncmF0aW5nIElOREVYIHN0YXRpc3RpY3MgZGF0YS4ARmFpbGVkIHRvIGZpbmQgdmFsaWQgZGF0YSBkaXJlY3RvcnkuAFN0YXJ0aW5nIHVwZ3JhZGUgb2YgZGF0YSBkaXJlY3RvcnkuAEZhaWxlZCB0byBpbml0aWFsaXplIEREIFN0b3JhZ2UgRW5naW5lLgBGb3VuZCBwYXJ0aWFsbHkgdXBncmFkZWQgREQuIEFib3J0aW5nIHVwZ3JhZGUgYW5kIGRlbGV0aW5nIGFsbCBERCB0YWJsZXMuIFN0YXJ0IHRoZSB1cGdyYWRlIHByb2Nlc3MgYWdhaW4uAEZvdW5kIHBhcnRpYWxseSB1cGdyYWRlZCBERC4gVXBncmFkZSB3aWxsIGNvbnRpbnVlIGFuZCBzdGFydCB0aGUgc2VydmVyLgBFcnJvciBpbiB1cGdyYWRpbmcgZW5naW5lIGxvZ3MuAEVycm9yIGluIHVwZGF0aW5nIFNESSBpbmZvcm1hdGlvbi4AU2tpcCB1cGRhdGluZyAlcyBtZXRhZGF0YSBpbiBJbm5vREIgcmVhZC1vbmx5IG1vZGUuAENyZWF0ZWQgc3lzdGVtIHZpZXdzIHdpdGggSV9TIHZlcnNpb24gJWQuAFVua25vd24gZXJyb3IgZGV0ZWN0ZWQgJWQgaW4gaGFuZGxlci4ARXJyb3IgaW4gTG9nX2V2ZW50OjpyZWFkX2xvZ19ldmVudCgpOiAnJXMnLCBkYXRhX2xlbjogJWx1LCBldmVudF90eXBlOiAlZC4AVGhlIHJvdyBkYXRhIGlzIGdyZWF0ZXIgdGhhbiA0R0IsIHdoaWNoIGlzIHRvbyBiaWcgdG8gd3JpdGUgdG8gdGhlIGJpbmFyeSBsb2cuAFVuYWJsZSB0byBjb25zdHJ1Y3QgRFJPUCBFVkVOVCBTUUwgcXVlcnkgc3RyaW5nLgBVbmFibGUgdG8gYmlubG9nIGRyb3AgZXZlbnQgJXMuJXMuAEZhaWxlZCB0byBzdGFydCByZXBsaWNhIHRocmVhZHMgZm9yIGNoYW5uZWwgJyVzJy4AJXMlcy4ARmFpbGVkIHJlZ2lzdGVyaW5nIG9uIHNvdXJjZSwgcmVjb25uZWN0aW5nIHRvIHRyeSBhZ2FpbiwgbG9nICclcycgYXQgcG9zaXRpb24gJXMuICVzLgBSZXBsaWNhIEkvTyB0aHJlYWQga2lsbGVkIGR1cmluZyBvciBhZnRlciByZWNvbm5lY3QuAFNvbWUgb2YgdGhlIGNoYW5uZWxzIGFyZSBub3QgY3JlYXRlZC9pbml0aWFsaXplZCBwcm9wZXJseS4gQ2hlY2sgZm9yIGFkZGl0aW9uYWwgbWVzc2FnZXMgYWJvdmUuIFlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIHN0YXJ0IHJlcGxpY2F0aW9uIG9uIHRob3NlIGNoYW5uZWxzIHVudGlsIHRoZSBpc3N1ZSBpcyByZXNvbHZlZCBhbmQgdGhlIHNlcnZlciByZXN0YXJ0ZWQuAEZhaWxlZCB0byBhZGQgYSByZXBsaWNhdGlvbiBmaWx0ZXIgaW50byBmaWx0ZXIgbWFwIGZvciBjaGFubmVsICclLjE5MnMnLgBUaGVyZSBhcmUgcGVyLWNoYW5uZWwgcmVwbGljYXRpb24gZmlsdGVyKHMpIGNvbmZpZ3VyZWQgZm9yIGdyb3VwIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2hpY2ggaXMgZGlzYWxsb3dlZC4gVGhlIGZpbHRlcihzKSBoYXZlIGJlZW4gZGlzY2FyZGVkLgBUaGVyZSBhcmUgcGVyLWNoYW5uZWwgcmVwbGljYXRpb24gZmlsdGVyKHMpIGNvbmZpZ3VyZWQgZm9yIGNoYW5uZWwgJyUuMTkycycgd2hpY2ggZG9lcyBub3QgZXhpc3QuIFRoZSBmaWx0ZXIocykgaGF2ZSBiZWVuIGRpc2NhcmRlZC4AQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYnVpbGRpbmcgZG9fdGFibGUgYW5kIGlnbm9yZV90YWJsZSBydWxlcyB0byBoYXNoZXMgZm9yIHBlci1jaGFubmVsIGZpbHRlci4AQ2xvbmUgcGx1Z2luIGNhbm5vdCBiZSBsb2FkZWQuAENsb25lIEhhbmRsZXIgZXhpc3RzLgBDb3VsZCBub3QgY3JlYXRlIENsb25lIEhhbmRsZXIuAFRoZSBDWUNMRSB0aW1lciBpcyBub3QgYXZhaWxhYmxlLiBXQUlUIGV2ZW50cyBpbiB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hIHdpbGwgbm90IGJlIHRpbWVkLgBUaGUgTkFOT1NFQ09ORCB0aW1lciBpcyBub3QgYXZhaWxhYmxlLiBJRExFL1NUQUdFL1NUQVRFTUVOVC9UUkFOU0FDVElPTiBldmVudHMgaW4gdGhlIHBlcmZvcm1hbmNlX3NjaGVtYSB3aWxsIG5vdCBiZSB0aW1lZC4AVGhlIE1JQ1JPU0VDT05EIHRpbWVyIGlzIG5vdCBhdmFpbGFibGUuIElETEUvU1RBR0UvU1RBVEVNRU5UL1RSQU5TQUNUSU9OIGV2ZW50cyBpbiB0aGUgcGVyZm9ybWFuY2Vfc2NoZW1hIHdpbGwgbm90IGJlIHRpbWVkLgBGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciAlenUgY2h1bmtzIGVhY2ggb2Ygc2l6ZSAlenUgZm9yIGJ1ZmZlciAnJXMnIGR1ZSB0byBvdmVyZmxvdy4ARmFpbGVkIHRvIGFsbG9jYXRlICV6dSBieXRlcyBmb3IgYnVmZmVyICclcycgZHVlIHRvIG91dC1vZi1tZW1vcnkuAElubm9EQiBjb3VsZCBub3QgZmluZCBpbmRleCAlcyBrZXkgbm8gJXUgZm9yIHRhYmxlICVzIHRocm91Z2ggaXRzIGluZGV4IHRyYW5zbGF0aW9uIHRhYmxlLgBDYW5ub3QgZmluZCBpbmRleCAlcyBpbiBJbm5vREIgaW5kZXggdHJhbnNsYXRpb24gdGFibGUuAElubm9EQiBjb3VsZCBub3QgZmluZCBrZXkgbm8gJXUgd2l0aCBuYW1lICVzIGZyb20gZGljdCBjYWNoZSBmb3IgdGFibGUgJXMuAElubm9EQjogY2hhbmdlX2FjdGl2ZV9pbmRleCgldSkgZmFpbGVkLgBTdG9yZWQgcmVmIGxlbiBpcyAlbHUsIGJ1dCB0YWJsZSByZWYgbGVuIGlzICVsdS4ATXlTUUwgaXMgdHJ5aW5nIHRvIGNyZWF0ZSBhIGNvbHVtbiBwcmVmaXggaW5kZXggZmllbGQsIG9uIGFuIGluYXBwcm9wcmlhdGUgZGF0YSB0eXBlLiBUYWJsZSBuYW1lICVzLCBjb2x1bW4gbmFtZSAlcy4AQ2Fubm90IGNyZWF0ZSB0YWJsZSAlcy4ARm91bmQgaW5kZXggJXMgaW4gSW5ub0RCIGluZGV4IGxpc3QgYnV0IG5vdCBpdHMgTXlTUUwgaW5kZXggbnVtYmVyLiBJdCBjb3VsZCBiZSBhbiBJbm5vREIgaW50ZXJuYWwgaW5kZXguAElubm9EQjogVGFibGUgJXMgY29udGFpbnMgJWx1IGluZGV4ZXMgaW5zaWRlIElubm9EQiwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gdGhlIG51bWJlciBvZiBpbmRleGVzICV1IGRlZmluZWQgaW4gTXlTUUwuAFRhYmxlICVzIGNvbnRhaW5zIGZld2VyIGluZGV4ZXMgaW5zaWRlIElubm9EQiB0aGFuIGFyZSBkZWZpbmVkIGluIHRoZSBNeVNRTC4gSGF2ZSB5b3UgbWl4ZWQgdXAgd2l0aCBkYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWZmZXJlbnQgaW5zdGFsbGF0aW9uPwBJbmRleCAlcyBvZiAlcyBoYXMgJWx1IGNvbHVtbnMgdW5pcXVlIGluc2lkZSBJbm5vREIsIGJ1dCBNeVNRTCBpcyBhc2tpbmcgc3RhdGlzdGljcyBmb3IgJWx1IGNvbHVtbnMuIEhhdmUgeW91IG1peGVkIGRhdGEgZGljdGlvbmFyeSBmcm9tIGRpZmZlcmVudCBpbnN0YWxsYXRpb24/AE1vbml0b3IgY291bnRlciAnJXMnIGNhbm5vdCBiZSB0dXJuZWQgb24vb2ZmIGluZGl2aWR1YWxseS4gUGxlYXNlIHVzZSBpdHMgbW9kdWxlIG5hbWUgdG8gdHVybiBvbi9vZmYgdGhlIGNvdW50ZXJzIGluIHRoZSBtb2R1bGUgYXMgYSBncm91cC4ARGVmYXVsdCB2YWx1ZSBpcyBub3QgZGVmaW5lZCBmb3IgdGhpcyBzZXQgb3B0aW9uLiBQbGVhc2Ugc3BlY2lmeSBjb3JyZWN0IGNvdW50ZXIgb3IgbW9kdWxlIG5hbWUuAElubm9EQjogTW9uaXRvciAlcyBpcyBhbHJlYWR5IGVuYWJsZWQuAEludmFsaWQgbW9uaXRvciBjb3VudGVyIDogJXMuAExvYWRMaWJyYXJ5KCIlcyIpIGZhaWxlZDogR2V0TGFzdEVycm9yIHJldHVybnMgJWx1LgAlcy4AJXMuACVzLgAlcy4AJXMuACVzLgBVbmFibGUgdG8gd2FpdCBmb3IgcHJvY2VzcyAlbGxkLgBVbmFibGUgdG8gZGV0ZXJtaW5lIGlmIGRhZW1vbiBpcyBydW5uaW5nOiAlcyAocmM9JWQpLgAlcwBbRkFUQUxdIElubm9EQjogJXMAVGhlIHN5bnRheCAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQuAFRoZSBzeW50YXggJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AJyVzJyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4AJXMAQmluYXJ5IGxvZ2dpbmcgbm90IHBvc3NpYmxlLiBNZXNzYWdlOiAlcy4ARmFpbGVkIHRvIHNldCBwZXJzaXN0ZWQgb3B0aW9ucy4AQ2Fubm90IGFjcXVpcmUgc3BlY2lmaWVkIHNlcnZpY2UgaW1wbGVtZW50YXRpb246ICclLjE5MnMnLgBJbnZhbGlkIFZDUFUgcmFuZ2UgJXUtJXUuAEludmFsaWQgY3B1IGlkICV1LgBHb3QgZXJyb3IgJWQgZHVyaW5nIEZMVVNIX0xPR1MuAFByb2JsZW0gd2hpbGUgZHJvcHBpbmcgZGF0YWJhc2UuIENhbid0IHJlbW92ZSBkYXRhYmFzZSBkaXJlY3RvcnkgKCVzKS4gUGxlYXNlIHJlbW92ZSBpdCBtYW51YWxseS4AVGhlIG9wdGlvbiBleHBpcmVfbG9nc19kYXlzIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggb3B0aW9uIGJpbmxvZ19leHBpcmVfbG9nc19zZWNvbmRzLiBUaGVyZWZvcmUsIHZhbHVlIG9mIGV4cGlyZV9sb2dzX2RheXMgaXMgaWdub3JlZC4AbWFsZm9ybWVkIG9yIHZlcnkgb2xkIHJlbGF5IGxvZyB3aGljaCBkb2VzIG5vdCBoYXZlIEZvcm1hdERlc2NyaXB0b3IuAFVwZ3JhZGUgb2YgdmlldyAnJXMuJXMnIGZhaWxlZC4gUmUtY3JlYXRlIHRoZSB2aWV3IHdpdGggdGhlIGV4cGxpY2l0IGNvbHVtbiBuYW1lIGxlc3NlciB0aGFuIDY0IGNoYXJhY3RlcnMuAFRhYmxlIHVwZ3JhZGUgcmVxdWlyZWQgZm9yIGAlLS42NHNgLmAlLS42NHNgLiBQbGVhc2UgZHVtcC9yZWxvYWQgdGFibGUgdG8gZml4IGl0IQBFcnJvciBpbiB1cGRhdGluZyB2ZXJzaW9uIG51bWJlciBpbiAlcyB0YWJsZXNwYWNlLgBLZXlyaW5nIG1pZ3JhdGlvbiBmYWlsZWQuAEtleXJpbmcgbWlncmF0aW9uIHN1Y2Nlc3NmdWwuAFJlY2VpdmVkIFJFU1RBUlQgZnJvbSB1c2VyICVzLiAgUmVzdGFydGluZyBteXNxbGQgKFZlcnNpb246ICVzKS4ARGlmZmVyZW50IGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgc2V0dGluZ3MgZm9yIHNlcnZlciAoJyV1JykgYW5kIGRhdGEgZGljdGlvbmFyeSAoJyV1JykuAERhdGEgZGljdGlvbmFyeSBpbml0aWFsaXppbmcgdmVyc2lvbiAnJXUnLgBEYXRhIGRpY3Rpb25hcnkgcmVzdGFydGluZyB2ZXJzaW9uICcldScuAERhdGEgZGljdGlvbmFyeSB1cGdyYWRpbmcgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4ARGF0YSBkaWN0aW9uYXJ5IHVwZ3JhZGUgcHJvaGliaXRlZCBieSB0aGUgY29tbWFuZCBsaW5lIG9wdGlvbiAnLS1ub19kZF91cGdyYWRlJy4AVXBncmFkaW5nIHRoZSBkYXRhIGRpY3Rpb25hcnkgZnJvbSBkaWN0aW9uYXJ5IHZlcnNpb24gJyV1JyBpcyBub3Qgc3VwcG9ydGVkLgBVcGdyYWRpbmcgdGhlIGRhdGEgZGljdGlvbmFyeSBmYWlsZWQsIHRlbXBvcmFyeSBzY2hlbWEgbmFtZSAnJS0uMTkycycgbm90IGF2YWlsYWJsZS4ARGF0YSBkaWN0aW9uYXJ5IG1pbm9yIGRvd25ncmFkZSBmcm9tIHZlcnNpb24gJyV1JyB0byAnJXUnLgBNaW5vciBkb3duZ3JhZGUgb2YgdGhlIERhdGEgZGljdGlvbmFyeSBmcm9tIGRpY3Rpb25hcnkgdmVyc2lvbiAnJXUnIGlzIG5vdCBzdXBwb3J0ZWQuAE5vIGRhdGEgZGljdGlvbmFyeSB2ZXJzaW9uIG51bWJlciBmb3VuZC4AVGhyZWFkIHBvb2wgbm90IHN1cHBvcnRlZCwgcmVxdWlyZXMgYSBtaW5pbXVtIG9mICVzLgB0aHJlYWRfcG9vbF9zaXplPTAgbWVhbnMgdGhyZWFkIHBvb2wgZGlzYWJsZWQsIEFsbG93ZWQgcmFuZ2Ugb2YgdGhyZWFkX3Bvb2xfc2l6ZSBpcyAlZC0lZC4AdGhyZWFkX3Bvb2xfc2l6ZT0lbHUgaXMgdG9vIGhpZ2gsICVkIGlzIG1heGltdW0sIHRocmVhZCBwb29sIGlzIGRpc2FibGVkLiBBbGxvd2VkIHJhbmdlIG9mIHRocmVhZF9wb29sX3NpemUgaXMgJWQtJWQuAHRocmVhZF9wb29sX2FsZ29yaXRobSBjYW4gYmUgc2V0IHRvIDAgYW5kIDEsIDAgaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGxvdyBjb25jdXJyZW5jeSBhbGdvcml0aG0sIDEgbWVhbnMgYSBoaWdoIGNvbmN1cnJlbmN5IGFsZ29yaXRobS4AdGhyZWFkX3Bvb2xfc3RhbGxfbGltaXQgY2FuIGJlICVkIGF0IG1pbmltdW0gYW5kICVkIGF0IG1heGltdW0sIHNtYWxsZXIgdmFsdWVzIHdvdWxkIHJlbmRlciB0aGUgdGhyZWFkIHBvb2wgZmFpcmx5IHVzZWxlc3MgYW5kIGhpZ2hlciB2YWx1ZXMgY291bGQgbWFrZSBpdCBwb3NzaWJsZSB0byBoYXZlIHVuZGV0ZWN0ZWQgZGVhZGxvY2sgaXNzdWVzIGluIHRoZSBNeVNRTCBTZXJ2ZXIuAEludmFsaWQgdmFsdWUgb2YgdGhyZWFkX3Bvb2xfcHJpb19raWNrdXBfdGltZXIgc3BlY2lmaWVkLiBWYWx1ZSBvZiB0aHJlYWRfcG9vbF9wcmlvX2tpY2t1cF90aW1lciBzaG91bGQgYmUgaW4gcmFuZ2UgMC00Mjk0OTY3Mjk0LgB0aHJlYWRfcG9vbF9tYXhfdW51c2VkX3RocmVhZHMgY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiAlZC4ARmFpbGVkIHRvIGluc3RhbnRpYXRlIHRoZSBjb25uZWN0aW9uIGhhbmRsZXIgb2JqZWN0LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aHJlYWQgcG9vbCBwbHVnaW4uAFRocmVhZCBwb29sIHBsdWdpbiBzdGFydGVkIHN1Y2Nlc3NmdWxseSB3aXRoIHBhcmFtZXRlcnM6IHRocmVhZF9wb29sX3NpemUgPSAlbHUsIHRocmVhZF9wb29sX2FsZ29yaXRobSA9ICVzLCB0aHJlYWRfcG9vbF9zdGFsbF9saW1pdCA9ICV1LCB0aHJlYWRfcG9vbF9wcmlvX2tpY2t1cF90aW1lciA9ICV1LCB0aHJlYWRfcG9vbF9tYXhfdW51c2VkX3RocmVhZHMgPSAldSwgdGhyZWFkX3Bvb2xfaGlnaF9wcmlvcml0eV9jb25uZWN0aW9uID0gJWQuAENhbid0IHNldHVwIGNvbm5lY3Rpb24gdGVhcmRvd24gdGhyZWFkLXNwZWNpZmljIGRhdGEuAENyZWF0aW9uIG9mIGNvbm5lY3QgaGFuZGxlciB0aHJlYWQgZmFpbGVkLgBGYWlsZWQgdG8gY3JlYXRlIHRoZCBhbmQgYXV0aGVudGljYXRlIGNvbm5lY3Rpb24uAEZhaWxlZCB0byBwcm9jZXNzIGNvbm5lY3Rpb24gZXZlbnQuAENhbid0IGNyZWF0ZSBwb29sIHRocmVhZCAoZXJyb3IgJWQsIGVycm5vOiAlZCkuACUuKnMuAHRwX2dyb3VwX2xvd19sZXZlbF9pbml0KCkgZmFpbGVkLgBSZWFybSBmYWlsZWQgZXZlbiBhZnRlciAzMCBzZWNvbmRzLCBjYW4ndCBjb250aW51ZSB3aXRob3V0IG5vdGlmeSBzb2NrZXQuACVzOiAlcyBidWZmZXIgaXMgdG9vIHNtYWxsAE1lY2FiIHYlcyBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgbG93ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGlzIHYlcy4ATWVjYWIgdiVzIGlzIG5vdCB2ZXJpZmllZCwgdGhlIGhpZ2hlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgaXMgdiVzLgBNZWNhYjogVHJ5aW5nIGNyZWF0ZU1vZGVsKCVzKS4ATWVjYWI6IGNyZWF0ZU1vZGVsKCkgZmFpbGVkOiAlcy4ATWVjYWI6IGNyZWF0ZVRhZ2dlcigpIGZhaWxlZDogJXMuAE1lY2FiOiBVbnN1cHBvcnRlZCBkaWN0aW9uYXJ5IGNoYXJzZXQgJXMuAE1lY2FiOiBMb2FkZWQgZGljdGlvbmFyeSBjaGFyc2V0IGlzICVzLgBNZWNhYjogcGFyc2UoKSBmYWlsZWQ6ICVzLgBNZWNhYjogcGFyc2UoKSBmYWlsZWQ6IG91dCBvZiBtZW1vcnkuAE1lY2FiOiBjcmVhdGVMYXR0aWNlKCkgZmFpbGVkOiAlcy4ALS0tPiAlcyBlbnRlci4APC0tLSAlcyBleGl0ICglZCkuADwtLS0gJXMgZXhpdCAoJXMpLgA8LS0tICVzIGV4aXQuAFNlbWktc3luYyByZXBsaWNhdGlvbiBpbml0aWFsaXplZCBmb3IgdHJhbnNhY3Rpb25zLgAlczogdHJhbnNhY3Rpb24gbm9kZSBhbGxvY2F0aW9uIGZhaWxlZCBmb3I6ICglcywgJWx1KS4AJXM6IGJpbmxvZyB3cml0ZSBvdXQtb2Ytb3JkZXIsIHRhaWwgKCVzLCAlbHUpLCBuZXcgbm9kZSAoJXMsICVsdSkuACVzOiBpbnNlcnQgKCVzLCAlbHUpIGluIGVudHJ5KCV1KS4AJXM6IHByb2JlICglcywgJWx1KSBpbiBlbnRyeSgldSkuACVzOiBjbGVhcmVkIGFsbCBub2Rlcy4AJXM6IGNsZWFyZWQgJWQgbm9kZXMgYmFjayB1bnRpbCBwb3MgKCVzLCAlbHUpLgBSZWFkIHNlbWktc3luYyByZXBseSBtYWdpYyBudW1iZXIgZXJyb3IuAFJlYWQgc2VtaS1zeW5jIHJlcGx5IGxlbmd0aCBlcnJvcjogcGFja2V0IGlzIHRvbyBzbWFsbC4AUmVhZCBzZW1pLXN5bmMgcmVwbHkgYmlubG9nIGZpbGUgbGVuZ3RoIHRvbyBsYXJnZS4AJXM6IEdvdCByZXBseSglcywgJWx1KSBmcm9tIHNlcnZlciAldS4AJXMgY2FsbGVkIHR3aWNlLgBTZW1pLXN5bmMgcmVwbGljYXRpb24gZW5hYmxlZCBvbiB0aGUgc291cmNlLgBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IHRvIGVuYWJsZSBzZW1pLXN5bmMgb24gdGhlIHNvdXJjZS4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIGRpc2FibGVkIG9uIHRoZSBzb3VyY2UuAFNFTUlTWU5DOiBGb3JjZWQgc2h1dGRvd24uIFNvbWUgdXBkYXRlcyBtaWdodCBub3QgYmUgcmVwbGljYXRlZC4AJXM6IEdvdCByZXBseSBhdCAoJXMsICVsdSkuACVzOiBzaWduYWwgYWxsIHdhaXRpbmcgdGhyZWFkcy4AJXM6IHdhaXQgcG9zICglcywgJWx1KSwgcmVwbCglZCkuACVzOiBCaW5sb2cgcmVwbHkgaXMgYWhlYWQgKCVzLCAlbHUpLgAlczogbW92ZSBiYWNrIHdhaXQgcG9zaXRpb24gKCVzLCAlbHUpLgAlczogaW5pdCB3YWl0IHBvc2l0aW9uICglcywgJWx1KS4AJXM6IHdhaXQgJWx1IG1zIGZvciBiaW5sb2cgc2VudCAoJXMsICVsdSkuAFRpbWVvdXQgd2FpdGluZyBmb3IgcmVwbHkgb2YgYmlubG9nIChmaWxlOiAlcywgcG9zOiAlbHUpLCBzZW1pLXN5bmMgdXAgdG8gZmlsZSAlcywgcG9zaXRpb24gJWx1LgBBc3Nlc3NtZW50IG9mIHdhaXRpbmcgdGltZSBmb3IgY29tbWl0VHJ4IGZhaWxlZCBhdCB3YWl0IHBvc2l0aW9uICglcywgJWx1KS4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIHN3aXRjaGVkIE9GRi4AU2VtaS1zeW5jIHJlcGxpY2F0aW9uIHN3aXRjaGVkIE9OIGF0ICglcywgJWx1KS4ATm8gZW5vdWdoIHNwYWNlIGluIHRoZSBwYWNrZXQgZm9yIHNlbWktc3luYyBleHRyYSBoZWFkZXIsIHNlbWktc3luYyByZXBsaWNhdGlvbiBkaXNhYmxlZC4AJXM6IHNlcnZlciglZCksICglcywgJWx1KSBzeW5jKCVkKSwgcmVwbCglZCkuAFNlbWktc3luYyBmYWlsZWQgdG8gaW5zZXJ0IHRyYW54X25vZGUgZm9yIGJpbmxvZyBmaWxlOiAlcywgcG9zaXRpb246ICVsdS4AJXM6IFRyYW5zYWN0aW9uIHNraXBwZWQgYXQgKCVzLCAlbHUpLgBTZW1pLXN5bmMgc291cmNlIGZhaWxlZCBvbiBuZXRfZmx1c2goKSBiZWZvcmUgd2FpdGluZyBmb3IgcmVwbGljYSByZXBseS4AVGhlIHJlY2VpdmVkIGFjayBpcyBzbWFsbGVyIHRoYW4gbV9ncmVhdGVzdF9hY2suAEFkZCB0aGUgYWNrIGludG8gc2xvdCAldS4AVXBkYXRlIGFuIGV4c2l0aW5nIGFjayBpbiBzbG90ICV1LgBGYWlsZWQgdG8gc3RhcnQgc2VtaS1zeW5jIEFDSyByZWNlaXZlciB0aHJlYWQsICBjb3VsZCBub3QgY3JlYXRlIHRocmVhZChlcnJubzolZCkuAFN0YXJ0aW5nIGFjayByZWNlaXZlciB0aHJlYWQuAEZhaWxlZCB0byB3YWl0IG9uIHNlbWktc3luYyBkdW1wIHNvY2tldHMsIGVycm9yOiBlcnJubz0lZC4AU3RvcHBpbmcgYWNrIHJlY2VpdmVyIHRocmVhZC4ARmFpbGVkIHRvIHJlZ2lzdGVyIHJlcGxpY2EgdG8gc2VtaS1zeW5jIEFDSyByZWNlaXZlciB0aHJlYWQuAFN0YXJ0ICVzIGJpbmxvZ19kdW1wIHRvIHJlcGxpY2EgKHNlcnZlcl9pZDogJWQpLCBwb3MoJXMsICVsdSkuAFN0b3AgJXMgYmlubG9nX2R1bXAgdG8gcmVwbGljYSAoc2VydmVyX2lkOiAlZCkuAHVucmVnaXN0ZXJfdHJhbnNfb2JzZXJ2ZXIgZmFpbGVkLgB1bnJlZ2lzdGVyX2JpbmxvZ19zdG9yYWdlX29ic2VydmVyIGZhaWxlZC4AdW5yZWdpc3Rlcl9iaW5sb2dfdHJhbnNtaXRfb2JzZXJ2ZXIgZmFpbGVkLgB1bnJlZ2lzdGVyX3JlcGxpY2F0b3IgT0suAFNlbWlzeW5jIHJlcGxpY2Egc29ja2V0IGZkIGlzICV1LiBzZWxlY3QoKSBjYW5ub3QgaGFuZGxlIGlmIHRoZSBzb2NrZXQgZmQgaXMgYmlnZ2VyIHRoYW4gJXUgKEZEX1NFVFNJWkUpLgAlczogcmVwbHkgLSAlZC4ATWlzc2luZyBtYWdpYyBudW1iZXIgZm9yIHNlbWktc3luYyBwYWNrZXQsIHBhY2tldCBsZW46ICVsdS4AUmVwbGljYSBJL08gdGhyZWFkOiBTdGFydCAlcyByZXBsaWNhdGlvbiB0byBzb3VyY2UgJyVzQCVzOiVkJyBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlbHUuACVzOiByZXBseSAoJXMsICVsdSkuAFNlbWktc3luYyByZXBsaWNhIG5ldF9mbHVzaCgpIHJlcGx5IGZhaWxlZC4AU2VtaS1zeW5jIHJlcGxpY2Egc2VuZCByZXBseSBmYWlsZWQ6ICVzICglZCkuAEV4ZWN1dGlvbiBmYWlsZWQgb24gc291cmNlOiAlczsgZXJyb3IgJWQAU291cmNlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHNlbWktc3luYywgZmFsbGJhY2sgdG8gYXN5bmNocm9ub3VzIHJlcGxpY2F0aW9uAFNldCAncnBsX3NlbWlfc3luY19yZXBsaWNhPTEnIG9uIHNvdXJjZSBmYWlsZWQARmFpbGVkIHRvIHN0b3AgYWNrIHJlY2VpdmVyIHRocmVhZCBvbiBteV90aHJlYWRfam9pbiwgZXJybm8oJWQpLgBGYWlsZWQgdG8gcmVhZCB0aGUgZmlyZXdhbGwgdGFibGVzAEZhaWxlZCB0byByZWdpc3RlciBkeW5hbWljIHByaXZpbGVnZXMAU3RhdGVtZW50IHdhcyB0cnVuY2F0ZWQgYW5kIG5vdCByZWNvcmRlZDogJXMAU3RhdGVtZW50IHdpdGggbm8gdGV4dCB3YXMgbm90IHJlY29yZGVkAFNVU1BJQ0lPVVMgU1RBVEVNRU5UIGZyb20gJyVzJy4gUmVhc29uOiAlcyBTdGF0ZW1lbnQ6ICVzAEFDQ0VTUyBERU5JRUQgZm9yICclcycuIFJlYXNvbjogJXMgU3RhdGVtZW50OiAlcwBTa2lwcGVkIHVua25vd24gdXNlciBtb2RlICclcycAUmVsb2FkaW5nIGNhY2hlIGZyb20gZGlzawBGSVJFV0FMTCBSRVNFVCBmb3IgJyVzJwBDb3VudGVycyBhcmUgcmVzZXQgdG8gemVybwAlcwBBdWRpdCBMb2cgcGx1Z2luIHN1cHBvcnRzIGZpbHRlcmluZyBtb2RlLCB3aGljaCBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIHlldC4gQXVkaXQgTG9nIHBsdWdpbiB3aWxsIHJ1biBpbiB0aGUgbGVnYWN5IG1vZGUsIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCByZWxlYXNlLgBQcmV2aW91c2x5IGV4Y2x1ZGUgbGlzdCBpcyB1c2VkLCBub3cgd2Ugc3RhcnQgdXNpbmcgaW5jbHVkZSBsaXN0LCBleGNsdWRlIGxpc3QgaXMgc2V0IHRvIE5VTEwuAENhbm5vdCBzZXQgYXVkaXRfbG9nX3BvbGljeSBzaW11bHRhbmVvdXNseSB3aXRoIGVpdGhlciBhdWRpdF9sb2dfY29ubmVjdGlvbl9wb2xpY3kgb3IgIGF1ZGl0X2xvZ19zdGF0ZW1lbnRfcG9saWN5LCBzZXR0aW5nIGF1ZGl0X2xvZ19jb25uZWN0aW9uX3BvbGljeSBhbmQgYXVkaXRfbG9nX3N0YXRlbWVudF9wb2xpY3kgYmFzZWQgb24gYXVkaXRfbG9nX3BvbGljeS4AQm90aCBpbmNsdWRlIGFuZCBleGNsdWRlIGxpc3RzIHByb3ZpZGVkLCBpbmNsdWRlIGxpc3QgaXMgcHJlZmVycmVkLCBleGNsdWRlIGxpc3QgaXMgc2V0IHRvIE5VTEwuAENvdWxkIG5vdCBhY2Nlc3MgJyVzJyBkaXJlY3RvcnkuAENvdWxkIG5vdCByZW5hbWUgZmlsZSBmcm9tICclcycgdG8gJyVzJy4ARmlsZSAnJXMnIHNob3VsZCBub3QgZXhpc3QuIEl0IG1heSBiZSBpbmNvbXBsZXRlLiBUaGUgc2VydmVyIGNyYXNoZWQuAENvdWxkIG5vdCByZW5hbWUgZmlsZSBmcm9tICclcycgdG8gJyVzJy4gUmVtb3ZlIHRoZSBmaWxlIG1hbnVhbGx5LgBJbmNvbXBsZXRlIGZpbGUgcmVuYW1lZCBmcm9tICclcycgdG8gJyVzJy4ARXJyb3Igd3JpdGluZyBmaWxlICclLS4yMDBzJyAoZXJybm86ICVkIC0gJXMpLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsZSBlbmNyeXB0aW9uLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBhdWRpdCBsb2cgZmlsZSBjb21wcmVzc2lvbi4AQ291bGQgbm90IGNyZWF0ZSAnJXMnIGZpbGUgZm9yIGF1ZGl0IGxvZ2dpbmcuAEF1ZGl0IGxvZyBmaWxlICglcykgbXVzdCBiZSBtYW51YWxseSByZW5hbWVkIGJlZm9yZSBhdWRpdF9sb2dfZmx1c2ggaXMgc2V0IHRvIHRydWUuACVzAEVycm9yIHBhcnNpbmcgSlNPTiBldmVudC4gRXZlbnQgbm90IGFjY2Vzc2libGUuAEJ1ZmZlciBpcyB0b28gc21hbGwgdG8gaG9sZCBKU09OIGV2ZW50LiBOdW1iZXIgb2YgZXZlbnRzIHNraXBwZWQ6ICV6dS4AQ291bGQgbm90IG9wZW4gSlNPTiBmaWxlIGZvciByZWFkaW5nLiBSZWFkaW5nIG5leHQgZmlsZSBpZiBleGlzdHMuAEpTT04gZmlsZSBwYXJzaW5nIGVycm9yLiBSZWFkaW5nIG5leHQgZmlsZSBpZiBleGlzdHMASW52YWxpZCBjb2x1bW4gY291bnQgaW4gdGhlICclcy4lcycgdGFibGUuAEludmFsaWQgY29sdW1uIGRlZmluaXRpb24gb2YgdGhlICclcy4lcycgdGFibGUuAENvdWxkIG5vdCBzdG9yZSBmaWVsZCBvZiB0aGUgJXMgdGFibGUuAENvdWxkIG5vdCB1cGRhdGUgJXMgdGFibGUuAENvdWxkIG5vdCBpbnNlcnQgaW50byAlcyB0YWJsZS4AQ291bGQgbm90IGRlbGV0ZSBmcm9tICVzIHRhYmxlLgBDb3VsZCBub3QgaW5pdGlhbGl6ZSAlcyB0YWJsZSBmb3IgcmVhZGluZy4AQ291bGQgbm90IHJlYWQgJXMgdGFibGUuAENvdWxkIG5vdCBjbG9zZSAlcyB0YWJsZSByZWFkaW5nLgBCb3RoIHVzZXIgYW5kIGhvc3QgY29sdW1ucyBvZiAlcyB0YWJsZSBjYW5ub3QgYmUgZW1wdHkuAEZpbHRlcm5hbWUgY29sdW1uIG9mICVzIHRhYmxlIGNhbm5vdCBiZSBlbXB0eS4ARGljdGlvbmFyeSBmaWxlIG5vdCBzcGVjaWZpZWQARGljdGlvbmFyeSBmaWxlIG5vdCBsb2FkZWQARGljdGlvbmFyeSBmaWxlIHNpemUgZXhjZWVkZWQgTUFYX0RJQ1RJT05BUllfRklMRV9MRU5HVEgsIG5vdCBsb2FkZWQARXhjZXB0aW9uIHdoaWxlIHJlYWRpbmcgdGhlIGRpY3Rpb25hcnkgZmlsZQBDYW4ndCByZXRyaWV2ZSB0aGUgJXMgZnJvbSB0aGUgc2VjdXJpdHkgY29udGV4dABDYW4ndCByZXRyaWV2ZSB0aGUgc2VjdXJpdHkgY29udGV4dABFZmZlY3RpdmUgdmFsdWUgb2YgdmFsaWRhdGVfcGFzc3dvcmRfbGVuZ3RoIGlzIGNoYW5nZWQuIE5ldyB2YWx1ZSBpcyAlZAAlcwBSZXdyaXR0ZW4gcXVlcnkgZmFpbGVkIHRvIHBhcnNlOiVzAFN0YXJ0dXAgZmFpbGVkIHdpdGggZXJyb3IgIiVzIgBFeGl0aW5nAEV4aXQgZG9uZQBVc2luZyBTU0wgY29uZmlndXJhdGlvbiBmcm9tIE15U1FMIFNlcnZlcgBVc2luZyBTU0wgY29uZmlndXJhdGlvbiBmcm9tIE15c3FseCBQbHVnaW4ATmVpdGhlciBNeVNRTCBTZXJ2ZXIgbm9yIE15c3FseCBQbHVnaW4gaGFzIHZhbGlkIFNTTCBjb25maWd1cmF0aW9uAFVzaW5nICVzIGZvciBUTFMgY29ubmVjdGlvbnMARm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlIFVzaW5nIFNlY3VyZSBDb25uZWN0aW9ucyB3aXRoIFggUGx1Z2luIHNlY3Rpb24gaW4gdGhlIE15U1FMIGRvY3VtZW50YXRpb24AJXMARmFpbGVkIHRvIHBhcnNlIHN0b3JlZCBhdXRoZW50aWNhdGlvbiBzdHJpbmcgZm9yICVzLiBQbGVhc2UgY2hlY2sgaWYgbXlzcWwudXNlciB0YWJsZSBub3QgY29ycnVwdGVkAEVycm9yIGluIGdlbmVyYXRpbmcgbXVsdGktcm91bmQgaGFzaCBmb3IgJXMuIFBsdWdpbiBjYW4gbm90IHBlcmZvcm0gYXV0aGVudGljYXRpb24gd2l0aG91dCBpdC4gVGhpcyBtYXkgYmUgYSB0cmFuc2llbnQgcHJvYmxlbQBBdXRoZW50aWNhdGlvbiByZXF1aXJlcyBlaXRoZXIgUlNBIGtleXMgb3IgU1NMIGVuY3J5cHRpb24AUlNBIGtleSBjaXBoZXIgbGVuZ3RoIG9mICV1IGlzIHRvbyBsb25nLiBNYXggdmFsdWUgaXMgJXUARmFpbGVkIHRvIG9wZW4gdGhlICVzIGZpbHRlciB0YWJsZXMARmFpbGVkIHRvIG9wZW4gJyVzLiVzJyAlcyB0YWJsZQAlcwAlcwAlcwBQYXNzd29yZCBzYWx0IGZvciB1c2VyICclcycgaXMgY29ycnVwdABPdXQgb2YgbWVtb3J5IGZvciBjb21wb25lbnQgc3lzdGVtIHZhcmlhYmxlICclcycuAHZhcmlhYmxlICVzIG9mIGNvbXBvbmVudCAlcyB3YXMgZm9yY2VkIHRvIGJlIHJlYWQtb25seTogc3RyaW5nIHZhcmlhYmxlIHdpdGhvdXQgdXBkYXRlX2Z1bmMgYW5kIFBMVUdJTl9WQVJfTUVNQUxMT0MgZmxhZy4AVW5rbm93biB2YXJpYWJsZSB0eXBlIGNvZGUgMHgleCBpbiBjb21wb25lbnQgJyVzJy4AUGFyc2luZyBvcHRpb25zIGZvciB2YXJpYWJsZSAnJXMnIGZhaWxlZC4AU2V0dGluZyBwZXJzaXN0ZW50IG9wdGlvbnMgZm9yIGNvbXBvbmVudCB2YXJpYWJsZSAnJXMnIGZhaWxlZC4AVGhlIGxvZy1maWx0ZXIgY29tcG9uZW50ICIlcyIgZ290IGNvbmZ1c2VkIGF0ICIlcyIgKHN0YXRlOiAlcykgLi4uAFdhaXRpbmcgdW50aWwgSS9PIHRocmVhZCBmb3IgY2hhbm5lbCAnJXMnIGZpbmlzaCB3cml0aW5nIHRvIGRpc2sgYmVmb3JlIHN0b3BwaW5nLiBGcmVlIHNvbWUgZGlzayBzcGFjZSBvciB1c2UgJ0tJTEwnIHRvIGFib3J0IEkvTyB0aHJlYWQgb3BlcmF0aW9uLiBOb3RpY2UgdGhhdCBhYm9ydGluZyB0aGUgSS9PIHRocmVhZCB3aGlsZSByb3RhdGluZyB0aGUgcmVsYXkgbG9nIG1pZ2h0IGNvcnJ1cHQgdGhlIHJlbGF5IGxvZ3MsIHJlcXVpcmluZyBhIHNlcnZlciByZXN0YXJ0IHRvIGZpeCBpdC4AQ291bGQgbm90IHVzZSAlcyBmb3IgbG9nZ2luZyAoZXJyb3IgJWQgLSAlcykuIFR1cm5pbmcgbG9nZ2luZyBvZmYgZm9yIHRoZSBzZXJ2ZXIgcHJvY2Vzcy4gVG8gdHVybiBpdCBvbiBhZ2FpbjogZml4IHRoZSBjYXVzZSwgdGhlbiVzIHJlc3RhcnQgdGhlIE15U1FMIHNlcnZlci4AVW5hYmxlIHRvIGNvbGxlY3QgaW5mb3JtYXRpb24gZm9yIGNvbHVtbiAnJS0uMTkycyc6ICUtLjE5MnMuACd1dGY4JyBpcyBjdXJyZW50bHkgYW4gYWxpYXMgZm9yIHRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMsIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4ATkFUSU9OQUwvTkNIQVIvTlZBUkNIQVIgaW1wbGllcyB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCB3aGljaCB3aWxsIGJlIHJlcGxhY2VkIGJ5IFVURjhNQjQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gUGxlYXNlIGNvbnNpZGVyIHVzaW5nIENIQVIoeCkgQ0hBUkFDVEVSIFNFVCBVVEY4TUI0IGluIG9yZGVyIHRvIGJlIHVuYW1iaWd1b3VzLgBBIGNvbW1pdCBmb3IgYW4gYXRvbWljIERETCBzdGF0ZW1lbnQgd2FzIHVuc3VjY2Vzc2Z1bCBvbiB0aGUgc291cmNlIGFuZCB0aGUgcmVwbGljYS4gVGhlIHJlcGxpY2Egc3VwcG9ydHMgYXRvbWljIERETCBzdGF0ZW1lbnRzIGJ1dCB0aGUgc291cmNlIGRvZXMgbm90LCBzbyB0aGUgYWN0aW9uIHRha2VuIGJ5IHRoZSByZXBsaWNhIGFuZCBzb3VyY2UgbWlnaHQgZGlmZmVyLiBDaGVjayB0aGF0IHRoZWlyIHN0YXRlcyBoYXZlIG5vdCBkaXZlcmdlZCBiZWZvcmUgcHJvY2VlZGluZy4AQ29uZmlndXJpbmcgcGVyc2lzdGVkIG9wdGlvbnMgZmFpbGVkOiAiJXMiLgBUaGUgc3RvcmFnZSBlbmdpbmUgJyUtLjE5MnMnIGRvZXMgbm90IHByb3ZpZGUgZHluYW1pYyB0YWJsZSBzdGF0aXN0aWNzAFRoaXMgb3B0aW9uIGNhbm5vdCBiZSBzZXQgJXMuAFRoZSB0YWJsZSAnJS0uMTkycycgbWF5IG5vdCBiZSBjcmVhdGVkIGluIHRoZSByZXNlcnZlZCB0YWJsZXNwYWNlICclLS4xOTJzJy4AU1NMIGZpcHMgbW9kZSBlcnJvcjogJXMAaW5pdF9jb25uZWN0IHZhcmlhYmxlIGlzIGlnbm9yZWQgZm9yIHVzZXI6ICVzIGhvc3Q6ICVzIGR1ZSB0byBleHBpcmVkIHBhc3N3b3JkLgBzcWxfbW9kZT0weCUwOHggaXMgbm90IHN1cHBvcnRlZABPdXQgb2YgbWVtb3J5LgBXcm9uZyBjb2x1bW4gY291bnQgb3IgbmFtZXMgd2hlbiBsb2FkaW5nIHJ1bGVzLgBTb21lIHJ1bGVzIGZhaWxlZCB0byBsb2FkLgBHb3QgZXJyb3IgZnJvbSBzdG9yYWdlIGVuZ2luZSB3aGlsZSByZWZyZXNoaW5nIHJld3JpdGUgcnVsZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIENvbm5lY3Rpb25fZXZlbnRfY29vcmRpbmF0b3IARmFpbGVkIHRvIHVwZGF0ZSBjb25uZWN0aW9uIGRlbGF5IHRyaWdnZXJlZCBzdGF0cwBGYWlsZWQgdG8gcmVzZXQgY29ubmVjdGlvbiBkZWxheSB0cmlnZ2VyZWQgc3RhdHMAVW5leHBlY3RlZCBvcHRpb24gdHlwZSBmb3IgY29ubmVjdGlvbiBkZWxheS4ARmFpbGVkIHRvIGluaXRpYWxpemUgQ29ubmVjdGlvbl9kZWxheV9hY3Rpb24AQ291bGQgbm90IHNldCAlcyBkZWxheSBmb3IgY29ubmVjdGlvbiBkZWxheS4ARmFpbGVkIHRvIHVwZGF0ZSBjb25uZWN0aW9uIGRlbGF5IGhhc2ggZm9yIGFjY291bnQgOiAlcwAlczogRm9yY2Ugc3RvcHBpbmcgY2xpZW50IGJlY2F1c2UgZXhjZXB0aW9uIG9jY3VycmVkOiAlcwAlcy4ldTogTWF4aW11bSBudW1iZXIgb2YgYXV0aGVudGljYXRpb24gYXR0ZW1wdHMgcmVhY2hlZCwgbG9naW4gZmFpbGVkLgBFcnJvciBhbGxvY2F0aW5nIEJ1ZmZlcl9wYWdlOiAlcwBEZXRlY3RlZCAldSBoYW5naW5nIGNsaWVudChzKQBFcnJvciBhY2NlcHRpbmcgY2xpZW50AEludGVybmFsIGVycm9yIHNjaGVkdWxpbmcgY2xpZW50IGZvciBleGVjdXRpb24AUHJlcGFyYXRpb24gb2YgSS9PIGludGVyZmFjZXMgZmFpbGVkLCBYIFByb3RvY29sIHdvbid0IGJlIGFjY2Vzc2libGUAc3J2X3Nlc3Npb25faW5pdF90aHJlYWQgcmV0dXJuZWQgZXJyb3IAVW5hYmxlIHRvIHVzZSB1c2VyIG15c3FsLnNlc3Npb24gYWNjb3VudCB3aGVuIGNvbm5lY3RpbmcgdGhlIHNlcnZlciBmb3IgaW50ZXJuYWwgcGx1Z2luIHJlcXVlc3RzLgBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSB0aGUgWCBQbHVnaW4gVXNlciBBY2NvdW50IHNlY3Rpb24gaW4gdGhlIE15U1FMIGRvY3VtZW50YXRpb24AJXM6IFVuZXhwZWN0ZWQgZXhjZXB0aW9uIGRpc3BhdGNoaW5nIGNvbW1hbmQ6ICVzAEV4Y2VwdGlvbiBpbiBwb3N0OiAlcwBJbnRlcm5hbCBlcnJvciBzY2hlZHVsaW5nIHRhc2sARXhjZXB0aW9uIGluIGV2ZW50IGxvb3A6ICIlcyI6ICVzAFNldHVwIG9mICVzIGZhaWxlZCwgJXMAJXMARmFpbGVkIGF0IFNTTCBjb25maWd1cmF0aW9uOiAiJXMiAEVycm9yIGR1cmluZyBTU0wgaGFuZHNoYWtlIGZvciBjbGllbnQgY29ubmVjdGlvbiAoJWkpACVzOiBFcnJvciBkdXJpbmcgU1NMIGhhbmRzaGFrZQAlczogRXJyb3IgY3JlYXRpbmcgc2Vzc2lvbiBmb3IgY29ubmVjdGlvbiBmcm9tICVzACVzOiBFcnJvciBpbml0aWFsaXppbmcgc2Vzc2lvbiBmb3IgY29ubmVjdGlvbjogJXMAJXM6IE1lc3NhZ2Ugb2Ygc2l6ZSAldSByZWNlaXZlZCwgZXhjZWVkaW5nIHRoZSBsaW1pdCBvZiAlaQBNZXNzYWdlIGlzIG5vdCBwcm9wZXJseSBpbml0aWFsaXplZDogJXMAVW5hYmxlIHRvIHNldCBtaW5pbWFsIG51bWJlciBvZiB3b3JrZXJzIHRvICV1OyBhY3R1YWwgdmFsdWUgaXMgJWkAVW5hYmxlIHRvIGFjY2VwdCBjb25uZWN0aW9uLCBkaXNjb25uZWN0aW5nIGNsaWVudABBbGwgSS9PIGludGVyZmFjZXMgYXJlIGRpc2FibGVkLCBYIFByb3RvY29sIHdvbid0IGJlIGFjY2Vzc2libGUAJXM6IEludmFsaWQgbWVzc2FnZSAlaSByZWNlaXZlZCBkdXJpbmcgY2xpZW50IGluaXRpYWxpemF0aW9uACVzOiBjbG9zaW5nIGNsaWVudCBiZWNhdXNlIG9mIHNodXRkb3duIChzdGF0ZTogJWkpACVzOiBFcnJvciByZWFkaW5nIGZyb20gc29ja2V0ICVzICglaSkAJXM6IHBlZXIgZGlzY29ubmVjdGVkIHdoaWxlIHJlYWRpbmcgbWVzc2FnZSBib2R5AGNsaWVudF9pZDolcyAtICVzIHdoaWxlIHJlYWRpbmcgZnJvbSBzb2NrZXQsIGNsb3NpbmcgY29ubmVjdGlvbgAlcy4ldTogSW52YWxpZCBhdXRoZW50aWNhdGlvbiBtZXRob2QgJXMAJXM6IFVuZXhwZWN0ZWQgbWVzc2FnZSBvZiB0eXBlICVpIHJlY2VpdmVkIGR1cmluZyBhdXRoZW50aWNhdGlvbgBFcnJvciB3cml0aW5nIHRvIGNsaWVudDogJXMgKCVpKQBTY2hlZHVsZXIgIiVzIiBzdGFydGVkLgBTY2hlZHVsZXIgIiVzIiBzdG9wcGVkLgBQbGVhc2Ugc2VlIHRoZSBNeVNRTCBkb2N1bWVudGF0aW9uIGZvciAnJXMnIHN5c3RlbSB2YXJpYWJsZXMgdG8gZml4IHRoZSBlcnJvcgBYIFBsdWdpbiByZWFkeSBmb3IgY29ubmVjdGlvbnMuICVzAFJldHJ5aW5nIGBiaW5kKClgIG9uIFRDUC9JUCBwb3J0ICVpAFNodXRkb3duIHRyaWdnZXJlZCBieSBteXNxbGQgYWJvcnQgZmxhZwBVc2luZyAlcyBhY2NvdW50IGZvciBhdXRoZW50aWNhdGlvbiB3aGljaCBoYXMgYWxsIHJlcXVpcmVkIHBlcm1pc3Npb25zAFVzaW5nIGV4aXN0aW5nICVzIGFjY291bnQgZm9yIGF1dGhlbnRpY2F0aW9uLiBJbmNvbXBsZXRlIGdyYW50cyB3aWxsIGJlIGZpeGVkAFNlcnZlciBzdGFydHMgaGFuZGxpbmcgaW5jb21pbmcgY29ubmVjdGlvbnMAU3RvcHBlZCBoYW5kbGluZyBpbmNvbWluZyBjb25uZWN0aW9ucwAlczogQ291bGQgbm90IGludGVycnVwdCBjbGllbnQgc2Vzc2lvbgAlczogcmVsZWFzZSB0cmlnZ2VyZWQgYnkgdGltZW91dCBpbiBzdGF0ZTolaQBJUHY2IGlzIGF2YWlsYWJsZQBVTklYIHNvY2tldCBub3QgY29uZmlndXJlZABLaWxsIGNsaWVudDogJWkgJXMAQ291bGQgbm90IGdldCBzZWN1cml0eSBjb250ZXh0IGZvciBzZXNzaW9uAFVuYWJsZSB0byBzd2l0Y2ggc2VjdXJpdHkgY29udGV4dCB0byByb290AEVycm9yIGNsb3NpbmcgU1FMIHNlc3Npb24ARXJyb3IgZXhlY3V0aW5nIGFkbWluIGNvbW1hbmQgJXM6ICVzAEVycm9yIGV4ZWN1dGluZyBlbXB0eSBhZG1pbiBjb21tYW5kAFVuYWJsZSB0byByZXRyaWV2ZSBzeXN0ZW0gdmFyaWFibGUgJyVzJwBVbmFibGUgdG8gZ2V0IGNyZWF0aW9uIHN0bXQgZm9yIGNvbGxlY3Rpb24gJyVzJzsgcXVlcnkgcmVzdWx0IHNpemU6ICVsdQBVbmFibGUgdG8gZ2V0IGVuZ2luZSBpbmZvIGZvciBjb2xsZWN0aW9uICclcyc7IGNyZWF0aW9uIHN0bXQ6ICVzAEVycm9yIGdldHRpbmcgcmVzdWx0IGRhdGE6ICVzAENhcGFiaWxpdHkgZXhwaXJlZCBwYXNzd29yZCBmYWlsZWQgd2l0aCBlcnJvcjogJXMARmFpbGVkIHRvIHNldCBTT19SRVVTRUFERFIgZmxhZyAoZXJyb3I6ICVkKS4AQ291bGQgbm90IG9wZW4gaW50ZXJuYWwgTXlTUUwgc2Vzc2lvbgBVbmFibGUgdG8gc3dpdGNoIGNvbnRleHQgdG8gdXNlciAlcwBDYW4ndCB1bnJlZ2lzdGVyICclcycgdXNlciBkZWZpbmVkIGZ1bmN0aW9uACVzOiBnZXQgcGVlciBhZGRyZXNzIGZhaWxlZCwgY2FuJ3QgcmVzb2x2ZSBJUCB0byBob3N0bmFtZQBDYXBhYmlsaXR5IGNsaWVudCBpbnRlcmFjdGl2ZSBmYWlsZWQgd2l0aCBlcnJvcjogJXMARmFpbGVkIHRvIHJlc2V0IElQVjZfVjZPTkxZIGZsYWcgKGVycm9yOiAlZCkuIFRoZSBzZXJ2ZXIgd2lsbCBsaXN0ZW4gdG8gSVB2NiBhZGRyZXNzZXMgb25seS4ASW52YWxpZCBrZXkgdHlwZQBJbnZhbGlkIGtleSBsZW5ndGggZm9yIGdpdmVuIGJsb2NrIGNpcGhlcgBDb3VsZCBub3QgY3JlYXRlIGtleXJpbmcgZGlyZWN0b3J5LiBUaGUga2V5cmluZ19maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0IHBhdGggdG8gdGhlIGtleXJpbmcgZGlyZWN0b3J5IGdldHMgcHJvdmlkZWQAa2V5cmluZ19maWxlIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZ19maWxlX2RhdGEgcG9pbnRzIHRvIHJlYWRhYmxlIGtleXJpbmcgZmlsZSBvciBrZXlyaW5nIGZpbGUgY2FuIGJlIGNyZWF0ZWQgaW4gdGhlIHNwZWNpZmllZCBsb2NhdGlvbi4gVGhlIGtleXJpbmdfZmlsZSB3aWxsIHN0YXkgdW51c2FibGUgdW50aWwgY29ycmVjdCBwYXRoIHRvIHRoZSBrZXlyaW5nIGZpbGUgZ2V0cyBwcm92aWRlZABrZXlyaW5nX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luLgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19maWxlIHBsdWdpbgBFcnJvciB3aGlsZSAlcyBrZXk6IGludmFsaWQga2V5X3R5cGUARXJyb3Igd2hpbGUgJXMga2V5OiBrZXlfaWQgY2Fubm90IGJlIGVtcHR5AEZhaWxlZCB0byAlcyBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSAlcyBwbHVnaW4ASW5jb3JyZWN0IEtleXJpbmcgZmlsZQBGb3VuZCBtYWxmb3JtZWQga2V5cmluZyBiYWNrdXAgZmlsZSAtIHJlbW92aW5nIGl0AEVycm9yIHdoaWxlIHJlc3RvcmluZyBrZXlyaW5nIGZyb20gYmFja3VwIGZpbGUgY2Fubm90IG92ZXJ3cml0ZSBrZXlyaW5nIHdpdGggYmFja3VwAEVycm9yIHdoaWxlIGZsdXNoaW5nIGluLW1lbW9yeSBrZXlyaW5nIGludG8ga2V5cmluZyBmaWxlAEVycm9yIHdoaWxlIHJlYWRpbmcgc3RhdCBmb3IgJXMuUGxlYXNlIGNoZWNrIGlmIGZpbGUgJXMgd2FzIG5vdCByZW1vdmVkLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmVtb3ZlIGZpbGUgJXMgT1MgcmV0dW5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgdHJ1bmNhdGUgZmlsZSAlcy4gT1MgcmV0dW5lZCB0aGlzIGVycm9yOiAlcwBVbmtub3duIGVycm9yICVkAGtleXJpbmdfZmlsZV9kYXRhIGNhbm5vdCBiZSBzZXQgdG8gbmV3IHZhbHVlIGFzIHRoZSBrZXlyaW5nIGZpbGUgY2Fubm90IGJlIGNyZWF0ZWQvYWNjZXNzZWQgaW4gdGhlIHByb3ZpZGVkIHBhdGgAJXMARXJyb3Igd2hpbGUgbG9hZGluZyBrZXlyaW5nIGNvbnRlbnQuIFRoZSBrZXlyaW5nIG1pZ2h0IGJlIG1hbGZvcm1lZABDb3VsZCBub3QgZmx1c2gga2V5cyB0byBrZXlyaW5nAENvdWxkIG5vdCBmbHVzaCBrZXlzIHRvIGtleXJpbmcncyBiYWNrdXAARXJyb3Igd2hpbGUgZmV0Y2hpbmcga2V5OiBrZXlfaWQgY2Fubm90IGJlIGVtcHR5AEVycm9yIHdoaWxlIHJlbW92aW5nIGtleToga2V5X2lkIGNhbm5vdCBiZSBlbXB0eQBGb3Iga2V5cmluZ19va3YgdG8gYmUgaW5pdGlhbGl6ZWQsIHBsZWFzZSBwb2ludCBrZXlyaW5nX29rdl9jb25mX2RpciB2YXJpYWJsZSB0byBhIGRpcmVjdG9yeSB3aXRoIE9yYWNsZSBLZXkgVmF1bHQgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBzc2wgbWF0ZXJpYWxzAGtleXJpbmdfb2t2IGluaXRpYWxpemF0aW9uIGZhaWx1cmUuIFBsZWFzZSBjaGVjayB0aGF0IHRoZSBrZXlyaW5nX29rdl9jb25mX2RpciBwb2ludHMgdG8gYSByZWFkYWJsZSBkaXJlY3RvcnkgYW5kIHRoYXQgdGhlIGRpcmVjdG9yeSBjb250YWlucyBPcmFjbGUgS2V5IFZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgc3NsIG1hdGVyaWFscy4gUGxlYXNlIGFsc28gY2hlY2sgdGhhdCBPcmFjbGUgS2V5IFZhdWx0IGlzIHVwIGFuZCBydW5uaW5nLgBrZXlyaW5nX29rdiBpbml0aWFsaXphdGlvbiBmYWlsdXJlIGR1ZSB0byBpbnRlcm5hbCBleGNlcHRpb24gaW5zaWRlIHRoZSBwbHVnaW4ASW52YWxpZCBrZXkgdHlwZQBJbnZhbGlkIGtleSBsZW5ndGggZm9yIGdpdmVuIGJsb2NrIGNpcGhlcgBGYWlsZWQgdG8gZ2VuZXJhdGUgYSBrZXkgZHVlIHRvIGludGVybmFsIGV4Y2VwdGlvbiBpbnNpZGUga2V5cmluZ19va3YgcGx1Z2luAENvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciBzZXJ2ZXIgaW4gY29uZmlndXJhdGlvbiBmaWxlICVzAENvdWxkIG5vdCBmaW5kIGVudHJ5IGZvciBzdGFuZGJ5IHNlcnZlciBpbiBjb25maWd1cmF0aW9uIGZpbGUgJXMAQ291bGQgbm90IHBhcnNlIHRoZSAlcyBmaWxlIHByb3ZpZGVkAENvdWxkIG5vdCBsb2FkIGtleXMnIHVpZHMgZnJvbSB0aGUgT0tWIHNlcnZlcgBDb3VsZCBub3QgaW5pdGlhbGl6ZSBzc2wgbGF5ZXIAQ291bGQgbm90IGluaXRpYWxpemUgT0tWIGNsaWVudABDb3VsZCBub3QgY29ubmVjdCB0byB0aGUgT0tWIHNlcnZlcgBDb3VsZCBub3QgcmVtb3ZlIHRoZSBrZXkAQ291bGQgbm90IGFkZCBhdHRyaWJ1dGUsIGF0dHJpYnV0ZV9uYW1lPSVzIGF0dHJpYnV0ZSB2YWx1ZT0lcwBDb3VsZCBub3QgZ2VuZXJhdGUgdGhlIGtleS4AQ291bGQgbm90IHN0b3JlIHRoZSBrZXkuAENvdWxkIG5vdCBhY3RpdmF0ZSB0aGUga2V5LgBDb3VsZCBub3QgZmV0Y2ggZ2VuZXJhdGVkIGtleQBDb3VsZCBub3Qgc3RvcmUvZ2VuZXJhdGUgdGhlIGtleSAtIGZhaWxlZCB0byBzZXQga2V5IGF0dHJpYnV0ZSB4LWtleS1yZWFkeQBDb3VsZCBub3QgcmV0cmlldmUga2V5IHNpZ25hdHVyZSBmcm9tIGN1c3RvbSBhdHRyaWJ1dGVzAENvdWxkIG5vdCByZXRyaWV2ZSBrZXkgZnJvbSBPS1YARXJyb3IgbG9hZGluZyB0cnVzdCBzdG9yZQBFcnJvciBzZXR0aW5nIHRoZSBjZXJ0aWZpY2F0ZSBmaWxlLgBFcnJvciBzZXR0aW5nIHRoZSBrZXkgZmlsZS4AUHJpdmF0ZSBrZXkgZG9lcyBub3QgbWF0Y2ggdGhlIGNlcnRpZmljYXRlIHB1YmxpYyBrZXkASW5jb3JyZWN0IEtleXJpbmcgZmlsZQBLZXlyaW5nX2VuY3J5cHRlZF9maWxlIGRlY3J5cHRpb24gZmFpbGVkLiBQbGVhc2UgdmVyaWZ5IC0ta2V5cmluZy1lbmNyeXB0ZWQtZmlsZS1wYXNzd29yZCBvcHRpb24gdmFsdWUuAEZvdW5kIG1hbGZvcm1lZCBrZXlyaW5nIGJhY2t1cCBmaWxlIC0gcmVtb3ZpbmcgaXQARXJyb3Igd2hpbGUgcmVzdG9yaW5nIGtleXJpbmcgZnJvbSBiYWNrdXAgZmlsZSBjYW5ub3Qgb3ZlcndyaXRlIGtleXJpbmcgd2l0aCBiYWNrdXAARXJyb3Igd2hpbGUgZmx1c2hpbmcgaW4tbWVtb3J5IGtleXJpbmcgaW50byBrZXlyaW5nIGZpbGUAS2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBlbmNyeXB0aW9uIGZhaWxlZC4gUGxlYXNlIHZlcmlmeSAtLWtleXJpbmctZW5jcnlwdGVkLWZpbGUtcGFzc3dvcmQgb3B0aW9uIHZhbHVlLgBrZXlyaW5nX2VuY3J5cHRlZF9maWxlX2RhdGEgY2Fubm90IGJlIHNldCB0byBuZXcgdmFsdWUgYXMgdGhlIGtleXJpbmcgZmlsZSBjYW5ub3QgYmUgY3JlYXRlZC9hY2Nlc3NlZCBpbiB0aGUgcHJvdmlkZWQgcGF0aABDb3VsZCBub3QgY3JlYXRlIGtleXJpbmcgZGlyZWN0b3J5IFRoZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIHdpbGwgc3RheSB1bnVzYWJsZSB1bnRpbCBjb3JyZWN0IHBhdGggdG8gdGhlIGtleXJpbmcgZGlyZWN0b3J5IGdldHMgcHJvdmlkZWQAVGhlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfcGFzc3dvcmQgbXVzdCBiZSBzZXQgdG8gYSB2YWxpZCB2YWx1ZS4AVG9vIGxvbmcga2V5cmluZ19lbmNyeXB0ZWRfZmlsZV9wYXNzd29yZCB2YWx1ZS4Aa2V5cmluZ19lbmNyeXB0ZWRfZmlsZSBpbml0aWFsaXphdGlvbiBmYWlsdXJlLiBQbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmdfZW5jcnlwdGVkX2ZpbGVfZGF0YSBwb2ludHMgdG8gcmVhZGFibGUga2V5cmluZyBmaWxlIG9yIGtleXJpbmcgZmlsZSBjYW4gYmUgY3JlYXRlZCBpbiB0aGUgc3BlY2lmaWVkIGxvY2F0aW9uIG9yIHBhc3N3b3JkIHRvIGRlY3J5cHQga2V5cmluZyBmaWxlIGlzIGNvcnJlY3QuAGtleXJpbmdfZW5jcnlwdGVkX2ZpbGUgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX2VuY3J5cHRlZF9maWxlIHBsdWdpbgBrZXlyaW5nX2F3c19jbWtfaWQgY2Fubm90IGJlIHNldCB0byB0aGUgbmV3IHZhbHVlIGFzIEFXUyBLTVMgc2VlbXMgdG8gbm90IHVuZGVyc3RhbmQgdGhlIGlkIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgdGhhdCBDTUsgaWQgcHJvdmlkZWQgaXMgY29ycmVjdC4Aa2V5cmluZ19hd3NfcmVnaW9uIGNhbm5vdCBiZSBzZXQgdG8gdGhlIG5ldyB2YWx1ZSBhcyBBV1MgS01TIHNlZW1zIHRvIG5vdCB1bmRlcnN0YW5kIHRoZSByZWdpb24gcHJvdmlkZWQuIFBsZWFzZSBjaGVjayB0aGF0IHJlZ2lvbiBwcm92aWRlZCBpcyBjb3JyZWN0LgBDb3VsZCBub3Qgb3BlbiBrZXlyaW5nX2F3cyBjb25maWd1cmF0aW9uIGZpbGU6ICVzLiBPUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgcmVhZCBBV1MgYWNjZXNzIGtleSBpZCBmcm9tIGtleXJpbmdfYXdzIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMuIE9TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZWFkIEFXUyBhY2Nlc3Mga2V5IGZyb20ga2V5cmluZ19hd3MgY29uZmlndXJhdGlvbiBmaWxlOiAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAUGF0aCB0byBrZXlyaW5nIGF3cyBjb25maWd1cmF0aW9uIGZpbGUgY2Fubm90IGJlIGVtcHR5AFBhdGggdG8ga2V5cmluZ19hd3Mgc3RvcmFnZSBmaWxlIGNhbm5vdCBiZSBlbXB0eS4AVW5hYmxlIHRvIGNyZWF0ZS9hY2Nlc3Mga2V5cmluZyBkaXJlY3RvcnkuAFVuYWJsZSB0byBjcmVhdGUvYWNjZXNzIGtleXJpbmdfYXdzIHN0b3JhZ2UgZmlsZS4gUGxlYXNlIGNoZWNrIGlmIGtleXJpbmdfYXdzX2RhdGFfZmlsZSBwb2ludHMgdG8gbG9jYXRpb24gd2hlcmUga2V5cmluZyBmaWxlIGNhbiBiZSBjcmVhdGVkL2FjY2Vzc2VkLiBQbGVhc2UgYWxzbyBtYWtlIHN1cmUgdGhhdCBNeVNRTCBzZXJ2ZXIncyB1c2VyIGhhcyBoaWdoIGVub3VnaCBwcml2aWxlZ2VzIHRvIGFjY2VzcyB0aGlzIGxvY2F0aW9uLgBrZXlyaW5nX2F3cyBpbml0aWFsaXphdGlvbiBmYWlsZWQgZHVlIHRvIGludGVybmFsIGVycm9yIHdoZW4gaW5pdGlhbGl6aW5nIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmUgLSAlcy4gT1MgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXM6AENvdWxkIG5vdCBhY2Nlc3Mga2V5cmluZ19hd3Mgc3RvcmFnZSBmaWxlIGluIHRoZSBwYXRoIHByb3ZpZGVkLiBQbGVhc2UgY2hlY2sgaWYgdGhlIGtleXJpbmdfYXdzIGRpcmVjdG9yeSBjYW4gYmUgYWNjZXNzZWQgYnkgTXlTUUwgU2VydmVyAGtleXJpbmdfYXdzX2Nta19pZCBoYXMgdG8gYmUgc2V0AENvdWxkIG5vdCBnZXQgQVdTIEtNUyBjcmVkZW50aWFscyBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGZpbGUAa2V5cmluZ19hd3MgaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4Aa2V5cmluZ19hd3MgaW5pdGlhbGl6YXRpb24gZmFpbHVyZSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSB0aGUgcGx1Z2luAEludmFsaWQga2V5IGxlbmd0aCBmb3IgZ2l2ZW4gYmxvY2sgY2lwaGVyAEZhaWxlZCB0byBnZW5lcmF0ZSBhIGtleSBkdWUgdG8gaW50ZXJuYWwgZXhjZXB0aW9uIGluc2lkZSBrZXlyaW5nX2ZpbGUgcGx1Z2luAEluY29ycmVjdCBLZXlyaW5nIGZpbGUARm91bmQgbWFsZm9ybWVkIGtleXJpbmcgYmFja3VwIGZpbGUgLSByZW1vdmluZyBpdABFcnJvciB3aGlsZSByZXN0b3Jpbmcga2V5cmluZyBmcm9tIGJhY2t1cCBmaWxlIGNhbm5vdCBvdmVyd3JpdGUga2V5cmluZyB3aXRoIGJhY2t1cABFcnJvciB3aGlsZSBmbHVzaGluZyBpbi1tZW1vcnkga2V5cmluZyBpbnRvIGtleXJpbmcgZmlsZQBXcm9uZyByZWdpb24AQ291bGQgbm90IGNvbm5lY3QgdG8gQVdTIEtNUyB3aXRoIHRoZSBjcmVkZW50aWFscyBwcm92aWRlZC4gUGxlYXNlIG1ha2Ugc3VyZSB0aGV5IGFyZSBjb3JyZWN0LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCBnZW5lcmF0ZSBhIG5ldyBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IGVuY3J5cHQga2V5LiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAENvdWxkIG5vdCByZS1lbmNyeXB0IGtleS4gQVdTIEtNUyByZXR1cm5lZCB0aGlzIGVycm9yOiAlcwBDb3VsZCBub3QgZGVjcnlwdCBrZXkuIEFXUyBLTVMgcmV0dXJuZWQgdGhpcyBlcnJvcjogJXMAQ291bGQgbm90IHJvdGF0ZSB0aGUgQ01LLiBBV1MgS01TIHJldHVybmVkIHRoaXMgZXJyb3I6ICVzAFRoZSByZXF1ZXN0ZWQgR1RJRCAnJXM6JWxsZCcgd2FzIGFscmVhZHkgdXNlZCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2suAFRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZCB3YXMga2lsbGVkLgBFcnJvciBhdCBldmVudCBoYW5kbGluZyEgR290IGVycm9yOiAlZC4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIGdyb3VwIEdUSUQgZXhlY3V0aW9uIGluZm9ybWF0aW9uLCBzb21lIHJlY292ZXJ5IG9wZXJhdGlvbnMgbWF5IGZhY2UgZnV0dXJlIGlzc3Vlcy4AQW4gZXJyb3Igb2NjdXJyZWQgd2hlbiB0cnlpbmcgdG8gcmVkdWNlIHRoZSBDZXJ0aWZpY2F0aW9uIGluZm9ybWF0aW9uIHNpemUgZm9yIHRyYW5zbWlzc2lvbi4ARmFpbGVkIHRvIGNyZWF0ZSBncm91cCByZXBsaWNhdGlvbiBwaXBlbGluZSBhcHBsaWVyIGNhY2hlIQBVbmJsb2NraW5nIHRoZSBncm91cCByZXBsaWNhdGlvbiB0aHJlYWQgd2FpdGluZyBmb3IgYXBwbGllciB0byBzdGFydCwgYXMgdGhlIHN0YXJ0IGdyb3VwIHJlcGxpY2F0aW9uIHdhcyBraWxsZWQuAFRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHBpcGVsaW5lIHdhcyBub3QgcHJvcGVybHkgZGlzcG9zZWQuIENoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGZ1cnRoZXIgaW5mby4AVGhlIGFwcGxpZXIgdGhyZWFkIGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4gVW5hYmxlIHRvIHByb2Nlc3MgbW9yZSB0cmFuc2FjdGlvbnMsIHRoaXMgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4ARmF0YWwgZXJyb3IgZHVyaW5nIGV4ZWN1dGlvbiBvbiB0aGUgQXBwbGllciBwcm9jZXNzIG9mIEdyb3VwIFJlcGxpY2F0aW9uLiBUaGUgc2VydmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4ARXJyb3Igc3RvcHBpbmcgYWxsIHJlcGxpY2F0aW9uIGNoYW5uZWxzIHdoaWxlIHNlcnZlciB3YXMgbGVhdmluZyB0aGUgZ3JvdXAuICVzAEVycm9yIHNlbmRpbmcgc2luZ2xlIHByaW1hcnkgbWVzc2FnZSBpbmZvcm1pbmcgdGhhdCBwcmltYXJ5IGRpZCBhcHBseSByZWxheSBsb2dzLgBFcnJvciB1cGRhdGluZyB0cmFuc2FjdGlvbiBzbmFwc2hvdCB2ZXJzaW9uIGFmdGVyIHRyYW5zYWN0aW9uIGJlaW5nIHBvc2l0aXZlbHkgY2VydGlmaWVkLgBFcnJvciBmZXRjaGluZyB0cmFuc2FjdGlvbiBzaWRubyBhZnRlciB0cmFuc2FjdGlvbiBiZWluZyBwb3NpdGl2ZWx5IGNlcnRpZmllZC4AQnJvYWRjYXN0IG9mIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgbWVzc2FnZSBmYWlsZWQuAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gYWRkIHRoZSBncm91cF9zaWQgaW4gdGhlIGdyb3VwX2d0aWRfc2lkX21hcCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB1cGRhdGluZyBncm91cF9ndGlkX2V4ZWN1dGVkIEdJVEQgc2V0IGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAFVuYWJsZSB0byBoYW5kbGUgdGhlIGRvbm9yJ3MgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gd2hlbiBpbml0aWFsaXppbmcgdGhlIGNvbmZsaWN0IGRldGVjdGlvbiBjb21wb25lbnQuIFBvc3NpYmxlIG91dCBvZiBtZW1vcnkgZXJyb3IuAEVycm9yIHdoZW4gZXN0YWJsaXNoaW5nIGEgc2VydmVyIGNvbm5lY3Rpb24gZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIEdUSUQgZXhlY3V0ZWQgc2V0LiBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBjYW4ndCBiZSBwcm9wZXJseSBpbml0aWFsaXplZC4ARXJyb3Igd2hpbGUgYWRkaW5nIHRoZSBzZXJ2ZXIgR1RJRCBFWEVDVVRFRCBzZXQgdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZSBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgcmV0cmlldmVkIHNldCBmb3IgaXRzIGFwcGxpZXIuIENlcnRpZmljYXRpb24gbW9kdWxlIGNhbid0IGJlIHByb3Blcmx5IGluaXRpYWxpemVkLgBFcnJvciB3aGlsZSBhZGRpbmcgdGhlIG1lbWJlciByZXRyaWV2ZWQgc2V0IHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIGR1cmluZyB0aGUgQ2VydGlmaWNhdGlvbiBtb2R1bGUgaW5pdGlhbGl6YXRpb24uAEVycm9yIGR1cmluZyBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIHVwZGF0ZSBsYXN0IGNvbmZsaWN0IGZyZWUgdHJhbnNhY3Rpb24sIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBub3QgYmUgdHJhY2tlZCBvbiBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX3N0YXRzLmxhc3RfY29uZmxpY3RfZnJlZV90cmFuc2FjdGlvbi4ARXJyb3IgdXBkYXRpbmcgdHJhbnNhY3Rpb24gc25hcHNob3QgdmVyc2lvbiByZWZlcmVuY2UgZm9yIGludGVybmFsIHN0b3JhZ2UuAEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uIHNpZG5vIHdoaWxlIGFkZGluZyB0byB0aGUgZ3JvdXBfZ3RpZF9leGVjdXRlZCBzZXQuAEVycm9yIHdoaWxlIGVuc3VyaW5nIHRoZSBzaWRubyBiZSBwcmVzZW50IGluIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkLgBJbXBvc3NpYmxlIHRvIGdlbmVyYXRlIEdsb2JhbCBUcmFuc2FjdGlvbiBJZGVudGlmaWVyOiB0aGUgaW50ZWdlciBjb21wb25lbnQgcmVhY2hlZCB0aGUgbWF4aW1hbCB2YWx1ZS4gUmVzdGFydCB0aGUgZ3JvdXAgd2l0aCBhIG5ldyBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBJbnZhbGlkIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciB1cGRhdGluZyBzdGFibGUgdHJhbnNhY3Rpb25zIHNldC4AVGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gZmlsbGluZyB0aGUgbWlzc2luZyBHVElEcyBvbiB0aGUgYXBwbGllciBjaGFubmVsIHJlY2VpdmVkIHNldC4gRGVzcGl0ZSBub3QgY3JpdGljYWwsIG9uIHRoZSBsb25nIHJ1biB0aGlzIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZXMuAFNraXBwaW5nIHRoZSBjb21wdXRhdGlvbiBvZiB0aGUgVHJhbnNhY3Rpb25zX2NvbW1pdHRlZF9hbGxfbWVtYmVycyBmaWVsZCBhcyBhbiBvbGRlciBpbnN0YW5jZSBvZiB0aGlzIGNvbXB1dGF0aW9uIGlzIHN0aWxsIG9uZ29pbmcuAE51bGwgcGFja2V0IG9uIGNlcnRpZmllcidzIHF1ZXVlLgBFcnJvciByZWFkaW5nIEdUSURzIGZyb20gdGhlIG1lc3NhZ2UuAEVycm9yIHByb2Nlc3Npbmcgc3RhYmxlIHRyYW5zYWN0aW9ucyBzZXQuAEVycm9yIHByb2Nlc3NpbmcgaW50ZXJzZWN0aW9uIG9mIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciBzZXR0aW5nIHN0YWJsZSB0cmFuc2FjdGlvbnMgc2V0LgBFcnJvciByZWFkaW5nIGdyb3VwX2d0aWRfZXh0cmFjdGVkIGZyb20gdGhlIFZpZXdfY2hhbmdlX2xvZ19ldmVudC4ARXJyb3IgcmVhZGluZyB0aGUgd3JpdGUgc2V0IGl0ZW0gJyVzJyBmcm9tIHRoZSBWaWV3X2NoYW5nZV9sb2dfZXZlbnQuAEVycm9yIGR1cmluZyBjZXJ0aWZpY2F0aW9uX2luZm8gaW5pdGlhbGl6YXRpb24uAFByaW1hcnkgaGFkIGFwcGxpZWQgYWxsIHJlbGF5IGxvZ3MsIGRpc2FibGVkIGNvbmZsaWN0IGRldGVjdGlvbi4ATWVzc2FnZSByZWNlaXZlZCB3aGlsZSB0aGUgcGx1Z2luIGlzIG5vdCByZWFkeSwgbWVzc2FnZSBkaXNjYXJkZWQuAE1lc3NhZ2UgcmVjZWl2ZWQgd2l0aG91dCBhIHByb3BlciBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyLgBFcnJvciBwcm9jZXNzaW5nIG1lc3NhZ2UgaW4gQ2VydGlmaWVyLgBUaGlzIHNlcnZlciB3YXMgbm90IGRlY2xhcmVkIG9ubGluZSBzaW5jZSBpdCBpcyBvbiBzdGF0dXMgJXMuAFRoaXMgc2VydmVyIHdhcyBkZWNsYXJlZCBvbmxpbmUgd2l0aGluIHRoZSByZXBsaWNhdGlvbiBncm91cC4AV2hlbiBkZWNsYXJpbmcgdGhlIHBsdWdpbiBvbmxpbmUgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBkaXNhYmxlIHRoZSBzZXJ2ZXIgcmVhZCBtb2RlIHNldHRpbmdzLiBUcnkgdG8gZGlzYWJsZSBpdCBtYW51YWxseS4AVGhlIG1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgd2FzIGRlY2xhcmVkIG9ubGluZSB3aXRoaW4gdGhlIHJlcGxpY2F0aW9uIGdyb3VwLgBNZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IGhhcyBiZWNvbWUgdW5yZWFjaGFibGUuAE1lbWJlciB3aXRoIGFkZHJlc3MgJXM6JXUgaXMgcmVhY2hhYmxlIGFnYWluLgBUaGlzIHNlcnZlciBpcyBub3QgYWJsZSB0byByZWFjaCBhIG1ham9yaXR5IG9mIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBUaGlzIHNlcnZlciB3aWxsIG5vdyBibG9jayBhbGwgdXBkYXRlcy4gVGhlIHNlcnZlciB3aWxsIHJlbWFpbiBibG9ja2VkIHVudGlsIGNvbnRhY3Qgd2l0aCB0aGUgbWFqb3JpdHkgaXMgcmVzdG9yZWQuIEl0IGlzIHBvc3NpYmxlIHRvIHVzZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHRvIGZvcmNlIGEgbmV3IGdyb3VwIG1lbWJlcnNoaXAuAFRoaXMgc2VydmVyIGlzIG5vdCBhYmxlIHRvIHJlYWNoIGEgbWFqb3JpdHkgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIFRoaXMgc2VydmVyIHdpbGwgbm93IGJsb2NrIGFsbCB1cGRhdGVzLiBUaGUgc2VydmVyIHdpbGwgcmVtYWluIGJsb2NrZWQgZm9yIHRoZSBuZXh0ICVsdSBzZWNvbmRzLiBVbmxlc3MgY29udGFjdCB3aXRoIHRoZSBtYWpvcml0eSBpcyByZXN0b3JlZCwgYWZ0ZXIgdGhpcyB0aW1lIHRoZSBtZW1iZXIgd2lsbCBlcnJvciBvdXQgYW5kIGxlYXZlIHRoZSBncm91cC4gSXQgaXMgcG9zc2libGUgdG8gdXNlIGdyb3VwX3JlcGxpY2F0aW9uX2ZvcmNlX21lbWJlcnMgdG8gZm9yY2UgYSBuZXcgZ3JvdXAgbWVtYmVyc2hpcC4AQSBncm91cCBtZW1iZXJzaGlwIGNoYW5nZSB3YXMgcmVjZWl2ZWQgYnV0IHRoZSBwbHVnaW4gaXMgYWxyZWFkeSBsZWF2aW5nIGR1ZSB0byB0aGUgY29uZmlndXJlZCB0aW1lb3V0IG9uIGdyb3VwX3JlcGxpY2F0aW9uX3VucmVhY2hhYmxlX21ham9yaXR5X3RpbWVvdXQgb3B0aW9uLgBUaGUgbWVtYmVyIGhhcyByZXN1bWVkIGNvbnRhY3Qgd2l0aCBhIG1ham9yaXR5IG9mIHRoZSBtZW1iZXJzIGluIHRoZSBncm91cC4gUmVndWxhciBvcGVyYXRpb24gaXMgcmVzdG9yZWQgYW5kIHRyYW5zYWN0aW9ucyBhcmUgdW5ibG9ja2VkLgBNZW1iZXJzIHJlbW92ZWQgZnJvbSB0aGUgZ3JvdXA6ICVzAFByaW1hcnkgc2VydmVyIHdpdGggYWRkcmVzcyAlcyBsZWZ0IHRoZSBncm91cC4gRWxlY3RpbmcgbmV3IFByaW1hcnkuAE1lbWJlcnMgam9pbmVkIHRoZSBncm91cDogJXMAVGhlcmUgd2FzIGEgcHJldmlvdXMgcGx1Z2luIGVycm9yIHdoaWxlIHRoZSBtZW1iZXIgam9pbmVkIHRoZSBncm91cC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AR3JvdXAgbWVtYmVyc2hpcCBjaGFuZ2VkIHRvICVzIG9uIHZpZXcgJXMuAEdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlZDogVGhpcyBtZW1iZXIgaGFzIGxlZnQgdGhlIGdyb3VwLgBNZW1iZXIgd2FzIGV4cGVsbGVkIGZyb20gdGhlIGdyb3VwIGR1ZSB0byBuZXR3b3JrIGZhaWx1cmVzLCBjaGFuZ2luZyBtZW1iZXIgc3RhdHVzIHRvIEVSUk9SLgBVbmFibGUgdG8gb3BlbiBzZXNzaW9uIHRvIChyZSlzZXQgcmVhZCBvbmx5IG1vZGUuIFNraXBwaW5nLgBBIG5ldyBwcmltYXJ5IHdpdGggYWRkcmVzcyAlczoldSB3YXMgZWxlY3RlZC4gJXMAVW5hYmxlIHRvIGRpc2FibGUgc3VwZXIgcmVhZCBvbmx5IGZsYWcuIFRyeSB0byBkaXNhYmxlIGl0IG1hbnVhbGx5AFVuYWJsZSB0byBzZXQgc3VwZXIgcmVhZCBvbmx5IGZsYWcuIFRyeSB0byBzZXQgaXQgbWFudWFsbHkuAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgcHJpbWFyeSBtZW1iZXIuAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgc2Vjb25kYXJ5IG1lbWJlciB3aXRoIHByaW1hcnkgbWVtYmVyIGFkZHJlc3MgJXM6JXUuAFVuYWJsZSB0byBzZXQgYW55IG1lbWJlciBhcyBwcmltYXJ5LiBObyBzdWl0YWJsZSBjYW5kaWRhdGUuAEVycm9yIHdoZW4gYWN0aXZhdGluZyBzdXBlcl9yZWFkX29ubHkgbW9kZSBvbiBzdGFydC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4AR3JvdXAgY29udGFpbnMgJWx1IG1lbWJlcnMgd2hpY2ggaXMgZ3JlYXRlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudCB2YWx1ZSBvZiAlbHUuIFRoaXMgY2FuIGxlYWQgdG8gYSBoaWdoZXIgdHJhbnNhY3Rpb25hbCBhYm9ydCByYXRlLgBNZW1iZXIgd2l0aCBhZGRyZXNzICclczoldScgZGlkbid0IHByb3ZpZGUgYW55IGRhdGEgZHVyaW5nIHRoZSBsYXN0IGdyb3VwIGNoYW5nZS4gR3JvdXAgaW5mb3JtYXRpb24gY2FuIGJlIG91dGRhdGVkIGFuZCBsZWFkIHRvIGVycm9ycyBvbiByZWNvdmVyeS4AVGhlcmUgaXMgYWxyZWFkeSBhIG1lbWJlciB3aXRoIHNlcnZlcl91dWlkICVzLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZm9yIGdyb3VwIGNoYW5nZS4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIEdUSUQgZXhlY3V0ZWQgc2V0LiBPcGVyYXRpb25zIGFuZCBjaGVja3MgbWFkZSB0byBncm91cCBqb2luZXJzIG1heSBiZSBpbmNvbXBsZXRlLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhpcyBtZW1iZXIgcmV0cmlldmVkIHNldCBmb3IgaXRzIGFwcGxpZXIuIE9wZXJhdGlvbnMgYW5kIGNoZWNrcyBtYWRlIHRvIGdyb3VwIGpvaW5lcnMgbWF5IGJlIGluY29tcGxldGUuAFRoZSBTVEFSVCBHUk9VUF9SRVBMSUNBVElPTiBjb21tYW5kIGZhaWxlZCBzaW5jZSB0aGUgZ3JvdXAgYWxyZWFkeSBoYXMgOSBtZW1iZXJzLgBNZW1iZXIgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgY29udGFpbnMgdHJhbnNhY3Rpb25zIG5vdCBwcmVzZW50IGluIHRoZSBncm91cC4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4ASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBhc3Nlc3MgaWYgdGhlIG1lbWJlciBoYXMgbW9yZSB0cmFuc2FjdGlvbnMgdGhhbiB0aGUgZ3JvdXAuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAE1lbWJlciB2ZXJzaW9uIGlzIGxvd2VyIHRoYW4gc29tZSBncm91cCBtZW1iZXIsIGJ1dCBzaW5jZSBvcHRpb24gJ2dyb3VwX3JlcGxpY2F0aW9uX2FsbG93X2xvY2FsX2xvd2VyX3ZlcnNpb25fam9pbiBpcyBlbmFibGVkLCBtZW1iZXIgd2lsbCBiZSBhbGxvd2VkIHRvIGpvaW4uAEVycm9yIHByb2Nlc3NpbmcgbG9jYWwgR1RJRCBzZXRzIHdoZW4gY29tcGFyaW5nIHRoaXMgbWVtYmVyIHRyYW5zYWN0aW9ucyBhZ2FpbnN0IHRoZSBncm91cC4AVGhpcyBtZW1iZXIgaGFzIG1vcmUgZXhlY3V0ZWQgdHJhbnNhY3Rpb25zIHRoYW4gdGhvc2UgcHJlc2VudCBpbiB0aGUgZ3JvdXAuIExvY2FsIHRyYW5zYWN0aW9uczogJXMgPiBHcm91cCB0cmFuc2FjdGlvbnM6ICVzAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZ3JvdXBfcmVwbGljYXRpb25fZ3RpZF9hc3NpZ25tZW50X2Jsb2NrX3NpemUgb3B0aW9uIHZhbHVlICclbGx1JyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyVsbHUnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIHRyYW5zYWN0aW9uLXdyaXRlLXNldC1leHRyYWN0aW9uIG9wdGlvbiB2YWx1ZSAnJXMnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJXMnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBUaGUgbWVtYmVyIGNvbmZpZ3VyYXRpb24gaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgZ3JvdXAgY29uZmlndXJhdGlvbi4gVmFyaWFibGVzIHN1Y2ggYXMgZ3JvdXBfcmVwbGljYXRpb25fc2luZ2xlX3ByaW1hcnlfbW9kZSBvciBncm91cF9yZXBsaWNhdGlvbl9lbmZvcmNlX3VwZGF0ZV9ldmVyeXdoZXJlX2NoZWNrcyBtdXN0IGhhdmUgdGhlIHNhbWUgdmFsdWUgb24gZXZlcnkgc2VydmVyIGluIHRoZSBncm91cC4gKG1lbWJlciBjb25maWd1cmF0aW9uIG9wdGlvbjogWyVzXSwgZ3JvdXAgY29uZmlndXJhdGlvbiBvcHRpb246IFslc10pLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gJXMARGV0ZWN0ZWQgcHJldmlvdXMgUkVTRVQgQklOQVJZIExPR1MgQU5EIEdUSURTIGludm9jYXRpb24gb3IgYW4gaXNzdWUgZXhpc3RzIGluIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHJlbGF5IGxvZy4gUHVyZ2luZyBleGlzdGluZyBhcHBsaWVyIGxvZ3MuAFVua25vd24gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmVzZXR0aW5nIGFwcGxpZXIncyBtb2R1bGUgbG9ncy4ARmFpbGVkIHRvIHNldHVwIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZC4ARXJyb3Igd2hpbGUgc3RhcnRpbmcgdGhlIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgdGhyZWFkAEZhaWxlZCB0byBzdG9wIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIHRocmVhZC4ARmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9uIGRhdGEgY29udGFpbmluZyByZXF1aXJlZCB0cmFuc2FjdGlvbiBpbmZvIGZvciBhcHBsaWVyAENhbid0IHN0YXJ0IHJlcGxpY2EgSU8gVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIGFuZCB0aGUgcHJpbWFyeSBtZW1iZXIgaXMgbm90IGtub3duLgBDYW4ndCBzdGFydCByZXBsaWNhIElPIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBvbiBhIHNlY29uZGFyeSBtZW1iZXIuAENhbid0IHN0YXJ0IHJlcGxpY2EgU1FMIFRIUkVBRCBvZiBjaGFubmVsICclcycgd2hlbiBncm91cCByZXBsaWNhdGlvbiBpcyBydW5uaW5nIHdpdGggc2luZ2xlLXByaW1hcnkgbW9kZSBhbmQgdGhlIHByaW1hcnkgbWVtYmVyIGlzIG5vdCBrbm93bi4AQ2FuJ3Qgc3RhcnQgcmVwbGljYSBTUUwgVEhSRUFEIG9mIGNoYW5uZWwgJyVzJyB3aGVuIGdyb3VwIHJlcGxpY2F0aW9uIGlzIHJ1bm5pbmcgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIG9uIGEgc2Vjb25kYXJ5IG1lbWJlci4AVGFibGUgJXMgZG9lcyBub3QgdXNlIHRoZSBJbm5vREIgc3RvcmFnZSBlbmdpbmUuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AVGFibGUgJXMgZG9lcyBub3QgaGF2ZSBhbnkgUFJJTUFSWSBLRVkuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AVGFibGUgJXMgaGFzIGEgZm9yZWlnbiBrZXkgd2l0aCAnQ0FTQ0FERScsICdTRVQgTlVMTCcgb3IgJ1NFVCBERUZBVUxUJyBjbGF1c2UuIFRoaXMgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBHcm91cCBSZXBsaWNhdGlvbi4AZ3JvdXBfcmVwbGljYXRpb25fYXV0b19pbmNyZW1lbnRfaW5jcmVtZW50IGlzIHJlc2V0IHRvICVsdQBhdXRvX2luY3JlbWVudF9vZmZzZXQgaXMgcmVzZXQgdG8gJWx1AGdyb3VwX3JlcGxpY2F0aW9uX2F1dG9faW5jcmVtZW50X2luY3JlbWVudCBpcyBzZXQgdG8gJWx1AGF1dG9faW5jcmVtZW50X29mZnNldCBpcyBzZXQgdG8gJWx1AEZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbiBjb250ZXh0IGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBGYWlsZWQgdG8gZmV0Y2ggRm9ybWF0X2Rlc2NyaXB0aW9uX2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHNlcnZlciBpbmZvIGZvciBhcHBsaWVyAEZhaWxlZCB0byBmZXRjaCBUcmFuc2FjdGlvbl9jb250ZXh0X2xvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHRyYW5zYWN0aW9uIGluZm8gZm9yIGNlcnRpZmljYXRpb24ARmFpbGVkIHRvIHJlYWQgc25hcHNob3QgdmVyc2lvbiBmcm9tIHRyYW5zYWN0aW9uIGNvbnRleHQgZXZlbnQgcmVxdWlyZWQgZm9yIGNlcnRpZmljYXRpb24ARmFpbGVkIHRvIGZldGNoIEd0aWRfbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgdHJhbnNhY3Rpb24gaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBVbmFibGUgdG8gdXBkYXRlIGNlcnRpZmljYXRpb24gcmVzdWx0IG9uIHNlcnZlciBzaWRlLCB0aHJlYWRfaWQ6ICVsdQBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIGxvY2FsIHRyYW5zYWN0aW9ucwBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gbm8gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIGxvY2FsIHRyYW5zYWN0aW9ucwBGYWlsZWQgdG8gbm90aWZ5IGNlcnRpZmljYXRpb24gb3V0Y29tZQBVbmFibGUgdG8gYWRkIGd0aWQgaW5mb3JtYXRpb24gdG8gdGhlIGdyb3VwX2d0aWRfZXhlY3V0ZWQgc2V0IHdoZW4gZ3RpZCB3YXMgcHJvdmlkZWQgZm9yIHJlbW90ZSB0cmFuc2FjdGlvbnMAVW5hYmxlIHRvIGFkZCBndGlkIGluZm9ybWF0aW9uIHRvIHRoZSBncm91cF9ndGlkX2V4ZWN1dGVkIHNldCB3aGVuIGd0aWQgd2FzIG5vdCBwcm92aWRlZCBmb3IgcmVtb3RlIHRyYW5zYWN0aW9ucwBGYWlsZWQgdG8gZmV0Y2ggVmlld19jaGFuZ2VfbG9nX2V2ZW50IGNvbnRhaW5pbmcgcmVxdWlyZWQgaW5mbyBmb3IgY2VydGlmaWNhdGlvbgBFcnJvciB3aGVuIGNvbnRhY3RpbmcgdGhlIHNlcnZlciB0byBlbnN1cmUgdGhlIHByb3BlciBsb2dnaW5nIG9mIGEgZ3JvdXAgY2hhbmdlIGluIHRoZSBiaW5sb2cAVGltZW91dCB3aGVuIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gZXhlY3V0ZSBsb2NhbCB0cmFuc2FjdGlvbnMgaW4gb3JkZXIgYXNzdXJlIHRoZSBncm91cCBjaGFuZ2UgcHJvcGVyIGxvZ2dpbmcARmFpbGVkIHRvIGZldGNoIExvZ19ldmVudCBjb250YWluaW5nIHJlcXVpcmVkIHNlcnZlciBpbmZvIGZvciBhcHBsaWVyAFVuYWJsZSB0byBzdGFydCBHcm91cCBSZXBsaWNhdGlvbi4gUmVwbGljYXRpb24gYXBwbGllciBpbmZyYXN0cnVjdHVyZSBpcyBub3QgaW5pdGlhbGl6ZWQgc2luY2UgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIC0taW5pdGlhbGl6ZSwgLS1pbml0aWFsaXplLWluc2VjdXJlIG9yIC0tdXBncmFkZT1NSU5JTUFMIG9uIGEgc2VydmVyIHVwZ3JhZGUuAEZhaWxlZCB0byBlc3RhYmxpc2ggYW4gaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24gdG8gZXhlY3V0ZSBwbHVnaW4gb3BlcmF0aW9ucwBTZXR0aW5nIHN1cGVyX3JlYWRfb25seT1PTi4AU2V0dGluZyBzdXBlcl9yZWFkX29ubHk9T0ZGLgBraWxsZWQgc2Vzc2lvbiBpZDogJWQgc3RhdHVzOiAlZABraWxsZWQgZmFpbGVkIGlkOiAlZCBmYWlsZWQ6ICVkAEludGVybmFsIHF1ZXJ5OiAlcyByZXN1bHQgaW4gZXJyb3IuIEVycm9yIG51bWJlcjogJWxkAEVycm9yIGNvcHlpbmcgZnJvbSBlbXB0eSBzdHJpbmcgAFF1ZXJ5IGV4ZWN1dGlvbiByZXN1bHRlZCBpbiBmYWlsdXJlLiBlcnJubzogJWQAVW5hYmxlIHRvIGNyZWF0ZSBhIHNlc3Npb24gZm9yIGV4ZWN1dGluZyB0aGUgcXVlcmllcyBvbiB0aGUgc2VydmVyAFRoZSBtZW1iZXIgd2l0aCBhZGRyZXNzICVzOiV1IGhhcyB1bmV4cGVjdGVkbHkgZGlzYXBwZWFyZWQsIGtpbGxpbmcgdGhlIGN1cnJlbnQgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgY29ubmVjdGlvbgBNYXhpbXVtIG51bWJlciBvZiByZXRyaWVzIHdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgdG8gYSBkb25vciByZWFjaGVkLiBBYm9ydGluZyBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeS4AQWxsIGRvbm9ycyBsZWZ0LiBBYm9ydGluZyBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeS4ARXN0YWJsaXNoaW5nIGdyb3VwIHJlY292ZXJ5IGNvbm5lY3Rpb24gd2l0aCBhIHBvc3NpYmxlIGRvbm9yLiBBdHRlbXB0ICVkLyVkAFJldHJ5aW5nIGdyb3VwIHJlY292ZXJ5IGNvbm5lY3Rpb24gd2l0aCBhbm90aGVyIGRvbm9yLiBBdHRlbXB0ICVkLyVkAE5vIHZhbGlkIGRvbm9ycyBleGlzdCBpbiB0aGUgZ3JvdXAsIHJldHJ5aW5nAEVycm9yIHdoZW4gY29uZmlndXJpbmcgdGhlIGFzeW5jaHJvbm91cyByZWNvdmVyeSBjaGFubmVsIGNvbm5lY3Rpb24gdG8gdGhlIGRvbm9yLgBFc3RhYmxpc2hpbmcgY29ubmVjdGlvbiB0byBhIGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGRvbm9yICVzIGF0ICVzIHBvcnQ6ICVkLgBFcnJvciB3aGlsZSBjcmVhdGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgY2hhbm5lbCB3aXRoIGRvbm9yICVzIGF0ICVzIHBvcnQ6ICVkLgBUaGVyZSB3YXMgYW4gZXJyb3Igd2hlbiBjb25uZWN0aW5nIHRvIHRoZSBkb25vciBzZXJ2ZXIuIFBsZWFzZSBjaGVjayB0aGF0IGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5IGNoYW5uZWwgY3JlZGVudGlhbHMgYW5kIGFsbCBNRU1CRVJfSE9TVCBjb2x1bW4gdmFsdWVzIG9mIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJzIHRhYmxlIGFyZSBjb3JyZWN0IGFuZCBETlMgcmVzb2x2YWJsZS4ARm9yIGRldGFpbHMgcGxlYXNlIGNoZWNrIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9jb25uZWN0aW9uX3N0YXR1cyB0YWJsZSBhbmQgZXJyb3IgbG9nIG1lc3NhZ2VzIG9mIFJlcGxpY2EgSS9PIGZvciBjaGFubmVsIGdyb3VwX3JlcGxpY2F0aW9uX3JlY292ZXJ5LgBFcnJvciB3aGlsZSBzdGFydGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkgcmVjZWl2ZXIvYXBwbGllciB0aHJlYWRzAFRlcm1pbmF0aW5nIGV4aXN0aW5nIGdyb3VwIHJlcGxpY2F0aW9uIGRvbm9yIGNvbm5lY3Rpb24gYW5kIHB1cmdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgbG9ncy4ARXJyb3Igd2hlbiBzdG9wcGluZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gaW5jcmVtZW50YWwgcmVjb3ZlcnkncyBkb25vciBjb25uZWN0aW9uAEVycm9yIHdoZW4gcHVyZ2luZyB0aGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkncyByZWxheSBsb2dzAFVuYWJsZSB0byBraWxsIHRoZSBjdXJyZW50IGdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IGRvbm9yIGNvbm5lY3Rpb24gYWZ0ZXIgYW4gYXBwbGllciBlcnJvci4gSW5jcmVtZW50YWwgcmVjb3Zlcnkgd2lsbCBzaHV0ZG93bi4AVW5hYmxlIHRvIGtpbGwgdGhlIGN1cnJlbnQgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgZG9ub3IgY29ubmVjdGlvbiBkdXJpbmcgZmFpbG92ZXIuIEluY3JlbWVudGFsIHJlY292ZXJ5IHdpbGwgc2h1dGRvd24uAFVuZXhwZWN0ZWQgZXJyb3Igd2hlbiBub3RpZnlpbmcgYW4gaW50ZXJuYWwgY29tcG9uZW50IG5hbWVkICVzIHJlZ2FyZGluZyBhIGdyb3VwIG1lbWJlcnNoaXAgZXZlbnQuAEFuIHVuZGVmaW5lZCBlcnJvciB3YXMgZm91bmQgd2hpbGUgYnJvYWRjYXN0aW5nIGFuIGludGVybmFsIGdyb3VwIG1lbWJlcnNoaXAgbm90aWZpY2F0aW9uISBUaGlzIGlzIGxpa2VseSB0byBoYXBwZW4gaWYgeW91ciBjb21wb25lbnRzIG9yIHBsdWdpbnMgYXJlIG5vdCBwcm9wZXJseSBsb2FkZWQgb3IgYXJlIG1hbGZ1bmN0aW9uaW5nIQBBbiB1bmRlZmluZWQgZXJyb3Igd2FzIGZvdW5kIHdoaWxlIGJyb2FkY2FzdGluZyBhbiBpbnRlcm5hbCBncm91cCBtZW1iZXIgc3RhdHVzIG5vdGlmaWNhdGlvbiEgVGhpcyBpcyBsaWtlbHkgdG8gaGFwcGVuIGlmIHlvdXIgY29tcG9uZW50cyBvciBwbHVnaW5zIGFyZSBub3QgcHJvcGVybHkgbG9hZGVkIG9yIGFyZSBtYWxmdW5jdGlvbmluZyEATm8gbWVtb3J5IHRvIGdlbmVyYXRlIHdyaXRlIGlkZW50aWZpY2F0aW9uIGhhc2gAQmFzZSA2NCBlbmNvZGluZyBvZiB0aGUgd3JpdGUgaWRlbnRpZmljYXRpb24gaGFzaCBmYWlsZWQAQmlubG9nIGZvcm1hdCBzaG91bGQgYmUgUk9XIGZvciBHcm91cCBSZXBsaWNhdGlvbgBiaW5sb2dfY2hlY2tzdW0gc2hvdWxkIGJlIE5PTkUgZm9yIEdyb3VwIFJlcGxpY2F0aW9uAEEgdHJhbnNhY3Rpb25fd3JpdGVfc2V0X2V4dHJhY3Rpb24gYWxnb3JpdGhtIHNob3VsZCBiZSBzZWxlY3RlZCB3aGVuIHJ1bm5pbmcgR3JvdXAgUmVwbGljYXRpb24AVHJhbnNhY3Rpb24gaXNvbGF0aW9uIGxldmVsICh0eF9pc29sYXRpb24pIGlzIHNldCB0byBTRVJJQUxJWkFCTEUsIHdoaWNoIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggR3JvdXAgUmVwbGljYXRpb24AVHJhbnNhY3Rpb24gY2Fubm90IGJlIGV4ZWN1dGVkIHdoaWxlIEdyb3VwIFJlcGxpY2F0aW9uIGlzIHN0b3BwaW5nLgBUcmFuc2FjdGlvbiBjYW5ub3QgYmUgZXhlY3V0ZWQgd2hpbGUgR3JvdXAgUmVwbGljYXRpb24gaXMgcmVjb3ZlcmluZy4gVHJ5IGFnYWluIHdoZW4gdGhlIHNlcnZlciBpcyBPTkxJTkUuAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBvbiBFUlJPUiBzdGF0ZS4gQ2hlY2sgZm9yIGVycm9ycyBhbmQgcmVzdGFydCB0aGUgcGx1Z2luAFRyYW5zYWN0aW9uIGNhbm5vdCBiZSBleGVjdXRlZCB3aGlsZSBHcm91cCBSZXBsaWNhdGlvbiBpcyBPRkZMSU5FLiBDaGVjayBmb3IgZXJyb3JzIGFuZCByZXN0YXJ0IHRoZSBwbHVnaW4AV2UgY2FuIG9ubHkgdXNlIG9uZSBjYWNoZSB0eXBlIGF0IGEgdGltZSBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byByZWluaXQgYmlubG9nIGNhY2hlIGxvZyBmb3IgcmVhZCBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBjcmVhdGUgdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gZXh0cmFjdCB0aGUgc2V0IG9mIGl0ZW1zIHdyaXR0ZW4gZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gb24gc2Vzc2lvbiAldQBGYWlsZWQgdG8gZ2F0aGVyIHRoZSBzZXQgb2YgaXRlbXMgd3JpdHRlbiBkdXJpbmcgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBvbiBzZXNzaW9uICV1AEVycm9yIG9uIHNlc3Npb24gJXUuIFRyYW5zYWN0aW9uIG9mIHNpemUgJWxsdSBleGNlZWRzIHNwZWNpZmllZCBsaW1pdCAlbHUuIFRvIGluY3JlYXNlIHRoZSBsaW1pdCBwbGVhc2UgYWRqdXN0IGdyb3VwX3JlcGxpY2F0aW9uX3RyYW5zYWN0aW9uX3NpemVfbGltaXQgb3B0aW9uLgBFcnJvciB3aGlsZSByZS1pbml0aWFsaXppbmcgYW4gaW50ZXJuYWwgY2FjaGUsIGZvciByZWFkIG9wZXJhdGlvbnMsIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgYXBwZW5kaW5nIGRhdGEgdG8gYW4gaW50ZXJuYWwgY2FjaGUgb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSB3cml0aW5nIHRvIHRyYW5zYWN0aW9uIG1lc3NhZ2Ugb24gc2Vzc2lvbiAldQBVbmFibGUgdG8gcmVnaXN0ZXIgZm9yIGdldHRpbmcgbm90aWZpY2F0aW9ucyByZWdhcmRpbmcgdGhlIG91dGNvbWUgb2YgdGhlIHRyYW5zYWN0aW9uIG9uIHNlc3Npb24gJXUARXJyb3IgYnJvYWRjYXN0aW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBncm91cCBvbiBzZXNzaW9uICV1LiBNZXNzYWdlIGlzIHRvbyBiaWcuAEVycm9yIHdoaWxlIGJyb2FkY2FzdGluZyB0aGUgdHJhbnNhY3Rpb24gdG8gdGhlIGdyb3VwIG9uIHNlc3Npb24gJXUARXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgY29uZmxpY3QgZGV0ZWN0aW9uIHByb2NlZHVyZSB0byBmaW5pc2ggb24gc2Vzc2lvbiAldQBFcnJvciB3aGlsZSByZS1pbml0aWFsaXppbmcgYW4gaW50ZXJuYWwgY2FjaGUsIGZvciB3cml0ZSBvcGVyYXRpb25zLCBvbiBzZXNzaW9uICV1AEZhaWxlZCB0byBjcmVhdGUgZ3JvdXAgcmVwbGljYXRpb24gY29tbWl0IGNhY2hlIG9uIHNlc3Npb24gJXUARmFpbGVkIHRvIHJlaW5pdCBncm91cCByZXBsaWNhdGlvbiBjb21taXQgY2FjaGUgZm9yIHdyaXRlIG9uIHNlc3Npb24gJXUAQSBwcmV2aW91cyByZWNvdmVyeSBzZXNzaW9uIGlzIHN0aWxsIHJ1bm5pbmcuIFBsZWFzZSBzdG9wIHRoZSBncm91cCByZXBsaWNhdGlvbiBwbHVnaW4gYW5kIHdhaXQgZm9yIGl0IHRvIHN0b3AARmF0YWwgZXJyb3IgZHVyaW5nIHRoZSBpbmNyZW1lbnRhbCByZWNvdmVyeSBwcm9jZXNzIG9mIEdyb3VwIFJlcGxpY2F0aW9uLiBUaGUgc2VydmVyIHdpbGwgbGVhdmUgdGhlIGdyb3VwLgBFcnJvciBzdG9wcGluZyBhbGwgcmVwbGljYXRpb24gY2hhbm5lbHMgd2hpbGUgc2VydmVyIHdhcyBsZWF2aW5nIHRoZSBncm91cC4gJXMAVW5hYmxlIHRvIGV2YWx1YXRlIHRoZSBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGV4ZWN1dGlvbiBzdGF0dXMuIEdyb3VwIHJlcGxpY2F0aW9uIHJlY292ZXJ5IHdpbGwgc2h1dGRvd24gdG8gYXZvaWQgZGF0YSBjb3JydXB0aW9uLgBPbmx5IG9uZSBzZXJ2ZXIgYWxpdmUuIERlY2xhcmluZyB0aGlzIHNlcnZlciBhcyBvbmxpbmUgd2l0aGluIHRoZSByZXBsaWNhdGlvbiBncm91cABFcnJvciB3aGVuIHByb2Nlc3NpbmcgY2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiBpbiB0aGUgaW5jcmVtZW50YWwgcmVjb3ZlcnkgcHJvY2VzcwBVbmFibGUgdG8gZW5zdXJlIHRoZSBleGVjdXRpb24gb2YgZ3JvdXAgdHJhbnNhY3Rpb25zIHJlY2VpdmVkIGR1cmluZyByZWNvdmVyeS4ARXJyb3Igd2hpbGUgc2VuZGluZyBtZXNzYWdlIGluIHRoZSBncm91cCByZXBsaWNhdGlvbiBpbmNyZW1lbnRhbCByZWNvdmVyeSBwcm9jZXNzLgBVbmFibGUgdG8gcmVhZCB0aGUgc2VydmVyIHZhbHVlIGZvciB0aGUgc3VwZXJfcmVhZF9vbmx5IHZhcmlhYmxlLgBVbmFibGUgdG8gcmVhZCB0aGUgc2VydmVyIHZhbHVlcyBmb3IgdGhlIHJlYWRfb25seSBhbmQgc3VwZXJfcmVhZF9vbmx5IHZhcmlhYmxlcy4AVW5hYmxlIHRvIHJlc2V0IHRoZSBzZXJ2ZXIgcmVhZCBtb2RlIHNldHRpbmdzLiBUcnkgdG8gcmVzZXQgdGhlbSBtYW51YWxseS4ARHVlIHRvIGEgcGx1Z2luIGVycm9yLCBzb21lIHRyYW5zYWN0aW9ucyB3ZXJlIHVuYWJsZSB0byBiZSBjZXJ0aWZpZWQgYW5kIHdpbGwgbm93IHJvbGxiYWNrLgBFcnJvciB3aGVuIHRyeWluZyB0byB1bmJsb2NrIG5vbiBjZXJ0aWZpZWQgb3IgY29uc2lzdGVudCB0cmFuc2FjdGlvbnMuIENoZWNrIGZvciBjb25zaXN0ZW5jeSBlcnJvcnMgd2hlbiByZXN0YXJ0aW5nIHRoZSBzZXJ2aWNlAFRoaXMgc2VydmVyIGlzIHdvcmtpbmcgYXMgc2Vjb25kYXJ5IG1lbWJlciB3aXRoIHByaW1hcnkgbWVtYmVyIGFkZHJlc3MgJXM6JXUuAFVuYWJsZSB0byBzdGFydCBHcm91cCBSZXBsaWNhdGlvbi4gUmVwbGljYXRpb24gYXBwbGllciBpbmZyYXN0cnVjdHVyZSBpcyBub3QgaW5pdGlhbGl6ZWQgc2luY2UgdGhlIHNlcnZlciB3YXMgc3RhcnRlZCB3aXRoIHNlcnZlcl9pZD0wLiBQbGVhc2UsIHJlc3RhcnQgdGhlIHNlcnZlciB3aXRoIHNlcnZlcl9pZCBsYXJnZXIgdGhhbiAwLgBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIG11c3QgYmUgZW1wdHkgb24gZ3JvdXAgc3RhcnQuIEN1cnJlbnQgdmFsdWU6ICclcycASXQgd2FzIG5vdCBwb3NzaWJsZSB0byBndWFyYW50ZWUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHBsdWdpbiBzdHJ1Y3R1cmVzIG9uIHNlcnZlciBzdGFydABDb3VsZCBub3QgZW5hYmxlIHRoZSBzZXJ2ZXIgcmVhZCBvbmx5IG1vZGUgYW5kIGd1YXJhbnRlZSBhIHNhZmUgcmVjb3ZlcnkgZXhlY3V0aW9uAEVycm9yIG9uIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lIGluaXRpYWxpemF0aW9uAENhbid0IHN0YXJ0IGdyb3VwIHJlcGxpY2F0aW9uIG9uIHNlY29uZGFyeSBtZW1iZXIgd2l0aCBzaW5nbGUtcHJpbWFyeSBtb2RlIHdoaWxlIGFzeW5jaHJvbm91cyByZXBsaWNhdGlvbiBjaGFubmVscyBhcmUgcnVubmluZy4ARXJyb3Igb24gZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgc3RhcnQAVGltZW91dCBvbiB3YWl0IGZvciB2aWV3IGFmdGVyIGpvaW5pbmcgZ3JvdXAARXJyb3IgY2FsbGluZyBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMATWVtYmVyIHNlcnZlcl91dWlkIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBncm91cC4gU2VydmVyX3V1aWQgJXMgbWF0Y2hlcyBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICVzLgBNZW1iZXIgY29uZmlndXJhdGlvbjogbWVtYmVyX2lkOiAlbHU7IG1lbWJlcl91dWlkOiAiJXMiOyBzaW5nbGUtcHJpbWFyeSBtb2RlOiAiJXMiOyBncm91cF9yZXBsaWNhdGlvbl9hdXRvX2luY3JlbWVudF9pbmNyZW1lbnQ6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZDogIiVzIjsAVW5hYmxlIHRvIGNvbmZpcm0gd2hldGhlciB0aGUgc2VydmVyIGhhcyBsZWZ0IHRoZSBncm91cCBvciBub3QuIENoZWNrIHBlcmZvcm1hbmNlX3NjaGVtYS5yZXBsaWNhdGlvbl9ncm91cF9tZW1iZXJzIHRvIGNoZWNrIGdyb3VwIG1lbWJlcnNoaXAgaW5mb3JtYXRpb24uAFNraXBwaW5nIGxlYXZlIG9wZXJhdGlvbjogY29uY3VycmVudCBhdHRlbXB0IHRvIGxlYXZlIHRoZSBncm91cCBpcyBvbi1nb2luZy4AU2tpcHBpbmcgbGVhdmUgb3BlcmF0aW9uOiBtZW1iZXIgYWxyZWFkeSBsZWZ0IHRoZSBncm91cC4AR29pbmcgdG8gd2FpdCBmb3IgdmlldyBtb2RpZmljYXRpb24AV2hpbGUgbGVhdmluZyB0aGUgZ3JvdXAgZHVlIHRvIGEgc3RvcCwgc2h1dGRvd24gb3IgZmFpbHVyZSB0aGVyZSB3YXMgYSB0aW1lb3V0IHJlY2VpdmluZyBhIHZpZXcgY2hhbmdlLiBUaGlzIGNhbiBsZWFkIHRvIGEgcG9zc2libGUgaW5jb25zaXN0ZW50IHN0YXRlLiBDaGVjayB0aGUgbG9nIGZvciBtb3JlIGRldGFpbHMAUmVxdWVzdGluZyB0byBsZWF2ZSB0aGUgZ3JvdXAgZGVzcGl0ZSBvZiBub3QgYmVpbmcgYSBtZW1iZXIAUGx1Z2luICdncm91cF9yZXBsaWNhdGlvbicgaXMgc3RvcHBpbmcuAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGhhcyBiZWVuIHN0b3BwZWQuAE9uIHBsdWdpbiBzaHV0ZG93biBpdCB3YXMgbm90IHBvc3NpYmxlIHRvIGVuYWJsZSB0aGUgc2VydmVyIHJlYWQgb25seSBtb2RlLiBMb2NhbCB0cmFuc2FjdGlvbnMgd2lsbCBiZSBhY2NlcHRlZCBhbmQgY29tbWl0dGVkLgBPbiBzaHV0ZG93biB0aGVyZSB3YXMgYSB0aW1lb3V0IG9uIHRoZSBHcm91cCBSZXBsaWNhdGlvbiByZWNvdmVyeSBtb2R1bGUgdGVybWluYXRpb24uIENoZWNrIHRoZSBsb2cgZm9yIG1vcmUgZGV0YWlscwBPbiBzaHV0ZG93biB0aGVyZSB3YXMgYSB0aW1lb3V0IG9uIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIHRlcm1pbmF0aW9uLgBVbmV4cGVjdGVkIGZhaWx1cmUgd2hpbGUgc2h1dHRpbmcgZG93biByZWdpc3RyeSBtb2R1bGUhAEZhaWx1cmUgZHVyaW5nIEdyb3VwIFJlcGxpY2F0aW9uIGhhbmRsZXIgaW5pdGlhbGl6YXRpb24ARmFpbHVyZSB3aGVuIHJlZ2lzdGVyaW5nIHRoZSBzZXJ2ZXIgc3RhdGUgb2JzZXJ2ZXJzAEZhaWx1cmUgd2hlbiByZWdpc3RlcmluZyB0aGUgdHJhbnNhY3Rpb25zIHN0YXRlIG9ic2VydmVycwBGYWlsdXJlIHdoZW4gcmVnaXN0ZXJpbmcgdGhlIGJpbmxvZyBzdGF0ZSBvYnNlcnZlcnMAVW5hYmxlIHRvIHN0YXJ0IEdyb3VwIFJlcGxpY2F0aW9uIG9uIGJvb3QARmFpbHVyZSB3aGVuIHN0b3BwaW5nIEdyb3VwIFJlcGxpY2F0aW9uIG9uIHBsdWdpbiB1bmluc3RhbGwARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIHNlcnZlciBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIHRyYW5zYWN0aW9ucyBzdGF0ZSBvYnNlcnZlcnMARmFpbHVyZSB3aGVuIHVucmVnaXN0ZXJpbmcgdGhlIGJpbmxvZyBzdGF0ZSBvYnNlcnZlcnMAQWxsIEdyb3VwIFJlcGxpY2F0aW9uIHNlcnZlciBvYnNlcnZlcnMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSB1bnJlZ2lzdGVyZWQAVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lLgBVbmFibGUgdG8gcGFyc2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUuAENhbm5vdCBzdGFydCB0aGUgR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciBhcyBhIHByZXZpb3VzIHNodXRkb3duIGlzIHN0aWxsIHJ1bm5pbmc6IFRoZSB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgaXRzIHRhc2sgaXMgY29tcGxldGUuAFVuYWJsZSB0byBpbml0aWFsaXplIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBhcHBsaWVyIG1vZHVsZS4AR3JvdXAgUmVwbGljYXRpb24gYXBwbGllciBtb2R1bGUgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIQBHcm91cCBjb21tdW5pY2F0aW9uIFNTTCBjb25maWd1cmF0aW9uOiBncm91cF9yZXBsaWNhdGlvbl9zc2xfbW9kZTogIiVzIjsgc2VydmVyX2tleV9maWxlOiAiJXMiOyBzZXJ2ZXJfY2VydF9maWxlOiAiJXMiOyBjbGllbnRfa2V5X2ZpbGU6ICIlcyI7IGNsaWVudF9jZXJ0X2ZpbGU6ICIlcyI7IGNhX2ZpbGU6ICIlcyI7IGNhX3BhdGg6ICIlcyI7IGNpcGhlcjogIiVzIjsgdGxzX3ZlcnNpb246ICIlcyI7IHRsc19jaXBoZXJzdWl0ZXM6ICIlcyI7IGNybF9maWxlOiAiJXMiOyBjcmxfcGF0aDogIiVzIjsgc3NsX2ZpcHNfbW9kZTogIiVzIgBNeVNRTCBzZXJ2ZXIgZG9lcyBub3QgaGF2ZSBTU0wgc3VwcG9ydCBhbmQgZ3JvdXBfcmVwbGljYXRpb25fc3NsX21vZGUgaXMgIiVzIiwgU1RBUlQgR1JPVVBfUkVQTElDQVRJT04gd2lsbCBhYm9ydABHcm91cCBjb21tdW5pY2F0aW9uIFNTTCBjb25maWd1cmF0aW9uOiBncm91cF9yZXBsaWNhdGlvbl9zc2xfbW9kZTogIiVzIgBVbmFibGUgdG8gaW5pdGlhbGl6ZSB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUAQmlubG9nIG11c3QgYmUgZW5hYmxlZCBmb3IgR3JvdXAgUmVwbGljYXRpb24AR3RpZCBtb2RlIHNob3VsZCBiZSBPTiBmb3IgR3JvdXAgUmVwbGljYXRpb24ATE9HX1JFUExJQ0FfVVBEQVRFUyBzaG91bGQgYmUgT04gZm9yIEdyb3VwIFJlcGxpY2F0aW9uAEV4dHJhY3Rpb24gb2YgdHJhbnNhY3Rpb24gd3JpdGUgc2V0cyByZXF1aXJlcyBhbiBoYXNoIGFsZ29yaXRobSBjb25maWd1cmF0aW9uLiBQbGVhc2UsIGRvdWJsZSBjaGVjayB0aGF0IHRoZSBwYXJhbWV0ZXIgdHJhbnNhY3Rpb24td3JpdGUtc2V0LWV4dHJhY3Rpb24gaXMgc2V0IHRvIGEgdmFsaWQgYWxnb3JpdGhtLgBBcHBsaWVyIG1ldGFkYXRhIHJlcG9zaXRvcnkgbXVzdCBiZSBzZXQgdG8gVEFCTEUAQ29ubmVjdGlvbiBtZXRhZGF0YSByZXBvc2l0b3J5IG11c3QgYmUgc2V0IHRvIFRBQkxFLgBJbiBvcmRlciB0byB1c2UgcGFyYWxsZWwgYXBwbGllciBvbiBHcm91cCBSZXBsaWNhdGlvbiwgcGFyYW1ldGVyIHJlcGxpY2EtcGFyYWxsZWwtdHlwZSBtdXN0IGJlIHNldCB0byAnTE9HSUNBTF9DTE9DSycuAEdyb3VwIFJlcGxpY2F0aW9uIHJlcXVpcmVzIHJlcGxpY2EtcHJlc2VydmUtY29tbWl0LW9yZGVyIHRvIGJlIHNldCB0byBPTiB3aGVuIHVzaW5nIG1vcmUgdGhhbiAxIGFwcGxpZXIgdGhyZWFkcy4ASXQgaXMgbm90IGFsbG93ZWQgdG8gcnVuIHNpbmdsZSBwcmltYXJ5IG1vZGUgd2l0aCAnZ3JvdXBfcmVwbGljYXRpb25fZW5mb3JjZV91cGRhdGVfZXZlcnl3aGVyZV9jaGVja3MnIGVuYWJsZWQuAGVycm9yX21lc3NhZ2U6ICVzAFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lIG9wdGlvbiBpcyBtYW5kYXRvcnkAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJyBpcyBub3QgYSB2YWxpZCBVVUlELCBpdHMgbGVuZ3RoIGlzIHRvbyBiaWcAVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgJyVzJyBpcyBub3QgYSB2YWxpZCBVVUlEAGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9taW5fcXVvdGEgY2Fubm90IGJlIGxhcmdlciB0aGFuIGdyb3VwX3JlcGxpY2F0aW9uX2Zsb3dfY29udHJvbF9tYXhfcXVvdGEAZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9yZWNvdmVyeV9xdW90YSBjYW5ub3QgYmUgbGFyZ2VyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21heF9xdW90YQBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWF4X3F1b3RhIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gZ3JvdXBfcmVwbGljYXRpb25fZmxvd19jb250cm9sX21pbl9xdW90YSBvciBncm91cF9yZXBsaWNhdGlvbl9mbG93X2NvbnRyb2xfbWluX3JlY292ZXJ5X3F1b3RhAFRoZSBnaXZlbiB2YWx1ZSBmb3IgcmVjb3Zlcnkgc3NsIG9wdGlvbiAnZ3JvdXBfcmVwbGljYXRpb25fJXMnIGlzIGludmFsaWQgYXMgaXRzIGxlbmd0aCBpcyBiZXlvbmQgdGhlIGxpbWl0AFRoZXJlIGlzIG9uZSBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIG9wZXJhdGlvbiBhbHJlYWR5IG9uZ29pbmcAZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyBjYW4gb25seSBiZSB1cGRhdGVkIHdoZW4gR3JvdXAgUmVwbGljYXRpb24gaXMgcnVubmluZyBhbmQgYSBtYWpvcml0eSBvZiB0aGUgbWVtYmVycyBhcmUgdW5yZWFjaGFibGUASW5pdGlhbGl6ZWQgZ3JvdXAgY29tbXVuaWNhdGlvbiB3aXRoIGNvbmZpZ3VyYXRpb246IGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWU6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2xvY2FsX2FkZHJlc3M6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX3NlZWRzOiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9ib290c3RyYXBfZ3JvdXA6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX3BvbGxfc3Bpbl9sb29wczogJWx1OyBncm91cF9yZXBsaWNhdGlvbl9jb21wcmVzc2lvbl90aHJlc2hvbGQ6ICVsdTsgZ3JvdXBfcmVwbGljYXRpb25faXBfYWxsb3dsaXN0OiAnJXMnOyBncm91cF9yZXBsaWNhdGlvbl9jb21tdW5pY2F0aW9uX2RlYnVnX29wdGlvbnM6ICclcyc7IGdyb3VwX3JlcGxpY2F0aW9uX21lbWJlcl9leHBlbF90aW1lb3V0OiAnJWx1JzsgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9tYXhfbWVzc2FnZV9zaXplOiAlbHU7IGdyb3VwX3JlcGxpY2F0aW9uX21lc3NhZ2VfY2FjaGVfc2l6ZTogJyVsdXU7IGdyb3VwX3JlcGxpY2F0aW9uX2NvbW11bmljYXRpb25fc3RhY2s6ICclbHUnAFVua25vd24gZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBwaXBlbGluZSByZXF1ZXN0ZWQAVW5hYmxlIHRvIGJvb3RzdHJhcCBncm91cCByZXBsaWNhdGlvbiBldmVudCBoYW5kbGluZyBpbmZyYXN0cnVjdHVyZS4gVW5rbm93biBoYW5kbGVyIHR5cGU6ICVkAE9uZSBvZiB0aGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVycyBpcyBudWxsIGR1ZSB0byBhbiBpbml0aWFsaXphdGlvbiBlcnJvcgBBIGdyb3VwIHJlcGxpY2F0aW9uIGFwcGxpZXIgaGFuZGxlciwgbWFya2VkIGFzIHVuaXF1ZSwgaXMgYWxyZWFkeSBpbiB1c2UuAEEgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciBoYW5kbGVyIHJvbGUsIHRoYXQgd2FzIG1hcmtlZCBhcyB1bmlxdWUsIGlzIGFscmVhZHkgaW4gdXNlLgBFcnJvciBvbiBncm91cCByZXBsaWNhdGlvbiBhcHBsaWVyIGhhbmRsZXIgaW5pdGlhbGl6YXRpb24ARXJyb3Igd2hlbiBpbml0aWFsaXppbmcgYSBzZXNzaW9uIHRocmVhZCBmb3IgaW50ZXJuYWwgc2VydmVyIGNvbm5lY3Rpb24uAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gVGhlIGludGVybmFsIHNlcnZlciBjb21tdW5pY2F0aW9uIHNlc3Npb24gaXMgbm90IGluaXRpYWxpemVkAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gVGhlIGludGVybmFsIHNlcnZlciBzZXNzaW9uIHdhcyBraWxsZWQgb3Igc2VydmVyIGlzIHNodXR0aW5nIGRvd24uAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gR290IGludGVybmFsIFNRTCBlcnJvcjogJXMoJWQpAEVycm9yIHJ1bm5pbmcgaW50ZXJuYWwgU1FMIHF1ZXJ5OiAlcy4gSW50ZXJuYWwgZmFpbHVyZS4ARXJyb3IsIG1heGltdW0gbnVtYmVyIG9mIHJldHJpZXMgZXhjZWVkZWQgd2hlbiB3YWl0aW5nIGZvciB0aGUgaW50ZXJuYWwgc2VydmVyIHNlc3Npb24gc3RhdGUgdG8gYmUgb3BlcmF0aW5nAEVycm9yIHdoZW4gdHJ5aW5nIHRvIGZldGNoIHNlY3VyaXR5IGNvbnRleHQgd2hlbiBjb250YWN0aW5nIHRoZSBzZXJ2ZXIgZm9yIGludGVybmFsIHBsdWdpbiByZXF1ZXN0cy4AVGhlcmUgd2FzIGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGFjY2VzcyB0aGUgc2VydmVyIHdpdGggdXNlcjogJXMuIE1ha2Ugc3VyZSB0aGUgdXNlciBpcyBwcmVzZW50IGluIHRoZSBzZXJ2ZXIgYW5kIHRoYXQgdGhlIE15U1FMIHVwZ3JhZGUgcHJvY2VkdXJlIHdhcyBydW4gY29ycmVjdGx5LgBGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIGludGVybmFsIHNlcnZlciBjb25uZWN0aW9uIHRvIGV4ZWN1dGUgcGx1Z2luIG9wZXJhdGlvbnMgc2luY2UgdGhlIHNlcnZlciBkb2VzIG5vdCBoYXZlIGF2YWlsYWJsZSBjb25uZWN0aW9ucywgcGxlYXNlIGluY3JlYXNlIEBAR0xPQkFMLk1BWF9DT05ORUNUSU9OUy4gU2VydmVyIGVycm9yOiAlaS4ARmFpbGVkIHRvIGVzdGFibGlzaCBhbiBpbnRlcm5hbCBzZXJ2ZXIgY29ubmVjdGlvbiB0byBleGVjdXRlIHBsdWdpbiBvcGVyYXRpb25zLiBTZXJ2ZXIgZXJyb3I6ICVpLiBTZXJ2ZXIgZXJyb3IgbWVzc2FnZTogJXMAVGhpcyBtZW1iZXIgY291bGQgbm90IHJlYWNoIGEgbWFqb3JpdHkgb2YgdGhlIG1lbWJlcnMgZm9yIG1vcmUgdGhhbiAlbGQgc2Vjb25kcy4gVGhlIG1lbWJlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAgYXMgaW5zdHJ1Y3RlZCBieSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdW5yZWFjaGFibGVfbWFqb3JpdHlfdGltZW91dCBvcHRpb24uAFRoZSBzZXJ2ZXIgd2FzIGF1dG9tYXRpY2FsbHkgc2V0IGludG8gcmVhZCBvbmx5IG1vZGUgYWZ0ZXIgYW4gZXJyb3Igd2FzIGRldGVjdGVkLgBVbmFibGUgdG8gbG9nIG5vdGlmaWNhdGlvbiB0byB0YWJsZSAoZXJybm86ICVsdSkgKHJlczogJWQpISBNZXNzYWdlOiAlcwBGYWlsdXJlIGluIGdyb3VwIGNvbW11bmljYXRpb24gZW5naW5lICclcycgaW5pdGlhbGl6YXRpb24AVW5hYmxlIHRvIHNldCB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBlbmdpbmUgbG9nZ2VyAEN1cnJlbnQgZGVidWcgb3B0aW9ucyBhcmU6ICclcycuAFNvbWUgZGVidWcgb3B0aW9ucyBpbiAnJXMnIGFyZSBub3QgdmFsaWQuAEVycm9yIGNhbGxpbmcgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzIHdoaWxlIHRyeWluZyB0byBsZWF2ZSB0aGUgZ3JvdXAATWVtYmVyIGlzIG5vdCBPTkxJTkUsIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBmb3JjZSBhIG5ldyBncm91cCBtZW1iZXJzaGlwAEVycm9yIGNhbGxpbmcgZ3JvdXAgY29tbXVuaWNhdGlvbiBpbnRlcmZhY2VzAEVycm9yIHNldHRpbmcgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB2YWx1ZSAnJXMnIG9uIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBUaGUgZ3JvdXBfcmVwbGljYXRpb25fZm9yY2VfbWVtYmVycyB2YWx1ZSAnJXMnIHdhcyBzZXQgaW4gdGhlIGdyb3VwIGNvbW11bmljYXRpb24gaW50ZXJmYWNlcwBUaW1lb3V0IG9uIHdhaXQgZm9yIHZpZXcgYWZ0ZXIgc2V0dGluZyBncm91cF9yZXBsaWNhdGlvbl9mb3JjZV9tZW1iZXJzIHZhbHVlICclcycgaW50byBncm91cCBjb21tdW5pY2F0aW9uIGludGVyZmFjZXMAQnJvYWRjYXN0IG9mIGNvbW1pdHRlZCB0cmFuc2FjdGlvbnMgbWVzc2FnZSBmYWlsZWQuIE1lc3NhZ2UgaXMgdG9vIGJpZy4ARXJyb3Igd2hpbGUgc2VuZGluZyBzdGF0cyBtZXNzYWdlAEZsb3cgY29udHJvbCAtIHVwZGF0ZSBtZW1iZXIgc3RhdHM6ICVzIHN0YXRzIGNlcnRpZmllcl9xdWV1ZSAlZCwgYXBwbGllcl9xdWV1ZSAlZCBjZXJ0aWZpZWQgJWxkICglbGQpLCBhcHBsaWVkICVsZCAoJWxkKSwgbG9jYWwgJWxkICglbGQpLCBxdW90YSAlbGQgKCVsZCkgbW9kZT0lZABGbG93IGNvbnRyb2w6IHRocm90dGxpbmcgdG8gJWxkIGNvbW1pdHMgcGVyICVsZCBzZWMsIHdpdGggJWQgd3JpdGluZyBhbmQgJWQgbm9uLXJlY292ZXJpbmcgbWVtYmVycywgbWluIGNhcGFjaXR5ICVsbGQsIGxpbSB0aHJvdHRsZSAlbGxkAFVuYWJsZSB0byBjb252ZXJ0IGEgcGFja2V0IGludG8gYW4gZXZlbnQgb24gdGhlIGFwcGxpZXIuIEVycm9yOiAlcwBGYWlsZWQgdG8gY3JlYXRlIGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlLgBGYWlsZWQgdG8gcmVpbml0IGdyb3VwIHJlcGxpY2F0aW9uIHBpcGVsaW5lIGNhY2hlIGZvciB3cml0ZS4AVW5hYmxlIHRvIGNvbnZlcnQgdGhlIGV2ZW50IGludG8gYSBwYWNrZXQgb24gdGhlIGFwcGxpZXIuIEVycm9yOiAlcwBGYWlsZWQgdG8gZmx1c2ggZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUuAEZhaWxlZCB0byByZWluaXQgZ3JvdXAgcmVwbGljYXRpb24gcGlwZWxpbmUgY2FjaGUgZm9yIHJlYWQuAEVycm9yIHN0b3BwaW5nIGFsbCByZXBsaWNhdGlvbiBjaGFubmVscyB3aGlsZSBzZXJ2ZXIgd2FzIGxlYXZpbmcgdGhlIGdyb3VwLiBHb3QgZXJyb3I6ICVkLiBQbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLgAlcwBUaGUgcmVwbGljYSBJTyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIGlzIHVuYmxvY2tlZCBhcyB0aGUgbWVtYmVyIGlzIGRlY2xhcmVkIE9OTElORSBub3cuAFRoZSByZXBsaWNhIElPIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhlIG1lbWJlciBmYWlsZWQgdG8gY29tZSBPTkxJTkUuAFRoZSByZXBsaWNhIGFwcGxpZXIgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyBpcyB1bmJsb2NrZWQgYXMgdGhlIG1lbWJlciBpcyBkZWNsYXJlZCBPTkxJTkUgbm93LgBUaGUgcmVwbGljYSBhcHBsaWVyIHRocmVhZCBvZiBjaGFubmVsICclcycgd2lsbCBlcnJvciBvdXQgYXMgdGhlIG1lbWJlciBmYWlsZWQgdG8gY29tZSBPTkxJTkUuAExEQVAgYXV0aGVudGljYXRpb24gaW5pdGlhbGl6ZTogZmFpbGVkIHRvIGNyZWF0ZS8gZ2V0IGNvbm5lY3Rpb24gZnJvbSB0aGUgcG9vbC4gAExEQVAgYXV0aGVudGljYXRpb24gZGVfaW5pdGlhbGl6ZSBGYWlsZWQAU2tpcHBpbmcgZ3JvdXAgc2VhcmNoLCBObyBncm91cCBhdHRyaWJ1dGUgbWVudGlvbmVkAFBvb2wgbWF4IHNpemUgaXMgMCwgY29ubmVjdGlvbiBwb29sIGlzIGRpc2FibGVkAENvbm5lY3Rpb24gcG9vbCBpbml0aWFsaXphdGlvbiwgZmFpbGVkIHRvIGNyZWF0ZSBMREFQIG9iamVjdCBjcmVhdG9yAENvbm5lY3Rpb24gcG9vbCBpbml0aWFsaXphdGlvbiwgZmFpbGVkIHRvIGNyZWF0ZSBMREFQIG9iamVjdABMREFQIFRMUyBjb25maWd1cmF0aW9uAExEQVAgVExTIGNvbm5lY3Rpb24ATERBUCBwb29sIGlzIG5vdCBjcmVhdGVkLgBMREFQIHBvb2wgaXMgaW5pdGlhbGl6aW5nAExEQVAgcG9vbCBpcyBkZS1pbml0aWFsaXppbmcAUG9vbCBtYXggc2l6ZSBvbGQgYW5kIG5ldyB2YWx1ZXMgYXJlIDAATERBUCBwb29sIGlzIHJlLWluaXRpYWxpemluZwBQbHVnLWluIGhhcyBmYWlsZWQgdG8gd3JpdGUgdGhlIHBhY2tldC4AU2V0dGluZyBMREFQIHVzZXIgbmFtZSBhcyA6ICVzAFVzZXIgYXV0aGVudGljYXRpb24gZGF0YTogJXMgc2l6ZTogJWx1AFVzZXIgaXMgYXV0aGVudGljYXRlZCBhczogJXMgZXh0ZXJuYWwgdXNlcjogJXMAR3JvdXAgc2VhcmNoIGluZm9ybWF0aW9uIGJhc2UgRE46ICVzIHNjb3BlOiAlZCBmaWx0ZXI6ICVzIGF0dHJpYnV0ZTogJXMAU3BlY2lhbCBoYW5kbGluZyBmb3IgZ3JvdXAgc2VhcmNoLCB7R0F9IGZvdW5kAEdyb3VwIHNlYXJjaCBzcGVjaWFsIGhhbmRsaW5nLCBncm91cCBmdWxsIEROIGZvdW5kLiAAVXNlciAlcyBpcyBub3QgbWVtYmVyIG9mIGFueSBncm91cC4AVXNlciAlcyBpcyBtZW1iZXIgb2YgbW9yZSB0aGFuIG9uZSBncm91cABGb3IgdXNlciAlcyBoYXMgbXVsdGlwbGUgdXNlciBncm91cCBuYW1lcy4gUGxlYXNlIGNoZWNrIGlmIGdyb3VwIGF0dHJpYnV0ZSBuYW1lIGlzIGNvcnJlY3QAU2VhcmNoZWQgZ3JvdXAgbmFtZTogJXMATERBUCBhdXRoZW50aWNhdGlvbiBvYmplY3QgY3JlYXRpb24gdGltZV9zdGFtcDogJXMgZG46ICVzAENlcnRpZmljYXRlIG5hbWU6ICVzAEZhaWxlZCB0byBwb29sIGRlLWluaXRpYWxpemVkOiBwb29sIGlzIGFscmVhZHkgcmVjb25zdHJ1Y3RpbmcAUG9vbCBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IHBvb2wgaXMgYWxyZWFkeSBpbml0aWFsaXplZABQb29sIGluaXRpYWxpemF0aW9uIGZhaWxlZDogcG9vbCBpcyBpbml0aWFsaXppbmcAUG9vbCBpbml0aWFsaXphdGlvbiBmYWlsZWQ6IHBvb2wgaXMgZGUtaW5pdGlhbGl6aW5nAEZhaWxlZCB0byBwb29sIGRlaW5pdGlhbGl6ZWQ6IHBvb2wgaXMgYWxyZWFkeSByZWNvbnN0cnVjdGluZwBGYWlsZWQgdG8gcG9vbCBkZWluaXRpYWxpemVkIDogcG9vbCBpcyBub3QgcmVhZHkATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmdldDogRmFpbGVkIHRvIHJldHVybiBjb25uZWN0aW9uIGFzIHBsdWctaW4gaXMgbm90IHJlYWR5L2luaXRpYWxpemluZy9kZS1pbml0aWFsaXppbmcAQ29ubmVjdGlvbiBwb29sIGhhcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZWQATGRhcF9jb25uZXRpb25fcG9vbDo6Z2V0IExEQVAgbWF4aW11bSBjb25uZWN0aW9uIGFsbG93ZWQgc2l6ZSBpcyByZWFjaGVkLiBJbmNyZWFzZSB0aGUgbWF4aW11bSBsaW1pdC4AU2V0IG1heCBwb29sIHNpemUgZmFpbGVkLgBQbHVnLWluIGhhcyBmYWlsZWQgdG8gcmVhZCB0aGUgcGFja2V0IGZyb20gY2xpZW50AExkYXBfYXV0aGVudGljYXRpb246OmluaXRpYWxpemU6IGNyZWF0aW5nIG5ldyBMREFQIGNvbm5lY3Rpb24uIABMZGFwX2F1dGhlbnRpY2F0aW9uOjppbml0aWFsaXplOiBnZXR0aW5nIGNvbm5lY3Rpb24gZnJvbSBwb29sLiAATGRhcF9hdXRoZW50aWNhdGlvbjo6ZGVfaW5pdGlhbGl6ZSBwdXR0aW5nIGJhY2sgY29ubmVjdGlvbiBpbiB0aGUgcG9vbABMZGFwX2F1dGhlbnRpY2F0aW9uOjpzZWFyY2hfdXNlcl9ncm91cCBubyBncm91cCBhdHRyaWJ1dGUgZm91bmQATGRhcF9jb25uZXRpb25fcG9vbDo6cHV0IGxkYXAgaW5mbyBudWxsAExkYXBfY29ubmVjdGlvbl9wb29sOjpwdXQgY29ubmVjdGlvbiBpcyBmcmVlaW5nLiAATGRhcF9jb25uZWN0aW9uX3Bvb2w6OnB1dCBjb25uZWN0aW9uIGluIHB1c2hlZCBpbiB0aGUgcG9vbABMZGFwX2Nvbm5lY3Rpb25fY3JlYXRvcjo6TGRhcF9jb25uZWN0aW9uX2NyZWF0b3IAc3RhcnRpbmcgVExTAExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQ6IChsZGFwX2luZm8gPT0gTlVMTCl8fCAoKmxkYXBfaW5mbykATGRhcF9jb25uZWN0aW9uX3Bvb2w6OmRlaW5pdDogZGVsZXRpbmcgY29ubmVjdGlvbiBrZXkgJXMAIExkYXBfY29ubmVjdGlvbl9wb29sOjpnZXQgcG9vbGVkIGNvbm5lY3Rpb24ga2V5OiAlcwBMZGFwX2Nvbm5lY3Rpb25fcG9vbDo6Z2V0IGNyZWF0ZSBjb25uZWN0aW9uIGtleTogJXMATERBUCBjb21tdW5pY2F0aW9uIGhvc3QgJXMgcG9ydCAldQBTZW5kaW5nIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB0byBjbGllbnQgOiAlcwBTQVNMIHJlcXVlc3QgcmVjZWl2ZWQgZnJvbSBteXNxbCBjbGllbnQ6ICVzAExkYXBfc2FzbF9hdXRoZW50aWNhdGlvbjo6cHJvY2Vzc19zYXNsIHJjOiAlcwBMZGFwX3Nhc2xfYXV0aGVudGljYXRpb246OnByb2Nlc3Nfc2FzbCBzYXNsIGJpbmQgc3VjY2VlZC4gZG46ICVzIG1ldGhvZDogJXMgc2VydmVyIGNyZWRlbnRpYWw6ICVzAExEQVAgYXV0aGVudGljYXRpb24gc3RhcnRlZCBmb3IgdXNlciBuYW1lOiAlcwAlcwBMREFQIGF1dGhlbnRpY2F0aW9uIGluaXRpYWxpemUgaXMgZmFpbGVkIHdpdGg6ICVzAExEQVAgYXV0aGVudGljYXRpb24gZmFpbGVkIG9yIGdyb3VwIHJldHJpZXZhbCBmYWlsZWQ6ICVzAFNlYXJjaCB1c2VyIGdyb3VwIGhhcyBmYWlsZWQ6ICVzAExEQVAgdXNlciBiaW5kIGhhcyBmYWlsZWQ6ICVzAENvbm5lY3Rpb24gcG9vbCBnZXQ6IEZhaWxlZCB0byBjcmVhdGUgTERBUCBjb25uZWN0aW9uLiAlcwBGYWlsZWQgdG8gY3JlYXRlIG5ldyBMREFQIGNvbm5lY3Rpb246ICAlcwBGYWlsZWQgdG8gZXN0YWJsaXNoIFRMUyBjb25uZWN0aW9uOiAgJXMARmFpbGVkIHRvIHNlYXJjaCB1c2VyIGZ1bGwgZG46ICVzAExkYXBfY29ubmVjdGlvbl9wb29sOjpyZWluaXQAVGhlIHBhdGggJyVzJywgZnJvbSB0aGUgTk9USUZZX1NPQ0tFVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaXMgdG9vIGxvbmcuIEF0ICV1IGJ5dGVzIGl0IGV4Y2VlZHMgdGhlIGxpbWl0IG9mICV1IGJ5dGVzIGZvciBhbiBBRl9VTklYIHNvY2tldC4ARmFpbGVkIHRvIGNvbm5lY3QgdG8gc3lzdGVtZCBub3RpZmljYXRpb24gc29ja2V0IG5hbWVkICVzLiBFcnJvcjogJyVzJwBGYWlsZWQgdG8gd3JpdGUgJyVzJyB0byBzeXN0ZW1kIG5vdGlmaWNhdGlvbi4gRXJyb3I6ICclcycAQ2Fubm90IHJlcGxpY2F0ZSB0byBzZXJ2ZXIgd2l0aCBzZXJ2ZXJfdXVpZD0nJS4zNnMnIGJlY2F1c2UgdGhlIHByZXNlbnQgc2VydmVyIGhhcyBwdXJnZWQgcmVxdWlyZWQgYmluYXJ5IGxvZ3MuIFRoZSBjb25uZWN0aW5nIHNlcnZlciBuZWVkcyB0byByZXBsaWNhdGUgdGhlIG1pc3NpbmcgdHJhbnNhY3Rpb25zIGZyb20gZWxzZXdoZXJlLCBvciBiZSByZXBsYWNlZCBieSBhIG5ldyBzZXJ2ZXIgY3JlYXRlZCBmcm9tIGEgbW9yZSByZWNlbnQgYmFja3VwLiBUbyBwcmV2ZW50IHRoaXMgZXJyb3IgaW4gdGhlIGZ1dHVyZSwgY29uc2lkZXIgaW5jcmVhc2luZyB0aGUgYmluYXJ5IGxvZyBleHBpcmF0aW9uIHBlcmlvZCBvbiB0aGUgcHJlc2VudCBzZXJ2ZXIuICVzLgBJbnNlY3VyZSBjb25maWd1cmF0aW9uIGZvciAtLXBpZC1maWxlOiBMb2NhdGlvbiAnJXMnIGluIHRoZSBwYXRoIGlzIGFjY2Vzc2libGUgdG8gYWxsIE9TIHVzZXJzLiBDb25zaWRlciBjaG9vc2luZyBhIGRpZmZlcmVudCBkaXJlY3RvcnkuAENhbid0IHN0YXJ0IHNlcnZlcjogY2FuJ3QgY2hlY2sgUElEIGZpbGVwYXRoOiAlcwB2YWxpZGF0ZV9wYXNzd29yZCBzdGF0dXMgdmFyaWFibGVzIHJlZ2lzdHJhdGlvbiBmYWlsZWQuAHZhbGlkYXRlX3Bhc3N3b3JkIHN0YXR1cyB2YXJpYWJsZXMgdW5yZWdpc3RyYXRpb24gZmFpbGVkLgBEaWN0aW9uYXJ5IGZpbGUgb3BlbiBmYWlsZWQAZ2l2ZW4gcGFzc3dvcmQgc3RyaW5nIGNvdWxkIGJlIG51bGwAZmFpbGVkIHRvIGNvbnZlcnQgdGhlIHBhc3N3b3JkIHN0cmluZyB0byBsb3dlciBjYXNlAGZhaWxlZCB0byBjb252ZXJ0IHRoZSBwYXNzd29yZCBzdHJpbmcgaW50byBhIGJ1ZmZlcgBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgZm9yIHN0cmluZyBoYW5kbGVyAFNpbmNlIHRoZSB2YWxpZGF0ZV9wYXNzd29yZF9wb2xpY3kgaXMgbWVudGlvbmVkIGFzIFN0cm9uZywgZGljdGlvbmFyeSBmaWxlIG11c3QgYmUgc3BlY2lmaWVkAGNvbnZlcnRfdG9fYnVmZmVyIHNlcnZpY2UgZmFpbGVkACVzIHZhcmlhYmxlIHJlZ2lzdHJhdGlvbiBmYWlsZWQuACVzIHZhcmlhYmxlIHVucmVnaXN0cmF0aW9uIGZhaWxlZC4AUGxlYXNlIHNwZWNpZnkgb3B0aW9ucyBzcGVjaWZpYyB0byBrZXlyaW5nIG1pZ3JhdGlvbi4gQW55IGFkZGl0aW9uYWwgb3B0aW9ucyBjYW4gYmUgaWdub3JlZC4gTk9URTogQWx0aG91Z2ggc29tZSBvcHRpb25zIGFyZSB2YWxpZCwgbWlncmF0aW9uIHRvb2wgY2FuIHN0aWxsIHJlcG9ydCBlcnJvciBleGFtcGxlOiBwbHVnaW4gdmFyaWFibGVzIGZvciB3aGljaCBwbHVnaW4gaXMgbm90IGxvYWRlZCB5ZXQuAEludmFsaWQgZGVmYXVsdCBjb2xsYXRpb24gJXM6IHV0ZjhtYjRfMDkwMF9haV9jaSBvciB1dGY4bWI0X2dlbmVyYWxfY2kgZXhwZWN0ZWQAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMARmFpbGVkIHRvIHNldCBOVU1BIG1lbW9yeSBwb2xpY3kgb2YgYnVmZmVyIHBvb2wgcGFnZSBmcmFtZXMgd2l0aCBtYmluZCglcCwlenUsJXMsLi4uLC4uLiwlcykgZmFpbGVkIHdpdGggJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAUGFnZSBzdGlsbCBmaXhlZCBvciBkaXJ0eSBhdCBzaHV0ZG93bi4gJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAV2FpdGVkIGZvciAldSBzZWNzIGZvciBoYXNoIGluZGV4IHJlZl9jb3VudCAoJXp1KSB0byBkcm9wIHRvIDAuIGluZGV4OiAiJXMiIHRhYmxlOiAiJXMiACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRhYmxlIGZsYWdzIGFyZSAweCVseCBpbiB0aGUgZGF0YSBkaWN0aW9uYXJ5IGJ1dCB0aGUgZmxhZ3MgaW4gZmlsZSAlcyAgYXJlIDB4JWxseCEAQ2FuJ3QgcmVhZCBlbmNyeXB0aW9uIGtleSBmcm9tIGZpbGUgJXMhAENhbm5vdCBjbG9zZSBmaWxlICVzLCBiZWNhdXNlIG5fcGVuZGluZ19mbHVzaGVzICV6dQBDYW5ub3QgY2xvc2UgZmlsZSAlcywgYmVjYXVzZSBtb2RpZmljYXRpb24gY291bnQgJWxsZCAhPSBmbHVzaCBjb3VudCAlbGxkAENhbm5vdCBjbG9zZSBmaWxlICVzLCBiZWNhdXNlIGl0IGlzIGluIHVzZQBPcGVuIGZpbGUgbGlzdCBsZW4gaW4gc2hhcmQgJXp1IGlzICVsbHUAVGFibGVzcGFjZSAlcywgd2FpdGluZyBmb3IgSU8gdG8gc3RvcCBmb3IgJWxsZCBzZWNvbmRzACVzACVzACVzACVzACVzAFlvdSBtdXN0IHJhaXNlIHRoZSB2YWx1ZSBvZiBpbm5vZGJfb3Blbl9maWxlcyBpbiBteS5jbmYhIFJlbWVtYmVyIHRoYXQgSW5ub0RCIGtlZXBzIGFsbCByZWRvIGxvZyBmaWxlcyBhbmQgYWxsIHN5c3RlbSB0YWJsZXNwYWNlIGZpbGVzIG9wZW4gZm9yIHRoZSB3aG9sZSB0aW1lIG15c3FsZCBpcyBydW5uaW5nLCBhbmQgbmVlZHMgdG8gb3BlbiBhbHNvIHNvbWUgLmliZCBmaWxlcyBpZiB0aGUgZmlsZS1wZXItdGFibGUgc3RvcmFnZSBtb2RlbCBpcyB1c2VkLiBDdXJyZW50IG9wZW4gZmlsZXMgJXp1LCBtYXggYWxsb3dlZCBvcGVuIGZpbGVzICV6dS4ATWF4IHRhYmxlc3BhY2UgaWQgaXMgdG9vIGhpZ2gsICVsdQBUcnlpbmcgdG8gYWNjZXNzIG1pc3NpbmcgdGFibGVzcGFjZSAlbHUAVHJ5aW5nIHRvIGNsb3NlL2RlbGV0ZSB0YWJsZXNwYWNlICclcycgYnV0IHRoZXJlIGFyZSAlbHUgcGVuZGluZyBvcGVyYXRpb25zIG9uIGl0LgBUcnlpbmcgdG8gZGVsZXRlL2Nsb3NlIHRhYmxlc3BhY2UgJyVzJyBidXQgdGhlcmUgYXJlICVsdSBmbHVzaGVzIGFuZCAlenUgcGVuZGluZyBJL08ncyBvbiBpdC4AJXMAQ2Fubm90IGRlbGV0ZSB0YWJsZXNwYWNlICVsdSBiZWNhdXNlIGl0IGlzIG5vdCBmb3VuZCBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUuAFdoaWxlIGRlbGV0aW5nIHRhYmxlc3BhY2UgJWx1IGluIERJU0NBUkQgVEFCTEVTUEFDRS4gRmlsZSByZW5hbWUvZGVsZXRlIGZhaWxlZDogJXMAQ2Fubm90IGRlbGV0ZSB0YWJsZXNwYWNlICVsdSBpbiBESVNDQVJEIFRBQkxFU1BBQ0U6ICVzAENhbm5vdCByZW5hbWUgJyVzJyB0byAnJXMnIGZvciBzcGFjZSBJRCAlbHUgYmVjYXVzZSB0aGUgc291cmNlIGZpbGUgZG9lcyBub3QgZXhpc3QuAENhbm5vdCByZW5hbWUgJyVzJyB0byAnJXMnIGZvciBzcGFjZSBJRCAlbHUgYmVjYXVzZSB0aGUgdGFyZ2V0IGZpbGUgZXhpc3RzLiBSZW1vdmUgdGhlIHRhcmdldCBmaWxlIGFuZCB0cnkgYWdhaW4uAENhbm5vdCByZW5hbWUgZmlsZSAnJXMnIChzcGFjZSBpZCAlbHUpIHJldHJpZWQgJWxsdSB0aW1lcy4gVGhlcmUgYXJlIGVpdGhlciBwZW5kaW5nIElPcyBvciBmbHVzaGVzIG9yIHRoZSBmaWxlIGlzIGJlaW5nIGV4dGVuZGVkLgBDYW5ub3QgZmluZCBzcGFjZSBpZCAlbHUgaW4gdGhlIHRhYmxlc3BhY2UgbWVtb3J5IGNhY2hlLCB0aG91Z2ggdGhlIGZpbGUgJyVzJyBpbiBhIHJlbmFtZSBvcGVyYXRpb24gc2hvdWxkIGhhdmUgdGhhdCBJRC4AUmVuYW1lIHdhaXRpbmcgZm9yIElPIHRvIHJlc3VtZQBDYW5ub3QgZmluZCB0YWJsZXNwYWNlIGZvciAnJXMnIGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZQBDYW5ub3QgZmluZCB0YWJsZXNwYWNlIGZvciAnJXMnIGluIHRoZSB0YWJsZXNwYWNlIG1lbW9yeSBjYWNoZQBUYWJsZXNwYWNlICclcycgaXMgYWxyZWFkeSBpbiB0aGUgdGFibGVzcGFjZSBtZW1vcnkgY2FjaGUAQ2Fubm90IGNyZWF0ZSBmaWxlICclcycAVGhlIGZpbGUgJyVzJyBhbHJlYWR5IGV4aXN0cyB0aG91Z2ggdGhlIGNvcnJlc3BvbmRpbmcgdGFibGUgZGlkIG5vdCBleGlzdC4gSGF2ZSB5b3UgbW92ZWQgSW5ub0RCIC5pYmQgZmlsZXMgYXJvdW5kIHdpdGhvdXQgdXNpbmcgdGhlIFNRTCBjb21tYW5kcyBESVNDQVJEIFRBQkxFU1BBQ0UgYW5kIElNUE9SVCBUQUJMRVNQQUNFLCBvciBkaWQgbXlzcWxkIGNyYXNoIGluIHRoZSBtaWRkbGUgb2YgQ1JFQVRFIFRBQkxFPyBZb3UgY2FuIHJlc29sdmUgdGhlIHByb2JsZW0gYnkgcmVtb3ZpbmcgdGhlIGZpbGUgJyVzJyB1bmRlciB0aGUgJ2RhdGFkaXInIG9mIE15U1FMLgBwb3NpeF9mYWxsb2NhdGUoKTogRmFpbGVkIHRvIHByZWFsbG9jYXRlIGRhdGEgZm9yIGZpbGUgJXMsIGRlc2lyZWQgc2l6ZSAlbGx1IE9wZXJhdGluZyBzeXN0ZW0gZXJyb3IgbnVtYmVyICVkIC0gJXMuIENoZWNrIHRoYXQgdGhlIGRpc2sgaXMgbm90IGZ1bGwgb3IgYSBkaXNrIHF1b3RhIGV4Y2VlZGVkLiBNYWtlIHN1cmUgdGhlIGZpbGUgc3lzdGVtIHN1cHBvcnRzIHRoaXMgZnVuY3Rpb24uIFJlZmVyIHRvIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGZvciBvcGVyYXRpbmcgc3lzdGVtIGVycm9yIGNvZGUgaW5mb3JtYXRpb24uAENvdWxkIG5vdCB3cml0ZSB0aGUgZmlyc3QgcGFnZSB0byB0YWJsZXNwYWNlICclcycARmlsZSBmbHVzaCBvZiB0YWJsZXNwYWNlICclcycgZmFpbGVkAENvdWxkIG5vdCBmaW5kIGEgdmFsaWQgdGFibGVzcGFjZSBmaWxlIGZvciBgJXNgLiAlcwBJZ25vcmluZyBkYXRhIGZpbGUgJyVzJyB3aXRoIHNwYWNlIElEICVsdS4gQW5vdGhlciBkYXRhIGZpbGUgY2FsbGVkICclcycgZXhpc3RzIHdpdGggdGhlIHNhbWUgc3BhY2UgSUQAJXMAJXMAJXMAJXMAQ2FuJ3Qgc2V0IGVuY3J5cHRpb24gaW5mb3JtYXRpb24gZm9yIHRhYmxlc3BhY2UgJXMhACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAFRoZSBkYXRhZmlsZSAnJXMnIGZvciB0YWJsZXNwYWNlICVzIGlzIGluIGFuIHVucHJvdGVjdGVkIGxvY2F0aW9uLiBUaGlzIGZpbGUgY2Fubm90IGJlIHJlY292ZXJlZCBhZnRlciBhIGNyYXNoIHVudGlsIHRoaXMgbG9jYXRpb24gaXMgYWRkZWQgdG8gaW5ub2RiX2RpcmVjdG9yaWVzLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBTY2FuIHBhdGggJyVzJyBpcyBpZ25vcmVkIGJlY2F1c2UgJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQSBnZW5lcmFsIHRhYmxlc3BhY2UgY2Fubm90IGJlIGxvY2F0ZWQgdW5kZXIgdGhlIGRhdGFkaXIuIENhbm5vdCBvcGVuIGZpbGUgJyVzJy4AQSBmaWxlLXBlci10YWJsZSB0YWJsZXNwYWNlIGNhbm5vdCBiZSBsb2NhdGVkIGluIHRoZSBkYXRhZGlyLiBDYW5ub3Qgb3BlbiBmaWxlICclcycuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAENhbm5vdCBjcmVhdGUgYSB0YWJsZXNwYWNlIGZvciB0YWJsZSAlcyBiZWNhdXNlIHRoZSBkaXJlY3RvcnkgaXMgbm90IGEgdmFsaWQgbG9jYXRpb24uICVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAGlidWYgY3Vyc29yIHJlc3RvcmF0aW9uIGZhaWxzIS4gaWJ1ZiByZWNvcmQgaW5zZXJ0ZWQgdG8gcGFnZSAlczolcwAlcwBGYWlsZWQgdG8gcmVzdG9yZSBpYnVmIHBvc2l0aW9uLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBCbG9ja2VkIEhpZ2ggUHJpb3JpdHkgVHJhbnNhY3Rpb24gKElEICVsbHUsIFRocmVhZCBJRCAlcykgZm9yY2VzIHJvbGxiYWNrIG9mIHRoZSBibG9ja2luZyB0cmFuc2FjdGlvbiAoSUQgJWxsdSAtICVzKS4AJXMAJXMAQmxvY2tlZCBIaWdoIFByaW9yaXR5IFRyYW5zYWN0aW9uIChUaHJlYWQgSUQgJXMpIHdha2luZyB1cCB0aGUgYmxvY2tpbmcgdHJhbnNhY3Rpb24gKElEICVsbHUpIGJ5IHByZXRlbmRpbmcgaXQncyBhIGRlYWRsb2NrIHZpY3RpbS4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVGhlIHRyYW5zYWN0aW9uIGxvZyBzaXplIGlzIHRvbyBsYXJnZSBmb3IgaW5ub2RiX2xvZ19idWZmZXJfc2l6ZSAoJWx1ID49ICVsdSAvIDIpLiBUcnlpbmcgdG8gZXh0ZW5kIGl0LgBpbm5vZGJfbG9nX2J1ZmZlcl9zaXplIHdhcyBleHRlbmRlZCB0byAlbHUgYnl0ZXMuAFRoZSB0cmFuc2FjdGlvbiBsb2cgZmlsZXMgYXJlIHRvbyBzbWFsbCBmb3IgdGhlIHNpbmdsZSB0cmFuc2FjdGlvbiBsb2cgKHNpemU9JWx1KS4gU28sIHRoZSBsYXN0IGNoZWNrcG9pbnQgYWdlIG1pZ2h0IGV4Y2VlZCB0aGUgbG9nIGdyb3VwIGNhcGFjaXR5ICVsbHUuAFRoZSBhZ2Ugb2YgdGhlIGxhc3QgY2hlY2twb2ludCBpcyAlbGx1LCB3aGljaCBleGNlZWRzIHRoZSBsb2cgZ3JvdXAgY2FwYWNpdHkgJWxsdS4AQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4gaWJfbG9nZmlsZXMgYXJlIHRvbyBzbWFsbCBmb3IgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSAlbHUuIFRoZSBjb21iaW5lZCBzaXplIG9mIGliX2xvZ2ZpbGVzIHNob3VsZCBiZSBiaWdnZXIgdGhhbiAyMDAga0IgKiBpbm5vZGJfdGhyZWFkX2NvbmN1cnJlbmN5LiBUbyBnZXQgbXlzcWxkIHRvIHN0YXJ0IHVwLCBzZXQgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSBpbiBteS5jbmYgdG8gYSBsb3dlciB2YWx1ZSwgZm9yIGV4YW1wbGUsIHRvIDguIEFmdGVyIGFuIEVSUk9SLUZSRUUgc2h1dGRvd24gb2YgbXlzcWxkIHlvdSBjYW4gYWRqdXN0IHRoZSBzaXplIG9mIGliX2xvZ2ZpbGVzLiAlcwBSZWRvIGxvZyB3YXMgZW5jcnlwdGVkLCBidXQga2V5cmluZyBwbHVnaW4gaXMgbm90IGxvYWRlZC4AUmVhZCByZWRvIGxvZyBlbmNyeXB0aW9uIG1ldGFkYXRhIHN1Y2Nlc3NmdWwuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIGVuY3J5cHRpb24gbWV0YWRhdGEuAENhbm5vdCByZWFkIHRoZSBlbmNyeXB0aW9uIGluZm9ybWF0aW9uIGluIGxvZyBmaWxlIGhlYWRlciwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgcGx1Z2luIGxvYWRlZCBhbmQgdGhlIGtleSBmaWxlIGV4aXN0cy4AQ2FuJ3Qgc2V0IHJlZG8gbG9nIHRhYmxlc3BhY2UgdG8gYmUgZW5jcnlwdGVkIGluIHJlYWQtb25seSBtb2RlLgBDYW4ndCBzZXQgcmVkbyBsb2cgdGFibGVzcGFjZSB0byBiZSBlbmNyeXB0ZWQuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZC4AUmVkbyBsb2cgZW5jcnlwdGlvbiBpcyBlbmFibGVkLgBGbHVzaCB3YWl0aW5nIGZvciBhcmNoaXZlciB0byBjYXRjaCB1cCBsYWcgTFNOOiAlbGx1AEZsdXNoIG92ZXJ3cml0aW5nIGRhdGEgdG8gYXJjaGl2ZSAtIHdhaXQgdG9vIGxvbmcgKDEgbWludXRlKSBsYWcgTFNOOiAlbGx1ACVzAFN0YXJ0aW5nIHNodXRkb3duLi4uAFdhaXRpbmcgZm9yICVzIHRvIGV4aXQAV2FpdGluZyBmb3IgJWx1IGFjdGl2ZSB0cmFuc2FjdGlvbnMgdG8gZmluaXNoAFdhaXRpbmcgZm9yIG1hc3RlciB0aHJlYWQgdG8gYmUgc3VzcGVuZGVkAFdhaXRpbmcgZm9yIHBhZ2VfY2xlYW5lciB0byBmaW5pc2ggZmx1c2hpbmcgb2YgYnVmZmVyIHBvb2wAUGVuZGluZyBjaGVja3BvaW50X3dyaXRlczogJWx1LiBQZW5kaW5nIGxvZyBmbHVzaCB3cml0ZXM6ICVsdS4AV2FpdGluZyBmb3IgJWx1IGJ1ZmZlciBwYWdlIEkvT3MgdG8gY29tcGxldGUATXlTUUwgaGFzIHJlcXVlc3RlZCBhIHZlcnkgZmFzdCBzaHV0ZG93biB3aXRob3V0IGZsdXNoaW5nIHRoZSBJbm5vREIgYnVmZmVyIHBvb2wgdG8gZGF0YSBmaWxlcy4gQXQgdGhlIG5leHQgbXlzcWxkIHN0YXJ0dXAgSW5ub0RCIHdpbGwgZG8gYSBjcmFzaCByZWNvdmVyeSEAQmFja2dyb3VuZCB0aHJlYWQgJXMgd29rZSB1cCBkdXJpbmcgc2h1dGRvd24AV2FpdGluZyBmb3IgYXJjaGl2ZXIgdG8gZmluaXNoIGFyY2hpdmluZyBwYWdlIGFuZCBsb2cAQmFja2dyb3VuZCB0aHJlYWQgJXMgd29rZSB1cCBkdXJpbmcgc2h1dGRvd24AV2FpdGluZyBmb3IgZGlydHkgYnVmZmVyIHBhZ2VzIHRvIGJlIGZsdXNoZWQATG9nIHNlcXVlbmNlIG51bWJlciBhdCBzaHV0ZG93biAlbGx1IGlzIGxvd2VyIHRoYW4gYXQgc3RhcnR1cCAlbGx1IQBXYWl0aW5nIGZvciBhcmNoaXZlciB0byBmaW5pc2ggYXJjaGl2aW5nIHBhZ2UgYW5kIGxvZwAjIyMjIyMjIyMjIyMjIyMgQ09SUlVQVCBMT0cgUkVDT1JEIEZPVU5EICMjIyMjIyMjIyMjIyMjIwBMb2cgcmVjb3JkIHR5cGUgJWQsIHBhZ2UgJWx1OiVsdS4gTG9nIHBhcnNpbmcgcHJvY2VlZGVkIHN1Y2Nlc3NmdWxseSB1cCB0byAlbGx1LiBQcmV2aW91cyBsb2cgcmVjb3JkIHR5cGUgJWQsIGlzIG11bHRpICVsbHUgUmVjdiBvZmZzZXQgJXpkLCBwcmV2ICVsbHUASGV4IGR1bXAgc3RhcnRpbmcgJWxsdSBieXRlcyBiZWZvcmUgYW5kIGVuZGluZyAlbGx1IGJ5dGVzIGFmdGVyIHRoZSBjb3JydXB0ZWQgcmVjb3JkOgBTZXQgaW5ub2RiX2ZvcmNlX3JlY292ZXJ5IHRvIGlnbm9yZSB0aGlzIGVycm9yLgBUaGUgcmVkbyBsb2cgZmlsZSBtYXkgaGF2ZSBiZWVuIGNvcnJ1cHQgYW5kIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIGxvZyBzY2FuIGRpZCBub3QgcHJvY2VlZCBmYXIgZW5vdWdoIGluIHJlY292ZXJ5ISBQbGVhc2UgcnVuIENIRUNLIFRBQkxFIG9uIHlvdXIgSW5ub0RCIHRhYmxlcyB0byBjaGVjayB0aGF0IHRoZXkgYXJlIG9rISBJZiBteXNxbGQgY3Jhc2hlcyBhZnRlciB0aGlzIHJlY292ZXJ5OyAlcwAlbGx1IHBhZ2VzIHdpdGggbG9nIHJlY29yZHMgd2VyZSBsZWZ0IHVucHJvY2Vzc2VkIQBVcGdyYWRlIGFmdGVyIGEgY3Jhc2ggaXMgbm90IHN1cHBvcnRlZC4gVGhpcyByZWRvIGxvZyB3YXMgY3JlYXRlZCB3aXRoICVzLCBhbmQgaXQgYXBwZWFycyBjb3JydXB0ZWQuIFBsZWFzZSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCAlcwBVcGdyYWRlIGlzIG5vdCBzdXBwb3J0ZWQgYWZ0ZXIgYSBjcmFzaCBvciBzaHV0ZG93biB3aXRoIGlubm9kYl9mYXN0X3NodXRkb3duID0gMi4gVGhpcyByZWRvIGxvZyB3YXMgY3JlYXRlZCB3aXRoICVzLCBhbmQgaXQgYXBwZWFycyBsb2dpY2FsbHkgbm9uIGVtcHR5LiBQbGVhc2UgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgYXQgJXMAJXMAJXMAUmVkbyBsb2cgZm9ybWF0IGlzIHYlbHUuIFRoZSByZWRvIGxvZyB3YXMgY3JlYXRlZCBiZWZvcmUgTXlTUUwgOC4wLjMwLgBVbmtub3duIHJlZG8gbG9nIGZvcm1hdCAodiVsdSkgaW4gZmlsZSAlcy4gUGxlYXNlIGZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGF0ICVzAE5vIHZhbGlkIGNoZWNrcG9pbnQgZm91bmQgKGNvcnJ1cHRlZCByZWRvIGxvZykuIFlvdSBjYW4gdHJ5IC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTYgYXMgYSBsYXN0IHJlc29ydC4AQXBwbHlpbmcgYSBiYXRjaCBvZiAlbGx1IHJlZG8gbG9nIHJlY29yZHMgLi4uACVzACVzAEFwcGx5IGJhdGNoIGNvbXBsZXRlZCEAJXMAJXMAJXMAJXMAJXMAJXMAQW4gb3B0aW1pemVkICh3aXRob3V0IHJlZG8gbG9nZ2luZykgRERMIG9wZXJhdGlvbiBoYXMgYmVlbiBwZXJmb3JtZWQuIEFsbCBtb2RpZmllZCBwYWdlcyBtYXkgbm90IGhhdmUgYmVlbiBmbHVzaGVkIHRvIHRoZSBkaXNrIHlldC4gVGhpcyBvZmZsaW5lIGJhY2t1cCBtYXkgbm90IGJlIGNvbnNpc3RlbnQuAEV4dGVuZGluZyB0YWJsZXNwYWNlIDogJWx1IHNwYWNlIG5hbWU6ICVzIHRvIG5ldyBzaXplOiAlbHUgcGFnZXMgZHVyaW5nIHJlY292ZXJ5LgBDb3VsZCBub3QgZXh0ZW5kIHRhYmxlc3BhY2U6ICVsdSBzcGFjZSBuYW1lOiAlcyB0byBuZXcgc2l6ZTogJWx1IHBhZ2VzIGR1cmluZyByZWNvdmVyeS4ATG9nIGJsb2NrICVsdSBhdCBsc24gJWxsdSBoYXMgdmFsaWQgaGVhZGVyLCBidXQgY2hlY2tzdW0gZmllbGQgY29udGFpbnMgJWx1LCBzaG91bGQgYmUgJWx1LgBTa2lwcGVkIG5lY2Vzc2FyeSByZWRvIGxvZyBhcHBseWluZywgLS1pbm5vZGItcmVhZC1vbmx5IHNldCEATG9nIHNjYW4gcHJvZ3Jlc3NlZCBwYXN0IHRoZSBjaGVja3BvaW50IExTTiAlbGx1LgBMb2cgcGFyc2luZyBidWZmZXIgb3ZlcmZsb3cuIFJlY292ZXJ5IG1heSBoYXZlIGZhaWxlZCEgUGxlYXNlIHNldCBsb2dfYnVmZmVyX3NpemUgdG8gYSB2YWx1ZSBoaWdoZXIgdGhhbiAlbHUuAFNldCBpbm5vZGJfZm9yY2VfcmVjb3ZlcnkgdG8gaWdub3JlIHRoaXMgZXJyb3IuAERvaW5nIHJlY292ZXJ5OiBzY2FubmVkIHVwIHRvIGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdQBEYXRhYmFzZSB3YXMgbm90IHNodXRkb3duIG5vcm1hbGx5IQBTdGFydGluZyBjcmFzaCByZWNvdmVyeS4AVGhlIHVzZXIgaGFzIHNldCBTUlZfRk9SQ0VfTk9fTE9HX1JFRE8gb24sIHNraXBwaW5nIGxvZyByZWRvAENhbm5vdCByZXN0b3JlIGZyb20gbXlzcWxiYWNrdXAsIElubm9EQiBydW5uaW5nIGluIHJlYWQtb25seSBtb2RlIQBUaGUgcmVkbyBsb2cgZmlsZSB3YXMgY3JlYXRlZCBieSBteXNxbGJhY2t1cCAtLWFwcGx5LWxvZyBhdCAlcy4gVGhlIGZvbGxvd2luZyBjcmFzaCByZWNvdmVyeSBpcyBwYXJ0IG9mIGEgbm9ybWFsIHJlc3RvcmUuAE9wZW5pbmcgY2xvbmVkIGRhdGFiYXNlAFJlZG8gbG9nIGlzIGZyb20gYW4gZWFybGllciB2ZXJzaW9uLCB2JWx1LgBSZWRvIGxvZyBmb3JtYXQgdiVsdSBub3Qgc3VwcG9ydGVkLiBDdXJyZW50IHN1cHBvcnRlZCBmb3JtYXQgaXMgdiVsdS4AQXJlIHlvdSBzdXJlIHlvdSBhcmUgdXNpbmcgdGhlIHJpZ2h0IHJlZG8gbG9nIGZpbGVzIHRvIHN0YXJ0IHVwIHRoZSBkYXRhYmFzZT8gTG9nIHNlcXVlbmNlIG51bWJlciBpbiB0aGUgcmVkbyBsb2cgZmlsZXMgaXMgJWxsdSwgbGVzcyB0aGFuIHRoZSBsb2cgc2VxdWVuY2UgbnVtYmVyIGluIHRoZSBmaXJzdCBzeXN0ZW0gdGFibGVzcGFjZSBmaWxlIGhlYWRlciwgJWxsdS4AVGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdSBpbiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgZG9lcyBub3QgbWF0Y2ggdGhlIGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdSBpbiB0aGUgcmVkbyBsb2cgZmlsZXMhAENhbid0IGluaXRpYXRlIGRhdGFiYXNlIHJlY292ZXJ5LCBydW5uaW5nIGluIHJlYWQtb25seS1tb2RlLgBXZSBzY2FubmVkIHRoZSBsb2cgdXAgdG8gJWxsdS4gQSBjaGVja3BvaW50IHdhcyBhdCAlbGx1IGFuZCB0aGUgbWF4aW11bSBMU04gb24gYSBkYXRhYmFzZSBwYWdlIHdhcyAlbGx1LiBJdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBkYXRhYmFzZSBpcyBub3cgY29ycnVwdCEAV2FpdGluZyBmb3IgcmVjdl93cml0ZXIgdG8gZmluaXNoIGZsdXNoaW5nIG9mIGJ1ZmZlciBwb29sAFJlY292ZXJ5IHBhcnNpbmcgYnVmZmVyIGV4dGVuZGVkIHRvICV6dS4AT3V0IG9mIG1lbW9yeSB3aGlsZSByZXNpemluZyByZWNvdmVyeSBwYXJzaW5nIGJ1ZmZlci4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAQ2FuJ3QgZW5jcnlwdCBkYXRhIG9mIHJlZG8gbG9nACVzACVzAERlY3J5cHRpb24gb2YgcmVkbyBsb2cgYmxvY2sgYXQgb2Zmc2V0ICVsbHUgaW4gZmlsZSAlcyBmYWlsZWQgYmVjYXVzZSB0aGVyZSdzIG5vIGtleXJpbmcgY29uZmlndXJlZAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBJTyBFcnJvcjogJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAV3JpdGluZyB0YWJsZSBtZXRhZGF0YSB0byAnJXMnACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAE9sZCBsb2cgc2VxdWVuY2UgbnVtYmVyICVsbHUgd2FzIGdyZWF0ZXIgdGhhbiB0aGUgbmV3IGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdS4gUGxlYXNlIHN1Ym1pdCBhIGJ1ZyByZXBvcnQgdG8gaHR0cDovL2J1Z3MubXlzcWwuY29tAFNlbWFwaG9yZSB3YWl0IGhhcyBsYXN0ZWQgPiAlbGx1IHNlY29uZHMuIFdlIGludGVudGlvbmFsbHkgY3Jhc2ggdGhlIHNlcnZlciBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgaHVuZy4AV2FpdGluZyBmb3IgJWxsdSB0YWJsZShzKSB0byBiZSBkcm9wcGVkAFdhaXRpbmcgZm9yIGNoYW5nZSBidWZmZXIgbWVyZ2UgdG8gY29tcGxldGUgbnVtYmVyIG9mIGJ5dGVzIG9mIGNoYW5nZSBidWZmZXIganVzdCBtZXJnZWQ6ICVsbHUAQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZShzKSB0byBiZSBlbmNyeXB0ZWQgc2luY2UgLS1pbm5vZGJfdW5kb190YWJsZXNwYWNlcz0wLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlKHMpIHRvIGJlIGVuY3J5cHRlZCBpbiByZWFkLW9ubHktbW9kZS4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZSAnJXMnIHRvIGJlIGVuY3J5cHRlZC4AQ2FuJ3Qgc2V0IHVuZG8gdGFibGVzcGFjZSAnJXMnIHRvIGJlIGVuY3J5cHRlZC4gRmFpbGVkIHRvIHdyaXRlIGhlYWRlciBwYWdlLgBDYW4ndCBzZXQgdW5kbyB0YWJsZXNwYWNlICclcycgdG8gYmUgZW5jcnlwdGVkLiBFcnJvciAlZCAtICVzAEVuY3J5cHRpb24gaXMgZW5hYmxlZCBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuAENhbid0IHJvdGF0ZSBlbmNyeXB0aW9uIG9uIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBFbmNyeXB0aW9uIGlzIGVuYWJsZWQgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBvc19maWxlX2dldF9zdGF0dXMoKSBmYWlsZWQgb24gJyVzJy4gQ2FuJ3QgZGV0ZXJtaW5lIGZpbGUgcGVybWlzc2lvbnMuACVzIGNhbid0IGJlIG9wZW5lZCBpbiAlcyBtb2RlLgAnJXMnIG5vdCBhIHJlZ3VsYXIgZmlsZS4AQ2Fubm90IGNyZWF0ZSAlcwBTZXR0aW5nIGZpbGUgJXMgc2l6ZSB0byAlbGx1IE1CLiBQcm9ncmVzcyA6ICV1JSUAQ2Fubm90IHJlc2l6ZSByZWRvIGxvZyBmaWxlICVzIHRvICVsbHUgTUIgKCVzKQBDYW5ub3QgY3JlYXRlIHJlZG8gbG9nIGZpbGVzIGluIHJlYWQtb25seSBtb2RlICgtLWlubm9kYi1yZWFkLW9ubHkpLgBSZWRvIGxvZyBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIGJ1dCB0aGUga2V5cmluZyBpcyBub3QgbG9hZGVkLgBGYWlsZWQgdG8gY3JlYXRlIHJlZG8gbG9nIGZpbGUgJXMgKGVycm9yOiAlZCkgZm9yIHN0YXJ0IExTTiAlbGx1AFJlbmFtaW5nIGxvZyBmaWxlICVzIHRvICVzAE5ldyByZWRvIGxvZyBmaWxlcyBjcmVhdGVkLCBMU049JWxsdQBVbmFibGUgdG8gb3BlbiAnJXMnIChlcnJvcjogJWQpLgBDYW5ub3QgY3JlYXRlIGNvbnN0cnVjdGlvbiBsb2cgZmlsZSAnJXMnIGZvciB1bmRvIHRhYmxlc3BhY2UgJyVzJy4AQ3JlYXRpbmcgVU5ETyBUYWJsZXNwYWNlICVzAFNldHRpbmcgZmlsZSAlcyBzaXplIHRvICVsbHUgTUIAUGh5c2ljYWxseSB3cml0aW5nIHRoZSBmaWxlIGZ1bGwARXJyb3IgaW4gY3JlYXRpbmcgJXM6IHByb2JhYmx5IG91dCBvZiBkaXNrIHNwYWNlAENhbid0IHNldCBlbmNyeXB0aW9uIG1ldGFkYXRhIGZvciBzcGFjZSAlcwBDYW5ub3QgcmVhZCBmaXJzdCBwYWdlIG9mICclcycgLSAlcwBVbmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdSB3YXMgYmVpbmcgdHJ1bmNhdGVkIHdoZW4gbXlzcWxkIHF1aXQuAENhbm5vdCByZWNvdmVyIGEgdHJ1bmNhdGVkIHVuZG8gdGFibGVzcGFjZSBpbiByZWFkLW9ubHkgbW9kZQBSZWNvbnN0cnVjdGluZyB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4AQ2Fubm90IGNyZWF0ZSAlcyBiZWNhdXNlICVzIGFscmVhZHkgdXNlcyBTcGFjZSBJRD0lbHUhIERpZCB5b3UgY2hhbmdlIGlubm9kYl91bmRvX2RpcmVjdG9yeT8AVU5ETyB0YWJsZXNwYWNlICVzIG11c3QgYmUgJXMARXJyb3IgY3JlYXRpbmcgZmlsZSBmb3IgJXMARXJyb3IgcmVhZGluZyBlbmNyeXB0aW9uIGZvciAlcwBVbmFibGUgdG8gb3BlbiB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdQBPcGVuZWQgJWxsdSBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzLgBDYW5ub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZXMgc2luY2UgaW5ub2RiXyVzIGhhcyBiZWVuIHNldC4gVXNpbmcgJWxsdSBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzLgBDYW5ub3QgY29udGludWUgSW5ub0RCIHN0YXJ0dXAgaW4gJXMgbW9kZSBiZWNhdXNlIHRoZXJlIGFyZSBubyBleGlzdGluZyB1bmRvIHRhYmxlc3BhY2VzIGZvdW5kLgBDb3VsZCBub3QgY3JlYXRlIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBFcnJvciAlZCAtICVzIC0gb3BlbmluZyBuZXdseSBjcmVhdGVkIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBDcmVhdGVkICVsbHUgdW5kbyB0YWJsZXNwYWNlcy4AVW5hYmxlIHRvIGNyZWF0ZSBlbmNyeXB0ZWQgdW5kbyB0YWJsZXNwYWNlIG51bWJlciAlbHUuIHBsZWFzZSBjaGVjayBpZiB0aGUga2V5cmluZyBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkARW5jcnlwdGlvbiBpcyBlbmFibGVkIGZvciB1bmRvIHRhYmxlc3BhY2UgbnVtYmVyICVsdS4AVW5hYmxlIHRvIGluaXRpYWxpemUgdGhlIGhlYWRlciBwYWdlIGluIHVuZG8gdGFibGVzcGFjZSBudW1iZXIgJWx1LgBDYW5ub3QgZGVsZXRlIG9sZCB1bmRvIHRhYmxlc3BhY2VzIGJlY2F1c2UgdGhleSBjb250YWluIHVuZG8gbG9ncyBmb3IgWEEgUFJFUEFSRUQgdHJhbnNhY3Rpb25zLgBVcGdyYWRpbmcgJXp1IGV4aXN0aW5nIHVuZG8gdGFibGVzcGFjZXMgdGhhdCB3ZXJlIHRyYWNrZWQgaW4gdGhlIHN5c3RlbSB0YWJsZXNwYWNlIHRvICVsdSBuZXcgaW5kZXBlbmRlbnQgdW5kbyB0YWJsZXNwYWNlcy4ARGVsZXRpbmcgJWxsdSBuZXcgaW5kZXBlbmRlbnQgdW5kbyB0YWJsZXNwYWNlcyB0aGF0IHdlIGp1c3QgY3JlYXRlZC4AV2FpdGluZyBmb3IgcHVyZ2UgdG8gc3RhcnQAQ3JlYXRpbmcgc2hhcmVkIHRhYmxlc3BhY2UgZm9yIHRlbXBvcmFyeSB0YWJsZXMAVGhlICVzIGRhdGEgZmlsZSBtdXN0IGJlIHdyaXRhYmxlIQBDb3VsZCBub3QgY3JlYXRlIHRoZSBzaGFyZWQgJXMuAFVuYWJsZSB0byBjcmVhdGUgdGhlIHNoYXJlZCAlcy4AVGhlICVzIGRhdGEgZmlsZSBjYW5ub3QgYmUgcmUtb3BlbmVkIGFmdGVyIGNoZWNrX2ZpbGVfc3BlYygpIHN1Y2NlZWRlZCEAJWQgdGhyZWFkcyBjcmVhdGVkIGJ5IElubm9EQiBoYWQgbm90IGV4aXRlZCBhdCBzaHV0ZG93biEASW5ub0RCIERhdGFiYXNlIGNyZWF0aW9uIHdhcyBhYm9ydGVkICVzd2l0aCBlcnJvciAlcy4gWW91IG1heSBuZWVkIHRvIGRlbGV0ZSB0aGUgaWJkYXRhMSBmaWxlIGJlZm9yZSB0cnlpbmcgdG8gc3RhcnQgdXAgYWdhaW4uAFBsdWdpbiBpbml0aWFsaXphdGlvbiBhYm9ydGVkICVzd2l0aCBlcnJvciAlcy4AV2FpdGluZyBmb3IgJXp1IGJ1ZmZlciBwYWdlIEkvT3MgdG8gY29tcGxldGUuAFBVTkNIIEhPTEUgc3VwcG9ydCBhdmFpbGFibGUAUFVOQ0ggSE9MRSBzdXBwb3J0IG5vdCBhdmFpbGFibGUAU2l6ZSBvZiBJbm5vREIncyB1bGludCBpcyAlenUgYnV0IHNpemUgb2Ygdm9pZCogaXMgJXp1LiBUaGUgc2l6ZXMgc2hvdWxkIGJlIHRoZSBzYW1lIHNvIHRoYXQgb24gYSA2NC1iaXQgcGxhdGZvcm1zIHlvdSBjYW4gYWxsb2NhdGUgbW9yZSB0aGFuIDQgR0Igb2YgbWVtb3J5LgBEYXRhYmFzZSB1cGdyYWRlIGNhbm5vdCBiZSBhY2NvbXBsaXNoZWQgaW4gcmVhZC1vbmx5IG1vZGUuAERhdGFiYXNlIHVwZ3JhZGUgY2Fubm90IGJlIGFjY29tcGxpc2hlZCB3aXRoIGlubm9kYl9mb3JjZV9yZWNvdmVyeSA+IDAAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMATXlTUUwgd2FzIGJ1aWx0IHdpdGhvdXQgYSBtZW1vcnkgYmFycmllciBjYXBhYmlsaXR5IG9uIHRoaXMgYXJjaGl0ZWN0dXJlLCB3aGljaCBtaWdodCBhbGxvdyBhIG11dGV4L3J3X2xvY2sgdmlvbGF0aW9uIHVuZGVyIGhpZ2ggdGhyZWFkIGNvbmN1cnJlbmN5LiBUaGlzIG1heSBjYXVzZSBhIGhhbmcuAENvbXByZXNzZWQgdGFibGVzIHVzZSB6bGliICVzACVzAFN0YXJ0dXAgY2FsbGVkIHNlY29uZCB0aW1lIGR1cmluZyB0aGUgcHJvY2VzcyBsaWZldGltZS4gSW4gdGhlIE15U1FMIEVtYmVkZGVkIFNlcnZlciBMaWJyYXJ5IHlvdSBjYW5ub3QgY2FsbCBzZXJ2ZXJfaW5pdCgpIG1vcmUgdGhhbiBvbmNlIGR1cmluZyB0aGUgcHJvY2VzcyBsaWZldGltZS4AJXMAVW5hYmxlIHRvIGNyZWF0ZSBtb25pdG9yIGZpbGUgJXM6ICVzAERpc2FibGluZyBiYWNrZ3JvdW5kIGlidWYgSU8gcmVhZCB0aHJlYWRzLgBDYW5ub3QgaW5pdGlhbGl6ZSBBSU8gc3ViLXN5c3RlbQBJbml0aWFsaXppbmcgYnVmZmVyIHBvb2wsIHRvdGFsIHNpemUgPSAlbGYlYywgaW5zdGFuY2VzID0gJWx1LCBjaHVuayBzaXplID0lbGYlYyAAQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBwb29sAENvbXBsZXRlZCBpbml0aWFsaXphdGlvbiBvZiBidWZmZXIgcG9vbABTbWFsbCBidWZmZXIgcG9vbCBzaXplICglbGx1TSksIHRoZSBmbHN0X3ZhbGlkYXRlKCkgZGVidWcgZnVuY3Rpb24gY2FuIGNhdXNlIGEgZGVhZGxvY2sgaWYgdGhlIGJ1ZmZlciBwb29sIGZpbGxzIHVwLgBDb3VsZCBub3Qgb3BlbiBvciBjcmVhdGUgdGhlIHN5c3RlbSB0YWJsZXNwYWNlLiBJZiB5b3UgdHJpZWQgdG8gYWRkIG5ldyBkYXRhIGZpbGVzIHRvIHRoZSBzeXN0ZW0gdGFibGVzcGFjZSwgYW5kIGl0IGZhaWxlZCBoZXJlLCB5b3Ugc2hvdWxkIG5vdyBlZGl0IGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgYmFjayB0byB3aGF0IGl0IHdhcywgYW5kIHJlbW92ZSB0aGUgbmV3IGliZGF0YSBmaWxlcyBJbm5vREIgY3JlYXRlZCBpbiB0aGlzIGZhaWxlZCBhdHRlbXB0LiBJbm5vREIgb25seSB3cm90ZSB0aG9zZSBmaWxlcyBmdWxsIG9mIHplcm9zLCBidXQgZGlkIG5vdCB5ZXQgdXNlIHRoZW0gaW4gYW55IHdheS4gQnV0IGJlIGNhcmVmdWw6IGRvIG5vdCByZW1vdmUgb2xkIGRhdGEgZmlsZXMgd2hpY2ggY29udGFpbiB5b3VyIHByZWNpb3VzIGRhdGEhAENhbm5vdCBjcmVhdGUgcmVkbyBsb2cgZmlsZXMgYmVjYXVzZSBkYXRhIGZpbGVzIGFyZSBjb3JydXB0IG9yIHRoZSBkYXRhYmFzZSB3YXMgbm90IHNodXQgZG93biBjbGVhbmx5IGFmdGVyIGNyZWF0aW5nIHRoZSBkYXRhIGZpbGVzLgBPbmx5IG9uZSByZWRvIGxvZyBmaWxlIGZvdW5kAFRoZSByZWRvIGxvZyBmaWxlICVzIHNpemUgJWxsdSBpcyBub3QgYSBtdWx0aXBsZSBvZiBpbm5vZGJfcGFnZV9zaXplAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIG9mIGRpZmZlcmVudCBzaXplICVsbHUgYnl0ZXMgdGhhbiBvdGhlciBsb2cgZmlsZXMgJWxsdSBieXRlcyEAVXNlIC0taW5ub2RiLWRpcmVjdG9yaWVzIHRvIGZpbmQgdGhlIHRhYmxlc3BhY2UgZmlsZXMuIElmIHRoYXQgZmFpbHMgdGhlbiB1c2UgLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9MSB0byBpZ25vcmUgdGhpcyBhbmQgdG8gcGVybWFuZW50bHkgbG9zZSBhbGwgY2hhbmdlcyB0byB0aGUgbWlzc2luZyB0YWJsZXNwYWNlKHMpAFRoZSByZWRvIGxvZyBmaWxlIG1heSBoYXZlIGJlZW4gY29ycnVwdCBhbmQgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgbG9nIHNjYW4gb3IgcGFyc2luZyBkaWQgbm90IHByb2NlZWQgZmFyIGVub3VnaCBpbiByZWNvdmVyeS4gUGxlYXNlIHJ1biBDSEVDSyBUQUJMRSBvbiB5b3VyIElubm9EQiB0YWJsZXMgdG8gY2hlY2sgdGhhdCB0aGV5IGFyZSBvayEgSXQgbWF5IGJlIHNhZmVzdCB0byByZWNvdmVyIHlvdXIgSW5ub0RCIGRhdGFiYXNlIGZyb20gYSBiYWNrdXAhAENhbm5vdCByZXNpemUgcmVkbyBsb2cgZmlsZXMgaW4gcmVhZC1vbmx5IG1vZGUuIFByb3ZpZGUgLS1pbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgPj0gJWxsdU1CIG9yIHN0YXJ0IHdpdGhvdXQgLS1pbm5vZGItcmVhZC1vbmx5LgBDYW5ub3Qgb3BlbiBERCB0YWJsZXNwYWNlLgBTdGFydGluZyB0byBkZWxldGUgYW5kIHJld3JpdGUgcmVkbyBsb2cgZmlsZXMuAFVuZG8gZnJvbSA1LjcgZm91bmQuIEl0IHdpbGwgYmUgcHVyZ2VkACVzACVzAFRhYmxlc3BhY2Ugc2l6ZSBzdG9yZWQgaW4gaGVhZGVyIGlzICVsdSBwYWdlcywgYnV0IHRoZSBzdW0gb2YgZGF0YSBmaWxlIHNpemVzIGlzICVsdSBwYWdlcwBDYW5ub3Qgc3RhcnQgSW5ub0RCLiBUaGUgdGFpbCBvZiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgaXMgbWlzc2luZy4gSGF2ZSB5b3UgZWRpdGVkIGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgaW4gYW4gaW5hcHByb3ByaWF0ZSB3YXksIHJlbW92aW5nIGliZGF0YSBmaWxlcyBmcm9tIHRoZXJlPyBZb3UgY2FuIHNldCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9MSBpbiBteS5jbmYgdG8gZm9yY2UgYSBzdGFydHVwIGlmIHlvdSBhcmUgdHJ5aW5nIHRvIHJlY292ZXIgYSBiYWRseSBjb3JydXB0IGRhdGFiYXNlLgBUYWJsZXNwYWNlIHNpemUgc3RvcmVkIGluIGhlYWRlciBpcyAlbHUgcGFnZXMsIGJ1dCB0aGUgc3VtIG9mIGRhdGEgZmlsZSBzaXplcyBpcyBvbmx5ICVsdSBwYWdlcwBDYW5ub3Qgc3RhcnQgSW5ub0RCLiBUaGUgdGFpbCBvZiB0aGUgc3lzdGVtIHRhYmxlc3BhY2UgaXMgbWlzc2luZy4gSGF2ZSB5b3UgZWRpdGVkIGlubm9kYl9kYXRhX2ZpbGVfcGF0aCBpbiBteS5jbmYgaW4gYW4gSW5ub0RCOiBpbmFwcHJvcHJpYXRlIHdheSwgcmVtb3ZpbmcgaWJkYXRhIGZpbGVzIGZyb20gdGhlcmU/IFlvdSBjYW4gc2V0IGlubm9kYl9mb3JjZV9yZWNvdmVyeT0xIGluIG15LmNuZiB0byBmb3JjZSBJbm5vREI6IGEgc3RhcnR1cCBpZiB5b3UgYXJlIHRyeWluZyB0byByZWNvdmVyIGEgYmFkbHkgY29ycnVwdCBkYXRhYmFzZS4AJXMgc3RhcnRlZDsgbG9nIHNlcXVlbmNlIG51bWJlciAlbGx1AFdhaXRpbmcgZm9yIHB1cmdlIHRvIGNvbXBsZXRlAFdhaXRpbmcgZm9yIGRpY3Rfc3RhdHNfdGhyZWFkIHRvIGV4aXQAUXVlcnkgY291bnRlciBzaG93cyAlbGxkIHF1ZXJpZXMgc3RpbGwgaW5zaWRlIElubm9EQiBhdCBzaHV0ZG93bgBTaHV0ZG93biBjb21wbGV0ZWQ7IGxvZyBzZXF1ZW5jZSBudW1iZXIgJWxsdQBDYW5ub3QgY29udGludWUgb3BlcmF0aW9uLgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBVbmFibGUgdG8gcmVhZCB0aGUgZXhpc3RpbmcgdW5kbyB0cnVuY2F0ZSBsb2cgZmlsZSAnJXMnLiBUaGUgZXJyb3IgaXMgJXMAVW5kbyB0YWJsZXNwYWNlICVzIGlzIG1hcmtlZCBmb3IgdHJ1bmNhdGUAJXMAVHJ1bmNhdGluZyBVTkRPIHRhYmxlc3BhY2UgJXMAJXMAQ2Fubm90IGNyZWF0ZSB0cnVuY2F0ZSBsb2cgZm9yIHVuZG8gdGFibGVzcGFjZSAnJXMnLgAlcwBGYWlsZWQgdG8gdHJ1bmNhdGUgdW5kbyB0YWJsZXNwYWNlICclcycuACVzAENvbXBsZXRlZCB0cnVuY2F0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMuACVzACVzACVzACVzACVzACVzACVzACVzAFRyeWluZyB0byBhY2Nlc3MgdXBkYXRlIHVuZG8gcmVjIGZpZWxkICVsbHUgaW4gaW5kZXggJXMgb2YgdGFibGUgJXMgYnV0IGluZGV4IGhhcyBvbmx5ICVsbHUgZmllbGRzLiAlcy4gUnVuIGFsc28gQ0hFQ0sgVEFCTEUgJXMuIG5fZmllbGRzID0gJWxsdSwgaSA9ICVsbHUsIHB0ciA9ICVwLgAlcwAlcwAlcwAlcwAlcwBSb2xsYmFjayBvZiBub24tcHJlcGFyZWQgdHJhbnNhY3Rpb25zIGNvbXBsZXRlZAAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBCbG9ja2VkIEhpZ2ggUHJpb3JpdHkgVHJhbnNhY3Rpb24gKElEICVsbHUsIFRocmVhZCBJRCAlcykga2lsbGVkIHRoZSBibG9ja2luZyB0cmFuc2FjdGlvbiAoSUQgJWxsdSAtICVzKSBieSByb2xsaW5nIGl0IGJhY2suACVzAGdldHRpbWVvZmRheSgpIGZhaWxlZDogJXMAQ2FuJ3QgY3JlYXRlIFVORE8gdGFibGVzcGFjZSAlcyAlcwAlcwBSZXNpemluZyByZWRvIGxvZyBmcm9tICVsbHVNIHRvICVsbHVNIChMU049JWxsdSkgc3luY2hyb25vdXNseS4gSWYgdGhpcyB0YWtlcyB0b28gbG9uZywgY29uc2lkZXIgc3RhcnRpbmcgdGhlIHNlcnZlciB3aXRoIGxhcmdlIC0taW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LCBhbmQgcmVzaXppbmcgdGhlIHJlZG8gbG9nIG9ubGluZSB1c2luZyBTRVQuACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAE91dCBvZiBzcGFjZSBpbiB0aGUgcmVkbyBsb2cuIENoZWNrcG9pbnQgTFNOOiAlbGx1LiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AJXMATG9nIHdyaXRlciB3YWl0ZWQgdG9vIGxvbmcgZm9yIHJlZG8tYXJjaGl2ZXIgdG8gYWR2YW5jZSAoMSBzZWNvbmQpLiBUaGVyZSBhcmUgdW5hcmNoaXZlZDogJWxsdSBieXRlcy4gQXJjaGl2ZXIgTFNOOiAlbGx1LiBBYm9ydGVkIHRoZSByZWRvLWFyY2hpdmVyLiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4ATG9nIHdyaXRlciBpcyB3YWl0aW5nIGZvciByZWRvLWFyY2hpdmVyIHRvIGNhdGNoIHVwIHVuYXJjaGl2ZWQ6ICVsbHUgYnl0ZXMuIEFyY2hpdmVyIExTTjogJWxsdS4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuACVzACVzACVzACVzAENhbid0IHNldCByZWRvIGxvZyBmaWxlcyB0byBiZSBlbmNyeXB0ZWQgaW4gcmVhZC1vbmx5IG1vZGUuAENhbid0IHNldCByZWRvIGxvZyBmaWxlcyB0byBiZSBlbmNyeXB0ZWQuAENhbid0IHNldCByZWRvIGxvZyB0YWJsZXNwYWNlIHRvIGJlIGVuY3J5cHRlZC4AUmVkbyBsb2cgZW5jcnlwdGlvbiBpcyBlbmFibGVkLgBXYWl0aW5nIGZvciBhcmNoaXZlciB0byBmaW5pc2ggYXJjaGl2aW5nIHBhZ2UgYW5kIGxvZwBTdGFydGluZyBzaHV0ZG93bi4uLgBXYWl0aW5nIGZvciAlcyB0byBleGl0LgBXYWl0aW5nIGZvciByb2xsYmFjayBvZiAlenUgcmVjb3ZlcmVkIHRyYW5zYWN0aW9ucywgYmVmb3JlIHNodXRkb3duLgBXYWl0aW5nIGZvciBtYXN0ZXIgdGhyZWFkIHRvIGJlIHN1c3BlbmRlZC4AV2FpdGluZyBmb3IgcGFnZV9jbGVhbmVyIHRvIGZpbmlzaCBmbHVzaGluZyBvZiBidWZmZXIgcG9vbC4AU2h1dGRvd24gaXMgd2FpdGluZyBmb3IgJXp1IGJ1ZmZlciBwYWdlIEkvT3MgdG8gY29tcGxldGUuAE15U1FMIGhhcyByZXF1ZXN0ZWQgYSB2ZXJ5IGZhc3Qgc2h1dGRvd24gd2l0aG91dCBmbHVzaGluZyB0aGUgSW5ub0RCIGJ1ZmZlciBwb29sIHRvIGRhdGEgZmlsZXMuIEF0IHRoZSBuZXh0IG15c3FsZCBzdGFydHVwIElubm9EQiB3aWxsIGRvIGEgY3Jhc2ggcmVjb3ZlcnkhACVzACVzACVzACVzACVzACVzACVzACVzACVzACVzAEludmFsaWQgcmVkbyBsb2cgaGVhZGVyIGNoZWNrc3VtLgBVbnN1cHBvcnRlZCByZWRvIGxvZyBmb3JtYXQgKHYlbHUpLiBUaGUgcmVkbyBsb2cgd2FzIGNyZWF0ZWQgYmVmb3JlIE15U1FMIDUuNy45ACVzAENhbm5vdCBjb250aW51ZSBvcGVyYXRpb24uIFRoZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHk9JWxsdU0gaXMgdG9vIHNtYWxsIGZvciB0aGUgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeT0lbHUuIFRoZSBjYXBhY2l0eSBvZiByZWRvIHNob3VsZCBiZSA+PSAlbGx1TS4gVG8gZ2V0IG15c3FsZCBydW5uaW5nLCBzZXQgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSB0byBhIHNtYWxsZXIgdmFsdWUgb3IgaW5jcmVhc2UgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LiAlcwAlcwAlcwBVc2VyIGhhcyBzZXQgaW5ub2RiX3RocmVhZF9jb25jdXJyZW5jeSB0byAlbHUuAFNUT1AgUkVQTElDQSBjb21tYW5kIGV4ZWN1dGlvbiBpcyBpbmNvbXBsZXRlOiBSZXBsaWNhIFNRTCB0aHJlYWQgZ290IHRoZSBzdG9wIHNpZ25hbCwgdGhyZWFkIGlzIGJ1c3ksIFNRTCB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AU1RPUCBSRVBMSUNBIGNvbW1hbmQgZXhlY3V0aW9uIGlzIGluY29tcGxldGU6IFJlcGxpY2EgSU8gdGhyZWFkIGdvdCB0aGUgc3RvcCBzaWduYWwsIHRocmVhZCBpcyBidXN5LCBJTyB0aHJlYWQgd2lsbCBzdG9wIG9uY2UgdGhlIGN1cnJlbnQgdGFzayBpcyBjb21wbGV0ZS4AU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IFVwZGF0ZXMgdG8gbm9uLXRyYW5zYWN0aW9uYWwgdGFibGVzIGNhbiBvbmx5IGJlIGRvbmUgaW4gZWl0aGVyIGF1dG9jb21taXR0ZWQgc3RhdGVtZW50cyBvciBzaW5nbGUtc3RhdGVtZW50IHRyYW5zYWN0aW9ucywgYW5kIG5ldmVyIGluIHRoZSBzYW1lIHN0YXRlbWVudCBhcyB1cGRhdGVzIHRvIHRyYW5zYWN0aW9uYWwgdGFibGVzLgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRBQkxFIC4uLiBTRUxFQ1QuAFN0YXRlbWVudCB2aW9sYXRlcyBHVElEIGNvbnNpc3RlbmN5OiBDUkVBVEUgVEVNUE9SQVJZIFRBQkxFIGFuZCBEUk9QIFRFTVBPUkFSWSBUQUJMRSBjYW4gb25seSBiZSBleGVjdXRlZCBvdXRzaWRlIHRyYW5zYWN0aW9uYWwgY29udGV4dC4gIFRoZXNlIHN0YXRlbWVudHMgYXJlIGFsc28gbm90IGFsbG93ZWQgaW4gYSBmdW5jdGlvbiBvciB0cmlnZ2VyIGJlY2F1c2UgZnVuY3Rpb25zIGFuZCB0cmlnZ2VycyBhcmUgYWxzbyBjb25zaWRlcmVkIHRvIGJlIG11bHRpLXN0YXRlbWVudCB0cmFuc2FjdGlvbnMuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSBpZ25vcmVkIGFuZCB1cGRhdGVzIHdpbGwgYmUgd3JpdHRlbiBpbiBmdWxsIGZvcm1hdCB0byBiaW5hcnkgbG9nLgBXaGVuICUuMTkycywgdGhlIG9wdGlvbiBsb2dfYmluX3VzZV92MV9yb3dfZXZlbnRzPTEgd2lsbCBiZSBpZ25vcmVkIGFuZCByb3cgZXZlbnRzIHdpbGwgYmUgd3JpdHRlbiBpbiBuZXcgZm9ybWF0IHRvIGJpbmFyeSBsb2cuAFdoZW4gJS4xOTJzLCB0aGUgb3B0aW9uIGJpbmxvZ19yb3dfdmFsdWVfb3B0aW9ucz0lLjE5MnMgd2lsbCBiZSB1c2VkIG9ubHkgZm9yIHRoZSBhZnRlci1pbWFnZS4gRnVsbCB2YWx1ZXMgd2lsbCBiZSB3cml0dGVuIGluIHRoZSBiZWZvcmUtaW1hZ2UsIHNvIHRoZSBzYXZpbmcgaW4gZGlzayBzcGFjZSBkdWUgdG8gYmlubG9nX3Jvd192YWx1ZV9vcHRpb25zIGlzIGxpbWl0ZWQgdG8gbGVzcyB0aGFuIDUwJSUuAEFib3J0ZWQgY29ubmVjdGlvbiAldSB0byBkYjogJyUtLjE5MnMnIHVzZXI6ICclLS40OHMnIGhvc3Q6ICclLS4yNTVzJyAoJS0uNjRzKS4AJXM6IE5vcm1hbCBzaHV0ZG93bi4AQ2FuIG5vdCBwZXJmb3JtIGtleXJpbmcgbWlncmF0aW9uIDogJXMuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyBvcHRpb24gdmFsdWUgJyV1JyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAgJyV1Jy4gVGhlIG1lbWJlciB3aWxsIG5vdyBleGl0IHRoZSBncm91cC4gSWYgdGhlcmUgaXMgZXhpc3RpbmcgZGF0YSBvbiBtZW1iZXIsIGl0IG1heSBiZSBpbmNvbXBhdGlibGUgd2l0aCBncm91cCBpZiBpdCB3YXMgY3JlYXRlZCB3aXRoIGEgbG93ZXJfY2FzZV90YWJsZV9uYW1lcyB2YWx1ZSBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAuAEFuIG91dC1vZi1tZW1vcnkgZXJyb3Igb2NjdXJyZWQgd2hpbGUgc2F2aW5nIHRoZSBzZXQgb2YgR1RJRHMgZnJvbSB0aGUgbGFzdCBiaW5hcnkgbG9nIGludG8gdGhlIG15c3FsLmd0aWRfZXhlY3V0ZWQgdGFibGUAVGhlIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgc2V0dGluZyBmb3IgdGhlIGRhdGEgZGljdGlvbmFyeSB3YXMgbm90IGZvdW5kLiBTdGFydGluZyB0aGUgc2VydmVyIHVzaW5nIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAnJXUnLgBBIGNhcHR1cmUgZ3JvdXAgaGFzIGFuIGludmFsaWQgbmFtZS4AVmFyaWFibGUgJyUtLjY0cycgY2FuJ3QgYmUgc2V0IHRvIHRoZSB2YWx1ZSBvZiAnJS0uMjAwcycAU3RvcHBpbmcgc2VydmljZXMgZmFpbGVkIHdpdGggZXJyb3IgIiVzIgBRdWVyeSBjYXVzZWQgZGlmZmVyZW50IGVycm9ycyBvbiBzb3VyY2UgYW5kIHJlcGxpY2EuIEVycm9yIG9uIHNvdXJjZTogbWVzc2FnZSAoZm9ybWF0KT0nJXMnIGVycm9yIGNvZGU9JWQ7IEVycm9yIG9uIHJlcGxpY2E6YWN0dWFsIG1lc3NhZ2U9JyVzJywgZXJyb3IgY29kZT0lZC4gRGVmYXVsdCBkYXRhYmFzZTonJXMnLiBRdWVyeTonJXMnAEdvdCBmYXRhbCBlcnJvciAlZCBmcm9tIHNvdXJjZSB3aGVuIHJlYWRpbmcgZGF0YSBmcm9tIGJpbmFyeSBsb2c6ICclLS41MTJzJwBSZXBsaWNhdGlvbiBldmVudCBjaGVja3N1bSB2ZXJpZmljYXRpb24gZmFpbGVkIHdoaWxlIHJlYWRpbmcgZnJvbSBuZXR3b3JrLgBGYWlsZWQgdG8gY3JlYXRlICVzAEZhdGFsIGVycm9yOiAlcwBVbmV4cGVjdGVkIHNvdXJjZSdzIGhlYXJ0YmVhdCBkYXRhOiAlcwBUaGUgaW5jaWRlbnQgJXMgb2NjdXJyZWQgb24gdGhlIHNvdXJjZS4gTWVzc2FnZTogJXMAU291cmNlIGNvbW1hbmQgJXMgZmFpbGVkOiAlcwBSZWxheSBsb2cgcmVhZCBmYWlsdXJlOiAlcwBSZWxheSBsb2cgd3JpdGUgZmFpbHVyZTogJXMAUmVwbGljYSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb25uZWN0aW9uIG1ldGFkYXRhIHN0cnVjdHVyZSBmcm9tIHRoZSByZXBvc2l0b3J5AFJlcGxpY2EgZmFpbGVkIHRvIGluaXRpYWxpemUgYXBwbGllciBtZXRhZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgcmVwb3NpdG9yeQBHb3QgYSBwYWNrZXQgYmlnZ2VyIHRoYW4gJ21heF9hbGxvd2VkX3BhY2tldCcgYnl0ZXMAQWNjZXNzIHRvICUuNjRzICclLjY0cy4lLjY0cycgaXMgcmVqZWN0ZWQuAFVua25vd24gZXJyb3IAVW5rbm93biBzeXN0ZW0gdmFyaWFibGUgJyUtLjY0cycAQSBtZXNzYWdlIGludGVuZGVkIGZvciBhIGNsaWVudCBjYW5ub3QgYmUgc2VudCB0aGVyZSBhcyBubyBjbGllbnQtc2Vzc2lvbiBpcyBhdHRhY2hlZC4gVGhlcmVmb3JlLCB3ZSdyZSBzZW5kaW5nIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgZXJyb3ItbG9nIGluc3RlYWQ6IE1ZLSUwNmQgLSAlcwBBYm9ydGVkIGNvbm5lY3Rpb24gJXUgdG8gZGI6ICclLS4xOTJzJyB1c2VyOiAnJS0uNDhzJyBob3N0OiAnJS0uMjU1cycgKCUtLjY0czsgZGlhZ25vc3RpY3MgYXJlYTogTVktJTA2ZCAtICUtLjY0cykAT3V0IG9mIHNvcnQgbWVtb3J5LCBjb25zaWRlciBpbmNyZWFzaW5nIHNlcnZlciBzb3J0IGJ1ZmZlciBzaXplIQBUaGUgdGFibGUgJyUtLjE5MnMnIGlzIGZ1bGwhAENyZWF0ZSB0YWJsZS90YWJsZXNwYWNlICclLS4xOTJzJyBmYWlsZWQsIGFzIGRpc2sgaXMgZnVsbC4ASGFuZGxlciByZXBvcnRlZCBlcnJvciAlZCAtICVzAEluY29ycmVjdCBpbmZvcm1hdGlvbiBpbiBmaWxlOiAnJS0uMjAwcycAQ2FuJ3Qgb3BlbiBmaWxlOiAnJS0uMjAwcycgKE9TIGVycm5vOiAlZCAtICVzKQBDYW4ndCBmaW5kIGZpbGU6ICclLS4yMDBzJyAoT1MgZXJybm86ICVkIC0gJXMpACclLS4xOTJzJyBpcyBsb2NrZWQgYWdhaW5zdCBjaGFuZ2UgKE9TIGVycm5vOiAlZCAtICVzKQBDYW5ub3QgbG9hZCBmcm9tICVzLiVzLiBUaGUgdGFibGUgaXMgcHJvYmFibHkgY29ycnVwdGVkIQBFcnJvciBpbiBkaWFnbm9zdGljcyBhcmVhOiBNWS0lMDZkIC0gJXMASW5jb3JyZWN0IGRlZmluaXRpb24gb2YgdGFibGUgJXMuJXM6IGV4cGVjdGVkIGNvbHVtbiAnJXMnIGF0IHBvc2l0aW9uICVkLCBmb3VuZCAnJXMnLgBUaGUgY29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIENyZWF0ZWQgd2l0aCBNeVNRTCAlZCwgbm93IHJ1bm5pbmcgJWQuIFBsZWFzZSBwZXJmb3JtIHRoZSBNeVNRTCB1cGdyYWRlIHByb2NlZHVyZS4AQ29sdW1uIGNvdW50IG9mICVzLiVzIGlzIHdyb25nLiBFeHBlY3RlZCAlZCwgZm91bmQgJWQuIFRoZSB0YWJsZSBpcyBwcm9iYWJseSBjb3JydXB0ZWQuAABSZXBsaWNhIFNRTCB0aHJlYWQgYWJvcnRlZC4gQ2FuJ3QgZXhlY3V0ZSBpbml0X3JlcGxpY2EgcXVlcnksIE1ZLSUwNmQgLSAnJXMnAENvbHVtbiAlZCBvZiB0YWJsZSAnJS0uMTkycy4lLS4xOTJzJyBjYW5ub3QgYmUgY29udmVydGVkIGZyb20gdHlwZSAnJS0uMzJzJyB0byB0eXBlICclLS4zMnMnAFJlcGxpY2EgU1FMIHRocmVhZCBpZ25vcmVkIHRoZSBxdWVyeSBiZWNhdXNlIG9mIHJlcGxpY2F0ZS0qLXRhYmxlIHJ1bGVzAENhbm5vdCByZXBsaWNhdGUgYW5vbnltb3VzIHRyYW5zYWN0aW9uIHdoZW4gQVVUT19QT1NJVElPTiA9IDEsIGF0IGZpbGUgJS40MDBzLCBwb3NpdGlvbiAlbGxkLgBDYW5ub3QgcmVwbGljYXRlIGFub255bW91cyB0cmFuc2FjdGlvbiB3aGVuIEBAR0xPQkFMLkdUSURfTU9ERSA9IE9OLCBhdCBmaWxlICUuNDAwcywgcG9zaXRpb24gJWxsZC4AQ2Fubm90IHJlcGxpY2F0ZSBHVElELXRyYW5zYWN0aW9uIHdoZW4gQEBHTE9CQUwuR1RJRF9NT0RFID0gT0ZGLCBhdCBmaWxlICUuNDAwcywgcG9zaXRpb24gJWxsZC4AU2ltdWxhdGVkIGVycm9yACVzAEF1ZGl0IExvZyBmaWx0ZXJpbmcgaGFzIG5vdCBiZWVuIGluc3RhbGxlZC4ARmFpbGVkIHRvIG9wZW4gdGhlICVzIGZpbHRlciB0YWJsZXMuAEZhaWxlZCB0byBvcGVuICclcy4lcycgJXMgdGFibGUuAEZpbHRlciBuYW1lIGNhbm5vdCBiZSBlbXB0eS4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gdGhlIHVzZXIgbmFtZS4AUmVxdWVzdCBpZ25vcmVkIGZvciAnJXMnQCclcycuIFNVUEVSIG9yIEFVRElUX0FETUlOIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbgBObyBrZXlyaW5nIGluc3RhbGxlZC4ASW52YWxpZCBjaGFyYWN0ZXIgaW4gdGhlIGhvc3QgbmFtZS4AQXVkaXQgbG9nIGVuY3J5cHRpb24gcGFzc3dvcmQgaGFzIG5vdCBiZWVuIHNldDsgaXQgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS4gVXNlIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX2dldCB0byBvYnRhaW4gdGhlIHBhc3N3b3JkIG9yIGF1ZGl0X2xvZ19lbmNyeXB0aW9uX3Bhc3N3b3JkX3NldCB0byBzZXQgYSBuZXcgb25lLgBDb3VsZCBub3QgY3JlYXRlIEFFUyBrZXkuIE9wZW5TU0wncyBFVlBfQnl0ZXNUb0tleSBmdW5jdGlvbiBmYWlsZWQuAEF1ZGl0IGxvZyBlbmNyeXB0aW9uIHBhc3N3b3JkIGNhbm5vdCBiZSBmZXRjaGVkIGZyb20gdGhlIGtleXJpbmcuIFBhc3N3b3JkIHVzZWQgc28gZmFyIGlzIHVzZWQgZm9yIGVuY3J5cHRpb24uAENvdWxkIG5vdCByZWluaXRpYWxpemUgYXVkaXQgbG9nIGZpbHRlcnMuAFVzZXIgY2Fubm90IGJlIGVtcHR5LgBGaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHVzZXIgbmFtZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4AU3BlY2lmaWVkIGZpbHRlciBoYXMgbm90IGJlZW4gZm91bmQuAENhbm5vdCB1cGdyYWRlIHNlcnZlciBlYXJsaWVyIHRoYW4gNS43IHRvIDguMAAlcyAobXlzcWxkICVzKSBpbml0aWFsaXppbmcgb2Ygc2VydmVyIGluIHByb2dyZXNzIGFzIHByb2Nlc3MgJWx1ACVzIChteXNxbGQgJXMpIGluaXRpYWxpemluZyBvZiBzZXJ2ZXIgaGFzIGNvbXBsZXRlZABDYW5ub3QgYm9vdCBzZXJ2ZXIgdmVyc2lvbiAlbHUgb24gZGF0YSBkaXJlY3RvcnkgYnVpbHQgYnkgdmVyc2lvbiAlbGx1LiBEb3duZ3JhZGUgaXMgbm90IHN1cHBvcnRlZABSZWNlaXZlZCBTSFVURE9XTiBmcm9tIHVzZXIgJXMuIFNodXR0aW5nIGRvd24gbXlzcWxkIChWZXJzaW9uOiAlcykuAFRoZSBwbHVnaW4gZW5jb3VudGVyZWQgYSBjcml0aWNhbCBlcnJvciBhbmQgd2lsbCBhYm9ydDogJXMASW52YWxpZCBtYXRjaCBtb2RlIGZsYWcgaW4gcmVndWxhciBleHByZXNzaW9uLgBUaGUgdXNlIG9mIHJlcGxpY2F0aW9uIGZpbHRlcnMgd2l0aCBYQSB0cmFuc2FjdGlvbnMgaXMgbm90IHN1cHBvcnRlZCwgYW5kIGNhbiBsZWFkIHRvIGFuIHVuZGVmaW5lZCBzdGF0ZSBpbiB0aGUgcmVwbGljYS4AQ2Fubm90IHVwZGF0ZSBHVElEX1BVUkdFRCB3aXRoIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBwbHVnaW4gcnVubmluZwAnJXMuJXMnIHRhYmxlIGRlZmluaXRpb24gaGFzIG5vdCBiZWVuIHVwZ3JhZGVkOyBQbGVhc2UgcGVyZm9ybSB0aGUgTXlTUUwgdXBncmFkZSBwcm9jZWR1cmUuAEV4ZWN1dGlvbiBvZiBzZXJ2ZXItc2lkZSBTUUwgc3RhdGVtZW50ICclcycgZmFpbGVkIHdpdGggZXJyb3IgY29kZSA9ICVkLCBlcnJvciBtZXNzYWdlID0gJyVzJy4ATm8gcGF0aHMgYWxsb3dlZCBmb3Igc2hhcmVkIGxpYnJhcnkuAEZ1bmN0aW9uICclLS4xOTJzJyBhbHJlYWR5IGV4aXN0cy4AR290IEVycm9yOiAlbGQgZnJvbSBTZXRFdmVudC4ARXJyb3IgYWxsb2NhdGluZyBTU0wgQklPLgAlcwBPbmUgb3Igc2V2ZXJhbCBsb2NhdGlvbnMgd2VyZSBpbmFjY2Vzc2libGUgd2hpbGUgY2hlY2tpbmcgUElEIGZpbGVwYXRoLgBDdXJyZW50bHkgdW5rbm93biB2YXJpYWJsZSAnJXMnIHdhcyByZWFkIGZyb20gdGhlIHBlcnNpc3RlZCBjb25maWcgZmlsZS4ARmF0YWwgZXJyb3IgaW4gZGVmYXVsdHMgaGFuZGxpbmcuIFByb2dyYW0gYWJvcnRlZCEARHVwbGljYXRlIHZhcmlhYmxlIG5hbWUgJyVzJy4ARmFpbGVkIHRvIGluaXRpYWxpemUgc3lzdGVtIHZhcmlhYmxlcy4AVmFyaWFibGUgbmFtZSAnJXMnIG5vdCBmb3VuZC4AU29tZSAoJWQpIHRocmVhZHMgYXJlIHN0aWxsIGFjdGl2ZQAlcwBTb3VyY2UgdGFibGVzcGFjZSBpcyBlbmNyeXB0ZWQgYnV0IHRhcmdldCB0YWJsZXNwYWNlIGlzIG5vdC4AV2FpdGluZyBmb3IgdGFibGVzcGFjZV9hbHRlcl9lbmNyeXB0X3RocmVhZCB0byBleGl0ACVzACVzACVzACVzACVzACVzACVzACVzACVzOiBDb3VsZCBub3QgYWRkIHN1cHByZXNzaW9uIHJ1bGUgZm9yIGNvZGUgIiVzIi4gUnVsZS1zZXQgbWF5IGJlIGZ1bGwsIG9yIGNvZGUgbWF5IG5vdCBjb3JyZXNwb25kIHRvIGFuIGVycm9yLWxvZyBtZXNzYWdlLgBJbnZhbGlkIHZhbHVlIGZvciBjb21tYW5kIGxpbmUgb3B0aW9uIGJpbmQtYWRkcmVzc2VzOiAnJXMnAElnbm9yaW5nIHRoZSBAQGdsb2JhbC5yZWxheV9sb2dfc3BhY2VfbGltaXQgb3B0aW9uIGJlY2F1c2UgQEBnbG9iYWwucmVsYXlfbG9nX3B1cmdlIGlzIGRpc2FibGVkLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgR1RJRCBleGVjdXRpb24gaW5mb3JtYXRpb246ICVzAE1lc3NhZ2UgcmVjZWl2ZWQgd2l0aG91dCBhIHByb3BlciBncm91cCBjb29yZGluYXRvciBtb2R1bGUuAEEgbWVtYmVyIGNhbm5vdCBqb2luIHRoZSBncm91cCB3aGlsZSBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgaXMgcnVubmluZyBpbml0aWF0ZWQgYnkgJyVzJy4AQSBtZW1iZXIgaXMgam9pbmluZyB0aGUgZ3JvdXAgd2hpbGUgYSBncm91cCBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiAnJXMnIGlzIHJ1bm5pbmcgaW5pdGlhdGVkIGJ5ICclcycuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBDYW4ndCBzdGFydCAlcyBmb3IgY2hhbm5lbCAnJXMnIHdoZW4gZ3JvdXAgcmVwbGljYXRpb24gaXMgcnVubmluZyBhIGdyb3VwIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgaW5pdGlhdGVkIGJ5ICclcycuAEEgcHJpbWFyeSBlbGVjdGlvbiB3YXMgaW52b2tlZCBidXQgdGhlIHJlcXVlc3RlZCBwcmltYXJ5IG1lbWJlciBpcyBub3QgaW4gdGhlIGdyb3VwLiBSZXF1ZXN0IGlnbm9yZWQuAEVycm9yIHdoaWxlIHNlbmRpbmcgbWVzc2FnZS4gQ29udGV4dDogJXMARXJyb3Igd2hpbGUgZXhlY3V0aW5nIGEgZ3JvdXAgY29uZmlndXJhdGlvbiBvcGVyYXRpb246ICVzAENvbmZpZ3VyYXRpb24gb3BlcmF0aW9uICclcycgdGVybWluYXRlZC4gJXMAU3RhcnRpbmcgZ3JvdXAgb3BlcmF0aW9uIGxvY2FsIGV4ZWN1dGlvbjogJXMAVGVybWluYXRpb24gb2YgZ3JvdXAgb3BlcmF0aW9uIGxvY2FsIGV4ZWN1dGlvbjogJXMAQSBjb25maWd1cmF0aW9uIGNoYW5nZSB3YXMga2lsbGVkIGluIHRoaXMgbWVtYmVyLiBUaGUgbWVtYmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cCBhcyBpdHMgY29uZmlndXJhdGlvbiBtYXkgaGF2ZSBkaXZlcmdlZC4AVGhlcmUgd2FzIGFuIGlzc3VlIG9uIHRoZSBwcmltYXJ5IGVsZWN0aW9uIHByb2Nlc3M6ICVzIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBUaGVyZSB3YXMgYW4gaXNzdWUgd2hlbiBzdG9wcGluZyBhIHByZXZpb3VzIGVsZWN0aW9uIHByb2Nlc3M6ICVzAEl0IHdhcyBub3QgcG9zc2libGUgdG8gaW5pdGlhbGl6ZSBzdGFnZSBsb2dnaW5nIGZvciB0aGlzIHRhc2suIFRoZSBvcGVyYXRpb24gd2lsbCBzdGlsbCBydW4gd2l0aG91dCBzdGFnZSB0cmFja2luZy4AQ291bGQgbm90IGV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBvZiBHcm91cCBSZXBsaWNhdGlvbiBVREYgZnVuY3Rpb246ICVzLiBDaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50LCBpZiBzbywgdHJ5IHRvIHJlbW92ZSBpdABDb3VsZCBub3QgdW5pbnN0YWxsIEdyb3VwIFJlcGxpY2F0aW9uIFVERiBmdW5jdGlvbnMuIFRyeSB0byByZW1vdmUgdGhlbSBtYW51YWxseSBpZiBwcmVzZW50LgBDb3VsZCBub3QgZXhlY3V0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIEdyb3VwIFJlcGxpY2F0aW9uIFVERiBmdW5jdGlvbnMuIENoZWNrIGZvciBvdGhlciBlcnJvcnMgaW4gdGhlIGxvZyBhbmQgdHJ5IHRvIHJlaW5zdGFsbCB0aGUgcGx1Z2luAFRoZSBmdW5jdGlvbiAnJXMnIGZhaWxlZC4gJXMARG8gbm90IHNwZWNpZnkgdGhlIGN1cnJlbnQgcGFzc3dvcmQgd2hpbGUgY2hhbmdpbmcgaXQgZm9yIG90aGVyIHVzZXJzLgBJbmNvcnJlY3QgY3VycmVudCBwYXNzd29yZC4gU3BlY2lmeSB0aGUgY29ycmVjdCBwYXNzd29yZCB3aGljaCBoYXMgdG8gYmUgcmVwbGFjZWQuAEN1cnJlbnQgcGFzc3dvcmQgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIGluIHRoZSBSRVBMQUNFIGNsYXVzZSBpbiBvcmRlciB0byBjaGFuZ2UgaXQuAFZhcmlhYmxlICclLS42NHMnIGNhbid0IGJlIHNldCB0byB0aGUgdmFsdWUgb2YgJyUtLjIwMHMnACVzIHdhcyB1bmFibGUgdG8gY3JlYXRlIGEgbmV3IFdpbmRvd3MgcmVnaXN0cnkga2V5ICVzIGZvciAlczsgY29udGludWluZyB0byB1c2UgdGhlIHByZXZpb3VzIGlkZW50LgBTdGF0ZW1lbnQgdmlvbGF0ZXMgR1RJRCBjb25zaXN0ZW5jeTogQ1JFQVRFIFRFTVBPUkFSWSBUQUJMRSBhbmQgRFJPUCBURU1QT1JBUlkgVEFCTEUgYXJlIG5vdCBhbGxvd2VkIGluc2lkZSBhIHRyYW5zYWN0aW9uIG9yIGluc2lkZSBhIHByb2NlZHVyZSBpbiBhIHRyYW5zYWN0aW9uYWwgY29udGV4dCB3aGVuIEBAc2Vzc2lvbi5iaW5sb2dfZm9ybWF0PVNUQVRFTUVOVC4AU2Vjb25kYXJ5IGVuZ2luZSBvcGVyYXRpb24gZmFpbGVkLiAlcy4ARERMcyBvbiBhIHRhYmxlIHdpdGggYSBzZWNvbmRhcnkgZW5naW5lIGRlZmluZWQgYXJlIG5vdCBhbGxvd2VkLgBVbmFibGUgdG8gYWxsb2NhdGUgdGVtcG9yYXJ5IHRhYmxlc3BhY2UgZm9yIHRoaXMgc2Vzc2lvbgBVbmFibGUgdG8gc3dpdGNoIHNlY3VyaXR5IGNvbnRleHQgdG8gdXNlcjogJXMAU3RhdGVtZW50IHZpb2xhdGVzIEdUSUQgY29uc2lzdGVuY3k6IEFMVEVSIFRBQkxFIC4uLiBBREQgQ09MVU1OIC4uIHdpdGggZXhwcmVzc2lvbiBhcyBERUZBVUxULgBFcnJvciBpbiBwYXJzaW5nICVzICclcycuJyVzJyBkdXJpbmcgdXBncmFkZS4gJXMAVGhlIGRlc2lnbmF0ZWQgZGF0YSBkaXJlY3RvcnkgJXMgaXMgdW51c2FibGUuIFlvdSBjYW4gcmVtb3ZlIGFsbCBmaWxlcyB0aGF0IHRoZSBzZXJ2ZXIgYWRkZWQgdG8gaXQuAEdyb3VwIHNlYXJjaCByZWJpbmRpbmcgdmlhIHJvb3QgRE46ICVzIABFcnJvciBpbnN0YWxsaW5nIHBsdWdpbiAnJXMnOiAlcwBFcnJvciB1bmluc3RhbGxpbmcgcGx1Z2luICclcyc6ICVzAFBhcnRpdGlvbmVkIHRhYmxlICclcycgaXMgbm90IGFsbG93ZWQgdG8gdXNlIHNoYXJlZCB0YWJsZXNwYWNlICclcycuIFBsZWFzZSBtb3ZlIGFsbCBwYXJ0aXRpb25zIHRvIGZpbGUtcGVyLXRhYmxlIHRhYmxlc3BhY2VzIGJlZm9yZSB1cGdyYWRlLgBDYW5ub3QgZGV0ZXJtaW5lIHRoZSB0eXBlIG9mIHRoZSB0YWJsZXNwYWNlIG5hbWVkICclcycuACVzOiAndXRmOCcgaXMgY3VycmVudGx5IGFuIGFsaWFzIGZvciB0aGUgY2hhcmFjdGVyIHNldCBVVEY4TUIzLCBidXQgd2lsbCBiZSBhbiBhbGlhcyBmb3IgVVRGOE1CNCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgVVRGOE1CNCBpbiBvcmRlciB0byBiZSB1bmFtYmlndW91cy4AJXM6IFRoZSBjaGFyYWN0ZXIgc2V0IFVURjhNQjMgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IGluc3RlYWQuACVzOiAnJS0uNjRzJyBpcyBhIGNvbGxhdGlvbiBvZiB0aGUgZGVwcmVjYXRlZCBjaGFyYWN0ZXIgc2V0IFVURjhNQjMuIFBsZWFzZSBjb25zaWRlciB1c2luZyBVVEY4TUI0IHdpdGggYW4gYXBwcm9wcmlhdGUgY29sbGF0aW9uIGluc3RlYWQuAFRoZSBTU0wgbGlicmFyeSBmdW5jdGlvbiAlcyBmYWlsZWQuIFRoaXMgaXMgdHlwaWNhbGx5IGNhdXNlZCBieSB0aGUgU1NMIGxpYnJhcnkgYWxyZWFkeSBiZWluZyB1c2VkLiBBcyBhIHJlc3VsdCB0aGUgU1NMIG1lbW9yeSBhbGxvY2F0aW9uIHdpbGwgbm90IGJlIGluc3RydW1lbnRlZC4ARGlzYWJsaW5nIEBAY29yZV9maWxlIGJlY2F1c2UgQEBpbm5vZGJfYnVmZmVyX3Bvb2xfaW5fY29yZV9maWxlIGlzIGRpc2FibGVkLCB5ZXQgTUFEVl9ET05URFVNUCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0ARGlzYWJsaW5nIEBAY29yZV9maWxlIGJlY2F1c2UgQEBpbm5vZGJfYnVmZmVyX3Bvb2xfaW5fY29yZV9maWxlIGlzIGRpc2FibGVkLCB5ZXQgbWFkdmlzZSglcCwlenUsJXMpIGZhaWxlZCB3aXRoICVzAENvdWxkIG5vdCBjaGFuZ2UgY29sdW1uICclcycgb2YgdGFibGUgJyVzJy4gVGhlIHJlc3VsdGluZyBzaXplIG9mIGluZGV4ICclcycgd291bGQgZXhjZWVkIHRoZSBtYXgga2V5IGxlbmd0aCBvZiAlZCBieXRlcy4Ac3FsX21vZGU9MHglMDh4IGhhcyBiZWVuIHJlbW92ZWQgYW5kIHdpbGwgYmUgaWdub3JlZABGYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IGZvciBhIHBvb2wgb2Ygc2l6ZSAlenUgYnl0ZXMuIFdpbGwgd2FpdCBmb3IgJXp1IHNlY29uZHMgZm9yIGEgdGhyZWFkIHRvIGZyZWUgYSByZXNvdXJjZS4ATnVtYmVyIG9mIHBvb2xzOiAlenUAVXNpbmcgdW5kbyB0YWJsZXNwYWNlICclcycuACVzIFVuYWJsZSB0byBzYXZlIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRhYmxlc3BhY2UgJyVzJyB0byB0aGUgZGF0YSBkaWN0aW9uYXJ5AENhbm5vdCBjcmVhdGUgdW5kbyB0YWJsZXNwYWNlICVzIGF0ICVzIGJlY2F1c2UgJWQgdW5kbyB0YWJsZXNwYWNlcyBhbHJlYWR5IGV4aXN0LgBFcnJvciAlZCBvcGVuaW5nIG5ld2x5IGNyZWF0ZWQgdW5kbyB0YWJsZXNwYWNlICVzLgBTREkgQ29tcHJlc3Npb24gZmFpbGVkLCBaX0JVRl9FUlJPUgBTREkgQ29tcHJlc3Npb24gZmFpbGVkLCBaX01FTV9FUlJPUgBTREkgQ29tcHJlc3Npb24gZmFpbGVkLCBaX1NUUkVBTV9FUlJPUgAlcwBFeHBlY3RlZCB0byBmaW5kIHVuZG8gdGFibGVzcGFjZSAnJXMnIGZvciBTcGFjZSBJRD0lbHUsIGJ1dCBmb3VuZCAnJXMnIGluc3RlYWQhICBEaWQgeW91IGNoYW5nZSBpbm5vZGJfdW5kb19kaXJlY3Rvcnk/AENhbm5vdCB1c2UgJXMgYXMgYW4gdW5kbyB0YWJsZXNwYWNlIGJlY2F1c2UgaXQgZG9lcyBub3QgZW5kIHdpdGggJy5pYnUnLgBpYl91bmRvX3RydW5jX2VtcHR5X2ZpbGUAaWJfdW5kb190cnVuY19iZWZvcmVfZGRfdXBkYXRlAGliX3VuZG9fdHJ1bmNfYmVmb3JlX2RvbmVfbG9nZ2luZwBpYl91bmRvX3RydW5jX2JlZm9yZV9yc2VncwAlcyBGYWlsZWQgdG8gZmluaXNoIHRydW5jYXRpbmcgVW5kbyBUYWJsZXNwYWNlICclcycAVGhlIHNldHRpbmcgSU5OT0RCX1VORE9fVEFCTEVTUEFDRVMgaXMgZGVwcmVjYXRlZCBhbmQgaXMgbm8gbG9uZ2VyIHVzZWQuICBJbm5vREIgYWx3YXlzIGNyZWF0ZXMgMiB1bmRvIHRhYmxlc3BhY2VzIHRvIHN0YXJ0IHdpdGguIElmIHlvdSBuZWVkIG1vcmUsIHBsZWFzZSB1c2UgQ1JFQVRFIFVORE8gVEFCTEVTUEFDRS4AVGhlIGRpcmVjdG9yeSBmb3IgdGFibGVzcGFjZSAlcyBkb2VzIG5vdCBleGlzdCBvciBpcyBpbmNvcnJlY3QuACVzAENsb25lIGRvbm9yIHJlcG9ydGVkIDogJS41MTJzLgBDbG9uZSByZWNlaXZlZCB1bmV4cGVjdGVkIHJlc3BvbnNlIGZyb20gZG9ub3IgOiAlLjUxMnMuAENsaWVudDogJS41MTJzLgBTZXJ2ZXI6ICUuNTEycy4ARmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIHBlcmZvcm1hbmNlIHNjaGVtYSB0YWJsZXMgc2VydmljZS4ARmFpbGVkIHRvIGFkZCB0aHJlYWQgcG9vbCBwZXJmb3JtYW5jZSBzY2hlbWEgdGFibGVzLgBGYWlsZWQgdG8gc2V0IGRhdGFkaXIgdG8gJyUtLjIwMHMnIChPUyBlcnJubzogJWQgLSAlcykAVGhlIGlubm9kYl91bmRvX2RpcmVjdG9yeSBpcyBub3QgYWxsb3dlZCB0byBiZSBhbiBhbmNlc3RvciBvZiB0aGUgZGF0YWRpci4ARmFpbGVkIHRvIGZldGNoIGtleSBmcm9tIGtleXJpbmcsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4AQ2FuJ3QgZmluZCBrZXkgZnJvbSBrZXlyaW5nLCBwbGVhc2UgY2hlY2sgaW4gdGhlIHNlcnZlciBsb2cgaWYgYSBrZXlyaW5nIGlzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LgBGZXRjaGVkIGFuIGludmFsaWQga2V5IGZyb20ga2V5cmluZy4ARXJyb3IgcmVhZGluZyBhIHJlcGxpY2F0aW9uIGxvZyBlbmNyeXB0aW9uIGhlYWRlcjogJXMuAEZhaWxlZCB0byByb3RhdGUgc29tZSBsb2dzIGFmdGVyIGNoYW5naW5nIGJpbmxvZyBlbmNyeXB0aW9uIHNldHRpbmdzLiBQbGVhc2UgZml4IHRoZSBwcm9ibGVtIGFuZCByb3RhdGUgdGhlIGxvZ3MgbWFudWFsbHkuAEtleSAlcyBleGlzdHMgdW5leHBlY3RlZC4ARmFpbGVkIHRvIGdlbmVyYXRlIGtleSwgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLgBGYWlsZWQgdG8gc3RvcmUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAEZhaWxlZCB0byByZW1vdmUga2V5LCBwbGVhc2UgY2hlY2sgaWYga2V5cmluZyBpcyBsb2FkZWQuAFVuYWJsZSB0byByZWNvdmVyIGJpbmxvZyBlbmNyeXB0aW9uIG1hc3RlciBrZXksIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIGluaXRpYWxpemUgYmlubG9nIGVuY3J5cHRpb24sIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ARmFpbGVkIHRvIHJvdGF0ZSBiaW5sb2cgZW5jcnlwdGlvbiBtYXN0ZXIga2V5IGF0IHN0YXJ0dXAsIHBsZWFzZSBjaGVjayBpZiBrZXlyaW5nIGlzIGxvYWRlZC4ASWdub3JpbmcgYmlubG9nX3JvdGF0ZV9lbmNyeXB0aW9uX21hc3Rlcl9rZXlfYXRfc3RhcnR1cCBiZWNhdXNlIGJpbmxvZ19lbmNyeXB0aW9uIG9wdGlvbiBpcyBkaXNhYmxlZC4ASW52YWxpZCB2YWx1ZSBmb3IgY29tbWFuZCBsaW5lIG9wdGlvbiBhZG1pbi1hZGRyZXNzOiAnJXMnAEFkbWluIGludGVyZmFjZSByZWFkeSBmb3IgY29ubmVjdGlvbnMsIGFkZHJlc3M6ICclcycgIHBvcnQ6ICVkAENhbid0IGNyZWF0ZSB0aHJlYWQgdG8gaGFuZGxlIGFkbWluIGNvbm5lY3Rpb25zIChlcnJubz0gJWQpAFJFVEFJTiBDVVJSRU5UIFBBU1NXT1JEIGlnbm9yZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGFzIGl0cyBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJXMgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBwYXNzd29yZHMuAERJU0NBUkQgT0xEIFBBU1NXT1JEIGlnbm9yZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGFzIGl0cyBhdXRoZW50aWNhdGlvbiBwbHVnaW4gJXMgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSBwYXNzd29yZHMuAEVtcHR5IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgYXMgc2Vjb25kIHBhc3N3b3JkIGZvciB1c2VyICclcydAJyVzJy4AQ3VycmVudCBwYXNzd29yZCBjYW4gbm90IGJlIHJldGFpbmVkIGZvciB1c2VyICclcydAJyVzJyBiZWNhdXNlIGF1dGhlbnRpY2F0aW9uIHBsdWdpbiBpcyBiZWluZyBjaGFuZ2VkLgBDdXJyZW50IHBhc3N3b3JkIGNhbiBub3QgYmUgcmV0YWluZWQgZm9yIHVzZXIgJyVzJ0AnJXMnIGJlY2F1c2UgbmV3IHBhc3N3b3JkIGlzIGVtcHR5LgBDYW4gbm90IHJlYWQgYW5kIHByb2Nlc3MgdmFsdWUgb2YgVXNlcl9hdHRyaWJ1dGVzIGNvbHVtbiBmcm9tIG15c3FsLnVzZXIgdGFibGUgZm9yIHVzZXI6ICclc0Alcyc7IElnbm9yaW5nIHVzZXIuAFNlY29uZCBwYXNzd29yZCB3YXMgdXNlZCBmb3IgbG9naW4gYnkgdXNlcjogJyVzJ0AnJXMnLgBTZWNvbmQgcGFzc3dvcmQgd2FzIHVzZWQgZm9yIGxvZ2luIGJ5IHVzZXI6ICclcydAJyVzJy4AU2Vjb25kIHBhc3N3b3JkIHdhcyB1c2VkIGZvciBsb2dpbiBieSB1c2VyOiAnJXMnQCclcycuAEVycm9yIHNlbmRpbmcgdHJhbnNhY3Rpb24gJyVzOiVsbGQnIHByZXBhcmVkIG1lc3NhZ2UgZnJvbSBzZXNzaW9uICcldScuAEVycm9yIHJlbGVhc2luZyB0cmFuc2FjdGlvbiAnJXM6JWxsZCcgZm9yIGNvbW1pdCBvbiBzZXNzaW9uICcldScgYWZ0ZXIgYmVpbmcgcHJlcGFyZWQgb24gYWxsIGdyb3VwIG1lbWJlcnMuAFRyYW5zYWN0aW9uICclczolbGxkJyBhbHJlYWR5IGV4aXN0cyBvbiBHcm91cCBSZXBsaWNhdGlvbiBjb25zaXN0ZW5jeSBtYW5hZ2VyIHdoaWxlIGJlaW5nIHJlZ2lzdGVyZWQgYWZ0ZXIgY29uZmxpY3QgZGV0ZWN0aW9uLgBFcnJvciByZWdpc3RlcmluZyB0cmFuc2FjdGlvbiAnJXM6JWxsZCcgb24gR3JvdXAgUmVwbGljYXRpb24gY29uc2lzdGVuY3kgbWFuYWdlciBhZnRlciBjb25mbGljdCBkZXRlY3Rpb24uAEVycm9yIHJlZ2lzdGVyaW5nIHRyYW5zYWN0aW9uICclczolbGxkJyBmcm9tIHNlc3Npb24gJyV1JyB0byB3YWl0IGZvciBiZWluZyBwcmVwYXJlZCBvbiBhbGwgZ3JvdXAgbWVtYmVycy4ARXJyb3Igb24gdHJhbnNhY3Rpb24gJyVzOiVsbGQnIGZyb20gc2Vzc2lvbiAnJXUnIHdoaWxlIHdhaXRpbmcgZm9yIGJlaW5nIHByZXBhcmVkIG9uIGFsbCBncm91cCBtZW1iZXJzLgBUcmFuc2FjdGlvbiAnJXM6JWxsZCcgZG9lcyBub3QgZXhpc3Qgb24gR3JvdXAgUmVwbGljYXRpb24gY29uc2lzdGVuY3kgbWFuYWdlciB3aGlsZSByZWNlaXZpbmcgcmVtb3RlIHRyYW5zYWN0aW9uIHByZXBhcmUuAEVycm9yIHJlbGVhc2luZyB0cmFuc2FjdGlvbiAnJXM6JWxsZCcgZm9yIGV4ZWN1dGlvbiBvbiBzZXNzaW9uICcldScgYWZ0ZXIgaXRzIGRlcGVuZGVuY2llcyBkaWQgY29tcGxldGUgY29tbWl0LgBFcnJvciByZWdpc3RlcmluZyB0cmFuc2FjdGlvbiBmcm9tIHNlc3Npb24gJyV1JyB0byB3YWl0IGZvciBpdHMgZGVwZW5kZW5jaWVzIHRvIGNvbXBsZXRlIGNvbW1pdC4ARXJyb3Igb24gc2Vzc2lvbiAnJXUnIHdoaWxlIHdhaXRpbmcgZm9yIGl0cyBkZXBlbmRlbmNpZXMgdG8gY29tcGxldGUgY29tbWl0LgBFcnJvciByZWdpc3RlcmluZyB0cmFuc2FjdGlvbiBmcm9tIHNlc3Npb24gJyV1JyB0byB3YWl0IGZvciBzeW5jIGJlZm9yZSBleGVjdXRpb24uAEVycm9yIHNlbmRpbmcgc3luYyBiZWZvcmUgZXhlY3V0aW9uIG1lc3NhZ2UgZnJvbSBzZXNzaW9uICcldScuAEVycm9yIG9uIHRyYW5zYWN0aW9uIGZyb20gc2Vzc2lvbiAnJXUnIHdoaWxlIHdhaXRpbmcgZm9yIHN5bmMgYmVmb3JlIGV4ZWN1dGlvbi4ARXJyb3IgcmVsZWFzaW5nIHRyYW5zYWN0aW9uIGZvciBleGVjdXRpb24gb24gc2Vzc2lvbiAnJXUnIGFmdGVyIHdhaXQgZm9yIHN5bmMgYmVmb3JlIGV4ZWN1dGlvbi4ARXJyb3Igd2FpdGluZyBmb3IgZ3JvdXAgZXhlY3V0ZWQgdHJhbnNhY3Rpb25zIGNvbW1pdCBvbiBzZXNzaW9uICcldScuAFRoZXJlJ3Mgbm8gdW5pdCBvZiBtZWFzdXJlIG5hbWVkICclcycuAFRoZSBmdW5jdGlvbiAlcyB1c2VzICVzIGFzIGEgdW5pdCwgYnV0IHdhcyBwYXNzZWQgZ2VvbWV0cnkgd2l0aG91dCB1bml0cyAoIlNSSUQgMCIpLiBDb252ZXJzaW9uIGlzIG5vdCBwb3NzaWJsZS4AQ291bGQgbm90IHBhcnNlIGtleS12YWx1ZSBwYWlycyBpbiBwcm9wZXJ0eSBzdHJpbmcgJyVzJwBQcm9wZXJ0eSBrZXkgJyVzJyBpcyBpbnZhbGlkLgBFcnJvciB3aGVuIGV4dHJhY3RpbmcgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2FwcGxpZXIgY2hhbm5lbCByZWNlaXZlZCB0cmFuc2FjdGlvbnMgc2V0LiBVbmFibGUgdG8gZW5zdXJlIHRoZSBleGVjdXRpb24gb2YgZ3JvdXAgdHJhbnNhY3Rpb25zIHJlY2VpdmVkIGR1cmluZyByZWNvdmVyeS4ARmFpbGVkIHRvIGVuY3J5cHQgY29udGVudCB0byB3cml0ZSBpbnRvIGJpbmxvZyBmaWxlOiAlcy4AQ2Fubm90IGdldCB0aGUgc2VydmVyIHZlcnNpb24gbnVtYmVyIGZyb20gdGhlIGRpY3Rpb25hcnkgdGFibGVzcGFjZSBoZWFkZXIuAENhbm5vdCBzZXQgdGhlIHNlcnZlciB2ZXJzaW9uIG51bWJlciBpbiB0aGUgZGljdGlvbmFyeSB0YWJsZXNwYWNlIGhlYWRlci4AVXBncmFkaW5nIHRoZSBzZXJ2ZXIgZnJvbSBzZXJ2ZXIgdmVyc2lvbiAnJXUnIGlzIG5vdCBzdXBwb3J0ZWQuAE15U1FMIHNlcnZlciB1cGdyYWRpbmcgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1Jy4AVGhlIGNlcnRpZmljYXRpb24gaW5mb3JtYXRpb24gY291bGQgbm90IGJlIHNldCBpbiB0aGlzIHNlcnZlcjogJyVzJwBBIHJlcXVlc3QgdG8gZm9yY2UgYSBuZXcgZ3JvdXAgbWVtYmVyc2hpcCB3YXMgaXNzdWVkIHdoZW4gdGhlIG1lbWJlciBpcyBsZWF2aW5nIHRoZSBncm91cC4AVHJpZ2dlciAlcy4lcyBmb3IgdGFibGUgJXMuJXMgaXMgbGlzdGVkIGluIHdyb25nIG9yZGVyLiBQbGVhc2UgZHJvcCBhbmQgcmVjcmVhdGUgYWxsIHRyaWdnZXJzIGZvciB0aGUgdGFibGUuACVzAFNwZWNpYWwgaGFuZGxpbmcgZm9yIGdyb3VwIHNlYXJjaCwge0dBfSBub3QgZm91bmQAVXNlciBncm91cCByZXRyaWV2YWw6IFVzZXIgb2JqZWN0IGhhcyBncm91cCBpbmZvcm1hdGlvbgBHcm91cCBpbmZvcm1hdGlvbiBmb3VuZCBpbiBtdWx0aXBsZSB1c2VyIG9iamVjdHMuIFNlYXJjaCBmaWx0ZXIgY29uZmlndXJhdGlvbiBpcyBpbmNvcnJlY3QuAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBubyBncm91cCBhdHRyaWJ1dGUgZm91bmQuIEluY29ycmVjdCBncm91cCBzZWFyY2ggYXR0cmlidXRlLiAAVXNlciBncm91cCByZXRyaWV2YWw6IEdyb3VwIGF0dHJpYnV0ZSB2YWx1ZXMgaXMgTlVMTC4gAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBwYXJzaW5nIEROIGZhaWxlZC4gAFVzZXIgZ3JvdXAgcmV0cmlldmFsOiBHcm91cCBvYmplY3QgaGFzIHVzZXIgaW5mb3JtYXRpb24AUmVzZXJ2ZWQgcG9ydCBmb3IgbGRhcHMgdXNpbmcgbGRhcHMAR2V0IHVzZXIgcHJveHkAR2V0IHVzZXIgcHJveHk6IFVzZXIgZG9lc24ndCBiZWxvbmdzIHRvIGFueSBncm91cCwgdXNlciBuYW1lIHdpbGwgYmUgdHJlYXRlZCBhcyBhdXRoZW50aWNhdGVkIHVzZXIuAEdldCB1c2VyIHByb3h5OiBjb25maWd1cmVkIG1hcHBpbmcgaW5mbzogJXMAR2V0IHVzZXIgcHJveHk6IFVzZXIgZG9lc24ndCBoYXZlIGdyb3VwIG1hcHBpbmcgaW5mb3JtYXRpb24sIEZpcnN0IExEQVAgZ3JvdXAgd2lsbCBiZSB0cmVhdGVkIGFzIGF1dGhlbnRpY2F0ZWQgdXNlci4AUHJvY2VzcyBncm91cCBwcm94eSBtYXBwaW5nAENoZWNrIGRlbGltaXRlciBhZnRlciBxdW90ZQBQcm9jZXNzaW5nIGRlbGltaXRlcgBQcm9jZXNzaW5nIGRlbGltaXRlciwgc2VwYXJhdG9yID0gbm90IGZvdW5kLCByZXNldHRpbmcgcG9zaXRpb24AUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIGZhaWxlZCB0byBnZXQgZGF0YSBmb3IgPSBzZXBhcmF0b3IgdHJ5IGZvciBzZXBhcmF0b3IgLC4AUHJvY2Vzc2luZyBkZWxpbWl0ZXIsIHNlcGFyYXRvciAsIG5vdCBmb3VuZCwgcmVzZXR0aW5nIHBvc2l0aW9uAFByb2Nlc3NpbmcgZGVsaW1pdGVyOiBObyBtYXBwaW5nIHNlcGFyYXRvciBpcyBmb3VuZCwgZW5kIG9mIGdyb3VwIGluZm9ybWF0aW9uAEdldHRpbmcgbmV4dCBtYXBwaW5nIGluZm9ybWF0aW9uAFBhcnNpbmcgbWFwcGluZywgY3VycmVudCBzdGF0ZTogJWQgIGRlbGltaXRlciBjaGFyOiAlYyAAUGFyc2luZyBtYXBwaW5nIGluZm8sIExEQVAgZ3JvdXA6ICVzIE15U1FMIHByb3h5OiAlcwBNYXBwaW5nIHBhcnNpbmcgZXJyb3IAVHJpbW1pbmcgbGVmdCBzcGFjZXMAQ2hlY2tpbmcgaWYgY3VycmVudCBjaGFyYWN0ZXJzIGlzIHF1b3RlAE5vdCBkZXNpcmVkIHN0YXRlIG9yIHVuLWRlZmluZWQgc3RhdGVzLgBJbnZhbGlkIHZhbHVlIGZvciBuYW1lZF9waXBlX2Z1bGxfYWNjZXNzX2dyb3VwLgBSZXRyeSB0aGUgc3RhdGVtZW50IHVzaW5nIGEgc2Vjb25kYXJ5IHN0b3JhZ2UgZW5naW5lLgAnJXMnIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgdXNlICVzIGluc3RlYWQAQ2Fubm90IHNldCBtYW5kYXRvcnlfcm9sZXM6IEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgaGFzICclcycgcHJpdmlsZWdlLgBVbmFibGUgdG8gcmVjb3ZlciBiaW5hcnkgbG9nIG1hc3RlciBrZXksIHRoZSBjb21iaW5hdGlvbiBvZiBuZXdfbWFzdGVyX2tleV9zZXFubz0ldSwgbWFzdGVyX2tleV9zZXFubz0ldSBhbmQgb2xkX21hc3Rlcl9rZXlfc2Vxbm89JXUgYXJlIHdyb25nLgBGYWlsZWQgdG8gcmVtb3ZlIGF1eGlsaWFyeSBiaW5hcnkgbG9nIGVuY3J5cHRpb24ga2V5IGZyb20ga2V5cmluZywgcGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgbG9hZGVkLiBUaGUgY2xlYW51cCBvZiB0aGUgYmluYXJ5IGxvZyBtYXN0ZXIga2V5IHJvdGF0aW9uIHByb2Nlc3MgZGlkIG5vdCBmaW5pc2ggYXMgZXhwZWN0ZWQgYW5kIHRoZSBjbGVhbnVwIHdpbGwgdGFrZSBwbGFjZSB1cG9uIHNlcnZlciByZXN0YXJ0IG9yIG5leHQgJ0FMVEVSIElOU1RBTkNFIFJPVEFURSBCSU5MT0cgTUFTVEVSIEtFWScgZXhlY3V0aW9uLgBBdXRoSWQgYCUuNjRzYEBgJS42NHNgIGlzIHNldCBhcyBtYW5kYXRvcnlfcm9sZXMuIENhbm5vdCBncmFudCB0aGUgJyVzJyBwcml2aWxlZ2UuACclcycgcHJpdmlsZWdlIGZvciBkYXRhYmFzZSAnJXMnIGV4aXN0cyBib3RoIGFzIHBhcnRpYWwgcmV2b2tlIGFuZCBteXNxbC5kYiBzaW11bHRhbmVvdXNseS4gSXQgY291bGQgbWVhbiAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAEFjY2VzcyBkZW5pZWQgZm9yIEF1dGhJZCBgJS42NHNgQGAlLjY0c2AgdG8gZGF0YWJhc2UgJyUtLjE5MnMnLgBBdCBsZWFzdCBvbmUgcGFydGlhbCByZXZva2UgZXhpc3RzIG9uIGEgZGF0YWJhc2UuIFRoZSBzeXN0ZW0gdmFyaWFibGUgJ0BAcGFydGlhbF9yZXZva2VzJyBtdXN0IGJlIHNldCB0byBPTi4AQXQgbGVhc3Qgb25lIHBhcnRpYWwgcmV2b2tlIGV4aXN0cyBvbiBhIGRhdGFiYXNlLiBUdXJuaW5nIE9OIHRoZSBzeXN0ZW0gdmFyaWFibGUgJ0BAcGFydGlhbF9yZXZva2VzJy4ARm9yIHVzZXIgJyVzJ0AnJXMnLCBvbmUgb3IgbW9yZSBwcml2aWxlZ2VzIGdyYW50ZWQgdGhyb3VnaCBteXNxbC5kYiBmb3IgZGF0YWJhc2UgJyVzJywgY29uZmxpY3Qgd2l0aCBwYXJ0aWFsIHJldm9rZS4gSXQgY291bGQgbWVhbiAnbXlzcWwnIHNjaGVtYSBpcyBjb3JydXB0ZWQuAEZvciB1c2VyICVzLCBpZ25vcmVkIHJlc3RyaWN0aW9ucyBmb3IgcHJpdmlsZWdlKHMpICclcycgZm9yIGRhdGFiYXNlICclcycgYXMgdGhlc2UgYXJlIG5vdCB2YWxpZCBkYXRhYmFzZSBwcml2aWxlZ2VzLgBGb3IgdXNlciAlcywgaWdub3JlZCByZXN0cmljdGlvbnMgZm9yIHByaXZpbGVnZShzKSAnJXMnIGZvciBkYXRhYmFzZSAnJXMnIGFzIGNvcnJlc3BvbmRpbmcgZ2xvYmFsIHByaXZpbGVnZShzKSBhcmUgbm90IGdyYW50ZWQuACclcycgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgZ3JvdXBfcmVwbGljYXRpb25fY29tbXVuaWNhdGlvbl9wcm90b2NvbF9qb2luLCBwbGVhc2UgdXNlIGEgTXlTUUwgdmVyc2lvbiBiZXR3ZWVuIDUuNy4xNCBhbmQgdGhpcyBzZXJ2ZXIncyB2ZXJzaW9uAFN0YXJ0ZWQgYXV0by1yZWpvaW4gcHJvY2VkdXJlIGF0dGVtcHQgJWx1IG9mICVsdQBUaW1lb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGEgdmlldyBjaGFuZ2UgZXZlbnQgZHVyaW5nIHRoZSBhdXRvLXJlam9pbiBwcm9jZWR1cmUAQXV0by1yZWpvaW4gcHJvY2VkdXJlIGF0dGVtcHQgJWx1IG9mICVsdSBmaW5pc2hlZC4gTWVtYmVyIHdhcyVzIGFibGUgdG8gam9pbiB0aGUgZ3JvdXAuAFRoZSBtZW1iZXIgaXMgY29uZmlndXJlZCB3aXRoIGEgZGVmYXVsdF90YWJsZV9lbmNyeXB0aW9uIG9wdGlvbiB2YWx1ZSAnJWQnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJWQnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBTZXJ2ZXIgc2h1dHRpbmcgZG93biBiZWNhdXNlIHVwZ3JhZGUgaXMgcmVxdWlyZWQsIHlldCBwcm9oaWJpdGVkIGJ5IHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICctLXVwZ3JhZGU9Tk9ORScuAFNlcnZlciB1cGdyYWRlIGlzIHJlcXVpcmVkLCBidXQgc2tpcHBlZCBieSBjb21tYW5kIGxpbmUgb3B0aW9uICctLXVwZ3JhZGU9TUlOSU1BTCcuAFNlcnZlciB1cGdyYWRlIHN0YXJ0ZWQgd2l0aCB2ZXJzaW9uICVkLCBidXQgc2VydmVyIHVwZ3JhZGUgb2YgdmVyc2lvbiAlZCBpcyBzdGlsbCBwZW5kaW5nLgBGYWlsZWQgdG8gdXBncmFkZSBzZXJ2ZXIuAFNlcnZlciB1cGdyYWRlIGZyb20gJyVkJyB0byAnJWQnICVzLgBUYWJsZSAnJXMnIHJlcXVpcmVzIHJlcGFpci4AVGFibGUgJyVzJyByZXBhaXIgJXMuAENvdWxkIG5vdCBvcGVuIHNlcnZlciB1cGdyYWRlIGluZm8gZmlsZSAnJXMnIGZvciB3cml0aW5nLiBQbGVhc2UgbWFrZSBzdXJlIHRoZSBmaWxlIGlzIHdyaXRhYmxlLgBVcGdyYWRpbmcgdGhlIHN5cyBzY2hlbWEuAFJ1bm5pbmcgcXVlcmllcyB0byB1cGdyYWRlIE15U1FMIHNlcnZlci4AVXBncmFkaW5nIHN5c3RlbSB0YWJsZSBkYXRhLgBGb3VuZCBlbXB0eSBzeXMgZGF0YWJhc2UuIEluc3RhbGxpbmcgdGhlIHN5cyBzY2hlbWEuAEEgc3lzIHNjaGVtYSBleGlzdHMgd2l0aCBubyBzeXMudmVyc2lvbiB2aWV3LiBJZiB5b3UgaGF2ZSBhIHVzZXIgY3JlYXRlZCBzeXMgc2NoZW1hLCB0aGlzIG11c3QgYmUgcmVuYW1lZCBmb3IgdGhlIHVwZ3JhZGUgdG8gc3VjY2VlZC4AQSBzeXMgc2NoZW1hIGV4aXN0cyB3aXRoIGEgc3lzLnZlcnNpb24gdmlldywgYnV0IGl0IHJldHVybnMgbm8gcmVzdWx0cy4ARm91bmQgb3V0ZGF0ZWQgc3lzIHNjaGVtYSB2ZXJzaW9uICVzLgBUaGUgc3lzIHNjaGVtYSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUgKHZlcnNpb24gJXMpLgBGb3VuZCAlZCBzeXMgJXMsIGJ1dCBleHBlY3RlZCAlZC4gUmUtaW5zdGFsbGluZyB0aGUgc3lzIHNjaGVtYS4AQ2hlY2tpbmcgJyVzJyBzY2hlbWEuAFRvbyBtYW55IGNvbmN1cnJlbnQgdHJhbnNhY3Rpb25zIHdoaWxlIGNsZWFyaW5nIHRoZSBEREwgTG9nLiBQbGVhc2UgaW5jcmVhc2UgdGhlIG51bWJlciBvZiBSb2xsYmFjayBTZWdtZW50cy4ARXJyb3IgaW4gRERMIExvZyByZWNvdmVyeSBkdXJpbmcgUG9zdC1SZWNvdmVyeSBwcm9jZXNzaW5nLgBFcnJvciBpbiBQb3N0LVRhYmxlc3BhY2UtRW5jcnlwdGlvbiBkdXJpbmcgUG9zdC1SZWNvdmVyeSBwcm9jZXNzaW5nLgBFcnJvciBpbiBETEwgTG9nIGNsZWFudXAgZHVyaW5nIFBvc3QtRERMIHByb2Nlc3NpbmcuACclcycgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IHVzZXMgYSBzeXN0ZW0gZnVuY3Rpb24gdGhhdCBtYXkgcmV0dXJuIGEgZGlmZmVyZW50IHZhbHVlIG9uIHRoZSByZXBsaWNhLgBVcGdyYWRlIG9mIGhlbHAgdGFibGVzICVzLgBFcnJvciB3aGVuIHdhaXRpbmcgZm9yIHRoZSBzZXJ2ZXIgdG8gZXhlY3V0ZSBsb2NhbCB0cmFuc2FjdGlvbnMgaW4gb3JkZXIgYXNzdXJlIHRoZSBncm91cCBjaGFuZ2UgcHJvcGVyIGxvZ2dpbmcAVW5hYmxlIHRvIGxvZyB0aGUgZ3JvdXAgY2hhbmdlIFZpZXcgbG9nIGV2ZW50IGluIGl0cyBleGFjdGlvbiBwb3NpdGlvbiBpbiB0aGUgbG9nLiBUaGlzIHdpbGwgbm90IGhvd2V2ZXIgYWZmZWN0IHRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBwcm9jZXNzIG9yIHRoZSBvdmVyYWxsIHBsdWdpbiBwcm9jZXNzLgBDYW5ub3QgZ3JhbnQgcm9sZXMgdG8gYW4gYW5vbnltb3VzIHVzZXIuAFVuYWJsZSB0byBjcmVhdGUgYSBuZXcgYmlubG9nIGZpbGU6IFRhYmxlIGBteXNxbC5ndGlkX2V4ZWN1dGVkYCBjb3VsZG4ndCBiZSBvcGVuZWQuICVzAE5ldHdvcmsgTmFtZXNwYWNlcyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0AVW5rbm93biBuZXR3b3JrIG5hbWVzcGFjZSAnJXMnAE5ldHdvcmsgbmFtZXNwYWNlIG5vdCBhbGxvd2VkIGZvciB3aWxkY2FyZCBpbnRlcmZhY2UgYWRkcmVzcwBzZXRucygpIGZhaWxlZCB3aXRoIGVycm9yICclcycAV2lsZGNhcmQgYWRkcmVzcyB2YWx1ZSBub3QgYWxsb3dlZCBmb3IgbXVsdGl2YWx1ZWQgYmluZCBhZGRyZXNzAFRoZSBwYXRoIHRvIGEgc3BlY2lhbCBuZXR3b3JrIG5hbWVzcGFjZSBmaWxlIGlzIHRvbyBsb25nLiAoZ290ICV1ID4gbWF4ICV1KQBDYW5ub3QgY3JlYXRlIHRhYmxlc3BhY2UgJyVzJy4gVGhlIGZpbGVwYXRoIGlzIHRvbyBsb25nIGZvciB0aGlzIE9TLgBUaGUgbGFzdCBibG9jayBvZiByZWRvIGhhZCBjb3JydXB0ZWQgZmlyc3RfcmVjX2dyb3VwIGFuZCBiZWNhbWUgZml4ZWQgKCV1IC0+ICV1KS4ARGF0YSBkaWN0aW9uYXJ5IHVwZ3JhZGUgZnJvbSB2ZXJzaW9uICcldScgdG8gJyV1JyBjb21wbGV0ZWQuAFNlcnZlciBTU0wgY2VydGlmaWNhdGUgZG9lc24ndCB2ZXJpZnk6ICVzAFRydW5jYXRlZCBhIHVzZXIgbmFtZSBmb3IgJXMgdGhhdCB3YXMgdG9vIGxvbmcgd2hpbGUgcmVhZGluZyB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlcyBmaWxlAFRydW5jYXRlZCBhIGhvc3QgbmFtZSBmb3IgJXMgdGhhdCB3YXMgdG9vIGxvbmcgd2hpbGUgcmVhZGluZyB0aGUgcGVyc2lzdGVkIHZhcmlhYmxlcyBmaWxlAFRoZSB3YWl0X3RpbWVvdXQgcGVyaW9kIHdhcyBleGNlZWRlZCwgdGhlIGlkbGUgdGltZSBzaW5jZSBsYXN0IGNvbW1hbmQgd2FzIHRvbyBsb25nLgAnJXMnIGZvdW5kIG5vdCBlbmNyeXB0ZWQgd2hpbGUgJyVzJyBpcyBPTi4gVHJ5aW5nIHRvIGVuY3J5cHQgaXQgbm93LgBDTE9DS19NT05PVE9OSUMgaXMgdW5zdXBwb3J0ZWQsIHNvIGRvIG5vdCBjaGFuZ2UgdGhlIHN5c3RlbSB0aW1lIHdoZW4gTXlTUUwgaXMgcnVubmluZyAhAGNsb2NrX2dldHRpbWUoKSBmYWlsZWQ6ICVzAFBsdWdpbiAnJXMnIGlzIG5vdCB0byBiZSB1c2VkIGFzIGFuICJlYXJseSIgcGx1Z2luLiBEb24ndCBhZGQgaXQgdG8gLS1lYXJseS1wbHVnaW4tbG9hZCwga2V5cmluZyBtaWdyYXRpb24gZXRjLgBQbHVnaW4gJyVzJyBpcyBtYXJrZWQgYXMgbm90IGR5bmFtaWNhbGx5IGluc3RhbGxhYmxlLiBZb3UgaGF2ZSB0byBzdG9wIHRoZSBzZXJ2ZXIgdG8gaW5zdGFsbCBpdC4AU1FMX0NBTENfRk9VTkRfUk9XUyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgdHdvIHNlcGFyYXRlIHF1ZXJpZXMgaW5zdGVhZC4ARk9VTkRfUk9XUygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBDb25zaWRlciB1c2luZyBDT1VOVCgqKSBpbnN0ZWFkLgBUaGUgc3RhdGVtZW50IGlzIHVuc2FmZSBiZWNhdXNlIGl0IGludm9rZXMgYSB0cmlnZ2VyIG9yIGEgc3RvcmVkIGZ1bmN0aW9uIHRoYXQgbW9kaWZpZXMgYSB0YWJsZSB0aGF0IGhhcyBhIGNvbHVtbiB3aXRoIGEgREVGQVVMVCBleHByZXNzaW9uIHRoYXQgbWF5IHJldHVybiBhIGRpZmZlcmVudCB2YWx1ZSBvbiB0aGUgcmVwbGljYS4ATWVtYmVyIHZlcnNpb24gaXMgcmVhZCBjb21wYXRpYmxlIHdpdGggdGhlIGdyb3VwLgBMb2NrIG9yZGVyIGRpc2FibGVkIChyZWFzb246IGluaXQgZmFpbGVkKS4AS2V5cmluZyBJRCB0aW1lc3RhbXAgdmFsdWUgaXMgaW52YWxpZDogJyVzJwBDYW5ub3QgcHJvY2VzcyBhdWRpdCBsb2cgZmlsZS4gRmlsZSBuYW1lIHRpbWVzdGFtcCB2YWx1ZSBpcyBtaXNzaW5nIG9yIGludmFsaWQ6ICclcycAQ2Fubm90IHByb2Nlc3MgYXVkaXQgbG9nIGZpbGUuIEZpbGUgbmFtZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGZvcm1hdDogJyVzJwBDYW5ub3QgcHJvY2VzcyBhdWRpdCBsb2cgZmlsZS4gRmlsZSBuYW1lIGtleXJpbmcgSUQgdmFsdWUgaXMgbWlzc2luZzogJyVzJwBBdWRpdCBsb2cgZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcHJvY2Vzc2VkOiAnJXMnAENvdWxkIG5vdCBvcGVuIGF1ZGl0IGxvZyBmaWxlIGZvciByZWFkaW5nOiAnJXMnAEludmFsaWQgYXVkaXQgbG9nIGZpbGUgY29udGVudDogJyVzJwBDYW5ub3QgcmVhZCBwYXNzd29yZDogJyUuMzJzJy4AQ2Fubm90IHN0b3JlIHBhc3N3b3JkOiAnJS4zMnMnLgBDYW5ub3QgcmVtb3ZlIHBhc3N3b3JkOiAnJS4zMnMnLgAnYXVkaXRfbG9nJyBwYXNzd29yZCBoYXMgYmVlbiBjb3BpZWQgaW50byAnJS4zMnMnIGFuZCB3aWxsIGJlIHJlbW92ZWQgd2l0aCBmaXJzdCBwdXJnZWQgcGFzc3dvcmQuAFJlcXVlc3QgaWdub3JlZCBmb3IgJyUuNjRzJ0AnJS42NHMnLiBSb2xlIG5lZWRlZCB0byBwZXJmb3JtIG9wZXJhdGlvbjogJyUuMzJzJwBDYW4ndCBzdG9yZSBhbiBhcnJheSBvciBhbiBvYmplY3QgaW4gYSBzY2FsYXIga2V5IHBhcnQgb2YgdGhlIGluZGV4ICclLjE5MnMnAENhbm5vdCB1c2UgZnVuY3Rpb25hbCBpbmRleCAnJS0uNjRzJyBkdWUgdG8gdHlwZSBvciBjb2xsYXRpb24gY29udmVyc2lvbgBFeGNlZWRlZCBtYXggbnVtYmVyIG9mIHZhbHVlcyBwZXIgcmVjb3JkIGZvciBtdWx0aS12YWx1ZWQgaW5kZXggJyUtLjY0cycgYnkgJXUgdmFsdWUocykARXhjZWVkZWQgbWF4IHRvdGFsIGxlbmd0aCBvZiB2YWx1ZXMgcGVyIHJlY29yZCBmb3IgbXVsdGktdmFsdWVkIGluZGV4ICclLS42NHMnIGJ5ICV1IGJ5dGVzAERhdGEgdG9vIGxvbmcgZm9yIGZ1bmN0aW9uYWwgaW5kZXggJyUtLjY0cycASW52YWxpZCBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAE91dCBvZiByYW5nZSBKU09OIHZhbHVlIGZvciBDQVNUIGZvciBmdW5jdGlvbmFsIGluZGV4ICclLS42NHMnAEVtcHR5IHVzZXIgZG4gb3IgcGFzc3dvcmQgaXMgbm90IGFsbG93ZWQsIG5vdCBhdHRlbXB0aW5nIExEQVAgYmluZC4AR3JvdXBpbmcgb24gdGVtcG9yYWwgaXMgbm9uLWRldGVybWluaXN0aWMgZm9yIHRpbWV6b25lcyBoYXZpbmcgRFNULiBQbGVhc2UgY29uc2lkZXIgc3dpdGNoaW5nIHRvIFVUQyBmb3IgdGhpcyBxdWVyeS4AVGhlIGN1cnJlbnQgbGF5b3V0IG9mIHRoZSBBQ0wgdGFibGVzIGRvZXMgbm90IGNvbmZvcm0gdG8gdGhlIHNlcnZlcidzIGV4cGVjdGVkIGxheW91dC4gVGhleSdyZSBlaXRoZXIgYWx0ZXJlZCwgbWlzc2luZyBvciBub3QgdXBncmFkZWQgZnJvbSBhIHByZXZpb3VzIHZlcnNpb24uIEhvd2V2ZXIgYSBiZXN0IGVmZm9ydCBhdHRlbXB0IHRvIHJlYWQgZGF0YSBmcm9tIHRoZXNlIHRhYmxlcyB3aWxsIHN0aWxsIGJlIG1hZGUuAExPQ0tfT1JERVI6IEZhaWxlZCB0byB3cml0ZSB0byBmaWxlIDwlcz4uAExPQ0tfT1JERVI6IEZhaWxlZCB0byByZWFkIGZyb20gZmlsZSA8JXM+LgBMT0NLX09SREVSIG1lc3NhZ2U6ICVzAExvY2sgb3JkZXIgZGVwZW5kZW5jaWVzIGZpbGUgPCVzPiAoJWQ6JWQpIC0gKCVkOiVkKSA6ICVzAExvY2sgb3JkZXIgc2Nhbm5lcjogKCVkOiVkKSAtICglZDolZCkgOiAlcwBUaGUgbmV3bHkgY3JlYXRlZCBkYXRhIGRpcmVjdG9yeSAlcyBieSAtLWluaXRpYWxpemUgaXMgdW51c2FibGUuIFlvdSBjYW4gcmVtb3ZlIGl0LgBOby4gb2YgQi10cmVlIGxldmVsIGNyZWF0ZWQgZm9yIGluZGV4ICVzIGhhcyBjcm9zc2VkIHRoZSBwZXJtaXNzaWJsZSBsaW1pdC4gSWYgZGVidWcgb3B0aW9uIGlubm9kYl9saW1pdF9vcHRpbWlzdGljX2luc2VydF9kZWJ1ZyBpcyBiZWluZyB1c2VkIHRyeSB0d2Vha2luZyBpdCB0byBpbmNsdWRlIG1vcmUgcmVjb3JkcyBpbiBhIHBhZ2UuACVzACVzACVzAENsb25lIHJlbW92aW5nIGFsbCB1c2VyIGRhdGEgZm9yIHByb3Zpc2lvbmluZzogJXMATm9uIGlubm9kYiB0YWJsZTogJXMuJXMgaXMgbm90IGNsb25lZCBhbmQgaXMgZW1wdHkuAENsb25lIHNodXR0aW5nIGRvd24gc2VydmVyIGFzIFJFU1RBUlQgZmFpbGVkLiBQbGVhc2Ugc3RhcnQgc2VydmVyIHRvIGNvbXBsZXRlIGNsb25lIG9wZXJhdGlvbi4ARXJyb3Igd2hlbiBleHRyYWN0aW5nIHRoaXMgbWVtYmVyIEdUSUQgcHVyZ2VkIHNldC4gT3BlcmF0aW9ucyBhbmQgY2hlY2tzIG1hZGUgdG8gZ3JvdXAgam9pbmVycyBtYXkgYmUgaW5jb21wbGV0ZS4AVGhlcmUgd2FzIGFuIGlzc3VlIHdoZW4gY29uZmlndXJpbmcgdGhlIHJlbW90ZSBjbG9uaW5nIHByb2Nlc3M6ICVzAFRoZXJlIHdhcyBhbiBpc3N1ZSB3aGVuIGNsb25pbmcgZnJvbSBhbm90aGVyIHNlcnZlcjogJXMAVGhlcmUgd2FzIGFuIGlzc3VlIHdoZW4gdHJ5aW5nIHRvIGV2YWx1YXRlIHRoZSBiZXN0IGRpc3RyaWJ1dGVkIHJlY292ZXJ5IHN0cmF0ZWd5IHdoaWxlIGpvaW5pbmcuJXMATm8gdmFsaWQgb3IgT05MSU5FIG1lbWJlcnMgZXhpc3QgdG8gZ2V0IHRoZSBtaXNzaW5nIGRhdGEgZnJvbSB0aGUgZ3JvdXAuIEZvciBjbG9uaW5nIGNoZWNrIGlmIGRvbm9ycyBvZiB0aGUgc2FtZSB2ZXJzaW9uIGFuZCB3aXRoIGNsb25lIHBsdWdpbiBpbnN0YWxsZWQgZXhpc3QuIEZvciBpbmNyZW1lbnRhbCByZWNvdmVyeSBjaGVjayBpZiB5b3UgaGF2ZSBkb25vcnMgd2hlcmUgdGhlIHJlcXVpcmVkIGRhdGEgd2FzIG5vdCBwdXJnZWQgZnJvbSB0aGUgYmluYXJ5IGxvZ3MuAFRoZSBncm91cCByZXBsaWNhdGlvbiBwbHVnaW4gY291bGQgbm90IGtpbGwgdGhlIHBsdWdpbiByb3V0aW5lIGZvciAlcy4gJXMAVGhpcyBtZW1iZXIgd2lsbCBzdGFydCBkaXN0cmlidXRlZCByZWNvdmVyeSB1c2luZyBjbG9uZS4gSXQgaXMgZHVlIHRvIHRoZSBudW1iZXIgb2YgbWlzc2luZyB0cmFuc2FjdGlvbnMgYmVpbmcgaGlnaGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgdGhyZXNob2xkIG9mICVsbHUuAFRoaXMgbWVtYmVyIHdpbGwgc3RhcnQgZGlzdHJpYnV0ZWQgcmVjb3ZlcnkgdXNpbmcgY2xvbmUuIEl0IGlzIGR1ZSB0byBubyBPTkxJTkUgbWVtYmVyIGhhcyB0aGUgbWlzc2luZyBkYXRhIGZvciByZWNvdmVyaW5nIGluIGl0cyBiaW5hcnkgbG9ncy4ARGlzdHJpYnV0ZWQgcmVjb3Zlcnkgd2lsbCB0cmFuc2ZlciBkYXRhIHVzaW5nOiAlcwBEdWUgdG8gc29tZSBpc3N1ZSBvbiB0aGUgcHJldmlvdXMgc3RlcCBkaXN0cmlidXRlZCByZWNvdmVyeSBpcyBub3cgZXhlY3V0aW5nOiAlcwBEdWUgdG8gYSBjcml0aWNhbCBjbG9uaW5nIGVycm9yIG9yIGxhY2sgb2YgZG9ub3JzLCBkaXN0cmlidXRlZCByZWNvdmVyeSBjYW5ub3QgYmUgZXhlY3V0ZWQuIFRoZSBtZW1iZXIgd2lsbCBub3cgbGVhdmUgdGhlIGdyb3VwLgBUaGUgJyVzJyB0aHJlYWQgb2YgY2hhbm5lbCAnJXMnIHdpbGwgZXJyb3Igb3V0IGFzIHRoZSBzZXJ2ZXIgd2lsbCBhdHRlbXB0IHRvIGNsb25lIGFub3RoZXIgc2VydmVyAFVua25vd24gdGFibGUgJyUtLjEyOXMnAExvbmcgZGF0YWJhc2UgbmFtZSBhbmQgaWRlbnRpZmllciBmb3Igb2JqZWN0IHJlc3VsdGVkIGluIHBhdGggbGVuZ3RoIGV4Y2VlZGluZyAlZCBjaGFyYWN0ZXJzLiBQYXRoOiAnJXMnLgBYQTogRmFpbGVkIHRvIHRha2UgTURMIExvY2sgYmFja3VwIG9mIFBSRVBBUkVEIFhBIHRyYW5zYWN0aW9uIGR1cmluZyBjbGllbnQgZGlzY29ubmVjdC4AU1VQRVIgcHJpdmlsZWdlIG9yIEFVRElUX0FETUlOIHJvbGUgcmVxdWlyZWQgZm9yICclcydAJyVzJyB1c2VyLgBJbnZhbGlkIGFyZ3VtZW50IHR5cGUASW52YWxpZCBhcmd1bWVudCBjb3VudABhdWRpdF9sb2cgcGx1Z2luIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgdXNpbmcgSU5TVEFMTCBQTFVHSU4gc3ludGF4LgBJbnZhbGlkICJtYXhfYXJyYXlfbGVuZ3RoIiBhcmd1bWVudCB0eXBlLgBGYWlsZWQgdG8gd3JpdGUgdG8gJXM6ICVzICglcykAVXBncmFkaW5nIGZyb20gc2VydmVyIHZlcnNpb24gJWQgd2l0aCBwYXJ0aXRpb25lZCB0YWJsZXMgYW5kIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPT0gMSBvbiBhIGNhc2Ugc2Vuc2l0aXZlIGZpbGUgc3lzdGVtIG1heSBjYXVzZSBpc3N1ZXMsIGFuZCBpcyB0aGVyZWZvcmUgcHJvaGliaXRlZC4gVG8gdXBncmFkZSBhbnl3YXksIHJlc3RhcnQgdGhlIG5ldyBzZXJ2ZXIgdmVyc2lvbiB3aXRoIHRoZSBjb21tYW5kIGxpbmUgb3B0aW9uICd1cGdyYWRlPUZPUkNFJy4gV2hlbiB1cGdyYWRlIGlzIGNvbXBsZXRlZCwgcGxlYXNlIGV4ZWN1dGUgJ1JFTkFNRSBUQUJMRSA8cGFydF90YWJsZV9uYW1lPiBUTyA8bmV3X3RhYmxlX25hbWU+OyBSRU5BTUUgVEFCTEUgPG5ld190YWJsZV9uYW1lPiBUTyA8cGFydF90YWJsZV9uYW1lPjsnIGZvciBlYWNoIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZXMuIFBsZWFzZSBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uAEluY29ycmVjdCBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcywgaW52YWxpZCBwb3J0OiAlcwBUaGUgc2VydmVyIHdhcyBhdXRvbWF0aWNhbGx5IHNldCBpbnRvIG9mZmxpbmUgbW9kZSBhZnRlciBhbiBlcnJvciB3YXMgZGV0ZWN0ZWQuAEEgbWVzc2FnZSBzZW50IHRocm91Z2ggdGhlIEdyb3VwIFJlcGxpY2F0aW9uIG1lc3NhZ2UgZGVsaXZlciBzZXJ2aWNlIHdhcyBub3QgZGVsaXZlcmVkIHN1Y2Nlc3NmdWxseS4gVGhlIHNlcnZlciB3aWxsIG5vdyBsZWF2ZSB0aGUgZ3JvdXAuIFRyeSB0byBhZGQgdGhlIHNlcnZlciBiYWNrIHRvIHRoZSBncm91cCBhbmQgY2hlY2sgaWYgdGhlIHByb2JsZW0gcGVyc2lzdHMsIG9yIGNoZWNrIHByZXZpb3VzIG1lc3NhZ2VzIGluIHRoZSBsb2cgZm9yIGhpbnRzIG9mIHdoYXQgY291bGQgYmUgdGhlIHByb2JsZW0uAEludmFsaWQgU09VUkNFX0NPTVBSRVNTSU9OX0FMR09SSVRITVMgJyUuMTkycycgZm91bmQgaW4gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gUmVzZXR0aW5nIHRvICd1bmNvbXByZXNzZWQnIChubyBjb21wcmVzc2lvbikuAEludmFsaWQgU09VUkNFX1pTVERfQ09NUFJFU1NJT05fTEVWRUwgZm91bmQgaW4gcmVwb3NpdG9yeSBmb3IgY2hhbm5lbCAnJS4xOTJzJy4gUmVzZXR0aW5nIHRvICV1LgBPcHRpb24gLS1wcm90b2NvbC1jb21wcmVzc2lvbi1hbGdvcml0aG1zIGlzIHJlc2V0IHRvIGRlZmF1bHQgdmFsdWUuAEZhdGFsIGVycm9yIHdoaWxlIGNvbXByZXNzaW5nIG91dGdvaW5nIGRhdGEgLSAlcwAlcwBVbmtub3duIGtleXJpbmdfYXdzX3JlZ2lvbiAnJS4xOTJzJy4gQ29ubmVjdGlvbiB0byBBV1MgS01TIG1heSBmYWlsLgBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgZm9yIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIHNldCB0byBgJS42NHNgQGAlLjI1NXNgLCBidXQgdGhpcyBpcyBub3QgYW4gZXhpc3RpbmcgdXNlci4gQ29ycmVjdCB0aGlzIGJlZm9yZSBzdGFydGluZyByZXBsaWNhdGlvbiB0aHJlYWRzLgBJbnZhbGlkLCBjb3JydXB0ZWQgUFJJVklMRUdFX0NIRUNLU19VU0VSIHdhcyBmb3VuZCBpbiB0aGUgcmVwbGljYXRpb24gY29uZmlndXJhdGlvbiByZXBvc2l0b3J5IGZvciBjaGFubmVsICclLjE5MnMnLiBVc2UgQ0hBTkdFIFJFUExJQ0FUSU9OIFNPVVJDRSBUTyBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIgdG8gY29ycmVjdCB0aGUgY29uZmlndXJhdGlvbi4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIHdhcyBzZXQgdG8gYCUuNjRzYEBgJS4yNTVzYCwgYnV0IHRoaXMgdXNlciBkb2VzIG5vdCBoYXZlIFJFUExJQ0FUSU9OX0FQUExJRVIgcHJpdmlsZWdlLiBDb3JyZWN0IHRoaXMgYmVmb3JlIHN0YXJ0aW5nIHRoZSByZXBsaWNhdGlvbiB0aHJlYWRzLgBUaGUgUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciBjaGFubmVsICclLjE5MnMnIHdvdWxkIG5lZWQgRklMRSBwcml2aWxlZ2UgdG8gZXhlY3V0ZSBhIExPQUQgREFUQSBJTkZJTEUgc3RhdGVtZW50IHJlcGxpY2F0ZWQgaW4gc3RhdGVtZW50IGZvcm1hdC4gQ29uc2lkZXIgdXNpbmcgYmlubG9nX2Zvcm1hdD1ST1cgb24gc291cmNlLiBJZiB0aGUgcmVwbGljYXRlZCBldmVudHMgYXJlIHRydXN0ZWQsIHJlY292ZXIgZnJvbSB0aGUgZmFpbHVyZSBieSB0ZW1wb3JhcmlseSBncmFudGluZyBGSUxFIHRvIHRoZSBQUklWSUxFR0VfQ0hFQ0tTX1VTRVIuAFJlcGxpY2EgU1FMIHRocmVhZCVzIGluaXRpYWxpemVkLCBzdGFydGluZyByZXBsaWNhdGlvbiBpbiBsb2cgJyVzJyBhdCBwb3NpdGlvbiAlcywgcmVsYXkgbG9nICclcycgcG9zaXRpb246ICVzLCB1c2VyOiAnJS42NHMnQCclLjI1NXMnLCByb2xlczogJS41MTJzAENhbm5vdCBnZW5lcmF0ZSBwYXNzd29yZDogJyUuMzJzJwBGYWlsZWQgdG8gZ2VuZXJhdGUgYSByYW5kb20gcGFzc3dvcmQgZm9yIHJvb3QuIFByb2JhYmFibHkgbm90IGVub3VnaCBlbnRocm9weS4ASWdub3JpbmcgLS1wbHVnaW4tbG9hZFtfYWRkXSBsaXN0IGFzIHRoZSBzZXJ2ZXIgaXMgcnVubmluZyB3aXRoIC0taW5pdGlhbGl6ZSgtaW5zZWN1cmUpLgBDYW5ub3Qgc2V0IG1hbmRhdG9yeV9yb2xlczogQXV0aElkIGAlLjY0c2BAYCUuNjRzYCBoYXMgJyVzJyBwcml2aWxlZ2UuIEF1dGhJZChzKSBzZXQgaW4gdGhlIG1hbmRhdG9yeV9yb2xlcyBhcmUgaWdub3JlZC4ARGlyZWN0b3J5ICclcycgd2lsbCBub3QgYmUgc2Nhbm5lZCBiZWNhdXNlIGl0IGlzIGEgaGlkZGVuIGRpcmVjdG9yeS4AU2VydmVyIHdhcyBub3QgYWJsZSB0byBmaW5kIGEgcm90YXRlIGV2ZW50IGZyb20gc291cmNlIHNlcnZlciB0byBpbml0aWFsaXplIHJlbGF5IGxvZyByZWNvdmVyeSBmb3IgY2hhbm5lbCAnJXMnLiBTa2lwcGluZyByZWxheSBsb2cgcmVjb3ZlcnkgZm9yIHRoZSBjaGFubmVsLgBSb2xsaW5nIGJhY2sgTE9CIGZvciB0cmFuc2FjdGlvbiAlbGx1IHVuZG8gbnVtYmVyICVsbHUgOiBjdXJyZW50IGluZGV4IGxlbmd0aCAlbGx1LiAoaXRlcmF0aW9uICVsbHUpAEVycm9yIGluIHByb2Nlc3NpbmcgKHBvc3NpYmx5IGRlcHJlY2F0ZWQpIGV4cHJlc3Npb24gb3IgZnVuY3Rpb24gJyUuMTI4cycgZm9yIGdlbmVyYXRlZCBjb2x1bW4gJS42NHMuJS42NHMuJS42NHMAVGhlIHF1ZXVlIGV2ZW50IGZhaWxlZCBmb3IgY2hhbm5lbCAnJXMnIGFzIGFuIGludmFsaWQgZXZlbnQgYWNjb3JkaW5nIHRvIFJFUVVJUkVfUk9XX0ZPUk1BVCB3YXMgZm91bmQuAFRoZSBhcHBsaWNhdGlvbiBvZiByZWxheSBldmVudHMgZmFpbGVkIGZvciBjaGFubmVsICclcycgYXMgYW4gaW52YWxpZCBldmVudCBhY2NvcmRpbmcgdG8gUkVRVUlSRV9ST1dfRk9STUFUIHdhcyBmb3VuZC4AUFJJVklMRUdFX0NIRUNLU19VU0VSIGZvciByZXBsaWNhdGlvbiBjaGFubmVsICclLjE5MnMnIGNhbid0IGJlIHNldCB0byBgJS42NHNgQGAlLjI1NXNgIHVubGVzcyBSRVFVSVJFX1JPV19GT1JNQVQgaXMgYWxzbyBzZXQgdG8gJWQuAEFuIHVuZXhwZWN0ZWQgZXZlbnQgc2VxdWVuY2Ugd2FzIGRldGVjdGVkIGJ5IHRoZSBTUUwgdGhyZWFkIHdoaWxlIGFwcGx5aW5nIGFuIGV2ZW50LgBVcGRhdGluZyBwYXJ0aXRpb24gZmlsZSBuYW1lICclcycgdG8gJyVzJyBhbmQgYWxsIG90aGVyIHBhcnRpdGlvbiBmaWxlcyBkdXJpbmcgdXBncmFkZQBVcGRhdGluZyBwYXJ0aXRpb24gZmlsZSBuYW1lICclcycgdG8gJyVzJyBhbmQgYWxsIG90aGVyIHBhcnRpdGlvbiBmaWxlcyBkdXJpbmcgZG93bmdyYWRlAFVwZGF0aW5nIHBhcnRpdGlvbiBmaWxlIG5hbWUgJyVzJyB0byAnJXMnIGZvciBpbXBvcnQAVW5hYmxlIHRvIG9wZW4gcGFydGl0aW9uIGZpbGUgd2l0aCBuZXcgbmFtZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaW5ub2RiX2RpcmVjdG9yaWVzIGlzIHNldCB0byBpbmNsdWRlIGFsbCBleHRlcm5hbCBmaWxlIHBhdGhzACVzIEREIElEOiAlbGx1IC0gUGFydGl0aW9uIHRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJyBpcyBjb3JyZWN0ZWQgdG8gJyVzJwAlcyBERCBJRDogJWxsdSAtIFRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJywgJyVzJyBpcyBtb3ZlZCB0byAnJXMnACVzIEREIElEOiAlbGx1IC0gUGFydGl0aW9uIHRhYmxlc3BhY2UgJXUsIG5hbWUgJyVzJywgJyVzJyBpcyB1cGRhdGVkIHRvICclcycAJXMgVG9vIG1hbnkgZmlsZXMgaGF2ZSBiZWVuIG1vdmVkLCBkaXNhYmxpbmcgbG9nZ2luZyBvZiBkZXRhaWxlZCBtZXNzYWdlcwBFbGVjdGVkIHByaW1hcnkgbWVtYmVyICVzOiAlcwBTY2hlbWEgbmFtZSAnJXMnIGNvbnRhaW5pbmcgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzIGlzIG5vdCBhbGxvd2VkIHdpdGggbG93ZXJfY2FzZV90YWJsZV9uYW1lcyA9IDEuAFRhYmxlIG5hbWUgJyVzLiVzJyBjb250YWluaW5nIHVwcGVyIGNhc2UgY2hhcmFjdGVycyBpcyBub3QgYWxsb3dlZCB3aXRoIGxvd2VyX2Nhc2VfdGFibGVfbmFtZXMgPSAxLgBTY2hlbWEgbmFtZSAnJXMnIGNvbnRhaW5pbmcgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzLCB1c2VkIGJ5IGZvcmVpZ24ga2V5ICclcycgaW4gdGFibGUgJyVzLiVzJywgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AVGFibGUgbmFtZSAnJXMuJXMnIGNvbnRhaW5pbmcgdXBwZXIgY2FzZSBjaGFyYWN0ZXJzLCB1c2VkIGJ5IGZvcmVpZ24ga2V5ICclcycgaW4gdGFibGUgJyVzLiVzJywgaXMgbm90IGFsbG93ZWQgd2l0aCBsb3dlcl9jYXNlX3RhYmxlX25hbWVzID0gMS4AVGFibGUgUGFydGl0aW9uOiAlcyBpcyBub3QgZm91bmQgaW4gSW5ub0RCIGRpY3Rpb25hcnkAQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJS0uNDhzJ0AnJS0uNjRzJy4gQWNjb3VudCBpcyBibG9ja2VkIGZvciAlcyBkYXkocykgKCVzIGRheShzKSByZW1haW5pbmcpIGR1ZSB0byAldSBjb25zZWN1dGl2ZSBmYWlsZWQgbG9naW5zLiBVc2UgRkxVU0ggUFJJVklMRUdFUyBvciBBTFRFUiBVU0VSIHRvIHJlc2V0LgAlcwBVcGdyYWRlIGNhbm5vdCBwcm9jZWVkIGR1ZSB0byBhbiBleGlzdGluZyBwcmVwYXJlZCBYQSB0cmFuc2FjdGlvbi4AQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3Iga2V5X2luZm8gd2hlbiBtaWdyYXRpbmcgdGFibGUgJXMuJXMAQXBwbGllciBtZXRhZGF0YSBpbmZvcm1hdGlvbiBmb3IgY2hhbm5lbCAnJXMnIHdhcyBmb3VuZCBhZnRlciBhIGNsb25lIG9wZXJhdGlvbi4gUmVsYXkgbG9nIHJlY292ZXJ5IHdpbGwgYmUgZXhlY3V0ZWQgdG8gYWRqdXN0IHBvc2l0aW9ucyBhbmQgZmlsZSBpbmZvcm1hdGlvbiBmb3IgdGhpcyBuZXcgc2VydmVyLiBTaG91bGQgdGhhdCBhdXRvbWF0aWMgcHJvY2VkdXJlIGZhaWwgcGxlYXNlIGFkanVzdCB0aGUgcG9zaXRpb25zIHRocm91Z2ggJ0NIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8nAEZhaWxlZCB0byBkZWxldGUgNS43IHVuZG8gdGFibGVzcGFjZTogJXMgZHVyaW5nIHVwZ3JhZGUARW1wdHkgZG91Ymxld3JpdGUgZmlsZTogJXMAVXNpbmcgJyVzJyBmb3IgZG91Ymxld3JpdGUARXJyb3IgcmVhZGluZyBkb3VibGV3cml0ZSBidWZmZXIgZnJvbSB0aGUgc3lzdGVtIHRhYmxlc3BhY2UAQ2Fubm90IGNyZWF0ZSBkb3VibGV3cml0ZSBidWZmZXI6IHlvdSBtdXN0IGluY3JlYXNlIHlvdXIgYnVmZmVyIHBvb2wgc2l6ZS4gQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4AVGhlIHBhZ2UgaW4gdGhlIGRvdWJsZXdyaXRlIGZpbGUgaXMgY29ycnVwdC4gQ2Fubm90IGNvbnRpbnVlIG9wZXJhdGlvbi4gWW91IGNhbiB0cnkgdG8gcmVjb3ZlciB0aGUgZGF0YWJhc2Ugd2l0aCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9NgBUaGUgZG91Ymxld3JpdGUgZmlsZW5hbWUgJyVzJyBpcyBpbmNvcnJlY3QuACVzAERvdWJsZXdyaXRlIGZpbGUgY3JlYXRlIGZhaWxlZDogJXMAREJMV1JUaHJlYWQ6IHB0aHJlYWRfc2V0YWZmaW5pdHkoKSBmYWlsZWQhACVzACVzAERvdWJsZXdyaXRlIGZpbGUgcmVhZCBmYWlsZWQ6ICVzAER1bXAgb2YgdGhlIGRhdGEgZmlsZSBwYWdlOgAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwAlcwBEb3VibGV3cml0ZSBsb2FkIGZpbGUgJXMgc2l6ZSAlbGx1IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBjb25maWd1cmVkIHBhZ2Ugc2l6ZSAlenUARG91Ymxld3JpdGUgZmlsZSAlcyB0cnVuY2F0ZSBmYWlsZWQARG91Ymxld3JpdGUgZmlsZSAlcyBmYWlsZWQgdG8gd3JpdCB6ZXJvcwBEb3VibGV3cml0ZSBvcGVuIG9yIGNyZWF0ZSBmaWxlICVzIHNpemUgJWxsdSBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgY29uZmlndXJlZCBwYWdlIHNpemUgJXp1ACVzACVzACVzACVzACVzAENvdWxkIG5vdCBmbHVzaCBhbGwgR1RJRHMgZHVyaW5nIHNsb3cgc2h1dGRvd24uIFdpbGwgcmVjb3ZlciBHVElEcyB3aGVuIHNlcnZlciByZXN0YXJ0cy4ARmFpbGVkIHRvIGRlbGV0ZSA1Ljcgc3RhdCB0YWJsZXNwYWNlOiAlcyBkdXJpbmcgdXBncmFkZQBJbnN0YWxsaW5nIG5kYmluZm8gc2NoZW1hIHZlcnNpb24gJXMASW5zdGFsbGVkIG5kYmluZm8gc2NoZW1hIGlzIGN1cnJlbnQuIE5vdCB1cGdyYWRpbmcuAEZhaWxlZCB0byB1cGdyYWRlIG5kYmluZm8gc2NoZW1hLgAlcwBJbm5vREIgaW5pdGlhbGl6YXRpb24gaGFzIHN0YXJ0ZWQuAElubm9EQiBpbml0aWFsaXphdGlvbiBoYXMgZW5kZWQuAENvdWxkIG5vdCBmaW5kIGFwcHJvcHJpYXRlIHJlc2V0IHBvaW50cy4AVW5hYmxlIHRvIGZsdXNoLiBQYWdlIGFyY2hpdmluZyBkYXRhIG1heSBiZSBjb3JydXB0IGluIGNhc2Ugb2YgYSBjcmFzaC4AUGFnZSBhcmNoaXZlcidzIGRvdWJsZXdyaXRlIGJ1ZmZlciBmb3IgJWxkIGlzIG5vdCB2YWxpZC4AUGFnZSBhcmNoaXZlciBzeXN0ZW0ncyByZWNvdmVyeSBmYWlsZWQuAEludmFsaWQgYXJjaGl2ZWQgZmlsZSBuYW1lIGZvcm1hdC4gVGhlIGFyY2hpdmVkIGZpbGUgaXMgc3VwcG9zZWQgdG8gaGF2ZSB0aGUgZm9ybWF0ICVzICsgWzAtOV0qLgBYIFBsdWdpbnMgVU5JWCBzb2NrZXQgbXVzdCB1c2UgZGlmZmVyZW50IGZpbGUgdGhhbiBNeVNRTCBzZXJ2ZXIuIFggUGx1Z2luIHdvbid0IGJlIGFjY2Vzc2libGUgdGhyb3VnaCBVTklYIHNvY2tldAAlcwBDb2x1bW4gJyUuNjRzLiUuNjRzLiUuNjRzJyBoYXZpbmcgcHJlZml4IGtleSBwYXJ0ICclLjY0cygldSknIGlzIGlnbm9yZWQgYnkgdGhlIHBhcnRpdGlvbmluZyBmdW5jdGlvbi4gVXNlIG9mIHByZWZpeGVkIGNvbHVtbnMgaW4gdGhlIFBBUlRJVElPTiBCWSBLRVkoKSBjbGF1c2UgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UuAFVuZG8gVHJ1bmNhdGlvbiBpcyBvY2N1cnJpbmcgdG9vIG9mdGVuLiBDb25zaWRlciBpbmNyZWFzaW5nIC0taW5ub2RiLW1heC11bmRvLWxvZy1zaXplLgBQbHVnaW4gJ2dyb3VwX3JlcGxpY2F0aW9uJyBpcyBzdGFydGluZy4AQ2Fubm90IGNyZWF0ZSB0YWJsZXNwYWNlICVzIGJlY2F1c2UgdGhlIGRpcmVjdG9yeSBpcyBub3QgYSB2YWxpZCBsb2NhdGlvbi4gJXMAU2Nhbm5lZCBmaWxlICclcycgZm9yIHRhYmxlc3BhY2UgJXMgY2Fubm90IGJlIG9wZW5lZCBiZWNhdXNlIGl0IGlzIG5vdCBpbiBhIHN1Yi1kaXJlY3RvcnkgbmFtZWQgZm9yIHRoZSBzY2hlbWEuAENhbm5vdCBmaW5kIHVuZG8gdGFibGVzcGFjZSAlcyB3aXRoIGZpbGVuYW1lICclcycgYXMgaW5kaWNhdGVkIGJ5IHRoZSBEYXRhIERpY3Rpb25hcnkuIERpZCB5b3UgbW92ZSBvciBkZWxldGUgdGhpcyB0YWJsZXNwYWNlPyBBbnkgdW5kbyBsb2dzIGluIGl0IGNhbm5vdCBiZSB1c2VkLgBJbnZhbGlkIGlucHV0IHZhbHVlIGZvciByZWNvdmVyeSBzb2NrZXQgZW5kcG9pbnRzICclcycuIFBsZWFzZSwgcHJvdmlkZSBhIHZhbGlkLCBjb21tYSBzZXBhcmF0ZWQsIGxpc3Qgb2YgZW5kcG9pbnRzIChJUDpwb3J0KS4AVGhlIHNlcnZlciBpcyBub3QgbGlzdGVuaW5nIG9uIGVuZHBvaW50ICclcycuIE9ubHkgZW5kcG9pbnRzIHRoYXQgdGhlIHNlcnZlciBpcyBsaXN0ZW5pbmcgb24gYXJlIHZhbGlkIHJlY292ZXJ5IGVuZHBvaW50cy4AUmVjZWl2ZWQgaW52YWxpZCByZWNvdmVyeSBlbmRwb2ludHMgY29uZmlndXJhdGlvbiBmcm9tIGRvbm9yLiBUaGlzIG1lbWJlciBpcyBub3QgYSB2YWxpZCBkb25vciBmb3IgcmVjb3ZlcnksIHNvIGl0IHdpbGwgYmUgc2tpcHBlZC4ARmFpbGVkIHRvIHJldHJpZXZlIElQIGFkZHJlc3NlcyBmcm9tIGVuYWJsZWQgaG9zdCBuZXR3b3JrIGludGVyZmFjZXMuAEZhaWxlZCB0byBpbml0aWFsaXplIFRMUyBmb3IgY2hhbm5lbDogJXMuIFNlZSBiZWxvdyBmb3IgdGhlIGRlc2NyaXB0aW9uIG9mIGV4YWN0IGlzc3VlLgBWYWxpZGF0aW9uIG9mIHZhbHVlICclcycgc2V0IHRvIGBNeXNxbHhfYmluZF9hZGRyZXNzYCBmYWlsZWQ6ICVzLiBTa2lwcGluZyB0aGlzIHZhbHVlLgBWYWx1ZSAnJXMnIHNldCB0byBgTXlzcWx4X2JpbmRfYWRkcmVzc2AsIFggUGx1Z2luIGNhbid0IGJpbmQgdG8gaXQuIFNraXBwaW5nIHRoaXMgdmFsdWUuAFNlcnZlciB3YXMga2lsbGVkIHdoZW4gSW5ub0RCIHJlZG8gbG9nZ2luZyB3YXMgZGlzYWJsZWQuIERhdGEgZmlsZXMgY291bGQgYmUgY29ycnVwdC4gWW91IGNhbiB0cnkgdG8gcmVzdGFydCB0aGUgZGF0YWJhc2Ugd2l0aCBpbm5vZGJfZm9yY2VfcmVjb3Zlcnk9NgBJbm5vREIgY2Fubm90IGRvIGNvbGQgc2h1dGRvd24gJ2lubm9kYl9mYXN0X3NodXRkb3duID0gMicgYW5kIGlzIGZvcmNpbmcgJ2lubm9kYl9mYXN0X3NodXRkb3duID0gMScgYXMgcmVkbyBsb2dnaW5nIGlzIGRpc2FibGVkLiBJbm5vREIgd291bGQgZmx1c2ggYWxsIGRpcnR5IHBhZ2VzIHRvIGVuc3VyZSBwaHlzaWNhbCBkYXRhIGNvbnNpc3RlbmN5LgBJbm5vREIgcmVkbyBsb2dnaW5nIGlzIGRpc2FibGVkLiBBbGwgZGF0YSBjb3VsZCBiZSBsb3N0IGluIGNhc2Ugb2YgYSBzZXJ2ZXIgY3Jhc2guAElubm9EQiByZWRvIGxvZ2dpbmcgaXMgZW5hYmxlZC4gRGF0YSBpcyBub3cgc2FmZSBhbmQgY2FuIGJlIHJlY292ZXJlZCBpbiBjYXNlIG9mIGEgc2VydmVyIGNyYXNoLgBDaGFubmVsICVzIGNvbmZpZ3VyZWQgdG8gc3VwcG9ydCBUTFMuIEVuY3J5cHRlZCBjb25uZWN0aW9ucyBhcmUgbm93IHN1cHBvcnRlZCBmb3IgdGhpcyBjaGFubmVsLgBObyBUTFMgY29uZmlndXJhdGlvbiB3YXMgZ2l2ZW4gZm9yIGNoYW5uZWwgJXM7IHJlLXVzaW5nIFRMUyBjb25maWd1cmF0aW9uIG9mIGNoYW5uZWwgJXMuAFNraXBwaW5nIElubm9EQiB0YWJsZXNwYWNlIHBhdGggdmFsaWRhdGlvbi4gTWFudWFsbHkgbW92ZWQgdGFibGVzcGFjZSBmaWxlcyB3aWxsIG5vdCBiZSBkZXRlY3RlZCEAVXBncmFkZSBmYWlsZWQgYmVjYXVzZSBkYXRhYmFzZSBjb250YWlucyBkaXNjYXJkZWQgdGFibGVzcGFjZXMuAFRoZSB1c2VyIG5hbWUgJyVzJyBleGNlZWRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIGNoYXJhY3RlcnMgJWQgYW5kIGlzIHRydW5rYXRlZC4AVGhlIGhvc3QgbmFtZSAnJXMnIGV4Y2VlZHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQgY2hhcmFjdGVycyAlZCBhbmQgaXMgdHJ1bmthdGVkLgBSb2xsYmFjayBvZiBub24tcHJlcGFyZWQgdHJhbnNhY3Rpb25zIG5vdCBjb21wbGV0ZWQsIGR1ZSB0byBmYXN0IHNodXRkb3duAEZvdW5kIGFuIGVudHJ5IGluIHRoZSAncm9sZV9lZGdlcycgdGFibGUgd2l0aCBlbXB0eSBhdXRob3JpemF0aW9uIElEOyBTa2lwcGVkAEZvdW5kIGFuIGVudHJ5IGluIHRoZSAncm9sZV9lZGdlcycgdGFibGUgd2l0aCB1bmtub3duIGF1dGhvcml6YXRpb24gSUQgJyVzJzsgU2tpcHBlZABGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ2RlZmF1bHRfcm9sZXMnIHRhYmxlIHdpdGggZW1wdHkgYXV0aG9yaXphdGlvbiBJRDsgU2tpcHBlZABGb3VuZCBhbiBlbnRyeSBpbiB0aGUgJ2RlZmF1bHRfcm9sZXMnIHRhYmxlIHdpdGggdW5rbm93biBhdXRob3JpemF0aW9uIElEICclcyc7IFNraXBwZWQAQ291bGRuJ3QgaW5zZXJ0IGVudHJ5IGluIGRkbCBsb2cgZm9yIGRkbC4AJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAJXMAVGhlIHN0YXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBpcyBzZXQgdG8gYWN0aXZlIGltcGxpY2l0bHkuAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvICdhY3RpdmUnIGJ5IEFMVEVSIFRBQkxFU1BBQ0UuAFRoZSBzdGF0ZSBvZiB1bmRvIHRhYmxlc3BhY2UgJXMgaXMgc2V0IHRvICdpbmFjdGl2ZScgYnkgQUxURVIgVEFCTEVTUEFDRS4AVGhlIHN0YXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBpcyBzZXQgdG8gJ2VtcHR5Jy4ARGVsYXlpbmcgdHJ1bmNhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGR1ZSB0byBjbG9uZSBhY3Rpdml0eS4ARGVsYXlpbmcgdHJ1bmNhdGUgb2YgdW5kbyB0YWJsZXNwYWNlICVzIGR1ZSB0byBhIG1ldGFkYXRhIGxvY2suAEluamVjdGVkIGRlYnVnIGNyYXNoIHBvaW50OiAlcwBJbmplY3RlZCBkZWJ1ZyBmYWlsdXJlIHBvaW50OiAlcwBUaW1lb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGEgdmlldyBjaGFuZ2UgZXZlbnQgZHVyaW5nIHRoZSBsZWF2ZSBzdGVwIGJlZm9yZSBhIGF1dG8tcmVqb2luIGF0dGVtcHQuAEZhaWxlZCB0byBhdXRvbWF0aWNhbGx5IHJlLWNvbm5lY3QgdG8gYSBkaWZmZXJlbnQgc291cmNlLCBmb3IgY2hhbm5lbCAnJXMnLCBiZWNhdXNlICVzLiBUbyBmaXggdGhpcyAlcy4AQ291bGQgbm90IGV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBvZiBVREYgZnVuY3Rpb25zLiBDaGVjayBmb3Igb3RoZXIgZXJyb3JzIGluIHRoZSBsb2cAQ291bGQgbm90IGV4ZWN1dGUgdGhlIGluc3RhbGxhdGlvbiBvZiBVREYgZnVuY3Rpb246ICVzLiBDaGVjayBpZiB0aGUgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50LCBpZiBzbywgdHJ5IHRvIHJlbW92ZSBpdC4AQ291bGQgbm90IHVuaW5zdGFsbCBVREYgZnVuY3Rpb25zLiBUcnkgdG8gcmVtb3ZlIHRoZW0gbWFudWFsbHkgaWYgcHJlc2VudC4AQW4gZW1wdHkgb3IgaWxsZWdhbCBwcml2aWxlZ2UgaWRlbnRpZmllciB3YXMgaWdub3JlZCB3aGVuIGdsb2JhbCBwcml2aWxlZ2VzIHdlcmUgcmVhZCBmcm9tIGRpc2suACVzAEEgdG1wZGlyIHRlbXBvcmFyeSBwYXRoICIlcyIgaXMgdG9vIGxvbmcgKD4gJXp1KSBmb3IgdGhpcyBPUy4gVGhpcyB3b3VsZCBub3QgbGVhdmUgZW5vdWdoIHNwYWNlIGZvciBhIHRlbXBvcmFyeSBmaWxlbmFtZSBvZiBsZW5ndGggJXp1IHdpdGhpbiBpdC4ARXJyb3ItbG9nIGRlc3RpbmF0aW9uICIlcyIgaXMgbm90IGEgZmlsZS4gQ2FuIG5vdCByZXN0b3JlIGVycm9yIGxvZyBtZXNzYWdlcyBmcm9tIHByZXZpb3VzIHJ1bi4ATm9uZSBvZiB0aGUgbG9nLXNpbmtzIHNlbGVjdGVkIHdpdGggLS1sb2ctZXJyb3Itc2VydmljZXM9Li4uIHByb3ZpZGVzIGEgbG9nLXBhcnNlci4gVGhlIHNlcnZlciB3aWxsIG5vdCBiZSBhYmxlIHRvIG1ha2UgdGhlIHByZXZpb3VzIHJ1bnMnIGVycm9yLWxvZ3MgYXZhaWxhYmxlIGluIHBlcmZvcm1hbmNlX3NjaGVtYS5lcnJvcl9sb2cuAFRoZSBzY2hlbWEgIiUuNjRzIiByZWZlcmVuY2VkIGJ5ICUuMTZzICIlLjEyOHMiIGRvZXMgbm90IGV4aXN0LiBQbGVhc2UgY2xlYW4gdXAgYW55IG9ycGhhbiAlLjE2cyBiZWZvcmUgdXBncmFkaW5nLgBDcmVhdGVkIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBEcm9wcGVkIHVuZG8gdGFibGVzcGFjZSAnJXMnLgBUaGUgSW5ub0RCIEVuY3J5cHRpb24gTWFzdGVyIEtleSBoYXMgYmVlbiByb3RhdGVkIGluICVkIHRhYmxlc3BhY2VzLgBGYWlsZWQgdG8gZGVjb21wcmVzcyBhIERCTFdSIHBhZ2UgKGVycj0lZCkuICBUaGUgb3JpZ2luYWwgc2l6ZSBpcyAlZC4gUmVwb3J0aW5nIHRoZSBkYmx3ciBwYWdlIGFzIGNvcnJ1cHRlZC4ARGVjcnlwdGluZyBhIHBhZ2UgaW4gZG91Ymxld3JpdGUgZmlsZSBmYWlsZWQ6ICVzLgBFbmNyeXB0aW9uIGtleSBtaXNzaW5nOiAlcy4ASS9PIGVycm9yIHdoaWxlIHdyaXRpbmcgdG8gZmlsZTogJXMuIFJldHJ5aW5nIC4uLgBGYWlsZWQgdG8gd3JpdGUgZGF0YSB0byBmaWxlOiAlcwBMb2cgY29tcG9uZW50ICVzIGZhaWxlZCB0byBpbml0aWFsaXplLgBUaGUgTW9uaXRvciBJTyB0aHJlYWQgZmFpbGVkIHRvIGNvbm5lY3QgdG8gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLCB0aGVuY2UgaXQgd2lsbCB0cnkgdG8gY29ubmVjdCB0byBhbm90aGVyIHNvdXJjZS4AVGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnIGhhcyBqb2luZWQgdGhlIGdyb3VwIChncm91cF9uYW1lOiAlcyksIGFuZCBzbyBhZGRlZCBpdHMgZW50cnkgaW50byByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4AVGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnIGhhcyBsZWZ0IHRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpLCBhbmQgc28gcmVtb3ZlZCBpdHMgZW50cnkgZnJvbSByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4AVGhlIE1vbml0b3IgSU8gdGhyZWFkIGRldGVjdGVkIHRoYXQgdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGdyb3VwIG1ham9yaXR5LCB0aGVuY2UgdGhlIGNoYW5uZWwgJyVzJyB3aWxsIHRyeSB0byBjb25uZWN0IHRvIGFub3RoZXIgc291cmNlLgBUaGUgSU8gdGhyZWFkIGRldGVjdGVkIHRoYXQgdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhlIGdyb3VwIG1ham9yaXR5LCB0aGVuY2UgdGhlIGNoYW5uZWwgJyVzJyB3aWxsIHRyeSB0byBjb25uZWN0IHRvIGFub3RoZXIgc291cmNlLgAlcyBvbiB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycuAFJlcGxpY2EgTW9uaXRvciBJTyB0aHJlYWQgZXhpdGluZy4AVGhlIGdyb3VwIChncm91cF9uYW1lOiAlcykgZm9yIHRoZSBjaGFubmVsICclcycgaGFzIGJlZW4gcmVtb3ZlZCwgYW5kIHNvIHJlbW92ZWQgaXRzIGVudHJ5IGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXJfbWFuYWdlZCBhbmQgYWxsIHRoZSBncm91cCBtZW1iZXJzIGZyb20gcmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXIgdGFibGUuAFRoZSBncm91cCAoZ3JvdXBfbmFtZTogJXMpIGZvciB0aGUgY2hhbm5lbCAnJXMnIGhhcyBiZWVuIGFkZGVkLCBhbmQgc28gYWRkZWQgaXRzIGVudHJ5IGluIHJlcGxpY2F0aW9uX2FzeW5jaHJvbm91c19jb25uZWN0aW9uX2ZhaWxvdmVyX21hbmFnZWQgYW5kIHNvdXJjZSB0byByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4ARXJyb3IgcmVhZGluZyBmYWlsb3ZlciBzb3VyY2VzIGZvciBjaGFubmVsICclcycgZnJvbSByZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3ZlciB0YWJsZS4ARXJyb3IgJXMgdGhlIGNoYW5uZWwgJyVzJywgdGhlIG9wZXJhdGlvbiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcmV0cmllZC4AUmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlM9JyVzJywgd2hpY2ggaXMgaW52YWxpZCB3aGVuIEdUSURfTU9ERSA8PiBPTi4gSWYgeW91IGludGVuZCB0byB1c2UgR1RJRF9NT0RFID0gT04gZXZlcnl3aGVyZSwgY2hhbmdlIHRvIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TID0gT0ZGIGFuZCB1c2UgdGhlIHByb2NlZHVyZSBmb3IgZW5hYmxpbmcgR1RJRHMgb25saW5lIChzZWUgdGhlIGRvY3VtZW50YXRpb24pLiBJZiB5b3UgaW50ZW5kIHRvIHVzZSBHVElEcyBvbiB0aGlzIHJlcGxpY2EgYW5kIGNhbm5vdCBlbmFibGUgR1RJRHMgb24gdGhlIHNvdXJjZSwgZW5hYmxlIEdUSURfTU9ERSA9IE9OIGFuZCBsZWF2ZSBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUyA9IExPQ0FMfDxVVUlEPi4gSWYgeW91IGludGVuZCB0byBub3QgdXNlIEdUSURzIGF0IGFsbCBpbiB0aGUgcmVwbGljYXRpb24gdG9wb2xvZ3ksIGNoYW5nZSB0byBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUz1PRkYgYW5kIGxlYXZlIEdUSURfTU9ERSA9ICclcycuAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TPSclcycgd2hpY2ggaXMgZXF1YWwgdG8gZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZS4gVG8gZml4IHRoaXMgaXNzdWUsIGVpdGhlciBjaGFuZ2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX2dyb3VwX25hbWUgIG9yIHVzZSBhIGRpZmZlcmVudCB2YWx1ZSBmb3IgQVNTSUdOX0dUSURTX1RPX0FOT05ZTU9VU19UUkFOU0FDVElPTlMuAFRoZSBncm91cF9yZXBsaWNhdGlvbl9ncm91cF9uYW1lICclcycgaXMgdGhlIHNhbWUgYXMgdGhlIFVVSUQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TIGluIGEgc2VydmVyIGNoYW5uZWwAVGhlIGludGVnZXIgY29tcG9uZW50IG9mIHRoZSBHVElEIG51bWJlciBpcyBoaWdoLiBTdWdnZXN0IHJlc3RhcnRpbmcgdGhlIHNlcnZlciB3aXRoIGEgbmV3IHNlcnZlcl91dWlkIHRvIHByZXZlbnQgaXQgZnJvbSByZWFjaGluZyB0aGUgbWF4aW11bSBudW1iZXIgMl42My0xLCB3aGljaCB3aWxsIG1ha2UgaXQgaW1wb3NzaWJsZSB0byB3cml0ZSB0aGUgYmluYXJ5IGxvZyBhbmQgaW52b2tlIHRoZSBiZWhhdmlvciBzcGVjaWZpZWQgYnkgYmlubG9nX2Vycm9yX2FjdGlvbi4AJXMAJXMAJXMAJXM6IFdhcm5pbmcgTGV2ZWwgMSAoJWxsdSBNaUIpOiBtb3VudCBwb2ludCA9ICclcycsIGF2YWlsYWJsZSA9ICVsbHUgTWlCLCB0b3RhbCA9ICVsbHUgTWlCLCB1c2VkID0gJS4yZiUlLCBsb3cgbGltaXQgPSAlbGx1IE1pQiwgY3JpdGljYWwgbGV2ZWwgPSAlbGx1IE1pQgAlczogV2FybmluZyBMZXZlbCAyICglbGx1IE1pQik6IG1vdW50IHBvaW50ID0gJyVzJywgYXZhaWxhYmxlID0gJWxsdSBNaUIsIHRvdGFsID0gJWxsdSBNaUIsIHVzZWQgPSAlLjJmJSUsIGxvdyBsaW1pdCA9ICVsbHUgTWlCLCBjcml0aWNhbCBsZXZlbCA9ICVsbHUgTWlCACVzOiBXYXJuaW5nIExldmVsIDMgKCVsbHUgTWlCKTogbW91bnQgcG9pbnQgPSAnJXMnLCBhdmFpbGFibGUgPSAlbGx1IE1pQiwgdG90YWwgPSAlbGx1IE1pQiwgdXNlZCA9ICUuMmYlJSwgbG93IGxpbWl0ID0gJWxsdSBNaUIsIGNyaXRpY2FsIGxldmVsID0gJWxsdSBNaUIASW5ub0RCOiBTaXplIG9mIHRhYmxlc3BhY2UgJXMgaXMgbW9yZSB0aGFuIHRoZSBtYXhpbXVtIHNpemUgYWxsb3dlZC4AVGhlIGdyb3VwX3JlcGxpY2F0aW9uX2FwcGxpZXIgY2hhbm5lbCBpcyBzdGlsbCBydW5uaW5nLCBtb3N0IGxpa2VseSBpdCBpcyB3YWl0aW5nIGZvciBhIGRhdGFiYXNlL3RhYmxlIGxvY2ssIHdoaWNoIGlzIHByZXZlbnRpbmcgdGhlIGNoYW5uZWwgZnJvbSBzdG9wcGluZy4gUGxlYXNlIGNoZWNrIGRhdGFiYXNlL3RhYmxlIGxvY2tzLCBpbmNsdWRpbmcgdGhlIG9uZXMgY3JlYXRlZCBieSBiYWNrdXAgdG9vbHMuAERldGVjdGVkIG1pc2NvbmZpZ3VyYXRpb246IHJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgd2FzIGNvbmZpZ3VyZWQgd2l0aCBTT1VSQ0VfQ09OTkVDVElPTl9BVVRPX0ZBSUxPVkVSID0gMSwgYnV0IHRoZSBzZXJ2ZXIgd2FzIHN0YXJ0ZWQgd2l0aCBhIHZhbHVlIG90aGVyIHRoZW4gLS1ndGlkLW1vZGUgPSBPTi4gRWl0aGVyIHJlY29uZmlndXJlIHJlcGxpY2F0aW9uIHVzaW5nIENIQU5HRSBSRVBMSUNBVElPTiBTT1VSQ0UgVE8gU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiA9IDAgRk9SIENIQU5ORUwgJyUuMTkycycsIG9yIGNoYW5nZSBHVElEX01PREUgdG8gdmFsdWUgT04sIGJlZm9yZSBzdGFydGluZyB0aGUgcmVwbGljYSByZWNlaXZlciB0aHJlYWQuAENvdWxkIG5vdCBhY3F1aXJlIHJlcXVpcmVkIGNvbXBvbmVudCBzZXJ2aWNlcy4AQXV0b21hdGljIHJlZ2lzdHJhdGlvbiBvZiBmdW5jdGlvbihzKSBmYWlsZWQuAEF1dG9tYXRpYyByZWdpc3RyYXRpb24gb2YgUGVyZm9ybWFuY2Ugc2NoZW1hIHRhYmxlKHMpIGZhaWxlZC4AJXMARmFpbGVkIHRvIGF1dG8tcHJ1bmUgZmlsZSAnJXMnLCBFcnJvciAoJWQpOiAlcwBGaWxlICclcycgYXV0by1wcnVuZWQAUmVjZWl2ZWQgYW4gZXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBjb21wb25lbnRzIGZyb20gbWFuaWZlc3QgZmlsZTogJXMAUmVjZWl2ZWQgYW4gZXJyb3Igd2hpbGUgdW5sb2FkaW5nIGNvbXBvbmVudHMgcmVhZCBmcm9tIG1hbmlmZXN0IGZpbGU6ICVzAE1hbmlmZXN0IGZpbGUgJyVzJyBpcyBub3QgcmVhZC1vbmx5LiBGb3IgYmV0dGVyIHNlY3VyaXR5LCBwbGVhc2UgbWFrZSBzdXJlIHRoYXQgdGhlIGZpbGUgaXMgcmVhZC1vbmx5LgBObyBzdWl0YWJsZSAnJXMnIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gZm91bmQgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4AS2V5cmluZyBjb21wb25lbnQgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5LgBUaGUgY29tcG9uZW50IGlzIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseS4gRXJyb3I6ICVzLiBNYWtlIHN1cmUgdGhhdCBjb25maWd1cmF0aW9uIGlzIHByb3BlciBhbmQgdXNlIEFMVEVSIElOU1RBTkNFIFJFTE9BRCBLRVlSSU5HIHRvIHJlaW5pdGlhbGl6ZSB0aGUgY29tcG9uZW50LgBLZXlyaW5nIGNvbXBvbmVudCBlbmNvdW50ZXJlZCBhbiBleGNlcHRpb24gd2hpbGUgZXhlY3V0aW5nIDogJyVzJyBBUEkgb2Ygc2VydmljZTogJyVzJwBGYWlsZWQgdG8gYWxsb2NhdGVkIG1lbW9yeSBmb3IgJyVzJyB3aGlsZSBleGVjdXRpbmc6ICclcycgQVBJIG9mIHNlcnZpY2U6ICclcycARW1wdHkgb3IgMCB2YWx1ZXMgZm9yIEFFUyBlbmNyeXB0aW9uIG1vZGUgYW5kL29yIGJsb2NrIHNpemUgYXJlIG5vdCBwZXJtaXR0ZWQuAEEgdmFsaWQgZGF0YSBpZGVudGlmaWVyIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIGZldGNoIHRoZSBrZXkgcmVxdWlyZWQgZm9yIHRoZSBBRVMgb3BlcmF0aW9uLgBLZXkgaWRlbnRpZmllZCBieSBEYXRhIElEOiAnJXMnIGFuZCBBdXRoIElEOiAnJXMnIGlzIG5vdCBvZiB0eXBlIEFFUy4ARW5jb3VudGVyZWQgZXJyb3I6ICclcycgd2hpbGUgZXhlY3V0aW5nICclcycgQVBJIG9mIGtleXJpbmdfYWVzIHNlcnZpY2UuIEtleSBkZXRhaWxzIGFyZSBEYXRhIElEOiAnJXMnIGFuZCBBdXRoIElEOiAnJXMnLgBDb3VsZCBub3QgZmluZCB0aGUgZGF0YSBjb3JyZXNwb25kaW5nIHRvIERhdGEgSUQ6ICclcycsIEF1dGggSUQ6ICclcycuAE1heGltdW0gcGVybWlzc2libGUgc2l6ZSBvZiBkYXRhIGlzICclenUnIGJpdHMARXJyb3Igd3JpdGluZyBkYXRhIGZvciBEYXRhIElEOiAnJXMnLCBBdXRoIElEOiAnJXMnLiBFaXRoZXIgZGF0YSBhbHJlYWR5IGV4aXN0cyB3aXRoIHNhbWUgaWRlbnRpZmllciBvciBrZXlyaW5nIGJhY2tlbmQgZW5jb3VudGVyZWQgYW4gZXJyb3IuAEVycm9yIHJlbW92aW5nIGRhdGEgZm9yIERhdGEgSUQ6ICclcycsIEF1dGggSUQ6ICclcycuIEVpdGhlciBkYXRhIGRvZXMgbm90IGV4aXN0cyB3aXRoIHNhbWUgaWRlbnRpZmllciBvciBrZXlyaW5nIGJhY2tlbmQgZW5jb3VudGVyZWQgYW4gZXJyb3IuAEVycm9yIGdlbmVyYXRpbmcgZGF0YSBmb3IgRGF0YSBJRDogJyVzJywgQXV0aCBJRDogJyVzJy4gRWl0aGVyIGRhdGEgYWxyZWFkeSBleGlzdHMgd2l0aCBzYW1lIGlkZW50aWZpZXIgb3Iga2V5cmluZyBiYWNrZW5kIGVuY291bnRlcmVkIGFuIGVycm9yLgBGYWlsZWQgdG8gZ2V0IG1ldGFkYXRhIGZyb20gY3VycmVudCBrZXlzIG1ldGFkYXRhIGl0ZXJhdG9yIHBvc2l0aW9uLgBLZXkgYW5kIHZhbHVlIGxlbmd0aCBwYXJhbWV0ZXJzIG11c3Qgbm90IGJlIG51bGwuAElubm9kYiBjb3VsZCBub3QgYWNxdWlyZSBzZXJ2aWNlIDogJXMAQ29sdW1uICVzIG9mIHR5cGUgR0VPTUVUUlkgaXMgaW4gb2xkICg1LjYpIGZvcm1hdCB3aGljaCBjb3VsZCBiZSBkZXByZWNhdGVkIGluIHRoZSBmdXR1cmUuIFRvIGNoYW5nZSB0aGUgZm9ybWF0IHRvIGxhdGVzdCwgcGxlYXNlIGNvbnNpZGVyIHJlYnVpbGRpbmcgdGhlIHRhYmxlIGFmdGVyIHRoZSB1cGdyYWRlLgAnd2FpdF90aW1lb3V0JyBwZXJpb2Qgb2YgJXMgc2Vjb25kcyB3YXMgZXhjZWVkZWQgZm9yICVzLiBUaGUgaWRsZSB0aW1lIHNpbmNlIGxhc3QgY29tbWFuZCB3YXMgdG9vIGxvbmcuAFRoZSBtZW1iZXIgYWN0aW9uICIlcyIgZm9yIGV2ZW50ICIlcyIgd2l0aCBwcmlvcml0eSAiJXUiIHdpbGwgYmUgcnVuLgBUaGUgbWVtYmVyIGFjdGlvbiAiJXMiIGZvciBldmVudCAiJXMiIHdpdGggcHJpb3JpdHkgIiV1IiBmYWlsZWQsIHRoaXMgZXJyb3IgaXMgaWdub3JlZCBhcyBpbnN0cnVjdGVkLiBQbGVhc2UgY2hlY2sgcHJldmlvdXMgbWVzc2FnZXMgaW4gdGhlIGVycm9yIGxvZyBmb3IgaGludHMgYWJvdXQgd2hhdCBjb3VsZCBoYXZlIGNhdXNlZCB0aGlzIGZhaWx1cmUuAFRoZSBtZW1iZXIgYWN0aW9uICIlcyIgZm9yIGV2ZW50ICIlcyIgd2l0aCBwcmlvcml0eSAiJXUiIGZhaWxlZC4gUGxlYXNlIGNoZWNrIHByZXZpb3VzIG1lc3NhZ2VzIGluIHRoZSBlcnJvciBsb2cgZm9yIGhpbnRzIGFib3V0IHdoYXQgY291bGQgaGF2ZSBjYXVzZWQgdGhpcyBmYWlsdXJlLgBVbmFibGUgdG8gcGFyc2UgdGhlIG1lbWJlciBhY3Rpb25zIGNvbmZpZ3VyYXRpb24gc2VudCBieSB0aGUgcHJpbWFyeS4AVW5hYmxlIHRvIHVwZGF0ZSB0aGUgbWVtYmVyIGFjdGlvbnMgY29uZmlndXJhdGlvbiB3aXRoIHRoZSBvbmUgc2VudCBieSB0aGUgcHJpbWFyeS4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9hY3Rpb25zJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFVuYWJsZSB0byByZWFkIHRoZSBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIGR1cmluZyBncm91cCBtZW1iZXJzaGlwIGNoYW5nZS4gUGxlYXNlIGNoZWNrIHRoZSB0YWJsZXMgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX21lbWJlcl9hY3Rpb25zJyBhbmQgJ215c3FsLnJlcGxpY2F0aW9uX2dyb3VwX2NvbmZpZ3VyYXRpb25fdmVyc2lvbicuAFRoaXMgbWVtYmVyIGpvaW5lZCBhIGdyb3VwIG9uIHdoaWNoIGFsbCBtZW1iZXJzIGRvIG5vdCBzdXBwb3J0IG1lbWJlciBhY3Rpb25zLCBhcyBzdWNoIGl0IGRpZCByZXNldCBpdHMgbWVtYmVyIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGRlZmF1bHQgb25lLgBVbmFibGUgdG8gcmVzZXQgdG8gbWVtYmVyIGFjdGlvbnMgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9uIG1lbWJlciBqb2luLiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVW5hYmxlIHRvIHBhcnNlIHRoZSBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIHNlbnQgYnkgdGhlIGdyb3VwIG9uIG1lbWJlciBqb2luLgBVbmFibGUgdG8gdXBkYXRlIHRoZSBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIG9uIG1lbWJlciBqb2luLiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJy4AVGhlIGdyb3VwIG1lbWJlcnMgd2VyZSB1bmFibGUgdG8gc2VuZCB0aGVpciBtZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uLiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX2FjdGlvbnMnIGFuZCAnbXlzcWwucmVwbGljYXRpb25fZ3JvdXBfY29uZmlndXJhdGlvbl92ZXJzaW9uJyBvbiBhbGwgbWVtYmVycy4ATWVtYmVyIGFjdGlvbiBlbmFibGVkOiAiJXMiLCB0eXBlOiAiJXMiLCBldmVudDogIiVzIiwgcHJpb3JpdHk6ICIldSIsIGVycm9yX2hhbmRsaW5nOiAiJXMiLgBNZW1iZXIgYWN0aW9uIGRpc2FibGVkOiAiJXMiLCB0eXBlOiAiJXMiLCBldmVudDogIiVzIiwgcHJpb3JpdHk6ICIldSIsIGVycm9yX2hhbmRsaW5nOiAiJXMiLgBNZW1iZXIgYWN0aW9ucyBjb25maWd1cmF0aW9uIHdhcyByZXNldC4AQWNjZXB0ZWQgYSBjb25uZWN0aW9uIHdpdGggZGVwcmVjYXRlZCBwcm90b2NvbCAnJXMnIGZvciBhY2NvdW50IGAlc2BAYCVzYCBmcm9tIGhvc3QgYCVzYC4gQ2xpZW50IHN1cHBsaWVkIHVzZXJuYW1lIGAlc2AAQSBkZXByZWNhdGVkIFRMUyB2ZXJzaW9uICVzIGlzIGVuYWJsZWQgZm9yIGNoYW5uZWwgJXMAVXNlciBwcm9maWxlICclcycgbG9hZGVkLiBGaXJld2FsbCB1c2VyIHByb2ZpbGVzIGFyZSBkZXByZWNhdGVkLCBjb25zaWRlciBtaWdyYXRpbmcgdG8gZ3JvdXAgcHJvZmlsZXMuAEludmFsaWQgaW5wdXQgdmFsdWUgZm9yIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgJyVzJy4gUGxlYXNlLCBwcm92aWRlIGEgdmFsaWQgVVVJRC4AVmFyaWFibGUgJ2dyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQnIGNhbm5vdCBiZSBzZXQgdG8gdGhlIHZhbHVlIG9mICclcycuIElmIHlvdSB3YW50IHRvIHVzZSB0aGUgVVVJRCBvZiAnZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZScgZm9yIHRoZSBVVUlEIG9mIFZpZXdfY2hhbmdlX2xvZ19ldmVudHMsIHBsZWFzZSBzZXQgJ2dyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQnIHRvIEFVVE9NQVRJQy4AZ3JvdXBfcmVwbGljYXRpb25fZ3JvdXBfbmFtZSAnJXMnLCB3aGljaCBpcyB0aGUgc2FtZSBhcyBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLiBQbGVhc2UgY2hhbmdlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgdG8gQVVUT01BVElDAFRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkICclcycgaXMgdGhlIHNhbWUgYXMgdGhlIFVVSUQgdmFsdWUgZm9yIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TIGluIGEgc2VydmVyIGNoYW5uZWwAZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBpcyBpbmNvbXBhdGlibGUgd2l0aCBncm91cC4gZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCAlcyBtYXRjaGVzIHNlcnZlcl91dWlkICVzLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgb3B0aW9uIHZhbHVlICclcycgZGlmZmVyZW50IGZyb20gdGhlIGdyb3VwICclcycuIFRoZSBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAFJlcGxpY2F0aW9uIGNoYW5uZWwgJyUuMTkycycgaXMgY29uZmlndXJlZCB3aXRoIEFTU0lHTl9HVElEU19UT19BTk9OWU1PVVNfVFJBTlNBQ1RJT05TPSclcycgd2hpY2ggaXMgZXF1YWwgdG8gZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZC4gVG8gZml4IHRoaXMgaXNzdWUsIGVpdGhlciBjaGFuZ2UgdGhlIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQgb3IgdXNlIGEgZGlmZmVyZW50IHZhbHVlIGZvciBBU1NJR05fR1RJRFNfVE9fQU5PTllNT1VTX1RSQU5TQUNUSU9OUy4AVW5hYmxlIHRvIHBhcnNlIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkLgBVbmFibGUgdG8gZ2VuZXJhdGUgc2lkbm8gZm9yIGdyb3VwX3JlcGxpY2F0aW9uX3ZpZXdfY2hhbmdlX3V1aWQuAFVuYWJsZSB0byBwYXJzZSB0aGUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBFcnJvciB1cGRhdGluZyBncm91cF9ndGlkX2V4ZWN1dGVkIEdUSUQgc2V0IHdpdGggdmlldyBjaGFuZ2UgdXVpZCBkdXJpbmcgdGhlIENlcnRpZmljYXRpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgBVbmFibGUgdG8gYWRkIHRoZSBncm91cF9yZXBsaWNhdGlvbl92aWV3X2NoYW5nZV91dWlkIHNpZG5vIGluIHRoZSBncm91cF9ndGlkX3NpZF9tYXAgZHVyaW5nIHRoZSBDZXJ0aWZpY2F0aW9uIG1vZHVsZSBpbml0aWFsaXphdGlvbi4AVW5hYmxlIHRvIGhhbmRsZSB0aGUgZG9ub3IncyB2aWV3IGNoYW5nZSB1dWlkIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBjb25mbGljdCBkZXRlY3Rpb24gY29tcG9uZW50LiBQb3NzaWJsZSBvdXQgb2YgbWVtb3J5IGVycm9yLgBVbmFibGUgdG8gcmV0cmlldmUgZ3JvdXBfcmVwbGljYXRpb25fdmlld19jaGFuZ2VfdXVpZCBkdXJpbmcgc2VydmVyIGNoZWNrcyBvbiByZXBsaWNhdGlvbiBvcGVyYXRpb25zLgBCb3RoIGF1ZGl0X2xvZ19tYXhfc2l6ZSBhbmQgYXVkaXRfbG9nX3BydW5lX3NlY29uZHMgYXJlIHNldCB0byBub24temVyby4gYXVkaXRfbG9nX21heF9zaXplIHRha2VzIHByZWNlZGVuY2UgYW5kIGF1ZGl0X2xvZ19wcnVuZV9zZWNvbmRzIGlzIGlnbm9yZWQAYXVkaXRfbG9nX3JvdGF0ZV9vbl9zaXplIGlzIG5vdCBncmFudWxhciBlbm91Z2ggZm9yIHRoZSB2YWx1ZSBvZiBhdWRpdF9sb2dfbWF4X3NpemUgc3VwcGxpZWQuIFNob3VsZCBiZSBhdCBsZWFzdCAlZCB0aW1lcyBzbWFsbGVyLgBJbnZhbGlkIHRhYmxlIGRlZmluaXRpb24gZm9yICclcy4lcycuACVzAENhbm5vdCBpbnN0YWxsIHRoZSAlLjE5MnMgcGx1Z2luIHdoZW4gdGhlICUuMTkycyBwbHVnaW4gaXMgaW5zdGFsbGVkLgBUaGUgdmFyaWFibGUgJXMgaGFzIGJlZW4gcmVuYW1lZCB0byAlcywgYW5kIHRoZSBvbGQgbmFtZSBkZXByZWNhdGVkLiBPbmx5IHRoZSBvbGQgbmFtZSB3YXMgZm91bmQgaW4gdGhlIHBlcnNpc3RlZCB2YXJpYWJsZSBmaWxlLiBOZXh0IHRpbWUgdGhlIGZpbGUgaXMgc2F2ZWQsIGJvdGggbmFtZXMgd2lsbCBiZSBzdG9yZWQuIElzc3VlIGFueSBTRVQgUEVSU0lTVCBjb21tYW5kIHRvIHNhdmUgdGhlIGZpbGUsIGdldCByaWQgb2YgdGhpcyB3YXJuaW5nLCBhbmQgcHJlcGFyZSB0aGUgcGVyc2lzdGVkIGNvbmZpZ3VyYXRpb24gZm9yIHdoZW4gdGhlIHZhcmlhYmxlIGlzIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4AJWQgZXJyb3IgbG9nZ2luZyBjb21wb25lbnQocykgZmFpbGVkIHRvIGZsdXNoLiBGb3IgZmlsZS1iYXNlZCBsb2dzIHRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBwYXRoIG9yIHBlcm1pc3Npb25zIG9mIHRoZSBsb2ctZmlsZSBoYXZlIGNoYW5nZWQuIEZhaWx1cmUgdG8gZmx1c2ggZmlsZWQtYmFzZWQgbG9ncyBtYXkgYWZmZWN0IGxvZy1yb3RhdGlvbi4AVGFibGVzcGFjZSBrZXkgZm9yICVzIGhhcyBiZWVuIHJlLWVuY3J5cHRlZCB1c2luZyB0aGUgbGF0ZXN0IElubm9EQiBtYXN0ZXIga2V5LiBIb3dldmVyLCB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgcmVidWlsZCB0aGUgdGFibGUgZm9yIGJldHRlciBzZWN1cml0eS4AVGFibGVzcGFjZSBrZXkgZm9yICVzIGhhcyBiZWVuIHJlLWVuY3J5cHRlZCB1c2luZyB0aGUgbGF0ZXN0IElubm9EQiBtYXN0ZXIga2V5LiBIb3dldmVyLCB3ZSByZWNvbW1lbmQgdGhhdCB5b3UgcmVlbmNyeXB0IHRoZSB0YWJsZXNwYWNlIGZvciBiZXR0ZXIgc2VjdXJpdHkuAFBhZ2UgQXJjaGl2ZXIncyBkb3VibGV3cml0ZSBidWZmZXIgaW5pdGlhbGlzYXRpb24gZmFpbGVkLiBQYWdlIHRyYWNraW5nIGlzIGF0IHJpc2sgb2YgbG9zaW5nIHRyYWNrZWQgaW5mb3JtYXRpb24uAFRoZXJlIGlzIG5vdCBlbm91Z2ggZnJlZSBzcGFjZSBpbiB0aGUgcmVkbyBsb2cgZHVyaW5nIHJlY292ZXJ5IHRvIHBlcmZvcm0gcGVuZGluZyBpYnVmIG1lcmdlcy4gUGxlYXNlIHJldHJ5IHN0YXJ0aW5nIE15U1FMIHdpdGggLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9NC4AVGhlcmUgaXMgbm90IGVub3VnaCBmcmVlIHNwYWNlIGluIHRoZSByZWRvIGxvZyBkdXJpbmcgcmVjb3ZlcnksIHJlc3RvcmUgZnJvbSBiYWNrdXAgKG9yIHJldHJ5IHdpdGggLS1pbm5vZGItZm9yY2UtcmVjb3Zlcnk9NikuAGF1ZGl0X2xvZ19mb3JtYXRfdW5peF90aW1lc3RhbXAgaXMgYXBwbGljYWJsZSBvbmx5IHdoZW4gYXVkaXRfbG9nX2Zvcm1hdCA9IEpTT04uAFJldHJ5IHRoZSBzdGF0ZW1lbnQgdXNpbmcgdGhlIHByaW1hcnkgc3RvcmFnZSBlbmdpbmUuAFBhcmFsbGVsIGluaXRpYWxpemF0aW9uIG9mIHJzZWcgY29tcGxldGUAVGltZSB0YWtlbiB0byBpbml0aWFsaXplIHJzZWcgdXNpbmcgJXUgdGhyZWFkOiAldSBtcy4ARERMIGZhaWxlZCB0byBjcmVhdGUgYSB0aHJlYWQgdG8gbG9hZCBhbiBpbmRleCwgZmFsbCBiYWNrIHRvIHNpbmdsZSB0aHJlYWQARGVidWdfY2hlY2tfbm9fbGF0Y2hpbmcgZmFpbGVkLCBzbG90LT50eXBlPSVkAEZhaWxlZCB0byBlc3RhYmxpc2ggTXlTUUwgY2xpZW50IGNvbm5lY3Rpb24gaW4gR3JvdXAgUmVwbGljYXRpb24uIEVycm9yIGVzdGFibGlzaGluZyBjb25uZWN0aW9uLiBQbGVhc2UgcmVmZXIgdG8gdGhlIG1hbnVhbCB0byBtYWtlIHN1cmUgdGhhdCB5b3UgY29uZmlndXJlZCBHcm91cCBSZXBsaWNhdGlvbiBwcm9wZXJseSB0byB3b3JrIHdpdGggTXlTUUwgUHJvdG9jb2wgY29ubmVjdGlvbnMuAEZhaWxlZCB0byBlc3RhYmxpc2ggTXlTUUwgY2xpZW50IGNvbm5lY3Rpb24gaW4gR3JvdXAgUmVwbGljYXRpb24uIEVycm9yIHNlbmRpbmcgY29ubmVjdGlvbiBkZWxlZ2F0aW9uIGNvbW1hbmQuIFBsZWFzZSByZWZlciB0byB0aGUgbWFudWFsIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdSBjb25maWd1cmVkIEdyb3VwIFJlcGxpY2F0aW9uIHByb3Blcmx5IHRvIHdvcmsgd2l0aCBNeVNRTCBQcm90b2NvbCBjb25uZWN0aW9ucy4AVW5hYmxlIHRvIHJlYWQgdGhlIHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGNvbmZpZ3VyYXRpb24gZHVyaW5nIGdyb3VwIG1lbWJlcnNoaXAgY2hhbmdlLiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXInLCAnbXlzcWwucmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXJfbWFuYWdlZCcgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBUaGlzIG1lbWJlciBqb2luZWQgYSBncm91cCBvbiB3aGljaCBhbGwgbWVtYmVycyBkbyBub3Qgc3VwcG9ydCByZXBsaWNhdGlvbiBmYWlsb3ZlciBjaGFubmVscyBpbnRlZ3JhdGlvbiBvbiBHcm91cCBSZXBsaWNhdGlvbiwgYXMgc3VjaCBpdCBkaWQgcmVzZXQgaXRzIHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGRlZmF1bHQgb25lLgBVbmFibGUgdG8gcmVzZXQgdG8gcmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgZGVmYXVsdCBjb25maWd1cmF0aW9uIG9uIG1lbWJlciBqb2luLiBQbGVhc2UgY2hlY2sgdGhlIHRhYmxlcyAnbXlzcWwucmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXInLCAnbXlzcWwucmVwbGljYXRpb25fYXN5bmNocm9ub3VzX2Nvbm5lY3Rpb25fZmFpbG92ZXJfbWFuYWdlZCcgYW5kICdteXNxbC5yZXBsaWNhdGlvbl9ncm91cF9jb25maWd1cmF0aW9uX3ZlcnNpb24nLgBVbmFibGUgdG8gcGFyc2UgdGhlIHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGNvbmZpZ3VyYXRpb24gc2VudCBieSB0aGUgZ3JvdXAgb24gbWVtYmVyIGpvaW4uAFVuYWJsZSB0byBzZXQgU09VUkNFX0NPTk5FQ1RJT05fQVVUT19GQUlMT1ZFUiBvbiBhIG5vbi1leGlzdGVudCBvciBtaXNjb25maWd1cmVkIHJlcGxpY2F0aW9uIGNoYW5uZWwgJyVzJywgcGxlYXNlIGNyZWF0ZSB0aGUgY2hhbm5lbCBhbmQgcmVqb2luIHRoZSBzZXJ2ZXIgdG8gdGhlIGdyb3VwLgBVbmFibGUgdG8gcmVnaXN0ZXIgdGhlIGxpc3RlbmVyICdyZXBsaWNhdGlvbl9hc3luY2hyb25vdXNfY29ubmVjdGlvbl9mYWlsb3Zlcl9jb25maWd1cmF0aW9uJyB0byB0aGUgc2VydmljZSAnZ3JvdXBfcmVwbGljYXRpb25fbWVzc2FnZV9zZXJ2aWNlX3JlY3YnLgBUaGlzIHNlcnZlciBpcyBub3QgYWJsZSB0byByZWFjaCBhIG1ham9yaXR5IG9mIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBUaGlzIHNlcnZlciB3aWxsIHNraXAgdGhlIHJlcGxpY2F0aW9uIGZhaWxvdmVyIGNoYW5uZWxzIGhhbmRsaW5nIHVudGlsIHRoaXMgc2VydmVyIGlzIGJhY2sgdG8gdGhlIGdyb3VwIG1ham9yaXR5LgBUaGlzIHNlcnZlciBpcyBiYWNrIHRvIHRoZSBncm91cCBtYWpvcml0eS4gUmVwbGljYXRpb24gZmFpbG92ZXIgY2hhbm5lbHMgaGFuZGxpbmcgaXMgcmVzdW1lZC4ARXJyb3IgaW5jcmVtZW50aW5nIG1lbWJlciBhY3Rpb24gY29uZmlndXJhdGlvbiB2ZXJzaW9uIGZvciAlcy4lcyB0YWJsZS4AVGhlICclcycgdGhyZWFkIG9mIGNoYW5uZWwgJyVzJyB3aWxsIGVycm9yIG91dCBhcyB0aGlzIHNlcnZlciBpcyBhIGdyb3VwIHNlY29uZGFyeS4AQ2xvbmUgRERMIE5vdGlmaWNhdGlvbjogJXMAQ2xvbmUgRERMIEFQUExZOiAlcwBDbG9uZSBEREwgSW52YWxpZGF0ZSA6ICVzAEVuY3J5cHRpb24ga2V5IGlzIGxvYWRlZCBmb3IgdW5kbyB0YWJsZXNwYWNlICclcycuAElnbm9yaW5nIGVuY3J5cHRpb24gSU5GTyBzaXplIGluIHJlZG8gbG9nOiAlenUsIGV4cGVjdGVkOiAlenUAT3B0aW9uIC0tYXV0aGVudGljYXRpb24tcG9saWN5IGlzIHNldCB0byBhbiBpbnZhbGlkIHZhbHVlLiBQbGVhc2UgY2hlY2sgaWYgdGhlIHNwZWNpZmllZCBhdXRoZW50aWNhdGlvbiBwbHVnaW5zIGFyZSB2YWxpZC4AU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi4AQnVmZmVyIHRvbyBzbWFsbCB0byBob2xkIHJlZ2lzdHJhdGlvbiBjaGFsbGVuZ2UgcmVzcG9uc2UuAEZJRE8gZGV2aWNlIGF1dGhlbnRpY2F0b3IgZGF0YSBjb3JydXB0LgBGSURPIGRldmljZSBzaWduYXR1cmUgY29ycnVwdC4AU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWQgZHVyaW5nIGF1dGhlbnRpY2F0aW9uLgBPdXQgb2YgbWVtb3J5LgBDYW4ndCBpbml0aWFsaXplIGxvZ2dpbmcgc2VydmljZS4AUmVwbGljYXRpb24gY2hhbm5lbCAnJS4xOTJzJyBpcyBjb25maWd1cmVkIHdpdGggR1RJRF9PTkxZPTEsIHdoaWNoIGlzIGludmFsaWQgd2hlbiBHVElEX01PREUgPD4gT04uIElmIHlvdSBpbnRlbmQgdG8gZGlzYWJsZSBHVElEcyBpbiB0aGUgcmVwbGljYXRpb24gdG9wb2xvZ3ksIGNoYW5nZSBHVElEX09OTFkgdG8gMC4AVGhlIHJlcGxpY2F0aW9uIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc291cmNlIG1heSBiZSBvdXQtb2YtZGF0ZSBvbiBjaGFubmVsICclLjE5MnMnLCBkdWUgdG8gdGhlIHVzZSBvZiBHVElEX09OTFk9MS4gVGhlIG91dC1vZi1kYXRlIHBvc2l0aW9ucyBjYW4gc3RpbGwgYmUgdXNlZCBpbiBzb21lIGNhc2VzIHNvLCBpbiBvcmRlciB0byB1cGRhdGUgdGhlbSwgd2Ugc3VnZ2VzdCB0aGF0IHlvdSBzdGFydCB0aGUgcmVwbGljYXRpb24gdG8gcmVjZWl2ZSBhbmQgYXBwbHkgYXQgbGVhc3Qgb25lIHRyYW5zYWN0aW9uLCB3aGljaCB3aWxsIHNldCB0aGUgcG9zaXRpb25zIHRvIHZhbGlkIHZhbHVlcy4AQ291bGQgbm90IG9wZW4gcmVsYXkgbG9nOiAlcwBBdXRoZW50aWNhdGlvbiBwbHVnaW4gbm90IGluaXRpYWxpemVkLgBDYW5ub3QgdXNlIHRoZSBnZW5lcmF0ZWQgcHJpdmF0ZSBrZXkgZmlsZS4AVW5hdmFpbGFibGUgcHVibGljIGtleSB3aXRoIGZpbmdlcnByaW50ICVzIGZvciB1c2VyICVzIGluIHRlbmFuY3kgJXMgLgBDYW5ub3Qgb2J0YWluIHRoZSBPQ0kgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBJTURTIHNlcnZpY2UuAENhbm5vdCBpbml0aWFsaXplIHRoZSBJQU0gc2VydmljZS4ASW52YWxpZCBhdXRoZW50aWNhdGlvbiBzdHJpbmcgZGV0YWlscyBmb3IgdXNlcjogYCVzYEBgJXNgLgBOb25lIG9mIHRoZSBncm91cHMgcmV0dXJuZWQgYnkgSUFNIG1hdGNoZXMgYW55IG9mIHRoZSBlbnRyaWVzIGZyb20gYXV0aGVudGljYXRpb24gc3RyaW5nLgBVc2VyIGlzIG5vdCBwYXJ0IG9mIGFueSBncm91cHMuIEhvd2V2ZXIsIGFjY291bnQgaXMgY29uZmlndXJlZCB0byB1c2UgZ3JvdXAgbWFwcGluZy4AUmVjZWl2ZWQgT3BlblNTTCBlcnJvcjogJXMgd2hpbGUgYXV0aGVudGljYXRpbmcgdXNlciAlcyB3aXRoIGZpbmdlcnByaW50ICVzIGluIHRlbmFuY3kgJXMgLgAlczogV2FybmluZyBMZXZlbCAxICglbGx1IE1pQik6IGF2YWlsYWJsZT0lbGx1IE1pQiwgdG90YWw9JWxsdSBNaUIsIHVzZWQ9JS4yZiUlLCBteXNxbGQ9JWxsdSBNaUIAJXM6IFdhcm5pbmcgTGV2ZWwgMiAoJWxsdSBNaUIpOiBhdmFpbGFibGU9JWxsdSBNaUIsIHRvdGFsPSVsbHUgTWlCLCB1c2VkPSUuMmYlJSwgbXlzcWxkPSVsbHUgTWlCACVzOiBXYXJuaW5nIExldmVsIDMgKCVsbHUgTWlCKTogYXZhaWxhYmxlPSVsbHUgTWlCLCB0b3RhbD0lbGx1IE1pQiwgdXNlZD0lLjJmJSUsIG15c3FsZD0lbGx1IE1pQgBUaGUgbWVtYmVyICVzOiV1LCB3aXRoIFVVSUQ6ICVzLCB3YXMgc2V0IGFzIHRoZSBzaW5nbGUgcHJlZmVycmVkIGNvbnNlbnN1cyBsZWFkZXIuAFNvbWV0aGluZyB3ZW50IHdyb25nIHRyeWluZyB0byBzZXQgdGhlIG1lbWJlciAlczoldSwgd2l0aCBVVUlEOiAlcywgYXMgdGhlIHNpbmdsZSBwcmVmZXJyZWQgY29uc2Vuc3VzIGxlYWRlci4gUGxlYXNlIHF1ZXJ5IHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfY29tbXVuaWNhdGlvbl9pbmZvcm1hdGlvbiB0YWJsZSB0byBzZWUgd2hldGhlciB0aGUgb3BlcmF0aW9uIHRvb2sgZWZmZWN0LCBpLmUuIHdoZXRoZXIgdGhlIHByZWZlcnJlZCBjb25zZW5zdXMgbGVhZGVyIG1hdGNoZXMgdGhlIGN1cnJlbnQgcHJpbWFyeS4gSWYgbm90LCBjb25zaWRlciBlbGVjdGluZyBhIGRpZmZlcmVudCBwcmltYXJ5IHRvIHRyeSBhZ2Fpbi4gUGxlYXNlIGNoZWNrIHRoZSBlcnJvciBsb2cgYW5kIEdDU19ERUJVR19UUkFDRSBmb3IgbW9yZSBpbmZvcm1hdGlvbiB0aGF0IG1heSBoZWxwIHVuZGVyc3RhbmRpbmcgd2hhdCB3ZW50IHdyb25nLgBBbGwgbWVtYmVycyB3ZXJlIHNldCBhcyBjb25zZW5zdXMgbGVhZGVycy4AU29tZXRoaW5nIHdlbnQgd3JvbmcgdHJ5aW5nIHRvIHNldCBhbGwgbWVtYmVycyBhcyBjb25zZW5zdXMgbGVhZGVycy4gUGxlYXNlIHF1ZXJ5IHRoZSBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfY29tbXVuaWNhdGlvbl9pbmZvcm1hdGlvbiB0YWJsZSB0byBzZWUgd2hldGhlciB0aGUgb3BlcmF0aW9uIHRvb2sgZWZmZWN0LCBpLmUuIHdoZXRoZXIgdGhlIGNvbnNlbnN1cyBsZWFkZXJzIG1hdGNoIGFsbCBtZW1iZXJzLiBJZiBub3QsIGNvbnNpZGVyIHJlc2V0dGluZyB0aGUgZ3JvdXAgY29tbXVuaWNhdGlvbiBwcm90b2NvbCB0byBhIHZlcnNpb24gPCA4LjAuMjIsIG9yIHN3aXRjaCB0byBzaW5nbGUtcHJpbWFyeSBtb2RlIGFuZCBiYWNrIGFnYWluIHRvIG11bHRpLXByaW1hcnkgbW9kZSwgdG8gdHJ5IGFnYWluLiBQbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBhbmQgR0NTX0RFQlVHX1RSQUNFIGZvciBtb3JlIGluZm9ybWF0aW9uIHRoYXQgbWF5IGhlbHAgdW5kZXJzdGFuZGluZyB3aGF0IHdlbnQgd3JvbmcuAFRoaXMgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX3BheG9zX3NpbmdsZV9sZWFkZXIgb3B0aW9uIHZhbHVlIG9mICclZCcgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgZ3JvdXAncyB2YWx1ZSAoJyVkJykuIFRoaXMgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBJbnZhbGlkIGFuZC9vciBjb3JydXB0ZWQgbXVsdGkgZmFjdG9yIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgaW4gVXNlcl9hdHRyaWJ1dGVzIGNvbHVtbiBpbiBteXNxbC51c2VyIHRhYmxlLiAiJXMiLgBQbHVnaW4gJyUtLjE5MnMnIGlzIG5vdCBsb2FkZWQ7IElnbm9yaW5nIHVzZXIAJXM6IFRoZSBjaGFyYWN0ZXIgc2V0ICVzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiBQbGVhc2UgY29uc2lkZXIgdXNpbmcgJXMgaW5zdGVhZC4AJXM6ICclLS42NHMnIGlzIGEgY29sbGF0aW9uIG9mIHRoZSBkZXByZWNhdGVkIGNoYXJhY3RlciBzZXQgJXMuIFBsZWFzZSBjb25zaWRlciB1c2luZyAlcyB3aXRoIGFuIGFwcHJvcHJpYXRlIGNvbGxhdGlvbiBpbnN0ZWFkLgBNaXNzaW5nIGRhdGEgZGlyZWN0b3J5IGZvciBJQ1UgcmVndWxhciBleHByZXNzaW9uczogJXMuAE1vcmUgdGhhbiA5MCUlIG9mIGZpbGVzIG9wZW5lZCBvdXQgb2YgdGhlIGlubm9kYl9vcGVuX2ZpbGVzIGxpbWl0IGFyZSBmaWxlcyB0aGF0IGFyZSBub3QgZWFzeSB0byBjbG9zZS4gVGhlIHBlcmZvcm1hbmNlIG9mIHN5c3RlbSBtYXkgZGVncmFkZS4gQ29uc2lkZXIgaW5jcmVhc2luZyB2YWx1ZSBvZiB0aGUgaW5ub2RiX29wZW5fZmlsZXMgc3lzdGVtIHZhcmlhYmxlLiBUaGVyZSBhcmUgJXp1IHN1Y2ggZmlsZXMgb3BlbmVkIG91dCBvZiB0aGUgdG90YWwgbGltaXQgZm9yIGFsbCBmaWxlcyBvcGVuZWQgb2YgJXp1LgBUcnlpbmcgdG8gb3BlbiBhIGZpbGUgZm9yICVsbGQgc2Vjb25kcy4gQ29uZmlndXJhdGlvbiBvbmx5IGFsbG93cyBmb3IgJXp1IG9wZW4gZmlsZXMuIENvbnNpZGVyIHNldHRpbmcgaW5ub2Jhc2Vfb3Blbl9maWxlcyBoaWdoZXIuAENvbm5lY3Rpb24gY2xvc2VkLiBHbG9iYWwgY29ubmVjdGlvbiBtZW1vcnkgbGltaXQgJWxsdSBieXRlcyBleGNlZWRlZC4gQ29uc3VtZWQgJWxsdSBieXRlcy4AQ29ubmVjdGlvbiBjbG9zZWQuIENvbm5lY3Rpb24gbWVtb3J5IGxpbWl0ICVsbHUgYnl0ZXMgZXhjZWVkZWQuIENvbnN1bWVkICVsbHUgYnl0ZXMuAEF1ZGl0IExvZyBpcyBkaXNhYmxlZC4gRW5hYmxlIGl0IHdpdGggYXVkaXRfbG9nX2Rpc2FibGUgPSBmYWxzZS4AT3B0aW9uIC0tdGxzLXZlcnNpb24gb3IgLS1hZG1pbi10bHMtdmVyc2lvbiBpcyBzZXQgdG8gYW4gaW52YWxpZCB2YWx1ZSAlcy4AUmVsYXkgbG9nIHJlY292ZXJ5IG9uIGNoYW5uZWwgd2l0aCBHVElEX09OTFk9MS4gVGhlIGNoYW5uZWwgd2lsbCBzd2l0Y2ggdG8gYSBuZXcgcmVsYXkgbG9nIGFuZCB0aGUgR1RJRCBwcm90b2NvbCB3aWxsIGJlIHVzZWQgdG8gcmVwbGljYXRlIHVuYXBwbGllZCB0cmFuc2FjdGlvbnMuAE51bWJlciBvZiBTVEFOREJZX1NFUlZFUiB2YWx1ZXMgZXhjZWVkZWQgbWF4aW11bSBsaW1pdCBvZiA2NC4AU291cmNlIGtleXJpbmcgZG9lcyBub3QgaGF2ZSBhbnkga2V5cyB0byBtaWdyYXRlLgBDYW5ub3QgcGVyc2lzdCBTRU5TSVRJVkUgc3lzdGVtIHZhcmlhYmxlcyBiZWNhdXNlIGtleXJpbmcgY29tcG9uZW50IHN1cHBvcnQgaXMgdW5hdmFpbGFibGUgYW5kIHBlcnNpc3Rfc2Vuc2l0aXZlX3ZhcmlhYmxlc19pbl9wbGFpbnRleHQgaXMgc2V0IHRvIE9GRi4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IGtleXJpbmcgc2VydmljZXMgYXJlIGFjdGl2ZSBhbmQgcmVxdWlyZWQga2V5cyBhcmUgYXZhaWxhYmxlLgBDYW5ub3QgaW50ZXJwcmV0IHBlcnNpc3RlZCBTRU5TSVRJVkUgc3lzdGVtIHZhcmlhYmxlcy4gUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IGtleXJpbmcgc2VydmljZXMgYXJlIGFjdGl2ZSBhbmQgcmVxdWlyZWQga2V5cyBhcmUgYXZhaWxhYmxlLgBLZXlyaW5nIGhhcyB0byBiZSBsb2FkZWQgdGhyb3VnaCBtYW5pZmVzdCBmaWxlIGluIG9yZGVyIHRvIHN1cHBvcnQgc2VjdXJlIHN0b3JhZ2UgZm9yIHBlcnNpc3RlZCB2YXJpYWJsZXMAQ291bGQgbm90IGZpbmQgbWFzdGVyIGtleSAlcyBpbiBrZXlyaW5nAEEgbmV3IG1hc3RlciBrZXkgJXMgY291bGQgbm90IGJlIGdlbmVyYXRlZABGYWlsZWQgdG8gZW5jcnlwdCAlcyB1c2luZyAlcwBGYWlsZWQgdG8gZGVjcnlwdCAlcyB1c2luZyAlcwBQZXJzaXN0aW5nIFNFTlNJVElWRSB2YXJpYWJsZXMgaW4gZW5jcnlwdGVkIGZvcm0gcmVxdWlyZXMga2V5cmluZyBjb21wb25lbnQgbG9hZGVkIHRocm91Z2ggbWFuaWZlc3QgZmlsZS4AVXNpbmcgamVtYWxsb2MuZGxsIGZvciBteV9tYWxsb2MgYW5kIHV0OjptYWxsb2MgZXRjLgAlcy4AJXMuACVzLgBQYXNzd29yZCBmb3IgdGhlIGFjY291bnQgJyUtLjQ4cydAJyUtLjY0cycgaGFzIGV4cGlyZWQuIFRvIGxvZyBpbiwgZWl0aGVyIGNoYW5nZSBpdCB1c2luZyBhIGNsaWVudCB0aGF0IHN1cHBvcnRzIGV4cGlyZWQgcGFzc3dvcmRzIG9yIHNlbmQgdGhlIGNoYW5nZSByZXF1ZXN0IHRvIGFuIGFkbWluaXN0cmF0b3IuAFRocmVhZCBwb29sIHBsdWdpbiBzdGFydGVkIHN1Y2Nlc3NmdWxseSB3aXRoIHBhcmFtZXRlcnM6ICVzAHRocmVhZF9wb29sX2RlZGljYXRlZF9saXN0ZW5lcnMgY2Fubm90IGJlIHNldCB1bmxlc3MgdGhyZWFkX3Bvb2xfbWF4X3RyYW5zYWN0aW9uc19saW1pdCA+IDAAJXMAJXMAVGhlIHJlZG8gbG9nIGZpbGUgJXMgaXMgZW1wdHksIHdoaWNoIGluZGljYXRlcyBpdCB3YXMgbm90IGdlbmVyYXRlZCBieSBJbm5vREIgb3IgYmVjb21lIGNvcnJ1cHRlZC4gUGxlYXNlIHJlc3RvcmUgdGhlIGNvcnJlY3QgZmlsZSBvciB0cnkgcmVjb3ZlcmluZyB3aXRob3V0IHRoZSByZWRvIGZpbGVzLCBpbiByZWFkLW9ubHkgbW9kZSwgYnkgcHJvdmlkaW5nIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5PTYuAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIHNtYWxsZXIgdGhhbiAlbGx1IGJ5dGVzLCB3aGljaCBpbmRpY2F0ZXMgaXQgd2FzIG5vdCBnZW5lcmF0ZWQgYnkgSW5ub0RCIG9yIGJlY29tZSBjb3JydXB0ZWQuIFBsZWFzZSByZXN0b3JlIHRoZSBjb3JyZWN0IGZpbGUuAFRoZSByZWRvIGxvZyBmaWxlICVzIGlzIGxhcmdlciB0aGFuICVsbHUgYnl0ZXMsIHdoaWNoIGluZGljYXRlcyBpdCB3YXMgbm90IGdlbmVyYXRlZCBieSBJbm5vREIgb3IgYmVjb21lIGNvcnJ1cHRlZC4gUGxlYXNlIHJlc3RvcmUgdGhlIGNvcnJlY3QgZmlsZS4ARmFpbGVkIHRvIHJlYWQgaGVhZGVyIG9mIHRoZSByZWRvIGxvZyBmaWxlICVzAC0taW5pdGlhbGl6ZSBzcGVjaWZpZWQgYnV0IHRoZSByZWRvIGxvZyBkaXJlY3RvcnkgJXMgaGFzIHJlZG8gbG9nIGZpbGVzIGluc2lkZS4gQWJvcnRpbmcuAEZhaWxlZCB0byBsaXN0IHJlZG8gbG9nIGZpbGVzIGluIHRoZSByZWRvIGxvZyBkaXJlY3RvcnkgJXMATmVpdGhlciBmb3VuZCAlcyBzdWJkaXJlY3RvcnksIG5vciAlcyogZmlsZXMgaW4gJXMAQ2Fubm90IHJlc3RvcmUgY2xvbmVkIGRhdGEgZGlyZWN0b3J5LCBJbm5vREIgcnVubmluZyBpbiByZWFkLW9ubHkgbW9kZSEARXJyb3IgJWQgZW5jb3VudGVyZWQgd2hlbiB3cml0aW5nIHRvIHRoZSByZWRvIGxvZyBmaWxlOiAlcy4AUmVkbyBsb2cgd3JpdGVyIGlzIHdhaXRpbmcgZm9yIGEgbmV3IHJlZG8gbG9nIGZpbGUuIENvbnNpZGVyIGluY3JlYXNpbmcgaW5ub2RiX3JlZG9fbG9nX2NhcGFjaXR5LgBGb3VuZCBjaGVja3BvaW50IExTTiAlbGx1IGluIGEgcmVkbyBsb2cgZmlsZSAlcywgYnV0IHRoZSBmaWxlIHJlcHJlc2VudHMgcmFuZ2Ugb2YgTFNOIHZhbHVlcyBbJWxsdSwgJWxsdSksIHNvIHRoZSBmaWxlIGlzIGNvcnJ1cHRlZC4AUmVkbyBsb2cgaXMgcnVubmluZyBvdXQgb2YgZnJlZSBzcGFjZSwgcGF1c2luZyB1c2VyIHRocmVhZHMuLi4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuAFJlZG8gbG9nIHJlY2xhaW1lZCBzb21lIGZyZWUgc3BhY2UsIHJlc3VtaW5nIHVzZXIgdGhyZWFkcy4ASWdub3JlZCBkZXByZWNhdGVkIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlubm9kYl9sb2dfZmlsZV9zaXplLiBVc2VkIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSBpbnN0ZWFkLgBJZ25vcmVkIGRlcHJlY2F0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaW5ub2RiX2xvZ19maWxlc19pbl9ncm91cC4gVXNlZCBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgaW5zdGVhZC4AQ2Fubm90IHVwZ3JhZGUgZm9ybWF0ICh2JWx1KSBvZiByZWRvIGxvZyBmaWxlcyB3aGVuIGlubm9kYi1mb3JjZS1yZWNvdmVyeSA+IDAuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgaW4gcmVhZC1vbmx5IG1vZGUgKC0taW5ub2RiLXJlYWQtb25seSkuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgb24gY2xvbmVkIGRhdGEgZGlyZWN0b3J5LiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIGJlY2F1c2UgdGhleSBhcmUgbWFya2VkIGFzIHVuaW5pdGlhbGl6ZWQuIFBsZWFzZSB1c2UgYW4gb2xkZXIgdmVyc2lvbiBvZiBNeVNRTCAtIHJlY292ZXIgYW5kIHNodXRkb3duICh3aXRoIGlubm9kYi1mYXN0LXNodXRkb3duIDwgMikuAENhbm5vdCB1cGdyYWRlIGZvcm1hdCAodiVsdSkgb2YgcmVkbyBsb2cgZmlsZXMgd2hlbiB0aGUgcmVkbyBsb2cgaXMgY29ycnVwdGVkLiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzIHdoZW4gdGhlcmUgaXMgbm9uLXBlcnNpc3RlZCBERCBtZXRhZGF0YSBpbiByZWRvLiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBDYW5ub3QgdXBncmFkZSBmb3JtYXQgKHYlbHUpIG9mIHJlZG8gbG9nIGZpbGVzLCBiZWNhdXNlIElubm9EQiBmYWlsZWQgdG8gcmVhY2ggc3RhdGUgaW4gd2hpY2ggcmVkbyBsb2cgaXMgbG9naWNhbGx5IGVtcHR5LiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBGYWlsZWQgdG8gcmVzaXplIHRoZSByZWRvIGxvZyBzeW5jaHJvbm91c2x5LCBiZWNhdXNlIElubm9EQiBmYWlsZWQgdG8gcmVhY2ggc3RhdGUgaW4gd2hpY2ggcmVkbyBsb2cgaXMgbG9naWNhbGx5IGVtcHR5LiBQbGVhc2UgdXNlIGFuIG9sZGVyIHZlcnNpb24gb2YgTXlTUUwgLSByZWNvdmVyIGFuZCBzaHV0ZG93biAod2l0aCBpbm5vZGItZmFzdC1zaHV0ZG93biA8IDIpLgBUaGUgcmVkbyBsb2cgZmlsZSAlcyBjb21lcyBmcm9tIG90aGVyIGRhdGEgZGlyZWN0b3J5IHRoYW4gcmVkbyBsb2cgZmlsZSAlcy4AVGhlIHJlZG8gbG9nIGZpbGUgJXMgaGFzIGludmFsaWQgc3RhcnRfbHNuICVsbHUuAFRoZSByZWRvIGxvZyBmaWxlICVzIGhhcyBzdGFydF9sc24gJWxsdSBidXQgZXhwZWN0ZWQgJWxsdSAoZW5kX2xzbiBvZiB0aGUgcHJldmlvdXMgcmVkbyBsb2cgZmlsZSkuAE1pc3NpbmcgcmVkbyBsb2cgZmlsZSAlcyAod2l0aCBzdGFydF9sc24gPSAlbGx1KS4AVGhlIGxhdGVzdCBmb3VuZCBjaGVja3BvaW50IGlzIGF0IGxzbiA9ICVsbHUgaW4gcmVkbyBsb2cgZmlsZSAlcy4AVXNlciBoYXMgc2V0IGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSB0byAlbGx1TS4AUmVkbyBsb2cgaGFzIGJlZW4gcmVxdWVzdGVkIHRvIHJlc2l6ZSBmcm9tICVsbHVNIHRvICVsbHVNLgBSZWRvIGxvZyByZXNpemUgaGFzIGJlZW4gY2FuY2VsbGVkLgBSZWRvIGxvZyBoYXMgYmVlbiByZXNpemVkIHRvICVsbHVNLgBVcGdyYWRpbmcgcmVkbyBsb2c6ICVsbHVNLCBMU049JWxsdS4ATWFya2VkIHRoZSBjdXJyZW50IHJlZG8gbG9nIGZpbGUgJXMgYXMgaW5jb21wbGV0ZS4ARmFpbGVkIHRvIHJlbW92ZSByZWRvIGxvZyBmaWxlICVzLgBGYWlsZWQgdG8gcmVuYW1lICVzIHdoZW4gY3JlYXRpbmcgcmVkbyBsb2cgZmlsZSAlcyAoZXJyb3I6ICVkKQBSZWRvIGxvZyBmaWxlcyBjcmVhdGVkIGJ5IHVua25vd24gY3JlYXRvciAlcy4ARm91bmQgZXhpc3RpbmcgcmVkbyBsb2cgZmlsZXMsIGJ1dCBhdCBsZWFzdCBvbmUgaXMgbWlzc2luZy4gSXQgaXMgdW5rbm93biBpZiByZWNvdmVyeSBjb3VsZCByZWFjaCBwaHlzaWNhbGx5IGNvbnNpc3RlbnQgc3RhdGUuIFBsZWFzZSBjb25zaWRlciByZXN0b3JpbmcgZnJvbSBiYWNrdXAgb3IgcHJvdmlkaW5nIC0taW5ub2RiLWZvcmNlLXJlY292ZXJ5ID4gMC4ARm91bmQgcmVkbyBsb2cgZmlsZSAlcyB3aGljaCBoYXMgZm9ybWF0ICh2JWx1KSBhbmQgaXMgc3RvcmVkIG91dHNpZGUgI2lubm9kYl9yZWRvLgBGb3VuZCByZWRvIGxvZyBmaWxlICVzIHdoaWNoIGhhcyBmb3JtYXQgKHYlbHUpIGFuZCBpcyBzdG9yZWQgaW5zaWRlICNpbm5vZGJfcmVkby4ARm91bmQgcmVkbyBsb2cgZmlsZXMgd2l0aCBkaWZmZXJlbnQgZm9ybWF0czogJXMgaGFzIGZvcm1hdCB2JWx1LCAlcyBoYXMgZm9ybWF0IHYlbHUuAE1pc3NpbmcgaWJfbG9nZmlsZTAgaW4gdGhlIGRpcmVjdG9yeSAlcy4ARmFpbGVkIHRvIGluaXRpYWxpemUgc2VydmljZXMgcmVxdWlyZWQgdG8gaGFuZGxlIHJlZG8gbG9nIFBGUyB0YWJsZXMuAEZhaWxlZCB0byBjcmVhdGUgcmVkbyBsb2cgUEZTIHRhYmxlcy4AVHJ1bmNhdGluZyByZWRvIGxvZyBmaWxlICVzLi4uAEZhaWxlZCB0byByZXNpemUgdW51c2VkIHJlZG8gbG9nIGZpbGUgJXMgdG8gJWxsdSBNQiAoJXMpLgBGYWlsZWQgdG8gcmVtb3ZlIHVudXNlZCByZWRvIGxvZyBmaWxlICVzLgBGYWlsZWQgdG8gcmVuYW1lIHVudXNlZCByZWRvIGxvZyBmaWxlICVzIHRvICVzLgBGYWlsZWQgdG8gbWFyayB1bnVzZWQgcmVkbyBsb2cgZmlsZSAlcyBhcyBpbiB1c2UgKGJ5IHJlbmFtaW5nIHRvICVzKS4ARmFpbGVkIHRvIG1hcmsgcmVkbyBsb2cgZmlsZSAlcyBhcyB1bnVzZWQgKGJ5IHJlbmFtaW5nIHRvICVzKS4AT3B0aW9uIGlubm9kYl9kZWRpY2F0ZWRfc2VydmVyIGlzIGlnbm9yZWQgZm9yIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eSwgYmVjYXVzZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHksIGlubm9kYl9sb2dfZmlsZV9zaXplIG9yIGlubm9kYl9sb2dfZmlsZXNfaW5fZ3JvdXAgaXMgc3BlY2lmaWVkIGV4cGxpY2l0bHkuIFJlZG8gbG9nIGNhcGFjaXR5OiAlbGx1TS4ARGVwcmVjYXRlZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgaW5ub2RiX2xvZ19maWxlX3NpemUgYW5kL29yIGlubm9kYl9sb2dfZmlsZXNfaW5fZ3JvdXAgaGF2ZSBiZWVuIHVzZWQgdG8gY29tcHV0ZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHk9JWxsdS4gUGxlYXNlIHVzZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkgaW5zdGVhZC4AVGhpcyBtZW1iZXIgd2FzIHVuYWJsZSB0byBsb2cgdGhlIFZpZXdfY2hhbmdlX2xvZ19ldmVudCBpbnRvIHRoZSBiaW5hcnkgbG9nLCBoZW5jZSBpdCB3aWxsIGxlYXZlIHRoZSBncm91cC4gUGxlYXNlIGNoZWNrIHRoYXQgdGhlcmUgaXMgYXZhaWxhYmxlIGRpc2sgc3BhY2UgYW5kIGFkZCB0aGUgbWVtYmVyIGJhY2sgdG8gdGhlIGdyb3VwLgBGb3VuZCBpbnZhbGlkIGV2ZW50IHNlcXVlbmNlIHdoaWxlIHJlY292ZXJpbmcgZnJvbSBiaW5hcnkgbG9nIGZpbGUgJyVzJywgYmV0d2VlbiBwb3NpdGlvbnMgJWxsdSBhbmQgJWxsdTogJXMuIFRoZSByZWNvdmVyeSBwcm9jZXNzIHdhcyBzdG9wcGVkIGVhcmx5IGFuZCBubyB0cmFuc2FjdGlvbiB3YXMgcmVjb3ZlcmVkLiBTaWRlIGVmZmVjdHMgbWF5IGJlIHRyYW5zYWN0aW9ucyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgYmV0d2VlbiB0aGUgYmluYXJ5IGxvZyBhbmQgdGhlIHN0b3JhZ2UgZW5naW5lcywgb3IgdHJhbnNhY3Rpb25zIGtlcHQgYnkgc3RvcmFnZSBlbmdpbmVzIGluIGEgcHJlcGFyZWQgc3RhdGUgKHBvc3NpYmx5IGhvbGRpbmcgbG9ja3MpLiBFaXRoZXIgZml4IHRoZSBpc3N1ZXMgd2l0aCB0aGUgYmluYXJ5IGxvZyBvciwgdG8gcmVsZWFzZSBwb3NzaWJseSBhY3F1aXJlZCBsb2NrcywgZGlzYWJsZSB0aGUgYmluYXJ5IGxvZyBkdXJpbmcgc2VydmVyIHJlY292ZXJ5LiBOb3RlIHRoYXQgZGlzYWJsaW5nIHRoZSBiaW5hcnkgbG9nIG1heSBsZWFkIHRvIGxvc3Mgb2YgdHJhbnNhY3Rpb25zIHRoYXQgd2VyZSBhbHJlYWR5IGFja25vd2xlZGdlZCBhcyBzdWNjZXNzZnVsIHRvIGNsaWVudCBjb25uZWN0aW9ucyBhbmQgbWF5IGhhdmUgYmVlbiByZXBsaWNhdGVkIHRvIG90aGVyIHNlcnZlcnMgaW4gdGhlIHRvcG9sb2d5LgBTdG9yYWdlIGVuZ2luZXMgZmFpbGVkIHRvIHJlY292ZXIgb25lIG9yIG1vcmUgdHJhbnNhY3Rpb25zLiBUaGUgcmVjb3ZlcnkgcHJvY2VzcyB3YXMgc3RvcHBlZCBlYXJseSwgY2hlY2sgcHJldmlvdXMgbWVzc2FnZXMgZm9yIHRoZSBkZXRhaWxzIG9uIGZhaWxlZCB0cmFuc2FjdGlvbnMuIFNpZGUgZWZmZWN0cyBtYXkgYmUgdHJhbnNhY3Rpb25zIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSBiZXR3ZWVuIHRoZSBiaW5hcnkgbG9nIGFuZCB0aGUgc3RvcmFnZSBlbmdpbmVzLCBvciB0cmFuc2FjdGlvbnMga2VwdCBieSBzdG9yYWdlIGVuZ2luZXMgaW4gYSBwcmVwYXJlZCBzdGF0ZSAocG9zc2libHkgaG9sZGluZyBsb2NrcykuIEVpdGhlciBmaXggdGhlIGlzc3VlcyB3aXRoIHRoZSBzdG9yYWdlIGVuZ2luZSAob3V0LW9mLW1lbW9yeSwgbm8gZGlzayBzcGFjZSwgZXRjKSBvciwgdG8gcmVsZWFzZSBwb3NzaWJseSBhY3F1aXJlZCBsb2NrcyBoZWxkIGJ5IFhBIHRyYW5zYWN0aW9ucywgZGlzYWJsZSB0aGUgYmluYXJ5IGxvZyBkdXJpbmcgc2VydmVyIHJlY292ZXJ5IGFuZCBjaGVjayBjb25zaXN0ZW5jeSBiZXR3ZWVuIHN0b3JhZ2UgZW5naW5lcyBhbmQgYmluYXJ5IGxvZyBmaWxlcy4AQ3Jhc2ggcmVjb3ZlcnkgZmluaXNoZWQgaW4gJXMgZW5naW5lLiAlcwBGYWlsZWQgdG8gY29tbWl0ICVzIGluICVzLCB3aXRoIGZhaWx1cmUgY29kZSAlcy4ARmFpbGVkIHRvIHJvbGxiYWNrICVzIGluICVzLCB3aXRoIGZhaWx1cmUgY29kZSAlcy4ARmFpbGVkIHRvIHByZXBhcmUgJXMgaW4gJXMsIHdpdGggZmFpbHVyZSBjb2RlICVzLgBDYW5ub3QgcmVnaXN0ZXIgdmFyaWFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgYW5vdGhlciBjb21wb25lbnQuAENhbm5vdCB1bnJlZ2lzdGVyIHZhcmlhYmxlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCB3YXMgcmVnaXN0ZXJlZCBwcm9wZXJseSBpbiB0aGUgZmlyc3QgcGxhY2UuAENhbm5vdCByZWdpc3RlciBmdW5jdGlvbiAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZC4AQ2Fubm90IHVucmVnaXN0ZXIgZnVuY3Rpb24gJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IHdhcyByZWdpc3RlcmVkIHByb3Blcmx5IGluIHRoZSBmaXJzdCBwbGFjZS4ASW52YWxpZCBhcmd1bWVudHMgdG8gZnVuY3Rpb24gJyVzJy4gRXhwZWN0ZWQgdmFsdWVzOiAlcy4ASW52YWxpZCBhbGdvcml0aG0gdmFsdWUgJyUuMjBzJyBpbiBmdW5jdGlvbiAlcy4ASW52YWxpZCBrZXkgbGVuZ3RoICclZCcgZm9yIGZ1bmN0aW9uICclcycgd2l0aCBhbGdvcml0aG0gJyUuMjBzJy4gUGxlYXNlIHByb3ZpZGUgYSB2YWx1ZSBiZXR3ZWVuIFslZCwgJWRdLgBGYWlsZWQgdG8gZ2VuZXJhdGUgcHJpdmF0ZSBrZXkgb2YgbGVuZ3RoICclZCcgd2l0aCBhbGdvcml0aG0gJyUuMjBzJyBpbiBmdW5jdGlvbiAnJXMnLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgYmVlbiBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4ARmFpbGVkIHRvIGdlbmVyYXRlIHB1YmxpYyBrZXkgd2l0aCBhbGdvcml0aG0gJyUuMjBzJyBmb3IgZ2l2ZW4gcHJpdmF0ZSBrZXkgaW4gZnVuY3Rpb24gJyVzJy4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBlcnJvciB3b3VsZCBoYXZlIGJlZW4gbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAEludmFsaWQgZGF0YSBsZW5ndGggJyVkJyAoaW4gYnl0ZXMpIGZvciBmdW5jdGlvbiAnJXMnIHdpdGggYWxnb3JpdGhtICclLjIwcycuIFRoZSBtYXhpbXVtIHN1cHBvcnQgZGF0YSBsZW5ndGggZm9yIGdpdmVuIHByaXZhdGUga2V5IGlzICVkIChpbiBieXRlcykuAENvdWxkIG5vdCBlbmNyeXB0IGRhdGEgaW4gZnVuY3Rpb24gJyVzJyB1c2luZyBhbGdvcml0aG0gJyUuMjBzJy4gRGF0YSBsZW5ndGggd2FzICclZCcgYnl0ZXMuIE1vcmUgZGV0YWlscyBhYm91dCB0aGUgZXJyb3Igd291bGQgaGF2ZSBiZWVuIGxvZ2dlZCBiZWZvcmUgdGhpcyBtZXNzYWdlLgBDb3VsZCBub3QgZGVjcnlwdCBkYXRhIGluIGZ1bmN0aW9uICclcycgdXNpbmcgYWxnb3JpdGhtICclLjIwcycuIERhdGEgbGVuZ3RoIHdhcyAnJWQnIGJ5dGVzLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgYmVlbiBsb2dnZWQgYmVmb3JlIHRoaXMgbWVzc2FnZS4AQ291bGQgbm90IHNpZ24gZGF0YSBpbiBmdW5jdGlvbiAnJXMnIHVzaW5nIGFsZ29yaXRobSAnJS4yMHMnIGFuZCBkaWdlc3QgdHlwZSAnJS4yMHMnLiBNb3JlIGRldGFpbHMgYWJvdXQgdGhlIGVycm9yIHdvdWxkIGhhdmUgbG9nZ2VkIGJlZm9yZSB0aGlzIG1lc3NhZ2UuAFJlY2VpdmVkIE9wZW5TU0wgZXJyb3IgaW4gZnVuY3Rpb24gJyVzJyBmb3IgYWxnb3JpdGhtICclcyc6ICclcycASW4gZnVuY3Rpb24gJyVzJyB3aXRoIGFsZ29yaXRobSAnJXMnOiBpbnN1ZmZpY2llbnQgb3V0cHV0IGJ1ZmZlciBsZW5ndGggJyV6dScuIFJlcXVpcmVkIGxlbmd0aCAnJXp1Jy4AJXMlcwBTZXR0aW5nIHNlc3Npb24gdmFsdWVzIGZvciBzeXN0ZW0gdmFyaWFibGVzIG9ubHkgbWFrZXMgc2Vuc2UgaW4gYSB1c2VyIHNlc3Npb24gKGZhaWxlZCB0byBzZXQgJyUuMjU2cycpLgBCdWlsZElEW3NoYTFdPSVzAEZhaWxlZCB0byByZWdpc3RlciBkeW5hbWljIHByaXZpbGVnZSAlcy4AUmVkbyBsb2cgd3JpdGVyIGlzIHdhaXRpbmcgZm9yICVzIHJlZG8gbG9nIGNvbnN1bWVyIHdoaWNoIGlzIGN1cnJlbnRseSByZWFkaW5nIExTTj0lbGx1IHByZXZlbnRpbmcgcmVjbGFtYXRpb24gb2Ygc3Vic2VxdWVudCBwb3J0aW9uIG9mIHRoZSByZWRvIGxvZy4gQ29uc2lkZXIgaW5jcmVhc2luZyBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuACVzAFJlY292ZXJ5OiBHZW5lcmF0aW5nIGluZGV4IGluZm9ybWF0aW9uIGZvciBJTlNUQU5UIERETCBUYWJsZSBpbiA4LjAuMjkgZm9ybWF0AEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuICVzAEZhaWxlZCB0byBzd2l0Y2ggcmVzb3VyY2UgZ3JvdXAuIENvdWxkIG5vdCBhY3F1aXJlIHJlc291cmNlIGdyb3VwcyBnbG9iYWwgbG9jay4ARmFpbGVkIHRvIHN3aXRjaCByZXNvdXJjZSBncm91cC4gQ291bGQgbm90IGFjcXVpcmUgbG9jayBvbiByZXNvdXJjZSBncm91cCAlcy4ARmFpbGVkIHRvIHN3aXRjaCByZXNvdXJjZSBncm91cC4gVW5hYmxlIHRvIGFwcGx5IHJlc291cmNlIGdyb3VwIGNvbnRyb2xsZXIgJXMuAEZhaWxlZCB0byBjbGVhciBpbnN0YW50IGRyb3AgY29sdW1uIG1ldGFkYXRhIGZvciB0YWJsZSAlcwBDYW5ub3Qgb3BlbiBzaWduaW5nIGtleSBmaWxlICVzLgBPdXQgb2YgbWVtb3J5ISBDYW5ub3QgY3JlYXRlIHByaXZhdGUga2V5LgBDYW5ub3QgcmVhZCBzaWduaW5nIGtleSBmaWxlICVzLgBJbmNvbXBsZXRlIGtleTogbWlzc2luZyBOYW1lL1R5cGUgZm9yIHRoZSBLZXk6ICVzLgBEdXBsaWNhdGUga2V5IGZvdW5kIGluIGtleXJpbmcgd2l0aCBOYW1lOiAlcyBhbmQgT3duZXI6ICVzLgBFcnJvciBwYXJzaW5nIEpTT04gcmVzcG9uc2UgJXMuAEludmFsaWQgSlNPTiByZXNwb25zZSEASFRUUCByZXF1ZXN0IGZhaWxlZCB3aXRoIGVycm9yOiAnJXMnAFZhcmlhYmxlIHRocmVhZF9wb29sLiVzIHdhcyB1cGRhdGVkOiAlcwAlcwBTdGF0dXMgY29kZSAldTogQ29tcGxldGVkAFN0YXR1cyBjb2RlICV1OiAldSUlIGNvbXBsZXRlAFN0YXR1cyBjb2RlICV1OiAlcwBJbnZhbGlkIHZhbHVlIHNldCB0byB0aHJlYWRfcG9vbF9xdWVyeV90aHJlYWRzX3Blcl9ncm91cC4gVmFsaWQgdmFsdWUgcmFuZ2UgaXMgJXUgLSAldS4AUXVlcnkgdGhyZWFkcyBjb3VudCgldSkgZXhjZWVkcyB0cmFuc2FjdGlvbiB0aHJlYWRzIGxpbWl0KCV1KSBwZXIgZ3JvdXAuIFBsZWFzZSB1c2UgcXVlcnkgdGhyZWFkcyBjb3VudCBwZXIgZ3JvdXAgc21hbGxlciBvciBlcXVhbCB0byBtYXggdHJhbnNhY3Rpb24gdGhyZWFkcyBsaW1pdCBwZXIgZ3JvdXAARm91bmQgcGFnZSB0eXBlIG1pc21hdGNoLiBFeHBlY3RlZCAldSwgZm91bmQgJXUsIGluIHBhZ2U6IHNwYWNlX2lkPSVsdSBwYWdlX25vPSAlbHUAcHJlYWRlcjogdGhyZWFkX2lkPSV6dSwgbl90aHJlYWRzPSV6dSwgbl9jdHg9JXp1LCBvbmVfcmFuZ2VfcGVyX3RocmVhZD0lcywgbl9pbmRleD0lenUsIGluZGV4X2xpc3Q9JXMsIGVycj0lenUAYnVsa2xvYWQ6IHNwYWNlX2lkPSV6dSwgdGFibGU9JXMsIGluZGV4PSVzLCBoZWlnaHQ9JXp1LCBuX2V4dGVudHM9JXp1LCBuX3BhZ2VzPSV6dQBidWxrZmx1c2hlcjogc2xlZXBfY291bnQ9JXp1LCBzbGVlcF9kdXJhdGlvbj0lenUgbWlsbGlzZWNvbmRzLCB0b3RhbF9zbGVlcD0lenUgbWlsbGlzZWNvbmRzLCBwYWdlc19mbHVzaGVkPSV6dQAlczogT3ZlciA2NyBwZXJjZW50IG9mIHRoZSBidWZmZXIgcG9vbCAoY3Vycl9zaXplPSV6dSBNQikgaXMgb2NjdXBpZWQgYnkgbG9jayBoZWFwcyBvciB0aGUgYWRhcHRpdmUgaGFzaCBpbmRleCBvciBCVUZfQkxPQ0tfTUVNT1JZIHBhZ2VzLiBDaGVjayB0aGF0IHlvdXIgdHJhbnNhY3Rpb25zIGRvIG5vdCBzZXQgdG9vIG1hbnkgcm93IGxvY2tzLiBNYXliZSB5b3Ugc2hvdWxkIG1ha2UgdGhlIGJ1ZmZlciBwb29sIGJpZ2dlcj8uIFN0YXJ0aW5nIHRoZSBJbm5vREIgTW9uaXRvciB0byBwcmludCBkaWFnbm9zdGljcy4AJXM6IE92ZXIgOTUgcGVyY2VudCBvZiB0aGUgYnVmZmVyIHBvb2wgKGN1cnJfc2l6ZT0lenUgTUIpIGlzIG9jY3VwaWVkIGJ5IGxvY2sgaGVhcHMgb3IgdGhlIGFkYXB0aXZlIGhhc2ggaW5kZXggb3IgQlVGX0JMT0NLX01FTU9SWSBwYWdlcy4gQ2hlY2sgdGhhdCB5b3VyIHRyYW5zYWN0aW9ucyBkbyBub3Qgc2V0IHRvbyBtYW55IHJvdyBsb2Nrcy4gTWF5YmUgeW91IHNob3VsZCBtYWtlIHRoZSBidWZmZXIgcG9vbCBiaWdnZXI/LiBXZSBpbnRlbnRpb25hbGx5IGdlbmVyYXRlIGEgc2VnIGZhdWx0IHRvIHByaW50IGEgc3RhY2sgdHJhY2Ugb24gTGludXghACVzOiB0YWJsZT0lcywgaW5kZXg9JXMsIG5fdW5pcT0lenUsIG5fZmllbGRzPSV6dSwgbGhzPSglcyksIHJocz0oJXMpAEZhaWxlZCB0byBhcHBseSByb3cgZXZlbnQgd2l0aCAlZCBjb2x1bW5zLCBvcmlnaW5hdGluZyBmcm9tIGEgc2VydmVyIG9mIHZlcnNpb24gJXMgb24gdGFibGUgJyUtLjE5MnMuJS0uMTkycycsIHdoaWNoIGhhcyAlZCBjb2x1bW5zLCBvbmUgb2Ygd2hpY2ggaXMgYSBnZW5lcmF0ZWQgaW1wbGljaXQgcHJpbWFyeSBrZXkuIFJlcGxpY2F0aW9uIGlzIHVuc3VwcG9ydGVkIHdoZW4gdGhlIHNvdXJjZSBzZXJ2ZXIgaXMgb2xkZXIgdGhhbiA4LjAuMzAsIHRoZSByZXBsaWNhIHRhYmxlIGhhcyBhIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleSwgYW5kIHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBjb2x1bW4gY291bnQsIG5vdCBjb3VudGluZyB0aGUgcmVwbGljYSdzIGdlbmVyYXRlZCBpbXBsaWNpdCBwcmltYXJ5IGtleS4gQWxpZ24gdGhlIHRhYmxlIHNjaGVtYXMgb24gc291cmNlIGFuZCByZXBsaWNhLCBhbmQgcmVzdGFydCByZXBsaWNhdGlvbi4AQnVsayBleGVjdXRvcjogJXMAQnVsayBsb2FkZXI6ICVzAFRoZSBmaXJzdCBmaWxlIGJlaW5nIGxvYWRlZCBjb250YWluZWQgbGVzcyBsaW5lcyB0aGFuIHRoZSBpZ25vcmUgY2xhdXNlAEJ1bGsgcmVhZGVyOiAlcwBCdWxrIHJlYWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBsaWJjdXJsAEJ1bGsgcmVhZGVyIGdvdCBsaWJjdXJsIGVycm9yOiAlcwBCdWxrIHJlYWRlciBnb3QgZXJyb3IgcmVzcG9uc2UgZnJvbSBzZXJ2ZXI6ICVsZABCdWxrIHJlYWRlciBnb3QgZXJyb3IgaW4gY29tbXVuaWNhdGlvbiB3aXRoIHNvdXJjZSBzZXJ2ZXIsIGNoZWNrIHRoZSBlcnJvciBsb2cgZm9yIGFkZGl0aW9uYWwgZGV0YWlscwBNaXNzaW5nIEVOQ0xPU0VEIEJZIGNoYXJhY3RlciBhdCByb3cgJWxkIGluIGZpbGUgJXMuIEFkZCBPUFRJT05BTExZIHRvIHRoZSBFTkNMT1NFRCBCWSBjbGF1c2UgdG8gYWxsb3cgdGhpcyBpbnB1dC4AVGhlIG51bWJlciBvZiBpbnB1dCBjb2x1bW5zIHRoYXQgbmVlZCB0byBiZSBidWZmZXJlZCBmb3IgcGFyc2luZyBleGNlZWRlZCBwcmVkZWZpbmVkIGJ1ZmZlciBtYXggc2l6ZSBmb3IgZmlsZSAnJXMnLgBUaGUgY29sdW1uIGRhdGEgdGhhdCBuZWVkZWQgdG8gYmUgY29waWVkIGR1ZSB0byBlc2NhcGVkIGNoYXJhY3RlcnMgZXhjZWVkZWQgdGhlIHNpemUgb2YgdGhlIGludGVybmFsIGNvcHkgYnVmZmVyIGZvciBmaWxlICclcycuAFVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0IGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLiBEYXRhIGZvciBzb21lIGNvbHVtbnMgaXMgbWlzc2luZy4AVW5leHBlY3RlZCByb3cgdGVybWluYXRvciBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4gRGF0YSBmb3Igc29tZSBjb2x1bW5zIGlzIG1pc3NpbmcuAFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBhZnRlciBlbmRpbmcgRU5DTE9TRUQgQlkgY2hhcmFjdGVyIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgTlVMTCBlc2NhcGUgKFxOKSBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJy4AVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGNvbHVtbiB0ZXJtaW5hdG9yIGZvdW5kIGF0IHJvdyAlbGQgaW4gZmlsZSAnJXMnLgBVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCBmb3VuZCBhdCByb3cgJWxkIGluIGZpbGUgJyVzJyByZXN1bHRpbmcgaW4gaW5jb21wbGV0ZSBlc2NhcGUgc2VxdWVuY2UuAEluY29ycmVjdCAlLS4zMnMgdmFsdWU6ICclLS4xMjhzJyBmb3IgY29sdW1uICclLS4xOTJzJyBhdCByb3cgJWxkIGluIGZpbGUgJyUtLjE5MnMnAE5VTEwgc3VwcGxpZWQgdG8gTk9UIE5VTEwgY29sdW1uICclcycgYXQgcm93ICVsZCBpbiBmaWxlICclLS4xOTJzJwAlczogTE9BRCBCVUxLIERBVEEgdGhyZWFkIGZhaWx1cmUgKGVycj0lbHUpLCB0YWJsZT0lcywgaW5kZXg9JXMAJXM6IEZhaWxlZCB0byBtZXJnZSBzdWItdHJlZXMgaW4gTE9BRCBCVUxLIERBVEEsIHRhYmxlPSVzLCBpbmRleD0lcywgZGV0YWlscz0lcwBMT0FEIEJVTEsgREFUQTogQnVmZmVyIHBvb2wgc2l6ZSBpcyAlenUuIFJlZHVjaW5nIGNvbmN1cnJlbmN5IGZyb20gJXp1IHRvICV6dS4gdGFibGU9JXMuAEMrKyBFeGNlcHRpb24gY2F1Z2h0IHdoaWxlICVzIHRoZSAlcyBwbHVnaW46IFslc10AUmVwbGljYXRpb24gY29uZmlndXJhdGlvbiBhcHBlYXJzIHRvIGJlIGNvcnJ1cHRlZC4gT24gR3JvdXAgUmVwbGljYXRpb24gY2hhbm5lbCAnJXMnLCBzZXR0aW5nIFJFUVVJUkVfVEFCTEVfUFJJTUFSWV9LRVlfQ0hFQ0sgdG8gJ0dFTkVSQVRFJyBpcyBub3QgYWxsb3dlZC4gUnVuIFJFU0VUIFJFUExJQ0EgQUxMIHRvIHJlc2V0IGl0LgBSZWNvcmQgaGFzIGJvdGggaW5zdGFudCBhbmQgdmVyc2lvbiBiaXQgc2V0LgBUaGlzIG1lbWJlciBpcyBjb25maWd1cmVkIHdpdGggYSBncm91cF9yZXBsaWNhdGlvbl9wYXhvc19zaW5nbGVfbGVhZGVyIG9wdGlvbiB2YWx1ZSBvZiAxIGFuZCBpdCBpcyB0cnlpbmcgdG8gam9pbiBhIGdyb3VwIHdpdGggQ29tbXVuaWNhdGlvbiBQcm90b2NvbCBWZXJzaW9uIGJlbG93IDguMC4yNy4gSW4gb3JkZXIgdG8gam9pbiB0aGlzIGdyb3VwLCBncm91cF9yZXBsaWNhdGlvbl9wYXhvc19zaW5nbGVfbGVhZGVyIHZhbHVlIG11c3QgYmUgY29uZmlndXJlZCB0byB0aGUgdmFsdWUgMC4gVGhpcyBtZW1iZXIgd2lsbCBub3cgZXhpdCB0aGUgZ3JvdXAuAElnbm9yZWQgdGhlIGlubm9kYi1yZWRvLWxvZy1jYXBhY2l0eSBvcHRpb24gaW4gdGhlIElubm9kYiByZWFkLW9ubHkgbW9kZS4gU2VydmVyIGlzIHVzaW5nIGFjdGl2ZSByZWRvIGxvZyBmaWxlcy4AVW5leHBlY3RlZCBJTlNUQU5UTFkgQWRkZWQgLyBEcm9wcGVkIGNvbHVtbjogJyVzJyBhdCBwb3NpdGlvbiAlbHUgZm9yIFRhYmxlICclcycsIEluZGV4ICclcycgd2hpbGUgZ2V0dGluZyBQcmltYXJ5IEtleSBmb3Igcm93IGxvZ2dpbmcAJXMAQ29sdW1uIG5hbWUgJXMgYW5kIGludGVybmFsbHkgZ2VuZXJhdGVkIElOU1RBTlQgRFJPUCBjb2x1bW4gbmFtZSAlcyBpcyBjYXVzaW5nIGEgY29uZmxpY3QuAEZpZWxkIG51bWJlcjogJWxsdSB0b28gbGFyZ2UsIFRvdGFsIGZpZWxkcyBpbiBSZWNvcmQ6ICV6dS4AJXMAVGhlIGNvbm5lY3Rpb24gaGFzIHRpbWVkIG91dCBhZnRlciAlbHUgcmV0cmllcyBjb25uZWN0aW5nIHRvICclc0AlczolZCclcywgYW5kIHRoZXJlZm9yZSB0aGUgTXlTUUwgc2VydmVyIGlzIGdvaW5nIHRvIGF0dGVtcHQgYW4gYXN5bmNocm9ub3VzIHJlcGxpY2F0aW9uIGNvbm5lY3Rpb24gZmFpbG92ZXIsIHRvICclc0AlczolZCcAVGhlIFJlcGxpY2Egd2hpY2ggd2FzIGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzOiVkJywgaXMgbm93IGNvbm5lY3RlZCB0byBuZXcgc291cmNlICclczolZCcsIGJ1dCBzdGlsbCBoYXMgdGhlIHNhbWUgc2VydmVyX3V1aWQgJXMuAFRoZSBzZXJ2ZXJfdXVpZCBmb3Igc291cmNlIHNlcnZlciAnJXM6JWQnIGhhcyBjaGFuZ2VkIGZyb20gJXMgdG8gJXMuIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gdW5sZXNzIHlvdSBoYXZlIGNoYW5nZWQgaXQgbWFudWFsbHkuAFRoZSBzb3VyY2Ugc2VydmVyIGhhcyBjaGFuZ2VkIGZyb20gJyVzOiVkJyB3aXRoIHNlcnZlcl91dWlkICVzLCB0byAnJXM6JWQnIHdpdGggc2VydmVyX3V1aWQgJXMuAFJlcGxpY2EgcmVjZWl2ZXIgdGhyZWFkJXM6IGNvbm5lY3RlZCB0byBzb3VyY2UgJyVzQCVzOiVkJyB3aXRoIHNlcnZlcl91dWlkPSVzLCBzZXJ2ZXJfaWQ9JWQuIFN0YXJ0aW5nIHJlcGxpY2F0aW9uIGZyb20gZmlsZSAnJXMnLCBwb3NpdGlvbiAnJXMnLgBSZXBsaWNhIHJlY2VpdmVyIHRocmVhZCVzOiBjb25uZWN0ZWQgdG8gc291cmNlICclc0AlczolZCcgd2l0aCBzZXJ2ZXJfdXVpZD0lcywgc2VydmVyX2lkPSVkLiBTdGFydGluZyBHVElELWJhc2VkIHJlcGxpY2F0aW9uLgBMb2FkZXI6OmJ1aWxkX2FsbCgpOiBDb21wbGV0ZWQgYnVpbGRpbmcgJXp1IGluZGV4ZXMgZm9yIG9sZF90YWJsZT0lcywgbmV3X3RhYmxlPSVzLCBlcnI9JXp1LgBCdWlsZGVyOjpmaW5pc2goKTogQ29tcGxldGVkIGJ1aWxkaW5nIGluZGV4PSVzIG9mIHRhYmxlPSVzLCBlcnI9JXp1LgAlczogJyVzJyBpcyBhIHVzZXIgZGVmaW5lZCBjb2xsYXRpb24uIFVzZXIgZGVmaW5lZCBjb2xsYXRpb25zIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZS4gQ29uc2lkZXIgdXNpbmcgYSBjb21waWxlZCBjb2xsYXRpb24gaW5zdGVhZC4AQnVpbGRlcjo6aW5pdCgpOiBJbml0aWFsaXplIGZvciBidWlsZGluZyBpbmRleD0lcyBvZiB0YWJsZT0lcywgbl90aHJlYWRzPSV6dSwgc29ydCBidWZmZXIgc2l6ZT0lenUgYnl0ZXMsIGkvbyBidWZmZXIgc2l6ZT0lenUgYnl0ZXMuAFNFTEVDVCBDT1VOVCgqKSBGUk9NIHRhYmxlPSVzLCBuX3RocmVhZHM9JXp1LCBuX3BhcnRpdGlvbnM9JXp1LgBJbmRleCBsb2cgdmVyc2lvbiAldSBkaWQgbm90IG1hdGNoLiBNYXggaW5kZXggdmVyc2lvbiBpcyAldS4gUmVjb3ZlcnkgY2FuJ3QgY29udGludWUuIFBsZWFzZSBtYWtlIHN1cmUgc2VydmVyIGlzIG5vdCBzdGFydGluZyB1cCB3aXRoIHRoZSBkYXRhZGlyIGdlbmVyYXRlZCBpbiBmdXR1cmUgdmVyc2lvbi4ATXVsdGlwbGUga2V5cmluZyBjb21wb25lbnQgVVJOcyAnJXMnIGZvdW5kIGluIG1hbmlmZXN0IGZpbGUgJyVzJy4gT25seSBvbmUga2V5cmluZyBjb21wb25lbnQgY2FuIGJlIGxvYWRlZCBhdCBhIHRpbWUuAFBsdWdpbiAnZ3JvdXBfcmVwbGljYXRpb24nIGhhcyBiZWVuIHN0YXJ0ZWQuAE1pbmltdW0gcmVjb3JkIGZsYWcgaXMgd3JvbmdseSBzZXQgdG8gcmVjIG9uIHBhZ2UgJyVsdScgYXQgbGV2ZWwgJyVsdScgZm9yIGluZGV4ICclcycgb2YgdGFibGUgJyVzJy4ATWluaW11bSByZWNvcmQgZmxhZyBpcyBub3Qgc2V0IHRvIGZpcnN0IHJlYyBvbiBwYWdlICclbHUnIGF0IGxldmVsICclbHUnIGZvciBpbmRleCAnJXMnIG9mIHRhYmxlICclcycuAFN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkIHNsb3QgJyVkJyBmb3IgY29tcG9uZW50ICclcycuAFN1Y2Nlc3NmdWxseSBkZS1yZWdpc3RlcmVkIHNsb3QgJyVkJyBmcm9tIGNvbXBvbmVudCAnJXMnLgBDYW5ub3QgZnJlZSByZXNvdXJjZXMgc3RvcmVkIGJ5IGNvbXBvbmVudCAnJXMnIGluIHRocmVhZCB3aXRoIElEOiAnJWQnLiBDb21wb25lbnQgZmFpbGVkIHRvIGZyZWUgcmVxdWlyZWQgcmVzb3VyY2VzLgBUcmFuc2FjdGlvbiBJRDogJWx1IGZvdW5kIGZvciByZXN1cnJlY3RpbmcgaW5zZXJ0cwBUcmFuc2FjdGlvbiBJRDogJWx1IGZvdW5kIGZvciByZXN1cnJlY3RpbmcgdXBkYXRlcwBJZGVudGlmaWVkIHRhYmxlIElEOiAlbHUgdG8gYWNxdWlyZSBsb2NrAEFjcXVpcmVkIGxvY2sgb24gdGFibGUgSUQ6ICVsdSwgbmFtZTogJXMAUmVjb3JkcyByZWFkOiAlbHUgLSBQYWdlcyByZWFkOiAlbHUAVG90YWwgcmVjb3JkcyByZXN1cnJlY3RlZDogJWx1IC0gVG90YWwgcGFnZXMgcmVhZDogJWx1IC0gVG90YWwgdGFibGVzIGFjcXVpcmVkOiAlbHUAUmVzdXJyZWN0ZWQgJWx1IHRyYW5zYWN0aW9ucyBkb2luZyBpbnNlcnRzLgBSZXN1cnJlY3RlZCAlbHUgdHJhbnNhY3Rpb25zIGRvaW5nIHVwZGF0ZXMuAEludmFsaWQgc2VjdXJpdHkgdG9rZW4gcHJvdmlkZWQgYnkgJyVzJyBmb3IgJyVzJ0AnJXMnOiAlcy4AVW5rbm93biB1c2VyL3RlbmFuY3kgKHVzZXI6ICVzIHRlbmFuY3k6ICVzKSBmb3VuZCBpbiBzZWN1cml0eSB0b2tlbiBwcm92aWRlZCBieSAnJXMnIGZvciAnJXMnQCclcycuAFZlcmlmaWNhdGlvbiBmYWlsZWQgZm9yIHNlY3VyaXR5IHRva2VuIHByb3ZpZGVkIGJ5ICclcycgZm9yICclcydAJyVzJyA6ICVzLgBDb3VsZCBub3QgZG93bmxvYWQgSUREUCBQdWJsaWMga2V5LiBQbGVhc2UgY2hlY2sgaWYgc2VjdXJpdHkgdG9rZW4gcHJvdmlkZWQgYnkgJyVzJyBmb3IgJyVzJ0AnJXMnIGlzIHZhbGlkLgBOb25lIG9mIHRoZSBncm91cHMgZXh0cmFjdGVkIGZyb20gc2VjdXJpdHkgdG9rZW4gbWF0Y2hlcyBhbnkgb2YgdGhlIGVudHJpZXMgZnJvbSBhdXRoZW50aWNhdGlvbiBzdHJpbmcuAENhbm5vdCByZWdpc3RlciB2YXJpYWJsZSAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgaXMgbm90IGFscmVhZHkgcmVnaXN0ZXJlZCBieSBhbm90aGVyIGNvbXBvbmVudC4AQ2Fubm90IHVucmVnaXN0ZXIgdmFyaWFibGUgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IHdhcyByZWdpc3RlcmVkIHByb3Blcmx5IGluIHRoZSBmaXJzdCBwbGFjZS4AQ2Fubm90IHJlZ2lzdGVyIGZ1bmN0aW9uICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkIGJ5IGFub3RoZXIgY29tcG9uZW50LgBDYW5ub3QgdW5yZWdpc3RlciBmdW5jdGlvbiAnJXMnLiBQbGVhc2UgY2hlY2sgaWYgaXQgd2FzIHJlZ2lzdGVyZWQgcHJvcGVybHkgaW4gdGhlIGZpcnN0IHBsYWNlLgBDYW5ub3QgcmVnaXN0ZXIgcHJpdmlsZWdlICclcycuIFBsZWFzZSBjaGVjayBpZiBpdCBpcyBub3QgYWxyZWFkeSByZWdpc3RlcmVkLgBDYW5ub3QgdW5yZWdpc3RlciBwcml2aWxlZ2UgJyVzJy4gUGxlYXNlIGNoZWNrIGlmIGl0IHdhcyByZWdpc3RlcmVkIHByb3Blcmx5IGluIHRoZSBmaXJzdCBwbGFjZS4ARXJyb3Igd2hpbGUgZXhlY3V0aW5nIFVERiAlcy4ARXJyb3Igd2hpbGUgZXhlY3V0aW5nIFVERiAlczogJXMuACVzIGZhaWxlZC4AJXMgZmFpbGVkIHdpdGggJXUuAExvY2sgZmFpbGVkIGF0ICVzIDogJXUuAExvY2sgZnJvbSAlcyA6ICV1IGZhaWxlZCB0byB1bmxvY2suAE1hc2tpbmcgY29tcG9uZW50IGVycm9yOiAnJXMnLgAlcyBmYWlsZWQuACVzIGZhaWxlZCBiZWNhdXNlICVzLgBDcmVhdGlvbiBvZiByYW5kb20gY29udGV4dCBmYWlsZWQuAENyZWF0aW9uIG9mIHJhbmRvbSBjb250ZXh0IGZhaWxlZCBiZWNhdXNlICVzLgBDYW5ub3QgYWNjZXNzICVzLiVzIHRhYmxlLgBDYW5ub3QgcmVjb3ZlciBmcm9tIGRldGVjdF9vbmx5IGRvdWJsZXdyaXRlIGJ1ZmZlciBhcyBwYWdlICV1IGZyb20gYmF0Y2ggZG91Ymxld3JpdGUgZmlsZSBpcyBjb3JydXB0ZWQuAERhdGFiYXNlIHBhZ2UgY29ycnVwdGlvbiBvZiB0YWJsZXNwYWNlICVzIHNwYWNlX2lkOiAldSBwYWdlX251bTogJXUuIENhbm5vdCByZWNvdmVyIGl0IGZyb20gdGhlIGRvdWJsZXdyaXRlIGJ1ZmZlciBiZWNhdXNlIGl0IHdhcyB3cml0dGVuIGluIGRldGVjdF9vbmx5LWRvdWJsZXdyaXRlIG1vZGUuAGluaXRfY29ubmVjdCB2YXJpYWJsZSBpcyBpZ25vcmVkIGZvciB1c2VyOiAlcyBob3N0OiAlcyBkdWUgdG8gbXVsdGktZmFjdG9yIHJlZ2lzdHJhdGlvbiByZXF1aXJlZCBzYW5kYm94aW5nAEV4ZWN1dGlvbiBvZiBhbHRlciB0YWJsZSAlcyAlcyBmYWlsZWQgYmVjYXVzZSAlcy4AVFAgY29ubiAocG9ydDogbWFuYWdlZChkZWx0YSksIGFjdGl2ZSwgb3BlbmVkLCBjbG9zZWQsIGFkZGVkLCBkcm9wcGVkKTogJXMAU2NoZWR1bGVkIHJ1biBvZiB0YXNrICVzIGZhaWxlZABJbnZhbGlkIGZsdXNoIGludGVydmFsIHNwZWNpZmllZDogJWx1LiBWYWxpZCB2YWx1ZXMgYXJlIDAgKG9mZikgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVkLiBBZGp1c3RpbmcgdG8gJWQAQ291bGQgbm90IHB1cmdlIGJpbmFyeSBsb2dzIHNpbmNlIGFub3RoZXIgc2Vzc2lvbiBpcyBleGVjdXRpbmcgTE9DSyBJTlNUQU5DRSBGT1IgQkFDS1VQLiBXYWl0IGZvciB0aGF0IHNlc3Npb24gdG8gcmVsZWFzZSB0aGUgbG9jay4ATXVsdGktdmFsdWVzIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gTXlTUUwgZm9ybWF0OiAlcwBIZWFwIHJlcXVpcmVkIHRvIGNvbnZlcnQgY29sdW1ucyBpcyBub3QgcHJlc2VudC4ATXlTUUwgc2VydmVyIGRvd25ncmFkaW5nIGZyb20gdmVyc2lvbiAnJXUnIHRvICcldScuAEludmFsaWQgTXlTUUwgc2VydmVyIGRvd25ncmFkZTogQ2Fubm90IGRvd25ncmFkZSBmcm9tICV1IHRvICV1LiBUYXJnZXQgTXlTUUwgc2VydmVyIHZlcnNpb24gaXMgbG93ZXIgdGhhbiB0aGUgc2VydmVyIGRvd25ncmFkZSB0aHJlc2hvbGQgJXUuAEludmFsaWQgTXlTUUwgc2VydmVyIHVwZ3JhZGU6IENhbm5vdCB1cGdyYWRlIGZyb20gJXUgdG8gJXUuIFRhcmdldCBNeVNRTCBzZXJ2ZXIgdmVyc2lvbiBpcyBsb3dlciB0aGFuIHRoZSBzZXJ2ZXIgdXBncmFkZSB0aHJlc2hvbGQgJXUuAEludmFsaWQgTXlTUUwgc2VydmVyIHVwZ3JhZGU6IENhbm5vdCB1cGdyYWRlIGZyb20gJXUgdG8gJXUuIFVwZ3JhZGUgdG8gbmV4dCBtYWpvciB2ZXJzaW9uIGlzIG9ubHkgYWxsb3dlZCBmcm9tIHRoZSBsYXN0IExUUyByZWxlYXNlLCB3aGljaCB2ZXJzaW9uICV1IGlzIG5vdC4ASW52YWxpZCBNeVNRTCBzZXJ2ZXIgZG93bmdyYWRlOiBDYW5ub3QgZG93bmdyYWRlIGZyb20gJXUgdG8gJXUuIERvd25ncmFkZSBpcyBvbmx5IHBlcm1pdHRlZCBiZXR3ZWVuIHBhdGNoIHJlbGVhc2VzLgBGYWlsZWQgdG8gZ2V0IHRoZSBkYXRhIGRpY3Rpb25hcnkgcHJvcGVydHkgJXMuAEZhaWxlZCB0byBzZXQgdGhlIGRhdGEgZGljdGlvbmFyeSBwcm9wZXJ0eSAlcy4AU2VydmVyIGRvd25ncmFkZSBmcm9tICclZCcgdG8gJyVkJyAlcy4AJXMgaW5mb3JtYXRpb24gc2NoZW1hIGZyb20gdmVyc2lvbiAldSB0byAldS4AJXMgcGVyZm9ybWFuY2Ugc2NoZW1hIGZyb20gdmVyc2lvbiAldSB0byAldS4AVmFsdWUgZm9yIG9wdGlvbiAnJXMnIGNvbnRhaW5zIGNpcGhlciAnJXMnIHRoYXQgaXMgZWl0aGVyIGJsb2NrZWQgb3IgZGVwcmVjYXRlZCAoYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlKS4gUGxlYXNlIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuAERETCBmYWlsZWQgYXMgQnVpbGRlciBpcyBhbHJlYWR5IGZyZWVkLiBCdWlsZGVyOiBzdGF0ZT0ldSwgZXJyb3Jfc3RhdGU9JXUuIEluZGV4OiBpZD0lenUsIG5hbWU9JyVzJywgc3BhY2VfaWQ9JXUsIHBhZ2U9JXUuIFRhYmxlOiBvbGRfbmFtZT0nJXMnLCBuZXdfbmFtZT0nJXMnLgBNZW1iZXIgaWRlbnRpZmllZCAlczogJyVzJyBkb2VzIG5vdCBleGlzdCBvbiBHcm91cCBSZXBsaWNhdGlvbiBtZW1iZXJzaGlwIGR1cmluZyAlcy4ARGVwcmVjYXRlZCAnJXMnIHVzZWQgJXMgdGltZXMsIGxhc3QgdGltZSB1c2VkICclcycuAFdhaXRpbmcgZm9yICV1IGNvbm5lY3Rpb25zIHRvIGJlIGNsb3NlZC4AV2FpdGluZyBmb3IgVEhEcyBpbiBwYXJ0aXRpb24gJXUgdG8gYmUgY2xvc2VkLCAldSBzdGlsbCBsZWZ0LiAldSBUSERzIGxlZnQgaW4gdG90YWwgZm9yIGFsbCBwYXJ0aXRpb25zLgBJbmRleCAlcyBvZiAlcy4lcyBleGNlZWRzIGxpbWl0IG9mICVsdSBieXRlcyBwZXIgY29sdW1uLgBGYWlsZWQgdG8gdXBkYXRlIGRhdGEgZGlyZWN0b3J5IGZsYWcgZm9yIGRkIHRhYmxlIHdpdGggdGFibGVzcGFjZSBpZCAnJWxsdScgd2hlbiBpYmQgZmlsZSBmb3IgJyVzJyBpcyBtb3ZlZCB0byBuZXcgbG9jYXRpb24gJyVzJyBkdXJpbmcgc2VydmVyIHNodXRkb3duACVzIEREIElEOiAlbGx1IC0gVGFibGVzcGFjZSAldSwgbmFtZSAnJXMnLCBmb3VuZCBhdCAnJXMnIG91dHNpZGUgZGVmYXVsdCBkYXRhIGRpcmVjdG9yeS4gSXQgaXMgZWl0aGVyIG1vdmVkIG9yIGlzIGNyZWF0ZWQgd2l0aCAnREFUQSBESVJFQ1RPUlknAFVwb24gcmVjb25uZWN0aW9uIHdpdGggdGhlIHJlcGxpY2EsIHdoaWxlIGluaXRpYWxpemluZyB0aGUgZHVtcCB0aHJlYWQgZm9yICVzIDwlcz4sIGFuIGV4aXN0aW5nIGR1bXAgdGhyZWFkIHdpdGggdGhlIHNhbWUgJXMgd2FzIGRldGVjdGVkLiBUaGUgc291cmNlIGlzIHRlcm1pbmF0aW5nIHRoZSBwcmV2aW91cyBkdW1wIHRocmVhZCAoJXUpLCB3aGljaCBpcyBub3JtYWwgYW5kIGV4cGVjdGVkLgBUaGUgdHJhbnNhY3Rpb24gJyUtLjE5MnMnIHdpbGwgY29tbWl0IG91dCBvZiBvcmRlciB3aXRoIHJlc3BlY3QgdG8gaXRzIHNvdXJjZSB0byBmb2xsb3cgdGhlIGdyb3VwIGdsb2JhbCBvcmRlci4AQ2FuIG5vdCBvcGVuIHRhYmxlIGAlc2AuYCVzYDsgZnVuY3Rpb25zIGluIGNvbnN0cmFpbnRzLCBwYXJ0aXRpb25zLCBvciB2aXJ0dWFsIGNvbHVtbnMgbWF5IGhhdmUgZmFpbGVkLgAlcwBGYWlsZWQgdG8gY3JlYXRlIHRoZSBHcm91cCBSZXBsaWNhdGlvbiBjZXJ0aWZpZXIgYnJvYWRjYXN0IHRocmVhZCAoVEhEX2NlcnRpZmllcl9icm9hZGNhc3QpLgBUaGUgR3JvdXAgUmVwbGljYXRpb24gY2VydGlmaWVyIGJyb2FkY2FzdCB0aHJlYWQgKFRIRF9jZXJ0aWZpZXJfYnJvYWRjYXN0KSBzdGFydGVkLgBUaGUgR3JvdXAgUmVwbGljYXRpb24gY2VydGlmaWVyIGJyb2FkY2FzdCB0aHJlYWQgKFRIRF9jZXJ0aWZpZXJfYnJvYWRjYXN0KSBzdG9wcGVkLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gYXBwbGllciB0aHJlYWQgaGFzIHJlY2VpdmVkIEtJTEwgcmVxdWVzdC4AVGhyZWFkcyBhcmUgdW5hYmxlIHRvIHJlc2VydmUgc3BhY2UgaW4gcmVkbyBsb2cgd2hpY2ggY2FuJ3QgYmUgcmVjbGFpbWVkIGR1ZSB0byB0aGUgJyVzJyBjb25zdW1lciBzdGlsbCBsYWdnaW5nIGJlaGluZCBhdCBMU04gPSAlbGx1LiBDb25zaWRlciBpbmNyZWFzaW5nIGlubm9kYl9yZWRvX2xvZ19jYXBhY2l0eS4AVGhlIHJlZG8gbG9nIGFyY2hpdmVyIGlzIGFib3J0ZWQgYXMgaXQgd2FzIGxhZ2dpbmcgYmVoaW5kIGF0IExTTiA9ICVsbHUgYW5kIHVuYWJsZSB0byBhZHZhbmNlIGZvciBtb3JlIHRoYW4gMiBzZWNvbmRzLiBDb25zaWRlciBpbmNyZWFzaW5nIHRoZSBpbm5vZGJfcmVkb19sb2dfY2FwYWNpdHkuAFRyeWluZyB0byBhZGQgb3IgZHJvcCBjb2x1bW4ocykgaW4gdGFibGUgJyVzJyBmb3Igd2hpY2ggdGhlIGN1cnJlbnQgcmVjb3JkIHNpemUgaXMgJXp1IHdoaWNoIGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBhbGxvd2VkIHNpemUgKCV6dSkgZm9yIGEgcmVjb3JkLiBUaGVyZWZvcmUgQUREIG9yIERST1AgY29sdW1uIHdpdGggQUxHT1JJVEhNID0gSU5TVEFOVCBpcyBub3QgYWxsb3dlZC4AQ2Fubm90IGFkZCAlenUgZmllbGQocykgaW4gdGFibGUgJyVzJyBiZWNhdXNlIGFmdGVyIGFkZGluZyBpdCwgdGhlIHJlY29yZCBzaXplIHdvdWxkIGJlICV6dSB3aGljaCBpcyBtb3JlIHRoYW4gdGhlIG1heGltdW0gYWxsb3dlZCBzaXplICglenUpIGZvciBhIHJlY29yZC4AJXMAJXMAJXMAYnVsa2ZsdXNoZXI6IEZhaWxlZCB0byBwdW5jaCBob2xlOiB0YWJsZT0lcywgaW5kZXg9JXMsIHNwYWNlX2lkPSV6dSwgcGFnZV9ubz0lenUsIGRpc2tfcGFnZV9zaXplPSV6dSwgaG9sZV9zaXplPSV6dSwgZmlsZT0lcywgZXJyPSV6dQAlcyBhcyB0aGUgY2xpZW50IHNlc3Npb24gd2FzIGtpbGxlZC4AQ2Fubm90IG9wZW4gY2VydGlmaWNhdGUgJXMuIFBsZWFzZSBjaGVjayB0aGUgY2VyaWZpY2F0ZQBDZXJ0aWZpY2F0ZSB2YWxpZGF0aW9uIGhhcyBmYWlsZWQuIFN0b3BwaW5nIHRoZSBzZXJ2ZXIgYXMgdGxzLWNlcnRpZmljYXRlcy1lbmZvcmNlZC12YWxpZGF0aW9uIGlzIGVuYWJsZWQAQ0EgY2VydGlmaWNhdGUvY2VydGZpY2F0ZXMgaXMgaW52YWxpZC4gUGxlYXNlIGNoZWNrIGxvZ3MgZm9yIG1vcmUgZGV0YWlscy4ASW50ZXJuYWwgVExTIGVycm9yICVzOiVzOiVkOiVzAEZhaWxlZCB0byBzZXQgdXAgVExTLiBDaGVjayBsb2dzIGZvciBkZXRhaWxzAFNlcnZlciBjZXJ0aWZpY2F0ZSAlcyB2ZXJpZmljYXRpb24gaGFzIGZhaWxlZC4gQ2hlY2sgbG9ncyBmb3IgbW9yZSBkZXRhaWxzAEZhaWxlZCB0byB2YWxpZGF0ZSBjZXJ0aWZpY2F0ZSAlcyBiZWNhdXNlICVzACVzACVzACVzAE15U1FMIFNlcnZlciAtIHN0YXJ0LgBNeVNRTCBTZXJ2ZXIgLSBlbmQuAE15U1FMIFNlcnZlciBJbml0aWFsaXphdGlvbiAtIHN0YXJ0LgBNeVNRTCBTZXJ2ZXIgSW5pdGlhbGl6YXRpb24gLSBlbmQuAE15U1FMIFNlcnZlcjogUGx1Z2lucyBTaHV0ZG93biAtIHN0YXJ0LgBNeVNRTCBTZXJ2ZXI6IFBsdWdpbnMgU2h1dGRvd24gLSBlbmQuAE15U1FMIFNlcnZlcjogQ29tcG9uZW50cyBTaHV0ZG93biAtIHN0YXJ0LgBNeVNRTCBTZXJ2ZXI6IENvbXBvbmVudHMgU2h1dGRvd24gLSBlbmQgKHdpdGggcmV0dXJuIHZhbHVlID0gJWQpLgBNeVNRTCBTZXJ2ZXI6IENsb3NpbmcgQ29ubmVjdGlvbnMgLSBzdGFydC4ATXlTUUwgU2VydmVyOiBDbG9zaW5nIENvbm5lY3Rpb25zIC0gZW5kLgBXYWl0aW5nIGZvciBmb3JjZWZ1bCBkaXNjb25uZWN0aW9uIG9mIFRocmVhZCAoSUQgJWxkKSB0byBlbmQuAFdhaXRpbmcgZm9yIGZvcmNlZnVsIGRpc2Nvbm5lY3Rpb24gb2YgJWxkIHRocmVhZChzKSB0byBlbmQuAEZhaWxlZCB0byBhY2NlcHQgYSBNeVNRTCBjb25uZWN0aW9uIGZvciBHcm91cCBSZXBsaWNhdGlvbi4gJXMuIFBsZWFzZSByZXRyeS4ASW52YWxpZCB2YWx1ZSBvZiBhcmd1bWVudCAlcyAoJXMpLgBJZ25vcmluZyBhIG5vbi1kZWZhdWx0IHZhbHVlIGZvciAlcyBkdXJpbmcgLS1pbml0aWFsaXplLgBBdXRvbWF0aWMgcmVnaXN0cmF0aW9uIG9mIHRoZSBzY2hlZHVsZXIgZmFpbGVkLgBJbnZhbGlkIHJlbG9hZCBpbnRlcnZhbCBzcGVjaWZpZWQ6ICVsdS4gVmFsaWQgdmFsdWVzIGFyZSAwIChvZmYpIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlZC4gQWRqdXN0aW5nIHRvICVkLgAnJXMnIChncmFudGVkIHRvICclc0AlcycpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBCdWxrIE11bHRpIFJlYWRlcjogJXMAQnVsayBNZXJnZSBMb2FkZXI6ICVzAEJ1bGsgU29ydGluZyBMb2FkZXI6ICVzAEJ1bGsgV3JpdGVyOiAlcwBCdWxrIHdyaXRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBsaWJjdXJsAEJ1bGsgd3JpdGVyIGdvdCBsaWJjdXJsIGVycm9yOiAlcwBEZXRlY3RlZCB3cm9uZyBwYWdlX2lkOiBidWZfYmxvY2tfdFtzcGFjZV9pZD0lenUsIHBhZ2Vfbm89JXp1XSwgYnVmX2ZyYW1lX3Rbc3BhY2VfaWQ9JXp1LCBwYWdlX25vPSV6dV0sIGZpbGU9JXMARml4ZWQgd3JvbmcgcGFnZV9pZCB3aXRoIHN5bmMgcmVhZDogYnVmX2Jsb2NrX3Rbc3BhY2VfaWQ9JXp1LCBwYWdlX25vPSV6dV0sIGJ1Zl9mcmFtZV90W3NwYWNlX2lkPSV6dSwgcGFnZV9ubz0lenVdLCBmaWxlPSVzLCByZXRyeT0lenUAV3JvbmcgcGFnZV9pZCBhZnRlciBzeW5jIHJlYWQ6IGJ1Zl9ibG9ja190W3NwYWNlX2lkPSV6dSwgcGFnZV9ubz0lenVdLCBidWZfZnJhbWVfdFtzcGFjZV9pZD0lenUsIHBhZ2Vfbm89JXp1XSwgZmlsZT0lcywgcmV0cnk9JXp1AFN5bmMgcmVhZCB0byBmaXggd3JvbmcgcGFnZV9pZCBmYWlsZWQ6IGJ1Zl9ibG9ja190W3NwYWNlX2lkPSV6dSwgcGFnZV9ubz0lenVdLCBmaWxlPSVzLCBlcnI9JXp1LCByZXRyeT0lenUAQ2Fubm90IHN0YXJ0IHJlcGxpY2F0aW9uIGNoYW5uZWwgJyVzJyBiZWNhdXNlICVzLgBUaGUgY2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiwgcGFydCBvZiB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gdG8gdGhlIG5ldyBtZW1iZXIgam9pbiB0aGUgZ3JvdXAsIGlzIHRvbyBiaWcgYW5kIGNhbm5vdCBiZSBzZW5kLiBQbGVhc2Ugd2FpdCB1bnRpbCB0aGUgdmFsdWUgb2YgdGhlIGNvbHVtbiBDT1VOVF9UUkFOU0FDVElPTlNfUk9XU19WQUxJREFUSU5HIG9mIHRoZSB0YWJsZSBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX3N0YXRzIGRlY3JlYXNlcyBhbmQgdHJ5IHRvIGpvaW4gdGhlIG5ldyBtZW1iZXIgYWdhaW4uAFRoZSBtZW1iZXIgJXM6JXUgd2lsbCBiZSB0aGUgb25lIHNlbmRpbmcgdGhlIHJlY292ZXJ5IG1ldGFkYXRhIG1lc3NhZ2UuAFRoaXMgbWVtYmVyICVzOiV1IHdpbGwgYmUgdGhlIG9uZSBzZW5kaW5nIHRoZSByZWNvdmVyeSBtZXRhZGF0YSBtZXNzYWdlLgBFcnJvciBpbml0aWFsaXppbmcgdGhlICVzIGNvbXByZXNzaW9uIGNvbnRleHQuIERhdGEgY2Fubm90IGJlIGNvbXByZXNzZWQuAEVycm9yIHdoaWxlIGNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIERhdGEgY2Fubm90IGJlIGRlY29tcHJlc3NlZC4ARXJyb3IgdW5rbm93biBDb21wcmVzc2lvbiBMaWJyYXJ5IHJlcXVlc3RlZC4ARXJyb3Igd2hpbGUgY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGFzIGJ1ZmZlciBzaXplIGV4Y2VlZGVkIGNvbmZpZ3VyZWQgbWF4aW11bSBzaXplLiBQbGVhc2Ugd2FpdCB1bnRpbCB0aGUgdmFsdWUgb2YgdGhlIGNvbHVtbiBDT1VOVF9UUkFOU0FDVElPTlNfUk9XU19WQUxJREFUSU5HIG9mIHRoZSB0YWJsZSBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX3N0YXRzIGRlY3JlYXNlcyBhbmQgdHJ5IHRvIGpvaW4gdGhlIG5ldyBtZW1iZXIgYWdhaW4uAEVycm9yIHdoaWxlIGNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBhcyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuAEVycm9yIGluaXRpYWxpemluZyB0aGUgJXMgZGVjb21wcmVzc2lvbiBjb250ZXh0LiBEYXRhIGNhbm5vdCBiZSBkZWNvbXByZXNzZWQuAEVycm9yIHdoaWxlIGRlY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGFzIGJ1ZmZlciBzaXplIGV4Y2VlZGVkIGNvbmZpZ3VyZWQgbWF4aW11bSBzaXplLiBQbGVhc2Ugd2FpdCB1bnRpbCB0aGUgdmFsdWUgb2YgdGhlIGNvbHVtbiBDT1VOVF9UUkFOU0FDVElPTlNfUk9XU19WQUxJREFUSU5HIG9mIHRoZSB0YWJsZSBwZXJmb3JtYW5jZV9zY2hlbWEucmVwbGljYXRpb25fZ3JvdXBfbWVtYmVyX3N0YXRzIGRlY3JlYXNlcyBhbmQgdHJ5IHRvIGpvaW4gdGhlIG5ldyBtZW1iZXIgYWdhaW4uAEVycm9yIHdoaWxlIGRlY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gVGhlIG9wZXJhdGlvbiBjb3VsZCBub3QgYmUgcGVyZm9ybWVkIGFzIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZC4ARXJyb3Igd2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgYXMgYWxsIHRoZSBpbnB1dCBwcm92aWRlZCB0byBkZWNvbXByZXNzIGlzIGNvbnN1bWVkLCBidXQgdGhlIGRlY29tcHJlc3NlZCBvdXRwdXQgcHJvZHVjZWQgaXMgbGVzcyB0aGFuIHJlcXVpcmVkLgBFcnJvciB3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEgdXNpbmcgJXMgY29tcHJlc3Npb24uIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBhcyB0aGUgY29tcHJlc3Npb24gbGlicmFyeSByZXBvcnRlZCBhbiBlcnJvci4ARXJyb3Igd2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIHVzaW5nICVzIGNvbXByZXNzaW9uLiBUaGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBwZXJmb3JtZWQgYXMgbm8gbW9yZSBpbnB1dCBieXRlcyByZW1haW5pbmcgdG8gZGVjb21wcmVzcy4gVGhlIGRlY29tcHJlc3NlZCBvdXRwdXQgaGFzIG5vdCBiZWVuIGNoYW5nZWQuAEVycm9yIHdoaWxlIGRlY29tcHJlc3NpbmcgZGF0YSB1c2luZyAlcyBjb21wcmVzc2lvbi4gRGF0YSBjYW5ub3QgYmUgZGVjb21wcmVzc2VkLgBWaWV3X2NoYW5nZV9sb2dfZXZlbnQgd2lsbCBub3QgYmUgbG9nZ2VkIGZ1cnRoZXIgb24gdGhlIGJpbmFyeSBsb2csIGFzIGFsbCBtZW1iZXJzIG9mIHRoZSBncm91cCBhcmUgOC4zLjAgb3IgZ3JlYXRlci4ARXJyb3Igd2hpbGUgcGFyc2luZyBzZXJpYWx6ZWQgQ2VydGlmaWNhdGlvbl9pbmZvIGZyb20gcmVjZWl2ZWQgUmVjb3ZlcnkgTWV0YWRhdGEgdG8gUHJvdG9idWYgZm9ybWF0IHVzaW5nIFByb3RvYnVmIGxpYnJhcnkuAEVycm9yIHdoaWxlIHNlcmlhbGl6aW5nICUgZGF0YSB1c2luZyBQcm90b2J1ZiBsaWJyYXJ5LgBFcnJvciByZWNlaXZlZCB3aGlsZSB0aGUgUmVjb3ZlcnkgdGhyZWFkIHdhcyB3YWl0aW5nIGZvciB0aGUgUmVjb3ZlcnkgTWV0YWRhdGEuIFRoZSBSZWNvdmVyeSB3aWxsIGJlIHRlcm1pbmF0ZWQuAEVycm9yIGZldGNoaW5nIEFGVEVSX0dUSURTIGZyb20gUmVjb3ZlcnkgTWV0YWRhdGEgYnkgUmVjb3ZlcnkgdGhyZWFkLiBUaGUgUmVjb3ZlcnkgdGhyZWFkIHRpbWVvdXQgYWZ0ZXIgd2FpdGluZyBmb3IgJWQgc2Vjb25kcy4gVGhlIFJlY292ZXJ5IHdpbGwgYmUgdGVybWluYXRlZC4ARXJyb3Igd2hpbGUgZGVjb2RpbmcgdGhlIHJlY2VpdmVkIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UuIFRoZSByZWNlaXZlZCBwYXlsb2FkIGlzIGVtcHR5IHdoaWNoIGNvdWxkIGJlIGR1ZSB0byBlcnJvciBpbiBkZWNvZGluZyBvZiByZWNlaXZlZCBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlLiBUaGUgam9pbmluZyBtZW1iZXIgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAuAFRoZSAlcyBwYXlsb2FkIHR5cGUgb2YgdGhlIHJlY2VpdmVkIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UgaXMgZW1wdHkuAEVycm9yIHJlYWRpbmcgZ3RpZF9leGVjdXRlZCBmcm9tIHRoZSByZWNlaXZlZCBSZWNvdmVyeSBNZXRhZGF0YSBNZXNzYWdlLgBFcnJvciB3aGlsZSBkZWNvZGluZyB0aGUgcmVjZWl2ZWQgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZS4AVGhlIGdyb3VwIHdhcyB1bmFibGUgdG8gc2VuZCB0aGUgUmVjb3ZlcnkgTWV0YWRhdGEgdG8gYSBqb2luaW5nIG1lbWJlci4ARXJyb3Igd2hpbGUgc2F2aW5nIGNvcHkgb2YgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZS4ARXJyb3Igd2hpbGUgcHJvY2Vzc2luZyByZWNlaXZlZCBDZXJ0aWZpY2F0aW9uIEluZm9ybWF0aW9uIGZyb20gdGhlIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UuAEVycm9yIENlcnRpZmljYXRpb24gSW5mb3JtYXRpb24gcGFja2V0IGZyb20gdGhlIHJlY2VpdmVkIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UgaXMgZW1wdHkuAEVycm9yIHdoaWxlIHNlbmRpbmcgUmVjb3ZlcnkgbWV0YWRhdGEgZXJyb3IgbWVzc2FnZS4gSWYgdGhpcyBpcyBhIHRlbXBvcmFyeSBmYWlsdXJlIG9mIHNlbmQgbWVzc2FnZSBhbmQgbWVtYmVyIGl0c2VsZiBoYXNuJ3QgbGVmdCB0aGUgZ3JvdXAsIHRoZW4gam9pbmVyIHdpbGwgdGltZW91dCB3YWl0aW5nIGZvciBSZWNvdmVyeSBtZXRhZGF0YSBtZXNzYWdlLiBJZiB0aGlzIGlzIGEgcGVybWFuZW50IGZhaWx1cmUsIHRoZSBtZW1iZXIgd2lsbCBsZWF2ZSB0aGUgZ3JvdXAgYW5kIGFub3RoZXIgbWVtYmVyIHdpbGwgc2VuZCB0aGUgUmVjb3ZlcnkgbWV0YWRhdGEgbWVzc2FnZS4ARXJyb3Igd2hlbiB0cmFuc2ZlcnJpbmcgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZSB0byBSZWNvdmVyeS4gVGhlIGpvaW5pbmcgbWVtYmVyIHdpbGwgbGVhdmUgdGhlIGdyb3VwLgBFcnJvciBDZXJ0aWZpY2F0aW9uIG1vZHVsZSB3YXNuJ3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQuAEVycm9yIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UgbW9kdWxlIHdhc24ndCBwcm9wZXJseSBpbml0aWFsaXplZC4ARXJyb3Igd2hpbGUgJXMuIFRoZSBvcGVyYXRpb24gY291bGQgbm90IGJlIHBlcmZvcm1lZCBhcyBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuAFRoZSBncm91cCByZXBsaWNhdGlvbiByZWNvdmVyeSBpcyBza2lwcGVkIGFzIHRoZSBqb2luZXIncyBndGlkIGV4ZWN1dGVkIHNldCAlcyBhbHJlYWR5IGhhcyBhbGwgdGhlIHRyYW5zYWN0aW9ucyBvZiB0aGUgZG9ub3IncyBndGlkIHNldCAlcy4ARXJyb3IgaW4gR3JvdXAgUmVwbGljYXRpb24gUmVjb3Zlcnkgd2hpbGUgZ2V0dGluZyBtZW1iZXIncyBnbG9iYWwgR1RJRCBleGVjdXRlZCBzZXQuAEVycm9yIGluIEdyb3VwIFJlcGxpY2F0aW9uIFJlY292ZXJ5IHdoaWxlIGFkZGluZyBHVElEcyBpbiBzdHJpbmcgZm9ybWF0IHRvIEd0aWRfc2V0LgBFcnJvciBjb21wdXRpbmcgdGhlIGN1cnJlbnQgUmVjb3ZlcnkgbWV0YWRhdGEgc2VuZGVyLiBDaGVjayBpZiB0aGlzIE1FTUJFUiBpcyBub3QgbGVhdmluZyB0aGUgZ3JvdXAgYW5kIHRoZSBqb2luZXIgaXMgYWJsZSB0byBzdWNjZXNzZnVsbHkgZmV0Y2ggdGhlIHJlY292ZXJ5IG1ldGFkYXRhIG9yIG5vdC4ARXJyb3IgaW4gdGhlIHJlY2VpdmVkIFJlY292ZXJ5IE1ldGFkYXRhIE1lc3NhZ2UgdGhlIG51bWJlciBvZiBjb21wcmVzc2VkIENlcnRpZmljYXRpb24gSW5mb3JtYXRpb24gcGFja2V0IGNvdW50IG1pc21hdGNoIHdpdGggdGhlIG51bWJlciBvZiBzZW50IGNvbXByZXNzZWQgQ2VydGlmaWNhdGlvbiBJbmZvcm1hdGlvbiBwYWNrZXRzLgBFcnJvciB3aGlsZSBlbmNvZGluZyBDZXJ0aWZpY2F0aW9uIEluZm9ybWF0aW9uIGZvciB0aGUgUmVjb3ZlcnkgTWV0YWRhdGEgTWVzc2FnZS4AVGhlcmUgYXJlIG5vIHZhbGlkIHJlY292ZXJ5IG1ldGFkYXRhIGRvbm9ycy4gVGhlIGpvaW5pbmcgbWVtYmVyIHdpbGwgbGVhdmUgdGhlIGdyb3VwLgBObyBkb25vciBhdmFpbGFibGUgdG8gcHJvdmlkZSB0aGUgY2VydGlmaWNhdGlvbiBpbmZvcm1hdGlvbiwgcGFydCBvZiB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gdG8gdGhlIG5ldyBtZW1iZXIgam9pbiB0aGUgZ3JvdXAuIFBsZWFzZSB3YWl0IHVudGlsIHRoZXJlIGFyZSBPTkxJTkUgbWVtYmVycyBvbiB0aGUgZ3JvdXAgYW5kIHRyeSB0byBqb2luIHRoZSBuZXcgbWVtYmVyIGFnYWluLgBUaGUgZ3JvdXAgcmVwbGljYXRpb24gcmVjb3ZlcnkgaXMgY29tcGxldGUsIGpvaW5lciBndGlkIGV4ZWN1dGVkIHNldCBoYXMgYWxsIHRoZSB0cmFuc2FjdGlvbnMgb2YgdGhlIGRvbm9yJ3MgZ3RpZCBzZXQgJXMuAFRoZSBNb25pdG9yIElPIHRocmVhZCBlbmNvdW50ZXJlZCBhbiBlcnJvciB3aGlsZSBleGVjdXRpbmcgdGhlIHF1ZXJ5IHRvIGNoZWNrIGNvbm5lY3Rpb24gdG8gdGhlIHNvdXJjZSBzZXJ2ZXIuIEVycm9yOiAlcy4gVGhlIHF1ZXJ5IGZhaWxlZCB0byBleGVjdXRlIG9uIHRoZSBzb3VyY2UgKGhvc3Q6JXMgcG9ydDoldSBuZXR3b3JrX25hbWVzcGFjZTolcykgZm9yIGNoYW5uZWwgJyVzJy4AVGhlIE1vbml0b3IgSU8gdGhyZWFkIGZhaWxlZCB0byBkZXRlY3QgaWYgdGhlIHNvdXJjZSBiZWxvbmdzIHRvIHRoZSBncm91cCBtYWpvcml0eS4gRXJyb3I6ICVzLiBUaGUgcXVlcnkgZmFpbGVkIHRvIGV4ZWN1dGUgb24gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLgBUaGUgcmVwbGljYSBJTyB0aHJlYWQgZmFpbGVkIHRvIGRldGVjdCBpZiB0aGUgc291cmNlIGJlbG9uZ3MgdG8gdGhlIGdyb3VwIG1ham9yaXR5LiBFcnJvcjogJXMuIFRoZSBxdWVyeSBmYWlsZWQgdG8gZXhlY3V0ZSBvbiB0aGUgc291cmNlIChob3N0OiVzIHBvcnQ6JXUgbmV0d29ya19uYW1lc3BhY2U6JXMpIGZvciBjaGFubmVsICclcycuAFRoZSBNb25pdG9yIElPIHRocmVhZCBmYWlsZWQgdG8gZ2V0IGdyb3VwIG1lbWJlcnNoaXAgZGV0YWlscy4gRXJyb3I6ICVzLiBUaGUgcXVlcnkgZmFpbGVkIHRvIGV4ZWN1dGUgb24gdGhlIHNvdXJjZSAoaG9zdDolcyBwb3J0OiV1IG5ldHdvcmtfbmFtZXNwYWNlOiVzKSBmb3IgY2hhbm5lbCAnJXMnLgBUYWJsZXNwYWNlICcldScgbWVudGlvbmVkIGluIHRoZSByZWRvIGxvZyBpcyBjb3JydXB0ZWQgaW4gYSB3YXkgaXQgaXMgdW5yZWNvdmVyYWJsZSBieSBkb3VibGUtd3JpdGUgYnVmZmVyLCBzbyBmdXJ0aGVyIHJlZG8gbG9nIHJlY292ZXJ5IGlzIG5vdCBwb3NzaWJsZSEAJXM6IEZhaWxlZCB0byBzYXZlIHN0YXRpc3RpY3MgZm9yIHRhYmxlPSVzIGVycj0lenUASW52YWxpZCBmbHVzaCBpbnRlcnZhbCBzcGVjaWZpZWQ6ICVsdS4gVmFsaWQgdmFsdWVzIGFyZSAwIChvZmYpIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlZC4gQWRqdXN0aW5nIHRvICVkLgBDYW5ub3QgcmVnaXN0ZXIgdmFyaWFibGUgJyVzJy4nJXMnLgBNYXNraW5nIGNvbXBvbmVudCBmYWlsZWQgdG8gcmVnaXN0ZXIgbm90aWZpY2F0aW9uIHNlcnZpY2UuIFBlcmlvZGljYWwgbWFza2luZyBkaWN0aW9uYXJpZXMgZmx1c2ggd2lsbCBub3Qgd29yay4ARmFpbGVkIHRvIGRlY29kZSBHcm91cCBSZXBsaWNhdGlvbiBtZXNzYWdlOiAlcy4gUmVhc29uIDogJXMAVGhlIEFwcGxpZXIgcHJvY2VzcyBvZiBHcm91cCBSZXBsaWNhdGlvbiBmb3VuZCBhbiBlcnJvciBhbmQgd2FzIHJlcXVlc3RlZCB0byBzdG9wOiAlcwBDYW5ub3QgaW5zdGFsbCB0aGUgY29tcG9uZW50LgBDYW5ub3QgdW5pbnN0YWxsIHRoZSBsYW5ndWFnZSBjb21wb25lbnQ6ICVzLgBDYWxsaW5nIGNvbXBvbmVudCBzZXJ2aWNlOiAlcy4ASW50ZXJuYWwgZXJyb3Igd2hpbGUgJXMuAEludGVybmFsIFZNIEFQSSBmdW5jdGlvbiBmYWlsZWQ6ICVzLgBJbnRlcm5hbCBWTSBlcnJvciB3aGlsZSAlcy4AVGhlIHJlc291cmNlIGxpbWl0IGhhcyBiZWVuIGV4Y2VlZGVkLiBEZXRhaWxzOiAlcy4AVmFsdWUgZm9yIG9wdGlvbiAnJXMnIGNvbnRhaW5zIGNpcGhlciAnJXMnIHRoYXQgaXMgYmxvY2tlZC4gUGxlYXNlIHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhbGxvd2VkIGNpcGhlcnMuAEtleXJpbmcgZmlsZSBwYXRoIGlzIGVtcHR5IGluIGNvbmZpZ3VyYXRpb24gZmlsZS4ARmFpbGVkIHRvIHJlYWQga2V5cmluZyBmaWxlOiAlcy4ARmFpbGVkIHRvIGRlY3J5cHQga2V5cmluZyBmaWxlOiAlcy4AVGhlIGtleXJpbmcgZmlsZSBjb250ZW50IGlzIG5vdCBpbiBhIHZhbGlkIEpTT04gZm9ybWF0LgBGYWlsZWQgdG8gZXh0cmFjdCBhIHZhbGlkIEpTT04gZGF0YSBmcm9tIGtleXJpbmcgZmlsZS4ARmFpbGVkIHRvIGV4dHJhY3Qga2V5IGZyb20ga2V5cmluZyBmaWxlIEpTT04gZGF0YS4AS2V5cmluZyBjb21wb25lbnQgaXMgbm90IGluaXRpYWxpemVkLgBQcm92aWRlZCBEYXRhIElEIGlzIGVtcHR5LgBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBtZXRhZGF0YSBpdGVyYXRvci4ARmFpbGVkIHRvIGluaXRpYWxpemUga2V5IHJlYWRlciBpdGVyYXRvci4ARmFpbGVkIHRvIHJlYWQga2V5IGZyb20ga2V5IHJlYWRlciBpdGVyYXRvci4AJSpzAFN1Ym1pdCBhIGRldGFpbGVkIGJ1ZyByZXBvcnQgdG8gaHR0cDovL2J1Z3MubXlzcWwuY29tAEFVVE9fSU5DUkVNRU5UIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBET1VCTEUvRkxPQVQgZmllbGQuIFBsZWFzZSBjb25zaWRlciBmaXhpbmcgKFNjaGVtYTolcywgVGFibGU6JXMsIENvbHVtbjolcykuAERvd25ncmFkaW5nIHRoZSBzeXMgc2NoZW1hLgBEb3duZ3JhZGUgb2YgaGVscCB0YWJsZXMgJXMuAENvdWxkIG5vdCBmaW5kIGRhdGEgcG9pbnRlZCBieSBkYXRhX2lkOiAlcywgYXV0aF9pZDogJXMuIFNraXBwaW5nLgBGYWlsZWQgdG8gZGVhbGxvY2F0ZSByZWFkZXJfb2JqZWN0LgBBIGNvbm5lY3Rpb24gZnJvbSAlcyB3YXMgY2xvc2VkIGJ5IHRoZSBzZXJ2ZXIgZHVlIHRvIGEgdGltZW91dCBpbiB0aGUgY29tbXVuaWNhdGlvbiBsYXllciAodmlvOiVkLCBwYWNrZXQ6JWQpICVsZCBzZWNvbmRzIGFmdGVyIHRoZSBsYXN0IGNvbW1hbmQgc3RhcnRlZC4gQ3VycmVudGx5IGNvbmZpZ3VyZWQgd2FpdF90aW1lb3V0IGlzICVsZCBzZWNvbmRzLgBUaGUgbWVtYmVyIGlzIGNvbmZpZ3VyZWQgd2l0aCBhIGdyb3VwX3JlcGxpY2F0aW9uX3ByZWVtcHRpdmVfZ2FyYmFnZV9jb2xsZWN0aW9uIG9wdGlvbiB2YWx1ZSAnJWQnIGRpZmZlcmVudCBmcm9tIHRoZSBncm91cCAnJWQnLiBUaGUgbWVtYmVyIHdpbGwgbm93IGV4aXQgdGhlIGdyb3VwLgBTdGlsbCByb2xsaW5nIGJhY2sgdHJhbnNhY3Rpb24gJWxsdTsgJWxsdSB1bmRvIHJlY29yZHMgcm9sbGVkIGJhY2sgb3V0IG9mICVsbHUgdG90YWwgKCVsdSUlIGNvbXBsZXRlKS4gVHJhbnNhY3Rpb24gaW5mbzogbGFzdCBzdGF0ZTogJXMAU3RpbGwgcm9sbGluZyBiYWNrIHRyYW5zYWN0aW9uICVsbHU7ICVsbHUgdW5kbyByZWNvcmRzIHJvbGxlZCBiYWNrIG91dCBvZiAlbGx1IHRvdGFsICglbHUlJSBjb21wbGV0ZSkuAEludmFsaWQgZm9ybWF0IG9mIGZpbGUgJyVzJy4AUmVsYXkgbG9nIHNhbml0aXphdGlvbjogJXMARm9yZWlnbiBrZXkgJyUuNjRzJyBvbiB0YWJsZSAnJS42NHMnLiclLjY0cycgcmVmZXJzIHRvIG5vbi11bmlxdWUga2V5IG9yIHBhcnRpYWwga2V5LiBUaGlzIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgBEaXNhYmxpbmcgTVRMIGluIHRocmVhZCBncm91cCAldSBzaW5jZSBpdCBoYXMgJXUgKD1NVEwgcGVyIGdyb3VwKSBsb25nIHJ1bm5pbmcgdHJhbnNhY3Rpb25zLgBSZS1lbmFibGluZyBNVEwgaW4gdGhyZWFkIGdyb3VwICV1IHNpbmNlIGl0IGlzIGRvd24gdG8gJXUgbG9uZyBydW5uaW5nIHRyYW5zYWN0aW9ucy4AQ29sdW1uICclLjY0cy4lLjY0cy4lLjY0cycgaGF2aW5nIHByZWZpeCBrZXkgcGFydCAnJS42NHMoJXUpJyBpbiB0aGUgUEFSVElUSU9OIEJZIEtFWSgpIGNsYXVzZSBpcyBub3Qgc3VwcG9ydGVkLgBMb2dpbiB1c2VyOiAlc0AlcyAoZXh0ZXJuYWw6ICVzKSBhdXRoZW50aWNhdGVkIGFzOiAlcwBBY2Nlc3MgZGVuaWVkIGZvciB1c2VyICclcydAJyVzJywgbWlzc2luZyBwcm94eSBwcml2aWxlZ2UgdG8gJyVzJy4AQWNjZXNzIGRlbmllZCBmb3IgdXNlciAnJXMnQCclcycsIHByb3hpZWQgdXNlciAnJXMnIGRvZXNuJ3QgZXhpc3QuAERpc3RyaWJ1dGVkIHJlY292ZXJ5IHdpbGwgd2FpdCB1bnRpbCB0aGUgdHJhbnNhY3Rpb25zICclcycgY29udGFpbmVkIG9uIHRoZSAnZ3JvdXBfcmVwbGljYXRpb25fYXBwbGllcicgY2hhbm5lbCBhcmUgYXBwbGllZC4ARGlzdHJpYnV0ZWQgcmVjb3ZlcnkgZmluaXNoZWQgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9ucyAnJXMnIGNvbnRhaW5lZCBvbiB0aGUgJ2dyb3VwX3JlcGxpY2F0aW9uX2FwcGxpZXInIGNoYW5uZWwuAFpTVEQgZGVjb21wcmVzc2lvbiBmYWlsZWQ6ICVzACVzAFVzaW5nIGlubm9kYl9mbHVzaF9tZXRob2Q9JXMAQnVsayBTY2FubmVyOiAlcwBDb21iaW5pbmcgdGhlIHN0b3JhZ2UgZW5naW5lcyAlLjY0cyBhbmQgJS42NHMgaXMgZGVwcmVjYXRlZCwgYnV0IHRoZSBzdGF0ZW1lbnQgb3IgdHJhbnNhY3Rpb24gdXBkYXRlcyBib3RoIHRoZSAlLjY0cyB0YWJsZSAlLjY0cy4lLjY0cyBhbmQgdGhlICUuNjRzIHRhYmxlICUuNjRzLiUuNjRzLgBGYWlsZWQgdG8gdXBkYXRlIGRhdGEgZGlyZWN0b3J5IGZsYWcgZm9yIGRkIHRhYmxlIHdpdGggdGFibGVzcGFjZSBpZCAnJWxsdScgd2hlbiBpYmQgZmlsZSBmb3IgJyVzJyBpcyBtb3ZlZCB0byBuZXcgbG9jYXRpb24gJyVzJyBkdXJpbmcgc2VydmVyIHNodXRkb3duACVzIEREIElEOiAlbGx1IC0gVGFibGVzcGFjZSAldSwgbmFtZSAnJXMnLCBmb3VuZCBhdCAnJXMnIG91dHNpZGUgZGVmYXVsdCBkYXRhIGRpcmVjdG9yeSwgYnV0IEREIG1pc3NlcyBpbmZvIGFib3V0IERBVEEgRElSRUNUT1JZAFVwb24gcmVjb25uZWN0aW9uIHdpdGggdGhlIHJlcGxpY2EsIHdoaWxlIGluaXRpYWxpemluZyB0aGUgZHVtcCB0aHJlYWQgZm9yICVzIDwlcz4sIGFuIGV4aXN0aW5nIGR1bXAgdGhyZWFkIHdpdGggdGhlIHNhbWUgJXMgd2FzIGRldGVjdGVkLiBUaGUgc291cmNlIGlzIHRlcm1pbmF0aW5nIHRoZSBwcmV2aW91cyBkdW1wIHRocmVhZCAoJXUpLCB3aGljaCBpcyBub3JtYWwgYW5kIGV4cGVjdGVkLgBUaGUgdHJhbnNhY3Rpb24gJyUtLjE5MnMnIHdpbGwgY29tbWl0IG91dCBvZiBvcmRlciB3aXRoIHJlc3BlY3QgdG8gaXRzIHNvdXJjZSB0byBmb2xsb3cgdGhlIGdyb3VwIGdsb2JhbCBvcmRlci4AVGVtcHRhYmxlOiAlcwBGYWlsZWQgdG8gcmVjcmVhdGUgYSBjYWNoZSBvbiBpbmZvIGZpbGUgKGZpbGUgJyVzJykAJXMAJXMAQ2Fubm90IGNyZWF0ZSBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IHRhYmxlcyBpbiAlcyVzcmVhZC1vbmx5IG1vZGUuACVzACVzAFRhYmxlICVzIGlzIGVuY3J5cHRlZCBidXQgZGVjcnlwdGlvbiBmYWlsZWQuIFNlZW1zIHRoYXQgdGhlIGVuY3J5cHRpb24ga2V5IGZldGNoZWQgZnJvbSBrZXlyaW5nIGlzIG5vdCB0aGUgY29ycmVjdCBvbmUuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3Qga2V5cmluZz8AVGFibGVzcGFjZSBpZCAldSBpbiBmaWxlICVzIGlzIGVuY3J5cHRlZCBidXQga2V5cmluZyBvciB1c2VkIGtleV9pZCAldSBpcyBub3QgYXZhaWxhYmxlLiBDYW4ndCBjb250aW51ZSByZWFkaW5nIHRhYmxlLiBQbGVhc2UgcHJvdmlkZSB0aGUgY29ycmVjdCBrZXlyaW5nLgBXYWl0aW5nIGZvciBrZXlyaW5nIGVuY3J5cHRpb24gdGhyZWFkcyB0byBleGl0ACVzAEtleSByb3RhdGlvbiBvZiBlbmNyeXB0ZWQgc2Vzc2lvbiB0ZW1wb3JhcnkgdGFibGVzcGFjZSAlcyBmYWlsZWQAJXMAVXBncmFkZSBpcyBub3QgcG9zc2libGUgYXMgdGhlcmUgYXJlIHRhYmxlcyB0aGF0IGFyZSBLRVJZSU5HIGVuY3J5cHRlZC4gS0VZUklORyBlbmNyeXB0aW9uIGlzIHN0aWxsIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGluIHRoZSB2ZXJzaW9uIHlvdSBhcmUgdXBncmFkaW5nIGZyb20uIFRvIHVwZ3JhZGUgcGxlYXNlIGRlY3J5cHQgdGhlIHRhYmxlcyBlbmNyeXB0ZWQgd2l0aCBLRVlSSU5HIGVuY3J5cHRpb24uAFJlZG8gbG9nIGVuY3J5cHRpb24gbW9kZSBjYW4ndCBiZSBzd2l0Y2hlZCB3aXRob3V0IHN0b3BwaW5nIHRoZSBzZXJ2ZXIgYW5kIHJlY3JlYXRpbmcgdGhlIHJlZG8gbG9ncy4gQ3VycmVudCBtb2RlIGlzICVzLCByZXF1ZXN0ZWQgJXMuAFJlZG8gbG9nIGtleSBnZW5lcmF0aW9uIGZhaWxlZC4ARmFpbGVkIHRvIGVuY3J5cHQgcmVkbyBsb2cgdGFibGVzcGFjZS4ARmFpbGVkIHRvIGxvYWQgcmVkbyBrZXkgdmVyc2lvbiAldQBDb3VsZG4ndCBmZXRjaCBuZXdseSBnZW5lcmF0ZWQgcmVkbyBrZXkuAENvdWxkbid0IHBhcnNlIHN5c3RlbSBrZXk6ICVzAFJlZG8gbG9nIGNhbm5vdCBiZSBlbmNyeXB0ZWQgaWYgdGhlIGtleXJpbmcgaXMgbm90IGxvYWRlZC4AVW5kbyBsb2cgY2FuJ3QgYmUgZW5jcnlwdGVkIGlmIHRoZSBrZXlyaW5nIGlzIG5vdCBsb2FkZWQuAENvdWxkbid0IGZldGNoIGRlZmF1bHQgcGVyY29uYV9yZWRvIGtleS4gUGxlYXNlIGNoZWNrIGlmIGtleXJpbmcgaXMgb3BlcmF0aW9uYWwuAFVwZ3JhZGUgY2Fubm90IGNvbnRpbnVlIGFzIHJlZG8gaXMgZW5jcnlwdGVkIHdpdGggb2xkLCBleHBlcmltZW50YWwgdmVyc2lvbiBvZiBLRVlSSU5HIGVuY3J5cHRpb24uIFBsZWFzZSBwZXJmb3JtIHNsb3cgc2h1dGRvd24gYW5kIHJlbW92ZSBvbGQgcmVkbyBsb2cgZmlsZXMgYmVmb3JlIHVwZ3JhZGluZy4AVGFibGVzcGFjZSBpZCAldSBpbiBmaWxlICVzIGlzIGVuY3J5cHRlZC4gQWx0aG91Z2ggc2VydmVyIG1hbmFnZWQgdG8gZmluZCBrZXlfaWQ9JXUgaW4ga2V5cmluZyB0byBkZWNyeXB0IGl0LCBzb21lIHZlcnNpb25zIG9mIHRoaXMga2V5LCB0aGF0IGFyZSBuZWVkZWQgdG8gZGVjcnlwdCB0aGlzIHNwYWNlLCBhcmUgbWlzc2luZy4gTWF5YmUgeW91IGFyZSB1c2luZyBhbiBvbGQga2V5cmluZz8gQ2FuJ3QgY29udGludWUgcmVhZGluZyB0YWJsZS4gUGxlYXNlIHByb3ZpZGUgdGhlIGNvcnJlY3Qga2V5cmluZy4AVGFibGVzcGFjZSBpZCAldSBpbiBmaWxlICVzIGlzIGVuY3J5cHRlZC4gQWx0aG91Z2ggc2VydmVyIG1hbmFnZWQgdG8gZmluZCBhbGwgbmVlZGVkIHZlcnNpb25zIG9mIGtleV9pZD0ldSBpbiBrZXlyaW5nIHRvIGRlY3J5cHQgaXQsIHRoZSBwcm92aWRlZCB2ZXJzaW9ucyBhcmUgZWl0aGVyIGluY29ycmVjdCBvciBjb3JydXB0ZWQuIENhbid0IGNvbnRpbnVlIHJlYWRpbmcgdGFibGUuIFBsZWFzZSBwcm92aWRlIHRoZSBjb3JyZWN0IGtleXJpbmcuAFRhYmxlc3BhY2UgaWQgJXUgaXMgZW5jcnlwdGVkIGJ1dCBrZXlyaW5nIG9yIHVzZWQga2V5X2lkICV1IGlzIG5vdCBhdmFpbGFibGUuIENhbid0IGNvbnRpbnVlIHJlYWRpbmcgdGFibGUuIFBsZWFzZSBwcm92aWRlIHRoZSBjb3JyZWN0IGtleXJpbmcuAFRhYmxlc3BhY2UgaWQgJXUgaXMgZW5jcnlwdGVkLiBBbHRob3VnaCBzZXJ2ZXIgbWFuYWdlZCB0byBmaW5kIGtleV9pZD0ldSBpbiBrZXlyaW5nIHRvIGRlY3J5cHQgaXQsIHNvbWUgdmVyc2lvbnMgb2YgdGhpcyBrZXksIHRoYXQgYXJlIG5lZWRlZCB0byBkZWNyeXB0IHRoaXMgc3BhY2UsIGFyZSBtaXNzaW5nLiBNYXliZSB5b3UgYXJlIHVzaW5nIGFuIG9sZCBrZXlyaW5nPyBDYW4ndCBjb250aW51ZSByZWFkaW5nIHRhYmxlLiBQbGVhc2UgcHJvdmlkZSB0aGUgY29ycmVjdCBrZXlyaW5nLgBUYWJsZXNwYWNlIGlkICV1IGlzIGVuY3J5cHRlZC4gQWx0aG91Z2ggc2VydmVyIG1hbmFnZWQgdG8gZmluZCBhbGwgbmVlZGVkIHZlcnNpb25zIG9mIGtleV9pZD0ldSBpbiBrZXlyaW5nIHRvIGRlY3J5cHQgaXQsIHRoZSBwcm92aWRlZCB2ZXJzaW9ucyBhcmUgZWl0aGVyIGluY29ycmVjdCBvciBjb3JydXB0ZWQuIENhbid0IGNvbnRpbnVlIHJlYWRpbmcgdGFibGUuIFBsZWFzZSBwcm92aWRlIHRoZSBjb3JyZWN0IGtleXJpbmcuAERlbGF5aW5nIHRydW5jYXRlIG9mIHVuZG8gdGFibGVzcGFjZSAlcyBkdWUgdG8gbG9jayB0YWJsZXMgZm9yIGJhY2t1cC4AWCBwbHVnaW4gZmFpbGVkIHRvIHJlZ2lzdGVyIFNTTCByZWxvYWQgY2FsbGJhY2suIEFMVEVSIElOU1RBTkNFIFJFTE9BRCBUTFMgd2lsbCBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgcGx1Z2luLgBLZXlyaW5nIGNvbmZpZ3VyYXRpb24gZG9lc24ndCBleGlzdHM6ICVzAEtleXJpbmcgY29uZmlndXJhdGlvbiBKU09OIHBhcnNlIGVycm9yOiAlcyAoJWx1KQBUYWJsZSAnJXMuJXMnIHJlcXVpcmVzIHRoZSAnJXMnIHN0b3JhZ2UgZW5naW5lLCB3aGljaCB3YXMgcmVtb3ZlZCBpbiBQZXJjb25hIFNlcnZlciA4LjAuMjgALS0lcyBpcyBzZXQgdG8gTlVMTC4gRHluYW1pYyBsb2cgZmlsZXMgY2FuIGJlIHNhdmVkIGFueXdoZXJlLCBwb3NzaWJseSBvdmVyd3JpdGluZyBvdGhlciBmaWxlcy4AS01TIGNvbW11bmljYXRpb24gZXJyb3I6ICVzAFVwZ3JhZGUgZmFpbGVkLCByZWNyZWF0aW5nIHJlZG8gbG9ncyB3aXRoIHByZXZpb3VzIHZlcnNpb24AQ291bGQgbm90IGFkZCBldmVudCBydWxlICclcycgdG8gLS1yZXBsaWNhLWVuYWJsZS1ldmVudC4gJXMARmxvdyBjb250cm9sIGF1dG8gZXZpY3QgdGltZW91dCByZWFjaGVkLiBUaGUgc2VydmVyIHdpbGwgbm93IGxlYXZlIHRoZSBncm91cC4AVG1wX3RhYmxlX3NpemUgaXMgc2V0IGJlbG93IDFNaUIuIFRoZSBURU1QVEFCTEUgZW5naW5lIHJlcXVpcmVzIGF0IGxlYXN0IDFNaUIgdGFibGUgc2l6ZSwgYW5kIHdpbGwgdXNlIHRoYXQgdmFsdWUgaW5zdGVhZC4gUGxlYXNlIGluY3JlYXNlIHRoZSBsaW1pdCB0byBzaWxlbmNlIHRoaXMgd2FybmluZy4ARmFpbGluZyBjb25uZWN0aW9uIGF0dGVtcHRzIHRocmVzaG9sZCByZWFjaGVkIGZvciAlcwBGYWlsaW5nIGNvbm5lY3Rpb24gYXR0ZW1wdHMgdGhyZXNob2xkIHJlYWNoZWQgZm9yICVzLCBmdXJ0aGVyIG1lc3NhZ2VzIHdpbGwgYmUgc3VwcHJlc3NlZCBmb3IgbmV4dCAlbGx1IHNlY29uZHMARGVsYXllZCAlbGx1IGNvbm5lY3Rpb24gYXR0ZW1wdHMgZHVyaW5nIGxhc3QgJWxsdSBzZWNvbmRzAFRoZSAtLXNlY3VyZS1maWxlLXBhdGggaXMgY29uZmlndXJlZCwgJXMgbXVzdCBiZSBzZXQgYWNjb3JkaW5nbHkuAEluaXRpYWxpemluZyBBdWRpdCBFdmVudCBGaWx0ZXIuLi4AVW5pbnN0YWxsZWQgQXVkaXQgRXZlbnQgRmlsdGVyAEZhaWxlZCB0byBjaGVjay9nZW5lcmF0ZSBlbmNyeXB0aW9uIHBhc3N3b3JkAEZhaWxlZCB0byBpbml0IEFVRElUX0FCT1JUX0VYRU1QVCBwcml2aWxlZ2UARmFpbGVkIHRvIGNyZWF0ZSBVREZzIGhhbmRsZXIgaW5zdGFuY2UARmFpbGVkIHRvIGluaXQgVURGcwBGYWlsZWQgdG8gY3JlYXRlIGF1ZGl0IHJ1bGUgcmVnaXN0cnkgaW5zdGFuY2UARmFpbGVkIHRvIGluaXQgcmVjb3JkIGZvcm1hdHRlcgBGYWlsZWQgdG8gaW5pdCBsb2cgd3JpdGVyAENhbm5vdCBvcGVuIGxvZyB3cml0ZXIsIGVycm9yOiAlcwBGYWlsZWQgdG8gY3JlYXRlIGxvZyByZWFkZXIgaW5zdGFuY2UARmFpbGVkIHRvIGluaXQgY29tcG9uZW50AEF1ZGl0IExvZyBGaWx0ZXIgaXMgZGlzYWJsZWQuIEVuYWJsZSBpdCB3aXRoIGF1ZGl0X2xvZ19maWx0ZXIuZGlzYWJsZSA9IGZhbHNlLgBGYWlsZWQgdG8gY2hlY2sgZmlsdGVyaW5nIHJ1bGUgbmFtZSBleGlzdGVuY2UARmFpbGVkIHRvIHJlbW92ZSBmaWx0ZXIgJyVzJyBmcm9tIHVzZXJzIHRhYmxlAEZhaWxlZCB0byByZW1vdmUgZmlsdGVyICclcycARmFpbGVkIHRvIGNoZWNrIGZpbHRlcmluZyBydWxlIG5hbWUgZXhpc3RlbmNlAFVua25vd24gZmlsdGVyaW5nIHJ1bGUgbmFtZSAnJXMnAEZhaWxlZCB0byBzZXQgJyVzJyBmaWx0ZXJpbmcgcnVsZSBmb3IgdXNlciAnJXNAJXMnAEZhaWxlZCB0byByZW1vdmUgZmlsdGVyIGZvciB1c2VyICclc0AlcycgZnJvbSB1c2VycyB0YWJsZQBMb2cgcm90YXRpb24gZmFpbGVkOiAnJXMnAEZhaWxlZCB0byByZWdpc3RlciBzdGF0dXMgdmFyaWFibGVzAEZhaWxlZCB0byB1bnJlZ2lzdGVyIHN0YXR1cyB2YXJpYWJsZXMARmFpbGVkIHRvIHJlZ2lzdGVyICVzLiVzIHN5c3RlbSB2YXJpYWJsZQBGYWlsZWQgdG8gdW5yZWdpc3RlciAlcy4lcyBzeXN0ZW0gdmFyaWFibGUARmFpbGVkIHRvIGNoZWNrICVzIHZhcmlhYmxlIHNvdXJjZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdGhlICdsb2cnIG1lbWJlciBtdXN0IGJlIG9mIHR5cGUgYm9vbABXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgJ2NsYXNzJyBhcnJheSBlbGVtZW50IG11c3QgYmUgb2Ygb2JqZWN0IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsICdjbGFzcycgbXVzdCBiZSBhbiBvYmplY3Qgb3IgYW4gYXJyYXkAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIG5vIG5hbWUgcHJvdmlkZWQgZm9yIGV2ZW50IGNsYXNzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCAnYWJvcnQnIGNvbmRpdGlvbiBzaG91bGQgYmUgc2V0IGZvciBzdWJjbGFzcyBvbmx5AFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCAnbG9nJyBtdXN0IGJlIG9mIGJvb2wgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgZmFpbGVkIHRvIHBhcnNlICdwcmludCcgcmVwbGFjZW1lbnQgcnVsZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgcmVwbGFjZW1lbnQgcnVsZSBub3QgZXhwZWN0ZWQgZm9yIGV2ZW50IGNsYXNzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB0aGVyZSBtdXN0IGJlIG5vICdldmVudCcgaW4gY2FzZSBjbGFzcyBuYW1lcyBwcm92aWRlZCBhcyBhbiBhcnJheSBvZiBzdHJpbmdzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBldmVudCBjbGFzcyBuYW1lIHdpdGhpbiBhbiBhcnJheSBzaG91bGQgYmUgb2YgYSBzdHJpbmcgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgZXZlbnQgY2xhc3MgbmFtZSB0eXBlIG11c3QgYmUgZWl0aGVyIHN0cmluZyBvciBhbiBhcnJheSBvZiBzdHJpbmdzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCAnZXZlbnQnIGFycmF5IGVsZW1lbnQgbXVzdCBiZSBvZiBvYmplY3QgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdHlwZSBvZiAnZXZlbnQnIG11c3QgYmUgZWl0aGVyIGFuIG9iamVjdCBvciBhbiBhcnJheSBvZiBvYmplY3RzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCAnYWJvcnQnIG11c3QgYmUgb2YgYm9vbCBvciBvYmplY3QgdHlwZQBFdmVudCBmaWVsZCAnJXMnIGNhbm5vdCBiZSByZXBsYWNlZABXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdGhlcmUgbXVzdCBiZSBvbmx5IG9uZSBjb25kaXRpb24gc3BlY2lmaWVkIGZvciAnbG9nJyBmaWVsZABXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdGhlICdsb2cnIGNvbmRpdGlvbiBuYW1lIG11c3QgYmUgb2Ygc3RyaW5nIHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHVua25vd24gJ2xvZycgY29uZGl0aW9uIG5hbWUgJyVzJwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgY29uZGl0aW9uIGRlZmluaXRpb24gJ2ZpZWxkJyBtdXN0IGJlIG9mIG9iamVjdCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBldmVudCBmaWVsZCBkZWZpbml0aW9uICdmaWVsZCcgbXVzdCBoYXZlIGZpZWxkICduYW1lJyBhbmQgJ3ZhbHVlJyBwcm92aWRlZCBhcyBzdHJpbmdzAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBjb25kaXRpb24gZGVmaW5pdGlvbiAnYW5kJyBtdXN0IGJlIG9mIGFycmF5IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGEgbWVtYmVyIG9mICdhbmQnIGNvbmRpdGlvbiBtdXN0IGJlIG9mIG9iamVjdCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB0aGVyZSBzaG91bGQgYmUgYXQgbGVhc3QgdHdvIGZpZWxkcyBwcm92aWRlZCBmb3IgJ2FuZCcgY29uZGl0aW9uAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBjb25kaXRpb24gZGVmaW5pdGlvbiAnb3InIG11c3QgYmUgb2YgYXJyYXkgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgYSBtZW1iZXIgb2YgJ29yJyBjb25kaXRpb24gbXVzdCBiZSBvZiBvYmplY3QgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IHR3byBmaWVsZHMgcHJvdmlkZWQgZm9yICdvcicgY29uZGl0aW9uAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBjb25kaXRpb24gZGVmaW5pdGlvbiAnbm90JyBtdXN0IGJlIG9mIG9iamVjdCB0eXBlAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBjb25kaXRpb24gZGVmaW5pdGlvbiAndmFyaWFibGUnIG11c3QgYmUgb2Ygb2JqZWN0IHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGV2ZW50IGZpZWxkIGRlZmluaXRpb24gJ3ZhcmlhYmxlJyBtdXN0IGhhdmUgZmllbGQgJ25hbWUnIGFuZCAndmFsdWUnIHByb3ZpZGVkIGFzIHN0cmluZ3MAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsICdmdW5jdGlvbicgbXVzdCBiZSBvZiBvYmplY3QgdHlwZQBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgbWlzc2luZyAnZnVuY3Rpb24nIG5hbWUgb3Igbm90IGEgc3RyaW5nAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCB1bmtub3duIGZ1bmN0aW9uIG5hbWUgJyVzJwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgd3JvbmcgZnVuY3Rpb24gYXJncyBmb3JtYXQgcHJvdmlkZWQAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGludmFsaWQgYXJndW1lbnRzIGZvciAnJXMnIGZ1bmN0aW9uAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBubyBuYW1lIHByb3ZpZGVkIGZvciBldmVudCBzdWJjbGFzcwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgZXZlbnQgc3ViY2xhc3MgbmFtZSB3aXRoaW4gYW4gYXJyYXkgc2hvdWxkIGJlIG9mIGEgc3RyaW5nIHR5cGUAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGV2ZW50IHN1YmNsYXNzIG5hbWUgdHlwZSBtdXN0IGJlIGVpdGhlciBzdHJpbmcgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncwBXcm9uZyBKU09OIGZpbHRlciAnJXMnIGZvcm1hdCwgdGhlcmUgbXVzdCBiZSBvbmx5IG9uZSBjb25kaXRpb24gcHJvdmlkZWQsICdsb2cnIG9yICdhYm9ydCcAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIHVua25vd24gdGFnICclcycAV3JvbmcgSlNPTiBmaWx0ZXIgJyVzJyBmb3JtYXQsIGJhZCBmb3JtYXQgZm9yICclcycgYWN0aW9uAFdyb25nIEpTT04gZmlsdGVyICclcycgZm9ybWF0LCBmYWlsZWQgdG8gcGFyc2UgJ2ZpbHRlcicgcmVwbGFjZW1lbnQgcnVsZQBFUlJPUjogSW50ZXJuYWwgZXJyb3IAV3JvbmcgYXJndW1lbnQ6IGluY29ycmVjdCBydWxlIGRlZmluaXRpb24gJyVzJwBGYWlsZWQgdG8gY2hlY2sgZmlsdGVyaW5nIHJ1bGUgbmFtZSBleGlzdGVuY2UARmlsdGVyaW5nIHJ1bGUgd2l0aCB0aGUgbmFtZSAnJXMnIGFscmVhZHkgZXhpc3RzAEZhaWxlZCB0byBpbnNlcnQgZmlsdGVyaW5nIHJ1bGUgJyVzJywgJyVzJwBVbmV4cGVjdGVkIGV2ZW50IHR5cGUgZm9yIHJlcGxhY2VfZmllbGQgYWN0aW9uAEEgRklQUy1hcHByb3ZlZCB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGNyeXB0b2dyYXBoaWMgbGlicmFyeSBoYXMgYmVlbiBkZXRlY3RlZCBpbiB0aGUgb3BlcmF0aW5nIHN5c3RlbSB3aXRoIGEgcHJvcGVybHkgY29uZmlndXJlZCBGSVBTIG1vZHVsZSBhdmFpbGFibGUgZm9yIGxvYWRpbmcuIFBlcmNvbmEgU2VydmVyIGZvciBNeVNRTCB3aWxsIGxvYWQgdGhpcyBtb2R1bGUgYW5kIHJ1biBpbiBGSVBTIG1vZGUuAA==
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
416.03 KB
lrw-r--r--
2025-12-16 08:06:46
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).