K-EnterTech Hub

Cross Border Content Studio and news media outlet with entertainment tech, streaming, AI, Metaverse

Sign In Subscribe
  • Home
  • K-OUTBOUND
  • EnterTech
  • AI
  • Policy
  • Streaming/FAST
  • Creator
  • Opinion
  • People
  • TV & Telecom
  • Data
  • Events
  • Local Tech
  • About
  • Shop
eyJhdCI6IjIwMjYtMDgtMjRUMDA6MDg6MjUuOTA0WiIsImhlYWQiOiI8c2NyaXB0PnZhciBwYWdpbmF0aW9uX25leHRfcGFnZV9udW1iZXI9bnVsbDs8L3NjcmlwdD5cbjxzY3JpcHQgaWQ9XCJrdGgtZml4XCI+KGZ1bmN0aW9uKCl7XG5mdW5jdGlvbiBydW4oKXtcbmlmKCFkb2N1bWVudC5ib2R5KXJldHVybjtcbi8vIOuCoOynnCDsmIHrrLgg67OA7ZmYXG52YXIgTU9OVEhTID0gWycnLCdKYW51YXJ5JywnRmVicnVhcnknLCdNYXJjaCcsJ0FwcmlsJywnTWF5JywnSnVuZScsJ0p1bHknLCdBdWd1c3QnLCdTZXB0ZW1iZXInLCdPY3RvYmVyJywnTm92ZW1iZXInLCdEZWNlbWJlciddO1xuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmt0aC1tZXRhLWRhdGUsIC5ueXQtcG9zdC1kYXRlLCAua3RoLW1ldGEgc3BhbiwgdGltZScpLmZvckVhY2goZnVuY3Rpb24oZWwpe1xudmFyIHQgPSAoZWwudGV4dENvbnRlbnR8fCcnKS50cmltKCk7XG52YXIgbSA9IHQubWF0Y2goL14oXFxkezEsMn0p7JuUXFxzKihcXGR7MSwyfSksP1xccyooXFxkezR9KSQvKTtcbmlmKG0peyBlbC50ZXh0Q29udGVudCA9IE1PTlRIU1twYXJzZUludChtWzFdKV0gKyAnICcgKyBwYXJzZUludChtWzJdKSArICcsICcgKyBtWzNdOyB9XG59KTtcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ueXQtcG9zdC1yZWFkLC5rdGgtcG9zdC1yZWFkJykuZm9yRWFjaChmdW5jdGlvbihlbCl7XG52YXIgbT0oZWwudGV4dENvbnRlbnR8fCcnKS5tYXRjaCgvKFxcZCspLyk7aWYobSl7ZWwudGV4dENvbnRlbnQ9bVsxXSsn67aEIOydveq4sCc7fVxufSk7XG4vLyDthYzsnbTruJQg7J2465287J24IOyKpO2DgOydvCDigJQg65287J207Yq4IO2FjOuniFxuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGUgdHInKS5mb3JFYWNoKGZ1bmN0aW9uKHRyLGkpe1xudHIucXVlcnlTZWxlY3RvckFsbCgndGQsdGgnKS5mb3JFYWNoKGZ1bmN0aW9uKGMsail7XG5jLnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbmlmKGk9PT0wfHxjLnRhZ05hbWU9PT0nVEgnKXtjLnN0eWxlLmNzc1RleHQ9J2JhY2tncm91bmQ6IzJhNTBhMCFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NzAwIWltcG9ydGFudDtwYWRkaW5nOjEwcHggMTRweCFpbXBvcnRhbnQ7JztjLnF1ZXJ5U2VsZWN0b3JBbGwoJ3Asc3BhbixhJykuZm9yRWFjaChmdW5jdGlvbihjaCl7Y2guc3R5bGUuc2V0UHJvcGVydHkoJ2NvbG9yJywnI2ZmZicsJ2ltcG9ydGFudCcpO30pO31cbmVsc2UgaWYoaj09PTApe2Muc3R5bGUuY3NzVGV4dD0nYmFja2dyb3VuZDojZGRlNGY0IWltcG9ydGFudDtjb2xvcjojMGQxNTI2IWltcG9ydGFudDtmb250LXdlaWdodDo2MDAhaW1wb3J0YW50O3BhZGRpbmc6OXB4IDE0cHghaW1wb3J0YW50Oyc7Yy5xdWVyeVNlbGVjdG9yQWxsKCdwLHNwYW4sYScpLmZvckVhY2goZnVuY3Rpb24oY2gpe2NoLnN0eWxlLnNldFByb3BlcnR5KCdjb2xvcicsJyMwZDE1MjYnLCdpbXBvcnRhbnQnKTt9KTt9XG5lbHNle2Muc3R5bGUuY3NzVGV4dD0nYmFja2dyb3VuZDojZjVmN2ZkIWltcG9ydGFudDtjb2xvcjojMGQxNTI2IWltcG9ydGFudDtwYWRkaW5nOjlweCAxNHB4IWltcG9ydGFudDsnO2MucXVlcnlTZWxlY3RvckFsbCgncCxzcGFuLGEnKS5mb3JFYWNoKGZ1bmN0aW9uKGNoKXtjaC5zdHlsZS5zZXRQcm9wZXJ0eSgnY29sb3InLCcjMGQxNTI2JywnaW1wb3J0YW50Jyk7fSk7fVxuYy5zdHlsZS5zZXRQcm9wZXJ0eSgnYm9yZGVyJywnMXB4IHNvbGlkIHJnYmEoNDIsODAsMTYwLDAuMSknLCdpbXBvcnRhbnQnKTtcbmMuc3R5bGUuc2V0UHJvcGVydHkoJ3ZlcnRpY2FsLWFsaWduJywndG9wJywnaW1wb3J0YW50Jyk7XG59KTtcbn0pO1xufVxuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcscnVuKTtcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJyxydW4pO1xuc2V0VGltZW91dChydW4sMCk7XG5zZXRUaW1lb3V0KHJ1biw1MDApO1xufSkoKTs8L3NjcmlwdD5cbjxzdHlsZSBpZD1cImt0aC1uYXYtZml4XCI+XG4ubmF2LWlubmVyIHVsLCAuc2l0ZS1uYXYgdWwsIHVsLm5hdiB7XG5kaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XG5mbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7XG5mbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDtcbmxpc3Qtc3R5bGU6IG5vbmUgIWltcG9ydGFudDtcbnBhZGRpbmc6IDAgIWltcG9ydGFudDtcbm1hcmdpbjogMCAhaW1wb3J0YW50O1xuZ2FwOiAwICFpbXBvcnRhbnQ7XG59XG4ubmF2LWlubmVyIHVsIGxpLCAuc2l0ZS1uYXYgdWwgbGksIHVsLm5hdiBsaSB7XG5kaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50O1xubGlzdC1zdHlsZTogbm9uZSAhaW1wb3J0YW50O1xufVxuLnNpdGUtaGVhZGVyIHsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IG1pbi1oZWlnaHQ6IHVuc2V0ICFpbXBvcnRhbnQ7IH1cbi5oZWFkZXItbmF2LWJhciB7IGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OyB9XG48L3N0eWxlPlxuPHN0eWxlIGlkPVwiZW4tY2FyZC1zdHlsZVwiPlxuLyogRW5nbGlzaCBFZGl0aW9uIOy5tOuTnCDigJQg65287J207Yq4IO2FjOuniCDqsJXsoJwgKi9cbmh0bWwgYm9keSBhLmVuLWNhcmQsXG5odG1sIGJvZHkgLmVuLWNhcmQge1xuYmFja2dyb3VuZDogI2ZmZmZmZiAhaW1wb3J0YW50O1xuYm9yZGVyOiAxcHggc29saWQgcmdiYSg0Miw4MCwxNjAsMC4xMikgIWltcG9ydGFudDtcbmJvcmRlci1yYWRpdXM6IDEwcHggIWltcG9ydGFudDtcbm92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDtcbnRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50O1xuZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1xuZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50O1xuYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwwLDAsMC4wNikgIWltcG9ydGFudDtcbnRyYW5zaXRpb246IGJveC1zaGFkb3cgLjE4cyAhaW1wb3J0YW50O1xuY29sb3I6ICMwZDE1MjYgIWltcG9ydGFudDtcbn1cbmh0bWwgYm9keSBhLmVuLWNhcmQ6aG92ZXIsXG5odG1sIGJvZHkgLmVuLWNhcmQ6aG92ZXIge1xuYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDQyLDgwLDE2MCwwLjE0KSAhaW1wb3J0YW50O1xudHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG5ib3JkZXItY29sb3I6IHJnYmEoNDIsODAsMTYwLDAuMjUpICFpbXBvcnRhbnQ7XG59XG5odG1sIGJvZHkgLmVuLWNhcmQtaW1nIHtcbndpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGFzcGVjdC1yYXRpbzogMTYvOSAhaW1wb3J0YW50O1xub3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OyBmbGV4LXNocmluazogMCAhaW1wb3J0YW50O1xuYmFja2dyb3VuZDogI2U4ZWVmZiAhaW1wb3J0YW50O1xufVxuaHRtbCBib2R5IC5lbi1jYXJkLWltZyBpbWcgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuaHRtbCBib2R5IC5lbi1jYXJkLWJvZHkge1xucGFkZGluZzogMTRweCAxNnB4ICFpbXBvcnRhbnQ7XG5iYWNrZ3JvdW5kOiAjZmZmZmZmICFpbXBvcnRhbnQ7XG5mbGV4OiAxICFpbXBvcnRhbnQ7XG59XG5odG1sIGJvZHkgLmVuLWNhcmQtdGl0bGUge1xuZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7IGZvbnQtd2VpZ2h0OiA3MDAgIWltcG9ydGFudDtcbmNvbG9yOiAjMGQxNTI2ICFpbXBvcnRhbnQ7IGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDtcbm1hcmdpbi1ib3R0b206IDRweCAhaW1wb3J0YW50O1xuZGlzcGxheTogLXdlYmtpdC1ib3ggIWltcG9ydGFudDtcbi13ZWJraXQtbGluZS1jbGFtcDogMyAhaW1wb3J0YW50O1xuLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbCAhaW1wb3J0YW50O1xub3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuaHRtbCBib2R5IGEuZW4tY2FyZDpob3ZlciAuZW4tY2FyZC10aXRsZSB7IGNvbG9yOiAjMmE1MGEwICFpbXBvcnRhbnQ7IH1cbmh0bWwgYm9keSAuZW4tY2FyZC1kYXRlIHsgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7IGNvbG9yOiAjNmE3YWFhICFpbXBvcnRhbnQ7IG1hcmdpbi10b3A6IDRweCAhaW1wb3J0YW50OyB9XG5odG1sIGJvZHkgLmVuLWNhcmQtYmFkZ2UgeyBjb2xvcjogIzJhNTBhMCAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiByZ2JhKDQyLDgwLDE2MCwwLjA4KSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6IHJnYmEoNDIsODAsMTYwLDAuMikgIWltcG9ydGFudDsgfVxuaHRtbCBib2R5IC5lbi1jYXJkLWV4Y2VycHQgeyBjb2xvcjogIzNhNGE3MCAhaW1wb3J0YW50OyB9XG5odG1sIGJvZHkgLmVuLWNhcmQtbWV0YSB7IGNvbG9yOiAjNmE3YWFhICFpbXBvcnRhbnQ7IH1cbmh0bWwgYm9keSAuZW4tZ3JpZCB7XG5kaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7XG5ncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLDFmcikgIWltcG9ydGFudDtcbmdhcDogMjRweCAhaW1wb3J0YW50OyBtYXJnaW4tdG9wOiAyNHB4ICFpbXBvcnRhbnQ7XG59XG5AbWVkaWEobWF4LXdpZHRoOjkwMHB4KXsgaHRtbCBib2R5IC5lbi1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwxZnIpICFpbXBvcnRhbnQ7IH0gfVxuQG1lZGlhKG1heC13aWR0aDo1NjBweCl7IGh0bWwgYm9keSAuZW4tZ3JpZCB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7IH0gfVxuaHRtbCBib2R5IC5lbi1wYWdlLWhlYWRlciB7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nOiA0MHB4IDIwcHggMjRweDsgfVxuaHRtbCBib2R5IC5lbi1wYWdlLXRpdGxlIHsgZm9udC1zaXplOjI4cHg7IGZvbnQtd2VpZ2h0OjcwMDsgY29sb3I6IzBkMTUyNiAhaW1wb3J0YW50OyB9XG5odG1sIGJvZHkgLmVuLXBhZ2UtZGVzYyB7IGNvbG9yOiMzYTRhNzAgIWltcG9ydGFudDsgZm9udC1zaXplOjE1cHg7IH1cbmh0bWwgYm9keSAuZW4tY291bnQgeyB0ZXh0LWFsaWduOnJpZ2h0OyBmb250LXNpemU6MTNweDsgY29sb3I6IzZhN2FhYTsgfVxuaHRtbCBib2R5IC5lbi1sb2FkLW1vcmUgeyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MzJweCBhdXRvIDA7IHBhZGRpbmc6MTJweCAzMnB4OyBiYWNrZ3JvdW5kOiMyYTUwYTAgIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czo4cHg7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGN1cnNvcjpwb2ludGVyOyB9XG5odG1sIGJvZHkgLmVuLWxvYWRpbmcgeyB0ZXh0LWFsaWduOmNlbnRlcjsgY29sb3I6IzZhN2FhYTsgcGFkZGluZzo0MHB4OyB9XG48L3N0eWxlPlxuPHN0eWxlIGlkPVwibW9iLXNlYXJjaC1zdHlsZVwiPlxuLyog4pSA4pSAIOuqqOuwlOydvCDqsoDsg4kg7JWE7J207L2YIOuyhO2KvCDilIDilIAgKi9cbiNtb2Itc2VhcmNoLWJ0biB7XG5kaXNwbGF5OiBub25lO1xuYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG5mbGV4LXNocmluazogMDtcbndpZHRoOiAzNnB4OyBoZWlnaHQ6IDM2cHg7XG5ib3JkZXI6IG5vbmU7IGJhY2tncm91bmQ6IG5vbmU7XG5jdXJzb3I6IHBvaW50ZXI7IHBhZGRpbmc6IDRweDtcbmNvbG9yOiB2YXIoLS10Mik7XG5tYXJnaW4tbGVmdDogNHB4O1xufVxuI21vYi1zZWFyY2gtYnRuIHN2ZyB7IHdpZHRoOiAxOHB4OyBoZWlnaHQ6IDE4cHg7IH1cbi8qIOKUgOKUgCDrqqjrsJTsnbwg6rKA7IOJIOuTnOuhreuLpOyatCDtjKjrhJAg4pSA4pSAICovXG4jbW9iLXNlYXJjaC1vdmVybGF5IHtcbmRpc3BsYXk6IG5vbmU7IHBvc2l0aW9uOiBmaXhlZDtcbnRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDtcbmJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC40NSk7XG56LWluZGV4OiA5OTk4O1xufVxuI21vYi1zZWFyY2gtb3ZlcmxheS5vcGVuIHsgZGlzcGxheTogYmxvY2s7IH1cbiNtb2Itc2VhcmNoLXBhbmVsIHtcbnBvc2l0aW9uOiBmaXhlZDtcbnRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDtcbmJhY2tncm91bmQ6ICNmZmY7XG5wYWRkaW5nOiAxMnB4IDE2cHg7XG56LWluZGV4OiA5OTk5O1xub3ZlcmZsb3c6IGhpZGRlbjtcbmRpc3BsYXk6IG5vbmU7XG5mbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuI21vYi1zZWFyY2gtcGFuZWwub3BlbiB7IGRpc3BsYXk6IGZsZXg7IH1cbiNtb2Itc2VhcmNoLWhlYWRlciB7XG5kaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgbWFyZ2luLWJvdHRvbTogMTBweDtcbn1cbiNtb2Itc2VhcmNoLWNsb3NlIHtcbmJhY2tncm91bmQ6IG5vbmU7IGJvcmRlcjogbm9uZTsgZm9udC1zaXplOiAyMnB4O1xuY29sb3I6IHZhcigtLXQyKTsgY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nOiAwIDRweDsgbGluZS1oZWlnaHQ6IDE7XG5mbGV4LXNocmluazogMDtcbn1cbiNtb2Itc2VhcmNoLWlucCB7XG5mbGV4OiAxOyBwYWRkaW5nOiAxMHB4IDE0cHg7IGZvbnQtc2l6ZTogMTVweDtcbmJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWxpbmUpOyBib3JkZXItcmFkaXVzOiA4cHg7XG5iYWNrZ3JvdW5kOiB2YXIoLS1zdXJmYWNlKTsgY29sb3I6IHZhcigtLXQxKTtcbm91dGxpbmU6IG5vbmU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG4jbW9iLXNlYXJjaC1pbnA6Zm9jdXMgeyBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOyB9XG4jbW9iLXNlYXJjaC1yZXMge1xuZmxleDogMTsgb3ZlcmZsb3cteTogYXV0bzsgYm9yZGVyLXJhZGl1czogOHB4O1xuYmFja2dyb3VuZDogI2ZmZjsgbWluLWhlaWdodDogMDtcbn1cbi5tb2Itc3ItaXRlbSB7XG5kaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7XG5wYWRkaW5nOiAxMHB4IDhweDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpbmUpO1xudGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogaW5oZXJpdDtcbn1cbi5tb2Itc3ItaXRlbTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbTogbm9uZTsgfVxuLm1vYi1zci1pbWcgeyB3aWR0aDogNTJweDsgaGVpZ2h0OiA1MnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IG92ZXJmbG93OiBoaWRkZW47IGZsZXgtc2hyaW5rOiAwOyB9XG4ubW9iLXNyLWltZyBpbWcgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvYmplY3QtZml0OiBjb3ZlcjsgZGlzcGxheTogYmxvY2s7IH1cbi5tb2Itc3ItdGl0bGUgeyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10MSk7IGxpbmUtaGVpZ2h0OiAxLjQ7IH1cbi5tb2Itc3ItZGF0ZSB7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZhcigtLXQzKTsgbWFyZ2luLXRvcDogMnB4OyB9XG4ubW9iLXNyLWVtcHR5IHsgcGFkZGluZzogMTZweCA4cHg7IGNvbG9yOiB2YXIoLS10Myk7IGZvbnQtc2l6ZTogMTNweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9XG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiNtb2Itc2VhcmNoLWJ0biB7IGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfVxufVxuPC9zdHlsZT48c3R5bGUgaWQ9XCJwb3N0LXNpZGViYXItc3R5bGVcIj5cbi8qIO2PrOyKpO2KuCDsgqzsnbTrk5zrsJQg4oCUIGZpeGVkIOuwqeyLnSAqL1xuI3Bvc3Qtc2lkZWJhciB7XG5kaXNwbGF5OiBub25lO1xud2lkdGg6IDI0MHB4O1xucGFkZGluZy10b3A6IDRweDtcbn1cbiNwb3N0LXNpZGViYXIucmVhZHkgeyBkaXNwbGF5OiBibG9jazsgfVxuQG1lZGlhIChtaW4td2lkdGg6IDExMDBweCkge1xuLyog67O466y4IG1heC13aWR0aCDspITsl6zshJwg7Jik66W47Kq9IOyCrOydtOuTnOuwlCDqs7XqsIQg7ZmV67O0ICovXG4ubnl0LXBvc3Qtd3JhcCB7IG1heC13aWR0aDogNzAwcHggIWltcG9ydGFudDsgfVxuI3Bvc3QtYm9keS13cmFwIHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuLm55dC1wb3N0LWNvbnRlbnQgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9XG4jcG9zdC1zaWRlYmFyIHtcbnBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50O1xud2lkdGg6IDIwMHB4ICFpbXBvcnRhbnQ7XG50b3A6IDgwcHggIWltcG9ydGFudDtcbm1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxMDBweCkgIWltcG9ydGFudDtcbm92ZXJmbG93LXk6IGF1dG8gIWltcG9ydGFudDtcbnNjcm9sbGJhci13aWR0aDogbm9uZSAhaW1wb3J0YW50O1xufVxuI3Bvc3Qtc2lkZWJhcjo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH1cbn1cbi5wcy1zZWN0aW9uIHsgbWFyZ2luLWJvdHRvbTogMjRweDsgfVxuLnBzLXRpdGxlIHtcbmZvbnQtc2l6ZTogMTBweDsgZm9udC13ZWlnaHQ6IDcwMDsgbGV0dGVyLXNwYWNpbmc6IC4xZW07XG50ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogdmFyKC0tdDMpO1xuYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIHZhcigtLWdvbGQpO1xucGFkZGluZy1ib3R0b206IDZweDsgbWFyZ2luLWJvdHRvbTogMTJweDtcbn1cbi5wcy1pdGVtIHtcbmRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5wYWRkaW5nOiA4cHggMDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWxpbmUpO1xudGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogaW5oZXJpdDtcbn1cbi5wcy1pdGVtOmxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tOiBub25lOyB9XG4ucHMtaXRlbS1pbWcge1xud2lkdGg6IDUycHg7IGhlaWdodDogNDBweDsgYm9yZGVyLXJhZGl1czogNXB4O1xub3ZlcmZsb3c6IGhpZGRlbjsgZmxleC1zaHJpbms6IDA7XG59XG4ucHMtaXRlbS1pbWcgaW1nIHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgb2JqZWN0LWZpdDogY292ZXI7IGRpc3BsYXk6IGJsb2NrOyB9XG4ucHMtaXRlbS10aXRsZSB7XG5mb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA2MDA7IGNvbG9yOiB2YXIoLS10MSk7XG5saW5lLWhlaWdodDogMS40O1xuZGlzcGxheTogLXdlYmtpdC1ib3g7IC13ZWJraXQtbGluZS1jbGFtcDogMztcbi13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7IG92ZXJmbG93OiBoaWRkZW47XG59XG4ucHMtaXRlbTpob3ZlciAucHMtaXRlbS10aXRsZSB7IGNvbG9yOiB2YXIoLS1nb2xkKTsgfVxuLnBzLWl0ZW0tZGF0ZSB7IGZvbnQtc2l6ZTogMTBweDsgY29sb3I6IHZhcigtLXQzKTsgbWFyZ2luLXRvcDogMnB4OyB9XG4ucHMtbnVtIHtcbmZvbnQtc2l6ZTogMTZweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLWxpbmUpO1xuZmxleC1zaHJpbms6IDA7IHdpZHRoOiAxOHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAxLjI7XG59XG48L3N0eWxlPlxuPHN0eWxlIGlkPVwidGFibGUtd2lkdGgtZml4XCI+XG4ubnl0LXBvc3QtY29udGVudCB0YWJsZSwgLmMtY29udGVudCB0YWJsZSB7XG53aWR0aDogYXV0byAhaW1wb3J0YW50O1xubWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG48L3N0eWxlPlxuPCEtLSA9PT09PT09PT09PT09PT09PSBCRUdJTiBrdGgtY2xhdWRlLXBhdGNoICgyMDI2LTA4LTIzKSA9PT09PT09PT09PT09PT09PVxu7J20IOyjvOyEneu2gO2EsCBFTkQg7KO87ISd6rmM7KeA66eMIOyngOyasOuptCDsmYTsoITtnogg7JuQ656Y64yA66GcIOuPjOyVhOqwkeuLiOuLpC5cbjEpIO2VnOq4gCDrs7jrrLjsnbQg7JiB7Ja066GcIOy5mO2ZmOuQmOuNmCDrrLjsoJwg7LCo64uoXG4yKSDsoJzrqqkg7ISc7LK0IOq1kOyytCjqsIDsp5wg67O865OcIOygnOqxsCkgKyDtjrjsp5Eg65SU7J6Q7J24IOygleumrFxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+XG48bGluayByZWw9XCJwcmVjb25uZWN0XCIgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb21cIj5cbjxsaW5rIHJlbD1cInByZWNvbm5lY3RcIiBocmVmPVwiaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbVwiIGNyb3Nzb3JpZ2luPlxuPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVNvdXJjZStTZXJpZis0Om9wc3osd2dodEA4Li42MCw0MDA7OC4uNjAsNjAwOzguLjYwLDcwMCZmYW1pbHk9SW50ZXI6d2dodEA0MDA7NTAwOzYwMDs3MDAmZGlzcGxheT1zd2FwXCI+XG48bGluayByZWw9XCJzdHlsZXNoZWV0XCIgaHJlZj1cImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9vcmlvbmNhY3R1cy9wcmV0ZW5kYXJkQHYxLjMuOS9kaXN0L3dlYi92YXJpYWJsZS9wcmV0ZW5kYXJkdmFyaWFibGUubWluLmNzc1wiPlxuPHNjcmlwdCBpZD1cImt0aC1pMThuLWd1YXJkXCI+XG4vKiDthYzrp4jsnZggVUkg7JiB66y47ZmUIOyKpO2BrOumve2KuOqwgCDquLDsgqwg7KCc66qpL+uzuOusuCDthY3siqTtirjquYzsp4Ag67CU6r6464qUIOqyg+ydhCDrp4nsirXri4jri6QuXG7quLDsgqwg7JiB7Jet7J2YIO2FjeyKpO2KuCDrhbjrk5zsl5Ag64yA7ZWcIOyTsOq4sOunjCDssKjri6jtlZjqs6AsIO2OmOydtOyngOqwgCDsnpDrpqzrpbwg7J6h7Jy866m0IOyKpOyKpOuhnCDtlbTsoJzrkKnri4jri6QuICovXG4oZnVuY3Rpb24gKCkge1xudmFyIFBST1RFQ1RFRCA9ICcubnl0LXBvc3Qtd3JhcCwuYy1jb250ZW50LC5ueXQtcG9zdC10aXRsZSwua3RoLWNhcmQtdGl0bGUsLmt0aC1jYXJkLWV4Y2VycHQsJyArXG4nLmt0aC1oZXJvLXRpdGxlLC5rdGgtaGVyby1leGNlcnB0LC5rdGgtaGVyby1zaWRlLXRpdGxlLC5rdGgtaGVyby1ib2R5LC5rdGgteXQtdHRsLCcgK1xuJy5rdGgtc2hvcC1zdHJpcC1pbmZvLC5rdGgtc2hvcC1zdHJpcC1uYW1lLC5rdGgtc2hvcC1zdHJpcC1wcmljZSwuYmx1ZWRvdC1wcm9kdWN0LWNhcmQnO1xuZnVuY3Rpb24gaXNQcm90ZWN0ZWRUZXh0KG4pIHtcbnRyeSB7XG5pZiAod2luZG93Ll9fS1RIX1dSSVRFKSByZXR1cm4gZmFsc2U7ICAgLy8g7Jqw66asIOyKpO2BrOumve2KuOydmCDsk7DquLDripQg7ZeI7JqpXG5pZiAoIW4gfHwgbi5ub2RlVHlwZSAhPT0gMykgcmV0dXJuIGZhbHNlO1xudmFyIHAgPSBuLnBhcmVudEVsZW1lbnQ7XG5yZXR1cm4gISEocCAmJiBwLmNsb3Nlc3QgJiYgcC5jbG9zZXN0KFBST1RFQ1RFRCkpO1xufSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH1cbn1cbnZhciBwYXRjaGVkID0gW107XG5mdW5jdGlvbiBndWFyZChwcm90bywgcHJvcCkge1xudHJ5IHtcbnZhciBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgcHJvcCk7XG5pZiAoIWQgfHwgIWQuc2V0KSByZXR1cm47XG5PYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sIHByb3AsIHtcbmNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZC5lbnVtZXJhYmxlLCBnZXQ6IGQuZ2V0LFxuc2V0OiBmdW5jdGlvbiAodikgeyBpZiAoaXNQcm90ZWN0ZWRUZXh0KHRoaXMpKSByZXR1cm47IGQuc2V0LmNhbGwodGhpcywgdik7IH1cbn0pO1xucGF0Y2hlZC5wdXNoKFtwcm90bywgcHJvcCwgZF0pO1xufSBjYXRjaCAoZSkge31cbn1cbmd1YXJkKE5vZGUucHJvdG90eXBlLCAnbm9kZVZhbHVlJyk7XG5ndWFyZChOb2RlLnByb3RvdHlwZSwgJ3RleHRDb250ZW50Jyk7XG5ndWFyZChDaGFyYWN0ZXJEYXRhLnByb3RvdHlwZSwgJ2RhdGEnKTtcbmZ1bmN0aW9uIHJlbGVhc2UoKSB7XG5wYXRjaGVkLmZvckVhY2goZnVuY3Rpb24gKHApIHsgdHJ5IHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHBbMF0sIHBbMV0sIHBbMl0pOyB9IGNhdGNoIChlKSB7fSB9KTtcbnBhdGNoZWQgPSBbXTtcbn1cbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgeyBzZXRUaW1lb3V0KHJlbGVhc2UsIDUwMDApOyB9KTtcbnNldFRpbWVvdXQocmVsZWFzZSwgMjAwMDApO1xufSkoKTtcbjwvc2NyaXB0PlxuPCEtLSDsiqTtg4DsnbzsnYAg7IKs7J207Yq4IO2RuO2EsOuhnCDsnbTrj5ntlojsirXri4jri6QgLS0+XG48IS0tID09PT09PT09PT09PT09PT09IEVORCBrdGgtY2xhdWRlLXBhdGNoID09PT09PT09PT09PT09PT09IC0tPlxuPHNjcmlwdCBpZD1cImt0aC1wYWlybWFwXCI+KGZ1bmN0aW9uKCl7dmFyIEs9XCJrdGhwX21hcF92MlwiLFQ9XCJrdGhwX21hcF90MlwiO3RyeXt2YXIgYz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShLKSx0PStsb2NhbFN0b3JhZ2UuZ2V0SXRlbShUKXx8MDtpZihjJiZjLmxlbmd0aD4yMDAwJiZEYXRlLm5vdygpLXQ8ODY0ZTUpe3dpbmRvdy5LVEhQPWM7cmV0dXJuO319Y2F0Y2goZSl7fXdpbmRvdy5LVEhQPVwiXCI7d2luZG93LktUSFBSRUFEWT1mZXRjaChcIi9rdGgtcGFpcnMvXCIse2NyZWRlbnRpYWxzOlwic2FtZS1vcmlnaW5cIn0pLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHIub2s/ci50ZXh0KCk6XCJcIjt9KS50aGVuKGZ1bmN0aW9uKGgpe2lmKCFoKXJldHVybjt2YXIgZD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGgsXCJ0ZXh0L2h0bWxcIik7dmFyIGVsPWQuZ2V0RWxlbWVudEJ5SWQoXCJrdGhwLWRhdGFcIik7aWYoIWVsKXJldHVybjt2YXIgdj0oZWwudGV4dENvbnRlbnR8fFwiXCIpLnRyaW0oKTtpZih2Lmxlbmd0aDwxMDApcmV0dXJuO3dpbmRvdy5LVEhQPXY7dHJ5e2xvY2FsU3RvcmFnZS5zZXRJdGVtKEssdik7bG9jYWxTdG9yYWdlLnNldEl0ZW0oVCxEYXRlLm5vdygpKTt9Y2F0Y2goZSl7fX0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7fSkoKTs8L3NjcmlwdD5cbjxzdHlsZSBpZD1cImt0aC12MlwiPlxuLmt0aC1wYWlye2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjMwcHggMCAyNnB4O2JvcmRlcjoxcHggc29saWQgI0UzREZENjtib3JkZXItbGVmdDozcHggc29saWQgIzE2MzA1QztiYWNrZ3JvdW5kOiNGQUY4RjQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c31cbi5rdGgtcGFpcjpob3ZlcntiYWNrZ3JvdW5kOiNGM0YwRTh9XG4ua3RoLXBhaXItbGFiZWx7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEzcHggMTdweCAwO2ZvbnQ6NzAwIDEwLjVweC8xLjUgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjE1ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiMxNjMwNUN9XG4ua3RoLXBhaXItcm93e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxNXB4O3BhZGRpbmc6OHB4IDE3cHggMTVweH1cbi5rdGgtcGFpci10aHtmbGV4OjAgMCAxMThweDt3aWR0aDoxMThweDtoZWlnaHQ6ODRweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojRUZFREU4O2JvcmRlci1yYWRpdXM6MnB4fVxuLmt0aC1wYWlyLXRoIGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7ZGlzcGxheTpibG9ja31cbi5rdGgtcGFpci1ib2R5e2ZsZXg6MSAxIGF1dG87bWluLXdpZHRoOjB9XG4ua3RoLXBhaXItdHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuNDI7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxNDE1MUF9XG4ua3RoLXBhaXIteHtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luLXRvcDo2cHg7Zm9udC1zaXplOjEzcHg7bGluZS1oZWlnaHQ6MS42O2NvbG9yOiM1QTU5NTJ9XG4ua3RoLXBhaXItYXtkaXNwbGF5OmlubGluZS1ibG9jazttYXJnaW4tdG9wOjhweDtmb250OjcwMCAxMC41cHgvMSBJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMTJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzlBN0IzRn1cbkBtZWRpYShtYXgtd2lkdGg6NjAwcHgpey5rdGgtcGFpci1yb3d7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMXB4O3BhZGRpbmc6OHB4IDE0cHggMTRweH0ua3RoLXBhaXItbGFiZWx7cGFkZGluZzoxMnB4IDE0cHggMH0ua3RoLXBhaXItdGh7ZmxleDowIDAgYXV0bzt3aWR0aDoxMDAlO2hlaWdodDoxNjhweH0ua3RoLXBhaXItdHtmb250LXNpemU6MTUuNXB4fX1cbmh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCAua2ctYm9va21hcmstY2FyZCxodG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQgZmlndXJlLmtnLWJvb2ttYXJrLWNhcmR7Ym9yZGVyOjFweCBzb2xpZCAjRTNERkQ2IWltcG9ydGFudDtib3JkZXItbGVmdDozcHggc29saWQgIzE0MTUxQSFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDtiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50O21hcmdpbjoyZW0gMCFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50fVxuaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IC5rZy1ib29rbWFyay1jYXJkOjpiZWZvcmV7Y29udGVudDpcIlJFTEFURURcIiFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7Zm9udDo3MDAgMTBweC8xLjYgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWYhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4xOGVtIWltcG9ydGFudDtjb2xvcjojOEE4ODdGIWltcG9ydGFudDtwYWRkaW5nOjE0cHggMThweCAwIWltcG9ydGFudDtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudH1cbmh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCAua2ctYm9va21hcmstY29udGFpbmVye2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6c3RyZXRjaCFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O2NvbG9yOmluaGVyaXQhaW1wb3J0YW50O3BhZGRpbmc6OHB4IDE4cHggMTZweCFpbXBvcnRhbnQ7Z2FwOjE2cHghaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O2JveC1zaGFkb3c6bm9uZSFpbXBvcnRhbnQ7bWluLWhlaWdodDowIWltcG9ydGFudH1cbmh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCAua2ctYm9va21hcmstY29udGVudHtmbGV4OjEgMSBhdXRvIWltcG9ydGFudDttaW4td2lkdGg6MCFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudH1cbmh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCAua2ctYm9va21hcmstdGl0bGV7Zm9udC1zaXplOjE2cHghaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zNiFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O2NvbG9yOiMxNDE1MUEhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudH1cbmh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCAua2ctYm9va21hcmstZGVzY3JpcHRpb257Zm9udC1zaXplOjEzLjVweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS42IWltcG9ydGFudDtjb2xvcjojNUE1OTUyIWltcG9ydGFudDttYXJnaW4tdG9wOjZweCFpbXBvcnRhbnQ7ZGlzcGxheTotd2Via2l0LWJveCFpbXBvcnRhbnQ7LXdlYmtpdC1saW5lLWNsYW1wOjI7LXdlYmtpdC1ib3gtb3JpZW50OnZlcnRpY2FsO292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7bWF4LWhlaWdodDpub25lIWltcG9ydGFudH1cbmh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCAua2ctYm9va21hcmstbWV0YWRhdGF7Zm9udC1zaXplOjExLjVweCFpbXBvcnRhbnQ7Y29sb3I6IzhBODg3RiFpbXBvcnRhbnQ7bWFyZ2luLXRvcDo4cHghaW1wb3J0YW50fVxuaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IC5rZy1ib29rbWFyay10aHVtYm5haWx7ZmxleDowIDAgMTMycHghaW1wb3J0YW50O3dpZHRoOjEzMnB4IWltcG9ydGFudDttYXgtd2lkdGg6MTMycHghaW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDttaW4taGVpZ2h0OjkycHghaW1wb3J0YW50O2FsaWduLXNlbGY6c3RyZXRjaCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czowIWltcG9ydGFudDttYXJnaW46MCFpbXBvcnRhbnR9XG5odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQgLmtnLWJvb2ttYXJrLXRodW1ibmFpbCBpbWd7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlIWltcG9ydGFudDtoZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpjb3ZlciFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MCFpbXBvcnRhbnQ7bWF4LXdpZHRoOm5vbmUhaW1wb3J0YW50fVxuQG1lZGlhKG1heC13aWR0aDo2MDBweCl7aHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IC5rZy1ib29rbWFyay1jb250YWluZXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1uLXJldmVyc2UhaW1wb3J0YW50O2dhcDoxMnB4IWltcG9ydGFudH1odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQgLmtnLWJvb2ttYXJrLXRodW1ibmFpbHtmbGV4OjAgMCBhdXRvIWltcG9ydGFudDt3aWR0aDoxMDAlIWltcG9ydGFudDttYXgtd2lkdGg6bm9uZSFpbXBvcnRhbnQ7aGVpZ2h0OjE3MHB4IWltcG9ydGFudH19XG4ua3RoLXR3e292ZXJmbG93LXg6YXV0bzstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDttYXJnaW46MS45ZW0gMDtib3JkZXItdG9wOjJweCBzb2xpZCAjMTQxNTFBO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNDOUM0Qjd9XG5odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQgdGFibGV7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlIWltcG9ydGFudDtib3JkZXI6MCFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxNHB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjU1IWltcG9ydGFudDtiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50fVxuaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRkLGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0aHtib3JkZXI6MCFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0VGRURFOCFpbXBvcnRhbnQ7cGFkZGluZzoxMXB4IDE0cHghaW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOnRvcCFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudDtjb2xvcjojMjYyNzJDIWltcG9ydGFudDtiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50fVxuaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRyOmZpcnN0LWNoaWxkIHRkLGh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0aHtiYWNrZ3JvdW5kOiMxNjMwNUMhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7Zm9udC1zaXplOjExLjVweCFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjA3ZW0haW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbTowIWltcG9ydGFudDtwYWRkaW5nOjEycHggMTRweCFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm93cmFwIWltcG9ydGFudH1cbmh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0cjpudGgtY2hpbGQob2RkKTpub3QoOmZpcnN0LWNoaWxkKSB0ZHtiYWNrZ3JvdW5kOiNGQkZBRjchaW1wb3J0YW50fVxuaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRyIHRkOmZpcnN0LWNoaWxke2ZvbnQtd2VpZ2h0OjYwMCFpbXBvcnRhbnQ7Y29sb3I6IzE0MTUxQSFpbXBvcnRhbnQ7YmFja2dyb3VuZDojRjVGMkVDIWltcG9ydGFudH1cbmh0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCB0YWJsZSB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZHtiYWNrZ3JvdW5kOiMxNjMwNUMhaW1wb3J0YW50fVxuaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRyOmZpcnN0LWNoaWxkIHRkICp7Y29sb3I6I2ZmZiFpbXBvcnRhbnQ7Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0YW50O2ZvbnQtZmFtaWx5OmluaGVyaXQhaW1wb3J0YW50fVxuaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRkICp7Zm9udC1zaXplOmluaGVyaXQhaW1wb3J0YW50O2ZvbnQtZmFtaWx5OmluaGVyaXQhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OmluaGVyaXQhaW1wb3J0YW50O2NvbG9yOiMyNjI3MkMhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnR9XG5odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdHIgdGQ6Zmlyc3QtY2hpbGQsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRyIHRkOmZpcnN0LWNoaWxkICp7Y29sb3I6IzE0MTUxQSFpbXBvcnRhbnR9XG5odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdHI6Zmlyc3QtY2hpbGQgdGQsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRyOmZpcnN0LWNoaWxkIHRkICp7Y29sb3I6I2ZmZiFpbXBvcnRhbnR9XG5odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdHI6bGFzdC1jaGlsZCB0ZHtib3JkZXItYm90dG9tOjAhaW1wb3J0YW50fVxuaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHB7bWFyZ2luOjAhaW1wb3J0YW50O2ZvbnQtc2l6ZTppbmhlcml0IWltcG9ydGFudDtsaW5lLWhlaWdodDppbmhlcml0IWltcG9ydGFudH1cbkBtZWRpYShtYXgtd2lkdGg6NjAwcHgpe2h0bWwgYm9keSAuYy1jb250ZW50LmMtY29udGVudCB0YWJsZXtmb250LXNpemU6MTNweCFpbXBvcnRhbnQ7bWluLXdpZHRoOjU0MHB4IWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudH1odG1sIGJvZHkgLmMtY29udGVudC5jLWNvbnRlbnQgdGFibGUgdGQsaHRtbCBib2R5IC5jLWNvbnRlbnQuYy1jb250ZW50IHRhYmxlIHRoe3BhZGRpbmc6OXB4IDEwcHghaW1wb3J0YW50fS5rdGgtdHd7cG9zaXRpb246cmVsYXRpdmV9Lmt0aC10dzphZnRlcntjb250ZW50OlwiXFwyMTkyIFxcQzYwNlxcQzczQ1xcQjg1QyBcXEJDMDBcXEM1QjRcXEJDRjRcXEMxMzhcXEM2OTRcIjtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDo2cHg7dG9wOi0xOHB4O2ZvbnQ6NjAwIDEwcHgvMSBJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMDZlbTtjb2xvcjojOUE5NzkwfX1cbkBtZWRpYShtYXgtd2lkdGg6ODIwcHgpey5oZWFkZXItbmF2LWJhcnttaW4td2lkdGg6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudH0uc2l0ZS1uYXZ7bWluLXdpZHRoOjAhaW1wb3J0YW50O21heC13aWR0aDoxMDAlIWltcG9ydGFudDtvdmVyZmxvdy14OmF1dG8haW1wb3J0YW50O292ZXJmbG93LXk6aGlkZGVuIWltcG9ydGFudDtzY3JvbGxiYXItd2lkdGg6bm9uZTstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaH0uc2l0ZS1uYXY6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0uc2l0ZS1uYXYgLm5hdi1pbm5lcntmbGV4LXdyYXA6bm93cmFwIWltcG9ydGFudDt3aWR0aDptYXgtY29udGVudCFpbXBvcnRhbnQ7bWluLXdpZHRoOjAhaW1wb3J0YW50fS5zaXRlLW5hdiB1bC5uYXZ7ZmxleC13cmFwOm5vd3JhcCFpbXBvcnRhbnQ7d2lkdGg6bWF4LWNvbnRlbnQhaW1wb3J0YW50O21pbi13aWR0aDowIWltcG9ydGFudH0uc2l0ZS1uYXYgdWwubmF2Pmxpe2ZsZXg6MCAwIGF1dG8haW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcCFpbXBvcnRhbnR9fVxuQG1lZGlhKG1heC13aWR0aDo2MDBweCl7XG4ua3RoLWNhcmQtdGl0bGUua3RoLWNhcmQtdGl0bGUua3RoLWNhcmQtdGl0bGUua3RoLWNhcmQtdGl0bGUua3RoLWNhcmQtdGl0bGV7Zm9udC1zaXplOjE2LjVweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zNiFpbXBvcnRhbnR9XG4ua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGV7Zm9udC1zaXplOjI1cHghaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuMjQhaW1wb3J0YW50fVxuLmt0aC1oZXJvLXNpZGUtdGl0bGUua3RoLWhlcm8tc2lkZS10aXRsZS5rdGgtaGVyby1zaWRlLXRpdGxlLmt0aC1oZXJvLXNpZGUtdGl0bGV7Zm9udC1zaXplOjE1cHghaW1wb3J0YW50fVxuLm55dC1wb3N0LXRpdGxlLm55dC1wb3N0LXRpdGxlLm55dC1wb3N0LXRpdGxlLm55dC1wb3N0LXRpdGxle2ZvbnQtc2l6ZToyNnB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjI4IWltcG9ydGFudH1cbi5rdGgtY2FyZC1leGNlcnB0Lmt0aC1jYXJkLWV4Y2VycHQua3RoLWNhcmQtZXhjZXJwdHtmb250LXNpemU6MTNweCFpbXBvcnRhbnR9XG4uYy1jb250ZW50LmMtY29udGVudC5jLWNvbnRlbnR7Zm9udC1zaXplOjE2LjVweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS44IWltcG9ydGFudH1cbn1cbjwvc3R5bGU+XG48c2NyaXB0IGlkPVwia3RoLXYyanNcIj5cbihmdW5jdGlvbigpe1xudmFyIEQ9ZG9jdW1lbnQ7XG5mdW5jdGlvbiBzdHJpcChyb290KXt2YXIgZWxzPXJvb3QucXVlcnlTZWxlY3RvckFsbCgndGFibGUsdGFibGUgKicpO1xuZm9yKHZhciBpPTA7aTxlbHMubGVuZ3RoO2krKyl7dmFyIGU9ZWxzW2ldLHM9ZS5nZXRBdHRyaWJ1dGUoJ3N0eWxlJyk7aWYoIXMpY29udGludWU7XG52YXIga2VlcD1zLnNwbGl0KCc7JykuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiBkJiYhL15cXHMqKGJhY2tncm91bmR8YmFja2dyb3VuZC1jb2xvcnxjb2xvcnxib3JkZXJbYS16LV0qfGJveC1zaGFkb3d8Zm9udC1zaXplfGZvbnQtZmFtaWx5fGxpbmUtaGVpZ2h0KVxccyo6L2kudGVzdChkKTt9KTtcbmlmKGtlZXAubGVuZ3RoKWUuc2V0QXR0cmlidXRlKCdzdHlsZScsa2VlcC5qb2luKCc7JykpO2Vsc2UgZS5yZW1vdmVBdHRyaWJ1dGUoJ3N0eWxlJyk7fX1cbmZ1bmN0aW9uIHdyYXBUKCl7dmFyIGM9RC5xdWVyeVNlbGVjdG9yKCcuYy1jb250ZW50Jyk7aWYoYylzdHJpcChjKTtcbltdLmZvckVhY2guY2FsbChELnF1ZXJ5U2VsZWN0b3JBbGwoJy5jLWNvbnRlbnQgdGFibGUnKSxmdW5jdGlvbih0KXt2YXIgcD10LnBhcmVudEVsZW1lbnQ7aWYocCYmcC5jbGFzc05hbWU9PT0na3RoLXR3JylyZXR1cm47dmFyIHc9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTt3LmNsYXNzTmFtZT0na3RoLXR3Jzt0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHcsdCk7dy5hcHBlbmRDaGlsZCh0KTt9KTt9XG5mdW5jdGlvbiBzbHVnKCl7dmFyIGE9bG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvKyQvLCcnKS5zcGxpdCgnLycpO3JldHVybiBhW2EubGVuZ3RoLTFdO31cbmZ1bmN0aW9uIG1hdGUocyl7dmFyIG09d2luZG93LktUSFA7aWYoIW18fG0uaW5kZXhPZihzKTwwKXJldHVybiBudWxsO3ZhciBwcz1tLnNwbGl0KCd+Jyk7Zm9yKHZhciBpPTA7aTxwcy5sZW5ndGg7aSsrKXt2YXIgcD1wc1tpXS5zcGxpdCgnfCcpO2lmKHBbMF09PT1zKXJldHVybiBwWzFdO2lmKHBbMV09PT1zKXJldHVybiBwWzBdO31yZXR1cm4gbnVsbDt9XG5mdW5jdGlvbiBtb3VudChocmVmLHRpdGxlLGVuLGltZyxkZXNjKXtcbmlmKEQucXVlcnlTZWxlY3RvcignLmt0aC1wYWlyJykpcmV0dXJuO1xudmFyIGhvc3Q9RC5xdWVyeVNlbGVjdG9yKCcubnl0LXBvc3QtY29udGVudCcpfHxELnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC13cmFwJyk7aWYoIWhvc3QpcmV0dXJuO1xudmFyIGE9RC5jcmVhdGVFbGVtZW50KCdhJyk7YS5jbGFzc05hbWU9J2t0aC1wYWlyJzthLmhyZWY9aHJlZjthLnNldEF0dHJpYnV0ZSgnaHJlZmxhbmcnLGVuPydrbyc6J2VuJyk7XG52YXIgbGI9RC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7bGIuY2xhc3NOYW1lPSdrdGgtcGFpci1sYWJlbCc7bGIudGV4dENvbnRlbnQ9ZW4/J+2VnOq1reyWtOuhnCDsnb3quLAgwrcgS09SRUFOIEVESVRJT04nOidSRUFEIElOIEVOR0xJU0gnO1xudmFyIHJvdz1ELmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtyb3cuY2xhc3NOYW1lPSdrdGgtcGFpci1yb3cnO1xuaWYoaW1nKXt2YXIgdGg9RC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7dGguY2xhc3NOYW1lPSdrdGgtcGFpci10aCc7dmFyIGltPUQuY3JlYXRlRWxlbWVudCgnaW1nJyk7aW0uYWx0PScnO2ltLmxvYWRpbmc9J2xhenknO2ltLnNyYz1pbWc7dGguYXBwZW5kQ2hpbGQoaW0pO3Jvdy5hcHBlbmRDaGlsZCh0aCk7fVxudmFyIGJkPUQuY3JlYXRlRWxlbWVudCgnc3BhbicpO2JkLmNsYXNzTmFtZT0na3RoLXBhaXItYm9keSc7XG52YXIgdD1ELmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTt0LmNsYXNzTmFtZT0na3RoLXBhaXItdCc7dC50ZXh0Q29udGVudD10aXRsZTtiZC5hcHBlbmRDaGlsZCh0KTtcbmlmKGRlc2Mpe3ZhciB4PUQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3guY2xhc3NOYW1lPSdrdGgtcGFpci14Jzt4LnRleHRDb250ZW50PWRlc2M7YmQuYXBwZW5kQ2hpbGQoeCk7fVxudmFyIGFyPUQuY3JlYXRlRWxlbWVudCgnc3BhbicpO2FyLmNsYXNzTmFtZT0na3RoLXBhaXItYSc7YXIudGV4dENvbnRlbnQ9KGVuPyfquLDsgqwg67O06riwJzonVmlldyBhcnRpY2xlJykrJyBcXHUyMTkyJztiZC5hcHBlbmRDaGlsZChhcik7XG5yb3cuYXBwZW5kQ2hpbGQoYmQpO2EuYXBwZW5kQ2hpbGQobGIpO2EuYXBwZW5kQ2hpbGQocm93KTtcbmhvc3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSxob3N0KTtcbnZhciBsaz1ELmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtsay5yZWw9J2FsdGVybmF0ZSc7bGsuaHJlZmxhbmc9ZW4/J2tvJzonZW4nO2xrLmhyZWY9bG9jYXRpb24ub3JpZ2luK2hyZWY7RC5oZWFkLmFwcGVuZENoaWxkKGxrKTtcbnZhciBsazI9RC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7bGsyLnJlbD0nYWx0ZXJuYXRlJztsazIuaHJlZmxhbmc9ZW4/J2VuJzona28nO2xrMi5ocmVmPWxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZTtELmhlYWQuYXBwZW5kQ2hpbGQobGsyKTtcbn1cbmZ1bmN0aW9uIG1ldGEoaCxuKXt2YXIgbT1oLm1hdGNoKG5ldyBSZWdFeHAoJzxtZXRhW14+XSsoPzpwcm9wZXJ0eXxuYW1lKT1cIicrbisnXCJbXj5dKmNvbnRlbnQ9XCIoW15cIl0qKVwiJywnaScpKTtcbmlmKCFtKW09aC5tYXRjaChuZXcgUmVnRXhwKCc8bWV0YVtePl0rY29udGVudD1cIihbXlwiXSopXCJbXj5dKyg/OnByb3BlcnR5fG5hbWUpPVwiJytuKydcIicsJ2knKSk7XG5yZXR1cm4gbT9tWzFdOicnO31cbmZ1bmN0aW9uIGRlYyhzKXtyZXR1cm4gU3RyaW5nKHN8fCcnKS5yZXBsYWNlKC8mYW1wOy9nLCcmJykucmVwbGFjZSgvJiN4Mjc7fCYjMzk7L2csXCInXCIpLnJlcGxhY2UoLyZxdW90Oy9nLCdcIicpLnJlcGxhY2UoLyZsdDsvZywnPCcpLnJlcGxhY2UoLyZndDsvZywnPicpLnJlcGxhY2UoLyYjKFxcZCspOy9nLGZ1bmN0aW9uKF8sZCl7cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoK2QpO30pLnRyaW0oKTt9XG5mdW5jdGlvbiBzaG93KGMsZW4pe1xudmFyIGs9J2t0aHAyXycrYyxjZD1udWxsO3RyeXtjZD1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGspO31jYXRjaChlKXt9XG5pZihjZCl7dHJ5e3ZhciBvPUpTT04ucGFyc2UoY2QpO21vdW50KCcvJytjKycvJyxvLnQsZW4sby5pLG8uZCk7cmV0dXJuO31jYXRjaChlKXt9fVxuZmV0Y2goJy8nK2MrJy8nLHtjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nfSkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5vaz9yLnRleHQoKTonJzt9KS50aGVuKGZ1bmN0aW9uKGgpe1xuaWYoIWgpcmV0dXJuO1xudmFyIHQ9ZGVjKG1ldGEoaCwnb2c6dGl0bGUnKSk7XG5pZighdCl7dmFyIG09aC5tYXRjaCgvPHRpdGxlPihbXjxdKik8XFwvdGl0bGU+Lyk7dD1tP2RlYyhtWzFdKS5yZXBsYWNlKC9cXHMqXFx8XFxzKkstRW50ZXJUZWNoIEh1YlxccyokLywnJyk6Jyc7fVxuaWYoIXQpcmV0dXJuO1xudmFyIGk9ZGVjKG1ldGEoaCwnb2c6aW1hZ2UnKSksZD1kZWMobWV0YShoLCdvZzpkZXNjcmlwdGlvbicpKTtcbnRyeXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGssSlNPTi5zdHJpbmdpZnkoe3Q6dCxpOmksZDpkfSkpO31jYXRjaChlKXt9XG5tb3VudCgnLycrYysnLycsdCxlbixpLGQpO1xufSkuY2F0Y2goZnVuY3Rpb24oKXt9KTtcbn1cbnZhciBTVz1cIiB0aGUgYW5kIGZvciB3aXRoIGZyb20gaXRzIGhhcyBhcmUgeW91IG91dCBuZXcgbm90IGJ1dCBhbGwgbW9yZSB0aGFuIGludG8gb3ZlciBhZnRlciB0aGF0IHRoaXMgd2hvIHdoeSBob3cgc2F5cyBzYXkgd2lsbCBjYW4gbm93IG9uZSB0d28gYW1pZCBzZXRzIHNldCBnZXQgZ2V0cyBhZGQgYWRkcyB0b3Agd2hhdCB3aGVuIHdoZXJlIGhpcyBoZXIgdGhlaXIgdGhleSB0aGVtIHdhcyB3ZXJlIGJlZW4gYmVpbmcgaGF2ZSBoYWQgYWxzbyBqdXN0IG9ubHkgbW9zdCBzb21lIHN1Y2ggdmVyeSBtdWNoIG1hbnkgXCI7XG5mdW5jdGlvbiB0ayhzKXt2YXIgYT0ocy5tYXRjaCgvW0EtWmEtel1bQS1aYS16J1xcdTIwMTldezIsfXxcXGRbXFxkLixdKi9nKXx8W10pLG89W10saTtcbmZvcihpPTA7aTxhLmxlbmd0aDtpKyspe3ZhciB3PWFbaV0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bLixdKyQvLCcnKTtpZih3Lmxlbmd0aDwyKWNvbnRpbnVlO2lmKFNXLmluZGV4T2YoJyAnK3crJyAnKT49MCljb250aW51ZTtpZihvLmluZGV4T2Yodyk8MClvLnB1c2godyk7fXJldHVybiBvO31cbmZ1bmN0aW9uIHJzcyhlbix0aXRsZSl7XG52YXIgaGVyZT1sb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8rJC8sJycpKycvJztcbmZldGNoKCcvcnNzLycse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbid9KS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLm9rP3IudGV4dCgpOicnO30pLnRoZW4oZnVuY3Rpb24oeCl7XG5pZigheClyZXR1cm47XG52YXIgZD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHgsJ3RleHQveG1sJyksaXQ9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaXRlbScpLEw9W10saTtcbmZvcihpPTA7aTxpdC5sZW5ndGg7aSsrKXsoZnVuY3Rpb24obil7ZnVuY3Rpb24gZyh0KXt2YXIgZT1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKHQpWzBdO3JldHVybiBlPyhlLnRleHRDb250ZW50fHwnJyk6Jyc7fVxuTC5wdXNoKHt0OmcoJ3RpdGxlJykscDpnKCdsaW5rJykucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC9bXi9dKy8sJycpLnJlcGxhY2UoL1xcLyskLywnJykrJy8nLHRzOituZXcgRGF0ZShnKCdwdWJEYXRlJykpfSk7fSkoaXRbaV0pO31cbnZhciBtZT1udWxsO2ZvcihpPTA7aTxMLmxlbmd0aDtpKyspe2lmKExbaV0ucD09PWhlcmUpbWU9TFtpXTt9XG52YXIgbXQ9bWU/bWUudDp0aXRsZSxtdHM9bWU/bWUudHM6RGF0ZS5ub3coKSxtaz10ayhtdCksYmVzdD1udWxsO1xuZm9yKGk9MDtpPEwubGVuZ3RoO2krKyl7dmFyIG89TFtpXTtpZihvLnA9PT1oZXJlKWNvbnRpbnVlO1xudmFyIG9lbj0hL1vqsIAt7Z6jXS8udGVzdChvLnQpO2lmKG9lbj09PWVuKWNvbnRpbnVlO1xudmFyIGR0PU1hdGguYWJzKG8udHMtbXRzKS84NjQwMDAwMDtpZihkdD40KWNvbnRpbnVlO1xudmFyIG9rPXRrKG8udCksb3Y9MCxyYXJlPTAsajtcbmZvcihqPTA7ajxvay5sZW5ndGg7aisrKXtpZihtay5pbmRleE9mKG9rW2pdKT49MCl7b3YrKztpZigvXFxkLy50ZXN0KG9rW2pdKXx8b2tbal0ubGVuZ3RoPj01KXJhcmUrKzt9fVxuaWYoIW92KWNvbnRpbnVlO3ZhciBzYz1vdityYXJlKjAuOC1kdCowLjU7XG5pZighYmVzdHx8c2M+YmVzdC5zYyliZXN0PXtzYzpzYyxvdjpvdixyYXJlOnJhcmUsbzpvfTt9XG5pZihiZXN0JiYoYmVzdC5vdj49Mnx8YmVzdC5yYXJlPj0xKSl7dmFyIHNsPWJlc3Quby5wLnJlcGxhY2UoL15cXC8vLCcnKS5yZXBsYWNlKC9cXC8kLywnJyk7c2hvdyhzbCxlbik7fVxufSkuY2F0Y2goZnVuY3Rpb24oKXt9KTtcbn1cbmZ1bmN0aW9uIHJ1bigpe1xud3JhcFQoKTtcbnZhciB0ZT1ELnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC10aXRsZScpO2lmKCF0ZSlyZXR1cm47XG52YXIgZW49IS9b6rCALe2eo10vLnRlc3QodGUudGV4dENvbnRlbnR8fCcnKTtcbmZ1bmN0aW9uIHN0ZXAoKXt2YXIgYz1tYXRlKHNsdWcoKSk7aWYoYyl7c2hvdyhjLGVuKTtyZXR1cm47fXJzcyhlbix0ZS50ZXh0Q29udGVudHx8JycpO31cbmlmKHdpbmRvdy5LVEhQKXN0ZXAoKTtlbHNlIGlmKHdpbmRvdy5LVEhQUkVBRFkpd2luZG93LktUSFBSRUFEWS50aGVuKHN0ZXApO2Vsc2Ugc3RlcCgpO1xufVxuaWYoRC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKUQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcscnVuKTtlbHNlIHJ1bigpO1xuc2V0VGltZW91dCh3cmFwVCwxMjAwKTtzZXRUaW1lb3V0KHdyYXBULDMwMDApO1xufSkoKTtcbjwvc2NyaXB0PlxuPHN0eWxlIGlkPVwia3RoLXYzXCI+XG4ua3RoLW5sYnttYXJnaW46NDRweCAwIDA7cGFkZGluZzozMHB4IDI4cHg7YmFja2dyb3VuZDojMTQxNTFBO2NvbG9yOiNmZmY7Ym9yZGVyLXJhZGl1czoycHh9XG4ua3RoLW5sYi1re2ZvbnQ6NzAwIDEwLjVweC8xIEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4yZW07Y29sb3I6IzlBN0IzRjt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9XG4ua3RoLW5sYi10e21hcmdpbi10b3A6MTJweDtmb250LXNpemU6MjFweDtsaW5lLWhlaWdodDoxLjM0O2ZvbnQtd2VpZ2h0OjcwMDtsZXR0ZXItc3BhY2luZzotLjAxZW19XG4ua3RoLW5sYi1ze21hcmdpbi10b3A6OXB4O2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS42NTtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC42Mik7bWF4LXdpZHRoOjQ2ZW19XG4ua3RoLW5sYi1ie2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi10b3A6MThweDtwYWRkaW5nOjExcHggMjJweDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzE0MTUxQSFpbXBvcnRhbnQ7Zm9udDo3MDAgMTEuNXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjEyZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjJweH1cbi5rdGgtbmxiLWI6aG92ZXJ7YmFja2dyb3VuZDojOUE3QjNGO2NvbG9yOiNmZmYhaW1wb3J0YW50fVxuLmt0aC1tb3Jle21hcmdpbjo0NHB4IDAgOHB4fVxuLmt0aC1tb3JlLWh7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTZweDtmb250OjcwMCAxMXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzE0MTUxQTttYXJnaW4tYm90dG9tOjIwcHh9XG4ua3RoLW1vcmUtaDphZnRlcntjb250ZW50OlwiXCI7ZmxleDoxO2hlaWdodDoxcHg7YmFja2dyb3VuZDojRTNERkQ2fVxuLmt0aC1tb3JlLWd7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoNCwxZnIpO2dhcDoyMHB4fVxuLmt0aC1tb3JlLWN7ZGlzcGxheTpibG9jazt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7Y29sb3I6aW5oZXJpdCFpbXBvcnRhbnR9XG4ua3RoLW1vcmUtdGh7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzo0LzM7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6I0VGRURFODtib3JkZXItcmFkaXVzOjJweH1cbi5rdGgtbW9yZS10aCBpbWd7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvdmVyO2Rpc3BsYXk6YmxvY2s7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjVzfVxuLmt0aC1tb3JlLWM6aG92ZXIgLmt0aC1tb3JlLXRoIGltZ3t0cmFuc2Zvcm06c2NhbGUoMS4wNDUpfVxuLmt0aC1tb3JlLXR7ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWxpbmUtY2xhbXA6Mzstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbi10b3A6MTFweDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzE0MTUxQX1cbi5rdGgtbW9yZS1ke2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDo3cHg7Zm9udDo1MDAgMTEuNXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzhBODg3Rn1cbkBtZWRpYShtYXgtd2lkdGg6OTAwcHgpey5rdGgtbW9yZS1ne2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpO2dhcDoxOHB4fX1cbkBtZWRpYShtYXgtd2lkdGg6NjAwcHgpey5rdGgtbW9yZS1ne2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpO2dhcDoxNHB4fS5rdGgtbW9yZS10e2ZvbnQtc2l6ZToxMy41cHh9Lmt0aC1ubGJ7cGFkZGluZzoyNHB4IDIwcHh9Lmt0aC1ubGItdHtmb250LXNpemU6MThweH19XG48L3N0eWxlPlxuPHNjcmlwdCBpZD1cImt0aC12M2pzXCI+XG4oZnVuY3Rpb24oKXtcbnZhciBEPWRvY3VtZW50O1xuZnVuY3Rpb24gaGFuKHMpe3JldHVybiAvW+qwgC3tnqNdLy50ZXN0KHN8fCcnKTt9XG5mdW5jdGlvbiBmbXQodHMsZW4pe3ZhciBkPW5ldyBEYXRlKHRzKTtpZihpc05hTihkKSlyZXR1cm4gJyc7XG52YXIgTT1bJ0phbicsJ0ZlYicsJ01hcicsJ0FwcicsJ01heScsJ0p1bicsJ0p1bCcsJ0F1ZycsJ1NlcCcsJ09jdCcsJ05vdicsJ0RlYyddO1xucmV0dXJuIGVuPyhNW2QuZ2V0TW9udGgoKV0rJyAnK2QuZ2V0RGF0ZSgpKTooKGQuZ2V0TW9udGgoKSsxKSsn7JuUICcrZC5nZXREYXRlKCkrJ+ydvCcpO31cbmZ1bmN0aW9uIGZlZWQoKXtcbmlmKHdpbmRvdy5fX0tUSEZFRUQpcmV0dXJuIHdpbmRvdy5fX0tUSEZFRUQ7XG53aW5kb3cuX19LVEhGRUVEPWZldGNoKCcvcnNzLycse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbid9KS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLm9rP3IudGV4dCgpOicnO30pLnRoZW4oZnVuY3Rpb24oeCl7XG5pZigheClyZXR1cm4gW107XG52YXIgZD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHgsJ3RleHQveG1sJyksaXQ9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaXRlbScpLEw9W10saTtcbmZvcihpPTA7aTxpdC5sZW5ndGg7aSsrKXsoZnVuY3Rpb24obil7XG5mdW5jdGlvbiBnKHQpe3ZhciBlPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUodClbMF07cmV0dXJuIGU/KGUudGV4dENvbnRlbnR8fCcnKTonJzt9XG52YXIgbWM9bi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbWVkaWE6Y29udGVudCcpWzBdO1xuTC5wdXNoKHt0OmcoJ3RpdGxlJykscDpnKCdsaW5rJykucmVwbGFjZSgvXmh0dHBzPzpcXC9cXC9bXi9dKy8sJycpLnJlcGxhY2UoL1xcLyskLywnJykrJy8nLFxuaW1nOm1jP21jLmdldEF0dHJpYnV0ZSgndXJsJyk6JycsdHM6K25ldyBEYXRlKGcoJ3B1YkRhdGUnKSl9KTt9KShpdFtpXSk7fVxucmV0dXJuIEw7XG59KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiBbXTt9KTtcbnJldHVybiB3aW5kb3cuX19LVEhGRUVEO1xufVxuZnVuY3Rpb24gaGVyZSgpe3JldHVybiBsb2NhdGlvbi5wYXRobmFtZS5yZXBsYWNlKC9cXC8rJC8sJycpKycvJzt9XG5mdW5jdGlvbiBwb29sKGVuKXtyZXR1cm4gZmVlZCgpLnRoZW4oZnVuY3Rpb24oTCl7XG5yZXR1cm4gTC5maWx0ZXIoZnVuY3Rpb24obyl7cmV0dXJuIG8ucCE9PWhlcmUoKSAmJiAoaGFuKG8udCk/IWVuOmVuKTt9KTt9KTt9XG5mdW5jdGlvbiBzaWRlYmFyKGVuKXtcbnZhciBzZWNzPUQucXVlcnlTZWxlY3RvckFsbCgnLnBzLXNlY3Rpb24nKTtpZighc2Vjcy5sZW5ndGgpcmV0dXJuO1xucG9vbChlbikudGhlbihmdW5jdGlvbihQKXtcbmlmKFAubGVuZ3RoPDMpcmV0dXJuO1xudmFyIHVzZWQ9MDtcbltdLmZvckVhY2guY2FsbChzZWNzLGZ1bmN0aW9uKHNlYyl7XG52YXIgaXRlbXM9W10uc2xpY2UuY2FsbChzZWMucXVlcnlTZWxlY3RvckFsbCgnLnBzLWl0ZW0nKSk7XG5pZighaXRlbXMubGVuZ3RoKXJldHVybjtcbnZhciB3YW50PVAuc2xpY2UodXNlZCx1c2VkK2l0ZW1zLmxlbmd0aCk7XG5pZighd2FudC5sZW5ndGgpe3NlYy5zdHlsZS5kaXNwbGF5PSdub25lJztyZXR1cm47fVxudXNlZCs9d2FudC5sZW5ndGg7XG5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGVsLGkpe1xuaWYoaT49d2FudC5sZW5ndGgpe2VsLnJlbW92ZSgpO3JldHVybjt9XG52YXIgbz13YW50W2ldO1xuZWwuc2V0QXR0cmlidXRlKCdocmVmJyxvLnApO1xudmFyIGltPWVsLnF1ZXJ5U2VsZWN0b3IoJy5wcy1pdGVtLWltZyBpbWcnKTtcbmlmKGltJiZvLmltZyl7aW0ucmVtb3ZlQXR0cmlidXRlKCdsb2FkaW5nJyk7aW0uc3JjPW8uaW1nO31cbnZhciB0PWVsLnF1ZXJ5U2VsZWN0b3IoJy5wcy1pdGVtLXRpdGxlJyk7aWYodCl0LnRleHRDb250ZW50PW8udDtcbnZhciBkdD1lbC5xdWVyeVNlbGVjdG9yKCcucHMtaXRlbS1kYXRlJyk7aWYoZHQpZHQudGV4dENvbnRlbnQ9Zm10KG8udHMsZW4pO1xufSk7XG59KTtcbn0pO1xufVxuZnVuY3Rpb24gdGFpbChlbil7XG52YXIgaG9zdD1ELnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC1jb250ZW50Jyk7aWYoIWhvc3QpcmV0dXJuO1xuaWYoRC5xdWVyeVNlbGVjdG9yKCcua3RoLW1vcmUnKSlyZXR1cm47XG52YXIgbmw9RC5jcmVhdGVFbGVtZW50KCdhc2lkZScpO25sLmNsYXNzTmFtZT0na3RoLW5sYic7XG52YXIgaz1ELmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2suY2xhc3NOYW1lPSdrdGgtbmxiLWsnO2sudGV4dENvbnRlbnQ9J05ld3NsZXR0ZXInO1xudmFyIHQ9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTt0LmNsYXNzTmFtZT0na3RoLW5sYi10Jzt0LnRleHRDb250ZW50PWVuPydHZXQgSy1FbnRlclRlY2ggSHViIGluIHlvdXIgaW5ib3gnOifsl5TthLDthYztgawg7J247IKs7J207Yq466W8IOuplOydvOuhnCDrsJvslYTrs7TshLjsmpQnO1xudmFyIHM9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtzLmNsYXNzTmFtZT0na3RoLW5sYi1zJztzLnRleHRDb250ZW50PWVuPydBIHdlZWtseSByZWFkIG9uIGhvdyB0ZWNobm9sb2d5IGlzIHJlc2hhcGluZyB0aGUgZW50ZXJ0YWlubWVudCBidXNpbmVzcyDigJQgc3RyZWFtaW5nLCBGQVNULCBBSSwgY3JlYXRvcnMgYW5kIHBvbGljeS4nOifsiqTtirjrpqzrsI3Ct0ZBU1TCt0FJwrftgazrpqzsl5DsnbTthLDCt+ygleyxheq5jOyngCwg7JeU7YSw7YWM7J2466i87Yq4IOyCsOyXheydhCDrsJTqvrjripQg6riw7IigIO2dkOumhOydhCDrp6Tso7wg7KCV66as7ZW0IOuztOuCtOuTnOumveuLiOuLpC4nO1xudmFyIGI9RC5jcmVhdGVFbGVtZW50KCdhJyk7Yi5jbGFzc05hbWU9J2t0aC1ubGItYic7Yi5ocmVmPScvbWVtYmVyc2hpcC8nO2IudGV4dENvbnRlbnQ9ZW4/J1N1YnNjcmliZSc6J+q1rOuPhe2VmOq4sCc7XG5ubC5hcHBlbmRDaGlsZChrKTtubC5hcHBlbmRDaGlsZCh0KTtubC5hcHBlbmRDaGlsZChzKTtubC5hcHBlbmRDaGlsZChiKTtcbmhvc3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobmwsaG9zdC5uZXh0U2libGluZyk7XG52YXIgc2VjPUQuY3JlYXRlRWxlbWVudCgnc2VjdGlvbicpO3NlYy5jbGFzc05hbWU9J2t0aC1tb3JlJztcbnZhciBoPUQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7aC5jbGFzc05hbWU9J2t0aC1tb3JlLWgnO2gudGV4dENvbnRlbnQ9ZW4/J01vcmUgZnJvbSBLLUVudGVyVGVjaCBIdWInOifrjZQg7J297Ja067O06riwJztcbnZhciBnPUQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Zy5jbGFzc05hbWU9J2t0aC1tb3JlLWcnO1xuc2VjLmFwcGVuZENoaWxkKGgpO3NlYy5hcHBlbmRDaGlsZChnKTtcbm5sLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHNlYyxubC5uZXh0U2libGluZyk7XG5wb29sKGVuKS50aGVuKGZ1bmN0aW9uKFApe1xudmFyIGxpc3Q9UC5zbGljZSg2LDEwKTtcbmlmKGxpc3QubGVuZ3RoPDMpbGlzdD1QLnNsaWNlKE1hdGgubWF4KDAsUC5sZW5ndGgtNCkpO1xuaWYobGlzdC5sZW5ndGg8MilsaXN0PVAuc2xpY2UoMCw0KTtcbmlmKCFsaXN0Lmxlbmd0aCl7c2VjLnJlbW92ZSgpO3JldHVybjt9XG5saXN0LmZvckVhY2goZnVuY3Rpb24obyl7XG52YXIgYT1ELmNyZWF0ZUVsZW1lbnQoJ2EnKTthLmNsYXNzTmFtZT0na3RoLW1vcmUtYyc7YS5ocmVmPW8ucDtcbnZhciB0aD1ELmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTt0aC5jbGFzc05hbWU9J2t0aC1tb3JlLXRoJztcbmlmKG8uaW1nKXt2YXIgaW09RC5jcmVhdGVFbGVtZW50KCdpbWcnKTtpbS5hbHQ9Jyc7aW0ubG9hZGluZz0nbGF6eSc7aW0uc3JjPW8uaW1nO3RoLmFwcGVuZENoaWxkKGltKTt9XG52YXIgdGk9RC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7dGkuY2xhc3NOYW1lPSdrdGgtbW9yZS10Jzt0aS50ZXh0Q29udGVudD1vLnQ7XG52YXIgZGQ9RC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7ZGQuY2xhc3NOYW1lPSdrdGgtbW9yZS1kJztkZC50ZXh0Q29udGVudD1mbXQoby50cyxlbik7XG5hLmFwcGVuZENoaWxkKHRoKTthLmFwcGVuZENoaWxkKHRpKTthLmFwcGVuZENoaWxkKGRkKTtnLmFwcGVuZENoaWxkKGEpO1xufSk7XG59KTtcbn1cbmZ1bmN0aW9uIGdvKCl7XG52YXIgdGU9RC5xdWVyeVNlbGVjdG9yKCcubnl0LXBvc3QtdGl0bGUnKTtpZighdGUpcmV0dXJuO1xudmFyIGVuPSFoYW4odGUudGV4dENvbnRlbnR8fCcnKTtcbnNpZGViYXIoZW4pO3RhaWwoZW4pO1xufVxuaWYoRC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKUQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZ28pO2Vsc2UgZ28oKTtcbnNldFRpbWVvdXQoZ28sMTgwMCk7c2V0VGltZW91dChnbyw0MDAwKTtcbn0pKCk7XG48L3NjcmlwdD5cbjxzdHlsZSBpZD1cImt0aC1hYm91dC1sYW5nXCI+Lmt0LWFib3V0ID4gW2RhdGEtbF17ZGlzcGxheTpub25lfS5rdC1hYm91dC5sYW5nLWtvID4gW2RhdGEtbD1cImtvXCJdLC5rdC1hYm91dC5sYW5nLWVuID4gW2RhdGEtbD1cImVuXCJde2Rpc3BsYXk6YmxvY2t9aHRtbCBib2R5IC5rdGgtbGFuZ3RvZ2dsZXtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudDthbGlnbi1pdGVtczpzdHJldGNoIWltcG9ydGFudDtnYXA6MCFpbXBvcnRhbnQ7aGVpZ2h0OjM2cHghaW1wb3J0YW50O2JvcmRlcjoxcHggc29saWQgI0M5QzRCNyFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoxOHB4IWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7d2lkdGg6bWF4LWNvbnRlbnQhaW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX1odG1sIGJvZHkgLmt0aC1sYW5ndG9nZ2xlIGJ1dHRvbnthcHBlYXJhbmNlOm5vbmUhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudDtjb2xvcjojM0EzQjQwIWltcG9ydGFudDtmb250OjcwMCAxMXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWYhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4xZW0haW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSFpbXBvcnRhbnQ7cGFkZGluZzowIDE2cHghaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmlubGluZS1mbGV4IWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50O3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzLGNvbG9yIC4xNXM7aGVpZ2h0OjEwMCUhaW1wb3J0YW50fWh0bWwgYm9keSAua3RoLWxhbmd0b2dnbGUgYnV0dG9uOmhvdmVye2JhY2tncm91bmQ6I0YzRjBFOCFpbXBvcnRhbnR9aHRtbCBib2R5IC5rdGgtbGFuZ3RvZ2dsZSBidXR0b25bYXJpYS1wcmVzc2VkPVwidHJ1ZVwiXXtiYWNrZ3JvdW5kOiMxNDE1MUEhaW1wb3J0YW50O2NvbG9yOiNmZmYhaW1wb3J0YW50fWh0bWwgYm9keSAua3QtYWJvdXQtdG9nZ2xle21hcmdpbjowIDAgMjZweCFpbXBvcnRhbnR9PC9zdHlsZT5cbjxzY3JpcHQgaWQ9XCJrdGgtYWJvdXQtc3JjXCI+XG4oZnVuY3Rpb24oKXtcbnZhciBEPWRvY3VtZW50O1xuaWYoIS9eXFwvYWJvdXRcXC8/JC8udGVzdChsb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuO1xuZnVuY3Rpb24gY3VyKCl7dHJ5e3ZhciB2PWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdrdGhfbGFuZycpO2lmKHY9PT0nZW4nfHx2PT09J2tvJylyZXR1cm4gdjt9Y2F0Y2goZSl7fVxucmV0dXJuIC9eZW4vaS50ZXN0KG5hdmlnYXRvci5sYW5ndWFnZXx8JycpPydlbic6J2tvJzt9XG5mdW5jdGlvbiBzZXRMKGwpe1xudmFyIGs9RC5xdWVyeVNlbGVjdG9yKCcua3QtYWJvdXQnKTtpZighaylyZXR1cm47XG5rLmNsYXNzTmFtZT0na3QtYWJvdXQgbGFuZy0nK2w7XG50cnl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2t0aF9sYW5nJyxsKTt9Y2F0Y2goZSl7fVxudmFyIHRnPUQucXVlcnlTZWxlY3RvcignLmt0LWFib3V0LXRvZ2dsZScpO1xuaWYodGcpW10uZm9yRWFjaC5jYWxsKHRnLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbltkYXRhLWxdJyksZnVuY3Rpb24oYil7Yi5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtbCcpPT09bD8ndHJ1ZSc6J2ZhbHNlJyk7fSk7XG59XG5mdW5jdGlvbiB3aXJlKCl7XG52YXIgaz1ELnF1ZXJ5U2VsZWN0b3IoJy5rdC1hYm91dCcpO2lmKCFrKXJldHVybjtcbnZhciBvbGQ9RC5xdWVyeVNlbGVjdG9yKCcua3RoLWxhbmd0b2dnbGUnKTtpZihvbGQmJm9sZC5wYXJlbnROb2RlJiYhb2xkLmNsYXNzTGlzdC5jb250YWlucygna3QtYWJvdXQtdG9nZ2xlJykpb2xkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob2xkKTtcbmlmKCFELnF1ZXJ5U2VsZWN0b3IoJy5rdC1hYm91dC10b2dnbGUnKSl7XG52YXIgdGc9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTt0Zy5jbGFzc05hbWU9J2t0aC1sYW5ndG9nZ2xlIGt0LWFib3V0LXRvZ2dsZSc7XG5bJ2tvJywnZW4nXS5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBiPUQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7Yi50eXBlPSdidXR0b24nO2Iuc2V0QXR0cmlidXRlKCdkYXRhLWwnLGwpO2IudGV4dENvbnRlbnQ9bD09PSdrbyc/J+2VnOq1reyWtCc6J0VuZ2xpc2gnO1xuYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtzZXRMKGwpO30pO3RnLmFwcGVuZENoaWxkKGIpO30pO1xuay5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0ZyxrKTtcbn1cbnNldEwoY3VyKCkpO1xufVxuZnVuY3Rpb24gaW5qZWN0KGh0bWwpe1xudmFyIGhvc3Q9RC5nZXRFbGVtZW50QnlJZCgnYWJvdXQtY29udGVudC13cmFwJyl8fEQucXVlcnlTZWxlY3RvcignLmFib3V0LXdyYXAnKTtcbmlmKCFob3N0KXJldHVybiBmYWxzZTtcbmlmKCFob3N0LnF1ZXJ5U2VsZWN0b3IoJy5rdC1hYm91dCcpKWhvc3QuaW5uZXJIVE1MPWh0bWw7XG53aXJlKCk7XG5yZXR1cm4gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGJvb3QoKXtcbnZhciBrPSdrdGhfYWJvdXRfdjInLGM9bnVsbDt0cnl7Yz1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGspO31jYXRjaChlKXt9XG5pZihjJiZpbmplY3QoYykpcmV0dXJuO1xuZmV0Y2goJy9hYm91dC1jb250ZW50Lycse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbid9KS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLm9rP3IudGV4dCgpOicnO30pLnRoZW4oZnVuY3Rpb24odCl7XG5pZighdClyZXR1cm47XG52YXIgZD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKHQsJ3RleHQvaHRtbCcpO1xudmFyIGVsPWQucXVlcnlTZWxlY3RvcignLmt0LWFib3V0Jyk7aWYoIWVsKXJldHVybjtcbnZhciBodG1sPWVsLm91dGVySFRNTDtcbnRyeXtzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGssaHRtbCk7fWNhdGNoKGUpe31cbmluamVjdChodG1sKTtcbn0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7XG59XG5pZihELnJlYWR5U3RhdGU9PT0nbG9hZGluZycpRC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxib290KTtlbHNlIGJvb3QoKTtcbnNldFRpbWVvdXQoYm9vdCwxMjAwKTtzZXRUaW1lb3V0KGJvb3QsMzAwMCk7XG59KSgpO1xuPC9zY3JpcHQ+XG48c3R5bGUgaWQ9XCJrdGgtY29udHJhc3QyXCI+aHRtbCBib2R5ICNhYm91dC1jb250ZW50LXdyYXAsaHRtbCBib2R5IC5hYm91dC13cmFwe21heC13aWR0aDoxMDQwcHghaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O3BhZGRpbmctbGVmdDoyMHB4IWltcG9ydGFudDtwYWRkaW5nLXJpZ2h0OjIwcHghaW1wb3J0YW50fWh0bWwgYm9keSAjYWJvdXQtY29udGVudC13cmFwPmRpdixodG1sIGJvZHkgLmFib3V0LXdyYXA+ZGl2e21heC13aWR0aDpub25lIWltcG9ydGFudH1odG1sIGJvZHkgLmt0aC1ubC10aXRsZXtjb2xvcjojZmZmIWltcG9ydGFudH1odG1sIGJvZHkgLmt0aC1ubC1kZXNje2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjc0KSFpbXBvcnRhbnQ7Zm9udC1zaXplOjEzLjVweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS42IWltcG9ydGFudH1odG1sIGJvZHkgLmt0aC1ubC1pbnB1dHtjb2xvcjojZmZmIWltcG9ydGFudDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEwKSFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LC4yNCkhaW1wb3J0YW50fWh0bWwgYm9keSAua3RoLW5sLWlucHV0OjpwbGFjZWhvbGRlcntjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41MikhaW1wb3J0YW50fWh0bWwgYm9keSAua3RoLW5sLWlucHV0OmZvY3Vze2JvcmRlci1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC41KSFpbXBvcnRhbnQ7b3V0bGluZTpub25lIWltcG9ydGFudH1odG1sIGJvZHkgLmt0aC1ubCBhLGh0bWwgYm9keSAua3RoLW5sIHAsaHRtbCBib2R5IC5rdGgtbmwgc3BhbixodG1sIGJvZHkgLmt0aC1ubCBkaXZ7Y29sb3I6aW5oZXJpdH08L3N0eWxlPlxuPHN0eWxlIGlkPVwia3RoLWJ5bGluZVwiPmh0bWwgYm9keSAubnl0LXBvc3QtbWV0YXtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtd3JhcDp3cmFwIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXIhaW1wb3J0YW50O2dhcDowIDEwcHghaW1wb3J0YW50O2ZvbnQtc2l6ZToxMi41cHghaW1wb3J0YW50O2NvbG9yOiM3Nzc1NkUhaW1wb3J0YW50fWh0bWwgYm9keSAubnl0LXBvc3QtYXV0aG9ye2ZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7Y29sb3I6IzE0MTUxQSFpbXBvcnRhbnQ7Zm9udC1zaXplOjEyLjVweCFpbXBvcnRhbnR9aHRtbCBib2R5IC5ueXQtcG9zdC1hdXRob3IgYXtjb2xvcjojMTQxNTFBIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0M5QzRCN31odG1sIGJvZHkgLm55dC1wb3N0LW1ldGEua3RoLWRvbmUgLm55dC1wb3N0LWRhdGUsaHRtbCBib2R5IC5ueXQtcG9zdC1tZXRhLmt0aC1kb25lIC5ueXQtcG9zdC1yZWFke2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9aHRtbCBib2R5IC5rdGgtZGF0ZSxodG1sIGJvZHkgLmt0aC1yZWFkLGh0bWwgYm9keSAua3RoLXVwZHtmb250LXNpemU6MTIuNXB4IWltcG9ydGFudDtjb2xvcjojNzc3NTZFIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMDFlbSFpbXBvcnRhbnR9aHRtbCBib2R5IC5rdGgtdXBke2NvbG9yOiM5QTdCM0YhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjYwMCFpbXBvcnRhbnR9aHRtbCBib2R5IC5ueXQtcG9zdC1tZXRhPiorKjpiZWZvcmV7Y29udGVudDpcIsK3XCI7bWFyZ2luLXJpZ2h0OjEwcHg7Y29sb3I6I0M5QzRCN31odG1sIGJvZHkgZmlndXJlLmt0aC1maWd7bWFyZ2luOjEuOWVtIDAhaW1wb3J0YW50fWh0bWwgYm9keSAua3RoLWNhcHttYXJnaW4tdG9wOjlweCFpbXBvcnRhbnQ7cGFkZGluZy10b3A6OHB4IWltcG9ydGFudDtib3JkZXItdG9wOjFweCBzb2xpZCAjRTNERkQ2IWltcG9ydGFudDtmb250LXNpemU6MTIuNXB4IWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjU1IWltcG9ydGFudDtjb2xvcjojNzc3NTZFIWltcG9ydGFudDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjE0cHg7ZmxleC13cmFwOndyYXB9aHRtbCBib2R5IC5rdGgtY2FwIGl7Zm9udC1zdHlsZTpub3JtYWw7Y29sb3I6IzlBOTc5MDt3aGl0ZS1zcGFjZTpub3dyYXA7Zm9udC1zaXplOjExLjVweDtsZXR0ZXItc3BhY2luZzouMDRlbX1odG1se3Njcm9sbC1wYWRkaW5nLXRvcDoxMDBweH1odG1sIGJvZHkgLnNpdGUtaGVhZGVye2JhY2tncm91bmQ6I2ZmZiFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0UzREZENiFpbXBvcnRhbnR9aHRtbCBib2R5IC5oZWFkZXItbmF2LWJhcntiYWNrZ3JvdW5kOiNmZmYhaW1wb3J0YW50fWh0bWwgYm9keSAuaGVhZGVyLWRhdGV7Y29sb3I6IzhBODg3RiFpbXBvcnRhbnR9PC9zdHlsZT5cbjxzY3JpcHQgaWQ9XCJrdGgtYnlsaW5lLWpzXCI+XG4oZnVuY3Rpb24oKXtcbnZhciBEPWRvY3VtZW50O1xuZnVuY3Rpb24gaGFuKHMpe3JldHVybiAvW+qwgC3tnqNdLy50ZXN0KHN8fCcnKTt9XG5mdW5jdGlvbiBmbXRFTihkKXt0cnl7cmV0dXJuIGQudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycse3RpbWVab25lOidBc2lhL1Nlb3VsJyx5ZWFyOidudW1lcmljJyxtb250aDonbG9uZycsZGF5OidudW1lcmljJ30pO31jYXRjaChlKXtyZXR1cm4gbnVsbDt9fVxuZnVuY3Rpb24gZm10S08oZCl7dHJ5e3JldHVybiBkLnRvTG9jYWxlRGF0ZVN0cmluZygna28tS1InLHt0aW1lWm9uZTonQXNpYS9TZW91bCcseWVhcjonbnVtZXJpYycsbW9udGg6J2xvbmcnLGRheTonbnVtZXJpYyd9KTt9Y2F0Y2goZSl7cmV0dXJuIG51bGw7fX1cbmZ1bmN0aW9uIGFnbyhkLGVuKXt2YXIgcz0oRGF0ZS5ub3coKS1kKS8xMDAwO1xuaWYoczwzNjAwKXJldHVybiBlbj9NYXRoLm1heCgxLE1hdGgucm91bmQocy82MCkpKycgbWluIGFnbyc6TWF0aC5tYXgoMSxNYXRoLnJvdW5kKHMvNjApKSsn67aEIOyghCc7XG5pZihzPDg2NDAwKXJldHVybiBlbj9NYXRoLnJvdW5kKHMvMzYwMCkrJyBob3VycyBhZ28nOk1hdGgucm91bmQocy8zNjAwKSsn7Iuc6rCEIOyghCc7XG5yZXR1cm4gbnVsbDt9XG5mdW5jdGlvbiBsZCgpe3ZhciBvdXQ9bnVsbDtbXS5mb3JFYWNoLmNhbGwoRC5xdWVyeVNlbGVjdG9yQWxsKCdzY3JpcHRbdHlwZT1cImFwcGxpY2F0aW9uL2xkK2pzb25cIl0nKSxmdW5jdGlvbihzKXtcbnRyeXt2YXIgaj1KU09OLnBhcnNlKHMudGV4dENvbnRlbnQpO3ZhciBhPVtdLmNvbmNhdChqWydAZ3JhcGgnXXx8aik7XG5hLmZvckVhY2goZnVuY3Rpb24obyl7aWYobyYmL0FydGljbGUvLnRlc3Qob1snQHR5cGUnXXx8JycpKXtvdXQ9b3V0fHxvO319KTt9Y2F0Y2goZSl7fX0pO3JldHVybiBvdXQ7fVxuZnVuY3Rpb24gYnlsaW5lKCl7XG52YXIgbT1ELnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC1tZXRhJyk7aWYoIW18fG0uZ2V0QXR0cmlidXRlKCdkYXRhLWt0aCcpKXJldHVybjtcbnZhciB0ZT1ELnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC10aXRsZScpO2lmKCF0ZSlyZXR1cm47XG52YXIgZW49IWhhbih0ZS50ZXh0Q29udGVudHx8JycpO1xudmFyIG89bGQoKXx8e307XG52YXIgcHViPW8uZGF0ZVB1Ymxpc2hlZD9uZXcgRGF0ZShvLmRhdGVQdWJsaXNoZWQpOm51bGw7XG52YXIgbW9kPW8uZGF0ZU1vZGlmaWVkP25ldyBEYXRlKG8uZGF0ZU1vZGlmaWVkKTpudWxsO1xudmFyIGRlPW0ucXVlcnlTZWxlY3RvcignLm55dC1wb3N0LWRhdGUnKSwgcmU9bS5xdWVyeVNlbGVjdG9yKCcubnl0LXBvc3QtcmVhZCcpO1xudmFyIGRzPXB1YiYmIWlzTmFOKHB1Yik/KGVuP2ZtdEVOKHB1Yik6Zm10S08ocHViKSk6bnVsbDtcbmlmKCFkcyYmZGUpZHM9KGRlLnRleHRDb250ZW50fHwnJykudHJpbSgpO1xudmFyIHJuPXJlPygocmUudGV4dENvbnRlbnR8fCcnKS5tYXRjaCgvXFxkKy8pfHxbbnVsbF0pWzBdOm51bGw7XG5pZihkcyYmIW0ucXVlcnlTZWxlY3RvcignLmt0aC1kYXRlJykpe3ZhciBkbj1ELmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtkbi5jbGFzc05hbWU9J2t0aC1kYXRlJztkbi50ZXh0Q29udGVudD1kcztcbmlmKGRlJiZkZS5wYXJlbnROb2RlPT09bSltLmluc2VydEJlZm9yZShkbixkZSk7ZWxzZSBtLmFwcGVuZENoaWxkKGRuKTt9XG5pZihybiYmIW0ucXVlcnlTZWxlY3RvcignLmt0aC1yZWFkJykpe3ZhciBydz1ELmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtydy5jbGFzc05hbWU9J2t0aC1yZWFkJztydy50ZXh0Q29udGVudD1lbj8ocm4rJyBtaW4gcmVhZCcpOihybisn67aEIOydveq4sCcpO1xuaWYocmUmJnJlLnBhcmVudE5vZGU9PT1tKW0uaW5zZXJ0QmVmb3JlKHJ3LHJlKTtlbHNlIG0uYXBwZW5kQ2hpbGQocncpO31cbm0uY2xhc3NMaXN0LmFkZCgna3RoLWRvbmUnKTtcbnZhciBhdT1tLnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC1hdXRob3InKTtcbmlmKGF1JiYhYXUucXVlcnlTZWxlY3RvcignYScpKXt2YXIgbm09KGF1LnRleHRDb250ZW50fHwnJykudHJpbSgpO1xuaWYobm0pe3ZhciBhPUQuY3JlYXRlRWxlbWVudCgnYScpO2EuaHJlZj0nL2F1dGhvci8nK25tLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCctJykrJy8nO2EudGV4dENvbnRlbnQ9bm07YXUudGV4dENvbnRlbnQ9Jyc7YXUuYXBwZW5kQ2hpbGQoYSk7fX1cbmlmKG1vZCYmcHViJiYhaXNOYU4obW9kKSYmKG1vZC1wdWIpPjg2NGU1JiYhbS5xdWVyeVNlbGVjdG9yKCcua3RoLXVwZCcpKXtcbnZhciB1PUQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3UuY2xhc3NOYW1lPSdrdGgtdXBkJztcbnZhciByZWw9YWdvKG1vZCxlbik7XG51LnRleHRDb250ZW50PShlbj8nVXBkYXRlZCAnOifsiJjsoJUgJykrKHJlbHx8KGVuP2ZtdEVOKG1vZCk6Zm10S08obW9kKSkpO1xubS5hcHBlbmRDaGlsZCh1KTt9XG5tLnNldEF0dHJpYnV0ZSgnZGF0YS1rdGgnLCcxJyk7XG59XG5mdW5jdGlvbiBjYXBzKCl7XG52YXIgYz1ELnF1ZXJ5U2VsZWN0b3IoJy5jLWNvbnRlbnQnKTtpZighYylyZXR1cm47XG52YXIgdGU9RC5xdWVyeVNlbGVjdG9yKCcubnl0LXBvc3QtdGl0bGUnKTt2YXIgZW49dGU/IWhhbih0ZS50ZXh0Q29udGVudHx8JycpOmZhbHNlO1xuW10uZm9yRWFjaC5jYWxsKGMucXVlcnlTZWxlY3RvckFsbCgnaW1nJyksZnVuY3Rpb24oaW0pe1xuaWYoaW0uY2xvc2VzdCgnLmt0aC1maWcnKXx8aW0uY2xvc2VzdCgnLmtnLWJvb2ttYXJrLWNhcmQnKXx8aW0uY2xvc2VzdCgnLmt0aC1wYWlyJykpcmV0dXJuO1xudmFyIGFsdD0oaW0uZ2V0QXR0cmlidXRlKCdhbHQnKXx8JycpLnRyaW0oKTtcbnZhciBmaWc9aW0uY2xvc2VzdCgnZmlndXJlJyk7XG52YXIgY2FwPWZpZz9maWcucXVlcnlTZWxlY3RvcignZmlnY2FwdGlvbicpOm51bGw7XG52YXIgdHh0PWNhcD8oY2FwLnRleHRDb250ZW50fHwnJykudHJpbSgpOmFsdDtcbmlmKHR4dCYmL15bYS16MC05X117NCx9XFwuKHBuZ3xqcGU/Z3x3ZWJwfGdpZikkL2kudGVzdCh0eHQpKXR4dD0nJztcbnZhciB3cmFwPWZpZ3x8aW07XG5pZighZmlnKXt2YXIgZj1ELmNyZWF0ZUVsZW1lbnQoJ2ZpZ3VyZScpO2ltLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGYsaW0pO2YuYXBwZW5kQ2hpbGQoaW0pO3dyYXA9Zjt9XG53cmFwLmNsYXNzTmFtZT0od3JhcC5jbGFzc05hbWU/d3JhcC5jbGFzc05hbWUrJyAnOicnKSsna3RoLWZpZyc7XG5pZihjYXApY2FwLnJlbW92ZSgpO1xudmFyIGQ9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtkLmNsYXNzTmFtZT0na3RoLWNhcCc7XG52YXIgdD1ELmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTt0LnRleHRDb250ZW50PXR4dHx8Jyc7XG52YXIgcz1ELmNyZWF0ZUVsZW1lbnQoJ2knKTtzLnRleHRDb250ZW50PWVuPydQaG90byDCtyBLLUVudGVyVGVjaCBIdWInOifsgqzsp4QgwrcgSy1FbnRlclRlY2ggSHViJztcbmQuYXBwZW5kQ2hpbGQodCk7ZC5hcHBlbmRDaGlsZChzKTtcbndyYXAuYXBwZW5kQ2hpbGQoZCk7fSk7XG59XG5mdW5jdGlvbiBXKGYpe3ZhciBwPXdpbmRvdy5fX0tUSF9XUklURTt3aW5kb3cuX19LVEhfV1JJVEU9MTt0cnl7ZigpO31jYXRjaChlKXt9d2luZG93Ll9fS1RIX1dSSVRFPXA7fVxuZnVuY3Rpb24gZ28oKXtXKGZ1bmN0aW9uKCl7YnlsaW5lKCk7Y2FwcygpO30pO31cbmlmKEQucmVhZHlTdGF0ZT09PSdsb2FkaW5nJylELmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGdvKTtlbHNlIGdvKCk7XG5zZXRUaW1lb3V0KGdvLDE1MDApO3NldFRpbWVvdXQoZ28sMzUwMCk7c2V0VGltZW91dChnbyw2MDAwKTtcbn0pKCk7XG48L3NjcmlwdD5cbjxzdHlsZSBpZD1cImt0aC1hdXRoY2FyZFwiPi5rdGgtYXV0aHtkaXNwbGF5OmZsZXg7Z2FwOjI0cHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDttYXJnaW46MCAwIDM0cHg7cGFkZGluZzoyNnB4O2JvcmRlcjoxcHggc29saWQgI0UzREZENjtib3JkZXItbGVmdDozcHggc29saWQgIzE2MzA1QztiYWNrZ3JvdW5kOiNGQUY4RjR9Lmt0aC1hdXRoLWF2e2ZsZXg6MCAwIDkycHg7d2lkdGg6OTJweDtoZWlnaHQ6OTJweDtib3JkZXItcmFkaXVzOjUwJTtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojRUZFREU4fS5rdGgtYXV0aC1hdiBpbWd7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtvYmplY3QtZml0OmNvdmVyO2Rpc3BsYXk6YmxvY2t9Lmt0aC1hdXRoLWJ7ZmxleDoxIDEgYXV0bzttaW4td2lkdGg6MH0ua3RoLWF1dGgta3tmb250OjcwMCAxMC41cHgvMSBJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojOUE3QjNGfS5rdGgtYXV0aC1ue21hcmdpbi10b3A6OXB4O2ZvbnQtc2l6ZToyNHB4O2ZvbnQtd2VpZ2h0OjgwMDtsZXR0ZXItc3BhY2luZzotLjAyZW07Y29sb3I6IzE0MTUxQX0ua3RoLWF1dGgtZHttYXJnaW4tdG9wOjEwcHg7Zm9udC1zaXplOjE0LjVweDtsaW5lLWhlaWdodDoxLjc7Y29sb3I6IzNBM0I0MDttYXgtd2lkdGg6NTJlbX0ua3RoLWF1dGgtbHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Z2FwOjhweDttYXJnaW4tdG9wOjE2cHh9Lmt0aC1hdXRoLWwgYXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6N3B4O3BhZGRpbmc6N3B4IDEzcHg7Ym9yZGVyOjFweCBzb2xpZCAjQzlDNEI3O2ZvbnQ6NjAwIDEycHgvMSBJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZjtjb2xvcjojM0EzQjQwIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnR9Lmt0aC1hdXRoLWwgYTpob3Zlcntib3JkZXItY29sb3I6IzE0MTUxQTtjb2xvcjojMTQxNTFBIWltcG9ydGFudH1AbWVkaWEobWF4LXdpZHRoOjY0MHB4KXsua3RoLWF1dGh7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxNnB4O3BhZGRpbmc6MjBweH0ua3RoLWF1dGgtYXZ7d2lkdGg6NzJweDtoZWlnaHQ6NzJweDtmbGV4OjAgMCA3MnB4fS5rdGgtYXV0aC1ue2ZvbnQtc2l6ZToyMHB4fX08L3N0eWxlPlxuPHNjcmlwdCBpZD1cImt0aC1hdXRoY2FyZC1qc1wiPlxuKGZ1bmN0aW9uKCl7XG52YXIgRD1kb2N1bWVudDtcbmlmKCEvXlxcL2F1dGhvclxcLy8udGVzdChsb2NhdGlvbi5wYXRobmFtZSkpcmV0dXJuO1xuZnVuY3Rpb24gZ28oKXtcbmlmKEQucXVlcnlTZWxlY3RvcignLmt0aC1hdXRoJykpcmV0dXJuO1xudmFyIGhvc3Q9RC5xdWVyeVNlbGVjdG9yKCcua3RoLXRhZy1oZWFkZXInKXx8RC5xdWVyeVNlbGVjdG9yKCdtYWluJyk7XG5pZighaG9zdClyZXR1cm47XG52YXIgcD1udWxsO1xuW10uZm9yRWFjaC5jYWxsKEQucXVlcnlTZWxlY3RvckFsbCgnc2NyaXB0W3R5cGU9XCJhcHBsaWNhdGlvbi9sZCtqc29uXCJdJyksZnVuY3Rpb24ocyl7XG50cnl7dmFyIGo9SlNPTi5wYXJzZShzLnRleHRDb250ZW50KTt2YXIgYT1bXS5jb25jYXQoalsnQGdyYXBoJ118fGopO1xuYS5mb3JFYWNoKGZ1bmN0aW9uKG8pe2lmKG8mJm9bJ0B0eXBlJ109PT0nUGVyc29uJylwPXB8fG87fSk7fWNhdGNoKGUpe319KTtcbmlmKCFwKXJldHVybjtcbnZhciBlbj1ELmJvZHkuY2xhc3NOYW1lLmluZGV4T2YoJ2xhbmd1YWdlLWVuJyk+PTA7XG52YXIgYXY9RC5xdWVyeVNlbGVjdG9yKCcua3RoLXRhZy1oZWFkZXIgaW1nJyl8fEQucXVlcnlTZWxlY3RvcignbWFpbiBpbWcnKTtcbnZhciBib3g9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtib3guY2xhc3NOYW1lPSdrdGgtYXV0aCc7XG52YXIgc3JjPSh0eXBlb2YgcC5pbWFnZT09PSdzdHJpbmcnP3AuaW1hZ2U6KHAuaW1hZ2UmJnAuaW1hZ2UudXJsKSl8fChhdiYmYXYuc3JjKTtcbmlmKHNyYyl7dmFyIGE9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTthLmNsYXNzTmFtZT0na3RoLWF1dGgtYXYnO3ZhciBpbT1ELmNyZWF0ZUVsZW1lbnQoJ2ltZycpO2ltLmFsdD0nJztpbS5zcmM9c3JjO2EuYXBwZW5kQ2hpbGQoaW0pO2JveC5hcHBlbmRDaGlsZChhKTt9XG52YXIgYj1ELmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2IuY2xhc3NOYW1lPSdrdGgtYXV0aC1iJztcbnZhciBrPUQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7ay5jbGFzc05hbWU9J2t0aC1hdXRoLWsnO2sudGV4dENvbnRlbnQ9ZW4/J0F1dGhvcic6J+q4sOyekCDshozqsJwnO1xudmFyIG49RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtuLmNsYXNzTmFtZT0na3RoLWF1dGgtbic7bi50ZXh0Q29udGVudD1wLm5hbWV8fCcnO1xuYi5hcHBlbmRDaGlsZChrKTtiLmFwcGVuZENoaWxkKG4pO1xuaWYocC5kZXNjcmlwdGlvbil7dmFyIGQ9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtkLmNsYXNzTmFtZT0na3RoLWF1dGgtZCc7ZC50ZXh0Q29udGVudD1wLmRlc2NyaXB0aW9uO2IuYXBwZW5kQ2hpbGQoZCk7fVxudmFyIEw9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtMLmNsYXNzTmFtZT0na3RoLWF1dGgtbCc7XG52YXIgbGlua3M9W1snRW1haWwnLCdtYWlsdG86ZXhpc3Rlbjc1QGtlbnRlcnRlY2hodWIuY29tJ11dO1xuaWYocC5zYW1lQXMpe1tdLmNvbmNhdChwLnNhbWVBcykuZm9yRWFjaChmdW5jdGlvbih1KXtcbnZhciBsYWI9L3lvdXR1YmUvLnRlc3QodSk/J1lvdVR1YmUnOigvdHdpdHRlcnx4XFwuY29tLy50ZXN0KHUpPydYJzooL2ZhY2Vib29rLy50ZXN0KHUpPydGYWNlYm9vayc6KC9rZW50ZXJ0ZWNoaHViLy50ZXN0KHUpPydXZWJzaXRlJzonTGluaycpKSk7XG5pZighbGlua3Muc29tZShmdW5jdGlvbih6KXtyZXR1cm4gelswXT09PWxhYjt9KSlsaW5rcy5wdXNoKFtsYWIsdV0pO30pO31cbmVsc2UgbGlua3MucHVzaChbJ1lvdVR1YmUnLCdodHRwczovL3d3dy55b3V0dWJlLmNvbS9Aa2VudGVydGVjaGh1YiddKTtcbmxpbmtzLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGE9RC5jcmVhdGVFbGVtZW50KCdhJyk7YS5ocmVmPXRbMV07YS50ZXh0Q29udGVudD10WzBdO1xuaWYodFsxXS5pbmRleE9mKCdodHRwJyk9PT0wKXthLnRhcmdldD0nX2JsYW5rJzthLnJlbD0nbm9vcGVuZXInO31MLmFwcGVuZENoaWxkKGEpO30pO1xuYi5hcHBlbmRDaGlsZChMKTtib3guYXBwZW5kQ2hpbGQoYik7XG5ob3N0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGJveCxob3N0Lm5leHRTaWJsaW5nKTtcbn1cbmlmKEQucmVhZHlTdGF0ZT09PSdsb2FkaW5nJylELmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGdvKTtlbHNlIGdvKCk7XG5zZXRUaW1lb3V0KGdvLDEyMDApO3NldFRpbWVvdXQoZ28sMzAwMCk7XG59KSgpO1xuPC9zY3JpcHQ+XG48c2NyaXB0IGlkPVwia3RoLWtwLWpzXCI+XG4oZnVuY3Rpb24oKXtcbnZhciBEPWRvY3VtZW50O1xuZnVuY3Rpb24gY3VyKCl7dHJ5e3ZhciB2PWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdrdGhfbGFuZycpO2lmKHY9PT0nZW4nfHx2PT09J2tvJylyZXR1cm4gdjt9Y2F0Y2goZSl7fVxucmV0dXJuIC9eZW4vaS50ZXN0KG5hdmlnYXRvci5sYW5ndWFnZXx8JycpPydlbic6J2tvJzt9XG5mdW5jdGlvbiBnbygpe1xudmFyIGs9RC5xdWVyeVNlbGVjdG9yKCcua3AnKTtpZigha3x8ay5nZXRBdHRyaWJ1dGUoJ2RhdGEtdycpKXJldHVybjtcbmZ1bmN0aW9uIHNldChsKXtrLmNsYXNzTmFtZT0na3AgbGFuZy0nK2w7dHJ5e2xvY2FsU3RvcmFnZS5zZXRJdGVtKCdrdGhfbGFuZycsbCk7fWNhdGNoKGUpe31cbltdLmZvckVhY2guY2FsbChrLnF1ZXJ5U2VsZWN0b3JBbGwoJy5rcC10b2cgYnV0dG9uJyksZnVuY3Rpb24oYil7Yi5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtbCcpPT09bD8ndHJ1ZSc6J2ZhbHNlJyk7fSk7fVxuW10uZm9yRWFjaC5jYWxsKGsucXVlcnlTZWxlY3RvckFsbCgnLmtwLXRvZyBidXR0b24nKSxmdW5jdGlvbihiKXtcbmIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7c2V0KGIuZ2V0QXR0cmlidXRlKCdkYXRhLWwnKSk7fSk7fSk7XG5zZXQoY3VyKCkpO1xuay5zZXRBdHRyaWJ1dGUoJ2RhdGEtdycsJzEnKTtcbn1cbmlmKEQucmVhZHlTdGF0ZT09PSdsb2FkaW5nJylELmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLGdvKTtlbHNlIGdvKCk7XG5zZXRUaW1lb3V0KGdvLDkwMCk7c2V0VGltZW91dChnbywyNTAwKTtcbn0pKCk7XG48L3NjcmlwdD5cbjxzdHlsZSBpZD1cImt0aC1rcC1jc3NcIj5odG1sIGJvZHkgLmtwPltkYXRhLWxde2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9aHRtbCBib2R5IC5rcC5sYW5nLWtvPltkYXRhLWw9XCJrb1wiXSxodG1sIGJvZHkgLmtwLmxhbmctZW4+W2RhdGEtbD1cImVuXCJde2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fTwvc3R5bGU+XG48c3R5bGUgaWQ9XCJrdGgtaG9tZVwiPi5rdGgtc2VjMnttYXJnaW46NTJweCAwIDB9Lmt0aC1zZWMyLWh7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmJhc2VsaW5lO2dhcDoxNHB4O21hcmdpbi1ib3R0b206MThweH0ua3RoLXNlYzItdHtmb250OjgwMCAxNXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjAyZW07Y29sb3I6IzE0MTUxQTt3aGl0ZS1zcGFjZTpub3dyYXB9Lmt0aC1zZWMyLWg6YWZ0ZXJ7Y29udGVudDpcIlwiO2ZsZXg6MTtoZWlnaHQ6MnB4O2JhY2tncm91bmQ6IzE0MTUxQTthbGlnbi1zZWxmOmNlbnRlcn0ua3RoLXNlYzItbXtmb250OjcwMCAxMC41cHgvMSBJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMTRlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzlBN0IzRiFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O3doaXRlLXNwYWNlOm5vd3JhcH0ua3RoLXNlYzItZ3tkaXNwbGF5OmZsZXg7Z2FwOjIwcHg7b3ZlcmZsb3cteDphdXRvO3Njcm9sbC1iZWhhdmlvcjpzbW9vdGg7c2Nyb2xsLXNuYXAtdHlwZTp4IHByb3hpbWl0eTstd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDtzY3JvbGxiYXItd2lkdGg6bm9uZTstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTtwYWRkaW5nLWJvdHRvbTo0cHh9Lmt0aC1zZWMyLWc6Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX0ua3RoLXNlYzItY3tmbGV4OjAgMCAyNThweDtzY3JvbGwtc25hcC1hbGlnbjpzdGFydH0ua3RoLXNlYzItY3tkaXNwbGF5OmJsb2NrO3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtjb2xvcjppbmhlcml0IWltcG9ydGFudH0ua3RoLXNlYzItdGh7ZGlzcGxheTpibG9jazt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzo0LzM7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6I0VGRURFODtib3JkZXItcmFkaXVzOjJweH0ua3RoLXNlYzItdGggaW1ne3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7b2JqZWN0LWZpdDpjb3ZlcjtkaXNwbGF5OmJsb2NrO3RyYW5zaXRpb246dHJhbnNmb3JtIC41c30ua3RoLXNlYzItYzpob3ZlciAua3RoLXNlYzItdGggaW1ne3RyYW5zZm9ybTpzY2FsZSgxLjA0NSl9Lmt0aC1zZWMyLW57ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWxpbmUtY2xhbXA6Mzstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbi10b3A6MTFweDtmb250LXNpemU6MTQuNXB4O2xpbmUtaGVpZ2h0OjEuNDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzE0MTUxQX0ua3RoLXNlYzItZHtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6NnB4O2ZvbnQ6NTAwIDExLjVweC8xIEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOiM4QTg4N0Z9Lmt0aC1tcnttYXJnaW46NTJweCAwIDA7Ym9yZGVyLXRvcDoycHggc29saWQgIzE0MTUxQTtwYWRkaW5nLXRvcDoxOHB4fS5rdGgtbXItdHtmb250OjgwMCAxNXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzE0MTUxQTttYXJnaW4tYm90dG9tOjE0cHh9Lmt0aC1tci1se2Rpc3BsYXk6Z3JpZDtncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDUsMWZyKTtnYXA6MXB4O2JhY2tncm91bmQ6I0UzREZENjtib3JkZXI6MXB4IHNvbGlkICNFM0RGRDZ9Lmt0aC1tci1pe2Rpc3BsYXk6YmxvY2s7YmFja2dyb3VuZDojZmZmO3BhZGRpbmc6MTZweCAxNXB4IDE4cHg7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O2NvbG9yOmluaGVyaXQhaW1wb3J0YW50fS5rdGgtbXItaSBie2Rpc3BsYXk6YmxvY2s7Zm9udDo4MDAgMjBweC8xIEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2NvbG9yOiNDOUM0Qjc7bWFyZ2luLWJvdHRvbToxMHB4fS5rdGgtbXItaTpob3ZlciBie2NvbG9yOiM5QTdCM0Z9Lmt0aC1tci1pIHNwYW57ZGlzcGxheTotd2Via2l0LWJveDstd2Via2l0LWxpbmUtY2xhbXA6NDstd2Via2l0LWJveC1vcmllbnQ6dmVydGljYWw7b3ZlcmZsb3c6aGlkZGVuO2ZvbnQtc2l6ZToxMy41cHg7bGluZS1oZWlnaHQ6MS40Njtmb250LXdlaWdodDo2MDA7Y29sb3I6IzE0MTUxQX1AbWVkaWEobWF4LXdpZHRoOjkwMHB4KXsua3RoLXNlYzItY3tmbGV4OjAgMCA2MnZ3fS5rdGgtbXItbHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyfX1AbWVkaWEobWF4LXdpZHRoOjYwMHB4KXsua3RoLXNlYzJ7bWFyZ2luLXRvcDozOHB4fS5rdGgtc2VjMi1ue2ZvbnQtc2l6ZToxMy41cHh9Lmt0aC1tcnttYXJnaW4tdG9wOjM4cHh9Lmt0aC1zZWMyLWN7ZmxleDowIDAgNzJ2d319PC9zdHlsZT5cbjxzY3JpcHQgaWQ9XCJrdGgtaG9tZS1qc1wiPlxuKGZ1bmN0aW9uKCl7XG52YXIgRD1kb2N1bWVudDtcbnZhciBTRUM9W1xue3Q6e2tvOifsiqTtirjrpqzrsI0gwrcgRkFTVCcsZW46J1N0cmVhbWluZyAmIEZBU1QnfSx1OicvdGFnL3N0cmVhbWluZy8nfSxcbnt0OntrbzonQUknLGVuOidBSSd9LHU6Jy90YWcvQUkvJ30sXG57dDp7a286J+2BrOumrOyXkOydtO2EsCcsZW46J0NyZWF0b3IgRWNvbm9teSd9LHU6Jy90YWcvY3JlYXRvci8nfSxcbnt0Ontrbzon7KCV7LGFJyxlbjonUG9saWN5J30sdTonL3RhZy9tZWRpYXBvbGljeS8nfSxcbnt0Ontrbzon7JeU7YSw7YWM7YGsJyxlbjonRW50ZXJ0YWlubWVudCBUZWNoJ30sdTonL3RhZy90ZWNoMi8nfSxcbnt0Ontrbzon67Cp7IahIMK3IO2GteyLoCcsZW46J1RWICYgVGVsY28nfSx1OicvdGFnL1RWLyd9LFxue3Q6e2tvOifsmKTtlLzri4jslrgnLGVuOidPcGluaW9uJ30sdTonL3RhZy9zcGVjaWFsLyd9LFxue3Q6e2tvOifroZzsu6zthYztgawnLGVuOidMb2NhbCBUZWNoJ30sdTonL3RhZy9uZXZhZGEtdXMtc3RhdGUtd2F0Y2gvJ31cbl07XG5mdW5jdGlvbiBoYW4ocyl7cmV0dXJuIC9b6rCALe2eo10vLnRlc3Qoc3x8JycpO31cbmZ1bmN0aW9uIGxhbmcoKXt0cnl7dmFyIHY9bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2t0aF9sYW5nJyk7aWYodj09PSdlbid8fHY9PT0na28nKXJldHVybiB2O31jYXRjaChlKXt9XG5yZXR1cm4gL15lbi9pLnRlc3QobmF2aWdhdG9yLmxhbmd1YWdlfHwnJyk/J2VuJzona28nO31cbmZ1bmN0aW9uIGZtdCh0cyxlbil7dmFyIGQ9bmV3IERhdGUodHMpO2lmKGlzTmFOKGQpKXJldHVybiAnJztcbnZhciBNPVsnSmFuJywnRmViJywnTWFyJywnQXByJywnTWF5JywnSnVuJywnSnVsJywnQXVnJywnU2VwJywnT2N0JywnTm92JywnRGVjJ107XG5yZXR1cm4gZW4/KE1bZC5nZXRNb250aCgpXSsnICcrZC5nZXREYXRlKCkpOigoZC5nZXRNb250aCgpKzEpKyfsm5QgJytkLmdldERhdGUoKSsn7J28Jyk7fVxuZnVuY3Rpb24gY2FyZHMoaHRtbCxlbixuKXtcbnZhciBkPW5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwndGV4dC9odG1sJyk7XG52YXIgb3V0PVtdO1xuW10uZm9yRWFjaC5jYWxsKGQucXVlcnlTZWxlY3RvckFsbCgnLmt0aC1jYXJkJyksZnVuY3Rpb24oYyl7XG52YXIgdD1jLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtY2FyZC10aXRsZScpO2lmKCF0KXJldHVybjtcbnZhciB0eD0odC50ZXh0Q29udGVudHx8JycpLnRyaW0oKTtcbmlmKCF0eHx8KGhhbih0eCk/ZW46IWVuKSlyZXR1cm47XG52YXIgaT1jLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpO1xub3V0LnB1c2goe3Q6dHgsaDpjLmdldEF0dHJpYnV0ZSgnaHJlZicpLGltZzppPyhpLmdldEF0dHJpYnV0ZSgnc3JjJyl8fGkuZ2V0QXR0cmlidXRlKCdkYXRhLXNyYycpKTonJyxcbmQ6KGMucXVlcnlTZWxlY3RvcignLmt0aC1tZXRhLC5rdGgtY2FyZC1kYXRlJyl8fHt0ZXh0Q29udGVudDonJ30pLnRleHRDb250ZW50LnRyaW0oKX0pO1xufSk7XG5yZXR1cm4gb3V0LnNsaWNlKDAsbik7XG59XG5mdW5jdGlvbiBibG9jayhzZWMsbGlzdCxlbil7XG52YXIgcz1ELmNyZWF0ZUVsZW1lbnQoJ3NlY3Rpb24nKTtzLmNsYXNzTmFtZT0na3RoLXNlYzInO1xudmFyIGg9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtoLmNsYXNzTmFtZT0na3RoLXNlYzItaCc7XG52YXIgdD1ELmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3QuY2xhc3NOYW1lPSdrdGgtc2VjMi10Jzt0LnRleHRDb250ZW50PXNlYy50W2VuPydlbic6J2tvJ107XG52YXIgbT1ELmNyZWF0ZUVsZW1lbnQoJ2EnKTttLmNsYXNzTmFtZT0na3RoLXNlYzItbSc7bS5ocmVmPXNlYy51O20udGV4dENvbnRlbnQ9ZW4/J1ZpZXcgYWxsJzon7KCE7LK0IOuztOq4sCc7XG5oLmFwcGVuZENoaWxkKHQpO2guYXBwZW5kQ2hpbGQobSk7XG52YXIgZz1ELmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2cuY2xhc3NOYW1lPSdrdGgtc2VjMi1nJztcbmxpc3QuZm9yRWFjaChmdW5jdGlvbihvKXtcbnZhciBhPUQuY3JlYXRlRWxlbWVudCgnYScpO2EuY2xhc3NOYW1lPSdrdGgtc2VjMi1jJzthLmhyZWY9by5oO1xudmFyIHRoPUQuY3JlYXRlRWxlbWVudCgnc3BhbicpO3RoLmNsYXNzTmFtZT0na3RoLXNlYzItdGgnO1xuaWYoby5pbWcpe3ZhciBpbT1ELmNyZWF0ZUVsZW1lbnQoJ2ltZycpO2ltLmFsdD0nJztpbS5sb2FkaW5nPSdsYXp5JztpbS5zcmM9by5pbWc7dGguYXBwZW5kQ2hpbGQoaW0pO31cbnZhciBuPUQuY3JlYXRlRWxlbWVudCgnc3BhbicpO24uY2xhc3NOYW1lPSdrdGgtc2VjMi1uJztuLnRleHRDb250ZW50PW8udDtcbmEuYXBwZW5kQ2hpbGQodGgpO2EuYXBwZW5kQ2hpbGQobik7XG5pZihvLmQpe3ZhciBkZD1ELmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtkZC5jbGFzc05hbWU9J2t0aC1zZWMyLWQnO2RkLnRleHRDb250ZW50PW8uZDthLmFwcGVuZENoaWxkKGRkKTt9XG5nLmFwcGVuZENoaWxkKGEpO30pO1xucy5hcHBlbmRDaGlsZChoKTtzLmFwcGVuZENoaWxkKGcpO1xucmV0dXJuIHM7XG59XG5mdW5jdGlvbiBtb3N0UmVhZChlbil7cmV0dXJuIGZldGNoKFwiL2t0aC10b3AvXCIse2NyZWRlbnRpYWxzOlwic2FtZS1vcmlnaW5cIn0pLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHIub2s/ci50ZXh0KCk6XCJcIjt9KS50aGVuKGZ1bmN0aW9uKGgpe2lmKCFoKXJldHVybiBudWxsO3ZhciBkPW5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaCxcInRleHQvaHRtbFwiKTt2YXIgZWw9ZC5nZXRFbGVtZW50QnlJZChlbj9cImt0aHRvcC1lblwiOlwia3RodG9wLWtvXCIpO2lmKCFlbClyZXR1cm4gbnVsbDt2YXIgcm93cz0oZWwudGV4dENvbnRlbnR8fFwiXCIpLnRyaW0oKS5zcGxpdChcIn5cIikuZmlsdGVyKEJvb2xlYW4pLnNsaWNlKDAsNSk7aWYocm93cy5sZW5ndGg8MylyZXR1cm4gbnVsbDt2YXIgdz1ELmNyZWF0ZUVsZW1lbnQoXCJzZWN0aW9uXCIpO3cuY2xhc3NOYW1lPVwia3RoLW1yXCI7dmFyIHQ9RC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3QuY2xhc3NOYW1lPVwia3RoLW1yLXRcIjt0LnRleHRDb250ZW50PWVuP1wiTW9zdCBSZWFkXCI6XCJcXHVCOUNFXFx1Qzc3NCBcXHVCQ0Y4IFxcdUFFMzBcXHVDMEFDXCI7dy5hcHBlbmRDaGlsZCh0KTt2YXIgbD1ELmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7bC5jbGFzc05hbWU9XCJrdGgtbXItbFwiO2Zvcih2YXIgaT0wO2k8cm93cy5sZW5ndGg7aSsrKXt2YXIgcD1yb3dzW2ldLnNwbGl0KFwifFwiKTtpZihwLmxlbmd0aDwyKWNvbnRpbnVlO3ZhciBhPUQuY3JlYXRlRWxlbWVudChcImFcIik7YS5jbGFzc05hbWU9XCJrdGgtbXItaVwiO2EuaHJlZj1cIi9cIitwWzBdK1wiL1wiO3ZhciBiPUQuY3JlYXRlRWxlbWVudChcImJcIik7Yi50ZXh0Q29udGVudD0oXCIwXCIrKGkrMSkpLnNsaWNlKC0yKTt2YXIgcz1ELmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO3MudGV4dENvbnRlbnQ9cFsxXTthLmFwcGVuZENoaWxkKGIpO2EuYXBwZW5kQ2hpbGQocyk7bC5hcHBlbmRDaGlsZChhKTt9dy5hcHBlbmRDaGlsZChsKTtyZXR1cm4gdzt9KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiBudWxsO30pO31cbmZ1bmN0aW9uIGdvKCl7XG5pZighRC5ib2R5fHwhRC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnaG9tZS10ZW1wbGF0ZScpKXJldHVybjtcbmlmKHdpbmRvdy5fX0tUSEhPTUUpcmV0dXJuO3dpbmRvdy5fX0tUSEhPTUU9MTtcbnZhciBlbj1sYW5nKCk9PT0nZW4nO1xudmFyIGFuY2hvcj1ELnF1ZXJ5U2VsZWN0b3IoJy5rdGgtbmwnKXx8RC5xdWVyeVNlbGVjdG9yKCcua3RoLXl0LWdyaWQnKTtcbmlmKGFuY2hvciYmYW5jaG9yLmNsYXNzTmFtZS5pbmRleE9mKCdrdGgteXQtZ3JpZCcpPj0wKWFuY2hvcj1hbmNob3IucGFyZW50RWxlbWVudDtcbmlmKCFhbmNob3J8fCFhbmNob3IucGFyZW50Tm9kZSlyZXR1cm47XG5tb3N0UmVhZChlbikudGhlbihmdW5jdGlvbihtcil7IGlmKCFtcilyZXR1cm47dmFyIGE9YW5jaG9yLHNnPUQucXVlcnlTZWxlY3RvcihcIi5rdGgtc2hvcC1zdHJpcC1ncmlkXCIpO1xuaWYoc2cpe3ZhciBuZD1zZyx0Zz1zZztmb3IodmFyIG49MDtuPDQ7bisrKXt2YXIgcD1uZC5wYXJlbnRFbGVtZW50O2lmKCFwfHxwPT09RC5ib2R5fHxwLnRhZ05hbWU9PT1cIk1BSU5cIilicmVhaztpZihwLnF1ZXJ5U2VsZWN0b3IoXCIua3RoLWNhcmRcIil8fHAucXVlcnlTZWxlY3RvcihcIi5rdGgtaGVyby13cmFwXCIpfHxwLnF1ZXJ5U2VsZWN0b3IoXCJmb290ZXJcIil8fHAucXVlcnlTZWxlY3RvcihcIi5rdGgteXQtZ3JpZFwiKSlicmVhaztuZD1wO3RnPXA7fVxuaWYodGcucGFyZW50Tm9kZSlhPXRnO31cbmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobXIsYSk7IH0pO1xuU0VDLmZvckVhY2goZnVuY3Rpb24oc2VjKXtcbmZ1bmN0aW9uIGdyYWIocCl7cmV0dXJuIGZldGNoKHA9PT0xP3NlYy51OnNlYy51KydwYWdlLycrcCsnLycse2NyZWRlbnRpYWxzOidzYW1lLW9yaWdpbid9KS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLm9rP3IudGV4dCgpOicnO30pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuICcnO30pO31cbmdyYWIoMSkudGhlbihmdW5jdGlvbihoMSl7XG5pZihjYXJkcyhoMSxlbiwyMCkubGVuZ3RoPj0yMClyZXR1cm4gaDE7XG5yZXR1cm4gUHJvbWlzZS5hbGwoW2dyYWIoMiksZ3JhYigzKSxncmFiKDQpLGdyYWIoNSldKS50aGVuKGZ1bmN0aW9uKHgpe3JldHVybiBoMSt4LmpvaW4oJycpO30pO1xufSkudGhlbihmdW5jdGlvbihoKXtcbmlmKCFoKXJldHVybjtcbnZhciBsaXN0PWNhcmRzKGgsZW4sMjApO1xuaWYobGlzdC5sZW5ndGg8MylyZXR1cm47XG52YXIgYj1ibG9jayhzZWMsbGlzdCxlbik7XG5pZihhbmNob3ImJmFuY2hvci5wYXJlbnROb2RlKWFuY2hvci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShiLGFuY2hvcik7XG59KS5jYXRjaChmdW5jdGlvbigpe30pO1xufSk7XG59XG5zZXRUaW1lb3V0KGdvLDM1MDApO1xuc2V0VGltZW91dChmdW5jdGlvbigpe3dpbmRvdy5fX0tUSEhPTUU9MDtpZighRC5xdWVyeVNlbGVjdG9yKCcua3RoLXNlYzInKSlnbygpO30sODAwMCk7XG59KSgpO1xuPC9zY3JpcHQ+XG48c3R5bGUgaWQ9XCJrdGgtdGFnaGRcIj4ua3RoLXRoMnttYXJnaW46MCAwIDMwcHg7cGFkZGluZzowIDAgMjRweDtib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMTQxNTFBfS5rdGgtdGgyLWt7Zm9udDo3MDAgMTAuNXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjJlbTt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7Y29sb3I6IzlBN0IzRn0ua3RoLXRoMi10e21hcmdpbi10b3A6MTFweDtmb250LXNpemU6MzRweDtmb250LXdlaWdodDo4MDA7bGV0dGVyLXNwYWNpbmc6LS4wMjVlbTtsaW5lLWhlaWdodDoxLjI7Y29sb3I6IzE0MTUxQX0ua3RoLXRoMi1ke21hcmdpbi10b3A6MTFweDtmb250LXNpemU6MTUuNXB4O2xpbmUtaGVpZ2h0OjEuNztjb2xvcjojM0EzQjQwO21heC13aWR0aDo0NmVtfUBtZWRpYShtYXgtd2lkdGg6NjQwcHgpey5rdGgtdGgyLXR7Zm9udC1zaXplOjI1cHh9Lmt0aC10aDItZHtmb250LXNpemU6MTQuNXB4fX08L3N0eWxlPlxuPHNjcmlwdCBpZD1cImt0aC10YWdoZC1qc1wiPlxuKGZ1bmN0aW9uKCl7XG52YXIgRD1kb2N1bWVudDtcbnZhciBERVNDPXtcbidzdHJlYW1pbmcnOntrbzpbJ+yKpO2KuOumrOuwjSDCtyBGQVNUJywn64S37ZSM66at7IqkwrfrlJTspojri4grwrftiKzruYTrtoDthLAg6rWt64K0IE9UVOq5jOyngC4g7ZSM656r7Y+8IOyghOueteqzvCDsi5zssq0g642w7J207YSwLCDqt7jrpqzqs6Ag6rSR6rOgIOq4sOuwmCDssYTrhJAoRkFTVCkg7Iuc7J6l7J2YIO2MkOuPhOulvCDstpTsoIHtlanri4jri6QuJ10sXG5lbjpbJ1N0cmVhbWluZyAmIEZBU1QnLCdQbGF0Zm9ybSBzdHJhdGVneSwgYXVkaWVuY2UgZGF0YSwgYW5kIHRoZSBmcmVlIGFkLXN1cHBvcnRlZCBjaGFubmVsIG1hcmtldCDigJQgZnJvbSBOZXRmbGl4IGFuZCBEaXNuZXkrIHRvIEtvcmVhXFx1MjAxOXMgb3duIHNlcnZpY2VzLiddfSxcbidBSSc6e2tvOlsn66+465SU7Ja0IOyGjeydmCBBSScsJ+yDneyEsSBBSeqwgCDsoJzsnpHCt+ycoO2GtcK37KCA7J6R6raM7J2EIOyWtOuWu+qyjCDrsJTqvrjripTsp4AsIOq3uOumrOqzoCDsl4Xqs4TqsIAg7Iuk7KCc66GcIOustOyXh+ydhCDrj4TsnoXtlZjqs6Ag7J6I64qU7KeAIOuLpOujueuLiOuLpC4nXSxcbmVuOlsnQUkgaW4gTWVkaWEnLCdIb3cgZ2VuZXJhdGl2ZSBBSSBpcyByZXNoYXBpbmcgcHJvZHVjdGlvbiwgZGlzdHJpYnV0aW9uIGFuZCByaWdodHMg4oCUIGFuZCB3aGF0IHRoZSBpbmR1c3RyeSBpcyBhY3R1YWxseSBkZXBsb3lpbmcuJ119LFxuJ2NyZWF0b3InOntrbzpbJ+2BrOumrOyXkOydtO2EsCDqsr3soJwnLCfsnKDtipzruIzCt+2Lse2GocK37J247Iqk7YOA6re4656o7J2YIOyImOydtSDrsLDrtoQsIOywveyekeyekCDspJHsi6wg66+465SU7Ja0IOyngO2YleqzvCDsg4jroZzsmrQg67mE7KaI64uI7IqkIOuqqOuNuOydhCDrtIXri4jri6QuJ10sXG5lbjpbJ0NyZWF0b3IgRWNvbm9teScsJ1JldmVudWUgc3BsaXRzIGFjcm9zcyBZb3VUdWJlLCBUaWtUb2sgYW5kIEluc3RhZ3JhbSwgY3JlYXRvci1sZWQgbWVkaWEsIGFuZCB0aGUgYnVzaW5lc3MgbW9kZWxzIGVtZXJnaW5nIGFyb3VuZCB0aGVtLiddfSxcbidtZWRpYXBvbGljeSc6e2tvOlsn66+465SU7Ja0IOygleyxhScsJ+uwqeyGoe2GteyLoCDqt5zsoJwsIOyggOyekeq2jCwg7ZWp67ORIOyLrOyCrC4g7IKw7JeF7J2EIOybgOyngeydtOuKlCDsoJzrj4Qg67OA7ZmU66W8IOygleyxhSDri7Tri7nsnpAg64iI64aS7J207JeQ7IScIOygleumrO2VqeuLiOuLpC4nXSxcbmVuOlsnTWVkaWEgUG9saWN5JywnQnJvYWRjYXN0IGFuZCB0ZWxlY29tIHJlZ3VsYXRpb24sIGNvcHlyaWdodCwgYW5kIG1lcmdlciByZXZpZXcg4oCUIHRoZSBydWxlcyB0aGF0IG1vdmUgdGhlIGluZHVzdHJ5LiddfSxcbid0ZWNoMic6e2tvOlsn7JeU7YSw7YWM7YGsJywn7JiB7IOBIOygnOyekeqzvCDsvZjthZDsuKAg7IKw7JeF7J2EIOuwlOq+uOuKlCDquLDsiKAg7KCE67CY7J2EIOuLpOujueuLiOuLpC4nXSxcbmVuOlsnRW50ZXJ0YWlubWVudCBUZWNoJywnVGhlIHRlY2hub2xvZ3kgcmVzaGFwaW5nIGZpbG0sIHRlbGV2aXNpb24gYW5kIHRoZSBjb250ZW50IGJ1c2luZXNzLiddfSxcbidlbmdsaXNoJzp7a286WydFbmdsaXNoIEVkaXRpb24nLCdLLUVudGVyVGVjaCBIdWLsnZgg7JiB66y4IOq4sOyCrCDrqqjsnYzsnoXri4jri6QuJ10sXG5lbjpbJ0VuZ2xpc2ggRWRpdGlvbicsJ091ciBFbmdsaXNoLWxhbmd1YWdlIHJlcG9ydGluZyBvbiBLb3JlYW4gYW5kIGdsb2JhbCBlbnRlcnRhaW5tZW50IHRlY2hub2xvZ3kuJ119LFxuJ1RWJzp7a286WyfrsKnshqEgwrcg7Ya17IugJywn7Luk64Sl7Yuw65OcIFRWLCBDVFYg6rSR6rOgLCDthrXsi6DCt+uvuOuUlOyWtCDsnLXtlansnZgg7LWc7KCE7ISgLiddLFxuZW46WydUViAmIFRlbGNvJywnQ29ubmVjdGVkIFRWLCBDVFYgYWR2ZXJ0aXNpbmcsIGFuZCB0aGUgY29udmVyZ2VuY2Ugb2YgdGVsZWNvbSBhbmQgbWVkaWEuJ119LFxuJ25ldmFkYS11cy1zdGF0ZS13YXRjaCc6e2tvOlsn66Gc7Lus7YWM7YGsJywn64Sk67CU64uk7JmAIOuvuOq1rSDso7zsoJXrtoDrtoDthLAg7IS46rOEIOqwgSDsp4Dsl63quYzsp4AsIOyngOyXrSDri6jsnITsnZgg66+465SU7Ja0wrfthYztgawg7KCV7LGF6rO8IOyduOyEvO2LsOu4jOulvCDstpTsoIHtlanri4jri6QuJ10sZW46WydMb2NhbCBUZWNoJywnUmVnaW9uLWxldmVsIG1lZGlhIGFuZCB0ZWNobm9sb2d5IHBvbGljeSBhbmQgaW5jZW50aXZlcyDigJQgZnJvbSBOZXZhZGEgYW5kIFVTIHN0YXRlcyB0byBsb2NhbCB0ZWNoIGh1YnMgd29ybGR3aWRlLiddfSxcbidzcGVjaWFsJzp7a286WyfsmKTtlLzri4jslrgnLCfsl4Xqs4Qg7KCE66y46rCA7JmAIO2OuOynkeynhOydmCDsi5zqsIEuJ10sZW46WydPcGluaW9uJywnUGVyc3BlY3RpdmVzIGZyb20gaW5kdXN0cnkgZXhwZXJ0cyBhbmQgb3VyIGVkaXRvcnMuJ119XG59O1xuZnVuY3Rpb24gbGFuZygpe3RyeXt2YXIgdj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgna3RoX2xhbmcnKTtpZih2PT09J2VuJylyZXR1cm4gJ2VuJzt9Y2F0Y2goZSl7fVxucmV0dXJuIChELmJvZHkmJkQuYm9keS5jbGFzc05hbWUuaW5kZXhPZignbGFuZ3VhZ2UtZW4nKT49MCk/J2VuJzona28nO31cbmZ1bmN0aW9uIGdvKCl7XG5pZighRC5ib2R5KXJldHVybjtcbnZhciBtPWxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvdGFnXFwvKFteL10rKVxcLy8pO1xuaWYoIW0pcmV0dXJuO1xuaWYoRC5xdWVyeVNlbGVjdG9yKCcua3RoLXRoMicpKXJldHVybjtcbnZhciBkPURFU0NbbVsxXV07aWYoIWQpcmV0dXJuO1xudmFyIGhvc3Q9RC5xdWVyeVNlbGVjdG9yKCcua3RoLXRhZy1oZWFkZXInKTtpZighaG9zdClyZXR1cm47XG52YXIgZW49bGFuZygpPT09J2VuJztcbnZhciB2PWRbZW4/J2VuJzona28nXTtcbnZhciBiPUQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Yi5jbGFzc05hbWU9J2t0aC10aDInO1xudmFyIGs9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtrLmNsYXNzTmFtZT0na3RoLXRoMi1rJztrLnRleHRDb250ZW50PWVuPydTZWN0aW9uJzon7IS57IWYJztcbnZhciB0PUQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7dC5jbGFzc05hbWU9J2t0aC10aDItdCc7dC50ZXh0Q29udGVudD12WzBdO1xudmFyIHA9RC5jcmVhdGVFbGVtZW50KCdkaXYnKTtwLmNsYXNzTmFtZT0na3RoLXRoMi1kJztwLnRleHRDb250ZW50PXZbMV07XG5iLmFwcGVuZENoaWxkKGspO2IuYXBwZW5kQ2hpbGQodCk7Yi5hcHBlbmRDaGlsZChwKTtcbmhvc3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYixob3N0KTtcbmhvc3Quc3R5bGUuZGlzcGxheT0nbm9uZSc7XG59XG5pZihELnJlYWR5U3RhdGU9PT0nbG9hZGluZycpRC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxnbyk7ZWxzZSBnbygpO1xuc2V0VGltZW91dChnbywxMjAwKTtzZXRUaW1lb3V0KGdvLDMwMDApO1xufSkoKTtcbjwvc2NyaXB0PlxuPHN0eWxlIGlkPVwia3RoLWZvb3QyXCI+aHRtbCBib2R5IC5rdGgtZm9vdDJ7bWFyZ2luLXRvcDoxOHB4fWh0bWwgYm9keSAua3RoLWZvb3QyLWx7Zm9udDo3MDAgMTAuNXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7bGV0dGVyLXNwYWNpbmc6LjE2ZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2NvbG9yOiM5QTdCM0Y7bWFyZ2luLWJvdHRvbToxMXB4fWh0bWwgYm9keSAua3RoLWZvb3QyLW57ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2dhcDo4cHggMThweH1odG1sIGJvZHkgLmt0aC1mb290Mi1uIGF7Zm9udDo1MDAgMTNweC8xLjYgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzNBM0I0MCFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHRyYW5zcGFyZW50fWh0bWwgYm9keSAua3RoLWZvb3QyLW4gYTpob3Zlcntjb2xvcjojMTQxNTFBIWltcG9ydGFudDtib3JkZXItYm90dG9tLWNvbG9yOiNDOUM0Qjd9PC9zdHlsZT5cbjxzY3JpcHQgaWQ9XCJrdGgtZm9vdDItanNcIj5cbihmdW5jdGlvbigpe1xudmFyIEQ9ZG9jdW1lbnQ7XG52YXIgTD1bWydNYXN0aGVhZCcsJ+2OuOynkeynhCcsJy9tYXN0aGVhZC8nXSxbJ0VkaXRvcmlhbCBTdGFuZGFyZHMnLCftjrjsp5Eg7JuQ7LmZJywnL2VkaXRvcmlhbC1zdGFuZGFyZHMvJ10sXG5bJ0NvbnRhY3QnLCfrrLjsnZgnLCcvY29udGFjdC8nXSxbJ0FkdmVydGlzZScsJ+q0keqzoCDslYjrgrQnLCcvYWR2ZXJ0aXNlLyddLFxuWydOZXdzbGV0dGVyJywn64m07Iqk66CI7YSwJywnL25ld3NsZXR0ZXIvJ10sWydQcml2YWN5Jywn6rCc7J247KCV67O0JywnL3ByaXZhY3kvJ10sWydUZXJtcycsJ+ydtOyaqeyVveq0gCcsJy90ZXJtcy8nXV07XG5mdW5jdGlvbiBnbygpe1xuaWYoIUQuYm9keXx8RC5xdWVyeVNlbGVjdG9yKCcua3RoLWZvb3QyJykpcmV0dXJuO1xudmFyIGJsaz1ELnF1ZXJ5U2VsZWN0b3IoJy5mb290ZXItbmF2LWJsb2NrJyk7aWYoIWJsaylyZXR1cm47XG52YXIgZW49ZmFsc2U7dHJ5e2VuPWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdrdGhfbGFuZycpPT09J2VuJzt9Y2F0Y2goZSl7fVxuaWYoIWVuJiZELmJvZHkuY2xhc3NOYW1lLmluZGV4T2YoJ2xhbmd1YWdlLWVuJyk+PTApZW49dHJ1ZTtcbnZhciB3PUQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7dy5jbGFzc05hbWU9J2t0aC1mb290Mic7XG52YXIgbGFiPUQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7bGFiLmNsYXNzTmFtZT0na3RoLWZvb3QyLWwnO2xhYi50ZXh0Q29udGVudD1lbj8nQWJvdXQgVXMnOifrp6TssrQg7KCV67O0JztcbnZhciBuPUQuY3JlYXRlRWxlbWVudCgnbmF2Jyk7bi5jbGFzc05hbWU9J2t0aC1mb290Mi1uJztcbkwuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT1ELmNyZWF0ZUVsZW1lbnQoJ2EnKTthLmhyZWY9eFsyXTthLnRleHRDb250ZW50PWVuP3hbMF06eFsxXTtuLmFwcGVuZENoaWxkKGEpO30pO1xudy5hcHBlbmRDaGlsZChsYWIpO3cuYXBwZW5kQ2hpbGQobik7XG5ibGsucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodyxibGsubmV4dFNpYmxpbmcpO1xufVxuaWYoRC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKUQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZ28pO2Vsc2UgZ28oKTtcbnNldFRpbWVvdXQoZ28sMTIwMCk7c2V0VGltZW91dChnbywzMDAwKTtcbn0pKCk7XG48L3NjcmlwdD5cbjxzdHlsZSBpZD1cImt0aC1ub3RvZ1wiPmh0bWwgYm9keSAua3AgLmtwLXRvZyxodG1sIGJvZHkgLmt0LWFib3V0LXRvZ2dsZSxodG1sIGJvZHkgLmt0LWFib3V0IC5rdGgtbGFuZ3RvZ2dsZSxodG1sIGJvZHkgI2Fib3V0LWNvbnRlbnQtd3JhcCAua3RoLWxhbmd0b2dnbGV7ZGlzcGxheTpub25lIWltcG9ydGFudH08L3N0eWxlPlxuPHNjcmlwdCBpZD1cImt0aC1lbm9ubHktanNcIj5cbihmdW5jdGlvbigpe1xudmFyIEQ9ZG9jdW1lbnQ7XG5mdW5jdGlvbiBMKCl7dHJ5e3ZhciB2PWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdrdGhfbGFuZycpO2lmKHY9PT0nZW4nfHx2PT09J2tvJylyZXR1cm4gdjt9Y2F0Y2goZSl7fVxucmV0dXJuIC9eZW4vaS50ZXN0KG5hdmlnYXRvci5sYW5ndWFnZXx8JycpPydlbic6J2tvJzt9XG5mdW5jdGlvbiBnbygpe1xuaWYoIUQuYm9keXx8TCgpIT09J2VuJylyZXR1cm47XG4vKiAxLiDsnKDtipzruIw6IOyYgeusuCDssYTrhJAg7YOt7Jy866GcICovXG52YXIgdGFicz1ELnF1ZXJ5U2VsZWN0b3JBbGwoJy5rdGgteXQtdGFiJyk7XG5pZih0YWJzLmxlbmd0aD4xJiYhRC5ib2R5Ll9feXRFbil7XG52YXIgZz1ELmdldEVsZW1lbnRCeUlkKCd5dC1nbG9iYWwnKTtcbmlmKGcmJmcucXVlcnlTZWxlY3RvckFsbCgnLmt0aC15dC1jYXJkJykubGVuZ3RoKXtcbkQuYm9keS5fX3l0RW49MTtcbnRyeXt0YWJzWzFdLmNsaWNrKCk7fWNhdGNoKGUpe31cbnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgaz1ELmdldEVsZW1lbnRCeUlkKCd5dC1rcicpLGdnPUQuZ2V0RWxlbWVudEJ5SWQoJ3l0LWdsb2JhbCcpO1xuaWYoZ2cmJmdldENvbXB1dGVkU3R5bGUoZ2cpLmRpc3BsYXk9PT0nbm9uZScpe2dnLnN0eWxlLmRpc3BsYXk9J2dyaWQnO2lmKGspay5zdHlsZS5kaXNwbGF5PSdub25lJztcbnRhYnNbMF0uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7dGFic1sxXS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTt9fSw0MDApO1xufVxufVxuLyogMi4g7ZWc6rWt7Ja0IOyghOyaqSDrpqztj6ztirgg7IS57IWYIOyIqOq5gCAqL1xudmFyIHN0cmlwPUQucXVlcnlTZWxlY3RvcignLmt0aC1zaG9wLXN0cmlwLWdyaWQnKTtcbmlmKHN0cmlwKXtcbnZhciBub2RlPXN0cmlwLHRhcmdldD1zdHJpcDtcbmZvcih2YXIgbj0wO248NDtuKyspe1xudmFyIHA9bm9kZS5wYXJlbnRFbGVtZW50O1xuaWYoIXB8fHA9PT1ELmJvZHl8fHAudGFnTmFtZT09PSdNQUlOJ3x8cC50YWdOYW1lPT09J0JPRFknKWJyZWFrO1xuaWYocC5xdWVyeVNlbGVjdG9yKCcua3RoLWNhcmQnKXx8cC5xdWVyeVNlbGVjdG9yKCcua3RoLWhlcm8td3JhcCcpfHxwLnF1ZXJ5U2VsZWN0b3IoJ2Zvb3RlcicpfHxwLnF1ZXJ5U2VsZWN0b3IoJy5rdGgteXQtZ3JpZCcpKWJyZWFrO1xubm9kZT1wO3RhcmdldD1wO1xufVxudGFyZ2V0LnN0eWxlLmRpc3BsYXk9J25vbmUnO1xufVxufVxuc2V0VGltZW91dChnbywyNTAwKTtzZXRUaW1lb3V0KGdvLDUwMDApO3NldFRpbWVvdXQoZ28sODAwMCk7XG59KSgpO1xuPC9zY3JpcHQ+XG48c2NyaXB0IGlkPVwia3RoLWhkcnRvZy1qc1wiPlxuKGZ1bmN0aW9uKCl7XG52YXIgRD1kb2N1bWVudDtcbmZ1bmN0aW9uIGN1cigpe3RyeXt2YXIgdj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgna3RoX2xhbmcnKTtpZih2PT09J2VuJ3x8dj09PSdrbycpcmV0dXJuIHY7fWNhdGNoKGUpe31cbnJldHVybiAvXmVuL2kudGVzdChuYXZpZ2F0b3IubGFuZ3VhZ2V8fCcnKT8nZW4nOidrbyc7fVxuZnVuY3Rpb24gZ28oKXtcbmlmKCFELmJvZHkpcmV0dXJuO1xuaWYoRC5xdWVyeVNlbGVjdG9yKCdoZWFkZXIgLmt0aC1sYW5ndG9nZ2xlJykpcmV0dXJuO1xudmFyIGJhcj1ELnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItbWVtYmVyJyl8fEQucXVlcnlTZWxlY3RvcignLmhlYWRlci1yaWdodCcpO1xuaWYoIWJhcilyZXR1cm47XG52YXIgdD1ELmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3QuY2xhc3NOYW1lPSdrdGgtbGFuZ3RvZ2dsZSc7XG52YXIgYz1jdXIoKTtcbltbJ2tvJywn7ZWc6rWt7Ja0J10sWydlbicsJ0VuZ2xpc2gnXV0uZm9yRWFjaChmdW5jdGlvbih4KXtcbnZhciBiPUQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7Yi50eXBlPSdidXR0b24nO2Iuc2V0QXR0cmlidXRlKCdkYXRhLWwnLHhbMF0pO2IudGV4dENvbnRlbnQ9eFsxXTtcbmIuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLHhbMF09PT1jPyd0cnVlJzonZmFsc2UnKTtcbmIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7dHJ5e2xvY2FsU3RvcmFnZS5zZXRJdGVtKCdrdGhfbGFuZycseFswXSk7fWNhdGNoKGUpe31sb2NhdGlvbi5yZWxvYWQoKTt9KTtcbnQuYXBwZW5kQ2hpbGQoYik7fSk7XG5iYXIuaW5zZXJ0QmVmb3JlKHQsYmFyLmZpcnN0Q2hpbGQpO1xufVxuaWYoRC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKUQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsZ28pO2Vsc2UgZ28oKTtcbnNldFRpbWVvdXQoZ28sMTIwMCk7c2V0VGltZW91dChnbywzMDAwKTtzZXRUaW1lb3V0KGdvLDUwMDApO1xufSkoKTtcbjwvc2NyaXB0PlxuPHN0eWxlIGlkPVwia3RoLXNyY2hcIj4ua3RoLXNye3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6OTAwO3RvcDpjYWxjKDEwMCUgKyA4cHgpO3JpZ2h0OjA7d2lkdGg6NDIwcHg7bWF4LXdpZHRoOjkydnc7bWF4LWhlaWdodDo2MHZoO292ZXJmbG93LXk6YXV0bztiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjQzlDNEI3O2JveC1zaGFkb3c6MCAxNHB4IDM0cHggcmdiYSgyMCwyMSwyNiwuMTQpO2Rpc3BsYXk6bm9uZX0ua3RoLXNyLm9ue2Rpc3BsYXk6YmxvY2t9Lmt0aC1zci1oe3BhZGRpbmc6MTBweCAxNHB4O2ZvbnQ6NzAwIDEwLjVweC8xIEludGVyLHN5c3RlbS11aSxzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOi4xNGVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjojOEE4ODdGO2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFM0RGRDY7YmFja2dyb3VuZDojRkFGOEY0fS5rdGgtc3IgYXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTFweCAxNHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFRkVERTg7Zm9udC1zaXplOjEzLjVweDtsaW5lLWhlaWdodDoxLjU7Y29sb3I6IzE0MTUxQSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50fS5rdGgtc3IgYTpob3ZlcntiYWNrZ3JvdW5kOiNGQUY4RjR9Lmt0aC1zciBhIGJ7Y29sb3I6IzE2MzA1Q30ua3RoLXNyLWR7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjVweDtmb250OjUwMCAxMS41cHgvMSBJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZjtjb2xvcjojOEE4ODdGfS5rdGgtc3ItZXtwYWRkaW5nOjE2cHggMTRweDtmb250LXNpemU6MTNweDtjb2xvcjojNzc3NTZFfS5zZWFyY2gtZm9ybXtwb3NpdGlvbjpyZWxhdGl2ZX1AbWVkaWEobWF4LXdpZHRoOjYwMHB4KXsua3RoLXNye3dpZHRoOm1pbig5MnZ3LDQyMHB4KX19PC9zdHlsZT5cbjxzY3JpcHQgaWQ9XCJrdGgtc3JjaC1qc1wiPlxuKGZ1bmN0aW9uKCl7XG52YXIgRD1kb2N1bWVudCxJRFg9bnVsbCxidXN5PWZhbHNlO1xuZnVuY3Rpb24gbG9hZCgpe1xuaWYoSURYKXJldHVybiBQcm9taXNlLnJlc29sdmUoSURYKTtcbnRyeXt2YXIgYz1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgna3RoX2lkeDInKSx0PStsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgna3RoX2lkeDJfdCcpfHwwO1xuaWYoYyYmYy5sZW5ndGg+MTAwMCYmRGF0ZS5ub3coKS10PDg2NGU1KXtJRFg9YztyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKElEWCk7fX1jYXRjaChlKXt9XG5pZihidXN5KXJldHVybiBQcm9taXNlLnJlc29sdmUoJycpO2J1c3k9dHJ1ZTtcbnJldHVybiBmZXRjaCgnL2t0aC1pbmRleC8nLHtjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nfSkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5vaz9yLnRleHQoKTonJzt9KS50aGVuKGZ1bmN0aW9uKGgpe1xuYnVzeT1mYWxzZTtpZighaClyZXR1cm4gJyc7XG52YXIgZD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGgsJ3RleHQvaHRtbCcpO3ZhciBlbD1kLmdldEVsZW1lbnRCeUlkKCdrdGhpZHgtZGF0YScpO1xuaWYoIWVsKXJldHVybiAnJztJRFg9KGVsLnRleHRDb250ZW50fHwnJykudHJpbSgpO1xudHJ5e2xvY2FsU3RvcmFnZS5zZXRJdGVtKCdrdGhfaWR4MicsSURYKTtsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgna3RoX2lkeDJfdCcsRGF0ZS5ub3coKSk7fWNhdGNoKGUpe31cbnJldHVybiBJRFg7fSkuY2F0Y2goZnVuY3Rpb24oKXtidXN5PWZhbHNlO3JldHVybiAnJzt9KTtcbn1cbmZ1bmN0aW9uIGxhbmcoKXt0cnl7dmFyIHY9bG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2t0aF9sYW5nJyk7aWYodj09PSdlbid8fHY9PT0na28nKXJldHVybiB2O31jYXRjaChlKXt9XG5yZXR1cm4gL15lbi9pLnRlc3QobmF2aWdhdG9yLmxhbmd1YWdlfHwnJyk/J2VuJzona28nO31cbmZ1bmN0aW9uIGVzYyhzKXtyZXR1cm4gcy5yZXBsYWNlKC9bJjw+XS9nLGZ1bmN0aW9uKGMpe3JldHVybiB7JyYnOicmYW1wOycsJzwnOicmbHQ7JywnPic6JyZndDsnfVtjXTt9KTt9XG5mdW5jdGlvbiBydW4ocSxib3gpe1xucT0ocXx8JycpLnRyaW0oKTtcbmlmKHEubGVuZ3RoPDIpe2JveC5jbGFzc05hbWU9J2t0aC1zcic7Ym94LmlubmVySFRNTD0nJztyZXR1cm47fVxubG9hZCgpLnRoZW4oZnVuY3Rpb24oaWR4KXtcbmlmKCFpZHgpcmV0dXJuO1xudmFyIGVuPWxhbmcoKT09PSdlbicscWw9cS50b0xvd2VyQ2FzZSgpLHJvd3M9aWR4LnNwbGl0KCd+Jyksb3V0PVtdLGk7XG5mb3IoaT0wO2k8cm93cy5sZW5ndGgmJm91dC5sZW5ndGg8NDA7aSsrKXtcbnZhciBwcD1yb3dzW2ldLnNwbGl0KCd8Jyk7aWYocHAubGVuZ3RoPDMpY29udGludWU7XG52YXIgdGk9cHBbMl07XG52YXIgaXNLbz0vW+qwgC3tnqNdLy50ZXN0KHRpKTtcbmlmKGlzS289PT1lbiljb250aW51ZTtcbmlmKHRpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxbCk8MCljb250aW51ZTtcbm91dC5wdXNoKFtwcFswXSx0aSxwcFsxXV0pO1xufVxudmFyIGg9JzxkaXYgY2xhc3M9XCJrdGgtc3ItaFwiPicrKGVuPygnUmVzdWx0cyDCtyAnK291dC5sZW5ndGgpOign6rKA7IOJIOqysOqzvCAnK291dC5sZW5ndGgrJ+qxtCcpKSsnPC9kaXY+JztcbmlmKCFvdXQubGVuZ3RoKWgrPSc8ZGl2IGNsYXNzPVwia3RoLXNyLWVcIj4nKyhlbj8nTm8gbWF0Y2hpbmcgYXJ0aWNsZXMuJzon7J287LmY7ZWY64qUIOq4sOyCrOqwgCDsl4bsirXri4jri6QuJykrJzwvZGl2Pic7XG5lbHNlIG91dC5zbGljZSgwLDI1KS5mb3JFYWNoKGZ1bmN0aW9uKG8pe1xudmFyIHQ9ZXNjKG9bMV0pLHJlPW5ldyBSZWdFeHAoJygnK3EucmVwbGFjZSgvWy4qKz9eJHt9KCl8W1xcXVxcXFxdL2csJ1xcXFwkJicpKycpJywnaWcnKTtcbmgrPSc8YSBocmVmPVwiLycrb1swXSsnL1wiPicrdC5yZXBsYWNlKHJlLCc8Yj4kMTwvYj4nKSsnPHNwYW4gY2xhc3M9XCJrdGgtc3ItZFwiPicrKG9bMl18fCcnKSsnPC9zcGFuPjwvYT4nO30pO1xuYm94LmlubmVySFRNTD1oO2JveC5jbGFzc05hbWU9J2t0aC1zciBvbic7XG59KTtcbn1cbmZ1bmN0aW9uIGdvKCl7XG52YXIgaW5wPUQuZ2V0RWxlbWVudEJ5SWQoJ3NpdGUtc2VhcmNoLWlucHV0Jyk7XG5pZighaW5wfHxpbnAuZ2V0QXR0cmlidXRlKCdkYXRhLWt0aCcpKXJldHVybjtcbnZhciBmb3JtPWlucC5jbG9zZXN0KCdmb3JtJyl8fGlucC5wYXJlbnRFbGVtZW50O1xudmFyIGJveD1ELmNyZWF0ZUVsZW1lbnQoJ2RpdicpO2JveC5jbGFzc05hbWU9J2t0aC1zcic7XG5mb3JtLmFwcGVuZENoaWxkKGJveCk7XG52YXIgb2xkPUQucXVlcnlTZWxlY3RvcignLnNlYXJjaC1yZXN1bHRzJyk7aWYob2xkKW9sZC5zdHlsZS5kaXNwbGF5PSdub25lJztcbnZhciB0bT1udWxsO1xuaW5wLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0bSk7dmFyIHY9aW5wLnZhbHVlO3RtPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtydW4odixib3gpO30sMjIwKTt9KTtcbmlucC5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsZnVuY3Rpb24oKXtpZihpbnAudmFsdWUudHJpbSgpLmxlbmd0aD4xKXJ1bihpbnAudmFsdWUsYm94KTt9KTtcbkQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKGUpe2lmKCFmb3JtLmNvbnRhaW5zKGUudGFyZ2V0KSlib3guY2xhc3NOYW1lPSdrdGgtc3InO30pO1xuaWYoZm9ybS50YWdOYW1lPT09J0ZPUk0nKWZvcm0uYWRkRXZlbnRMaXN0ZW5lcignc3VibWl0JyxmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7cnVuKGlucC52YWx1ZSxib3gpO30pO1xuaW5wLnNldEF0dHJpYnV0ZSgnZGF0YS1rdGgnLCcxJyk7XG59XG5pZihELnJlYWR5U3RhdGU9PT0nbG9hZGluZycpRC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxnbyk7ZWxzZSBnbygpO1xuc2V0VGltZW91dChnbywxNTAwKTtzZXRUaW1lb3V0KGdvLDQwMDApO1xufSkoKTtcbjwvc2NyaXB0PlxuPHN0eWxlIGlkPVwia3RoLXNvY1wiPi5rdGgtc29je2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7bWFyZ2luLXRvcDoxNXB4fS5rdGgtc29jIGF7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDozNHB4O2hlaWdodDozNHB4O2JvcmRlcjoxcHggc29saWQgI0Q5RDRDODtib3JkZXItcmFkaXVzOjUwJTtjb2xvcjojM0EzQjQwIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSFpbXBvcnRhbnQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMsYm9yZGVyLWNvbG9yIC4xNXMsY29sb3IgLjE1c30ua3RoLXNvYyBhOmhvdmVye2JhY2tncm91bmQ6IzE2MzA1Qztib3JkZXItY29sb3I6IzE2MzA1Qztjb2xvcjojZmZmIWltcG9ydGFudH0ua3RoLXNvYyBzdmd7d2lkdGg6MTdweDtoZWlnaHQ6MTdweDtmaWxsOmN1cnJlbnRDb2xvcjtkaXNwbGF5OmJsb2NrfTwvc3R5bGU+PHNjcmlwdCBpZD1cImt0aC1zb2MtanNcIj4oZnVuY3Rpb24oKXt2YXIgRD1kb2N1bWVudDt2YXIgRkI9XCJNMTMuNSAyMXYtOGgyLjdsLjQtMy4xaC0zLjFWNy45YzAtLjkuMy0xLjUgMS42LTEuNWgxLjdWMy42Yy0uMyAwLTEuMy0uMS0yLjUtLjEtMi41IDAtNC4yIDEuNS00LjIgNC4zdjIuMUg3LjRWMTNIMTB2OGgzLjV6XCI7dmFyIExJPVwiTTYuOSA1LjVhMi4wNSAyLjA1IDAgMSAxLTQuMSAwIDIuMDUgMi4wNSAwIDAgMSA0LjEgMHpNNi45IDguNUgyLjlWMjFoNFY4LjV6bTYuNCAwSDkuM1YyMWgzLjl2LTYuNmMwLTMuNiA0LjgtMy45IDQuOCAwVjIxSDIydi03LjljMC02LjItNy02LTguNy0yLjlWOC41elwiO2Z1bmN0aW9uIGljKGQpe3JldHVybiBcIjxzdmcgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIiBhcmlhLWhpZGRlbj1cXFwidHJ1ZVxcXCI+PHBhdGggZD1cXFwiXCIrZCtcIlxcXCIvPjxcXC9zdmc+XCI7fWZ1bmN0aW9uIGdvKCl7dmFyIGg9RC5xdWVyeVNlbGVjdG9yKFwiLmt0aC1mb290MlwiKTtpZighaHx8aC5xdWVyeVNlbGVjdG9yKFwiLmt0aC1zb2NcIikpcmV0dXJuO3ZhciB3PUQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt3LmNsYXNzTmFtZT1cImt0aC1zb2NcIjt2YXIgYT1ELmNyZWF0ZUVsZW1lbnQoXCJhXCIpO2EuaHJlZj1cImh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9qdW5nLmhhbi4xMzA0NTNcIjthLnRhcmdldD1cIl9ibGFua1wiO2EucmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiO2Euc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwiRmFjZWJvb2tcIik7YS50aXRsZT1cIkZhY2Vib29rXCI7YS5pbm5lckhUTUw9aWMoRkIpO3ZhciBiPUQuY3JlYXRlRWxlbWVudChcImFcIik7Yi5ocmVmPVwiaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2p1bmctaGFuLTQyODYyMDE5My9cIjtiLnRhcmdldD1cIl9ibGFua1wiO2IucmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiO2Iuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwiTGlua2VkSW5cIik7Yi50aXRsZT1cIkxpbmtlZEluXCI7Yi5pbm5lckhUTUw9aWMoTEkpO3cuYXBwZW5kQ2hpbGQoYSk7dy5hcHBlbmRDaGlsZChiKTtoLmFwcGVuZENoaWxkKHcpO31pZihELnJlYWR5U3RhdGU9PT1cImxvYWRpbmdcIilELmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGdvLDYwMCk7fSk7ZWxzZSBzZXRUaW1lb3V0KGdvLDYwMCk7c2V0VGltZW91dChnbywyMDAwKTtzZXRUaW1lb3V0KGdvLDQwMDApO30pKCk7PC9zY3JpcHQ+IiwiZm9vdCI6IjwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG7ilrzilrzilrwgIOycoO2KnOu4jCDsnpDrj5kg6rCx7IugIOKAlCDslYTrnpgg65Sw7Ji07ZGcIOuRkCDqsJwg7IKs7J207JeQIEFQSSDtgqTrpbwg67aZ7Jes64Sj7Jy87IS47JqUICDilrzilrzilrwgIC0tPlxuPHNjcmlwdD53aW5kb3cuS1RIX1lUX0tFWSA9ICdBSXphU3lCTVlHa0YzWFBrbzJYd3NSX0pCcWhPeTNUMUdKcmZkdm8nOzwvc2NyaXB0PlxuPCEtLSAg4pay4pay4payICDsl6zquLDquYzsp4Ag4pay4pay4payICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT5cbjxzY3JpcHQ+XG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLGZ1bmN0aW9uKCl7XG4vLyBhdXRob3IgYXZhdGFyXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLm55dC1hdXRob3ItYXZhdGFyXCIpLmZvckVhY2goZnVuY3Rpb24oaW1nKXtcbltcIndpZHRoXCIsXCJoZWlnaHRcIixcIm1heC13aWR0aFwiLFwibWF4LWhlaWdodFwiLFwibWluLXdpZHRoXCIsXCJtaW4taGVpZ2h0XCJdLmZvckVhY2goZnVuY3Rpb24ocCl7aW1nLnN0eWxlLnNldFByb3BlcnR5KHAsXCI1MnB4XCIsXCJpbXBvcnRhbnRcIik7fSk7XG5pbWcuc3R5bGUuc2V0UHJvcGVydHkoXCJib3JkZXItcmFkaXVzXCIsXCI1MCVcIixcImltcG9ydGFudFwiKTtcbmltZy5zdHlsZS5zZXRQcm9wZXJ0eShcIm9iamVjdC1maXRcIixcImNvdmVyXCIsXCJpbXBvcnRhbnRcIik7XG5pbWcuc3R5bGUuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJpbmxpbmUtYmxvY2tcIixcImltcG9ydGFudFwiKTtcbn0pO1xuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5ueXQtYXV0aG9yLWNhcmRcIikuZm9yRWFjaChmdW5jdGlvbihjKXtcbmMuc3R5bGUuc2V0UHJvcGVydHkoXCJkaXNwbGF5XCIsXCJmbGV4XCIsXCJpbXBvcnRhbnRcIik7XG5jLnN0eWxlLnNldFByb3BlcnR5KFwiYWxpZ24taXRlbXNcIixcImNlbnRlclwiLFwiaW1wb3J0YW50XCIpO1xuYy5zdHlsZS5zZXRQcm9wZXJ0eShcImdhcFwiLFwiMTRweFwiLFwiaW1wb3J0YW50XCIpO1xufSk7XG4vLyBZb3VUdWJlIGVtYmVkXG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmtnLWVtYmVkLWNhcmRcIikuZm9yRWFjaChmdW5jdGlvbihjYXJkKXtcbmNhcmQuc3R5bGUuY3NzVGV4dD1cInBvc2l0aW9uOnJlbGF0aXZlIWltcG9ydGFudDtwYWRkaW5nLWJvdHRvbTo1Ni4yNSUhaW1wb3J0YW50O2hlaWdodDowIWltcG9ydGFudDtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50O21hcmdpbjoxLjVlbSAwIWltcG9ydGFudDtcIjtcbnZhciBpZnJhbWU9Y2FyZC5xdWVyeVNlbGVjdG9yKFwiaWZyYW1lXCIpO1xuaWYoaWZyYW1lKXtpZnJhbWUuc3R5bGUuY3NzVGV4dD1cInBvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDt0b3A6MCFpbXBvcnRhbnQ7bGVmdDowIWltcG9ydGFudDt3aWR0aDoxMDAlIWltcG9ydGFudDtoZWlnaHQ6MTAwJSFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O1wiO2lmcmFtZS5yZW1vdmVBdHRyaWJ1dGUoXCJ3aWR0aFwiKTtpZnJhbWUucmVtb3ZlQXR0cmlidXRlKFwiaGVpZ2h0XCIpO31cbn0pO1xuLy8gU2hvcCBjYXJkIGxheW91dCBmaXhcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYmx1ZWRvdC1wcm9kdWN0LWNhcmRcIikuZm9yRWFjaChmdW5jdGlvbihjYXJkKXtcbmNhcmQuc3R5bGUuY3NzVGV4dCArPSBcIjtvdmVyZmxvdzpoaWRkZW4haW1wb3J0YW50O2hlaWdodDphdXRvIWltcG9ydGFudDtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbiFpbXBvcnRhbnQ7XCI7XG52YXIgY29udGVudCA9IGNhcmQucXVlcnlTZWxlY3RvcihcIi5ibHVlZG90LXByb2R1Y3QtY2FyZC1jb250ZW50XCIpO1xuaWYoY29udGVudCkgY29udGVudC5zdHlsZS5jc3NUZXh0ICs9IFwiO2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7ZmxleC1kaXJlY3Rpb246Y29sdW1uIWltcG9ydGFudDtmbGV4OjEhaW1wb3J0YW50O2hlaWdodDoxMDAlIWltcG9ydGFudDtcIjtcbnZhciBpbmZvID0gY2FyZC5xdWVyeVNlbGVjdG9yKFwiLmluZm9cIik7XG5pZihpbmZvKSBpbmZvLnN0eWxlLmNzc1RleHQgKz0gXCI7ZGlzcGxheTpmbGV4IWltcG9ydGFudDtmbGV4LWRpcmVjdGlvbjpjb2x1bW4haW1wb3J0YW50O2ZsZXg6MSFpbXBvcnRhbnQ7XCI7XG52YXIgcHJpY2VzID0gY2FyZC5xdWVyeVNlbGVjdG9yKFwiLnByaWNlc1wiKTtcbmlmKHByaWNlcykgcHJpY2VzLnN0eWxlLmNzc1RleHQgKz0gXCI7cG9zaXRpb246c3RhdGljIWltcG9ydGFudDttYXJnaW4tdG9wOmF1dG8haW1wb3J0YW50O3BhZGRpbmctdG9wOjZweCFpbXBvcnRhbnQ7XCI7XG52YXIgZXhjZXJwdCA9IGNhcmQucXVlcnlTZWxlY3RvcihcIi5leGNlcnB0XCIpO1xuaWYoZXhjZXJwdCkgZXhjZXJwdC5zdHlsZS5zZXRQcm9wZXJ0eShcImRpc3BsYXlcIixcIm5vbmVcIixcImltcG9ydGFudFwiKTtcbn0pO1xuLy8gcHJpY2UgbGFiZWwg6rCA7Iuc7ISxIOqwnOyEoFxuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5ibHVlZG90LXByb2R1Y3QtY2FyZCAucHJpY2UtbGFiZWxcIikuZm9yRWFjaChmdW5jdGlvbihlbCl7IGVsLnN0eWxlLnNldFByb3BlcnR5KFwib3BhY2l0eVwiLFwiMVwiLFwiaW1wb3J0YW50XCIpOyBlbC5zdHlsZS5zZXRQcm9wZXJ0eShcImNvbG9yXCIsXCJyZ2JhKDI1NSwyNTUsMjU1LDAuOSlcIixcImltcG9ydGFudFwiKTsgZWwuc3R5bGUuc2V0UHJvcGVydHkoXCJmb250LXNpemVcIixcIjExcHhcIixcImltcG9ydGFudFwiKTsgfSk7XG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiLmJsdWVkb3QtcHJvZHVjdC1jYXJkIC5wcmljZS10ZXh0XCIpLmZvckVhY2goZnVuY3Rpb24oZWwpeyBlbC5zdHlsZS5zZXRQcm9wZXJ0eShcImZvbnQtc2l6ZVwiLFwiMTNweFwiLFwiaW1wb3J0YW50XCIpOyBlbC5zdHlsZS5zZXRQcm9wZXJ0eShcImZvbnQtd2VpZ2h0XCIsXCI3MDBcIixcImltcG9ydGFudFwiKTsgZWwuc3R5bGUuc2V0UHJvcGVydHkoXCJjb2xvclwiLFwiI2YwYzA0MFwiLFwiaW1wb3J0YW50XCIpOyB9KTtcbn0pO1xuPC9zY3JpcHQ+XG48c2NyaXB0PlxuLy8g4pSA4pSAIEVuZ2xpc2ggRWRpdGlvbiDquLDsgqwg66Gc642UIOKUgOKUgFxuKGZ1bmN0aW9uKCl7XG52YXIgUEFHRSA9IDEsIFBFUiA9IDEyLCBUT1RBTCA9IDA7XG52YXIgS0VZID0gJzc2ZGQ5MTAwODBmYmVjOGEyMzFmY2E0ZDM5JztcbnZhciBBUEkgPSAnL2JsdWVkb3QvYXBpL3YyL2NvbnRlbnQvcG9zdHMvJztcbmZ1bmN0aW9uIHJlbmRlckNhcmQocCkge1xudmFyIGltZyA9IHAuZmVhdHVyZV9pbWFnZSA/ICc8ZGl2IGNsYXNzPVwiZW4tY2FyZC1pbWdcIj48aW1nIHNyYz1cIicrcC5mZWF0dXJlX2ltYWdlKydcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiPjwvZGl2PicgOiAnJztcbnZhciBkYXRlID0gcC5wdWJsaXNoZWRfYXQgPyBuZXcgRGF0ZShwLnB1Ymxpc2hlZF9hdCkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1VUycse21vbnRoOidzaG9ydCcsZGF5OidudW1lcmljJyx5ZWFyOidudW1lcmljJ30pIDogJyc7XG5yZXR1cm4gJzxhIGhyZWY9XCIvJytwLnNsdWcrJy9cIiBjbGFzcz1cImVuLWNhcmRcIj4nXG4rIGltZ1xuKyAnPGRpdiBjbGFzcz1cImVuLWNhcmQtYm9keVwiPidcbisgJzxkaXYgY2xhc3M9XCJlbi1jYXJkLXRpdGxlXCI+JytwLnRpdGxlKyc8L2Rpdj4nXG4rICc8ZGl2IGNsYXNzPVwiZW4tY2FyZC1kYXRlXCI+JytkYXRlKyc8L2Rpdj4nXG4rICc8L2Rpdj48L2E+Jztcbn1cbmZ1bmN0aW9uIGZldGNoUGFnZShwYWdlLCBhcHBlbmQpIHtcbnZhciB1cmwgPSBBUEkrJz9rZXk9JytLRVkrJyZsaW1pdD0nK1BFUisnJnBhZ2U9JytwYWdlKycmZmlsdGVyPXRhZzplbmdsaXNoJmZpZWxkcz10aXRsZSxzbHVnLGZlYXR1cmVfaW1hZ2UscHVibGlzaGVkX2F0Jm9yZGVyPXB1Ymxpc2hlZF9hdCtkZXNjJztcbmZldGNoKHVybCkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5qc29uKCk7fSkudGhlbihmdW5jdGlvbihkKXtcbnZhciBwb3N0cyA9IGQucG9zdHMgfHwgW107XG5UT1RBTCA9IGQubWV0YSAmJiBkLm1ldGEucGFnaW5hdGlvbiA/IGQubWV0YS5wYWdpbmF0aW9uLnRvdGFsIDogVE9UQUw7XG52YXIgZ3JpZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbi1ncmlkJyk7XG52YXIgY250ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VuLWNvdW50Jyk7XG52YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VuLWxvYWQtbW9yZScpO1xuaWYoIWdyaWQpIHJldHVybjtcbmlmKCFhcHBlbmQpIGdyaWQuaW5uZXJIVE1MID0gJyc7XG5pZihwb3N0cy5sZW5ndGggPT09IDAgJiYgIWFwcGVuZCkgeyBncmlkLmlubmVySFRNTCA9ICc8cCBjbGFzcz1cImVuLWxvYWRpbmdcIj5ObyBhcnRpY2xlcyBmb3VuZC48L3A+JzsgcmV0dXJuOyB9XG5wb3N0cy5mb3JFYWNoKGZ1bmN0aW9uKHApeyBncmlkLmlubmVySFRNTCArPSByZW5kZXJDYXJkKHApOyB9KTtcbmlmKGNudCkgY250LnRleHRDb250ZW50ID0gVE9UQUwgKyAnIGFydGljbGVzJztcbmlmKGJ0bikgYnRuLnN0eWxlLmRpc3BsYXkgPSAoUEFHRSAqIFBFUiA8IFRPVEFMKSA/ICdibG9jaycgOiAnbm9uZSc7XG59KS5jYXRjaChmdW5jdGlvbihlKXtcbnZhciBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VuLWdyaWQnKTtcbmlmKGdyaWQpIGdyaWQuaW5uZXJIVE1MID0gJzxwIGNsYXNzPVwiZW4tbG9hZGluZ1wiPkVycm9yIGxvYWRpbmcgYXJ0aWNsZXMuPC9wPic7XG59KTtcbn1cbndpbmRvdy5lbkxvYWRNb3JlID0gZnVuY3Rpb24oKSB7IFBBR0UrKzsgZmV0Y2hQYWdlKFBBR0UsIHRydWUpOyB9O1xuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKCl7XG5pZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZW4tZ3JpZCcpKSBmZXRjaFBhZ2UoMSwgZmFsc2UpO1xufSk7XG5pZihkb2N1bWVudC5yZWFkeVN0YXRlICE9PSAnbG9hZGluZycpIHtcbmlmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbi1ncmlkJykpIGZldGNoUGFnZSgxLCBmYWxzZSk7XG59XG59KSgpO1xuPC9zY3JpcHQ+XG48c2NyaXB0IGlkPVwibW9iLXNlYXJjaC1qc1wiPlxuKGZ1bmN0aW9uKCl7XG52YXIgQVBJX0tFWSA9ICc3NmRkOTEwMDgwZmJlYzhhMjMxZmNhNGQzOSc7XG52YXIgdGltZXI7XG5mdW5jdGlvbiBkb1NlYXJjaChxKSB7XG52YXIgcmVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vYi1zZWFyY2gtcmVzJyk7XG5pZiAoIXJlcykgcmV0dXJuO1xuaWYgKCFxKSB7IHJlcy5pbm5lckhUTUwgPSAnJzsgcmV0dXJuOyB9XG52YXIgcWwgPSBxLnRvTG93ZXJDYXNlKCk7XG5mdW5jdGlvbiByZW5kZXJSZXN1bHRzKHBvc3RzKSB7XG52YXIgaGl0cyA9IHBvc3RzLmZpbHRlcihmdW5jdGlvbihwKXsgcmV0dXJuIChwLnRpdGxlfHwnJykudG9Mb3dlckNhc2UoKS5pbmRleE9mKHFsKT49MCB8fCAocC5jdXN0b21fZXhjZXJwdHx8JycpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihxbCk+PTA7IH0pLnNsaWNlKDAsOCk7XG5pZighaGl0cy5sZW5ndGgpeyByZXMuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPVwibW9iLXNyLWVtcHR5XCI+6rKw6rO8IOyXhuydjDwvZGl2Pic7IHJldHVybjsgfVxucmVzLmlubmVySFRNTCA9IGhpdHMubWFwKGZ1bmN0aW9uKHApe1xudmFyIGltZyA9IHAuZmVhdHVyZV9pbWFnZSA/ICc8ZGl2IGNsYXNzPVwibW9iLXNyLWltZ1wiPjxpbWcgc3JjPVwiJytwLmZlYXR1cmVfaW1hZ2UrJ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCI+PC9kaXY+JyA6ICcnO1xudmFyIGRhdGUgPSBwLnB1Ymxpc2hlZF9hdCA/IG5ldyBEYXRlKHAucHVibGlzaGVkX2F0KS50b0xvY2FsZURhdGVTdHJpbmcoJ2tvLUtSJyx7eWVhcjonbnVtZXJpYycsbW9udGg6J2xvbmcnLGRheTonbnVtZXJpYyd9KSA6ICcnO1xucmV0dXJuICc8YSBocmVmPVwiLycrcC5zbHVnKycvXCIgY2xhc3M9XCJtb2Itc3ItaXRlbVwiPicraW1nKyc8ZGl2PjxkaXYgY2xhc3M9XCJtb2Itc3ItdGl0bGVcIj4nK3AudGl0bGUrJzwvZGl2PjxkaXYgY2xhc3M9XCJtb2Itc3ItZGF0ZVwiPicrZGF0ZSsnPC9kaXY+PC9kaXY+PC9hPic7XG59KS5qb2luKCcnKTtcbn1cbmlmKHdpbmRvdy5fX2FsbFBvc3RzKSB7IHJlbmRlclJlc3VsdHMod2luZG93Ll9fYWxsUG9zdHMpOyByZXR1cm47IH1cbnJlcy5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz1cIm1vYi1zci1lbXB0eVwiPuqygOyDiSDspJEuLi48L2Rpdj4nO1xuZmV0Y2goJy9ibHVlZG90L2FwaS92Mi9jb250ZW50L3Bvc3RzLz9rZXk9JytBUElfS0VZKycmZmlsdGVyPXZpc2liaWxpdHk6cHVibGljJmZpZWxkcz10aXRsZSxzbHVnLGZlYXR1cmVfaW1hZ2UscHVibGlzaGVkX2F0LGN1c3RvbV9leGNlcnB0JmxpbWl0PWFsbCcpXG4udGhlbihmdW5jdGlvbihyKXsgcmV0dXJuIHIuanNvbigpOyB9KVxuLnRoZW4oZnVuY3Rpb24oZGF0YSl7IHdpbmRvdy5fX2FsbFBvc3RzID0gZGF0YS5wb3N0c3x8W107IHJlbmRlclJlc3VsdHMod2luZG93Ll9fYWxsUG9zdHMpOyB9KVxuLmNhdGNoKGZ1bmN0aW9uKCl7IHJlcy5pbm5lckhUTUw9JzxkaXYgY2xhc3M9XCJtb2Itc3ItZW1wdHlcIj7smKTrpZjqsIAg67Cc7IOd7ZaI7Ja07JqUPC9kaXY+JzsgfSk7XG59XG5mdW5jdGlvbiBvcGVuUGFuZWwoKSB7XG52YXIgcGFuZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9iLXNlYXJjaC1wYW5lbCcpO1xudmFyIG92ZXJsYXkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9iLXNlYXJjaC1vdmVybGF5Jyk7XG52YXIgaW5wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vYi1zZWFyY2gtaW5wJyk7XG5pZiAocGFuZWwpIHsgcGFuZWwuY2xhc3NMaXN0LmFkZCgnb3BlbicpOyB9XG5pZiAob3ZlcmxheSkgeyBvdmVybGF5LmNsYXNzTGlzdC5hZGQoJ29wZW4nKTsgfVxuaWYgKGlucCkgeyBpbnAuZm9jdXMoKTsgfVxuZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nO1xufVxuZnVuY3Rpb24gY2xvc2VQYW5lbCgpIHtcbnZhciBwYW5lbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2Itc2VhcmNoLXBhbmVsJyk7XG52YXIgb3ZlcmxheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2Itc2VhcmNoLW92ZXJsYXknKTtcbnZhciBpbnAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9iLXNlYXJjaC1pbnAnKTtcbnZhciByZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9iLXNlYXJjaC1yZXMnKTtcbmlmIChwYW5lbCkgeyBwYW5lbC5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7IH1cbmlmIChvdmVybGF5KSB7IG92ZXJsYXkuY2xhc3NMaXN0LnJlbW92ZSgnb3BlbicpOyB9XG5pZiAoaW5wKSB7IGlucC52YWx1ZSA9ICcnOyB9XG5pZiAocmVzKSB7IHJlcy5pbm5lckhUTUwgPSAnJzsgfVxuZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICcnO1xufVxuZnVuY3Rpb24gaW5pdE1vYlNlYXJjaCgpIHtcbnZhciBuYXZCYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaGVhZGVyLW5hdi1iYXInKTtcbmlmICghbmF2QmFyIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2Itc2VhcmNoLWJ0bicpKSByZXR1cm47XG52YXIgaFNlYXJjaCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItc2VhcmNoLWJveCcpO1xuaWYgKGhTZWFyY2ggJiYgZ2V0Q29tcHV0ZWRTdHlsZShoU2VhcmNoKS5kaXNwbGF5ICE9PSAnbm9uZScpIHJldHVybjtcbi8vIOqygOyDiSDslYTsnbTsvZgg67KE7Yq8XG52YXIgYnRuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG5idG4uaWQgPSAnbW9iLXNlYXJjaC1idG4nO1xuYnRuLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICfqsoDsg4knKTtcbmJ0bi5pbm5lckhUTUwgPSAnPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyLjJcIj48Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjcuNVwiLz48bGluZSB4MT1cIjIwXCIgeTE9XCIyMFwiIHgyPVwiMTUuOFwiIHkyPVwiMTUuOFwiLz48L3N2Zz4nO1xubmF2QmFyLmFwcGVuZENoaWxkKGJ0bik7XG4vLyDsmKTrsoTroIjsnbRcbnZhciBvdmVybGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5vdmVybGF5LmlkID0gJ21vYi1zZWFyY2gtb3ZlcmxheSc7XG5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG92ZXJsYXkpO1xuLy8g7Yyo64SQIChpbm5lckhUTUzroZwg6rWs7KGwIOyDneyEsSlcbnZhciBwYW5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xucGFuZWwuaWQgPSAnbW9iLXNlYXJjaC1wYW5lbCc7XG5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBhbmVsKTtcbnBhbmVsLmlubmVySFRNTCA9ICc8ZGl2IGlkPVwibW9iLXNlYXJjaC1oZWFkZXJcIj48aW5wdXQgaWQ9XCJtb2Itc2VhcmNoLWlucFwiIHR5cGU9XCJzZWFyY2hcIiBwbGFjZWhvbGRlcj1cIuqygOyDieyWtCDsnoXroKUuLi5cIiBhdXRvY29tcGxldGU9XCJvZmZcIj48YnV0dG9uIGlkPVwibW9iLXNlYXJjaC1jbG9zZVwiIGFyaWEtbGFiZWw9XCLri6vquLBcIj4mI3gyNzE1OzwvYnV0dG9uPjwvZGl2PjxkaXYgaWQ9XCJtb2Itc2VhcmNoLXJlc1wiPjwvZGl2Pic7XG4vLyDsnbTrsqTtirgg4oCUIElE66GcIOyngeygkSDssL7quLBcbmJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgb3BlblBhbmVsKCk7IH0pO1xuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vYi1zZWFyY2gtY2xvc2UnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUGFuZWwpO1xub3ZlcmxheS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNsb3NlUGFuZWwpO1xuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vYi1zZWFyY2gtaW5wJykuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBmdW5jdGlvbihlKSB7XG5jbGVhclRpbWVvdXQodGltZXIpO1xudmFyIHEgPSBlLnRhcmdldC52YWx1ZS50cmltKCk7XG50aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IGRvU2VhcmNoKHEpOyB9LCAzNTApO1xufSk7XG59XG4vLyDtl6TrjZQg6rKA7IOJ7LC97J20IOugjOuNlOungeuQnCDtm4Qg7Iuk7ZaJXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGluaXRNb2JTZWFyY2gpO1xufSkoKTtcbjwvc2NyaXB0PlxuPHNjcmlwdCBpZD1cInNob3AtcHJpY2UtbGFiZWwtZml4XCI+XG4oZnVuY3Rpb24oKXtcbmZ1bmN0aW9uIGZpeFByaWNlTGFiZWxzKCl7XG5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucHJpY2UtbGFiZWwnKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKXtcbnZhciBzID0gZWwuZ2V0QXR0cmlidXRlKCdzdHlsZScpIHx8ICcnO1xuaWYocy5pbmNsdWRlcygnMjU1LCAyNTUsIDI1NScpKSB7XG5lbC5zdHlsZS5zZXRQcm9wZXJ0eSgnY29sb3InLCcjM2E0YTcwJywnaW1wb3J0YW50Jyk7XG59XG59KTtcbn1cbi8vIOymieyLnCDsi6TtlolcbmlmKGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdsb2FkaW5nJykgZml4UHJpY2VMYWJlbHMoKTtcbmVsc2UgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZpeFByaWNlTGFiZWxzKTtcbi8vIOuPmeyggSDrs4Dqsr0g6rCQ7IucXG52YXIgb2JzID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKXtcbm11dGF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG0pe1xuaWYobS50eXBlPT09J2F0dHJpYnV0ZXMnICYmIG0uYXR0cmlidXRlTmFtZT09PSdzdHlsZScpIGZpeFByaWNlTGFiZWxzKCk7XG5pZihtLnR5cGU9PT0nY2hpbGRMaXN0JykgZml4UHJpY2VMYWJlbHMoKTtcbn0pO1xufSk7XG5vYnMub2JzZXJ2ZShkb2N1bWVudC5ib2R5LCB7c3VidHJlZTp0cnVlLCBjaGlsZExpc3Q6dHJ1ZSwgYXR0cmlidXRlczp0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6WydzdHlsZSddfSk7XG59KSgpO1xuPC9zY3JpcHQ+PHNjcmlwdCBpZD1cInBvc3Qtc2lkZWJhci1qc1wiPlxuKGZ1bmN0aW9uKCl7XG52YXIgQVBJX0tFWSA9ICc3NmRkOTEwMDgwZmJlYzhhMjMxZmNhNGQzOSc7XG5mdW5jdGlvbiBpc1Bvc3RQYWdlKCl7IHJldHVybiAhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC13cmFwJyk7IH1cbmZ1bmN0aW9uIGdldFRhZ1NsdWcoKXtcbnZhciBhID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm55dC1wb3N0LXRhZ3MgYSxbY2xhc3MqPVwidGFnXCJdIGEnKTtcbmlmKGEpeyB2YXIgbT1hLmhyZWYubWF0Y2goL1xcL3RhZ1xcLyhbXlxcL10rKVxcLy8pOyBpZihtKSByZXR1cm4gbVsxXTsgfVxucmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBnZXRQb3N0U2x1Zygpe1xudmFyIG09bG9jYXRpb24ucGF0aG5hbWUubWF0Y2goL15cXC8oW15cXC9dKylcXC8kLyk7IHJldHVybiBtP21bMV06bnVsbDtcbn1cbmZ1bmN0aW9uIHJlbmRlckl0ZW1zKHBvc3RzKXtcbnJldHVybiBwb3N0cy5tYXAoZnVuY3Rpb24ocCxpKXtcbnZhciBpbWcgPSBwLmZlYXR1cmVfaW1hZ2Vcbj8gJzxkaXYgY2xhc3M9XCJwcy1pdGVtLWltZ1wiPjxpbWcgc3JjPVwiJytwLmZlYXR1cmVfaW1hZ2UrJ1wiIGFsdD1cIlwiIGxvYWRpbmc9XCJsYXp5XCI+PC9kaXY+J1xuOiAnPGRpdiBjbGFzcz1cInBzLW51bVwiPicrKGkrMSkrJzwvZGl2Pic7XG52YXIgZGF0ZSA9IHAucHVibGlzaGVkX2F0ID8gbmV3IERhdGUocC5wdWJsaXNoZWRfYXQpLnRvTG9jYWxlRGF0ZVN0cmluZygna28tS1InLHttb250aDonbG9uZycsZGF5OidudW1lcmljJ30pIDogJyc7XG5yZXR1cm4gJzxhIGhyZWY9XCIvJytwLnNsdWcrJy9cIiBjbGFzcz1cInBzLWl0ZW1cIj4nK2ltZysnPGRpdj48ZGl2IGNsYXNzPVwicHMtaXRlbS10aXRsZVwiPicrcC50aXRsZSsnPC9kaXY+PGRpdiBjbGFzcz1cInBzLWl0ZW0tZGF0ZVwiPicrZGF0ZSsnPC9kaXY+PC9kaXY+PC9hPic7XG59KS5qb2luKCcnKTtcbn1cbmZ1bmN0aW9uIHBvc2l0aW9uU2lkZWJhcihzaWRlYmFyKXtcbmlmKHdpbmRvdy5pbm5lcldpZHRoIDwgMTEwMCkgeyBzaWRlYmFyLnN0eWxlLmNzc1RleHQ9J2Rpc3BsYXk6bm9uZSc7IHJldHVybjsgfVxudmFyIHdyYXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubnl0LXBvc3Qtd3JhcCcpO1xuaWYoIXdyYXApIHJldHVybjtcbnZhciByZWN0ID0gd3JhcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbnZhciBsZWZ0UG9zID0gcmVjdC5yaWdodCArIDE2O1xuaWYobGVmdFBvcyArIDIwMCA+IHdpbmRvdy5pbm5lcldpZHRoIC0gNCkgeyBzaWRlYmFyLnN0eWxlLmNzc1RleHQ9J2Rpc3BsYXk6bm9uZSc7IHJldHVybjsgfVxuc2lkZWJhci5zdHlsZS5jc3NUZXh0ID0gJ2Rpc3BsYXk6YmxvY2s7bGVmdDonK2xlZnRQb3MrJ3B4Jztcbn1cbmZ1bmN0aW9uIGJ1aWxkU2lkZWJhcigpe1xudmFyIHdyYXAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubnl0LXBvc3Qtd3JhcCcpO1xuaWYoIXdyYXAgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bvc3Qtc2lkZWJhcicpKSByZXR1cm47XG52YXIgc2lkZWJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuc2lkZWJhci5pZCA9ICdwb3N0LXNpZGViYXInO1xuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzaWRlYmFyKTtcbnBvc2l0aW9uU2lkZWJhcihzaWRlYmFyKTtcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBmdW5jdGlvbigpeyBwb3NpdGlvblNpZGViYXIoc2lkZWJhcik7IH0pO1xudmFyIGN1cnJlbnRTbHVnID0gZ2V0UG9zdFNsdWcoKTtcbnZhciB0YWdTbHVnID0gZ2V0VGFnU2x1ZygpO1xudmFyIHJlbFVybCA9ICcvYmx1ZWRvdC9hcGkvdjIvY29udGVudC9wb3N0cy8/a2V5PScrQVBJX0tFWSsnJmZpZWxkcz10aXRsZSxzbHVnLGZlYXR1cmVfaW1hZ2UscHVibGlzaGVkX2F0JmxpbWl0PTYmZmlsdGVyPXZpc2liaWxpdHk6cHVibGljJysodGFnU2x1Zz8nJTJCdGFncy5zbHVnOicrdGFnU2x1ZzonJyk7XG52YXIgcmVjZW50VXJsID0gJy9ibHVlZG90L2FwaS92Mi9jb250ZW50L3Bvc3RzLz9rZXk9JytBUElfS0VZKycmZmllbGRzPXRpdGxlLHNsdWcsZmVhdHVyZV9pbWFnZSxwdWJsaXNoZWRfYXQmbGltaXQ9NyZmaWx0ZXI9dmlzaWJpbGl0eTpwdWJsaWMmb3JkZXI9cHVibGlzaGVkX2F0K2Rlc2MnO1xuUHJvbWlzZS5hbGwoW2ZldGNoKHJlbFVybCkudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gci5qc29uKCk7fSksZmV0Y2gocmVjZW50VXJsKS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiByLmpzb24oKTt9KV0pXG4udGhlbihmdW5jdGlvbihkYXRhKXtcbnZhciByZWwgPSAoZGF0YVswXS5wb3N0c3x8W10pLmZpbHRlcihmdW5jdGlvbihwKXtyZXR1cm4gcC5zbHVnIT09Y3VycmVudFNsdWc7fSkuc2xpY2UoMCw0KTtcbnZhciByZWxTbHVncyA9IG5ldyBTZXQocmVsLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gcC5zbHVnO30pKTtcbnZhciByZWNlbnQgPSAoZGF0YVsxXS5wb3N0c3x8W10pLmZpbHRlcihmdW5jdGlvbihwKXtyZXR1cm4gcC5zbHVnIT09Y3VycmVudFNsdWcgJiYgIXJlbFNsdWdzLmhhcyhwLnNsdWcpO30pLnNsaWNlKDAsNSk7XG52YXIgaHRtbCA9ICcnO1xuaWYocmVsLmxlbmd0aCkgaHRtbCArPSAnPGRpdiBjbGFzcz1cInBzLXNlY3Rpb25cIj48ZGl2IGNsYXNzPVwicHMtdGl0bGVcIj7qtIDroKgg6riw7IKsPC9kaXY+JytyZW5kZXJJdGVtcyhyZWwpKyc8L2Rpdj4nO1xuaWYocmVjZW50Lmxlbmd0aCkgaHRtbCArPSAnPGRpdiBjbGFzcz1cInBzLXNlY3Rpb25cIj48ZGl2IGNsYXNzPVwicHMtdGl0bGVcIj5UaGUgTGF0ZXN0IE5ld3M8L2Rpdj4nK3JlbmRlckl0ZW1zKHJlY2VudCkrJzwvZGl2Pic7XG5pZihodG1sKXsgc2lkZWJhci5pbm5lckhUTUw9aHRtbDsgc2lkZWJhci5jbGFzc0xpc3QuYWRkKCdyZWFkeScpOyBwb3NpdGlvblNpZGViYXIoc2lkZWJhcik7IH1cbn0pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7XG59XG5mdW5jdGlvbiBpbml0KCl7XG5pZighaXNQb3N0UGFnZSgpKSByZXR1cm47XG5pZihkb2N1bWVudC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxidWlsZFNpZGViYXIpO1xuZWxzZSBidWlsZFNpZGViYXIoKTtcbn1cbmluaXQoKTtcbn0pKCk7XG48L3NjcmlwdD5cbjxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiBocmVmPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9nbGlnaHRib3gvZGlzdC9jc3MvZ2xpZ2h0Ym94Lm1pbi5jc3NcIj5cbjxzY3JpcHQgc3JjPVwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9nbGlnaHRib3gvZGlzdC9qcy9nbGlnaHRib3gubWluLmpzXCI+PC9zY3JpcHQ+XG48c2NyaXB0IGlkPVwia3RoLWxpZ2h0Ym94XCI+XG4oZnVuY3Rpb24oKXtcbmZ1bmN0aW9uIGluaXRMaWdodGJveCgpe1xuaWYodHlwZW9mIEdMaWdodGJveCA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybjtcbmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5ueXQtcG9zdC1jb250ZW50IC5rZy1pbWFnZSwgLm55dC1wb3N0LWNvbnRlbnQgZmlndXJlIGltZycpLmZvckVhY2goZnVuY3Rpb24oaW1nKXtcbmlmKGltZy5jbG9zZXN0KCdhJykpIHJldHVybjtcbnZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuYS5ocmVmID0gaW1nLnNyYztcbmEuY2xhc3NOYW1lID0gJ2dsaWdodGJveCc7XG5pbWcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSwgaW1nKTtcbmEuYXBwZW5kQ2hpbGQoaW1nKTtcbn0pO1xuR0xpZ2h0Ym94KHsgc2VsZWN0b3I6ICcuZ2xpZ2h0Ym94JyB9KTtcbn1cbmlmKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXRMaWdodGJveCk7XG5lbHNlIGluaXRMaWdodGJveCgpO1xufSkoKTtcbjwvc2NyaXB0PlxuPHN0eWxlIGlkPVwia3RoLXNoYXJlLWJvb2ttYXJrLXN0eWxlXCI+XG4ja3RoLWFjdGlvbi1iYXJ7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttYXJnaW46MjhweCAwIDhweDtwYWRkaW5nOjE0cHggMDtib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1saW5lLCNlNWU3ZWIpO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHZhcigtLWxpbmUsI2U1ZTdlYik7fVxuLmt0aC1hY3Rpb24tYnRue2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo2cHg7cGFkZGluZzo3cHggMTRweDtib3JkZXItcmFkaXVzOjIwcHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1saW5lLCNlNWU3ZWIpO2JhY2tncm91bmQ6dmFyKC0tc3VyZmFjZSwjZmZmKTtjb2xvcjp2YXIoLS10MiwjNDQ0KTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7Y3Vyc29yOnBvaW50ZXI7dGV4dC1kZWNvcmF0aW9uOm5vbmU7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMsYm9yZGVyLWNvbG9yIC4xNXM7fVxuLmt0aC1hY3Rpb24tYnRuOmhvdmVye2JhY2tncm91bmQ6I2YwZjRmZjtib3JkZXItY29sb3I6IzJhNTBhMDtjb2xvcjojMmE1MGEwO31cbi5rdGgtYWN0aW9uLWJ0bi5ib29rbWFya2Vke2JhY2tncm91bmQ6I2ZmZjhlMTtib3JkZXItY29sb3I6I2YwYzA0MDtjb2xvcjojYjg4NjBiO31cbi5rdGgtYWN0aW9uLWJ0biBzdmd7d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtmbGV4LXNocmluazowO31cbiNrdGgtc2hhcmUtZHJvcGRvd257cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2U1ZTdlYjtib3JkZXItcmFkaXVzOjEwcHg7Ym94LXNoYWRvdzowIDRweCAxNnB4IHJnYmEoMCwwLDAsMC4xMik7cGFkZGluZzo2cHggMDttaW4td2lkdGg6MTUwcHg7ei1pbmRleDo5MDAwO2Rpc3BsYXk6bm9uZTt0b3A6MzhweDtsZWZ0OjA7fVxuI2t0aC1zaGFyZS1kcm9wZG93bi5vcGVue2Rpc3BsYXk6YmxvY2s7fVxuLmt0aC1zaGFyZS1pdGVte2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHg7cGFkZGluZzo5cHggMTZweDtmb250LXNpemU6MTNweDtjb2xvcjojMWEyMzQwO2N1cnNvcjpwb2ludGVyO3RleHQtZGVjb3JhdGlvbjpub25lO31cbi5rdGgtc2hhcmUtaXRlbTpob3ZlcntiYWNrZ3JvdW5kOiNmMGY0ZmY7fVxuI2t0aC1ibS10b2FzdHtwb3NpdGlvbjpmaXhlZDtib3R0b206MjhweDtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtiYWNrZ3JvdW5kOiMxYTIzNDA7Y29sb3I6I2ZmZjtwYWRkaW5nOjEwcHggMjJweDtib3JkZXItcmFkaXVzOjI0cHg7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO3otaW5kZXg6OTk5OTk7b3BhY2l0eTowO3BvaW50ZXItZXZlbnRzOm5vbmU7dHJhbnNpdGlvbjpvcGFjaXR5IC4yNXM7fVxuI2t0aC1ibS10b2FzdC5zaG93e29wYWNpdHk6MTt9XG48L3N0eWxlPlxuPHNjcmlwdCBpZD1cImt0aC1ib29rbWFyay1zaGFyZVwiPlxuKGZ1bmN0aW9uKCl7XG52YXIgU1RPUkVfS0VZPSdrdGhfYm9va21hcmtzJztcbmZ1bmN0aW9uIGdldEJvb2ttYXJrcygpe3RyeXtyZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SRV9LRVkpfHwnW10nKTt9Y2F0Y2goZSl7cmV0dXJuIFtdO319XG5mdW5jdGlvbiBzYXZlQm9va21hcmtzKGFycil7bG9jYWxTdG9yYWdlLnNldEl0ZW0oU1RPUkVfS0VZLEpTT04uc3RyaW5naWZ5KGFycikpO31cbmZ1bmN0aW9uIGlzQm9va21hcmtlZChzbHVnKXtyZXR1cm4gZ2V0Qm9va21hcmtzKCkuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYi5zbHVnPT09c2x1Zzt9KTt9XG5mdW5jdGlvbiB0b2dnbGVCb29rbWFyayhzbHVnLHRpdGxlLGltZyl7XG52YXIgYXJyPWdldEJvb2ttYXJrcygpLGlkeD0tMTtcbmFyci5mb3JFYWNoKGZ1bmN0aW9uKGIsaSl7aWYoYi5zbHVnPT09c2x1ZylpZHg9aTt9KTtcbmlmKGlkeD4tMSl7YXJyLnNwbGljZShpZHgsMSk7c2F2ZUJvb2ttYXJrcyhhcnIpO3JldHVybiBmYWxzZTt9XG5lbHNle2Fyci51bnNoaWZ0KHtzbHVnOnNsdWcsdGl0bGU6dGl0bGUsaW1nOmltZyxzYXZlZDpEYXRlLm5vdygpfSk7c2F2ZUJvb2ttYXJrcyhhcnIpO3JldHVybiB0cnVlO31cbn1cbmZ1bmN0aW9uIHNob3dUb2FzdChtc2cpe1xudmFyIHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0aC1ibS10b2FzdCcpO1xuaWYoIXQpcmV0dXJuO1xudC50ZXh0Q29udGVudD1tc2c7dC5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7XG5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5jbGFzc0xpc3QucmVtb3ZlKCdzaG93Jyk7fSwyMDAwKTtcbn1cbmZ1bmN0aW9uIGJ1aWxkQWN0aW9uQmFyKCl7XG5pZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3RoLWFjdGlvbi1iYXInKSlyZXR1cm47XG52YXIgYW5jaG9yPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC1jb250ZW50Jyk7XG5pZighYW5jaG9yKXJldHVybjtcbnZhciBwYXJ0cz1sb2NhdGlvbi5wYXRobmFtZS5zcGxpdCgnLycpLmZpbHRlcihmdW5jdGlvbihzKXtyZXR1cm4gcy5sZW5ndGg+MDt9KTtcbnZhciBzbHVnPXBhcnRzLmxlbmd0aD09PTE/cGFydHNbMF06Jyc7XG5pZighc2x1ZylyZXR1cm47XG52YXIgdGl0bGVFbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoMScpO1xudmFyIHRpdGxlPXRpdGxlRWw/dGl0bGVFbC50ZXh0Q29udGVudC50cmltKCk6ZG9jdW1lbnQudGl0bGU7XG52YXIgaW1nRWw9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm55dC1wb3N0LWNvbnRlbnQgaW1nJyk7XG52YXIgaW1nPWltZ0VsP2ltZ0VsLnNyYzonJztcbnZhciBib29rbWFya2VkPWlzQm9va21hcmtlZChzbHVnKTtcbnZhciBwYWdlVXJsPWxvY2F0aW9uLmhyZWY7XG52YXIgcHU9ZW5jb2RlVVJJQ29tcG9uZW50KHBhZ2VVcmwpO1xudmFyIHB0PWVuY29kZVVSSUNvbXBvbmVudCh0aXRsZSk7XG52YXIgYmFyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuYmFyLmlkPSdrdGgtYWN0aW9uLWJhcic7XG5iYXIuaW5uZXJIVE1MPVxuJzxkaXYgc3R5bGU9XCJwb3NpdGlvbjpyZWxhdGl2ZVwiPicrXG4nPGJ1dHRvbiBjbGFzcz1cImt0aC1hY3Rpb24tYnRuXCIgaWQ9XCJrdGgtc2hhcmUtYnRuXCI+Jytcbic8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48Y2lyY2xlIGN4PVwiMThcIiBjeT1cIjVcIiByPVwiM1wiLz48Y2lyY2xlIGN4PVwiNlwiIGN5PVwiMTJcIiByPVwiM1wiLz48Y2lyY2xlIGN4PVwiMThcIiBjeT1cIjE5XCIgcj1cIjNcIi8+PGxpbmUgeDE9XCI4LjU5XCIgeTE9XCIxMy41MVwiIHgyPVwiMTUuNDJcIiB5Mj1cIjE3LjQ5XCIvPjxsaW5lIHgxPVwiMTUuNDFcIiB5MT1cIjYuNTFcIiB4Mj1cIjguNTlcIiB5Mj1cIjEwLjQ5XCIvPjwvc3ZnPicrXG4nU2hhcmU8L2J1dHRvbj4nK1xuJzxkaXYgaWQ9XCJrdGgtc2hhcmUtZHJvcGRvd25cIj4nK1xuJzxhIGNsYXNzPVwia3RoLXNoYXJlLWl0ZW1cIiBocmVmPVwiaHR0cHM6Ly90d2l0dGVyLmNvbS9pbnRlbnQvdHdlZXQ/dXJsPScrcHUrJyZ0ZXh0PScrcHQrJ1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+WCAoVHdpdHRlcik8L2E+Jytcbic8YSBjbGFzcz1cImt0aC1zaGFyZS1pdGVtXCIgaHJlZj1cImh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9zaGFyZXIvc2hhcmVyLnBocD91PScrcHUrJ1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+RmFjZWJvb2s8L2E+Jytcbic8YSBjbGFzcz1cImt0aC1zaGFyZS1pdGVtXCIgaHJlZj1cImh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9zaGFyZUFydGljbGU/bWluaT10cnVlJnVybD0nK3B1KycmdGl0bGU9JytwdCsnXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5MaW5rZWRJbjwvYT4nK1xuJzxkaXYgY2xhc3M9XCJrdGgtc2hhcmUtaXRlbVwiIGlkPVwia3RoLWNvcHktbGlua1wiPvCflJcgQ29weSBMaW5rPC9kaXY+Jytcbic8L2Rpdj48L2Rpdj4nK1xuJzxidXR0b24gY2xhc3M9XCJrdGgtYWN0aW9uLWJ0bicrKGJvb2ttYXJrZWQ/JyBib29rbWFya2VkJzonJykrJ1wiIGlkPVwia3RoLWJtLWJ0blwiPicrXG4nPHN2ZyB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIicrKGJvb2ttYXJrZWQ/J2N1cnJlbnRDb2xvcic6J25vbmUnKSsnXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxwYXRoIGQ9XCJNMTkgMjFsLTctNS03IDVWNWEyIDIgMCAwIDEgMi0yaDEwYTIgMiAwIDAgMSAyIDJ6XCIvPjwvc3ZnPicrXG4oYm9va21hcmtlZD8nU2F2ZWQnOidCb29rbWFyaycpKyc8L2J1dHRvbj4nO1xuYW5jaG9yLmluc2VydEJlZm9yZShiYXIsYW5jaG9yLmZpcnN0Q2hpbGQpO1xudmFyIHRvYXN0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3RvYXN0LmlkPSdrdGgtYm0tdG9hc3QnO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodG9hc3QpO1xuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0aC1ibS1idG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtcbnZhciBhZGRlZD10b2dnbGVCb29rbWFyayhzbHVnLHRpdGxlLGltZyk7XG52YXIgYnRuPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdrdGgtYm0tYnRuJyk7XG5pZihhZGRlZCl7YnRuLmNsYXNzTGlzdC5hZGQoJ2Jvb2ttYXJrZWQnKTtidG4uaW5uZXJIVE1MPSc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiPjxwYXRoIGQ9XCJNMTkgMjFsLTctNS03IDVWNWEyIDIgMCAwIDEgMi0yaDEwYTIgMiAwIDAgMSAyIDJ6XCIvPjwvc3ZnPlNhdmVkJztzaG93VG9hc3QoJ+KchSBCb29rbWFya2VkIScpO31cbmVsc2V7YnRuLmNsYXNzTGlzdC5yZW1vdmUoJ2Jvb2ttYXJrZWQnKTtidG4uaW5uZXJIVE1MPSc8c3ZnIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIj48cGF0aCBkPVwiTTE5IDIxbC03LTUtNyA1VjVhMiAyIDAgMCAxIDItMmgxMGEyIDIgMCAwIDEgMiAyelwiLz48L3N2Zz5Cb29rbWFyayc7c2hvd1RvYXN0KCdCb29rbWFyayByZW1vdmVkJyk7fVxufSk7XG52YXIgc2hhcmVCdG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0aC1zaGFyZS1idG4nKTtcbnZhciBkcm9wZG93bj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3RoLXNoYXJlLWRyb3Bkb3duJyk7XG5zaGFyZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKTtkcm9wZG93bi5jbGFzc0xpc3QudG9nZ2xlKCdvcGVuJyk7fSk7XG5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXtkcm9wZG93bi5jbGFzc0xpc3QucmVtb3ZlKCdvcGVuJyk7fSk7XG5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3RoLWNvcHktbGluaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpe1xudmFyIHR4dD1wYWdlVXJsO1xuaWYobmF2aWdhdG9yLmNsaXBib2FyZCl7bmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodHh0KS50aGVuKGZ1bmN0aW9uKCl7c2hvd1RvYXN0KCfwn5SXIExpbmsgY29waWVkIScpO30pO31cbmVsc2V7dmFyIHRhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7dGEudmFsdWU9dHh0O2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGEpO3RhLnNlbGVjdCgpO2RvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0YSk7c2hvd1RvYXN0KCfwn5SXIExpbmsgY29waWVkIScpO31cbmRyb3Bkb3duLmNsYXNzTGlzdC5yZW1vdmUoJ29wZW4nKTtcbn0pO1xufVxuLy8gTXV0YXRpb25PYnNlcnZlcjogLm55dC1wb3N0LWNvbnRlbnQg7LaU6rCAICsga3RoLWFjdGlvbi1iYXIg7KCc6rGwIOuqqOuRkCDqsJDsp4BcbnZhciBfYm1UcmllZD1mYWxzZTtcbnZhciBvYnM9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oKXtcbmlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC1jb250ZW50JykmJiFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna3RoLWFjdGlvbi1iYXInKSl7XG5zZXRUaW1lb3V0KGJ1aWxkQWN0aW9uQmFyLDUwKTtcbn1cbn0pO1xub2JzLm9ic2VydmUoZG9jdW1lbnQuYm9keSx7Y2hpbGRMaXN0OnRydWUsc3VidHJlZTp0cnVlfSk7XG4vLyDso7zquLDsoIEg67Cx7JeFICjtjpjsnbTsp4Ag66Gc65OcIOydtO2bhCAx7LSI6rmM7KeAKVxudmFyIF9ibVRpbWVyPXNldEludGVydmFsKGZ1bmN0aW9uKCl7XG5pZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcubnl0LXBvc3QtY29udGVudCcpJiYhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2t0aC1hY3Rpb24tYmFyJykpe1xuYnVpbGRBY3Rpb25CYXIoKTtcbn1cbn0sMjAwKTtcbnNldFRpbWVvdXQoZnVuY3Rpb24oKXtjbGVhckludGVydmFsKF9ibVRpbWVyKTt9LDMwMDApO1xuYnVpbGRBY3Rpb25CYXIoKTtcbn0pKCk7XG48L3NjcmlwdD5cbjxzY3JpcHQgaWQ9XCJzaG9wLXNvcnQtZml4XCI+XG4oZnVuY3Rpb24oKXtcbmlmKCFsb2NhdGlvbi5wYXRobmFtZS5pbmNsdWRlcygnL3Nob3AnKSkgcmV0dXJuO1xuZnVuY3Rpb24gcmVvcmRlclNob3AoKXtcbnZhciBsaXN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmJsdWVkb3QtcHJvZHVjdHMtbGlzdCcpO1xuaWYoIWxpc3QpIHJldHVybjtcbi8vIEdldCBhbGwgcHJvZHVjdCBjYXJkcyBhbmQgdGhlaXIgbGlua3NcbnZhciBjYXJkcyA9IEFycmF5LmZyb20obGlzdC5xdWVyeVNlbGVjdG9yQWxsKCcuYmx1ZWRvdC1wcm9kdWN0LWNhcmQnKSk7XG5pZihjYXJkcy5sZW5ndGggPCAyKSByZXR1cm47XG4vLyBCdWlsZCBhIG1hcCBvZiBocmVmIC0+IGNhcmQgZWxlbWVudFxudmFyIGNhcmRNYXAgPSB7fTtcbmNhcmRzLmZvckVhY2goZnVuY3Rpb24oY2FyZCl7XG52YXIgbGluayA9IGNhcmQucXVlcnlTZWxlY3RvcignYVtocmVmXScpO1xuaWYobGluayl7XG52YXIgc2x1ZyA9IGxpbmsuZ2V0QXR0cmlidXRlKCdocmVmJykucmVwbGFjZSgvXlxcL3xcXC8kJC9nLCcnKTtcbmNhcmRNYXBbc2x1Z10gPSBjYXJkO1xufVxufSk7XG4vLyBGZXRjaCBwcm9kdWN0cyBmcm9tIGNvbnRlbnQgQVBJIHNvcnRlZCBieSBwdWJsaXNoZWRfYXQgZGVzY1xuZmV0Y2goJy9ibHVlZG90L2FwaS9jb250ZW50L3Bvc3RzLz9rZXk9JmZpbHRlcj10YWc6c2hvcCZvcmRlcj1wdWJsaXNoZWRfYXQrZGVzYyZsaW1pdD1hbGwmZmllbGRzPXNsdWcscHVibGlzaGVkX2F0Jylcbi50aGVuKGZ1bmN0aW9uKHIpeyByZXR1cm4gci5qc29uKCk7IH0pXG4udGhlbihmdW5jdGlvbihkYXRhKXtcbmlmKCFkYXRhLnBvc3RzKSByZXR1cm47XG52YXIgc29ydGVkU2x1Z3MgPSBkYXRhLnBvc3RzLm1hcChmdW5jdGlvbihwKXsgcmV0dXJuIHAuc2x1ZzsgfSk7XG4vLyBSZW9yZGVyIGNhcmRzIGJhc2VkIG9uIEFQSSBvcmRlclxuc29ydGVkU2x1Z3MuZm9yRWFjaChmdW5jdGlvbihzbHVnKXtcbmlmKGNhcmRNYXBbc2x1Z10pe1xubGlzdC5hcHBlbmRDaGlsZChjYXJkTWFwW3NsdWddKTtcbn1cbn0pO1xufSlcbi5jYXRjaChmdW5jdGlvbigpe1xuLy8gRmFsbGJhY2s6IGp1c3QgcmV2ZXJzZSB0aGUgY3VycmVudCBvcmRlclxuY2FyZHMucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24oYyl7IGxpc3QuYXBwZW5kQ2hpbGQoYyk7IH0pO1xufSk7XG59XG5zZXRUaW1lb3V0KHJlb3JkZXJTaG9wLCAyMDAwKTtcbn0pKCk7XG48L3NjcmlwdD5cbjwhLS0gPT09PT09PT09PT09PT09PT0gQkVHSU4ga3RoLWNsYXVkZS1wYXRjaCAoMjAyNi0wOC0yMykgPT09PT09PT09PT09PT09PT1cbuydtCDso7zshJ3rtoDthLAgRU5EIOyjvOyEneq5jOyngOunjCDsp4DsmrDrqbQg7JmE7KCE7Z6IIOybkOuemOuMgOuhnCDrj4zslYTqsJHri4jri6QuXG4xKSDrlJTsnpDsnbgg7KCV66asICjsoJzrqqkg7ISc7LK0wrfsubTrk5zCt+uwsOyngMK37IS57IWYwrfribTsiqTroIjthLAg652gKVxuMikg7ZSE66as66+47JeEIOumrO2PrO2KuCDsnpDrj5kg6rCx7IugICgvc2hvcC8g7LWc7IugIDbqsJwpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT5cbjxzdHlsZSBpZD1cImt0aC1jbGF1ZGUtc3R5bGVcIj46cm9vdHstLWt0aC1pbms6IzE0MTUxQTstLWt0aC1pbmstMjojM0EzQjQwOy0ta3RoLW11dGVkOiM3Nzc1NkU7LS1rdGgtcnVsZTojRTNERkQ2Oy0ta3RoLXJ1bGUtMjojQzlDNEI3Oy0ta3RoLW5hdnk6IzE2MzA1QzstLWt0aC1nb2xkOiM5QTdCM0Y7LS1rdGgtc2VyaWY6XCJTb3VyY2UgU2VyaWYgNFwiLFwiUHJldGVuZGFyZCBWYXJpYWJsZVwiLFByZXRlbmRhcmQsXCJBcHBsZSBTRCBHb3RoaWMgTmVvXCIsR2VvcmdpYSxzZXJpZjstLWt0aC1zYW5zOlwiSW50ZXJcIixcIlByZXRlbmRhcmQgVmFyaWFibGVcIixQcmV0ZW5kYXJkLFwiQXBwbGUgU0QgR290aGljIE5lb1wiLHN5c3RlbS11aSxzYW5zLXNlcmlmfWJvZHl7Zm9udC1mYW1pbHk6dmFyKC0ta3RoLXNhbnMpO2NvbG9yOnZhcigtLWt0aC1pbmspOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9Ym9keSwubWFpbntiYWNrZ3JvdW5kOiNmZmYgIWltcG9ydGFudH0ua3RoLWNhcmQtdGl0bGUsLmt0aC1oZXJvLXRpdGxlLC5rdGgtaGVyby1zaWRlLXRpdGxlLC5ueXQtcG9zdC10aXRsZSwua3RoLXNlY3Rpb24tdGl0bGUsaDEsaDIsaDN7Zm9udC1mYW1pbHk6dmFyKC0ta3RoLXNlcmlmKTtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbTtsaW5lLWhlaWdodDoxLjI2O2ZvbnQtc3ludGhlc2lzLXdlaWdodDpub25lfS5rdGgtY2FyZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MDtvdmVyZmxvdzp2aXNpYmxlfS5rdGgtY2FyZC1pbWcsLmt0aC1oZXJvLXNpZGUtaW1ne2JvcmRlci1yYWRpdXM6MnB4O292ZXJmbG93OmhpZGRlbn0ua3RoLWNhcmQtYm9keXtwYWRkaW5nLWxlZnQ6MDtwYWRkaW5nLXJpZ2h0OjB9Lmt0aC1jYXJkLXRpdGxle2ZvbnQtc2l6ZToxOXB4O21hcmdpbjoxMHB4IDAgOHB4fS5rdGgtY2FyZC1leGNlcnB0e21heC1oZWlnaHQ6bm9uZTtmb250LXNpemU6MTMuNXB4O2xpbmUtaGVpZ2h0OjEuNjI7Y29sb3I6dmFyKC0ta3RoLWluay0yKTtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59Lmt0aC1iYWRnZSwua3RoLWJhZGdlLS1zbSwua3RoLWhlcm8tbGVmdCAua3RoLWJhZGdlLC5rdGgtaGVyby1yaWdodCAua3RoLWJhZGdle2JhY2tncm91bmQ6dHJhbnNwYXJlbnQgIWltcG9ydGFudDtib3JkZXI6MCAhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MCAhaW1wb3J0YW50O3BhZGRpbmc6MCAhaW1wb3J0YW50O2NvbG9yOnZhcigtLWt0aC1uYXZ5KSAhaW1wb3J0YW50O2ZvbnQtZmFtaWx5OnZhcigtLWt0aC1zYW5zKSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMC41cHggIWltcG9ydGFudDtmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMTZlbSAhaW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSAhaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWZsZXggIWltcG9ydGFudDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjhweH0ua3RoLWJhZGdlOjphZnRlcntjb250ZW50OlwiXCI7d2lkdGg6MjJweDtoZWlnaHQ6MXB4O2JhY2tncm91bmQ6dmFyKC0ta3RoLXJ1bGUtMik7ZGlzcGxheTppbmxpbmUtYmxvY2t9Lmt0aC1tZXRhLC5rdGgtbWV0YS0tc217Zm9udC1zaXplOjExLjVweDtjb2xvcjp2YXIoLS1rdGgtbXV0ZWQpO2xldHRlci1zcGFjaW5nOi4wMmVtfS5rdGgtbWV0YS1zZXB7Y29sb3I6dmFyKC0ta3RoLXJ1bGUtMik7bWFyZ2luOjAgNnB4fS5rdGgtc2VjdGlvbi1oZWFke2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE4cHg7Ym9yZGVyOjA7bWFyZ2luLWJvdHRvbToyNnB4fS5rdGgtc2VjdGlvbi10aXRsZXtmb250LWZhbWlseTp2YXIoLS1rdGgtc2Fucyk7Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NzAwO2xldHRlci1zcGFjaW5nOi4yZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2JvcmRlci1sZWZ0OjA7cGFkZGluZy1sZWZ0OjA7d2hpdGUtc3BhY2U6bm93cmFwO2ZsZXg6MTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxOHB4fS5rdGgtc2VjdGlvbi10aXRsZTo6YmVmb3Jle2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5rdGgtc2VjdGlvbi10aXRsZTo6YWZ0ZXJ7Y29udGVudDpcIlwiO2ZsZXg6MTtoZWlnaHQ6MXB4O2JhY2tncm91bmQ6dmFyKC0ta3RoLXJ1bGUpfS5rdGgtc2VjdGlvbi1tb3Jle2ZvbnQtc2l6ZToxMXB4O2xldHRlci1zcGFjaW5nOi4xMmVtO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtjb2xvcjp2YXIoLS1rdGgtbXV0ZWQpO2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7cGFkZGluZzowO3doaXRlLXNwYWNlOm5vd3JhcH0ua3RoLXNlY3Rpb24tbW9yZTpob3Zlcntjb2xvcjp2YXIoLS1rdGgtaW5rKX0ua3RoLWhlcm8td3JhcCwua3RoLWhlcm8tbGVmdCwua3RoLWhlcm8tcmlnaHR7YmFja2dyb3VuZDp0cmFuc3BhcmVudCAhaW1wb3J0YW50fS5rdGgtaGVyby1zaWRlLWNhcmR7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0ta3RoLXJ1bGUpO2JvcmRlci1yYWRpdXM6MDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O3BhZGRpbmc6MTlweCAwfS5rdGgtaGVyby1zaWRlLWNhcmQ6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOjB9Lmt0aC1oZXJvLXNpZGUtdGl0bGV7Zm9udC1zaXplOjE2cHg7bGluZS1oZWlnaHQ6MS40fS5rdGgtc2hvcC1zdHJpcC1pdGVtLC5rdGgteXQtY2FyZHtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MH0ua3RoLXNob3Atc3RyaXAtdGh1bWJ7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1rdGgtcnVsZSk7Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZDojZmZmfS5rdGgtc2hvcC1zdHJpcC1uYW1le2ZvbnQtZmFtaWx5OnZhcigtLWt0aC1zZXJpZik7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuMzg7bWFyZ2luLXRvcDoxMnB4fS5rdGgtc2hvcC1zdHJpcC1wcmljZXtmb250LXNpemU6MTEuNXB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjp2YXIoLS1rdGgtZ29sZCk7bGV0dGVyLXNwYWNpbmc6LjA0ZW07bWFyZ2luLXRvcDo2cHh9Lmt0aC15dC10aHVtYntib3JkZXItcmFkaXVzOjJweDtvdmVyZmxvdzpoaWRkZW59Lmt0aC15dC10dGx7Zm9udC1mYW1pbHk6dmFyKC0ta3RoLXNhbnMpO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjQ1O21hcmdpbi10b3A6MTJweDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59Lmt0aC1ubHtiYWNrZ3JvdW5kOnZhcigtLWt0aC1pbmspICFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lICFpbXBvcnRhbnQ7Y29sb3I6I2ZmZjtwYWRkaW5nOjY0cHggMH0ua3RoLW5sIGgyLC5rdGgtbmwgaDN7Zm9udC1mYW1pbHk6dmFyKC0ta3RoLXNlcmlmKTtjb2xvcjojZmZmO2ZvbnQtc2l6ZTozMHB4O2xpbmUtaGVpZ2h0OjEuMjh9Lmt0aC1ubCBwe2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjY2KTtmb250LXNpemU6MTQuNXB4fS5rdGgtbmwgaW5wdXRbdHlwZT1cImVtYWlsXCJde2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOjA7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMzIpO2JvcmRlci1yYWRpdXM6MDtjb2xvcjojZmZmO3BhZGRpbmc6MTRweCAycHg7Zm9udC1zaXplOjE1cHh9Lmt0aC1ubCBpbnB1dFt0eXBlPVwiZW1haWxcIl06OnBsYWNlaG9sZGVye2NvbG9yOnJnYmEoMjU1LDI1NSwyNTUsLjQpfS5oZWFkZXItbWVtYmVyLWJ0bi0tc3Vic2NyaWJle2JhY2tncm91bmQ6dmFyKC0ta3RoLWluaykgIWltcG9ydGFudDtib3JkZXItY29sb3I6dmFyKC0ta3RoLWluaykgIWltcG9ydGFudDtjb2xvcjojZmZmICFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7Zm9udC1zaXplOjExcHg7bGV0dGVyLXNwYWNpbmc6LjEzZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OjYwMH0uaGVhZGVyLW1lbWJlci1idG4tLXNpZ25pbntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Y29sb3I6dmFyKC0ta3RoLWluaykgIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWt0aC1ydWxlLTIpICFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHg7Zm9udC1zaXplOjExcHg7bGV0dGVyLXNwYWNpbmc6LjEzZW07dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO2ZvbnQtd2VpZ2h0OjYwMH0ubnl0LXBvc3QtdGl0bGV7Zm9udC1zaXplOjM4cHg7bGluZS1oZWlnaHQ6MS4yNDtsZXR0ZXItc3BhY2luZzotLjAyZW19Lm55dC1wb3N0LWNvbnRlbnQgLmMtY29udGVudHtmb250LXNpemU6MTcuNXB4O2xpbmUtaGVpZ2h0OjEuODU7Y29sb3I6IzFFMUYyNH0ubnl0LXBvc3QtY29udGVudCAuYy1jb250ZW50IHB7bWFyZ2luOjAgMCAxLjM1ZW19Lm55dC1wb3N0LWNvbnRlbnQgLmMtY29udGVudCBoMiwubnl0LXBvc3QtY29udGVudCAuYy1jb250ZW50IGgze2ZvbnQtZmFtaWx5OnZhcigtLWt0aC1zZXJpZik7bWFyZ2luOjIuMmVtIDAgLjdlbTtwYWRkaW5nLXRvcDouOWVtO2JvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLWt0aC1ydWxlKTtmb250LXNpemU6MjJweH0ubnl0LXBvc3QtY29udGVudCAuYy1jb250ZW50IGJsb2NrcXVvdGV7Ym9yZGVyLWxlZnQ6MnB4IHNvbGlkIHZhcigtLWt0aC1pbmspO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7bWFyZ2luOjEuOGVtIDA7cGFkZGluZzouMmVtIDAgLjJlbSAxLjJlbTtmb250LXN0eWxlOm5vcm1hbDtjb2xvcjp2YXIoLS1rdGgtaW5rLTIpfUBtZWRpYSAobWF4LXdpZHRoOjYwMHB4KXsua3RoLWNhcmQtdGl0bGV7Zm9udC1zaXplOjE3cHh9Lm55dC1wb3N0LXRpdGxle2ZvbnQtc2l6ZToyNnB4fS5ueXQtcG9zdC1jb250ZW50IC5jLWNvbnRlbnR7Zm9udC1zaXplOjE2LjVweDtsaW5lLWhlaWdodDoxLjh9fTwvc3R5bGU+XG48c2NyaXB0IGlkPVwia3RoLWF1dG8tdXBkYXRlXCI+XG4oZnVuY3Rpb24gKCkge1xudmFyIEdSSUQgPSAnLmt0aC1zaG9wLXN0cmlwLWdyaWQnLCBTUkMgPSAnL3Nob3AvJywgTiA9IDYsIENBQ0hFID0gJ2t0aF9zaG9wX2NhY2hlJywgTUlOID0gMzA7XG5mdW5jdGlvbiBlc2Mocyl7cmV0dXJuIFN0cmluZyhzfHwnJykucmVwbGFjZSgvWyY8PlwiXS9nLGZ1bmN0aW9uKGMpe3JldHVybiB7JyYnOicmYW1wOycsJzwnOicmbHQ7JywnPic6JyZndDsnLCdcIic6JyZxdW90Oyd9W2NdO30pO31cbmZ1bmN0aW9uIHBhcnNlKGh0bWwpe1xudmFyIGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaHRtbCwndGV4dC9odG1sJyk7XG5yZXR1cm4gW10uc2xpY2UuY2FsbChkb2MucXVlcnlTZWxlY3RvckFsbCgnLmJsdWVkb3QtcHJvZHVjdC1jYXJkJykpLnNsaWNlKDAsTikubWFwKGZ1bmN0aW9uKGMpe1xudmFyIGltZyA9IGMucXVlcnlTZWxlY3RvcignaW1nLmNvdmVyJykgfHwgYy5xdWVyeVNlbGVjdG9yKCdpbWcnKTtcbnZhciBsaW5rID0gYy5xdWVyeVNlbGVjdG9yKCcuaW5mbyBoMyBhJykgfHwgYy5xdWVyeVNlbGVjdG9yKCdhW2hyZWZdJyk7XG52YXIgcGFpcnMgPSBbXS5zbGljZS5jYWxsKGMucXVlcnlTZWxlY3RvckFsbCgnLnByaWNlJykpLm1hcChmdW5jdGlvbihwKXtcbnJldHVybiB7IGxhYmVsOiAoKHAucXVlcnlTZWxlY3RvcignLnByaWNlLWxhYmVsJyl8fHt9KS50ZXh0Q29udGVudHx8JycpLnRyaW0oKVxuLnJlcGxhY2UoJ+ustOujjCDtmozsm5DqsIAnLCfrrLTro4ztmozsm5AnKS5yZXBsYWNlKCfsnKDro4wg7ZqM7JuQ6rCAJywn7Jyg66OM7ZqM7JuQJyksXG52YWx1ZTogKChwLnF1ZXJ5U2VsZWN0b3IoJy5wcmljZS10ZXh0Jyl8fHt9KS50ZXh0Q29udGVudHx8JycpLnRyaW0oKSB9O1xufSkuZmlsdGVyKGZ1bmN0aW9uKHApe3JldHVybiBwLnZhbHVlO30pO1xudmFyIGFsbEZyZWUgPSBwYWlycy5sZW5ndGggJiYgcGFpcnMuZXZlcnkoZnVuY3Rpb24ocCl7cmV0dXJuIHAudmFsdWU9PT0n66y066OMJzt9KTtcbnZhciBwcmljZSA9IGFsbEZyZWUgPyAn66y066OMJyA6IHBhaXJzLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gKHAubGFiZWwrJyAnK3AudmFsdWUpLnRyaW0oKTt9KS5qb2luKCcgwrcgJyk7XG5yZXR1cm4geyBpbWc6IGltZyA/IGltZy5nZXRBdHRyaWJ1dGUoJ3NyYycpIDogJycsXG5ocmVmOiBsaW5rID8gbGluay5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSA6IFNSQyxcbm5hbWU6IGVzYyhpbWcgJiYgaW1nLmFsdCA/IGltZy5hbHQgOiAnJyksXG5wcmljZTogZXNjKHByaWNlIHx8ICfsnpDshLjtnogg67O06riwJykgfTtcbn0pLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4gaS5pbWcgJiYgaS5uYW1lO30pO1xufVxuZnVuY3Rpb24gcmVuZGVyKGl0ZW1zKXtcbnZhciBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihHUklEKTtcbmlmKCFob3N0IHx8ICFpdGVtcy5sZW5ndGgpIHJldHVybjtcbltdLnNsaWNlLmNhbGwoaG9zdC5xdWVyeVNlbGVjdG9yQWxsKCcua3RoLXNob3Atc3RyaXAtaXRlbScpKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe24ucmVtb3ZlKCk7fSk7XG5ob3N0Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywgaXRlbXMubWFwKGZ1bmN0aW9uKGkpe1xucmV0dXJuICc8YSBjbGFzcz1cImt0aC1zaG9wLXN0cmlwLWl0ZW1cIiBocmVmPVwiJytpLmhyZWYrJ1wiPicrXG4nPGRpdiBjbGFzcz1cImt0aC1zaG9wLXN0cmlwLXRodW1iXCI+PGltZyBzcmM9XCInK2kuaW1nKydcIiBhbHQ9XCJcIiBsb2FkaW5nPVwibGF6eVwiPjwvZGl2PicrXG4nPGRpdiBjbGFzcz1cImt0aC1zaG9wLXN0cmlwLWluZm9cIj4nK1xuJzxkaXYgY2xhc3M9XCJrdGgtc2hvcC1zdHJpcC1uYW1lXCI+JytpLm5hbWUrJzwvZGl2PicrXG4nPGRpdiBjbGFzcz1cImt0aC1zaG9wLXN0cmlwLXByaWNlXCI+JytpLnByaWNlKyc8L2Rpdj4nK1xuJzwvZGl2PjwvYT4nO1xufSkuam9pbignJykpO1xufVxuZnVuY3Rpb24gYm9vdCgpe1xuaWYoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoR1JJRCkpIHJldHVybjtcbnRyeXtcbnZhciBoaXQgPSBKU09OLnBhcnNlKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oQ0FDSEUpfHwnbnVsbCcpO1xuaWYoaGl0ICYmIERhdGUubm93KCktaGl0LmF0IDwgTUlOKjYwMDAwKXsgcmVuZGVyKGhpdC5pdGVtcyk7IHJldHVybjsgfVxufWNhdGNoKGUpe31cbmZldGNoKFNSQyx7Y3JlZGVudGlhbHM6J3NhbWUtb3JpZ2luJ30pXG4udGhlbihmdW5jdGlvbihyKXsgcmV0dXJuIHIub2sgPyByLnRleHQoKSA6IFByb21pc2UucmVqZWN0KHIuc3RhdHVzKTsgfSlcbi50aGVuKGZ1bmN0aW9uKGh0bWwpe1xudmFyIGl0ZW1zID0gcGFyc2UoaHRtbCk7XG5pZighaXRlbXMubGVuZ3RoKSByZXR1cm47XG5yZW5kZXIoaXRlbXMpO1xudHJ5eyBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKENBQ0hFLCBKU09OLnN0cmluZ2lmeSh7YXQ6RGF0ZS5ub3coKSwgaXRlbXM6aXRlbXN9KSk7IH1jYXRjaChlKXt9XG59KVxuLmNhdGNoKGZ1bmN0aW9uKCl7fSk7XG59XG5pZihkb2N1bWVudC5yZWFkeVN0YXRlPT09J2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJyxib290KTsgZWxzZSBib290KCk7XG59KSgpO1xuPC9zY3JpcHQ+XG48c3R5bGUgaWQ9XCJrdGgtbGFuZy1zdHlsZVwiPi5rdGgtbGFuZ3RvZ2dsZXtkaXNwbGF5OmlubGluZS1mbGV4O2JvcmRlcjoxcHggc29saWQgI0M5QzRCNztib3JkZXItcmFkaXVzOjJweDtvdmVyZmxvdzpoaWRkZW47bWFyZ2luLXJpZ2h0OjEwcHg7dmVydGljYWwtYWxpZ246bWlkZGxlfS5rdGgtbGFuZ3RvZ2dsZSBidXR0b257YXBwZWFyYW5jZTpub25lO2JvcmRlcjowO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Y3Vyc29yOnBvaW50ZXI7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxMC41cHg7Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi4xM2VtO3BhZGRpbmc6NnB4IDExcHg7Y29sb3I6Izc3NzU2RTtsaW5lLWhlaWdodDoxO3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0ua3RoLWxhbmd0b2dnbGUgYnV0dG9uW2FyaWEtcHJlc3NlZD1cInRydWVcIl17YmFja2dyb3VuZDojMTQxNTFBO2NvbG9yOiNmZmZ9PC9zdHlsZT5cbjxzY3JpcHQgaWQ9XCJrdGgtbGFuZy1zcGxpdFwiPlxuKGZ1bmN0aW9uICgpIHtcbnZhciBLRVkgPSAna3RoX2xhbmcnO1xuZnVuY3Rpb24gaXNLbyhzKXsgcmV0dXJuIC9b6rCALe2eo10vLnRlc3QocyB8fCAnJyk7IH1cbmZ1bmN0aW9uIGdldExhbmcoKXtcbnRyeSB7XG52YXIgdiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKEtFWSk7XG5pZiAodiA9PT0gJ2VuJyB8fCB2ID09PSAna28nKSByZXR1cm4gdjtcbnZhciBuYXYgPSAobmF2aWdhdG9yLmxhbmd1YWdlIHx8IG5hdmlnYXRvci51c2VyTGFuZ3VhZ2UgfHwgJ2tvJykudG9Mb3dlckNhc2UoKTtcbnJldHVybiBuYXYuaW5kZXhPZigna28nKSA9PT0gMCA/ICdrbycgOiAnZW4nO1xufSBjYXRjaChlKXsgcmV0dXJuICdrbyc7IH1cbn1cbmZ1bmN0aW9uIHNldExhbmcodil7IHRyeSB7IGxvY2FsU3RvcmFnZS5zZXRJdGVtKEtFWSwgdik7IH0gY2F0Y2goZSl7fSB9XG5mdW5jdGlvbiBXKGZuKXsgd2luZG93Ll9fS1RIX1dSSVRFID0gdHJ1ZTsgdHJ5IHsgZm4oKTsgfSBmaW5hbGx5IHsgd2luZG93Ll9fS1RIX1dSSVRFID0gZmFsc2U7IH0gfVxuZnVuY3Rpb24gdHh0KGVsLCBzKXsgaWYgKGVsKSBXKGZ1bmN0aW9uKCl7IGVsLnRleHRDb250ZW50ID0gczsgfSk7IH1cbmZ1bmN0aW9uIGZyb21DYXJkKGNhcmQpe1xudmFyIGEgPSBjYXJkLmNsb3Nlc3QoJ2EnKSB8fCBjYXJkLnF1ZXJ5U2VsZWN0b3IoJ2EnKTtcbnZhciBpbWcgPSBjYXJkLnF1ZXJ5U2VsZWN0b3IoJ2ltZycpO1xucmV0dXJuIHtcbmhyZWY6IGEgPyBhLmdldEF0dHJpYnV0ZSgnaHJlZicpIDogJyMnLFxuaW1nOiBpbWcgPyAoaW1nLmdldEF0dHJpYnV0ZSgnc3JjJykgfHwgJycpIDogJycsXG5iYWRnZTogKGNhcmQucXVlcnlTZWxlY3RvcignLmt0aC1iYWRnZScpIHx8IHt9KS50ZXh0Q29udGVudCB8fCAnJyxcbnRpdGxlOiAoKGNhcmQucXVlcnlTZWxlY3RvcignLmt0aC1jYXJkLXRpdGxlJykgfHwge30pLnRleHRDb250ZW50IHx8ICcnKS50cmltKCksXG5leGNlcnB0OiAoKGNhcmQucXVlcnlTZWxlY3RvcignLmt0aC1jYXJkLWV4Y2VycHQnKSB8fCB7fSkudGV4dENvbnRlbnQgfHwgJycpLnRyaW0oKSxcbm1ldGE6IChjYXJkLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtbWV0YScpIHx8IHt9KS5pbm5lckhUTUwgfHwgJydcbn07XG59XG5mdW5jdGlvbiBmcm9tSGVybyhlbCl7XG52YXIgaW1nID0gZWwucXVlcnlTZWxlY3RvcignaW1nJyk7XG5yZXR1cm4ge1xuaHJlZjogZWwuZ2V0QXR0cmlidXRlKCdocmVmJykgfHwgJyMnLFxuaW1nOiBpbWcgPyAoaW1nLmdldEF0dHJpYnV0ZSgnc3JjJykgfHwgJycpIDogJycsXG5iYWRnZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtYmFkZ2UnKSB8fCB7fSkudGV4dENvbnRlbnQgfHwgJycsXG50aXRsZTogKChlbC5xdWVyeVNlbGVjdG9yKCcua3RoLWhlcm8tdGl0bGUnKSB8fCB7fSkudGV4dENvbnRlbnQgfHwgJycpLnRyaW0oKSxcbmV4Y2VycHQ6ICcnLFxubWV0YTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtbWV0YScpIHx8IHt9KS5pbm5lckhUTUwgfHwgJydcbn07XG59XG5mdW5jdGlvbiBmcm9tU2lkZShlbCl7XG52YXIgaW1nID0gZWwucXVlcnlTZWxlY3RvcignaW1nJyk7XG5yZXR1cm4ge1xuaHJlZjogZWwuZ2V0QXR0cmlidXRlKCdocmVmJykgfHwgJyMnLFxuaW1nOiBpbWcgPyAoaW1nLmdldEF0dHJpYnV0ZSgnc3JjJykgfHwgJycpIDogJycsXG5iYWRnZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtYmFkZ2UnKSB8fCB7fSkudGV4dENvbnRlbnQgfHwgJycsXG50aXRsZTogKChlbC5xdWVyeVNlbGVjdG9yKCdoMycpIHx8IHt9KS50ZXh0Q29udGVudCB8fCAnJykudHJpbSgpLFxuZXhjZXJwdDogJycsXG5tZXRhOiAoZWwucXVlcnlTZWxlY3RvcignLmt0aC1tZXRhJykgfHwge30pLmlubmVySFRNTCB8fCAnJ1xufTtcbn1cbmZ1bmN0aW9uIHBhaW50KGVsLCBpdGVtLCBraW5kKXtcbmlmICghZWwgfHwgIWl0ZW0pIHJldHVybjtcbmVsLnNldEF0dHJpYnV0ZSgnaHJlZicsIGl0ZW0uaHJlZik7XG52YXIgaW1nID0gZWwucXVlcnlTZWxlY3RvcignaW1nJyk7XG5pZiAoaW1nICYmIGl0ZW0uaW1nKSB7XG5pbWcucmVtb3ZlQXR0cmlidXRlKCdsb2FkaW5nJyk7IGltZy5yZW1vdmVBdHRyaWJ1dGUoJ3NyY3NldCcpOyBpbWcucmVtb3ZlQXR0cmlidXRlKCdzaXplcycpO1xuaW1nLnNldEF0dHJpYnV0ZSgnYWx0JywgaXRlbS50aXRsZSk7XG5pZiAoaW1nLmdldEF0dHJpYnV0ZSgnc3JjJykgIT09IGl0ZW0uaW1nKSBpbWcuc2V0QXR0cmlidXRlKCdzcmMnLCBpdGVtLmltZyk7XG59XG50eHQoZWwucXVlcnlTZWxlY3RvcignLmt0aC1iYWRnZScpLCBpdGVtLmJhZGdlKTtcbmlmIChraW5kID09PSAnaGVybycpIHR4dChlbC5xdWVyeVNlbGVjdG9yKCcua3RoLWhlcm8tdGl0bGUnKSwgaXRlbS50aXRsZSk7XG5lbHNlIGlmIChraW5kID09PSAnc2lkZScpIHR4dChlbC5xdWVyeVNlbGVjdG9yKCdoMycpLCBpdGVtLnRpdGxlKTtcbmVsc2Uge1xudHh0KGVsLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtY2FyZC10aXRsZScpLCBpdGVtLnRpdGxlKTtcbnR4dChlbC5xdWVyeVNlbGVjdG9yKCcua3RoLWNhcmQtZXhjZXJwdCcpLCBpdGVtLmV4Y2VycHQpO1xufVxudmFyIG0gPSBlbC5xdWVyeVNlbGVjdG9yKCcua3RoLW1ldGEnKTtcbmlmIChtICYmIGl0ZW0ubWV0YSkgVyhmdW5jdGlvbigpeyBtLmlubmVySFRNTCA9IGl0ZW0ubWV0YTsgfSk7XG59XG5mdW5jdGlvbiBmZXRjaFBhZ2Uobil7XG5yZXR1cm4gZmV0Y2goJy9wYWdlLycgKyBuICsgJy8nLCB7IGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nIH0pXG4udGhlbihmdW5jdGlvbihyKXsgcmV0dXJuIHIub2sgPyByLnRleHQoKSA6ICcnOyB9KVxuLnRoZW4oZnVuY3Rpb24oaCl7XG5pZiAoIWgpIHJldHVybiBbXTtcbnZhciBkID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhoLCAndGV4dC9odG1sJyk7XG5yZXR1cm4gW10uc2xpY2UuY2FsbChkLnF1ZXJ5U2VsZWN0b3JBbGwoJy5rdGgtY2FyZCcpKS5tYXAoZnJvbUNhcmQpO1xufSlcbi5jYXRjaChmdW5jdGlvbigpeyByZXR1cm4gW107IH0pO1xufVxuZnVuY3Rpb24gcnVuKGxhbmcpe1xudmFyIGhlcm9FbCAgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcua3RoLWhlcm8tbWFpbicpO1xudmFyIHNpZGVFbHMgPSBbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5rdGgtaGVyby1zaWRlLWNhcmQnKSk7XG52YXIgY2FyZEVscyA9IFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmt0aC1ncmlkIC5rdGgtY2FyZCcpKTtcbmlmICghaGVyb0VsIHx8ICFjYXJkRWxzLmxlbmd0aCkgcmV0dXJuO1xudmFyIG5lZWQgPSAxICsgc2lkZUVscy5sZW5ndGggKyBjYXJkRWxzLmxlbmd0aDtcbnZhciBwb29sID0gW107XG5pZiAoaGVyb0VsKSBwb29sLnB1c2goZnJvbUhlcm8oaGVyb0VsKSk7XG5zaWRlRWxzLmZvckVhY2goZnVuY3Rpb24oZSl7IHBvb2wucHVzaChmcm9tU2lkZShlKSk7IH0pO1xuY2FyZEVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBwb29sLnB1c2goZnJvbUNhcmQoZSkpOyB9KTtcbmZ1bmN0aW9uIG1hdGNoKGxpc3QpeyByZXR1cm4gbGlzdC5maWx0ZXIoZnVuY3Rpb24oaSl7IHJldHVybiBpLnRpdGxlICYmIChpc0tvKGkudGl0bGUpID8gJ2tvJyA6ICdlbicpID09PSBsYW5nOyB9KTsgfVxuZnVuY3Rpb24gZGVkdXBlKGxpc3Qpe1xudmFyIHNlZW4gPSB7fSwgb3V0ID0gW107XG5saXN0LmZvckVhY2goZnVuY3Rpb24oaSl7IGlmICghc2VlbltpLmhyZWZdKSB7IHNlZW5baS5ocmVmXSA9IDE7IG91dC5wdXNoKGkpOyB9IH0pO1xucmV0dXJuIG91dDtcbn1cbnZhciBwaWNrZWQgPSBkZWR1cGUobWF0Y2gocG9vbCkpO1xuZnVuY3Rpb24gYXBwbHkoaXRlbXMpe1xuaWYgKGl0ZW1zLmxlbmd0aCA8IG5lZWQpIHJldHVybjtcbnZhciBrID0gMDtcbnBhaW50KGhlcm9FbCwgaXRlbXNbaysrXSwgJ2hlcm8nKTtcbnNpZGVFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgcGFpbnQoZSwgaXRlbXNbaysrXSwgJ3NpZGUnKTsgfSk7XG5jYXJkRWxzLmZvckVhY2goZnVuY3Rpb24oZSl7IHBhaW50KGUsIGl0ZW1zW2srK10sICdjYXJkJyk7IH0pO1xuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgnZGF0YS1rdGgtbGFuZycsIGxhbmcpO1xufVxuaWYgKHBpY2tlZC5sZW5ndGggPj0gbmVlZCkgeyBhcHBseShwaWNrZWQpOyByZXR1cm47IH1cblByb21pc2UuYWxsKFtmZXRjaFBhZ2UoMiksIGZldGNoUGFnZSgzKSwgZmV0Y2hQYWdlKDQpXSkudGhlbihmdW5jdGlvbihwYWdlcyl7XG52YXIgbW9yZSA9IGRlZHVwZShwaWNrZWQuY29uY2F0KG1hdGNoKFtdLmNvbmNhdC5hcHBseShbXSwgcGFnZXMpKSkpO1xuYXBwbHkobW9yZSk7XG59KTtcbn1cbmZ1bmN0aW9uIG1vdW50VG9nZ2xlKCl7XG52YXIgaG9zdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5oZWFkZXItbWVtYmVyJyk7XG5pZiAoIWhvc3QgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmt0aC1sYW5ndG9nZ2xlJykpIHJldHVybjtcbnZhciBjdXIgPSBnZXRMYW5nKCk7XG52YXIgYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5ib3guY2xhc3NOYW1lID0gJ2t0aC1sYW5ndG9nZ2xlJztcbmJveC5pbm5lckhUTUwgPSAnPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1sPVwia29cIiBhcmlhLXByZXNzZWQ9XCInICsgKGN1ciA9PT0gJ2tvJykgKyAnXCI+7ZWc6rWt7Ja0PC9idXR0b24+JyArXG4nPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1sPVwiZW5cIiBhcmlhLXByZXNzZWQ9XCInICsgKGN1ciA9PT0gJ2VuJykgKyAnXCI+RW5nbGlzaDwvYnV0dG9uPic7XG5ib3guYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7XG52YXIgYiA9IGV2LnRhcmdldC5jbG9zZXN0KCdidXR0b24nKTsgaWYgKCFiKSByZXR1cm47XG5zZXRMYW5nKGIuZ2V0QXR0cmlidXRlKCdkYXRhLWwnKSk7XG5sb2NhdGlvbi5yZWxvYWQoKTtcbn0pO1xuaG9zdC5pbnNlcnRCZWZvcmUoYm94LCBob3N0LmZpcnN0Q2hpbGQpO1xufVxuZnVuY3Rpb24gYm9vdCgpe1xudHJ5IHsgbW91bnRUb2dnbGUoKTsgfSBjYXRjaChlKXt9XG50cnkgeyBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmt0aC1oZXJvLW1haW4nKSkgcnVuKGdldExhbmcoKSk7IH0gY2F0Y2goZSl7fVxufVxuaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGJvb3QpOyBlbHNlIGJvb3QoKTtcbn0pKCk7XG48L3NjcmlwdD5cbjxzdHlsZSBpZD1cImt0aC1jb250cmFzdC1maXhcIj5ib2R5IC5tYWlue2JhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50fS5rdGgtaGVyby1tYWluIC5rdGgtYmFkZ2UsLmt0aC1oZXJvLWxlZnQgLmt0aC1iYWRnZXtjb2xvcjojRjJFRkU3ICFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTo4cHh9Lmt0aC1oZXJvLW1haW4gLmt0aC1iYWRnZTo6YWZ0ZXJ7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC40NSkgIWltcG9ydGFudH0ua3RoLWhlcm8tdGl0bGV7Y29sb3I6I2ZmZn0ua3RoLWhlcm8tYm9keSAua3RoLW1ldGEsLmt0aC1oZXJvLWJvZHkgLmt0aC1tZXRhIHNwYW57Y29sb3I6cmdiYSgyNTUsMjU1LDI1NSwuNzIpICFpbXBvcnRhbnR9Lmt0aC1zaG9wLXN0cmlwe2JhY2tncm91bmQ6I0ZBRjhGNCAhaW1wb3J0YW50O2JhY2tncm91bmQtaW1hZ2U6bm9uZSAhaW1wb3J0YW50fS5rdGgtc2hvcC1zdHJpcC1uYW1le2NvbG9yOiMxNDE1MUEgIWltcG9ydGFudH0ua3RoLXNob3Atc3RyaXAtcHJpY2V7Y29sb3I6IzlBN0IzRiAhaW1wb3J0YW50fS5rdGgteXR7YmFja2dyb3VuZDojRkFGOEY0ICFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lICFpbXBvcnRhbnR9Lmt0aC15dC10dGx7Y29sb3I6IzNBM0I0MCAhaW1wb3J0YW50fS5rdGgteXQtdGFie2NvbG9yOiM2QjY4NjIgIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCAjRDhEMkM0ICFpbXBvcnRhbnR9Lmt0aC15dC10YWIuYWN0aXZle2NvbG9yOiNmZmYgIWltcG9ydGFudDtiYWNrZ3JvdW5kOiMxNDE1MUEgIWltcG9ydGFudDtib3JkZXItY29sb3I6IzE0MTUxQSAhaW1wb3J0YW50fS5rdGgtbmwtdGl0bGV7Y29sb3I6I2ZmZiAhaW1wb3J0YW50O2ZvbnQtZmFtaWx5OnZhcigtLWt0aC1zZXJpZil9Lmt0aC1ubC1zdWIsLmt0aC1ubCBwLC5rdGgtbmwgc21hbGwsLmt0aC1ubCBsYWJlbHtjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LC42OCkgIWltcG9ydGFudH0ua3RoLW5sIGF7Y29sb3I6I0M2QTY2NyAhaW1wb3J0YW50fS5oZWFkZXItZGF0ZXtjb2xvcjojNzc3NTZFICFpbXBvcnRhbnR9PC9zdHlsZT5cbjxzdHlsZSBpZD1cImt0aC10eXBlLXBvbGlzaFwiPi5rdGgtY2FyZC10aXRsZXtmb250LXNpemU6MTguNXB4ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zNiAhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi0uMDIxZW0gIWltcG9ydGFudDttYXJnaW46MTFweCAwIDlweCAhaW1wb3J0YW50O2NvbG9yOiMxNDE1MUEgIWltcG9ydGFudDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDozOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59Lmt0aC1jYXJkOmhvdmVyIC5rdGgtY2FyZC10aXRsZXtjb2xvcjojMTYzMDVDICFpbXBvcnRhbnR9Lmt0aC1jYXJkLWV4Y2VycHR7bWF4LWhlaWdodDpub25lICFpbXBvcnRhbnQ7Zm9udC1zaXplOjEzLjVweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuNjYgIWltcG9ydGFudDtjb2xvcjojNTU1MzRFICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMDRlbSAhaW1wb3J0YW50O2Rpc3BsYXk6LXdlYmtpdC1ib3ggIWltcG9ydGFudDstd2Via2l0LWxpbmUtY2xhbXA6MiAhaW1wb3J0YW50Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbCAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50O21hcmdpbjowIDAgMTRweCAhaW1wb3J0YW50Oy13ZWJraXQtbWFzay1pbWFnZTpub25lICFpbXBvcnRhbnQ7bWFzay1pbWFnZTpub25lICFpbXBvcnRhbnR9Lmt0aC1jYXJkLWV4Y2VycHQ6OmFmdGVye2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5rdGgtbWV0YSwua3RoLW1ldGEtLXNte2ZvbnQtc2l6ZToxMS41cHggIWltcG9ydGFudDtjb2xvcjojOEE4NzgxICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjAxZW0gIWltcG9ydGFudDtmb250LXdlaWdodDo0MDAgIWltcG9ydGFudH0ua3RoLW1ldGEtYXV0aG9ye2NvbG9yOiM2RTZCNjUgIWltcG9ydGFudH0ua3RoLWhlcm8tdGl0bGV7Zm9udC1zaXplOjMxcHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjMgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAyNGVtICFpbXBvcnRhbnQ7dGV4dC13cmFwOmJhbGFuY2V9Lmt0aC1oZXJvLXNpZGUtdGl0bGV7Zm9udC1zaXplOjE1LjVweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuNDUgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAxOGVtICFpbXBvcnRhbnR9Lmt0aC1zZWN0aW9uLXRpdGxlLC5rdGgtc2hvcC1zdHJpcC10aXRsZSwua3RoLXl0LXRpdGxle2ZvbnQtZmFtaWx5OnZhcigtLWt0aC1zYW5zKSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMS41cHggIWltcG9ydGFudDtmb250LXdlaWdodDo3MDAgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMmVtICFpbXBvcnRhbnQ7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlICFpbXBvcnRhbnQ7Y29sb3I6IzE0MTUxQSAhaW1wb3J0YW50O2JvcmRlci1sZWZ0OjAgIWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MCAhaW1wb3J0YW50fS5rdGgtc2hvcC1zdHJpcC10aXRsZTo6YmVmb3JlLC5rdGgteXQtdGl0bGU6OmJlZm9yZSwua3RoLXNob3Atc3RyaXAtaGVhZCBpbWcsLmt0aC1zaG9wLXN0cmlwLWhlYWQgc3Zne2Rpc3BsYXk6bm9uZSAhaW1wb3J0YW50fS5rdGgtc2hvcC1zdHJpcC1uYW1le2ZvbnQtc2l6ZToxMy41cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjQ1ICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMTVlbSAhaW1wb3J0YW50O2NvbG9yOiMxNDE1MUEgIWltcG9ydGFudDttYXJnaW4tdG9wOjEycHggIWltcG9ydGFudDtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59Lmt0aC1zaG9wLXN0cmlwLXByaWNle2ZvbnQtc2l6ZToxMXB4ICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjAzZW0gIWltcG9ydGFudH0ua3RoLXl0LXR0bHtmb250LXNpemU6MTMuNXB4ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS41ICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMTJlbSAhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjUwMCAhaW1wb3J0YW50O2NvbG9yOiMzQTNCNDAgIWltcG9ydGFudH0ua3RoLWNhcmQtaW1nLC5rdGgtaGVyby1zaWRlLWltZywua3RoLXl0LXRodW1iLC5rdGgtc2hvcC1zdHJpcC10aHVtYntib3JkZXItcmFkaXVzOjNweCAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbn0ua3RoLWNhcmQtaW1nIGltZywua3RoLXl0LXRodW1iIGltZ3t0cmFuc2l0aW9uOnRyYW5zZm9ybSAuNXMgZWFzZX0ua3RoLWNhcmQ6aG92ZXIgLmt0aC1jYXJkLWltZyBpbWd7dHJhbnNmb3JtOnNjYWxlKDEuMDI1KX0ua3RoLXBhZ2luYXRpb257bWFyZ2luOjEwcHggMCAwICFpbXBvcnRhbnQ7cGFkZGluZzowICFpbXBvcnRhbnR9Lmt0aC1wYWdpbmF0aW9uIC5wYWdpbmF0aW9ue21hcmdpbjowICFpbXBvcnRhbnQ7cGFkZGluZzoxNHB4IDAgIWltcG9ydGFudH0ubnl0LXBvc3QtdGl0bGV7Zm9udC1zaXplOjM2cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjI4ICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMjZlbSAhaW1wb3J0YW50fS5ueXQtcG9zdC1jb250ZW50IC5jLWNvbnRlbnR7Zm9udC1zaXplOjE3LjVweCAhaW1wb3J0YW50O2xpbmUtaGVpZ2h0OjEuODUgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAwNmVtICFpbXBvcnRhbnQ7Y29sb3I6IzFFMUYyNCAhaW1wb3J0YW50fUBtZWRpYSAobWF4LXdpZHRoOjkwMHB4KXsua3RoLWhlcm8tdGl0bGV7Zm9udC1zaXplOjI0cHggIWltcG9ydGFudH0ua3RoLWNhcmQtdGl0bGV7Zm9udC1zaXplOjE3cHggIWltcG9ydGFudH19PC9zdHlsZT5cbjxzY3JpcHQgaWQ9XCJrdGgtbWV0YS1sb2NhbGl6ZVwiPlxuKGZ1bmN0aW9uICgpIHtcbnZhciBNT05USCA9IHsgSmFudWFyeToxLEZlYnJ1YXJ5OjIsTWFyY2g6MyxBcHJpbDo0LE1heTo1LEp1bmU6Nixcbkp1bHk6NyxBdWd1c3Q6OCxTZXB0ZW1iZXI6OSxPY3RvYmVyOjEwLE5vdmVtYmVyOjExLERlY2VtYmVyOjEyIH07XG5mdW5jdGlvbiBXKGZuKXsgd2luZG93Ll9fS1RIX1dSSVRFID0gdHJ1ZTsgdHJ5eyBmbigpOyB9IGZpbmFsbHkgeyB3aW5kb3cuX19LVEhfV1JJVEUgPSBmYWxzZTsgfSB9XG5mdW5jdGlvbiBsYW5nKCl7IHRyeXsgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdrdGhfbGFuZycpPT09J2VuJyA/ICdlbicgOiAna28nOyB9Y2F0Y2goZSl7IHJldHVybiAna28nOyB9IH1cbmZ1bmN0aW9uIHJ1bigpe1xuaWYgKGxhbmcoKSAhPT0gJ2tvJykgcmV0dXJuO1xudmFyIGVscyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5rdGgtbWV0YSwgLmt0aC1tZXRhLS1zbSwgLmt0aC1jYXJkLWRhdGUsIC5rdGgtbWV0YS1kYXRlJyk7XG5bXS5mb3JFYWNoLmNhbGwoZWxzLCBmdW5jdGlvbiAobSkge1xudmFyIGggPSBtLmlubmVySFRNTDtcbnZhciBuID0gaC5yZXBsYWNlKC9cXGIoSmFudWFyeXxGZWJydWFyeXxNYXJjaHxBcHJpbHxNYXl8SnVuZXxKdWx5fEF1Z3VzdHxTZXB0ZW1iZXJ8T2N0b2JlcnxOb3ZlbWJlcnxEZWNlbWJlcilcXHMrKFxcZHsxLDJ9KSxcXHMqKFxcZHs0fSkvZyxcbmZ1bmN0aW9uIChfLCBtbywgZCwgeSkgeyByZXR1cm4geSArICfrhYQgJyArIE1PTlRIW21vXSArICfsm5QgJyArIGQgKyAn7J28JzsgfSlcbi5yZXBsYWNlKC9KdW5nXFxzK0hhbi9nLCAn7ZWc7KCV7ZuIJyk7XG5pZiAobiAhPT0gaCkgVyhmdW5jdGlvbigpeyBtLmlubmVySFRNTCA9IG47IH0pO1xufSk7XG59XG5mdW5jdGlvbiBib290KCl7IFswLDcwMCwxNTAwLDI2MDAsNDAwMF0uZm9yRWFjaChmdW5jdGlvbihkKXsgc2V0VGltZW91dChmdW5jdGlvbigpeyB0cnl7IHJ1bigpOyB9Y2F0Y2goZSl7fSB9LCBkKTsgfSk7IH1cbmlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBib290KTsgZWxzZSBib290KCk7XG59KSgpO1xuPC9zY3JpcHQ+XG48c3R5bGUgaWQ9XCJrdGgtdHlwZS1mb3JjZVwiPi5rdGgtY2FyZC1leGNlcnB0Lmt0aC1jYXJkLWV4Y2VycHQua3RoLWNhcmQtZXhjZXJwdC5rdGgtY2FyZC1leGNlcnB0e21heC1oZWlnaHQ6bm9uZSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMy41cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjY2ICFpbXBvcnRhbnQ7Y29sb3I6IzU1NTM0RSAhaW1wb3J0YW50O2Rpc3BsYXk6LXdlYmtpdC1ib3ggIWltcG9ydGFudDstd2Via2l0LWxpbmUtY2xhbXA6MiAhaW1wb3J0YW50Oy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbCAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50O21hcmdpbjowIDAgMTRweCAhaW1wb3J0YW50fS5rdGgtY2FyZC10aXRsZS5rdGgtY2FyZC10aXRsZS5rdGgtY2FyZC10aXRsZS5rdGgtY2FyZC10aXRsZXtmb250LXNpemU6MTguNXB4ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS4zNiAhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi0uMDIxZW0gIWltcG9ydGFudDtjb2xvcjojMTQxNTFBICFpbXBvcnRhbnQ7bWFyZ2luOjExcHggMCA5cHggIWltcG9ydGFudH0ua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGUua3RoLWhlcm8tdGl0bGV7Zm9udC1zaXplOjMxcHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjMgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzotLjAyNGVtICFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiAhaW1wb3J0YW50fS5rdGgtaGVyby1zaWRlLXRpdGxlLmt0aC1oZXJvLXNpZGUtdGl0bGUua3RoLWhlcm8tc2lkZS10aXRsZS5rdGgtaGVyby1zaWRlLXRpdGxle2ZvbnQtc2l6ZToxNS41cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjQ1ICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LS4wMThlbSAhaW1wb3J0YW50fS5rdGgtbWV0YS5rdGgtbWV0YS5rdGgtbWV0YS5rdGgtbWV0YSwua3RoLW1ldGEtLXNtLmt0aC1tZXRhLS1zbS5rdGgtbWV0YS0tc20ua3RoLW1ldGEtLXNte2ZvbnQtc2l6ZToxMS41cHggIWltcG9ydGFudDtjb2xvcjojOEE4NzgxICFpbXBvcnRhbnQ7bGV0dGVyLXNwYWNpbmc6LjAxZW0gIWltcG9ydGFudH0ua3RoLXl0LXR0bC5rdGgteXQtdHRsLmt0aC15dC10dGwua3RoLXl0LXR0bHtmb250LXNpemU6MTMuNXB4ICFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS41ICFpbXBvcnRhbnQ7Y29sb3I6IzNBM0I0MCAhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjUwMCAhaW1wb3J0YW50fS5rdGgtc2hvcC1zdHJpcC1uYW1lLmt0aC1zaG9wLXN0cmlwLW5hbWUua3RoLXNob3Atc3RyaXAtbmFtZS5rdGgtc2hvcC1zdHJpcC1uYW1le2ZvbnQtc2l6ZToxMy41cHggIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjQ1ICFpbXBvcnRhbnQ7Y29sb3I6IzE0MTUxQSAhaW1wb3J0YW50fS5rdGgtYmFkZ2Uua3RoLWJhZGdlLmt0aC1iYWRnZS5rdGgtYmFkZ2V7YmFja2dyb3VuZDp0cmFuc3BhcmVudCAhaW1wb3J0YW50O3BhZGRpbmc6MCAhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MCAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMC41cHggIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMTZlbSAhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjcwMCAhaW1wb3J0YW50fS5rdGgtaGVyby1tYWluIC5rdGgtYmFkZ2Uua3RoLWJhZGdlLmt0aC1iYWRnZS5rdGgtYmFkZ2V7Y29sb3I6I0VGRUFFMCAhaW1wb3J0YW50fTwvc3R5bGU+XG48c3R5bGUgaWQ9XCJrdGgtdGh1bWItcmF0aW9cIj4ua3RoLWNhcmQtaW1nLmt0aC1jYXJkLWltZy5rdGgtY2FyZC1pbWd7YXNwZWN0LXJhdGlvOjQvMyAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7bWluLWhlaWdodDowICFpbXBvcnRhbnQ7bWF4LWhlaWdodDpub25lICFpbXBvcnRhbnQ7YmFja2dyb3VuZDojRUZFREU4ICFpbXBvcnRhbnR9Lmt0aC1jYXJkLWltZy5rdGgtY2FyZC1pbWcgaW1ne3dpZHRoOjEwMCUgIWltcG9ydGFudDtoZWlnaHQ6MTAwJSAhaW1wb3J0YW50O29iamVjdC1maXQ6Y292ZXIgIWltcG9ydGFudDtvYmplY3QtcG9zaXRpb246Y2VudGVyICFpbXBvcnRhbnR9Lmt0aC1oZXJvLXNpZGUtaW1nLmt0aC1oZXJvLXNpZGUtaW1nLmt0aC1oZXJvLXNpZGUtaW1ne2FzcGVjdC1yYXRpbzo0LzMgIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50O2JhY2tncm91bmQ6I0VGRURFOCAhaW1wb3J0YW50fS5rdGgtaGVyby1zaWRlLWltZy5rdGgtaGVyby1zaWRlLWltZyBpbWd7d2lkdGg6MTAwJSAhaW1wb3J0YW50O2hlaWdodDoxMDAlICFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpjb3ZlciAhaW1wb3J0YW50fS5rdGgtaGVyby1pbWcua3RoLWhlcm8taW1nLmt0aC1oZXJvLWltZ3thc3BlY3QtcmF0aW86NC8zICFpbXBvcnRhbnQ7aGVpZ2h0OmF1dG8gIWltcG9ydGFudDtiYWNrZ3JvdW5kOiMxNDE1MUEgIWltcG9ydGFudH0ua3RoLWhlcm8taW1nLmt0aC1oZXJvLWltZyBpbWd7d2lkdGg6MTAwJSAhaW1wb3J0YW50O2hlaWdodDoxMDAlICFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpjb3ZlciAhaW1wb3J0YW50fS5rdGgteXQtdGh1bWIua3RoLXl0LXRodW1iLmt0aC15dC10aHVtYnthc3BlY3QtcmF0aW86MTYvOSAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7YmFja2dyb3VuZDojRUZFREU4ICFpbXBvcnRhbnR9Lmt0aC15dC10aHVtYi5rdGgteXQtdGh1bWIgaW1ne3dpZHRoOjEwMCUgIWltcG9ydGFudDtoZWlnaHQ6MTAwJSAhaW1wb3J0YW50O29iamVjdC1maXQ6Y292ZXIgIWltcG9ydGFudH0ua3RoLXNob3Atc3RyaXAtdGh1bWIua3RoLXNob3Atc3RyaXAtdGh1bWIua3RoLXNob3Atc3RyaXAtdGh1bWJ7YXNwZWN0LXJhdGlvOjQvMyAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7YmFja2dyb3VuZDojZmZmICFpbXBvcnRhbnR9Lmt0aC1zaG9wLXN0cmlwLXRodW1iLmt0aC1zaG9wLXN0cmlwLXRodW1iIGltZ3t3aWR0aDoxMDAlICFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUgIWltcG9ydGFudDtvYmplY3QtZml0OmNvdmVyICFpbXBvcnRhbnR9PC9zdHlsZT5cbjxzdHlsZSBpZD1cImt0aC1jb250ZW50LXNhZmVcIj4uYy1jb250ZW50IGltZ3ttYXgtd2lkdGg6MTAwJSAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnR9LmMtY29udGVudCBmaWd1cmUsLmMtY29udGVudCAua2ctY2FyZCwuYy1jb250ZW50IHRhYmxle21heC13aWR0aDoxMDAlICFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVufS5jLWNvbnRlbnQgdGFibGV7ZGlzcGxheTpibG9jaztvdmVyZmxvdy14OmF1dG99LnBzLWl0ZW0taW1ne2ZsZXg6bm9uZSAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiAhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6M3B4fS5wcy1pdGVtLWltZyBpbWd7d2lkdGg6MTAwJSAhaW1wb3J0YW50O2hlaWdodDoxMDAlICFpbXBvcnRhbnQ7b2JqZWN0LWZpdDpjb3ZlciAhaW1wb3J0YW50fS5wcy1pdGVte2FsaWduLWl0ZW1zOmNlbnRlciAhaW1wb3J0YW50O2dhcDoxNHB4ICFpbXBvcnRhbnR9PC9zdHlsZT5cbjxzdHlsZSBpZD1cImt0aC1maW5hbC1wYXNzXCI+Lmt0aC1jYXJkLWltZy5rdGgtY2FyZC1pbWcua3RoLWNhcmQtaW1nLmt0aC1jYXJkLWltZy5rdGgtY2FyZC1pbWd7YXNwZWN0LXJhdGlvOjQvMyAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7YmFja2dyb3VuZDojRUZFREU4ICFpbXBvcnRhbnR9Lmt0aC1oZXJvLXNpZGUtaW1nLmt0aC1oZXJvLXNpZGUtaW1nLmt0aC1oZXJvLXNpZGUtaW1nLmt0aC1oZXJvLXNpZGUtaW1ne2FzcGVjdC1yYXRpbzo0LzMgIWltcG9ydGFudDtoZWlnaHQ6YXV0byAhaW1wb3J0YW50fS5rdGgtc2VjdGlvbnttYXJnaW4tYm90dG9tOjU2cHggIWltcG9ydGFudH0ua3RoLXNlY3Rpb24taGVhZHttYXJnaW4tYm90dG9tOjI0cHggIWltcG9ydGFudH0ua3RoLWdyaWR7Z2FwOjM2cHggMzBweCAhaW1wb3J0YW50fS5rdGgtY2FyZC1ib2R5e3BhZGRpbmc6MCAhaW1wb3J0YW50fS5rdGgtaGVyby13cmFwe21hcmdpbi1ib3R0b206NTJweCAhaW1wb3J0YW50fS5rdGgtaGVyby1ib2R5e3BhZGRpbmc6MjJweCAyNHB4ICFpbXBvcnRhbnR9Lmt0aC1oZXJvLWJvZHk6OmJlZm9yZXtjb250ZW50OlwiXCI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OjA7Ym90dG9tOjA7dG9wOi00MCU7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gdG9wLHJnYmEoMTAsMTEsMTUsLjkyKSAwJSxyZ2JhKDEwLDExLDE1LC43MikgNDUlLHJnYmEoMTAsMTEsMTUsMCkgMTAwJSk7ei1pbmRleDowO3BvaW50ZXItZXZlbnRzOm5vbmV9Lmt0aC1oZXJvLWJvZHk+Kntwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjF9Lmt0aC1oZXJvLW92ZXJsYXl7ZGlzcGxheTpub25lICFpbXBvcnRhbnR9Lmt0aC1oZXJvLXNpZGUtY2FyZHtwYWRkaW5nOjE4cHggMCAhaW1wb3J0YW50O2dhcDoxNnB4ICFpbXBvcnRhbnQ7YWxpZ24taXRlbXM6ZmxleC1zdGFydCAhaW1wb3J0YW50fS5rdGgtaGVyby1zaWRlLWltZ3t3aWR0aDo4OHB4ICFpbXBvcnRhbnQ7ZmxleDpub25lICFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czozcHggIWltcG9ydGFudH0ua3RoLXNob3Atc3RyaXAsLmt0aC15dHtib3JkZXItdG9wOjFweCBzb2xpZCAjRTNERkQ2ICFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0UzREZENiAhaW1wb3J0YW50O3BhZGRpbmc6NDZweCAwICFpbXBvcnRhbnQ7bWFyZ2luOjU2cHggMCAhaW1wb3J0YW50fS5rdGgtbmx7bWFyZ2luLXRvcDowICFpbXBvcnRhbnQ7cGFkZGluZzo2NnB4IDAgIWltcG9ydGFudH0uc2l0ZS1uYXYgYSwubmF2IGF7bGV0dGVyLXNwYWNpbmc6LjFlbSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMS41cHggIWltcG9ydGFudDtmb250LXdlaWdodDo2MDAgIWltcG9ydGFudH0uaGVhZGVyLW1lbWJlci1idG57Zm9udC1zaXplOjExcHggIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMTJlbSAhaW1wb3J0YW50O3BhZGRpbmc6OHB4IDE1cHggIWltcG9ydGFudH0ua3RoLWNhcmQ6aG92ZXIgLmt0aC1jYXJkLXRpdGxlLC5rdGgtaGVyby1zaWRlLWNhcmQ6aG92ZXIgLmt0aC1oZXJvLXNpZGUtdGl0bGV7Y29sb3I6IzE2MzA1QyAhaW1wb3J0YW50fWE6Zm9jdXMtdmlzaWJsZXtvdXRsaW5lOjJweCBzb2xpZCAjMTYzMDVDO291dGxpbmUtb2Zmc2V0OjNweDtib3JkZXItcmFkaXVzOjJweH08L3N0eWxlPlxuPHN0eWxlIGlkPVwia3RoLXJhdGlvLWZpbmFsXCI+Lmt0aC1jYXJkLWltZy5rdGgtY2FyZC1pbWcua3RoLWNhcmQtaW1nLmt0aC1jYXJkLWltZy5rdGgtY2FyZC1pbWd7YXNwZWN0LXJhdGlvOjQvMyAhaW1wb3J0YW50O2hlaWdodDphdXRvICFpbXBvcnRhbnQ7bWluLWhlaWdodDowICFpbXBvcnRhbnQ7bWF4LWhlaWdodDpub25lICFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50O2JhY2tncm91bmQ6I0VGRURFOCAhaW1wb3J0YW50fS5rdGgtY2FyZC1pbWcua3RoLWNhcmQtaW1nLmt0aC1jYXJkLWltZy5rdGgtY2FyZC1pbWcua3RoLWNhcmQtaW1nPmltZ3t3aWR0aDoxMDAlICFpbXBvcnRhbnQ7aGVpZ2h0OjEwMCUgIWltcG9ydGFudDtvYmplY3QtZml0OmNvdmVyICFpbXBvcnRhbnQ7ZGlzcGxheTpibG9jayAhaW1wb3J0YW50fTwvc3R5bGU+XG48c2NyaXB0IGlkPVwia3RoLWxpc3RpbmctbGFuZ1wiPlxuKGZ1bmN0aW9uICgpIHtcbmZ1bmN0aW9uIGlzS28ocyl7IHJldHVybiAvW+qwgC3tnqNdLy50ZXN0KHMgfHwgJycpOyB9XG5mdW5jdGlvbiBnZXRMYW5nKCl7XG50cnkge1xudmFyIHYgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgna3RoX2xhbmcnKTtcbmlmICh2ID09PSAnZW4nIHx8IHYgPT09ICdrbycpIHJldHVybiB2O1xudmFyIG5hdiA9IChuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgJ2tvJykudG9Mb3dlckNhc2UoKTtcbnJldHVybiBuYXYuaW5kZXhPZigna28nKSA9PT0gMCA/ICdrbycgOiAnZW4nO1xufSBjYXRjaChlKXsgcmV0dXJuICdrbyc7IH1cbn1cbmZ1bmN0aW9uIFcoZm4peyB3aW5kb3cuX19LVEhfV1JJVEUgPSB0cnVlOyB0cnl7IGZuKCk7IH0gZmluYWxseSB7IHdpbmRvdy5fX0tUSF9XUklURSA9IGZhbHNlOyB9IH1cbmZ1bmN0aW9uIHR4dChlbCwgcyl7IGlmIChlbCkgVyhmdW5jdGlvbigpeyBlbC50ZXh0Q29udGVudCA9IHM7IH0pOyB9XG5mdW5jdGlvbiByZWFkKGNhcmQpe1xudmFyIGltZyA9IGNhcmQucXVlcnlTZWxlY3RvcignaW1nJyk7XG5yZXR1cm4ge1xuaHJlZjogY2FyZC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSB8fCAoY2FyZC5xdWVyeVNlbGVjdG9yKCdhJykgJiYgY2FyZC5xdWVyeVNlbGVjdG9yKCdhJykuZ2V0QXR0cmlidXRlKCdocmVmJykpIHx8ICcjJyxcbmltZzogaW1nID8gKGltZy5nZXRBdHRyaWJ1dGUoJ3NyYycpIHx8ICcnKSA6ICcnLFxuYmFkZ2U6ICgoY2FyZC5xdWVyeVNlbGVjdG9yKCcua3RoLWJhZGdlJykgfHwge30pLnRleHRDb250ZW50IHx8ICcnKS50cmltKCksXG50aXRsZTogKChjYXJkLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtY2FyZC10aXRsZScpIHx8IHt9KS50ZXh0Q29udGVudCB8fCAnJykudHJpbSgpLFxuZXhjZXJwdDogKChjYXJkLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtY2FyZC1leGNlcnB0JykgfHwge30pLnRleHRDb250ZW50IHx8ICcnKS50cmltKCksXG5tZXRhOiAoY2FyZC5xdWVyeVNlbGVjdG9yKCcua3RoLW1ldGEnKSB8fCB7fSkuaW5uZXJIVE1MIHx8ICcnXG59O1xufVxuZnVuY3Rpb24gcGFpbnQoY2FyZCwgaXQpe1xuaWYgKGNhcmQudGFnTmFtZSA9PT0gJ0EnKSBjYXJkLnNldEF0dHJpYnV0ZSgnaHJlZicsIGl0LmhyZWYpO1xudmFyIGltZyA9IGNhcmQucXVlcnlTZWxlY3RvcignaW1nJyk7XG5pZiAoaW1nICYmIGl0LmltZykge1xuaW1nLnJlbW92ZUF0dHJpYnV0ZSgnbG9hZGluZycpOyBpbWcucmVtb3ZlQXR0cmlidXRlKCdzcmNzZXQnKTsgaW1nLnJlbW92ZUF0dHJpYnV0ZSgnc2l6ZXMnKTtcbmltZy5zZXRBdHRyaWJ1dGUoJ2FsdCcsIGl0LnRpdGxlKTtcbmlmIChpbWcuZ2V0QXR0cmlidXRlKCdzcmMnKSAhPT0gaXQuaW1nKSBpbWcuc2V0QXR0cmlidXRlKCdzcmMnLCBpdC5pbWcpO1xufVxudHh0KGNhcmQucXVlcnlTZWxlY3RvcignLmt0aC1iYWRnZScpLCBpdC5iYWRnZSk7XG50eHQoY2FyZC5xdWVyeVNlbGVjdG9yKCcua3RoLWNhcmQtdGl0bGUnKSwgaXQudGl0bGUpO1xudHh0KGNhcmQucXVlcnlTZWxlY3RvcignLmt0aC1jYXJkLWV4Y2VycHQnKSwgaXQuZXhjZXJwdCk7XG52YXIgbSA9IGNhcmQucXVlcnlTZWxlY3RvcignLmt0aC1tZXRhJyk7XG5pZiAobSAmJiBpdC5tZXRhKSBXKGZ1bmN0aW9uKCl7IG0uaW5uZXJIVE1MID0gaXQubWV0YTsgfSk7XG5jYXJkLnN0eWxlLmRpc3BsYXkgPSAnJztcbn1cbmZ1bmN0aW9uIGJhc2VQYXRoKCl7XG5yZXR1cm4gbG9jYXRpb24ucGF0aG5hbWUucmVwbGFjZSgvXFwvcGFnZVxcL1xcZCtcXC8/JC8sICcvJykucmVwbGFjZSgvXFwvPyQvLCAnLycpO1xufVxuZnVuY3Rpb24gZmV0Y2hQYWdlKG4pe1xucmV0dXJuIGZldGNoKGJhc2VQYXRoKCkgKyAncGFnZS8nICsgbiArICcvJywgeyBjcmVkZW50aWFsczonc2FtZS1vcmlnaW4nIH0pXG4udGhlbihmdW5jdGlvbihyKXsgcmV0dXJuIHIub2sgPyByLnRleHQoKSA6ICcnOyB9KVxuLnRoZW4oZnVuY3Rpb24oaCl7XG5pZiAoIWgpIHJldHVybiBbXTtcbnZhciBkID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhoLCAndGV4dC9odG1sJyk7XG5yZXR1cm4gW10uc2xpY2UuY2FsbChkLnF1ZXJ5U2VsZWN0b3JBbGwoJy5rdGgtY2FyZCcpKS5tYXAocmVhZCk7XG59KVxuLmNhdGNoKGZ1bmN0aW9uKCl7IHJldHVybiBbXTsgfSk7XG59XG5mdW5jdGlvbiBydW4oKXtcbmlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnaG9tZS10ZW1wbGF0ZScpKSByZXR1cm47XG52YXIgZ3JpZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5rdGgtZ3JpZCcpO1xuaWYgKCFncmlkKSByZXR1cm47XG52YXIgY2FyZHMgPSBbXS5zbGljZS5jYWxsKGdyaWQucXVlcnlTZWxlY3RvckFsbCgnLmt0aC1jYXJkJykpO1xuaWYgKCFjYXJkcy5sZW5ndGgpIHJldHVybjtcbnZhciBsYW5nID0gZ2V0TGFuZygpO1xudmFyIGtlZXAgPSBbXSwgc3BhcmUgPSBbXTtcbmNhcmRzLmZvckVhY2goZnVuY3Rpb24oYyl7XG52YXIgdCA9ICgoYy5xdWVyeVNlbGVjdG9yKCcua3RoLWNhcmQtdGl0bGUnKSB8fCB7fSkudGV4dENvbnRlbnQgfHwgJycpLnRyaW0oKTtcbmlmICghdCkgcmV0dXJuO1xuaWYgKChpc0tvKHQpID8gJ2tvJyA6ICdlbicpID09PSBsYW5nKSBrZWVwLnB1c2goYyk7XG5lbHNlIHsgYy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyBzcGFyZS5wdXNoKGMpOyB9XG59KTtcbmlmICghc3BhcmUubGVuZ3RoKSByZXR1cm47XG52YXIgcG9vbCA9IFtdO1xuUHJvbWlzZS5hbGwoW2ZldGNoUGFnZSgyKSwgZmV0Y2hQYWdlKDMpLCBmZXRjaFBhZ2UoNCldKS50aGVuKGZ1bmN0aW9uKHBhZ2VzKXtcbnZhciBzZWVuID0ge307XG5jYXJkcy5mb3JFYWNoKGZ1bmN0aW9uKGMpeyB2YXIgaCA9IGMuZ2V0QXR0cmlidXRlKCdocmVmJyk7IGlmIChoKSBzZWVuW2hdID0gMTsgfSk7XG5bXS5jb25jYXQuYXBwbHkoW10sIHBhZ2VzKS5mb3JFYWNoKGZ1bmN0aW9uKGl0KXtcbmlmICghaXQudGl0bGUgfHwgc2VlbltpdC5ocmVmXSkgcmV0dXJuO1xuaWYgKChpc0tvKGl0LnRpdGxlKSA/ICdrbycgOiAnZW4nKSAhPT0gbGFuZykgcmV0dXJuO1xuc2VlbltpdC5ocmVmXSA9IDE7IHBvb2wucHVzaChpdCk7XG59KTtcbnNwYXJlLmZvckVhY2goZnVuY3Rpb24oYyl7IHZhciBpdCA9IHBvb2wuc2hpZnQoKTsgaWYgKGl0KSBwYWludChjLCBpdCk7IH0pO1xufSk7XG59XG52YXIgZG9uZSA9IGZhbHNlO1xuZnVuY3Rpb24gYm9vdCgpe1xuaWYgKGRvbmUpIHJldHVybjtcbnRyeSB7XG52YXIgZyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5rdGgtZ3JpZCcpO1xuaWYgKCFnIHx8ICFnLnF1ZXJ5U2VsZWN0b3IoJy5rdGgtY2FyZCcpKSByZXR1cm47XG5ydW4oKTtcbmRvbmUgPSB0cnVlO1xufSBjYXRjaChlKXt9XG59XG5mdW5jdGlvbiBzY2hlZHVsZSgpeyBbMCwzMDAsODAwLDE2MDAsMzAwMF0uZm9yRWFjaChmdW5jdGlvbihkKXsgc2V0VGltZW91dChib290LCBkKTsgfSk7IH1cbmlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAnbG9hZGluZycpIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBzY2hlZHVsZSk7IGVsc2Ugc2NoZWR1bGUoKTtcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgc2NoZWR1bGUpO1xufSkoKTtcbjwvc2NyaXB0PlxuPHN0eWxlIGlkPVwia3RoLXBhbGV0dGVcIj4uc2l0ZS1mb290ZXJ7YmFja2dyb3VuZDojRkFGOEY0ICFpbXBvcnRhbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lICFpbXBvcnRhbnQ7Ym9yZGVyLXRvcDoxcHggc29saWQgI0UzREZENiAhaW1wb3J0YW50O2NvbG9yOiMzQTNCNDAgIWltcG9ydGFudH0uc2l0ZS1mb290ZXIgYXtjb2xvcjojM0EzQjQwICFpbXBvcnRhbnR9LnNpdGUtZm9vdGVyIGE6aG92ZXJ7Y29sb3I6IzE2MzA1QyAhaW1wb3J0YW50fS5mb290ZXItbmF2LWxhYmVse2NvbG9yOiM4QTg3ODEgIWltcG9ydGFudDtsZXR0ZXItc3BhY2luZzouMTZlbSAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxMXB4ICFpbXBvcnRhbnR9Lm5leHQtcGFnZSwucHJldi1wYWdlLC5wYWdpbmF0aW9uIGEsLnBhZ2luYXRpb24gc3BhbntiYWNrZ3JvdW5kOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCAjRDhEMkM0ICFpbXBvcnRhbnQ7Y29sb3I6IzNBM0I0MCAhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MnB4ICFpbXBvcnRhbnQ7Zm9udC1zaXplOjExLjVweCAhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4xZW0gIWltcG9ydGFudDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2V9Lm5leHQtcGFnZTpob3ZlciwucHJldi1wYWdlOmhvdmVye2JhY2tncm91bmQ6IzE0MTUxQSAhaW1wb3J0YW50O2NvbG9yOiNmZmYgIWltcG9ydGFudDtib3JkZXItY29sb3I6IzE0MTUxQSAhaW1wb3J0YW50fS50YWctaGVhZGVyLC5hcmNoaXZlLWhlYWRlcixbY2xhc3MqPVwidGFnLWhlcm9cIl0sW2NsYXNzKj1cImFyY2hpdmUtaGVyb1wiXXtiYWNrZ3JvdW5kOiNGQUY4RjQgIWltcG9ydGFudDtiYWNrZ3JvdW5kLWltYWdlOm5vbmUgIWltcG9ydGFudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRTNERkQ2ICFpbXBvcnRhbnR9LnRhZy10ZW1wbGF0ZSAua3RoLWJhZGdlLC50YWctdGVtcGxhdGUgLmtpY2tlcntjb2xvcjojMTYzMDVDICFpbXBvcnRhbnR9LnNpdGUtbmF2IGlucHV0LC5uYXYgaW5wdXQsaW5wdXRbdHlwZT1cInNlYXJjaFwiXXtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7Ym9yZGVyOjAgIWltcG9ydGFudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRDhEMkM0ICFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czowICFpbXBvcnRhbnQ7Zm9udC1zaXplOjEyLjVweCAhaW1wb3J0YW50O2NvbG9yOiMzQTNCNDAgIWltcG9ydGFudH0ua3RoLXl0LXRhYi5hY3RpdmUsLmt0aC1zaG9wLXN0cmlwLXByaWNle2NvbG9yOiM5QTdCM0YgIWltcG9ydGFudH0uaGVhZGVyLW1lbWJlci1idG4tLXN1YnNjcmliZXtiYWNrZ3JvdW5kOiMxNDE1MUEgIWltcG9ydGFudDtib3JkZXItY29sb3I6IzE0MTUxQSAhaW1wb3J0YW50fS5jLWNvbnRlbnQgYXtjb2xvcjojMTYzMDVDICFpbXBvcnRhbnQ7dGV4dC11bmRlcmxpbmUtb2Zmc2V0OjNweDt0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOjFweH08L3N0eWxlPlxuPHNjcmlwdCBpZD1cImt0aC15dC1hdXRvXCI+XG4oZnVuY3Rpb24gKCkge1xudmFyIEFQSV9LRVkgPSB3aW5kb3cuS1RIX1lUX0tFWSB8fCAnJztcbmlmICghQVBJX0tFWSkgcmV0dXJuO1xudmFyIENIID0gW1xueyBoYW5kbGU6ICdAa2VudGVydGVjaGh1YicsICAgICAgICB0YWtlOiAxMiwgZ3JpZDogJyN5dC1rcicgfSxcbnsgaGFuZGxlOiAnQGtlbnRlcnRlY2hodWJfZ2xvYmFsJywgdGFrZTogMTIsIGdyaWQ6ICcjeXQtZ2xvYmFsJyB9XG5dO1xudmFyIENBQ0hFID0gJ2t0aF95dF9jYWNoZTInLCBIT1VSUyA9IDY7XG5mdW5jdGlvbiBlc2Mocyl7IHJldHVybiBTdHJpbmcoc3x8JycpLnJlcGxhY2UoL1smPD5cIl0vZyxmdW5jdGlvbihjKXtyZXR1cm4geycmJzonJmFtcDsnLCc8JzonJmx0OycsJz4nOicmZ3Q7JywnXCInOicmcXVvdDsnfVtjXTt9KTsgfVxuZnVuY3Rpb24gYXBpKHApeyByZXR1cm4gZmV0Y2goJ2h0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL3lvdXR1YmUvdjMvJytwKycma2V5PScrQVBJX0tFWSkudGhlbihmdW5jdGlvbihyKXsgcmV0dXJuIHIub2s/ci5qc29uKCk6UHJvbWlzZS5yZWplY3Qoci5zdGF0dXMpOyB9KTsgfVxuZnVuY3Rpb24gcHVsbChjKXtcbnJldHVybiBhcGkoJ2NoYW5uZWxzP3BhcnQ9Y29udGVudERldGFpbHMmZm9ySGFuZGxlPScrZW5jb2RlVVJJQ29tcG9uZW50KGMuaGFuZGxlKSlcbi50aGVuKGZ1bmN0aW9uKGQpe1xudmFyIHVwID0gZC5pdGVtcyAmJiBkLml0ZW1zWzBdICYmIGQuaXRlbXNbMF0uY29udGVudERldGFpbHMucmVsYXRlZFBsYXlsaXN0cy51cGxvYWRzO1xucmV0dXJuIHVwID8gYXBpKCdwbGF5bGlzdEl0ZW1zP3BhcnQ9c25pcHBldCZtYXhSZXN1bHRzPScrYy50YWtlKycmcGxheWxpc3RJZD0nK3VwKSA6IG51bGw7XG59KVxuLnRoZW4oZnVuY3Rpb24oZCl7XG5pZiAoIWQgfHwgIWQuaXRlbXMpIHJldHVybiBbXTtcbnJldHVybiBkLml0ZW1zLm1hcChmdW5jdGlvbihpdCl7XG52YXIgcyA9IGl0LnNuaXBwZXQsIHQgPSBzLnRodW1ibmFpbHM7XG5yZXR1cm4geyBpZDpzLnJlc291cmNlSWQudmlkZW9JZCwgdGl0bGU6ZXNjKHMudGl0bGUpLCB0aHVtYjoodC5tZWRpdW18fHQuZGVmYXVsdCkudXJsIH07XG59KTtcbn0pLmNhdGNoKGZ1bmN0aW9uKCl7IHJldHVybiBbXTsgfSk7XG59XG5mdW5jdGlvbiByZW5kZXIoc2VsLCB2aWRzKXtcbnZhciBob3N0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWwpO1xuaWYgKCFob3N0IHx8ICF2aWRzLmxlbmd0aCkgcmV0dXJuO1xuW10uc2xpY2UuY2FsbChob3N0LnF1ZXJ5U2VsZWN0b3JBbGwoJy5rdGgteXQtY2FyZCcpKS5mb3JFYWNoKGZ1bmN0aW9uKG4peyBuLnJlbW92ZSgpOyB9KTtcbmhvc3QuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCB2aWRzLm1hcChmdW5jdGlvbih2KXtcbnJldHVybiAnPGEgY2xhc3M9XCJrdGgteXQtY2FyZFwiIGhyZWY9XCJodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PScrdi5pZCsnXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj4nK1xuJzxkaXYgY2xhc3M9XCJrdGgteXQtdGh1bWJcIj48aW1nIHNyYz1cIicrdi50aHVtYisnXCIgYWx0PVwiXCIgbG9hZGluZz1cImxhenlcIj48c3BhbiBjbGFzcz1cImt0aC15dC1wbGF5XCI+PC9zcGFuPjwvZGl2PicrXG4nPGRpdiBjbGFzcz1cImt0aC15dC10dGxcIj4nK3YudGl0bGUrJzwvZGl2PjwvYT4nO1xufSkuam9pbignJykpO1xufVxuZnVuY3Rpb24gcGFpbnQobWFwKXsgQ0guZm9yRWFjaChmdW5jdGlvbihjKXsgcmVuZGVyKGMuZ3JpZCwgbWFwW2MuZ3JpZF18fFtdKTsgfSk7IH1cbmZ1bmN0aW9uIGJvb3QoKXtcbmlmICghZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI3l0LWtyJykgJiYgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyN5dC1nbG9iYWwnKSkgcmV0dXJuO1xudHJ5IHtcbnZhciBoaXQgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKENBQ0hFKXx8J251bGwnKTtcbmlmIChoaXQgJiYgRGF0ZS5ub3coKS1oaXQuYXQgPCBIT1VSUyozNjAwMDAwKSB7IHBhaW50KGhpdC5tYXApOyByZXR1cm47IH1cbn0gY2F0Y2goZSl7fVxuUHJvbWlzZS5hbGwoQ0gubWFwKHB1bGwpKS50aGVuKGZ1bmN0aW9uKGxpc3RzKXtcbnZhciBtYXAgPSB7fTtcbkNILmZvckVhY2goZnVuY3Rpb24oYyxpKXsgbWFwW2MuZ3JpZF0gPSBsaXN0c1tpXTsgfSk7XG5pZiAoIWxpc3RzLnNvbWUoZnVuY3Rpb24obCl7IHJldHVybiBsLmxlbmd0aDsgfSkpIHJldHVybjtcbnBhaW50KG1hcCk7XG50cnkgeyBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShDQUNIRSwgSlNPTi5zdHJpbmdpZnkoe2F0OkRhdGUubm93KCksIG1hcDptYXB9KSk7IH0gY2F0Y2goZSl7fVxufSk7XG59XG5pZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgYm9vdCk7IGVsc2UgYm9vdCgpO1xufSkoKTtcbjwvc2NyaXB0PlxuPHNjcmlwdCBpZD1cImt0aC1sYW5nLXBhaXJcIj5cbihmdW5jdGlvbiAoKSB7XG5pZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ21ldGFbbmFtZT1cInJvYm90c1wiXScpKSB7XG52YXIgbW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdtZXRhJyk7XG5tbS5uYW1lID0gJ3JvYm90cyc7XG5tbS5jb250ZW50ID0gJ2luZGV4LCBmb2xsb3csIG1heC1pbWFnZS1wcmV2aWV3OmxhcmdlLCBtYXgtc25pcHBldDotMSwgbWF4LXZpZGVvLXByZXZpZXc6LTEnO1xuZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChtbSk7XG59XG5pZiAoIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdwb3N0LXRlbXBsYXRlJykpIHJldHVybjtcbmZ1bmN0aW9uIGlzS28ocyl7IHJldHVybiAvW+qwgC3tnqNdLy50ZXN0KHMgfHwgJycpOyB9XG52YXIgdGl0bGVFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ueXQtcG9zdC10aXRsZSwgaDEnKTtcbnZhciBsYW5nID0gaXNLbyh0aXRsZUVsID8gdGl0bGVFbC50ZXh0Q29udGVudCA6ICcnKSA/ICdrbycgOiAnZW4nO1xudmFyIGhlcmUgPSBsb2NhdGlvbi5wYXRobmFtZTsgaWYgKGhlcmUuc2xpY2UoLTEpICE9PSAnLycpIGhlcmUgKz0gJy8nO1xudmFyIG9yaWdpbiA9IGxvY2F0aW9uLm9yaWdpbjtcbltdLmZvckVhY2guY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzY3JpcHRbdHlwZT1cImFwcGxpY2F0aW9uL2xkK2pzb25cIl0nKSwgZnVuY3Rpb24gKHMpIHtcbnRyeSB7XG52YXIgZGF0YSA9IEpTT04ucGFyc2Uocy50ZXh0Q29udGVudCk7XG52YXIgYXJyID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiAoZGF0YVsnQGdyYXBoJ10gfHwgW2RhdGFdKTtcbnZhciBjaCA9IGZhbHNlO1xuYXJyLmZvckVhY2goZnVuY3Rpb24gKG8pIHsgaWYgKG8gJiYgL0FydGljbGUvLnRlc3Qob1snQHR5cGUnXSkgJiYgIW8uaW5MYW5ndWFnZSkgeyBvLmluTGFuZ3VhZ2UgPSBsYW5nOyBjaCA9IHRydWU7IH0gfSk7XG5pZiAoY2gpIHMudGV4dENvbnRlbnQgPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbn0gY2F0Y2goZSl7fVxufSk7XG59KSgpO1xuPC9zY3JpcHQ+XG48c3R5bGUgaWQ9XCJrdGgtYWJvdXQtZml4MlwiPi5hYm91dC1pbmZvLXRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZSFpbXBvcnRhbnQ7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50fS5hYm91dC1pbmZvLXRhYmxlIHRoLC5hYm91dC1pbmZvLXRhYmxlIHRke2JhY2tncm91bmQ6dHJhbnNwYXJlbnQhaW1wb3J0YW50O2NvbG9yOiMzQTNCNDAhaW1wb3J0YW50O2JvcmRlcjowIWltcG9ydGFudDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRTNERkQ2IWltcG9ydGFudDtwYWRkaW5nOjEycHggMTRweCAxMnB4IDAhaW1wb3J0YW50O2ZvbnQtc2l6ZToxNC41cHghaW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOnRvcCFpbXBvcnRhbnR9LmFib3V0LWluZm8tdGFibGUgdGgsLmFib3V0LWluZm8tdGFibGUgdGQ6Zmlyc3QtY2hpbGR7Y29sb3I6IzhBODc4MSFpbXBvcnRhbnQ7Zm9udC1zaXplOjExcHghaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4xNGVtIWltcG9ydGFudDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2UhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OjcwMCFpbXBvcnRhbnQ7d2hpdGUtc3BhY2U6bm93cmFwIWltcG9ydGFudDt3aWR0aDoxNTBweCFpbXBvcnRhbnR9LmFib3V0LWhlcm97YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7cGFkZGluZzowIDAgMjZweCFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToycHggc29saWQgIzE0MTUxQSFpbXBvcnRhbnQ7bWFyZ2luLWJvdHRvbTozNnB4IWltcG9ydGFudDt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS5hYm91dC1zdWJ0aXRsZXtjb2xvcjojM0EzQjQwIWltcG9ydGFudDtmb250LXN0eWxlOm5vcm1hbCFpbXBvcnRhbnR9LmFib3V0LXNlY3Rpb257YmFja2dyb3VuZDp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O3BhZGRpbmc6MCFpbXBvcnRhbnQ7bWFyZ2luOjAgMCA0MHB4IWltcG9ydGFudH0uYWJvdXQtc2VjdGlvbiBoMiwuYWJvdXQtc2VjdGlvbiBoM3tmb250LXNpemU6MTEuNXB4IWltcG9ydGFudDtmb250LXdlaWdodDo3MDAhaW1wb3J0YW50O2xldHRlci1zcGFjaW5nOi4yZW0haW1wb3J0YW50O3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZSFpbXBvcnRhbnQ7Y29sb3I6IzE0MTUxQSFpbXBvcnRhbnQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0UzREZENiFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206OXB4IWltcG9ydGFudDttYXJnaW4tYm90dG9tOjIwcHghaW1wb3J0YW50fS5hYm91dC1zZWN0aW9uIHAsLmFib3V0LXNlY3Rpb24gbGl7Y29sb3I6IzNBM0I0MCFpbXBvcnRhbnQ7Zm9udC1zaXplOjE1LjVweCFpbXBvcnRhbnQ7bGluZS1oZWlnaHQ6MS43NSFpbXBvcnRhbnR9LmFib3V0LWNvbnRhY3R7YmFja2dyb3VuZDojRkFGOEY0IWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICNFM0RGRDYhaW1wb3J0YW50O2JvcmRlci1sZWZ0OjJweCBzb2xpZCAjMTYzMDVDIWltcG9ydGFudDtwYWRkaW5nOjI0cHggMjZweCFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHghaW1wb3J0YW50fUBtZWRpYSAobWF4LXdpZHRoOjY0MHB4KXsuYWJvdXQtaW5mby10YWJsZSwuYWJvdXQtaW5mby10YWJsZSB0Ym9keSwuYWJvdXQtaW5mby10YWJsZSB0ciwuYWJvdXQtaW5mby10YWJsZSB0ZCwuYWJvdXQtaW5mby10YWJsZSB0aHtkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudH0uYWJvdXQtaW5mby10YWJsZSB0ZDpmaXJzdC1jaGlsZCwuYWJvdXQtaW5mby10YWJsZSB0aHtwYWRkaW5nLWJvdHRvbToycHghaW1wb3J0YW50O2JvcmRlci1ib3R0b206MCFpbXBvcnRhbnR9LmFib3V0LWluZm8tdGFibGUgdGR7cGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7d29yZC1icmVhazpicmVhay13b3JkIWltcG9ydGFudH0ua3QtYWJvdXQgLmt2IGRpdntncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIWltcG9ydGFudH19PC9zdHlsZT5cbjxzY3JpcHQgaWQ9XCJrdGgtYXV0aG9yXCI+KGZ1bmN0aW9uKCl7aWYoIWRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKFwicG9zdC10ZW1wbGF0ZVwiKSlyZXR1cm47dmFyIEE9e1wiQHR5cGVcIjpcIlBlcnNvblwiLG5hbWU6XCJKdW5nIEhhblwiLGFsdGVybmF0ZU5hbWU6XCJcXHVENTVDXFx1QzgxNVxcdUQ2QzhcIix1cmw6bG9jYXRpb24ub3JpZ2luK1wiL2F1dGhvci9qdW5nLWhhbi9cIixqb2JUaXRsZTpcIlB1Ymxpc2hlclwiLHNhbWVBczpbXCJodHRwczovL3d3dy55b3V0dWJlLmNvbS9Aa2VudGVydGVjaGh1YlwiLFwiaHR0cHM6Ly93d3cueW91dHViZS5jb20vQGtlbnRlcnRlY2hodWJfZ2xvYmFsXCJdfTtbXS5mb3JFYWNoLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc2NyaXB0W3R5cGU9XCJhcHBsaWNhdGlvbi9sZCtqc29uXCJdJyksZnVuY3Rpb24ocyl7dHJ5e3ZhciBkPUpTT04ucGFyc2Uocy50ZXh0Q29udGVudCksYT1BcnJheS5pc0FycmF5KGQpP2Q6KGRbXCJAZ3JhcGhcIl18fFtkXSksYz0wO2EuZm9yRWFjaChmdW5jdGlvbihvKXtpZihvJiYvQXJ0aWNsZS8udGVzdChvW1wiQHR5cGVcIl0pKXt2YXIgbj1vLmF1dGhvciYmby5hdXRob3IubmFtZTtpZighbnx8L0p1bmcgSGFufFxcdUQ1NUNcXHVDODE1XFx1RDZDOC8udGVzdChuKSl7by5hdXRob3I9QTtjKys7fX19KTtpZihjKXMudGV4dENvbnRlbnQ9SlNPTi5zdHJpbmdpZnkoZCk7fWNhdGNoKGUpe319KTt9KSgpOzwvc2NyaXB0PlxuPCEtLSA9PT09PT09PT09PT09PT09PSBFTkQga3RoLWNsYXVkZS1wYXRjaCA9PT09PT09PT09PT09PT09PSAtLT5cbjxzdHlsZSBpZD1cImt0aC1hYm91dC1maXhcIj4uYWJvdXQtY29udGFjdC1idG4sLmFib3V0LWluZm8tdGFibGUgYVtocmVmXj1cIm1haWx0bzpcIl17YmFja2dyb3VuZDojMTQxNTFBICFpbXBvcnRhbnQ7Y29sb3I6I2ZmZiAhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MnB4ICFpbXBvcnRhbnQ7cGFkZGluZzoxMHB4IDIwcHggIWltcG9ydGFudDtmb250LXdlaWdodDo2MDAgIWltcG9ydGFudDt0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50O2Rpc3BsYXk6aW5saW5lLWJsb2NrfTwvc3R5bGU+XG48c3R5bGUgaWQ9XCJrdGgtYXJ3XCI+Lmt0aC1zZWMyLWh7cG9zaXRpb246cmVsYXRpdmV9Lmt0aC1hcnd7ZGlzcGxheTppbmxpbmUtZmxleDtnYXA6NnB4O21hcmdpbi1sZWZ0OjE0cHh9Lmt0aC1hcncgYnV0dG9ue2FwcGVhcmFuY2U6bm9uZTt3aWR0aDoyOHB4O2hlaWdodDoyOHB4O2JvcmRlcjoxcHggc29saWQgI0M5QzRCNztiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzNBM0I0MDtjdXJzb3I6cG9pbnRlcjtmb250OjYwMCAxNHB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Ym9yZGVyLXJhZGl1czo1MCU7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjB9Lmt0aC1hcncgYnV0dG9uOmhvdmVye2JvcmRlci1jb2xvcjojMTQxNTFBO2JhY2tncm91bmQ6IzE0MTUxQTtjb2xvcjojZmZmfS5rdGgtYXJ3IGJ1dHRvbltkaXNhYmxlZF17b3BhY2l0eTouMztjdXJzb3I6ZGVmYXVsdH1AbWVkaWEobWF4LXdpZHRoOjcwMHB4KXsua3RoLWFyd3tkaXNwbGF5Om5vbmV9fTwvc3R5bGU+XG48c2NyaXB0IGlkPVwia3RoLWFydy1qc1wiPlxuKGZ1bmN0aW9uKCl7dmFyIEQ9ZG9jdW1lbnQ7XG5mdW5jdGlvbiBhZGQoKXt2YXIgc2Vjcz1ELnF1ZXJ5U2VsZWN0b3JBbGwoXCIua3RoLXNlYzJcIik7Zm9yKHZhciBpPTA7aTxzZWNzLmxlbmd0aDtpKyspeyhmdW5jdGlvbihzKXtcbmlmKHMuZ2V0QXR0cmlidXRlKFwiZGF0YS1hXCIpKXJldHVybjt2YXIgZz1zLnF1ZXJ5U2VsZWN0b3IoXCIua3RoLXNlYzItZ1wiKTtpZighZylyZXR1cm47XG5pZihnLnNjcm9sbFdpZHRoPD1nLmNsaWVudFdpZHRoKzgpcmV0dXJuO1xudmFyIGg9cy5xdWVyeVNlbGVjdG9yKFwiLmt0aC1zZWMyLWhcIik7aWYoIWgpcmV0dXJuO1xudmFyIHc9RC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTt3LmNsYXNzTmFtZT1cImt0aC1hcndcIjtcbnZhciBMPUQuY3JlYXRlRWxlbWVudChcImJ1dHRvblwiKTtMLnR5cGU9XCJidXR0b25cIjtMLnRleHRDb250ZW50PVwiXFx1MjAzOVwiO0wuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwicHJldmlvdXNcIik7XG52YXIgUj1ELmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIik7Ui50eXBlPVwiYnV0dG9uXCI7Ui50ZXh0Q29udGVudD1cIlxcdTIwM0FcIjtSLnNldEF0dHJpYnV0ZShcImFyaWEtbGFiZWxcIixcIm5leHRcIik7XG5mdW5jdGlvbiB1cGQoKXtMLmRpc2FibGVkPWcuc2Nyb2xsTGVmdDwxMDtSLmRpc2FibGVkPWcuc2Nyb2xsTGVmdD49Zy5zY3JvbGxXaWR0aC1nLmNsaWVudFdpZHRoLTEwO31cbkwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZnVuY3Rpb24oKXtnLnNjcm9sbExlZnQtPWcuY2xpZW50V2lkdGgqMC44O3NldFRpbWVvdXQodXBkLDQ1MCk7fSk7XG5SLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLGZ1bmN0aW9uKCl7Zy5zY3JvbGxMZWZ0Kz1nLmNsaWVudFdpZHRoKjAuODtzZXRUaW1lb3V0KHVwZCw0NTApO30pO1xuZy5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsZnVuY3Rpb24oKXt1cGQoKTt9LHtwYXNzaXZlOnRydWV9KTtcbncuYXBwZW5kQ2hpbGQoTCk7dy5hcHBlbmRDaGlsZChSKTtcbnZhciBtb3JlPWgucXVlcnlTZWxlY3RvcihcIi5rdGgtc2VjMi1tXCIpO2lmKG1vcmUpaC5pbnNlcnRCZWZvcmUodyxtb3JlKTtlbHNlIGguYXBwZW5kQ2hpbGQodyk7XG51cGQoKTtzLnNldEF0dHJpYnV0ZShcImRhdGEtYVwiLFwiMVwiKTt9KShzZWNzW2ldKTt9fVxuc2V0VGltZW91dChhZGQsNTAwMCk7c2V0VGltZW91dChhZGQsOTAwMCk7c2V0VGltZW91dChhZGQsMTQwMDApO1xufSkoKTtcbjwvc2NyaXB0PlxuPHNjcmlwdCBpZD1cImt0aC1rZXR0dlwiPlxuKGZ1bmN0aW9uKCl7dmFyIEQ9ZG9jdW1lbnQ7XG5mdW5jdGlvbiBnbygpe3ZhciBoPUQucXVlcnlTZWxlY3RvcihcIi5rdGgtc2VjdGlvbi10aXRsZS0tbGlnaHRcIik7aWYoIWh8fGguZ2V0QXR0cmlidXRlKFwiZGF0YS1rZXRcIikpcmV0dXJuO1xudmFyIHQ9bnVsbDtmb3IodmFyIGk9MDtpPGguY2hpbGROb2Rlcy5sZW5ndGg7aSsrKXt2YXIgbj1oLmNoaWxkTm9kZXNbaV07aWYobi5ub2RlVHlwZT09PTMmJi95b3V0dWJlL2kudGVzdChuLnRleHRDb250ZW50fHxcIlwiKSl7dD1uO2JyZWFrO319XG5pZighdClyZXR1cm47dmFyIHA9d2luZG93Ll9fS1RIX1dSSVRFO3dpbmRvdy5fX0tUSF9XUklURT0xO1xudHJ5e3QudGV4dENvbnRlbnQ9XCJLLVJFTEFZXCI7XG5pZighaC5xdWVyeVNlbGVjdG9yKFwiLmt0aC1rZXQtc3ViXCIpKXt2YXIgcz1ELmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO3MuY2xhc3NOYW1lPVwia3RoLWtldC1zdWJcIjtcbnMudGV4dENvbnRlbnQ9XCJLLUN1bHR1cmUgQ2hhbm5lbFwiO1xucy5zdHlsZS5jc3NUZXh0PVwibWFyZ2luLWxlZnQ6MTBweDtmb250OjYwMCAxMS41cHgvMSBJbnRlcixzeXN0ZW0tdWksc2Fucy1zZXJpZjtsZXR0ZXItc3BhY2luZzouMDZlbTtvcGFjaXR5Oi42Mjt0ZXh0LXRyYW5zZm9ybTpub25lXCI7XG50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHMsdC5uZXh0U2libGluZyk7fVxufWNhdGNoKGUpe31cbndpbmRvdy5fX0tUSF9XUklURT1wO2guc2V0QXR0cmlidXRlKFwiZGF0YS1rZXRcIixcIjFcIik7fVxuaWYoRC5yZWFkeVN0YXRlPT09XCJsb2FkaW5nXCIpRC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLGdvKTtlbHNlIGdvKCk7XG5zZXRUaW1lb3V0KGdvLDEyMDApO3NldFRpbWVvdXQoZ28sMzAwMCk7c2V0VGltZW91dChnbyw2MDAwKTtzZXRUaW1lb3V0KGdvLDEyMDAwKTtcbn0pKCk7XG48L3NjcmlwdD5cbjxzdHlsZSBpZD1cImt0aC15dDJcIj5odG1sIGJvZHkgLmt0aC15dC1ncmlke2Rpc3BsYXk6ZmxleCFpbXBvcnRhbnQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOm5vbmUhaW1wb3J0YW50O2dhcDoxOHB4IWltcG9ydGFudDtvdmVyZmxvdy14OmF1dG8haW1wb3J0YW50O3Njcm9sbC1iZWhhdmlvcjpzbW9vdGg7c2Nyb2xsLXNuYXAtdHlwZTp4IHByb3hpbWl0eTtzY3JvbGxiYXItd2lkdGg6bm9uZTstbXMtb3ZlcmZsb3ctc3R5bGU6bm9uZTtwYWRkaW5nLWJvdHRvbTo4cHh9aHRtbCBib2R5IC5rdGgteXQtZ3JpZDo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTpub25lfWh0bWwgYm9keSAua3RoLXl0LWNhcmR7ZmxleDowIDAgMjY4cHghaW1wb3J0YW50O3dpZHRoOjI2OHB4IWltcG9ydGFudDttYXgtd2lkdGg6MjY4cHghaW1wb3J0YW50O3Njcm9sbC1zbmFwLWFsaWduOnN0YXJ0fUBtZWRpYShtYXgtd2lkdGg6NzYwcHgpe2h0bWwgYm9keSAua3RoLXl0LWNhcmR7ZmxleDowIDAgNzB2dyFpbXBvcnRhbnQ7d2lkdGg6NzB2dyFpbXBvcnRhbnQ7bWF4LXdpZHRoOjcwdnchaW1wb3J0YW50fX1odG1sIGJvZHkgLmt0aC15dC1pbm5lciAua3RoLWFyd3tkaXNwbGF5OmlubGluZS1mbGV4O2dhcDo3cHg7bWFyZ2luLWxlZnQ6MTRweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aHRtbCBib2R5IC5rdGgteXQtaW5uZXIgLmt0aC1hcncgYnV0dG9ue3dpZHRoOjMxcHg7aGVpZ2h0OjMxcHg7Ym9yZGVyOjFweCBzb2xpZCAjQzlDNEI3O2JhY2tncm91bmQ6I2ZmZjtjb2xvcjojMTQxNTFBO2ZvbnQ6NDAwIDE3cHgvMSBzeXN0ZW0tdWksc2Fucy1zZXJpZjtjdXJzb3I6cG9pbnRlcjtib3JkZXItcmFkaXVzOjUwJTtwYWRkaW5nOjA7Ym94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMDUpfWh0bWwgYm9keSAua3RoLXl0LWlubmVyIC5rdGgtYXJ3IGJ1dHRvbjpob3ZlcntiYWNrZ3JvdW5kOiMxNjMwNUM7Ym9yZGVyLWNvbG9yOiMxNjMwNUM7Y29sb3I6I2ZmZn0ua3RoLWtldGxvZ297ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDoxMXB4O2NvbG9yOmN1cnJlbnRDb2xvcn0ua3RoLWtldGxvZ28gc3Zne2Rpc3BsYXk6YmxvY2t9I21vYi1zZWFyY2gtcmVzIC5rdGgtbXNyIGF7ZGlzcGxheTpibG9jaztwYWRkaW5nOjEzcHggMnB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNFM0RGRDY7Zm9udDo2MDAgMTQuNnB4LzEuNDUgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzE0MTUxQSFpbXBvcnRhbnQ7dGV4dC1kZWNvcmF0aW9uOm5vbmUhaW1wb3J0YW50fSNtb2Itc2VhcmNoLXJlcyAua3RoLW1zciBhIGJ7Y29sb3I6IzE2MzA1Q30jbW9iLXNlYXJjaC1yZXMgLmt0aC1tc3IgLmt0aC1zci1ke2Rpc3BsYXk6YmxvY2s7bWFyZ2luLXRvcDo1cHg7Zm9udDo1MDAgMTEuNXB4LzEgSW50ZXIsc3lzdGVtLXVpLHNhbnMtc2VyaWY7Y29sb3I6IzhBODg3Rn08L3N0eWxlPlxuPHNjcmlwdCBpZD1cImt0aC15dDJqc1wiPihmdW5jdGlvbigpe3ZhciBEPWRvY3VtZW50O2Z1bmN0aW9uIHdhcm0oKXt2YXIgSz1cImt0aF9pZHgyXCIsVD1cImt0aF9pZHgyX3RcIjt0cnl7dmFyIGM9bG9jYWxTdG9yYWdlLmdldEl0ZW0oSyksdD0rbG9jYWxTdG9yYWdlLmdldEl0ZW0oVCl8fDA7aWYoYyYmYy5sZW5ndGg+NTAwMCYmRGF0ZS5ub3coKS10PDYwNDhlNSlyZXR1cm47fWNhdGNoKGUpe31mZXRjaChcIi9rdGgtaW5kZXgvXCIse2NyZWRlbnRpYWxzOlwic2FtZS1vcmlnaW5cIn0pLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHIub2s/ci50ZXh0KCk6XCJcIjt9KS50aGVuKGZ1bmN0aW9uKGgpe2lmKCFoKXJldHVybjt2YXIgZD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGgsXCJ0ZXh0L2h0bWxcIik7dmFyIGVsPWQuZ2V0RWxlbWVudEJ5SWQoXCJrdGhpZHgtZGF0YVwiKTtpZighZWwpcmV0dXJuO3ZhciB2PShlbC50ZXh0Q29udGVudHx8XCJcIikudHJpbSgpO2lmKHYubGVuZ3RoPDEwMDApcmV0dXJuO3RyeXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShLLHYpO2xvY2FsU3RvcmFnZS5zZXRJdGVtKFQsRGF0ZS5ub3coKSk7fWNhdGNoKGUpe319KS5jYXRjaChmdW5jdGlvbigpe30pO31mdW5jdGlvbiBicmlkZ2UoKXt2YXIgbWk9RC5nZXRFbGVtZW50QnlJZChcIm1vYi1zZWFyY2gtaW5wXCIpLG1yPUQuZ2V0RWxlbWVudEJ5SWQoXCJtb2Itc2VhcmNoLXJlc1wiKSxzaT1ELnF1ZXJ5U2VsZWN0b3IoXCIuc2VhcmNoLWlucHV0XCIpLHNiPUQucXVlcnlTZWxlY3RvcihcIi5rdGgtc3JcIik7aWYoIW1pfHwhbXJ8fCFzaXx8IXNifHxtaS5fX2tiKXJldHVybjttaS5fX2tiPTE7ZnVuY3Rpb24gcGFpbnQoKXt2YXIgYXM9c2IucXVlcnlTZWxlY3RvckFsbChcImFcIik7aWYoIWFzLmxlbmd0aClyZXR1cm47dmFyIHc9RC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3cuY2xhc3NOYW1lPVwia3RoLW1zclwiO2Zvcih2YXIgaT0wO2k8YXMubGVuZ3RoJiZpPDI1O2krKyl7dy5hcHBlbmRDaGlsZChhc1tpXS5jbG9uZU5vZGUodHJ1ZSkpO31tci5pbm5lckhUTUw9XCJcIjttci5hcHBlbmRDaGlsZCh3KTt9bWkuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsZnVuY3Rpb24oKXt2YXIgdj1taS52YWx1ZTtzaS52YWx1ZT12O3NpLmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KFwiaW5wdXRcIix7YnViYmxlczp0cnVlfSkpO2lmKCF2KXJldHVybjtzZXRUaW1lb3V0KHBhaW50LDMwMCk7c2V0VGltZW91dChwYWludCw5MDApO3NldFRpbWVvdXQocGFpbnQsMTkwMCk7fSk7fWZ1bmN0aW9uIGhlYWQoKXt2YXIgZz1ELnF1ZXJ5U2VsZWN0b3IoXCIua3RoLXl0LWdyaWRcIik7aWYoIWcpcmV0dXJuIG51bGw7dmFyIHA9Zy5wYXJlbnRFbGVtZW50O2Zvcih2YXIgbj0wO248MyYmcDtuKyspe3ZhciBoPXAucXVlcnlTZWxlY3RvcihcImgyLGgzXCIpO2lmKGgpcmV0dXJuIGg7cD1wLnBhcmVudEVsZW1lbnQ7fXJldHVybiBudWxsO31mdW5jdGlvbiBsb2dvKCl7dmFyIHQ9aGVhZCgpO2lmKCF0fHx0LnF1ZXJ5U2VsZWN0b3IoXCIua3RoLWtldGxvZ29cIikpcmV0dXJuO3ZhciBzPUQuY3JlYXRlRWxlbWVudChcInNwYW5cIik7cy5jbGFzc05hbWU9XCJrdGgta2V0bG9nb1wiO3MuaW5uZXJIVE1MPVwiPHN2ZyB3aWR0aD1cXFwiMzBcXFwiIGhlaWdodD1cXFwiMzBcXFwiIHZpZXdCb3g9XFxcIjAgMCAzMiAzMlxcXCIgZmlsbD1cXFwibm9uZVxcXCIgYXJpYS1oaWRkZW49XFxcInRydWVcXFwiPjxyZWN0IHg9XFxcIjEuM1xcXCIgeT1cXFwiNC40XFxcIiB3aWR0aD1cXFwiMjkuNFxcXCIgaGVpZ2h0PVxcXCIyMVxcXCIgcng9XFxcIjMuNlxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIvPjxwYXRoIGQ9XFxcIk03IDI5LjVoMThcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIiBzdHJva2Utd2lkdGg9XFxcIjJcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJyb3VuZFxcXCIvPjxwYXRoIGQ9XFxcIk0xNiAyNS40djQuMVxcXCIgc3Ryb2tlPVxcXCJjdXJyZW50Q29sb3JcXFwiIHN0cm9rZS13aWR0aD1cXFwiMlxcXCIvPjxwYXRoIGQ9XFxcIk04LjYgMTAuM3Y5LjhNOC42IDE1LjJsNS4zLTQuOU04LjYgMTUuMmw1LjUgNC45XFxcIiBzdHJva2U9XFxcImN1cnJlbnRDb2xvclxcXCIgc3Ryb2tlLXdpZHRoPVxcXCIyLjFcXFwiIHN0cm9rZS1saW5lY2FwPVxcXCJyb3VuZFxcXCIgc3Ryb2tlLWxpbmVqb2luPVxcXCJyb3VuZFxcXCIvPjxwYXRoIGQ9XFxcIk0xOC44IDEwLjZsNy4yIDQuNi03LjIgNC42elxcXCIgZmlsbD1cXFwiY3VycmVudENvbG9yXFxcIi8+PC9zdmc+XCI7dC5pbnNlcnRCZWZvcmUocyx0LmZpcnN0Q2hpbGQpO31mdW5jdGlvbiBhcncoKXt2YXIgZz1ELnF1ZXJ5U2VsZWN0b3IoXCIua3RoLXl0LWdyaWRcIiksdD1oZWFkKCk7aWYoIWd8fCF0fHx0LnF1ZXJ5U2VsZWN0b3IoXCIua3RoLWFyd1wiKSlyZXR1cm47dmFyIHM9RC5jcmVhdGVFbGVtZW50KFwic3BhblwiKTtzLmNsYXNzTmFtZT1cImt0aC1hcndcIjt2YXIgTD1ELmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiksUj1ELmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIik7TC50eXBlPVwiYnV0dG9uXCI7Ui50eXBlPVwiYnV0dG9uXCI7TC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWxhYmVsXCIsXCJwcmV2XCIpO1Iuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLFwibmV4dFwiKTtMLmlubmVySFRNTD1cIiYjODI0OTtcIjtSLmlubmVySFRNTD1cIiYjODI1MDtcIjtmdW5jdGlvbiB1cGQoKXtMLnN0eWxlLm9wYWNpdHk9Zy5zY3JvbGxMZWZ0Pjg/XCIxXCI6XCIuM1wiO1Iuc3R5bGUub3BhY2l0eT0oZy5zY3JvbGxMZWZ0K2cuY2xpZW50V2lkdGg8Zy5zY3JvbGxXaWR0aC04KT9cIjFcIjpcIi4zXCI7fUwuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZnVuY3Rpb24oKXtnLnNjcm9sbExlZnQtPWcuY2xpZW50V2lkdGgqMC44O3NldFRpbWVvdXQodXBkLDQ1MCk7fSk7Ui5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixmdW5jdGlvbigpe2cuc2Nyb2xsTGVmdCs9Zy5jbGllbnRXaWR0aCowLjg7c2V0VGltZW91dCh1cGQsNDUwKTt9KTtnLmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIix1cGQpO3MuYXBwZW5kQ2hpbGQoTCk7cy5hcHBlbmRDaGlsZChSKTt0LmFwcGVuZENoaWxkKHMpO3NldFRpbWVvdXQodXBkLDMwMCk7fWZ1bmN0aW9uIGdvKCl7dHJ5e3dhcm0oKTt9Y2F0Y2goZSl7fXRyeXticmlkZ2UoKTt9Y2F0Y2goZSl7fXRyeXtsb2dvKCk7fWNhdGNoKGUpe310cnl7YXJ3KCk7fWNhdGNoKGUpe319aWYoRC5yZWFkeVN0YXRlPT09XCJsb2FkaW5nXCIpRC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLGZ1bmN0aW9uKCl7c2V0VGltZW91dChnbyw3MDApO30pO2Vsc2Ugc2V0VGltZW91dChnbyw3MDApO3NldFRpbWVvdXQoZ28sMjMwMCk7c2V0VGltZW91dChnbyw0MjAwKTt9KSgpOzwvc2NyaXB0PlxuPHNjcmlwdCBpZD1cImt0aC1tcmZpeFwiPihmdW5jdGlvbigpe3ZhciBEPWRvY3VtZW50O2Z1bmN0aW9uIGtvKCl7dHJ5e3JldHVybiAobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJrdGhfbGFuZ1wiKXx8XCJrb1wiKT09PVwia29cIjt9Y2F0Y2goZSl7cmV0dXJuIHRydWU7fX1mdW5jdGlvbiBmeCgpe2lmKCFrbygpKXJldHVybjt2YXIgbnM9RC5xdWVyeVNlbGVjdG9yQWxsKFwiLmt0aC1tci1pIHNwYW4sLmt0aC1zZWMyLW5cIik7Zm9yKHZhciBpPTA7aTxucy5sZW5ndGg7aSsrKXt2YXIgbj1uc1tpXSx0PW4udGV4dENvbnRlbnQ7aWYodC5pbmRleE9mKFwiRnJlZVwiKT49MCYmL1tcXHVBQzAwLVxcdUQ3QTNdLy50ZXN0KHQpKW4udGV4dENvbnRlbnQ9dC5yZXBsYWNlKC9GcmVlL2csXCJcXHVCQjM0XFx1QjhDQ1wiKTt9fVsxMDAwLDIyMDAsNDAwMCw3MDAwXS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3NldFRpbWVvdXQoZngsZCk7fSk7RC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZngsNzAwKTt9LHRydWUpO30pKCk7PC9zY3JpcHQ+XG48c2NyaXB0IGlkPVwia3RoLXhsb2FkXCI+KGZ1bmN0aW9uKCl7dmFyIEQ9ZG9jdW1lbnQsSz1cImt0aHgzXCI7ZnVuY3Rpb24gaW5zKHMpe3ZhciB0PUQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt0LmlubmVySFRNTD1zO3ZhciBuPXQuY2hpbGRyZW47d2hpbGUobi5sZW5ndGgpe3ZhciBjPW5bMF0sZT1ELmNyZWF0ZUVsZW1lbnQoYy50YWdOYW1lKTtlLmlkPWMuaWQ7ZS50ZXh0Q29udGVudD1jLnRleHRDb250ZW50O2MucmVtb3ZlKCk7aWYoIUQuZ2V0RWxlbWVudEJ5SWQoZS5pZCkpRC5ib2R5LmFwcGVuZENoaWxkKGUpO319ZnVuY3Rpb24gZ28oKXt2YXIgYz1udWxsO3RyeXtjPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oSyk7fWNhdGNoKGUpe31pZihjJiZjLmxlbmd0aD41MDApcmV0dXJuIGlucyhjKTtmZXRjaChcIi9rdGgtZXh0cmEvXCIse2NyZWRlbnRpYWxzOlwic2FtZS1vcmlnaW5cIn0pLnRoZW4oZnVuY3Rpb24ocil7cmV0dXJuIHIub2s/ci50ZXh0KCk6XCJcIjt9KS50aGVuKGZ1bmN0aW9uKGgpe2lmKCFoKXJldHVybjt2YXIgZD1uZXcgRE9NUGFyc2VyKCkucGFyc2VGcm9tU3RyaW5nKGgsXCJ0ZXh0L2h0bWxcIiksZWw9ZC5nZXRFbGVtZW50QnlJZChcImt0aHgtZGF0YVwiKTtpZighZWwpcmV0dXJuO3ZhciBzPWRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoYXRvYigoZWwudGV4dENvbnRlbnR8fFwiXCIpLnRyaW0oKSkpKTt0cnl7c2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShLLHMpO31jYXRjaChlKXt9aW5zKHMpO30pLmNhdGNoKGZ1bmN0aW9uKCl7fSk7fWlmKEQucmVhZHlTdGF0ZT09PVwibG9hZGluZ1wiKUQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixnbyk7ZWxzZSBnbygpO30pKCk7PC9zY3JpcHQ+In0=
K-EnterTech Hub

Cross Border Content Studio and news media outlet with entertainment tech, streaming, AI, Metaverse

Quick Links
Home Entertainment Tech AI Streaming/FAST Creator Membership Shop About Sign In
Contact

✉️ existen75@kentertechhub.com

📞 +82-(0)10-3686-8722

🌐 6955 Speedway Blvd, T104,
Las Vegas, NV 89115, USA

K엔터테크허브 (K-EnterTech Hub) 대표: Jung Han 사업자등록번호: 812-83-77424 개인정보보호 책임자: Jung Han

© 2026 K-EnterTech Hub. All rights reserved.