Advertisement
xiaomianao666

邀您一起看:添加导入

Apr 4th, 2023
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥添加导入@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuiOt+WPluinhumikeebruW9lVwiLFwicGF0aFwiOlwiZ2V0X3ZpZGVvX2NhdGFsb2d1ZS5qc1wiLFwicnVsZVwiOlwiZnVuY3Rpb24gaXNNb3ZpZSh0ZXh0KSB7XFxuXFxuICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDgpIHtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbiAgICAvL+aOkumZpFxcbiAgICBsZXQgcmVnID0gL1xcXFwufOmrmOa4heebtOaSrXzlhpnnnJ/mjqjojZB85b2x6ZmifOW9seinhnzok53lhYnnlLXlvbF86auY5riF55S15b2xfOesrOS4gOWto3znrKzkuozlraN856ys5LiJ5a2jfOesrOWbm+Wto3znrKzkupTlraN8XFxcXG58XFxcXHIvO1xcbiAgICBpZiAocmVnLnRlc3QodGV4dCkpIHtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbiAgICByZXR1cm4gLyjljp/nlLt85aSH55SofOiTneWFiXzotoXmuIV86auY5riFfOato+eJh3zpn6nniYh8NEt8MTA4MFB8NzIwUHxUQ3xIRHxCRHzkuK3lrZd854mIKSQvaS50ZXN0KHRleHQpO1xcbn1cXG5cXG5mdW5jdGlvbiBub3RDaGFwdGVyKHRleHQpIHtcXG4gICAgcmV0dXJuIC9bMC05XVxcXFwuWzAtOV3liIYvLnRlc3QodGV4dCk7XFxufVxcbmxldCBsYXN0ID0gbnVsbDtcXG5cXG5mdW5jdGlvbiBpc0NoYXB0ZXIwKHRleHQsIG5leHRUZXh0KSB7XFxuICAgIGxldCBwcmkgPSAvXuesrFxcXFxkKyjpm4Z856ugfOivnSkkLztcXG4gICAgaWYgKHByaS50ZXN0KHRleHQpKSB7XFxuICAgICAgICAvL2ZiYS5sb2coXFxcImRlYnVnOlxcXCIgKyBSZWdFeHAuJDEgKyB0ZXh0KVxcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH1cXG5cXG4gICAgbGV0IG51bTEgPSBOdW1iZXIodGV4dCk7XFxuICAgIGlmICghdGV4dCB8fCBOdW1iZXIuaXNOYU4obnVtMSkpIHtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbiAgICBpZiAobnVtMSA9PT0gMSkge1xcbiAgICAgICAgLy9mYmEubG9nKFxcXCJkZWJ1ZzpcXFwiICsgbnVtMSArIHRleHQpXFxuICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgfVxcbiAgICBpZiAobmV4dFRleHQgPT09IG51bGwpIHtcXG4gICAgICAgIC8vZmJhLmxvZyhcXFwiZGVidWc6XFxcIiArIG51bTEgKyBuZXh0VGV4dClcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9XFxuICAgIGxldCBudW0yID0gTnVtYmVyKG5leHRUZXh0KTtcXG4gICAgaWYgKE51bWJlci5pc05hTihudW0yKSkge1xcbiAgICAgICAgaWYgKGxhc3QgJiYgKGxhc3QgLSBudW0xIDwgMiAmJiBsYXN0IC0gbnVtMSA+IC0yKSkge1xcbiAgICAgICAgICAgIC8vZmJhLmxvZyhcXFwiZGVidWc6XFxcIiArIGxhc3QpXFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgaWYgKG51bTEgLSBudW0yIDwgMiAmJiBudW0xIC0gbnVtMiA+IC0yIC8qJiZudW0xIC0gbnVtMiE9PTAqLyApIHtcXG4gICAgICAgIGZiYS5sb2coXFxcImRlYnVnOlxcXCIgKyBudW0xICsgdGV4dCArIG51bTIgKyBuZXh0VGV4dClcXG4gICAgICAgIGxhc3QgPSBudW0xO1xcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gaXNDaGFwdGVyKHRleHQsIG5leHRUZXh0KSB7XFxuICAgIHRleHQgPSB0ZXh0LnRyaW0oKTtcXG4gICAgbmV4dFRleHQgPSBuZXh0VGV4dCA/IG5leHRUZXh0LnRyaW0oKSA6IG5leHRUZXh0O1xcbiAgICBpZiAoIXRleHQgfHwgbm90Q2hhcHRlcih0ZXh0KSkge1xcbiAgICAgICAgLy/kvJjlhYjmjpLpmaRcXG4gICAgICAgIC8vZmJhLmxvZyhcXFwiMOaOkumZpDpcXFwiK3RleHQpXFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgLy/liKTmlq3mmK/kuI3mmK/nlLXlvbFcXG4gICAgaWYgKGlzTW92aWUodGV4dCkpIHtcXG4gICAgICAgIC8vZmJhLmxvZyhcXFwiMeaYr+eUteW9sTpcXFwiICsgdGV4dClcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9XFxuXFxuICAgIGlmIChpc0NoYXB0ZXIwKHRleHQsIG5leHRUZXh0KSkge1xcbiAgICAgICAgLy9mYmEubG9nKFxcXCIy5piv5Ymn6ZuGOlxcXCIgKyB0ZXh0KVxcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH1cXG4gICAgLy9mYmEubG9nKHRleHQpXFxuICAgIHJldHVybiBmYWxzZTtcXG59XFxuLy90b3DmtY/op4jlmajihpNcXG52YXIgbGlzdF9kb2N1bWVudF9saW5rID0gW107XFxudmFyIGxpc3RfbGluayA9IFtdO1xcbnZhciB5bXVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xcbnZhciBjaG9vc2VfY2hhbm5lbCA9IDA7XFxubGlzdF9kb2N1bWVudF9saW5rID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYScpO1xcbnZhciB0b3BfaiA9IDA7XFxuXFxuZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0X2RvY3VtZW50X2xpbmsubGVuZ3RoOyBpKyspIHtcXG4gICAgdmFyIHRleHQgPSBsaXN0X2RvY3VtZW50X2xpbmtbaV0uaW5uZXJUZXh0O1xcbiAgICB2YXIgaHJlZiA9IGxpc3RfZG9jdW1lbnRfbGlua1tpXS5ocmVmO1xcbiAgICB2YXIgbmV4dFRleHQgPSBpICsgMSA+PSBsaXN0X2RvY3VtZW50X2xpbmsubGVuZ3RoID8gbnVsbCA6IGxpc3RfZG9jdW1lbnRfbGlua1tpICsgMV0uaW5uZXJUZXh0O1xcbiAgICBpZiAodGV4dCAmJiBpc0NoYXB0ZXIodGV4dCwgbmV4dFRleHQpICYmIGhyZWYgJiYgaHJlZi5pbmRleE9mKCdodHRwJykgPiAtMSAmJiBocmVmLmluZGV4T2YoeW11cmwgKyBcXFwiI1xcXCIpID09IC0xKSB7XFxuICAgICAgICBpZiAobGlzdF9kb2N1bWVudF9saW5rW2ldLnRhcmdldCA9PSAnX2JsYW5rJykge1xcbiAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGxpc3RfbGlua1t0b3Bfal0gPT09IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIGxpc3RfbGlua1t0b3Bfal0gPSBbXTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChocmVmID09IGxvY2F0aW9uLmhyZWYpIHtcXG4gICAgICAgICAgICBjaG9vc2VfY2hhbm5lbCA9IHRvcF9qO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIHNzID0gdGV4dC5yZXBsYWNlKC9bXlxcXFxkK10vZywgJycpO1xcbiAgICAgICAgaWYgKHNzLmluZGV4T2YoMCkgPT09IDApIHtcXG4gICAgICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCcwJywgJycpO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGlzX3JlcGVhdCA9IGZhbHNlO1xcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0X2xpbmtbdG9wX2pdLmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgaWYgKGxpc3RfbGlua1t0b3Bfal1bal0uaHJlZiA9PSBocmVmKSB7XFxuICAgICAgICAgICAgICAgIGlzX3JlcGVhdCA9IHRydWU7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAobGlzdF9saW5rW3RvcF9qXVtqXS50ZXh0ID09IHRleHQpIHtcXG4gICAgICAgICAgICAgICAgdG9wX2ogKz0gMTtcXG4gICAgICAgICAgICAgICAgbGlzdF9saW5rW3RvcF9qXSA9IFtdO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpc19yZXBlYXQpIHtcXG4gICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBzdGQgPSB7fTtcXG4gICAgICAgIHN0ZC51cmwgPSBocmVmO1xcbiAgICAgICAgc3RkLnRleHQgPSB0ZXh0O1xcbiAgICAgICAgLy/mjpLpmaTlubTku6NcXG4gICAgICAgIGxldCByZWcgPSAvMXwyWzAtOV0rLztcXG4gICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA9PSA0ICYmIHJlZy50ZXN0KHRleHQpKSB7XFxuICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICB9XFxuICAgICAgICBsaXN0X2xpbmtbdG9wX2pdLnB1c2goc3RkKTtcXG4gICAgfVxcbn1cXG4vL2h0bWxJbnRlcmZhY2UuZ2V0VmlkZW9DYXRhbG9ndWUoSlNPTi5zdHJpbmdpZnkobGlzdF9saW5rKSk7XFxuLy90b3DmtY/op4jlmajihpFcXG4vL2ZiYS5sb2coSlNPTi5zdHJpbmdpZnkobGlzdF9saW5rKSlcXG5pZiAobGlzdF9saW5rLmxlbmd0aCA9PSAxICYmIGxpc3RfbGlua1swXS5sZW5ndGggPD0gMCkge1xcbiAgICAvL2VtcHR5XFxufSBlbHNlIHtcXG4gICAgaWYgKGxpc3RfbGluay5sZW5ndGggPiAwKSB7XFxuICAgICAgICB3aW5kb3cuX19meVN1Y2Nlc3MgPSB0cnVlO1xcbiAgICAgICAgZmJhLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIHJ1bGU6IGZ5X3RpdGxlLFxcbiAgICAgICAgICAgIHRpdGxlOiBkb2N1bWVudC50aXRsZSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9fY2F0YWxvZ3VlX3ZpZXcuanM/cnVsZT1cXFwiICsgZnlfdGl0bGUsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGlzdF9saW5rOiBsaXN0X2xpbmssXFxuICAgICAgICAgICAgICAgIGhyZWY6IGxvY2F0aW9uLmhyZWYsXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBkb2N1bWVudC50aXRsZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pKTtcXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LmJhY2soLTEpO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6KeG6aKR55uu5b2VXCIsXCJwYXRoXCI6XCJ2aWRlb19jYXRhbG9ndWVfdmlldy5qc1wiLFwicnVsZVwiOlwianM6XFxubGV0IGQgPSBbXTtcXG5sZXQgaSA9IDE7XFxuZm9yIChsZXQgcGxheUxpc3Qgb2YgTVlfUEFSQU1TLmxpc3RfbGluaykge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLnur/ot69cXFwiICsgaSsrLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSk7XFxuICAgIGZvciAobGV0IGxpIG9mIHBsYXlMaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBsaS50ZXh0LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF80XFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJ2aWRlbzovL1xcXCIrbGkudXJsLFxcbiAgICAgICAgICAgIGV4dHJhOntcXG4gICAgICAgICAgICAgICAgYmxvY2tSdWxlczogW1xcXCIvYWQvXFxcIiwgXFxcImdvb2dsZVxcXCIsIFxcXCIvc2gvdG8vXFxcIiwgXFxcIi5HSUZcXFwiLCcubXAzJywnLmZsdicsICcuM2dwJywgJy5tcGVnJywgJy5naWYnLCAnLmpwZycsICcuanBlZycsICcucG5nJywgJy5pY28nLCAnLnN2ZyddLFxcbiAgICAgICAgICAgICAgICB2aWRlb0V4Y2x1ZGVSdWxlczogWyc/dXJsPSddXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9JyNhYWFhYWEnPvCflJdcXFwiICsgTVlfUEFSQU1TLmhyZWYgKyBcXFwiPC9mb250Pjwvc21hbGw+XFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3g1P3U9XFxcIiArIGJhc2U2NEVuY29kZShNWV9QQVJBTVMuaHJlZiksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHBhZ2VUaXRsZTogTVlfUEFSQU1TLnRpdGxlLFxcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KTtcXG5cXG5zZXRSZXN1bHQoZCk7XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmibnph4/lr7zlhaVcIixcInBhdGhcIjpcImltXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmxldCBhID0gZ2V0UGFyYW0oXFxcImFcXFwiLCBcXFwiXFxcIik7XFxuaWYgKGEgIT0gXFxcIlxcXCIpIHtcXG4gICAgYSA9IGJhc2U2NERlY29kZShhKTtcXG59XFxuc2V0UGFnZVRpdGxlKE1ZX1JVTEUudGl0bGUgKyBcXFwi5om56YeP5a+85YWlXFxcIilcXG5wdXRNeVZhcihcXFwiaW1cXFwiLCBhKTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIHVybDogXFxcIlxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGEsXFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcImltXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgfSksXFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgIGhlaWdodDogMyxcXG4gICAgICAgIGhpZ2hsaWdodDogdHJ1ZVxcbiAgICB9XFxufSk7XFxuXFxubGV0IHNhdmUgPSAoKSA9PiB7XFxuICAgIGxldCBhID0gZ2V0TXlWYXIoXFxcImltXFxcIiwgXFxcIltdXFxcIik7XFxuICAgIGlmIChhID09IFxcXCJcXFwiIHx8ICFhLnN0YXJ0c1dpdGgoXFxcIltcXFwiKSkge1xcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeato+ehrueahOagvOW8j1xcXCJcXG4gICAgfVxcbiAgICBsZXQgbGlzdCA9IEpTT04ucGFyc2UoYSk7XFxuICAgIGxldCB7XFxuICAgICAgICBhZGRBbGxcXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgbGV0IGNvdW50ID0gYWRkQWxsKGxpc3QpO1xcbiAgICBiYWNrKHRydWUpO1xcbiAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5re75YqgXFxcIiArIGNvdW50ICsgXFxcIuadoeWcsOWdgFxcXCJcXG59O1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5a+85YWlXFxcIixcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKHNhdmUpLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCJcXG59KTtcXG5cXG5pZiAoZ2V0UGFyYW0oXFxcImJcXFwiLCBcXFwiMFxcXCIpID09IFxcXCIxXFxcIikge1xcbiAgICBjb25maXJtKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5rip6aao5o+Q56S6XFxcIixcXG4gICAgICAgIGNvbnRlbnQ6IFxcXCLnoa7lrprnq4vljbPlr7zlhaVcXFwiICsgTVlfUlVMRS50aXRsZSArIFxcXCLmlbDmja7vvJ9cXFwiLFxcbiAgICAgICAgY29uZmlybTogJC50b1N0cmluZyhzYXZlKVxcbiAgICB9KTtcXG59XFxuXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5re75Yqg572R56uZXCIsXCJwYXRoXCI6XCJhZGRcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgY2xlYXJNeVZhcihcXFwibmFtZVxcXCIpO1xcbiAgICBjbGVhck15VmFyKFxcXCJ1cmxcXFwiKTtcXG59KSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCJcXFwiLFxcbiAgICB1cmw6IFxcXCJcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZGVzYzogXFxcIuivt+i+k+WFpee9keermeWQjeensFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcIm5hbWVcXFwiLCBpbnB1dCk7XFxuICAgICAgICB9KSxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiBcXFwiXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXnvZHnq5nlnLDlnYBcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ1cmxcXFwiLCBpbnB1dCk7XFxuICAgICAgICB9KSxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5re75Yqg5L+d5a2YXFxcIixcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGxldCBuYW1lID0gZ2V0TXlWYXIoXFxcIm5hbWVcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICBsZXQgdXJsID0gZ2V0TXlWYXIoXFxcInVybFxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgIGlmIChuYW1lID09IFxcXCJcXFwiIHx8IHVybCA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXlrozmlbTkv6Hmga9cXFwiXFxuICAgICAgICB9XFxuICAgICAgICBsZXQge1xcbiAgICAgICAgICAgIGFkZFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFwiKTtcXG4gICAgICAgIGFkZChuYW1lLCB1cmwpO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7Lmt7vliqBcXFwiXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCJcXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlbDmja7nrqHnkIZcIixcInBhdGhcIjpcImRhdGFcIixcInJ1bGVcIjpcInZhciBkZWZhdWx0VmFsdWUgPSBbXFxuICAgIHtcXG4gICAgICAgIG5hbWU6IFxcXCLosYzosYZcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly93d3cud2FuZG91LnByby9cXFwiXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICAgIG5hbWU6IFxcXCLojLbmna/ni5BcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9jdXBmb3guYXBwL1xcXCJcXG4gICAgfSxcXG4gICAge1xcbiAgICAgICAgbmFtZTogXFxcIuaQnOeJh1xcXCIsXFxuICAgICAgICB1cmw6IFxcXCJodHRwOi8vc291cGlhbi5kZS9cXFwiXFxuICAgIH0sXFxuICAgIHtcXG4gICAgICAgIG5hbWU6IFxcXCLpnZLpuqZcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly93d3cucWltYWl0di5jb20vXFxcIlxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgICBuYW1lOiBcXFwi55S15b2x54uXXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vd3d3LmRpYW55aW5nZ291LmNvbS95aW5na3UvXFxcIlxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgICBuYW1lOiBcXFwi6Iy25p2v6JmOXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vd3d3LjcyNTk5OC5jb20veWluZ2t1XFxcIlxcbiAgICB9LFxcbiAgICB7XFxuICAgICAgICBuYW1lOiBcXFwi5Zyf5ouo6bygXFxcIixcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vd3d3LnRic2R5LmNvbS9tL2luZGV4Lmh0bWxcXFwiXFxuICAgIH1cXG5dO1xcbiQuZXhwb3J0cyA9IHtcXG4gICAgbG9hZDogZnVuY3Rpb24oKSB7XFxuICAgICAgICByZXR1cm4gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YTFcXFwiLCBkZWZhdWx0VmFsdWUpO1xcbiAgICB9LFxcbiAgICBhZGQ6IGZ1bmN0aW9uKG5hbWUsIHVybCkge1xcbiAgICAgICAgbGV0IGRhdGEgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhMVxcXCIsIGRlZmF1bHRWYWx1ZSk7XFxuICAgICAgICBmb3IgKGxldCBpdCBvZiBkYXRhKSB7XFxuICAgICAgICAgICAgaWYgKGl0Lm5hbWUgPT0gbmFtZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm5cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBkYXRhLnB1c2goe1xcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXFxuICAgICAgICAgICAgdXJsOiB1cmxcXG4gICAgICAgIH0pO1xcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwiZGF0YTFcXFwiLCBkYXRhKTtcXG4gICAgfSxcXG4gICAgYWRkQWxsOiBmdW5jdGlvbihsaXN0KSB7XFxuICAgICAgICBsZXQgZGF0YSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGExXFxcIiwgZGVmYXVsdFZhbHVlKTtcXG4gICAgICAgIGxldCBuYW1lcyA9IGRhdGEubWFwKGl0ID0+IGl0Lm5hbWUpO1xcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcXG4gICAgICAgIGZvciAobGV0IGl0IG9mIGxpc3QpIHtcXG4gICAgICAgICAgICBpZiAoIW5hbWVzLmluY2x1ZGVzKGl0Lm5hbWUpKSB7XFxuICAgICAgICAgICAgICAgIGRhdGEucHVzaChpdCk7XFxuICAgICAgICAgICAgICAgIGNvdW50Kys7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwiZGF0YTFcXFwiLCBkYXRhKTtcXG4gICAgICAgIHJldHVybiBjb3VudDtcXG4gICAgfSxcXG4gICAgcmVtb3ZlOiBmdW5jdGlvbihuYW1lKSB7XFxuICAgICAgICBsZXQgZGF0YSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGExXFxcIiwgZGVmYXVsdFZhbHVlKTtcXG4gICAgICAgIGRhdGEgPSBkYXRhLmZpbHRlcihpdCA9PiBpdC5uYW1lICE9IG5hbWUpO1xcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwiZGF0YTFcXFwiLCBkYXRhKTtcXG4gICAgfSxcXG4gICAgdG9wOiBmdW5jdGlvbihuYW1lKSB7XFxuICAgICAgICBsZXQgZGF0YSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGExXFxcIiwgZGVmYXVsdFZhbHVlKTtcXG4gICAgICAgIGxldCBpdCA9IGRhdGEuZmlsdGVyKGl0ID0+IGl0Lm5hbWUgPT0gbmFtZSlbMF07XFxuICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgZC5wdXNoKGl0KTtcXG4gICAgICAgIGZvciAobGV0IGlpIG9mIGRhdGEpIHtcXG4gICAgICAgICAgICBpZiAoaWkubmFtZSAhPSBuYW1lKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaChpaSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwiZGF0YTFcXFwiLCBkKTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcInVcIixcInBhdGhcIjpcInVcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHJ1bGUsIG9yaWdpbikge1xcbiAgICByZXR1cm4gJC50b1N0cmluZygocnVsZSwgb3JpZ2luKSA9PiB7XFxuICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aChcXFwibWFnbmV0XFxcIikpIHtcXG4gICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmuKnppqjmj5DnpLpcXFwiLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcXFwi5qOA5rWL5Yiw5paw55qE56OB6ZO+5Zyw5Z2A77yM54K55Ye756Gu5a6a5oyJ6ZKu5Y2z5Y+v5pKt5pS+77yM54K55Ye75Y+W5raI5oyJ6ZKu5Y+v5Lul5aSN5Yi26ZO+5o6lXFxcIixcXG4gICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygobWFnKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFnO1xcbiAgICAgICAgICAgICAgICB9LCBpbnB1dCksXFxuICAgICAgICAgICAgICAgIGNhbmNlbDogJC50b1N0cmluZygobWFnKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImNvcHk6Ly9cXFwiICsgbWFnXFxuICAgICAgICAgICAgICAgIH0sIGlucHV0KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcbiAgICAgICAgICAgIC8v6IO95ZSk6LW3QVBQ55qE55m95ZCN5Y2VXFxuICAgICAgICAgICAgbGV0IHdoaXRlID0gW1xcbiAgICAgICAgICAgICAgICBcXFwicWtsaW5rXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcImJkbmV0ZGlza1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJ4dW5sZWlhcHBcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwic21hcnRkcml2ZVxcXCJcXG4gICAgICAgICAgICBdO1xcbiAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IGlucHV0LnN0YXJ0c1dpdGgoaXQpKS5sZW5ndGggPiAwO1xcbiAgICAgICAgICAgIGlmICghaW5XaGl0ZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAgJiYgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAodXJsKTtcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH1cXG4gICAgfSwgcnVsZSwgb3JpZ2luKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJYNVwiLFwicGF0aFwiOlwieDVcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxubGV0IHVybCA9IGJhc2U2NERlY29kZShnZXRQYXJhbShcXFwidVxcXCIpKTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIHVybDogdXJsLFxcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgZGVzYzogXFxcImZsb2F0JiYxMDAlXFxcIixcXG4gICAgcGljX3VybDogXFxcIlxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBmbG9hdFZpZGVvOiB0cnVlLFxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXG4gICAgICAgIGJsb2NrUnVsZXM6IFtcXFwiLmdpZlxcXCIsIFxcXCIvYWQvXFxcIiwgXFxcImdvb2dsZVxcXCIsIFxcXCIvc2gvdG8vXFxcIiwgXFxcIi5HSUZcXFwiXVxcbiAgICB9XFxufSk7XFxuc2V0UmVzdWx0KGQpO1wifV0sXCJwYXJhbXNcIjpcIntcXFwibG9uZ0NsaWNrXFxcIjpbe1xcXCJqc1xcXCI6XFxcIihcXFxcbihuYW1lKSA9PiB7XFxcXG4gICAgbGV0IHt0b3B9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFxcXFxcIik7XFxcXG4gICAgdG9wKG5hbWUpO1xcXFxuICAgIHJlZnJlc2hQYWdlKCk7XFxcXG59XFxcXG4pKFxcXFxcXFwi5re75Yqg5a+85YWlXFxcXFxcXCIpXFxcIixcXFwidGl0bGVcXFwiOlxcXCLnva7pobbmt7vliqDlr7zlhaVcXFwifSx7XFxcImpzXFxcIjpcXFwiKFxcXFxuKG5hbWUpID0+IHtcXFxcbiAgICBsZXQge3JlbW92ZX0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXFxcXFwiKTtcXFxcbiAgICByZW1vdmUobmFtZSk7XFxcXG4gICAgcmVmcmVzaFBhZ2UoKTtcXFxcbn1cXFxcbikoXFxcXFxcXCLmt7vliqDlr7zlhaVcXFxcXFxcIilcXFwiLFxcXCJ0aXRsZVxcXCI6XFxcIuWIoOmZpOa3u+WKoOWvvOWFpVxcXCJ9XX1cIixcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwiVG9w5rWL6K+VXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9wYWdlL2FkZCNub0hpc3RvcnkjXCIsXCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwiZmluZF9ydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgIGNsZWFyTXlWYXIoXFxcIm5hbWVcXFwiKTtcXG4gICAgY2xlYXJNeVZhcihcXFwidXJsXFxcIik7XFxufSkpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiBcXFwiXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGRlc2M6IFxcXCLor7fovpPlhaXnvZHnq5nlkI3np7BcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJuYW1lXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgfSksXFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgIHVybDogXFxcIlxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBkZXNjOiBcXFwi6K+36L6T5YWl572R56uZ5Zyw5Z2AXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwidXJsXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgfSksXFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIua3u+WKoOS/neWtmFxcXCIsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBsZXQgbmFtZSA9IGdldE15VmFyKFxcXCJuYW1lXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgbGV0IHVybCA9IGdldE15VmFyKFxcXCJ1cmxcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICBpZiAobmFtZSA9PSBcXFwiXFxcIiB8fCB1cmwgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+36L6T5YWl5a6M5pW05L+h5oGvXFxcIlxcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICBhZGRcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9kYXRhXFxcIik7XFxuICAgICAgICBhZGQobmFtZSwgdXJsKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5bey5re75YqgXFxcIlxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgZGVzYzogXFxcIlxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJcXFwiXFxufSk7XFxuc2V0UmVzdWx0KGQpO1wiLFwiZ3JvdXBcIjpcIuKRokFJXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6I635Y+W6KeG6aKR55uu5b2VXFxcIixcXFwicGF0aFxcXCI6XFxcImdldF92aWRlb19jYXRhbG9ndWUuanNcXFwiLFxcXCJydWxlXFxcIjpcXFwiZnVuY3Rpb24gaXNNb3ZpZSh0ZXh0KSB7XFxcXG5cXFxcbiAgICBpZiAodGV4dC5sZW5ndGggPiA4KSB7XFxcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXFxcbiAgICB9XFxcXG4gICAgLy/mjpLpmaRcXFxcbiAgICBsZXQgcmVnID0gL1xcXFxcXFxcLnzpq5jmuIXnm7Tmkq185YaZ55yf5o6o6I2QfOW9semZonzlvbHop4Z86JOd5YWJ55S15b2xfOmrmOa4heeUteW9sXznrKzkuIDlraN856ys5LqM5a2jfOesrOS4ieWto3znrKzlm5vlraN856ys5LqU5a2jfFxcXFxcXFxcbnxcXFxcXFxcXHIvO1xcXFxuICAgIGlmIChyZWcudGVzdCh0ZXh0KSkge1xcXFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiAvKOWOn+eUu3zlpIfnlKh86JOd5YWJfOi2hea4hXzpq5jmuIV85q2j54mHfOmfqeeJiHw0S3wxMDgwUHw3MjBQfFRDfEhEfEJEfOS4reWtl3zniYgpJC9pLnRlc3QodGV4dCk7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIG5vdENoYXB0ZXIodGV4dCkge1xcXFxuICAgIHJldHVybiAvWzAtOV1cXFxcXFxcXC5bMC05XeWIhi8udGVzdCh0ZXh0KTtcXFxcbn1cXFxcbmxldCBsYXN0ID0gbnVsbDtcXFxcblxcXFxuZnVuY3Rpb24gaXNDaGFwdGVyMCh0ZXh0LCBuZXh0VGV4dCkge1xcXFxuICAgIGxldCBwcmkgPSAvXuesrFxcXFxcXFxcZCso6ZuGfOeroHzor50pJC87XFxcXG4gICAgaWYgKHByaS50ZXN0KHRleHQpKSB7XFxcXG4gICAgICAgIC8vZmJhLmxvZyhcXFxcXFxcImRlYnVnOlxcXFxcXFwiICsgUmVnRXhwLiQxICsgdGV4dClcXFxcbiAgICAgICAgcmV0dXJuIHRydWU7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgbGV0IG51bTEgPSBOdW1iZXIodGV4dCk7XFxcXG4gICAgaWYgKCF0ZXh0IHx8IE51bWJlci5pc05hTihudW0xKSkge1xcXFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxcXG4gICAgfVxcXFxuICAgIGlmIChudW0xID09PSAxKSB7XFxcXG4gICAgICAgIC8vZmJhLmxvZyhcXFxcXFxcImRlYnVnOlxcXFxcXFwiICsgbnVtMSArIHRleHQpXFxcXG4gICAgICAgIHJldHVybiB0cnVlO1xcXFxuICAgIH1cXFxcbiAgICBpZiAobmV4dFRleHQgPT09IG51bGwpIHtcXFxcbiAgICAgICAgLy9mYmEubG9nKFxcXFxcXFwiZGVidWc6XFxcXFxcXCIgKyBudW0xICsgbmV4dFRleHQpXFxcXG4gICAgICAgIHJldHVybiB0cnVlO1xcXFxuICAgIH1cXFxcbiAgICBsZXQgbnVtMiA9IE51bWJlcihuZXh0VGV4dCk7XFxcXG4gICAgaWYgKE51bWJlci5pc05hTihudW0yKSkge1xcXFxuICAgICAgICBpZiAobGFzdCAmJiAobGFzdCAtIG51bTEgPCAyICYmIGxhc3QgLSBudW0xID4gLTIpKSB7XFxcXG4gICAgICAgICAgICAvL2ZiYS5sb2coXFxcXFxcXCJkZWJ1ZzpcXFxcXFxcIiArIGxhc3QpXFxcXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxcXG4gICAgfVxcXFxuICAgIGlmIChudW0xIC0gbnVtMiA8IDIgJiYgbnVtMSAtIG51bTIgPiAtMiAvKiYmbnVtMSAtIG51bTIhPT0wKi8gKSB7XFxcXG4gICAgICAgIGZiYS5sb2coXFxcXFxcXCJkZWJ1ZzpcXFxcXFxcIiArIG51bTEgKyB0ZXh0ICsgbnVtMiArIG5leHRUZXh0KVxcXFxuICAgICAgICBsYXN0ID0gbnVtMTtcXFxcbiAgICAgICAgcmV0dXJuIHRydWU7XFxcXG4gICAgfVxcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBpc0NoYXB0ZXIodGV4dCwgbmV4dFRleHQpIHtcXFxcbiAgICB0ZXh0ID0gdGV4dC50cmltKCk7XFxcXG4gICAgbmV4dFRleHQgPSBuZXh0VGV4dCA/IG5leHRUZXh0LnRyaW0oKSA6IG5leHRUZXh0O1xcXFxuICAgIGlmICghdGV4dCB8fCBub3RDaGFwdGVyKHRleHQpKSB7XFxcXG4gICAgICAgIC8v5LyY5YWI5o6S6ZmkXFxcXG4gICAgICAgIC8vZmJhLmxvZyhcXFxcXFxcIjDmjpLpmaQ6XFxcXFxcXCIrdGV4dClcXFxcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcXFxuICAgIH1cXFxcbiAgICAvL+WIpOaWreaYr+S4jeaYr+eUteW9sVxcXFxuICAgIGlmIChpc01vdmllKHRleHQpKSB7XFxcXG4gICAgICAgIC8vZmJhLmxvZyhcXFxcXFxcIjHmmK/nlLXlvbE6XFxcXFxcXCIgKyB0ZXh0KVxcXFxuICAgICAgICByZXR1cm4gdHJ1ZTtcXFxcbiAgICB9XFxcXG5cXFxcbiAgICBpZiAoaXNDaGFwdGVyMCh0ZXh0LCBuZXh0VGV4dCkpIHtcXFxcbiAgICAgICAgLy9mYmEubG9nKFxcXFxcXFwiMuaYr+WJp+mbhjpcXFxcXFxcIiArIHRleHQpXFxcXG4gICAgICAgIHJldHVybiB0cnVlO1xcXFxuICAgIH1cXFxcbiAgICAvL2ZiYS5sb2codGV4dClcXFxcbiAgICByZXR1cm4gZmFsc2U7XFxcXG59XFxcXG4vL3RvcOa1j+iniOWZqOKGk1xcXFxudmFyIGxpc3RfZG9jdW1lbnRfbGluayA9IFtdO1xcXFxudmFyIGxpc3RfbGluayA9IFtdO1xcXFxudmFyIHltdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XFxcXG52YXIgY2hvb3NlX2NoYW5uZWwgPSAwO1xcXFxubGlzdF9kb2N1bWVudF9saW5rID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYScpO1xcXFxudmFyIHRvcF9qID0gMDtcXFxcblxcXFxuZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0X2RvY3VtZW50X2xpbmsubGVuZ3RoOyBpKyspIHtcXFxcbiAgICB2YXIgdGV4dCA9IGxpc3RfZG9jdW1lbnRfbGlua1tpXS5pbm5lclRleHQ7XFxcXG4gICAgdmFyIGhyZWYgPSBsaXN0X2RvY3VtZW50X2xpbmtbaV0uaHJlZjtcXFxcbiAgICB2YXIgbmV4dFRleHQgPSBpICsgMSA+PSBsaXN0X2RvY3VtZW50X2xpbmsubGVuZ3RoID8gbnVsbCA6IGxpc3RfZG9jdW1lbnRfbGlua1tpICsgMV0uaW5uZXJUZXh0O1xcXFxuICAgIGlmICh0ZXh0ICYmIGlzQ2hhcHRlcih0ZXh0LCBuZXh0VGV4dCkgJiYgaHJlZiAmJiBocmVmLmluZGV4T2YoJ2h0dHAnKSA+IC0xICYmIGhyZWYuaW5kZXhPZih5bXVybCArIFxcXFxcXFwiI1xcXFxcXFwiKSA9PSAtMSkge1xcXFxuICAgICAgICBpZiAobGlzdF9kb2N1bWVudF9saW5rW2ldLnRhcmdldCA9PSAnX2JsYW5rJykge1xcXFxuICAgICAgICAgICAgY29udGludWU7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKGxpc3RfbGlua1t0b3Bfal0gPT09IHVuZGVmaW5lZCkge1xcXFxuICAgICAgICAgICAgbGlzdF9saW5rW3RvcF9qXSA9IFtdO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmIChocmVmID09IGxvY2F0aW9uLmhyZWYpIHtcXFxcbiAgICAgICAgICAgIGNob29zZV9jaGFubmVsID0gdG9wX2o7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdmFyIHNzID0gdGV4dC5yZXBsYWNlKC9bXlxcXFxcXFxcZCtdL2csICcnKTtcXFxcbiAgICAgICAgaWYgKHNzLmluZGV4T2YoMCkgPT09IDApIHtcXFxcbiAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJzAnLCAnJyk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdmFyIGlzX3JlcGVhdCA9IGZhbHNlO1xcXFxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3RfbGlua1t0b3Bfal0ubGVuZ3RoOyBqKyspIHtcXFxcbiAgICAgICAgICAgIGlmIChsaXN0X2xpbmtbdG9wX2pdW2pdLmhyZWYgPT0gaHJlZikge1xcXFxuICAgICAgICAgICAgICAgIGlzX3JlcGVhdCA9IHRydWU7XFxcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAobGlzdF9saW5rW3RvcF9qXVtqXS50ZXh0ID09IHRleHQpIHtcXFxcbiAgICAgICAgICAgICAgICB0b3BfaiArPSAxO1xcXFxuICAgICAgICAgICAgICAgIGxpc3RfbGlua1t0b3Bfal0gPSBbXTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpZiAoaXNfcmVwZWF0KSB7XFxcXG4gICAgICAgICAgICBjb250aW51ZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICB2YXIgc3RkID0ge307XFxcXG4gICAgICAgIHN0ZC51cmwgPSBocmVmO1xcXFxuICAgICAgICBzdGQudGV4dCA9IHRleHQ7XFxcXG4gICAgICAgIC8v5o6S6Zmk5bm05LujXFxcXG4gICAgICAgIGxldCByZWcgPSAvMXwyWzAtOV0rLztcXFxcbiAgICAgICAgaWYgKHRleHQubGVuZ3RoID09IDQgJiYgcmVnLnRlc3QodGV4dCkpIHtcXFxcbiAgICAgICAgICAgIGNvbnRpbnVlO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxpc3RfbGlua1t0b3Bfal0ucHVzaChzdGQpO1xcXFxuICAgIH1cXFxcbn1cXFxcbi8vaHRtbEludGVyZmFjZS5nZXRWaWRlb0NhdGFsb2d1ZShKU09OLnN0cmluZ2lmeShsaXN0X2xpbmspKTtcXFxcbi8vdG9w5rWP6KeI5Zmo4oaRXFxcXG4vL2ZiYS5sb2coSlNPTi5zdHJpbmdpZnkobGlzdF9saW5rKSlcXFxcbmlmIChsaXN0X2xpbmsubGVuZ3RoID09IDEgJiYgbGlzdF9saW5rWzBdLmxlbmd0aCA8PSAwKSB7XFxcXG4gICAgLy9lbXB0eVxcXFxufSBlbHNlIHtcXFxcbiAgICBpZiAobGlzdF9saW5rLmxlbmd0aCA+IDApIHtcXFxcbiAgICAgICAgd2luZG93Ll9fZnlTdWNjZXNzID0gdHJ1ZTtcXFxcbiAgICAgICAgZmJhLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgcnVsZTogZnlfdGl0bGUsXFxcXG4gICAgICAgICAgICB0aXRsZTogZG9jdW1lbnQudGl0bGUsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvX2NhdGFsb2d1ZV92aWV3LmpzP3J1bGU9XFxcXFxcXCIgKyBmeV90aXRsZSxcXFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgbGlzdF9saW5rOiBsaXN0X2xpbmssXFxcXG4gICAgICAgICAgICAgICAgaHJlZjogbG9jYXRpb24uaHJlZixcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogZG9jdW1lbnQudGl0bGVcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSkpO1xcXFxuICAgICAgICB3aW5kb3cuaGlzdG9yeS5iYWNrKC0xKTtcXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6KeG6aKR55uu5b2VXFxcIixcXFwicGF0aFxcXCI6XFxcInZpZGVvX2NhdGFsb2d1ZV92aWV3LmpzXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxubGV0IGQgPSBbXTtcXFxcbmxldCBpID0gMTtcXFxcbmZvciAobGV0IHBsYXlMaXN0IG9mIE1ZX1BBUkFNUy5saXN0X2xpbmspIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLnur/ot69cXFxcXFxcIiArIGkrKyxcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8xXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICB9KTtcXFxcbiAgICBmb3IgKGxldCBsaSBvZiBwbGF5TGlzdCkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGxpLnRleHQsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJ2aWRlbzovL1xcXFxcXFwiK2xpLnVybCxcXFxcbiAgICAgICAgICAgIGV4dHJhOntcXFxcbiAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbXFxcXFxcXCIvYWQvXFxcXFxcXCIsIFxcXFxcXFwiZ29vZ2xlXFxcXFxcXCIsIFxcXFxcXFwiL3NoL3RvL1xcXFxcXFwiLCBcXFxcXFxcIi5HSUZcXFxcXFxcIiwnLm1wMycsJy5mbHYnLCAnLjNncCcsICcubXBlZycsICcuZ2lmJywgJy5qcGcnLCAnLmpwZWcnLCAnLnBuZycsICcuaWNvJywgJy5zdmcnXSxcXFxcbiAgICAgICAgICAgICAgICB2aWRlb0V4Y2x1ZGVSdWxlczogWyc/dXJsPSddXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn1cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPScjYWFhYWFhJz7wn5SXXFxcXFxcXCIgKyBNWV9QQVJBTVMuaHJlZiArIFxcXFxcXFwiPC9mb250Pjwvc21hbGw+XFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS94NT91PVxcXFxcXFwiICsgYmFzZTY0RW5jb2RlKE1ZX1BBUkFNUy5ocmVmKSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBwYWdlVGl0bGU6IE1ZX1BBUkFNUy50aXRsZSxcXFxcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxcXG4gICAgfVxcXFxufSk7XFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaJuemHj+WvvOWFpVxcXCIsXFxcInBhdGhcXFwiOlxcXCJpbVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5sZXQgYSA9IGdldFBhcmFtKFxcXFxcXFwiYVxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbmlmIChhICE9IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICBhID0gYmFzZTY0RGVjb2RlKGEpO1xcXFxufVxcXFxuc2V0UGFnZVRpdGxlKE1ZX1JVTEUudGl0bGUgKyBcXFxcXFxcIuaJuemHj+WvvOWFpVxcXFxcXFwiKVxcXFxucHV0TXlWYXIoXFxcXFxcXCJpbVxcXFxcXFwiLCBhKTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBwaWNfdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogYSxcXFxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcXFxcXCJpbVxcXFxcXFwiLCBpbnB1dCk7XFxcXG4gICAgICAgIH0pLFxcXFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcXFxuICAgICAgICBoZWlnaHQ6IDMsXFxcXG4gICAgICAgIGhpZ2hsaWdodDogdHJ1ZVxcXFxuICAgIH1cXFxcbn0pO1xcXFxuXFxcXG5sZXQgc2F2ZSA9ICgpID0+IHtcXFxcbiAgICBsZXQgYSA9IGdldE15VmFyKFxcXFxcXFwiaW1cXFxcXFxcIiwgXFxcXFxcXCJbXVxcXFxcXFwiKTtcXFxcbiAgICBpZiAoYSA9PSBcXFxcXFxcIlxcXFxcXFwiIHx8ICFhLnN0YXJ0c1dpdGgoXFxcXFxcXCJbXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qE5qC85byPXFxcXFxcXCJcXFxcbiAgICB9XFxcXG4gICAgbGV0IGxpc3QgPSBKU09OLnBhcnNlKGEpO1xcXFxuICAgIGxldCB7XFxcXG4gICAgICAgIGFkZEFsbFxcXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXFxcXFwiKTtcXFxcbiAgICBsZXQgY291bnQgPSBhZGRBbGwobGlzdCk7XFxcXG4gICAgYmFjayh0cnVlKTtcXFxcbiAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3sua3u+WKoFxcXFxcXFwiICsgY291bnQgKyBcXFxcXFxcIuadoeWcsOWdgFxcXFxcXFwiXFxcXG59O1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLlr7zlhaVcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQoXFxcXFxcXCIjbm9Mb2FkaW5nI1xcXFxcXFwiKS5sYXp5UnVsZShzYXZlKSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgZGVzYzogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBwaWNfdXJsOiBcXFxcXFxcIlxcXFxcXFwiXFxcXG59KTtcXFxcblxcXFxuaWYgKGdldFBhcmFtKFxcXFxcXFwiYlxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIikgPT0gXFxcXFxcXCIxXFxcXFxcXCIpIHtcXFxcbiAgICBjb25maXJtKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi5rip6aao5o+Q56S6XFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbnRlbnQ6IFxcXFxcXFwi56Gu5a6a56uL5Y2z5a+85YWlXFxcXFxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcXFxcXCLmlbDmja7vvJ9cXFxcXFxcIixcXFxcbiAgICAgICAgY29uZmlybTogJC50b1N0cmluZyhzYXZlKVxcXFxuICAgIH0pO1xcXFxufVxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5re75Yqg572R56uZXFxcIixcXFwicGF0aFxcXCI6XFxcImFkZFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5hZGRMaXN0ZW5lcihcXFxcXFxcIm9uQ2xvc2VcXFxcXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgY2xlYXJNeVZhcihcXFxcXFxcIm5hbWVcXFxcXFxcIik7XFxcXG4gICAgY2xlYXJNeVZhcihcXFxcXFxcInVybFxcXFxcXFwiKTtcXFxcbn0pKTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcIlxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgZGVzYzogXFxcXFxcXCLor7fovpPlhaXnvZHnq5nlkI3np7BcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcIm5hbWVcXFxcXFxcIiwgaW5wdXQpO1xcXFxuICAgICAgICB9KSxcXFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZVxcXFxuICAgIH1cXFxcbn0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwiaW5wdXRcXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcIuivt+i+k+WFpee9keermeWcsOWdgFxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwidXJsXFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgfSksXFxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2VcXFxcbiAgICB9XFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi5re75Yqg5L+d5a2YXFxcXFxcXCIsXFxcXG4gICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICBsZXQgbmFtZSA9IGdldE15VmFyKFxcXFxcXFwibmFtZVxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICAgICAgbGV0IHVybCA9IGdldE15VmFyKFxcXFxcXFwidXJsXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxuICAgICAgICBpZiAobmFtZSA9PSBcXFxcXFxcIlxcXFxcXFwiIHx8IHVybCA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+ivt+i+k+WFpeWujOaVtOS/oeaBr1xcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGV0IHtcXFxcbiAgICAgICAgICAgIGFkZFxcXFxuICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RhdGFcXFxcXFxcIik7XFxcXG4gICAgICAgIGFkZChuYW1lLCB1cmwpO1xcXFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3sua3u+WKoFxcXFxcXFwiXFxcXG4gICAgfSksXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgIGRlc2M6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgcGljX3VybDogXFxcXFxcXCJcXFxcXFxcIlxcXFxufSk7XFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5pWw5o2u566h55CGXFxcIixcXFwicGF0aFxcXCI6XFxcImRhdGFcXFwiLFxcXCJydWxlXFxcIjpcXFwidmFyIGRlZmF1bHRWYWx1ZSA9IFtcXFxcbiAgICB7XFxcXG4gICAgICAgIG5hbWU6IFxcXFxcXFwi6LGM6LGGXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJodHRwczovL3d3dy53YW5kb3UucHJvL1xcXFxcXFwiXFxcXG4gICAgfSxcXFxcbiAgICB7XFxcXG4gICAgICAgIG5hbWU6IFxcXFxcXFwi6Iy25p2v54uQXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJodHRwczovL2N1cGZveC5hcHAvXFxcXFxcXCJcXFxcbiAgICB9LFxcXFxuICAgIHtcXFxcbiAgICAgICAgbmFtZTogXFxcXFxcXCLmkJzniYdcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImh0dHA6Ly9zb3VwaWFuLmRlL1xcXFxcXFwiXFxcXG4gICAgfSxcXFxcbiAgICB7XFxcXG4gICAgICAgIG5hbWU6IFxcXFxcXFwi6Z2S6bqmXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJodHRwczovL3d3dy5xaW1haXR2LmNvbS9cXFxcXFxcIlxcXFxuICAgIH0sXFxcXG4gICAge1xcXFxuICAgICAgICBuYW1lOiBcXFxcXFxcIueUteW9seeLl1xcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaHR0cHM6Ly93d3cuZGlhbnlpbmdnb3UuY29tL3lpbmdrdS9cXFxcXFxcIlxcXFxuICAgIH0sXFxcXG4gICAge1xcXFxuICAgICAgICBuYW1lOiBcXFxcXFxcIuiMtuadr+iZjlxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaHR0cHM6Ly93d3cuNzI1OTk4LmNvbS95aW5na3VcXFxcXFxcIlxcXFxuICAgIH0sXFxcXG4gICAge1xcXFxuICAgICAgICBuYW1lOiBcXFxcXFxcIuWcn+aLqOm8oFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaHR0cHM6Ly93d3cudGJzZHkuY29tL20vaW5kZXguaHRtbFxcXFxcXFwiXFxcXG4gICAgfVxcXFxuXTtcXFxcbiQuZXhwb3J0cyA9IHtcXFxcbiAgICBsb2FkOiBmdW5jdGlvbigpIHtcXFxcbiAgICAgICAgcmV0dXJuIHN0b3JhZ2UwLmdldEl0ZW0oXFxcXFxcXCJkYXRhMVxcXFxcXFwiLCBkZWZhdWx0VmFsdWUpO1xcXFxuICAgIH0sXFxcXG4gICAgYWRkOiBmdW5jdGlvbihuYW1lLCB1cmwpIHtcXFxcbiAgICAgICAgbGV0IGRhdGEgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXFxcXFwiZGF0YTFcXFxcXFxcIiwgZGVmYXVsdFZhbHVlKTtcXFxcbiAgICAgICAgZm9yIChsZXQgaXQgb2YgZGF0YSkge1xcXFxuICAgICAgICAgICAgaWYgKGl0Lm5hbWUgPT0gbmFtZSkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVyblxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGRhdGEucHVzaCh7XFxcXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxcXFxuICAgICAgICAgICAgdXJsOiB1cmxcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcXFxcXCJkYXRhMVxcXFxcXFwiLCBkYXRhKTtcXFxcbiAgICB9LFxcXFxuICAgIGFkZEFsbDogZnVuY3Rpb24obGlzdCkge1xcXFxuICAgICAgICBsZXQgZGF0YSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcXFxcXCJkYXRhMVxcXFxcXFwiLCBkZWZhdWx0VmFsdWUpO1xcXFxuICAgICAgICBsZXQgbmFtZXMgPSBkYXRhLm1hcChpdCA9PiBpdC5uYW1lKTtcXFxcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcXFxcbiAgICAgICAgZm9yIChsZXQgaXQgb2YgbGlzdCkge1xcXFxuICAgICAgICAgICAgaWYgKCFuYW1lcy5pbmNsdWRlcyhpdC5uYW1lKSkge1xcXFxuICAgICAgICAgICAgICAgIGRhdGEucHVzaChpdCk7XFxcXG4gICAgICAgICAgICAgICAgY291bnQrKztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXFxcXFwiZGF0YTFcXFxcXFxcIiwgZGF0YSk7XFxcXG4gICAgICAgIHJldHVybiBjb3VudDtcXFxcbiAgICB9LFxcXFxuICAgIHJlbW92ZTogZnVuY3Rpb24obmFtZSkge1xcXFxuICAgICAgICBsZXQgZGF0YSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcXFxcXCJkYXRhMVxcXFxcXFwiLCBkZWZhdWx0VmFsdWUpO1xcXFxuICAgICAgICBkYXRhID0gZGF0YS5maWx0ZXIoaXQgPT4gaXQubmFtZSAhPSBuYW1lKTtcXFxcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFxcXFxcImRhdGExXFxcXFxcXCIsIGRhdGEpO1xcXFxuICAgIH0sXFxcXG4gICAgdG9wOiBmdW5jdGlvbihuYW1lKSB7XFxcXG4gICAgICAgIGxldCBkYXRhID0gc3RvcmFnZTAuZ2V0SXRlbShcXFxcXFxcImRhdGExXFxcXFxcXCIsIGRlZmF1bHRWYWx1ZSk7XFxcXG4gICAgICAgIGxldCBpdCA9IGRhdGEuZmlsdGVyKGl0ID0+IGl0Lm5hbWUgPT0gbmFtZSlbMF07XFxcXG4gICAgICAgIGxldCBkID0gW107XFxcXG4gICAgICAgIGQucHVzaChpdCk7XFxcXG4gICAgICAgIGZvciAobGV0IGlpIG9mIGRhdGEpIHtcXFxcbiAgICAgICAgICAgIGlmIChpaS5uYW1lICE9IG5hbWUpIHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goaWkpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcXFxcXCJkYXRhMVxcXFxcXFwiLCBkKTtcXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwidVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ1XFxcIixcXFwicnVsZVxcXCI6XFxcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHJ1bGUsIG9yaWdpbikge1xcXFxuICAgIHJldHVybiAkLnRvU3RyaW5nKChydWxlLCBvcmlnaW4pID0+IHtcXFxcbiAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoXFxcXFxcXCJtYWduZXRcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgIGNvbmZpcm0oe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIua4qemmqOaPkOekulxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFxcXFxcXFwi5qOA5rWL5Yiw5paw55qE56OB6ZO+5Zyw5Z2A77yM54K55Ye756Gu5a6a5oyJ6ZKu5Y2z5Y+v5pKt5pS+77yM54K55Ye75Y+W5raI5oyJ6ZKu5Y+v5Lul5aSN5Yi26ZO+5o6lXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgY29uZmlybTogJC50b1N0cmluZygobWFnKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWc7XFxcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpLFxcXFxuICAgICAgICAgICAgICAgIGNhbmNlbDogJC50b1N0cmluZygobWFnKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImNvcHk6Ly9cXFxcXFxcIiArIG1hZ1xcXFxuICAgICAgICAgICAgICAgIH0sIGlucHV0KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xcXFxuICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dC5zdGFydHNXaXRoKFxcXFxcXFwiaHR0cFxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXFxcbiAgICAgICAgICAgIC8v6IO95ZSk6LW3QVBQ55qE55m95ZCN5Y2VXFxcXG4gICAgICAgICAgICBsZXQgd2hpdGUgPSBbXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJxa2xpbmtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImJkbmV0ZGlza1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwieHVubGVpYXBwXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJzbWFydGRyaXZlXFxcXFxcXCJcXFxcbiAgICAgICAgICAgIF07XFxcXG4gICAgICAgICAgICBsZXQgaW5XaGl0ZSA9IHdoaXRlLmZpbHRlcihpdCA9PiBpbnB1dC5zdGFydHNXaXRoKGl0KSkubGVuZ3RoID4gMDtcXFxcbiAgICAgICAgICAgIGlmICghaW5XaGl0ZSkge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLm9wZW5UaGlyZEFwcCAmJiBmeV9icmlkZ2VfYXBwLm9wZW5UaGlyZEFwcCh1cmwpO1xcXFxuICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUpXFxcXG4gICAgICAgIH1cXFxcbiAgICB9LCBydWxlLCBvcmlnaW4pO1xcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIlg1XFxcIixcXFwicGF0aFxcXCI6XFxcIng1XFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbmxldCB1cmwgPSBiYXNlNjREZWNvZGUoZ2V0UGFyYW0oXFxcXFxcXCJ1XFxcXFxcXCIpKTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgdXJsOiB1cmwsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcImZsb2F0JiYxMDAlXFxcXFxcXCIsXFxcXG4gICAgcGljX3VybDogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBmbG9hdFZpZGVvOiB0cnVlLFxcXFxuICAgICAgICBjYW5CYWNrOiB0cnVlLFxcXFxuICAgICAgICBibG9ja1J1bGVzOiBbXFxcXFxcXCIuZ2lmXFxcXFxcXCIsIFxcXFxcXFwiL2FkL1xcXFxcXFwiLCBcXFxcXFxcImdvb2dsZVxcXFxcXFwiLCBcXFxcXFxcIi9zaC90by9cXFxcXFxcIiwgXFxcXFxcXCIuR0lGXFxcXFxcXCJdXFxcXG4gICAgfVxcXFxufSk7XFxcXG5zZXRSZXN1bHQoZCk7XFxcIn1dXCIsXCJwcm94eVwiOlwiXCJ9IiwidGl0bGUiOiLmt7vliqDlr7zlhaUifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement