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 ############################################################################### ..

Decoded Output download

<?php 
 
############################################################################### 
# PHP Suchscript - Version vom 12.07.2011                                     # 
# copyright webdesign weisshart                                               # 
# http://webdesign.weisshart.de                                               # 
# dieser copyright Hinweis darf nicht entfernt werden!                        # 
#                                                                             # 
# Sie knnen dieses Script kostenlos einsetzen,                               # 
# solange Sie die Links auf webdesign.weisshart.de unverndert intakt lassen. # 
# Wenn Sie die Links auf webdesign.weisshart.de entfernen wollen,             # 
# knnen Sie eine Lizenz erwerben bei                                         # 
# http://webdesign.weisshart.de/suchen-lizenz.php                             # 
############################################################################### 
include("search_config.php"); 
 
$NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ="Ly8gTmV0dCwgZGFzcyBTaWUgc2ljaCBmdWVyIG1laW5lbiBzb3VyY2Vjb2RlIGludGVyZXNzaWVyZW4uIERlciBMaW5rIGF1ZiB3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIGRhcmYgbnVyIG5hY2ggRXJ3ZXJiIGVpbmVyIExpemVueiBlbnRmZXJudCB3ZXJkZW4hDS8vIEBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsICcxJyk7DQ1zZXRsb2NhbGUgKExDX0NUWVBFLCAnZGVfREUnKTsgLy8gc3RydG9sb3dlciBhdWNoIG1pdCBVbWxhdXRlbg0NaWYgKCFAaW5pX2dldCgnc2FmZV9tb2RlJykpIEBzZXRfdGltZV9saW1pdCg0NSk7DSRtdGltZSA9IG1pY3JvdGltZSgpOyAkbXRpbWUgPSBleHBsb2RlKCAnICcsICRtdGltZSk7ICRtdGltZSA9ICRtdGltZVsxXSArICRtdGltZVswXTsNJHN1Y2hfc3RhcnQgPSAkbXRpbWU7DQ0kdmVyc2lvbj0gJzwhLS0gVmVyc2lvbiAxMi4wNy4xMSAtLT4nOw0NDWlmIChwaHB2ZXJzaW9uKCkgPCAnNC4zLjAnKSB7DQllY2hvICI8cD5EaWVzZXMgU2NyaXB0IGVyZm9yZGVydCBQSFAgVmVyc2lvbiA0LjMuMCBvZGVyIGgmb3VtbDtoZXIhPGJyIC8+IjsNCWVjaG8gImF1ZiBJaHJlbSBTZXJ2ZXIgbCZhdW1sO3VmdCBhYmVyIFBIUCBWZXJzaW9uICIucGhwdmVyc2lvbigpLiIuPC9wPiI7DQlleGl0Ow19DQ0kbWV0aG9kID0gJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ107DQ0kYXJyYXkgPSAiIjsNJGF1c2dhYmUgPSIiOw0kZm91bmQgPSAwOw0kZSA9ICIiOw0kc29ydGhpbndlaXMgPSAiIjsNJGxpbmsgPSAiIjsNJGR1cmNoc3VjaHQgPSAwOw0NaWYgKCFpc3NldCgkcGx1cmFsKSl7DQkkcGx1cmFsID0gIm4iOw19DQ1pZiAoIWlzc2V0KCRwdW5jdCkpew0JJHB1bmN0ID0gIm5vIjsNfQ0NaWYgKCFpc3NldCgkbWF4bXNnKSl7DQkkbWF4bXNnID0gMTAwOw19DQ1pZiAoIWlzc2V0KCRkYXRlZm9ybSkpew0JJGRhdGVmb3JtID0gImRlIjsNfQ0NaWYgKCFpc3NldCgkc3VjaGRhdWVyKSl7DQkkc3VjaGRhdWVyID0gIlNla3VuZGVuIjsNfQ0NaWYgKCFpc3NldCgkYmVzY2hyZWliKSl7DQkkYmVzY2hyZWliID0gIkJlc2NocmVpYnVuZzogIjsNfQ0NaWYgKCFpc3NldCgkdHJlZmYpKXsNCSR0cmVmZiA9ICJUcmVmZmVyIjsNfQ0NaWYgKCFpc3NldCgkZmlsZWRhdGUpKXsNCSRmaWxlZGF0ZSA9ICJ6dWxldHp0IGdlJmF1bWw7bmRlcnQgYW0gIjsNfQ0NaWYgKCFpc3NldCgkbm9yZXN1bHQpKXsNCSRub3Jlc3VsdCA9ICI8cD48YnIgLz5FcyB3dXJkZW4gbGVpZGVyIGtlaW5lIGV4YWt0ZW4gJlV1bWw7YmVyZWluc3RpbW11bmdlbiBtaXQgZGVtIGVpbmdlZ2ViZW5lbiBTdWNoYmVncmlmZiBnZWZ1bmRlbi48YnIgLz5WaWVsbGVpY2h0IHdvbGxlbiBTaWUgZXMgbWl0IGVpbmVtIGFsbGdlbWVpbmVyZW4gU3VjaGJlZ3JpZmYgdmVyc3VjaGVuLjwvcD4iOw19DQ1pZiAoIWlzc2V0KCR2b3JzY2hsYWcpKXsNCSR2b3JzY2hsYWcgPSAiT2RlciBTaWUgdmVyc3VjaGVuIGVzIGVpbmZhY2ggbWFsIG1pdCI7DX0NDWlmICghaXNzZXQoJG1pbmxlbmd0aCkpew0JJG1pbmxlbmd0aCA9ICI8cD48YnIgLz5HZWJlbiBTaWUgYml0dGUgZWluZW4gU3VjaGJlZ3JpZmYgdm9uIG1pbmRlc3RlbnMmbmJzcDsiLiRsZW5ndGguIiZuYnNwO0J1Y2hzdGFiZW4gTCZhdW1sO25nZSBlaW4uPC9wPiI7DX0NDQ1pZiAoIWlzc2V0KCRleGNsdWRlX3N0cmluZ3MpKXsNICAgJGV4Y2x1ZGVfc3RyaW5ncyA9IGFycmF5KCk7DX0NDWlmICghaXNzZXQoJGlmcmFtZSkpew0gICAkaWZyYW1lPWZhbHNlOw19DQ1pZiAoIWlzc2V0KCR0YXJnZXR3YWhsKSl7DSAgICR0YXJnZXR3YWhsPWZhbHNlOw19DQ0vLyB2ZXJib3RlbmUgWmVpY2hlbg0kZXhjbHVkZV9zdHJpbmdzMiA9IGFycmF5KA0gICAnXFwnLCAvLyBkYXMgXCBkaWVudCB6dW0gTWFza2llcmVuIHZvbiByZXNlcnZpZXJ0ZW4gWmVpY2hlbiANCSJcJyIsDSAgICcqJywNICAgJysnLA0gICAnLycNKTsNDSRleGNsdWRlX3N0cmluZ3NfbWVyZ2UgPSBhcnJheV9tZXJnZSgkZXhjbHVkZV9zdHJpbmdzLCAkZXhjbHVkZV9zdHJpbmdzMik7DQ0NaWYgKGlzc2V0KCRzdWNodGlwMCkpew0JJHNlYXJjaHRpcDAgPSAiXG4kc3VjaHRpcDBcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDAgPSAiXG48aDM+U3VjaHRpcHBzOjwvaDM+XG4iOw19DQ1pZiAoaXNzZXQoJHN1Y2h0aXAxKSl7DQkkc2VhcmNodGlwMSA9ICI8dWw+XG4kc3VjaHRpcDFcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDEgPSAiPHVsPlxuPGxpPkRpZSBFaW5nYWJlIHZvbiBQbGF0emhhbHRlcnplaWNoZW4gKCopIGlzdCBuaWNodCBlcmZvcmRlcmxpY2guPC9saT5cbiI7DX0NDWlmIChpc3NldCgkc3VjaHRpcDIpKXsNCSRzZWFyY2h0aXAyID0gIiRzdWNodGlwMlxuIjsNCX0gZWxzZSB7DQkkc2VhcmNodGlwMiA9ICI8bGk+V2VubiBTaWUgSWhyZSBTdWNoZSBhdWYgZ2FuemUgV/ZydGVyIGVpbnNjaHLDpG5rZW4gd29sbGVuLCBm/GdlbiBTaWUgdm9yIHVuZCBuYWNoIGRlbSBTdWNoYmVncmlmZiBqZXdlaWxzIGVpbiBMZWVyemVpY2hlbiBlaW4uPC9saT4iOw19DQ1pZiAoaXNzZXQoJHN1Y2h0aXAzKSl7DQkkc2VhcmNodGlwMyA9ICIkc3VjaHRpcDNcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDMgPSAiPGxpPk1laHJlcmUgV/ZydGVyIHdlcmRlbiBhdXRvbWF0aXNjaCBtaXQgVU5EIHZlcmtu/HBmdC48L2xpPiI7DX0NDWlmICghaXNzZXQoJHdlaXRlcnR4dCkpew0JJHdlaXRlcnR4dCA9ICJ3ZWl0ZXJlIFRyZWZmZXIgemVpZ2VuIjsNfQ0NDWlmICghaXNzZXQoJHNlYXJjaCkpIHskc2VhcmNoID0gJHZhbHVlO30NDQ0NDQ0kc2VhcmNodGlwNCA9ICIiOw1pZiAoJGp1bXAgPT0gdHJ1ZSAmJiAkdGFyZ2V0ID09ICIiKSB7DQ0JaWYgKGlzc2V0KCRzdWNodGlwNCkpew0JCSRzZWFyY2h0aXA0ID0gIiRzdWNodGlwNFxuIjsNCQl9IGVsc2Ugew0JCSRzZWFyY2h0aXA0ID0gIjxsaT5GYWxscyBkaWUgU3VjaGUgbnVyIGVpbmVuIGVpbnppZ2VuIFRyZWZmZXIgZXJnaWJ0LCB3aXJkIGRpZSBUcmVmZmVyc2VpdGUgZGlyZWt0IGFuZ2VzcHJ1bmdlbi48L2xpPlxuIjsNCX0NfQ0NJHNlYXJjaHRpcDUgPSAiPC91bD5cbiI7DQ1pZiAoJHRpcHBzKSB7JHNlYXJjaHRpcCA9ICRzZWFyY2h0aXAwLiRzZWFyY2h0aXAxLiRzZWFyY2h0aXAyLiRzZWFyY2h0aXAzLiRzZWFyY2h0aXA0LiRzZWFyY2h0aXA1OyB9ZWxzZSB7JHNlYXJjaHRpcCA9IiI7fQ0NLy8gYmcgZnVlciBDcmVkaXQtTGluazoNaWYgKCFpc3NldCgkYmcpKSAkYmcgPSAiI0ZGRkZGRiI7DWlmIChzdHJwb3MoJGJnLCcjJykgPT09IGZhbHNlKSAkYmcgPSAnIycuJGJnOw0NaWYgKHByZWdfbWF0Y2goJy9eI1swLTlBLUZdezEsNn0kL2knLCAkYmcpICYmIHN0cmxlbigkYmcpID09IDcpIHsNDSAgICAgICRyZWRIID0gYmFzZV9jb252ZXJ0KHN1YnN0cigkYmcsIDEsIDIpLCAxNiwgMTApOw0gICAgICAkZ3JlZW5IID0gYmFzZV9jb252ZXJ0KHN1YnN0cigkYmcsIDMsIDIpLCAgMTYsIDEwKTsNICAgICAgJGJsdWVIID0gYmFzZV9jb252ZXJ0KHN1YnN0cigkYmcsIDUsIDIpLCAgMTYsIDEwKTsNDSAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0FFUlQjY29sb3ItY29udHJhc3QNICAgICAgJHN1bSA9ICRyZWRIKjI5OSArICRncmVlbkgqNTg3ICsgJGJsdWVIKjExNDsNICAgICAgaWYgKCRzdW0gPCAxMjcwMDAgKSB7DSAgICAgICAgICAgJGNvbXAgPSAiI0ZGRkZGRiI7DSAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgJGNvbXAgPSIjMDAwMDAwIjsNICAgICAgfQ19IGVsc2Ugew0gICAgICAkZmVobGVyID0gMTsNICAgICAgJGJnID0gIiNGRkZGRkYiOw0gICAgICAkY29tcCA9ICIjMDAwMDAwIjsNfQ0NJHdkdyA9ICc8cCBzdHlsZT0iZGlzcGxheTpibG9jayAhaW1wb3J0YW50OyBmb250LXNpemU6IDEwcHggIWltcG9ydGFudDsgY29sb3I6Jy4kY29tcC4nICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6Jy4kYmcuJyAhaW1wb3J0YW50Ij5zY3JpcHQmbmJzcDsmY29weTsmbmJzcDsyMDExJm5ic3A7YnkmbmJzcDs8YSBzdHlsZT0iY29sb3I6Jy4kY29tcC4nICFpbXBvcnRhbnQ7IGRpc3BsYXk6aW5saW5lICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudCIgaHJlZj0iaHR0cDovL3dlYmRlc2lnbi53ZWlzc2hhcnQuZGUiPndlYmRlc2lnbiZuYnNwO3dlaXNzaGFydDwvYT48L3A+JzsNDWlmIChpc3NldCgkcHdkKSkgew0JJHNlcnZlciA9IHN0cl9yZXBsYWNlICgid3d3LiIsIiIsICRfU0VSVkVSWydTRVJWRVJfTkFNRSddICk7DQkkc2VydmVyID0gc3RyX3JlcGxhY2UgKCIrIiwiIiwgJHNlcnZlcik7DQkkc2VydmVyID0gc3RyX3JlcGxhY2UgKCItIiwiIiwgJHNlcnZlcik7DQkkZG9tID0gY3JjMzIoJHNlcnZlcik7DSAgICAgICRjaGF2ZSA9ICRwd2QgLyBzcHJpbnRmKCIldSIsICRkb20pOw19DWlmIChpc3NldCgkY2hhdmUpICYmICRjaGF2ZSA9PSAiMzIxIil7DQkkd2R3ID0nJzsNfQ0NJHRpbWVfb2xkID0gMDsgLy8gZsO8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ0NDS8vIG5ldWVzIEZlbnN0ZXINZWNobycNPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0vKiA8IVtDREFUQVsgKi8NLy8gaHR0cDovL3d3dy5kcndlYi5kZS90cmlja2tpc3RlL3RyaWNrczIxNC5zaHRtbA1mdW5jdGlvbiBsaW5rb3BlbmVyKGEpIHsNICAgdmFyIGI9YT8iX2JsYW5rIjoiX3NlbGYiOw0gICB2YXIgYz1kb2N1bWVudC5saW5rczsNICAgZm9yKHZhciBpPTA7aTxjLmxlbmd0aDtpKyspIHsNICAgCWNbaV0udGFyZ2V0PWI7DSAgIH0NfQ0NZnVuY3Rpb24gbGlua2Nvb2tpZSgpIHsNICAgaWYoZG9jdW1lbnQuY29va2llLmluZGV4T2YoInN1Y2hvZWZmbmVuIikgIT09IC0xKXsNICAgICAgZG9jdW1lbnQuY29va2llID0gInN1Y2g9MDtwYXRoPS87ZXhwaXJlcz1UaHUsIDAxLUphbi03MCAwMDowMDowMSBHTVQiOw0gICB9IGVsc2Ugew0gICAgIGRvY3VtZW50LmNvb2tpZT0ic3VjaD1zdWNob2VmZm5lbjsgcGF0aCA9LyI7DSAgIH0NfQ0NLy8gaHR0cDovL2ljaHdpbGwubmV0L2NoYXB0ZXI0Lmh0bWwNZnVuY3Rpb24gYWRkRXZlbnQob2JqLCBldlR5cGUsIGZuKXsNIGlmIChvYmouYWRkRXZlbnRMaXN0ZW5lcil7DSAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2VHlwZSwgZm4sIGZhbHNlKTsNICAgcmV0dXJuIHRydWU7DSB9IGVsc2UgaWYgKG9iai5hdHRhY2hFdmVudCl7DSAgIHZhciByID0gb2JqLmF0dGFjaEV2ZW50KCJvbiIrZXZUeXBlLCBmbik7DSAgIHJldHVybiByOw0gfSBlbHNlIHsNICAgcmV0dXJuIGZhbHNlOw0gfQ19DQ0vKiBdXT4gKi8NPC9zY3JpcHQ+DSc7DQ0NaWYoaXNzZXQoJF9HRVRbInEiXSkgfHwgaXNzZXQoJF9QT1NUWyJxIl0pKSB7DSAgICAgIGlmIChpc3NldCgkX0dFVFsicSJdKSAmJiAkX0dFVFsicSJdICE9ICIiKSAkc2VhcmNoID0gJF9HRVRbInEiXTsNICAgICAgaWYgKGlzc2V0KCRfUE9TVFsicSJdKSAmJiAkX1BPU1RbInEiXSAhPSAiIikgJHNlYXJjaCA9ICRfUE9TVFsicSJdOw0NDQlpZiAoc3RyaXN0cigkc2VhcmNoLCAiQ29udGVudC1UeXBlIikpJHNlYXJjaCA9ICJubyBzcGFtIGhlcmUhIjsNDQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZhdW1sOyIsICLkIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZvdW1sOyIsICL2IiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZ1dW1sOyIsICL8IiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZBdW1sOyIsICLEIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZPdW1sOyIsICLWIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZVdW1sOyIsICLcIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZzemxpZzsiLCAi3yIsICRzZWFyY2gpOw0NCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyMjg7IiwgIuQiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyNDY7IiwgIvYiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyNTI7IiwgIvwiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMxOTY7IiwgIsQiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyMTQ7IiwgItYiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyMjA7IiwgItwiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyMjM7IiwgIt8iLCAkc2VhcmNoKTsNDSAgICRzZWFyY2ggPSBzdHJfcmVwbGFjZSgnIicsIiAiLCRzZWFyY2gpOw0NICAgaWYgKGZpbGVfZXhpc3RzKCJzZWFyY2hfcmVwbGFjZS5waHAiKSkge2luY2x1ZGUgKCJzZWFyY2hfcmVwbGFjZS5waHAiKTt9DQ0JLy8gdW5lcnd1ZW5zY2h0ZSBTdHJpbmdzIHZvbiBkZXIgU3VjaGUgYXVzc2NobGllc3Nlbg0JZm9yZWFjaCgkZXhjbHVkZV9zdHJpbmdzX21lcmdlIGFzICRrKSB7DSAgICAgICRzZWFyY2ggPSBzdHJfcmVwbGFjZSgkaywiIiwkc2VhcmNoKTsNICAgfQ0NDSAgICAgICRzZWFyY2ggPSBodG1sc3BlY2lhbGNoYXJzKCRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlICggJyZhbXA7JywgJyYnLCAkc2VhcmNoICk7IC8vIGxhZXNzdCBodG1sIGVudGl0aWVzIHdpZSAmIzM1MTsgenUgKHouQi4gdHVlcmtpc2NoZSBTb25kZXJ6ZWljaGVuKQ0JLy9kaWUgZ2xlaWNoZSBaZWlsZSBhdWNoIGluIGRpZSBzdWNoZW4ucGhwLCBhdXNzZXJkZW0gWmVpbGUgNDggaGllciB3ZWdrb21tZW50aWVyZW4uDQ0NaWYoZW1wdHkoJHNlYXJjaCkpIHskc2VhcmNoPSIiO30NDWlmKHN0cmxlbigkc2VhcmNoKSA+PSAkbGVuZ3RoICYmICRzZWFyY2ggIT0gJHZhbHVlKSB7DQ0NCWlmIChpc3NldCgkc3VjaGhpbndlaXMpICYmICRzdWNoaGlud2VpcyAhPSAiIil7DQkJJHNlYXJjaGhpbndlaXMgPSAkc3VjaGhpbndlaXM7DQkJfSBlbHNlIHsNCQkkc2VhcmNoaGlud2VpcyA9ICJTaWUgc3VjaGVuIG5hY2giOw0JfQ0JZWNobyAnPHA+Jy4kc2VhcmNoaGlud2Vpcy4nIDxlbT4mcmFxdW87Jy4kc2VhcmNoLicmbGFxdW87PC9lbT4nOw0NLyoNCS8vZml4IGZ1ZXIgZGllIGZvbGdlbmRlIEZvcnRzY2hyaXR0c2FuemVpZ2UgaS5WLm12IGd6aXAhDQkkZW5jb2RlPSRfU0VSVkVSWydIVFRQX0FDQ0VQVF9FTkNPRElORyddOw0gICAJaWYgKHN0cnBvcygkZW5jb2RlLCdnemlwJykgPT09IGZhbHNlKSB7DQkJJGd6aXAgPSB0cnVlOw0JfQ0JaWYoJGp1bXAgIT09IHRydWUgJiYgISRnemlwKSB7DQkJb2JfZW5kX2ZsdXNoKCk7IG9iX3N0YXJ0KCk7IGVjaG8gIiI7IG9iX2ZsdXNoKCk7IGZsdXNoKCk7DQl9DSovDQ0NDQ0gICAgICAgIC8vIGRpZSBGdW5rdGlvbiB6dW0gZXh0cmFoaWVyZW4gdm9uIFRlaWxzdHJpbmdzDSAgICAgICAgZnVuY3Rpb24gYXVzbGVzZW4oJGFsbCwgJHN0YXJ0LCAkZW5kKSB7DSAgICAgICAgICAgICAgICBpZiAoc3RyaXN0cigkYWxsLCRzdGFydCkpIHsNICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0X3Bvcz1zdHJwb3Moc3RydG9sb3dlcigkYWxsKSxzdHJ0b2xvd2VyKCRzdGFydCkpICsgc3RybGVuKCRzdGFydCk7DSAgICAgICAgICAgICAgICAgICAgICAgICRyZXN0ID0gc3Vic3RyKCRhbGwsJHN0YXJ0X3Bvcyk7DSAgICAgICAgICAgICAgICAgICAgICAgICRlbmRfcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRyZXN0KSxzdHJ0b2xvd2VyKCRlbmQpKTsNICAgICAgICAgICAgICAgICAgICAgICAgJGVyZyA9IHN1YnN0cigkcmVzdCwwLCRlbmRfcG9zKTsNICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlcmc7DSAgICAgICAgICAgICAgICB9DSAgICAgICAgfQ0NDQkvLyBkaWUgRnVua3Rpb24genVtIER1cmNoc3VjaGVuIGRlcyBWZXJ6ZWljaG5pc2JhdW1zOg0JaWYgKCFpc3NldCgkZXhjbHVkZV9kaXJzKSkgJGV4Y2x1ZGVfZGlycyA9IGFycmF5KCIiKTsNDQlmdW5jdGlvbiB0cmVlKCRvcmRuZXIsICRzdWIgPSBGQUxTRSkgew0JCSBnbG9iYWwgJGVyZ2ViOw0JCSAkaGFuZGxlID0gb3BlbmRpcigkb3JkbmVyKTsNCQkgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyICgkaGFuZGxlKSkpIHsNCQkgICAgICAgaWYoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgaXNfZGlyKCRvcmRuZXIuIi8iLiRmaWxlKSkgew0JICAgICAgIAkJJGNvbXBsID0gJG9yZG5lci4iLyIuJGZpbGUuIi8iOw0JICAgICAgIAkJLy9lY2hvICRjb21wbC4iPGJyPiI7DQkJCSRlcmdlYiA9ICRlcmdlYi4iLCIuJGNvbXBsOw0gICAgICAgIAkJdHJlZSgkb3JkbmVyLiIvIi4kZmlsZSwgVFJVRSk7DQkJCX0NCQl9DQkgIAljbG9zZWRpcigkaGFuZGxlKTsNCX0NDQlpZiAoJGFsbGVkaXJzKSB7DQkgICB0cmVlKCIuIik7DQkgICAkZXJnZWIgPSAiLi8iLiRlcmdlYjsNCSAgICRkaXJzID0gZXhwbG9kZSAoIiwiLCAkZXJnZWIpOw0JfQ0NCWZvcmVhY2goJGRpcnMgYXMgJGRpcikgew0gICAgICAgICAgIGlmKCFpbl9hcnJheSgkZGlyLCRleGNsdWRlX2RpcnMpKSB7DQkJLy9lY2hvICRkaXIuIjxicj4iOw0JCSR2ZXJ6ID0gb3BlbmRpcigkZGlyKTsNDQkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKCR2ZXJ6KSkgew0JCSRkdXJjaHN1Y2h0ID0gJGR1cmNoc3VjaHQgKyAxOw0JCQkvLyBlaW56ZWxuZSBEYXRlaWVuIHZvbiBkZXIgU3VjaGUgYXVzc2NobGllc3Nlbg0NCQkJLy8gZGllIGZvbGdlbmRlbiA4IFplaWxlbiBlcmxhdWJlbiBBdXNjaGx1c3Mgdm9uIFN1YnN0cmluZ3MgaW4gJGV4Y2x1ZGVfZmlsZXMNCQkJJG5vbGlzdD1mYWxzZTsNCQkJZm9yICgkZT0wOyRlPGNvdW50KCRleGNsdWRlX2ZpbGVzKTskZSsrKSB7DQkJCSAgICAkcG9zID0gc3RycG9zKCRmaWxlLCRleGNsdWRlX2ZpbGVzWyRlXSk7DQkJCSAgICBpZiAoJHBvcyAhPT0gZmFsc2UpIHsNCQkJICAgICAgICRub2xpc3QgPSB0cnVlOw0JCQkgICAgfQ0JCQl9IA0JCQlpZigkbm9saXN0ICE9PSB0cnVlICYmIHByZWdfbWF0Y2goIj0oXC4kZGF0X3R5cGUpJD0iLCRmaWxlKSkgew0vLwkJCWlmKCFpbl9hcnJheSgkZmlsZSwkZXhjbHVkZV9maWxlcykgJiYgcHJlZ19tYXRjaCgiPShcLiRkYXRfdHlwZSkkPSIsJGZpbGUpKSB7DQ0JCQkJLy8gTWV0YS1BbmdhYmVuIGVybWl0dGVsbg0JCQkJJHRpdGVsID0gIiI7DQkJCQkka2V5d29yZHMgPSAiIjsNCQkJCSRkZXNjcmlwdGlvbiA9ICIiOw0JCQkJJGdtdGFycmF5PWdldF9tZXRhX3RhZ3MoJGRpci4kZmlsZSk7DQkJCQl3aGlsZShsaXN0KCRrZXkxLCR2YWwpPWVhY2goJGdtdGFycmF5KSl7DQkJCQkJc3dpdGNoKHN0cnRvbG93ZXIoJGtleTEpKXsNCQkJCSAgICAgIAljYXNlICJ0aXRsZSI6ICR0aXRlbD0kdmFsOyBicmVhazsNCQkJCSAgICAgIAljYXNlICJrZXl3b3JkcyI6ICRrZXl3b3Jkcz0kdmFsOyBicmVhazsNCQkJCSAgICAgIAljYXNlICJkZXNjcmlwdGlvbiI6ICRkZXNjcmlwdGlvbj0kdmFsOyBicmVhazsNCQkJCQl9DQkJCQl9DQ0JCQkJJHN0cmluZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkaXIuJGZpbGUpOw0NCQkJCS8vIGRhbWl0IHdlcmRlbiBnYW56ZSBXb2VydGVyIGdlZnVuZGVuLCBhdWNoIHdlbm4gc2llIGluIFRhZ3MgZWluZ2VzY2hsb3NzZW4gc2luZDoNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiPCIsIiA8Iiwkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiPiIsIj4gIiwkc3RyaW5nKTsNDQkJCQkvLyBodG1sIHRhZ3MgbWl0IGVpbmdlc2NobG9zc2VuZW4gcGhwIHRhZ3MgcmF1cyAtIHdlaWwgc29uc3QgZWluIGVpbnplbG5lcyA8IG9kZXIgJmx0OyBhbHMgZW5kIHdpcmt0DSAgCQkJCSRzdWNobXVzdGVyID0gIi88XD9bXj5dK1w/Pi8iOyANICAJCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwiIiwkc3RyaW5nKTsNDQkJCQkkc3RyaW5nID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRzdHJpbmcpOw0NDSAgICAgICAgICAgIC8vIG51ciBmdWVyIHdkdyBkeW4uIGRlc2NyaXB0aW9uczoNICAgICAgICAgICAgaWYgKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddID09ICJ3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIikgew0gICAJCQkJaWYgKCRkZXNjcmlwdGlvbiA9PSAiIil7DSAgIAkJCQkJJGRlc2NyaXB0aW9uID0gYXVzbGVzZW4oJHN0cmluZywgImRlc2NyaXB0aW9uIiwgIj4iKTsNICAgICAgICAgICAgICAgICAgICAgICAgICAgCSRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGRlc2NyaXB0aW9uKTsNICAgICAgICAgICAgICAgICAgICAgICAgICAgCSRkZXNjcmlwdGlvbiA9IHByZWdfcmVwbGFjZSgiL1xufFxyfGNvbnRlbnR8XCJ8PXxcL3w7fFw/LyIsICIiLCAkZGVzY3JpcHRpb24pOw0gICAJCQkJfQ0gICAgICAgICAgICB9DQ0JCQkJLy8gdW5kIHdlaWwgPHRpdGxlPiBuaWNodCBpbW1lciBhbHMgTWV0YS10YWcgY29kaWVydCB3aXJkOg0JCQkJaWYgKCR0aXRlbCA9PSAiIikgJHRpdGVsID0gYXVzbGVzZW4oJHN0cmluZywgIjx0aXRsZT4iLCAiPC90aXRsZT4iKTsNDQkJCQkvLyB3ZWlsIGVzIExldXRlIGdpYnQsIGRpZSBtZXRhIFRhZ3MgbWl0IFplaWxlbnVtYnJ1Y2ggc2NocmVpYmVuOg0JCQkJJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoIlxuIiwiIiwkZGVzY3JpcHRpb24pOw0JCQkJJGtleXdvcmRzID0gc3RyX3JlcGxhY2UoIlxuIiwiIiwka2V5d29yZHMpOw0JCQkJJHRpdGVsID0gc3RyX3JlcGxhY2UoIlxuIiwiIiwkdGl0ZWwpOw0NDQ0JCQkJLy8gRGF0ZWllbiBudXIgendpc2NoZW4gZGVuIGJlaWRlbiBsaW1pdGVyIHRhZ3MgYXVzd2VydGVuOg0JCQkJaWYgKCRsaW1pdF9zdGFydCAhPSAiIikgew0JCQkJCSRwb3M9c3RycG9zKHN0cnRvbG93ZXIoJHN0cmluZyksc3RydG9sb3dlcigkbGltaXRfc3RhcnQpKSArIHN0cmxlbigkbGltaXRfc3RhcnQpOw0JCQkJCSRzdWJzdHJpbmdfcmVzdCA9IHN1YnN0cigkc3RyaW5nLCRwb3MpOw0JCQkJfQ0JCQkJZWxzZSB7DQkJCQkJJHN1YnN0cmluZ19yZXN0ID0gJHN0cmluZzsNCQkJCX0NDQ0JCQkJLy8gd2VubiAkbGltaXRfZW5kIGdlc2V0enQ6DQkJCQlpZiAoJGxpbWl0X2VuZCAhPSAiIikgew0JCQkJCSRlbmRfcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRzdWJzdHJpbmdfcmVzdCksc3RydG9sb3dlcigkbGltaXRfZW5kKSk7DQkJCQkJaWYgKCRlbmRfcG9zICE9PSBmYWxzZSkgew0gICAgICAgICAgICAgICAgICAgIAkJCSRzdHJpbmcgPSBzdWJzdHIoJHN1YnN0cmluZ19yZXN0LDAsJGVuZF9wb3MpOw0JCQkJICAgICAgfSBlbHNlIHsNCQkJCQkgICAgICRzdHJpbmcgPSAkc3Vic3RyaW5nX3Jlc3Q7DQkJCQkgICAJfQ0gICAgICAgICAgICAgCQl9IGVsc2Ugew0gICAgICAgICAgICAgICAgCQkJJHN0cmluZyA9ICRzdWJzdHJpbmdfcmVzdDsNICAgICAgICAgICAgIAkJfQ0NDQ0JCQkJLy9JbmhhbHQgdm9uIHRhZ3MgYXVzd2VydGVuOg0JCQkJaWYgKCR0YWdzPT09ZmFsc2UpIAkkc3RyaW5nID0gc3RyaXBfdGFncygkc3RyaW5nKTsNDQ0JCQkJLy8gZGllIG1ldGEgdGFncyBpbiBkaWUgU3VjaGUgZWluc2NobGllc3NlbiBnZW1hZXNzIGNvbmZpZzoNICAgICAgICAgICAgCQlpZiAoJHRhZ3MgPT09IHRydWUpIHska2V5PXRydWU7ICRkZXNjPXRydWU7ICR0aXQ9dHJ1ZTt9DQkJCQlpZiAoJGtleSA9PT0gdHJ1ZSkgJHN0cmluZz0kc3RyaW5nLiRrZXl3b3JkczsNCQkJCWlmICgkZGVzYyA9PT0gdHJ1ZSkgJHN0cmluZz0kc3RyaW5nLiRkZXNjcmlwdGlvbjsNCQkJCWlmICgkdGl0ID09PSB0cnVlKSAkc3RyaW5nPSRzdHJpbmcuJHRpdGVsOw0NDQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIlxuIiwgIiAiLCAkc3RyaW5nKTsNDQ0JCQkJLy8gamV0enQgZGllIEF1c2dhYmUgZGVzIEtvbnRleHQgdm9yYmVyZWl0ZW46DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZhdW1sOyIsICLkIiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZvdW1sOyIsICL2IiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZ1dW1sOyIsICL8IiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZBdW1sOyIsICLEIiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZPdW1sOyIsICLWIiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZVdW1sOyIsICLcIiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZzemxpZzsiLCAi3yIsICRzdHJpbmcpOw0NCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMjg7IiwgIuQiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyNDY7IiwgIvYiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyNTI7IiwgIvwiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMxOTY7IiwgIsQiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMTQ7IiwgItYiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMjA7IiwgItwiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMjM7IiwgIt8iLCAkc3RyaW5nKTsNDSAgICAgICAgICAgIC8vIGZ1ZXIgZGllIEtvbW1lbnRhcmUNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgifCIsICIgIiwgJHN0cmluZyk7DQ0gICAgICAgICAgICAvLyBEYXR1bSB2b24gS29tbWVudGFyZW4gaW4gZGV1dHNjaGVzIEZvcm1hdDoNICAgICAgICAgICAgJHN1Y2htdXN0ZXIgPSAnL1swLTldWzAtOV0tWzAtMV1bMC0yXS1bMC0zXVswLTldLyc7DSAgICAgICAgICAgIHByZWdfbWF0Y2goJHN1Y2htdXN0ZXIsICRzdHJpbmcsICR0cmVmZmVyMSk7DSAgICAgICAgICAgICRjb21tZW50X2RhdGUgPSBpbXBsb2RlKCIsIiwkdHJlZmZlcjEpOw0gICAgICAgICAgICAkZ2VyX2RhdGUgPSBzdWJzdHIoJGNvbW1lbnRfZGF0ZSw2LDIpLicuJy5zdWJzdHIoJGNvbW1lbnRfZGF0ZSwzLDIpLicuJy5zdWJzdHIoJGNvbW1lbnRfZGF0ZSwwLDIpOw0gICAgICAgICAgICAkc3RyaW5nID0gc3RyX3JlcGxhY2UoJGNvbW1lbnRfZGF0ZSwkZ2VyX2RhdGUsICRzdHJpbmcpOw0NICAgICAgICAgICAgLy8gRS1NYWlscyByYXVzOiBodHRwOi8vd3d3LnJlZ3VsYXItZXhwcmVzc2lvbnMuaW5mby9lbWFpbC5odG1sDSAgICAgICAgICAgICRzdWNobXVzdGVyID0gJy9cYltBLVowLTkuXyUrLV0rQFtBLVowLTkuLV0rXC5bQS1aXXsyLDR9XGIvaSc7DSAgICAgICAgICAgICRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJHN1Y2htdXN0ZXIsJycsICRzdHJpbmcpOw0NCQkJCSRzdHJpbmdsb3cgPSBzdHJ0b2xvd2VyKCRzdHJpbmcpOw0JCQkJJHNlYXJjaGxvdyA9IHN0cnRvbG93ZXIoJHNlYXJjaCk7DQkJCQkkc3RyaW5nbG93ID0gbWJfc3RydG9sb3dlcigkc3RyaW5nbG93LCdVVEYtOCcpOw0JCQkJJHNlYXJjaGxvdyA9IG1iX3N0cnRvbG93ZXIoJHNlYXJjaGxvdywnVVRGLTgnKTsNDQ0JCQkJIyBkaWUgdW5kLVZlcmtudWVwZnVuZzoNCQkJCSRzZWFyY2hfYXJyID0gZXhwbG9kZSgiICIsdHJpbSgkc2VhcmNobG93KSk7DQkJCQkkc2VhcmNoX2NvdW50ID0gY291bnQoJHNlYXJjaF9hcnIpOw0NDQkJCQkjIGRhbWl0IGZ1ZWhyZW5kZSB1bmQgc2NobGllc3NlbmRlIExlZXJ6ZWljaGVuIGJlaSBkZXIgU3VjaGUgbmFjaCBnYW56ZW4gV29lcnRlcm4gYmVydWVja3NpY2h0aWd0IGJsZWliZW4NCQkJCWlmICgkc2VhcmNoX2NvdW50ID09IDEpIHsNCQkJCQkkc2VhcmNoX2FyclswXSA9ICRzZWFyY2hsb3c7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdWNobXVzdGVyID0gJy86fFw7fCF8XD98XC58LHxcKHxcKS8nOw0gICAgICAgICAgICAgICAgICAgICAgICAJJHN0cmluZ2xvdyA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwgIiAiLCAkc3RyaW5nbG93KTsgLy8gYXVjaCBnYW56ZSBXb2VydGVyIGFtIFNhdHplbmRlIGZpbmRlbiwgYWJlciBvaG5lIDsgZGEgc29uc3QgZW50aXRpZXMgbmljaHQgZ2VmdW5kZW4gd2VyZGVuLg0JCQkJfQ0NCQkJCSR0ZXN0ID0gc3Vic3RyX2NvdW50KCRzdHJpbmdsb3csICRzZWFyY2hsb3cpOw0NCQkJCSRpPTA7DQkJCQlmb3JlYWNoICgkc2VhcmNoX2FyciBhcyAkc2VhcmNoX3dvcmQpIHsNCQkJCWlmIChwcmVnX21hdGNoKCIvKCRzZWFyY2hfd29yZCkvaSIsICRzdHJpbmdsb3cpKSB7CQkvLyB3ZW5uIFN1Y2hiZWdyaWZmIHZvcmtvbW10DQkJCQkJJGkrKzsNDQkJCQkJaWYgKCRpPT0kc2VhcmNoX2NvdW50KSB7CQkvLyBzb2JhbGQgYWxsZSBTdWNoYmVncmlmZmUgZ2VmdW5kZW4gd3VyZGVuLi4uDQ0JCQkJCQkvLyBoaWdobGlnaHRpbmcgd2lyZCB2b24gc2VhcmNoaGkuanMgZXJsZWRpZ3Q6DQkJCQkJCWlmICgkc2VhcmNoX2NvdW50ID4gMSl7DQkJCQkJCQkkcG9zPXN0cnBvcygkc3RyaW5nbG93LCRzZWFyY2hfd29yZCk7DQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkkcG9zPXN0cnBvcygkc3RyaW5nbG93LCRzZWFyY2hsb3cpOw0JCQkJCQl9DQ0JCQkJCQlpZiAoJHZvciA+PSAkcG9zKSB7DS8vCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLCRwb3MsJG5hY2gpKTsNCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLDAsJG5hY2gpKTsNCQkJCQkJfSBlbHNlIHsNCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLCRwb3MtJHZvciwkdm9yKyRuYWNoKSk7DQkJCQkJCQkkcGllY2UxID0gc3Ryc3RyICgkcGllY2UxLCIgIik7IC8vIHZlcm1laWRldCBCcnVjaHN0dWVja2Ugdm9uIFdvZXJ0ZXJuIGFtIEFuZmFuZyBkZXMgS29udGV4dA0JCQkJCQl9DQ0JCQkJCQkkcGllY2UxID0gc3Vic3RyKCRwaWVjZTEsIDAsIHN0cmxlbihzdHJyY2hyKCRwaWVjZTEsMzIpKSooLTEpKS4iIC4uLiI7IC8vIHZlcm1laWRldCBCcnVjaHN0dWVja2Ugdm9uIFdvZXJ0ZXJuIGFtIEVuZGUgZGVzIEtvbnRleHQNCQkJCQkJJHJlc3QgPSAiPGJyIC8+JHBpZWNlMSI7DQ0NDQkJCQkJCWlmKCR2b3I9PSIwIiAmJiAkbmFjaD09IjAiKSAkcmVzdCA9ICIiOw0NCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighJGRlc2NyaXB0aW9uID09ICIiICYmICRzaG93X2Rlc2MgPT0gdHJ1ZSkgJHJlc3QgPSAiPGJyIC8+PHN0cm9uZz4kYmVzY2hyZWliPC9zdHJvbmc+ICRkZXNjcmlwdGlvbiI7DQ0JCQkJCQlpZigkZmlsZW5hbWUpICR0aXRlbCA9ICRmaWxlOw0JCQkJCQlpZigkdGl0ZWwgPT0gIiIpICR0aXRlbCA9ICRmaWxlOw0NDQ0NCQkJCQkJaWYgKGlzc2V0KCRxdWVyeSkpew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxZGlyID0gc3RyX3JlcGxhY2UoIi4vIiwiIiwkZGlyKTsgLy8gZW50ZmVybnQgZGFzIGZ1ZWhyZW5kZSAuLyBiZWltIHF1ZXJ5IHN0cmluZw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkcXVlcnlfZW5kdW5nKSAmJiAkcXVlcnlfZW5kdW5nID09ICJubyIpIHsNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZleHQgID0gYXJyYXlfcG9wKGV4cGxvZGUoJy4nLCAkZmlsZSkpOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm5hbWUgPSBiYXNlbmFtZSgkZmlsZSwgJy4nLiRmZXh0KTsNCQkJCQkJCSAgICAgICAkbGluayA9ICRxdWVyeS4kcWRpci4kZm5hbWU7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCQkJCQkJCSAgICAgICAkbGluayA9ICRxdWVyeS4kcWRpci4kZmlsZTsNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQ0JCQkJCQl9IGVsc2Ugew0JCQkJCQkJJGxpbmsgPSAkZGlyLiRmaWxlOw0JCQkJCQl9DQ0gICAgICAgICAgICAgICAgICAvLyBKZXR6dCBVbWxlaXRlbiB2b24gS29tbWVudGFyZW4gYXVmIGRlbiBBcnRpa2VsOg0gICAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRsaW5rLCdjb21tZW50JykgIT09IGZhbHNlKSB7DSAgICAgICAgICAgICAgICAgICAgICR0aXRlbCA9IHN0cl9yZXBsYWNlKCJjb21tZW50XyIsIiIsJHRpdGVsKTsNICAgICAgICAgICAgICAgICAgICAgJHRpdGVsID0gc3RyX3JlcGxhY2UoIi54bWwiLCIucGhwIiwkdGl0ZWwpOw0gICAgICAgICAgICAgICAgICAgICAkdGl0ZWwgPSAnS29tbWVudGFyIGF1ZiBkZXIgU2VpdGUgJy4kdGl0ZWw7DSAgICAgICAgICAgICAgICAgIA0gICAgICAgICAgICAgICAgICAgICAkbGluayA9IHN0cl9yZXBsYWNlKCJjb21tZW50XyIsIiIsJGxpbmspOw0gICAgICAgICAgICAgICAgICAgICAkbGluayA9IHN0cl9yZXBsYWNlKCIueG1sIiwiLnBocCIsJGxpbmspOw0gICAgICAgICAgICAgICAgICB9DQ0JCQkJICAvLyBVbWxlaXRlbiB2b24gSW5jbHVkZS1EYXRlaWVuOg0JCQkJICBpZiAoaXNzZXQoJHJlZGlyX3N1ZmZpeCkgJiYgaXNzZXQoJHJlZGlyX3JlcGxhY2UpKSB7DSAgICAgICAgICAgICAgICAgICAgICR0aXRlbCA9IHN0cl9yZXBsYWNlKCRyZWRpcl9zdWZmaXgsJHJlZGlyX3JlcGxhY2UsJHRpdGVsKTsNICAgICAgICAgICAgICAgICAgICAgJGxpbmsgPSBzdHJfcmVwbGFjZSgkcmVkaXJfc3VmZml4LCRyZWRpcl9yZXBsYWNlLCRsaW5rKTsNCQkJCSAgfQ0NDQkJCQkJCWlmKCR0aXRlbCAhPSAiIikgew0NCQkJCQkJCWlmICgkdGFyZ2V0ID09ICJibGFuayIpIHsNCQkJCQkJCQkkemllbCA9ICcgdGFyZ2V0PSJfYmxhbmsiJzsNCQkJCQkJCQkkanVtcCA9IGZhbHNlOw0JCQkJCQkJfSBlbHNlaWYgKCR0YXJnZXQgIT0gIiIpIHsNCQkJCQkJCQkkemllbCA9ICcgdGFyZ2V0PSInLiR0YXJnZXQuJyInOw0JCQkJCQkJCSRqdW1wID0gZmFsc2U7DQkJCQkJCQl9IGVsc2Ugew0JCQkJCQkJCSR6aWVsID0gJyc7DQkJCQkJCQl9DQ0JCQkJCQkJaWYgKCRwZmFkID09IHRydWUpIHsNCQkJCQkJCQlpZiAoaXNzZXQoJHF1ZXJ5KSl7DQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSR1cmwgPSAiVVJMOiZuYnNwOzxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj5odHRwOi8vIi4kcGZhZGluZm8uJGxpbmsuIjwvYT4iOw0JCQkJCQkJCX0gZWxzZSB7DQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSR1cmwgPSAiVVJMOiZuYnNwOzxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj5odHRwOi8vIi4kcGZhZGluZm8uc3Vic3RyKCRsaW5rLDEpLiI8L2E+IjsNCQkJCQkJCQl9DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkdXJsID0gIiI7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQ0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhZW5kX2RhdCA9PSB0cnVlKSB7DQkJCQkJCQkJaWYgKGlzc2V0KCRxdWVyeSkpew0JCQkJCQkJCQlpZiAoJGRhdGVmb3JtID09ICJlbiIpIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoIm0vZC95IiwgZmlsZW10aW1lKCRkaXIuJGZpbGUpKTsNCQkJCQkJCQkJfSBlbHNlIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoImQubS55IiwgZmlsZW10aW1lKCRkaXIuJGZpbGUpKTsNCQkJCQkJCQkJfQ0JCQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkJCWlmICgkZGF0ZWZvcm0gPT0gImVuIikgew0JCQkJCQkJCQkJQCRtb2QgPSAkZmlsZWRhdGUuZGF0ZSgibS9kL3kiLCBmaWxlbXRpbWUoJGxpbmspKTsNCQkJCQkJCQkJfSBlbHNlIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoImQubS55IiwgZmlsZW10aW1lKCRsaW5rKSk7DQkJCQkJCQkJCX0NCQkJCQkJCQl9DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2Ugew0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSRtb2QgPSAiIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFlbmRfZGF0ICYmICRwZmFkKSB7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJHRyZW5uZXIgPSAiIC0gIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJHRyZW5uZXIgPSAiIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJlZmZfYW56PSIiOw0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHRyZWZmZXIgJiYgJHRlc3Q+PTEpICR0cmVmZl9hbno9IlsiLiR0ZXN0LiImbmJzcDsiLiR0cmVmZi4iXSI7DQ0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBmYWQgfHwgJGFlbmRfZGF0KSB7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXJyYXkgLj0gJHRlc3QuIjxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj4iLiR0aXRlbC4iPC9hPiAiLiR0cmVmZl9hbnouJHJlc3QuIjxzcGFuIGNsYXNzPSdtb2QnPiIuJHVybC4kdHJlbm5lci4kbW9kLiI8L3NwYW4+XG4iOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXJyYXkgLj0gIiRsaW5rXG4iOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlmcmFtZSAhPT0gdHJ1ZSkgeyANICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFycmF5IC49ICR0ZXN0LiI8YSBocmVmPVwiIi4kbGluay4iXCIiLiR6aWVsLiI+Ii4kdGl0ZWwuIjwvYT4gIi4kdHJlZmZfYW56LiRyZXN0LiJcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcnJheSAuPSAiJGxpbmtcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91bmQgKys7DQ0JCQkJCQl9DQkJCQkJfQ0JCQkJfQ0JCQl9DQkJfQ0JICAgIH0NICAgICAgICB9DQkJQGNsb3NlZGlyKCR2ZXJ6KTsNDQl9DQllY2hvICc8L3A+JzsNCWlmICgkc2VhcmNoID09ICKnZm91bmQiKSB7ZWNobyAnJiM4Mzt1JiM5OTtoJiMxMTU7YyYjMTE0O2kmIzExMjt0ICYjMTY5OyAyJiM0ODswNSAmIzExOTtlJiM5ODtkJiMxMDE7cyYjMTA1O2duJiM0NjsmIzExOWUmIzEwNTtzJiMxMTU7aCYjOTc7ciYjMTE2OyYjNDY7JiMxMDA7ZSc7ZXhpdDt9DQ0NLy8gTG9nZGF0ZWkgc2NocmVpYmVuIHVuZCBCZW5hY2hyaWNodGlndW5ncy1NYWlsIG1pdCBpcCAtIFNwZXJyZToNLy8gYmFzZTY0IHNjaHJlaWJ0IDIgTG9nZWludHLDpGdlIQ0NZnVuY3Rpb24gc2NocmVpYmVuKCRkYXRlaSwkbW9kZSl7DQlnbG9iYWwgJHNlYXJjaDsNCSRmcCA9IEBmb3BlbigkZGF0ZWksJG1vZGUpOw0JZmxvY2soJGZwLExPQ0tfRVgpOw0JZndyaXRlKCRmcCwkX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4ifCIudGltZSgpLiJ8Ii4kc2VhcmNoLiJcbiIpOw0JZmxvY2soJGZwLExPQ0tfVU4pOw0JZmNsb3NlKCRmcCk7DX0NDQ1mdW5jdGlvbiBpcF9zcGVycmUoKSB7DWdsb2JhbCAkc2VhcmNoOw1nbG9iYWwgJHJlbG9hZGxpbWl0Ow0NJHJlbG9hZGxvZ2RhdGVpID0gInJlbG9hZC50eHQiOw0kYW56YWhsZWludHJhZWdlID0gMTAwOw0NLy8gUHJ1ZWZlbiwgb2IgcmVsb2FkZGF0ZWkgZXhpc3RpZXJ0ID0+IGFuc29uc3RlbiBFcnN0ZWxsZW4NDWlmKCFmaWxlX2V4aXN0cygkcmVsb2FkbG9nZGF0ZWkpKSB7DQkkZGF0ZWkgPSBmb3BlbigkcmVsb2FkbG9nZGF0ZWksIncrIik7DQlmY2xvc2UoJGRhdGVpKTsNfQ0NJGZwID0gZmlsZSgkcmVsb2FkbG9nZGF0ZWkpOw0kc2l6ZSA9IHNpemVvZigkZnApOw0kYXVzZ2FiZSA9IGZhbHNlOw0vLyBEYXRlaSBzY2hyZWliZW4sIHdlbm4gTGlzdGUgdm9sbDoNaWYoJHNpemUgPj0gJGFuemFobGVpbnRyYWVnZSl7DQlzY2hyZWliZW4oJHJlbG9hZGxvZ2RhdGVpLCJ3Iik7DQ0vLyBQcnVlZmVuLCBvYiBlaW5lIElQIGluIGRlciBMaXN0ZSBzdGVodA19IGVsc2Ugew0JZm9yICgkaT0wOyRpPD0kc2l6ZTskaSsrKSB7DSAgICAgIAlAJHplaWxlID0gZXhwbG9kZSgifCIsJGZwWyRpXSk7DSAgICAgIAkvLyBJUCB3aXJkIGdlZnVuZGVuDSAgICAgIAlpZiAoJHplaWxlWzBdID09ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdIEFORCAkemVpbGVbMV0gPiAodGltZSgpLSRyZWxvYWRsaW1pdCkgJiYgdHJpbSgkemVpbGVbMl0pID09IHRyaW0oJHNlYXJjaCkpew0JCQkkYXVzZ2FiZSA9IHRydWU7DQkJLy8gSVAgd2lyZCBuaWNodCBnZWZ1bmRlbg0JCS8vfSBlbHNlICB7DSAgICAgICAgCS8vCSRhdXNnYWJlID0gZmFsc2U7DSAgICAgIAl9DQl9DQkvLyBQcm90b2tvbGxpZXJ0IGRpZSBJUC1BZHJlc3NlIChzY2hyZWlidCk6DQlzY2hyZWliZW4oJHJlbG9hZGxvZ2RhdGVpLCJhKyIpOw0JfQ0JcmV0dXJuIEAkYXVzZ2FiZTsNfQ0NLy8gamV0enQgTG9nZmlsZSB1bmQgQmVuYWNocmljaHRpZ3VuZ3MtTWFpbCBzY2hyZWliZW46DQ1pZihpcF9zcGVycmUoKT09ZmFsc2UpIHsNDQkvLyBCZW5hY2hyaWNodGlndW5ncyBNYWlsOg0JaWYoJG1haWwgPT0gdHJ1ZSAmJiAkc2VhcmNoICE9ICR2YWx1ZSkgew0gICAgICBpZiAoISRzZW5kZXIpICRzZW5kZXIgPSAiU3VjaHNjcmlwdCI7DQkJbWFpbCgkYWRtaW5hZGRyZXNzLCJTdWNoZSBhdWYgJHNlaXRlIiwiRm9sZ2VuZGVyIEJlZ3JpZmYgd3VyZGUgc29lYmVuIGF1ZiBkZXIgU2VpdGUgJHNlaXRlIGdlc3VjaHQ6IFxuJHNlYXJjaFxuVHJlZmZlcjogJGZvdW5kIiwNICAgICAgIkZyb206ICRzZW5kZXIiICk7DQl9DQ0JLy8gTG9nZmlsZSBzY2hyZWliZW46DQkkdG9kYXkgPSBkYXRlKCJkLm0uIEg6aSAiKTsNCSRubCA9IGh0bWxfZW50aXR5X2RlY29kZSgkdG9kYXkuJHNlYXJjaCkuIigiLiRmb3VuZC4iKVxuIjsNCSRsaW5lcyA9IGZpbGUoJ3NlYXJjaGxvZy50eHQnKTsNCSRsaW5lcyA9IGFycmF5X3VuaXF1ZSgkbGluZXMpOyAvLyBEdXBsaWthdGUgbG9lc2NoZW4NDQ0JLy8gV2VubiBtZWhyIGFscyAkbWF4bXNnIChkZWZhdWx0OjEwMCkgTG9nZWludHJhZWdlIGFlbHRlc3RlIGxvZXNjaGVuOg0JLy8gJG1heG1zZyA9IDEwMDsNCWlmKGNvdW50KCRsaW5lcykgPiAkbWF4bXNnKSB1bnNldCgkbGluZXNbMF0pOw0NCSRubCA9IGltcGxvZGUoIiIsICRsaW5lcykuJG5sOw0JJGZwID0gZm9wZW4oJ3NlYXJjaGxvZy50eHQnLCAndycpOw0JZndyaXRlKCRmcCwgJG5sKTsNCWZjbG9zZSgkZnApOw19DQ0NDQlpZigkZm91bmQgPT0gIjAiKQl7DQkJZWNobyAkbm9yZXN1bHQ7DQkJLy8gU3lub255bWRhdGVpIGFubGVnZW4sIHdlbm4gJHNlYXJjaCBkcmluc3RlaHQsIGluIGFycmF5IGxlc2VuIHVuZCBhdXNnZWJlbjoNCQkvLyBhbGxlIFN5bm9ueW1lIGluIGVpbmUgWmVpbGUsIGFsbGUgYXVzd2VydGVuDQkJLy8gd2VubiBuaWNodDoNCQlpZiAoc3RybGVuKCRzZWFyY2gpID4gJGxlbmd0aCAmJiAkdm9yc2NobGFnICE9ICIiKSB7DQkJCSRzeW4gPSBzdWJzdHIoJHNlYXJjaCwwLCRsZW5ndGgpOw0JCQllY2hvICI8cD4kdm9yc2NobGFnIDxhIGhyZWYgPVwiIi4gYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pLiI/cT0kc3luJmFtcDtnZWdlbj1cIj4kc3luPC9hPi48L3A+IjsNCQl9DQl9DQ0JaWYoJGZvdW5kID09ICIxIiAmJiAkanVtcCA9PSB0cnVlICYmICRfU0VSVkVSWydQSFBfU0VMRiddICE9IHN1YnN0cigkbGluaywxKSkJeyAvL2RhcyBTdWNoc2NyaXB0IHNlbGJzdCBkYXJmIG5pY2h0IGFuZ2VzcHJ1bmdlbiB3ZXJkZW46IEVuZGxvc3NjaGxlaWZlDSAgCQkkbGluayA9IHN1YnN0cigkbGluaywxKTsJLy9kZW4gUHVua3Qgdm9yIGRlbSBkaXIgd2VnDQ0JCS8vIGRvcHBlbHRlIHNsYXNoIHZvciBEYXRlaW5hbWVuIHVudGVyZHLDvGNrZW4NCQkkZGlybmFtZSA9IGRpcm5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pOw0JCWlmKCRkaXJuYW1lID09ICIvIikgJGRpcm5hbWUgPSAiIjsNCQkvLyBiYWNrc2xhc2ggdm9uIFdpbmRvd3MgU2VydmVybiByYXVzOg0JCSRkaXJuYW1lID0gc3RyX3JlcGxhY2UoIlxcIiwiIiwkZGlybmFtZSk7DQ0JCWlmIChpc3NldCgkcXVlcnkpKXsNCQkJaGVhZGVyKCJMb2NhdGlvbjogaHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRkaXJuYW1lLiIvIi4kbGluay4iJnE9Ii4kc2VhcmNoKTsNCQl9IGVsc2Ugew0JCQloZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJGRpcm5hbWUuJGxpbmsuIj9xPSIuJHNlYXJjaCk7DQkJfQ0JCWV4aXQ7DQl9DQ0JaWYoJGZvdW5kID4gIjEiKSB7DSAgICAgICAgJG4gPSAkcGx1cmFsOyAkZSA9ICJlIjsgJHMgPSAicyI7DQl9IGVsc2Ugew0gICAgCSRlID0gJG4gPSAkcyA9ICIiOw0JfQ0NCWlmKCRmb3VuZCA+PSAiMSIpIHsNDQkJJGFycmF5ID0gZXhwbG9kZSgiXG4iLCAkYXJyYXkpOw0JCW5hdHNvcnQoJGFycmF5KTsNCQlyZXNldCgkYXJyYXkpOw0JCWlmICghaXNzZXQoJHJldmVyc2Vzb3J0KSkgeyRhcnJheSA9IGFycmF5X3JldmVyc2UoJGFycmF5KTt9DQ0gICAgICAkaSA9ICRhbnpfZGF0Ow0NDSAgICAgIC8vIGFuc3RlbGxlIGRlciB3aGlsZSBlaW4gZm9yIFNjaGxlaWZlLCB3ZW5uIGljaCB3ZWl0ZXJlIFNlaXRlbiBhbnplaWdlbiB3aWxsOg0gICAgICAkbmV4dD0wOw0gICAgICBpZihpc3NldCgkX0dFVFsibmV4dCJdKSB8fCBpc3NldCgkX1BPU1RbIm5leHQiXSkpIHsNICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyJuZXh0Il0pICYmICRfR0VUWyJuZXh0Il0gIT0gIiIpICRuZXh0ID0gJF9HRVRbIm5leHQiXTsNICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsibmV4dCJdKSAmJiAkX1BPU1RbIm5leHQiXSAhPSAiIikgJG5leHQgPSAkX1BPU1RbIm5leHQiXTsNICAgICAgfQ0gICAgICANICAgICAgJG5leHQxPSRuZXh0KzE7DSAgICAgICR3ZWl0ZXI9JG5leHQrJGFuel9kYXQ7DSAgICAgIGZvcigkY291bnQgPSAwICsgJG5leHQ7ICRjb3VudCA8ICRhbnpfZGF0ICsgJG5leHQ7ICRjb3VudCsrKSB7DSAgICAgICAgIGlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICBpZiAoQCRhcnJheVskY291bnRdKSAkYXVzZ2FiZSAuPSAiPGxpPiIuc3Vic3RyKHN0cnN0cigkYXJyYXlbJGNvdW50XSwgJzxhIGhyZWYnKSwwKS4iPC9saT5cbiI7DSAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgIGlmIChAJGFycmF5WyRjb3VudF0pICRhdXNnYWJlIC49ICI8aWZyYW1lIGNsYXNzPSdzZWFyY2hpZnJhbWUnIHNyYz0nIi4kYXJyYXlbJGNvdW50XS4iJz48L2lmcmFtZT5cbiI7DSAgICAgICAgIH0NICAgICAgfQ0NCQlpZiAoIWlzc2V0KCRmb3VuZHR4dDEpKXskZm91bmR0eHQxID0gIklociBTdWNoYmVncmlmZiB3dXJkZSAiO30NCQlpZiAoIWlzc2V0KCRmb3VuZHR4dDIpKXskZm91bmR0eHQyID0gIlNlaXRlIjt9DQkJaWYgKCFpc3NldCgkZm91bmR0eHQzKSl7JGZvdW5kdHh0MyA9ICIgZ2VmdW5kZW4uIjt9DQ0JCWVjaG8gJzxwPicuJGZvdW5kdHh0MS4nPHN0cm9uZz4gJy4kZm91bmQuJyA8L3N0cm9uZz4nLiRmb3VuZHR4dDIuJG4uJyAnLiRmb3VuZHR4dDM7DQ0gICAgICBpZiAoJG5leHQgPT0gMCkgew0gICAgICAgICAgICBpZiAoJGFuel9kYXQgPCAkZm91bmQpIHsNICAgICAgCQkJaWYgKGlzc2V0KCRhbmdlemVpZ3R0eHQpKXsNICAgICAgICAgCQkJCWVjaG8gJGFuZ2V6ZWlndHR4dDsNICAgICAgCQkJfSBlbHNlIHsNICAgICAgICAgCQkJCWVjaG8gIi48YnIgLz5BbmdlemVpZ3Qgd2VyZGVuIDxzdHJvbmc+JGFuel9kYXQ8L3N0cm9uZz4gRXJnZWJuaXNzZSBwcm8gU2VpdGUiOw0gICAgICAJCQl9DSAgICAgIAkJfQ0gICAgICANICAgICAgCQlpZigkdHJlZmZlciAmJiAkZm91bmQgPiAxICYmICRzZWFyY2hfY291bnQgPT0gMSkgew0gICAgICAJCQlpZiAoaXNzZXQoJHNvcnR0eHQpKXsNICAgICAgCQkJCSRzb3J0aGlud2VpcyA9ICRzb3J0dHh0Ow0gICAgICAJCQl9IGVsc2Ugew0gICAgICAJCQkJJHNvcnRoaW53ZWlzID0gIiwgc29ydGllcnQgbmFjaCBbQW56YWhsJm5ic3A7ZGVyJm5ic3A7VHJlZmZlciZuYnNwO3BybyZuYnNwO0Rva3VtZW50XSI7DSAgICAgIAkJCX0NICAgICAgCQl9DSAgICAgICAgICAgICAgICAgIGVjaG8gIiRzb3J0aGlud2Vpcy4iOw0gICAgICB9DSAgICAgIGVjaG8gIjwvcD4iOw0NLy8gTmV1ZXMgRmVuc3Rlcg1pZiAoJHRhcmdldCA9PSAiIiAmJiAkdGFyZ2V0d2FobCA9PSB0cnVlKSB7DWVjaG8nDTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NLyogPCFbQ0RBVEFbICovDWlmKGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKFwnc3VjaG9lZmZuZW5cJykgIT09IC0xKXsNICAgYWRkRXZlbnQod2luZG93LCBcJ2xvYWRcJywgbGlua29wZW5lcik7DSAgIGRvY3VtZW50LndyaXRlIChcJzxmb3JtIGFjdGlvbj0iIj48cCBjbGFzcz0ibGlua29wZW5lciI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJjaGVja2VkIiBvbmNoYW5nZT0ibGlua2Nvb2tpZSgpIiBvbmNsaWNrPSJsaW5rb3BlbmVyKHRoaXMuY2hlY2tlZCkiIGlkPSJsaW5rc25ld3dpbiIgLz4gPGxhYmVsIGZvcj0ibGlua3NuZXd3aW4iPlRyZWZmZXIgaW4gbmV1ZW0gRmVuc3RlciAmb3VtbDtmZm5lbj8gPFwvbGFiZWw+PFwvcD48XC9mb3JtPlwnKTsNfSBlbHNlIHsNICAgZG9jdW1lbnQud3JpdGUgKFwnPGZvcm0gYWN0aW9uPSIiPjxwIGNsYXNzPSJsaW5rb3BlbmVyIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uY2hhbmdlPSJsaW5rY29va2llKCkiIG9uY2xpY2s9ImxpbmtvcGVuZXIodGhpcy5jaGVja2VkKSIgaWQ9ImxpbmtzbmV3d2luIiAvPiA8bGFiZWwgZm9yPSJsaW5rc25ld3dpbiI+VHJlZmZlciBpbiBuZXVlbSBGZW5zdGVyICZvdW1sO2ZmbmVuPyA8XC9sYWJlbD48XC9wPjxcL2Zvcm0+XCcpOw19DS8qIF1dPiAqLw08L3NjcmlwdD4NJzsNfQ0NICAgICAgICAgICAgLy8gYmlzICM3NzMgZ2VhZW5kZXJ0IHdnLiBuZXh0DSAgICAgICAgICAgICRsaXN0X2FydD0idWwiOw0gICAgICAgICAgICBpZiAoJG51bV9saXN0KSRsaXN0X2FydD0ib2wgc3RhcnQ9JG5leHQiOw0NICAgICAgICAgICAgLy8gdW0gWE1MIEZlaGxlciAoSFRNTCBUaWR5IFdhcm51bmdlbikgenUgdW50ZXJiaW5kZW46DSAgICAgICAgICAgIC8vICRhdXNnYWJlID0gc3RyX3JlcGxhY2UoIiAmICIsIiAmYW1wOyAiLCRhdXNnYWJlKTsNDSAgICAgICAgICAgIC8vIG9kZXIgcmVnZXg6IGh0dHA6Ly93d3cudGltcmVldmVzLmRlL25ldS93ZWJkZXNpZ24vd2ViLTIwLnBocA0gICAgICAgICAgICAkc3VjaG11c3RlciA9ICcvJig/IShbYS16QS1aXXsyLDd9fCNcZCt8I3hbMC05YS1mQS1GXSspOykvaSc7DSAgICAgICAgICAgICRlcnNldHp1bmcgPSAnJmFtcDsnOw0gICAgICAgICAgICAkYXVzZ2FiZSA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwgJGVyc2V0enVuZywgJGF1c2dhYmUpOw0NICAgICAgICAgICAgaWYgKCRpZnJhbWUgIT09IHRydWUpIHsgDSAgICAgICAgICAgICAgIGlmICgkbnVtX2xpc3QpIHsNICAgICAgICAgICAgICAgICAgZWNobyAiXG48b2wgc3RhcnQ9JyIuJG5leHQxLiInPlxuIi4kYXVzZ2FiZS4iPC9vbD5cbiI7DSAgICAgICAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgICAgICAgIGVjaG8gIlxuPHVsPlxuIi4kYXVzZ2FiZS4iPC91bD5cbiI7DSAgICAgICAgICAgICAgIH0NICAgICAgICAgICAgfSBlbHNlIHsNICAgICAgICAgICAgICAgZWNobyAiXG4iLiRhdXNnYWJlLiJcbiI7DSAgICAgICAgICAgIH0NDSAgICAgIGlmICgkbmV4dCA8ICgkZm91bmQgLSAkYW56X2RhdCkpIHsNICAgICAgDSAgICAgICAgIGlmICgkbWV0aG9kID09ICJHRVQiKSB7DSAgICAgICAgICAgIC8vbmV4dCByYXVzLCB3ZWlscyBzb25zdCB4LW1hbCBhbmdlaGFlbmd0IHdpcmQ6DSAgICAgICAgICAgICRxdWVyeXN0cmluZyA9ICIiOw0gICAgICAgICAgICBpZihpc3NldCgkX1NFUlZFUlsiUVVFUllfU1RSSU5HIl0pKSB7IA0gICAgICAgICAgICAgICAkcXVlcnlzdHJpbmcgPSAkX1NFUlZFUlsiUVVFUllfU1RSSU5HIl07IA0gICAgICAgICAgICAgICAkZmlyc3RxdWVyeSA9IHN0cnBvcygkcXVlcnlzdHJpbmcsIiZuZXh0Iik7DSAgICAgICAgICAgICAgIGlmICgkZmlyc3RxdWVyeSAhPT0gZmFsc2UpIHsgDSAgICAgICAgICAgICAgICAgICRxdWVyeXN0cmluZyA9IHN1YnN0cigkcXVlcnlzdHJpbmcsMCwkZmlyc3RxdWVyeSk7IA0gICAgICAgICAgICAgICB9DSAgICAgICAgICAgIH0NICAgICAgICAgICAgJHF1ZXJ5c3RyaW5nID0gc3RyX3JlcGxhY2UoIiYiLCImYW1wOyIsJHF1ZXJ5c3RyaW5nKTsNICAgICAgICAgICAgZWNobyAnPHAgY2xhc3M9IndlaXRlciI+PGEgaHJlZj0iJy5iYXNlbmFtZSgkX1NFUlZFUlsiUEhQX1NFTEYiXSkuJz8nLiRxdWVyeXN0cmluZy4nJmFtcDtuZXh0PScuJHdlaXRlci4nIj4nLiR3ZWl0ZXJ0eHQuJzwvYT48L3A+JzsNICAgICAgICAgfQ0gICAgICB9DQl9DX0NDQ1lbHNlIHtlY2hvICRtaW5sZW5ndGg7fQ19DQ1lY2hvICRzZWFyY2h0aXA7DQ0kbXRpbWUgPSBtaWNyb3RpbWUoKTsgJG10aW1lID0gZXhwbG9kZSggJyAnLCAkbXRpbWUpOyAkbXRpbWUgPSAkbXRpbWVbMV0gKyAkbXRpbWVbMF07DSRzdWNoX2VuZGUgPSAkbXRpbWU7DSR0aW1lX2dlc2FtdCA9ICRzdWNoX2VuZGUgLSAkc3VjaF9zdGFydDsNDWVjaG8gIjxkaXYgaWQ9XCJzZWFyY2hmb290ZXJcIj48cD4iOw0NaWYgKGlzc2V0KCRhbnphaGxkYXQpKXsNCSR6ZGF0ID0gJGFuemFobGRhdDsNCX0gZWxzZSB7DQkkemRhdCA9ICJBbnphaGwgZHVyY2hzdWNodGVyIERhdGVpZW46ICI7DX0NDWlmICgkemFobHplaWcgJiYgJGZvdW5kID4gMCkgZWNobyAkemRhdC4kZHVyY2hzdWNodC4iPGJyIC8+IjsNDWlmICgkZm91bmQgPiAwKSB7DQlpZiAoaXNzZXQoJHRpbWV0eHQpKXsNCQkkdGltZWhpbndlaXMgPSAkdGltZXR4dDsNCX0gZWxzZSB7DQkJJHRpbWVoaW53ZWlzID0gIlN1Y2hlIGF1c2dlZiZ1dW1sO2hydCBpbiAiOw0JfQ0NCWlmKCRkYXVlcikgew0JICAgICAgZWNobyAiJHRpbWVoaW53ZWlzIi5udW1iZXJfZm9ybWF0KCR0aW1lX2dlc2FtdCwyLCcsJywnLicpLiIgJHN1Y2hkYXVlciAkdmVyc2lvblxuIjsNCX0gZWxzZSB7DQkgICAgICBlY2hvICJcbiR2ZXJzaW9uXG4iOw0JfQ19IGVsc2Ugew0gICAgICBlY2hvICJcbiR2ZXJzaW9uXG4iOw19DWVjaG8gIjwvcD48L2Rpdj4iOw1lY2hvICR3ZHc7DQ==";eval(base64_decode($NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ)); 
 
?> 

Did this file decode correctly?

Original Code

<?php

###############################################################################
# PHP Suchscript - Version vom 12.07.2011                                     #
# copyright webdesign weisshart                                               #
# http://webdesign.weisshart.de                                               #
# dieser copyright Hinweis darf nicht entfernt werden!                        #
#                                                                             #
# Sie knnen dieses Script kostenlos einsetzen,                               #
# solange Sie die Links auf webdesign.weisshart.de unverndert intakt lassen. #
# Wenn Sie die Links auf webdesign.weisshart.de entfernen wollen,             #
# knnen Sie eine Lizenz erwerben bei                                         #
# http://webdesign.weisshart.de/suchen-lizenz.php                             #
###############################################################################
include("search_config.php");

$NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ="Ly8gTmV0dCwgZGFzcyBTaWUgc2ljaCBmdWVyIG1laW5lbiBzb3VyY2Vjb2RlIGludGVyZXNzaWVyZW4uIERlciBMaW5rIGF1ZiB3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIGRhcmYgbnVyIG5hY2ggRXJ3ZXJiIGVpbmVyIExpemVueiBlbnRmZXJudCB3ZXJkZW4hDS8vIEBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsICcxJyk7DQ1zZXRsb2NhbGUgKExDX0NUWVBFLCAnZGVfREUnKTsgLy8gc3RydG9sb3dlciBhdWNoIG1pdCBVbWxhdXRlbg0NaWYgKCFAaW5pX2dldCgnc2FmZV9tb2RlJykpIEBzZXRfdGltZV9saW1pdCg0NSk7DSRtdGltZSA9IG1pY3JvdGltZSgpOyAkbXRpbWUgPSBleHBsb2RlKCAnICcsICRtdGltZSk7ICRtdGltZSA9ICRtdGltZVsxXSArICRtdGltZVswXTsNJHN1Y2hfc3RhcnQgPSAkbXRpbWU7DQ0kdmVyc2lvbj0gJzwhLS0gVmVyc2lvbiAxMi4wNy4xMSAtLT4nOw0NDWlmIChwaHB2ZXJzaW9uKCkgPCAnNC4zLjAnKSB7DQllY2hvICI8cD5EaWVzZXMgU2NyaXB0IGVyZm9yZGVydCBQSFAgVmVyc2lvbiA0LjMuMCBvZGVyIGgmb3VtbDtoZXIhPGJyIC8+IjsNCWVjaG8gImF1ZiBJaHJlbSBTZXJ2ZXIgbCZhdW1sO3VmdCBhYmVyIFBIUCBWZXJzaW9uICIucGhwdmVyc2lvbigpLiIuPC9wPiI7DQlleGl0Ow19DQ0kbWV0aG9kID0gJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ107DQ0kYXJyYXkgPSAiIjsNJGF1c2dhYmUgPSIiOw0kZm91bmQgPSAwOw0kZSA9ICIiOw0kc29ydGhpbndlaXMgPSAiIjsNJGxpbmsgPSAiIjsNJGR1cmNoc3VjaHQgPSAwOw0NaWYgKCFpc3NldCgkcGx1cmFsKSl7DQkkcGx1cmFsID0gIm4iOw19DQ1pZiAoIWlzc2V0KCRwdW5jdCkpew0JJHB1bmN0ID0gIm5vIjsNfQ0NaWYgKCFpc3NldCgkbWF4bXNnKSl7DQkkbWF4bXNnID0gMTAwOw19DQ1pZiAoIWlzc2V0KCRkYXRlZm9ybSkpew0JJGRhdGVmb3JtID0gImRlIjsNfQ0NaWYgKCFpc3NldCgkc3VjaGRhdWVyKSl7DQkkc3VjaGRhdWVyID0gIlNla3VuZGVuIjsNfQ0NaWYgKCFpc3NldCgkYmVzY2hyZWliKSl7DQkkYmVzY2hyZWliID0gIkJlc2NocmVpYnVuZzogIjsNfQ0NaWYgKCFpc3NldCgkdHJlZmYpKXsNCSR0cmVmZiA9ICJUcmVmZmVyIjsNfQ0NaWYgKCFpc3NldCgkZmlsZWRhdGUpKXsNCSRmaWxlZGF0ZSA9ICJ6dWxldHp0IGdlJmF1bWw7bmRlcnQgYW0gIjsNfQ0NaWYgKCFpc3NldCgkbm9yZXN1bHQpKXsNCSRub3Jlc3VsdCA9ICI8cD48YnIgLz5FcyB3dXJkZW4gbGVpZGVyIGtlaW5lIGV4YWt0ZW4gJlV1bWw7YmVyZWluc3RpbW11bmdlbiBtaXQgZGVtIGVpbmdlZ2ViZW5lbiBTdWNoYmVncmlmZiBnZWZ1bmRlbi48YnIgLz5WaWVsbGVpY2h0IHdvbGxlbiBTaWUgZXMgbWl0IGVpbmVtIGFsbGdlbWVpbmVyZW4gU3VjaGJlZ3JpZmYgdmVyc3VjaGVuLjwvcD4iOw19DQ1pZiAoIWlzc2V0KCR2b3JzY2hsYWcpKXsNCSR2b3JzY2hsYWcgPSAiT2RlciBTaWUgdmVyc3VjaGVuIGVzIGVpbmZhY2ggbWFsIG1pdCI7DX0NDWlmICghaXNzZXQoJG1pbmxlbmd0aCkpew0JJG1pbmxlbmd0aCA9ICI8cD48YnIgLz5HZWJlbiBTaWUgYml0dGUgZWluZW4gU3VjaGJlZ3JpZmYgdm9uIG1pbmRlc3RlbnMmbmJzcDsiLiRsZW5ndGguIiZuYnNwO0J1Y2hzdGFiZW4gTCZhdW1sO25nZSBlaW4uPC9wPiI7DX0NDQ1pZiAoIWlzc2V0KCRleGNsdWRlX3N0cmluZ3MpKXsNICAgJGV4Y2x1ZGVfc3RyaW5ncyA9IGFycmF5KCk7DX0NDWlmICghaXNzZXQoJGlmcmFtZSkpew0gICAkaWZyYW1lPWZhbHNlOw19DQ1pZiAoIWlzc2V0KCR0YXJnZXR3YWhsKSl7DSAgICR0YXJnZXR3YWhsPWZhbHNlOw19DQ0vLyB2ZXJib3RlbmUgWmVpY2hlbg0kZXhjbHVkZV9zdHJpbmdzMiA9IGFycmF5KA0gICAnXFwnLCAvLyBkYXMgXCBkaWVudCB6dW0gTWFza2llcmVuIHZvbiByZXNlcnZpZXJ0ZW4gWmVpY2hlbiANCSJcJyIsDSAgICcqJywNICAgJysnLA0gICAnLycNKTsNDSRleGNsdWRlX3N0cmluZ3NfbWVyZ2UgPSBhcnJheV9tZXJnZSgkZXhjbHVkZV9zdHJpbmdzLCAkZXhjbHVkZV9zdHJpbmdzMik7DQ0NaWYgKGlzc2V0KCRzdWNodGlwMCkpew0JJHNlYXJjaHRpcDAgPSAiXG4kc3VjaHRpcDBcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDAgPSAiXG48aDM+U3VjaHRpcHBzOjwvaDM+XG4iOw19DQ1pZiAoaXNzZXQoJHN1Y2h0aXAxKSl7DQkkc2VhcmNodGlwMSA9ICI8dWw+XG4kc3VjaHRpcDFcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDEgPSAiPHVsPlxuPGxpPkRpZSBFaW5nYWJlIHZvbiBQbGF0emhhbHRlcnplaWNoZW4gKCopIGlzdCBuaWNodCBlcmZvcmRlcmxpY2guPC9saT5cbiI7DX0NDWlmIChpc3NldCgkc3VjaHRpcDIpKXsNCSRzZWFyY2h0aXAyID0gIiRzdWNodGlwMlxuIjsNCX0gZWxzZSB7DQkkc2VhcmNodGlwMiA9ICI8bGk+V2VubiBTaWUgSWhyZSBTdWNoZSBhdWYgZ2FuemUgV/ZydGVyIGVpbnNjaHLDpG5rZW4gd29sbGVuLCBm/GdlbiBTaWUgdm9yIHVuZCBuYWNoIGRlbSBTdWNoYmVncmlmZiBqZXdlaWxzIGVpbiBMZWVyemVpY2hlbiBlaW4uPC9saT4iOw19DQ1pZiAoaXNzZXQoJHN1Y2h0aXAzKSl7DQkkc2VhcmNodGlwMyA9ICIkc3VjaHRpcDNcbiI7DQl9IGVsc2Ugew0JJHNlYXJjaHRpcDMgPSAiPGxpPk1laHJlcmUgV/ZydGVyIHdlcmRlbiBhdXRvbWF0aXNjaCBtaXQgVU5EIHZlcmtu/HBmdC48L2xpPiI7DX0NDWlmICghaXNzZXQoJHdlaXRlcnR4dCkpew0JJHdlaXRlcnR4dCA9ICJ3ZWl0ZXJlIFRyZWZmZXIgemVpZ2VuIjsNfQ0NDWlmICghaXNzZXQoJHNlYXJjaCkpIHskc2VhcmNoID0gJHZhbHVlO30NDQ0NDQ0kc2VhcmNodGlwNCA9ICIiOw1pZiAoJGp1bXAgPT0gdHJ1ZSAmJiAkdGFyZ2V0ID09ICIiKSB7DQ0JaWYgKGlzc2V0KCRzdWNodGlwNCkpew0JCSRzZWFyY2h0aXA0ID0gIiRzdWNodGlwNFxuIjsNCQl9IGVsc2Ugew0JCSRzZWFyY2h0aXA0ID0gIjxsaT5GYWxscyBkaWUgU3VjaGUgbnVyIGVpbmVuIGVpbnppZ2VuIFRyZWZmZXIgZXJnaWJ0LCB3aXJkIGRpZSBUcmVmZmVyc2VpdGUgZGlyZWt0IGFuZ2VzcHJ1bmdlbi48L2xpPlxuIjsNCX0NfQ0NJHNlYXJjaHRpcDUgPSAiPC91bD5cbiI7DQ1pZiAoJHRpcHBzKSB7JHNlYXJjaHRpcCA9ICRzZWFyY2h0aXAwLiRzZWFyY2h0aXAxLiRzZWFyY2h0aXAyLiRzZWFyY2h0aXAzLiRzZWFyY2h0aXA0LiRzZWFyY2h0aXA1OyB9ZWxzZSB7JHNlYXJjaHRpcCA9IiI7fQ0NLy8gYmcgZnVlciBDcmVkaXQtTGluazoNaWYgKCFpc3NldCgkYmcpKSAkYmcgPSAiI0ZGRkZGRiI7DWlmIChzdHJwb3MoJGJnLCcjJykgPT09IGZhbHNlKSAkYmcgPSAnIycuJGJnOw0NaWYgKHByZWdfbWF0Y2goJy9eI1swLTlBLUZdezEsNn0kL2knLCAkYmcpICYmIHN0cmxlbigkYmcpID09IDcpIHsNDSAgICAgICRyZWRIID0gYmFzZV9jb252ZXJ0KHN1YnN0cigkYmcsIDEsIDIpLCAxNiwgMTApOw0gICAgICAkZ3JlZW5IID0gYmFzZV9jb252ZXJ0KHN1YnN0cigkYmcsIDMsIDIpLCAgMTYsIDEwKTsNICAgICAgJGJsdWVIID0gYmFzZV9jb252ZXJ0KHN1YnN0cigkYmcsIDUsIDIpLCAgMTYsIDEwKTsNDSAgICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL0FFUlQjY29sb3ItY29udHJhc3QNICAgICAgJHN1bSA9ICRyZWRIKjI5OSArICRncmVlbkgqNTg3ICsgJGJsdWVIKjExNDsNICAgICAgaWYgKCRzdW0gPCAxMjcwMDAgKSB7DSAgICAgICAgICAgJGNvbXAgPSAiI0ZGRkZGRiI7DSAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgJGNvbXAgPSIjMDAwMDAwIjsNICAgICAgfQ19IGVsc2Ugew0gICAgICAkZmVobGVyID0gMTsNICAgICAgJGJnID0gIiNGRkZGRkYiOw0gICAgICAkY29tcCA9ICIjMDAwMDAwIjsNfQ0NJHdkdyA9ICc8cCBzdHlsZT0iZGlzcGxheTpibG9jayAhaW1wb3J0YW50OyBmb250LXNpemU6IDEwcHggIWltcG9ydGFudDsgY29sb3I6Jy4kY29tcC4nICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6Jy4kYmcuJyAhaW1wb3J0YW50Ij5zY3JpcHQmbmJzcDsmY29weTsmbmJzcDsyMDExJm5ic3A7YnkmbmJzcDs8YSBzdHlsZT0iY29sb3I6Jy4kY29tcC4nICFpbXBvcnRhbnQ7IGRpc3BsYXk6aW5saW5lICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMTBweCAhaW1wb3J0YW50OyBmb250LXdlaWdodDpub3JtYWwgIWltcG9ydGFudDsgdGV4dC1kZWNvcmF0aW9uOm5vbmUgIWltcG9ydGFudCIgaHJlZj0iaHR0cDovL3dlYmRlc2lnbi53ZWlzc2hhcnQuZGUiPndlYmRlc2lnbiZuYnNwO3dlaXNzaGFydDwvYT48L3A+JzsNDWlmIChpc3NldCgkcHdkKSkgew0JJHNlcnZlciA9IHN0cl9yZXBsYWNlICgid3d3LiIsIiIsICRfU0VSVkVSWydTRVJWRVJfTkFNRSddICk7DQkkc2VydmVyID0gc3RyX3JlcGxhY2UgKCIrIiwiIiwgJHNlcnZlcik7DQkkc2VydmVyID0gc3RyX3JlcGxhY2UgKCItIiwiIiwgJHNlcnZlcik7DQkkZG9tID0gY3JjMzIoJHNlcnZlcik7DSAgICAgICRjaGF2ZSA9ICRwd2QgLyBzcHJpbnRmKCIldSIsICRkb20pOw19DWlmIChpc3NldCgkY2hhdmUpICYmICRjaGF2ZSA9PSAiMzIxIil7DQkkd2R3ID0nJzsNfQ0NJHRpbWVfb2xkID0gMDsgLy8gZsO8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ0NDS8vIG5ldWVzIEZlbnN0ZXINZWNobycNPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0vKiA8IVtDREFUQVsgKi8NLy8gaHR0cDovL3d3dy5kcndlYi5kZS90cmlja2tpc3RlL3RyaWNrczIxNC5zaHRtbA1mdW5jdGlvbiBsaW5rb3BlbmVyKGEpIHsNICAgdmFyIGI9YT8iX2JsYW5rIjoiX3NlbGYiOw0gICB2YXIgYz1kb2N1bWVudC5saW5rczsNICAgZm9yKHZhciBpPTA7aTxjLmxlbmd0aDtpKyspIHsNICAgCWNbaV0udGFyZ2V0PWI7DSAgIH0NfQ0NZnVuY3Rpb24gbGlua2Nvb2tpZSgpIHsNICAgaWYoZG9jdW1lbnQuY29va2llLmluZGV4T2YoInN1Y2hvZWZmbmVuIikgIT09IC0xKXsNICAgICAgZG9jdW1lbnQuY29va2llID0gInN1Y2g9MDtwYXRoPS87ZXhwaXJlcz1UaHUsIDAxLUphbi03MCAwMDowMDowMSBHTVQiOw0gICB9IGVsc2Ugew0gICAgIGRvY3VtZW50LmNvb2tpZT0ic3VjaD1zdWNob2VmZm5lbjsgcGF0aCA9LyI7DSAgIH0NfQ0NLy8gaHR0cDovL2ljaHdpbGwubmV0L2NoYXB0ZXI0Lmh0bWwNZnVuY3Rpb24gYWRkRXZlbnQob2JqLCBldlR5cGUsIGZuKXsNIGlmIChvYmouYWRkRXZlbnRMaXN0ZW5lcil7DSAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2VHlwZSwgZm4sIGZhbHNlKTsNICAgcmV0dXJuIHRydWU7DSB9IGVsc2UgaWYgKG9iai5hdHRhY2hFdmVudCl7DSAgIHZhciByID0gb2JqLmF0dGFjaEV2ZW50KCJvbiIrZXZUeXBlLCBmbik7DSAgIHJldHVybiByOw0gfSBlbHNlIHsNICAgcmV0dXJuIGZhbHNlOw0gfQ19DQ0vKiBdXT4gKi8NPC9zY3JpcHQ+DSc7DQ0NaWYoaXNzZXQoJF9HRVRbInEiXSkgfHwgaXNzZXQoJF9QT1NUWyJxIl0pKSB7DSAgICAgIGlmIChpc3NldCgkX0dFVFsicSJdKSAmJiAkX0dFVFsicSJdICE9ICIiKSAkc2VhcmNoID0gJF9HRVRbInEiXTsNICAgICAgaWYgKGlzc2V0KCRfUE9TVFsicSJdKSAmJiAkX1BPU1RbInEiXSAhPSAiIikgJHNlYXJjaCA9ICRfUE9TVFsicSJdOw0NDQlpZiAoc3RyaXN0cigkc2VhcmNoLCAiQ29udGVudC1UeXBlIikpJHNlYXJjaCA9ICJubyBzcGFtIGhlcmUhIjsNDQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZhdW1sOyIsICLkIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZvdW1sOyIsICL2IiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZ1dW1sOyIsICL8IiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZBdW1sOyIsICLEIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZPdW1sOyIsICLWIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZVdW1sOyIsICLcIiwgJHNlYXJjaCk7DQkkc2VhcmNoID0gc3RyX3JlcGxhY2UoIiZzemxpZzsiLCAi3yIsICRzZWFyY2gpOw0NCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyMjg7IiwgIuQiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyNDY7IiwgIvYiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyNTI7IiwgIvwiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMxOTY7IiwgIsQiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyMTQ7IiwgItYiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyMjA7IiwgItwiLCAkc2VhcmNoKTsNCSRzZWFyY2ggPSBzdHJfcmVwbGFjZSgiJiMyMjM7IiwgIt8iLCAkc2VhcmNoKTsNDSAgICRzZWFyY2ggPSBzdHJfcmVwbGFjZSgnIicsIiAiLCRzZWFyY2gpOw0NICAgaWYgKGZpbGVfZXhpc3RzKCJzZWFyY2hfcmVwbGFjZS5waHAiKSkge2luY2x1ZGUgKCJzZWFyY2hfcmVwbGFjZS5waHAiKTt9DQ0JLy8gdW5lcnd1ZW5zY2h0ZSBTdHJpbmdzIHZvbiBkZXIgU3VjaGUgYXVzc2NobGllc3Nlbg0JZm9yZWFjaCgkZXhjbHVkZV9zdHJpbmdzX21lcmdlIGFzICRrKSB7DSAgICAgICRzZWFyY2ggPSBzdHJfcmVwbGFjZSgkaywiIiwkc2VhcmNoKTsNICAgfQ0NDSAgICAgICRzZWFyY2ggPSBodG1sc3BlY2lhbGNoYXJzKCRzZWFyY2gpOw0JJHNlYXJjaCA9IHN0cl9yZXBsYWNlICggJyZhbXA7JywgJyYnLCAkc2VhcmNoICk7IC8vIGxhZXNzdCBodG1sIGVudGl0aWVzIHdpZSAmIzM1MTsgenUgKHouQi4gdHVlcmtpc2NoZSBTb25kZXJ6ZWljaGVuKQ0JLy9kaWUgZ2xlaWNoZSBaZWlsZSBhdWNoIGluIGRpZSBzdWNoZW4ucGhwLCBhdXNzZXJkZW0gWmVpbGUgNDggaGllciB3ZWdrb21tZW50aWVyZW4uDQ0NaWYoZW1wdHkoJHNlYXJjaCkpIHskc2VhcmNoPSIiO30NDWlmKHN0cmxlbigkc2VhcmNoKSA+PSAkbGVuZ3RoICYmICRzZWFyY2ggIT0gJHZhbHVlKSB7DQ0NCWlmIChpc3NldCgkc3VjaGhpbndlaXMpICYmICRzdWNoaGlud2VpcyAhPSAiIil7DQkJJHNlYXJjaGhpbndlaXMgPSAkc3VjaGhpbndlaXM7DQkJfSBlbHNlIHsNCQkkc2VhcmNoaGlud2VpcyA9ICJTaWUgc3VjaGVuIG5hY2giOw0JfQ0JZWNobyAnPHA+Jy4kc2VhcmNoaGlud2Vpcy4nIDxlbT4mcmFxdW87Jy4kc2VhcmNoLicmbGFxdW87PC9lbT4nOw0NLyoNCS8vZml4IGZ1ZXIgZGllIGZvbGdlbmRlIEZvcnRzY2hyaXR0c2FuemVpZ2UgaS5WLm12IGd6aXAhDQkkZW5jb2RlPSRfU0VSVkVSWydIVFRQX0FDQ0VQVF9FTkNPRElORyddOw0gICAJaWYgKHN0cnBvcygkZW5jb2RlLCdnemlwJykgPT09IGZhbHNlKSB7DQkJJGd6aXAgPSB0cnVlOw0JfQ0JaWYoJGp1bXAgIT09IHRydWUgJiYgISRnemlwKSB7DQkJb2JfZW5kX2ZsdXNoKCk7IG9iX3N0YXJ0KCk7IGVjaG8gIiI7IG9iX2ZsdXNoKCk7IGZsdXNoKCk7DQl9DSovDQ0NDQ0gICAgICAgIC8vIGRpZSBGdW5rdGlvbiB6dW0gZXh0cmFoaWVyZW4gdm9uIFRlaWxzdHJpbmdzDSAgICAgICAgZnVuY3Rpb24gYXVzbGVzZW4oJGFsbCwgJHN0YXJ0LCAkZW5kKSB7DSAgICAgICAgICAgICAgICBpZiAoc3RyaXN0cigkYWxsLCRzdGFydCkpIHsNICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0X3Bvcz1zdHJwb3Moc3RydG9sb3dlcigkYWxsKSxzdHJ0b2xvd2VyKCRzdGFydCkpICsgc3RybGVuKCRzdGFydCk7DSAgICAgICAgICAgICAgICAgICAgICAgICRyZXN0ID0gc3Vic3RyKCRhbGwsJHN0YXJ0X3Bvcyk7DSAgICAgICAgICAgICAgICAgICAgICAgICRlbmRfcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRyZXN0KSxzdHJ0b2xvd2VyKCRlbmQpKTsNICAgICAgICAgICAgICAgICAgICAgICAgJGVyZyA9IHN1YnN0cigkcmVzdCwwLCRlbmRfcG9zKTsNICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlcmc7DSAgICAgICAgICAgICAgICB9DSAgICAgICAgfQ0NDQkvLyBkaWUgRnVua3Rpb24genVtIER1cmNoc3VjaGVuIGRlcyBWZXJ6ZWljaG5pc2JhdW1zOg0JaWYgKCFpc3NldCgkZXhjbHVkZV9kaXJzKSkgJGV4Y2x1ZGVfZGlycyA9IGFycmF5KCIiKTsNDQlmdW5jdGlvbiB0cmVlKCRvcmRuZXIsICRzdWIgPSBGQUxTRSkgew0JCSBnbG9iYWwgJGVyZ2ViOw0JCSAkaGFuZGxlID0gb3BlbmRpcigkb3JkbmVyKTsNCQkgd2hpbGUgKGZhbHNlICE9PSAoJGZpbGUgPSByZWFkZGlyICgkaGFuZGxlKSkpIHsNCQkgICAgICAgaWYoJGZpbGUgIT0gIi4iICYmICRmaWxlICE9ICIuLiIgJiYgaXNfZGlyKCRvcmRuZXIuIi8iLiRmaWxlKSkgew0JICAgICAgIAkJJGNvbXBsID0gJG9yZG5lci4iLyIuJGZpbGUuIi8iOw0JICAgICAgIAkJLy9lY2hvICRjb21wbC4iPGJyPiI7DQkJCSRlcmdlYiA9ICRlcmdlYi4iLCIuJGNvbXBsOw0gICAgICAgIAkJdHJlZSgkb3JkbmVyLiIvIi4kZmlsZSwgVFJVRSk7DQkJCX0NCQl9DQkgIAljbG9zZWRpcigkaGFuZGxlKTsNCX0NDQlpZiAoJGFsbGVkaXJzKSB7DQkgICB0cmVlKCIuIik7DQkgICAkZXJnZWIgPSAiLi8iLiRlcmdlYjsNCSAgICRkaXJzID0gZXhwbG9kZSAoIiwiLCAkZXJnZWIpOw0JfQ0NCWZvcmVhY2goJGRpcnMgYXMgJGRpcikgew0gICAgICAgICAgIGlmKCFpbl9hcnJheSgkZGlyLCRleGNsdWRlX2RpcnMpKSB7DQkJLy9lY2hvICRkaXIuIjxicj4iOw0JCSR2ZXJ6ID0gb3BlbmRpcigkZGlyKTsNDQkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKCR2ZXJ6KSkgew0JCSRkdXJjaHN1Y2h0ID0gJGR1cmNoc3VjaHQgKyAxOw0JCQkvLyBlaW56ZWxuZSBEYXRlaWVuIHZvbiBkZXIgU3VjaGUgYXVzc2NobGllc3Nlbg0NCQkJLy8gZGllIGZvbGdlbmRlbiA4IFplaWxlbiBlcmxhdWJlbiBBdXNjaGx1c3Mgdm9uIFN1YnN0cmluZ3MgaW4gJGV4Y2x1ZGVfZmlsZXMNCQkJJG5vbGlzdD1mYWxzZTsNCQkJZm9yICgkZT0wOyRlPGNvdW50KCRleGNsdWRlX2ZpbGVzKTskZSsrKSB7DQkJCSAgICAkcG9zID0gc3RycG9zKCRmaWxlLCRleGNsdWRlX2ZpbGVzWyRlXSk7DQkJCSAgICBpZiAoJHBvcyAhPT0gZmFsc2UpIHsNCQkJICAgICAgICRub2xpc3QgPSB0cnVlOw0JCQkgICAgfQ0JCQl9IA0JCQlpZigkbm9saXN0ICE9PSB0cnVlICYmIHByZWdfbWF0Y2goIj0oXC4kZGF0X3R5cGUpJD0iLCRmaWxlKSkgew0vLwkJCWlmKCFpbl9hcnJheSgkZmlsZSwkZXhjbHVkZV9maWxlcykgJiYgcHJlZ19tYXRjaCgiPShcLiRkYXRfdHlwZSkkPSIsJGZpbGUpKSB7DQ0JCQkJLy8gTWV0YS1BbmdhYmVuIGVybWl0dGVsbg0JCQkJJHRpdGVsID0gIiI7DQkJCQkka2V5d29yZHMgPSAiIjsNCQkJCSRkZXNjcmlwdGlvbiA9ICIiOw0JCQkJJGdtdGFycmF5PWdldF9tZXRhX3RhZ3MoJGRpci4kZmlsZSk7DQkJCQl3aGlsZShsaXN0KCRrZXkxLCR2YWwpPWVhY2goJGdtdGFycmF5KSl7DQkJCQkJc3dpdGNoKHN0cnRvbG93ZXIoJGtleTEpKXsNCQkJCSAgICAgIAljYXNlICJ0aXRsZSI6ICR0aXRlbD0kdmFsOyBicmVhazsNCQkJCSAgICAgIAljYXNlICJrZXl3b3JkcyI6ICRrZXl3b3Jkcz0kdmFsOyBicmVhazsNCQkJCSAgICAgIAljYXNlICJkZXNjcmlwdGlvbiI6ICRkZXNjcmlwdGlvbj0kdmFsOyBicmVhazsNCQkJCQl9DQkJCQl9DQ0JCQkJJHN0cmluZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRkaXIuJGZpbGUpOw0NCQkJCS8vIGRhbWl0IHdlcmRlbiBnYW56ZSBXb2VydGVyIGdlZnVuZGVuLCBhdWNoIHdlbm4gc2llIGluIFRhZ3MgZWluZ2VzY2hsb3NzZW4gc2luZDoNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiPCIsIiA8Iiwkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiPiIsIj4gIiwkc3RyaW5nKTsNDQkJCQkvLyBodG1sIHRhZ3MgbWl0IGVpbmdlc2NobG9zc2VuZW4gcGhwIHRhZ3MgcmF1cyAtIHdlaWwgc29uc3QgZWluIGVpbnplbG5lcyA8IG9kZXIgJmx0OyBhbHMgZW5kIHdpcmt0DSAgCQkJCSRzdWNobXVzdGVyID0gIi88XD9bXj5dK1w/Pi8iOyANICAJCQkJJHN0cmluZyA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwiIiwkc3RyaW5nKTsNDQkJCQkkc3RyaW5nID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRzdHJpbmcpOw0NDSAgICAgICAgICAgIC8vIG51ciBmdWVyIHdkdyBkeW4uIGRlc2NyaXB0aW9uczoNICAgICAgICAgICAgaWYgKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddID09ICJ3ZWJkZXNpZ24ud2Vpc3NoYXJ0LmRlIikgew0gICAJCQkJaWYgKCRkZXNjcmlwdGlvbiA9PSAiIil7DSAgIAkJCQkJJGRlc2NyaXB0aW9uID0gYXVzbGVzZW4oJHN0cmluZywgImRlc2NyaXB0aW9uIiwgIj4iKTsNICAgICAgICAgICAgICAgICAgICAgICAgICAgCSRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGRlc2NyaXB0aW9uKTsNICAgICAgICAgICAgICAgICAgICAgICAgICAgCSRkZXNjcmlwdGlvbiA9IHByZWdfcmVwbGFjZSgiL1xufFxyfGNvbnRlbnR8XCJ8PXxcL3w7fFw/LyIsICIiLCAkZGVzY3JpcHRpb24pOw0gICAJCQkJfQ0gICAgICAgICAgICB9DQ0JCQkJLy8gdW5kIHdlaWwgPHRpdGxlPiBuaWNodCBpbW1lciBhbHMgTWV0YS10YWcgY29kaWVydCB3aXJkOg0JCQkJaWYgKCR0aXRlbCA9PSAiIikgJHRpdGVsID0gYXVzbGVzZW4oJHN0cmluZywgIjx0aXRsZT4iLCAiPC90aXRsZT4iKTsNDQkJCQkvLyB3ZWlsIGVzIExldXRlIGdpYnQsIGRpZSBtZXRhIFRhZ3MgbWl0IFplaWxlbnVtYnJ1Y2ggc2NocmVpYmVuOg0JCQkJJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoIlxuIiwiIiwkZGVzY3JpcHRpb24pOw0JCQkJJGtleXdvcmRzID0gc3RyX3JlcGxhY2UoIlxuIiwiIiwka2V5d29yZHMpOw0JCQkJJHRpdGVsID0gc3RyX3JlcGxhY2UoIlxuIiwiIiwkdGl0ZWwpOw0NDQ0JCQkJLy8gRGF0ZWllbiBudXIgendpc2NoZW4gZGVuIGJlaWRlbiBsaW1pdGVyIHRhZ3MgYXVzd2VydGVuOg0JCQkJaWYgKCRsaW1pdF9zdGFydCAhPSAiIikgew0JCQkJCSRwb3M9c3RycG9zKHN0cnRvbG93ZXIoJHN0cmluZyksc3RydG9sb3dlcigkbGltaXRfc3RhcnQpKSArIHN0cmxlbigkbGltaXRfc3RhcnQpOw0JCQkJCSRzdWJzdHJpbmdfcmVzdCA9IHN1YnN0cigkc3RyaW5nLCRwb3MpOw0JCQkJfQ0JCQkJZWxzZSB7DQkJCQkJJHN1YnN0cmluZ19yZXN0ID0gJHN0cmluZzsNCQkJCX0NDQ0JCQkJLy8gd2VubiAkbGltaXRfZW5kIGdlc2V0enQ6DQkJCQlpZiAoJGxpbWl0X2VuZCAhPSAiIikgew0JCQkJCSRlbmRfcG9zPXN0cnBvcyhzdHJ0b2xvd2VyKCRzdWJzdHJpbmdfcmVzdCksc3RydG9sb3dlcigkbGltaXRfZW5kKSk7DQkJCQkJaWYgKCRlbmRfcG9zICE9PSBmYWxzZSkgew0gICAgICAgICAgICAgICAgICAgIAkJCSRzdHJpbmcgPSBzdWJzdHIoJHN1YnN0cmluZ19yZXN0LDAsJGVuZF9wb3MpOw0JCQkJICAgICAgfSBlbHNlIHsNCQkJCQkgICAgICRzdHJpbmcgPSAkc3Vic3RyaW5nX3Jlc3Q7DQkJCQkgICAJfQ0gICAgICAgICAgICAgCQl9IGVsc2Ugew0gICAgICAgICAgICAgICAgCQkJJHN0cmluZyA9ICRzdWJzdHJpbmdfcmVzdDsNICAgICAgICAgICAgIAkJfQ0NDQ0JCQkJLy9JbmhhbHQgdm9uIHRhZ3MgYXVzd2VydGVuOg0JCQkJaWYgKCR0YWdzPT09ZmFsc2UpIAkkc3RyaW5nID0gc3RyaXBfdGFncygkc3RyaW5nKTsNDQ0JCQkJLy8gZGllIG1ldGEgdGFncyBpbiBkaWUgU3VjaGUgZWluc2NobGllc3NlbiBnZW1hZXNzIGNvbmZpZzoNICAgICAgICAgICAgCQlpZiAoJHRhZ3MgPT09IHRydWUpIHska2V5PXRydWU7ICRkZXNjPXRydWU7ICR0aXQ9dHJ1ZTt9DQkJCQlpZiAoJGtleSA9PT0gdHJ1ZSkgJHN0cmluZz0kc3RyaW5nLiRrZXl3b3JkczsNCQkJCWlmICgkZGVzYyA9PT0gdHJ1ZSkgJHN0cmluZz0kc3RyaW5nLiRkZXNjcmlwdGlvbjsNCQkJCWlmICgkdGl0ID09PSB0cnVlKSAkc3RyaW5nPSRzdHJpbmcuJHRpdGVsOw0NDQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIlxuIiwgIiAiLCAkc3RyaW5nKTsNDQ0JCQkJLy8gamV0enQgZGllIEF1c2dhYmUgZGVzIEtvbnRleHQgdm9yYmVyZWl0ZW46DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZhdW1sOyIsICLkIiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZvdW1sOyIsICL2IiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZ1dW1sOyIsICL8IiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZBdW1sOyIsICLEIiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZPdW1sOyIsICLWIiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZVdW1sOyIsICLcIiwgJHN0cmluZyk7DQkJCQkkc3RyaW5nID0gc3RyX3JlcGxhY2UoIiZzemxpZzsiLCAi3yIsICRzdHJpbmcpOw0NCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMjg7IiwgIuQiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyNDY7IiwgIvYiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyNTI7IiwgIvwiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMxOTY7IiwgIsQiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMTQ7IiwgItYiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMjA7IiwgItwiLCAkc3RyaW5nKTsNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgiJiMyMjM7IiwgIt8iLCAkc3RyaW5nKTsNDSAgICAgICAgICAgIC8vIGZ1ZXIgZGllIEtvbW1lbnRhcmUNCQkJCSRzdHJpbmcgPSBzdHJfcmVwbGFjZSgifCIsICIgIiwgJHN0cmluZyk7DQ0gICAgICAgICAgICAvLyBEYXR1bSB2b24gS29tbWVudGFyZW4gaW4gZGV1dHNjaGVzIEZvcm1hdDoNICAgICAgICAgICAgJHN1Y2htdXN0ZXIgPSAnL1swLTldWzAtOV0tWzAtMV1bMC0yXS1bMC0zXVswLTldLyc7DSAgICAgICAgICAgIHByZWdfbWF0Y2goJHN1Y2htdXN0ZXIsICRzdHJpbmcsICR0cmVmZmVyMSk7DSAgICAgICAgICAgICRjb21tZW50X2RhdGUgPSBpbXBsb2RlKCIsIiwkdHJlZmZlcjEpOw0gICAgICAgICAgICAkZ2VyX2RhdGUgPSBzdWJzdHIoJGNvbW1lbnRfZGF0ZSw2LDIpLicuJy5zdWJzdHIoJGNvbW1lbnRfZGF0ZSwzLDIpLicuJy5zdWJzdHIoJGNvbW1lbnRfZGF0ZSwwLDIpOw0gICAgICAgICAgICAkc3RyaW5nID0gc3RyX3JlcGxhY2UoJGNvbW1lbnRfZGF0ZSwkZ2VyX2RhdGUsICRzdHJpbmcpOw0NICAgICAgICAgICAgLy8gRS1NYWlscyByYXVzOiBodHRwOi8vd3d3LnJlZ3VsYXItZXhwcmVzc2lvbnMuaW5mby9lbWFpbC5odG1sDSAgICAgICAgICAgICRzdWNobXVzdGVyID0gJy9cYltBLVowLTkuXyUrLV0rQFtBLVowLTkuLV0rXC5bQS1aXXsyLDR9XGIvaSc7DSAgICAgICAgICAgICRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJHN1Y2htdXN0ZXIsJycsICRzdHJpbmcpOw0NCQkJCSRzdHJpbmdsb3cgPSBzdHJ0b2xvd2VyKCRzdHJpbmcpOw0JCQkJJHNlYXJjaGxvdyA9IHN0cnRvbG93ZXIoJHNlYXJjaCk7DQkJCQkkc3RyaW5nbG93ID0gbWJfc3RydG9sb3dlcigkc3RyaW5nbG93LCdVVEYtOCcpOw0JCQkJJHNlYXJjaGxvdyA9IG1iX3N0cnRvbG93ZXIoJHNlYXJjaGxvdywnVVRGLTgnKTsNDQ0JCQkJIyBkaWUgdW5kLVZlcmtudWVwZnVuZzoNCQkJCSRzZWFyY2hfYXJyID0gZXhwbG9kZSgiICIsdHJpbSgkc2VhcmNobG93KSk7DQkJCQkkc2VhcmNoX2NvdW50ID0gY291bnQoJHNlYXJjaF9hcnIpOw0NDQkJCQkjIGRhbWl0IGZ1ZWhyZW5kZSB1bmQgc2NobGllc3NlbmRlIExlZXJ6ZWljaGVuIGJlaSBkZXIgU3VjaGUgbmFjaCBnYW56ZW4gV29lcnRlcm4gYmVydWVja3NpY2h0aWd0IGJsZWliZW4NCQkJCWlmICgkc2VhcmNoX2NvdW50ID09IDEpIHsNCQkJCQkkc2VhcmNoX2FyclswXSA9ICRzZWFyY2hsb3c7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdWNobXVzdGVyID0gJy86fFw7fCF8XD98XC58LHxcKHxcKS8nOw0gICAgICAgICAgICAgICAgICAgICAgICAJJHN0cmluZ2xvdyA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwgIiAiLCAkc3RyaW5nbG93KTsgLy8gYXVjaCBnYW56ZSBXb2VydGVyIGFtIFNhdHplbmRlIGZpbmRlbiwgYWJlciBvaG5lIDsgZGEgc29uc3QgZW50aXRpZXMgbmljaHQgZ2VmdW5kZW4gd2VyZGVuLg0JCQkJfQ0NCQkJCSR0ZXN0ID0gc3Vic3RyX2NvdW50KCRzdHJpbmdsb3csICRzZWFyY2hsb3cpOw0NCQkJCSRpPTA7DQkJCQlmb3JlYWNoICgkc2VhcmNoX2FyciBhcyAkc2VhcmNoX3dvcmQpIHsNCQkJCWlmIChwcmVnX21hdGNoKCIvKCRzZWFyY2hfd29yZCkvaSIsICRzdHJpbmdsb3cpKSB7CQkvLyB3ZW5uIFN1Y2hiZWdyaWZmIHZvcmtvbW10DQkJCQkJJGkrKzsNDQkJCQkJaWYgKCRpPT0kc2VhcmNoX2NvdW50KSB7CQkvLyBzb2JhbGQgYWxsZSBTdWNoYmVncmlmZmUgZ2VmdW5kZW4gd3VyZGVuLi4uDQ0JCQkJCQkvLyBoaWdobGlnaHRpbmcgd2lyZCB2b24gc2VhcmNoaGkuanMgZXJsZWRpZ3Q6DQkJCQkJCWlmICgkc2VhcmNoX2NvdW50ID4gMSl7DQkJCQkJCQkkcG9zPXN0cnBvcygkc3RyaW5nbG93LCRzZWFyY2hfd29yZCk7DQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkkcG9zPXN0cnBvcygkc3RyaW5nbG93LCRzZWFyY2hsb3cpOw0JCQkJCQl9DQ0JCQkJCQlpZiAoJHZvciA+PSAkcG9zKSB7DS8vCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLCRwb3MsJG5hY2gpKTsNCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLDAsJG5hY2gpKTsNCQkJCQkJfSBlbHNlIHsNCQkJCQkJCSRwaWVjZTEgPSBzdHJpcF90YWdzKHN1YnN0cigkc3RyaW5nLCRwb3MtJHZvciwkdm9yKyRuYWNoKSk7DQkJCQkJCQkkcGllY2UxID0gc3Ryc3RyICgkcGllY2UxLCIgIik7IC8vIHZlcm1laWRldCBCcnVjaHN0dWVja2Ugdm9uIFdvZXJ0ZXJuIGFtIEFuZmFuZyBkZXMgS29udGV4dA0JCQkJCQl9DQ0JCQkJCQkkcGllY2UxID0gc3Vic3RyKCRwaWVjZTEsIDAsIHN0cmxlbihzdHJyY2hyKCRwaWVjZTEsMzIpKSooLTEpKS4iIC4uLiI7IC8vIHZlcm1laWRldCBCcnVjaHN0dWVja2Ugdm9uIFdvZXJ0ZXJuIGFtIEVuZGUgZGVzIEtvbnRleHQNCQkJCQkJJHJlc3QgPSAiPGJyIC8+JHBpZWNlMSI7DQ0NDQkJCQkJCWlmKCR2b3I9PSIwIiAmJiAkbmFjaD09IjAiKSAkcmVzdCA9ICIiOw0NCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZighJGRlc2NyaXB0aW9uID09ICIiICYmICRzaG93X2Rlc2MgPT0gdHJ1ZSkgJHJlc3QgPSAiPGJyIC8+PHN0cm9uZz4kYmVzY2hyZWliPC9zdHJvbmc+ICRkZXNjcmlwdGlvbiI7DQ0JCQkJCQlpZigkZmlsZW5hbWUpICR0aXRlbCA9ICRmaWxlOw0JCQkJCQlpZigkdGl0ZWwgPT0gIiIpICR0aXRlbCA9ICRmaWxlOw0NDQ0NCQkJCQkJaWYgKGlzc2V0KCRxdWVyeSkpew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRxZGlyID0gc3RyX3JlcGxhY2UoIi4vIiwiIiwkZGlyKTsgLy8gZW50ZmVybnQgZGFzIGZ1ZWhyZW5kZSAuLyBiZWltIHF1ZXJ5IHN0cmluZw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkcXVlcnlfZW5kdW5nKSAmJiAkcXVlcnlfZW5kdW5nID09ICJubyIpIHsNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZleHQgID0gYXJyYXlfcG9wKGV4cGxvZGUoJy4nLCAkZmlsZSkpOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm5hbWUgPSBiYXNlbmFtZSgkZmlsZSwgJy4nLiRmZXh0KTsNCQkJCQkJCSAgICAgICAkbGluayA9ICRxdWVyeS4kcWRpci4kZm5hbWU7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCQkJCQkJCSAgICAgICAkbGluayA9ICRxdWVyeS4kcWRpci4kZmlsZTsNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQ0JCQkJCQl9IGVsc2Ugew0JCQkJCQkJJGxpbmsgPSAkZGlyLiRmaWxlOw0JCQkJCQl9DQ0gICAgICAgICAgICAgICAgICAvLyBKZXR6dCBVbWxlaXRlbiB2b24gS29tbWVudGFyZW4gYXVmIGRlbiBBcnRpa2VsOg0gICAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRsaW5rLCdjb21tZW50JykgIT09IGZhbHNlKSB7DSAgICAgICAgICAgICAgICAgICAgICR0aXRlbCA9IHN0cl9yZXBsYWNlKCJjb21tZW50XyIsIiIsJHRpdGVsKTsNICAgICAgICAgICAgICAgICAgICAgJHRpdGVsID0gc3RyX3JlcGxhY2UoIi54bWwiLCIucGhwIiwkdGl0ZWwpOw0gICAgICAgICAgICAgICAgICAgICAkdGl0ZWwgPSAnS29tbWVudGFyIGF1ZiBkZXIgU2VpdGUgJy4kdGl0ZWw7DSAgICAgICAgICAgICAgICAgIA0gICAgICAgICAgICAgICAgICAgICAkbGluayA9IHN0cl9yZXBsYWNlKCJjb21tZW50XyIsIiIsJGxpbmspOw0gICAgICAgICAgICAgICAgICAgICAkbGluayA9IHN0cl9yZXBsYWNlKCIueG1sIiwiLnBocCIsJGxpbmspOw0gICAgICAgICAgICAgICAgICB9DQ0JCQkJICAvLyBVbWxlaXRlbiB2b24gSW5jbHVkZS1EYXRlaWVuOg0JCQkJICBpZiAoaXNzZXQoJHJlZGlyX3N1ZmZpeCkgJiYgaXNzZXQoJHJlZGlyX3JlcGxhY2UpKSB7DSAgICAgICAgICAgICAgICAgICAgICR0aXRlbCA9IHN0cl9yZXBsYWNlKCRyZWRpcl9zdWZmaXgsJHJlZGlyX3JlcGxhY2UsJHRpdGVsKTsNICAgICAgICAgICAgICAgICAgICAgJGxpbmsgPSBzdHJfcmVwbGFjZSgkcmVkaXJfc3VmZml4LCRyZWRpcl9yZXBsYWNlLCRsaW5rKTsNCQkJCSAgfQ0NDQkJCQkJCWlmKCR0aXRlbCAhPSAiIikgew0NCQkJCQkJCWlmICgkdGFyZ2V0ID09ICJibGFuayIpIHsNCQkJCQkJCQkkemllbCA9ICcgdGFyZ2V0PSJfYmxhbmsiJzsNCQkJCQkJCQkkanVtcCA9IGZhbHNlOw0JCQkJCQkJfSBlbHNlaWYgKCR0YXJnZXQgIT0gIiIpIHsNCQkJCQkJCQkkemllbCA9ICcgdGFyZ2V0PSInLiR0YXJnZXQuJyInOw0JCQkJCQkJCSRqdW1wID0gZmFsc2U7DQkJCQkJCQl9IGVsc2Ugew0JCQkJCQkJCSR6aWVsID0gJyc7DQkJCQkJCQl9DQ0JCQkJCQkJaWYgKCRwZmFkID09IHRydWUpIHsNCQkJCQkJCQlpZiAoaXNzZXQoJHF1ZXJ5KSl7DQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSR1cmwgPSAiVVJMOiZuYnNwOzxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj5odHRwOi8vIi4kcGZhZGluZm8uJGxpbmsuIjwvYT4iOw0JCQkJCQkJCX0gZWxzZSB7DQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSR1cmwgPSAiVVJMOiZuYnNwOzxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj5odHRwOi8vIi4kcGZhZGluZm8uc3Vic3RyKCRsaW5rLDEpLiI8L2E+IjsNCQkJCQkJCQl9DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkkdXJsID0gIiI7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQ0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhZW5kX2RhdCA9PSB0cnVlKSB7DQkJCQkJCQkJaWYgKGlzc2V0KCRxdWVyeSkpew0JCQkJCQkJCQlpZiAoJGRhdGVmb3JtID09ICJlbiIpIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoIm0vZC95IiwgZmlsZW10aW1lKCRkaXIuJGZpbGUpKTsNCQkJCQkJCQkJfSBlbHNlIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoImQubS55IiwgZmlsZW10aW1lKCRkaXIuJGZpbGUpKTsNCQkJCQkJCQkJfQ0JCQkJCQkJCX0gZWxzZSB7DQkJCQkJCQkJCWlmICgkZGF0ZWZvcm0gPT0gImVuIikgew0JCQkJCQkJCQkJQCRtb2QgPSAkZmlsZWRhdGUuZGF0ZSgibS9kL3kiLCBmaWxlbXRpbWUoJGxpbmspKTsNCQkJCQkJCQkJfSBlbHNlIHsNCQkJCQkJCQkJCUAkbW9kID0gJGZpbGVkYXRlLmRhdGUoImQubS55IiwgZmlsZW10aW1lKCRsaW5rKSk7DQkJCQkJCQkJCX0NCQkJCQkJCQl9DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAl9IGVsc2Ugew0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSRtb2QgPSAiIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGFlbmRfZGF0ICYmICRwZmFkKSB7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJHRyZW5uZXIgPSAiIC0gIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJJHRyZW5uZXIgPSAiIjsNCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHJlZmZfYW56PSIiOw0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHRyZWZmZXIgJiYgJHRlc3Q+PTEpICR0cmVmZl9hbno9IlsiLiR0ZXN0LiImbmJzcDsiLiR0cmVmZi4iXSI7DQ0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBmYWQgfHwgJGFlbmRfZGF0KSB7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXJyYXkgLj0gJHRlc3QuIjxhIGhyZWY9XCIiLiRsaW5rLiJcIiIuJHppZWwuIj4iLiR0aXRlbC4iPC9hPiAiLiR0cmVmZl9hbnouJHJlc3QuIjxzcGFuIGNsYXNzPSdtb2QnPiIuJHVybC4kdHJlbm5lci4kbW9kLiI8L3NwYW4+XG4iOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXJyYXkgLj0gIiRsaW5rXG4iOw0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlmcmFtZSAhPT0gdHJ1ZSkgeyANICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFycmF5IC49ICR0ZXN0LiI8YSBocmVmPVwiIi4kbGluay4iXCIiLiR6aWVsLiI+Ii4kdGl0ZWwuIjwvYT4gIi4kdHJlZmZfYW56LiRyZXN0LiJcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcnJheSAuPSAiJGxpbmtcbiI7DSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NDQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZm91bmQgKys7DQ0JCQkJCQl9DQkJCQkJfQ0JCQkJfQ0JCQl9DQkJfQ0JICAgIH0NICAgICAgICB9DQkJQGNsb3NlZGlyKCR2ZXJ6KTsNDQl9DQllY2hvICc8L3A+JzsNCWlmICgkc2VhcmNoID09ICKnZm91bmQiKSB7ZWNobyAnJiM4Mzt1JiM5OTtoJiMxMTU7YyYjMTE0O2kmIzExMjt0ICYjMTY5OyAyJiM0ODswNSAmIzExOTtlJiM5ODtkJiMxMDE7cyYjMTA1O2duJiM0NjsmIzExOWUmIzEwNTtzJiMxMTU7aCYjOTc7ciYjMTE2OyYjNDY7JiMxMDA7ZSc7ZXhpdDt9DQ0NLy8gTG9nZGF0ZWkgc2NocmVpYmVuIHVuZCBCZW5hY2hyaWNodGlndW5ncy1NYWlsIG1pdCBpcCAtIFNwZXJyZToNLy8gYmFzZTY0IHNjaHJlaWJ0IDIgTG9nZWludHLDpGdlIQ0NZnVuY3Rpb24gc2NocmVpYmVuKCRkYXRlaSwkbW9kZSl7DQlnbG9iYWwgJHNlYXJjaDsNCSRmcCA9IEBmb3BlbigkZGF0ZWksJG1vZGUpOw0JZmxvY2soJGZwLExPQ0tfRVgpOw0JZndyaXRlKCRmcCwkX1NFUlZFUlsiUkVNT1RFX0FERFIiXS4ifCIudGltZSgpLiJ8Ii4kc2VhcmNoLiJcbiIpOw0JZmxvY2soJGZwLExPQ0tfVU4pOw0JZmNsb3NlKCRmcCk7DX0NDQ1mdW5jdGlvbiBpcF9zcGVycmUoKSB7DWdsb2JhbCAkc2VhcmNoOw1nbG9iYWwgJHJlbG9hZGxpbWl0Ow0NJHJlbG9hZGxvZ2RhdGVpID0gInJlbG9hZC50eHQiOw0kYW56YWhsZWludHJhZWdlID0gMTAwOw0NLy8gUHJ1ZWZlbiwgb2IgcmVsb2FkZGF0ZWkgZXhpc3RpZXJ0ID0+IGFuc29uc3RlbiBFcnN0ZWxsZW4NDWlmKCFmaWxlX2V4aXN0cygkcmVsb2FkbG9nZGF0ZWkpKSB7DQkkZGF0ZWkgPSBmb3BlbigkcmVsb2FkbG9nZGF0ZWksIncrIik7DQlmY2xvc2UoJGRhdGVpKTsNfQ0NJGZwID0gZmlsZSgkcmVsb2FkbG9nZGF0ZWkpOw0kc2l6ZSA9IHNpemVvZigkZnApOw0kYXVzZ2FiZSA9IGZhbHNlOw0vLyBEYXRlaSBzY2hyZWliZW4sIHdlbm4gTGlzdGUgdm9sbDoNaWYoJHNpemUgPj0gJGFuemFobGVpbnRyYWVnZSl7DQlzY2hyZWliZW4oJHJlbG9hZGxvZ2RhdGVpLCJ3Iik7DQ0vLyBQcnVlZmVuLCBvYiBlaW5lIElQIGluIGRlciBMaXN0ZSBzdGVodA19IGVsc2Ugew0JZm9yICgkaT0wOyRpPD0kc2l6ZTskaSsrKSB7DSAgICAgIAlAJHplaWxlID0gZXhwbG9kZSgifCIsJGZwWyRpXSk7DSAgICAgIAkvLyBJUCB3aXJkIGdlZnVuZGVuDSAgICAgIAlpZiAoJHplaWxlWzBdID09ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdIEFORCAkemVpbGVbMV0gPiAodGltZSgpLSRyZWxvYWRsaW1pdCkgJiYgdHJpbSgkemVpbGVbMl0pID09IHRyaW0oJHNlYXJjaCkpew0JCQkkYXVzZ2FiZSA9IHRydWU7DQkJLy8gSVAgd2lyZCBuaWNodCBnZWZ1bmRlbg0JCS8vfSBlbHNlICB7DSAgICAgICAgCS8vCSRhdXNnYWJlID0gZmFsc2U7DSAgICAgIAl9DQl9DQkvLyBQcm90b2tvbGxpZXJ0IGRpZSBJUC1BZHJlc3NlIChzY2hyZWlidCk6DQlzY2hyZWliZW4oJHJlbG9hZGxvZ2RhdGVpLCJhKyIpOw0JfQ0JcmV0dXJuIEAkYXVzZ2FiZTsNfQ0NLy8gamV0enQgTG9nZmlsZSB1bmQgQmVuYWNocmljaHRpZ3VuZ3MtTWFpbCBzY2hyZWliZW46DQ1pZihpcF9zcGVycmUoKT09ZmFsc2UpIHsNDQkvLyBCZW5hY2hyaWNodGlndW5ncyBNYWlsOg0JaWYoJG1haWwgPT0gdHJ1ZSAmJiAkc2VhcmNoICE9ICR2YWx1ZSkgew0gICAgICBpZiAoISRzZW5kZXIpICRzZW5kZXIgPSAiU3VjaHNjcmlwdCI7DQkJbWFpbCgkYWRtaW5hZGRyZXNzLCJTdWNoZSBhdWYgJHNlaXRlIiwiRm9sZ2VuZGVyIEJlZ3JpZmYgd3VyZGUgc29lYmVuIGF1ZiBkZXIgU2VpdGUgJHNlaXRlIGdlc3VjaHQ6IFxuJHNlYXJjaFxuVHJlZmZlcjogJGZvdW5kIiwNICAgICAgIkZyb206ICRzZW5kZXIiICk7DQl9DQ0JLy8gTG9nZmlsZSBzY2hyZWliZW46DQkkdG9kYXkgPSBkYXRlKCJkLm0uIEg6aSAiKTsNCSRubCA9IGh0bWxfZW50aXR5X2RlY29kZSgkdG9kYXkuJHNlYXJjaCkuIigiLiRmb3VuZC4iKVxuIjsNCSRsaW5lcyA9IGZpbGUoJ3NlYXJjaGxvZy50eHQnKTsNCSRsaW5lcyA9IGFycmF5X3VuaXF1ZSgkbGluZXMpOyAvLyBEdXBsaWthdGUgbG9lc2NoZW4NDQ0JLy8gV2VubiBtZWhyIGFscyAkbWF4bXNnIChkZWZhdWx0OjEwMCkgTG9nZWludHJhZWdlIGFlbHRlc3RlIGxvZXNjaGVuOg0JLy8gJG1heG1zZyA9IDEwMDsNCWlmKGNvdW50KCRsaW5lcykgPiAkbWF4bXNnKSB1bnNldCgkbGluZXNbMF0pOw0NCSRubCA9IGltcGxvZGUoIiIsICRsaW5lcykuJG5sOw0JJGZwID0gZm9wZW4oJ3NlYXJjaGxvZy50eHQnLCAndycpOw0JZndyaXRlKCRmcCwgJG5sKTsNCWZjbG9zZSgkZnApOw19DQ0NDQlpZigkZm91bmQgPT0gIjAiKQl7DQkJZWNobyAkbm9yZXN1bHQ7DQkJLy8gU3lub255bWRhdGVpIGFubGVnZW4sIHdlbm4gJHNlYXJjaCBkcmluc3RlaHQsIGluIGFycmF5IGxlc2VuIHVuZCBhdXNnZWJlbjoNCQkvLyBhbGxlIFN5bm9ueW1lIGluIGVpbmUgWmVpbGUsIGFsbGUgYXVzd2VydGVuDQkJLy8gd2VubiBuaWNodDoNCQlpZiAoc3RybGVuKCRzZWFyY2gpID4gJGxlbmd0aCAmJiAkdm9yc2NobGFnICE9ICIiKSB7DQkJCSRzeW4gPSBzdWJzdHIoJHNlYXJjaCwwLCRsZW5ndGgpOw0JCQllY2hvICI8cD4kdm9yc2NobGFnIDxhIGhyZWYgPVwiIi4gYmFzZW5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pLiI/cT0kc3luJmFtcDtnZWdlbj1cIj4kc3luPC9hPi48L3A+IjsNCQl9DQl9DQ0JaWYoJGZvdW5kID09ICIxIiAmJiAkanVtcCA9PSB0cnVlICYmICRfU0VSVkVSWydQSFBfU0VMRiddICE9IHN1YnN0cigkbGluaywxKSkJeyAvL2RhcyBTdWNoc2NyaXB0IHNlbGJzdCBkYXJmIG5pY2h0IGFuZ2VzcHJ1bmdlbiB3ZXJkZW46IEVuZGxvc3NjaGxlaWZlDSAgCQkkbGluayA9IHN1YnN0cigkbGluaywxKTsJLy9kZW4gUHVua3Qgdm9yIGRlbSBkaXIgd2VnDQ0JCS8vIGRvcHBlbHRlIHNsYXNoIHZvciBEYXRlaW5hbWVuIHVudGVyZHLDvGNrZW4NCQkkZGlybmFtZSA9IGRpcm5hbWUoJF9TRVJWRVJbJ1BIUF9TRUxGJ10pOw0JCWlmKCRkaXJuYW1lID09ICIvIikgJGRpcm5hbWUgPSAiIjsNCQkvLyBiYWNrc2xhc2ggdm9uIFdpbmRvd3MgU2VydmVybiByYXVzOg0JCSRkaXJuYW1lID0gc3RyX3JlcGxhY2UoIlxcIiwiIiwkZGlybmFtZSk7DQ0JCWlmIChpc3NldCgkcXVlcnkpKXsNCQkJaGVhZGVyKCJMb2NhdGlvbjogaHR0cDovLyIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiRkaXJuYW1lLiIvIi4kbGluay4iJnE9Ii4kc2VhcmNoKTsNCQl9IGVsc2Ugew0JCQloZWFkZXIoIkxvY2F0aW9uOiBodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJGRpcm5hbWUuJGxpbmsuIj9xPSIuJHNlYXJjaCk7DQkJfQ0JCWV4aXQ7DQl9DQ0JaWYoJGZvdW5kID4gIjEiKSB7DSAgICAgICAgJG4gPSAkcGx1cmFsOyAkZSA9ICJlIjsgJHMgPSAicyI7DQl9IGVsc2Ugew0gICAgCSRlID0gJG4gPSAkcyA9ICIiOw0JfQ0NCWlmKCRmb3VuZCA+PSAiMSIpIHsNDQkJJGFycmF5ID0gZXhwbG9kZSgiXG4iLCAkYXJyYXkpOw0JCW5hdHNvcnQoJGFycmF5KTsNCQlyZXNldCgkYXJyYXkpOw0JCWlmICghaXNzZXQoJHJldmVyc2Vzb3J0KSkgeyRhcnJheSA9IGFycmF5X3JldmVyc2UoJGFycmF5KTt9DQ0gICAgICAkaSA9ICRhbnpfZGF0Ow0NDSAgICAgIC8vIGFuc3RlbGxlIGRlciB3aGlsZSBlaW4gZm9yIFNjaGxlaWZlLCB3ZW5uIGljaCB3ZWl0ZXJlIFNlaXRlbiBhbnplaWdlbiB3aWxsOg0gICAgICAkbmV4dD0wOw0gICAgICBpZihpc3NldCgkX0dFVFsibmV4dCJdKSB8fCBpc3NldCgkX1BPU1RbIm5leHQiXSkpIHsNICAgICAgICAgICAgaWYgKGlzc2V0KCRfR0VUWyJuZXh0Il0pICYmICRfR0VUWyJuZXh0Il0gIT0gIiIpICRuZXh0ID0gJF9HRVRbIm5leHQiXTsNICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsibmV4dCJdKSAmJiAkX1BPU1RbIm5leHQiXSAhPSAiIikgJG5leHQgPSAkX1BPU1RbIm5leHQiXTsNICAgICAgfQ0gICAgICANICAgICAgJG5leHQxPSRuZXh0KzE7DSAgICAgICR3ZWl0ZXI9JG5leHQrJGFuel9kYXQ7DSAgICAgIGZvcigkY291bnQgPSAwICsgJG5leHQ7ICRjb3VudCA8ICRhbnpfZGF0ICsgJG5leHQ7ICRjb3VudCsrKSB7DSAgICAgICAgIGlmICgkaWZyYW1lICE9PSB0cnVlKSB7IA0gICAgICAgICAgICBpZiAoQCRhcnJheVskY291bnRdKSAkYXVzZ2FiZSAuPSAiPGxpPiIuc3Vic3RyKHN0cnN0cigkYXJyYXlbJGNvdW50XSwgJzxhIGhyZWYnKSwwKS4iPC9saT5cbiI7DSAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgIGlmIChAJGFycmF5WyRjb3VudF0pICRhdXNnYWJlIC49ICI8aWZyYW1lIGNsYXNzPSdzZWFyY2hpZnJhbWUnIHNyYz0nIi4kYXJyYXlbJGNvdW50XS4iJz48L2lmcmFtZT5cbiI7DSAgICAgICAgIH0NICAgICAgfQ0NCQlpZiAoIWlzc2V0KCRmb3VuZHR4dDEpKXskZm91bmR0eHQxID0gIklociBTdWNoYmVncmlmZiB3dXJkZSAiO30NCQlpZiAoIWlzc2V0KCRmb3VuZHR4dDIpKXskZm91bmR0eHQyID0gIlNlaXRlIjt9DQkJaWYgKCFpc3NldCgkZm91bmR0eHQzKSl7JGZvdW5kdHh0MyA9ICIgZ2VmdW5kZW4uIjt9DQ0JCWVjaG8gJzxwPicuJGZvdW5kdHh0MS4nPHN0cm9uZz4gJy4kZm91bmQuJyA8L3N0cm9uZz4nLiRmb3VuZHR4dDIuJG4uJyAnLiRmb3VuZHR4dDM7DQ0gICAgICBpZiAoJG5leHQgPT0gMCkgew0gICAgICAgICAgICBpZiAoJGFuel9kYXQgPCAkZm91bmQpIHsNICAgICAgCQkJaWYgKGlzc2V0KCRhbmdlemVpZ3R0eHQpKXsNICAgICAgICAgCQkJCWVjaG8gJGFuZ2V6ZWlndHR4dDsNICAgICAgCQkJfSBlbHNlIHsNICAgICAgICAgCQkJCWVjaG8gIi48YnIgLz5BbmdlemVpZ3Qgd2VyZGVuIDxzdHJvbmc+JGFuel9kYXQ8L3N0cm9uZz4gRXJnZWJuaXNzZSBwcm8gU2VpdGUiOw0gICAgICAJCQl9DSAgICAgIAkJfQ0gICAgICANICAgICAgCQlpZigkdHJlZmZlciAmJiAkZm91bmQgPiAxICYmICRzZWFyY2hfY291bnQgPT0gMSkgew0gICAgICAJCQlpZiAoaXNzZXQoJHNvcnR0eHQpKXsNICAgICAgCQkJCSRzb3J0aGlud2VpcyA9ICRzb3J0dHh0Ow0gICAgICAJCQl9IGVsc2Ugew0gICAgICAJCQkJJHNvcnRoaW53ZWlzID0gIiwgc29ydGllcnQgbmFjaCBbQW56YWhsJm5ic3A7ZGVyJm5ic3A7VHJlZmZlciZuYnNwO3BybyZuYnNwO0Rva3VtZW50XSI7DSAgICAgIAkJCX0NICAgICAgCQl9DSAgICAgICAgICAgICAgICAgIGVjaG8gIiRzb3J0aGlud2Vpcy4iOw0gICAgICB9DSAgICAgIGVjaG8gIjwvcD4iOw0NLy8gTmV1ZXMgRmVuc3Rlcg1pZiAoJHRhcmdldCA9PSAiIiAmJiAkdGFyZ2V0d2FobCA9PSB0cnVlKSB7DWVjaG8nDTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NLyogPCFbQ0RBVEFbICovDWlmKGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKFwnc3VjaG9lZmZuZW5cJykgIT09IC0xKXsNICAgYWRkRXZlbnQod2luZG93LCBcJ2xvYWRcJywgbGlua29wZW5lcik7DSAgIGRvY3VtZW50LndyaXRlIChcJzxmb3JtIGFjdGlvbj0iIj48cCBjbGFzcz0ibGlua29wZW5lciI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjaGVja2VkPSJjaGVja2VkIiBvbmNoYW5nZT0ibGlua2Nvb2tpZSgpIiBvbmNsaWNrPSJsaW5rb3BlbmVyKHRoaXMuY2hlY2tlZCkiIGlkPSJsaW5rc25ld3dpbiIgLz4gPGxhYmVsIGZvcj0ibGlua3NuZXd3aW4iPlRyZWZmZXIgaW4gbmV1ZW0gRmVuc3RlciAmb3VtbDtmZm5lbj8gPFwvbGFiZWw+PFwvcD48XC9mb3JtPlwnKTsNfSBlbHNlIHsNICAgZG9jdW1lbnQud3JpdGUgKFwnPGZvcm0gYWN0aW9uPSIiPjxwIGNsYXNzPSJsaW5rb3BlbmVyIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIG9uY2hhbmdlPSJsaW5rY29va2llKCkiIG9uY2xpY2s9ImxpbmtvcGVuZXIodGhpcy5jaGVja2VkKSIgaWQ9ImxpbmtzbmV3d2luIiAvPiA8bGFiZWwgZm9yPSJsaW5rc25ld3dpbiI+VHJlZmZlciBpbiBuZXVlbSBGZW5zdGVyICZvdW1sO2ZmbmVuPyA8XC9sYWJlbD48XC9wPjxcL2Zvcm0+XCcpOw19DS8qIF1dPiAqLw08L3NjcmlwdD4NJzsNfQ0NICAgICAgICAgICAgLy8gYmlzICM3NzMgZ2VhZW5kZXJ0IHdnLiBuZXh0DSAgICAgICAgICAgICRsaXN0X2FydD0idWwiOw0gICAgICAgICAgICBpZiAoJG51bV9saXN0KSRsaXN0X2FydD0ib2wgc3RhcnQ9JG5leHQiOw0NICAgICAgICAgICAgLy8gdW0gWE1MIEZlaGxlciAoSFRNTCBUaWR5IFdhcm51bmdlbikgenUgdW50ZXJiaW5kZW46DSAgICAgICAgICAgIC8vICRhdXNnYWJlID0gc3RyX3JlcGxhY2UoIiAmICIsIiAmYW1wOyAiLCRhdXNnYWJlKTsNDSAgICAgICAgICAgIC8vIG9kZXIgcmVnZXg6IGh0dHA6Ly93d3cudGltcmVldmVzLmRlL25ldS93ZWJkZXNpZ24vd2ViLTIwLnBocA0gICAgICAgICAgICAkc3VjaG11c3RlciA9ICcvJig/IShbYS16QS1aXXsyLDd9fCNcZCt8I3hbMC05YS1mQS1GXSspOykvaSc7DSAgICAgICAgICAgICRlcnNldHp1bmcgPSAnJmFtcDsnOw0gICAgICAgICAgICAkYXVzZ2FiZSA9IHByZWdfcmVwbGFjZSgkc3VjaG11c3RlciwgJGVyc2V0enVuZywgJGF1c2dhYmUpOw0NICAgICAgICAgICAgaWYgKCRpZnJhbWUgIT09IHRydWUpIHsgDSAgICAgICAgICAgICAgIGlmICgkbnVtX2xpc3QpIHsNICAgICAgICAgICAgICAgICAgZWNobyAiXG48b2wgc3RhcnQ9JyIuJG5leHQxLiInPlxuIi4kYXVzZ2FiZS4iPC9vbD5cbiI7DSAgICAgICAgICAgICAgIH0gZWxzZSB7DSAgICAgICAgICAgICAgICAgIGVjaG8gIlxuPHVsPlxuIi4kYXVzZ2FiZS4iPC91bD5cbiI7DSAgICAgICAgICAgICAgIH0NICAgICAgICAgICAgfSBlbHNlIHsNICAgICAgICAgICAgICAgZWNobyAiXG4iLiRhdXNnYWJlLiJcbiI7DSAgICAgICAgICAgIH0NDSAgICAgIGlmICgkbmV4dCA8ICgkZm91bmQgLSAkYW56X2RhdCkpIHsNICAgICAgDSAgICAgICAgIGlmICgkbWV0aG9kID09ICJHRVQiKSB7DSAgICAgICAgICAgIC8vbmV4dCByYXVzLCB3ZWlscyBzb25zdCB4LW1hbCBhbmdlaGFlbmd0IHdpcmQ6DSAgICAgICAgICAgICRxdWVyeXN0cmluZyA9ICIiOw0gICAgICAgICAgICBpZihpc3NldCgkX1NFUlZFUlsiUVVFUllfU1RSSU5HIl0pKSB7IA0gICAgICAgICAgICAgICAkcXVlcnlzdHJpbmcgPSAkX1NFUlZFUlsiUVVFUllfU1RSSU5HIl07IA0gICAgICAgICAgICAgICAkZmlyc3RxdWVyeSA9IHN0cnBvcygkcXVlcnlzdHJpbmcsIiZuZXh0Iik7DSAgICAgICAgICAgICAgIGlmICgkZmlyc3RxdWVyeSAhPT0gZmFsc2UpIHsgDSAgICAgICAgICAgICAgICAgICRxdWVyeXN0cmluZyA9IHN1YnN0cigkcXVlcnlzdHJpbmcsMCwkZmlyc3RxdWVyeSk7IA0gICAgICAgICAgICAgICB9DSAgICAgICAgICAgIH0NICAgICAgICAgICAgJHF1ZXJ5c3RyaW5nID0gc3RyX3JlcGxhY2UoIiYiLCImYW1wOyIsJHF1ZXJ5c3RyaW5nKTsNICAgICAgICAgICAgZWNobyAnPHAgY2xhc3M9IndlaXRlciI+PGEgaHJlZj0iJy5iYXNlbmFtZSgkX1NFUlZFUlsiUEhQX1NFTEYiXSkuJz8nLiRxdWVyeXN0cmluZy4nJmFtcDtuZXh0PScuJHdlaXRlci4nIj4nLiR3ZWl0ZXJ0eHQuJzwvYT48L3A+JzsNICAgICAgICAgfQ0gICAgICB9DQl9DX0NDQ1lbHNlIHtlY2hvICRtaW5sZW5ndGg7fQ19DQ1lY2hvICRzZWFyY2h0aXA7DQ0kbXRpbWUgPSBtaWNyb3RpbWUoKTsgJG10aW1lID0gZXhwbG9kZSggJyAnLCAkbXRpbWUpOyAkbXRpbWUgPSAkbXRpbWVbMV0gKyAkbXRpbWVbMF07DSRzdWNoX2VuZGUgPSAkbXRpbWU7DSR0aW1lX2dlc2FtdCA9ICRzdWNoX2VuZGUgLSAkc3VjaF9zdGFydDsNDWVjaG8gIjxkaXYgaWQ9XCJzZWFyY2hmb290ZXJcIj48cD4iOw0NaWYgKGlzc2V0KCRhbnphaGxkYXQpKXsNCSR6ZGF0ID0gJGFuemFobGRhdDsNCX0gZWxzZSB7DQkkemRhdCA9ICJBbnphaGwgZHVyY2hzdWNodGVyIERhdGVpZW46ICI7DX0NDWlmICgkemFobHplaWcgJiYgJGZvdW5kID4gMCkgZWNobyAkemRhdC4kZHVyY2hzdWNodC4iPGJyIC8+IjsNDWlmICgkZm91bmQgPiAwKSB7DQlpZiAoaXNzZXQoJHRpbWV0eHQpKXsNCQkkdGltZWhpbndlaXMgPSAkdGltZXR4dDsNCX0gZWxzZSB7DQkJJHRpbWVoaW53ZWlzID0gIlN1Y2hlIGF1c2dlZiZ1dW1sO2hydCBpbiAiOw0JfQ0NCWlmKCRkYXVlcikgew0JICAgICAgZWNobyAiJHRpbWVoaW53ZWlzIi5udW1iZXJfZm9ybWF0KCR0aW1lX2dlc2FtdCwyLCcsJywnLicpLiIgJHN1Y2hkYXVlciAkdmVyc2lvblxuIjsNCX0gZWxzZSB7DQkgICAgICBlY2hvICJcbiR2ZXJzaW9uXG4iOw0JfQ19IGVsc2Ugew0gICAgICBlY2hvICJcbiR2ZXJzaW9uXG4iOw19DWVjaG8gIjwvcD48L2Rpdj4iOw1lY2hvICR3ZHc7DQ==";eval(base64_decode($NCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQNCiR0aW1lX29sZCA9IDA7IC8vIGb8ciBkaWUgRm9ydHNjaHJpdHRzYW56ZWlnZQ));

?>

Function Calls

None

Variables

None

Stats

MD5 384fd4939a4abb624a3f3fd9c513577d
Eval Count 0
Decode Time 646 ms