Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@金曼Tv@eyJmaXJzdEhlYWRlciI6ImNsYXNzIiwibGFzdF9jaGFwdGVyX3J1bGUiOiIiLCJ0aXRsZSI6IumHkeabvFR2IiwiYXV0aG9yIjoi5b+D6a2UIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjaHR0cHM6Ly9qaW5tYW4yLmNvbS9pbmRleC5waHAvdm9kL3Nob3cvYnkvdGltZS9pZC8xL3BhZ2UvZnlwYWdlLmh0bWwiLCJ2ZXJzaW9uIjowLCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InZpZGVvIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xudmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICcjJyArICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO1xufVxuXG5jb25zdCDliIbnsbvpopzoibIgPSBnZXRSYW5nZUNvbG9ycygpXG5jb25zdCDlpKfnsbvlrprkvY0gPSAnYm9keSYmLm5hdmJhci1pdGVtcydcbmNvbnN0IOaLvOaOpeWIhuexuyA9ICdib2R5JiYubW9kdWxlLWl0ZW0tYm94J1xuY29uc3Qg5bCP57G75a6a5L2NID0gJ2JvZHkmJmE6bm90KDptYXRjaGVzKOmmlumhtXzku4rml6Xmm7TmlrB854Ot5qacfEFQUHznpo/liKl854Ot6ZeofOaOkuihjCkpJ1xuY29uc3Qg5YiG57G75qCH6aKYID0gJ2EmJlRleHQnXG5jb25zdCDliIbnsbvpk77mjqUgPSAnYSYmaHJlZidcbk1ZX1VSTCA9IE1ZX1VSTC5yZXBsYWNlKCdoaWtlcjovL2VtcHR5IyMnLCAnJylcblxubGV0IHRydWVfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsLCBNWV9VUkwpXG5jb25zdCBwYWdlID0gTVlfUEFHRVxuaWYgKGdldFZhcihNWV9SVUxFLnVybCkpIHtcbiAgICB0cnVlX3VybCA9IHRydWVfdXJsLnJlcGxhY2UoJ3R5cGUnLCAnc2hvdycpLnJlcGxhY2UoJy5odG1sJywgJy9wYWdlLycgK3BhZ2UrICcuaHRtbCcpLnJlcGxhY2UoLygtLS1cXGQrLmh0bWwpLywgcGFnZSArICckMScpXG59XG5cbnZhciBodG1sID0gcmVxdWVzdCh0cnVlX3VybClcblxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9kdCcpKS5ydWxlKVxuXG52YXIgbGlzdCA9IHBkZmEoaHRtbCwgJ2JvZHkmJi5tb2R1bGUtcG9zdGVyLWl0ZW0nKTtcbmZvciAodmFyIGogaW4gbGlzdCkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdpbWcmJmFsdCcpLFxuICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcubW9kdWxlLWl0ZW0tbm90ZXx8Lm1vZHVsZS1pdGVtLXRleHQmJlRleHQnKSxcbiAgICAgICAgcGljX3VybDogcGQobGlzdFtqXSwgJ2ltZ3x8LmxhenkmJmRhdGEtb3JpZ2luYWx8fGRhdGEtc3JjJykgKyAnQFJlZmVyZXI9JyxcbiAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBteXRpdGxlOiBwZGZoKGxpc3Rbal0sICdpbWcmJmFsdCcpICAgICAgICAgICAgXG4gICAgICAgICAgICB9LFxuICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykgKyBcIiNpbW1lcnNpdmVUaGVtZSNcIlxuICAgIH0pO1xufVxuc2V0UmVzdWx0KGQpOyIsInNlYXJjaF91cmwiOiJodHRwczovL2ppbm1hbjIuY29tL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvZnlwYWdlL3dkLyoqLmh0bWwiLCJncm91cCI6IiPvuI/ig6PlvbHop4YiLCJzZWFyY2hGaW5kIjoianM6XHJcbnZhciBkID0gW107XG5cbnZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShnZXRSZXNDb2RlKCksICdib2R5JiYubW9kdWxlLWNhcmQtaXRlbScpO1xyXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcclxuICBkLnB1c2goe1xyXG4gICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnaW1nJiZhbHQnKSxcclxuICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnLm1vZHVsZS1pbmZvLWl0ZW0tY29udGVudDpjb250YWlucyjkuLvmvJTvvJopJiZUZXh0JyksXG4gICAgICAgY29udGVudDogcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sICcubW9kdWxlLWl0ZW0tbm90ZTpjb250YWlucyjliafmg4XvvJopJiZUZXh0JyksXG4gICAgICAgaW1nOiBwYXJzZURvbShsaXN0W2pdLCAnaW1nJiZkYXRhLW9yaWdpbmFsJykrJ0BSZWZlcmVyPScsXG4gICAgICAgXHJcbiAgICAgICB1cmw6IHBhcnNlRG9tKGxpc3Rbal0sICdhJiZocmVmJykrXCIjaW1tZXJzaXZlVGhlbWUjXCJcbiAgfSk7XHJcbn1cclxuc2V0UmVzdWx0KGQpOyIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XG5cbnZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICAgIGZ1bmN0aW9uIHRvVXJsKHBsYXlVcmwpIHtcbiAgICAgICAgICAgIGlmICgvbWd0dnxzb2h1Ly50ZXN0KHBsYXlVcmwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBsYXlVcmwgKyBcIjt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKX1cIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL2JpbGkvLnRlc3QocGxheVVybCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGxheVVybCArIFwiO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wJiZSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbX1cIjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoL2l4aWd1YS8udGVzdChwbGF5VXJsKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwbGF5VXJsICsgXCIjaXNWaWRlbz10cnVlI1wiICsgXCIjLm1wNDt7UmVmZXJlckBodHRwczovL3d3dy5peGlndWEuY29tLyYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH1cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBsYXlVcmw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3QoaW5wdXQsIHt9KTtcbiAgICAgICAgdmFyIHBsYXllcl9kYXRhID0gSlNPTi5wYXJzZShodG1sLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pO1xuICAgICAgICB2YXIgZnJvID0gcGxheWVyX2RhdGEuZnJvbTtcbiAgICAgICAgdmFyIHBsYXlVcmwgPSBwbGF5ZXJfZGF0YS51cmw7XG5cblxuICAgICAgICBpZiAocGxheWVyX2RhdGEuZW5jcnlwdCA9PSAnMScpIHtcbiAgICAgICAgICAgIHBsYXlVcmwgPSB1bmVzY2FwZShwbGF5ZXJfZGF0YS51cmwpO1xuICAgICAgICB9IGVsc2UgaWYgKHBsYXllcl9kYXRhLmVuY3J5cHQgPT0gJzInKSB7XG4gICAgICAgICAgICBwbGF5VXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHBsYXllcl9kYXRhLnVybCkpO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZXhjbHVkZSA9IC9wbGF5bTN1OHxtM3U4XFwudHZ8bWluXFwuY3NzfDQwNFxcLm0zdTh8XFwuY3NzLztcbiAgICAgICAgdmFyIGNvbnRhaW4gPSAvXFwubXA0fFxcLm0zdTh8XFwuZmx2fFxcLmF2aXxcXC5tcGVnfFxcLndtdnxcXC5tb3Z8XFwucm12YnxcXC5kYXR8cXFCRmRvd25sb2FkfG1pbWU9dmlkZW8lMkZ8dmlkZW9fbXA0LztcbiAgICAgICAgaWYgKCFleGNsdWRlLnRlc3QocGxheVVybCkgJiYgY29udGFpbi50ZXN0KHBsYXlVcmwpKSB7XG4gICAgICAgICAgICByZXR1cm4gdG9VcmwocGxheVVybCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIganhVcmwgPSAnJztcbiAgICAgICAgdmFyIGp4SHRtbCA9IHJlcXVlc3QoanhVcmwsIHtcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBcIlVzZXItQWdlbnRcIjogXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKVwiXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWV0aG9kOiBcIkdFVFwiXG4gICAgICAgIH0pO1xuICAgICAgICBldmFsKGp4SHRtbC5tYXRjaCgvdmFyIGNvbmZpZyA9IHtbXFxzXFxTXSo/fS8pWzBdICsgXCJcIik7XG4gICAgICAgIHZhciBhcGlVcmwgPSAnJztcbiAgICAgICAgdmFyIGFwaUh0bWwgPSByZXF1ZXN0KGFwaVVybCwge1xuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgIFwiVXNlci1BZ2VudFwiOiBcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjApXCJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBcInVybD1cIiArIGNvbmZpZy51cmwgKyBcIiZ0aW1lPVwiICsgY29uZmlnLnRpbWUgKyBcIiZrZXk9XCIgKyBjb25maWcua2V5LFxuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIlxuICAgICAgICB9KTtcbiAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGFwaUh0bWwpO1xuICAgICAgICBpZiAoanNvbi5jb2RlID09IDIwMCkge1xuICAgICAgICAgICAgcGxheVVybCA9IGpzb24udXJsO1xuICAgICAgICAgICAgcmV0dXJuIHRvVXJsKHBsYXlVcmwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBqc29uLm1zZztcbiAgICAgICAgfVxuXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvL3NldEVycm9yKGUpO1xuICAgICAgICBzaG93TG9hZGluZyhcIuato+WcqOi/m+ihjOajgOe0ou+8jOivt+eojeWAmS4uLlwiKTtcbiAgICAgICAgdmFyIHZpZGVvID0gJ3g1UnVsZTovLycgKyBpbnB1dCArICdAJyArICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICAgICAgLy9mYmEubG9nKGZiYS5nZXRVcmxzKCkpXG4gICAgICAgICAgICB2YXIgdXJscyA9IF9nZXRVcmxzKClcbiAgICAgICAgICAgIHZhciBleGNsdWRlID0gL3BsYXltM3U4fG0zdThcXC50dnxtaW5cXC5jc3N8NDA0XFwubTN1OHxcXC5jc3MvO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW4gPSAvXFwubXA0fFxcLm0zdTh8XFwuZmx2fFxcLmF2aXxcXC5tcGVnfFxcLndtdnxcXC5tb3Z8XFwucm12YnxcXC5kYXR8cXFCRmRvd25sb2FkfG1pbWU9dmlkZW8lMkZ8dmlkZW9fbXA0LztcbiAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdXJscykge1xuICAgICAgICAgICAgICAgIGlmICghZXhjbHVkZS50ZXN0KHVybHNbaV0pICYmIGNvbnRhaW4udGVzdCh1cmxzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBmeV9icmlkZ2VfYXBwLmxvZyh1cmxzW2ldKVxuICAgICAgICAgICAgICAgICAgICBpZiAoL21ndHZ8c29odS8udGVzdCh1cmxzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV0gKyBcIjt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKX1cIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgvYmlsaS8udGVzdCh1cmxzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV0gKyBcIjt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCYmUmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb219XCI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoL2l4aWd1YS8udGVzdCh1cmxzW2ldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV0gKyBcIiNpc1ZpZGVvPXRydWUjXCIgKyBcIiMubXA0O3tSZWZlcmVyQGh0dHBzOi8vd3d3Lml4aWd1YS5jb20vJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfVwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB2aWRlbztcbiAgICB9XG59KTtcblxuLy/nur/ot6/lkI3liJfooajnmoTlrprkvY1cbnZhciBhcnRzID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmLnRhYi1pdGVtJyk7XG5cbi8v57q/6Lev5ZCN5YiX6KGo5ZCN56ew55qE5a6a5L2NXG52YXIgdGFicyA9IFtdO1xuZm9yICh2YXIgaSBpbiBhcnRzKSB7XG4gICAgdGFicy5wdXNoKHBhcnNlRG9tRm9ySHRtbChhcnRzW2ldLCAnc3BhbiYmVGV4dCcpKVxufVxuXG4vL+aSreaUvuWIl+ihqOeahOWIl+ihqOeahOWumuS9jVxudmFyIGNvbnRzID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmLm1vZHVsZS1wbGF5LWxpc3QtY29udGVudHx8Lm1vZHVsZS1zb3J0dGFiJyk7XG52YXIgbGlzdHMgPSBbXTtcbmZvciAodmFyIGkgaW4gY29udHMpIHtcbiAgICB2YXIgdGVtcCA9IHBhcnNlRG9tRm9yQXJyYXkoY29udHNbaV0sICdib2R5JiZhOm5vdCg6Y29udGFpbnMo5o6S5bqPKSknKVxuICAgIGxpc3RzLnB1c2godGVtcClcbn1cblxudmFyIOWvvOa8lCA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW06Y29udGFpbnMo5a+85ryU77yaKSYmVGV4dCcpLnJlcGxhY2UoL1xcLy9nLCAnICcpO1xuXG52YXIg5Li75ryUID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcubW9kdWxlLWluZm8taXRlbTpjb250YWlucyjkuLvmvJTvvJopJiZUZXh0JykucmVwbGFjZSgvXFwvL2csICcgJyk7XG5cbnZhciDmm7TmlrAgPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtOmNvbnRhaW5zKOmbhuaVsCkmJlRleHQnKTtcblxudmFyIOeKtuaAgSA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW06Y29udGFpbnMo5LiK5pig77yaKSYmVGV4dCcpO1xuXG52YXIg5Zu+54mHID0gcGFyc2VEb20oaHRtbCwgJy5sYXp5bG9hZCYmZGF0YS1zcmN8fGRhdGEtb3JpZ2luYWwnKTtcblxudmFyIOeugOS7iyA9IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbi1jb250ZW50JiZUZXh0JykucmVwbGFjZSgn5pS26LW3JywgJycpO1xuXG52YXIgQ29sb3IgPSBcIiNmMTNiNjZhXCI7XG52YXIgQ29sb3IxID0gXCIjMDk4QUMxXCI7XG5cbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XCInICsgQ29sb3IgKyAnXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+Jztcbn1cbmxldCBsaW5lX21vZGVsID0gODtcbmxldCBsaW5lX3R5cGVfbW9kZWwgPSAnYmxhbmtfYmxvY2snO1xuZC5wdXNoKHtcbiAgICB0aXRsZTog5a+85ryUICsgJ1xcbicgKyDkuLvmvJQsXG4gICAgZGVzYzog5pu05pawICsgJ1xcbicgKyDnirbmgIEsXG4gICAgcGljX3VybDog5Zu+54mHLFxuICAgIHVybDogTVlfVVJMLFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcbn0pO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzbWFsbD48Zm9udCBjb2xvcj1cIiNmZjE0OGU4ZVwiPueugOS7i++8micgKyDnroDku4suc3Vic3RyKDAsIDU1KSArICcuLi48L2ZvbnQ+PHNtYWxsPjxmb250IGNvbG9yPVwicmVkXCI+6K+m5oOFPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArICdcXG4nICsg566A5LuLICsgYEBydWxlPWpzOnZhciByZXMgPSB7fTsgdmFyIGQgPSBbXTtkLnB1c2goe3RpdGxlOiflvbHniYfnroDku4vvvJonKyBNWV9VUkwuc3BsaXQoJ2hpa2VyOi8vZW1wdHkjJylbMV0sY29sX3R5cGU6ICdsb25nX3RleHQnfSk7cmVzLmRhdGEgPSBkOyBzZXRIb21lUmVzdWx0KHJlcyk7YCxcbiAgICBjb2xfdHlwZTogJ3RleHRfMSdcbn0pO1xuZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lX21vZGVsOyBpKyspIHtcbiAgICBkLnB1c2goe1xuICAgICAgICBjb2xfdHlwZTogbGluZV90eXBlX21vZGVsXG4gICAgfSlcbn1cblxuLy/lpITnkIbmjqjpgIFUVkJveCBzdGFydFxubGV0IHRmcHVzaCA9IGdldEl0ZW0oJ3dlYnB1c2gnLCAnMCcpO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogKGdldEl0ZW0oJ3dlYnB1c2gnLCAnMCcpID09ICcxJyA/ICfljZXpm4bmjqjpgIHwn5+iJyA6ICfljZXpm4bmjqjpgIHwn5S0JyksXG4gICAgdXJsOiBgaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6Z2V0SXRlbSgnd2VicHVzaCcsJzAnKT09JzEnP3NldEl0ZW0oJ3dlYnB1c2gnLCcwJyk6c2V0SXRlbSgnd2VicHVzaCcsJzEnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKn++8gSdgLFxuXG4gICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xufSk7XG5kLnB1c2goe1xuICAgIHRpdGxlOiAn6K6+572u55S16KeGSVAnLFxuICAgIHVybDogXCJpbnB1dDovL1wiICsgZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICdodHRwOi8vJyArIGdldElQKCkgKyAnOjk5NzgnKSArIFwiLy8vL+ivt+i+k+WFpXR2Ym945o6o6YCBSVDlnLDlnYDvvIzlpoJodHRwOi8vXCIgKyBnZXRJUCgpICsgXCI6OTk3OC5qczpzZXRJdGVtKCdoaWtlcnR2Ym94c2V0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKVwiLFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcbn0pO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICcnKSxcbiAgICAvL3VybDogJ2hpa2VyOi8vZW1wdHknLFxuICAgIHVybDogXCJpbnB1dDovL1wiICsgZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICdodHRwOi8vJyArIGdldElQKCkgKyAnOjk5NzgnKSArIFwiLy8vL+ivt+i+k+WFpXR2Ym945o6o6YCBSVDlnLDlnYDvvIzlpoJodHRwOi8vXCIgKyBnZXRJUCgpICsgXCI6OTk3OC5qczpzZXRJdGVtKCdoaWtlcnR2Ym94c2V0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKVwiLFxuICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcbn0pO1xuXG52YXIgcGxheVVybHMgPSAnJztcbmZvciAodmFyIGkgPSAwOyBpIDwgbGlzdHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbGlzdCA9IGxpc3RzW2ldO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xuICAgICAgICBpZiAoaiA9PSBsaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHBsYXlVcmxzICs9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnYSYmVGV4dCcpICsgXCIkXCIgKyBwYXJzZURvbShsaXN0W2pdLCAnYSYmaHJlZicpICsgXCIkJCRcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBsYXlVcmxzICs9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnYSYmVGV4dCcpICsgXCIkXCIgKyBwYXJzZURvbShsaXN0W2pdLCAnYSYmaHJlZicpICsgXCIjXCI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbnBsYXlVcmxzID0gcGxheVVybHMuc3Vic3RyaW5nKDAsIHBsYXlVcmxzLmxlbmd0aCAtIDMpO1xuLy9sb2cocGxheVVybHMpO1xuXG5sZXQgcHVzaCA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICBcIm5hbWVcIjogTVlfUEFSQU1TLm15dGl0bGUsXG4gICAgXCJwaWNcIjogcGFyc2VEb20oaHRtbCwgJy5sYXp5bG9hZCYmZGF0YS1zcmN8fGRhdGEtb3JpZ2luYWwnKSxcbiAgICBcImNvbnRlbnRcIjogcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcudmlkZW8taW5mby1jb250ZW50JiZUZXh0JykucmVwbGFjZSgn5pS26LW3JywgJycpLFxuICAgIFwiZnJvbVwiOiB0YWJzLmpvaW4oJyQkJCcpLFxuICAgIFwidXJsXCI6IHBsYXlVcmxzLnJlcGxhY2UoL1xcJi9nLCAn77yG77yGJylcbn0pO1xuLy9sb2cocHVzaCk7XG5cbmQucHVzaCh7XG4gICAgdGl0bGU6IFwi5o6o6YCB5b2T5YmN6aG15YiX6KGo5YiwVFZCb3hcIixcbiAgICB1cmw6ICQocHVzaCkubGF6eVJ1bGUoKCkgPT4ge1xuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9wdXNoP3B1c2h1cmw9JyArIGVuY29kZVVSSUNvbXBvbmVudChpbnB1dCk7XG4gICAgfSksXG4gICAgY29sX3R5cGU6IFwic2Nyb2xsX2J1dHRvblwiXG59KTtcblxuZC5wdXNoKHtcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xuICAgIH0pXG4gICAgLy/lpITnkIbmjqjpgIFUVkJveCBlbmRcblxuZnVuY3Rpb24gc2V0VGFicyh0YWJzLCB2YXJpKSB7XG4gICAgZm9yICh2YXIgaSBpbiB0YWJzKSB7XG4gICAgICAgIHZhciB1cmwgPSBcIiNub0xvYWRpbmcjQGxhenlSdWxlPS5qczpwdXRWYXIoJ1wiICsgdmFyaSArIFwiJywgJ1wiICsgaSArIFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIh+aNouaIkOWKn++8gSc7JyNub0hpc3RvcnkjaGlrZXI6Ly9lbXB0eSdcIjtcbiAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIodmFyaSwgJzAnKSA9PSBpID8gZ2V0SGVhZCh0YWJzW2ldKSA6IHRhYnNbaV0sXG4gICAgICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcbiAgICAgICAgfSlcbiAgICB9XG4gICAgZC5wdXNoKHtcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xuICAgIH0pXG59XG5cbmZ1bmN0aW9uIHNldExpc3RzKGxpc3RzLCBpbmRleCkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcbiAgICB9KVxufVxuaWYgKGdldFZhcignc2hzb3J0JykgPT0gJzEnKSB7XG4gICAgdmFyIHN4ID0gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVwiIzBhYTM0NFwiPuaOkuW6jzwvZm9udD48L3NtYWxsPicgKyAnPHNtYWxsPjxmb250IGNvbG9yPVwiIzBhYTM0NFwiPuKGkTwvZm9udD48L3NtYWxsPicgKyAnPHNtYWxsPjxmb250IGNvbG9yPVwiI2ZmNGMwMFwiPuKGkzwvZm9udD48L3NtYWxsPic7XG59IGVsc2Uge1xuICAgIHZhciBzeCA9ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cIiMwYWEzNDRcIj7mjpLluo88L2ZvbnQ+PC9zbWFsbD4nICsgJzxzbWFsbD48Zm9udCBjb2xvcj1cIiNmZjRjMDBcIj7ihpE8L2ZvbnQ+PC9zbWFsbD4nICsgJzxzbWFsbD48Zm9udCBjb2xvcj1cIiMwYWEzNDRcIj7ihpM8L2ZvbnQ+PC9zbWFsbD4nO1xufVxuXG5mdW5jdGlvbiBzZXRMaXN0cyhsaXN0cywgaW5kZXgpIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVwiY29sb3I6JyArIENvbG9yMSArICdcIj48c21hbGw+6YCJ6ZuG5YiX6KGoPC9zbWFsbD4nICsgJ1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdDxzcGFuIHN0eWxlPVwiZmxvYXQ6cmlnaHRcIj4nICsgJzxzbWFsbD4nICsgc3ggKyAnPC9zbWFsbD4nLFxuICAgICAgICB1cmw6IGAjbm9Mb2FkaW5nI0BsYXp5UnVsZT0uanM6bGV0IGNvbmYgPSBnZXRWYXIoJ3Noc29ydCcpO2lmKGNvbmY9PScxJyl7cHV0VmFyKHtrZXk6J3Noc29ydCcsIHZhbHVlOicwJ30pO31lbHNle3B1dFZhcih7a2V5OidzaHNvcnQnLCB2YWx1ZTonMSd9KX07cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmjpLluo/miJDlip8nOycjbm9IaXN0b3J5I2hpa2VyOi8vZW1wdHknYCxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xuICAgIH0pXG4gICAgdmFyIGxpc3QgPSBsaXN0c1tpbmRleF07XG5cbiAgICBpZiAoZ2V0VmFyKCdzaHNvcnQnKSA9PSAnMScpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSBsaXN0Lmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRmcHVzaCA9PSAnMCcpIHtcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJ2EmJlRleHQnKS5yZXBsYWNlKC/nrKx86ZuGfOivnXzmnJ8vZywgJycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwYXJzZURvbShsaXN0W2pdLCAnYSYmaHJlZicpICsgbGF6eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBsaXN0Lmxlbmd0aCA+IDQgPyAndGV4dF81JyA6ICd0ZXh0XzInXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmx4ID0gJ2hpa2VyOi8vcGFnZS9wdXNoP3B1c2h1cmw9JyArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogZ2V0UGFnZVRpdGxlKCkgKyBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwgJ2EmJlRleHQnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwicGljXCI6IHBhcnNlRG9tKGh0bWwsICcubGF6eWxvYWQmJmRhdGEtc3JjfHxkYXRhLW9yaWdpbmFsJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIjogcGFyc2VEb21Gb3JIdG1sKGh0bWwsICcudmlkZW8taW5mby1jb250ZW50JiZUZXh0JykucmVwbGFjZSgn5pS26LW3JywgJycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmcm9tXCI6IGdldFBhZ2VUaXRsZSgpICsgcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sICdhJiZUZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICBcInVybFwiOiBwYXJzZURvbShsaXN0W2pdLCAnYSYmaHJlZicpXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGV4dHJheCA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBwYXJzZURvbShsaXN0W2pdLCAnYSYmaHJlZicpXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sICdhJiZUZXh0JykucmVwbGFjZSgv56ysfOmbhnzor5185pyfL2csICcnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdXJseCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBsaXN0Lmxlbmd0aCA+IDQgPyAndGV4dF81JyA6ICd0ZXh0XzInLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IGV4dHJheFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ayoeaciemAiembhuWTn++8jOS4jeS/oeeCueWbvueJh+WOu+eci+eci/CfkYAnLFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0ZnB1c2ggPT0gJzAnKSB7XG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sICdhJiZUZXh0JykucmVwbGFjZSgv56ysfOmbhnzor5185pyfL2csICcnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogcGFyc2VEb20obGlzdFtqXSwgJ2EmJmhyZWYnKSArIGxhenksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogbGlzdC5sZW5ndGggPiA0ID8gJ3RleHRfNScgOiAndGV4dF8yJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdXJseCA9ICdoaWtlcjovL3BhZ2UvcHVzaD9wdXNodXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IGdldFBhZ2VUaXRsZSgpICsgcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sICdhJiZUZXh0JyksXG4gICAgICAgICAgICAgICAgICAgICAgICBcInBpY1wiOiBwYXJzZURvbShodG1sLCAnLmxhenlsb2FkJiZkYXRhLXNyY3x8ZGF0YS1vcmlnaW5hbCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250ZW50XCI6IHBhcnNlRG9tRm9ySHRtbChodG1sLCAnLnZpZGVvLWluZm8tY29udGVudCYmVGV4dCcpLnJlcGxhY2UoJ+aUtui1tycsICcnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJvbVwiOiBnZXRQYWdlVGl0bGUoKSArIHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnYSYmVGV4dCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ1cmxcIjogcGFyc2VEb20obGlzdFtqXSwgJ2EmJmhyZWYnKVxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBleHRyYXggPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogcGFyc2VEb20obGlzdFtqXSwgJ2EmJmhyZWYnKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnYSYmVGV4dCcpLnJlcGxhY2UoL+esrHzpm4Z86K+dfOacny9nLCAnJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHVybHgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogbGlzdC5sZW5ndGggPiA0ID8gJ3RleHRfNScgOiAndGV4dF8yJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYXhcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAn5rKh5pyJ6YCJ6ZuG5ZOf77yM5LiN5L+h54K55Zu+54mH5Y6755yL55yL8J+RgCcsXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgIH1cbn1cbnNldFRhYnModGFicywgTVlfVVJMKTtcbnNldExpc3RzKGxpc3RzLCBnZXRWYXIoTVlfVVJMLCAnMCcpKTtcbmQucHVzaCh7XG4gICAgdGl0bGU6ICc8YnI+JyxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcbn0pO1xuc2V0UmVzdWx0KGQpOyIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIqIiwidWEiOiJwYyIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiRHRcIixcInBhdGhcIjpcImR0XCIsXCJydWxlXCI6XCJjb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbnRyeSB7XFxuICAgIHZhciBjYXRlZ29yaWVzID0gcGRmYShodG1sLCDlpKfnsbvlrprkvY0pLmNvbmNhdChwZGZhKGh0bWwsIOaLvOaOpeWIhuexuykpXFxufSBjYXRjaCAoZSkge1xcbiAgICB2YXIgY2F0ZWdvcmllcyA9IHBkZmEoaHRtbCwg5aSn57G75a6a5L2NKVxcbn1cXG5cXG5sZXQgaW5pdF9jYXRlID0gW11cXG5cXG5mb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG4gICAgaW5pdF9jYXRlLnB1c2goXFxcIjBcXFwiKVxcbn1cXG5cXG5jb25zdCBmb2xkID0gZ2V0VmFyKE1ZX1JVTEUuZ3JvdXAsIFxcXCIwXFxcIilcXG5jb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcbmNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIvCflI1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vc2VhcmNoP3J1bGU9XFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFwiJnM9JytpbnB1dFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwi5pCc5L2g5oOz55yLLi4uXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICBmb2xkID09PSAnMScgPyAn4oCc4oCc4oCd4oCdPGI+JyArICfwn5mJJy5mb250Y29sb3IoXFxcIiNGRjAwMDBcXFwiKSArICc8L2I+JyA6ICfigJzigJzigJ3igJ08Yj4nICsgJ/CfmYgnLmZvbnRjb2xvcihcXFwiIzFhYWQxOVxcXCIpICsgJzwvYj4nLFxcbiAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGZvbGQpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS5ncm91cCwgZm9sZCA9PT0gJzEnID8gJzAnIDogJzEnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgZm9sZCksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICB9KVxcblxcbmNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBwZGZhKGNhdGVnb3J5LCDlsI/nsbvlrprkvY0pO1xcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XFxuICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHBkZmgoaXRlbSwg5YiG57G75qCH6aKYKVxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogJyArIOWIhuexu+minOiJsiArICdcXFwiPicgKyB0aXRsZSArICc8L3NwYW4+PC9iPicgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChwZChpdGVtLCDliIbnsbvpk77mjqUpICsgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfY2F0ZSA9IFtdXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcC5mb3JFYWNoKChjYXRlLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfY2F0ZS5wdXNoKGluZGV4ID09PSAwID8gcGFyYW1zLmtleS50b1N0cmluZygpIDogXFxcIjBcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KG5ld19jYXRlKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS51cmwsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSBlbHNlIGlmIChmb2xkID09PSAnMScpIHtcXG4gICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gcGRmaChpdGVtLCDliIbnsbvmoIfpopgpXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAnICsg5YiG57G76aKc6ImyICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvc3Bhbj48L2I+JyA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBkKGl0ZW0sIOWIhuexu+mTvuaOpSkgKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIlRzXCIsXCJwYXRoXCI6XCJwdXNoXCIsXCJydWxlXCI6XCJqczpcXG5sZXQgaXRlbXMgPSBbXTtcXG5sZXQgcHVzaGluID0gZGVjb2RlVVJJQ29tcG9uZW50KGdldFBhcmFtKFxcXCJwdXNodXJsXFxcIikpO1xcbmxldCB0dmlwID0gZ2V0SXRlbSgnaGlrZXJ0dmJveHNldCcsICcnKTtcXG5cXG5pdGVtcy5wdXNoKHtcXG4gICAgdGl0bGU6ICflvZPliY1JUO+8micgKyB0dmlwLFxcbiAgICB1cmw6IFxcXCJpbnB1dDovL1xcXCIgKyBnZXRJdGVtKCdoaWtlcnR2Ym94c2V0JywgJ2h0dHA6Ly8nICsgZ2V0SVAoKSArICc6OTk3OCcpICsgXFxcIi8vLy/or7fovpPlhaVUVkJveOerr+eahElQ5Zyw5Z2A77yM5aaCaHR0cDovL1xcXCIgKyBnZXRJUCgpICsgXFxcIjo5OTc4LmpzOnNldEl0ZW0oJ2hpa2VydHZib3hzZXQnLGlucHV0KTtyZWZyZXNoUGFnZSgpXFxcIixcXG4gICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG59KTtcXG52YXIgcHVybCA9IHB1c2hpbjtcXG5cXG5pZiAocHVzaGluLmluY2x1ZGVzKCdcXFxcbicpICYmICFwdXNoaW4uc3RhcnRzV2l0aCgneycpKSB7XFxuICAgIHB1cmwgPSBwdXNoaW4ucmVwbGFjZShcXFwiXFxcXG5cXFwiLCAnJCcpO1xcbn1cXG5pZiAocHVzaGluLnN0YXJ0c1dpdGgoJ2h0dHAnKSAmJiBwdXNoaW4uaW5jbHVkZXMoJzt7JykpIHtcXG4gICAgcHVybCA9IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIua1t+mYlOebtOmTvuaOqOmAgVxcXCIsXFxuICAgICAgICBcXFwidXJsXFxcIjogcHVzaGluXFxuICAgIH0pXFxufVxcbmlmIChwdXNoaW4uc3RhcnRzV2l0aCgnaHR0cHM6Ly93d3cuYWxpeXVuZHJpdmUuY29tL3MvJykpIHtcXG4gICAgbGV0IHJlZnRva2VuID0gSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvaWN5LWFsaS10b2tlbi5qc29uJywge30pKVswXS5yZWZyZXNoX3Rva2VuO1xcbiAgICBwdXJsID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgXFxcInVybFxcXCI6IHB1c2hpbixcXG4gICAgICAgIFxcXCJyZWZyZXNoX3Rva2VuXFxcIjogcmVmdG9rZW5cXG4gICAgfSlcXG59XFxuaWYgKHB1c2hpbi5pbmNsdWRlcygnOjUyMDIwJykpIHtcXG4gICAgaWYgKHB1c2hpbi5pbmNsdWRlcygncmVkaXJlY3RQbGF5VXJsJykpIHtcXG4gICAgICAgIHB1cmwgPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5rW36ZiU5oqV5bGP55u06ZO+XFxcIixcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjogcHVzaGluXFxuICAgICAgICB9KVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcHVybCA9IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmtbfpmJTnvZHpobXmipXlsY9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJ1cmxcXFwiOiBwdXNoaW5cXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuLy9sb2coJ+aOqOmAgScrcHVybCk7XFxudmFyIHN0YXRlID0gcmVxdWVzdCh0dmlwICsgJy9hY3Rpb24nLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyxcXG4gICAgICAgIC8vJ1gtUmVxdWVzdGVkLVdpdGgnOiAnWE1MSHR0cFJlcXVlc3QnLFxcbiAgICAgICAgJ1JlZmVyZXInOiB0dmlwXFxuICAgIH0sXFxuICAgIHRpbWVvdXQ6IDIwMDAsXFxuICAgIGJvZHk6ICdkbz1wdXNoJnVybD0nICsgcHVybC5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJyksXFxuICAgIG1ldGhvZDogJ1BPU1QnXFxufSk7XFxuLy9sb2coc3RhdGUpO1xcbmlmIChzdGF0ZSA9PSAnb2snKSB7XFxuICAgIC8vbG9nKHN0YXRlKTtcXG4gICAgaXRlbXMucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKchVxcXCIgKyBzdGF0ZSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICB9KTtcXG59IGVsc2Uge1xcbiAgICAvL2xvZyhzdGF0ZSk7XFxuICAgIGl0ZW1zLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLinY5cXFwiICsgc3RhdGUsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgfSk7XFxuXFxufVxcbnNldFJlc3VsdChpdGVtcyk7XCJ9XSIsImljb24iOiJodHRwczovL2ppbm1hbjIuY29tL3VwbG9hZC9teHByb2Ntcy8yMDIyMTAyMS0xL2Q2MjYwNDg2ZThhMTZlMDFhMDcxMjQ1NTY4OWJkMzRmLnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment