Advertisement
xiaomianao666

邀您一起看:PONDEMIX (雪国おまる)|作品-帮助了一位无处可去的淫荡又纯洁女孩~她通过要求SEX来回报‼️①

Apr 18th, 2025
958
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥PONDEMIX (雪国おまる)|作品-帮助了一位无处可去的淫荡又纯洁女孩~她通过要求SEX来回报‼️①@@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+eUuycpe1xcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L3Nlcmllcy9tYW5nYS9saXN0J1xcbnZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCd0eXBlPScrc3ViMSsnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0zMSZzb3J0PXB1Ymxpc2hlZF9hdCcpXFxufWVsc2V7XFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kaXNjb3ZlcnknXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ21vZGVsX2lkPScrc3ViMSsnJnB1Ymxpc2hlZF9hdD0nK3N1YjIrJyZwYWdlPTEmc2l6ZT0zMScpXFxufVxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLGJvZHkpKS5kYXRhO1xcblxcbnN3aXRjaCAoc3ViMSkge1xcbiAgICBjYXNlICcwJzpcXG4gICAgICAgIGFwaXZpZXcueGllemhlbm1hbmh1YXlpamkoZCxkYXRhKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgJzEnOlxcbiAgICAgICAgYXBpdmlldy50dXdlbnlpamkoZCwgZGF0YSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlICcyJzpcXG4gICAgICAgIGFwaXZpZXcueXVlZHV5aWppKGQsIGRhdGEpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAnMyc6XFxuICAgICAgICBhcGl2aWV3LnlpbmdzaGl5aWppKGQsIGRhdGEpXFxuICAgICAgICBicmVhaztcXG4gICAgY2FzZSAnNSc6XFxuICAgICAgICBhcGl2aWV3LmRpYW50YWl5aWppKGQsIGRhdGEpXFxuICAgICAgICBicmVhaztcXG59XCJ9XSxcInBhcmFtc1wiOlwie1xcXCJpZFxcXCI6Mjc3MDcsXFxcImltZ1xcXCI6XFxcImh0dHBzOi8vam10cC5ncGdyZWlpLmNvbS9zdG9yYWdlL3RodW1iLzI3NzA3LzY3YTIxMTY3YjQwN2MuanBnQGpzPSQuaGlrZXIuTVlfVElUTEUgPSBcXFxcXFxcIuS4gOS4qkFQUFxcXFxcXFwiOyhcXFxcbigpID0+IHtcXFxcbiAgICBjb25zdCBDcnlwdG9VdGlsID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9hc3NldHMvY3J5cHRvLWphdmEuanNcXFxcXFxcIik7XFxcXG4gICAgbGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXFxcXFxcXCJzYUlaWGM0eU12cTBJejU2XFxcXFxcXCIpO1xcXFxuICAgIGxldCBpdiA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXFxcXFxcXCJrYkpZdEJKVUVDVDBveWpvXFxcXFxcXCIpO1xcXFxuICAgIGxldCB0ZXh0RGF0YSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZUlucHV0U3RyZWFtKGlucHV0KTtcXFxcbiAgICBsZXQgZW5jcnlwdGVkID0gQ3J5cHRvVXRpbC5BRVMuZGVjcnlwdCh0ZXh0RGF0YSwga2V5LCB7bW9kZTogXFxcXFxcXCJBRVMvQ0JDL1BLQ1M3UGFkZGluZ1xcXFxcXFwiLCBpdjogaXZ9KTtcXFxcbiAgICByZXR1cm4gZW5jcnlwdGVkLnRvSW5wdXRTdHJlYW0oKTtcXFxcbn1cXFxcbikoKVxcXCIsXFxcIm1vZGVsX2lkXFxcIjoyfVwiLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLkuIDkuKpBUFBcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNcIixcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJmaW5kX3J1bGVcIjpcImpzOlxcbnZhciBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKVxcbnZhciBtb2RlbF9pZCA9IE1ZX1BBUkFNUy5tb2RlbF9pZDsgLy9sb2codHlwZW9mIG1vZGVsX2lkKVxcbnZhciBpZCA9IE1ZX1BBUkFNUy5pZDsgLy9sb2coaWQpXFxudmFyIGltZyA9IE1ZX1BBUkFNUy5pbWdcXG52YXIgZCA9IFtdO1xcblxcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9hcnRpY2xlL2RldGFpbCdcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnaWQ9JytpZClcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCxib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXG5zd2l0Y2ggKG1vZGVsX2lkKSB7XFxuICAgIGNhc2UgMTpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGAke2FwaXZpZXcuc3Ryb25nKGFwaXZpZXcuY2VudGVyKGRhdGEudGl0bGUpKX0ke2FwaXZpZXcuZ3JheShkYXRhLmRlc2NyaXB0aW9uKX0ke2FwaXZpZXcuZ3JheShhcGl2aWV3LmNlbnRlcihkYXRhLmF1dGhvcikpfWAsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICB9KVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMjpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgMzpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJzop4bpopHigJ3igJ0nLFxcbiAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vYWttYWl2aWRlby5jZGNodWFuZ2FvLmNvbScgKyBkYXRhLnZpZGVvX2ZpbGUsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgNDpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcbiAgICAgICAgYnJlYWs7XFxuICAgIGNhc2UgNTpcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfigJzigJznlLXlj7DigJ3igJ0nLFxcbiAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vYWttYWl2aWRlby5jZGNodWFuZ2FvLmNvbScgKyBkYXRhLnZpZGVvLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBgPGgxPiR7YXBpdmlldy5zdHJvbmcoZGF0YS50aXRsZSl9PC9oMT4ke2FwaXZpZXcuZ3JheShkYXRhLmF1dGhvcil9YCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgIH0pXFxuICAgICAgICBhcGl2aWV3LnR1d2VuKGQsZGF0YSlcXG4gICAgICAgIGJyZWFrO1xcbiAgICBjYXNlIDY6XFxuXFxuICAgICAgICBicmVhaztcXG59XFxuaWYoZ2V0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpID09ICdjcmVhdGVkX2F0Jyl7XFxudmFyIHRleHQgPSAn5b2T5YmN5o6S5bqP77ya5oyJ5pe26Ze0J1xcbn1cXG5pZihnZXRNeVZhcignYTEnKSA9PSAnbGlrZXMnKXtcXG52YXIgdGV4dCA9ICflvZPliY3mjpLluo/vvJrmjInng63luqYnXFxufVxcbi8vbG9nKGdldE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKSlcXG52YXIgcGFpeHUgPSAkKCcjbm9Mb2FkaW5nIycpLmI2NCgpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgaWYoZ2V0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpID09ICdjcmVhdGVkX2F0Jyl7XFxuICAgICAgICBwdXRNeVZhcignYTEnLCdsaWtlcycpXFxuICAgICAgICB0b2FzdCgn5oyJ54Ot5bqmJylcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgfVxcbiAgICBpZihnZXRNeVZhcignYTEnKSA9PSAnbGlrZXMnKXtcXG4gICAgICAgIHB1dE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKVxcbiAgICAgICAgdG9hc3QoJ+aMieaXtumXtCcpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZygn55u45YWz5Zue5aSN5YWxJytkYXRhLnJlcGx5X2NvdW50cysn5p2hJykpKydcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0JythcGl2aWV3LmFkZHJlc3NUYWcocGFpeHUsdGV4dCksXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG59KVxcbn1cXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9jb21tZW50L2xpc3QnXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ2FydGljbGVfaWQ9JytpZCsnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0yMCZzb3J0aW5nPScrZ2V0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpKVxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLCBib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXG5hcGl2aWV3LnBpbmdsdW4oZCxkYXRhKVxcblxcbnNldFJlc3VsdChkKVwiLFwiZ3JvdXBcIjpcIiNcIixcInVhXCI6XCJtb2JpbGVcIixcInByZVJ1bGVcIjpcIlwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlh73mlbBcXFwiLFxcXCJwYXRoXFxcIjpcXFwiaGFuc2h1XFxcIixcXFwicnVsZVxcXCI6XFxcImNvbnN0IGFwaXZpZXcgPSB7XFxcXG4gICAgY29sb3I6ICh0ZXN0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcXFxcXCIjRkE3Mjk4XFxcXFxcXCI+JyArIHRlc3QgKyAnPC9mcm9udD4nO1xcXFxuICAgIH0sXFxcXG4gICAgc3Ryb25nOiAodGVzdCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gJzxzdHJvbmc+JyArIHRlc3QgKyAnPC9zdHJvbmc+JztcXFxcbiAgICB9LFxcXFxuICAgIHNtYWxsOiAodGVzdCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gJzxzbWFsbD4nICsgdGVzdCArICc8L3NtYWxsPic7XFxcXG4gICAgfSxcXFxcbiAgICBjZW50ZXI6ICh0ZXN0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiAnPHAgc3R5bGU9XFxcXFxcXCJ0ZXh0LWFsaWduOiBjZW50ZXI7XFxcXFxcXCI+JyArIHRlc3QgKyAnPC9wPidcXFxcbiAgICB9LFxcXFxuICAgIGJpZzogKHRlc3QpID0+IHtcXFxcbiAgICAgICAgcmV0dXJuICc8YmlnPicgKyB0ZXN0ICsgJzwvYmlnPic7XFxcXG4gICAgfSxcXFxcbiAgICBncmF5OiAodGVzdCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCI8Zm9udCBjb2xvcj0nZ3JheSc+XFxcXFxcXCIgKyB0ZXN0ICsgXFxcXFxcXCI8L2ZvbnQ+XFxcXFxcXCI7XFxcXG4gICAgfSxcXFxcbiAgICByaWNoOiAodGVzdCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCLigJjigJjigJnigJlcXFxcXFxcIiArIHRlc3Q7XFxcXG4gICAgfSxcXFxcbiAgICBhZGRyZXNzVGFnOiAodXJsLCB0ZXh0KSA9PiB7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcIjxhIGhyZWY9J1xcXFxcXFwiICsgdXJsICsgXFxcXFxcXCInPlxcXFxcXFwiICsgdGV4dCArIFxcXFxcXFwiPC9hPlxcXFxcXFwiXFxcXG4gICAgfSxcXFxcbiAgICBlbXB0eTogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCIsXFxcXG4gICAgbGF5b3V0OiBbXSxcXFxcbiAgICBub0xvYWQ6IFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIixcXFxcbiAgICB0aW1lc3RhbXA6ICgpID0+IE1hdGguZmxvb3IobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSxcXFxcbiAgICB0MTA6ICgpID0+IGFwaXZpZXcudGltZXN0YW1wKCkudG9TdHJpbmcoKSxcXFxcbiAgICB0MTM6ICgpID0+IGFwaXZpZXcudDEwKCkgKyAnMDAwJyxcXFxcbiAgICBob3N0OiBnZXRJdGVtKFxcXFxcXFwiYXBpXFxcXFxcXCIpLFxcXFxuICAgIGdldERhdGVzQXJyYXk6IChlbmREYXRlKSA9PiB7XFxcXG4gICAgICAgIC8vIOWwhue7k+adn+aXpeacn+Wtl+espuS4sui9rOaNouS4ukRhdGXlr7nosaFcXFxcbiAgICAgICAgbGV0IGVuZERhdGVPYmogPSBuZXcgRGF0ZShlbmREYXRlKTtcXFxcblxcXFxuICAgICAgICAvLyDojrflj5blvZPliY3ml6XmnJ9cXFxcbiAgICAgICAgbGV0IGN1cnJlbnREYXRlID0gbmV3IERhdGUoKTtcXFxcblxcXFxuICAgICAgICAvLyDliJ3lp4vljJbml6XmnJ/mlbDnu4RcXFxcbiAgICAgICAgbGV0IGRhdGVzQXJyYXkgPSBbXTtcXFxcblxcXFxuICAgICAgICAvLyDlvqrnjq/ku47lvZPliY3ml6XmnJ/liLDnu5PmnZ/ml6XmnJ9cXFxcbiAgICAgICAgd2hpbGUgKGN1cnJlbnREYXRlID49IGVuZERhdGVPYmopIHtcXFxcbiAgICAgICAgICAgIC8vIOWwhuaXpeacn+i9rOaNouS4ullZWVktTU0tRETmoLzlvI/nmoTlrZfnrKbkuLLlubbmt7vliqDliLDmlbDnu4RcXFxcbiAgICAgICAgICAgIGRhdGVzQXJyYXkucHVzaChjdXJyZW50RGF0ZS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF0pO1xcXFxuXFxcXG4gICAgICAgICAgICAvLyDlh4/ljrvkuIDlpKlcXFxcbiAgICAgICAgICAgIGN1cnJlbnREYXRlLnNldERhdGUoY3VycmVudERhdGUuZ2V0RGF0ZSgpIC0gMSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgLypcXFxcbiAgICAgICAgICAgIC8vIOWPjei9rOaVsOe7hOS7peaMiemZjeW6j+aOkuWIl+aXpeacn1xcXFxuICAgICAgICAgICAgZGF0ZXNBcnJheS5yZXZlcnNlKCk7XFxcXG4gICAgICAgICovXFxcXG4gICAgICAgIHJldHVybiBkYXRlc0FycmF5O1xcXFxuICAgIH0sXFxcXG4gICAgZ2V0WWVhck1vbnRoQXJyYXk6IChlbmREYXRlKSA9PiB7XFxcXG4gICAgICAgIGxldCBlbmREYXRlT2JqID0gbmV3IERhdGUoZW5kRGF0ZSk7XFxcXG4gICAgICAgIGxldCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XFxcXG4gICAgICAgIGxldCB5ZWFyTW9udGhBcnJheSA9IFtdO1xcXFxuXFxcXG4gICAgICAgIC8vIOehruS/neW9k+WJjeaXpeacn+S4jeWwj+S6jue7k+adn+aXpeacn1xcXFxuICAgICAgICBpZiAoY3VycmVudERhdGUgPCBlbmREYXRlT2JqKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4geWVhck1vbnRoQXJyYXk7IC8vIOWmguaenOW9k+WJjeaXpeacn+Wwj+S6jue7k+adn+aXpeacn++8jOebtOaOpei/lOWbnuepuuaVsOe7hFxcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgLy8g5b6q546v5LuO5b2T5YmN5pel5pyf5Yiw57uT5p2f5pel5pyfXFxcXG4gICAgICAgIHdoaWxlIChjdXJyZW50RGF0ZSA+PSBlbmREYXRlT2JqKSB7XFxcXG4gICAgICAgICAgICAvLyDojrflj5blvZPliY3ml6XmnJ/nmoTlubTlkozmnIjvvIzlubbmoLzlvI/ljJbkuLpcXFxcXFxcIllZWVktTU1cXFxcXFxcIuWtl+espuS4slxcXFxuICAgICAgICAgICAgbGV0IHllYXIgPSBjdXJyZW50RGF0ZS5nZXRGdWxsWWVhcigpO1xcXFxuICAgICAgICAgICAgbGV0IG1vbnRoID0gKGN1cnJlbnREYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7IC8vIOaciOS7veS7jjDlvIDlp4vvvIzmiYDku6XliqAx77yM5bm25LiU56Gu5L+d5piv5Lik5L2N5pWwXFxcXG4gICAgICAgICAgICBsZXQgeWVhck1vbnRoID0gYCR7eWVhcn0tJHttb250aH1gOyAvLyDmraPnoa7kvb/nlKjmqKHmnb/lrZfnrKbkuLJcXFxcblxcXFxuICAgICAgICAgICAgLy8g5bCG5bm05pyI5a2X56ym5Liy5re75Yqg5Yiw5pWw57uEXFxcXG4gICAgICAgICAgICB5ZWFyTW9udGhBcnJheS5wdXNoKHllYXJNb250aCk7XFxcXG5cXFxcbiAgICAgICAgICAgIC8vIOWHj+WOu+S4gOS4quaciFxcXFxuICAgICAgICAgICAgY3VycmVudERhdGUuc2V0TW9udGgoY3VycmVudERhdGUuZ2V0TW9udGgoKSAtIDEpO1xcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgcmV0dXJuIHllYXJNb250aEFycmF5O1xcXFxuICAgIH0sXFxcXG4gICAgQ3J5cHRvSlM6IG51bGwsIC8vIOeUqOS6juWtmOWCqCBDcnlwdG9KUyDlr7nosaFcXFxcbiAgICBpbml0Q3J5cHRvSlM6ICgpID0+IHtcXFxcbiAgICAgICAgaWYgKCFhcGl2aWV3LkNyeXB0b0pTKSB7XFxcXG4gICAgICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpOyAvLyDmiafooYzkuIDmrKEgZXZhbO+8jOehruS/nSBgQ3J5cHRvSlNgIOWPmOmHj+iiq+WumuS5iVxcXFxuICAgICAgICAgICAgYXBpdmlldy5DcnlwdG9KUyA9IENyeXB0b0pTOyAvLyDlsIYgYENyeXB0b0pTYCDnvJPlrZjliLAgYGFwaXZpZXcuQ3J5cHRvSlNgXFxcXG4gICAgICAgIH1cXFxcbiAgICB9LFxcXFxuICAgIEVuY3J5cHQ6ICh3b3JkKSA9PiB7XFxcXG4gICAgICAgIGFwaXZpZXcuaW5pdENyeXB0b0pTKCk7IC8vIOehruS/nSBDcnlwdG9KUyDlt7LliqDovb1cXFxcbiAgICAgICAgbGV0IGtleSA9IGFwaXZpZXcuQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcXFxcXCJsKmJ2JVppcTAwMEJpYW9nXFxcXFxcXCIpO1xcXFxuICAgICAgICBsZXQgaXYgPSBhcGl2aWV3LkNyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXFxcXFwiODU5NzUwNjAwMjkzOTI0OVxcXFxcXFwiKTtcXFxcbiAgICAgICAgbGV0IGVuY3J5cHQgPSBhcGl2aWV3LkNyeXB0b0pTLkFFUy5lbmNyeXB0KHdvcmQsIGtleSwge1xcXFxuICAgICAgICAgICAgaXY6IGl2LFxcXFxuICAgICAgICAgICAgbW9kZTogYXBpdmlldy5DcnlwdG9KUy5tb2RlLkNCQyxcXFxcbiAgICAgICAgICAgIHBhZGRpbmc6IGFwaXZpZXcuQ3J5cHRvSlMucGFkLlBrY3M3LFxcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgcmV0dXJuIGVuY3J5cHQudG9TdHJpbmcoKTsgLy8g6buY6K6k6L+U5ZueIEJhc2U2NCDnvJbnoIHnmoTlrZfnrKbkuLJcXFxcbiAgICB9LFxcXFxuICAgIERlY3J5cHQ6ICh3b3JkKSA9PiB7XFxcXG4gICAgICAgIGFwaXZpZXcuaW5pdENyeXB0b0pTKCk7IC8vIOehruS/nSBDcnlwdG9KUyDlt7LliqDovb1cXFxcbiAgICAgICAgbGV0IGtleSA9IGFwaXZpZXcuQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcXFxcXCJsKmJ2JVppcTAwMEJpYW9nXFxcXFxcXCIpO1xcXFxuICAgICAgICBsZXQgaXYgPSBhcGl2aWV3LkNyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXFxcXFwiODU5NzUwNjAwMjkzOTI0OVxcXFxcXFwiKTtcXFxcbiAgICAgICAgbGV0IGRlY3J5cHQgPSBhcGl2aWV3LkNyeXB0b0pTLkFFUy5kZWNyeXB0KHdvcmQsIGtleSwge1xcXFxuICAgICAgICAgICAgaXY6IGl2LFxcXFxuICAgICAgICAgICAgbW9kZTogYXBpdmlldy5DcnlwdG9KUy5tb2RlLkNCQyxcXFxcbiAgICAgICAgICAgIHBhZGRpbmc6IGFwaXZpZXcuQ3J5cHRvSlMucGFkLlBrY3M3LFxcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgcmV0dXJuIGRlY3J5cHQudG9TdHJpbmcoYXBpdmlldy5DcnlwdG9KUy5lbmMuVXRmOCk7IC8vIOino+Wvhue7k+aenOi9rOaNouS4uuaWh+acrOagvOW8j1xcXFxuICAgIH0sXFxcXG4gICAgRGVjcnlwdDE6IChpbnB1dCkgPT4ge1xcXFxuICAgICAgICByZXR1cm4gJChpbnB1dCkuaW1hZ2UoKCkgPT4ge1xcXFxuICAgICAgICAgICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgbGV0IGtleSA9IENyeXB0b1V0aWwuRGF0YS5wYXJzZVVURjgoXFxcXFxcXCJzYUlaWGM0eU12cTBJejU2XFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgbGV0IGl2ID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlVVRGOChcXFxcXFxcImtiSll0QkpVRUNUMG95am9cXFxcXFxcIik7XFxcXG4gICAgICAgICAgICBsZXQgdGV4dERhdGEgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VJbnB1dFN0cmVhbShpbnB1dCk7XFxcXG4gICAgICAgICAgICBsZXQgZW5jcnlwdGVkID0gQ3J5cHRvVXRpbC5BRVMuZGVjcnlwdCh0ZXh0RGF0YSwga2V5LCB7XFxcXG4gICAgICAgICAgICAgICAgbW9kZTogXFxcXFxcXCJBRVMvQ0JDL1BLQ1M3UGFkZGluZ1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGl2OiBpdlxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkLnRvSW5wdXRTdHJlYW0oKTtcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIGdldHRva2VuOiAoKSA9PiB7XFxcXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2goYXBpdmlldy5ob3N0KycvdjIuNS9yZWZyZXNoL3Rva2VuJywge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXFxcbiAgICAgICAgICAgICAgICAndXVpZCc6ICdjOWFkMjIxZi1iNDQ1LTM5ZDItODVmNS1hNjkzYzI0MTE1ZTMnLFxcXFxuICAgICAgICAgICAgICAgICd0aW1lc3RhbXAnOiBhcGl2aWV3LnQxMCgpLFxcXFxuICAgICAgICAgICAgICAgICdpcCc6ICcwLjAuMC4wJyxcXFxcbiAgICAgICAgICAgICAgICAndXNlci1rZXknOiAnNzYwMzU1Y2M4ODIxOGYwYzE1MTRmNTY3NjQzNjIwNjYnLFxcXFxuICAgICAgICAgICAgICAgICdwbGF0Zm9ybSc6ICcxJyxcXFxcbiAgICAgICAgICAgICAgICAnc2lnbic6IG1kNShtZDUoJzAuMC4wLjAuMS4nK2FwaXZpZXcudDEwKCkrJy43NjAzNTVjYzg4MjE4ZjBjMTUxNGY1Njc2NDM2MjA2Ni5jOWFkMjIxZi1iNDQ1LTM5ZDItODVmNS1hNjkzYzI0MTE1ZTMnKSsnbTRuMmhqUGVZV2tENnRGcHFLRl4zSE9eaDI0UEBpZFQnKSxcXFxcbiAgICAgICAgICAgICAgICAnYXBwLXZlcnNpb24nOiAnMi4yLjknLFxcXFxuICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aCc6ICcwJyxcXFxcbiAgICAgICAgICAgICAgICAnSG9zdCc6IGFwaXZpZXcuaG9zdC5zcGxpdCgnLy8nKVsxXSxcXFxcbiAgICAgICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdLZWVwLUFsaXZlJyxcXFxcbiAgICAgICAgICAgICAgICAvLydBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCcsXFxcXG4gICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2todHRwLzQuMy4xJyxcXFxcbiAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgICAgICB9KTsgLy9sb2coaHRtbClcXFxcbiAgICAgICAgdmFyIGh0bWwxID0gYXBpdmlldy5EZWNyeXB0KGh0bWwpOyAvL2xvZyhodG1sMSlcXFxcbiAgICAgICAgLy92YXIgbG9nZ2VkX2F0ID0gSlNPTi5wYXJzZShodG1sMSkuZGF0YS51c2VyLmxvZ2dlZF9hdC5zcGxpdCgnICcpWzBdOyBsb2cobG9nZ2VkX2F0KVxcXFxuICAgICAgICB2YXIgdG9rZW4gPSBKU09OLnBhcnNlKGh0bWwxKS5kYXRhLnVzZXIudG9rZW47IGxvZyh0b2tlbilcXFxcbiAgICAgICAgLy9zZXRJdGVtKFxcXFxcXFwibG9nZ2VkX2F0XFxcXFxcXCIsbG9nZ2VkX2F0KVxcXFxuICAgICAgICBzZXRJdGVtKFxcXFxcXFwidG9rZW5cXFxcXFxcIix0b2tlbilcXFxcbiAgICB9LFxcXFxuICAgIGdldGh0bWw6ICh1cmwsYm9keSkgPT4ge1xcXFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKHVybCwge1xcXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICd1dWlkJzogJ2M5YWQyMjFmLWI0NDUtMzlkMi04NWY1LWE2OTNjMjQxMTVlMycsXFxcXG4gICAgICAgICAgICAgICAgJ3RpbWVzdGFtcCc6IGFwaXZpZXcudDEwKCksXFxcXG4gICAgICAgICAgICAgICAgJ2lwJzogJzAuMC4wLjAnLFxcXFxuICAgICAgICAgICAgICAgICd1c2VyLWtleSc6ICc3NjAzNTVjYzg4MjE4ZjBjMTUxNGY1Njc2NDM2MjA2NicsXFxcXG4gICAgICAgICAgICAgICAgJ3BsYXRmb3JtJzogJzEnLFxcXFxuICAgICAgICAgICAgICAgICdzaWduJzogbWQ1KG1kNSgnMC4wLjAuMC4xLicrYXBpdmlldy50MTAoKSsnLjc2MDM1NWNjODgyMThmMGMxNTE0ZjU2NzY0MzYyMDY2LmM5YWQyMjFmLWI0NDUtMzlkMi04NWY1LWE2OTNjMjQxMTVlMycpKydtNG4yaGpQZVlXa0Q2dEZwcUtGXjNIT15oMjRQQGlkVCcpLFxcXFxuICAgICAgICAgICAgICAgICdhcHAtdmVyc2lvbic6ICcyLjIuOScsXFxcXG4gICAgICAgICAgICAgICAgJ3Rva2VuJzogZ2V0SXRlbShcXFxcXFxcInRva2VuXFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXFxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1MZW5ndGgnOiAnMCcsXFxcXG4gICAgICAgICAgICAgICAgJ0hvc3QnOiBhcGl2aWV3Lmhvc3Quc3BsaXQoJy8vJylbMV0sXFxcXG4gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnS2VlcC1BbGl2ZScsXFxcXG4gICAgICAgICAgICAgICAgLy8nQWNjZXB0LUVuY29kaW5nJzogJ2d6aXAnLFxcXFxuICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ29raHR0cC80LjMuMScsXFxcXG4gICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgYm9keTogYm9keSwgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcXFxuICAgICAgICAgICAgcmVqZWN0Q29kaW5nOiB0cnVlXFxcXG4gICAgICAgIH0pOyAvL2xvZyhodG1sKVxcXFxuICAgICAgICB2YXIgaHRtbDEgPSBhcGl2aWV3LkRlY3J5cHQoaHRtbCk7IC8vbG9nKGh0bWwxKVxcXFxuICAgICAgICByZXR1cm4gaHRtbDFcXFxcbiAgICB9LFxcXFxuICAgIHR1d2VueWlqaTogKGQsZGF0YSkgPT4ge1xcXFxuICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnB1Ymxpc2hlZF9hdC5zcGxpdCgnICcpWzBdLFxcXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcXFxuICAgICAgICAgICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMjZ2FtZVRoZW1lI2AsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICBtb2RlbF9pZDogaXRlbS5tb2RlbF9pZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogaW1nXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIHl1ZWR1eWlqaTogKGQsZGF0YSkgPT4ge1xcXFxuICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlICsgJ1xcXFxcXFxcbicgKyBpdGVtLmF1dGhvcixcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLmRlc2NyaXB0aW9uLFxcXFxuICAgICAgICAgICAgICAgIGltZzogaW1nLFxcXFxuICAgICAgICAgICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMjZ2FtZVRoZW1lI2AsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICBtb2RlbF9pZDogaXRlbS5tb2RlbF9pZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogaW1nXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIHlpbmdzaGl5aWppOiAoZCxkYXRhKSA9PiB7XFxcXG4gICAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIHZhciBpbWcgPSBhcGl2aWV3LkRlY3J5cHQxKCdodHRwczovL2ptdHAuZ3BncmVpaS5jb20nICsgaXRlbS50aHVtYilcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogaXRlbS5kZXNjcmlwdGlvbixcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNgLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxfaWQ6IGl0ZW0ubW9kZWxfaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGltZ1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICBkaWFudGFpeWlqaTogKGQsZGF0YSkgPT4ge1xcXFxuICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICcwJyxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNgLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbW9kZWxfaWQ6IGl0ZW0ubW9kZWxfaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLmlkLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGltZ1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICB4aWV6aGVubWFuaHVheWlqaTogKGQsZGF0YSkgPT4ge1xcXFxuICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICcwJyxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHknICsgaXRlbS5pZCkucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L3Nlcmllcy9jaGFwdGVycydcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ3Nlcmllc19pZD0nICsgTVlfVVJMLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHknLCAnJykpXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLCBib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBbXTtcXFxcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5jaGFwdGVycy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtLnRodW1iKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLmRlc2NyaXB0aW9uLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaW1nLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMjZ2FtZVRoZW1lI2AsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9pZDogMixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaW1nXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpXFxcXG4gICAgICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18xJ1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIHR1d2VuOiAoZCxkYXRhKSA9PiB7XFxcXG4gICAgICAgIHZhciBpbWdzID0gZGF0YS5jb250ZW50LnJlcGxhY2UoLyg8ZmlndXJlW1xcXFxcXFxcU1xcXFxcXFxcc10qPzxcXFxcXFxcXC9maWd1cmU+KS9nLCBcXFxcXFxcIkAkMUBcXFxcXFxcIik7XFxcXG4gICAgICAgIGltZ3Muc3BsaXQoXFxcXFxcXCJAXFxcXFxcXCIpLmZvckVhY2goaXQgPT4ge1xcXFxuICAgICAgICAgICAgaWYgKGl0LmluY2x1ZGVzKFxcXFxcXFwiZmlndXJlXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBwZGZoKGl0LCBcXFxcXFxcImltZyYmc3JjXFxcXFxcXCIpKVxcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIC8vZGVzYzogJzAnLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpbWcsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCdcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXQudHJpbSgpKSB7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0LFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICBiaWFvcWlhbjogKGQsZGF0YSkgPT4ge1xcXFxuICAgICAgICBkYXRhLnRhZ3MuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGl0ZW0gKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIC8vcHV0TXlWYXIoJ3NlYXJjaCcsIGlucHV0KVxcXFxuICAgICAgICAgICAgICAgICAgICAvL3JlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0sXFxcXG4gICAgeXVsYW50dTogKGQsZGF0YSkgPT4ge1xcXFxuICAgICAgICBkYXRhLm11bHRpcGxlX3BpYy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgbGV0IGltZyA9IGFwaXZpZXcuRGVjcnlwdDEoJ2h0dHBzOi8vam10cC5ncGdyZWlpLmNvbScgKyBpdGVtKVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGltZyxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0sXFxcXG4gICAgcGluZ2x1bjogKGQsIGRhdGEpID0+IHtcXFxcbiAgICAgICAgZGF0YS5mb3JFYWNoKGRhdGEgPT4ge1xcXFxuICAgICAgICAgICAgaWYgKGRhdGEuYXV0aG9yKSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuYXZhdGFyID09ICcnKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBhdmF0YXIgPSAnaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL0lubkRrLnRoLnBuZydcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYXZhdGFyID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGRhdGEuYXZhdGFyKVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS5hdXRob3IsXFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGRhdGEuY3JlYXRlZF9hdCxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBhdmF0YXIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIGlmIChkYXRhLnJlcGxpZXMubGVuZ3RoICE9ICcwJykge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBkYXRhLnRleHQgKyBhcGl2aWV3LmFkZHJlc3NUYWcoJ2hpa2VyOi8vcGFnZS9waW5sdW4nLCAnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx05p+l55yL5YWo6YOoJylcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBkYXRhLnRleHRcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuZ3JheSh0aXRsZSksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLmF1dGhvcixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRhdGEuY3JlYXRlZF9hdCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MxOiBkYXRhLnRleHQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGF2YXRhcixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IGRhdGEucmVwbGllcyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VUaXRsZTogZGF0YS5hdXRob3JcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG4kLmV4cG9ydHMgPSBhcGl2aWV3O1xcXFxuXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi54K55pKtXFxcIixcXFwicGF0aFxcXCI6XFxcImNsYTFcXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIGVuZERhdGUgPSBcXFxcXFxcIjIwMjEtMDktMDFcXFxcXFxcIjtcXFxcbnZhciBoZSA9IGFwaXZpZXcuZ2V0WWVhck1vbnRoQXJyYXkoZW5kRGF0ZSk7IC8vbG9nKGhlKSBcXFxcbnZhciBzdWJzID0gaGUgLy9sb2coc3VicykgXFxcXG5pZihNWV9QQUdFID09ICcxJyl7XFxcXG5oZS5mb3JFYWNoKCh4LGkpPT57XFxcXG4gICAgdmFyIGN0aXRsZSA9IHhcXFxcbiAgICB2YXIgc3ViID0gc3Vic1tpXVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBnZXRNeVZhcignY3RpdGxlJywgaGVbMF0pID09IGN0aXRsZSA/ICfigJzigJzigJ3igJ0nK2N0aXRsZS5mb250Y29sb3IoJyMnK2dldFJhbmdlQ29sb3JzKCkpOmN0aXRsZSxcXFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGN0aXRsZSxzdWIpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcImN0aXRsZVxcXFxcXFwiLCBjdGl0bGUpO1xcXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwic3ViXFxcXFxcXCIsc3ViKTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICAgICAgICAgIH0sIGN0aXRsZSxzdWIpLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCJcXFxcbiAgICB9KVxcXFxufSlcXFxcbn1cXFxcbnZhciBoZSA9IGdldE15VmFyKFxcXFxcXFwiY3RpdGxlXFxcXFxcXCIsaGVbMF0pXFxcXG52YXIgc3ViID0gZ2V0TXlWYXIoXFxcXFxcXCJzdWJcXFxcXFxcIixzdWJzWzBdKTsgLy9sb2coc3ViKVxcXFxuXFxcXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9hcnRpY2xlL2Rpc2NvdmVyeSdcXFxcbnZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCdtb2RlbF9pZD02JnB1Ymxpc2hlZF9hdD0nK3N1YisnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0yMCZzb3J0PXB1Ymxpc2hlZF9hdCcpXFxcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCxib2R5KSkuZGF0YTtcXFxcbmRhdGEuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxcXG4gICAgICAgIGRlc2M6ICcnLFxcXFxuICAgICAgICBpbWc6IGltZyxcXFxcbiAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2VyamkxP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSNgLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2NhcmQnLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgbW9kZWxfaWQ6IGl0ZW0ubW9kZWxfaWQsXFxcXG4gICAgICAgICAgICBpZDogaXRlbS5pZCxcXFxcbiAgICAgICAgICAgIGltZzogaW1nXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxufSlcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLngrnmkq3kuoznuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZXJqaTFcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKVxcXFxudmFyIG1vZGVsX2lkID0gTVlfUEFSQU1TLm1vZGVsX2lkOyAvL2xvZyh0eXBlb2YgbW9kZWxfaWQpXFxcXG52YXIgaWQgPSBNWV9QQVJBTVMuaWQ7IC8vbG9nKGlkKVxcXFxudmFyIGltZyA9IE1ZX1BBUkFNUy5pbWdcXFxcbnZhciBkID0gW107XFxcXG5pZihNWV9QQUdFID09ICcxJyl7XFxcXG5kLnB1c2goe1xcXFxuICAgIGRlc2M6ICcwJyxcXFxcbiAgICBpbWc6IGltZyxcXFxcbiAgICB1cmw6IGltZyxcXFxcbiAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnXFxcXG59KVxcXFxuaWYoZ2V0TXlWYXIoJ2EnKSA9PSAnMScpe1xcXFxudmFyIHRpdGxlMSA9ICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTlvbHniYfku4vnu41cXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnXFxcXG52YXIgdGl0bGUyID0gJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOKAmOKAmOeUqOaIt+ivhOS7t+KAmeKAmVxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCdcXFxcbn1lbHNle1xcXFxudmFyIHRpdGxlMSA9ICdcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHTigJjigJjlvbHniYfku4vnu43igJnigJlcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnXFxcXG52YXIgdGl0bGUyID0gJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOeUqOaIt+ivhOS7t1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCdcXFxcbn1cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IHRpdGxlMSxcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCk9PntcXFxcbiAgICAgICAgY2xlYXJNeVZhcignYScpXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgIH0pLFxcXFxuICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLFxcXFxuICAgIC8vZXh0cmE6IHsnYmFja2dyb3VuZENvbG9yJzogJyNFMEY4RkYnfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IHRpdGxlMixcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCk9PntcXFxcbiAgICAgICAgcHV0TXlWYXIoJ2EnLCcxJylcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgfSksXFxcXG4gICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsXFxcXG4gICAgLy9leHRyYTogeydiYWNrZ3JvdW5kQ29sb3InOiAnI0UwRjhGRid9XFxcXG59KVxcXFxufVxcXFxuaWYoZ2V0TXlWYXIoJ2EnKSA9PSAnMScpe1xcXFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvY29tbWVudC9saXN0J1xcXFxudmFyIGJvZHkgPSBhcGl2aWV3LkVuY3J5cHQoJ2FydGljbGVfaWQ9JytpZCsnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0yMCZzb3J0aW5nPScrZ2V0TXlWYXIoJ2ExJywnbGlrZXMnKSlcXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLCBib2R5KSkuZGF0YTsgLy9sb2coZGF0YSlcXFxcbmlmKE1ZX1BBR0UgPT0gJzEnKXtcXFxcbmlmKGdldE15VmFyKCdhMScsJ2xpa2VzJykgPT0gJ2xpa2VzJyl7XFxcXG52YXIgdGV4dCA9ICflvZPliY3mjpLluo/vvJrmjInng63luqYnXFxcXG59XFxcXG5pZihnZXRNeVZhcignYTEnKSA9PSAnY3JlYXRlZF9hdCcpe1xcXFxudmFyIHRleHQgPSAn5b2T5YmN5o6S5bqP77ya5oyJ5pe26Ze0J1xcXFxufVxcXFxuLy9sb2coZ2V0TXlWYXIoJ2ExJywnbGlrZXMnKSlcXFxcbnZhciBwYWl4dSA9ICQoJyNub0xvYWRpbmcjJykuYjY0KCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgIGlmKGdldE15VmFyKCdhMScsJ2xpa2VzJykgPT0gJ2xpa2VzJyl7XFxcXG4gICAgICAgIHB1dE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKVxcXFxuICAgICAgICB0b2FzdCgn5oyJ5pe26Ze0JylcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgfVxcXFxuICAgIGlmKGdldE15VmFyKCdhMScpID09ICdjcmVhdGVkX2F0Jyl7XFxcXG4gICAgICAgIHB1dE15VmFyKCdhMScsJ2xpa2VzJylcXFxcbiAgICAgICAgdG9hc3QoJ+aMieeDreW6picpXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZygn6K+E6K665YiX6KGoJykpKydcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHRcXFxcXFxcXHQnK2FwaXZpZXcuYWRkcmVzc1RhZyhwYWl4dSx0ZXh0KSxcXFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxcXG59KVxcXFxufVxcXFxuYXBpdmlldy5waW5nbHVuKGQsZGF0YSlcXFxcbn1lbHNle1xcXFxuaWYoTVlfUEFHRSA9PSAnMScpe1xcXFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kZXRhaWwnXFxcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnaWQ9JytpZClcXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLGJvZHkpKS5kYXRhOyAvL2xvZyhkYXRhKVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOmihOiniFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcsXFxcXG4gICAgdXJsOiAkKGRhdGEudmlkZW9fZmlsZSsnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoZGF0YSk9PntcXFxcbiAgICAgICAgcmV0dXJuICdodHRwczovL2FrbWFpdmlkZW8uY2RjaHVhbmdhby5jb20nK2lucHV0XFxcXG4gICAgfSxkYXRhKSxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxcXG4gICAgLy9leHRyYTogeydiYWNrZ3JvdW5kQ29sb3InOiAnI0UwRjhGRid9XFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdOWOn+eJh1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcsXFxcXG4gICAgdXJsOiAkKGRhdGEudmlkZW9fZmlsZSsnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoZGF0YSk9PntcXFxcbiAgICAgICAgaWYoL3NhbXBsZS8udGVzdChpbnB1dCkpe1xcXFxuICAgICAgICAgICAgdmFyIHVybCA9IGlucHV0LnJlcGxhY2UoL1teYS16QS1aMC05XShzYW1wbGUpLywnJylcXFxcbiAgICAgICAgICAgIHJldHVybiAnaHR0cHM6Ly9ha21haXZpZGVvLmNkY2h1YW5nYW8uY29tJyt1cmxcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZighL+aXoC8udGVzdChkYXRhLm51bWJlcikpe1xcXFxuICAgICAgICAgICAgdmFyIHVybCA9IGlucHV0LnJlcGxhY2UoL1xcXFxcXFxcLyhbXlxcXFxcXFxcL10rKVxcXFxcXFxcLi8sJy8nK2RhdGEubnVtYmVyKycuJylcXFxcbiAgICAgICAgICAgIHJldHVybiAnaHR0cHM6Ly9ha21haXZpZGVvLmNkY2h1YW5nYW8uY29tJyt1cmxcXFxcbiAgICAgICAgfVxcXFxuICAgIH0sZGF0YSksXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcXFxuICAgIC8vZXh0cmE6IHsnYmFja2dyb3VuZENvbG9yJzogJyNFMEY4RkYnfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IGFwaXZpZXcuYmlnKGFwaXZpZXcuc3Ryb25nKGRhdGEudGl0bGUpKSsnPGJyPjxicj4nKyfnlarlj7fvvJonK2FwaXZpZXcuZ3JheShkYXRhLm51bWJlcikrJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcrJ+a8lOWRmO+8micrYXBpdmlldy5ncmF5KGRhdGEuYWN0b3IpKyc8YnI+JythcGl2aWV3LmdyYXkoZGF0YS5wdWJsaXNoZWRfYXQuc3BsaXQoJyAnKVswXSkrJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcrYXBpdmlldy5ncmF5KGRhdGEubGVuZ3RoKSsnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0JythcGl2aWV3LmdyYXkoZGF0YS5zaXplKSsnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0JythcGl2aWV3LmdyYXkoZGF0YS5xdWFsaXR5KSxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbn0pXFxcXG5hcGl2aWV3LmJpYW9xaWFuKGQsZGF0YSlcXFxcbmFwaXZpZXcueXVsYW50dShkLGRhdGEpXFxcXG4vL2xvZyhkYXRhLmNvbnRlbnQpXFxcXG5hcGl2aWV3LnR1d2VuKGQsZGF0YSlcXFxcblxcXFxufVxcXFxufVxcXFxuXFxcXG5zZXRSZXN1bHQoZClcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuivhOiuuuivpuaDhVxcXCIsXFxcInBhdGhcXFwiOlxcXCJwaW5sdW5cXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcXFxcXFxcImhhbnNodVxcXFxcXFwiKVxcXFxudmFyIGQgPSBbXTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IE1ZX1BBUkFNUy50aXRsZSxcXFxcbiAgICBkZXNjOiBNWV9QQVJBTVMuZGVzYyxcXFxcbiAgICBpbWc6IE1ZX1BBUkFNUy5pbWcsXFxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgY29sX3R5cGU6ICdhdmF0YXInXFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogYXBpdmlldy5ncmF5KE1ZX1BBUkFNUy5kZXNjMSksXFxcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IGFwaXZpZXcuYmlnKGFwaXZpZXcuc3Ryb25nKCfnm7jlhbPlm57lpI3lhbEnK01ZX1BBUkFNUy5pdGVtLmxlbmd0aCsn5p2hJykpLFxcXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbn0pXFxcXG5NWV9QQVJBTVMuaXRlbS5yZXZlcnNlKCkuZm9yRWFjaChkYXRhID0+IHtcXFxcbiAgICBpZiAoZGF0YS5hdmF0YXIgPT0gJycpIHtcXFxcbiAgICAgICAgdmFyIGF2YXRhciA9ICdodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvSW5uRGsudGgucG5nJ1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIHZhciBhdmF0YXIgPSBhcGl2aWV3LkRlY3J5cHQxKCdodHRwczovL2ptdHAuZ3BncmVpaS5jb20nICsgZGF0YS5hdmF0YXIpXFxcXG4gICAgfVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBkYXRhLmF1dGhvcixcXFxcbiAgICAgICAgZGVzYzogZGF0YS5jcmVhdGVkX2F0LFxcXFxuICAgICAgICBpbWc6IGF2YXRhcixcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcXFxuICAgIH0pXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGFwaXZpZXcuYWRkcmVzc1RhZygnaGlrZXI6Ly9lbXB0eScsJ0AnK2RhdGEudGFnX2F1dGhvcisnXFxcXFxcXFx0XFxcXFxcXFx0XFxcXFxcXFx0JykrYXBpdmlldy5ncmF5KGRhdGEudGV4dCksXFxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbiAgICB9KVxcXFxufSlcXFxcbnNldFJlc3VsdChkKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIummlumhtVxcXCIsXFxcInBhdGhcXFwiOlxcXCJob21lXFxcIixcXFwicnVsZVxcXCI6XFxcImlmKE1ZX1BBR0UgPT0gJzEnKXtcXFxcbnZhciBlbmREYXRlID0gXFxcXFxcXCIyMDE5LTExLTA4XFxcXFxcXCI7XFxcXG52YXIgZGF0ZXNBcnJheSA9IGFwaXZpZXcuZ2V0RGF0ZXNBcnJheShlbmREYXRlKTtcXFxcbnZhciB1cmwgPSBhcGl2aWV3Lmhvc3QrJy92Mi41L2FydGljbGUvZGF5J1xcXFxudmFyIHB1Ymxpc2hlZF9hdCA9IGdldE15VmFyKFxcXFxcXFwicHVibGlzaGVkX2F0XFxcXFxcXCIpID09ICcnID8gZGF0ZXNBcnJheVswXSA6IGdldE15VmFyKFxcXFxcXFwicHVibGlzaGVkX2F0XFxcXFxcXCIpOyAvL2xvZyhwdWJsaXNoZWRfYXQpXFxcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgncHVibGlzaGVkX2F0PScrcHVibGlzaGVkX2F0KVxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGFwaXZpZXcuZ2V0aHRtbCh1cmwsYm9keSkpLmRhdGE7XFxcXG5kYXRhLmluZm8uZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICB2YXIgaW1nID0gYXBpdmlldy5EZWNyeXB0MSgnaHR0cHM6Ly9qbXRwLmdwZ3JlaWkuY29tJyArIGl0ZW0udGh1bWIpXFxcXG4gICAgaWYoaXRlbS5tb2RlbF9pZCA9PSAnNicpe1xcXFxuICAgIHZhciB1cmwgPSBgaGlrZXI6Ly9wYWdlL2VyamkxP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSNgXFxcXG4gICAgfWVsc2V7XFxcXG4gICAgdmFyIHVybCA9IGBoaWtlcjovL3BhZ2UvZXJqaT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI2dhbWVUaGVtZSNgXFxcXG4gICAgfVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBgJHthcGl2aWV3LnN0cm9uZyhpdGVtLnRpdGxlKX08YnI+JHthcGl2aWV3LmdyYXkoaXRlbS5hdXRob3IpfTxicj4ke2FwaXZpZXcuZ3JheShpdGVtLmRlc2NyaXB0aW9uLnJlcGxhY2UoL1xcXFxcXFxcbi9nLCc8YnI+JykpfWAsXFxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgIH0pXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgaW1nOiBpbWcsXFxcXG4gICAgICAgIHVybDogdXJsLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgbW9kZWxfaWQ6IGl0ZW0ubW9kZWxfaWQsXFxcXG4gICAgICAgICAgICBpZDogaXRlbS5pZCxcXFxcbiAgICAgICAgICAgIGltZzogaW1nXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXFxcbiAgICB9KVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICfigJzigJzliIfmjaLigJ3igJ0nLFxcXFxuICAgIHVybDogJCgpLmxhenlSdWxlKChwdWJsaXNoZWRfYXQsZGF0ZXNBcnJheSkgPT4ge1xcXFxuICAgICAgICBzaG93U2VsZWN0T3B0aW9ucyh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+W9k+WJje+8micrcHVibGlzaGVkX2F0LFxcXFxuICAgICAgICAgICAgb3B0aW9uczogZGF0ZXNBcnJheSxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcInB1Ymxpc2hlZF9hdFxcXFxcXFwiLGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8vXFxcXFxcXCIgKyBpbnB1dFxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgIH0scHVibGlzaGVkX2F0LGRhdGVzQXJyYXkpLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIlxcXFxufSlcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLkuoznuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZXJqaVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGFuc2h1XFxcXFxcXCIpXFxcXG52YXIgbW9kZWxfaWQgPSBNWV9QQVJBTVMubW9kZWxfaWQ7IC8vbG9nKHR5cGVvZiBtb2RlbF9pZClcXFxcbnZhciBpZCA9IE1ZX1BBUkFNUy5pZDsgLy9sb2coaWQpXFxcXG52YXIgaW1nID0gTVlfUEFSQU1TLmltZ1xcXFxudmFyIGQgPSBbXTtcXFxcblxcXFxuaWYoTVlfUEFHRSA9PSAnMScpe1xcXFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvYXJ0aWNsZS9kZXRhaWwnXFxcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnaWQ9JytpZClcXFxcbnZhciBkYXRhID0gSlNPTi5wYXJzZShhcGl2aWV3LmdldGh0bWwodXJsLGJvZHkpKS5kYXRhOyAvL2xvZyhkYXRhKVxcXFxuc3dpdGNoIChtb2RlbF9pZCkge1xcXFxuICAgIGNhc2UgMTpcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIGltZzogaW1nLFxcXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogYCR7YXBpdmlldy5zdHJvbmcoYXBpdmlldy5jZW50ZXIoZGF0YS50aXRsZSkpfSR7YXBpdmlldy5ncmF5KGRhdGEuZGVzY3JpcHRpb24pfSR7YXBpdmlldy5ncmF5KGFwaXZpZXcuY2VudGVyKGRhdGEuYXV0aG9yKSl9YCxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBicmVhaztcXFxcbiAgICBjYXNlIDI6XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogYDxoMT4ke2FwaXZpZXcuc3Ryb25nKGRhdGEudGl0bGUpfTwvaDE+JHthcGl2aWV3LmdyYXkoZGF0YS5hdXRob3IpfWAsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgYXBpdmlldy50dXdlbihkLGRhdGEpXFxcXG4gICAgICAgIGJyZWFrO1xcXFxuICAgIGNhc2UgMzpcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIGltZzogaW1nLFxcXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOinhumikeKAneKAnScsXFxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FrbWFpdmlkZW8uY2RjaHVhbmdhby5jb20nICsgZGF0YS52aWRlb19maWxlLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGA8aDE+JHthcGl2aWV3LnN0cm9uZyhkYXRhLnRpdGxlKX08L2gxPiR7YXBpdmlldy5ncmF5KGRhdGEuYXV0aG9yKX1gLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGFwaXZpZXcudHV3ZW4oZCxkYXRhKVxcXFxuICAgICAgICBicmVhaztcXFxcbiAgICBjYXNlIDQ6XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogYDxoMT4ke2FwaXZpZXcuc3Ryb25nKGRhdGEudGl0bGUpfTwvaDE+JHthcGl2aWV3LmdyYXkoZGF0YS5hdXRob3IpfWAsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgYXBpdmlldy50dXdlbihkLGRhdGEpXFxcXG4gICAgICAgIGJyZWFrO1xcXFxuICAgIGNhc2UgNTpcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIGltZzogaW1nLFxcXFxuICAgICAgICAgICAgdXJsOiBpbWcsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnXFxcXG4gICAgICAgIH0pXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOeUteWPsOKAneKAnScsXFxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FrbWFpdmlkZW8uY2RjaHVhbmdhby5jb20nICsgZGF0YS52aWRlbyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBgPGgxPiR7YXBpdmlldy5zdHJvbmcoZGF0YS50aXRsZSl9PC9oMT4ke2FwaXZpZXcuZ3JheShkYXRhLmF1dGhvcil9YCxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBhcGl2aWV3LnR1d2VuKGQsZGF0YSlcXFxcbiAgICAgICAgYnJlYWs7XFxcXG4gICAgY2FzZSA2OlxcXFxuXFxcXG4gICAgICAgIGJyZWFrO1xcXFxufVxcXFxuaWYoZ2V0TXlWYXIoJ2ExJywnY3JlYXRlZF9hdCcpID09ICdjcmVhdGVkX2F0Jyl7XFxcXG52YXIgdGV4dCA9ICflvZPliY3mjpLluo/vvJrmjInml7bpl7QnXFxcXG59XFxcXG5pZihnZXRNeVZhcignYTEnKSA9PSAnbGlrZXMnKXtcXFxcbnZhciB0ZXh0ID0gJ+W9k+WJjeaOkuW6j++8muaMieeDreW6pidcXFxcbn1cXFxcbi8vbG9nKGdldE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKSlcXFxcbnZhciBwYWl4dSA9ICQoJyNub0xvYWRpbmcjJykuYjY0KCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgIGlmKGdldE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKSA9PSAnY3JlYXRlZF9hdCcpe1xcXFxuICAgICAgICBwdXRNeVZhcignYTEnLCdsaWtlcycpXFxcXG4gICAgICAgIHRvYXN0KCfmjInng63luqYnKVxcXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcbiAgICB9XFxcXG4gICAgaWYoZ2V0TXlWYXIoJ2ExJykgPT0gJ2xpa2VzJyl7XFxcXG4gICAgICAgIHB1dE15VmFyKCdhMScsJ2NyZWF0ZWRfYXQnKVxcXFxuICAgICAgICB0b2FzdCgn5oyJ5pe26Ze0JylcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IGFwaXZpZXcuYmlnKGFwaXZpZXcuc3Ryb25nKCfnm7jlhbPlm57lpI3lhbEnK2RhdGEucmVwbHlfY291bnRzKyfmnaEnKSkrJ1xcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdFxcXFxcXFxcdCcrYXBpdmlldy5hZGRyZXNzVGFnKHBhaXh1LHRleHQpLFxcXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXFxcbn0pXFxcXG59XFxcXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9jb21tZW50L2xpc3QnXFxcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgnYXJ0aWNsZV9pZD0nK2lkKycmcGFnZT0nK01ZX1BBR0UrJyZzaXplPTIwJnNvcnRpbmc9JytnZXRNeVZhcignYTEnLCdjcmVhdGVkX2F0JykpXFxcXG52YXIgZGF0YSA9IEpTT04ucGFyc2UoYXBpdmlldy5nZXRodG1sKHVybCwgYm9keSkpLmRhdGE7IC8vbG9nKGRhdGEpXFxcXG5hcGl2aWV3LnBpbmdsdW4oZCxkYXRhKVxcXFxuXFxcXG5zZXRSZXN1bHQoZClcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlj5HnjrBcXFwiLFxcXCJwYXRoXFxcIjpcXFwiY2xhXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciBlbmREYXRlID0gXFxcXFxcXCIyMDIxLTA5LTAxXFxcXFxcXCI7XFxcXG52YXIgaGUxID0gWyflm77mlocnLCfpmIXor7snLCflvbHop4YnLCfnlLXlj7AnLCflhpnnnJ8nLCfmvKvnlLsnXTsgLy9sb2coaGUxKSBcXFxcbnZhciBzdWJzMSA9IFsnMScsJzInLCczJywnNScsJzAnLCcwJ107IC8vbG9nKHN1YnMxKSBcXFxcbnZhciBzdWJzMiA9IGFwaXZpZXcuZ2V0WWVhck1vbnRoQXJyYXkoZW5kRGF0ZSk7IC8vbG9nKHN1YnMyKVxcXFxuaWYoTVlfUEFHRSA9PSAnMScpe1xcXFxuaGUxLmZvckVhY2goKHgsaSk9PntcXFxcbiAgICB2YXIgY3RpdGxlMSA9IHhcXFxcbiAgICB2YXIgc3ViMSA9IHN1YnMxW2ldXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGdldE15VmFyKCdjdGl0bGUxJywgaGUxWzBdKSA9PSBjdGl0bGUxID8gJ+KAnOKAnOKAneKAnScrY3RpdGxlMS5mb250Y29sb3IoJyMnK2dldFJhbmdlQ29sb3JzKCkpOmN0aXRsZTEsXFxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChjdGl0bGUxLHN1YjEpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcImN0aXRsZTFcXFxcXFxcIiwgY3RpdGxlMSk7XFxcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJzdWIxXFxcXFxcXCIsc3ViMSk7ICAgICAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxuICAgICAgICAgICAgfSwgY3RpdGxlMSxzdWIxKSxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwiXFxcXG4gICAgfSlcXFxcbn0pXFxcXG59XFxcXG52YXIgaGUxID0gZ2V0TXlWYXIoXFxcXFxcXCJjdGl0bGUxXFxcXFxcXCIsaGUxWzBdKTsgLy9sb2coaGUxKVxcXFxudmFyIHN1YjEgPSBnZXRNeVZhcihcXFxcXFxcInN1YjFcXFxcXFxcIixzdWJzMVswXSk7IC8vbG9nKHN1YjEpXFxcXG52YXIgc3ViMiA9IHN1YnMyW01ZX1BBR0UtMV07IC8vbG9nKHN1YjIpXFxcXG5cXFxcbmlmKGhlMSA9PSAn5YaZ55yfJyl7XFxcXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9zZXJpZXMvYWxidW0vbGlzdCdcXFxcbnZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCd0eXBlPScrc3ViMSsnJnBhZ2U9JytNWV9QQUdFKycmc2l6ZT0zMSZzb3J0PXB1Ymxpc2hlZF9hdCcpXFxcXG59ZWxzZSBpZihoZTEgPT0gJ+a8q+eUuycpe1xcXFxudmFyIHVybCA9IGFwaXZpZXcuaG9zdCsnL3YyLjUvc2VyaWVzL21hbmdhL2xpc3QnXFxcXG52YXIgYm9keSA9IGFwaXZpZXcuRW5jcnlwdCgndHlwZT0nK3N1YjErJyZwYWdlPScrTVlfUEFHRSsnJnNpemU9MzEmc29ydD1wdWJsaXNoZWRfYXQnKVxcXFxufWVsc2V7XFxcXG52YXIgdXJsID0gYXBpdmlldy5ob3N0KycvdjIuNS9hcnRpY2xlL2Rpc2NvdmVyeSdcXFxcbnZhciBib2R5ID0gYXBpdmlldy5FbmNyeXB0KCdtb2RlbF9pZD0nK3N1YjErJyZwdWJsaXNoZWRfYXQ9JytzdWIyKycmcGFnZT0xJnNpemU9MzEnKVxcXFxufVxcXFxudmFyIGRhdGEgPSBKU09OLnBhcnNlKGFwaXZpZXcuZ2V0aHRtbCh1cmwsYm9keSkpLmRhdGE7XFxcXG5cXFxcbnN3aXRjaCAoc3ViMSkge1xcXFxuICAgIGNhc2UgJzAnOlxcXFxuICAgICAgICBhcGl2aWV3LnhpZXpoZW5tYW5odWF5aWppKGQsZGF0YSlcXFxcbiAgICAgICAgYnJlYWs7XFxcXG4gICAgY2FzZSAnMSc6XFxcXG4gICAgICAgIGFwaXZpZXcudHV3ZW55aWppKGQsIGRhdGEpXFxcXG4gICAgICAgIGJyZWFrO1xcXFxuICAgIGNhc2UgJzInOlxcXFxuICAgICAgICBhcGl2aWV3Lnl1ZWR1eWlqaShkLCBkYXRhKVxcXFxuICAgICAgICBicmVhaztcXFxcbiAgICBjYXNlICczJzpcXFxcbiAgICAgICAgYXBpdmlldy55aW5nc2hpeWlqaShkLCBkYXRhKVxcXFxuICAgICAgICBicmVhaztcXFxcbiAgICBjYXNlICc1JzpcXFxcbiAgICAgICAgYXBpdmlldy5kaWFudGFpeWlqaShkLCBkYXRhKVxcXFxuICAgICAgICBicmVhaztcXFxcbn1cXFwifV1cIn0iLCJwaWNVcmwiOiJodHRwczovL2ptdHAuZ3BncmVpaS5jb20vc3RvcmFnZS90aHVtYi8yNzcwNy82N2EyMTE2N2I0MDdjLmpwZ0Bqcz0kLmhpa2VyLk1ZX1RJVExFID0gXCLkuIDkuKpBUFBcIjsoXG4oKSA9PiB7XG4gICAgY29uc3QgQ3J5cHRvVXRpbCA9ICQucmVxdWlyZShcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXCIpO1xuICAgIGxldCBrZXkgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KFwic2FJWlhjNHlNdnEwSXo1NlwiKTtcbiAgICBsZXQgaXYgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VVVEY4KFwia2JKWXRCSlVFQ1Qwb3lqb1wiKTtcbiAgICBsZXQgdGV4dERhdGEgPSBDcnlwdG9VdGlsLkRhdGEucGFyc2VJbnB1dFN0cmVhbShpbnB1dCk7XG4gICAgbGV0IGVuY3J5cHRlZCA9IENyeXB0b1V0aWwuQUVTLmRlY3J5cHQodGV4dERhdGEsIGtleSwge21vZGU6IFwiQUVTL0NCQy9QS0NTN1BhZGRpbmdcIiwgaXY6IGl2fSk7XG4gICAgcmV0dXJuIGVuY3J5cHRlZC50b0lucHV0U3RyZWFtKCk7XG59XG4pKCkiLCJ0aXRsZSI6IlBPTkRFTUlYICjpm6rlm73jgYrjgb7jgosp772c5L2c5ZOBLeW4ruWKqeS6huS4gOS9jeaXoOWkhOWPr+WOu+eahOa3q+iNoeWPiOe6r+a0geWls+WtqX7lpbnpgJrov4fopoHmsYJTRVjmnaXlm57miqXigLzvuI/ikaAifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement