Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@岸听音乐@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5bK45ZCs6Z+z5LmQIiwiYXV0aG9yIjoiemhhbyblraPpo44iLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyMiLCJ2ZXJzaW9uIjoxLCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6Im11c2ljIiwiY2xhc3NfdXJsIjoiIiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoianM6XG52YXIgZCA9IFtdO1xuLy9jbGVhck15VmFyKCd0aW5kZXgnKVxudmFyIHlpbnpoaSA9IGdldEl0ZW0oXCJ5aW56aGlcIiwgXCIxMjhcIik7IC8vbG9nKHlpbnpoaSlcbnZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiAoJzAwMDAwJyArIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwIDw8IDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTtcbn1cbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvaGFuc2h1JykpLnJ1bGUpXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xhenknKSkucnVsZSlcbnZhciB0aW5kZXggPSBzdG9yYWdlMC5nZXRNeVZhcigndGluZGV4JywgMClcbiAgICB2YXIgdGl0bGVzID0gW1wi5Y+R546wXCIsXCLmrYzljZVcIixcIuaIkeeahFwiXVxuICAgIGxldCBpbWdzID0gW1wiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tb3JlLzI5Mi5wbmdcIixcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbW9yZS8xMTMucG5nXCIsXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21vcmUvMzA3LnBuZ1wiXVxuICAgIHRpdGxlcyA9IHRpdGxlcy5tYXAoKHgsIGkpID0+IHtcbiAgICB2YXIgdGl0bGUgPSBpID09IHRpbmRleCA/IGA8Yj48Zm9udCBjb2xvcj1cIiMxRTkwRkZcIj4ke3h9PC9mb250PjwvYj5gIDogeFxuICAgIHJldHVybiB0aXRsZVxufSlcbmlmIChNWV9QQUdFID09IDEpIHtcbmZvciAobGV0IGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBteXRpdGxlID0gdGl0bGVzW2ldO1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IG15dGl0bGUsXG4gICAgICAgICAgICB1cmw6ICQoJycpLmxhenlSdWxlKChpKSA9PiB7XG4gICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcigndGluZGV4JywgaSlcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcbiAgICAgICAgICAgIH0saSksXG4gICAgICAgICAgICBpbWc6IGltZ3NbaV0sXG4gICAgICAgICAgICBjb2xfdHlwZTogXCJpY29uX3NtYWxsXzNcIlxuICAgICAgICB9KTtcbiAgICB9XG59XG5zd2l0Y2ggKHBhcnNlSW50KHRpbmRleCkpIHtcbiAgICBjYXNlIDA6XG4gICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvaG9tZScpKS5ydWxlKVxuICAgICAgICBicmVhaztcbiAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgIFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2FsYnVtJykpLnJ1bGUpXG4gICAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjogICAgICAgIFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL215JykpLnJ1bGUpXG4gICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5zZXRSZXN1bHQoZCkiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjKiojI2Z5cGFnZSIsImdyb3VwIjoiRumfs+mikSIsInNlYXJjaEZpbmQiOiJqczpcbnZhciBkID0gW107XG5sZXQga2V5ID0gTVlfS0VZV09SRDtcblxuaWYgKE1ZX1BBR0UgPT0gMSkge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIue9keaYk+S6kemfs+S5kOaQnOe0ojpcIiArIGtleSxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eT9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczokLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2Uvc2VhcmNoXCIpJyxcbiAgICAgICAgZXh0cmE6IHtcbiAgICAgICAgICAgIHRpdGxlOiBrZXksXG4gICAgICAgICAgICB0eXBlOiAnbmV0ZWFzZSdcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAgdGl0bGU6IFwiUVHpn7PkuZDmkJzntKI6XCIgKyBrZXksXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHk/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6JC5yZXF1aXJlKFwiaGlrZXI6Ly9wYWdlL3NlYXJjaFwiKScsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICB0aXRsZToga2V5LFxuICAgICAgICAgICAgdHlwZTogJ3FxJ1xuICAgICAgICB9XG4gICAgfSlcbn1cbnNldFJlc3VsdChkKSIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IioiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Ye95pWwXCIsXCJwYXRoXCI6XCJoYW5zaHVcIixcInJ1bGVcIjpcImpzOlxcbi8v6K+35rGC5Yqg5a+GXFxuZXZhbChnZXRDcnlwdG9KUygpKTtcXG5cXG5mdW5jdGlvbiBFbmNyeXB0KHdvcmQsc2luZykge1xcbiAgICBjb25zdCBrZXkgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShzaW5nKTtcXG4gICAgY29uc3QgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcXFwiZTVnM2g5azFsMm00cDZxOFxcXCIpO1xcbiAgICB2YXIgZW5jcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmVuY3J5cHQod29yZCwga2V5LCB7XFxuICAgICAgICBpdjogaXYsXFxuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICB9KTtcXG4gICAgdmFyIGNpcGhlcnRleHQgPSBlbmNyeXB0ZWQuY2lwaGVydGV4dC50b1N0cmluZyhDcnlwdG9KUy5lbmMuSGV4KTtcXG4gICAgcmV0dXJuIGNpcGhlcnRleHQudG9VcHBlckNhc2UoKTtcXG59XFxuXFxuLy/or7fmsYLlh73mlbBcXG5mdW5jdGlvbiBnZXRodG1sKHVybCxzaW5nLHdvcmQpIHtcXG52YXIgZGF0YSA9IEVuY3J5cHQod29yZCxzaW5nKTsgLy9sb2coZGF0YSlcXG52YXIgZGF0YTIgPSBkYXRhLmxlbmd0aC8yOyAvL2xvZyhkYXRhMilcXG52YXIgQXV0aG9yaXphdGlvbiA9IHNpbmcubWF0Y2goL14uezE2fS8pWzBdK2RhdGEubWF0Y2goYF4ueyR7ZGF0YTJ9fWApWzBdK3NpbmcubWF0Y2goLy57MTZ9JC8pWzBdK2RhdGEubWF0Y2goYC57JHtkYXRhMn19JGApWzBdOyAvL2xvZyhBdXRob3JpemF0aW9uKVxcbnZhciBBdXRob3JpemF0aW9uID0gbWQ1KEF1dGhvcml6YXRpb24pLnRvVXBwZXJDYXNlKCk7IC8vbG9nKEF1dGhvcml6YXRpb24pXFxudmFyIGJvZHkgPSAnZGF0YT0nK2RhdGErJyZzaW5nPScrc2luZzsgLy9sb2coYm9keSlcXG52YXIgaGVhZGVycyA9IHtcXG4gICAgJ0F1dGhvcml6YXRpb24nOiBBdXRob3JpemF0aW9uLFxcbiAgICAnVXNlci1BZ2VudCc6ICdBbmRyb2lkJyxcXG4gICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxcbiAgICAnQ29udGVudC1MZW5ndGgnOiAnMTcxJyxcXG4gICAgJ0hvc3QnOiAndC5pamFuei5jbicsXFxuICAgICdDb25uZWN0aW9uJzogJ0tlZXAtQWxpdmUnLFxcbiAgICAvLydBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCdcXG59XFxudmFyIGh0bWwgPSBmZXRjaCh1cmwse1xcbiAgICBoZWFkZXJzOiBoZWFkZXJzLFxcbiAgICBib2R5OiBib2R5LFxcbiAgICBtZXRob2Q6ICdQT1NUJ1xcbn0pOyAvL2xvZyhodG1sKVxcbnJldHVybiBodG1sXFxufVxcbi8v6YOo5YiG5Ye95pWw5p2l6Ieq566A5Y2V6Z+z5LmQXFxuZnVuY3Rpb24gYWRkYWxidW0oczEsIHMyKSB7XFxuICAgIC8vIOiuvue9ruWwgemdouWbvueJh1xcbiAgICBpZiAoczIgJiYgczIgIT09IFxcXCJcXFwiKSB7XFxuICAgICAgICBwdXRNeVZhcignYWxidW0nLCBzMik7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwdXRNeVZhcignYWxidW0nLCAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tb3JlLzQ1LnBuZycpO1xcbiAgICB9XFxuXFxuICAgIC8vIOaehOW7uuaWsOeahOatjOWNleWvueixoVxcbiAgICB2YXIgbmFtZSA9IHtcXG4gICAgICAgIGFjdDogXFxcInBsYXlsaXN0XFxcIixcXG4gICAgICAgIHRpdGxlOiBzMSxcXG4gICAgICAgIHBpYzogZ2V0TXlWYXIoJ2FsYnVtJyksXFxuICAgICAgICB0eXBlOiBcXFwibG9jYWxcXFwiLFxcbiAgICAgICAgaWQ6IFxcXCJoaWtlcm5iXFxcIixcXG4gICAgICAgIGRhdGE6IFtdICAvLyDliJ3lp4vljJYgZGF0YSDmlbDnu4RcXG4gICAgfTtcXG5cXG4gICAgLy8g6K+75Y+W5bey5pyJ55qE5q2M5Y2V5pWw5o2uXFxuICAgIHZhciBzdHIgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9tb24v5bK45ZCs6Z+z5LmQL2FsYnVtLmpzJywwKTtcXG4gICAgaWYgKCFzdHIpIHtcXG4gICAgICAgIC8vIOWmguaenOaWh+S7tuS4jeWtmOWcqO+8jOWIm+W7uuaWsOWIl+ihqOW5tuS/neWtmFxcbiAgICAgICAgdmFyIGxpc3QgPSB7IFxcXCJMb2NhbExpc3RcXFwiOiBbbmFtZV0gfTtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL21vbi/lsrjlkKzpn7PkuZAvYWxidW0uanMnLCBKU09OLnN0cmluZ2lmeShsaXN0KSwgMCk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvLyDmlofku7blrZjlnKjml7bvvIzop6PmnpAgSlNPTiDmlbDmja5cXG4gICAgICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShzdHIpO1xcblxcbiAgICAgICAgLy8g5qOA5p+l5piv5ZCm5a2Y5Zyo55u45ZCM55qE5q2M5Y2VXFxuICAgICAgICB2YXIgZXhpc3RpbmdJbmRleCA9IGxpc3QuTG9jYWxMaXN0LmZpbmRJbmRleCh4ID0+IHgudGl0bGUgPT09IG5hbWUudGl0bGUpO1xcblxcbiAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggPT09IC0xKSB7XFxuICAgICAgICAgICAgLy8g5aaC5p6c5q2M5Y2V5LiN5a2Y5Zyo77yM5YiZ5bCG5YW25re75Yqg5YiwIExvY2FsTGlzdCDlvIDlpLRcXG4gICAgICAgICAgICBsaXN0LkxvY2FsTGlzdC51bnNoaWZ0KG5hbWUpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAvLyDlpoLmnpzmrYzljZXlt7LlrZjlnKjvvIzlsIblhbbnp7vliLAgTG9jYWxMaXN0IOW8gOWktFxcbiAgICAgICAgICAgIHZhciBleGlzdGluZyA9IGxpc3QuTG9jYWxMaXN0LnNwbGljZShleGlzdGluZ0luZGV4LCAxKVswXTtcXG4gICAgICAgICAgICBsaXN0LkxvY2FsTGlzdC51bnNoaWZ0KGV4aXN0aW5nKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIC8vIOS/neWtmOabtOaWsOWQjueahOWIl+ihqFxcbiAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvbW9uL+WyuOWQrOmfs+S5kC9hbGJ1bS5qcycsIEpTT04uc3RyaW5naWZ5KGxpc3QpLCAwKTtcXG4gICAgfVxcbn1cXG5jb25zdCBnZXRsb2NhbCA9ICgpID0+IHtcXG4gICAgbGV0IGRvd24gPSBcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9tb24v5bK45ZCs6Z+z5LmQL2FsYnVtLmpzXFxcIjtcXG4gICAgZXZhbChcXFwiZGF0YSA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgXFxuICAgIGlmICghZGF0YS5Mb2NhbExpc3QpIHtcXG4gICAgICAgIGRhdGEuTG9jYWxMaXN0ID0gW107XFxuICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICBldmFsKFxcXCJkYXRhID1cXFwiICsgcmVhZEZpbGUoZG93bikpOyAgLy8g6YeN5paw6K+75Y+W5paH5Lu2XFxuICAgIH1cXG4gICAgXFxuICAgIC8vIOS7heiOt+WPliBgdHlwZWAg5Li6IGBsb2NhbGAg55qE5q2M5Y2VXFxuICAgIGxldCBsb2NhbFBsYXlsaXN0cyA9IGRhdGEuTG9jYWxMaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSA9PT0gXFxcImxvY2FsXFxcIik7XFxuICAgIFxcbiAgICAvLyDojrflj5bmiYDmnInmnKzlnLDmrYzljZXnmoTmoIfpophcXG4gICAgbGV0IG5hbWVzID0gbG9jYWxQbGF5bGlzdHMubWFwKGl0ZW0gPT4gaXRlbS50aXRsZSk7XFxuICAgIC8vIOa3u+WKoCBcXFwi5Yib5bu65q2M5Y2VXFxcIiDpgInpoblcXG4gICAgbGV0IHVwTWFwID0gbmFtZXMuY29uY2F0KFtcXFwi5Yib5bu65q2M5Y2VXFxcIl0pO1xcbiAgICBcXG4gICAgLy8g6buY6K6k6YCJ5Lit56ys5LiA5Liq5q2M5Y2V77yM5aaC5p6c5a2Y5Zyo5aSa5Liq5q2M5Y2V5YiZ6buY6K6k6YCJ5Lit56ys5LqM5LiqXFxuICAgIGxldCBpbmRleCA9IHVwTWFwLmxlbmd0aCA+IDEgPyAyIDogMTtcXG4gICAgXFxuICAgIHJldHVybiB7IHVwTWFwLCBpbmRleCB9O1xcbn07XFxuXFxuY29uc3QgZ2V0bG9jYWxsb3ZlID0gKGl0ZW0sIGlucHV0KSA9PiB7XFxuICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgIGNhc2UgXFxcIuWIm+W7uuatjOWNlVxcXCI6XFxuICAgICAgICByZXR1cm4gJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hhbnNodScpKS5ydWxlKVxcbiAgICAgICAgY29uc3QgaGlrZXJQb3AgPSAkLnJlcXVpcmUoXFxcImh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTY5NjZcXFwiKTtcXG4gICAgICAgIGhpa2VyUG9wLmlucHV0VHdvUm93KHtcXG4gICAgICAgICAgICB0aXRsZUhpbnQ6IFxcXCLmoIfpophcXFwiLFxcbiAgICAgICAgICAgIHRpdGxlRGVmYXVsdDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgdXJsSGludDogXFxcIuWbvueJh1xcXCIsXFxuICAgICAgICAgICAgdXJsRGVmYXVsdDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgbm9BdXRvU29mdDogdHJ1ZSwgLy/kuI3oh6rliqjmiZPlvIDovpPlhaXms5VcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaWsOWinuatjOWNlVxcXCIsXFxuICAgICAgICAgICAgLy9oaWRlQ2FuY2VsOiB0cnVlLFxcbiAgICAgICAgICAgIGNvbmZpcm0oczEsIHMyKSB7XFxuICAgICAgICAgICAgICAgIGhpa2VyUG9wLnJ1bk9uTmV3VGhyZWFkKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRhbGJ1bShzMSxzMilcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vb2vkuoZcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgY2FuY2VsKCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g5Y+W5raI5LqGXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgfSlcXG4gICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgbGV0IGRvd24gPSBcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9tb24v5bK45ZCs6Z+z5LmQL2FsYnVtLmpzXFxcIjtcXG4gICAgZXZhbChcXFwiZGF0YSA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgIGxldCBsb2NhbFBsYXlsaXN0ID0gZGF0YS5Mb2NhbExpc3QuZmluZChpdCA9PiBpdC50aXRsZSA9PT0gaW5wdXQpO1xcbiAgICAgICAgXFxuICAgICAgICBpZiAoIWxvY2FsUGxheWxpc3QpIHtcXG4gICAgICAgICAgICB0b2FzdChcXFwi5pyq5om+5Yiw5pys5Zyw5q2M5Y2VXFxcIik7XFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICAgICAgXFxuICAgICAgICAvLyDmo4Dmn6XmrYzmm7LmmK/lkKblt7Lnu4/mlLbol4/ov4dcXG4gICAgICAgIGxldCBpc0NvbGxlY3RlZCA9IGxvY2FsUGxheWxpc3QuZGF0YS5zb21lKHRyYWNrID0+IHRyYWNrLnNvbmdpZCA9PT0gaXRlbS5zb25naWQpO1xcbiAgICAgICAgXFxuICAgICAgICBpZiAoaXNDb2xsZWN0ZWQpIHtcXG4gICAgICAgICAgICByZXR1cm4gdG9hc3QoXFxcIuW3sue7j+aUtuiXj+S6hlxcXCIpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAvLyDmt7vliqDmrYzmm7LliLDmrYzljZVcXG4gICAgICAgICAgICBsb2NhbFBsYXlsaXN0LmRhdGEucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBhdXRob3I6IGl0ZW0uYXV0aG9yLFxcbiAgICAgICAgICAgICAgICBwaWM6IGl0ZW0ucGljLFxcbiAgICAgICAgICAgICAgICBzb25naWQ6IGl0ZW0uc29uZ2lkLFxcbiAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXFxuICAgICAgICAgICAgICAgIHN0cm1pZDogaXRlbS5zdHJtaWRcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICAvLyDkv53lrZjmm7TmlrDlkI7nmoTmlbDmja5cXG4gICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICAgICAgdG9hc3QoXFxcIuaUtuiXj+aIkOWKn1xcXCIpO1xcbiAgICAgICAgfVxcbn07XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Kej5p6QXCIsXCJwYXRoXCI6XCJsYXp5XCIsXCJydWxlXCI6XCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9oYW5zaHUnKSkucnVsZSlcXG4gICAgdmFyIHlpbnpoaSA9IGdldEl0ZW0oXFxcInlpbnpoaVxcXCIsIFxcXCIxMjhcXFwiKTsgLy9sb2coeWluemhpKVxcbiAgICB2YXIgc29uZ2lkID0gaW5wdXQuc3BsaXQoJyMnKVswXTtcXG4gICAgdmFyIHN0cm1pZCA9IGlucHV0LnNwbGl0KCcjJylbMV1cXG4gICAgdmFyIHR5cGUgPSBpbnB1dC5zcGxpdCgnIycpWzJdO1xcbiAgICB2YXIgc2luZyA9IG1kNShzb25naWQgKyB5aW56aGkgKyBzdHJtaWQgKyB0eXBlICsgJ0IzdXoyYlRvRllEUzZFMzluVG40aEJOb2pyTTJPeUw5bXVzaWMnKS50b1VwcGVyQ2FzZSgpOyAvL2xvZyhzaW5nKSBcXG4gICAgdmFyIHdvcmQgPSBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICBcXFwiYWN0XFxcIjogXFxcIm11c2ljdXJsXFxcIixcXG4gICAgICAgIFxcXCJ0eXBlXFxcIjogdHlwZSxcXG4gICAgICAgIFxcXCJzb25naWRcXFwiOiBzb25naWQsXFxuICAgICAgICBcXFwic3RybWlkXFxcIjogc3RybWlkLFxcbiAgICAgICAgXFxcImZpbGVcXFwiOiB5aW56aGlcXG4gICAgfSk7IC8vbG9nKHdvcmQpXFxuICAgIHZhciBodG1sID0gSlNPTi5wYXJzZShnZXRodG1sKCdodHRwOi8vdC5pamFuei5jbi9tYi5waHAnLCBzaW5nLCB3b3JkKSk7IC8vbG9nKGh0bWwpXFxuICAgIHZhciBwbGF5ID0gaHRtbC5kYXRhLnVybDsgLy9sb2cocGxheSlcXG4gICAgaWYgKHBsYXkgPT0gJ2ZhbHNlJykge1xcbiAgICAgICAgdG9hc3QoJ+aaguaXoOivpei1hOa6kCcpXFxuICAgICAgICB2YXIgdXJsID0gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgcmV0dXJuIHVybFxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdmFyIGx5c2ljID0gaHRtbC5kYXRhLmx5c2ljOyAvL2xvZyhseXNpYylcXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgdXJsczogW3BsYXldLFxcbiAgICAgICAgICAgIGx5cmljOiBseXNpY1xcbiAgICAgICAgfVxcbiAgICB9XFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuatjOWNleivpuaDhVwiLFwicGF0aFwiOlwieWlqaVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hhbnNodScpKS5ydWxlKVxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbGF6eScpKS5ydWxlKVxcbnZhciBMb2NhbD0oKT0+e1xcbiAgICBkYXRhID0gTVlfUEFSQU1TLmRhdGFcXG4gICAgZGF0YS5mb3JFYWNoKGl0ZW09PntcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZStcXFwiIC0gXFxcIitpdGVtLmF1dGhvcixcXG4gICAgICAgIC8vZGVzYzogLFxcbiAgICAgICAgaW1nOiBpdGVtLnBpYyxcXG4gICAgICAgIHVybDogYCR7aXRlbS5zb25naWR9IyR7aXRlbS5zdHJtaWR9IyR7aXRlbS50eXBlfWArbGF6eSxcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsXFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICB0aXRsZTogXFxcIuaUtuiXj+atjOabslxcXCIsXFxuICAgIGpzOiAkLnRvU3RyaW5nKChpdGVtKSA9PiB7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hhbnNodScpKS5ydWxlKTsgXFxuICAgICAgICBsZXQgeyB1cE1hcCwgaW5kZXggfSA9IGdldGxvY2FsKCk7ICAgICAgICAgIFxcbiAgICAgICAgcmV0dXJuICQodXBNYXAsIGluZGV4LCBcXFwi6YCJ5oup5q2M5Y2VXFxcIikuc2VsZWN0KChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9oYW5zaHUnKSkucnVsZSk7IFxcbiAgICAgICAgICAgIHJldHVybiBnZXRsb2NhbGxvdmUoaXRlbSwgaW5wdXQpOyAgXFxuICAgICAgICB9LCBpdGVtKTtcXG4gICAgfSwgaXRlbSlcXG59LHtcXG4gICAgdGl0bGU6ICflj5bmtojmlLbol48nLFxcbiAgICBqczogJC50b1N0cmluZygoaXRlbSwgdSkgPT4ge1xcbiAgICAgICAgbGV0IGRvd24gPSBcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9tb24v5bK45ZCs6Z+z5LmQL2FsYnVtLmpzXFxcIjtcXG4gICAgICAgIGV2YWwoXFxcImRhdGEgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuXFxuICAgICAgICAvLyDmo4Dmn6XmmK/lkKblrZjlnKjmnKzlnLDmrYzljZVcXG4gICAgICAgIGlmIChkYXRhLkxvY2FsTGlzdCAmJiBkYXRhLkxvY2FsTGlzdC5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgbGV0IGxvY2FsUGxheWxpc3QgPSBkYXRhLkxvY2FsTGlzdC5maW5kKHBsYXlsaXN0ID0+IHBsYXlsaXN0LnR5cGUgPT09IFxcXCJsb2NhbFxcXCIpO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGlmIChsb2NhbFBsYXlsaXN0KSB7XFxuICAgICAgICAgICAgICAgIC8vIOafpeaJvuW5tuenu+mZpOimgeWPlua2iOaUtuiXj+eahOatjOabslxcbiAgICAgICAgICAgICAgICBsb2NhbFBsYXlsaXN0LmRhdGEgPSBsb2NhbFBsYXlsaXN0LmRhdGEuZmlsdGVyKHNvbmcgPT4gc29uZy5zb25naWQgIT09IGl0ZW0uc29uZ2lkKTtcXG4gICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgIC8vIOS/neWtmOabtOaWsOWQjueahOaVsOaNrlxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLlj5bmtojmlLbol4/miJDlip9cXFwiKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pyq5om+5Yiw5pys5Zyw5q2M5Y2VXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB0b2FzdChcXFwi5pyq5om+5Yiw5Lu75L2V5q2M5Y2VXFxcIik7XFxuICAgICAgICB9XFxuICAgICAgICByZWZyZXNoUGFnZSgpOyAvLyDliLfmlrDpobXpnaJcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgIH0sIGl0ZW0pXFxufV1cXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgfSlcXG59XFxudmFyIE9ubGluZSA9ICgpPT57XFxudmFyIGFjdCA9IGdldFBhcmFtKCdhY3QnKT9nZXRQYXJhbSgnYWN0Jyk6TVlfUEFSQU1TLmFjdFxcbnZhciBpZCA9IGdldFBhcmFtKCdpZCcpP2dldFBhcmFtKCdpZCcpOk1ZX1BBUkFNUy5pZFxcbnZhciB0eXBlID0gZ2V0UGFyYW0oJ3R5cGUnKT9nZXRQYXJhbSgndHlwZScpOk1ZX1BBUkFNUy50eXBlXFxudmFyIHNpbmcgPSBtZDUoaWQrdHlwZSsnQjN1ejJiVG9GWURTNkUzOW5UbjRoQk5vanJNMk95TDknKS50b1VwcGVyQ2FzZSgpOyAvL2xvZyhzaW5nKVxcbnZhciB3b3JkID0gSlNPTi5zdHJpbmdpZnkoe1xcXCJhY3RcXFwiOiBhY3QsXFxcInR5cGVcXFwiOiB0eXBlLFxcXCJpZFxcXCI6IGlkfSk7XFxuXFxudmFyIGh0bWwgPSBnZXRodG1sKCdodHRwOi8vdC5pamFuei5jbi9tYi5waHAnLCBzaW5nLCB3b3JkKVxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5zb25nczsgLy9sb2cobGlzdClcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZStcXFwiIC0gXFxcIitpdGVtLmF1dGhvcixcXG4gICAgICAgIC8vZGVzYzogLFxcbiAgICAgICAgaW1nOiBpdGVtLnBpYyxcXG4gICAgICAgIHVybDogYCR7aXRlbS5zb25naWR9IyR7aXRlbS5zdHJtaWR9IyR7aXRlbS50eXBlfWArbGF6eSxcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsXFxuICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICB0aXRsZTogXFxcIuaUtuiXj+atjOabslxcXCIsXFxuICAgIGpzOiAkLnRvU3RyaW5nKChpdGVtKSA9PiB7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hhbnNodScpKS5ydWxlKTsgXFxuICAgICAgICBsZXQgeyB1cE1hcCwgaW5kZXggfSA9IGdldGxvY2FsKCk7ICAgICAgICAgIFxcbiAgICAgICAgcmV0dXJuICQodXBNYXAsIGluZGV4LCBcXFwi6YCJ5oup5q2M5Y2VXFxcIikuc2VsZWN0KChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9oYW5zaHUnKSkucnVsZSk7IFxcbiAgICAgICAgICAgIHJldHVybiBnZXRsb2NhbGxvdmUoaXRlbSwgaW5wdXQpOyAgXFxuICAgICAgICB9LCBpdGVtKTtcXG4gICAgfSwgaXRlbSlcXG59XVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxufVxcbmlmKE1ZX1BBUkFNUy50eXBlPT1cXFwibG9jYWxcXFwiKXtcXG4gICAgTG9jYWwoKVxcbn1lbHNle1xcbk9ubGluZSgpXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi572R5piT5LqR5q2M5Y2VXCIsXCJwYXRoXCI6XCJ3eXlnZWRhblwiLFwicnVsZVwiOlwianM6XFxubGV0IGQgPSBbXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hhbnNodScpKS5ydWxlKVxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbGF6eScpKS5ydWxlKVxcbmxldCB3eXljayA9IGdldEl0ZW0oXFxcInd5eWNrXFxcIiwgXFxcIlxcXCIpOyBsb2cod3l5Y2spXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfnvZHmmJPkupHkuKrkurrmrYzljZUnLFxcbiAgICAvL2Rlc2M6ICcwJyxcXG4gICAgaW1nOiAnaHR0cDovL3BwLm15YXBwLmNvbS9tYV9pY29uLzAvaWNvbl8xMTY4ODUxXzE3MjUwNjcxNzAvMjU2JyxcXG4gICAgdXJsOiAkLmV4cG9ydHMgPSAkKFtcXFwi55m75b2VXFxcIixcXFwi6YCA5Ye6XFxcIl0pLnNlbGVjdCgoaXNyKSA9PiB7XFxuICAgIGlmIChpbnB1dCA9PT0gXFxcIueZu+W9lVxcXCIpIHtcXG4gICAgICAgIHJldHVybiAkKFxcXCLmlZnnqIvvvJpodHRwczovL2Zsb3d1cy5jbi9qYW56L3NoYXJlLzRmOTc1NTBjLTVjM2UtNGU3ZS04ZmEyLTVhMzgxZDRkNDlkNFxcXCIsIFxcXCLor7fovpPlhaXkuKrkurrkuLvpobXliIbkuqvpk77mjqVcXFwiKS5pbnB1dCgoaXNyKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcInd5eWNrXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6I635Y+W5oiQ5YqfXFxcIjtcXG4gICAgICAgIH0sIGlzcik7XFxuICAgIH0gZWxzZSBpZihpbnB1dD09PVxcXCLpgIDlh7pcXFwiKXtcXG4gICAgICAgIGNsZWFySXRlbShcXFwid3l5Y2tcXFwiKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6YCA5Ye655m75b2VXFxcIjtcXG4gICAgfVxcbn0pLFxcbiAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG59KTtcXG52YXIgc2luZyA9IG1kNSgnbmV0ZWFzZTdjMWExMWVkMjVhNTM3NTE3MTBiNTExMjNhNGZkYzZiJykudG9VcHBlckNhc2UoKTsgLy9sb2coc2luZylcXG52YXIgd29yZCA9IEpTT04uc3RyaW5naWZ5KHtcXFwiYWN0XFxcIjpcXFwibG9naW5cXFwiLFxcXCJ0eXBlXFxcIjpcXFwibmV0ZWFzZVxcXCIsXFxcImxvZ2luXFxcIjp3eXlja30pO1xcblxcbnZhciBodG1sID0gZ2V0aHRtbCgnaHR0cDovL3QuaWphbnouY24vbWIucGhwJywgc2luZywgd29yZClcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UoaHRtbCkubGlzdDsgLy9sb2cobGlzdClcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcbiAgICAgICAgLy9kZXNjOiBpdGVtLmF1dGhvcixcXG4gICAgICAgIGltZzogaXRlbS5waWMsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UveWlqaSNub0xvYWRpbmcjI25vSGlzdG9yeSNgLFxcbiAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18zJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgYWN0OiAncGxheWxpc3QnLFxcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcXG4gICAgICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aUtuiXj+atjOWNlScsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaXRlbSwgdSkgPT4ge1xcbiAgIHZhciBuYW1lID0ge1xcbiAgICAgICAgYWN0OiBcXFwicGxheWxpc3RcXFwiLFxcbiAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgIHBpYzogaXRlbS5waWMsXFxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXFxuICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgIGRhdGE6IFtdXFxuICAgIH07XFxuICAgIHZhciBzdHIgPSByZWFkRmlsZSh1LDApO1xcbiAgICBpZiAoIXN0cikge1xcbiAgICAgICAgdmFyIGxpc3QgPSB7IFxcXCJMb2NhbExpc3RcXFwiOiBbbmFtZV0gfTtcXG4gICAgICAgIHNhdmVGaWxlKHUsIEpTT04uc3RyaW5naWZ5KGxpc3QpLCAwKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShzdHIpO1xcbiAgICAgICAgdmFyIGV4aXN0aW5nSW5kZXggPSBsaXN0LkxvY2FsTGlzdC5maW5kSW5kZXgoeCA9PiB4LnRpdGxlID09PSBuYW1lLnRpdGxlKTtcXG4gICAgICAgIGlmIChleGlzdGluZ0luZGV4ID09PSAtMSkge1xcbiAgICAgICAgICAgIGxpc3QuTG9jYWxMaXN0LnVuc2hpZnQobmFtZSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciBleGlzdGluZyA9IGxpc3QuTG9jYWxMaXN0LnNwbGljZShleGlzdGluZ0luZGV4LCAxKVswXTtcXG4gICAgICAgICAgICBsaXN0LkxvY2FsTGlzdC51bnNoaWZ0KGV4aXN0aW5nKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHNhdmVGaWxlKHUsIEpTT04uc3RyaW5naWZ5KGxpc3QpLCAwKTtcXG4gICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvYXN0KFxcXCLmlLbol4/lpb3kuoZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0sICdoaWtlcjovL2ZpbGVzL3J1bGVzL21vbi/lsrjlkKzpn7PkuZAvYWxidW0uanMnKVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxuXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJRUeatjOWNlVwiLFwicGF0aFwiOlwicXFnZWRhblwiLFwicnVsZVwiOlwianM6XFxubGV0IGQgPSBbXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hhbnNodScpKS5ydWxlKVxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbGF6eScpKS5ydWxlKVxcbmxldCBxcWNrID0gZ2V0SXRlbShcXFwicXFja1xcXCIsIFxcXCJcXFwiKTsgbG9nKHFxY2spXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICdRUeS4quS6uuatjOWNlScsXFxuICAgIC8vZGVzYzogJzAnLFxcbiAgICBpbWc6ICdodHRwOi8vcHAubXlhcHAuY29tL21hX2ljb24vMC9pY29uXzYyNTlfMTcyNDkxODU5Ny8yNTYnLFxcbiAgICB1cmw6ICQuZXhwb3J0cyA9ICQoW1xcXCLnmbvlvZVcXFwiLFxcXCLpgIDlh7pcXFwiXSkuc2VsZWN0KChpc3IpID0+IHtcXG4gICAgaWYgKGlucHV0ID09PSBcXFwi55m75b2VXFxcIikge1xcbiAgICAgICAgcmV0dXJuICQoXFxcIuaVmeeoi++8mmh0dHBzOi8vZmxvd3VzLmNuL2phbnovc2hhcmUvMTYwMzE2YTktYzc4ZC00YzM3LThlOGQtYWZiYTMyYjBkZGJhXFxcIiwgXFxcIuivt+i+k+WFpVFR5Y+3L+S4quS6uuS4u+mhteWIhuS6q+mTvuaOpVxcXCIpLmlucHV0KChpc3IpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwicXFja1xcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+iOt+WPluaIkOWKn1xcXCI7XFxuICAgICAgICB9LCBpc3IpO1xcbiAgICB9IGVsc2UgaWYoaW5wdXQ9PT1cXFwi6YCA5Ye6XFxcIil7XFxuICAgICAgICBjbGVhckl0ZW0oXFxcInFxY2tcXFwiKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6YCA5Ye655m75b2VXFxcIjtcXG4gICAgfVxcbn0pLFxcbiAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG59KTtcXG52YXIgc2luZyA9IG1kNSgnbmV0ZWFzZTdjMWExMWVkMjVhNTM3NTE3MTBiNTExMjNhNGZkYzZiJykudG9VcHBlckNhc2UoKTsgLy9sb2coc2luZylcXG52YXIgd29yZCA9IEpTT04uc3RyaW5naWZ5KHtcXFwiYWN0XFxcIjpcXFwibG9naW5cXFwiLFxcXCJ0eXBlXFxcIjpcXFwicXFcXFwiLFxcXCJsb2dpblxcXCI6cXFja30pO1xcblxcbnZhciBodG1sID0gZ2V0aHRtbCgnaHR0cDovL3QuaWphbnouY24vbWIucGhwJywgc2luZywgd29yZClcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UoaHRtbCkubGlzdDsgLy9sb2cobGlzdClcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcbiAgICAgICAgLy9kZXNjOiBpdGVtLmF1dGhvcixcXG4gICAgICAgIGltZzogaXRlbS5waWMsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UveWlqaSNub0xvYWRpbmcjI25vSGlzdG9yeSNgLFxcbiAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18zJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgYWN0OiAncGxheWxpc3QnLFxcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcXG4gICAgICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aUtuiXj+atjOWNlScsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaXRlbSwgdSkgPT4ge1xcbiAgIHZhciBuYW1lID0ge1xcbiAgICAgICAgYWN0OiBcXFwicGxheWxpc3RcXFwiLFxcbiAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgIHBpYzogaXRlbS5waWMsXFxuICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXFxuICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgIGRhdGE6IFtdXFxuICAgIH07XFxuICAgIHZhciBzdHIgPSByZWFkRmlsZSh1LDApO1xcbiAgICBpZiAoIXN0cikge1xcbiAgICAgICAgdmFyIGxpc3QgPSB7IFxcXCJMb2NhbExpc3RcXFwiOiBbbmFtZV0gfTtcXG4gICAgICAgIHNhdmVGaWxlKHUsIEpTT04uc3RyaW5naWZ5KGxpc3QpLCAwKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShzdHIpO1xcbiAgICAgICAgdmFyIGV4aXN0aW5nSW5kZXggPSBsaXN0LkxvY2FsTGlzdC5maW5kSW5kZXgoeCA9PiB4LnRpdGxlID09PSBuYW1lLnRpdGxlKTtcXG4gICAgICAgIGlmIChleGlzdGluZ0luZGV4ID09PSAtMSkge1xcbiAgICAgICAgICAgIGxpc3QuTG9jYWxMaXN0LnVuc2hpZnQobmFtZSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciBleGlzdGluZyA9IGxpc3QuTG9jYWxMaXN0LnNwbGljZShleGlzdGluZ0luZGV4LCAxKVswXTtcXG4gICAgICAgICAgICBsaXN0LkxvY2FsTGlzdC51bnNoaWZ0KGV4aXN0aW5nKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHNhdmVGaWxlKHUsIEpTT04uc3RyaW5naWZ5KGxpc3QpLCAwKTtcXG4gICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvYXN0KFxcXCLmlLbol4/lpb3kuoZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0sICdoaWtlcjovL2ZpbGVzL3J1bGVzL21vbi/lsrjlkKzpn7PkuZAvYWxidW0uanMnKVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxuXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKJcIixcInBhdGhcIjpcInNlYXJjaFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hhbnNodScpKS5ydWxlKVxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvbGF6eScpKS5ydWxlKVxcbnZhciBzaW5nID0gbWQ1KE1ZX1BBUkFNUy50aXRsZSArICcwJytNWV9QQVJBTVMudHlwZSsnQjN1ejJiVG9GWURTNkUzOW5UbjRoQk5vanJNMk95TDknKS50b1VwcGVyQ2FzZSgpOyAvL2xvZyhzaW5nKVxcbnZhciB3b3JkID0gSlNPTi5zdHJpbmdpZnkoe1xcXCJhY3RcXFwiOlxcXCJzZWFyY2hcXFwiLFxcXCJ0eXBlXFxcIjpNWV9QQVJBTVMudHlwZSxcXFwia2V5d29yZHNcXFwiOmVuY29kZVVSSUNvbXBvbmVudChNWV9QQVJBTVMudGl0bGUpLFxcXCJrZXl0eXBlXFxcIjpcXFwiMFxcXCJ9KTsgLy9sb2cod29yZCkgXFxuXFxudmFyIGh0bWwgPSBnZXRodG1sKCdodHRwOi8vdC5pamFuei5jbi9tYi5waHAnLCBzaW5nLCB3b3JkKVxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5saXN0czsgLy9sb2cobGlzdClcXG5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uYXV0aG9yLFxcbiAgICAgICAgaW1nOiBpdGVtLnBpYyxcXG4gICAgICAgIHVybDogYCR7aXRlbS5zb25naWR9IyR7aXRlbS5zdHJtaWR9IyR7aXRlbS50eXBlfWArbGF6eSxcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgICAgIGV4dHJhOntcXG4gICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlLFxcbiAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgdGl0bGU6IFxcXCLmlLbol4/mrYzmm7JcXFwiLFxcbiAgICBqczogJC50b1N0cmluZygoaXRlbSkgPT4ge1xcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9oYW5zaHUnKSkucnVsZSk7IFxcbiAgICAgICAgbGV0IHsgdXBNYXAsIGluZGV4IH0gPSBnZXRsb2NhbCgpOyAgICAgICAgICBcXG4gICAgICAgIHJldHVybiAkKHVwTWFwLCBpbmRleCwgXFxcIumAieaLqeatjOWNlVxcXCIpLnNlbGVjdCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvaGFuc2h1JykpLnJ1bGUpOyBcXG4gICAgICAgICAgICByZXR1cm4gZ2V0bG9jYWxsb3ZlKGl0ZW0sIGlucHV0KTsgIFxcbiAgICAgICAgfSwgaXRlbSk7XFxuICAgIH0sIGl0ZW0pXFxufV1cXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcblxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Y+R546wXCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJqczpcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfnvZHmmJPkupHmrYzljZUnLFxcbiAgICAgICAgZGVzYzogJ+S4quS6uuatjOWNlScsXFxuICAgICAgICBpbWc6ICdodHRwOi8vcHAubXlhcHAuY29tL21hX2ljb24vMC9pY29uXzExNjg4NTFfMTcyNTA2NzE3MC8yNTYnLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3d5eWdlZGFuI25vTG9hZGluZyMjbm9IaXN0b3J5IycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG4gICAgfSx7XFxuICAgICAgICB0aXRsZTogJ1FR5q2M5Y2VJyxcXG4gICAgICAgIGRlc2M6ICfkuKrkurrmrYzljZUnLFxcbiAgICAgICAgaW1nOiAnaHR0cDovL3BwLm15YXBwLmNvbS9tYV9pY29uLzAvaWNvbl82MjU5XzE3MjQ5MTg1OTcvMjU2JyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9xcWdlZGFuI25vTG9hZGluZyMjbm9IaXN0b3J5IycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG4gICAgfSx7XFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5o6o6I2Q5q2M5puyJyxcXG4gICAgICAgIGRlc2M6IHlpbnpoaSxcXG4gICAgICAgIGltZzogXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbW9yZS8zNi5wbmdcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxuICAgIH0pXFxuICAgIHZhciBodG1sID0gZmV0Y2goJ2h0dHA6Ly90LmlqYW56LmNuL2FiLnBocD9hY3Q9ZGF0YScsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICcnLFxcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ0FuZHJvaWQnLFxcbiAgICAgICAgICAgICdIb3N0JzogJ3QuaWphbnouY24nLFxcbiAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ0tlZXAtQWxpdmUnLFxcbiAgICAgICAgICAgIC8vJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwJ1xcbiAgICAgICAgfSxcXG4gICAgICAgIG1ldGhvZDogJ0dFVCdcXG4gICAgfSk7IC8vbG9nKGh0bWwpXFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5zb25ncztcXG4gICAgbGlzdC5mb3JFYWNoKChpdGVtLGkpID0+IHtcXG4gICAgICAgIGxldCB1cmwgPSBgJHtpdGVtLnNvbmdpZH0jJHtpdGVtLnN0cm1pZH0jJHtpdGVtLnR5cGV9YFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSsnIC0gJytpdGVtLmF1dGhvcixcXG4gICAgICAgICAgICAvL2Rlc2M6ICxcXG4gICAgICAgICAgICBpbWc6IGl0ZW0ucGljLFxcbiAgICAgICAgICAgIHVybDogdXJsICsgbGF6eSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgdGl0bGU6IFxcXCLmlLbol4/mrYzmm7JcXFwiLFxcbiAgICBqczogJC50b1N0cmluZygoaXRlbSkgPT4ge1xcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9oYW5zaHUnKSkucnVsZSk7IFxcbiAgICAgICAgbGV0IHsgdXBNYXAsIGluZGV4IH0gPSBnZXRsb2NhbCgpOyAgICAgICAgICBcXG4gICAgICAgIHJldHVybiAkKHVwTWFwLCBpbmRleCwgXFxcIumAieaLqeatjOWNlVxcXCIpLnNlbGVjdCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvaGFuc2h1JykpLnJ1bGUpOyBcXG4gICAgICAgICAgICByZXR1cm4gZ2V0bG9jYWxsb3ZlKGl0ZW0sIGlucHV0KTsgIFxcbiAgICAgICAgfSwgaXRlbSk7XFxuICAgIH0sIGl0ZW0pXFxufV1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9KVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5q2M5Y2VXCIsXCJwYXRoXCI6XCJhbGJ1bVwiLFwicnVsZVwiOlwianM6XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLmjpLooYzmppxcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvcmFua1xcXCIsXFxuICAgIGltZzogXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbW9yZS8yMy5wbmdcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfaWNvblxcXCJcXG59KVxcbnZhciByYW5rcyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkudHlodWEudG9wL3RvcGxpc3QvZGV0YWlsP3JlYWxJUD0xMTYuMjUuMTQ2LjE3NycsIHt9KSkubGlzdFxcbnRyeXtcXG4gIHZhciBsYiA9IHJhbmtzLnNsaWNlKDAsNikubWFwKGRhdGE9PiB7XFxuICAgICAgICAgICAgICAgIHZhciBvYmogPSB7fTtcXG4gICAgICAgICAgICAgICAgb2JqLnRpdGxlID0gZGF0YS5uYW1lXFxuICAgICAgICAgICAgICAgIG9iai5pbWcgPSBkYXRhLmNvdmVySW1nVXJsXFxuICAgICAgICAgICAgICAgIG9iai51cmw9IGAmYWN0PXRvcGxpc3QmaWQ9JHtkYXRhLmlkfSZ0eXBlPW5ldGVhc2VgXFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiBvYmo7XFxyXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB2YXIgY2ZnID0ge1xcbiAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UveWlqaT9ydWxlPeWyuOWQrOmfs+S5kHt1cmx9XFxcIixcXG4gICAgY3VzdG9tOiB0cnVlLFxcbiAgICBzcGVlZDogNSxcXG4gICAgc2hvdzogMyxcXG4gICAgYXV0b1BsYXk6IHRydWVcXG59XFxuICAgICAgICAgICAgdmFyIG8gPSB7fVxcbiAgICAgICAgICAgIHZhciByID0gJC5yZXF1aXJlKFxcXCJodHRwczovL2dpdGVlLmNvbS96ZXRhbHBoYS9oaWtlcnZpZXcvcmF3L21hc3Rlci9nbG9iYWwvanMveDV1aS5qc1xcXCIsdW5kZWZpbmVkLCAyNCk7XFxyXFxuICAgICAgICAgICAgci5zaG93KGQsbGIsY2ZnLG8pO1xcbn0gY2F0Y2ggKGUpIHtcXHJcXG4gICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcclxcbiAgICAgICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmjqjojZDmrYzljZUnLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICBpbWc6IFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21vcmUvMjMucG5nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJyxcXG4gICAgfSlcXG4gICAgdmFyIGh0bWwgPSBmZXRjaCgnaHR0cDovL3QuaWphbnouY24vYXQucGhwP2FjdD1wZXJzb25hbGl6ZWQnLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnJyxcXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdBbmRyb2lkJyxcXG4gICAgICAgICAgICAnSG9zdCc6ICd0LmlqYW56LmNuJyxcXG4gICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdLZWVwLUFsaXZlJyxcXG4gICAgICAgICAgICAvLydBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCdcXG4gICAgICAgIH0sXFxuICAgICAgICBtZXRob2Q6ICdHRVQnXFxuICAgIH0pOyAvL2xvZyhodG1sKVxcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UoaHRtbCk7XFxuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAvL2Rlc2M6ICxcXG4gICAgICAgICAgICBpbWc6IGl0ZW0ucGljLFxcbiAgICAgICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS95aWppI25vTG9hZGluZyMjbm9IaXN0b3J5I2AsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18zJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBhY3Q6ICdwbGF5bGlzdCcsXFxuICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5pS26JeP5q2M5Y2VJyxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpdGVtLCB1KSA9PiB7XFxuICAgdmFyIG5hbWUgPSB7XFxuICAgICAgICBhY3Q6IFxcXCJwbGF5bGlzdFxcXCIsXFxuICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcbiAgICAgICAgcGljOiBpdGVtLnBpYyxcXG4gICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcXG4gICAgICAgIGlkOiBpdGVtLmlkLFxcbiAgICAgICAgZGF0YTogW11cXG4gICAgfTtcXG4gICAgdmFyIHN0ciA9IHJlYWRGaWxlKHUsMCk7XFxuICAgIGlmICghc3RyKSB7XFxuICAgICAgICB2YXIgbGlzdCA9IHsgXFxcIkxvY2FsTGlzdFxcXCI6IFtuYW1lXSB9O1xcbiAgICAgICAgc2F2ZUZpbGUodSwgSlNPTi5zdHJpbmdpZnkobGlzdCksIDApO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHN0cik7XFxuICAgICAgICB2YXIgZXhpc3RpbmdJbmRleCA9IGxpc3QuTG9jYWxMaXN0LmZpbmRJbmRleCh4ID0+IHgudGl0bGUgPT09IG5hbWUudGl0bGUpO1xcbiAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggPT09IC0xKSB7XFxuICAgICAgICAgICAgbGlzdC5Mb2NhbExpc3QudW5zaGlmdChuYW1lKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIGV4aXN0aW5nID0gbGlzdC5Mb2NhbExpc3Quc3BsaWNlKGV4aXN0aW5nSW5kZXgsIDEpWzBdO1xcbiAgICAgICAgICAgIGxpc3QuTG9jYWxMaXN0LnVuc2hpZnQoZXhpc3RpbmcpO1xcbiAgICAgICAgfVxcbiAgICAgICAgc2F2ZUZpbGUodSwgSlNPTi5zdHJpbmdpZnkobGlzdCksIDApO1xcbiAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9hc3QoXFxcIuaUtuiXj+WlveS6hlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSwgJ2hpa2VyOi8vZmlsZXMvcnVsZXMvbW9uL+WyuOWQrOmfs+S5kC9hbGJ1bS5qcycpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaOkuihjFwiLFwicGF0aFwiOlwicmFua1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXVxcbi8v5o6S6KGM5p2l6Ieq5YW25a6D5aSn5L2s5bCP56iL5bqPYXBpXFxudmFyIHJhbmsgPSBnZXRNeVZhcigncmFuaycsICdXWScpXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHJhbms9PSdXWSc/XFxcIue9keaYk+S6keaOkuihjOamnFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFvliIfmjaJdXFxcIjpcXFwiUVHmjpLooYzmppxcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRb5YiH5o2iXVxcXCIsXFxuICAgIGltZzogcmFuaz09J1dZJz9cXFwiaHR0cDovL3BwLm15YXBwLmNvbS9tYV9pY29uLzAvaWNvbl8xMTY4ODUxXzE3MjUwNjcxNzAvMjU2XFxcIjpcXFwiaHR0cDovL3BwLm15YXBwLmNvbS9tYV9pY29uLzAvaWNvbl82MjU5XzE3MjQ5MTg1OTcvMjU2XFxcIixcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChyYW5rKSA9PiB7XFxuICAgICAgICByYW5rPT0nV1knP3B1dE15VmFyKCdyYW5rJywgJ1FRJyk6cHV0TXlWYXIoJ3JhbmsnLCAnV1knKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSxyYW5rKSxcXG4gICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxufSlcXG52YXIgV1kgPSAoKT0+e1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS50eWh1YS50b3AvdG9wbGlzdC9kZXRhaWw/cmVhbElQPTExNi4yNS4xNDYuMTc3Jywge30pKS5saXN0XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgdmFyIGltZyA9IGRhdGEuY292ZXJJbWdVcmxcXG4gICAgICAgIHZhciBwaWMgPSBkYXRhLnBpY1VybFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS5uYW1lLFxcbiAgICAgICAgICAgIGltZzogaW1nICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3lpamkjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOntcXG4gICAgICAgICAgICAgICAgYWN0OiAndG9wbGlzdCcsXFxuICAgICAgICAgICAgICAgIGlkOmRhdGEuaWQudG9TdHJpbmcoKSxcXG4gICAgICAgICAgICAgICAgdHlwZTogXFxcIm5ldGVhc2VcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSlcXG4gICAgfVxcbnZhciBRUSA9ICgpPT57XFxudmFyIGNvbnRzID0gcGFyc2VEb21Gb3JBcnJheShyZXF1ZXN0KCdodHRwczovL2MueS4lNzElNzEuY29tL25vZGUvcGMvd2tfdjE1L3RvcC5odG1sJyksICdib2R5JiYubGF5b3V0X3BhZ2VfX2NvbnQnKTtcXG52YXIgbGlzdHMgPSBbXTtcXG5mb3IgKHZhciBpIGluIGNvbnRzKSB7XFxuICAgIGxpc3RzLnB1c2gocGFyc2VEb21Gb3JBcnJheShjb250c1tpXSwgJy5sYXlvdXRfcGFnZV9fY29udCYmLnRvcGxpc3RfX2l0ZW0nKSlcXG4gICAgLy90YWJzLnB1c2gocGFyc2VEb21Gb3JIdG1sKGNvbnRzW2ldLCAnaDImJlRleHQnKSlcXG59XFxuZnVuY3Rpb24gc2V0TGlzdHMobGlzdHMsIGluZGV4KSB7XFxuICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdO1xcbiAgICBmb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnaW1nJiZhbHQnKSxcXG4gICAgICAgICAgICBpbWc6ICdodHRwczonK3BkZmgobGlzdFtqXSwgJ2ltZyYmc3JjJyksXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3lpamkjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnLFxcbiAgICAgICAgICAgIGV4dHJhOntcXG4gICAgICAgICAgICAgICAgYWN0OiAndG9wbGlzdCcsXFxuICAgICAgICAgICAgICAgIGlkOnBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCAnYSYmZGF0YS10aWQnKS5zcGxpdCgnLycpWzFdLFxcbiAgICAgICAgICAgICAgICB0eXBlOiBcXFwicXFcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuc2V0TGlzdHMobGlzdHMsIGdldFZhcihNWV9VUkwsICcwJykpO1xcbn1cXG5zd2l0Y2ggKHJhbmspIHtcXG4gICAgY2FzZSAnV1knOlxcbiAgICBXWSgpXFxuICAgIGJyZWFrO1xcbiAgICBjYXNlICdRUSc6XFxuICAgIFFRKClcXG4gICAgYnJlYWs7XFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qEXCIsXCJwYXRoXCI6XCJteVwiLFwicnVsZVwiOlwianM6XFxuLy/mnaXoh6rmrYzor43pgILphY1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuacrOWcsOatjOWNlVxcXCIsXFxuICAgIGltZzogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fc2V0dGluZzVcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfaWNvblxcXCIsXFxuICAgIHVybDogJChcXFwiaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjbm9SZWZyZXNoI1xcXCIpLnJ1bGUoKHR5cGUpID0+IHtcXG4gICAgICAgIGxldCBsaW5lID0gKCkgPT4gZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCBkID0gW107XFxuICAgICAgICBsaW5lKCk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnPGI+5pKt5pS+6Z+z6LSoPC9iPicuc21hbGwoKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICBpbWc6ICdoaWtlcjovL2ltYWdlcy9pY29uX21lbnU2JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCBwbGF5X3BsYXRmb3JtID0gZ2V0SXRlbSgncGxheV9wbGF0Zm9ybScsICcwJyk7XFxuICAgICAgICBsZXQgaCA9IFt7dDpcXFwi5qCH5YeGXFxcIix1OlxcXCIxMjhcXFwifSx7dDpcXFwi6auY5ZOBXFxcIix1OlxcXCIzMjBcXFwifSx7dDpcXFwi5peg5o2fKOe9keaYkylcXFwiLHU6XFxcIjE0MTFcXFwifSwge3Q6XFxcIuaXoOaNn1xcXCIsdTpcXFwic3FcXFwifV1cXG4gICAgICAgIGgubWFwKCh4LCBpKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHgudCxcXG4gICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGkgPT0gcGxheV9wbGF0Zm9ybSA/IDU1IDogNjMpICsgJy5zdmcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoeCxpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdwbGF5X3BsYXRmb3JtJywgaSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJ5aW56aGlcXFwiLHgudSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCB4LFN0cmluZyhpKSlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgc2V0UmVzdWx0KGQpXFxufSlcXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5paw5bu65q2M5Y2VXFxcIixcXG4gICAgaW1nOiBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tb3JlLzQ1LnBuZ1xcXCIsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2hhbnNodScpKS5ydWxlKVxcbiAgICAgICAgY29uc3QgaGlrZXJQb3AgPSAkLnJlcXVpcmUoXFxcImh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTY5NjZcXFwiKTtcXG4gICAgICAgIGhpa2VyUG9wLmlucHV0VHdvUm93KHtcXG4gICAgICAgICAgICB0aXRsZUhpbnQ6IFxcXCLmoIfpophcXFwiLFxcbiAgICAgICAgICAgIHRpdGxlRGVmYXVsdDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgdXJsSGludDogXFxcIuWbvueJh1xcXCIsXFxuICAgICAgICAgICAgdXJsRGVmYXVsdDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgbm9BdXRvU29mdDogdHJ1ZSwgLy/kuI3oh6rliqjmiZPlvIDovpPlhaXms5VcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaWsOWinuatjOWNlVxcXCIsXFxuICAgICAgICAgICAgLy9oaWRlQ2FuY2VsOiB0cnVlLFxcbiAgICAgICAgICAgIGNvbmZpcm0oczEsIHMyKSB7XFxuICAgICAgICAgICAgICAgIGhpa2VyUG9wLnJ1bk9uTmV3VGhyZWFkKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhZGRhbGJ1bShzMSxzMilcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vb2vkuoZcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgY2FuY2VsKCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g5Y+W5raI5LqGXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbn0pXFxudmFyIHN0ciA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL21vbi/lsrjlkKzpn7PkuZAvYWxidW0uanMnLCAwKTtcXG5pZiAoc3RyKSB7XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShzdHIpLkxvY2FsTGlzdDsgIC8vIOiOt+WPliBMb2NhbExpc3Qg5pWw57uEXFxuICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICBpbWc6IGl0ZW0ucGljLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS95aWppI25vTG9hZGluZyMjbm9IaXN0b3J5I1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBkYXRhOiBpdGVtLmRhdGEsXFxuICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcXG4gICAgICAgICAgICAgICAgYWN0OiBpdGVtLmFjdCxcXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Y+W5raI5pS26JePJyxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpdGVtLCB1KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGZldGNoUEModSkgfHwgJ3tcXFwiTG9jYWxMaXN0XFxcIjogW119Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5Mb2NhbExpc3QgPSBkYXRhLkxvY2FsTGlzdC5maWx0ZXIoeCA9PiB4LnRpdGxlICE9PSBpdGVtLnRpdGxlKTsgICBcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSh1LCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSwgJ2hpa2VyOi8vZmlsZXMvcnVsZXMvbW9uL+WyuOWQrOmfs+S5kC9hbGJ1bS5qcycpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0pO1xcbn1cIn1dIiwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSW9BQUFDS0NBWUFBQUIxaDlKa0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSelFrbFVDQWdJXG5DSHdJWklnQUFCTDBTVVJCVkhpYzdaMTdjRnpWZmNlLzU3N3ZybGFydDd4NlB5d2pHUkhIdUxaRERCaTNDWlFVakF0bWtoVENJNkdkXG5GQUtUR2FiSmVKaVcvYVBUMG1INlQ2WnRzSnZHYVdvSWxvR01peWs0b1NCc3dFWkJmb0FSR090aHliWldsbVE5ZHFXOWUvYytUdit3XG5UQTNjM2Iwcjc5cmExZm5NYU9UZFBmZnF0OTd2L3M3di9NN3ZuQU13R0F3R2c4RmdMRHpJbFRZQUFBK0FtL3ZONDd4Tnd0eHIzTnhqXG4zdUU2N3JKWWwzbHNoOGYwQy84MjUzNWJjODlaY3o5WGpLd0xKUmdNY29GQWdBY2d0clcxK1NWSktoY0VvVlNXNVdKSmtxcThYdThTXG5WVlVyUlZFc0V3U2hrT000Lzl5UFNnaVJDU0VTQU9WelJoTWlJSWVGUWlrMUwzcE1BZWdBRE51MmRkdTJvN1p0VDFOS3B3M0RDQnVHXG5NYTVwMmxsTjAwS3hXQ3hrV2Rha2FacmpFeE1UNXdZR0JxWUFHS0ZReUFvR2cxOFVZRWJKbWxDQ3dhQlVVVkhoWGJGaVJYVk5UYzF5XG5RUkJhUFI1UG95ekxEWklrMVJOQ0FoekhLYW52eEFBQVNpa0F4RXpUREZtV05SaU5Say9HNC9HQldDeDJQQlFLOWJ6MTFsdW5kVjJmXG5EUWFEOFd6OC9Zd0w1ZEZISDVXYm1wcEtObXpZY0UxdGJlMjNQQjdQS3A3bmF3VkJDTXg1QjBhR29KVEdiZHNPeGVQeFU3Rlk3TWpRXG4wTkRMNzd6enpnZGpZMk1UMlJKTVJ0aXlaVXY1YTYrOXRpRVNpVHh2bXVZWlNxbG0yelpsWkIvYnRtT1daWjJabnA1K2Z0KytmZXNmXG5mL3p4c2t4K3RwbndLR1Q3OXUyeVlSak50OTU2NjkyQlFPQkhQTStYWnVDK2pIbGlXZFpZS0JUNjF6MTc5cnlvS0Vydmd3OCtxT1AvXG5BK1o1Y1VsQzZlam80Q09SU09YYXRXdlhOelUxUGF5cTZycEx2U2NqWTlCNFBQN2VpUk1uZnZiaGh4Kys5ZEpMTDUzZHRXdlh2RWRPXG5Uc05PVndTRFFhR2hvYUg1cHB0dWVxQ3VydTRua2lSZEF5YVNoUVRoZWI2bXRMUjBUVVZGQlY5WldYbDZlSGg0K3VUSmsvTWFIYzFMXG5LRnUzYmhYOWZuL0xMYmZjOGpmRnhjVVA4anhmT1ovN01MSVBJY1R2OVhwWGxKYVcrbFJWUFZGWldUbmQzZDJkdGxqU0ZzcldyVnRGXG5YZGRiN3J2dnZuL3krWHliT1k3enBIc1B4dVdERUFKQ2lPTHhlRlkwTnpmWERnOFBIOTIwYWRQVW5qMTcwaEpMV2tMWnVuV3JXRnBhXG4ybjczM1hmL2c5ZnJ2WjBRa3F0SnI4VUlMOHR5VzN0N2U4UGs1T1N4WmN1V2pYZDJkcm9XaTJ1aGRIUjA4R1ZsWlUzcjE2OS8zT2Z6XG4zY1ZFa3B0SWt0UlVYbDZ1aXFMNGthWnBVejA5UGE1R1E2NkVRaWtsM2QzZGdSdHZ2UEg3eGNYRjk3UHVKcWZoWkZsdUxDZ29pSG05XG4zdU83ZHUyYWNYT1JLNkUwTkRRb2E5YXN1YTIydHZZblBNK1hYNXFkakNzTklVUlJGS1ZGRk1YZVZhdFdmYnA3OTI0ejFUV3V1ZzlOXG4wNVkxTkRROHd2TjgxYVdieVZnSThEeGZWVjlmLzBQRE1KcGR0VS9WNE9tbm42N1l2SG56QXlVbEpkOEZ5NVBrRllJZzFGWlZWVTJXXG5sSlQwdlBIR0c3UEoyaVlWU2tkSGg5VGEycnE2cmEzdGFSYVg1Q1hFNi9WZXcvUDhmcS9YZTZhcnF5dGg1alpwMXpNMk5sYXlZc1dLXG52K1I1dmlUek5qSVdBaHpIRmE5WXNlSUhUVTFOU1QvamhCNGxHQXhLTjk5ODg5cWFtcHJIT0k3elpkNUV4a0pCRUlRU1ZWWGZEUVFDXG5wenM3T3gyOVNrS1BJc3V5dDY2dTdqYU80OWhNY0o1RENDbXBxNnY3TTFtV3ZZbmFPSHFVWURESVhYLzk5YzJOalkwL0VBU2hpUkFXXG53K1l6YzZXbFJrRkJ3YjdxNnVwem5aMmRYMHJDT1hxVVFDREExOWZYTHhkRnNaYUpaSEVnQ0VKdFdWblo4cm42NWkvaEtKVGk0bUpCXG5WZFdyZUo0UFpOYzh4a0pCRUlTQXgrTzVDb0RvOUxxalVFcExTMHM4SGs4ekFEbWJ4akVXRG9RUVdaYmw1cmEyTnIvVDY0NUNLU29xXG5LaFZGc1NHN3BqRVdHcklzMXdOd25LSnhGQXJQODZXU0pOVmwxU3JHZ2tNUWhIcVB4K000eW5VVWlpQUlKUnpIc1htZFJZWW9pbFdpXG5LRG9tM2h5RklvcGlnQkRDNHBQRmgrTHhlSlk0dmVBa0ZON244N0hSemlKRlZkVXFPT1RYSElVaXkzSkdGdzh4Y2dkVlZjdmhvQXZCXG5vUzBuaWlKTDI4OXhmT1JUbkpvNE5iZjJsK0Q4T3FyUC95N3lGR0ZsL1VvSTNMeFh2eXdZNW1JVUhvQng4Zk5PUXVFRlFTaStMRmJsXG5BRzkrM0lrWDNuOEpGTlJKSXdBQldwZGNoZFpBSzN4S3dSVzFOUk9Jb2xnTWg2N0hTU2lFRUpMNzd6aER6T3F6T0RkekRqWk5YTEIrXG5XaTdBV0hnMEw0UUNvQkFPQldxT01RclA4M254ampNQ3dYbHZrb1N4eUJoT2pQWmUySm9pcCtGNTNnK1h3U3dCd0tyWkxrQUJrcUlDXG5OS3BIOGVvSGV6RStjKzR5R1pVOU9JNVRIWjkzZUk1bkc5eGNCQ0VwUFFvRnhkc24zc0dPZDUvRDVPemtaVElzT3hCQ1BIQTU2Z0VBXG50dUhOQlNqOUxHNU5obUVaZU9uUWJ4RXpOSHh2M1Qyb0xxcEdMcFpvVUVvRnVJeFJPSTdqRWdsb1VlSTI4Z2hyWVR6ZjFZRWYvZGVQXG5zZmVqMzhPMFRGaTJsVk94QzhkeElod2NpT09vQjEvWVhHK3hRNUM2KzdtWWdmRUIvTFJqQzFSSndkS0tGano2allleHRtbE5GaTNNXG5LTzRMbHhnWDRTSkdTWVFXaitGc2VBUmFYTXV3VWRralVYZnBLSlJjN0Z1ekJxVXBSejBwTHM4cEVuV1Rqa0xKcFQ0MTY3aklvNlM0XG5QS2RJeDZOd2hCREh1c2xGaVlzOFNvckxjdzBKRHJwSUZLUGsyaGNoZTF4Q2pESjNlVjdBZ3RsVXpPVlJMdUh5dklBSnhRV3BQbXVQXG41RUd4MTNuQ1BVOGNTc0xNTE9NaVV1VlJsbFl1eFZOMy9UM2VIenlFRi83d0lrNU5uRUlzSG9OSkxYQWNueGVqU0NhVVZMaUlVUWlBXG5rb0lTM0xIeWR0elMvazJjbWppTndmRkJURVduUVFoQlUzblQ1YkUxaXpDaHBHSXVqNUo2WXZBOGlxaWdwWElwV2lxWFp0KzJ5d2lMXG5VVkxoSW85Q2FmN0VJb2xnUWttRml6d0t1Y1NrWEM3QWhKSUtsM21VUzBuSzVRSk1LS2x3bVVkaEhvV1JVZ0wwRXRQOHVRQVRpZ3RZXG5qTUtFa2hvV293QmdRa21OeTNxVS9QWW5UQ2lwWVhrVUFFd29xV0Y1RkFCTUtLbGhNUW9BSnBUVXNEd0tBQ1lVVjdBOENoT0tLMWlNXG53b1NTR2hhakFHQkNTUTNMb3dCZ1Fra055Nk1BV0lRVmJxWmx3ckFONklhT0dYMFdzaUNoekZlVzJHdlExRFd6aXlGR1dSUkNvYURRXG40akVNblJ0QzMxZ2ZCa1pQWWlSOEZtT1JNYXh0V29ON3YzNFBKRDdCbWpjV293QllCRUt4YlJ1ZmpCekh5NGYzNFBEUUVZeEd4akNyXG56MEkzZFZCS1VlVVBKRjlDNjNKL0ZPWlJjaGpUTnJIenZRNXNlK3NYbU5iQ2pvSndzNVNDNVZIeVZDaW1iYUwzYkI5MkhIZ1d2enYyXG5PblJUVDlpV1VwcHkyU2VMVWZKUUtIRXpqcTZCUCtDWCszK0Z3NE5Ia203N0NaejNLRW1YZmJJWUJVQ2VEWThwcGZna2RCeS8ydjlyXG5WeUs1Y0UyS0JpeVBnandUeXNUc0JKNDk4QnlPbnY3QWxVZ0FGekVLeTZNQXlLT3VoMUtLL3o3eUNuN2Y4Nyt3N0lRSGdqdGVsMVFyXG5MSThDSUUrRVFpbkZwMmRQNE5rRHo3b1dDVWM0Q0x3QVdaUlpqT0tDdkJCS05CN0Zidzd1eElUTHpZRDlhaUZhQTYxb0ttL0V1cFoxXG5FUGtrL3cwc2p3SWdUNFFTbWc3aHZmNzNYSG1UUXNXSDc5L3dJSzVmdGc1bEJXWHd5bDV3Skhtb3h2SW9lU0FVMjdaeDdIUVB6azZQXG5wbXlyU0FxQ20vNE82MXR2QkUvYzcxdkNZcFE4RUlwRkxSd2VQQXdieVVjNXFxamk0UTAveEo4cy8rUDAvZ0NMVVFEa3dmQTRxa2R4XG44dHhnMG53SVJ6aGNVOU9PUC8zS0xlbi9BWlpIQVpBSFFobUxqQ0dzaFpPMkVYa1IxOWF2UkxHbktQMC93UElvQVBKQUtPRllCSVpsXG5KRzJqaUFycVMrdkF6K2ZNUDdhdUIwQWVDRVdMYXltRlFnaUJUL1hOSzQ2WWljK2tUUE9MdkpnWEcvb2xJK2VGVWlBWFFCS1NIeTlrXG5VeHRoTFp6MnQ1NVNpaGx0Tm1XL1VxRE1UNFM1Uk00THhhY1dRT1NTNzhpdUd6cDZSL3RoV21aYTl6NHplUVpERTBNcEEyVy9XcGd5XG5GNVByNVB5N0t5c29SNkZhbUxSTjNJcmowT0NodE03OE15MFRCL3JlUTJncWxMUWRJUVMxcFRXTFV5ZzBoNDdYVUNVRnpSWE5TV01FXG5TaWw2aGovRzNtTy9nMFZUWjI4cHBlZ2I3Y2ZlWTNzUmljMGtiU3Z5SXByS0d1Y1hLT2NRVGtLeENTSEpvOE1GQkU5NHJHcFlDWjRrXG4vNkRpWmh5LzJQZEwvT2JnenZQeFNvTHZBcVVVb2VrUjdEandIRDQ0ZlN4bHVVSjFjVFZxU21yeUpwaWxsTWFCTDJjdkhUT3o1NmZlXG5jK09OY3h5SDVWWExVVnRTaTRIeGdhUnRaMkl6ZU9iTmJSZ2NIOFMzdm5JcldpcVhRcEVVRUJEWTFNYms3Q1NPajN5S2pxNFhjTEQvXG5QY1ROZU5MN0NaeUFkVXUvaHRyaW1reStwU3RLb3MvZFVTaTVJcElMVkJkWDRZWmw2M0JxY2dpbWxieHJpY1FpK08yaDNlZ2VQSVJyXG5xcTlHb0tnS3FxUmlLanFGZ2ZHVE9ESjRGSk5SZDdQUUZmNEtyRzVjRFkrY1A4ZEVKL0swT2U5UmdQTnh3cVpyTjJMZnAvdHhjbnd3XG5aWHZETXRBMzJvKyswWDdJZ2d5ZTQyRllSc3A4ek1Yd0hJL3JtdGJpNnVxckw4WDBCVWRhWndvQ1NPNXpGeUJONVUzNDhUY2ZnNWhvXG5JVmNDZEZOSE5CNU5TeVFBVUZaUWhrM1hia1JKZ3VOWGNoVktxUW1IR01WSktKWnQyemtuRkVJSVZ0Wi9GUnRYM2c1RnpPNXB2SVZxXG5JYjZ6OXR1NHV2cnFuUEs4YmtoSEtKUVFrbmdoekFMR3IvcXhlZFdkV05PMEdrS1d6dmd1VXYxNFlOMTl1UGU2NyticmtOZ3h5SFAwXG5LSlpseGJKc1RGWWdoR0Raa2hiODlVMS9oYTgxcjhsNEVxeXNvQXozWFBjWHVHdlZuNmVjTnNoaG9uRHBVUUFnZDA1MC9nSUNMNkN0XG51ZzFQM3ZHMzJMejZMaFRJM296TXd0U1YxT0xCRys3SGQ5WitHMFhlZVpRcjVBaVdaVVhoVUY3ajVKOHR5N0ptUkRGM1Q3UWxJS2dvXG5yTUJqMzNnRWJZR3IwTkgxQW5wSCs5SU9XQWtoOENrRitIcnpkZmpldW52UkZtak4xKzdtTXl6TG1vWkQ5K01rRkFvZ2VkNDZSL0FwXG5QdHorMWR1d3VuRTFYam42UDNpMzl3Q0dwNFl4bzgvQ3NBeFFTbUZUKzdPYVdKN3c0QWdIU1pSUXJCYmhxc0F5M0xGeUkvNm9jUlVVXG5VY243K1J3QW9KU0c0ZUJSbkx5eUVnNkhkL2g4dnJ1eWI5Ymx3N0l0bkEyUDRxTXpQZWdmNjhmd1ZBalQwU2xFNHhvQUNvNXdLRkI4XG5LUGVWb2Jha0ZpMlZTN0ZzeVRMNFUwdzQ1aHVSU09URndzTENld0I4YmtEajVGRnMwelRkVDdQbUNEekhvNm9vZ0lCL0NlTFc5WmlKXG56U0p1eFdHWXh0eEtRUUpaa0NBTE1ncVVncnp2WWhKaEdNWUUzTVlvMFdoMHZMZzR2eEpKRnlDRVFCWmt5QVh5bFRabFFhTHIraGlBXG5Md1Z6anNQaldDd1d5cUZLQTBZR2lVUWlJVGg0Rk1mb2JIWjJOZ1FnSjNNcGpQbERLZFVOdzNDczFISVVpbW1hazZacEppL3RZdVFkXG50bTJmTVF6RE1UNU5KSlJ6bG1VTlpkY3N4a0lqSG84UGNodzM3dlNhbzFCNG5oK054V0luczJzV1k2R2g2L3JnMmJObko1eGVjeFJLXG5kM2YzZEN3VzY2T1U1dVRrSUNOOUtLVjZMQmJySHhnWW1ISjZQVkdxMGRBMDdXUGJ0b2V6YUJ0akFXSGJka2pUdE9QZDNkMk84eHlPXG5RZ21GUXRiNCtQakg4WGo4ZEhiTll5d1VETU00RlFxRmVxcXFxaHpMREJ5TE5vTEJvQzNMOG5CemMvTWhSVkZXRTBLeVd3bkV1TkxvXG5tcVlkMmJkdjM1bGdNT2k0N0NEaExKZXU2N05EUTBPdjJMYnRHTnd3OGdmTHNzNE5EUTN0MFhWOU5sR2JoQk1hbloyZFZtdHJxOWJlXG4zdDRteTNKN2RreGtMQVNpMGVpck8zZnUvTThubm5oaU9sR2JwUFBtL2YzOUU0Y1BILzRQU3FtNzlRdU1uTU8yN1lralI0NzhlelFhXG5UZHB6SkowaTdlcnFzbHBhV21aYldscUl6K2U3QWZtL1g4eGlndzRQRC8vemE2Kzk5dklUVHp5UmZEY2lOMnpidHUxcVRkUGVwb3k4XG5RdE8wZzl1MmJYTzFNTWxWeVpZb2luMjl2YjFiTGNzYXBteFdPUyt3TEd0NFlHRGczMlptWnZyZHRIZFZuYk43OTI1cnc0WU40eFVWXG5GWnpINDFuQmhzdTVqVzNiVTVPVGs4OTBkWFh0ZXVpaGgxekZuK21VY1VXWExGbHlwcnk4dkZSUmxHdVFCM3VyTEVZb3BXWWtFdG41XG45dHR2Lzl5eXJLRmR1M2E1T2wzQ3RWQjZlbnFvMStzTnk3SjhzcWFtcGs2U3BHWHpONWR4cGRBMDdkVTMzM3p6cVpHUmtlUDMzMysvXG42eTJvMGlvTTdlN3V0amRzMkhEdS9mZmZQOVRlM3Q0Z1NWSVRtR2ZKQ1NpbHBxWnByMjdmdnYybnk1Y3YvM2pqeG8xcHJWMUp1NEo0XG56NTQ5OXFaTm02Ykd4c1krcXF5c2xHVlpibVF4eThMR3R1MnBTQ1R5L1A3OSs1K2FuWjM5SkYyUkFQTVFDbkJlTElXRmhlZDhQbCtQXG4zKytQcXFyYVJBanh6K2Rlak94aW11YnB5Y25KWnc0ZVBQaHpqOGR6ZlBQbXplbnRlRGpIdk5ja2RIZDMyL0Y0ZkVwUmxFOEE5UHI5XG4vbXBCRUtyQmtuSUxCYXBwMmp0OWZYMy9lT0RBZ1JkTjB6eDEyMjIzdVQveDZndGs0a01sMjdkdmwyZG1abHJ1dlBQT095c3JLeC9oXG5lYjQ4QS9kbHpCUGJ0c2RIUmtiK1plL2V2YnVHaG9iNm4zenlTWjBRc25BU1lNRmdzR3pmdm4zckk1SEk4NVpsbmJGdE8zYUZrNCtMXG5CdHUyWTVabG5ZbEVJcysvL3Zyckc3WnMyWkxSTDJ0R2w4TjFkblpHNit2clE3Mjl2Vy94UEg5UVZkVVpBSEdPNHlnaHhFTklpcTBiXG5HV2xCS1kyYnBubmFNSXhqNFhCNFQyOXY3OU03ZHV6NGRUZ2MvalFqY3pjWGtiVjRJaGdNU3JJc2U5ZXZYMThUQ0FTV2V6eWVxeVJKXG5hcFJsdVZHU3BEcU80d0pzdEpRZWMxNGpaSnJta0s3ckE3RlliRURUdEU5Q29WRFAwYU5IejR5T2pzNEdnOEdzN0phVjljQXpHQXh5XG5nVUNBQnlBdVhicTAyT3YxbGlxS1VzcnpmTEdxcWxXS29penhlcjJWUE0rWENZTGc1eml1a09PNElvN2pWRUtJUWdpUkFJaVVVbkpoXG5HeXhDaUhnNWJNOFNGSUJoMi9iYzRkd1VITWZGYmR2V0thVzZiZHNhcFhUS3NxeXdaVm5UOFhoOFhOZjFzOUZvZEVUVHRHRmQxeWN0XG55NXJRZFgxMGVucDYrdVdYWHphcXFxcXNSSlZwbVdJaC9HZnpjejhFNTBzenlVV1BMeVR6T0h6WjFsenR4cHhHSGhiT0M4ait3bU5yXG43amtyd1hVTUJvUEJZREFZaTVyL0EwaTk3dmZrSlFBT0FBQUFBRWxGVGtTdVFtQ0MiLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment