SA
SAA
fely
ENTERPRISE SAFETY OPERATING SYSTEM
Loading…
Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog ICBTQUZFVFkgR0lBTlQg4oCUIGNsaWVudAogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFNHID0geyB0b2tlbjpudWxsLCB1c2VyOm51bGwsIHBlcm1zOltdLCBjZmc6 e30sIEw6e3NpdGVzOltdLGRlcHRzOltdLHVzZXJzOltdLHZlaGljbGVzOltdfSwgcm91dGU6J2hvbWUnLCBwYXJhbXM6W10sIG5h djowLCBjaGFydHM6e30sIHRhYmxlczp7fSwgdW5yZWFkOjAsIHNpbmNlOicnLCBjcml0QWxlcnRzOltdLCBvcGVuR3JvdXBzOnt9 IH07CnZhciBxcyA9IChzLCByPWRvY3VtZW50KSA9PiByLnF1ZXJ5U2VsZWN0b3Iocyk7CnZhciBxc2EgPSAocywgcj1kb2N1bWVu dCkgPT4gQXJyYXkuZnJvbShyLnF1ZXJ5U2VsZWN0b3JBbGwocykpOwp2YXIgZXNjID0gcyA9PiBTdHJpbmcocyA9PSBudWxsID8g JycgOiBzKS5yZXBsYWNlKC9bJjw+IiddL2csIGMgPT4gKHsnJic6JyZhbXA7JywnPCc6JyZsdDsnLCc+JzonJmd0OycsJyInOicm cXVvdDsnLCInIjonJiMzOTsnfVtjXSkpOwp2YXIgaWMgPSAobiwgYz0nJykgPT4gYDxpIGRhdGEtbHVjaWRlPSIke259IiBjbGFz cz0iaWMgJHtjfSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT5gOwp2YXIgY2FuID0gcCA9PiBTdHJpbmcocCkuaW5kZXhPZigncGxh dGZvcm0uJyk9PT0wID8gISEoU0cudXNlciYmU0cudXNlci5Sb2xlPT09J1NVUEVSX0FETUlOJykgOiAoU0cucGVybXMuaW5jbHVk ZXMoJyonKSB8fCBTRy5wZXJtcy5pbmNsdWRlcyhwKSk7CnZhciBicmFuZE5hbWUgPSAoY2xzPScnKSA9PiBgPGIgY2xhc3M9ImJu ICR7Y2xzfSI+PHNwYW4gY2xhc3M9ImEiPlNBQTwvc3Bhbj5mZWx5PC9iPmA7CnZhciBBQ1JPID0gW1snUycsJ1NhZmV0eSddLFsn QScsJ0F3YXJlbmVzcyddLFsnQScsJ0FjY291bnRhYmlsaXR5J10sWydGJywnRnJvbnRsaW5lIEVtcG93ZXJtZW50J10sWydFJywn RW5nYWdlbWVudCddLFsnTCcsJ0xlYXJuaW5nJ10sWydZJywnWWVhci1yb3VuZCBJbXByb3ZlbWVudCddXTsKdmFyIHN0b3JlID0g eyBnZXQoayxkKXsgdHJ5eyBjb25zdCB2PWxvY2FsU3RvcmFnZS5nZXRJdGVtKGspOyByZXR1cm4gdj09bnVsbD9kOkpTT04ucGFy c2Uodik7fWNhdGNoKGUpe3JldHVybiBkO30gfSwgc2V0KGssdil7IHRyeXsgbG9jYWxTdG9yYWdlLnNldEl0ZW0oayxKU09OLnN0 cmluZ2lmeSh2KSk7IHJldHVybiB0cnVlO31jYXRjaChlKXsgcmV0dXJuIGZhbHNlO30gfSwgZGVsKGspeyB0cnl7bG9jYWxTdG9y YWdlLnJlbW92ZUl0ZW0oayk7fWNhdGNoKGUpe30gfSB9OwpmdW5jdGlvbiBpY29ucygpeyB0cnl7IGx1Y2lkZS5jcmVhdGVJY29u cygpOyB9Y2F0Y2goZSl7fSB9CmZ1bmN0aW9uIGNhbGwoYWN0aW9uLCBwKXsKICBpZiAoQkFDS0VORF9VUkwgJiYgISh3aW5kb3cu Z29vZ2xlICYmIGdvb2dsZS5zY3JpcHQgJiYgZ29vZ2xlLnNjcmlwdC5ydW4pKSByZXR1cm4gcmVtb3RlQ2FsbChhY3Rpb24sIHAp OwogIHJldHVybiBuZXcgUHJvbWlzZSgocmVzLCByZWopID0+IHsKICAgIGlmICghd2luZG93Lmdvb2dsZSB8fCAhZ29vZ2xlLnNj cmlwdCkgcmV0dXJuIHJlaihuZXcgRXJyb3IoJ1J1biB0aGlzIHBhZ2UgZnJvbSB0aGUgZGVwbG95ZWQgQXBwcyBTY3JpcHQgd2Vi IGFwcCwgb3Igc2V0IEJBQ0tFTkRfVVJMIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLicpKTsKICAgIGdvb2dsZS5zY3JpcHQucnVu LndpdGhTdWNjZXNzSGFuZGxlcihzID0+IHsgbGV0IHI7IHRyeXsgciA9IEpTT04ucGFyc2Uocyk7IH1jYXRjaChlKXsgcmV0dXJu IHJlaihuZXcgRXJyb3IoJ0JhZCBzZXJ2ZXIgcmVzcG9uc2UnKSk7IH0KICAgICAgaWYgKHIub2spIHJlcyhyLmRhdGEpOyBlbHNl IHsgaWYgKC9eQVVUSDovLnRlc3Qoci5lcnJvcikpIHsgc2lnbk91dCh0cnVlKTsgfSByZWoobmV3IEVycm9yKFN0cmluZyhyLmVy cm9yKS5yZXBsYWNlKC9eQVVUSDpccyovLCcnKSkpOyB9IH0pCiAgICAgIC53aXRoRmFpbHVyZUhhbmRsZXIoZSA9PiB7IGNvbnN0 IGVyID0gbmV3IEVycm9yKChlICYmIGUubWVzc2FnZSkgfHwgJ05ldHdvcmsgZXJyb3InKTsgZXIubmV0d29yayA9IHRydWU7IHJl aihlcik7IH0pCiAgICAgIC5hcGkoU0cudG9rZW4sIGFjdGlvbiwgcCB8fCB7fSk7CiAgfSk7Cn0KLyogUmVtb3RlIG1vZGU6IFBP U1QgdG8gdGhlIEFwcHMgU2NyaXB0IC9leGVjIFVSTC4gdGV4dC9wbGFpbiBhdm9pZHMgYSBDT1JTIHByZS1mbGlnaHQgcmVxdWVz dC4gKi8KYXN5bmMgZnVuY3Rpb24gcmVtb3RlQ2FsbChhY3Rpb24sIHApewogIGxldCByZXNwLCByOwogIHRyeXsgcmVzcCA9IGF3 YWl0IGZldGNoKEJBQ0tFTkRfVVJMLCB7IG1ldGhvZDonUE9TVCcsIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOid0ZXh0L3BsYWlu O2NoYXJzZXQ9dXRmLTgnfSwgYm9keTogSlNPTi5zdHJpbmdpZnkoeyB0b2tlbjogU0cudG9rZW4sIGFjdGlvbjogYWN0aW9uLCBw YXlsb2FkOiBwIHx8IHt9IH0pLCByZWRpcmVjdDonZm9sbG93JyB9KTsgfQogIGNhdGNoKGUpeyBjb25zdCBlciA9IG5ldyBFcnJv cignQ2Fubm90IHJlYWNoIHRoZSBzZXJ2ZXIuIENoZWNrIHlvdXIgY29ubmVjdGlvbiBhbmQgdGhlIEJBQ0tFTkRfVVJMIHNldHRp bmcuJyk7IGVyLm5ldHdvcmsgPSB0cnVlOyB0aHJvdyBlcjsgfQogIHRyeXsgciA9IEpTT04ucGFyc2UoYXdhaXQgcmVzcC50ZXh0 KCkpOyB9Y2F0Y2goZSl7IGNvbnN0IGVyID0gbmV3IEVycm9yKCdUaGUgc2VydmVyIGRpZCBub3QgcmV0dXJuIGRhdGEuIENoZWNr IHRoYXQgQkFDS0VORF9VUkwgaXMgdGhlIC9leGVjIFVSTCBhbmQgdGhlIHdlYiBhcHAgaXMgZGVwbG95ZWQgZm9yICJBbnlvbmUi LicpOyBlci5uZXR3b3JrID0gdHJ1ZTsgdGhyb3cgZXI7IH0KICBpZiAoci5vaykgcmV0dXJuIHIuZGF0YTsKICBpZiAoL15BVVRI Oi8udGVzdChyLmVycm9yKSkgeyBzaWduT3V0KHRydWUpOyB9CiAgdGhyb3cgbmV3IEVycm9yKFN0cmluZyhyLmVycm9yKS5yZXBs YWNlKC9eQVVUSDpccyovLCcnKSk7Cn0KLyogLS0tLS0tLS0tLSBmb3JtYXR0aW5nIC0tLS0tLS0tLS0gKi8KdmFyIE1PTj1bJ0ph bicsJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddOwpmdW5j dGlvbiBwZChkKXsgaWYoIWQpIHJldHVybiBudWxsOyBjb25zdCBzPVN0cmluZyhkKTsgY29uc3QgeD1uZXcgRGF0ZShzLmxlbmd0 aD09PTEwP3MrJ1QwMDowMDowMCc6cyk7IHJldHVybiBpc05hTih4KT9udWxsOng7IH0KZnVuY3Rpb24gZm10RChkKXsgY29uc3Qg eD1wZChkKTsgcmV0dXJuIHg/IGAke1N0cmluZyh4LmdldERhdGUoKSkucGFkU3RhcnQoMiwnMCcpfSAke01PTlt4LmdldE1vbnRo KCldfSAke3guZ2V0RnVsbFllYXIoKX1gIDogJ+KAlCc7IH0KZnVuY3Rpb24gZm10RFQoZCl7IGNvbnN0IHg9cGQoZCk7IHJldHVy biB4PyBgJHtmbXREKGQpfSwgJHtTdHJpbmcoeC5nZXRIb3VycygpKS5wYWRTdGFydCgyLCcwJyl9OiR7U3RyaW5nKHguZ2V0TWlu dXRlcygpKS5wYWRTdGFydCgyLCcwJyl9YCA6ICfigJQnOyB9CmZ1bmN0aW9uIGZtdFQoZCl7IGNvbnN0IHg9cGQoZCk7IHJldHVy biB4PyBgJHtTdHJpbmcoeC5nZXRIb3VycygpKS5wYWRTdGFydCgyLCcwJyl9OiR7U3RyaW5nKHguZ2V0TWludXRlcygpKS5wYWRT dGFydCgyLCcwJyl9YCA6ICcnOyB9CmZ1bmN0aW9uIGFnbyhkKXsgY29uc3QgeD1wZChkKTsgaWYoIXgpIHJldHVybiAnJzsgY29u c3Qgcz0oRGF0ZS5ub3coKS14KS8xMDAwOyBpZihzPDYwKSByZXR1cm4gJ2p1c3Qgbm93JzsgaWYoczwzNjAwKSByZXR1cm4gTWF0 aC5mbG9vcihzLzYwKSsnbSBhZ28nOyBpZihzPDg2NDAwKSByZXR1cm4gTWF0aC5mbG9vcihzLzM2MDApKydoIGFnbyc7IGlmKHM8 ODY0MDAqNykgcmV0dXJuIE1hdGguZmxvb3Iocy84NjQwMCkrJ2QgYWdvJzsgcmV0dXJuIGZtdEQoZCk7IH0KZnVuY3Rpb24gdG9k YXkoKXsgY29uc3QgZD1uZXcgRGF0ZSgpOyByZXR1cm4gZC5nZXRGdWxsWWVhcigpKyctJytTdHJpbmcoZC5nZXRNb250aCgpKzEp LnBhZFN0YXJ0KDIsJzAnKSsnLScrU3RyaW5nKGQuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCcwJyk7IH0KZnVuY3Rpb24gYWRkRChu KXsgY29uc3QgZD1uZXcgRGF0ZSgpOyBkLnNldERhdGUoZC5nZXREYXRlKCkrbik7IHJldHVybiBkLmdldEZ1bGxZZWFyKCkrJy0n K1N0cmluZyhkLmdldE1vbnRoKCkrMSkucGFkU3RhcnQoMiwnMCcpKyctJytTdHJpbmcoZC5nZXREYXRlKCkpLnBhZFN0YXJ0KDIs JzAnKTsgfQp2YXIgbnVtID0gbiA9PiBOdW1iZXIobnx8MCkudG9Mb2NhbGVTdHJpbmcoJ2VuLVVTJyk7CnZhciB1TmFtZSA9IGlk ID0+IHsgY29uc3QgdT1TRy5MLnVzZXJzLmZpbmQoeD0+eC5JZD09PWlkKTsgcmV0dXJuIHU/dS5OYW1lOihpZHx8J+KAlCcpOyB9 Owp2YXIgc2l0ZU4gPSBpZCA9PiB7IGNvbnN0IHM9U0cuTC5zaXRlcy5maW5kKHg9PnguSWQ9PT1pZCk7IHJldHVybiBzP3MuTmFt ZTooaWR8fCfigJQnKTsgfTsKdmFyIGRlcHROID0gaWQgPT4geyBjb25zdCBkPVNHLkwuZGVwdHMuZmluZCh4PT54LklkPT09aWQp OyByZXR1cm4gZD9kLk5hbWU6KGlkfHwn4oCUJyk7IH07CnZhciBkZXB0RnVsbCA9IGlkID0+IHsgY29uc3QgZD1TRy5MLmRlcHRz LmZpbmQoeD0+eC5JZD09PWlkKTsgcmV0dXJuIGQ/IGQuTmFtZSsnIMK3ICcrc2l0ZU4oZC5TaXRlSWQpLnNwbGl0KCcgJylbMF0g OiAoaWR8fCfigJQnKTsgfTsKdmFyIHJvbGVOID0gciA9PiBTdHJpbmcocnx8JycpLnNwbGl0KCdfJykubWFwKHc9PndbMF0rdy5z bGljZSgxKS50b0xvd2VyQ2FzZSgpKS5qb2luKCcgJykucmVwbGFjZSgnSHNlJywnSFNFJykucmVwbGFjZSgnSHInLCdIUicpLnJl cGxhY2UoJ09yZyAnLCdPcmdhbml6YXRpb24gJykucmVwbGFjZSgnRGVwdCAnLCdEZXBhcnRtZW50ICcpOwp2YXIgaW5pdGlhbHMg PSBuID0+IFN0cmluZyhufHwnPycpLnNwbGl0KC9ccysvKS5maWx0ZXIoQm9vbGVhbikuc2xpY2UoMCwyKS5tYXAodz0+d1swXSku am9pbignJykudG9VcHBlckNhc2UoKTsKZnVuY3Rpb24gaHVlKHMpeyBsZXQgaD0wOyBmb3IoY29uc3QgYyBvZiBTdHJpbmcocykp IGg9KGgqMzErYy5jaGFyQ29kZUF0KDApKSUzNjA7IHJldHVybiBoOyB9CnZhciBhdiA9IChuYW1lLCBjbHM9JycpID0+IGA8c3Bh biBjbGFzcz0iYXYgJHtjbHN9IiBzdHlsZT0iYmFja2dyb3VuZDpoc2woJHtodWUobmFtZSl9IDQyJSAzOCUpIiBhcmlhLWhpZGRl bj0idHJ1ZSI+JHtlc2MoaW5pdGlhbHMobmFtZSkpfTwvc3Bhbj5gOwp2YXIgaXNPdmVyID0gciA9PiByICYmIHIuRHVlRGF0ZSAm JiByLkR1ZURhdGUgPCB0b2RheSgpICYmICFbJ0Nsb3NlZCcsJ1ZlcmlmaWVkJ10uaW5jbHVkZXMoci5TdGF0dXMpOwpmdW5jdGlv biBjaGlwKHN0YXR1cyl7CiAgY29uc3Qgcz1TdHJpbmcoc3RhdHVzfHwnJyk7IGxldCBjPSdjLWdyYXknLCBpPSdjaXJjbGUnOwog IGlmKC9DbG9zZWR8VmVyaWZpZWR8Q29tcGxldGVkfFZhbGlkfFBhc3NlZHxSZXZpZXdlZHxVcGhlbGR8QXBwcm92ZWR8V2Fybmlu ZyBJc3N1ZWR8QWN0aXZlJC8udGVzdChzKSYmIS9TdXNwZW5zaW9uIEFjdGl2ZS8udGVzdChzKSl7Yz0nYy1ncmVlbic7aT0nY2ly Y2xlLWNoZWNrJzt9CiAgaWYoL0luIFByb2dyZXNzfFVuZGVyIEludmVzdGlnYXRpb258QXNzaWduZWR8U2NoZWR1bGVkfEFja25v d2xlZGdlZHxSaXNrIEFzc2Vzc2VkfENvcnJlY3RpdmUgQWN0aW9uIEluIFByb2dyZXNzfFN1Ym1pdHRlZCQvLnRlc3Qocykpe2M9 J2MtYmx1ZSc7aT0nbG9hZGVyJzt9CiAgaWYoL1JlcG9ydGVkfEFjdGlvbiBSZXF1aXJlZHxVbmRlciBSZXZpZXd8T3BlbnxBd2Fp dGluZ3xTdWJtaXR0ZWQgZm9yIFZlcmlmaWNhdGlvbnxWZXJpZmljYXRpb258SW52ZXN0aWdhdGlvbiBSZXZpZXd8Q29ycmVjdGl2 ZSBBY3Rpb24gUmVxdWlyZWR8RXhwaXJpbmd8UmVvcGVuZWR8QXNzaWduZWQkfE5vdCBTdGFydGVkfFRyaWFnZWR8QWNrbm93bGVk Z2VtZW50Ly50ZXN0KHMpJiZjPT09J2MtZ3JheScpe2M9J2Mtb3JhbmdlJztpPSdjbG9jayc7fQogIGlmKC9PdmVyZHVlfEV4cGly ZWR8UmVqZWN0ZWR8U3VzcGVuc2lvbnxDcml0aWNhbHxIUiBFc2NhbGF0aW9uLy50ZXN0KHMpKXtjPSdjLXJlZCc7aT0nb2N0YWdv bi1hbGVydCc7fQogIGlmKC9Wb2lkZWR8RGlzYWJsZWR8Q29udmVydGVkLy50ZXN0KHMpKXtjPSdjLWdyYXknO2k9J21pbnVzLWNp cmNsZSc7fQogIHJldHVybiBgPHNwYW4gY2xhc3M9ImNoaXAgJHtjfSI+JHtpYyhpKX0ke2VzYyhzKX08L3NwYW4+YDsKfQpmdW5j dGlvbiByaXNrQ2hpcChsKXsgY29uc3QgbT17TE9XOlsnYy1ncmVlbicsJ3NoaWVsZC1jaGVjayddLE1FRElVTTpbJ2MteWVsbG93 Jywnc2hpZWxkLWFsZXJ0J10sSElHSDpbJ2Mtb3JhbmdlJywndHJpYW5nbGUtYWxlcnQnXSxDUklUSUNBTDpbJ2MtcmVkJywnc2ly ZW4nXX1bbF18fFsnYy1ncmF5Jywnc2hpZWxkJ107IHJldHVybiBgPHNwYW4gY2xhc3M9ImNoaXAgJHttWzBdfSI+JHtpYyhtWzFd KX0ke2VzYyhsfHwn4oCUJyl9PC9zcGFuPmA7IH0KZnVuY3Rpb24gY2FyZENoaXAoYyl7IGNvbnN0IG09e1lFTExPVzonYy15ZWxs b3cnLFJFRDonYy1yZWQnLEJMQUNLOidjLWJsYWNrJ31bY118fCdjLWdyYXknOyByZXR1cm4gYDxzcGFuIGNsYXNzPSJjaGlwICR7 bX0iPjxzcGFuIGNsYXNzPSJ0Y2FyZCBzbSAke2N9IiBzdHlsZT0id2lkdGg6OXB4O2hlaWdodDoxMnB4O2JveC1zaGFkb3c6bm9u ZTt0cmFuc2Zvcm06bm9uZTtib3JkZXItcmFkaXVzOjJweCI+PC9zcGFuPiR7ZXNjKGMpfSBDQVJEPC9zcGFuPmA7IH0KdmFyIHN0 YXR1c09mID0gciA9PiBpc092ZXIocikgPyAnT3ZlcmR1ZScgOiByLlN0YXR1czsKZnVuY3Rpb24gYmFyKHAsIGNscz0nJyl7IHJl dHVybiBgPGRpdiBjbGFzcz0iYmFyICR7Y2xzfSIgcm9sZT0icHJvZ3Jlc3NiYXIiIGFyaWEtdmFsdWVub3c9IiR7TWF0aC5yb3Vu ZChwKX0iIGFyaWEtdmFsdWVtaW49IjAiIGFyaWEtdmFsdWVtYXg9IjEwMCI+PGkgc3R5bGU9IndpZHRoOjAiIGRhdGEtdz0iJHtN YXRoLm1heCgwLE1hdGgubWluKDEwMCxwKSl9Ij48L2k+PC9kaXY+YDsgfQpmdW5jdGlvbiByaW5nKHAsIHNpemU9OTYsIHN0cm9r ZT0xMCwgY29sb3I9J3ZhcigtLXkpJywgbGFiZWwpeyBjb25zdCByPShzaXplLXN0cm9rZSkvMiwgYz0yKk1hdGguUEkqcjsgcmV0 dXJuIGA8ZGl2IGNsYXNzPSJyaW5nIiBzdHlsZT0id2lkdGg6JHtzaXplfXB4O2hlaWdodDoke3NpemV9cHgiPjxzdmcgd2lkdGg9 IiR7c2l6ZX0iIGhlaWdodD0iJHtzaXplfSI+PGNpcmNsZSBjeD0iJHtzaXplLzJ9IiBjeT0iJHtzaXplLzJ9IiByPSIke3J9IiBm aWxsPSJub25lIiBzdHJva2U9IiNFNUU5RjAiIHN0cm9rZS13aWR0aD0iJHtzdHJva2V9Ii8+PGNpcmNsZSBjeD0iJHtzaXplLzJ9 IiBjeT0iJHtzaXplLzJ9IiByPSIke3J9IiBmaWxsPSJub25lIiBzdHJva2U9IiR7Y29sb3J9IiBzdHJva2Utd2lkdGg9IiR7c3Ry b2tlfSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtZGFzaGFycmF5PSIke2N9IiBzdHJva2UtZGFzaG9mZnNldD0iJHtj fSIgZGF0YS1vZmY9IiR7YyooMS1NYXRoLm1heCgwLE1hdGgubWluKDEwMCxwKSkvMTAwKX0iIHN0eWxlPSJ0cmFuc2l0aW9uOnN0 cm9rZS1kYXNob2Zmc2V0IDFzIGN1YmljLWJlemllciguMiwuOCwuMiwxKSIvPjwvc3ZnPjxiIHN0eWxlPSJmb250LXNpemU6JHtz aXplLzQuMn1weCI+JHtsYWJlbCE9bnVsbD9sYWJlbDpNYXRoLnJvdW5kKHApKyclJ308L2I+PC9kaXY+YDsgfQpmdW5jdGlvbiBl bXB0eSh0aXRsZSwgc3ViLCBpY29uPSdzaGllbGQtY2hlY2snKXsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJlbXB0eSI+PGRpdiBjbGFz cz0iZW0iPiR7aWMoaWNvbiwnbGcnKX08L2Rpdj48Yj4ke2VzYyh0aXRsZSl9PC9iPiR7ZXNjKHN1Ynx8JycpfTwvZGl2PmA7IH0K ZnVuY3Rpb24gc2tlbGV0b24oKXsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzayIgc3R5bGU9ImhlaWdodDozNHB4O3dpZHRoOjI4MHB4 O21hcmdpbi1ib3R0b206MThweCI+PC9kaXY+PGRpdiBjbGFzcz0iZ3JpZCBnNCI+JHsnPGRpdiBjbGFzcz0ic2siIHN0eWxlPSJo ZWlnaHQ6MTEycHgiPjwvZGl2PicucmVwZWF0KDQpfTwvZGl2PjxkaXYgY2xhc3M9InNrIG10IiBzdHlsZT0iaGVpZ2h0OjMyMHB4 Ij48L2Rpdj5gOyB9CmZ1bmN0aW9uIHBhZ2VIKHRpdGxlLCBzdWIsIGFjdGlvbnM9JycpeyByZXR1cm4gYDxkaXYgY2xhc3M9InBh Z2UtaCI+PGRpdj48aDE+JHtlc2ModGl0bGUpfTwvaDE+JHtzdWI/YDxwPiR7ZXNjKHN1Yil9PC9wPmA6Jyd9PC9kaXY+PGRpdiBj bGFzcz0icm93IHciPiR7YWN0aW9uc308L2Rpdj48L2Rpdj5gOyB9CmZ1bmN0aW9uIGNydW1iKGxhYmVsLCByb3V0ZSl7IHJldHVy biBgPGRpdiBjbGFzcz0iY3J1bWIiPjxidXR0b24gb25jbGljaz0iZ28oJyR7cm91dGV9JykiPiR7aWMoJ2Fycm93LWxlZnQnLCdz bScpfSAke2VzYyhsYWJlbCl9PC9idXR0b24+PC9kaXY+YDsgfQpmdW5jdGlvbiBrcGkobyl7IHJldHVybiBgPGRpdiBjbGFzcz0i Y2FyZCBrcGkgdC0ke28udG9uZXx8J2JsdWUnfSAke28ubGluaz8nY2xpY2snOicnfSIgJHtvLmxpbms/YG9uY2xpY2s9ImdvKCck e28ubGlua30nKSIgcm9sZT0ibGluayIgdGFiaW5kZXg9IjAiYDonJ30+PGRpdiBjbGFzcz0ibGFiIj4ke28uaWNvbj9pYyhvLmlj b24sJ3NtJyk6Jyd9JHtlc2Moby5sYWJlbCl9PC9kaXY+PGRpdiBjbGFzcz0idmFsIj48c3BhbiBkYXRhLWNvdW50PSIke051bWJl cihvLnZhbHVlKXx8MH0iPjA8L3NwYW4+JHtvLnN1ZmZpeHx8Jyd9PC9kaXY+JHtvLmluc2lnaHQ/YDxkaXYgY2xhc3M9ImlucyB0 LSR7by50b25lfHwnYmx1ZSd9Ij4ke2ljKG8udG9uZT09PSdncmVlbic/J3RyZW5kaW5nLXVwJzpvLnRvbmU9PT0ncmVkJz8nb2N0 YWdvbi1hbGVydCc6by50b25lPT09J29yYW5nZSc/J2NpcmNsZS1hbGVydCc6J2luZm8nLCdzbScpfSR7ZXNjKG8uaW5zaWdodCl9 PC9kaXY+YDonJ308L2Rpdj5gOyB9CmZ1bmN0aW9uIGFmdGVyKCl7IGljb25zKCk7CiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgp PT57IHFzYSgnW2RhdGEtd10nKS5mb3JFYWNoKGU9PmUuc3R5bGUud2lkdGg9ZS5kYXRhc2V0LncrJyUnKTsgcXNhKCdbZGF0YS1v ZmZdJykuZm9yRWFjaChlPT5lLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQ9ZS5kYXRhc2V0Lm9mZik7IH0pOwogIHFzYSgnW2RhdGEt Y291bnRdJykuZm9yRWFjaChlbD0+eyBjb25zdCB0PU51bWJlcihlbC5kYXRhc2V0LmNvdW50KTsgaWYoIXQpe2VsLnRleHRDb250 ZW50PScwJztyZXR1cm47fSBjb25zdCB0MD1wZXJmb3JtYW5jZS5ub3coKSwgZD03MDA7IGNvbnN0IGY9bj0+eyBjb25zdCBrPU1h dGgubWluKDEsKG4tdDApL2QpLCBlPTEtTWF0aC5wb3coMS1rLDMpOyBlbC50ZXh0Q29udGVudD1udW0oTWF0aC5yb3VuZCh0KmUp KTsgaWYoazwxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZik7IH07IHJlcXVlc3RBbmltYXRpb25GcmFtZShmKTsgZGVsZXRlIGVs LmRhdGFzZXQuY291bnQ7IH0pOwp9CmZ1bmN0aW9uIG1haW4oaHRtbCl7IGNvbnN0IG09cXMoJyNtYWluJyk7IGlmKCFtKSByZXR1 cm47IE9iamVjdC52YWx1ZXMoU0cuY2hhcnRzKS5mb3JFYWNoKGM9Pnt0cnl7Yy5kZXN0cm95KCk7fWNhdGNoKGUpe319KTsgU0cu Y2hhcnRzPXt9OyBtLmlubmVySFRNTD1odG1sOyBhZnRlcigpOyB9CmFzeW5jIGZ1bmN0aW9uIGxvYWQoYWN0aW9uLCBwKXsgY29u c3QgdGs9U0cubmF2OyBtYWluKHNrZWxldG9uKCkpOyB0cnl7IGNvbnN0IGQ9YXdhaXQgY2FsbChhY3Rpb24scCk7IHJldHVybiB0 az09PVNHLm5hdj9kOm51bGw7IH1jYXRjaChlKXsgaWYodGs9PT1TRy5uYXYpIG1haW4oYDxkaXYgY2xhc3M9ImNhcmQiPiR7ZW1w dHkoJ1NvbWV0aGluZyB3ZW50IHdyb25nJywgZS5tZXNzYWdlLCAnY2xvdWQtb2ZmJyl9PGRpdiBjbGFzcz0icm93IiBzdHlsZT0i anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nLWJvdHRvbToyNHB4Ij48YnV0dG9uIGNsYXNzPSJidG4iIG9uY2xpY2s9InJl bmRlcigpIj4ke2ljKCdyZWZyZXNoLWN3Jywnc20nKX0gVHJ5IGFnYWluPC9idXR0b24+PC9kaXY+PC9kaXY+YCk7IHJldHVybiBu dWxsOyB9IH0KLyogLS0tLS0tLS0tLSB0b2FzdHMsIGNvbmZldHRpLCBjZWxlYnJhdGlvbnMgLS0tLS0tLS0tLSAqLwpmdW5jdGlv biB0b2FzdCh0aXRsZSwgdHlwZT0nJywgc3ViPScnKXsgY29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgdC5j bGFzc05hbWU9J3RvYXN0ICcrdHlwZTsgdC5pbm5lckhUTUw9YCR7aWModHlwZT09PSdvayc/J2NpcmNsZS1jaGVjayc6dHlwZT09 PSdlcnInPydvY3RhZ29uLWFsZXJ0Jzp0eXBlPT09J3B0cyc/J3NwYXJrbGVzJzonaW5mbycpfTxkaXY+PGI+JHtlc2ModGl0bGUp fTwvYj4ke3N1Yj9gPHNwYW4+JHtlc2Moc3ViKX08L3NwYW4+YDonJ308L2Rpdj5gOyBxcygnI3RvYXN0cycpLmFwcGVuZENoaWxk KHQpOyBpY29ucygpOyBzZXRUaW1lb3V0KCgpPT57dC5zdHlsZS50cmFuc2l0aW9uPSdvcGFjaXR5IC4zcyc7dC5zdHlsZS5vcGFj aXR5PScwJztzZXRUaW1lb3V0KCgpPT50LnJlbW92ZSgpLDMwMCk7fSwgdHlwZT09PSdlcnInPzYwMDA6NDIwMCk7IH0KZnVuY3Rp b24gY29uZmV0dGkoKXsgY29uc3QgY3Y9cXMoJyNjb25mZXR0aScpLCBjeD1jdi5nZXRDb250ZXh0KCcyZCcpOyBjdi53aWR0aD1p bm5lcldpZHRoOyBjdi5oZWlnaHQ9aW5uZXJIZWlnaHQ7IGNvbnN0IGNvbHM9WycjRkZDMjBFJywnIzExMTgyNycsJyMxNTgwM0Qn LCcjMUQ0RUQ4JywnI0M4MUUxRScsJyNGRkZGRkYnXTsKICBjb25zdCBQPUFycmF5LmZyb20oe2xlbmd0aDoxNjB9LCgpPT4oe3g6 aW5uZXJXaWR0aC8yKyhNYXRoLnJhbmRvbSgpLS41KSoyMDAseTppbm5lckhlaWdodC8yLjQsdng6KE1hdGgucmFuZG9tKCktLjUp KjE2LHZ5Oi1NYXRoLnJhbmRvbSgpKjE2LTQsczpNYXRoLnJhbmRvbSgpKjcrNCxyOk1hdGgucmFuZG9tKCkqNix2cjooTWF0aC5y YW5kb20oKS0uNSkqLjMsYzpjb2xzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSpjb2xzLmxlbmd0aCldfSkpOyBjb25zdCB0MD1w ZXJmb3JtYW5jZS5ub3coKTsKICAoZnVuY3Rpb24gZihuKXsgY3guY2xlYXJSZWN0KDAsMCxjdi53aWR0aCxjdi5oZWlnaHQpOyBQ LmZvckVhY2gocD0+e3AudnkrPS40NTtwLngrPXAudng7cC55Kz1wLnZ5O3AudngqPS45OTtwLnIrPXAudnI7Y3guc2F2ZSgpO2N4 LnRyYW5zbGF0ZShwLngscC55KTtjeC5yb3RhdGUocC5yKTtjeC5maWxsU3R5bGU9cC5jO2N4LmZpbGxSZWN0KC1wLnMvMiwtcC5z LzMscC5zLHAucyouNjYpO2N4LnJlc3RvcmUoKTt9KTsgaWYobi10MDwyNDAwKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZik7IGVs c2UgY3guY2xlYXJSZWN0KDAsMCxjdi53aWR0aCxjdi5oZWlnaHQpOyB9KSh0MCk7IH0KZnVuY3Rpb24gY2VsZWJyYXRlKHIpeyBp ZighciB8fCAhU0cudXNlciB8fCByLnVzZXJJZCE9PVNHLnVzZXIuSWQpIHJldHVybjsgaWYoci5jYXBwZWQpeyB0b2FzdCgnRGFp bHkgcG9pbnRzIGxpbWl0IHJlYWNoZWQnLCcnLCAnVGhhbmtzIGZvciB0aGUgZWZmb3J0IOKAlCBwb2ludHMgZm9yIHRoaXMgYWN0 aXZpdHkgcmVzdW1lIHRvbW9ycm93LicpOyByZXR1cm47IH0KICBpZihyLnBvaW50cykgdG9hc3QoYCske3IucG9pbnRzfSBTYWZl dHkgUG9pbnRzYCwncHRzJywgWydOaWNlIGNhdGNoIScsJ1lvdSBqdXN0IG1hZGUgeW91ciB3b3JrcGxhY2Ugc2FmZXIuJywnS2Vl cCBpdCBnb2luZyEnXVtNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMyldKTsKICAoci5iYWRnZXN8fFtdKS5mb3JFYWNoKGI9PnRv YXN0KGAke2J9IGJhZGdlIHVubG9ja2VkIWAsJ3B0cycsJ0NoZWNrIGl0IG91dCBvbiB5b3VyIFNhZmV0eSBHaWFudCBwcm9maWxl LicpKTsKICBpZihyLmxldmVsVXApeyBjb25mZXR0aSgpOyBtb2RhbCgnTGV2ZWwgdXAhJywgYDxkaXYgc3R5bGU9InRleHQtYWxp Z246Y2VudGVyO3BhZGRpbmc6MTBweCAwIj48ZGl2IGNsYXNzPSJiYWRnZSIgc3R5bGU9ImJvcmRlcjowIj48ZGl2IGNsYXNzPSJt ZWQiIHN0eWxlPSJ3aWR0aDo4NHB4O2hlaWdodDo4NHB4Ij4ke2ljKCdjcm93bicsJ2xnJyl9PC9kaXY+PC9kaXY+PGgyIGNsYXNz PSJtdCI+WW91J3JlIG5vdyBhICR7ZXNjKHIubGV2ZWxVcCl9PC9oMj48cCBjbGFzcz0ibXV0ZWQiPiR7bnVtKHIudG90YWwpfSBT YWZldHkgUG9pbnRzLiBUaGFuayB5b3UgZm9yIG1ha2luZyB0aGUgd29ya3BsYWNlIHNhZmVyLjwvcD48L2Rpdj5gLCB7c3VibWl0 OidBd2Vzb21lJywgY2FuY2VsOmZhbHNlfSk7IH0KICBlbHNlIGlmKChyLmJhZGdlc3x8W10pLmxlbmd0aCkgY29uZmV0dGkoKTsK fQovKiAtLS0tLS0tLS0tIG1vZGFsICYgZHJhd2VyIC0tLS0tLS0tLS0gKi8KZnVuY3Rpb24gbW9kYWwodGl0bGUsIGJvZHksIG89 e30peyBjb25zdCByb290PXFzKCcjbW9kYWxSb290Jyk7IGNvbnN0IGlkPSdtJytEYXRlLm5vdygpOyByb290Lmluc2VydEFkamFj ZW50SFRNTCgnYmVmb3JlZW5kJywgYDxkaXYgY2xhc3M9Im92IiBpZD0iJHtpZH0iIHJvbGU9ImRpYWxvZyIgYXJpYS1tb2RhbD0i dHJ1ZSIgYXJpYS1sYWJlbD0iJHtlc2ModGl0bGUpfSI+PGZvcm0gY2xhc3M9Im1vZGFsICR7by53aWRlPyd3aWRlJzonJ30iIG5v dmFsaWRhdGU+PGRpdiBjbGFzcz0ibWgiPjxoMz4ke2VzYyh0aXRsZSl9PC9oMz48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9 ImJ0biBnaG9zdCBzbSIgZGF0YS14IGFyaWEtbGFiZWw9IkNsb3NlIj4ke2ljKCd4Jyl9PC9idXR0b24+PC9kaXY+PGRpdiBjbGFz cz0ibWIiPiR7Ym9keX08L2Rpdj4ke28uZm9vdGVyPT09ZmFsc2U/Jyc6YDxkaXYgY2xhc3M9Im1mIj4ke28uY2FuY2VsPT09ZmFs c2U/Jyc6JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBkYXRhLXg+Q2FuY2VsPC9idXR0b24+J30ke28uZXh0cmF8 fCcnfTxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuICR7by5kYW5nZXI/J2Rhbmdlcic6J3ByaSd9Ij4ke2VzYyhvLnN1 Ym1pdHx8J1NhdmUnKX08L2J1dHRvbj48L2Rpdj5gfTwvZm9ybT48L2Rpdj5gKTsKICBjb25zdCBvdj1xcygnIycraWQpLCBmPXFz KCdmb3JtJyxvdik7IGljb25zKCk7IGNvbnN0IGNsb3NlPSgpPT5vdi5yZW1vdmUoKTsKICBxc2EoJ1tkYXRhLXhdJyxvdikuZm9y RWFjaChiPT5iLm9uY2xpY2s9Y2xvc2UpOyBvdi5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLGU9PntpZihlLnRhcmdldD09 PW92KSBjbG9zZSgpO30pOyBvdi5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxlPT57aWYoZS5rZXk9PT0nRXNjYXBlJykgY2xv c2UoKTt9KTsKICBmLm9uc3VibWl0PWFzeW5jIGU9PnsgZS5wcmV2ZW50RGVmYXVsdCgpOyBpZighby5vblN1Ym1pdCl7Y2xvc2Uo KTtyZXR1cm47fSBjb25zdCBidG49cXMoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nLGYpOyBidG4uZGlzYWJsZWQ9dHJ1ZTsgY29uc3Qg b2xkPWJ0bi5pbm5lckhUTUw7IGJ0bi5pbm5lckhUTUw9aWMoJ2xvYWRlcicsJ3NtJykrJyBXb3JraW5n4oCmJzsgaWNvbnMoKTsK ICAgIHRyeXsgY29uc3Qgcj1hd2FpdCBvLm9uU3VibWl0KGZvcm1EYXRhKGYpLCBmKTsgaWYociE9PWZhbHNlKSBjbG9zZSgpOyB9 Y2F0Y2goZXJyKXsgdG9hc3QoZXJyLm1lc3NhZ2UsJ2VycicpOyB9IGZpbmFsbHl7IGlmKGRvY3VtZW50LmJvZHkuY29udGFpbnMo YnRuKSl7YnRuLmRpc2FibGVkPWZhbHNlO2J0bi5pbm5lckhUTUw9b2xkO2ljb25zKCk7fSB9IH07CiAgaWYoby5vbk9wZW4pIG8u b25PcGVuKGYpOyBzZXRUaW1lb3V0KCgpPT57IGNvbnN0IHg9cXMoJ2lucHV0Om5vdChbdHlwZT1oaWRkZW5dKSxzZWxlY3QsdGV4 dGFyZWEnLGYpOyBpZih4KSB4LmZvY3VzKCk7IH0sNTApOyByZXR1cm4gZjsgfQpmdW5jdGlvbiBmb3JtRGF0YShmKXsgY29uc3Qg bz17fTsgcXNhKCdbbmFtZV0nLGYpLmZvckVhY2goZWw9PnsgaWYoZWwudHlwZT09PSdjaGVja2JveCcpeyBpZihlbC5kYXRhc2V0 Lm11bHRpKXsgKG9bZWwubmFtZV09b1tlbC5uYW1lXXx8W10pOyBpZihlbC5jaGVja2VkKSBvW2VsLm5hbWVdLnB1c2goZWwudmFs dWUpO30gZWxzZSBvW2VsLm5hbWVdPWVsLmNoZWNrZWQ7IH0gZWxzZSBpZihlbC50eXBlPT09J3JhZGlvJyl7IGlmKGVsLmNoZWNr ZWQpIG9bZWwubmFtZV09ZWwudmFsdWU7IH0gZWxzZSBpZihlbC5tdWx0aXBsZSl7IG9bZWwubmFtZV09QXJyYXkuZnJvbShlbC5z ZWxlY3RlZE9wdGlvbnMpLm1hcCh4PT54LnZhbHVlKTsgfSBlbHNlIG9bZWwubmFtZV09ZWwudmFsdWU7IH0pOyByZXR1cm4gbzsg fQpmdW5jdGlvbiBkcmF3ZXIodGl0bGUsIGJvZHkpeyBjbG9zZURyYXdlcigpOyBxcygnI21vZGFsUm9vdCcpLmluc2VydEFkamFj ZW50SFRNTCgnYmVmb3JlZW5kJywgYDxkaXYgY2xhc3M9Im92IiBpZD0iZG92IiBzdHlsZT0ianVzdGlmeS1jb250ZW50OmZsZXgt ZW5kO3BhZGRpbmc6MCI+PC9kaXY+PGFzaWRlIGNsYXNzPSJkcmF3ZXIiIGlkPSJkcnciIHJvbGU9ImRpYWxvZyIgYXJpYS1tb2Rh bD0idHJ1ZSIgYXJpYS1sYWJlbD0iJHtlc2ModGl0bGUpfSI+PGRpdiBjbGFzcz0ibWgiPjxoMz4ke3RpdGxlfTwvaDM+PGJ1dHRv biBjbGFzcz0iYnRuIGdob3N0IHNtIiBvbmNsaWNrPSJjbG9zZURyYXdlcigpIiBhcmlhLWxhYmVsPSJDbG9zZSI+JHtpYygneCcp fTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9Im1iIiBpZD0iZHJ3YiI+JHtib2R5fTwvZGl2PjwvYXNpZGU+YCk7IHFzKCcjZG92 Jykub25jbGljaz1jbG9zZURyYXdlcjsgYWZ0ZXIoKTsgfQpmdW5jdGlvbiBjbG9zZURyYXdlcigpeyBbJyNkb3YnLCcjZHJ3J10u Zm9yRWFjaChzPT57Y29uc3QgZT1xcyhzKTsgaWYoZSkgZS5yZW1vdmUoKTt9KTsgfQpmdW5jdGlvbiBjb25maXJtQm94KHRpdGxl LCB0ZXh0LCBvblllcywgbz17fSl7IG1vZGFsKHRpdGxlLCBgPHAgc3R5bGU9Im1hcmdpbjowIj4ke3RleHR9PC9wPiR7by5jb21t ZW50P2A8ZGl2IGNsYXNzPSJmaWVsZCBtdCI+PGxhYmVsPiR7ZXNjKG8uY29tbWVudCl9PC9sYWJlbD48dGV4dGFyZWEgY2xhc3M9 ImlucCIgbmFtZT0iY29tbWVudCIgJHtvLnJlcXVpcmVkPydyZXF1aXJlZCc6Jyd9PjwvdGV4dGFyZWE+PC9kaXY+YDonJ31gLCB7 IHN1Ym1pdDpvLnN1Ym1pdHx8J0NvbmZpcm0nLCBkYW5nZXI6by5kYW5nZXIsIG9uU3VibWl0OiBhc3luYyBkPT57IGlmKG8ucmVx dWlyZWQgJiYgIVN0cmluZyhkLmNvbW1lbnR8fCcnKS50cmltKCkpeyB0b2FzdCgnUGxlYXNlIGFkZCBhIGNvbW1lbnQnLCdlcnIn KTsgcmV0dXJuIGZhbHNlOyB9IGF3YWl0IG9uWWVzKGQpOyB9IH0pOyB9Ci8qIC0tLS0tLS0tLS0gZm9ybSBoZWxwZXJzIC0tLS0t LS0tLS0gKi8KdmFyIG9wdCA9ICh2LCBsLCBzZWwpID0+IGA8b3B0aW9uIHZhbHVlPSIke2VzYyh2KX0iICR7U3RyaW5nKHNlbCk9 PT1TdHJpbmcodik/J3NlbGVjdGVkJzonJ30+JHtlc2MobD09bnVsbD92OmwpfTwvb3B0aW9uPmA7CnZhciBzZWxTaXRlcyA9IChz ZWwsIGJsYW5rKSA9PiAoYmxhbms/b3B0KCcnLGJsYW5rKTonJykrU0cuTC5zaXRlcy5tYXAocz0+b3B0KHMuSWQscy5OYW1lLHNl bCkpLmpvaW4oJycpOwp2YXIgc2VsRGVwdHMgPSAoc2VsLCBzaXRlSWQsIGJsYW5rKSA9PiAoYmxhbms/b3B0KCcnLGJsYW5rKTon JykrU0cuTC5kZXB0cy5maWx0ZXIoZD0+IXNpdGVJZHx8ZC5TaXRlSWQ9PT1zaXRlSWQpLm1hcChkPT5vcHQoZC5JZCwgc2l0ZUlk P2QuTmFtZTpkZXB0RnVsbChkLklkKSwgc2VsKSkuam9pbignJyk7CnZhciBzZWxVc2VycyA9IChzZWwsIGZpbHRlciwgYmxhbmsp ID0+IChibGFuaz9vcHQoJycsYmxhbmspOicnKStTRy5MLnVzZXJzLmZpbHRlcihmaWx0ZXJ8fCgoKT0+dHJ1ZSkpLnNvcnQoKGEs Yik9PmEuTmFtZS5sb2NhbGVDb21wYXJlKGIuTmFtZSkpLm1hcCh1PT5vcHQodS5JZCwgdS5OYW1lKycg4oCUICcrcm9sZU4odS5S b2xlKSsnIMK3ICcrZGVwdEZ1bGwodS5EZXB0SWQpLCBzZWwpKS5qb2luKCcnKTsKZnVuY3Rpb24gbGlua1NpdGVEZXB0KGYsIHNp dGVOYW1lPSdzaXRlSWQnLCBkZXB0TmFtZT0nZGVwdElkJyl7IGNvbnN0IHM9cXMoYFtuYW1lPSR7c2l0ZU5hbWV9XWAsZiksIGQ9 cXMoYFtuYW1lPSR7ZGVwdE5hbWV9XWAsZik7IGlmKCFzfHwhZCkgcmV0dXJuOyBzLm9uY2hhbmdlPSgpPT57IGQuaW5uZXJIVE1M PXNlbERlcHRzKCcnLCBzLnZhbHVlLCAnQWxsIC8gbm90IHNwZWNpZmljJyk7IH07IH0Kd2luZG93Ll9waCA9IHt9OwpmdW5jdGlv biBwaG90b0lucHV0KGtleSwgbGFiZWw9J0FkZCBwaG90b3MnKXsgd2luZG93Ll9waFtrZXldPVtdOyByZXR1cm4gYDxkaXYgY2xh c3M9ImRyb3AiIG9uY2xpY2s9InRoaXMubmV4dEVsZW1lbnRTaWJsaW5nLmNsaWNrKCkiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9 IjAiPiR7aWMoJ2NhbWVyYScsJ2xnJyl9PGRpdiBjbGFzcz0iYiBtdCIgc3R5bGU9Im1hcmdpbi10b3A6NnB4Ij4ke2VzYyhsYWJl bCl9PC9kaXY+PGRpdiBjbGFzcz0ic21hbGwgbXV0ZWQiPlRha2UgYSBwaG90byBvciBjaG9vc2UgZnJvbSB5b3VyIGdhbGxlcnkg KG1heCA0KTwvZGl2PjwvZGl2PjxpbnB1dCB0eXBlPSJmaWxlIiBhY2NlcHQ9ImltYWdlLyoiIGNhcHR1cmU9ImVudmlyb25tZW50 IiBtdWx0aXBsZSBjbGFzcz0iaGlkZSIgb25jaGFuZ2U9ImFkZFBob3RvcygnJHtrZXl9Jyx0aGlzKSI+PGRpdiBjbGFzcz0idGh1 bWJzIiBpZD0idGgtJHtrZXl9Ij48L2Rpdj5gOyB9CmFzeW5jIGZ1bmN0aW9uIGFkZFBob3RvcyhrZXksIGlucHV0KXsgY29uc3Qg ZmlsZXM9QXJyYXkuZnJvbShpbnB1dC5maWxlc3x8W10pOyBmb3IoY29uc3QgZiBvZiBmaWxlcyl7IGlmKHdpbmRvdy5fcGhba2V5 XS5sZW5ndGg+PTQpIGJyZWFrOyB0cnl7IHdpbmRvdy5fcGhba2V5XS5wdXNoKGF3YWl0IGNvbXByZXNzKGYpKTsgfWNhdGNoKGUp eyB0b2FzdCgnQ291bGQgbm90IHJlYWQgaW1hZ2UnLCdlcnInKTsgfSB9IGlucHV0LnZhbHVlPScnOyBkcmF3VGh1bWJzKGtleSk7 IH0KZnVuY3Rpb24gZHJhd1RodW1icyhrZXkpeyBjb25zdCBlbD1xcygnI3RoLScra2V5KTsgaWYoIWVsKSByZXR1cm47IGVsLmlu bmVySFRNTD13aW5kb3cuX3BoW2tleV0ubWFwKChkLGkpPT5gPGRpdj48aW1nIHNyYz0iJHtkfSIgYWx0PSJQaG90byAke2krMX0i PjxidXR0b24gdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJSZW1vdmUgcGhvdG8iIG9uY2xpY2s9IndpbmRvdy5fcGhbJyR7a2V5 fSddLnNwbGljZSgke2l9LDEpO2RyYXdUaHVtYnMoJyR7a2V5fScpIj7DlzwvYnV0dG9uPjwvZGl2PmApLmpvaW4oJycpOyB9CmZ1 bmN0aW9uIGNvbXByZXNzKGZpbGUsIG1heD0xMjgwLCBxPS43Mil7IHJldHVybiBuZXcgUHJvbWlzZSgocmVzLHJlaik9PnsgY29u c3Qgcj1uZXcgRmlsZVJlYWRlcigpOyByLm9uZXJyb3I9cmVqOyByLm9ubG9hZD0oKT0+eyBjb25zdCBpbWc9bmV3IEltYWdlKCk7 IGltZy5vbmVycm9yPXJlajsgaW1nLm9ubG9hZD0oKT0+eyBjb25zdCBrPU1hdGgubWluKDEsbWF4L01hdGgubWF4KGltZy53aWR0 aCxpbWcuaGVpZ2h0KSk7IGNvbnN0IGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7IGMud2lkdGg9TWF0aC5yb3Vu ZChpbWcud2lkdGgqayk7IGMuaGVpZ2h0PU1hdGgucm91bmQoaW1nLmhlaWdodCprKTsgYy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJ bWFnZShpbWcsMCwwLGMud2lkdGgsYy5oZWlnaHQpOyByZXMoYy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLHEpKTsgfTsgaW1nLnNy Yz1yLnJlc3VsdDsgfTsgci5yZWFkQXNEYXRhVVJMKGZpbGUpOyB9KTsgfQpmdW5jdGlvbiBtaWNCdG4odGFyZ2V0KXsgcmV0dXJu ICh3aW5kb3cuU3BlZWNoUmVjb2duaXRpb258fHdpbmRvdy53ZWJraXRTcGVlY2hSZWNvZ25pdGlvbikgPyBgPGJ1dHRvbiB0eXBl PSJidXR0b24iIGNsYXNzPSJidG4gc20iIG9uY2xpY2s9ImRpY3RhdGUoJyR7dGFyZ2V0fScsdGhpcykiPiR7aWMoJ21pYycsJ3Nt Jyl9IFNwZWFrPC9idXR0b24+YCA6ICcnOyB9CmZ1bmN0aW9uIGRpY3RhdGUodGFyZ2V0LCBidG4peyBjb25zdCBTUj13aW5kb3cu U3BlZWNoUmVjb2duaXRpb258fHdpbmRvdy53ZWJraXRTcGVlY2hSZWNvZ25pdGlvbjsgaWYoIVNSKSByZXR1cm47IGlmKHdpbmRv dy5fcmVjKXsgd2luZG93Ll9yZWMuc3RvcCgpOyByZXR1cm47IH0gY29uc3Qgcj1uZXcgU1IoKTsgci5sYW5nPSdlbi1ORyc7IHIu aW50ZXJpbVJlc3VsdHM9ZmFsc2U7IHIuY29udGludW91cz10cnVlOyB3aW5kb3cuX3JlYz1yOyBidG4uY2xhc3NMaXN0LmFkZCgn ZGFyaycpOyBidG4uaW5uZXJIVE1MPWljKCdtaWMnLCdzbScpKycgTGlzdGVuaW5n4oCmIHRhcCB0byBzdG9wJzsgaWNvbnMoKTsK ICByLm9ucmVzdWx0PWU9PnsgY29uc3QgdGE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0KTsgZm9yKGxldCBpPWUucmVz dWx0SW5kZXg7aTxlLnJlc3VsdHMubGVuZ3RoO2krKykgaWYoZS5yZXN1bHRzW2ldLmlzRmluYWwpIHRhLnZhbHVlPSh0YS52YWx1 ZT90YS52YWx1ZS50cmltKCkrJyAnOicnKStlLnJlc3VsdHNbaV1bMF0udHJhbnNjcmlwdDsgfTsKICByLm9uZW5kPSgpPT57IHdp bmRvdy5fcmVjPW51bGw7IGJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdkYXJrJyk7IGJ0bi5pbm5lckhUTUw9aWMoJ21pYycsJ3NtJykr JyBTcGVhayc7IGljb25zKCk7IH07IHIub25lcnJvcj0oKT0+ci5zdG9wKCk7IHIuc3RhcnQoKTsgfQpmdW5jdGlvbiBnZW8oZiwg YnRuKXsgaWYoIW5hdmlnYXRvci5nZW9sb2NhdGlvbil7IHRvYXN0KCdMb2NhdGlvbiBub3QgYXZhaWxhYmxlIG9uIHRoaXMgZGV2 aWNlJywnZXJyJyk7IHJldHVybjsgfSBidG4uaW5uZXJIVE1MPWljKCdsb2FkZXInLCdzbScpKycgTG9jYXRpbmfigKYnOyBpY29u cygpOyBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKHA9PnsgcXMoJ1tuYW1lPWxhdF0nLGYpLnZhbHVl PXAuY29vcmRzLmxhdGl0dWRlLnRvRml4ZWQoNik7IHFzKCdbbmFtZT1sbmddJyxmKS52YWx1ZT1wLmNvb3Jkcy5sb25naXR1ZGUu dG9GaXhlZCg2KTsgYnRuLmlubmVySFRNTD1pYygnbWFwLXBpbi1jaGVjaycsJ3NtJykrJyBMb2NhdGlvbiBhZGRlZCc7IGljb25z KCk7IH0sICgpPT57IGJ0bi5pbm5lckhUTUw9aWMoJ21hcC1waW4tb2ZmJywnc20nKSsnIExvY2F0aW9uIGJsb2NrZWQnOyBpY29u cygpOyB9LCB7ZW5hYmxlSGlnaEFjY3VyYWN5OnRydWUsdGltZW91dDo4MDAwfSk7IH0KLyogLS0tLS0tLS0tLSBDU1YgLyBwcmlu dCAtLS0tLS0tLS0tICovCmZ1bmN0aW9uIGNzdihuYW1lLCByb3dzLCBjb2xzKXsgY29uc3QgaGVhZD1jb2xzLm1hcChjPT5jLmxh YmVsKTsgY29uc3QgbGluZXM9W2hlYWRdLmNvbmNhdChyb3dzLm1hcChyPT5jb2xzLm1hcChjPT57IGNvbnN0IHY9Yy5nZXQ/Yy5n ZXQocik6cltjLmtdOyByZXR1cm4gdj09bnVsbD8nJzpTdHJpbmcodik7IH0pKSk7IGNvbnN0IHM9bGluZXMubWFwKGw9PmwubWFw KHY9Pi9bIixcbl0vLnRlc3Qodik/JyInK3YucmVwbGFjZSgvIi9nLCciIicpKyciJzp2KS5qb2luKCcsJykpLmpvaW4oJ1xuJyk7 CiAgY29uc3QgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7IGEuaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9i KFsn77u/JytzXSx7dHlwZTondGV4dC9jc3YnfSkpOyBhLmRvd25sb2FkPW5hbWUrJy0nK3RvZGF5KCkrJy5jc3YnOyBkb2N1bWVu dC5ib2R5LmFwcGVuZENoaWxkKGEpOyBhLmNsaWNrKCk7IGEucmVtb3ZlKCk7IHRvYXN0KCdFeHBvcnQgcmVhZHknLCdvaycsbmFt ZSsnLmNzdicpOyB9CmZ1bmN0aW9uIHByaW50V2luKHRpdGxlLCBjc3MsIGJvZHlIdG1sLCBkZWxheSl7IHZhciB3PXdpbmRvdy5v cGVuKCcnLCdfYmxhbmsnKTsgaWYoIXcpeyB0b2FzdCgnQWxsb3cgcG9wLXVwcyB0byBwcmludCByZXBvcnRzJywnZXJyJyk7IHJl dHVybjsgfQogIHZhciBkPXcuZG9jdW1lbnQ7IGQudGl0bGU9dGl0bGU7IHZhciBzdD1kLmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7 IHN0LnRleHRDb250ZW50PWNzczsgZC5oZWFkLmFwcGVuZENoaWxkKHN0KTsgZC5ib2R5LmlubmVySFRNTD1ib2R5SHRtbDsKICBz ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHRyeXsgdy5mb2N1cygpOyB3LnByaW50KCk7IH1jYXRjaChlKXt9IH0sIGRlbGF5fHw0MDAp OyB9CmZ1bmN0aW9uIHByaW50UmVwb3J0KHRpdGxlLCBodG1sKXsgcHJpbnRXaW4odGl0bGUsICdib2R5e2ZvbnQtZmFtaWx5Oklu dGVyLEFyaWFsLHNhbnMtc2VyaWY7Y29sb3I6IzBFMTcyNjttYXJnaW46MzJweDtmb250LXNpemU6MTNweH1oMXtmb250LXNpemU6 MjJweDttYXJnaW46MH1oMntmb250LXNpemU6MTVweDttYXJnaW46MjJweCAwIDhweDtib3JkZXItYm90dG9tOjJweCBzb2xpZCAj RkZDMjBFO3BhZGRpbmctYm90dG9tOjRweH10YWJsZXt3aWR0aDoxMDAlO2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZX10ZCx0aHti b3JkZXI6MXB4IHNvbGlkICNFM0U3RUU7cGFkZGluZzo2cHggOHB4O3RleHQtYWxpZ246bGVmdDt2ZXJ0aWNhbC1hbGlnbjp0b3B9 dGh7YmFja2dyb3VuZDojRjNGNUY4fS5icmFuZHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxp Z24taXRlbXM6Y2VudGVyO2JvcmRlci1ib3R0b206NnB4IHNvbGlkICNGRkMyMEU7cGFkZGluZy1ib3R0b206MTJweDttYXJnaW4t Ym90dG9tOjE2cHh9Lm11dGVke2NvbG9yOiM1QjY2Nzh9JywKICBgPGRpdiBjbGFzcz0iYnJhbmQiPjxkaXY+PGRpdiBzdHlsZT0i Zm9udC13ZWlnaHQ6OTAwO2ZvbnQtc2l6ZToxOHB4Ij5TQUFmZWx5PC9kaXY+PGRpdiBjbGFzcz0ibXV0ZWQiIHN0eWxlPSJmb250 LXNpemU6MTFweCI+RW50ZXJwcmlzZSBTYWZldHkgT3BlcmF0aW5nIFN5c3RlbTwvZGl2PjxkaXYgY2xhc3M9Im11dGVkIj4ke2Vz YygoU0cub3JnJiZTRy5vcmcuTmFtZSl8fCcnKX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJtdXRlZCI+R2VuZXJhdGVkICR7Zm10 RFQobmV3IERhdGUoKS50b0lTT1N0cmluZygpKX0gYnkgJHtlc2MoU0cudXNlcj9TRy51c2VyLk5hbWU6JycpfTwvZGl2PjwvZGl2 PjxoMT4ke2VzYyh0aXRsZSl9PC9oMT4ke2h0bWx9YCwgNDAwKTsgfQp2YXIgcmVwVGFibGUgPSAocm93cykgPT4gYDx0YWJsZT4k e3Jvd3MubWFwKHI9PmA8dHI+PHRoIHN0eWxlPSJ3aWR0aDozMCUiPiR7ZXNjKHJbMF0pfTwvdGg+PHRkPiR7clsxXT09bnVsbD8n 4oCUJzplc2MoclsxXSl9PC90ZD48L3RyPmApLmpvaW4oJycpfTwvdGFibGU+YDsKLyogLS0tLS0tLS0tLSBkYXRhIHRhYmxlIC0t LS0tLS0tLS0gKi8KdmFyIFNHVCA9IHsKICBodG1sKGlkLCBjb2xzLCByb3dzLCBvPXt9KXsgY29uc3Qgc2F2ZWQ9c3RvcmUuZ2V0 KCdzZ192aWV3XycraWQse30pOyBjb25zdCBzdD1TRy50YWJsZXNbaWRdPXtjb2xzLHJvd3MsbyxxOnNhdmVkLnF8fCcnLHNvcnQ6 c2F2ZWQuc29ydHx8by5zb3J0fHxudWxsLGRpcjpzYXZlZC5kaXJ8fC0xLHBhZ2U6MCxmaWx0ZXJzOnNhdmVkLmZpbHRlcnN8fHt9 LGhpZGRlbjpzYXZlZC5oaWRkZW58fG8uaGlkZGVufHx7fSxzZWw6bmV3IFNldCgpLHNpemU6by5zaXplfHwxNX07CiAgICBjb25z dCBmY29scz1jb2xzLmZpbHRlcihjPT5jLmZpbHRlcik7CiAgICByZXR1cm4gYDxkaXYgY2xhc3M9InRiYXIiPjxpbnB1dCBjbGFz cz0iaW5wIHEiIHR5cGU9InNlYXJjaCIgcGxhY2Vob2xkZXI9IlNlYXJjaOKApiIgYXJpYS1sYWJlbD0iU2VhcmNoIHRhYmxlIiB2 YWx1ZT0iJHtlc2Moc3QucSl9IiBvbmlucHV0PSJTR1Quc2V0KCcke2lkfScsJ3EnLHRoaXMudmFsdWUpIj4KICAgICAgJHtmY29s cy5tYXAoYz0+eyBjb25zdCB2YWxzPVsuLi5uZXcgU2V0KHJvd3MubWFwKHI9PlNHVC52YWwoYyxyKSkuZmlsdGVyKHY9PnYhPT0n JyYmdiE9bnVsbCkpXS5zb3J0KCk7IHJldHVybiBgPHNlbGVjdCBjbGFzcz0iaW5wIiBhcmlhLWxhYmVsPSJGaWx0ZXIgJHtlc2Mo Yy5sYWJlbCl9IiBvbmNoYW5nZT0iU0dULmZpbHRlcignJHtpZH0nLCcke2Mua30nLHRoaXMudmFsdWUpIj4ke29wdCgnJywnQWxs ICcrYy5sYWJlbC50b0xvd2VyQ2FzZSgpKX0ke3ZhbHMubWFwKHY9Pm9wdCh2LHYsc3QuZmlsdGVyc1tjLmtdKSkuam9pbignJyl9 PC9zZWxlY3Q+YDsgfSkuam9pbignJyl9CiAgICAgIDxzcGFuIGNsYXNzPSJncm93Ij48L3NwYW4+CiAgICAgIDxidXR0b24gY2xh c3M9ImJ0biBzbSIgb25jbGljaz0iU0dULmNvbHMoJyR7aWR9Jyx0aGlzKSIgYXJpYS1sYWJlbD0iQ29sdW1ucyI+JHtpYygnY29s dW1ucy0zJywnc20nKX08L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuIHNtIiBvbmNsaWNrPSJTR1Quc2F2ZSgnJHtp ZH0nKSIgdGl0bGU9IlNhdmUgdGhpcyB2aWV3Ij4ke2ljKCdib29rbWFyaycsJ3NtJyl9IFNhdmUgdmlldzwvYnV0dG9uPgogICAg ICAke28ubm9FeHBvcnQ/Jyc6YDxidXR0b24gY2xhc3M9ImJ0biBzbSIgb25jbGljaz0iU0dULmV4cG9ydCgnJHtpZH0nKSI+JHtp YygnZG93bmxvYWQnLCdzbScpfSBFeHBvcnQ8L2J1dHRvbj5gfSR7by50b29sYmFyfHwnJ308L2Rpdj4KICAgICAgPGRpdiBjbGFz cz0idHciPjx0YWJsZSBjbGFzcz0idGJsIiBpZD0idGItJHtpZH0iPjwvdGFibGU+PC9kaXY+PGRpdiBjbGFzcz0idGZvb3QiIGlk PSJ0Zi0ke2lkfSI+PC9kaXY+YDsgfSwKICB2YWwoYyxyKXsgY29uc3Qgdj1jLmdldD9jLmdldChyKTpyW2Mua107IHJldHVybiB2 PT1udWxsPycnOnY7IH0sCiAgcm93cyhpZCl7IGNvbnN0IHN0PVNHLnRhYmxlc1tpZF07IGxldCByPXN0LnJvd3M7IGNvbnN0IHE9 c3QucS50cmltKCkudG9Mb3dlckNhc2UoKTsKICAgIGlmKHEpIHI9ci5maWx0ZXIoeD0+c3QuY29scy5zb21lKGM9PlN0cmluZyhT R1QudmFsKGMseCkpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpKTsKICAgIE9iamVjdC5rZXlzKHN0LmZpbHRlcnMpLmZvckVh Y2goaz0+eyBjb25zdCB2PXN0LmZpbHRlcnNba107IGlmKHYpeyBjb25zdCBjPXN0LmNvbHMuZmluZCh6PT56Lms9PT1rKTsgcj1y LmZpbHRlcih4PT5TdHJpbmcoU0dULnZhbChjLHgpKT09PXYpOyB9IH0pOwogICAgaWYoc3Quc29ydCl7IGNvbnN0IGM9c3QuY29s cy5maW5kKHo9Pnouaz09PXN0LnNvcnQpOyBpZihjKSByPXIuc2xpY2UoKS5zb3J0KChhLGIpPT57IGNvbnN0IHg9Yy5zb3J0dj9j LnNvcnR2KGEpOlNHVC52YWwoYyxhKSwgeT1jLnNvcnR2P2Muc29ydHYoYik6U0dULnZhbChjLGIpOyByZXR1cm4gKHg+eT8xOng8 eT8tMTowKSpzdC5kaXI7IH0pOyB9CiAgICByZXR1cm4gcjsgfSwKICBkcmF3KGlkKXsgY29uc3Qgc3Q9U0cudGFibGVzW2lkXTsg aWYoIXN0fHwhcXMoJyN0Yi0nK2lkKSkgcmV0dXJuOyBjb25zdCBhbGw9U0dULnJvd3MoaWQpLCBwYWdlcz1NYXRoLm1heCgxLE1h dGguY2VpbChhbGwubGVuZ3RoL3N0LnNpemUpKTsgc3QucGFnZT1NYXRoLm1pbihzdC5wYWdlLHBhZ2VzLTEpOyBjb25zdCByb3dz PWFsbC5zbGljZShzdC5wYWdlKnN0LnNpemUsKHN0LnBhZ2UrMSkqc3Quc2l6ZSksIHZpcz1zdC5jb2xzLmZpbHRlcihjPT4hc3Qu aGlkZGVuW2Mua10pOwogICAgcXMoJyN0Yi0nK2lkKS5pbm5lckhUTUw9YDx0aGVhZD48dHI+JHtzdC5vLnNlbGVjdD9gPHRoIHN0 eWxlPSJ3aWR0aDozMHB4Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIGFyaWEtbGFiZWw9IlNlbGVjdCBhbGwiIG9uY2xpY2s9ImV2 ZW50LnN0b3BQcm9wYWdhdGlvbigpO1NHVC5zZWxBbGwoJyR7aWR9Jyx0aGlzLmNoZWNrZWQpIj48L3RoPmA6Jyd9JHt2aXMubWFw KGM9PmA8dGggb25jbGljaz0iU0dULnNvcnRCeSgnJHtpZH0nLCcke2Mua30nKSIgYXJpYS1zb3J0PSIke3N0LnNvcnQ9PT1jLms/ KHN0LmRpcj4wPydhc2NlbmRpbmcnOidkZXNjZW5kaW5nJyk6J25vbmUnfSI+JHtlc2MoYy5sYWJlbCl9ICR7c3Quc29ydD09PWMu az8oc3QuZGlyPjA/J+KGkSc6J+KGkycpOicnfTwvdGg+YCkuam9pbignJyl9PC90cj48L3RoZWFkPgogICAgICA8dGJvZHk+JHty b3dzLmxlbmd0aD9yb3dzLm1hcChyPT57IGNvbnN0IGk9c3Qucm93cy5pbmRleE9mKHIpOyByZXR1cm4gYDx0ciBjbGFzcz0iJHtz dC5vLnJvd0NsYXNzP3N0Lm8ucm93Q2xhc3Mocik6Jyd9IiB0YWJpbmRleD0iMCIgb25jbGljaz0iU0dULmNsaWNrKCcke2lkfScs JHtpfSkiIG9ua2V5ZG93bj0iaWYoZXZlbnQua2V5PT09J0VudGVyJylTR1QuY2xpY2soJyR7aWR9Jywke2l9KSI+JHtzdC5vLnNl bGVjdD9gPHRkIGRhdGEtbD0iU2VsZWN0IiBvbmNsaWNrPSJldmVudC5zdG9wUHJvcGFnYXRpb24oKSI+PGlucHV0IHR5cGU9ImNo ZWNrYm94IiAke3N0LnNlbC5oYXMoaSk/J2NoZWNrZWQnOicnfSBvbmNoYW5nZT0iU0dULnBpY2soJyR7aWR9Jywke2l9LHRoaXMu Y2hlY2tlZCkiPjwvdGQ+YDonJ30ke3Zpcy5tYXAoYz0+YDx0ZCBkYXRhLWw9IiR7ZXNjKGMubGFiZWwpfSI+JHtjLnJlbmRlcj9j LnJlbmRlcihyKTplc2MoU0dULnZhbChjLHIpKX08L3RkPmApLmpvaW4oJycpfTwvdHI+YDsgfSkuam9pbignJyk6YDx0cj48dGQg Y29sc3Bhbj0iJHt2aXMubGVuZ3RoKzF9IiBzdHlsZT0iY3Vyc29yOmRlZmF1bHQiPiR7ZW1wdHkoc3Quby5lbXB0eVRpdGxlfHwn Tm90aGluZyBoZXJlJywgc3Quby5lbXB0eVN1Ynx8J05vIHJlY29yZHMgbWF0Y2ggdGhlc2UgZmlsdGVycy4nKX08L3RkPjwvdHI+ YH08L3Rib2R5PmA7CiAgICBxcygnI3RmLScraWQpLmlubmVySFRNTD1gPHNwYW4+JHthbGwubGVuZ3RofSByZWNvcmQke2FsbC5s ZW5ndGg9PT0xPycnOidzJ30ke3N0LnNlbC5zaXplP2AgwrcgPGI+JHtzdC5zZWwuc2l6ZX0gc2VsZWN0ZWQ8L2I+ICR7c3Quby5i dWxrP3N0Lm8uYnVsay5tYXAoKGIsayk9PmA8YnV0dG9uIGNsYXNzPSJidG4gc20iIG9uY2xpY2s9IlNHVC5idWxrKCcke2lkfScs JHtrfSkiPiR7ZXNjKGIubGFiZWwpfTwvYnV0dG9uPmApLmpvaW4oJyAnKTonJ30gPGJ1dHRvbiBjbGFzcz0iYnRuIHNtIiBvbmNs aWNrPSJTR1QuZXhwb3J0KCcke2lkfScsdHJ1ZSkiPkV4cG9ydCBzZWxlY3RlZDwvYnV0dG9uPmA6Jyd9PC9zcGFuPjxzcGFuIGNs YXNzPSJyb3ciPiR7c3QucGFnZT4wP2A8YnV0dG9uIGNsYXNzPSJidG4gc20iIG9uY2xpY2s9IlNHVC5nbygnJHtpZH0nLC0xKSI+ JHtpYygnY2hldnJvbi1sZWZ0Jywnc20nKX08L2J1dHRvbj5gOicnfVBhZ2UgJHtzdC5wYWdlKzF9IG9mICR7cGFnZXN9JHtzdC5w YWdlPHBhZ2VzLTE/YDxidXR0b24gY2xhc3M9ImJ0biBzbSIgb25jbGljaz0iU0dULmdvKCcke2lkfScsMSkiPiR7aWMoJ2NoZXZy b24tcmlnaHQnLCdzbScpfTwvYnV0dG9uPmA6Jyd9PC9zcGFuPmA7IGljb25zKCk7IH0sCiAgc2V0KGlkLGssdil7IFNHLnRhYmxl c1tpZF1ba109djsgU0cudGFibGVzW2lkXS5wYWdlPTA7IFNHVC5kcmF3KGlkKTsgfSwgZmlsdGVyKGlkLGssdil7IFNHLnRhYmxl c1tpZF0uZmlsdGVyc1trXT12OyBTRy50YWJsZXNbaWRdLnBhZ2U9MDsgU0dULmRyYXcoaWQpOyB9LAogIHNvcnRCeShpZCxrKXsg Y29uc3Qgc3Q9U0cudGFibGVzW2lkXTsgaWYoc3Quc29ydD09PWspIHN0LmRpcio9LTE7IGVsc2UgeyBzdC5zb3J0PWs7IHN0LmRp cj0xOyB9IFNHVC5kcmF3KGlkKTsgfSwgZ28oaWQsZCl7IFNHLnRhYmxlc1tpZF0ucGFnZSs9ZDsgU0dULmRyYXcoaWQpOyB9LAog IGNsaWNrKGlkLGkpeyBjb25zdCBzdD1TRy50YWJsZXNbaWRdOyBpZihzdC5vLm9uUm93KSBzdC5vLm9uUm93KHN0LnJvd3NbaV0p OyB9LAogIHBpY2soaWQsaSxvbil7IGNvbnN0IHM9U0cudGFibGVzW2lkXS5zZWw7IG9uP3MuYWRkKGkpOnMuZGVsZXRlKGkpOyBT R1QuZHJhdyhpZCk7IH0sIHNlbEFsbChpZCxvbil7IGNvbnN0IHN0PVNHLnRhYmxlc1tpZF07IFNHVC5yb3dzKGlkKS5mb3JFYWNo KHI9PnsgY29uc3QgaT1zdC5yb3dzLmluZGV4T2Yocik7IG9uP3N0LnNlbC5hZGQoaSk6c3Quc2VsLmRlbGV0ZShpKTsgfSk7IFNH VC5kcmF3KGlkKTsgfSwKICBidWxrKGlkLGspeyBjb25zdCBzdD1TRy50YWJsZXNbaWRdOyBzdC5vLmJ1bGtba10uZm4oWy4uLnN0 LnNlbF0ubWFwKGk9PnN0LnJvd3NbaV0pKTsgfSwKICBzYXZlKGlkKXsgY29uc3Qgc3Q9U0cudGFibGVzW2lkXTsgc3RvcmUuc2V0 KCdzZ192aWV3XycraWQse3E6c3QucSxmaWx0ZXJzOnN0LmZpbHRlcnMsc29ydDpzdC5zb3J0LGRpcjpzdC5kaXIsaGlkZGVuOnN0 LmhpZGRlbn0pOyB0b2FzdCgnVmlldyBzYXZlZCcsJ29rJywnWW91ciBmaWx0ZXJzIGFuZCBjb2x1bW5zIHdpbGwgYmUgcmVzdG9y ZWQgbmV4dCB0aW1lLicpOyB9LAogIGNvbHMoaWQsYnRuKXsgY29uc3Qgc3Q9U0cudGFibGVzW2lkXTsgY29uc3Qgb2xkPXFzKCcu Y29sbWVudScpOyBpZihvbGQpe29sZC5yZW1vdmUoKTtyZXR1cm47fSBjb25zdCByPWJ0bi5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo KTsgY29uc3QgbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgbS5jbGFzc05hbWU9J2NvbG1lbnUnOyBtLnN0eWxlLnRv cD0oci5ib3R0b20rd2luZG93LnNjcm9sbFkrNCkrJ3B4JzsgbS5zdHlsZS5sZWZ0PU1hdGgubWF4KDgsci5yaWdodC0yMjApKydw eCc7IG0uc3R5bGUud2lkdGg9JzIyMHB4JzsKICAgIG0uaW5uZXJIVE1MPXN0LmNvbHMubWFwKGM9PmA8bGFiZWw+PGlucHV0IHR5 cGU9ImNoZWNrYm94IiAke3N0LmhpZGRlbltjLmtdPycnOidjaGVja2VkJ30gb25jaGFuZ2U9IlNHLnRhYmxlc1snJHtpZH0nXS5o aWRkZW5bJyR7Yy5rfSddPSF0aGlzLmNoZWNrZWQ7U0dULmRyYXcoJyR7aWR9JykiPiAke2VzYyhjLmxhYmVsKX08L2xhYmVsPmAp LmpvaW4oJycpOyBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG0pOyBzZXRUaW1lb3V0KCgpPT5kb2N1bWVudC5hZGRFdmVudExp c3RlbmVyKCdjbGljaycsZnVuY3Rpb24gaChlKXsgaWYoIW0uY29udGFpbnMoZS50YXJnZXQpKXsgbS5yZW1vdmUoKTsgZG9jdW1l bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLGgpO30gfSksMCk7IH0sCiAgZXhwb3J0KGlkLHNlbE9ubHkpeyBjb25zdCBz dD1TRy50YWJsZXNbaWRdOyBjb25zdCByb3dzPXNlbE9ubHk/Wy4uLnN0LnNlbF0ubWFwKGk9PnN0LnJvd3NbaV0pOlNHVC5yb3dz KGlkKTsgY3N2KHN0Lm8ubmFtZXx8aWQsIHJvd3MsIHN0LmNvbHMuZmlsdGVyKGM9PiFzdC5oaWRkZW5bYy5rXSkubWFwKGM9Pih7 bGFiZWw6Yy5sYWJlbCxnZXQ6cj0+U0dULnZhbChjLHIpfSkpKTsgfSwKICBtb3VudCgpeyBPYmplY3Qua2V5cyhTRy50YWJsZXMp LmZvckVhY2goaWQ9PlNHVC5kcmF3KGlkKSk7IH0KfTsKLyogLS0tLS0tLS0tLSBjaGFydHMgLS0tLS0tLS0tLSAqLwp2YXIgUEFM PVsnIzBFMTcyNicsJyNGRkMyMEUnLCcjMUQ0RUQ4JywnIzE1ODAzRCcsJyNFQTU4MEMnLCcjN0MzQUVEJywnIzA4OTFCMicsJyND ODFFMUUnLCcjNjQ3NDhCJywnI0RCMjc3NyddOwpmdW5jdGlvbiBjaGFydChpZCwgdHlwZSwgbGFiZWxzLCBkYXRhc2V0cywgb3B0 PXt9KXsgY29uc3QgZWw9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOyBpZighZWx8fCF3aW5kb3cuQ2hhcnQpIHJldHVybjsg aWYoU0cuY2hhcnRzW2lkXSkgU0cuY2hhcnRzW2lkXS5kZXN0cm95KCk7CiAgZGF0YXNldHMuZm9yRWFjaCgoZCxpKT0+eyBjb25z dCBjPWQuY29sb3J8fFBBTFtpJVBBTC5sZW5ndGhdOyBpZih0eXBlPT09J2RvdWdobnV0Jyl7IGQuYmFja2dyb3VuZENvbG9yPWQu YmFja2dyb3VuZENvbG9yfHxsYWJlbHMubWFwKChfLGspPT5QQUxbayVQQUwubGVuZ3RoXSk7IGQuYm9yZGVyV2lkdGg9MjsgZC5i b3JkZXJDb2xvcj0nI2ZmZic7IH0gZWxzZSB7IGQuYmFja2dyb3VuZENvbG9yPWQuYmFja2dyb3VuZENvbG9yfHwodHlwZT09PSds aW5lJz9jKycyMic6Yyk7IGQuYm9yZGVyQ29sb3I9ZC5ib3JkZXJDb2xvcnx8YzsgZC5ib3JkZXJXaWR0aD10eXBlPT09J2xpbmUn PzIuNTowOyBkLmJvcmRlclJhZGl1cz10eXBlPT09J2Jhcic/NTowOyBkLnRlbnNpb249LjM1OyBkLnBvaW50UmFkaXVzPXR5cGU9 PT0nbGluZSc/Mi41OjA7IGQuZmlsbD1kLmZpbGwhPW51bGw/ZC5maWxsOmZhbHNlOyBkLm1heEJhclRoaWNrbmVzcz0zNDsgfSB9 KTsKICBDaGFydC5kZWZhdWx0cy5mb250LmZhbWlseT0nSW50ZXInOyBDaGFydC5kZWZhdWx0cy5jb2xvcj0nIzVCNjY3OCc7CiAg U0cuY2hhcnRzW2lkXT1uZXcgQ2hhcnQoZWwse3R5cGUsZGF0YTp7bGFiZWxzLGRhdGFzZXRzfSxvcHRpb25zOk9iamVjdC5hc3Np Z24oe3Jlc3BvbnNpdmU6dHJ1ZSxtYWludGFpbkFzcGVjdFJhdGlvOmZhbHNlLGFuaW1hdGlvbjp7ZHVyYXRpb246NzAwfSxpbnRl cmFjdGlvbjp7bW9kZTonaW5kZXgnLGludGVyc2VjdDpmYWxzZX0sCiAgICBwbHVnaW5zOntsZWdlbmQ6e2Rpc3BsYXk6ZGF0YXNl dHMubGVuZ3RoPjF8fHR5cGU9PT0nZG91Z2hudXQnLHBvc2l0aW9uOidib3R0b20nLGxhYmVsczp7Ym94V2lkdGg6MTAsYm94SGVp Z2h0OjEwLHVzZVBvaW50U3R5bGU6dHJ1ZSxmb250OntzaXplOjExLjV9fX0sdG9vbHRpcDp7YmFja2dyb3VuZENvbG9yOicjMEUx NzI2JyxwYWRkaW5nOjEwLGNvcm5lclJhZGl1czo4fX0sCiAgICBzY2FsZXM6IHR5cGU9PT0nZG91Z2hudXQnP3t9Ont4OntzdGFj a2VkOiEhb3B0LnN0YWNrZWQsZ3JpZDp7ZGlzcGxheTpmYWxzZX0sdGlja3M6e2ZvbnQ6e3NpemU6MTF9fX0seTp7c3RhY2tlZDoh IW9wdC5zdGFja2VkLGJlZ2luQXRaZXJvOnRydWUsZ3JpZDp7Y29sb3I6JyNFRUYxRjUnfSxib3JkZXI6e2Rpc3BsYXk6ZmFsc2V9 LHRpY2tzOntwcmVjaXNpb246MCxmb250OntzaXplOjExfX19fSwgY3V0b3V0OiB0eXBlPT09J2RvdWdobnV0Jz8nNjYlJzp1bmRl ZmluZWQsIGluZGV4QXhpczpvcHQuaG9yaXpvbnRhbD8neSc6J3gnfSxvcHQub3B0aW9uc3x8e30pfSk7IH0KdmFyIGNoYXJ0Qm94 ID0gKGlkLCBoPTI2MCkgPT4gYDxkaXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDoke2h9cHgiPjxjYW52YXMgaWQ9 IiR7aWR9IiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkNoYXJ0Ij48L2NhbnZhcz48L2Rpdj5gOwoKOwoKLyogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIE9GRkxJTkUgUVVFVUUK ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICov CnZhciBTR1EgPSB7CiAgYWxsKCl7IHJldHVybiBzdG9yZS5nZXQoJ3NnX3F1ZXVlJyxbXSk7IH0sIHNhdmUocSl7IGlmKCFzdG9y ZS5zZXQoJ3NnX3F1ZXVlJyxxKSl7IHEuZm9yRWFjaCh4PT57IGlmKHgucCYmeC5wLnBob3RvcykgeC5wLnBob3Rvcz1bXTsgfSk7 IHN0b3JlLnNldCgnc2dfcXVldWUnLHEpOyB0b2FzdCgnU3RvcmFnZSBmdWxsIOKAlCBwaG90b3Mgd2VyZSBkcm9wcGVkIGZyb20g b2ZmbGluZSByZXBvcnRzJywnZXJyJyk7IH0gdXBkU3luYygpOyB9LAogIGFkZChhY3Rpb24scCl7IGNvbnN0IHE9U0dRLmFsbCgp OyBxLnB1c2goe2lkOkRhdGUubm93KCksYWN0aW9uLHAsdG9rZW46U0cudG9rZW4sc3RhdHVzOidQZW5kaW5nIHN5bmMnLGF0Om5l dyBEYXRlKCkudG9JU09TdHJpbmcoKX0pOyBTR1Euc2F2ZShxKTsgfSwKICBhc3luYyBmbHVzaCgpeyBpZighbmF2aWdhdG9yLm9u TGluZSkgcmV0dXJuOyBjb25zdCBxPVNHUS5hbGwoKTsgaWYoIXEubGVuZ3RoKSByZXR1cm47IGxldCBuPTA7CiAgICBmb3IoY29u c3QgaXQgb2YgcSl7IGlmKGl0LnN0YXR1cz09PSdTeW5jZWQnKSBjb250aW51ZTsgdHJ5eyBjb25zdCBvbGQ9U0cudG9rZW47IFNH LnRva2VuPWl0LnRva2VufHxTRy50b2tlbjsgY29uc3Qgcj1hd2FpdCBjYWxsKGl0LmFjdGlvbixpdC5wKTsgU0cudG9rZW49b2xk OyBpdC5zdGF0dXM9J1N5bmNlZCc7IGl0LnJlZj1yJiZyLnJlZjsgbisrOyB0b2FzdCgnT2ZmbGluZSByZXBvcnQgc3luY2VkJywn b2snLChyJiZyLnJlZil8fCcnKTsgfWNhdGNoKGUpeyBpZighZS5uZXR3b3JrKXsgaXQuc3RhdHVzPSdTeW5jIGZhaWxlZCc7IGl0 LmVycj1lLm1lc3NhZ2U7IH0gfSB9CiAgICBTR1Euc2F2ZShxLmZpbHRlcih4PT54LnN0YXR1cyE9PSdTeW5jZWQnKSk7IGlmKG4g JiYgU0cudXNlcikgcmVuZGVyKCk7IH0KfTsKZnVuY3Rpb24gdXBkU3luYygpeyBjb25zdCBxPVNHUS5hbGwoKSwgZWw9cXMoJyNz eW5jUGlsbCcpOyBpZighZWwpIHJldHVybjsgY29uc3QgZmFpbD1xLmZpbHRlcih4PT54LnN0YXR1cz09PSdTeW5jIGZhaWxlZCcp Lmxlbmd0aDsgZWwuY2xhc3NOYW1lPSdzeW5jcGlsbCcrKGZhaWw/JyBmYWlsJzonJyk7IGVsLmNsYXNzTGlzdC50b2dnbGUoJ2hp ZGUnLCFxLmxlbmd0aCk7IGVsLmlubmVySFRNTD1gJHtpYyhmYWlsPydjbG91ZC1hbGVydCc6J2Nsb3VkLXVwbG9hZCcsJ3NtJyl9 ICR7ZmFpbD9mYWlsKycgc3luYyBmYWlsZWQnOnEubGVuZ3RoKycgcGVuZGluZyBzeW5jJ31gOyBpY29ucygpOyB9CmZ1bmN0aW9u IHNob3dRdWV1ZSgpeyBjb25zdCBxPVNHUS5hbGwoKTsgbW9kYWwoJ09mZmxpbmUgcmVwb3J0cycsIHEubGVuZ3RoP3EubWFwKHg9 PmA8ZGl2IGNsYXNzPSJyb3cgYmV0d2VlbiIgc3R5bGU9InBhZGRpbmc6OHB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFy KC0tbGluZTIpIj48ZGl2PjxiPiR7ZXNjKHgucC5raW5kfHx4LmFjdGlvbil9PC9iPjxkaXYgY2xhc3M9InNtYWxsIG11dGVkIj4k e2ZtdERUKHguYXQpfSDCtyAke2VzYygoeC5wLmRlc2NyaXB0aW9ufHwnJykuc2xpY2UoMCw2MCkpfTwvZGl2PiR7eC5lcnI/YDxk aXYgY2xhc3M9InNtYWxsIiBzdHlsZT0iY29sb3I6dmFyKC0tcmVkKSI+JHtlc2MoeC5lcnIpfTwvZGl2PmA6Jyd9PC9kaXY+JHtj aGlwKHguc3RhdHVzKX08L2Rpdj5gKS5qb2luKCcnKTplbXB0eSgnQWxsIHN5bmNlZCcsJ05vIHJlcG9ydHMgd2FpdGluZy4nKSwg e3N1Ym1pdDonUmV0cnkgc3luYyBub3cnLCBvblN1Ym1pdDphc3luYygpPT57IGF3YWl0IFNHUS5mbHVzaCgpOyB9fSk7IH0KYWRk RXZlbnRMaXN0ZW5lcignb25saW5lJywoKT0+eyB0b2FzdCgnQmFjayBvbmxpbmUnLCdvaycsJ1N5bmNpbmcgYW55IG9mZmxpbmUg cmVwb3J0c+KApicpOyBTR1EuZmx1c2goKTsgfSk7CmFkZEV2ZW50TGlzdGVuZXIoJ29mZmxpbmUnLCgpPT50b2FzdCgnWW91IGFy ZSBvZmZsaW5lJywnJywgJ1JlcG9ydHMgd2lsbCBiZSBzYXZlZCBvbiB0aGlzIGRldmljZSBhbmQgc3luY2VkIGF1dG9tYXRpY2Fs bHkuJykpOwoKOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAgIEJPT1QsIEFVVEgsIFNIRUxMCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwpmdW5jdGlvbiByZWFkTG9jYXRpb24oKXsgcmV0dXJuIG5ldyBQcm9taXNl KGZ1bmN0aW9uKHJlcyl7IHZhciBkb25lPWZhbHNlLCBmaW49ZnVuY3Rpb24odil7IGlmKCFkb25lKXsgZG9uZT10cnVlOyByZXMo dik7IH0gfTsKICB0cnl7IGdvb2dsZS5zY3JpcHQudXJsLmdldExvY2F0aW9uKGZpbik7IH1jYXRjaChlKXsgZmluKG51bGwpOyB9 IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgZmluKG51bGwpOyB9LCAzMDAwKTsgfSk7IH0KYXN5bmMgZnVuY3Rpb24gc3RhcnQoKXsK ICB2YXIgY2xlYW49ZnVuY3Rpb24odil7IHJldHVybiBTdHJpbmcodnx8JycpLnJlcGxhY2UoL1teQS1aYS16MC05XC1fL10vZywn Jykuc2xpY2UoMCw2MCk7IH07CiAgdmFyIGxvYz1hd2FpdCByZWFkTG9jYXRpb24oKTsgdmFyIHBybT0obG9jJiZsb2MucGFyYW1l dGVyKXx8e307CiAgaWYoIXBybS5xcil7IHRyeXsgdmFyIHE9bmV3IFVSTFNlYXJjaFBhcmFtcyhsb2NhdGlvbi5zZWFyY2gpOyBw cm09e3FyOnEuZ2V0KCdxcicpLHZpZXc6cS5nZXQoJ3ZpZXcnKX07IH1jYXRjaChlKXt9IH0KICBCT09ULnFyPWNsZWFuKHBybS5x cik7IEJPT1Qudmlldz1jbGVhbihwcm0udmlldyk7CiAgaWYoQk9PVC5xcikgcmV0dXJuIHJlbmRlclFSKEJPT1QucXIpOwogIFNH LnRva2VuPXN0b3JlLmdldCgnc2dfdG9rZW4nLG51bGwpOwogIGlmKFNHLnRva2VuKXsgdHJ5eyBhd2FpdCBib290KCk7IH1jYXRj aChlKXsgU0cudG9rZW49bnVsbDsgc3RvcmUuZGVsKCdzZ190b2tlbicpOyByZW5kZXJMYW5kaW5nKCk7IH0gfSBlbHNlIHJlbmRl ckxhbmRpbmcoKTsKfQphc3luYyBmdW5jdGlvbiBib290KCl7IGNvbnN0IGQ9YXdhaXQgY2FsbCgnYm9vdHN0cmFwJyk7IFNHLnVz ZXI9ZC51c2VyOyBTRy5wZXJtcz1kLnBlcm1zOyBTRy5haT1kLmFpfHx7b246ZmFsc2UsZmVhdHVyZXM6W119OyBTRy5jZmc9ZC5j Zmc7IFNHLm9yZz1kLm9yZzsgU0cudXJsPUVYVF9VUkx8fGQudXJsfHxCT09ULnVybDsgU0cuc2NvcGU9ZC5zY29wZTsgU0cuTD17 c2l0ZXM6ZC5zaXRlcyxkZXB0czpkLmRlcHRzLHVzZXJzOmQudXNlcnMsdmVoaWNsZXM6ZC52ZWhpY2xlc307IFNHLnVucmVhZD1k LnVucmVhZDsgU0cuc2luY2U9bmV3IERhdGUoKS50b0lTT1N0cmluZygpOwogIHNoZWxsKCk7IGNvbnN0IHY9Qk9PVC52aWV3fHwn JzsgZ28odnx8J2hvbWUnKTsgaWYoU0cudXNlci5GaXJzdExvZ2luIT09J04nKSBzZXRUaW1lb3V0KHdlbGNvbWUsNDAwKTsgU0dR LmZsdXNoKCk7IGNsZWFySW50ZXJ2YWwoU0cucHVsc2VUKTsgU0cucHVsc2VUPXNldEludGVydmFsKHB1bHNlLDMwMDAwKTsgcHVs c2UoKTsgfQpmdW5jdGlvbiBzaWduT3V0KHNpbGVudCl7IFNHLnRva2VuPW51bGw7IFNHLnVzZXI9bnVsbDsgc3RvcmUuZGVsKCdz Z190b2tlbicpOyBjbGVhckludGVydmFsKFNHLnB1bHNlVCk7IGlmKCFzaWxlbnQpIHRvYXN0KCdTaWduZWQgb3V0Jyk7IHJlbmRl ckxhbmRpbmcoKTsgfQphc3luYyBmdW5jdGlvbiBkb0xvZ2luKGVtcElkLHBpbil7IGNvbnN0IHI9YXdhaXQgY2FsbCgnbG9naW4n LHtlbXBJZCxwaW59KTsgU0cudG9rZW49ci50b2tlbjsgc3RvcmUuc2V0KCdzZ190b2tlbicsci50b2tlbik7IGF3YWl0IGJvb3Qo KTsgfQpmdW5jdGlvbiB3ZWxjb21lKCl7IGNvbnN0IG1ncj1jYW4oJ2Rhc2hib2FyZC5jb21tYW5kJyl8fGNhbignZGFzaGJvYXJk LmV4ZWMnKTsKICBjb25zdCBpdGVtcz1tZ3I/W1snc2lyZW4nLCdNYW5hZ2UgaW5jaWRlbnRzJywnSW52ZXN0aWdhdGUsIGFzc2ln biBhbmQgY2xvc2Ugd2l0aCBhIGZ1bGwgYXVkaXQgdHJhaWwnXSxbJ2dyaWQtM3gzJywnTW9uaXRvciByaXNrcycsJ0xpdmUgcmlz ayBoZWF0bWFwIGFjcm9zcyBldmVyeSBzaXRlJ10sWydsaXN0LWNoZWNrcycsJ0Nsb3NlIGNvcnJlY3RpdmUgYWN0aW9ucycsJ1Ry YWNrIG93bmVycywgZXZpZGVuY2UgYW5kIHZlcmlmaWNhdGlvbiddLFsnY2xpcGJvYXJkLWNoZWNrJywnUnVuIGluc3BlY3Rpb25z JywnVGVtcGxhdGVzLCBzY29yaW5nIGFuZCBhdXRvbWF0aWMgZmluZGluZ3MnXSxbJ2NoYXJ0LWxpbmUnLCdBbmFseXplIHBlcmZv cm1hbmNlJywnU2FmZXR5IFBlcmZvcm1hbmNlIEluZGV4IHlvdSBjYW4gZXhwbGFpbiddXQogICAgOltbJ21lZ2FwaG9uZScsJ1Jl cG9ydCBoYXphcmRzJywnU2NhbiBhIFFSIGNvZGUgb3IgdGFwIFJlcG9ydCDigJQgdW5kZXIgNjAgc2Vjb25kcyddLFsndXNlcnMn LCdKb2luIHRvb2xib3ggdGFsa3MnLCdTY2FuIGluLCBsZWFybiwgZWFybiBwb2ludHMnXSxbJ2dyYWR1YXRpb24tY2FwJywnQ29t cGxldGUgdHJhaW5pbmcnLCdRdWljayBxdWl6emVzLCBjZXJ0aWZpY2F0ZXMgdHJhY2tlZCBmb3IgeW91J10sWydzcGFya2xlcycs J0Vhcm4gU2FmZXR5IFBvaW50cycsJ0V2ZXJ5IG1lYW5pbmdmdWwgc2FmZXR5IGFjdGlvbiBjb3VudHMnXSxbJ2Nyb3duJywnQmVj b21lIGEgU2FmZXR5IEdpYW50JywnTGV2ZWwgdXAgZnJvbSBSb29raWUgdG8gR2lhbnQnXV07CiAgbW9kYWwoJ1dlbGNvbWUgdG8g U0FBZmVseScsIGA8ZGl2IGNsYXNzPSJzdHJpcGUgbWIiPjwvZGl2PjxwIHN0eWxlPSJtYXJnaW4tdG9wOjA7Zm9udC13ZWlnaHQ6 NjAwIj5FbnRlcnByaXNlIFNhZmV0eSBPcGVyYXRpbmcgU3lzdGVtPC9wPjxwIGNsYXNzPSJzbWFsbCBtdXRlZCIgc3R5bGU9Im1h cmdpbi10b3A6LTZweCI+JHtBQ1JPLm1hcChhPT4nPGI+JythWzBdKyc8L2I+JythWzFdLnNsaWNlKDEpKS5qb2luKCcgwrcgJyl9 PC9wPjxwIHN0eWxlPSJtYXJnaW4tdG9wOjAiIGNsYXNzPSJtdXRlZCI+U2VlIGl0LiBSZXBvcnQgaXQuIEZpeCBpdC4gTGVhcm4g ZnJvbSBpdC4gSGVyZSdzIHdoYXQgeW91IGNhbiBkbywgJHtlc2MoU0cudXNlci5OYW1lLnNwbGl0KCcgJylbMF0pfTo8L3A+JHtp dGVtcy5tYXAoaT0+YDxkaXYgY2xhc3M9InJvdyIgc3R5bGU9InBhZGRpbmc6OXB4IDAiPjxzcGFuIGNsYXNzPSJxaSIgc3R5bGU9 IndpZHRoOjM4cHg7aGVpZ2h0OjM4cHg7Ym9yZGVyLXJhZGl1czoxMHB4O2JhY2tncm91bmQ6dmFyKC0teTIpO2Rpc3BsYXk6Z3Jp ZDtwbGFjZS1pdGVtczpjZW50ZXI7Y29sb3I6dmFyKC0teTMpIj4ke2ljKGlbMF0pfTwvc3Bhbj48ZGl2PjxiPiR7aVsxXX08L2I+ PGRpdiBjbGFzcz0ic21hbGwgbXV0ZWQiPiR7aVsyXX08L2Rpdj48L2Rpdj48L2Rpdj5gKS5qb2luKCcnKX1gLCB7c3VibWl0OiJM ZXQncyBnbyIsIGNhbmNlbDpmYWxzZSwgb25TdWJtaXQ6IGFzeW5jKCk9PnsgY2FsbCgnZGlzbWlzc1dlbGNvbWUnKS5jYXRjaCgo KT0+e30pOyBTRy51c2VyLkZpcnN0TG9naW49J04nOyB9fSk7IH0KdmFyIE5BVj1bCiAge2c6JycsaXRlbXM6W1snaG9tZScsJ0hv bWUnLCdsYXlvdXQtZGFzaGJvYXJkJ10sWydteScsJ015IFNhZmV0eScsJ3VzZXItcm91bmQtY2hlY2snXSxbJ3JlcG9ydCcsJ1Jl cG9ydCcsJ21lZ2FwaG9uZScsJ3JlcG9ydC5jcmVhdGUnXV19LAogIHtnOidPcGVyYXRpb25zJyxpdGVtczpbWydpbmNpZGVudHMn LCdJbmNpZGVudHMnLCdzaXJlbicsbnVsbCwnaW5jaWRlbnRzJ10sWyduZWFybWlzcycsJ05lYXIgTWlzc2VzJywndHJpYW5nbGUt YWxlcnQnLG51bGwsJ2luY2lkZW50cyddLFsnaGF6YXJkcycsJ0hhemFyZHMnLCdjb25zdHJ1Y3Rpb24nLG51bGwsJ2hhemFyZHMn XSxbJ29ic2VydmF0aW9ucycsJ09ic2VydmF0aW9ucycsJ2V5ZScsbnVsbCwnb2JzZXJ2YXRpb25zJ10sWydhY3Rpb25zJywnQ29y cmVjdGl2ZSBBY3Rpb25zJywnbGlzdC1jaGVja3MnLG51bGwsJ2FjdGlvbnMnXSxbJ2luc3BlY3Rpb25zJywnSW5zcGVjdGlvbnMn LCdjbGlwYm9hcmQtY2hlY2snLG51bGwsJ2luc3BlY3Rpb25zJ10sWydhdWRpdHMnLCdBdWRpdHMnLCdmaWxlLXNlYXJjaCcsbnVs bCwnYXVkaXRzJ10sWydyaXNrJywnUmlzaycsJ2dyaWQtM3gzJywncmlzay52aWV3JywncmlzayddXX0sCiAge2c6J1Blb3BsZSAm IEN1bHR1cmUnLGl0ZW1zOltbJ3Rvb2xib3gnLCdUb29sYm94IFRhbGtzJywndXNlcnMnLG51bGwsJ3Rvb2xib3gnXSxbJ3RyYWlu aW5nJywnVHJhaW5pbmcnLCdncmFkdWF0aW9uLWNhcCcsbnVsbCwndHJhaW5pbmcnXSxbJ2NhbXBhaWducycsJ0NhbXBhaWducycs J2ZsYWcnLG51bGwsJ2NhbXBhaWducyddLFsnYWxlcnRzJywnU2FmZXR5IEFsZXJ0cycsJ2JlbGwtcmluZycsbnVsbCwnYWxlcnRz J10sWydmZWVkJywnU2FmZXR5IEZlZWQnLCdtZXNzYWdlcy1zcXVhcmUnLG51bGwsJ2ZlZWQnXSxbJ2xlYWRlcmJvYXJkJywnTGVh ZGVyYm9hcmQnLCd0cm9waHknLG51bGwsJ2xlYWRlcmJvYXJkJ10sWydnaWFudHMnLCdTYWZldHkgR2lhbnRzJywnY3Jvd24nLG51 bGwsJ2xlYWRlcmJvYXJkJ11dfSwKICB7ZzonRmxlZXQnLGl0ZW1zOltbJ3RyYWZmaWMnLCdUcmFmZmljIFNhZmV0eScsJ2Nhci1m cm9udCcsJ3RyYWZmaWMudmlldycsJ3RyYWZmaWMnXV19LAogIHtnOidJbnNpZ2h0JyxpdGVtczpbWydhc2snLCdBc2sgU0FBZmVs eSBBSScsJ3NwYXJrbGVzJyxudWxsLG51bGxdLFsnYW5hbHl0aWNzJywnQW5hbHl0aWNzJywnY2hhcnQtbGluZScsJ2FuYWx5dGlj cy52aWV3JywnYW5hbHl0aWNzJ10sWydkb2N1bWVudHMnLCdEb2N1bWVudHMnLCdmb2xkZXItb3BlbicsbnVsbCwnZG9jdW1lbnRz J10sWydxcicsJ1FSIENvZGVzJywncXItY29kZScsJ3FyLm1hbmFnZSddXX0sCiAge2c6J0FkbWluJyxpdGVtczpbWydhZG1pbics J0FkbWluaXN0cmF0aW9uJywnc2V0dGluZ3MnLCdhZG1pbi51c2Vyc3xhZG1pbi5jb25maWd8YXVkaXQudmlldyddLFsncGxhdGZv cm0nLCdQbGF0Zm9ybSBjb25zb2xlJywnc2VydmVyLWNvZycsJ3BsYXRmb3JtLmFpJ11dfQpdOwp2YXIgbmF2T2sgPSBpdCA9PiAo aXRbMF0hPT0nYXNrJyB8fCBhaU9uKCdhc2snKSkgJiYgKCFpdFszXSB8fCBpdFszXS5zcGxpdCgnfCcpLnNvbWUoY2FuKSkgJiYg KCFpdFs0XSB8fCAoU0cuY2ZnLm1vZHVsZXN8fHt9KVtpdFs0XV0hPT1mYWxzZSk7CmZ1bmN0aW9uIHNoZWxsKCl7CiAgcXMoJyNh cHAnKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InNoZWxsIj48YXNpZGUgY2xhc3M9InNpZGUiIGlkPSJzaWRlIiBhcmlhLWxhYmVs PSJNYWluIG5hdmlnYXRpb24iPgogICAgPGRpdiBjbGFzcz0iYnJhbmQiPjxkaXYgY2xhc3M9Im1hcmsiPiR7aWMoJ2hhcmQtaGF0 Jyl9PC9kaXY+PGRpdj4ke2JyYW5kTmFtZSgpfTxzbWFsbD4ke2VzYyhTRy5vcmcuTmFtZXx8JycpfTwvc21hbGw+PC9kaXY+PC9k aXY+CiAgICAke2NhbigncmVwb3J0LmNyZWF0ZScpP2A8YnV0dG9uIGNsYXNzPSJjdGEtc2lkZSIgb25jbGljaz0iZ28oJ3JlcG9y dCcpIj4ke2ljKCdtZWdhcGhvbmUnLCdzbScpfSBSRVBPUlQgU0FGRVRZIElTU1VFPC9idXR0b24+YDonJ30KICAgIDxuYXYgaWQ9 Im5hdkxpc3QiPjwvbmF2PgogICAgPGRpdiBjbGFzcz0ic2lkZS1mb290Ij5TZWUgaXQuIFJlcG9ydCBpdC4gRml4IGl0LiBMZWFy biBmcm9tIGl0Ljxicj52MS4wIMK3ICR7ZXNjKHJvbGVOKFNHLnVzZXIuUm9sZSkpfTwvZGl2PjwvYXNpZGU+CiAgICA8ZGl2IGNs YXNzPSJtYWluIj48aGVhZGVyIGNsYXNzPSJ0b3AiPgogICAgICA8YnV0dG9uIGNsYXNzPSJpY29uYnRuIiBpZD0ibWVudUJ0biIg c3R5bGU9ImRpc3BsYXk6bm9uZSIgb25jbGljaz0idG9nZ2xlU2lkZSgpIiBhcmlhLWxhYmVsPSJPcGVuIG1lbnUiPiR7aWMoJ21l bnUnKX08L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0ic2VhcmNoIiBpZD0ic2VhcmNoQm94Ij4ke2ljKCdzZWFyY2gnLCdzbScp fTxpbnB1dCBpZD0iZ3NlYXJjaCIgdHlwZT0ic2VhcmNoIiBwbGFjZWhvbGRlcj0iU2VhcmNoIGluY2lkZW50cywgaGF6YXJkcywg cGVvcGxlLCB2ZWhpY2xlcywgY2FyZCBudW1iZXJz4oCmIiBhcmlhLWxhYmVsPSJHbG9iYWwgc2VhcmNoIiBhdXRvY29tcGxldGU9 Im9mZiI+PGRpdiBjbGFzcz0ic3VnZyIgaWQ9InN1Z2ciIHJvbGU9Imxpc3Rib3giPjwvZGl2PjwvZGl2PgogICAgICA8c3BhbiBj bGFzcz0iZ3JvdyI+PC9zcGFuPgogICAgICA8YnV0dG9uIGlkPSJzeW5jUGlsbCIgY2xhc3M9InN5bmNwaWxsIGhpZGUiIG9uY2xp Y2s9InNob3dRdWV1ZSgpIj48L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iaWNvbmJ0biIgaWQ9InNyY2hCdG4iIHN0eWxl PSJkaXNwbGF5Om5vbmUiIG9uY2xpY2s9InFzKCcjc2VhcmNoQm94JykuY2xhc3NMaXN0LnRvZ2dsZSgnb3BlbicpO3FzKCcjZ3Nl YXJjaCcpLmZvY3VzKCkiIGFyaWEtbGFiZWw9IlNlYXJjaCI+JHtpYygnc2VhcmNoJyl9PC9idXR0b24+CiAgICAgIDxidXR0b24g Y2xhc3M9Imljb25idG4iIG9uY2xpY2s9InRvZ2dsZU5vdGlmKCkiIGFyaWEtbGFiZWw9Ik5vdGlmaWNhdGlvbnMiPiR7aWMoJ2Jl bGwnKX08c3BhbiBjbGFzcz0iZG90IGhpZGUiIGlkPSJuZG90Ij48L3NwYW4+PC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9 Im1lIiBvbmNsaWNrPSJ0b2dnbGVNZW51KCkiIGFyaWEtbGFiZWw9IkFjY291bnQgbWVudSI+JHthdihTRy51c2VyLk5hbWUsJ3Nt Jyl9PHNwYW4gY2xhc3M9InQiPjxiPiR7ZXNjKFNHLnVzZXIuTmFtZSl9PC9iPjxzcGFuPiR7ZXNjKHJvbGVOKFNHLnVzZXIuUm9s ZSkpfTwvc3Bhbj48L3NwYW4+PC9idXR0b24+CiAgICA8L2hlYWRlcj48ZGl2IGlkPSJjcml0QmFubmVyIj48L2Rpdj48bWFpbiBj bGFzcz0iY29udGVudCIgaWQ9Im1haW4iPjwvbWFpbj48L2Rpdj48L2Rpdj4KICAgIDxuYXYgY2xhc3M9ImJvdHRvbSIgYXJpYS1s YWJlbD0iUXVpY2sgbmF2aWdhdGlvbiI+JHtbWydob21lJywnSG9tZScsJ2hvdXNlJ10sWydyZXBvcnQnLCdSZXBvcnQnLCdtZWdh cGhvbmUnXSxbJ2FjdGlvbnMnLCdUYXNrcycsJ2xpc3QtY2hlY2tzJ10sWydhbGVydHMnLCdBbGVydHMnLCdiZWxsLXJpbmcnXSxb J3Byb2ZpbGUnLCdQcm9maWxlJywnY2lyY2xlLXVzZXItcm91bmQnXV0ubWFwKGI9PmA8YnV0dG9uIGRhdGEtYj0iJHtiWzBdfSIg Y2xhc3M9IiR7YlswXT09PSdyZXBvcnQnPydyZXAnOicnfSIgb25jbGljaz0iZ28oJyR7YlswXX0nKSI+JHtpYyhiWzJdKX0ke2Jb MV19PC9idXR0b24+YCkuam9pbignJyl9PC9uYXY+YDsKICBkcmF3TmF2KCk7IHNldHVwU2VhcmNoKCk7IHVwZERvdCgpOyB1cGRT eW5jKCk7IGNvbnN0IG1xPW1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6OTgwcHgpJyk7IGNvbnN0IGY9KCk9PnsgcXMoJyNtZW51QnRu Jykuc3R5bGUuZGlzcGxheT1tcS5tYXRjaGVzPydncmlkJzonbm9uZSc7IHFzKCcjc3JjaEJ0bicpLnN0eWxlLmRpc3BsYXk9bWF0 Y2hNZWRpYSgnKG1heC13aWR0aDo3MDBweCknKS5tYXRjaGVzPydncmlkJzonbm9uZSc7IH07IG1xLmFkZEV2ZW50TGlzdGVuZXIo J2NoYW5nZScsZik7IGYoKTsgaWNvbnMoKTsKfQpmdW5jdGlvbiBkcmF3TmF2KCl7IHFzKCcjbmF2TGlzdCcpLmlubmVySFRNTD1O QVYubWFwKChnLGdpKT0+eyBjb25zdCBpdHM9Zy5pdGVtcy5maWx0ZXIobmF2T2spOyBpZighaXRzLmxlbmd0aCkgcmV0dXJuICcn OyBjb25zdCBjbG9zZWQ9U0cub3Blbkdyb3Vwc1tnaV09PT1mYWxzZTsKICByZXR1cm4gYCR7Zy5nP2A8YnV0dG9uIGNsYXNzPSJu YXYtZyAke2Nsb3NlZD8nY2xvc2VkJzonJ30iIG9uY2xpY2s9IlNHLm9wZW5Hcm91cHNbJHtnaX1dPSR7Y2xvc2VkfTtkcmF3TmF2 KCkiIGFyaWEtZXhwYW5kZWQ9IiR7IWNsb3NlZH0iPiR7ZXNjKGcuZyl9ICR7aWMoJ2NoZXZyb24tZG93bicpfTwvYnV0dG9uPmA6 Jyd9JHtjbG9zZWQ/Jyc6aXRzLm1hcChpdD0+YDxidXR0b24gY2xhc3M9Im5hdi1pICR7U0cucm91dGU9PT1pdFswXT8nb24nOicn fSIgb25jbGljaz0iZ28oJyR7aXRbMF19JykiICR7U0cucm91dGU9PT1pdFswXT8nYXJpYS1jdXJyZW50PSJwYWdlIic6Jyd9PiR7 aWMoaXRbMl0pfSR7ZXNjKGl0WzFdKX0ke2l0WzBdPT09J2FsZXJ0cycmJlNHLmNyaXRBbGVydHMubGVuZ3RoP2A8c3BhbiBjbGFz cz0iY250Ij4ke1NHLmNyaXRBbGVydHMubGVuZ3RofTwvc3Bhbj5gOicnfTwvYnV0dG9uPmApLmpvaW4oJycpfWA7IH0pLmpvaW4o JycpOyBpY29ucygpOyB9CmZ1bmN0aW9uIHRvZ2dsZVNpZGUoZm9yY2UpeyBjb25zdCBzPXFzKCcjc2lkZScpOyBjb25zdCBvcGVu PWZvcmNlIT1udWxsP2ZvcmNlOiFzLmNsYXNzTGlzdC5jb250YWlucygnb3BlbicpOyBzLmNsYXNzTGlzdC50b2dnbGUoJ29wZW4n LG9wZW4pOyBjb25zdCBzYz1xcygnLnNjcmltJyk7IGlmKG9wZW4mJiFzYyl7IGNvbnN0IGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu dCgnZGl2Jyk7IGQuY2xhc3NOYW1lPSdzY3JpbSc7IGQub25jbGljaz0oKT0+dG9nZ2xlU2lkZShmYWxzZSk7IGRvY3VtZW50LmJv ZHkuYXBwZW5kQ2hpbGQoZCk7fSBpZighb3BlbiYmc2MpIHNjLnJlbW92ZSgpOyB9CmZ1bmN0aW9uIGNsb3NlTWVudXMoKXsgWycu bWVudScsJy5ucGFuZWwnXS5mb3JFYWNoKHM9Pntjb25zdCBlPXFzKHMpOyBpZihlKSBlLnJlbW92ZSgpO30pOyB9CmZ1bmN0aW9u IHRvZ2dsZU1lbnUoKXsgaWYocXMoJy5tZW51Jykpe2Nsb3NlTWVudXMoKTtyZXR1cm47fSBjbG9zZU1lbnVzKCk7IGNvbnN0IG09 ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IG0uY2xhc3NOYW1lPSdtZW51JzsgbS5pbm5lckhUTUw9YDxkaXYgc3R5bGU9 InBhZGRpbmc6MTBweCI+PGI+JHtlc2MoU0cudXNlci5OYW1lKX08L2I+PGRpdiBjbGFzcz0ic21hbGwgbXV0ZWQiPiR7ZXNjKHJv bGVOKFNHLnVzZXIuUm9sZSkpfSDCtyAke2VzYyhkZXB0RnVsbChTRy51c2VyLkRlcHRJZCkpfTwvZGl2PjwvZGl2PjxidXR0b24g b25jbGljaz0iZ28oJ3Byb2ZpbGUnKSI+JHtpYygnY3Jvd24nLCdzbScpfSBNeSBzYWZldHkgcHJvZmlsZTwvYnV0dG9uPjxidXR0 b24gb25jbGljaz0iZ28oJ25vdGlmaWNhdGlvbnMnKSI+JHtpYygnYmVsbCcsJ3NtJyl9IE5vdGlmaWNhdGlvbnM8L2J1dHRvbj48 YnV0dG9uIG9uY2xpY2s9IndlbGNvbWUoKTtjbG9zZU1lbnVzKCkiPiR7aWMoJ3NwYXJrbGVzJywnc20nKX0gV2VsY29tZSB0b3Vy PC9idXR0b24+PGJ1dHRvbiBvbmNsaWNrPSJzaWduT3V0KCkiPiR7aWMoJ2xvZy1vdXQnLCdzbScpfSBTaWduIG91dDwvYnV0dG9u PmA7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobSk7IGljb25zKCk7IHNldFRpbWVvdXQoKCk9PmRvY3VtZW50LmFkZEV2ZW50 TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbiBoKGUpeyBpZighbS5jb250YWlucyhlLnRhcmdldCkmJiFlLnRhcmdldC5jbG9zZXN0 KCcubWUnKSl7IG0ucmVtb3ZlKCk7IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxoKTt9IH0pLDApOyB9CmFz eW5jIGZ1bmN0aW9uIHRvZ2dsZU5vdGlmKCl7IGlmKHFzKCcubnBhbmVsJykpe2Nsb3NlTWVudXMoKTtyZXR1cm47fSBjbG9zZU1l bnVzKCk7IGNvbnN0IHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7IHAuY2xhc3NOYW1lPSducGFuZWwnOyBwLmlubmVy SFRNTD1gPGRpdiBjbGFzcz0icm93IGJldHdlZW4iIHN0eWxlPSJwYWRkaW5nOjEycHggMTRweCI+PGgzPk5vdGlmaWNhdGlvbnM8 L2gzPjxidXR0b24gY2xhc3M9ImJ0biBzbSIgb25jbGljaz0ibWFya0FsbCgpIj5NYXJrIGFsbCByZWFkPC9idXR0b24+PC9kaXY+ PGRpdiBjbGFzcz0ibGlzdCI+PGRpdiBjbGFzcz0ic2siIHN0eWxlPSJoZWlnaHQ6MjAwcHg7bWFyZ2luOjEycHgiPjwvZGl2Pjwv ZGl2PmA7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocCk7IGljb25zKCk7CiAgc2V0VGltZW91dCgoKT0+ZG9jdW1lbnQuYWRk RXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uIGgoZSl7IGlmKCFwLmNvbnRhaW5zKGUudGFyZ2V0KSYmIWUudGFyZ2V0LmNs b3Nlc3QoJ1thcmlhLWxhYmVsPU5vdGlmaWNhdGlvbnNdJykpeyBwLnJlbW92ZSgpOyBkb2N1bWVudC5yZW1vdmVFdmVudExpc3Rl bmVyKCdjbGljaycsaCk7fSB9KSwwKTsKICB0cnl7IGNvbnN0IHJvd3M9YXdhaXQgY2FsbCgnbGlzdE5vdGlmaWNhdGlvbnMnKTsg cXMoJy5saXN0JyxwKS5pbm5lckhUTUw9cm93cy5sZW5ndGg/cm93cy5zbGljZSgwLDMwKS5tYXAobkl0ZW0pLmpvaW4oJycpOmVt cHR5KCdBbGwgY2F1Z2h0IHVwJywnTm8gbm90aWZpY2F0aW9ucyB5ZXQuJywnYmVsbCcpOyBxcygnLmxpc3QnLHApLmluc2VydEFk amFjZW50SFRNTCgnYmVmb3JlZW5kJyxgPGRpdiBzdHlsZT0icGFkZGluZzoxMHB4O3RleHQtYWxpZ246Y2VudGVyIj48YnV0dG9u IGNsYXNzPSJidG4gc20iIG9uY2xpY2s9ImdvKCdub3RpZmljYXRpb25zJykiPlZpZXcgYWxsPC9idXR0b24+PC9kaXY+YCk7IGlj b25zKCk7IH1jYXRjaChlKXsgcXMoJy5saXN0JyxwKS5pbm5lckhUTUw9ZW1wdHkoJ0NvdWxkIG5vdCBsb2FkJyxlLm1lc3NhZ2Us J2Nsb3VkLW9mZicpOyBpY29ucygpOyB9IH0KdmFyIE5JQ09OPXtIQVpBUkQ6J2NvbnN0cnVjdGlvbicsSU5DSURFTlQ6J3NpcmVu JyxBU1NJR05NRU5UOid1c2VyLWNoZWNrJyxPVkVSRFVFOidhbGFybS1jbG9jaycsVFJBSU5JTkc6J2dyYWR1YXRpb24tY2FwJyxU T09MQk9YOid1c2VycycsQUxFUlQ6J2JlbGwtcmluZycsQVBQUk9WQUw6J3N0YW1wJyxUUkFGRklDOidjYXItZnJvbnQnLFJFQ09H TklUSU9OOidhd2FyZCcsQUNISUVWRU1FTlQ6J2Nyb3duJyxDQU1QQUlHTjonZmxhZycsRVNDQUxBVElPTjonb2N0YWdvbi1hbGVy dCcsT0JTRVJWQVRJT046J2V5ZScsSU5GTzonaW5mbyd9OwpmdW5jdGlvbiBuSXRlbShuKXsgY29uc3QgY3JpdD1uLlByaW9yaXR5 PT09J0NSSVRJQ0FMJzsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJuaXRlbSAke24uUmVhZD09PSdZJz8nJzondW5yZWFkJ30iIG9uY2xp Y2s9Im9wZW5Ob3RpZignJHtuLklkfScsJyR7ZXNjKG4uTGluayl9JykiIHJvbGU9ImJ1dHRvbiIgdGFiaW5kZXg9IjAiPjxzcGFu IGNsYXNzPSJhdiBzbSIgc3R5bGU9ImJhY2tncm91bmQ6JHtjcml0Pyd2YXIoLS1yZWQpJzpuLlByaW9yaXR5PT09J0hJR0gnPycj RUE1ODBDJzondmFyKC0taW5rKSd9Ij4ke2ljKE5JQ09OW24uVHlwZV18fCdiZWxsJywnc20nKX08L3NwYW4+PGRpdiBjbGFzcz0i Z3JvdyI+PGRpdiBjbGFzcz0iYiBzbWFsbCIgc3R5bGU9IiR7Y3JpdD8nY29sb3I6dmFyKC0tcmVkKSc6Jyd9Ij4ke2VzYyhuLlRp dGxlKX08L2Rpdj4ke24uQm9keT9gPGRpdiBjbGFzcz0ic21hbGwgbXV0ZWQiPiR7ZXNjKG4uQm9keSl9PC9kaXY+YDonJ308ZGl2 IGNsYXNzPSJ0aW55IG11dGVkIj4ke2FnbyhuLkNyZWF0ZWRBdCl9PC9kaXY+PC9kaXY+PC9kaXY+YDsgfQphc3luYyBmdW5jdGlv biBvcGVuTm90aWYoaWQsIGxpbmspeyBjbG9zZU1lbnVzKCk7IGNhbGwoJ21hcmtSZWFkJyx7aWR9KS50aGVuKCgpPT57IFNHLnVu cmVhZD1NYXRoLm1heCgwLFNHLnVucmVhZC0xKTsgdXBkRG90KCk7IH0pLmNhdGNoKCgpPT57fSk7IGlmKGxpbmspIGdvKGxpbmsp OyB9CmFzeW5jIGZ1bmN0aW9uIG1hcmtBbGwoKXsgYXdhaXQgY2FsbCgnbWFya1JlYWQnLHtpZDonYWxsJ30pLmNhdGNoKCgpPT57 fSk7IFNHLnVucmVhZD0wOyB1cGREb3QoKTsgY2xvc2VNZW51cygpOyB0b2FzdCgnQWxsIG5vdGlmaWNhdGlvbnMgbWFya2VkIGFz IHJlYWQnLCdvaycpOyBpZihTRy5yb3V0ZT09PSdub3RpZmljYXRpb25zJykgcmVuZGVyKCk7IH0KZnVuY3Rpb24gdXBkRG90KCl7 IGNvbnN0IGQ9cXMoJyNuZG90Jyk7IGlmKCFkKSByZXR1cm47IGQudGV4dENvbnRlbnQ9U0cudW5yZWFkPjk5Pyc5OSsnOlNHLnVu cmVhZDsgZC5jbGFzc0xpc3QudG9nZ2xlKCdoaWRlJywhU0cudW5yZWFkKTsgZC5jbGFzc0xpc3QudG9nZ2xlKCdwdWxzZScsU0cu Y3JpdEFsZXJ0cy5sZW5ndGg+MCk7IH0KYXN5bmMgZnVuY3Rpb24gcHVsc2UoKXsgaWYoIVNHLnVzZXJ8fGRvY3VtZW50LmhpZGRl bikgcmV0dXJuOyB0cnl7IGNvbnN0IHI9YXdhaXQgY2FsbCgnZ2V0UHVsc2UnLHtzaW5jZTpTRy5zaW5jZX0pOyBTRy5zaW5jZT1y Lm5vdzsgY29uc3QgcHJldj1TRy51bnJlYWQ7IFNHLnVucmVhZD1yLnVucmVhZDsgU0cuY3JpdEFsZXJ0cz1yLmNyaXRpY2FsQWxl cnRzfHxbXTsgdXBkRG90KCk7IGRyYXdOYXYoKTsKICAoci5mcmVzaHx8W10pLmZvckVhY2gobj0+dG9hc3Qobi5UaXRsZSwgbi5Q cmlvcml0eT09PSdDUklUSUNBTCc/J2Vycic6JycsIG4uQm9keSkpOwogIGNvbnN0IGNiPXFzKCcjY3JpdEJhbm5lcicpOyBpZihj YikgY2IuaW5uZXJIVE1MPVNHLmNyaXRBbGVydHMubGVuZ3RoP2A8ZGl2IGNsYXNzPSJjb250ZW50IiBzdHlsZT0icGFkZGluZy1i b3R0b206MCI+PGRpdiBjbGFzcz0iYmFubmVyIGNyaXQiIHN0eWxlPSJtYXJnaW46MCI+JHtpYygnc2lyZW4nKX08ZGl2IGNsYXNz PSJncm93Ij48Yj4ke1NHLmNyaXRBbGVydHMubGVuZ3RofSBzYWZldHkgYWxlcnQke1NHLmNyaXRBbGVydHMubGVuZ3RoPjE/J3Mg bmVlZCc6JyBuZWVkcyd9IHlvdXIgYWNrbm93bGVkZ2VtZW50PC9iPjxkaXYgY2xhc3M9InNtYWxsIj4ke2VzYyhTRy5jcml0QWxl cnRzLm1hcChhPT5hLlRpdGxlKS5qb2luKCcgwrcgJykpfTwvZGl2PjwvZGl2PjxidXR0b24gY2xhc3M9ImJ0biBzbSBkYXJrIiBv bmNsaWNrPSJnbygnYWxlcnRzJykiPlJldmlldzwvYnV0dG9uPjwvZGl2PjwvZGl2PmA6Jyc7IGljb25zKCk7CiAgaWYoci51bnJl YWQ+cHJldiAmJiBTRy5yb3V0ZT09PSdob21lJyAmJiBjYW4oJ2Rhc2hib2FyZC5jb21tYW5kJykpIHJlbmRlcigpOyB9Y2F0Y2go ZSl7fSB9CmZ1bmN0aW9uIHNldHVwU2VhcmNoKCl7IGNvbnN0IGlucD1xcygnI2dzZWFyY2gnKSwgYm94PXFzKCcjc3VnZycpOyBs ZXQgdCwgYWN0PS0xOwogIGlucC5vbmlucHV0PSgpPT57IGNsZWFyVGltZW91dCh0KTsgY29uc3QgcT1pbnAudmFsdWUudHJpbSgp OyBpZihxLmxlbmd0aDwyKXsgYm94LnN0eWxlLmRpc3BsYXk9J25vbmUnOyByZXR1cm47IH0gdD1zZXRUaW1lb3V0KGFzeW5jKCk9 PnsgYm94LnN0eWxlLmRpc3BsYXk9J2Jsb2NrJzsgYm94LmlubmVySFRNTD0nPGRpdiBjbGFzcz0ic21hbGwgbXV0ZWQiIHN0eWxl PSJwYWRkaW5nOjEwcHgiPlNlYXJjaGluZ+KApjwvZGl2Pic7IHRyeXsgY29uc3Qgcj1hd2FpdCBjYWxsKCdzZWFyY2gnLHtxfSk7 IGFjdD0tMTsgYm94LmlubmVySFRNTD1yLmxlbmd0aD9yLm1hcCh4PT5gPGJ1dHRvbiByb2xlPSJvcHRpb24iIG9uY2xpY2s9Imdv KCcke2VzYyh4LmxpbmspfScpO3FzKCcjc3VnZycpLnN0eWxlLmRpc3BsYXk9J25vbmUnO3FzKCcjZ3NlYXJjaCcpLnZhbHVlPScn Ij4ke2ljKHtIYXphcmQ6J2NvbnN0cnVjdGlvbicsJ05lYXIgTWlzcyc6J3RyaWFuZ2xlLWFsZXJ0JyxJbmNpZGVudDonc2lyZW4n LEFjdGlvbjonbGlzdC1jaGVja3MnLEluc3BlY3Rpb246J2NsaXBib2FyZC1jaGVjaycsQXVkaXQ6J2ZpbGUtc2VhcmNoJywnVHJh ZmZpYyBjYXNlJzonY2FyLWZyb250JywnVG9vbGJveCB0YWxrJzondXNlcnMnLFRyYWluaW5nOidncmFkdWF0aW9uLWNhcCcsUGVy c29uOid1c2VyJyxWZWhpY2xlOid0cnVjaycsRG9jdW1lbnQ6J2ZpbGUtdGV4dCd9W3gudHlwZV18fCdzZWFyY2gnLCdzbScpfTxk aXYgY2xhc3M9Imdyb3ciPjxkaXYgY2xhc3M9ImIgc21hbGwiPiR7ZXNjKHgudGl0bGUpfTwvZGl2PjxkaXYgY2xhc3M9InRpbnkg bXV0ZWQiPiR7ZXNjKHgudHlwZSl9IMK3IDxzcGFuIGNsYXNzPSJtb25vIj4ke2VzYyh4LmlkKX08L3NwYW4+IMK3ICR7ZXNjKHgu c3VifHwnJyl9PC9kaXY+PC9kaXY+PC9idXR0b24+YCkuam9pbignJyk6JzxkaXYgY2xhc3M9InNtYWxsIG11dGVkIiBzdHlsZT0i cGFkZGluZzoxMHB4Ij5ObyBtYXRjaGVzPC9kaXY+JzsgaWNvbnMoKTsgfWNhdGNoKGUpeyBib3guaW5uZXJIVE1MPWA8ZGl2IGNs YXNzPSJzbWFsbCIgc3R5bGU9InBhZGRpbmc6MTBweDtjb2xvcjp2YXIoLS1yZWQpIj4ke2VzYyhlLm1lc3NhZ2UpfTwvZGl2PmA7 IH0gfSwyNTApOyB9OwogIGlucC5vbmtleWRvd249ZT0+eyBjb25zdCBicz1xc2EoJ2J1dHRvbicsYm94KTsgaWYoZS5rZXk9PT0n QXJyb3dEb3duJ3x8ZS5rZXk9PT0nQXJyb3dVcCcpeyBlLnByZXZlbnREZWZhdWx0KCk7IGFjdD0oYWN0KyhlLmtleT09PSdBcnJv d0Rvd24nPzE6LTEpK2JzLmxlbmd0aCklYnMubGVuZ3RoOyBicy5mb3JFYWNoKChiLGkpPT5iLmNsYXNzTGlzdC50b2dnbGUoJ2Fj dCcsaT09PWFjdCkpOyB9IGlmKGUua2V5PT09J0VudGVyJyYmYnNbYWN0XSkgYnNbYWN0XS5jbGljaygpOyBpZihlLmtleT09PSdF c2NhcGUnKSBib3guc3R5bGUuZGlzcGxheT0nbm9uZSc7IH07CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGU9 PnsgaWYoIWUudGFyZ2V0LmNsb3Nlc3QoJyNzZWFyY2hCb3gnKSkgYm94LnN0eWxlLmRpc3BsYXk9J25vbmUnOyB9KTsKICBkb2N1 bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJyxlPT57IGlmKChlLmN0cmxLZXl8fGUubWV0YUtleSkmJmUua2V5PT09J2sn KXsgZS5wcmV2ZW50RGVmYXVsdCgpOyBpbnAuZm9jdXMoKTsgfSB9KTsgfQpmdW5jdGlvbiBnbyhyKXsgY29uc3QgcGFydHM9U3Ry aW5nKHJ8fCdob21lJykucmVwbGFjZSgvXiM/XC8/LywnJykuc3BsaXQoJy8nKTsgU0cucm91dGU9cGFydHNbMF18fCdob21lJzsg U0cucGFyYW1zPXBhcnRzLnNsaWNlKDEpOyBjbG9zZU1lbnVzKCk7IGNsb3NlRHJhd2VyKCk7IHRvZ2dsZVNpZGUoZmFsc2UpOyBy ZW5kZXIoKTsgdHJ5eyB3aW5kb3cuc2Nyb2xsVG8oMCwwKTsgcXMoJy5jb250ZW50JykmJihxcygnLmNvbnRlbnQnKS5zY3JvbGxU b3A9MCk7fWNhdGNoKGUpe30gfQpmdW5jdGlvbiByZW5kZXIoKXsgaWYoIVNHLnVzZXIpIHJldHVybiByZW5kZXJMYW5kaW5nKCk7 IFNHLm5hdisrOyBTRy50YWJsZXM9e307IGRyYXdOYXYoKTsgcXNhKCcuYm90dG9tIGJ1dHRvbicpLmZvckVhY2goYj0+Yi5jbGFz c0xpc3QudG9nZ2xlKCdvbicsYi5kYXRhc2V0LmI9PT1TRy5yb3V0ZSkpOyBjb25zdCB2PVZJRVdTW1NHLnJvdXRlXXx8VklFV1Mu aG9tZTsgdigpOyB9Cgo7CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KICAgTEFORElORyAmIExPR0lOCiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwphc3luYyBmdW5jdGlvbiByZW5kZXJMYW5kaW5nKCl7CiAgcXMoJyNh cHAnKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9ImxhbmQiPgogIDxzZWN0aW9uIGNsYXNzPSJsaGVybyI+PGRpdiBjbGFzcz0ibG5h diIgc3R5bGU9ImNvbG9yOiNmZmYiPjxkaXYgY2xhc3M9ImJyYW5kIiBzdHlsZT0icGFkZGluZzowIj48ZGl2IGNsYXNzPSJtYXJr Ij4ke2ljKCdoYXJkLWhhdCcpfTwvZGl2PjxkaXY+JHticmFuZE5hbWUoKX08c21hbGwgc3R5bGU9ImNvbG9yOiM4OTk1QUMiPkVu dGVycHJpc2UgU2FmZXR5IE9wZXJhdGluZyBTeXN0ZW08L3NtYWxsPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJvdyI+PGJ1dHRv biBjbGFzcz0iYnRuIHNtIiBzdHlsZT0iYmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojMkMz QTU3IiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2lnbmluJykuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidz bW9vdGgnfSkiPlNpZ24gaW48L2J1dHRvbj48L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJpbiI+PGRpdj48ZGl2IHN0eWxlPSJm b250LWZhbWlseTpBcmNoaXZvLEludGVyLHNhbnMtc2VyaWY7Zm9udC13ZWlnaHQ6OTAwO2ZvbnQtc2l6ZTo1OHB4O2xpbmUtaGVp Z2h0OjE7bGV0dGVyLXNwYWNpbmc6LS4wMmVtIj4ke2JyYW5kTmFtZSgpfTwvZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiNDNUNFREY7 Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4xNmVtO2ZvbnQtc2l6ZToxM3B4O21hcmdpbjo4cHggMCAyMHB4Ij5FTlRF UlBSSVNFIFNBRkVUWSBPUEVSQVRJTkcgU1lTVEVNPC9kaXY+PGRpdiBjbGFzcz0iZXllYnJvdyI+PHNwYW4gY2xhc3M9InN0cmlw ZSIgc3R5bGU9IndpZHRoOjM2cHg7ZGlzcGxheTppbmxpbmUtYmxvY2siPjwvc3Bhbj5TRUUgSVQuIFJFUE9SVCBJVC4gRklYIElU LiBMRUFSTiBGUk9NIElULjwvZGl2PjxoMT5UdXJuIHdvcmtwbGFjZSBzYWZldHkgaW50byBhbiBldmVyeWRheSBoYWJpdC48L2gx PgogIDxwPk9uZSBwbGF0Zm9ybSBmb3IgaW5jaWRlbnRzLCBoYXphcmRzLCBpbnNwZWN0aW9ucywgY29ycmVjdGl2ZSBhY3Rpb25z LCB0cmFpbmluZywgdG9vbGJveCB0YWxrcywgdHJhZmZpYyBzYWZldHksIGFuZCBlbXBsb3llZSBzYWZldHkgZW5nYWdlbWVudCDi gJQgd2l0aCB0aGUgQUkgbW9kZWwgb2YgeW91ciBjaG9pY2UgYnVpbHQgaW4uPC9wPjxkaXYgY2xhc3M9ImFjcm8iIGFyaWEtbGFi ZWw9IldoYXQgU0FBZmVseSBzdGFuZHMgZm9yIj4ke0FDUk8ubWFwKGE9PmA8c3Bhbj48Yj4ke2FbMF19PC9iPiR7YVsxXX08L3Nw YW4+YCkuam9pbignJyl9PC9kaXY+CiAgPGRpdiBjbGFzcz0icm93IHciPjxidXR0b24gY2xhc3M9ImJ0biBwcmkgbGciIG9uY2xp Y2s9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaWduaW4nKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCd9KSI+ JHtpYygnY2FsZW5kYXItY2hlY2snKX0gUmVxdWVzdCBEZW1vPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIGxnIiBzdHlsZT0i YmFja2dyb3VuZDp0cmFuc3BhcmVudDtjb2xvcjojZmZmO2JvcmRlci1jb2xvcjojM0E0ODY3IiBvbmNsaWNrPSJkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnc2lnbmluJykuc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOidzbW9vdGgnfSkiPlN0YXJ0IEZyZWUgVHJp YWwgJHtpYygnYXJyb3ctcmlnaHQnLCdzbScpfTwvYnV0dG9uPjwvZGl2PgogIDxkaXYgY2xhc3M9InJvdyB3IG10MiBzbWFsbCIg c3R5bGU9ImNvbG9yOiM4RkEwQkM7Z2FwOjE4cHgiPiR7WydRUiByZXBvcnRpbmcgaW4gdW5kZXIgNjBzJywnTXVsdGktc2l0ZSAm IG11bHRpLXRlbmFudCcsJ1JvbGUtYmFzZWQgYWNjZXNzICsgYXVkaXQgdHJhaWwnXS5tYXAodD0+YDxzcGFuIGNsYXNzPSJyb3ci IHN0eWxlPSJnYXA6NnB4Ij4ke2ljKCdjaXJjbGUtY2hlY2snLCdzbScpfSR7dH08L3NwYW4+YCkuam9pbignJyl9PC9kaXY+PC9k aXY+CiAgPGRpdiBjbGFzcz0icHJldmlldyIgYXJpYS1oaWRkZW49InRydWUiPjxkaXYgY2xhc3M9InJvdyBiZXR3ZWVuIiBzdHls ZT0ibWFyZ2luLWJvdHRvbToxMHB4Ij48YiBjbGFzcz0iaGQiPlNhZmV0eSBDb21tYW5kIENlbnRlcjwvYj48c3BhbiBjbGFzcz0i Y2hpcCBjLXJlZCI+JHtpYygnc2lyZW4nKX0yIGNyaXRpY2FsPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHYtayI+PGRp dj48c3Bhbj5PcGVuIGluY2lkZW50czwvc3Bhbj48Yj4xMjwvYj48c21hbGwgY2xhc3M9InNtYWxsIiBzdHlsZT0iY29sb3I6dmFy KC0tb3JhbmdlKSI+NCBuZWVkIGFjdGlvbiB0b2RheTwvc21hbGw+PC9kaXY+PGRpdj48c3Bhbj5UcmFpbmluZzwvc3Bhbj48Yj45 NCU8L2I+PHNtYWxsIGNsYXNzPSJzbWFsbCIgc3R5bGU9ImNvbG9yOnZhcigtLWdyZWVuKSI+T24gdHJhY2s8L3NtYWxsPjwvZGl2 PjxkaXY+PHNwYW4+VHJhZmZpYyBjYXJkczwvc3Bhbj48Yj4yNzwvYj48c21hbGwgY2xhc3M9InNtYWxsIiBzdHlsZT0iY29sb3I6 dmFyKC0tcmVkKSI+NSByZXBlYXQ8L3NtYWxsPjwvZGl2PjwvZGl2PgogICAgPGRpdiBjbGFzcz0icm93IiBzdHlsZT0iZ2FwOjhw eDttYXJnaW4tdG9wOjhweDthbGlnbi1pdGVtczpzdHJldGNoIj48ZGl2IHN0eWxlPSJmbGV4OjEuNDtiYWNrZ3JvdW5kOiNmZmY7 Ym9yZGVyLXJhZGl1czoxMHB4O2JvcmRlcjoxcHggc29saWQgdmFyKC0tbGluZSk7cGFkZGluZzoxMHB4Ij48ZGl2IGNsYXNzPSJ0 aW55IGIgbXV0ZWQiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjZweCI+UkVQT1JUUyDCtyBMQVNUIDggV0VFS1M8L2Rpdj48ZGl2IHN0 eWxlPSJkaXNwbGF5OmZsZXg7Z2FwOjZweDthbGlnbi1pdGVtczpmbGV4LWVuZDtoZWlnaHQ6ODZweCI+JHtbMzgsNTIsNDQsNjYs NTgsNzQsNjEsODJdLm1hcCgoaCxpKT0+YDxkaXYgc3R5bGU9ImZsZXg6MTtoZWlnaHQ6JHtofSU7Ym9yZGVyLXJhZGl1czo0cHg7 YmFja2dyb3VuZDoke2k9PT03Pyd2YXIoLS15KSc6JyMwRTE3MjYnfSI+PC9kaXY+YCkuam9pbignJyl9PC9kaXY+PC9kaXY+CiAg ICA8ZGl2IHN0eWxlPSJmbGV4OjE7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6MTBweDtib3JkZXI6MXB4IHNvbGlkIHZh cigtLWxpbmUpO3BhZGRpbmc6MTBweCI+PGRpdiBjbGFzcz0idGlueSBiIG11dGVkIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo2cHgi PlJJU0sgTUFUUklYPC9kaXY+PGRpdiBzdHlsZT0iZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNSwx ZnIpO2dhcDozcHgiPiR7WzEsMiwzLDQsNV0ubWFwKHM9PlsxLDIsMyw0LDVdLm1hcChsPT57Y29uc3Qgdj0oNi1zKSpsO3JldHVy biBgPGRpdiBzdHlsZT0iYXNwZWN0LXJhdGlvOjE7Ym9yZGVyLXJhZGl1czozcHgiIGNsYXNzPSJsdi0ke3Y8PTQ/J0xPVyc6djw9 OT8nTUVESVVNJzp2PD0xNT8nSElHSCc6J0NSSVRJQ0FMJ30iPjwvZGl2PmB9KS5qb2luKCcnKSkuam9pbignJyl9PC9kaXY+PC9k aXY+PC9kaXY+CiAgICA8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czoxMHB4O2JvcmRlcjoxcHggc29s aWQgdmFyKC0tbGluZSk7cGFkZGluZzoxMHB4O21hcmdpbi10b3A6OHB4IiBjbGFzcz0icm93Ij48c3BhbiBjbGFzcz0iYXYgc20i IHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKSI+U088L3NwYW4+PGRpdiBjbGFzcz0ic21hbGwgZ3JvdyI+PGI+U2FyYWgg aWRlbnRpZmllZCBhbiBleHBvc2VkIGVsZWN0cmljYWwgaGF6YXJkIGJlZm9yZSB3b3JrIHN0YXJ0ZWQuPC9iPjxkaXYgY2xhc3M9 InRpbnkgbXV0ZWQiPisyNSBTYWZldHkgUG9pbnRzIMK3IEdyZWF0IGNhdGNoITwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2 Pjwvc2VjdGlvbj4KICA8c2VjdGlvbiBjbGFzcz0ibHNlYyI+PGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJv dHRvbToyOHB4Ij48aDIgc3R5bGU9ImZvbnQtc2l6ZTozMHB4Ij5FdmVyeXRoaW5nIHNhZmV0eSwgY29ubmVjdGVkLjwvaDI+PHAg Y2xhc3M9Im11dGVkIj5QZW9wbGUsIHJpc2tzLCBpbmNpZGVudHMsIGFjdGlvbnMsIHRyYWluaW5nLCB2ZWhpY2xlcyBhbmQgY3Vs dHVyZSDigJQgaW4gb25lIHN5c3RlbS48L3A+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZmVhdCI+JHtbWydxci1jb2RlJywnUVIgUmVw b3J0aW5nJywnU2Nhbiwgc25hcCwgc3VibWl0LiBTaXRlLCBhcmVhIGFuZCBhc3NldCBhdXRvLWZpbGxlZC4nXSxbJ3NpcmVuJywn SW5jaWRlbnQgTWFuYWdlbWVudCcsJ0Z1bGwgbGlmZWN5Y2xlLCA1IFdoeXMsIGZpc2hib25lLCBib3d0aWUgYW5kIHRpbWVsaW5l cy4nXSxbJ2dyaWQtM3gzJywnUmlzayBNYW5hZ2VtZW50JywnQ29uZmlndXJhYmxlIHJpc2sgbWF0cml4LCBoZWF0bWFwcyBhbmQg ZXNjYWxhdGlvbi4nXSxbJ2Nhci1mcm9udCcsJ1RyYWZmaWMgU2FmZXR5JywnQ3VtdWxhdGl2ZSB5ZWxsb3cgLyByZWQgLyBibGFj ayBjYXJkIGVuZm9yY2VtZW50LiddLFsndXNlcnMnLCdUb29sYm94IFRhbGtzJywnUVIgYXR0ZW5kYW5jZSwgYWNrbm93bGVkZ2Vt ZW50cyBhbmQgcmVwb3J0cy4nXSxbJ2xpc3QtY2hlY2tzJywnQ29ycmVjdGl2ZSBBY3Rpb25zJywnT3duZXJzLCBldmlkZW5jZSwg dmVyaWZpY2F0aW9uLCBvdmVyZHVlIHRyYWNraW5nLiddLFsnY2hhcnQtbGluZScsJ1NhZmV0eSBBbmFseXRpY3MnLCdFeGVjdXRp dmUgZGFzaGJvYXJkIGFuZCBTYWZldHkgUGVyZm9ybWFuY2UgSW5kZXguJ10sWyd0cm9waHknLCdTYWZldHkgR2FtaWZpY2F0aW9u JywnUG9pbnRzLCBiYWRnZXMsIHN0cmVha3MsIGxlYWRlcmJvYXJkcywgY2FtcGFpZ25zLiddLFsnbG9jay1rZXlob2xlJywnRW50 ZXJwcmlzZSBTZWN1cml0eScsJ1JCQUMsIHRlbmFudCBpc29sYXRpb24sIGF1ZGl0IHRyYWlsLCBQSU4gaGFzaGluZy4nXSxbJ3Nw YXJrbGVzJywnQXNrIFNBQWZlbHkgQUknLCdQbGFpbi1FbmdsaXNoIHF1ZXN0aW9ucyBhYm91dCB5b3VyIHNhZmV0eSBkYXRhLCBi cmllZmluZ3MgYW5kIGludmVzdGlnYXRpb24gaGVscC4nXSxbJ2NwdScsJ0Nob29zZSB5b3VyIEFJIG1vZGVsJywnMzArIG1vZGVs cyDigJQgT3BlbkFJLCBDbGF1ZGUsIEdlbWluaSwgRGVlcFNlZWssIE1pc3RyYWwsIEdyb2ssIFF3ZW4gYW5kIG1vcmUuJ10sWydi dWlsZGluZy0yJywnTXVsdGktU2l0ZSBNYW5hZ2VtZW50JywnUmVnaW9ucywgc2l0ZXMsIGRlcGFydG1lbnRzLCBjb250cmFjdG9y cy4nXV0ubWFwKGY9PmA8ZGl2PjxkaXYgY2xhc3M9InFpIj4ke2ljKGZbMF0pfTwvZGl2PjxiPiR7ZlsxXX08L2I+PHNwYW4+JHtm WzJdfTwvc3Bhbj48L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj4KICA8ZGl2IGNsYXNzPSJ2ZXJicyBtdDIiPiR7WydSRVBPUlQgSVQn LCdVTkRFUlNUQU5EIElUJywnQVNTSUdOIElUJywnRklYIElUJywnVkVSSUZZIElUJywnTEVBUk4gRlJPTSBJVCcsJ1JFV0FSRCBT QUZFVFknLCdQUkVWRU5UIFJFQ1VSUkVOQ0UnXS5tYXAodj0+YDxzcGFuPiR7dn08L3NwYW4+YCkuam9pbignJyl9PC9kaXY+PC9z ZWN0aW9uPgogIDxzZWN0aW9uIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLW5hdnkpIiBpZD0ic2lnbmluIj48ZGl2IGNsYXNzPSJs c2VjIGdyaWQgZzIiIHN0eWxlPSJhbGlnbi1pdGVtczpjZW50ZXIiPjxkaXYgc3R5bGU9ImNvbG9yOiNmZmYiPjxkaXYgY2xhc3M9 ImV5ZWJyb3ciIHN0eWxlPSJmb250LWZhbWlseTpBcmNoaXZvLEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2ZvbnQtd2VpZ2h0 OjkwMDtsZXR0ZXItc3BhY2luZzouMmVtO2NvbG9yOnZhcigtLXkpO2ZvbnQtc2l6ZToxMnB4Ij5UUlkgVEhFIExJVkUgREVNTzwv ZGl2PjxoMiBzdHlsZT0iZm9udC1zaXplOjMycHg7bWFyZ2luLXRvcDoxMHB4Ij5TaWduIGluIGFzIGFueSByb2xlIGFuZCBleHBs b3JlIHJlYWwgd29ya2Zsb3dzLjwvaDI+PHAgc3R5bGU9ImNvbG9yOiNCOUM0RDgiIGlkPSJscXVvdGUiPjwvcD48L2Rpdj4KICA8 Zm9ybSBjbGFzcz0ibG9naW4iIGlkPSJsb2dpbkZvcm0iPjxoMz5TaWduIGluPC9oMz48cCBjbGFzcz0ic21hbGwgbXV0ZWQiIHN0 eWxlPSJtYXJnaW4tdG9wOjRweCI+VXNlIHlvdXIgRW1wbG95ZWUgSUQgYW5kIFBJTi48L3A+PGRpdiBjbGFzcz0iZmllbGQiPjxs YWJlbCBmb3I9ImVtcCI+RW1wbG95ZWUgSUQgb3IgZW1haWw8L2xhYmVsPjxpbnB1dCBpZD0iZW1wIiBjbGFzcz0iaW5wIiBuYW1l PSJlbXBJZCIgYXV0b2NvbXBsZXRlPSJ1c2VybmFtZSIgcmVxdWlyZWQ+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbCBm b3I9InBpbiI+UElOPC9sYWJlbD48aW5wdXQgaWQ9InBpbiIgY2xhc3M9ImlucCIgbmFtZT0icGluIiB0eXBlPSJwYXNzd29yZCIg aW5wdXRtb2RlPSJudW1lcmljIiBhdXRvY29tcGxldGU9ImN1cnJlbnQtcGFzc3dvcmQiIHJlcXVpcmVkPjwvZGl2PgogIDxidXR0 b24gY2xhc3M9ImJ0biBkYXJrIGJsb2NrIGxnIiB0eXBlPSJzdWJtaXQiPiR7aWMoJ2xvZy1pbicsJ3NtJyl9IFNpZ24gaW48L2J1 dHRvbj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBibG9jayBtdCIgb25jbGljaz0ic3NvKCkiPiR7aWMoJ2Nocm9t ZScsJ3NtJyl9IENvbnRpbnVlIHdpdGggR29vZ2xlIGFjY291bnQ8L2J1dHRvbj48ZGl2IGlkPSJkZW1vQm94Ij48L2Rpdj48L2Zv cm0+PC9kaXY+PC9zZWN0aW9uPgogIDxmb290ZXIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MjRweDtjb2xvcjp2 YXIoLS1tdXRlZCkiIGNsYXNzPSJzbWFsbCI+wqkgJHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9IFNBQWZlbHkg4oCUIEVudGVy cHJpc2UgU2FmZXR5IE9wZXJhdGluZyBTeXN0ZW0gwrcgQnVpbHQgZm9yIGZyb250bGluZSB0ZWFtcyBhbmQgdGhlIHBlb3BsZSB3 aG8gbGVhZCB0aGVtLjwvZm9vdGVyPjwvZGl2PmA7IGljb25zKCk7CiAgcXMoJyNsb2dpbkZvcm0nKS5vbnN1Ym1pdD1hc3luYyBl PT57IGUucHJldmVudERlZmF1bHQoKTsgY29uc3QgYj1xcygnYnV0dG9uW3R5cGU9c3VibWl0XScsZS50YXJnZXQpOyBiLmRpc2Fi bGVkPXRydWU7IHRyeXsgYXdhaXQgZG9Mb2dpbihxcygnI2VtcCcpLnZhbHVlLHFzKCcjcGluJykudmFsdWUpOyB9Y2F0Y2goZXJy KXsgdG9hc3QoZXJyLm1lc3NhZ2UsJ2VycicpOyBiLmRpc2FibGVkPWZhbHNlOyB9IH07CiAgdHJ5eyBjb25zdCBwPWF3YWl0IGNh bGwoJ3B1YmxpY0luZm8nKTsgaWYoRVhUX1VSTHx8cC51cmwpIEJPT1QudXJsPUVYVF9VUkx8fHAudXJsOyBxcygnI2xxdW90ZScp LnRleHRDb250ZW50PSfigJwnK3AucXVvdGUrJ+KAnSc7IGlmKHAuZGVtby5sZW5ndGgpeyBxcygnI2RlbW9Cb3gnKS5pbm5lckhU TUw9YDxkaXYgY2xhc3M9InNtYWxsIGIgbXQyIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTo4cHgiPkRlbW8gYWNjb3VudHMgKFBJTiAx MjM0KTwvZGl2PjxkaXYgY2xhc3M9ImRlbW8tdXNlcnMiPiR7cC5kZW1vLm1hcChkPT5gPGJ1dHRvbiB0eXBlPSJidXR0b24iIG9u Y2xpY2s9ImRlbW9Mb2dpbignJHtlc2MoZC5FbXBJZCl9Jyx0aGlzKSI+JHthdihkLk5hbWUsJ3NtJyl9PGRpdj48Yj4ke2VzYyhk Lk5hbWUpfTwvYj48c3Bhbj4ke2VzYyhyb2xlTihkLlJvbGUpKX08L3NwYW4+PC9kaXY+PC9idXR0b24+YCkuam9pbignJyl9PC9k aXY+YDsgaWNvbnMoKTsgfSB9Y2F0Y2goZSl7fQp9CmFzeW5jIGZ1bmN0aW9uIGRlbW9Mb2dpbihpZCwgYnRuKXsgYnRuLmRpc2Fi bGVkPXRydWU7IHRyeXsgYXdhaXQgZG9Mb2dpbihpZCwnMTIzNCcpOyB9Y2F0Y2goZSl7IHRvYXN0KGUubWVzc2FnZSwnZXJyJyk7 IGJ0bi5kaXNhYmxlZD1mYWxzZTsgfSB9CmFzeW5jIGZ1bmN0aW9uIHNzbygpeyB0cnl7IGNvbnN0IHI9YXdhaXQgY2FsbCgnc3Nv TG9naW4nKTsgU0cudG9rZW49ci50b2tlbjsgc3RvcmUuc2V0KCdzZ190b2tlbicsci50b2tlbik7IGF3YWl0IGJvb3QoKTsgfWNh dGNoKGUpeyB0b2FzdChlLm1lc3NhZ2UsJ2VycicpOyB9IH0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBRUiBQVUJMSUMgRkxPVyAobm8gbG9naW4gcmVxdWlyZWQgd2hl biBjb25maWd1cmVkKQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gKi8KdmFyIEtJTkRTPVsKICB7azonVW5zYWZlIENvbmRpdGlvbicsaTonY29uc3RydWN0aW9uJyxjOicjRUE1 ODBDJyxkOidTb21ldGhpbmcgdGhhdCBjb3VsZCBodXJ0IHNvbWVvbmUnfSx7azonVW5zYWZlIEFjdCcsaTonaGFuZCcsYzonI0My NDEwQycsZDonU29tZW9uZSB3b3JraW5nIGluIGFuIHVuc2FmZSB3YXknfSwKICB7azonTmVhciBNaXNzJyxpOid0cmlhbmdsZS1h bGVydCcsYzonI0NBOEEwNCcsZDonU29tZXRoaW5nIGFsbW9zdCB3ZW50IHdyb25nJ30se2s6J0luY2lkZW50JyxpOidzaXJlbics YzonI0M4MUUxRScsZDonSW5qdXJ5LCBkYW1hZ2Ugb3Igc3BpbGwgaGFwcGVuZWQnfSwKICB7azonR29vZCBDYXRjaCcsaTonc2hp ZWxkLWNoZWNrJyxjOicjMTU4MDNEJyxkOidZb3Ugc3RvcHBlZCBpdCBiZWZvcmUgaXQgaGFwcGVuZWQnfSx7azonT2JzZXJ2YXRp b24nLGk6J2V5ZScsYzonIzFENEVEOCcsZDonU2FmZSBvciB1bnNhZmUgYmVoYXZpb3VyIHlvdSBzYXcnfSwKICB7azonRW52aXJv bm1lbnRhbCBJc3N1ZScsaTonbGVhZicsYzonIzBGNzY2RScsZDonU3BpbGwsIGxlYWssIGVtaXNzaW9ucywgd2FzdGUnfSx7azon VHJhZmZpYyBTYWZldHkgSXNzdWUnLGk6J2Nhci1mcm9udCcsYzonIzdDM0FFRCcsZDonVmVoaWNsZXMsIHNwZWVkLCBwZWRlc3Ry aWFucyd9LAogIHtrOidTZWN1cml0eS9TYWZldHkgQ29uY2VybicsaTonc2hpZWxkLWFsZXJ0JyxjOicjMzM0MTU1JyxkOidBY2Nl c3MsIGZlbmNpbmcsIGludHJ1c2lvbid9LHtrOidPdGhlcicsaTonY2lyY2xlLWhlbHAnLGM6JyM2NDc0OEInLGQ6J0FueXRoaW5n IGVsc2UgdGhhdCB3b3JyaWVzIHlvdSd9XTsKYXN5bmMgZnVuY3Rpb24gcmVuZGVyUVIoaWQpewogIHFzKCcjYXBwJykuaW5uZXJI VE1MPWA8ZGl2IGNsYXNzPSJxcnBhZ2UiPjxkaXYgY2xhc3M9InFyaGVhZCI+PGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJt YXJrIj4ke2ljKCdoYXJkLWhhdCcpfTwvZGl2PjxkaXY+JHticmFuZE5hbWUoKX08ZGl2IGNsYXNzPSJzbWFsbCIgc3R5bGU9ImNv bG9yOiM4RkEwQkMiPkxvYWRpbmcgbG9jYXRpb27igKY8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IHN0eWxlPSJwYWRkaW5n OjE4cHgiPjxkaXYgY2xhc3M9InNrIiBzdHlsZT0iaGVpZ2h0OjMwMHB4Ij48L2Rpdj48L2Rpdj48L2Rpdj5gOyBpY29ucygpOwog IGxldCBpbmZvOyB0cnl7IGluZm89YXdhaXQgY2FsbCgncXJJbmZvJyx7aWR9KTsgfWNhdGNoKGUpeyBxcygnI2FwcCcpLmlubmVy SFRNTD1gPGRpdiBjbGFzcz0icXJwYWdlIj4ke2VtcHR5KCdRUiBjb2RlIG5vdCByZWNvZ25pc2VkJywgZS5tZXNzYWdlLCAncXIt Y29kZScpfTwvZGl2PmA7IGljb25zKCk7IHJldHVybjsgfQogIFNHLnFySW5mbz1pbmZvOyBpZihFWFRfVVJMfHxpbmZvLnVybCkg Qk9PVC51cmw9RVhUX1VSTHx8aW5mby51cmw7IGNvbnN0IGhlYWQ9YDxkaXYgY2xhc3M9InFyaGVhZCI+PGRpdiBjbGFzcz0icm93 Ij48ZGl2IGNsYXNzPSJtYXJrIj4ke2ljKCdoYXJkLWhhdCcpfTwvZGl2PjxkaXY+JHticmFuZE5hbWUoKX08ZGl2IGNsYXNzPSJz bWFsbCIgc3R5bGU9ImNvbG9yOiM4RkEwQkMiPiR7ZXNjKGluZm8ub3JnKX08L2Rpdj48L2Rpdj48c3BhbiBjbGFzcz0iZ3JvdyI+ PC9zcGFuPiR7U0dRLmFsbCgpLmxlbmd0aD9gPGJ1dHRvbiBjbGFzcz0ic3luY3BpbGwiIG9uY2xpY2s9InNob3dRdWV1ZSgpIj4k e2ljKCdjbG91ZC11cGxvYWQnLCdzbScpfSR7U0dRLmFsbCgpLmxlbmd0aH0gcGVuZGluZzwvYnV0dG9uPmA6Jyd9PC9kaXY+CiAg ICA8ZGl2IGNsYXNzPSJsb2MiPiR7aWMoJ21hcC1waW4nKX08ZGl2PjxiPiR7ZXNjKGluZm8ucXIuTGFiZWwpfTwvYj48ZGl2IGNs YXNzPSJzbWFsbCIgc3R5bGU9ImNvbG9yOiM5RkIwQ0MiPiR7ZXNjKGluZm8uc2l0ZSl9JHtpbmZvLmRlcHQ/JyDCtyAnK2VzYyhp bmZvLmRlcHQpOicnfSR7aW5mby5xci5Bc3NldD8nIMK3IEFzc2V0ICcrZXNjKGluZm8ucXIuQXNzZXQpOicnfTwvZGl2PjwvZGl2 PjwvZGl2PjwvZGl2PmA7CiAgaWYoaW5mby5xci5QdXJwb3NlPT09J1RPT0xCT1gnKXsgY29uc3QgdD1pbmZvLnRvb2xib3h8fHt9 OwogICAgcXMoJyNhcHAnKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InFycGFnZSI+JHtoZWFkfTxkaXYgc3R5bGU9InBhZGRpbmc6 MThweCI+PGgyPlRvb2xib3ggdGFsayBjaGVjay1pbjwvaDI+PGRpdiBjbGFzcz0iY2FyZCBwIG10Ij48YiBjbGFzcz0iaGQiIHN0 eWxlPSJmb250LXNpemU6MThweCI+JHtlc2ModC5Ub3BpY3x8JycpfTwvYj48ZGl2IGNsYXNzPSJzbWFsbCBtdXRlZCBtdCIgc3R5 bGU9Im1hcmdpbi10b3A6NHB4Ij4ke2ZtdEQodC5EYXRlKX0gwrcgJHtlc2ModC5UaW1lfHwnJyl9IMK3ICR7ZXNjKHQuTG9jYXRp b258fCcnKX0gwrcgRmFjaWxpdGF0b3I6ICR7ZXNjKHQuRmFjaWxpdGF0b3J8fCcnKX08L2Rpdj48L2Rpdj4KICAgIDxmb3JtIGlk PSJ0YmYiIGNsYXNzPSJtdCI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5FbXBsb3llZSBJRDwvbGFiZWw+PGlucHV0IGNsYXNz PSJpbnAiIG5hbWU9ImVtcElkIiBpbnB1dG1vZGU9Im51bWVyaWMiIHJlcXVpcmVkIHN0eWxlPSJoZWlnaHQ6NTJweDtmb250LXNp emU6MThweCI+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5QSU48L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1l PSJwaW4iIHR5cGU9InBhc3N3b3JkIiBpbnB1dG1vZGU9Im51bWVyaWMiIHJlcXVpcmVkIHN0eWxlPSJoZWlnaHQ6NTJweDtmb250 LXNpemU6MThweCI+PC9kaXY+CiAgICA8bGFiZWwgY2xhc3M9InJvdyBzbWFsbCIgc3R5bGU9Im1hcmdpbjo2cHggMCAxNnB4Ij48 aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImFjayIgcmVxdWlyZWQ+IEkgYXR0ZW5kZWQgdGhpcyB0b29sYm94IHRhbGsgYW5k IHVuZGVyc3Rvb2QgdGhlIHNhZmV0eSBtZXNzYWdlLjwvbGFiZWw+PGJ1dHRvbiBjbGFzcz0iYnRuIHByaSBibG9jayBzdWJtaXRi aWciPkNIRUNLIElOPC9idXR0b24+PC9mb3JtPjwvZGl2PjwvZGl2PmA7IGljb25zKCk7CiAgICBxcygnI3RiZicpLm9uc3VibWl0 PWFzeW5jIGU9PnsgZS5wcmV2ZW50RGVmYXVsdCgpOyBjb25zdCBkPWZvcm1EYXRhKGUudGFyZ2V0KTsgaWYoIWQuYWNrKSByZXR1 cm4gdG9hc3QoJ1BsZWFzZSBhY2tub3dsZWRnZSB5b3VyIHBhcnRpY2lwYXRpb24nLCdlcnInKTsgdHJ5eyBjb25zdCByPWF3YWl0 IGNhbGwoJ3FyVG9vbGJveEpvaW4nLHtxcklkOmlkLGVtcElkOmQuZW1wSWQscGluOmQucGlufSk7IGNvbmZldHRpKCk7IHFzKCcj YXBwJykuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJxcnBhZ2UiPiR7aGVhZH08ZGl2IGNsYXNzPSJzdWNjZXNzIj48ZGl2IGNsYXNz PSJiaWciPiR7aWMoJ2NoZWNrJywnbGcnKX08L2Rpdj48aDI+WW91J3JlIGNoZWNrZWQgaW4sICR7ZXNjKHIubmFtZS5zcGxpdCgn ICcpWzBdKX0hPC9oMj48cCBjbGFzcz0ibXV0ZWQiPiR7ZXNjKHIudG9waWMpfTwvcD4ke3IucmV3YXJkJiZyLnJld2FyZC5wb2lu dHM/YDxkaXYgY2xhc3M9ImNoaXAgYy15ZWxsb3ciIHN0eWxlPSJmb250LXNpemU6MTRweDtwYWRkaW5nOjhweCAxNHB4Ij4ke2lj KCdzcGFya2xlcycpfSArJHtyLnJld2FyZC5wb2ludHN9IFNhZmV0eSBQb2ludHM8L2Rpdj5gOicnfTwvZGl2PjwvZGl2PmA7IGlj b25zKCk7IH1jYXRjaChlcnIpeyB0b2FzdChlcnIubWVzc2FnZSwnZXJyJyk7IH0gfTsgcmV0dXJuOyB9CiAgaWYoaW5mby5xci5Q dXJwb3NlPT09J0RPQ1VNRU5UJyl7IGNvbnN0IGQ9aW5mby5kb2N8fHt9OyBxcygnI2FwcCcpLmlubmVySFRNTD1gPGRpdiBjbGFz cz0icXJwYWdlIj4ke2hlYWR9PGRpdiBzdHlsZT0icGFkZGluZzoxOHB4Ij48aDI+JHtlc2MoZC5UaXRsZXx8J0RvY3VtZW50Jyl9 PC9oMj48cCBjbGFzcz0ibXV0ZWQiPiR7ZXNjKGQuQ2F0ZWdvcnl8fCcnKX08L3A+PGEgY2xhc3M9ImJ0biBwcmkgYmxvY2sgbGci IGhyZWY9IiR7ZXNjKGQuVXJsKX0iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj4ke2ljKCdmaWxlLXRleHQnKX0gT3Bl biBkb2N1bWVudDwvYT48YnV0dG9uIGNsYXNzPSJidG4gYmxvY2sgbXQiIG9uY2xpY2s9InFyS2luZHMoKSI+JHtpYygnbWVnYXBo b25lJywnc20nKX0gUmVwb3J0IGEgc2FmZXR5IGlzc3VlIGhlcmUgaW5zdGVhZDwvYnV0dG9uPjwvZGl2PjwvZGl2PmA7IGljb25z KCk7IHJldHVybjsgfQogIHFyS2luZHMoKTsKfQpmdW5jdGlvbiBxckhlYWQoKXsgY29uc3QgaW5mbz1TRy5xckluZm87IHJldHVy biBgPGRpdiBjbGFzcz0icXJoZWFkIj48ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9Im1hcmsiPiR7aWMoJ2hhcmQtaGF0Jyl9 PC9kaXY+PGRpdj4ke2JyYW5kTmFtZSgpfTxkaXYgY2xhc3M9InNtYWxsIiBzdHlsZT0iY29sb3I6IzhGQTBCQyI+JHtlc2MoaW5m by5vcmcpfTwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImxvYyI+JHtpYygnbWFwLXBpbicpfTxkaXY+PGI+JHtlc2MoaW5m by5xci5MYWJlbCl9PC9iPjxkaXYgY2xhc3M9InNtYWxsIiBzdHlsZT0iY29sb3I6IzlGQjBDQyI+JHtlc2MoaW5mby5zaXRlKX0k e2luZm8uZGVwdD8nIMK3ICcrZXNjKGluZm8uZGVwdCk6Jyd9PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+YDsgfQpmdW5jdGlvbiBx cktpbmRzKCl7IHFzKCcjYXBwJykuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJxcnBhZ2UiPiR7cXJIZWFkKCl9PGRpdiBzdHlsZT0i cGFkZGluZzoxOHB4Ij48aDI+V2hhdCBkaWQgeW91IHNlZT88L2gyPjxwIGNsYXNzPSJtdXRlZCIgc3R5bGU9Im1hcmdpbi10b3A6 NHB4Ij5UYXAgb25lIOKAlCBpdCB0YWtlcyBsZXNzIHRoYW4gYSBtaW51dGUuPC9wPjxkaXYgY2xhc3M9ImJpZ2tpbmRzIG10Ij4k e0tJTkRTLm1hcChrPT5gPGJ1dHRvbiBvbmNsaWNrPSJxckZvcm0oJyR7ay5rfScpIj48c3BhbiBjbGFzcz0icWkiIHN0eWxlPSJ3 aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlci1yYWRpdXM6MTBweDtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2Jh Y2tncm91bmQ6JHtrLmN9MUE7Y29sb3I6JHtrLmN9Ij4ke2ljKGsuaSl9PC9zcGFuPiR7ZXNjKGsuayl9PC9idXR0b24+YCkuam9p bignJyl9PC9kaXY+PC9kaXY+PC9kaXY+YDsgaWNvbnMoKTsgfQpmdW5jdGlvbiBxckZvcm0oa2luZCl7IGNvbnN0IGluZm89U0cu cXJJbmZvOwogIHFzKCcjYXBwJykuaW5uZXJIVE1MPWA8ZGl2IGNsYXNzPSJxcnBhZ2UiPiR7cXJIZWFkKCl9PGZvcm0gaWQ9InFm IiBzdHlsZT0icGFkZGluZzoxOHB4IiBub3ZhbGlkYXRlPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGdob3N0IHNt IiBvbmNsaWNrPSJxcktpbmRzKCkiPiR7aWMoJ2Fycm93LWxlZnQnLCdzbScpfSBDaGFuZ2UgdHlwZTwvYnV0dG9uPjxoMiBjbGFz cz0ibXQiPiR7ZXNjKGtpbmQpfTwvaDI+CiAgJHtyZXBvcnRGaWVsZHMoa2luZCx7cXI6dHJ1ZX0pfQogIDxkZXRhaWxzIGNsYXNz PSJjYXJkIHAgbWIiPjxzdW1tYXJ5IGNsYXNzPSJiIiBzdHlsZT0iY3Vyc29yOnBvaW50ZXIiPkFkZCBteSBuYW1lIHRvIGVhcm4g U2FmZXR5IFBvaW50cyAob3B0aW9uYWwpPC9zdW1tYXJ5PjxkaXYgY2xhc3M9Im10Ij48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVs PkVtcGxveWVlIElEPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iZW1wSWQiIGlucHV0bW9kZT0ibnVtZXJpYyI+PC9k aXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5QSU48L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1lPSJwaW4iIHR5cGU9 InBhc3N3b3JkIiBpbnB1dG1vZGU9Im51bWVyaWMiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNtYWxsIG11dGVkIj4ke2luZm8u YWxsb3dBbm9ueW1vdXM/J0xlYXZlIGJsYW5rIHRvIHJlcG9ydCBhbm9ueW1vdXNseS4nOidZb3VyIG9yZ2FuaXNhdGlvbiByZXF1 aXJlcyB5b3VyIEVtcGxveWVlIElEIGZvciByZXBvcnRzLid9PC9kaXY+PC9kZXRhaWxzPgogIDxidXR0b24gY2xhc3M9ImJ0biBw cmkgYmxvY2sgc3VibWl0YmlnIiB0eXBlPSJzdWJtaXQiPiR7aWMoJ3NlbmQnKX0gU1VCTUlUIFJFUE9SVDwvYnV0dG9uPjwvZm9y bT48L2Rpdj5gOyBhZnRlclJlcG9ydEZvcm0ocXMoJyNxZicpLCBraW5kKTsgaWNvbnMoKTsKICBxcygnI3FmJykub25zdWJtaXQ9 YXN5bmMgZT0+eyBlLnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IGQ9Y29sbGVjdFJlcG9ydChlLnRhcmdldCwga2luZCk7IGlmKCFk KSByZXR1cm47IGQucXJJZD1pbmZvLnFyLklkOyBpZighZC5lbXBJZCl7IGRlbGV0ZSBkLnBpbjsgZC5hbm9ueW1vdXM9dHJ1ZTsg fQogICAgYXdhaXQgc3VibWl0V2l0aFF1ZXVlKCdxclN1Ym1pdCcsIGQsIHI9PnsgcXMoJyNhcHAnKS5pbm5lckhUTUw9YDxkaXYg Y2xhc3M9InFycGFnZSI+JHtxckhlYWQoKX0ke3N1Y2Nlc3NIdG1sKHIsdHJ1ZSl9PC9kaXY+YDsgaWNvbnMoKTsgfSk7IH07IH0K Lyogc2hhcmVkIHJlcG9ydCBmb3JtICovCmZ1bmN0aW9uIHJlcG9ydEZpZWxkcyhraW5kLCBvPXt9KXsgY29uc3Qgb2JzPWtpbmQ9 PT0nT2JzZXJ2YXRpb24nLCBnYz1raW5kPT09J0dvb2QgQ2F0Y2gnLCBpbmM9a2luZD09PSdOZWFyIE1pc3MnfHxraW5kPT09J0lu Y2lkZW50JzsKICByZXR1cm4gYCR7cGhvdG9JbnB1dCgncmVwJywgJ1Rha2Ugb3IgYWRkIGEgcGhvdG8nKX0KICA8ZGl2IGNsYXNz PSJmaWVsZCBtdCI+PGRpdiBjbGFzcz0icm93IGJldHdlZW4iPjxsYWJlbCBmb3I9InJkZXNjIj4ke2djPydXaGF0IGRpZCB5b3Ug bm90aWNlIGJlZm9yZSBpdCBiZWNhbWUgYW4gaW5jaWRlbnQ/JzonV2hhdCBkaWQgeW91IHNlZT8nfTwvbGFiZWw+JHttaWNCdG4o J3JkZXNjJyl9PC9kaXY+PHRleHRhcmVhIGlkPSJyZGVzYyIgbmFtZT0iZGVzY3JpcHRpb24iIGNsYXNzPSJpbnAiIHJlcXVpcmVk IHBsYWNlaG9sZGVyPSIke2djPydJIG5vdGljZWTigKYnOidEZXNjcmliZSBpdCBpbiBhIGZldyB3b3JkcyDigJQgeW91IGNhbiBz cGVhayBpbnN0ZWFkIG9mIHR5cGluZyd9Ij48L3RleHRhcmVhPjwvZGl2PgogICR7b2JzP2A8ZGl2IGNsYXNzPSJmaWVsZCI+PGxh YmVsPk9ic2VydmF0aW9uIHR5cGU8L2xhYmVsPjxkaXYgY2xhc3M9Im9wdHMiPiR7WydTYWZlIEFjdCcsJ1Vuc2FmZSBBY3QnLCdT YWZlIENvbmRpdGlvbicsJ1Vuc2FmZSBDb25kaXRpb24nLCdQb3NpdGl2ZSBSZWNvZ25pdGlvbiddLm1hcCgodCxpKT0+YDxsYWJl bCBjbGFzcz0ib3B0ICR7aT09PTA/J29uJzonJ30iPjxpbnB1dCB0eXBlPSJyYWRpbyIgY2xhc3M9InNyIiBuYW1lPSJvYnNUeXBl IiB2YWx1ZT0iJHt0fSIgJHtpPT09MD8nY2hlY2tlZCc6Jyd9PiR7ZXNjKHQpfTwvbGFiZWw+YCkuam9pbignJyl9PC9kaXY+PC9k aXY+YDonJ30KICAke29ic3x8Z2M/Jyc6YDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+SG93IHNlcmlvdXMgY291bGQgaXQgYmU/ PC9sYWJlbD48ZGl2IGNsYXNzPSJvcHRzIj4ke1snTG93JywnTWVkaXVtJywnSGlnaCcsJ0NyaXRpY2FsJ10ubWFwKHQ9PmA8bGFi ZWwgY2xhc3M9Im9wdCBzZXYtJHt0fSAke3Q9PT0nTWVkaXVtJz8nb24nOicnfSI+PGlucHV0IHR5cGU9InJhZGlvIiBjbGFzcz0i c3IiIG5hbWU9InNldmVyaXR5IiB2YWx1ZT0iJHt0fSIgJHt0PT09J01lZGl1bSc/J2NoZWNrZWQnOicnfT4ke2ljKHtMb3c6J3No aWVsZC1jaGVjaycsTWVkaXVtOidzaGllbGQtYWxlcnQnLEhpZ2g6J3RyaWFuZ2xlLWFsZXJ0JyxDcml0aWNhbDonc2lyZW4nfVt0 XSwnc20nKX0ke3R9PC9sYWJlbD5gKS5qb2luKCcnKX08L2Rpdj48L2Rpdj5gfQogICR7aW5jP2A8ZGl2IGNsYXNzPSJncmlkIGcy Ij48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlR5cGU8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0idHlwZSI+JHso U0cuY2ZnLmluY2lkZW50VHlwZXN8fChTRy5xckluZm8mJlNHLnFySW5mby5pbmNpZGVudFR5cGVzKXx8W10pLm1hcCh0PT5vcHQo dCkpLmpvaW4oJycpfTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+V2hlbiBkaWQgaXQgaGFwcGVuPzwv bGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIHR5cGU9ImRhdGV0aW1lLWxvY2FsIiBuYW1lPSJvY2N1cnJlZEF0Ij48L2Rpdj48L2Rp dj4ke2tpbmQ9PT0nSW5jaWRlbnQnP2A8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkltbWVkaWF0ZSBhY3Rpb24gdGFrZW48L2xh YmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1lPSJpbW1lZGlhdGVBY3Rpb24iIHBsYWNlaG9sZGVyPSJlLmcuIEFyZWEgYmFycmlj YWRlZCwgZmlyc3QgYWlkIGdpdmVuIj48L2Rpdj48bGFiZWwgY2xhc3M9InJvdyBzbWFsbCBtYiI+PGlucHV0IHR5cGU9ImNoZWNr Ym94IiBuYW1lPSJsb3N0VGltZSI+IFNvbWVvbmUgY291bGQgbm90IHJldHVybiB0byB3b3JrIChsb3N0IHRpbWUpPC9sYWJlbD5g OicnfWA6Jyd9CiAgJHshb2JzJiYhZ2MmJiFpbmMmJiFvLnFyP2A8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkNhdGVnb3J5PC9s YWJlbD48c2VsZWN0IGNsYXNzPSJpbnAiIG5hbWU9ImNhdGVnb3J5Ij4keyhTRy5jZmcuaGF6YXJkQ2F0ZWdvcmllc3x8W10pLm1h cCh0PT5vcHQodCkpLmpvaW4oJycpfTwvc2VsZWN0PjwvZGl2PmA6Jyd9CiAgJHsoZ2N8fG9icykmJiFvLnFyP2A8ZGl2IGNsYXNz PSJmaWVsZCI+PGxhYmVsPlJlY29nbmlzZSBhIGNvbGxlYWd1ZSAob3B0aW9uYWwpPC9sYWJlbD48c2VsZWN0IGNsYXNzPSJpbnAi IG5hbWU9InJlY29nbml6ZWRJZCI+JHtzZWxVc2VycygnJyx4PT54LklkIT09U0cudXNlci5JZCwn4oCUIG5vYm9keSDigJQnKX08 L3NlbGVjdD48L2Rpdj5gOicnfQogIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+RXhhY3QgbG9jYXRpb248L2xhYmVsPjxkaXYg Y2xhc3M9InJvdyI+PGlucHV0IGNsYXNzPSJpbnAgZ3JvdyIgbmFtZT0ibG9jYXRpb24iIHBsYWNlaG9sZGVyPSIke28ucXI/J09w dGlvbmFsIOKAlCB0aGlzIFFSIGFscmVhZHkga25vd3MgdGhlIGFyZWEnOidlLmcuIFJURyBMYW5lIDQsIG5lYXIgYmF5IDEyJ30i PjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJnZW8odGhpcy5mb3JtLHRoaXMpIj4ke2ljKCdsb2Nh dGUtZml4ZWQnLCdzbScpfSBHUFM8L2J1dHRvbj48L2Rpdj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYXQiPjxpbnB1dCB0 eXBlPSJoaWRkZW4iIG5hbWU9ImxuZyI+PC9kaXY+CiAgJHtvLnFyPycnOmA8ZGl2IGNsYXNzPSJncmlkIGcyIj48ZGl2IGNsYXNz PSJmaWVsZCI+PGxhYmVsPlNpdGU8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ic2l0ZUlkIj4ke3NlbFNpdGVzKFNH LnVzZXIuU2l0ZUlkKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkRlcGFydG1lbnQ8L2xhYmVsPjxz ZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0iZGVwdElkIj4ke3NlbERlcHRzKFNHLnVzZXIuRGVwdElkLFNHLnVzZXIuU2l0ZUlkKX08 L3NlbGVjdD48L2Rpdj48L2Rpdj5gfQogICR7IW8ucXImJihTRy5jZmcucHJpdmFjeXx8e30pLmFsbG93QW5vbnltb3VzJiYhb2Jz JiYhZ2M/YDxsYWJlbCBjbGFzcz0icm93IHNtYWxsIG1iIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImFub255bW91cyI+ IFJlcG9ydCBhbm9ueW1vdXNseSA8c3BhbiBjbGFzcz0ibXV0ZWQiPihhbm9ueW1vdXMgcmVwb3J0cyBkb24ndCBlYXJuIHBvaW50 cyk8L3NwYW4+PC9sYWJlbD5gOicnfWA7IH0KZnVuY3Rpb24gYWZ0ZXJSZXBvcnRGb3JtKGYpeyBxc2EoJy5vcHQnLGYpLmZvckVh Y2gobD0+bC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsKCk9PnsgcXNhKGBpbnB1dFtuYW1lPSR7cXMoJ2lucHV0JyxsKS5uYW1l fV1gLGYpLmZvckVhY2goaT0+aS5jbG9zZXN0KCcub3B0JykuY2xhc3NMaXN0LnRvZ2dsZSgnb24nLGkuY2hlY2tlZCkpOyB9KSk7 IGxpbmtTaXRlRGVwdChmKTsgfQpmdW5jdGlvbiBjb2xsZWN0UmVwb3J0KGYsIGtpbmQpeyBjb25zdCBkPWZvcm1EYXRhKGYpOyBk LmtpbmQ9a2luZDsgZC5waG90b3M9d2luZG93Ll9waC5yZXB8fFtdOyBpZihTdHJpbmcoZC5kZXNjcmlwdGlvbnx8JycpLnRyaW0o KS5sZW5ndGg8NSl7IHRvYXN0KCdQbGVhc2UgZGVzY3JpYmUgd2hhdCB5b3Ugc2F3JywnZXJyJyk7IHFzKCdbbmFtZT1kZXNjcmlw dGlvbl0nLGYpLmZvY3VzKCk7IHJldHVybiBudWxsOyB9IGlmKGQub2NjdXJyZWRBdCkgZC5vY2N1cnJlZEF0PW5ldyBEYXRlKGQu b2NjdXJyZWRBdCkudG9JU09TdHJpbmcoKTsgcmV0dXJuIGQ7IH0KYXN5bmMgZnVuY3Rpb24gc3VibWl0V2l0aFF1ZXVlKGFjdGlv biwgZCwgb25Payl7IGNvbnN0IGJ0bj1xcygnYnV0dG9uW3R5cGU9c3VibWl0XScpOyBpZihidG4peyBidG4uZGlzYWJsZWQ9dHJ1 ZTsgYnRuLmlubmVySFRNTD1pYygnbG9hZGVyJykrJyBTVUJNSVRUSU5H4oCmJzsgaWNvbnMoKTsgfQogIGlmKCFuYXZpZ2F0b3Iu b25MaW5lKXsgU0dRLmFkZChhY3Rpb24sZCk7IG9uT2soe29mZmxpbmU6dHJ1ZSxraW5kOmQua2luZH0pOyByZXR1cm47IH0KICB0 cnl7IGNvbnN0IHI9YXdhaXQgY2FsbChhY3Rpb24sZCk7IG9uT2socik7IGlmKHIucmV3YXJkKSBjZWxlYnJhdGUoci5yZXdhcmQp OyB9Y2F0Y2goZSl7IGlmKGUubmV0d29yayl7IFNHUS5hZGQoYWN0aW9uLGQpOyBvbk9rKHtvZmZsaW5lOnRydWUsa2luZDpkLmtp bmR9KTsgfSBlbHNlIHsgdG9hc3QoZS5tZXNzYWdlLCdlcnInKTsgaWYoYnRuKXsgYnRuLmRpc2FibGVkPWZhbHNlOyBidG4uaW5u ZXJIVE1MPWljKCdzZW5kJykrJyBTVUJNSVQgUkVQT1JUJzsgaWNvbnMoKTsgfSB9IH0gfQpmdW5jdGlvbiBzdWNjZXNzSHRtbChy LCBxcil7IGlmKHIub2ZmbGluZSkgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzdWNjZXNzIj48ZGl2IGNsYXNzPSJiaWciIHN0eWxlPSJi YWNrZ3JvdW5kOiNFQTU4MEMiPiR7aWMoJ2Nsb3VkLXVwbG9hZCcsJ2xnJyl9PC9kaXY+PGgyPlNhdmVkIG9uIHRoaXMgZGV2aWNl PC9oMj48cCBjbGFzcz0ibXV0ZWQiPllvdSdyZSBvZmZsaW5lLiBZb3VyICR7ZXNjKHIua2luZCl9IHJlcG9ydCB3aWxsIHN5bmMg YXV0b21hdGljYWxseSB3aGVuIHRoZSBjb25uZWN0aW9uIHJldHVybnMuPC9wPjxzcGFuIGNsYXNzPSJjaGlwIGMtb3JhbmdlIj4k e2ljKCdjbG9jaycpfVBlbmRpbmcgc3luYzwvc3Bhbj4ke3FyPycnOmA8ZGl2IGNsYXNzPSJyb3cgbXQyIiBzdHlsZT0ianVzdGlm eS1jb250ZW50OmNlbnRlciI+PGJ1dHRvbiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJnbygnaG9tZScpIj5CYWNrIGhvbWU8L2J1dHRv bj48L2Rpdj5gfTwvZGl2PmA7CiAgcmV0dXJuIGA8ZGl2IGNsYXNzPSJzdWNjZXNzIj48ZGl2IGNsYXNzPSJiaWciPiR7aWMoJ2No ZWNrJywnbGcnKX08L2Rpdj48aDI+VGhhbmsgeW91LiBZb3UgaGVscGVkIG1ha2UgdGhpcyB3b3JrcGxhY2Ugc2FmZXIuPC9oMj48 ZGl2IGNsYXNzPSJyZWYiPiR7ZXNjKHIucmVmKX08L2Rpdj48cCBjbGFzcz0ibXV0ZWQiPiR7ci5yb3V0ZWRUbz9gUm91dGVkIHRv ICR7ci5yb3V0ZWRUb30gcmVzcG9uc2libGUgJHtyLnJvdXRlZFRvPT09MT8ncGVyc29uJzoncGVvcGxlJ30gKCR7ZXNjKHIubGV2 ZWx8fCcnKX0gcmlzaykuYDonWW91ciByZXBvcnQgaGFzIGJlZW4gcmVjb3JkZWQuJ308L3A+CiAgJHtyLnBlbmRpbmcmJnIucGVu ZGluZy5wb2ludHM/YDxkaXYgY2xhc3M9ImNoaXAgYy15ZWxsb3ciIHN0eWxlPSJmb250LXNpemU6MTNweDtwYWRkaW5nOjdweCAx MnB4Ij4ke2ljKCdzcGFya2xlcycpfSArJHtyLnBlbmRpbmcucG9pbnRzfSBTYWZldHkgUG9pbnRzICR7ZXNjKHIucGVuZGluZy5u b3RlKX08L2Rpdj5gOicnfSR7ci5yZXdhcmQmJnIucmV3YXJkLnBvaW50cz9gPGRpdiBjbGFzcz0iY2hpcCBjLXllbGxvdyIgc3R5 bGU9ImZvbnQtc2l6ZToxM3B4O3BhZGRpbmc6N3B4IDEycHgiPiR7aWMoJ3NwYXJrbGVzJyl9ICske3IucmV3YXJkLnBvaW50c30g U2FmZXR5IFBvaW50cyBlYXJuZWQ8L2Rpdj5gOicnfQogIDxkaXYgY2xhc3M9InJvdyBtdDIgdyIgc3R5bGU9Imp1c3RpZnktY29u dGVudDpjZW50ZXIiPiR7cXI/YDxidXR0b24gY2xhc3M9ImJ0biBwcmkgbGciIG9uY2xpY2s9InFyS2luZHMoKSI+UmVwb3J0IHNv bWV0aGluZyBlbHNlPC9idXR0b24+YDpgPGJ1dHRvbiBjbGFzcz0iYnRuIHByaSIgb25jbGljaz0iZ28oJ3JlcG9ydCcpIj5SZXBv cnQgYW5vdGhlcjwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biIgb25jbGljaz0iZ28oJyR7L15IQVovLnRlc3Qoci5yZWYpPydo YXphcmRzLyc6L15JTkMvLnRlc3Qoci5yZWYpPydpbmNpZGVudHMvJzonb2JzZXJ2YXRpb25zJ30key9eKEhBWnxJTkMpLy50ZXN0 KHIucmVmKT9lc2Moci5yZWYpOicnfScpIj5WaWV3IHJlcG9ydDwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biIgb25jbGljaz0i Z28oJ2hvbWUnKSI+QmFjayBob21lPC9idXR0b24+YH08L2Rpdj48L2Rpdj5gOyB9Cgo7CgovKiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgVklFV1MKICAgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCnZhciBWSUVXUyA9IHt9 OwpWSUVXUy5ob21lID0gKCkgPT4gY2FuKCdkYXNoYm9hcmQuZXhlYycpID8gdkV4ZWMoKSA6IGNhbignZGFzaGJvYXJkLmNvbW1h bmQnKSA/IHZDb21tYW5kKCkgOiB2TXkoKTsKVklFV1MubXkgPSAoKSA9PiB2TXkoKTsKLyogLS0tLS0tLS0tLSBFbXBsb3llZSBo b21lIC0tLS0tLS0tLS0gKi8KdmFyIFFBPVtbJ1JlcG9ydCBoYXphcmQnLCdjb25zdHJ1Y3Rpb24nLCcjRUE1ODBDJywncmVwb3J0 L1Vuc2FmZSBDb25kaXRpb24nXSxbJ1JlcG9ydCBuZWFyIG1pc3MnLCd0cmlhbmdsZS1hbGVydCcsJyNDQThBMDQnLCdyZXBvcnQv TmVhciBNaXNzJ10sWydSZXBvcnQgaW5jaWRlbnQnLCdzaXJlbicsJyNDODFFMUUnLCdyZXBvcnQvSW5jaWRlbnQnXSxbJ1NhZmV0 eSBvYnNlcnZhdGlvbicsJ2V5ZScsJyMxRDRFRDgnLCdyZXBvcnQvT2JzZXJ2YXRpb24nXSxbJ0pvaW4gdG9vbGJveCB0YWxrJywn dXNlcnMnLCcjMTU4MDNEJywndG9vbGJveCddLFsnVmlldyBzYWZldHkgYWxlcnRzJywnYmVsbC1yaW5nJywnIzExMTgyNycsJ2Fs ZXJ0cyddXTsKZnVuY3Rpb24gZ2lhbnRDYXJkKGx2KXsgY29uc3QgcGN0PWx2Lm5leHRNaW4+bHYubWluP01hdGgubWluKDEwMCwo bHYucG9pbnRzLWx2Lm1pbikvKGx2Lm5leHRNaW4tbHYubWluKSoxMDApOjEwMDsKICByZXR1cm4gYDxkaXYgY2xhc3M9ImdpYW50 IiBvbmNsaWNrPSJnbygncHJvZmlsZScpIiByb2xlPSJsaW5rIiB0YWJpbmRleD0iMCIgc3R5bGU9ImN1cnNvcjpwb2ludGVyIj48 ZGl2IGNsYXNzPSJsYmwiPk1ZIFNBRkVUWSBMRVZFTDwvZGl2PjxkaXYgY2xhc3M9Imx2bCI+TGV2ZWwgJHtsdi5udW19IOKAlCAk e2VzYyhsdi5uYW1lKX08L2Rpdj48ZGl2IGNsYXNzPSJwdHMiPjxzcGFuIGRhdGEtY291bnQ9IiR7bHYucG9pbnRzfSI+MDwvc3Bh bj4gPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojOUZCMENDIj5TYWZldHkgUG9pbnRz PC9zcGFuPjwvZGl2PgogICR7YmFyKHBjdCwneScpfTxkaXYgY2xhc3M9Im54Ij4ke2x2Lm5leHQ/YCR7bnVtKGx2LnBvaW50cyl9 IC8gJHtudW0obHYubmV4dE1pbil9IHBvaW50cyDCtyBOZXh0IGxldmVsOiA8YiBzdHlsZT0iY29sb3I6I2ZmZiI+4oCcJHtlc2Mo bHYubmV4dCl94oCdPC9iPmA6J1RvcCBsZXZlbCByZWFjaGVkIOKAlCB5b3UgYXJlIGEgdHJ1ZSBTYWZldHkgR2lhbnQuJ308L2Rp dj48L2Rpdj5gOyB9CnZhciBzdGF0PShsLHYsaSk9PmA8ZGl2IGNsYXNzPSJjYXJkIHN0YXQiPjxkaXYgY2xhc3M9InNpIj4ke2lj KGkpfTwvZGl2PjxkaXY+PGIgZGF0YS1jb3VudD0iJHtOdW1iZXIodil8fDB9Ij4wPC9iPjxzcGFuPiR7ZXNjKGwpfTwvc3Bhbj48 L2Rpdj48L2Rpdj5gOwphc3luYyBmdW5jdGlvbiB2TXkoKXsgY29uc3QgZD1hd2FpdCBsb2FkKCdnZXRIb21lJyk7IGlmKCFkKSBy ZXR1cm47IGNvbnN0IHU9U0cudXNlciwgaD1uZXcgRGF0ZSgpLmdldEhvdXJzKCksIGdyZWV0PWg8MTI/J0dvb2QgbW9ybmluZyc6 aDwxNz8nR29vZCBhZnRlcm5vb24nOidHb29kIGV2ZW5pbmcnOwogIG1haW4oYDxkaXYgY2xhc3M9ImdyZWV0Ij48ZGl2PjxoMT4k e2dyZWV0fSwgJHtlc2ModS5OYW1lLnNwbGl0KCcgJylbMF0pfSDwn5GLPC9oMT48cD5MZXQncyBtYWtlIHRvZGF5IGEgc2FmZXIg ZGF5LjwvcD48L2Rpdj4ke2Quc3RyZWFrP2A8ZGl2IGNsYXNzPSJzdHJlYWsiPiR7aWMoJ2ZsYW1lJyl9ICR7ZC5zdHJlYWt9LWRh eSBTYWZldHkgU3RyZWFrPC9kaXY+YDonJ308L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkIGcyMSI+PGRpdj4ke2dpYW50Q2FyZChk LmxldmVsKX08L2Rpdj48ZGl2IGNsYXNzPSJncmlkIGcyIiBzdHlsZT0iZ2FwOjEwcHgiPiR7c3RhdCgnUmVwb3J0cyBzdWJtaXR0 ZWQnLGQucmVwb3J0cywnZmlsZS1wbHVzLTInKX0ke3N0YXQoJ1RyYWluaW5nIGNvbXBsZXRlZCcsZC50cmFpbmluZ0RvbmUsJ2dy YWR1YXRpb24tY2FwJyl9JHtzdGF0KCdPcGVuIHRhc2tzJyxkLm9wZW5UYXNrcywnbGlzdC1jaGVja3MnKX0ke3N0YXQoJ1JlY29n bml0aW9ucycsZC5yZWNvZ25pdGlvbiwnYXdhcmQnKX0ke3N0YXQoJ0JhZGdlcycsZC5iYWRnZXMsJ21lZGFsJyl9JHtzdGF0KCdE YXkgc3RyZWFrJyxkLnN0cmVhaywnZmxhbWUnKX08L2Rpdj48L2Rpdj4KICA8aDMgY2xhc3M9Im10MiIgc3R5bGU9Im1hcmdpbi1i b3R0b206MTBweCI+UXVpY2sgYWN0aW9uczwvaDM+PGRpdiBjbGFzcz0icWEiPiR7UUEubWFwKHE9PmA8YnV0dG9uIHN0eWxlPSIt LXFjOiR7cVsyXX0iIG9uY2xpY2s9ImdvKCcke3FbM119JykiPjxzcGFuIGNsYXNzPSJxaSIgc3R5bGU9ImJhY2tncm91bmQ6JHtx WzJdfTE3O2NvbG9yOiR7cVsyXX0iPiR7aWMocVsxXSl9PC9zcGFuPjxiPiR7cVswXX08L2I+PC9idXR0b24+YCkuam9pbignJyl9 PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMyBtdDIiPjxkaXYgY2xhc3M9InRpcCI+PGRpdiBjbGFzcz0iayI+JHtpYygnbGln aHRidWxiJywnc20nKX1UT0RBWSdTIFNBRkVUWSBUSVA8L2Rpdj48cD4ke2VzYyhkLnRpcCl9PC9wPjwvZGl2PgogIDxkaXYgY2xh c3M9InRpcCIgc3R5bGU9ImN1cnNvcjpwb2ludGVyIiBvbmNsaWNrPSJ0aGlzLnF1ZXJ5U2VsZWN0b3IoJy5hbnMnKS5jbGFzc0xp c3QucmVtb3ZlKCdoaWRlJyk7dGhpcy5xdWVyeVNlbGVjdG9yKCcudGFwJykucmVtb3ZlKCkiPjxkaXYgY2xhc3M9ImsiPiR7aWMo J3NtaWxlJywnc20nKX1UT0RBWSdTIFNBRkVUWSBKT0tFPC9kaXY+PHA+JHtlc2MoZC5qb2tlLnEpfTwvcD48cCBjbGFzcz0iYW5z IGhpZGUiIHN0eWxlPSJtYXJnaW4tdG9wOjhweDtmb250LXdlaWdodDo3MDAiPiR7ZXNjKGQuam9rZS5hKX08L3A+PGRpdiBjbGFz cz0idGFwIHNtYWxsIG11dGVkIG10IiBzdHlsZT0ibWFyZ2luLXRvcDo4cHgiPlRhcCBmb3IgdGhlIHB1bmNobGluZTwvZGl2Pjwv ZGl2PgogIDxkaXYgY2xhc3M9InRpcCI+PGRpdiBjbGFzcz0iayI+JHtpYygnYm9vay1vcGVuJywnc20nKX1TQUZFVFkgRkFDVDwv ZGl2PjxwPiR7ZXNjKGQuZmFjdCl9PC9wPjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9InF1b3RlIG10Ij4ke2ljKCdxdW90ZScs J2xnJyl9PHNwYW4+JHtlc2MoZC5xdW90ZSl9PC9zcGFuPjwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWQgZzIgbXQyIj48ZGl2IGNs YXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz4ke2ljKCd0YXJnZXQnLCdzbScpfSBDaGFsbGVuZ2VzPC9oMz48YnV0 dG9uIGNsYXNzPSJidG4gc20gZ2hvc3QiIG9uY2xpY2s9ImdvKCdjYW1wYWlnbnMnKSI+QWxsIGNhbXBhaWduczwvYnV0dG9uPjwv ZGl2PjxkaXY+JHtkLmNoYWxsZW5nZXMubGVuZ3RoP2QuY2hhbGxlbmdlcy5tYXAoY2hhbGxlbmdlUm93KS5qb2luKCcnKTplbXB0 eSgnTm8gYWN0aXZlIGNoYWxsZW5nZXMnLCdDaGVjayBiYWNrIG5leHQgd2Vlay4nLCdmbGFnJyl9PC9kaXY+PC9kaXY+CiAgPGRp diBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+JHtpYygnbGlzdC10b2RvJywnc20nKX0gTXkgdGFza3M8L2gz PjxidXR0b24gY2xhc3M9ImJ0biBzbSBnaG9zdCIgb25jbGljaz0iZ28oJ2FjdGlvbnMnKSI+Q29ycmVjdGl2ZSBhY3Rpb25zPC9i dXR0b24+PC9kaXY+PGRpdj4ke2QudGFza3MubGVuZ3RoP2QudGFza3MubWFwKHQ9PmA8ZGl2IGNsYXNzPSJsaXN0LWkiIG9uY2xp Y2s9ImdvKCcke2VzYyh0LmxpbmspfScpIj48c3BhbiBjbGFzcz0iYXYgc20iIHN0eWxlPSJiYWNrZ3JvdW5kOiR7dC5vdmVyZHVl Pyd2YXIoLS1yZWQpJzondmFyKC0taW5rKSd9Ij4ke2ljKHthY3Rpb246J3dyZW5jaCcsYWxlcnQ6J2JlbGwtcmluZycsdHJhaW5p bmc6J2dyYWR1YXRpb24tY2FwJyx0b29sYm94Oid1c2Vycyd9W3QudHlwZV0sJ3NtJyl9PC9zcGFuPjxkaXYgY2xhc3M9Imdyb3ci PjxkaXYgY2xhc3M9ImIgc21hbGwiPiR7ZXNjKHQudGl0bGUpfTwvZGl2PjxkaXYgY2xhc3M9InRpbnkgbXV0ZWQiPiR7dC5kdWU/ J0R1ZSAnK2ZtdEQodC5kdWUpOicnfTwvZGl2PjwvZGl2PiR7Y2hpcCh0Lm92ZXJkdWU/J092ZXJkdWUnOnQuc3RhdHVzKX08L2Rp dj5gKS5qb2luKCcnKTplbXB0eSgnTm8gb3BlbiB0YXNrcycsJ05vdGhpbmcgYXNzaWduZWQgdG8geW91IHJpZ2h0IG5vdy4gS2Vl cCB3YXRjaGluZyBmb3Igcmlza3MuJyl9PC9kaXY+PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iY2FyZCBtdCI+PGRpdiBjbGFz cz0iY2FyZC1oIj48aDM+JHtpYygnbWVzc2FnZXMtc3F1YXJlJywnc20nKX0gU2FmZXR5IGN1bHR1cmU8L2gzPjxidXR0b24gY2xh c3M9ImJ0biBzbSBnaG9zdCIgb25jbGljaz0iZ28oJ2ZlZWQnKSI+T3BlbiBmZWVkPC9idXR0b24+PC9kaXY+JHtkLmZlZWQubWFw KHBvc3RIdG1sKS5qb2luKCcnKXx8ZW1wdHkoJ1F1aWV0IHNvIGZhcicsJ0JlIHRoZSBmaXJzdCB0byBzaGFyZSBhIGdvb2QgY2F0 Y2guJyl9PC9kaXY+YCk7IH0KZnVuY3Rpb24gY2hhbGxlbmdlUm93KGMpeyBjb25zdCBwPU1hdGgubWluKDEwMCxjLnByb2dyZXNz L01hdGgubWF4KDEsYy5UYXJnZXQpKjEwMCksIGRvbmU9Yy5wcm9ncmVzcz49Yy5UYXJnZXQ7CiAgcmV0dXJuIGA8ZGl2IGNsYXNz PSJsaXN0LWkiIHN0eWxlPSJjdXJzb3I6ZGVmYXVsdCI+PHNwYW4gY2xhc3M9ImF2IHNtIiBzdHlsZT0iYmFja2dyb3VuZDoke2Mu Y2xhaW1lZD8ndmFyKC0tZ3JlZW4pJzpkb25lPyd2YXIoLS15KSc6J3ZhcigtLWluayknfTtjb2xvcjoke2RvbmUmJiFjLmNsYWlt ZWQ/JyMxMTEnOicjZmZmJ30iPiR7aWMoYy5jbGFpbWVkPydjaGVjayc6J3RhcmdldCcsJ3NtJyl9PC9zcGFuPjxkaXYgY2xhc3M9 Imdyb3ciPjxkaXYgY2xhc3M9InJvdyBiZXR3ZWVuIj48YiBjbGFzcz0ic21hbGwiPiR7ZXNjKGMuVGl0bGUpfTwvYj48c3BhbiBj bGFzcz0idGlueSBtdXRlZCI+JHtNYXRoLm1pbihjLnByb2dyZXNzLGMuVGFyZ2V0KX0vJHtjLlRhcmdldH0gwrcgKyR7Yy5Qb2lu dHN9IHB0czwvc3Bhbj48L2Rpdj4ke2JhcihwLGRvbmU/J2cnOid5Jyl9PGRpdiBjbGFzcz0idGlueSBtdXRlZCIgc3R5bGU9Im1h cmdpbi10b3A6NHB4Ij4ke2MuUGVyaW9kPT09J1dFRUsnPydSZXNldHMgZXZlcnkgTW9uZGF5JzonUmVzZXRzIG1vbnRobHknfTwv ZGl2PjwvZGl2PiR7Yy5jbGFpbWVkP2NoaXAoJ0NvbXBsZXRlZCcpOmRvbmU/YDxidXR0b24gY2xhc3M9ImJ0biBzbSBwcmkiIG9u Y2xpY2s9ImNsYWltKCcke2MuSWR9JykiPkNsYWltPC9idXR0b24+YDonJ308L2Rpdj5gOyB9CmFzeW5jIGZ1bmN0aW9uIGNsYWlt KGlkKXsgdHJ5eyBjb25zdCByPWF3YWl0IGNhbGwoJ2NsYWltQ2hhbGxlbmdlJyx7aWR9KTsgY2VsZWJyYXRlKHIucmV3YXJkKTsg Y29uZmV0dGkoKTsgcmVuZGVyKCk7IH1jYXRjaChlKXsgdG9hc3QoZS5tZXNzYWdlLCdlcnInKTsgfSB9CgovKiAtLS0tLS0tLS0t IENvbW1hbmQgY2VudGVyIC0tLS0tLS0tLS0gKi8KYXN5bmMgZnVuY3Rpb24gdkNvbW1hbmQoKXsgY29uc3QgZD1hd2FpdCBsb2Fk KCdnZXRDb21tYW5kJyk7IGlmKCFkKSByZXR1cm47IGNvbnN0IGg9bmV3IERhdGUoKS5nZXRIb3VycygpOwogIG1haW4oYCR7cGFn ZUgoJ1NhZmV0eSBDb21tYW5kIENlbnRlcicsIGAke2g8MTI/J0dvb2QgbW9ybmluZyc6aDwxNz8nR29vZCBhZnRlcm5vb24nOidH b29kIGV2ZW5pbmcnfSwgJHtTRy51c2VyLk5hbWUuc3BsaXQoJyAnKVswXX0uIEhlcmUncyB3aGF0IG5lZWRzIGF0dGVudGlvbiAk e1NHLnNjb3BlPT09J29yZyc/J2Fjcm9zcyBhbGwgc2l0ZXMnOidhdCAnK3NpdGVOKFNHLnVzZXIuU2l0ZUlkKX0uYCwgYCR7YWlP bignYXNrJyk/YDxidXR0b24gY2xhc3M9ImJ0biBhaSIgb25jbGljaz0iZ28oJ2FzaycpIj4ke2ljKCdzcGFya2xlcycsJ3NtJyl9 IEFzayBTQUFmZWx5IEFJPC9idXR0b24+YDonJ308YnV0dG9uIGNsYXNzPSJidG4iIG9uY2xpY2s9ImdvKCdteScpIj4ke2ljKCd1 c2VyLXJvdW5kLWNoZWNrJywnc20nKX0gTXkgU2FmZXR5PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIHByaSIgb25jbGljaz0i Z28oJ3JlcG9ydCcpIj4ke2ljKCdtZWdhcGhvbmUnLCdzbScpfSBSZXBvcnQ8L2J1dHRvbj5gKX0KICAke2QuYWxlcnRzLm1hcChh PT5gPGRpdiBjbGFzcz0iYmFubmVyICR7YS5TZXZlcml0eT09PSdDUklUSUNBTCc/J2NyaXQnOid3YXJuJ30iPiR7aWMoJ3NpcmVu Jyl9PGRpdiBjbGFzcz0iZ3JvdyI+PGI+JHtlc2MoYS5UeXBlKX06ICR7ZXNjKGEuVGl0bGUpfTwvYj48ZGl2IGNsYXNzPSJzbWFs bCI+JHthLmFja3N9IG9mICR7YS50YXJnZXR9IGFja25vd2xlZGdlZDwvZGl2PjxkaXYgc3R5bGU9Im1heC13aWR0aDozMjBweDtt YXJnaW4tdG9wOjZweCI+JHtiYXIoYS50YXJnZXQ/YS5hY2tzL2EudGFyZ2V0KjEwMDowLCdyJyl9PC9kaXY+PC9kaXY+PGJ1dHRv biBjbGFzcz0iYnRuIHNtIiBvbmNsaWNrPSJnbygnYWxlcnRzJykiPlRyYWNrPC9idXR0b24+PC9kaXY+YCkuam9pbignJyl9CiAg PGRpdiBjbGFzcz0iZ3JpZCBnNCI+JHtkLmtwaXMubWFwKGtwaSkuam9pbignJyl9PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBn MjEgbXQiPjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPiR7aWMoJ3NpcmVuJywnc20nKX0gQ3JpdGlj YWwgJiBoaWdoLXJpc2sgaXRlbXM8L2gzPjxzcGFuIGNsYXNzPSJjaGlwIGMtcmVkIj4ke2ljKCdyYWRpbycpfUxpdmU8L3NwYW4+ PC9kaXY+PGRpdj4ke2QuY3JpdGljYWwubGVuZ3RoP2QuY3JpdGljYWwubWFwKGM9PmA8ZGl2IGNsYXNzPSJsaXN0LWkiIG9uY2xp Y2s9ImdvKCcke2MubGlua30nKSI+JHtyaXNrQ2hpcChjLmxldmVsKX08ZGl2IGNsYXNzPSJncm93Ij48ZGl2IGNsYXNzPSJiIHNt YWxsIj4ke2VzYyhjLnRpdGxlKX08L2Rpdj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj48c3BhbiBjbGFzcz0ibW9ubyI+JHtlc2Mo Yy5pZCl9PC9zcGFuPiDCtyAke2VzYyhjLnR5cGUpfSDCtyAke2VzYyhjLnNpdGUpfSDCtyAke2FnbyhjLmF0KX08L2Rpdj48L2Rp dj4ke2NoaXAoYy5zdGF0dXMpfTwvZGl2PmApLmpvaW4oJycpOmVtcHR5KCdObyBjcml0aWNhbCBpdGVtcycsJ05vIGNyaXRpY2Fs IGluY2lkZW50cyDigJQgbGV0XCdzIGtlZXAgaXQgdGhhdCB3YXkuJyl9PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iY2FyZCI+ PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+JHtpYygnYWN0aXZpdHknLCdzbScpfSBMaXZlIGFjdGl2aXR5PC9oMz48L2Rpdj48ZGl2 IHN0eWxlPSJtYXgtaGVpZ2h0OjM4MHB4O292ZXJmbG93OmF1dG8iPiR7ZC5hY3Rpdml0eS5tYXAoYT0+YDxkaXYgY2xhc3M9Imxp c3QtaSIgb25jbGljaz0iZ29FbnRpdHkoJyR7ZXNjKGEuRW50aXR5KX0nLCcke2VzYyhhLkVudGl0eUlkKX0nKSI+JHthdihhLlVz ZXJOYW1lLCdzbScpfTxkaXYgY2xhc3M9Imdyb3ciPjxkaXYgY2xhc3M9InNtYWxsIj48Yj4ke2VzYyhhLlVzZXJOYW1lKX08L2I+ IMK3ICR7ZXNjKGEuQWN0aW9uKX08L2Rpdj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj48c3BhbiBjbGFzcz0ibW9ubyI+JHtlc2Mo YS5FbnRpdHlJZCl9PC9zcGFuPiDCtyAke2FnbyhhLkNyZWF0ZWRBdCl9PC9kaXY+PC9kaXY+PC9kaXY+YCkuam9pbignJyl9PC9k aXY+PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMiBtdCI+PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2Fy ZC1oIj48aDM+UmVwb3J0cyDigJQgbGFzdCA4IHdlZWtzPC9oMz48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkLWIiPiR7Y2hhcnRCb3go J2NXZWVrbHknKX08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5PcGVuIGNvcnJl Y3RpdmUgYWN0aW9ucyBieSBkZXBhcnRtZW50PC9oMz48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkLWIiPiR7Y2hhcnRCb3goJ2NEZXB0 Jyl9PC9kaXY+PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMiBtdCI+PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFz cz0iY2FyZC1oIj48aDM+JHtpYygnYWxhcm0tY2xvY2snLCdzbScpfSBPdmVyZHVlIGFjdGlvbnM8L2gzPjxidXR0b24gY2xhc3M9 ImJ0biBzbSBnaG9zdCIgb25jbGljaz0iZ28oJ2FjdGlvbnMnKSI+QWxsIGFjdGlvbnM8L2J1dHRvbj48L2Rpdj4ke2Qub3ZlcmR1 ZS5sZW5ndGg/ZC5vdmVyZHVlLm1hcChhPT5gPGRpdiBjbGFzcz0ibGlzdC1pIiBvbmNsaWNrPSJvcGVuQWN0aW9uKCcke2EuSWR9 JykiPjxzcGFuIGNsYXNzPSJtb25vIHNtYWxsIj4ke2VzYyhhLklkKX08L3NwYW4+PGRpdiBjbGFzcz0iZ3JvdyBzbWFsbCI+PGI+ JHtlc2MoYS5UaXRsZSl9PC9iPjxkaXYgY2xhc3M9InRpbnkgbXV0ZWQiPiR7ZXNjKHVOYW1lKGEuT3duZXJJZCkpfSDCtyBkdWUg JHtmbXREKGEuRHVlRGF0ZSl9PC9kaXY+PC9kaXY+JHtjaGlwKCdPdmVyZHVlJyl9PC9kaXY+YCkuam9pbignJyk6ZW1wdHkoJ05v IG92ZXJkdWUgYWN0aW9ucycsJ0V2ZXJ5IGFjdGlvbiBpcyBvbiBzY2hlZHVsZS4nKX08L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXJk Ij48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz4ke2ljKCdzY2FuLXNlYXJjaCcsJ3NtJyl9IE9wZW4gaW52ZXN0aWdhdGlvbnM8L2gz PjwvZGl2PiR7ZC5pbnZlc3RpZ2F0aW9ucy5sZW5ndGg/ZC5pbnZlc3RpZ2F0aW9ucy5tYXAoaT0+YDxkaXYgY2xhc3M9Imxpc3Qt aSIgb25jbGljaz0iZ28oJ2luY2lkZW50cy8ke2kuSWR9JykiPjxzcGFuIGNsYXNzPSJtb25vIHNtYWxsIj4ke2VzYyhpLklkKX08 L3NwYW4+PGRpdiBjbGFzcz0iZ3JvdyBzbWFsbCI+PGI+JHtlc2MoaS5UaXRsZSl9PC9iPjxkaXYgY2xhc3M9InRpbnkgbXV0ZWQi PkludmVzdGlnYXRvcjogJHtlc2ModU5hbWUoaS5JbnZlc3RpZ2F0b3JJZCkpfTwvZGl2PjwvZGl2PiR7Y2hpcChpLlN0YXR1cyl9 PC9kaXY+YCkuam9pbignJyk6ZW1wdHkoJ05vIG9wZW4gaW52ZXN0aWdhdGlvbnMnLCcnKX08L2Rpdj48L2Rpdj5gKTsKICBjaGFy dCgnY1dlZWtseScsJ2JhcicsZC53ZWVrbHkubGFiZWxzLFt7bGFiZWw6J0hhemFyZHMnLGRhdGE6ZC53ZWVrbHkuaGF6YXJkc30s e2xhYmVsOidOZWFyIG1pc3NlcycsZGF0YTpkLndlZWtseS5uZWFyTWlzc30se2xhYmVsOidJbmNpZGVudHMnLGRhdGE6ZC53ZWVr bHkuaW5jaWRlbnRzLGNvbG9yOicjQzgxRTFFJ30se2xhYmVsOidPYnNlcnZhdGlvbnMnLGRhdGE6ZC53ZWVrbHkub2JzZXJ2YXRp b25zLGNvbG9yOicjMUQ0RUQ4J31dLHtzdGFja2VkOnRydWV9KTsKICBjaGFydCgnY0RlcHQnLCdiYXInLGQuYWN0aW9uc0J5RGVw dC5tYXAoeD0+eC5uYW1lKSxbe2xhYmVsOidPcGVuJyxkYXRhOmQuYWN0aW9uc0J5RGVwdC5tYXAoeD0+eC5vcGVuKX0se2xhYmVs OidPdmVyZHVlJyxkYXRhOmQuYWN0aW9uc0J5RGVwdC5tYXAoeD0+eC5vdmVyZHVlKSxjb2xvcjonI0M4MUUxRSd9XSx7aG9yaXpv bnRhbDp0cnVlfSk7IH0KZnVuY3Rpb24gZ29FbnRpdHkoZSwgaWQpeyBjb25zdCBtPXtIYXphcmQ6J2hhemFyZHMvJyxJbmNpZGVu dDonaW5jaWRlbnRzLycsQWN0aW9uOidhY3Rpb25zLycsVHJhZmZpY0Nhc2U6J3RyYWZmaWMvY2FzZS8nLFRvb2xib3g6J3Rvb2xi b3gvJyxJbnNwZWN0aW9uOidpbnNwZWN0aW9ucy8nLEF1ZGl0OidhdWRpdHMvJyxPYnNlcnZhdGlvbjonb2JzZXJ2YXRpb25zJ307 IGlmKG1bZV0pIGdvKG1bZV0rKGU9PT0nT2JzZXJ2YXRpb24nPycnOmlkKSk7IH0KCi8qIC0tLS0tLS0tLS0gUmVwb3J0IC0tLS0t LS0tLS0gKi8KVklFV1MucmVwb3J0ID0gKCkgPT4geyBjb25zdCBraW5kPVNHLnBhcmFtc1swXT9kZWNvZGVVUklDb21wb25lbnQo U0cucGFyYW1zWzBdKTonJzsgaWYoIWtpbmQpewogIG1haW4oYCR7cGFnZUgoJ1JlcG9ydCBhIHNhZmV0eSBpc3N1ZScsJ1BpY2sg d2hhdCB5b3Ugc2F3LiBNb3N0IHJlcG9ydHMgdGFrZSB1bmRlciA2MCBzZWNvbmRzLicpfTxkaXYgY2xhc3M9ImtpbmRzIj4ke0tJ TkRTLm1hcChrPT5gPGJ1dHRvbiBjbGFzcz0ia2luZCIgb25jbGljaz0iZ28oJ3JlcG9ydC8ke2VuY29kZVVSSUNvbXBvbmVudChr LmspfScpIj48c3BhbiBjbGFzcz0icWkiIHN0eWxlPSJiYWNrZ3JvdW5kOiR7ay5jfTE3O2NvbG9yOiR7ay5jfSI+JHtpYyhrLmkp fTwvc3Bhbj48Yj4ke2VzYyhrLmspfTwvYj48c3Bhbj4ke2VzYyhrLmQpfTwvc3Bhbj48L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rp dj4KICA8ZGl2IGNsYXNzPSJjYXJkIHAgbXQyIHJvdyI+JHtpYygncXItY29kZScsJ2xnJyl9PGRpdiBjbGFzcz0iZ3JvdyI+PGI+ VGlwOiBzY2FuIHRoZSBhcmVhIFFSIGNvZGU8L2I+PGRpdiBjbGFzcz0ic21hbGwgbXV0ZWQiPlFSIHBvc3RlcnMgb24gc2l0ZSBw cmUtZmlsbCB0aGUgbG9jYXRpb24sIGRlcGFydG1lbnQgYW5kIGFzc2V0IHNvIHlvdSBjYW4gcmVwb3J0IGV2ZW4gZmFzdGVyIOKA lCBubyBzaWduLWluIG5lZWRlZC48L2Rpdj48L2Rpdj48L2Rpdj5gKTsgcmV0dXJuOyB9CiAgY29uc3Qgaz1LSU5EUy5maW5kKHg9 Pnguaz09PWtpbmQpfHxLSU5EU1swXTsKICBtYWluKGAke2NydW1iKCdSZXBvcnQnLCdyZXBvcnQnKX08ZGl2IGNsYXNzPSJyZm9y bSI+PGRpdiBjbGFzcz0icm93IG1iIj48c3BhbiBjbGFzcz0icWkiIHN0eWxlPSJ3aWR0aDo0OHB4O2hlaWdodDo0OHB4O2JvcmRl ci1yYWRpdXM6MTJweDtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6JHtrLmN9MTc7Y29sb3I6JHtr LmN9Ij4ke2ljKGsuaSwnbGcnKX08L3NwYW4+PGRpdj48aDE+JHtlc2Moa2luZCl9PC9oMT48ZGl2IGNsYXNzPSJtdXRlZCI+JHtl c2Moay5kKX08L2Rpdj48L2Rpdj48L2Rpdj48Zm9ybSBpZD0icmYiIGNsYXNzPSJjYXJkIHAiIG5vdmFsaWRhdGU+JHtyZXBvcnRG aWVsZHMoa2luZCl9PGJ1dHRvbiBjbGFzcz0iYnRuIHByaSBibG9jayBzdWJtaXRiaWciIHR5cGU9InN1Ym1pdCI+JHtpYygnc2Vu ZCcpfSBTVUJNSVQgUkVQT1JUPC9idXR0b24+PC9mb3JtPjwvZGl2PmApOwogIGNvbnN0IGY9cXMoJyNyZicpOyBhZnRlclJlcG9y dEZvcm0oZik7CiAgZi5vbnN1Ym1pdD1hc3luYyBlPT57IGUucHJldmVudERlZmF1bHQoKTsgY29uc3QgZD1jb2xsZWN0UmVwb3J0 KGYsa2luZCk7IGlmKCFkKSByZXR1cm47IGF3YWl0IHN1Ym1pdFdpdGhRdWV1ZSgnc3VibWl0UmVwb3J0JyxkLHI9PnsgbWFpbihz dWNjZXNzSHRtbChyKSk7IGlmKCFyLm9mZmxpbmUpIGNvbmZldHRpKCk7IH0pOyB9OyB9OwoKLyogLS0tLS0tLS0tLSBIYXphcmRz IC0tLS0tLS0tLS0gKi8KVklFV1MuaGF6YXJkcyA9IGFzeW5jICgpID0+IHsgaWYoU0cucGFyYW1zWzBdKSByZXR1cm4gdkhhemFy ZChTRy5wYXJhbXNbMF0pOyBjb25zdCByb3dzPWF3YWl0IGxvYWQoJ2xpc3RIYXphcmRzJyk7IGlmKCFyb3dzKSByZXR1cm47IGNv bnN0IHQ9dG9kYXkoKTsKICBjb25zdCBvcGVuPXJvd3MuZmlsdGVyKHI9PnIuU3RhdHVzIT09J0Nsb3NlZCcpLCBjcml0PW9wZW4u ZmlsdGVyKHI9PnIuUmlza0xldmVsPT09J0NSSVRJQ0FMJyksIHRyaT1yb3dzLmZpbHRlcihyPT5yLlN0YXR1cz09PSdSZXBvcnRl ZCcpOwogIG1haW4oYCR7cGFnZUgoJ0hhemFyZHMnLCdJZGVudGlmeSwgYXNzZXNzIGFuZCBjb250cm9sIHdvcmtwbGFjZSBoYXph cmRzLicsIGAke2NhbigncmVwb3J0LmNyZWF0ZScpP2A8YnV0dG9uIGNsYXNzPSJidG4gcHJpIiBvbmNsaWNrPSJnbygncmVwb3J0 L1Vuc2FmZSBDb25kaXRpb24nKSI+JHtpYygncGx1cycsJ3NtJyl9IFJlcG9ydCBoYXphcmQ8L2J1dHRvbj5gOicnfWApfQogIDxk aXYgY2xhc3M9ImdyaWQgZzQgbWIiPiR7a3BpKHtsYWJlbDonT3BlbiBoYXphcmRzJyx2YWx1ZTpvcGVuLmxlbmd0aCxpbnNpZ2h0 OnRyaS5sZW5ndGgrJyBhd2FpdGluZyB0cmlhZ2UnLHRvbmU6dHJpLmxlbmd0aD8nb3JhbmdlJzonZ3JlZW4nLGljb246J2NvbnN0 cnVjdGlvbid9KX0ke2twaSh7bGFiZWw6J0NyaXRpY2FsJyx2YWx1ZTpjcml0Lmxlbmd0aCxpbnNpZ2h0OmNyaXQuZmlsdGVyKGlz T3ZlcikubGVuZ3RoKycgb3ZlcmR1ZScsdG9uZTpjcml0Lmxlbmd0aD8ncmVkJzonZ3JlZW4nLGljb246J3NpcmVuJ30pfSR7a3Bp KHtsYWJlbDonQ2xvc2VkIChhbGwgdGltZSknLHZhbHVlOnJvd3MubGVuZ3RoLW9wZW4ubGVuZ3RoLGluc2lnaHQ6TWF0aC5yb3Vu ZCgocm93cy5sZW5ndGgtb3Blbi5sZW5ndGgpL01hdGgubWF4KDEscm93cy5sZW5ndGgpKjEwMCkrJyUgY2xvc3VyZSByYXRlJyx0 b25lOidncmVlbicsaWNvbjonY2lyY2xlLWNoZWNrJ30pfSR7a3BpKHtsYWJlbDonUmVwb3J0ZWQgdGhpcyBtb250aCcsdmFsdWU6 cm93cy5maWx0ZXIocj0+U3RyaW5nKHIuQ3JlYXRlZEF0KS5zbGljZSgwLDcpPT09dC5zbGljZSgwLDcpKS5sZW5ndGgsaW5zaWdo dDonRXZlcnkgcmVwb3J0IGNvdW50cycsdG9uZTonYmx1ZScsaWNvbjonY2FsZW5kYXInfSl9PC9kaXY+CiAgPGRpdiBjbGFzcz0i Y2FyZCI+JHtTR1QuaHRtbCgnaGF6Jyxbe2s6J0lkJyxsYWJlbDonSGF6YXJkIElEJyxyZW5kZXI6cj0+YDxzcGFuIGNsYXNzPSJt b25vIGIiPiR7ZXNjKHIuSWQpfTwvc3Bhbj5gfSx7azonQ3JlYXRlZEF0JyxsYWJlbDonUmVwb3J0ZWQnLGdldDpyPT5mbXREKHIu Q3JlYXRlZEF0KSxzb3J0djpyPT5yLkNyZWF0ZWRBdH0se2s6J1RpdGxlJyxsYWJlbDonSGF6YXJkJyxyZW5kZXI6cj0+YDxiPiR7 ZXNjKHIuVGl0bGUpfTwvYj5gfSx7azonVHlwZScsbGFiZWw6J1R5cGUnLGZpbHRlcjp0cnVlfSx7azonU2l0ZUlkJyxsYWJlbDon U2l0ZScsZ2V0OnI9PnNpdGVOKHIuU2l0ZUlkKSxmaWx0ZXI6dHJ1ZX0se2s6J0xvY2F0aW9uJyxsYWJlbDonTG9jYXRpb24nfSx7 azonRGVwdElkJyxsYWJlbDonRGVwYXJ0bWVudCcsZ2V0OnI9PmRlcHROKHIuRGVwdElkKSxmaWx0ZXI6dHJ1ZX0se2s6J1Jpc2tM ZXZlbCcsbGFiZWw6J1Jpc2snLGZpbHRlcjp0cnVlLHJlbmRlcjpyPT5yaXNrQ2hpcChyLlJpc2tMZXZlbCksc29ydHY6cj0+TnVt YmVyKHIuUmlza1Njb3JlKX0se2s6J093bmVySWQnLGxhYmVsOidPd25lcicsZ2V0OnI9PnIuT3duZXJJZD91TmFtZShyLk93bmVy SWQpOifigJQnfSx7azonU3RhdHVzJyxsYWJlbDonU3RhdHVzJyxmaWx0ZXI6dHJ1ZSxnZXQ6c3RhdHVzT2YscmVuZGVyOnI9PmNo aXAoc3RhdHVzT2YocikpfSx7azonRHVlRGF0ZScsbGFiZWw6J0R1ZScsZ2V0OnI9PnIuRHVlRGF0ZT9mbXREKHIuRHVlRGF0ZSk6 J+KAlCcsc29ydHY6cj0+ci5EdWVEYXRlfHwnOSd9LHtrOidSZXBvcnRlck5hbWUnLGxhYmVsOidSZXBvcnRlcid9XSxyb3dzLHtu YW1lOidoYXphcmRzJyxvblJvdzpyPT5nbygnaGF6YXJkcy8nK3IuSWQpLHJvd0NsYXNzOnI9PmlzT3ZlcihyKT8nb3Zlcic6Jycs ZW1wdHlUaXRsZTonTm8gaGF6YXJkcycsZW1wdHlTdWI6J05vIG9wZW4gaGF6YXJkcy4gR3JlYXQgd29yay4gS2VlcCB3YXRjaGlu ZyBmb3Igcmlza3MuJ30pfTwvZGl2PmApOyBTR1QubW91bnQoKTsgfTsKZnVuY3Rpb24gbWluaU1hdHJpeChMLFMyKXsgY29uc3Qg cm09U0cuY2ZnLnJpc2tNYXRyaXg7IGxldCBoPSc8ZGl2IGNsYXNzPSJteCIgc3R5bGU9Im1heC13aWR0aDozNjBweCI+JzsgZm9y KGxldCBzPTU7cz49MTtzLS0peyBoKz1gPGRpdiBjbGFzcz0iYXggdGlueSI+JHtlc2Mocm0uc2V2ZXJpdHlbcy0xXSl9PC9kaXY+ YDsgZm9yKGxldCBsPTE7bDw9NTtsKyspeyBjb25zdCB2PWwqczsgaCs9YDxkaXYgY2xhc3M9ImNlbGwgbHYtJHtiYW5kKHYpfSAk e2w9PUwmJnM9PVMyPydzZWwnOicnfSIgc3R5bGU9ImZvbnQtc2l6ZToxMnB4Ij4ke2w9PUwmJnM9PVMyPyfil48nOicnfTxzbWFs bD4ke3Z9PC9zbWFsbD48L2Rpdj5gOyB9IH0gaCs9JzxkaXY+PC9kaXY+JytybS5saWtlbGlob29kLm1hcCh4PT5gPGRpdiBjbGFz cz0iYXhiIHRpbnkiPiR7ZXNjKHgpfTwvZGl2PmApLmpvaW4oJycpKyc8L2Rpdj4nOyByZXR1cm4gaDsgfQpmdW5jdGlvbiBiYW5k KHYpeyBjb25zdCBiPVNHLmNmZy5yaXNrTWF0cml4LmJhbmRzLmZpbmQoej0+djw9TnVtYmVyKHoubWF4KSk7IHJldHVybiBiP2Iu bGV2ZWw6J0NSSVRJQ0FMJzsgfQp2YXIgcGhvdG9zSHRtbCA9IGlkcyA9PiB7IGlmKHR5cGVvZiBpZHM9PT0ic3RyaW5nIil7IHRy eXsgaWRzPUpTT04ucGFyc2UoaWRzKTsgfWNhdGNoKGUpeyBpZHM9W107IH0gfSByZXR1cm4gKGlkcyYmaWRzLmxlbmd0aCk/YDxk aXYgY2xhc3M9InBob3RvcyI+JHtpZHMubWFwKGlkPT5gPGEgaHJlZj0iaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2ZpbGUvZC8k e2VzYyhpZCl9L3ZpZXciIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIj48aW1nIHNyYz0iaHR0cHM6Ly9kcml2ZS5nb29n bGUuY29tL3RodW1ibmFpbD9pZD0ke2VzYyhpZCl9JnN6PXc2MDAiIGFsdD0iRXZpZGVuY2UgcGhvdG8iIGxvYWRpbmc9Imxhenki PjwvYT5gKS5qb2luKCcnKX08L2Rpdj5gOic8ZGl2IGNsYXNzPSJzbWFsbCBtdXRlZCI+Tm8gcGhvdG9zIGF0dGFjaGVkLjwvZGl2 Pic7IH07CnZhciBhdWRpdEh0bWwgPSByb3dzID0+IHJvd3MubGVuZ3RoP2A8ZGl2IGNsYXNzPSJ0bCI+JHtyb3dzLm1hcChhPT5g PGRpdiBjbGFzcz0idGwtaSI+PGRpdiBjbGFzcz0idCI+JHtmbXREVChhLkNyZWF0ZWRBdCl9PC9kaXY+PGRpdiBjbGFzcz0ic21h bGwiPjxiPiR7ZXNjKGEuVXNlck5hbWUpfTwvYj4g4oCUICR7ZXNjKGEuQWN0aW9uKX0ke2EuQmVmb3JlfHxhLkFmdGVyP2AgPHNw YW4gY2xhc3M9Im11dGVkIj4oJHtlc2MoYS5CZWZvcmV8fCfiiIUnKX0g4oaSICR7ZXNjKGEuQWZ0ZXJ8fCfiiIUnKX0pPC9zcGFu PmA6Jyd9PC9kaXY+PC9kaXY+YCkuam9pbignJyl9PC9kaXY+YDplbXB0eSgnTm8gaGlzdG9yeSB5ZXQnLCcnKTsKZnVuY3Rpb24g dGFicyhpZCwgbGlzdCl7IHJldHVybiBgPGRpdiBjbGFzcz0idGFicyIgcm9sZT0idGFibGlzdCI+JHtsaXN0Lm1hcCgodCxpKT0+ YDxidXR0b24gcm9sZT0idGFiIiBjbGFzcz0iJHtpPT09MD8nb24nOicnfSIgb25jbGljaz0idGFiVG8oJyR7aWR9Jywke2l9LHRo aXMpIj4ke2VzYyh0LmxhYmVsKX0ke3QubiE9bnVsbD9gPHNwYW4gY2xhc3M9Im4iPiR7dC5ufTwvc3Bhbj5gOicnfTwvYnV0dG9u PmApLmpvaW4oJycpfTwvZGl2PiR7bGlzdC5tYXAoKHQsaSk9PmA8ZGl2IGNsYXNzPSJ0YWJwLSR7aWR9ICR7aT8naGlkZSc6Jyd9 IiBzdHlsZT0icGFkZGluZy10b3A6MTZweCI+JHt0Lmh0bWx9PC9kaXY+YCkuam9pbignJyl9YDsgfQpmdW5jdGlvbiB0YWJUbyhp ZCxpLGJ0bil7IHFzYSgnLnRhYnAtJytpZCkuZm9yRWFjaCgocCxrKT0+cC5jbGFzc0xpc3QudG9nZ2xlKCdoaWRlJyxrIT09aSkp OyBxc2EoJ2J1dHRvbicsYnRuLnBhcmVudE5vZGUpLmZvckVhY2goYj0+Yi5jbGFzc0xpc3QucmVtb3ZlKCdvbicpKTsgYnRuLmNs YXNzTGlzdC5hZGQoJ29uJyk7IE9iamVjdC52YWx1ZXMoU0cuY2hhcnRzKS5mb3JFYWNoKGM9Pnt0cnl7Yy5yZXNpemUoKTt9Y2F0 Y2goZSl7fX0pOyB9CnZhciBhY3Rpb25Sb3dzID0gYWN0cyA9PiBhY3RzLmxlbmd0aD9hY3RzLm1hcChhPT5gPGRpdiBjbGFzcz0i bGlzdC1pIiBvbmNsaWNrPSJvcGVuQWN0aW9uKCcke2EuSWR9JykiPjxzcGFuIGNsYXNzPSJtb25vIHNtYWxsIGIiPiR7ZXNjKGEu SWQpfTwvc3Bhbj48ZGl2IGNsYXNzPSJncm93IHNtYWxsIj48Yj4ke2VzYyhhLlRpdGxlKX08L2I+PGRpdiBjbGFzcz0idGlueSBt dXRlZCI+JHtlc2ModU5hbWUoYS5Pd25lcklkKSl9IMK3ICR7ZXNjKGEuUHJpb3JpdHkpfSDCtyBkdWUgJHtmbXREKGEuRHVlRGF0 ZSl9PC9kaXY+PC9kaXY+JHtjaGlwKHN0YXR1c09mKGEpKX08L2Rpdj5gKS5qb2luKCcnKTplbXB0eSgnTm8gY29ycmVjdGl2ZSBh Y3Rpb25zIHlldCcsJ0NyZWF0ZSBvbmUgZnJvbSB0aGUgYWN0aW9uIHBhbmVsLicsJ2xpc3QtY2hlY2tzJyk7CmFzeW5jIGZ1bmN0 aW9uIHZIYXphcmQoaWQpeyBjb25zdCBkPWF3YWl0IGxvYWQoJ2dldEhhemFyZCcse2lkfSk7IGlmKCFkKSByZXR1cm47IGNvbnN0 IGg9ZC5oYXphcmQsIHJtPVNHLmNmZy5yaXNrTWF0cml4LCBvcGVuPWQuYWN0aW9ucy5maWx0ZXIoYT0+YS5TdGF0dXMhPT0nQ2xv c2VkJykubGVuZ3RoOwogIGNvbnN0IGNhblRyaT1jYW4oJ2hhemFyZC5hc3NpZ24nKSYmWydSZXBvcnRlZCcsJ1RyaWFnZWQnLCdB c3NpZ25lZCddLmluY2x1ZGVzKGguU3RhdHVzKSwgY2FuQ0E9Y2FuKCdhY3Rpb24uY3JlYXRlJykmJmguU3RhdHVzIT09J0Nsb3Nl ZCcsIGNhbkNsb3NlPWNhbignaGF6YXJkLmNsb3NlJykmJmguU3RhdHVzIT09J0Nsb3NlZCcmJiFvcGVuOwogIG1haW4oYCR7Y3J1 bWIoJ0hhemFyZHMnLCdoYXphcmRzJyl9PGRpdiBjbGFzcz0iaGRyIj48ZGl2IGNsYXNzPSJncm93Ij48ZGl2IGNsYXNzPSJpZHQi PiR7ZXNjKGguSWQpfSDCtyAke2VzYyhoLlR5cGUpfTwvZGl2PjxoMSBzdHlsZT0ibWFyZ2luOjRweCAwIDEwcHgiPiR7ZXNjKGgu VGl0bGUpfTwvaDE+PGRpdiBjbGFzcz0icm93IHciPiR7cmlza0NoaXAoaC5SaXNrTGV2ZWwpfSR7Y2hpcChzdGF0dXNPZihoKSl9 PHNwYW4gY2xhc3M9ImNoaXAgYy1ncmF5Ij4ke2ljKCdtYXAtcGluJyl9JHtlc2Moc2l0ZU4oaC5TaXRlSWQpKX0gwrcgJHtlc2Mo aC5Mb2NhdGlvbnx8J+KAlCcpfTwvc3Bhbj4ke2guQ2hhbm5lbD09PSdRUic/YDxzcGFuIGNsYXNzPSJjaGlwIGMtZ3JheSI+JHtp YygncXItY29kZScpfVFSIHJlcG9ydDwvc3Bhbj5gOicnfTwvZGl2PjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9ImRldGFpbCI+ PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1iIj4ke3RhYnMoJ2h6Jyxbe2xhYmVsOidPdmVydmlldycsaHRtbDpg PGRpdiBjbGFzcz0iZ3JpZCBnMiI+PGRpdj48aDMgY2xhc3M9Im1iIj5XaGF0IHdhcyByZXBvcnRlZDwvaDM+PHAgc3R5bGU9Im1h cmdpbi10b3A6MCI+JHtlc2MoaC5EZXNjcmlwdGlvbil9PC9wPiR7cGhvdG9zSHRtbChoLlBob3Rvcyl9PGRsIGNsYXNzPSJkbCBt dDIiPjxkdD5DYXRlZ29yeTwvZHQ+PGRkPiR7ZXNjKGguQ2F0ZWdvcnkpfTwvZGQ+PGR0PkRlcGFydG1lbnQ8L2R0PjxkZD4ke2Vz YyhkZXB0RnVsbChoLkRlcHRJZCkpfTwvZGQ+PGR0PlJlcG9ydGVyPC9kdD48ZGQ+JHtlc2MoaC5SZXBvcnRlck5hbWUpfTwvZGQ+ PGR0PlJlcG9ydGVkPC9kdD48ZGQ+JHtmbXREVChoLkNyZWF0ZWRBdCl9PC9kZD48ZHQ+UmVzcG9uc2libGU8L2R0PjxkZD4ke2gu T3duZXJJZD9lc2ModU5hbWUoaC5Pd25lcklkKSk6J+KAlCd9PC9kZD48ZHQ+RHVlIGRhdGU8L2R0PjxkZD4ke2ZtdEQoaC5EdWVE YXRlKX08L2RkPjxkdD5WYWxpZGF0ZWQ8L2R0PjxkZD4ke2guVmFsaWRhdGVkPT09J1knPydZZXMnOmguVmFsaWRhdGVkPT09J04n PydOb3QgdmFsaWQnOidBd2FpdGluZyB0cmlhZ2UnfTwvZGQ+JHtoLkNsb3NlZEF0P2A8ZHQ+Q2xvc2VkPC9kdD48ZGQ+JHtmbXRE VChoLkNsb3NlZEF0KX08L2RkPmA6Jyd9PC9kbD48L2Rpdj4KICAgIDxkaXY+PGgzIGNsYXNzPSJtYiI+UmlzayBhc3Nlc3NtZW50 PC9oMz48ZGl2IGNsYXNzPSJyb3cgbWIiIHN0eWxlPSJnYXA6MTZweCI+PGRpdj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIGIiPkxJ S0VMSUhPT0Q8L2Rpdj48Yj4ke2guTGlrZWxpaG9vZH0gwrcgJHtlc2Mocm0ubGlrZWxpaG9vZFtoLkxpa2VsaWhvb2QtMV18fCcn KX08L2I+PC9kaXY+PGRpdj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIGIiPlNFVkVSSVRZPC9kaXY+PGI+JHtoLlNldmVyaXR5fSDC tyAke2VzYyhybS5zZXZlcml0eVtoLlNldmVyaXR5LTFdfHwnJyl9PC9iPjwvZGl2PjxkaXY+PGRpdiBjbGFzcz0idGlueSBtdXRl ZCBiIj5TQ09SRTwvZGl2PjxiPiR7aC5SaXNrU2NvcmV9PC9iPjwvZGl2PjwvZGl2PiR7bWluaU1hdHJpeChoLkxpa2VsaWhvb2Qs aC5TZXZlcml0eSl9PC9kaXY+PC9kaXY+YH0sCiAgICB7bGFiZWw6J0NvcnJlY3RpdmUgQWN0aW9ucycsbjpkLmFjdGlvbnMubGVu Z3RoLGh0bWw6YWN0aW9uUm93cyhkLmFjdGlvbnMpfSx7bGFiZWw6J0F1ZGl0IFRyYWlsJyxuOmQuYXVkaXQubGVuZ3RoLGh0bWw6 YXVkaXRIdG1sKGQuYXVkaXQpfV0pfTwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9InBhbmVsIj48ZGl2IGNsYXNzPSJjYXJkIHAi PjxoMyBjbGFzcz0ibWIiPkFjdGlvbnM8L2gzPgogICAgJHtjYW5Ucmk/YDxidXR0b24gY2xhc3M9ImJ0biBwcmkiIG9uY2xpY2s9 InRyaWFnZSgnJHtoLklkfScpIj4ke2ljKCdjbGlwYm9hcmQtcGVuLWxpbmUnLCdzbScpfSBUcmlhZ2UgJiBhc3Nlc3Mgcmlzazwv YnV0dG9uPmA6Jyd9CiAgICAke2NhbkNBP2A8YnV0dG9uIGNsYXNzPSJidG4iIG9uY2xpY2s9Im5ld0FjdGlvbignSEFaQVJEJywn JHtoLklkfScsJyR7aC5TaXRlSWR9JywnJHtoLkRlcHRJZH0nKSI+JHtpYygncGx1cycsJ3NtJyl9IENyZWF0ZSBjb3JyZWN0aXZl IGFjdGlvbjwvYnV0dG9uPmA6Jyd9CiAgICAke2NhbkNsb3NlP2A8YnV0dG9uIGNsYXNzPSJidG4iIG9uY2xpY2s9ImNvbmZpcm1C b3goJ0Nsb3NlIGhhemFyZCcsJ0Nsb3NlICR7aC5JZH0/IEFsbCBhY3Rpb25zIGFyZSB2ZXJpZmllZC4nLGFzeW5jIGQ9Pnthd2Fp dCBjYWxsKCdjbG9zZUhhemFyZCcse2lkOicke2guSWR9Jyxub3RlOmQuY29tbWVudH0pO3RvYXN0KCdIYXphcmQgY2xvc2VkJywn b2snKTtyZW5kZXIoKTt9LHtjb21tZW50OidDbG9zdXJlIG5vdGUnfSkiPiR7aWMoJ2NpcmNsZS1jaGVjaycsJ3NtJyl9IENsb3Nl IGhhemFyZDwvYnV0dG9uPmA6Jyd9CiAgICA8YnV0dG9uIGNsYXNzPSJidG4iIG9uY2xpY2s9InByaW50SGF6YXJkKCkiPiR7aWMo J3ByaW50ZXInLCdzbScpfSBIYXphcmQgcmVwb3J0IChQREYpPC9idXR0b24+CiAgICAkeyFjYW5UcmkmJiFjYW5DQSYmIWNhbkNs b3NlP2A8cCBjbGFzcz0ic21hbGwgbXV0ZWQiPllvdSdyZSBmb2xsb3dpbmcgdGhpcyByZXBvcnQuIFlvdSdsbCBiZSBub3RpZmll ZCBhcyBpdCBwcm9ncmVzc2VzLjwvcD5gOicnfTwvZGl2PgogICAgPGRpdiBjbGFzcz0iY2FyZCBwIG10Ij48ZGl2IGNsYXNzPSJ0 aW55IG11dGVkIGIiPldPUktGTE9XPC9kaXY+PGRpdiBjbGFzcz0ic3RlcHMgbXQiIHN0eWxlPSJtYXJnaW4tdG9wOjhweCI+JHtb J1JlcG9ydGVkJywnUmlzayBBc3Nlc3NlZCcsJ0FjdGlvbiBSZXF1aXJlZCcsJ0FjdGlvbiBJbiBQcm9ncmVzcycsJ1ZlcmlmaWNh dGlvbicsJ0Nsb3NlZCddLm1hcCgocyxpLGFycik9PnsgY29uc3Qgb3JkZXI9WydSZXBvcnRlZCcsJ1RyaWFnZWQnLCdBc3NpZ25l ZCcsJ1Jpc2sgQXNzZXNzZWQnLCdBY3Rpb24gUmVxdWlyZWQnLCdBY3Rpb24gSW4gUHJvZ3Jlc3MnLCdWZXJpZmljYXRpb24nLCdD bG9zZWQnXTsgY29uc3QgY3VyPW9yZGVyLmluZGV4T2YoaC5TdGF0dXMpLCBtZT1vcmRlci5pbmRleE9mKHMpOyByZXR1cm4gYDxk aXYgY2xhc3M9InN0ZXAgJHttZTxjdXJ8fGguU3RhdHVzPT09J0Nsb3NlZCc/J0FwcHJvdmVkJzptZT09PWN1cnx8KHM9PT0nUmlz ayBBc3Nlc3NlZCcmJlsnVHJpYWdlZCcsJ0Fzc2lnbmVkJ10uaW5jbHVkZXMoaC5TdGF0dXMpKT8nY3VyJzonJ30iIHN0eWxlPSJw YWRkaW5nOjVweCAwIj48c3BhbiBjbGFzcz0ibiIgc3R5bGU9IndpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7Zm9udC1zaXplOjExcHgi PiR7bWU8Y3VyfHxoLlN0YXR1cz09PSdDbG9zZWQnP2ljKCdjaGVjaycsJ3NtJyk6aSsxfTwvc3Bhbj48c3BhbiBjbGFzcz0ic21h bGwiIHN0eWxlPSJwYWRkaW5nLXRvcDozcHgiPiR7c308L3NwYW4+PC9kaXY+YDsgfSkuam9pbignJyl9PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+YCk7CiAgd2luZG93LnByaW50SGF6YXJkPSgpPT5wcmludFJlcG9ydCgnSGF6YXJkIFJlcG9ydCDigJQgJytoLklk LCBgPGgyPkRldGFpbHM8L2gyPiR7cmVwVGFibGUoW1snVGl0bGUnLGguVGl0bGVdLFsnVHlwZScsaC5UeXBlXSxbJ0NhdGVnb3J5 JyxoLkNhdGVnb3J5XSxbJ1NpdGUnLHNpdGVOKGguU2l0ZUlkKV0sWydEZXBhcnRtZW50JyxkZXB0RnVsbChoLkRlcHRJZCldLFsn TG9jYXRpb24nLGguTG9jYXRpb25dLFsnUmVwb3J0ZXInLGguUmVwb3J0ZXJOYW1lXSxbJ1JlcG9ydGVkJyxmbXREVChoLkNyZWF0 ZWRBdCldLFsnRGVzY3JpcHRpb24nLGguRGVzY3JpcHRpb25dLFsnUmlzaycsJ0wnK2guTGlrZWxpaG9vZCsnIMOXIFMnK2guU2V2 ZXJpdHkrJyA9ICcraC5SaXNrU2NvcmUrJyAoJytoLlJpc2tMZXZlbCsnKSddLFsnU3RhdHVzJyxoLlN0YXR1c10sWydPd25lcics dU5hbWUoaC5Pd25lcklkKV0sWydEdWUnLGZtdEQoaC5EdWVEYXRlKV1dKX08aDI+Q29ycmVjdGl2ZSBhY3Rpb25zPC9oMj48dGFi bGU+PHRyPjx0aD5JRDwvdGg+PHRoPkFjdGlvbjwvdGg+PHRoPk93bmVyPC90aD48dGg+RHVlPC90aD48dGg+U3RhdHVzPC90aD48 L3RyPiR7ZC5hY3Rpb25zLm1hcChhPT5gPHRyPjx0ZD4ke2EuSWR9PC90ZD48dGQ+JHtlc2MoYS5UaXRsZSl9PC90ZD48dGQ+JHtl c2ModU5hbWUoYS5Pd25lcklkKSl9PC90ZD48dGQ+JHtmbXREKGEuRHVlRGF0ZSl9PC90ZD48dGQ+JHthLlN0YXR1c308L3RkPjwv dHI+YCkuam9pbignJyl9PC90YWJsZT48aDI+QXVkaXQgdHJhaWw8L2gyPjx0YWJsZT4ke2QuYXVkaXQubWFwKGE9PmA8dHI+PHRk PiR7Zm10RFQoYS5DcmVhdGVkQXQpfTwvdGQ+PHRkPiR7ZXNjKGEuVXNlck5hbWUpfTwvdGQ+PHRkPiR7ZXNjKGEuQWN0aW9uKX08 L3RkPjwvdHI+YCkuam9pbignJyl9PC90YWJsZT5gKTsgfQpmdW5jdGlvbiBsc1NlbGVjdChuYW1lLCBsYWJlbHMsIHNlbCl7IHJl dHVybiBgPHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSIke25hbWV9Ij4ke2xhYmVscy5tYXAoKGwsaSk9Pm9wdChpKzEsKGkrMSkr JyDigJQgJytsLHNlbCkpLmpvaW4oJycpfTwvc2VsZWN0PmA7IH0KZnVuY3Rpb24gdHJpYWdlKGlkKXsgY29uc3Qgcm09U0cuY2Zn LnJpc2tNYXRyaXg7CiAgbW9kYWwoJ1RyaWFnZSAmIHJpc2sgYXNzZXNzbWVudCcsIGA8ZGl2IGlkPSJhaVRyaWFnZU5vdGUiPjwv ZGl2PiR7YWlPbignaGF6YXJkQXNzaXN0Jyk/YDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGFpIG1iIiBvbmNsaWNr PSJhaVRyaWFnZSgnJHtpZH0nLHRoaXMpIj4ke2ljKCdzcGFya2xlcycsJ3NtJyl9IFN1Z2dlc3Qgd2l0aCBBSTwvYnV0dG9uPmA6 Jyd9PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5JcyB0aGlzIGEgdmFsaWQgc2FmZXR5IHJlcG9ydD88L2xhYmVsPjxkaXYgY2xh c3M9Im9wdHMiPjxsYWJlbCBjbGFzcz0ib3B0IG9uIj48aW5wdXQgdHlwZT0icmFkaW8iIGNsYXNzPSJzciIgbmFtZT0idmFsaWQi IHZhbHVlPSJ5ZXMiIGNoZWNrZWQ+JHtpYygnY2hlY2snLCdzbScpfSBWYWxpZCDigJQgYXNzZXNzIGl0PC9sYWJlbD48bGFiZWwg Y2xhc3M9Im9wdCI+PGlucHV0IHR5cGU9InJhZGlvIiBjbGFzcz0ic3IiIG5hbWU9InZhbGlkIiB2YWx1ZT0ibm8iPiR7aWMoJ3gn LCdzbScpfSBOb3QgdmFsaWQgLyBkdXBsaWNhdGU8L2xhYmVsPjwvZGl2PjxkaXYgY2xhc3M9ImhpbnQiPlBvaW50cyBhcmUgb25s eSBhd2FyZGVkIHRvIHRoZSByZXBvcnRlciBmb3IgdmFsaWRhdGVkIHJlcG9ydHMgKGFudGktZ2FtaW5nKS48L2Rpdj48L2Rpdj4K ICA8ZGl2IGlkPSJ0clYiPjxkaXYgY2xhc3M9ImdyaWQgZzIiPjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+TGlrZWxpaG9vZDwv bGFiZWw+JHtsc1NlbGVjdCgnbGlrZWxpaG9vZCcscm0ubGlrZWxpaG9vZCwzKX08L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxh YmVsPlNldmVyaXR5IC8gY29uc2VxdWVuY2U8L2xhYmVsPiR7bHNTZWxlY3QoJ3NldmVyaXR5JyxybS5zZXZlcml0eSwzKX08L2Rp dj48L2Rpdj48ZGl2IGNsYXNzPSJiYW5uZXIgaW5mbyIgaWQ9InRyU2NvcmUiPjwvZGl2PgogIDxkaXYgY2xhc3M9ImZpZWxkIj48 bGFiZWw+Q2F0ZWdvcnk8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0iY2F0ZWdvcnkiPiR7KFNHLmNmZy5oYXphcmRD YXRlZ29yaWVzfHxbXSkubWFwKGM9Pm9wdChjKSkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZmllbGQi PjxsYWJlbD5SZXNwb25zaWJsZSBwZXJzb248L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ib3duZXJJZCIgcmVxdWly ZWQ+JHtzZWxVc2VycygnJyx1PT5bJ0RFUFRfTUFOQUdFUicsJ1NVUEVSVklTT1InLCdTSVRFX01BTkFHRVInLCdTQUZFVFlfT0ZG SUNFUicsJ0VNUExPWUVFJ10uaW5jbHVkZXModS5Sb2xlKSwn4oCUIHNlbGVjdCDigJQnKX08L3NlbGVjdD48L2Rpdj4KICA8ZGl2 IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkNvcnJlY3RpdmUgYWN0aW9uPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iYWN0 aW9uVGl0bGUiIHBsYWNlaG9sZGVyPSJlLmcuIENsZWFuIHNwaWxsIGFuZCBmaXggbGVha2luZyBob3NlIj48L2Rpdj48ZGl2IGNs YXNzPSJncmlkIGcyIj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkR1ZSBkYXRlPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIg dHlwZT0iZGF0ZSIgbmFtZT0iZHVlRGF0ZSIgdmFsdWU9IiR7YWRkRCg3KX0iPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFi ZWw+RGV0YWlsczwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9ImFjdGlvbkRlc2NyaXB0aW9uIj48L2Rpdj48L2Rpdj48 L2Rpdj4KICA8ZGl2IGlkPSJ0ck4iIGNsYXNzPSJoaWRlIGZpZWxkIj48bGFiZWw+UmVhc29uPC9sYWJlbD48dGV4dGFyZWEgY2xh c3M9ImlucCIgbmFtZT0ibm90ZSIgcGxhY2Vob2xkZXI9IkV4cGxhaW4gYnJpZWZseSDigJQgdGhlIHJlcG9ydGVyIHdpbGwgc2Vl IHRoaXMiPjwvdGV4dGFyZWE+PC9kaXY+YCwKICB7IHN1Ym1pdDonU2F2ZSBhc3Nlc3NtZW50Jywgb25PcGVuOmY9PnsgYWZ0ZXJS ZXBvcnRGb3JtKGYpOyBjb25zdCB1cGQ9KCk9PnsgY29uc3Qgdj1xcygnW25hbWU9bGlrZWxpaG9vZF0nLGYpLnZhbHVlKnFzKCdb bmFtZT1zZXZlcml0eV0nLGYpLnZhbHVlLCBsPWJhbmQodik7IHFzKCcjdHJTY29yZScpLmNsYXNzTmFtZT0nYmFubmVyICcrKGw9 PT0nQ1JJVElDQUwnPydjcml0JzpsPT09J0hJR0gnfHxsPT09J01FRElVTSc/J3dhcm4nOidpbmZvJyk7IHFzKCcjdHJTY29yZScp LmlubmVySFRNTD1gJHtpYygnZ2F1Z2UnKX08Yj5SaXNrIHNjb3JlICR7dn0g4oCUICR7bH08L2I+JHtsPT09J0NSSVRJQ0FMJz8n IMK3IHdpbGwgZXNjYWxhdGUgdG8gdGhlIFNhZmV0eSBEaXJlY3Rvcic6Jyd9YDsgaWNvbnMoKTsgfTsgcXNhKCdzZWxlY3QnLGYp LmZvckVhY2gocz0+cy5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLHVwZCkpOyB1cGQoKTsgcXNhKCdbbmFtZT12YWxpZF0nLGYp LmZvckVhY2gocj0+ci5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCgpPT57IGNvbnN0IG5vPXFzKCdbbmFtZT12YWxpZF06Y2hl Y2tlZCcsZikudmFsdWU9PT0nbm8nOyBxcygnI3RyVicpLmNsYXNzTGlzdC50b2dnbGUoJ2hpZGUnLG5vKTsgcXMoJyN0ck4nKS5j bGFzc0xpc3QudG9nZ2xlKCdoaWRlJywhbm8pOyB9KSk7IH0sCiAgICBvblN1Ym1pdDogYXN5bmMgZD0+eyBjb25zdCB2YWxpZD1k LnZhbGlkIT09J25vJzsgaWYodmFsaWQmJmQuYWN0aW9uVGl0bGUmJiFkLm93bmVySWQpeyB0b2FzdCgnQ2hvb3NlIGEgcmVzcG9u c2libGUgcGVyc29uIGZvciB0aGUgYWN0aW9uJywnZXJyJyk7IHJldHVybiBmYWxzZTsgfSBjb25zdCByPWF3YWl0IGNhbGwoJ3Ry aWFnZUhhemFyZCcsT2JqZWN0LmFzc2lnbihkLHtpZCx2YWxpZH0pKTsgdG9hc3QodmFsaWQ/J0hhemFyZCBhc3Nlc3NlZCc6J1Jl cG9ydCBjbG9zZWQgYXMgbm90IHZhbGlkJywnb2snLCB2YWxpZD8nUmlzazogJytyLmhhemFyZC5SaXNrTGV2ZWw6JycpOyByZW5k ZXIoKTsgfSB9KTsgfQpmdW5jdGlvbiBuZXdBY3Rpb24odHlwZSwgc3JjLCBzaXRlSWQsIGRlcHRJZCwgcHJlKXsgcHJlPXByZXx8 e307CiAgbW9kYWwoJ05ldyBjb3JyZWN0aXZlIGFjdGlvbicsIGA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkFjdGlvbjwvbGFi ZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9InRpdGxlIiByZXF1aXJlZCBwbGFjZWhvbGRlcj0iV2hhdCBuZWVkcyB0byBiZSBk b25lPyIgdmFsdWU9IiR7ZXNjKHByZS50aXRsZXx8JycpfSI+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5EZXRhaWxz PC9sYWJlbD48dGV4dGFyZWEgY2xhc3M9ImlucCIgbmFtZT0iZGVzY3JpcHRpb24iPiR7ZXNjKHByZS5kZXNjcmlwdGlvbnx8Jycp fTwvdGV4dGFyZWE+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Pd25lcjwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5w IiBuYW1lPSJvd25lcklkIj4ke3NlbFVzZXJzKCcnLHU9PiFzaXRlSWR8fHUuU2l0ZUlkPT09c2l0ZUlkfHxbJ1NBRkVUWV9NQU5B R0VSJywnU0FGRVRZX0RJUkVDVE9SJ10uaW5jbHVkZXModS5Sb2xlKSwn4oCUIHNlbGVjdCBvd25lciDigJQnKX08L3NlbGVjdD48 L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkIGcyIj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlByaW9yaXR5PC9sYWJlbD48c2Vs ZWN0IGNsYXNzPSJpbnAiIG5hbWU9InByaW9yaXR5Ij4ke1snQ3JpdGljYWwnLCdIaWdoJywnTWVkaXVtJywnTG93J10ubWFwKHA9 Pm9wdChwLHAscHJlLnByaW9yaXR5fHwnTWVkaXVtJykpLmpvaW4oJycpfTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxk Ij48bGFiZWw+RHVlIGRhdGU8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiB0eXBlPSJkYXRlIiBuYW1lPSJkdWVEYXRlIiB2YWx1 ZT0iJHtwcmUuZHVlRGF0ZXx8YWRkRCg3KX0iPjwvZGl2PjwvZGl2PmAsCiAgeyBzdWJtaXQ6J0NyZWF0ZSBhY3Rpb24nLCBvblN1 Ym1pdDogYXN5bmMgZD0+eyBpZighZC50aXRsZXx8IWQub3duZXJJZCl7IHRvYXN0KCdUaXRsZSBhbmQgb3duZXIgYXJlIHJlcXVp cmVkJywnZXJyJyk7IHJldHVybiBmYWxzZTsgfSBjb25zdCBhPWF3YWl0IGNhbGwoJ2NyZWF0ZUFjdGlvbicsT2JqZWN0LmFzc2ln bihkLHtzb3VyY2VUeXBlOnR5cGUsc291cmNlSWQ6c3JjLHNpdGVJZCxkZXB0SWR9KSk7IHRvYXN0KCdBY3Rpb24gJythLklkKycg Y3JlYXRlZCcsJ29rJywnT3duZXIgbm90aWZpZWQnKTsgcmVuZGVyKCk7IH0gfSk7IH0KCi8qIC0tLS0tLS0tLS0gQ29ycmVjdGl2 ZSBhY3Rpb25zIC0tLS0tLS0tLS0gKi8KVklFV1MuYWN0aW9ucyA9IGFzeW5jICgpID0+IHsgY29uc3QgbWluZT1TRy5wYXJhbXNb MF09PT0nbWluZSd8fCghY2FuKCdhY3Rpb24udmlldycpKTsgY29uc3Qgcm93cz1hd2FpdCBsb2FkKCdsaXN0QWN0aW9ucycse21p bmV9KTsgaWYoIXJvd3MpIHJldHVybjsgY29uc3Qgb3Zlcj1yb3dzLmZpbHRlcihpc092ZXIpLCBvcGVuPXJvd3MuZmlsdGVyKHI9 PnIuU3RhdHVzIT09J0Nsb3NlZCcpLCB2ZXI9cm93cy5maWx0ZXIocj0+ci5TdGF0dXM9PT0nU3VibWl0dGVkIGZvciBWZXJpZmlj YXRpb24nKTsKICBtYWluKGAke3BhZ2VIKCdDb3JyZWN0aXZlIEFjdGlvbnMnLCdDZW50cmFsIENBUEEgZW5naW5lIOKAlCBvd25l cnMsIGV2aWRlbmNlLCB2ZXJpZmljYXRpb24gYW5kIGNsb3N1cmUuJywgYCR7Y2FuKCdhY3Rpb24udmlldycpP2A8ZGl2IGNsYXNz PSJzZWciPjxidXR0b24gY2xhc3M9IiR7bWluZT8nJzonb24nfSIgb25jbGljaz0iZ28oJ2FjdGlvbnMnKSI+QWxsIGluIHNjb3Bl PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iJHttaW5lPydvbic6Jyd9IiBvbmNsaWNrPSJnbygnYWN0aW9ucy9taW5lJykiPkFzc2ln bmVkIHRvIG1lPC9idXR0b24+PC9kaXY+YDonJ30ke2NhbignYWN0aW9uLmNyZWF0ZScpP2A8YnV0dG9uIGNsYXNzPSJidG4gcHJp IiBvbmNsaWNrPSJuZXdBY3Rpb24oJ1NUQU5EQUxPTkUnLCcnLCcnLCcnKSI+JHtpYygncGx1cycsJ3NtJyl9IE5ldyBhY3Rpb248 L2J1dHRvbj5gOicnfWApfQogIDxkaXYgY2xhc3M9ImdyaWQgZzQgbWIiPiR7a3BpKHtsYWJlbDonT3BlbicsdmFsdWU6b3Blbi5s ZW5ndGgsaW5zaWdodDpyb3dzLmZpbHRlcihyPT5yLlN0YXR1cz09PSdBc3NpZ25lZCcpLmxlbmd0aCsnIG5vdCBzdGFydGVkJyx0 b25lOidibHVlJyxpY29uOidsaXN0LWNoZWNrcyd9KX0ke2twaSh7bGFiZWw6J092ZXJkdWUnLHZhbHVlOm92ZXIubGVuZ3RoLGlu c2lnaHQ6b3Zlci5sZW5ndGg/J093bmVycyBhbmQgc3VwZXJ2aXNvcnMgbm90aWZpZWQgZGFpbHknOidObyBvdmVyZHVlIGFjdGlv bnMnLHRvbmU6b3Zlci5sZW5ndGg/J3JlZCc6J2dyZWVuJyxpY29uOidhbGFybS1jbG9jayd9KX0ke2twaSh7bGFiZWw6J0F3YWl0 aW5nIHZlcmlmaWNhdGlvbicsdmFsdWU6dmVyLmxlbmd0aCxpbnNpZ2h0OidFdmlkZW5jZSBzdWJtaXR0ZWQnLHRvbmU6dmVyLmxl bmd0aD8nb3JhbmdlJzonZ3JlZW4nLGljb246J3N0YW1wJ30pfSR7a3BpKHtsYWJlbDonQ2xvc2VkJyx2YWx1ZTpyb3dzLmxlbmd0 aC1vcGVuLmxlbmd0aCxzdWZmaXg6JycsaW5zaWdodDpNYXRoLnJvdW5kKChyb3dzLmxlbmd0aC1vcGVuLmxlbmd0aCkvTWF0aC5t YXgoMSxyb3dzLmxlbmd0aCkqMTAwKSsnJSBjbG9zdXJlIHJhdGUnLHRvbmU6J2dyZWVuJyxpY29uOidjaXJjbGUtY2hlY2snfSl9 PC9kaXY+CiAgPGRpdiBjbGFzcz0iY2FyZCI+JHtTR1QuaHRtbCgnYWN0Jyxbe2s6J0lkJyxsYWJlbDonQWN0aW9uIElEJyxyZW5k ZXI6cj0+YDxzcGFuIGNsYXNzPSJtb25vIGIiPiR7ZXNjKHIuSWQpfTwvc3Bhbj5gfSx7azonVGl0bGUnLGxhYmVsOidBY3Rpb24n LHJlbmRlcjpyPT5gPGI+JHtlc2Moci5UaXRsZSl9PC9iPmB9LHtrOidTb3VyY2VUeXBlJyxsYWJlbDonU291cmNlJyxmaWx0ZXI6 dHJ1ZSxyZW5kZXI6cj0+YDxzcGFuIGNsYXNzPSJzbWFsbCI+JHtlc2Moci5Tb3VyY2VUeXBlKX0ke3IuU291cmNlSWQ/JyDCtyA8 c3BhbiBjbGFzcz0ibW9ubyI+Jytlc2Moci5Tb3VyY2VJZCkrJzwvc3Bhbj4nOicnfTwvc3Bhbj5gfSx7azonT3duZXJJZCcsbGFi ZWw6J093bmVyJyxnZXQ6cj0+dU5hbWUoci5Pd25lcklkKSxmaWx0ZXI6dHJ1ZX0se2s6J0RlcHRJZCcsbGFiZWw6J0RlcGFydG1l bnQnLGdldDpyPT5kZXB0RnVsbChyLkRlcHRJZCksZmlsdGVyOnRydWV9LHtrOidQcmlvcml0eScsbGFiZWw6J1ByaW9yaXR5Jyxm aWx0ZXI6dHJ1ZX0se2s6J0R1ZURhdGUnLGxhYmVsOidEdWUnLGdldDpyPT5mbXREKHIuRHVlRGF0ZSksc29ydHY6cj0+ci5EdWVE YXRlfSx7azonU3RhdHVzJyxsYWJlbDonU3RhdHVzJyxmaWx0ZXI6dHJ1ZSxnZXQ6c3RhdHVzT2YscmVuZGVyOnI9PmNoaXAoc3Rh dHVzT2YocikpfSx7azonVXBkYXRlZEF0JyxsYWJlbDonVXBkYXRlZCcsZ2V0OnI9PmFnbyhyLlVwZGF0ZWRBdCksc29ydHY6cj0+ ci5VcGRhdGVkQXR9XSxyb3dzLHtuYW1lOidjb3JyZWN0aXZlLWFjdGlvbnMnLG9uUm93OnI9Pm9wZW5BY3Rpb24oci5JZCkscm93 Q2xhc3M6cj0+aXNPdmVyKHIpPydvdmVyJzonJyxlbXB0eVRpdGxlOidObyBhY3Rpb25zJyxlbXB0eVN1YjonTm8gb3ZlcmR1ZSBh Y3Rpb25zLiBOb3RoaW5nIHdhaXRpbmcgb24geW91Licsc2VsZWN0OnRydWV9KX08L2Rpdj5gKTsgU0dULm1vdW50KCk7CiAgaWYo U0cucGFyYW1zWzBdJiZTRy5wYXJhbXNbMF0hPT0nbWluZScpIG9wZW5BY3Rpb24oU0cucGFyYW1zWzBdKTsgfTsKYXN5bmMgZnVu Y3Rpb24gb3BlbkFjdGlvbihpZCl7IGRyYXdlcignQ29ycmVjdGl2ZSBhY3Rpb24nLCAnPGRpdiBjbGFzcz0ic2siIHN0eWxlPSJo ZWlnaHQ6MzAwcHgiPjwvZGl2PicpOyB0cnl7IGNvbnN0IGQ9YXdhaXQgY2FsbCgnZ2V0QWN0aW9uJyx7aWR9KSwgYT1kLmFjdGlv biwgZXY9QXJyYXkuaXNBcnJheShhLkV2aWRlbmNlKT9hLkV2aWRlbmNlOkpTT04ucGFyc2UoYS5FdmlkZW5jZXx8J1tdJyksIHN0 PWEuU3RhdHVzOwogIHFzKCcjZHJ3YicpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iaWR0IG1vbm8gbXV0ZWQiPiR7ZXNjKGEuSWQp fTwvZGl2PjxoMiBzdHlsZT0ibWFyZ2luOjRweCAwIDEwcHgiPiR7ZXNjKGEuVGl0bGUpfTwvaDI+PGRpdiBjbGFzcz0icm93IHcg bWIiPiR7Y2hpcChzdGF0dXNPZihhKSl9PHNwYW4gY2xhc3M9ImNoaXAgYy1ncmF5Ij4ke2VzYyhhLlByaW9yaXR5KX0gcHJpb3Jp dHk8L3NwYW4+PC9kaXY+JHthLkRlc2NyaXB0aW9uP2A8cD4ke2VzYyhhLkRlc2NyaXB0aW9uKX08L3A+YDonJ30KICA8ZGwgY2xh c3M9ImRsIj48ZHQ+T3duZXI8L2R0PjxkZD4ke2VzYyh1TmFtZShhLk93bmVySWQpKX08L2RkPjxkdD5EZXBhcnRtZW50PC9kdD48 ZGQ+JHtlc2MoZGVwdEZ1bGwoYS5EZXB0SWQpKX08L2RkPjxkdD5EdWU8L2R0PjxkZD4ke2ZtdEQoYS5EdWVEYXRlKX0gJHtpc092 ZXIoYSk/Y2hpcCgnT3ZlcmR1ZScpOicnfTwvZGQ+PGR0PlNvdXJjZTwvZHQ+PGRkPiR7ZC5zb3VyY2U/YDxhIGhyZWY9IiMiIG9u Y2xpY2s9ImV2ZW50LnByZXZlbnREZWZhdWx0KCk7Z28oJyR7ZC5zb3VyY2UubGlua30nKSI+JHtlc2MoZC5zb3VyY2UuaWQpfTwv YT4g4oCUICR7ZXNjKGQuc291cmNlLnRpdGxlKX1gOmVzYyhhLlNvdXJjZVR5cGUpfTwvZGQ+PGR0PkNyZWF0ZWQgYnk8L2R0Pjxk ZD4ke2VzYyh1TmFtZShhLkNyZWF0ZWRCeSkpfSwgJHtmbXREKGEuQ3JlYXRlZEF0KX08L2RkPiR7YS5WZXJpZmllZEJ5P2A8ZHQ+ VmVyaWZpZWQgYnk8L2R0PjxkZD4ke2VzYyh1TmFtZShhLlZlcmlmaWVkQnkpKX08L2RkPmA6Jyd9JHthLlZlcmlmeU5vdGU/YDxk dD5WZXJpZmllciBub3RlPC9kdD48ZGQ+JHtlc2MoYS5WZXJpZnlOb3RlKX08L2RkPmA6Jyd9PC9kbD4KICA8ZGl2IGNsYXNzPSJj YXJkIHAgbXQyIiBzdHlsZT0iYmFja2dyb3VuZDojRkFGQkZEIj48Yj5BY3Rpb25zPC9iPjxkaXYgY2xhc3M9InJvdyB3IG10Ij4k e2QuaXNPd25lciYmc3Q9PT0nQXNzaWduZWQnP2A8YnV0dG9uIGNsYXNzPSJidG4iIG9uY2xpY2s9ImFjdE9wKCcke2EuSWR9Jywn c3RhcnQnKSI+JHtpYygncGxheScsJ3NtJyl9IFN0YXJ0IHdvcms8L2J1dHRvbj5gOicnfSR7KGQuaXNPd25lcnx8ZC5jYW5WZXJp ZnkpJiZzdCE9PSdDbG9zZWQnP2A8YnV0dG9uIGNsYXNzPSJidG4iIG9uY2xpY2s9ImFkZEV2aWRlbmNlKCcke2EuSWR9JykiPiR7 aWMoJ3VwbG9hZCcsJ3NtJyl9IFVwbG9hZCBldmlkZW5jZTwvYnV0dG9uPmA6Jyd9JHtkLmlzT3duZXImJlsnSW4gUHJvZ3Jlc3Mn LCdBd2FpdGluZyBFdmlkZW5jZSddLmluY2x1ZGVzKHN0KSYmZXYubGVuZ3RoP2A8YnV0dG9uIGNsYXNzPSJidG4gcHJpIiBvbmNs aWNrPSJhY3RPcCgnJHthLklkfScsJ3N1Ym1pdCcpIj4ke2ljKCdzZW5kJywnc20nKX0gU3VibWl0IGZvciB2ZXJpZmljYXRpb248 L2J1dHRvbj5gOicnfSR7ZC5jYW5WZXJpZnkmJnN0PT09J1N1Ym1pdHRlZCBmb3IgVmVyaWZpY2F0aW9uJyYmIWQuaXNPd25lcj9g PGJ1dHRvbiBjbGFzcz0iYnRuIG9rIiBvbmNsaWNrPSJ2ZXJpZnlBY3QoJyR7YS5JZH0nLHRydWUpIj4ke2ljKCdiYWRnZS1jaGVj aycsJ3NtJyl9IFZlcmlmeSAmIGNsb3NlPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIGRhbmdlciIgb25jbGljaz0idmVyaWZ5 QWN0KCcke2EuSWR9JyxmYWxzZSkiPlJlamVjdDwvYnV0dG9uPmA6Jyd9JHtjYW4oJ2FjdGlvbi5jcmVhdGUnKSYmc3QhPT0nQ2xv c2VkJz9gPGJ1dHRvbiBjbGFzcz0iYnRuIGdob3N0IiBvbmNsaWNrPSJyZWFzc2lnbignJHthLklkfScpIj4ke2ljKCd1c2VyLWNv ZycsJ3NtJyl9IFJlYXNzaWduPC9idXR0b24+YDonJ30ke3N0PT09J0Nsb3NlZCc/JzxzcGFuIGNsYXNzPSJzbWFsbCBtdXRlZCI+ VGhpcyBhY3Rpb24gaXMgdmVyaWZpZWQgYW5kIGNsb3NlZC48L3NwYW4+JzonJ308L2Rpdj48L2Rpdj4KICA8aDMgY2xhc3M9Im10 MiBtYiI+RXZpZGVuY2UgKCR7ZXYubGVuZ3RofSk8L2gzPiR7ZXYubGVuZ3RoP2V2Lm1hcChlPT5gPGRpdiBjbGFzcz0iY2FyZCBw IG1iIj48ZGl2IGNsYXNzPSJyb3cgYmV0d2VlbiI+PGIgY2xhc3M9InNtYWxsIj4ke2VzYyhlLmJ5KX08L2I+PHNwYW4gY2xhc3M9 InRpbnkgbXV0ZWQiPiR7Zm10RFQoZS50KX08L3NwYW4+PC9kaXY+JHtlLnRleHQ/YDxwIGNsYXNzPSJzbWFsbCIgc3R5bGU9Im1h cmdpbjo2cHggMCI+JHtlc2MoZS50ZXh0KX08L3A+YDonJ30ke3Bob3Rvc0h0bWwoZS5maWxlcyl9PC9kaXY+YCkuam9pbignJyk6 JzxwIGNsYXNzPSJzbWFsbCBtdXRlZCI+Tm8gZXZpZGVuY2UgdXBsb2FkZWQgeWV0LjwvcD4nfQogIDxoMyBjbGFzcz0ibXQyIG1i Ij5BdWRpdCB0cmFpbDwvaDM+JHthdWRpdEh0bWwoZC5hdWRpdCl9YDsgYWZ0ZXIoKTsgfWNhdGNoKGUpeyBxcygnI2Ryd2InKS5p bm5lckhUTUw9ZW1wdHkoJ0NvdWxkIG5vdCBvcGVuIGFjdGlvbicsZS5tZXNzYWdlLCdjbG91ZC1vZmYnKTsgaWNvbnMoKTsgfSB9 CmFzeW5jIGZ1bmN0aW9uIGFjdE9wKGlkLCBvcCwgZXh0cmEpeyB0cnl7IGNvbnN0IHI9YXdhaXQgY2FsbCgnYWN0aW9uVXBkYXRl JyxPYmplY3QuYXNzaWduKHtpZCxvcH0sZXh0cmF8fHt9KSk7IGNlbGVicmF0ZShyLnJld2FyZCk7IHRvYXN0KHtzdGFydDonV29y ayBzdGFydGVkJyxzdWJtaXQ6J1N1Ym1pdHRlZCBmb3IgdmVyaWZpY2F0aW9uJyx2ZXJpZnk6J1ZlcmlmaWNhdGlvbiBzYXZlZCcs cmVhc3NpZ246J1JlYXNzaWduZWQnLGV2aWRlbmNlOidFdmlkZW5jZSB1cGxvYWRlZCd9W29wXXx8J1NhdmVkJywnb2snKTsgY2xv c2VEcmF3ZXIoKTsgcmVuZGVyKCk7IHNldFRpbWVvdXQoKCk9Pm9wZW5BY3Rpb24oaWQpLDQwMCk7IH1jYXRjaChlKXsgdG9hc3Qo ZS5tZXNzYWdlLCdlcnInKTsgfSB9CmZ1bmN0aW9uIGFkZEV2aWRlbmNlKGlkKXsgbW9kYWwoJ1VwbG9hZCBldmlkZW5jZScsIGA8 ZGl2IGNsYXNzPSJmaWVsZCI+PGRpdiBjbGFzcz0icm93IGJldHdlZW4iPjxsYWJlbCBmb3I9ImV2dCI+V2hhdCB3YXMgZG9uZT88 L2xhYmVsPiR7bWljQnRuKCdldnQnKX08L2Rpdj48dGV4dGFyZWEgY2xhc3M9ImlucCIgaWQ9ImV2dCIgbmFtZT0idGV4dCIgcGxh Y2Vob2xkZXI9IkRlc2NyaWJlIHRoZSBmaXgiPjwvdGV4dGFyZWE+PC9kaXY+JHtwaG90b0lucHV0KCdldicsJ0FkZCBwaG90byBl dmlkZW5jZScpfWAsIHtzdWJtaXQ6J1VwbG9hZCcsIG9uU3VibWl0OiBhc3luYyBkPT57IGF3YWl0IGFjdE9wKGlkLCdldmlkZW5j ZScse3RleHQ6ZC50ZXh0LHBob3Rvczp3aW5kb3cuX3BoLmV2fSk7IH19KTsgfQpmdW5jdGlvbiB2ZXJpZnlBY3QoaWQsIGFwcHJv dmUpeyBjb25maXJtQm94KGFwcHJvdmU/J1ZlcmlmeSAmIGNsb3NlJzonUmVqZWN0IOKAlCBtb3JlIGV2aWRlbmNlIG5lZWRlZCcs IGFwcHJvdmU/J0NvbmZpcm0gdGhlIGZpeCBpcyBlZmZlY3RpdmUgb24gc2l0ZS4nOidUaGUgb3duZXIgd2lsbCBiZSBhc2tlZCBm b3IgbW9yZSBldmlkZW5jZS4nLCBhc3luYyBkPT5hY3RPcChpZCwndmVyaWZ5Jyx7YXBwcm92ZSxub3RlOmQuY29tbWVudH0pLCB7 Y29tbWVudDphcHByb3ZlPydWZXJpZmljYXRpb24gbm90ZSc6J1doYXQgaXMgbWlzc2luZz8nLHJlcXVpcmVkOiFhcHByb3ZlLHN1 Ym1pdDphcHByb3ZlPydWZXJpZnkgJiBjbG9zZSc6J1NlbmQgYmFjaycsZGFuZ2VyOiFhcHByb3ZlfSk7IH0KZnVuY3Rpb24gcmVh c3NpZ24oaWQpeyBtb2RhbCgnUmVhc3NpZ24gYWN0aW9uJywgYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+TmV3IG93bmVyPC9s YWJlbD48c2VsZWN0IGNsYXNzPSJpbnAiIG5hbWU9Im93bmVySWQiPiR7c2VsVXNlcnMoJycsbnVsbCwn4oCUIHNlbGVjdCDigJQn KX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPk5ldyBkdWUgZGF0ZSAob3B0aW9uYWwpPC9sYWJlbD48 aW5wdXQgY2xhc3M9ImlucCIgdHlwZT0iZGF0ZSIgbmFtZT0iZHVlRGF0ZSI+PC9kaXY+YCwge29uU3VibWl0OiBhc3luYyBkPT57 IGlmKCFkLm93bmVySWQpe3RvYXN0KCdQaWNrIGFuIG93bmVyJywnZXJyJyk7cmV0dXJuIGZhbHNlO30gYXdhaXQgYWN0T3AoaWQs J3JlYXNzaWduJyxkKTsgfX0pOyB9Cgo7CgovKiAtLS0tLS0tLS0tIEluY2lkZW50cyAtLS0tLS0tLS0tICovClZJRVdTLm5lYXJt aXNzID0gKCkgPT4gdkluY2lkZW50cygnTmVhciBNaXNzJyk7ClZJRVdTLmluY2lkZW50cyA9ICgpID0+IFNHLnBhcmFtc1swXSA/ IHZJbmNpZGVudChTRy5wYXJhbXNbMF0pIDogdkluY2lkZW50cygnJyk7CmFzeW5jIGZ1bmN0aW9uIHZJbmNpZGVudHMoa2luZCl7 IGNvbnN0IHJvd3M9YXdhaXQgbG9hZCgnbGlzdEluY2lkZW50cycse2tpbmR9KTsgaWYoIXJvd3MpIHJldHVybjsgY29uc3Qgb3Bl bj1yb3dzLmZpbHRlcihyPT5yLlN0YXR1cyE9PSdDbG9zZWQnKSwgaW52PXJvd3MuZmlsdGVyKHI9PlsnQXNzaWduZWQnLCdVbmRl ciBJbnZlc3RpZ2F0aW9uJywnSW52ZXN0aWdhdGlvbiBSZXZpZXcnXS5pbmNsdWRlcyhyLlN0YXR1cykpOwogIG1haW4oYCR7cGFn ZUgoa2luZD8nTmVhciBNaXNzZXMnOidJbmNpZGVudHMnLCBraW5kPydFdmVyeSBuZWFyIG1pc3MgaXMgYSBmcmVlIGxlc3Nvbi4g SW52ZXN0aWdhdGUsIGxlYXJuLCBwcmV2ZW50Lic6J0Z1bGwgaW5jaWRlbnQgbGlmZWN5Y2xlIOKAlCBmcm9tIHJlcG9ydCB0byB2 ZXJpZmllZCBjbG9zdXJlLicsIGAke2NhbigncmVwb3J0LmNyZWF0ZScpP2A8YnV0dG9uIGNsYXNzPSJidG4gcHJpIiBvbmNsaWNr PSJnbygncmVwb3J0LyR7a2luZD8nTmVhciBNaXNzJzonSW5jaWRlbnQnfScpIj4ke2ljKCdwbHVzJywnc20nKX0gUmVwb3J0ICR7 a2luZD8nbmVhciBtaXNzJzonaW5jaWRlbnQnfTwvYnV0dG9uPmA6Jyd9YCl9CiAgPGRpdiBjbGFzcz0iZ3JpZCBnNCBtYiI+JHtr cGkoe2xhYmVsOidPcGVuJyx2YWx1ZTpvcGVuLmxlbmd0aCxpbnNpZ2h0Om9wZW4uZmlsdGVyKHI9PlsnUmVwb3J0ZWQnLCdSZW9w ZW5lZCddLmluY2x1ZGVzKHIuU3RhdHVzKSkubGVuZ3RoKycgcmVxdWlyZSBhY3Rpb24gdG9kYXknLHRvbmU6J29yYW5nZScsaWNv bjonc2lyZW4nfSl9JHtrcGkoe2xhYmVsOidVbmRlciBpbnZlc3RpZ2F0aW9uJyx2YWx1ZTppbnYubGVuZ3RoLGluc2lnaHQ6aW52 LmZpbHRlcihyPT5yLlN0YXR1cz09PSdJbnZlc3RpZ2F0aW9uIFJldmlldycpLmxlbmd0aCsnIGF3YWl0aW5nIHJldmlldycsdG9u ZTonYmx1ZScsaWNvbjonc2Nhbi1zZWFyY2gnfSl9JHtrcGkoe2xhYmVsOmtpbmQ/J0hpZ2ggLyBjcml0aWNhbCBwb3RlbnRpYWwn OidMb3N0IHRpbWUgaW5jaWRlbnRzJyx2YWx1ZTpraW5kP3Jvd3MuZmlsdGVyKHI9PlsnSElHSCcsJ0NSSVRJQ0FMJ10uaW5jbHVk ZXMoci5SaXNrTGV2ZWwpKS5sZW5ndGg6cm93cy5maWx0ZXIocj0+ci5Mb3N0VGltZT09PSdZJykubGVuZ3RoLGluc2lnaHQ6a2lu ZD8nTGVhcm5pbmcgb3Bwb3J0dW5pdGllcyc6J0FsbCB0aW1lJyx0b25lOidyZWQnLGljb246J2hlYXJ0LXB1bHNlJ30pfSR7a3Bp KHtsYWJlbDonQ2xvc2VkJyx2YWx1ZTpyb3dzLmxlbmd0aC1vcGVuLmxlbmd0aCxpbnNpZ2h0OidWZXJpZmllZCBhbmQgY2xvc2Vk Jyx0b25lOidncmVlbicsaWNvbjonY2lyY2xlLWNoZWNrJ30pfTwvZGl2PgogIDxkaXYgY2xhc3M9ImNhcmQiPiR7U0dULmh0bWwo J2luYycsW3trOidJZCcsbGFiZWw6J0luY2lkZW50IElEJyxyZW5kZXI6cj0+YDxzcGFuIGNsYXNzPSJtb25vIGIiPiR7ZXNjKHIu SWQpfTwvc3Bhbj5gfSx7azonT2NjdXJyZWRBdCcsbGFiZWw6J0RhdGUnLGdldDpyPT5mbXREVChyLk9jY3VycmVkQXQpLHNvcnR2 OnI9PnIuT2NjdXJyZWRBdH0se2s6J0tpbmQnLGxhYmVsOidLaW5kJyxmaWx0ZXI6IWtpbmR9LHtrOidUaXRsZScsbGFiZWw6J1Rp dGxlJyxyZW5kZXI6cj0+YDxiPiR7ZXNjKHIuVGl0bGUpfTwvYj5gfSx7azonU2l0ZUlkJyxsYWJlbDonU2l0ZScsZ2V0OnI9PnNp dGVOKHIuU2l0ZUlkKSxmaWx0ZXI6dHJ1ZX0se2s6J0xvY2F0aW9uJyxsYWJlbDonTG9jYXRpb24nfSx7azonVHlwZScsbGFiZWw6 J1R5cGUnLGZpbHRlcjp0cnVlfSx7azonUmlza0xldmVsJyxsYWJlbDonU2V2ZXJpdHknLGZpbHRlcjp0cnVlLHJlbmRlcjpyPT5y aXNrQ2hpcChyLlJpc2tMZXZlbCksc29ydHY6cj0+TnVtYmVyKHIuUmlza1Njb3JlKX0se2s6J0RlcHRJZCcsbGFiZWw6J0RlcGFy dG1lbnQnLGdldDpyPT5kZXB0TihyLkRlcHRJZCksZmlsdGVyOnRydWV9LHtrOidSZXBvcnRlck5hbWUnLGxhYmVsOidSZXBvcnRl cid9LHtrOidJbnZlc3RpZ2F0b3JJZCcsbGFiZWw6J093bmVyJyxnZXQ6cj0+ci5JbnZlc3RpZ2F0b3JJZD91TmFtZShyLkludmVz dGlnYXRvcklkKTon4oCUJ30se2s6J1N0YXR1cycsbGFiZWw6J1N0YXR1cycsZmlsdGVyOnRydWUscmVuZGVyOnI9PmNoaXAoci5T dGF0dXMpfSx7azonVXBkYXRlZEF0JyxsYWJlbDonTGFzdCB1cGRhdGVkJyxnZXQ6cj0+YWdvKHIuVXBkYXRlZEF0KSxzb3J0djpy PT5yLlVwZGF0ZWRBdH1dLHJvd3Mse25hbWU6a2luZD8nbmVhci1taXNzZXMnOidpbmNpZGVudHMnLG9uUm93OnI9PmdvKCdpbmNp ZGVudHMvJytyLklkKSxlbXB0eVRpdGxlOidObyBpbmNpZGVudHMnLGVtcHR5U3ViOiJObyBjcml0aWNhbCBpbmNpZGVudHMg4oCU IGxldCdzIGtlZXAgaXQgdGhhdCB3YXkuIn0pfTwvZGl2PmApOyBTR1QubW91bnQoKTsgfQphc3luYyBmdW5jdGlvbiB2SW5jaWRl bnQoaWQpeyBjb25zdCBkPWF3YWl0IGxvYWQoJ2dldEluY2lkZW50Jyx7aWR9KTsgaWYoIWQpIHJldHVybjsgY29uc3QgaT1kLmlu Y2lkZW50LCBpbnY9aS5JbnZlc3RpZ2F0aW9ufHx7fSwgdGw9QXJyYXkuaXNBcnJheShpLlRpbWVsaW5lKT9pLlRpbWVsaW5lOltd LCBzdD1pLlN0YXR1cywgY2k9ZC5jYW5JbnZlc3RpZ2F0ZTsKICBjb25zdCBCPShjLGwsZixjbHM9JycpPT5jP2A8YnV0dG9uIGNs YXNzPSJidG4gJHtjbHN9IiBvbmNsaWNrPSIke2Z9Ij4ke2x9PC9idXR0b24+YDonJzsKICBjb25zdCBvcGVuPWQuYWN0aW9ucy5m aWx0ZXIoYT0+YS5TdGF0dXMhPT0nQ2xvc2VkJykubGVuZ3RoOwogIGNvbnN0IG1ldGhvZD1pLk1ldGhvZHx8JzUgV2h5cycsIHdo eXM9KGludi53aHlzJiZpbnYud2h5cy5sZW5ndGg/aW52LndoeXM6WycnLCcnLCcnLCcnLCcnXSkuY29uY2F0KFsnJywnJywnJywn JywnJ10pLnNsaWNlKDAsNSksIGZiPWludi5maXNoYm9uZXx8e30sIGJ0PWludi5ib3d0aWV8fHt9LCBlZGl0YWJsZT1jaSYmWydV bmRlciBJbnZlc3RpZ2F0aW9uJywnUmVvcGVuZWQnLCdBc3NpZ25lZCddLmluY2x1ZGVzKHN0KTsKICBjb25zdCBpbnZIdG1sPWA8 Zm9ybSBpZD0iaW52ZiI+PGRpdiBjbGFzcz0icm93IGJldHdlZW4gbWIiPjxkaXYgY2xhc3M9ImZpZWxkIiBzdHlsZT0ibWFyZ2lu OjA7bWluLXdpZHRoOjI0MHB4Ij48bGFiZWw+TWV0aG9kb2xvZ3k8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ibWV0 aG9kIiAke2VkaXRhYmxlPycnOidkaXNhYmxlZCd9IG9uY2hhbmdlPSJxc2EoJy5tdGgnKS5mb3JFYWNoKHg9PnguY2xhc3NMaXN0 LnRvZ2dsZSgnaGlkZScseC5kYXRhc2V0Lm0hPT10aGlzLnZhbHVlJiYhKHguZGF0YXNldC5tPT09J25vdGVzJykpKSI+JHsoU0cu Y2ZnLmludmVzdGlnYXRpb25NZXRob2RzfHxbXSkubWFwKG09Pm9wdChtLG0sbWV0aG9kKSkuam9pbignJyl9PC9zZWxlY3Q+PC9k aXY+JHtlZGl0YWJsZT9gPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gcHJpIiBvbmNsaWNrPSJzYXZlSW52KCcke2ku SWR9JykiPiR7aWMoJ3NhdmUnLCdzbScpfSBTYXZlIGludmVzdGlnYXRpb248L2J1dHRvbj5gOicnfTwvZGl2PgogICA8ZGl2IGNs YXNzPSJtdGggJHttZXRob2Q9PT0nNSBXaHlzJz8nJzonaGlkZSd9IiBkYXRhLW09IjUgV2h5cyI+PGgzIGNsYXNzPSJtYiI+NSBX aHlzPC9oMz4ke3doeXMubWFwKCh3LGspPT5gPGRpdiBjbGFzcz0icm93IG1iIiBzdHlsZT0iYWxpZ24taXRlbXM6ZmxleC1zdGFy dCI+PHNwYW4gY2xhc3M9ImF2IHNtIiBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS1pbmspO21hcmdpbi10b3A6NnB4Ij4ke2srMX08 L3NwYW4+PGRpdiBjbGFzcz0iZ3JvdyI+PGxhYmVsIGNsYXNzPSJ0aW55IGIgbXV0ZWQiPldIWSAke2s9PT0wPydkaWQgaXQgaGFw cGVuJzonZGlkIHRoYXQgaGFwcGVuJ30/PC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0id2h5JHtrfSIgdmFsdWU9IiR7 ZXNjKHcpfSIgJHtlZGl0YWJsZT8nJzonZGlzYWJsZWQnfT48L2Rpdj48L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj4KICAgPGRpdiBj bGFzcz0ibXRoICR7bWV0aG9kPT09J0Zpc2hib25lIC8gSXNoaWthd2EnPycnOidoaWRlJ30iIGRhdGEtbT0iRmlzaGJvbmUgLyBJ c2hpa2F3YSI+PGgzIGNsYXNzPSJtYiI+RmlzaGJvbmUgKElzaGlrYXdhKTwvaDM+PGRpdiBjbGFzcz0iZ3JpZCBnMyI+JHtbJ1Bl b3BsZScsJ01hY2hpbmUnLCdNZXRob2QnLCdNYXRlcmlhbCcsJ01lYXN1cmVtZW50JywnRW52aXJvbm1lbnQnXS5tYXAoYz0+YDxk aXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+JHtjfTwvbGFiZWw+PHRleHRhcmVhIGNsYXNzPSJpbnAiIG5hbWU9ImZiXyR7Y30iIHN0 eWxlPSJtaW4taGVpZ2h0OjcwcHgiICR7ZWRpdGFibGU/Jyc6J2Rpc2FibGVkJ30+JHtlc2MoZmJbY118fCcnKX08L3RleHRhcmVh PjwvZGl2PmApLmpvaW4oJycpfTwvZGl2PjwvZGl2PgogICA8ZGl2IGNsYXNzPSJtdGggJHttZXRob2Q9PT0nQm93dGllJz8nJzon aGlkZSd9IiBkYXRhLW09IkJvd3RpZSI+PGgzIGNsYXNzPSJtYiI+Qm93dGllPC9oMz48ZGl2IGNsYXNzPSJncmlkIGczIj4ke1tb J3RocmVhdHMnLCdUaHJlYXRzJ10sWydwcmV2ZW50JywnUHJldmVudGl2ZSBiYXJyaWVycyddLFsndG9wJywnVG9wIGV2ZW50J10s WydtaXRpZ2F0ZScsJ01pdGlnYXRpbmcgYmFycmllcnMnXSxbJ2NvbnNlcXVlbmNlcycsJ0NvbnNlcXVlbmNlcyddLFsnZXNjYWxh dGlvbicsJ0VzY2FsYXRpb24gZmFjdG9ycyddXS5tYXAoYz0+YDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+JHtjWzFdfTwvbGFi ZWw+PHRleHRhcmVhIGNsYXNzPSJpbnAiIG5hbWU9ImJ0XyR7Y1swXX0iIHN0eWxlPSJtaW4taGVpZ2h0OjcwcHgiICR7ZWRpdGFi bGU/Jyc6J2Rpc2FibGVkJ30+JHtlc2MoYnRbY1swXV18fCcnKX08L3RleHRhcmVhPjwvZGl2PmApLmpvaW4oJycpfTwvZGl2Pjwv ZGl2PgogICA8ZGl2IGNsYXNzPSJmaWVsZCBtdCI+PGxhYmVsPkludmVzdGlnYXRpb24gbm90ZXMgJHshWyc1IFdoeXMnLCdGaXNo Ym9uZSAvIElzaGlrYXdhJywnQm93dGllJ10uaW5jbHVkZXMobWV0aG9kKT8nKCcrZXNjKG1ldGhvZCkrJyknOicnfTwvbGFiZWw+ PHRleHRhcmVhIGNsYXNzPSJpbnAiIG5hbWU9Im5vdGVzIiAke2VkaXRhYmxlPycnOidkaXNhYmxlZCd9PiR7ZXNjKGludi5ub3Rl c3x8JycpfTwvdGV4dGFyZWE+PC9kaXY+CiAgIDxkaXYgY2xhc3M9ImdyaWQgZzIiPjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+ Um9vdCBjYXVzZTwvbGFiZWw+PHRleHRhcmVhIGNsYXNzPSJpbnAiIG5hbWU9InJvb3RDYXVzZSIgJHtlZGl0YWJsZT8nJzonZGlz YWJsZWQnfSBzdHlsZT0iYm9yZGVyLWNvbG9yOiR7aS5Sb290Q2F1c2U/JyNCQkY3RDAnOicnfSI+JHtlc2MoaS5Sb290Q2F1c2V8 fCcnKX08L3RleHRhcmVhPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+Q29udHJpYnV0aW5nIGZhY3RvcnM8L2xhYmVs Pjx0ZXh0YXJlYSBjbGFzcz0iaW5wIiBuYW1lPSJmYWN0b3JzIiAke2VkaXRhYmxlPycnOidkaXNhYmxlZCd9PiR7ZXNjKGkuRmFj dG9yc3x8JycpfTwvdGV4dGFyZWE+PC9kaXY+PC9kaXY+CiAgIDxkaXYgY2xhc3M9ImRpc2NsYWltZXIiPiR7aWMoJ3NwYXJrbGVz Jywnc20nKX08c3Bhbj48Yj5TbWFydCBpbnNpZ2h0IChBSS1yZWFkeSk6PC9iPiBzdWdnZXN0aW9ucyBzdWNoIGFzIGxpa2VseSBy b290IGNhdXNlcyBvciBzaW1pbGFyIHBhc3QgaW5jaWRlbnRzIGFyZSBwcmVzZW50ZWQgYXMgcmV2aWV3YWJsZSByZWNvbW1lbmRh dGlvbnMgb25seSDigJQgdGhlIGludmVzdGlnYXRvciBkZWNpZGVzLjwvc3Bhbj48L2Rpdj48L2Zvcm0+YDsKICBtYWluKGAke2Ny dW1iKGkuS2luZD09PSdOZWFyIE1pc3MnPydOZWFyIE1pc3Nlcyc6J0luY2lkZW50cycsIGkuS2luZD09PSdOZWFyIE1pc3MnPydu ZWFybWlzcyc6J2luY2lkZW50cycpfTxkaXYgY2xhc3M9ImhkciI+PGRpdiBjbGFzcz0iZ3JvdyI+PGRpdiBjbGFzcz0iaWR0Ij4k e2VzYyhpLklkKX0gwrcgJHtlc2MoaS5LaW5kKX0gwrcgJHtlc2MoaS5UeXBlKX08L2Rpdj48aDEgc3R5bGU9Im1hcmdpbjo0cHgg MCAxMHB4Ij4ke2VzYyhpLlRpdGxlKX08L2gxPjxkaXYgY2xhc3M9InJvdyB3Ij4ke3Jpc2tDaGlwKGkuUmlza0xldmVsKX08c3Bh biBjbGFzcz0iYiBzbWFsbCI+JHtlc2MoaS5SaXNrTGV2ZWw9PT0nQ1JJVElDQUwnPydDcml0aWNhbCc6aS5SaXNrTGV2ZWw9PT0n SElHSCc/J0hpZ2gtcG90ZW50aWFsJzonJyl9ICR7ZXNjKGkuS2luZCl9PC9zcGFuPiR7Y2hpcChzdCl9JHtpLkxvc3RUaW1lPT09 J1knP2A8c3BhbiBjbGFzcz0iY2hpcCBjLXJlZCI+JHtpYygnYmVkJyl9TG9zdCB0aW1lPC9zcGFuPmA6Jyd9PHNwYW4gY2xhc3M9 ImNoaXAgYy1ncmF5Ij4ke2ljKCdtYXAtcGluJyl9JHtlc2Moc2l0ZU4oaS5TaXRlSWQpKX0gwrcgJHtlc2MoaS5Mb2NhdGlvbnx8 JycpfTwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJkZXRhaWwiPjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYg Y2xhc3M9ImNhcmQtYiI+JHt0YWJzKCdpbicsWwogICAge2xhYmVsOidPdmVydmlldycsaHRtbDpgPHAgc3R5bGU9Im1hcmdpbi10 b3A6MCI+JHtlc2MoaS5EZXNjcmlwdGlvbil9PC9wPjxkbCBjbGFzcz0iZGwiPjxkdD5PY2N1cnJlZDwvZHQ+PGRkPiR7Zm10RFQo aS5PY2N1cnJlZEF0KX08L2RkPjxkdD5EZXBhcnRtZW50PC9kdD48ZGQ+JHtlc2MoZGVwdEZ1bGwoaS5EZXB0SWQpKX08L2RkPjxk dD5SZXBvcnRlcjwvZHQ+PGRkPiR7ZXNjKGkuUmVwb3J0ZXJOYW1lKX08L2RkPjxkdD5TdXBlcnZpc29yPC9kdD48ZGQ+JHtlc2Mo dU5hbWUoZGVwdE1ncihpLkRlcHRJZCkpKX08L2RkPjxkdD5JbW1lZGlhdGUgYWN0aW9uPC9kdD48ZGQ+JHtlc2MoaS5JbW1lZGlh dGVBY3Rpb258fCfigJQnKX08L2RkPjxkdD5Qb3RlbnRpYWwgc2V2ZXJpdHk8L2R0PjxkZD4ke2VzYyhTRy5jZmcucmlza01hdHJp eC5zZXZlcml0eVtpLlNldmVyaXR5LTFdfHwnJyl9IChzY29yZSAke2kuUmlza1Njb3JlfSk8L2RkPjxkdD5BY3R1YWwgc2V2ZXJp dHk8L2R0PjxkZD4ke2VzYyhpLkFjdHVhbFNldmVyaXR5fHwnTm90IHlldCBjbGFzc2lmaWVkJyl9PC9kZD48ZHQ+SW52ZXN0aWdh dG9yPC9kdD48ZGQ+JHtpLkludmVzdGlnYXRvcklkP2VzYyh1TmFtZShpLkludmVzdGlnYXRvcklkKSk6J05vdCBhc3NpZ25lZCd9 PC9kZD48ZHQ+Um9vdCBjYXVzZTwvZHQ+PGRkPiR7ZXNjKGkuUm9vdENhdXNlfHwn4oCUJyl9PC9kZD48L2RsPmB9LAogICAge2xh YmVsOidUaW1lbGluZScsbjp0bC5sZW5ndGgsaHRtbDpgJHtjaT9gPGJ1dHRvbiBjbGFzcz0iYnRuIHNtIG1iIiBvbmNsaWNrPSJ0 bEV2ZW50KCcke2kuSWR9JykiPiR7aWMoJ3BsdXMnLCdzbScpfSBBZGQgZXZlbnQ8L2J1dHRvbj5gOicnfTxkaXYgY2xhc3M9InRs Ij4ke3RsLm1hcCh0PT5gPGRpdiBjbGFzcz0idGwtaSI+PGRpdiBjbGFzcz0idCI+JHtmbXREKHQudCl9IMK3IDxiIHN0eWxlPSJj b2xvcjp2YXIoLS1pbmspO2ZvbnQtc2l6ZToxNHB4Ij4ke2ZtdFQodC50KX08L2I+PC9kaXY+PGRpdj4ke2VzYyh0LnRleHQpfSR7 dC5ieT9gIDxzcGFuIGNsYXNzPSJzbWFsbCBtdXRlZCI+4oCUICR7ZXNjKHQuYnkpfTwvc3Bhbj5gOicnfTwvZGl2PjwvZGl2PmAp LmpvaW4oJycpfTwvZGl2PmB9LAogICAge2xhYmVsOidQZW9wbGUnLGh0bWw6YDxkbCBjbGFzcz0iZGwiPjxkdD5QZW9wbGUgaW52 b2x2ZWQ8L2R0PjxkZD4ke2VzYyhpLlBlb3BsZXx8J+KAlCcpfTwvZGQ+PGR0PldpdG5lc3NlczwvZHQ+PGRkPiR7ZXNjKGkuV2l0 bmVzc2VzfHwn4oCUJyl9PC9kZD48ZHQ+UmVwb3J0ZXI8L2R0PjxkZD4ke2VzYyhpLlJlcG9ydGVyTmFtZSl9PC9kZD48ZHQ+SW52 ZXN0aWdhdG9yPC9kdD48ZGQ+JHtlc2ModU5hbWUoaS5JbnZlc3RpZ2F0b3JJZCkpfTwvZGQ+PC9kbD5gfSwKICAgIHtsYWJlbDon RXZpZGVuY2UnLGh0bWw6cGhvdG9zSHRtbChpLlBob3Rvcyl9LAogICAge2xhYmVsOidJbnZlc3RpZ2F0aW9uJyxodG1sOmludkh0 bWx9LAogICAge2xhYmVsOidDb3JyZWN0aXZlIEFjdGlvbnMnLG46ZC5hY3Rpb25zLmxlbmd0aCxodG1sOmFjdGlvblJvd3MoZC5h Y3Rpb25zKX0sCiAgICB7bGFiZWw6J0F1ZGl0IFRyYWlsJyxuOmQuYXVkaXQubGVuZ3RoLGh0bWw6YXVkaXRIdG1sKGQuYXVkaXQp fV0pfTwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9InBhbmVsIj48ZGl2IGNsYXNzPSJjYXJkIHAiPjxoMyBjbGFzcz0ibWIiPkFj dGlvbiBwYW5lbDwvaDM+CiAgICAke0IoY2FuKCdpbmNpZGVudC5hc3NpZ24nKSYmWydSZXBvcnRlZCcsJ1Jlb3BlbmVkJ10uaW5j bHVkZXMoc3QpLGljKCdjaGVjay1jaGVjaycsJ3NtJykrJyBBY2tub3dsZWRnZScsYGluY09wKCcke2kuSWR9JywnYWNrbm93bGVk Z2UnKWAsJ3ByaScpfQogICAgJHtCKGNhbignaW5jaWRlbnQuYXNzaWduJykmJnN0IT09J0Nsb3NlZCcsaWMoJ3VzZXItcGx1cycs J3NtJykrJyBBc3NpZ24gaW52ZXN0aWdhdG9yJyxgYXNzaWduSW52KCcke2kuSWR9JylgLCBbJ0Fja25vd2xlZGdlZCddLmluY2x1 ZGVzKHN0KT8ncHJpJzonJyl9CiAgICAke0IoY2kmJlsnQXNzaWduZWQnLCdSZW9wZW5lZCcsJ0Fja25vd2xlZGdlZCddLmluY2x1 ZGVzKHN0KSYmaS5JbnZlc3RpZ2F0b3JJZCxpYygncGxheScsJ3NtJykrJyBTdGFydCBpbnZlc3RpZ2F0aW9uJyxgc3RhcnRJbnYo JyR7aS5JZH0nKWAsJ3ByaScpfQogICAgJHtCKGNpJiZzdD09PSdVbmRlciBJbnZlc3RpZ2F0aW9uJyxpYygnc2VuZCcsJ3NtJykr JyBTdWJtaXQgZm9yIHJldmlldycsYGluY09wKCcke2kuSWR9Jywnc3VibWl0UmV2aWV3JylgLCdwcmknKX0KICAgICR7QihjYW4o J2luY2lkZW50LmNsb3NlJykmJnN0PT09J0ludmVzdGlnYXRpb24gUmV2aWV3JyxpYygnYmFkZ2UtY2hlY2snLCdzbScpKycgQXBw cm92ZSBpbnZlc3RpZ2F0aW9uJyxgaW5jT3AoJyR7aS5JZH0nLCdhcHByb3ZlJylgLCdvaycpfQogICAgJHtCKGNhbignaW5jaWRl bnQuY2xvc2UnKSYmc3Q9PT0nSW52ZXN0aWdhdGlvbiBSZXZpZXcnLGljKCd1bmRvLTInLCdzbScpKycgUmV0dXJuIHRvIGludmVz dGlnYXRvcicsYGluY0NtdCgnJHtpLklkfScsJ3JldHVybicsJ1JldHVybiBpbnZlc3RpZ2F0aW9uJywnV2hhdCBuZWVkcyBtb3Jl IHdvcms/JylgLCcnKX0KICAgICR7QihjYW4oJ2FjdGlvbi5jcmVhdGUnKSYmc3QhPT0nQ2xvc2VkJyxpYygncGx1cycsJ3NtJykr JyBDcmVhdGUgY29ycmVjdGl2ZSBhY3Rpb24nLGBuZXdBY3Rpb24oJ0lOQ0lERU5UJywnJHtpLklkfScsJyR7aS5TaXRlSWR9Jywn JHtpLkRlcHRJZH0nKWApfQogICAgJHtCKGNpJiZzdCE9PSdDbG9zZWQnLGljKCdnYXVnZScsJ3NtJykrJyBDbGFzc2lmeSBzZXZl cml0eScsYGNsYXNzaWZ5KCcke2kuSWR9Jywke2kuTGlrZWxpaG9vZH0sJHtpLlNldmVyaXR5fSlgKX0KICAgICR7QihjYW4oJ2lu Y2lkZW50LmNsb3NlJykmJnN0IT09J0Nsb3NlZCcsaWMoJ2xvY2snLCdzbScpKycgQ2xvc2UgaW5jaWRlbnQnLGBpbmNDbXQoJyR7 aS5JZH0nLCdjbG9zZScsJ0Nsb3NlIGluY2lkZW50JywnQ2xvc3VyZSBub3RlIChvcHRpb25hbCknLGZhbHNlKWAsIHN0PT09J1Zl cmlmaWNhdGlvbic/J29rJzonJyl9CiAgICAke0IoY2FuKCdpbmNpZGVudC5jbG9zZScpJiZzdD09PSdDbG9zZWQnLGljKCdyb3Rh dGUtY2N3Jywnc20nKSsnIFJlb3BlbicsYGluY0NtdCgnJHtpLklkfScsJ3Jlb3BlbicsJ1Jlb3BlbiBpbmNpZGVudCcsJ1doeSBp cyBpdCBiZWluZyByZW9wZW5lZD8nLHRydWUpYCwnZGFuZ2VyJyl9CiAgICAke2FpT24oJ2luY2lkZW50U3VtbWFyeScpfHxhaU9u KCdyb290Q2F1c2UnKXx8YWlPbignYWN0aW9ucycpP2A8YnV0dG9uIGNsYXNzPSJidG4gYWkiIG9uY2xpY2s9ImFpSW5jaWRlbnQo JyR7aS5JZH0nLCR7ZWRpdGFibGV9KSI+JHtpYygnc3BhcmtsZXMnLCdzbScpfSBBSSBhc3Npc3Q8L2J1dHRvbj5gOicnfQogICAg PGJ1dHRvbiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJwcmludEluYygpIj4ke2ljKCdwcmludGVyJywnc20nKX0gSW52ZXN0aWdhdGlv biByZXBvcnQ8L2J1dHRvbj4KICAgICR7c3QhPT0nQ2xvc2VkJyYmb3Blbj9gPHAgY2xhc3M9InNtYWxsIG11dGVkIj4ke29wZW59 IGNvcnJlY3RpdmUgYWN0aW9uJHtvcGVuPjE/J3MnOicnfSBzdGlsbCBvcGVuLjwvcD5gOicnfTwvZGl2PjwvZGl2PjwvZGl2PmAp OwogIHdpbmRvdy5faW5jQ3R4PXtpZDppLklkLHNpdGVJZDppLlNpdGVJZCxkZXB0SWQ6aS5EZXB0SWR9OwogIHdpbmRvdy5wcmlu dEluYz0oKT0+cHJpbnRSZXBvcnQoJ0luY2lkZW50ICYgSW52ZXN0aWdhdGlvbiBSZXBvcnQg4oCUICcraS5JZCwgYDxoMj5JbmNp ZGVudDwvaDI+JHtyZXBUYWJsZShbWydUaXRsZScsaS5UaXRsZV0sWydLaW5kIC8gdHlwZScsaS5LaW5kKycgwrcgJytpLlR5cGVd LFsnT2NjdXJyZWQnLGZtdERUKGkuT2NjdXJyZWRBdCldLFsnU2l0ZSAvIGxvY2F0aW9uJyxzaXRlTihpLlNpdGVJZCkrJyDCtyAn K2kuTG9jYXRpb25dLFsnRGVwYXJ0bWVudCcsZGVwdEZ1bGwoaS5EZXB0SWQpXSxbJ1JlcG9ydGVyJyxpLlJlcG9ydGVyTmFtZV0s WydEZXNjcmlwdGlvbicsaS5EZXNjcmlwdGlvbl0sWydJbW1lZGlhdGUgYWN0aW9uJyxpLkltbWVkaWF0ZUFjdGlvbl0sWydSaXNr JyxpLlJpc2tMZXZlbCsnIChzY29yZSAnK2kuUmlza1Njb3JlKycpJ10sWydBY3R1YWwgc2V2ZXJpdHknLGkuQWN0dWFsU2V2ZXJp dHldLFsnTG9zdCB0aW1lJyxpLkxvc3RUaW1lPT09J1knPydZZXMnOidObyddLFsnU3RhdHVzJyxzdF1dKX08aDI+SW52ZXN0aWdh dGlvbiAoJHtlc2MobWV0aG9kKX0pPC9oMj4keyhpbnYud2h5c3x8W10pLmZpbHRlcihTdHJpbmcpLm1hcCgodyxrKT0+YDxwPjxi PldoeSAke2srMX06PC9iPiAke2VzYyh3KX08L3A+YCkuam9pbignJyl9JHtyZXBUYWJsZShbWydSb290IGNhdXNlJyxpLlJvb3RD YXVzZV0sWydDb250cmlidXRpbmcgZmFjdG9ycycsaS5GYWN0b3JzXSxbJ05vdGVzJyxpbnYubm90ZXNdXSl9PGgyPlRpbWVsaW5l PC9oMj48dGFibGU+JHt0bC5tYXAodD0+YDx0cj48dGQgc3R5bGU9IndpZHRoOjE2MHB4Ij4ke2ZtdERUKHQudCl9PC90ZD48dGQ+ JHtlc2ModC50ZXh0KX08L3RkPjwvdHI+YCkuam9pbignJyl9PC90YWJsZT48aDI+Q29ycmVjdGl2ZSBhY3Rpb25zPC9oMj48dGFi bGU+PHRyPjx0aD5JRDwvdGg+PHRoPkFjdGlvbjwvdGg+PHRoPk93bmVyPC90aD48dGg+RHVlPC90aD48dGg+U3RhdHVzPC90aD48 L3RyPiR7ZC5hY3Rpb25zLm1hcChhPT5gPHRyPjx0ZD4ke2EuSWR9PC90ZD48dGQ+JHtlc2MoYS5UaXRsZSl9PC90ZD48dGQ+JHtl c2ModU5hbWUoYS5Pd25lcklkKSl9PC90ZD48dGQ+JHtmbXREKGEuRHVlRGF0ZSl9PC90ZD48dGQ+JHthLlN0YXR1c308L3RkPjwv dHI+YCkuam9pbignJyl9PC90YWJsZT5gKTsgfQp2YXIgZGVwdE1nciA9IGRlcHRJZCA9PiB7IGNvbnN0IHU9U0cuTC51c2Vycy5m aW5kKHg9PnguUm9sZT09PSdERVBUX01BTkFHRVInJiZ4LkRlcHRJZD09PWRlcHRJZCl8fFNHLkwudXNlcnMuZmluZCh4PT54LlJv bGU9PT0nU1VQRVJWSVNPUicmJnguRGVwdElkPT09ZGVwdElkKTsgcmV0dXJuIHU/dS5JZDonJzsgfTsKYXN5bmMgZnVuY3Rpb24g aW5jT3AoaWQsIG9wLCBleHRyYSl7IHRyeXsgY29uc3Qgcj1hd2FpdCBjYWxsKCdpbmNpZGVudEFjdGlvbicsT2JqZWN0LmFzc2ln bih7aWQsb3B9LGV4dHJhfHx7fSkpOyBjZWxlYnJhdGUoci5yZXdhcmQpOyB0b2FzdCgnSW5jaWRlbnQgdXBkYXRlZCcsJ29rJyxy LmluY2lkZW50LlN0YXR1cyk7IHJlbmRlcigpOyB9Y2F0Y2goZSl7IHRvYXN0KGUubWVzc2FnZSwnZXJyJyk7IH0gfQpmdW5jdGlv biBpbmNDbXQoaWQsIG9wLCB0aXRsZSwgbGFiZWwsIHJlcSl7IGNvbmZpcm1Cb3godGl0bGUsIGBUaGlzIHdpbGwgYmUgcmVjb3Jk ZWQgaW4gdGhlIGF1ZGl0IHRyYWlsLmAsIGQ9PmluY09wKGlkLG9wLHtjb21tZW50OmQuY29tbWVudH0pLCB7Y29tbWVudDpsYWJl bCwgcmVxdWlyZWQ6cmVxLCBkYW5nZXI6b3A9PT0ncmVvcGVuJ30pOyB9CmZ1bmN0aW9uIGFzc2lnbkludihpZCl7IG1vZGFsKCdB c3NpZ24gaW52ZXN0aWdhdG9yJywgYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+SW52ZXN0aWdhdG9yPC9sYWJlbD48c2VsZWN0 IGNsYXNzPSJpbnAiIG5hbWU9ImludmVzdGlnYXRvcklkIj4ke3NlbFVzZXJzKCcnLHU9PlsnU0FGRVRZX09GRklDRVInLCdIU0Vf T0ZGSUNFUicsJ1NBRkVUWV9NQU5BR0VSJywnU0FGRVRZX0RJUkVDVE9SJywnU0lURV9NQU5BR0VSJywnREVQVF9NQU5BR0VSJywn U1VQRVJWSVNPUiddLmluY2x1ZGVzKHUuUm9sZSksJ+KAlCBzZWxlY3Qg4oCUJyl9PC9zZWxlY3Q+PC9kaXY+YCwge3N1Ym1pdDon QXNzaWduJywgb25TdWJtaXQ6IGFzeW5jIGQ9PnsgaWYoIWQuaW52ZXN0aWdhdG9ySWQpe3RvYXN0KCdDaG9vc2UgYW4gaW52ZXN0 aWdhdG9yJywnZXJyJyk7cmV0dXJuIGZhbHNlO30gYXdhaXQgaW5jT3AoaWQsJ2Fzc2lnbicsZCk7IH19KTsgfQpmdW5jdGlvbiBz dGFydEludihpZCl7IG1vZGFsKCdTdGFydCBpbnZlc3RpZ2F0aW9uJywgYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+TWV0aG9k b2xvZ3k8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ibWV0aG9kIj4keyhTRy5jZmcuaW52ZXN0aWdhdGlvbk1ldGhv ZHN8fFtdKS5tYXAobT0+b3B0KG0pKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj5gLCB7c3VibWl0OidTdGFydCcsIG9uU3VibWl0 OiBhc3luYyBkPT5pbmNPcChpZCwnc3RhcnQnLGQpfSk7IH0KZnVuY3Rpb24gdGxFdmVudChpZCl7IG1vZGFsKCdBZGQgdGltZWxp bmUgZXZlbnQnLCBgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5XaGVuPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgdHlwZT0i ZGF0ZXRpbWUtbG9jYWwiIG5hbWU9InRpbWUiPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+V2hhdCBoYXBwZW5lZDwv bGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9InRleHQiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSJlLmcuIEFyZWEgc2VjdXJl ZCI+PC9kaXY+YCwge3N1Ym1pdDonQWRkJywgb25TdWJtaXQ6IGFzeW5jIGQ9PnsgaWYoIWQudGV4dCl7dG9hc3QoJ0Rlc2NyaWJl IHRoZSBldmVudCcsJ2VycicpO3JldHVybiBmYWxzZTt9IGF3YWl0IGluY09wKGlkLCd0aW1lbGluZScse3RpbWU6ZC50aW1lP25l dyBEYXRlKGQudGltZSkudG9JU09TdHJpbmcoKTonJyx0ZXh0OmQudGV4dH0pOyB9fSk7IH0KZnVuY3Rpb24gY2xhc3NpZnkoaWQs TCxTdil7IGNvbnN0IHJtPVNHLmNmZy5yaXNrTWF0cml4OyBtb2RhbCgnQ2xhc3NpZnkgc2V2ZXJpdHknLCBgPGRpdiBjbGFzcz0i Z3JpZCBnMiI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5MaWtlbGlob29kPC9sYWJlbD4ke2xzU2VsZWN0KCdsaWtlbGlob29k JyxybS5saWtlbGlob29kLEwpfTwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+UG90ZW50aWFsIHNldmVyaXR5PC9sYWJl bD4ke2xzU2VsZWN0KCdzZXZlcml0eScscm0uc2V2ZXJpdHksU3YpfTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFi ZWw+QWN0dWFsIHNldmVyaXR5PC9sYWJlbD48c2VsZWN0IGNsYXNzPSJpbnAiIG5hbWU9ImFjdHVhbFNldmVyaXR5Ij4ke1snTm9u ZScsJ0ZpcnN0IGFpZCcsJ01lZGljYWwgdHJlYXRtZW50JywnUmVzdHJpY3RlZCB3b3JrJywnTG9zdCB0aW1lJywnRmF0YWxpdHkn LCdQcm9wZXJ0eSBkYW1hZ2UnLCdFbnZpcm9ubWVudGFsIHJlbGVhc2UnXS5tYXAoeD0+b3B0KHgpKS5qb2luKCcnKX08L3NlbGVj dD48L2Rpdj48bGFiZWwgY2xhc3M9InJvdyBzbWFsbCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJsb3N0VGltZSI+IExv c3QgdGltZSBpbmp1cnk8L2xhYmVsPmAsIHtvblN1Ym1pdDogYXN5bmMgZD0+aW5jT3AoaWQsJ3NldmVyaXR5JyxkKX0pOyB9CmFz eW5jIGZ1bmN0aW9uIHNhdmVJbnYoaWQpeyBjb25zdCBmPXFzKCcjaW52ZicpLCBkPWZvcm1EYXRhKGYpOyBjb25zdCBwPXttZXRo b2Q6ZC5tZXRob2Qsd2h5czpbMCwxLDIsMyw0XS5tYXAoaz0+ZFsnd2h5JytrXXx8JycpLGZpc2hib25lOnt9LGJvd3RpZTp7fSxu b3RlczpkLm5vdGVzLHJvb3RDYXVzZTpkLnJvb3RDYXVzZSxmYWN0b3JzOmQuZmFjdG9yc307IE9iamVjdC5rZXlzKGQpLmZvckVh Y2goaz0+eyBpZihrLnN0YXJ0c1dpdGgoJ2ZiXycpKSBwLmZpc2hib25lW2suc2xpY2UoMyldPWRba107IGlmKGsuc3RhcnRzV2l0 aCgnYnRfJykpIHAuYm93dGllW2suc2xpY2UoMyldPWRba107IH0pOyBhd2FpdCBpbmNPcChpZCwnc2F2ZScscCk7IH0KCi8qIC0t LS0tLS0tLS0gT2JzZXJ2YXRpb25zIC0tLS0tLS0tLS0gKi8KVklFV1Mub2JzZXJ2YXRpb25zID0gYXN5bmMgKCkgPT4geyBjb25z dCByb3dzPWF3YWl0IGxvYWQoJ2xpc3RPYnNlcnZhdGlvbnMnKTsgaWYoIXJvd3MpIHJldHVybjsgY29uc3QgcG9zPXJvd3MuZmls dGVyKHI9Pi9TYWZlfFBvc2l0aXZlfEdvb2QvLnRlc3Qoci5UeXBlKSYmIS9VbnNhZmUvLnRlc3Qoci5UeXBlKSk7CiAgbWFpbihg JHtwYWdlSCgnU2FmZXR5IE9ic2VydmF0aW9ucycsJ1NhZmUgYW5kIHVuc2FmZSBhY3RzIGFuZCBjb25kaXRpb25zLCBnb29kIGNh dGNoZXMgYW5kIHBvc2l0aXZlIHJlY29nbml0aW9uLicsIGAke2NhbigncmVwb3J0LmNyZWF0ZScpP2A8YnV0dG9uIGNsYXNzPSJi dG4iIG9uY2xpY2s9ImdvKCdyZXBvcnQvR29vZCBDYXRjaCcpIj4ke2ljKCdzaGllbGQtY2hlY2snLCdzbScpfSBHb29kIGNhdGNo PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIHByaSIgb25jbGljaz0iZ28oJ3JlcG9ydC9PYnNlcnZhdGlvbicpIj4ke2ljKCdw bHVzJywnc20nKX0gTmV3IG9ic2VydmF0aW9uPC9idXR0b24+YDonJ31gKX0KICA8ZGl2IGNsYXNzPSJncmlkIGc0IG1iIj4ke2tw aSh7bGFiZWw6J09ic2VydmF0aW9ucycsdmFsdWU6cm93cy5sZW5ndGgsaW5zaWdodDonQWxsIHRpbWUsIGluIHlvdXIgc2NvcGUn LHRvbmU6J2JsdWUnLGljb246J2V5ZSd9KX0ke2twaSh7bGFiZWw6J1Bvc2l0aXZlJyx2YWx1ZTpwb3MubGVuZ3RoLGluc2lnaHQ6 TWF0aC5yb3VuZChwb3MubGVuZ3RoL01hdGgubWF4KDEscm93cy5sZW5ndGgpKjEwMCkrJyUgcG9zaXRpdmUgcmF0aW8nLHRvbmU6 J2dyZWVuJyxpY29uOid0aHVtYnMtdXAnfSl9JHtrcGkoe2xhYmVsOidHb29kIGNhdGNoZXMnLHZhbHVlOnJvd3MuZmlsdGVyKHI9 PnIuR29vZENhdGNoPT09J1knKS5sZW5ndGgsaW5zaWdodDonU3RvcHBlZCBiZWZvcmUgaGFybScsdG9uZTonZ3JlZW4nLGljb246 J3NoaWVsZC1jaGVjayd9KX0ke2twaSh7bGFiZWw6J1Vuc2FmZScsdmFsdWU6cm93cy5maWx0ZXIocj0+L1Vuc2FmZS8udGVzdChy LlR5cGUpKS5sZW5ndGgsaW5zaWdodDonQ29udmVydCB0byBoYXphcmRzIHdoZW4gbmVlZGVkJyx0b25lOidvcmFuZ2UnLGljb246 J3RyaWFuZ2xlLWFsZXJ0J30pfTwvZGl2PgogIDxkaXYgY2xhc3M9ImNhcmQiPiR7U0dULmh0bWwoJ29icycsW3trOidJZCcsbGFi ZWw6J0lEJyxyZW5kZXI6cj0+YDxzcGFuIGNsYXNzPSJtb25vIGIiPiR7ZXNjKHIuSWQpfTwvc3Bhbj5gfSx7azonQ3JlYXRlZEF0 JyxsYWJlbDonRGF0ZScsZ2V0OnI9PmZtdEQoci5DcmVhdGVkQXQpLHNvcnR2OnI9PnIuQ3JlYXRlZEF0fSx7azonVHlwZScsbGFi ZWw6J1R5cGUnLGZpbHRlcjp0cnVlLHJlbmRlcjpyPT5gPHNwYW4gY2xhc3M9ImNoaXAgJHsvVW5zYWZlLy50ZXN0KHIuVHlwZSk/ J2Mtb3JhbmdlJzonYy1ncmVlbid9Ij4ke2ljKC9VbnNhZmUvLnRlc3Qoci5UeXBlKT8ndHJpYW5nbGUtYWxlcnQnOid0aHVtYnMt dXAnKX0ke2VzYyhyLlR5cGUpfTwvc3Bhbj5gfSx7azonRGVzY3JpcHRpb24nLGxhYmVsOidPYnNlcnZhdGlvbid9LHtrOidTaXRl SWQnLGxhYmVsOidTaXRlJyxnZXQ6cj0+c2l0ZU4oci5TaXRlSWQpLGZpbHRlcjp0cnVlfSx7azonTG9jYXRpb24nLGxhYmVsOidM b2NhdGlvbid9LHtrOidPYnNlcnZlck5hbWUnLGxhYmVsOidPYnNlcnZlcid9LHtrOidSZWNvZ25pemVkSWQnLGxhYmVsOidSZWNv Z25pc2VkJyxnZXQ6cj0+ci5SZWNvZ25pemVkSWQ/dU5hbWUoci5SZWNvZ25pemVkSWQpOicnfSx7azonU3RhdHVzJyxsYWJlbDon U3RhdHVzJyxmaWx0ZXI6dHJ1ZSxyZW5kZXI6cj0+Y2hpcChyLlN0YXR1cyl9XSxyb3dzLHtuYW1lOidvYnNlcnZhdGlvbnMnLG9u Um93Om9wZW5PYnN9KX08L2Rpdj5gKTsgU0dULm1vdW50KCk7IH07CmZ1bmN0aW9uIG9wZW5PYnMobyl7IGNvbnN0IHJldj1jYW4o J2hhemFyZC5hc3NpZ24nKXx8Y2FuKCdyZWNvZ25pdGlvbi5naXZlJyk7IGRyYXdlcignT2JzZXJ2YXRpb24gJytlc2Moby5JZCks IGA8ZGl2IGNsYXNzPSJyb3cgdyBtYiI+PHNwYW4gY2xhc3M9ImNoaXAgJHsvVW5zYWZlLy50ZXN0KG8uVHlwZSk/J2Mtb3Jhbmdl JzonYy1ncmVlbid9Ij4ke2VzYyhvLlR5cGUpfTwvc3Bhbj4ke2NoaXAoby5TdGF0dXMpfTwvZGl2PjxwPiR7ZXNjKG8uRGVzY3Jp cHRpb24pfTwvcD4ke3Bob3Rvc0h0bWwoby5QaG90b3MpfTxkbCBjbGFzcz0iZGwgbXQyIj48ZHQ+T2JzZXJ2ZXI8L2R0PjxkZD4k e2VzYyhvLk9ic2VydmVyTmFtZSl9PC9kZD48ZHQ+V2hlcmU8L2R0PjxkZD4ke2VzYyhzaXRlTihvLlNpdGVJZCkpfSDCtyAke2Vz YyhvLkxvY2F0aW9ufHwnJyl9PC9kZD48ZHQ+V2hlbjwvZHQ+PGRkPiR7Zm10RFQoby5DcmVhdGVkQXQpfTwvZGQ+JHtvLlJlY29n bml6ZWRJZD9gPGR0PlJlY29nbmlzZWQ8L2R0PjxkZD4ke2VzYyh1TmFtZShvLlJlY29nbml6ZWRJZCkpfTwvZGQ+YDonJ308L2Rs PgogICR7cmV2JiZvLlN0YXR1cz09PSdTdWJtaXR0ZWQnP2A8ZGl2IGNsYXNzPSJyb3cgdyBtdDIiPjxidXR0b24gY2xhc3M9ImJ0 biBvayIgb25jbGljaz0ib2JzT3AoJyR7by5JZH0nLCdhY2NlcHQnKSI+JHtpYygnY2hlY2snLCdzbScpfSBBY2NlcHQ8L2J1dHRv bj4key9VbnNhZmUvLnRlc3Qoby5UeXBlKSYmY2FuKCdoYXphcmQuYXNzaWduJyk/YDxidXR0b24gY2xhc3M9ImJ0biBwcmkiIG9u Y2xpY2s9Im9ic09wKCcke28uSWR9JywnY29udmVydCcpIj4ke2ljKCdjb25zdHJ1Y3Rpb24nLCdzbScpfSBDb252ZXJ0IHRvIGhh emFyZDwvYnV0dG9uPmA6Jyd9PGJ1dHRvbiBjbGFzcz0iYnRuIGRhbmdlciIgb25jbGljaz0ib2JzT3AoJyR7by5JZH0nLCdyZWpl Y3QnKSI+JHtpYygneCcsJ3NtJyl9IFJlamVjdCAocmV2ZXJzZXMgcG9pbnRzKTwvYnV0dG9uPjwvZGl2PmA6Jyd9YCk7IH0KYXN5 bmMgZnVuY3Rpb24gb2JzT3AoaWQsIG9wKXsgdHJ5eyBjb25zdCByPWF3YWl0IGNhbGwoJ3Jldmlld09ic2VydmF0aW9uJyx7aWQs b3B9KTsgdG9hc3Qob3A9PT0nY29udmVydCc/J0hhemFyZCAnK3IucmVmKycgY3JlYXRlZCc6J09ic2VydmF0aW9uIHVwZGF0ZWQn LCdvaycpOyBjbG9zZURyYXdlcigpOyBpZihvcD09PSdjb252ZXJ0JykgZ28oJ2hhemFyZHMvJytyLnJlZik7IGVsc2UgcmVuZGVy KCk7IH1jYXRjaChlKXsgdG9hc3QoZS5tZXNzYWdlLCdlcnInKTsgfSB9CgovKiAtLS0tLS0tLS0tIEluc3BlY3Rpb25zICYgYXVk aXRzIC0tLS0tLS0tLS0gKi8KVklFV1MuaW5zcGVjdGlvbnMgPSAoKSA9PiB2SW5zcGVjdGlvbnMoJ0luc3BlY3Rpb24nKTsKVklF V1MuYXVkaXRzID0gKCkgPT4gdkluc3BlY3Rpb25zKCdBdWRpdCcpOwphc3luYyBmdW5jdGlvbiB2SW5zcGVjdGlvbnMoa2luZCl7 IGNvbnN0IGQ9YXdhaXQgbG9hZCgnbGlzdEluc3BlY3Rpb25zJyx7a2luZH0pOyBpZighZCkgcmV0dXJuOyBjb25zdCByb3V0ZT1r aW5kPT09J0F1ZGl0Jz8nYXVkaXRzJzonaW5zcGVjdGlvbnMnOwogIGlmKFNHLnBhcmFtc1swXSkgcmV0dXJuIHZJbnNwZWN0aW9u KFNHLnBhcmFtc1swXSwgcm91dGUpOwogIGNvbnN0IHJvd3M9ZC5pbnNwZWN0aW9ucywgYXZnPXJvd3MubGVuZ3RoP01hdGgucm91 bmQocm93cy5yZWR1Y2UoKGEscik9PmErTnVtYmVyKHIuU2NvcmV8fDApLDApL3Jvd3MubGVuZ3RoKTowLCBmYWlscz1yb3dzLnJl ZHVjZSgoYSxyKT0+YStOdW1iZXIoci5GYWlsc3x8MCksMCk7CiAgbWFpbihgJHtwYWdlSChraW5kPT09J0F1ZGl0Jz8nU2FmZXR5 IEF1ZGl0cyc6J1NhZmV0eSBJbnNwZWN0aW9ucycsIGtpbmQ9PT0nQXVkaXQnPydTdHJ1Y3R1cmVkIGF1ZGl0cyB3aXRoIGZpbmRp bmdzIHRoYXQgYmVjb21lIGNvcnJlY3RpdmUgYWN0aW9ucy4nOidDaGVja2xpc3RzIHdpdGggUGFzcyAvIEZhaWwgLyBOL0EgLyBP YnNlcnZhdGlvbiwgcGhvdG8gZXZpZGVuY2UgYW5kIEdQUy4nKX0KICA8ZGl2IGNsYXNzPSJncmlkIGc0IG1iIj4ke2twaSh7bGFi ZWw6a2luZCsncyBjb21wbGV0ZWQnLHZhbHVlOnJvd3MubGVuZ3RoLGluc2lnaHQ6cm93cy5maWx0ZXIocj0+U3RyaW5nKHIuQ3Jl YXRlZEF0KS5zbGljZSgwLDEwKT09PXRvZGF5KCkpLmxlbmd0aCsnIHRvZGF5Jyx0b25lOidibHVlJyxpY29uOidjbGlwYm9hcmQt Y2hlY2snfSl9JHtrcGkoe2xhYmVsOidBdmVyYWdlIHNjb3JlJyx2YWx1ZTphdmcsc3VmZml4OiclJyxpbnNpZ2h0OmF2Zz49OTA/ J1N0cm9uZyBjb21wbGlhbmNlJzonUm9vbSB0byBpbXByb3ZlJyx0b25lOmF2Zz49OTA/J2dyZWVuJzonb3JhbmdlJyxpY29uOidn YXVnZSd9KX0ke2twaSh7bGFiZWw6J0ZpbmRpbmdzJyx2YWx1ZTpmYWlscyxpbnNpZ2h0OidGYWlsZWQgY2hlY2tsaXN0IGl0ZW1z Jyx0b25lOmZhaWxzPydvcmFuZ2UnOidncmVlbicsaWNvbjonY2lyY2xlLXgnfSl9JHtrcGkoe2xhYmVsOidUZW1wbGF0ZXMnLHZh bHVlOmQudGVtcGxhdGVzLmxlbmd0aCxpbnNpZ2h0OidDb25maWd1cmFibGUgaW4gQWRtaW4nLHRvbmU6J2JsdWUnLGljb246J2xh eW91dC10ZW1wbGF0ZSd9KX08L2Rpdj4KICAke2NhbignaW5zcGVjdGlvbi5jcmVhdGUnKT9gPGgzIGNsYXNzPSJtYiI+U3RhcnQg YSR7a2luZD09PSdBdWRpdCc/J24gYXVkaXQnOiduIGluc3BlY3Rpb24nfTwvaDM+PGRpdiBjbGFzcz0iZ3JpZCBnNCBtYiI+JHtk LnRlbXBsYXRlcy5tYXAodD0+YDxidXR0b24gY2xhc3M9ImtpbmQiIG9uY2xpY2s9J2NvbmR1Y3QoJHtKU09OLnN0cmluZ2lmeSh0 LklkKX0pJz48c3BhbiBjbGFzcz0icWkiIHN0eWxlPSJiYWNrZ3JvdW5kOnZhcigtLXkyKTtjb2xvcjp2YXIoLS15MykiPiR7aWMo a2luZD09PSdBdWRpdCc/J2ZpbGUtc2VhcmNoJzonY2xpcGJvYXJkLWNoZWNrJyl9PC9zcGFuPjxiPiR7ZXNjKHQuTmFtZSl9PC9i PjxzcGFuPiR7dC5RdWVzdGlvbnMubGVuZ3RofSBjaGVja3M8L3NwYW4+PC9idXR0b24+YCkuam9pbignJyl9PC9kaXY+YDonJ30K ICA8ZGl2IGNsYXNzPSJjYXJkIj4ke1NHVC5odG1sKCdpbnMnLFt7azonSWQnLGxhYmVsOidJRCcscmVuZGVyOnI9PmA8c3BhbiBj bGFzcz0ibW9ubyBiIj4ke2VzYyhyLklkKX08L3NwYW4+YH0se2s6J0NyZWF0ZWRBdCcsbGFiZWw6J0RhdGUnLGdldDpyPT5mbXRE KHIuQ3JlYXRlZEF0KSxzb3J0djpyPT5yLkNyZWF0ZWRBdH0se2s6J1RpdGxlJyxsYWJlbDonVGl0bGUnLHJlbmRlcjpyPT5gPGI+ JHtlc2Moci5UaXRsZSl9PC9iPmB9LHtrOidTaXRlSWQnLGxhYmVsOidTaXRlJyxnZXQ6cj0+c2l0ZU4oci5TaXRlSWQpLGZpbHRl cjp0cnVlfSx7azonSW5zcGVjdG9ySWQnLGxhYmVsOmtpbmQ9PT0nQXVkaXQnPydBdWRpdG9yJzonSW5zcGVjdG9yJyxnZXQ6cj0+ dU5hbWUoci5JbnNwZWN0b3JJZCksZmlsdGVyOnRydWV9LHtrOidTY29yZScsbGFiZWw6J1Njb3JlJyxyZW5kZXI6cj0+YDxiIHN0 eWxlPSJjb2xvcjoke3IuU2NvcmU+PTkwPyd2YXIoLS1ncmVlbiknOnIuU2NvcmU+PTcwPycjQ0E4QTA0JzondmFyKC0tcmVkKSd9 Ij4ke3IuU2NvcmV9JTwvYj5gLHNvcnR2OnI9Pk51bWJlcihyLlNjb3JlKX0se2s6J0ZhaWxzJyxsYWJlbDonRmluZGluZ3MnLHNv cnR2OnI9Pk51bWJlcihyLkZhaWxzKX0se2s6J1N0YXR1cycsbGFiZWw6J1N0YXR1cycscmVuZGVyOnI9PmNoaXAoci5TdGF0dXMp fV0scm93cyx7bmFtZTpyb3V0ZSxvblJvdzpyPT5nbyhyb3V0ZSsnLycrci5JZCl9KX08L2Rpdj5gKTsgU0dULm1vdW50KCk7CiAg d2luZG93Ll90cGxzPWQudGVtcGxhdGVzOyB9CmZ1bmN0aW9uIGNvbmR1Y3QodGlkKXsgY29uc3QgdD0od2luZG93Ll90cGxzfHxb XSkuZmluZCh4PT54LklkPT09dGlkKTsgbGV0IHNlYz0nJzsKICBtb2RhbCh0Lk5hbWUsIGA8ZGl2IGNsYXNzPSJncmlkIGcyIj48 ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlNpdGU8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ic2l0ZUlkIj4ke3Nl bFNpdGVzKFNHLnVzZXIuU2l0ZUlkKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkRlcGFydG1lbnQ8 L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0iZGVwdElkIj4ke3NlbERlcHRzKFNHLnVzZXIuRGVwdElkLFNHLnVzZXIu U2l0ZUlkKX08L3NlbGVjdD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkxvY2F0aW9uIC8gYXNzZXQ8L2xh YmVsPjxkaXYgY2xhc3M9InJvdyI+PGlucHV0IGNsYXNzPSJpbnAgZ3JvdyIgbmFtZT0ibG9jYXRpb24iIHBsYWNlaG9sZGVyPSJl LmcuIFJURy0wNCwgV2FyZWhvdXNlIFpvbmUgQiI+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIG9uY2xpY2s9Imdl byh0aGlzLmZvcm0sdGhpcykiPiR7aWMoJ2xvY2F0ZS1maXhlZCcsJ3NtJyl9IEdQUzwvYnV0dG9uPjwvZGl2PjxpbnB1dCB0eXBl PSJoaWRkZW4iIG5hbWU9ImxhdCI+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibG5nIj48L2Rpdj4KICAke3QuUXVlc3Rpb25z Lm1hcCgocSxrKT0+eyBjb25zdCBoPXEuc2VjdGlvbiYmcS5zZWN0aW9uIT09c2VjP2A8ZGl2IGNsYXNzPSJ0aW55IGIgbXV0ZWQg bXQiIHN0eWxlPSJsZXR0ZXItc3BhY2luZzouMWVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSI+JHtlc2Moc2VjPXEuc2VjdGlv bil9PC9kaXY+YDonJzsgcmV0dXJuIGAke2h9PGRpdiBjbGFzcz0iY2FyZCBwIiBzdHlsZT0ibWFyZ2luOjhweCAwO3BhZGRpbmc6 MTJweCI+PGRpdiBjbGFzcz0iYiBzbWFsbCBtYiIgc3R5bGU9Im1hcmdpbi1ib3R0b206OHB4Ij4ke2srMX0uICR7ZXNjKHEucSl9 PC9kaXY+PGRpdiBjbGFzcz0ib3B0cyI+JHtbJ1Bhc3MnLCdGYWlsJywnTi9BJywnT2JzZXJ2YXRpb24nXS5tYXAoYT0+YDxsYWJl bCBjbGFzcz0ib3B0IiBzdHlsZT0icGFkZGluZzo2cHggMTFweDtmb250LXNpemU6MTNweCI+PGlucHV0IHR5cGU9InJhZGlvIiBj bGFzcz0ic3IiIG5hbWU9ImEke2t9IiB2YWx1ZT0iJHthfSIgJHthPT09J1Bhc3MnPydjaGVja2VkJzonJ30+JHthfTwvbGFiZWw+ YCkuam9pbignJyl9PC9kaXY+PGlucHV0IGNsYXNzPSJpbnAgbXQiIHN0eWxlPSJtYXJnaW4tdG9wOjhweDttaW4taGVpZ2h0OjM0 cHgiIG5hbWU9ImMke2t9IiBwbGFjZWhvbGRlcj0iQ29tbWVudCAocmVxdWlyZWQgZm9yIEZhaWwpIj48L2Rpdj5gOyB9KS5qb2lu KCcnKX0KICA8ZGl2IGNsYXNzPSJmaWVsZCBtdCI+PGxhYmVsPlBob3RvIGV2aWRlbmNlPC9sYWJlbD4ke3Bob3RvSW5wdXQoJ2lu cycsJ0FkZCBwaG90b3MnKX08L2Rpdj48bGFiZWwgY2xhc3M9InJvdyBzbWFsbCBtYiI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBu YW1lPSJjcmVhdGVBY3Rpb25zIiBjaGVja2VkPiBDcmVhdGUgY29ycmVjdGl2ZSBhY3Rpb25zIGZvciBmYWlsZWQgaXRlbXMgYXV0 b21hdGljYWxseTwvbGFiZWw+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5TaWduYXR1cmUgKHR5cGUgeW91ciBmdWxsIG5hbWUp PC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0ic2lnbmF0dXJlIiB2YWx1ZT0iJHtlc2MoU0cudXNlci5OYW1lKX0iIHJl cXVpcmVkPjwvZGl2PjxkaXYgY2xhc3M9InNtYWxsIG11dGVkIj5UaW1lc3RhbXAgaXMgcmVjb3JkZWQgYXV0b21hdGljYWxseS48 L2Rpdj5gLAogIHsgd2lkZTp0cnVlLCBzdWJtaXQ6J1N1Ym1pdCcsIG9uT3BlbjpmPT57IGFmdGVyUmVwb3J0Rm9ybShmKTsgcXNh KCcub3B0JyxmKS5mb3JFYWNoKG89PnsgaWYocXMoJ2lucHV0JyxvKS5jaGVja2VkKSBvLmNsYXNzTGlzdC5hZGQoJ29uJyk7IH0p OyB9LAogICAgb25TdWJtaXQ6IGFzeW5jIGQ9PnsgY29uc3QgcmVzcG9uc2VzPXQuUXVlc3Rpb25zLm1hcCgocSxrKT0+KHthOmRb J2EnK2tdLGNvbW1lbnQ6ZFsnYycra119KSk7IGNvbnN0IG1pc3Npbmc9cmVzcG9uc2VzLmZpbmRJbmRleChyPT5yLmE9PT0nRmFp bCcmJiFTdHJpbmcoci5jb21tZW50fHwnJykudHJpbSgpKTsgaWYobWlzc2luZz4tMSl7IHRvYXN0KCdBZGQgYSBjb21tZW50IGZv ciBmYWlsZWQgaXRlbSAnKyhtaXNzaW5nKzEpLCdlcnInKTsgcmV0dXJuIGZhbHNlOyB9CiAgICAgIGNvbnN0IHI9YXdhaXQgY2Fs bCgnc3VibWl0SW5zcGVjdGlvbicse3RlbXBsYXRlSWQ6dC5JZCxyZXNwb25zZXMsc2l0ZUlkOmQuc2l0ZUlkLGRlcHRJZDpkLmRl cHRJZCxsb2NhdGlvbjpkLmxvY2F0aW9uLGxhdDpkLmxhdCxsbmc6ZC5sbmcsY3JlYXRlQWN0aW9uczpkLmNyZWF0ZUFjdGlvbnMs cGhvdG9zOndpbmRvdy5fcGguaW5zfSk7IGNlbGVicmF0ZShyLnJld2FyZCk7IHRvYXN0KGAke3IuaW5zcGVjdGlvbi5JZH0gc2F2 ZWQg4oCUICR7ci5pbnNwZWN0aW9uLlNjb3JlfSVgLCdvaycsIHIuYWN0aW9ucy5sZW5ndGg/ci5hY3Rpb25zLmxlbmd0aCsnIGNv cnJlY3RpdmUgYWN0aW9uKHMpIGNyZWF0ZWQnOicnKTsgZ28oKHQuS2luZD09PSdBdWRpdCc/J2F1ZGl0cy8nOidpbnNwZWN0aW9u cy8nKStyLmluc3BlY3Rpb24uSWQpOyB9IH0pOyB9CmFzeW5jIGZ1bmN0aW9uIHZJbnNwZWN0aW9uKGlkLCByb3V0ZSl7IGNvbnN0 IGQ9YXdhaXQgY2FsbCgnZ2V0SW5zcGVjdGlvbicse2lkfSkuY2F0Y2goZT0+eyB0b2FzdChlLm1lc3NhZ2UsJ2VycicpOyByZXR1 cm4gbnVsbDsgfSk7IGlmKCFkKSByZXR1cm47IGNvbnN0IGk9ZC5pbnNwZWN0aW9uLCByZXNwPWkuUmVzcG9uc2VzfHxbXTsKICBt YWluKGAke2NydW1iKHJvdXRlPT09J2F1ZGl0cyc/J0F1ZGl0cyc6J0luc3BlY3Rpb25zJyxyb3V0ZSl9PGRpdiBjbGFzcz0iaGRy Ij48ZGl2IGNsYXNzPSJncm93Ij48ZGl2IGNsYXNzPSJpZHQiPiR7ZXNjKGkuSWQpfSDCtyAke2VzYyhpLktpbmQpfTwvZGl2Pjxo MSBzdHlsZT0ibWFyZ2luOjRweCAwIDEwcHgiPiR7ZXNjKGkuVGl0bGUpfTwvaDE+PGRpdiBjbGFzcz0icm93IHciPiR7Y2hpcChp LlN0YXR1cyl9PHNwYW4gY2xhc3M9ImNoaXAgYy1ncmF5Ij4ke2ljKCd1c2VyJyl9JHtlc2ModU5hbWUoaS5JbnNwZWN0b3JJZCkp fTwvc3Bhbj48c3BhbiBjbGFzcz0iY2hpcCBjLWdyYXkiPiR7aWMoJ2Nsb2NrJyl9JHtmbXREVChpLkNyZWF0ZWRBdCl9PC9zcGFu PiR7aS5MYXQ/YDxzcGFuIGNsYXNzPSJjaGlwIGMtZ3JheSI+JHtpYygnbWFwLXBpbicpfSR7ZXNjKGkuTGF0KX0sICR7ZXNjKGku TG5nKX08L3NwYW4+YDonJ308L2Rpdj48L2Rpdj4ke3JpbmcoTnVtYmVyKGkuU2NvcmUpLDExMCwxMixpLlNjb3JlPj05MD8ndmFy KC0tZ3JlZW4pJzppLlNjb3JlPj03MD8nI0NBOEEwNCc6J3ZhcigtLXJlZCknKX08L2Rpdj4KICA8ZGl2IGNsYXNzPSJkZXRhaWwi PjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtYiI+PGgzIGNsYXNzPSJtYiI+Q2hlY2tsaXN0PC9oMz48dGFibGUg Y2xhc3M9InRibCI+PHRoZWFkPjx0cj48dGg+IzwvdGg+PHRoPkNoZWNrPC90aD48dGg+UmVzdWx0PC90aD48dGg+Q29tbWVudDwv dGg+PC90cj48L3RoZWFkPjx0Ym9keT4ke3Jlc3AubWFwKChyLGspPT5gPHRyIHN0eWxlPSJjdXJzb3I6ZGVmYXVsdCI+PHRkIGRh dGEtbD0iIyI+JHtrKzF9PC90ZD48dGQgZGF0YS1sPSJDaGVjayI+JHtyLnNlY3Rpb24/YDxzcGFuIGNsYXNzPSJ0aW55IG11dGVk Ij4ke2VzYyhyLnNlY3Rpb24pfTwvc3Bhbj48YnI+YDonJ30ke2VzYyhyLnEpfTwvdGQ+PHRkIGRhdGEtbD0iUmVzdWx0Ij4ke2No aXAoci5hPT09J1Bhc3MnPydQYXNzZWQnOnIuYT09PSdGYWlsJz8nUmVqZWN0ZWQnOnIuYSl9PC90ZD48dGQgZGF0YS1sPSJDb21t ZW50Ij4ke2VzYyhyLmNvbW1lbnR8fCcnKX08L3RkPjwvdHI+YCkuam9pbignJyl9PC90Ym9keT48L3RhYmxlPjxoMyBjbGFzcz0i bXQyIG1iIj5QaG90b3M8L2gzPiR7cGhvdG9zSHRtbChpLlBob3Rvcyl9PGgzIGNsYXNzPSJtdDIgbWIiPkNvcnJlY3RpdmUgYWN0 aW9uczwvaDM+JHthY3Rpb25Sb3dzKGQuYWN0aW9ucyl9PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0icGFuZWwiPjxkaXYgY2xh c3M9ImNhcmQgcCI+PGJ1dHRvbiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJwcmludElucygpIj4ke2ljKCdwcmludGVyJywnc20nKX0g UHJpbnQgLyBQREYgcmVwb3J0PC9idXR0b24+JHtjYW4oJ2FjdGlvbi5jcmVhdGUnKT9gPGJ1dHRvbiBjbGFzcz0iYnRuIiBvbmNs aWNrPSJuZXdBY3Rpb24oJyR7aS5LaW5kPT09J0F1ZGl0Jz8nQVVESVQnOidJTlNQRUNUSU9OJ30nLCcke2kuSWR9JywnJHtpLlNp dGVJZH0nLCcke2kuRGVwdElkfScpIj4ke2ljKCdwbHVzJywnc20nKX0gQWRkIGNvcnJlY3RpdmUgYWN0aW9uPC9idXR0b24+YDon J308ZGwgY2xhc3M9ImRsIG10IiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnIiPjxkdD5TY29yZTwvZHQ+PGRk PiR7aS5TY29yZX0lPC9kZD48ZHQ+RmluZGluZ3M8L2R0PjxkZD4ke2kuRmFpbHN9PC9kZD48ZHQ+U2l0ZTwvZHQ+PGRkPiR7ZXNj KHNpdGVOKGkuU2l0ZUlkKSl9PC9kZD48ZHQ+RGVwdDwvZHQ+PGRkPiR7ZXNjKGRlcHROKGkuRGVwdElkKSl9PC9kZD48L2RsPjwv ZGl2PjwvZGl2PjwvZGl2PmApOwogIHdpbmRvdy5wcmludElucz0oKT0+cHJpbnRSZXBvcnQoaS5LaW5kKycgUmVwb3J0IOKAlCAn K2kuSWQsIGAke3JlcFRhYmxlKFtbJ1RlbXBsYXRlJywoZC50ZW1wbGF0ZXx8e30pLk5hbWVdLFsnTG9jYXRpb24nLGkuTG9jYXRp b25dLFsnU2l0ZScsc2l0ZU4oaS5TaXRlSWQpXSxbJ0luc3BlY3RvcicsdU5hbWUoaS5JbnNwZWN0b3JJZCldLFsnRGF0ZScsZm10 RFQoaS5DcmVhdGVkQXQpXSxbJ1Njb3JlJyxpLlNjb3JlKyclJ10sWydGaW5kaW5ncycsaS5GYWlsc11dKX08aDI+Q2hlY2tsaXN0 PC9oMj48dGFibGU+PHRyPjx0aD4jPC90aD48dGg+Q2hlY2s8L3RoPjx0aD5SZXN1bHQ8L3RoPjx0aD5Db21tZW50PC90aD48L3Ry PiR7cmVzcC5tYXAoKHIsayk9PmA8dHI+PHRkPiR7aysxfTwvdGQ+PHRkPiR7ZXNjKHIucSl9PC90ZD48dGQ+JHtyLmF9PC90ZD48 dGQ+JHtlc2Moci5jb21tZW50fHwnJyl9PC90ZD48L3RyPmApLmpvaW4oJycpfTwvdGFibGU+PGgyPkNvcnJlY3RpdmUgYWN0aW9u czwvaDI+PHRhYmxlPiR7ZC5hY3Rpb25zLm1hcChhPT5gPHRyPjx0ZD4ke2EuSWR9PC90ZD48dGQ+JHtlc2MoYS5UaXRsZSl9PC90 ZD48dGQ+JHtlc2ModU5hbWUoYS5Pd25lcklkKSl9PC90ZD48dGQ+JHthLlN0YXR1c308L3RkPjwvdHI+YCkuam9pbignJyl9PC90 YWJsZT48cCBjbGFzcz0ibXV0ZWQiPlNpZ25lZCBlbGVjdHJvbmljYWxseSBieSAke2VzYyh1TmFtZShpLkluc3BlY3RvcklkKSl9 PC9wPmApOyB9Cgo7CgovKiAtLS0tLS0tLS0tIFRvb2xib3ggdGFsa3MgLS0tLS0tLS0tLSAqLwpWSUVXUy50b29sYm94ID0gYXN5 bmMgKCkgPT4geyBpZihTRy5wYXJhbXNbMF0pIHJldHVybiB2VG9vbGJveChTRy5wYXJhbXNbMF0pOyBjb25zdCByb3dzPWF3YWl0 IGxvYWQoJ2xpc3RUb29sYm94Jyk7IGlmKCFyb3dzKSByZXR1cm47IGNvbnN0IHQ9dG9kYXkoKTsgY29uc3QgdXA9cm93cy5maWx0 ZXIocj0+ci5TdGF0dXM9PT0nU2NoZWR1bGVkJyYmci5EYXRlPj10KS5yZXZlcnNlKCksIHBhc3Q9cm93cy5maWx0ZXIocj0+IShy LlN0YXR1cz09PSdTY2hlZHVsZWQnJiZyLkRhdGU+PXQpKTsKICBjb25zdCBjYXJkPXI9PnsgY29uc3QgZD1wZChyLkRhdGUpfHxu ZXcgRGF0ZSgpOyByZXR1cm4gYDxkaXYgY2xhc3M9ImNhcmQgbGlzdC1pIiBzdHlsZT0iYm9yZGVyLXJhZGl1czoxMnB4O21hcmdp bi1ib3R0b206MTBweDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWxpbmUpIiBvbmNsaWNrPSJnbygndG9vbGJveC8ke3IuSWR9Jyki PjxkaXYgc3R5bGU9IndpZHRoOjU2cHg7dGV4dC1hbGlnbjpjZW50ZXI7ZmxleDpub25lO2JhY2tncm91bmQ6JHtyLlN0YXR1cz09 PSdTY2hlZHVsZWQnPyd2YXIoLS15KSc6J3ZhcigtLWdyYXkyKSd9O2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjZweCAwIj48 ZGl2IGNsYXNzPSJ0aW55IGIiPiR7TU9OW2QuZ2V0TW9udGgoKV0udG9VcHBlckNhc2UoKX08L2Rpdj48ZGl2IGNsYXNzPSJoZCIg c3R5bGU9ImZvbnQtc2l6ZToyMnB4Ij4ke2QuZ2V0RGF0ZSgpfTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Imdyb3ciPjxiPiR7ZXNj KHIuVG9waWMpfTwvYj48ZGl2IGNsYXNzPSJzbWFsbCBtdXRlZCI+JHtlc2Moci5UaW1lfHwnJyl9IMK3ICR7ZXNjKHIuTG9jYXRp b258fCcnKX0gwrcgJHtlc2Moc2l0ZU4oci5TaXRlSWQpKX0ke3IuRGVwdElkPycgwrcgJytlc2MoZGVwdE4oci5EZXB0SWQpKTon J308L2Rpdj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj5GYWNpbGl0YXRvcjogJHtlc2ModU5hbWUoci5GYWNpbGl0YXRvcklkKSl9 IMK3ICR7ci5hdHRlbmRlZXN9IGF0dGVuZGVkPC9kaXY+PC9kaXY+JHtyLmpvaW5lZD9jaGlwKCdBdHRlbmRlZCcpOmNoaXAoci5T dGF0dXMpfTwvZGl2PmA7IH07CiAgbWFpbihgJHtwYWdlSCgnVG9vbGJveCBUYWxrcycsJ1Nob3J0LCBmb2N1c2VkIHNhZmV0eSBi cmllZmluZ3MuIFNjYW4gdGhlIFFSIGNvZGUgdG8gY2hlY2sgaW4gYW5kIGVhcm4gcG9pbnRzLicsIGNhbigndG9vbGJveC5jcmVh dGUnKT9gPGJ1dHRvbiBjbGFzcz0iYnRuIHByaSIgb25jbGljaz0ibmV3VG9vbGJveCgpIj4ke2ljKCdwbHVzJywnc20nKX0gU2No ZWR1bGUgdGFsazwvYnV0dG9uPmA6JycpfQogIDxkaXYgY2xhc3M9ImdyaWQgZzIiPjxkaXY+PGgzIGNsYXNzPSJtYiI+VXBjb21p bmc8L2gzPiR7dXAubGVuZ3RoP3VwLm1hcChjYXJkKS5qb2luKCcnKTpgPGRpdiBjbGFzcz0iY2FyZCI+JHtlbXB0eSgnTm8gdG9v bGJveCB0YWxrcyBzY2hlZHVsZWQgeWV0JywnQ2hlY2sgYmFjayBzb29uLicsJ2NhbGVuZGFyJyl9PC9kaXY+YH08L2Rpdj48ZGl2 PjxoMyBjbGFzcz0ibWIiPlJlY2VudDwvaDM+JHtwYXN0LnNsaWNlKDAsMTApLm1hcChjYXJkKS5qb2luKCcnKXx8YDxkaXYgY2xh c3M9ImNhcmQiPiR7ZW1wdHkoJ05vdGhpbmcgeWV0JywnJyl9PC9kaXY+YH08L2Rpdj48L2Rpdj5gKTsgfTsKZnVuY3Rpb24gbmV3 VG9vbGJveCgpeyBjb25zdCB0b3BpY3M9WydXb3JraW5nIGF0IEhlaWdodCcsJ1BQRScsJ1ZlaGljbGUgU2FmZXR5JywnTG9ja291 dCAvIFRhZ291dCcsJ0hlYXQgU3RyZXNzJywnTWFudWFsIEhhbmRsaW5nJywnRmlyZSBTYWZldHknLCdFbWVyZ2VuY3kgUmVzcG9u c2UnLCdUcmFmZmljIE1hbmFnZW1lbnQnLCdNb2JpbGUgRXF1aXBtZW50JywnTmVhciBNaXNzIExlYXJuaW5nJ107CiAgbW9kYWwo J1NjaGVkdWxlIHRvb2xib3ggdGFsaycsIGA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlRvcGljPC9sYWJlbD48aW5wdXQgY2xh c3M9ImlucCIgbmFtZT0idG9waWMiIGxpc3Q9InRidG9waWNzIiByZXF1aXJlZD48ZGF0YWxpc3QgaWQ9InRidG9waWNzIj4ke3Rv cGljcy5tYXAodD0+YDxvcHRpb24gdmFsdWU9IiR7dH0iPmApLmpvaW4oJycpfTwvZGF0YWxpc3Q+PC9kaXY+PGRpdiBjbGFzcz0i Z3JpZCBnMyI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5EYXRlPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgdHlwZT0iZGF0 ZSIgbmFtZT0iZGF0ZSIgdmFsdWU9IiR7YWRkRCgxKX0iPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+VGltZTwvbGFi ZWw+PGlucHV0IGNsYXNzPSJpbnAiIHR5cGU9InRpbWUiIG5hbWU9InRpbWUiIHZhbHVlPSIwNzoxNSI+PC9kaXY+PGRpdiBjbGFz cz0iZmllbGQiPjxsYWJlbD5EdXJhdGlvbjwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9ImR1cmF0aW9uIiB2YWx1ZT0i MTUgbWluIj48L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkIGcyIj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlNpdGU8 L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ic2l0ZUlkIj4ke3NlbFNpdGVzKFNHLnVzZXIuU2l0ZUlkKX08L3NlbGVj dD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkRlcGFydG1lbnQ8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFt ZT0iZGVwdElkIj4ke3NlbERlcHRzKCcnLFNHLnVzZXIuU2l0ZUlkLCdBbGwgZGVwYXJ0bWVudHMnKX08L3NlbGVjdD48L2Rpdj48 L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkxvY2F0aW9uPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0ibG9j YXRpb24iIHZhbHVlPSJNdXN0ZXIgUG9pbnQgQSI+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5GYWNpbGl0YXRvcjwv bGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJmYWNpbGl0YXRvcklkIj4ke3NlbFVzZXJzKFNHLnVzZXIuSWQsdT0+dS5T aXRlSWQ9PT1TRy51c2VyLlNpdGVJZHx8dS5JZD09PVNHLnVzZXIuSWQpfTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxk Ij48bGFiZWw+T2JqZWN0aXZlczwvbGFiZWw+PHRleHRhcmVhIGNsYXNzPSJpbnAiIG5hbWU9Im9iamVjdGl2ZXMiPjwvdGV4dGFy ZWE+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5NYXRlcmlhbHMgLyBhdHRhY2htZW50IGxpbmtzPC9sYWJlbD48aW5w dXQgY2xhc3M9ImlucCIgbmFtZT0ibWF0ZXJpYWxzIj48L2Rpdj5gLAogIHsgc3VibWl0OidTY2hlZHVsZSAmIGludml0ZScsIG9u T3BlbjpmPT5saW5rU2l0ZURlcHQoZiksIG9uU3VibWl0OiBhc3luYyBkPT57IGNvbnN0IHQ9YXdhaXQgY2FsbCgnY3JlYXRlVG9v bGJveCcsZCk7IHRvYXN0KCdUb29sYm94IHRhbGsgc2NoZWR1bGVkJywnb2snLCdJbnZpdGF0aW9ucyBzZW50Jyk7IGdvKCd0b29s Ym94LycrdC5JZCk7IH0gfSk7IH0KYXN5bmMgZnVuY3Rpb24gdlRvb2xib3goaWQpeyBjb25zdCBkPWF3YWl0IGxvYWQoJ2dldFRv b2xib3gnLHtpZH0pOyBpZighZCkgcmV0dXJuOyBjb25zdCB0PWQuc2Vzc2lvbiwgbWU9ZC5hdHRlbmRhbmNlLnNvbWUoYT0+YS5V c2VySWQ9PT1TRy51c2VyLklkKSwgdXJsPShTRy51cmx8fEJPT1QudXJsKSsnP3FyPScrZW5jb2RlVVJJQ29tcG9uZW50KHQuUXJJ ZCk7CiAgbWFpbihgJHtjcnVtYignVG9vbGJveCBUYWxrcycsJ3Rvb2xib3gnKX08ZGl2IGNsYXNzPSJoZHIiPjxkaXYgY2xhc3M9 Imdyb3ciPjxkaXYgY2xhc3M9ImlkdCI+JHtlc2ModC5JZCl9PC9kaXY+PGgxIHN0eWxlPSJtYXJnaW46NHB4IDAgMTBweCI+JHtl c2ModC5Ub3BpYyl9PC9oMT48ZGl2IGNsYXNzPSJyb3cgdyI+JHtjaGlwKHQuU3RhdHVzKX08c3BhbiBjbGFzcz0iY2hpcCBjLWdy YXkiPiR7aWMoJ2NhbGVuZGFyJyl9JHtmbXREKHQuRGF0ZSl9IMK3ICR7ZXNjKHQuVGltZSl9PC9zcGFuPjxzcGFuIGNsYXNzPSJj aGlwIGMtZ3JheSI+JHtpYygnbWFwLXBpbicpfSR7ZXNjKHQuTG9jYXRpb24pfSDCtyAke2VzYyhzaXRlTih0LlNpdGVJZCkpfTwv c3Bhbj48c3BhbiBjbGFzcz0iY2hpcCBjLWdyYXkiPiR7aWMoJ3RpbWVyJyl9JHtlc2ModC5EdXJhdGlvbil9PC9zcGFuPjwvZGl2 PjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9ImRldGFpbCI+PGRpdiBjbGFzcz0iY29sIj48ZGl2IGNsYXNzPSJjYXJkIHAiPjxk bCBjbGFzcz0iZGwiPjxkdD5GYWNpbGl0YXRvcjwvZHQ+PGRkPiR7ZXNjKHVOYW1lKHQuRmFjaWxpdGF0b3JJZCkpfTwvZGQ+PGR0 PkF1ZGllbmNlPC9kdD48ZGQ+JHt0LkRlcHRJZD9lc2MoZGVwdEZ1bGwodC5EZXB0SWQpKTonRXZlcnlvbmUgYXQgJytlc2Moc2l0 ZU4odC5TaXRlSWQpKX08L2RkPjxkdD5PYmplY3RpdmVzPC9kdD48ZGQ+JHtlc2ModC5PYmplY3RpdmVzfHwn4oCUJyl9PC9kZD48 ZHQ+TWF0ZXJpYWxzPC9kdD48ZGQ+JHtlc2ModC5NYXRlcmlhbHN8fCfigJQnKX08L2RkPiR7dC5Ob3Rlcz9gPGR0PkZhY2lsaXRh dG9yIG5vdGVzPC9kdD48ZGQ+JHtlc2ModC5Ob3Rlcyl9PC9kZD5gOicnfSR7dC5RdWVzdGlvbnM/YDxkdD5RdWVzdGlvbnMgcmFp c2VkPC9kdD48ZGQ+JHtlc2ModC5RdWVzdGlvbnMpfTwvZGQ+YDonJ308L2RsPjwvZGl2PgogIDxkaXYgY2xhc3M9ImNhcmQiPjxk aXYgY2xhc3M9ImNhcmQtaCI+PGgzPkF0dGVuZGFuY2UgKCR7ZC5hdHRlbmRhbmNlLmxlbmd0aH0pPC9oMz48YnV0dG9uIGNsYXNz PSJidG4gc20iIG9uY2xpY2s9J2NzdigidG9vbGJveC1hdHRlbmRhbmNlLSR7ZXNjKHQuSWQpfSIsJHtKU09OLnN0cmluZ2lmeShk LmF0dGVuZGFuY2UpfSxbe2xhYmVsOiJOYW1lIixrOiJOYW1lIn0se2xhYmVsOiJFbXBsb3llZSBJRCIsazoiRW1wSWQifSx7bGFi ZWw6Ik1ldGhvZCIsazoiTWV0aG9kIn0se2xhYmVsOiJDaGVja2VkIGluIixrOiJDcmVhdGVkQXQifV0pJz4ke2ljKCdkb3dubG9h ZCcsJ3NtJyl9IEF0dGVuZGFuY2UgcmVwb3J0PC9idXR0b24+PC9kaXY+JHtkLmF0dGVuZGFuY2UubGVuZ3RoP2QuYXR0ZW5kYW5j ZS5tYXAoYT0+YDxkaXYgY2xhc3M9Imxpc3QtaSIgc3R5bGU9ImN1cnNvcjpkZWZhdWx0Ij4ke2F2KGEuTmFtZSwnc20nKX08ZGl2 IGNsYXNzPSJncm93IHNtYWxsIj48Yj4ke2VzYyhhLk5hbWUpfTwvYj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj4ke2ZtdERUKGEu Q3JlYXRlZEF0KX08L2Rpdj48L2Rpdj48c3BhbiBjbGFzcz0iY2hpcCBjLWdyYXkiPiR7aWMoYS5NZXRob2Q9PT0nUVInPydxci1j b2RlJzondXNlci1jaGVjaycpfSR7YS5NZXRob2Q9PT0nUVInPydRUiBjaGVjay1pbic6YS5NZXRob2Q9PT0nQVBQJz8nSW4gYXBw JzonRmFjaWxpdGF0b3InfTwvc3Bhbj48L2Rpdj5gKS5qb2luKCcnKTplbXB0eSgnTm8gb25lIGNoZWNrZWQgaW4geWV0JywnU2hv dyB0aGUgUVIgY29kZSBhdCB0aGUgc3RhcnQgb2YgdGhlIHRhbGsuJywndXNlcnMnKX08L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNz PSJwYW5lbCI+PGRpdiBjbGFzcz0iY2FyZCBwIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiPjxkaXYgY2xhc3M9InRpbnkgYiBt dXRlZCBtYiI+U0NBTiBUTyBDSEVDSyBJTjwvZGl2PjxpbWcgc3JjPSJodHRwczovL2FwaS5xcnNlcnZlci5jb20vdjEvY3JlYXRl LXFyLWNvZGUvP3NpemU9MjIweDIyMCZtYXJnaW49OCZkYXRhPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVybCl9IiBhbHQ9IlRvb2xi b3ggY2hlY2staW4gUVIgY29kZSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJib3JkZXItcmFkaXVzOjEwcHg7Ym9y ZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lKSI+PGRpdiBjbGFzcz0idGlueSBtdXRlZCBtb25vIiBzdHlsZT0id29yZC1icmVhazpi cmVhay1hbGw7bWFyZ2luOjhweCAwIj4ke2VzYyh0LlFySWQpfTwvZGl2PgogICAgJHshbWUmJnQuU3RhdHVzIT09J0NhbmNlbGxl ZCcmJmNhbigndG9vbGJveC5hdHRlbmQnKT9gPGJ1dHRvbiBjbGFzcz0iYnRuIHByaSIgc3R5bGU9Imp1c3RpZnktY29udGVudDpj ZW50ZXIiIG9uY2xpY2s9ImpvaW5UYignJHt0LklkfScpIj4ke2ljKCdoYW5kJywnc20nKX0gSSBhdHRlbmRlZCDigJQgYWNrbm93 bGVkZ2U8L2J1dHRvbj5gOm1lP2A8ZGl2IGNsYXNzPSJjaGlwIGMtZ3JlZW4iIHN0eWxlPSJtYXJnaW4tYm90dG9tOjhweCI+JHtp YygnY2hlY2snKX1Zb3UgYXR0ZW5kZWQ8L2Rpdj5gOicnfQogICAgJHtkLmNhbkNvbmR1Y3Q/YDxidXR0b24gY2xhc3M9ImJ0biIg b25jbGljaz0ibWFya0F0dCgnJHt0LklkfScpIj4ke2ljKCd1c2VyLWNoZWNrJywnc20nKX0gUmVjb3JkIGF0dGVuZGFuY2U8L2J1 dHRvbj4ke3QuU3RhdHVzIT09J0NvbXBsZXRlZCc/YDxidXR0b24gY2xhc3M9ImJ0biIgb25jbGljaz0iY2xvc2VUYignJHt0Lklk fScpIj4ke2ljKCdmbGFnJywnc20nKX0gQ29tcGxldGUgc2Vzc2lvbjwvYnV0dG9uPmA6Jyd9YDonJ30KICAgIDxidXR0b24gY2xh c3M9ImJ0biIgb25jbGljaz0id2luZG93Lm9wZW4oJ2h0dHBzOi8vYXBpLnFyc2VydmVyLmNvbS92MS9jcmVhdGUtcXItY29kZS8/ c2l6ZT02MDB4NjAwJmRhdGE9JHtlbmNvZGVVUklDb21wb25lbnQodXJsKX0nLCdfYmxhbmsnKSI+JHtpYygncHJpbnRlcicsJ3Nt Jyl9IFByaW50IFFSIHBvc3RlcjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2PmApOyB9CmFzeW5jIGZ1bmN0aW9uIGpvaW5UYihp ZCl7IHRyeXsgY29uc3Qgcj1hd2FpdCBjYWxsKCdqb2luVG9vbGJveCcse2lkfSk7IGNlbGVicmF0ZShyLnJld2FyZCk7IHRvYXN0 KCdQYXJ0aWNpcGF0aW9uIGFja25vd2xlZGdlZCcsJ29rJyk7IHJlbmRlcigpOyB9Y2F0Y2goZSl7IHRvYXN0KGUubWVzc2FnZSwn ZXJyJyk7IH0gfQphc3luYyBmdW5jdGlvbiBtYXJrQXR0KGlkKXsgY29uc3QgZD1hd2FpdCBjYWxsKCdnZXRUb29sYm94Jyx7aWR9 KTsgY29uc3QgdD1kLnNlc3Npb24sIGhhdmU9bmV3IFNldChkLmF0dGVuZGFuY2UubWFwKGE9PmEuVXNlcklkKSk7IGNvbnN0IHVz PVNHLkwudXNlcnMuZmlsdGVyKHU9PnUuU2l0ZUlkPT09dC5TaXRlSWQmJighdC5EZXB0SWR8fHUuRGVwdElkPT09dC5EZXB0SWQp KS5zb3J0KChhLGIpPT5hLk5hbWUubG9jYWxlQ29tcGFyZShiLk5hbWUpKTsKICBtb2RhbCgnUmVjb3JkIGF0dGVuZGFuY2UnLCBg PGlucHV0IGNsYXNzPSJpbnAgbWIiIHBsYWNlaG9sZGVyPSJGaWx0ZXIgbmFtZXPigKYiIG9uaW5wdXQ9InFzYSgnLmF0dGwgbGFi ZWwnKS5mb3JFYWNoKGw9Pmwuc3R5bGUuZGlzcGxheT1sLnRleHRDb250ZW50LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGhpcy52 YWx1ZS50b0xvd2VyQ2FzZSgpKT8nJzonbm9uZScpIj48ZGl2IGNsYXNzPSJhdHRsIiBzdHlsZT0ibWF4LWhlaWdodDo1MHZoO292 ZXJmbG93OmF1dG8iPiR7dXMubWFwKHU9PmA8bGFiZWwgY2xhc3M9InJvdyBzbWFsbCIgc3R5bGU9InBhZGRpbmc6N3B4IDRweDti b3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lMikiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0idXNlcklkcyIg ZGF0YS1tdWx0aT0iMSIgdmFsdWU9IiR7dS5JZH0iICR7aGF2ZS5oYXModS5JZCk/J2NoZWNrZWQgZGlzYWJsZWQnOicnfT4ke2F2 KHUuTmFtZSwnc20nKX08c3BhbiBjbGFzcz0iZ3JvdyI+JHtlc2ModS5OYW1lKX0gPHNwYW4gY2xhc3M9Im11dGVkIj7CtyAke2Vz YyhkZXB0Tih1LkRlcHRJZCkpfTwvc3Bhbj48L3NwYW4+JHtoYXZlLmhhcyh1LklkKT8nPHNwYW4gY2xhc3M9InRpbnkgbXV0ZWQi PmFscmVhZHkgaW48L3NwYW4+JzonJ308L2xhYmVsPmApLmpvaW4oJycpfTwvZGl2PmAsIHtzdWJtaXQ6J1NhdmUgYXR0ZW5kYW5j ZScsIG9uU3VibWl0OiBhc3luYyB4PT57IGNvbnN0IHI9YXdhaXQgY2FsbCgnbWFya0F0dGVuZGFuY2UnLHtpZCx1c2VySWRzOngu dXNlcklkc3x8W119KTsgdG9hc3Qoci5hZGRlZCsnIGF0dGVuZGVlKHMpIHJlY29yZGVkJywnb2snLCdQb2ludHMgYXdhcmRlZCcp OyByZW5kZXIoKTsgfX0pOyB9CmZ1bmN0aW9uIGNsb3NlVGIoaWQpeyBtb2RhbCgnQ29tcGxldGUgdG9vbGJveCBzZXNzaW9uJywg YDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+RmFjaWxpdGF0b3Igbm90ZXMgJiBvYnNlcnZhdGlvbnM8L2xhYmVsPjx0ZXh0YXJl YSBjbGFzcz0iaW5wIiBuYW1lPSJub3RlcyI+PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlF1ZXN0 aW9ucyByYWlzZWQ8L2xhYmVsPjx0ZXh0YXJlYSBjbGFzcz0iaW5wIiBuYW1lPSJxdWVzdGlvbnMiPjwvdGV4dGFyZWE+PC9kaXY+ PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Gb2xsb3ctdXAgYWN0aW9uIChvcHRpb25hbCk8L2xhYmVsPjxpbnB1dCBjbGFzcz0i aW5wIiBuYW1lPSJhY3Rpb25UaXRsZSI+PC9kaXY+PGRpdiBjbGFzcz0iZ3JpZCBnMiI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJl bD5Pd25lcjwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJvd25lcklkIj4ke3NlbFVzZXJzKCcnLG51bGwsJ+KAlCcp fTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+RHVlPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgdHlw ZT0iZGF0ZSIgbmFtZT0iZHVlRGF0ZSIgdmFsdWU9IiR7YWRkRCg3KX0iPjwvZGl2PjwvZGl2PmAsIHtzdWJtaXQ6J0NvbXBsZXRl Jywgb25TdWJtaXQ6IGFzeW5jIGQ9PnsgYXdhaXQgY2FsbCgnY2xvc2VUb29sYm94JyxPYmplY3QuYXNzaWduKGQse2lkfSkpOyB0 b2FzdCgnU2Vzc2lvbiBjb21wbGV0ZWQnLCdvaycsJ1Bvc3RlZCB0byB0aGUgU2FmZXR5IEZlZWQnKTsgcmVuZGVyKCk7IH19KTsg fQoKLyogLS0tLS0tLS0tLSBUcmFpbmluZyAtLS0tLS0tLS0tICovClZJRVdTLnRyYWluaW5nID0gYXN5bmMgKCkgPT4geyBjb25z dCBkPWF3YWl0IGxvYWQoJ2dldFRyYWluaW5nJyk7IGlmKCFkKSByZXR1cm47IGNvbnN0IHRhYj1TRy5wYXJhbXNbMF18fCdtaW5l JzsgY29uc3QgbXlTdGF0dXM9Yz0+eyBjb25zdCBycz1kLm1pbmUuZmlsdGVyKHI9PnIuQ291cnNlSWQ9PT1jLklkKTsgY29uc3Qg ZG9uZT1ycy5maWx0ZXIocj0+ci5TdGF0dXM9PT0nQ29tcGxldGVkJykuc29ydCgoYSxiKT0+U3RyaW5nKGIuRXhwaXJlc0F0KS5s b2NhbGVDb21wYXJlKFN0cmluZyhhLkV4cGlyZXNBdCkpKVswXTsgaWYoZG9uZSl7IGlmKGRvbmUuRXhwaXJlc0F0JiZkb25lLkV4 cGlyZXNBdDx0b2RheSgpKSByZXR1cm4gWydFeHBpcmVkJyxkb25lXTsgaWYoZG9uZS5FeHBpcmVzQXQmJmRvbmUuRXhwaXJlc0F0 PD1hZGREKDMwKSkgcmV0dXJuIFsnRXhwaXJpbmcnLGRvbmVdOyByZXR1cm4gWydWYWxpZCcsZG9uZV07IH0gaWYocnMuc29tZShy PT5yLlN0YXR1cz09PSdBc3NpZ25lZCcpKSByZXR1cm4gWydBc3NpZ25lZCcsbnVsbF07IHJldHVybiBbJ05vdCBTdGFydGVkJyxu dWxsXTsgfTsKICBjb25zdCBtaW5lPWA8ZGl2IGNsYXNzPSJncmlkIGc0IG1iIj4ke2twaSh7bGFiZWw6J015IGNvbXBsaWFuY2Un LHZhbHVlOmQubXlDb21wbGlhbmNlLnBjdCxzdWZmaXg6JyUnLGluc2lnaHQ6ZC5teUNvbXBsaWFuY2UuY29tcGxpYW50Kycgb2Yg JytkLm15Q29tcGxpYW5jZS5yZXF1aXJlZCsnIG1hbmRhdG9yeSB2YWxpZCcsdG9uZTpkLm15Q29tcGxpYW5jZS5wY3Q9PT0xMDA/ J2dyZWVuJzonb3JhbmdlJyxpY29uOidzaGllbGQtY2hlY2snfSl9JHtrcGkoe2xhYmVsOidDb3Vyc2VzIHBhc3NlZCcsdmFsdWU6 ZC5taW5lLmZpbHRlcihyPT5yLlN0YXR1cz09PSdDb21wbGV0ZWQnKS5sZW5ndGgsaW5zaWdodDonTGlmZXRpbWUnLHRvbmU6J2Js dWUnLGljb246J2dyYWR1YXRpb24tY2FwJ30pfSR7a3BpKHtsYWJlbDonRXhwaXJpbmcgc29vbicsdmFsdWU6ZC5jb3Vyc2VzLmZp bHRlcihjPT5teVN0YXR1cyhjKVswXT09PSdFeHBpcmluZycpLmxlbmd0aCxpbnNpZ2h0OidXaXRoaW4gMzAgZGF5cycsdG9uZTon b3JhbmdlJyxpY29uOidjYWxlbmRhci1jbG9jayd9KX0ke2twaSh7bGFiZWw6J0V4cGlyZWQnLHZhbHVlOmQuY291cnNlcy5maWx0 ZXIoYz0+bXlTdGF0dXMoYylbMF09PT0nRXhwaXJlZCcpLmxlbmd0aCxpbnNpZ2h0OidSZXRha2UgdG8gcmVzdG9yZScsdG9uZTon cmVkJyxpY29uOidjYWxlbmRhci14J30pfTwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWQgZzMiPiR7ZC5jb3Vyc2VzLm1hcChjPT57 IGNvbnN0IFtzdCxyXT1teVN0YXR1cyhjKTsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjYXJkIHAgY29sIiBzdHlsZT0iZ2FwOjhweCI+ PGRpdiBjbGFzcz0icm93IGJldHdlZW4iPjxzcGFuIGNsYXNzPSJjaGlwIGMtZ3JheSI+JHtlc2MoYy5UeXBlKX08L3NwYW4+JHtj aGlwKHN0KX08L2Rpdj48aDMgc3R5bGU9ImZvbnQtc2l6ZToxN3B4Ij4ke2VzYyhjLk5hbWUpfTwvaDM+PHAgY2xhc3M9InNtYWxs IG11dGVkIiBzdHlsZT0ibWFyZ2luOjAiPiR7ZXNjKGMuRGVzY3JpcHRpb24pfTwvcD48ZGl2IGNsYXNzPSJyb3cgdyBzbWFsbCBt dXRlZCIgc3R5bGU9ImdhcDoxNHB4Ij4ke2ljKCd0aW1lcicsJ3NtJyl9JHtlc2MoYy5EdXJhdGlvbil9ICR7aWMoJ3RhcmdldCcs J3NtJyl9UGFzcyAke2MuUGFzc01hcmt9JSAke2ljKCdjYWxlbmRhcicsJ3NtJyl9JHtOdW1iZXIoYy5WYWxpZGl0eU1vbnRocyk/ Yy5WYWxpZGl0eU1vbnRocysnIG1vIHZhbGlkaXR5JzonTm8gZXhwaXJ5J308L2Rpdj4ke3I/YDxkaXYgY2xhc3M9InNtYWxsIj5T Y29yZSA8Yj4ke3IuU2NvcmV9JTwvYj4gwrcgJHtyLkV4cGlyZXNBdD8nRXhwaXJlcyA8Yj4nK2ZtdEQoci5FeHBpcmVzQXQpKyc8 L2I+JzonQ29tcGxldGVkICcrZm10RChyLkNvbXBsZXRlZEF0KX08L2Rpdj4ke2JhcihOdW1iZXIoci5TY29yZSksJ2cnKX1gOicn fTxidXR0b24gY2xhc3M9ImJ0biAke3N0PT09J1ZhbGlkJz8nJzoncHJpJ30gbXQiIG9uY2xpY2s9J3F1aXooJHtKU09OLnN0cmlu Z2lmeShjLklkKX0pJz4ke2ljKHN0PT09J1ZhbGlkJz8ncm90YXRlLWNjdyc6J3BsYXknLCdzbScpfSAke3N0PT09J1ZhbGlkJz8n UmVmcmVzaCc6c3Q9PT0nRXhwaXJlZCc/J1JldGFrZSBub3cnOidTdGFydCBjb3Vyc2UnfTwvYnV0dG9uPjwvZGl2PmA7IH0pLmpv aW4oJycpfTwvZGl2PmA7CiAgY29uc3QgY29tcD1kLmNvbXBsaWFuY2U/YDxkaXYgY2xhc3M9ImdyaWQgZzEyIG1iIj48ZGl2IGNs YXNzPSJjYXJkIHAgcm93IiBzdHlsZT0iZ2FwOjIwcHgiPiR7cmluZyhkLmNvbXBsaWFuY2UucGN0LDEyMCwxMyxkLmNvbXBsaWFu Y2UucGN0Pj05MD8ndmFyKC0tZ3JlZW4pJzonI0VBNTgwQycpfTxkaXY+PGRpdiBjbGFzcz0iYiI+TWFuZGF0b3J5IHRyYWluaW5n IGNvbXBsaWFuY2U8L2Rpdj48ZGl2IGNsYXNzPSJzbWFsbCBtdXRlZCI+JHtkLmNvbXBsaWFuY2UuY29tcGxpYW50fSBvZiAke2Qu Y29tcGxpYW5jZS5yZXF1aXJlZH0gY2VydGlmaWNhdGlvbnMgdmFsaWQ8L2Rpdj48ZGl2IGNsYXNzPSJzbWFsbCBtdCI+JHtuZXcg U2V0KGQuY29tcGxpYW5jZS5yb3dzLmZpbHRlcihyPT5yLnN0YXR1cyE9PSdWYWxpZCcpLm1hcChyPT5yLnVzZXJJZCkpLnNpemV9 IHBlb3BsZSBuZWVkIHJlZnJlc2hlciB0cmFpbmluZzwvZGl2PiR7Y2FuKCd0cmFpbmluZy5tYW5hZ2UnKT9gPGJ1dHRvbiBjbGFz cz0iYnRuIHByaSBzbSBtdCIgb25jbGljaz0iYXNzaWduQ291cnNlKCkiPiR7aWMoJ3NlbmQnLCdzbScpfSBBc3NpZ24gdHJhaW5p bmc8L2J1dHRvbj5gOicnfTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQgcCI+JHtjaGFydEJveCgnY1RybicsMTYwKX08L2Rp dj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXJkIj4ke1NHVC5odG1sKCd0cm4nLFt7azonbmFtZScsbGFiZWw6J0VtcGxveWVlJyxy ZW5kZXI6cj0+YDxiPiR7ZXNjKHIubmFtZSl9PC9iPmB9LHtrOidkZXB0SWQnLGxhYmVsOidEZXBhcnRtZW50JyxnZXQ6cj0+ZGVw dEZ1bGwoci5kZXB0SWQpLGZpbHRlcjp0cnVlfSx7azonY291cnNlJyxsYWJlbDonQ291cnNlJyxmaWx0ZXI6dHJ1ZX0se2s6J3N0 YXR1cycsbGFiZWw6J1N0YXR1cycsZmlsdGVyOnRydWUscmVuZGVyOnI9PmNoaXAoci5zdGF0dXMpfSx7azonZXhwaXJlcycsbGFi ZWw6J0V4cGlyZXMnLGdldDpyPT5yLmV4cGlyZXM/Zm10RChyLmV4cGlyZXMpOifigJQnLHNvcnR2OnI9PnIuZXhwaXJlc3x8JzAn fSx7azonc2NvcmUnLGxhYmVsOidTY29yZScsZ2V0OnI9PnIuc2NvcmU/ci5zY29yZSsnJSc6Jyd9XSxkLmNvbXBsaWFuY2Uucm93 cyx7bmFtZTondHJhaW5pbmctY29tcGxpYW5jZScsc29ydDonc3RhdHVzJ30pfTwvZGl2PmA6Jyc7CiAgbWFpbihgJHtwYWdlSCgn VHJhaW5pbmcgQ2VudGVyJywnTWFuZGF0b3J5LCByb2xlLXNwZWNpZmljIGFuZCByZWZyZXNoZXIgdHJhaW5pbmcgd2l0aCBxdWl6 emVzIGFuZCBjZXJ0aWZpY2F0ZSB0cmFja2luZy4nKX0ke2QuY29tcGxpYW5jZT9gPGRpdiBjbGFzcz0ic2VnIG1iIj48YnV0dG9u IGNsYXNzPSIke3RhYj09PSdtaW5lJz8nb24nOicnfSIgb25jbGljaz0iZ28oJ3RyYWluaW5nJykiPk15IHRyYWluaW5nPC9idXR0 b24+PGJ1dHRvbiBjbGFzcz0iJHt0YWI9PT0ndGVhbSc/J29uJzonJ30iIG9uY2xpY2s9ImdvKCd0cmFpbmluZy90ZWFtJykiPlRl YW0gY29tcGxpYW5jZTwvYnV0dG9uPjwvZGl2PmA6Jyd9JHt0YWI9PT0ndGVhbScmJmQuY29tcGxpYW5jZT9jb21wOm1pbmV9YCk7 CiAgd2luZG93Ll9jb3Vyc2VzPWQuY291cnNlczsgaWYodGFiPT09J3RlYW0nJiZkLmNvbXBsaWFuY2UpeyBTR1QubW91bnQoKTsg Y29uc3QgYz17fTsgZC5jb21wbGlhbmNlLnJvd3MuZm9yRWFjaChyPT5jW3Iuc3RhdHVzXT0oY1tyLnN0YXR1c118fDApKzEpOyBj aGFydCgnY1RybicsJ2RvdWdobnV0JyxPYmplY3Qua2V5cyhjKSxbe2RhdGE6T2JqZWN0LnZhbHVlcyhjKSxiYWNrZ3JvdW5kQ29s b3I6T2JqZWN0LmtleXMoYykubWFwKGs9Pih7VmFsaWQ6JyMxNTgwM0QnLEV4cGlyaW5nOicjRkZDMjBFJyxFeHBpcmVkOicjQzgx RTFFJywnTm90IFN0YXJ0ZWQnOicjOTRBM0I4JyxBc3NpZ25lZDonIzFENEVEOCd9W2tdKSl9XSx7b3B0aW9uczp7cGx1Z2luczp7 bGVnZW5kOntwb3NpdGlvbjoncmlnaHQnfX19fSk7IH0gfTsKZnVuY3Rpb24gcXVpeihjaWQpeyBjb25zdCBjPXdpbmRvdy5fY291 cnNlcy5maW5kKHg9PnguSWQ9PT1jaWQpOyBpZighYy5RdWVzdGlvbnMubGVuZ3RoKSByZXR1cm4gdG9hc3QoJ05vIHF1aXogZm9y IHRoaXMgY291cnNlJywnZXJyJyk7CiAgbW9kYWwoYy5OYW1lLCBgPGRpdiBjbGFzcz0iYmFubmVyIGluZm8iPiR7aWMoJ2luZm8n KX08c3Bhbj4ke2MuUXVlc3Rpb25zLmxlbmd0aH0gcXVlc3Rpb25zIMK3IHBhc3MgbWFyayAke2MuUGFzc01hcmt9JSDCtyAke2Vz YyhjLkR1cmF0aW9uKX08L3NwYW4+PC9kaXY+JHtjLlF1ZXN0aW9ucy5tYXAoKHEsayk9PmA8ZGl2IGNsYXNzPSJjYXJkIHAgbWIi PjxiPiR7aysxfS4gJHtlc2MocS5xKX08L2I+PGRpdiBjbGFzcz0iY29sIG10IiBzdHlsZT0iZ2FwOjZweCI+JHtxLm9wdGlvbnMu bWFwKChvLGopPT5gPGxhYmVsIGNsYXNzPSJyb3cgc21hbGwgb3B0IiBzdHlsZT0iZm9udC13ZWlnaHQ6NTAwIj48aW5wdXQgdHlw ZT0icmFkaW8iIG5hbWU9InEke2t9IiB2YWx1ZT0iJHtqfSIgY2xhc3M9InNyIj4ke1N0cmluZy5mcm9tQ2hhckNvZGUoNjUrail9 LiAke2VzYyhvKX08L2xhYmVsPmApLmpvaW4oJycpfTwvZGl2PjwvZGl2PmApLmpvaW4oJycpfWAsCiAgeyB3aWRlOnRydWUsIHN1 Ym1pdDonU3VibWl0IGFuc3dlcnMnLCBvbk9wZW46Zj0+YWZ0ZXJSZXBvcnRGb3JtKGYpLCBvblN1Ym1pdDogYXN5bmMgZD0+eyBj b25zdCBhbnN3ZXJzPWMuUXVlc3Rpb25zLm1hcCgoXyxrKT0+ZFsncScra10pOyBpZihhbnN3ZXJzLnNvbWUoYT0+YT09bnVsbCkp eyB0b2FzdCgnQW5zd2VyIGV2ZXJ5IHF1ZXN0aW9uJywnZXJyJyk7IHJldHVybiBmYWxzZTsgfSBjb25zdCByPWF3YWl0IGNhbGwo J3N1Ym1pdFF1aXonLHtjb3Vyc2VJZDpjLklkLGFuc3dlcnN9KTsgY2VsZWJyYXRlKHIucmV3YXJkKTsKICAgIHNldFRpbWVvdXQo KCk9Pm1vZGFsKHIucGFzc2VkPydQYXNzZWQhJzonTm90IHF1aXRlJywgYDxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4k e3Jpbmcoci5zY29yZSwxMzAsMTQsci5wYXNzZWQ/J3ZhcigtLWdyZWVuKSc6J3ZhcigtLXJlZCknKX08aDIgY2xhc3M9Im10Ij4k e3IucGFzc2VkPydDZXJ0aWZpY2F0ZSByZWNvcmRlZCc6J1lvdSBuZWVkICcrci5wYXNzTWFyaysnJSB0byBwYXNzJ308L2gyPjxw IGNsYXNzPSJtdXRlZCI+JHtyLnJlc3VsdHMuZmlsdGVyKEJvb2xlYW4pLmxlbmd0aH0gb2YgJHtyLnJlc3VsdHMubGVuZ3RofSBj b3JyZWN0LjwvcD48L2Rpdj5gLCB7c3VibWl0OnIucGFzc2VkPydEb25lJzonVHJ5IGFnYWluJywgY2FuY2VsOmZhbHNlLCBvbk9w ZW46KCk9PnsgYWZ0ZXIoKTsgaWYoci5wYXNzZWQpIGNvbmZldHRpKCk7IH0sIG9uU3VibWl0OiBhc3luYygpPT57IGlmKCFyLnBh c3NlZCkgc2V0VGltZW91dCgoKT0+cXVpeihjaWQpLDEwMCk7IHJlbmRlcigpOyB9fSksMjAwKTsgfSB9KTsgfQpmdW5jdGlvbiBh c3NpZ25Db3Vyc2UoKXsgbW9kYWwoJ0Fzc2lnbiB0cmFpbmluZycsIGA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkNvdXJzZTwv bGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJjb3Vyc2VJZCI+JHt3aW5kb3cuX2NvdXJzZXMubWFwKGM9Pm9wdChjLklk LGMuTmFtZSkpLmpvaW4oJycpfTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+RGVwYXJ0bWVudDwvbGFi ZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJkZXB0SWQiPiR7c2VsRGVwdHMoJycsJycsJ+KAlCBvciBjaG9vc2UgcGVvcGxl IGJlbG93IOKAlCcpfTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+UGVvcGxlPC9sYWJlbD48c2VsZWN0 IGNsYXNzPSJpbnAiIG5hbWU9InVzZXJJZHMiIG11bHRpcGxlIHN0eWxlPSJoZWlnaHQ6MTgwcHgiPiR7c2VsVXNlcnMoKX08L3Nl bGVjdD48ZGl2IGNsYXNzPSJoaW50Ij5Ib2xkIEN0cmwgLyBDbWQgdG8gc2VsZWN0IHNldmVyYWwuPC9kaXY+PC9kaXY+YCwge3N1 Ym1pdDonQXNzaWduICYgbm90aWZ5Jywgb25TdWJtaXQ6IGFzeW5jIGQ9PnsgY29uc3Qgcj1hd2FpdCBjYWxsKCdhc3NpZ25Db3Vy c2UnLGQpOyB0b2FzdChyLmFzc2lnbmVkKycgcGVvcGxlIGFzc2lnbmVkJywnb2snKTsgcmVuZGVyKCk7IH19KTsgfQoKLyogLS0t LS0tLS0tLSBUcmFmZmljIHNhZmV0eSAtLS0tLS0tLS0tICovClZJRVdTLnRyYWZmaWMgPSAoKSA9PiB7IGNvbnN0IHA9U0cucGFy YW1zWzBdfHwnZGFzaCc7IGlmKHA9PT0nY2FzZScpIHJldHVybiB2Q2FzZShTRy5wYXJhbXNbMV0pOyBjb25zdCB0YWJzSD1gPGRp diBjbGFzcz0ic2VnIG1iIj4ke1tbJ2Rhc2gnLCdDb21tYW5kIGNlbnRlciddLFsnY2FzZXMnLCdFbmZvcmNlbWVudCBjYXNlcydd LFsnbmV3JywnTmV3IHZpb2xhdGlvbiddLFsnbWF0cml4JywnUGVuYWx0eSBtYXRyaXgnXV0uZmlsdGVyKHQ9PnRbMF0hPT0nbmV3 J3x8Y2FuKCd0cmFmZmljLmNyZWF0ZScpKS5tYXAodD0+YDxidXR0b24gY2xhc3M9IiR7cD09PXRbMF0/J29uJzonJ30iIG9uY2xp Y2s9ImdvKCd0cmFmZmljLyR7dFswXX0nKSI+JHt0WzFdfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PmA7CiAgY29uc3QgaGVh ZD1wYWdlSCgnVHJhZmZpYyBTYWZldHknLCdDdW11bGF0aXZlIGNhcmQtYmFzZWQgZW5mb3JjZW1lbnQgYnkgRW1wbG95ZWUgLyBE cml2ZXIgSUQuIFRoZSBzeXN0ZW0gcmVjb3JkcyB0aGUgc3RhZ2Ug4oCUIGF1dGhvcmlzZWQgcGVvcGxlIG1ha2UgZXZlcnkgZGlz Y2lwbGluYXJ5IGRlY2lzaW9uLicsIGNhbigndHJhZmZpYy5jcmVhdGUnKT9gPGJ1dHRvbiBjbGFzcz0iYnRuIHByaSIgb25jbGlj az0iZ28oJ3RyYWZmaWMvbmV3JykiPiR7aWMoJ3BsdXMnLCdzbScpfSBSZWNvcmQgdmlvbGF0aW9uPC9idXR0b24+YDonJykrdGFi c0g7CiAgaWYocD09PSdjYXNlcycpIHJldHVybiB2Q2FzZXMoaGVhZCk7IGlmKHA9PT0nbmV3JykgcmV0dXJuIHZOZXdDYXNlKGhl YWQpOyBpZihwPT09J21hdHJpeCcpIHJldHVybiB2TWF0cml4KGhlYWQpOyByZXR1cm4gdlRyYWZmaWNEYXNoKGhlYWQpOyB9Owpm dW5jdGlvbiB0RmlsdGVycyhmKXsgY29uc3QgdHI9U0cuY2ZnLnRyYWZmaWM7IHJldHVybiBgPGRpdiBjbGFzcz0iY2FyZCBwIG1i Ij48Zm9ybSBpZD0idGZmIiBjbGFzcz0icm93IHciIHN0eWxlPSJnYXA6OHB4Ij4ke1tbJ2Zyb20nLCdkYXRlJywnRnJvbSddLFsn dG8nLCdkYXRlJywnVG8nXV0ubWFwKHg9PmA8aW5wdXQgY2xhc3M9ImlucCIgc3R5bGU9IndpZHRoOmF1dG8iIHR5cGU9ImRhdGUi IG5hbWU9IiR7eFswXX0iIHZhbHVlPSIke2VzYyhmW3hbMF1dfHwnJyl9IiBhcmlhLWxhYmVsPSIke3hbMl19Ij5gKS5qb2luKCcn KX0KICA8c2VsZWN0IGNsYXNzPSJpbnAiIHN0eWxlPSJ3aWR0aDphdXRvIiBuYW1lPSJzaXRlSWQiPiR7c2VsU2l0ZXMoZi5zaXRl SWQsJ0FsbCBzaXRlcycpfTwvc2VsZWN0PjxzZWxlY3QgY2xhc3M9ImlucCIgc3R5bGU9IndpZHRoOmF1dG8iIG5hbWU9ImRlcHRJ ZCI+JHtzZWxEZXB0cyhmLmRlcHRJZCwnJywnQWxsIGRlcGFydG1lbnRzJyl9PC9zZWxlY3Q+PHNlbGVjdCBjbGFzcz0iaW5wIiBz dHlsZT0id2lkdGg6YXV0byIgbmFtZT0idmlvbGF0aW9uIj4ke29wdCgnJywnQWxsIHZpb2xhdGlvbnMnKX0ke3RyLnZpb2xhdGlv bnMubWFwKHY9Pm9wdCh2LHYsZi52aW9sYXRpb24pKS5qb2luKCcnKX08L3NlbGVjdD48c2VsZWN0IGNsYXNzPSJpbnAiIHN0eWxl PSJ3aWR0aDphdXRvIiBuYW1lPSJ2ZWhpY2xlIj4ke29wdCgnJywnQWxsIHZlaGljbGVzJyl9JHt0ci52ZWhpY2xlVHlwZXMubWFw KHY9Pm9wdCh2LHYsZi52ZWhpY2xlKSkuam9pbignJyl9PC9zZWxlY3Q+PHNlbGVjdCBjbGFzcz0iaW5wIiBzdHlsZT0id2lkdGg6 YXV0byIgbmFtZT0iY2FyZCI+JHtvcHQoJycsJ0FsbCBjYXJkcycpfSR7WydZRUxMT1cnLCdSRUQnLCdCTEFDSyddLm1hcCh2PT5v cHQodix2KycgY2FyZCcsZi5jYXJkKSkuam9pbignJyl9PC9zZWxlY3Q+PHNlbGVjdCBjbGFzcz0iaW5wIiBzdHlsZT0id2lkdGg6 YXV0byIgbmFtZT0ic3RhdHVzIj4ke29wdCgnJywnQWxsIHN0YXR1c2VzJyl9JHt0ci5zdGF0dXNlcy5tYXAodj0+b3B0KHYsdixm LnN0YXR1cykpLmpvaW4oJycpfTwvc2VsZWN0PjxpbnB1dCBjbGFzcz0iaW5wIiBzdHlsZT0id2lkdGg6MTYwcHgiIG5hbWU9InEi IHBsYWNlaG9sZGVyPSJFbXBsb3llZSAvIGRyaXZlciIgdmFsdWU9IiR7ZXNjKGYucXx8JycpfSI+PGJ1dHRvbiBjbGFzcz0iYnRu IGRhcmsiPiR7aWMoJ2ZpbHRlcicsJ3NtJyl9IEFwcGx5PC9idXR0b24+PGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4g Z2hvc3QiIG9uY2xpY2s9IlNHLnRmPXt9O3JlbmRlcigpIj5SZXNldDwvYnV0dG9uPjwvZm9ybT48L2Rpdj5gOyB9CmZ1bmN0aW9u IGJpbmRURigpeyBxcygnI3RmZicpLm9uc3VibWl0PWU9PnsgZS5wcmV2ZW50RGVmYXVsdCgpOyBTRy50Zj1mb3JtRGF0YShlLnRh cmdldCk7IHJlbmRlcigpOyB9OyB9CmFzeW5jIGZ1bmN0aW9uIHZUcmFmZmljRGFzaChoZWFkKXsgU0cudGY9U0cudGZ8fHt9OyBj b25zdCBkPWF3YWl0IGxvYWQoJ2dldFRyYWZmaWMnLFNHLnRmKTsgaWYoIWQpIHJldHVybjsgY29uc3Qgaz1kLmtwaXM7CiAgbWFp bihgJHtoZWFkfSR7dEZpbHRlcnMoU0cudGYpfTxkaXYgY2xhc3M9ImdyaWQgZzQiPiR7W3tsYWJlbDonVG90YWwgdmlvbGF0aW9u cycsdmFsdWU6ay50b3RhbCxpbnNpZ2h0OmsucmVwZWF0KycgcmVwZWF0IG9mZmVuY2VzJyx0b25lOidibHVlJyxpY29uOidjYXIt ZnJvbnQnfSx7bGFiZWw6J1llbGxvdyBjYXJkcycsdmFsdWU6ay55ZWxsb3csaW5zaWdodDonV2FybmluZyAvIEF0LVJpc2snLHRv bmU6J3llbGxvdycsaWNvbjonc3F1YXJlJ30se2xhYmVsOidSZWQgY2FyZHMnLHZhbHVlOmsucmVkLGluc2lnaHQ6J1NlcmlvdXMg LyBTdXNwZW5zaW9uJyx0b25lOidyZWQnLGljb246J3NxdWFyZSd9LHtsYWJlbDonQmxhY2sgY2FyZHMnLHZhbHVlOmsuYmxhY2ss aW5zaWdodDonQ3JpdGljYWwgLyBUZXJtaW5hbCcsdG9uZTonYmxhY2snLGljb246J3NxdWFyZSd9LHtsYWJlbDonT3BlbiBjYXNl cycsdmFsdWU6ay5vcGVuLGluc2lnaHQ6J05vdCB5ZXQgY2xvc2VkJyx0b25lOidvcmFuZ2UnLGljb246J2ZvbGRlci1vcGVuJyxs aW5rOid0cmFmZmljL2Nhc2VzJ30se2xhYmVsOidVbmRlciByZXZpZXcnLHZhbHVlOmsucmV2aWV3LGluc2lnaHQ6J0F3YWl0aW5n IHJldmlld2VycycsdG9uZTonb3JhbmdlJyxpY29uOidzdGFtcCd9LHtsYWJlbDonU3VzcGVuZGVkJyx2YWx1ZTprLnN1c3BlbmRl ZCxpbnNpZ2h0OidBcHByb3ZlZCBvciBhY3RpdmUnLHRvbmU6J3JlZCcsaWNvbjoncGF1c2UtY2lyY2xlJ30se2xhYmVsOidIUiBl c2NhbGF0aW9ucycsdmFsdWU6ay5ocixpbnNpZ2h0OidIUiBhY3Rpb24gcmVxdWlyZWQnLHRvbmU6J2JsYWNrJyxpY29uOidicmll ZmNhc2UnfV0ubWFwKGtwaSkuam9pbignJyl9PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMjEgbXQiPjxkaXYgY2xhc3M9ImNh cmQiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPlZpb2xhdGlvbnMgb3ZlciB0aW1lIChieSBjYXJkKTwvaDM+PC9kaXY+PGRpdiBj bGFzcz0iY2FyZC1iIj4ke2NoYXJ0Qm94KCd0TW9uJyl9PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0i Y2FyZC1oIj48aDM+Q2FyZCBkaXN0cmlidXRpb248L2gzPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiI+JHtjaGFydEJveCgndENh cmQnKX08L2Rpdj48L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkIGcyIG10Ij48ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNs YXNzPSJjYXJkLWgiPjxoMz5Ub3AgcmVjdXJyaW5nIHZpb2xhdGlvbnM8L2gzPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiI+JHtj aGFydEJveCgndFR5cGUnLDI4MCl9PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+ QnkgZGVwYXJ0bWVudDwvaDM+PC9kaXY+PGRpdiBjbGFzcz0iY2FyZC1iIj4ke2NoYXJ0Qm94KCd0RGVwdCcsMjgwKX08L2Rpdj48 L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkIGczIG10Ij48ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgi PjxoMz5CeSB2ZWhpY2xlIHR5cGU8L2gzPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiI+JHtjaGFydEJveCgndFZlaCcsMjMwKX08 L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5CeSBvZmZlbmRlciBjYXRlZ29yeTwv aDM+PC9kaXY+PGRpdiBjbGFzcz0iY2FyZC1iIj4ke2NoYXJ0Qm94KCd0Q2F0JywyMzApfTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9 ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPkJ5IHNpdGU8L2gzPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiI+JHtjaGFy dEJveCgndFNpdGUnLDIzMCl9PC9kaXY+PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMiBtdCI+PGRpdiBjbGFzcz0i Y2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+JHtpYygncmVwZWF0Jywnc20nKX0gUmVwZWF0IG9mZmVuZGVyczwvaDM+PC9k aXY+JHtkLnJlcGVhdC5sZW5ndGg/ZC5yZXBlYXQubWFwKHI9PmA8ZGl2IGNsYXNzPSJsaXN0LWkiIG9uY2xpY2s9IlNHLnRmPXtx Oicke2VzYyhyLmRyaXZlcklkKX0nfTtnbygndHJhZmZpYy9jYXNlcycpIj48c3BhbiBjbGFzcz0idGNhcmQgc20gJHtyLmxhc3RD YXJkfSI+PC9zcGFuPjxkaXYgY2xhc3M9Imdyb3cgc21hbGwiPjxiPiR7ZXNjKHIubmFtZSl9PC9iPjxkaXYgY2xhc3M9InRpbnkg bXV0ZWQgbW9ubyI+JHtlc2Moci5kcml2ZXJJZCl9IMK3ICR7ZXNjKHIuY2F0ZWdvcnkpfTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9 InNtYWxsIj48Yj4ke3IuY291bnR9PC9iPiBjYXNlcyDCtyBvZmZlbmNlICR7ci5tYXhPZmZlbmNlfTwvZGl2PjwvZGl2PmApLmpv aW4oJycpOmVtcHR5KCdObyByZXBlYXQgb2ZmZW5kZXJzJywnJyl9PC9kaXY+CiAgPGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFz cz0iY2FyZC1oIj48aDM+JHtpYygnZ2F2ZWwnLCdzbScpfSBSZWNlbnQgZW5mb3JjZW1lbnQ8L2gzPjxidXR0b24gY2xhc3M9ImJ0 biBzbSBnaG9zdCIgb25jbGljaz0iZ28oJ3RyYWZmaWMvY2FzZXMnKSI+QWxsIGNhc2VzPC9idXR0b24+PC9kaXY+JHtkLnJlY2Vu dC5tYXAocj0+YDxkaXYgY2xhc3M9Imxpc3QtaSIgb25jbGljaz0iZ28oJ3RyYWZmaWMvY2FzZS8ke3IuSWR9JykiPiR7Y2FyZENo aXAoci5DYXJkKX08ZGl2IGNsYXNzPSJncm93IHNtYWxsIj48Yj4ke2VzYyhyLkRyaXZlck5hbWUpfTwvYj4g4oCUICR7ZXNjKHIu VmlvbGF0aW9uKX08ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj48c3BhbiBjbGFzcz0ibW9ubyI+JHtlc2Moci5JZCl9PC9zcGFuPiDC tyBvZmZlbmNlICR7ci5PZmZlbmNlTm99IMK3ICR7YWdvKHIuQ3JlYXRlZEF0KX08L2Rpdj48L2Rpdj4ke2NoaXAoci5TdGF0dXMp fTwvZGl2PmApLmpvaW4oJycpfTwvZGl2PjwvZGl2PmApOyBiaW5kVEYoKTsKICBjaGFydCgndE1vbicsJ2JhcicsZC5tb250aGx5 LmxhYmVscyxbe2xhYmVsOidZZWxsb3cnLGRhdGE6ZC5tb250aGx5LnllbGxvdyxjb2xvcjonI0ZGQzIwRSd9LHtsYWJlbDonUmVk JyxkYXRhOmQubW9udGhseS5yZWQsY29sb3I6JyNDODFFMUUnfSx7bGFiZWw6J0JsYWNrJyxkYXRhOmQubW9udGhseS5ibGFjayxj b2xvcjonIzExMTgyNyd9XSx7c3RhY2tlZDp0cnVlfSk7CiAgY2hhcnQoJ3RDYXJkJywnZG91Z2hudXQnLFsnWWVsbG93JywnUmVk JywnQmxhY2snXSxbe2RhdGE6W2sueWVsbG93LGsucmVkLGsuYmxhY2tdLGJhY2tncm91bmRDb2xvcjpbJyNGRkMyMEUnLCcjQzgx RTFFJywnIzExMTgyNyddfV0pOwogIGNoYXJ0KCd0VHlwZScsJ2JhcicsZC5ieVR5cGUubWFwKHg9PngubGFiZWwpLFt7bGFiZWw6 J1Zpb2xhdGlvbnMnLGRhdGE6ZC5ieVR5cGUubWFwKHg9Pngubil9XSx7aG9yaXpvbnRhbDp0cnVlfSk7IGNoYXJ0KCd0RGVwdCcs J2JhcicsZC5ieURlcHQuc2xpY2UoMCw4KS5tYXAoeD0+eC5sYWJlbCksW3tsYWJlbDonVmlvbGF0aW9ucycsZGF0YTpkLmJ5RGVw dC5zbGljZSgwLDgpLm1hcCh4PT54Lm4pLGNvbG9yOicjMUQ0RUQ4J31dLHtob3Jpem9udGFsOnRydWV9KTsKICBjaGFydCgndFZl aCcsJ2RvdWdobnV0JyxkLmJ5VmVoaWNsZS5tYXAoeD0+eC5sYWJlbCksW3tkYXRhOmQuYnlWZWhpY2xlLm1hcCh4PT54Lm4pfV0p OyBjaGFydCgndENhdCcsJ2RvdWdobnV0JyxkLmJ5Q2F0ZWdvcnkubWFwKHg9PngubGFiZWwpLFt7ZGF0YTpkLmJ5Q2F0ZWdvcnku bWFwKHg9Pngubil9XSk7IGNoYXJ0KCd0U2l0ZScsJ2JhcicsZC5ieVNpdGUubWFwKHg9PngubGFiZWwpLFt7bGFiZWw6J1Zpb2xh dGlvbnMnLGRhdGE6ZC5ieVNpdGUubWFwKHg9PngubiksY29sb3I6JyNFQTU4MEMnfV0pOyB9CmFzeW5jIGZ1bmN0aW9uIHZDYXNl cyhoZWFkKXsgU0cudGY9U0cudGZ8fHt9OyBjb25zdCByb3dzPWF3YWl0IGxvYWQoJ2xpc3RUcmFmZmljQ2FzZXMnLFNHLnRmKTsg aWYoIXJvd3MpIHJldHVybjsKICBtYWluKGAke2hlYWR9JHt0RmlsdGVycyhTRy50Zil9PGRpdiBjbGFzcz0iY2FyZCI+JHtTR1Qu aHRtbCgndHJmJyxbe2s6J0lkJyxsYWJlbDonQ2FzZScscmVuZGVyOnI9PmA8c3BhbiBjbGFzcz0ibW9ubyBiIj4ke2VzYyhyLklk KX08L3NwYW4+YH0se2s6J09jY3VycmVkQXQnLGxhYmVsOidEYXRlJyxnZXQ6cj0+Zm10RChyLk9jY3VycmVkQXQpLHNvcnR2OnI9 PnIuT2NjdXJyZWRBdH0se2s6J0RyaXZlcklkJyxsYWJlbDonRW1wbG95ZWUgLyBEcml2ZXIgSUQnLHJlbmRlcjpyPT5gPHNwYW4g Y2xhc3M9Im1vbm8iPiR7ZXNjKHIuRHJpdmVySWQpfTwvc3Bhbj5gfSx7azonRHJpdmVyTmFtZScsbGFiZWw6J05hbWUnLHJlbmRl cjpyPT5gPGI+JHtlc2Moci5Ecml2ZXJOYW1lKX08L2I+YH0se2s6J09mZmVuZGVyQ2F0ZWdvcnknLGxhYmVsOidDYXRlZ29yeScs ZmlsdGVyOnRydWV9LHtrOidWaW9sYXRpb24nLGxhYmVsOidWaW9sYXRpb24nLGZpbHRlcjp0cnVlfSx7azonVmVoaWNsZVR5cGUn LGxhYmVsOidWZWhpY2xlJyxmaWx0ZXI6dHJ1ZX0se2s6J09mZmVuY2VObycsbGFiZWw6J09mZmVuY2UgIycsc29ydHY6cj0+TnVt YmVyKHIuT2ZmZW5jZU5vKX0se2s6J0NhcmQnLGxhYmVsOidDYXJkJyxmaWx0ZXI6dHJ1ZSxyZW5kZXI6cj0+Y2FyZENoaXAoci5D YXJkKX0se2s6J0NsYXNzaWZpY2F0aW9uJyxsYWJlbDonQ2xhc3NpZmljYXRpb24nfSx7azonU3RhdHVzJyxsYWJlbDonU3RhdHVz JyxmaWx0ZXI6dHJ1ZSxyZW5kZXI6cj0+Y2hpcChyLlN0YXR1cyl9LHtrOidEZXB0SWQnLGxhYmVsOidEZXBhcnRtZW50JyxnZXQ6 cj0+ZGVwdEZ1bGwoci5EZXB0SWQpfV0scm93cyx7bmFtZToncGVuYWx0eS1jYXJkLXJlcG9ydCcsb25Sb3c6cj0+Z28oJ3RyYWZm aWMvY2FzZS8nK3IuSWQpfSl9PC9kaXY+YCk7IGJpbmRURigpOyBTR1QubW91bnQoKTsgfQpmdW5jdGlvbiB2TmV3Q2FzZShoZWFk KXsgY29uc3QgdHI9U0cuY2ZnLnRyYWZmaWM7CiAgbWFpbihgJHtoZWFkfTxkaXYgY2xhc3M9ImdyaWQgZzIxIj48Zm9ybSBpZD0i bmNmIiBjbGFzcz0iY2FyZCBwIiBub3ZhbGlkYXRlPjxoMyBjbGFzcz0ibWIiPlJlY29yZCBhIHRyYWZmaWMgdmlvbGF0aW9uPC9o Mz48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkVtcGxveWVlIC8gRHJpdmVyIElEPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIg bmFtZT0iZHJpdmVySWQiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSJlLmcuIDI5MDAzNSBvciBUUC03NzQxIiBzdHlsZT0iZm9udC1z aXplOjE4cHg7aGVpZ2h0OjQ4cHgiIGF1dG9jb21wbGV0ZT0ib2ZmIj48ZGl2IGNsYXNzPSJoaW50Ij5PZmZlbmNlcyBhcmUgY291 bnRlZCBjdW11bGF0aXZlbHkgYWdhaW5zdCB0aGlzIElELjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+RHJp dmVyIG5hbWU8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1lPSJkcml2ZXJOYW1lIiBwbGFjZWhvbGRlcj0iQXV0by1maWxs ZWQgZm9yIGVtcGxveWVlcyI+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMiI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5W aW9sYXRpb248L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0idmlvbGF0aW9uIj4ke3RyLnZpb2xhdGlvbnMubWFwKHY9 Pm9wdCh2KSkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5PZmZlbmRlciBjYXRlZ29y eTwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJjYXRlZ29yeSI+JHt0ci5jYXRlZ29yaWVzLm1hcCh2PT5vcHQodix2 LCdFbXBsb3llZScpKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlZlaGljbGUgdHlw ZTwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJ2ZWhpY2xlVHlwZSI+JHt0ci52ZWhpY2xlVHlwZXMubWFwKHY9Pm9w dCh2KSkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5WZWhpY2xlIC8gcGxhdGU8L2xh YmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1lPSJ2ZWhpY2xlSWQiIGxpc3Q9InZlaGwiPjxkYXRhbGlzdCBpZD0idmVobCI+JHtT Ry5MLnZlaGljbGVzLm1hcCh2PT5gPG9wdGlvbiB2YWx1ZT0iJHtlc2Modi5QbGF0ZSl9Ij4ke2VzYyh2LlR5cGUpfTwvb3B0aW9u PmApLmpvaW4oJycpfTwvZGF0YWxpc3Q+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5FbmZvcmNlbWVudCBzb3VyY2U8 L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ic291cmNlIj4ke3RyLnNvdXJjZXMubWFwKHY9Pm9wdCh2KSkuam9pbign Jyl9PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5EYXRlICYgdGltZTwvbGFiZWw+PGlucHV0IGNsYXNz PSJpbnAiIHR5cGU9ImRhdGV0aW1lLWxvY2FsIiBuYW1lPSJvY2N1cnJlZEF0Ij48L2Rpdj4KICA8ZGl2IGNsYXNzPSJmaWVsZCI+ PGxhYmVsPlNpdGU8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ic2l0ZUlkIj4ke3NlbFNpdGVzKFNHLnVzZXIuU2l0 ZUlkKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkxvY2F0aW9uPC9sYWJlbD48aW5wdXQgY2xhc3M9 ImlucCIgbmFtZT0ibG9jYXRpb24iIHBsYWNlaG9sZGVyPSJlLmcuIFJURyBjcm9zc2luZyAyIj48L2Rpdj48L2Rpdj48ZGl2IGNs YXNzPSJmaWVsZCI+PGxhYmVsPkRlc2NyaXB0aW9uPC9sYWJlbD48dGV4dGFyZWEgY2xhc3M9ImlucCIgbmFtZT0iZGVzY3JpcHRp b24iPjwvdGV4dGFyZWE+PC9kaXY+PGJ1dHRvbiBjbGFzcz0iYnRuIHByaSBsZyBibG9jayI+JHtpYygnZ2F2ZWwnKX0gQ3JlYXRl IGVuZm9yY2VtZW50IGNhc2U8L2J1dHRvbj48L2Zvcm0+CiAgPGRpdiBjbGFzcz0icGFuZWwiPjxkaXYgY2xhc3M9ImNhcmQgcCIg aWQ9InN0YWdlUHJldiI+JHtlbXB0eSgnRW50ZXIgYSBEcml2ZXIgSUQnLCdUaGUgY29uZmlndXJlZCBjYXJkIHN0YWdlIGFwcGVh cnMgaGVyZSBiZWZvcmUgeW91IHN1Ym1pdC4nLCdzZWFyY2gnKX08L2Rpdj48L2Rpdj48L2Rpdj5gKTsKICBjb25zdCBmPXFzKCcj bmNmJyk7IGxldCB0OyBxcygnW25hbWU9ZHJpdmVySWRdJyxmKS5vbmlucHV0PWU9PnsgY2xlYXJUaW1lb3V0KHQpOyBjb25zdCB2 PWUudGFyZ2V0LnZhbHVlLnRyaW0oKTsgaWYoIXYpeyBxcygnI3N0YWdlUHJldicpLmlubmVySFRNTD1lbXB0eSgnRW50ZXIgYSBE cml2ZXIgSUQnLCcnLCcnKTsgaWNvbnMoKTsgcmV0dXJuOyB9IHQ9c2V0VGltZW91dChhc3luYygpPT57IHRyeXsgY29uc3Qgcj1h d2FpdCBjYWxsKCdsb29rdXBEcml2ZXInLHtkcml2ZXJJZDp2fSk7IGlmKCFyKSByZXR1cm47IGlmKHIudXNlcil7IHFzKCdbbmFt ZT1kcml2ZXJOYW1lXScsZikudmFsdWU9ci51c2VyLk5hbWU7IHFzKCdbbmFtZT1jYXRlZ29yeV0nLGYpLnZhbHVlPXIudXNlci5D YXRlZ29yeXx8J0VtcGxveWVlJzsgcXMoJ1tuYW1lPXNpdGVJZF0nLGYpLnZhbHVlPXIudXNlci5TaXRlSWQ7IH0gZWxzZSBpZihy LmRyaXZlck5hbWUpIHFzKCdbbmFtZT1kcml2ZXJOYW1lXScsZikudmFsdWU9ci5kcml2ZXJOYW1lOwogICAgcXMoJyNzdGFnZVBy ZXYnKS5pbm5lckhUTUw9YDxkaXYgY2xhc3M9InRpbnkgYiBtdXRlZCBtYiI+U1lTVEVNIERFVEVSTUlOQVRJT048L2Rpdj48ZGl2 IGNsYXNzPSJyb3ciIHN0eWxlPSJnYXA6MThweDthbGlnbi1pdGVtczpjZW50ZXIiPjxkaXYgY2xhc3M9InRjYXJkICR7ci5zdGFn ZS5jYXJkfSI+JHtyLnN0YWdlLmNhcmR9PC9kaXY+PGRpdj48ZGl2IGNsYXNzPSJoZCIgc3R5bGU9ImZvbnQtc2l6ZTozMHB4Ij5P ZmZlbmNlICR7ci5uZXh0fTwvZGl2PjxkaXYgY2xhc3M9ImIiPiR7ZXNjKHIuc3RhZ2UuY2xhc3NpZmljYXRpb24pfTwvZGl2Pjxk aXYgY2xhc3M9InNtYWxsIG11dGVkIj5QZW5hbHR5IHN0YWdlOiAke2VzYyhyLnN0YWdlLnBlbmFsdHkpfTwvZGl2PjxkaXYgY2xh c3M9InNtYWxsIG10IiBzdHlsZT0ibWFyZ2luLXRvcDo2cHgiPiR7ZXNjKHIubWVhbmluZyl9PC9kaXY+PC9kaXY+PC9kaXY+PGRp diBjbGFzcz0ibXQyIj48ZGl2IGNsYXNzPSJ0aW55IGIgbXV0ZWQiPlBSRVZJT1VTIENBU0VTICgke3IucHJldi5sZW5ndGh9KTwv ZGl2PiR7ci5wcmV2Lmxlbmd0aD9yLnByZXYubWFwKHA9PmA8ZGl2IGNsYXNzPSJyb3cgc21hbGwiIHN0eWxlPSJwYWRkaW5nOjVw eCAwO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWxpbmUyKSI+PHNwYW4gY2xhc3M9InRjYXJkIHNtICR7cC5DYXJkfSI+ PC9zcGFuPjxzcGFuIGNsYXNzPSJtb25vIj4ke2VzYyhwLklkKX08L3NwYW4+PHNwYW4gY2xhc3M9Imdyb3ciPiR7ZXNjKHAuVmlv bGF0aW9uKX08L3NwYW4+PHNwYW4gY2xhc3M9Im11dGVkIj4ke2ZtdEQocC5PY2N1cnJlZEF0KX08L3NwYW4+PC9kaXY+YCkuam9p bignJyk6JzxkaXYgY2xhc3M9InNtYWxsIG11dGVkIj5ObyBwcmV2aW91cyBvZmZlbmNlcyDigJQgZmlyc3Qgb2ZmZW5jZS48L2Rp dj4nfTwvZGl2PjxkaXYgY2xhc3M9Im10MiI+PGRpdiBjbGFzcz0idGlueSBiIG11dGVkIG1iIj5SRVFVSVJFRCBSRVZJRVc8L2Rp dj4ke3Iuc3RhZ2Uud29ya2Zsb3cubWFwKCh3LGkpPT5gPGRpdiBjbGFzcz0ic21hbGwiPiR7aSsxfS4gJHtlc2Mocm9sZU4odykp fTwvZGl2PmApLmpvaW4oJycpfTwvZGl2PjxkaXYgY2xhc3M9ImRpc2NsYWltZXIgbXQiPiR7aWMoJ3NoaWVsZC1jaGVjaycsJ3Nt Jyl9PHNwYW4+Tm8gd2FybmluZywgc3VzcGVuc2lvbiBvciBkaXNtaXNzYWwgaXMgZXhlY3V0ZWQgYXV0b21hdGljYWxseS4gRWFj aCBzdGFnZSBtdXN0IGJlIGFwcHJvdmVkIGJ5IHRoZSBwZW9wbGUgYWJvdmUuPC9zcGFuPjwvZGl2PmA7IGljb25zKCk7IH1jYXRj aChlKXt9IH0sMzUwKTsgfTsKICBmLm9uc3VibWl0PWFzeW5jIGU9PnsgZS5wcmV2ZW50RGVmYXVsdCgpOyBjb25zdCBkPWZvcm1E YXRhKGYpOyBpZighZC5kcml2ZXJJZCl7IHRvYXN0KCdEcml2ZXIgSUQgaXMgcmVxdWlyZWQnLCdlcnInKTsgcmV0dXJuOyB9IGlm KGQub2NjdXJyZWRBdCkgZC5vY2N1cnJlZEF0PW5ldyBEYXRlKGQub2NjdXJyZWRBdCkudG9JU09TdHJpbmcoKTsgdHJ5eyBjb25z dCBjPWF3YWl0IGNhbGwoJ2NyZWF0ZVRyYWZmaWNDYXNlJyxkKTsgdG9hc3QoYy5DYXJkKycgY2FyZCBjYXNlIGNyZWF0ZWQnLCdv aycsYy5JZCsnIHJvdXRlZCBmb3IgcmV2aWV3Jyk7IGdvKCd0cmFmZmljL2Nhc2UvJytjLklkKTsgfWNhdGNoKGVycil7IHRvYXN0 KGVyci5tZXNzYWdlLCdlcnInKTsgfSB9OyB9CmFzeW5jIGZ1bmN0aW9uIHZDYXNlKGlkKXsgY29uc3QgZD1hd2FpdCBsb2FkKCdn ZXRUcmFmZmljQ2FzZScse2lkfSk7IGlmKCFkKSByZXR1cm47IGNvbnN0IGM9ZC5jOwogIG1haW4oYCR7Y3J1bWIoJ0VuZm9yY2Vt ZW50IGNhc2VzJywndHJhZmZpYy9jYXNlcycpfTxkaXYgY2xhc3M9ImhkciI+PGRpdiBjbGFzcz0idGNhcmQgJHtjLkNhcmR9IiBz dHlsZT0ibWFyZ2luOjZweCAxNHB4IDAgNHB4Ij4ke2MuQ2FyZH0gQ0FSRDwvZGl2PjxkaXYgY2xhc3M9Imdyb3ciPjxkaXYgY2xh c3M9ImlkdCI+JHtlc2MoYy5JZCl9IMK3ICR7ZXNjKGMuVmlvbGF0aW9uKX08L2Rpdj48aDEgc3R5bGU9Im1hcmdpbjo0cHggMCA2 cHgiPiR7ZXNjKGMuRHJpdmVyTmFtZSl9IDxzcGFuIGNsYXNzPSJtb25vIG11dGVkIiBzdHlsZT0iZm9udC1zaXplOjE1cHgiPiR7 ZXNjKGMuRHJpdmVySWQpfTwvc3Bhbj48L2gxPjxkaXYgY2xhc3M9ImIiPiR7ZXNjKGMuQ2xhc3NpZmljYXRpb24pfSDCtyAke2Vz YyhjLlBlbmFsdHkpfTwvZGl2PjxkaXYgY2xhc3M9InNtYWxsIG11dGVkIj4ke2VzYyhkLm1lYW5pbmcpfTwvZGl2PjxkaXYgY2xh c3M9InJvdyB3IG10Ij4ke2NoaXAoYy5TdGF0dXMpfSR7Yy5PdXRjb21lPT09J1ZvaWRlZCc/Y2hpcCgnVm9pZGVkJyk6Jyd9PHNw YW4gY2xhc3M9ImNoaXAgYy1ncmF5Ij4ke2ljKCdoYXNoJyl9T2ZmZW5jZSAke2MuT2ZmZW5jZU5vfTwvc3Bhbj48c3BhbiBjbGFz cz0iY2hpcCBjLWdyYXkiPiR7aWMoJ3VzZXInKX0ke2VzYyhjLk9mZmVuZGVyQ2F0ZWdvcnkpfTwvc3Bhbj48L2Rpdj48L2Rpdj48 L2Rpdj4KICA8ZGl2IGNsYXNzPSJkaXNjbGFpbWVyIG1iIj4ke2ljKCdzY2FsZScsJ3NtJyl9PHNwYW4+U0FBZmVseSByZWNvcmRz IHRoZSBjb25maWd1cmVkIGVuZm9yY2VtZW50IHN0YWdlIGFuZCByb3V0ZXMgaXQgZm9yIHJldmlldy4gPGI+RmluYWwgZGlzY2lw bGluYXJ5IGRlY2lzaW9ucyDigJQgaW5jbHVkaW5nIGFueSBzdXNwZW5zaW9uIG9yIGRpc21pc3NhbCDigJQgYXJlIG1hZGUgYW5k IGV4ZWN1dGVkIGJ5IGF1dGhvcmlzZWQgSFIgYW5kIG1hbmFnZW1lbnQgdW5kZXIgY29tcGFueSBwb2xpY3kuPC9iPjwvc3Bhbj48 L2Rpdj4KICA8ZGl2IGNsYXNzPSJkZXRhaWwiPjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtYiI+JHt0YWJzKCd0 YycsW3tsYWJlbDonQ2FzZScsaHRtbDpgPGRsIGNsYXNzPSJkbCI+PGR0PkN1cnJlbnQgb2ZmZW5jZSBjb3VudDwvZHQ+PGRkPjxi PiR7Yy5PZmZlbmNlTm99PC9iPjwvZGQ+PGR0PlZpb2xhdGlvbjwvZHQ+PGRkPiR7ZXNjKGMuVmlvbGF0aW9uKX08L2RkPjxkdD5W ZWhpY2xlPC9kdD48ZGQ+JHtlc2MoYy5WZWhpY2xlVHlwZSl9ICR7Yy5WZWhpY2xlSWQ/J8K3ICcrZXNjKGMuVmVoaWNsZUlkKTon J308L2RkPjxkdD5Tb3VyY2U8L2R0PjxkZD4ke2VzYyhjLlNvdXJjZSl9PC9kZD48ZHQ+V2hlbjwvZHQ+PGRkPiR7Zm10RFQoYy5P Y2N1cnJlZEF0KX08L2RkPjxkdD5XaGVyZTwvZHQ+PGRkPiR7ZXNjKHNpdGVOKGMuU2l0ZUlkKSl9IMK3ICR7ZXNjKGMuTG9jYXRp b258fCcnKX08L2RkPjxkdD5EZXBhcnRtZW50PC9kdD48ZGQ+JHtlc2MoZGVwdEZ1bGwoYy5EZXB0SWQpKX08L2RkPjxkdD5SZWNv cmRlZCBieTwvZHQ+PGRkPiR7ZXNjKHVOYW1lKGMuUmVwb3J0ZWRCeSkpfTwvZGQ+PGR0PkRlc2NyaXB0aW9uPC9kdD48ZGQ+JHtl c2MoYy5EZXNjcmlwdGlvbnx8J+KAlCcpfTwvZGQ+PC9kbD5gfSwKICAgIHtsYWJlbDonUHJldmlvdXMgY2FzZXMnLG46ZC5wcmV2 Lmxlbmd0aCxodG1sOmQucHJldi5sZW5ndGg/ZC5wcmV2Lm1hcChwPT5gPGRpdiBjbGFzcz0ibGlzdC1pIiBvbmNsaWNrPSJnbygn dHJhZmZpYy9jYXNlLyR7cC5JZH0nKSI+PHNwYW4gY2xhc3M9InRjYXJkIHNtICR7cC5DYXJkfSI+PC9zcGFuPjxzcGFuIGNsYXNz PSJtb25vIHNtYWxsIj4ke2VzYyhwLklkKX08L3NwYW4+PGRpdiBjbGFzcz0iZ3JvdyBzbWFsbCI+JHtlc2MocC5WaW9sYXRpb24p fSDCtyBvZmZlbmNlICR7cC5PZmZlbmNlTm99PC9kaXY+PHNwYW4gY2xhc3M9InNtYWxsIG11dGVkIj4ke2ZtdEQocC5PY2N1cnJl ZEF0KX08L3NwYW4+JHtjaGlwKHAuT3V0Y29tZT09PSdWb2lkZWQnPydWb2lkZWQnOnAuU3RhdHVzKX08L2Rpdj5gKS5qb2luKCcn KTplbXB0eSgnRmlyc3QgcmVjb3JkZWQgb2ZmZW5jZScsJycpfSwKICAgIHtsYWJlbDonQXVkaXQgdHJhaWwnLG46ZC5hdWRpdC5s ZW5ndGgsaHRtbDphdWRpdEh0bWwoZC5hdWRpdCl9XSl9PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0icGFuZWwiPjxkaXYgY2xh c3M9ImNhcmQgcCI+PGgzIGNsYXNzPSJtYiI+UmVxdWlyZWQgcmV2aWV3PC9oMz48ZGl2IGNsYXNzPSJzdGVwcyI+JHtkLmFwcHJv dmFscy5tYXAoYT0+YDxkaXYgY2xhc3M9InN0ZXAgJHthLnN0YXR1c30gJHtkLmN1cnJlbnQmJmQuY3VycmVudC5zdGVwPT09YS5z dGVwPydjdXInOicnfSI+PHNwYW4gY2xhc3M9Im4iPiR7YS5zdGF0dXM9PT0nQXBwcm92ZWQnP2ljKCdjaGVjaycsJ3NtJyk6YS5z dGF0dXM9PT0nUmVqZWN0ZWQnP2ljKCd4Jywnc20nKTphLnN0ZXB9PC9zcGFuPjxkaXYgY2xhc3M9InNtYWxsIj48Yj4ke2VzYyhy b2xlTihhLnJvbGUpKX08L2I+PGRpdiBjbGFzcz0idGlueSBtdXRlZCI+JHthLnN0YXR1c30ke2EuYnk/JyDCtyAnK2VzYyhhLmJ5 KTonJ30ke2EuYXQ/JyDCtyAnK2ZtdEQoYS5hdCk6Jyd9PC9kaXY+JHthLmNvbW1lbnQ/YDxkaXYgY2xhc3M9InRpbnkiPuKAnCR7 ZXNjKGEuY29tbWVudCl94oCdPC9kaXY+YDonJ308L2Rpdj48L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj4KICAgIDxkaXYgY2xhc3M9 Im10Ij4ke2QuZWxpZ2libGU/YDxidXR0b24gY2xhc3M9ImJ0biBvayIgb25jbGljaz0iY2FzZU9wKCcke2MuSWR9JywnYXBwcm92 ZScsJ0FwcHJvdmUgc3RlcCAke2QuY3VycmVudC5zdGVwfScsJ0NvbW1lbnQgKG9wdGlvbmFsKScsZmFsc2UpIj4ke2ljKCdiYWRn ZS1jaGVjaycsJ3NtJyl9IEFwcHJvdmUgc3RlcCAke2QuY3VycmVudC5zdGVwfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBk YW5nZXIiIG9uY2xpY2s9ImNhc2VPcCgnJHtjLklkfScsJ3JlamVjdCcsJ1JlamVjdCDigJQgdm9pZCBjYXNlJywnUmVhc29uIChy ZXF1aXJlZCknLHRydWUpIj4ke2ljKCd4Jywnc20nKX0gUmVqZWN0IC8gdm9pZDwvYnV0dG9uPmA6ZC5jdXJyZW50P2A8cCBjbGFz cz0ic21hbGwgbXV0ZWQiPldhaXRpbmcgZm9yICR7ZXNjKHJvbGVOKGQuY3VycmVudC5yb2xlKSl9LjwvcD5gOicnfQogICAgJHtk Lm9wcy5hY3RpdmF0ZT9gPGJ1dHRvbiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJjYXNlT3AoJyR7Yy5JZH0nLCdhY3RpdmF0ZScsJ1Jl Y29yZCBzdXNwZW5zaW9uIGFzIGFjdGl2ZScsJ0RhdGVzIC8gcmVmZXJlbmNlJyxmYWxzZSkiPiR7aWMoJ3BhdXNlLWNpcmNsZScs J3NtJyl9IFJlY29yZCBzdXNwZW5zaW9uIGFjdGl2ZTwvYnV0dG9uPmA6Jyd9JHtkLm9wcy5jb21wbGV0ZT9gPGJ1dHRvbiBjbGFz cz0iYnRuIiBvbmNsaWNrPSJjYXNlT3AoJyR7Yy5JZH0nLCdjb21wbGV0ZScsJ1JlY29yZCBzdXNwZW5zaW9uIGNvbXBsZXRlZCcs J05vdGUnLGZhbHNlKSI+JHtpYygnY2lyY2xlLWNoZWNrJywnc20nKX0gU3VzcGVuc2lvbiBjb21wbGV0ZWQ8L2J1dHRvbj5gOicn fSR7ZC5vcHMuY2xvc2U/YDxidXR0b24gY2xhc3M9ImJ0biIgb25jbGljaz0iY2FzZU9wKCcke2MuSWR9JywnY2xvc2UnLCdDbG9z ZSBjYXNlJywnQ2xvc3VyZSBub3RlJyxmYWxzZSkiPiR7aWMoJ2xvY2snLCdzbScpfSBDbG9zZSBjYXNlPC9idXR0b24+YDonJ30K ICAgIDxidXR0b24gY2xhc3M9ImJ0biIgb25jbGljaz0icHJpbnRDYXNlKCkiPiR7aWMoJ3ByaW50ZXInLCdzbScpfSBQZW5hbHR5 IGNhcmQgcmVwb3J0PC9idXR0b24+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+YCk7CiAgd2luZG93LnByaW50Q2FzZT0oKT0+cHJp bnRSZXBvcnQoJ1RyYWZmaWMgRW5mb3JjZW1lbnQgQ2FzZSDigJQgJytjLklkLCBgJHtyZXBUYWJsZShbWydDYXJkJyxjLkNhcmQr JyDigJQgJytkLm1lYW5pbmddLFsnQ2xhc3NpZmljYXRpb24nLGMuQ2xhc3NpZmljYXRpb25dLFsnUGVuYWx0eSBzdGFnZScsYy5Q ZW5hbHR5XSxbJ09mZmVuY2UgY291bnQnLGMuT2ZmZW5jZU5vXSxbJ0VtcGxveWVlIC8gRHJpdmVyIElEJyxjLkRyaXZlcklkXSxb J05hbWUnLGMuRHJpdmVyTmFtZV0sWydDYXRlZ29yeScsYy5PZmZlbmRlckNhdGVnb3J5XSxbJ1Zpb2xhdGlvbicsYy5WaW9sYXRp b25dLFsnVmVoaWNsZScsYy5WZWhpY2xlVHlwZSsnICcrKGMuVmVoaWNsZUlkfHwnJyldLFsnU291cmNlJyxjLlNvdXJjZV0sWydE YXRlJyxmbXREVChjLk9jY3VycmVkQXQpXSxbJ0xvY2F0aW9uJyxzaXRlTihjLlNpdGVJZCkrJyDCtyAnK2MuTG9jYXRpb25dLFsn U3RhdHVzJyxjLlN0YXR1c11dKX08aDI+UmV2aWV3PC9oMj48dGFibGU+PHRyPjx0aD5TdGVwPC90aD48dGg+Um9sZTwvdGg+PHRo PlN0YXR1czwvdGg+PHRoPkJ5PC90aD48dGg+RGF0ZTwvdGg+PHRoPkNvbW1lbnQ8L3RoPjwvdHI+JHtkLmFwcHJvdmFscy5tYXAo YT0+YDx0cj48dGQ+JHthLnN0ZXB9PC90ZD48dGQ+JHtyb2xlTihhLnJvbGUpfTwvdGQ+PHRkPiR7YS5zdGF0dXN9PC90ZD48dGQ+ JHtlc2MoYS5ieSl9PC90ZD48dGQ+JHtmbXREKGEuYXQpfTwvdGQ+PHRkPiR7ZXNjKGEuY29tbWVudCl9PC90ZD48L3RyPmApLmpv aW4oJycpfTwvdGFibGU+PGgyPlByZXZpb3VzIGNhc2VzPC9oMj48dGFibGU+JHtkLnByZXYubWFwKHA9PmA8dHI+PHRkPiR7cC5J ZH08L3RkPjx0ZD4ke2ZtdEQocC5PY2N1cnJlZEF0KX08L3RkPjx0ZD4ke2VzYyhwLlZpb2xhdGlvbil9PC90ZD48dGQ+JHtwLkNh cmR9PC90ZD48dGQ+JHtwLlN0YXR1c308L3RkPjwvdHI+YCkuam9pbignJyl9PC90YWJsZT48cCBjbGFzcz0ibXV0ZWQiPlRoaXMg cmVwb3J0IHJlY29yZHMgYW4gZW5mb3JjZW1lbnQgc3RhZ2UuIERpc2NpcGxpbmFyeSBkZWNpc2lvbnMgYXJlIG1hZGUgYnkgYXV0 aG9yaXNlZCBIUi9tYW5hZ2VtZW50LjwvcD5gKTsgfQpmdW5jdGlvbiBjYXNlT3AoaWQsIG9wLCB0aXRsZSwgbGFiZWwsIHJlcSl7 IGNvbmZpcm1Cb3godGl0bGUsICdUaGlzIHN0ZXAgaXMgcmVjb3JkZWQgaW4gdGhlIGF1ZGl0IHRyYWlsIHdpdGggeW91ciBuYW1l IGFuZCB0aW1lLicsIGFzeW5jIGQ9PnsgYXdhaXQgY2FsbCgndHJhZmZpY0Nhc2VBY3Rpb24nLHtpZCxvcCxjb21tZW50OmQuY29t bWVudH0pOyB0b2FzdCgnQ2FzZSB1cGRhdGVkJywnb2snKTsgcmVuZGVyKCk7IH0sIHtjb21tZW50OmxhYmVsLCByZXF1aXJlZDpy ZXEsIGRhbmdlcjpvcD09PSdyZWplY3QnfSk7IH0KZnVuY3Rpb24gdk1hdHJpeChoZWFkKXsgY29uc3QgbT1TRy5jZmcucGVuYWx0 eU1hdHJpeCwgY209U0cuY2ZnLmNhcmRNZWFuaW5nc3x8e30sIHRyPVNHLmNmZy50cmFmZmljLCBlZD1jYW4oJ2FkbWluLmNvbmZp ZycpOwogIG1haW4oYCR7aGVhZH08ZGl2IGNsYXNzPSJncmlkIGczIG1iIj4ke1snWUVMTE9XJywnUkVEJywnQkxBQ0snXS5tYXAo Yz0+YDxkaXYgY2xhc3M9ImNhcmQgcCByb3ciIHN0eWxlPSJnYXA6MTZweCI+PGRpdiBjbGFzcz0idGNhcmQgJHtjfSIgc3R5bGU9 IndpZHRoOjYycHg7aGVpZ2h0Ojg4cHgiPiR7Y308L2Rpdj48ZGl2PjxiIGNsYXNzPSJoZCIgc3R5bGU9ImZvbnQtc2l6ZToxN3B4 Ij4ke2N9IENBUkQ8L2I+PGRpdiBjbGFzcz0ibXV0ZWQiPiR7ZXNjKGNtW2NdfHwnJyl9PC9kaXY+PC9kaXY+PC9kaXY+YCkuam9p bignJyl9PC9kaXY+CiAgPGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+UGVuYWx0eSBtYXRyaXg8L2gz PiR7ZWQ/YDxidXR0b24gY2xhc3M9ImJ0biBzbSBwcmkiIG9uY2xpY2s9ImdvKCdhZG1pbi90cmFmZmljJykiPiR7aWMoJ3NldHRp bmdzJywnc20nKX0gQ29uZmlndXJlPC9idXR0b24+YDonJ308L2Rpdj48ZGl2IGNsYXNzPSJ0dyI+PHRhYmxlIGNsYXNzPSJ0Ymwi Pjx0aGVhZD48dHI+PHRoPk9mZmVuY2U8L3RoPjx0aD5DYXJkPC90aD48dGg+Rm9ybWFsIGNsYXNzaWZpY2F0aW9uPC90aD48dGg+ UGVuYWx0eSBzdGFnZTwvdGg+PHRoPlJldmlldyB3b3JrZmxvdzwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4ke20ubWFwKHM9PmA8 dHIgc3R5bGU9ImN1cnNvcjpkZWZhdWx0Ij48dGQgZGF0YS1sPSJPZmZlbmNlIj48YiBjbGFzcz0iaGQiIHN0eWxlPSJmb250LXNp emU6MThweCI+JHtzLm9mZmVuY2V9PC9iPjwvdGQ+PHRkIGRhdGEtbD0iQ2FyZCI+JHtjYXJkQ2hpcChzLmNhcmQpfTwvdGQ+PHRk IGRhdGEtbD0iQ2xhc3NpZmljYXRpb24iPjxiPiR7ZXNjKHMuY2xhc3NpZmljYXRpb24pfTwvYj48L3RkPjx0ZCBkYXRhLWw9IlBl bmFsdHkiPiR7ZXNjKHMucGVuYWx0eSl9PC90ZD48dGQgZGF0YS1sPSJXb3JrZmxvdyIgY2xhc3M9InNtYWxsIj4ke3Mud29ya2Zs b3cubWFwKHJvbGVOKS5qb2luKCcg4oaSICcpfTwvdGQ+PC90cj5gKS5qb2luKCcnKX08L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9k aXY+CiAgPGRpdiBjbGFzcz0iZGlzY2xhaW1lciBtdCI+JHtpYygnaW5mbycsJ3NtJyl9PHNwYW4+T2ZmZW5jZSBjb3VudCBpcyBj dW11bGF0aXZlIGZvciB0aGUgc2FtZSBFbXBsb3llZSAvIERyaXZlciBJRCR7TnVtYmVyKHRyLmxvb2tiYWNrTW9udGhzKT8nIHdp dGhpbiBhICcrdHIubG9va2JhY2tNb250aHMrJy1tb250aCBsb29rLWJhY2sgd2luZG93JzonIChubyBleHBpcnkpJ30uIFJlamVj dGVkICh2b2lkZWQpIGNhc2VzIGRvIG5vdCBjb3VudC4gT2ZmZW5jZXMgYmV5b25kIHN0YWdlICR7bS5sZW5ndGh9IHN0YXkgYXQg dGhlIGZpbmFsIHN0YWdlLjwvc3Bhbj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkIGc0IG10Ij4ke1tbJ1Zpb2xhdGlvbiB0eXBl cycsdHIudmlvbGF0aW9uc10sWydPZmZlbmRlciBjYXRlZ29yaWVzJyx0ci5jYXRlZ29yaWVzXSxbJ1ZlaGljbGUgdHlwZXMnLHRy LnZlaGljbGVUeXBlc10sWydFbmZvcmNlbWVudCBzb3VyY2VzJyx0ci5zb3VyY2VzXV0ubWFwKHg9PmA8ZGl2IGNsYXNzPSJjYXJk IHAiPjxoMyBjbGFzcz0ibWIiPiR7eFswXX08L2gzPiR7eFsxXS5tYXAodj0+YDxkaXYgY2xhc3M9InNtYWxsIiBzdHlsZT0icGFk ZGluZzo0cHggMDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lMikiPiR7ZXNjKHYpfTwvZGl2PmApLmpvaW4oJycp fTwvZGl2PmApLmpvaW4oJycpfTwvZGl2PmApOyB9Cgo7CgovKiAtLS0tLS0tLS0tIEFsZXJ0cyAtLS0tLS0tLS0tICovCnZhciBB VFlQRT17J0NyaXRpY2FsIFNhZmV0eSBBbGVydCc6J3NpcmVuJywnU2FmZXR5IEJ1bGxldGluJzonbmV3c3BhcGVyJywnSW5jaWRl bnQgTGVhcm5pbmcnOidncmFkdWF0aW9uLWNhcCcsJ1dlYXRoZXIgQWxlcnQnOidjbG91ZC1zdW4nLCdFcXVpcG1lbnQgQWxlcnQn Oid3cmVuY2gnLCdUcmFmZmljIEFsZXJ0JzonY2FyLWZyb250JywnRW1lcmdlbmN5IE5vdGljZSc6J29jdGFnb24tYWxlcnQnfTsK VklFV1MuYWxlcnRzID0gYXN5bmMgKCkgPT4geyBjb25zdCByb3dzPWF3YWl0IGxvYWQoJ2xpc3RBbGVydHMnKTsgaWYoIXJvd3Mp IHJldHVybjsgY29uc3QgcHViPWNhbignYWxlcnQucHVibGlzaCcpOwogIG1haW4oYCR7cGFnZUgoJ1NhZmV0eSBBbGVydHMnLCdD cml0aWNhbCBhbGVydHMgcmVxdWlyZSBhY2tub3dsZWRnZW1lbnQuIEV2ZXJ5IGFja25vd2xlZGdlbWVudCBpcyB0cmFja2VkLics IHB1Yj9gPGJ1dHRvbiBjbGFzcz0iYnRuIHByaSIgb25jbGljaz0icHVibGlzaEFsZXJ0KCkiPiR7aWMoJ21lZ2FwaG9uZScsJ3Nt Jyl9IFB1Ymxpc2ggYWxlcnQ8L2J1dHRvbj5gOicnKX0KICAke3Jvd3MuZmlsdGVyKGE9PmEuQWN0aXZlPT09J1knJiYoYS50YXJn ZXRlZHx8cHViKSkubWFwKGE9PnsgY29uc3QgY3JpdD1hLlNldmVyaXR5PT09J0NSSVRJQ0FMJzsgcmV0dXJuIGA8ZGl2IGNsYXNz PSJjYXJkIG1iIiBzdHlsZT0iYm9yZGVyLWxlZnQ6NXB4IHNvbGlkICR7Y3JpdD8ndmFyKC0tcmVkKSc6YS5TZXZlcml0eT09PSdI SUdIJz8nI0VBNTgwQyc6J3ZhcigtLWJsdWUpJ30iPjxkaXYgY2xhc3M9ImNhcmQtYiByb3ciIHN0eWxlPSJhbGlnbi1pdGVtczpm bGV4LXN0YXJ0O2dhcDoxNHB4Ij48c3BhbiBjbGFzcz0iYXYiIHN0eWxlPSJiYWNrZ3JvdW5kOiR7Y3JpdD8ndmFyKC0tcmVkKSc6 YS5TZXZlcml0eT09PSdISUdIJz8nI0VBNTgwQyc6J3ZhcigtLWJsdWUpJ30iPiR7aWMoQVRZUEVbYS5UeXBlXXx8J2JlbGwtcmlu ZycsJ3NtJyl9PC9zcGFuPjxkaXYgY2xhc3M9Imdyb3ciPjxkaXYgY2xhc3M9InJvdyB3Ij48c3BhbiBjbGFzcz0idGlueSBiIG11 dGVkIiBzdHlsZT0ibGV0dGVyLXNwYWNpbmc6LjFlbSI+JHtlc2MoYS5UeXBlKS50b1VwcGVyQ2FzZSgpfTwvc3Bhbj4ke2NyaXQ/ JzxzcGFuIGNsYXNzPSJjaGlwIGMtcmVkIj4nK2ljKCdzaXJlbicpKydDUklUSUNBTDwvc3Bhbj4nOicnfTxzcGFuIGNsYXNzPSJ0 aW55IG11dGVkIj4ke2FnbyhhLkNyZWF0ZWRBdCl9IMK3ICR7YS5UYXJnZXQ9PT0nQUxMJz8nRXZlcnlvbmUnOmVzYyhhLlRhcmdl dD09PSdTSVRFJz9zaXRlTihhLlRhcmdldFZhbHVlKTphLlRhcmdldD09PSdERVBUJz9kZXB0RnVsbChhLlRhcmdldFZhbHVlKTph LlRhcmdldD09PSdST0xFJz9yb2xlTihhLlRhcmdldFZhbHVlKTonQ29udHJhY3RvcnMnKX08L3NwYW4+PC9kaXY+PGgzIHN0eWxl PSJmb250LXNpemU6MTdweDttYXJnaW46NnB4IDAiPiR7ZXNjKGEuVGl0bGUpfTwvaDM+PHAgc3R5bGU9Im1hcmdpbjowIiBjbGFz cz0ic21hbGwiPiR7ZXNjKGEuQm9keSl9PC9wPiR7cHViJiZhLnRhcmdldENvdW50IT1udWxsP2A8ZGl2IGNsYXNzPSJyb3cgbXQi IHN0eWxlPSJtYXgtd2lkdGg6NDIwcHgiPjxkaXYgY2xhc3M9Imdyb3ciPiR7YmFyKGEuYWNrQ291bnQvTWF0aC5tYXgoMSxhLnRh cmdldENvdW50KSoxMDAsJ2cnKX08L2Rpdj48c3BhbiBjbGFzcz0ic21hbGwgYiI+JHthLmFja0NvdW50fS8ke2EudGFyZ2V0Q291 bnR9IGFja25vd2xlZGdlZDwvc3Bhbj48L2Rpdj5gOicnfTwvZGl2PjxkaXYgY2xhc3M9ImNvbCIgc3R5bGU9ImFsaWduLWl0ZW1z OmZsZXgtZW5kIj4ke2EudGFyZ2V0ZWQ/KGEuYWNrZWQ/Y2hpcCgnQWNrbm93bGVkZ2VkJyk6YDxidXR0b24gY2xhc3M9ImJ0biAk e2EuUmVxdWlyZUFjaz09PSdZJz8ncHJpJzonJ30iIG9uY2xpY2s9ImFja0FsZXJ0KCcke2EuSWR9JykiPiR7aWMoJ2NoZWNrJywn c20nKX0gJHthLlJlcXVpcmVBY2s9PT0nWSc/J0Fja25vd2xlZGdlJzonTWFyayBhcyByZWFkJ308L2J1dHRvbj5gKTonJ30ke3B1 Yj9gPGJ1dHRvbiBjbGFzcz0iYnRuIHNtIGdob3N0IiBvbmNsaWNrPSJjYWxsKCdhcmNoaXZlQWxlcnQnLHtpZDonJHthLklkfSd9 KS50aGVuKCgpPT57dG9hc3QoJ0FsZXJ0IGFyY2hpdmVkJywnb2snKTtyZW5kZXIoKTt9KSI+QXJjaGl2ZTwvYnV0dG9uPmA6Jyd9 PC9kaXY+PC9kaXY+PC9kaXY+YDsgfSkuam9pbignJyl8fGA8ZGl2IGNsYXNzPSJjYXJkIj4ke2VtcHR5KCdObyBhY3RpdmUgYWxl cnRzJywnQWxsIGNsZWFyIHJpZ2h0IG5vdy4nLCdiZWxsJyl9PC9kaXY+YH1gKTsgfTsKYXN5bmMgZnVuY3Rpb24gYWNrQWxlcnQo aWQpeyB0cnl7IGNvbnN0IHI9YXdhaXQgY2FsbCgnYWNrQWxlcnQnLHtpZH0pOyBjZWxlYnJhdGUoci5yZXdhcmQpOyB0b2FzdCgn QWNrbm93bGVkZ2VkJywnb2snKTsgU0cuY3JpdEFsZXJ0cz1TRy5jcml0QWxlcnRzLmZpbHRlcihhPT5hLklkIT09aWQpOyBwdWxz ZSgpOyByZW5kZXIoKTsgfWNhdGNoKGUpeyB0b2FzdChlLm1lc3NhZ2UsJ2VycicpOyB9IH0KZnVuY3Rpb24gcHVibGlzaEFsZXJ0 KCl7IG1vZGFsKCdQdWJsaXNoIHNhZmV0eSBhbGVydCcsIGA8ZGl2IGNsYXNzPSJncmlkIGcyIj48ZGl2IGNsYXNzPSJmaWVsZCI+ PGxhYmVsPlR5cGU8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0idHlwZSI+JHtPYmplY3Qua2V5cyhBVFlQRSkubWFw KHQ9Pm9wdCh0KSkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5TZXZlcml0eTwvbGFi ZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJzZXZlcml0eSI+JHtbJ0lORk8nLCdISUdIJywnQ1JJVElDQUwnXS5tYXAodD0+ b3B0KHQpKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlRpdGxlPC9sYWJl bD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0idGl0bGUiIHJlcXVpcmVkPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+ TWVzc2FnZTwvbGFiZWw+PHRleHRhcmVhIGNsYXNzPSJpbnAiIG5hbWU9ImJvZHkiPjwvdGV4dGFyZWE+PC9kaXY+CiAgPGRpdiBj bGFzcz0iZ3JpZCBnMiI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5BdWRpZW5jZTwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5w IiBuYW1lPSJ0YXJnZXQiIG9uY2hhbmdlPSJ0Z3QodGhpcykiPiR7W1snQUxMJywnRXZlcnlvbmUnXSxbJ1NJVEUnLCdTaXRlJ10s WydERVBUJywnRGVwYXJ0bWVudCddLFsnUk9MRScsJ1JvbGUnXSxbJ0NPTlRSQUNUT1JTJywnQ29udHJhY3RvcnMnXV0ubWFwKHQ9 Pm9wdCh0WzBdLHRbMV0pKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlRhcmdldDwv bGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJ0YXJnZXRWYWx1ZSIgaWQ9InRndiIgZGlzYWJsZWQ+PG9wdGlvbiB2YWx1 ZT0iIj7igJQ8L29wdGlvbj48L3NlbGVjdD48L2Rpdj48L2Rpdj48bGFiZWwgY2xhc3M9InJvdyBzbWFsbCI+PGlucHV0IHR5cGU9 ImNoZWNrYm94IiBuYW1lPSJyZXF1aXJlQWNrIiBjaGVja2VkPiBSZXF1aXJlIGFja25vd2xlZGdlbWVudDwvbGFiZWw+YCwKICB7 IHN1Ym1pdDonUHVibGlzaCBub3cnLCBvblN1Ym1pdDogYXN5bmMgZD0+eyBhd2FpdCBjYWxsKCdwdWJsaXNoQWxlcnQnLGQpOyB0 b2FzdCgnQWxlcnQgcHVibGlzaGVkJywnb2snKTsgcmVuZGVyKCk7IH0gfSk7IH0KZnVuY3Rpb24gdGd0KHMpeyBjb25zdCB2PXFz KCcjdGd2Jyk7IHYuZGlzYWJsZWQ9WydBTEwnLCdDT05UUkFDVE9SUyddLmluY2x1ZGVzKHMudmFsdWUpOyB2LmlubmVySFRNTD1z LnZhbHVlPT09J1NJVEUnP3NlbFNpdGVzKCcnKTpzLnZhbHVlPT09J0RFUFQnP3NlbERlcHRzKCcnKTpzLnZhbHVlPT09J1JPTEUn P1suLi5uZXcgU2V0KFNHLkwudXNlcnMubWFwKHU9PnUuUm9sZSkpXS5tYXAocj0+b3B0KHIscm9sZU4ocikpKS5qb2luKCcnKTon PG9wdGlvbiB2YWx1ZT0iIj7igJQ8L29wdGlvbj4nOyB9CgovKiAtLS0tLS0tLS0tIENhbXBhaWducyAmIGNoYWxsZW5nZXMgLS0t LS0tLS0tLSAqLwpWSUVXUy5jYW1wYWlnbnMgPSBhc3luYyAoKSA9PiB7IGNvbnN0IGQ9YXdhaXQgbG9hZCgnbGlzdENhbXBhaWdu cycpOyBpZighZCkgcmV0dXJuOwogIG1haW4oYCR7cGFnZUgoJ1NhZmV0eSBDYW1wYWlnbnMgJiBDaGFsbGVuZ2VzJywnU21hbGwg ZGFpbHkgaGFiaXRzLCBiaWcgc2FmZXR5IGN1bHR1cmUuJywgZC5jYW5NYW5hZ2U/YDxidXR0b24gY2xhc3M9ImJ0biIgb25jbGlj az0ibmV3Q2hhbGxlbmdlKCkiPiR7aWMoJ3RhcmdldCcsJ3NtJyl9IE5ldyBjaGFsbGVuZ2U8L2J1dHRvbj48YnV0dG9uIGNsYXNz PSJidG4gcHJpIiBvbmNsaWNrPSJuZXdDYW1wYWlnbigpIj4ke2ljKCdmbGFnJywnc20nKX0gTmV3IGNhbXBhaWduPC9idXR0b24+ YDonJyl9CiAgJHtkLmNhbXBhaWducy5tYXAoYz0+eyBjb25zdCBkb25lPW5ldyBTZXQoYy5teURheXMpOyByZXR1cm4gYDxkaXYg Y2xhc3M9ImNhcmQgbWIiPjxkaXYgY2xhc3M9ImNhcmQtYiI+PGRpdiBjbGFzcz0icm93IGJldHdlZW4gdyI+PGRpdj48c3BhbiBj bGFzcz0iY2hpcCAke2MuQWN0aXZlPT09J1knPydjLWdyZWVuJzonYy1ncmF5J30iPiR7Yy5BY3RpdmU9PT0nWSc/J0FjdGl2ZSc6 J0VuZGVkJ308L3NwYW4+PGgyIGNsYXNzPSJtdCIgc3R5bGU9Im1hcmdpbi10b3A6OHB4Ij4ke2VzYyhjLk5hbWUpfTwvaDI+PHAg Y2xhc3M9Im11dGVkIiBzdHlsZT0ibWFyZ2luOjRweCAwIDAiPiR7ZXNjKGMuRGVzY3JpcHRpb24pfTwvcD48L2Rpdj48ZGl2IGNs YXNzPSJyb3ciIHN0eWxlPSJnYXA6MThweCI+JHtyaW5nKGMuRGF5cy5sZW5ndGg/ZG9uZS5zaXplL2MuRGF5cy5sZW5ndGgqMTAw OjAsOTYsMTAsJ3ZhcigtLXkpJyxkb25lLnNpemUrJy8nK2MuRGF5cy5sZW5ndGgpfTxkaXYgY2xhc3M9InNtYWxsIj48ZGl2Pjxi PiR7Yy5wYXJ0aWNpcGFudHN9PC9iPiBvZiAke2MubWVtYmVyc30gdGFraW5nIHBhcnQ8L2Rpdj48ZGl2PjxiPiR7Yy5jb21wbGV0 aW9uc308L2I+IGFjdGl2aXRpZXMgY29tcGxldGVkPC9kaXY+PGRpdj4rJHtjLlBvaW50c1BlckRheX0gcHRzIHBlciBkYXk8L2Rp dj48L2Rpdj48L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJkYXlzIG10MiI+JHtjLkRheXMubWFwKHg9PnsgY29uc3Qgc3Q9ZG9u ZS5oYXMoeC5kYXkpPydkb25lJzp4LmRheT09PWMuZWxhcHNlZD8nb3Blbic6eC5kYXk8Yy5lbGFwc2VkPydvcGVuJzonbG9jayc7 IHJldHVybiBgPGJ1dHRvbiBjbGFzcz0iZGF5ICR7c3R9IiB0aXRsZT0iRGF5ICR7eC5kYXl9OiAke2VzYyh4LnRpdGxlKX0iICR7 c3Q9PT0nb3Blbic/YG9uY2xpY2s9J2NhbXBEYXkoJHtKU09OLnN0cmluZ2lmeShjLklkKX0sJHt4LmRheX0sJHtKU09OLnN0cmlu Z2lmeSh4LnRpdGxlKX0pJ2A6Jyd9IGFyaWEtbGFiZWw9IkRheSAke3guZGF5fSAke2VzYyh4LnRpdGxlKX0gJHtzdD09PSdkb25l Jz8nY29tcGxldGVkJzpzdD09PSdsb2NrJz8nbG9ja2VkJzonYXZhaWxhYmxlJ30iPiR7c3Q9PT0nZG9uZSc/aWMoJ2NoZWNrJywn c20nKTp4LmRheX08L2J1dHRvbj5gOyB9KS5qb2luKCcnKX08L2Rpdj4KICA8ZGl2IGNsYXNzPSJzbWFsbCBtdXRlZCBtdCI+VG9k YXkgaXMgZGF5ICR7Yy5lbGFwc2VkfTogPGIgc3R5bGU9ImNvbG9yOnZhcigtLWluaykiPiR7ZXNjKChjLkRheXNbYy5lbGFwc2Vk LTFdfHx7fSkudGl0bGV8fCcnKX08L2I+LiBNaXNzZWQgZGF5cyBzdGF5IG9wZW4gdW50aWwgdGhlIGNhbXBhaWduIGVuZHMuPC9k aXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMiBtdDIiPjxkaXY+PGgzIGNsYXNzPSJtYiI+RGVwYXJ0bWVudCBwZXJmb3JtYW5jZTwv aDM+JHtjaGFydEJveCgnY2QtJytjLklkLDIyMCl9PC9kaXY+PGRpdj48aDMgY2xhc3M9Im1iIj5DYW1wYWlnbiBsZWFkZXJib2Fy ZDwvaDM+JHtjLmxlYWRlcnMubWFwKChsLGkpPT5gPGRpdiBjbGFzcz0icm93IHNtYWxsIiBzdHlsZT0icGFkZGluZzo3cHggMDti b3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lMikiPjxiIHN0eWxlPSJ3aWR0aDoyMHB4Ij4ke2krMX08L2I+JHthdihs Lm5hbWUsJ3NtJyl9PHNwYW4gY2xhc3M9Imdyb3ciPiR7ZXNjKGwubmFtZSl9PC9zcGFuPjxiPiR7bC5ufSBkYXlzPC9iPjwvZGl2 PmApLmpvaW4oJycpfHwnPHAgY2xhc3M9InNtYWxsIG11dGVkIj5CZSB0aGUgZmlyc3QhPC9wPid9PC9kaXY+PC9kaXY+PC9kaXY+ PC9kaXY+YDsgfSkuam9pbignJyl8fGA8ZGl2IGNsYXNzPSJjYXJkIj4ke2VtcHR5KCdObyBjYW1wYWlnbnMgeWV0JywnJywnZmxh ZycpfTwvZGl2PmB9CiAgPGgyIGNsYXNzPSJtdDIgbWIiPkNoYWxsZW5nZXM8L2gyPjxkaXYgY2xhc3M9ImNhcmQiPiR7ZC5jaGFs bGVuZ2VzLm1hcChjaGFsbGVuZ2VSb3cpLmpvaW4oJycpfHxlbXB0eSgnTm8gY2hhbGxlbmdlcycsJycpfTwvZGl2PmApOwogIGQu Y2FtcGFpZ25zLmZvckVhY2goYz0+Y2hhcnQoJ2NkLScrYy5JZCwnYmFyJyxjLmRlcHRzLm1hcCh4PT54Lm5hbWUpLFt7bGFiZWw6 J1BhcnRpY2lwYXRpb24gJScsZGF0YTpjLmRlcHRzLm1hcCh4PT5NYXRoLnJvdW5kKHguYWN0aXZlL3gubWVtYmVycyoxMDApKSxj b2xvcjonI0ZGQzIwRSd9XSx7aG9yaXpvbnRhbDp0cnVlLG9wdGlvbnM6e3NjYWxlczp7eDp7bWF4OjEwMCxiZWdpbkF0WmVybzp0 cnVlfX19fSkpOyB9OwpmdW5jdGlvbiBjYW1wRGF5KGlkLCBkYXksIHRpdGxlKXsgbW9kYWwoJ0RheSAnK2RheSsnOiAnK3RpdGxl LCBgPHA+VGFrZSBhIG1vbWVudCB0byBjb21wbGV0ZSB0b2RheSdzIGFjdGl2aXR5OiA8Yj4ke2VzYyh0aXRsZSl9PC9iPi48L3A+ PGxhYmVsIGNsYXNzPSJyb3cgc21hbGwiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ib2siIHJlcXVpcmVkPiBJIGNvbXBs ZXRlZCB0aGlzIGFjdGl2aXR5PC9sYWJlbD5gLCB7c3VibWl0OidNYXJrIGNvbXBsZXRlJywgb25TdWJtaXQ6IGFzeW5jIGQ9Pnsg aWYoIWQub2speyB0b2FzdCgnVGljayB0aGUgYm94IHRvIGNvbmZpcm0nLCdlcnInKTsgcmV0dXJuIGZhbHNlOyB9IGNvbnN0IHI9 YXdhaXQgY2FsbCgnY29tcGxldGVDYW1wYWlnbkRheScse2lkLGRheX0pOyBjZWxlYnJhdGUoci5yZXdhcmQpOyByZW5kZXIoKTsg fX0pOyB9CmZ1bmN0aW9uIG5ld0NhbXBhaWduKCl7IG1vZGFsKCdOZXcgY2FtcGFpZ24nLCBgPGRpdiBjbGFzcz0iZmllbGQiPjxs YWJlbD5OYW1lPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0ibmFtZSIgcmVxdWlyZWQgcGxhY2Vob2xkZXI9IjMwIERh eXMgb2YgU2FmZXIgRHJpdmluZyI+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5EZXNjcmlwdGlvbjwvbGFiZWw+PHRl eHRhcmVhIGNsYXNzPSJpbnAiIG5hbWU9ImRlc2NyaXB0aW9uIj48L3RleHRhcmVhPjwvZGl2PjxkaXYgY2xhc3M9ImdyaWQgZzIi PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+U3RhcnQgZGF0ZTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIHR5cGU9ImRhdGUi IG5hbWU9InN0YXJ0RGF0ZSIgdmFsdWU9IiR7dG9kYXkoKX0iPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+UG9pbnRz IHBlciBkYXk8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiB0eXBlPSJudW1iZXIiIG5hbWU9InBvaW50c1BlckRheSIgdmFsdWU9 IjIwIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkRhaWx5IGFjdGl2aXRpZXMgKG9uZSBwZXIgbGluZSk8 L2xhYmVsPjx0ZXh0YXJlYSBjbGFzcz0iaW5wIiBuYW1lPSJkYXlzIiBzdHlsZT0ibWluLWhlaWdodDoxNTBweCIgcGxhY2Vob2xk ZXI9IlNlYXRiZWx0IGNoZWNrJiMxMDtWZWhpY2xlIHdhbGstYXJvdW5kJiMxMDtTcGVlZCBhd2FyZW5lc3MiPjwvdGV4dGFyZWE+ PC9kaXY+YCwge3N1Ym1pdDonTGF1bmNoJywgb25TdWJtaXQ6IGFzeW5jIGQ9PnsgYXdhaXQgY2FsbCgnY3JlYXRlQ2FtcGFpZ24n LGQpOyB0b2FzdCgnQ2FtcGFpZ24gbGF1bmNoZWQnLCdvaycsJ0V2ZXJ5b25lIGhhcyBiZWVuIG5vdGlmaWVkJyk7IHJlbmRlcigp OyB9fSk7IH0KZnVuY3Rpb24gbmV3Q2hhbGxlbmdlKCl7IGNvbnN0IGFjdHM9T2JqZWN0LmtleXMoU0cuY2ZnLnBvaW50c3x8e30p OyBtb2RhbCgnTmV3IGNoYWxsZW5nZScsIGA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlRpdGxlPC9sYWJlbD48aW5wdXQgY2xh c3M9ImlucCIgbmFtZT0idGl0bGUiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSJSZXBvcnQgMyBoYXphcmRzIHRoaXMgd2VlayI+PC9k aXY+PGRpdiBjbGFzcz0iZ3JpZCBnMiI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Db3VudHMgdGhpcyBhY3Rpdml0eTwvbGFi ZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJhY3Rpdml0eSI+JHthY3RzLm1hcChhPT5vcHQoYSxhLnJlcGxhY2UoL18vZywn ICcpLnRvTG93ZXJDYXNlKCkpKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlRhcmdl dDwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIHR5cGU9Im51bWJlciIgbmFtZT0idGFyZ2V0IiB2YWx1ZT0iMyI+PC9kaXY+PGRp diBjbGFzcz0iZmllbGQiPjxsYWJlbD5QZXJpb2Q8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0icGVyaW9kIj4ke29w dCgnV0VFSycsJ1dlZWtseScpfSR7b3B0KCdNT05USCcsJ01vbnRobHknKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVs ZCI+PGxhYmVsPlJld2FyZCBwb2ludHM8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiB0eXBlPSJudW1iZXIiIG5hbWU9InBvaW50 cyIgdmFsdWU9IjMwIj48L2Rpdj48L2Rpdj5gLCB7c3VibWl0OidDcmVhdGUnLCBvblN1Ym1pdDogYXN5bmMgZD0+eyBhd2FpdCBj YWxsKCdjcmVhdGVDaGFsbGVuZ2UnLGQpOyB0b2FzdCgnQ2hhbGxlbmdlIGNyZWF0ZWQnLCdvaycpOyByZW5kZXIoKTsgfX0pOyB9 CgovKiAtLS0tLS0tLS0tIEZlZWQgJiByZWNvZ25pdGlvbiAtLS0tLS0tLS0tICovCnZhciBQVFlQRT17UkVDT0dOSVRJT046Wydh d2FyZCcsJyMxNTgwM0QnXSxHT09EX0NBVENIOlsnc2hpZWxkLWNoZWNrJywnIzE1ODAzRCddLEJBREdFOlsnbWVkYWwnLCcjQ0E4 QTA0J10sTUlMRVNUT05FOlsndHJvcGh5JywnIzFENEVEOCddLFRPT0xCT1g6Wyd1c2VycycsJyMwRTE3MjYnXSxDQU1QQUlHTjpb J2ZsYWcnLCcjN0MzQUVEJ10sQ0hBTExFTkdFOlsndGFyZ2V0JywnI0VBNTgwQyddfTsKZnVuY3Rpb24gcG9zdEh0bWwocCl7IGNv bnN0IHQ9UFRZUEVbcC5UeXBlXXx8WydzcGFya2xlcycsJyMwRTE3MjYnXTsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJwb3N0Ij48ZGl2 IGNsYXNzPSJyb3ciIHN0eWxlPSJhbGlnbi1pdGVtczpmbGV4LXN0YXJ0Ij48c3BhbiBjbGFzcz0iYXYiIHN0eWxlPSJiYWNrZ3Jv dW5kOiR7dFsxXX0iPiR7aWModFswXSwnc20nKX08L3NwYW4+PGRpdiBjbGFzcz0iZ3JvdyI+PGRpdiBjbGFzcz0icHRpdGxlIj4k e2VzYyhwLlRpdGxlKX08L2Rpdj4ke3AuQm9keT9gPGRpdiBjbGFzcz0icGJvZHkiPiR7ZXNjKHAuQm9keSl9PC9kaXY+YDonJ308 ZGl2IGNsYXNzPSJyb3cgdyBzbWFsbCBtdXRlZCI+JHtOdW1iZXIocC5Qb2ludHMpPjA/YDxzcGFuIGNsYXNzPSJjaGlwIGMteWVs bG93Ij4ke2ljKCdzcGFya2xlcycpfSske3AuUG9pbnRzfSBTYWZldHkgUG9pbnRzPC9zcGFuPmA6Jyd9PHNwYW4+JHthZ28ocC5D cmVhdGVkQXQpfTwvc3Bhbj4ke3AuQWN0b3JJZCYmcC5BY3RvcklkIT09cC5Vc2VySWQ/YDxzcGFuPsK3IGJ5ICR7ZXNjKHVOYW1l KHAuQWN0b3JJZCkpfTwvc3Bhbj5gOicnfSR7dHlwZW9mIHAuTGlrZXM9PT0nbnVtYmVyJz9gPGJ1dHRvbiBjbGFzcz0ibGlrZSAk e3AubGlrZWQ/J29uJzonJ30iIG9uY2xpY2s9Imxpa2UoJyR7cC5JZH0nLHRoaXMpIiBhcmlhLXByZXNzZWQ9IiR7ISFwLmxpa2Vk fSI+8J+RjyA8c3Bhbj4ke3AuTGlrZXN9PC9zcGFuPjwvYnV0dG9uPmA6Jyd9PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+YDsgfQpW SUVXUy5mZWVkID0gYXN5bmMgKCkgPT4geyBjb25zdCByb3dzPWF3YWl0IGxvYWQoJ2xpc3RGZWVkJyk7IGlmKCFyb3dzKSByZXR1 cm47CiAgbWFpbihgJHtwYWdlSCgnU2FmZXR5IEZlZWQnLCdSZWNvZ25pdGlvbiwgZ29vZCBjYXRjaGVzLCBtaWxlc3RvbmVzIGFu ZCBjYW1wYWlnbnMgZnJvbSBhY3Jvc3MgdGhlIG9yZ2FuaXphdGlvbi4nLCBgJHtjYW4oJ3JlY29nbml0aW9uLmdpdmUnKT9gPGJ1 dHRvbiBjbGFzcz0iYnRuIHByaSIgb25jbGljaz0icmVjb2duaXplKCkiPiR7aWMoJ2F3YXJkJywnc20nKX0gUmVjb2duaXNlIHNv bWVvbmU8L2J1dHRvbj5gOicnfTxidXR0b24gY2xhc3M9ImJ0biIgb25jbGljaz0iZ28oJ3JlcG9ydC9Hb29kIENhdGNoJykiPiR7 aWMoJ3NoaWVsZC1jaGVjaycsJ3NtJyl9IFNoYXJlIGEgZ29vZCBjYXRjaDwvYnV0dG9uPmApfTxkaXYgY2xhc3M9ImdyaWQgZzIx Ij48ZGl2IGNsYXNzPSJjYXJkIj4ke3Jvd3MubWFwKHBvc3RIdG1sKS5qb2luKCcnKXx8ZW1wdHkoJ05vdGhpbmcgeWV0JywnQmUg dGhlIGZpcnN0IHRvIHNoYXJlIGEgZ29vZCBjYXRjaC4nKX08L2Rpdj48ZGl2IGNsYXNzPSJjb2wiPjxkaXYgY2xhc3M9InF1b3Rl IiBzdHlsZT0iZm9udC1zaXplOjE2cHgiPiR7aWMoJ3F1b3RlJyl9PHNwYW4+QSBnb29kIGNhdGNoIHRvZGF5IHByZXZlbnRzIGFu IGluY2lkZW50IHRvbW9ycm93Ljwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkIHAiPjxoMyBjbGFzcz0ibWIiPkhvdyByZWNv Z25pdGlvbiB3b3JrczwvaDM+PGRpdiBjbGFzcz0ic21hbGwgbXV0ZWQiPkxlYWRlcnMgY2FuIHJlY29nbmlzZSBzYWZlIGJlaGF2 aW91ciB3aXRoIHBvaW50cywgYSBiYWRnZSBhbmQgYSBwb3N0IGhlcmUuIFJlY29nbml0aW9uIGhpc3RvcnkgYXBwZWFycyBvbiBl YWNoIHBlcnNvbidzIHNhZmV0eSBwcm9maWxlLjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PmApOyB9Owphc3luYyBmdW5jdGlvbiBs aWtlKGlkLCBidG4peyB0cnl7IGNvbnN0IHI9YXdhaXQgY2FsbCgnbGlrZVBvc3QnLHtpZH0pOyBidG4uY2xhc3NMaXN0LnRvZ2ds ZSgnb24nLHIubGlrZWQpOyBxcygnc3BhbicsYnRuKS50ZXh0Q29udGVudD1yLmxpa2VzOyB9Y2F0Y2goZSl7IHRvYXN0KGUubWVz c2FnZSwnZXJyJyk7IH0gfQpmdW5jdGlvbiByZWNvZ25pemUodWlkKXsgbW9kYWwoJ1NhZmV0eSByZWNvZ25pdGlvbicsIGA8ZGl2 IGNsYXNzPSJmaWVsZCI+PGxhYmVsPldobz88L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0idXNlcklkIiByZXF1aXJl ZD4ke3NlbFVzZXJzKHVpZHx8JycsdT0+dS5JZCE9PVNHLnVzZXIuSWQsJ+KAlCBzZWxlY3Qg4oCUJyl9PC9zZWxlY3Q+PC9kaXY+ PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5SZWNvZ25pdGlvbjwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJ0aXRs ZSI+JHtbJ1NhZmV0eSBDaGFtcGlvbiBSZWNvZ25pdGlvbicsJ0dvb2QgQ2F0Y2gnLCdTYWZldHkgTGVhZGVyc2hpcCcsJ0hhemFy ZCBTcG90dGVyJywnVGVhbSBTYWZldHkgSGVybyddLm1hcCh4PT5vcHQoeCkpLmpvaW4oJycpfTwvc2VsZWN0PjwvZGl2PjxkaXYg Y2xhc3M9ImZpZWxkIj48bGFiZWw+UmVhc29uPC9sYWJlbD48dGV4dGFyZWEgY2xhc3M9ImlucCIgbmFtZT0icmVhc29uIiByZXF1 aXJlZCBwbGFjZWhvbGRlcj0iZS5nLiBSZXBvcnRlZCBhIGNyaXRpY2FsIGhhemFyZCBiZWZvcmUgd29yayBiZWdhbi4iPjwvdGV4 dGFyZWE+PC9kaXY+PGRpdiBjbGFzcz0iZ3JpZCBnMiI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Qb2ludHM8L2xhYmVsPjxp bnB1dCBjbGFzcz0iaW5wIiB0eXBlPSJudW1iZXIiIG5hbWU9InBvaW50cyIgdmFsdWU9IiR7KFNHLmNmZy5wb2ludHN8fHt9KS5S RUNPR05JVElPTnx8MjV9IiBtaW49IjUiIG1heD0iMTAwIj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkJhZGdlIChv cHRpb25hbCk8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0iYmFkZ2VJZCI+JHtvcHQoJycsJ+KAlCBub25lIOKAlCcp fSR7KFNHLmNmZy5iYWRnZXN8fFtdKS5tYXAoYj0+b3B0KGIuaWQsYi5uYW1lKSkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+PC9k aXY+YCwge3N1Ym1pdDonUmVjb2duaXNlJywgb25TdWJtaXQ6IGFzeW5jIGQ9PnsgaWYoIWQudXNlcklkKXt0b2FzdCgnQ2hvb3Nl IGEgcGVyc29uJywnZXJyJyk7cmV0dXJuIGZhbHNlO30gY29uc3Qgcj1hd2FpdCBjYWxsKCdyZWNvZ25pemUnLGQpOyB0b2FzdCgn UmVjb2duaXRpb24gcG9zdGVkJywnb2snLHIuYmFkZ2U/J0JhZGdlIGF3YXJkZWQ6ICcrci5iYWRnZTonJyk7IGNvbmZldHRpKCk7 IGlmKFNHLnJvdXRlPT09J2ZlZWQnKSByZW5kZXIoKTsgfX0pOyB9CgovKiAtLS0tLS0tLS0tIExlYWRlcmJvYXJkICYgZ2lhbnRz IC0tLS0tLS0tLS0gKi8KVklFV1MubGVhZGVyYm9hcmQgPSBhc3luYyAoKSA9PiB7IFNHLmxiPVNHLmxifHx7cGVyaW9kOidNT05U SCcsZ3JvdXA6J2luZGl2aWR1YWwnLHNpdGVJZDonJ307IGNvbnN0IGQ9YXdhaXQgbG9hZCgnZ2V0TGVhZGVyYm9hcmQnLFNHLmxi KTsgaWYoIWQpIHJldHVybjsgY29uc3QgbGI9U0cubGIsIHNlZz0oayxhcnIpPT5gPGRpdiBjbGFzcz0ic2VnIj4ke2Fyci5tYXAo YT0+YDxidXR0b24gY2xhc3M9IiR7bGJba109PT1hWzBdPydvbic6Jyd9IiBvbmNsaWNrPSJTRy5sYi4ke2t9PScke2FbMF19Jzty ZW5kZXIoKSI+JHthWzFdfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PmA7CiAgY29uc3QgaW5kPWQuZ3JvdXA9PT0naW5kaXZp ZHVhbCcsIHRvcD1kLnJvd3Muc2xpY2UoMCwzKTsKICBtYWluKGAke3BhZ2VIKCdMZWFkZXJib2FyZCcsJ1JlY29nbmlzaW5nIHRo ZSBwZW9wbGUgYW5kIHRlYW1zIHdobyBtYWtlIHNhZmV0eSBoYXBwZW4uJyl9PGRpdiBjbGFzcz0icm93IHcgbWIiPiR7c2VnKCdw ZXJpb2QnLFtbJ1dFRUsnLCdXZWVrJ10sWydNT05USCcsJ01vbnRoJ10sWydRVUFSVEVSJywnUXVhcnRlciddLFsnWUVBUicsJ1ll YXInXSxbJ0FMTCcsJ0FsbCB0aW1lJ11dKX0ke3NlZygnZ3JvdXAnLFtbJ2luZGl2aWR1YWwnLCdQZW9wbGUnXSxbJ2RlcGFydG1l bnQnLCdEZXBhcnRtZW50cyddLFsnc2l0ZScsJ1NpdGVzJ11dKX08c2VsZWN0IGNsYXNzPSJpbnAiIHN0eWxlPSJ3aWR0aDphdXRv IiBvbmNoYW5nZT0iU0cubGIuc2l0ZUlkPXRoaXMudmFsdWU7cmVuZGVyKCkiPiR7c2VsU2l0ZXMobGIuc2l0ZUlkLCdDb21wYW55 LXdpZGUnKX08L3NlbGVjdD48L2Rpdj4KICAke2QuaGlkZGVuP2A8ZGl2IGNsYXNzPSJiYW5uZXIgaW5mbyI+JHtpYygnZXllLW9m ZicpfTxzcGFuPllvdXIgb3JnYW5pemF0aW9uIHNob3dzIGRlcGFydG1lbnQtbGV2ZWwgcmFua2luZ3Mgb25seSB0byBwcm90ZWN0 IGluZGl2aWR1YWwgcHJpdmFjeS48L3NwYW4+PC9kaXY+YDonJ30KICAke2luZCYmdG9wLmxlbmd0aD09PTM/YDxkaXYgY2xhc3M9 InBvZGl1bSI+JHtbMSwwLDJdLm1hcChpPT57IGNvbnN0IHI9dG9wW2ldOyByZXR1cm4gYDxkaXYgY2xhc3M9InBvZCBwJHtpKzF9 IiBvbmNsaWNrPSJnbygncHJvZmlsZS8ke3IudXNlcklkfScpIiBzdHlsZT0iY3Vyc29yOnBvaW50ZXIiPjxkaXYgY2xhc3M9InJh bmsiPiMke2krMX08L2Rpdj4ke2F2KHIubmFtZSxpPT09MD8nbGcnOicnKX08ZGl2IGNsYXNzPSJiIG10IiBzdHlsZT0ibWFyZ2lu LXRvcDo4cHgiPiR7ZXNjKHIubmFtZSl9PC9kaXY+PGRpdiBjbGFzcz0ic21hbGwiIHN0eWxlPSJvcGFjaXR5Oi43NSI+JHtlc2Mo ci5sZXZlbCl9PC9kaXY+PGRpdiBjbGFzcz0icHYiPiR7bnVtKHIucG9pbnRzKX08L2Rpdj48ZGl2IGNsYXNzPSJ0aW55IiBzdHls ZT0ib3BhY2l0eTouNyI+cG9pbnRzIHRoaXMgcGVyaW9kPC9kaXY+PC9kaXY+YDsgfSkuam9pbignJyl9PC9kaXY+YDonJ30KICAk e2luZCYmZC5tZT9gPGRpdiBjbGFzcz0iYmFubmVyIHdhcm4iPiR7aWMoJ3VzZXItcm91bmQnKX08c3Bhbj5Zb3UncmUgPGI+IyR7 ZC5teVJhbmt9PC9iPiB3aXRoIDxiPiR7bnVtKGQubWUucG9pbnRzKX08L2I+IHBvaW50cyB0aGlzIHBlcmlvZCR7ZC5tZS5zdHJl YWs/YCBhbmQgYSAke2QubWUuc3RyZWFrfS1kYXkgc3RyZWFrIPCflKVgOicnfS48L3NwYW4+PC9kaXY+YDonJ30KICA8ZGl2IGNs YXNzPSJjYXJkIj4ke2luZD9TR1QuaHRtbCgnbGInLFt7azoncmFuaycsbGFiZWw6JyMnLGdldDpyPT5kLnJvd3MuaW5kZXhPZihy KSsxLHNvcnR2OnI9PmQucm93cy5pbmRleE9mKHIpfSx7azonbmFtZScsbGFiZWw6J05hbWUnLHJlbmRlcjpyPT5gPHNwYW4gY2xh c3M9InJvdyI+JHthdihyLm5hbWUsJ3NtJyl9PGI+JHtlc2Moci5uYW1lKX08L2I+PC9zcGFuPmB9LHtrOidkZXB0SWQnLGxhYmVs OidEZXBhcnRtZW50JyxnZXQ6cj0+ZGVwdEZ1bGwoci5kZXB0SWQpLGZpbHRlcjp0cnVlfSx7azonbGV2ZWwnLGxhYmVsOidTYWZl dHkgbGV2ZWwnLGZpbHRlcjp0cnVlLHJlbmRlcjpyPT5gPHNwYW4gY2xhc3M9ImNoaXAgYy15ZWxsb3ciPiR7aWMoJ2Nyb3duJyl9 JHtlc2Moci5sZXZlbCl9PC9zcGFuPmB9LHtrOidwb2ludHMnLGxhYmVsOidQb2ludHMnLHJlbmRlcjpyPT5gPGI+JHtudW0oci5w b2ludHMpfTwvYj5gfSx7azonYmFkZ2VzJyxsYWJlbDonQmFkZ2VzJ30se2s6J3N0cmVhaycsbGFiZWw6J1N0cmVhaycscmVuZGVy OnI9PnIuc3RyZWFrP2Dwn5SlICR7ci5zdHJlYWt9YDon4oCUJ31dLGQucm93cyx7bmFtZTonbGVhZGVyYm9hcmQnLG9uUm93OnI9 PmdvKCdwcm9maWxlLycrci51c2VySWQpLG5vRXhwb3J0OmZhbHNlfSk6YDxkaXYgY2xhc3M9ImNhcmQtYiI+JHtjaGFydEJveCgn bGJjJyxNYXRoLm1heCgyNjAsZC5yb3dzLmxlbmd0aCoyOCkpfTwvZGl2PmB9PC9kaXY+YCk7CiAgaWYoaW5kKSBTR1QubW91bnQo KTsgZWxzZSBjaGFydCgnbGJjJywnYmFyJyxkLnJvd3MubWFwKHI9PnIubmFtZSksW3tsYWJlbDonQXZnIHBvaW50cyAvIHBlcnNv bicsZGF0YTpkLnJvd3MubWFwKHI9PnIuYXZnKX0se2xhYmVsOidQYXJ0aWNpcGF0aW9uICUnLGRhdGE6ZC5yb3dzLm1hcChyPT5y LnBhcnRpY2lwYXRpb24pLGNvbG9yOicjRkZDMjBFJ31dLHtob3Jpem9udGFsOnRydWV9KTsgfTsKVklFV1MuZ2lhbnRzID0gYXN5 bmMgKCkgPT4geyBjb25zdCBkPWF3YWl0IGxvYWQoJ2dldEdpYW50cycpOyBpZighZCkgcmV0dXJuOwogIG1haW4oYCR7cGFnZUgo J1NhZmV0eSBHaWFudHMnLCdUaGUgam91cm5leSBmcm9tIFNhZmV0eSBSb29raWUgdG8gU2FmZXR5IEdpYW50IOKAlCBhbmQgdGhl IGJhZGdlcyBhbG9uZyB0aGUgd2F5LicpfTxkaXYgY2xhc3M9ImdyaWQgZzEyIj48ZGl2IGNsYXNzPSJjYXJkIHAiPjxoMyBjbGFz cz0ibWIiPkxldmVsczwvaDM+PGRpdiBjbGFzcz0ibGFkZGVyIj4ke2QubGV2ZWxzLm1hcChsPT5gPGRpdiBjbGFzcz0icnVuZyAk e2wubnVtPT09ZC5tZS5udW0/J21lJzonJ30iPjxzcGFuIGNsYXNzPSJsbnVtIj4ke2wubnVtfTwvc3Bhbj48ZGl2IGNsYXNzPSJn cm93Ij48Yj4ke2VzYyhsLm5hbWUpfTwvYj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj4ke251bShsLm1pbil9KyBwb2ludHM8L2Rp dj48L2Rpdj48c3BhbiBjbGFzcz0ic21hbGwgbXV0ZWQiPiR7bC5jb3VudH0gJHtsLmNvdW50PT09MT8ncGVyc29uJzoncGVvcGxl J308L3NwYW4+JHtsLm51bT09PWQubWUubnVtPyc8c3BhbiBjbGFzcz0iY2hpcCBjLXllbGxvdyI+WW91PC9zcGFuPic6Jyd9PC9k aXY+YCkuam9pbignJyl9PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iY29sIj48ZGl2IGNsYXNzPSJjYXJkIHAiPjxoMyBjbGFz cz0ibWIiPkJhZGdlczwvaDM+PGRpdiBjbGFzcz0iZ3JpZCBnNCI+JHtkLmJhZGdlcy5tYXAoYj0+YDxkaXYgY2xhc3M9ImJhZGdl ICR7Yi5taW5lPycnOidsb2NrZWQnfSI+PGRpdiBjbGFzcz0ibWVkIj4ke2ljKGIuaWNvbnx8J2F3YXJkJyl9PC9kaXY+PGI+JHtl c2MoYi5uYW1lKX08L2I+PHNwYW4+JHtlc2MoYi5kZXNjfHwnJyl9PC9zcGFuPjxzcGFuIGNsYXNzPSJ0aW55Ij4ke2IuaG9sZGVy c30gaG9sZGVyJHtiLmhvbGRlcnM9PT0xPycnOidzJ308L3NwYW4+PC9kaXY+YCkuam9pbignJyl9PC9kaXY+PC9kaXY+CiAgPGRp diBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+JHtpYygnY3Jvd24nLCdzbScpfSBIYWxsIG9mIGZhbWU8L2gz PjwvZGl2PiR7ZC5oYWxsLm1hcCgoaCxpKT0+YDxkaXYgY2xhc3M9Imxpc3QtaSIgb25jbGljaz0iZ28oJ3Byb2ZpbGUvJHtoLnVz ZXJJZH0nKSI+PGIgc3R5bGU9IndpZHRoOjIycHgiPiR7aSsxfTwvYj4ke2F2KGgubmFtZSwnc20nKX08ZGl2IGNsYXNzPSJncm93 IHNtYWxsIj48Yj4ke2VzYyhoLm5hbWUpfTwvYj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj4ke2VzYyhkZXB0RnVsbChoLmRlcHRJ ZCkpfTwvZGl2PjwvZGl2PjxzcGFuIGNsYXNzPSJjaGlwIGMteWVsbG93Ij4ke2ljKCdjcm93bicpfUx2ICR7aC5sZXZlbC5udW19 ICR7ZXNjKGgubGV2ZWwubmFtZSl9PC9zcGFuPjxiIGNsYXNzPSJzbWFsbCI+JHtudW0oaC5wb2ludHMpfTwvYj48L2Rpdj5gKS5q b2luKCcnKX08L2Rpdj48L2Rpdj48L2Rpdj5gKTsgfTsKVklFV1MucHJvZmlsZSA9IGFzeW5jICgpID0+IHsgY29uc3QgdWlkPVNH LnBhcmFtc1swXXx8U0cudXNlci5JZDsgY29uc3QgZD1hd2FpdCBsb2FkKCdnZXRQcm9maWxlJyx7dXNlcklkOnVpZH0pOyBpZigh ZCkgcmV0dXJuOyBjb25zdCB1PWQudXNlciwgbHY9ZC5sZXZlbCwgbWU9dWlkPT09U0cudXNlci5JZCwgcGN0PWx2Lm5leHRNaW4+ bHYubWluPyhsdi5wb2ludHMtbHYubWluKS8obHYubmV4dE1pbi1sdi5taW4pKjEwMDoxMDA7CiAgY29uc3QgQUNUPXtSRVBPUlRf SEFaQVJEOidIYXphcmQgcmVwb3J0JyxVTlNBRkVfQUNUOidVbnNhZmUgYWN0IHJlcG9ydCcsT0JTRVJWQVRJT046J09ic2VydmF0 aW9uJyxUT09MQk9YOidUb29sYm94IHRhbGsnLFRSQUlOSU5HOidUcmFpbmluZyBwYXNzZWQnLE5FQVJfTUlTUzonTmVhciBtaXNz IHJlcG9ydCcsSU5DSURFTlRfUkVQT1JUOidJbmNpZGVudCByZXBvcnQnLElOU1BFQ1RJT046J0luc3BlY3Rpb24nLEFMRVJUX1JF QUQ6J0FsZXJ0IGFja25vd2xlZGdlZCcsQ0FNUEFJR046J0NhbXBhaWduIGRheScsR09PRF9DQVRDSDonR29vZCBjYXRjaCcsVEFT S19DTE9TRUQ6J0FjdGlvbiBjbG9zZWQnLFJFQ09HTklUSU9OOidSZWNvZ25pdGlvbicsUkVQT1JUX0NMT1NFRDonUmVwb3J0IGNs b3NlZCcsQ0hBTExFTkdFOidDaGFsbGVuZ2UnLFJFVkVSU0FMOidQb2ludHMgcmV2ZXJzZWQnfTsKICBtYWluKGA8ZGl2IGNsYXNz PSJnaWFudCIgc3R5bGU9InBhZGRpbmc6MjhweCI+PGRpdiBjbGFzcz0icm93IHciIHN0eWxlPSJnYXA6MjBweDtwb3NpdGlvbjpy ZWxhdGl2ZTt6LWluZGV4OjEiPiR7YXYodS5OYW1lLCdsZycpfTxkaXYgY2xhc3M9Imdyb3ciPjxkaXYgY2xhc3M9ImxibCI+U0FB RkVMWSDCtyBTQUZFVFkgTEVWRUwgJHtsdi5udW19PC9kaXY+PGgxIHN0eWxlPSJjb2xvcjojZmZmO2ZvbnQtc2l6ZTozMHB4O21h cmdpbjo2cHggMCAycHgiPiR7ZXNjKHUuTmFtZS50b1VwcGVyQ2FzZSgpKX08L2gxPjxkaXYgc3R5bGU9ImNvbG9yOiM5RkIwQ0Mi PiR7ZXNjKGx2Lm5hbWUpfSDCtyAke2VzYyhyb2xlTih1LlJvbGUpKX0gwrcgJHtlc2MoZGVwdEZ1bGwodS5EZXB0SWQpKX08L2Rp dj48L2Rpdj48ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48ZGl2IGNsYXNzPSJwdHMiPjxzcGFuIGRhdGEtY291bnQ9IiR7 bHYucG9pbnRzfSI+MDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJueCI+U2FmZXR5IFBvaW50czwvZGl2PjwvZGl2PjwvZGl2Pjxk aXYgc3R5bGU9InBvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MSI+JHtiYXIocGN0LCd5Jyl9PGRpdiBjbGFzcz0ibngiPiR7bHYu bmV4dD9gJHtudW0obHYucG9pbnRzKX0gLyAke251bShsdi5uZXh0TWluKX0gcG9pbnRzIMK3IE5leHQgYWNoaWV2ZW1lbnQ6IDxi IHN0eWxlPSJjb2xvcjojZmZmIj7igJwke2VzYyhsdi5uZXh0KX3igJ08L2I+YDonVG9wIGxldmVsIHJlYWNoZWQuJ308L2Rpdj48 L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkIGc0IG10Ij4ke1tbJ2ZsYW1lJyxkLnN0cmVhaysnLWRheScsJ1NhZmV0eSBT dHJlYWsnXSxbJ2ZpbGUtcGx1cy0yJyxkLmNvdW50cy5yZXBvcnRzLCdSZXBvcnRzJ10sWyd1c2VycycsZC5jb3VudHMudG9vbGJv eCwnVG9vbGJveCBUYWxrcyddLFsnZ3JhZHVhdGlvbi1jYXAnLGQuY291bnRzLnRyYWluaW5nLCdUcmFpbmluZyBDb3Vyc2VzJ10s WydtZWRhbCcsZC5jb3VudHMuYmFkZ2VzLCdCYWRnZXMnXSxbJ2NsaXBib2FyZC1jaGVjaycsZC5jb3VudHMuaW5zcGVjdGlvbnMs J0luc3BlY3Rpb25zJ10sWydzaGllbGQtY2hlY2snLGQuY291bnRzLmdvb2RDYXRjaGVzLCdHb29kIENhdGNoZXMnXSxbJ2F3YXJk JyxkLnJlY29nbml0aW9uLmxlbmd0aCwnUmVjb2duaXRpb25zJ11dLm1hcChzPT5gPGRpdiBjbGFzcz0iY2FyZCBzdGF0Ij48ZGl2 IGNsYXNzPSJzaSI+JHtpYyhzWzBdKX08L2Rpdj48ZGl2PjxiPiR7c1sxXX08L2I+PHNwYW4+JHtzWzJdfTwvc3Bhbj48L2Rpdj48 L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj4KICA8ZGl2IGNsYXNzPSJncmlkIGcyIG10Ij48ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNs YXNzPSJjYXJkLWgiPjxoMz5CYWRnZXMgJiBhY2hpZXZlbWVudHM8L2gzPiR7IW1lJiZjYW4oJ3JlY29nbml0aW9uLmdpdmUnKT9g PGJ1dHRvbiBjbGFzcz0iYnRuIHNtIHByaSIgb25jbGljaz0icmVjb2duaXplKCcke3UuSWR9JykiPiR7aWMoJ2F3YXJkJywnc20n KX0gUmVjb2duaXNlPC9idXR0b24+YDonJ308L2Rpdj48ZGl2IGNsYXNzPSJjYXJkLWIiPjxkaXYgY2xhc3M9ImdyaWQgZzMiPiR7 ZC5iYWRnZXMubWFwKGI9PmA8ZGl2IGNsYXNzPSJiYWRnZSI+PGRpdiBjbGFzcz0ibWVkIj4ke2ljKGIuaWNvbnx8J2F3YXJkJyl9 PC9kaXY+PGI+JHtlc2MoYi5uYW1lKX08L2I+PHNwYW4+JHtmbXREKGIuYXQpfTwvc3Bhbj48L2Rpdj5gKS5qb2luKCcnKXx8Jzxw IGNsYXNzPSJzbWFsbCBtdXRlZCI+Tm8gYmFkZ2VzIHlldCDigJQga2VlcCBnb2luZyE8L3A+J308L2Rpdj48L2Rpdj48L2Rpdj4K ICA8ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5Db250cmlidXRpb25zPC9oMz48L2Rpdj48ZGl2IGNs YXNzPSJjYXJkLWIiPiR7Y2hhcnRCb3goJ3BjJywyNDApfTwvZGl2PjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWQgZzMg bXQiPjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPlNhZmV0eSBqb3VybmV5PC9oMz48L2Rpdj48ZGl2 IHN0eWxlPSJtYXgtaGVpZ2h0OjM4MHB4O292ZXJmbG93OmF1dG8iPiR7ZC5qb3VybmV5Lm1hcChqPT5gPGRpdiBjbGFzcz0ibGlz dC1pIiBzdHlsZT0iY3Vyc29yOmRlZmF1bHQiPjxzcGFuIGNsYXNzPSJjaGlwICR7ai5wb2ludHM8MD8nYy1yZWQnOidjLXllbGxv dyd9Ij4ke2oucG9pbnRzPjA/JysnOicnfSR7ai5wb2ludHN9PC9zcGFuPjxkaXYgY2xhc3M9Imdyb3cgc21hbGwiPjxiPiR7ZXNj KEFDVFtqLmFjdGl2aXR5XXx8ai5hY3Rpdml0eSl9PC9iPiR7ai5ub3RlP2A8ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj4ke2VzYyhq Lm5vdGUpfTwvZGl2PmA6Jyd9PC9kaXY+PHNwYW4gY2xhc3M9InRpbnkgbXV0ZWQiPiR7YWdvKGouYXQpfTwvc3Bhbj48L2Rpdj5g KS5qb2luKCcnKX08L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5SZWNvZ25p dGlvbjwvaDM+PC9kaXY+JHtkLnJlY29nbml0aW9uLm1hcChyPT5gPGRpdiBjbGFzcz0ibGlzdC1pIiBzdHlsZT0iY3Vyc29yOmRl ZmF1bHQiPiR7aWMoJ2F3YXJkJyl9PGRpdiBjbGFzcz0iZ3JvdyBzbWFsbCI+JHtlc2Moci5ub3RlKX08ZGl2IGNsYXNzPSJ0aW55 IG11dGVkIj4ke2ZtdEQoci5hdCl9IMK3ICske3IucG9pbnRzfSBwdHM8L2Rpdj48L2Rpdj48L2Rpdj5gKS5qb2luKCcnKXx8ZW1w dHkoJ05vIHJlY29nbml0aW9uIHlldCcsJycsJ2F3YXJkJyl9PC9kaXY+CiAgPGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0i Y2FyZC1oIj48aDM+VHJhaW5pbmc8L2gzPjwvZGl2PiR7ZC50cmFpbmluZy5tYXAodD0+YDxkaXYgY2xhc3M9Imxpc3QtaSIgc3R5 bGU9ImN1cnNvcjpkZWZhdWx0Ij4ke2ljKCdncmFkdWF0aW9uLWNhcCcpfTxkaXYgY2xhc3M9Imdyb3cgc21hbGwiPjxiPiR7ZXNj KHQuY291cnNlKX08L2I+PGRpdiBjbGFzcz0idGlueSBtdXRlZCI+JHt0LnNjb3JlfSUgwrcgJHt0LmV4cGlyZXM/J2V4cGlyZXMg JytmbXREKHQuZXhwaXJlcyk6J25vIGV4cGlyeSd9PC9kaXY+PC9kaXY+JHtjaGlwKHQuZXhwaXJlcyYmdC5leHBpcmVzPHRvZGF5 KCk/J0V4cGlyZWQnOidWYWxpZCcpfTwvZGl2PmApLmpvaW4oJycpfHxlbXB0eSgnTm8gdHJhaW5pbmcgeWV0JywnJywnZ3JhZHVh dGlvbi1jYXAnKX08L2Rpdj48L2Rpdj5gKTsKICBjb25zdCBieT1PYmplY3QuZW50cmllcyhkLmJ5QWN0aXZpdHkpLmZpbHRlcihl PT5lWzBdIT09J1JFVkVSU0FMJykuc29ydCgoYSxiKT0+YlsxXS1hWzFdKTsgY2hhcnQoJ3BjJywnZG91Z2hudXQnLGJ5Lm1hcChl PT5BQ1RbZVswXV18fGVbMF0pLFt7ZGF0YTpieS5tYXAoZT0+ZVsxXSl9XSx7b3B0aW9uczp7cGx1Z2luczp7bGVnZW5kOntwb3Np dGlvbjoncmlnaHQnfX19fSk7IH07Cgo7CgovKiAtLS0tLS0tLS0tIEV4ZWN1dGl2ZSBkYXNoYm9hcmQgJiBhbmFseXRpY3MgLS0t LS0tLS0tLSAqLwp2YXIgUkFOR0VTPVtbJzMwJywnMzAgZGF5cyddLFsnNycsJzcgZGF5cyddLFsnMScsJ1RvZGF5J10sWyc5MCcs J1F1YXJ0ZXInXSxbJzM2NScsJ1llYXInXSxbJ2FsbCcsJ0FsbCB0aW1lJ10sWydjdXN0b20nLCdDdXN0b20nXV07CmZ1bmN0aW9u IHJhbmdlQmFyKCl7IGNvbnN0IGE9U0cuYW58fHt9OyByZXR1cm4gYDxkaXYgY2xhc3M9ImNhcmQgcCBtYiByb3cgdyIgc3R5bGU9 ImdhcDo4cHgiPjxkaXYgY2xhc3M9InNlZyI+JHtSQU5HRVMubWFwKHI9PmA8YnV0dG9uIGNsYXNzPSIkeyhhLnJhbmdlfHwnMzY1 Jyk9PT1yWzBdPydvbic6Jyd9IiBvbmNsaWNrPSJzZXRSYW5nZSgnJHtyWzBdfScpIj4ke3JbMV19PC9idXR0b24+YCkuam9pbign Jyl9PC9kaXY+JHthLnJhbmdlPT09J2N1c3RvbSc/YDxpbnB1dCB0eXBlPSJkYXRlIiBjbGFzcz0iaW5wIiBzdHlsZT0id2lkdGg6 YXV0byIgdmFsdWU9IiR7ZXNjKGEuZnJvbXx8JycpfSIgb25jaGFuZ2U9IlNHLmFuLmZyb209dGhpcy52YWx1ZTtyZW5kZXIoKSI+ PGlucHV0IHR5cGU9ImRhdGUiIGNsYXNzPSJpbnAiIHN0eWxlPSJ3aWR0aDphdXRvIiB2YWx1ZT0iJHtlc2MoYS50b3x8JycpfSIg b25jaGFuZ2U9IlNHLmFuLnRvPXRoaXMudmFsdWU7cmVuZGVyKCkiPmA6Jyd9PHNlbGVjdCBjbGFzcz0iaW5wIiBzdHlsZT0id2lk dGg6YXV0byIgb25jaGFuZ2U9IlNHLmFuLnNpdGVJZD10aGlzLnZhbHVlO1NHLmFuLmRlcHRJZD0nJztyZW5kZXIoKSI+JHtzZWxT aXRlcyhhLnNpdGVJZCwnQWxsIHNpdGVzJyl9PC9zZWxlY3Q+PHNlbGVjdCBjbGFzcz0iaW5wIiBzdHlsZT0id2lkdGg6YXV0byIg b25jaGFuZ2U9IlNHLmFuLmRlcHRJZD10aGlzLnZhbHVlO3JlbmRlcigpIj4ke3NlbERlcHRzKGEuZGVwdElkLGEuc2l0ZUlkLCdB bGwgZGVwYXJ0bWVudHMnKX08L3NlbGVjdD48c3BhbiBjbGFzcz0iZ3JvdyI+PC9zcGFuPiR7YWlPbignZXhlY0JyaWVmaW5nJyk/ YDxidXR0b24gY2xhc3M9ImJ0biBzbSBhaSIgb25jbGljaz0iYWlCcmllZmluZygpIj4ke2ljKCdzcGFya2xlcycsJ3NtJyl9IEFJ IGJyaWVmaW5nPC9idXR0b24+YDonJ308YnV0dG9uIGNsYXNzPSJidG4gc20iIG9uY2xpY2s9InByaW50RXhlYygpIj4ke2ljKCdw cmludGVyJywnc20nKX0gRXhlY3V0aXZlIHJlcG9ydDwvYnV0dG9uPjwvZGl2PmA7IH0KZnVuY3Rpb24gc2V0UmFuZ2Uocil7IFNH LmFuPVNHLmFufHx7fTsgU0cuYW4ucmFuZ2U9cjsgaWYociE9PSdjdXN0b20nKXsgU0cuYW4uZnJvbT1yPT09J2FsbCc/Jyc6YWRk RCgtKE51bWJlcihyKS0xKSk7IFNHLmFuLnRvPScnOyB9IHJlbmRlcigpOyB9CmFzeW5jIGZ1bmN0aW9uIGFuYWx5dGljc0RhdGEo KXsgU0cuYW49U0cuYW58fHtyYW5nZTonMzY1Jyxmcm9tOmFkZEQoLTM2NCl9OyByZXR1cm4gYXdhaXQgbG9hZCgnZ2V0QW5hbHl0 aWNzJyx7ZnJvbTpTRy5hbi5mcm9tLHRvOlNHLmFuLnRvLHNpdGVJZDpTRy5hbi5zaXRlSWQsZGVwdElkOlNHLmFuLmRlcHRJZH0p OyB9CmZ1bmN0aW9uIHNwaUNhcmQoc3BpKXsgcmV0dXJuIGA8ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxo Mz4ke2ljKCdnYXVnZScsJ3NtJyl9IFNhZmV0eSBQZXJmb3JtYW5jZSBJbmRleDwvaDM+JHtjYW4oJ2FkbWluLmNvbmZpZycpP2A8 YnV0dG9uIGNsYXNzPSJidG4gc20gZ2hvc3QiIG9uY2xpY2s9ImdvKCdhZG1pbi9jb25maWcnKSI+Q29uZmlndXJlIHdlaWdodHM8 L2J1dHRvbj5gOicnfTwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiByb3cgdyIgc3R5bGU9ImdhcDoyNHB4O2FsaWduLWl0ZW1zOmZs ZXgtc3RhcnQiPiR7cmluZyhzcGkub3ZlcmFsbCwxNTAsMTYsc3BpLm92ZXJhbGw+PTgwPyd2YXIoLS1ncmVlbiknOnNwaS5vdmVy YWxsPj02MD8nI0NBOEEwNCc6J3ZhcigtLXJlZCknKX08ZGl2IGNsYXNzPSJncm93IiBzdHlsZT0ibWluLXdpZHRoOjI2MHB4Ij4k e3NwaS5jb21wb25lbnRzLm1hcChjPT5gPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxMHB4Ij48ZGl2IGNsYXNzPSJyb3cgYmV0 d2VlbiBzbWFsbCI+PGI+JHtlc2MoYy5sYWJlbCl9PC9iPjxzcGFuPjxiPiR7Yy5zY29yZX08L2I+LzEwMCDCtyB3ZWlnaHQgJHtj LndlaWdodH08L3NwYW4+PC9kaXY+JHtiYXIoYy5zY29yZSxjLnNjb3JlPj04MD8nZyc6Yy5zY29yZT49NjA/J3knOidyJyl9PGRp diBjbGFzcz0idGlueSBtdXRlZCIgc3R5bGU9Im1hcmdpbi10b3A6M3B4Ij4ke2VzYyhjLmV4cGxhaW4pfTwvZGl2PjwvZGl2PmAp LmpvaW4oJycpfTxkaXYgY2xhc3M9ImRpc2NsYWltZXIiPiR7aWMoJ2NhbGN1bGF0b3InLCdzbScpfTxzcGFuPlNQSSA9IM6jKGNv bXBvbmVudCBzY29yZSDDlyB3ZWlnaHQpIMO3IM6jIHdlaWdodHMgKCR7c3BpLndlaWdodHNUb3RhbH0pLiBXZWlnaHRzIGFyZSBz ZXQgYnkgYWRtaW5pc3RyYXRvcnMg4oCUIHRoZXJlIGlzIG5vIGhhcmQtY29kZWQgdW5pdmVyc2FsIGZvcm11bGEuPC9zcGFuPjwv ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PmA7IH0KZnVuY3Rpb24gaGVhdEh0bWwobWF0cml4KXsgY29uc3Qgcm09U0cuY2ZnLnJpc2tN YXRyaXgsIGNudD17fTsgbWF0cml4LmZvckVhY2gobT0+eyBjb25zdCBrPW0uTCsnLScrbS5TOyBjbnRba109KGNudFtrXXx8MCkr MTsgfSk7IGxldCBoPSc8ZGl2IGNsYXNzPSJteCI+JzsgZm9yKGxldCBzPTU7cz49MTtzLS0peyBoKz1gPGRpdiBjbGFzcz0iYXgg dGlueSI+JHtlc2Mocm0uc2V2ZXJpdHlbcy0xXSl9PC9kaXY+YDsgZm9yKGxldCBsPTE7bDw9NTtsKyspeyBjb25zdCB2PWwqcywg bj1jbnRbbCsnLScrc118fDA7IGgrPWA8ZGl2IGNsYXNzPSJjZWxsIGx2LSR7YmFuZCh2KX0iIG9uY2xpY2s9IlNHLnJpc2tTZWw9 JyR7bH0tJHtzfSc7Z28oJ3Jpc2snKSIgdGl0bGU9IiR7bn0gb3BlbiBpdGVtKHMpLCBzY29yZSAke3Z9Ij4ke258fCcnfTxzbWFs bD4ke3Z9PC9zbWFsbD48L2Rpdj5gOyB9IH0gcmV0dXJuIGgrJzxkaXY+PC9kaXY+JytybS5saWtlbGlob29kLm1hcCh4PT5gPGRp diBjbGFzcz0iYXhiIHRpbnkiPiR7ZXNjKHgpfTwvZGl2PmApLmpvaW4oJycpKyc8L2Rpdj48ZGl2IGNsYXNzPSJyb3cgdyB0aW55 IG11dGVkIG10IiBzdHlsZT0ianVzdGlmeS1jb250ZW50OmNlbnRlciI+TGlrZWxpaG9vZCDihpIgIMK3ICDihpEgU2V2ZXJpdHk8 L2Rpdj4nOyB9CmFzeW5jIGZ1bmN0aW9uIHZFeGVjKCl7IGNvbnN0IGQ9YXdhaXQgYW5hbHl0aWNzRGF0YSgpOyBpZighZCkgcmV0 dXJuOyBjb25zdCBrPWQua3BpczsKICBtYWluKGAke3BhZ2VIKCdFeGVjdXRpdmUgU2FmZXR5IERhc2hib2FyZCcsJ0EgY2xlYXIg dmlldyBvZiBzYWZldHkgcGVyZm9ybWFuY2UgYWNyb3NzICcrKFNHLmFuLnNpdGVJZD9zaXRlTihTRy5hbi5zaXRlSWQpOid0aGUg b3JnYW5pemF0aW9uJykrJy4nLCBgPGJ1dHRvbiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJnbygnYW5hbHl0aWNzJykiPiR7aWMoJ2No YXJ0LWxpbmUnLCdzbScpfSBGdWxsIGFuYWx5dGljczwvYnV0dG9uPmApfSR7cmFuZ2VCYXIoKX0KICA8aDMgY2xhc3M9Im1iIj5X aGF0IGlzIGhhcHBlbmluZz88L2gzPjxkaXYgY2xhc3M9ImdyaWQgZzQiPiR7W3tsYWJlbDonVG90YWwgaW5jaWRlbnRzJyx2YWx1 ZTprLmluY2lkZW50cyxpbnNpZ2h0OmsubHRpKycgbG9zdC10aW1lIGluY2lkZW50cycsdG9uZTprLmx0aT8ncmVkJzonZ3JlZW4n LGljb246J3NpcmVuJyxsaW5rOidpbmNpZGVudHMnfSx7bGFiZWw6J05lYXIgbWlzc2VzJyx2YWx1ZTprLm5lYXJNaXNzLGluc2ln aHQ6J1JlcG9ydGVkIGxlYXJuaW5nIG9wcG9ydHVuaXRpZXMnLHRvbmU6J2JsdWUnLGljb246J3RyaWFuZ2xlLWFsZXJ0JyxsaW5r OiduZWFybWlzcyd9LHtsYWJlbDonU2FmZXR5IG9ic2VydmF0aW9ucycsdmFsdWU6ay5vYnNlcnZhdGlvbnMsaW5zaWdodDonSW4g c2VsZWN0ZWQgcGVyaW9kJyx0b25lOidibHVlJyxpY29uOidleWUnLGxpbms6J29ic2VydmF0aW9ucyd9LHtsYWJlbDonVHJhZmZp YyB2aW9sYXRpb25zJyx2YWx1ZTprLnRyYWZmaWMsaW5zaWdodDonQ2FyZHMgaXNzdWVkIGluIHBlcmlvZCcsdG9uZTprLnRyYWZm aWM/J29yYW5nZSc6J2dyZWVuJyxpY29uOidjYXItZnJvbnQnLGxpbms6J3RyYWZmaWMnfV0ubWFwKGtwaSkuam9pbignJyl9PC9k aXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMiBtdCI+PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+V2hl cmUgaXMgdGhlIHJpc2s/PC9oMz48YnV0dG9uIGNsYXNzPSJidG4gc20gZ2hvc3QiIG9uY2xpY2s9ImdvKCdyaXNrJykiPk9wZW4g cmlzayBtYXA8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkLWIgZ3JpZCBnMiI+PGRpdj4ke2hlYXRIdG1sKGQubWF0cml4 KX08L2Rpdj48ZGl2PjxkaXYgY2xhc3M9InRpbnkgYiBtdXRlZCBtYiI+SElHSC1SSVNLIExPQ0FUSU9OUzwvZGl2PiR7ZC5sb2Nh dGlvbnMubWFwKGw9PmA8ZGl2IGNsYXNzPSJyb3cgc21hbGwiIHN0eWxlPSJwYWRkaW5nOjZweCAwO2JvcmRlci1ib3R0b206MXB4 IHNvbGlkIHZhcigtLWxpbmUyKSI+JHtpYygnbWFwLXBpbicsJ3NtJyl9PHNwYW4gY2xhc3M9Imdyb3ciPiR7ZXNjKGwubGFiZWwp fTwvc3Bhbj48Yj4ke2wubn08L2I+PC9kaXY+YCkuam9pbignJyl8fCc8cCBjbGFzcz0ic21hbGwgbXV0ZWQiPk5vIGhpZ2gtcmlz ayBvcGVuIGhhemFyZHMuPC9wPid9PGRpdiBjbGFzcz0idGlueSBiIG11dGVkIG1iIG10MiI+VE9QIFJFQ1VSUklORyBIQVpBUkRT PC9kaXY+JHtkLmhhemFyZENhdHMuc2xpY2UoMCw1KS5tYXAobD0+YDxkaXYgY2xhc3M9InJvdyBzbWFsbCIgc3R5bGU9InBhZGRp bmc6NnB4IDA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tbGluZTIpIj48c3BhbiBjbGFzcz0iZ3JvdyI+JHtlc2MobC5s YWJlbCl9PC9zcGFuPjxiPiR7bC5ufTwvYj48L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj48L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNz PSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5XaGF0IHJlcXVpcmVzIGF0dGVudGlvbj88L2gzPjwvZGl2PjxkaXYgY2xh c3M9ImNhcmQtYiBncmlkIGcyIj4ke1t7bGFiZWw6J0NyaXRpY2FsIHJpc2tzJyx2YWx1ZTprLmNyaXRpY2FsLGluc2lnaHQ6J09w ZW4gY3JpdGljYWwgaGF6YXJkcycsdG9uZTprLmNyaXRpY2FsPydyZWQnOidncmVlbicsaWNvbjonc2lyZW4nLGxpbms6J2hhemFy ZHMnfSx7bGFiZWw6J09wZW4gaGF6YXJkcycsdmFsdWU6ay5vcGVuSGF6YXJkcyxpbnNpZ2h0OidBbGwgcmlzayBsZXZlbHMnLHRv bmU6J29yYW5nZScsaWNvbjonY29uc3RydWN0aW9uJyxsaW5rOidoYXphcmRzJ30se2xhYmVsOidPdmVyZHVlIGFjdGlvbnMnLHZh bHVlOmsub3ZlcmR1ZSxpbnNpZ2h0OidQYXN0IGR1ZSBkYXRlJyx0b25lOmsub3ZlcmR1ZT8ncmVkJzonZ3JlZW4nLGljb246J2Fs YXJtLWNsb2NrJyxsaW5rOidhY3Rpb25zJ30se2xhYmVsOidBdWRpdCBmaW5kaW5ncycsdmFsdWU6ay5hdWRpdEZpbmRpbmdzLGlu c2lnaHQ6J0ZhaWxlZCBhdWRpdCBpdGVtcycsdG9uZTonb3JhbmdlJyxpY29uOidmaWxlLXNlYXJjaCcsbGluazonYXVkaXRzJ31d Lm1hcChrcGkpLmpvaW4oJycpfTwvZGl2PjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWQgZzIgbXQiPjxkaXYgY2xhc3M9 ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPkFyZSBhY3Rpb25zIGJlaW5nIGNsb3NlZD88L2gzPjxzcGFuIGNsYXNzPSJz bWFsbCBtdXRlZCI+JSBvZiBhY3Rpb25zIGR1ZSBlYWNoIG1vbnRoIHRoYXQgYXJlIGNsb3NlZDwvc3Bhbj48L2Rpdj48ZGl2IGNs YXNzPSJjYXJkLWIiPiR7Y2hhcnRCb3goJ2VDYXBhJywyMzApfTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xh c3M9ImNhcmQtaCI+PGgzPklzIHNhZmV0eSBlbmdhZ2VtZW50IGltcHJvdmluZz88L2gzPjxzcGFuIGNsYXNzPSJzbWFsbCBtdXRl ZCI+JSBvZiBwZW9wbGUgYWN0aXZlIGVhY2ggbW9udGg8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iY2FyZC1iIj4ke2NoYXJ0Qm94 KCdlRW5nJywyMzApfTwvZGl2PjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWQgZzIgbXQiPiR7c3BpQ2FyZChkLnNwaSl9 PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+RGVwYXJ0bWVudCBwZXJmb3JtYW5jZTwvaDM+PC9kaXY+ PGRpdiBjbGFzcz0idHciPjx0YWJsZSBjbGFzcz0idGJsIj48dGhlYWQ+PHRyPjx0aD5EZXBhcnRtZW50PC90aD48dGg+U1BJPC90 aD48dGg+SW5jaWRlbnRzPC90aD48dGg+SGF6YXJkczwvdGg+PHRoPk92ZXJkdWU8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+JHtk LmRlcHRzLnNsaWNlKDAsMTApLm1hcChyPT5gPHRyIHN0eWxlPSJjdXJzb3I6ZGVmYXVsdCI+PHRkIGRhdGEtbD0iRGVwYXJ0bWVu dCI+PGI+JHtlc2Moci5uYW1lKX08L2I+PC90ZD48dGQgZGF0YS1sPSJTUEkiPjxzcGFuIGNsYXNzPSJjaGlwICR7ci5zcGk+PTgw PydjLWdyZWVuJzpyLnNwaT49NjA/J2MteWVsbG93JzonYy1yZWQnfSI+JHtyLnNwaX08L3NwYW4+PC90ZD48dGQgZGF0YS1sPSJJ bmNpZGVudHMiPiR7ci5pbmNpZGVudHN9PC90ZD48dGQgZGF0YS1sPSJIYXphcmRzIj4ke3IuaGF6YXJkc308L3RkPjx0ZCBkYXRh LWw9Ik92ZXJkdWUiPiR7ci5vdmVyZHVlfTwvdGQ+PC90cj5gKS5qb2luKCcnKX08L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+ PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMyBtdCI+JHtbe2xhYmVsOidUcmFpbmluZyBjb21wbGlhbmNlJyx2YWx1ZTprLnRy YWluaW5nLHN1ZmZpeDonJScsaW5zaWdodDonTWFuZGF0b3J5IGNlcnRpZmljYXRpb25zIHZhbGlkJyx0b25lOmsudHJhaW5pbmc+ PTkwPydncmVlbic6J29yYW5nZScsaWNvbjonZ3JhZHVhdGlvbi1jYXAnfSx7bGFiZWw6J0luc3BlY3Rpb24gY29tcGxpYW5jZScs dmFsdWU6ay5pbnNwZWN0aW9uLHN1ZmZpeDonJScsaW5zaWdodDonQXZlcmFnZSBpbnNwZWN0aW9uIHNjb3JlJyx0b25lOmsuaW5z cGVjdGlvbj49OTA/J2dyZWVuJzonb3JhbmdlJyxpY29uOidjbGlwYm9hcmQtY2hlY2snfSx7bGFiZWw6J1NhZmV0eSBQb2ludHMg ZWFybmVkJyx2YWx1ZTprLnBvaW50cyxpbnNpZ2h0OmsuZW5nYWdlbWVudCsnJSBlbmdhZ2VkIGluIGxhc3QgMzAgZGF5cycsdG9u ZTonZ3JlZW4nLGljb246J3NwYXJrbGVzJ31dLm1hcChrcGkpLmpvaW4oJycpfTwvZGl2PmApOwogIGNoYXJ0KCdlQ2FwYScsJ2xp bmUnLGQudHJlbmQubGFiZWxzLFt7bGFiZWw6J0Nsb3N1cmUgJScsZGF0YTpkLnRyZW5kLmNhcGEsY29sb3I6JyMxNTgwM0QnLGZp bGw6dHJ1ZX1dLHtvcHRpb25zOntzY2FsZXM6e3k6e21heDoxMDAsYmVnaW5BdFplcm86dHJ1ZX19fX0pOyBjaGFydCgnZUVuZycs J2xpbmUnLGQudHJlbmQubGFiZWxzLFt7bGFiZWw6J0VuZ2FnZW1lbnQgJScsZGF0YTpkLnRyZW5kLmVuZ2FnZW1lbnQsY29sb3I6 JyNGRkMyMEUnLGZpbGw6dHJ1ZX1dLHtvcHRpb25zOntzY2FsZXM6e3k6e21heDoxMDAsYmVnaW5BdFplcm86dHJ1ZX19fX0pOyB3 aW5kb3cuX2V4ZWM9ZDsgfQpWSUVXUy5hbmFseXRpY3MgPSBhc3luYyAoKSA9PiB7IGNvbnN0IGQ9YXdhaXQgYW5hbHl0aWNzRGF0 YSgpOyBpZighZCkgcmV0dXJuOyBjb25zdCBrPWQua3Bpczsgd2luZG93Ll9leGVjPWQ7CiAgbWFpbihgJHtwYWdlSCgnU2FmZXR5 IEFuYWx5dGljcycsJ0ludGVyYWN0aXZlIHRyZW5kcywgY29tcGFyaXNvbnMgYW5kIHRoZSBTYWZldHkgUGVyZm9ybWFuY2UgSW5k ZXguJyl9JHtyYW5nZUJhcigpfQogIDxkaXYgY2xhc3M9ImdyaWQgZzQiPiR7W3tsYWJlbDonSW5jaWRlbnRzJyx2YWx1ZTprLmlu Y2lkZW50cyxpbnNpZ2h0OmsubHRpKycgbG9zdCB0aW1lJyx0b25lOidyZWQnLGljb246J3NpcmVuJ30se2xhYmVsOidOZWFyIG1p c3NlcycsdmFsdWU6ay5uZWFyTWlzcyxpbnNpZ2h0OidSZXBvcnRlZCcsdG9uZTonb3JhbmdlJyxpY29uOid0cmlhbmdsZS1hbGVy dCd9LHtsYWJlbDonT3BlbiBoYXphcmRzJyx2YWx1ZTprLm9wZW5IYXphcmRzLGluc2lnaHQ6ay5jcml0aWNhbCsnIGNyaXRpY2Fs Jyx0b25lOidvcmFuZ2UnLGljb246J2NvbnN0cnVjdGlvbid9LHtsYWJlbDonT3ZlcmR1ZSBhY3Rpb25zJyx2YWx1ZTprLm92ZXJk dWUsaW5zaWdodDonUGFzdCBkdWUnLHRvbmU6ay5vdmVyZHVlPydyZWQnOidncmVlbicsaWNvbjonYWxhcm0tY2xvY2snfSx7bGFi ZWw6J1RyYWluaW5nIGNvbXBsaWFuY2UnLHZhbHVlOmsudHJhaW5pbmcsc3VmZml4OiclJyxpbnNpZ2h0OidNYW5kYXRvcnknLHRv bmU6J2dyZWVuJyxpY29uOidncmFkdWF0aW9uLWNhcCd9LHtsYWJlbDonSW5zcGVjdGlvbiBzY29yZScsdmFsdWU6ay5pbnNwZWN0 aW9uLHN1ZmZpeDonJScsaW5zaWdodDonQXZlcmFnZScsdG9uZTonYmx1ZScsaWNvbjonY2xpcGJvYXJkLWNoZWNrJ30se2xhYmVs OidUcmFmZmljIHZpb2xhdGlvbnMnLHZhbHVlOmsudHJhZmZpYyxpbnNpZ2h0OidJbiBwZXJpb2QnLHRvbmU6J29yYW5nZScsaWNv bjonY2FyLWZyb250J30se2xhYmVsOidFbmdhZ2VtZW50Jyx2YWx1ZTprLmVuZ2FnZW1lbnQsc3VmZml4OiclJyxpbnNpZ2h0OidB Y3RpdmUgbGFzdCAzMCBkYXlzJyx0b25lOidncmVlbicsaWNvbjonaGVhcnQtcHVsc2UnfV0ubWFwKGtwaSkuam9pbignJyl9PC9k aXY+CiAgPGRpdiBjbGFzcz0iY2FyZCBtdCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+VHJlbmRzIOKAlCBsYXN0IDEyIG1vbnRo czwvaDM+PC9kaXY+PGRpdiBjbGFzcz0iY2FyZC1iIj4ke2NoYXJ0Qm94KCdhVHJlbmQnLDMwMCl9PC9kaXY+PC9kaXY+CiAgPGRp diBjbGFzcz0iZ3JpZCBnMyBtdCI+PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+T3BlbiBoYXphcmRz IGJ5IHJpc2s8L2gzPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiI+JHtjaGFydEJveCgnYVJpc2snLDIzMCl9PC9kaXY+PC9kaXY+ PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+Q2FyZCBkaXN0cmlidXRpb248L2gzPjwvZGl2PjxkaXYg Y2xhc3M9ImNhcmQtYiI+JHtjaGFydEJveCgnYUNhcmRzJywyMzApfTwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYg Y2xhc3M9ImNhcmQtaCI+PGgzPkluY2lkZW50IHR5cGVzPC9oMz48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkLWIiPiR7Y2hhcnRCb3go J2FJbmMnLDIzMCl9PC9kaXY+PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMiBtdCI+JHtzcGlDYXJkKGQuc3BpKX08 ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5TaXRlIGNvbXBhcmlzb248L2gzPjwvZGl2PjxkaXYgY2xh c3M9ImNhcmQtYiI+JHtjaGFydEJveCgnYVNpdGUnLDMwMCl9PC9kaXY+PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iY2FyZCBt dCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+RGVwYXJ0bWVudCBjb21wYXJpc29uPC9oMz48L2Rpdj4ke1NHVC5odG1sKCdkZXAn LFt7azonbmFtZScsbGFiZWw6J0RlcGFydG1lbnQnLHJlbmRlcjpyPT5gPGI+JHtlc2Moci5uYW1lKX08L2I+YH0se2s6J3NwaScs bGFiZWw6J1NQSScscmVuZGVyOnI9PmA8c3BhbiBjbGFzcz0iY2hpcCAke3Iuc3BpPj04MD8nYy1ncmVlbic6ci5zcGk+PTYwPydj LXllbGxvdyc6J2MtcmVkJ30iPiR7ci5zcGl9PC9zcGFuPmB9LHtrOidpbmNpZGVudHMnLGxhYmVsOidJbmNpZGVudHMnfSx7azon aGF6YXJkcycsbGFiZWw6J0hhemFyZHMnfSx7azonb2JzZXJ2YXRpb25zJyxsYWJlbDonT2JzZXJ2YXRpb25zJ30se2s6J292ZXJk dWUnLGxhYmVsOidPdmVyZHVlIGFjdGlvbnMnfSx7azoncGVvcGxlJyxsYWJlbDonUGVvcGxlJ31dLGQuZGVwdHMse25hbWU6J2Rl cGFydG1lbnQtc2FmZXR5LXJlcG9ydCcsc29ydDonc3BpJ30pfTwvZGl2PmApOyBTR1QubW91bnQoKTsKICBjaGFydCgnYVRyZW5k JywnbGluZScsZC50cmVuZC5sYWJlbHMsW3tsYWJlbDonSW5jaWRlbnRzJyxkYXRhOmQudHJlbmQuaW5jaWRlbnRzLGNvbG9yOicj QzgxRTFFJ30se2xhYmVsOidOZWFyIG1pc3NlcycsZGF0YTpkLnRyZW5kLm5lYXJNaXNzLGNvbG9yOicjQ0E4QTA0J30se2xhYmVs OidIYXphcmRzJyxkYXRhOmQudHJlbmQuaGF6YXJkcyxjb2xvcjonI0VBNTgwQyd9LHtsYWJlbDonT2JzZXJ2YXRpb25zJyxkYXRh OmQudHJlbmQub2JzZXJ2YXRpb25zLGNvbG9yOicjMUQ0RUQ4J30se2xhYmVsOidUcmFmZmljJyxkYXRhOmQudHJlbmQudHJhZmZp Yyxjb2xvcjonIzExMTgyNyd9XSk7CiAgY2hhcnQoJ2FSaXNrJywnZG91Z2hudXQnLFsnTG93JywnTWVkaXVtJywnSGlnaCcsJ0Ny aXRpY2FsJ10sW3tkYXRhOmQucmlza0xldmVscyxiYWNrZ3JvdW5kQ29sb3I6WycjNEFERTgwJywnI0ZBQ0MxNScsJyNGQjkyM0Mn LCcjRUY0NDQ0J119XSk7CiAgY2hhcnQoJ2FDYXJkcycsJ2RvdWdobnV0JyxkLmNhcmRzLm1hcChjPT5jLmxhYmVsKSxbe2RhdGE6 ZC5jYXJkcy5tYXAoYz0+Yy5uKSxiYWNrZ3JvdW5kQ29sb3I6ZC5jYXJkcy5tYXAoYz0+KHtZRUxMT1c6JyNGRkMyMEUnLFJFRDon I0M4MUUxRScsQkxBQ0s6JyMxMTE4MjcnfVtjLmxhYmVsXSkpfV0pOwogIGNoYXJ0KCdhSW5jJywnYmFyJyxkLmluY2lkZW50VHlw ZXMubWFwKHg9PngubGFiZWwpLFt7bGFiZWw6J0NvdW50JyxkYXRhOmQuaW5jaWRlbnRUeXBlcy5tYXAoeD0+eC5uKX1dLHtob3Jp em9udGFsOnRydWV9KTsKICBjaGFydCgnYVNpdGUnLCdiYXInLGQuc2l0ZXMubWFwKHM9PnMubmFtZSksW3tsYWJlbDonU1BJJyxk YXRhOmQuc2l0ZXMubWFwKHM9PnMuc3BpKSxjb2xvcjonIzE1ODAzRCd9LHtsYWJlbDonSW5jaWRlbnRzJyxkYXRhOmQuc2l0ZXMu bWFwKHM9PnMuaW5jaWRlbnRzKSxjb2xvcjonI0M4MUUxRSd9LHtsYWJlbDonSGF6YXJkcycsZGF0YTpkLnNpdGVzLm1hcChzPT5z LmhhemFyZHMpLGNvbG9yOicjRUE1ODBDJ31dKTsgfTsKZnVuY3Rpb24gcHJpbnRFeGVjKCl7IGNvbnN0IGQ9d2luZG93Ll9leGVj OyBpZighZCkgcmV0dXJuOyBjb25zdCBrPWQua3BpczsgcHJpbnRSZXBvcnQoJ0V4ZWN1dGl2ZSBTYWZldHkgUmVwb3J0JywgYDxw IGNsYXNzPSJtdXRlZCI+U2NvcGU6ICR7ZXNjKFNHLmFuLnNpdGVJZD9zaXRlTihTRy5hbi5zaXRlSWQpOidBbGwgc2l0ZXMnKX0g wrcgUGVyaW9kIGZyb20gJHtlc2MoU0cuYW4uZnJvbXx8J3N0YXJ0Jyl9IHRvICR7ZXNjKFNHLmFuLnRvfHwndG9kYXknKX08L3A+ PGgyPktleSBpbmRpY2F0b3JzPC9oMj4ke3JlcFRhYmxlKFtbJ0luY2lkZW50cycsay5pbmNpZGVudHNdLFsnTG9zdCB0aW1lIGlu Y2lkZW50cycsay5sdGldLFsnTmVhciBtaXNzZXMnLGsubmVhck1pc3NdLFsnT3BlbiBoYXphcmRzJyxrLm9wZW5IYXphcmRzXSxb J0NyaXRpY2FsIHJpc2tzJyxrLmNyaXRpY2FsXSxbJ092ZXJkdWUgYWN0aW9ucycsay5vdmVyZHVlXSxbJ1RyYWluaW5nIGNvbXBs aWFuY2UnLGsudHJhaW5pbmcrJyUnXSxbJ0luc3BlY3Rpb24gY29tcGxpYW5jZScsay5pbnNwZWN0aW9uKyclJ10sWydBdWRpdCBm aW5kaW5ncycsay5hdWRpdEZpbmRpbmdzXSxbJ1RyYWZmaWMgdmlvbGF0aW9ucycsay50cmFmZmljXSxbJ09ic2VydmF0aW9ucycs ay5vYnNlcnZhdGlvbnNdLFsnRW5nYWdlbWVudCAoMzBkKScsay5lbmdhZ2VtZW50KyclJ11dKX08aDI+U2FmZXR5IFBlcmZvcm1h bmNlIEluZGV4OiAke2Quc3BpLm92ZXJhbGx9LzEwMDwvaDI+PHRhYmxlPjx0cj48dGg+Q29tcG9uZW50PC90aD48dGg+U2NvcmU8 L3RoPjx0aD5XZWlnaHQ8L3RoPjx0aD5Ib3cgY2FsY3VsYXRlZDwvdGg+PC90cj4ke2Quc3BpLmNvbXBvbmVudHMubWFwKGM9PmA8 dHI+PHRkPiR7ZXNjKGMubGFiZWwpfTwvdGQ+PHRkPiR7Yy5zY29yZX08L3RkPjx0ZD4ke2Mud2VpZ2h0fTwvdGQ+PHRkPiR7ZXNj KGMuZXhwbGFpbil9PC90ZD48L3RyPmApLmpvaW4oJycpfTwvdGFibGU+PGgyPlNpdGVzPC9oMj48dGFibGU+PHRyPjx0aD5TaXRl PC90aD48dGg+U1BJPC90aD48dGg+SW5jaWRlbnRzPC90aD48dGg+SGF6YXJkczwvdGg+PHRoPk92ZXJkdWU8L3RoPjx0aD5UcmFm ZmljPC90aD48L3RyPiR7ZC5zaXRlcy5tYXAocz0+YDx0cj48dGQ+JHtlc2Mocy5uYW1lKX08L3RkPjx0ZD4ke3Muc3BpfTwvdGQ+ PHRkPiR7cy5pbmNpZGVudHN9PC90ZD48dGQ+JHtzLmhhemFyZHN9PC90ZD48dGQ+JHtzLm92ZXJkdWV9PC90ZD48dGQ+JHtzLnRy YWZmaWN9PC90ZD48L3RyPmApLmpvaW4oJycpfTwvdGFibGU+PGgyPkRlcGFydG1lbnRzPC9oMj48dGFibGU+PHRyPjx0aD5EZXBh cnRtZW50PC90aD48dGg+U1BJPC90aD48dGg+SW5jaWRlbnRzPC90aD48dGg+SGF6YXJkczwvdGg+PHRoPk92ZXJkdWU8L3RoPjwv dHI+JHtkLmRlcHRzLm1hcChzPT5gPHRyPjx0ZD4ke2VzYyhzLm5hbWUpfTwvdGQ+PHRkPiR7cy5zcGl9PC90ZD48dGQ+JHtzLmlu Y2lkZW50c308L3RkPjx0ZD4ke3MuaGF6YXJkc308L3RkPjx0ZD4ke3Mub3ZlcmR1ZX08L3RkPjwvdHI+YCkuam9pbignJyl9PC90 YWJsZT5gKTsgfQoKLyogLS0tLS0tLS0tLSBSaXNrIC0tLS0tLS0tLS0gKi8KVklFV1MucmlzayA9IGFzeW5jICgpID0+IHsgU0cu cmY9U0cucmZ8fHt9OyBjb25zdCBkPWF3YWl0IGxvYWQoJ2dldFJpc2snLHtzaXRlSWQ6U0cucmYuc2l0ZUlkLGRlcHRJZDpTRy5y Zi5kZXB0SWQsYWxsOlNHLnJmLmFsbH0pOyBpZighZCkgcmV0dXJuOyBjb25zdCBybT1TRy5jZmcucmlza01hdHJpeCwgcmY9U0cu cmY7CiAgbGV0IGl0ZW1zPWQuaXRlbXMuZmlsdGVyKGk9PighcmYua2luZHx8aS5raW5kPT09cmYua2luZHx8KHJmLmtpbmQ9PT0n SW5jaWRlbnQnJiZpLmtpbmQhPT0nSGF6YXJkJykpJiYoIXJmLmNhdGVnb3J5fHxpLmNhdGVnb3J5PT09cmYuY2F0ZWdvcnkpJiYo IXJmLmZyb218fFN0cmluZyhpLmF0KS5zbGljZSgwLDEwKT49cmYuZnJvbSkmJighcmYuc3RhdHVzfHxpLnN0YXR1cz09PXJmLnN0 YXR1cykpOwogIGNvbnN0IGNudD17fTsgaXRlbXMuZm9yRWFjaChpPT57IGNvbnN0IGs9aS5MKyctJytpLlM7IChjbnRba109Y250 W2tdfHxbXSkucHVzaChpKTsgfSk7IGNvbnN0IHNlbD1TRy5yaXNrU2VsLCBzZWxJdGVtcz1zZWw/KGNudFtzZWxdfHxbXSk6aXRl bXMuc2xpY2UoKS5zb3J0KChhLGIpPT5iLkwqYi5TLWEuTCphLlMpLnNsaWNlKDAsMTIpOwogIGxldCBoPSc8ZGl2IGNsYXNzPSJt eCI+JzsgZm9yKGxldCBzPTU7cz49MTtzLS0peyBoKz1gPGRpdiBjbGFzcz0iYXggc21hbGwiPiR7c30gwrcgJHtlc2Mocm0uc2V2 ZXJpdHlbcy0xXSl9PC9kaXY+YDsgZm9yKGxldCBsPTE7bDw9NTtsKyspeyBjb25zdCB2PWwqcywgbj0oY250W2wrJy0nK3NdfHxb XSkubGVuZ3RoOyBoKz1gPGJ1dHRvbiBjbGFzcz0iY2VsbCBsdi0ke2JhbmQodil9ICR7c2VsPT09bCsnLScrcz8nc2VsJzonJ30i IG9uY2xpY2s9IlNHLnJpc2tTZWw9U0cucmlza1NlbD09PScke2x9LSR7c30nPycnOicke2x9LSR7c30nO3JlbmRlcigpIiBhcmlh LWxhYmVsPSJMaWtlbGlob29kICR7bH0sIHNldmVyaXR5ICR7c306ICR7bn0gaXRlbXMiPiR7bnx8Jyd9PHNtYWxsPiR7dn08L3Nt YWxsPjwvYnV0dG9uPmA7IH0gfSBoKz0nPGRpdj48L2Rpdj4nK3JtLmxpa2VsaWhvb2QubWFwKCh4LGkpPT5gPGRpdiBjbGFzcz0i YXhiIHNtYWxsIj4ke2krMX0gwrcgJHtlc2MoeCl9PC9kaXY+YCkuam9pbignJykrJzwvZGl2Pic7CiAgbWFpbihgJHtwYWdlSCgn UmlzaycsJ0ludGVyYWN0aXZlIHJpc2sgaGVhdG1hcCBhbmQgbWFwIG9mIG9wZW4gaGF6YXJkcyBhbmQgaW5jaWRlbnRzLicpfTxk aXYgY2xhc3M9ImNhcmQgcCBtYiI+PGRpdiBjbGFzcz0icm93IHciIHN0eWxlPSJnYXA6OHB4Ij48c2VsZWN0IGNsYXNzPSJpbnAi IHN0eWxlPSJ3aWR0aDphdXRvIiBvbmNoYW5nZT0iU0cucmYuc2l0ZUlkPXRoaXMudmFsdWU7U0cucmlza1NlbD0nJztyZW5kZXIo KSI+JHtzZWxTaXRlcyhyZi5zaXRlSWQsJ0FsbCBzaXRlcycpfTwvc2VsZWN0PjxzZWxlY3QgY2xhc3M9ImlucCIgc3R5bGU9Indp ZHRoOmF1dG8iIG9uY2hhbmdlPSJTRy5yZi5kZXB0SWQ9dGhpcy52YWx1ZTtyZW5kZXIoKSI+JHtzZWxEZXB0cyhyZi5kZXB0SWQs cmYuc2l0ZUlkLCdBbGwgZGVwYXJ0bWVudHMnKX08L3NlbGVjdD48c2VsZWN0IGNsYXNzPSJpbnAiIHN0eWxlPSJ3aWR0aDphdXRv IiBvbmNoYW5nZT0iU0cucmYua2luZD10aGlzLnZhbHVlO3JlbmRlcigpIj4ke29wdCgnJywnSGF6YXJkcyAmIGluY2lkZW50cycp fSR7b3B0KCdIYXphcmQnLCdIYXphcmRzIG9ubHknLHJmLmtpbmQpfSR7b3B0KCdJbmNpZGVudCcsJ0luY2lkZW50cyAmIG5lYXIg bWlzc2VzJyxyZi5raW5kKX08L3NlbGVjdD48c2VsZWN0IGNsYXNzPSJpbnAiIHN0eWxlPSJ3aWR0aDphdXRvIiBvbmNoYW5nZT0i U0cucmYuY2F0ZWdvcnk9dGhpcy52YWx1ZTtyZW5kZXIoKSI+JHtvcHQoJycsJ0FsbCBjYXRlZ29yaWVzJyl9JHtbLi4ubmV3IFNl dChkLml0ZW1zLm1hcChpPT5pLmNhdGVnb3J5KSldLnNvcnQoKS5tYXAoYz0+b3B0KGMsYyxyZi5jYXRlZ29yeSkpLmpvaW4oJycp fTwvc2VsZWN0PjxzZWxlY3QgY2xhc3M9ImlucCIgc3R5bGU9IndpZHRoOmF1dG8iIG9uY2hhbmdlPSJTRy5yZi5zdGF0dXM9dGhp cy52YWx1ZTtyZW5kZXIoKSI+JHtvcHQoJycsJ0FsbCBzdGF0dXNlcycpfSR7Wy4uLm5ldyBTZXQoZC5pdGVtcy5tYXAoaT0+aS5z dGF0dXMpKV0uc29ydCgpLm1hcChjPT5vcHQoYyxjLHJmLnN0YXR1cykpLmpvaW4oJycpfTwvc2VsZWN0PjxpbnB1dCB0eXBlPSJk YXRlIiBjbGFzcz0iaW5wIiBzdHlsZT0id2lkdGg6YXV0byIgdmFsdWU9IiR7ZXNjKHJmLmZyb218fCcnKX0iIG9uY2hhbmdlPSJT Ry5yZi5mcm9tPXRoaXMudmFsdWU7cmVuZGVyKCkiIGFyaWEtbGFiZWw9IlNpbmNlIj48bGFiZWwgY2xhc3M9InJvdyBzbWFsbCI+ PGlucHV0IHR5cGU9ImNoZWNrYm94IiAke3JmLmFsbD8nY2hlY2tlZCc6Jyd9IG9uY2hhbmdlPSJTRy5yZi5hbGw9dGhpcy5jaGVj a2VkO3JlbmRlcigpIj4gSW5jbHVkZSBjbG9zZWQ8L2xhYmVsPjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9ImdyaWQgZzIiPjxk aXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPlJpc2sgaGVhdG1hcDwvaDM+PHNwYW4gY2xhc3M9InNtYWxs IG11dGVkIj4ke2l0ZW1zLmxlbmd0aH0gaXRlbXMgwrcgY2xpY2sgYSBjZWxsPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQt YiI+JHtofTxkaXYgY2xhc3M9InJvdyB3IG10IHNtYWxsIiBzdHlsZT0iZ2FwOjEycHg7anVzdGlmeS1jb250ZW50OmNlbnRlciI+ JHtbJ0xPVycsJ01FRElVTScsJ0hJR0gnLCdDUklUSUNBTCddLm1hcChsPT5gPHNwYW4gY2xhc3M9InJvdyIgc3R5bGU9ImdhcDo1 cHgiPjxzcGFuIGNsYXNzPSJsdi0ke2x9IiBzdHlsZT0id2lkdGg6MTRweDtoZWlnaHQ6MTRweDtib3JkZXItcmFkaXVzOjRweDtk aXNwbGF5OmlubGluZS1ibG9jayI+PC9zcGFuPiR7bH08L3NwYW4+YCkuam9pbignJyl9PC9kaXY+PC9kaXY+PC9kaXY+CiAgPGRp diBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+JHtzZWw/J1NlbGVjdGVkIGNlbGwgKCcrc2VsSXRlbXMubGVu Z3RoKycpJzonSGlnaGVzdCByaXNrcyd9PC9oMz4ke3NlbD9gPGJ1dHRvbiBjbGFzcz0iYnRuIHNtIGdob3N0IiBvbmNsaWNrPSJT Ry5yaXNrU2VsPScnO3JlbmRlcigpIj5DbGVhcjwvYnV0dG9uPmA6Jyd9PC9kaXY+PGRpdiBzdHlsZT0ibWF4LWhlaWdodDo0NDBw eDtvdmVyZmxvdzphdXRvIj4ke3NlbEl0ZW1zLm1hcChpPT5gPGRpdiBjbGFzcz0ibGlzdC1pIiBvbmNsaWNrPSJnbygnJHtpLmxp bmt9JykiPiR7cmlza0NoaXAoaS5sZXZlbCl9PGRpdiBjbGFzcz0iZ3JvdyBzbWFsbCI+PGI+JHtlc2MoaS50aXRsZSl9PC9iPjxk aXYgY2xhc3M9InRpbnkgbXV0ZWQiPjxzcGFuIGNsYXNzPSJtb25vIj4ke2VzYyhpLmlkKX08L3NwYW4+IMK3ICR7ZXNjKGkua2lu ZCl9IMK3ICR7ZXNjKHNpdGVOKGkuc2l0ZUlkKSl9IMK3IEwke2kuTH3Dl1Mke2kuU308L2Rpdj48L2Rpdj4ke2NoaXAoaS5zdGF0 dXMpfTwvZGl2PmApLmpvaW4oJycpfHxlbXB0eSgnTm8gb3BlbiBoYXphcmRzIGhlcmUnLCdHcmVhdCB3b3JrLiBLZWVwIHdhdGNo aW5nIGZvciByaXNrcy4nKX08L2Rpdj48L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJjYXJkIG10Ij48ZGl2IGNsYXNzPSJjYXJk LWgiPjxoMz4ke2ljKCdtYXAnLCdzbScpfSBNYXA8L2gzPjxzcGFuIGNsYXNzPSJzbWFsbCBtdXRlZCI+Q2x1c3RlcmVkIG1hcmtl cnMgwrcgY2xpY2sgdG8gb3BlbiDCtyBHUFMgdXNlZCB3aGVyZSBjYXB0dXJlZDwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJjYXJk LWIiPjxkaXYgaWQ9Im1hcCI+PC9kaXY+PC9kaXY+PC9kaXY+YCk7CiAgc2V0VGltZW91dCgoKT0+eyBpZighd2luZG93Lkx8fCFx cygnI21hcCcpKSByZXR1cm47IGNvbnN0IG1hcD1MLm1hcCgnbWFwJyx7c2Nyb2xsV2hlZWxab29tOmZhbHNlfSk7IEwudGlsZUxh eWVyKCdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycse2F0dHJpYnV0aW9uOifCqSBP cGVuU3RyZWV0TWFwJ30pLmFkZFRvKG1hcCk7IGNvbnN0IGdycD1MLm1hcmtlckNsdXN0ZXJHcm91cD9MLm1hcmtlckNsdXN0ZXJH cm91cCgpOkwubGF5ZXJHcm91cCgpOyBjb25zdCBjb2w9e0xPVzonIzE2QTM0QScsTUVESVVNOicjQ0E4QTA0JyxISUdIOicjRUE1 ODBDJyxDUklUSUNBTDonI0RDMjYyNid9OwogICAgaXRlbXMuZm9yRWFjaChpPT57IGlmKCFpLmdlbykgcmV0dXJuOyBjb25zdCBt PUwuY2lyY2xlTWFya2VyKGkuZ2VvLHtyYWRpdXM6OCxjb2xvcjonI2ZmZicsd2VpZ2h0OjIsZmlsbENvbG9yOmNvbFtpLmxldmVs XXx8JyMzMzQxNTUnLGZpbGxPcGFjaXR5Oi45NX0pOyBtLmJpbmRQb3B1cChgPGI+JHtlc2MoaS5pZCl9PC9iPjxicj4ke2VzYyhp LnRpdGxlKX08YnI+JHtlc2MoaS5sZXZlbCl9IMK3ICR7ZXNjKGkuc3RhdHVzKX08YnI+PGEgaHJlZj0iIyIgb25jbGljaz0iZXZl bnQucHJldmVudERlZmF1bHQoKTtnbygnJHtpLmxpbmt9JykiPk9wZW4gcmVjb3JkIOKGkjwvYT5gKTsgZ3JwLmFkZExheWVyKG0p OyB9KTsKICAgIGQucXJzLmZvckVhY2gocT0+eyBpZighcS5nZW8pIHJldHVybjsgY29uc3QgbT1MLm1hcmtlcihxLmdlbyx7aWNv bjpMLmRpdkljb24oe2NsYXNzTmFtZTonJyxodG1sOic8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kOiMwRTE3MjY7Y29sb3I6I0ZGQzIw RTtib3JkZXItcmFkaXVzOjZweDtwYWRkaW5nOjJweCA1cHg7Zm9udDo3MDAgMTBweCBJbnRlciI+UVI8L2Rpdj4nfSl9KTsgbS5i aW5kUG9wdXAoJzxiPlFSIHJlcG9ydGluZyBwb2ludDwvYj48YnI+Jytlc2MocS5sYWJlbCkpOyBncnAuYWRkTGF5ZXIobSk7IH0p OwogICAgbWFwLmFkZExheWVyKGdycCk7IGNvbnN0IHB0cz1pdGVtcy5maWx0ZXIoaT0+aS5nZW8pLm1hcChpPT5pLmdlbyk7IGlm KHB0cy5sZW5ndGgpIG1hcC5maXRCb3VuZHMocHRzLHtwYWRkaW5nOlszMCwzMF0sbWF4Wm9vbToxM30pOyBlbHNlIG1hcC5zZXRW aWV3KFs2LjQ1LDMuMzldLDYpOyB9LDYwKTsgfTsKCjsKCi8qIC0tLS0tLS0tLS0gRG9jdW1lbnRzLCBRUiwgbm90aWZpY2F0aW9u cyAtLS0tLS0tLS0tICovClZJRVdTLmRvY3VtZW50cyA9IGFzeW5jICgpID0+IHsgY29uc3Qgcm93cz1hd2FpdCBsb2FkKCdsaXN0 RG9jcycpOyBpZighcm93cykgcmV0dXJuOwogIG1haW4oYCR7cGFnZUgoJ1NhZmV0eSBEb2N1bWVudHMnLCdQb2xpY2llcywgcHJv Y2VkdXJlcywgZ3VpZGFuY2UgYW5kIGVtZXJnZW5jeSBwbGFucy4nLCBjYW4oJ2RvY3VtZW50cy5tYW5hZ2UnKT9gPGJ1dHRvbiBj bGFzcz0iYnRuIHByaSIgb25jbGljaz0iYWRkRG9jKCkiPiR7aWMoJ3BsdXMnLCdzbScpfSBBZGQgZG9jdW1lbnQ8L2J1dHRvbj5g OicnKX08ZGl2IGNsYXNzPSJjYXJkIj4ke1NHVC5odG1sKCdkb2MnLFt7azonVGl0bGUnLGxhYmVsOidUaXRsZScscmVuZGVyOnI9 PmA8c3BhbiBjbGFzcz0icm93Ij4ke2ljKCdmaWxlLXRleHQnLCdzbScpfTxiPiR7ZXNjKHIuVGl0bGUpfTwvYj48L3NwYW4+YH0s e2s6J0NhdGVnb3J5JyxsYWJlbDonQ2F0ZWdvcnknLGZpbHRlcjp0cnVlfSx7azonVmVyc2lvbicsbGFiZWw6J1ZlcnNpb24nfSx7 azonU2l0ZUlkJyxsYWJlbDonU2l0ZScsZ2V0OnI9PnIuU2l0ZUlkP3NpdGVOKHIuU2l0ZUlkKTonQWxsIHNpdGVzJ30se2s6J0Ny ZWF0ZWRBdCcsbGFiZWw6J0FkZGVkJyxnZXQ6cj0+Zm10RChyLkNyZWF0ZWRBdCksc29ydHY6cj0+ci5DcmVhdGVkQXR9LHtrOidV cmwnLGxhYmVsOicnLHJlbmRlcjpyPT5gPGEgY2xhc3M9ImJ0biBzbSIgaHJlZj0iJHtlc2Moci5VcmwpfSIgdGFyZ2V0PSJfYmxh bmsiIHJlbD0ibm9vcGVuZXIiIG9uY2xpY2s9ImV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIj4ke2ljKCdleHRlcm5hbC1saW5rJywn c20nKX0gT3BlbjwvYT5gfV0scm93cyx7bmFtZTonZG9jdW1lbnRzJyxvblJvdzpyPT53aW5kb3cub3BlbihyLlVybCwnX2JsYW5r Jywnbm9vcGVuZXInKX0pfTwvZGl2PmApOyBTR1QubW91bnQoKTsgfTsKZnVuY3Rpb24gYWRkRG9jKCl7IG1vZGFsKCdBZGQgZG9j dW1lbnQnLCBgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5UaXRsZTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9InRp dGxlIiByZXF1aXJlZD48L2Rpdj48ZGl2IGNsYXNzPSJncmlkIGcyIj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkNhdGVnb3J5 PC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iY2F0ZWdvcnkiIGxpc3Q9ImRjYXQiPjxkYXRhbGlzdCBpZD0iZGNhdCI+ JHtbJ1BvbGljeScsJ1Byb2NlZHVyZScsJ0VtZXJnZW5jeSBQbGFuJywnUmlzayBBc3Nlc3NtZW50JywnSlNBJywnUGVybWl0LXRv LVdvcmsnLCdHdWlkYW5jZSddLm1hcChjPT5gPG9wdGlvbiB2YWx1ZT0iJHtjfSI+YCkuam9pbignJyl9PC9kYXRhbGlzdD48L2Rp dj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlZlcnNpb248L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1lPSJ2ZXJzaW9u IiB2YWx1ZT0iMS4wIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkxpbmsgKGh0dHBzOi8vKTwvbGFiZWw+ PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9InVybCIgcGxhY2Vob2xkZXI9Imh0dHBzOi8vIj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVs ZCI+PGxhYmVsPuKApm9yIHVwbG9hZCBhIFBERiAvIGltYWdlPC9sYWJlbD48aW5wdXQgdHlwZT0iZmlsZSIgYWNjZXB0PSJhcHBs aWNhdGlvbi9wZGYsaW1hZ2UvKiIgaWQ9ImRvY2YiIGNsYXNzPSJpbnAiPjwvZGl2PmAsIHtvblN1Ym1pdDogYXN5bmMgZD0+eyBj b25zdCBmPXFzKCcjZG9jZicpLmZpbGVzWzBdOyBpZihmKXsgaWYoZi5zaXplPjUqMTAyNCoxMDI0KXsgdG9hc3QoJ01heCA1IE1C JywnZXJyJyk7IHJldHVybiBmYWxzZTsgfSBkLmZpbGU9YXdhaXQgbmV3IFByb21pc2Uocj0+eyBjb25zdCB4PW5ldyBGaWxlUmVh ZGVyKCk7IHgub25sb2FkPSgpPT5yKHgucmVzdWx0KTsgeC5yZWFkQXNEYXRhVVJMKGYpOyB9KTsgfSBhd2FpdCBjYWxsKCdhZGRE b2MnLGQpOyB0b2FzdCgnRG9jdW1lbnQgYWRkZWQnLCdvaycpOyByZW5kZXIoKTsgfX0pOyB9ClZJRVdTLnFyID0gYXN5bmMgKCkg PT4geyBjb25zdCByb3dzPWF3YWl0IGxvYWQoJ2xpc3RRUicpOyBpZighcm93cykgcmV0dXJuOyBjb25zdCBiYXNlPVNHLnVybHx8 Qk9PVC51cmwsIFA9e1JFUE9SVDpbJ21lZ2FwaG9uZScsJ1JlcG9ydCBhIHNhZmV0eSBpc3N1ZSddLFRPT0xCT1g6Wyd1c2Vycycs J1Rvb2xib3ggYXR0ZW5kYW5jZSddLERPQ1VNRU5UOlsnZmlsZS10ZXh0JywnU2FmZXR5IGRvY3VtZW50J10sSU5TUEVDVElPTjpb J2NsaXBib2FyZC1jaGVjaycsJ0luc3BlY3Rpb24nXSxUUkFJTklORzpbJ2dyYWR1YXRpb24tY2FwJywnVHJhaW5pbmcgYXR0ZW5k YW5jZSddLENBTVBBSUdOOlsnZmxhZycsJ0NhbXBhaWduJ119OwogIG1haW4oYCR7cGFnZUgoJ1FSIENvZGVzJywnRXZlcnkgYXJl YSwgdmVoaWNsZSBhbmQgYXNzZXQgY2FuIGhhdmUgaXRzIG93biBRUiDigJQgcmVwb3J0cyBhcnJpdmUgd2l0aCB0aGUgbG9jYXRp b24gYWxyZWFkeSBmaWxsZWQgaW4uJywgYDxidXR0b24gY2xhc3M9ImJ0biBwcmkiIG9uY2xpY2s9Im5ld1FSKCkiPiR7aWMoJ3Bs dXMnLCdzbScpfSBOZXcgUVIgY29kZTwvYnV0dG9uPmApfQogIDxkaXYgY2xhc3M9ImdyaWQgZzQgbWIiPiR7a3BpKHtsYWJlbDon QWN0aXZlIFFSIGNvZGVzJyx2YWx1ZTpyb3dzLmZpbHRlcihyPT5yLlN0YXR1cz09PSdBY3RpdmUnKS5sZW5ndGgsdG9uZTonYmx1 ZScsaWNvbjoncXItY29kZSd9KX0ke2twaSh7bGFiZWw6J1RvdGFsIHNjYW5zJyx2YWx1ZTpyb3dzLnJlZHVjZSgoYSxyKT0+YStO dW1iZXIoci5TY2Fuc3x8MCksMCksaW5zaWdodDonQWxsIHRpbWUnLHRvbmU6J2dyZWVuJyxpY29uOidzY2FuLWxpbmUnfSl9JHtr cGkoe2xhYmVsOidSZXBvcnRpbmcgcG9pbnRzJyx2YWx1ZTpyb3dzLmZpbHRlcihyPT5yLlB1cnBvc2U9PT0nUkVQT1JUJykubGVu Z3RoLHRvbmU6J29yYW5nZScsaWNvbjonbWVnYXBob25lJ30pfSR7a3BpKHtsYWJlbDonVG9vbGJveCBjb2RlcycsdmFsdWU6cm93 cy5maWx0ZXIocj0+ci5QdXJwb3NlPT09J1RPT0xCT1gnKS5sZW5ndGgsdG9uZTonYmx1ZScsaWNvbjondXNlcnMnfSl9PC9kaXY+ CiAgPGRpdiBjbGFzcz0iZ3JpZCBnNCI+JHtyb3dzLm1hcChxPT57IGNvbnN0IHVybD1iYXNlKyc/cXI9JytlbmNvZGVVUklDb21w b25lbnQocS5JZCk7IGNvbnN0IHA9UFtxLlB1cnBvc2VdfHxbJ3FyLWNvZGUnLHEuUHVycG9zZV07IHJldHVybiBgPGRpdiBjbGFz cz0iY2FyZCBwIGNvbCIgc3R5bGU9ImdhcDo4cHg7JHtxLlN0YXR1cyE9PSdBY3RpdmUnPydvcGFjaXR5Oi41NSc6Jyd9Ij48ZGl2 IGNsYXNzPSJyb3cgYmV0d2VlbiI+PHNwYW4gY2xhc3M9ImNoaXAgYy1ncmF5Ij4ke2ljKHBbMF0pfSR7ZXNjKHBbMV0pfTwvc3Bh bj4ke2NoaXAocS5TdGF0dXMpfTwvZGl2PjxpbWcgc3JjPSJodHRwczovL2FwaS5xcnNlcnZlci5jb20vdjEvY3JlYXRlLXFyLWNv ZGUvP3NpemU9MTgweDE4MCZtYXJnaW49NiZkYXRhPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVybCl9IiBhbHQ9IlFSIGNvZGUgZm9y ICR7ZXNjKHEuTGFiZWwpfSIgd2lkdGg9IjE1MCIgaGVpZ2h0PSIxNTAiIHN0eWxlPSJhbGlnbi1zZWxmOmNlbnRlcjtib3JkZXIt cmFkaXVzOjhweCIgbG9hZGluZz0ibGF6eSI+PGIgY2xhc3M9InNtYWxsIj4ke2VzYyhxLkxhYmVsKX08L2I+PGRpdiBjbGFzcz0i dGlueSBtdXRlZCI+JHtlc2Moc2l0ZU4ocS5TaXRlSWQpKX0ke3EuTG9jYXRpb24/JyDCtyAnK2VzYyhxLkxvY2F0aW9uKTonJ30k e3EuQXNzZXQ/JyDCtyAnK2VzYyhxLkFzc2V0KTonJ308L2Rpdj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIG1vbm8iPiR7ZXNjKHEu SWQpfSDCtyAke251bShxLlNjYW5zKX0gc2NhbnMgwrcgb3duZXIgJHtlc2ModU5hbWUocS5Pd25lcklkKSl9PC9kaXY+PGRpdiBj bGFzcz0icm93IHciPjxidXR0b24gY2xhc3M9ImJ0biBzbSIgb25jbGljaz0icXJQb3N0ZXIoJyR7ZXNjKHEuSWQpfScsJyR7ZXNj KHEuTGFiZWwpLnJlcGxhY2UoLycvZywnJyl9JykiPiR7aWMoJ3ByaW50ZXInLCdzbScpfSBQb3N0ZXI8L2J1dHRvbj48YSBjbGFz cz0iYnRuIHNtIiBocmVmPSIke2VzYyh1cmwpfSIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPiR7aWMoJ2V4dGVybmFs LWxpbmsnLCdzbScpfSBUZXN0PC9hPjxidXR0b24gY2xhc3M9ImJ0biBzbSBnaG9zdCIgb25jbGljaz0iY2FsbCgndG9nZ2xlUVIn LHtpZDonJHtlc2MocS5JZCl9J30pLnRoZW4ocz0+e3RvYXN0KCdRUiAnK3MudG9Mb3dlckNhc2UoKSwnb2snKTtyZW5kZXIoKTt9 KSI+JHtxLlN0YXR1cz09PSdBY3RpdmUnPydEaXNhYmxlJzonRW5hYmxlJ308L2J1dHRvbj48L2Rpdj48L2Rpdj5gOyB9KS5qb2lu KCcnKX08L2Rpdj5gKTsgfTsKZnVuY3Rpb24gcXJQb3N0ZXIoaWQsIGxhYmVsKXsgdmFyIHVybD0oU0cudXJsfHxCT09ULnVybCkr Jz9xcj0nK2VuY29kZVVSSUNvbXBvbmVudChpZCk7IHByaW50V2luKGxhYmVsLCAnYm9keXtmb250LWZhbWlseTpBcmlhbCxzYW5z LXNlcmlmO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbjowfScsCiAgYDxkaXYgc3R5bGU9ImJhY2tncm91bmQ6IzBCMTIyMDtjb2xv cjojRkZDMjBFO3BhZGRpbmc6MzBweDtmb250LXdlaWdodDo5MDA7Zm9udC1zaXplOjMwcHgiPlNBQTxzcGFuIHN0eWxlPVwiY29s b3I6I2ZmZlwiPmZlbHk8L3NwYW4+PGRpdiBzdHlsZT1cImZvbnQtc2l6ZToxM3B4O2xldHRlci1zcGFjaW5nOi4yZW07Y29sb3I6 I0M1Q0VERjttYXJnaW4tdG9wOjRweFwiPkVOVEVSUFJJU0UgU0FGRVRZIE9QRVJBVElORyBTWVNURU08L2Rpdj48L2Rpdj48ZGl2 IHN0eWxlPSJoZWlnaHQ6MTZweDtiYWNrZ3JvdW5kOnJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQoLTQ1ZGVnLCMxMTEgMCAxNnB4 LCNGRkMyMEUgMTZweCAzMnB4KSI+PC9kaXY+PGgxIHN0eWxlPSJmb250LXNpemU6NDZweDttYXJnaW46MzBweCAwIDZweCI+UkVQ T1JUIEEgU0FGRVRZIElTU1VFPC9oMT48cCBzdHlsZT0iZm9udC1zaXplOjIwcHg7Y29sb3I6IzQ0NCI+U2NhbiB3aXRoIHlvdXIg cGhvbmUgY2FtZXJhIOKAlCBubyBsb2dpbiBuZWVkZWQ8L3A+PGltZyBzcmM9Imh0dHBzOi8vYXBpLnFyc2VydmVyLmNvbS92MS9j cmVhdGUtcXItY29kZS8/c2l6ZT01MjB4NTIwJm1hcmdpbj0xMCZkYXRhPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHVybCl9IiB3aWR0 aD0iNDIwIj48aDI+JHtlc2MobGFiZWwpfTwvaDI+PHAgc3R5bGU9ImNvbG9yOiM2NjYiPiR7ZXNjKGlkKX0gwrcgU2VlIGl0LiBS ZXBvcnQgaXQuIEZpeCBpdC4gTGVhcm4gZnJvbSBpdC48L3A+YCwgMTUwMCk7IH0KZnVuY3Rpb24gbmV3UVIoKXsgbW9kYWwoJ05l dyBRUiBjb2RlJywgYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+UHVycG9zZTwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBu YW1lPSJwdXJwb3NlIj4ke1tbJ1JFUE9SVCcsJ1JlcG9ydCBhIHNhZmV0eSBpc3N1ZSddLFsnRE9DVU1FTlQnLCdTYWZldHkgZG9j dW1lbnQnXSxbJ0lOU1BFQ1RJT04nLCdFcXVpcG1lbnQgLyB2ZWhpY2xlIGluc3BlY3Rpb24nXSxbJ1RSQUlOSU5HJywnVHJhaW5p bmcgYXR0ZW5kYW5jZSddLFsnQ0FNUEFJR04nLCdTYWZldHkgY2FtcGFpZ24nXV0ubWFwKHA9Pm9wdChwWzBdLHBbMV0pKS5qb2lu KCcnKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkxhYmVsIChzaG93biBvbiB0aGUgcG9zdGVyKTwv bGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9ImxhYmVsIiByZXF1aXJlZCBwbGFjZWhvbGRlcj0iUlRHIExhbmUgNCDigJQg UmVwb3J0IGEgU2FmZXR5IElzc3VlIj48L2Rpdj48ZGl2IGNsYXNzPSJncmlkIGcyIj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVs PlNpdGU8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0ic2l0ZUlkIj4ke3NlbFNpdGVzKFNHLnVzZXIuU2l0ZUlkKX08 L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkRlcGFydG1lbnQ8L2xhYmVsPjxzZWxlY3QgY2xhc3M9Imlu cCIgbmFtZT0iZGVwdElkIj4ke3NlbERlcHRzKCcnLFNHLnVzZXIuU2l0ZUlkLCfigJQnKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNs YXNzPSJmaWVsZCI+PGxhYmVsPkxvY2F0aW9uIC8gYXJlYTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9ImxvY2F0aW9u Ij48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkFzc2V0IC8gZXF1aXBtZW50PC9sYWJlbD48aW5wdXQgY2xhc3M9Imlu cCIgbmFtZT0iYXNzZXQiIHBsYWNlaG9sZGVyPSJlLmcuIFVWLTEyIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxh YmVsPkxpbmtlZCByZWNvcmQgSUQgKGZvciBkb2N1bWVudHMpPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0icmVmSWQi IHBsYWNlaG9sZGVyPSJlLmcuIERPQy0yMDI2LTAwMDAxIj48L2Rpdj5gLCB7b25PcGVuOmY9PmxpbmtTaXRlRGVwdChmKSwgb25T dWJtaXQ6IGFzeW5jIGQ9PnsgYXdhaXQgY2FsbCgnY3JlYXRlUVInLGQpOyB0b2FzdCgnUVIgY29kZSBjcmVhdGVkJywnb2snKTsg cmVuZGVyKCk7IH19KTsgfQpWSUVXUy5ub3RpZmljYXRpb25zID0gYXN5bmMgKCkgPT4geyBjb25zdCByb3dzPWF3YWl0IGxvYWQo J2xpc3ROb3RpZmljYXRpb25zJyk7IGlmKCFyb3dzKSByZXR1cm47IG1haW4oYCR7cGFnZUgoJ05vdGlmaWNhdGlvbnMnLCdBc3Np Z25tZW50cywgYXBwcm92YWxzLCBhbGVydHMsIGFjaGlldmVtZW50cyBhbmQgcmVtaW5kZXJzLicsIGA8YnV0dG9uIGNsYXNzPSJi dG4iIG9uY2xpY2s9Im1hcmtBbGwoKSI+JHtpYygnY2hlY2stY2hlY2snLCdzbScpfSBNYXJrIGFsbCByZWFkPC9idXR0b24+YCl9 PGRpdiBjbGFzcz0iY2FyZCI+JHtyb3dzLm1hcChuSXRlbSkuam9pbignJyl8fGVtcHR5KCdBbGwgY2F1Z2h0IHVwJywnJywnYmVs bCcpfTwvZGl2PjxkaXYgY2xhc3M9ImRpc2NsYWltZXIgbXQiPiR7aWMoJ3NlbmQnLCdzbScpfTxzcGFuPkNoYW5uZWxzOiBpbi1h cHAgKGxpdmUpIGFuZCBlbWFpbCBmb3IgY3JpdGljYWwgaXRlbXMgd2hlbiBlbmFibGVkIGluIEFkbWluLiBTTVMsIHB1c2ggYW5k IFdoYXRzQXBwIGFyZSBpbnRlZ3JhdGlvbi1yZWFkeSB2aWEgdGhlIG5vdGlmaWNhdGlvbiBzZXJ2aWNlLjwvc3Bhbj48L2Rpdj5g KTsgfTsKCi8qIC0tLS0tLS0tLS0gQWRtaW5pc3RyYXRpb24gLS0tLS0tLS0tLSAqLwpWSUVXUy5hZG1pbiA9IGFzeW5jICgpID0+ IHsgY29uc3QgZD1hd2FpdCBsb2FkKCdnZXRBZG1pbicpOyBpZighZCkgcmV0dXJuOyBjb25zdCB0YWI9U0cucGFyYW1zWzBdfHwo ZC5jYW5Vc2Vycz8ndXNlcnMnOmQuY2FuQ29uZmlnPydjb25maWcnOidhdWRpdCcpOyB3aW5kb3cuX2FkbT1kOwogIGNvbnN0IFQy PVtbJ3VzZXJzJywnVXNlcnMnLGQuY2FuVXNlcnNdLFsncm9sZXMnLCdSb2xlcyAmIHBlcm1pc3Npb25zJyxkLmNhblVzZXJzXSxb J29yZycsJ1NpdGVzICYgZGVwYXJ0bWVudHMnLGQuY2FuQ29uZmlnXSxbJ2NvbmZpZycsJ1J1bGVzICYgc2V0dGluZ3MnLGQuY2Fu Q29uZmlnXSxbJ3RyYWZmaWMnLCdUcmFmZmljIHJ1bGVzJyxkLmNhbkNvbmZpZ10sWydnYW1pZnknLCdHYW1pZmljYXRpb24nLGQu Y2FuQ29uZmlnXSxbJ2NvbnRlbnQnLCdUaXBzLCBxdW90ZXMgJiBqb2tlcycsZC5jYW5Db25maWddLFsndGVtcGxhdGVzJywnVGVt cGxhdGVzICYgY291cnNlcycsZC5jYW5Db25maWddLFsnYWknLCdBSSBtb2RlbHMnLGQuY2FuQ29uZmlnXSxbJ2F1ZGl0JywnQXVk aXQgbG9nJyxkLmNhbkF1ZGl0XV0uZmlsdGVyKHQ9PnRbMl0pOwogIGxldCBib2R5PScnOwogIGlmKHRhYj09PSd1c2VycycpIGJv ZHk9YDxkaXYgY2xhc3M9ImNhcmQiPiR7U0dULmh0bWwoJ3VzcicsW3trOidFbXBJZCcsbGFiZWw6J0VtcGxveWVlIElEJyxyZW5k ZXI6cj0+YDxzcGFuIGNsYXNzPSJtb25vIj4ke2VzYyhyLkVtcElkKX08L3NwYW4+YH0se2s6J05hbWUnLGxhYmVsOidOYW1lJyxy ZW5kZXI6cj0+YDxzcGFuIGNsYXNzPSJyb3ciPiR7YXYoci5OYW1lLCdzbScpfTxiPiR7ZXNjKHIuTmFtZSl9PC9iPjwvc3Bhbj5g fSx7azonUm9sZScsbGFiZWw6J1JvbGUnLGdldDpyPT5yb2xlTihyLlJvbGUpLGZpbHRlcjp0cnVlfSx7azonU2l0ZUlkJyxsYWJl bDonU2l0ZScsZ2V0OnI9PnNpdGVOKHIuU2l0ZUlkKSxmaWx0ZXI6dHJ1ZX0se2s6J0RlcHRJZCcsbGFiZWw6J0RlcGFydG1lbnQn LGdldDpyPT5kZXB0TihyLkRlcHRJZCl9LHtrOidDYXRlZ29yeScsbGFiZWw6J0NhdGVnb3J5JyxmaWx0ZXI6dHJ1ZX0se2s6J0Fj dGl2ZScsbGFiZWw6J1N0YXR1cycsZ2V0OnI9PnIuQWN0aXZlPT09J04nPydEaXNhYmxlZCc6J0FjdGl2ZScscmVuZGVyOnI9PmNo aXAoci5BY3RpdmU9PT0nTic/J0Rpc2FibGVkJzonQWN0aXZlJyl9XSxkLnVzZXJzLHtuYW1lOid1c2Vycycsb25Sb3c6cj0+ZWRp dFVzZXIociksdG9vbGJhcjpgPGJ1dHRvbiBjbGFzcz0iYnRuIHNtIHByaSIgb25jbGljaz0iZWRpdFVzZXIoe30pIj4ke2ljKCd1 c2VyLXBsdXMnLCdzbScpfSBBZGQgdXNlcjwvYnV0dG9uPmB9KX08L2Rpdj5gOwogIGlmKHRhYj09PSdyb2xlcycpIGJvZHk9YDxk aXYgY2xhc3M9ImJhbm5lciBpbmZvIj4ke2ljKCdsb2NrJyl9PHNwYW4+UGVybWlzc2lvbnMgYXJlIGVuZm9yY2VkIG9uIHRoZSBz ZXJ2ZXIgZm9yIGV2ZXJ5IHJlcXVlc3QuIENoYW5nZXMgYXBwbHkgb24gdGhlIHVzZXIncyBuZXh0IGFjdGlvbi48L3NwYW4+PC9k aXY+PGRpdiBjbGFzcz0iY2FyZCI+JHtkLnJvbGVzLm1hcChyPT5gPGRpdiBjbGFzcz0ibGlzdC1pIiBvbmNsaWNrPSJlZGl0Um9s ZSgnJHtyLlJvbGV9JykiPjxiIHN0eWxlPSJ3aWR0aDoyMDBweCI+JHtlc2Mocm9sZU4oci5Sb2xlKSl9PC9iPjxkaXYgY2xhc3M9 Imdyb3cgdGlueSBtdXRlZCI+JHtlc2Moci5QZXJtaXNzaW9ucyl9PC9kaXY+JHtpYygncGVuY2lsJywnc20nKX08L2Rpdj5gKS5q b2luKCcnKX08L2Rpdj5gOwogIGlmKHRhYj09PSdvcmcnKSBib2R5PWA8ZGl2IGNsYXNzPSJncmlkIGcyIj48ZGl2IGNsYXNzPSJj YXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5TaXRlczwvaDM+PGJ1dHRvbiBjbGFzcz0iYnRuIHNtIHByaSIgb25jbGljaz0i YWRkU2l0ZSgpIj4ke2ljKCdwbHVzJywnc20nKX0gQWRkIHNpdGU8L2J1dHRvbj48L2Rpdj4ke1NHLkwuc2l0ZXMubWFwKHM9PmA8 ZGl2IGNsYXNzPSJsaXN0LWkiIHN0eWxlPSJjdXJzb3I6ZGVmYXVsdCI+JHtpYygnYnVpbGRpbmctMicpfTxkaXYgY2xhc3M9Imdy b3cgc21hbGwiPjxiPiR7ZXNjKHMuTmFtZSl9PC9iPjxkaXYgY2xhc3M9InRpbnkgbXV0ZWQiPiR7ZXNjKHMuUmVnaW9uKX0gwrcg JHtlc2Mocy5CdXNpbmVzc1VuaXQpfSDCtyAke2VzYyhzLkNvdW50cnkpfTwvZGl2PjwvZGl2PjwvZGl2PmApLmpvaW4oJycpfTwv ZGl2PjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPkRlcGFydG1lbnRzPC9oMz48YnV0dG9uIGNsYXNz PSJidG4gc20gcHJpIiBvbmNsaWNrPSJhZGREZXB0KCkiPiR7aWMoJ3BsdXMnLCdzbScpfSBBZGQgZGVwYXJ0bWVudDwvYnV0dG9u PjwvZGl2PjxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6NTIwcHg7b3ZlcmZsb3c6YXV0byI+JHtTRy5MLmRlcHRzLm1hcCh4PT5gPGRp diBjbGFzcz0ibGlzdC1pIiBzdHlsZT0iY3Vyc29yOmRlZmF1bHQiPjxzcGFuIGNsYXNzPSJncm93IHNtYWxsIj48Yj4ke2VzYyh4 Lk5hbWUpfTwvYj48L3NwYW4+PHNwYW4gY2xhc3M9InNtYWxsIG11dGVkIj4ke2VzYyhzaXRlTih4LlNpdGVJZCkpfTwvc3Bhbj48 L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj48L2Rpdj48L2Rpdj5gOwogIGNvbnN0IGNmZ0VkPShrZXksdGl0bGUsaGVscCk9PmA8ZGl2 IGNsYXNzPSJjYXJkIG1iIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxkaXY+PGgzPiR7ZXNjKHRpdGxlKX08L2gzPiR7aGVscD9gPGRp diBjbGFzcz0ic21hbGwgbXV0ZWQiPiR7aGVscH08L2Rpdj5gOicnfTwvZGl2PjxidXR0b24gY2xhc3M9ImJ0biBzbSBwcmkiIG9u Y2xpY2s9InNhdmVDZmcoJyR7a2V5fScpIj4ke2ljKCdzYXZlJywnc20nKX0gU2F2ZTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9 ImNhcmQtYiI+PHRleHRhcmVhIGNsYXNzPSJpbnAgbW9ubyIgaWQ9ImNmZy0ke2tleX0iIHN0eWxlPSJtaW4taGVpZ2h0OiR7TWF0 aC5taW4oNDIwLDgwK0pTT04uc3RyaW5naWZ5KGQuY29uZmlnW2tleV0sbnVsbCwyKS5zcGxpdCgnXG4nKS5sZW5ndGgqMTcpfXB4 Ij4ke2VzYyhKU09OLnN0cmluZ2lmeShkLmNvbmZpZ1trZXldLG51bGwsMikpfTwvdGV4dGFyZWE+PC9kaXY+PC9kaXY+YDsKICBp Zih0YWI9PT0nY29uZmlnJykgYm9keT1gPGRpdiBjbGFzcz0iY2FyZCBtYiI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+TW9kdWxl czwvaDM+PGJ1dHRvbiBjbGFzcz0iYnRuIHNtIHByaSIgb25jbGljaz0ic2F2ZU1vZHVsZXMoKSI+JHtpYygnc2F2ZScsJ3NtJyl9 IFNhdmU8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkLWIgZ3JpZCBnNCI+JHtPYmplY3Qua2V5cyhkLmNvbmZpZy5tb2R1 bGVzKS5tYXAobT0+YDxsYWJlbCBjbGFzcz0icm93IHNtYWxsIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJtb2RjaGsi IHZhbHVlPSIke219IiAke2QuY29uZmlnLm1vZHVsZXNbbV0/J2NoZWNrZWQnOicnfT4gJHtlc2MobSl9PC9sYWJlbD5gKS5qb2lu KCcnKX08L2Rpdj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImNhcmQgbWIiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPlByaXZhY3kg JiBub3RpZmljYXRpb25zPC9oMz48YnV0dG9uIGNsYXNzPSJidG4gc20gcHJpIiBvbmNsaWNrPSJzYXZlUHJpdigpIj4ke2ljKCdz YXZlJywnc20nKX0gU2F2ZTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiBjb2wiPjxsYWJlbCBjbGFzcz0icm93IHNt YWxsIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwQW5vbiIgJHtkLmNvbmZpZy5wcml2YWN5LmFsbG93QW5vbnltb3VzPydj aGVja2VkJzonJ30+IEFsbG93IGFub255bW91cyAvIG5vLWxvZ2luIFFSIHJlcG9ydGluZzwvbGFiZWw+PGxhYmVsIGNsYXNzPSJy b3cgc21hbGwiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InBIaWRlIiAke2QuY29uZmlnLnByaXZhY3kuaGlkZUluZGl2aWR1 YWxSYW5rcz8nY2hlY2tlZCc6Jyd9PiBIaWRlIGluZGl2aWR1YWwgcmFua2luZ3MgKHNob3cgZGVwYXJ0bWVudHMgb25seSk8L2xh YmVsPjxsYWJlbCBjbGFzcz0icm93IHNtYWxsIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwTWFpbCIgJHtkLmNvbmZpZy5u b3RpZnkuZW1haWw/J2NoZWNrZWQnOicnfT4gRW1haWwgY3JpdGljYWwgbm90aWZpY2F0aW9uczwvbGFiZWw+PC9kaXY+PC9kaXY+ CiAgICAke2NmZ0VkKCdzcGlXZWlnaHRzJywnU2FmZXR5IFBlcmZvcm1hbmNlIEluZGV4IHdlaWdodHMnLCdSZWxhdGl2ZSB3ZWln aHQgb2YgZWFjaCBjb21wb25lbnQuIFNjb3JlcyBhcmUgbm9ybWFsaXNlZCBieSB0aGUgdG90YWwuJyl9JHtjZmdFZCgncm91dGlu ZycsJ1JlcG9ydCByb3V0aW5nIHJ1bGVzJywnbW9kdWxlOiAqIHwgSEFaQVJEIHwgSU5DSURFTlQgfCBPQlNFUlZBVElPTiDCtyBs ZXZlbDogTE9XIHwgTUVESVVNIHwgSElHSCB8IENSSVRJQ0FMIHwgKiDCtyByb2xlczogd2hvIGlzIG5vdGlmaWVkIChzaXRlL2Rl cGFydG1lbnQtc2NvcGVkIGF1dG9tYXRpY2FsbHkpLicpfSR7Y2ZnRWQoJ3Jpc2tNYXRyaXgnLCdSaXNrIG1hdHJpeCcsJ0xpa2Vs aWhvb2Qgw5cgc2V2ZXJpdHkgbGFiZWxzIGFuZCB0aGUgc2NvcmUgYmFuZHMgZm9yIExPVyAvIE1FRElVTSAvIEhJR0ggLyBDUklU SUNBTC4nKX0ke2NmZ0VkKCd0cmFpbmluZycsJ1RyYWluaW5nIHJlbWluZGVyIHJ1bGVzJywnRGF5cyBiZWZvcmUgZXhwaXJ5IHdo ZW4gdGhlIGVtcGxveWVlIChhbmQgc3VwZXJ2aXNvciBhdCDiiaQxNCBkYXlzKSBpcyByZW1pbmRlZC4nKX0ke2NmZ0VkKCdpbmNp ZGVudFR5cGVzJywnSW5jaWRlbnQgdHlwZXMnLCcnKX0ke2NmZ0VkKCdoYXphcmRDYXRlZ29yaWVzJywnSGF6YXJkIGNhdGVnb3Jp ZXMnLCcnKX0ke2NmZ0VkKCdpbnZlc3RpZ2F0aW9uTWV0aG9kcycsJ0ludmVzdGlnYXRpb24gbWV0aG9kcycsJycpfWA7CiAgaWYo dGFiPT09J3RyYWZmaWMnKSBib2R5PWA8ZGl2IGNsYXNzPSJiYW5uZXIgd2FybiI+JHtpYygnc2NhbGUnKX08c3Bhbj5UaGUgbWF0 cml4IGRlZmluZXMgdGhlIGVuZm9yY2VtZW50IDxiPnN0YWdlPC9iPiBhbmQgdGhlIHJldmlldyBjaGFpbi4gSXQgbmV2ZXIgZXhl Y3V0ZXMgZGlzY2lwbGluYXJ5IGFjdGlvbiDigJQgSFIvbWFuYWdlbWVudCBkby48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0iY2Fy ZCBtYiI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+UGVuYWx0eSBtYXRyaXg8L2gzPjxkaXYgY2xhc3M9InJvdyI+PGJ1dHRvbiBj bGFzcz0iYnRuIHNtIiBvbmNsaWNrPSJwbUFkZCgpIj4ke2ljKCdwbHVzJywnc20nKX0gQWRkIHN0YWdlPC9idXR0b24+PGJ1dHRv biBjbGFzcz0iYnRuIHNtIHByaSIgb25jbGljaz0icG1TYXZlKCkiPiR7aWMoJ3NhdmUnLCdzbScpfSBTYXZlIG1hdHJpeDwvYnV0 dG9uPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InR3Ij48dGFibGUgY2xhc3M9InRibCIgaWQ9InBtIj48dGhlYWQ+PHRyPjx0aD5P ZmZlbmNlPC90aD48dGg+Q2FyZDwvdGg+PHRoPkNsYXNzaWZpY2F0aW9uPC90aD48dGg+UGVuYWx0eTwvdGg+PHRoPlJldmlldyBy b2xlcyAoY29tbWEgc2VwYXJhdGVkKTwvdGg+PHRoPjwvdGg+PC90cj48L3RoZWFkPjx0Ym9keT4ke2QuY29uZmlnLnBlbmFsdHlN YXRyaXgubWFwKHBtUm93KS5qb2luKCcnKX08L3Rib2R5PjwvdGFibGU+PC9kaXY+PC9kaXY+JHtjZmdFZCgndHJhZmZpYycsJ1Zp b2xhdGlvbiB0eXBlcywgY2F0ZWdvcmllcywgc3RhdHVzZXMsIHZlaGljbGVzLCBzb3VyY2VzICYgbG9vay1iYWNrJywnbG9va2Jh Y2tNb250aHM6IDAgPSBvZmZlbmNlcyBuZXZlciBleHBpcmUuJyl9JHtjZmdFZCgnY2FyZE1lYW5pbmdzJywnQ2FyZCBtZWFuaW5n cycsJycpfSR7Y2ZnRWQoJ3RyYWZmaWNDb21wbGV0aW9uJywnU3RhdHVzIGFmdGVyIGFsbCByZXZpZXdzIGFwcHJvdmUnLCcnKX1g OwogIGlmKHRhYj09PSdnYW1pZnknKSBib2R5PWA8ZGl2IGNsYXNzPSJjYXJkIG1iIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5T YWZldHkgUG9pbnRzIHBlciBhY3Rpdml0eTwvaDM+PGJ1dHRvbiBjbGFzcz0iYnRuIHNtIHByaSIgb25jbGljaz0ic2F2ZVB0cygp Ij4ke2ljKCdzYXZlJywnc20nKX0gU2F2ZTwvYnV0dG9uPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiBncmlkIGc0Ij4ke09iamVj dC5rZXlzKGQuY29uZmlnLnBvaW50cykubWFwKGs9PmA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPiR7ZXNjKGsucmVwbGFjZSgv Xy9nLCcgJykudG9Mb3dlckNhc2UoKSl9PC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCBwdHNpbiIgdHlwZT0ibnVtYmVyIiBkYXRh LWs9IiR7a30iIHZhbHVlPSIke2QuY29uZmlnLnBvaW50c1trXX0iPjwvZGl2PmApLmpvaW4oJycpfTwvZGl2PjwvZGl2PiR7Y2Zn RWQoJ2RhaWx5Q2FwcycsJ0FudGktZ2FtaW5nOiBkYWlseSBjYXBzIHBlciBhY3Rpdml0eScsJ01heGltdW0gcmV3YXJkZWQgYWN0 aW9ucyBwZXIgcGVyc29uIHBlciBkYXkuIEhhemFyZCBhbmQgaW5jaWRlbnQgcmVwb3J0IHBvaW50cyBhcmUgb25seSBhd2FyZGVk IGFmdGVyIHZhbGlkYXRpb24uJyl9JHtjZmdFZCgnbGV2ZWxzJywnU2FmZXR5IGxldmVscyAoUm9va2llIOKGkiBHaWFudCknLCdS ZW5hbWUgbGV2ZWxzIG9yIGNoYW5nZSB0aHJlc2hvbGRzLicpfSR7Y2ZnRWQoJ2JhZGdlcycsJ0JhZGdlcycsJ21ldHJpYyA9IGFj dGl2aXR5IGtleSwgInBvaW50cyIgZm9yIHRvdGFsIHBvaW50cywgb3IgIm1hbnVhbCIgZm9yIGxlYWRlci1hd2FyZGVkIGJhZGdl cy4nKX1gOwogIGlmKHRhYj09PSdjb250ZW50JykgYm9keT1gJHtjZmdFZCgndGlwcycsJ1NhZmV0eSB0aXBzJywnU3RyaW5ncywg b3Igb2JqZWN0cyB7InRleHQiOiLigKYiLCJyb2xlIjoiRU1QTE9ZRUUiLCJzaXRlIjoiUzEiLCJkZXB0IjoiUzEtT1BTIn0gdG8g dGFyZ2V0LicpfSR7Y2ZnRWQoJ3F1b3RlcycsJ1NhZmV0eSBxdW90ZXMnLCcnKX0ke2NmZ0VkKCdqb2tlcycsJ1NhZmV0eSBqb2tl cycsJ0tlZXAgdGhlbSB3b3JrcGxhY2UtYXBwcm9wcmlhdGUg4oCUIG5ldmVyIGFib3V0IHJlYWwgaW5qdXJpZXMuJyl9JHtjZmdF ZCgnZmFjdHMnLCdTYWZldHkgZmFjdHMnLCcnKX1gOwogIGlmKHRhYj09PSd0ZW1wbGF0ZXMnKSBib2R5PWA8ZGl2IGNsYXNzPSJn cmlkIGcyIj48ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5JbnNwZWN0aW9uICYgYXVkaXQgdGVtcGxh dGVzPC9oMz48YnV0dG9uIGNsYXNzPSJidG4gc20gcHJpIiBvbmNsaWNrPSJuZXdUcGwoKSI+JHtpYygncGx1cycsJ3NtJyl9IE5l dyB0ZW1wbGF0ZTwvYnV0dG9uPjwvZGl2PiR7ZC50ZW1wbGF0ZXMubWFwKHQ9PmA8ZGl2IGNsYXNzPSJsaXN0LWkiIHN0eWxlPSJj dXJzb3I6ZGVmYXVsdCI+PHNwYW4gY2xhc3M9ImNoaXAgYy1ncmF5Ij4ke2VzYyh0LktpbmQpfTwvc3Bhbj48ZGl2IGNsYXNzPSJn cm93IHNtYWxsIj48Yj4ke2VzYyh0Lk5hbWUpfTwvYj48ZGl2IGNsYXNzPSJ0aW55IG11dGVkIj4keyhBcnJheS5pc0FycmF5KHQu UXVlc3Rpb25zKT90LlF1ZXN0aW9uczpKU09OLnBhcnNlKHQuUXVlc3Rpb25zfHwnW10nKSkubGVuZ3RofSBjaGVja3M8L2Rpdj48 L2Rpdj48L2Rpdj5gKS5qb2luKCcnKX08L2Rpdj48ZGl2IGNsYXNzPSJjYXJkIj48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5UcmFp bmluZyBjb3Vyc2VzPC9oMz48YnV0dG9uIGNsYXNzPSJidG4gc20gcHJpIiBvbmNsaWNrPSJuZXdDb3Vyc2UoKSI+JHtpYygncGx1 cycsJ3NtJyl9IE5ldyBjb3Vyc2U8L2J1dHRvbj48L2Rpdj4ke2QuY291cnNlcy5tYXAoYz0+YDxkaXYgY2xhc3M9Imxpc3QtaSIg c3R5bGU9ImN1cnNvcjpkZWZhdWx0Ij48c3BhbiBjbGFzcz0iY2hpcCBjLWdyYXkiPiR7ZXNjKGMuVHlwZSl9PC9zcGFuPjxkaXYg Y2xhc3M9Imdyb3cgc21hbGwiPjxiPiR7ZXNjKGMuTmFtZSl9PC9iPjxkaXYgY2xhc3M9InRpbnkgbXV0ZWQiPiR7ZXNjKGMuRHVy YXRpb24pfSDCtyBwYXNzICR7Yy5QYXNzTWFya30lIMK3ICR7Yy5WYWxpZGl0eU1vbnRoc30gbW9udGhzIMK3IHJvbGVzICR7ZXNj KGMuUm9sZXMpfTwvZGl2PjwvZGl2PjwvZGl2PmApLmpvaW4oJycpfTwvZGl2PjwvZGl2PmA7CiAgbWFpbihgJHtwYWdlSCgnQWRt aW5pc3RyYXRpb24nLCdPcmdhbml6YXRpb24sIHBlb3BsZSwgcGVybWlzc2lvbnMsIHJ1bGVzIGFuZCBjb250ZW50LicpfTxkaXYg Y2xhc3M9InRhYnMgbWIiPiR7VDIubWFwKHQ9PmA8YnV0dG9uIGNsYXNzPSIke3RhYj09PXRbMF0/J29uJzonJ30iIG9uY2xpY2s9 ImdvKCdhZG1pbi8ke3RbMF19JykiPiR7dFsxXX08L2J1dHRvbj5gKS5qb2luKCcnKX08L2Rpdj4ke3RhYj09PSdhdWRpdCc/Jzxk aXYgaWQ9ImF1ZGl0Qm94Ij48ZGl2IGNsYXNzPSJzayIgc3R5bGU9ImhlaWdodDozMDBweCI+PC9kaXY+PC9kaXY+Jzp0YWI9PT0n YWknPyc8ZGl2IGlkPSJhaUJveCI+PGRpdiBjbGFzcz0ic2siIHN0eWxlPSJoZWlnaHQ6MzAwcHgiPjwvZGl2PjwvZGl2Pic6Ym9k eX1gKTsgU0dULm1vdW50KCk7CiAgaWYodGFiPT09J2FpJyl7IG9yZ0FJUGFuZWwoKTsgcmV0dXJuOyB9CiAgaWYodGFiPT09J2F1 ZGl0Jyl7IHRyeXsgY29uc3Qgcm93cz1hd2FpdCBjYWxsKCdsaXN0QXVkaXQnKTsgcXMoJyNhdWRpdEJveCcpLmlubmVySFRNTD1g PGRpdiBjbGFzcz0iY2FyZCI+JHtTR1QuaHRtbCgnYXVkJyxbe2s6J0NyZWF0ZWRBdCcsbGFiZWw6J1RpbWVzdGFtcCcsZ2V0OnI9 PmZtdERUKHIuQ3JlYXRlZEF0KSxzb3J0djpyPT5yLkNyZWF0ZWRBdH0se2s6J1VzZXJOYW1lJyxsYWJlbDonVXNlcicsZmlsdGVy OnRydWV9LHtrOidFbnRpdHknLGxhYmVsOidFbnRpdHknLGZpbHRlcjp0cnVlfSx7azonRW50aXR5SWQnLGxhYmVsOidSZWNvcmQn LHJlbmRlcjpyPT5gPHNwYW4gY2xhc3M9Im1vbm8iPiR7ZXNjKHIuRW50aXR5SWQpfTwvc3Bhbj5gfSx7azonQWN0aW9uJyxsYWJl bDonQWN0aW9uJ30se2s6J0JlZm9yZScsbGFiZWw6J1ByZXZpb3VzIHZhbHVlJyxyZW5kZXI6cj0+YDxzcGFuIGNsYXNzPSJ0aW55 IG1vbm8iPiR7ZXNjKFN0cmluZyhyLkJlZm9yZSkuc2xpY2UoMCw4MCkpfTwvc3Bhbj5gfSx7azonQWZ0ZXInLGxhYmVsOidOZXcg dmFsdWUnLHJlbmRlcjpyPT5gPHNwYW4gY2xhc3M9InRpbnkgbW9ubyI+JHtlc2MoU3RyaW5nKHIuQWZ0ZXIpLnNsaWNlKDAsODAp KX08L3NwYW4+YH1dLHJvd3Mse25hbWU6J2F1ZGl0LWxvZycsc2l6ZToyNSxvblJvdzpyPT5nb0VudGl0eShyLkVudGl0eSxyLkVu dGl0eUlkKX0pfTwvZGl2PjxkaXYgY2xhc3M9ImRpc2NsYWltZXIgbXQiPiR7aWMoJ2xvY2snLCdzbScpfTxzcGFuPlRoZSBhdWRp dCBsb2cgaXMgYXBwZW5kLW9ubHkgZnJvbSB0aGUgYXBwbGljYXRpb24uIE5vIHJvbGUgY2FuIGVkaXQgb3IgZGVsZXRlIGVudHJp ZXMgdGhyb3VnaCBTQUFmZWx5Ljwvc3Bhbj48L2Rpdj5gOyBTR1QubW91bnQoKTsgfWNhdGNoKGUpeyBxcygnI2F1ZGl0Qm94Jyku aW5uZXJIVE1MPWVtcHR5KCdDb3VsZCBub3QgbG9hZCcsZS5tZXNzYWdlKTsgaWNvbnMoKTsgfSB9IH07CnZhciBwbVJvdz1zPT5g PHRyIHN0eWxlPSJjdXJzb3I6ZGVmYXVsdCI+PHRkIGRhdGEtbD0iT2ZmZW5jZSI+PGIgY2xhc3M9InBtLW4iPiR7cy5vZmZlbmNl fHwnJ308L2I+PC90ZD48dGQgZGF0YS1sPSJDYXJkIj48c2VsZWN0IGNsYXNzPSJpbnAgcG0tY2FyZCI+JHtbJ1lFTExPVycsJ1JF RCcsJ0JMQUNLJ10ubWFwKGM9Pm9wdChjLGMscy5jYXJkKSkuam9pbignJyl9PC9zZWxlY3Q+PC90ZD48dGQgZGF0YS1sPSJDbGFz c2lmaWNhdGlvbiI+PGlucHV0IGNsYXNzPSJpbnAgcG0tY2xzIiB2YWx1ZT0iJHtlc2Mocy5jbGFzc2lmaWNhdGlvbnx8JycpfSI+ PC90ZD48dGQgZGF0YS1sPSJQZW5hbHR5Ij48aW5wdXQgY2xhc3M9ImlucCBwbS1wZW4iIHZhbHVlPSIke2VzYyhzLnBlbmFsdHl8 fCcnKX0iPjwvdGQ+PHRkIGRhdGEtbD0iV29ya2Zsb3ciPjxpbnB1dCBjbGFzcz0iaW5wIHBtLXdmIG1vbm8iIHZhbHVlPSIke2Vz Yygocy53b3JrZmxvd3x8W10pLmpvaW4oJywgJykpfSI+PC90ZD48dGQ+PGJ1dHRvbiBjbGFzcz0iYnRuIHNtIGdob3N0IiBvbmNs aWNrPSJ0aGlzLmNsb3Nlc3QoJ3RyJykucmVtb3ZlKCkiIGFyaWEtbGFiZWw9IlJlbW92ZSBzdGFnZSI+JHtpYygndHJhc2gtMics J3NtJyl9PC9idXR0b24+PC90ZD48L3RyPmA7CmZ1bmN0aW9uIHBtQWRkKCl7IHFzKCcjcG0gdGJvZHknKS5pbnNlcnRBZGphY2Vu dEhUTUwoJ2JlZm9yZWVuZCcscG1Sb3coe2NhcmQ6J0JMQUNLJyx3b3JrZmxvdzpbJ1NBRkVUWV9PRkZJQ0VSJywnSFInXX0pKTsg aWNvbnMoKTsgfQphc3luYyBmdW5jdGlvbiBwbVNhdmUoKXsgY29uc3Qgdj1xc2EoJyNwbSB0Ym9keSB0cicpLm1hcCh0cj0+KHtj YXJkOnFzKCcucG0tY2FyZCcsdHIpLnZhbHVlLGNsYXNzaWZpY2F0aW9uOnFzKCcucG0tY2xzJyx0cikudmFsdWUscGVuYWx0eTpx cygnLnBtLXBlbicsdHIpLnZhbHVlLHdvcmtmbG93OnFzKCcucG0td2YnLHRyKS52YWx1ZS5zcGxpdCgnLCcpLm1hcChzPT5zLnRy aW0oKS50b1VwcGVyQ2FzZSgpKS5maWx0ZXIoQm9vbGVhbil9KSk7IGF3YWl0IHNhdmVDZmdWYWwoJ3BlbmFsdHlNYXRyaXgnLHYp OyB9CmFzeW5jIGZ1bmN0aW9uIHNhdmVDZmdWYWwoa2V5LCB2YWx1ZSl7IHRyeXsgYXdhaXQgY2FsbCgnc2F2ZUNvbmZpZycse2tl eSx2YWx1ZX0pOyB0b2FzdCgnU2F2ZWQnLCdvaycsJ0NoYW5nZSByZWNvcmRlZCBpbiB0aGUgYXVkaXQgbG9nJyk7IGNvbnN0IGI9 YXdhaXQgY2FsbCgnYm9vdHN0cmFwJyk7IFNHLmNmZz1iLmNmZzsgcmVuZGVyKCk7IH1jYXRjaChlKXsgdG9hc3QoZS5tZXNzYWdl LCdlcnInKTsgfSB9CmZ1bmN0aW9uIHNhdmVDZmcoa2V5KXsgbGV0IHY7IHRyeXsgdj1KU09OLnBhcnNlKHFzKCcjY2ZnLScra2V5 KS52YWx1ZSk7IH1jYXRjaChlKXsgcmV0dXJuIHRvYXN0KCdJbnZhbGlkIEpTT046ICcrZS5tZXNzYWdlLCdlcnInKTsgfSBzYXZl Q2ZnVmFsKGtleSx2KTsgfQpmdW5jdGlvbiBzYXZlTW9kdWxlcygpeyBjb25zdCBtPXt9OyBxc2EoJy5tb2RjaGsnKS5mb3JFYWNo KGM9Pm1bYy52YWx1ZV09Yy5jaGVja2VkKTsgc2F2ZUNmZ1ZhbCgnbW9kdWxlcycsbSk7IH0KYXN5bmMgZnVuY3Rpb24gc2F2ZVBy aXYoKXsgYXdhaXQgY2FsbCgnc2F2ZUNvbmZpZycse2tleToncHJpdmFjeScsdmFsdWU6e2FsbG93QW5vbnltb3VzOnFzKCcjcEFu b24nKS5jaGVja2VkLGhpZGVJbmRpdmlkdWFsUmFua3M6cXMoJyNwSGlkZScpLmNoZWNrZWR9fSkuY2F0Y2goZT0+dG9hc3QoZS5t ZXNzYWdlLCdlcnInKSk7IHNhdmVDZmdWYWwoJ25vdGlmeScse2VtYWlsOnFzKCcjcE1haWwnKS5jaGVja2VkfSk7IH0KZnVuY3Rp b24gc2F2ZVB0cygpeyBjb25zdCBwPXt9OyBxc2EoJy5wdHNpbicpLmZvckVhY2goaT0+cFtpLmRhdGFzZXQua109TWF0aC5tYXgo MCxOdW1iZXIoaS52YWx1ZSl8fDApKTsgc2F2ZUNmZ1ZhbCgncG9pbnRzJyxwKTsgfQpmdW5jdGlvbiBlZGl0VXNlcih1KXsgY29u c3Qgcm9sZXM9d2luZG93Ll9hZG0ucm9sZXMubWFwKHI9PnIuUm9sZSk7IG1vZGFsKHUuSWQ/J0VkaXQgdXNlcic6J0FkZCB1c2Vy JywgYDxkaXYgY2xhc3M9ImdyaWQgZzIiPjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+RW1wbG95ZWUgSUQ8L2xhYmVsPjxpbnB1 dCBjbGFzcz0iaW5wIiBuYW1lPSJFbXBJZCIgdmFsdWU9IiR7ZXNjKHUuRW1wSWR8fCcnKX0iIHJlcXVpcmVkPjwvZGl2PjxkaXYg Y2xhc3M9ImZpZWxkIj48bGFiZWw+RnVsbCBuYW1lPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iTmFtZSIgdmFsdWU9 IiR7ZXNjKHUuTmFtZXx8JycpfSIgcmVxdWlyZWQ+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5FbWFpbCAoZm9yIEdv b2dsZSBzaWduLWluICYgYWxlcnRzKTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9IkVtYWlsIiB0eXBlPSJlbWFpbCIg dmFsdWU9IiR7ZXNjKHUuRW1haWx8fCcnKX0iPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+Um9sZTwvbGFiZWw+PHNl bGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJSb2xlIj4ke3JvbGVzLm1hcChyPT5vcHQocixyb2xlTihyKSx1LlJvbGV8fCdFTVBMT1lF RScpKS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlNpdGU8L2xhYmVsPjxzZWxlY3Qg Y2xhc3M9ImlucCIgbmFtZT0iU2l0ZUlkIj4ke3NlbFNpdGVzKHUuU2l0ZUlkfHxTRy51c2VyLlNpdGVJZCl9PC9zZWxlY3Q+PC9k aXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5EZXBhcnRtZW50PC9sYWJlbD48c2VsZWN0IGNsYXNzPSJpbnAiIG5hbWU9IkRl cHRJZCI+JHtzZWxEZXB0cyh1LkRlcHRJZCx1LlNpdGVJZHx8U0cudXNlci5TaXRlSWQpfTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xh c3M9ImZpZWxkIj48bGFiZWw+Q2F0ZWdvcnk8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0iQ2F0ZWdvcnkiPiR7WydF bXBsb3llZScsJ1N1cGVydmlzb3InLCdNYW5hZ2VyJywnQ29udHJhY3RvcicsJ1Zpc2l0b3InXS5tYXAoYz0+b3B0KGMsYyx1LkNh dGVnb3J5fHwnRW1wbG95ZWUnKSkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5TdGF0 dXM8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0iQWN0aXZlIj4ke29wdCgnWScsJ0FjdGl2ZScsdS5BY3RpdmV8fCdZ Jyl9JHtvcHQoJ04nLCdEaXNhYmxlZCcsdS5BY3RpdmUpfTwvc2VsZWN0PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48 bGFiZWw+JHt1LklkPydSZXNldCBQSU4gKGxlYXZlIGJsYW5rIHRvIGtlZXApJzonSW5pdGlhbCBQSU4nfTwvbGFiZWw+PGlucHV0 IGNsYXNzPSJpbnAiIG5hbWU9IlBpbiIgaW5wdXRtb2RlPSJudW1lcmljIiBwbGFjZWhvbGRlcj0iNOKAkzggZGlnaXRzIj48ZGl2 IGNsYXNzPSJoaW50Ij5QSU5zIGFyZSBzdG9yZWQgYXMgc2FsdGVkIFNIQS0yNTYgaGFzaGVzLjwvZGl2PjwvZGl2PmAsIHtvbk9w ZW46Zj0+bGlua1NpdGVEZXB0KGYsJ1NpdGVJZCcsJ0RlcHRJZCcpLCBvblN1Ym1pdDogYXN5bmMgZD0+eyBkLklkPXUuSWR8fCcn OyBhd2FpdCBjYWxsKCdzYXZlVXNlcicsZCk7IHRvYXN0KCdVc2VyIHNhdmVkJywnb2snKTsgY29uc3QgYj1hd2FpdCBjYWxsKCdi b290c3RyYXAnKTsgU0cuTC51c2Vycz1iLnVzZXJzOyByZW5kZXIoKTsgfX0pOyB9CmZ1bmN0aW9uIGVkaXRSb2xlKHJvbGUpeyBj b25zdCByPXdpbmRvdy5fYWRtLnJvbGVzLmZpbmQoeD0+eC5Sb2xlPT09cm9sZSksIGhhdmU9ci5QZXJtaXNzaW9ucy5zcGxpdCgn LCcpLm1hcChzPT5zLnRyaW0oKSk7IG1vZGFsKCdQZXJtaXNzaW9ucyDigJQgJytyb2xlTihyb2xlKSwgYCR7aGF2ZS5pbmNsdWRl cygnKicpPyc8ZGl2IGNsYXNzPSJiYW5uZXIgd2FybiI+JytpYygnY3Jvd24nKSsnPHNwYW4+VGhpcyByb2xlIGhhcyBmdWxsIGFj Y2VzcyAoKikuPC9zcGFuPjwvZGl2Pic6Jyd9PGRpdiBjbGFzcz0iZ3JpZCBnMiIgc3R5bGU9ImdhcDo0cHggMTRweCI+JHt3aW5k b3cuX2FkbS5hbGxQZXJtcy5tYXAocD0+YDxsYWJlbCBjbGFzcz0icm93IHNtYWxsIG1vbm8iPjxpbnB1dCB0eXBlPSJjaGVja2Jv eCIgbmFtZT0icGVybSIgZGF0YS1tdWx0aT0iMSIgdmFsdWU9IiR7cH0iICR7aGF2ZS5pbmNsdWRlcyhwKXx8aGF2ZS5pbmNsdWRl cygnKicpPydjaGVja2VkJzonJ30+ICR7cH08L2xhYmVsPmApLmpvaW4oJycpfTwvZGl2PmAsIHt3aWRlOnRydWUsIG9uU3VibWl0 OiBhc3luYyBkPT57IGF3YWl0IGNhbGwoJ3NhdmVSb2xlJyx7Um9sZTpyb2xlLFBlcm1pc3Npb25zOmhhdmUuaW5jbHVkZXMoJyon KT8nKic6KGQucGVybXx8W10pLmpvaW4oJywnKX0pOyB0b2FzdCgnUGVybWlzc2lvbnMgdXBkYXRlZCcsJ29rJyk7IHJlbmRlcigp OyB9fSk7IH0KZnVuY3Rpb24gYWRkU2l0ZSgpeyBtb2RhbCgnQWRkIHNpdGUnLCBgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5O YW1lPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iTmFtZSIgcmVxdWlyZWQ+PC9kaXY+PGRpdiBjbGFzcz0iZ3JpZCBn MiI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5SZWdpb248L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1lPSJSZWdpb24i PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+QnVzaW5lc3MgdW5pdDwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5h bWU9IkJ1c2luZXNzVW5pdCI+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Db3VudHJ5PC9sYWJlbD48aW5wdXQgY2xh c3M9ImlucCIgbmFtZT0iQ291bnRyeSIgdmFsdWU9Ik5pZ2VyaWEiPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+TGF0 aXR1ZGUsIGxvbmdpdHVkZTwvbGFiZWw+PGRpdiBjbGFzcz0icm93Ij48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iTGF0IiBwbGFj ZWhvbGRlcj0iNi40NSI+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9IkxuZyIgcGxhY2Vob2xkZXI9IjMuMzkiPjwvZGl2PjwvZGl2 PjwvZGl2PmAsIHtvblN1Ym1pdDogYXN5bmMgZD0+eyBhd2FpdCBjYWxsKCdzYXZlU2l0ZScsZCk7IGNvbnN0IGI9YXdhaXQgY2Fs bCgnYm9vdHN0cmFwJyk7IFNHLkwuc2l0ZXM9Yi5zaXRlczsgdG9hc3QoJ1NpdGUgYWRkZWQnLCdvaycpOyByZW5kZXIoKTsgfX0p OyB9CmZ1bmN0aW9uIGFkZERlcHQoKXsgbW9kYWwoJ0FkZCBkZXBhcnRtZW50JywgYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+ U2l0ZTwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJTaXRlSWQiPiR7c2VsU2l0ZXMoU0cudXNlci5TaXRlSWQpfTwv c2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+TmFtZTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9 Ik5hbWUiIHJlcXVpcmVkPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+Q29kZTwvbGFiZWw+PGlucHV0IGNsYXNzPSJp bnAiIG5hbWU9IkNvZGUiPjwvZGl2PmAsIHtvblN1Ym1pdDogYXN5bmMgZD0+eyBhd2FpdCBjYWxsKCdzYXZlRGVwdCcsZCk7IGNv bnN0IGI9YXdhaXQgY2FsbCgnYm9vdHN0cmFwJyk7IFNHLkwuZGVwdHM9Yi5kZXB0czsgdG9hc3QoJ0RlcGFydG1lbnQgYWRkZWQn LCdvaycpOyByZW5kZXIoKTsgfX0pOyB9CmZ1bmN0aW9uIG5ld1RwbCgpeyBtb2RhbCgnTmV3IHRlbXBsYXRlJywgYDxkaXYgY2xh c3M9ImdyaWQgZzIiPjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+TmFtZTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIG5hbWU9 Im5hbWUiIHJlcXVpcmVkPjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+S2luZDwvbGFiZWw+PHNlbGVjdCBjbGFzcz0i aW5wIiBuYW1lPSJraW5kIj4ke29wdCgnSW5zcGVjdGlvbicpfSR7b3B0KCdBdWRpdCcpfTwvc2VsZWN0PjwvZGl2PjwvZGl2Pjxk aXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+Q2hlY2tzIChvbmUgcGVyIGxpbmUg4oCUIG9wdGlvbmFsICJTZWN0aW9uIHwgcXVlc3Rp b24iKTwvbGFiZWw+PHRleHRhcmVhIGNsYXNzPSJpbnAiIG5hbWU9InF1ZXN0aW9ucyIgc3R5bGU9Im1pbi1oZWlnaHQ6MjAwcHgi IHBsYWNlaG9sZGVyPSJFeHRlcmlvciB8IFR5cmVzIGluZmxhdGVkIGFuZCB1bmRhbWFnZWQmIzEwO0NhYiB8IFNlYXQgYmVsdCBm dW5jdGlvbmFsIj48L3RleHRhcmVhPjwvZGl2PmAsIHtvblN1Ym1pdDogYXN5bmMgZD0+eyBhd2FpdCBjYWxsKCdzYXZlVGVtcGxh dGUnLGQpOyB0b2FzdCgnVGVtcGxhdGUgY3JlYXRlZCcsJ29rJyk7IHJlbmRlcigpOyB9fSk7IH0KZnVuY3Rpb24gbmV3Q291cnNl KCl7IG1vZGFsKCdOZXcgY291cnNlJywgYDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+TmFtZTwvbGFiZWw+PGlucHV0IGNsYXNz PSJpbnAiIG5hbWU9Im5hbWUiIHJlcXVpcmVkPjwvZGl2PjxkaXYgY2xhc3M9ImdyaWQgZzMiPjxkaXYgY2xhc3M9ImZpZWxkIj48 bGFiZWw+VHlwZTwvbGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJ0eXBlIj4ke1snTWFuZGF0b3J5JywnUm9sZS1zcGVj aWZpYycsJ1NpdGUtc3BlY2lmaWMnLCdSZWZyZXNoZXInLCdJbmR1Y3Rpb24nLCdNaWNyb2xlYXJuaW5nJ10ubWFwKHQ9Pm9wdCh0 KSkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5EdXJhdGlvbjwvbGFiZWw+PGlucHV0 IGNsYXNzPSJpbnAiIG5hbWU9ImR1cmF0aW9uIiB2YWx1ZT0iMjAgbWluIj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVs PlZhbGlkaXR5IChtb250aHMpPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgdHlwZT0ibnVtYmVyIiBuYW1lPSJ2YWxpZGl0eU1v bnRocyIgdmFsdWU9IjEyIj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlBhc3MgbWFyayAlPC9sYWJlbD48aW5wdXQg Y2xhc3M9ImlucCIgdHlwZT0ibnVtYmVyIiBuYW1lPSJwYXNzTWFyayIgdmFsdWU9IjcwIj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVs ZCIgc3R5bGU9ImdyaWQtY29sdW1uOnNwYW4gMiI+PGxhYmVsPlJvbGVzICgqIG9yIGNvbW1hIGxpc3QpPC9sYWJlbD48aW5wdXQg Y2xhc3M9ImlucCIgbmFtZT0icm9sZXMiIHZhbHVlPSIqIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkRl c2NyaXB0aW9uPC9sYWJlbD48dGV4dGFyZWEgY2xhc3M9ImlucCIgbmFtZT0iZGVzY3JpcHRpb24iPjwvdGV4dGFyZWE+PC9kaXY+ PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5RdWl6IChKU09OKTwvbGFiZWw+PHRleHRhcmVhIGNsYXNzPSJpbnAgbW9ubyIgbmFt ZT0icXVlc3Rpb25zIiBzdHlsZT0ibWluLWhlaWdodDoxNTBweCI+W3sicSI6IlF1ZXN0aW9uPyIsIm9wdGlvbnMiOlsiQSIsIkIi LCJDIl0sImFuc3dlciI6MH1dPC90ZXh0YXJlYT48L2Rpdj5gLCB7d2lkZTp0cnVlLCBvblN1Ym1pdDogYXN5bmMgZD0+eyBhd2Fp dCBjYWxsKCdzYXZlQ291cnNlJyxkKTsgdG9hc3QoJ0NvdXJzZSBjcmVhdGVkJywnb2snKTsgcmVuZGVyKCk7IH19KTsgfQoKCi8q ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBT QUFmZWx5IEFJIOKAlCBjbGllbnQKICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ICovCnZhciBhaU9uID0gZiA9PiAhIShTRy5haSAmJiBTRy5haS5vbiAmJiAoIWYgfHwgKFNHLmFp LmZlYXR1cmVzIHx8IFtdKS5pbmNsdWRlcyhmKSkpOwpmdW5jdGlvbiBtZCh0ZXh0KXsgLy8gc21hbGwsIHNhZmUgTWFya2Rvd24g cmVuZGVyZXIgKGVzY2FwZSBmaXJzdCwgdGhlbiBmb3JtYXQpCiAgY29uc3QgbGluZXM9ZXNjKHRleHR8fCcnKS5zcGxpdCgnXG4n KTsgbGV0IGh0bWw9JycsIGxpc3Q9bnVsbDsKICBjb25zdCBpbmxpbmU9cz0+cy5yZXBsYWNlKC9gKFteYF0rKWAvZywnPGNvZGU+ JDE8L2NvZGU+JykucmVwbGFjZSgvXCpcKihbXipdKylcKlwqL2csJzxiPiQxPC9iPicpLnJlcGxhY2UoLyhefFtccyhdKV8oW15f XSspXyg/PVtccykuLCE/OjtdfCQpL2csJyQxPGk+JDI8L2k+JykucmVwbGFjZSgvXGIoKD86SEFafElOQ3xDQXxUUkZ8SU5TfEFV RHxPQlN8VEJUfEFMUiktXGR7NH0tXGR7NX0pXGIvZywnPGEgaHJlZj0iIyIgY2xhc3M9Im1vbm8iIG9uY2xpY2s9ImV2ZW50LnBy ZXZlbnREZWZhdWx0KCk7b3BlblJlZihcJyQxXCcpIj4kMTwvYT4nKTsKICBjb25zdCBjbG9zZT0oKT0+eyBpZihsaXN0KXsgaHRt bCs9JzwvJytsaXN0Kyc+JzsgbGlzdD1udWxsOyB9IH07CiAgbGluZXMuZm9yRWFjaChsPT57IGNvbnN0IHQ9bC50cmltKCk7IGxl dCBtOwogICAgaWYoIXQpeyBjbG9zZSgpOyByZXR1cm47IH0KICAgIGlmKChtPXQubWF0Y2goL14jezEsNH1ccysoLiopJC8pKSl7 IGNsb3NlKCk7IGh0bWwrPSc8ZGl2IGNsYXNzPSJtZC1oIj4nK2lubGluZShtWzFdKSsnPC9kaXY+JzsgcmV0dXJuOyB9CiAgICBp ZigobT10Lm1hdGNoKC9eWy0q4oCiXVxzKyguKikkLykpKXsgaWYobGlzdCE9PSd1bCcpeyBjbG9zZSgpOyBodG1sKz0nPHVsPic7 IGxpc3Q9J3VsJzsgfSBodG1sKz0nPGxpPicraW5saW5lKG1bMV0pKyc8L2xpPic7IHJldHVybjsgfQogICAgaWYoKG09dC5tYXRj aCgvXlxkK1suKV1ccysoLiopJC8pKSl7IGlmKGxpc3QhPT0nb2wnKXsgY2xvc2UoKTsgaHRtbCs9JzxvbD4nOyBsaXN0PSdvbCc7 IH0gaHRtbCs9JzxsaT4nK2lubGluZShtWzFdKSsnPC9saT4nOyByZXR1cm47IH0KICAgIGNsb3NlKCk7IGh0bWwrPSc8cD4nK2lu bGluZSh0KSsnPC9wPic7IH0pOwogIGNsb3NlKCk7IHJldHVybiAnPGRpdiBjbGFzcz0ibWQiPicraHRtbCsnPC9kaXY+JzsKfQpm dW5jdGlvbiBvcGVuUmVmKGlkKXsgY29uc3QgcD1pZC5zcGxpdCgnLScpWzBdOyBjb25zdCBtPXtIQVo6J2hhemFyZHMvJyxJTkM6 J2luY2lkZW50cy8nLENBOidhY3Rpb25zLycsVFJGOid0cmFmZmljL2Nhc2UvJyxJTlM6J2luc3BlY3Rpb25zLycsQVVEOidhdWRp dHMvJyxUQlQ6J3Rvb2xib3gvJyxPQlM6J29ic2VydmF0aW9ucycsQUxSOidhbGVydHMnfTsgY2xvc2VEcmF3ZXIoKTsgcXNhKCcu b3YnKS5mb3JFYWNoKG89Pm8ucmVtb3ZlKCkpOyBnbyhtW3BdKyhbJ09CUycsJ0FMUiddLmluY2x1ZGVzKHApPycnOmlkKSk7IH0K ZnVuY3Rpb24gYWlNZXRhKHIpeyByZXR1cm4gYDxkaXYgY2xhc3M9ImFpLW1ldGEiPiR7aWMoJ3NwYXJrbGVzJywnc20nKX0gJHtl c2Moci5tb2RlbCl9IMK3ICR7ZXNjKHIucHJvdmlkZXIpfSR7ci5tcz9gIMK3ICR7KHIubXMvMTAwMCkudG9GaXhlZCgxKX1zYDon J30ke3IuZmFsbGJhY2s/JyDCtyA8Yj5mYWxsYmFjayBtb2RlbCB1c2VkPC9iPic6Jyd9PC9kaXY+JHtyLmRlbW8/YDxkaXYgY2xh c3M9ImJhbm5lciB3YXJuIiBzdHlsZT0ibWFyZ2luOjhweCAwIDAiPiR7aWMoJ2ZsYXNrLWNvbmljYWwnKX08c3Bhbj5UaGlzIGNh bWUgZnJvbSB0aGUgb2ZmbGluZSA8Yj5kZW1vIG1vZGVsPC9iPiwgbm90IGEgcmVhbCBBSS4gWW91ciBwbGF0Zm9ybSBvd25lciBj YW4gY29ubmVjdCBhIHJlYWwgbW9kZWwuPC9zcGFuPjwvZGl2PmA6Jyd9YDsgfQp2YXIgQUlfRElTQ0xBSU1FUiA9IGA8ZGl2IGNs YXNzPSJkaXNjbGFpbWVyIj4keyc8aSBkYXRhLWx1Y2lkZT0ic2hpZWxkLWNoZWNrIiBjbGFzcz0iaWMgc20iPjwvaT4nfTxzcGFu PkFJIGFuc3dlcnMgYXJlIDxiPnJlY29tbWVuZGF0aW9uczwvYj4gZm9yIHBlb3BsZSB0byByZXZpZXcuIFRoZXkgbmV2ZXIgY2hh bmdlIHJlY29yZHMgb3IgbWFrZSBkaXNjaXBsaW5hcnkgZGVjaXNpb25zLiBDaGVjayB0aGUgZmFjdHMgYmVmb3JlIGFjdGluZy48 L3NwYW4+PC9kaXY+YDsKZnVuY3Rpb24gYWlCdXN5KGVsLCBsYWJlbCl7IGVsLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iYWktYnVz eSI+PHNwYW4gY2xhc3M9ImRvdHMiPjxpPjwvaT48aT48L2k+PGk+PC9pPjwvc3Bhbj4gJHtlc2MobGFiZWx8fCdUaGlua2luZ+KA picpfTwvZGl2PmA7IH0KCi8qIC0tLS0tLS0tLS0gQXNrIFNBQWZlbHkgQUkgLS0tLS0tLS0tLSAqLwp2YXIgQUlfUFJPTVBUUyA9 IFsnU2hvdyBtZSB0aGUgaGlnaGVzdC1yaXNrIGhhemFyZHMgYXQgTGFnb3MgVGVybWluYWwuJywnV2hpY2ggZGVwYXJ0bWVudHMg aGF2ZSB0aGUgbW9zdCBvdmVyZHVlIGNvcnJlY3RpdmUgYWN0aW9ucz8nLCdXaGF0IGFyZSB0aGUgcmVjdXJyaW5nIHRyYWZmaWMg dmlvbGF0aW9ucyB0aGlzIHF1YXJ0ZXI/JywnU3VtbWFyaXNlIGxhc3QgbW9udGhcJ3MgaW5jaWRlbnRzLicsJ1doaWNoIHRyYWlu aW5nIGNvdXJzZXMgYXJlIGV4cGlyaW5nIHNvb24/JywnV2hhdCBzaG91bGQgd2UgZm9jdXMgb24gaW4gbmV4dCB3ZWVrXCdzIHRv b2xib3ggdGFsa3M/J107ClZJRVdTLmFzayA9ICgpID0+IHsgU0cuY2hhdD1TRy5jaGF0fHxbXTsKICBpZighYWlPbignYXNrJykp eyBtYWluKGAke3BhZ2VIKCdBc2sgU0FBZmVseSBBSScsJ0FzayBxdWVzdGlvbnMgYWJvdXQgeW91ciBzYWZldHkgZGF0YSBpbiBw bGFpbiBFbmdsaXNoLicpfTxkaXYgY2xhc3M9ImNhcmQiPiR7ZW1wdHkoJ0FJIGlzIG5vdCBhdmFpbGFibGUgeWV0JywgKFNHLmFp JiZTRy5haS5yZWFzb24pfHwnWW91ciBhZG1pbmlzdHJhdG9yIGhhcyBub3QgZW5hYmxlZCBhbiBBSSBtb2RlbC4nLCdzcGFya2xl cycpfTwvZGl2PmApOyByZXR1cm47IH0KICBtYWluKGAke3BhZ2VIKCdBc2sgU0FBZmVseSBBSScsJ0FzayBxdWVzdGlvbnMgYWJv dXQgeW91ciBzYWZldHkgZGF0YSBpbiBwbGFpbiBFbmdsaXNoLiBBbnN3ZXJzIHVzZSBvbmx5IGRhdGEgeW91IGFyZSBhbGxvd2Vk IHRvIHNlZS4nLCBgPHNwYW4gY2xhc3M9ImNoaXAgYy1ncmF5Ij4ke2ljKCdjcHUnKX0ke2VzYyhTRy5haS5tb2RlbHx8JycpfTwv c3Bhbj48YnV0dG9uIGNsYXNzPSJidG4iIG9uY2xpY2s9IlNHLmNoYXQ9W107cmVuZGVyKCkiPiR7aWMoJ3JvdGF0ZS1jY3cnLCdz bScpfSBOZXcgY2hhdDwvYnV0dG9uPmApfQogIDxkaXYgY2xhc3M9ImNoYXQgY2FyZCI+PGRpdiBjbGFzcz0iY2hhdC1sb2ciIGlk PSJjaGF0TG9nIj4ke1NHLmNoYXQubGVuZ3RoP1NHLmNoYXQubWFwKGNoYXRNc2cpLmpvaW4oJycpOmA8ZGl2IGNsYXNzPSJjaGF0 LWVtcHR5Ij48ZGl2IGNsYXNzPSJlbSBhaSI+JHtpYygnc3BhcmtsZXMnLCdsZycpfTwvZGl2PjxoMz5XaGF0IHdvdWxkIHlvdSBs aWtlIHRvIGtub3c/PC9oMz48cCBjbGFzcz0ibXV0ZWQgc21hbGwiPlRyeSBvbmUgb2YgdGhlc2U6PC9wPjxkaXYgY2xhc3M9InJv dyB3IiBzdHlsZT0ianVzdGlmeS1jb250ZW50OmNlbnRlciI+JHtBSV9QUk9NUFRTLm1hcChwPT5gPGJ1dHRvbiBjbGFzcz0iY2hp cCBjLWdyYXkgc3VnZy1xIiBvbmNsaWNrPSJhc2tBSSgke2VzYyhKU09OLnN0cmluZ2lmeShwKSl9KSI+JHtlc2MocCl9PC9idXR0 b24+YCkuam9pbignJyl9PC9kaXY+PC9kaXY+YH08L2Rpdj4KICA8Zm9ybSBjbGFzcz0iY2hhdC1pbiIgaWQ9ImNoYXRGb3JtIj48 dGV4dGFyZWEgaWQ9ImNoYXRRIiBjbGFzcz0iaW5wIiByb3dzPSIyIiBwbGFjZWhvbGRlcj0iQXNrIGFib3V0IGhhemFyZHMsIGlu Y2lkZW50cywgYWN0aW9ucywgdHJhaW5pbmcsIHRyYWZmaWPigKYgKEVudGVyIHRvIHNlbmQsIFNoaWZ0K0VudGVyIGZvciBhIG5l dyBsaW5lKSIgYXJpYS1sYWJlbD0iWW91ciBxdWVzdGlvbiI+PC90ZXh0YXJlYT4ke21pY0J0bignY2hhdFEnKX08YnV0dG9uIGNs YXNzPSJidG4gcHJpIiB0eXBlPSJzdWJtaXQiPiR7aWMoJ3NlbmQnLCdzbScpfSBBc2s8L2J1dHRvbj48L2Zvcm0+PC9kaXY+CiAg PGRpdiBjbGFzcz0ibXQiPiR7QUlfRElTQ0xBSU1FUn08L2Rpdj5gKTsKICBjb25zdCBmPXFzKCcjY2hhdEZvcm0nKSwgcT1xcygn I2NoYXRRJyk7IGYub25zdWJtaXQ9ZT0+eyBlLnByZXZlbnREZWZhdWx0KCk7IGFza0FJKHEudmFsdWUpOyB9OyBxLm9ua2V5ZG93 bj1lPT57IGlmKGUua2V5PT09J0VudGVyJyYmIWUuc2hpZnRLZXkpeyBlLnByZXZlbnREZWZhdWx0KCk7IGFza0FJKHEudmFsdWUp OyB9IH07IHEuZm9jdXMoKTsgc2Nyb2xsQ2hhdCgpOyB9OwpmdW5jdGlvbiBjaGF0TXNnKG0peyByZXR1cm4gbS5yb2xlPT09J3Vz ZXInP2A8ZGl2IGNsYXNzPSJtc2cgbWUiPjxkaXYgY2xhc3M9ImJ1YiI+JHtlc2MobS50ZXh0KX08L2Rpdj48L2Rpdj5gOmA8ZGl2 IGNsYXNzPSJtc2cgYWkiPjxzcGFuIGNsYXNzPSJhdiBzbSBhaS1hdiI+JHtpYygnc3BhcmtsZXMnLCdzbScpfTwvc3Bhbj48ZGl2 IGNsYXNzPSJidWIiPiR7bS5lcnJvcj9gPGRpdiBzdHlsZT0iY29sb3I6dmFyKC0tcmVkKSI+JHtpYygnb2N0YWdvbi1hbGVydCcs J3NtJyl9ICR7ZXNjKG0udGV4dCl9PC9kaXY+YDptZChtLnRleHQpK2FpTWV0YShtLm1ldGF8fHt9KX0ke20uZXJyb3I/Jyc6YDxk aXYgY2xhc3M9InJvdyIgc3R5bGU9ImdhcDo2cHg7bWFyZ2luLXRvcDo4cHgiPjxidXR0b24gY2xhc3M9ImJ0biBzbSBnaG9zdCIg b25jbGljaz0ibmF2aWdhdG9yLmNsaXBib2FyZCYmbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoU0cuY2hhdFske1NHLmNo YXQuaW5kZXhPZihtKX1dLnRleHQpLnRoZW4oKCk9PnRvYXN0KCdDb3BpZWQnLCdvaycpKSI+JHtpYygnY29weScsJ3NtJyl9IENv cHk8L2J1dHRvbj48L2Rpdj5gfTwvZGl2PjwvZGl2PmA7IH0KZnVuY3Rpb24gc2Nyb2xsQ2hhdCgpeyBjb25zdCBsPXFzKCcjY2hh dExvZycpOyBpZihsKSBsLnNjcm9sbFRvcD1sLnNjcm9sbEhlaWdodDsgfQphc3luYyBmdW5jdGlvbiBhc2tBSSh0ZXh0KXsgdGV4 dD1TdHJpbmcodGV4dHx8JycpLnRyaW0oKTsgaWYodGV4dC5sZW5ndGg8M3x8U0cuY2hhdEJ1c3kpIHJldHVybjsgU0cuY2hhdEJ1 c3k9dHJ1ZTsgY29uc3QgaGlzdD1TRy5jaGF0LmZpbHRlcihtPT4hbS5lcnJvcikuc2xpY2UoLTYpLm1hcChtPT4oe3JvbGU6bS5y b2xlLHRleHQ6bS50ZXh0fSkpOwogIFNHLmNoYXQucHVzaCh7cm9sZTondXNlcicsdGV4dH0pOyBjb25zdCBsb2c9cXMoJyNjaGF0 TG9nJyk7IGlmKGxvZyl7IGxvZy5pbm5lckhUTUw9U0cuY2hhdC5tYXAoY2hhdE1zZykuam9pbignJykrYDxkaXYgY2xhc3M9Im1z ZyBhaSIgaWQ9ImFpUGVuZGluZyI+PHNwYW4gY2xhc3M9ImF2IHNtIGFpLWF2Ij4ke2ljKCdzcGFya2xlcycsJ3NtJyl9PC9zcGFu PjxkaXYgY2xhc3M9ImJ1YiI+PC9kaXY+PC9kaXY+YDsgYWlCdXN5KHFzKCcjYWlQZW5kaW5nIC5idWInKSwnUmVhZGluZyB5b3Vy IHNhZmV0eSBkYXRh4oCmJyk7IGljb25zKCk7IHNjcm9sbENoYXQoKTsgfSBjb25zdCBxPXFzKCcjY2hhdFEnKTsgaWYocSkgcS52 YWx1ZT0nJzsKICB0cnl7IGNvbnN0IHI9YXdhaXQgY2FsbCgnYWlBc2snLHtxdWVzdGlvbjp0ZXh0LGhpc3Rvcnk6aGlzdH0pOyBT Ry5jaGF0LnB1c2goe3JvbGU6J2FpJyx0ZXh0OnIudGV4dCxtZXRhOnJ9KTsgfWNhdGNoKGUpeyBTRy5jaGF0LnB1c2goe3JvbGU6 J2FpJyx0ZXh0OmUubWVzc2FnZSxlcnJvcjp0cnVlfSk7IH0KICBTRy5jaGF0QnVzeT1mYWxzZTsgaWYoU0cucm91dGU9PT0nYXNr Jyl7IGNvbnN0IGw9cXMoJyNjaGF0TG9nJyk7IGlmKGwpeyBsLmlubmVySFRNTD1TRy5jaGF0Lm1hcChjaGF0TXNnKS5qb2luKCcn KTsgaWNvbnMoKTsgc2Nyb2xsQ2hhdCgpOyB9IH0gfQoKLyogLS0tLS0tLS0tLSBJbmNpZGVudCBBSSBhc3Npc3QgLS0tLS0tLS0t LSAqLwpmdW5jdGlvbiBhaUluY2lkZW50KGlkLCBlZGl0YWJsZSl7CiAgZHJhd2VyKCdBSSBhc3Npc3Qg4oCUICcrZXNjKGlkKSwg YDxwIGNsYXNzPSJzbWFsbCBtdXRlZCIgc3R5bGU9Im1hcmdpbi10b3A6MCI+UGljayB3aGF0IHlvdSBuZWVkLiBOb3RoaW5nIGlz IHNhdmVkIHVudGlsIHlvdSBjaG9vc2UgdG8gdXNlIGl0LjwvcD48ZGl2IGNsYXNzPSJyb3cgdyBtYiI+JHthaU9uKCdpbmNpZGVu dFN1bW1hcnknKT9gPGJ1dHRvbiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJhaUluYygnJHtpZH0nLCdzdW1tYXJ5Jywke2VkaXRhYmxl fSkiPiR7aWMoJ2ZpbGUtdGV4dCcsJ3NtJyl9IFN1bW1hcmlzZTwvYnV0dG9uPmA6Jyd9JHthaU9uKCdyb290Q2F1c2UnKT9gPGJ1 dHRvbiBjbGFzcz0iYnRuIiBvbmNsaWNrPSJhaUluYygnJHtpZH0nLCdyb290Y2F1c2UnLCR7ZWRpdGFibGV9KSI+JHtpYygnZ2l0 LWJyYW5jaCcsJ3NtJyl9IFN1Z2dlc3QgNSBXaHlzICYgcm9vdCBjYXVzZTwvYnV0dG9uPmA6Jyd9JHthaU9uKCdhY3Rpb25zJyk/ YDxidXR0b24gY2xhc3M9ImJ0biIgb25jbGljaz0iYWlJbmMoJyR7aWR9JywnYWN0aW9ucycsJHtlZGl0YWJsZX0pIj4ke2ljKCds aXN0LWNoZWNrcycsJ3NtJyl9IFN1Z2dlc3QgY29ycmVjdGl2ZSBhY3Rpb25zPC9idXR0b24+YDonJ308L2Rpdj48ZGl2IGlkPSJh aU91dCI+PC9kaXY+PGRpdiBjbGFzcz0ibXQiPiR7QUlfRElTQ0xBSU1FUn08L2Rpdj5gKTsgfQphc3luYyBmdW5jdGlvbiBhaUlu YyhpZCwgbW9kZSwgZWRpdGFibGUpeyBjb25zdCBvdXQ9cXMoJyNhaU91dCcpOyBhaUJ1c3kob3V0LCBtb2RlPT09J3N1bW1hcnkn PydTdW1tYXJpc2luZyB0aGUgaW5jaWRlbnTigKYnOm1vZGU9PT0ncm9vdGNhdXNlJz8nV29ya2luZyB0aHJvdWdoIHRoZSA1IFdo eXPigKYnOidEcmFmdGluZyBjb3JyZWN0aXZlIGFjdGlvbnPigKYnKTsKICB0cnl7IGNvbnN0IHI9YXdhaXQgY2FsbCgnYWlJbmNp ZGVudCcse2lkLG1vZGV9KTsgd2luZG93Ll9haUluYz1yOyBsZXQgaD0nJzsKICAgIGlmKG1vZGU9PT0nc3VtbWFyeSd8fCFyLmpz b24pIGg9KHIubm90ZT9gPGRpdiBjbGFzcz0iYmFubmVyIHdhcm4iPiR7ZXNjKHIubm90ZSl9PC9kaXY+YDonJykrbWQoci50ZXh0 KTsKICAgIGVsc2UgaWYobW9kZT09PSdyb290Y2F1c2UnKXsgY29uc3Qgaj1yLmpzb247IGg9YDxoMyBjbGFzcz0ibWIiPlN1Z2dl c3RlZCA1IFdoeXM8L2gzPjxvbCBjbGFzcz0ic21hbGwiPiR7KGoud2h5c3x8W10pLm1hcCh3PT5gPGxpIHN0eWxlPSJtYXJnaW4t Ym90dG9tOjZweCI+JHtlc2Modyl9PC9saT5gKS5qb2luKCcnKX08L29sPjxkbCBjbGFzcz0iZGwgbXQiPjxkdD5MaWtlbHkgcm9v dCBjYXVzZTwvZHQ+PGRkPjxiPiR7ZXNjKGoucm9vdENhdXNlKX08L2I+PC9kZD48ZHQ+Q29udHJpYnV0aW5nIGZhY3RvcnM8L2R0 PjxkZD4ke2VzYyhqLmZhY3RvcnMpfTwvZGQ+PGR0PlZlcmlmeSBiZWZvcmUgYWNjZXB0aW5nPC9kdD48ZGQ+JHtlc2Moai5ub3Rl cyl9PC9kZD48L2RsPiR7ZWRpdGFibGU/YDxidXR0b24gY2xhc3M9ImJ0biBwcmkgbXQiIG9uY2xpY2s9InVzZVdoeXMoKSI+JHtp YygnY2xpcGJvYXJkLXBhc3RlJywnc20nKX0gQ29weSBpbnRvIHRoZSBpbnZlc3RpZ2F0aW9uIGZvcm08L2J1dHRvbj48ZGl2IGNs YXNzPSJ0aW55IG11dGVkIiBzdHlsZT0ibWFyZ2luLXRvcDo2cHgiPllvdSBjYW4gZWRpdCBldmVyeXRoaW5nIGJlZm9yZSBzYXZp bmcuPC9kaXY+YDonJ31gOyB9CiAgICBlbHNlIHsgaD1gPGgzIGNsYXNzPSJtYiI+U3VnZ2VzdGVkIGFjdGlvbnM8L2gzPiR7ci5q c29uLmFjdGlvbnMubWFwKChhLGspPT5gPGRpdiBjbGFzcz0iY2FyZCBwIG1iIiBzdHlsZT0icGFkZGluZzoxMnB4Ij48ZGl2IGNs YXNzPSJyb3cgYmV0d2VlbiI+PGIgY2xhc3M9InNtYWxsIj4ke2VzYyhhLnRpdGxlKX08L2I+PHNwYW4gY2xhc3M9ImNoaXAgJHth LnByaW9yaXR5PT09J0hpZ2gnfHxhLnByaW9yaXR5PT09J0NyaXRpY2FsJz8nYy1vcmFuZ2UnOidjLWdyYXknfSI+JHtlc2MoYS5w cmlvcml0eSl9PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InRpbnkgbXV0ZWQiIHN0eWxlPSJtYXJnaW46NHB4IDAgOHB4Ij4ke2Vz YyhhLndoeSl9IMK3IGR1ZSBpbiAke2EuZHVlSW5EYXlzfSBkYXlzPC9kaXY+JHtjYW4oJ2FjdGlvbi5jcmVhdGUnKT9gPGJ1dHRv biBjbGFzcz0iYnRuIHNtIiBvbmNsaWNrPSJhaU1ha2VBY3Rpb24oJHtrfSkiPiR7aWMoJ3BsdXMnLCdzbScpfSBDcmVhdGUgdGhp cyBhY3Rpb248L2J1dHRvbj5gOicnfTwvZGl2PmApLmpvaW4oJycpfHwnPHAgY2xhc3M9Im11dGVkIj5ObyBzdWdnZXN0aW9ucy48 L3A+J31gOyB9CiAgICBvdXQuaW5uZXJIVE1MPWgrYWlNZXRhKHIpOyBpY29ucygpOyB9Y2F0Y2goZSl7IG91dC5pbm5lckhUTUw9 YDxkaXYgY2xhc3M9ImJhbm5lciBjcml0Ij4ke2ljKCdvY3RhZ29uLWFsZXJ0Jyl9PHNwYW4+JHtlc2MoZS5tZXNzYWdlKX08L3Nw YW4+PC9kaXY+YDsgaWNvbnMoKTsgfSB9CmZ1bmN0aW9uIHVzZVdoeXMoKXsgY29uc3Qgaj0od2luZG93Ll9haUluY3x8e30pLmpz b247IGlmKCFqKSByZXR1cm47IGNsb3NlRHJhd2VyKCk7IGNvbnN0IGJ0bj1xc2EoJy50YWJzIGJ1dHRvbicpLmZpbmQoYj0+L0lu dmVzdGlnYXRpb24vLnRlc3QoYi50ZXh0Q29udGVudCkpOyBpZihidG4pIGJ0bi5jbGljaygpOwogIGNvbnN0IGY9cXMoJyNpbnZm Jyk7IGlmKCFmKSByZXR1cm4gdG9hc3QoJ1N0YXJ0IHRoZSBpbnZlc3RpZ2F0aW9uIGZpcnN0JywnZXJyJyk7IGNvbnN0IHNlbD1x cygnW25hbWU9bWV0aG9kXScsZik7IGlmKHNlbCYmc2VsLnZhbHVlIT09JzUgV2h5cycpeyBzZWwudmFsdWU9JzUgV2h5cyc7IHNl bC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnY2hhbmdlJykpOyB9CiAgKGoud2h5c3x8W10pLmZvckVhY2goKHcsayk9PnsgY29u c3QgZWw9cXMoJ1tuYW1lPXdoeScraysnXScsZik7IGlmKGVsKSBlbC52YWx1ZT13OyB9KTsgaWYocXMoJ1tuYW1lPXJvb3RDYXVz ZV0nLGYpKSBxcygnW25hbWU9cm9vdENhdXNlXScsZikudmFsdWU9ai5yb290Q2F1c2V8fCcnOyBpZihxcygnW25hbWU9ZmFjdG9y c10nLGYpKSBxcygnW25hbWU9ZmFjdG9yc10nLGYpLnZhbHVlPWouZmFjdG9yc3x8Jyc7CiAgdG9hc3QoJ1N1Z2dlc3Rpb25zIGNv cGllZCcsJ29rJywnUmV2aWV3IGFuZCBlZGl0IHRoZW0sIHRoZW4gY2xpY2sgU2F2ZSBpbnZlc3RpZ2F0aW9uLicpOyB9CmZ1bmN0 aW9uIGFpTWFrZUFjdGlvbihrKXsgY29uc3Qgcj13aW5kb3cuX2FpSW5jLCBhPXIuanNvbi5hY3Rpb25zW2tdLCBpPXdpbmRvdy5f aW5jQ3R4fHx7fTsgbmV3QWN0aW9uKCdJTkNJREVOVCcsIGkuaWQsIGkuc2l0ZUlkLCBpLmRlcHRJZCwge3RpdGxlOmEudGl0bGUs IGRlc2NyaXB0aW9uOmEud2h5LCBwcmlvcml0eTphLnByaW9yaXR5LCBkdWVEYXRlOmFkZEQoYS5kdWVJbkRheXMpfSk7IH0KCi8q IC0tLS0tLS0tLS0gSGF6YXJkIHRyaWFnZSBhc3Npc3QgLS0tLS0tLS0tLSAqLwphc3luYyBmdW5jdGlvbiBhaVRyaWFnZShpZCwg YnRuKXsgY29uc3QgZj1idG4uY2xvc2VzdCgnZm9ybScpOyBjb25zdCBvbGQ9YnRuLmlubmVySFRNTDsgYnRuLmRpc2FibGVkPXRy dWU7IGJ0bi5pbm5lckhUTUw9aWMoJ2xvYWRlcicsJ3NtJykrJyBBc2tpbmcgQUnigKYnOyBpY29ucygpOwogIHRyeXsgY29uc3Qg cj1hd2FpdCBjYWxsKCdhaUhhemFyZCcse2lkfSksIGo9ci5qc29uOyBjb25zdCBzZXQ9KG4sdik9PnsgY29uc3QgZWw9cXMoYFtu YW1lPSR7bn1dYCxmKTsgaWYoZWwmJnYhPT0nJyYmdiE9bnVsbCl7IGVsLnZhbHVlPXY7IGVsLmRpc3BhdGNoRXZlbnQobmV3IEV2 ZW50KCdjaGFuZ2UnKSk7IH0gfTsKICAgIHNldCgnbGlrZWxpaG9vZCcsai5saWtlbGlob29kKTsgc2V0KCdzZXZlcml0eScsai5z ZXZlcml0eSk7IGlmKGouY2F0ZWdvcnkpIHNldCgnY2F0ZWdvcnknLGouY2F0ZWdvcnkpOyBzZXQoJ2FjdGlvblRpdGxlJyxqLmFj dGlvblRpdGxlKTsgc2V0KCdhY3Rpb25EZXNjcmlwdGlvbicsai5hY3Rpb25EZXNjcmlwdGlvbik7IHNldCgnZHVlRGF0ZScsYWRk RChqLmR1ZUluRGF5cykpOwogICAgcXMoJyNhaVRyaWFnZU5vdGUnLGYpLmlubmVySFRNTD1gPGRpdiBjbGFzcz0iYmFubmVyIGlu Zm8iIHN0eWxlPSJtYXJnaW46MCAwIDE0cHgiPiR7aWMoJ3NwYXJrbGVzJyl9PHNwYW4+PGI+QUkgc3VnZ2VzdGlvbiBmaWxsZWQg aW4g4oCUIHBsZWFzZSByZXZpZXcuPC9iPiAke2VzYyhqLnJhdGlvbmFsZSl9IDxzcGFuIGNsYXNzPSJ0aW55IG11dGVkIj4oJHtl c2Moci5tb2RlbCl9KTwvc3Bhbj48L3NwYW4+PC9kaXY+YDsgaWNvbnMoKTsKICB9Y2F0Y2goZSl7IHRvYXN0KGUubWVzc2FnZSwn ZXJyJyk7IH0gZmluYWxseXsgYnRuLmRpc2FibGVkPWZhbHNlOyBidG4uaW5uZXJIVE1MPW9sZDsgaWNvbnMoKTsgfSB9CgovKiAt LS0tLS0tLS0tIEV4ZWN1dGl2ZSBicmllZmluZyAtLS0tLS0tLS0tICovCmFzeW5jIGZ1bmN0aW9uIGFpQnJpZWZpbmcoKXsgY29u c3QgYT1TRy5hbnx8e307IG1vZGFsKCdBSSBleGVjdXRpdmUgYnJpZWZpbmcnLCBgPGRpdiBpZD0iYWlCcmllZiI+PC9kaXY+PGRp diBjbGFzcz0ibXQiPiR7QUlfRElTQ0xBSU1FUn08L2Rpdj5gLCB7d2lkZTp0cnVlLCBzdWJtaXQ6J0Nsb3NlJywgY2FuY2VsOmZh bHNlLCBleHRyYTpgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4iIG9uY2xpY2s9InByaW50UmVwb3J0KCdBSSBFeGVj dXRpdmUgU2FmZXR5IEJyaWVmaW5nJywgcXMoJyNhaUJyaWVmJykuaW5uZXJIVE1MKSI+JHtpYygncHJpbnRlcicsJ3NtJyl9IFBy aW50PC9idXR0b24+YH0pOwogIGFpQnVzeShxcygnI2FpQnJpZWYnKSwnUmVhZGluZyB0aGUgZGFzaGJvYXJkIGFuZCB3cml0aW5n IHlvdXIgYnJpZWZpbmfigKYnKTsgaWNvbnMoKTsKICB0cnl7IGNvbnN0IHI9YXdhaXQgY2FsbCgnYWlCcmllZmluZycse2Zyb206 YS5mcm9tLHRvOmEudG8sc2l0ZUlkOmEuc2l0ZUlkLGRlcHRJZDphLmRlcHRJZH0pOyBxcygnI2FpQnJpZWYnKS5pbm5lckhUTUw9 bWQoci50ZXh0KSthaU1ldGEocik7IGljb25zKCk7IH1jYXRjaChlKXsgcXMoJyNhaUJyaWVmJykuaW5uZXJIVE1MPWA8ZGl2IGNs YXNzPSJiYW5uZXIgY3JpdCI+JHtlc2MoZS5tZXNzYWdlKX08L2Rpdj5gOyB9IH0KCi8qIC0tLS0tLS0tLS0gT3JnYW5pc2F0aW9u IEFJIHNldHRpbmdzIChBZG1pbiDihpIgQUkgbW9kZWxzKSAtLS0tLS0tLS0tICovCmFzeW5jIGZ1bmN0aW9uIG9yZ0FJUGFuZWwo KXsgY29uc3QgYm94PXFzKCcjYWlCb3gnKTsgdHJ5eyBjb25zdCBkPWF3YWl0IGNhbGwoJ2dldEFJU2V0dGluZ3MnKTsgY29uc3Qg YT1kLmFpfHx7fSwgZm09YS5mZWF0dXJlTW9kZWxzfHx7fTsKICBjb25zdCBvcHRzTT0oc2VsLGJsYW5rKT0+KGJsYW5rP29wdCgn JyxibGFuayxzZWwpOicnKStkLm1vZGVscy5tYXAobT0+b3B0KG0uSWQsYCR7bS5OYW1lfSDigJQgJHttLlByb3ZpZGVyfSR7bS5U aWVyPycgwrcgJyttLlRpZXI6Jyd9YCxzZWwpKS5qb2luKCcnKTsKICBjb25zdCBncm91cHM9e307IGQubW9kZWxzLmZvckVhY2go bT0+KGdyb3Vwc1ttLlByb3ZpZGVyXT1ncm91cHNbbS5Qcm92aWRlcl18fFtdKS5wdXNoKG0pKTsKICBib3guaW5uZXJIVE1MPSFk LnBsYXRmb3JtRW5hYmxlZD9gPGRpdiBjbGFzcz0iY2FyZCI+JHtlbXB0eSgnQUkgaXMgc3dpdGNoZWQgb2ZmIGZvciB5b3VyIG9y Z2FuaXNhdGlvbicsJ1RoZSBwbGF0Zm9ybSBvd25lciBjb250cm9scyBBSSBhY2Nlc3MgZm9yIGVhY2ggb3JnYW5pc2F0aW9uLiBD b250YWN0IHRoZW0gdG8gdHVybiBpdCBvbi4nLCdwb3dlcicpfTwvZGl2PmA6CiAgYDxkaXYgY2xhc3M9ImdyaWQgZzQgbWIiPiR7 a3BpKHtsYWJlbDonTW9kZWxzIGF2YWlsYWJsZSB0byB5b3UnLHZhbHVlOmQubW9kZWxzLmxlbmd0aCxpbnNpZ2h0OidDaG9zZW4g YnkgeW91ciBwbGF0Zm9ybSBvd25lcicsdG9uZTonYmx1ZScsaWNvbjonY3B1J30pfSR7a3BpKHtsYWJlbDonQUkgcmVxdWVzdHMg dGhpcyBtb250aCcsdmFsdWU6ZC51c2VkLGluc2lnaHQ6ZC5saW1pdD9gb2YgJHtudW0oZC5saW1pdCl9IGFsbG93ZWRgOidObyBt b250aGx5IGxpbWl0Jyx0b25lOmQubGltaXQmJmQudXNlZD49ZC5saW1pdCowLjk/J3JlZCc6J2dyZWVuJyxpY29uOidhY3Rpdml0 eSd9KX0ke2twaSh7bGFiZWw6J0FJIGZlYXR1cmVzIG9uJyx2YWx1ZTpPYmplY3Qua2V5cyhkLmZlYXR1cmVzKS5maWx0ZXIoZj0+ IShhLmZlYXR1cmVzJiZhLmZlYXR1cmVzW2ZdPT09ZmFsc2UpKS5sZW5ndGgsaW5zaWdodDonb2YgJytPYmplY3Qua2V5cyhkLmZl YXR1cmVzKS5sZW5ndGgsdG9uZTonYmx1ZScsaWNvbjonc3BhcmtsZXMnfSl9PGRpdiBjbGFzcz0iY2FyZCBrcGkgdC15ZWxsb3ci PjxkaXYgY2xhc3M9ImxhYiI+JHtpYygnc3RhcicsJ3NtJyl9RGVmYXVsdCBtb2RlbCBpbiB1c2U8L2Rpdj48ZGl2IGNsYXNzPSJ2 YWwiIHN0eWxlPSJmb250LXNpemU6MjBweDttYXJnaW46MTJweCAwIDhweCI+JHtlc2MoKGQuZWZmZWN0aXZlLmZpbmQoeD0+eC5m ZWF0dXJlPT09J2FzaycpfHx7fSkubW9kZWx8fCfigJQnKX08L2Rpdj48ZGl2IGNsYXNzPSJpbnMgdC1ibHVlIj4ke2ljKCdpbmZv Jywnc20nKX1DaGFuZ2UgaXQgYmVsb3c8L2Rpdj48L2Rpdj48L2Rpdj4KICA8Zm9ybSBpZD0iYWlGb3JtIiBjbGFzcz0iZ3JpZCBn MiI+PGRpdiBjbGFzcz0iY2FyZCBwIj48aDMgY2xhc3M9Im1iIj5XaGljaCBBSSBtb2RlbCBzaG91bGQgU0FBZmVseSB1c2U/PC9o Mz4KICAgIDxsYWJlbCBjbGFzcz0icm93IHNtYWxsIG1iIj48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImVuYWJsZWQiICR7 YS5lbmFibGVkIT09ZmFsc2U/J2NoZWNrZWQnOicnfT4gVHVybiBvbiBBSSBmZWF0dXJlcyBmb3Igb3VyIG9yZ2FuaXNhdGlvbjwv bGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkRlZmF1bHQgbW9kZWw8L2xhYmVsPjxzZWxlY3QgY2xhc3M9Imlu cCIgbmFtZT0iZGVmYXVsdE1vZGVsIj4ke29wdHNNKGEuZGVmYXVsdE1vZGVsLCdBdXRvbWF0aWMgKGZpcnN0IGF2YWlsYWJsZSkn KX08L3NlbGVjdD48ZGl2IGNsYXNzPSJoaW50Ij5Vc2VkIGZvciBldmVyeSBmZWF0dXJlIHVubGVzcyB5b3UgY2hvb3NlIGEgZGlm ZmVyZW50IG9uZSBiZWxvdy48L2Rpdj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+RmFsbGJhY2sgbW9kZWw8 L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0iZmFsbGJhY2tNb2RlbCI+JHtvcHRzTShhLmZhbGxiYWNrTW9kZWwsJ05v IGZhbGxiYWNrJyl9PC9zZWxlY3Q+PGRpdiBjbGFzcz0iaGludCI+VXNlZCBhdXRvbWF0aWNhbGx5IGlmIHRoZSBkZWZhdWx0IG1v ZGVsIGZhaWxzIG9yIGl0cyBwcm92aWRlciBpcyBkb3duLjwvZGl2PjwvZGl2PgogICAgPGgzIGNsYXNzPSJtdCBtYiI+UGVyLWZl YXR1cmUgbW9kZWwgKG9wdGlvbmFsKTwvaDM+JHtPYmplY3Qua2V5cyhkLmZlYXR1cmVzKS5tYXAoZj0+YDxkaXYgY2xhc3M9InJv dyIgc3R5bGU9ImdhcDoxMHB4O21hcmdpbi1ib3R0b206OHB4Ij48bGFiZWwgY2xhc3M9InJvdyBzbWFsbCIgc3R5bGU9IndpZHRo OjI1MHB4O2ZsZXg6bm9uZSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmZWF0XyR7Zn0iICR7IShhLmZlYXR1cmVzJiZh LmZlYXR1cmVzW2ZdPT09ZmFsc2UpPydjaGVja2VkJzonJ30+ICR7ZXNjKGQuZmVhdHVyZXNbZl0pfTwvbGFiZWw+PHNlbGVjdCBj bGFzcz0iaW5wIGdyb3ciIG5hbWU9ImZtXyR7Zn0iPiR7b3B0c00oZm1bZl0sJ1VzZSBkZWZhdWx0Jyl9PC9zZWxlY3Q+PC9kaXY+ YCkuam9pbignJyl9CiAgICA8aDMgY2xhc3M9Im10IG1iIj5Qcml2YWN5ICYgbGltaXRzPC9oMz48bGFiZWwgY2xhc3M9InJvdyBz bWFsbCBtYiI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJyZWRhY3ROYW1lcyIgJHthLnJlZGFjdE5hbWVzIT09ZmFsc2U/ J2NoZWNrZWQnOicnfT4gSGlkZSBwZW9wbGUncyBuYW1lcyBmcm9tIHRoZSBBSSAoc2VuZCByb2xlcyBhbmQgZGVwYXJ0bWVudHMg aW5zdGVhZCk8L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5NYXhpbXVtIGFuc3dlciBsZW5ndGggKHRva2Vu cyk8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiB0eXBlPSJudW1iZXIiIG5hbWU9Im1heE91dHB1dFRva2VucyIgbWluPSIyMDAi IG1heD0iODAwMCIgdmFsdWU9IiR7YS5tYXhPdXRwdXRUb2tlbnN8fDE1MDB9Ij48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InJvdyI+ PGJ1dHRvbiBjbGFzcz0iYnRuIHByaSIgdHlwZT0ic3VibWl0Ij4ke2ljKCdzYXZlJywnc20nKX0gU2F2ZSBBSSBzZXR0aW5nczwv YnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biIgdHlwZT0iYnV0dG9uIiBvbmNsaWNrPSJnbygnYXNrJykiPiR7aWMoJ3NwYXJrbGVz Jywnc20nKX0gVHJ5IEFzayBTQUFmZWx5IEFJPC9idXR0b24+PC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBj bGFzcz0iY2FyZC1oIj48aDM+TW9kZWxzIHlvdXIgcGxhdGZvcm0gb3duZXIgaGFzIG1hZGUgYXZhaWxhYmxlPC9oMz48c3BhbiBj bGFzcz0iY2hpcCBjLWdyYXkiPiR7ZC5tb2RlbHMubGVuZ3RofTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXgtaGVpZ2h0OjY0 MHB4O292ZXJmbG93OmF1dG8iPiR7T2JqZWN0LmtleXMoZ3JvdXBzKS5tYXAoZz0+YDxkaXYgY2xhc3M9InRpbnkgYiBtdXRlZCIg c3R5bGU9InBhZGRpbmc6MTJweCAxOHB4IDRweDtsZXR0ZXItc3BhY2luZzouMDhlbSI+JHtlc2MoZy50b1VwcGVyQ2FzZSgpKX08 L2Rpdj4ke2dyb3Vwc1tnXS5tYXAobT0+YDxkaXYgY2xhc3M9Imxpc3QtaSIgc3R5bGU9ImN1cnNvcjpkZWZhdWx0Ij48c3BhbiBj bGFzcz0iYXYgc20iIHN0eWxlPSJiYWNrZ3JvdW5kOmhzbCgke2h1ZShnKX0gNDAlIDM1JSkiPiR7aWMobS5kZW1vPydmbGFzay1j b25pY2FsJzonY3B1Jywnc20nKX08L3NwYW4+PGRpdiBjbGFzcz0iZ3JvdyBzbWFsbCI+PGI+JHtlc2MobS5OYW1lKX08L2I+PGRp diBjbGFzcz0idGlueSBtdXRlZCI+JHtlc2MobS5EZXNjcmlwdGlvbnx8JycpfTwvZGl2PjwvZGl2PiR7bS5UaWVyP2A8c3BhbiBj bGFzcz0iY2hpcCBjLWdyYXkiPiR7ZXNjKG0uVGllcil9PC9zcGFuPmA6Jyd9PC9kaXY+YCkuam9pbignJyl9YCkuam9pbignJyl8 fGVtcHR5KCdObyBtb2RlbHMgeWV0JywnQXNrIHlvdXIgcGxhdGZvcm0gb3duZXIgdG8gY29ubmVjdCBhIHByb3ZpZGVyLicsJ2Nw dScpfTwvZGl2PjwvZGl2PjwvZm9ybT4KICA8ZGl2IGNsYXNzPSJjYXJkIG10Ij48ZGl2IGNsYXNzPSJjYXJkLWgiPjxoMz5XaGlj aCBtb2RlbCBlYWNoIGZlYXR1cmUgd2lsbCB1c2U8L2gzPjwvZGl2PiR7ZC5lZmZlY3RpdmUubWFwKGU9PmA8ZGl2IGNsYXNzPSJs aXN0LWkiIHN0eWxlPSJjdXJzb3I6ZGVmYXVsdCI+JHtpYygnc3BhcmtsZXMnLCdzbScpfTxzcGFuIGNsYXNzPSJncm93IHNtYWxs Ij4ke2VzYyhlLmxhYmVsKX08L3NwYW4+PGIgY2xhc3M9InNtYWxsIj4ke2VzYyhlLm1vZGVsKX08L2I+PC9kaXY+YCkuam9pbign Jyl9PC9kaXY+YDsKICBhZnRlcigpOyBjb25zdCBmPXFzKCcjYWlGb3JtJyk7IGlmKGYpIGYub25zdWJtaXQ9YXN5bmMgZT0+eyBl LnByZXZlbnREZWZhdWx0KCk7IGNvbnN0IHg9Zm9ybURhdGEoZik7IGNvbnN0IHY9e2VuYWJsZWQ6ISF4LmVuYWJsZWQsIGRlZmF1 bHRNb2RlbDp4LmRlZmF1bHRNb2RlbCwgZmFsbGJhY2tNb2RlbDp4LmZhbGxiYWNrTW9kZWwsIGZlYXR1cmVNb2RlbHM6e30sIGZl YXR1cmVzOnt9LCByZWRhY3ROYW1lczohIXgucmVkYWN0TmFtZXMsIG1heE91dHB1dFRva2VuczpOdW1iZXIoeC5tYXhPdXRwdXRU b2tlbnMpfHwxNTAwfTsKICAgIE9iamVjdC5rZXlzKGQuZmVhdHVyZXMpLmZvckVhY2goaz0+eyB2LmZlYXR1cmVzW2tdPSEheFsn ZmVhdF8nK2tdOyBpZih4WydmbV8nK2tdKSB2LmZlYXR1cmVNb2RlbHNba109eFsnZm1fJytrXTsgfSk7CiAgICB0cnl7IGF3YWl0 IGNhbGwoJ3NhdmVDb25maWcnLHtrZXk6J2FpJyx2YWx1ZTp2fSk7IGNvbnN0IGI9YXdhaXQgY2FsbCgnYm9vdHN0cmFwJyk7IFNH LmFpPWIuYWk7IGRyYXdOYXYoKTsgdG9hc3QoJ0FJIHNldHRpbmdzIHNhdmVkJywnb2snLCdSZWNvcmRlZCBpbiB0aGUgYXVkaXQg bG9nJyk7IG9yZ0FJUGFuZWwoKTsgfWNhdGNoKGVycil7IHRvYXN0KGVyci5tZXNzYWdlLCdlcnInKTsgfSB9OwogIH1jYXRjaChl KXsgYm94LmlubmVySFRNTD1lbXB0eSgnQ291bGQgbm90IGxvYWQgQUkgc2V0dGluZ3MnLGUubWVzc2FnZSwnY2xvdWQtb2ZmJyk7 IGljb25zKCk7IH0gfQoKLyogLS0tLS0tLS0tLSBQbGF0Zm9ybSBjb25zb2xlIChTdXBlciBBZG1pbiAvIHBsYXRmb3JtIG93bmVy KSAtLS0tLS0tLS0tICovClZJRVdTLnBsYXRmb3JtID0gYXN5bmMgKCkgPT4geyBpZighY2FuKCdwbGF0Zm9ybS5haScpKXsgbWFp bihgPGRpdiBjbGFzcz0iY2FyZCI+JHtlbXB0eSgnUGxhdGZvcm0gb3duZXIgb25seScsJ1RoaXMgYXJlYSBpcyBmb3IgdGhlIFNB QWZlbHkgcGxhdGZvcm0gb3duZXIuJywnbG9jaycpfTwvZGl2PmApOyByZXR1cm47IH0KICBjb25zdCBkPWF3YWl0IGxvYWQoJ3Bs YXRmb3JtR2V0Jyk7IGlmKCFkKSByZXR1cm47IHdpbmRvdy5fcGxhdD1kOyBjb25zdCB0YWI9U0cucGFyYW1zWzBdfHwnb3ZlcnZp ZXcnLCB1PWQudXNhZ2U7CiAgY29uc3QgVDM9W1snb3ZlcnZpZXcnLCdPdmVydmlldyddLFsncHJvdmlkZXJzJywnQUkgcHJvdmlk ZXJzJ10sWydtb2RlbHMnLCdBSSBtb2RlbHMnXSxbJ29yZ3MnLCdPcmdhbmlzYXRpb25zJ10sWyd1c2FnZScsJ1VzYWdlIGxvZydd XTsKICBjb25zdCBjb25uZWN0ZWQ9ZC5wcm92aWRlcnMuZmlsdGVyKHA9PnAuRW5hYmxlZD09PSdZJyYmKCFwLm5lZWRzS2V5fHxw LmtleVNldCkpLmxlbmd0aCwgYXZhaWw9ZC5tb2RlbHMuZmlsdGVyKG09Pm0uYXZhaWxhYmxlKS5sZW5ndGg7CiAgbGV0IGJvZHk9 Jyc7CiAgaWYodGFiPT09J292ZXJ2aWV3JykgYm9keT1gPGRpdiBjbGFzcz0iZ3JpZCBnNCI+JHtbe2xhYmVsOidQcm92aWRlcnMg Y29ubmVjdGVkJyx2YWx1ZTpjb25uZWN0ZWQsaW5zaWdodDonb2YgJytkLnByb3ZpZGVycy5sZW5ndGgrJyBjb25maWd1cmVkJyx0 b25lOmNvbm5lY3RlZD4xPydncmVlbic6J29yYW5nZScsaWNvbjoncGx1Zyd9LHtsYWJlbDonTW9kZWxzIGF2YWlsYWJsZScsdmFs dWU6YXZhaWwsaW5zaWdodDonb2YgJytkLm1vZGVscy5sZW5ndGgrJyBpbiB0aGUgY2F0YWxvZycsdG9uZTonYmx1ZScsaWNvbjon Y3B1J30se2xhYmVsOidPcmdhbmlzYXRpb25zJyx2YWx1ZTpkLm9yZ3MubGVuZ3RoLGluc2lnaHQ6ZC5vcmdzLmZpbHRlcihvPT5v LkFJRW5hYmxlZCkubGVuZ3RoKycgd2l0aCBBSSBvbicsdG9uZTonYmx1ZScsaWNvbjonYnVpbGRpbmctMid9LHtsYWJlbDonQUkg cmVxdWVzdHMgKDMwIGRheXMpJyx2YWx1ZTp1LnRvdGFsLGluc2lnaHQ6dS5lcnJvcnMrJyBlcnJvcnMgwrcgJysodS50b3RhbD9N YXRoLnJvdW5kKHUub2svdS50b3RhbCoxMDApOjEwMCkrJyUgc3VjY2VzcycsdG9uZTp1LmVycm9ycz8nb3JhbmdlJzonZ3JlZW4n LGljb246J2FjdGl2aXR5J30se2xhYmVsOidJbnB1dCB0b2tlbnMgKDMwZCknLHZhbHVlOnUuaW5ULGluc2lnaHQ6J1NlbnQgdG8g bW9kZWxzJyx0b25lOidibHVlJyxpY29uOidhcnJvdy11cC1yaWdodCd9LHtsYWJlbDonT3V0cHV0IHRva2VucyAoMzBkKScsdmFs dWU6dS5vdXRULGluc2lnaHQ6J0dlbmVyYXRlZCBieSBtb2RlbHMnLHRvbmU6J2JsdWUnLGljb246J2Fycm93LWRvd24tbGVmdCd9 LHtsYWJlbDonRXN0aW1hdGVkIGNvc3QgKDMwZCknLHZhbHVlOk1hdGgucm91bmQodS5jb3N0KjEwMCkvMTAwLHN1ZmZpeDonIFVT RCcsaW5zaWdodDonRnJvbSBwcmljZXMgc2V0IG9uIGVhY2ggbW9kZWwnLHRvbmU6J3llbGxvdycsaWNvbjond2FsbGV0J30se2xh YmVsOidBdmVyYWdlIHN1Y2Nlc3MgcmF0ZScsdmFsdWU6dS50b3RhbD9NYXRoLnJvdW5kKHUub2svdS50b3RhbCoxMDApOjEwMCxz dWZmaXg6JyUnLGluc2lnaHQ6J0Fjcm9zcyBhbGwgcHJvdmlkZXJzJyx0b25lOidncmVlbicsaWNvbjonZ2F1Z2UnfV0ubWFwKGtw aSkuam9pbignJyl9PC9kaXY+CiAgICAke2Nvbm5lY3RlZDw9MT9gPGRpdiBjbGFzcz0iYmFubmVyIHdhcm4gbXQiPiR7aWMoJ2tl eS1yb3VuZCcpfTxzcGFuPjxiPk5leHQgc3RlcDo8L2I+IG9wZW4gPGI+QUkgcHJvdmlkZXJzPC9iPiwgYWRkIGFuIEFQSSBrZXkg Zm9yIGF0IGxlYXN0IG9uZSBwcm92aWRlciAoZm9yIGV4YW1wbGUgQW50aHJvcGljLCBPcGVuQUksIEdvb2dsZSBvciBEZWVwU2Vl ayksIHRoZW4gdGVzdCBhIG1vZGVsLiBVbnRpbCB0aGVuLCBvbmx5IHRoZSBvZmZsaW5lIGRlbW8gbW9kZWwgaXMgYXZhaWxhYmxl Ljwvc3Bhbj48YnV0dG9uIGNsYXNzPSJidG4gc20gZGFyayIgb25jbGljaz0iZ28oJ3BsYXRmb3JtL3Byb3ZpZGVycycpIj5BZGQg YSBrZXk8L2J1dHRvbj48L2Rpdj5gOicnfQogICAgPGRpdiBjbGFzcz0iZ3JpZCBnMyBtdCI+PGRpdiBjbGFzcz0iY2FyZCI+PGRp diBjbGFzcz0iY2FyZC1oIj48aDM+UmVxdWVzdHMgYnkgbW9kZWw8L2gzPjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiI+JHtjaGFy dEJveCgncE0nLDI0MCl9PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY2FyZCI+PGRpdiBjbGFzcz0iY2FyZC1oIj48aDM+UmVxdWVz dHMgYnkgb3JnYW5pc2F0aW9uPC9oMz48L2Rpdj48ZGl2IGNsYXNzPSJjYXJkLWIiPiR7Y2hhcnRCb3goJ3BPJywyNDApfTwvZGl2 PjwvZGl2PjxkaXYgY2xhc3M9ImNhcmQiPjxkaXYgY2xhc3M9ImNhcmQtaCI+PGgzPlJlcXVlc3RzIGJ5IGZlYXR1cmU8L2gzPjwv ZGl2PjxkaXYgY2xhc3M9ImNhcmQtYiI+JHtjaGFydEJveCgncEYnLDI0MCl9PC9kaXY+PC9kaXY+PC9kaXY+YDsKICBpZih0YWI9 PT0ncHJvdmlkZXJzJykgYm9keT1gPGRpdiBjbGFzcz0icm93IGJldHdlZW4gbWIiPjxwIGNsYXNzPSJtdXRlZCIgc3R5bGU9Im1h cmdpbjowIj5BUEkga2V5cyBhcmUgc3RvcmVkIGluIEFwcHMgU2NyaXB0J3MgcHJpdmF0ZSBTY3JpcHQgUHJvcGVydGllcyDigJQg bmV2ZXIgaW4gdGhlIFNoZWV0IGFuZCBuZXZlciBzZW50IHRvIGJyb3dzZXJzLjwvcD48YnV0dG9uIGNsYXNzPSJidG4gcHJpIiBv bmNsaWNrPSJlZGl0UHJvdmlkZXIoKSI+JHtpYygncGx1cycsJ3NtJyl9IEFkZCBwcm92aWRlcjwvYnV0dG9uPjwvZGl2PjxkaXYg Y2xhc3M9ImdyaWQgZzMiPiR7ZC5wcm92aWRlcnMubWFwKHA9PnsgY29uc3Qgc3Q9cC5FbmFibGVkIT09J1knP1snRGlzYWJsZWQn LCdjLWdyYXknLCdwb3dlciddOnAubmVlZHNLZXkmJiFwLmtleVNldD9bJ05vIEFQSSBrZXknLCdjLW9yYW5nZScsJ2tleS1yb3Vu ZCddOlsnQ29ubmVjdGVkJywnYy1ncmVlbicsJ3BsdWctemFwJ107IHJldHVybiBgPGRpdiBjbGFzcz0iY2FyZCBwIGNvbCIgc3R5 bGU9ImdhcDo4cHgiPjxkaXYgY2xhc3M9InJvdyBiZXR3ZWVuIj48YiBjbGFzcz0iaGQiIHN0eWxlPSJmb250LXNpemU6MTZweCI+ JHtlc2MocC5OYW1lKX08L2I+PHNwYW4gY2xhc3M9ImNoaXAgJHtzdFsxXX0iPiR7aWMoc3RbMl0pfSR7c3RbMF19PC9zcGFuPjwv ZGl2PjxkaXYgY2xhc3M9InRpbnkgbXV0ZWQiPiR7ZXNjKChkLmFkYXB0ZXJzfHx7fSlbcC5BZGFwdGVyXXx8cC5BZGFwdGVyKX0k e3AuQmFzZVVybD8nIMK3IDxzcGFuIGNsYXNzPSJtb25vIj4nK2VzYyhwLkJhc2VVcmwpKyc8L3NwYW4+JzonJ308L2Rpdj48ZGl2 IGNsYXNzPSJzbWFsbCI+JHtwLmtleVNldD9gS2V5IDxzcGFuIGNsYXNzPSJtb25vIj4ke2VzYyhwLmtleUhpbnQpfTwvc3Bhbj5g OnAubmVlZHNLZXk/J05vIGtleSBzYXZlZCc6J05vIGtleSBuZWVkZWQnfSDCtyAke3AubW9kZWxzfSBtb2RlbCR7cC5tb2RlbHM9 PT0xPycnOidzJ308L2Rpdj4ke3AuTm90ZXM/YDxkaXYgY2xhc3M9InRpbnkgbXV0ZWQiPiR7ZXNjKHAuTm90ZXMpfTwvZGl2PmA6 Jyd9PGRpdiBjbGFzcz0icm93IHcgbXQiIHN0eWxlPSJnYXA6NnB4Ij48YnV0dG9uIGNsYXNzPSJidG4gc20gcHJpIiBvbmNsaWNr PSJlZGl0UHJvdmlkZXIoJyR7cC5JZH0nKSI+JHtpYyhwLmtleVNldD8ncGVuY2lsJzona2V5LXJvdW5kJywnc20nKX0gJHtwLmtl eVNldD8nRWRpdCc6J0FkZCBrZXknfTwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0biBzbSIgb25jbGljaz0idGVzdFByb3ZpZGVy KCcke3AuSWR9Jyx0aGlzKSI+JHtpYygncGx1Zy16YXAnLCdzbScpfSBUZXN0PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuIHNt IiBvbmNsaWNrPSJzeW5jTW9kZWxzKCcke3AuSWR9JykiPiR7aWMoJ3JlZnJlc2gtY3cnLCdzbScpfSBTeW5jIG1vZGVsczwvYnV0 dG9uPiR7cC5XZWJzaXRlP2A8YSBjbGFzcz0iYnRuIHNtIGdob3N0IiBocmVmPSIke2VzYyhwLldlYnNpdGUpfSIgdGFyZ2V0PSJf YmxhbmsiIHJlbD0ibm9vcGVuZXIiPiR7aWMoJ2V4dGVybmFsLWxpbmsnLCdzbScpfSBHZXQga2V5PC9hPmA6Jyd9PC9kaXY+PC9k aXY+YDsgfSkuam9pbignJyl9PC9kaXY+YDsKICBpZih0YWI9PT0nbW9kZWxzJykgYm9keT1gPGRpdiBjbGFzcz0iY2FyZCI+JHtT R1QuaHRtbCgncG1vZCcsW3trOidOYW1lJyxsYWJlbDonTW9kZWwnLHJlbmRlcjptPT5gPGI+JHtlc2MobS5OYW1lKX08L2I+PGRp diBjbGFzcz0idGlueSBtdXRlZCBtb25vIj4ke2VzYyhtLk1vZGVsSWQpfTwvZGl2PmB9LHtrOidQcm92aWRlcklkJyxsYWJlbDon UHJvdmlkZXInLGZpbHRlcjp0cnVlLGdldDptPT4oZC5wcm92aWRlcnMuZmluZChwPT5wLklkPT09bS5Qcm92aWRlcklkKXx8e30p Lk5hbWV8fG0uUHJvdmlkZXJJZH0se2s6J1RpZXInLGxhYmVsOidUaWVyJyxmaWx0ZXI6dHJ1ZX0se2s6J0ZhbWlseScsbGFiZWw6 J0ZhbWlseScsZmlsdGVyOnRydWV9LHtrOidhdmFpbGFibGUnLGxhYmVsOidTdGF0dXMnLGdldDptPT5tLkVuYWJsZWQhPT0nWSc/ J0Rpc2FibGVkJzptLmF2YWlsYWJsZT8nQXZhaWxhYmxlJzonTmVlZHMgcHJvdmlkZXIga2V5JyxmaWx0ZXI6dHJ1ZSxyZW5kZXI6 bT0+Y2hpcChtLkVuYWJsZWQhPT0nWSc/J0Rpc2FibGVkJzptLmF2YWlsYWJsZT8nQWN0aXZlJzonQXdhaXRpbmcga2V5Jyl9LHtr OidUb2tlblBhcmFtJyxsYWJlbDonVG9rZW4gcGFyYW1ldGVyJ30se2s6J1ByaWNlJyxsYWJlbDonUHJpY2UgLyAxTSB0b2tlbnMn LGdldDptPT5tLklucHV0UHJpY2V8fG0uT3V0cHV0UHJpY2U/YCQke20uSW5wdXRQcmljZXx8MH0gaW4gwrcgJCR7bS5PdXRwdXRQ cmljZXx8MH0gb3V0YDon4oCUJ30se2s6J2FjdCcsbGFiZWw6JycscmVuZGVyOm09PmA8c3BhbiBjbGFzcz0icm93IiBzdHlsZT0i Z2FwOjRweCIgb25jbGljaz0iZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkiPjxidXR0b24gY2xhc3M9ImJ0biBzbSIgb25jbGljaz0i dGVzdE1vZGVsKCcke20uSWR9Jyx0aGlzKSI+JHtpYygncGxheScsJ3NtJyl9IFRlc3Q8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJi dG4gc20gZ2hvc3QiIG9uY2xpY2s9ImNhbGwoJ3BsYXRmb3JtVG9nZ2xlTW9kZWwnLHtpZDonJHttLklkfSd9KS50aGVuKHY9Pnt0 b2FzdCh2PT09J1knPydNb2RlbCBlbmFibGVkJzonTW9kZWwgZGlzYWJsZWQnLCdvaycpO3JlbmRlcigpO30pIj4ke20uRW5hYmxl ZD09PSdZJz8nRGlzYWJsZSc6J0VuYWJsZSd9PC9idXR0b24+PC9zcGFuPmB9XSxkLm1vZGVscyx7bmFtZTonYWktbW9kZWxzJyxz aXplOjQwLG9uUm93Om09PmVkaXRNb2RlbChtLklkKSx0b29sYmFyOmA8YnV0dG9uIGNsYXNzPSJidG4gc20gcHJpIiBvbmNsaWNr PSJlZGl0TW9kZWwoKSI+JHtpYygncGx1cycsJ3NtJyl9IEFkZCBtb2RlbDwvYnV0dG9uPmB9KX08L2Rpdj5gOwogIGlmKHRhYj09 PSdvcmdzJykgYm9keT1gPGRpdiBjbGFzcz0iY2FyZCI+JHtTR1QuaHRtbCgncG9yZycsW3trOidOYW1lJyxsYWJlbDonT3JnYW5p c2F0aW9uJyxyZW5kZXI6bz0+YDxiPiR7ZXNjKG8uTmFtZSl9PC9iPjxkaXYgY2xhc3M9InRpbnkgbXV0ZWQiPiR7ZXNjKG8uQ291 bnRyeXx8JycpfSDCtyAke28udXNlcnN9IHVzZXJzPC9kaXY+YH0se2s6J0FJRW5hYmxlZCcsbGFiZWw6J0FJJyxnZXQ6bz0+by5B SUVuYWJsZWQ/J09uJzonT2ZmJyxyZW5kZXI6bz0+Y2hpcChvLkFJRW5hYmxlZD8nQWN0aXZlJzonRGlzYWJsZWQnKX0se2s6J0FJ TW9kZWxzJyxsYWJlbDonTW9kZWxzIGFsbG93ZWQnLGdldDpvPT5vLkFJTW9kZWxzLmxlbmd0aD9vLkFJTW9kZWxzLmxlbmd0aCsn IHNlbGVjdGVkJzonQWxsIGF2YWlsYWJsZSd9LHtrOidkZWZhdWx0TW9kZWwnLGxhYmVsOidEZWZhdWx0IG1vZGVsIGluIHVzZSd9 LHtrOidBSU1vbnRobHlMaW1pdCcsbGFiZWw6J01vbnRobHkgbGltaXQnLGdldDpvPT5vLkFJTW9udGhseUxpbWl0P251bShvLkFJ TW9udGhseUxpbWl0KTonVW5saW1pdGVkJ30se2s6J3VzZWRUaGlzTW9udGgnLGxhYmVsOidVc2VkIHRoaXMgbW9udGgnLHJlbmRl cjpvPT5gPGRpdiBzdHlsZT0ibWluLXdpZHRoOjEzMHB4Ij48ZGl2IGNsYXNzPSJzbWFsbCBiIj4ke251bShvLnVzZWRUaGlzTW9u dGgpfSR7by5BSU1vbnRobHlMaW1pdD8nIC8gJytudW0oby5BSU1vbnRobHlMaW1pdCk6Jyd9PC9kaXY+JHtvLkFJTW9udGhseUxp bWl0P2JhcihvLnVzZWRUaGlzTW9udGgvby5BSU1vbnRobHlMaW1pdCoxMDAsby51c2VkVGhpc01vbnRoPj1vLkFJTW9udGhseUxp bWl0PydyJzonZycpOicnfTwvZGl2PmB9XSxkLm9yZ3Mse25hbWU6J29yZ2FuaXNhdGlvbnMtYWknLG9uUm93Om89PmVkaXRPcmdB SShvLklkKX0pfTwvZGl2PmA7CiAgaWYodGFiPT09J3VzYWdlJykgYm9keT1gPGRpdiBjbGFzcz0iY2FyZCI+JHtTR1QuaHRtbCgn cGxvZycsW3trOidDcmVhdGVkQXQnLGxhYmVsOidUaW1lJyxnZXQ6eD0+Zm10RFQoeC5DcmVhdGVkQXQpLHNvcnR2Ong9PnguQ3Jl YXRlZEF0fSx7azonb3JnJyxsYWJlbDonT3JnYW5pc2F0aW9uJyxmaWx0ZXI6dHJ1ZX0se2s6J3VzZXInLGxhYmVsOidVc2VyJ30s e2s6J0ZlYXR1cmUnLGxhYmVsOidGZWF0dXJlJyxmaWx0ZXI6dHJ1ZX0se2s6J21vZGVsJyxsYWJlbDonTW9kZWwnLGZpbHRlcjp0 cnVlfSx7azonU3RhdHVzJyxsYWJlbDonU3RhdHVzJyxmaWx0ZXI6dHJ1ZSxyZW5kZXI6eD0+Y2hpcCh4LlN0YXR1cz09PSdPSyc/ J0NvbXBsZXRlZCc6J1JlamVjdGVkJyl9LHtrOidMYXRlbmN5TXMnLGxhYmVsOidUaW1lIChzKScsZ2V0Ong9PnguTGF0ZW5jeU1z Pyh4LkxhdGVuY3lNcy8xMDAwKS50b0ZpeGVkKDEpOicnfSx7azonSW5Ub2tlbnMnLGxhYmVsOidUb2tlbnMgaW4nfSx7azonT3V0 VG9rZW5zJyxsYWJlbDonVG9rZW5zIG91dCd9LHtrOidFcnJvcicsbGFiZWw6J0Vycm9yJyxyZW5kZXI6eD0+YDxzcGFuIGNsYXNz PSJ0aW55IiBzdHlsZT0iY29sb3I6dmFyKC0tcmVkKSI+JHtlc2MoeC5FcnJvcnx8JycpfTwvc3Bhbj5gfV0sdS5sb2cse25hbWU6 J2FpLXVzYWdlLWxvZycsc2l6ZToyNX0pfTwvZGl2PmA7CiAgbWFpbihgJHtwYWdlSCgnUGxhdGZvcm0gY29uc29sZScsJ1NBQWZl bHkgcGxhdGZvcm0gb3duZXIg4oCUIEFJIHByb3ZpZGVycywgbW9kZWwgY2F0YWxvZywgdGVuYW50IGFjY2VzcyBhbmQgdXNhZ2Uu JywgYDxzcGFuIGNsYXNzPSJjaGlwIGMtYmxhY2siPiR7aWMoJ2Nyb3duJyl9UGxhdGZvcm0gb3duZXI8L3NwYW4+YCl9PGRpdiBj bGFzcz0idGFicyBtYiI+JHtUMy5tYXAodD0+YDxidXR0b24gY2xhc3M9IiR7dGFiPT09dFswXT8nb24nOicnfSIgb25jbGljaz0i Z28oJ3BsYXRmb3JtLyR7dFswXX0nKSI+JHt0WzFdfTwvYnV0dG9uPmApLmpvaW4oJycpfTwvZGl2PiR7Ym9keX1gKTsgU0dULm1v dW50KCk7CiAgaWYodGFiPT09J292ZXJ2aWV3Jyl7IGNoYXJ0KCdwTScsJ2JhcicsdS5ieU1vZGVsLnNsaWNlKDAsOCkubWFwKHg9 PngubmFtZSksW3tsYWJlbDonUmVxdWVzdHMnLGRhdGE6dS5ieU1vZGVsLnNsaWNlKDAsOCkubWFwKHg9PngucmVxdWVzdHMpfSx7 bGFiZWw6J0Vycm9ycycsZGF0YTp1LmJ5TW9kZWwuc2xpY2UoMCw4KS5tYXAoeD0+eC5lcnJvcnMpLGNvbG9yOicjQzgxRTFFJ31d LHtob3Jpem9udGFsOnRydWUsc3RhY2tlZDp0cnVlfSk7IGNoYXJ0KCdwTycsJ2RvdWdobnV0Jyx1LmJ5T3JnLm1hcCh4PT54Lm5h bWUpLFt7ZGF0YTp1LmJ5T3JnLm1hcCh4PT54LnJlcXVlc3RzKX1dKTsgY2hhcnQoJ3BGJywnZG91Z2hudXQnLHUuYnlGZWF0dXJl Lm1hcCh4PT54Lm5hbWUpLFt7ZGF0YTp1LmJ5RmVhdHVyZS5tYXAoeD0+eC5yZXF1ZXN0cyl9XSk7IH0gfTsKZnVuY3Rpb24gZWRp dFByb3ZpZGVyKGlkKXsgY29uc3QgZD13aW5kb3cuX3BsYXQsIHA9ZC5wcm92aWRlcnMuZmluZCh4PT54LklkPT09aWQpfHx7QWRh cHRlcjonb3BlbmFpJyxFbmFibGVkOidZJ307CiAgbW9kYWwoaWQ/J0VkaXQgcHJvdmlkZXIg4oCUICcrcC5OYW1lOidBZGQgQUkg cHJvdmlkZXInLCBgPGRpdiBjbGFzcz0iZ3JpZCBnMiI+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Qcm92aWRlciBuYW1lPC9s YWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iTmFtZSIgdmFsdWU9IiR7ZXNjKHAuTmFtZXx8JycpfSIgcmVxdWlyZWQ+PC9k aXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Db25uZWN0aW9uIHR5cGU8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFt ZT0iQWRhcHRlciI+JHtPYmplY3Qua2V5cyhkLmFkYXB0ZXJzKS5tYXAoYT0+b3B0KGEsZC5hZGFwdGVyc1thXSxwLkFkYXB0ZXIp KS5qb2luKCcnKX08L3NlbGVjdD48L2Rpdj48L2Rpdj4KICA8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPkJhc2UgVVJMPC9sYWJl bD48aW5wdXQgY2xhc3M9ImlucCBtb25vIiBuYW1lPSJCYXNlVXJsIiB2YWx1ZT0iJHtlc2MocC5CYXNlVXJsfHwnJyl9IiBwbGFj ZWhvbGRlcj0iaHR0cHM6Ly9hcGkuZXhhbXBsZS5jb20vdjEiPjxkaXYgY2xhc3M9ImhpbnQiPk9wZW5BSS1jb21wYXRpYmxlIHBy b3ZpZGVyczogdGhlIFVSTCB0aGF0IGNvbWVzIGJlZm9yZSA8c3BhbiBjbGFzcz0ibW9ubyI+L2NoYXQvY29tcGxldGlvbnM8L3Nw YW4+LjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+QVBJIGtleTwvbGFiZWw+PGlucHV0IGNsYXNzPSJp bnAgbW9ubyIgbmFtZT0iQXBpS2V5IiB0eXBlPSJwYXNzd29yZCIgYXV0b2NvbXBsZXRlPSJuZXctcGFzc3dvcmQiIHBsYWNlaG9s ZGVyPSIke3Aua2V5U2V0PydTYXZlZCAoJytlc2MocC5rZXlIaW50KSsnKSDigJQgbGVhdmUgYmxhbmsgdG8ga2VlcCBpdCc6J1Bh c3RlIHRoZSBBUEkga2V5J30iPiR7cC5rZXlTZXQ/YDxsYWJlbCBjbGFzcz0icm93IHNtYWxsIiBzdHlsZT0ibWFyZ2luLXRvcDo2 cHgiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY2xlYXJLZXkiPiBSZW1vdmUgdGhlIHNhdmVkIGtleTwvbGFiZWw+YDon J308ZGl2IGNsYXNzPSJoaW50Ij5TdG9yZWQgb25seSBpbiBTY3JpcHQgUHJvcGVydGllcy4gTm9ib2R5IGNhbiByZWFkIGl0IGJh Y2sgZnJvbSB0aGUgYXBwIOKAlCBub3QgZXZlbiB5b3UuPC9kaXY+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZ3JpZCBnMiI+PGRpdiBj bGFzcz0iZmllbGQiPjxsYWJlbD5XaGVyZSB0byBnZXQgYSBrZXk8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1lPSJXZWJz aXRlIiB2YWx1ZT0iJHtlc2MocC5XZWJzaXRlfHwnJyl9Ij48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsPlN0YXR1czwv bGFiZWw+PHNlbGVjdCBjbGFzcz0iaW5wIiBuYW1lPSJFbmFibGVkIj4ke29wdCgnWScsJ0VuYWJsZWQnLHAuRW5hYmxlZCl9JHtv cHQoJ04nLCdEaXNhYmxlZCcscC5FbmFibGVkKX08L3NlbGVjdD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVs Pk5vdGVzPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iTm90ZXMiIHZhbHVlPSIke2VzYyhwLk5vdGVzfHwnJyl9Ij48 L2Rpdj5gLAogIHtzdWJtaXQ6J1NhdmUgcHJvdmlkZXInLCBleHRyYTppZCYmaWQhPT0nZGVtbyc/YDxidXR0b24gdHlwZT0iYnV0 dG9uIiBjbGFzcz0iYnRuIGRhbmdlciIgb25jbGljaz0iY29uZmlybUJveCgnRGlzYWJsZSBwcm92aWRlcicsJ0Rpc2FibGUgJHtl c2MocC5OYW1lKX0sIGRpc2FibGUgaXRzIG1vZGVscyBhbmQgZGVsZXRlIGl0cyBzYXZlZCBrZXk/Jyxhc3luYygpPT57YXdhaXQg Y2FsbCgncGxhdGZvcm1EZWxldGVQcm92aWRlcicse2lkOicke2lkfSd9KTt0b2FzdCgnUHJvdmlkZXIgZGlzYWJsZWQnLCdvaycp O3FzYSgnLm92JykuZm9yRWFjaChvPT5vLnJlbW92ZSgpKTtyZW5kZXIoKTt9LHtkYW5nZXI6dHJ1ZX0pIj5EaXNhYmxlICYgcmVt b3ZlIGtleTwvYnV0dG9uPmA6JycsCiAgIG9uU3VibWl0OiBhc3luYyB4PT57IGNvbnN0IHI9YXdhaXQgY2FsbCgncGxhdGZvcm1T YXZlUHJvdmlkZXInLE9iamVjdC5hc3NpZ24oeCx7SWQ6aWR8fCcnLGNsZWFyS2V5OiEheC5jbGVhcktleX0pKTsgdG9hc3QoJ1By b3ZpZGVyIHNhdmVkJywnb2snLCByLmtleVNldD8nS2V5ICcrci5rZXlIaW50Kycgc3RvcmVkIHNlY3VyZWx5JzonJyk7IHJlbmRl cigpOyB9fSk7IH0KYXN5bmMgZnVuY3Rpb24gdGVzdFByb3ZpZGVyKGlkLCBidG4peyBjb25zdCBvPWJ0bi5pbm5lckhUTUw7IGJ0 bi5kaXNhYmxlZD10cnVlOyBidG4uaW5uZXJIVE1MPWljKCdsb2FkZXInLCdzbScpKycgVGVzdGluZyc7IGljb25zKCk7IHRyeXsg Y29uc3Qgcj1hd2FpdCBjYWxsKCdwbGF0Zm9ybVRlc3RQcm92aWRlcicse2lkfSk7IHRvYXN0KCdDb25uZWN0aW9uIHdvcmtzJywn b2snLHIubW9kZWxzKycgbW9kZWxzIHZpc2libGUgwrcgJysoci5tcy8xMDAwKS50b0ZpeGVkKDEpKydzJyk7IH1jYXRjaChlKXsg dG9hc3QoZS5tZXNzYWdlLCdlcnInKTsgfSBidG4uZGlzYWJsZWQ9ZmFsc2U7IGJ0bi5pbm5lckhUTUw9bzsgaWNvbnMoKTsgfQph c3luYyBmdW5jdGlvbiB0ZXN0TW9kZWwoaWQsIGJ0bil7IGNvbnN0IG89YnRuLmlubmVySFRNTDsgYnRuLmRpc2FibGVkPXRydWU7 IGJ0bi5pbm5lckhUTUw9aWMoJ2xvYWRlcicsJ3NtJyk7IGljb25zKCk7IHRyeXsgY29uc3Qgcj1hd2FpdCBjYWxsKCdwbGF0Zm9y bVRlc3RNb2RlbCcse2lkfSk7IHIub2s/dG9hc3QoJ01vZGVsIHJlcGxpZWQ6ICcrci5yZXBseSwnb2snLChyLm1zLzEwMDApLnRv Rml4ZWQoMSkrJ3MnKyhyLmluVD9gIMK3ICR7ci5pblR9KyR7ci5vdXRUfSB0b2tlbnNgOicnKSk6dG9hc3QoJ1Rlc3QgZmFpbGVk JywnZXJyJyxyLmVycm9yKTsgfWNhdGNoKGUpeyB0b2FzdChlLm1lc3NhZ2UsJ2VycicpOyB9IGJ0bi5kaXNhYmxlZD1mYWxzZTsg YnRuLmlubmVySFRNTD1vOyBpY29ucygpOyB9CmFzeW5jIGZ1bmN0aW9uIHN5bmNNb2RlbHMoaWQpeyBjb25zdCBwPXdpbmRvdy5f cGxhdC5wcm92aWRlcnMuZmluZCh4PT54LklkPT09aWQpOyBtb2RhbCgnU3luYyBtb2RlbHMg4oCUICcrcC5OYW1lLCBgPGRpdiBp ZD0ic3luY0JveCI+PC9kaXY+YCwge3dpZGU6dHJ1ZSwgc3VibWl0OidBZGQgc2VsZWN0ZWQgdG8gY2F0YWxvZycsIG9uU3VibWl0 OiBhc3luYyB4PT57IGNvbnN0IGlkcz14Lm1pZHx8W107IGlmKCFpZHMubGVuZ3RoKXsgdG9hc3QoJ1RpY2sgYXQgbGVhc3Qgb25l IG1vZGVsJywnZXJyJyk7IHJldHVybiBmYWxzZTsgfSBjb25zdCBsaXN0PSh3aW5kb3cuX3N5bmN8fFtdKS5maWx0ZXIobT0+aWRz LmluY2x1ZGVzKG0uaWQpKTsgY29uc3Qgcj1hd2FpdCBjYWxsKCdwbGF0Zm9ybUFkZE1vZGVscycse2lkLG1vZGVsczpsaXN0fSk7 IHRvYXN0KHIuYWRkZWQrJyBtb2RlbChzKSBhZGRlZCcsJ29rJyk7IHJlbmRlcigpOyB9fSk7CiAgYWlCdXN5KHFzKCcjc3luY0Jv eCcpLCdBc2tpbmcgJytwLk5hbWUrJyB3aGljaCBtb2RlbHMgaXQgb2ZmZXJz4oCmJyk7IHRyeXsgY29uc3QgbGlzdD1hd2FpdCBj YWxsKCdwbGF0Zm9ybVN5bmNNb2RlbHMnLHtpZH0pOyB3aW5kb3cuX3N5bmM9bGlzdDsgcXMoJyNzeW5jQm94JykuaW5uZXJIVE1M PWA8cCBjbGFzcz0ic21hbGwgbXV0ZWQiIHN0eWxlPSJtYXJnaW4tdG9wOjAiPiR7bGlzdC5sZW5ndGh9IG1vZGVscyByZXR1cm5l ZC4gTW9kZWxzIGFscmVhZHkgaW4geW91ciBjYXRhbG9nIGFyZSBncmV5ZWQgb3V0LjwvcD48aW5wdXQgY2xhc3M9ImlucCBtYiIg cGxhY2Vob2xkZXI9IkZpbHRlcuKApiIgb25pbnB1dD0icXNhKCcjc3luY0JveCBsYWJlbCcpLmZvckVhY2gobD0+bC5zdHlsZS5k aXNwbGF5PWwudGV4dENvbnRlbnQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyh0aGlzLnZhbHVlLnRvTG93ZXJDYXNlKCkpPycnOidu b25lJykiPjxkaXYgc3R5bGU9Im1heC1oZWlnaHQ6NTB2aDtvdmVyZmxvdzphdXRvIj4ke2xpc3QubWFwKG09PmA8bGFiZWwgY2xh c3M9InJvdyBzbWFsbCIgc3R5bGU9InBhZGRpbmc6NnB4IDRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1saW5lMik7 JHttLmluQ2F0YWxvZz8nb3BhY2l0eTouNDUnOicnfSI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJtaWQiIGRhdGEtbXVs dGk9IjEiIHZhbHVlPSIke2VzYyhtLmlkKX0iICR7bS5pbkNhdGFsb2c/J2Rpc2FibGVkJzonJ30+PHNwYW4gY2xhc3M9Im1vbm8g Z3JvdyI+JHtlc2MobS5pZCl9PC9zcGFuPjxzcGFuIGNsYXNzPSJtdXRlZCI+JHtlc2MobS5uYW1lIT09bS5pZD9tLm5hbWU6Jycp fTwvc3Bhbj4ke20uaW5DYXRhbG9nPyc8c3BhbiBjbGFzcz0iY2hpcCBjLWdyZWVuIj5JbiBjYXRhbG9nPC9zcGFuPic6Jyd9PC9s YWJlbD5gKS5qb2luKCcnKX08L2Rpdj5gOyBpY29ucygpOyB9Y2F0Y2goZSl7IHFzKCcjc3luY0JveCcpLmlubmVySFRNTD1gPGRp diBjbGFzcz0iYmFubmVyIGNyaXQiPiR7aWMoJ29jdGFnb24tYWxlcnQnKX08c3Bhbj4ke2VzYyhlLm1lc3NhZ2UpfTwvc3Bhbj48 L2Rpdj5gOyBpY29ucygpOyB9IH0KZnVuY3Rpb24gZWRpdE1vZGVsKGlkKXsgY29uc3QgZD13aW5kb3cuX3BsYXQsIG09ZC5tb2Rl bHMuZmluZCh4PT54LklkPT09aWQpfHx7RW5hYmxlZDonWScsVG9rZW5QYXJhbTonbWF4X3Rva2VucycsVGllcjonR2VuZXJhbCd9 OwogIG1vZGFsKGlkPydFZGl0IG1vZGVsJzonQWRkIG1vZGVsJywgYDxkaXYgY2xhc3M9ImdyaWQgZzIiPjxkaXYgY2xhc3M9ImZp ZWxkIj48bGFiZWw+UHJvdmlkZXI8L2xhYmVsPjxzZWxlY3QgY2xhc3M9ImlucCIgbmFtZT0iUHJvdmlkZXJJZCI+JHtkLnByb3Zp ZGVycy5tYXAocD0+b3B0KHAuSWQscC5OYW1lLG0uUHJvdmlkZXJJZCkpLmpvaW4oJycpfTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xh c3M9ImZpZWxkIj48bGFiZWw+TW9kZWwgSUQgKGV4YWN0bHkgYXMgdGhlIHByb3ZpZGVyIG5hbWVzIGl0KTwvbGFiZWw+PGlucHV0 IGNsYXNzPSJpbnAgbW9ubyIgbmFtZT0iTW9kZWxJZCIgdmFsdWU9IiR7ZXNjKG0uTW9kZWxJZHx8JycpfSIgcmVxdWlyZWQgcGxh Y2Vob2xkZXI9ImUuZy4gY2xhdWRlLXNvbm5ldC01LTUiPjwvZGl2PgogIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+RGlzcGxh eSBuYW1lPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iTmFtZSIgdmFsdWU9IiR7ZXNjKG0uTmFtZXx8JycpfSI+PC9k aXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5GYW1pbHk8L2xhYmVsPjxpbnB1dCBjbGFzcz0iaW5wIiBuYW1lPSJGYW1pbHki IHZhbHVlPSIke2VzYyhtLkZhbWlseXx8JycpfSI+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5UaWVyPC9sYWJl bD48c2VsZWN0IGNsYXNzPSJpbnAiIG5hbWU9IlRpZXIiPiR7WydGbGFnc2hpcCcsJ0Zyb250aWVyJywnQmFsYW5jZWQnLCdHZW5l cmFsJywnRmFzdCcsJ1JlYXNvbmluZycsJ1NlbGYtaG9zdGVkJywnRGVtbyddLm1hcCh0PT5vcHQodCx0LG0uVGllcikpLmpvaW4o JycpfTwvc2VsZWN0PjwvZGl2PjxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+U3RhdHVzPC9sYWJlbD48c2VsZWN0IGNsYXNzPSJp bnAiIG5hbWU9IkVuYWJsZWQiPiR7b3B0KCdZJywnRW5hYmxlZCcsbS5FbmFibGVkKX0ke29wdCgnTicsJ0Rpc2FibGVkJyxtLkVu YWJsZWQpfTwvc2VsZWN0PjwvZGl2PgogIDxkaXYgY2xhc3M9ImZpZWxkIj48bGFiZWw+VG9rZW4tbGltaXQgcGFyYW1ldGVyPC9s YWJlbD48c2VsZWN0IGNsYXNzPSJpbnAiIG5hbWU9IlRva2VuUGFyYW0iPiR7W1snbWF4X3Rva2VucycsJ21heF90b2tlbnMgKG1v c3QgcHJvdmlkZXJzKSddLFsnbWF4X2NvbXBsZXRpb25fdG9rZW5zJywnbWF4X2NvbXBsZXRpb25fdG9rZW5zIChuZXdlciBPcGVu QUkgbW9kZWxzKSddLFsnbm9uZScsJ0RvIG5vdCBzZW5kIGEgbGltaXQnXV0ubWFwKHQ9Pm9wdCh0WzBdLHRbMV0sbS5Ub2tlblBh cmFtKSkuam9pbignJyl9PC9zZWxlY3Q+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5UZW1wZXJhdHVyZSAoYmxhbmsg PSBwcm92aWRlciBkZWZhdWx0KTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIHR5cGU9Im51bWJlciIgc3RlcD0iMC4xIiBtaW49 IjAiIG1heD0iMiIgbmFtZT0iVGVtcGVyYXR1cmUiIHZhbHVlPSIke2VzYyhtLlRlbXBlcmF0dXJlPT1udWxsPycnOm0uVGVtcGVy YXR1cmUpfSI+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5JbnB1dCBwcmljZSAoVVNEIHBlciAxTSB0b2tlbnMp PC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgdHlwZT0ibnVtYmVyIiBzdGVwPSIwLjAwMSIgbmFtZT0iSW5wdXRQcmljZSIgdmFs dWU9IiR7ZXNjKG0uSW5wdXRQcmljZXx8JycpfSI+PC9kaXY+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5PdXRwdXQgcHJpY2Ug KFVTRCBwZXIgMU0gdG9rZW5zKTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIHR5cGU9Im51bWJlciIgc3RlcD0iMC4wMDEiIG5h bWU9Ik91dHB1dFByaWNlIiB2YWx1ZT0iJHtlc2MobS5PdXRwdXRQcmljZXx8JycpfSI+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZmll bGQiPjxsYWJlbD5Db250ZXh0IHdpbmRvdyAob3B0aW9uYWwpPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0iQ29udGV4 dCIgdmFsdWU9IiR7ZXNjKG0uQ29udGV4dHx8JycpfSIgcGxhY2Vob2xkZXI9ImUuZy4gMjAwSyI+PC9kaXY+PGRpdiBjbGFzcz0i ZmllbGQiPjxsYWJlbD5Tb3J0IG9yZGVyPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgdHlwZT0ibnVtYmVyIiBuYW1lPSJTb3J0 T3JkZXIiIHZhbHVlPSIke2VzYyhtLlNvcnRPcmRlcnx8NTAwKX0iPjwvZGl2PjwvZGl2PgogIDxkaXYgY2xhc3M9ImZpZWxkIj48 bGFiZWw+RGVzY3JpcHRpb24gKHNob3duIHRvIG9yZ2FuaXNhdGlvbnMpPC9sYWJlbD48aW5wdXQgY2xhc3M9ImlucCIgbmFtZT0i RGVzY3JpcHRpb24iIHZhbHVlPSIke2VzYyhtLkRlc2NyaXB0aW9ufHwnJyl9Ij48L2Rpdj5gLAogIHt3aWRlOnRydWUsIHN1Ym1p dDonU2F2ZSBtb2RlbCcsIGV4dHJhOmlkP2A8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBkYW5nZXIiIG9uY2xpY2s9 ImNvbmZpcm1Cb3goJ1JlbW92ZSBtb2RlbCcsJ1JlbW92ZSAke2VzYyhtLk5hbWUpfSBmcm9tIHRoZSBjYXRhbG9nPyBPcmdhbmlz YXRpb25zIHVzaW5nIGl0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZWlyIG5leHQgY2hvaWNlLicsYXN5bmMoKT0+e2F3YWl0IGNhbGwo J3BsYXRmb3JtRGVsZXRlTW9kZWwnLHtpZDonJHtpZH0nfSk7dG9hc3QoJ01vZGVsIHJlbW92ZWQnLCdvaycpO3FzYSgnLm92Jyku Zm9yRWFjaChvPT5vLnJlbW92ZSgpKTtyZW5kZXIoKTt9LHtkYW5nZXI6dHJ1ZX0pIj5SZW1vdmU8L2J1dHRvbj5gOicnLAogICBv blN1Ym1pdDogYXN5bmMgeD0+eyBhd2FpdCBjYWxsKCdwbGF0Zm9ybVNhdmVNb2RlbCcsT2JqZWN0LmFzc2lnbih4LHtJZDppZHx8 Jyd9KSk7IHRvYXN0KCdNb2RlbCBzYXZlZCcsJ29rJyk7IHJlbmRlcigpOyB9fSk7IH0KZnVuY3Rpb24gZWRpdE9yZ0FJKG9pZCl7 IGNvbnN0IGQ9d2luZG93Ll9wbGF0LCBvPWQub3Jncy5maW5kKHg9PnguSWQ9PT1vaWQpLCBncm91cHM9e307IGQubW9kZWxzLmZv ckVhY2gobT0+eyBjb25zdCBwbj0oZC5wcm92aWRlcnMuZmluZChwPT5wLklkPT09bS5Qcm92aWRlcklkKXx8e30pLk5hbWV8fG0u UHJvdmlkZXJJZDsgKGdyb3Vwc1twbl09Z3JvdXBzW3BuXXx8W10pLnB1c2gobSk7IH0pOwogIG1vZGFsKCdBSSBhY2Nlc3Mg4oCU ICcrby5OYW1lLCBgPGxhYmVsIGNsYXNzPSJyb3cgc21hbGwgbWIiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iZW5hYmxl ZCIgJHtvLkFJRW5hYmxlZD8nY2hlY2tlZCc6Jyd9PiBBSSBmZWF0dXJlcyBhbGxvd2VkIGZvciB0aGlzIG9yZ2FuaXNhdGlvbjwv bGFiZWw+PGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Nb250aGx5IEFJIHJlcXVlc3QgbGltaXQgKGJsYW5rID0gdW5saW1pdGVk KTwvbGFiZWw+PGlucHV0IGNsYXNzPSJpbnAiIHR5cGU9Im51bWJlciIgbWluPSIwIiBuYW1lPSJsaW1pdCIgdmFsdWU9IiR7ZXNj KG8uQUlNb250aGx5TGltaXQpfSI+PC9kaXY+CiAgPGRpdiBjbGFzcz0iZmllbGQiPjxsYWJlbD5Nb2RlbHMgdGhpcyBvcmdhbmlz YXRpb24gbWF5IGNob29zZSBmcm9tPC9sYWJlbD48bGFiZWwgY2xhc3M9InJvdyBzbWFsbCI+PGlucHV0IHR5cGU9InJhZGlvIiBu YW1lPSJtb2RlIiB2YWx1ZT0iYWxsIiAke28uQUlNb2RlbHMubGVuZ3RoPycnOidjaGVja2VkJ30+IEFsbCBhdmFpbGFibGUgbW9k ZWxzPC9sYWJlbD48bGFiZWwgY2xhc3M9InJvdyBzbWFsbCI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJtb2RlIiB2YWx1ZT0i cGljayIgJHtvLkFJTW9kZWxzLmxlbmd0aD8nY2hlY2tlZCc6Jyd9PiBPbmx5IHRoZSBtb2RlbHMgdGlja2VkIGJlbG93PC9sYWJl bD48L2Rpdj4KICA8ZGl2IHN0eWxlPSJtYXgtaGVpZ2h0OjQ2dmg7b3ZlcmZsb3c6YXV0bztib3JkZXI6MXB4IHNvbGlkIHZhcigt LWxpbmUpO2JvcmRlci1yYWRpdXM6MTBweDtwYWRkaW5nOjZweCAxMHB4Ij4ke09iamVjdC5rZXlzKGdyb3VwcykubWFwKGc9PmA8 ZGl2IGNsYXNzPSJ0aW55IGIgbXV0ZWQiIHN0eWxlPSJtYXJnaW46MTBweCAwIDRweDtsZXR0ZXItc3BhY2luZzouMDhlbSI+JHtl c2MoZy50b1VwcGVyQ2FzZSgpKX08L2Rpdj4ke2dyb3Vwc1tnXS5tYXAobT0+YDxsYWJlbCBjbGFzcz0icm93IHNtYWxsIiBzdHls ZT0icGFkZGluZzo0cHggMCI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJtb2RlbHMiIGRhdGEtbXVsdGk9IjEiIHZhbHVl PSIke20uSWR9IiAke28uQUlNb2RlbHMuaW5jbHVkZXMobS5JZCk/J2NoZWNrZWQnOicnfT4gJHtlc2MobS5OYW1lKX0gJHttLmF2 YWlsYWJsZT8nJzonPHNwYW4gY2xhc3M9ImNoaXAgYy1ncmF5IiBzdHlsZT0iZm9udC1zaXplOjEwLjVweCI+bm90IGFjdGl2ZSB5 ZXQ8L3NwYW4+J308L2xhYmVsPmApLmpvaW4oJycpfWApLmpvaW4oJycpfTwvZGl2PmAsCiAge3dpZGU6dHJ1ZSwgc3VibWl0OidT YXZlIGFjY2VzcycsIG9uU3VibWl0OiBhc3luYyB4PT57IGF3YWl0IGNhbGwoJ3BsYXRmb3JtU2F2ZU9yZ0FJJyx7aWQ6b2lkLGVu YWJsZWQ6ISF4LmVuYWJsZWQsbGltaXQ6eC5saW1pdCxtb2RlbHM6eC5tb2RlPT09J3BpY2snPyh4Lm1vZGVsc3x8W10pOltdfSk7 IHRvYXN0KCdBSSBhY2Nlc3MgdXBkYXRlZCcsJ29rJyk7IHJlbmRlcigpOyB9fSk7IH0KCndpbmRvdy5hZGRFdmVudExpc3RlbmVy KCdsb2FkJywgZnVuY3Rpb24oKXsgdHJ5eyBpY29ucygpOyBpZiAoU0cudXNlciAmJiB0eXBlb2YgcmVuZGVyID09PSAnZnVuY3Rp b24nICYmIHFzKCdjYW52YXNbaWRdJykpIHJlbmRlcigpOyB9Y2F0Y2goZSl7fSB9KTsKKGFzeW5jIGZ1bmN0aW9uKCl7IHRyeSB7 IGF3YWl0IHN0YXJ0KCk7IH0gY2F0Y2goZSkgeyBzZ1Nob3dFcnJvcignU3RhcnR1cDogJyArIChlICYmIChlLnN0YWNrIHx8IGUu bWVzc2FnZSkgfHwgZSkpOyB9IH0pKCk7Cg==