xiaomianao666

小程序:云盘君

Jun 2nd, 2023
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@云盘君@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5ZCbIiwiYXV0aG9yIjoi5bCP5qOJ6KKE8J+MniIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2Z5cGFnZSIsInZlcnNpb24iOjQ2LCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xuYWRkTGlzdGVuZXIoXG4gICAgJ29uUmVmcmVzaCcsICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICBjbGVhck15VmFyKCdzJylcbiAgICB9KVxuKVxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL3NvdVwiKSkucnVsZSk7XG5sZXQgcyA9IGdldE15VmFyKCdzJywgJycpO1xuaWYgKHMgPT0gXCJcIikge1xuICAgIHRyeSB7XG4gICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcblxuICAgICAgICAgICAgaGVhZGVyID0ge1xuICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA2LjA7IE5leHVzIDUgQnVpbGQvTVJBNThOKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvOTkuMC40ODQ0LjUxIE1vYmlsZSBTYWZhcmkvNTM3LjM2JyxcbiAgICAgICAgICAgICAgICAnSG9zdCc6ICd0b3AuYmFpZHUuY29tJyxcbiAgICAgICAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKicsXG4gICAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6ICd6aC1DTix6aDtxPTAuOSxlbi1VUztxPTAuOCxlbjtxPTAuNycsXG4gICAgICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwLCBkZWZsYXRlLCBicicsXG4gICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly90b3AuYmFpZHUuY29tL2JvYXJkP3RhYj1ub3ZlbCcsXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBqc29uID0gcmVxdWVzdCgnaHR0cHM6Ly90b3AuYmFpZHUuY29tL2FwaS9ib2FyZD9wbGF0Zm9ybT13aXNlJnRhYj10ZWxlcGxheSZ0YWc9JTdCJTIyY2F0ZWdvcnklMjI6JTIyJUU1JTg1JUE4JUU5JTgzJUE4JUU3JUIxJUJCJUU1JTlFJThCJTIyLCUyMmNvdW50cnklMjI6JTIyJUU2JUFDJUE3JUU3JUJFJThFJTIyJTdEJywge1xuICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlclxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShqc29uKS5kYXRhLmNhcmRzWzBdLmNvbnRlbnQ7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gbGlzdFtpXS53b3JkICsgJyAgICAoJyArIGxpc3RbaV0uc2hvd1syXSArICcpJztcbiAgICAgICAgICAgICAgICBsZXQgZGVzID0gbGlzdFtpXS5kZXNjO1xuICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpID09IFwiMFwiID8gJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVwiY29sb3I6I2ZmMzMwMFwiPicgKyAocGFyc2VJbnQoaSkgKyAxKS50b1N0cmluZygpICsgJzwvc3Bhbj4nICsgXCJcXHRcXHRcXHRcIiArIG5hbWUgOiBpID09IFwiMVwiID8gJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVwiY29sb3I6I2ZmNjYwMFwiPicgKyAocGFyc2VJbnQoaSkgKyAxKS50b1N0cmluZygpICsgJzwvc3Bhbj4nICsgXCJcXHRcXHRcXHRcIiArIG5hbWUgOiBpID09IFwiMlwiID8gJ+KAnOKAnOKAneKAnTxzcGFuIHN0eWxlPVwiY29sb3I6I2ZmOTkwMFwiPicgKyAocGFyc2VJbnQoaSkgKyAxKS50b1N0cmluZygpICsgJzwvc3Bhbj4nICsgXCJcXHRcXHRcXHRcIiArIG5hbWUgOiAn4oCc4oCc4oCd4oCdPHNwYW4+JyArIChwYXJzZUludChpKSArIDEpLnRvU3RyaW5nKCkgKyAnPC9zcGFuPicgKyBcIlxcdFxcdFxcdFwiICsgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChuYW1lKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnICAgICgnKVswXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdzJywgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xuICAgICAgICAgICAgICAgICAgICB9LCBuYW1lKSxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzLFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXCJ0ZXh0XzFcIlxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICBzZXRSZXN1bHQoZCk7XG59Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkjIyoqIiwiZ3JvdXAiOiLikaDnvZHnm5giLCJzZWFyY2hGaW5kIjoianM6XG52YXIgZCA9IFtdO1xubGV0IGtleSA9IE1ZX1VSTC5zcGxpdChcIiMjXCIpWzFdO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogXCLngrnmiJHlvIDlp4vogZrlkIjmkJzntKJcIiArIGtleSxcbiAgICB1cmw6IFwiaGlrZXI6Ly9wYWdlL3NvdXA/cD1meXBhZ2VcIixcbiAgICBleHRyYToge1xuICAgICAgICBwYWdlVGl0bGU6IFwi5pCc57SiXCIgKyBrZXksXG4gICAgICAgIGtleToga2V5XG4gICAgfVxufSk7XG5cbnNldFJlc3VsdChkKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJpbml0Q29uZmlnKHtcbiAgICBzdWJzOiBbJ2FzcycsICdzcnQnLCAndnR0JyxcIlNSVFwiLFwiQVNTXCIsXCJWVFRcIl1cbn0pOyIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLop4TliJnliJfooahcIixcInBhdGhcIjpcImRhdGFcIixcInJ1bGVcIjpcInZhciB3cmFwdSA9ICh1KSA9PiB7XFxuICAgIGlmIChjb25maWcubW9kZSA9PSBcXFwi5pys5Zyw6L2s56CBXFxcIikge1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnXFxuICAgIH1cXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXCJKb2XniYjpmL/ph4zkupHnm5hcXFwiKSB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9zaGFyZT9wYWdlPWZ5cGFnZSZydWxlPemYv+mHjOS6keebmCZzaGFyZV91cmw9JyArIHU7XFxuICAgIH1cXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXCLkupHnm5jmsYflvbFcXFwiKSB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJztcXG4gICAgfVxcbiAgICBpZiAoL2FsaXl1bmRyaXZlLy50ZXN0KHUpKSB7XFxuICAgICAgICBjb25zdCBbbGluaywgX3NoYXJlX3B3ZF0gPSB1LnNwbGl0KCc/c2hhcmVfcHdkPScpO1xcbiAgICAgICAgY29uc3QgW19saW5rLCBfZm9sZGVySURdID0gbGluay5zcGxpdCgnL2ZvbGRlci8nKTtcXG4gICAgICAgIGxldCBzaGFyZV9wd2QgPSAoX3NoYXJlX3B3ZCB8fCAnJykuc3BsaXQoJyNuYW1lPScpWzBdIHx8ICcnO1xcbiAgICAgICAgbGV0IHNoYXJlSWQgPSBfbGluay5zcGxpdCgnY29tL3MvJylbMV07XFxuICAgICAgICByZXR1cm4gJ3NtYXJ0ZHJpdmU6Ly9zaGFyZS9icm93c2U/c2hhcmVJZD0nICsgc2hhcmVJZCArICcmc2hhcmVQd2Q9JyArIHNoYXJlX3B3ZDtcXG4gICAgfVxcbiAgICByZXR1cm4gXFxcIndlYjovL1xcXCIgKyB1O1xcbn07XFxuXFxudmFyIGNoZWNrYWxpID0gKHJlYWx1cmwpID0+IHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGxldCBzaGFyZUlkID0gcmVhbHVybC5zcGxpdChcXFwiY29tL3MvXFxcIilbMV0uc3Vic3RyaW5nKDAsIDExKTtcXG4gICAgICAgIGlmIChyZWFsdXJsLmluY2x1ZGVzKFxcXCJjb20vcy9cXFwiKSAmJiByZWFsdXJsICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgbGV0IHNoYXJlID0gZmV0Y2goXFxcImh0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS9hZHJpdmUvdjMvc2hhcmVfbGluay9nZXRfc2hhcmVfYnlfYW5vbnltb3VzXFxcIiwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9cXFwiXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJzaGFyZV9pZFxcXCI6IHNoYXJlSWRcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoc2hhcmUuaW5jbHVkZXMoXFxcInNoYXJlX2xpbmsgaXNcXFwiKSB8fCBzaGFyZS5pbmNsdWRlcyhcXFwic2hhcmVfbGluayBjYW5ub3RcXFwiKSkgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7fVxcbiAgICByZXR1cm4gdHJ1ZTtcXG59XFxuXFxubGV0IHJ1bGVzID0gW3tcXG4gICAgICAgIG5hbWU6IFxcXCLkupHnm5jotYTmupBcXFwiLFxcbiAgICAgICAgcGFnZTogdHJ1ZSxcXG4gICAgICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gXFxcImh0dHBzOi8vcmVzLnl1bnBhbi53aW4vP1BhZ2VJbmRleD1cXFwiICsgcGFnZSArIFxcXCImUGFnZVNpemU9MTImS2V5d29yZD1cXFwiICsgcyArIFxcXCImVHlwZT0mVGFnPVxcXCI7XFxuICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3Jlcy55dW5wYW4ud2luL1xcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIGxldCBhcnIgPSBwZGZhKGh0bWwsIFxcXCJtYWluJiYuY2FyZFxcXCIpO1xcbiAgICAgICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgICAgIGxldCB1ID0gcGRmaChpdCwgXFxcIi5jYXJkLWxpbmssMSYmb25jbGlja1xcXCIpLm1hdGNoKC9odHRwczpcXFxcL1xcXFwvKHd3d1xcXFwuYWxpeXVuZHJpdmVcXFxcLmNvbVxcXFwvc3xhbHl3cFxcXFwubmV0KVxcXFwvXFxcXHcqL2cpIHx8IFtdO1xcbiAgICAgICAgICAgICAgICB1ID0gdS5sZW5ndGggPiAwID8gdVswXSA6IHVybDtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0LCBcXFwiLmNhcmQtdGl0bGUmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHBkKGl0LCBcXFwiaW1nJiZzcmNcXFwiLCB1cmwpLFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgdSArICc/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KHUpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPuS6keebmOi1hOa6kDwvZm9udD4mbmJzcDtcXFwiICsgKHBkZmgoaXQsIFxcXCIuY2FyZC10ZXh0LC0xJiZUZXh0XFxcIikpICsgXFxcIlxcXFxuXFxcIiArICh1KSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBkO1xcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiBcXFwiVVDkupHmkJxcXFwiLFxcbiAgICAgICAgcGFnZTogdHJ1ZSxcXG4gICAgICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gXFxcImh0dHBzOi8vYXBpLnVweXVuc28yLmNvbS9zZWFyY2g/a2V5d29yZD1cXFwiICsgcyArIFxcXCImcGFnZT1cXFwiICsgcGFnZSArIFxcXCImc190eXBlPTFcXFwiO1xcbiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cudXB5dW5zby5jb21cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJjb2RlPTE5MTlcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAvL2xvZyhiYXNlNjREZWNvZGUoaHRtbCkpO1xcbiAgICAgICAgICAgIGxldCBhcnIgPSBKU09OLnBhcnNlKGJhc2U2NERlY29kZShodG1sKSkucmVzdWx0Lml0ZW1zO1xcbiAgICAgICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgICAgIGxldCB1ID0gaXQucGFnZV91cmw7XFxuICAgICAgICAgICAgICAgIC8vdSA9IHUubGVuZ3RoID4gMCA/IHVbMF0gOiB1cmw7XFxuICAgICAgICAgICAgICAgIGlmICghdS5pbmNsdWRlcyhcXFwiYWxpeXVuZHJpdmVcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cmFwdSh1KSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT5VUOS6keaQnDwvZm9udD4mbmJzcDtcXFwiICsgXFxcIlxcXFxuXFxcIiArICh1KSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBkO1xcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiBcXFwi54yr54u455uY5pCcXFxcIixcXG4gICAgICAgIHBhZ2U6IGZhbHNlLFxcbiAgICAgICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChcXFwiaHR0cHM6Ly93d3cuYWxpcGFuc291LmNvbS9zZWFyY2g/az1cXFwiICsgcywge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5hbGlwYW5zb3UuY29tL3NlYXJjaD9rPVxcXCIgKyBzXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBsZXQgYXJyID0gcGRmYShodG1sLCBcXFwiI2FwcCYmYVxcXCIpO1xcbiAgICAgICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBcXFwiPGRpdj5cXFwiICsgYXJyW2ldICsgXFxcIjwvZGl2PlxcXCI7XFxuICAgICAgICAgICAgICAgIGxldCB1ID0gcGRmaChpdCwgXFxcImEmJmhyZWZcXFwiKTtcXG4gICAgICAgICAgICAgICAgLy9sb2codSk7XFxuICAgICAgICAgICAgICAgIGlmICghdS5pbmNsdWRlcyhcXFwiL3MvXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHUgPSBcXFwiaHR0cHM6Ly93d3cuYWxpcGFuc291LmNvbVxcXCIgKyB1LnJlcGxhY2UoXFxcIi9zL1xcXCIsIFxcXCIvY3YvXFxcIik7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdCwgXFxcInRlbXBsYXRlJiZUZXh0XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQodSkubGF6eVJ1bGUoKHdyYXB1KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwibm9fc2hvd19kb25hdGU9MVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IGlucHV0LnJlcGxhY2UoXFxcIi9jdi9cXFwiLCBcXFwiL3MvXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnYSYmaHJlZicpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFyIF9saW5rcyA9IGh0bWwubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZykgfHwgW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2coX2xpbmtzKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaHRtbC5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcmV0dXJuICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgX2xpbmtzWzBdICsgJz8/ZnlwYWdlJztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KGh0bWwpICsgJz8/P2Z5cGFnZSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwdShodG1sKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgd3JhcHUpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPueMq+eLuOebmOaQnDwvZm9udD4mbmJzcDtcXFwiICsgcGRmaChpdCwgXFxcInRlbXBsYXRlLDEmJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBkO1xcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiBcXFwi5piT5pCcXFxcIixcXG4gICAgICAgIHBhZ2U6IHRydWUsXFxuICAgICAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxuICAgICAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXG5cXG4gICAgICAgICAgICBmdW5jdGlvbiBrZXllbihzdHIpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXCI0T1RvU2NVRk9hZVZUckhFXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICBpdiA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXCI5Q0xHYW8xdkhLcW0xN096XFxcIik7XFxuICAgICAgICAgICAgICAgIHZhciBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdCh7XFxuICAgICAgICAgICAgICAgICAgICBjaXBoZXJ0ZXh0OiBDcnlwdG9KUy5lbmMuQmFzZTY0LnBhcnNlKHN0cilcXG4gICAgICAgICAgICAgICAgfSwga2V5LCB7XFxuICAgICAgICAgICAgICAgICAgICBpdjogaXYsXFxuICAgICAgICAgICAgICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICAgICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBlbmNyeXB0ZWQ7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdChcXFwiaHR0cHM6Ly95aXNvLmZ1bi9hcGkvc2VhcmNoP25hbWU9XFxcIiArIHMgKyBcXFwiJnBhZ2VObz1cXFwiICsgcGFnZSwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3lpc28uZnVuL2luZm8/c2VhcmNoS2V5PVxcXCIgKyBzLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGdldEl0ZW0oJ3lpc291Y29va2UnLCAnJylcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIC8vbG9nKGh0bWwpO1xcbiAgICAgICAgICAgIGlmIChodG1sLmluY2x1ZGVzKCfnmbvlvZXnlKjmiLfml6DpmZDliLYnKSkge1xcbiAgICAgICAgICAgICAgICB2YXIgaSA9IDA7XFxuICAgICAgICAgICAgICAgIGRvIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0eWltZ2xpbiA9ICdodHRwczovL3lpc28uZnVuL2FwaS91c2VyL2xvZ2luL2NhcHRjaGE/dD0nICsgcGFyc2VJbnQobmV3IERhdGUoKS5nZXRUaW1lKCkpICsgJyc7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1nID0gY29udmVydEJhc2U2NEltYWdlKHR5aW1nbGluKS5zcGxpdCgnLCcpWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvZCA9IHJlcXVlc3QoJ2h0dHBzOi8vYXBpLm5uLmNpL29jci9iNjQvdGV4dCcsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbidcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGltZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdmVyID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL3lpc28uZnVuL2FwaS91c2VyL2xvZ2luJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly95aXNvLmZ1bi9sb2dpbicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb29raWUnOiBnZXRDb29raWUodHlpbWdsaW4pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1c2VyTmFtZVxcXCI6IFxcXCJ0dmJveDIwMjNcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicGFzc3dvcmRcXFwiOiBcXFwiVHZib3gyMDIzXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBjb2RcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAodmVyLmNvZGUgPT0gMjAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCfmmJPmkJznmbvlhaXpqozor4HmiJDlip8nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd5aXNvdWNvb2tlJywgZ2V0Q29va2llKCdodHRwczovL3lpc28uZnVuJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwgPSByZXF1ZXN0KFxcXCJodHRwczovL3lpc28uZnVuL2FwaS9zZWFyY2g/bmFtZT1cXFwiICsgcyArIFxcXCImcGFnZU5vPVxcXCIgKyBwYWdlLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8veWlzby5mdW4vaW5mbz9zZWFyY2hLZXk9XFxcIiArIHMsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogZ2V0SXRlbSgneWlzb3Vjb29rZScsICcnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBpKys7XFxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKGkgPCA0KTtcXG5cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoaHRtbCkuZGF0YS5saXN0O1xcbiAgICAgICAgICAgIC8vbG9nKGFycik7XFxuICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgICAgIGxldCB1ID0ga2V5ZW4oaXQudXJsKTtcXG4gICAgICAgICAgICAgICAgLy9sb2codSk7XFxuICAgICAgICAgICAgICAgIGlmICh1ID09IG51bGwgfHwgIXUuaW5jbHVkZXMoXFxcImFsaXl1blxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ1cXFwiICsgaXQubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cmFwdSh1KSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7mmJPmkJw8L2ZvbnQ+Jm5ic3A7XFxcIiArIChpdC5nbXRTaGFyZSB8fCBpdC5nbXRDcmVhdGUpICsgXFxcIlxcXFxuXFxcIiArICh1KSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBkO1xcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiBcXFwi5om+6LWE5rqQXFxcIixcXG4gICAgICAgIHBhZ2U6IHRydWUsXFxuICAgICAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxuICAgICAgICAgICAgZnVuY3Rpb24gZ2V0aHRtbCgpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KFxcXCJodHRwczovL3poYW96aXl1YW4ubGEvc28/ZmlsZW5hbWU9XFxcIiArIHMgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2UsIHtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3poYW96aXl1YW4ubGEvc3RvcC5odG1sXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwib3JpZ2luXFxcIjogXFxcImh0dHBzOi8vemhhb3ppeXVhbi5sYVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGdldEl0ZW0oXFxcInp6eWNvb2tlXFxcIiwgXFxcIlxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1cGdyYWRlLWluc2VjdXJlLXJlcXVlc3RzXFxcIjogXFxcIjFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjb250ZW50LXR5cGVcXFwiOiBcXFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGh0bWw7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB2YXIgaHRtbCA9IGdldGh0bWwoKTtcXG4gICAgICAgICAgICBpZiAoIWh0bWwuaW5jbHVkZXMoXFxcInNlYXJjaF9ib3hcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgdXNlciA9ICdkWE5sY201aGJXVTllWEJxTWpBeU15WndZWE56ZDI5eVpEMTVjR295TURJeic7XFxuICAgICAgICAgICAgICAgIGxldCBjb29rID0gSlNPTi5wYXJzZShmZXRjaENvb2tpZSgnaHR0cHM6Ly96aGFveml5dWFuLmxhL2xvZ2l1Lmh0bWwnLCB7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBNT0JJTEVfVUEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cHM6Ly96aGFveml5dWFuLmxhJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3poYW96aXl1YW4ubGEvbG9naW4uaHRtbCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcInVwZ3JhZGUtaW5zZWN1cmUtcmVxdWVzdHNcXFwiOiBcXFwiMVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBiYXNlNjREZWNvZGUodXNlciksXFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcXG4gICAgICAgICAgICAgICAgICAgIG9ubHlIZWFkZXJzOiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgd2l0aEhlYWRlcnM6IHRydWVcXG4gICAgICAgICAgICAgICAgfSkpLmpvaW4oJzsnKTtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwienp5Y29va2VcXFwiLCBjb29rKTtcXG4gICAgICAgICAgICAgICAgbG9nKFxcXCLmib7otYTmupDnmbvlhaVcXFwiKTtcXG4gICAgICAgICAgICAgICAgaHRtbCA9IGdldGh0bWwoKTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgbGV0IGFyciA9IHBkZmEoaHRtbCwgXFxcImJvZHkmJi5uZXdzTGlzdCYmbGk6bm90KDpmaXJzdC1jaGlsZClcXFwiKTtcXG4gICAgICAgICAgICAvL2xvZyhhcnIpO1xcbiAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgICAgICAgICBsZXQgdSA9IHBkZmgoaXQsIFxcXCJhJiZocmVmXFxcIik7XFxuICAgICAgICAgICAgICAgIGlmICh1ID09IG51bGwpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHUgPSBcXFwiaHR0cHM6Ly96aGFveml5dWFuLmxhL1xcXCIgKyB1O1xcbiAgICAgICAgICAgICAgICAvL2xvZyh1KTtcXG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gcGRmaChpdCwgXFxcIi5uZXdzX3RleHQmJmgzJiZUZXh0XFxcIik7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5om+6LWE5rqQPC9mb250PiZuYnNwO1xcXCIgKyAocGRmaChpdCwgXFxcIi5uZXdzX3RleHQmJnAmJlRleHRcXFwiKSksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQodSkubGF6eVJ1bGUoKHdyYXB1KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xpbmtzID0gaHRtbC5tYXRjaCgvaHR0cHM6XFxcXC9cXFxcLyh3d3dcXFxcLmFsaXl1bmRyaXZlXFxcXC5jb21cXFxcL3N8YWx5d3BcXFxcLm5ldClcXFxcL1xcXFx3Ki9nKSB8fCBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhfbGlua3MpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfbGlua3MubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3JldHVybiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIF9saW5rc1swXSArICc/P2Z5cGFnZSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcmV0dXJuICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudChfbGlua3NbMF0pICsgJz8/P2Z5cGFnZSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwdShfbGlua3NbMF0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCB3cmFwdSlcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBkO1xcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiBcXFwi5bCP57q45p2hXFxcIixcXG4gICAgICAgIHBhZ2U6IGZhbHNlLFxcbiAgICAgICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgICAgIGZ1bmN0aW9uIGdldHRva2VuKCkge1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ3h6eXRva2VuJywgJycpLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdG9rZW4gPSBKU09OLnBhcnNlKHBvc3QoJ2h0dHBzOi8vZ2l0Y2FmZS5uZXQvdG9vbC9hbGlwYXBlci8nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3UuZ2l0Y2FmZS5uZXQvJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdnZXRfdG9rZW4nXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSkpLmRhdGE7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigneHp0dG9rZW4nLCB0b2tlbik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldE15VmFyKCd4enR0b2tlbicsICcnKTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgZnVuY3Rpb24gY2F0X2NvZGUoYSkge1xcbiAgICAgICAgICAgICAgICB2YXIgZCwgZSwgYiA9IFtcXFwi5Y2O6K+t55S16KeGXFxcIiwgXFxcIuaXpemfqeeUteinhlxcXCIsIFxcXCLmrKfnvo7nlLXop4ZcXFwiLCBcXFwi5YW25LuW55S16KeGXFxcIiwgXFxcIuWNjuivreeUteW9sVxcXCIsIFxcXCLml6Xpn6nnlLXlvbFcXFwiLCBcXFwi5qyn576O55S15b2xXFxcIiwgXFxcIuWFtuS7lueUteW9sVxcXCIsIFxcXCLljY7or63liqjmvKtcXFwiLCBcXFwi5pel6Z+p5Yqo5ryrXFxcIiwgXFxcIuasp+e+juWKqOa8q1xcXCIsIFxcXCLnuqrlvZXniYdcXFwiLCBcXFwi57u86Im654mHXFxcIiwgXFxcIuaVmeiCsuWfueiurVxcXCIsIFxcXCLlhbbku5bop4bpopFcXFwiLCBcXFwi5Y2O6K+t6Z+z5LmQXFxcIiwgXFxcIuaXpemfqemfs+S5kFxcXCIsIFxcXCLmrKfnvo7pn7PkuZBcXFwiLCBcXFwi5YW25LuW6Z+z5LmQXFxcIiwgXFxcIuWoseS5kOi9r+S7tlxcXCIsIFxcXCLns7vnu5/ova/ku7ZcXFwiLCBcXFwi572R57uc6L2v5Lu2XFxcIiwgXFxcIuWKnuWFrOi9r+S7tlxcXCIsIFxcXCLlhbbku5bova/ku7ZcXFwiLCBcXFwi5ryr55S7XFxcIiwgXFxcIuWwj+ivtFxcXCIsIFxcXCLlh7rniYjkuaZcXFwiLCBcXFwi55+l6K+G5Z+56K6tXFxcIiwgXFxcIuWFtuS7luaWh+aho1xcXCIsIFxcXCLlo4HnurhcXFwiLCBcXFwi5Lq654mpXFxcIiwgXFxcIumjjuaZr1xcXCIsIFxcXCLlhbbku5blm77niYdcXFwiLCBcXFwi5YW25LuWXFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICBjID0gW1xcXCJoeWRzXFxcIiwgXFxcInJoZHNcXFwiLCBcXFwib21kc1xcXCIsIFxcXCJxdGRzXFxcIiwgXFxcImh5ZHlcXFwiLCBcXFwicmhkeVxcXCIsIFxcXCJvbWR5XFxcIiwgXFxcInF0ZHlcXFwiLCBcXFwiaHlkbVxcXCIsIFxcXCJyaGRtXFxcIiwgXFxcIm9tZG1cXFwiLCBcXFwiamxwXFxcIiwgXFxcInp5cFxcXCIsIFxcXCJqeXB4XFxcIiwgXFxcInF0c3BcXFwiLCBcXFwiaHl5eVxcXCIsIFxcXCJyaHl5XFxcIiwgXFxcIm9teXlcXFwiLCBcXFwicXR5eVxcXCIsIFxcXCJrZnJqXFxcIiwgXFxcInh0cmpcXFwiLCBcXFwid2xyalxcXCIsIFxcXCJiZ3JqXFxcIiwgXFxcInF0cmpcXFwiLCBcXFwibWhcXFwiLCBcXFwieHNcXFwiLCBcXFwiY2JzXFxcIiwgXFxcInpzcHhcXFwiLCBcXFwicXR3ZFxcXCIsIFxcXCJielxcXCIsIFxcXCJyd1xcXCIsIFxcXCJmalxcXCIsIFxcXCJxdHRwXFxcIiwgXFxcInF0XFxcIl07XFxuICAgICAgICAgICAgICAgIGZvciAoZCA9IDAsIGUgPSBjLmxlbmd0aDsgZSA+IGQ7IGQrKylcXG4gICAgICAgICAgICAgICAgICAgIGlmIChjW2RdID09IGEpIHJldHVybiBiW2RdO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgIGxldCBodG1sID0gcG9zdChcXFwiaHR0cHM6Ly9naXRjYWZlLm5ldC90b29sL2FsaXBhcGVyL1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgJ1JlZmVyZXInOiAnaHR0cHM6Ly91LmdpdGNhZmUubmV0LydcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBcXFwic2VhcmNoXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGZyb206IFxcXCJ3ZWJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdG9rZW46IGdldHRva2VuKCksXFxuICAgICAgICAgICAgICAgICAgICBrZXl3b3JkOiBzXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShodG1sKTtcXG4gICAgICAgICAgICBpZiAobGlzdC5kYXRhKSB7XFxuICAgICAgICAgICAgICAgIGxpc3QgPSBsaXN0LmRhdGE7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBsaXN0W2ldXFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0LnRpdGxlO1xcbiAgICAgICAgICAgICAgICBsZXQgbXVybCA9ICdodHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy8nICsgaXQua2V5XFxuICAgICAgICAgICAgICAgIGlmICghY2hlY2thbGkobXVybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmICh0aXRsZS5pbmNsdWRlcyhzKSkge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuKImiBcXFwiICsgdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPuWwj+e6uOadoTwvZm9udD4mbmJzcDtcXFwiICsgY2F0X2NvZGUoaXQuY2F0KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXM6IGl0LmRlc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD1odHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy8nICsgbXVybCArICc/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiB3cmFwdShtdXJsKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQoJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyBtdXJsKSArICc/Pz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIGQ7XFxuICAgICAgICB9XFxuICAgIH0sIHtcXG4gICAgICAgIG5hbWU6IFxcXCLnjqnlgbblk6Xlk6VcXFwiLFxcbiAgICAgICAgcGFnZTogdHJ1ZSxcXG4gICAgICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgICAgICBsZXQgdXJsID0gXFxcImh0dHA6Ly93b2dnLnh5ei9pbmRleC5waHAvdm9kc2VhcmNoL1xcXCIgKyBzICsgXFxcIi0tLS0tLS0tLS1cXFwiICsgcGFnZSArIFxcXCItLS0uaHRtbFxcXCI7XFxuICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge30pO1xcbiAgICAgICAgICAgIGxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICcubW9kdWxlLWl0ZW1zJiYubW9kdWxlLXNlYXJjaC1pdGVtJyk7XFxuICAgICAgICAgICAgLy9sb2coYXJyKTtcXG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgIGxldCBiZXQgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgICAgIGxldCB1dGl0bGUgPSBwYXJzZURvbUZvckh0bWwoaXQsICdoMyYmYSYmVGV4dCcpO1xcbiAgICAgICAgICAgICAgICBsZXQgdXNlcmlhbCA9IHBhcnNlRG9tRm9ySHRtbChpdCwgJy52aWRlby1zZXJpYWwmJlRleHQnKTtcXG4gICAgICAgICAgICAgICAgbGV0IHVpbWFnZSA9IHBhcnNlRG9tKGl0LCAnLmxhenlsb2FkJiZkYXRhLXNyYycsICdodHRwOi8vd29nZy54eXovJyk7XFxuICAgICAgICAgICAgICAgIGxldCB1ID0gcGFyc2VEb20oaXQsICdoMyYmYSYmaHJlZicsICdodHRwOi8vd29nZy54eXovJyk7XFxuICAgICAgICAgICAgICAgIC8vbGV0IGRldCA9IHJlcXVlc3QodSwge30pO1xcbiAgICAgICAgICAgICAgICBiZXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdXRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1LFxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHVpbWFnZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IHVzZXJpYWxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChiZXQubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICBsZXQgYmV0aCA9IGJhdGNoRmV0Y2goYmV0KTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiZXRoLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IHBhcnNlRG9tRm9yQXJyYXkoYmV0aFtpXSwgJy5tb2R1bGUtcGxheWVyLWxpc3QmJnAnKVxcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHUgPSBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJ3AmJlRleHQnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXUuaW5jbHVkZXMoXFxcIi9zL1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYmV0W2ldLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBiZXRbaV0uaW1hZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7njqnlgbblk6Xlk6U8L2ZvbnQ+Jm5ic3A7XFxcIiArIChiZXRbaV0uZGVzYykgKyAnXFxcXG4nICsgdSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gZDtcXG4gICAgICAgIH1cXG4gICAgfSwge1xcbiAgICAgICAgbmFtZTogXFxcIumYv+mHjOS6keebmOe9kVxcXCIsXFxuICAgICAgICBwYWdlOiB0cnVlLFxcbiAgICAgICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgICAgIGxldCB1cmwgPSBcXFwiaHR0cHM6Ly93d3cuYWx5cHcuY24vc2VhcmNoLnBocD9xPVxcXCIgKyBzICsgXFxcIiZwYWdlPVxcXCIgKyBwYWdlO1xcbiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwsIHt9KTtcXG4gICAgICAgICAgICBsZXQgYXJyID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnLmxpc3QmJmxpJyk7XFxuICAgICAgICAgICAgLy9sb2coYXJyKTtcXG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgIGxldCBiZXQgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgICAgIGxldCB1dGl0bGUgPSBwYXJzZURvbUZvckh0bWwoaXQsICdhJiZ0aXRsZScpO1xcbiAgICAgICAgICAgICAgICBsZXQgdXNlcmlhbCA9IHBhcnNlRG9tRm9ySHRtbChpdCwgJy5mYS1jbG9jay1vJiZUZXh0Jyk7XFxuICAgICAgICAgICAgICAgIGxldCB1aW1hZ2UgPSBwYXJzZURvbShpdCwgJ2ltZyYmc3JjJywgJ2h0dHBzOi8vd3d3LmFseXB3LmNuLycpO1xcbiAgICAgICAgICAgICAgICBsZXQgdSA9IHBhcnNlRG9tKGl0LCAnYSYmaHJlZicsICdodHRwczovL3d3dy5hbHlwdy5jbi8nKTtcXG4gICAgICAgICAgICAgICAgLy9sZXQgZGV0ID0gcmVxdWVzdCh1LCB7fSk7XFxuICAgICAgICAgICAgICAgIGlmICghdXRpdGxlLmluY2x1ZGVzKHMpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBiZXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdXRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1LFxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2U6IHVpbWFnZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IHVzZXJpYWxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIC8vbG9nKGJldCk7XFxuICAgICAgICAgICAgaWYgKGJldC5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgIGxldCBiZXRoID0gYmF0Y2hGZXRjaChiZXQpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJldGgubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShiZXRoW2ldLCAnYm9keSYmYVtocmVmXj1odHRwczovL3d3dy5hbGl5dW5kcml2ZS5jb20vcy9dJylcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGxpc3QpO1xcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHUgPSBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJ2EmJmhyZWYnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogYmV0W2ldLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBiZXRbaV0uaW1hZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7pmL/ph4zkupHnm5jnvZE8L2ZvbnQ+Jm5ic3A7XFxcIiArIChiZXRbaV0uZGVzYykgKyAnXFxcXG4nICsgdSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gZDtcXG4gICAgICAgIH1cXG4gICAgfSwge1xcbiAgICAgICAgbmFtZTogXFxcIuWcn+aLqOm8oFxcXCIsXFxuICAgICAgICBwYWdlOiBmYWxzZSxcXG4gICAgICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgICAgICBsZXQgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy50YnNkeS5jb20vc2VhcmNoLmh0bWw/a2V5d29yZD0nICsgcyArICcmY2F0ZWdvcnk9OTgzOTIwJmRhdGFfdHlwZT05ODc5MTAnLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogUENfVUFcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIGxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICcuc2VhcmNoX3Jlc3VsdF9uZXRkaXNrX2xpc3QmJmEnKTtcXG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGxldCBpdCA9IGFycltpXTtcXG4gICAgICAgICAgICAgICAgLy9sb2coaXQpO1xcbiAgICAgICAgICAgICAgICBsZXQgdSA9IHBhcnNlRG9tRm9ySHRtbChpdCwgJ2EmJmhyZWYnKTtcXG4gICAgICAgICAgICAgICAgbGV0IHRpdCA9IHBhcnNlRG9tRm9ySHRtbChpdCwgJy5uZXRkaXNrX2l0ZW1fZGV0YWlsX25hbWUmJlRleHQnKTtcXG4gICAgICAgICAgICAgICAgaWYgKCF0aXQuaW5jbHVkZXMocykpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIC8vbG9nKHUpO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdCxcXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIHUgKyAnPz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB3cmFwdSh1KSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0jZjEzYjY2YT7lnJ/mi6jpvKDmkJw8L2ZvbnQ+Jm5ic3A7XFxcIiArIFxcXCJcXFxcblxcXCIgKyB1LFxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIGQ7XFxuICAgICAgICB9XFxuICAgIH0sIHtcXG4gICAgICAgIG5hbWU6IFxcXCLpmL/ph4zmkJxcXFwiLFxcbiAgICAgICAgcGFnZTogdHJ1ZSxcXG4gICAgICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdCgnaHR0cHM6Ly9hbGlzby5jYy9zLycgKyBzICsgJy0nICsgcGFnZSArICctMC5odG1sJywge30pO1xcblxcbiAgICAgICAgICAgIGxldCBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnLnNlYXJjaC1yZXN1bHQmJi5yZXNvdXJjZS1pdGVtJyk7XFxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBsaXN0Lmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgICAgIGxldCB1ID0gbGlzdFtqXTtcXG4gICAgICAgICAgICAgICAgbGV0IHRpdCA9IHBhcnNlRG9tRm9ySHRtbCh1LCAnaDMmJlRleHQnKTtcXG4gICAgICAgICAgICAgICAgaWYgKCF0aXQuaW5jbHVkZXMocykpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0LFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBhcnNlRG9tKHUsICdoMyYmYSYmaHJlZicsICdodHRwczovL2FsaXNvLmNjLycpKS5sYXp5UnVsZSgod3JhcHUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGRlY3J5KHN0cikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcIjlFQjIwRERGRDZBRkJENjhcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KHN0ciwga2V5LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdjoga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5DQkMsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBidXQgPSBwYXJzZURvbShodG1sLCAnLmJ1dHRvbiYmaHJlZicsICdodHRwczovL2FsaXNvLmNjLycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKGJ1dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdvdCA9IHJlcXVlc3QoYnV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhnb3QpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwocGFyc2VEb21Gb3JIdG1sKGdvdCwgJ2hlYWQmJnNjcmlwdCwxJiZIdG1sJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwdShkZWNyeShiYXNlNjQuc3BsaXQoJyEnKVswXSkpO1xcblxcbiAgICAgICAgICAgICAgICAgICAgfSwgd3JhcHUpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPumYv+mHjOaQnDwvZm9udD4mbmJzcDtcXFwiICsgcGFyc2VEb21Gb3JIdG1sKHUsICcudGltZSYmVGV4dCcpLFxcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIGQ7XFxuICAgICAgICB9XFxuICAgIH0sIC8qe1xcbiAgICAgICAgbmFtZTogXFxcIuWcn+eLl+aQnFxcXCIsXFxuICAgICAgICBwYWdlOiBmYWxzZSxcXG4gICAgICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vd3d3LnR1Z291c291LmNvbS9zZWFyY2gnLCB7XFxuICAgICAgICAgICAgICAgIGJvZHk6ICdrZXl3b3JkPScgKyBzLFxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIGxldCBhcnIgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICcubGF5dWktY29udGFpbmVyLDEmJi5sYXl1aS1yb3c6aGFzKGEpJyk7XFxuICAgICAgICAgICAgbGV0IGQgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQgaXQgPSBhcnJbaV07XFxuICAgICAgICAgICAgICAgIGxldCB1ID0gcGFyc2VEb21Gb3JIdG1sKGl0LCAnYSYmaHJlZicpO1xcbiAgICAgICAgICAgICAgICBpZiAoIXUuaW5jbHVkZXMoXFxcIi9zL1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAvL2xvZyh1KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwoaXQsICdhJiZUZXh0JyksXFxuICAgICAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQodSkgKyAnPz8/ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5Zyf54uX5pCcPC9mb250PiZuYnNwO1xcXCIgKyBwYXJzZURvbUZvckh0bWwoaXQsICdwLC0xJiZUZXh0JykgKyBcXFwiXFxcXG5cXFwiICsgdSxcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBkO1xcbiAgICAgICAgfVxcbiAgICB9LCAqL3tcXG4gICAgICAgIG5hbWU6IFxcXCLkupHnm5jliIbkuqvnpL5cXFwiLFxcbiAgICAgICAgcGFnZTogZmFsc2UsXFxuICAgICAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxuICAgICAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKTtcXG5cXG4gICAgICAgICAgICBmdW5jdGlvbiBkZWNyeShzdHIpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXCI1RjZCMkFLMzNEQVNEMTIzXFxcIik7XFxuICAgICAgICAgICAgICAgIHZhciBlbmNyeXB0ZWQgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChzdHIsIGtleSwge1xcbiAgICAgICAgICAgICAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5FQ0IsXFxuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgICAgICAgICAgICAgfSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZW5jcnlwdGVkO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vd3d3Lnl1bnBhbmZlbnhpYW5nLmNuL2FwaS9iYnMvYXBpL2dldGRhdGE/a2V5PScgKyBzICsgJyZ0eXBlPXZpZGVvJywge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy55dW5wYW5mZW54aWFuZy5jbi9cXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBsZXQganNvbiA9IGRlY3J5KEpTT04ucGFyc2UoaHRtbCkuZGF0YSk7XFxuICAgICAgICAgICAgLy9sb2coanNvbik7XFxuICAgICAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoanNvbik7IC8vWzBdLnJlc3VsdC5pdGVtcztcXG4gICAgICAgICAgICAvL2xvZyhhcnIpO1xcblxcbiAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgbGV0IGJldCA9IFtdO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGxldCBpdCA9IGFycltpXTtcXG4gICAgICAgICAgICAgICAgbGV0IHVybCA9IGl0LnBpZDtcXG4gICAgICAgICAgICAgICAgYmV0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly93d3cueXVucGFuZmVueGlhbmcuY24vYXBpL2Jicy9hcGkvZ2V0YXJ0aWNsZT9pZD0nICsgdXJsLFxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cueXVucGFuZmVueGlhbmcuY24vXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIC8vbG9nKHUpO1xcbiAgICAgICAgICAgIGxldCBiZXRoID0gYmF0Y2hGZXRjaChiZXQpO1xcblxcbiAgICAgICAgICAgIC8vbG9nKGFydGljbGUpO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYmV0aC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBsZXQganNvbiA9IEpTT04ucGFyc2UoYmV0aFtpXSkuZGF0YTtcXG4gICAgICAgICAgICAgICAgLy9sb2coanNvbik7XFxuICAgICAgICAgICAgICAgIGxldCBsaXN0ID0ganNvbi5kb3dubG9hZC5zcGxpdCgnQCcpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1ID0gbGlzdFtqXTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGpzb24udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgdSArICc/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogd3JhcHUoJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyB1KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+5LqR55uY5YiG5Lqr56S+PC9mb250PiZuYnNwO1xcXCIgKyAoanNvbi5jcmVhdGV0aW1lKSArIFxcXCJcXFxcblxcXCIgKyAoJ2h0dHBzOi8vd3d3LmFsaXl1bmRyaXZlLmNvbS9zLycgKyB1KSxcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIHJldHVybiBkO1xcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiBcXFwi55uY5pCcXFxcIixcXG4gICAgICAgIHBhZ2U6IHRydWUsXFxuICAgICAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxuICAgICAgICAgICAgcGFnZSA9IChwYWdlIC0gMSkgKiAxMDtcXG4gICAgICAgICAgICBsZXQgdXJsID0gXFxcImh0dHBzOi8vd3d3LnBhbnNlYXJjaC5tZS9zZWFyY2g/a2V5d29yZD1cXFwiICsgcyArIFxcXCImb2Zmc2V0PVxcXCIgKyBwYWdlICsgXFxcIiZwYW49YWxpeXVuZHJpdmVcXFwiO1xcbiAgICAgICAgICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwsIHt9KTtcXG5cXG4gICAgICAgICAgICBsZXQgYXJyID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnLmdyaWQmJi5zaGFkb3c6aGFzKGFbaHJlZl49aHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvXSknKTtcXG4gICAgICAgICAgICAvL2xvZyhhcnIpO1xcbiAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgICAgICAgICBsZXQgdSA9IHBhcnNlRG9tRm9ySHRtbChpdCwgJ2FbaHJlZl49aHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvXSYmaHJlZicpO1xcbiAgICAgICAgICAgICAgICAvL2xvZyh1KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwoaXQsICcuYnJlYWstYWxsJiZUZXh0Jykuc3BsaXQoJ2h0dHAnKVswXSxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHBhcnNlRG9tRm9ySHRtbChpdCwgJ2ltZyYmc3JjJyksXFxuICAgICAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL3B1c2g/dXJsPWhpa2VyOi8vZW1wdHkjIycgKyBlbmNvZGVVUklDb21wb25lbnQodSkgKyAnPz8/ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogd3JhcHUodSksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+55uY5pCcPC9mb250PiZuYnNwO1xcXCIgKyAocGFyc2VEb21Gb3JIdG1sKGl0LCAncCYmVGV4dCcpKSArIFxcXCJcXFxcblxcXCIgKyAodSksXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gZDtcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAge1xcbiAgICAgICAgbmFtZTogXFxcIkRPVljmkJxcXFwiLFxcbiAgICAgICAgcGFnZTogZmFsc2UsXFxuICAgICAgICBmaW5kOiBmdW5jdGlvbihzLCBwYWdlKSB7XFxuICAgICAgICAgICAgbGV0IHVybCA9IFxcXCJodHRwczovL2FwaS5kb3Z4LnRrL2FsaS9zZWFyY2g/d2Q9XFxcIiArIHM7XFxuICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge30pO1xcbiAgICAgICAgICAgIC8vbG9nKGJhc2U2NERlY29kZShodG1sKSk7XFxuICAgICAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoaHRtbCkubGlzdDtcXG4gICAgICAgICAgICAvL2xvZyhhcnIpO1xcbiAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgbGV0IGl0ID0gYXJyW2ldO1xcbiAgICAgICAgICAgICAgICBsZXQgdSA9IGl0LnZvZF9jb250ZW50O1xcbiAgICAgICAgICAgICAgICAvL3UgPSB1Lmxlbmd0aCA+IDAgPyB1WzBdIDogdXJsO1xcbiAgICAgICAgICAgICAgICBpZiAoIXUuaW5jbHVkZXMoXFxcImFsaXl1bmRyaXZlXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmICghY2hlY2thbGkodSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuKImiBcXFwiICsgaXQudm9kX25hbWUsXFxuICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdC52b2RfcGljLFxcbiAgICAgICAgICAgICAgICAgICAgLy91cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95LqR55uY5rGH5b2xJnVybD0nICsgdSArICc/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KHUpICsgJz8/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHdyYXB1KHUpLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPkRPVljmkJw8L2ZvbnQ+Jm5ic3A7XFxcIiArIFxcXCJcXFxcblxcXCIgKyAodSksXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gZDtcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAge1xcbiAgICAgICAgbmFtZTogXFxcIuW/heW6lFxcXCIsXFxuICAgICAgICBwYWdlOiB0cnVlLFxcbiAgICAgICAgZmluZDogZnVuY3Rpb24ocywgcGFnZSkge1xcbiAgICAgICAgICAgIGxldCB1cmwgPSBcXFwiaHR0cHM6Ly9jbi5iaW5nLmNvbS9zZWFyY2g/cT1cXFwiICsgcyArIFxcXCIrYWxpeXVuZHJpdmUmcXM9ZHMmZm9ybT1RQlJFXFxcIjtcXG4gICAgICAgICAgICBpZiAocGFnZSAhPSAxKSB7XFxuICAgICAgICAgICAgICAgIHVybCA9IGdldE15VmFyKFxcXCJiaW5nXFxcIiwgdXJsKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgbGV0IGh0bWwgPSByZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL2NuLmJpbmcuY29tL1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAvL1xcXCJYLVJlcXVlc3RlZC1XaXRoXFxcIjogXFxcImNvbS5leGFtcGxlLmhpa2Vydmlld1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiQWNjZXB0XFxcIjogXFxcInRleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LGltYWdlL2F2aWYsaW1hZ2Uvd2VicCxpbWFnZS9hcG5nLCovKjtxPTAuOCxhcHBsaWNhdGlvbi9zaWduZWQtZXhjaGFuZ2U7dj1iMztxPTAuOVxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGxldCBhcnIgPSBwZGZhKGh0bWwsIFxcXCJib2R5JiZhXFxcIik7XFxuICAgICAgICAgICAgLy9sb2coYXJyKTtcXG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGxldCBpdCA9IGFycltpXTtcXG4gICAgICAgICAgICAgICAgbGV0IHUgPSBwZChpdCwgXFxcImEmJmhyZWZcXFwiLCB1cmwpO1xcbiAgICAgICAgICAgICAgICBsZXQgdCA9IHBkZmgoaXQsIFxcXCJhJiZUZXh0XFxcIik7XFxuICAgICAgICAgICAgICAgIGlmIChpdC5pbmNsdWRlcyhcXFwiTmV4dCBwYWdlXFxcIikgfHwgaXQuaW5jbHVkZXMoXFxcIuS4i+S4gOmhtVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdTIgPSBwZChpdCwgXFxcImEmJmhyZWZcXFwiLCB1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coXFxcIm5leHQgcGFnZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2codTIpO1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImJpbmdcXFwiLCB1Mik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKHUgPT0gbnVsbCB8fCB0ID09IG51bGwgfHwgIWl0LmluY2x1ZGVzKHMpKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoIWl0LmluY2x1ZGVzKFxcXCLnvZHnm5hcXFwiKSAmJiAhaXQuaW5jbHVkZXMoXFxcIuS6keebmFxcXCIpICYmXFxuICAgICAgICAgICAgICAgICAgICAhaXQuaW5jbHVkZXMoXFxcImFsaXl1bmRyaXZlXFxcIikgJiYgIWl0LmluY2x1ZGVzKFxcXCJ5dW5wYW5cXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKHUuc3RhcnRzV2l0aChcXFwiaHR0cHM6Ly9jbi5iaW5nLmNvbS9cXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgbGV0IGRvbSA9IGdldEhvbWUodSkucmVwbGFjZShcXFwiaHR0cDovL1xcXCIsIFxcXCJcXFwiKS5yZXBsYWNlKFxcXCJodHRwczovL1xcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IF9saW5rcyA9IHQubWF0Y2goL2h0dHBzOlxcXFwvXFxcXC8od3d3XFxcXC5hbGl5dW5kcml2ZVxcXFwuY29tXFxcXC9zfGFseXdwXFxcXC5uZXQpXFxcXC9cXFxcdyovZykgfHwgW107XFxuICAgICAgICAgICAgICAgIC8vbG9nKF9saW5rcyk7XFxuICAgICAgICAgICAgICAgIGxldCBjID0gbnVsbDtcXG4gICAgICAgICAgICAgICAgLy9sb2coX2xpbmtzKTtcXG4gICAgICAgICAgICAgICAgLy9pZiAoX2xpbmtzLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgLy9jID0gJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KF9saW5rc1swXSkgKyAnPz8/ZnlwYWdlJztcXG4gICAgICAgICAgICAgICAgLy9jPXdyYXB1KF9saW5rc1swXSlcXG4gICAgICAgICAgICAgICAgLy99XFxuICAgICAgICAgICAgICAgIGlmIChfbGlua3MubGVuZ3RoID4gMSAmJiBfbGlua3NbMV0ucmVwbGFjZShfbGlua3NbMF0sIFxcXCJcXFwiKS5yZXBsYWNlKC9bYS16QS1aMC05XSsvZywgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBjID0gd3JhcHUoX2xpbmtzWzFdKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfbGlua3MubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgYyA9IHdyYXB1KF9saW5rc1swXSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0LFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSNmMTNiNjZhPuW/heW6lDwvZm9udD4mbmJzcDtcXFwiICsgZG9tLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBjICE9IG51bGwgPyBjIDogJCh1KS5sYXp5UnVsZSgod3JhcHUsIG1vZGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHRtbCA9IHJlcXVlc3QoaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbGlua3MgPSBodG1sLm1hdGNoKC9odHRwczpcXFxcL1xcXFwvKHd3d1xcXFwuYWxpeXVuZHJpdmVcXFxcLmNvbVxcXFwvc3xhbHl3cFxcXFwubmV0KVxcXFwvXFxcXHcqL2cpIHx8IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKF9saW5rcyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAoX2xpbmtzLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3JldHVybiAnaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9JyArIF9saW5rc1swXSArICc/P2Z5cGFnZSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9yZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3VybD1oaWtlcjovL2VtcHR5IyMnICsgZW5jb2RlVVJJQ29tcG9uZW50KF9saW5rc1swXSkgKyAnPz8/ZnlwYWdlJztcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoX2xpbmtzLmxlbmd0aCA+IDEgJiYgX2xpbmtzWzFdLnJlcGxhY2UoX2xpbmtzWzBdLCBcXFwiXFxcIikucmVwbGFjZSgvW2EtekEtWjAtOV0rL2csIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gd3JhcHUoX2xpbmtzWzFdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9saW5rcy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB3cmFwdShfbGlua3NbMF0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBydWxlID0gTVlfUlVMRS50aXRsZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UveXNmeD9ydWxlPVxcXCIgKyBydWxlICsgXFxcIiZyPVxcXCIgKyBydWxlICsgXFxcIiZtb2RlPVxcXCIgKyBtb2RlICsgXFxcIiMjXFxcIiArIGlucHV0O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0sIHdyYXB1LCBjb25maWcubW9kZSlcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBkO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXTtcXG5cXG5cXG4vL+W5tuWPkeinhOWImeaVsFxcbmxldCBjY29mID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvY2NvZicpXFxucnVsZXMucHVzaChjY29mKVxcbi8v5bm25Y+R6KeE5YiZ5pWwXFxubGV0IHNpemUgPSAxMDtcXG5cXG4kLmV4cG9ydHMgPSBmdW5jdGlvbihwYWdlLCBydWxlKSB7XFxuICAgIGlmICghcGFnZSAmJiAhcnVsZSkge1xcbiAgICAgICAgcmV0dXJuIHJ1bGVzLm1hcChpdCA9PiBpdC5uYW1lKTtcXG4gICAgfVxcbiAgICBpZiAocnVsZSAhPSBudWxsKSB7XFxuICAgICAgICBpZiAocGFnZSAhPSBudWxsICYmIHBhZ2UgPiAxKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHJ1bGVzLmZpbHRlcihpID0+IGkubmFtZSA9PSBydWxlICYmIGkucGFnZSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gcnVsZXMuZmlsdGVyKGkgPT4gaS5uYW1lID09IHJ1bGUpO1xcbiAgICB9XFxuICAgIGxldCBzdGFydCA9IChwYWdlIC0gMSkgKiBzaXplO1xcbiAgICBpZiAocnVsZXMubGVuZ3RoIDwgc3RhcnQgKyAxKSB7XFxuICAgICAgICByZXR1cm4gW107XFxuICAgIH1cXG4gICAgbGV0IGxlbiA9IHNpemU7XFxuICAgIGlmIChydWxlcy5sZW5ndGggPCBwYWdlICogc2l6ZSkge1xcbiAgICAgICAgbGVuID0gcnVsZXMubGVuZ3RoIC0gc3RhcnRcXG4gICAgfVxcbiAgICByZXR1cm4gcnVsZXMuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgbGVuKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKJcIixcInBhdGhcIjpcInNvdVwiLFwicnVsZVwiOlwibGV0IHIgPSBnZXRJdGVtKFxcXCJyXFxcIiwgXFxcIlxcXCIpO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgbGV0IHIxID0gZmV0Y2goXFxcImhpa2VyOi8vaG9tZUDkupHnm5jmsYflvbFcXFwiKTtcXG4gICAgaWYgKCFyMSB8fCByMS5sZW5ndGggPD0gNSkge1xcbiAgICAgICAgbGV0IHJ1ID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCLmtbfpmJTop4bnlYzop4TliJnliIbkuqvvvIzlvZPliY3liIbkuqvnmoTmmK/vvJrlsI/nqIvluo/vv6Vob21lX3J1bGVfdjLvv6ViYXNlNjQ6Ly9A5LqR55uY5rGH5b2xQGV5SnNZWE4wWDJOb1lYQjBaWEpmY25Wc1pTSTZJaUlzSW5ScGRHeGxJam9pNUxxUjU1dVk1ckdINWIyeElpd2lZWFYwYUc5eUlqb2lUWEpHYkhraUxDSjFjbXdpT2lKb2FXdGxjam92TDJWdGNIUjVKQ1FrWm5sd1lXZGxJaXdpZG1WeWMybHZiaUk2Tml3aVkyOXNYM1I1Y0dVaU9pSjBaWGgwWHpFaUxDSmpiR0Z6YzE5dVlXMWxJam9pSWl3aWRIbHdaU0k2SW1Gc2JDSXNJbU5zWVhOelgzVnliQ0k2SWlJc0ltRnlaV0ZmYm1GdFpTSTZJaUlzSW1GeVpXRmZkWEpzSWpvaUlpd2ljMjl5ZEY5dVlXMWxJam9pSWl3aWVXVmhjbDl1WVcxbElqb2lJaXdpYzI5eWRGOTFjbXdpT2lJaUxDSjVaV0Z5WDNWeWJDSTZJaUlzSW1acGJtUmZjblZzWlNJNkltcHpPbHh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4dVlXeHBMbWh2YldWUVlXZGxLQ2s3SWl3aWMyVmhjbU5vWDNWeWJDSTZJbWhwYTJWeU9pOHZaVzF3ZEhra0pDUXFLaVFrSkdaNWNHRm5aU1FrSkNJc0ltZHliM1Z3SWpvaTRwR2c1NzJSNTV1WUlpd2ljMlZoY21Ob1JtbHVaQ0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExuTmxZWEpqYUZCaFoyVW9kSEoxWlNrN1hHNGlMQ0prWlhSaGFXeGZZMjlzWDNSNWNHVWlPaUp0YjNacFpWOHhJaXdpWkdWMFlXbHNYMlpwYm1SZmNuVnNaU0k2SW1wek9seHVaWFpoYkNobVpYUmphQ2duYUdsclpYSTZMeTltYVd4bGN5OXlkV3hsY3k5cFkza3ZZV3hwTG1wekp5a3BPMXh1WVd4cExtUmxkR0ZwYkZCaFoyVW9LVHNpTENKelpHVjBZV2xzWDJOdmJGOTBlWEJsSWpvaWJXOTJhV1ZmTVNJc0luTmtaWFJoYVd4ZlptbHVaRjl5ZFd4bElqb2lJaXdpZFdFaU9pSnRiMkpwYkdVaUxDSndjbVZTZFd4bElqb2lkbUZ5SUdGc2FXcHpJRDBnWm1WMFkyaERZV05vWlNnbmFIUjBjSE02THk5bmFYUmxaUzVqYjIwdlpteDVNVE01Tnk5b2FXdGxjaTFwWTNrdmNtRjNMMjFoYzNSbGNpOWhiR2t1YW5NbktUdGNiaTh2ZG1GeUlHRnNhV3B6SUQwZ2JuVnNiRHRjYm1sbUlDZ2hZV3hwYW5NZ2ZId2dJV0ZzYVdwekxtbHVZMngxWkdWektDZGhiR2t1SnlrcElIdGNiaUFnSUNCaGJHbHFjeUE5SUdabGRHTm9RMkZqYUdVb0oyaDBkSEJ6T2k4dlkyUnVMbXB6WkdWc2FYWnlMbTVsZEM5bmFDOW1iSGt4TXprM0wyaHBhMlZ5TFdsamVTOWhiR2t1YW5NbktWeHVmVnh1YVdZZ0tDRmhiR2xxY3lCOGZDQWhZV3hwYW5NdWFXNWpiSFZrWlhNb0oyRnNhUzRuS1NrZ2UxeHVJQ0FnSUdGc2FXcHpJRDBnWm1WMFkyaERZV05vWlNnbmFIUjBjRG92TDJ4bWFXTjVMbU52YlRvek1EQXdNQzl0Y21ac2VTOW9hV3RsY2kxcFkza3ZjbUYzTDIxaGMzUmxjaTloYkdrdWFuTW5LVnh1ZlZ4dWFXWWdLR0ZzYVdwektTQjdYRzRnSUNBZ2QzSnBkR1ZHYVd4bEtGd2lhR2xyWlhJNkx5OW1hV3hsY3k5eWRXeGxjeTlwWTNrdllXeHBMbXB6WENJc0lHRnNhV3B6S1R0Y2JpQWdJQ0JsZG1Gc0tHRnNhV3B6S1R0Y2JpQWdJQ0JoYkdrdWNISmxVblZzWlNncE8xeHVmU0lzSW5CaFoyVnpJam9pVzN0Y0ltTnZiRjkwZVhCbFhDSTZYQ0p0YjNacFpWOHpYQ0lzWENKdVlXMWxYQ0k2WENMbnZaSG5tNWpvcjZibWc0VmNJaXhjSW5CaGRHaGNJanBjSW1SbGRHRnBiRndpTEZ3aWNuVnNaVndpT2x3aWFuTTZYRnh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4Y2JtRnNhUzVwYm1sMFEyOXVabWxuS0NrN1hGeHVZV3hwTG1Gc2FWSjFiR1VvS1R0Y0luMHNlMXdpWTI5c1gzUjVjR1ZjSWpwY0ltMXZkbWxsWHpGZmJHVm1kRjl3YVdOY0lpeGNJbTVoYldWY0lqcGNJdWkxaE9hNmtPZTlrZW1odGVpdnB1YURoVndpTEZ3aWNHRjBhRndpT2x3aWMybDBaUzFrWlhSaGFXeGNJaXhjSW5KMWJHVmNJanBjSW1wek9seGNibVYyWVd3b1ptVjBZMmdvSjJocGEyVnlPaTh2Wm1sc1pYTXZjblZzWlhNdmFXTjVMMkZzYVM1cWN5Y3BLVHRjWEc1aGJHa3VaR1YwWVdsc1VHRm5aU2dwTzF3aWZTeDdYQ0pqYjJ4ZmRIbHdaVndpT2x3aWJXOTJhV1ZmTTF3aUxGd2libUZ0WlZ3aU9sd2k1TGlxNUxxNjU3MlI1NXVZNksrbTVvT0ZYQ0lzWENKd1lYUm9YQ0k2WENKa2NtbDJaVndpTEZ3aWNuVnNaVndpT2x3aWFuTTZYRnh1WlhaaGJDaG1aWFJqYUNnbmFHbHJaWEk2THk5bWFXeGxjeTl5ZFd4bGN5OXBZM2t2WVd4cExtcHpKeWtwTzF4Y2JtRnNhUzVwYm1sMFEyOXVabWxuS0NrN1hGeHVZV3hwTG0xNVFXeHBVblZzWlNncE8xd2lmVjBpTENKcFkyOXVJam9pYUhSMGNITTZMeTluYVhSbFpTNWpiMjB2Wm14NU1UTTVOeTlvYVd0bGNpMXBZM2t2Y21GM0wyMWhjM1JsY2k5aGJHbDVkVzR1Y0c1bklpd2ljSEp2ZUhraU9pSWlmUT09XFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICB0aXRsZTogTVlfUlVMRS50aXRsZSArICfmj5DnpLonLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfmnKzop4TliJnkvp3otZbkupHnm5jmsYflvbHop4TliJnvvIzngrnlh7vkuIvpnaLnmoTnoa7lrprmjInpkq7lr7zlhaXvvIzms6jmhI/lr7zlhaXlkI7kuIDlrpropoHlnKjkupHnm5jmsYflvbHnmbvlvZXpmL/ph4zkupHnm5jotKblj7fvvIzlkKbliJnkuI3og73nlKgnLFxcbiAgICAgICAgICAgIGNvbmZpcm06IHJ1LFxcbiAgICAgICAgICAgIGNhbmNlbDogcnVcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInNcXFwiKTtcXG4gICAgfSkpO1xcbiAgICBsZXQgdGlwID0gXFxcIuS6keebmOaQnOe0ouWQmyDmo4DntKLlip/og73nlLHlr7nlupTnvZHnq5nmj5DkvpvvvIzmnKzop4TliJnkuI3mj5Dkvpvku7vkvZXlhoXlrrlcXFwiO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHRpcCxcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodGlwKSA9PiB7XFxuICAgICAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5L2/55So6K+05piOXFxcIixcXG4gICAgICAgICAgICAgICAgY29udGVudDogdGlwICsgXFxcIu+8jOacrOinhOWImeS7o+eggeWujOWFqOW8gOa6kO+8jOS7heS+m+WtpuS5oOWSjOeglOeptu+8m+eCueWHu+S4i+aWueehruWumuaMiemSrui3s+i9rOS6keebmOaxh+W9seWwj+eoi+W6j1xcXCIsXFxuICAgICAgICAgICAgICAgIGNvbmZpcm06IFxcXCInaGlrZXI6Ly9ob21lQOS6keebmOaxh+W9sSdcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgdGlwKSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yX3JvdW5kXFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCJcXFwiLFxcbiAgICAgICAgcGljX3VybDogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb24yXFxcIlxcbiAgICB9KTtcXG4gICAgbGV0IGRtb2RlID0gZ2V0SXRlbShcXFwiZG1vZGVcXFwiLCBcXFwi5LqR55uY5rGH5b2xXFxcIik7XFxuICAgIGluaXRDb25maWcoe1xcbiAgICAgICAgbW9kZTogZG1vZGVcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaooeW8j++8mlxcXCIgKyBkbW9kZSxcXG4gICAgICAgIHVybDogXFxcInNlbGVjdDovL1xcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLpgInmi6nmqKHlvI9cXFwiLFxcbiAgICAgICAgICAgIG9wdGlvbnM6IFtcXFwi5LqR55uY5rGH5b2xXFxcIiwgXFxcIuacrOWcsOi9rOeggVxcXCIsIFxcXCJKb2XniYjpmL/ph4zkupHnm5hcXFwiLCBcXFwi5a6Y5pa5QVBQXFxcIl0sXFxuICAgICAgICAgICAgY29sOiAxLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiZG1vZGVcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5a6Y5pa5QVBQXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/ruaUueaIkOWKn++8jOivt+ehruS/neaJi+acuuacieWuieijhemYv+mHjOS6keebmOWumOaWuUFQUFxcXCI7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gXFxcIkpvZeeJiOmYv+mHjOS6keebmFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCByMSA9IGZldGNoKFxcXCJoaWtlcjovL2hvbWVA6Zi/6YeM5LqR55uYXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIXIxIHx8IHIxLmxlbmd0aCA8PSA1KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJ1ID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwi5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQ6Zi/6YeM5LqR55uY44CR77+laG9tZV9ydWxlX3VybO+/pWh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTU2NTZcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBNWV9SVUxFLnRpdGxlICsgJ+aPkOekuicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICfmnKzop4TliJnkvp3otZbpmL/ph4zkupHnm5jop4TliJnvvIzngrnlh7vkuIvpnaLnmoTnoa7lrprmjInpkq7lr7zlhaXvvIzms6jmhI/lr7zlhaXlkI7kuIDlrpropoHnmbvlvZXkupHnm5jotKblj7fvvIzlkKbliJnkuI3og73nlKgnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtOiBydSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsOiBydVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7flr7zlhaXnvLrlpLHnmoTop4TliJlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/ruaUueaIkOWKn++8jOivt+ehruS/neacieeZu+W9lei0puWPt1xcXCI7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L+u5pS55oiQ5Yqf77yM5rOo5oSP6KaB5Zyo5LqR55uY5rGH5b2x6K6+572u6YeM6Z2i55m75b2V6LSm5Y+3XFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uXzJfcm91bmRcXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICBwaWNfdXJsOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbjFcXFwiXFxuICAgIH0pO1xcblxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmkJzntKInLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeWFs+mUruivjScsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ3MnLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9KSxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcigncycsICcnKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgbGV0IHJ1bGVzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpKCk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIlxcXCIgPT0gciA/IFxcXCLigJzigJzlhajpg6jigJ3igJ1cXFwiIDogXFxcIuWFqOmDqFxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbShcXFwiclxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIlxcbiAgICB9KTtcXG4gICAgZm9yIChsZXQgaXQgb2YgcnVsZXMpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ID09IHIgPyBcXFwi4oCc4oCcXFxcIiArIGl0ICsgXFxcIuKAneKAnVxcXCIgOiBpdCxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHIpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiclxcXCIsIHIpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgaXQpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIlxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCJcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogJ3lwai1sJ1xcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxubGV0IHMgPSBnZXRNeVZhcigncycsICcnKTtcXG5pZiAocyAhPSBcXFwiXFxcIikge1xcbiAgICBsZXQgcCA9IE1ZX1BBR0U7XFxuICAgIGxldCBkYXRhID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvZGF0YVxcXCIpKHAsIHIgIT0gXFxcIlxcXCIgPyByIDogbnVsbCk7XFxuXFxuICAgIGxldCBwYWdlaWQgPSBcXFwieXBqLXBhZ2VcXFwiICsgcDtcXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWKoOi9veesrFxcXCIgKyBwICsgXFxcIumhteS4re+8jOi/m+W6pu+8mjEvXFxcIiArIGRhdGEubGVuZ3RoLFxcbiAgICAgICAgICAgIHVybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogcGFnZWlkXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgc2V0UmVzdWx0KGQpO1xcbiAgICBsb2coZGF0YS5sZW5ndGgpO1xcbiAgICBpZiAoZGF0YS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAvL+Wkmue6v+eoi+WKoOi9vSAgICAgICAgXFxuICAgICAgICBsZXQgcmVhbFBhZ2UgPSBcXFwiXFxcIiA9PSByID8gMSA6IHA7XFxuICAgICAgICBsZXQgdGFza3MgPSBkYXRhLm1hcChpdCA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgZnVuYzogZnVuY3Rpb24ocnVsZSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUuZmluZChzLCByZWFsUGFnZSk7XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIHBhcmFtOiBpdCxcXG4gICAgICAgICAgICAgICAgaWQ6IFxcXCJydWxlQFxcXCIgKyBpdC5uYW1lXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBiYXRjaEV4ZWN1dGUodGFza3MsIHtcXG4gICAgICAgICAgICBmdW5jOiBmdW5jdGlvbihwYXJhbSwgaWQsIGVycm9yLCByZXN1bHQpIHtcXG4gICAgICAgICAgICAgICAgLy9sb2coXFxcImxpc3RlbmVyOiBcXFwiICsgKHJlc3VsdCB8fCBbXSkubGVuZ3RoKVxcbiAgICAgICAgICAgICAgICBwYXJhbS5pID0gcGFyYW0uaSArIDE7XFxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaXQgb2YgcmVzdWx0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmogPSBwYXJhbS5qICsgMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXRlbUJlZm9yZShwYWdlaWQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdC50aXRsZS5pbmNsdWRlcyhcXFwi4oCc4oCc4oCd4oCdXFxcIikgPyBpdC50aXRsZSA6IFxcXCLigJzigJzigJ3igJ1cXFwiICsgaXQudGl0bGUucmVwbGFjZShuZXcgUmVnRXhwKFxcXCI8ZW0+fDwvZW0+XFxcIiwgXFxcImdcXFwiKSwgXFxcIlxcXCIpLnJlcGxhY2UobmV3IFJlZ0V4cChzLCBcXFwiZ1xcXCIpLCBcXFwiPHN0cm9uZz48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiAjMUU5MEZGXFxcXFxcXCI+XFxcIiArIHMgKyBcXFwiPC9zcGFuPjwvc3Ryb25nPlxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogaXQuZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXQudXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaXQucGljX3VybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBpdC5waWNfdXJsID8gJ21vdmllXzFfdmVydGljYWxfcGljJyA6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogXFxcIl9fYXBwXFxcIiArIE1ZX1BBR0UgKyBcXFwiQFxcXCIgKyBwYXJhbS5qLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChwYXJhbS5pID49IHBhcmFtLmFsbCkge1xcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbShwYWdlaWQpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWKoOi9veesrFxcXCIgKyBNWV9QQUdFICsgXFxcIumhteS4re+8jOi/m+W6pu+8mlxcXCIgKyAocGFyYW0uaSArIDEpICsgXFxcIi9cXFwiICsgcGFyYW0uYWxsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogcGFnZWlkXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgcGFyYW06IHtcXG4gICAgICAgICAgICAgICAgYWxsOiBkYXRhLmxlbmd0aCxcXG4gICAgICAgICAgICAgICAgaTogMCxcXG4gICAgICAgICAgICAgICAgajogLTFcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6aG16Z2iXCIsXCJwYXRoXCI6XCJzb3VwXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9QQVJBTVMua2V5KSB7XFxuICAgIHB1dE15VmFyKFxcXCJzXFxcIiwgTVlfUEFSQU1TLmtleSk7XFxufVxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3NvdVxcXCIpKS5ydWxlKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkNDT0ZcIixcInBhdGhcIjpcImNjb2ZcIixcInJ1bGVcIjpcInZhciB3cmFwdSA9ICh1KSA9PiB7XFxuICAgIGlmIChjb25maWcubW9kZSA9PSBcXFwi5pys5Zyw6L2s56CBXFxcIikge1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvcHVzaD91cmw9aGlrZXI6Ly9lbXB0eSMjJyArIGVuY29kZVVSSUNvbXBvbmVudCh1KSArICc/Pz9meXBhZ2UnXFxuICAgIH1cXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXCJKb2XniYjpmL/ph4zkupHnm5hcXFwiKSB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9zaGFyZT9wYWdlPWZ5cGFnZSZydWxlPemYv+mHjOS6keebmCZzaGFyZV91cmw9JyArIHU7XFxuICAgIH1cXG4gICAgaWYgKGNvbmZpZy5tb2RlID09IFxcXCLkupHnm5jmsYflvbFcXFwiKSB7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/cnVsZT3kupHnm5jmsYflvbEmdXJsPScgKyB1ICsgJz8/ZnlwYWdlJztcXG4gICAgfVxcbiAgICBpZiAoL2FsaXl1bmRyaXZlLy50ZXN0KHUpKSB7XFxuICAgICAgICBjb25zdCBbbGluaywgX3NoYXJlX3B3ZF0gPSB1LnNwbGl0KCc/c2hhcmVfcHdkPScpO1xcbiAgICAgICAgY29uc3QgW19saW5rLCBfZm9sZGVySURdID0gbGluay5zcGxpdCgnL2ZvbGRlci8nKTtcXG4gICAgICAgIGxldCBzaGFyZV9wd2QgPSAoX3NoYXJlX3B3ZCB8fCAnJykuc3BsaXQoJyNuYW1lPScpWzBdIHx8ICcnO1xcbiAgICAgICAgbGV0IHNoYXJlSWQgPSBfbGluay5zcGxpdCgnY29tL3MvJylbMV07XFxuICAgICAgICByZXR1cm4gJ3NtYXJ0ZHJpdmU6Ly9zaGFyZS9icm93c2U/c2hhcmVJZD0nICsgc2hhcmVJZCArICcmc2hhcmVQd2Q9JyArIHNoYXJlX3B3ZDtcXG4gICAgfVxcbiAgICByZXR1cm4gXFxcIndlYjovL1xcXCIgKyB1O1xcbn07XFxuJC5leHBvcnRzID0ge1xcbiAgICBuYW1lOiAnQ0NPRicsXFxuICAgIHBhZ2U6IHRydWUsXFxuICAgIGZpbmQ6IGZ1bmN0aW9uKHMsIHBhZ2UpIHtcXG4gICAgICAgIGxldCBkID0gW11cXG4gICAgICAgIGNvbnN0IHtcXG4gICAgICAgICAgICBieXRlc1RvU2l6ZSxcXG4gICAgICAgICAgICBjb2xvclxcbiAgICAgICAgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3Rvb2xzJyk7XFxuICAgICAgICBsZXQgaHRtbCA9IGZldGNoKCdodHRwczovL3Bhbi5jY29mLmNjL2FwaS9zZWFyY2gnLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiY29udGVudC10eXBlXFxcIjogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3Bhbi5jY29mLmNjL3NlYXJjaD9rZXl3b3JkPScgKyBzXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlU2l6ZVxcXCI6IDIwLFxcbiAgICAgICAgICAgICAgICBcXFwicGFnZU51bVxcXCI6IHBhZ2UsXFxuICAgICAgICAgICAgICAgIFxcXCJrZXl3b3JkXFxcIjogcyxcXG4gICAgICAgICAgICAgICAgXFxcImZyb21Nb2JpbGVcXFwiOiB0cnVlXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSlcXG4gICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShodG1sKVxcbiAgICAgICAgICAgIC5kYXRhLnJvd3NcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIGxldCBpdCA9IGxpc3RbaV1cXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSBpdC5maWxlTmFtZVxcbiAgICAgICAgICAgIGxldCBtdXJsID0gaXQudXJsXFxuICAgICAgICAgICAgbGV0IHR5cGUgPSBpdC50eXBlLnJlcGxhY2UoL2ZvbGRlci8sICfmlofku7blpLknKS5yZXBsYWNlKC9maWxlLywgJ+aWh+S7ticpXFxuICAgICAgICAgICAgaWYgKHRpdGxlLmluY2x1ZGVzKHMpKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9I2YxM2I2NmE+Q0NPRjwvZm9udD4mbmJzcDsnICsgJ+aWh+S7tuexu+Wei++8micgKyB0eXBlICsgJ++8jOaWh+S7tuWkp+Wwj++8micgKyBieXRlc1RvU2l6ZShpdC5zaXplKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogd3JhcHUobXVybClcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gZFxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5bel5YW3XCIsXCJwYXRoXCI6XCJ0b29sc1wiLFwicnVsZVwiOlwiZnVuY3Rpb24gYnl0ZXNUb1NpemUoc2l6ZSkge1xcbiAgICBpZiAoc2l6ZSA8IDAuMSAqIDEwMjQpIHtcXG4gICAgICAgIC8v5bCP5LqOMC4xS0LvvIzliJnovazljJbmiJBCXFxuICAgICAgICBzaXplID0gc2l6ZS50b0ZpeGVkKDIpICsgXFxcIkJcXFwiO1xcbiAgICB9IGVsc2UgaWYgKHNpemUgPCAwLjEgKiAxMDI0ICogMTAyNCkge1xcbiAgICAgICAgLy8g5bCP5LqOMC4xTULvvIzliJnovazljJbmiJBLQlxcbiAgICAgICAgc2l6ZSA9IChzaXplIC8gMTAyNCkudG9GaXhlZCgyKSArIFxcXCJLQlxcXCI7XFxuICAgIH0gZWxzZSBpZiAoc2l6ZSA8IDAuMSAqIDEwMjQgKiAxMDI0ICogMTAyNCkge1xcbiAgICAgICAgLy8g5bCP5LqOMC4xR0LvvIzliJnovazljJbmiJBNQlxcbiAgICAgICAgc2l6ZSA9IChzaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArIFxcXCJNQlxcXCI7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyDlhbbku5bovazljJbmiJBHQlxcbiAgICAgICAgc2l6ZSA9IChzaXplIC8gKDEwMjQgKiAxMDI0ICogMTAyNCkpLnRvRml4ZWQoMikgKyBcXFwiR0JcXFwiO1xcbiAgICB9XFxuICAgIC8vIOi9rOaIkOWtl+espuS4slxcbiAgICBsZXQgc2l6ZVN0ciA9IHNpemUgKyBcXFwiXFxcIixcXG4gICAgICAgIC8vIOiOt+WPluWwj+aVsOeCueWkhOeahOe0ouW8lVxcbiAgICAgICAgaW5kZXggPSBzaXplU3RyLmluZGV4T2YoXFxcIi5cXFwiKSxcXG4gICAgICAgIC8vIOiOt+WPluWwj+aVsOeCueWQjuS4pOS9jeeahOWAvFxcbiAgICAgICAgZG91ID0gc2l6ZVN0ci5zdWJzdHIoaW5kZXggKyAxLCAyKTtcXG4gICAgLy8g5Yik5pat5ZCO5Lik5L2N5piv5ZCm5Li6MDDvvIzlpoLmnpzmmK/liJnliKDpmaQwMFxcbiAgICBpZiAoZG91ID09PSBcXFwiMDBcXFwiKSByZXR1cm4gc2l6ZVN0ci5zdWJzdHJpbmcoMCwgaW5kZXgpICsgc2l6ZVN0ci5zdWJzdHIoaW5kZXggKyAzLCAyKTtcXG4gICAgcmV0dXJuIHNpemU7XFxufVxcbiQuZXhwb3J0cy5ieXRlc1RvU2l6ZSA9IGJ5dGVzVG9TaXplO1xcbiQuZXhwb3J0cy5jb2xvciA9IGZ1bmN0aW9uKHRleHQsIGNvbG9yKSB7XFxuICAgIHRleHQgKz0gXFxcIlxcXCI7XFxuICAgIGlmICh0ZXh0LmluZGV4T2YoXFxcIuKAnOKAnOKAneKAnVxcXCIpID09PSAwKSB7XFxuICAgICAgICB0ZXh0LnJlcGxhY2UoXFxcIuKAnOKAnOKAneKAnVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgfVxcbiAgICByZXR1cm4gXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSdcXFwiICsgY29sb3IgKyBcXFwiJz5cXFwiICsgdGV4dCArIFxcXCI8L2ZvbnQ+XFxcIjtcXG59XFxuXFxuJC5leHBvcnRzLnNsZWVwID0gZnVuY3Rpb24odGltZW91dCkge1xcbiAgICBqYXZhLmxhbmcuVGhyZWFkLnNsZWVwKHRpbWVvdXQpO1xcbn1cXG5cXG5mdW5jdGlvbiBodG1sVGFnKHRhZywgdGV4dCkge1xcbiAgICB0ZXh0ICs9IFxcXCJcXFwiO1xcbiAgICBpZiAodGV4dC5pbmRleE9mKFxcXCLigJzigJzigJ3igJ1cXFwiKSA9PT0gMCkge1xcbiAgICAgICAgdGV4dC5yZXBsYWNlKFxcXCLigJzigJzigJ3igJ1cXFwiLCBcXFwiXFxcIik7XFxuICAgIH1cXG4gICAgcmV0dXJuIFxcXCLigJzigJzigJ3igJ1cXFwiICsgXFxcIjxcXFwiICsgdGFnICsgXFxcIj5cXFwiICsgdGV4dCArIFxcXCI8L1xcXCIgKyB0YWcgKyBcXFwiPlxcXCI7XFxuXFxufVxcbiQuZXhwb3J0cy5odG1sVGFnID0gaHRtbFRhZztcXG4kLmV4cG9ydHMuc21hbGwgPSBmdW5jdGlvbih0ZXh0KSB7XFxuICAgIHJldHVybiBodG1sVGFnKFxcXCJzbWFsbFxcXCIsIHRleHQpO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRUaW1lKGZpbGUsaXNTdGFuZGFyZCkge1xcbiAgICBpc1N0YW5kYXJkID0gaXNTdGFuZGFyZHx8ZmFsc2U7XFxuICAgIGxldCB0VGltZSA9IGZpbGUudXBkYXRlZF9hdCB8fCBmaWxlLnRpbWVfc3RyIHx8IFxcXCJcXFwiO1xcbiAgICB0VGltZSA9IHRUaW1lLnNwbGl0KFxcXCJUXFxcIik7XFxuICAgIGxldCBkYXRlID0gdFRpbWVbMF07XFxuICAgIGlmKGlzU3RhbmRhcmQpe1xcbiAgICAgICAgZGF0ZSA9IGRhdGUucmVwbGFjZSgvLS9nLFxcXCIvXFxcIik7XFxuICAgIH1cXG4gICAgdFRpbWUgPSB0VGltZVsxXS5zcGxpdCgvWnxcXFxcLi8pO1xcbiAgICBkYXRlICs9IFxcXCIgXFxcIiArIHRUaW1lWzBdO1xcbiAgICByZXR1cm4gZGF0ZTtcXG59XFxuZnVuY3Rpb24gZ2V0VGltZUludCh0aW1lU3RyKXtcXG4gICAgcmV0dXJuIChuZXcgRGF0ZSh0aW1lU3RyKSkuZ2V0VGltZSgpXFxufVxcbiQuZXhwb3J0cy5nZXRUaW1lID0gZ2V0VGltZTtcXG5cXG5sZXQgY2huTnVtQ2hhciA9IHtcXG4gICAg6Zu2OiAwLFxcbiAgICDkuIA6IDEsXFxuICAgIOS6jDogMixcXG4gICAg5LiJOiAzLFxcbiAgICDlm5s6IDQsXFxuICAgIOS6lDogNSxcXG4gICAg5YWtOiA2LFxcbiAgICDkuIM6IDcsXFxuICAgIOWFqzogOCxcXG4gICAg5LmdOiA5XFxufTtcXG5cXG5sZXQgY2huTmFtZVZhbHVlID0ge1xcbiAgICDljYE6IHtcXG4gICAgICAgIHZhbHVlOiAxMCxcXG4gICAgICAgIHNlY1VuaXQ6IGZhbHNlXFxuICAgIH0sXFxuICAgIOeZvjoge1xcbiAgICAgICAgdmFsdWU6IDEwMCxcXG4gICAgICAgIHNlY1VuaXQ6IGZhbHNlXFxuICAgIH0sXFxuICAgIOWNgzoge1xcbiAgICAgICAgdmFsdWU6IDEwMDAsXFxuICAgICAgICBzZWNVbml0OiBmYWxzZVxcbiAgICB9LFxcbiAgICDkuIc6IHtcXG4gICAgICAgIHZhbHVlOiAxMDAwMCxcXG4gICAgICAgIHNlY1VuaXQ6IHRydWVcXG4gICAgfSxcXG4gICAg5Lq/OiB7XFxuICAgICAgICB2YWx1ZTogMTAwMDAwMDAwLFxcbiAgICAgICAgc2VjVW5pdDogdHJ1ZVxcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIENoaW5lc2VUb051bWJlcihjaG5TdHIpIHtcXG4gICAgbGV0IHJ0biA9IDA7XFxuICAgIGxldCBzZWN0aW9uID0gMDtcXG4gICAgbGV0IG51bWJlciA9IDA7XFxuICAgIGxldCBzZWNVbml0ID0gZmFsc2U7XFxuICAgIGxldCBzdHIgPSBjaG5TdHIuc3BsaXQoJycpO1xcblxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IG51bSA9IGNobk51bUNoYXJbc3RyW2ldXTtcXG4gICAgICAgIGlmICh0eXBlb2YgbnVtICE9PSAndW5kZWZpbmVkJykge1xcbiAgICAgICAgICAgIG51bWJlciA9IG51bTtcXG4gICAgICAgICAgICBpZiAoaSA9PT0gc3RyLmxlbmd0aCAtIDEpIHtcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiArPSBudW1iZXI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsZXQgdW5pdCA9IGNobk5hbWVWYWx1ZVtzdHJbaV1dLnZhbHVlO1xcbiAgICAgICAgICAgIHNlY1VuaXQgPSBjaG5OYW1lVmFsdWVbc3RyW2ldXS5zZWNVbml0O1xcbiAgICAgICAgICAgIGlmIChzZWNVbml0KSB7XFxuICAgICAgICAgICAgICAgIHNlY3Rpb24gPSAoc2VjdGlvbiArIG51bWJlcikgKiB1bml0O1xcbiAgICAgICAgICAgICAgICBydG4gKz0gc2VjdGlvbjtcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiA9IDA7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgc2VjdGlvbiArPSAobnVtYmVyICogdW5pdCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIG51bWJlciA9IDA7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIHJ0biArIHNlY3Rpb247XFxufVxcblxcbmZ1bmN0aW9uIG5hbWVDb21wYXJlKGEsIGIpIHtcXG4gICAgaWYgKGEgPT0gbnVsbCB8fCBiID09IG51bGwpXFxuICAgICAgICByZXR1cm4gYSA9PSBudWxsID8gYiA9PSBudWxsID8gMCA6IC0xIDogMTtcXG5cXG4gICAgYSA9IGEucmVwbGFjZSgvKFvpm7bkuIDkuozkuInlm5vkupTlha3kuIPlhavkuZ3ljYHnmb7ljYPkuIfkur9dKS9nLCBmdW5jdGlvbihtYXRjaCwgcDEsIHAyLCBwMywgb2Zmc2V0LCBzdHJpbmcpIHtcXG4gICAgICAgIC8vIHAxIGlzIG5vbmRpZ2l0cywgcDIgZGlnaXRzLCBhbmQgcDMgbm9uLWFscGhhbnVtZXJpY3NcXG4gICAgICAgIHJldHVybiBDaGluZXNlVG9OdW1iZXIocDEpO1xcbiAgICB9KVxcbiAgICBiID0gYi5yZXBsYWNlKC8oW+mbtuS4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5neWNgeeZvuWNg+S4h+S6v10pL2csIGZ1bmN0aW9uKG1hdGNoLCBwMSwgcDIsIHAzLCBvZmZzZXQsIHN0cmluZykge1xcbiAgICAgICAgLy8gcDEgaXMgbm9uZGlnaXRzLCBwMiBkaWdpdHMsIGFuZCBwMyBub24tYWxwaGFudW1lcmljc1xcbiAgICAgICAgcmV0dXJuIENoaW5lc2VUb051bWJlcihwMSk7XFxuICAgIH0pXFxuXFxuICAgIGxldCBOVU1CRVJTID0gamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4uY29tcGlsZShcXFwiKD88PVxcXFxcXFxcRCkoPz1cXFxcXFxcXGQpfCg/PD1cXFxcXFxcXGQpKD89XFxcXFxcXFxEKVxcXCIpXFxuICAgIGxldCBzcGxpdDEgPSBOVU1CRVJTLnNwbGl0KG5ldyBqYXZhLmxhbmcuU3RyaW5nKGEpKTtcXG4gICAgbGV0IHNwbGl0MiA9IE5VTUJFUlMuc3BsaXQobmV3IGphdmEubGFuZy5TdHJpbmcoYikpO1xcblxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKHNwbGl0MS5sZW5ndGgsIHNwbGl0Mi5sZW5ndGgpOyBpKyspIHtcXG4gICAgICAgIGxldCBjMSA9IHNwbGl0MVtpXS5jaGFyQ29kZUF0KDApO1xcbiAgICAgICAgbGV0IGMyID0gc3BsaXQyW2ldLmNoYXJDb2RlQXQoMCk7XFxuICAgICAgICBsZXQgY21wID0gMDtcXG4gICAgICAgIGxldCB6ZXJvQ2hhckNvZGUgPSAnMCcuY2hhckNvZGVBdCgwKTtcXG4gICAgICAgIGxldCBuaW5lQ2hhckNvZGUgPSAnOScuY2hhckNvZGVBdCgwKTtcXG5cXG4gICAgICAgIGlmIChjMSA+PSB6ZXJvQ2hhckNvZGUgJiYgYzEgPD0gbmluZUNoYXJDb2RlICYmIGMyID49IHplcm9DaGFyQ29kZSAmJiBjMiA8PSBuaW5lQ2hhckNvZGUpIHtcXG4gICAgICAgICAgICBjbXAgPSBuZXcgamF2YS5tYXRoLkJpZ0ludGVnZXIoc3BsaXQxW2ldKS5jb21wYXJlVG8obmV3IGphdmEubWF0aC5CaWdJbnRlZ2VyKHNwbGl0MltpXSkpO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgaWYgKGNtcCA9PT0gMCkge1xcbiAgICAgICAgICAgIGxldCByZWdleCA9IC9bYS16QS1aMC05XS9cXG4gICAgICAgICAgICBsZXQgczEgPSBTdHJpbmcoc3BsaXQxW2ldKVxcbiAgICAgICAgICAgIGxldCBzMiA9IFN0cmluZyhzcGxpdDJbaV0pXFxuICAgICAgICAgICAgaWYgKHJlZ2V4LnRlc3QoczEpIHx8IHJlZ2V4LnRlc3QoczIpKSB7XFxuICAgICAgICAgICAgICAgIGNtcCA9IG5ldyBqYXZhLmxhbmcuU3RyaW5nKHNwbGl0MVtpXSkuY29tcGFyZVRvKG5ldyBqYXZhLmxhbmcuU3RyaW5nKHNwbGl0MltpXSkpO1xcbiAgICAgICAgICAgICAgICAvLyBjbXAgPSBzMS5sb2NhbGVDb21wYXJlKHMyLCAnZW4nKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGNtcCA9IHMxLmxvY2FsZUNvbXBhcmUoczIsICd6aCcpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgaWYgKGNtcCAhPT0gMCkge1xcbiAgICAgICAgICAgIHJldHVybiBjbXA7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgbGV0IGxlbmd0aENtcCA9IHNwbGl0MS5sZW5ndGggLSBzcGxpdDIubGVuZ3RoO1xcbiAgICAvLyBpZiAobGVuZ3RoQ21wICE9PSAwKSBsZW5ndGhDbXAgPSBsZW5ndGhDbXAgPiAwID8gLTEgOiAxO1xcbiAgICByZXR1cm4gbGVuZ3RoQ21wO1xcbn1cXG5cXG4kLmV4cG9ydHMuc29ydHMgPSBmdW5jdGlvbihsaXN0LCBzb3J0KSB7XFxuICAgIGlmIChzb3J0ID09PSBcXFwi57G75Z6LXFxcIikge1xcbiAgICAgICAgLy8gbG9nKFxcXCLnsbvlnovmjpLluo9cXFwiKTtcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGEudHlwZSAtIGIudHlwZVxcbiAgICAgICAgfSk7XFxuICAgIH0gZWxzZSBpZiAoc29ydCA9PT0gXFxcIuWQjeensFxcXCIpIHtcXG4gICAgICAgIC8vIGxvZyhcXFwi5ZCN56ew5o6S5bqPXFxcIik7XFxuICAgICAgICAvLyBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgLy8gICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUsIFxcXCJ6aFxcXCIpXFxuICAgICAgICAvLyB9KTtcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIG5hbWVDb21wYXJlKGEubmFtZXx8YS50aXRsZSwgYi5uYW1lfHxiLnRpdGxlKTtcXG4gICAgICAgIH0pO1xcbiAgICB9IGVsc2UgaWYgKHNvcnQgPT09IFxcXCLlpKflsI9cXFwiKSB7XFxuICAgICAgICAvLyBsb2coXFxcIuWkp+Wwj+aOkuW6j1xcXCIpO1xcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgICAgICByZXR1cm4gKGEuc2l6ZSB8fCBOdW1iZXIoYS5zaXplX3N0cikgfHwgMCkgLSAoYi5zaXplIHx8IE51bWJlcihiLnNpemVfc3RyKSB8fCAwKTtcXG4gICAgICAgIH0pO1xcbiAgICB9ZWxzZSBpZiAoc29ydCA9PT0gXFxcIuaXtumXtFxcXCIpIHtcXG4gICAgICAgIC8vIGxvZyhcXFwi5pe26Ze05o6S5bqPXFxcIik7XFxuICAgICAgICBsaXN0LnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiBnZXRUaW1lSW50KGdldFRpbWUoYSx0cnVlKSkgLSBnZXRUaW1lSW50KGdldFRpbWUoYix0cnVlKSlcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHJldHVybiBsaXN0XFxufVxcblxcbmZ1bmN0aW9uIHNpbWlsYXIocywgdCwgZikgey8v5Yik5pat5Lik5Liq5a2X56ym5Liy5LmL6Ze055qE55u45Ly85bqmXFxuICAgIGlmICghcyB8fCAhdCkge1xcbiAgICAgICAgcmV0dXJuIDBcXG4gICAgfVxcbiAgICBpZihzID09PSB0KXtcXG4gICAgICAgIHJldHVybiAxMDA7XFxuICAgIH1cXG4gICAgdmFyIGwgPSBzLmxlbmd0aCA+IHQubGVuZ3RoID8gcy5sZW5ndGggOiB0Lmxlbmd0aFxcbiAgICB2YXIgbiA9IHMubGVuZ3RoXFxuICAgIHZhciBtID0gdC5sZW5ndGhcXG4gICAgdmFyIGQgPSBbXVxcbiAgICBmID0gZiB8fCAyXFxuICAgIHZhciBtaW4gPSBmdW5jdGlvbiAoYSwgYiwgYykge1xcbiAgICAgICAgcmV0dXJuIGEgPCBiID8gKGEgPCBjID8gYSA6IGMpIDogKGIgPCBjID8gYiA6IGMpXFxuICAgIH1cXG4gICAgdmFyIGksIGosIHNpLCB0aiwgY29zdFxcbiAgICBpZiAobiA9PT0gMCkgcmV0dXJuIG1cXG4gICAgaWYgKG0gPT09IDApIHJldHVybiBuXFxuICAgIGZvciAoaSA9IDA7IGkgPD0gbjsgaSsrKSB7XFxuICAgICAgICBkW2ldID0gW11cXG4gICAgICAgIGRbaV1bMF0gPSBpXFxuICAgIH1cXG4gICAgZm9yIChqID0gMDsgaiA8PSBtOyBqKyspIHtcXG4gICAgICAgIGRbMF1bal0gPSBqXFxuICAgIH1cXG4gICAgZm9yIChpID0gMTsgaSA8PSBuOyBpKyspIHtcXG4gICAgICAgIHNpID0gcy5jaGFyQXQoaSAtIDEpXFxuICAgICAgICBmb3IgKGogPSAxOyBqIDw9IG07IGorKykge1xcbiAgICAgICAgICAgIHRqID0gdC5jaGFyQXQoaiAtIDEpXFxuICAgICAgICAgICAgaWYgKHNpID09PSB0aikge1xcbiAgICAgICAgICAgICAgICBjb3N0ID0gMFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGNvc3QgPSAxXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGRbaV1bal0gPSBtaW4oZFtpIC0gMV1bal0gKyAxLCBkW2ldW2ogLSAxXSArIDEsIGRbaSAtIDFdW2ogLSAxXSArIGNvc3QpXFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgbGV0IHJlcyA9ICgxIC0gZFtuXVttXSAvIGwpICoxMDBcXG4gICAgcmV0dXJuIHJlcy50b0ZpeGVkKGYpXFxufVxcblxcbiQuZXhwb3J0cy5zaW1pbGFyID0gc2ltaWxhcjtcXG4kLmV4cG9ydHMucmVtb3ZlRXh0ID0gZnVuY3Rpb24gKGZpbGUpe1xcbiAgICByZXR1cm4gZmlsZS5zcGxpdCgnLicpLnNsaWNlKDAsLTEpLmpvaW4oJy4nKVxcbn07XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ1XCIsXCJwYXRoXCI6XCJ1XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSBmdW5jdGlvbihydWxlLCBvcmlnaW4sIG1vZGUpIHtcXG4gICAgcmV0dXJuICQudG9TdHJpbmcoKHJ1bGUsIG9yaWdpbiwgbW9kZSkgPT4ge1xcbiAgICAgICAgbGV0IGhvc3QgPSBvcmlnaW4ucmVwbGFjZShuZXcgUmVnRXhwKFxcXCJodHRwOi8vfGh0dHBzOi8vXFxcIiksIFxcXCJcXFwiKS5zcGxpdChcXFwiL1xcXCIpWzBdO1xcbiAgICAgICAgbGV0IGhvc3RzID0gaG9zdC5zcGxpdChcXFwiLlxcXCIpO1xcbiAgICAgICAgaWYgKGhvc3RzLmxlbmd0aCA+IDIpIHtcXG4gICAgICAgICAgICBob3N0ID0gaG9zdHNbaG9zdHMubGVuZ3RoIC0gMl0gKyBcXFwiLlxcXCIgKyBob3N0c1tob3N0cy5sZW5ndGggLSAxXTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKFxcXCJtYWduZXRcXFwiKSkge1xcbiAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIua4qemmqOaPkOekulxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFxcXCLmo4DmtYvliLDmlrDnmoTno4Hpk77lnLDlnYDvvIzngrnlh7vnoa7lrprmjInpkq7ljbPlj6/mkq3mlL7vvIzngrnlh7vlj5bmtojmjInpkq7lj6/ku6XlpI3liLbpk77mjqVcXFwiLFxcbiAgICAgICAgICAgICAgICBjb25maXJtOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWc7XFxuICAgICAgICAgICAgICAgIH0sIGlucHV0KSxcXG4gICAgICAgICAgICAgICAgY2FuY2VsOiAkLnRvU3RyaW5nKChtYWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBtYWdcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcImFsaXl1bmRyaXZlLmNvbVxcXCIpICYmIG1vZGUgIT0gXFxcIuWumOaWuUFQUFxcXCIpIHtcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcbiAgICAgICAgICAgIGlmIChpbnB1dC5pbmNsdWRlcygnY2hlY2t1cmw/dXJsPScpICYmIGlucHV0LmluY2x1ZGVzKCcmdXJscmVmZXInKSkge1xcbiAgICAgICAgICAgICAgICBpbnB1dCA9IGRlY29kZVVSSUNvbXBvbmVudChpbnB1dC5zcGxpdCgnJnVybHJlZmVyJylbMF0uc3BsaXQoJ2NoZWNrdXJsP3VybD0nKVsxXSk7XFxuICAgICAgICAgICAgICAgIC8vbG9nKCfotLTlkKcnK2lucHV0KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKHVybCwgcnVsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBmeV9icmlkZ2VfYXBwLm9wZW4oSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLpmL/ph4zkupHnm5hcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPeS6keebmOaxh+W9sSZ1cmw9XFxcIiArIHVybCArICc/P2Z5cGFnZScsXFxuICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgIH0sIGlucHV0LCBydWxlKVxcbiAgICAgICAgfSBlbHNlIGlmICgvXFxcXC4obXAzfGZsYWN8bTRhKSQvLnRlc3QoaW5wdXQpKSB7XFxuICAgICAgICAgICAgbG9nKGlucHV0KTtcXG4gICAgICAgICAgICByZXR1cm4gJC50b1N0cmluZygodXJsLCBydWxlKSA9PiB7XFxuICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGxheVZpZGVvKHVybCk7XFxuICAgICAgICAgICAgfSwgaW5wdXQsIHJ1bGUpXFxuICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dC5pbmNsdWRlcyhob3N0KSAmJiBpbnB1dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUsIG1vZGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6K+m5oOFXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS95c2Z4P3J1bGU9XFxcIiArIHJ1bGUgKyBcXFwiJnI9XFxcIiArIHJ1bGUgKyBcXFwiJm1vZGU9XFxcIiArIG1vZGUgKyBcXFwiIyNcXFwiICsgdXJsLFxcbiAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSwgbW9kZSk7XFxuICAgICAgICB9IGVsc2UgaWYgKCFpbnB1dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICBsb2coaW5wdXQpO1xcbiAgICAgICAgICAgIC8v6IO95ZSk6LW3QVBQ55qE55m95ZCN5Y2VXFxuICAgICAgICAgICAgbGV0IHdoaXRlID0gW1xcbiAgICAgICAgICAgICAgICBcXFwicWtsaW5rXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcImJkbmV0ZGlza1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJ4dW5sZWlhcHBcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwic21hcnRkcml2ZVxcXCJcXG4gICAgICAgICAgICBdO1xcbiAgICAgICAgICAgIGxldCBpbldoaXRlID0gd2hpdGUuZmlsdGVyKGl0ID0+IGlucHV0LnN0YXJ0c1dpdGgoaXQpKS5sZW5ndGggPiAwO1xcbiAgICAgICAgICAgIGlmICghaW5XaGl0ZSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIHJ1bGUpID0+IHtcXG4gICAgICAgICAgICAgICAgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAgJiYgZnlfYnJpZGdlX2FwcC5vcGVuVGhpcmRBcHAodXJsKTtcXG4gICAgICAgICAgICB9LCBpbnB1dCwgcnVsZSlcXG4gICAgICAgIH0gZWxzZSB7XFxuXFxuICAgICAgICB9XFxuICAgIH0sIHJ1bGUsIG9yaWdpbiwgbW9kZSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwieXNmeFwiLFwicGF0aFwiOlwieXNmeFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgcnVsZSA9IGdldFBhcmFtKFxcXCJyXFxcIikuc3BsaXQoXFxcIiMjXFxcIilbMF07XFxubGV0IG1vZGUgPSAoZ2V0UGFyYW0oXFxcIm1vZGVcXFwiKSB8fCBcXFwiXFxcIikuc3BsaXQoXFxcIiMjXFxcIilbMF07XFxubGV0IHVybCA9IE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXTtcXG5sZXQgaXRlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdVxcXCIpKHJ1bGUsIGdldEhvbWUodXJsKSwgbW9kZSk7XFxubGV0IGpzID0gJC50b1N0cmluZygoKSA9PiB7XFxuICAgIHRyeSB7XFxuICAgICAgICBpZiAoZG9jdW1lbnQudGl0bGUgJiYgZG9jdW1lbnQudGl0bGUubGVuZ3RoKSB7XFxuICAgICAgICAgICAgbGV0IHIgPSAkJCQoKS5sYXp5UnVsZSgodCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUodCk7XFxuICAgICAgICAgICAgfSwgZG9jdW1lbnQudGl0bGUpO1xcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAucGFyc2VMYXp5UnVsZShyKTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZnlfYnJpZGdlX2FwcC5sb2coZS50b1N0cmluZygpKTtcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwiXFxcIixcXG4gICAgdXJsOiB1cmwsXFxuICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICBkZXNjOiBcXFwiMTAwJSYmZmxvYXRcXFwiLFxcbiAgICBwaWNfdXJsOiBcXFwiXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHVybEludGVyY2VwdG9yOiBpdGUsXFxuICAgICAgICBqczoganMsXFxuICAgICAgICBjYW5CYWNrOiB0cnVlLFxcbiAgICAgICAganNMb2FkaW5nSW5qZWN0OiB0cnVlLFxcbiAgICAgICAgZmxvYXRWaWRlbzogdHJ1ZVxcbiAgICB9XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiB1cmxcXG4gICAgfVxcbn0pO1xcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumYv+mHjGxhenlcIixcInBhdGhcIjpcImFsaWxhenlcIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoXFxcInJPKzM3dUcrYjJKYmw5MUpYZTFBTGFjQWNSSzF4aWtLTlNmeDNPSk52OU5SSEY1ZUZXUmc1dGQvMlZ3bVFjRlZtRUVjNFJKRlN0bEpxRW5GVm5BZ1dmbmhNbTRDSGQ5NWtBR3R6eGJUZUE4eGxXWGVoY1JtK2wvTjcraFlHdk82WjVCZERzWVZqSDZ1cG1vUUJjVmIweVhXcTFQRzZwSzVCR1hrY0hmZnUxdVdteGRHamt1aXBVdHhCTFNQK3RaTHJ4ejRpdDloRGZicld5U0NpTmY4TnlqODgwei80N1IyQWlvcGtjMXhtOWFLV0Q0UXVsdGlsdXZNZlRIei9ZeksyUlZXMmRJSWdyYzUxMko0cFNvNXJLWklxSXVFSnBsNnlQb0xpYjFYOXdEekxtQ3dkY3R2ak1DY1RZOG41QUJ1Ukdsa1ZKQUNnTUpxWWxTVmpYVmdacG13UElZUW5JNHZUSVFGTFNQeWp6bG9TNTNJc2syQXV3YzlxMkJJUjdNRnI0RDZSRlN5RzJwWGxFcFo5MVZtR25DS3hPTkpnM0wwbldHc0J2U0VzZ1RjeGg0OXVRQ2Y5NEROTWpIVEsrL05sRjJ5ajBzelN3RElqOTkvcEpkMFpSVUY1NXlZdHZ2eVFlZU5neGFJV3RZMXBxdURoTXRnVFBHdGVtMVVLbE01bks0SStGcWh2YkFjelhsWWhocTNEK0E5UkJzSmg1eUVrUFJ1eFJXWEEyTldYMmhpaGVlTVdDb2UvOVo2VW05c0xTTXFOZTBoN1lSSG1LZ0pFMFpzQWE3SEZmWFdzQ2NrSThGMTVXWVR2N2RudHc0UkJmTHFNQmZtMnZ5SHptdDc3bVNEam5MT3JWSnp4RCsvVXp2M0JheGI5QlZWRk8va1ZxVE1TTGtGZ3FLS013SGltU3FwR2lEWURZTDVyRUJtM21kSVY1elFWTldVUmVGOTBEUEtyYUhoWFh1V1BUUW9TMmRBQWJYc0VsbmtsaXFJZWwzT29MdnprN0k4NW9sWWFkc1Rpd016VXdCYUQvKzdNK2h1TCtQNEN5OEUwRitLb05raWdPNW1RZ3FMTU9jK3BNdFpES0c5dC9ET1hSQzl1RS9IU01HUk1WUFJidEg2V05BK2xITTNoTkRTUEhDQWxWKzl0Y0srYUNqUEI0Q3Jkbm9vY0J6blppdjY2c2dhUmxZNDBka0RaTWVlbGVoVWxualFaQU15WXdTdFJXaVg2NWxBK3lMS1JFZGNOMWk5R1d1MWoya2EvNWV2UlR1K0paY1VveXg5ZkRUVWxtTU9BQ0o2UXZIM09wYlkzVUJQc2NNOXEvWTNqalhSRmZtcmcvWXBQN1ZBVmJ6ak52Y096cFF5K3c3ODg3RGtKeXZ2MnduT0o3ek52RGdIdXZkY0V5eHpBS2dJQ2dndS8vdS91TGNPeExDM0xVRkVBTkFIZVBCNWY2cjJnRmprYXE0c3hZaTh0K1QvM1Zwcys3UDd3M0NVckV4eXNrMElRUWVyS2Q5STFjVnFVVHZyKzAwUWY0RW1IVmF2ZWJWN3NxRTFmT0NPWk1lZ0RkM1JBUkQ4U0pMMWt2TDFEUVFlZ0paQzg1QjRKVnFPV2N1ZWlwTmEwaE54N1FoS25uc1o5QzBUMVRJeDRSLy9sSzRVZ3IzdTVldW51cGptUStkWERjRDlwcGFmTStJc3V2Q0RaNFVkTFlrSUZLTEprNWdkOUZlalZpTkxkZGFnZ05tN0t3ekpCaGtXR2Fic3kxcnVNbXJuTDRZRWtmZUNzdUc5cEdUNWZMWjZ6WGhzRE9ZMGR3ays2ajlCN0I1YmJKWVdzUHhiODI1Z25FcFdVOWE4OFZoV2pNanZUdHRCRVg5VjBGVTcrNmlkYlNiWHIxKzFXU2lwZHdSNEl6aFU5STM1aFp6bzhqaUZNYnRUMnhwRFpOQXp3M3Z4MXl2TDZ5NFBQTGUzeE5sV3FBM21HSUJaSVd6bmNWU01RZC9raHVzZXlNc1phUWdNd0crdDJEd0trUUFTTG55bEt2dEdhN3RvcldkQXNGT3RnMUEyWS9tZGZPQjNkSnBJakx3amZlSHI5ckxuRXJEOCtPaE1QcjBvazl5dUpGTVMyUXFwQmMvakQ4MTNnajQzZkJUS3U0UlZIdHhpLy92cGRldkF5R0Q5WGxERVlWUTcvQisxU0VjbDN4anhOT2V0S2lXUkROLzcvUlpZMlVJSmlnNU12ZEtRN2MzdnRvaDJrVzA5Q0F5QStob2RjV05uajRXeHZpYldyblYzY3BnRTBiNlBLYXdDWHNWS1lhVWJqbFJhM2x4VXFpdDRPMmJEWEF5bVVlNDYrMEJVUHRBdkZaK0tqeVRGNzJmRkVnOGFCdkx5bll4aWNHcjdFVjFYcEpWK3JHR2RzaTUzbktNVmQ0V0RzZ1JxTTZjdytEOWtCSWhPQnpqc3l3S3p4d3JJaGo0WGIwcC9Jb0NrWVhBTDZTTUQrT29Bc1l4M2hhcTZqb0VhekpsaERPK21kRzgvRmVDWjEwSXJIVG5nc3h4RnovdW5UZUU5MjZWVXl5dkxTTlpXYy9zSW4vdldTQUhVOXAvVUYwV2tYVS9kN2o0ZXp6dU14Rkc1MnByMDRkQjJlTDEwRVUwa0hQS3lOdVZPWE5scVV0Y1Z2ZjJFQnVtaDFwdUNEYW1ZREljbG1Ld0kzV1BCZmlGWTFlTlN2RlNjRG5tcVdnanlCMDVCVW1iblErU1luMHNNVFVIVHdMbVVHZlNOdzVDZ1B0QTJLdzVtNW5IMEsvU1VWc3BqTUQ3TlljK0RXalVMMmIyc3E4UTUyVW96d05zT0FJdDdpTWNmWVVzaTl6V0RrOStrclNGV1h0cktpVDFRWEtFN1dMM0lKN1RpRzhwUnMvTDRlazVLaFNJVFkyZnZBYStrcW5Wb0txbTNScGhYYndOOUhOWUlOTWJnaHlVZGxvS0J6am1qRG95V3ltQnFTOEtlYjFsU0hwOEpjY09PczVadG1pVGtlQ1Q1T2wwcTJkVGJvUDRoY1lobVZXeEZGenpkNk9tNnNUcVlPQjRWR0YxRXRBRzdHRFJjUnVYV0VZUFNrM3FJdWR6dUZ2c0crZ2ZOejJ3Z1VrQ2FjbFFNaWZyb3FZZWp6R3JCYUx6SHNSanR6cFF5K3c3ODg3RGtKeXZ2MnduT0p4YWNhNTNYYjREcHA3cDB3K2s2QnNYa1NWZGpqS3lUamRTV3ZuQ2Q5QndXRVVkam9yQUk3QVpFTWR3N01yUWNJdC93TXltWEhTWlNoRjdPZWt4OW1uSWFhNkRRb1lWUGJ5T0gzV0s3WkNNMy9lSXdtYVY0d3NaUHI1Rm12TFJCU3E4eVZSaVRTV3llTFBGUGRuYkY4TnJjRGFkWTZ2ZGtmMU53OXo5Y2NuczdmdFlXZTRnQUloVVZCNmpwc1BJTDhlM3A4OWtCZGVkVmd0am5wT2FJcitrTU5IQ3FsaGs3R0FITzI3MmtEOHVRSE9KNlloMTdBcjRHQzJSZFhqQk05eHVMc1BLWG10NlhCTC85dTI5MmNJdzVWd3BaU1NFMFNPYVFmdjNQTTdQa1p1bkdkSGpHUjV3b2g1SHl6SlJhUU9tc04waTRudkhFM3dNZTdnU1JsSk9XYnRoYU9URU0rdmFMVGdwN1pGTFYzekpuaWJnVlBHRW9qeFo1N1dWNmQ1ZXVVeDgzY2UxdXpOZC8zamtqVGVnZTZWdnFTSWFyWWc4R0t6aG5jLzAwYU13SjB3T0Vpc0xYT1JYd1JBMVMvSEVQMFNyNnZHVExtTVBaNU85UnNLeTRPdktQMENnQkdscXRnZUJ1NDQ5bDJTVWNGZGowMmNiZjFYMHRQMUJQTGU2eGYySGZiejJxdEZocXc2V1RYTEZKSC9pa2lyVjhnVWhacmNLVkhhYlFJTHk0UjZqWUd0RXZJaDZXQjdGc1hsbXpKNWNkcXhlN1Q5NStEcUI1ZEIwWVJWWGZMRTNlN0o1dXkzeEVmWmQ4SHpnMTdIME51bldrT0RHcWI4K0dnaXloYzR1cnliMmJZZVVNUXpETXg5enlFblN3OG9GeEVFVHhPeGtGNTBwb1llR2s5T3UyQVVyNnJpWjZXQWJpVzJ5R0svKzk5dTl6ODcrM1lPdmN3UWdEUHFyangreCtOM0FSYVVlbVdoQW1pcjFGZGdtZkR3NitNalVJT2hmdGZHbFJGeU42aTZWT29Wb05jZFFSZ3RlN1pHbjI1SE9lMGJhdTNjL2t0NldRRTlzbDhGYWJDMHgyZzhjK2hYdDZOR0dqSmpFdkVBL0V5Sng4bkN0d0gzUERNVGxaT3lFMTdhS3BWNnFqVVl2U3FieFM4bWNxSERXbzIwbnpZQjMwQ05tTXRxMmxwQmtaRjUyWEViZHk5eFNBaWl5V0R1aEVhOEdITkQ4cTdvUERqUGEvMXpWK0VpTnpBamd4a0N3Rmo0aTFsSmNIbXJlWUxZREZNNkdSWFJCNFJoeWRwbS9RVDJWYkVzV2I5aCtsNzZMMjJndFk3ZDJDbElMM0NobDV3c3NyeTBqV1ZuUDdDSi83MWtnQjFQWVA3bU9NZHdWbHdQL0Eyem9aWUt5d0cybUhZNlNMZXByMVA1VitEME1GdUZMVm1kTmJ3SjZ3Yjd0WmhrTEVZNy9MSzh0STFsWnord2lmKzlaSUFkVDJaNThGRFJ4Vjd1WlpWVzY5VFY4QUFJdjdKSTZJWWZjUU1uSjZpL3Bqa1lpR2RvV2MvYVdnQVBldWNrUWtVK2hVazhRT0xYeE1nODNkNU5qQTJ0Vmh1OUpxYjhhKzNsMWN5ZzZ1VzA0bVpvRUJiSXBiY053eU1IamozMG1GdDdKd1dOWGpVcnhVbkE1NXFsb0k4Z2RPUWNzcnkwaldWblA3Q0ovNzFrZ0IxUFp2bHF4SmVUVlpKNUJ2QlB3OEtSUXB3Rml0SFNoK0VLSkdDTW9VdUZJMjFCcEJaWnJ1TW5jRW1LbldtVytPTkIzMVY3aFlpVWFXNUpuVXFZOWh6OENRb3ozeFRvVlhHeDJ5QzMwcWFlRlhLb2RXMTRLSFJSRjlJcHUrZ0dDb0xBa3BwUGNFWVlCS0FDc0FQN0EzWWdrVVJxdFVnRmhrMDJUUXNsZE8yVG9uSU1OZjlQS1Q3REdvby9KVHJybGp4b2VtSnhLTEhSZEs2SmlsZlA4b1NRV2tvTEp2N3RyQVpmeVpldmdkKzg1RS9tdUd6OGJjMEt4MTlNaHU2UFBuOVNxa0R2MXRndElsMFprYW00ZGIzMUhzUDcrelVVMVFXMC8weXZTS09MRC93b3U1M3haWXlaWjlJWHYrOGU3cWNmVnZJTHhuUFg3WFladnlhWldkMXBJVzk3eTNtV3V0QUhDUTg4cjhpWUlPMThYM2FsT2NVUDdkNmhDcFNaQlJIdXBPdTdOL3hsTmpFeXhCTUdhZkJLM2JUZUJva3VjQ204a01ra0V3dGJSbThvMzV3bndReDdSekZ6Q2syV0JXQjVtRHpkMzY2cmdNV2ttSlZUcWFacHJvY2ZnN05PYWl3TFNWUzlyM2hyQ3BQTkZYV3Y4ZXdhblBJemUzN0FTOTM0aThudEp0RE9aNGYwdW13VE11UUV4SjlockVWczFrY3ViUndONjA1NW1nTHdKQUlWNEE4ZnVzbkdGYktKY0s3bXZlZWcwZmRqRm16MTFtRU9YaHhIWStPK2hLZ1pkT1hBa2M4ZFN1aFVLOXlNNlVNdnNPL1BPdzVDY3I3OXNKemljZTZWdnFTSWFyWWc4R0t6aG5jLzAwYU13SjB3T0Vpc0xYT1JYd1JBMVMvQzBwMWE0blJJNDd5V3orMDFYVUxGOHZrei8zakJDQTFaTjVVWFMxNXhxNXhKUDA1STF6RTJ2TzN6NlB1V0pqYmdSMnRmTHArWTIyZ01ZSnllbjlaNzR0RWhhT2FBcWxLQjh5WERZSkdVY0kwOVJweTlldmdvb0hpeHNxc0xTWnNZbFVwOWwraml2ZEVYeEtvNUF2NnlGU3FwMnMzVVNOWjFtR1o0bHlYdWpMeXl2TFNOWldjL3NJbi92V1NBSFU5c29MUVFaWG1xWkR6T0I4UGJZWGRFVExLOHRJMWxaeit3aWYrOVpJQWRUMkNNMjRzQW5WQnlPSGtmSjRaN0hKbG9Cdk5rQTR5UnlzeUcvdlVOWXRNdS9MSzh0STFsWnord2lmKzlaSUFkVDJNN3ZaRXdUYnNzREVhUGUvK3YyS3FXOVlvTW51cGE0M0YveGx2RjJRU0VRNlhhYU5KcENSYjVQeWp2SkY3bzJzZUx4OTdldkhLeFpnaXBOUlJHeEs2OTdRUzhsVjZ0Z0gxYVY4NC94UUgyS2Y4TXZzSmlQWTBBNDFpeVdLMk1pSnl5dkxTTlpXYy9zSW4vdldTQUhVOWpid3NKaE5CTGpKRmUvVE5VWWxUVlhMSzh0STFsWnord2lmKzlaSUFkVDJzOUUvRWlSUUE0NFYwK05vRGRINmtsbkhYaVJUempjZFFaZmIyMmpDUGFuc1VodzdpWGN3SVRKU0pQWjZuRWJuYTkrRzFYRzdWdE9McmN4Yk1MaUtKczZVTXZzTy9QT3c1Q2NyNzlzSnppZGF1c0F6MnJFR3lSUVBucUlyV3ZJeUV4S2VESENlaWVMSE1DUkJCOFAxb2ZDL1dzQnV3M1krZ2JXNjk3UEpDM04yOGFFcXNzaVBKclhYSUduWXN5M01vQ1FKaXRuaHJrajE3aVQ3eXh5ZFdEOXJTMnNaMElaaHdOVy9lanJjWHpRVkhxVGtRL1ZRTm5ncG9YcnplcC8wYmV4SmNCVUE4d0cxSU1PZ3Q2SXBQYzJUQ1EzTFJ1RnFsdnBCZXdjOHFOckx1M0FoNjRWeUJkcHZCWEZMU2YvNklISWgxanJhM0FwWXo5N01nL0RIWFBtRDNOOFAyTndYWThxb3pCek5JcGhqMENOU0FSMFBGQmQwbDRMU3VYSFRJMmYva1IxWTZZVzVXRDlwbFdtRDFvUlBza01IYS9UKys2Q1FubjlsVTZEa1ZjSklNMWVxTjdrSStPN09RZytNRlRpRktDSUkvS2V1ZDgyblEyMlZneGVadUVXN1ErRzRJWmN6bk5yTWVteXp4Ulo2eDhhY2VzeXdtU3BGc2cxNWpJSGRDVWlWa0tadElrcVBCRWduaU9HTmd2cnN1Z0twNG1yM2NNL3IyMmF2SEY3c2xON2UvakFrMUZGVW83TmJFMHFvMU41TkpjVGRXMG9qL1Jwd25DeDVnemtFRC94S2ZMNEVDZFNxNTB6WGtXaVNVdkxOMEorSUpOdTFlUkNHQXV3QmJ0SWYyc1RBb3JuWi81SHpiYWlldEJrSnJyRVpZaENSL2hsbWEvMHlSOGU4MXJCc0J3UTA0UzVTLzY0QWVURmRFaUdBZTdHdkcrb043d3RBSEp4TUpHak1KdFRiVDNEallvUDlxa091S1ZFWDVFdDZmb2xzZmJqL1VVNXBVekZacnFDbkpLc29WblNCSlNkVHFsTTlCdVpEMlladjhxZFdibXNodkd0UVJlY2UvOC9adjhIc2pVRno0WkVHVFpZemdzS0FEVE12T1hjUVdwOTlCNWVEYjFJdk1YclVlR2lYUHV0UDF2RnQrb2RGTHpjM3VzOFVkTWF3dHFLeHV1cUJsWHBFaXpwcmNxV3lSK0JxMGx5aUVsWHJETVMrTHcwUGFmZE11SmdIRlNTOXJQZjZEeWtpSzR0WGhZUStTM29iY1ZaQnVvdFNWUHBRWnY0cmtjc3J5MGpXVm5QN0NKLzcxa2dCMVBhWnJHNkFsWWM4czduU2xoaHI4OWp3eXl2TFNOWldjL3NJbi92V1NBSFU5bzNnUlB0R0tucWl4bHJSZkVzUFA3TnZXVkllbndseHc0NnpsbTJhSk9SNE1uYnlBMVVFWEpBbDcvNGsrSHRhRWNzcnkwaldWblA3Q0ovNzFrZ0IxUFpGVFdLb0pUZzlkTUJtZzRHOXY1b2R4cTlmNkZJN0M0SDFGTGJiMkVnVmlRczhMT3UwMHBDZkZCOHNCcExVa3lRZUlSZ0lCTFVZMHpwTFpGNXhlUVdVY1BJN1crS0g3ODNYb1dyNG13akEyWEhYYi9NMytUWDZaQVNzOTF4blBWL0xLOHRJMWxaeit3aWYrOVpJQWRUMmFlVEZaSU43ZFIzTFRaUFRtbXBlZnNYT1pZRmtCbTJTZTFZTFFUYlFKejdPbERMN0R2enpzT1FuSysvYkNjNG5WYVo4QUFnSnk2ZFhPaE5MbFhyTTVFdjlaZGJFYk9SOFFtTFpRVlNJY0dOUm9WcUsvYkhwV2JIekZDbHpJemFiR2tOMno5REFMcWJuUTd1Rmd2M3M5anhYTkI3MTFMR0p2cmpJbGh1djMrbFZlcWcreHZMS1BzclVqVHZLcjZXQkN6d3M2N1RTa0o4VUh5d0drdFNUSkFrL0dUWDN4SkZUQTdFcUwwMWxyNy84SGE5QWdnd1VrSkRQbjBVdXY4U2NlTHg5N2V2SEt4WmdpcE5SUkd4SzZ6RWFPRVBjSUNMNThXTDNYRk5BTUwrbDE0YlY3VVoxalY4L2tyRkVqZnloNUgwbmxKaFEzWmpoU3Jvb2F0L3ZyVVNJbDBUMUtHSEdBV3kraytxQVB3Qy9QUzF4bGt4QWNKS0ViYnA4NjBWbzZxek0xMUVrNWFhY3VFcHI3SEhNZnJpT05JUDlueVc4dkdQZkZ2dVB1bjZuSmtVL3pHelArdVRtblMwSCsvVHhXTTJ1Z24vbnZpY1VKb0dWRXE4VWdZVTNJalFUTG8vOGo2WVh6RXZHSGZWU1p1ZEQ1SmlmU3d4TlFkUEF1WlFaOG5zZHBEcUhOcVhNSFFRc1M2M3R2U0RWUURSbXhqQTlXRUphWEtQNjl3TjI4YUVxc3NpUEpyWFhJR25Zc3kzTSt3NmVRYVBvNkpmaFFHS28rSnMxSzZGVUlBZWxOQUE0dXE3eXdZSUF1SEkzME44OHRqeUl0djlJby9USTVxR2svUGFnVVpvdDVpbDNlQTFBekFzcXNjc3J5MGpXVm5QN0NKLzcxa2dCMVBieWxwRnZsZFllQjdTaXhoMVUzOW52OVBtM3hjZkllMkFZTk5BRExPbklpa1p0T2tjRm53YkxBQkFzemZUTnNIWkQvL0hHWXcwQVZNeXd1SEtPeW1kdFhoOW5HVENLeGtCOHVmcFFMVzhWamZld0lyNStJUDNxenFmeWx0WGNXMnFoUkwzYmM5a0IxdmRrTHZBYlF1Q2x0VmdLRExTYVZhM3NpMkdRSWwxVlNwVG1FWHRCUFJGazIvenFSVHNnYlFNTC9scURYcko1eGZFeXFnc2JSWk53RWxBQTFleWl1Y3dES3VIMjF0SzN2aXg1Z3prRUQveEtmTDRFQ2RTcTUwekxLOHRJMWxaeit3aWYrOVpJQWRUMmtycTc2V1g0dzZzaVF0c2tKUmx0a3MvdDU3NWxpZkhQTkJodlkyOHl1Sktsd3A5VG9yaVdxQmJxdUZkLzgzWVRwZit1TFNwS1ZSWHdFVUFGTEJkSEZvS0ptQ2FkQTdPUk1taVN5S3pkT2tVbkxqd0tlQmpNaVBMcFBsS0J0TVVwYWVYTk5sZFJRb2xpOG50bXBYM3k1b1l3cXBqcFBXYTFET0hQbHdZeVQ0d2pLYjZJRUpUbjI0V2ZscmNhNnVUc1lybGQra3N5Ly91YWx5UDZCbGFzVzgvWGQrc3hZSmFWQm1NU3ZBOGl6azdMUjhoeHl4cUJucjZUZnhMeTdMNzZMVVNEeEY1SWNHVDZPR0RGRVhBNFNPVUM1U2wrUHE2YWdocmVMZTV1Rms5OVV5WlJkOHhPejBMUnhyM3ZkMmZwMWpibkZUc2pvZGpWMGZIZVlPZHQ1M2JtUWpxY3BMVkRWWVdSMlc3SWx6eW03T0ZXWTlJV29TUUNkeGxkWFZSZEQ3Rk9ZYzI0bnZEL2Y1TVNHdjgxTmh5aGoyb1Z1bVNtb0J6MndqUWRqMThSblo4YklKM0d6MzB1Rys1d2dtVHluak1Ca1R6QXBuM3VmeFZMVDQ2SjdtNlNLRGcrNHNpbXZZMXB6bEpieVJ4UjJ6WG00dWh2SjhuVitxeitRUzhXeFZSRTRxWHlJdkd5ZXpuU2hocVdOSnBidGs3RU5rUUx4SHplVkpYSUVwN2JmUjNJOCtZWlNLMC96dG1JM1RZdUNPSTNHS0hzcEJTTTI0azhFdlNtRXRZVnJWZzlBT1p2cFpYeW9DMG5aTFU1bEV6Uk9JRWNEMXo3TWxSN0ZBc2xLVDVjYnVkSG95dG02WTZZYkJNOE1ZOWw3Z1hqa0xKNUVFRFh3S0xPWEJHVTEvTWRxRTNYc3ZJeVZlaEdxR2JpMnZyU3lvQTZ3QlRYVGsrV2lTeEZFaHd4eXBiRTJBbXlGQU1QcFhzK1hxaEFZQVpPM2J4Nm9tUm4zdmkra0lQSGxnTWlaOXZQZ2x5azVnRXR6Wmsxb3g1Y0RMMEFnenl6bmhTT1ZFWXlWMndVYkVXN2pVNEZXeTVqQXNPeDRROU5KV3cvVk1qQnVaK29MZnovN3RZSjhaQU9VQmdvVDE4U3QvZDNiVVQwUTdPVnd6bEdFTXY0L29GTUMxZ2lyU0lmaEFtTUErRktEVUdHbFNHWFZOL3FVWmlKc1ZnSEdmUTMxaDFnTHhMNGtPODl6YW44WnRGSTIwOWVDN24zVDVxek5yY0QwYzZ6Zmx4a3IrUmwwQVltNXRMRmNBSWludkxPaUtoSGwybmhhSnBUUFFibVE5bUdiL0tuVm01cklieHI1NFgrd2hwTjZLOFZaTmUrd01la3RHVDVQY0pUdTRFVXRqVWYrZSs1eU1ScW9XLzBzbVJITElGaG5yUDd3UWlLUVdHSUNCd3NOTXdORHExdGYxY0tET1ExY0tSYS9lYUhEdGw5K251OUFSYW4xNUtaaW91N1IvYlR2VytqUGRrdGM3UnBZY2MyNkhaR1Z5cnhGYXp2K3pHUm5pYVNmajdiQU9lVHR5QlZ6eTVyWjhVYjRVZTRDdVhzTStaakplSWRzd0I1OWNOTWRuM01oRjMvdDBMME1TT0FiSUVMQ3kwTnduaThxN1E4R1pMTEs4dEkxbFp6K3dpZis5WklBZFQyVnYvdWlzOGxiWlV0eU13aFc1RGozY3BFZ2t4RllCeHNheVRXUDIvV1o1TFVhdCs4cTQ1Z1V2RnhaVERuME1ZdE5vNGhpTGY4RXVGS0c5YTBOMHRzenkya1Ezc3N4MTNFcnZ4MENqVXVaV3FlNVZ6bWdBYWxsWjBTUjc1dHlRS1IxUVNyT05HUWsrWTFXUVpVSlZBRXJ0R0EwWTVweEFYRnA2dm1LMGVveE5BditrbjhNYlVodFpDVzRGenFmWGlJeXl2TFNOWldjL3NJbi92V1NBSFU5cnFWT2txTWw4ZE5paU1yVDdoY3NGYkV4WXBOY1paQ3VHSFJqTlZJdkx2SU1vQ1g1VUtCbHRGT242U2RaMzdwd3Z5QXhCUlBpejRKVjZXdjFvalFwTDlVSkFmZ0xwc0pzWFpSUCtFN0lLTW4zS2p5c0I1dS9jajd6TG0yWEc0d25jV2x5cEFvUTE0RFlWc1lab1FXY2FsZ2xxRGxOV2dzWWhsRmpGZDdwUEhvQm90cXVhNXFLYTBwRlFmWEtpTHhES2s3R2ZMMnhLM0lIakt4M3lkVWw2dHViUXJldHIvTWxFSHBzclREc2ZJUHl5dkxTTlpXYy9zSW4vdldTQUhVOXN6QjNkWkt3cU1RaVg4c3ZLZEFjQ3ZoZzFLM0wzQTN6aXFiMis2MjkzNFV5eXZMU05aV2Mvc0luL3ZXU0FIVTlsV1N6SXlxRUE2V1lxU3FXUStieUI1SEJqeTI3QkdxY1lNY3JtZlp4aHBseXl2TFNOWldjL3NJbi92V1NBSFU5bHEzMWdIbGJpM3JLS1JyY3RZU01ibVJPZ3ZlWjRjei9tbDhjZ2hKR2RHOHl5dkxTTlpXYy9zSW4vdldTQUhVOXNmSWRtTUFkajByakpuL2N5NlYwMFBaeEZNSXhoMnBmaEpkQkJUaDdjbDg4NFhEbmJMdis4Nyt6MWtqVHRXa0NkUE91OGpSQzVPTnU2b1BENkdycm5yZDZTcWNodGN4bUZ5aFZ2Q2RuSElSd0hlbEQxbG9FZXNDeUQ1MDFIN1JZOHNyeTBqV1ZuUDdDSi83MWtnQjFQYVBJejgyMzY0eFVYRUwzZFVieHUzVlpTV0liTWhVVmRXV3l6UlZJaWE0QjMreU9TYjIxaVQ4ZnJ5bWlzMVppdWtodmQwVG1td2JNQU9lYSs1YVNrL2dzU3ZncXpsY2VqNFBTdVFQNG13elRXU1ZpSzVxa2JvQXJ5VUJrWE9mb3gzNFI4cEFKblBabEtNYzZiNVFENDVseXl2TFNOWldjL3NJbi92V1NBSFU5bVJUVUF6TnJBWForSEgySUpHY1VtTkI2by9HQmxMMzluKzNnSGRaYzhnSHl5dkxTTlpXYy9zSW4vdldTQUhVOXJnTHZ4aVpMZW1qdERKZHFLSkhIS1BMSzh0STFsWnord2lmKzlaSUFkVDJLVDBINk84ZXZ1TnJSS0M5Q2NKQXowZDJ5VmxKRDFiS3kxWXJkMXJ6c2lhY1BiYWI5azZmbnRkZHRoNW9QRzllV0dPeXU3TThZWWlNaUxwdU1wQTcxU0RWUURSbXhqQTlXRUphWEtQNjl3UDE0NDkzZ3MrY0hHNEdGblo2N1VoY1B5ajNGZnZHN0dVUGlyR1lYSE1YQWNtTFpCbnordlRlOHhzb1Y0aFQ5Smszd3FFcnRQVk5UZUYrMExDUmxmeUx0bTRIL0dkV3J4SW9hekFvVG5ibjhoclhjdTlUOFU3bHFRb2F0aHhlbEovTEs4dEkxbFp6K3dpZis5WklBZFQyUWwwb0hiUmJRQTI2V1dpNWV5NDRHM0IxLzh2UW83SGJxdll6eW1OS0gwVDNpbmpwU3orRDZLNVljRGF4MGU0UVA3K3pVVTFRVzAvMHl2U0tPTEQvd29HdSt3bS9pclphVFFqMzMrUXNqSFEyZ2hmT1puS0lpbHVTRWJWU3YvVWxOQm5qcWs3eUFUWHpTOEZuQW9xdTEyekx2N01BRHoxSHJ1elVTVjhYK0pqK01admhBTytEeVJVUCtxVFYwUEN6cUQrL04yc05SM3FhaHljZzdXNmExbnRoRFBJVTByUlpwdkRxanhvYkpxU01JVlprcHV3OGxSY25sdVZDRTlvYVpWcVFGT1Y3QzQybG5wOFdLY1h3bU5FcGg1VzFHQzRPNGhWTklLQ3U1aEVLN3VGRFNYMGp5SlBhazlKMEVVYnpIS2FXN1Q2ZGdTUFE5WktKWEUyK2lHSElJK2ZLeld0bEdqTWJEbU1Ua3RydmNsNy9KTklyc0RtM2JHam0vcjRwRVRmekwycVNxUVhGSXpHc2FpL2l2TnFSb3JWWEl0L2hhOTRLYzJ3ZlRjdVpkL1duUVFMVThOWXgvV0ZDVGhFbmtiemxuOVlHdDYwZlJ4c0grOHVNREhCR1llWVpuNi84SCtqVVA2NEpZWVpMVWxtbVVXYW9oaVVOeSt3TzFzZFdTMGRzckJreERHeFVoL1FJdnJoSHZxS2VwUjg4V1UrWm9ITE44aEV1RGs5WWZrTmJ1UzNOeHduanJLYlN4NklKMXdFa1BIeDJVWDhDUHZnVE02cjk3bWc4SnoyUFFXcE55ZER1QncxUkhjVnloUjhOWmUrb0JJTVludmdESFFRYjB5TzdlQzZQQ1ZEQ3RQdHhxUTFZd3k0S2hlNStUYzBrdXFrU2hXb1NHeTRKbHhuMVQyZDlZQWtIK0tVWkdmSkFPK1JRM25DMXpZYVhaV0o0Q2JONm42dlpIamlsbG5CbndQNUR4ajBWWGY5Zi9KUVJ4cWdiWFVHNjhxRFp2QlBOdFJDRk9uUFI0RzJVOC9SS3NGVVpIdTN6d3UvVHkwWTZKY2R6amtMVC8wVG9WUUptTW1sUHJ5S0ZCaFQxUGhCSEZjdWxHZUVnaHZpNFY5Mno5VjVESS9vWUFoTkpuUW9HSExJbnlUUCt5OElFNG9IRmd2KytLWXduMllDQzlYOWVTMkxGU1YwdkROZEtLSHZJRDh6S0VqeEhNdXRnN1hnZHFYZkJVVVYvcms3ZjhMZnU2QU9iZXFsWnZPTmpmOXEydk1lcG02RDhaK3VTQ2grcENKODRFM0NlKzJ6QjZpTGYrRFhZTmNxSEJTZ0tGclJwZU85N0cwTUxhVndrNHRRcWNUYzBKTmZJbUR6amhPcExqbFFYSURHcHFBcGQ4bitnODZINnUvby96WXZNajNSdnFPZWF3VVQ1V2c0blNlc2dsNWNyQjBCaVp0eFZsNWNTVWJWMnRpc2RPZUN6SEVYUCs2ZE40VDNicFZUcmZOVmtEdE1DcWRDcnhvUXg0TzQrdlg1a2ZtaFhtaWY5Z2tDNGpyWWUxVGxYQ2xsSklUUkk1cEIrL2M4enMrUzJRK2dTamVCUXBqSnB6a28yQkpSN0o0N29YcUNiV1NpUitqc1VaaFQrdkNtaWN3TXgzRnJSV3RyRjJJVTRKaUNmOE12c0ppUFkwQTQxaXlXSzJNaUp1TEo5NktYUjM2eHl5cG1HaXBGekZPU1A1SUdDRTJsS3FzSXo2V0F2dHVSM1RTM0tISnVwRGk1b2wvUW14V1pzTFVEQ3FYR0hOdWNlRHRLYzc4cHRyY1FTam1ITWdSTHZYZHJMdXJhYUkra3I1TlVQZ2hxMEE3TTZNWjZocVhTWUh1bGI2a2lHcTJJUEJpczRaM1A5TkdqTUNkTURoSXJDMXprVjhFUU5VdnprdnJWU0pQeVRndHdJOEtCL3FjYXRjM1EyS0xWY3I5Wndua2NxVVh2Ly9ZYU5CbjE4TWNJcUVPMDhJd2hlTEpYUkU0RFA5ajhXZitsa0hzdlBBRFJZSVplVDA4UTFRb3piQmYzU1J4cVFCV2x0bUlqSGhRRHFCT2xoQmNQREtxdkVMRlNjNXY2V0FIelgxWVZ4a1RDZWtxQTlxSDVCL1NmbVVweTN3eVJQTkNzZE9lQ3pIRVhQKzZkTjRUM2JwVlRMSzh0STFsWnord2lmKzlaSUFkVDJDTTI0c0FuVkJ5T0hrZko0WjdISmxvQnZOa0E0eVJ5c3lHL3ZVTll0TXUvTEs4dEkxbFp6K3dpZis5WklBZFQyeWdpbzhoVWVKZUY3ekk4ZVlMOHJaSDBEQnpFeUtxTGZBZFhRdVZkb0xkYWFtNXFkK0tlZ2trRVNPRzhrUVFlcGhuYUZuUDJsb0FEM3JuSkVKRlBvVkZROTJma05yeG4xemdhSHcxVDVsNjJHZG9XYy9hV2dBUGV1Y2tRa1UraFVOdkN3bUUwRXVNa1Y3OU0xUmlWTlZSbk9HUlpBeG01dXFVOW9sMTFDYkZyWFN0blJiYy80TkdUSDhVYjg4cGJBSElDNzNWM3dPNEtERm10aUJvYVlCSkhuM1VjYlF3Yy9raW5PYTNTVGxJVFNwRWRCNXhuR0NCVG4vNEx5cnRhbVJYLzlHMWIwQmxPWVhnbUdZaHAzYk5JZmdYTVpYeEIzMEhJUU5oTm90Z24vbEE5QmhTRlNobkwvTk4zeVA4UjdFeUFnZmZRSXlWSkh4Q1dySnpwQm5hQWtDWXJaNGE1STllNGsrOHNjblZnL2EwdHJHZENHWWNEVnYzbzYzRjgwRlI2azVFUDFVRFo0S2FGNjgzcWY5RzNzU1hBVkFQTUJ0U0REb0xlaUtUMkU2cXJyTlZqT292MUlFbTB4bHp1Umk0KzUyU1JlZHNCNGlpOU5QTkl2UE5tTXRxMmxwQmtaRjUyWEViZHk5eFRUUjh4QW9xazJIK2EwVUNxNlB5cURJbUJQQXZ5aGNhZmJiem5wRjMzWGlFUEZCaTc1TEtMNldpeHJlNnBwVHZqVXV4SDlhR2NMRngyMjdETWs3aHJoZzN6Rkh0L2hRNUR3RTU2TXEwaS9oam5FdVoxeHlneXFjL3RoV2J3em1Ici9CZTN1cGQ2cDZzZ0d0T0x3V3dwN3liL0t5UlJHSEhyUEFBYVZTQUNCT3BWYm5rcEx1QUZaTnVRZHdaTUV5amF4YVNVQWx6cEg4SUUwSTlXc2VyTE9aTWZ0TzNybmFCcVNhNG9PSStadDhrSHQ5OFlVb2lCcE00alA4ZHZZODcxN0Q0bngvT2FwblB5L29mT01IYXh0WW5WSDJzU1dkdlRhS3d5QmdYVEZqL2lhS0dRRzRvelUrbkRtY1EyVVFDNklNcnZLY3Z3ZnZvaVo2d2ZsYVg1Qlp4eW9BWVlBQjNGdG9icmpiSjU0aVlHbExLUDZzQTlBWTlMS3hVaUtPZlpxWncxWUdjalhCR3NZWnhrQzVUQWtXZ3E0Y2lqVkJKWExaMjFJNFBkQkUrZ2dPSGR4eFhqb1NYaFlZYXFuNnIwaXlRWEpZS3kvNVdza2lTZGk1MzlHdStWd2ZQeVJMRzJEN0NVbzFMNlNJRiswZllmMG9UT1dOMTNVUElUbzUrdmhaUzQ5ZXM2NGhnbzhzblUrbXQzWHgvMFAzRWQ5ZG1kdUhvdHJ6QmtFdGtUUzhKKzNVSXZsUG1ZTlZHZnZ2L3FYZ0tTK3NCN21sY3pzc01JUExueUw0aFkvd2hzTkJQTXl6b1pqeU5DbHdGR2dRY2taUzllbjdpWmdyYVpWZjFVTDFwTWVDcmdWSGZtRjdJOS9jZnZNZFZDWEhxQlMzV0ZSWDlEQ0p2ZFdBNngwWkR0UnlPMmlrTVdPaFRZTDc3Y1ZRSWhqaTNOUWJISWxVKzM3YnQrWTVSL3Y1QzkxUE5FQmJ6dXFBSTJWaW5SVU9RSFNiS1NZdHM3NlZYaVFDVzRqdlVYSFVXQjlTTnBUdVdib25nTWVmc2RuTnBmdEFPVnNRYmNJNXpmTXFrejFPMmtwWVVJcnUxN2VhTEtLaXJQc1BhZ0VtSFpTZTZsUlExbUFQaXFFMWVGZWpPUDRlQ0FmVUVKbVZoTy9ocC95RkFtNUpiM2k1V3c3cG4zWmY2WTFNRUZZZGgyc0cxaXQ3TVZTQmZETEhQcTNaMGtmdGQ5alJ0c2p5ejJ5UzRMZ3JtSjdKT2hxOEU4VlhTdG91Nk1WMVY4RmdZV3VMS1FrQVExNXYzSC85QkE0S2c3UmtlbVlHelY3eExrKzc5MnNSL2lIOE52eUhZNnV6S05nak1hcXh6a1lsVGtoQ1FVdEgxZTkrY2pnMFZkYS94N0JxYzhqTjdmc0JMM2ZpT0QzS3hqL0R5ckNUSnhzUmVsSHVvWTNTNTdoclBjMXhrSEo0RmJyblpGRW16MHdDSDROYkZEcERXZ2JzSkt6U29Tb2VuNDJ0UWpLYVRRUzJWQWwreVBGeVBzbUF5QzRZaHpnK0VIb3hWa3oyZHJvWEZYL3hnKzcwd2J6Uk5jVHYwQ3E4NFE0YjNwTWNwa1cyZGNFMG9lSy9MT2E0VnMrRTdOMlYrY3ZWMlpJNHpiRzFzaFB1VnlsSGhJZ3hoUE9vTFJwOGhuY1dUZ3gvdm03VU1zQ2VHcVN4NFJ3alRNbVVWRjl5T3YrN3M0V215UlY3TVVBMWZqNHI0TUNjdnZONGNzcnkwaldWblA3Q0ovNzFrZ0IxUGE1Qk9hNTRGblZUaERNYVczRmpSbHpuVkkzYXV1dFNKeGxJRmRaRUJBRzU3bGEvS1ZDNkZRRC9FQTRpN3NwcGJRbDExZEUweGNLNVhqc2lJZnFTTTBBekdaR1Vxb1pPOGhxdCtYcmxrSGMwajdlWXN3dzA2SHVrUVR6VUYxUHR1UmhraHNlQnYrK3pQcUpNd3lEUGhqd2RHVlM2V1BZU2tuYlRPam12R2pjbTVjcTFOWW9FUnVGWGJUVkZtVC9GV2V4YkRBK2RsZFJEekd4UnREVHNkdUF5eXZMU05aV2Mvc0luL3ZXU0FIVTluZFZ1U1l4K3dXQnd4bFlBQjU0Nzc3T2xETDdEdnp6c09RbksrL2JDYzRuckRIYVpsenlpQ2JNUEJEeEM2YXN5YzZVTXZzTy9QT3c1Q2NyNzlzSnppY0pmVEJBU24zK3F1Q2ZIeFFRTHViVHl5dkxTTlpXYy9zSW4vdldTQUhVOWdxeVBDMlRPS0NoOVNocENNSGxZSEhHbUp5cjFObFNEV3hkYXNOOE5JYlNXMVYyNm9pbEZZeVhGWit2N0VIRThBMHErTG91RUxJeUVCTGlubGxzRFBQSG5NU21nZ3hUUjhjVGgySUd2aDBLLzh3MFZOVVFNbkVlTzNsV1JhSmdTTXNyeTBqV1ZuUDdDSi83MWtnQjFQWUZFS0tDYjJLd216Z0d3dlRhalNiWFhVME9zK1lNbXZlRkdJZ0JKQzNVY25ieG9TcXl5SThtdGRjZ2FkaXpMY3pMSzh0STFsWnord2lmKzlaSUFkVDIreXRhQWlybWR3RGZsTUo0bTNZNGF2NWVoN3NzdjdabG9PamovTEtlUlZIRFhWWlFRYTFuTmZWbWZOWFhTK0pEeXl2TFNOWldjL3NJbi92V1NBSFU5c3NyeTBqV1ZuUDdDSi83MWtnQjFQWjZET2wzVENWYVo5UGZON1luSlFZZ3l5dkxTTlpXYy9zSW4vdldTQUhVOXNzcnkwaldWblA3Q0ovNzFrZ0IxUGJSSmtEajJTVUo0aTNObHZ4Rm5FWi9HS1ZRWDNvcXJwWm0xZU5WeVB0b0lJUDBHNEhyald1OGExejV3bVJ5UWNQTEs4dEkxbFp6K3dpZis5WklBZFQyeXl2TFNOWldjL3NJbi92V1NBSFU5dmJPNUh4SWVSaC9wbGVCTisrOWFlckxLOHRJMWxaeit3aWYrOVpJQWRUMisrOGt5QnFPdXR2S2hRQm1HbVpoT3BGODhMNTd3MWZkRm1uMi9odEd5S0hMSzh0STFsWnord2lmKzlaSUFkVDJKOWZVRWNTSFd2azhmcHludytCa1lJVjNqRHA4MWY0b1dyRmtaZjl0K3EzTEs4dEkxbFp6K3dpZis5WklBZFQyeXl2TFNOWldjL3NJbi92V1NBSFU5aGZ0TWh5NWU2NHNTbE9PMW9NRWsxc3Q5eFl2L2JyZXZhOGs0VGtzTFZJdnl5dkxTTlpXYy9zSW4vdldTQUhVOW1xdUVIN2dlWmV3SmIxRUV1SzQrcC9sNTJJWmJlY0Mxb1lieGVkZGJ3V1V5eXZMU05aV2Mvc0luL3ZXU0FIVTlsU3RuVW5tNlBrdjQ5MWk1b2Y0NHl6TEs4dEkxbFp6K3dpZis5WklBZFQyMkVZUkc5ODhVdkExRU5WbHJORGRqanVDOFMzQkR0aC9oT2tEUU1KTlhSRTBHZU9xVHZJQk5mTkx3V2NDaXE3WHl5dkxTTlpXYy9zSW4vdldTQUhVOWt1bk1TOEErSXBRTjRtZU1QbDJ3azdKc01nVWQvN0gvSzVxRll0VUphUHA5UG0zeGNmSWUyQVlOTkFETE9uSWlodDJ2ZU4xS3Y1UXZpYlRVVVl0eW1CVndRM0F1Vzh5S09hd2VhUUJ6RGtab0piczVMWXJwemVCVWFqNGRmVUhQb2ZGdmZYbTAxd0psd3pFNWVTSzZlVEdmL3NtbzQ2aHczVXJjeTY1U3g0UFJoQ2k1VERzTW1xWWhYTDJDbXRENzU0VHBuOWxUcE1kZTF6ZjA1MS9FS1VjZFgvTHlEZzY0eStZbmVvOFI2NW9pb2V4aTRuMW9sb01CSVYwYWVnaW1XNTExbzRYaEIyNDFQdFp3Y3ZZcEpFVEZJV3ZMMEJFZVNGbGdBTUUzbHJyT05jSVd6eU9nQjAvdWc2QkZaWldUblpVaXZ5dHBBaE1XN1E2SlE5NHdLM09sREw3RHZ6enNPUW5LKy9iQ2M0bmpGb2NndlI0Vk1YWTBTazZTV2VYd2QxY0ZIeGdsSlNJN1BseW5oMkVFYS9MSzh0STFsWnord2lmKzlaSUFkVDJwbTlLbW0wL053K3FwLzJ0eHBSOGhpcFFsejJ1TXNTMkdWb3dHY2JWU3pxT3ZtcXRZK0JaNFM4WW94elRWaSs1eXl2TFNOWldjL3NJbi92V1NBSFU5cU5WNEc2RUpMcEo2cktnK0hsR2JSTXRQU2ZXdlB6ZVJncWZkRjNQdDAxTFo1a2J4Vmo3MGE0QUdLb1plRTAwNEpxYm1wMzRwNkNTUVJJNGJ5UkJCNm14UktrOFJSUzZFalVteG5HVlJPUUh5eXZMU05aV2Mvc0luL3ZXU0FIVTlnMVk1MjBjeFAxUGVFekxJWkVIbWZIdDVsQWNFVUVZZ1E2cDZWSW5qTFNMeXl2TFNOWldjL3NJbi92V1NBSFU5aG5pdG14SHQ5R20wbVlORXZVKytodzJBQWJSTTBDVENXMUxhOGFDMVdjNXpwUXkrdzc4ODdEa0p5dnYyd25PSndhaHdqdStoVVM2bXJLRzNOdG1zZmp1NTN1MngrZklFOGhUQ2V4bnI1eHZVY3U0Z084em9BbGlEWUY2cWpqNWpYWlI3U3JxcnkrelhuVnB0VEtJVFZiTEs4dEkxbFp6K3dpZis5WklBZFQyOTRwNDZVcy9nK2l1V0hBMnNkSHVFQ2ZYMUJIRWgxcjVQSDZjcDhQZ1pHRGtDSDQxaGZ2ZGJOZFBiKzV4Yk9wRklOVkFOR2JHTUQxWVFscGNvL3IzQTkycTgvUk56RmV5UE9CMkRVOFo1NURMSzh0STFsWnord2lmKzlaSUFkVDJsV3VpUXJIK3VadTdXcVZiM1BlS3A2VWxLczZtSVdyYThrSUlXZGFCaDZuY2RPUDB6ZnBwb3EyRzVSTUNzNGdUeWpib1ZEc3lDMDJqRmFKL0Q3eGZLbEtGRVdpVjluN2FTTnNJWkRneTRSTnBlc1R2M2xzQ1VxTThzRnJXWEV1Vk05SjJsYS91bmRrcjB4VEhBazQvQjNieG9TcXl5SThtdGRjZ2FkaXpMY3k0WDAzcXMzQi93MnBqam1JbjZidnl6cFF5K3c3ODg3RGtKeXZ2MnduT0p4dmFlNEVEUGtIc2VvWE5NNzV4Tm5MY0xpNDBGclB0Ny94UWVSU2FLdE9JU2U3dVg4SmkrRUo2aGhvTVFXUFdicjMxbGlyMVJRVEZQd3ViSVNGL3JMd1F6TWxJYnBRN2FPZlcxUEtGN3I3cmdGc29MQ1JycWphK3NwYW5DUDErVWszcDkzVWFqNm1LOUYzK0diSmNPVmI1bjJieFNocnBRWEpSNWZrMEpnZE0wcENYZTM0REROS2gxUjNmNXJIN0pXUjJRM2dZVS9OVEpwRjc0bXUveXVCQ3pWUjB0aUFwYnlNQWtuUGIyVUxad3pEVTExYTJ0UVRpSWN0K2JCQmxHRFJrTWxQUVc4aWdVeXhTV2taZ3lNM0xLOHRJMWxaeit3aWYrOVpJQWRUMitFSmlCcGY3TW5sZytJVzcrQ2ZYVEU0dm1CT1ZsMzdRSkhuWndFRXdvakJTZndaOVgrTWlhdnkxaTVCcVdpSEpSWi9URXloR0NPalQxR0VxNEJJSURFaTdtTFRYYXRNNit6akl3S0pZbW9iT2xETDdEdnp6c09RbksrL2JDYzRucEw3YnF5MVBFNGRxckllVGJHYjZ6dDVlU09JTXU2TVlLb2lUUDh4MW9UZ05Ldmk2TGhDeU1oQVM0cDVaYkF6emdyQkVya3Vmb3pmeEhEY2JkK3B6MFVRYTJQcnh1QkhOOFNXRVZyQU1RWU1Sbm1UYlphMEpMYjVuT3ZlQVlPNzF5eXZMU05aV2Mvc0luL3ZXU0FIVTlwRVp5aVFSdDVDc0dHeVJtaUMwSHlsU1NLZFJ4S245K2dESE8yOHUrdEk5TjdMdmZjZXlSdlNsMVdjTjJHNXA5VE1PN1lXWjdhQ0lRckVwY2lzOUV2UExLOHRJMWxaeit3aWYrOVpJQWRUMlUxd1lveFZqNFZpR1JERWJBS1d1Z2ppZ2Z5VW9UVE9lQzZQeEdlcWt2My9lYmplSSs2NUlBQTFEK2tzUkQrT1dOQWE1T2tsQXV5MHJnS1hoa0dzYWw2MGMwcHhoNG54WkpidVdGVTdTN3IzNXJ3RmpEdERoUCt5eXFjY2NPNG1ZcHMxNG9Ocjl6YVRyZElHZmsrWjlERVdTY2dlakdGdGFhWDJXc1ZNTWhGY3F6VmtYRC9WUzkwM2ZCMmxEdW4wcHl5dkxTTlpXYy9zSW4vdldTQUhVOW50dkZuQ2l6ZGpBR2RKREl0L1hSTGJMSzh0STFsWnord2lmKzlaSUFkVDIxeVJXMWU5Z1VKWThGQ3ZlaGxkMmtNc3J5MGpXVm5QN0NKLzcxa2dCMVBZNnBadFQyZUZDTjB4V3Z0citMdzcvbWg1UXFkcm1uWWdEQnkzS0hnaEdkY3NyeTBqV1ZuUDdDSi83MWtnQjFQYVN4bHFQb3JLSWFERzJIN2YyOFZFakZwQUlMdGxYWWg2T3RuNFZhdnJRTUtWTVdobVFKSXZqWFU3am90MGhJUVZ6UnV1UnpIYnJFdmZCZzU1ZWV3R3F5eXZMU05aV2Mvc0luL3ZXU0FIVTlzdkFVNXo4UlVvUWNVTVMwdjNIZTlTZWlDTjhadjNuc1lPWmhJQ1BDQVRoYmV4a0wzUWJ1dFJCdkZjM0g3M293TFVrUkJZNFdPQnpqcDBmS1FSNHBUY05Ldmk2TGhDeU1oQVM0cDVaYkF6enYvek9JY2hLOXZiU3MrY2NoOXZoZFNyTldSY1A5VkwzVGQ4SGFVTzZmU25Ya1dpU1V2TE4wSitJSk51MWVSQ0dyZlNtSG5zeVZBSitUZkVzTWRGaG1CR1Nhd2JPUWZHUXdaSTJuME9MRWFYeU10cytja1RpRjJHR1ZqSlJLQU5qbmhlcWdvN0YyK2RrZ2ppbExISEMwVC96NjFOUndEeU5pV1JHcWdWWFpIandyRElFby9BT1ZRazhyM3UrWW4xeHdpVk1OR1VLRW1jeWN3bE51RWErZ01zcnkwaldWblA3Q0ovNzFrZ0IxUGFRWGh6VkZhdWVhUExvNmp3MGVraSt0V2lvSmI2czVZWkxjRXppVFZacGZQeGVMT2FnVzdES3Z4ekZMQUNndEtYS3ZwdFJSSmpjMGVQa2wxczI2b1Qwc0R1YkpSWDZJRFpQemo4dHdRNlNjZ254NEdkRWI0T1JYWEd6cEt6TVhqcE9PbnoyRTFRN0h0REZudTN4NC8rVlVWZlV2cXRCK3BYNDV3VTUyVmJVUGNSL2VldTlLM25WTGN3ellITDBDeE93aUpCVFBYUzR6SS94RWllcHpUU3J5eXZMU05aV2Mvc0luL3ZXU0FIVTltVDVQY0pUdTRFVXRqVWYrZSs1eU1TNTFRaStvbUh6bURxcnpESnlXZ0NMdCtJL2VDNnFyWkNRbWxDR3V4WTZJcm95VUUveU9sdmZVTUNTT2NMa3pNekxLOHRJMWxaeit3aWYrOVpJQWRUMnRSbUl0RGV4N3RQdFBUZ05DWTM3VU1aTWRiZGc3L3laRS9qbVBMODBSUXM0K3FCNllad3J1ZzQ1R3Q4MmJIWW9yOXFxaDBHeFB5bysvczRxU3psNlg4c3J5MGpXVm5QN0NKLzcxa2dCMVBaSUQ2YUp1Uk9sN0ttQklmMEJXQ2xiWFBEWWQvQXN0R2I5V3JoVEJhWXFUSXNnU3B1OVBwUWlFVitGVHByVjlQSDFlam9ZT0JJVmFPcjFFM2RremZsaERrZ1pDcjJHZU5zYmxjQUlTRWZWMUFqYTlQV2ZaZjRsM3NDS3ZHVzB2dlZUNkpRNEZTRktOdXRiOUJ2K1F5SmFidDZIMjdvS3hFaHlZazBLN2JZVmcyVDdWUEF3OERsRUFOV3ZMMkp2eW1UTEs4dEkxbFp6K3dpZis5WklBZFQydWVFZlFqcXE5Y3ZQMFVMMWdaZGJmb1o3QVY4bnhlUVFUTkdMK3oycHVxZkxLOHRJMWxaeit3aWYrOVpJQWRUMlZLMmRTZWJvK1MvajNXTG1oL2pqTE1zcnkwaldWblA3Q0ovNzFrZ0IxUGJUL2RyQ2dQVWl2dnpSN0tuOWR3anJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlsVXZsZmdSeDRRbGdiVmx1Y2U4QzEwWTIzMnZacGI1RHptb2NVbTJMMEI5UE85eTVjZ1N1Q3ZVUDgrNkFXYUU1UWhxeWEyYU5yY0MwWm5xY1h2clRXSU9IS3NlYUtkNUJFblR5N1ZPWTA2cHl5dkxTTlpXYy9zSW4vdldTQUhVOXVBOTFkRExYc2hnVERhZG9JNGVOOG44RFFMSUVzZ0Y0Vld6WWR3ZkdMOEZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlqKy9zMUZOVUZ0UDlNcjBpaml3LzhMVG1nbEQ4QSszc1RabzJXL1RQTmJycW1OY1IxNUN5NWY2YmVoYndTdmNKODZVTXZzTy9QT3c1Q2NyNzlzSnppZWw3QkplUWVpZmNiZG4wYVp3T0NmajRlVXRCYlVYVEhYZDRMWTBOVHlZdThzcnkwaldWblA3Q0ovNzFrZ0IxUFlUOVVwSmlPVzJBWmUwUnB5Zmx1MG15eXZMU05aV2Mvc0luL3ZXU0FIVTlnTnc3SlZkbnN4MEh3OWdiK244T2NwUE1oTkJnM2dMc1k1NS9uMkpFcmMzeXl2TFNOWldjL3NJbi92V1NBSFU5aTFNNVZiaXBYdEEyZnVWZFBYV0xHekJ6TVQ4dWVwd01XeU9waVNWdU1KWmFEL3N4cHptamhZcXppdVVwYVY2Qk1zcnkwaldWblA3Q0ovNzFrZ0IxUGIwK2JmRng4aDdZQmcwMEFNczZjaUtJTlZBTkdiR01EMVlRbHBjby9yM0EzYnhvU3F5eUk4bXRkY2dhZGl6TGN6UVRhTVZTME4wT2tVdkxqUDFVaXRqc0R1YkpSWDZJRFpQemo4dHdRNlNjc2t1dDAwQVdkeVBpRWkyZEw4YldXUzVBMlNYeU9zemhzUHRpWW9XWGZRUk1aNEF5YXJ1WDYyblRoaTh2Vm9UOWpxTFpSbnc5Q3FTaTN3cGNaZnI2Q0FKV1N1Wk5jeXNyS293Yi9CYkF0cFMxeDhKcUlHdE9GNkUxeTdSN2RJcUVld3dWTmFDdnAyWmlvbFc4WWtaaVVOaDJLSnNIRnJnMndIN0FVdFZNVThkQnFIQ083NkZSTHFhc29iYzIyYXgrRDlNa2pmK1lCc01oa1hZcDRsbGdVMzArYmZGeDhoN1lCZzAwQU1zNmNpSzhxSVUrUTRzbU5YaHpGaXBab2lwSEQwaGptNTd5Z1hYendNU0VlM2pDT1pKaGVRczhmRnZqeGN5L291MjBYWXRYUk9KQlp6ZlB5bFpiZ3BCY1lXR3JNT2tkdS9Qcm5tb1AzRWxyRUtYb1VYNmk3Q0lpM1VkelVxZVEvcndKa2tKY0praHZRK09SU21VS1hrQXFWdzlhUWszTGJmL2RQK3JyeXVhWjdEMEFoNXRsSFp1K1hOR1ovc2dhLy8rQUg0R1JON054aFRXOHcwZlRwVEtLdnE1VnNydTlJT0RTQkRZRmFDblcrMU1VQThDR2hLUWxUQlhvRlBuQlBCK0swMUEyMWh4cFU5RkFYOWMvMHZBMk9sVU5mMjVhUk4vaVdiN3VmWFJXaGIzbE5TYmZkYXM2eHhWTGtqbEhoZ3RDT2puTHRFdWJzMVpzYzNyc1JpcTRmM1dkbnF2a2lOT3Eya29lMXFVNU9UcmJmVldxZzk4REV3NkFhUDArNGlTV2IyS2gvUVVOV05sN0RQZXN1OTFxbTNhZ3M2VU12c08vUE93NUNjcjc5c0p6aWZUbGd6NnpwNGhHZVVKU1BrV2EzaldkLy9WQkZMdjBGcHoyeVJUQ2RCd2k5dHNGNDVLU1puOU5DdW04SEFsaWZpM1ZZNW4wYjB0TTNFUE13NmtHTkJmeDJEcVZ1MkhCeGIwMUpUVDFNejdwRnRWZHVxSXBSV01seFdmcit4QnhQQTlrcWd0MFJYUExORWp4V0FPR2w4azlvK0FtVTBpa3JSRzNpdUtUM3BudEZ0VmR1cUlwUldNbHhXZnIreEJ4UERMYXhGNDZHMTgvSDlobVZGQUs2dmVFMURSQ0NpMEw3Z3dKUkVRenoxRjduS0ZIdzFsNzZnRWd4aWUrQU1kQkJ2aEZ6TUE2dUk4YTcxakNFMmV1cGxGMTZSZXRQcDNtSk1za2dGUWkzdHlPOHNyeTBqV1ZuUDdDSi83MWtnQjFQWXBNV3YvMDZMYXZXQVZuWVZrdmorUU12cEVEQ21BanFNSUExdU5DNElhOXp1QzhTM0JEdGgvaE9rRFFNSk5YUkUwR2VPcVR2SUJOZk5Md1djQ2lxN1gwT3JtakNLVlhRL2Jkem1Eay9veWpiYlJ2dHhxd0hLQ0p2REY0R1Zva0JwQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFSTJmL2tSMVk2WVc1V0Q5cGxXbUQxcjMrZkhqY01pbDd5N0hrYzNsUVpuenA3dmZ0cnJLM3p5dFczSU5Zbzh2WUluQ3ByNndCOVpxYWtZZ0xEQnM3QXZ0d1JhL1hpdlE4ZWt1YTdPM2Y5SnpDcG1qZnhFNTFTUTNRWEMvL3BLMjJTU3EyUWhwMVQ2VWhLOFpMcmUvMDRTcklFQkgvSHFYTUtCL0FLUlZ6bHhWZjZWSVQxZnNLeTFwbkQ3b0F6NVl0VWN1NGdPOHpvQWxpRFlGNnFqajVqUlArcVdxcXcvcGVQdmZZVjNteSt4QXhpUitxRVYvUzZ2bzMya0NYdHBJZkVkMXJ1UTFVMXV6V3Y0SlFIaHNUN3M2VU12c08vUE93NUNjcjc5c0p6aWQzQkR2WVdrb1VwNVN6MThDcy9RYnpOWEFpSmUzZVdtSDVzdnVzSi83YmxtamNUQjlGTHA2RnEzaXJJNEI5bjl3MWNDSWw3ZDVhWWZteSs2d24vdHVXQ0Z2cTRHUjhyWmF4QWhoSUhKYU9obmhPempmK25EazVrRXBQZmpvUHBHa2tQVHROSXlZMG80Nk9WNlBKbHZ4NjNHejg5cmtjazQ3YTJWNnpLOCtMWlJSemhxUWx0eGRiaFd4Zms4UUt2SWpMSzh0STFsWnord2lmKzlaSUFkVDJwbTlLbW0wL053K3FwLzJ0eHBSOGhpcFFsejJ1TXNTMkdWb3dHY2JWU3pxT3ZtcXRZK0JaNFM4WW94elRWaSs1SU5WQU5HYkdNRDFZUWxwY28vcjNBM2J4b1NxeXlJOG10ZGNnYWRpekxjd3MxM0tkY0FSYloydDVuM0hlVGo0VG8yWEZDb3ZFTkJMNnJ4VkZIQ3lRT3NzcnkwaldWblA3Q0ovNzFrZ0IxUFk3ZmJrOUZIaXA5YzV6S1ZKZXNITGt5eXZMU05aV2Mvc0luL3ZXU0FIVTlydlZtRWRSTzVGM2lYZmJzcmZoZWNUT2xETDdEdnp6c09RbksrL2JDYzRubDB5d09kRXJlTjNiNnJHR3VLa0pOMmtWa2RFWk53UFlQa0J4OFUzWGFIKzF1YS8rQ1NFNkxTTWE1VFQwZysvSm5OdVpZYWJGZnFDS2wwQ0xydG44TVg2V3ZpYkkvR1VIV1QzMkVKWHhzZzBaUWd0VURZRkM2dHV5Ukdka095dExnd2NrZUNFdGwxdkltblJqNzZRU3F1SFk0RFU1anRwRlZWbzlveFIyWHVzZzlhbEZ0S1JFbmwyRmhnMnljemlVYUlURlFsM3JJU0JPWTZ2NUlXNXo4MnkrOHdtakhzRWsrcVFLSjdRYkdKaTBqeFEvQmVqYnlyQ01NcWFETk1JSmRkSkxha1g4V09SMkdGQ21HL21QMTZQS2hTOE4vS2xxWmhQTGJMYUNPWmVBVG05SUQzSnIxb0JBckUzNUN5RkdNRytKd2RtSTFaUmxhQXZnOVVQVndwbCsvV25QTTIxSXFSd3pwbllSUURiWWNKeXJDMmxHNGUzOForSEZIVGlPdkZRb3Y0aUNUaVAyWTQwSktQQkltQlZ5TzY3bmdvWVRaYlJJRCtoQm1DUFRtZ2xEOEErM3NUWm8yVy9UUE5icmV0dVdhYkV5N3ZXOHl6b1kwOGZlOSt4Vm5VSWUrUjVTV21GNmlDa2Vya2ZpS0QvNWt3QzFBWkt1b1BRN1gzTzQ0Q3lrWm81V2RTRklaK3pyY2tXRjE3MmhNbUx0UWNVWGpEUDNLKzZ5UXFBWTJHTnAyQk4yYXpOUERqUnpwZitobHpXY3QvRmVJbTVUVCtTMXhwLzY2ai9RTXpKUS9UMGlZU1oySGFFQ1ZpNGZranQ1eTQwSEFtenpTQVJOWldzT0dyUDRXTnF1WEJkdkdnbmtvQU9sMFRSOURVY0ZnQzlCYytZVFRQRVUvbEhtU0FPbThVbFpVQWgrd1E5bkhkRFJ4ekc4RkN3dDg0TCtocWM5WG0vZW8yUWdRZW9weXNQVXY0U2hkUmhwdjhCb05tamJneXdLMTMrcWxGRzFWaHlxd2t0U1MyZk1nQ1hpRTQvdHJwVGNudktMQTBxZUN3NTBpVlhsWmZodXVkaFMrcWk2TDA5TW1PbXR3VmdnbjFDR2hkR1VmOEhKSW1IUUpUM1g1RXkwaUE9PVxcXCIpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Zi/6YeM5LiA57qnXCIsXCJwYXRoXCI6XCJzaGFyaWRcIixcInJ1bGVcIjpcImpzOlxcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKT0+e1xcbiAgICBjbGVhck15VmFyKCdtb3VudHppbXUnKTtcXG59KSlcXG5cXG4vL3ZhciBpdGVtcyA9IFtdO1xcbmZ1bmN0aW9uIGZvcm1hdERhdGUoX2RhdGUsIF9mbXQpIHtcXG4gICAgbGV0IGZtdCA9IF9mbXQgfHwgXFxcInl5eXktTU0tZGQgSEg6bW06c3NcXFwiO1xcbiAgICBjb25zdCBkYXRlID0gIWlzTmFOKF9kYXRlKSA/IG5ldyBEYXRlKF9kYXRlICogMTAwMCkgOiBuZXcgRGF0ZShfZGF0ZSk7XFxuICAgIGNvbnN0IG8gPSB7XFxuICAgICAgICBcXFwiTStcXFwiOiBkYXRlLmdldE1vbnRoKCkgKyAxLCAvL+aciOS7vSBcXG4gICAgICAgIFxcXCJkK1xcXCI6IGRhdGUuZ2V0RGF0ZSgpLCAvL+aXpSBcXG4gICAgICAgIFxcXCJoK1xcXCI6IGRhdGUuZ2V0SG91cnMoKSAlIDEyID09IDAgPyAxMiA6IGRhdGUuZ2V0SG91cnMoKSAlIDEyLFxcbiAgICAgICAgXFxcIkgrXFxcIjogZGF0ZS5nZXRIb3VycygpLCAvL+Wwj+aXtiBcXG4gICAgICAgIFxcXCJtK1xcXCI6IGRhdGUuZ2V0TWludXRlcygpLCAvL+WIhiBcXG4gICAgICAgIFxcXCJzK1xcXCI6IGRhdGUuZ2V0U2Vjb25kcygpLCAvL+enkiBcXG4gICAgICAgIFxcXCJxK1xcXCI6IE1hdGguZmxvb3IoKGRhdGUuZ2V0TW9udGgoKSArIDMpIC8gMyksIC8v5a2j5bqmIFxcbiAgICAgICAgXFxcIlNcXFwiOiBkYXRlLmdldE1pbGxpc2Vjb25kcygpIC8v5q+r56eSIFxcbiAgICB9O1xcbiAgICBpZiAoLyh5KykvLnRlc3QoZm10KSkge1xcbiAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoZGF0ZS5nZXRGdWxsWWVhcigpICsgXFxcIlxcXCIpLnN1YnN0cig0IC0gUmVnRXhwLiQxLmxlbmd0aCkpO1xcbiAgICB9XFxuICAgIGZvciAobGV0IGsgaW4gbykge1xcbiAgICAgICAgaWYgKG5ldyBSZWdFeHAoXFxcIihcXFwiICsgayArIFxcXCIpXFxcIikudGVzdChmbXQpKSB7XFxuICAgICAgICAgICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoUmVnRXhwLiQxLmxlbmd0aCA9PSAxKSA/IChvW2tdKSA6ICgoXFxcIjAwXFxcIiArIG9ba10pLnN1YnN0cigoXFxcIlxcXCIgKyBvW2tdKS5sZW5ndGgpKSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIGZtdDtcXG59O1xcblxcbmZ1bmN0aW9uIGZvcm1hdFNpemUoc2l6ZSkge1xcbiAgICBpZiAoIXNpemUpIHtcXG4gICAgICAgIHJldHVybiAnJztcXG4gICAgfVxcbiAgICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xcbiAgICBsZXQgaSA9IDA7XFxuICAgIHdoaWxlIChzaXplID49IDEwMjQpIHtcXG4gICAgICAgIHNpemUgLz0gMTAyNDtcXG4gICAgICAgIGkrKztcXG4gICAgfVxcbiAgICBzaXplID0gaSA/IE51bWJlcihzaXplLnRvRml4ZWQoMikpIDogc2l6ZTtcXG4gICAgcmV0dXJuIGAke3NpemV9ICR7dW5pdHNbaV19YDtcXG59XFxuLy9sb2cocmVhbHVybCk7XFxuXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICBjbGVhck15VmFyKCduZXh0cGFnZScpO1xcbn1cXG5pZiAoTVlfUEFHRSA+IDEgJiYgZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpID09ICcnKSB7XFxuICAgIGxvZygn5rKh5pyJ5LiL5LiA6aG1Jyk7XFxufSBlbHNlIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIC8vdmFyIHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy94eXEvYWxpdG9rZW4uanNvbicsIHt9KSkucmVmcmVzaF90b2tlbjtcXG4gICAgICAgIHZhciByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG4gICAgICAgIHZhciBzaGFyZUlkID0gZGVjb2RlVVJJQ29tcG9uZW50KHJlYWx1cmwpLnNwbGl0KCdjb20vcy8nKVsxXS5zdWJzdHJpbmcoMCwgMTEpO1xcbiAgICAgICAgbGV0IGdldHNoYXIgPSBmZXRjaCgnaHR0cHM6Ly9hcGkuYWxpeXVuZHJpdmUuY29tL2Fkcml2ZS92My9zaGFyZV9saW5rL2dldF9zaGFyZV9ieV9hbm9ueW1vdXMnLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCJ9JyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgcHVzaG5hbWUgPSBKU09OLnBhcnNlKGdldHNoYXIpLmZpbGVfaW5mb3NbMF0uZmlsZV9uYW1lO1xcbiAgICAgICAgLy92YXIgbGlzdHlwID0gSlNPTi5wYXJzZShnZXRzaGFyKS5maWxlX2luZm9zWzBdLnR5cGU7XFxuICAgICAgICAvL3ZhciBwZmlsZWlkID0gSlNPTi5wYXJzZShnZXRzaGFyKS5maWxlX2luZm9zWzBdLmZpbGVfaWQ7XFxuXFxuICAgICAgICB2YXIgc2hhcmV0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmFsaXl1bmRyaXZlLmNvbS92Mi9zaGFyZV9saW5rL2dldF9zaGFyZV90b2tlbicsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX3B3ZFxcXCI6XFxcIlxcXCIsXFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIn0nLFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICB9KSkuc2hhcmVfdG9rZW47XFxuICAgICAgICAvL2xvZyhzaGFyZXRva2VuKTtcXG5cXG4gICAgICAgIGxldCBuZXh0ID0gZ2V0TXlWYXIoJ25leHRwYWdlJywgJycpICE9ICcnID8gJyxcXFwibWFya2VyXFxcIjpcXFwiJyArIGdldE15VmFyKCduZXh0cGFnZScpICsgJ1xcXCInIDogJyc7XFxuICAgICAgICBpZiAoIWRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5pbmNsdWRlcygnL2ZvbGRlci8nKSkge1xcbiAgICAgICAgICAgIC8vaWYoIWxpc3R5cCA9PSAnZm9sZGVyJyl7XFxuICAgICAgICAgICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwicm9vdFxcXCIsXFxcImxpbWl0XFxcIjoxMDAsXFxcImltYWdlX3RodW1ibmFpbF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2UvcmVzaXplLHdfMTYwL2Zvcm1hdCxqcGVnXFxcIixcXFwiaW1hZ2VfdXJsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAvL2xvZyhyZXNjb2QpO1xcbiAgICAgICAgICAgIHZhciBsaXN0eXAgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXNbMF0udHlwZTtcXG4gICAgICAgICAgICB2YXIgcGZpbGVpZCA9IEpTT04ucGFyc2UocmVzY29kKS5pdGVtc1swXS5maWxlX2lkO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgbGlzdHlwID0gJ2ZvbGRlcic7XFxuICAgICAgICAgICAgdmFyIHBmaWxlaWQgPSBkZWNvZGVVUklDb21wb25lbnQocmVhbHVybCkuc3BsaXQoJ2ZvbGRlci8nKVsxXVxcblxcbiAgICAgICAgfVxcbiAgICAgICAgLy9sb2coaHRtbCk7XFxuICAgICAgICBpZiAobGlzdHlwID09ICdmb2xkZXInKSB7XFxuICAgICAgICAgICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXG4gICAgICAgICAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBib2R5OiAne1xcXCJzaGFyZV9pZFxcXCI6XFxcIicgKyBzaGFyZUlkICsgJ1xcXCIsXFxcInBhcmVudF9maWxlX2lkXFxcIjpcXFwiJyArIHBmaWxlaWQgKyAnXFxcIixcXFwibGltaXRcXFwiOjEwMCxcXFwiaW1hZ2VfdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJpbWFnZS9yZXNpemUsd18xNjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJpbWFnZV91cmxfcHJvY2Vzc1xcXCI6XFxcImltYWdlXFxcXC9yZXNpemUsd18xOTIwL2Zvcm1hdCxqcGVnXFxcIixcXFwidmlkZW9fdGh1bWJuYWlsX3Byb2Nlc3NcXFwiOlxcXCJ2aWRlby9zbmFwc2hvdCx0XzEwMDAsZl9qcGcsYXJfYXV0byx3XzMwMFxcXCIsXFxcIm9yZGVyX2J5XFxcIjpcXFwibmFtZVxcXCIsXFxcIm9yZGVyX2RpcmVjdGlvblxcXCI6XFxcIkFTQ1xcXCInICsgbmV4dCArICd9JyxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgIH0gLy/lj5bmlofku7blpLlcXG4gICAgICAgIC8vbG9nKHJlc2NvZCk7XFxuXFxuICAgICAgICBpZiAoSlNPTi5wYXJzZShyZXNjb2QpLm5leHRfbWFya2VyKSB7XFxuICAgICAgICAgICAgbGV0IG1hcmtlciA9IEpTT04ucGFyc2UocmVzY29kKS5uZXh0X21hcmtlcjtcXG4gICAgICAgICAgICBpZiAobWFya2VyLmxlbmd0aCA+IDEwKSB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKCduZXh0cGFnZScsIG1hcmtlcik7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgY29udHMgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXM7XFxuICAgICAgICB2YXIgemltdWxpc3QgPSBbXTtcXG4gICAgICAgIGNvbnRzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgaWYgKGNvbmZpZy5zdWJzLmluY2x1ZGVzKGl0ZW0uZmlsZV9leHRlbnNpb24pKSB7XFxuICAgICAgICAgICAgICAgIHppbXVsaXN0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgZXh0OiBpdGVtLmZpbGVfZXh0ZW5zaW9uLFxcbiAgICAgICAgICAgICAgICAgICAgZmlsZV9pZDogaXRlbS5maWxlX2lkLFxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLnJlcGxhY2UoJy4nICsgaXRlbS5maWxlX2V4dGVuc2lvbiwgJycpXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG5cXG4gICAgICAgIHZhciB0dWlzb25nID0gW107XFxuICAgICAgICBmb3IgKHZhciBpIGluIGNvbnRzKSB7XFxuICAgICAgICAgICAgdmFyIGxpc3R5cCA9IGNvbnRzW2ldLnR5cGU7XFxuICAgICAgICAgICAgaWYgKGxpc3R5cCAhPSAnZm9sZGVyJykge1xcbiAgICAgICAgICAgICAgICB2YXIgemltdSA9IHt9O1xcbiAgICAgICAgICAgICAgICB2YXIgY2F0ZSA9IGNvbnRzW2ldLmNhdGVnb3J5O1xcbiAgICAgICAgICAgICAgICB2YXIgZm5hbWUgPSBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGZuYW1lLnJlcGxhY2UoY29udHNbaV0uZmlsZV9leHRlbnNpb24sICcnKTtcXG5cXG4gICAgICAgICAgICAgICAgdmFyIGlkeCA9IHppbXVsaXN0LmZpbmRJbmRleCh4ID0+IG5hbWUuaW5jbHVkZXMoeC5uYW1lKSk7XFxuICAgICAgICAgICAgICAgIGlmIChpZHggIT09IC0xICYmICFjb25maWcuc3Vicy5pbmNsdWRlcyhjb250c1tpXS5maWxlX2V4dGVuc2lvbikpIHtcXG4gICAgICAgICAgICAgICAgICAgIHppbXVsaXN0LnNwbGljZShpZHgsIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgemltdSA9IHppbXVsaXN0W2lkeF07XFxuICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgdmFyIGxvbmdjID0gW107XFxuICAgICAgICAgICAgICAgIGxldCBzdWJuYW1lID0gc3RvcmFnZTAuZ2V0TXlWYXIoJ21vdW50emltdScsICcnKTtcXG4gICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5zdWJzLmluY2x1ZGVzKGNvbnRzW2ldLmZpbGVfZXh0ZW5zaW9uKSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBjb250c1tpXTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB6bSA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHQ6IGl0ZW0uZmlsZV9leHRlbnNpb24sXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9pZDogaXRlbS5maWxlX2lkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZS5yZXBsYWNlKCcuJyArIGl0ZW0uZmlsZV9leHRlbnNpb24sICcnKVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgbG9uZ2MgPSBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5oyC6L295a2X5bmVOiBcXFwiICsgKHN1Ym5hbWUgPT0gJycgPyAn5pegJyA6IHN1Ym5hbWUubmFtZSsnLicrc3VibmFtZS5leHQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh6bSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcignbW91bnR6aW11Jywgem0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oyC6L295a6M5oiQ77yM5b2T5YmN5a2X5bmV5paH5Lu2OiAnICsgem0ubmFtZSsnLicrem0uZXh0O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHptKSxcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsb25nYyA9IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLlvZPliY3mjILovb3lrZfluZU6IFxcXCIgKyAoc3VibmFtZSA9PSAnJyA/ICfml6AnIDogc3VibmFtZS5uYW1lKycuJytzdWJuYW1lLmV4dCksXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgfV07XFxuICAgICAgICAgICAgICAgIH1cXG5cXG5cXG4gICAgICAgICAgICAgICAgaWYgKGNhdGUgPT0gJ3ZpZGVvJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICdkb2MnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TlicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/CflrwnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYXRlID09ICd6aXAnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gY29udHNbaV0ubmFtZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4sIHppbXUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYWxpbGF6eVxcXCIpKHNoYXJlSWQsIGlucHV0LCBjYXRlLCB6aW11KTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNoYXJlSWQsIHNoYXJldG9rZW4sIGNhdGUsIGZuYW1lLCByZWZ0b2tlbiwgemltdSksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBmb3JtYXREYXRlKGNvbnRzW2ldLnVwZGF0ZWRfYXQpICsgJyAgJyArIGZvcm1hdFNpemUoY29udHNbaV0uc2l6ZSksXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBjb250c1tpXS5maWxlX2lkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazpsb25nY1xcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcblxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+TgicgKyBjb250c1tpXS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGNvbnRzW2ldLmZpbGVfaWQgKyAnPz8/ZnlwYWdlJykucnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgcHVzaG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9ydWxlbG9vcCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaGFyZUlkLCBzaGFyZXRva2VuLCBjb250c1tpXS5uYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgIH0gLy9lbmQgaWZcXG4gICAgICAgIH0gLy9lbmQgZm9yIGlcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfmrKfmrKfvvIzmiqXplJnkuobjgIInLFxcbiAgICAgICAgICAgIHVybDogZGVjb2RlVVJJQ29tcG9uZW50KGdldFJlc0NvZGUoKS5zcGxpdCgnIyMnKVsxXSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuLypcXG5zZXRIb21lUmVzdWx0KHtcXG4gICAgZGF0YTogaXRlbXNcXG59KTtcXG4qL1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Zi/6YeM5bWM5aWXXCIsXCJwYXRoXCI6XCJydWxlbG9vcFwiLFwicnVsZVwiOlwidmFyIGl0ZW1zID0gW107XFxuXFxuZnVuY3Rpb24gZm9ybWF0RGF0ZShfZGF0ZSwgX2ZtdCkge1xcbiAgICBsZXQgZm10ID0gX2ZtdCB8fCBcXFwieXl5eS1NTS1kZCBISDptbTpzc1xcXCI7XFxuICAgIGNvbnN0IGRhdGUgPSAhaXNOYU4oX2RhdGUpID8gbmV3IERhdGUoX2RhdGUgKiAxMDAwKSA6IG5ldyBEYXRlKF9kYXRlKTtcXG4gICAgY29uc3QgbyA9IHtcXG4gICAgICAgIFxcXCJNK1xcXCI6IGRhdGUuZ2V0TW9udGgoKSArIDEsIC8v5pyI5Lu9IFxcbiAgICAgICAgXFxcImQrXFxcIjogZGF0ZS5nZXREYXRlKCksIC8v5pelIFxcbiAgICAgICAgXFxcImgrXFxcIjogZGF0ZS5nZXRIb3VycygpICUgMTIgPT0gMCA/IDEyIDogZGF0ZS5nZXRIb3VycygpICUgMTIsXFxuICAgICAgICBcXFwiSCtcXFwiOiBkYXRlLmdldEhvdXJzKCksIC8v5bCP5pe2IFxcbiAgICAgICAgXFxcIm0rXFxcIjogZGF0ZS5nZXRNaW51dGVzKCksIC8v5YiGIFxcbiAgICAgICAgXFxcInMrXFxcIjogZGF0ZS5nZXRTZWNvbmRzKCksIC8v56eSIFxcbiAgICAgICAgXFxcInErXFxcIjogTWF0aC5mbG9vcigoZGF0ZS5nZXRNb250aCgpICsgMykgLyAzKSwgLy/lraPluqYgXFxuICAgICAgICBcXFwiU1xcXCI6IGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkgLy/mr6vnp5IgXFxuICAgIH07XFxuICAgIGlmICgvKHkrKS8udGVzdChmbXQpKSB7XFxuICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChkYXRlLmdldEZ1bGxZZWFyKCkgKyBcXFwiXFxcIikuc3Vic3RyKDQgLSBSZWdFeHAuJDEubGVuZ3RoKSk7XFxuICAgIH1cXG4gICAgZm9yIChsZXQgayBpbiBvKSB7XFxuICAgICAgICBpZiAobmV3IFJlZ0V4cChcXFwiKFxcXCIgKyBrICsgXFxcIilcXFwiKS50ZXN0KGZtdCkpIHtcXG4gICAgICAgICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIChSZWdFeHAuJDEubGVuZ3RoID09IDEpID8gKG9ba10pIDogKChcXFwiMDBcXFwiICsgb1trXSkuc3Vic3RyKChcXFwiXFxcIiArIG9ba10pLmxlbmd0aCkpKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICByZXR1cm4gZm10O1xcbn07XFxuXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShzaXplKSB7XFxuICAgIGlmICghc2l6ZSkge1xcbiAgICAgICAgcmV0dXJuICcnO1xcbiAgICB9XFxuICAgIGNvbnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJywgJ1BCJywgJ0VCJywgJ1pCJywgJ1lCJ107XFxuICAgIGxldCBpID0gMDtcXG4gICAgd2hpbGUgKHNpemUgPj0gMTAyNCkge1xcbiAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgaSsrO1xcbiAgICB9XFxuICAgIHNpemUgPSBpID8gTnVtYmVyKHNpemUudG9GaXhlZCgyKSkgOiBzaXplO1xcbiAgICByZXR1cm4gYCR7c2l6ZX0gJHt1bml0c1tpXX1gO1xcbn1cXG4vL2xldCB0dmlwID0gZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICcnKTtcXG5cXG4vL2xvZyhnZXRSZXNDb2RlKCkpO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG59XFxuaWYgKE1ZX1BBR0UgPiAxICYmIGdldE15VmFyKCduZXh0cGFnZScsICcnKSA9PSAnJykge1xcbiAgICBsb2coJ+ayoeacieS4i+S4gOmhtScpO1xcbn0gZWxzZSB7XFxuICAgIGxldCByZWZ0b2tlbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvbicsIHt9KSlbMF0ucmVmcmVzaF90b2tlbjtcXG5cXG4gICAgbGV0IG5leHQgPSBnZXRNeVZhcignbmV4dHBhZ2UnLCAnJykgIT0gJycgPyAnLFxcXCJtYXJrZXJcXFwiOlxcXCInICsgZ2V0TXlWYXIoJ25leHRwYWdlJykgKyAnXFxcIicgOiAnJztcXG5cXG4gICAgdmFyIHJlc2NvZCA9IGZldGNoKCdodHRwczovL2FwaS5hbGl5dW5kcml2ZS5jb20vYWRyaXZlL3YzL2ZpbGUvbGlzdCcsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcbiAgICAgICAgICAgICdYLVNoYXJlLVRva2VuJzogc2hhcmV0b2tlblxcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6ICd7XFxcInNoYXJlX2lkXFxcIjpcXFwiJyArIHNoYXJlSWQgKyAnXFxcIixcXFwicGFyZW50X2ZpbGVfaWRcXFwiOlxcXCInICsgZ2V0UmVzQ29kZSgpLnNwbGl0KCc/Pz8nKVswXSArICdcXFwiLFxcXCJsaW1pdFxcXCI6MTAwLFxcXCJpbWFnZV90aHVtYm5haWxfcHJvY2Vzc1xcXCI6XFxcImltYWdlL3Jlc2l6ZSx3XzE2MC9mb3JtYXQsanBlZ1xcXCIsXFxcImltYWdlX3VybF9wcm9jZXNzXFxcIjpcXFwiaW1hZ2VcXFxcL3Jlc2l6ZSx3XzE5MjAvZm9ybWF0LGpwZWdcXFwiLFxcXCJ2aWRlb190aHVtYm5haWxfcHJvY2Vzc1xcXCI6XFxcInZpZGVvL3NuYXBzaG90LHRfMTAwMCxmX2pwZyxhcl9hdXRvLHdfMzAwXFxcIixcXFwib3JkZXJfYnlcXFwiOlxcXCJuYW1lXFxcIixcXFwib3JkZXJfZGlyZWN0aW9uXFxcIjpcXFwiQVNDXFxcIicgKyBuZXh0ICsgJ30nLFxcbiAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgfSk7XFxuICAgIC8vbG9nKHJlc2NvZCk7XFxuICAgIGlmIChKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXIpIHtcXG4gICAgICAgIGxldCBtYXJrZXIgPSBKU09OLnBhcnNlKHJlc2NvZCkubmV4dF9tYXJrZXI7XFxuICAgICAgICBpZiAobWFya2VyLmxlbmd0aCA+IDEwKSB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ25leHRwYWdlJywgbWFya2VyKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcignbmV4dHBhZ2UnKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICB2YXIgY29udHMgPSBKU09OLnBhcnNlKHJlc2NvZCkuaXRlbXM7XFxuICAgIHZhciB6aW11bGlzdCA9IFtdO1xcbiAgICBjb250cy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgaWYgKGNvbmZpZy5zdWJzLmluY2x1ZGVzKGl0ZW0uZmlsZV9leHRlbnNpb24pKSB7XFxuICAgICAgICAgICAgemltdWxpc3QucHVzaCh7XFxuICAgICAgICAgICAgICAgIGV4dDogaXRlbS5maWxlX2V4dGVuc2lvbixcXG4gICAgICAgICAgICAgICAgZmlsZV9pZDogaXRlbS5maWxlX2lkLFxcbiAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUucmVwbGFjZSgnLicgKyBpdGVtLmZpbGVfZXh0ZW5zaW9uLCAnJylcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICB2YXIgdHVpc29uZyA9IFtdO1xcbiAgICBmb3IgKHZhciBpIGluIGNvbnRzKSB7XFxuICAgICAgICB2YXIgbGlzdHlwID0gY29udHNbaV0udHlwZTtcXG4gICAgICAgIGlmIChsaXN0eXAgIT0gJ2ZvbGRlcicpIHtcXG4gICAgICAgICAgICB2YXIgemltdSA9IHt9O1xcbiAgICAgICAgICAgIHZhciBjYXRlID0gY29udHNbaV0uY2F0ZWdvcnk7XFxuICAgICAgICAgICAgdmFyIGZuYW1lID0gY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB2YXIgbmFtZSA9IGZuYW1lLnJlcGxhY2UoY29udHNbaV0uZmlsZV9leHRlbnNpb24sICcnKTtcXG5cXG4gICAgICAgICAgICB2YXIgaWR4ID0gemltdWxpc3QuZmluZEluZGV4KHggPT4gbmFtZS5pbmNsdWRlcyh4Lm5hbWUpKTtcXG4gICAgICAgICAgICBpZiAoaWR4ICE9PSAtMSAmJiAhY29uZmlnLnN1YnMuaW5jbHVkZXMoY29udHNbaV0uZmlsZV9leHRlbnNpb24pKSB7XFxuICAgICAgICAgICAgICAgIHppbXVsaXN0LnNwbGljZShpZHgsIDEpO1xcbiAgICAgICAgICAgICAgICB6aW11ID0gemltdWxpc3RbaWR4XTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgdmFyIGNhdGUgPSBjb250c1tpXS5jYXRlZ29yeTtcXG4gICAgICAgICAgICB2YXIgZm5hbWUgPSBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIGlmIChjYXRlID09ICd2aWRlbycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk7onICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2RvYycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gJ/Cfk5YnICsgY29udHNbaV0ubmFtZTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNhdGUgPT0gJ2ltYWdlJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+WvCcgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY2F0ZSA9PSAnemlwJykge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSAn8J+TpicgKyBjb250c1tpXS5uYW1lO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGNvbnRzW2ldLm5hbWVcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgdmFyIGxvbmdjID0gW107XFxuICAgICAgICAgICAgbGV0IHN1Ym5hbWUgPSBzdG9yYWdlMC5nZXRNeVZhcignbW91bnR6aW11JywgJycpO1xcbiAgICAgICAgICAgIGlmIChjb25maWcuc3Vicy5pbmNsdWRlcyhjb250c1tpXS5maWxlX2V4dGVuc2lvbikpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBjb250c1tpXTtcXG4gICAgICAgICAgICAgICAgdmFyIHptID0ge1xcbiAgICAgICAgICAgICAgICAgICAgZXh0OiBpdGVtLmZpbGVfZXh0ZW5zaW9uLFxcbiAgICAgICAgICAgICAgICAgICAgZmlsZV9pZDogaXRlbS5maWxlX2lkLFxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLnJlcGxhY2UoJy4nICsgaXRlbS5maWxlX2V4dGVuc2lvbiwgJycpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgbG9uZ2MgPSBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmjILovb3lrZfluZU6IFxcXCIgKyAoc3VibmFtZSA9PSAnJyA/ICfml6AnIDogc3VibmFtZS5uYW1lKycuJytzdWJuYW1lLmV4dCksXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoem0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcignbW91bnR6aW11Jywgem0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mjILovb3lrozmiJDvvIzlvZPliY3lrZfluZXmlofku7Y6ICcgKyB6bS5uYW1lKycuJyt6bS5leHQ7XFxuICAgICAgICAgICAgICAgICAgICB9LCB6bSksXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgbG9uZ2MgPSBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLlvZPliY3mjILovb3lrZfluZU6IFxcXCIgKyAoc3VibmFtZSA9PSAnJyA/ICfml6AnIDogc3VibmFtZS5uYW1lKycuJytzdWJuYW1lLmV4dCksXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICB9XTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgaXRlbXMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvbnRzW2ldLmZpbGVfaWQpLmxhenlSdWxlKChzaGFyZUlkLCBzaGFyZXRva2VuLCBjYXRlLCBmbmFtZSwgcmVmdG9rZW4semltdSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FsaWxhenlcXFwiKShzaGFyZUlkLCBpbnB1dCwgY2F0ZSx6aW11KTtcXG4gICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgc2hhcmV0b2tlbiwgY2F0ZSwgZm5hbWUsIHJlZnRva2VuLHppbXUpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBmb3JtYXREYXRlKGNvbnRzW2ldLnVwZGF0ZWRfYXQpICsgJyAgJyArIGZvcm1hdFNpemUoY29udHNbaV0uc2l6ZSksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogY29udHNbaV0uZmlsZV9pZCxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogbG9uZ2NcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ/Cfk4InICsgY29udHNbaV0ubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JyArIGNvbnRzW2ldLmZpbGVfaWQgKyAnPz8/ZnlwYWdlJykucnVsZSgoc2hhcmVJZCwgc2hhcmV0b2tlbiwgcHVzaG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3J1bGVsb29wJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgfSwgc2hhcmVJZCwgc2hhcmV0b2tlbiwgY29udHNbaV0ubmFtZSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICB9IC8vZW5kIGlmXFxuXFxuICAgIH1cXG59XFxuc2V0UmVzdWx0KGl0ZW1zKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumYv+mHjOaOqOmAgVwiLFwicGF0aFwiOlwicHVzaFwiLFwicnVsZVwiOlwianM6XFxuLy9sb2coTVlfVVJMKTtcXG52YXIgaXRlbXMgPSBbXTtcXG52YXIgcmVhbHVybCA9IE1ZX1VSTC5zcGxpdCgnIyMnKVsxXS5zcGxpdCgnPz8/JylbMF07XFxuaWYgKGRlY29kZVVSSUNvbXBvbmVudChyZWFsdXJsKS5pbmNsdWRlcygnd3d3LmFsaXl1bmRyaXZlJykgJiYgIXJlYWx1cmwuaW5jbHVkZXMoJyUzQiU3QicpKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL3NoYXJpZCcsIHt9KSkucnVsZSlcXG59XFxuc2V0UmVzdWx0KGl0ZW1zKTtcIn1dIiwiaWNvbiI6IiIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment