Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_快猫/红杏/含羞草/麻豆/AvPron/皇家会所/9sex/91TV/猫咪/破解VIP视频免费看@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICDlv6vnjKsv57qi5p2PL+WQq+e+nuiNiS/purvosYYvQXZQcm9uL+eah+WutuS8muaJgC85c2V4LzkxVFYv54yr5ZKqL+egtOino1ZJUOinhumikeWFjei0ueeciwovLyBAbmFtZXNwYWNlICAgIGh0dHA6Ly90YW1wZXJtb25rZXkubmV0LwovLyBAdmVyc2lvbiAgICAgIDAuMzEKLy8gQGRlc2NyaXB0aW9uICDmnaXkuI3lj4rop6Pph4rkuobvvIzlv6vkuIrovabvvIHvvIHvvIEKLy8gQGF1dGhvciAgICAgICB3MmYKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovdmlkZW9Db250ZW50LyoKCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmh4YWE4My5jb20vKgoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovcGxheXZpZGVvLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovbGl2ZS8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL2xpdmUKCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly9tYWRvdS5iZXQvKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vaW5kZXgKLy8gQG1hdGNoICAgICAgICBodHRwczovLyouY29tL25ldwovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vY2hhbm5lbC92aWRlb0xpc3QqCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qLmNvbS90YWdzKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8vKi5jb20vcmFua0xpc3QKLy8gQG1hdGNoICAgICAgICBodHRwczovL21hZG91LnR2LyoKCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL3ZpZGVvcy8qCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL2luZGV4L21vdmllL3BsYXkvaWQvKgovLyBAbWF0Y2ggICAgICAgIGh0dHBzOi8va2R0MjkuY29tLyoKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovdmlwL2luZGV4Lmh0bWwKLy8gQG1hdGNoICAgICAgICBodHRwczovLyovdmlwL2xpc3QtKi5odG1sCi8vIEBtYXRjaCAgICAgICAgaHR0cHM6Ly8qL2luZGV4L2hvbWUuaHRtbAovLyBAaWNvbiAgICAgICAgIGh0dHBzOi8vaW5kZXgubWFkb3UxOS50di9qc29uL2ljb24ucG5nCi8vIEBsaWNlbnNlICAgICAgTUlUCi8vIEBncmFudCBub25lCi8vID09L1VzZXJTY3JpcHQ9PQoKKGZ1bmN0aW9uICgpIHsKICAgICd1c2Ugc3RyaWN0JzsKCiAgICAvKiBub25lIOWmguaenOS4jeS9v+eUqCB1bnNhZmVXaW5kb3cg77yM5b+r54yr5omL5py656uv77yM5ZCr576e6I2JcGPnq6/kvJrmkq3mlL7lpLHotKXvvIzljp/lm6DmnKrnn6XjgIIKICAgIOWOn+WboO+8mumAmui/hyBAcmVxdWlyZSDliqDovb3nmoRobHPmj5DnpLrmib7kuI3liLDvvIzpgJrov4dpbXBvcnRfanPlr7zlhaVvayAqLwogICAgbGV0IGVycl9jbnQgPSAwOwoKICAgIGZ1bmN0aW9uIGltcG9ydF9qcyhzcmMpIHsKICAgICAgICBsZXQgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgICAgc2NyaXB0LnNyYyA9IHNyYzsKICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICB9CiAgICBpbXBvcnRfanMoImh0dHBzOi8vY2RuLnN0YXRpY2ZpbGUub3JnL2pxdWVyeS8xLjEwLjIvanF1ZXJ5Lm1pbi5qcyIpOwogICAgaW1wb3J0X2pzKCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9obHMuanMvMS4xLjUvaGxzLm1pbi5qcyIpOwogICAgaW1wb3J0X2pzKCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9kcGxheWVyLzEuMjYuMC9EUGxheWVyLm1pbi5qcyIpOwoKICAgIC8qIOWHveaVsOWKn+iDve+8muWKoOi9vURwbGF5ZXLmkq3mlL7op4bpopHvvIzlubbmmL7npLrop4bpopHlnLDlnYDjgIIg5Y+C5pWw6K+05piO77yadmlkZW9VcmzvvJrop4bpopHlnLDlnYAgZWzvvJrmkq3mlL7lmajliqDovb3kvY3nva4gZGl6aGk6IOWcsOWdgOaYvuekuuS9jee9riAgKi8KICAgIGZ1bmN0aW9uIHBsYXlfdmlkZW8odmlkZW9VcmwsIGVsLCBkaXpoaSkgewoKICAgICAgICBpZiAoIXZpZGVvVXJsIHx8ICFlbCB8fCAhZGl6aGkpIHRocm93IG5ldyBFcnJvcihg6YOo5YiG5Y+C5pWw5peg5pWI77yM6KeG6aKR5Zyw5Z2A77yaJHt2aWRlb1VybH3jgIHmkq3mlL7lmajkvY3nva7vvJoke2VsfeOAgeaPkOekuuS9jee9ru+8miR7ZGl6aGl9YCk7CgogICAgICAgIC8qIDEuIOaYvuekuuWcsOWdgCAqLwogICAgICAgIHZhciBteWRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIG15ZGl2LmlubmVySFRNTCA9IGA8ZGl2IGlkPSJteV9hZGRfZGl6aGkiIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPgogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7op4bpopHlnLDlnYDvvJo8YSBocmVmPSIke3ZpZGVvVXJsfSIgdGFyZ2V0PSJfYmxhbmsiPiR7dmlkZW9Vcmx9PC9hPjwvcD4KICAgICAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweCI+6Zeu6aKY5Y+N6aaIIG9yIOaUr+aMgeS9nOiAheivtwogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3NsZWF6eWZvcmsub3JnL3poLUNOL3NjcmlwdHMvNDU2NDk2IiB0YXJnZXQ9Il9ibGFuayI+44CQ54K55Ye75q2k5aSE44CRPC9hPu+8jOS9v+eUqOaEieW/q++8gTwvcD48L2Rpdj5gOwogICAgICAgIGRpemhpLmFmdGVyKG15ZGl2KTsKCiAgICAgICAgaWYgKHdpbmRvdy5kcCkgewogICAgICAgICAgICB3aW5kb3cuZHAucGF1c2UoKQogICAgICAgICAgICB3aW5kb3cuZHAuZGVzdHJveSgpCiAgICAgICAgICAgIHdpbmRvdy5kcCA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAvKiAyLiDmlrDlop7mkq3mlL7lmaggKi8KICAgICAgICB3aW5kb3cuZHAgPSBuZXcgRFBsYXllcih7CiAgICAgICAgICAgIGVsZW1lbnQ6IGVsLAogICAgICAgICAgICBhdXRvcGxheTogdHJ1ZSwKICAgICAgICAgICAgdGhlbWU6ICcjRkFERkEzJywKICAgICAgICAgICAgbG9vcDogdHJ1ZSwKICAgICAgICAgICAgbGFuZzogJ3poJywKICAgICAgICAgICAgc2NyZWVuc2hvdDogdHJ1ZSwKICAgICAgICAgICAgaG90a2V5OiB0cnVlLAogICAgICAgICAgICBwcmVsb2FkOiAnYXV0bycsCiAgICAgICAgICAgIHZpZGVvOiB7CiAgICAgICAgICAgICAgICB1cmw6IHZpZGVvVXJsLAogICAgICAgICAgICAgICAgdHlwZTogJ2hscycKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQoKICAgIC8qIOWHveaVsOWKn+iDve+8muWQjOS4iu+8jOWPr+WIh+aNoua4heaZsOW6piAgKi8KICAgIGZ1bmN0aW9uIHBsYXlfdmlkZW8yKHZpZGVvVXJsLCB2aWRlb1VybDIsIHZpZGVvVXJsMywgdmlkZW9Vcmw0LCBlbCwgZGl6aGkpIHsKICAgICAgICAvKiAxLiDmmL7npLrlnLDlnYAgKi8KICAgICAgICB2YXIgbXlkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICBteWRpdi5pbm5lckhUTUwgPSBgPGRpdiBpZD0ibXlfYWRkX2RpemhpIiBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7ms6jmhI/vvJrpg6jliIbop4bpopHlj6ozNjBQ77yM5YiH5o2i5ZCO5peg5rOV5pKt5pS+6K+05piO5LiN5a2Y5Zyo6auY5riF5pmw5bqm54mI5pys77yB77yB77yB6KeG6aKR5Zyw5Z2A77yaCiAgICAgICAgPHAgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweCI+MzYwUO+8mjxhIGhyZWY9IiR7dmlkZW9Vcmx9IiB0YXJnZXQ9Il9ibGFuayI+JHt2aWRlb1VybH08L2E+PC9wPgogICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPjQ4MFDvvJo8YSBocmVmPSIke3ZpZGVvVXJsMn0iIHRhcmdldD0iX2JsYW5rIj4ke3ZpZGVvVXJsMn08L2E+PC9wPgogICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPjcyMFDvvJo8YSBocmVmPSIke3ZpZGVvVXJsM30iIHRhcmdldD0iX2JsYW5rIj4ke3ZpZGVvVXJsM308L2E+PC9wPgogICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPjEwODBQ77yaPGEgaHJlZj0iJHt2aWRlb1VybDR9IiB0YXJnZXQ9Il9ibGFuayI+JHt2aWRlb1VybDR9PC9hPjwvcD4KICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7pl67popjlj43ppoggb3Ig5pSv5oyB5L2c6ICF6K+3CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9zbGVhenlmb3JrLm9yZy96aC1DTi9zY3JpcHRzLzQ1NjQ5NiIgdGFyZ2V0PSJfYmxhbmsiPuOAkOeCueWHu+atpOWkhOOAkTwvYT7vvIzkvb/nlKjmhInlv6vvvIE8L3A+PC9kaXY+YDsKICAgICAgICBkaXpoaSAmJiBkaXpoaS5hZnRlcihteWRpdik7CgogICAgICAgIC8qIDIuIOaWsOWinuaSreaUvuWZqCAqLwogICAgICAgIHdpbmRvdy5kcCA9IG5ldyBEUGxheWVyKHsKICAgICAgICAgICAgZWxlbWVudDogZWwsCiAgICAgICAgICAgIGF1dG9wbGF5OiB0cnVlLAogICAgICAgICAgICB0aGVtZTogJyNGQURGQTMnLAogICAgICAgICAgICBsb29wOiB0cnVlLAogICAgICAgICAgICBsYW5nOiAnemgnLAogICAgICAgICAgICBzY3JlZW5zaG90OiB0cnVlLAogICAgICAgICAgICBob3RrZXk6IHRydWUsCiAgICAgICAgICAgIHByZWxvYWQ6ICdhdXRvJywKICAgICAgICAgICAgdmlkZW86IHsKICAgICAgICAgICAgICAgIHF1YWxpdHk6IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICczNjBQJywKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB2aWRlb1VybCwKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2hscycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICc0ODBQJywKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB2aWRlb1VybDIsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdobHMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnNzIwUCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdmlkZW9VcmwzLAogICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaGxzJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJzEwODBQJywKICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB2aWRlb1VybDQsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdobHMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgZGVmYXVsdFF1YWxpdHk6IDAsCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0KCiAgICAvKiDlh73mlbDlip/og73vvJrlnKjnlYzpnaLkuIrmmL7npLrnqIvluo/plJnor6/vvIzkvr/kuo7liIbmnpAgICovCiAgICBmdW5jdGlvbiBzaG93X2Vycl9sb2coZXJyKSB7CiAgICAgICAgZXJyICYmIGNvbnNvbGUubG9nKGVycik7CiAgICAgICAgZXJyX2NudCsrOwogICAgICAgIGlmIChlcnJfY250ID49IDMwKSB7CiAgICAgICAgICAgIGVycl9jbnQgPSAwOwogICAgICAgICAgICB2YXIgbXlkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgICAgbXlkaXYuaW5uZXJIVE1MID0gYDxkaXYgaWQ9Im15X2FkZF9lcnJfbG9nIiBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij4KICAgICAgICAgICAg6Kej5p6Q5Ye66ZSZ77yMMS7mo4Dmn6XmmK/lkKbnmbvlvZXvvIEyLuivt+S7lOe7humYheivuzxhIGhyZWY9Imh0dHBzOi8vc2xlYXp5Zm9yay5vcmcvemgtQ04vc2NyaXB0cy80NTY0OTYiIHRhcmdldD0iX2JsYW5rIj7jgJDohJrmnKzor7TmmI7jgJE8L2E+5p+l55yL5piv5ZCm5pSv5oyB5L2g55qE5bmz5Y+w57uE5ZCI77yMCiAgICAgICAgICAgIOWmgumcgOW4ruWKqeivt+WkjeWItuS7peS4i+WGheWuueWIsOiEmuacrOivhOiuuuWMuu+8jOetieWAmeS9nOiAheWkhOeQhiEg6K+35Yqg5LiK5L2/55So55qE5bmz5Y+w57uE5ZCI77yM5aaC77yaY2hyb21lICsgdGFtcGVybW9ua2V5IOOAggogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7plJnor6/kv6Hmga/vvJoke2VyciB8fCAi5bCd6K+V5aSa5qyh5LuN54S25pyq6I635Y+W5Yiw5Zyw5Z2ALOWPr+iDveaYr+e9keermeW3suabtOaWsC4uLiJ9PC9wPgogICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4Ij7mk43kvZzns7vnu5/vvJoke25hdmlnYXRvci5wbGF0Zm9ybX08L3A+CiAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPua1j+iniOWZqO+8miR7bmF2aWdhdG9yLnVzZXJBZ2VudH08L3A+CiAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPuW9k+WJjeWcsOWdgO+8miR7bG9jYXRpb24uaHJlZn08L3A+CiAgICAgICAgICAgIDwvZGl2PmA7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImhlYWQiKS5hZnRlcihteWRpdik7CiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBkb19sb2dpbigpewogICAgICAgIGxldCBwaG9uZSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21vdmUtY2xpZW50LXVzZXItaW5mbycpKT8udXNlcj8udXNlcl9pbmZvPy5waG9uZTsKICAgICAgICBsZXQgZXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnSFRNTEV2ZW50cycpOwogICAgICAgICAgICBldmVudC5pbml0RXZlbnQoImlucHV0IiwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgaWYocGhvbmUpewogICAgICAgICAgICAvKiDoh6rliqjnmbvlvZUgKi8KICAgICAgICAgICAgbGV0IGFjY291bnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dC52YW4tZmllbGRfX2NvbnRyb2wnKVswXTsKICAgICAgICAgICAgYWNjb3VudC52YWx1ZSA9IHBob25lOwogICAgICAgICAgICBhY2NvdW50LmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgICAgICAgICBsZXQgcGFzc3dvcmQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dC52YW4tZmllbGRfX2NvbnRyb2wnKVsxXTsKICAgICAgICAgICAgcGFzc3dvcmQudmFsdWUgPSAiMTIzNDU2IjsKICAgICAgICAgICAgcGFzc3dvcmQuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nKS5jbGljaygpOwogICAgICAgIH1lbHNlewogICAgICAgICAgICAvKiDoh6rliqjms6jlhowgKi8KICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2LmxvZ2luXzFfMl8xJyk/LmNsaWNrKCk7CiAgICAgICAgICAgIGxldCBhY2NvdW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudmFuLWZpZWxkX19jb250cm9sJylbMF07CiAgICAgICAgICAgIGFjY291bnQudmFsdWUgPSBbIjEzMCIsICIxMzEiLCAiMTMyIiwgIjEzMyIsICIxMzUiLCAiMTM3IiwgIjEzOCIsICIxNzAiLCAiMTg3IiwgIjE4OSJdWyBNYXRoLmZsb29yKDEwICogTWF0aC5yYW5kb20oKSldICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwMDAwKTsKICAgICAgICAgICAgYWNjb3VudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgbGV0IHBhc3N3b3JkID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudmFuLWZpZWxkX19jb250cm9sJylbMV07CiAgICAgICAgICAgIHBhc3N3b3JkLnZhbHVlID0gIjEyMzQ1NiI7CiAgICAgICAgICAgIHBhc3N3b3JkLmRpc3BhdGNoRXZlbnQoZXZlbnQpOwogICAgICAgICAgICBsZXQgcGFzc3dvcmQyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQudmFuLWZpZWxkX19jb250cm9sJylbMl07CiAgICAgICAgICAgIHBhc3N3b3JkMi52YWx1ZSA9ICIxMjM0NTYiOwogICAgICAgICAgICBwYXNzd29yZDIuZGlzcGF0Y2hFdmVudChldmVudCk7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nKS5jbGljaygpOwogICAgICAgIH0KICAgIH0KCiAgICBsZXQgZmxhZyA9IDA7CiAgICBmdW5jdGlvbiBnZXRfdmlkZW91cmwoKSB7CiAgICAgICAgbGV0IHZpZGVvVXJsID0gbnVsbCwgdmlkZW9VcmwyID0gbnVsbCwgdmlkZW9VcmwzID0gbnVsbCwgdmlkZW9Vcmw0ID0gbnVsbDsKICAgICAgICBsZXQgZWwgPSBudWxsOwogICAgICAgIGxldCBkaXpoaSA9IG51bGw7CiAgICAgICAgbGV0IHBsYXllciA9IG51bGw7CiAgICAgICAgbGV0IHNoaWthbiA9IG51bGw7CiAgICAgICAgbGV0IGFkcyA9IG51bGw7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLyog54yr5ZKqdmlwICovCiAgICAgICAgICAgIGlmIChsb2NhdGlvbi5ocmVmLm1hdGNoKCJodHRwczovL3d3dy4uKj8uY29tL3ZpcC8iKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuY29udGVudC1pdGVtICBhLnZpZGVvLXBpYyIpPy5mb3JFYWNoKCBhID0+IHthLmhyZWYgPSBhLmhyZWYucmVwbGFjZSgiL3ZpcC9wbGF5LSIsIi9zaGlwaW4vZGV0YWlsLSIpfSk7CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJb54yr5ZKqXeinhumikemhtemdou+8jOacquiOt+WPluWIsOWcsOWdgO+8jOe7p+e7reWwneivlS4uLiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIDlzZXggKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly8uKj8vaW5kZXgvbW92aWUvcGxheS9pZC8iKSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjZHBsYXllciIpOwogICAgICAgICAgICAgICAgZGl6aGkgPSBkb2N1bWVudC5ib2R5LmlubmVySFRNTC5tYXRjaCgibW92aWVzLyguKj8pX3ByZXZpZXcuanBnLnR4dCIpWzFdLnNwbGl0KCcvJyk7LyogJCgic2NyaXB0IikudGV4dCgpICovCiAgICAgICAgICAgICAgICAvKiAxLueCueWHu+ivleeci++8iOS4jemcgOimge+8iSAqLwogICAgICAgICAgICAgICAgaWYgKHBsYXllciAmJiBkaXpoaSAmJiBmbGFnID09IDApIHsKICAgICAgICAgICAgICAgICAgICAvKiAyLuino+aekOecn+WunuWcsOWdgCAqLwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gYGh0dHBzOi8vOXMubTMuYmNhODM0ZDYwMjU3LmNvbS8ke2RpemhpWzBdfS8ke2RpemhpWzFdfS8zNjBQLyR7ZGl6aGlbMl19XzM2MFAubTN1OGA7IGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsMiA9IGBodHRwczovLzlzLm0zLmJjYTgzNGQ2MDI1Ny5jb20vJHtkaXpoaVswXX0vJHtkaXpoaVsxXX0vNDgwUC8ke2RpemhpWzJdfV80ODBQLm0zdThgOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AMjoiLCB2aWRlb1VybDIpOwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsMyA9IGBodHRwczovLzlzLm0zLmJjYTgzNGQ2MDI1Ny5jb20vJHtkaXpoaVswXX0vJHtkaXpoaVsxXX0vNzIwUC8ke2RpemhpWzJdfV83MjBQLm0zdThgOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AMzoiLCB2aWRlb1VybDMpOwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsNCA9IGBodHRwczovLzlzLm0zLmJjYTgzNGQ2MDI1Ny5jb20vJHtkaXpoaVswXX0vJHtkaXpoaVsxXX0vMTA4MFAvJHtkaXpoaVsyXX1fMTA4MFAubTN1OGA7IGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA0OiIsIHZpZGVvVXJsNCk7CiAgICAgICAgICAgICAgICAgICAgLyogMy52aXDop4bpopHpnIDopoHnp7vpmaTnmbvlvZXmoYYgKi8KICAgICAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjbG9naW4tdGlwLW1vZGFsIik7IGlmIChhZHMpIGFkcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGFkcyk7CiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZpcC10aXAtbW9kYWwiKTsgaWYgKGFkcykgYWRzLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYWRzKTsKICAgICAgICAgICAgICAgICAgICAvKiA0LuaSreaUvuato+eJhyAqLwogICAgICAgICAgICAgICAgICAgIHBsYXlfdmlkZW8yKHZpZGVvVXJsLCB2aWRlb1VybDIsIHZpZGVvVXJsMywgdmlkZW9Vcmw0LCBwbGF5ZXIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5ub3RpY2UiKSk7CiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFnID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAvKiAzLjEg5YWN6LS56KeG6aKR6ZyA6KaB5Yqg6L295pKt5pS+5ZCO56e76Zmk5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnBhdXNlLWFkLWltZ2JveCIpOyBpZiAoYWRzKSBhZHMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhZHMpOwogICAgICAgICAgICAgICAgICAgIC8qIDUu5YGc5q2i5a6a5pe25ZmoICovCiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiWzlzZXhd6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog55qH5a625Lya5omAICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vd3d3LmhqaHMuKj8vdmlkZW9zLyIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHBsYXllciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNkcGxheWVyIik7CiAgICAgICAgICAgICAgICAvKiAxLueCueWHu+ivleeci++8iOS4jemcgOimge+8iSAqLwogICAgICAgICAgICAgICAgaWYgKHBsYXllciAmJiB3aW5kb3cuYXBpPy5xdWFsaXR5Py51cmwpIHsKICAgICAgICAgICAgICAgICAgICAvKiAyLuino+aekOecn+WunuWcsOWdgCAqLwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gd2luZG93LmFwaS5xdWFsaXR5LnVybC5yZXBsYWNlKCJzdW8uIiwgIiIpLnJlcGxhY2UoIl9zdW8iLCAiIik7IGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIC8qIDMu56e76Zmk5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBwbGF5ZXIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5oZWFkbGluZSIpKTsKICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlvnmoflrrbkvJrmiYBd6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyogVGhlIEFWIFByb27vvIzlhbzlrrnmiYvmnLogKyBQQwogICAgICAgICAgICDlt7Lnn6XnvLrpmbc6IOiLpeS9v+eUqERwbGF5ZXIsIOWImSBjaHJvbWUvc2FmYXJpIOaSreaUvuato+W4uO+8iOaXoOazleaWsOagh+etvuaSreaUvu+8jOWPr+iDveaciemZkOWItu+8ie+8jGtpd2kgbTN1OOWcsOWdgOiOt+WPluaIkOWKn++8jOS9huaSreaUvuWksei0pe+8gQogICAgICAgICAgICDlt7Lnn6XnvLrpmbc6IOWPr+iDvee9keermeWtmOWcqOmZkOWItu+8jOaOp+WItuWPsOS4rXBsYXllci5hcGkoImhscyIp5pyJ5YC877yM5L2G6ISa5pys6I635Y+W5Li6bnVsbCDjgILlj6rmnInkvb/nlKggdW5zYWZlV2luZG93LnBsYXllci5hcGkoImhscyIp6IO96I635Y+W5YiwIO+8jAogICAgICAgICAgICDkvYbnlLHkuo51c2Vyc2NyaXB05LiN5pSv5oyBdW5zYWZlV2luZG9377yM5pWFc2FmYXJp5rWP6KeI5ZmoK3VzZXJzY3JpcHTml6DmlYjjgILmlLnkuLrku448c2NyaXB0Lz7lhoXlrrnmn6Xmib5tM3U45Zyw5Z2AICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vdGhlYXYuKj8uY29tL3ZpZGVvcy8iKSAhPSBudWxsIHx8CiAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYubWF0Y2goImh0dHBzOi8vdGhlLio/LmZ1bi92aWRlb3MvIikgIT0gbnVsbCApIHsKICAgICAgICAgICAgICAgIGlmICgxKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIvvvIjkuI3pnIDopoHvvIkgKi8KICAgICAgICAgICAgICAgICAgICAvKiAyLuino+aekOecn+WunuWcsOWdgCAqLwogICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gd2luZG93LnBsYXllcj8uYXBpKCJobHMiKT8udXJsPy5zcGxpdCgnPycpWzBdIHx8IHdpbmRvdy5tM2t5Py5zcGxpdCgnPycpWzBdOyAvKiDor6XmlrnmoYjlnKhzYWZhcmnmtY/op4jlmagrdXNlcnNjcmlwdOS4i+aXoOaViCAqLwogICAgICAgICAgICAgICAgICAgIC8qIHZpZGVvVXJsID0gZG9jdW1lbnQuYm9keS5pbm5lckhUTUwubWF0Y2goImh0dHBzOiguKj8pLm0zdTgiKVswXTsgICQoInNjcmlwdCIpLnRleHQoKSAqLwogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIC8qIDMu56e76Zmk5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnRhYmxlIik7IGlmIChhZHMpIGFkcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5zcG9uc29yIik7IGlmIChhZHMpIGFkcy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgIGFkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5yYXRlX2JveCIpOyBpZiAoYWRzKSBhZHMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZ3JlZW4iKTsgaWYgKGFkcykgYWRzLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICAvKiBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIucGxheWVyIiksIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImgyLnRpdGxlIikpO+ivpeaWueahiOWcqGtpd2krdGVtcGVybW9ua2V55LiL5peg5pWIICovCiAgICAgICAgICAgICAgICAgICAgUGxheWVyanMoeyBpZDogImxheWVyIiwgZmlsZTogdmlkZW9VcmwsIGF1dG9wbGF5OiAxIH0pOy8vaWQ6ICJwbGF5ZXIiCiAgICAgICAgICAgICAgICAgICAgLyogNS7lgZzmraLlrprml7blmaggKi8KICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJbVGhlIEFWIFByb25d6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog5b+r54yr77yM5YW85a655omL5py6ICsgUEMgKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly8uKj9rbS4qPy5jb20vdmlkZW9Db250ZW50LyIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIC8qIDEu54K55Ye76K+V55yL77yI5LiN6ZyA6KaB77yJICovCiAgICAgICAgICAgICAgICAvKiAyLuino+aekOecn+WunuWcsOWdgCAqLwogICAgICAgICAgICAgICAgdmlkZW9VcmwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdmlkZW9Db250ZW50Iik/Ll9fdnVlX18/LmZvcm1hdFVybDsKICAgICAgICAgICAgICAgIGlmICh2aWRlb1VybCkgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIC8qIDMu56e76Zmk5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgYWRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLmV4Y2hhbmdlQmciKTsgaWYgKGFkcyAhPSBudWxsKSBhZHMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAvKiA0LuaSreaUvuato+eJhyAqLwogICAgICAgICAgICAgICAgICAgIHBsYXlfdmlkZW8odmlkZW9VcmwsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5iYWNrSW1nIiksIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi52aWRlb1RpdGxlIikgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2IHAubmFtZSIpKTsKICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIlvlv6vnjKtd6KeG6aKR6aG16Z2i77yM5pyq6I635Y+W5Yiw5Zyw5Z2A77yM57un57ut5bCd6K+VLi4uIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog57qi5p2P77yM5YW85a655omL5py6ICsgUEMgKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly8uKj8uaHhhYS4qPy5jb20vIy9tb3Zlcy9wbGF5dmlkZW8vIikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgbGV0IGxvZ2luID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnBsYXlfdmlkZW9fd2RsXzJfMiIpOwogICAgICAgICAgICAgICAgc2hpa2FuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnNoaWthbiIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5vbl9wbGF5Iik7CiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIgZGl2I21zZSIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5wbGF5X3ZpZGVvXzEgZGl2Iik7CiAgICAgICAgICAgICAgICBpZihsb2dpbil7CiAgICAgICAgICAgICAgICAgICAgLyogMC7nmbvlvZUgb3Ig5rOo5YaMICovCiAgICAgICAgICAgICAgICAgICAgbG9naW4uY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICBkb19sb2dpbigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hpa2FuKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIsgKi8KICAgICAgICAgICAgICAgICAgICBzaGlrYW4uY2xpY2soKTsgY29uc29sZS5sb2coIueCueWHu+ivleeci++8gSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAocGxheWVyPy5fX3Z1ZV9fPy5wbGF5VXJsKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMi7op6PmnpDnnJ/lrp7lnLDlnYAgKi8KICAgICAgICAgICAgICAgICAgICBsZXQgdmlkZW9VcmwgPSBwbGF5ZXIuX192dWVfXy5wbGF5VXJsLnNwbGl0KCcmdGltZScpWzBdOyBjb25zb2xlLmxvZygi55yf5a6e5Zyw5Z2AOiIsIHZpZGVvVXJsKTsKICAgICAgICAgICAgICAgICAgICAvKiAzLuenu+mZpOivleeciyAqLwogICAgICAgICAgICAgICAgICAgIHBsYXllci5fX3Z1ZV9fLnBsYXllcj8uaGxzPy5kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIgZGl2I21zZSIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5wbGF5X3ZpZGVvXzEgZGl2LmRwbGF5ZXIiKSwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Lm1vdmVfbmFtZSIpIHx8IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5wbGF5X21haW5fMSIpKTsKICAgICAgICAgICAgICAgICAgICAvKiA1LuWBnOatouWumuaXtuWZqCAqLwogICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwobXlfdGltZXIpOyBjb25zb2xlLmxvZygi5YGc5q2i5a6a5pe25Zmo77yBIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiW+e6ouadj13op4bpopHpobXpnaLvvIzmnKrojrflj5bliLDlnLDlnYDvvIznu6fnu63lsJ3or5UuLi4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvKiDnuqLmnY/vvIzmiYvmnLrnn63op4bpopEgKi8KICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uaHJlZi5tYXRjaCgiaHR0cHM6Ly8uKj8vIy9zaG90VmlkZW9MaXN0IikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgcGxheWVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LnNob3V0X2xpc3QiKTsKICAgICAgICAgICAgICAgIGlmKCFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJidXR0b24jcG9qaWUiKSl7CiAgICAgICAgICAgICAgICAgICAgLyogMS4g5pi+56S65Zyw5Z2AICovCiAgICAgICAgICAgICAgICAgICAgdmFyIG15ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICAgICAgbXlkaXYuaW5uZXJIVE1MID0gYDxwIGlkPSJteV9hZGRfZGl6aGkiIHN0eWxlPSJjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgiPjxidXR0b24gaWQ9InBvamllIj7ngrnmraTnoLTop6M8L2J1dHRvbj7lkI7vvIzop4bpopHmoIfpopjliY3kvJrlh7rnjrDigJzinJTigJ3lrZfmoLfvvIzngrnlh7vmoIfpopjlsIbmiZPlvIDmlrDpobXpnaLnnIvop4bpopHvvIE8L3A+YDsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYudmFuLW5hdi1iYXJfX2NvbnRlbnQiKS5hZnRlcihteWRpdik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKHBsYXllciAmJiBwbGF5ZXIuX192dWVfXy5wbGF5TGlzdDEpewogICAgICAgICAgICAgICAgICAgIC8qIDIu54K56Kej56C06KejICovCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiYnV0dG9uI3BvamllIikub25jbGljayA9IGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2aWRlb1VybF9saXN0ID0gcGxheWVyLl9fdnVlX18ucGxheUxpc3QxOyBjb25zb2xlLmxvZygi55u05pKt5Zyw5Z2AOiIsIHZpZGVvVXJsX2xpc3QpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGl2bGlzdCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdi5ib3hfbGVmdCBkaXYuYm94X3B1YmxpYyBkaXYuYm94X3B1YmxpY18xXzIgIik7CiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZW4gPSAodmlkZW9VcmxfbGlzdC5sZW5ndGggPiBkaXZsaXN0Lmxlbmd0aCkgPyBkaXZsaXN0Lmxlbmd0aCA6IHZpZGVvVXJsX2xpc3QubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZsaXN0W2ldLmlubmVySFRNTCA9IGA8cD48YSBocmVmPSJodHRwczovL2pzY2RuLmxvcmR6aGFuZy54eXovJHt2aWRlb1VybF9saXN0W2ldLnNufS8xMDAwMGtiL2hscy9pbmRleC5tM3U4IiB0YXJnZXQ9Il9ibGFuayI+4pyUJHtkaXZsaXN0W2ldLmlubmVyVGV4dH08L2E+PC9wPmA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgLyog5Y+z6L6555qEICovCiAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvVXJsX2xpc3QgPSBwbGF5ZXIuX192dWVfXy5wbGF5TGlzdDI7IGNvbnNvbGUubG9nKCLnm7Tmkq3lnLDlnYA6IiwgdmlkZW9VcmxfbGlzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpdmxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuYm94X3JpZ2h0IGRpdi5ib3hfcHVibGljIGRpdi5ib3hfcHVibGljXzFfMiAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gKHZpZGVvVXJsX2xpc3QubGVuZ3RoID4gZGl2bGlzdC5sZW5ndGgpID8gZGl2bGlzdC5sZW5ndGggOiB2aWRlb1VybF9saXN0Lmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZsaXN0W2ldLmlubmVySFRNTCA9IGA8cD48YSBocmVmPSJodHRwczovL2pzY2RuLmxvcmR6aGFuZy54eXovJHt2aWRlb1VybF9saXN0W2ldLnNufS8xMDAwMGtiL2hscy9pbmRleC5tM3U4IiB0YXJnZXQ9Il9ibGFuayI+4pyUJHtkaXZsaXN0W2ldLmlubmVyVGV4dH08L2E+PC9wPmA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIC8qIDMu5YGc5q2i5a6a5pe25ZmoICovCiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog5ZCr576e6I2J6KeG6aKRIO+8jOWFvOWuueaJi+acuiArIFBDICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goIi92aWRlb0NvbnRlbnQvIikgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgc2hpa2FuID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLnZhbi1pY29uLXBsYXktY2lyY2xlLW8iKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJhLmxpbmtPdXRCdXR0b24udHJ5Iik7IC8qIOWJjemdouS4uuaJi+acuuOAguWQjumdouS4ulBDICovCiAgICAgICAgICAgICAgICBwbGF5ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYjdmlkZW9Db250ZW50UGxheWVyIikgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3RyeVZpZGVvIik7CiAgICAgICAgICAgICAgICBhZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuZml4ZWRUcnlXYXRjaFNob3dCdXR0b25MaW5lIik7CiAgICAgICAgICAgICAgICBpZiAoc2hpa2FuKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMS7ngrnlh7vor5XnnIsgKi8KICAgICAgICAgICAgICAgICAgICBzaGlrYW4uY2xpY2soKTsgY29uc29sZS5sb2coIueCueWHu+ivleeci++8gSIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAocGxheWVyICYmIHBsYXllci5fX3Z1ZV9fLnZpZGVvVXJsKSB7CiAgICAgICAgICAgICAgICAgICAgLyogMi7op6PmnpDnnJ/lrp7lnLDlnYAgKi8KICAgICAgICAgICAgICAgICAgICB2aWRlb1VybCA9IHBsYXllci5fX3Z1ZV9fLnZpZGVvVXJsLnNwbGl0KC9zdGFydC4qP3NpZ24vKS5qb2luKCdzaWduJyk7IGNvbnNvbGUubG9nKCLnnJ/lrp7lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgICAgIC8qIDMu56e76Zmk6K+V55yL44CB5bm/5ZGKICovCiAgICAgICAgICAgICAgICAgICAgcGxheWVyLl9fdnVlX18udmlkZW9PYmogJiYgcGxheWVyLl9fdnVlX18udmlkZW9PYmouaGxzICYmIHBsYXllci5fX3Z1ZV9fLnZpZGVvT2JqLmhscy5kZXN0cm95KCk7CiAgICAgICAgICAgICAgICAgICAgYWRzICYmIChhZHMuc3R5bGUuZGlzcGxheSA9ICJub25lIik7CiAgICAgICAgICAgICAgICAgICAgLyogNC7mkq3mlL7mraPniYcgKi8KICAgICAgICAgICAgICAgICAgICBwbGF5X3ZpZGVvKHZpZGVvVXJsLCBwbGF5ZXIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5wdWJsaWNWaWRlb0luZm9Cb3ggcC5uYW1lIikgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2LmluZm9BcmVhQm94IikpOwogICAgICAgICAgICAgICAgICAgIC8qIDUu5YGc5q2i5a6a5pe25ZmoICovCiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7IGNvbnNvbGUubG9nKCLlgZzmraLlrprml7blmajvvIEiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJb5ZCr576e6I2JXeinhumikemhtemdou+8jOacquiOt+WPluWIsOWcsOWdgO+8jOe7p+e7reWwneivlS4uLiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qIOWQq+e+nuiNie+8jFBD56uv77yM55u05pKtICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goIi9saXZlLyIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHBsYXllciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdi5WaWRlb0F1dGhBZG1pbkJnIikgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2I2xpdmVQbGF5ZXIiKTsKICAgICAgICAgICAgICAgIHZpZGVvVXJsID0gcGxheWVyLl9fdnVlX18udmlkZW9VcmwgfHwgcGxheWVyLl9fdnVlX18udmlkZW9Db250ZW50LnB1bGw7IGNvbnNvbGUubG9nKCLnm7Tmkq3lnLDlnYA6IiwgdmlkZW9VcmwpOwogICAgICAgICAgICAgICAgcGxheV92aWRlbyh2aWRlb1VybCwgcGxheWVyLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYudXNlckluZm8gcC5uYW1lIikpOwogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLyog5ZCr576e6I2J77yM5omL5py656uv77yM55u05pKtICovCiAgICAgICAgICAgIGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goIi8vaDUuKj8vbGl2ZSIpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHBsYXllciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiNwdWJsaWNMaXZlTGlzdE1vZHVsZSIpOwogICAgICAgICAgICAgICAgbGV0IHZpZGVvVXJsX2xpc3QgPSBwbGF5ZXIuX192dWVfXy5saXN0OyBjb25zb2xlLmxvZygi55u05pKt5Zyw5Z2AOiIsIHZpZGVvVXJsX2xpc3QpOwogICAgICAgICAgICAgICAgbGV0IGRpdmxpc3QgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ1bC5saXZlTGlzdEJnIGxpIC5ib3R0b20iKTsKICAgICAgICAgICAgICAgIGxldCBsZW4gPSAodmlkZW9VcmxfbGlzdC5sZW5ndGggPiBkaXZsaXN0Lmxlbmd0aCkgPyBkaXZsaXN0Lmxlbmd0aCA6IHZpZGVvVXJsX2xpc3QubGVuZ3RoOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICAgICAgICAgIGRpdmxpc3RbaV0uaW5uZXJIVE1MICs9ICc8cD48YSBocmVmPSInICsgdmlkZW9VcmxfbGlzdFtpXS5wdWxsICsgJyIgdGFyZ2V0PSJfYmxhbmsiPicgKyB2aWRlb1VybF9saXN0W2ldLnB1bGwgKyAnPC9hPjwvcD4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChteV90aW1lcik7CiAgICAgICAgICAgICAgICAvKiAxLiDmmL7npLrlnLDlnYAgKi8KICAgICAgICAgICAgICAgIG15ZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICBteWRpdi5pbm5lckhUTUwgPSAnPHAgaWQ9Im15X2FkZF9kaXpoaSIgc3R5bGU9ImNvbG9yOnJlZDtmb250LXNpemU6MTRweCI+5o+Q56S677ya5b2m56WW5Lus77yM6K+354K55Ye75Zu+54mH5LiL5pa555qE6ZO+5o6l55yL56C06Kej5ZCO55qE55u05pKt6KeG6aKR77yBPC9wPic7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJkaXYudG9wQmFubmVyQmciKS5hZnRlcihteWRpdik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAvKiDpurvosYZUViAqLyAvKiA5MVRWICovCiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgidmlwX2xldmVsIiwgJzEnKTsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCLlnLDlnYDmnKrljLnphY3vvIzlgZzmraLlrprml7blmaghIik7CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKG15X3RpbWVyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzaG93X2Vycl9sb2cobnVsbCk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coYCR7ZXJyfWApOwogICAgICAgICAgICBzaG93X2Vycl9sb2coZXJyKTsKICAgICAgICB9CiAgICB9CgogICAgbGV0IG15X3RpbWVyID0gc2V0SW50ZXJ2YWwoZ2V0X3ZpZGVvdXJsLCAyMDAwKTsKCiAgICB2YXIgb2xkaHJlZiA9IGxvY2F0aW9uLmhyZWY7CiAgICBzZXRJbnRlcnZhbChmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKGxvY2F0aW9uLmhyZWYgIT0gb2xkaHJlZikgewogICAgICAgICAgICBjb25zb2xlLmxvZygi55uR5ZCs5Yiw5Zyw5Z2A5Y+Y5YyWLOWGjeasoeWQr+WKqOOAkOiOt+WPluinhumikeWumuaXtuWZqOOAkSEiKTsKICAgICAgICAgICAgdmFyIHh4eCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNteV9hZGRfZGl6aGkiKTsgeHh4ICYmIHh4eC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHh4eCk7IC8qIOWQq+e+nuiNieaJi+acuumcgOimgeWIoOmZpOS5i+WJjeeahOaPkOekuiAqLwogICAgICAgICAgICBvbGRocmVmID0gbG9jYXRpb24uaHJlZjsKICAgICAgICAgICAgZXJyX2NudCA9IDA7CiAgICAgICAgICAgIG15X3RpbWVyID0gc2V0SW50ZXJ2YWwoZ2V0X3ZpZGVvdXJsLCAxMDAwKTsKICAgICAgICB9CiAgICB9LCAxMDAwKTsKCn0pKCk7
Add Comment
Please, Sign In to add comment