Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@配置助手@eyJmaXJzdEhlYWRlciI6ImNsYXNzIiwibGFzdF9jaGFwdGVyX3J1bGUiOiIiLCJ0aXRsZSI6IumFjee9ruWKqeaJiyIsImF1dGhvciI6ImN5JkpvZSIsInVybCI6Imhpa2VyOi8vZW1wdHkjIyIsInZlcnNpb24iOjI3LCJjb2xfdHlwZSI6Im1vdmllXzMiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6InRvb2wiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvaG9tZScpKS5ydWxlKTsiLCJzZWFyY2hfdXJsIjoiIiwiZ3JvdXAiOiLlt6XlhbciLCJzZWFyY2hGaW5kIjoiIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4u+mhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG50cnkge1xcbiAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICgpID0+IHtcXG4gICAgICAgIGNsZWFyVmFyKCduYW1lQXJyYXknKTtcXG4gICAgICAgIGNsZWFyVmFyKCd1cmxBcnJheScpO1xcbiAgICAgICAgY2xlYXJWYXIoJ3N3aXRjaCcpO1xcbiAgICB9KVxcbiAgICBhZGRMaXN0ZW5lcignb25SZWZyZXNoJywgKCkgPT4ge1xcbiAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgY2xlYXJWYXIoJ2RlbE51bScpO1xcbiAgICAgICAgY2xlYXJWYXIoJ2RlbEFycmF5Jyk7XFxuICAgICAgICBjbGVhclZhcignc2hhcmVOdW0nKTtcXG4gICAgICAgIGNsZWFyVmFyKCdzaGFyZUFycmF5Jyk7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgY2xlYXJWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKSkge1xcbiAgICAgICAgY29uZmlnQXJyYXkgPSBbXTtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgIH1cXG4gICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicpKSB7XFxuICAgICAgICB0YWdzQXJyYXkgPSBbJ3FxJywgJ21ndHYnLCAnYmlsaScsICdxaXlpJywgJ3lvdWt1J107XFxuICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkodGFnc0FycmF5KSk7XFxuICAgIH1cXG4gICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0JykpIHtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICflvIAnKTtcXG4gICAgfVxcbiAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpIHtcXG4gICAgICAgIG9yZ1NldHRpbmdzID0gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIGZvbnRTaXplOiAyNSxcXG4gICAgICAgICAgICBkbUZyb206ICdwYXInXFxuICAgICAgICB9KTtcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nLCBvcmdTZXR0aW5ncyk7XFxuICAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+5re7IOWKoCDop6Mg5p6QPC9zcGFuPjwvYmlnPicsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGlmIChnZXRWYXIoJ3N3aXRjaCcsICflhbMnKSA9PSAn5byAJykge1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlSXRlbSgnYWRkJylcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaCcsICflhbMnKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBhZGRBcnJheSA9IFt7XFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q5ZCN56ew77yM5LiA6KGM5LiA5LiqJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ25hbWVBcnJheScsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZCdcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ino+aekO+8jOS4gOihjOS4gOS4qicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCd1cmxBcnJheScsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZCdcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkv53lrZgnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVBcnJheSA9IGdldFZhcignbmFtZUFycmF5Jykuc3BsaXQoL1xcXFxyXFxcXG58XFxcXG58XFxcXHIvKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxBcnJheSA9IGdldFZhcigndXJsQXJyYXknKS5zcGxpdCgvXFxcXHJcXFxcbnxcXFxcbnxcXFxcci8pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMZW5ndGggPSBuYW1lQXJyYXkubGVuZ3RoID4gdXJsQXJyYXkubGVuZ3RoID8gbmFtZUFycmF5Lmxlbmd0aCA6IHVybEFycmF5Lmxlbmd0aDtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YUxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpTmFtZSA9IGkgPiBuYW1lQXJyYXkubGVuZ3RoIC0gMSA/ICfmnKrlkb3lkI0nIDogKG5hbWVBcnJheVtpXSA9PSAnJyA/ICfmnKrlkb3lkI0nIDogbmFtZUFycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamlleGlVcmwgPSBpID4gdXJsQXJyYXkubGVuZ3RoIC0gMSA/ICfnqbrop6PmnpAnIDogKHVybEFycmF5W2ldID09ICcnID8gJ+epuuino+aekCcgOiB1cmxBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5LnVuc2hpZnQoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogamlleGlOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqaWV4aVVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3M6ICflhajpg6gnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoJywgJ+WFsycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kv53lrZjmiJDlip9cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoJ2FkZEZ1bmN0aW9uJywgYWRkQXJyYXkpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaCcsICflvIAnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNonN3aXRjaOS4ujonICsgZ2V0VmFyKCdzd2l0Y2gnLCAn5byAJylcXG4gICAgICAgIH0pLFxcbiAgICAgICAgZGVzYzogJ+eugOWNleOAgeeLrOeri+eahOino+aekOW3peWFtyB8IOS4jeaPkOS+m+ino+aekCcsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogJ2FkZEZ1bmN0aW9uJ1xcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcIiM2RUI4OTdcXFwiPuivtOaYjjwvZm9udD4nLFxcbiAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5JykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aVmeeoi+aWh+ahoycsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy55dXF1ZS5jb20vY2hlbnlpbmctazczc2MvbGhjdnFkL2JzaDVlMicsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIuWIh+aNouaPkuS7tlxcXCIsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gJChbJ+aWreaPkuWkjeWOnycsICfmjqXnrqHmlq3mj5InXSwgMiwgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSAn5pat5o+S5aSN5Y6fJykge1xcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcIiwgSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL1BhcnNlX0RuLmpzP3J1bGU9TXlGaWVsZOG0sOKBv1xcXCIpKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lvZPliY3mmK/mlq3mj5LmqKHlvI9cXFwiO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzXFxcIiwgSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2R1YW4/cnVsZT3phY3nva7liqnmiYtcXFwiKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5b2T5YmN5piv5Yqp5omL5bey5o6l566h6Kej5p6Q5Lu75YqhXFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCJUVmJveOaOqOmAgTpcXFwiICsgKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dCcpID09IFxcXCLlvIBcXFwiID8gXFxcIuW8gFxcXCIgOiBcXFwi5YWzXFxcIiksXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dFxcXCIsIChyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JveFN3aXRjaC50eHQnKSA9PSBcXFwi5byAXFxcIiA/IFxcXCLlhbNcXFwiIDogXFxcIuW8gFxcXCIpKVxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcIlxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5a+85YWl6L6F5YqpJyxcXG4gICAgICAgIHVybDogXFxcImh0dHBzOi8vZ3JlYXN5Zm9yay5vcmcvemgtQ04vc2NyaXB0cy80OTc1MDctdmlkZW8lRTglQkUlODUlRTUlOEElQTlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+ino+aekOaooeadvycsXFxuICAgICAgICB1cmw6IGBjb3B5Oi8v5L+u5pS54piF6a2U5pat6YCa55So5qih5p2/4piFXFxuZnVuY3Rpb24gKHZpcFVybCkge1xcbiAgICAvLyDmraPluLjosIPnlKgt5by55bmV5byA5YWz5Zyo6YWN572u5Yqp5omL6YeM6Ieq6KGM6K6+572u5piv5ZCm5ZCv55SoXFxuICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCk7XFxuICAgIC8q5YWN5ZeF6aaW5Y+R5qih5byPXFxuICAgIOWmguaenOaDs+imgeWunueOsOexu+S8vOmtlOaWreeahOWXheaOouS8mOWFiO+8muWFjeWXheWKoHg144CBSnNvbuWkmue6v+i3r+eahOW9ouW8j++8jOWPguiAg+azqOmHiueahOekuuS+i+S7o+eggea3u+WKoOWFjeWXheS7o+egge+8iOWPquaYr+ekuuS+i+W5tuS4jeWPr+eUqO+8ie+8jOW5tuWcqOacgOe7iOi/lOWbnueahOaXtuWAmemhuuW6j+WkmuS8oOWFpeS4pOS4quWPguaVsO+8muS4gOS4quaYr+WFjeWXheW+l+WIsOeahOaSreaUvuWcsOWdgO+8jOS4gOS4quaYr+i/meS4quino+aekOaIlue6v+i3r+eahOWQjeWtl1xcbiAgICB2YXIgcGFyc2UgPSBcXFwiaHR0cHM6Ly9wbGF5ZXIuZHh5eS5jZi9XbmRleHhYLnBocD91cmw9XFxcIjtcXG4gICAgYmZ1cmwgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGk/cnVsZT1BUEnnm5LlrZBcXFwiKS5wYXJzZUxMUShwYXJzZSwgdmlwVXJsKTtcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcIikubXVsUGFyc2UodmlwVXJsLCBiZnVybCwgJ2xscScpICsgXFxcIjt7VXNlci1BZ2VudEAmJlJlZmVyZXJAfVxcXCI7XFxuICAgICovXFxufWAsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5rqQ56CB57yW6L6RJyxcXG4gICAgICAgIHVybDogXFxcImVkaXRGaWxlOi8vaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+WvvOWHuumFjee9ricsXFxuICAgICAgICB1cmw6ICdzaGFyZTovL2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfkupHmnb/liIbkuqsnLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgIHNlY3JldENvbnRlbnQgPSBiYXNlNjRFbmNvZGUoYmFzZTY0RW5jb2RlKHNldEZpbGUpKTtcXG4gICAgICAgICAgICBjb3B5KFxcXCLliqnmiYvop6PmnpDlr7zlhaXlj6Pku6TCpcKlXFxcIiArIHNoYXJlUGFzdGUoc2VjcmV0Q29udGVudCkpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6ICfkupHmnb/lr7zlhaUnLFxcbiAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICQoJycsICflop7ph4/lr7zlhaXvvIzor7fmlL7lv4MnKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5tYXRjaCgv5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpS8pKSB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5rID0gaW5wdXQuc3BsaXQoJ8KlwqUnKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgIHNlY3JldENvbnRlbnQgPSBwYXJzZVBhc3RlKGxpbmspO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgncmVtb3RlU2V0RmlsZT0nICsgYmFzZTY0RGVjb2RlKGJhc2U2NERlY29kZShzZWNyZXRDb250ZW50KSkpO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpKTtcXG4gICAgICAgICAgICAgICAgICAgIG5ld0FycmF5ID0gY29uZmlnQXJyYXkuY29uY2F0KHJlbW90ZVNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WvvOWFpeaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lj6Pku6TplJnor69cXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6YWN572uJyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+6YWN572uPC9mb250PicgOiAn6YWN572uJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcignbW9kZScsICfphY3nva4nKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+aJuemHj+W3peWFtycgPyAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9cmVkPuaJuemHj+W3peWFtzwvZm9udD4nIDogJ+aJuemHj+W3peWFtycsXFxuICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gJChbJ+WIoOmZpCcsICfliIbkuqsnXSwgMiwgJ+ivt+mAieaLqeS9oOimgeaJp+ihjOeahOaTjeS9nCcpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignbW9kZScsICfmibnph4/lt6XlhbcnKTtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfliKDpmaQnKSB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3R5cGUnLCAn5om56YeP5Yig6ZmkJyk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsTnVtJyk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignZGVsQXJyYXknKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcigndHlwZScsICfmibnph4/liIbkuqsnKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdzaGFyZU51bScpO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3NoYXJlQXJyYXknKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn6Kej5p6Q5rWL6K+VJyA/ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1yZWQ+6Kej5p6Q5rWL6K+VPC9mb250PicgOiAn6Kej5p6Q5rWL6K+VJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcignbW9kZScsICfop6PmnpDmtYvor5UnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpID09ICd0cnVlJyA/ICflvLnluZU65byAJyA6ICflvLnluZU65YWzJyxcXG4gICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHZhciBkbVN3aXRjaCA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvZG1Td2l0Y2gudHh0Jyk7XFxuICAgICAgICAgICAgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAnZmFsc2UnKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9kbVN3aXRjaC50eHQnLCAndHJ1ZScpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmV5p2l5rqQJywganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJiycpLmRtU2V0dGluZ3MoMCk7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+WHveaVsOS9nOeUqOWfnycsIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9hcGk/cnVsZT3phY3nva7liqnmiYsnKS5kbVNldHRpbmdzKDEpO1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflvLnluZXlpKflsI8nLCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvYXBpP3J1bGU96YWN572u5Yqp5omLJykuZG1TZXR0aW5ncygyKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgIGlmIChnZXRWYXIoJ21vZGUnLCAn6YWN572uJykgPT0gJ+mFjee9ricpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAn5Y676YeN6Zmk55m9JyxcXG4gICAgICAgICAgICB1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignbGFzdENsZWFuJywgY29uZmlnQXJyYXkpO1xcbiAgICAgICAgICAgICAgICBuZXdBcnJheSA9IFtdO1xcbiAgICAgICAgICAgICAgICBudW0gPSAwO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKGNvbmZpZ0FycmF5W2ldLnVybCwgJzAnKSAhPSAnMScgJiYgY29uZmlnQXJyYXlbaV0udXJsICE9ICfnqbrop6PmnpAnICYmIGNvbmZpZ0FycmF5W2ldLnVybCAhPSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBcnJheS5wdXNoKGNvbmZpZ0FycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoY29uZmlnQXJyYXlbaV0udXJsLCAnMScpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBudW0rKztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShuZXdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICBKU09OLnBhcnNlKGdldFZhcignbGFzdENsZWFuJywgJ1tdJykpLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhclZhcihpdGVtLnVybCk7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+acrOasoeWOu+mHjeaVsOmHj+S4ulxcXFx0XFxcXHRcXFxcdFxcXCIgKyBudW07XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAn5Y2g5L2N56ym5aSE55CGJyxcXG4gICAgICAgICAgICB1cmw6ICQoWyfmt7vliqAnLCAn5Y676ZmkJ10sIDIsICfor7fpgInmi6nkvaDopoHmiafooYznmoTmk43kvZwnKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfmt7vliqAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnVybC5tYXRjaCgvXFxcXD91cmw9LykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaV0udXJsID0gY29uZmlnQXJyYXlbaV0udXJsLnJlcGxhY2UoJz91cmw9JywgJz9wbGFjZWhvbGRlcj0mdXJsPScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnVybC5tYXRjaCgvXFxcXD9wbGFjZWhvbGRlcj0mdXJsPS8pKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnVybCA9IGNvbmZpZ0FycmF5W2ldLnVybC5yZXBsYWNlKCc/cGxhY2Vob2xkZXI9JnVybD0nLCAnP3VybD0nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lpITnkIbmiJDlip9cXFwiO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICB9KTtcXG4gICAgICAgIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcbiAgICAgICAgdGFnc0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0sXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLnJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6L+U5Zue5Yi35paw77yM6K6w5b6X54K55oiR77yB77yB77yBJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfflxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj7mt7sg5YqgIOinoyDmnpA8L3NwYW4+PC9iaWc+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignc3dpdGNoMicsICflhbMnKSA9PSAn5byAJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVJdGVtKCdhZGQyJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc3dpdGNoMicsICflhbMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEFycmF5ID0gW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6Kej5p6Q5ZCN56ew77yM5LiA6KGM5LiA5LiqJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHQ6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCduYW1lQXJyYXknLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkMidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ino+aekO+8jOS4gOihjOS4gOS4qicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcigndXJsQXJyYXknLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkMidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkv53lrZgnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVBcnJheSA9IGdldFZhcignbmFtZUFycmF5Jykuc3BsaXQoL1xcXFxyXFxcXG58XFxcXG58XFxcXHIvKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsQXJyYXkgPSBnZXRWYXIoJ3VybEFycmF5Jykuc3BsaXQoL1xcXFxyXFxcXG58XFxcXG58XFxcXHIvKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aCA9IG5hbWVBcnJheS5sZW5ndGggPiB1cmxBcnJheS5sZW5ndGggPyBuYW1lQXJyYXkubGVuZ3RoIDogdXJsQXJyYXkubGVuZ3RoO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpTmFtZSA9IGkgPiBuYW1lQXJyYXkubGVuZ3RoIC0gMSA/ICfmnKrlkb3lkI0nIDogKG5hbWVBcnJheVtpXSA9PSAnJyA/ICfmnKrlkb3lkI0nIDogbmFtZUFycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZXhpVXJsID0gaSA+IHVybEFycmF5Lmxlbmd0aCAtIDEgPyAn56m66Kej5p6QJyA6ICh1cmxBcnJheVtpXSA9PSAnJyA/ICfnqbrop6PmnpAnIDogdXJsQXJyYXlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXkudW5zaGlmdCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogamlleGlOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogamlleGlVcmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFnczogaXRlbVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdzd2l0Y2gyJywgJ+WFsycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpdGVtKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnYWRkMidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkSXRlbUFmdGVyKCdhZGRGdW5jdGlvbjInLCBhZGRBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3N3aXRjaDInLCAn5byAJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNonN3aXRjaOS4ujonICsgZ2V0VmFyKCdzd2l0Y2gyJywgJ+W8gCcpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+eugOWNleOAgeaXoOW/p+OAgeeLrOeri+eahOino+aekOeuoeeQhuW3peWFt++8jOWFu+iAgeS4k+eUqCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2FkZEZ1bmN0aW9uMidcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoJ3ZhciBjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKCd2YXIgcmVnPS8nICsgaXRlbSArICd85YWo6YOoLzsnKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vIOW9k+WJjee6v+i3r+eahOino+aekOaOkuW6j1xcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAwO1xcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWdBcnJheS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWdBcnJheVtpXS50YWdzID09IHVuZGVmaW5lZCB8fCBjb25maWdBcnJheVtpXS50YWdzLm1hdGNoKHJlZykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGluZGV4ICsgJzwvc3Bhbj4tPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpICsgJzwvc3Bhbj4tJyArIGNvbmZpZ0FycmF5W2ldLm5hbWUgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM5OUNDRkZcXFwiPjxzbWFsbD4j5bqU55SoOicgKyBjb25maWdBcnJheVtpXS50YWdzICsgJzwvc21hbGw+PC9zcGFuPicgKyAoY29uZmlnQXJyYXlbaV0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2ldLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBjb25maWdBcnJheVtpXS51cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm9wX2Jhc2ljKGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2UvanNBZGRfUGFnZT9ydWxlPemFjee9ruWKqeaJiyZpbmRleD0nICsgaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9LCBpdGVtKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4p6VJyxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+ivt+i+k+WFpemcgOimgeino+aekOeahOagh+ivhu+8jOavlOWmguWfn+WQjScpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcbiAgICAgICAgICAgICAgICAgICAgdGFnc0FycmF5LnB1c2goaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9zZWxlY3Rpb24uanNvbicsIEpTT04uc3RyaW5naWZ5KHRhZ3NBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5re75Yqg57q/6Lev5oiQ5YqffidcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6ICfinpYnLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCh0YWdzQXJyYXksIDMsICfor7fpgInmi6nkvaDopoHliKDpmaTnmoTnur/ot68nKS5zZWxlY3QoKHRhZ3NBcnJheSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiAodmFsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW2ldID09IHZhbCkgcmV0dXJuIGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucmVtb3ZlID0gZnVuY3Rpb24gKHZhbCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuaW5kZXhPZih2YWwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BsaWNlKGluZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgdGFnc0FycmF5LnJlbW92ZShpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkodGFnc0FycmF5KSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lnp7vpmaTnur/ot69+J1xcbiAgICAgICAgICAgICAgICB9LCB0YWdzQXJyYXkpXFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ0FycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgaWYgKGNvbmZpZ0FycmF5W2ldLnRhZ3MgPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIGNvbmZpZ0FycmF5W2ldLnRhZ3MgPSAn5YWo6YOoJ1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaSArICc8L3NwYW4+LScgKyBjb25maWdBcnJheVtpXS5uYW1lICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojOTlDQ0ZGXFxcIj48c21hbGw+I+W6lOeUqDonICsgY29uZmlnQXJyYXlbaV0udGFncyArIChjb25maWdBcnJheVtpXS5qcyAhPSB1bmRlZmluZWQgJiYgY29uZmlnQXJyYXlbaV0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogY29uZmlnQXJyYXlbaV0udXJsLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oup5L2g6KaB5omn6KGM55qE5pON5L2cJykuc2VsZWN0KChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpP3J1bGU96YWN572u5Yqp5omLXFxcIikub3BfYmFzaWMoaSk7XFxuICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKGdldFZhcignbW9kZScsICfphY3nva4nKSA9PSAn5om56YeP5bel5YW3Jykge1xcbiAgICAgICAgaWYgKGdldFZhcigndHlwZScsICfmibnph4/liKDpmaQnKSA9PSAn5om56YeP5Yig6ZmkJykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5Yig6ZmkXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignZGVsTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdkZWxOdW0nLCAnMCcpID09ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/or7flhYjpgInmi6nopoHliKDpmaTnmoTop6PmnpDvvIEnXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ2RlbEFycmF5JykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhkZWxBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBcnJheSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWxBcnJheS5pbmNsdWRlcyhpKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaChjb25maWdBcnJheVtpXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkobmV3QXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBnZXRWYXIoJ2RlbE51bScsICcwJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2RlbE51bScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyVmFyKCdkZWxBcnJheScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YWx5Yig6ZmkXFxcIiArIGRlbE51bSArICfmnaHop6PmnpAnO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnZGVsQnRuJ1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5kZXggPSAwO1xcbiAgICAgICAgICAgIGNvbmZpZ0FycmF5LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lICsgKGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSB1bmRlZmluZWQgJiYgY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9ICcnID8gJzwvc21hbGw+PC9zcGFuPicgKyAnXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+PHNtYWxsPiNKUzwvc21hbGw+PC9zcGFuPicgOiAnJyksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBpdGVtLnVybCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGluZGV4LCBpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignaXNDaG9vc2UnICsgaW5kZXgsICdubycpID09ICd5ZXMnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5ID0gSlNPTi5wYXJzZShnZXRWYXIoJ2RlbEFycmF5JywgJ1tdJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxOdW0gPSBOdW1iZXIoZ2V0VmFyKCdkZWxOdW0nLCAnMCcpKSAtIDE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbEFycmF5LnBvcChpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsQXJyYXknLCBkZWxBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZGVsTnVtJywgZGVsTnVtKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShpbmRleCArICcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4nICsgaW5kZXggKyAnPC9zcGFuPi0nICsgaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVsQnRuJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAnbm8nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdkZWxBcnJheScsICdbXScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsTnVtID0gTnVtYmVyKGdldFZhcignZGVsTnVtJywgJzAnKSkgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxBcnJheS5wdXNoKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGRlbEFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkZWxBcnJheScsIGRlbEFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkZWxOdW0nLCBkZWxOdW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGluZGV4ICsgJy0nICsgaXRlbS5uYW1lICsgJzwvc3Bhbj4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVsQnRuJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnoa7orqTliKDpmaRcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj4nICsgZ2V0VmFyKCdkZWxOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2lzQ2hvb3NlJyArIGluZGV4LCAneWVzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgsIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXggKyAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9qc0FkZF9QYWdlP3J1bGU96YWN572u5Yqp5omLJmluZGV4PScgKyBpbmRleDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIhuS6q1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdzaGFyZU51bScsICcwJykgPT0gJzAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivt+WFiOmAieaLqeimgeWIhuS6q+eahOino+aekO+8gSdcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdzaGFyZUFycmF5JykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhzaGFyZUFycmF5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlRmlsZSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoYXJlQXJyYXkuaW5jbHVkZXMoaSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlRmlsZS5wdXNoKGNvbmZpZ0FycmF5W2ldKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWNyZXRDb250ZW50ID0gYmFzZTY0RW5jb2RlKGJhc2U2NEVuY29kZShKU09OLnN0cmluZ2lmeShzaGFyZUZpbGUpKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weShcXFwi5Yqp5omL6Kej5p6Q5a+85YWl5Y+j5LukwqXCpVxcXCIgKyBzaGFyZVBhc3RlKHNlY3JldENvbnRlbnQpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignc2hhcmVOdW0nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhclZhcignc2hhcmVBcnJheScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnQXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJWYXIoJ2lzQ2hvb3NlJyArIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiG5Lqr5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiAnc2hhcmVCdG4nXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpbmRleCA9IDA7XFxuICAgICAgICAgICAgY29uZmlnQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUgKyAoY29uZmlnQXJyYXlbaW5kZXhdLmpzICE9IHVuZGVmaW5lZCAmJiBjb25maWdBcnJheVtpbmRleF0uanMgIT0gJycgPyAnPC9zbWFsbD48L3NwYW4+JyArICdcXFxcdFxcXFx0XFxcXHTigJjigJjigJnigJk8c3BhbiBzdHlsZT1cXFwiY29sb3I6cmVkXFxcIj48c21hbGw+I0pTPC9zbWFsbD48L3NwYW4+JyA6ICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0udXJsLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaW5kZXgsIGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJykgPT0gJ3llcycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGluZGV4KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdzaGFyZUFycmF5JywgJ1tdJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZU51bSA9IE51bWJlcihnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSkgLSAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5LnBvcChpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc2hhcmVBcnJheScsIHNoYXJlQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlTnVtJywgc2hhcmVOdW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPicgKyBpbmRleCArICc8L3NwYW4+LScgKyBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKCdzaGFyZUJ0bicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn56Gu6K6k5YiG5LqrXFxcXHRcXFxcdFxcXFx04oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGdldFZhcignc2hhcmVOdW0nLCAnMCcpICsgJzwvc3Bhbj5cXFxcdFxcXFx0XFxcXHTmnaHop6PmnpAnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdpc0Nob29zZScgKyBpbmRleCwgJ25vJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVBcnJheSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdzaGFyZUFycmF5JywgJ1tdJykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZU51bSA9IE51bWJlcihnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSkgKyAxO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZUFycmF5LnB1c2goaW5kZXgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coc2hhcmVBcnJheSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignc2hhcmVBcnJheScsIHNoYXJlQXJyYXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ3NoYXJlTnVtJywgc2hhcmVOdW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGluZGV4ICsgJycsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNwYW4gc3R5bGU9XFxcImNvbG9yOnJlZFxcXCI+JyArIGluZGV4ICsgJy0nICsgaXRlbS5uYW1lICsgJzwvc3Bhbj4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2hhcmVCdG4nLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+ehruiupOWIhuS6q1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPicgKyBnZXRWYXIoJ3NoYXJlTnVtJywgJzAnKSArICc8L3NwYW4+XFxcXHRcXFxcdFxcXFx05p2h6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignaXNDaG9vc2UnICsgaW5kZXgsICd5ZXMnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaXRlbSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCArICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVKUyzovoXliqnll4XmjqInLCBqczogJC50b1N0cmluZygoaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGluZGV4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGluZGV4Kys7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gZWxzZSBpZiAoZ2V0VmFyKCdtb2RlJywgJ+mFjee9ricpID09ICfop6PmnpDmtYvor5UnKSB7XFxuICAgICAgICBzZXRGaWxlID0gcmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJyk7XFxuICAgICAgICBldmFsKCdjb25maWdBcnJheT0nICsgc2V0RmlsZSk7XFxuICAgICAgICBpbmRleCA9IDA7XFxuICAgICAgICBjb25maWdBcnJheS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGppZXhpID0gaXRlbS51cmw7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSArIChjb25maWdBcnJheVtpbmRleF0uanMgIT0gdW5kZWZpbmVkICYmIGNvbmZpZ0FycmF5W2luZGV4XS5qcyAhPSAnJyA/ICc8L3NtYWxsPjwvc3Bhbj4nICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxzcGFuIHN0eWxlPVxcXCJjb2xvcjpyZWRcXFwiPjxzbWFsbD4jSlM8L3NtYWxsPjwvc3Bhbj4nIDogJycpICsgJ1xcXFx0XFxcXHRcXFxcdOKAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCIjNkVCODk3XFxcIj48c21hbGw+4p6u5YmN5b6A5rWL6K+VPC9zbWFsbD48L2ZvbnQ+JyxcXG4gICAgICAgICAgICAgICAgZGVzYzogaXRlbS51cmwsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLnJ1bGUoKGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+e8lui+kea1i+ivlemTvuaOpScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnZWRpdEZpbGU6Ly9oaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5by55bmVOicgKyBnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSA9PSAn5YWzJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdkbVN3aXRjaCcsICflvIAnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignZG1Td2l0Y2gnLCAn5YWzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZG1Td2l0Y2gnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W8ueW5lTonICsgZ2V0VmFyKCdkbVN3aXRjaCcsICflhbMnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnZG1Td2l0Y2gnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9jZXNoaS5qc29uJykpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjZXNoaURhdGEgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfohb7orq/op4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzMvMTA2XzNhMGQyMTJlMTdjYjk1ZTIzMmZmZTE1NTQ2MDM4NWNiX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YucXEuY29tL3gvY292ZXIvbXpjMDAyMDBybXBhZjQwL24wMDM2bDR0bnRjLmh0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkvJjphbcnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE2LzkvMTEwXzhmZjA2ZTBjMjM3NzYwY2Q1N2QyNTA4ZmQ5OGM4NDE0X2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YueW91a3UuY29tL3Zfc2hvdy9pZF9YTkRjME1ERTFOVGsxTWc9PS5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn54ix5aWH6Im6Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8wOS84LzExMF85MDFmMmVmMzdhZjJmZWEyNWU1ZDk2NDhmNTUxY2UzMV9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cDovL3d3dy5pcWl5aS5jb20vdl8yZ2E4enRzODZ5cy5odG1sJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6IqS5p6cVFYnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzYvMTEwXzE4MzRkMjk2YWE1YjU2NjZhN2Q5NGIxZTM0NzlhZTY0X2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vd3d3Lm1ndHYuY29tL2IvMzQ5MjUzLzEwNDI0MzAwLmh0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICflk5Tlk6nlk5Tlk6knOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI3LzQvMTEwXzhlMmUzZDg4YzQ1MDI1YjM4MGU2OTgxN2Q2ZmI1M2IxX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL20uYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcDQyODk5MydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+aQnOeLkOinhumikSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vYW5kcm9pZC1hcnR3b3Jrcy4yNXBwLmNvbS9mczA4LzIwMjEvMDkvMTUvOS8xMTBfNTMyYTUxZjg0MzFlZmMzNzc4MDhjMWZmZmYyZGEzNmZfY29uXzEzMHgxMzAucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbS50di5zb2h1LmNvbS92NzMyOTQ0MS5zaHRtbCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfopb/nk5zop4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI3LzUvMTEwX2E4NjI2NTg4MmVkMThjNjE5MDU2NmU5ZWEyNWY5Njk4X2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3d3dy5peGlndWEuY29tLzY2OTkzNTY3OTI5MDU3OTQwNTUnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfkuZDop4YnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE1LzgvMl8zNWI1ZDQzNzNmNGJjYmEyOGYzOTQ4NmU0ZjExNjRkOV9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tLmxlLmNvbS92cGxheV83Njk1NDMzMy5odG1sP2Zyb209YWpheCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxOTA1Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMS8wOS8xOC80LzExMF81ZjI0YjEwNTJmZWQ0ZjdmYzczNTkzYThlZjI3Mjc2ZF9jb25fMTMweDEzMC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly92aXAuMTkwNS5jb20vbS9wbGF5LzE0Mjk3MjUuc2h0bWwnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfpo47ooYzop4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzE2LzQvMTEwXzZmNmFmOWY5OWIyNjI5ZTUxZjBiMGEzM2NkZmYxZDllX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vbS5mdW4udHYvbXBsYXkvP21pZD05NTcxOSdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BQVFbop4bpopEnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2FuZHJvaWQtYXJ0d29ya3MuMjVwcC5jb20vZnMwOC8yMDIxLzA5LzI4LzUvMTEwX2E0NTViMjk1MTIyNzA0MGVlNjI5NTVlZGNmYjg5ZDcyX2Nvbl8xMzB4MTMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3YucHB0di5jb20vc2hvdy96Vm4zZEpYdDF4VjQ5bDQuaHRtbCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+m+meiFvic6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS80LnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdMVC0xZWMzZjY3NTRmNjg1ODZlZDdmOTJjM2U5OTVjZmNhNidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+S6uuS6uui/tyc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS82LnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdyZW5yZW5taS1hYjkyNGUxMWQyZDY5Mzk3J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn5LqU5q+SJzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL2tlLzMwLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd3dWR1eXVuLTE2NDk0MzEzMDcwMjEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICflpJrlpJonOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNDkucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vbTN1OC5jYWNoZS5zdW95by5jYy9tM3U4LzIwMjIwMy84L2FhYWJkOTJkYTI2Nzc0YzY4ODUwYTAyMzE1M2M4MGYxYWU2ZmE5YmUubTN1OCdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+iejeWFtCc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS84MC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnUm9uZ1hpbmdWUi00MjE1NjQ1NTgxOTMyJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAn6Zuq5Lq6Jzoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvMTMzLnBuZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd4dWVyZW4tMTY0NjgyMzA3MidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ+aXi+mjjuS6kSc6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpYzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9rZS81NC5wbmcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAneGZ5LTUyOWU2NDU3OTUzZDU0NWYnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICfnkZ7kuLDotYTmupAnOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWM6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8va2UvNzIucG5nJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vMS5ydWlmZW5nbGIuY29tL3BsYXkvMTY0NDkxNDU5NS5tM3U4J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvY2VzaGkuanNvbicsIEpTT04uc3RyaW5naWZ5KGNlc2hpRGF0YSkpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgY2VzaGlEYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2Nlc2hpLmpzb24nKSk7XFxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIGNlc2hpRGF0YSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGNlc2hpRGF0YVtwcm9wXS5waWMgKyAnQFJlZmVyZXI9JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcnKS5sYXp5UnVsZSgoY2VzaGlEYXRhLCBwcm9wLCBqaWV4aSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlwVXJsID0gY2VzaGlEYXRhW3Byb3BdLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzID0gWyfmtYvor5UnXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcignZG1Td2l0Y2gnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbGF6eVRvSmlleGk/cnVsZT1kbeebkuWtkFxcXCIpLnZpZGVvWDUodmlwVXJsLCB1cmxzLCBuYW1lcywgW3sgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSB9XSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidmlkZW86Ly9cXFwiICsgamlleGkgKyB2aXBVcmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNlc2hpRGF0YSwgcHJvcCwgamlleGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fNCdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmtYvor5UnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfkvaDov5jlj6/ku6Xku7vmhI/ovpPlhaXkuIDkuKrop4bpopHlnLDlnYDmtYvor5XlvZPliY3op6PmnpB+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKGppZXhpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcFVybCA9IGdldFZhcignY2VzaGlMaW5rJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMgPSBbXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBbJ+a1i+ivlSddXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ2RtU3dpdGNoJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvbGF6eVRvSmlleGk/cnVsZT1kbeebkuWtkFxcXCIpLnZpZGVvWDUodmlwVXJsLCB1cmxzLCBuYW1lcywgW3sgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSB9XSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInZpZGVvOi8vXFxcIiArIGppZXhpICsgdmlwVXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgamlleGkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogLTEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdjZXNoaUxpbmsnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5Yig6Zmk6K+l6Kej5p6QJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6K+36K6k55yf6ICD6JmRficsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5I25vTG9hZGluZyMnKS5sYXp5UnVsZSgoamlleGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiAodmFsKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tpXS51cmwgPT0gdmFsKSByZXR1cm4gaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uICh2YWwpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuaW5kZXhPZih2YWwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwbGljZShpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdBcnJheS5yZW1vdmUoamlleGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDlhbPpl63pobXpnaLlubbliLfmlrDliY3kuIDkuKrpobXpnaJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIoOmZpOaIkOWKn35cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHNldEhvbWVSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgIH0sIGppZXhpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5rOo5YWlSlMs6L6F5Yqp5ZeF5o6iJywganM6ICQudG9TdHJpbmcoKGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL2pzQWRkX1BhZ2U/cnVsZT3phY3nva7liqnmiYsmaW5kZXg9JyArIGluZGV4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpbmRleCsrO1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgLy8g5q2j5bi45aSH5Lu94oCU4oCU6Iul5omn6KGM5Yiw5q2k6YO95peg5byC5bi45Ye6546w55qE6K+d77yBXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXG4gICAgZXZhbCgnY29uZmlnQXJyYXk9JyArIHNldEZpbGUpO1xcbiAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX2JhY2suanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxuICAgIGxvZygn5paH5Lu25peg5byC5bi477yM5aSH5Lu95oiQ5YqfficpO1xcbn0gY2F0Y2ggKGUpIHtcXG4gICAgbG9nKCfmlofku7blvILluLjvvIzor7fmgaLlpI1+Jyk7XFxuICAgIC8vIOW8guW4uOS4jeWkh+S7ve+8jOivt+aBouWkjVxcbiAgICBzaG93TG9hZGluZygn6YWN572u5paH5Lu25byC5bi477yB77yB77yBJyk7XFxuICAgIHZhciBkID0gW107XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aBouWkjeWkh+S7vScsXFxuICAgICAgICBkZXNjOiAn5aaC5p6c5Zug5Li65LiA5Lqb6ZSZ6K+v77yM5pWw5o2u5Y+R55Sf5LqG5o2f5Z2P5LqG5Y+v5Lul5bCd6K+V5oGi5aSNficsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGZpbGVQYXRoID0gJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZV9iYWNrLmpzb24nO1xcbiAgICAgICAgICAgIGlmIChmaWxlRXhpc3QoZmlsZVBhdGgpKSB7XFxuICAgICAgICAgICAgICAgIHNldEZpbGUgPSByZWFkRmlsZShmaWxlUGF0aCk7XFxuICAgICAgICAgICAgICAgIGV2YWwoJ2NvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mgaLlpI3miJDlip9cXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHNob3dMb2FkaW5nKCfmgI7kuYjlpIfku73kuZ/lnY/kuobllYrvvIznu5nkvaDph43nva7lkKfvvIEnKTtcXG4gICAgICAgICAgICAgICAgY29uZmlnQXJyYXkgPSBbXTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvTXlQYXJzZS5qc29uJywgSlNPTi5zdHJpbmdpZnkoY29uZmlnQXJyYXkpKTtcXG4gICAgICAgICAgICAgICAgdGFnc0FycmF5ID0gWydxcScsICdtZ3R2JywgJ2JpbGknLCAncWl5aScsICd5b3VrdSddO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJywgSlNPTi5zdHJpbmdpZnkodGFnc0FycmF5KSk7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcsICflvIAnKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ph43nva7miJDlip9cXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cXG5zZXRSZXN1bHQoZCk7XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKjot6/nlLFcIixcInBhdGhcIjpcIm11bFBhcnNlXCIsXCJydWxlXCI6XCIvKlxcbiB2aXBVcmw65a6Y572R5Zyw5Z2AO+i/lOWbnuWAvEpTT07moLzlvI/nmoTlpJrnur/ot6/op4bpopHlnLDlnYBcXG7osIPnlKjmjqXlj6PvvJokLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9tdWxQYXJzZT9ydWxlPemFjee9ruWKqeaJi1xcXCIpLm11bFBhcnNlKHZpcFVybCk7XFxuICovXFxuJC5leHBvcnRzLm11bFBhcnNlID0gZnVuY3Rpb24gKHZpcFVybCwgYmZMaW5rLCBqaWV4aU5hbWUsaGVhZGVycykge1xcbiAgICBpZiAodmlwVXJsLmluZGV4T2YoJ2RvdWJhbicpICE9IC0xKSB7XFxuICAgICAgICB2aXBVcmwgPSB2aXBVcmwuc3BsaXQoJz9wdGFnPScpWzBdXFxuICAgIH1cXG4gICAgbG9nKCfop4bpopHljp/lnLDlnYDvvJonICsgdmlwVXJsKTtcXG4gICAgdmFyIGV4dHJhX2xlbmd0aCA9IDA7XFxuICAgIGlmIChiZkxpbmsgJiYgamlleGlOYW1lKSB7XFxuICAgICAgICB2YXIgdXJscyA9IGJmTGluaztcXG4gICAgICAgIHZhciBuYW1lcyA9IGppZXhpTmFtZTtcXG4gICAgICAgIGlmIChoZWFkZXJzKSB7XFxuICAgICAgICAgICAgdmFyIGhlYWRlcnM9aGVhZGVycztcXG4gICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgIHZhciBoZWFkZXJzPVtdO1xcbiAgICAgICAgfVxcbiAgICAgICAgZXh0cmFfbGVuZ3RoID0gYmZMaW5rLmxlbmd0aDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciB1cmxzID0gW107XFxuICAgICAgICB2YXIgbmFtZXMgPSBbXTtcXG4gICAgICAgIHZhciBoZWFkZXJzPVtdO1xcbiAgICB9XFxuICAgIGxvZyhcXFwi5aSa57q/6Lev6Kej5p6Q5byA5aeLXFxcIilcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlYWRGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvblxcXCIpKTtcXG4gICAgdmFyIHRhZ3NBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlX3NlbGVjdGlvbi5qc29uJykpO1xcbiAgICB0YWdzQXJyYXkuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGV2YWwoJ3ZhciByZWcxPS8nICsgaXRlbSArICcvOycpO1xcbiAgICAgICAgZXZhbCgndmFyIHJlZzI9LycgKyBpdGVtICsgJ3zlhajpg6gvOycpO1xcbiAgICAgICAgaWYgKHZpcFVybC5tYXRjaChyZWcxKSkge1xcbiAgICAgICAgICAgIGxvZygn5b2T5YmN57q/6LevOicgKyBpdGVtKVxcbiAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udGFncyA9PSB1bmRlZmluZWQgfHwgaXRlbS50YWdzLm1hdGNoKHJlZzIpKSB7XFxuICAgICAgICAgICAgICAgICAgICB1cmxzLnB1c2goXFxcInZpZGVvOi8vXFxcIiArIGl0ZW0udXJsICsgdmlwVXJsKTtcXG4gICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnMucHVzaCh7fSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGlmICh1cmxzLmxlbmd0aCA9PSAwIHx8IHVybHMubGVuZ3RoID09IGV4dHJhX2xlbmd0aCkge1xcbiAgICAgICAgbG9nKCflvZPliY3nur/ot686b3RoZXInKVxcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIHVybHMucHVzaChcXFwidmlkZW86Ly9cXFwiICsgaXRlbS51cmwgKyB2aXBVcmwpO1xcbiAgICAgICAgICAgIG5hbWVzLnB1c2goaXRlbS5uYW1lKTtcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGxvZyhg5b2T5YmN5ZCv55So6Kej5p6Q77yaJHt1cmxzLmxlbmd0aH3kuKpgKVxcbiAgICB2YXIgZG1Td2l0Y2ggPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2RtU3dpdGNoLnR4dCcpO1xcbiAgICB2YXIgcyA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYm94U3dpdGNoLnR4dCcpXFxuICAgIGlmIChzID09IFxcXCLlvIBcXFwiKSB7XFxuICAgICAgICB2YXIgdSA9IFtdXFxuICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgdS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsICsgdmlwVXJsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmVxdWlyZShcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL0pvZS9UVmJveC5qc1xcXCIpXFxuICAgICAgICByZXR1cm4g5o6o6YCBdHZib3goe1xcbiAgICAgICAgICAgIG5hbWU6IFxcXCLphY3nva7liqnmiYvmjqjpgIFcXFwiLFxcbiAgICAgICAgICAgIHZvZDogW3tcXG4gICAgICAgICAgICAgICAgLy9uYW1lOiBcXFwi6buY6K6kXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsczogdVxcbiAgICAgICAgICAgIH1dXFxuICAgICAgICB9KVxcbiAgICB9IGVsc2UgaWYgKGRtU3dpdGNoID09ICd0cnVlJykge1xcbiAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2xhenlUb0ppZXhpP3J1bGU9ZG3nm5LlrZBcXFwiKS52aWRlb1g1KHZpcFVybCwgdXJscywgbmFtZXMsaGVhZGVycyk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIHVybHM6IHVybHMsXFxuICAgICAgICAgICAgbmFtZXM6IG5hbWVzLFxcbiAgICAgICAgICAgIGhlYWRlcnM6aGVhZGVyc1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlq3mj5Lmj5Lku7ZcIixcInBhdGhcIjpcImR1YW5cIixcInJ1bGVcIjpcImZ1bmN0aW9uIGF5dG1QYXJzZSh2aXBVcmwpIHtcXHJcXG4gICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL211bFBhcnNlP3J1bGU96YWN572u5Yqp5omLXFxcIikubXVsUGFyc2UodmlwVXJsKTtcXHJcXG59XFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJKU+azqOWFpVwiLFwicGF0aFwiOlwianNBZGRfUGFnZVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5pbmRleCA9IGdldFBhcmFtKCdpbmRleCcpO1xcbnZhciBjb25maWdBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiKSk7XFxuc2hvd0NvbnRlbnQ9Y29uZmlnQXJyYXlbaW5kZXhdLmpzIT11bmRlZmluZWQ/Y29uZmlnQXJyYXlbaW5kZXhdLmpzOicnXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogJ+i+k+WFpeato+ehruagvOW8j+WGheWuuScsXFxuICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogc2hvd0NvbnRlbnQsXFxuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgaGVpZ2h0OiAtMSxcXG4gICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXG4gICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdqc0FkZCcsaW5wdXQpXFxcIixcXG4gICAgICAgIGlkOiAnanNBZGQnXFxuICAgIH1cXG59LCB7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj4x44CB55u05o6l5Lmm5YaZ6YCC55So5LqOeDXnlYzpnaLnmoRqc+S7o+eggeWNs+WPrzxicj4y44CB5Lik56eN5pa55byPOumHjeWumuWQkeaSreaUvumTvuaOpeWSjOi/lOWbnuaSreaUvumTvuaOpeS4pOenjeW9ouW8jzxicj4z44CB5YW35L2T5Y+C6KeB5biu5Yqp5paH5qGjJyxcXG4gICAgZGVzYzon4oCY4oCY4oCZ4oCZPGJpZz48YmlnPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojMjk4QTA4XFxcIj7kv50g5a2YJyxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKGluZGV4KSA9PiB7XFxuICAgICAgICBqc0FkZCA9IGdldFZhcignanNBZGQnKTtcXG4gICAgICAgIHZhciBjb25maWdBcnJheSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICBjb25maWdBcnJheVtpbmRleF0uanM9anNBZGQ7XFxuICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nLCBKU09OLnN0cmluZ2lmeShjb25maWdBcnJheSkpO1xcbiAgICAgICAgYmFjayh0cnVlKTtcXG4gICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7Lkv53lrZjkv67mlLlcXFwiXFxuICAgIH0saW5kZXgpLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxufSk7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Ye95pWwXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcIiQuZXhwb3J0cy5vcF9iYXNpYyA9IGZ1bmN0aW9uIChpKSB7XFxyXFxuICAgIHNldEZpbGUgPSByZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9NeVBhcnNlLmpzb24nKTtcXHJcXG4gICAgZXZhbCgndmFyIGNvbmZpZ0FycmF5PScgKyBzZXRGaWxlKTtcXHJcXG4gICAgaWYgKGNvbmZpZ0FycmF5W2ldLnRhZ3MgPT0gdW5kZWZpbmVkKSB7XFxyXFxuICAgICAgICBjb25maWdBcnJheVtpXS50YWdzID0gJ+WFqOmDqCdcXHJcXG4gICAgfVxcclxcbiAgICBpZiAoaW5wdXQgPT0gJ+e8lui+kScpIHtcXHJcXG4gICAgICAgIGNvbmZpZyA9IGNvbmZpZ0FycmF5W2ldLm5hbWUgKyAnLCcgKyBjb25maWdBcnJheVtpXS51cmwgKyAnIyMjJyArIGNvbmZpZ0FycmF5W2ldLnRhZ3M7XFxyXFxuICAgICAgICByZXR1cm4gJChjb25maWcpLmlucHV0KChpLCBjb25maWdBcnJheSkgPT4ge1xcclxcbiAgICAgICAgICAgIGl0ZW0gPSB7XFxyXFxuICAgICAgICAgICAgICAgIG5hbWU6IGlucHV0LnNwbGl0KC8sfO+8jC8pWzBdLFxcclxcbiAgICAgICAgICAgICAgICB1cmw6IGlucHV0LnNwbGl0KC8jIyMvKVswXS5zcGxpdCgvLHzvvIwvKVsxXSxcXHJcXG4gICAgICAgICAgICAgICAgdGFnczogaW5wdXQuc3BsaXQoLyMjIy8pWzFdLFxcclxcbiAgICAgICAgICAgICAgICBqczogY29uZmlnQXJyYXlbaV0uanNcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgY29uZmlnQXJyYXkuc3BsaWNlKGksIDEsIGl0ZW0pO1xcclxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mm7TmlrDmiJDlip9cXFwiXFxyXFxuICAgICAgICB9LCBpLCBjb25maWdBcnJheSlcXHJcXG4gICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn56e75L2NJykge1xcclxcbiAgICAgICAgcmV0dXJuICQoJzAnLCAn5L2g5oOz5o6S56ys5Yeg77yf5bqP5Y+35LuOMOW8gOWni34nKS5pbnB1dCgoaSwgY29uZmlnQXJyYXkpID0+IHtcXHJcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPiBjb25maWdBcnJheS5sZW5ndGggLSAxKSB7XFxyXFxuICAgICAgICAgICAgICAgIGlucHV0ID0gY29uZmlnQXJyYXkubGVuZ3RoIC0gMTtcXHJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0IDwgMCkge1xcclxcbiAgICAgICAgICAgICAgICBpbnB1dCA9IDA7XFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIHRlbXAgPSBjb25maWdBcnJheVtpXTtcXHJcXG4gICAgICAgICAgICBpZiAoaSA+IGlucHV0KSB7XFxyXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gaTsgaW5kZXggPiBpbnB1dDsgaW5kZXgtLSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5kZXhdID0gY29uZmlnQXJyYXlbaW5kZXggLSAxXTtcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gaTsgaW5kZXggPCBpbnB1dDsgaW5kZXgrKykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlnQXJyYXlbaW5kZXhdID0gY29uZmlnQXJyYXlbaW5kZXggKyAxXTtcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICBjb25maWdBcnJheVtpbnB1dF0gPSB0ZW1wO1xcclxcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/np7vkvY3miJDlip9cXFwiXFxyXFxuICAgICAgICB9LCBpLCBjb25maWdBcnJheSlcXHJcXG4gICAgfSBlbHNlIHtcXHJcXG4gICAgICAgIGNvbmZpZ0FycmF5LnNwbGljZShpLCAxKTtcXHJcXG4gICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L015UGFyc2UuanNvbicsIEpTT04uc3RyaW5naWZ5KGNvbmZpZ0FycmF5KSk7XFxyXFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxyXFxuICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Yig6Zmk5oiQ5YqfXFxcIlxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbiQuZXhwb3J0cy5kbVNldHRpbmdzID0gZnVuY3Rpb24gKHRhZykge1xcclxcbiAgICBzd2l0Y2ggKHRhZykge1xcclxcbiAgICAgICAgLy8g5Ye95pWw5YiH5o2iXFxyXFxuICAgICAgICBjYXNlIDA6XFxyXFxuICAgICAgICAgICAgb3B0aW9ucyA9IFsn5bem5bK45a6Y5by5JywgJ2Zj5a6Y5by5JywgJ+S4ieaWueaJtumjjiddO1xcclxcbiAgICAgICAgICAgIHJldHVybiAkKG9wdGlvbnMsIDEpLnNlbGVjdCgoKSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzID0gSlNPTi5wYXJzZShyZWFkRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJykpO1xcclxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncy5kbUZyb20gPSBpbnB1dDtcXHJcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicsIEpTT04uc3RyaW5naWZ5KGN1clNldHRpbmdzKSk7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLmnaXmupDkuLo6XFxcIiArIGlucHV0O1xcclxcbiAgICAgICAgICAgIH0pXFxyXFxuICAgICAgICAgICAgYnJlYWs7XFxyXFxuXFxyXFxuICAgICAgICAvLyDmm7TmlLnlh73mlbDkvZznlKjln59cXHJcXG4gICAgICAgIGNhc2UgMTpcXHJcXG4gICAgICAgICAgICBvcHRpb25zID0gWydnbG9iYWwnLCAnb3RoZXInXTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gJChvcHRpb25zLCAxKS5zZWxlY3QoKCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICBjdXJTZXR0aW5ncyA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicpKTtcXHJcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MuZG1TY29wZSA9IGlucHV0O1xcclxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9kbeebkuWtkC9zZXR0aW5ncy5qc29uJywgSlNPTi5zdHJpbmdpZnkoY3VyU2V0dGluZ3MpKTtcXHJcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouS9nOeUqOWfn+S4ujpcXFwiICsgaW5wdXQ7XFxyXFxuICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgICAgICBicmVhaztcXHJcXG4gICAgICAgIGNhc2UgMjpcXHJcXG4gICAgICAgICAgICBmb250U2l6ZSA9IEpTT04ucGFyc2UocmVhZEZpbGUoJ2hpa2VyOi8vZmlsZXMvZG3nm5LlrZAvc2V0dGluZ3MuanNvbicpKS5mb250U2l6ZTtcXHJcXG4gICAgICAgICAgICByZXR1cm4gJChmb250U2l6ZSwgJ+ivt+i+k+WFpeS4gOS4quWQiOmAgueahOaVsOWtlycpLmlucHV0KCgpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgY3VyU2V0dGluZ3MgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nKSk7XFxyXFxuICAgICAgICAgICAgICAgIGN1clNldHRpbmdzLmZvbnRTaXplID0gaW5wdXQ7XFxyXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL2Rt55uS5a2QL3NldHRpbmdzLmpzb24nLCBKU09OLnN0cmluZ2lmeShjdXJTZXR0aW5ncykpO1xcclxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5by55bmV5aSn5bCP5bey5L+u5pS55Li6XFxcIiArIGlucHV0O1xcclxcbiAgICAgICAgICAgIH0pXFxyXFxuICAgICAgICAgICAgYnJlYWs7ICAgIFxcclxcbiAgICAgICAgZGVmYXVsdDpcXHJcXG4gICAgICAgICAgICBicmVhaztcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cIn1dIiwiaWNvbiI6Imh0dHBzOi8vY2RuNC5pY29uZmluZGVyLmNvbS9kYXRhL2ljb25zL21hY2Fyb24tMS80OC9wcmVmZXJlbmNlcy1zeXN0ZW0tMTI4LnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment