xiaomianao666

邀您一起看:我去按摩按出的性爱 kashi

Feb 19th, 2025
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥我去按摩按出的性爱
  2. kashi@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWHveaVsFwiLFwicGF0aFwiOlwiaGFuc2h1XCIsXCJydWxlXCI6XCJjb25zdCBhcGl2aWV3ID0ge1xcbiAgICBjb2xvcjogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcIiNGQTcyOThcXFwiPicgKyB0ZXN0ICsgJzwvZnJvbnQ+JztcXG4gICAgfSxcXG4gICAgc3Ryb25nOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8c3Ryb25nPicgKyB0ZXN0ICsgJzwvc3Ryb25nPic7XFxuICAgIH0sXFxuICAgIHNtYWxsOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8c21hbGw+JyArIHRlc3QgKyAnPC9zbWFsbD4nO1xcbiAgICB9LFxcbiAgICBjZW50ZXI6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxwIHN0eWxlPVxcXCJ0ZXh0LWFsaWduOiBjZW50ZXI7XFxcIj4nICsgdGVzdCArICc8L3A+J1xcbiAgICB9LFxcbiAgICBiaWc6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxiaWc+JyArIHRlc3QgKyAnPC9iaWc+JztcXG4gICAgfSxcXG4gICAgZ3JheTogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiPGZvbnQgY29sb3I9J2dyYXknPlxcXCIgKyB0ZXN0ICsgXFxcIjwvZm9udD5cXFwiO1xcbiAgICB9LFxcbiAgICByaWNoOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCLigJjigJjigJnigJlcXFwiICsgdGVzdDtcXG4gICAgfSxcXG4gICAgYWRkcmVzc1RhZzogKHVybCwgdGV4dCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCI8YSBocmVmPSdcXFwiICsgdXJsICsgXFxcIic+XFxcIiArIHRleHQgKyBcXFwiPC9hPlxcXCJcXG4gICAgfSxcXG4gICAgZW1wdHk6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgbGF5b3V0OiBbXSxcXG4gICAgbm9Mb2FkOiBcXFwiI25vTG9hZGluZyNcXFwiLFxcbiAgICB0aW1lc3RhbXA6ICgpID0+IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcXG4gICAgdDEwOiAoKSA9PiBhcGl2aWV3LnRpbWVzdGFtcCgpLnRvU3RyaW5nKCksXFxuICAgIHQxMzogKCkgPT4gYXBpdmlldy50MTAoKSArICcwMDAnLFxcbiAgICBob3N0OiBnZXRJdGVtKFxcXCJhcGlcXFwiKSxcXG4gICAgZ2V0RGF0ZXNBcnJheTogKGVuZERhdGUpID0+IHtcXG4gICAgICAgIC8vIOWwhue7k+adn+aXpeacn+Wtl+espuS4sui9rOaNouS4ukRhdGXlr7nosaFcXG4gICAgICAgIGxldCBlbmREYXRlT2JqID0gbmV3IERhdGUoZW5kRGF0ZSk7XFxuXFxuICAgICAgICAvLyDojrflj5blvZPliY3ml6XmnJ9cXG4gICAgICAgIGxldCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XFxuXFxuICAgICAgICAvLyDliJ3lp4vljJbml6XmnJ/mlbDnu4RcXG4gICAgICAgIGxldCBkYXRlc0FycmF5ID0gW107XFxuXFxuICAgICAgICAvLyDlvqrnjq/ku47lvZPliY3ml6XmnJ/liLDnu5PmnZ/ml6XmnJ9cXG4gICAgICAgIHdoaWxlIChjdXJyZW50RGF0ZSA+PSBlbmREYXRlT2JqKSB7XFxuICAgICAgICAgICAgLy8g5bCG5pel5pyf6L2s5o2i5Li6WVlZWS1NTS1EROagvOW8j+eahOWtl+espuS4suW5tua3u+WKoOWIsOaVsOe7hFxcbiAgICAgICAgICAgIGRhdGVzQXJyYXkucHVzaChjdXJyZW50RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pO1xcblxcbiAgICAgICAgICAgIC8vIOWHj+WOu+S4gOWkqVxcbiAgICAgICAgICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpIC0gMSk7XFxuICAgICAgICB9XFxuICAgICAgICAvKlxcbiAgICAgICAgICAgIC8vIOWPjei9rOaVsOe7hOS7peaMiemZjeW6j+aOkuWIl+aXpeacn1xcbiAgICAgICAgICAgIGRhdGVzQXJyYXkucmV2ZXJzZSgpO1xcbiAgICAgICAgKi9cXG4gICAgICAgIHJldHVybiBkYXRlc0FycmF5O1xcbiAgICB9LFxcbiAgICBnZXRZZWFyTW9udGhBcnJheTogKGVuZERhdGUpID0+IHtcXG4gICAgICAgIGxldCBlbmREYXRlT2JqID0gbmV3IERhdGUoZW5kRGF0ZSk7XFxuICAgICAgICBsZXQgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xcbiAgICAgICAgbGV0IHllYXJNb250aEFycmF5ID0gW107XFxuXFxuICAgICAgICAvLyDnoa7kv53lvZPliY3ml6XmnJ/kuI3lsI/kuo7nu5PmnZ/ml6XmnJ9cXG4gICAgICAgIGlmIChjdXJyZW50RGF0ZSA8IGVuZERhdGVPYmopIHtcXG4gICAgICAgICAgICByZXR1cm4geWVhck1vbnRoQXJyYXk7IC8vIOWmguaenOW9k+WJjeaXpeacn+Wwj+S6jue7k+adn+aXpeacn++8jOebtOaOpei/lOWbnuepuuaVsOe7hFxcbiAgICAgICAgfVxcblxcbiAgICAgICAgLy8g5b6q546v5LuO5b2T5YmN5pel5pyf5Yiw57uT5p2f5pel5pyfXFxuICAgICAgICB3aGlsZSAoY3VycmVudERhdGUgPj0gZW5kRGF0ZU9iaikge1xcbiAgICAgICAgICAgIC8vIOiOt+WPluW9k+WJjeaXpeacn+eahOW5tOWSjOaciO+8jOW5tuagvOW8j+WMluS4ulxcXCJZWVlZLU1NXFxcIuWtl+espuS4slxcbiAgICAgICAgICAgIGxldCB5ZWFyID0gY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKTtcXG4gICAgICAgICAgICBsZXQgbW9udGggPSAoY3VycmVudERhdGUuZ2V0TW9udGgoKSArIDEpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTsgLy8g5pyI5Lu95LuOMOW8gOWni++8jOaJgOS7peWKoDHvvIzlubbkuJTnoa7kv53mmK/kuKTkvY3mlbBcXG4gICAgICAgICAgICBsZXQgeWVhck1vbnRoID0gYCR7eWVhcn0tJHttb250aH1gOyAvLyDmraPnoa7kvb/nlKjmqKHmnb/lrZfnrKbkuLJcXG5cXG4gICAgICAgICAgICAvLyDlsIblubTmnIjlrZfnrKbkuLLmt7vliqDliLDmlbDnu4RcXG4gICAgICAgICAgICB5ZWFyTW9udGhBcnJheS5wdXNoKHllYXJNb250aCk7XFxuXFxuICAgICAgICAgICAgLy8g5YeP5Y675LiA5Liq5pyIXFxuICAgICAgICAgICAgY3VycmVudERhdGUuc2V0TW9udGgoY3VycmVudERhdGUuZ2V0TW9udGgoKSAtIDEpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgcmV0dXJuIHllYXJNb250aEFycmF5O1xcbiAgICB9LFxcbiAgICBDcnlwdG9KUzogbnVsbCwgLy8g55So5LqO5a2Y5YKoIENyeXB0b0pTIOWvueixoVxcbiAgICBpbml0Q3J5cHRvSlM6ICgpID0+IHtcXG4gICAgICAgIGlmICghYXBpdmlldy5DcnlwdG9KUykge1xcbiAgICAgICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7IC8vIOaJp+ihjOS4gOasoSBldmFs77yM56Gu5L+dIGBDcnlwdG9KU2Ag5Y+Y6YeP6KKr5a6a5LmJXFxuICAgICAgICAgICAgYXBpdmlldy5DcnlwdG9KUyA9IENyeXB0b0pTOyAvLyDlsIYgYENyeXB0b0pTYCDnvJPlrZjliLAgYGFwaXZpZXcuQ3J5cHRvSlNgXFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIEVuY3J5cHQ6ICh3b3JkKSA9PiB7XFxuICAgICAgICBhcGl2aWV3LmluaXRDcnlwdG9KUygpOyAvLyDnoa7kv50gQ3J5cHRvSlMg5bey5Yqg6L29XFxuICAgICAgICBsZXQga2V5ID0gYXBpdmlldy5DcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcXFwibCpidiVaaXEwMDBCaWFvZ1xcXCIpO1xcbiAgICAgICAgbGV0IGl2ID0gYXBpdmlldy5DcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcXFwiODU5NzUwNjAwMjkzOTI0OVxcXCIpO1xcbiAgICAgICAgbGV0IGVuY3J5cHQgPSBhcGl2aWV3LkNyeXB0b0pTLkFFUy5lbmNyeXB0KHdvcmQsIGtleSwge1xcbiAgICAgICAgICAgIGl2OiBpdixcXG4gICAgICAgICAgICBtb2RlOiBhcGl2aWV3LkNyeXB0b0pTLm1vZGUuQ0JDLFxcbiAgICAgICAgICAgIHBhZGRpbmc6IGFwaXZpZXcuQ3J5cHRvSlMucGFkLlBrY3M3LFxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gZW5jcnlwdC50b1N0cmluZygpOyAvLyDpu5jorqTov5Tlm54gQmFzZTY0IOe8lueggeeahOWtl+espuS4slxcbiAgICB9LFxcbiAgICBEZWNyeXB0OiAod29yZCkgPT4ge1xcbiAgICAgICAgYXBpdmlldy5pbml0Q3J5cHRvSlMoKTsgLy8g56Gu5L+dIENyeXB0b0pTIOW3suWKoOi9vVxcbiAgICAgICAgbGV0IGtleSA9IGFwaXZpZXcuQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcImwqYnYlWmlxMDAwQmlhb2dcXFwiKTtcXG4gICAgICAgIGxldCBpdiA9IGFwaXZpZXcuQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcIjg1OTc1MDYwMDI5MzkyNDlcXFwiKTtcXG4gICAgICAgIGxldCBkZWNyeXB0ID0gYXBpdmlldy5DcnlwdG9KUy5BRVMuZGVjcnlwdCh3b3JkLCBrZXksIHtcXG4gICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgbW9kZTogYXBpdmlldy5DcnlwdG9KUy5tb2RlLkNCQyxcXG4gICAgICAgICAgICBwYWRkaW5nOiBhcGl2aWV3LkNyeXB0b0pTLnBhZC5Qa2NzNyxcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIGRlY3J5cHQudG9TdHJpbmcoYXBpdmlldy5DcnlwdG9KUy5lbmMuVXRmOCk7IC8vIOino+Wvhue7k+aenOi9rOaNouS4uuaWh+acrOagvOW8j1xcbiAgICB9LFxcbiAgICBEZWNyeXB0MTogKGlucHV0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJChpbnB1dCkuaW1hZ2UoKCkgPT4ge1xcbiAgICAgICAgICAgIGNvbnN0IENyeXB0b1V0aWwgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXFxcIik7XFxuICAgICAgICAgICAgbGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXFxcInNhSVpYYzR5TXZxMEl6NTZcXFwiKTtcXG4gICAgICAgICAgICBsZXQgaXYgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KFxcXCJrYkpZdEJKVUVDVDBveWpvXFxcIik7XFxuICAgICAgICAgICAgbGV0IHRleHREYXRhID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlSW5wdXRTdHJlYW0oaW5wdXQpO1xcbiAgICAgICAgICAgIGxldCBlbmNyeXB0ZWQgPSBDcnlwdG9VdGlsLkFFUy5kZWNyeXB0KHRleHREYXRhLCBrZXksIHtcXG4gICAgICAgICAgICAgICAgbW9kZTogXFxcIkFFUy9DQkMvUEtDUzdQYWRkaW5nXFxcIixcXG4gICAgICAgICAgICAgICAgaXY6IGl2XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIGVuY3J5cHRlZC50b0lucHV0U3RyZWFtKCk7XFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBnZXR0b2tlbjogKCkgPT4ge1xcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChhcGl2aWV3Lmhvc3QrJy92Mi41L3JlZnJlc2gvdG9rZW4nLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXFxuICAgICAgICAgICAgICAgICd1dWlkJzogJ2M5YWQyMjFmLWI0NDUtMzlkMi04NWY1LWE2OTNjMjQxMTVlMycsXFxuICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnOiBhcGl2aWV3LnQxMCgpLFxcbiAgICAgICAgICAgICAgICAnaXAnOiAnMC4wLjAuMCcsXFxuICAgICAgICAgICAgICAgICd1c2VyLWtleSc6ICc3NjAzNTVjYzg4MjE4ZjBjMTUxNGY1Njc2NDM2MjA2NicsXFxuICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICcxJyxcXG4gICAgICAgICAgICAgICAgJ3NpZ24nOiBtZDUobWQ1KCcwLjAuMC4wLjEuJythcGl2aWV3LnQxMCgpKycuNzYwMzU1Y2M4ODIxOGYwYzE1MTRmNTY3NjQzNjIwNjYuYzlhZDIyMWYtYjQ0NS0zOWQyLTg1ZjUtYTY5M2MyNDExNWUzJykrJ200bjJoalBlWVdrRDZ0RnBxS0ZeM0hPXmgyNFBAaWRUJyksXFxuICAgICAgICAgICAgICAgICdhcHAtdmVyc2lvbic6ICcyLjIuOScsXFxuICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aCc6ICcwJyxcXG4gICAgICAgICAgICAgICAgJ0hvc3QnOiBhcGl2aWV3Lmhvc3Quc3BsaXQoJy8vJylbMV0sXFxuICAgICAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ0tlZXAtQWxpdmUnLFxcbiAgICAgICAgICAgICAgICAvLydBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCcsXFxuICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ29raHR0cC80LjMuMScsXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7IC8vbG9nKGh0bWwpXFxuICAgICAgICB2YXIgaHRtbDEgPSBhcGl2aWV3LkRlY3J5cHQoaHRtbCk7IC8vbG9nKGh0bWwxKVxcbiAgICAgICAgLy92YXIgbG9nZ2VkX2F0ID0gSlNPTi5wYXJzZShodG1sMSkuZGF0YS51c2VyLmxvZ2dlZF9hdC5zcGxpdCgnICcpWzBdOyBsb2cobG9nZ2VkX2F0KVxcbiAgICAgICAgdmFyIHRva2VuID0gSlNPTi5wYXJzZShodG1sMSkuZGF0YS51c2VyLnRva2VuOyBsb2codG9rZW4pXFxuICAgICAgICAvL3NldEl0ZW0oXFxcImxvZ2dlZF9hdFxcXCIsbG9nZ2VkX2F0KVxcbiAgICAgICAgc2V0SXRlbShcXFwidG9rZW5cXFwiLHRva2VuKVxcbiAgICB9LFxcbiAgICBnZXRodG1sOiAodXJsLGJvZHkpID0+IHtcXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2godXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAndXVpZCc6ICdjOWFkMjIxZi1iNDQ1LTM5ZDItODVmNS1hNjkzYzI0MTE1ZTMnLFxcbiAgICAgICAgICAgICAgICAndGltZXN0YW1wJzogYXBpdmlldy50MTAoKSxcXG4gICAgICAgICAgICAgICAgJ2lwJzogJzAuMC4wLjAnLFxcbiAgICAgICAgICAgICAgICAndXNlci1rZXknOiAnNzYwMzU1Y2M4ODIxOGYwYzE1MTRmNTY3NjQzNjIwNjYnLFxcbiAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiAnMScsXFxuICAgICAgICAgICAgICAgICdzaWduJzogbWQ1KG1kNSgnMC4wLjAuMC4xLicrYXBpdmlldy50MTAoKSsnLjc2MDM1NWNjODgyMThmMGMxNTE0ZjU2NzY0MzYyMDY2LmM5YWQyMjFmLWI0NDUtMzlkMi04NWY1LWE2OTNjMjQxMTVlMycpKydtNG4yaGpQZVlXa0Q2dEZwcUtGXjNIT15oMjRQQGlkVCcpLFxcbiAgICAgICAgICAgICAgICAnYXBwLXZlcnNpb24nOiAnMi4yLjknLFxcbiAgICAgICAgICAgICAgICAndG9rZW4nOiBnZXRJdGVtKFxcXCJ0b2tlblxcXCIpLFxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXFxuICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aCc6ICcwJyxcXG4gICAgICAgICAgICAgICAgJ0hvc3QnOiBhcGl2aWV3Lmhvc3Quc3BsaXQoJy8vJylbMV0sXFxuICAgICAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ0tlZXAtQWxpdmUnLFxcbiAgICAgICAgICAgICAgICAvLydBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCcsXFxuICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ29raHR0cC80LjMuMScsXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiBib2R5LCAgICAgICAgICAgIFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcbiAgICAgICAgICAgIHJlamVjdENvZGluZzogdHJ1ZVxcbiAgICAgICAgfSk7IC8vbG9nKGh0bWwpXFxuICAgICAgICB2YXIgaHRtbDEgPSBhcGl2aWV3LkRlY3J5cHQoaHRtbCk7IC8vbG9nKGh0bWwxKVxcbiAgICAgICAgcmV0dXJuIGh0bWwxXFxuICAgIH0sXFxuICAgIHR1d2VueWlqaTogKGQsZGF0YSkgPT4ge1xcbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIHZhciBpbWcgPSBhcGl2aWV3LkRlY3J5cHQxKCdodHRwczovL2ptdHAuZ3BncmVpaS5jb20nICsgaXRlbS50aHVtYilcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5wdWJsaXNoZWRfYXQuc3BsaXQoJyAnKVswXSxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMjZ2FtZVRoZW1lI2AsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBtb2RlbF9pZDogaXRlbS5tb2RlbF9pZCxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWdcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICB5dWVkdXlpamk6IChkLGRhdGEpID0+IHtcXG4gICAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgKyAnXFxcXG4nICsgaXRlbS5hdXRob3IsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0uZGVzY3JpcHRpb24sXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNgLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxfaWQ6IGl0ZW0ubW9kZWxfaWQsXFxuICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogaW1nXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgeWluZ3NoaXlpamk6IChkLGRhdGEpID0+IHtcXG4gICAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0uZGVzY3JpcHRpb24sXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNgLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxfaWQ6IGl0ZW0ubW9kZWxfaWQsXFxuICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogaW1nXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgZGlhbnRhaXlpamk6IChkLGRhdGEpID0+IHtcXG4gICAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICcwJyxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMjZ2FtZVRoZW1lI2AsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBtb2RlbF9pZDogaXRlbS5tb2RlbF9pZCxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWdcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICB4aWV6aGVubWFuaHVheWlqaTogKGQsZGF0YSkgPT4ge1xcbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIHZhciBpbWcgPSBhcGl2aWV3LkRlY3J5cHQxKCdodHRwczovL2ptdHAuZ3BncmVpaS5jb20nICsgaXRlbS50aHVtYilcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJzAnLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGl0ZW0uaWQpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9zZXJpZXMvY2hhcHRlcnMnXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnc2VyaWVzX2lkPScgKyBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eScsICcnKSlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLCBib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICBkYXRhLmNoYXB0ZXJzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtLnRodW1iKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLmRlc2NyaXB0aW9uLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2Vyamk/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IyNnYW1lVGhlbWUjYCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX2lkOiAyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGltZ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZClcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMSdcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgdHV3ZW46IChkLGRhdGEpID0+IHtcXG4gICAgICAgIHZhciBpbWdzID0gZGF0YS5jb250ZW50LnJlcGxhY2UoLyg8ZmlndXJlW1xcXFxTXFxcXHNdKj88XFxcXC9maWd1cmU+KS9nLCBcXFwiQCQxQFxcXCIpO1xcbiAgICAgICAgaW1ncy5zcGxpdChcXFwiQFxcXCIpLmZvckVhY2goaXQgPT4ge1xcbiAgICAgICAgICAgIGlmIChpdC5pbmNsdWRlcyhcXFwiZmlndXJlXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBwZGZoKGl0LCBcXFwiaW1nJiZzcmNcXFwiKSlcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIC8vZGVzYzogJzAnLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGltZyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdC50cmltKCkpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIGJpYW9xaWFuOiAoZCxkYXRhKSA9PiB7XFxuICAgICAgICBkYXRhLnRhZ3MuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGl0ZW0gKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL3B1dE15VmFyKCdzZWFyY2gnLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgIC8vcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgeXVsYW50dTogKGQsZGF0YSkgPT4ge1xcbiAgICAgICAgZGF0YS5tdWx0aXBsZV9waWMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBsZXQgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0pXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgICAgIHVybDogaW1nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIHBpbmdsdW46IChkLCBkYXRhKSA9PiB7XFxuICAgICAgICBkYXRhLmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgICAgICAgaWYgKGRhdGEuYXV0aG9yKSB7XFxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmF2YXRhciA9PSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGF2YXRhciA9ICdodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvSW5uRGsudGgucG5nJ1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGF2YXRhciA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBkYXRhLmF2YXRhcilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuYXV0aG9yLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGF0YS5jcmVhdGVkX2F0LFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBhdmF0YXIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXBsaWVzLmxlbmd0aCAhPSAnMCcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGRhdGEudGV4dCArIGFwaXZpZXcuYWRkcmVzc1RhZygnaGlrZXI6Ly9wYWdlL3Bpbmx1bicsICdcXFxcdFxcXFx0XFxcXHTmn6XnnIvlhajpg6gnKVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gZGF0YS50ZXh0XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LmdyYXkodGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS5hdXRob3IsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGF0YS5jcmVhdGVkX2F0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MxOiBkYXRhLnRleHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBhdmF0YXIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbTogZGF0YS5yZXBsaWVzLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogZGF0YS5hdXRob3JcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxufVxcblxcbiQuZXhwb3J0cyA9IGFwaXZpZXc7XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLngrnmkq1cIixcInBhdGhcIjpcImNsYTFcIixcInJ1bGVcIjpcInZhciBlbmREYXRlID0gXFxcIjIwMjEtMDktMDFcXFwiO1xcbnZhciBoZSA9IGFwaXZpZXcuZ2V0WWVhck1vbnRoQXJyYXkoZW5kRGF0ZSk7IC8vbG9nKGhlKSBcXG52YXIgc3VicyA9IGhlIC8vbG9nKHN1YnMpIFxcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXG5oZS5mb3JFYWNoKCh4LGkpPT57XFxuICAgIHZhciBjdGl0bGUgPSB4XFxuICAgIHZhciBzdWIgPSBzdWJzW2ldXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2N0aXRsZScsIGhlWzBdKSA9PSBjdGl0bGUgPyAn4oCc4oCc4oCd4oCdJytjdGl0bGUuZm9udGNvbG9yKCcjJytnZXRSYW5nZUNvbG9ycygpKTpjdGl0bGUsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoY3RpdGxlLHN1YikgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiY3RpdGxlXFxcIiwgY3RpdGxlKTtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInN1YlxcXCIsc3ViKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGN0aXRsZSxzdWIpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICB9KVxcbn0pXFxufVxcbnZhciBoZSA9IGdldE15VmFyKFxcXCJjdGl0bGVcXFwiLGhlWzBdKVxcbnZhciBzdWIgPSBnZXRNeVZhcihcXFwic3ViXFxcIixzdWJzWzBdKTsgLy9sb2coc3ViKVxcblxcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L2FydGljbGUvZGlzY292ZXJ5J1xcbnZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCdtb2RlbF9pZD02JnB1Ymxpc2hlZF9hdD0nK3N1YisnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0yMCZzb3J0PXB1Ymxpc2hlZF9hdCcpXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGFwaXZpZXcuZ2V0aHRtbCh1cmwsYm9keSkpLmRhdGE7XFxuZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgIGRlc2M6ICcnLFxcbiAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaTE/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5I2AsXFxuICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2NhcmQnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBtb2RlbF9pZDogaXRlbS5tb2RlbF9pZCxcXG4gICAgICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgICAgICBpbWc6IGltZ1xcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLngrnmkq3kuoznuqdcIixcInBhdGhcIjpcImVyamkxXCIsXCJydWxlXCI6XCJqczpcXG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIilcXG52YXIgbW9kZWxfaWQgPSBNWV9QQVJBTVMubW9kZWxfaWQ7IC8vbG9nKHR5cGVvZiBtb2RlbF9pZClcXG52YXIgaWQgPSBNWV9QQVJBTVMuaWQ7IC8vbG9nKGlkKVxcbnZhciBpbWcgPSBNWV9QQVJBTVMuaW1nXFxudmFyIGQgPSBbXTtcXG5pZihNWV9QQUdFID09ICcxJyl7XFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJzAnLFxcbiAgICBpbWc6IGltZyxcXG4gICAgdXJsOiBpbWcsXFxuICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMSdcXG59KVxcbmlmKGdldE15VmFyKCdhJykgPT0gJzEnKXtcXG52YXIgdGl0bGUxID0gJ1xcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx05b2x54mH5LuL57uNXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHQnXFxudmFyIHRpdGxlMiA9ICdcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdOKAmOKAmOeUqOaIt+ivhOS7t+KAmeKAmVxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0J1xcbn1lbHNle1xcbnZhciB0aXRsZTEgPSAnXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHTigJjigJjlvbHniYfku4vnu43igJnigJlcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdCdcXG52YXIgdGl0bGUyID0gJ1xcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx055So5oi36K+E5Lu3XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHQnXFxufVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiB0aXRsZTEsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKT0+e1xcbiAgICAgICAgY2xlYXJNeVZhcignYScpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgLy9leHRyYTogeydiYWNrZ3JvdW5kQ29sb3InOiAnI0UwRjhGRid9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogdGl0bGUyLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCk9PntcXG4gICAgICAgIHB1dE15VmFyKCdhJywnMScpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgLy9leHRyYTogeydiYWNrZ3JvdW5kQ29sb3InOiAnI0UwRjhGRid9XFxufSlcXG59XFxuaWYoZ2V0TXlWYXIoJ2EnKSA9PSAnMScpe1xcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L2NvbW1lbnQvbGlzdCdcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnYXJ0aWNsZV9pZD0nK2lkKycmcGFnZT0nK01ZX1BBR0UrJyZzaXplPTIwJnNvcnRpbmc9JytnZXRNeVZhcignYTEnLCdsaWtlcycpKVxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLCBib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXG5pZihNWV9QQUdFID09ICcxJyl7XFxuaWYoZ2V0TXlWYXIoJ2ExJywnbGlrZXMnKSA9PSAnbGlrZXMnKXtcXG52YXIgdGV4dCA9ICflvZPliY3mjpLluo/vvJrmjInng63luqYnXFxufVxcbmlmKGdldE15VmFyKCdhMScpID09ICdjcmVhdGVkX2F0Jyl7XFxudmFyIHRleHQgPSAn5b2T5YmN5o6S5bqP77ya5oyJ5pe26Ze0J1xcbn1cXG4vL2xvZyhnZXRNeVZhcignYTEnLCdsaWtlcycpKVxcbnZhciBwYWl4dSA9ICQoJyNub0xvYWRpbmcjJykuYjY0KCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICBpZihnZXRNeVZhcignYTEnLCdsaWtlcycpID09ICdsaWtlcycpe1xcbiAgICAgICAgcHV0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpXFxuICAgICAgICB0b2FzdCgn5oyJ5pe26Ze0JylcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgfVxcbiAgICBpZihnZXRNeVZhcignYTEnKSA9PSAnY3JlYXRlZF9hdCcpe1xcbiAgICAgICAgcHV0TXlWYXIoJ2ExJywnbGlrZXMnKVxcbiAgICAgICAgdG9hc3QoJ+aMieeDreW6picpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZygn6K+E6K665YiX6KGoJykpKydcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdCcrYXBpdmlldy5hZGRyZXNzVGFnKHBhaXh1LHRleHQpLFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxufSlcXG59XFxuYXBpdmlldy5waW5nbHVuKGQsZGF0YSlcXG59ZWxzZXtcXG5pZihNWV9QQUdFID09ICcxJyl7XFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kZXRhaWwnXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ2lkPScraWQpXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGFwaXZpZXcuZ2V0aHRtbCh1cmwsYm9keSkpLmRhdGE7IC8vbG9nKGRhdGEpXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICdcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHTpooTop4hcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHQnLFxcbiAgICB1cmw6ICQoZGF0YS52aWRlb19maWxlKycjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChkYXRhKT0+e1xcbiAgICAgICAgcmV0dXJuICdodHRwczovL2FrbWFpdmlkZW8uY2RjaHVhbmdhby5jb20nK2lucHV0XFxuICAgIH0sZGF0YSksXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXG4gICAgLy9leHRyYTogeydiYWNrZ3JvdW5kQ29sb3InOiAnI0UwRjhGRid9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ1xcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdOWOn+eJh1xcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdCcsXFxuICAgIHVybDogJChkYXRhLnZpZGVvX2ZpbGUrJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGRhdGEpPT57XFxuICAgICAgICBpZigvc2FtcGxlLy50ZXN0KGlucHV0KSl7XFxuICAgICAgICAgICAgdmFyIHVybCA9IGlucHV0LnJlcGxhY2UoL1teYS16QS1aMC05XShzYW1wbGUpLywnJylcXG4gICAgICAgICAgICByZXR1cm4gJ2h0dHBzOi8vYWttYWl2aWRlby5jZGNodWFuZ2FvLmNvbScrdXJsXFxuICAgICAgICB9XFxuICAgICAgICBpZighL+aXoC8udGVzdChkYXRhLm51bWJlcikpe1xcbiAgICAgICAgICAgIHZhciB1cmwgPSBpbnB1dC5yZXBsYWNlKC9cXFxcLyhbXlxcXFwvXSspXFxcXC4vLCcvJytkYXRhLm51bWJlcisnLicpXFxuICAgICAgICAgICAgcmV0dXJuICdodHRwczovL2FrbWFpdmlkZW8uY2RjaHVhbmdhby5jb20nK3VybFxcbiAgICAgICAgfVxcbiAgICB9LGRhdGEpLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxuICAgIC8vZXh0cmE6IHsnYmFja2dyb3VuZENvbG9yJzogJyNFMEY4RkYnfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGFwaXZpZXcuYmlnKGFwaXZpZXcuc3Ryb25nKGRhdGEudGl0bGUpKSsnPGJyPjxicj4nKyfnlarlj7fvvJonK2FwaXZpZXcuZ3JheShkYXRhLm51bWJlcikrJ1xcXFx0XFxcXHRcXFxcdCcrJ+a8lOWRmO+8micrYXBpdmlldy5ncmF5KGRhdGEuYWN0b3IpKyc8YnI+JythcGl2aWV3LmdyYXkoZGF0YS5wdWJsaXNoZWRfYXQuc3BsaXQoJyAnKVswXSkrJ1xcXFx0XFxcXHRcXFxcdCcrYXBpdmlldy5ncmF5KGRhdGEubGVuZ3RoKSsnXFxcXHRcXFxcdFxcXFx0JythcGl2aWV3LmdyYXkoZGF0YS5zaXplKSsnXFxcXHRcXFxcdFxcXFx0JythcGl2aWV3LmdyYXkoZGF0YS5xdWFsaXR5KSxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbn0pXFxuYXBpdmlldy5iaWFvcWlhbihkLGRhdGEpXFxuYXBpdmlldy55dWxhbnR1KGQsZGF0YSlcXG4vL2xvZyhkYXRhLmNvbnRlbnQpXFxuYXBpdmlldy50dXdlbihkLGRhdGEpXFxuXFxufVxcbn1cXG5cXG5zZXRSZXN1bHQoZClcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuivhOiuuuivpuaDhVwiLFwicGF0aFwiOlwicGlubHVuXCIsXCJydWxlXCI6XCJqczpcXG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIilcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBNWV9QQVJBTVMudGl0bGUsXFxuICAgIGRlc2M6IE1ZX1BBUkFNUy5kZXNjLFxcbiAgICBpbWc6IE1ZX1BBUkFNUy5pbWcsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBhcGl2aWV3LmdyYXkoTVlfUEFSQU1TLmRlc2MxKSxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGFwaXZpZXcuYmlnKGFwaXZpZXcuc3Ryb25nKCfnm7jlhbPlm57lpI3lhbEnK01ZX1BBUkFNUy5pdGVtLmxlbmd0aCsn5p2hJykpLFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxufSlcXG5NWV9QQVJBTVMuaXRlbS5yZXZlcnNlKCkuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgaWYgKGRhdGEuYXZhdGFyID09ICcnKSB7XFxuICAgICAgICB2YXIgYXZhdGFyID0gJ2h0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9Jbm5Eay50aC5wbmcnXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB2YXIgYXZhdGFyID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGRhdGEuYXZhdGFyKVxcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZGF0YS5hdXRob3IsXFxuICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQsXFxuICAgICAgICBpbWc6IGF2YXRhcixcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogYXBpdmlldy5hZGRyZXNzVGFnKCdoaWtlcjovL2VtcHR5JywnQCcrZGF0YS50YWdfYXV0aG9yKydcXFxcdFxcXFx0XFxcXHQnKSthcGl2aWV3LmdyYXkoZGF0YS50ZXh0KSxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgfSlcXG59KVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aaW6aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJpZihNWV9QQUdFID09ICcxJyl7XFxudmFyIGVuZERhdGUgPSBcXFwiMjAxOS0xMS0wOFxcXCI7XFxudmFyIGRhdGVzQXJyYXkgPSBhcGl2aWV3LmdldERhdGVzQXJyYXkoZW5kRGF0ZSk7XFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kYXknXFxudmFyIHB1Ymxpc2hlZF9hdCA9IGdldE15VmFyKFxcXCJwdWJsaXNoZWRfYXRcXFwiKSA9PSAnJyA/IGRhdGVzQXJyYXlbMF0gOiBnZXRNeVZhcihcXFwicHVibGlzaGVkX2F0XFxcIik7IC8vbG9nKHB1Ymxpc2hlZF9hdClcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgncHVibGlzaGVkX2F0PScrcHVibGlzaGVkX2F0KVxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLGJvZHkpKS5kYXRhO1xcbmRhdGEuaW5mby5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxuICAgIGlmKGl0ZW0ubW9kZWxfaWQgPT0gJzYnKXtcXG4gICAgdmFyIHVybCA9IGBoaWtlcjovL3BhZ2UvZXJqaTE/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5I2BcXG4gICAgfWVsc2V7XFxuICAgIHZhciB1cmwgPSBgaGlrZXI6Ly9wYWdlL2Vyamk/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IyNnYW1lVGhlbWUjYFxcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogYCR7YXBpdmlldy5zdHJvbmcoaXRlbS50aXRsZSl9PGJyPiR7YXBpdmlldy5ncmF5KGl0ZW0uYXV0aG9yKX08YnI+JHthcGl2aWV3LmdyYXkoaXRlbS5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cXFxcbi9nLCc8YnI+JykpfWAsXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBtb2RlbF9pZDogaXRlbS5tb2RlbF9pZCxcXG4gICAgICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgICAgICBpbWc6IGltZ1xcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9KVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzliIfmjaLigJ3igJ0nLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgocHVibGlzaGVkX2F0LGRhdGVzQXJyYXkpID0+IHtcXG4gICAgICAgIHNob3dTZWxlY3RPcHRpb25zKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+W9k+WJje+8micrcHVibGlzaGVkX2F0LFxcbiAgICAgICAgICAgIG9wdGlvbnM6IGRhdGVzQXJyYXksXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwicHVibGlzaGVkX2F0XFxcIixpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFwiICsgaW5wdXRcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0scHVibGlzaGVkX2F0LGRhdGVzQXJyYXkpLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxufSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdcIixcInBhdGhcIjpcImVyamlcIixcInJ1bGVcIjpcImpzOlxcbnZhciBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKVxcbnZhciBtb2RlbF9pZCA9IE1ZX1BBUkFNUy5tb2RlbF9pZDsgLy9sb2codHlwZW9mIG1vZGVsX2lkKVxcbnZhciBpZCA9IE1ZX1BBUkFNUy5pZDsgLy9sb2coaWQpXFxudmFyIGltZyA9IE1ZX1BBUkFNUy5pbWdcXG52YXIgZCA9IFtdO1xcblxcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9hcnRpY2xlL2RldGFpbCdcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnaWQ9JytpZClcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCxib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXG5zd2l0Y2ggKG1vZGVsX2lkKSB7XFxuICAgIGNhc2UgMTpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGAke2FwaXZpZXcuc3Ryb25nKGFwaXZpZXcuY2VudGVyKGRhdGEudGl0bGUpKX0ke2FwaXZpZXcuZ3JheShkYXRhLmRlc2NyaXB0aW9uKX0ke2FwaXZpZXcuZ3JheShhcGl2aWV3LmNlbnRlcihkYXRhLmF1dGhvcikpfWAsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICB9KVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMjpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMzpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJzop4bpopHigJ3igJ0nLFxcbiAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vYWttYWl2aWRlby5jZGNodWFuZ2FvLmNvbScgKyBkYXRhLnZpZGVvX2ZpbGUsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgNDpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgNTpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJznlLXlj7DigJ3igJ0nLFxcbiAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vYWttYWl2aWRlby5jZGNodWFuZ2FvLmNvbScgKyBkYXRhLnZpZGVvLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBgPGgxPiR7YXBpdmlldy5zdHJvbmcoZGF0YS50aXRsZSl9PC9oMT4ke2FwaXZpZXcuZ3JheShkYXRhLmF1dGhvcil9YCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgIH0pXFxuICAgICAgICBhcGl2aWV3LnR1d2VuKGQsZGF0YSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDY6XFxuXFxuICAgICAgICBicmVhaztcXG59XFxuaWYoZ2V0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpID09ICdjcmVhdGVkX2F0Jyl7XFxudmFyIHRleHQgPSAn5b2T5YmN5o6S5bqP77ya5oyJ5pe26Ze0J1xcbn1cXG5pZihnZXRNeVZhcignYTEnKSA9PSAnbGlrZXMnKXtcXG52YXIgdGV4dCA9ICflvZPliY3mjpLluo/vvJrmjInng63luqYnXFxufVxcbi8vbG9nKGdldE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKSlcXG52YXIgcGFpeHUgPSAkKCcjbm9Mb2FkaW5nIycpLmI2NCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgaWYoZ2V0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpID09ICdjcmVhdGVkX2F0Jyl7XFxuICAgICAgICBwdXRNeVZhcignYTEnLCdsaWtlcycpXFxuICAgICAgICB0b2FzdCgn5oyJ54Ot5bqmJylcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgfVxcbiAgICBpZihnZXRNeVZhcignYTEnKSA9PSAnbGlrZXMnKXtcXG4gICAgICAgIHB1dE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKVxcbiAgICAgICAgdG9hc3QoJ+aMieaXtumXtCcpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZygn55u45YWz5Zue5aSN5YWxJytkYXRhLnJlcGx5X2NvdW50cysn5p2hJykpKydcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0JythcGl2aWV3LmFkZHJlc3NUYWcocGFpeHUsdGV4dCksXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG59KVxcbn1cXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9jb21tZW50L2xpc3QnXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ2FydGljbGVfaWQ9JytpZCsnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0yMCZzb3J0aW5nPScrZ2V0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpKVxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLCBib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXG5hcGl2aWV3LnBpbmdsdW4oZCxkYXRhKVxcblxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Y+R546wXCIsXCJwYXRoXCI6XCJjbGFcIixcInJ1bGVcIjpcInZhciBlbmREYXRlID0gXFxcIjIwMjEtMDktMDFcXFwiO1xcbnZhciBoZTEgPSBbJ+WbvuaWhycsJ+mYheivuycsJ+W9seinhicsJ+eUteWPsCcsJ+WGmeecnycsJ+a8q+eUuyddOyAvL2xvZyhoZTEpIFxcbnZhciBzdWJzMSA9IFsnMScsJzInLCczJywnNScsJzAnLCcwJ107IC8vbG9nKHN1YnMxKSBcXG52YXIgc3ViczIgPSBhcGl2aWV3LmdldFllYXJNb250aEFycmF5KGVuZERhdGUpOyAvL2xvZyhzdWJzMilcXG5pZihNWV9QQUdFID09ICcxJyl7XFxuaGUxLmZvckVhY2goKHgsaSk9PntcXG4gICAgdmFyIGN0aXRsZTEgPSB4XFxuICAgIHZhciBzdWIxID0gc3ViczFbaV1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRNeVZhcignY3RpdGxlMScsIGhlMVswXSkgPT0gY3RpdGxlMSA/ICfigJzigJzigJ3igJ0nK2N0aXRsZTEuZm9udGNvbG9yKCcjJytnZXRSYW5nZUNvbG9ycygpKTpjdGl0bGUxLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGN0aXRsZTEsc3ViMSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiY3RpdGxlMVxcXCIsIGN0aXRsZTEpO1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwic3ViMVxcXCIsc3ViMSk7ICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgY3RpdGxlMSxzdWIxKSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgfSlcXG59KVxcbn1cXG52YXIgaGUxID0gZ2V0TXlWYXIoXFxcImN0aXRsZTFcXFwiLGhlMVswXSk7IC8vbG9nKGhlMSlcXG52YXIgc3ViMSA9IGdldE15VmFyKFxcXCJzdWIxXFxcIixzdWJzMVswXSk7IC8vbG9nKHN1YjEpXFxudmFyIHN1YjIgPSBzdWJzMltNWV9QQUdFLTFdOyAvL2xvZyhzdWIyKVxcblxcbmlmKGhlMSA9PSAn5YaZ55yfJyl7XFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvc2VyaWVzL2FsYnVtL2xpc3QnXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ3R5cGU9JytzdWIxKycmcGFnZT0nK01ZX1BBR0UrJyZzaXplPTMxJnNvcnQ9cHVibGlzaGVkX2F0JylcXG59ZWxzZSBpZihoZTEgPT0gJ+a8q+eUuycpe1xcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L3Nlcmllcy9tYW5nYS9saXN0J1xcbnZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCd0eXBlPScrc3ViMSsnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0zMSZzb3J0PXB1Ymxpc2hlZF9hdCcpXFxufWVsc2V7XFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kaXNjb3ZlcnknXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ21vZGVsX2lkPScrc3ViMSsnJnB1Ymxpc2hlZF9hdD0nK3N1YjIrJyZwYWdlPTEmc2l6ZT0zMScpXFxufVxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLGJvZHkpKS5kYXRhO1xcblxcbnN3aXRjaCAoc3ViMSkge1xcbiAgICBjYXNlICcwJzpcXG4gICAgICAgIGFwaXZpZXcueGllemhlbm1hbmh1YXlpamkoZCxkYXRhKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgJzEnOlxcbiAgICAgICAgYXBpdmlldy50dXdlbnlpamkoZCwgZGF0YSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlICcyJzpcXG4gICAgICAgIGFwaXZpZXcueXVlZHV5aWppKGQsIGRhdGEpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAnMyc6XFxuICAgICAgICBhcGl2aWV3LnlpbmdzaGl5aWppKGQsIGRhdGEpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAnNSc6XFxuICAgICAgICBhcGl2aWV3LmRpYW50YWl5aWppKGQsIGRhdGEpXFxuICAgICAgICBicmVhaztcXG59XCJ9XSxcInBhcmFtc1wiOlwie1xcXCJpZFxcXCI6MjgyMTQsXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vam10cC5ncGdyZWlpLmNvbS9zdG9yYWdlL3RodW1iLzI4MjE0LzY3YjMzYzM4MDAyNzQuanBlZ0Bqcz0kLmhpa2VyLk1ZX1RJVExFID0gXFxcXFxcXCLkuIDkuKpBUFBcXFxcXFxcIjsoXFxcXG4oKSA9PiB7XFxcXG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXFxcXFxcXCIpO1xcXFxuICAgIGxldCBrZXkgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KFxcXFxcXFwic2FJWlhjNHlNdnEwSXo1NlxcXFxcXFwiKTtcXFxcbiAgICBsZXQgaXYgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KFxcXFxcXFwia2JKWXRCSlVFQ1Qwb3lqb1xcXFxcXFwiKTtcXFxcbiAgICBsZXQgdGV4dERhdGEgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VJbnB1dFN0cmVhbShpbnB1dCk7XFxcXG4gICAgbGV0IGVuY3J5cHRlZCA9IENyeXB0b1V0aWwuQUVTLmRlY3J5cHQodGV4dERhdGEsIGtleSwge21vZGU6IFxcXFxcXFwiQUVTL0NCQy9QS0NTN1BhZGRpbmdcXFxcXFxcIiwgaXY6IGl2fSk7XFxcXG4gICAgcmV0dXJuIGVuY3J5cHRlZC50b0lucHV0U3RyZWFtKCk7XFxcXG59XFxcXG4pKClcXFwiLFxcXCJtb2RlbF9pZFxcXCI6Mn1cIixcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi5LiA5LiqQVBQXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9wYWdlL2Vyamk/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IyNnYW1lVGhlbWUjXCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiaGFuc2h1XFxcIilcXG52YXIgbW9kZWxfaWQgPSBNWV9QQVJBTVMubW9kZWxfaWQ7IC8vbG9nKHR5cGVvZiBtb2RlbF9pZClcXG52YXIgaWQgPSBNWV9QQVJBTVMuaWQ7IC8vbG9nKGlkKVxcbnZhciBpbWcgPSBNWV9QQVJBTVMuaW1nXFxudmFyIGQgPSBbXTtcXG5cXG5pZihNWV9QQUdFID09ICcxJyl7XFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kZXRhaWwnXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ2lkPScraWQpXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGFwaXZpZXcuZ2V0aHRtbCh1cmwsYm9keSkpLmRhdGE7IC8vbG9nKGRhdGEpXFxuc3dpdGNoIChtb2RlbF9pZCkge1xcbiAgICBjYXNlIDE6XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgIHVybDogaW1nLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBgJHthcGl2aWV3LnN0cm9uZyhhcGl2aWV3LmNlbnRlcihkYXRhLnRpdGxlKSl9JHthcGl2aWV3LmdyYXkoZGF0YS5kZXNjcmlwdGlvbil9JHthcGl2aWV3LmdyYXkoYXBpdmlldy5jZW50ZXIoZGF0YS5hdXRob3IpKX1gLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDI6XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBgPGgxPiR7YXBpdmlldy5zdHJvbmcoZGF0YS50aXRsZSl9PC9oMT4ke2FwaXZpZXcuZ3JheShkYXRhLmF1dGhvcil9YCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgIH0pXFxuICAgICAgICBhcGl2aWV3LnR1d2VuKGQsZGF0YSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDM6XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgIHVybDogaW1nLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc6KeG6aKR4oCd4oCdJyxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FrbWFpdmlkZW8uY2RjaHVhbmdhby5jb20nICsgZGF0YS52aWRlb19maWxlLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBgPGgxPiR7YXBpdmlldy5zdHJvbmcoZGF0YS50aXRsZSl9PC9oMT4ke2FwaXZpZXcuZ3JheShkYXRhLmF1dGhvcil9YCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgIH0pXFxuICAgICAgICBhcGl2aWV3LnR1d2VuKGQsZGF0YSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDQ6XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBgPGgxPiR7YXBpdmlldy5zdHJvbmcoZGF0YS50aXRsZSl9PC9oMT4ke2FwaXZpZXcuZ3JheShkYXRhLmF1dGhvcil9YCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgIH0pXFxuICAgICAgICBhcGl2aWV3LnR1d2VuKGQsZGF0YSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDU6XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGltZzogaW1nLFxcbiAgICAgICAgICAgIHVybDogaW1nLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc55S15Y+w4oCd4oCdJyxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FrbWFpdmlkZW8uY2RjaHVhbmdhby5jb20nICsgZGF0YS52aWRlbyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogYDxoMT4ke2FwaXZpZXcuc3Ryb25nKGRhdGEudGl0bGUpfTwvaDE+JHthcGl2aWV3LmdyYXkoZGF0YS5hdXRob3IpfWAsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICB9KVxcbiAgICAgICAgYXBpdmlldy50dXdlbihkLGRhdGEpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSA2OlxcblxcbiAgICAgICAgYnJlYWs7XFxufVxcbmlmKGdldE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKSA9PSAnY3JlYXRlZF9hdCcpe1xcbnZhciB0ZXh0ID0gJ+W9k+WJjeaOkuW6j++8muaMieaXtumXtCdcXG59XFxuaWYoZ2V0TXlWYXIoJ2ExJykgPT0gJ2xpa2VzJyl7XFxudmFyIHRleHQgPSAn5b2T5YmN5o6S5bqP77ya5oyJ54Ot5bqmJ1xcbn1cXG4vL2xvZyhnZXRNeVZhcignYTEnLCdjcmVhdGVkX2F0JykpXFxudmFyIHBhaXh1ID0gJCgnI25vTG9hZGluZyMnKS5iNjQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgIGlmKGdldE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKSA9PSAnY3JlYXRlZF9hdCcpe1xcbiAgICAgICAgcHV0TXlWYXIoJ2ExJywnbGlrZXMnKVxcbiAgICAgICAgdG9hc3QoJ+aMieeDreW6picpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgIH1cXG4gICAgaWYoZ2V0TXlWYXIoJ2ExJykgPT0gJ2xpa2VzJyl7XFxuICAgICAgICBwdXRNeVZhcignYTEnLCdjcmVhdGVkX2F0JylcXG4gICAgICAgIHRvYXN0KCfmjInml7bpl7QnKVxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogYXBpdmlldy5iaWcoYXBpdmlldy5zdHJvbmcoJ+ebuOWFs+WbnuWkjeWFsScrZGF0YS5yZXBseV9jb3VudHMrJ+adoScpKSsnXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdCcrYXBpdmlldy5hZGRyZXNzVGFnKHBhaXh1LHRleHQpLFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxufSlcXG59XFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvY29tbWVudC9saXN0J1xcbnZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCdhcnRpY2xlX2lkPScraWQrJyZwYWdlPScrTVlfUEFHRSsnJnNpemU9MjAmc29ydGluZz0nK2dldE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKSlcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCwgYm9keSkpLmRhdGE7IC8vbG9nKGRhdGEpXFxuYXBpdmlldy5waW5nbHVuKGQsZGF0YSlcXG5cXG5zZXRSZXN1bHQoZClcIixcImdyb3VwXCI6XCIjXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Ye95pWwXFxcIixcXFwicGF0aFxcXCI6XFxcImhhbnNodVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJjb25zdCBhcGl2aWV3ID0ge1xcXFxuICAgIGNvbG9yOiAodGVzdCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gJzxmb250IGNvbG9yPVxcXFxcXFwiI0ZBNzI5OFxcXFxcXFwiPicgKyB0ZXN0ICsgJzwvZnJvbnQ+JztcXFxcbiAgICB9LFxcXFxuICAgIHN0cm9uZzogKHRlc3QpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuICc8c3Ryb25nPicgKyB0ZXN0ICsgJzwvc3Ryb25nPic7XFxcXG4gICAgfSxcXFxcbiAgICBzbWFsbDogKHRlc3QpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuICc8c21hbGw+JyArIHRlc3QgKyAnPC9zbWFsbD4nO1xcXFxuICAgIH0sXFxcXG4gICAgY2VudGVyOiAodGVzdCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gJzxwIHN0eWxlPVxcXFxcXFwidGV4dC1hbGlnbjogY2VudGVyO1xcXFxcXFwiPicgKyB0ZXN0ICsgJzwvcD4nXFxcXG4gICAgfSxcXFxcbiAgICBiaWc6ICh0ZXN0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnPGJpZz4nICsgdGVzdCArICc8L2JpZz4nO1xcXFxuICAgIH0sXFxcXG4gICAgZ3JheTogKHRlc3QpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiPGZvbnQgY29sb3I9J2dyYXknPlxcXFxcXFwiICsgdGVzdCArIFxcXFxcXFwiPC9mb250PlxcXFxcXFwiO1xcXFxuICAgIH0sXFxcXG4gICAgcmljaDogKHRlc3QpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwi4oCY4oCY4oCZ4oCZXFxcXFxcXCIgKyB0ZXN0O1xcXFxuICAgIH0sXFxcXG4gICAgYWRkcmVzc1RhZzogKHVybCwgdGV4dCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCI8YSBocmVmPSdcXFxcXFxcIiArIHVybCArIFxcXFxcXFwiJz5cXFxcXFxcIiArIHRleHQgKyBcXFxcXFxcIjwvYT5cXFxcXFxcIlxcXFxuICAgIH0sXFxcXG4gICAgZW1wdHk6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiLFxcXFxuICAgIGxheW91dDogW10sXFxcXG4gICAgbm9Mb2FkOiBcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIsXFxcXG4gICAgdGltZXN0YW1wOiAoKSA9PiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXFxcXG4gICAgdDEwOiAoKSA9PiBhcGl2aWV3LnRpbWVzdGFtcCgpLnRvU3RyaW5nKCksXFxcXG4gICAgdDEzOiAoKSA9PiBhcGl2aWV3LnQxMCgpICsgJzAwMCcsXFxcXG4gICAgaG9zdDogZ2V0SXRlbShcXFxcXFxcImFwaVxcXFxcXFwiKSxcXFxcbiAgICBnZXREYXRlc0FycmF5OiAoZW5kRGF0ZSkgPT4ge1xcXFxuICAgICAgICAvLyDlsIbnu5PmnZ/ml6XmnJ/lrZfnrKbkuLLovazmjaLkuLpEYXRl5a+56LGhXFxcXG4gICAgICAgIGxldCBlbmREYXRlT2JqID0gbmV3IERhdGUoZW5kRGF0ZSk7XFxcXG5cXFxcbiAgICAgICAgLy8g6I635Y+W5b2T5YmN5pel5pyfXFxcXG4gICAgICAgIGxldCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XFxcXG5cXFxcbiAgICAgICAgLy8g5Yid5aeL5YyW5pel5pyf5pWw57uEXFxcXG4gICAgICAgIGxldCBkYXRlc0FycmF5ID0gW107XFxcXG5cXFxcbiAgICAgICAgLy8g5b6q546v5LuO5b2T5YmN5pel5pyf5Yiw57uT5p2f5pel5pyfXFxcXG4gICAgICAgIHdoaWxlIChjdXJyZW50RGF0ZSA+PSBlbmREYXRlT2JqKSB7XFxcXG4gICAgICAgICAgICAvLyDlsIbml6XmnJ/ovazmjaLkuLpZWVlZLU1NLURE5qC85byP55qE5a2X56ym5Liy5bm25re75Yqg5Yiw5pWw57uEXFxcXG4gICAgICAgICAgICBkYXRlc0FycmF5LnB1c2goY3VycmVudERhdGUudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdKTtcXFxcblxcXFxuICAgICAgICAgICAgLy8g5YeP5Y675LiA5aSpXFxcXG4gICAgICAgICAgICBjdXJyZW50RGF0ZS5zZXREYXRlKGN1cnJlbnREYXRlLmdldERhdGUoKSAtIDEpO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIC8qXFxcXG4gICAgICAgICAgICAvLyDlj43ovazmlbDnu4Tku6XmjInpmY3luo/mjpLliJfml6XmnJ9cXFxcbiAgICAgICAgICAgIGRhdGVzQXJyYXkucmV2ZXJzZSgpO1xcXFxuICAgICAgICAqL1xcXFxuICAgICAgICByZXR1cm4gZGF0ZXNBcnJheTtcXFxcbiAgICB9LFxcXFxuICAgIGdldFllYXJNb250aEFycmF5OiAoZW5kRGF0ZSkgPT4ge1xcXFxuICAgICAgICBsZXQgZW5kRGF0ZU9iaiA9IG5ldyBEYXRlKGVuZERhdGUpO1xcXFxuICAgICAgICBsZXQgY3VycmVudERhdGUgPSBuZXcgRGF0ZSgpO1xcXFxuICAgICAgICBsZXQgeWVhck1vbnRoQXJyYXkgPSBbXTtcXFxcblxcXFxuICAgICAgICAvLyDnoa7kv53lvZPliY3ml6XmnJ/kuI3lsI/kuo7nu5PmnZ/ml6XmnJ9cXFxcbiAgICAgICAgaWYgKGN1cnJlbnREYXRlIDwgZW5kRGF0ZU9iaikge1xcXFxuICAgICAgICAgICAgcmV0dXJuIHllYXJNb250aEFycmF5OyAvLyDlpoLmnpzlvZPliY3ml6XmnJ/lsI/kuo7nu5PmnZ/ml6XmnJ/vvIznm7TmjqXov5Tlm57nqbrmlbDnu4RcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgIC8vIOW+queOr+S7juW9k+WJjeaXpeacn+WIsOe7k+adn+aXpeacn1xcXFxuICAgICAgICB3aGlsZSAoY3VycmVudERhdGUgPj0gZW5kRGF0ZU9iaikge1xcXFxuICAgICAgICAgICAgLy8g6I635Y+W5b2T5YmN5pel5pyf55qE5bm05ZKM5pyI77yM5bm25qC85byP5YyW5Li6XFxcXFxcXCJZWVlZLU1NXFxcXFxcXCLlrZfnrKbkuLJcXFxcbiAgICAgICAgICAgIGxldCB5ZWFyID0gY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKTtcXFxcbiAgICAgICAgICAgIGxldCBtb250aCA9IChjdXJyZW50RGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpOyAvLyDmnIjku73ku44w5byA5aeL77yM5omA5Lul5YqgMe+8jOW5tuS4lOehruS/neaYr+S4pOS9jeaVsFxcXFxuICAgICAgICAgICAgbGV0IHllYXJNb250aCA9IGAke3llYXJ9LSR7bW9udGh9YDsgLy8g5q2j56Gu5L2/55So5qih5p2/5a2X56ym5LiyXFxcXG5cXFxcbiAgICAgICAgICAgIC8vIOWwhuW5tOaciOWtl+espuS4sua3u+WKoOWIsOaVsOe7hFxcXFxuICAgICAgICAgICAgeWVhck1vbnRoQXJyYXkucHVzaCh5ZWFyTW9udGgpO1xcXFxuXFxcXG4gICAgICAgICAgICAvLyDlh4/ljrvkuIDkuKrmnIhcXFxcbiAgICAgICAgICAgIGN1cnJlbnREYXRlLnNldE1vbnRoKGN1cnJlbnREYXRlLmdldE1vbnRoKCkgLSAxKTtcXFxcbiAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgIHJldHVybiB5ZWFyTW9udGhBcnJheTtcXFxcbiAgICB9LFxcXFxuICAgIENyeXB0b0pTOiBudWxsLCAvLyDnlKjkuo7lrZjlgqggQ3J5cHRvSlMg5a+56LGhXFxcXG4gICAgaW5pdENyeXB0b0pTOiAoKSA9PiB7XFxcXG4gICAgICAgIGlmICghYXBpdmlldy5DcnlwdG9KUykge1xcXFxuICAgICAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTsgLy8g5omn6KGM5LiA5qyhIGV2YWzvvIznoa7kv50gYENyeXB0b0pTYCDlj5jph4/ooqvlrprkuYlcXFxcbiAgICAgICAgICAgIGFwaXZpZXcuQ3J5cHRvSlMgPSBDcnlwdG9KUzsgLy8g5bCGIGBDcnlwdG9KU2Ag57yT5a2Y5YiwIGBhcGl2aWV3LkNyeXB0b0pTYFxcXFxuICAgICAgICB9XFxcXG4gICAgfSxcXFxcbiAgICBFbmNyeXB0OiAod29yZCkgPT4ge1xcXFxuICAgICAgICBhcGl2aWV3LmluaXRDcnlwdG9KUygpOyAvLyDnoa7kv50gQ3J5cHRvSlMg5bey5Yqg6L29XFxcXG4gICAgICAgIGxldCBrZXkgPSBhcGl2aWV3LkNyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXFxcXFwibCpidiVaaXEwMDBCaWFvZ1xcXFxcXFwiKTtcXFxcbiAgICAgICAgbGV0IGl2ID0gYXBpdmlldy5DcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcXFxcXFxcIjg1OTc1MDYwMDI5MzkyNDlcXFxcXFxcIik7XFxcXG4gICAgICAgIGxldCBlbmNyeXB0ID0gYXBpdmlldy5DcnlwdG9KUy5BRVMuZW5jcnlwdCh3b3JkLCBrZXksIHtcXFxcbiAgICAgICAgICAgIGl2OiBpdixcXFxcbiAgICAgICAgICAgIG1vZGU6IGFwaXZpZXcuQ3J5cHRvSlMubW9kZS5DQkMsXFxcXG4gICAgICAgICAgICBwYWRkaW5nOiBhcGl2aWV3LkNyeXB0b0pTLnBhZC5Qa2NzNyxcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJldHVybiBlbmNyeXB0LnRvU3RyaW5nKCk7IC8vIOm7mOiupOi/lOWbniBCYXNlNjQg57yW56CB55qE5a2X56ym5LiyXFxcXG4gICAgfSxcXFxcbiAgICBEZWNyeXB0OiAod29yZCkgPT4ge1xcXFxuICAgICAgICBhcGl2aWV3LmluaXRDcnlwdG9KUygpOyAvLyDnoa7kv50gQ3J5cHRvSlMg5bey5Yqg6L29XFxcXG4gICAgICAgIGxldCBrZXkgPSBhcGl2aWV3LkNyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXFxcXFwibCpidiVaaXEwMDBCaWFvZ1xcXFxcXFwiKTtcXFxcbiAgICAgICAgbGV0IGl2ID0gYXBpdmlldy5DcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcXFxcXFxcIjg1OTc1MDYwMDI5MzkyNDlcXFxcXFxcIik7XFxcXG4gICAgICAgIGxldCBkZWNyeXB0ID0gYXBpdmlldy5DcnlwdG9KUy5BRVMuZGVjcnlwdCh3b3JkLCBrZXksIHtcXFxcbiAgICAgICAgICAgIGl2OiBpdixcXFxcbiAgICAgICAgICAgIG1vZGU6IGFwaXZpZXcuQ3J5cHRvSlMubW9kZS5DQkMsXFxcXG4gICAgICAgICAgICBwYWRkaW5nOiBhcGl2aWV3LkNyeXB0b0pTLnBhZC5Qa2NzNyxcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJldHVybiBkZWNyeXB0LnRvU3RyaW5nKGFwaXZpZXcuQ3J5cHRvSlMuZW5jLlV0ZjgpOyAvLyDop6Plr4bnu5PmnpzovazmjaLkuLrmlofmnKzmoLzlvI9cXFxcbiAgICB9LFxcXFxuICAgIERlY3J5cHQxOiAoaW5wdXQpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuICQoaW5wdXQpLmltYWdlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIGNvbnN0IENyeXB0b1V0aWwgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL2Fzc2V0cy9jcnlwdG8tamF2YS5qc1xcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIGxldCBrZXkgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KFxcXFxcXFwic2FJWlhjNHlNdnEwSXo1NlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIGxldCBpdiA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXFxcXFxcXCJrYkpZdEJKVUVDVDBveWpvXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgbGV0IHRleHREYXRhID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlSW5wdXRTdHJlYW0oaW5wdXQpO1xcXFxuICAgICAgICAgICAgbGV0IGVuY3J5cHRlZCA9IENyeXB0b1V0aWwuQUVTLmRlY3J5cHQodGV4dERhdGEsIGtleSwge1xcXFxuICAgICAgICAgICAgICAgIG1vZGU6IFxcXFxcXFwiQUVTL0NCQy9QS0NTN1BhZGRpbmdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBpdjogaXZcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgcmV0dXJuIGVuY3J5cHRlZC50b0lucHV0U3RyZWFtKCk7XFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICBnZXR0b2tlbjogKCkgPT4ge1xcXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKGFwaXZpZXcuaG9zdCsnL3YyLjUvcmVmcmVzaC90b2tlbicsIHtcXFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXFxcXG4gICAgICAgICAgICAgICAgJ3V1aWQnOiAnYzlhZDIyMWYtYjQ0NS0zOWQyLTg1ZjUtYTY5M2MyNDExNWUzJyxcXFxcbiAgICAgICAgICAgICAgICAndGltZXN0YW1wJzogYXBpdmlldy50MTAoKSxcXFxcbiAgICAgICAgICAgICAgICAnaXAnOiAnMC4wLjAuMCcsXFxcXG4gICAgICAgICAgICAgICAgJ3VzZXIta2V5JzogJzc2MDM1NWNjODgyMThmMGMxNTE0ZjU2NzY0MzYyMDY2JyxcXFxcbiAgICAgICAgICAgICAgICAncGxhdGZvcm0nOiAnMScsXFxcXG4gICAgICAgICAgICAgICAgJ3NpZ24nOiBtZDUobWQ1KCcwLjAuMC4wLjEuJythcGl2aWV3LnQxMCgpKycuNzYwMzU1Y2M4ODIxOGYwYzE1MTRmNTY3NjQzNjIwNjYuYzlhZDIyMWYtYjQ0NS0zOWQyLTg1ZjUtYTY5M2MyNDExNWUzJykrJ200bjJoalBlWVdrRDZ0RnBxS0ZeM0hPXmgyNFBAaWRUJyksXFxcXG4gICAgICAgICAgICAgICAgJ2FwcC12ZXJzaW9uJzogJzIuMi45JyxcXFxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1MZW5ndGgnOiAnMCcsXFxcXG4gICAgICAgICAgICAgICAgJ0hvc3QnOiBhcGl2aWV3Lmhvc3Quc3BsaXQoJy8vJylbMV0sXFxcXG4gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnS2VlcC1BbGl2ZScsXFxcXG4gICAgICAgICAgICAgICAgLy8nQWNjZXB0LUVuY29kaW5nJzogJ2d6aXAnLFxcXFxuICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ29raHR0cC80LjMuMScsXFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICAgICAgfSk7IC8vbG9nKGh0bWwpXFxcXG4gICAgICAgIHZhciBodG1sMSA9IGFwaXZpZXcuRGVjcnlwdChodG1sKTsgLy9sb2coaHRtbDEpXFxcXG4gICAgICAgIC8vdmFyIGxvZ2dlZF9hdCA9IEpTT04ucGFyc2UoaHRtbDEpLmRhdGEudXNlci5sb2dnZWRfYXQuc3BsaXQoJyAnKVswXTsgbG9nKGxvZ2dlZF9hdClcXFxcbiAgICAgICAgdmFyIHRva2VuID0gSlNPTi5wYXJzZShodG1sMSkuZGF0YS51c2VyLnRva2VuOyBsb2codG9rZW4pXFxcXG4gICAgICAgIC8vc2V0SXRlbShcXFxcXFxcImxvZ2dlZF9hdFxcXFxcXFwiLGxvZ2dlZF9hdClcXFxcbiAgICAgICAgc2V0SXRlbShcXFxcXFxcInRva2VuXFxcXFxcXCIsdG9rZW4pXFxcXG4gICAgfSxcXFxcbiAgICBnZXRodG1sOiAodXJsLGJvZHkpID0+IHtcXFxcbiAgICAgICAgdmFyIGh0bWwgPSBmZXRjaCh1cmwsIHtcXFxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAndXVpZCc6ICdjOWFkMjIxZi1iNDQ1LTM5ZDItODVmNS1hNjkzYzI0MTE1ZTMnLFxcXFxuICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnOiBhcGl2aWV3LnQxMCgpLFxcXFxuICAgICAgICAgICAgICAgICdpcCc6ICcwLjAuMC4wJyxcXFxcbiAgICAgICAgICAgICAgICAndXNlci1rZXknOiAnNzYwMzU1Y2M4ODIxOGYwYzE1MTRmNTY3NjQzNjIwNjYnLFxcXFxuICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICcxJyxcXFxcbiAgICAgICAgICAgICAgICAnc2lnbic6IG1kNShtZDUoJzAuMC4wLjAuMS4nK2FwaXZpZXcudDEwKCkrJy43NjAzNTVjYzg4MjE4ZjBjMTUxNGY1Njc2NDM2MjA2Ni5jOWFkMjIxZi1iNDQ1LTM5ZDItODVmNS1hNjkzYzI0MTE1ZTMnKSsnbTRuMmhqUGVZV2tENnRGcHFLRl4zSE9eaDI0UEBpZFQnKSxcXFxcbiAgICAgICAgICAgICAgICAnYXBwLXZlcnNpb24nOiAnMi4yLjknLFxcXFxuICAgICAgICAgICAgICAgICd0b2tlbic6IGdldEl0ZW0oXFxcXFxcXCJ0b2tlblxcXFxcXFwiKSxcXFxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcsXFxcXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoJzogJzAnLFxcXFxuICAgICAgICAgICAgICAgICdIb3N0JzogYXBpdmlldy5ob3N0LnNwbGl0KCcvLycpWzFdLFxcXFxuICAgICAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ0tlZXAtQWxpdmUnLFxcXFxuICAgICAgICAgICAgICAgIC8vJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJyxcXFxcbiAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdva2h0dHAvNC4zLjEnLFxcXFxuICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgIGJvZHk6IGJvZHksICAgICAgICAgICAgXFxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcXFxcbiAgICAgICAgICAgIHJlamVjdENvZGluZzogdHJ1ZVxcXFxuICAgICAgICB9KTsgLy9sb2coaHRtbClcXFxcbiAgICAgICAgdmFyIGh0bWwxID0gYXBpdmlldy5EZWNyeXB0KGh0bWwpOyAvL2xvZyhodG1sMSlcXFxcbiAgICAgICAgcmV0dXJuIGh0bWwxXFxcXG4gICAgfSxcXFxcbiAgICB0dXdlbnlpamk6IChkLGRhdGEpID0+IHtcXFxcbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgdmFyIGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtLnRodW1iKVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5wdWJsaXNoZWRfYXQuc3BsaXQoJyAnKVswXSxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNgLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxfaWQ6IGl0ZW0ubW9kZWxfaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGltZ1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICB5dWVkdXlpamk6IChkLGRhdGEpID0+IHtcXFxcbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgdmFyIGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtLnRodW1iKVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSArICdcXFxcXFxcXG4nICsgaXRlbS5hdXRob3IsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogaXRlbS5kZXNjcmlwdGlvbixcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNgLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxfaWQ6IGl0ZW0ubW9kZWxfaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGltZ1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICB5aW5nc2hpeWlqaTogKGQsZGF0YSkgPT4ge1xcXFxuICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0uZGVzY3JpcHRpb24sXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2Vyamk/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IyNnYW1lVGhlbWUjYCxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsX2lkOiBpdGVtLm1vZGVsX2lkLFxcXFxuICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWdcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0sXFxcXG4gICAgZGlhbnRhaXlpamk6IChkLGRhdGEpID0+IHtcXFxcbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgdmFyIGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtLnRodW1iKVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiAnMCcsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2Vyamk/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IyNnYW1lVGhlbWUjYCxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnLFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsX2lkOiBpdGVtLm1vZGVsX2lkLFxcXFxuICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWdcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0sXFxcXG4gICAgeGllemhlbm1hbmh1YXlpamk6IChkLGRhdGEpID0+IHtcXFxcbiAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgdmFyIGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtLnRodW1iKVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiAnMCcsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGl0ZW0uaWQpLnJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYXBpdmlldyA9ICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9zZXJpZXMvY2hhcHRlcnMnXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCdzZXJpZXNfaWQ9JyArIE1ZX1VSTC5yZXBsYWNlKCdoaWtlcjovL2VtcHR5JywgJycpKVxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCwgYm9keSkpLmRhdGE7IC8vbG9nKGRhdGEpXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gW107XFxcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuY2hhcHRlcnMuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbWcgPSBhcGl2aWV3LkRlY3J5cHQxKCdodHRwczovL2ptdHAuZ3BncmVpaS5jb20nICsgaXRlbS50aHVtYilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogaXRlbS5kZXNjcmlwdGlvbixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNgLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfaWQ6IDIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGltZ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKVxcXFxuICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMSdcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICB0dXdlbjogKGQsZGF0YSkgPT4ge1xcXFxuICAgICAgICB2YXIgaW1ncyA9IGRhdGEuY29udGVudC5yZXBsYWNlKC8oPGZpZ3VyZVtcXFxcXFxcXFNcXFxcXFxcXHNdKj88XFxcXFxcXFwvZmlndXJlPikvZywgXFxcXFxcXCJAJDFAXFxcXFxcXCIpO1xcXFxuICAgICAgICBpbWdzLnNwbGl0KFxcXFxcXFwiQFxcXFxcXFwiKS5mb3JFYWNoKGl0ID0+IHtcXFxcbiAgICAgICAgICAgIGlmIChpdC5pbmNsdWRlcyhcXFxcXFxcImZpZ3VyZVxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgIGxldCBpbWcgPSBhcGl2aWV3LkRlY3J5cHQxKCdodHRwczovL2ptdHAuZ3BncmVpaS5jb20nICsgcGRmaChpdCwgXFxcXFxcXCJpbWcmJnNyY1xcXFxcXFwiKSlcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAvL2Rlc2M6ICcwJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogaW1nLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0LnRyaW0oKSkge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdCxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0sXFxcXG4gICAgYmlhb3FpYW46IChkLGRhdGEpID0+IHtcXFxcbiAgICAgICAgZGF0YS50YWdzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJChpdGVtICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAvL3B1dE15VmFyKCdzZWFyY2gnLCBpbnB1dClcXFxcbiAgICAgICAgICAgICAgICAgICAgLy9yZWZyZXNoUGFnZSgpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICAgICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIHl1bGFudHU6IChkLGRhdGEpID0+IHtcXFxcbiAgICAgICAgZGF0YS5tdWx0aXBsZV9waWMuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIGxldCBpbWcgPSBhcGl2aWV3LkRlY3J5cHQxKCdodHRwczovL2ptdHAuZ3BncmVpaS5jb20nICsgaXRlbSlcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgaW1nOiBpbWcsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiBpbWcsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18zJ1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIHBpbmdsdW46IChkLCBkYXRhKSA9PiB7XFxcXG4gICAgICAgIGRhdGEuZm9yRWFjaChkYXRhID0+IHtcXFxcbiAgICAgICAgICAgIGlmIChkYXRhLmF1dGhvcikge1xcXFxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmF2YXRhciA9PSAnJykge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYXZhdGFyID0gJ2h0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9Jbm5Eay50aC5wbmcnXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGF2YXRhciA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBkYXRhLmF2YXRhcilcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuYXV0aG9yLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogYXZhdGFyLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXBsaWVzLmxlbmd0aCAhPSAnMCcpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gZGF0YS50ZXh0ICsgYXBpdmlldy5hZGRyZXNzVGFnKCdoaWtlcjovL3BhZ2UvcGlubHVuJywgJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOafpeeci+WFqOmDqCcpXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gZGF0YS50ZXh0XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LmdyYXkodGl0bGUpLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS5hdXRob3IsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBkYXRhLmNyZWF0ZWRfYXQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjMTogZGF0YS50ZXh0LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBhdmF0YXIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiBkYXRhLnJlcGxpZXMsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IGRhdGEuYXV0aG9yXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcbn1cXFxcblxcXFxuJC5leHBvcnRzID0gYXBpdmlldztcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIueCueaSrVxcXCIsXFxcInBhdGhcXFwiOlxcXCJjbGExXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciBlbmREYXRlID0gXFxcXFxcXCIyMDIxLTA5LTAxXFxcXFxcXCI7XFxcXG52YXIgaGUgPSBhcGl2aWV3LmdldFllYXJNb250aEFycmF5KGVuZERhdGUpOyAvL2xvZyhoZSkgXFxcXG52YXIgc3VicyA9IGhlIC8vbG9nKHN1YnMpIFxcXFxuaWYoTVlfUEFHRSA9PSAnMScpe1xcXFxuaGUuZm9yRWFjaCgoeCxpKT0+e1xcXFxuICAgIHZhciBjdGl0bGUgPSB4XFxcXG4gICAgdmFyIHN1YiA9IHN1YnNbaV1cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2N0aXRsZScsIGhlWzBdKSA9PSBjdGl0bGUgPyAn4oCc4oCc4oCd4oCdJytjdGl0bGUuZm9udGNvbG9yKCcjJytnZXRSYW5nZUNvbG9ycygpKTpjdGl0bGUsXFxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChjdGl0bGUsc3ViKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJjdGl0bGVcXFxcXFxcIiwgY3RpdGxlKTtcXFxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcInN1YlxcXFxcXFwiLHN1Yik7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICB9LCBjdGl0bGUsc3ViKSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiXFxcXG4gICAgfSlcXFxcbn0pXFxcXG59XFxcXG52YXIgaGUgPSBnZXRNeVZhcihcXFxcXFxcImN0aXRsZVxcXFxcXFwiLGhlWzBdKVxcXFxudmFyIHN1YiA9IGdldE15VmFyKFxcXFxcXFwic3ViXFxcXFxcXCIsc3Vic1swXSk7IC8vbG9nKHN1YilcXFxcblxcXFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kaXNjb3ZlcnknXFxcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnbW9kZWxfaWQ9NiZwdWJsaXNoZWRfYXQ9JytzdWIrJyZwYWdlPScrTVlfUEFHRSsnJnNpemU9MjAmc29ydD1wdWJsaXNoZWRfYXQnKVxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGFwaXZpZXcuZ2V0aHRtbCh1cmwsYm9keSkpLmRhdGE7XFxcXG5kYXRhLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgdmFyIGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtLnRodW1iKVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICBkZXNjOiAnJyxcXFxcbiAgICAgICAgaW1nOiBpbWcsXFxcXG4gICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppMT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjYCxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9jYXJkJyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIG1vZGVsX2lkOiBpdGVtLm1vZGVsX2lkLFxcXFxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxcXG4gICAgICAgICAgICBpbWc6IGltZ1xcXFxuICAgICAgICB9XFxcXG4gICAgfSlcXFxcbn0pXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi54K55pKt5LqM57qnXFxcIixcXFwicGF0aFxcXCI6XFxcImVyamkxXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIilcXFxcbnZhciBtb2RlbF9pZCA9IE1ZX1BBUkFNUy5tb2RlbF9pZDsgLy9sb2codHlwZW9mIG1vZGVsX2lkKVxcXFxudmFyIGlkID0gTVlfUEFSQU1TLmlkOyAvL2xvZyhpZClcXFxcbnZhciBpbWcgPSBNWV9QQVJBTVMuaW1nXFxcXG52YXIgZCA9IFtdO1xcXFxuaWYoTVlfUEFHRSA9PSAnMScpe1xcXFxuZC5wdXNoKHtcXFxcbiAgICBkZXNjOiAnMCcsXFxcXG4gICAgaW1nOiBpbWcsXFxcXG4gICAgdXJsOiBpbWcsXFxcXG4gICAgY29sX3R5cGU6ICdjYXJkX3BpY18xJ1xcXFxufSlcXFxcbmlmKGdldE15VmFyKCdhJykgPT0gJzEnKXtcXFxcbnZhciB0aXRsZTEgPSAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05b2x54mH5LuL57uNXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0J1xcXFxudmFyIHRpdGxlMiA9ICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjnlKjmiLfor4Tku7figJnigJlcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnXFxcXG59ZWxzZXtcXFxcbnZhciB0aXRsZTEgPSAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx04oCY4oCY5b2x54mH5LuL57uN4oCZ4oCZXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0J1xcXFxudmFyIHRpdGxlMiA9ICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTnlKjmiLfor4Tku7dcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnXFxcXG59XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiB0aXRsZTEsXFxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpPT57XFxcXG4gICAgICAgIGNsZWFyTXlWYXIoJ2EnKVxcXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXFxcbiAgICAvL2V4dHJhOiB7J2JhY2tncm91bmRDb2xvcic6ICcjRTBGOEZGJ31cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiB0aXRsZTIsXFxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpPT57XFxcXG4gICAgICAgIHB1dE15VmFyKCdhJywnMScpXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgIH0pLFxcXFxuICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxcXFxuICAgIC8vZXh0cmE6IHsnYmFja2dyb3VuZENvbG9yJzogJyNFMEY4RkYnfVxcXFxufSlcXFxcbn1cXFxcbmlmKGdldE15VmFyKCdhJykgPT0gJzEnKXtcXFxcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L2NvbW1lbnQvbGlzdCdcXFxcbnZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCdhcnRpY2xlX2lkPScraWQrJyZwYWdlPScrTVlfUEFHRSsnJnNpemU9MjAmc29ydGluZz0nK2dldE15VmFyKCdhMScsJ2xpa2VzJykpXFxcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCwgYm9keSkpLmRhdGE7IC8vbG9nKGRhdGEpXFxcXG5pZihNWV9QQUdFID09ICcxJyl7XFxcXG5pZihnZXRNeVZhcignYTEnLCdsaWtlcycpID09ICdsaWtlcycpe1xcXFxudmFyIHRleHQgPSAn5b2T5YmN5o6S5bqP77ya5oyJ54Ot5bqmJ1xcXFxufVxcXFxuaWYoZ2V0TXlWYXIoJ2ExJykgPT0gJ2NyZWF0ZWRfYXQnKXtcXFxcbnZhciB0ZXh0ID0gJ+W9k+WJjeaOkuW6j++8muaMieaXtumXtCdcXFxcbn1cXFxcbi8vbG9nKGdldE15VmFyKCdhMScsJ2xpa2VzJykpXFxcXG52YXIgcGFpeHUgPSAkKCcjbm9Mb2FkaW5nIycpLmI2NCgpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICBpZihnZXRNeVZhcignYTEnLCdsaWtlcycpID09ICdsaWtlcycpe1xcXFxuICAgICAgICBwdXRNeVZhcignYTEnLCdjcmVhdGVkX2F0JylcXFxcbiAgICAgICAgdG9hc3QoJ+aMieaXtumXtCcpXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgIH1cXFxcbiAgICBpZihnZXRNeVZhcignYTEnKSA9PSAnY3JlYXRlZF9hdCcpe1xcXFxuICAgICAgICBwdXRNeVZhcignYTEnLCdsaWtlcycpXFxcXG4gICAgICAgIHRvYXN0KCfmjInng63luqYnKVxcXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICB9XFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogYXBpdmlldy5iaWcoYXBpdmlldy5zdHJvbmcoJ+ivhOiuuuWIl+ihqCcpKSsnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0JythcGl2aWV3LmFkZHJlc3NUYWcocGFpeHUsdGV4dCksXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcXFxufSlcXFxcbn1cXFxcbmFwaXZpZXcucGluZ2x1bihkLGRhdGEpXFxcXG59ZWxzZXtcXFxcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXFxcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L2FydGljbGUvZGV0YWlsJ1xcXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ2lkPScraWQpXFxcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCxib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTpooTop4hcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnLFxcXFxuICAgIHVybDogJChkYXRhLnZpZGVvX2ZpbGUrJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGRhdGEpPT57XFxcXG4gICAgICAgIHJldHVybiAnaHR0cHM6Ly9ha21haXZpZGVvLmNkY2h1YW5nYW8uY29tJytpbnB1dFxcXFxuICAgIH0sZGF0YSksXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcXFxuICAgIC8vZXh0cmE6IHsnYmFja2dyb3VuZENvbG9yJzogJyNFMEY4RkYnfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTljp/niYdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnLFxcXFxuICAgIHVybDogJChkYXRhLnZpZGVvX2ZpbGUrJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGRhdGEpPT57XFxcXG4gICAgICAgIGlmKC9zYW1wbGUvLnRlc3QoaW5wdXQpKXtcXFxcbiAgICAgICAgICAgIHZhciB1cmwgPSBpbnB1dC5yZXBsYWNlKC9bXmEtekEtWjAtOV0oc2FtcGxlKS8sJycpXFxcXG4gICAgICAgICAgICByZXR1cm4gJ2h0dHBzOi8vYWttYWl2aWRlby5jZGNodWFuZ2FvLmNvbScrdXJsXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYoIS/ml6AvLnRlc3QoZGF0YS5udW1iZXIpKXtcXFxcbiAgICAgICAgICAgIHZhciB1cmwgPSBpbnB1dC5yZXBsYWNlKC9cXFxcXFxcXC8oW15cXFxcXFxcXC9dKylcXFxcXFxcXC4vLCcvJytkYXRhLm51bWJlcisnLicpXFxcXG4gICAgICAgICAgICByZXR1cm4gJ2h0dHBzOi8vYWttYWl2aWRlby5jZGNodWFuZ2FvLmNvbScrdXJsXFxcXG4gICAgICAgIH1cXFxcbiAgICB9LGRhdGEpLFxcXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXFxcbiAgICAvL2V4dHJhOiB7J2JhY2tncm91bmRDb2xvcic6ICcjRTBGOEZGJ31cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKSkrJzxicj48YnI+Jysn55Wq5Y+377yaJythcGl2aWV3LmdyYXkoZGF0YS5udW1iZXIpKydcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnKyfmvJTlkZjvvJonK2FwaXZpZXcuZ3JheShkYXRhLmFjdG9yKSsnPGJyPicrYXBpdmlldy5ncmF5KGRhdGEucHVibGlzaGVkX2F0LnNwbGl0KCcgJylbMF0pKydcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnK2FwaXZpZXcuZ3JheShkYXRhLmxlbmd0aCkrJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcrYXBpdmlldy5ncmF5KGRhdGEuc2l6ZSkrJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcrYXBpdmlldy5ncmF5KGRhdGEucXVhbGl0eSksXFxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG59KVxcXFxuYXBpdmlldy5iaWFvcWlhbihkLGRhdGEpXFxcXG5hcGl2aWV3Lnl1bGFudHUoZCxkYXRhKVxcXFxuLy9sb2coZGF0YS5jb250ZW50KVxcXFxuYXBpdmlldy50dXdlbihkLGRhdGEpXFxcXG5cXFxcbn1cXFxcbn1cXFxcblxcXFxuc2V0UmVzdWx0KGQpXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLor4Torrror6bmg4VcXFwiLFxcXCJwYXRoXFxcIjpcXFwicGlubHVuXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcXFxcXCJoYW5zaHVcXFxcXFxcIilcXFxcbnZhciBkID0gW107XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBNWV9QQVJBTVMudGl0bGUsXFxcXG4gICAgZGVzYzogTVlfUEFSQU1TLmRlc2MsXFxcXG4gICAgaW1nOiBNWV9QQVJBTVMuaW1nLFxcXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IGFwaXZpZXcuZ3JheShNWV9QQVJBTVMuZGVzYzEpLFxcXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZygn55u45YWz5Zue5aSN5YWxJytNWV9QQVJBTVMuaXRlbS5sZW5ndGgrJ+adoScpKSxcXFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG59KVxcXFxuTVlfUEFSQU1TLml0ZW0ucmV2ZXJzZSgpLmZvckVhY2goZGF0YSA9PiB7XFxcXG4gICAgaWYgKGRhdGEuYXZhdGFyID09ICcnKSB7XFxcXG4gICAgICAgIHZhciBhdmF0YXIgPSAnaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL0lubkRrLnRoLnBuZydcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICB2YXIgYXZhdGFyID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGRhdGEuYXZhdGFyKVxcXFxuICAgIH1cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZGF0YS5hdXRob3IsXFxcXG4gICAgICAgIGRlc2M6IGRhdGEuY3JlYXRlZF9hdCxcXFxcbiAgICAgICAgaW1nOiBhdmF0YXIsXFxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXFxcbiAgICB9KVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBhcGl2aWV3LmFkZHJlc3NUYWcoJ2hpa2VyOi8vZW1wdHknLCdAJytkYXRhLnRhZ19hdXRob3IrJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcpK2FwaXZpZXcuZ3JheShkYXRhLnRleHQpLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG4gICAgfSlcXFxcbn0pXFxcXG5zZXRSZXN1bHQoZClcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpppbpobVcXFwiLFxcXCJwYXRoXFxcIjpcXFwiaG9tZVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJpZihNWV9QQUdFID09ICcxJyl7XFxcXG52YXIgZW5kRGF0ZSA9IFxcXFxcXFwiMjAxOS0xMS0wOFxcXFxcXFwiO1xcXFxudmFyIGRhdGVzQXJyYXkgPSBhcGl2aWV3LmdldERhdGVzQXJyYXkoZW5kRGF0ZSk7XFxcXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9hcnRpY2xlL2RheSdcXFxcbnZhciBwdWJsaXNoZWRfYXQgPSBnZXRNeVZhcihcXFxcXFxcInB1Ymxpc2hlZF9hdFxcXFxcXFwiKSA9PSAnJyA/IGRhdGVzQXJyYXlbMF0gOiBnZXRNeVZhcihcXFxcXFxcInB1Ymxpc2hlZF9hdFxcXFxcXFwiKTsgLy9sb2cocHVibGlzaGVkX2F0KVxcXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ3B1Ymxpc2hlZF9hdD0nK3B1Ymxpc2hlZF9hdClcXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLGJvZHkpKS5kYXRhO1xcXFxuZGF0YS5pbmZvLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgdmFyIGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtLnRodW1iKVxcXFxuICAgIGlmKGl0ZW0ubW9kZWxfaWQgPT0gJzYnKXtcXFxcbiAgICB2YXIgdXJsID0gYGhpa2VyOi8vcGFnZS9lcmppMT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjYFxcXFxuICAgIH1lbHNle1xcXFxuICAgIHZhciB1cmwgPSBgaGlrZXI6Ly9wYWdlL2Vyamk/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IyNnYW1lVGhlbWUjYFxcXFxuICAgIH1cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogYCR7YXBpdmlldy5zdHJvbmcoaXRlbS50aXRsZSl9PGJyPiR7YXBpdmlldy5ncmF5KGl0ZW0uYXV0aG9yKX08YnI+JHthcGl2aWV3LmdyYXkoaXRlbS5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cXFxcXFxcXG4vZywnPGJyPicpKX1gLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICB9KVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGltZzogaW1nLFxcXFxuICAgICAgICB1cmw6IHVybCxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJyxcXFxcbiAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgIG1vZGVsX2lkOiBpdGVtLm1vZGVsX2lkLFxcXFxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxcXG4gICAgICAgICAgICBpbWc6IGltZ1xcXFxuICAgICAgICB9XFxcXG4gICAgfSlcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG4gICAgfSlcXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn4oCc4oCc5YiH5o2i4oCd4oCdJyxcXFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgocHVibGlzaGVkX2F0LGRhdGVzQXJyYXkpID0+IHtcXFxcbiAgICAgICAgc2hvd1NlbGVjdE9wdGlvbnMoe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICflvZPliY3vvJonK3B1Ymxpc2hlZF9hdCxcXFxcbiAgICAgICAgICAgIG9wdGlvbnM6IGRhdGVzQXJyYXksXFxcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJwdWJsaXNoZWRfYXRcXFxcXFxcIixpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFwiICsgaW5wdXRcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICB9LHB1Ymxpc2hlZF9hdCxkYXRlc0FycmF5KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbn0pXFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5LqM57qnXFxcIixcXFwicGF0aFxcXCI6XFxcImVyamlcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKVxcXFxudmFyIG1vZGVsX2lkID0gTVlfUEFSQU1TLm1vZGVsX2lkOyAvL2xvZyh0eXBlb2YgbW9kZWxfaWQpXFxcXG52YXIgaWQgPSBNWV9QQVJBTVMuaWQ7IC8vbG9nKGlkKVxcXFxudmFyIGltZyA9IE1ZX1BBUkFNUy5pbWdcXFxcbnZhciBkID0gW107XFxcXG5cXFxcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXFxcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L2FydGljbGUvZGV0YWlsJ1xcXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ2lkPScraWQpXFxcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCxib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXFxcbnN3aXRjaCAobW9kZWxfaWQpIHtcXFxcbiAgICBjYXNlIDE6XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgIHVybDogaW1nLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGAke2FwaXZpZXcuc3Ryb25nKGFwaXZpZXcuY2VudGVyKGRhdGEudGl0bGUpKX0ke2FwaXZpZXcuZ3JheShkYXRhLmRlc2NyaXB0aW9uKX0ke2FwaXZpZXcuZ3JheShhcGl2aWV3LmNlbnRlcihkYXRhLmF1dGhvcikpfWAsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgYnJlYWs7XFxcXG4gICAgY2FzZSAyOlxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcXFxuICAgICAgICBicmVhaztcXFxcbiAgICBjYXNlIDM6XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgIHVybDogaW1nLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJzop4bpopHigJ3igJ0nLFxcXFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9ha21haXZpZGVvLmNkY2h1YW5nYW8uY29tJyArIGRhdGEudmlkZW9fZmlsZSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBgPGgxPiR7YXBpdmlldy5zdHJvbmcoZGF0YS50aXRsZSl9PC9oMT4ke2FwaXZpZXcuZ3JheShkYXRhLmF1dGhvcil9YCxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBhcGl2aWV3LnR1d2VuKGQsZGF0YSlcXFxcbiAgICAgICAgYnJlYWs7XFxcXG4gICAgY2FzZSA0OlxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcXFxuICAgICAgICBicmVhaztcXFxcbiAgICBjYXNlIDU6XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgIHVybDogaW1nLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJznlLXlj7DigJ3igJ0nLFxcXFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9ha21haXZpZGVvLmNkY2h1YW5nYW8uY29tJyArIGRhdGEudmlkZW8sXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogYDxoMT4ke2FwaXZpZXcuc3Ryb25nKGRhdGEudGl0bGUpfTwvaDE+JHthcGl2aWV3LmdyYXkoZGF0YS5hdXRob3IpfWAsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgYXBpdmlldy50dXdlbihkLGRhdGEpXFxcXG4gICAgICAgIGJyZWFrO1xcXFxuICAgIGNhc2UgNjpcXFxcblxcXFxuICAgICAgICBicmVhaztcXFxcbn1cXFxcbmlmKGdldE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKSA9PSAnY3JlYXRlZF9hdCcpe1xcXFxudmFyIHRleHQgPSAn5b2T5YmN5o6S5bqP77ya5oyJ5pe26Ze0J1xcXFxufVxcXFxuaWYoZ2V0TXlWYXIoJ2ExJykgPT0gJ2xpa2VzJyl7XFxcXG52YXIgdGV4dCA9ICflvZPliY3mjpLluo/vvJrmjInng63luqYnXFxcXG59XFxcXG4vL2xvZyhnZXRNeVZhcignYTEnLCdjcmVhdGVkX2F0JykpXFxcXG52YXIgcGFpeHUgPSAkKCcjbm9Mb2FkaW5nIycpLmI2NCgpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICBpZihnZXRNeVZhcignYTEnLCdjcmVhdGVkX2F0JykgPT0gJ2NyZWF0ZWRfYXQnKXtcXFxcbiAgICAgICAgcHV0TXlWYXIoJ2ExJywnbGlrZXMnKVxcXFxuICAgICAgICB0b2FzdCgn5oyJ54Ot5bqmJylcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgfVxcXFxuICAgIGlmKGdldE15VmFyKCdhMScpID09ICdsaWtlcycpe1xcXFxuICAgICAgICBwdXRNeVZhcignYTEnLCdjcmVhdGVkX2F0JylcXFxcbiAgICAgICAgdG9hc3QoJ+aMieaXtumXtCcpXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZygn55u45YWz5Zue5aSN5YWxJytkYXRhLnJlcGx5X2NvdW50cysn5p2hJykpKydcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnK2FwaXZpZXcuYWRkcmVzc1RhZyhwYWl4dSx0ZXh0KSxcXFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG59KVxcXFxufVxcXFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvY29tbWVudC9saXN0J1xcXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ2FydGljbGVfaWQ9JytpZCsnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0yMCZzb3J0aW5nPScrZ2V0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpKVxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGFwaXZpZXcuZ2V0aHRtbCh1cmwsIGJvZHkpKS5kYXRhOyAvL2xvZyhkYXRhKVxcXFxuYXBpdmlldy5waW5nbHVuKGQsZGF0YSlcXFxcblxcXFxuc2V0UmVzdWx0KGQpXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Y+R546wXFxcIixcXFwicGF0aFxcXCI6XFxcImNsYVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgZW5kRGF0ZSA9IFxcXFxcXFwiMjAyMS0wOS0wMVxcXFxcXFwiO1xcXFxudmFyIGhlMSA9IFsn5Zu+5paHJywn6ZiF6K+7Jywn5b2x6KeGJywn55S15Y+wJywn5YaZ55yfJywn5ryr55S7J107IC8vbG9nKGhlMSkgXFxcXG52YXIgc3ViczEgPSBbJzEnLCcyJywnMycsJzUnLCcwJywnMCddOyAvL2xvZyhzdWJzMSkgXFxcXG52YXIgc3ViczIgPSBhcGl2aWV3LmdldFllYXJNb250aEFycmF5KGVuZERhdGUpOyAvL2xvZyhzdWJzMilcXFxcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXFxcbmhlMS5mb3JFYWNoKCh4LGkpPT57XFxcXG4gICAgdmFyIGN0aXRsZTEgPSB4XFxcXG4gICAgdmFyIHN1YjEgPSBzdWJzMVtpXVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBnZXRNeVZhcignY3RpdGxlMScsIGhlMVswXSkgPT0gY3RpdGxlMSA/ICfigJzigJzigJ3igJ0nK2N0aXRsZTEuZm9udGNvbG9yKCcjJytnZXRSYW5nZUNvbG9ycygpKTpjdGl0bGUxLFxcXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoY3RpdGxlMSxzdWIxKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJjdGl0bGUxXFxcXFxcXCIsIGN0aXRsZTEpO1xcXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwic3ViMVxcXFxcXFwiLHN1YjEpOyAgICAgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICAgICAgICAgIH0sIGN0aXRsZTEsc3ViMSksXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgIH0pXFxcXG59KVxcXFxufVxcXFxudmFyIGhlMSA9IGdldE15VmFyKFxcXFxcXFwiY3RpdGxlMVxcXFxcXFwiLGhlMVswXSk7IC8vbG9nKGhlMSlcXFxcbnZhciBzdWIxID0gZ2V0TXlWYXIoXFxcXFxcXCJzdWIxXFxcXFxcXCIsc3ViczFbMF0pOyAvL2xvZyhzdWIxKVxcXFxudmFyIHN1YjIgPSBzdWJzMltNWV9QQUdFLTFdOyAvL2xvZyhzdWIyKVxcXFxuXFxcXG5pZihoZTEgPT0gJ+WGmeecnycpe1xcXFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvc2VyaWVzL2FsYnVtL2xpc3QnXFxcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgndHlwZT0nK3N1YjErJyZwYWdlPScrTVlfUEFHRSsnJnNpemU9MzEmc29ydD1wdWJsaXNoZWRfYXQnKVxcXFxufWVsc2UgaWYoaGUxID09ICfmvKvnlLsnKXtcXFxcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L3Nlcmllcy9tYW5nYS9saXN0J1xcXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ3R5cGU9JytzdWIxKycmcGFnZT0nK01ZX1BBR0UrJyZzaXplPTMxJnNvcnQ9cHVibGlzaGVkX2F0JylcXFxcbn1lbHNle1xcXFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kaXNjb3ZlcnknXFxcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnbW9kZWxfaWQ9JytzdWIxKycmcHVibGlzaGVkX2F0PScrc3ViMisnJnBhZ2U9MSZzaXplPTMxJylcXFxcbn1cXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLGJvZHkpKS5kYXRhO1xcXFxuXFxcXG5zd2l0Y2ggKHN1YjEpIHtcXFxcbiAgICBjYXNlICcwJzpcXFxcbiAgICAgICAgYXBpdmlldy54aWV6aGVubWFuaHVheWlqaShkLGRhdGEpXFxcXG4gICAgICAgIGJyZWFrO1xcXFxuICAgIGNhc2UgJzEnOlxcXFxuICAgICAgICBhcGl2aWV3LnR1d2VueWlqaShkLCBkYXRhKVxcXFxuICAgICAgICBicmVhaztcXFxcbiAgICBjYXNlICcyJzpcXFxcbiAgICAgICAgYXBpdmlldy55dWVkdXlpamkoZCwgZGF0YSlcXFxcbiAgICAgICAgYnJlYWs7XFxcXG4gICAgY2FzZSAnMyc6XFxcXG4gICAgICAgIGFwaXZpZXcueWluZ3NoaXlpamkoZCwgZGF0YSlcXFxcbiAgICAgICAgYnJlYWs7XFxcXG4gICAgY2FzZSAnNSc6XFxcXG4gICAgICAgIGFwaXZpZXcuZGlhbnRhaXlpamkoZCwgZGF0YSlcXFxcbiAgICAgICAgYnJlYWs7XFxcXG59XFxcIn1dXCIsXCJwcm94eVwiOlwiXCJ9IiwicGljVXJsIjoiaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tL3N0b3JhZ2UvdGh1bWIvMjgyMTQvNjdiMzNjMzgwMDI3NC5qcGVnQGpzPSQuaGlrZXIuTVlfVElUTEUgPSBcIuS4gOS4qkFQUFwiOyhcbigpID0+IHtcbiAgICBjb25zdCBDcnlwdG9VdGlsID0gJC5yZXF1aXJlKFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcIik7XG4gICAgbGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXCJzYUlaWGM0eU12cTBJejU2XCIpO1xuICAgIGxldCBpdiA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXCJrYkpZdEJKVUVDVDBveWpvXCIpO1xuICAgIGxldCB0ZXh0RGF0YSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZUlucHV0U3RyZWFtKGlucHV0KTtcbiAgICBsZXQgZW5jcnlwdGVkID0gQ3J5cHRvVXRpbC5BRVMuZGVjcnlwdCh0ZXh0RGF0YSwga2V5LCB7bW9kZTogXCJBRVMvQ0JDL1BLQ1M3UGFkZGluZ1wiLCBpdjogaXZ9KTtcbiAgICByZXR1cm4gZW5jcnlwdGVkLnRvSW5wdXRTdHJlYW0oKTtcbn1cbikoKSIsInRpdGxlIjoi5oiR5Y675oyJ5pGp5oyJ5Ye655qE5oCn54ixXG5rYXNoaSJ9
Add Comment
Please, Sign In to add comment