Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php $_F=__FILE__;$_X='Pz48P3BocA0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS..

Decoded Output download

<?php $_F=__FILE__;$_X='Pz48P3BocA0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vDQovLyBGNGw1bjFtNSA6IG0yZDNsNXMvNWhyL2NsMXNzLzFqMXhfZ3IyM3A1ci5waHAgICAgICAgICAgICAgICAgICAgIC8vDQovLyBTMmZ0dzFyNSA6IFhPQ1AgLSBYIE9wNW4gQzJtbTNuNHR5IFAycnQxbCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8NCi8vIFY1cnM0Mm4gIDogMC42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KLy8gRDF0NSAgICAgOiBhMDBlLTYwLTY4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vDQovLyBBM3RoMnIgICA6IDFkNDV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8NCi8vIEw0YzVuczUgIDogR1BMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vDQoNCjRmICggIWQ1ZjRuNWQoJ0VIUl9DTEFTU19BSkFYRElTQ0hBUkdFX0RFRklORUQnKSApIHsNCiAgIGQ1ZjRuNSgnRUhSX0NMQVNTX0FKQVhESVNDSEFSR0VfREVGSU5FRCcsIFRSVUUpOw0KDQpyNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL2NsMXNzL3gyY3AxajF4bDRzdDVuNXIucGhwIik7DQpyNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyL2wxbmczMWc1LzFkNDV0LnBocCIpOw0KcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci9tMmRjMm5zdHMucGhwIik7DQpyNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL2NsMXNzL3I1c3QucGhwIik7DQpyNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvbXA0LnBocCIpOw0KDQpjbDFzcyBfNWhyX2NsMXNzX0dyMjNwNXJBajF4IDV4dDVuZHMgQWoxeEw0c3Q1bjVyIHsNCiAgIHYxciAkcjJsNV9kNDFnbjJzNSA9ICJSTGMwMDAwNjdvIjsNCiAgIA0KICAgZjNuY3Q0Mm4gXzVocl9jbDFzc19HcjIzcDVyQWoxeCgkMWN0X24xbTUpIHsNCiAgICAgICR0aDRzLT5fMWN0X24xbTUgPSAkMWN0X24xbTU7DQogICAgICAkdGg0cy0+XzRuY2wzZDVfZjRsNSA9IFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci9ncjIzcDVyLzFqMXhfZ3IyM3A1ci5waHAiOw0KICAgICAgJHRoNHMtPjRuNHQoKTsNCiAgICAgIHAxcjVudDo6NG40dCgpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiA0bjR0KCkgew0KICAgICAgJHRoNHMtPnI1ZzRzdDVyQWN0NDJuKCR0aDRzLT5fMWN0X24xbTUsIjFwcF9icjJ3czVJQ0QiLCIxcHBfczF2NUQ0MWciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfcjV2NXJ0RDQxZyIsIjFwcF9zNXRENDFnIiwiMXBwX2Q1bDV0NUQ0MWciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfNWQ0dEQ0MWciLCIxcHBfczUxcmNoRDQxZyIsIjFwcF9nNXRXRDQxZyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF80bXAycnRXRDQxZyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9nNXRKTVMzYnN0NHQzdDUiLCIxcHBfczNic3Q0dDN0NUpNIiwiMXBwX3MxdjVENHNjaDFyZzUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfYnIyd3M1SUNEOUNNIiwiMXBwX3MxdjVQcjJjIiwiMXBwX3I1djVydFByMmMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfczV0UHIyYyIsIjFwcF81ZDR0UHIyYyIsIjFwcF9nNXRQcjJjIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMXBwX3M1MXJjaFByMmMiLCIxcHBfMWRkUHIyYyIsIjFwcF9kNWw1dDVQcjJjIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMXBwXzRtcDJydFByMmMiLCIxcHBfZ3IyM3A1clM1bmQiLCIxcHBfZ3IyM3A1clI1czNsdCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9ncjIzcDVyRjRuMWwiLCIxcHBfZ3IyM3A1ckVkNHQiLCIxcHBfY2hTdDF5IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMXBwX3MxdjVBZG00c3M0Mm4iLCIxcHBfbjV3QWRtNHNzNDJuIiwiMXBwX2c1dERQSlAiLCIxcHBfc3AiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfYzFsY0FnNU9mQWRtNHNzNDJuIiwiMXBwX2Q1bDV0NUdyMjNwNXJSNXMzbHQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfY2g1Y2tENWw1dDVBZG00c3M0Mm4iLCIxcHBfZDJENWw1dDVBZG00c3M0Mm4iLA0KICAgICAgCQkJCQkJLypDQkcgR3IyM3A1ciBmM25jdDQybiB0MiBnNW41cjF0NSBzMjNyYzUgZDF0MSovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9jYmdfZ3IyM3A1clM1bmQiLA0KICAgICAgCQkJCQkJLypDQkcgR3IyM3A1ciBmM25jdDQybiB0MiBnNW41cjF0NSByNXMzbHQgZDF0MSovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9jYmdfZ3IyM3A1clI1czNsdCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9jYmdfZ3IyM3A1clByMmM1c3MiLA0KCQkJCQkJCS8qQ0JHIEdyMjNwNXIgZjNuY3Q0Mm4gdDIgZjRuMWw0ejUgZDF0MSovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9jYmdfZ3IyM3A1ckY0bjFsIik7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9kMkQ1bDV0NUFkbTRzczQybigkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJDFyZ3NbMF07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJDFyZ3NbNl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJGMxbmM1bF9yNTFzMm4gPSAiZDVsNXQ1IjsNCiAgICAgICRyNXN0ID0gcjVzdF81eDVjKCJwMXM0NW5fazNuajNuZzFuX2IxdDFsIiwxcnIxeSgicDF0NDVudF80ZCI9PiRwMXQ0NW50XzRkLCIxZG00c3M0Mm5fNGQiPT4kMWRtNHNzNDJuXzRkLCJjMW5jNWxfcjUxczJuIj0+JGMxbmM1bF9yNTFzMm4pKTsNCiAgICAgICRzbWwgPSBuNXcgUzRtcGw1WE1MRWw1bTVudCgkcjVzdCk7DQogICAgICAkc3QxdDNzID0gKHN0cjRuZykgJHNtbC0+c3QxdDNzOw0KICAgICAgNGYoJHN0MXQzcz09InMzY2M1c3MiKSB7DQogICAgICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8xZG00c3M0Mm4gU0VUIHN0MXQzc19jZCA9ICdjMW5jNWxsNWQnLCINCiAgICAgICAgICAgICAgLiAiYzFuYzVsbDVkX2R0dG0gPSBuMncoKSwgYzFuYzVsbDVkX2J5ID0gJyQzczVyXzRkJyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgcjV0M3JuICJPSyI7DQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuICJGQUlMIjsNCiAgICAgIH0NCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2NoNWNrRDVsNXQ1QWRtNHNzNDJuKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkMXJnc1swXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkMXJnc1s2XTsNCi8vICAgICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kcmdfcjVzM2x0IFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCcgQU5EIHN0MXQzc19jZCA9ICdmNG4xbCciOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9jYmdfcjVzM2x0IFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCcgQU5EIHN0MXQzc19jZCA9ICdmNG4xbCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTApIHsNCiAgICAgICAgIHI1dDNybiAiT0siOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgIHI1dDNybiAiQ0FOTk9UREVMRVRFIjsNCiAgICAgIH0NCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2Q1bDV0NUdyMjNwNXJSNXMzbHQoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkMXJnc1swXTsNCi8vICAgICAgJHNxbCA9ICJERUxFVEUgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZHJnX3I1czNsdCBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfY2JnX3I1czNsdCBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIEFORCBzdDF0M3NfY2QgPSAnZjRuMWwnIjsNCiAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICB9DQoNCiAgIGYzbmN0NDJuIDFwcF9jMWxjQWc1T2ZBZG00c3M0Mm4oJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fZHR0bSA9ICQxcmdzWzBdOw0KICAgICAgJGQ0c2NoMXJnNV9kdHRtID0gJDFyZ3NbNl07DQoJICAkbDJjX2R0dG09ICdhMDZ1LTktNiAwMDowMDowMCc7DQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIChVTklYX1RJTUVTVEFNUCgnJDFkbTRzczQybl9kdHRtJyktVU5JWF9USU1FU1RBTVAoYi5iNHJ0aF9kdHRtKSkgMXMgMWc1LCINCiAgICAgICAgICAgLiAiKFVOSVhfVElNRVNUQU1QKCckZDRzY2gxcmc1X2R0dG0nKS1VTklYX1RJTUVTVEFNUCgnJDFkbTRzczQybl9kdHRtJykpIDFzIGx4LCINCiAgICAgICAgICAgLiAiKFRPX0RBWVMoJyRkNHNjaDFyZzVfZHR0bScpLVRPX0RBWVMoJyQxZG00c3M0Mm5fZHR0bScpKzYpIDFzIGwycywiDQoJCSAgIC4gIihUT19EQVlTKCckMWRtNHNzNDJuX2R0dG0nKS1UT19EQVlTKCckbDJjX2R0dG0nKSkgMXMgbDJjLCINCiAgICAgICAgICAgLiAiVE9fREFZUygnJDFkbTRzczQybl9kdHRtJyksVE9fREFZUyhiLmI0cnRoX2R0dG0pLFRPX0RBWVMobjJ3KCkpIg0KICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudCAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguInA1cnMybnMgYiBVU0lORyhwNXJzMm5fNGQpIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIGw0c3QoJDFnNSwkbHgsJGwycywkbDJjLCQxZG1fdG0sJGI0cnRoX3RtLCRuMndfdG0pPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICA0ZigkbDJzPT0iIikgJGwycyA9ICIwIjsNCiAgICAgIDRmKCRsMmM9PSIiKSAkbDJjID0gIjAiOw0KICAgICAgJHM1djVuZDF5cyA9IDA7DQogICAgICA0ZigkMWc1PGFpMGllMDApIHsgLy8vIDFnNSA8IDggZDF5cw0KICAgICAgICAgJHM1djVuZDF5cyA9IDY7DQogICAgICAgICAkYjRydGh3NTRnaHQgPSB0cjRtKCRiNHJ0aHc1NGdodCk7DQogICAgICAgICAkMWRtX3k1MXJfMWc1ID0gMDsNCiAgICAgICAgICQxZG1fbTJudGhfMWc1ID0gMDsNCiAgICAgICAgICQxZG1fZDF5c18xZzUgPSBmbDIycigkMWc1IC8gKGF1KmUwKmUwKSk7DQogICAgICB9IDVsczUgew0KICAgICAgICAgNGYoJDFkbV90bT09IiIpIHsNCiAgICAgICAgICAgICQxZG1fMWc1ID0gX2JjdHI0bShiY3MzYigkbjJ3X3RtLCRiNHJ0aF90bSkpOw0KICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICQxZG1fMWc1ID0gX2JjdHI0bShiY3MzYigkMWRtX3RtLCRiNHJ0aF90bSkpOw0KICAgICAgICAgfQ0KICAgICAgICAgDQogICAgICAgICAkMWRtX3k1MXJfMWc1ICA9IGZsMjJyKCQxZG1fMWc1L29laSk7DQogICAgICAgICAkMWRtX20ybnRoXzFnNSA9IGZsMjJyKCgkMWRtXzFnNSVvZWkpL28wKTsNCiAgICAgICAgIC8vJDFkbV9kMXlzXzFnNSA9IGZsMjJyKCQxZzUgLyAoYXUqZTAqZTApKTsNCiAgICAgICAgIC8vJDFkbV9kMXlzXzFnNSA9ICQxZG1fZDF5c18xZzU7IC8vL2ZsMjJyKCQxZzUgLyAoYXUqZTAqZTApKS0oJDFkbV95NTFyXzFnNSpvZWkpLSgkMWRtX20ybnRoXzFnNSpvMCk7DQogICAgICAgICAkMWRtX2QxeXNfMWc1ICAgPSAkMWRtXzFnNS0oJDFkbV95NTFyXzFnNSpvZWkpLSgkMWRtX20ybnRoXzFnNSpvMCk7DQogICAgICANCiAgICAgIH0gICAgICANCiAgICAgIHI1dDNybiAxcnIxeSgkbDJzLCQxZG00c3M0Mm5fZHR0bSxzcWxhNG5kKCQxZG00c3M0Mm5fZHR0bSksJGQ0c2NoMXJnNV9kdHRtLHNxbGE0bmQoJGQ0c2NoMXJnNV9kdHRtKSwkczV2NW5kMXlzLCQxZG1feTUxcl8xZzUsJDFkbV9tMm50aF8xZzUsJDFkbV9kMXlzXzFnNSwkbDJjKTsNCiAgIH0NCg0KICAgICAgDQogICBmM25jdDQybiAxcHBfZzV0RFBKUCgkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRxID0gdHI0bSgkMXJnc1swXSk7DQogICAgICAkc3FsID0gIlNFTEVDVCBkcGpwX25tLENPVU5UKCopIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIFdIRVJFIGRwanBfbm0gTElLRSAnJHElJyBHUk9VUCBCWSBkcGpwX25tIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICRyNXQgPSAxcnIxeSgpOw0KICAgICAgICAgd2g0bDUobDRzdCgkcjVmLCRjbnQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICRyNXRbXSA9IDFycjF5KCRyNWYsJGNudCk7DQogICAgICAgICB9DQogICAgICAgICByNXQzcm4gJHI1dDsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICByNXQzcm4gIkVNUFRZIjsNCiAgICAgIH0NCiAgIH0NCiAgIGYzbmN0NDJuIDFwcF9zcCgkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRxID0gdHI0bSgkMXJnc1swXSk7DQogICAgICAkc3FsID0gIlNFTEVDVCBjMmQ1LG4xbTUgRlJPTSAiLlhPQ1BfUFJFRklYLiJzcDVjNDFsZ3IyM3BzIFdIRVJFIG4xbTUgTElLRSAnJHElJyBHUk9VUCBCWSBjMmQ1IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICRyNXQgPSAxcnIxeSgpOw0KICAgICAgICAgd2g0bDUobDRzdCgkYzJkNSwkbjFtNSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KSkgew0KICAgICAgICAgICAgJHI1dFtdID0gMXJyMXkoJGMyZDUsJG4xbTUpOw0KICAgICAgICAgfQ0KICAgICAgICAgcjV0M3JuICRyNXQ7DQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuICJFTVBUWSI7DQogICAgICB9DQogICB9DQogDQogICBmM25jdDQybiAxcHBfbjV3QWRtNHNzNDJuKCQxcmdzKSB7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgIHI1dDNybiBfNWhyX241d18xZG00c3M0Mm4oJHAxdDQ1bnRfNGQpOw0KICAgfQ0KICAgDQoNCiAgIA0KICAgDQogICBmM25jdDQybiAxcHBfczF2NUFkbTRzczQybigkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgDQogICAgICAkMWRtNHNzNDJuXzRkID0gJDFyZ3NbMF07DQogICAgICAkZDRzY2gxcmc1ID0gJDFyZ3NbNl07DQogICAgICAkMWRtNHNzNDJuX2R0dG0gPSAkMXJnc1thXTsNCiAgICAgICRkNHNjaDFyZzVfZHR0bSA9ICQxcmdzW29dOw0KICAgICAgJGRwanAgPSAkMXJnc1t1XTsNCiAgICAgICRwMXlwbDFuXzRkID0gJDFyZ3NbaV07DQogICAgICAkc2twID0gJDFyZ3NbZV07DQogICAgICAkc3QxeV80bmQgPSAkMXJnc1s3XTsNCiAgICAgICRiNHJ0aHc1NGdodCA9ICQxcmdzWzhdOw0KICAgICAgJHI1MWxfYzJzdCA9IF9iY3RyNG0oYmMxZGQoMCwkMXJnc1s5XSkpOw0KICAgICAgJGs1bDFzID0gJDFyZ3NbNjBdOw0KICAgICAgJHIzajNrMW5fNG5kID0gJDFyZ3NbNjZdOw0KICAgICAgJGJocCA9IDV4cGwyZDUoInwiLDNybGQ1YzJkNSgkMXJnc1s2YV0pKTsNCiAgICAgICRzbG9fNG5kID0gJDFyZ3NbNm9dOw0KICAgICAgJHNqcF9uMiA9ICQxcmdzWzZ1XTsNCiAgICAgICQxZGwgPSAkMXJnc1s2aV07DQoJICAkc3BwcjJfNGQgPSAkMXJnc1s2ZV07DQoJICAgJHNwZHIzZ180ZCA9ICQxcmdzWzY3XTsNCgkgICAgJHNwNF80ZCA9ICQxcmdzWzY4XTsNCgkJICRzcHBydF80ZCA9ICQxcmdzWzY5XTsNCiAgICAgIC8qDQogICAgICAkc3FsID0gIlNFTEVDVCAxZG00c3M0Mm5fNGQsMWRtNHNzNDJuX2R0dG0sVE9fREFZUygxZG00c3M0Mm5fZHR0bSksVE9fREFZUygnJDFkbTRzczQybl9kdHRtJykiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzFkbTRzczQybiINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCAhPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgc3QxdDNzX2NkID0gJ24ycm0xbCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgd2g0bDUobDRzdCgkMWRtNHNzNDJuXzRkeCwkMWRtNHNzNDJuX2R0dG14LCRkMCwkZDYpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgIDRmKCRkMD09JGQ2KSB7DQogICAgICAgICAgICAgICByNXQzcm4gIkVSUk9SRE9VQkxFIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgICovDQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIChVTklYX1RJTUVTVEFNUCgnJDFkbTRzczQybl9kdHRtJyktVU5JWF9USU1FU1RBTVAoYi5iNHJ0aF9kdHRtKSkgMXMgMWc1LCINCiAgICAgICAgICAgLiAiKFVOSVhfVElNRVNUQU1QKCckZDRzY2gxcmc1X2R0dG0nKS1VTklYX1RJTUVTVEFNUCgnJDFkbTRzczQybl9kdHRtJykpIDFzIGx4LCINCiAgICAgICAgICAgLiAiKFRPX0RBWVMoJyRkNHNjaDFyZzVfZHR0bScpLVRPX0RBWVMoJyQxZG00c3M0Mm5fZHR0bScpKzYpIDFzIGwycywiDQogICAgICAgICAgIC4gIlRPX0RBWVMoJyQxZG00c3M0Mm5fZHR0bScpLFRPX0RBWVMoYi5iNHJ0aF9kdHRtKSxUT19EQVlTKG4ydygpKSINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnQgMSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGIgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICBsNHN0KCQxZzUsJGx4LCRsMnMsJDFkbV90bSwkYjRydGhfdG0sJG4yd190bSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgIDRmKCRsMnM9PSIiKSAkbDJzID0gIjAiOw0KICAgICAgDQogICAgICAkczV2NW5kMXlzID0gMDsNCiAgICAgIDRmKCQxZzU8YWkwaWUwMCkgeyAvLy8gMWc1IDwgOCBkMXlzDQogICAgICAgICAkczV2NW5kMXlzID0gNjsNCiAgICAgICAgICRiNHJ0aHc1NGdodCA9IHRyNG0oJGI0cnRodzU0Z2h0KTsNCiAgICAgICAgIDRmKCRiNHJ0aHc1NGdodCE9IiIpIHsNCiAgICAgICAgICAgICRzcWwgPSAiU0VMRUNUIDJyZDVyXzRkLHI1bF9uMiw0dDVtXzRkIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Y0bmQ0bmdzIg0KICAgICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgICAgIC4gIiBBTkQgMmJqXzRkID0gJyIuX0VIUl9CSVJUSFdFSUdIVF9GSU5ELiInIg0KICAgICAgICAgICAgICAgICAuICIgQU5EIHN0MXQzc19jZCA9ICduMnJtMWwnIg0KICAgICAgICAgICAgICAgICAuICIgT1JERVIgQlkgY3I1MXQ1ZF9kdHRtIERFU0MgTElNSVQgNiI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICAgICBsNHN0KCQycmQ1cl80ZCwkcjVsX24yLCQ0dDVtXzRkKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgICAgICAgJGI0cnRodzU0Z2h0ID0gX2JjdHI0bShiYzFkZCgkYjRydGh3NTRnaHQsMCkpOw0KICAgICAgICAgICAgICAgJHNxbCA9ICJVUERBVEUgIi5YT0NQX1BSRUZJWC4iNWhyX2Y0bmQ0bmdzIFNFVCAyYnNydl92MWwgPSAnJGI0cnRodzU0Z2h0JyINCiAgICAgICAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAgICAgICAuICIgQU5EIDJyZDVyXzRkID0gJyQycmQ1cl80ZCciDQogICAgICAgICAgICAgICAgICAgIC4gIiBBTkQgcjVsX24yID0gJyRyNWxfbjInIg0KICAgICAgICAgICAgICAgICAgICAuICIgQU5EIDR0NW1fNGQgPSAnJDR0NW1fNGQnIg0KICAgICAgICAgICAgICAgICAgICAuICIgQU5EIDJial80ZCA9ICciLl9FSFJfQklSVEhXRUlHSFRfRklORC4iJyI7DQogICAgICAgICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgJDFkbV95NTFyXzFnNSA9IDA7DQogICAgICAgICAkMWRtX20ybnRoXzFnNSA9IDA7DQogICAgICAgICAkMWRtX2QxeXNfMWc1ID0gZmwyMnIoJDFnNSAvIChhdSplMCplMCkpOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgIDRmKCQxZG1fdG09PSIiKSB7DQogICAgICAgICAgICAkMWRtXzFnNSA9IF9iY3RyNG0oYmNzM2IoJG4yd190bSwkYjRydGhfdG0pKTsNCiAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAkMWRtXzFnNSA9IF9iY3RyNG0oYmNzM2IoJDFkbV90bSwkYjRydGhfdG0pKTsNCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJDFkbV95NTFyXzFnNSAgPSBmbDIycigkMWRtXzFnNS9vZWkpOw0KICAgICAgICAgJDFkbV9tMm50aF8xZzUgPSBmbDIycigoJDFkbV8xZzUlb2VpKS9vMCk7DQogICAgICAgICAvLyAkMWRtX2QxeXNfMWc1ID0gZmwyMnIoJDFnNSAvIChhdSplMCplMCkpOw0KICAgICAgICAgLy8vICQxZG1fZDF5c18xZzUgPSBmbDIycigkMWc1IC8gKGF1KmUwKmUwKSktKCQxZG1feTUxcl8xZzUqb2VpKS0oJDFkbV9tMm50aF8xZzUqbzApOw0KICAgICAgICAgJDFkbV9kMXlzXzFnNSAgID0gJDFkbV8xZzUtKCQxZG1feTUxcl8xZzUqb2VpKS0oJDFkbV9tMm50aF8xZzUqbzApOw0KICAgICAgDQogICAgICB9DQogICAgICANCiAgICAgIF81aHJfczF2NV9wMXlwbDFuKCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQsJHAxeXBsMW5fNGQsJHNrcCwkc2pwX24yKTsNCiAgICAgIA0KICAgICAgDQogICAgICA0Zigkc3QxeV80bmQ9PSJ5Iikgew0KICAgICAgICAgJHYxcnNbInAxdDQ1bnRfNGQiXSA9ICRwMXQ0NW50XzRkOw0KICAgICAgICAgJHYxcnNbIjFkbTRzczQybl80ZCJdID0gJDFkbTRzczQybl80ZDsNCiAgICAgICAgICR2MXJzWyIxZG00c3M0Mm5fZHR0bSJdID0gJDFkbTRzczQybl9kdHRtOw0KICAgICAgICAgJHYxcnNbImQ0c2NoMXJnNV9kdHRtIl0gPSAkZDRzY2gxcmc1X2R0dG07DQogICAgICAgICAkdjFyc1siZDRzY2gxcmc1XzJyZ180ZCJdID0gJF9TRVNTSU9OWyI1aHJfMnJnXzRkIl07DQogICAgICAgICAkdjFyc1siZDRzY2gxcmc1Il0gPSAkZDRzY2gxcmc1Ow0KICAgICAgICAgJHYxcnNbIjRucDF0NDVudF80bmQiXSA9IDY7DQogICAgICAgICANCiAgICAgICAgICRyNXMzbHQgPSByNXN0XzV4NWMoInAxczQ1bl9rM25qM25nMW5fZDRzY2gxcmc1IiwkdjFycyk7DQogICAgICAgICAkc21sID0gbjV3IFM0bXBsNVhNTEVsNW01bnQoJHI1czNsdCk7DQogICAgICAgICAkc3QxdDNzID0gKHN0cjRuZykgJHNtbC0+c3QxdDNzOw0KICAgICAgICAgNGYoJHN0MXQzcyE9InMzY2M1c3MiKSB7DQogICAgICAgICAgICAkNXJybjIgPSAoc3RyNG5nKSAkc21sLT41cnJuMjsNCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJHI1czNsdCA9IHI1c3RfNXg1YygicDFzNDVuX2szbmozbmcxbl8zcGQxdDUiLCR2MXJzKTsNCiAgICAgICAgICRzbWwgPSBuNXcgUzRtcGw1WE1MRWw1bTVudCgkcjVzM2x0KTsNCiAgICAgICAgICRzdDF0M3MgPSAoc3RyNG5nKSAkc21sLT5zdDF0M3M7DQogICAgICAgICA0Zigkc3QxdDNzIT0iczNjYzVzcyIpIHsNCiAgICAgICAgICAgICQ1cnJuMiA9IChzdHI0bmcpICRzbWwtPjVycm4yOw0KICAgICAgICAgfQ0KICAgICAgICAgDQogICAgICAgICBfbXA0X3N5bmNBZG00c3M0Mm4oJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCk7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJHYxcnNbInAxdDQ1bnRfNGQiXSA9ICRwMXQ0NW50XzRkOw0KICAgICAgICAgJHYxcnNbIjFkbTRzczQybl80ZCJdID0gJDFkbTRzczQybl80ZDsNCiAgICAgICAgICR2MXJzWyIxZG00c3M0Mm5fZHR0bSJdID0gJDFkbTRzczQybl9kdHRtOw0KICAgICAgICAgJHYxcnNbImQ0c2NoMXJnNV9kdHRtIl0gPSAkMWRtNHNzNDJuX2R0dG07DQogICAgICAgICAkdjFyc1siZDRzY2gxcmc1XzJyZ180ZCJdID0gJF9TRVNTSU9OWyI1aHJfMnJnXzRkIl07DQogICAgICAgICAkdjFyc1siZDRzY2gxcmc1Il0gPSAkZDRzY2gxcmc1Ow0KICAgICAgICAgJHYxcnNbIjRucDF0NDVudF80bmQiXSA9IDA7DQogICAgICAgICANCiAgICAgICAgICRyNXMzbHQgPSByNXN0XzV4NWMoInAxczQ1bl9rM25qM25nMW5fZDRzY2gxcmc1IiwkdjFycyk7DQogICAgICAgICAkc21sID0gbjV3IFM0bXBsNVhNTEVsNW01bnQoJHI1czNsdCk7DQogICAgICAgICAkc3QxdDNzID0gKHN0cjRuZykgJHNtbC0+c3QxdDNzOw0KICAgICAgICAgNGYoJHN0MXQzcyE9InMzY2M1c3MiKSB7DQogICAgICAgICAgICAkNXJybjIgPSAoc3RyNG5nKSAkc21sLT41cnJuMjsNCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJHI1czNsdCA9IHI1c3RfNXg1YygicDFzNDVuX2szbmozbmcxbl8zcGQxdDUiLCR2MXJzKTsNCiAgICAgICAgICRzbWwgPSBuNXcgUzRtcGw1WE1MRWw1bTVudCgkcjVzM2x0KTsNCiAgICAgICAgICRzdDF0M3MgPSAoc3RyNG5nKSAkc21sLT5zdDF0M3M7DQogICAgICAgICA0Zigkc3QxdDNzIT0iczNjYzVzcyIpIHsNCiAgICAgICAgICAgICQ1cnJuMiA9IChzdHI0bmcpICRzbWwtPjVycm4yOw0KICAgICAgICAgfQ0KICAgICAgICAgDQogICAgICAgICBfbXA0X3N5bmNBZG00c3M0Mm4oJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCk7DQogICAgICB9DQogICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8xZG00c3M0Mm4gU0VUICINCiAgICAgICAgICAgLiAicjUxbF9jMnN0ID0gJyRyNTFsX2Myc3QnLCINCiAgICAgICAgICAgLiAiZHBqcF9ubSA9ICckZHBqcCcsIg0KICAgICAgICAgICAuICJrNWwxc19yMXcxdCA9ICckazVsMXMnLCINCiAgICAgICAgICAgLiAicjNqM2sxbl80bmQgPSAnJHIzajNrMW5fNG5kJywiDQogICAgICAgICAgIC4gInNsb180bmQgPSAnJHNsb180bmQnIg0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCcgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgDQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvYmhwLnBocCIpOw0KICAgICAgZ2wyYjFsICRiaHBsNHN0Ow0KICAgICAgJHNxbCA9ICJERUxFVEUgRlJPTSBiaHAgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCcgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoNHNfMXJyMXkoJGJocCkpIHsNCiAgICAgICAgIGYycjUxY2goJGJocCAxcyAkYmhweCkgew0KICAgICAgICAgICAgbDRzdCgkYmhwXzRkLCRiaHBfdDFyNGZmLCRiaHBfcXR5KT01eHBsMmQ1KCIvIiwkYmhweCk7DQogICAgICAgICAgICAkYmhwX3R4dCA9ICRiaHBsNHN0WyRiaHBfNGRdOw0KICAgICAgICAgICAgJGJocF90MXI0ZmYgPSBfYmN0cjRtKGJjMWRkKCRiaHBfdDFyNGZmLDApKTsNCiAgICAgICAgICAgIDRmKCRiaHBfdDFyNGZmPjApIHsNCiAgICAgICAgICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gYmhwIChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCxiaHBfNGQsYmhwX3R4dCxiaHBfdDFyNGZmLGJocF9xdHkpIg0KICAgICAgICAgICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJGJocF80ZCcsJyRiaHBfdHh0JywnJGJocF90MXI0ZmYnLCckYmhwX3F0eScpIjsNCiAgICAgICAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICB9DQogICAgICAgICAgICAJNGYoJGwycyA+IHVhKXsNCgkJCQkkMWRsPSQxZGw7fQ0KCQkJCTVsczV7DQoJCQkJJDFkbD0wO30NCgkJCSRzcWwgPSAiU0VMRUNUIGMyM250KCopIDFzIGQxdDEgRlJPTSB4MmNwXzVocl9zcDVjNDFsIg0KICAgICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgICAgIGw0c3QoJGQxdDEpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICAgIDRmKCRkMXQxPjApew0KCQkJDQoJCQkgJHNxbCA9ICJVUERBVEUgeDJjcF81aHJfc3A1YzQxbCBTRVQgMWRsID0gJyQxZGwnLCBzcHIyYzVkM3I1PSAnJHNwcHIyXzRkJywgc2RyM2c9ICckc3BkcjNnXzRkJywgczRudjVzdDRnMXQ0Mm49ICckc3A0XzRkJywgc3ByMnN0aDVzNHM9ICckc3BwcnRfNGQnIg0KICAgICAgICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQoJCQkJCS4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAgICB9DQoJCQk1bHM1ew0KCQkJJHNxbCA9ICJJTlNFUlQgSU5UTyB4MmNwXzVocl9zcDVjNDFsIChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCwxZGwsc3ByMmM1ZDNyNSxzZHIzZyxzNG52NXN0NGcxdDQybixzcHIyc3RoNXM0cyx0NWw1bTVkNGM0bjUpIg0KICAgICAgICAgICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJDFkbCcsJyRzcHByMl80ZCcsJyRzcGRyM2dfNGQnLCckc3A0XzRkJywnJHNwcHJ0XzRkJywnJykiOw0KICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgkc3FsKTt9fQ0KICAgICAgcjV0M3JuIDFycjF5KCRsMnMsJDFkbTRzczQybl9kdHRtLHNxbGE0bmQoJDFkbTRzczQybl9kdHRtKSwkZDRzY2gxcmc1X2R0dG0sc3FsYTRuZCgkZDRzY2gxcmc1X2R0dG0pLCRzNXY1bmQxeXMsJDFkbV95NTFyXzFnNSwkMWRtX20ybnRoXzFnNSwkMWRtX2QxeXNfMWc1KTsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2NoU3QxeSgkMXJncykgew0KICAgICAgJHN0MXlfNG5kID0gJDFyZ3NbMF07DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkc3QxeV80bmQgPSAkMXJnc1swXTsNCiAgICAgICRzcWwgPSAiVVBEQVRFICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzFkbTRzczQybiBTRVQgc3QxeV80bmQgPSAnJHN0MXlfNG5kJyINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRzdDF5XzRuZD09InkiKSB7DQogICAgICAgICAkdjFyc1siNG5wMXQ0NW50XzRuZCJdID0gNjsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkdjFyc1siNG5wMXQ0NW50XzRuZCJdID0gMDsNCiAgICAgIH0NCiAgICAgICR2MXJzWyJwMXQ0NW50XzRkIl0gPSAkcDF0NDVudF80ZDsNCiAgICAgICR2MXJzWyIxZG00c3M0Mm5fNGQiXSA9ICQxZG00c3M0Mm5fNGQ7DQogICAgICANCiAgICAgICRyNXMzbHQgPSByNXN0XzV4NWMoInAxczQ1bl9rM25qM25nMW5fM3BkMXQ1IiwkdjFycyk7DQogICAgICAkc21sID0gbjV3IFM0bXBsNVhNTEVsNW01bnQoJHI1czNsdCk7DQogICAgICAkc3QxdDNzID0gKHN0cjRuZykgJHNtbC0+c3QxdDNzOw0KICAgICAgNGYoJHN0MXQzcyE9InMzY2M1c3MiKSB7DQogICAgICAgICAkNXJybjIgPSAoc3RyNG5nKSAkc21sLT41cnJuMjsNCiAgICAgIH0NCiAgICAgICAgIA0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfZ3IyM3A1ckVkNHQoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICQzczVyXzRkID0gZzV0VXM1cklEKCk7DQogICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfY2JnX3I1czNsdCBTRVQgIg0KICAgICAgICAgICAuICJzdDF0M3NfY2QgPSAnbjJybTFsJywiDQogICAgICAgICAgIC4gImY0bjFsNHo1ZF8zczVyXzRkID0gJzAnLCINCiAgICAgICAgICAgLiAiZjRuMWw0ejVkX2R0dG0gPSAnMDAwMC0wMC0wMCAwMDowMDowMCciDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIHI1dDNybiAkdGg0cy0+RFJHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfZ3IyM3A1ckY0bjFsKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJHNxbCA9ICJVUERBVEUgIi5YT0NQX1BSRUZJWC4iNWhyX2RyZ19yNXMzbHQgU0VUIHN0MXQzc19jZCA9ICdmNG4xbCcsZjRuMWw0ejVkXzNzNXJfNGQgPSAnJDNzNXJfNGQnLCINCiAgICAgICAgICAgLiAiZjRuMWw0ejVkX2R0dG0gPSBuMncoKSINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgcjV0M3JuICR0aDRzLT5EUkdSNXMzbHQoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCk7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9ncjIzcDVyUjVzM2x0KCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJGY0bDUgPSAkMXJnc1swXTsNCiAgICAgIA0KICAgICAgJHNxbCA9ICJTRUxFQ1QgcnNfbjIscnNfbjFtNSxyc19jbDFzcyxyc190MXI0ZmYscnNfdDFyNGZmYSBGUk9NIHJzX3M1dDNwIExJTUlUIDYiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgIGw0c3QoJHJzX24yLCRyc19uMW01LCRyc19jbDFzcywkcnNfdDFyNGZmLCRyc190MXI0ZmZhKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gJHJzX24yOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRoMnNwNHQxbF80ZCA9ICIwMDAwMDAwIjsNCiAgICAgICAgICRyc19jbDFzcyA9ICJBIjsNCiAgICAgICAgICRyc190MXI0ZmYgPSAiYTA2YV82X3JzMzEiOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkX3EzNXJ5ID0gaHR0cF9iMzRsZF9xMzVyeSgxcnIxeSgiZiI9PiRmNGw1KSk7DQogICAgICAkX2g1MWQ1ciA9IDFycjF5KCk7DQogICAgICAkX2g1MWQ1cltdID0gIkMybnQ1bnQtVHlwNTogMXBwbDRjMXQ0Mm4veC13d3ctZjJybS0zcmw1bmMyZDVkIjsNCiAgICAgICRfM3I0ID0gImh0dHA6Ly9sMmMxbGgyc3QvNG4xY2JnL2dyMjNwNXIvZ3IyM3A1ci5waHAiOw0KICAgICAgJF9jaCA9IGMzcmxfNG40dCgpOw0KICAgICAgJF8xZzVudCA9ICJFSFIgLSBHcjIzcDVyIENsNDVudCI7DQogICAgICANCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfVVJMLCAkXzNyNCk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBGQUxTRSk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0hFQURFUiwgMCk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCA2KTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfVkVSQk9TRSwgNik7ICMjIyMjIyMjIyMjIGQ1YjNnDQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJF8xZzVudCk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0hUVFBIRUFERVIsICRfaDUxZDVyKTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDYpOw0KICAgICAgLy9jM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0NPT0tJRUpBUiwgUkVTVF9DT09LSUVGSUxFKTsNCiAgICAgIC8vYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCBSRVNUX0NPT0tJRUZJTEUpOw0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9QT1NULCA2KTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgJF9xMzVyeSk7DQogICAgICAkcjVzcDJuczUgPSBzM2JzdHIoYzNybF81eDVjKCRfY2gpLDAsLWEpOw0KDQogICAgICAkc3FsID0gIlNFTEVDVCByc19uMixyc19uMW01LHJzX2NsMXNzLHJzX3QxcjRmZixyc190MXI0ZmZhIEZST00gcnNfczV0M3AgTElNSVQgNiI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT09Nikgew0KICAgICAgICAgbDRzdCgkcnNfbjIsJHJzX24xbTUsJHJzX2NsMXNzLCRyc190MXI0ZmYsJHJzX3QxcjRmZmEpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAkaDJzcDR0MWxfNGQgPSAkcnNfbjI7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gIjAwMDAwMDAiOw0KICAgICAgICAgJHJzX2NsMXNzID0gIkEiOw0KICAgICAgICAgJHJzX3QxcjRmZiA9ICJhMDZhXzZfcnMzMSI7DQogICAgICB9DQoNCiAgICAgIHI1cTM0cjVfMm5jNShYT0NQX0RPQ19ST09ULiIvbTJkM2w1cy81aHIvNG5jbDNkNS9kcmcucGhwIik7DQogICAgICAkcDFyczVkID0gX3AxcnM1RFJHKCRyNXNwMm5zNSwkcnNfdDFyNGZmKTsNCiAgICAgIA0KICAgICAgJHI1c3ggPSAkcjVzcDJuczUuIiMjI0VPUiI7DQoNCiAgICAgIGw0c3QoJHI1czAsJHI1czYsJHI1c2EsJHI1c28sJHI1c3UpID0gc3RyX3NwbDR0KCRyNXN4LGFpMCk7DQogICAgICANCiAgICAgICRzcWwgPSAiUkVQTEFDRSBJTlRPICIuWE9DUF9QUkVGSVguIjVocl9kcmdfcjVzM2x0IChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCxyNXNwMm5zNV90eHQwLHI1c3AybnM1X3R4dDYscjVzcDJuczVfdHh0YSxyNXNwMm5zNV90eHRvLHI1c3AybnM1X3R4dHUsY3I1MXQ1ZF8zczVyXzRkLHJzX2NsMXNzLHQxcjRmZixjMmQ1LHJzX3QxcjRmZikiDQogICAgICAgICAgIC4gIiBWQUxVRVMgKCckcDF0NDVudF80ZCcsJyQxZG00c3M0Mm5fNGQnLCckcjVzMCcsJyRyNXM2JywnJHI1c2EnLCckcjVzbycsJyRyNXN1JywnJDNzNXJfNGQnLCckcnNfY2wxc3MnLCciLiRwMXJzNWRbInQxcjRmZiJdLiInLCciLiRwMXJzNWRbImMyZDUiXS4iJywnJHJzX3QxcjRmZicpIjsNCiAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICBjM3JsX2NsMnM1ICgkX2NoKTsNCiAgICAgIA0KICAgICAgcjV0M3JuICR0aDRzLT5EUkdSNXMzbHQoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCk7DQogICB9DQogICANCiAgIGYzbmN0NDJuIERSR1I1czNsdCgkcDF0NDVudF80ZCwkMWRtNHNzNDJuXzRkKSB7DQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvdDFyNGZmLnBocCIpOw0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgIGdsMmIxbCAkdDFyNGZmXzJwdDsNCiAgICAgIA0KICAgICAgJHNxbCA9ICJTRUxFQ1QgcnNfbjIscnNfbjFtNSxyc19jbDFzcyxyc190MXI0ZmYscnNfdDFyNGZmYSBGUk9NIHJzX3M1dDNwIExJTUlUIDYiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgIGw0c3QoJHJzX24yLCRyc19uMW01LCRyc19jbDFzcywkcnNfdDFyNGZmLCRyc190MXI0ZmZhKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gJHJzX24yOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRoMnNwNHQxbF80ZCA9ICIwMDAwMDAwIjsNCiAgICAgICAgICRyc19jbDFzcyA9ICJBIjsNCiAgICAgICAgICRyc190MXI0ZmYgPSAiYTA2YV82X3JzMzEiOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkc3FsID0gIlNFTEVDVCAxLnJzX3QxcjRmZiwxLmNyNTF0NWRfZHR0bSwxLnI1c3AybnM1X3R4dDAsMS5yNXNwMm5zNV90eHQ2LDEucjVzcDJuczVfdHh0YSwxLnI1c3AybnM1X3R4dG8sMS5yNXNwMm5zNV90eHR1LDEuc3QxdDNzX2NkLGMucDVyczJuX25tLCINCiAgICAgICAgICAgLiAiMS5jMmQ1LDEudDFyNGZmLDEucnNfY2wxc3MiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kcmdfcjVzM2x0IDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iM3M1cnMgYiBPTiBiLjNzNXJfNGQgPSAxLmNyNTF0NWRfM3M1cl80ZCINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGMgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgIGw0c3QoJHJzX3QxcjRmZiwkY3I1MXQ1ZF9kdHRtLCRyNXMwLCRyNXM2LCRyNXNhLCRyNXNvLCRyNXN1LCRkcmdfc3QxdDNzLCQycCwkYzJkNSwkdDFyNGZmLCRyc19jbDFzcyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICRyNXN1ID0gczNic3RyKCRyNXN1LDAsLWUpOw0KICAgICAgICAgJGRyZ19yNXNwMm5zNSA9IHNwcjRudGYoIiUtYWkwcyIsJHI1czApDQogICAgICAgICAgICAgICAgICAgICAgIC4gc3ByNG50ZigiJS1haTBzIiwkcjVzNikNCiAgICAgICAgICAgICAgICAgICAgICAgLiBzcHI0bnRmKCIlLWFpMHMiLCRyNXNhKQ0KICAgICAgICAgICAgICAgICAgICAgICAuIHNwcjRudGYoIiUtYWkwcyIsJHI1c28pDQogICAgICAgICAgICAgICAgICAgICAgIC4gc3ByNG50ZigiJS1haTBzIiwkcjVzdSk7DQogICAgICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvZHJnLnBocCIpOw0KICAgICAgICAgJHI1cyA9IF9wMXJzNURSRygkZHJnX3I1c3AybnM1LCRyc190MXI0ZmYpOw0KICAgICAgICAgDQogICAgICAgICAkZDQxZyA9ICRyNXNbImQ0MWdfc3QxdDNzIl07DQogICAgICAgICAkcHIyYyA9ICRyNXNbInByMmNfc3QxdDNzIl07DQogICAgICAgICANCiAgICAgICAgICRkNXQxNGwgPSAiRDQxZ24yczE6PHQxYmw1IGNsMXNzPSd5bDRzdCcgc3R5bDU9J20xcmc0bi1iMnR0Mm06NjBweDsnPiINCiAgICAgICAgICAgICAgICAgLiAiPGMybGdyMjNwPjxjMmwgdzRkdGg9JzYwMCcvPjxjMmwgdzRkdGg9JzYwMCcvPjwvYzJsZ3IyM3A+Ig0KICAgICAgICAgICAgICAgICAuICI8dGg1MWQ+PHRyPjx0ZD5JQ0Q2MDwvdGQ+PHRkPlN0MXQzczwvdGQ+PC90cj48L3RoNTFkPjx0YjJkeT4iOw0KICAgICAgICAgZjJyNTFjaCgkZDQxZyAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgIGw0c3QoJHZzdCwkY2QsJHN0KT0kdjsNCiAgICAgICAgICAgIDRmKCRjZCE9IiIpIHsNCiAgICAgICAgICAgICAgICRkNXQxNGwgLj0gIjx0ciAiLigkdnN0PT02PyJjbDFzcz0neTVyciciOiIiKS4iPjx0ZD4kY2Q8L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz4kc3Q8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgICRkNXQxNGwgLj0gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgICAgJGQ1dDE0bCAuPSAiUHIyYzVkM3I1Ojx0MWJsNSBjbDFzcz0neWw0c3QnPiINCiAgICAgICAgICAgICAgICAgIC4gIjxjMmxncjIzcD48YzJsIHc0ZHRoPSc2MDAnLz48YzJsIHc0ZHRoPSc2MDAnLz48YzJsIHc0ZHRoPSdhaTAnLz48L2MybGdyMjNwPiINCiAgICAgICAgICAgICAgICAgIC4gIjx0aDUxZD48dHI+PHRkPklDRDlDTTwvdGQ+PHRkPlN0MXQzczwvdGQ+PHRkPkNsMXNzPC90ZD48L3RyPjwvdGg1MWQ+PHRiMmR5PiI7DQogICAgICAgICBmMnI1MWNoKCRwcjJjIDFzICRrPT4kdikgew0KICAgICAgICAgICAgbDRzdCgkdnN0LCRjZCwkc3QsJGNsKT0kdjsNCiAgICAgICAgICAgIDRmKCRjZCE9IiIpIHsNCiAgICAgICAgICAgICAgICRkNXQxNGwgLj0gIjx0ciAiLigkdnN0PT02PyJjbDFzcz0neTVyciciOiIiKS4iPjx0ZD4kY2Q8L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz4kc3Q8L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz4kY2w8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgICRkNXQxNGwgLj0gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgICAgJHI1dCA9ICI8ZDR2IHN0eWw1PSdmMm50LXc1NGdodDpiMmxkO3AxZGQ0bmc6aXB4O3Q1eHQtMWw0Z246YzVudDVyO2MybDJyOndoNHQ1OyIuKCRkcmdfc3QxdDNzPT0iZjRuMWwiPyJiMWNrZ3IyM25kLWMybDJyOiNpaWlpNzc7IjoiYjFja2dyMjNuZC1jMmwycjojYWFhYWVlOyIpLiInPiINCgkJCQkgICAgICAuICJIMXM0bCBHcjIzcDVyIi4oJGRyZ19zdDF0M3M9PSJmNG4xbCI/IiAtIEY0bjFsIjoiIikuIjwvZDR2Pjx0MWJsNSBjbDFzcz0neWZybScgc3R5bDU9J3c0ZHRoOjYwMCU7Jz48YzJsZ3IyM3A+PGMybCB3NGR0aD0nNmkwJy8+PGMybC8+PC9jMmxncjIzcD48dGIyZHk+Ig0KICAgICAgICAgICAgICAuICI8dHI+PHRkPk9wNXIxdDJyL1cxa3QzIDogPC90ZD48dGQ+JDJwIC8gIi5zcWxhNG5kKCRjcjUxdDVkX2R0dG0pLiI8L3RkPjwvdHI+Ig0KICAgICAgICAgICAgICAuICI8dHI+PHRkPlQ0cDUgUDFzNDVuIDogPC90ZD48dGQ+JHI1c1twMXQ0NW50X3R5cDVfZDVzY3I0cHQ0Mm5dPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5LMmQ1IElOQURSRyA6IDwvdGQ+PHRkPiRjMmQ1PC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5ENXNrcjRwczQgOiA8L3RkPjx0ZD4kcjVzW2Q1c2NyNHB0NDJuXTwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+VDRwNSBEUkcgOiA8L3RkPjx0ZD4kcjVzW2RyZ190eXA1XTwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+UzV2NXI0dHkvSW50NW5zNHR5IDogPC90ZD48dGQ+JHI1c1tzNXY1cjR0eV08L3RkPjwvdHI+Ig0KICAgICAgICAgICAgICAuICI8dHI+PHRkPkFMT1MgOiA8L3RkPjx0ZD4kcjVzWzFsMnNdPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5UMXI0ZiA6IDwvdGQ+PHRkPlJwICIudDJNMm41eSgkdDFyNGZmKS4iPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5LNWwxcyBSUyA6IDwvdGQ+PHRkPiRyc19jbDFzczwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+VDRwNSBUMXI0ZiA6IDwvdGQ+PHRkPiIuJHQxcjRmZl8ycHRbJHJzX3QxcjRmZl0uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gKCRyNXNbIjVycjJyIl0hPSIiPyI8dHI+PHRkPkVycjJyIDogPC90ZD48dGQ+JHI1c1s1cnIycl08L3RkPjwvdHI+IjoiIikNCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5TdDF0M3MgR3IyM3A1ciA6IDwvdGQ+PHRkPjxzcDFuIHN0eWw1PSdmbDIxdDpsNWZ0Oyc+JHI1c1tzdDF0M3NdPC9zcDFuPiA8c3AxbiAybmNsNGNrPSd0MmdnbDVkNXQxNGxkcmcodGg0cyw1djVudCk7JyBzdHlsNT0nZmwyMXQ6cjRnaHQ7JyBjbDFzcz0neWxuayc+W2Q1dDRsXTwvc3Axbj48L3RkPjwvdHI+Ig0KICAgICAgICAgICAgICAuICI8dHIgNGQ9J2RyZ19kNXQxNGwnIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz48dGQgYzJsc3Axbj0nYScgc3R5bDU9J3AxZGQ0bmc6NjBweDt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojZmZmZjUwOyc+JGQ1dDE0bDwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gKCRkcmdfc3QxdDNzPT0iZjRuMWwiPyAiPHRyPjx0ZCBjMmxzcDFuPSdhJz48NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nUHI0bnQnIDJuY2w0Y2s9J3ByNG50X2RyZyhcIiRwMXQ0NW50XzRkXCIsXCIkMWRtNHNzNDJuXzRkXCIpOycvPiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoVFJVRT8iJm5ic3A7PDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J0VkNHQgSDFzNGwnIDJuY2w0Y2s9JzVkNHRfZHJnKCk7Jy8+IjoiIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI8dHI+PHRkIGMybHNwMW49J2EnPjw0bnAzdCBjbDFzcz0nYnRuZDVmJyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdGNG4xbCcgMm5jbDRjaz0nZjRuMWw0ejVfZHJnKCk7Jy8+PC90ZD48L3RyPiIpDQogICAgICAgICAgICAgIC4gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRyNXQgPSAiIjsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIA0KLyoNCiAqIENCRyBHUk9VUEVSDQogKi8gICANCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX0NCR19ncjIzcDVyUjVzM2x0KCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJGY0bDUgPSAkMXJnc1swXTsNCi8qICAgICAgIA0KICAgICAgJHNxbCA9ICJTRUxFQ1QgcnNfbjIscnNfbjFtNSxyc19jbDFzcyxyc190MXI0ZmYgRlJPTSByc19zNXQzcCBMSU1JVCA2IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPT02KSB7DQogICAgICAgICBsNHN0KCRyc19uMiwkcnNfbjFtNSwkcnNfY2wxc3MsJHJzX3QxcjRmZik9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICRoMnNwNHQxbF80ZCA9ICRyc19uMjsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkaDJzcDR0MWxfNGQgPSAiMDAwMDAwMCI7DQogICAgICAgICAkcnNfY2wxc3MgPSAiQSI7DQogICAgICAgICAkcnNfdDFyNGZmID0gImEwMGVfMSI7DQogICAgICB9DQogKi8gICAgICANCiAgICAgICRfcTM1cnkgPSBodHRwX2IzNGxkX3EzNXJ5KDFycjF5KCJmIj0+JGY0bDUpKTsNCiAgICAgICRfaDUxZDVyID0gMXJyMXkoKTsNCiAgICAgICRfaDUxZDVyW10gPSAiQzJudDVudC1UeXA1OiAxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQiOw0KICAgICAgJF8zcjQgPSAiaHR0cDovL2wyYzFsaDJzdC80bjFjYmcvZ3IyM3A1ci9ncjIzcDVyLnBocCI7DQogICAgICAkX2NoID0gYzNybF80bjR0KCk7DQogICAgICAkXzFnNW50ID0gIkVIUiAtIEdyMjNwNXIgQ2w0NW50IjsNCiAgICAgIA0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9VUkwsICRfM3I0KTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIEZBTFNFKTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfSEVBREVSLCAwKTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDYpOw0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9WRVJCT1NFLCA2KTsgIyMjIyMjIyMjIyMgZDViM2cNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAkXzFnNW50KTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgJF9oNTFkNXIpOw0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgNik7DQogICAgICAvL2MzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfQ09PS0lFSkFSLCBSRVNUX0NPT0tJRUZJTEUpOw0KICAgICAgLy9jM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0NPT0tJRUZJTEUsIFJFU1RfQ09PS0lFRklMRSk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1BPU1QsIDYpOw0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9QT1NURklFTERTLCAkX3EzNXJ5KTsNCi8vICAgICAgJHI1c3AybnM1ID0gczNic3RyKGMzcmxfNXg1YygkX2NoKSwwLC1hKTsNCiAgICAgICRyNXNwMm5zNSA9IGMzcmxfNXg1YygkX2NoKTsNCg0KCSAgJHNxbCA9ICJTRUxFQ1Qgc3QxeV80bmQiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzFkbTRzczQybiINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIA0KCSAgbDRzdCgkc3QxeV80bmQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQoJICAkcHR0eXA1ID0gKCRzdDF5XzRuZD09InkiPyA2OmEpOw0KCQkgDQoJICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvY2JnLnBocCIpOw0KICAgICAgJHAxcnM1ZCA9IF9wMXJzNV9DQkcoJHI1c3AybnM1LCAkcHR0eXA1KTsNCiAgICAgICANCgkgICRzcWwgPSAiU0VMRUNUIGMyZDUsZDQxZ19zdCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7IA0KCQkgDQoJICAkcHI0bTUgPSAiIjsNCiAJICAkczVjMm5kID0gMXJyMXkoKTsNCgkgICRyNXNhID0gJGRiLT5xMzVyeSgkc3FsKTsNCgkgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzYSk+MCkgew0KCQkgd2g0bDUobDRzdCgkZDQxZ19jZCwkZDQxZ19zdCk9JGRiLT5mNXRjaFIydygkcjVzYSkpIHsNCgkJICAgIHN3NHRjaCgkZDQxZ19zdCkgew0KCQkJICAgYzFzNSAicHI0bTFyeSI6DQoJCQkgCSAkcHI0bTUgPSA1cjVnX3I1cGwxYzUoIltbOnNwMWM1Ol0rID48KCl+KjomfC5cIi1dKyIsIiIsdHI0bSgkZDQxZ19jZCkpOy8vIiRkNDFnX2NkIjsNCgkJCQkgYnI1MWs7DQoJCQkgICBkNWYxM2x0OiANCgkJCQkgJHM1YzJuZFtdID0gNXI1Z19yNXBsMWM1KCJbWzpzcDFjNTpdKyA+PCgpfio6JnwuXCItXSsiLCIiLHRyNG0oJGQ0MWdfY2QpKTsgLy8iJGQ0MWdfY2QiOw0KCQkJCSBicjUxazsNCgkJICAgIH0NCgkJIH0NCgkgIH0NCg0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5wcjJjXzRkLDEuYzJkNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAxIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIDEucHIyY180ZCI7DQogICAgICAkcjVzID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICRwcjJjXzFyciA9IDFycjF5KCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1cyk+MCkgew0KICAgICAgICAgd2g0bDUobDRzdCgkNGQsJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1cykpIHsNCiAgICAgICAgICAgIDVyNWcoICIoWzAtOV17NixhfSkuKFswLTldezYsYX0pIiwgJGMyZDUsICRyNWdzICk7DQogICAgICAgICAgICAkcHIyY18xcnJbXSA9IDVyNWdfcjVwbDFjNSgiW1s6c3AxYzU6XSsgPjwoKX4qOiZ8LlwiLV0rIiwiIix0cjRtKCRjMmQ1KSk7IC8vICRjMmQ1Ow0KICAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICAkZHggPSAkcHI0bTUuIjsiOw0KIAkgIGYycigkND0wOyQ0PDZpOyQ0KyspIHsNCgkJICRkeCAuPSAkczVjMm5kWyQ0XS4iOyI7DQoJICB9DQoJICAkc2cgPSAiIjsNCgkgIGYycigkND0wOyQ0PDZpOyQ0KyspIHsNCgkJICRzZyAuPSAkcHIyY18xcnJbJDRdLiI7IjsNCgkgIH0NCiANCiAgICAgICRyNXN4ID0gJHI1c3AybnM1Oy8vLiIjIyNFT1IiOw0KDQogICAgICAkc3FsID0gIlJFUExBQ0UgSU5UTyAiLlhPQ1BfUFJFRklYLiI1aHJfY2JnX3I1czNsdCAocDF0NDVudF80ZCwxZG00c3M0Mm5fNGQscjVzcDJuczVfdHh0MCxyNXNwMm5zNV90eHQ2LHI1c3AybnM1X3R4dGEscjVzcDJuczVfdHh0byxyNXNwMm5zNV90eHR1LGNyNTF0NWRfM3M1cl80ZCxyc19jbDFzcyx0MXI0ZmYsYzJkNSxyc190MXI0ZmYpIg0KICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJHI1c3gnLCckZHgnLCckcjVzeCcsJyRzZycsJyRyNXN4JywnJDNzNXJfNGQnLCciLiRwMXJzNWRbInJzX2NsMXNzIl0uIicsJyIuJHAxcnM1ZFsidDFyNGZmIl0uIicsJyIuJHAxcnM1ZFsiYzJkNSJdLiInLCciLiRwMXJzNWRbInJzX3QxcjRmZiJdLiInKSI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgYzNybF9jbDJzNSAoJF9jaCk7DQoJICANCiAgICAgIHI1dDNybiAkdGg0cy0+Q0JHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiBDQkdSNXMzbHQoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCkgew0KICAgICAgcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci80bmNsM2Q1L3QxcjRmZi5waHAiKTsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICBnbDJiMWwgJHQxcjRmZl8ycHQ7DQoNCiAgICAgICRzcWwgPSAiU0VMRUNUIDEucnNfdDFyNGZmLDEuY3I1MXQ1ZF9kdHRtLDEucjVzcDJuczVfdHh0MCwxLnI1c3AybnM1X3R4dDYsMS5yNXNwMm5zNV90eHRhLDEucjVzcDJuczVfdHh0bywxLnI1c3AybnM1X3R4dHUsMS5zdDF0M3NfY2QsYy5wNXJzMm5fbm0sIg0KICAgICAgICAgICAuICIxLmMyZDUsMS50MXI0ZmYsMS5yc19jbDFzcywxLjNuM3MxLDEuM24zc3AsMS4zbjNzciwxLjNuM3M0LDEuM24zc2QsMS50bSwxLnJzX3QxcjRmZmEsMS50MXI0ZmZfc3AsMS50MXI0ZmZfc3IsMS50MXI0ZmZfczQsMS50MXI0ZmZfc2QsMS50MXI0ZmZfczEiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9jYmdfcjVzM2x0IDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iM3M1cnMgYiBPTiBiLjNzNXJfNGQgPSAxLmNyNTF0NWRfM3M1cl80ZCINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGMgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICANCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT09Nikgew0KICAgICAgICAgbDRzdCgkcnNfdDFyNGZmLCRjcjUxdDVkX2R0dG0sJHI1czAsJHI1czYsJHI1c2EsJHI1c28sJHI1c3UsJGRyZ19zdDF0M3MsJDJwLCRjMmQ1LCR0MXI0ZmYsJHJzX2NsMXNzLCQzbjNzMSwkM24zc3AsJDNuM3NyLCQzbjNzNCwkM24zc2QsJHRtLCRyc190MXI0ZmZhLCR0MXI0ZmZfc3AsJHQxcjRmZl9zciwkdDFyNGZmX3M0LCR0MXI0ZmZfc2QsJHQxcjRmZl9zMSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICR0MnQxbF90MXI0ZmY9ICR0MXI0ZmYgKyAkdDFyNGZmX3NwICsgJHQxcjRmZl9zciArICR0MXI0ZmZfczQgKyAkdDFyNGZmX3NkICsgJHQxcjRmZl9zMTsNCgkgICAgICRzcWwgPSAiU0VMRUNUIHN0MXlfNG5kIg0KICAgICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8xZG00c3M0Mm4iDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICANCiAgICAgICAgIGw0c3QoJHN0MXlfNG5kKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KCQkgJHB0dHlwNSA9ICgkc3QxeV80bmQ9PSJ5Ij8gNjphKTsNCgkJIA0KCQkgcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci80bmNsM2Q1L2NiZy5waHAiKTsNCiAgICAgICAgICRyNXMgPSBfcDFyczVfQ0JHKCRjMmQ1LCAkcHR0eXA1KTsNCiAgICAgICAgIA0KICAgICAgICAgJGQ0MWcgPSA1eHBsMmQ1KCI7IiwgJHI1czYpOw0KICAgICAgICAgJHByMmMgPSA1eHBsMmQ1KCI7IiwgJHI1c28pOw0KICAgICAgICAgDQogICAgICAgICAkZDV0MTRsID0gIkQ0MWduMnMxOjx0MWJsNSBjbDFzcz0neWw0c3QnIHN0eWw1PSdtMXJnNG4tYjJ0dDJtOjYwcHg7Jz4iDQogICAgICAgICAgICAgICAgIC4gIjxjMmxncjIzcD48YzJsIHc0ZHRoPSc2MDAnLz48YzJsIHc0ZHRoPSc2MDAnLz48L2MybGdyMjNwPiINCiAgICAgICAgICAgICAgICAgLiAiPHRoNTFkPjx0cj48dGQ+SUNENjA8L3RkPjx0ZD5TdDF0M3M8L3RkPjwvdHI+PC90aDUxZD48dGIyZHk+IjsNCiAgICAgICAgIGYycjUxY2goJGQ0MWcgMXMgJGs9PiR2KSB7DQogICAgICAgICAgICA0ZigkY2QhPSIiKSB7DQogICAgICAgICAgICAgICAkZDV0MTRsIC49ICI8dHI+PHRkPiR2PC90ZD48dGQgc3R5bDU9J3Q1eHQtMWw0Z246YzVudDVyOyc+PC90ZD48L3RyPiI7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICAkZDV0MTRsIC49ICI8L3RiMmR5PjwvdDFibDU+IjsNCiAgICAgICAgICRkNXQxNGwgLj0gIlByMmM1ZDNyNTo8dDFibDUgY2wxc3M9J3lsNHN0Jz4iDQogICAgICAgICAgICAgICAgICAuICI8YzJsZ3IyM3A+PGMybCB3NGR0aD0nNjAwJy8+PGMybCB3NGR0aD0nNjAwJy8+PGMybCB3NGR0aD0nYWkwJy8+PC9jMmxncjIzcD4iDQogICAgICAgICAgICAgICAgICAuICI8dGg1MWQ+PHRyPjx0ZD5JQ0Q5Q008L3RkPjx0ZD5TdDF0M3M8L3RkPjx0ZD5DbDFzczwvdGQ+PC90cj48L3RoNTFkPjx0YjJkeT4iOw0KICAgICAgICAgZjJyNTFjaCgkcHIyYyAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgIDRmKCRjZCE9IiIpIHsNCiAgICAgICAgICAgICAgICRkNXQxNGwgLj0gIjx0cj48dGQ+JHY8L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz48L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz48L3RkPjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCgkJIA0KICAgICAgICAgJGQ1dDE0bCAuPSAiPC90YjJkeT48L3QxYmw1PiI7DQogICAgICAgICANCiAgICAgICAgICRyNXQgPSAiPGQ0diBzdHlsNT0nZjJudC13NTRnaHQ6YjJsZDtwMWRkNG5nOmlweDt0NXh0LTFsNGduOmM1bnQ1cjtjMmwycjp3aDR0NTsiLigkZHJnX3N0MXQzcz09ImY0bjFsIj8iYjFja2dyMjNuZC1jMmwycjojaWlpaTc3OyI6ImIxY2tncjIzbmQtYzJsMnI6I2FhYWFlZTsiKS4iJz4iDQoJCQkJICAgICAgLiAiSDFzNGwgR3IyM3A1ciIuKCRkcmdfc3QxdDNzPT0iZjRuMWwiPyIgLSBGNG4xbCI6IiIpLiI8L2Q0dj48dDFibDUgY2wxc3M9J3lmcm0nIHN0eWw1PSd3NGR0aDo2MDAlOyc+PGMybGdyMjNwPjxjMmwgdzRkdGg9JzZpMCcvPjxjMmwvPjwvYzJsZ3IyM3A+PHRiMmR5PiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5PcDVyMXQyci9XMWt0MyA6IDwvdGQ+PHRkPiQycCAvICIuc3FsYTRuZCgkY3I1MXQ1ZF9kdHRtKS4iPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5UNHA1IFAxczQ1biA6IDwvdGQ+PHRkPiIuJHI1c1sncDF0NDVudF90eXA1X2Q1c2NyNHB0NDJuJ10uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+SzJkNSBJTkFDQkcgOiA8L3RkPjx0ZD4iLiRyNXNbJ2MyZDUnXS4iPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5ENXNrcjRwczQgOiA8L3RkPjx0ZD4iLiRyNXNbJ2Q1c2NyNHB0NDJuJ10uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+VDRwNSBDQkcgOiA8L3RkPjx0ZD4iLiRyNXNbJ2RyZ190eXA1J10uIjwvdGQ+PC90cj4iDQovLyAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5TNXY1cjR0eS9JbnQ1bnM0dHkgOiA8L3RkPjx0ZD4iLiRyNXNbJ3M1djVyNHR5J10uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIyAuICI8dHI+PHRkPkFMT1MgOiA8L3RkPjx0ZD4iLiRyNXNbJzFsMnMnXS4iPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5UMXI0ZiA6IDwvdGQ+PHRkPlJwICIudDJNMm41eSgkdDFyNGZmKS4iPC90ZD48L3RyPiINCgkJCSAgIC4gIjx0cj48dGQ+SzJkNSBTM2IgQWMzdDUvIENocjJuNGMgOiA8L3RkPjx0ZD4iLiQzbjNzMS4iICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUMXI0ZmYgOlJwLiAiLnQyTTJuNXkoJHQxcjRmZl9zMSkuIjwvdGQ+PC90cj4iDQoJCQkgICAgLiAiPHRyPjx0ZD5TcDVjNDFsIFByMmM1ZDNyIDogPC90ZD48dGQ+Ii4kM24zc3AuIiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUMXI0ZmYgOlJwLiAiLnQyTTJuNXkoJHQxcjRmZl9zcCkuIjwvdGQ+PC90cj4iDQoJCQkJIC4gIjx0cj48dGQ+U3A1YzQxbCBQcjJzdGg1czRzIDogPC90ZD48dGQ+Ii4kM24zc3IuIiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUMXI0ZmYgOlJwLiAiLnQyTTJuNXkoJHQxcjRmZl9zcikuIjwvdGQ+PC90cj4iDQoJCQkJICAuICI8dHI+PHRkPlNwNWM0MWwgSW52NXN0NGcxdDQybiA6IDwvdGQ+PHRkPiIuJDNuM3M0LiIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VDFyNGZmIDpScC4gIi50Mk0ybjV5KCR0MXI0ZmZfczQpLiI8L3RkPjwvdHI+Ig0KCQkJCSAgIC4gIjx0cj48dGQ+U3A1YzQxbCBEcjNnIDogPC90ZD48dGQ+Ii4kM24zc2QuIiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUMXI0ZmYgOlJwLiAiLnQyTTJuNXkoJHQxcjRmZl9zZCkuIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+SzVsMXMgUlMgOiA8L3RkPjx0ZD4iLiRyNXNbJ3JzX2NsMXNzJ10uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+VDRwNSBUMXI0ZiA6IDwvdGQ+PHRkPiIuJHQxcjRmZl8ycHRbJHJzX3QxcjRmZmFdLiI8L3RkPjwvdHI+Ig0KCQkJICAgIC4gIjx0cj48dGQ+VDJ0MWwgVDFyNGYgOiA8L3RkPjx0ZD5ScC4gIi50Mk0ybjV5KCR0MnQxbF90MXI0ZmYpLiI8L3RkPjwvdHI+Ig0KCQkJICANCiAgICAgICAgICAgICAgLiAoKCRyNXNbIjVycjJyIl0gIT0gIiIpID8gIjx0cj48dGQ+RXJyMnIgOiA8L3RkPjx0ZD4kcjVzWzVycjJyXTwvdGQ+PC90cj4iIDogIiIgKQ0KLy8gICAgICAgICAgICAgIC4gIjx0cj48dGQ+U3QxdDNzIEdyMjNwNXIgOiA8L3RkPjx0ZD48c3AxbiBzdHlsNT0nZmwyMXQ6bDVmdDsnPiRyNXNbc3QxdDNzXTwvc3Axbj4gPHNwMW4gMm5jbDRjaz0ndDJnZ2w1ZDV0MTRsZHJnKHRoNHMsNXY1bnQpOycgc3R5bDU9J2ZsMjF0OnI0Z2h0OycgY2wxc3M9J3lsbmsnPltkNXQ0bF08L3NwMW4+PC90ZD48L3RyPiINCi8vICAgICAgICAgICAgICAuICI8dHIgNGQ9J2RyZ19kNXQxNGwnIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz48dGQgYzJsc3Axbj0nYScgc3R5bDU9J3AxZGQ0bmc6NjBweDt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojZmZmZjUwOyc+JGQ1dDE0bDwvdGQ+PC90cj4iDQoJCQkgDQogICAgICAgICAgICAgIC4gKCRkcmdfc3QxdDNzPT0iZjRuMWwiPyAiPHRyPjx0ZCBjMmxzcDFuPSdhJz48NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nUHI0bnQnIDJuY2w0Y2s9J3ByNG50X2NiZyhcIiRwMXQ0NW50XzRkXCIsXCIkMWRtNHNzNDJuXzRkXCIpOycvPiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoVFJVRT8iJm5ic3A7PDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J0VkNHQgSDFzNGwnIDJuY2w0Y2s9JzVkNHRfY2JnKCk7Jy8+IjoiIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI8dHI+PHRkIGMybHNwMW49J2EnPjw0bnAzdCBjbDFzcz0nYnRuZDVmJyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdGNG4xbCcgMm5jbDRjaz0nZjRuMWw0ejVfY2JnKCk7Jy8+PC90ZD48L3RyPiIpDQovLyAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5kNWIzZyA6IDwvdGQ+PHRkPiRyc19jbDFzczwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRyNXQgPSAiIjsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9jYmdfZ3IyM3A1clByMmM1c3MoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICQzczVyXzRkID0gZzV0VXM1cklEKCk7DQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIHJzX24yLHJzX24xbTUscnNfY2wxc3MgRlJPTSByc19zNXQzcCBMSU1JVCA2IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPT02KSB7DQogICAgICAgICBsNHN0KCRyc19uMiwkcnNfbjFtNSwkcnNfY2wxc3MpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAkaDJzcDR0MWxfNGQgPSAkcnNfbjI7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gIjAwMDAwMDAiOw0KICAgICAgICAgJHJzX2NsMXNzID0gIkEiOw0KICAgICAgfQ0KCSAgDQogICAgICAkc3FsID0gIlNFTEVDVCBzdDF0M3NfY2QiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kcmdfcjVzM2x0Ig0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPT02KSB7DQogICAgICAgICBsNHN0KCRkcmdfc3QxdDNzKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgNGYoJGRyZ19zdDF0M3M9PSJmNG4xbCIpIHsNCiAgICAgICAgICAgIHI1dDNybiAxcnIxeSgiRklOQUwiLCR0aDRzLT5DQkdSNXMzbHQoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCkpOw0KICAgICAgICAgfQ0KICAgICAgfQ0KCSAgDQogICAgICAkc3FsID0gIlNFTEVDVCAxLnAxdDQ1bnRfNGQsMS4xZG00c3M0Mm5fNGQsMS4xZG00c3M0Mm5fZHR0bSwxLmQ0c2NoMXJnNV9kdHRtLDEuZDRzY2gxcmc1LCINCiAgICAgICAgICAgLiAiYi5wMXQ0NW50XzV4dF80ZCxjLnA1cnMybl9ubSxjLjFkbV9nNW5kNXJfY2QsZC4ycmdfbm0sMS5zdDF5XzRuZCwiDQogICAgICAgICAgIC4gIihUT19EQVlTKDEuZDRzY2gxcmc1X2R0dG0pLVRPX0RBWVMoMS4xZG00c3M0Mm5fZHR0bSkrNikgMXMgbDJzLCINCiAgICAgICAgICAgLiAiYy5iNHJ0aF9kdHRtLCAoVE9fREFZUygxLmQ0c2NoMXJnNV9kdHRtKS1UT19EQVlTKGMuYjRydGhfZHR0bSkrNikgMXMgMWc1LCINCiAgICAgICAgICAgLiAiMS5rNWwxc19yMXcxdCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnQgYiBVU0lORyhwMXQ0NW50XzRkKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGMgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiIycmdzIGQgT04gZC4ycmdfNGQgPSAxLjJyZ180ZCINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS5zdDF0M3NfY2QgPSAnbjJybTFsJyINCiAgICAgICAgICAgLiAiIEFORCBiLnN0MXQzc19jZCBJTiAoJzFjdDR2NScsJ24ycm0xbCcpIg0KICAgICAgICAgICAuICIgR1JPVVAgQlkgMS5wMXQ0NW50XzRkLDEuMWRtNHNzNDJuXzRkIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KCSAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgIGw0c3QoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCwkMWRtNHNzNDJuX2R0dG0sJGQ0c2NoMXJnNV9kdHRtLCRkNHNjaDFyZzUsDQogICAgICAgICAgICAgICAgICAgICRtcm4sJHAxdDQ1bnRfbm0sJDFkbV9nNW5kNXJfY2QsJDJyZ19ubSwkc3QxeV80bmQsJGwycywkYjRydGhfZHR0bSwNCiAgICAgICAgICAgICAgICAgICAgJDFnNSwkcDF0NDVudF9jbDFzcyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgIDRmKHRyNG0oJG1ybik9PSIiKSBjMm50NG4zNTsNCgkJIA0KCQkgJHAxdDQ1bnRfY2wxc3MgPSAkcDF0NDVudF9jbDFzcyswOw0KCQkgDQogICAgICAgICAkc3FsID0gIlNFTEVDVCAyYnNydl92MWwgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZjRuZDRuZ3MiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAyYmpfNGQgPSAnIi5fRUhSX0JJUlRIV0VJR0hUX0ZJTkQuIiciDQogICAgICAgICAgICAgIC4gIiBBTkQgc3QxdDNzX2NkID0gJ24ycm0xbCciDQogICAgICAgICAgICAgIC4gIiBPUkRFUiBCWSBjcjUxdDVkX2R0dG0gREVTQyBMSU1JVCA2IjsNCiAgICAgICAgICRyNXMgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMpPjApIHsNCiAgICAgICAgICAgIGw0c3QoJGI0cnRodzU0Z2h0KT0kZGItPmY1dGNoUjJ3KCRyNXMpOw0KICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRiNHJ0aHc1NGdodCA9IDA7DQogICAgICAgICB9DQogICANCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIGMyZDUsZDQxZ19zdCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAkcHI0bTUgPSAiIjsNCiAgICAgICAgICRzNWMybmQgPSAxcnIxeSgpOw0KICAgICAgICAgJHI1cyA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1cyk+MCkgew0KICAgICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ19jZCwkZDQxZ19zdCk9JGRiLT5mNXRjaFIydygkcjVzKSkgew0KICAgICAgICAgICAgICAgc3c0dGNoKCRkNDFnX3N0KSB7DQogICAgICAgICAgICAgICAgICBjMXM1ICJwcjRtMXJ5IjoNCiAgICAgICAgICAgICAgICAgICAgICRwcjRtNSA9IDVyNWdfcjVwbDFjNSgiW1s6c3AxYzU6XSsgPjwoKX4qOiZ8LlwiLV0rIiwiIix0cjRtKCRkNDFnX2NkKSk7Ly8iJGQ0MWdfY2QiOw0KICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICBkNWYxM2x0OiANCiAgICAgICAgICAgICAgICAgICAgICRzNWMybmRbXSA9IDVyNWdfcjVwbDFjNSgiW1s6c3AxYzU6XSsgPjwoKX4qOiZ8LlwiLV0rIiwiIix0cjRtKCRkNDFnX2NkKSk7IC8vIiRkNDFnX2NkIjsNCiAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KCQkgDQogICAgICAgICAkc3FsID0gIlNFTEVDVCAxLnByMmNfNGQsMS5jMmQ1IEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIDEiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgT1JERVIgQlkgMS5wcjJjXzRkIjsNCiAgICAgICAgICRyNXMgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgJHByMmNfMXJyID0gMXJyMXkoKTsNCiAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzKT4wKSB7DQogICAgICAgICAgICB3aDRsNShsNHN0KCQ0ZCwkYzJkNSk9JGRiLT5mNXRjaFIydygkcjVzKSkgew0KICAgICAgICAgICAgICAgNXI1ZyggIihbMC05XXs2LGF9KS4oWzAtOV17NixhfSkiLCAkYzJkNSwgJHI1Z3MgKTsNCiAgICAgICAgICAgICAgICRwcjJjXzFycltdID0gNXI1Z19yNXBsMWM1KCJbWzpzcDFjNTpdKyA+PCgpfio6JnwuXCItXSsiLCIiLHRyNG0oJGMyZDUpKTsgLy8gJGMyZDU7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQoJCSRzcWwgPSAiU0VMRUNUIDFkbCxzcHIyYzVkM3I1LHNkcjNnLHM0bnY1c3Q0ZzF0NDJuLHNwcjJzdGg1czRzLHQ1bDVtNWQ0YzRuNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9zcDVjNDFsIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICRyNXNvID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgICBsNHN0KCQxZGwsJHNwcjJjNWQzcjUsJHNkcjNnLCRzNG52NXN0NGcxdDQybiwkc3ByMnN0aDVzNHMsJHQ1bDVtNWQ0YzRuNSk9JGRiLT5mNXRjaFIydygkcjVzbyk7DQoJCQkgNGYoJHNwcjJjNWQzcjU9PSIiKXsNCgkJCQkkc3ByMmM1ZDNyNSA9ICItIjt9DQoJCQkJNWxzNXsNCgkJCQkkc3ByMmM1ZDNyNT0kc3ByMmM1ZDNyNTt9OwkNCgkJNGYoJHNkcjNnPT0iIil7DQoJCQkJJHNkcjNnID0gIi0iO30NCgkJCQk1bHM1ew0KCQkJCSRzZHIzZz0kc2RyM2c7fTsNCgkJNGYoJHNwcjJzdGg1czRzPT0iIil7DQoJCQkJJHNwcjJzdGg1czRzID0gIi0iO30NCgkJCQk1bHM1ew0KCQkJCSRzcHIyc3RoNXM0cz0kc3ByMnN0aDVzNHM7fTsNCgkJNGYoJHM0bnY1c3Q0ZzF0NDJuPT0iIil7DQoJCQkJJHM0bnY1c3Q0ZzF0NDJuID0gIi0iO30NCgkJCQk1bHM1ew0KCQkJCSRzNG52NXN0NGcxdDQybj0kczRudjVzdDRnMXQ0Mm47fTsJDQoJCQkgDQogICAgICAgICBzdzR0Y2goJGQ0c2NoMXJnNSkgew0KICAgICAgICAgICAgYzFzNSAiaDJtNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiNiI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInRyMW5zZjVyIjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICJhIjsNCiAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAicjNuMXcxeSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiaSI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInI1ZjNzNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAibyI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgImQ1YzUxczVkIjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICJ1IjsNCiAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgZDVmMTNsdDoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICI2IjsgLy8gaDJtNSANCiAgICAgICAgIH0NCgkJIA0KICAgICAgICAgJG1ybnggPSAkbXJuOw0KICAgICAgICAgJHAxeW01bnQgPSAoNG50KSAkdHRsX2dyMW5kOw0KICAgICAgICAgJHB0dHlwNSA9ICgkc3QxeV80bmQ9PSJ5Ij8iNiI6ImEiKTsNCiAgICAgICAgICQxZDF0NSA9IHNxbGFjZ3MoJDFkbTRzczQybl9kdHRtKTsNCiAgICAgICAgICRkZDF0NSA9IHNxbGFjZ3MoJGQ0c2NoMXJnNV9kdHRtKTsNCiAgICAgICAgIDRmKCRzdDF5XzRuZD09Im4iKSB7ICRkZDF0NSA9ICQxZDF0NTsgfQ0KICAgICAgICAgJDFsMnMgPSAoNG50KSAkbDJzOw0KICAgICAgICAgJGJkMXQ1ID0gc3FsYWNncygkYjRydGhfZHR0bSk7DQogICAgICAgICAkczV4ID0gKCQxZG1fZzVuZDVyX2NkPT0ibSI/IjYiOigkMWRtX2c1bmQ1cl9jZD09ImYiPyJhIjoiMCIpKTsNCiAgICAgICAgICRid3QgPSAkYjRydGh3NTRnaHQ7DQogICAgICAgICAkMWRsPSAkMWRsOw0KCQkgJHNwPSAkc3ByMmM1ZDNyNTsNCgkJICRzcj0gJHNwcjJzdGg1czRzOw0KCQkgJHM0PSAkczRudjVzdDRnMXQ0Mm47DQoJCSAkc2Q9ICRzZHIzZzsNCgkJICR0bT0gIi0iOw0KCQkgJHBkeCA9ICRwcjRtNTsNCiAgICAgICAgICRkeCA9ICIiOw0KCQkgJHBkeHM9JHByNG01Ow0KCQkgJGR4cz0iIjsNCgkJZjJyKCQ0PTA7JDQ8YTk7JDQrKykgew0KCQkJJGR4cyAuPSAkczVjMm5kWyQ0XS4iOyI7DQoJCQkNCgkJIH0NCgkJICRzZ3M9ICIiOw0KCQkgZjJyKCQ0PTA7JDQ8bzA7JDQrKykgew0KCQkJJHNncyAuPSAkcHIyY18xcnJbJDRdLiI7IjsNCgkJIH0NCg0KCQkvKiBmMnIoJDQ9MDskNDxhOTskNCsrKSB7DQoJCQkkZHggLj0gJHM1YzJuZFskNF0uIjsiOw0KCQkgfQ0KCQkgJHNnID0gIiI7DQoJCSBmMnIoJDQ9MDskNDxvMDskNCsrKSB7DQoJCQkkc2cgLj0gJHByMmNfMXJyWyQ0XS4iOyI7DQoJCSB9Ki8NCgkJIAkgZjJyKCQ0PTA7JDQ8YTk7JDQrKykgew0KCQkgNGYgKCRzNWMybmRbJDRdPT0iIil7DQoJCSAkZHggLj0gIi0iLiI7Ijt9DQoJCSA1bHM1ew0KCQkJJGR4IC49ICRzNWMybmRbJDRdLiI7IjsNCgkJCX07DQoJCSB9DQoJCSAkc2cgPSAiIjsNCgkJIGYycigkND0wOyQ0PG8wOyQ0KyspIHsNCgkJCTRmICgkcHIyY18xcnJbJDRdPT0iIil7DQoJCSAkc2cgLj0gIi0iLiI7Ijt9DQoJCSA1bHM1ew0KCQkJJHNnIC49ICRwcjJjXzFyclskNF0uIjsiO307DQoJCSB9DQoJCSANCgkJJDRuID0gJHB0dHlwNS4iOyIuJDFkMXQ1LiI7Ii4kZGQxdDUuIjsiLiRiZDF0NS4iOyIuJGJ3dC4iOyIuJHM1eC4iOyIuJGRzdDF0LiI7Ii4kcGR4LiI7Ii4kZHguJHNnLiQxZGwuIjsiLiRzcC4iOyIuJHNyLiI7Ii4kczQuIjsiLiRzZC4iOyIuJHRtLiI7IjsNCgkJDQoJCSRjYmcgPSA1eDVjKFhPQ1BfQ0JHLicgIicuJDRuLiciJyk7DQoJCSANCgkJIC8qNGYoc3RybDVuKCRjYmcpID4gNjApIHsNCgkJICAgIHI1dDNybiAxcnIxeSgiRVJST1IiLCAkY2JnKTsNCgkJIH0qLw0KCQkgDQoJICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvY2JnLnBocCIpOw0KICAgICAgICANCgkJICRwMXJzNWQgPSBfcDFyczVfQ0JHKCRjYmcsICRwdHR5cDUsICRwMXQ0NW50X2NsMXNzLCAkMWRsLCAkMWwycyk7DQoNCgkJICRzcWwgPSAiUkVQTEFDRSBJTlRPICIuWE9DUF9QUkVGSVguIjVocl9jYmdfcjVzM2x0IChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCxyNXNwMm5zNV90eHQwLHI1c3AybnM1X3R4dDYscjVzcDJuczVfdHh0YSxyNXNwMm5zNV90eHRvLHI1c3AybnM1X3R4dHUsY3I1MXQ1ZF8zczVyXzRkLHJzX2NsMXNzLHQxcjRmZixjMmQ1LHJzX3QxcjRmZiwzbjNzcCwzbjNzMSwzbjNzciwzbjNzNCwzbjNzZCxyc190MXI0ZmZhLHQxcjRmZl9zcCx0MXI0ZmZfc3IsdDFyNGZmX3M0LHQxcjRmZl9zZCx0MXI0ZmZfczEpIg0KICAgICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJywnJHBkeHM7JGR4cycsJycsJyRzZ3MnLCcnLCckM3M1cl80ZCcsJyIuJHAxcnM1ZFsicnNfY2wxc3MiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmYiXS4iJywnIi4kcDFyczVkWyJjMmQ1Il0uIicsJyIuJHAxcnM1ZFsicnNfdDFyNGZmIl0uIicsJyIuJHAxcnM1ZFsic3AiXS4iJywnIi4kcDFyczVkWyJzMSJdLiInLCciLiRwMXJzNWRbInNyIl0uIicsJyIuJHAxcnM1ZFsiczQiXS4iJywnIi4kcDFyczVkWyJzZCJdLiInLCciLiRwMXJzNWRbInJzX3QxcjRmZmEiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfc3AiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfc3IiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfczQiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfc2QiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfczEiXS4iJykiOw0KCQkgJGRiLT5xMzVyeSgkc3FsKTsNCgkJJHNxbD0gIjNwZDF0NSBzcDVjNDFsZ3IyM3BzIHM1dCBzdDF0M3M9MCI7DQoJCSAkZGItPnEzNXJ5KCRzcWwpOwkNCgkJIHI1dDNybiAkdGg0cy0+Q0JHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpOw0KCQkgDQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuIDFycjF5KCJFUlJPUiIsIkVycjJyIFM0c3Q1bSB0NGQxayBkNGs1bjFsNCEgPGJyLz5TNGwxaGsxbiBoM2Izbmc0IEFkbTRuNHN0cjF0MnIuIik7DQogICAgICB9DQoJICANCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2NiZ19ncjIzcDVyUzVuZCgkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgIA0KICAgICAgDQogICAgICAkc3FsID0gIlNFTEVDVCByc19uMixyc19uMW01LHJzX2NsMXNzIEZST00gcnNfczV0M3AgTElNSVQgNiI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT09Nikgew0KICAgICAgICAgbDRzdCgkcnNfbjIsJHJzX24xbTUsJHJzX2NsMXNzKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gJHJzX24yOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRoMnNwNHQxbF80ZCA9ICIwMDAwMDAwIjsNCiAgICAgICAgICRyc19jbDFzcyA9ICJBIjsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJGgyc3A0dDFsX3R5cDUgPSBzM2JzdHIoJHJzX2NsMXNzLDAsNik7IC8vLyBBIEIgQ0QgUlNDTSBSUyBkbGwNCiAgICAgICRwMXQ0NW50X2NsMXNzID0gIm8iOw0KICAgICAgJGY0bGw1cjYgPSBzcHI0bnRmKCIlLW91cyIsIiIpOw0KICAgICAgJGY0bGw1cmEgPSBzcHI0bnRmKCIlLW9zIiwiIik7DQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIHN0MXQzc19jZCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2RyZ19yNXMzbHQiDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgIGw0c3QoJGRyZ19zdDF0M3MpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICA0ZigkZHJnX3N0MXQzcz09ImY0bjFsIikgew0KICAgICAgICAgICAgcjV0M3JuIDFycjF5KCJGSU5BTCIsJHRoNHMtPkNCR1I1czNsdCgkcDF0NDVudF80ZCwkMWRtNHNzNDJuXzRkKSk7DQogICAgICAgICB9DQogICAgICB9DQogICAgICAkc3FsID0gIlNFTEVDVCAxLnAxdDQ1bnRfNGQsMS4xZG00c3M0Mm5fNGQsMS4xZG00c3M0Mm5fZHR0bSwxLmQ0c2NoMXJnNV9kdHRtLDEuZDRzY2gxcmc1LCINCiAgICAgICAgICAgLiAiYi5wMXQ0NW50XzV4dF80ZCxjLnA1cnMybl9ubSxjLjFkbV9nNW5kNXJfY2QsZC4ycmdfbm0sMS5zdDF5XzRuZCwiDQogICAgICAgICAgIC4gIihUT19EQVlTKDEuZDRzY2gxcmc1X2R0dG0pLVRPX0RBWVMoMS4xZG00c3M0Mm5fZHR0bSkrNikgMXMgbDJzLCINCiAgICAgICAgICAgLiAiYy5iNHJ0aF9kdHRtLCAoVE9fREFZUygxLmQ0c2NoMXJnNV9kdHRtKS1UT19EQVlTKGMuYjRydGhfZHR0bSkrNikgMXMgMWc1LCINCiAgICAgICAgICAgLiAiMS5rNWwxc19yMXcxdCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnQgYiBVU0lORyhwMXQ0NW50XzRkKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGMgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiIycmdzIGQgT04gZC4ycmdfNGQgPSAxLjJyZ180ZCINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS5zdDF0M3NfY2QgPSAnbjJybTFsJyINCiAgICAgICAgICAgLiAiIEFORCBiLnN0MXQzc19jZCBJTiAoJzFjdDR2NScsJ24ycm0xbCcpIg0KICAgICAgICAgICAuICIgR1JPVVAgQlkgMS5wMXQ0NW50XzRkLDEuMWRtNHNzNDJuXzRkIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgIGw0c3QoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCwkMWRtNHNzNDJuX2R0dG0sJGQ0c2NoMXJnNV9kdHRtLCRkNHNjaDFyZzUsDQogICAgICAgICAgICAgICAgICAgICRtcm4sJHAxdDQ1bnRfbm0sJDFkbV9nNW5kNXJfY2QsJDJyZ19ubSwkc3QxeV80bmQsJGwycywkYjRydGhfZHR0bSwNCiAgICAgICAgICAgICAgICAgICAgJDFnNSwkcDF0NDVudF9jbDFzcyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgIDRmKHRyNG0oJG1ybik9PSIiKSBjMm50NG4zNTsNCiAgICAgICAgIA0KICAgICAgICAgJHAxdDQ1bnRfY2wxc3MgPSAkcDF0NDVudF9jbDFzcyswOw0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgYzJkNSxkNDFnX3N0IEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICRwcjRtNSA9ICIiOw0KICAgICAgICAgJHM1YzJuZCA9IDFycjF5KCk7DQogICAgICAgICAkcjVzYSA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1c2EpPjApIHsNCiAgICAgICAgICAgIHdoNGw1KGw0c3QoJGQ0MWdfY2QsJGQ0MWdfc3QpPSRkYi0+ZjV0Y2hSMncoJHI1c2EpKSB7DQogICAgICAgICAgICAgICBzdzR0Y2goJGQ0MWdfc3QpIHsNCiAgICAgICAgICAgICAgICAgIGMxczUgInByNG0xcnkiOg0KICAgICAgICAgICAgICAgICAgICAgJHByNG01ID0gNXI1Z19yNXBsMWM1KCJbWzpzcDFjNTpdKyA+PCgpfio6JnwuXCItXSsiLCIiLHRyNG0oJGQ0MWdfY2QpKTsvLyIkZDQxZ19jZCI7DQogICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgIGQ1ZjEzbHQ6IA0KICAgICAgICAgICAgICAgICAgICAgJHM1YzJuZFtdID0gNXI1Z19yNXBsMWM1KCJbWzpzcDFjNTpdKyA+PCgpfio6JnwuXCItXSsiLCIiLHRyNG0oJGQ0MWdfY2QpKTsgLy8iJGQ0MWdfY2QiOw0KICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICAkczVjMm5keCA9IDRtcGwyZDUoInwiLCRzNWMybmQpOw0KICAgICAgICAgDQogICAgICAgICAkc3FsID0gIlNFTEVDVCAyYnNydl92MWwgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZjRuZDRuZ3MiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAyYmpfNGQgPSAnIi5fRUhSX0JJUlRIV0VJR0hUX0ZJTkQuIiciDQogICAgICAgICAgICAgIC4gIiBBTkQgc3QxdDNzX2NkID0gJ24ycm0xbCciDQogICAgICAgICAgICAgIC4gIiBPUkRFUiBCWSBjcjUxdDVkX2R0dG0gREVTQyBMSU1JVCA2IjsNCiAgICAgICAgICRyNXMgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMpPjApIHsNCiAgICAgICAgICAgIGw0c3QoJGI0cnRodzU0Z2h0KT0kZGItPmY1dGNoUjJ3KCRyNXMpOw0KICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRiNHJ0aHc1NGdodCA9IDA7DQogICAgICAgICB9DQogICANCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIDEucHIyY180ZCwxLmMyZDUgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgMSINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgICAgIC4gIiBPUkRFUiBCWSAxLnByMmNfNGQiOw0KICAgICAgICAgJHI1cyA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAkcHIyY18xcnIgPSAxcnIxeSgpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMpPjApIHsNCiAgICAgICAgICAgIHdoNGw1KGw0c3QoJDRkLCRjMmQ1KT0kZGItPmY1dGNoUjJ3KCRyNXMpKSB7DQogICAgICAgICAgICAgICA1cjVnKCAiKFswLTldezYsYX0pLihbMC05XXs2LGF9KSIsICRjMmQ1LCAkcjVncyApOw0KICAgICAgICAgICAgICAgJHByMmNfMXJyW10gPSA1cjVnX3I1cGwxYzUoIltbOnNwMWM1Ol0rID48KCl+KjomfC5cIi1dKyIsIiIsdHI0bSgkYzJkNSkpOyAvLyAkYzJkNTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiRzcWwgPSAiU0VMRUNUIDFkbCxzcHIyYzVkM3I1LHNkcjNnLHM0bnY1c3Q0ZzF0NDJuLHNwcjJzdGg1czRzLHQ1bDVtNWQ0YzRuNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9zcDVjNDFsIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgICAgJHI1c28gPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgIGw0c3QoJDFkbCwkc3ByMmM1ZDNyNSwkc2RyM2csJHM0bnY1c3Q0ZzF0NDJuLCRzcHIyc3RoNXM0cywkdDVsNW01ZDRjNG41KT0kZGItPmY1dGNoUjJ3KCRyNXNvKTsNCiAgICAgICAgDQogICAgICAgICBzdzR0Y2goJGQ0c2NoMXJnNSkgew0KICAgICAgICAgICAgYzFzNSAiaDJtNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiNiI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInRyMW5zZjVyIjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICJhIjsNCiAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAicjNuMXcxeSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiaSI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInI1ZjNzNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAibyI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgImQ1YzUxczVkIjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICJ1IjsNCiAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgZDVmMTNsdDoNCi8vICAgICAgICAgICAgICAgNGYoJHN0MXlfNG5kPT0ieSIpIHsNCi8vICAgICAgICAgICAgICAgICAgJGRzdDF0ID0gImkiOw0KLy8gICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgJGRzdDF0ID0gIjYiOw0KLy8gICAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICANCiAgICAgICAgICRtcm54ID0gc3ByNG50ZigiJS02NnMiLHN0cl9yNXBsMWM1KCItIiwiIiwkbXJuKSk7DQogICAgICAgICAkcDF5bTVudCA9IHNwcjRudGYoIiU2MGQiLCg0bnQpICR0dGxfZ3IxbmQpOw0KICAgICAgICAgJHB0dHlwNSA9ICgkc3QxeV80bmQ9PSJ5Ij8iNiI6ImEiKTsNCiAgICAgICAgICQxZDF0NSA9IHNwcjRudGYoIiUtNjBzIixzcWxhY2dzKCQxZG00c3M0Mm5fZHR0bSkpOw0KICAgICAgICAgJGRkMXQ1ID0gc3ByNG50ZigiJS02MHMiLHNxbGFjZ3MoJGQ0c2NoMXJnNV9kdHRtKSk7DQogICAgICAgICA0Zigkc3QxeV80bmQ9PSJuIikgew0KICAgICAgICAgICAgJGRkMXQ1ID0gJDFkMXQ1Ow0KICAgICAgICAgfQ0KICAgICAgICAgJDFsMnMgPSBzcHI0bnRmKCIldWQiLCg0bnQpICRsMnMpOw0KICAgICAgICAgJGJkMXQ1ID0gc3ByNG50ZigiJS02MHMiLHNxbGFjZ3MoJGI0cnRoX2R0dG0pKTsNCiAgICAgICAgICQxZzV5ID0gIiAgICI7IC8vc3ByNG50ZigiJW9kIixmbDIycigkMWc1L29laS5haSkpOw0KICAgICAgICAgJDFnNWQgPSAiICAgIjsgLy8kMWc1Pm9laT8iIjpzcHI0bnRmKCIlb2QiLCQxZzUpKTsNCiAgICAgICAgICRzNXggPSAoJDFkbV9nNW5kNXJfY2Q9PSJtIj8iNiI6KCQxZG1fZzVuZDVyX2NkPT0iZiI/ImEiOiIwIikpOw0KICAgICAgICAgJGJ3dCA9IHNwcjRudGYoIiV1ZCIsJGI0cnRodzU0Z2h0KTsNCiAgICAgICAgICRwZHggPSBzcHI0bnRmKCIlLTYwcyIsJHByNG01KTsNCiAgICAgICAgICRkeCA9ICIiOw0KCQkgZjJyKCQ0PTA7JDQ8Nmk7JDQrKykgew0KCQkJJGR4IC49ICRzNWMybmRbJDRdLiI7IjsNCgkJIH0NCgkJICRzZyA9ICIiOw0KCQkgZjJyKCQ0PTA7JDQ8Nmk7JDQrKykgew0KCQkJJHNnIC49ICRwcjJjXzFyclskNF0uIjsiOw0KCQkgfQ0KCQkgDQoJCSANCi8qICAgICAgIGYycigkND0wOyQ0PGE5OyQ0KyspIHsNCiAgICAgICAgICAgIDRmKDRzczV0KCRzNWMybmRbJDRdKSkgew0KICAgICAgICAgICAgICAgJGR4IC49IHNwcjRudGYoIiUtNjBzIiwkczVjMm5kWyQ0XSk7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgJGR4IC49IHNwcjRudGYoIiUtNjBzIiwiIik7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICAgJHNnID0gIiI7DQogICAgICAgICBmMnIoJDQ9MDskNDxvMDskNCsrKSB7DQogICAgICAgICAgICA0Zig0c3M1dCgkcHIyY18xcnJbJDRdKSkgew0KICAgICAgICAgICAgICAgJHNnIC49IHNwcjRudGYoIiUtNjBzIiwkcHIyY18xcnJbJDRdKTsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkc2cgLj0gc3ByNG50ZigiJS02MHMiLCIiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiovICAgICAgICAgLyogDQogICAgICAgICAkNG4gPSAkaDJzcDR0MWxfNGQNCiAgICAgICAgICAgICAuICRoMnNwNHQxbF90eXA1DQogICAgICAgICAgICAgLiAkbXJueA0KICAgICAgICAgICAgIC4gJHAxdDQ1bnRfY2wxc3MNCiAgICAgICAgICAgICAuICRwMXltNW50DQogICAgICAgICAgICAgLiAkZjRsbDVyNg0KICAgICAgICAgICAgIC4gJHB0dHlwNQ0KICAgICAgICAgICAgIC4gJDFkMXQ1DQogICAgICAgICAgICAgLiAkZGQxdDUNCiAgICAgICAgICAgICAuICQxbDJzDQogICAgICAgICAgICAgLiAkYmQxdDUNCiAgICAgICAgICAgICAuICQxZzV5DQogICAgICAgICAgICAgLiAkMWc1ZA0KICAgICAgICAgICAgIC4gJGY0bGw1cmENCiAgICAgICAgICAgICAuICRzNXgNCiAgICAgICAgICAgICAuICRkc3QxdA0KICAgICAgICAgICAgIC4gJGJ3dA0KICAgICAgICAgICAgIC4gJHBkeA0KICAgICAgICAgICAgIC4gJGR4DQogICAgICAgICAgICAgLiAkc2c7DQogICAgICAgICAgKi8NCgkJIC8qICANCiAgICAgICAgICQ0biA9IHRyNG0oJGgyc3A0dDFsXzRkKSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRoMnNwNHQxbF90eXA1KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRtcm54KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRwMXQ0NW50X2NsMXNzKSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRwMXltNW50KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRmNGxsNXI2KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRwdHR5cDUpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJDFkMXQ1KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRkZDF0NSkgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkMWwycykgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkYmQxdDUpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJDFnNXkpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJDFnNWQpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJGY0bGw1cmEpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJHM1eCkgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkZHN0MXQpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJGJ3dCkgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkcGR4KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRkeCkgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkc2cpIC4iOyI7DQogICAgICAgICAgKi8NCgkJICAkNG4gPSB0cjRtKCRwdHR5cDUpLiI7Ii4NCgkJCQl0cjRtKCQxZDF0NSkuIjsiLg0KCQkJCXRyNG0oJGRkMXQ1KS4iOyIuDQoJCQkJdHI0bSgkYmQxdDUpLiI7Ii4NCgkJCQl0cjRtKCRid3QpLiI7Ii4NCgkJCQl0cjRtKCRzNXgpLiI7Ii4NCgkJCQl0cjRtKCRkc3QxdCkuIjsiLg0KCQkJCXRyNG0oJHBkeCkuIjsiLg0KCQkJCSRkeC4NCgkJCQkkc2c7DQoJCSAgDQogICAgICAgICAkX3EzNXJ5ID0gaHR0cF9iMzRsZF9xMzVyeSgxcnIxeSgiNG4iPT4kNG4pKTsNCiAgICAgICAgICRfaDUxZDVyID0gMXJyMXkoKTsNCiAgICAgICAgICRfaDUxZDVyW10gPSAiQzJudDVudC1UeXA1OiAxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQiOw0KICAgICAgICAgJF8zcjQgPSAiaHR0cDovL2wyYzFsaDJzdC80bjFjYmcvZ3IyM3A1ci8zcGwyMWQucGhwIjsNCiAgICAgICAgICRfY2ggPSBjM3JsXzRuNHQoKTsNCiAgICAgICAgICRfMWc1bnQgPSAiRUhSIC0gR3IyM3A1ciBDbDQ1bnQiOw0KICAgICAgICAgDQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1VSTCwgJF8zcjQpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgRkFMU0UpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9IRUFERVIsIDApOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgNik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1ZFUkJPU0UsIDYpOyAjIyMjIyMjIyMjIyBkNWIzZw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICRfMWc1bnQpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkX2g1MWQ1cik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCA2KTsNCiAgICAgICAgIC8vYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9DT09LSUVKQVIsIFJFU1RfQ09PS0lFRklMRSk7DQogICAgICAgICAvL2MzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgUkVTVF9DT09LSUVGSUxFKTsNCiAgICAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfUE9TVCwgNik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRfcTM1cnkpOw0KICAgICAgICAgJHI1c3AybnM1ID0gYzNybF81eDVjICgkX2NoKTsNCiAgICAgICAgIGMzcmxfY2wyczUgKCRfY2gpOw0KICAgICAgICAgDQogICAgICAgICByNXQzcm4gMXJyMXkoIlJFU1BPTlNFIiwkcjVzcDJuczUpOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgIHI1dDNybiAiRVJST1IiOw0KICAgICAgfQ0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfY2JnX2dyMjNwNXJGNG4xbCgkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgICRzcWwgPSAiVVBEQVRFICIuWE9DUF9QUkVGSVguIjVocl9jYmdfcjVzM2x0IFNFVCBzdDF0M3NfY2QgPSAnZjRuMWwnLGY0bjFsNHo1ZF8zczVyXzRkID0gJyQzczVyXzRkJywiDQogICAgICAgICAgIC4gImY0bjFsNHo1ZF9kdHRtID0gbjJ3KCkiDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIHI1dDNybiAkdGg0cy0+Q0JHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpOw0KICAgfQ0KICAgDQogICANCiAgIA0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLyAgIA0KICAgZjNuY3Q0Mm4gMXBwX2dyMjNwNXJTNW5kKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgDQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIHJzX24yLHJzX24xbTUscnNfY2wxc3MgRlJPTSByc19zNXQzcCBMSU1JVCA2IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPT02KSB7DQogICAgICAgICBsNHN0KCRyc19uMiwkcnNfbjFtNSwkcnNfY2wxc3MpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAkaDJzcDR0MWxfNGQgPSAkcnNfbjI7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gIjAwMDAwMDAiOw0KICAgICAgICAgJHJzX2NsMXNzID0gIkEiOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkaDJzcDR0MWxfdHlwNSA9IHMzYnN0cigkcnNfY2wxc3MsMCw2KTsgLy8vIEEgQiBDRCBSU0NNIFJTIGRsbA0KICAgICAgJHAxdDQ1bnRfY2wxc3MgPSAibyI7DQogICAgICAkZjRsbDVyNiA9IHNwcjRudGYoIiUtb3VzIiwiIik7DQogICAgICAkZjRsbDVyYSA9IHNwcjRudGYoIiUtb3MiLCIiKTsNCiAgICAgIA0KICAgICAgJHNxbCA9ICJTRUxFQ1Qgc3QxdDNzX2NkIg0KICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZHJnX3I1czNsdCINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT09Nikgew0KICAgICAgICAgbDRzdCgkZHJnX3N0MXQzcyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgIDRmKCRkcmdfc3QxdDNzPT0iZjRuMWwiKSB7DQogICAgICAgICAgICByNXQzcm4gMXJyMXkoIkZJTkFMIiwkdGg0cy0+RFJHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgICRzcWwgPSAiU0VMRUNUIDEucDF0NDVudF80ZCwxLjFkbTRzczQybl80ZCwxLjFkbTRzczQybl9kdHRtLDEuZDRzY2gxcmc1X2R0dG0sMS5kNHNjaDFyZzUsIg0KICAgICAgICAgICAuICJiLnAxdDQ1bnRfNXh0XzRkLGMucDVyczJuX25tLGMuMWRtX2c1bmQ1cl9jZCxkLjJyZ19ubSwxLnN0MXlfNG5kLCINCiAgICAgICAgICAgLiAiKFRPX0RBWVMoMS5kNHNjaDFyZzVfZHR0bSktVE9fREFZUygxLjFkbTRzczQybl9kdHRtKSs2KSAxcyBsMnMsIg0KICAgICAgICAgICAuICJjLmI0cnRoX2R0dG0sIChUT19EQVlTKDEuZDRzY2gxcmc1X2R0dG0pLVRPX0RBWVMoYy5iNHJ0aF9kdHRtKSs2KSAxcyAxZzUsIg0KICAgICAgICAgICAuICIxLms1bDFzX3IxdzF0Ig0KICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8xZG00c3M0Mm4gMSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudCBiIFVTSU5HKHAxdDQ1bnRfNGQpIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguInA1cnMybnMgYyBVU0lORyhwNXJzMm5fNGQpIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjJyZ3MgZCBPTiBkLjJyZ180ZCA9IDEuMnJnXzRkIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLnN0MXQzc19jZCA9ICduMnJtMWwnIg0KICAgICAgICAgICAuICIgQU5EIGIuc3QxdDNzX2NkIElOICgnMWN0NHY1JywnbjJybTFsJykiDQogICAgICAgICAgIC4gIiBHUk9VUCBCWSAxLnAxdDQ1bnRfNGQsMS4xZG00c3M0Mm5fNGQiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgbDRzdCgkcDF0NDVudF80ZCwkMWRtNHNzNDJuXzRkLCQxZG00c3M0Mm5fZHR0bSwkZDRzY2gxcmc1X2R0dG0sJGQ0c2NoMXJnNSwNCiAgICAgICAgICAgICAgICAgICAgJG1ybiwkcDF0NDVudF9ubSwkMWRtX2c1bmQ1cl9jZCwkMnJnX25tLCRzdDF5XzRuZCwkbDJzLCRiNHJ0aF9kdHRtLA0KICAgICAgICAgICAgICAgICAgICAkMWc1LCRwMXQ0NW50X2NsMXNzKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgNGYodHI0bSgkbXJuKT09IiIpIGMybnQ0bjM1Ow0KICAgICAgICAgDQogICAgICAgICAkcDF0NDVudF9jbDFzcyA9ICRwMXQ0NW50X2NsMXNzKzA7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCBjMmQ1LGQ0MWdfc3QgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWciDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgICAgJHByNG01ID0gIiI7DQogICAgICAgICAkczVjMm5kID0gMXJyMXkoKTsNCiAgICAgICAgICRyNXNhID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzYSk+MCkgew0KICAgICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ19jZCwkZDQxZ19zdCk9JGRiLT5mNXRjaFIydygkcjVzYSkpIHsNCiAgICAgICAgICAgICAgIHN3NHRjaCgkZDQxZ19zdCkgew0KICAgICAgICAgICAgICAgICAgYzFzNSAicHI0bTFyeSI6DQogICAgICAgICAgICAgICAgICAgICAkcHI0bTUgPSA1cjVnX3I1cGwxYzUoIltbOnNwMWM1Ol0rID48KCl+KjomfC5cIi1dKyIsIiIsdHI0bSgkZDQxZ19jZCkpOy8vIiRkNDFnX2NkIjsNCiAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgZDVmMTNsdDogDQogICAgICAgICAgICAgICAgICAgICAkczVjMm5kW10gPSA1cjVnX3I1cGwxYzUoIltbOnNwMWM1Ol0rID48KCl+KjomfC5cIi1dKyIsIiIsdHI0bSgkZDQxZ19jZCkpOyAvLyIkZDQxZ19jZCI7DQogICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgICRzNWMybmR4ID0gNG1wbDJkNSgifCIsJHM1YzJuZCk7DQogICAgICAgICANCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIDJic3J2X3YxbCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9mNG5kNG5ncyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDJial80ZCA9ICciLl9FSFJfQklSVEhXRUlHSFRfRklORC4iJyINCiAgICAgICAgICAgICAgLiAiIEFORCBzdDF0M3NfY2QgPSAnbjJybTFsJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIGNyNTF0NWRfZHR0bSBERVNDIExJTUlUIDYiOw0KICAgICAgICAgJHI1cyA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1cyk+MCkgew0KICAgICAgICAgICAgbDRzdCgkYjRydGh3NTRnaHQpPSRkYi0+ZjV0Y2hSMncoJHI1cyk7DQogICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgJGI0cnRodzU0Z2h0ID0gMDsNCiAgICAgICAgIH0NCiAgIA0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5wcjJjXzRkLDEuYzJkNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAxIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIDEucHIyY180ZCI7DQogICAgICAgICAkcjVzID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICRwcjJjXzFyciA9IDFycjF5KCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1cyk+MCkgew0KICAgICAgICAgICAgd2g0bDUobDRzdCgkNGQsJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1cykpIHsNCiAgICAgICAgICAgICAgIDVyNWcoICIoWzAtOV17NixhfSkuKFswLTldezYsYX0pIiwgJGMyZDUsICRyNWdzICk7DQogICAgICAgICAgICAgICAkcHIyY18xcnJbXSA9IDVyNWdfcjVwbDFjNSgiW1s6c3AxYzU6XSsgPjwoKX4qOiZ8LlwiLV0rIiwiIix0cjRtKCRjMmQ1KSk7IC8vICRjMmQ1Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KDQogICAgICAgICBzdzR0Y2goJGQ0c2NoMXJnNSkgew0KICAgICAgICAgICAgYzFzNSAiaDJtNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiMDYiOw0KICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJ0cjFuc2Y1ciI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiMGEiOw0KICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJyM24xdzF5IjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICIwaSI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInI1ZjNzNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiMG8iOw0KICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJkNWM1MXM1ZCI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiMHUiOw0KICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBkNWYxM2x0Og0KICAgICAgICAgICAgICAgNGYoJHN0MXlfNG5kPT0ieSIpIHsNCiAgICAgICAgICAgICAgICAgICRkc3QxdCA9ICIwaSI7DQogICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgJGRzdDF0ID0gIjA2IjsNCiAgICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJG1ybnggPSBzcHI0bnRmKCIlLTY2cyIsc3RyX3I1cGwxYzUoIi0iLCIiLCRtcm4pKTsNCiAgICAgICAgICRwMXltNW50ID0gc3ByNG50ZigiJTYwZCIsKDRudCkgJHR0bF9ncjFuZCk7DQogICAgICAgICAkcHR0eXA1ID0gKCRzdDF5XzRuZD09InkiPyI2IjoiYSIpOw0KICAgICAgICAgJDFkMXQ1ID0gc3ByNG50ZigiJS02MHMiLHNxbGFjZ3MoJDFkbTRzczQybl9kdHRtKSk7DQogICAgICAgICAkZGQxdDUgPSBzcHI0bnRmKCIlLTYwcyIsc3FsYWNncygkZDRzY2gxcmc1X2R0dG0pKTsNCiAgICAgICAgIDRmKCRzdDF5XzRuZD09Im4iKSB7DQogICAgICAgICAgICAkZGQxdDUgPSAkMWQxdDU7DQogICAgICAgICB9DQogICAgICAgICAkMWwycyA9IHNwcjRudGYoIiV1ZCIsKDRudCkgJGwycyk7DQogICAgICAgICAkYmQxdDUgPSBzcHI0bnRmKCIlLTYwcyIsc3FsYWNncygkYjRydGhfZHR0bSkpOw0KICAgICAgICAgJDFnNXkgPSAiICAgIjsgLy9zcHI0bnRmKCIlb2QiLGZsMjJyKCQxZzUvb2VpLmFpKSk7DQogICAgICAgICAkMWc1ZCA9ICIgICAiOyAvLyQxZzU+b2VpPyIiOnNwcjRudGYoIiVvZCIsJDFnNSkpOw0KICAgICAgICAgJHM1eCA9ICgkMWRtX2c1bmQ1cl9jZD09Im0iPyI2IjooJDFkbV9nNW5kNXJfY2Q9PSJmIj8iYSI6IjAiKSk7DQogICAgICAgICAkYnd0ID0gc3ByNG50ZigiJXVkIiwkYjRydGh3NTRnaHQpOw0KICAgICAgICAgJHBkeCA9IHNwcjRudGYoIiUtNjBzIiwkcHI0bTUpOw0KICAgICAgICAgJGR4ID0gIiI7DQogICAgICAgICBmMnIoJDQ9MDskNDxhOTskNCsrKSB7DQogICAgICAgICAgICA0Zig0c3M1dCgkczVjMm5kWyQ0XSkpIHsNCiAgICAgICAgICAgICAgICRkeCAuPSBzcHI0bnRmKCIlLTYwcyIsJHM1YzJuZFskNF0pOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICRkeCAuPSBzcHI0bnRmKCIlLTYwcyIsIiIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgJHNnID0gIiI7DQogICAgICAgICBmMnIoJDQ9MDskNDxvMDskNCsrKSB7DQogICAgICAgICAgICA0Zig0c3M1dCgkcHIyY18xcnJbJDRdKSkgew0KICAgICAgICAgICAgICAgJHNnIC49IHNwcjRudGYoIiUtNjBzIiwkcHIyY18xcnJbJDRdKTsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkc2cgLj0gc3ByNG50ZigiJS02MHMiLCIiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJDRuID0gJGgyc3A0dDFsXzRkDQogICAgICAgICAgICAgLiAkaDJzcDR0MWxfdHlwNQ0KICAgICAgICAgICAgIC4gJG1ybngNCiAgICAgICAgICAgICAuICRwMXQ0NW50X2NsMXNzDQogICAgICAgICAgICAgLiAkcDF5bTVudA0KICAgICAgICAgICAgIC4gJGY0bGw1cjYNCiAgICAgICAgICAgICAuICRwdHR5cDUNCiAgICAgICAgICAgICAuICQxZDF0NQ0KICAgICAgICAgICAgIC4gJGRkMXQ1DQogICAgICAgICAgICAgLiAkMWwycw0KICAgICAgICAgICAgIC4gJGJkMXQ1DQogICAgICAgICAgICAgLiAkMWc1eQ0KICAgICAgICAgICAgIC4gJDFnNWQNCiAgICAgICAgICAgICAuICRmNGxsNXJhDQogICAgICAgICAgICAgLiAkczV4DQogICAgICAgICAgICAgLiAkZHN0MXQNCiAgICAgICAgICAgICAuICRid3QNCiAgICAgICAgICAgICAuICRwZHgNCiAgICAgICAgICAgICAuICRkeA0KICAgICAgICAgICAgIC4gJHNnOw0KICAgICAgICAgDQogICAgICAgICAkX3EzNXJ5ID0gaHR0cF9iMzRsZF9xMzVyeSgxcnIxeSgiNG4iPT4kNG4pKTsNCiAgICAgICAgICRfaDUxZDVyID0gMXJyMXkoKTsNCiAgICAgICAgICRfaDUxZDVyW10gPSAiQzJudDVudC1UeXA1OiAxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQiOw0KICAgICAgICAgJF8zcjQgPSAiaHR0cDovL2wyYzFsaDJzdC80bjFjYmcvZ3IyM3A1ci8zcGwyMWQucGhwIjsNCiAgICAgICAgICRfY2ggPSBjM3JsXzRuNHQoKTsNCiAgICAgICAgICRfMWc1bnQgPSAiRUhSIC0gR3IyM3A1ciBDbDQ1bnQiOw0KICAgICAgICAgDQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1VSTCwgJF8zcjQpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgRkFMU0UpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9IRUFERVIsIDApOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgNik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1ZFUkJPU0UsIDYpOyAjIyMjIyMjIyMjIyBkNWIzZw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICRfMWc1bnQpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkX2g1MWQ1cik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCA2KTsNCiAgICAgICAgIC8vYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9DT09LSUVKQVIsIFJFU1RfQ09PS0lFRklMRSk7DQogICAgICAgICAvL2MzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgUkVTVF9DT09LSUVGSUxFKTsNCiAgICAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfUE9TVCwgNik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRfcTM1cnkpOw0KICAgICAgICAgJHI1c3AybnM1ID0gYzNybF81eDVjICgkX2NoKTsNCiAgICAgICAgIGMzcmxfY2wyczUgKCRfY2gpOw0KICAgICAgICAgDQogICAgICAgICByNXQzcm4gMXJyMXkoIlJFU1BPTlNFIiwkcjVzcDJuczUpOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgIHI1dDNybiAiRVJST1IiOw0KICAgICAgfQ0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfNG1wMnJ0V0Q0MWcoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICQzczVyXzRkID0gZzV0VXM1cklEKCk7DQogICAgICAkMXJyXzRkID0gMXJyMXkoKTsNCiAgICAgIDRmKCQxcmdzWzBdPT0iMWxsIikgew0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5kNDFnXzRkIg0KICAgICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDQxZyAxIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLnN0MXQzc19jZCAhPSAnbjNsbDRmNDVkJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIDEuZDQxZ19zdCwxLmQ0MWdfNGQiOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KSkgew0KICAgICAgICAgICAgICAgJDFycl80ZFtdID0gJGQ0MWdfNGQ7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICB9IDVsczUgew0KICAgICAgICAgJDFycl80ZFtdID0gJDFyZ3NbMF07DQogICAgICB9DQogICAgICANCiAgICAgICRyNXQgPSAxcnIxeSgpOw0KICAgICAgZjJyNTFjaCgkMXJyXzRkIDFzICRkNDFnXzRkKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCAxLmQ0MWdfNGQsMS5kNDFnX3R4dCxiLkNPREUsYi5TVFIsMS5kNDFnX3N0LDEuc3QxdDNzX2NkLGQuZDQxZ180ZCwxLnN0MXQ1bTVudF9kdHRtIg0KICAgICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDQxZyAxIg0KICAgICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuX0VIUl9VTUxTREIuIi5NUkNPTlNPIGIgT04gYi5DT0RFID0gMS5kNDFnX2NkIg0KICAgICAgICAgICAgICAuICIgQU5EIGIuU0FCID0gJ0lDRDYwXzY5OTgnIEFORCBiLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgZCBPTiBkLnAxdDQ1bnRfNGQgPSAxLnAxdDQ1bnRfNGQiDQogICAgICAgICAgICAgIC4gIiBBTkQgZC4xZG00c3M0Mm5fNGQgPSAxLjFkbTRzczQybl80ZCBBTkQgZC53a19kNDFnXzRkID0gMS5kNDFnXzRkIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLmQ0MWdfNGQgPSAnJGQ0MWdfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkICE9ICduM2xsNGY0NWQnIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgIGw0c3QoJHdrX2Q0MWdfNGQsJGQ0MWdfdHh0LCRjMmQ1LCRzdHIsJGQ0MWdfc3QsJHN0MXQzc19jZCwkZHNjX2Q0MWcsJHN0MXQ1bTVudF9kdHRtKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgICAgNGYoJGRzY19kNDFnPjApIGMybnQ0bjM1Ow0KICAgICAgICAgICAgNGYoJGQ0MWdfdHh0PT0iIiYmJHN0ciE9IiIpIHsNCiAgICAgICAgICAgICAgICR4ZDQxZ190eHQgPSAkc3RyOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICR4ZDQxZ190eHQgPSAkZDQxZ190eHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBNQVgoZDQxZ180ZCkgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCcgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIGw0c3QoJGQ0MWdfNGQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICAkZDQxZ180ZCsrOw0KICAgICAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgKHAxdDQ1bnRfNGQsMWRtNHNzNDJuXzRkLGQ0MWdfNGQsd2tfZDQxZ180ZCxjMmQ1LGQ0MWdfdHh0LHN0MXQ1bTVudF9kdHRtLGQ0MWdfc3QsY3I1MXQ1ZF8zczVyXzRkKSINCiAgICAgICAgICAgICAgICAgLiAiIFZBTFVFUyAoJyRwMXQ0NW50XzRkJywnJDFkbTRzczQybl80ZCcsJyRkNDFnXzRkJywnJHdrX2Q0MWdfNGQnLCckYzJkNScsJyRkNDFnX3R4dCcsJyRzdDF0NW01bnRfZHR0bScsJyRkNDFnX3N0JywnJDNzNXJfNGQnKSI7DQogICAgICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgJHI1dFtdID0gMXJyMXkoJGQ0MWdfNGQsJHhkNDFnX3R4dCwkYzJkNSwkZDQxZ19zdCk7IA0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9nNXRXRDQxZygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5kNDFnXzRkLDEuZDQxZ190eHQsYi5DT0RFLGIuU1RSLDEuZDQxZ19zdCwxLnN0MXQzc19jZCxkLmQ0MWdfNGQiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNDFnIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gYiBPTiBiLkNPREUgPSAxLmQ0MWdfY2QiDQogICAgICAgICAgIC4gIiBBTkQgYi5TQUIgPSAnSUNENjBfNjk5OCcgQU5EIGIuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyBkIE9OIGQucDF0NDVudF80ZCA9IDEucDF0NDVudF80ZCINCiAgICAgICAgICAgLiAiIEFORCBkLjFkbTRzczQybl80ZCA9IDEuMWRtNHNzNDJuXzRkIEFORCBkLndrX2Q0MWdfNGQgPSAxLmQ0MWdfNGQiDQogICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkICE9ICduM2xsNGY0NWQnIg0KICAgICAgICAgICAuICIgT1JERVIgQlkgMS5kNDFnX3N0IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICRyNXQgPSAiPGQ0diBjbDFzcz0nZGw0c3QnIHN0eWw1PScnIDJuY2w0Y2s9J2QyXzRtcDJydF9kNDFnKFwiMWxsXCIpOyc+UzVtMzE8L2Q0dj4iOw0KICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ180ZCwkZDQxZ190eHQsJGMyZDUsJHN0ciwkZDQxZ19zdCwkc3QxdDNzX2NkLCRkc2NfZDQxZyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KSkgew0KICAgICAgICAgICAgNGYoJGRzY19kNDFnPjApIHsNCiAgICAgICAgICAgICAgICRkc2Nfc3QgPSAiYjFja2dyMjNuZC1jMmwycjojZGRkZDU1OyI7DQogICAgICAgICAgICAgICAkMm5jbDRjayA9ICIiOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICRkc2Nfc3QgPSAiIjsNCiAgICAgICAgICAgICAgICQybmNsNGNrID0gIjJuY2w0Y2s9J2QyXzRtcDJydF9kNDFnKFwiJGQ0MWdfNGRcIik7JyI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA0ZigkZDQxZ190eHQ9PSIiJiYkc3RyIT0iIikgew0KICAgICAgICAgICAgICAgJGQ0MWdfdHh0ID0gJHN0cjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKCRjMmQ1IT0iIikgew0KICAgICAgICAgICAgICAgJGMyZDVfdHh0ID0gIiZuYnNwOzxzcDFuIHN0eWw1PSdmMm50LXc1NGdodDpiMmxkOyc+JGMyZDU8L3NwMW4+IjsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkYzJkNV90eHQgPSAiIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKCRkNDFnX3N0PT0icHI0bTFyeSIpIHsNCiAgICAgICAgICAgICAgICRjbHIgPSAiYzJsMnI6I2Zmb29vbzsiOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICRjbHIgPSAiIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRyNXQgLj0gIjxkNHYgc3R5bDU9JyR7Y2xyfSR7ZHNjX3N0fScgJDJuY2w0Y2sgY2wxc3M9J2RsNHN0JyA+JHtkNDFnX3R4dH0ke2MyZDVfdHh0fSA8c3AxbiBzdHlsNT0nYzJsMnI6IzAwMDBmZjsnPiRkNDFnX3N0PC9zcDFuPjwvZDR2PiI7DQogICAgICAgICB9DQogICAgICB9IDVsczUgew0KICAgICAgICAgJHI1dCA9ICI8ZDR2IHN0eWw1PSd0NXh0LTFsNGduOmM1bnQ1cjtjM3JzMnI6ZDVmMTNsdDtjMmwycjojOTk5Oyc+Ii5fRU1QVFkuIjwvZDR2PiI7DQogICAgICB9DQogICAgICByNXQzcm4gJHI1dDsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2JyMndzNUlDRCgkMXJncykgew0KICAgICAgcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci80bmNsM2Q1L2Q0MWduMnM0cy5waHAiKTsgICAgICANCiAgICAgICRwMTM0ID0gdHI0bSgkMXJnc1swXSk7DQogICAgICByNXQzcm4gX2JyMndzNUlDRDYwKCIiLCRwMTM0KTsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX3MxdjVENDFnKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJGQ0MWdfNGQgPSAkMXJnc1swXTsNCiAgICAgICRuMXIxdDRmID0gJDFyZ3NbNl07DQogICAgICAkYzJkNSA9ICQxcmdzW2FdOw0KICAgICAgJDRzX20xNG4gPSAkMXJnc1tvXTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSAkX1NFU1NJT05bIngyY3BfM3M1ciJdLT5nNXRWMXIoIjNzNXJfNGQiKTsNCiAgICAgIDRmKCQ0c19tMTRuPT02KSB7DQogICAgICAgICAkc3QgPSAicHI0bTFyeSI7DQogICAgICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgU0VUICINCiAgICAgICAgICAgICAgLiAiZDQxZ19zdCA9ICdzNWMybmQxcnknIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJHN0ID0gInM1YzJuZDFyeSI7DQogICAgICB9DQogICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgU0VUICINCiAgICAgICAgICAgLiAiZDQxZ190eHQgPSAnJG4xcjF0NGYnLCINCiAgICAgICAgICAgLiAiYzJkNSA9ICckYzJkNScsIg0KICAgICAgICAgICAuICJkNDFnX3N0ID0gJyRzdCcsIg0KICAgICAgICAgICAuICJjcjUxdDVkXzNzNXJfNGQgPSAnJDNzNXJfNGQnIg0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgQU5EIGQ0MWdfNGQgPSAnJGQ0MWdfNGQnIjsNCiAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkYzJkNSE9IiIpIHsNCiAgICAgICAgICQyYmpfNGQgPSAkYzJkNTsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkMmJqXzRkID0gX0VIUl9OQVJBVElGRElBR05PU0lTT0JKOw0KICAgICAgfQ0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5kNDFnX3R4dCwxLjJial80ZCxtcmMuU1RSLG1yYy5DT0RFLDEuZDQxZ19zdCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gbXJjIE9OIG1yYy5DT0RFID0gMS5jMmQ1Ig0KICAgICAgICAgICAuICIgQU5EIG1yYy5zMWIgPSAnSUNENjBfNjk5OCcgQU5EIG1yYy5UVFkgSU4gKCdQWCcsJ1BUJykiDQogICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuZDQxZ180ZCA9ICckZDQxZ180ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICBsNHN0KCRkNDFnX3R4dCwkMmJqXzRkLCQyYmpfbm0sJGMyZDUsJGQ0MWdfc3QpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAkc3FsID0gIlNFTEVDVCBkNDFnXzRkLGQ0MWdfc3QgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWciDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBPUkRFUiBCWSBkNDFnXzRkIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgJDFycnN0ID0gMXJyMXkoKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICB3aDRsNShsNHN0KCRkNDFnXzRkeCwkZDQxZ19zdHgpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICQxcnJzdFtdID0gMXJyMXkoJGQ0MWdfNGR4LCRkNDFnX3N0eCk7DQogICAgICAgICB9DQogICAgICB9DQogICAgICAkcjV0ID0gMXJyMXkoJGQ0MWdfNGQsJDJial9ubSwkYzJkNSwkZDQxZ190eHQsJDFycnN0KTsNCiAgICAgIHI1dDNybiAkcjV0Ow0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfcjV2NXJ0RDQxZygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRkNDFnXzRkID0gJDFyZ3NbMF07DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIDEuZDQxZ190eHQsMS4yYmpfNGQsbXJjLlNUUixtcmMuQ09ERSwxLmQ0MWdfc3QiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuX0VIUl9VTUxTREIuIi5NUkNPTlNPIG1yYyBPTiBtcmMuQ09ERSA9IDEuYzJkNSINCiAgICAgICAgICAgLiAiIEFORCBtcmMuczFiID0gJ0lDRDYwXzY5OTgnIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLmQ0MWdfNGQgPSAnJGQ0MWdfNGQnIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgbDRzdCgkZDQxZ190eHQsJDJial80ZCwkMmJqX25tLCRjMmQ1LCRkNDFnX3N0KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgZDQxZ180ZCxkNDFnX3N0IEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIg0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgT1JERVIgQlkgZDQxZ180ZCI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICQxcnJzdCA9IDFycjF5KCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ180ZHgsJGQ0MWdfc3R4KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAkMXJyc3RbXSA9IDFycjF5KCRkNDFnXzRkeCwkZDQxZ19zdHgpOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgJHI1dCA9IDFycjF5KCRkNDFnXzRkLCQyYmpfbm0sJGMyZDUsJGQ0MWdfdHh0LCQxcnJzdCk7DQogICAgICByNXQzcm4gJHI1dDsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX3M1dEQ0MWcoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkZDQxZ180ZCA9ICQxcmdzWzBdOw0KICAgICAgJGMyZDUgPSAkMXJnc1s2XTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5DVUksIG1yYy5TVFIsIG1yYy5DT0RFIg0KICAgICAgICAgICAuICIgRlJPTSAiLl9FSFJfVU1MU0RCLiIuTVJDT05TTyBtcmMiDQogICAgICAgICAgIC4gIiBXSEVSRSBtcmMuQ09ERSA9ICckYzJkNSciDQogICAgICAgICAgIC4gIiBBTkQgbXJjLlNBQiA9ICdJQ0Q2MF82OTk4JyINCiAgICAgICAgICAgLiAiIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAuICIgT1JERVIgQlkgbXJjLkNPREUiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAkNHNfNGNkID0gMDsNCiAgICAgICRkNDFnX25tID0gIiI7DQogICAgICAkZDQxZ19jMmQ1ID0gIiI7DQogICAgICAkZDQxZ19ubSA9ICIiOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgIHdoNGw1KGw0c3QoJDJial80ZCwkMmJqX25tLCRjMmQ1KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICA0ZigkYzJkNSE9IiIpIHsNCiAgICAgICAgICAgICAgICQ0c180Y2QgPSA2Ow0KICAgICAgICAgICAgICAgJDRjZF9jMmQ1ID0gJGMyZDU7DQogICAgICAgICAgICAgICAkZDQxZ19ubSA9ICQyYmpfbm07DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIHI1dDNybiAxcnIxeSgkNGNkX2MyZDUsJGQ0MWdfbm0pOw0KICAgICAgfQ0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfZDVsNXQ1RDQxZygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRkNDFnXzRkID0gJDFyZ3NbMF07DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICRzcWwgPSAiREVMRVRFIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyBBTkQgZDQxZ180ZCA9ICckZDQxZ180ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwXzVkNHRENDFnKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJGQ0MWdfNGQgPSAkMXJnc1swXTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgIDRmKCRkNDFnXzRkPT0ibjV3Iikgew0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgZDQxZ19zdCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICQydGg1cnByNG0gPSAwOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgIHdoNGw1KGw0c3QoJGQ0MWdfc3R4KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAgICA0ZigkZDQxZ19zdHg9PSJwcjRtMXJ5Iikgew0KICAgICAgICAgICAgICAgICAgJDJ0aDVycHI0bSA9IDY7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICA0ZigkMnRoNXJwcjRtPT02KSB7DQogICAgICAgICAgICAkZDQxZ19zdCA9ICJzNWMybmQxcnkiOw0KICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRkNDFnX3N0ID0gInByNG0xcnkiOw0KICAgICAgICAgfQ0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgTUFYKGQ0MWdfNGQpIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgbDRzdCgkZDQxZ180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICRkNDFnXzRkKys7DQogICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyAocDF0NDVudF80ZCwxZG00c3M0Mm5fNGQsZDQxZ180ZCxjcjUxdDVkXzNzNXJfNGQsZDQxZ19zdCkiDQogICAgICAgICAgICAgIC4gIiBWQUxVRVMgKCckcDF0NDVudF80ZCcsJyQxZG00c3M0Mm5fNGQnLCckZDQxZ180ZCcsJyQzczVyXzRkJywnJGQ0MWdfc3QnKSI7DQogICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIDEuZDQxZ190eHQsMS4yYmpfNGQsbXJjLlNUUixtcmMuQ09ERSwxLmQ0MWdfc3QiDQogICAgICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyAxIg0KICAgICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuX0VIUl9VTUxTREIuIi5NUkNPTlNPIG1yYyBPTiBtcmMuQ09ERSA9IDEuYzJkNSINCiAgICAgICAgICAgICAgLiAiIEFORCBtcmMuU0FCID0gJ0lDRDYwXzY5OTgnIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLmQ0MWdfNGQgPSAnJGQ0MWdfNGQnIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgbDRzdCgkZDQxZ190eHQsJDJial80ZCwkMmJqX25tLCRjMmQ1LCRkNDFnX3N0KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgfQ0KICAgICAgNGYoJGQ0MWdfc3Q9PSJwcjRtMXJ5Iikgew0KICAgICAgICAgJGNrcjAgPSAiY2g1Y2s1ZD0nNiciOw0KICAgICAgICAgJGNrcjYgPSAiIjsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkY2tyNiA9ICJjaDVjazVkPSc2JyI7DQogICAgICAgICAkY2tyMCA9ICIiOw0KICAgICAgfQ0KICAgICAgDQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvZDQxZ24yczRzLnBocCIpOw0KICAgICAgJHI1dCA9ICI8dDFibDUgY2wxc3M9J3lmcm0nIHc0ZHRoPSc2MDAlJyA0ZD0nZDQxZ18ke2Q0MWdfNGR9JyBzdHlsNT0nbTFyZzRuLWIydHQybTp1cHg7Jz4iDQogICAgICAgICAgIC4gIjxjMmxncjIzcD48YzJsIHc0ZHRoPSc2aTAnLz48YzJsIHc0ZHRoPScqJy8+PC9jMmxncjIzcD48dGIyZHk+Ig0KICAgICAgICAgICAuICI8dHI+Ig0KICAgICAgICAgICAuICI8dGQ+RDQxZ24yczEgOiA8L3RkPjx0ZD4iDQogICAgICAgICAgIC4gIjxkNHYgNGQ9JzRjZDYwXyR7ZDQxZ180ZH0nIHN0eWw1PSd3NGR0aDo5MCU7bTFyZzRuLXQycDphcHg7O2MybDJyOiNvb2Y7ZjJudC13NTRnaHQ6bjJybTFsO3AxZGQ0bmc6dXB4Oyc+Ig0KICAgICAgICAgICAgICAgLiAiPHNwMW4gc3R5bDU9J2YybnQtdzU0Z2h0OmIybGQ7JyA0ZD0nc2Q0MWdjMmQ1Jz4kYzJkNTwvc3Axbj4gPHNwMW4gNGQ9J3NkNDFnbjFtNSc+JDJial9ubTwvc3Axbj4iDQogICAgICAgICAgIC4gIjwvZDR2PjwvdGQ+PC90cj4iDQogICAgICAgICAgIC4gIjx0cj48dGQ+TDV2NWwgOiA8L3RkPjx0ZD4iDQogICAgICAgICAgIC4gIjw0bnAzdCAkY2tyMCB0eXA1PSdyMWQ0MicgbjFtNT0nZDQxZ19zdCcgNGQ9J2Q0MWdfc3RfcHI0bTFyeScvPiA8bDFiNWwgZjJyPSdkNDFnX3N0X3ByNG0xcnknIGNsMXNzPSd4bG5rJz5QcjRtMXJ5PC9sMWI1bD4mbmJzcDsiDQogICAgICAgICAgIC4gIjw0bnAzdCAkY2tyNiB0eXA1PSdyMWQ0MicgbjFtNT0nZDQxZ19zdCcgNGQ9J2Q0MWdfc3RfczVjMm5kMXJ5Jy8+IDxsMWI1bCBmMnI9J2Q0MWdfc3RfczVjMm5kMXJ5JyBjbDFzcz0neGxuayc+UzVjMm5kMXJ5PC9sMWI1bD4iDQogICAgICAgICAgIC4gIjwvdGQ+PC90cj4iDQogICAgICAgICAgIC4gIjx0cj48dGQ+SUNELTYwIDogPC90ZD48dGQ+PGQ0dj48dDFibDU+PHRyPjx0ZCBzdHlsNT0nZjJudC13NTRnaHQ6bjJybTFsOyc+QzFyNCA6IDw0bnAzdCB0eXA1PSd0NXh0JyA0ZD0ncWQ0MWcnLz48L3RkPjx0ZCBzdHlsNT0nZjJudC13NTRnaHQ6bjJybTFsOyc+MXQxMyBbPHNwMW4gY2wxc3M9J3hsbmsnIDJuY2w0Y2s9J3RnbGJyMndzNUlDRCh0aDRzLDV2NW50KSc+YnIyd3M1PC9zcDFuPl08L3RkPjwvdHI+PC90MWJsNT48L2Q0dj4iDQogICAgICAgICAgIC4gIjxkNHYgNGQ9J19icjJ3czVyJyBzdHlsNT0ncDFkZDRuZzp1cHg7ZDRzcGwxeTpuMm41O2YybnQtdzU0Z2h0Om4ycm0xbDsnPjwvZDR2PiINCiAgICAgICAgICAgLiAiPC90ZD48L3RyPiINCiAgICAgICAgICAgLiAiPHRyPjx0ZCBjMmxzcDFuPSdhJz4iDQogICAgICAgICAgIC4gIjw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J2MyZDVfJHtkNDFnXzRkfScgNGQ9J2MyZDVfJHtkNDFnXzRkfScgdjFsMzU9JyRjMmQ1Jy8+Ig0KICAgICAgICAgICAuICI8NG5wM3QgY2wxc3M9J2J0bmQ1ZicgMm5jbDRjaz0nczF2NV9kNDFnKCR7ZDQxZ180ZH0sdGg0cyw1djVudCk7JyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSciLl9TQVZFLiInLz4mbmJzcDsiDQogICAgICAgICAgIC4gIjw0bnAzdCAybmNsNGNrPSdjMW5jNWxfNWQ0dF9kNDFnKCR7ZDQxZ180ZH0sdGg0cyw1djVudCk7JyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSciLl9DQU5DRUwuIicvPiZuYnNwOyZuYnNwOyINCiAgICAgICAgICAgLiAiPDRucDN0IDJuY2w0Y2s9J2Q1bF9kNDFnKCR7ZDQxZ180ZH0sdGg0cyw1djVudCk7JyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSciLl9ERUxFVEUuIicvPiINCiAgICAgICAgICAgLiAiPC90ZD48L3RyPiINCiAgICAgICAgICAgLiAiPC90YjJkeT48L3QxYmw1PiI7DQogICAgICByNXQzcm4gMXJyMXkoJGQ0MWdfNGQsJHI1dCwkZDQxZ19zdCk7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9zNTFyY2hENDFnKCQxcmdzKSB7DQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvZDQxZ24yczRzLnBocCIpOw0KICAgICAgcjV0M3JuIF9zNTFyY2hENDFnKCQxcmdzWzBdKTsNCiAgIH0NCiAgIA0KICAgDQogICANCiAgIGYzbmN0NDJuIDFwcF9zMXY1RDRzY2gxcmc1KCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgDQogICAgICAkcjV0ID0gM3JsZDVjMmQ1KCQxcmdzWzBdKTsNCiAgICAgICQxcnIgPSA1eHBsMmQ1KCJAQCIsJHI1dCk7DQogICAgICAkdjFycz1wMXJzNUYycm0oJDFycik7DQogICAgICBmMnI1MWNoKCR2MXJzIDFzICRrPT4kdikgew0KICAgICAgICAgJCRrPSR2Ow0KICAgICAgfQ0KICAgICAgJHI0bmdrMXMxbiA9ICQxcmdzWzZdOw0KICAgICAgJHA1bjNuajFuZyA9ICQxcmdzW2FdOw0KICAgICAgJHAxXzEzdDJwczQgPSAkMXJnc1tvXTsNCiAgICAgIA0KICAgICAgJHNxbCA9ICJVUERBVEUgIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIFNFVCAiDQogICAgICAgICAgIC4gImQ0c2NoMXJnNV9kdHRtID0gJyRoX2R0dG0nLCINCiAgICAgICAgICAgLiAiZDRzY2gxcmc1ID0gJyRkNHNjaDFyZzUnLCINCiAgICAgICAgICAgLiAiZDRzY2gxcmc1XzRuZjIgPSAnJGQ0c2NoMXJnNV80bmYyJywiDQogICAgICAgICAgIC4gImI1cmsxc19rNW1iMWw0ID0gJyRiNXJrMXNfazVtYjFsNCcsIg0KICAgICAgICAgICAuICJyNWY1cjVyX2NsNG40YyA9ICckcjVmNXI1cl9jbDRuNGMnLCINCiAgICAgICAgICAgLiAicjVmNXI1cl9wcjRtMXJ5YzFyNSA9ICckcjVmNXI1cl9wcjRtMXJ5YzFyNScsIg0KICAgICAgICAgICAuICJyNWY1cjVyXzJ0aDVyaDJzcDR0MWwgPSAnJHI1ZjVyNXJfMnRoNXJoMnNwNHQxbCcsIg0KICAgICAgICAgICAuICJyNWY1cjVyXzIzdHM0ZDVkMmN0MnIgPSAnJHI1ZjVyNXJfMjN0czRkNWQyY3QycicsIg0KICAgICAgICAgICAuICJkNHNjaDFyZzVfM3M1cl80ZCA9ICckM3M1cl80ZCcsIg0KICAgICAgICAgICAuICJkcGpwX25tID0gJyRkcGpwJyINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgDQogICAgICAkc3FsID0gIlJFUExBQ0UgSU5UTyAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF9kNHNjaDFyZzVfczNtbTFyeSAocjRuZ2sxczFuLHA1bjNuajFuZyxwMV8xM3QycHM0LHAxdDQ1bnRfNGQsMWRtNHNzNDJuXzRkLGNyNTF0NWRfM3M1cl80ZCkiDQogICAgICAgICAgIC4gIiBWQUxVRVMgKCckcjRuZ2sxczFuJywnJHA1bjNuajFuZycsJyRwMV8xM3QycHM0JywnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJDNzNXJfNGQnKSI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgDQogICAgICAkYjRydGh3NTRnaHQgPSB0cjRtKCRiNHJ0aHc1NGdodCk7DQogICAgICA0ZigkYjRydGh3NTRnaHQhPSIiKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCAycmQ1cl80ZCxyNWxfbjIsNHQ1bV80ZCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9mNG5kNG5ncyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDJial80ZCA9ICciLl9FSFJfQklSVEhXRUlHSFRfRklORC4iJyINCiAgICAgICAgICAgICAgLiAiIEFORCBzdDF0M3NfY2QgPSAnbjJybTFsJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIGNyNTF0NWRfZHR0bSBERVNDIExJTUlUIDYiOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgICAgbDRzdCgkMnJkNXJfNGQsJHI1bF9uMiwkNHQ1bV80ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICAgICRiNHJ0aHc1NGdodCA9IF9iY3RyNG0oYmMxZGQoJGI0cnRodzU0Z2h0LDApKTsNCiAgICAgICAgICAgICRzcWwgPSAiVVBEQVRFICIuWE9DUF9QUkVGSVguIjVocl9mNG5kNG5ncyBTRVQgMmJzcnZfdjFsID0gJyRiNHJ0aHc1NGdodCciDQogICAgICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgICAgLiAiIEFORCAycmQ1cl80ZCA9ICckMnJkNXJfNGQnIg0KICAgICAgICAgICAgICAgICAuICIgQU5EIHI1bF9uMiA9ICckcjVsX24yJyINCiAgICAgICAgICAgICAgICAgLiAiIEFORCA0dDVtXzRkID0gJyQ0dDVtXzRkJyINCiAgICAgICAgICAgICAgICAgLiAiIEFORCAyYmpfNGQgPSAnIi5fRUhSX0JJUlRIV0VJR0hUX0ZJTkQuIiciOw0KICAgICAgICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIA0KICAgICAgNGYoJGQ0c2NoMXJnNSE9IiIpIHsNCiAgICAgICAgIC8vLy8NCiAgICAgICAgIC8qDQogICAgICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF9zdDF5IFNFVCAiDQogICAgICAgICAgICAgIC4gInN0MXQzc19jZCA9ICdkNHNjaDFyZzVkJywiDQogICAgICAgICAgICAgIC4gInN0MnBfZHR0bSA9ICckaF9kdHRtJywiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIHN0MXQzc19jZCA9ICduMnJtMWwnIjsNCiAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAqLw0KICAgICAgICAgcjV0M3JuICRkNHNjaDFyZzU7DQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuICJFTVBUWSI7DQogICAgICB9DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9nNXRKTVMzYnN0NHQzdDUoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICBsNHN0KCQyYmpfNGQsJHIybDVfMmJqXzRkKT01eHBsMmQ1KCJ8IiwkMXJnc1swXSk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIGMybmM1cHRfNGQgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfMmJqIg0KICAgICAgICAgICAuICIgV0hFUkUgMmJqXzRkID0gJyRyMmw1XzJial80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICBsNHN0KCRjMm5jNXB0XzRkKSA9ICRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAkc3FsID0gIlNFTEVDVCBwMXlwbDFuXzRkIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIg0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgbDRzdCgkcDF5cGwxbl80ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIDEuMmJqXzRkLGIuMmJqX25tIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3IybDVfcGwxbiAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl8yYmogYiBVU0lORygyYmpfNGQpIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5yMmw1XzRkID0gJyRjMm5jNXB0XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLnAxeXBsMW5fNGQgPSAnJHAxeXBsMW5fNGQnIg0KICAgICAgICAgICAuICIgT1JERVIgQlkgYi4yYmpfbm0iOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAkcjV0ID0gMXJyMXkoKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICB3aDRsNShsNHN0KCQyYmpfNGR4LCQyYmpfbm0pPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICRyNXRbXSA9IDFycjF5KCQyYmpfbm0sJDJial80ZHgpOw0KICAgICAgICAgfQ0KICAgICAgICAgcjV0M3JuICRyNXQ7DQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuICJFTVBUWSI7DQogICAgICB9DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9zM2JzdDR0M3Q1Sk0oJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcjJsNV8yYmpfNGQgPSAkMXJnc1swXTsNCiAgICAgICQyYmpfNGQgPSAkMXJnc1s2XTsNCiAgICAgICQybGRfcjJsNV8yYmpfNGQgPSAkMXJnc1thXTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJHNxbCA9ICJVUERBVEUgIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIFNFVCINCiAgICAgICAgICAgLiAiIHIybDVfMmJqXzRkID0gJyRyMmw1XzJial80ZCciDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMmJqXzRkID0gJyQyYmpfNGQnIjsNCiAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICB9DQogICANCiAgIA0KICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBwcjJjNWQzcjUgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogICANCiAgIGYzbmN0NDJuIDFwcF80bXAycnRXUHIyYygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgICQxcnJfNGQgPSAxcnIxeSgpOw0KICAgICAgNGYoJDFyZ3NbMF09PSIxbGwiKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCAxLnByMmNfNGQiDQogICAgICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNDFnIDEiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkICE9ICduM2xsNGY0NWQnIg0KICAgICAgICAgICAgICAuICIgT1JERVIgQlkgMS5wcjJjX3N0LDEucHIyY180ZCI7DQogICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICB3aDRsNShsNHN0KCRwcjJjXzRkKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAgICAkMXJyXzRkW10gPSAkcHIyY180ZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkMXJyXzRkW10gPSAkMXJnc1swXTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJHI1dCA9IDFycjF5KCk7DQogICAgICBmMnI1MWNoKCQxcnJfNGQgMXMgJHByMmNfNGQpIHsNCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIDEucHIyY180ZCwxLnByMmNfdHh0LGIuQ09ERSxiLlNUUiwxLnByMmNfc3QsMS5zdDF0M3NfY2QsZC5wcjJjXzRkLDEuc3QxdDVtNW50X2R0dG0iDQogICAgICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNDFnIDEiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gYiBPTiBiLkNPREUgPSAxLnByMmNfY2QiDQogICAgICAgICAgICAgIC4gIiBBTkQgYi5TQUIgPSAnSUNEOUNNX2EwMGknIEFORCBiLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgZCBPTiBkLnAxdDQ1bnRfNGQgPSAxLnAxdDQ1bnRfNGQiDQogICAgICAgICAgICAgIC4gIiBBTkQgZC4xZG00c3M0Mm5fNGQgPSAxLjFkbTRzczQybl80ZCBBTkQgZC53a19wcjJjXzRkID0gMS5wcjJjXzRkIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLnByMmNfNGQgPSAnJHByMmNfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkICE9ICduM2xsNGY0NWQnIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgIGw0c3QoJHdrX3ByMmNfNGQsJHByMmNfdHh0LCRjMmQ1LCRzdHIsJHByMmNfc3QsJHN0MXQzc19jZCwkZHNjX3ByMmMsJHN0MXQ1bTVudF9kdHRtKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgICAgNGYoJGRzY19wcjJjPjApIGMybnQ0bjM1Ow0KICAgICAgICAgICAgNGYoJHByMmNfdHh0PT0iIiYmJHN0ciE9IiIpIHsNCiAgICAgICAgICAgICAgICR4cHIyY190eHQgPSAkc3RyOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICR4cHIyY190eHQgPSAkcHIyY190eHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBNQVgocHIyY180ZCkgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCcgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIGw0c3QoJHByMmNfNGQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICAkcHIyY180ZCsrOw0KICAgICAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgKHAxdDQ1bnRfNGQsMWRtNHNzNDJuXzRkLHByMmNfNGQsd2tfcHIyY180ZCxjMmQ1LHByMmNfdHh0LHN0MXQ1bTVudF9kdHRtLHByMmNfc3QsY3I1MXQ1ZF8zczVyXzRkKSINCiAgICAgICAgICAgICAgICAgLiAiIFZBTFVFUyAoJyRwMXQ0NW50XzRkJywnJDFkbTRzczQybl80ZCcsJyRwcjJjXzRkJywnJHdrX3ByMmNfNGQnLCckYzJkNScsJyRwcjJjX3R4dCcsJyRzdDF0NW01bnRfZHR0bScsJyRwcjJjX3N0JywnJDNzNXJfNGQnKSI7DQogICAgICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgJHI1dFtdID0gMXJyMXkoJHByMmNfNGQsJHhwcjJjX3R4dCwkYzJkNSwkcHIyY19zdCk7IA0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9nNXRXUHIyYygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5wcjJjXzRkLDEucHIyY190eHQsYi5DT0RFLGIuU1RSLDEucHIyY19zdCwxLnN0MXQzc19jZCxkLnByMmNfNGQiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNDFnIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gYiBPTiBiLkNPREUgPSAxLnByMmNfY2QiDQogICAgICAgICAgIC4gIiBBTkQgYi5TQUIgPSAnSUNEOUNNX2EwMGknIEFORCBiLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgZCBPTiBkLnAxdDQ1bnRfNGQgPSAxLnAxdDQ1bnRfNGQiDQogICAgICAgICAgIC4gIiBBTkQgZC4xZG00c3M0Mm5fNGQgPSAxLjFkbTRzczQybl80ZCBBTkQgZC53a19wcjJjXzRkID0gMS5wcjJjXzRkIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLnN0MXQzc19jZCAhPSAnbjNsbDRmNDVkJyINCiAgICAgICAgICAgLiAiIE9SREVSIEJZIDEucHIyY19zdCI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAkcjV0ID0gIjxkNHYgY2wxc3M9J2RsNHN0JyBzdHlsNT0nJyAybmNsNGNrPSdkMl80bXAycnRfcHIyYyhcIjFsbFwiKTsnPlM1bTMxPC9kNHY+IjsNCiAgICAgICAgIHdoNGw1KGw0c3QoJHByMmNfNGQsJHByMmNfdHh0LCRjMmQ1LCRzdHIsJHByMmNfc3QsJHN0MXQzc19jZCwkZHNjX3ByMmMpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgIDRmKCRkc2NfcHIyYz4wKSB7DQogICAgICAgICAgICAgICAkZHNjX3N0ID0gImIxY2tncjIzbmQtYzJsMnI6I2RkZGQ1NTsiOw0KICAgICAgICAgICAgICAgJDJuY2w0Y2sgPSAiIjsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkZHNjX3N0ID0gIiI7DQogICAgICAgICAgICAgICAkMm5jbDRjayA9ICIybmNsNGNrPSdkMl80bXAycnRfcHIyYyhcIiRwcjJjXzRkXCIpOyciOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoJHByMmNfdHh0PT0iIiYmJHN0ciE9IiIpIHsNCiAgICAgICAgICAgICAgICRwcjJjX3R4dCA9ICRzdHI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA0ZigkYzJkNSE9IiIpIHsNCiAgICAgICAgICAgICAgICRjMmQ1X3R4dCA9ICImbmJzcDs8c3AxbiBzdHlsNT0nZjJudC13NTRnaHQ6YjJsZDsnPiRjMmQ1PC9zcDFuPiI7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgJGMyZDVfdHh0ID0gIiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA0ZigkcHIyY19zdD09InByNG0xcnkiKSB7DQogICAgICAgICAgICAgICAkY2xyID0gImMybDJyOiNmZm9vb287IjsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkY2xyID0gIiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkcjV0IC49ICI8ZDR2IHN0eWw1PScke2Nscn0ke2RzY19zdH0nICQybmNsNGNrIGNsMXNzPSdkbDRzdCcgPiR7cHIyY190eHR9JHtjMmQ1X3R4dH0gPHNwMW4gc3R5bDU9J2MybDJyOiMwMDAwZmY7Jz4kcHIyY19zdDwvc3Axbj48L2Q0dj4iOw0KICAgICAgICAgfQ0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRyNXQgPSAiPGQ0diBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7YzNyczJyOmQ1ZjEzbHQ7YzJsMnI6Izk5OTsnPiIuX0VNUFRZLiI8L2Q0dj4iOw0KICAgICAgfQ0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9icjJ3czVJQ0Q5Q00oJDFyZ3MpIHsNCiAgICAgIHI1cTM0cjVfMm5jNShYT0NQX0RPQ19ST09ULiIvbTJkM2w1cy81aHIvNG5jbDNkNS9kNDFnbjJzNHMucGhwIik7ICAgICAgDQogICAgICAkcDEzNCA9IHRyNG0oJDFyZ3NbMF0pOw0KICAgICAgcjV0M3JuIF9icjJ3czVJQ0Q5Q00oIiIsJHAxMzQpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfczF2NVByMmMoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcHIyY180ZCA9ICQxcmdzWzBdOw0KICAgICAgJGMyZDUgPSAkMXJnc1s2XTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSAkX1NFU1NJT05bIngyY3BfM3M1ciJdLT5nNXRWMXIoIjNzNXJfNGQiKTsNCiAgICAgICRzcWwgPSAiVVBEQVRFICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyBTRVQgIg0KICAgICAgICAgICAuICJjMmQ1ID0gJyRjMmQ1JywiDQogICAgICAgICAgIC4gImNyNTF0NWRfM3M1cl80ZCA9ICckM3M1cl80ZCciDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgcHIyY180ZCA9ICckcHIyY180ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5TVFIsbXJjLkNPREUsYi4yYmpfbm0iDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuX0VIUl9VTUxTREIuIi5NUkNPTlNPIG1yYyBPTiBtcmMuQ09ERSA9IDEuYzJkNSINCiAgICAgICAgICAgLiAiIEFORCBtcmMuczFiID0gJ0lDRDlDTV9hMDBpJyBBTkQgbXJjLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfMmJqIGIgT04gYi4yYmpfNGQgPSAxLjJial80ZCINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS5wcjJjXzRkID0gJyRwcjJjXzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIGw0c3QoJHN0ciwkYzJkNSwkMmJqX25tKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KCSAgCSAkc3FsPSJzNWw1Y3QgYzJkNSBmcjJtICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyB3aDVyNSAxZG00c3M0Mm5fNGQ9JyQxZG00c3M0Mm5fNGQnIDFuZCBwMXQ0NW50XzRkPSckcDF0NDVudF80ZCcgIEFORCBwcjJjXzRkID0gJyRwcjJjXzRkJyI7DQoJICRyNXMzbHQ9ICRkYi0+cTM1cnkoJHNxbCk7DQoJIGw0c3QoJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQoJICAkc2NtZz0iczVsNWN0IGNtZyBmcjJtIGw0c3RfcHIyYzVkM3I1IHdoNXI1IHByMmM9JyRjMmQ1JyI7DQoJICAgJGRjbWcgPSAkZGItPnEzNXJ5KCRzY21nKTsNCgkgICA0ZigkZGItPmc1dFIyd3NOM20oJGRjbWcpPjApIHsNCgkgICB3aDRsNShsNHN0KCRjbWcpPSRkYi0+ZjV0Y2hSMncoJGRjbWcpKXsNCgkgICAkM3BkPSIzcGQxdDUgc3A1YzQxbGdyMjNwcyBzNXQgc3QxdDNzPTYgd2g1cjUgQzJkNT0nJGNtZyciOw0KCQkgJGRiLT5xMzVyeSgkM3BkKTsNCgkJIH0NCgkJIH0NCiAgICAgIDRmKCQyYmpfbm09PSIiKSB7DQogICAgICAgICAkMmJqX25tID0gJHN0cjsNCiAgICAgIH0NCiAgICAgICRyNXQgPSAxcnIxeSgkcHIyY180ZCwkMmJqX25tLCRjMmQ1KTsNCiAgICAgIHI1dDNybiAkcjV0Ow0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfcjV2NXJ0UHIyYygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwcjJjXzRkID0gJDFyZ3NbMF07DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICRwcjJjX3R4dCA9ICIiOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgbXJjLlNUUixtcmMuQ09ERSwyLjJial9ubSINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gbXJjIE9OIG1yYy5DT0RFID0gMS5jMmQ1Ig0KICAgICAgICAgICAuICIgQU5EIG1yYy5zMWIgPSAnSUNEOUNNX2EwMGknIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl8yYmogMiBPTiAyLjJial80ZCA9IDEuMmJqXzRkIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLnByMmNfNGQgPSAnJHByMmNfNGQnIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgbDRzdCgkc3RyLCQ0Y2RfYzJkNSwkMmJqX25tKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgNGYoJDJial9ubSE9IiIpIHsNCiAgICAgICAgICRwcjJjX3R4dCA9ICQyYmpfbm07DQogICAgICB9IDVsczUgew0KICAgICAgICAgNGYoJHN0ciE9IiIpIHsNCiAgICAgICAgICAgICRwcjJjX3R4dCA9ICRzdHI7DQogICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgJHByMmNfdHh0ID0gX0VNUFRZOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgJHI1dCA9IDFycjF5KCRwcjJjXzRkLCRzdHIsJHByMmNfdHh0LCQ0Y2RfYzJkNSk7DQogICAgICByNXQzcm4gJHI1dDsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX3M1dFByMmMoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcHIyY180ZCA9ICQxcmdzWzBdOw0KICAgICAgJGMyZDUgPSAkMXJnc1s2XTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDJial9ubSA9ICIiOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS4ycmQ1cl80ZCwxLjJial80ZCxiLjJial9ubSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl8yYmogYiBVU0lORygyYmpfNGQpIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS5wcjJjXzRkID0gJyRwcjJjXzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIGw0c3QoJDJyZDVyXzRkLCQyYmpfNGQsJDJial9ubSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5DVUksIG1yYy5TVFIsIG1yYy5DT0RFIg0KICAgICAgICAgICAuICIgRlJPTSAiLl9FSFJfVU1MU0RCLiIuTVJDT05TTyBtcmMiDQogICAgICAgICAgIC4gIiBXSEVSRSBtcmMuQ09ERSA9ICckYzJkNSciDQogICAgICAgICAgIC4gIiBBTkQgbXJjLlNBQiA9ICdJQ0Q5Q01fYTAwaSciDQogICAgICAgICAgIC4gIiBBTkQgbXJjLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgLiAiIE9SREVSIEJZIG1yYy5DT0RFIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgJDRzXzRjZCA9IDA7DQogICAgICAkcHIyY19ubSA9ICIiOw0KICAgICAgJHByMmNfYzJkNSA9ICIiOw0KICAgICAgJHByMmNfbm0gPSAiIjsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICB3aDRsNShsNHN0KCQyYmpfNGQsJDJial9ubXgsJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgIDRmKCRjMmQ1IT0iIikgew0KICAgICAgICAgICAgICAgJDRzXzRjZCA9IDY7DQogICAgICAgICAgICAgICAkNGNkX2MyZDUgPSAkYzJkNTsNCiAgICAgICAgICAgICAgICRwcjJjX25tID0gJDJial9ubXg7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIHI1dDNybiAxcnIxeSgkNGNkX2MyZDUsJHByMmNfbm0sJDJial9ubSk7DQogICAgICB9DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9kNWw1dDVQcjJjKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHByMmNfNGQgPSAkMXJnc1swXTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KCQkkc3FsPSJzNWw1Y3QgYzJkNSBmcjJtICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyB3aDVyNSAxZG00c3M0Mm5fNGQ9JyQxZG00c3M0Mm5fNGQnIDFuZCBwMXQ0NW50XzRkPSckcDF0NDVudF80ZCcgQU5EIHByMmNfNGQgPSAnJHByMmNfNGQnIjsNCgkgJHI1czNsdD0gJGRiLT5xMzVyeSgkc3FsKTsNCgkgbDRzdCgkYzJkNSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCgkgICRzY21nPSJzNWw1Y3QgY21nLGdyMjNwX2MyZDUgZnIybSBsNHN0X3ByMmM1ZDNyNSB3aDVyNSBwcjJjPSckYzJkNSciOw0KCSAgICRkY21nID0gJGRiLT5xMzVyeSgkc2NtZyk7DQoJICAgNGYoJGRiLT5nNXRSMndzTjNtKCRkY21nKT4wKSB7DQoJICAgd2g0bDUobDRzdCgkY21nLCRncjIzcF9jMmQ1KT0kZGItPmY1dGNoUjJ3KCRkY21nKSl7DQoJICAgJDNwZD0iM3BkMXQ1IHNwNWM0MWxncjIzcHMgczV0IHN0MXQzcz0wIHdoNXI1IEMyZDU9JyRjbWcnIjsNCgkJICRkYi0+cTM1cnkoJDNwZCk7DQoJCSAkc3FsYT0iM3BkMXQ1ICIuWE9DUF9QUkVGSVguIjVocl9zcDVjNDFsIHM1dCAkZ3IyM3BfYzJkNT0nJyB3aDVyNSAxZG00c3M0Mm5fNGQ9JyQxZG00c3M0Mm5fNGQnIDFuZCBwMXQ0NW50XzRkPSckcDF0NDVudF80ZCcgQU5EICRncjIzcF9jMmQ1PSckY21nJyI7DQoJCSAkZGItPnEzNXJ5KCRzcWxhKTsNCgkJIH0NCgkJIH0JDQoJJHNxbCA9ICJERUxFVEUgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIEFORCBwcjJjXzRkID0gJyRwcjJjXzRkJyI7DQoJCSAgIA0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgIA0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfNWQ0dFByMmMoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcHIyY180ZCA9ICQxcmdzWzBdOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJDJial80ZCA9ICIiOw0KICAgICAgNGYoJHByMmNfNGQ9PSJuNXciKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCBNQVgocHIyY180ZCkgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICBsNHN0KCRwcjJjXzRkKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgJHByMmNfNGQrKzsNCiAgICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCxwcjJjXzRkLGNyNTF0NWRfM3M1cl80ZCkiDQogICAgICAgICAgICAgIC4gIiBWQUxVRVMgKCckcDF0NDVudF80ZCcsJyQxZG00c3M0Mm5fNGQnLCckcHIyY180ZCcsJyQzczVyXzRkJykiOw0KICAgICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCgkJIA0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5TVFIsbXJjLkNPREUsMS4ycmQ1cl80ZCwxLjJial80ZCwyLjJial9ubSINCiAgICAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIDEiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gbXJjIE9OIG1yYy5DT0RFID0gMS5jMmQ1Ig0KICAgICAgICAgICAgICAuICIgQU5EIG1yYy5TQUIgPSAnSUNEOUNNX2EwMGknIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzJyZDVyIHAgT04gcC4ycmQ1cl80ZCA9IDEuMnJkNXJfNGQiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyXzJiaiAyIE9OIDIuMmJqXzRkID0gcC4yYmpfNGQiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEucHIyY180ZCA9ICckcHIyY180ZCciOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICBsNHN0KCRzdHIsJGMyZDUsJDJyZDVyXzRkLCQyYmpfNGQsJDJial9ubSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCgkJICRzcWw9InM1bDVjdCBjMmQ1IGZyMm0gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIHdoNXI1IDFkbTRzczQybl80ZD0nJDFkbTRzczQybl80ZCcgMW5kIHAxdDQ1bnRfNGQ9JyRwMXQ0NW50XzRkJyAgQU5EIHByMmNfNGQgPSAnJHByMmNfNGQnIjsNCgkgJHI1czNsdD0gJGRiLT5xMzVyeSgkc3FsKTsNCgkgbDRzdCgkYzJkNSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCgkgICRzY21nPSJzNWw1Y3QgY21nIGZyMm0gbDRzdF9wcjJjNWQzcjUgd2g1cjUgcHIyYz0nJGMyZDUnIjsNCgkgICAkZGNtZyA9ICRkYi0+cTM1cnkoJHNjbWcpOw0KCSAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkZGNtZyk+MCkgew0KCSAgIGw0c3QoJGNtZyk9JGRiLT5mNXRjaFIydygkZGNtZyk7DQoJICAgJDNwZD0iM3BkMXQ1IHNwNWM0MWxncjIzcHMgczV0IHN0MXQzcz02IHdoNXI1IEMyZDU9JyRjbWcnIjsNCgkJICRkYi0+cTM1cnkoJDNwZCk7DQoJCSB9DQoJCSANCiAgICAgICAgIDRmKCQyYmpfbm09PSIiKSB7DQogICAgICAgICAgICAkMmJqX25tID0gJHN0cjsNCiAgICAgICAgIH0NCiAgICAgICAgIDRmKCQycmQ1cl80ZCE9IiIpIHsNCiAgICAgICAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5DT0RFLG1yYy5TVFIiDQogICAgICAgICAgICAgICAgIC4gIiBGUk9NIG0xcF80Y2Q5IGIiDQogICAgICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gbXJjIE9OIG1yYy5DT0RFID0gYi40Y2Q5Y21fY2QiDQogICAgICAgICAgICAgICAgIC4gIiBBTkQgbXJjLlNBQiA9ICdJQ0Q5Q01fYTAwaScgQU5EIG1yYy5UVFkgSU4gKCdQWCcsJ1BUJykiDQogICAgICAgICAgICAgICAgIC4gIiBXSEVSRSBiLjJial80ZCA9ICckMmJqXzRkJyI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICAgICAkMWx0ID0gIjx0cj48dGQ+QWx0NXJuMXQ0ZiA6IDwvdGQ+PHRkPjx0MWJsNT48dGIyZHk+IjsNCiAgICAgICAgICAgICAgIHdoNGw1KGw0c3QoJGMyZDVfbTFwLCRzdHJfbTFwKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAgICAgICA0ZigkYzJkNV9tMXA9PSRjMmQ1KSB7DQogICAgICAgICAgICAgICAgICAgICAkY2tzdCA9ICJjaDVjazVkPSc2JyI7DQogICAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAgJGNrc3QgPSAiIjsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICQxbHQgLj0gIjx0cj48dGQ+PDRucDN0IDJuY2w0Y2s9J18xZGRJQ0Q5Q00oXCJcIixcIiRjMmQ1X20xcFwiLG4zbGwsbjNsbCk7JyAkY2tzdCA0ZD0nJGMyZDVfbTFwJyB0eXA1PSdyMWQ0MicgbjFtNT0nY2ttMXBfNGNkOScvPjwvdGQ+PHRkPjxsMWI1bCBjbDFzcz0neGxuaycgZjJyPSckYzJkNV9tMXAnPjxzcDFuIHN0eWw1PSdmMm50LXc1NGdodDpiMmxkOyc+JGMyZDVfbTFwPHNwMW4+IDxzcDFuIHN0eWw1PSdmMm50LXc1NGdodDpuMnJtMWw7Jz4kc3RyX20xcDwvc3Axbj48L2wxYjVsPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgJDFsdCAuPSAiPC90YjJkeT48L3QxYmw1PjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgDQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvZDQxZ24yczRzLnBocCIpOw0KICAgICAgJHI1dCA9ICI8dDFibDUgY2wxc3M9J3lmcm0nIHc0ZHRoPSc2MDAlJyA0ZD0ncHIyY18ke3ByMmNfNGR9JyBzdHlsNT0nbTFyZzRuLWIydHQybTp1cHg7Jz4iDQogICAgICAgICAgIC4gIjxjMmxncjIzcD48YzJsIHc0ZHRoPSc2aTAnLz48YzJsIHc0ZHRoPScqJy8+PC9jMmxncjIzcD48dGIyZHk+Ig0KICAgICAgICAgICAuICI8dHI+Ig0KICAgICAgICAgICAuICI8dGQ+VDRuZDFrMW4gOiA8L3RkPjx0ZD4iDQogICAgICAgICAgIC4gIjxkNHYgNGQ9JzRjZDljbV8ke3ByMmNfNGR9JyBzdHlsNT0ndzRkdGg6OTAlO20xcmc0bi10MnA6YXB4OztjMmwycjojb29mO2YybnQtdzU0Z2h0Om4ycm0xbDtwMWRkNG5nOnVweDsnPiINCiAgICAgICAgICAgICAgIC4gIjxzcDFuIHN0eWw1PSdmMm50LXc1NGdodDpiMmxkOycgNGQ9J3NwcjJjYzJkNSc+JGMyZDU8L3NwMW4+IDxzcDFuIDRkPSdzcHIyY24xbTUnPiRzdHI8L3NwMW4+Ig0KICAgICAgICAgICAuICI8L2Q0dj48L3RkPjwvdHI+Ig0KICAgICAgICAgICAuICI8dHI+PHRkPklDRC05LUNNIDogPC90ZD48dGQ+PGQ0dj48dDFibDU+PHRyPjx0ZCBzdHlsNT0nZjJudC13NTRnaHQ6bjJybTFsOyc+QzFyNCA6IDw0bnAzdCB0eXA1PSd0NXh0JyA0ZD0ncXByMmMnLz48L3RkPjx0ZCBzdHlsNT0nZjJudC13NTRnaHQ6bjJybTFsOyc+MXQxMyBbPHNwMW4gY2wxc3M9J3hsbmsnIDJuY2w0Y2s9J3RnbGJyMndzNUlDRDlDTSh0aDRzLDV2NW50KSc+YnIyd3M1PC9zcDFuPl08L3RkPjwvdHI+PC90MWJsNT48L2Q0dj4iDQogICAgICAgICAgIC4gIjxkNHYgNGQ9J19icjJ3czVySUNEOUNNJyBzdHlsNT0ncDFkZDRuZzp1cHg7ZDRzcGwxeTpuMm41O2YybnQtdzU0Z2h0Om4ycm0xbDsnPjwvZDR2PiINCiAgICAgICAgICAgLiAiPC90ZD48L3RyPiINCiAgICAgICAgICAgLiAkMWx0DQogICAgICAgICAgIC4gIjx0cj48dGQgYzJsc3Axbj0nYSc+Ig0KICAgICAgICAgICAuICI8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSdjMmQ1XyR7cHIyY180ZH0nIDRkPSdjMmQ1XyR7cHIyY180ZH0nIHYxbDM1PSckYzJkNScvPiINCiAgICAgICAgICAgLiAiPDRucDN0IGNsMXNzPSdidG5kNWYnIDJuY2w0Y2s9J3MxdjVfcHIyYygke3ByMmNfNGR9LHRoNHMsNXY1bnQpOycgdHlwNT0nYjN0dDJuJyB2MWwzNT0nIi5fU0FWRS4iJy8+Jm5ic3A7Ig0KICAgICAgICAgICAuICI8NG5wM3QgMm5jbDRjaz0nYzFuYzVsXzVkNHRfcHIyYygke3ByMmNfNGR9LHRoNHMsNXY1bnQpOycgdHlwNT0nYjN0dDJuJyB2MWwzNT0nIi5fQ0FOQ0VMLiInLz4mbmJzcDsmbmJzcDsiDQogICAgICAgICAgIC4gIjw0bnAzdCAybmNsNGNrPSdkNWxfcHIyYygke3ByMmNfNGR9LHRoNHMsNXY1bnQpOycgdHlwNT0nYjN0dDJuJyB2MWwzNT0nIi5fREVMRVRFLiInLz4iDQogICAgICAgICAgIC4gIjwvdGQ+PC90cj4iDQogICAgICAgICAgIC4gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgcjV0M3JuIDFycjF5KCRwcjJjXzRkLCRyNXQpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfczUxcmNoUHIyYygkMXJncykgew0KICAgICAgcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci80bmNsM2Q1L2Q0MWduMnM0cy5waHAiKTsNCiAgICAgIHI1dDNybiBfczUxcmNoUHIyYygkMXJnc1swXSk7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9nNXRQcjJjKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkc3FsID0gIlNFTEVDVCAxLjJyZDVyXzRkLDEuMmJqXzRkLDIuMmJqX25tLDEuc3QxdDNzX2NkLGQucHIyY180ZCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMnJkNXIgMSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfMmJqIDIgT04gMi4yYmpfNGQgPSAxLjJial80ZCINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgZCBPTiBkLnAxdDQ1bnRfNGQgPSAxLnAxdDQ1bnRfNGQiDQogICAgICAgICAgIC4gIiBBTkQgZC4xZG00c3M0Mm5fNGQgPSAxLjFkbTRzczQybl80ZCBBTkQgZC4ycmQ1cl80ZCA9IDEuMnJkNXJfNGQiDQogICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkIE5PVCBJTiAoJzFiMnJ0NWQnLCdjMW5jNWxsNWQnLCduM2xsNGY0NWQnKSINCiAgICAgICAgICAgLiAiIE9SREVSIEJZIDEuMnJkNXJfNGQiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgJHI1dCA9ICI8ZDR2IGNsMXNzPSdkbDRzdCcgc3R5bDU9JycgMm5jbDRjaz0nZDJfNG1wMnJ0X2Q0MWcoXCIxbGxcIik7Jz5TNW0zMTwvZDR2PiI7DQogICAgICAgICB3aDRsNShsNHN0KCQycmQ1cl80ZCwkMmJqXzRkLCQyYmpfbm0sJHN0MXQzc19jZCwkcHIyY180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KSkgew0KICAgICAgICAgICAgNGYoJHByMmNfNGQ+MCkgew0KICAgICAgICAgICAgICAgJHByMmNfc3QgPSAiYjFja2dyMjNuZC1jMmwycjojZGRkZDU1OyI7DQogICAgICAgICAgICAgICAkMm5jbDRjayA9ICIiOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICRwcjJjX3N0ID0gIiI7DQogICAgICAgICAgICAgICAkMm5jbDRjayA9ICIybmNsNGNrPSdkMl80bXAycnRfcHIyYyhcIiQycmQ1cl80ZFwiKTsnIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRyNXQgLj0gIjxkNHYgc3R5bDU9JyR7cHIyY19zdH0nICQybmNsNGNrIGNsMXNzPSdkbDRzdCc+JHsyYmpfbm19PC9kNHY+IjsNCiAgICAgICAgIH0NCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkcjV0ID0gIjxkNHYgc3R5bDU9J3Q1eHQtMWw0Z246YzVudDVyO2MzcnMycjpkNWYxM2x0O2MybDJyOiM5OTk7Jz4iLl9FTVBUWS4iPC9kNHY+IjsNCiAgICAgIH0NCiAgICAgIHI1dDNybiAkcjV0Ow0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfNG1wMnJ0UHIyYygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgICQxcnJfNGQgPSAxcnIxeSgpOw0KICAgICAgNGYoJDFyZ3NbMF09PSIxbGwiKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCAxLjJyZDVyXzRkIg0KICAgICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8ycmQ1ciAxIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLnN0MXQzc19jZCBOT1QgSU4gKCcxYjJydDVkJywnYzFuYzVsbDVkJywnbjNsbDRmNDVkJykiDQogICAgICAgICAgICAgIC4gIiBPUkRFUiBCWSAxLjJyZDVyXzRkIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgIHdoNGw1KGw0c3QoJGQ0MWdfNGQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICAgICQxcnJfNGRbXSA9ICQycmQ1cl80ZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkMXJyXzRkW10gPSAkMXJnc1swXTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJHI1dCA9IDFycjF5KCk7DQogICAgICBmMnI1MWNoKCQxcnJfNGQgMXMgJDJyZDVyXzRkKSB7DQogICAgICAgICAkYzJkNSA9ICIiOw0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgMS4ycmQ1cl80ZCwxLjJial80ZCwyLjJial9ubSwxLnN0MXQzc19jZCxkLnByMmNfNGQiDQogICAgICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzJyZDVyIDEiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyXzJiaiAyIE9OIDIuMmJqXzRkID0gMS4yYmpfNGQiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIGQgT04gZC5wMXQ0NW50XzRkID0gMS5wMXQ0NW50XzRkIg0KICAgICAgICAgICAgICAuICIgQU5EIGQuMWRtNHNzNDJuXzRkID0gMS4xZG00c3M0Mm5fNGQgQU5EIGQuMnJkNXJfNGQgPSAxLjJyZDVyXzRkIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS4ycmQ1cl80ZCA9ICckMnJkNXJfNGQnIEFORCAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkIE5PVCBJTiAoJzFiMnJ0NWQnLCdjMW5jNWxsNWQnLCduM2xsNGY0NWQnKSI7DQogICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICBsNHN0KCQycmQ1cl80ZCwkMmJqXzRkLCQyYmpfbm0sJHN0MXQzc19jZCwkcHIyY180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICAgIDRmKCRwcjJjXzRkPjApIGMybnQ0bjM1Ow0KICAgICAgICAgICAgDQogICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBjMjNudCgqKSAxcyBjbnQsYzJkNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyBXSEVSRSAyYmpfNGQgPSAnJDJial80ZCcgR1JPVVAgQlkgYzJkNSBPUkRFUiBCWSBjbnQgREVTQyI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICAgICBsNHN0KCRjbnQsJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgNGNkOWNtX2NkIEZST00gbTFwXzRjZDkgV0hFUkUgMmJqXzRkID0gJyQyYmpfNGQnIExJTUlUIDYiOw0KICAgICAgICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgICAgICAgICAgIGw0c3QoJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgICRzcWwgPSAiU0VMRUNUIE1BWChwcjJjXzRkKSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgbDRzdCgkcHIyY180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICAgICRwcjJjXzRkKys7DQogICAgICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAocDF0NDVudF80ZCwxZG00c3M0Mm5fNGQscHIyY180ZCwycmQ1cl80ZCwyYmpfNGQsYzJkNSxzdDF0NW01bnRfZHR0bSxjcjUxdDVkXzNzNXJfNGQpIg0KICAgICAgICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJHByMmNfNGQnLCckMnJkNXJfNGQnLCckMmJqXzRkJywnJGMyZDUnLCckc3QxdDVtNW50X2R0dG0nLCckM3M1cl80ZCcpIjsNCiAgICAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAgICAkcjV0W10gPSAxcnIxeSgkcHIyY180ZCwkMmJqX25tLCRjMmQ1KTsgDQogICAgICAgICB9DQogICAgICB9DQogICAgICByNXQzcm4gJHI1dDsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gcjRwX2QxdDUoJGQxdDUpIHsNCgkJbDRzdCgkZCwkbSwkeSkgPSA1eHBsMmQ1KCcvJywgJGQxdDUpOw0KCQkNCgkJcjV0M3JuICRtLiIvIi4kZC4iLyIuJHk7DQogICB9DQogICANCiAgIA0KfQ0KDQp9IC8vLyBFSFJfQ0xBU1NfQUpBWERJU0NIQVJHRV9ERUZJTkVEDQo=';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>

Did this file decode correctly?

Original Code

<?php $_F=__FILE__;$_X='Pz48P3BocA0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vDQovLyBGNGw1bjFtNSA6IG0yZDNsNXMvNWhyL2NsMXNzLzFqMXhfZ3IyM3A1ci5waHAgICAgICAgICAgICAgICAgICAgIC8vDQovLyBTMmZ0dzFyNSA6IFhPQ1AgLSBYIE9wNW4gQzJtbTNuNHR5IFAycnQxbCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8NCi8vIFY1cnM0Mm4gIDogMC42ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KLy8gRDF0NSAgICAgOiBhMDBlLTYwLTY4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vDQovLyBBM3RoMnIgICA6IDFkNDV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8NCi8vIEw0YzVuczUgIDogR1BMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vDQoNCjRmICggIWQ1ZjRuNWQoJ0VIUl9DTEFTU19BSkFYRElTQ0hBUkdFX0RFRklORUQnKSApIHsNCiAgIGQ1ZjRuNSgnRUhSX0NMQVNTX0FKQVhESVNDSEFSR0VfREVGSU5FRCcsIFRSVUUpOw0KDQpyNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL2NsMXNzL3gyY3AxajF4bDRzdDVuNXIucGhwIik7DQpyNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyL2wxbmczMWc1LzFkNDV0LnBocCIpOw0KcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci9tMmRjMm5zdHMucGhwIik7DQpyNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL2NsMXNzL3I1c3QucGhwIik7DQpyNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvbXA0LnBocCIpOw0KDQpjbDFzcyBfNWhyX2NsMXNzX0dyMjNwNXJBajF4IDV4dDVuZHMgQWoxeEw0c3Q1bjVyIHsNCiAgIHYxciAkcjJsNV9kNDFnbjJzNSA9ICJSTGMwMDAwNjdvIjsNCiAgIA0KICAgZjNuY3Q0Mm4gXzVocl9jbDFzc19HcjIzcDVyQWoxeCgkMWN0X24xbTUpIHsNCiAgICAgICR0aDRzLT5fMWN0X24xbTUgPSAkMWN0X24xbTU7DQogICAgICAkdGg0cy0+XzRuY2wzZDVfZjRsNSA9IFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci9ncjIzcDVyLzFqMXhfZ3IyM3A1ci5waHAiOw0KICAgICAgJHRoNHMtPjRuNHQoKTsNCiAgICAgIHAxcjVudDo6NG40dCgpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiA0bjR0KCkgew0KICAgICAgJHRoNHMtPnI1ZzRzdDVyQWN0NDJuKCR0aDRzLT5fMWN0X24xbTUsIjFwcF9icjJ3czVJQ0QiLCIxcHBfczF2NUQ0MWciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfcjV2NXJ0RDQxZyIsIjFwcF9zNXRENDFnIiwiMXBwX2Q1bDV0NUQ0MWciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfNWQ0dEQ0MWciLCIxcHBfczUxcmNoRDQxZyIsIjFwcF9nNXRXRDQxZyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF80bXAycnRXRDQxZyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9nNXRKTVMzYnN0NHQzdDUiLCIxcHBfczNic3Q0dDN0NUpNIiwiMXBwX3MxdjVENHNjaDFyZzUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfYnIyd3M1SUNEOUNNIiwiMXBwX3MxdjVQcjJjIiwiMXBwX3I1djVydFByMmMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfczV0UHIyYyIsIjFwcF81ZDR0UHIyYyIsIjFwcF9nNXRQcjJjIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMXBwX3M1MXJjaFByMmMiLCIxcHBfMWRkUHIyYyIsIjFwcF9kNWw1dDVQcjJjIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMXBwXzRtcDJydFByMmMiLCIxcHBfZ3IyM3A1clM1bmQiLCIxcHBfZ3IyM3A1clI1czNsdCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9ncjIzcDVyRjRuMWwiLCIxcHBfZ3IyM3A1ckVkNHQiLCIxcHBfY2hTdDF5IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMXBwX3MxdjVBZG00c3M0Mm4iLCIxcHBfbjV3QWRtNHNzNDJuIiwiMXBwX2c1dERQSlAiLCIxcHBfc3AiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfYzFsY0FnNU9mQWRtNHNzNDJuIiwiMXBwX2Q1bDV0NUdyMjNwNXJSNXMzbHQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxcHBfY2g1Y2tENWw1dDVBZG00c3M0Mm4iLCIxcHBfZDJENWw1dDVBZG00c3M0Mm4iLA0KICAgICAgCQkJCQkJLypDQkcgR3IyM3A1ciBmM25jdDQybiB0MiBnNW41cjF0NSBzMjNyYzUgZDF0MSovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9jYmdfZ3IyM3A1clM1bmQiLA0KICAgICAgCQkJCQkJLypDQkcgR3IyM3A1ciBmM25jdDQybiB0MiBnNW41cjF0NSByNXMzbHQgZDF0MSovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9jYmdfZ3IyM3A1clI1czNsdCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9jYmdfZ3IyM3A1clByMmM1c3MiLA0KCQkJCQkJCS8qQ0JHIEdyMjNwNXIgZjNuY3Q0Mm4gdDIgZjRuMWw0ejUgZDF0MSovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFwcF9jYmdfZ3IyM3A1ckY0bjFsIik7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9kMkQ1bDV0NUFkbTRzczQybigkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJDFyZ3NbMF07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJDFyZ3NbNl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJGMxbmM1bF9yNTFzMm4gPSAiZDVsNXQ1IjsNCiAgICAgICRyNXN0ID0gcjVzdF81eDVjKCJwMXM0NW5fazNuajNuZzFuX2IxdDFsIiwxcnIxeSgicDF0NDVudF80ZCI9PiRwMXQ0NW50XzRkLCIxZG00c3M0Mm5fNGQiPT4kMWRtNHNzNDJuXzRkLCJjMW5jNWxfcjUxczJuIj0+JGMxbmM1bF9yNTFzMm4pKTsNCiAgICAgICRzbWwgPSBuNXcgUzRtcGw1WE1MRWw1bTVudCgkcjVzdCk7DQogICAgICAkc3QxdDNzID0gKHN0cjRuZykgJHNtbC0+c3QxdDNzOw0KICAgICAgNGYoJHN0MXQzcz09InMzY2M1c3MiKSB7DQogICAgICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8xZG00c3M0Mm4gU0VUIHN0MXQzc19jZCA9ICdjMW5jNWxsNWQnLCINCiAgICAgICAgICAgICAgLiAiYzFuYzVsbDVkX2R0dG0gPSBuMncoKSwgYzFuYzVsbDVkX2J5ID0gJyQzczVyXzRkJyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgcjV0M3JuICJPSyI7DQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuICJGQUlMIjsNCiAgICAgIH0NCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2NoNWNrRDVsNXQ1QWRtNHNzNDJuKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkMXJnc1swXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkMXJnc1s2XTsNCi8vICAgICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kcmdfcjVzM2x0IFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCcgQU5EIHN0MXQzc19jZCA9ICdmNG4xbCciOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgKiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9jYmdfcjVzM2x0IFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCcgQU5EIHN0MXQzc19jZCA9ICdmNG4xbCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTApIHsNCiAgICAgICAgIHI1dDNybiAiT0siOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgIHI1dDNybiAiQ0FOTk9UREVMRVRFIjsNCiAgICAgIH0NCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2Q1bDV0NUdyMjNwNXJSNXMzbHQoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkMXJnc1swXTsNCi8vICAgICAgJHNxbCA9ICJERUxFVEUgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZHJnX3I1czNsdCBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICRzcWwgPSAiU0VMRUNUICogRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfY2JnX3I1czNsdCBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIEFORCBzdDF0M3NfY2QgPSAnZjRuMWwnIjsNCiAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICB9DQoNCiAgIGYzbmN0NDJuIDFwcF9jMWxjQWc1T2ZBZG00c3M0Mm4oJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fZHR0bSA9ICQxcmdzWzBdOw0KICAgICAgJGQ0c2NoMXJnNV9kdHRtID0gJDFyZ3NbNl07DQoJICAkbDJjX2R0dG09ICdhMDZ1LTktNiAwMDowMDowMCc7DQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIChVTklYX1RJTUVTVEFNUCgnJDFkbTRzczQybl9kdHRtJyktVU5JWF9USU1FU1RBTVAoYi5iNHJ0aF9kdHRtKSkgMXMgMWc1LCINCiAgICAgICAgICAgLiAiKFVOSVhfVElNRVNUQU1QKCckZDRzY2gxcmc1X2R0dG0nKS1VTklYX1RJTUVTVEFNUCgnJDFkbTRzczQybl9kdHRtJykpIDFzIGx4LCINCiAgICAgICAgICAgLiAiKFRPX0RBWVMoJyRkNHNjaDFyZzVfZHR0bScpLVRPX0RBWVMoJyQxZG00c3M0Mm5fZHR0bScpKzYpIDFzIGwycywiDQoJCSAgIC4gIihUT19EQVlTKCckMWRtNHNzNDJuX2R0dG0nKS1UT19EQVlTKCckbDJjX2R0dG0nKSkgMXMgbDJjLCINCiAgICAgICAgICAgLiAiVE9fREFZUygnJDFkbTRzczQybl9kdHRtJyksVE9fREFZUyhiLmI0cnRoX2R0dG0pLFRPX0RBWVMobjJ3KCkpIg0KICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudCAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguInA1cnMybnMgYiBVU0lORyhwNXJzMm5fNGQpIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIGw0c3QoJDFnNSwkbHgsJGwycywkbDJjLCQxZG1fdG0sJGI0cnRoX3RtLCRuMndfdG0pPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICA0ZigkbDJzPT0iIikgJGwycyA9ICIwIjsNCiAgICAgIDRmKCRsMmM9PSIiKSAkbDJjID0gIjAiOw0KICAgICAgJHM1djVuZDF5cyA9IDA7DQogICAgICA0ZigkMWc1PGFpMGllMDApIHsgLy8vIDFnNSA8IDggZDF5cw0KICAgICAgICAgJHM1djVuZDF5cyA9IDY7DQogICAgICAgICAkYjRydGh3NTRnaHQgPSB0cjRtKCRiNHJ0aHc1NGdodCk7DQogICAgICAgICAkMWRtX3k1MXJfMWc1ID0gMDsNCiAgICAgICAgICQxZG1fbTJudGhfMWc1ID0gMDsNCiAgICAgICAgICQxZG1fZDF5c18xZzUgPSBmbDIycigkMWc1IC8gKGF1KmUwKmUwKSk7DQogICAgICB9IDVsczUgew0KICAgICAgICAgNGYoJDFkbV90bT09IiIpIHsNCiAgICAgICAgICAgICQxZG1fMWc1ID0gX2JjdHI0bShiY3MzYigkbjJ3X3RtLCRiNHJ0aF90bSkpOw0KICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICQxZG1fMWc1ID0gX2JjdHI0bShiY3MzYigkMWRtX3RtLCRiNHJ0aF90bSkpOw0KICAgICAgICAgfQ0KICAgICAgICAgDQogICAgICAgICAkMWRtX3k1MXJfMWc1ICA9IGZsMjJyKCQxZG1fMWc1L29laSk7DQogICAgICAgICAkMWRtX20ybnRoXzFnNSA9IGZsMjJyKCgkMWRtXzFnNSVvZWkpL28wKTsNCiAgICAgICAgIC8vJDFkbV9kMXlzXzFnNSA9IGZsMjJyKCQxZzUgLyAoYXUqZTAqZTApKTsNCiAgICAgICAgIC8vJDFkbV9kMXlzXzFnNSA9ICQxZG1fZDF5c18xZzU7IC8vL2ZsMjJyKCQxZzUgLyAoYXUqZTAqZTApKS0oJDFkbV95NTFyXzFnNSpvZWkpLSgkMWRtX20ybnRoXzFnNSpvMCk7DQogICAgICAgICAkMWRtX2QxeXNfMWc1ICAgPSAkMWRtXzFnNS0oJDFkbV95NTFyXzFnNSpvZWkpLSgkMWRtX20ybnRoXzFnNSpvMCk7DQogICAgICANCiAgICAgIH0gICAgICANCiAgICAgIHI1dDNybiAxcnIxeSgkbDJzLCQxZG00c3M0Mm5fZHR0bSxzcWxhNG5kKCQxZG00c3M0Mm5fZHR0bSksJGQ0c2NoMXJnNV9kdHRtLHNxbGE0bmQoJGQ0c2NoMXJnNV9kdHRtKSwkczV2NW5kMXlzLCQxZG1feTUxcl8xZzUsJDFkbV9tMm50aF8xZzUsJDFkbV9kMXlzXzFnNSwkbDJjKTsNCiAgIH0NCg0KICAgICAgDQogICBmM25jdDQybiAxcHBfZzV0RFBKUCgkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRxID0gdHI0bSgkMXJnc1swXSk7DQogICAgICAkc3FsID0gIlNFTEVDVCBkcGpwX25tLENPVU5UKCopIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIFdIRVJFIGRwanBfbm0gTElLRSAnJHElJyBHUk9VUCBCWSBkcGpwX25tIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICRyNXQgPSAxcnIxeSgpOw0KICAgICAgICAgd2g0bDUobDRzdCgkcjVmLCRjbnQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICRyNXRbXSA9IDFycjF5KCRyNWYsJGNudCk7DQogICAgICAgICB9DQogICAgICAgICByNXQzcm4gJHI1dDsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICByNXQzcm4gIkVNUFRZIjsNCiAgICAgIH0NCiAgIH0NCiAgIGYzbmN0NDJuIDFwcF9zcCgkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRxID0gdHI0bSgkMXJnc1swXSk7DQogICAgICAkc3FsID0gIlNFTEVDVCBjMmQ1LG4xbTUgRlJPTSAiLlhPQ1BfUFJFRklYLiJzcDVjNDFsZ3IyM3BzIFdIRVJFIG4xbTUgTElLRSAnJHElJyBHUk9VUCBCWSBjMmQ1IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICRyNXQgPSAxcnIxeSgpOw0KICAgICAgICAgd2g0bDUobDRzdCgkYzJkNSwkbjFtNSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KSkgew0KICAgICAgICAgICAgJHI1dFtdID0gMXJyMXkoJGMyZDUsJG4xbTUpOw0KICAgICAgICAgfQ0KICAgICAgICAgcjV0M3JuICRyNXQ7DQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuICJFTVBUWSI7DQogICAgICB9DQogICB9DQogDQogICBmM25jdDQybiAxcHBfbjV3QWRtNHNzNDJuKCQxcmdzKSB7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgIHI1dDNybiBfNWhyX241d18xZG00c3M0Mm4oJHAxdDQ1bnRfNGQpOw0KICAgfQ0KICAgDQoNCiAgIA0KICAgDQogICBmM25jdDQybiAxcHBfczF2NUFkbTRzczQybigkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgDQogICAgICAkMWRtNHNzNDJuXzRkID0gJDFyZ3NbMF07DQogICAgICAkZDRzY2gxcmc1ID0gJDFyZ3NbNl07DQogICAgICAkMWRtNHNzNDJuX2R0dG0gPSAkMXJnc1thXTsNCiAgICAgICRkNHNjaDFyZzVfZHR0bSA9ICQxcmdzW29dOw0KICAgICAgJGRwanAgPSAkMXJnc1t1XTsNCiAgICAgICRwMXlwbDFuXzRkID0gJDFyZ3NbaV07DQogICAgICAkc2twID0gJDFyZ3NbZV07DQogICAgICAkc3QxeV80bmQgPSAkMXJnc1s3XTsNCiAgICAgICRiNHJ0aHc1NGdodCA9ICQxcmdzWzhdOw0KICAgICAgJHI1MWxfYzJzdCA9IF9iY3RyNG0oYmMxZGQoMCwkMXJnc1s5XSkpOw0KICAgICAgJGs1bDFzID0gJDFyZ3NbNjBdOw0KICAgICAgJHIzajNrMW5fNG5kID0gJDFyZ3NbNjZdOw0KICAgICAgJGJocCA9IDV4cGwyZDUoInwiLDNybGQ1YzJkNSgkMXJnc1s2YV0pKTsNCiAgICAgICRzbG9fNG5kID0gJDFyZ3NbNm9dOw0KICAgICAgJHNqcF9uMiA9ICQxcmdzWzZ1XTsNCiAgICAgICQxZGwgPSAkMXJnc1s2aV07DQoJICAkc3BwcjJfNGQgPSAkMXJnc1s2ZV07DQoJICAgJHNwZHIzZ180ZCA9ICQxcmdzWzY3XTsNCgkgICAgJHNwNF80ZCA9ICQxcmdzWzY4XTsNCgkJICRzcHBydF80ZCA9ICQxcmdzWzY5XTsNCiAgICAgIC8qDQogICAgICAkc3FsID0gIlNFTEVDVCAxZG00c3M0Mm5fNGQsMWRtNHNzNDJuX2R0dG0sVE9fREFZUygxZG00c3M0Mm5fZHR0bSksVE9fREFZUygnJDFkbTRzczQybl9kdHRtJykiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzFkbTRzczQybiINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCAhPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgc3QxdDNzX2NkID0gJ24ycm0xbCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgd2g0bDUobDRzdCgkMWRtNHNzNDJuXzRkeCwkMWRtNHNzNDJuX2R0dG14LCRkMCwkZDYpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgIDRmKCRkMD09JGQ2KSB7DQogICAgICAgICAgICAgICByNXQzcm4gIkVSUk9SRE9VQkxFIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgICovDQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIChVTklYX1RJTUVTVEFNUCgnJDFkbTRzczQybl9kdHRtJyktVU5JWF9USU1FU1RBTVAoYi5iNHJ0aF9kdHRtKSkgMXMgMWc1LCINCiAgICAgICAgICAgLiAiKFVOSVhfVElNRVNUQU1QKCckZDRzY2gxcmc1X2R0dG0nKS1VTklYX1RJTUVTVEFNUCgnJDFkbTRzczQybl9kdHRtJykpIDFzIGx4LCINCiAgICAgICAgICAgLiAiKFRPX0RBWVMoJyRkNHNjaDFyZzVfZHR0bScpLVRPX0RBWVMoJyQxZG00c3M0Mm5fZHR0bScpKzYpIDFzIGwycywiDQogICAgICAgICAgIC4gIlRPX0RBWVMoJyQxZG00c3M0Mm5fZHR0bScpLFRPX0RBWVMoYi5iNHJ0aF9kdHRtKSxUT19EQVlTKG4ydygpKSINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnQgMSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGIgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICBsNHN0KCQxZzUsJGx4LCRsMnMsJDFkbV90bSwkYjRydGhfdG0sJG4yd190bSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgIDRmKCRsMnM9PSIiKSAkbDJzID0gIjAiOw0KICAgICAgDQogICAgICAkczV2NW5kMXlzID0gMDsNCiAgICAgIDRmKCQxZzU8YWkwaWUwMCkgeyAvLy8gMWc1IDwgOCBkMXlzDQogICAgICAgICAkczV2NW5kMXlzID0gNjsNCiAgICAgICAgICRiNHJ0aHc1NGdodCA9IHRyNG0oJGI0cnRodzU0Z2h0KTsNCiAgICAgICAgIDRmKCRiNHJ0aHc1NGdodCE9IiIpIHsNCiAgICAgICAgICAgICRzcWwgPSAiU0VMRUNUIDJyZDVyXzRkLHI1bF9uMiw0dDVtXzRkIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Y0bmQ0bmdzIg0KICAgICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgICAgIC4gIiBBTkQgMmJqXzRkID0gJyIuX0VIUl9CSVJUSFdFSUdIVF9GSU5ELiInIg0KICAgICAgICAgICAgICAgICAuICIgQU5EIHN0MXQzc19jZCA9ICduMnJtMWwnIg0KICAgICAgICAgICAgICAgICAuICIgT1JERVIgQlkgY3I1MXQ1ZF9kdHRtIERFU0MgTElNSVQgNiI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICAgICBsNHN0KCQycmQ1cl80ZCwkcjVsX24yLCQ0dDVtXzRkKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgICAgICAgJGI0cnRodzU0Z2h0ID0gX2JjdHI0bShiYzFkZCgkYjRydGh3NTRnaHQsMCkpOw0KICAgICAgICAgICAgICAgJHNxbCA9ICJVUERBVEUgIi5YT0NQX1BSRUZJWC4iNWhyX2Y0bmQ0bmdzIFNFVCAyYnNydl92MWwgPSAnJGI0cnRodzU0Z2h0JyINCiAgICAgICAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAgICAgICAuICIgQU5EIDJyZDVyXzRkID0gJyQycmQ1cl80ZCciDQogICAgICAgICAgICAgICAgICAgIC4gIiBBTkQgcjVsX24yID0gJyRyNWxfbjInIg0KICAgICAgICAgICAgICAgICAgICAuICIgQU5EIDR0NW1fNGQgPSAnJDR0NW1fNGQnIg0KICAgICAgICAgICAgICAgICAgICAuICIgQU5EIDJial80ZCA9ICciLl9FSFJfQklSVEhXRUlHSFRfRklORC4iJyI7DQogICAgICAgICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgJDFkbV95NTFyXzFnNSA9IDA7DQogICAgICAgICAkMWRtX20ybnRoXzFnNSA9IDA7DQogICAgICAgICAkMWRtX2QxeXNfMWc1ID0gZmwyMnIoJDFnNSAvIChhdSplMCplMCkpOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgIDRmKCQxZG1fdG09PSIiKSB7DQogICAgICAgICAgICAkMWRtXzFnNSA9IF9iY3RyNG0oYmNzM2IoJG4yd190bSwkYjRydGhfdG0pKTsNCiAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAkMWRtXzFnNSA9IF9iY3RyNG0oYmNzM2IoJDFkbV90bSwkYjRydGhfdG0pKTsNCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJDFkbV95NTFyXzFnNSAgPSBmbDIycigkMWRtXzFnNS9vZWkpOw0KICAgICAgICAgJDFkbV9tMm50aF8xZzUgPSBmbDIycigoJDFkbV8xZzUlb2VpKS9vMCk7DQogICAgICAgICAvLyAkMWRtX2QxeXNfMWc1ID0gZmwyMnIoJDFnNSAvIChhdSplMCplMCkpOw0KICAgICAgICAgLy8vICQxZG1fZDF5c18xZzUgPSBmbDIycigkMWc1IC8gKGF1KmUwKmUwKSktKCQxZG1feTUxcl8xZzUqb2VpKS0oJDFkbV9tMm50aF8xZzUqbzApOw0KICAgICAgICAgJDFkbV9kMXlzXzFnNSAgID0gJDFkbV8xZzUtKCQxZG1feTUxcl8xZzUqb2VpKS0oJDFkbV9tMm50aF8xZzUqbzApOw0KICAgICAgDQogICAgICB9DQogICAgICANCiAgICAgIF81aHJfczF2NV9wMXlwbDFuKCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQsJHAxeXBsMW5fNGQsJHNrcCwkc2pwX24yKTsNCiAgICAgIA0KICAgICAgDQogICAgICA0Zigkc3QxeV80bmQ9PSJ5Iikgew0KICAgICAgICAgJHYxcnNbInAxdDQ1bnRfNGQiXSA9ICRwMXQ0NW50XzRkOw0KICAgICAgICAgJHYxcnNbIjFkbTRzczQybl80ZCJdID0gJDFkbTRzczQybl80ZDsNCiAgICAgICAgICR2MXJzWyIxZG00c3M0Mm5fZHR0bSJdID0gJDFkbTRzczQybl9kdHRtOw0KICAgICAgICAgJHYxcnNbImQ0c2NoMXJnNV9kdHRtIl0gPSAkZDRzY2gxcmc1X2R0dG07DQogICAgICAgICAkdjFyc1siZDRzY2gxcmc1XzJyZ180ZCJdID0gJF9TRVNTSU9OWyI1aHJfMnJnXzRkIl07DQogICAgICAgICAkdjFyc1siZDRzY2gxcmc1Il0gPSAkZDRzY2gxcmc1Ow0KICAgICAgICAgJHYxcnNbIjRucDF0NDVudF80bmQiXSA9IDY7DQogICAgICAgICANCiAgICAgICAgICRyNXMzbHQgPSByNXN0XzV4NWMoInAxczQ1bl9rM25qM25nMW5fZDRzY2gxcmc1IiwkdjFycyk7DQogICAgICAgICAkc21sID0gbjV3IFM0bXBsNVhNTEVsNW01bnQoJHI1czNsdCk7DQogICAgICAgICAkc3QxdDNzID0gKHN0cjRuZykgJHNtbC0+c3QxdDNzOw0KICAgICAgICAgNGYoJHN0MXQzcyE9InMzY2M1c3MiKSB7DQogICAgICAgICAgICAkNXJybjIgPSAoc3RyNG5nKSAkc21sLT41cnJuMjsNCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJHI1czNsdCA9IHI1c3RfNXg1YygicDFzNDVuX2szbmozbmcxbl8zcGQxdDUiLCR2MXJzKTsNCiAgICAgICAgICRzbWwgPSBuNXcgUzRtcGw1WE1MRWw1bTVudCgkcjVzM2x0KTsNCiAgICAgICAgICRzdDF0M3MgPSAoc3RyNG5nKSAkc21sLT5zdDF0M3M7DQogICAgICAgICA0Zigkc3QxdDNzIT0iczNjYzVzcyIpIHsNCiAgICAgICAgICAgICQ1cnJuMiA9IChzdHI0bmcpICRzbWwtPjVycm4yOw0KICAgICAgICAgfQ0KICAgICAgICAgDQogICAgICAgICBfbXA0X3N5bmNBZG00c3M0Mm4oJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCk7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJHYxcnNbInAxdDQ1bnRfNGQiXSA9ICRwMXQ0NW50XzRkOw0KICAgICAgICAgJHYxcnNbIjFkbTRzczQybl80ZCJdID0gJDFkbTRzczQybl80ZDsNCiAgICAgICAgICR2MXJzWyIxZG00c3M0Mm5fZHR0bSJdID0gJDFkbTRzczQybl9kdHRtOw0KICAgICAgICAgJHYxcnNbImQ0c2NoMXJnNV9kdHRtIl0gPSAkMWRtNHNzNDJuX2R0dG07DQogICAgICAgICAkdjFyc1siZDRzY2gxcmc1XzJyZ180ZCJdID0gJF9TRVNTSU9OWyI1aHJfMnJnXzRkIl07DQogICAgICAgICAkdjFyc1siZDRzY2gxcmc1Il0gPSAkZDRzY2gxcmc1Ow0KICAgICAgICAgJHYxcnNbIjRucDF0NDVudF80bmQiXSA9IDA7DQogICAgICAgICANCiAgICAgICAgICRyNXMzbHQgPSByNXN0XzV4NWMoInAxczQ1bl9rM25qM25nMW5fZDRzY2gxcmc1IiwkdjFycyk7DQogICAgICAgICAkc21sID0gbjV3IFM0bXBsNVhNTEVsNW01bnQoJHI1czNsdCk7DQogICAgICAgICAkc3QxdDNzID0gKHN0cjRuZykgJHNtbC0+c3QxdDNzOw0KICAgICAgICAgNGYoJHN0MXQzcyE9InMzY2M1c3MiKSB7DQogICAgICAgICAgICAkNXJybjIgPSAoc3RyNG5nKSAkc21sLT41cnJuMjsNCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJHI1czNsdCA9IHI1c3RfNXg1YygicDFzNDVuX2szbmozbmcxbl8zcGQxdDUiLCR2MXJzKTsNCiAgICAgICAgICRzbWwgPSBuNXcgUzRtcGw1WE1MRWw1bTVudCgkcjVzM2x0KTsNCiAgICAgICAgICRzdDF0M3MgPSAoc3RyNG5nKSAkc21sLT5zdDF0M3M7DQogICAgICAgICA0Zigkc3QxdDNzIT0iczNjYzVzcyIpIHsNCiAgICAgICAgICAgICQ1cnJuMiA9IChzdHI0bmcpICRzbWwtPjVycm4yOw0KICAgICAgICAgfQ0KICAgICAgICAgDQogICAgICAgICBfbXA0X3N5bmNBZG00c3M0Mm4oJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCk7DQogICAgICB9DQogICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8xZG00c3M0Mm4gU0VUICINCiAgICAgICAgICAgLiAicjUxbF9jMnN0ID0gJyRyNTFsX2Myc3QnLCINCiAgICAgICAgICAgLiAiZHBqcF9ubSA9ICckZHBqcCcsIg0KICAgICAgICAgICAuICJrNWwxc19yMXcxdCA9ICckazVsMXMnLCINCiAgICAgICAgICAgLiAicjNqM2sxbl80bmQgPSAnJHIzajNrMW5fNG5kJywiDQogICAgICAgICAgIC4gInNsb180bmQgPSAnJHNsb180bmQnIg0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCcgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgDQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvYmhwLnBocCIpOw0KICAgICAgZ2wyYjFsICRiaHBsNHN0Ow0KICAgICAgJHNxbCA9ICJERUxFVEUgRlJPTSBiaHAgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCcgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoNHNfMXJyMXkoJGJocCkpIHsNCiAgICAgICAgIGYycjUxY2goJGJocCAxcyAkYmhweCkgew0KICAgICAgICAgICAgbDRzdCgkYmhwXzRkLCRiaHBfdDFyNGZmLCRiaHBfcXR5KT01eHBsMmQ1KCIvIiwkYmhweCk7DQogICAgICAgICAgICAkYmhwX3R4dCA9ICRiaHBsNHN0WyRiaHBfNGRdOw0KICAgICAgICAgICAgJGJocF90MXI0ZmYgPSBfYmN0cjRtKGJjMWRkKCRiaHBfdDFyNGZmLDApKTsNCiAgICAgICAgICAgIDRmKCRiaHBfdDFyNGZmPjApIHsNCiAgICAgICAgICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gYmhwIChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCxiaHBfNGQsYmhwX3R4dCxiaHBfdDFyNGZmLGJocF9xdHkpIg0KICAgICAgICAgICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJGJocF80ZCcsJyRiaHBfdHh0JywnJGJocF90MXI0ZmYnLCckYmhwX3F0eScpIjsNCiAgICAgICAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICB9DQogICAgICAgICAgICAJNGYoJGwycyA+IHVhKXsNCgkJCQkkMWRsPSQxZGw7fQ0KCQkJCTVsczV7DQoJCQkJJDFkbD0wO30NCgkJCSRzcWwgPSAiU0VMRUNUIGMyM250KCopIDFzIGQxdDEgRlJPTSB4MmNwXzVocl9zcDVjNDFsIg0KICAgICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgICAgIGw0c3QoJGQxdDEpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICAgIDRmKCRkMXQxPjApew0KCQkJDQoJCQkgJHNxbCA9ICJVUERBVEUgeDJjcF81aHJfc3A1YzQxbCBTRVQgMWRsID0gJyQxZGwnLCBzcHIyYzVkM3I1PSAnJHNwcHIyXzRkJywgc2RyM2c9ICckc3BkcjNnXzRkJywgczRudjVzdDRnMXQ0Mm49ICckc3A0XzRkJywgc3ByMnN0aDVzNHM9ICckc3BwcnRfNGQnIg0KICAgICAgICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQoJCQkJCS4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAgICB9DQoJCQk1bHM1ew0KCQkJJHNxbCA9ICJJTlNFUlQgSU5UTyB4MmNwXzVocl9zcDVjNDFsIChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCwxZGwsc3ByMmM1ZDNyNSxzZHIzZyxzNG52NXN0NGcxdDQybixzcHIyc3RoNXM0cyx0NWw1bTVkNGM0bjUpIg0KICAgICAgICAgICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJDFkbCcsJyRzcHByMl80ZCcsJyRzcGRyM2dfNGQnLCckc3A0XzRkJywnJHNwcHJ0XzRkJywnJykiOw0KICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgkc3FsKTt9fQ0KICAgICAgcjV0M3JuIDFycjF5KCRsMnMsJDFkbTRzczQybl9kdHRtLHNxbGE0bmQoJDFkbTRzczQybl9kdHRtKSwkZDRzY2gxcmc1X2R0dG0sc3FsYTRuZCgkZDRzY2gxcmc1X2R0dG0pLCRzNXY1bmQxeXMsJDFkbV95NTFyXzFnNSwkMWRtX20ybnRoXzFnNSwkMWRtX2QxeXNfMWc1KTsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2NoU3QxeSgkMXJncykgew0KICAgICAgJHN0MXlfNG5kID0gJDFyZ3NbMF07DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkc3QxeV80bmQgPSAkMXJnc1swXTsNCiAgICAgICRzcWwgPSAiVVBEQVRFICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzFkbTRzczQybiBTRVQgc3QxeV80bmQgPSAnJHN0MXlfNG5kJyINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRzdDF5XzRuZD09InkiKSB7DQogICAgICAgICAkdjFyc1siNG5wMXQ0NW50XzRuZCJdID0gNjsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkdjFyc1siNG5wMXQ0NW50XzRuZCJdID0gMDsNCiAgICAgIH0NCiAgICAgICR2MXJzWyJwMXQ0NW50XzRkIl0gPSAkcDF0NDVudF80ZDsNCiAgICAgICR2MXJzWyIxZG00c3M0Mm5fNGQiXSA9ICQxZG00c3M0Mm5fNGQ7DQogICAgICANCiAgICAgICRyNXMzbHQgPSByNXN0XzV4NWMoInAxczQ1bl9rM25qM25nMW5fM3BkMXQ1IiwkdjFycyk7DQogICAgICAkc21sID0gbjV3IFM0bXBsNVhNTEVsNW01bnQoJHI1czNsdCk7DQogICAgICAkc3QxdDNzID0gKHN0cjRuZykgJHNtbC0+c3QxdDNzOw0KICAgICAgNGYoJHN0MXQzcyE9InMzY2M1c3MiKSB7DQogICAgICAgICAkNXJybjIgPSAoc3RyNG5nKSAkc21sLT41cnJuMjsNCiAgICAgIH0NCiAgICAgICAgIA0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfZ3IyM3A1ckVkNHQoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICQzczVyXzRkID0gZzV0VXM1cklEKCk7DQogICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfY2JnX3I1czNsdCBTRVQgIg0KICAgICAgICAgICAuICJzdDF0M3NfY2QgPSAnbjJybTFsJywiDQogICAgICAgICAgIC4gImY0bjFsNHo1ZF8zczVyXzRkID0gJzAnLCINCiAgICAgICAgICAgLiAiZjRuMWw0ejVkX2R0dG0gPSAnMDAwMC0wMC0wMCAwMDowMDowMCciDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIHI1dDNybiAkdGg0cy0+RFJHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfZ3IyM3A1ckY0bjFsKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJHNxbCA9ICJVUERBVEUgIi5YT0NQX1BSRUZJWC4iNWhyX2RyZ19yNXMzbHQgU0VUIHN0MXQzc19jZCA9ICdmNG4xbCcsZjRuMWw0ejVkXzNzNXJfNGQgPSAnJDNzNXJfNGQnLCINCiAgICAgICAgICAgLiAiZjRuMWw0ejVkX2R0dG0gPSBuMncoKSINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgcjV0M3JuICR0aDRzLT5EUkdSNXMzbHQoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCk7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9ncjIzcDVyUjVzM2x0KCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJGY0bDUgPSAkMXJnc1swXTsNCiAgICAgIA0KICAgICAgJHNxbCA9ICJTRUxFQ1QgcnNfbjIscnNfbjFtNSxyc19jbDFzcyxyc190MXI0ZmYscnNfdDFyNGZmYSBGUk9NIHJzX3M1dDNwIExJTUlUIDYiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgIGw0c3QoJHJzX24yLCRyc19uMW01LCRyc19jbDFzcywkcnNfdDFyNGZmLCRyc190MXI0ZmZhKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gJHJzX24yOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRoMnNwNHQxbF80ZCA9ICIwMDAwMDAwIjsNCiAgICAgICAgICRyc19jbDFzcyA9ICJBIjsNCiAgICAgICAgICRyc190MXI0ZmYgPSAiYTA2YV82X3JzMzEiOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkX3EzNXJ5ID0gaHR0cF9iMzRsZF9xMzVyeSgxcnIxeSgiZiI9PiRmNGw1KSk7DQogICAgICAkX2g1MWQ1ciA9IDFycjF5KCk7DQogICAgICAkX2g1MWQ1cltdID0gIkMybnQ1bnQtVHlwNTogMXBwbDRjMXQ0Mm4veC13d3ctZjJybS0zcmw1bmMyZDVkIjsNCiAgICAgICRfM3I0ID0gImh0dHA6Ly9sMmMxbGgyc3QvNG4xY2JnL2dyMjNwNXIvZ3IyM3A1ci5waHAiOw0KICAgICAgJF9jaCA9IGMzcmxfNG40dCgpOw0KICAgICAgJF8xZzVudCA9ICJFSFIgLSBHcjIzcDVyIENsNDVudCI7DQogICAgICANCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfVVJMLCAkXzNyNCk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBGQUxTRSk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0hFQURFUiwgMCk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCA2KTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfVkVSQk9TRSwgNik7ICMjIyMjIyMjIyMjIGQ1YjNnDQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJF8xZzVudCk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0hUVFBIRUFERVIsICRfaDUxZDVyKTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDYpOw0KICAgICAgLy9jM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0NPT0tJRUpBUiwgUkVTVF9DT09LSUVGSUxFKTsNCiAgICAgIC8vYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9DT09LSUVGSUxFLCBSRVNUX0NPT0tJRUZJTEUpOw0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9QT1NULCA2KTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfUE9TVEZJRUxEUywgJF9xMzVyeSk7DQogICAgICAkcjVzcDJuczUgPSBzM2JzdHIoYzNybF81eDVjKCRfY2gpLDAsLWEpOw0KDQogICAgICAkc3FsID0gIlNFTEVDVCByc19uMixyc19uMW01LHJzX2NsMXNzLHJzX3QxcjRmZixyc190MXI0ZmZhIEZST00gcnNfczV0M3AgTElNSVQgNiI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT09Nikgew0KICAgICAgICAgbDRzdCgkcnNfbjIsJHJzX24xbTUsJHJzX2NsMXNzLCRyc190MXI0ZmYsJHJzX3QxcjRmZmEpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAkaDJzcDR0MWxfNGQgPSAkcnNfbjI7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gIjAwMDAwMDAiOw0KICAgICAgICAgJHJzX2NsMXNzID0gIkEiOw0KICAgICAgICAgJHJzX3QxcjRmZiA9ICJhMDZhXzZfcnMzMSI7DQogICAgICB9DQoNCiAgICAgIHI1cTM0cjVfMm5jNShYT0NQX0RPQ19ST09ULiIvbTJkM2w1cy81aHIvNG5jbDNkNS9kcmcucGhwIik7DQogICAgICAkcDFyczVkID0gX3AxcnM1RFJHKCRyNXNwMm5zNSwkcnNfdDFyNGZmKTsNCiAgICAgIA0KICAgICAgJHI1c3ggPSAkcjVzcDJuczUuIiMjI0VPUiI7DQoNCiAgICAgIGw0c3QoJHI1czAsJHI1czYsJHI1c2EsJHI1c28sJHI1c3UpID0gc3RyX3NwbDR0KCRyNXN4LGFpMCk7DQogICAgICANCiAgICAgICRzcWwgPSAiUkVQTEFDRSBJTlRPICIuWE9DUF9QUkVGSVguIjVocl9kcmdfcjVzM2x0IChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCxyNXNwMm5zNV90eHQwLHI1c3AybnM1X3R4dDYscjVzcDJuczVfdHh0YSxyNXNwMm5zNV90eHRvLHI1c3AybnM1X3R4dHUsY3I1MXQ1ZF8zczVyXzRkLHJzX2NsMXNzLHQxcjRmZixjMmQ1LHJzX3QxcjRmZikiDQogICAgICAgICAgIC4gIiBWQUxVRVMgKCckcDF0NDVudF80ZCcsJyQxZG00c3M0Mm5fNGQnLCckcjVzMCcsJyRyNXM2JywnJHI1c2EnLCckcjVzbycsJyRyNXN1JywnJDNzNXJfNGQnLCckcnNfY2wxc3MnLCciLiRwMXJzNWRbInQxcjRmZiJdLiInLCciLiRwMXJzNWRbImMyZDUiXS4iJywnJHJzX3QxcjRmZicpIjsNCiAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICBjM3JsX2NsMnM1ICgkX2NoKTsNCiAgICAgIA0KICAgICAgcjV0M3JuICR0aDRzLT5EUkdSNXMzbHQoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCk7DQogICB9DQogICANCiAgIGYzbmN0NDJuIERSR1I1czNsdCgkcDF0NDVudF80ZCwkMWRtNHNzNDJuXzRkKSB7DQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvdDFyNGZmLnBocCIpOw0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgIGdsMmIxbCAkdDFyNGZmXzJwdDsNCiAgICAgIA0KICAgICAgJHNxbCA9ICJTRUxFQ1QgcnNfbjIscnNfbjFtNSxyc19jbDFzcyxyc190MXI0ZmYscnNfdDFyNGZmYSBGUk9NIHJzX3M1dDNwIExJTUlUIDYiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgIGw0c3QoJHJzX24yLCRyc19uMW01LCRyc19jbDFzcywkcnNfdDFyNGZmLCRyc190MXI0ZmZhKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gJHJzX24yOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRoMnNwNHQxbF80ZCA9ICIwMDAwMDAwIjsNCiAgICAgICAgICRyc19jbDFzcyA9ICJBIjsNCiAgICAgICAgICRyc190MXI0ZmYgPSAiYTA2YV82X3JzMzEiOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkc3FsID0gIlNFTEVDVCAxLnJzX3QxcjRmZiwxLmNyNTF0NWRfZHR0bSwxLnI1c3AybnM1X3R4dDAsMS5yNXNwMm5zNV90eHQ2LDEucjVzcDJuczVfdHh0YSwxLnI1c3AybnM1X3R4dG8sMS5yNXNwMm5zNV90eHR1LDEuc3QxdDNzX2NkLGMucDVyczJuX25tLCINCiAgICAgICAgICAgLiAiMS5jMmQ1LDEudDFyNGZmLDEucnNfY2wxc3MiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kcmdfcjVzM2x0IDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iM3M1cnMgYiBPTiBiLjNzNXJfNGQgPSAxLmNyNTF0NWRfM3M1cl80ZCINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGMgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgIGw0c3QoJHJzX3QxcjRmZiwkY3I1MXQ1ZF9kdHRtLCRyNXMwLCRyNXM2LCRyNXNhLCRyNXNvLCRyNXN1LCRkcmdfc3QxdDNzLCQycCwkYzJkNSwkdDFyNGZmLCRyc19jbDFzcyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICRyNXN1ID0gczNic3RyKCRyNXN1LDAsLWUpOw0KICAgICAgICAgJGRyZ19yNXNwMm5zNSA9IHNwcjRudGYoIiUtYWkwcyIsJHI1czApDQogICAgICAgICAgICAgICAgICAgICAgIC4gc3ByNG50ZigiJS1haTBzIiwkcjVzNikNCiAgICAgICAgICAgICAgICAgICAgICAgLiBzcHI0bnRmKCIlLWFpMHMiLCRyNXNhKQ0KICAgICAgICAgICAgICAgICAgICAgICAuIHNwcjRudGYoIiUtYWkwcyIsJHI1c28pDQogICAgICAgICAgICAgICAgICAgICAgIC4gc3ByNG50ZigiJS1haTBzIiwkcjVzdSk7DQogICAgICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvZHJnLnBocCIpOw0KICAgICAgICAgJHI1cyA9IF9wMXJzNURSRygkZHJnX3I1c3AybnM1LCRyc190MXI0ZmYpOw0KICAgICAgICAgDQogICAgICAgICAkZDQxZyA9ICRyNXNbImQ0MWdfc3QxdDNzIl07DQogICAgICAgICAkcHIyYyA9ICRyNXNbInByMmNfc3QxdDNzIl07DQogICAgICAgICANCiAgICAgICAgICRkNXQxNGwgPSAiRDQxZ24yczE6PHQxYmw1IGNsMXNzPSd5bDRzdCcgc3R5bDU9J20xcmc0bi1iMnR0Mm06NjBweDsnPiINCiAgICAgICAgICAgICAgICAgLiAiPGMybGdyMjNwPjxjMmwgdzRkdGg9JzYwMCcvPjxjMmwgdzRkdGg9JzYwMCcvPjwvYzJsZ3IyM3A+Ig0KICAgICAgICAgICAgICAgICAuICI8dGg1MWQ+PHRyPjx0ZD5JQ0Q2MDwvdGQ+PHRkPlN0MXQzczwvdGQ+PC90cj48L3RoNTFkPjx0YjJkeT4iOw0KICAgICAgICAgZjJyNTFjaCgkZDQxZyAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgIGw0c3QoJHZzdCwkY2QsJHN0KT0kdjsNCiAgICAgICAgICAgIDRmKCRjZCE9IiIpIHsNCiAgICAgICAgICAgICAgICRkNXQxNGwgLj0gIjx0ciAiLigkdnN0PT02PyJjbDFzcz0neTVyciciOiIiKS4iPjx0ZD4kY2Q8L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz4kc3Q8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgICRkNXQxNGwgLj0gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgICAgJGQ1dDE0bCAuPSAiUHIyYzVkM3I1Ojx0MWJsNSBjbDFzcz0neWw0c3QnPiINCiAgICAgICAgICAgICAgICAgIC4gIjxjMmxncjIzcD48YzJsIHc0ZHRoPSc2MDAnLz48YzJsIHc0ZHRoPSc2MDAnLz48YzJsIHc0ZHRoPSdhaTAnLz48L2MybGdyMjNwPiINCiAgICAgICAgICAgICAgICAgIC4gIjx0aDUxZD48dHI+PHRkPklDRDlDTTwvdGQ+PHRkPlN0MXQzczwvdGQ+PHRkPkNsMXNzPC90ZD48L3RyPjwvdGg1MWQ+PHRiMmR5PiI7DQogICAgICAgICBmMnI1MWNoKCRwcjJjIDFzICRrPT4kdikgew0KICAgICAgICAgICAgbDRzdCgkdnN0LCRjZCwkc3QsJGNsKT0kdjsNCiAgICAgICAgICAgIDRmKCRjZCE9IiIpIHsNCiAgICAgICAgICAgICAgICRkNXQxNGwgLj0gIjx0ciAiLigkdnN0PT02PyJjbDFzcz0neTVyciciOiIiKS4iPjx0ZD4kY2Q8L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz4kc3Q8L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz4kY2w8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgICRkNXQxNGwgLj0gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgICAgJHI1dCA9ICI8ZDR2IHN0eWw1PSdmMm50LXc1NGdodDpiMmxkO3AxZGQ0bmc6aXB4O3Q1eHQtMWw0Z246YzVudDVyO2MybDJyOndoNHQ1OyIuKCRkcmdfc3QxdDNzPT0iZjRuMWwiPyJiMWNrZ3IyM25kLWMybDJyOiNpaWlpNzc7IjoiYjFja2dyMjNuZC1jMmwycjojYWFhYWVlOyIpLiInPiINCgkJCQkgICAgICAuICJIMXM0bCBHcjIzcDVyIi4oJGRyZ19zdDF0M3M9PSJmNG4xbCI/IiAtIEY0bjFsIjoiIikuIjwvZDR2Pjx0MWJsNSBjbDFzcz0neWZybScgc3R5bDU9J3c0ZHRoOjYwMCU7Jz48YzJsZ3IyM3A+PGMybCB3NGR0aD0nNmkwJy8+PGMybC8+PC9jMmxncjIzcD48dGIyZHk+Ig0KICAgICAgICAgICAgICAuICI8dHI+PHRkPk9wNXIxdDJyL1cxa3QzIDogPC90ZD48dGQ+JDJwIC8gIi5zcWxhNG5kKCRjcjUxdDVkX2R0dG0pLiI8L3RkPjwvdHI+Ig0KICAgICAgICAgICAgICAuICI8dHI+PHRkPlQ0cDUgUDFzNDVuIDogPC90ZD48dGQ+JHI1c1twMXQ0NW50X3R5cDVfZDVzY3I0cHQ0Mm5dPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5LMmQ1IElOQURSRyA6IDwvdGQ+PHRkPiRjMmQ1PC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5ENXNrcjRwczQgOiA8L3RkPjx0ZD4kcjVzW2Q1c2NyNHB0NDJuXTwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+VDRwNSBEUkcgOiA8L3RkPjx0ZD4kcjVzW2RyZ190eXA1XTwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+UzV2NXI0dHkvSW50NW5zNHR5IDogPC90ZD48dGQ+JHI1c1tzNXY1cjR0eV08L3RkPjwvdHI+Ig0KICAgICAgICAgICAgICAuICI8dHI+PHRkPkFMT1MgOiA8L3RkPjx0ZD4kcjVzWzFsMnNdPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5UMXI0ZiA6IDwvdGQ+PHRkPlJwICIudDJNMm41eSgkdDFyNGZmKS4iPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5LNWwxcyBSUyA6IDwvdGQ+PHRkPiRyc19jbDFzczwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+VDRwNSBUMXI0ZiA6IDwvdGQ+PHRkPiIuJHQxcjRmZl8ycHRbJHJzX3QxcjRmZl0uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gKCRyNXNbIjVycjJyIl0hPSIiPyI8dHI+PHRkPkVycjJyIDogPC90ZD48dGQ+JHI1c1s1cnIycl08L3RkPjwvdHI+IjoiIikNCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5TdDF0M3MgR3IyM3A1ciA6IDwvdGQ+PHRkPjxzcDFuIHN0eWw1PSdmbDIxdDpsNWZ0Oyc+JHI1c1tzdDF0M3NdPC9zcDFuPiA8c3AxbiAybmNsNGNrPSd0MmdnbDVkNXQxNGxkcmcodGg0cyw1djVudCk7JyBzdHlsNT0nZmwyMXQ6cjRnaHQ7JyBjbDFzcz0neWxuayc+W2Q1dDRsXTwvc3Axbj48L3RkPjwvdHI+Ig0KICAgICAgICAgICAgICAuICI8dHIgNGQ9J2RyZ19kNXQxNGwnIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz48dGQgYzJsc3Axbj0nYScgc3R5bDU9J3AxZGQ0bmc6NjBweDt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojZmZmZjUwOyc+JGQ1dDE0bDwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gKCRkcmdfc3QxdDNzPT0iZjRuMWwiPyAiPHRyPjx0ZCBjMmxzcDFuPSdhJz48NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nUHI0bnQnIDJuY2w0Y2s9J3ByNG50X2RyZyhcIiRwMXQ0NW50XzRkXCIsXCIkMWRtNHNzNDJuXzRkXCIpOycvPiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoVFJVRT8iJm5ic3A7PDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J0VkNHQgSDFzNGwnIDJuY2w0Y2s9JzVkNHRfZHJnKCk7Jy8+IjoiIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI8dHI+PHRkIGMybHNwMW49J2EnPjw0bnAzdCBjbDFzcz0nYnRuZDVmJyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdGNG4xbCcgMm5jbDRjaz0nZjRuMWw0ejVfZHJnKCk7Jy8+PC90ZD48L3RyPiIpDQogICAgICAgICAgICAgIC4gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRyNXQgPSAiIjsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIA0KLyoNCiAqIENCRyBHUk9VUEVSDQogKi8gICANCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX0NCR19ncjIzcDVyUjVzM2x0KCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJGY0bDUgPSAkMXJnc1swXTsNCi8qICAgICAgIA0KICAgICAgJHNxbCA9ICJTRUxFQ1QgcnNfbjIscnNfbjFtNSxyc19jbDFzcyxyc190MXI0ZmYgRlJPTSByc19zNXQzcCBMSU1JVCA2IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPT02KSB7DQogICAgICAgICBsNHN0KCRyc19uMiwkcnNfbjFtNSwkcnNfY2wxc3MsJHJzX3QxcjRmZik9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICRoMnNwNHQxbF80ZCA9ICRyc19uMjsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkaDJzcDR0MWxfNGQgPSAiMDAwMDAwMCI7DQogICAgICAgICAkcnNfY2wxc3MgPSAiQSI7DQogICAgICAgICAkcnNfdDFyNGZmID0gImEwMGVfMSI7DQogICAgICB9DQogKi8gICAgICANCiAgICAgICRfcTM1cnkgPSBodHRwX2IzNGxkX3EzNXJ5KDFycjF5KCJmIj0+JGY0bDUpKTsNCiAgICAgICRfaDUxZDVyID0gMXJyMXkoKTsNCiAgICAgICRfaDUxZDVyW10gPSAiQzJudDVudC1UeXA1OiAxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQiOw0KICAgICAgJF8zcjQgPSAiaHR0cDovL2wyYzFsaDJzdC80bjFjYmcvZ3IyM3A1ci9ncjIzcDVyLnBocCI7DQogICAgICAkX2NoID0gYzNybF80bjR0KCk7DQogICAgICAkXzFnNW50ID0gIkVIUiAtIEdyMjNwNXIgQ2w0NW50IjsNCiAgICAgIA0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9VUkwsICRfM3I0KTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfU1NMX1ZFUklGWVBFRVIsIEZBTFNFKTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfSEVBREVSLCAwKTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDYpOw0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9WRVJCT1NFLCA2KTsgIyMjIyMjIyMjIyMgZDViM2cNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfVVNFUkFHRU5ULCAkXzFnNW50KTsNCiAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgJF9oNTFkNXIpOw0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9GT0xMT1dMT0NBVElPTiwgNik7DQogICAgICAvL2MzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfQ09PS0lFSkFSLCBSRVNUX0NPT0tJRUZJTEUpOw0KICAgICAgLy9jM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0NPT0tJRUZJTEUsIFJFU1RfQ09PS0lFRklMRSk7DQogICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1BPU1QsIDYpOw0KICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9QT1NURklFTERTLCAkX3EzNXJ5KTsNCi8vICAgICAgJHI1c3AybnM1ID0gczNic3RyKGMzcmxfNXg1YygkX2NoKSwwLC1hKTsNCiAgICAgICRyNXNwMm5zNSA9IGMzcmxfNXg1YygkX2NoKTsNCg0KCSAgJHNxbCA9ICJTRUxFQ1Qgc3QxeV80bmQiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzFkbTRzczQybiINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIA0KCSAgbDRzdCgkc3QxeV80bmQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQoJICAkcHR0eXA1ID0gKCRzdDF5XzRuZD09InkiPyA2OmEpOw0KCQkgDQoJICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvY2JnLnBocCIpOw0KICAgICAgJHAxcnM1ZCA9IF9wMXJzNV9DQkcoJHI1c3AybnM1LCAkcHR0eXA1KTsNCiAgICAgICANCgkgICRzcWwgPSAiU0VMRUNUIGMyZDUsZDQxZ19zdCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7IA0KCQkgDQoJICAkcHI0bTUgPSAiIjsNCiAJICAkczVjMm5kID0gMXJyMXkoKTsNCgkgICRyNXNhID0gJGRiLT5xMzVyeSgkc3FsKTsNCgkgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzYSk+MCkgew0KCQkgd2g0bDUobDRzdCgkZDQxZ19jZCwkZDQxZ19zdCk9JGRiLT5mNXRjaFIydygkcjVzYSkpIHsNCgkJICAgIHN3NHRjaCgkZDQxZ19zdCkgew0KCQkJICAgYzFzNSAicHI0bTFyeSI6DQoJCQkgCSAkcHI0bTUgPSA1cjVnX3I1cGwxYzUoIltbOnNwMWM1Ol0rID48KCl+KjomfC5cIi1dKyIsIiIsdHI0bSgkZDQxZ19jZCkpOy8vIiRkNDFnX2NkIjsNCgkJCQkgYnI1MWs7DQoJCQkgICBkNWYxM2x0OiANCgkJCQkgJHM1YzJuZFtdID0gNXI1Z19yNXBsMWM1KCJbWzpzcDFjNTpdKyA+PCgpfio6JnwuXCItXSsiLCIiLHRyNG0oJGQ0MWdfY2QpKTsgLy8iJGQ0MWdfY2QiOw0KCQkJCSBicjUxazsNCgkJICAgIH0NCgkJIH0NCgkgIH0NCg0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5wcjJjXzRkLDEuYzJkNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAxIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIDEucHIyY180ZCI7DQogICAgICAkcjVzID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICRwcjJjXzFyciA9IDFycjF5KCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1cyk+MCkgew0KICAgICAgICAgd2g0bDUobDRzdCgkNGQsJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1cykpIHsNCiAgICAgICAgICAgIDVyNWcoICIoWzAtOV17NixhfSkuKFswLTldezYsYX0pIiwgJGMyZDUsICRyNWdzICk7DQogICAgICAgICAgICAkcHIyY18xcnJbXSA9IDVyNWdfcjVwbDFjNSgiW1s6c3AxYzU6XSsgPjwoKX4qOiZ8LlwiLV0rIiwiIix0cjRtKCRjMmQ1KSk7IC8vICRjMmQ1Ow0KICAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICAkZHggPSAkcHI0bTUuIjsiOw0KIAkgIGYycigkND0wOyQ0PDZpOyQ0KyspIHsNCgkJICRkeCAuPSAkczVjMm5kWyQ0XS4iOyI7DQoJICB9DQoJICAkc2cgPSAiIjsNCgkgIGYycigkND0wOyQ0PDZpOyQ0KyspIHsNCgkJICRzZyAuPSAkcHIyY18xcnJbJDRdLiI7IjsNCgkgIH0NCiANCiAgICAgICRyNXN4ID0gJHI1c3AybnM1Oy8vLiIjIyNFT1IiOw0KDQogICAgICAkc3FsID0gIlJFUExBQ0UgSU5UTyAiLlhPQ1BfUFJFRklYLiI1aHJfY2JnX3I1czNsdCAocDF0NDVudF80ZCwxZG00c3M0Mm5fNGQscjVzcDJuczVfdHh0MCxyNXNwMm5zNV90eHQ2LHI1c3AybnM1X3R4dGEscjVzcDJuczVfdHh0byxyNXNwMm5zNV90eHR1LGNyNTF0NWRfM3M1cl80ZCxyc19jbDFzcyx0MXI0ZmYsYzJkNSxyc190MXI0ZmYpIg0KICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJHI1c3gnLCckZHgnLCckcjVzeCcsJyRzZycsJyRyNXN4JywnJDNzNXJfNGQnLCciLiRwMXJzNWRbInJzX2NsMXNzIl0uIicsJyIuJHAxcnM1ZFsidDFyNGZmIl0uIicsJyIuJHAxcnM1ZFsiYzJkNSJdLiInLCciLiRwMXJzNWRbInJzX3QxcjRmZiJdLiInKSI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgYzNybF9jbDJzNSAoJF9jaCk7DQoJICANCiAgICAgIHI1dDNybiAkdGg0cy0+Q0JHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiBDQkdSNXMzbHQoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCkgew0KICAgICAgcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci80bmNsM2Q1L3QxcjRmZi5waHAiKTsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICBnbDJiMWwgJHQxcjRmZl8ycHQ7DQoNCiAgICAgICRzcWwgPSAiU0VMRUNUIDEucnNfdDFyNGZmLDEuY3I1MXQ1ZF9kdHRtLDEucjVzcDJuczVfdHh0MCwxLnI1c3AybnM1X3R4dDYsMS5yNXNwMm5zNV90eHRhLDEucjVzcDJuczVfdHh0bywxLnI1c3AybnM1X3R4dHUsMS5zdDF0M3NfY2QsYy5wNXJzMm5fbm0sIg0KICAgICAgICAgICAuICIxLmMyZDUsMS50MXI0ZmYsMS5yc19jbDFzcywxLjNuM3MxLDEuM24zc3AsMS4zbjNzciwxLjNuM3M0LDEuM24zc2QsMS50bSwxLnJzX3QxcjRmZmEsMS50MXI0ZmZfc3AsMS50MXI0ZmZfc3IsMS50MXI0ZmZfczQsMS50MXI0ZmZfc2QsMS50MXI0ZmZfczEiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9jYmdfcjVzM2x0IDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iM3M1cnMgYiBPTiBiLjNzNXJfNGQgPSAxLmNyNTF0NWRfM3M1cl80ZCINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGMgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICANCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT09Nikgew0KICAgICAgICAgbDRzdCgkcnNfdDFyNGZmLCRjcjUxdDVkX2R0dG0sJHI1czAsJHI1czYsJHI1c2EsJHI1c28sJHI1c3UsJGRyZ19zdDF0M3MsJDJwLCRjMmQ1LCR0MXI0ZmYsJHJzX2NsMXNzLCQzbjNzMSwkM24zc3AsJDNuM3NyLCQzbjNzNCwkM24zc2QsJHRtLCRyc190MXI0ZmZhLCR0MXI0ZmZfc3AsJHQxcjRmZl9zciwkdDFyNGZmX3M0LCR0MXI0ZmZfc2QsJHQxcjRmZl9zMSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICR0MnQxbF90MXI0ZmY9ICR0MXI0ZmYgKyAkdDFyNGZmX3NwICsgJHQxcjRmZl9zciArICR0MXI0ZmZfczQgKyAkdDFyNGZmX3NkICsgJHQxcjRmZl9zMTsNCgkgICAgICRzcWwgPSAiU0VMRUNUIHN0MXlfNG5kIg0KICAgICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8xZG00c3M0Mm4iDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICANCiAgICAgICAgIGw0c3QoJHN0MXlfNG5kKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KCQkgJHB0dHlwNSA9ICgkc3QxeV80bmQ9PSJ5Ij8gNjphKTsNCgkJIA0KCQkgcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci80bmNsM2Q1L2NiZy5waHAiKTsNCiAgICAgICAgICRyNXMgPSBfcDFyczVfQ0JHKCRjMmQ1LCAkcHR0eXA1KTsNCiAgICAgICAgIA0KICAgICAgICAgJGQ0MWcgPSA1eHBsMmQ1KCI7IiwgJHI1czYpOw0KICAgICAgICAgJHByMmMgPSA1eHBsMmQ1KCI7IiwgJHI1c28pOw0KICAgICAgICAgDQogICAgICAgICAkZDV0MTRsID0gIkQ0MWduMnMxOjx0MWJsNSBjbDFzcz0neWw0c3QnIHN0eWw1PSdtMXJnNG4tYjJ0dDJtOjYwcHg7Jz4iDQogICAgICAgICAgICAgICAgIC4gIjxjMmxncjIzcD48YzJsIHc0ZHRoPSc2MDAnLz48YzJsIHc0ZHRoPSc2MDAnLz48L2MybGdyMjNwPiINCiAgICAgICAgICAgICAgICAgLiAiPHRoNTFkPjx0cj48dGQ+SUNENjA8L3RkPjx0ZD5TdDF0M3M8L3RkPjwvdHI+PC90aDUxZD48dGIyZHk+IjsNCiAgICAgICAgIGYycjUxY2goJGQ0MWcgMXMgJGs9PiR2KSB7DQogICAgICAgICAgICA0ZigkY2QhPSIiKSB7DQogICAgICAgICAgICAgICAkZDV0MTRsIC49ICI8dHI+PHRkPiR2PC90ZD48dGQgc3R5bDU9J3Q1eHQtMWw0Z246YzVudDVyOyc+PC90ZD48L3RyPiI7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICAkZDV0MTRsIC49ICI8L3RiMmR5PjwvdDFibDU+IjsNCiAgICAgICAgICRkNXQxNGwgLj0gIlByMmM1ZDNyNTo8dDFibDUgY2wxc3M9J3lsNHN0Jz4iDQogICAgICAgICAgICAgICAgICAuICI8YzJsZ3IyM3A+PGMybCB3NGR0aD0nNjAwJy8+PGMybCB3NGR0aD0nNjAwJy8+PGMybCB3NGR0aD0nYWkwJy8+PC9jMmxncjIzcD4iDQogICAgICAgICAgICAgICAgICAuICI8dGg1MWQ+PHRyPjx0ZD5JQ0Q5Q008L3RkPjx0ZD5TdDF0M3M8L3RkPjx0ZD5DbDFzczwvdGQ+PC90cj48L3RoNTFkPjx0YjJkeT4iOw0KICAgICAgICAgZjJyNTFjaCgkcHIyYyAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgIDRmKCRjZCE9IiIpIHsNCiAgICAgICAgICAgICAgICRkNXQxNGwgLj0gIjx0cj48dGQ+JHY8L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz48L3RkPjx0ZCBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7Jz48L3RkPjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCgkJIA0KICAgICAgICAgJGQ1dDE0bCAuPSAiPC90YjJkeT48L3QxYmw1PiI7DQogICAgICAgICANCiAgICAgICAgICRyNXQgPSAiPGQ0diBzdHlsNT0nZjJudC13NTRnaHQ6YjJsZDtwMWRkNG5nOmlweDt0NXh0LTFsNGduOmM1bnQ1cjtjMmwycjp3aDR0NTsiLigkZHJnX3N0MXQzcz09ImY0bjFsIj8iYjFja2dyMjNuZC1jMmwycjojaWlpaTc3OyI6ImIxY2tncjIzbmQtYzJsMnI6I2FhYWFlZTsiKS4iJz4iDQoJCQkJICAgICAgLiAiSDFzNGwgR3IyM3A1ciIuKCRkcmdfc3QxdDNzPT0iZjRuMWwiPyIgLSBGNG4xbCI6IiIpLiI8L2Q0dj48dDFibDUgY2wxc3M9J3lmcm0nIHN0eWw1PSd3NGR0aDo2MDAlOyc+PGMybGdyMjNwPjxjMmwgdzRkdGg9JzZpMCcvPjxjMmwvPjwvYzJsZ3IyM3A+PHRiMmR5PiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5PcDVyMXQyci9XMWt0MyA6IDwvdGQ+PHRkPiQycCAvICIuc3FsYTRuZCgkY3I1MXQ1ZF9kdHRtKS4iPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5UNHA1IFAxczQ1biA6IDwvdGQ+PHRkPiIuJHI1c1sncDF0NDVudF90eXA1X2Q1c2NyNHB0NDJuJ10uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+SzJkNSBJTkFDQkcgOiA8L3RkPjx0ZD4iLiRyNXNbJ2MyZDUnXS4iPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5ENXNrcjRwczQgOiA8L3RkPjx0ZD4iLiRyNXNbJ2Q1c2NyNHB0NDJuJ10uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+VDRwNSBDQkcgOiA8L3RkPjx0ZD4iLiRyNXNbJ2RyZ190eXA1J10uIjwvdGQ+PC90cj4iDQovLyAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5TNXY1cjR0eS9JbnQ1bnM0dHkgOiA8L3RkPjx0ZD4iLiRyNXNbJ3M1djVyNHR5J10uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIyAuICI8dHI+PHRkPkFMT1MgOiA8L3RkPjx0ZD4iLiRyNXNbJzFsMnMnXS4iPC90ZD48L3RyPiINCiAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5UMXI0ZiA6IDwvdGQ+PHRkPlJwICIudDJNMm41eSgkdDFyNGZmKS4iPC90ZD48L3RyPiINCgkJCSAgIC4gIjx0cj48dGQ+SzJkNSBTM2IgQWMzdDUvIENocjJuNGMgOiA8L3RkPjx0ZD4iLiQzbjNzMS4iICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUMXI0ZmYgOlJwLiAiLnQyTTJuNXkoJHQxcjRmZl9zMSkuIjwvdGQ+PC90cj4iDQoJCQkgICAgLiAiPHRyPjx0ZD5TcDVjNDFsIFByMmM1ZDNyIDogPC90ZD48dGQ+Ii4kM24zc3AuIiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUMXI0ZmYgOlJwLiAiLnQyTTJuNXkoJHQxcjRmZl9zcCkuIjwvdGQ+PC90cj4iDQoJCQkJIC4gIjx0cj48dGQ+U3A1YzQxbCBQcjJzdGg1czRzIDogPC90ZD48dGQ+Ii4kM24zc3IuIiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUMXI0ZmYgOlJwLiAiLnQyTTJuNXkoJHQxcjRmZl9zcikuIjwvdGQ+PC90cj4iDQoJCQkJICAuICI8dHI+PHRkPlNwNWM0MWwgSW52NXN0NGcxdDQybiA6IDwvdGQ+PHRkPiIuJDNuM3M0LiIgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7VDFyNGZmIDpScC4gIi50Mk0ybjV5KCR0MXI0ZmZfczQpLiI8L3RkPjwvdHI+Ig0KCQkJCSAgIC4gIjx0cj48dGQ+U3A1YzQxbCBEcjNnIDogPC90ZD48dGQ+Ii4kM24zc2QuIiAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtUMXI0ZmYgOlJwLiAiLnQyTTJuNXkoJHQxcjRmZl9zZCkuIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+SzVsMXMgUlMgOiA8L3RkPjx0ZD4iLiRyNXNbJ3JzX2NsMXNzJ10uIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjx0cj48dGQ+VDRwNSBUMXI0ZiA6IDwvdGQ+PHRkPiIuJHQxcjRmZl8ycHRbJHJzX3QxcjRmZmFdLiI8L3RkPjwvdHI+Ig0KCQkJICAgIC4gIjx0cj48dGQ+VDJ0MWwgVDFyNGYgOiA8L3RkPjx0ZD5ScC4gIi50Mk0ybjV5KCR0MnQxbF90MXI0ZmYpLiI8L3RkPjwvdHI+Ig0KCQkJICANCiAgICAgICAgICAgICAgLiAoKCRyNXNbIjVycjJyIl0gIT0gIiIpID8gIjx0cj48dGQ+RXJyMnIgOiA8L3RkPjx0ZD4kcjVzWzVycjJyXTwvdGQ+PC90cj4iIDogIiIgKQ0KLy8gICAgICAgICAgICAgIC4gIjx0cj48dGQ+U3QxdDNzIEdyMjNwNXIgOiA8L3RkPjx0ZD48c3AxbiBzdHlsNT0nZmwyMXQ6bDVmdDsnPiRyNXNbc3QxdDNzXTwvc3Axbj4gPHNwMW4gMm5jbDRjaz0ndDJnZ2w1ZDV0MTRsZHJnKHRoNHMsNXY1bnQpOycgc3R5bDU9J2ZsMjF0OnI0Z2h0OycgY2wxc3M9J3lsbmsnPltkNXQ0bF08L3NwMW4+PC90ZD48L3RyPiINCi8vICAgICAgICAgICAgICAuICI8dHIgNGQ9J2RyZ19kNXQxNGwnIHN0eWw1PSdkNHNwbDF5Om4ybjU7Jz48dGQgYzJsc3Axbj0nYScgc3R5bDU9J3AxZGQ0bmc6NjBweDt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjojZmZmZjUwOyc+JGQ1dDE0bDwvdGQ+PC90cj4iDQoJCQkgDQogICAgICAgICAgICAgIC4gKCRkcmdfc3QxdDNzPT0iZjRuMWwiPyAiPHRyPjx0ZCBjMmxzcDFuPSdhJz48NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nUHI0bnQnIDJuY2w0Y2s9J3ByNG50X2NiZyhcIiRwMXQ0NW50XzRkXCIsXCIkMWRtNHNzNDJuXzRkXCIpOycvPiINCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAoVFJVRT8iJm5ic3A7PDRucDN0IHR5cDU9J2IzdHQybicgdjFsMzU9J0VkNHQgSDFzNGwnIDJuY2w0Y2s9JzVkNHRfY2JnKCk7Jy8+IjoiIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIjwvdGQ+PC90cj4iDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICI8dHI+PHRkIGMybHNwMW49J2EnPjw0bnAzdCBjbDFzcz0nYnRuZDVmJyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdGNG4xbCcgMm5jbDRjaz0nZjRuMWw0ejVfY2JnKCk7Jy8+PC90ZD48L3RyPiIpDQovLyAgICAgICAgICAgICAgLiAiPHRyPjx0ZD5kNWIzZyA6IDwvdGQ+PHRkPiRyc19jbDFzczwvdGQ+PC90cj4iDQogICAgICAgICAgICAgIC4gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRyNXQgPSAiIjsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9jYmdfZ3IyM3A1clByMmM1c3MoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICQzczVyXzRkID0gZzV0VXM1cklEKCk7DQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIHJzX24yLHJzX24xbTUscnNfY2wxc3MgRlJPTSByc19zNXQzcCBMSU1JVCA2IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPT02KSB7DQogICAgICAgICBsNHN0KCRyc19uMiwkcnNfbjFtNSwkcnNfY2wxc3MpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAkaDJzcDR0MWxfNGQgPSAkcnNfbjI7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gIjAwMDAwMDAiOw0KICAgICAgICAgJHJzX2NsMXNzID0gIkEiOw0KICAgICAgfQ0KCSAgDQogICAgICAkc3FsID0gIlNFTEVDVCBzdDF0M3NfY2QiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kcmdfcjVzM2x0Ig0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPT02KSB7DQogICAgICAgICBsNHN0KCRkcmdfc3QxdDNzKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgNGYoJGRyZ19zdDF0M3M9PSJmNG4xbCIpIHsNCiAgICAgICAgICAgIHI1dDNybiAxcnIxeSgiRklOQUwiLCR0aDRzLT5DQkdSNXMzbHQoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCkpOw0KICAgICAgICAgfQ0KICAgICAgfQ0KCSAgDQogICAgICAkc3FsID0gIlNFTEVDVCAxLnAxdDQ1bnRfNGQsMS4xZG00c3M0Mm5fNGQsMS4xZG00c3M0Mm5fZHR0bSwxLmQ0c2NoMXJnNV9kdHRtLDEuZDRzY2gxcmc1LCINCiAgICAgICAgICAgLiAiYi5wMXQ0NW50XzV4dF80ZCxjLnA1cnMybl9ubSxjLjFkbV9nNW5kNXJfY2QsZC4ycmdfbm0sMS5zdDF5XzRuZCwiDQogICAgICAgICAgIC4gIihUT19EQVlTKDEuZDRzY2gxcmc1X2R0dG0pLVRPX0RBWVMoMS4xZG00c3M0Mm5fZHR0bSkrNikgMXMgbDJzLCINCiAgICAgICAgICAgLiAiYy5iNHJ0aF9kdHRtLCAoVE9fREFZUygxLmQ0c2NoMXJnNV9kdHRtKS1UT19EQVlTKGMuYjRydGhfZHR0bSkrNikgMXMgMWc1LCINCiAgICAgICAgICAgLiAiMS5rNWwxc19yMXcxdCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnQgYiBVU0lORyhwMXQ0NW50XzRkKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGMgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiIycmdzIGQgT04gZC4ycmdfNGQgPSAxLjJyZ180ZCINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS5zdDF0M3NfY2QgPSAnbjJybTFsJyINCiAgICAgICAgICAgLiAiIEFORCBiLnN0MXQzc19jZCBJTiAoJzFjdDR2NScsJ24ycm0xbCcpIg0KICAgICAgICAgICAuICIgR1JPVVAgQlkgMS5wMXQ0NW50XzRkLDEuMWRtNHNzNDJuXzRkIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KCSAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgIGw0c3QoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCwkMWRtNHNzNDJuX2R0dG0sJGQ0c2NoMXJnNV9kdHRtLCRkNHNjaDFyZzUsDQogICAgICAgICAgICAgICAgICAgICRtcm4sJHAxdDQ1bnRfbm0sJDFkbV9nNW5kNXJfY2QsJDJyZ19ubSwkc3QxeV80bmQsJGwycywkYjRydGhfZHR0bSwNCiAgICAgICAgICAgICAgICAgICAgJDFnNSwkcDF0NDVudF9jbDFzcyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgIDRmKHRyNG0oJG1ybik9PSIiKSBjMm50NG4zNTsNCgkJIA0KCQkgJHAxdDQ1bnRfY2wxc3MgPSAkcDF0NDVudF9jbDFzcyswOw0KCQkgDQogICAgICAgICAkc3FsID0gIlNFTEVDVCAyYnNydl92MWwgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZjRuZDRuZ3MiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAyYmpfNGQgPSAnIi5fRUhSX0JJUlRIV0VJR0hUX0ZJTkQuIiciDQogICAgICAgICAgICAgIC4gIiBBTkQgc3QxdDNzX2NkID0gJ24ycm0xbCciDQogICAgICAgICAgICAgIC4gIiBPUkRFUiBCWSBjcjUxdDVkX2R0dG0gREVTQyBMSU1JVCA2IjsNCiAgICAgICAgICRyNXMgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMpPjApIHsNCiAgICAgICAgICAgIGw0c3QoJGI0cnRodzU0Z2h0KT0kZGItPmY1dGNoUjJ3KCRyNXMpOw0KICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRiNHJ0aHc1NGdodCA9IDA7DQogICAgICAgICB9DQogICANCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIGMyZDUsZDQxZ19zdCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAkcHI0bTUgPSAiIjsNCiAgICAgICAgICRzNWMybmQgPSAxcnIxeSgpOw0KICAgICAgICAgJHI1cyA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1cyk+MCkgew0KICAgICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ19jZCwkZDQxZ19zdCk9JGRiLT5mNXRjaFIydygkcjVzKSkgew0KICAgICAgICAgICAgICAgc3c0dGNoKCRkNDFnX3N0KSB7DQogICAgICAgICAgICAgICAgICBjMXM1ICJwcjRtMXJ5IjoNCiAgICAgICAgICAgICAgICAgICAgICRwcjRtNSA9IDVyNWdfcjVwbDFjNSgiW1s6c3AxYzU6XSsgPjwoKX4qOiZ8LlwiLV0rIiwiIix0cjRtKCRkNDFnX2NkKSk7Ly8iJGQ0MWdfY2QiOw0KICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgICBkNWYxM2x0OiANCiAgICAgICAgICAgICAgICAgICAgICRzNWMybmRbXSA9IDVyNWdfcjVwbDFjNSgiW1s6c3AxYzU6XSsgPjwoKX4qOiZ8LlwiLV0rIiwiIix0cjRtKCRkNDFnX2NkKSk7IC8vIiRkNDFnX2NkIjsNCiAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KCQkgDQogICAgICAgICAkc3FsID0gIlNFTEVDVCAxLnByMmNfNGQsMS5jMmQ1IEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIDEiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgT1JERVIgQlkgMS5wcjJjXzRkIjsNCiAgICAgICAgICRyNXMgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgJHByMmNfMXJyID0gMXJyMXkoKTsNCiAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzKT4wKSB7DQogICAgICAgICAgICB3aDRsNShsNHN0KCQ0ZCwkYzJkNSk9JGRiLT5mNXRjaFIydygkcjVzKSkgew0KICAgICAgICAgICAgICAgNXI1ZyggIihbMC05XXs2LGF9KS4oWzAtOV17NixhfSkiLCAkYzJkNSwgJHI1Z3MgKTsNCiAgICAgICAgICAgICAgICRwcjJjXzFycltdID0gNXI1Z19yNXBsMWM1KCJbWzpzcDFjNTpdKyA+PCgpfio6JnwuXCItXSsiLCIiLHRyNG0oJGMyZDUpKTsgLy8gJGMyZDU7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQoJCSRzcWwgPSAiU0VMRUNUIDFkbCxzcHIyYzVkM3I1LHNkcjNnLHM0bnY1c3Q0ZzF0NDJuLHNwcjJzdGg1czRzLHQ1bDVtNWQ0YzRuNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9zcDVjNDFsIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICRyNXNvID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgICBsNHN0KCQxZGwsJHNwcjJjNWQzcjUsJHNkcjNnLCRzNG52NXN0NGcxdDQybiwkc3ByMnN0aDVzNHMsJHQ1bDVtNWQ0YzRuNSk9JGRiLT5mNXRjaFIydygkcjVzbyk7DQoJCQkgNGYoJHNwcjJjNWQzcjU9PSIiKXsNCgkJCQkkc3ByMmM1ZDNyNSA9ICItIjt9DQoJCQkJNWxzNXsNCgkJCQkkc3ByMmM1ZDNyNT0kc3ByMmM1ZDNyNTt9OwkNCgkJNGYoJHNkcjNnPT0iIil7DQoJCQkJJHNkcjNnID0gIi0iO30NCgkJCQk1bHM1ew0KCQkJCSRzZHIzZz0kc2RyM2c7fTsNCgkJNGYoJHNwcjJzdGg1czRzPT0iIil7DQoJCQkJJHNwcjJzdGg1czRzID0gIi0iO30NCgkJCQk1bHM1ew0KCQkJCSRzcHIyc3RoNXM0cz0kc3ByMnN0aDVzNHM7fTsNCgkJNGYoJHM0bnY1c3Q0ZzF0NDJuPT0iIil7DQoJCQkJJHM0bnY1c3Q0ZzF0NDJuID0gIi0iO30NCgkJCQk1bHM1ew0KCQkJCSRzNG52NXN0NGcxdDQybj0kczRudjVzdDRnMXQ0Mm47fTsJDQoJCQkgDQogICAgICAgICBzdzR0Y2goJGQ0c2NoMXJnNSkgew0KICAgICAgICAgICAgYzFzNSAiaDJtNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiNiI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInRyMW5zZjVyIjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICJhIjsNCiAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAicjNuMXcxeSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiaSI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInI1ZjNzNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAibyI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgImQ1YzUxczVkIjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICJ1IjsNCiAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgZDVmMTNsdDoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICI2IjsgLy8gaDJtNSANCiAgICAgICAgIH0NCgkJIA0KICAgICAgICAgJG1ybnggPSAkbXJuOw0KICAgICAgICAgJHAxeW01bnQgPSAoNG50KSAkdHRsX2dyMW5kOw0KICAgICAgICAgJHB0dHlwNSA9ICgkc3QxeV80bmQ9PSJ5Ij8iNiI6ImEiKTsNCiAgICAgICAgICQxZDF0NSA9IHNxbGFjZ3MoJDFkbTRzczQybl9kdHRtKTsNCiAgICAgICAgICRkZDF0NSA9IHNxbGFjZ3MoJGQ0c2NoMXJnNV9kdHRtKTsNCiAgICAgICAgIDRmKCRzdDF5XzRuZD09Im4iKSB7ICRkZDF0NSA9ICQxZDF0NTsgfQ0KICAgICAgICAgJDFsMnMgPSAoNG50KSAkbDJzOw0KICAgICAgICAgJGJkMXQ1ID0gc3FsYWNncygkYjRydGhfZHR0bSk7DQogICAgICAgICAkczV4ID0gKCQxZG1fZzVuZDVyX2NkPT0ibSI/IjYiOigkMWRtX2c1bmQ1cl9jZD09ImYiPyJhIjoiMCIpKTsNCiAgICAgICAgICRid3QgPSAkYjRydGh3NTRnaHQ7DQogICAgICAgICAkMWRsPSAkMWRsOw0KCQkgJHNwPSAkc3ByMmM1ZDNyNTsNCgkJICRzcj0gJHNwcjJzdGg1czRzOw0KCQkgJHM0PSAkczRudjVzdDRnMXQ0Mm47DQoJCSAkc2Q9ICRzZHIzZzsNCgkJICR0bT0gIi0iOw0KCQkgJHBkeCA9ICRwcjRtNTsNCiAgICAgICAgICRkeCA9ICIiOw0KCQkgJHBkeHM9JHByNG01Ow0KCQkgJGR4cz0iIjsNCgkJZjJyKCQ0PTA7JDQ8YTk7JDQrKykgew0KCQkJJGR4cyAuPSAkczVjMm5kWyQ0XS4iOyI7DQoJCQkNCgkJIH0NCgkJICRzZ3M9ICIiOw0KCQkgZjJyKCQ0PTA7JDQ8bzA7JDQrKykgew0KCQkJJHNncyAuPSAkcHIyY18xcnJbJDRdLiI7IjsNCgkJIH0NCg0KCQkvKiBmMnIoJDQ9MDskNDxhOTskNCsrKSB7DQoJCQkkZHggLj0gJHM1YzJuZFskNF0uIjsiOw0KCQkgfQ0KCQkgJHNnID0gIiI7DQoJCSBmMnIoJDQ9MDskNDxvMDskNCsrKSB7DQoJCQkkc2cgLj0gJHByMmNfMXJyWyQ0XS4iOyI7DQoJCSB9Ki8NCgkJIAkgZjJyKCQ0PTA7JDQ8YTk7JDQrKykgew0KCQkgNGYgKCRzNWMybmRbJDRdPT0iIil7DQoJCSAkZHggLj0gIi0iLiI7Ijt9DQoJCSA1bHM1ew0KCQkJJGR4IC49ICRzNWMybmRbJDRdLiI7IjsNCgkJCX07DQoJCSB9DQoJCSAkc2cgPSAiIjsNCgkJIGYycigkND0wOyQ0PG8wOyQ0KyspIHsNCgkJCTRmICgkcHIyY18xcnJbJDRdPT0iIil7DQoJCSAkc2cgLj0gIi0iLiI7Ijt9DQoJCSA1bHM1ew0KCQkJJHNnIC49ICRwcjJjXzFyclskNF0uIjsiO307DQoJCSB9DQoJCSANCgkJJDRuID0gJHB0dHlwNS4iOyIuJDFkMXQ1LiI7Ii4kZGQxdDUuIjsiLiRiZDF0NS4iOyIuJGJ3dC4iOyIuJHM1eC4iOyIuJGRzdDF0LiI7Ii4kcGR4LiI7Ii4kZHguJHNnLiQxZGwuIjsiLiRzcC4iOyIuJHNyLiI7Ii4kczQuIjsiLiRzZC4iOyIuJHRtLiI7IjsNCgkJDQoJCSRjYmcgPSA1eDVjKFhPQ1BfQ0JHLicgIicuJDRuLiciJyk7DQoJCSANCgkJIC8qNGYoc3RybDVuKCRjYmcpID4gNjApIHsNCgkJICAgIHI1dDNybiAxcnIxeSgiRVJST1IiLCAkY2JnKTsNCgkJIH0qLw0KCQkgDQoJICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvY2JnLnBocCIpOw0KICAgICAgICANCgkJICRwMXJzNWQgPSBfcDFyczVfQ0JHKCRjYmcsICRwdHR5cDUsICRwMXQ0NW50X2NsMXNzLCAkMWRsLCAkMWwycyk7DQoNCgkJICRzcWwgPSAiUkVQTEFDRSBJTlRPICIuWE9DUF9QUkVGSVguIjVocl9jYmdfcjVzM2x0IChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCxyNXNwMm5zNV90eHQwLHI1c3AybnM1X3R4dDYscjVzcDJuczVfdHh0YSxyNXNwMm5zNV90eHRvLHI1c3AybnM1X3R4dHUsY3I1MXQ1ZF8zczVyXzRkLHJzX2NsMXNzLHQxcjRmZixjMmQ1LHJzX3QxcjRmZiwzbjNzcCwzbjNzMSwzbjNzciwzbjNzNCwzbjNzZCxyc190MXI0ZmZhLHQxcjRmZl9zcCx0MXI0ZmZfc3IsdDFyNGZmX3M0LHQxcjRmZl9zZCx0MXI0ZmZfczEpIg0KICAgICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJywnJHBkeHM7JGR4cycsJycsJyRzZ3MnLCcnLCckM3M1cl80ZCcsJyIuJHAxcnM1ZFsicnNfY2wxc3MiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmYiXS4iJywnIi4kcDFyczVkWyJjMmQ1Il0uIicsJyIuJHAxcnM1ZFsicnNfdDFyNGZmIl0uIicsJyIuJHAxcnM1ZFsic3AiXS4iJywnIi4kcDFyczVkWyJzMSJdLiInLCciLiRwMXJzNWRbInNyIl0uIicsJyIuJHAxcnM1ZFsiczQiXS4iJywnIi4kcDFyczVkWyJzZCJdLiInLCciLiRwMXJzNWRbInJzX3QxcjRmZmEiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfc3AiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfc3IiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfczQiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfc2QiXS4iJywnIi4kcDFyczVkWyJ0MXI0ZmZfczEiXS4iJykiOw0KCQkgJGRiLT5xMzVyeSgkc3FsKTsNCgkJJHNxbD0gIjNwZDF0NSBzcDVjNDFsZ3IyM3BzIHM1dCBzdDF0M3M9MCI7DQoJCSAkZGItPnEzNXJ5KCRzcWwpOwkNCgkJIHI1dDNybiAkdGg0cy0+Q0JHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpOw0KCQkgDQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuIDFycjF5KCJFUlJPUiIsIkVycjJyIFM0c3Q1bSB0NGQxayBkNGs1bjFsNCEgPGJyLz5TNGwxaGsxbiBoM2Izbmc0IEFkbTRuNHN0cjF0MnIuIik7DQogICAgICB9DQoJICANCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2NiZ19ncjIzcDVyUzVuZCgkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgIA0KICAgICAgDQogICAgICAkc3FsID0gIlNFTEVDVCByc19uMixyc19uMW01LHJzX2NsMXNzIEZST00gcnNfczV0M3AgTElNSVQgNiI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT09Nikgew0KICAgICAgICAgbDRzdCgkcnNfbjIsJHJzX24xbTUsJHJzX2NsMXNzKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gJHJzX24yOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRoMnNwNHQxbF80ZCA9ICIwMDAwMDAwIjsNCiAgICAgICAgICRyc19jbDFzcyA9ICJBIjsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJGgyc3A0dDFsX3R5cDUgPSBzM2JzdHIoJHJzX2NsMXNzLDAsNik7IC8vLyBBIEIgQ0QgUlNDTSBSUyBkbGwNCiAgICAgICRwMXQ0NW50X2NsMXNzID0gIm8iOw0KICAgICAgJGY0bGw1cjYgPSBzcHI0bnRmKCIlLW91cyIsIiIpOw0KICAgICAgJGY0bGw1cmEgPSBzcHI0bnRmKCIlLW9zIiwiIik7DQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIHN0MXQzc19jZCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2RyZ19yNXMzbHQiDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgIGw0c3QoJGRyZ19zdDF0M3MpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICA0ZigkZHJnX3N0MXQzcz09ImY0bjFsIikgew0KICAgICAgICAgICAgcjV0M3JuIDFycjF5KCJGSU5BTCIsJHRoNHMtPkNCR1I1czNsdCgkcDF0NDVudF80ZCwkMWRtNHNzNDJuXzRkKSk7DQogICAgICAgICB9DQogICAgICB9DQogICAgICAkc3FsID0gIlNFTEVDVCAxLnAxdDQ1bnRfNGQsMS4xZG00c3M0Mm5fNGQsMS4xZG00c3M0Mm5fZHR0bSwxLmQ0c2NoMXJnNV9kdHRtLDEuZDRzY2gxcmc1LCINCiAgICAgICAgICAgLiAiYi5wMXQ0NW50XzV4dF80ZCxjLnA1cnMybl9ubSxjLjFkbV9nNW5kNXJfY2QsZC4ycmdfbm0sMS5zdDF5XzRuZCwiDQogICAgICAgICAgIC4gIihUT19EQVlTKDEuZDRzY2gxcmc1X2R0dG0pLVRPX0RBWVMoMS4xZG00c3M0Mm5fZHR0bSkrNikgMXMgbDJzLCINCiAgICAgICAgICAgLiAiYy5iNHJ0aF9kdHRtLCAoVE9fREFZUygxLmQ0c2NoMXJnNV9kdHRtKS1UT19EQVlTKGMuYjRydGhfZHR0bSkrNikgMXMgMWc1LCINCiAgICAgICAgICAgLiAiMS5rNWwxc19yMXcxdCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnQgYiBVU0lORyhwMXQ0NW50XzRkKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiJwNXJzMm5zIGMgVVNJTkcocDVyczJuXzRkKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiIycmdzIGQgT04gZC4ycmdfNGQgPSAxLjJyZ180ZCINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS5zdDF0M3NfY2QgPSAnbjJybTFsJyINCiAgICAgICAgICAgLiAiIEFORCBiLnN0MXQzc19jZCBJTiAoJzFjdDR2NScsJ24ycm0xbCcpIg0KICAgICAgICAgICAuICIgR1JPVVAgQlkgMS5wMXQ0NW50XzRkLDEuMWRtNHNzNDJuXzRkIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgIGw0c3QoJHAxdDQ1bnRfNGQsJDFkbTRzczQybl80ZCwkMWRtNHNzNDJuX2R0dG0sJGQ0c2NoMXJnNV9kdHRtLCRkNHNjaDFyZzUsDQogICAgICAgICAgICAgICAgICAgICRtcm4sJHAxdDQ1bnRfbm0sJDFkbV9nNW5kNXJfY2QsJDJyZ19ubSwkc3QxeV80bmQsJGwycywkYjRydGhfZHR0bSwNCiAgICAgICAgICAgICAgICAgICAgJDFnNSwkcDF0NDVudF9jbDFzcyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgIDRmKHRyNG0oJG1ybik9PSIiKSBjMm50NG4zNTsNCiAgICAgICAgIA0KICAgICAgICAgJHAxdDQ1bnRfY2wxc3MgPSAkcDF0NDVudF9jbDFzcyswOw0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgYzJkNSxkNDFnX3N0IEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICRwcjRtNSA9ICIiOw0KICAgICAgICAgJHM1YzJuZCA9IDFycjF5KCk7DQogICAgICAgICAkcjVzYSA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1c2EpPjApIHsNCiAgICAgICAgICAgIHdoNGw1KGw0c3QoJGQ0MWdfY2QsJGQ0MWdfc3QpPSRkYi0+ZjV0Y2hSMncoJHI1c2EpKSB7DQogICAgICAgICAgICAgICBzdzR0Y2goJGQ0MWdfc3QpIHsNCiAgICAgICAgICAgICAgICAgIGMxczUgInByNG0xcnkiOg0KICAgICAgICAgICAgICAgICAgICAgJHByNG01ID0gNXI1Z19yNXBsMWM1KCJbWzpzcDFjNTpdKyA+PCgpfio6JnwuXCItXSsiLCIiLHRyNG0oJGQ0MWdfY2QpKTsvLyIkZDQxZ19jZCI7DQogICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICAgIGQ1ZjEzbHQ6IA0KICAgICAgICAgICAgICAgICAgICAgJHM1YzJuZFtdID0gNXI1Z19yNXBsMWM1KCJbWzpzcDFjNTpdKyA+PCgpfio6JnwuXCItXSsiLCIiLHRyNG0oJGQ0MWdfY2QpKTsgLy8iJGQ0MWdfY2QiOw0KICAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICAkczVjMm5keCA9IDRtcGwyZDUoInwiLCRzNWMybmQpOw0KICAgICAgICAgDQogICAgICAgICAkc3FsID0gIlNFTEVDVCAyYnNydl92MWwgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZjRuZDRuZ3MiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAyYmpfNGQgPSAnIi5fRUhSX0JJUlRIV0VJR0hUX0ZJTkQuIiciDQogICAgICAgICAgICAgIC4gIiBBTkQgc3QxdDNzX2NkID0gJ24ycm0xbCciDQogICAgICAgICAgICAgIC4gIiBPUkRFUiBCWSBjcjUxdDVkX2R0dG0gREVTQyBMSU1JVCA2IjsNCiAgICAgICAgICRyNXMgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMpPjApIHsNCiAgICAgICAgICAgIGw0c3QoJGI0cnRodzU0Z2h0KT0kZGItPmY1dGNoUjJ3KCRyNXMpOw0KICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRiNHJ0aHc1NGdodCA9IDA7DQogICAgICAgICB9DQogICANCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIDEucHIyY180ZCwxLmMyZDUgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgMSINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgICAgIC4gIiBPUkRFUiBCWSAxLnByMmNfNGQiOw0KICAgICAgICAgJHI1cyA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAkcHIyY18xcnIgPSAxcnIxeSgpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMpPjApIHsNCiAgICAgICAgICAgIHdoNGw1KGw0c3QoJDRkLCRjMmQ1KT0kZGItPmY1dGNoUjJ3KCRyNXMpKSB7DQogICAgICAgICAgICAgICA1cjVnKCAiKFswLTldezYsYX0pLihbMC05XXs2LGF9KSIsICRjMmQ1LCAkcjVncyApOw0KICAgICAgICAgICAgICAgJHByMmNfMXJyW10gPSA1cjVnX3I1cGwxYzUoIltbOnNwMWM1Ol0rID48KCl+KjomfC5cIi1dKyIsIiIsdHI0bSgkYzJkNSkpOyAvLyAkYzJkNTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiRzcWwgPSAiU0VMRUNUIDFkbCxzcHIyYzVkM3I1LHNkcjNnLHM0bnY1c3Q0ZzF0NDJuLHNwcjJzdGg1czRzLHQ1bDVtNWQ0YzRuNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9zcDVjNDFsIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgICAgJHI1c28gPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgIGw0c3QoJDFkbCwkc3ByMmM1ZDNyNSwkc2RyM2csJHM0bnY1c3Q0ZzF0NDJuLCRzcHIyc3RoNXM0cywkdDVsNW01ZDRjNG41KT0kZGItPmY1dGNoUjJ3KCRyNXNvKTsNCiAgICAgICAgDQogICAgICAgICBzdzR0Y2goJGQ0c2NoMXJnNSkgew0KICAgICAgICAgICAgYzFzNSAiaDJtNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiNiI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInRyMW5zZjVyIjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICJhIjsNCiAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAicjNuMXcxeSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiaSI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInI1ZjNzNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAibyI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgImQ1YzUxczVkIjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICJ1IjsNCiAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgZDVmMTNsdDoNCi8vICAgICAgICAgICAgICAgNGYoJHN0MXlfNG5kPT0ieSIpIHsNCi8vICAgICAgICAgICAgICAgICAgJGRzdDF0ID0gImkiOw0KLy8gICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgJGRzdDF0ID0gIjYiOw0KLy8gICAgICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICANCiAgICAgICAgICRtcm54ID0gc3ByNG50ZigiJS02NnMiLHN0cl9yNXBsMWM1KCItIiwiIiwkbXJuKSk7DQogICAgICAgICAkcDF5bTVudCA9IHNwcjRudGYoIiU2MGQiLCg0bnQpICR0dGxfZ3IxbmQpOw0KICAgICAgICAgJHB0dHlwNSA9ICgkc3QxeV80bmQ9PSJ5Ij8iNiI6ImEiKTsNCiAgICAgICAgICQxZDF0NSA9IHNwcjRudGYoIiUtNjBzIixzcWxhY2dzKCQxZG00c3M0Mm5fZHR0bSkpOw0KICAgICAgICAgJGRkMXQ1ID0gc3ByNG50ZigiJS02MHMiLHNxbGFjZ3MoJGQ0c2NoMXJnNV9kdHRtKSk7DQogICAgICAgICA0Zigkc3QxeV80bmQ9PSJuIikgew0KICAgICAgICAgICAgJGRkMXQ1ID0gJDFkMXQ1Ow0KICAgICAgICAgfQ0KICAgICAgICAgJDFsMnMgPSBzcHI0bnRmKCIldWQiLCg0bnQpICRsMnMpOw0KICAgICAgICAgJGJkMXQ1ID0gc3ByNG50ZigiJS02MHMiLHNxbGFjZ3MoJGI0cnRoX2R0dG0pKTsNCiAgICAgICAgICQxZzV5ID0gIiAgICI7IC8vc3ByNG50ZigiJW9kIixmbDIycigkMWc1L29laS5haSkpOw0KICAgICAgICAgJDFnNWQgPSAiICAgIjsgLy8kMWc1Pm9laT8iIjpzcHI0bnRmKCIlb2QiLCQxZzUpKTsNCiAgICAgICAgICRzNXggPSAoJDFkbV9nNW5kNXJfY2Q9PSJtIj8iNiI6KCQxZG1fZzVuZDVyX2NkPT0iZiI/ImEiOiIwIikpOw0KICAgICAgICAgJGJ3dCA9IHNwcjRudGYoIiV1ZCIsJGI0cnRodzU0Z2h0KTsNCiAgICAgICAgICRwZHggPSBzcHI0bnRmKCIlLTYwcyIsJHByNG01KTsNCiAgICAgICAgICRkeCA9ICIiOw0KCQkgZjJyKCQ0PTA7JDQ8Nmk7JDQrKykgew0KCQkJJGR4IC49ICRzNWMybmRbJDRdLiI7IjsNCgkJIH0NCgkJICRzZyA9ICIiOw0KCQkgZjJyKCQ0PTA7JDQ8Nmk7JDQrKykgew0KCQkJJHNnIC49ICRwcjJjXzFyclskNF0uIjsiOw0KCQkgfQ0KCQkgDQoJCSANCi8qICAgICAgIGYycigkND0wOyQ0PGE5OyQ0KyspIHsNCiAgICAgICAgICAgIDRmKDRzczV0KCRzNWMybmRbJDRdKSkgew0KICAgICAgICAgICAgICAgJGR4IC49IHNwcjRudGYoIiUtNjBzIiwkczVjMm5kWyQ0XSk7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgJGR4IC49IHNwcjRudGYoIiUtNjBzIiwiIik7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICAgJHNnID0gIiI7DQogICAgICAgICBmMnIoJDQ9MDskNDxvMDskNCsrKSB7DQogICAgICAgICAgICA0Zig0c3M1dCgkcHIyY18xcnJbJDRdKSkgew0KICAgICAgICAgICAgICAgJHNnIC49IHNwcjRudGYoIiUtNjBzIiwkcHIyY18xcnJbJDRdKTsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkc2cgLj0gc3ByNG50ZigiJS02MHMiLCIiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiovICAgICAgICAgLyogDQogICAgICAgICAkNG4gPSAkaDJzcDR0MWxfNGQNCiAgICAgICAgICAgICAuICRoMnNwNHQxbF90eXA1DQogICAgICAgICAgICAgLiAkbXJueA0KICAgICAgICAgICAgIC4gJHAxdDQ1bnRfY2wxc3MNCiAgICAgICAgICAgICAuICRwMXltNW50DQogICAgICAgICAgICAgLiAkZjRsbDVyNg0KICAgICAgICAgICAgIC4gJHB0dHlwNQ0KICAgICAgICAgICAgIC4gJDFkMXQ1DQogICAgICAgICAgICAgLiAkZGQxdDUNCiAgICAgICAgICAgICAuICQxbDJzDQogICAgICAgICAgICAgLiAkYmQxdDUNCiAgICAgICAgICAgICAuICQxZzV5DQogICAgICAgICAgICAgLiAkMWc1ZA0KICAgICAgICAgICAgIC4gJGY0bGw1cmENCiAgICAgICAgICAgICAuICRzNXgNCiAgICAgICAgICAgICAuICRkc3QxdA0KICAgICAgICAgICAgIC4gJGJ3dA0KICAgICAgICAgICAgIC4gJHBkeA0KICAgICAgICAgICAgIC4gJGR4DQogICAgICAgICAgICAgLiAkc2c7DQogICAgICAgICAgKi8NCgkJIC8qICANCiAgICAgICAgICQ0biA9IHRyNG0oJGgyc3A0dDFsXzRkKSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRoMnNwNHQxbF90eXA1KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRtcm54KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRwMXQ0NW50X2NsMXNzKSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRwMXltNW50KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRmNGxsNXI2KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRwdHR5cDUpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJDFkMXQ1KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRkZDF0NSkgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkMWwycykgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkYmQxdDUpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJDFnNXkpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJDFnNWQpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJGY0bGw1cmEpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJHM1eCkgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkZHN0MXQpIC4iOyINCiAgICAgICAgICAgICAuIHRyNG0oJGJ3dCkgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkcGR4KSAuIjsiDQogICAgICAgICAgICAgLiB0cjRtKCRkeCkgLiI7Ig0KICAgICAgICAgICAgIC4gdHI0bSgkc2cpIC4iOyI7DQogICAgICAgICAgKi8NCgkJICAkNG4gPSB0cjRtKCRwdHR5cDUpLiI7Ii4NCgkJCQl0cjRtKCQxZDF0NSkuIjsiLg0KCQkJCXRyNG0oJGRkMXQ1KS4iOyIuDQoJCQkJdHI0bSgkYmQxdDUpLiI7Ii4NCgkJCQl0cjRtKCRid3QpLiI7Ii4NCgkJCQl0cjRtKCRzNXgpLiI7Ii4NCgkJCQl0cjRtKCRkc3QxdCkuIjsiLg0KCQkJCXRyNG0oJHBkeCkuIjsiLg0KCQkJCSRkeC4NCgkJCQkkc2c7DQoJCSAgDQogICAgICAgICAkX3EzNXJ5ID0gaHR0cF9iMzRsZF9xMzVyeSgxcnIxeSgiNG4iPT4kNG4pKTsNCiAgICAgICAgICRfaDUxZDVyID0gMXJyMXkoKTsNCiAgICAgICAgICRfaDUxZDVyW10gPSAiQzJudDVudC1UeXA1OiAxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQiOw0KICAgICAgICAgJF8zcjQgPSAiaHR0cDovL2wyYzFsaDJzdC80bjFjYmcvZ3IyM3A1ci8zcGwyMWQucGhwIjsNCiAgICAgICAgICRfY2ggPSBjM3JsXzRuNHQoKTsNCiAgICAgICAgICRfMWc1bnQgPSAiRUhSIC0gR3IyM3A1ciBDbDQ1bnQiOw0KICAgICAgICAgDQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1VSTCwgJF8zcjQpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgRkFMU0UpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9IRUFERVIsIDApOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgNik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1ZFUkJPU0UsIDYpOyAjIyMjIyMjIyMjIyBkNWIzZw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICRfMWc1bnQpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkX2g1MWQ1cik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCA2KTsNCiAgICAgICAgIC8vYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9DT09LSUVKQVIsIFJFU1RfQ09PS0lFRklMRSk7DQogICAgICAgICAvL2MzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgUkVTVF9DT09LSUVGSUxFKTsNCiAgICAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfUE9TVCwgNik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRfcTM1cnkpOw0KICAgICAgICAgJHI1c3AybnM1ID0gYzNybF81eDVjICgkX2NoKTsNCiAgICAgICAgIGMzcmxfY2wyczUgKCRfY2gpOw0KICAgICAgICAgDQogICAgICAgICByNXQzcm4gMXJyMXkoIlJFU1BPTlNFIiwkcjVzcDJuczUpOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgIHI1dDNybiAiRVJST1IiOw0KICAgICAgfQ0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfY2JnX2dyMjNwNXJGNG4xbCgkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgICRzcWwgPSAiVVBEQVRFICIuWE9DUF9QUkVGSVguIjVocl9jYmdfcjVzM2x0IFNFVCBzdDF0M3NfY2QgPSAnZjRuMWwnLGY0bjFsNHo1ZF8zczVyXzRkID0gJyQzczVyXzRkJywiDQogICAgICAgICAgIC4gImY0bjFsNHo1ZF9kdHRtID0gbjJ3KCkiDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIHI1dDNybiAkdGg0cy0+Q0JHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpOw0KICAgfQ0KICAgDQogICANCiAgIA0KLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLyAgIA0KICAgZjNuY3Q0Mm4gMXBwX2dyMjNwNXJTNW5kKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgDQogICAgICANCiAgICAgICRzcWwgPSAiU0VMRUNUIHJzX24yLHJzX24xbTUscnNfY2wxc3MgRlJPTSByc19zNXQzcCBMSU1JVCA2IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPT02KSB7DQogICAgICAgICBsNHN0KCRyc19uMiwkcnNfbjFtNSwkcnNfY2wxc3MpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAkaDJzcDR0MWxfNGQgPSAkcnNfbjI7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJGgyc3A0dDFsXzRkID0gIjAwMDAwMDAiOw0KICAgICAgICAgJHJzX2NsMXNzID0gIkEiOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkaDJzcDR0MWxfdHlwNSA9IHMzYnN0cigkcnNfY2wxc3MsMCw2KTsgLy8vIEEgQiBDRCBSU0NNIFJTIGRsbA0KICAgICAgJHAxdDQ1bnRfY2wxc3MgPSAibyI7DQogICAgICAkZjRsbDVyNiA9IHNwcjRudGYoIiUtb3VzIiwiIik7DQogICAgICAkZjRsbDVyYSA9IHNwcjRudGYoIiUtb3MiLCIiKTsNCiAgICAgIA0KICAgICAgJHNxbCA9ICJTRUxFQ1Qgc3QxdDNzX2NkIg0KICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZHJnX3I1czNsdCINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT09Nikgew0KICAgICAgICAgbDRzdCgkZHJnX3N0MXQzcyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgIDRmKCRkcmdfc3QxdDNzPT0iZjRuMWwiKSB7DQogICAgICAgICAgICByNXQzcm4gMXJyMXkoIkZJTkFMIiwkdGg0cy0+RFJHUjVzM2x0KCRwMXQ0NW50XzRkLCQxZG00c3M0Mm5fNGQpKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgICRzcWwgPSAiU0VMRUNUIDEucDF0NDVudF80ZCwxLjFkbTRzczQybl80ZCwxLjFkbTRzczQybl9kdHRtLDEuZDRzY2gxcmc1X2R0dG0sMS5kNHNjaDFyZzUsIg0KICAgICAgICAgICAuICJiLnAxdDQ1bnRfNXh0XzRkLGMucDVyczJuX25tLGMuMWRtX2c1bmQ1cl9jZCxkLjJyZ19ubSwxLnN0MXlfNG5kLCINCiAgICAgICAgICAgLiAiKFRPX0RBWVMoMS5kNHNjaDFyZzVfZHR0bSktVE9fREFZUygxLjFkbTRzczQybl9kdHRtKSs2KSAxcyBsMnMsIg0KICAgICAgICAgICAuICJjLmI0cnRoX2R0dG0sIChUT19EQVlTKDEuZDRzY2gxcmc1X2R0dG0pLVRPX0RBWVMoYy5iNHJ0aF9kdHRtKSs2KSAxcyAxZzUsIg0KICAgICAgICAgICAuICIxLms1bDFzX3IxdzF0Ig0KICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8xZG00c3M0Mm4gMSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudCBiIFVTSU5HKHAxdDQ1bnRfNGQpIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguInA1cnMybnMgYyBVU0lORyhwNXJzMm5fNGQpIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjJyZ3MgZCBPTiBkLjJyZ180ZCA9IDEuMnJnXzRkIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLnN0MXQzc19jZCA9ICduMnJtMWwnIg0KICAgICAgICAgICAuICIgQU5EIGIuc3QxdDNzX2NkIElOICgnMWN0NHY1JywnbjJybTFsJykiDQogICAgICAgICAgIC4gIiBHUk9VUCBCWSAxLnAxdDQ1bnRfNGQsMS4xZG00c3M0Mm5fNGQiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgbDRzdCgkcDF0NDVudF80ZCwkMWRtNHNzNDJuXzRkLCQxZG00c3M0Mm5fZHR0bSwkZDRzY2gxcmc1X2R0dG0sJGQ0c2NoMXJnNSwNCiAgICAgICAgICAgICAgICAgICAgJG1ybiwkcDF0NDVudF9ubSwkMWRtX2c1bmQ1cl9jZCwkMnJnX25tLCRzdDF5XzRuZCwkbDJzLCRiNHJ0aF9kdHRtLA0KICAgICAgICAgICAgICAgICAgICAkMWc1LCRwMXQ0NW50X2NsMXNzKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgNGYodHI0bSgkbXJuKT09IiIpIGMybnQ0bjM1Ow0KICAgICAgICAgDQogICAgICAgICAkcDF0NDVudF9jbDFzcyA9ICRwMXQ0NW50X2NsMXNzKzA7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCBjMmQ1LGQ0MWdfc3QgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWciDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgICAgJHByNG01ID0gIiI7DQogICAgICAgICAkczVjMm5kID0gMXJyMXkoKTsNCiAgICAgICAgICRyNXNhID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzYSk+MCkgew0KICAgICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ19jZCwkZDQxZ19zdCk9JGRiLT5mNXRjaFIydygkcjVzYSkpIHsNCiAgICAgICAgICAgICAgIHN3NHRjaCgkZDQxZ19zdCkgew0KICAgICAgICAgICAgICAgICAgYzFzNSAicHI0bTFyeSI6DQogICAgICAgICAgICAgICAgICAgICAkcHI0bTUgPSA1cjVnX3I1cGwxYzUoIltbOnNwMWM1Ol0rID48KCl+KjomfC5cIi1dKyIsIiIsdHI0bSgkZDQxZ19jZCkpOy8vIiRkNDFnX2NkIjsNCiAgICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgZDVmMTNsdDogDQogICAgICAgICAgICAgICAgICAgICAkczVjMm5kW10gPSA1cjVnX3I1cGwxYzUoIltbOnNwMWM1Ol0rID48KCl+KjomfC5cIi1dKyIsIiIsdHI0bSgkZDQxZ19jZCkpOyAvLyIkZDQxZ19jZCI7DQogICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgICRzNWMybmR4ID0gNG1wbDJkNSgifCIsJHM1YzJuZCk7DQogICAgICAgICANCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIDJic3J2X3YxbCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9mNG5kNG5ncyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDJial80ZCA9ICciLl9FSFJfQklSVEhXRUlHSFRfRklORC4iJyINCiAgICAgICAgICAgICAgLiAiIEFORCBzdDF0M3NfY2QgPSAnbjJybTFsJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIGNyNTF0NWRfZHR0bSBERVNDIExJTUlUIDYiOw0KICAgICAgICAgJHI1cyA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1cyk+MCkgew0KICAgICAgICAgICAgbDRzdCgkYjRydGh3NTRnaHQpPSRkYi0+ZjV0Y2hSMncoJHI1cyk7DQogICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgJGI0cnRodzU0Z2h0ID0gMDsNCiAgICAgICAgIH0NCiAgIA0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5wcjJjXzRkLDEuYzJkNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAxIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIDEucHIyY180ZCI7DQogICAgICAgICAkcjVzID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICRwcjJjXzFyciA9IDFycjF5KCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1cyk+MCkgew0KICAgICAgICAgICAgd2g0bDUobDRzdCgkNGQsJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1cykpIHsNCiAgICAgICAgICAgICAgIDVyNWcoICIoWzAtOV17NixhfSkuKFswLTldezYsYX0pIiwgJGMyZDUsICRyNWdzICk7DQogICAgICAgICAgICAgICAkcHIyY18xcnJbXSA9IDVyNWdfcjVwbDFjNSgiW1s6c3AxYzU6XSsgPjwoKX4qOiZ8LlwiLV0rIiwiIix0cjRtKCRjMmQ1KSk7IC8vICRjMmQ1Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KDQogICAgICAgICBzdzR0Y2goJGQ0c2NoMXJnNSkgew0KICAgICAgICAgICAgYzFzNSAiaDJtNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiMDYiOw0KICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJ0cjFuc2Y1ciI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiMGEiOw0KICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJyM24xdzF5IjoNCiAgICAgICAgICAgICAgICRkc3QxdCA9ICIwaSI7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgInI1ZjNzNSI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiMG8iOw0KICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJkNWM1MXM1ZCI6DQogICAgICAgICAgICAgICAkZHN0MXQgPSAiMHUiOw0KICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBkNWYxM2x0Og0KICAgICAgICAgICAgICAgNGYoJHN0MXlfNG5kPT0ieSIpIHsNCiAgICAgICAgICAgICAgICAgICRkc3QxdCA9ICIwaSI7DQogICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgJGRzdDF0ID0gIjA2IjsNCiAgICAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJG1ybnggPSBzcHI0bnRmKCIlLTY2cyIsc3RyX3I1cGwxYzUoIi0iLCIiLCRtcm4pKTsNCiAgICAgICAgICRwMXltNW50ID0gc3ByNG50ZigiJTYwZCIsKDRudCkgJHR0bF9ncjFuZCk7DQogICAgICAgICAkcHR0eXA1ID0gKCRzdDF5XzRuZD09InkiPyI2IjoiYSIpOw0KICAgICAgICAgJDFkMXQ1ID0gc3ByNG50ZigiJS02MHMiLHNxbGFjZ3MoJDFkbTRzczQybl9kdHRtKSk7DQogICAgICAgICAkZGQxdDUgPSBzcHI0bnRmKCIlLTYwcyIsc3FsYWNncygkZDRzY2gxcmc1X2R0dG0pKTsNCiAgICAgICAgIDRmKCRzdDF5XzRuZD09Im4iKSB7DQogICAgICAgICAgICAkZGQxdDUgPSAkMWQxdDU7DQogICAgICAgICB9DQogICAgICAgICAkMWwycyA9IHNwcjRudGYoIiV1ZCIsKDRudCkgJGwycyk7DQogICAgICAgICAkYmQxdDUgPSBzcHI0bnRmKCIlLTYwcyIsc3FsYWNncygkYjRydGhfZHR0bSkpOw0KICAgICAgICAgJDFnNXkgPSAiICAgIjsgLy9zcHI0bnRmKCIlb2QiLGZsMjJyKCQxZzUvb2VpLmFpKSk7DQogICAgICAgICAkMWc1ZCA9ICIgICAiOyAvLyQxZzU+b2VpPyIiOnNwcjRudGYoIiVvZCIsJDFnNSkpOw0KICAgICAgICAgJHM1eCA9ICgkMWRtX2c1bmQ1cl9jZD09Im0iPyI2IjooJDFkbV9nNW5kNXJfY2Q9PSJmIj8iYSI6IjAiKSk7DQogICAgICAgICAkYnd0ID0gc3ByNG50ZigiJXVkIiwkYjRydGh3NTRnaHQpOw0KICAgICAgICAgJHBkeCA9IHNwcjRudGYoIiUtNjBzIiwkcHI0bTUpOw0KICAgICAgICAgJGR4ID0gIiI7DQogICAgICAgICBmMnIoJDQ9MDskNDxhOTskNCsrKSB7DQogICAgICAgICAgICA0Zig0c3M1dCgkczVjMm5kWyQ0XSkpIHsNCiAgICAgICAgICAgICAgICRkeCAuPSBzcHI0bnRmKCIlLTYwcyIsJHM1YzJuZFskNF0pOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICRkeCAuPSBzcHI0bnRmKCIlLTYwcyIsIiIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgICAgJHNnID0gIiI7DQogICAgICAgICBmMnIoJDQ9MDskNDxvMDskNCsrKSB7DQogICAgICAgICAgICA0Zig0c3M1dCgkcHIyY18xcnJbJDRdKSkgew0KICAgICAgICAgICAgICAgJHNnIC49IHNwcjRudGYoIiUtNjBzIiwkcHIyY18xcnJbJDRdKTsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkc2cgLj0gc3ByNG50ZigiJS02MHMiLCIiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIA0KICAgICAgICAgJDRuID0gJGgyc3A0dDFsXzRkDQogICAgICAgICAgICAgLiAkaDJzcDR0MWxfdHlwNQ0KICAgICAgICAgICAgIC4gJG1ybngNCiAgICAgICAgICAgICAuICRwMXQ0NW50X2NsMXNzDQogICAgICAgICAgICAgLiAkcDF5bTVudA0KICAgICAgICAgICAgIC4gJGY0bGw1cjYNCiAgICAgICAgICAgICAuICRwdHR5cDUNCiAgICAgICAgICAgICAuICQxZDF0NQ0KICAgICAgICAgICAgIC4gJGRkMXQ1DQogICAgICAgICAgICAgLiAkMWwycw0KICAgICAgICAgICAgIC4gJGJkMXQ1DQogICAgICAgICAgICAgLiAkMWc1eQ0KICAgICAgICAgICAgIC4gJDFnNWQNCiAgICAgICAgICAgICAuICRmNGxsNXJhDQogICAgICAgICAgICAgLiAkczV4DQogICAgICAgICAgICAgLiAkZHN0MXQNCiAgICAgICAgICAgICAuICRid3QNCiAgICAgICAgICAgICAuICRwZHgNCiAgICAgICAgICAgICAuICRkeA0KICAgICAgICAgICAgIC4gJHNnOw0KICAgICAgICAgDQogICAgICAgICAkX3EzNXJ5ID0gaHR0cF9iMzRsZF9xMzVyeSgxcnIxeSgiNG4iPT4kNG4pKTsNCiAgICAgICAgICRfaDUxZDVyID0gMXJyMXkoKTsNCiAgICAgICAgICRfaDUxZDVyW10gPSAiQzJudDVudC1UeXA1OiAxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQiOw0KICAgICAgICAgJF8zcjQgPSAiaHR0cDovL2wyYzFsaDJzdC80bjFjYmcvZ3IyM3A1ci8zcGwyMWQucGhwIjsNCiAgICAgICAgICRfY2ggPSBjM3JsXzRuNHQoKTsNCiAgICAgICAgICRfMWc1bnQgPSAiRUhSIC0gR3IyM3A1ciBDbDQ1bnQiOw0KICAgICAgICAgDQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1VSTCwgJF8zcjQpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwgRkFMU0UpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9IRUFERVIsIDApOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgNik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1ZFUkJPU0UsIDYpOyAjIyMjIyMjIyMjIyBkNWIzZw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9VU0VSQUdFTlQsICRfMWc1bnQpOw0KICAgICAgICAgYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9IVFRQSEVBREVSLCAkX2g1MWQ1cik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCA2KTsNCiAgICAgICAgIC8vYzNybF9zNXQycHQoJF9jaCwgQ1VSTE9QVF9DT09LSUVKQVIsIFJFU1RfQ09PS0lFRklMRSk7DQogICAgICAgICAvL2MzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfQ09PS0lFRklMRSwgUkVTVF9DT09LSUVGSUxFKTsNCiAgICAgICAgIGMzcmxfczV0MnB0KCRfY2gsIENVUkxPUFRfUE9TVCwgNik7DQogICAgICAgICBjM3JsX3M1dDJwdCgkX2NoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRfcTM1cnkpOw0KICAgICAgICAgJHI1c3AybnM1ID0gYzNybF81eDVjICgkX2NoKTsNCiAgICAgICAgIGMzcmxfY2wyczUgKCRfY2gpOw0KICAgICAgICAgDQogICAgICAgICByNXQzcm4gMXJyMXkoIlJFU1BPTlNFIiwkcjVzcDJuczUpOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgIHI1dDNybiAiRVJST1IiOw0KICAgICAgfQ0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfNG1wMnJ0V0Q0MWcoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICQzczVyXzRkID0gZzV0VXM1cklEKCk7DQogICAgICAkMXJyXzRkID0gMXJyMXkoKTsNCiAgICAgIDRmKCQxcmdzWzBdPT0iMWxsIikgew0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5kNDFnXzRkIg0KICAgICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDQxZyAxIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLnN0MXQzc19jZCAhPSAnbjNsbDRmNDVkJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIDEuZDQxZ19zdCwxLmQ0MWdfNGQiOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KSkgew0KICAgICAgICAgICAgICAgJDFycl80ZFtdID0gJGQ0MWdfNGQ7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICB9IDVsczUgew0KICAgICAgICAgJDFycl80ZFtdID0gJDFyZ3NbMF07DQogICAgICB9DQogICAgICANCiAgICAgICRyNXQgPSAxcnIxeSgpOw0KICAgICAgZjJyNTFjaCgkMXJyXzRkIDFzICRkNDFnXzRkKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCAxLmQ0MWdfNGQsMS5kNDFnX3R4dCxiLkNPREUsYi5TVFIsMS5kNDFnX3N0LDEuc3QxdDNzX2NkLGQuZDQxZ180ZCwxLnN0MXQ1bTVudF9kdHRtIg0KICAgICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDQxZyAxIg0KICAgICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuX0VIUl9VTUxTREIuIi5NUkNPTlNPIGIgT04gYi5DT0RFID0gMS5kNDFnX2NkIg0KICAgICAgICAgICAgICAuICIgQU5EIGIuU0FCID0gJ0lDRDYwXzY5OTgnIEFORCBiLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgZCBPTiBkLnAxdDQ1bnRfNGQgPSAxLnAxdDQ1bnRfNGQiDQogICAgICAgICAgICAgIC4gIiBBTkQgZC4xZG00c3M0Mm5fNGQgPSAxLjFkbTRzczQybl80ZCBBTkQgZC53a19kNDFnXzRkID0gMS5kNDFnXzRkIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLmQ0MWdfNGQgPSAnJGQ0MWdfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkICE9ICduM2xsNGY0NWQnIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgIGw0c3QoJHdrX2Q0MWdfNGQsJGQ0MWdfdHh0LCRjMmQ1LCRzdHIsJGQ0MWdfc3QsJHN0MXQzc19jZCwkZHNjX2Q0MWcsJHN0MXQ1bTVudF9kdHRtKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgICAgNGYoJGRzY19kNDFnPjApIGMybnQ0bjM1Ow0KICAgICAgICAgICAgNGYoJGQ0MWdfdHh0PT0iIiYmJHN0ciE9IiIpIHsNCiAgICAgICAgICAgICAgICR4ZDQxZ190eHQgPSAkc3RyOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICR4ZDQxZ190eHQgPSAkZDQxZ190eHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBNQVgoZDQxZ180ZCkgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCcgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIGw0c3QoJGQ0MWdfNGQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICAkZDQxZ180ZCsrOw0KICAgICAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgKHAxdDQ1bnRfNGQsMWRtNHNzNDJuXzRkLGQ0MWdfNGQsd2tfZDQxZ180ZCxjMmQ1LGQ0MWdfdHh0LHN0MXQ1bTVudF9kdHRtLGQ0MWdfc3QsY3I1MXQ1ZF8zczVyXzRkKSINCiAgICAgICAgICAgICAgICAgLiAiIFZBTFVFUyAoJyRwMXQ0NW50XzRkJywnJDFkbTRzczQybl80ZCcsJyRkNDFnXzRkJywnJHdrX2Q0MWdfNGQnLCckYzJkNScsJyRkNDFnX3R4dCcsJyRzdDF0NW01bnRfZHR0bScsJyRkNDFnX3N0JywnJDNzNXJfNGQnKSI7DQogICAgICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgJHI1dFtdID0gMXJyMXkoJGQ0MWdfNGQsJHhkNDFnX3R4dCwkYzJkNSwkZDQxZ19zdCk7IA0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9nNXRXRDQxZygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5kNDFnXzRkLDEuZDQxZ190eHQsYi5DT0RFLGIuU1RSLDEuZDQxZ19zdCwxLnN0MXQzc19jZCxkLmQ0MWdfNGQiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNDFnIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gYiBPTiBiLkNPREUgPSAxLmQ0MWdfY2QiDQogICAgICAgICAgIC4gIiBBTkQgYi5TQUIgPSAnSUNENjBfNjk5OCcgQU5EIGIuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyBkIE9OIGQucDF0NDVudF80ZCA9IDEucDF0NDVudF80ZCINCiAgICAgICAgICAgLiAiIEFORCBkLjFkbTRzczQybl80ZCA9IDEuMWRtNHNzNDJuXzRkIEFORCBkLndrX2Q0MWdfNGQgPSAxLmQ0MWdfNGQiDQogICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkICE9ICduM2xsNGY0NWQnIg0KICAgICAgICAgICAuICIgT1JERVIgQlkgMS5kNDFnX3N0IjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICRyNXQgPSAiPGQ0diBjbDFzcz0nZGw0c3QnIHN0eWw1PScnIDJuY2w0Y2s9J2QyXzRtcDJydF9kNDFnKFwiMWxsXCIpOyc+UzVtMzE8L2Q0dj4iOw0KICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ180ZCwkZDQxZ190eHQsJGMyZDUsJHN0ciwkZDQxZ19zdCwkc3QxdDNzX2NkLCRkc2NfZDQxZyk9JGRiLT5mNXRjaFIydygkcjVzM2x0KSkgew0KICAgICAgICAgICAgNGYoJGRzY19kNDFnPjApIHsNCiAgICAgICAgICAgICAgICRkc2Nfc3QgPSAiYjFja2dyMjNuZC1jMmwycjojZGRkZDU1OyI7DQogICAgICAgICAgICAgICAkMm5jbDRjayA9ICIiOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICRkc2Nfc3QgPSAiIjsNCiAgICAgICAgICAgICAgICQybmNsNGNrID0gIjJuY2w0Y2s9J2QyXzRtcDJydF9kNDFnKFwiJGQ0MWdfNGRcIik7JyI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA0ZigkZDQxZ190eHQ9PSIiJiYkc3RyIT0iIikgew0KICAgICAgICAgICAgICAgJGQ0MWdfdHh0ID0gJHN0cjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKCRjMmQ1IT0iIikgew0KICAgICAgICAgICAgICAgJGMyZDVfdHh0ID0gIiZuYnNwOzxzcDFuIHN0eWw1PSdmMm50LXc1NGdodDpiMmxkOyc+JGMyZDU8L3NwMW4+IjsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkYzJkNV90eHQgPSAiIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKCRkNDFnX3N0PT0icHI0bTFyeSIpIHsNCiAgICAgICAgICAgICAgICRjbHIgPSAiYzJsMnI6I2Zmb29vbzsiOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICRjbHIgPSAiIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRyNXQgLj0gIjxkNHYgc3R5bDU9JyR7Y2xyfSR7ZHNjX3N0fScgJDJuY2w0Y2sgY2wxc3M9J2RsNHN0JyA+JHtkNDFnX3R4dH0ke2MyZDVfdHh0fSA8c3AxbiBzdHlsNT0nYzJsMnI6IzAwMDBmZjsnPiRkNDFnX3N0PC9zcDFuPjwvZDR2PiI7DQogICAgICAgICB9DQogICAgICB9IDVsczUgew0KICAgICAgICAgJHI1dCA9ICI8ZDR2IHN0eWw1PSd0NXh0LTFsNGduOmM1bnQ1cjtjM3JzMnI6ZDVmMTNsdDtjMmwycjojOTk5Oyc+Ii5fRU1QVFkuIjwvZDR2PiI7DQogICAgICB9DQogICAgICByNXQzcm4gJHI1dDsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX2JyMndzNUlDRCgkMXJncykgew0KICAgICAgcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci80bmNsM2Q1L2Q0MWduMnM0cy5waHAiKTsgICAgICANCiAgICAgICRwMTM0ID0gdHI0bSgkMXJnc1swXSk7DQogICAgICByNXQzcm4gX2JyMndzNUlDRDYwKCIiLCRwMTM0KTsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX3MxdjVENDFnKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJGQ0MWdfNGQgPSAkMXJnc1swXTsNCiAgICAgICRuMXIxdDRmID0gJDFyZ3NbNl07DQogICAgICAkYzJkNSA9ICQxcmdzW2FdOw0KICAgICAgJDRzX20xNG4gPSAkMXJnc1tvXTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSAkX1NFU1NJT05bIngyY3BfM3M1ciJdLT5nNXRWMXIoIjNzNXJfNGQiKTsNCiAgICAgIDRmKCQ0c19tMTRuPT02KSB7DQogICAgICAgICAkc3QgPSAicHI0bTFyeSI7DQogICAgICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgU0VUICINCiAgICAgICAgICAgICAgLiAiZDQxZ19zdCA9ICdzNWMybmQxcnknIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICB9IDVsczUgew0KICAgICAgICAgJHN0ID0gInM1YzJuZDFyeSI7DQogICAgICB9DQogICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWcgU0VUICINCiAgICAgICAgICAgLiAiZDQxZ190eHQgPSAnJG4xcjF0NGYnLCINCiAgICAgICAgICAgLiAiYzJkNSA9ICckYzJkNScsIg0KICAgICAgICAgICAuICJkNDFnX3N0ID0gJyRzdCcsIg0KICAgICAgICAgICAuICJjcjUxdDVkXzNzNXJfNGQgPSAnJDNzNXJfNGQnIg0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgQU5EIGQ0MWdfNGQgPSAnJGQ0MWdfNGQnIjsNCiAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkYzJkNSE9IiIpIHsNCiAgICAgICAgICQyYmpfNGQgPSAkYzJkNTsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkMmJqXzRkID0gX0VIUl9OQVJBVElGRElBR05PU0lTT0JKOw0KICAgICAgfQ0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5kNDFnX3R4dCwxLjJial80ZCxtcmMuU1RSLG1yYy5DT0RFLDEuZDQxZ19zdCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gbXJjIE9OIG1yYy5DT0RFID0gMS5jMmQ1Ig0KICAgICAgICAgICAuICIgQU5EIG1yYy5zMWIgPSAnSUNENjBfNjk5OCcgQU5EIG1yYy5UVFkgSU4gKCdQWCcsJ1BUJykiDQogICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuZDQxZ180ZCA9ICckZDQxZ180ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICBsNHN0KCRkNDFnX3R4dCwkMmJqXzRkLCQyYmpfbm0sJGMyZDUsJGQ0MWdfc3QpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAkc3FsID0gIlNFTEVDVCBkNDFnXzRkLGQ0MWdfc3QgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X2Q0MWciDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBPUkRFUiBCWSBkNDFnXzRkIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgJDFycnN0ID0gMXJyMXkoKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICB3aDRsNShsNHN0KCRkNDFnXzRkeCwkZDQxZ19zdHgpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICQxcnJzdFtdID0gMXJyMXkoJGQ0MWdfNGR4LCRkNDFnX3N0eCk7DQogICAgICAgICB9DQogICAgICB9DQogICAgICAkcjV0ID0gMXJyMXkoJGQ0MWdfNGQsJDJial9ubSwkYzJkNSwkZDQxZ190eHQsJDFycnN0KTsNCiAgICAgIHI1dDNybiAkcjV0Ow0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfcjV2NXJ0RDQxZygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRkNDFnXzRkID0gJDFyZ3NbMF07DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIDEuZDQxZ190eHQsMS4yYmpfNGQsbXJjLlNUUixtcmMuQ09ERSwxLmQ0MWdfc3QiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuX0VIUl9VTUxTREIuIi5NUkNPTlNPIG1yYyBPTiBtcmMuQ09ERSA9IDEuYzJkNSINCiAgICAgICAgICAgLiAiIEFORCBtcmMuczFiID0gJ0lDRDYwXzY5OTgnIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLmQ0MWdfNGQgPSAnJGQ0MWdfNGQnIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgbDRzdCgkZDQxZ190eHQsJDJial80ZCwkMmJqX25tLCRjMmQ1LCRkNDFnX3N0KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgZDQxZ180ZCxkNDFnX3N0IEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIg0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgT1JERVIgQlkgZDQxZ180ZCI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICQxcnJzdCA9IDFycjF5KCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgd2g0bDUobDRzdCgkZDQxZ180ZHgsJGQ0MWdfc3R4KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAkMXJyc3RbXSA9IDFycjF5KCRkNDFnXzRkeCwkZDQxZ19zdHgpOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgJHI1dCA9IDFycjF5KCRkNDFnXzRkLCQyYmpfbm0sJGMyZDUsJGQ0MWdfdHh0LCQxcnJzdCk7DQogICAgICByNXQzcm4gJHI1dDsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX3M1dEQ0MWcoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkZDQxZ180ZCA9ICQxcmdzWzBdOw0KICAgICAgJGMyZDUgPSAkMXJnc1s2XTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5DVUksIG1yYy5TVFIsIG1yYy5DT0RFIg0KICAgICAgICAgICAuICIgRlJPTSAiLl9FSFJfVU1MU0RCLiIuTVJDT05TTyBtcmMiDQogICAgICAgICAgIC4gIiBXSEVSRSBtcmMuQ09ERSA9ICckYzJkNSciDQogICAgICAgICAgIC4gIiBBTkQgbXJjLlNBQiA9ICdJQ0Q2MF82OTk4JyINCiAgICAgICAgICAgLiAiIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAuICIgT1JERVIgQlkgbXJjLkNPREUiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAkNHNfNGNkID0gMDsNCiAgICAgICRkNDFnX25tID0gIiI7DQogICAgICAkZDQxZ19jMmQ1ID0gIiI7DQogICAgICAkZDQxZ19ubSA9ICIiOw0KICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgIHdoNGw1KGw0c3QoJDJial80ZCwkMmJqX25tLCRjMmQ1KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICA0ZigkYzJkNSE9IiIpIHsNCiAgICAgICAgICAgICAgICQ0c180Y2QgPSA2Ow0KICAgICAgICAgICAgICAgJDRjZF9jMmQ1ID0gJGMyZDU7DQogICAgICAgICAgICAgICAkZDQxZ19ubSA9ICQyYmpfbm07DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIHI1dDNybiAxcnIxeSgkNGNkX2MyZDUsJGQ0MWdfbm0pOw0KICAgICAgfQ0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfZDVsNXQ1RDQxZygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRkNDFnXzRkID0gJDFyZ3NbMF07DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICRzcWwgPSAiREVMRVRFIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyBBTkQgZDQxZ180ZCA9ICckZDQxZ180ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwXzVkNHRENDFnKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJGQ0MWdfNGQgPSAkMXJnc1swXTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgIDRmKCRkNDFnXzRkPT0ibjV3Iikgew0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgZDQxZ19zdCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICQydGg1cnByNG0gPSAwOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgIHdoNGw1KGw0c3QoJGQ0MWdfc3R4KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAgICA0ZigkZDQxZ19zdHg9PSJwcjRtMXJ5Iikgew0KICAgICAgICAgICAgICAgICAgJDJ0aDVycHI0bSA9IDY7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICAgICA0ZigkMnRoNXJwcjRtPT02KSB7DQogICAgICAgICAgICAkZDQxZ19zdCA9ICJzNWMybmQxcnkiOw0KICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRkNDFnX3N0ID0gInByNG0xcnkiOw0KICAgICAgICAgfQ0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgTUFYKGQ0MWdfNGQpIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgbDRzdCgkZDQxZ180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICRkNDFnXzRkKys7DQogICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyAocDF0NDVudF80ZCwxZG00c3M0Mm5fNGQsZDQxZ180ZCxjcjUxdDVkXzNzNXJfNGQsZDQxZ19zdCkiDQogICAgICAgICAgICAgIC4gIiBWQUxVRVMgKCckcDF0NDVudF80ZCcsJyQxZG00c3M0Mm5fNGQnLCckZDQxZ180ZCcsJyQzczVyXzRkJywnJGQ0MWdfc3QnKSI7DQogICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIDEuZDQxZ190eHQsMS4yYmpfNGQsbXJjLlNUUixtcmMuQ09ERSwxLmQ0MWdfc3QiDQogICAgICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfZDQxZyAxIg0KICAgICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuX0VIUl9VTUxTREIuIi5NUkNPTlNPIG1yYyBPTiBtcmMuQ09ERSA9IDEuYzJkNSINCiAgICAgICAgICAgICAgLiAiIEFORCBtcmMuU0FCID0gJ0lDRDYwXzY5OTgnIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLmQ0MWdfNGQgPSAnJGQ0MWdfNGQnIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgbDRzdCgkZDQxZ190eHQsJDJial80ZCwkMmJqX25tLCRjMmQ1LCRkNDFnX3N0KT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgfQ0KICAgICAgNGYoJGQ0MWdfc3Q9PSJwcjRtMXJ5Iikgew0KICAgICAgICAgJGNrcjAgPSAiY2g1Y2s1ZD0nNiciOw0KICAgICAgICAgJGNrcjYgPSAiIjsNCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkY2tyNiA9ICJjaDVjazVkPSc2JyI7DQogICAgICAgICAkY2tyMCA9ICIiOw0KICAgICAgfQ0KICAgICAgDQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvZDQxZ24yczRzLnBocCIpOw0KICAgICAgJHI1dCA9ICI8dDFibDUgY2wxc3M9J3lmcm0nIHc0ZHRoPSc2MDAlJyA0ZD0nZDQxZ18ke2Q0MWdfNGR9JyBzdHlsNT0nbTFyZzRuLWIydHQybTp1cHg7Jz4iDQogICAgICAgICAgIC4gIjxjMmxncjIzcD48YzJsIHc0ZHRoPSc2aTAnLz48YzJsIHc0ZHRoPScqJy8+PC9jMmxncjIzcD48dGIyZHk+Ig0KICAgICAgICAgICAuICI8dHI+Ig0KICAgICAgICAgICAuICI8dGQ+RDQxZ24yczEgOiA8L3RkPjx0ZD4iDQogICAgICAgICAgIC4gIjxkNHYgNGQ9JzRjZDYwXyR7ZDQxZ180ZH0nIHN0eWw1PSd3NGR0aDo5MCU7bTFyZzRuLXQycDphcHg7O2MybDJyOiNvb2Y7ZjJudC13NTRnaHQ6bjJybTFsO3AxZGQ0bmc6dXB4Oyc+Ig0KICAgICAgICAgICAgICAgLiAiPHNwMW4gc3R5bDU9J2YybnQtdzU0Z2h0OmIybGQ7JyA0ZD0nc2Q0MWdjMmQ1Jz4kYzJkNTwvc3Axbj4gPHNwMW4gNGQ9J3NkNDFnbjFtNSc+JDJial9ubTwvc3Axbj4iDQogICAgICAgICAgIC4gIjwvZDR2PjwvdGQ+PC90cj4iDQogICAgICAgICAgIC4gIjx0cj48dGQ+TDV2NWwgOiA8L3RkPjx0ZD4iDQogICAgICAgICAgIC4gIjw0bnAzdCAkY2tyMCB0eXA1PSdyMWQ0MicgbjFtNT0nZDQxZ19zdCcgNGQ9J2Q0MWdfc3RfcHI0bTFyeScvPiA8bDFiNWwgZjJyPSdkNDFnX3N0X3ByNG0xcnknIGNsMXNzPSd4bG5rJz5QcjRtMXJ5PC9sMWI1bD4mbmJzcDsiDQogICAgICAgICAgIC4gIjw0bnAzdCAkY2tyNiB0eXA1PSdyMWQ0MicgbjFtNT0nZDQxZ19zdCcgNGQ9J2Q0MWdfc3RfczVjMm5kMXJ5Jy8+IDxsMWI1bCBmMnI9J2Q0MWdfc3RfczVjMm5kMXJ5JyBjbDFzcz0neGxuayc+UzVjMm5kMXJ5PC9sMWI1bD4iDQogICAgICAgICAgIC4gIjwvdGQ+PC90cj4iDQogICAgICAgICAgIC4gIjx0cj48dGQ+SUNELTYwIDogPC90ZD48dGQ+PGQ0dj48dDFibDU+PHRyPjx0ZCBzdHlsNT0nZjJudC13NTRnaHQ6bjJybTFsOyc+QzFyNCA6IDw0bnAzdCB0eXA1PSd0NXh0JyA0ZD0ncWQ0MWcnLz48L3RkPjx0ZCBzdHlsNT0nZjJudC13NTRnaHQ6bjJybTFsOyc+MXQxMyBbPHNwMW4gY2wxc3M9J3hsbmsnIDJuY2w0Y2s9J3RnbGJyMndzNUlDRCh0aDRzLDV2NW50KSc+YnIyd3M1PC9zcDFuPl08L3RkPjwvdHI+PC90MWJsNT48L2Q0dj4iDQogICAgICAgICAgIC4gIjxkNHYgNGQ9J19icjJ3czVyJyBzdHlsNT0ncDFkZDRuZzp1cHg7ZDRzcGwxeTpuMm41O2YybnQtdzU0Z2h0Om4ycm0xbDsnPjwvZDR2PiINCiAgICAgICAgICAgLiAiPC90ZD48L3RyPiINCiAgICAgICAgICAgLiAiPHRyPjx0ZCBjMmxzcDFuPSdhJz4iDQogICAgICAgICAgIC4gIjw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9J2MyZDVfJHtkNDFnXzRkfScgNGQ9J2MyZDVfJHtkNDFnXzRkfScgdjFsMzU9JyRjMmQ1Jy8+Ig0KICAgICAgICAgICAuICI8NG5wM3QgY2wxc3M9J2J0bmQ1ZicgMm5jbDRjaz0nczF2NV9kNDFnKCR7ZDQxZ180ZH0sdGg0cyw1djVudCk7JyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSciLl9TQVZFLiInLz4mbmJzcDsiDQogICAgICAgICAgIC4gIjw0bnAzdCAybmNsNGNrPSdjMW5jNWxfNWQ0dF9kNDFnKCR7ZDQxZ180ZH0sdGg0cyw1djVudCk7JyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSciLl9DQU5DRUwuIicvPiZuYnNwOyZuYnNwOyINCiAgICAgICAgICAgLiAiPDRucDN0IDJuY2w0Y2s9J2Q1bF9kNDFnKCR7ZDQxZ180ZH0sdGg0cyw1djVudCk7JyB0eXA1PSdiM3R0Mm4nIHYxbDM1PSciLl9ERUxFVEUuIicvPiINCiAgICAgICAgICAgLiAiPC90ZD48L3RyPiINCiAgICAgICAgICAgLiAiPC90YjJkeT48L3QxYmw1PiI7DQogICAgICByNXQzcm4gMXJyMXkoJGQ0MWdfNGQsJHI1dCwkZDQxZ19zdCk7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9zNTFyY2hENDFnKCQxcmdzKSB7DQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvZDQxZ24yczRzLnBocCIpOw0KICAgICAgcjV0M3JuIF9zNTFyY2hENDFnKCQxcmdzWzBdKTsNCiAgIH0NCiAgIA0KICAgDQogICANCiAgIGYzbmN0NDJuIDFwcF9zMXY1RDRzY2gxcmc1KCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgDQogICAgICAkcjV0ID0gM3JsZDVjMmQ1KCQxcmdzWzBdKTsNCiAgICAgICQxcnIgPSA1eHBsMmQ1KCJAQCIsJHI1dCk7DQogICAgICAkdjFycz1wMXJzNUYycm0oJDFycik7DQogICAgICBmMnI1MWNoKCR2MXJzIDFzICRrPT4kdikgew0KICAgICAgICAgJCRrPSR2Ow0KICAgICAgfQ0KICAgICAgJHI0bmdrMXMxbiA9ICQxcmdzWzZdOw0KICAgICAgJHA1bjNuajFuZyA9ICQxcmdzW2FdOw0KICAgICAgJHAxXzEzdDJwczQgPSAkMXJnc1tvXTsNCiAgICAgIA0KICAgICAgJHNxbCA9ICJVUERBVEUgIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIFNFVCAiDQogICAgICAgICAgIC4gImQ0c2NoMXJnNV9kdHRtID0gJyRoX2R0dG0nLCINCiAgICAgICAgICAgLiAiZDRzY2gxcmc1ID0gJyRkNHNjaDFyZzUnLCINCiAgICAgICAgICAgLiAiZDRzY2gxcmc1XzRuZjIgPSAnJGQ0c2NoMXJnNV80bmYyJywiDQogICAgICAgICAgIC4gImI1cmsxc19rNW1iMWw0ID0gJyRiNXJrMXNfazVtYjFsNCcsIg0KICAgICAgICAgICAuICJyNWY1cjVyX2NsNG40YyA9ICckcjVmNXI1cl9jbDRuNGMnLCINCiAgICAgICAgICAgLiAicjVmNXI1cl9wcjRtMXJ5YzFyNSA9ICckcjVmNXI1cl9wcjRtMXJ5YzFyNScsIg0KICAgICAgICAgICAuICJyNWY1cjVyXzJ0aDVyaDJzcDR0MWwgPSAnJHI1ZjVyNXJfMnRoNXJoMnNwNHQxbCcsIg0KICAgICAgICAgICAuICJyNWY1cjVyXzIzdHM0ZDVkMmN0MnIgPSAnJHI1ZjVyNXJfMjN0czRkNWQyY3QycicsIg0KICAgICAgICAgICAuICJkNHNjaDFyZzVfM3M1cl80ZCA9ICckM3M1cl80ZCcsIg0KICAgICAgICAgICAuICJkcGpwX25tID0gJyRkcGpwJyINCiAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgDQogICAgICAkc3FsID0gIlJFUExBQ0UgSU5UTyAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF9kNHNjaDFyZzVfczNtbTFyeSAocjRuZ2sxczFuLHA1bjNuajFuZyxwMV8xM3QycHM0LHAxdDQ1bnRfNGQsMWRtNHNzNDJuXzRkLGNyNTF0NWRfM3M1cl80ZCkiDQogICAgICAgICAgIC4gIiBWQUxVRVMgKCckcjRuZ2sxczFuJywnJHA1bjNuajFuZycsJyRwMV8xM3QycHM0JywnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJDNzNXJfNGQnKSI7DQogICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgDQogICAgICAkYjRydGh3NTRnaHQgPSB0cjRtKCRiNHJ0aHc1NGdodCk7DQogICAgICA0ZigkYjRydGh3NTRnaHQhPSIiKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCAycmQ1cl80ZCxyNWxfbjIsNHQ1bV80ZCBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9mNG5kNG5ncyINCiAgICAgICAgICAgICAgLiAiIFdIRVJFIHAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDJial80ZCA9ICciLl9FSFJfQklSVEhXRUlHSFRfRklORC4iJyINCiAgICAgICAgICAgICAgLiAiIEFORCBzdDF0M3NfY2QgPSAnbjJybTFsJyINCiAgICAgICAgICAgICAgLiAiIE9SREVSIEJZIGNyNTF0NWRfZHR0bSBERVNDIExJTUlUIDYiOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgICAgbDRzdCgkMnJkNXJfNGQsJHI1bF9uMiwkNHQ1bV80ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICAgICRiNHJ0aHc1NGdodCA9IF9iY3RyNG0oYmMxZGQoJGI0cnRodzU0Z2h0LDApKTsNCiAgICAgICAgICAgICRzcWwgPSAiVVBEQVRFICIuWE9DUF9QUkVGSVguIjVocl9mNG5kNG5ncyBTRVQgMmJzcnZfdjFsID0gJyRiNHJ0aHc1NGdodCciDQogICAgICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgICAgLiAiIEFORCAycmQ1cl80ZCA9ICckMnJkNXJfNGQnIg0KICAgICAgICAgICAgICAgICAuICIgQU5EIHI1bF9uMiA9ICckcjVsX24yJyINCiAgICAgICAgICAgICAgICAgLiAiIEFORCA0dDVtXzRkID0gJyQ0dDVtXzRkJyINCiAgICAgICAgICAgICAgICAgLiAiIEFORCAyYmpfNGQgPSAnIi5fRUhSX0JJUlRIV0VJR0hUX0ZJTkQuIiciOw0KICAgICAgICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgICAgIA0KICAgICAgNGYoJGQ0c2NoMXJnNSE9IiIpIHsNCiAgICAgICAgIC8vLy8NCiAgICAgICAgIC8qDQogICAgICAgICAkc3FsID0gIlVQREFURSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF9zdDF5IFNFVCAiDQogICAgICAgICAgICAgIC4gInN0MXQzc19jZCA9ICdkNHNjaDFyZzVkJywiDQogICAgICAgICAgICAgIC4gInN0MnBfZHR0bSA9ICckaF9kdHRtJywiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIHN0MXQzc19jZCA9ICduMnJtMWwnIjsNCiAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAqLw0KICAgICAgICAgcjV0M3JuICRkNHNjaDFyZzU7DQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuICJFTVBUWSI7DQogICAgICB9DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9nNXRKTVMzYnN0NHQzdDUoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICBsNHN0KCQyYmpfNGQsJHIybDVfMmJqXzRkKT01eHBsMmQ1KCJ8IiwkMXJnc1swXSk7DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIGMybmM1cHRfNGQgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfMmJqIg0KICAgICAgICAgICAuICIgV0hFUkUgMmJqXzRkID0gJyRyMmw1XzJial80ZCciOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICBsNHN0KCRjMm5jNXB0XzRkKSA9ICRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAkc3FsID0gIlNFTEVDVCBwMXlwbDFuXzRkIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMWRtNHNzNDJuIg0KICAgICAgICAgICAuICIgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgbDRzdCgkcDF5cGwxbl80ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIDEuMmJqXzRkLGIuMmJqX25tIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3IybDVfcGwxbiAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl8yYmogYiBVU0lORygyYmpfNGQpIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5yMmw1XzRkID0gJyRjMm5jNXB0XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLnAxeXBsMW5fNGQgPSAnJHAxeXBsMW5fNGQnIg0KICAgICAgICAgICAuICIgT1JERVIgQlkgYi4yYmpfbm0iOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAkcjV0ID0gMXJyMXkoKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICB3aDRsNShsNHN0KCQyYmpfNGR4LCQyYmpfbm0pPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICRyNXRbXSA9IDFycjF5KCQyYmpfbm0sJDJial80ZHgpOw0KICAgICAgICAgfQ0KICAgICAgICAgcjV0M3JuICRyNXQ7DQogICAgICB9IDVsczUgew0KICAgICAgICAgcjV0M3JuICJFTVBUWSI7DQogICAgICB9DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9zM2JzdDR0M3Q1Sk0oJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcjJsNV8yYmpfNGQgPSAkMXJnc1swXTsNCiAgICAgICQyYmpfNGQgPSAkMXJnc1s2XTsNCiAgICAgICQybGRfcjJsNV8yYmpfNGQgPSAkMXJnc1thXTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJHNxbCA9ICJVUERBVEUgIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9kNDFnIFNFVCINCiAgICAgICAgICAgLiAiIHIybDVfMmJqXzRkID0gJyRyMmw1XzJial80ZCciDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMmJqXzRkID0gJyQyYmpfNGQnIjsNCiAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICB9DQogICANCiAgIA0KICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBwcjJjNWQzcjUgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vDQogICANCiAgIGYzbmN0NDJuIDFwcF80bXAycnRXUHIyYygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgICQxcnJfNGQgPSAxcnIxeSgpOw0KICAgICAgNGYoJDFyZ3NbMF09PSIxbGwiKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCAxLnByMmNfNGQiDQogICAgICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNDFnIDEiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkICE9ICduM2xsNGY0NWQnIg0KICAgICAgICAgICAgICAuICIgT1JERVIgQlkgMS5wcjJjX3N0LDEucHIyY180ZCI7DQogICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICB3aDRsNShsNHN0KCRwcjJjXzRkKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAgICAkMXJyXzRkW10gPSAkcHIyY180ZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkMXJyXzRkW10gPSAkMXJnc1swXTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJHI1dCA9IDFycjF5KCk7DQogICAgICBmMnI1MWNoKCQxcnJfNGQgMXMgJHByMmNfNGQpIHsNCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIDEucHIyY180ZCwxLnByMmNfdHh0LGIuQ09ERSxiLlNUUiwxLnByMmNfc3QsMS5zdDF0M3NfY2QsZC5wcjJjXzRkLDEuc3QxdDVtNW50X2R0dG0iDQogICAgICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNDFnIDEiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gYiBPTiBiLkNPREUgPSAxLnByMmNfY2QiDQogICAgICAgICAgICAgIC4gIiBBTkQgYi5TQUIgPSAnSUNEOUNNX2EwMGknIEFORCBiLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgZCBPTiBkLnAxdDQ1bnRfNGQgPSAxLnAxdDQ1bnRfNGQiDQogICAgICAgICAgICAgIC4gIiBBTkQgZC4xZG00c3M0Mm5fNGQgPSAxLjFkbTRzczQybl80ZCBBTkQgZC53a19wcjJjXzRkID0gMS5wcjJjXzRkIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLnByMmNfNGQgPSAnJHByMmNfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkICE9ICduM2xsNGY0NWQnIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgIGw0c3QoJHdrX3ByMmNfNGQsJHByMmNfdHh0LCRjMmQ1LCRzdHIsJHByMmNfc3QsJHN0MXQzc19jZCwkZHNjX3ByMmMsJHN0MXQ1bTVudF9kdHRtKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgICAgNGYoJGRzY19wcjJjPjApIGMybnQ0bjM1Ow0KICAgICAgICAgICAgNGYoJHByMmNfdHh0PT0iIiYmJHN0ciE9IiIpIHsNCiAgICAgICAgICAgICAgICR4cHIyY190eHQgPSAkc3RyOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICR4cHIyY190eHQgPSAkcHIyY190eHQ7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBNQVgocHIyY180ZCkgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCcgQU5EIDFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIGw0c3QoJHByMmNfNGQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICAkcHIyY180ZCsrOw0KICAgICAgICAgICAgJHNxbCA9ICJJTlNFUlQgSU5UTyAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgKHAxdDQ1bnRfNGQsMWRtNHNzNDJuXzRkLHByMmNfNGQsd2tfcHIyY180ZCxjMmQ1LHByMmNfdHh0LHN0MXQ1bTVudF9kdHRtLHByMmNfc3QsY3I1MXQ1ZF8zczVyXzRkKSINCiAgICAgICAgICAgICAgICAgLiAiIFZBTFVFUyAoJyRwMXQ0NW50XzRkJywnJDFkbTRzczQybl80ZCcsJyRwcjJjXzRkJywnJHdrX3ByMmNfNGQnLCckYzJkNScsJyRwcjJjX3R4dCcsJyRzdDF0NW01bnRfZHR0bScsJyRwcjJjX3N0JywnJDNzNXJfNGQnKSI7DQogICAgICAgICAgICAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgJHI1dFtdID0gMXJyMXkoJHByMmNfNGQsJHhwcjJjX3R4dCwkYzJkNSwkcHIyY19zdCk7IA0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9nNXRXUHIyYygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS5wcjJjXzRkLDEucHIyY190eHQsYi5DT0RFLGIuU1RSLDEucHIyY19zdCwxLnN0MXQzc19jZCxkLnByMmNfNGQiDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNDFnIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gYiBPTiBiLkNPREUgPSAxLnByMmNfY2QiDQogICAgICAgICAgIC4gIiBBTkQgYi5TQUIgPSAnSUNEOUNNX2EwMGknIEFORCBiLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgZCBPTiBkLnAxdDQ1bnRfNGQgPSAxLnAxdDQ1bnRfNGQiDQogICAgICAgICAgIC4gIiBBTkQgZC4xZG00c3M0Mm5fNGQgPSAxLjFkbTRzczQybl80ZCBBTkQgZC53a19wcjJjXzRkID0gMS5wcjJjXzRkIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLnN0MXQzc19jZCAhPSAnbjNsbDRmNDVkJyINCiAgICAgICAgICAgLiAiIE9SREVSIEJZIDEucHIyY19zdCI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAkcjV0ID0gIjxkNHYgY2wxc3M9J2RsNHN0JyBzdHlsNT0nJyAybmNsNGNrPSdkMl80bXAycnRfcHIyYyhcIjFsbFwiKTsnPlM1bTMxPC9kNHY+IjsNCiAgICAgICAgIHdoNGw1KGw0c3QoJHByMmNfNGQsJHByMmNfdHh0LCRjMmQ1LCRzdHIsJHByMmNfc3QsJHN0MXQzc19jZCwkZHNjX3ByMmMpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgIDRmKCRkc2NfcHIyYz4wKSB7DQogICAgICAgICAgICAgICAkZHNjX3N0ID0gImIxY2tncjIzbmQtYzJsMnI6I2RkZGQ1NTsiOw0KICAgICAgICAgICAgICAgJDJuY2w0Y2sgPSAiIjsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkZHNjX3N0ID0gIiI7DQogICAgICAgICAgICAgICAkMm5jbDRjayA9ICIybmNsNGNrPSdkMl80bXAycnRfcHIyYyhcIiRwcjJjXzRkXCIpOyciOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoJHByMmNfdHh0PT0iIiYmJHN0ciE9IiIpIHsNCiAgICAgICAgICAgICAgICRwcjJjX3R4dCA9ICRzdHI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA0ZigkYzJkNSE9IiIpIHsNCiAgICAgICAgICAgICAgICRjMmQ1X3R4dCA9ICImbmJzcDs8c3AxbiBzdHlsNT0nZjJudC13NTRnaHQ6YjJsZDsnPiRjMmQ1PC9zcDFuPiI7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgJGMyZDVfdHh0ID0gIiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA0ZigkcHIyY19zdD09InByNG0xcnkiKSB7DQogICAgICAgICAgICAgICAkY2xyID0gImMybDJyOiNmZm9vb287IjsNCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAkY2xyID0gIiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkcjV0IC49ICI8ZDR2IHN0eWw1PScke2Nscn0ke2RzY19zdH0nICQybmNsNGNrIGNsMXNzPSdkbDRzdCcgPiR7cHIyY190eHR9JHtjMmQ1X3R4dH0gPHNwMW4gc3R5bDU9J2MybDJyOiMwMDAwZmY7Jz4kcHIyY19zdDwvc3Axbj48L2Q0dj4iOw0KICAgICAgICAgfQ0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRyNXQgPSAiPGQ0diBzdHlsNT0ndDV4dC0xbDRnbjpjNW50NXI7YzNyczJyOmQ1ZjEzbHQ7YzJsMnI6Izk5OTsnPiIuX0VNUFRZLiI8L2Q0dj4iOw0KICAgICAgfQ0KICAgICAgcjV0M3JuICRyNXQ7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9icjJ3czVJQ0Q5Q00oJDFyZ3MpIHsNCiAgICAgIHI1cTM0cjVfMm5jNShYT0NQX0RPQ19ST09ULiIvbTJkM2w1cy81aHIvNG5jbDNkNS9kNDFnbjJzNHMucGhwIik7ICAgICAgDQogICAgICAkcDEzNCA9IHRyNG0oJDFyZ3NbMF0pOw0KICAgICAgcjV0M3JuIF9icjJ3czVJQ0Q5Q00oIiIsJHAxMzQpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfczF2NVByMmMoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcHIyY180ZCA9ICQxcmdzWzBdOw0KICAgICAgJGMyZDUgPSAkMXJnc1s2XTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSAkX1NFU1NJT05bIngyY3BfM3M1ciJdLT5nNXRWMXIoIjNzNXJfNGQiKTsNCiAgICAgICRzcWwgPSAiVVBEQVRFICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyBTRVQgIg0KICAgICAgICAgICAuICJjMmQ1ID0gJyRjMmQ1JywiDQogICAgICAgICAgIC4gImNyNTF0NWRfM3M1cl80ZCA9ICckM3M1cl80ZCciDQogICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgcHIyY180ZCA9ICckcHIyY180ZCciOw0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5TVFIsbXJjLkNPREUsYi4yYmpfbm0iDQogICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuX0VIUl9VTUxTREIuIi5NUkNPTlNPIG1yYyBPTiBtcmMuQ09ERSA9IDEuYzJkNSINCiAgICAgICAgICAgLiAiIEFORCBtcmMuczFiID0gJ0lDRDlDTV9hMDBpJyBBTkQgbXJjLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfMmJqIGIgT04gYi4yYmpfNGQgPSAxLjJial80ZCINCiAgICAgICAgICAgLiAiIFdIRVJFIDEucDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS5wcjJjXzRkID0gJyRwcjJjXzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIGw0c3QoJHN0ciwkYzJkNSwkMmJqX25tKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KCSAgCSAkc3FsPSJzNWw1Y3QgYzJkNSBmcjJtICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyB3aDVyNSAxZG00c3M0Mm5fNGQ9JyQxZG00c3M0Mm5fNGQnIDFuZCBwMXQ0NW50XzRkPSckcDF0NDVudF80ZCcgIEFORCBwcjJjXzRkID0gJyRwcjJjXzRkJyI7DQoJICRyNXMzbHQ9ICRkYi0+cTM1cnkoJHNxbCk7DQoJIGw0c3QoJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQoJICAkc2NtZz0iczVsNWN0IGNtZyBmcjJtIGw0c3RfcHIyYzVkM3I1IHdoNXI1IHByMmM9JyRjMmQ1JyI7DQoJICAgJGRjbWcgPSAkZGItPnEzNXJ5KCRzY21nKTsNCgkgICA0ZigkZGItPmc1dFIyd3NOM20oJGRjbWcpPjApIHsNCgkgICB3aDRsNShsNHN0KCRjbWcpPSRkYi0+ZjV0Y2hSMncoJGRjbWcpKXsNCgkgICAkM3BkPSIzcGQxdDUgc3A1YzQxbGdyMjNwcyBzNXQgc3QxdDNzPTYgd2g1cjUgQzJkNT0nJGNtZyciOw0KCQkgJGRiLT5xMzVyeSgkM3BkKTsNCgkJIH0NCgkJIH0NCiAgICAgIDRmKCQyYmpfbm09PSIiKSB7DQogICAgICAgICAkMmJqX25tID0gJHN0cjsNCiAgICAgIH0NCiAgICAgICRyNXQgPSAxcnIxeSgkcHIyY180ZCwkMmJqX25tLCRjMmQ1KTsNCiAgICAgIHI1dDNybiAkcjV0Ow0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfcjV2NXJ0UHIyYygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwcjJjXzRkID0gJDFyZ3NbMF07DQogICAgICAkcDF0NDVudF80ZCA9ICRfU0VTU0lPTlsiNWhyX3AxdDQ1bnRfNGQiXTsNCiAgICAgICQxZG00c3M0Mm5fNGQgPSAkX1NFU1NJT05bIjVocl9tcl8xZG00c3M0Mm5fNGQiXTsNCiAgICAgICRwcjJjX3R4dCA9ICIiOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgbXJjLlNUUixtcmMuQ09ERSwyLjJial9ubSINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIDEiDQogICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gbXJjIE9OIG1yYy5DT0RFID0gMS5jMmQ1Ig0KICAgICAgICAgICAuICIgQU5EIG1yYy5zMWIgPSAnSUNEOUNNX2EwMGknIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl8yYmogMiBPTiAyLjJial80ZCA9IDEuMmJqXzRkIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgLiAiIEFORCAxLnByMmNfNGQgPSAnJHByMmNfNGQnIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgbDRzdCgkc3RyLCQ0Y2RfYzJkNSwkMmJqX25tKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgNGYoJDJial9ubSE9IiIpIHsNCiAgICAgICAgICRwcjJjX3R4dCA9ICQyYmpfbm07DQogICAgICB9IDVsczUgew0KICAgICAgICAgNGYoJHN0ciE9IiIpIHsNCiAgICAgICAgICAgICRwcjJjX3R4dCA9ICRzdHI7DQogICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgJHByMmNfdHh0ID0gX0VNUFRZOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgJHI1dCA9IDFycjF5KCRwcjJjXzRkLCRzdHIsJHByMmNfdHh0LCQ0Y2RfYzJkNSk7DQogICAgICByNXQzcm4gJHI1dDsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gMXBwX3M1dFByMmMoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcHIyY180ZCA9ICQxcmdzWzBdOw0KICAgICAgJGMyZDUgPSAkMXJnc1s2XTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDJial9ubSA9ICIiOw0KICAgICAgJHNxbCA9ICJTRUxFQ1QgMS4ycmQ1cl80ZCwxLjJial80ZCxiLjJial9ubSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAxIg0KICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl8yYmogYiBVU0lORygyYmpfNGQpIg0KICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMS4xZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMS5wcjJjXzRkID0gJyRwcjJjXzRkJyI7DQogICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgIGw0c3QoJDJyZDVyXzRkLCQyYmpfNGQsJDJial9ubSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5DVUksIG1yYy5TVFIsIG1yYy5DT0RFIg0KICAgICAgICAgICAuICIgRlJPTSAiLl9FSFJfVU1MU0RCLiIuTVJDT05TTyBtcmMiDQogICAgICAgICAgIC4gIiBXSEVSRSBtcmMuQ09ERSA9ICckYzJkNSciDQogICAgICAgICAgIC4gIiBBTkQgbXJjLlNBQiA9ICdJQ0Q5Q01fYTAwaSciDQogICAgICAgICAgIC4gIiBBTkQgbXJjLlRUWSBJTiAoJ1BYJywnUFQnKSINCiAgICAgICAgICAgLiAiIE9SREVSIEJZIG1yYy5DT0RFIjsNCiAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgJDRzXzRjZCA9IDA7DQogICAgICAkcHIyY19ubSA9ICIiOw0KICAgICAgJHByMmNfYzJkNSA9ICIiOw0KICAgICAgJHByMmNfbm0gPSAiIjsNCiAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICB3aDRsNShsNHN0KCQyYmpfNGQsJDJial9ubXgsJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgIDRmKCRjMmQ1IT0iIikgew0KICAgICAgICAgICAgICAgJDRzXzRjZCA9IDY7DQogICAgICAgICAgICAgICAkNGNkX2MyZDUgPSAkYzJkNTsNCiAgICAgICAgICAgICAgICRwcjJjX25tID0gJDJial9ubXg7DQogICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgICAgIHI1dDNybiAxcnIxeSgkNGNkX2MyZDUsJHByMmNfbm0sJDJial9ubSk7DQogICAgICB9DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9kNWw1dDVQcjJjKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHByMmNfNGQgPSAkMXJnc1swXTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KCQkkc3FsPSJzNWw1Y3QgYzJkNSBmcjJtICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyB3aDVyNSAxZG00c3M0Mm5fNGQ9JyQxZG00c3M0Mm5fNGQnIDFuZCBwMXQ0NW50XzRkPSckcDF0NDVudF80ZCcgQU5EIHByMmNfNGQgPSAnJHByMmNfNGQnIjsNCgkgJHI1czNsdD0gJGRiLT5xMzVyeSgkc3FsKTsNCgkgbDRzdCgkYzJkNSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCgkgICRzY21nPSJzNWw1Y3QgY21nLGdyMjNwX2MyZDUgZnIybSBsNHN0X3ByMmM1ZDNyNSB3aDVyNSBwcjJjPSckYzJkNSciOw0KCSAgICRkY21nID0gJGRiLT5xMzVyeSgkc2NtZyk7DQoJICAgNGYoJGRiLT5nNXRSMndzTjNtKCRkY21nKT4wKSB7DQoJICAgd2g0bDUobDRzdCgkY21nLCRncjIzcF9jMmQ1KT0kZGItPmY1dGNoUjJ3KCRkY21nKSl7DQoJICAgJDNwZD0iM3BkMXQ1IHNwNWM0MWxncjIzcHMgczV0IHN0MXQzcz0wIHdoNXI1IEMyZDU9JyRjbWcnIjsNCgkJICRkYi0+cTM1cnkoJDNwZCk7DQoJCSAkc3FsYT0iM3BkMXQ1ICIuWE9DUF9QUkVGSVguIjVocl9zcDVjNDFsIHM1dCAkZ3IyM3BfYzJkNT0nJyB3aDVyNSAxZG00c3M0Mm5fNGQ9JyQxZG00c3M0Mm5fNGQnIDFuZCBwMXQ0NW50XzRkPSckcDF0NDVudF80ZCcgQU5EICRncjIzcF9jMmQ1PSckY21nJyI7DQoJCSAkZGItPnEzNXJ5KCRzcWxhKTsNCgkJIH0NCgkJIH0JDQoJJHNxbCA9ICJERUxFVEUgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgV0hFUkUgcDF0NDVudF80ZCA9ICckcDF0NDVudF80ZCciDQogICAgICAgICAgIC4gIiBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIEFORCBwcjJjXzRkID0gJyRwcjJjXzRkJyI7DQoJCSAgIA0KICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCiAgIA0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfNWQ0dFByMmMoJDFyZ3MpIHsNCiAgICAgICRkYj0mRDF0MWIxczU6Omc1dEluc3QxbmM1KCk7DQogICAgICAkcHIyY180ZCA9ICQxcmdzWzBdOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkM3M1cl80ZCA9IGc1dFVzNXJJRCgpOw0KICAgICAgJDJial80ZCA9ICIiOw0KICAgICAgNGYoJHByMmNfNGQ9PSJuNXciKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCBNQVgocHIyY180ZCkgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxZG00c3M0Mm5fNGQgPSAnJDFkbTRzczQybl80ZCciOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICBsNHN0KCRwcjJjXzRkKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpOw0KICAgICAgICAgJHByMmNfNGQrKzsNCiAgICAgICAgICRzcWwgPSAiSU5TRVJUIElOVE8gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIChwMXQ0NW50XzRkLDFkbTRzczQybl80ZCxwcjJjXzRkLGNyNTF0NWRfM3M1cl80ZCkiDQogICAgICAgICAgICAgIC4gIiBWQUxVRVMgKCckcDF0NDVudF80ZCcsJyQxZG00c3M0Mm5fNGQnLCckcHIyY180ZCcsJyQzczVyXzRkJykiOw0KICAgICAgICAgJGRiLT5xMzVyeSgkc3FsKTsNCgkJIA0KICAgICAgfSA1bHM1IHsNCiAgICAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5TVFIsbXJjLkNPREUsMS4ycmQ1cl80ZCwxLjJial80ZCwyLjJial9ubSINCiAgICAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIDEiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gbXJjIE9OIG1yYy5DT0RFID0gMS5jMmQ1Ig0KICAgICAgICAgICAgICAuICIgQU5EIG1yYy5TQUIgPSAnSUNEOUNNX2EwMGknIEFORCBtcmMuVFRZIElOICgnUFgnLCdQVCcpIg0KICAgICAgICAgICAgICAuICIgTEVGVCBKT0lOICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzJyZDVyIHAgT04gcC4ycmQ1cl80ZCA9IDEuMnJkNXJfNGQiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyXzJiaiAyIE9OIDIuMmJqXzRkID0gcC4yYmpfNGQiDQogICAgICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEucHIyY180ZCA9ICckcHIyY180ZCciOw0KICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICBsNHN0KCRzdHIsJGMyZDUsJDJyZDVyXzRkLCQyYmpfNGQsJDJial9ubSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCgkJICRzcWw9InM1bDVjdCBjMmQ1IGZyMm0gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIHdoNXI1IDFkbTRzczQybl80ZD0nJDFkbTRzczQybl80ZCcgMW5kIHAxdDQ1bnRfNGQ9JyRwMXQ0NW50XzRkJyAgQU5EIHByMmNfNGQgPSAnJHByMmNfNGQnIjsNCgkgJHI1czNsdD0gJGRiLT5xMzVyeSgkc3FsKTsNCgkgbDRzdCgkYzJkNSk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCgkgICRzY21nPSJzNWw1Y3QgY21nIGZyMm0gbDRzdF9wcjJjNWQzcjUgd2g1cjUgcHIyYz0nJGMyZDUnIjsNCgkgICAkZGNtZyA9ICRkYi0+cTM1cnkoJHNjbWcpOw0KCSAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkZGNtZyk+MCkgew0KCSAgIGw0c3QoJGNtZyk9JGRiLT5mNXRjaFIydygkZGNtZyk7DQoJICAgJDNwZD0iM3BkMXQ1IHNwNWM0MWxncjIzcHMgczV0IHN0MXQzcz02IHdoNXI1IEMyZDU9JyRjbWcnIjsNCgkJICRkYi0+cTM1cnkoJDNwZCk7DQoJCSB9DQoJCSANCiAgICAgICAgIDRmKCQyYmpfbm09PSIiKSB7DQogICAgICAgICAgICAkMmJqX25tID0gJHN0cjsNCiAgICAgICAgIH0NCiAgICAgICAgIDRmKCQycmQ1cl80ZCE9IiIpIHsNCiAgICAgICAgICAgICRzcWwgPSAiU0VMRUNUIG1yYy5DT0RFLG1yYy5TVFIiDQogICAgICAgICAgICAgICAgIC4gIiBGUk9NIG0xcF80Y2Q5IGIiDQogICAgICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5fRUhSX1VNTFNEQi4iLk1SQ09OU08gbXJjIE9OIG1yYy5DT0RFID0gYi40Y2Q5Y21fY2QiDQogICAgICAgICAgICAgICAgIC4gIiBBTkQgbXJjLlNBQiA9ICdJQ0Q5Q01fYTAwaScgQU5EIG1yYy5UVFkgSU4gKCdQWCcsJ1BUJykiDQogICAgICAgICAgICAgICAgIC4gIiBXSEVSRSBiLjJial80ZCA9ICckMmJqXzRkJyI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICAgICAkMWx0ID0gIjx0cj48dGQ+QWx0NXJuMXQ0ZiA6IDwvdGQ+PHRkPjx0MWJsNT48dGIyZHk+IjsNCiAgICAgICAgICAgICAgIHdoNGw1KGw0c3QoJGMyZDVfbTFwLCRzdHJfbTFwKT0kZGItPmY1dGNoUjJ3KCRyNXMzbHQpKSB7DQogICAgICAgICAgICAgICAgICA0ZigkYzJkNV9tMXA9PSRjMmQ1KSB7DQogICAgICAgICAgICAgICAgICAgICAkY2tzdCA9ICJjaDVjazVkPSc2JyI7DQogICAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAgJGNrc3QgPSAiIjsNCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICQxbHQgLj0gIjx0cj48dGQ+PDRucDN0IDJuY2w0Y2s9J18xZGRJQ0Q5Q00oXCJcIixcIiRjMmQ1X20xcFwiLG4zbGwsbjNsbCk7JyAkY2tzdCA0ZD0nJGMyZDVfbTFwJyB0eXA1PSdyMWQ0MicgbjFtNT0nY2ttMXBfNGNkOScvPjwvdGQ+PHRkPjxsMWI1bCBjbDFzcz0neGxuaycgZjJyPSckYzJkNV9tMXAnPjxzcDFuIHN0eWw1PSdmMm50LXc1NGdodDpiMmxkOyc+JGMyZDVfbTFwPHNwMW4+IDxzcDFuIHN0eWw1PSdmMm50LXc1NGdodDpuMnJtMWw7Jz4kc3RyX20xcDwvc3Axbj48L2wxYjVsPjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgJDFsdCAuPSAiPC90YjJkeT48L3QxYmw1PjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgDQogICAgICByNXEzNHI1XzJuYzUoWE9DUF9ET0NfUk9PVC4iL20yZDNsNXMvNWhyLzRuY2wzZDUvZDQxZ24yczRzLnBocCIpOw0KICAgICAgJHI1dCA9ICI8dDFibDUgY2wxc3M9J3lmcm0nIHc0ZHRoPSc2MDAlJyA0ZD0ncHIyY18ke3ByMmNfNGR9JyBzdHlsNT0nbTFyZzRuLWIydHQybTp1cHg7Jz4iDQogICAgICAgICAgIC4gIjxjMmxncjIzcD48YzJsIHc0ZHRoPSc2aTAnLz48YzJsIHc0ZHRoPScqJy8+PC9jMmxncjIzcD48dGIyZHk+Ig0KICAgICAgICAgICAuICI8dHI+Ig0KICAgICAgICAgICAuICI8dGQ+VDRuZDFrMW4gOiA8L3RkPjx0ZD4iDQogICAgICAgICAgIC4gIjxkNHYgNGQ9JzRjZDljbV8ke3ByMmNfNGR9JyBzdHlsNT0ndzRkdGg6OTAlO20xcmc0bi10MnA6YXB4OztjMmwycjojb29mO2YybnQtdzU0Z2h0Om4ycm0xbDtwMWRkNG5nOnVweDsnPiINCiAgICAgICAgICAgICAgIC4gIjxzcDFuIHN0eWw1PSdmMm50LXc1NGdodDpiMmxkOycgNGQ9J3NwcjJjYzJkNSc+JGMyZDU8L3NwMW4+IDxzcDFuIDRkPSdzcHIyY24xbTUnPiRzdHI8L3NwMW4+Ig0KICAgICAgICAgICAuICI8L2Q0dj48L3RkPjwvdHI+Ig0KICAgICAgICAgICAuICI8dHI+PHRkPklDRC05LUNNIDogPC90ZD48dGQ+PGQ0dj48dDFibDU+PHRyPjx0ZCBzdHlsNT0nZjJudC13NTRnaHQ6bjJybTFsOyc+QzFyNCA6IDw0bnAzdCB0eXA1PSd0NXh0JyA0ZD0ncXByMmMnLz48L3RkPjx0ZCBzdHlsNT0nZjJudC13NTRnaHQ6bjJybTFsOyc+MXQxMyBbPHNwMW4gY2wxc3M9J3hsbmsnIDJuY2w0Y2s9J3RnbGJyMndzNUlDRDlDTSh0aDRzLDV2NW50KSc+YnIyd3M1PC9zcDFuPl08L3RkPjwvdHI+PC90MWJsNT48L2Q0dj4iDQogICAgICAgICAgIC4gIjxkNHYgNGQ9J19icjJ3czVySUNEOUNNJyBzdHlsNT0ncDFkZDRuZzp1cHg7ZDRzcGwxeTpuMm41O2YybnQtdzU0Z2h0Om4ycm0xbDsnPjwvZDR2PiINCiAgICAgICAgICAgLiAiPC90ZD48L3RyPiINCiAgICAgICAgICAgLiAkMWx0DQogICAgICAgICAgIC4gIjx0cj48dGQgYzJsc3Axbj0nYSc+Ig0KICAgICAgICAgICAuICI8NG5wM3QgdHlwNT0naDRkZDVuJyBuMW01PSdjMmQ1XyR7cHIyY180ZH0nIDRkPSdjMmQ1XyR7cHIyY180ZH0nIHYxbDM1PSckYzJkNScvPiINCiAgICAgICAgICAgLiAiPDRucDN0IGNsMXNzPSdidG5kNWYnIDJuY2w0Y2s9J3MxdjVfcHIyYygke3ByMmNfNGR9LHRoNHMsNXY1bnQpOycgdHlwNT0nYjN0dDJuJyB2MWwzNT0nIi5fU0FWRS4iJy8+Jm5ic3A7Ig0KICAgICAgICAgICAuICI8NG5wM3QgMm5jbDRjaz0nYzFuYzVsXzVkNHRfcHIyYygke3ByMmNfNGR9LHRoNHMsNXY1bnQpOycgdHlwNT0nYjN0dDJuJyB2MWwzNT0nIi5fQ0FOQ0VMLiInLz4mbmJzcDsmbmJzcDsiDQogICAgICAgICAgIC4gIjw0bnAzdCAybmNsNGNrPSdkNWxfcHIyYygke3ByMmNfNGR9LHRoNHMsNXY1bnQpOycgdHlwNT0nYjN0dDJuJyB2MWwzNT0nIi5fREVMRVRFLiInLz4iDQogICAgICAgICAgIC4gIjwvdGQ+PC90cj4iDQogICAgICAgICAgIC4gIjwvdGIyZHk+PC90MWJsNT4iOw0KICAgICAgcjV0M3JuIDFycjF5KCRwcjJjXzRkLCRyNXQpOw0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfczUxcmNoUHIyYygkMXJncykgew0KICAgICAgcjVxMzRyNV8ybmM1KFhPQ1BfRE9DX1JPT1QuIi9tMmQzbDVzLzVoci80bmNsM2Q1L2Q0MWduMnM0cy5waHAiKTsNCiAgICAgIHI1dDNybiBfczUxcmNoUHIyYygkMXJnc1swXSk7DQogICB9DQogICANCiAgIGYzbmN0NDJuIDFwcF9nNXRQcjJjKCQxcmdzKSB7DQogICAgICAkZGI9JkQxdDFiMXM1OjpnNXRJbnN0MW5jNSgpOw0KICAgICAgJHAxdDQ1bnRfNGQgPSAkX1NFU1NJT05bIjVocl9wMXQ0NW50XzRkIl07DQogICAgICAkMWRtNHNzNDJuXzRkID0gJF9TRVNTSU9OWyI1aHJfbXJfMWRtNHNzNDJuXzRkIl07DQogICAgICAkc3FsID0gIlNFTEVDVCAxLjJyZDVyXzRkLDEuMmJqXzRkLDIuMmJqX25tLDEuc3QxdDNzX2NkLGQucHIyY180ZCINCiAgICAgICAgICAgLiAiIEZST00gIi5YT0NQX1BSRUZJWC4iNWhyX3AxdDQ1bnRfMnJkNXIgMSINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfMmJqIDIgT04gMi4yYmpfNGQgPSAxLjJial80ZCINCiAgICAgICAgICAgLiAiIExFRlQgSk9JTiAiLlhPQ1BfUFJFRklYLiI1aHJfZDRzY2gxcmc1X3ByMmMgZCBPTiBkLnAxdDQ1bnRfNGQgPSAxLnAxdDQ1bnRfNGQiDQogICAgICAgICAgIC4gIiBBTkQgZC4xZG00c3M0Mm5fNGQgPSAxLjFkbTRzczQybl80ZCBBTkQgZC4ycmQ1cl80ZCA9IDEuMnJkNXJfNGQiDQogICAgICAgICAgIC4gIiBXSEVSRSAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkIE5PVCBJTiAoJzFiMnJ0NWQnLCdjMW5jNWxsNWQnLCduM2xsNGY0NWQnKSINCiAgICAgICAgICAgLiAiIE9SREVSIEJZIDEuMnJkNXJfNGQiOw0KICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk+MCkgew0KICAgICAgICAgJHI1dCA9ICI8ZDR2IGNsMXNzPSdkbDRzdCcgc3R5bDU9JycgMm5jbDRjaz0nZDJfNG1wMnJ0X2Q0MWcoXCIxbGxcIik7Jz5TNW0zMTwvZDR2PiI7DQogICAgICAgICB3aDRsNShsNHN0KCQycmQ1cl80ZCwkMmJqXzRkLCQyYmpfbm0sJHN0MXQzc19jZCwkcHIyY180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KSkgew0KICAgICAgICAgICAgNGYoJHByMmNfNGQ+MCkgew0KICAgICAgICAgICAgICAgJHByMmNfc3QgPSAiYjFja2dyMjNuZC1jMmwycjojZGRkZDU1OyI7DQogICAgICAgICAgICAgICAkMm5jbDRjayA9ICIiOw0KICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICRwcjJjX3N0ID0gIiI7DQogICAgICAgICAgICAgICAkMm5jbDRjayA9ICIybmNsNGNrPSdkMl80bXAycnRfcHIyYyhcIiQycmQ1cl80ZFwiKTsnIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRyNXQgLj0gIjxkNHYgc3R5bDU9JyR7cHIyY19zdH0nICQybmNsNGNrIGNsMXNzPSdkbDRzdCc+JHsyYmpfbm19PC9kNHY+IjsNCiAgICAgICAgIH0NCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkcjV0ID0gIjxkNHYgc3R5bDU9J3Q1eHQtMWw0Z246YzVudDVyO2MzcnMycjpkNWYxM2x0O2MybDJyOiM5OTk7Jz4iLl9FTVBUWS4iPC9kNHY+IjsNCiAgICAgIH0NCiAgICAgIHI1dDNybiAkcjV0Ow0KICAgfQ0KICAgDQogICBmM25jdDQybiAxcHBfNG1wMnJ0UHIyYygkMXJncykgew0KICAgICAgJGRiPSZEMXQxYjFzNTo6ZzV0SW5zdDFuYzUoKTsNCiAgICAgICRwMXQ0NW50XzRkID0gJF9TRVNTSU9OWyI1aHJfcDF0NDVudF80ZCJdOw0KICAgICAgJDFkbTRzczQybl80ZCA9ICRfU0VTU0lPTlsiNWhyX21yXzFkbTRzczQybl80ZCJdOw0KICAgICAgJDNzNXJfNGQgPSBnNXRVczVySUQoKTsNCiAgICAgICQxcnJfNGQgPSAxcnIxeSgpOw0KICAgICAgNGYoJDFyZ3NbMF09PSIxbGwiKSB7DQogICAgICAgICAkc3FsID0gIlNFTEVDVCAxLjJyZDVyXzRkIg0KICAgICAgICAgICAgICAuICIgRlJPTSAiLlhPQ1BfUFJFRklYLiI1aHJfcDF0NDVudF8ycmQ1ciAxIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS5wMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLjFkbTRzczQybl80ZCA9ICckMWRtNHNzNDJuXzRkJyINCiAgICAgICAgICAgICAgLiAiIEFORCAxLnN0MXQzc19jZCBOT1QgSU4gKCcxYjJydDVkJywnYzFuYzVsbDVkJywnbjNsbDRmNDVkJykiDQogICAgICAgICAgICAgIC4gIiBPUkRFUiBCWSAxLjJyZDVyXzRkIjsNCiAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgNGYoJGRiLT5nNXRSMndzTjNtKCRyNXMzbHQpPjApIHsNCiAgICAgICAgICAgIHdoNGw1KGw0c3QoJGQ0MWdfNGQpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCkpIHsNCiAgICAgICAgICAgICAgICQxcnJfNGRbXSA9ICQycmQ1cl80ZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgIH0NCiAgICAgIH0gNWxzNSB7DQogICAgICAgICAkMXJyXzRkW10gPSAkMXJnc1swXTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJHI1dCA9IDFycjF5KCk7DQogICAgICBmMnI1MWNoKCQxcnJfNGQgMXMgJDJyZDVyXzRkKSB7DQogICAgICAgICAkYzJkNSA9ICIiOw0KICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgMS4ycmQ1cl80ZCwxLjJial80ZCwyLjJial9ubSwxLnN0MXQzc19jZCxkLnByMmNfNGQiDQogICAgICAgICAgICAgIC4gIiBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9wMXQ0NW50XzJyZDVyIDEiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyXzJiaiAyIE9OIDIuMmJqXzRkID0gMS4yYmpfNGQiDQogICAgICAgICAgICAgIC4gIiBMRUZUIEpPSU4gIi5YT0NQX1BSRUZJWC4iNWhyX2Q0c2NoMXJnNV9wcjJjIGQgT04gZC5wMXQ0NW50XzRkID0gMS5wMXQ0NW50XzRkIg0KICAgICAgICAgICAgICAuICIgQU5EIGQuMWRtNHNzNDJuXzRkID0gMS4xZG00c3M0Mm5fNGQgQU5EIGQuMnJkNXJfNGQgPSAxLjJyZDVyXzRkIg0KICAgICAgICAgICAgICAuICIgV0hFUkUgMS4ycmQ1cl80ZCA9ICckMnJkNXJfNGQnIEFORCAxLnAxdDQ1bnRfNGQgPSAnJHAxdDQ1bnRfNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIg0KICAgICAgICAgICAgICAuICIgQU5EIDEuc3QxdDNzX2NkIE5PVCBJTiAoJzFiMnJ0NWQnLCdjMW5jNWxsNWQnLCduM2xsNGY0NWQnKSI7DQogICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICBsNHN0KCQycmQ1cl80ZCwkMmJqXzRkLCQyYmpfbm0sJHN0MXQzc19jZCwkcHIyY180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICAgIDRmKCRwcjJjXzRkPjApIGMybnQ0bjM1Ow0KICAgICAgICAgICAgDQogICAgICAgICAgICAkc3FsID0gIlNFTEVDVCBjMjNudCgqKSAxcyBjbnQsYzJkNSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyBXSEVSRSAyYmpfNGQgPSAnJDJial80ZCcgR1JPVVAgQlkgYzJkNSBPUkRFUiBCWSBjbnQgREVTQyI7DQogICAgICAgICAgICAkcjVzM2x0ID0gJGRiLT5xMzVyeSgkc3FsKTsNCiAgICAgICAgICAgIDRmKCRkYi0+ZzV0UjJ3c04zbSgkcjVzM2x0KT4wKSB7DQogICAgICAgICAgICAgICBsNHN0KCRjbnQsJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgJHNxbCA9ICJTRUxFQ1QgNGNkOWNtX2NkIEZST00gbTFwXzRjZDkgV0hFUkUgMmJqXzRkID0gJyQyYmpfNGQnIExJTUlUIDYiOw0KICAgICAgICAgICAgICAgJHI1czNsdCA9ICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAgICAgICA0ZigkZGItPmc1dFIyd3NOM20oJHI1czNsdCk9PTYpIHsNCiAgICAgICAgICAgICAgICAgIGw0c3QoJGMyZDUpPSRkYi0+ZjV0Y2hSMncoJHI1czNsdCk7DQogICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgICRzcWwgPSAiU0VMRUNUIE1BWChwcjJjXzRkKSBGUk9NICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyBXSEVSRSBwMXQ0NW50XzRkID0gJyRwMXQ0NW50XzRkJyBBTkQgMWRtNHNzNDJuXzRkID0gJyQxZG00c3M0Mm5fNGQnIjsNCiAgICAgICAgICAgICRyNXMzbHQgPSAkZGItPnEzNXJ5KCRzcWwpOw0KICAgICAgICAgICAgbDRzdCgkcHIyY180ZCk9JGRiLT5mNXRjaFIydygkcjVzM2x0KTsNCiAgICAgICAgICAgICRwcjJjXzRkKys7DQogICAgICAgICAgICAkc3FsID0gIklOU0VSVCBJTlRPICIuWE9DUF9QUkVGSVguIjVocl9kNHNjaDFyZzVfcHIyYyAocDF0NDVudF80ZCwxZG00c3M0Mm5fNGQscHIyY180ZCwycmQ1cl80ZCwyYmpfNGQsYzJkNSxzdDF0NW01bnRfZHR0bSxjcjUxdDVkXzNzNXJfNGQpIg0KICAgICAgICAgICAgICAgICAuICIgVkFMVUVTICgnJHAxdDQ1bnRfNGQnLCckMWRtNHNzNDJuXzRkJywnJHByMmNfNGQnLCckMnJkNXJfNGQnLCckMmJqXzRkJywnJGMyZDUnLCckc3QxdDVtNW50X2R0dG0nLCckM3M1cl80ZCcpIjsNCiAgICAgICAgICAgICRkYi0+cTM1cnkoJHNxbCk7DQogICAgICAgICAgICAkcjV0W10gPSAxcnIxeSgkcHIyY180ZCwkMmJqX25tLCRjMmQ1KTsgDQogICAgICAgICB9DQogICAgICB9DQogICAgICByNXQzcm4gJHI1dDsNCiAgIH0NCiAgIA0KICAgZjNuY3Q0Mm4gcjRwX2QxdDUoJGQxdDUpIHsNCgkJbDRzdCgkZCwkbSwkeSkgPSA1eHBsMmQ1KCcvJywgJGQxdDUpOw0KCQkNCgkJcjV0M3JuICRtLiIvIi4kZC4iLyIuJHk7DQogICB9DQogICANCiAgIA0KfQ0KDQp9IC8vLyBFSFJfQ0xBU1NfQUpBWERJU0NIQVJHRV9ERUZJTkVEDQo=';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>

Function Calls

base64_decode 1

Variables

$_F index.php
$_X Pz48P3BocA0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t..

Stats

MD5 d9f5dd735898b34da1bb63f9df14e135
Eval Count 1
Decode Time 1776 ms