Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@豆瓣新版.D@eyJmaXJzdEhlYWRlciI6ImNsYXNzIiwibGFzdF9jaGFwdGVyX3J1bGUiOiIiLCJ0aXRsZSI6IuixhueTo+aWsOeJiC5EIiwiYXV0aG9yIjoiKG/LmOKXocuYbykmUmVib3JuIiwidXJsIjoiaHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tL2ovbmV3X3NlYXJjaF9zdWJqZWN0cz9yYW5nZT0wLDEwJnN0YXJ0PWZ5cGFnZUAtMUAqMjBAJnRhZ3M9ZnljbGFzcyZmeXNvcnQmZnlhcmVhJmZ5eWVhciIsInZlcnNpb24iOjEwLCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoi5YWo6YOoJueUteW9sSbnlLXop4bliacm57u86Im6JuWKqOa8qybnuqrlvZXniYcm55+t54mHIiwiY2xhc3NfdXJsIjoiJueUteW9sSbnlLXop4bliacm57u86Im6JuWKqOa8qybnuqrlvZXniYcm55+t54mHIiwiYXJlYV9uYW1lIjoi5YWo6YOoJuS4reWbveWkp+mZhibnvo7lm70m5Lit5Zu96aaZ5rivJuS4reWbveWPsOa5vibml6XmnKwm6Z+p5Zu9JuiLseWbvSbms5Xlm70m5b635Zu9JuaEj+Wkp+WIqSbopb/nj63niZkm5Y2w5bqmJuazsOWbvSbkv4TnvZfmlq8m5LyK5pyXJuWKoOaLv+WkpybmvrPlpKfliKnkupom54ix5bCU5YWwJueRnuWFuCblt7Topb8m5Li56bqmIiwiYXJlYV91cmwiOiJjb3VudHJpZXM9JmNvdW50cmllcz3kuK3lm73lpKfpmYYmY291bnRyaWVzPee+juWbvSZjb3VudHJpZXM95Lit5Zu96aaZ5rivJmNvdW50cmllcz3kuK3lm73lj7Dmub4mY291bnRyaWVzPeaXpeacrCZjb3VudHJpZXM96Z+p5Zu9JmNvdW50cmllcz3oi7Hlm70mY291bnRyaWVzPeazleWbvSZjb3VudHJpZXM95b635Zu9JmNvdW50cmllcz3mhI/lpKfliKkmY291bnRyaWVzPeilv+ePreeJmSZjb3VudHJpZXM95Y2w5bqmJmNvdW50cmllcz3ms7Dlm70mY291bnRyaWVzPeS/hOe9l+aWryZjb3VudHJpZXM95LyK5pyXJmNvdW50cmllcz3liqDmi7/lpKcmY291bnRyaWVzPea+s+Wkp+WIqeS6miZjb3VudHJpZXM954ix5bCU5YWwJmNvdW50cmllcz3nkZ7lhbgmY291bnRyaWVzPeW3tOilvyZjb3VudHJpZXM95Li56bqmIiwic29ydF9uYW1lIjoi6L+R5pyf54OtICYg5qCH6K6w5aSaICYg6K+E5YiG6auYICYgIOaWsOS4iuaYoCAgJuKUg1xuXG4m5YWo6YOoJuWJp+aDhSbllpzliacm5Yqo5L2cJueIseaDhSbnp5Hlubsm5Yqo55S7JuaCrOeWkSbmg4rmgpom5oGQ5oCWJueKr+e9qiblkIzmgKcm6Z+z5LmQJuatjOiInibkvKDorrAm5Y6G5Y+yJuaImOS6iSbopb/pg6gm5aWH5bm7JuWGkumZqSbngb7pmr4m5q2m5L6gJuaDhXPDqCIsInllYXJfbmFtZSI6IuWFqOmDqCYyMDIwJjIwMTkmMjAxOCYyMDEw5bm05LujJjIwMDDlubTku6Mm5pu05pepIiwic29ydF91cmwiOiJzb3J0PVUmc29ydD1UJnNvcnQ9UyZzb3J0PVImXG5cbiZnZW5yZXM9JmdlbnJlcz3liafmg4UmZ2VucmVzPeWWnOWJpyZnZW5yZXM95Yqo5L2cJmdlbnJlcz3niLHmg4UmZ2VucmVzPeenkeW5uyZnZW5yZXM95Yqo55S7JmdlbnJlcz3mgqznlpEmZ2VucmVzPeaDiuaCmiZnZW5yZXM95oGQ5oCWJmdlbnJlcz3niq/nvaomZ2VucmVzPeWQjOaApyZnZW5yZXM96Z+z5LmQJmdlbnJlcz3mrYzoiJ4mZ2VucmVzPeS8oOiusCZnZW5yZXM95Y6G5Y+yJmdlbnJlcz3miJjkuokmZ2VucmVzPeilv+mDqCZnZW5yZXM95aWH5bm7JmdlbnJlcz3lhpLpmakmZ2VucmVzPeeBvumaviZnZW5yZXM95q2m5L6gJmdlbnJlcz3mg4Uoc8Oo6Ieq5bex5pu/5o2iKSIsInllYXJfdXJsIjoieWVhcl9yYW5nZT0meWVhcl9yYW5nZT0yMDIwLDIwMjAmeWVhcl9yYW5nZT0yMDE5LDIwMTkmeWVhcl9yYW5nZT0yMDE4LDIwMTgmeWVhcl9yYW5nZT0yMDEwLDIwMTkmeWVhcl9yYW5nZT0yMDAwLDIwMDkmeWVhcl9yYW5nZT0xLDE5OTkiLCJmaW5kX3J1bGUiOiJqczpcbi8vIOaYr+WQpui/m+WFpea1i+ivleaooeW8j++8jOW8gOWPkeiAheS4k+eUqOmAiemhue+8jOW5s+awkeeOqeWutuW8gOS6huS5n+ayoeeUqFxubGV0IHRlc3RNb2RlID0gMDtcbnRyeSB7XG52YXIgZGVmYXVsdFBpYyA9ICdodHRwOi8vMXQuY2xpY2svYVhqbSc7XG5cbnZhciBkYXRhID0gSlNPTi5wYXJzZShnZXRSZXNDb2RlKCkpLmRhdGEubWFwKGZ1bmN0aW9uKG8pIHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogby50aXRsZSxcbiAgICBkZXNjOiBvLnJhdGVcbiAgICAgID8gby5yYXRlICsgJ+WIhidcbiAgICAgIDogKG8uY2FzdHMubGVuZ3RoID4gMCA/IG8uY2FzdHMgOiBvLmRpcmVjdG9ycykuc2xpY2UoMCwgMikuam9pbignIC8gJyksXG4gICAgcGljX3VybDogby5jb3Zlci5pbmNsdWRlcygnZGVmYXVsdCcpICYmIGRlZmF1bHRQaWMgPyBkZWZhdWx0UGljIDogby5jb3ZlcixcbiAgICB1cmw6ICdodHRwczovL20uZG91YmFuLmNvbS9tb3ZpZS9zdWJqZWN0LycgKyBvLmlkICsgJy8nICsgJyMnICsgby50aXRsZSArICcjbm9IaXN0b3J5IydcbiAgfTtcbn0pO1xuXG5zZXRIb21lUmVzdWx0KHsgZGF0YTogZGF0YSB9KTtcblxufSBjYXRjaCAoZSkge1xuICAgIGxldCByZXN1bHQgPSB7fTtcbiAgICBsZXQgZXJyb3JUaXRsZSA9ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1cImdyZXlcIj4nICsgJ+aaguaXoOWGheWuue+8jOivt+eojeWAmeWGjeivlScgKyAnPC9mb250Pic7XG4gICAgbGV0IGVycm9yRGVzYyA9ICcnO1xuICAgIHRyeSB7XG4gICAgICAgICByZXN1bHQgPSBKU09OLnBhcnNlKGdldFJlc0NvZGUoKSk7XG4gICAgfSBjYXRjaCAoZSkgeyB9XG4gICAgaWYgKHJlc3VsdC5tc2cgIT0gbnVsbCAmJiByZXN1bHQubXNnICE9PSAnJykge1xuICAgICAgICAgZXJyb3JUaXRsZSA9ICfigJzigJwnICsgcmVzdWx0Lm1zZyArICfigJ3igJ0nO1xuICAgICAgICAgZXJyb3JEZXNjID0gJ+aPkOekuu+8muS5n+iuuOWPquaYr+acjeWKoeWZqOaJk+S6huS4quebueetieetieWwseS8muWlvei1t+adpeS6hu+8n1xcbuaPkOekuu+8muS5n+iuuOS9oOWPr+S7peivleivleaQnOe0ou+8n+acieaDiuWWnOWTpu+9nic7XG4gICAgfVxuXG4gICAgc2V0SG9tZVJlc3VsdCh7XG4gICAgICAgICAgZGF0YTogW3tcbiAgICAgICAgICAgICAgdGl0bGU6IGVycm9yVGl0bGUsXG4gICAgICAgICAgICAgIGRlc2M6IGVycm9yRGVzYyxcbiAgICAgICAgICAgICAgdXJsOiB0ZXN0TW9kZSA9PT0gMSA/ICdodHRwczovL20uZG91YmFuLmNvbS9zdWJqZWN0LzI2MzU3MzA3LycgOiAnJyxcbiAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xuICAgICAgICAgIH1dXG4gICAgfSk7XG59XG5cbi8qIHYwLjExLjEyIChvy5jil6HLmG8pICovIiwic2VhcmNoX3VybCI6Imh0dHBzOi8vbS5kb3ViYW4uY29tL3NlYXJjaC8/KG8lQ0IlOTglRTIlOTclQTElQ0IlOThvKSZ0eXBlPW1vdmllJnF1ZXJ5PSoqO2dldDt1dGYtODt7VXNlci1BZ2VudEBXaW5kb3dzfSIsImdyb3VwIjoi4pKJ6LGG55Oj5b2x6K+EIiwic2VhcmNoRmluZCI6Ii5zZWFyY2hfcmVzdWx0c19zdWJqZWN0cyYmbGk7c3BhbiYmVGV4dDthJiZocmVmLmpzOiAnaHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tJyArIGlucHV0LnJlcGxhY2UoJy9tb3ZpZScsICcnKSArICcjbm9IaXN0b3J5Iyc7cCYmVGV4dC5qczogaWYoL+Wwmuacqi4qLy50ZXN0KGlucHV0KSAhPSB0cnVlKSBcIuivhOWIhu+8mlwiICsgaW5wdXQ7IGVsc2UgaW5wdXQ7Oyo7aW1nJiZzcmMiLCJkZXRhaWxfY29sX3R5cGUiOiJyaWNoX3RleHQiLCJkZXRhaWxfZmluZF9ydWxlIjoianM6XG52YXIgcmVzID0ge307XG52YXIgZCA9IFtdO1xudmFyIGNvbFR5cGUgPSAncmljaF90ZXh0JztcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xudmFyIHVybFNwbGl0cyA9IE1ZX1VSTC5zcGxpdCgnIycpO1xudmFyIG1VcmwgPSB1cmxTcGxpdHNbMF07XG5cbi8qKlxuICog5LiA5Lqb5YWo5bGA6YWN572u77yM6K+356e75q2l6aKE5aSE55CG5Lit6L+b6KGM6YWN572uXG4gKi9cbi8vIOaYr+WQpuW8gOWQr+inhueVjOaQnFxubGV0IG9wZW5IaWtlclNlYXJjaCA9IC0xO1xudHJ5IHtcbiAgICBvcGVuSGlrZXJTZWFyY2ggPSBwYXJzZUludChnZXRWYXIoJ2RiX29wZW5faGlrZXJfc2VhcmNoJykpO1xufSBjYXRjaCAoZSkgeyB9XG5vcGVuSGlrZXJTZWFyY2ggPSBvcGVuSGlrZXJTZWFyY2ggPT09IC0xID8gMSA6IG9wZW5IaWtlclNlYXJjaDtcbi8vIGRlc2Mg5o+P6L+w55qE5LiJ6KGM5Lit5q+P6KGM55qE5pyA5aSn6ZW/5bqmXG5sZXQgZGVzY0xpbmVNYXhMZW4gPSAtMTtcbnRyeSB7XG4gICAgZGVzY0xpbmVNYXhMZW4gPSBwYXJzZUludChnZXRWYXIoJ2RiX2Rlc2NfbGluZV9tYXhfbGVuJykpO1xufSBjYXRjaCAoZSkgeyB9XG5kZXNjTGluZU1heExlbiA9IGRlc2NMaW5lTWF4TGVuID09PSAtMSA/IDI1IDogZGVzY0xpbmVNYXhMZW47XG4vLyDor4TorrrnlKjmiLfpopzoibJcbmxldCB1c2VyQ29sb3IgPSBcIiMyOTc5RkZcIjtcbnRyeSB7XG4gICAgdXNlckNvbG9yID0gZ2V0VmFyKCdkYl91c2VyX2NvbG9yJyk7XG59IGNhdGNoIChlKSB7IH1cbnVzZXJDb2xvciA9IHVzZXJDb2xvciA9PT0gJycgPyBcIiMyOTc5RkZcIiA6IHVzZXJDb2xvcjtcbi8vIOaooeWdl+eahOmXtOi3nVxubGV0IGxpbmVfbW9kZWwgPSAtMTtcbnRyeSB7XG4gICAgbGluZV9tb2RlbCA9IHBhcnNlSW50KGdldFZhcignZGJfbGluZV9tb2RlbCcpKTtcbn0gY2F0Y2ggKGUpIHsgfVxubGluZV9tb2RlbCA9IGxpbmVfbW9kZWwgPT09IC0xID8gMCA6IGxpbmVfbW9kZWw7XG4vLyDmqKHlnZfpl7Tot53nsbvlnovvvIjpgILphY3ku6XlkI7lj6/og73kvJrmnInnmoTml6Dovrnot53nur/vvIlcbmxldCBsaW5lX3R5cGVfbW9kZWwgPSAnJztcbnRyeSB7XG4gICAgbGluZV90eXBlX21vZGVsID0gZ2V0VmFyKCdkYl9saW5lX3R5cGVfbW9kZWwnKTtcbn0gY2F0Y2ggKGUpIHsgfVxubGluZV90eXBlX21vZGVsID0gbGluZV90eXBlX21vZGVsID09PSAnJyA/IFwibGluZVwiIDogbGluZV90eXBlX21vZGVsO1xuXG4vLyDor4TliIblr7nlupTpopzoibIgWyDkupTmmJ/lipvojZDvvIzlm5vmmJ/mjqjojZDvvIzkuInmmJ/ov5jooYzvvIzkuozmmJ/ovoPlt67vvIzkuIDmmJ/lvojlt65dXG5sZXQgcmF0aW5nVGV4dHMgPSBbXG4gICAgXCLlipvojZBcIixcbiAgICBcIuaOqOiNkFwiLFxuICAgIFwi6L+Y6KGMXCIsXG4gICAgXCLovoPlt65cIixcbiAgICBcIuW+iOW3rlwiLFxuXTtcbmxldCByYXRpbmdDb2xvcnMgPSBbXG4gICAgXCIjMDBkNDM3XCIsXG4gICAgXCIjOWNkYzAwXCIsXG4gICAgXCIjZGRjZjAwXCIsXG4gICAgXCIjZmZhNDAwXCIsXG4gICAgXCIjZmY3ODAwXCIsXG5dO1xuXG5mdW5jdGlvbiBnZXRCaWdUZXh0KHRleHQpIHtcbiAgICByZXR1cm4gJzxiaWc+JyArIHRleHQgKyAnPC9iaWc+Jztcbn1cbmZ1bmN0aW9uIGdldFNtYWxsVGV4dCh0ZXh0KSB7XG4gICAgcmV0dXJuICc8c21hbGw+JyArIHRleHQgKyAnPC9zbWFsbD4nO1xufVxuZnVuY3Rpb24gZ2V0VGl0bGVUZXh0KHRleHQpIHtcbiAgICByZXR1cm4gJzxzdHJvbmc+JyArIHRleHQgKyAnPC9zdHJvbmc+Jztcbn1cbmZ1bmN0aW9uIGdldENvbG9yVGV4dCh0ZXh0LCBjb2xvcikge1xuICAgIHJldHVybiAnPGZvbnQgY29sb3I9XCInICsgY29sb3IgKyAnXCI+JyArIHRleHQgKyAnPC9mb250Pic7XG59XG5mdW5jdGlvbiBnZXRHcmV5VGV4dCh0ZXh0KSB7XG4gICAgcmV0dXJuIGdldENvbG9yVGV4dCh0ZXh0LCAnZ3JleScpO1xufVxuZnVuY3Rpb24gZ2V0QXV0aG9yVGV4dCh0ZXh0KSB7XG4gICAgcmV0dXJuIGdldENvbG9yVGV4dCh0ZXh0LCB1c2VyQ29sb3IpO1xufVxuZnVuY3Rpb24gZ2V0UmF0aW5nVGV4dCh0ZXh0KSB7XG4gICAgbGV0IGNvbG9ySW5kZXggPSByYXRpbmdUZXh0cy5pbmRleE9mKHRleHQpO1xuICAgIGxldCB0ZXh0Q29sb3IgPSBjb2xvckluZGV4IDwgMCA/ICcjZjliNzAwJyA6IHJhdGluZ0NvbG9yc1tjb2xvckluZGV4XTtcbiAgICByZXR1cm4gZ2V0Q29sb3JUZXh0KHRleHQsIHRleHRDb2xvcik7XG59XG5mdW5jdGlvbiBnZXRBYmJyZXZUZXh0KHRleHQpIHtcbiAgICBsZXQgbVRleHQgPSB0ZXh0O1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA+IGRlc2NMaW5lTWF4TGVuKSB7XG4gICAgICAgIG1UZXh0ID0gbVRleHQuc3Vic3RyaW5nKDAsIGRlc2NMaW5lTWF4TGVuKSArICcuLi4nO1xuICAgIH1cbiAgICByZXR1cm4gbVRleHQ7XG59XG5mdW5jdGlvbiBnZXRDb21tZW50TWV0YShodG1sKSB7XG4gICAgcmV0dXJuIGdldFNtYWxsVGV4dChodG1sKTtcbn1cblN0cmluZy5wcm90b3R5cGUucmVwbGFjZVdpdGhDYWxsYmFjayA9IGZ1bmN0aW9uIChzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlLCBjYWxsYmFjaykge1xuICAgIGxldCByZXR1cm5WYWx1ZSA9IHRoaXM7XG4gICAgaWYgKGNhbGxiYWNrICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuVmFsdWUgPSBjYWxsYmFjayh0aGlzLCBzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xufTtcblxubGV0IHJldmlld1J1bGUgPSAnQHJ1bGU9anM6ICcgKyBgdmFyIHJlcz17fSxkPVtdLGNvbFR5cGU9XCJyaWNoX3RleHRcIixodG1sPWdldFJlc0NvZGUoKSxoaWRlSW1nPTA7bGV0IHVzZXJDb2xvcj1cIiMyOTc5RkZcIjt0cnl7dXNlckNvbG9yPWdldFZhcihcImRiX3VzZXJfY29sb3JcIil9Y2F0Y2godCl7fXVzZXJDb2xvcj1cIlwiPT09dXNlckNvbG9yP1wiIzI5NzlGRlwiOnVzZXJDb2xvcjtsZXQgbGluZV9tb2RlbD0tMTt0cnl7bGluZV9tb2RlbD1wYXJzZUludChnZXRWYXIoXCJkYl9saW5lX21vZGVsXCIpKX1jYXRjaCh0KXt9bGluZV9tb2RlbD0tMT09PWxpbmVfbW9kZWw/MDpsaW5lX21vZGVsO2xldCBsaW5lX3R5cGVfbW9kZWw9XCJcIjt0cnl7bGluZV90eXBlX21vZGVsPWdldFZhcihcImRiX2xpbmVfdHlwZV9tb2RlbFwiKX1jYXRjaCh0KXt9bGluZV90eXBlX21vZGVsPVwiXCI9PT1saW5lX3R5cGVfbW9kZWw/XCJsaW5lXCI6bGluZV90eXBlX21vZGVsO2xldCByYXRpbmdUZXh0cz1bXCLlipvojZBcIixcIuaOqOiNkFwiLFwi6L+Y6KGMXCIsXCLovoPlt65cIixcIuW+iOW3rlwiXSxyYXRpbmdDb2xvcnM9W1wiIzAwZDQzN1wiLFwiIzljZGMwMFwiLFwiI2RkY2YwMFwiLFwiI2ZmYTQwMFwiLFwiI2ZmNzgwMFwiXTtmdW5jdGlvbiBnZXRCaWdUZXh0KHQpe3JldHVyblwiPGJpZz5cIit0K1wiPC9iaWc+XCJ9ZnVuY3Rpb24gZ2V0U21hbGxUZXh0KHQpe3JldHVyblwiPHNtYWxsPlwiK3QrXCI8L3NtYWxsPlwifWZ1bmN0aW9uIGdldFN0cm9uZ1RleHQodCl7cmV0dXJuXCI8c3Ryb25nPlwiK3QrXCI8L3N0cm9uZz5cIn1mdW5jdGlvbiBnZXRUaXRsZVRleHQodCl7cmV0dXJuIGdldFN0cm9uZ1RleHQodCl9ZnVuY3Rpb24gZ2V0SXRhbGljVGV4dCh0KXtyZXR1cm5cIjxpPlwiK3QrXCI8L2k+XCJ9ZnVuY3Rpb24gZ2V0Q29sb3JUZXh0KHQsZSl7cmV0dXJuJzxmb250IGNvbG9yPVwiJytlKydcIj4nK3QrXCI8L2ZvbnQ+XCJ9ZnVuY3Rpb24gZ2V0R3JleVRleHQodCl7cmV0dXJuIGdldENvbG9yVGV4dCh0LFwiZ3JleVwiKX1mdW5jdGlvbiBnZXRBdXRob3JUZXh0KHQpe3JldHVybiBnZXRDb2xvclRleHQodCx1c2VyQ29sb3IpfWZ1bmN0aW9uIGdldFJhdGluZ1RleHQodCl7bGV0IGU9cmF0aW5nVGV4dHMuaW5kZXhPZih0KTtyZXR1cm4gZ2V0Q29sb3JUZXh0KHQsZTwwP1wiI2Y5YjcwMFwiOnJhdGluZ0NvbG9yc1tlXSl9ZnVuY3Rpb24gZ2V0QWJicmV2VGV4dCh0KXtsZXQgZT10O3JldHVybiB0Lmxlbmd0aD5kZXNjTGluZU1heExlbiYmKGU9ZS5zdWJzdHJpbmcoMCxkZXNjTGluZU1heExlbikrXCIuLi5cIiksZX1mdW5jdGlvbiBnZXRDb21tZW50TWV0YSh0KXtyZXR1cm4gZ2V0U21hbGxUZXh0KHQpfWZ1bmN0aW9uIHN0eWxlU3BhblRvU3R5bGVGb250UmVwbGFjZW1lbnQodCxlLGwpe2xldCByPXQ7dHJ5e2xldCBvPXQubWF0Y2goZSk7Zm9yKGxldCB0PTA7dDxvLmxlbmd0aDt0Kyspe2xldCBlPW9bdF07bD1lLGUuaW5kZXhPZihcImZvbnQtd2VpZ2h0OiBib2xkO1wiKT4tMSYmKGw9Z2V0U3Ryb25nVGV4dChsKSksZS5pbmRleE9mKFwiZm9udC1zdHlsZTogaXRhbGljO1wiKT4tMSYmKGw9Z2V0SXRhbGljVGV4dChsKSkscj1yLnJlcGxhY2UoZSxsKX19Y2F0Y2godCl7fXJldHVybiByfVN0cmluZy5wcm90b3R5cGUucmVwbGFjZVdpdGhDYWxsYmFjaz1mdW5jdGlvbih0LGUsbCl7bGV0IHI9dGhpcztyZXR1cm4gbnVsbCE9bCYmKHI9bCh0aGlzLHQsZSkpLHJ9O3RyeXtsZXQgdD1nZXRTbWFsbFRleHQoZ2V0R3JleVRleHQoJzxhIGhyZWY9XCInK01ZX1VSTCsnXCI+W+afpeeci+WOn+aWh108L2E+JykpLGU9cGFyc2VEb21Gb3JIdG1sKGh0bWwsXCIjY29udGVudCYmLmFydGljbGUmJkh0bWxcIiksbD1nZXRCaWdUZXh0KGdldFRpdGxlVGV4dChwYXJzZURvbUZvckh0bWwoZSxcImgxJiZUZXh0XCIpKSk7ZT1wYXJzZURvbUZvckh0bWwoZSxcIi5tYWluLWhkJiZIdG1sXCIpO2xldCByPVwiXCIsbz1cIlwiOyEwPT09Lyg8YSBocmVmPVwiaHR0cHM6XFxcXC9cXFxcL3d3dy5kb3ViYW4uY29tW1xcXFxzXFxcXFNdKj88XFxcXC9hPikvLnRlc3QoZSkmJihvPWdldEF1dGhvclRleHQocGFyc2VEb21Gb3JIdG1sKFJlZ0V4cC4kMSxcIlRleHRcIikpKTtsZXQgbj1cIlwiOyEwPT09Lyg8YSBocmVmPVwiaHR0cHM6XFxcXC9cXFxcL21vdmllLmRvdWJhbi5jb21bXFxcXHNcXFxcU10qPzxcXFxcL2E+KS8udGVzdChlKSYmKG49Z2V0Q29sb3JUZXh0KHBhcnNlRG9tRm9ySHRtbChSZWdFeHAuJDEsXCJUZXh0XCIpLFwiIzg5NjViNFwiKSkscj1cIlwiIT09byYmXCJcIiE9PW4/bytcIiBcIitnZXRHcmV5VGV4dChcIuivhOiuulwiKStcIiBcIituOlwiXCI7bGV0IGE9XCJcIjt0cnl7YT1nZXRSYXRpbmdUZXh0KHBhcnNlRG9tRm9ySHRtbChlLFwiLm1haW4tdGl0bGUtcmF0aW5nJiZ0aXRsZVwiKSkrXCIgXCJ9Y2F0Y2godCl7fXI9Z2V0U21hbGxUZXh0KHIrPVwiIFwiK2ErZ2V0R3JleVRleHQocGFyc2VEb21Gb3JIdG1sKGUsXCIubWFpbi1tZXRhJiZUZXh0XCIpKSksZC5wdXNoKHt0aXRsZTpsK1wiIFwiK3QrXCI8YnI+XCIrcn0pLGQucHVzaCh7Y29sX3R5cGU6XCJsaW5lXCJ9KX1jYXRjaCh0KXt9dHJ5e2xldCB0PXBhcnNlRG9tRm9ySHRtbChodG1sLFwiI3Jldmlldy1jb250ZW50JiZIdG1sXCIpLGU9XCJcIjt0cnl7ZT1cIjxibG9ja3F1b3RlPlwiK3BhcnNlRG9tRm9ySHRtbCh0LFwiLm1haW4tdGl0bGUtdGlwJiZIdG1sXCIpK1wiPC9ibG9ja3F1b3RlPlwifWNhdGNoKHQpe31sZXQgbD1wYXJzZURvbUZvckh0bWwodCxcIi5yZXZpZXctY29udGVudCYmSHRtbFwiKS5yZXBsYWNlV2l0aENhbGxiYWNrKC88c3BhbiBzdHlsZT1cIi4qP1wiPihbXFxcXHNcXFxcU10qPyk8XFxcXC9zcGFuPi9nLFwiXCIsc3R5bGVTcGFuVG9TdHlsZUZvbnRSZXBsYWNlbWVudCkscj1cIlwiO3RyeXtyPWdldFNtYWxsVGV4dChnZXRHcmV5VGV4dChwYXJzZURvbUZvckh0bWwodCxcIi5jb3B5cmlnaHQmJkh0bWxcIikpKX1jYXRjaCh0KXt9bGV0IG89cGFyc2VEb21Gb3JIdG1sKHQsXCIubWFpbi1wYW5lbC11c2VmdWwmJkh0bWxcIiksbj1cIjxicj5cIitnZXRTbWFsbFRleHQoZ2V0Q29sb3JUZXh0KHBhcnNlRG9tRm9ySHRtbChvLFwiLnVzZWZ1bF9jb3VudCYmVGV4dFwiKSxyYXRpbmdDb2xvcnNbMF0pKSxhPVwiXFxcXHRcXFxcdFwiK2dldFNtYWxsVGV4dChnZXRDb2xvclRleHQocGFyc2VEb21Gb3JIdG1sKG8sXCIudXNlbGVzc19jb3VudCYmVGV4dFwiKSxyYXRpbmdDb2xvcnNbNF0pKTtkLnB1c2goe3RpdGxlOmUrbCtyK24rYX0pfWNhdGNoKHQpe31kLnB1c2goe3RpdGxlOlwi4oCc4oCc4oCd4oCdXCIrZ2V0Q29sb3JUZXh0KFwiwrcgwrcgwrcg5p+l55yL6K+E6K66IMK3IMK3IMK3XCIsXCIjYWQ4YjI1XCIpLHVybDpNWV9VUkwrXCIjY29tbWVudC1saXN0XCIsY29sX3R5cGU6XCJ0ZXh0X2NlbnRlcl8xXCJ9KSxyZXMuZGF0YT1kLHNldEhvbWVSZXN1bHQocmVzKTtgO1xuXG4vKipcbiAqIOiOt+WPliDlvbHniYcv5Lmm57GNIOS/oeaBr1xuICogQHR5cGUge3N0cmluZ31cbiAqL1xudHJ5IHtcbiAgICBsZXQgc3ViX2luZm9faHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCBcIiN3cmFwcGVyJiZIdG1sXCIpXG4gICAgICAgIC5yZXBsYWNlKC9cXG4vZywgJycpO1xuICAgIGxldCBzdWJfb3JpZ2luYWxfdGl0bGUgPSBwYXJzZURvbUZvckh0bWwoc3ViX2luZm9faHRtbCwgJ2gxJiZUZXh0Jyk7XG4gICAgbGV0IHN1Yl9jb3ZlciA9IHBhcnNlRG9tRm9ySHRtbChzdWJfaW5mb19odG1sLCAnI21haW5waWMmJmEmJmltZyYmc3JjJyk7XG4gICAgLy8gbGV0IHN1Yl90aXRsZSA9IHBhcnNlRG9tRm9ySHRtbChzdWJfaW5mbywgJy5zdWItZGV0YWlsJiYuc3ViLXRpdGxlJiZUZXh0Jyk7XG4gICAgbGV0IHN1Yl9tZXRhX2h0bWwgPSBwYXJzZURvbUZvckh0bWwoc3ViX2luZm9faHRtbCwgJyNpbmZvJiZIdG1sJyk7XG4gICAgbGV0IGFjdG9yID0gJyc7XG4gICAgbGV0IHR5cGUgPSAnJztcbiAgICBsZXQgc2hvd0RhdGUgPSAnJztcbiAgICBpZiAobVVybC5pbmRleE9mKCdib29rJykgPiAtMSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKC8oPHNwYW4+W1xcc1xcU10qPzxzcGFuIGNsYXNzPVwicGxcIj4g5L2c6ICFPFxcL3NwYW4+W1xcc1xcU10qPyg/PTxicj4pKS8udGVzdChzdWJfbWV0YV9odG1sKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGFjdG9yID0gJzxkaXYgY2xhc3M9XCJhY3RvclwiPicgKyBSZWdFeHAuJDEgKyAnPC9kaXY+JztcbiAgICAgICAgICAgICAgICBhY3RvciA9IHBhcnNlRG9tRm9ySHRtbChhY3RvciwgJy5hY3RvciYmVGV4dCcpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKC8oPHNwYW4gY2xhc3M9XCJwbFwiPuWHuueJiOekvjo8XFwvc3Bhbj5bXFxzXFxTXSo/KD89PGJyPikpLy50ZXN0KHN1Yl9tZXRhX2h0bWwpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdHlwZSA9ICc8ZGl2IGNsYXNzPVwidHlwZVwiPicgKyBSZWdFeHAuJDEgKyAnPC9kaXY+JztcbiAgICAgICAgICAgICAgICB0eXBlID0gcGFyc2VEb21Gb3JIdG1sKHR5cGUsICcudHlwZSYmVGV4dCcpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKC8oPHNwYW4gY2xhc3M9XCJwbFwiPuWHuueJiOW5tDo8XFwvc3Bhbj5bXFxzXFxTXSo/KD89PGJyPikpLy50ZXN0KHN1Yl9tZXRhX2h0bWwpID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgc2hvd0RhdGUgPSAnPGRpdiBjbGFzcz1cImRhdGVcIj4nICsgUmVnRXhwLiQxICsgJzwvZGl2Pic7XG4gICAgICAgICAgICAgICAgc2hvd0RhdGUgPSBwYXJzZURvbUZvckh0bWwoc2hvd0RhdGUsICcuZGF0ZSYmVGV4dCcpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGFjdG9yID0gcGFyc2VEb21Gb3JIdG1sKHN1Yl9tZXRhX2h0bWwsICcuYWN0b3ImJlRleHQnKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICgvKDxzcGFuIGNsYXNzPVwicGxcIj7nsbvlnos6PFxcL3NwYW4+W1xcc1xcU10qPyg/PTxicj4pKS8udGVzdChzdWJfbWV0YV9odG1sKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHR5cGUgPSAnPGRpdiBjbGFzcz1cInR5cGVcIj4nICsgUmVnRXhwLiQxICsgJzwvZGl2Pic7XG4gICAgICAgICAgICAgICAgdHlwZSA9IHBhcnNlRG9tRm9ySHRtbCh0eXBlLCAnLnR5cGUmJlRleHQnKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7IH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICgvKDxzcGFuIGNsYXNzPVwicGxcIj4o5LiK5pig5pel5pyffOmmluaSrSk6PFxcL3NwYW4+W1xcc1xcU10qPyg/PTxicj4pKS8udGVzdChzdWJfbWV0YV9odG1sKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHNob3dEYXRlID0gJzxkaXYgY2xhc3M9XCJkYXRlXCI+JyArIFJlZ0V4cC4kMSArICc8L2Rpdj4nO1xuICAgICAgICAgICAgICAgIHNob3dEYXRlID0gcGFyc2VEb21Gb3JIdG1sKHNob3dEYXRlLCAnLmRhdGUmJlRleHQnKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7IH1cbiAgICB9XG4gICAgbGV0IHN1Yl9tZXRhID0gZ2V0QWJicmV2VGV4dChhY3RvcilcbiAgICAgICAgKyAodHlwZSA9PT0gJycgPyAnJyA6ICgnXFxuJyArIGdldEFiYnJldlRleHQodHlwZSkpKVxuICAgICAgICArIChzaG93RGF0ZSA9PT0gJycgPyAnJyA6ICgnXFxuJyArIGdldEFiYnJldlRleHQoc2hvd0RhdGUpKSk7XG4gICAgbGV0IGRiX3RpdGxlID0gJyc7XG4gICAgdHJ5IHtcbiAgICAgICAgZGJfdGl0bGUgPSB1cmxTcGxpdHNbMV07XG4gICAgfSBjYXRjaCAoZSkgeyB9XG4gICAgLy8g5pCc57Si5Y+C5pWwXG4gICAgbGV0IHNlYXJjaFZhbHVlID0gZ2V0VmFyKCdkYl9zZWFyY2hfdmFsdWUnKTtcbiAgICBsZXQgc3ViX3VybCA9IG9wZW5IaWtlclNlYXJjaCA9PT0gMVxuICAgICAgICA/ICgnaGlrZXI6Ly9zZWFyY2g/cz0nXG4gICAgICAgICAgICArIChkYl90aXRsZSA9PT0gJycgfHwgZGJfdGl0bGUgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgID8gc3ViX29yaWdpbmFsX3RpdGxlXG4gICAgICAgICAgICAgICAgOiBkYl90aXRsZSlcbiAgICAgICAgICAgICsgc2VhcmNoVmFsdWVcbiAgICAgICAgKVxuICAgICAgICA6IG1Vcmw7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IHN1Yl9vcmlnaW5hbF90aXRsZSxcbiAgICAgICAgcGljX3VybDogc3ViX2NvdmVyLFxuICAgICAgICB1cmw6IHN1Yl91cmwsXG4gICAgICAgIGRlc2M6IHN1Yl9tZXRhLFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xuICAgIH0pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZV9tb2RlbDsgaSsrKSB7XG4gICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICBjb2xfdHlwZTogbGluZV90eXBlX21vZGVsXG4gICAgICAgIH0pXG4gICAgfVxufSBjYXRjaCAoZSkgeyB9XG5cbi8qKlxuICog6LGG55Oj6K+E5YiGXG4gKi9cbnRyeSB7XG4gICAgbGV0IHJhdGluZyA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnI2ludGVyZXN0X3NlY3RsJiZIdG1sJyk7XG4gICAgbGV0IHJhdGluZ190aXRsZSA9ICcnO1xuICAgIGxldCByYXRpbmdfY29udGVudCA9ICcnO1xuICAgIGxldCByYXRpbmdfc2hvdyA9IHBhcnNlRG9tRm9ySHRtbChyYXRpbmcsICcucmF0aW5nX3NlbGYmJmRpdltjbGFzc149cmF0aW5nX3JpZ2h0XSYmVGV4dCcpO1xuICAgIGlmIChyYXRpbmdfc2hvdyA9PT0gJ+WwmuacquaSreWHuicgfHwgcmF0aW5nX3Nob3cgPT09ICflsJrmnKrkuIrmmKAnKSB7XG4gICAgICAgIHJhdGluZ19jb250ZW50ICs9IChnZXRCaWdUZXh0KCfosYbnk6Por4TliIYnKSArICcgJyArIGdldFNtYWxsVGV4dChnZXRHcmV5VGV4dChyYXRpbmdfc2hvdykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcmF0aW5nVGV4dCA9IHBhcnNlRG9tRm9ySHRtbChyYXRpbmcsICcucmF0aW5nX3NlbGYmJnN0cm9uZyYmVGV4dCcpO1xuICAgICAgICByYXRpbmdfY29udGVudCArPSBnZXRCaWdUZXh0KCfosYbnk6Por4TliIYgJ1xuICAgICAgICAgICAgKyAocmF0aW5nVGV4dCA9PT0gJydcbiAgICAgICAgICAgICAgICA/IGdldFNtYWxsVGV4dChnZXRHcmV5VGV4dCgn5pqC5peg6K+E5YiGJykpXG4gICAgICAgICAgICAgICAgOiAoZ2V0VGl0bGVUZXh0KHJhdGluZ1RleHQpICsgJyDliIYnKSlcbiAgICAgICAgICAgICsgJzxicj4nKTtcbiAgICAgICAgbGV0IHJhdGluZ19hcnJheSA9IFtdO1xuICAgICAgICBpZiAobVVybC5pbmRleE9mKCdib29rJykgPiAtMSkge1xuICAgICAgICAgICAgcmF0aW5nX2FycmF5ID0gcmF0aW5nLm1hdGNoKC88c3BhbiBjbGFzcz1cInN0YXJzW1xcc1xcU10qPyg/PTxicj4pL2cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmF0aW5nX2FycmF5ID0gcGFyc2VEb21Gb3JBcnJheShyYXRpbmcsICcucmF0aW5ncy1vbi13ZWlnaHQmJi5pdGVtJyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXRpbmdfYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCByYXRpbmdJdGVtID0gcmF0aW5nX2FycmF5W2ldO1xuICAgICAgICAgICAgaWYgKGkgPT09IDApIHJhdGluZ19jb250ZW50ICs9ICfwn4yfICc7XG4gICAgICAgICAgICBpZiAoaSA9PT0gMikgcmF0aW5nX2NvbnRlbnQgKz0gJzxicj7irZAgJztcbiAgICAgICAgICAgIGlmIChpID09PSAzKSByYXRpbmdfY29udGVudCArPSAnPGJyPuKYhO+4jyAnO1xuICAgICAgICAgICAgcmF0aW5nX2NvbnRlbnQgKz0gZ2V0Q29sb3JUZXh0KHBhcnNlRG9tRm9ySHRtbChyYXRpbmdJdGVtLCAnVGV4dCcpLCByYXRpbmdDb2xvcnNbaV0pICsgJ1xcdFxcdCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGRDb250ZW50ID0gcmF0aW5nX3RpdGxlICsgKHJhdGluZ190aXRsZSA9PT0gJycgPyAnJyA6ICc8YnI+JykgKyByYXRpbmdfY29udGVudDtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogZENvbnRlbnRcbiAgICB9KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVfbW9kZWw7IGkrKykge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgY29sX3R5cGU6IGxpbmVfdHlwZV9tb2RlbFxuICAgICAgICB9KVxuICAgIH1cbn0gY2F0Y2ggKGUpIHsgfVxuXG4vKipcbiAqIOWJp+aDheeugOS7iy/kuabnsY3lhoXlrrnku4vnu41cbiAqL1xudHJ5IHtcbiAgICBsZXQgc3ViX2ludHJvID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcucmVsYXRlZC1pbmZvfHwucmVsYXRlZF9pbmZvJiZIdG1sJylcbiAgICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnJyk7XG4gICAgbGV0IHN1Yl9pbnRyb190aXRsZSA9IHBhcnNlRG9tRm9ySHRtbChzdWJfaW50cm8sICdoMiYmVGV4dCcpXG4gICAgICAgIC5yZXBsYWNlKC8oLio/55qEKXwowrcgwrcgwrcgwrcgwrcgwrcpfCgmbmJzcDvCtyZuYnNwO8K3Jm5ic3A7wrcmbmJzcDvCtyZuYnNwO8K3Jm5ic3A7wrcpfCjCt8KgwrfCoMK3wqDCt8KgwrfCoMK3KS9nLCAnJyk7XG4gICAgc3ViX2ludHJvX3RpdGxlID0gZ2V0QmlnVGV4dChnZXRHcmV5VGV4dChzdWJfaW50cm9fdGl0bGUpKTtcbiAgICBsZXQgc3ViX2ludHJvX2NvbnRlbnQgPSAnJztcbiAgICB0cnkge1xuICAgICAgICBzdWJfaW50cm9fY29udGVudCA9IHBhcnNlRG9tRm9ySHRtbChzdWJfaW50cm8sICcuaW5kZW50JiZzcGFuW2NsYXNzXj1hbGxdJiZIdG1sJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBzdWJfaW50cm9fY29udGVudCA9IHBhcnNlRG9tRm9ySHRtbChzdWJfaW50cm8sICcuaW5kZW50JiZIdG1sJyk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIHN1Yl9pbnRyb19jb250ZW50ID0gcGFyc2VEb21Gb3JIdG1sKHN1Yl9pbnRyb19jb250ZW50LCAnLmludHJvJiZIdG1sJyk7XG4gICAgfSBjYXRjaCAoZSkgeyB9XG4gICAgZENvbnRlbnQgPSBzdWJfaW50cm9fdGl0bGUgKyAnPGJyPicgKyBzdWJfaW50cm9fY29udGVudDtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogZENvbnRlbnRcbiAgICB9KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVfbW9kZWw7IGkrKykge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgY29sX3R5cGU6IGxpbmVfdHlwZV9tb2RlbFxuICAgICAgICB9KVxuICAgIH1cbn0gY2F0Y2ggKGUpIHsgfVxuXG4vKipcbiAqIOefreivhFxuICovXG50cnkge1xuICAgIGxldCBjb21tZW50c19odG1sID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcjY29tbWVudHMtc2VjdGlvbiYmSHRtbCcpO1xuICAgIGxldCBjb21tZW50c190aXRsZSA9IGdldEJpZ1RleHQoZ2V0R3JleVRleHQocGFyc2VEb21Gb3JIdG1sKGNvbW1lbnRzX2h0bWwsICdoMiYmSHRtbCcpXG4gICAgICAgIC5yZXBsYWNlKC8oLio/55qEKXwowrcgwrcgwrcgwrcgwrcgwrcpfCgmbmJzcDvCtyZuYnNwO8K3Jm5ic3A7wrcmbmJzcDvCtyZuYnNwO8K3Jm5ic3A7wrcpL2csICcnKSkpXG4gICAgICAgIC5yZXBsYWNlKC88aVtcXHNcXFNdKj8+fDxcXC9pPi9nLCAnJylcbiAgICAgICAgLnJlcGxhY2UoL21vdmllLmRvdWJhbi5jb20vZywgJ20uZG91YmFuLmNvbS9tb3ZpZScpO1xuICAgIGRDb250ZW50ID0gY29tbWVudHNfdGl0bGU7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGRDb250ZW50XG4gICAgfSk7XG4gICAgbGV0IGNvbW1lbnRzX2NvbnRlbnRfaHRtbCA9IHBhcnNlRG9tRm9ySHRtbChjb21tZW50c19odG1sLCAnLnRhYi1iZHx8I2NvbW1lbnQtbGlzdC13cmFwcGVyJiZIdG1sJyk7XG4gICAgbGV0IGNvbW1lbnRzX2NvbnRlbnRfaHRtbF9hcnJheSA9IHBhcnNlRG9tRm9yQXJyYXkoY29tbWVudHNfY29udGVudF9odG1sLCAnI2hvdC1jb21tZW50c3x8I25ld19zY29yZSYmLmNvbW1lbnQtaXRlbScpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tbWVudHNfY29udGVudF9odG1sX2FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBjb21tZW50SHRtbEl0ZW0gPSBjb21tZW50c19jb250ZW50X2h0bWxfYXJyYXlbaV07XG4gICAgICAgIGxldCBjb250ZW50ID0gcGFyc2VEb21Gb3JIdG1sKGNvbW1lbnRIdG1sSXRlbSwgJ3AmJkh0bWwnKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICgvPFxcL3NwYW4+W1xcc1xcU10qPyg8c3BhbiBjbGFzcz1cIltcXHNcXFNdKj9mdWxsXCI+W1xcc1xcU10qPzxcXC9zcGFuPikvLnRlc3QoY29udGVudCkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb250ZW50ID0gUmVnRXhwLiQxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb250ZW50ID0gcGFyc2VEb21Gb3JIdG1sKGNvbW1lbnRIdG1sSXRlbSwgJ3AmJkh0bWwnKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgd2F0Y2hTdGF0dXMgPSBwYXJzZURvbUZvckh0bWwoY29tbWVudEh0bWxJdGVtLCAnLmNvbW1lbnQtaW5mbyYmVGV4dCcpO1xuICAgICAgICBpZiAod2F0Y2hTdGF0dXMuaW5kZXhPZihcIueci+i/h1wiKSkgd2F0Y2hTdGF0dXMgPSAn55yL6L+HJztcbiAgICAgICAgZWxzZSBpZiAod2F0Y2hTdGF0dXMuaW5kZXhPZihcIuaDs+eci1wiKSkgd2F0Y2hTdGF0dXMgPSAn5oOz55yLJztcbiAgICAgICAgbGV0IHJhdGluZ1RleHQgPSAnJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJhdGluZ1RleHQgPSAnXFx0JyArIGdldFJhdGluZ1RleHQocGFyc2VEb21Gb3JIdG1sKGNvbW1lbnRIdG1sSXRlbSwgJy5jb21tZW50LWluZm8mJi5yYXRpbmcmJnRpdGxlJykpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgICBsZXQgbWV0YSA9IGdldEF1dGhvclRleHQocGFyc2VEb21Gb3JIdG1sKGNvbW1lbnRIdG1sSXRlbSwgJy5jb21tZW50LWluZm8mJmEmJlRleHQnKSlcbiAgICAgICAgICAgICsgJ1xcdCdcbiAgICAgICAgICAgICsgZ2V0R3JleVRleHQod2F0Y2hTdGF0dXMpXG4gICAgICAgICAgICArIHJhdGluZ1RleHRcbiAgICAgICAgICAgICsgJ1xcdCdcbiAgICAgICAgICAgICsgZ2V0R3JleVRleHQocGFyc2VEb21Gb3JIdG1sKGNvbW1lbnRIdG1sSXRlbSwgJy5jb21tZW50LWluZm8mJnNwYW5bY2xhc3NePWNvbW1lbnQtdGltZV0mJlRleHQnKSk7XG4gICAgICAgIGRDb250ZW50ID0gY29udGVudCArICc8YnI+JyArIGdldENvbW1lbnRNZXRhKG1ldGEpO1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IGRDb250ZW50XG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLzxhIGNsYXNzPVwic291cmNlLWljb25cIltcXHNcXFNdKj88XFwvYT4vZywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIltcXHNcXFNdKj8+5bGV5byAPFxcL2E+XFwpL2csICcnKVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGkgPCBjb21tZW50c19jb250ZW50X2h0bWxfYXJyYXkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZV9tb2RlbDsgaSsrKSB7XG4gICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICBjb2xfdHlwZTogbGluZV90eXBlX21vZGVsXG4gICAgICAgIH0pXG4gICAgfVxufSBjYXRjaCAoZSkgeyB9XG5cbi8qKlxuICog5b2x6K+EL+S5puivhFxuICovXG50cnkge1xuICAgIGxldCByZXZpZXdzX2h0bWwgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJyNyZXZpZXdzLXdyYXBwZXImJkh0bWwnKTtcbiAgICBsZXQgcmV2aWV3c190aXRsZSA9IGdldEJpZ1RleHQoZ2V0R3JleVRleHQoXG4gICAgICAgIHBhcnNlRG9tRm9ySHRtbChyZXZpZXdzX2h0bWwsICdoMiYmSHRtbCcpXG4gICAgICAgICAgICAucmVwbGFjZSgnaHJlZj1cInJldmlld3NcIicsICdocmVmPVwiJyArIG1VcmwgKyAncmV2aWV3c1wiJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oLio/55qEKXwowrcgwrcgwrcgwrcgwrcgwrcpL2csICcnKVxuICAgICkpO1xuICAgIGRDb250ZW50ID0gcmV2aWV3c190aXRsZTtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogZENvbnRlbnRcbiAgICB9KTtcbiAgICBsZXQgcmV2aWV3c19jb250ZW50X2h0bWwgPSBwYXJzZURvbUZvckh0bWwocmV2aWV3c19odG1sLCAnZGl2W2NsYXNzXj1yZXZpZXctbGlzdF0mJkh0bWwnKTtcbiAgICBsZXQgcmV2aWV3c19jb250ZW50X2h0bWxfYXJyYXkgPSByZXZpZXdzX2NvbnRlbnRfaHRtbC5tYXRjaCgvPGRpdiBjbGFzcz1cIm1haW4gcmV2aWV3LWl0ZW1cIltcXHNcXFNdKj88XFwvZGl2Pi9nKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJldmlld3NfY29udGVudF9odG1sX2FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCByZXZpZXdIdG1sSXRlbSA9IHJldmlld3NfY29udGVudF9odG1sX2FycmF5W2ldO1xuICAgICAgICBsZXQgY29udGVudEh0bWwgPSBwYXJzZURvbUZvckh0bWwocmV2aWV3SHRtbEl0ZW0sICcubWFpbi1iZCYmSHRtbCcpO1xuICAgICAgICBsZXQgcmV2aWV3VGl0bGUgPSBwYXJzZURvbUZvckh0bWwoY29udGVudEh0bWwsICdoMiYmSHRtbCcpO1xuICAgICAgICBsZXQgcmV2aWV3VXJsID0gcGFyc2VEb21Gb3JIdG1sKHJldmlld1RpdGxlLCAnYSYmaHJlZicpO1xuICAgICAgICBsZXQgcmV2aWV3UnVsZVVybCA9ICdiYXNlNjQ6Ly8nICsgYmFzZTY0RW5jb2RlKHJldmlld1VybCArICcjbm9IaXN0b3J5IycgKyByZXZpZXdSdWxlKTtcbiAgICAgICAgcmV2aWV3VGl0bGUgPSByZXZpZXdUaXRsZS5yZXBsYWNlKHJldmlld1VybCwgcmV2aWV3UnVsZVVybCk7XG4gICAgICAgIGxldCBjb250ZW50ID0gZ2V0VGl0bGVUZXh0KHJldmlld1RpdGxlKVxuICAgICAgICAgICAgKyAnPGJyPidcbiAgICAgICAgICAgICsgcGFyc2VEb21Gb3JIdG1sKGNvbnRlbnRIdG1sLCAnLnJldmlldy1zaG9ydCYmLnNob3J0LWNvbnRlbnQmJkh0bWwnKVxuICAgICAgICAgICAgKyAnIDxzbWFsbD48YSBocmVmPVwiJyArIHJldmlld1J1bGVVcmwgKyAnXCI+W+afpeeci+WFqOaWh108L2E+PC9zbWFsbD4nXG4gICAgICAgIDtcbiAgICAgICAgbGV0IHJhdGluZ1RleHQgPSAnJztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJhdGluZ1RleHQgPSAnXFx0JyArIGdldFJhdGluZ1RleHQocGFyc2VEb21Gb3JIdG1sKHJldmlld0h0bWxJdGVtLCAnLm1haW4taGQmJi5tYWluLXRpdGxlLXJhdGluZyYmdGl0bGUnKSlcbiAgICAgICAgfSBjYXRjaCAoZSkgeyB9XG4gICAgICAgIGxldCBtZXRhID0gZ2V0QXV0aG9yVGV4dChwYXJzZURvbUZvckh0bWwocmV2aWV3SHRtbEl0ZW0sICcubWFpbi1oZCYmLm5hbWUmJlRleHQnKSlcbiAgICAgICAgICAgICsgcmF0aW5nVGV4dFxuICAgICAgICAgICAgKyAnXFx0J1xuICAgICAgICAgICAgKyBnZXRHcmV5VGV4dChwYXJzZURvbUZvckh0bWwocmV2aWV3SHRtbEl0ZW0sICcubWFpbi1oZCYmLm1haW4tbWV0YSYmVGV4dCcpKTtcbiAgICAgICAgbGV0IHJlc3BvbnNlSHRtbCA9ICcnO1xuICAgICAgICBsZXQgZmVlZGJhY2sgPSAnJztcbiAgICAgICAgdHJ5e1xuICAgICAgICAgICAgaWYgKC8oPGEgaHJlZj1cImh0dHBbXFxzXFxTXSo/Y2xhc3M9XCJyZXBseVtcXHNcXFNdKj88XFwvYT4pLy50ZXN0KHJldmlld0h0bWxJdGVtKSA9PT0gdHJ1ZSkgcmVzcG9uc2VIdG1sID0gUmVnRXhwLiQxO1xuICAgICAgICAgICAgZmVlZGJhY2sgPSBnZXRHcmV5VGV4dCgn8J+RjfCfj7snICsgcGFyc2VEb21Gb3JIdG1sKHJldmlld0h0bWxJdGVtLCAnLmFjdGlvbiYmLmFjdGlvbi1idG4udXAmJlRleHQnKVxuICAgICAgICAgICAgICAgICsgJ1xcdCdcbiAgICAgICAgICAgICAgICArICfwn5GO8J+PuycgKyBwYXJzZURvbUZvckh0bWwocmV2aWV3SHRtbEl0ZW0sICcuYWN0aW9uJiYuYWN0aW9uLWJ0bi5kb3duJiZUZXh0JylcbiAgICAgICAgICAgICAgICArICdcXHQnXG4gICAgICAgICAgICAgICAgKyByZXNwb25zZUh0bWxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgfVxuICAgICAgICBkQ29udGVudCA9IGNvbnRlbnRcbiAgICAgICAgICAgICsgJzxicj4nXG4gICAgICAgICAgICArIGdldENvbW1lbnRNZXRhKG1ldGEpXG4gICAgICAgICAgICArIChmZWVkYmFjayA9PT0gJycgP1xuICAgICAgICAgICAgICAgICAgICAnJ1xuICAgICAgICAgICAgICAgICAgICA6ICgnPGJyPicgKyBnZXRDb21tZW50TWV0YShmZWVkYmFjaykpXG4gICAgICAgICAgICApO1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IGRDb250ZW50XG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLzxhIGNsYXNzPVwic291cmNlLWljb25cIltcXHNcXFNdKj88XFwvYT4vZywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcKFtcXHNcXFNdW1xcclxcbl08YSBocmVmPVwiamF2YXNjcmlwdDo7XCJbXFxzXFxTXSo/dGl0bGU9XCLlsZXlvIBcIj7lsZXlvIA8XFwvYT5cXCkvZywgJycpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2VXaXRoQ2FsbGJhY2soLyg8cCBjbGFzcz1cInNwb2lsZXItdGlwXCI+KC4qPyk8XFwvcD4pL2csXG4gICAgICAgICAgICAgICAgICAgICc8YmxvY2txdW90ZSBjbGFzcz1cInNwb2lsZXItdGlwXCI+e+acieWJp+mAj308L2Jsb2NrcXVvdGU+JyxcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHNvdXJjZSwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJldHVyblZhbHVlID0gc291cmNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlYXJjaFZhbHVlLnRlc3Qoc291cmNlKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXBsYWNlVGV4dCA9IFJlZ0V4cC4kMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlVGV4dCA9IHJlcGxhY2VUZXh0ID09PSAnJyA/IFJlZ0V4cC4kMSA6IHJlcGxhY2VWYWx1ZS5yZXBsYWNlKCd75pyJ5Ymn6YCPfScsIHJlcGxhY2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZSA9IHNvdXJjZS5yZXBsYWNlKFJlZ0V4cC4kMSwgcmVwbGFjZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaSA8IHJldmlld3NfY29udGVudF9odG1sX2FycmF5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH1cbn0gY2F0Y2ggKGUpIHsgfVxuXG5yZXMuZGF0YSA9IGQ7XG5zZXRIb21lUmVzdWx0KHJlcyk7Iiwic2RldGFpbF9jb2xfdHlwZSI6InJpY2hfdGV4dCIsInNkZXRhaWxfZmluZF9ydWxlIjoiKiIsInVhIjoicGMiLCJwcmVSdWxlIjoiLyoqXG4gKiDmmK/lkKblvIDlkK/op4bnlYzmkJzvvIzlvIDlkK/lkI7ngrnlh7vnrKzkuIDpobnljbPlj6/kvb/nlKhcbiAqXG4gKiDoi6XkuI3lvIDlkK/liJnngrnlh7vkuLrmn6XnnIvljp/mlodcbiAqXG4gKiDlvIDlkK8vMSDkuI3lvIDlkK8vMFxuICovXG5sZXQgb3Blbkhpa2VyU2VhcmNoID0gMTtcbi8vIGRlc2Mg5o+P6L+w55qE5LiJ6KGM5Lit5q+P6KGM55qE5pyA5aSn6ZW/5bqmXG5sZXQgZGVzY0xpbmVNYXhMZW4gPSAyNTtcbi8vIOivhOiuuueUqOaIt+minOiJslxubGV0IHVzZXJDb2xvciA9IFwiIzI5NzlGRlwiO1xuLy8g5qih5Z2X55qE6Ze06LedXG5sZXQgbGluZV9tb2RlbCA9IDE7XG4vLyDmqKHlnZfpl7Tot53nsbvlnovvvIjpgILphY3ku6XlkI7lj6/og73kvJrmnInnmoTml6Dovrnot53nur/vvIlcbmxldCBsaW5lX3R5cGVfbW9kZWwgPSAnbGluZV9ibGFuayc7XG4vKipcbiAqIOaQnOe0ouaooeW8j1xuICpcbiAqIDA6IFwiaGlrZXI6Ly9zZWFyY2g/cz3mtYvor5XvvIzlsIbkvJrmiZPlvIDmkJzntKLlvLnnqpfvvIzoh6rliqjloavlhYXmkJzntKLnmoTlhbPplK7or43igJzmtYvor5XigJ3vvIznlLHnlKjmiLfoh6rlt7HpgInmi6nliIbnu4Tlkozop4TliJnlkI7mkJzntKJcIixcbiAqIDE6IFwiaGlrZXI6Ly9zZWFyY2g/cz3mtYvor5UmZ3JvdXA94pGh5b2x5pCc77yM5bCG5Lya5omT5byA5pCc57Si5by556qX77yM6Ieq5Yqo5aGr5YWF5pCc57Si55qE5YWz6ZSu6K+N4oCc5rWL6K+V4oCd5bm25LiU6Ieq5Yqo5YiH5o2i5YiG57uE5Li64oCc4pGh5b2x5pCc4oCd77yM55So5oi35Y+v5YiH5o2i5YiG57uE5ZKM6KeE5YiZXCIsXG4gKiAyOiBcImhpa2VyOi8vc2VhcmNoP3M95rWL6K+VJnJ1bGU95rW36ZiU6KeG55WM77yM5bCG5Lya55u05o6l6Lez6L2s5pCc57Si57uT5p6c55WM6Z2i77yM6Ieq5Yqo6YCJ5oup5qCH6aKY5Li64oCc5rW36ZiU6KeG55WM4oCd55qE6KeE5YiZ6L+b6KGM5pCc57Si77yM5bm25LiU6K+l55WM6Z2i5LiN5Y+v5YiH5o2i5Yir55qE6KeE5YiZXCIsXG4gKiAzOiBcImhpa2VyOi8vc2VhcmNoP3M95rWL6K+VJnJ1bGU95rW36ZiU6KeG55WMJnNpbXBsZT1mYWxzZe+8jOWwhuS8muiHquWKqOWhq+WFheaQnOe0oueahOWFs+mUruivjeKAnOa1i+ivleKAne+8jOW5tuS4lOiHquWKqOWIh+aNouWIhue7hOS4uuKAnOKRoOaOqOiNkOKAneOAgeiHquWKqOmAieS4reagh+mimOS4uuKAnOa1t+mYlOinhueVjOKAneeahOinhOWIme+8jOeUqOaIt+WPr+WIh+aNouWIhue7hOWSjOinhOWIme+8jOW5tuiHquWKqOW8gOWni+aQnOe0olwiXG4gKi9cbmxldCBzZWFyY2hNb2RlID0gMDtcbi8vIOaQnOe0ouWIhue7hFxubGV0IHNlYXJjaEdyb3VwID0gJyc7XG4vLyDmkJzntKLop4TliJlcbmxldCBzZWFyY2hSdWxlID0gJyc7XG5cbi8qKlxuICog5Lul5LiL5a6M5YWo5LiN6ZyA6KaB5L2/55So6ICF6YWN572u77yM5aaC55yL5LiN5oeC5Luj56CB6K+35Yu/5Lmx5YqoXG4gKi9cbmxldCBzZWFyY2hWYWx1ZXMgPSBbXG4gICAgJycsXG4gICAgc2VhcmNoR3JvdXAgPT09ICcnID8gJycgOiAnJmdyb3VwPScgKyBzZWFyY2hHcm91cCxcbiAgICBzZWFyY2hSdWxlID09PSAnJyA/ICcnIDogJyZydWxlPScgKyBzZWFyY2hSdWxlLFxuICAgIHNlYXJjaFJ1bGUgPT09ICcnID8gJycgOiAnJnJ1bGU9JyArIHNlYXJjaFJ1bGUgKyAnJnNpbXBsZT1mYWxzZSdcbl07XG5sZXQgc2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZXNbc2VhcmNoTW9kZV07XG5wdXRWYXIyKCdkYl9vcGVuX2hpa2VyX3NlYXJjaCcsIG9wZW5IaWtlclNlYXJjaC50b1N0cmluZygpKTtcbnB1dFZhcjIoJ2RiX2Rlc2NfbGluZV9tYXhfbGVuJywgZGVzY0xpbmVNYXhMZW4udG9TdHJpbmcoKSk7XG5wdXRWYXIyKCdkYl91c2VyX2NvbG9yJywgdXNlckNvbG9yKTtcbnB1dFZhcjIoJ2RiX2xpbmVfbW9kZWwnLCBsaW5lX21vZGVsLnRvU3RyaW5nKCkpO1xucHV0VmFyMignZGJfbGluZV90eXBlX21vZGVsJywgbGluZV90eXBlX21vZGVsKTtcbnB1dFZhcjIoJ2RiX3NlYXJjaF92YWx1ZScsIHNlYXJjaFZhbHVlKTsiLCJwYWdlcyI6IltdIiwiaWNvbiI6IiJ9
Add Comment
Please, Sign In to add comment