Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@新片场@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5paw54mH5Zy6IiwiYXV0aG9yIjoi6aG6IiwidXJsIjoiaHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbS9jaGFubmVsL2luZGV4L2lkLWZ5QWxsL3BhZ2UtZnlwYWdlIiwidmVyc2lvbiI6MjAyMjA0MTgsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBQQUdFID0gTVlfVVJMLnNwbGl0KCdwYWdlLScpWzFdO1xudmFyIGQgPSBbXTtcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobVKU09OXCIpKS5ydWxlKVxuaWYgKFBBR0UgPT0gMSkge1xuXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2Uv6aaW6aG15Zu65a6aSlNPTlwiKSkucnVsZSlcblx0ZC5wdXNoKHtcblx0XHRjb2xfdHlwZTogJ2ljb25fMV9zZWFyY2gnLFxuXHRcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL+i/m+WFpeaQnOe0oumhtVwiKSkucnVsZSksXG5cdFx0dGl0bGU6ICfor7fovpPlhaXkvZzlk4HlkI3jgIHliJvkvZzkuronLFxuXHRcdGV4dHJhOiB7XG5cdFx0XHRuZXdXaW5kb3c6IHRydWUsXG5cdFx0XHR3aW5kb3dJZDogXCLmlrDniYflnLrmkJzntKJcIlxuXHRcdH1cblx0fSlcblx0ZC5wdXNoKHtcblx0XHQvL3RpdGxlOmJhbm5lcnMudGl0bGUsXG5cdFx0aW1nOiBiYW5uZXJzLmNvdmVyLFxuXHRcdGNvbF90eXBlOiAnY2FyZF9waWNfMScsXG5cdFx0ZGVzYzogJzAnLFxuXHRcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2FwcOaSreaUvumTvuaOpVwiKSkucnVsZSksXG5cdH0pXG5cdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobXlm5vlpKfmjInpkq5cIikpLnJ1bGUpXG5cdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobXliJfooahcIikpLnJ1bGUpXG59XG5zZXRSZXN1bHQoZCk7Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoi4pGg5o6o6I2QIiwic2VhcmNoRmluZCI6IiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoicGMiLCJwcmVSdWxlIjoiIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIvCflKLpppbpobXliJfooahcIixcInBhdGhcIjpcIummlumhteWIl+ihqFwiLFwicnVsZVwiOlwiaWYgKHRpcHNfdGl0bGUgPT0gJ+WIhuexuycgfHwgdGlwc190aXRsZSA9PSAn5L2c5ZOBJykge1xcbiAgICBmb3IgKGxldCBpIGluIFhQQykge1xcbiAgICAgICAgdmFyIHZtID0gWFBDW2ldO1xcbi8v5Y2V5Liq6KeG6aKRd2Vi6ZO+5o6lXFxuXFx0ICB2YXIgd2ViX2xpbmtzID0gdm0ud2ViX3VybDtcXG4gICAgICAgIHZhciBhcHBfbGlua3MgPSB2bS51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1xcbiAgICAgICAgdmFyIElEID0gYXBwX2xpbmtzLnNwbGl0KCdpZD0nKVsxXVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdm0uY2F0ZWdvcnlfbmFtZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiB2bS5jb3ZlciwgICAgICAgdXJsOmV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3dlYl/lj5HnjrDkuoznuqfliIbnsbtcXFwiKSkucnVsZSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18yJyxcXG4gICAgICAgICAgICBkZXNjOiAnMCcsXFxuICAgICAgICB9KVxcbiAgICB9XFxufVxcblxcbmlmICh0aXBzX3RpdGxlICE9ICfkvZzlk4EnICYmIHRpcHNfdGl0bGUgIT0gJ+WIhuexuycpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaycsXFxuICAgIH0pXFxuIGZvciAobGV0IGkgaW4gdm1qc29uKSB7XFxuICAgICAgICB2YXIgdm0gPSB2bWpzb25baV0uZGF0YS5yZXNvdXJjZTtcXG4gICAgICAgIHZhciBQTEFZX0xJTktTID0gdm0udXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcXG52YXIgVVNFUl9IT01FPSAnaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS91c2VyLycrdm0udXNlcl9pZDtcXG5pZiAodGlwc190aXRsZSAhPSAn5Zy65bqT5o6o6I2QJyApe1xcbnZhciB1cmwgPWV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+WIm+S9nOS6uummlumhtVxcXCIpKS5ydWxlKVxcbn1lbHNle3ZhciB1cmwgPVxcXCJoaWtlcjovL2VtcHR5XFxcIn1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHZtLmF1dGhvci51c2VyaW5mby51c2VybmFtZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiB2bS5hdXRob3IudXNlcmluZm8uYXZhdGFyLFxcbiAgICAgICAgICAgIHVybDp1cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHZtLnRpdGxlLFxcbiAgICAgICAgICAgIHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv6KeG6aKR6K+m5oOF6aG1XFxcIikpLnJ1bGUpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB2bS50aXRsZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiB2bS5jb3ZlcixcXG4gICAgICAgICAgICB1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2FwcOaSreaUvumTvuaOpVxcXCIpKS5ydWxlKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHZtLmNvdW50LmNvdW50X2NvbGxlY3QsXFxuICAgICAgICAgICAgcGljX3VybDogJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L3dlaXN5ci9pY29uL2Jic+aUtuiXjy5zdmcnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF8zJyxcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB2bS5jb3VudC5jb3VudF9jb21tZW50LFxcbiAgICAgICAgICAgIHBpY191cmw6ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaWNvbi9iYnPlm57lpI0uc3ZnJyxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoUExBWV9MSU5LUykgPT4ge1xcblxcdFxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfor6bnu4bnsbvliKsnLCAn6K+E6K66Jyk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+inhumikeivpuaDhemhtVxcXCIpKS5ydWxlKTtcXG5cXHRcXHRcXHRcXHRcXHR9LFBMQVlfTElOS1MpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF8zJyxcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB2bS5jb3VudC5jb3VudF9saWtlLFxcbiAgICAgICAgICAgIHBpY191cmw6ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaWNvbi9iYnPngrnotZ4uc3ZnJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfMycsXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnLFxcbiAgICAgICAgfSlcXG4gICAgXFx0fVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImFwcOWIhuexu+S4juaQnOe0ouWIl+ihqFwiLFwicGF0aFwiOlwiYXBw5YiG57G75LiO5pCc57Si5YiX6KGoXCIsXCJydWxlXCI6XCJ2YXIgQVBQX1VSTCA9IFxcXCJodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL3YyL3NlYXJjaD90eXBlPVxcXCIgKyB0aXBzX3NlbGVjdCArIFxcXCIma3c9XFxcIiArIHRpcHNfdGl0bGUgKycmcGFnZT0nICsgUEFHRTtcXG52YXIgYXBwX2xpc3RzID0gSlNPTi5wYXJzZShyZXF1ZXN0KEFQUF9VUkwpKS5kYXRhLmxpc3Q7XFxuaWYgKGFwcF9saXN0cy5sZW5ndGggIT0gXFxcIlxcXCIpIHtcXG5cXHRmb3IgKGxldCBpIGluIGFwcF9saXN0cykge1xcblxcdFxcdHZhciBQTEFZX0xJTktTID0gYXBwX2xpc3RzW2ldLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XFxuXFx0XFx0dmFyIGxpa2UgPSBhcHBfbGlzdHNbaV0uY291bnQuY291bnRfbGlrZTtcXG5cXHRcXHR2YXIgdmlldyA9IGFwcF9saXN0c1tpXS5jb3VudC5jb3VudF92aWV3O1xcblxcdFxcdGlmIChsaWtlID4gMTAwMCkgbGlrZSA9IChsaWtlIC8gMTAwMCkudG9GaXhlZCgxKSArICdrJztcXG5cXHRcXHRpZiAodmlldyA+IDEwMDAwKSB2aWV3ID0gKHZpZXcgLyAxMDAwMCkudG9GaXhlZCgxKSArICd3JztcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdHBpY191cmw6IGFwcF9saXN0c1tpXS5jb3ZlcixcXG5cXHRcXHRcXHR0aXRsZTogYXBwX2xpc3RzW2ldLnRpdGxlLFxcblxcdFxcdFxcdGRlc2M6IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ+aSreaUvumHjyAnICsgdmlldyArICcgwrcgJyArICfllpzmrKIgJyArIGxpa2UgKyAnXFxcXG4nICsgYXBwX2xpc3RzW2ldXFxuXFx0XFx0XFx0XFx0LmF1dGhvci51c2VyaW5mby51c2VybmFtZSArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHR1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+inhumikeivpuaDhemhtVxcXCIpKS5ydWxlKSxcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcdFxcdH0pXFxuXFx0fVxcbn0gZWxzZSB7XFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvRU5EXFxcIikpLnJ1bGUpXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57Si6aG15LiK6YOoXCIsXCJwYXRoXCI6XCLmkJzntKLpobXkuIrpg6hcIixcInJ1bGVcIjpcImlmIChQQUdFID09IDEpIHtcXG5cXHRkLnB1c2goe1xcblxcdFxcdHVybDogXFxcInB1dE15VmFyKCfmkJzlhbPplK7lrZcnLGlucHV0KTt2YXIgdGlwc190aXRsZSA9IGdldE15VmFyKCfmkJzlhbPplK7lrZcnKTt2YXIgbG9jYWxEYXRhID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9jYWNoZS/mlrDniYflnLrljoblj7LmkJzntKIuanNvbicpO2lmICghbG9jYWxEYXRhKSBsb2NhbERhdGEgPSdbXSc7dmFyIGxpc2hpPUpTT04ucGFyc2UobG9jYWxEYXRhKTtsZXQgY2NjID0gbGlzaGkuaW5kZXhPZihpbnB1dCk7aWYoY2NjID4tMSl7bGlzaGkuc3BsaWNlKGNjYywxKX07bGlzaGkucHVzaCh0aXBzX3RpdGxlKTtsaXNoaT1saXNoaS5zbGljZSgtMjgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS/mlrDniYflnLrljoblj7LmkJzntKIuanNvbicsIEpTT04uc3RyaW5naWZ5KGxpc2hpKSk7cmVmcmVzaFBhZ2UoZmFsc2UpXFxcIixcXG5cXHRcXHRkZXNjOiAn6K+36L6T5YWl5L2c5ZOB5ZCN44CB5Yib5L2c5Lq6JyxcXG5cXHRcXHRleHRyYToge1xcblxcdFxcdFxcdGRlZmF1bHRWYWx1ZTogdGlwc190aXRsZSxcXG5cXHRcXHR9LFxcblxcdFxcdGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcblxcdH0pO1xcblxcdGQucHVzaCh7XFxuXFx0XFx0Y29sX3R5cGU6ICdsaW5lJyxcXG5cXHR9KVxcblxcblxcdGlmICghdGlwc190aXRsZSkge1xcblxcdFxcdGlmIChyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL2NhY2hlL+aWsOeJh+WcuuWOhuWPsuaQnOe0oi5qc29uJykpIHtcXG5cXHRcXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMwMDA+JyArICfwn5eR77iPIOWOhuWPsuaQnOe0oicgKyAnPC9mb250PjwvYj4nLFxcblxcdFxcdFxcdFxcdHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHR3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUv5paw54mH5Zy65Y6G5Y+y5pCc57SiLmpzb24nLCAnJyk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoZmFsc2UpO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0XFx0fSksXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcblxcdFxcdFxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0XFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdHZhciBsb2NhbERhdGEgPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL2NhY2hlL+aWsOeJh+WcuuWOhuWPsuaQnOe0oi5qc29uJyk7XFxuXFx0XFx0XFx0aWYgKCFsb2NhbERhdGEpIGxvY2FsRGF0YSA9IFxcXCJbXVxcXCI7XFxuXFx0XFx0XFx0dmFyIGxpc2hpID0gSlNPTi5wYXJzZShsb2NhbERhdGEpLnNsaWNlKC0yOCk7XFxuXFx0XFx0XFx0dmFyIEhpc3RvcnkgPSBcXFwiXFxcIjtcXG5cXHRcXHRcXHRmb3IgKGxldCBpID0gbGlzaGkubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcXG5cXHRcXHRcXHRcXHR2YXIgY2NsaXNoaSA9IGxpc2hpW2ldO1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0dGl0bGU6IGNjbGlzaGksXFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuXFx0XFx0XFx0XFx0XFx0dXJsOiAkKCkubGF6eVJ1bGUoKGNjbGlzaGkpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign5pCc5YWz6ZSu5a2XJywgY2NsaXNoaSk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdFxcdFxcdH0sIGNjbGlzaGkpLFxcblxcdFxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdH1cXG5cXHRcXHR9XFxuXFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdH0pXFxuXFx0XFx0fVxcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0dGl0bGU6ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMDAwPicgKyAn8J+UpSDng63pl6jmkJzntKInICsgJzwvZm9udD48L2I+JyxcXG5cXHRcXHRcXHR1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXHRcXHRcXHRjb2xfdHlwZTogXFxcInRleHRfMVxcXCIsXFxuXFx0XFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSk7XFxuXFx0XFx0dmFyIHVybCA9ICdodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL3NlYXJjaF9yZWNvbW1lbmRfa3dzJztcXG5cXHRcXHR2YXIgSG90anNvbiA9IEpTT04ucGFyc2UoZmV0Y2godXJsKSkuZGF0YS5saXN0O1xcblxcdFxcdGZvciAobGV0IGkgaW4gSG90anNvbikge1xcblxcdFxcdFxcdHZhciB0aXBzID0gSG90anNvbltpXS5uYW1lO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6IHRpcHMsXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuXFx0XFx0XFx0XFx0dXJsOiAkKCkubGF6eVJ1bGUoKHRpcHMpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign5pCc5YWz6ZSu5a2XJywgdGlwcyk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdFxcdH0sIHRpcHMpLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdH1cXG5cXHR9XFxuXFxuXFx0Y29uc3Qgc2VhcmNoX3NodWxpYW5nID0gJ2h0dHBzOi8vd3d3LnhpbnBpYW5jaGFuZy5jb20vc2VhcmNoP2t3PScgKyB0aXBzX3RpdGxlO1xcblxcdHZhciBzZWFyY2hfTlVNQkVSID0gcGRmYShyZXF1ZXN0KHNlYXJjaF9zaHVsaWFuZyx7aGVhZGVyczogeyAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKSd9fSksIFxcXCIuYm9yZGVyLWImJi5pdGVtcy1jZW50ZXImJmFcXFwiKVxcbnZhciBzZWFyY2hfdGlwc18wID0gcGRmaChzZWFyY2hfTlVNQkVSWzBdLCAnLnRyYW5zaXRpb24mJlRleHQnKTtcXG52YXIgc2VhcmNoX3RpcHNfMSA9IHBkZmgoc2VhcmNoX05VTUJFUlsxXSwgJy50cmFuc2l0aW9uJiZUZXh0Jyk7XFxuXFx0dmFyIHNlYXJjaF90aXBzXzIgPSBwZGZoKHNlYXJjaF9OVU1CRVJbNV0sICcudHJhbnNpdGlvbiYmVGV4dCcpO1xcbi8qXFxuXFx0dmFyIHNlYXJjaF90aXBzXzAgPSBwZGZoKHNlYXJjaF9OVU1CRVJbMF0sICcudHJhbnNpdGlvbiYmVGV4dCcpLm1hdGNoKC8oXFxcXHcrKXwoXFxcXCspL2cpLmpvaW4oXFxcIlxcXCIpXFxuXFx0dmFyIHNlYXJjaF90aXBzXzEgPSBwZGZoKHNlYXJjaF9OVU1CRVJbMV0sICcudHJhbnNpdGlvbiYmVGV4dCcpLm1hdGNoKC8oXFxcXHcrKXwoXFxcXCspL2cpLmpvaW4oXFxcIlxcXCIpXFxuXFx0dmFyIHNlYXJjaF90aXBzXzIgPSBwZGZoKHNlYXJjaF9OVU1CRVJbMl0sICcudHJhbnNpdGlvbiYmVGV4dCcpLm1hdGNoKC8oXFxcXHcrKXwoXFxcXCspL2cpLmpvaW4oXFxcIlxcXCIpXFxuKi9cXG5cXHRwdXRNeVZhcign5pWw6YeP4oCU5L2c5ZOBJywgc2VhcmNoX3RpcHNfMClcXG5cXHRwdXRNeVZhcign5pWw6YeP4oCU5Yib5L2c5Lq6Jywgc2VhcmNoX3RpcHNfMSlcXG5cXHRwdXRNeVZhcign5pWw6YeP4oCU5paH56ugJywgc2VhcmNoX3RpcHNfMilcXG5cXG5cXHR2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxuXFx0ZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZXMpIHtcXG5cXHRcXHRyZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZXMgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcblxcdH1cXG5cXHRpZiAodGlwc190aXRsZSkge1xcblxcdFxcdHZhciB0aXBzXzAgPSBnZXRNeVZhcihcXFwi5pWw6YeP4oCU5L2c5ZOBXFxcIilcXG5cXHRcXHR2YXIgdGlwc18xID0gZ2V0TXlWYXIoXFxcIuaVsOmHj+KAlOWIm+S9nOS6ulxcXCIpXFxuXFx0XFx0dmFyIHRpcHNfMiA9IGdldE15VmFyKFxcXCLmlbDph4/igJTmlofnq6BcXFwiKVxcblxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdH0pXFxuXFx0XFx0fVxcblxcdFxcdHZhciDkvZzlk4E9IHRpcHNfMDtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdC8vIHRpdGxlOiAnJysn4oCY4oCYJysgdGlwc18wKyAn4oCZ4oCZJyxcXG5cXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ2FydGljbGUnID8gZ2V0SGVhZCh0aXRsZXMgPeS9nOWTgSkgOiDkvZzlk4EsXFxuXFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzMnLFxcblxcdFxcdFxcdHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+S9nC/liJsv5paHJywgJ2FydGljbGUnKTtcXG5cXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0fSksXFxuXFx0XFx0fSlcXG5cXHRcXHR2YXIg5Yib5L2c5Lq6PSB0aXBzXzE7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHQvLyB0aXRsZTogXFxcIuWIm+S9nOS6uiBcXFwiKyfigJjigJgnKyB0aXBzXzErICfigJnigJknLFxcblxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAnY3JlYXRvcicgPyBnZXRIZWFkKHRpdGxlcyA95Yib5L2c5Lq6KSA6IOWIm+S9nOS6uixcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMycsXFxuXFx0XFx0XFx0dXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRwdXRNeVZhcign5L2cL+WImy/mlocnLCAnY3JlYXRvcicpO1xcblxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHR9KSxcXG5cXHRcXHR9KVxcblxcdFxcdHZhciDmlofnq6A9ICB0aXBzXzIgO1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Ly8gdGl0bGU6IFxcXCLmlofnq6AgXFxcIisn4oCY4oCYJysgdGlwc18yKyAn4oCZ4oCZJyxcXG5cXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ+aWh+eroCcgPyBnZXRIZWFkKHRpdGxlcyA95paH56ugKSA6IOaWh+eroCxcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMycsXFxuXFx0XFx0XFx0dXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRwdXRNeVZhcign5L2cL+WImy/mlocnLCAn5paH56ugJyk7XFxuXFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdH0pLFxcblxcdFxcdH0pXFxuXFx0fVxcblxcdGNsZWFyTXlWYXIoJ+aVsOmHj+KAlOS9nOWTgScpO1xcblxcdGNsZWFyTXlWYXIoJ+aVsOmHj+KAlOWIm+S9nOS6uicpO1xcblxcdGNsZWFyTXlWYXIoJ+aVsOmHj+KAlOaWh+eroCcpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIummlumhteWbm+Wkp+aMiemSrlwiLFwicGF0aFwiOlwi6aaW6aG15Zub5aSn5oyJ6ZKuXCIsXCJydWxlXCI6XCJkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLlj5HnjrBcXFwiLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vb3NzLXhwYzAueHBjY2RuLmNvbS9VcGxvYWQvZWR1LzIwMTkvMDEvMTQ1YzNjMzgyZjFhODJkLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9wYWdlL2Rpc2NvdmVyeVxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcign5Li76ZO+5o6lJywgaW5wdXQpO1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfkuLvmoIfpopgnLCAn5YiG57G7Jyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgfSksXFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIueyvumAiVxcXCIsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9vc3MteHBjMC54cGNjZG4uY29tL1VwbG9hZC9lZHUvMjAxOS8wMS8xNDVjM2MzODcxYmQ3MDgucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL2hvbWUvc2VsZWN0aW9uXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfkuLvpk77mjqUnLCBpbnB1dCk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+S4u+agh+mimCcsICfku4rml6Xnsr7pgIknKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9KSxcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5Zy65bqTJyxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL29zcy14cGMwLnhwY2Nkbi5jb20vVXBsb2FkL2VkdS8yMDE5LzAyLzAxNWM1M2MwM2NiNjYwNS5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vaG9tZS92bW92aWVyXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfkuLvpk77mjqUnLCBpbnB1dCk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+S4u+agh+mimCcsICflnLrlupPmjqjojZAnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9KSxcXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn54Ot6ZeoJyxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL29zcy14cGMwLnhwY2Nkbi5jb20vVXBsb2FkL2VkdS8yMDE5LzA4LzA1NWQ0N2UyNTExZDFkOC5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vaG9tZS9ob3Q/cGFnZT1cXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+S4u+mTvuaOpScsIGlucHV0KTtcXG4gICAgICAgICAgICBwdXRNeVZhcign5Li75qCH6aKYJywgJ+eDremXqCcpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgIH0pLFxcbiAgICB9KVxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMDAwPicgKyB0aXBzX3RpdGxlICsgJzwvZm9udD48L2I+JyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLwn5SO6L+b5YWl5pCc57Si6aG1XCIsXCJwYXRoXCI6XCLov5vlhaXmkJzntKLpobVcIixcInJ1bGVcIjpcIiQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2Z1bGxUaGVtZSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHtcXG5cXHRzZXRQYWdlVGl0bGUoJ+aWsOeJh+WcusK35pCc57SiJylcXG5cXHR2YXIgZCA9IFtdO1xcblxcdHZhciBQQUdFID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuXFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAzMDsgaSsrKSB7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdH0pXFxuXFx0fVxcblxcdGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuXFx0XFx0Y2xlYXJNeVZhcign5pCc5YWz6ZSu5a2XJyk7XFxuXFx0XFx0Y2xlYXJNeVZhcign5L2cL+WImy/mlocnKTtcXG5cXHR9KSlcXG5cXHR2YXIgdGlwc190aXRsZSA9IGdldE15VmFyKFxcXCLmkJzlhbPplK7lrZdcXFwiKVxcblxcdHZhciB0aXBzX3NlbGVjdCA9IGdldE15VmFyKFxcXCLkvZwv5YibL+aWh1xcXCIsICdhcnRpY2xlJyk7XFxuXFx0Ly9sb2codGlwc19zZWxlY3QpXFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5pCc57Si6aG15LiK6YOoXFxcIikpLnJ1bGUpXFxuXFx0aWYgKHRpcHNfdGl0bGUpIHtcXG5cXHRcXHRpZiAodGlwc19zZWxlY3QgPT0gJ2FydGljbGUnKSB7XFxuXFx0XFx0ICAvL+aQnOS9nOWTgVxcblxcdFxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2FwcOWIhuexu+S4juaQnOe0ouWIl+ihqFxcXCIpKS5ydWxlKVxcblxcdFxcdH0gZWxzZSBpZiAodGlwc19zZWxlY3QgPT0gJ2NyZWF0b3InKSB7XFxuXFx0XFx0XFx0Ly/mkJzkurpcXG5cXHRcXHRcXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcHDliJvkvZzkurrmkJzntKLliJfooahcXFwiKSkucnVsZSlcXG5cXHRcXHR9IGVsc2UgaWYgKHRpcHNfc2VsZWN0ID09ICfmlofnq6AnKSB7XFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvd2ViX+aWh+eroOWIl+ihqFxcXCIpKS5ydWxlKVxcblxcdFxcdH1cXG5cXHR9XFxuXFx0c2V0UmVzdWx0KGQpXFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKZqO+4j+mmlumhtUpTT05cIixcInBhdGhcIjpcIummlumhtUpTT05cIixcInJ1bGVcIjpcInZhciB0aXBzX3RpdGxlID0gZ2V0TXlWYXIoXFxcIuS4u+agh+mimFxcXCIsICfkvZzlk4EnKVxcbnZhciB0aXBzX3VybCA9IGdldE15VmFyKFxcXCLkuLvpk77mjqVcXFwiKTtcXG5pZiAodGlwc190aXRsZSAhPSAn5L2c5ZOBJyAmJiB0aXBzX3RpdGxlICE9ICfliIbnsbsnKSB7XFxuXFx0dmFyIGFwcHVybCA9IHRpcHNfdXJsO1xcblxcdGlmICh0aXBzX3RpdGxlID09ICflnLrlupPmjqjojZAnKSB7XFxuXFx0XFx0dmFyIHQgPSAwXFxuXFx0fSBlbHNlIGlmKHRpcHNfdGl0bGUgPT0gJ+eDremXqCcpIHtcXG5cXHRcXHR2YXIgdCA9IDJcXG5cXHR9IGVsc2Uge1xcblxcdFxcdHZhciB0ID0gMVxcblxcdH1cXG5cXHR2YXIgdm1qc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwcHVybCwge2hlYWRlcnM6IHsnVXNlci1BZ2VudCc6XFxcIlVzZXItQWdlbnROZXdTdHVkaW9zLzEuOS4xIChjb20ueGlucGlhbmNoYW5nLm5ld3N0dWRpb3M7IGJ1aWxkOjc4NjsgQW5kcm9pZCAxMVxcXCJ9LG1ldGhvZDogJ0dFVCd9KSkuZGF0YS5saXN0LnNsaWNlKHQpO1xcbi8vbG9nKHZtanNvbik7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwid2ViX+WPkeeOsOS6jOe6p+WIhuexu1wiLFwicGF0aFwiOlwid2ViX+WPkeeOsOS6jOe6p+WIhuexu1wiLFwicnVsZVwiOlwiJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2Ujbm9IaXN0b3J5IycpLnJ1bGUoKHdlYl9saW5rcykgPT4ge1xcblxcdHZhciBkID0gW107XFxuXFx0dmFyIFBBR0UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5cXHQvLyDlvZPliY0gdXJsXFxuXFx0Y29uc3QgVVJMX1BSRUZJWCA9IHdlYl9saW5rcztcXG5cXHRjb25zdCBDVVJSRU5UX1VSTCA9IGdldFZhcignY3VycmVudF91cmwnLCBVUkxfUFJFRklYKVxcblxcdC8vIOi/m+WFpeS6jOe6p+a4heepuumHjee9ruS4gOasoVxcblxcdGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuXFx0XFx0Y2xlYXJWYXIoJ2NhdGVfMicpO1xcblxcdFxcdGNsZWFyVmFyKCdjdXJyZW50X3VybCcpXFxuXFx0fSkpXFxuXFx0Y29uc3QgQ0FURV9MRVZFTF8yID0gZ2V0VmFyKFxcXCJjYXRlXzJcXFwiLCBcXFwiMFxcXCIpXFxuXFx0Ly8g6I635Y+W6aG16Z2i5YaF5a65XFxuXFx0bGV0IGh0bWwgPSByZXF1ZXN0KFVSTF9QUkVGSVgsIHtoZWFkZXJzOiB7ICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjApJ319KVxcblxcdC8vIOesrOS4gOmhteeLrOWNoFxcblxcdGlmIChQQUdFID09IDEpIHtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0fSlcXG5cXHRcXHQvLyDlj5bkuoznuqfmoIfnrb5cXG5cXHRcXHRsZXQgY2F0ZWdvcmllX2xldmVsXzIgPSBwZGZhKGh0bWwsICcuc2Vjb25kLXR5cGUmJmxpJylcXG5cXHRcXHQvLyDlvqrnjq/kuoznuqfmoIfnrb5cXG5cXHRcXHRjYXRlZ29yaWVfbGV2ZWxfMi5mb3JFYWNoKChjYXRlXzIsIGluZGV4XzIpID0+IHtcXG5cXHRcXHRcXHRsZXQgdGl0bGUgPSBwZGZoKGNhdGVfMiwgJ2EmJlRleHQnKVxcblxcdFxcdFxcdGxldCBsaW5rID0gcGRmaChjYXRlXzIsICdhJiZocmVmJylcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiBwYXJzZUludChDQVRFX0xFVkVMXzIpID09PSBpbmRleF8yID8gXFxcIuKAnOKAnFxcXCIgKyB0aXRsZSArIFxcXCLigJ3igJ1cXFwiIDogdGl0bGUsXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG5cXHRcXHRcXHRcXHR1cmw6ICQoKS5sYXp5UnVsZShwYXJhbXMgPT4ge1xcblxcdFxcdFxcdFxcdFxcdC8vIOWtmOWcqOmTvuaOpeeahOaDheWGteS4i+abtOaWsOe8k+WtmFxcblxcdFxcdFxcdFxcdFxcdGlmIChwYXJhbXMubGluaykge1xcblxcdFxcdFxcdFxcdFxcdFxcdHB1dFZhcignY2F0ZV8yJywgcGFyYW1zLmluZGV4LnRvU3RyaW5nKCkpXFxuXFx0XFx0XFx0XFx0XFx0XFx0cHV0VmFyKCdjdXJyZW50X3VybCcsICdodHRwczovL3d3dy54aW5waWFuY2hhbmcuY29tJyArIHBhcmFtc1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdC5saW5rKVxcblxcdFxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKClcXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcdFxcdFxcdFxcdH0sIHtcXG5cXHRcXHRcXHRcXHRcXHRpbmRleDogaW5kZXhfMixcXG5cXHRcXHRcXHRcXHRcXHRsaW5rOiBsaW5rXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9KVxcblxcdFxcdH0pXFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdH0pXFxuXFx0XFx0LyogZC5wdXNoKHtcXG5cXHRcXHQgICAgIHRpdGxlOiAn5b2T5YmNVVJM77yaJyArIENVUlJFTlRfVVJMLFxcblxcdFxcdCAgICAgY29sX3R5cGU6ICdsb25nX3RleHQnLFxcblxcdFxcdCB9KSovXFxuXFx0fVxcblxcdGxldCBmZW5sZWlfdXJsID0gJyc7XFxuXFx0aWYgKENVUlJFTlRfVVJMLmluZGV4T2YoJ2FydGljbGVMaXN0UGFnZScpID4gLTEpIHtcXG5cXHRcXHRmZW5sZWlfdXJsID0gQ1VSUkVOVF9VUkwucmVwbGFjZSgvXFxcXD9mcm9tPWFydGljbGVMaXN0UGFnZS8sICcvcGFnZS0nICsgUEFHRSlcXG5cXHR9IGVsc2Uge1xcblxcdFxcdGZlbmxlaV91cmwgPSBDVVJSRU5UX1VSTCArICcvcGFnZS0nICsgUEFHRVxcblxcdH1cXG5cXHR2YXIgbGlzdHMgPSByZXF1ZXN0KGZlbmxlaV91cmwsIHtcXG5cXHRcXHRoZWFkZXJzOiB7XFxuXFx0XFx0XFx0XFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQVxcblxcdFxcdH1cXG5cXHR9KVxcblxcdC8vIGxvZyhmZW5sZWlfdXJsKVxcblxcdHZhciB3ZWJfbGlzdHMgPSBwZGZhKGxpc3RzLCBcXFwiYm9keSYmLmVudGVyLWZpbG1wbGF5XFxcIilcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS93ZWJf5YiG57G75YiX6KGoXFxcIikpLnJ1bGUpO1xcblxcdHNldFJlc3VsdChkKVxcbn0sIHdlYl9saW5rcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIndlYl/liIbnsbvliJfooahcIixcInBhdGhcIjpcIndlYl/liIbnsbvliJfooahcIixcInJ1bGVcIjpcImlmICh3ZWJfbGlzdHMubGVuZ3RoICE9IFxcXCJcXFwiKSB7XFxuXFx0Zm9yICh2YXIgaSBpbiB3ZWJfbGlzdHMpIHtcXG5cXHRcXHR2YXIgUExBWV9MSU5LUyA9ICdodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL2FydGljbGUvJyArIHBkZmgod2ViX2xpc3RzW2ldLCAnbGkmJmRhdGEtYXJ0aWNsZWlkJyk7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcdFxcdFxcdHRpdGxlOiBwZGZoKHdlYl9saXN0c1tpXSwgJy5mc18xNCYmVGV4dCcpLFxcblxcdFxcdFxcdGRlc2M6IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ+aSreaUviAnICsgcGRmaCh3ZWJfbGlzdHNbaV0sICcuaWNvbi1wbGF5LXZvbHVtZSYmVGV4dCcpICtcXG5cXHRcXHRcXHRcXHQnIMK3ICcgKyAn5Zac5qyiICcgKyBwZGZoKHdlYl9saXN0c1tpXSwgJy5pY29uLWxpa2UmJlRleHQnKSArICdcXFxcbicgKyBwZGZoKHdlYl9saXN0c1tpXSxcXG5cXHRcXHRcXHRcXHRcXHQncCYmLmZzXzEyJiZUZXh0JykgKyAnXFxcXHRcXFxcdCcgKyBwZGZoKHdlYl9saXN0c1tpXSwgJy5uYW1lJiZUZXh0JykgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0cGljX3VybDogcGQod2ViX2xpc3RzW2ldLCAnaW1nJiZfc3JjJykgKyAnQFJlZmVyZXI9JyArIHBkKHdlYl9saXN0c1tpXSwgJ2ltZyYmX3NyYycpLFxcblxcdFxcdFxcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv6KeG6aKR6K+m5oOF6aG1XFxcIikpLnJ1bGUpLFxcblxcdFxcdH0pO1xcblxcdH1cXG59IGVsc2Uge1xcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL0VORFxcXCIpKS5ydWxlKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImFwcOaSreaUvumTvuaOpVwiLFwicGF0aFwiOlwiYXBw5pKt5pS+6ZO+5o6lXCIsXCJydWxlXCI6XCIkKFBMQVlfTElOS1MpLmxhenlSdWxlKCgpID0+IHtcXG5cXHR0cnl7XFxudmFyIHBsYXlfdXJsX2pzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpKS5kYXRhO1xcblxcdHZhciBwbGF5X3VybHMgPSBwbGF5X3VybF9qc29uLnZpZGVvLmNvbnRlbnQucHJvZ3Jlc3NpdmU7XFxuXFx0Ly8g5byA5aeL6I635Y+W5by55bmVXFxuXFx0dmFyIGRhbm1ha3UgPSBwbGF5X3VybF9qc29uLnZpZDtcXG5cXHR2YXIgZGFubXUgPSAnaHR0cHM6Ly9vc3MtZGFubWFrdTEyLnhwY2Nkbi5jb20vJyArIGRhbm1ha3UgKyAnLnR4dCc7XFxuXFx0dmFyIGNvZGUgPSByZXF1ZXN0KGRhbm11KVxcblxcdHZhciBhcnIgPSBjb2RlLnNwbGl0KFxcXCJcXFxcblxcXCIpXFxuXFx0dmFyIHIgPSBbXVxcblxcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuXFx0XFx0dHJ5IHtcXG5cXHRcXHRcXHR2YXIgbGluZSA9IEpTT04ucGFyc2UoYXJyW2ldKVxcblxcdFxcdFxcdGlmIChsaW5lLmNvbnRlbnQpIHtcXG5cXHRcXHRcXHRcXHRyLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdHRleHQ6IGxpbmUuY29udGVudCxcXG5cXHRcXHRcXHRcXHRcXHR0aW1lOiBsaW5lLm9mZnNldFxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0gY2F0Y2ggKGUpIHt9XFxuXFx0fVxcblxcdHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9kYW5tdS5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkocikpXFxuXFx0Ly8g57uT5p2f5by55bmV6I635Y+WXFxuXFx0bGV0IHVybHMgPSBbXTtcXG5cXHRsZXQgbmFtZXMgPSBbXTtcXG5cXHRmb3IgKGxldCBqIGluIHBsYXlfdXJscykge1xcblxcdFxcdHVybHMucHVzaChwbGF5X3VybHNbal0udXJsKVxcblxcdFxcdG5hbWVzLnB1c2gocGxheV91cmxzW2pdLnByb2ZpbGUpXFxuXFx0fVxcblxcdHZhciBhbGxfdXJsID0gSlNPTi5zdHJpbmdpZnkoe1xcblxcdFxcdHVybHM6IHVybHMsXFxuXFx0XFx0bmFtZXM6IG5hbWVzLFxcblxcdFxcdGRhbm11OiBcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9kYW5tdS5qc29uXFxcIlxcblxcdH0pXFxuLy9cXHRsb2coYWxsX3VybClcXG5cXHRyZXR1cm4gYWxsX3VybFxcbn1jYXRjaChlKXtcXG52YXIgdXJsPWlucHV0LnNwbGl0KCd1cmw9JylbMV1cXG51cmw9dW5lc2NhcGUodXJsKVxcbnJldHVybiAnd2ViOi8vJyt1cmxcXG59XFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImFwcOWIm+S9nOS6uuaQnOe0ouWIl+ihqFwiLFwicGF0aFwiOlwiYXBw5Yib5L2c5Lq65pCc57Si5YiX6KGoXCIsXCJydWxlXCI6XCJ2YXIgQVBQX1VSTCA9IFxcXCJodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL3YyL3NlYXJjaD90eXBlPVxcXCIgKyB0aXBzX3NlbGVjdCArIFxcXCIma3c9XFxcIiArIHRpcHNfdGl0bGUgKycmcGFnZT0nICsgUEFHRTtcXG52YXIgYXBwX2xpc3RzID0gSlNPTi5wYXJzZShyZXF1ZXN0KEFQUF9VUkwpKS5kYXRhLmxpc3Q7XFxuaWYoYXBwX2xpc3RzLmxlbmd0aCAhPVxcXCJcXFwiKSB7XFxuZm9yIChsZXQgaSBpbiBhcHBfbGlzdHMpIHtcXG4gICBzZXRQYWdlVGl0bGUoYXBwX2xpc3RzW2ldLnVzZXJuYW1lKVxcbiB2YXIgVVNFUl9IT01FPWFwcF9saXN0c1tpXS51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sJ2h0dHBzJylcXG5mb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH1cXG52YXIgdXJsPWV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+WIm+S9nOS6uummlumhtVxcXCIpKS5ydWxlKVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgaW1nOiBhcHBfbGlzdHNbaV0uYXZhdGFyICsgJ0BSZWZlcmVyPScgKyBhcHBfbGlzdHNbaV0uYXZhdGFyLFxcbiAgICAgICAgdGl0bGU6IGFwcF9saXN0c1tpXS51c2VybmFtZSxcXG4gICAgICAgIGRlc2M6ICcnLFxcbiAgICAgICAgdXJsOnVybCxcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgfSlcXG5cXG4gICAgdmFyIG9jY3VwYXRpb24gPSBhcHBfbGlzdHNbaV0ub2NjdXBhdGlvbjtcXG4gICAgdmFyIGZvbGxvd2VyID0gJ+eyieS4nSAnICsgYXBwX2xpc3RzW2ldLmNvdW50LmNvdW50X2ZvbGxvd2VyO1xcbiAgICBpZiAoIW9jY3VwYXRpb24pIHtcXG4gICAgICAgIG9jY3VwYXRpb24gPSAnJ1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgb2NjdXBhdGlvbiA9IG9jY3VwYXRpb24gKyAnIMK3ICdcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ1xcdFxcdFxcdFxcdFxcdCcgKyBvY2N1cGF0aW9uICsgZm9sbG93ZXIgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgfSlcXG59XFx0fWVsc2V7XFxuICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9FTkRcXFwiKSkucnVsZSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliJvkvZzkurrpppbpobVcIixcInBhdGhcIjpcIuWIm+S9nOS6uummlumhtVwiLFwicnVsZVwiOlwiJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMnKS5ydWxlKChVU0VSX0hPTUUpID0+IHtcXG5cXHR0cnkge1xcblxcdFxcdHZhciBQQUdFID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuXFx0XFx0dmFyIGQgPSBbXTtcXG5cXHRcXHQvLyDlpLTpg6hcXG5cXHRcXHR2YXIgdXJsID0gVVNFUl9IT01FO1xcblxcdFxcdHZhciBVU0VSX0pTT04gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSkuZGF0YTtcXG5cXHRcXHR2YXIgSUQgPSBVU0VSX0pTT04uaWQ7XFxuXFx0XFx0dmFyIGFwcF9iYWNrZ3JvdW5kID0gVVNFUl9KU09OLmFwcF9iYWNrZ3JvdW5kO1xcblxcdFxcdGlmICghYXBwX2JhY2tncm91bmQpIGFwcF9iYWNrZ3JvdW5kID0gJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L3dlaXN5ci9pbWcveGlucGlhbmNoYW5nLmpwZyc7XFxuXFx0XFx0dmFyIHVzZXJfYXZhdGFyID0gVVNFUl9KU09OLmF2YXRhcjtcXG5cXHRcXHR2YXIgdXNlcl9uYW1lID0gVVNFUl9KU09OLnVzZXJuYW1lO1xcblxcdFxcdHNldFBhZ2VUaXRsZSh1c2VyX25hbWUpXFxuXFx0XFx0dmFyIHVzZXJfZGVzYyA9IFVTRVJfSlNPTi52ZXJpZnlfZGVzY3JpcHRpb247XFxuXFx0XFx0dmFyIHVzZXJfYWJvdXQgPSBVU0VSX0pTT04uYWJvdXQ7XFxuXFx0XFx0Ly/kurrmsJRcXG5cXHRcXHR2YXIgY291bnRfcG9wdWxhcml0eSA9IFVTRVJfSlNPTi5jb3VudC5jb3VudF9wb3B1bGFyaXR5O1xcblxcdFxcdGlmIChjb3VudF9wb3B1bGFyaXR5ID4gMTAwMDApIGNvdW50X3BvcHVsYXJpdHkgPSAoY291bnRfcG9wdWxhcml0eSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ3cnO1xcblxcdFxcdC8v57KJ5LidXFxuXFx0XFx0dmFyIGNvdW50X2ZvbGxvd2VyID0gVVNFUl9KU09OLmNvdW50LmNvdW50X2ZvbGxvd2VyO1xcblxcdFxcdGlmIChjb3VudF9mb2xsb3dlciA+IDEwMDApIGNvdW50X2ZvbGxvd2VyID0gKGNvdW50X2ZvbGxvd2VyIC8gMTAwMCkudG9GaXhlZCgxKSArICdrJztcXG5cXHRcXHRhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcblxcdFxcdFxcdGNsZWFyTXlWYXIoJ+S4u+mhteexu+WIqycpO1xcblxcdFxcdH0pKVxcblxcdFxcdHZhciB0aXBzX3NlbGVjdCA9IGdldE15VmFyKFxcXCLkuLvpobXnsbvliKtcXFwiLCAnbmV3Jyk7XFxuXFx0XFx0aWYgKFBBR0UgPT0gMSkge1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdwaWNfMV9mdWxsJyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogJzAnLFxcblxcdFxcdFxcdFxcdGltZzogYXBwX2JhY2tncm91bmQsXFxuXFx0XFx0XFx0XFx0dXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2F2YXRhcicsXFxuXFx0XFx0XFx0XFx0dGl0bGU6IHVzZXJfbmFtZSArICdcXFxcdFxcXFx0XFxcXHRcXFxcdCcgKyBcXFwiPGZvbnQgY29sb3I9Z3JleT5cXFwiICsgJ+S6uuawlCAnICsgY291bnRfcG9wdWxhcml0eSArICcgwrcgJyArJ+eyieS4nSAnICtjb3VudF9mb2xsb3dlciArIFxcXCI8L2ZvbnQ+XFxcIixcXG5cXHRcXHRcXHRcXHRpbWc6IHVzZXJfYXZhdGFyLFxcblxcdFxcdFxcdFxcdHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdsaW5lJyxcXG5cXHRcXHRcXHR9KTtcXG5cXG5cXHRcXHRcXHR2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxuXFx0XFx0XFx0ZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZXMpIHtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZXMgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF80JyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ25ldycgPyBnZXRIZWFkKHRpdGxlcyA9IFxcXCLmnIDmlrBcXFwiKSA6ICfmnIDmlrAnLFxcblxcdFxcdFxcdFxcdHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+S4u+mhteexu+WIqycsICduZXcnKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0XFx0fSksXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfNCcsXFxuXFx0XFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICd2aWV3JyA/IGdldEhlYWQodGl0bGVzID0gXFxcIueDremXqFxcXCIpIDogJ+eDremXqCcsXFxuXFx0XFx0XFx0XFx0dXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign5Li76aG157G75YirJywgJ3ZpZXcnKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0XFx0fSksXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfNCcsXFxuXFx0XFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICdjb2xsZWN0aW9ucycgPyBnZXRIZWFkKHRpdGxlcyA9IFxcXCLkuJPovpFcXFwiKSA6ICfkuJPovpEnLFxcblxcdFxcdFxcdFxcdHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+S4u+mhteexu+WIqycsICdjb2xsZWN0aW9ucycpO1xcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHRcXHR9KSxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF80JyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ+aAu+aWh+eroCcgPyBnZXRIZWFkKHRpdGxlcyA9IFxcXCLmlofnq6BcXFwiKSA6ICfmlofnq6AnLFxcblxcdFxcdFxcdFxcdHVybDokKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign5Li76aG157G75YirJywgJ+aAu+aWh+eroCcpO1xcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHRcXHR9KSxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHR9XFxuXFx0XFx0Ly8g5YiX6KGo6YOo5YiGXFxuXFx0XFx0aWYgKHRpcHNfc2VsZWN0ID09ICduZXcnIHx8IHRpcHNfc2VsZWN0ID09ICd2aWV3Jykge1xcblxcdFxcdFxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+WIm+S9nOS6uuS9nOWTgeWIl+ihqFxcXCIpKS5ydWxlKVxcblxcdFxcdH1cXG5cXHRcXHRpZiAodGlwc19zZWxlY3QgPT0gJ2NvbGxlY3Rpb25zJykge1xcblxcdFxcdFxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+WIm+S9nOS6uuS4k+i+keWIl+ihqFxcXCIpKS5ydWxlKVxcblxcdFxcdH1cXG5cXHRcXHRpZiAodGlwc19zZWxlY3QgPT0gJ+aAu+aWh+eroCcpIHtcXG5cXHRcXHRcXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS93ZWJf5paH56ug5YiX6KGoXFxcIikpLnJ1bGUpXFxuXFx0XFx0fVxcblxcdFxcdHNldFJlc3VsdChkKTtcXG5cXHR9IGNhdGNoIChlKSB7XFxuXFx0XFx0YmFjayhmYWxzZSlcXG5cXHR9XFxufSwgVVNFUl9IT01FKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aaW6aG15Zu65a6aSlNPTlwiLFwicGF0aFwiOlwi6aaW6aG15Zu65a6aSlNPTlwiLFwicnVsZVwiOlwidmFyIGluZGV4X3VybCA9ICdodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL3BhZ2UvZGlzY292ZXJ5JztcXG52YXIgaW5kZXhfSlNPTiA9IEpTT04ucGFyc2UocmVxdWVzdChpbmRleF91cmwsIHtoZWFkZXJzOiB7J1VzZXItQWdlbnQnOlxcXCJVc2VyLUFnZW50TmV3U3R1ZGlvcy8xLjkuMSAoY29tLnhpbnBpYW5jaGFuZy5uZXdzdHVkaW9zOyBidWlsZDo3ODY7IEFuZHJvaWQgMTFcXFwifSxtZXRob2Q6ICdHRVQnfSkpLmRhdGE7XFxubGV0IFhQQyA9IGluZGV4X0pTT04uY2F0ZWdvcmllcztcXG5sZXQgYmFubmVycyA9IGluZGV4X0pTT04uYmFubmVycztcXG52YXIgdCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGJhbm5lcnMubGVuZ3RoKTtcXG5iYW5uZXJzID0gaW5kZXhfSlNPTi5iYW5uZXJzW3RdO1xcbnZhciBQTEFZX0xJTktTID0gYmFubmVycy51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Yib5L2c5Lq65L2c5ZOB5YiX6KGoXCIsXCJwYXRoXCI6XCLliJvkvZzkurrkvZzlk4HliJfooahcIixcInJ1bGVcIjpcIi8vIOaXtumXtOaIs+i9rOaNolxcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+aXtumXtOaIs+i9rOaNolxcXCIpKS5ydWxlKTtcXG52YXIgbGlzdF91cmwgPSB1cmwgKyAnL2FydGljbGVzP2lzX2hpZGVfaW5fc3BhY2U9MCZvcmRlcj0nICsgdGlwc19zZWxlY3QgKycmcmV0dXJuX3N0cnVjdF90eXBlPXVzZXJfaG9tZSZ0eXBlPXB1YmxpYyZwYWdlPScgKyBQQUdFO1xcbnZhciBBUFBfSlNPTiA9IEpTT04ucGFyc2UocmVxdWVzdChsaXN0X3VybCkpLmRhdGE7XFxuLyp2YXIgdG90YWwgPSBBUFBfSlNPTi50b3RhbDtcXG5wdXRNeVZhcign5L2c5ZOB5pWw6YePJyx0b3RhbCk7Ki9cXG5BUFBfSlNPTj1BUFBfSlNPTi5saXN0O1xcbmlmIChBUFBfSlNPTi5sZW5ndGggIT0gXFxcIlxcXCIpIHtcXG5cXHRmb3IgKGxldCBpIGluIEFQUF9KU09OKSB7XFxuXFx0XFx0dmFyIGFwcF9jYWNoZSA9IEFQUF9KU09OW2ldLnJlc291cmNlO1xcblxcdFxcdHZhciBQTEFZX0xJTktTID0gYXBwX2NhY2hlLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XFxuXFx0XFx0dmFyIGxpa2UgPSBhcHBfY2FjaGUuY291bnQuY291bnRfbGlrZTtcXG5cXHRcXHR2YXIgdmlldyA9IGFwcF9jYWNoZS5jb3VudC5jb3VudF92aWV3O1xcblxcdFxcdGlmIChsaWtlID4gMTAwMCkgbGlrZSA9IChsaWtlIC8gMTAwMCkudG9GaXhlZCgxKSArICdrJztcXG5cXHRcXHRpZiAodmlldyA+IDEwMDAwKSB2aWV3ID0gKHZpZXcgLyAxMDAwMCkudG9GaXhlZCgxKSArICd3JztcXG5cXHRcXHR2YXIgaW1nID0gYXBwX2NhY2hlLmNvdmVyO1xcblxcdFxcdHZhciB0aXRsZSA9IGFwcF9jYWNoZS50aXRsZTtcXG5cXHRcXHR2YXIgcHVibGlzaF90aW1lID0gYXBwX2NhY2hlLnB1Ymxpc2hfdGltZTtcXG5cXHRcXHQvLyDml7bpl7TmiLPovazlubTmnIjml6VcXG5cXHRcXHRwdWJsaXNoX3RpbWUgPSB0aW1lc3RhbXBUb1RpbWUodG0gPSBwdWJsaXNoX3RpbWUsIHRzPTApXFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcdFxcdFxcdHRpdGxlOiB0aXRsZSxcXG5cXHRcXHRcXHRkZXNjOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArIHB1Ymxpc2hfdGltZSArICdcXFxcbicgKyBsaWtlICsgJyDllpzmrKInICsnIMK3ICcgKyB2aWV3ICsnIOingueciycgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0aW1nOiBpbWcsXFxuXFx0XFx0XFx0dXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/op4bpopHor6bmg4XpobVcXFwiKSkucnVsZSksXFxuXFx0XFx0fSk7XFxuXFx0fVxcbn0gZWxzZSB7XFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvRU5EXFxcIikpLnJ1bGUpXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Yib5L2c5Lq65LiT6L6R5YiX6KGoXCIsXCJwYXRoXCI6XCLliJvkvZzkurrkuJPovpHliJfooahcIixcInJ1bGVcIjpcInZhciBsaXN0X3VybCA9IHVybCArICcvY29sbGVjdGlvbnM/cGFnZT0nICsgUEFHRTtcXG52YXIgQVBQX0pTT04gPSBKU09OLnBhcnNlKHJlcXVlc3QobGlzdF91cmwpKS5kYXRhLmxpc3Q7XFxuaWYgKEFQUF9KU09OLmxlbmd0aCAhPSBcXFwiXFxcIikge1xcblxcdGZvciAobGV0IGkgaW4gQVBQX0pTT04pIHtcXG5cXHRcXHR2YXIgYXBwX2NhY2hlID0gQVBQX0pTT05baV07XFxuXFx0XFx0dmFyIEFsYnVtX3VybCA9IGFwcF9jYWNoZS51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpICsgJy9hcnRpY2xlcz9pc19kZXRhaWw9dHJ1ZSZwYWdlPSc7XFxuXFx0XFx0dmFyIGJnX2ltZyA9IGFwcF9jYWNoZS5jb3Zlcl91cmw7XFxuXFx0XFx0dmFyIGRlc2MgPSBhcHBfY2FjaGUuZGVzY3JpcHRpb247XFxuXFx0XFx0dmFyIGFydGljbGUgPSBhcHBfY2FjaGUuY291bnQuY291bnRfYXJ0aWNsZTtcXG5cXHRcXHR2YXIgbGlrZSA9IGFwcF9jYWNoZS5jb3VudC5jb3VudF9saWtlZDtcXG5cXHRcXHR2YXIgdmlldyA9IGFwcF9jYWNoZS5jb3VudC5jb3VudF92aWV3ZWQ7XFxuXFx0XFx0aWYgKGxpa2UgPiAxMDAwKSBsaWtlID0gKGxpa2UgLyAxMDAwKS50b0ZpeGVkKDEpICsgJ2snO1xcblxcdFxcdGlmICh2aWV3ID4gMTAwMDApIHZpZXcgPSAodmlldyAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ3cnO1xcblxcdFxcdHZhciBpbWcgPSBhcHBfY2FjaGUuY292ZXJfdXJsO1xcblxcdFxcdHZhciB0aXRsZSA9IGFwcF9jYWNoZS50aXRsZTtcXG5cXHRcXHR2YXIgcHV0X3RpdGxlID0gXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAn5L2c5ZOBICcgKyBhcnRpY2xlICsgJyDCtyAnICsgJ+a1j+iniCAnICsgdmlldyArICcgwrcgJyArICfotZ4gJyArbGlrZSArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIjtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiAncGljXzFfY2FyZCcsXFxuXFx0XFx0XFx0dGl0bGU6IHRpdGxlLFxcblxcdFxcdFxcdGltZzogYmdfaW1nICsgJ0BSZWZlcmVyPScgK2JnX2ltZyxcXG5cXHRcXHRcXHRkZXNjOiAn5L2c5ZOBICcgKyBhcnRpY2xlICsgJyAgwrcgICcgKyAn5rWP6KeIICcgKyB2aWV3ICsgJyAgwrcgICcgKyAn6LWeICcgKyBsaWtlLFxcblxcdFxcdFxcdHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcdFxcdFxcdHVybDogJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjaW1tZXJzaXZlVGhlbWUjbm9IaXN0b3J5IycpLnJ1bGUoKGJnX2ltZywgcHV0X3RpdGxlLCBkZXNjLEFsYnVtX3VybCkgPT4ge1xcblxcdFxcdFxcdFxcdFxcdHZhciBQQUdFID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuXFx0XFx0XFx0XFx0XFx0dmFyIGQgPSBbXTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgdXJsID0gQWxidW1fdXJsICsgUEFHRTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgQVBQX0pTT04gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSkuZGF0YS5saXN0O1xcblxcdFxcdFxcdFxcdFxcdGlmIChQQUdFID09IDEpIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAncGljXzFfZnVsbCcsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0aW1nOiBiZ19pbWcsXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMScsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGl0bGU6IHB1dF90aXRsZSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRleHRyYToge1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR0aXRsZTogXFxcIjxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArIGRlc2MgK1xcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXHRcXHRcXHRcXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0aWYgKEFQUF9KU09OLmxlbmd0aCAhPSBcXFwiXFxcIikge1xcblxcdFxcdFxcdFxcdFxcdFxcdGZvciAobGV0IGkgaW4gQVBQX0pTT04pIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgUExBWV9MSU5LUyA9IEFQUF9KU09OW2ldLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIHRpdGxlID0gQVBQX0pTT05baV0udGl0bGU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGltZyA9IEFQUF9KU09OW2ldLmNvdmVyO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBjYXQgPSBBUFBfSlNPTltpXS5jYXRlZ29yaWVzO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBjYXRfYWxsID0gW11cXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRmb3IgKHZhciBpIGluIGNhdCkge1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBjYXRfMSA9IGNhdFtpXS5jYXRlZ29yeV9uYW1lO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBjYXRfMiA9IGNhdFtpXS5zdWIuY2F0ZWdvcnlfbmFtZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjYXRfYWxsLnB1c2goXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2F0XzEgKyAnLScgKyBjYXRfMiArICcgXFx0J1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdClcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2F0X2FsbCA9IGNhdF9hbGwuam9pbihcXFwiXFxcIilcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgY2F0X3RpdGxlID0gJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj1ncmV5PicgKyBjYXRfYWxsICsgJzwvZm9udD48L3NtYWxsPic7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHRpdGxlOiB0aXRsZSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRkZXNjOiBjYXRfdGl0bGUsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0aW1nOiBpbWcsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/op4bpopHor6bmg4XpobVcXFwiKSkucnVsZSksXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvRU5EXFxcIikpLnJ1bGUpXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdFxcdHNldFJlc3VsdChkKTtcXG5cXHRcXHRcXHRcXHR9LCBiZ19pbWcsIHB1dF90aXRsZSwgZGVzYywgQWxidW1fdXJsKSxcXG5cXHRcXHR9KTtcXG5cXHR9XFxufSBlbHNlIHtcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9FTkRcXFwiKSkucnVsZSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJ0ZXh0XzFcIixcIm5hbWVcIjpcIuinhumikeivpuaDhemhtVwiLFwicGF0aFwiOlwi6KeG6aKR6K+m5oOF6aG1XCIsXCJydWxlXCI6XCIkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IycpLnJ1bGUoKFBMQVlfTElOS1MpID0+IHtcXG5cXHR2YXIgUEFHRSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcblxcdHZhciBkID0gW107XFxuXFx0Ly8g5aS06YOoXFxuXFx0Ly8gdmFyIHVybCA9IFVTRVJfSE9NRTtcXG5cXHQvLyBQTEFZX0xJTktTXFxuXFx0YWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG5cXHRcXHRjbGVhck15VmFyKCfkvZzogIUnKTtcXG5cXHRcXHRjbGVhck15VmFyKCfor6bnu4bnsbvliKsnKTtcXG5cXHRcXHRjbGVhck15VmFyKFxcXCLnm7jkvLzop4bpopFcXFwiKTtcXG5cXHR9KSlcXG5cXHQvLyDml7bpl7TmiLPovazmjaJcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/ml7bpl7TmiLPovazmjaJcXFwiKSkucnVsZSk7XFxuXFx0dmFyIHRpcHNfc2VsZWN0ID0gZ2V0TXlWYXIoXFxcIuivpue7huexu+WIq1xcXCIsICfnroDku4snKTtcXG5cXHRpZiAodGlwc19zZWxlY3QgPT0gJ+ivhOiuuicpIGNsZWFyTXlWYXIoXFxcIuebuOS8vOinhumikVxcXCIpO1xcblxcdHZhciB0aXBzX2FsaWtlID0gZ2V0TXlWYXIoXFxcIuebuOS8vOinhumikVxcXCIpO1xcblxcdHZhciB1cmwgPSBQTEFZX0xJTktTO1xcblxcblxcdHZhciBEQVRBX0pTT04gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSkuZGF0YTtcXG5cXHR2YXIgSUQgPSBEQVRBX0pTT04uaWQ7XFxuXFx0bGV0IGNvbW1lbnRfdXJsID0gXFxcImh0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vY29tbWVudHM/cmVzb3VyY2VfaWQ9XFxcIiArIElEICsgXFxcIiZ0eXBlPWFydGljbGUmcGFnZT1cXFwiICsgUEFHRTtcXG5cXHR2YXIgQ09NTUVOVF9KU09OID0gSlNPTi5wYXJzZShyZXF1ZXN0KGNvbW1lbnRfdXJsKSkuZGF0YTtcXG5cXHQvLyDor4TorrrmgLvmlbBcXG5cXHR2YXIgdG90YWwgPSBDT01NRU5UX0pTT04udG90YWw7XFxuXFx0dmFyIFBMQVlfTElOS1MgPSBEQVRBX0pTT04udXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcXG5cXHR2YXIgYmdfaW1nID0gREFUQV9KU09OLmNvdmVyO1xcblxcdHZhciB0aXRsZSA9IERBVEFfSlNPTi50aXRsZTtcXG5cXHRzZXRQYWdlVGl0bGUoREFUQV9KU09OLnRpdGxlKVxcblxcdC8vIOWIhuexu1tpXS5jYXRlZ29yeV9uYW1lLnN1Yi5jYXRlZ29yeV9uYW1lXFxuXFx0dmFyIGNhdCA9IERBVEFfSlNPTi5jYXRlZ29yaWVzO1xcblxcdC8vIOWPkeW4g+aXtumXtFxcblxcdHZhciBwdWJsaXNoX3RpbWUgPSBEQVRBX0pTT04ucHVibGlzaF90aW1lO1xcblxcdHB1Ymxpc2hfdGltZSA9IHRpbWVzdGFtcFRvVGltZSh0bSA9IHB1Ymxpc2hfdGltZSwgdHMgPSAwKVxcblxcdC8vIOaSreaUvumHj1xcblxcdHZhciB2aWV3ID0gREFUQV9KU09OLmNvdW50LmNvdW50X3ZpZXc7XFxuXFx0aWYgKHZpZXcgPiAxMDAwMCkgdmlldyA9ICh2aWV3IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAndyc7XFxuXFx0Ly8g566A5LuLXFxuXFx0dmFyIGNvbnRlbnQgPSBEQVRBX0pTT04uY29udGVudDtcXG5cXHQvLyDllpzmrKLngrnotZ5cXG5cXHR2YXIgbGlrZSA9IERBVEFfSlNPTi5jb3VudC5jb3VudF9saWtlO1xcblxcdGlmIChsaWtlID4gMTAwMCkgbGlrZSA9IChsaWtlIC8gMTAwMCkudG9GaXhlZCgxKSArICdrJztcXG5cXHQvLyDmlLbol49cXG5cXHR2YXIgY29sbGVjdCA9IERBVEFfSlNPTi5jb3VudC5jb3VudF9jb2xsZWN0O1xcblxcdGlmIChjb2xsZWN0ID4gMTAwMCkgY29sbGVjdCA9IChjb2xsZWN0IC8gMTAwMCkudG9GaXhlZCgxKSArICdrJztcXG5cXHQvLyDliIbkuqtcXG5cXHR2YXIgc2hhcmUgPSBEQVRBX0pTT04uY291bnQuY291bnRfc2hhcmU7XFxuXFx0aWYgKHNoYXJlID4gMTAwMCkgc2hhcmUgPSAoc2hhcmUgLyAxMDAwKS50b0ZpeGVkKDEpICsgJ2snO1xcblxcdC8vIOagh+etvltpXS5uYW1lXFxuXFx0dmFyIHRhZ3MgPSBEQVRBX0pTT04udGFncztcXG5cXHQvLyDliJvkvZzkuroudXJsKOS4u+mhtSkudXNlcm5hbWUo5ZCN5a2XKS5hdmF0YXIo5ZCN5a2XKVxcblxcdHZhciB1c2VyID0gREFUQV9KU09OLmF1dGhvci51c2VyaW5mbztcXG5cXHRwdXRNeVZhcign5L2c6ICFJywgdXNlci51c2VybmFtZSk7XFxuXFxuXFx0aWYgKFBBR0UgPT0gMSkge1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6ICdwaWNfMV9mdWxsJyxcXG5cXHRcXHRcXHR0aXRsZTogJzAnLFxcblxcdFxcdFxcdGltZzogYmdfaW1nLFxcblxcdFxcdFxcdHVybDogJCgpLmxhenlSdWxlKChEQVRBX0pTT04pID0+IHtcXG5cXHRcXHRcXHRcXHR2YXIgcGxheV91cmxzID0gREFUQV9KU09OLnZpZGVvLmNvbnRlbnQucHJvZ3Jlc3NpdmU7XFxuXFx0XFx0XFx0XFx0Ly8g5byA5aeL6I635Y+W5by55bmVXFxuXFx0XFx0XFx0XFx0dmFyIGRhbm1ha3UgPSBEQVRBX0pTT04udmlkO1xcblxcdFxcdFxcdFxcdHZhciBkYW5tdSA9ICdodHRwczovL29zcy1kYW5tYWt1MTIueHBjY2RuLmNvbS8nICsgZGFubWFrdSArICcudHh0JztcXG5cXHRcXHRcXHRcXHR2YXIgY29kZSA9IHJlcXVlc3QoZGFubXUpXFxuXFx0XFx0XFx0XFx0dmFyIGFyciA9IGNvZGUuc3BsaXQoXFxcIlxcXFxuXFxcIilcXG5cXHRcXHRcXHRcXHR2YXIgciA9IFtdXFxuXFx0XFx0XFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcXG5cXHRcXHRcXHRcXHRcXHR0cnkge1xcblxcdFxcdFxcdFxcdFxcdFxcdHZhciBsaW5lID0gSlNPTi5wYXJzZShhcnJbaV0pXFxuXFx0XFx0XFx0XFx0XFx0XFx0aWYgKGxpbmUuY29udGVudCkge1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHIucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0dGV4dDogbGluZS5jb250ZW50LFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHRpbWU6IGxpbmUub2Zmc2V0XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0fSBjYXRjaCAoZSkge31cXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2Rhbm11Lmpzb25cXFwiLCBKU09OLnN0cmluZ2lmeShyKSlcXG5cXHRcXHRcXHRcXHQvLyDojrflj5blvLnluZVcXG5cXHRcXHRcXHRcXHRsZXQgdXJscyA9IFtdO1xcblxcdFxcdFxcdFxcdGxldCBuYW1lcyA9IFtdO1xcblxcdFxcdFxcdFxcdGZvciAobGV0IGogaW4gcGxheV91cmxzKSB7XFxuXFx0XFx0XFx0XFx0XFx0dXJscy5wdXNoKHBsYXlfdXJsc1tqXS51cmwpXFxuXFx0XFx0XFx0XFx0XFx0bmFtZXMucHVzaChwbGF5X3VybHNbal0ucHJvZmlsZSlcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0dmFyIGFsbF91cmwgPSBKU09OLnN0cmluZ2lmeSh7XFxuXFx0XFx0XFx0XFx0XFx0dXJsczogdXJscyxcXG5cXHRcXHRcXHRcXHRcXHRuYW1lczogbmFtZXMsXFxuXFx0XFx0XFx0XFx0XFx0ZGFubXU6IFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2Rhbm11Lmpzb25cXFwiXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRcXHQvL1xcdGxvZyhhbGxfdXJsKVxcblxcdFxcdFxcdFxcdHJldHVybiBhbGxfdXJsXFxuXFx0XFx0XFx0fSwgREFUQV9KU09OKSxcXG5cXHRcXHR9KTtcXG5cXHRcXHR2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxuXFxuXFx0XFx0ZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZXMpIHtcXG5cXHRcXHRcXHRyZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZXMgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcblxcdFxcdH1cXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8yJyxcXG5cXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ+eugOS7iycgPyBnZXRIZWFkKHRpdGxlcyA9IFxcXCLnroDku4tcXFwiKSA6ICfnroDku4snLFxcblxcdFxcdFxcdHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+ivpue7huexu+WIqycsICfnroDku4snKTtcXG5cXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0fSksXFxuXFx0XFx0fSk7XFxuXFx0XFx0dmFyIOivhOiuuiA9ICfor4TorrogJyArICfigJjigJgnICsgdG90YWwgKyAn4oCZ4oCZJztcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8yJyxcXG5cXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ+ivhOiuuicgPyBnZXRIZWFkKHRpdGxlcyA9IOivhOiuuikgOiDor4TorrosXFxuXFx0XFx0XFx0dXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRwdXRNeVZhcign6K+m57uG57G75YirJywgJ+ivhOiuuicpO1xcblxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHR9KSxcXG5cXHRcXHR9KTtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiAnbGluZScsXFxuXFx0XFx0fSk7XFxuXFx0XFx0Ly8g5LuF566A5LuL6aG1XFxuXFx0XFx0aWYgKHRpcHNfc2VsZWN0ID09ICfnroDku4snKSB7XFxuXFx0XFx0XFx0dmFyIFVTRVJfSE9NRSA9IHVzZXIudXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcXG5cXHRcXHRcXHR2YXIgZG93bmxvYWRfdXJsID0gREFUQV9KU09OLnZpZGVvLmNvbnRlbnQucHJvZ3Jlc3NpdmVbMF0udXJsO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzEnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzAwMD4nICsgdGl0bGUgKyAnPC9mb250PjwvYj4nLFxcblxcdFxcdFxcdFxcdHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcdFxcdFxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0XFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdHZhciBjYXRfYWxsID0gW11cXG5cXHRcXHRcXHRmb3IgKHZhciBpIGluIGNhdCkge1xcblxcdFxcdFxcdFxcdHZhciBjYXRfMSA9IGNhdFtpXS5jYXRlZ29yeV9uYW1lO1xcblxcdFxcdFxcdFxcdHZhciBjYXRfMiA9IGNhdFtpXS5zdWIuY2F0ZWdvcnlfbmFtZTtcXG5cXHRcXHRcXHRcXHRjYXRfYWxsLnB1c2goXFxuXFx0XFx0XFx0XFx0XFx0Y2F0XzEgKyAnLScgKyBjYXRfMiArICcgXFx0J1xcblxcdFxcdFxcdFxcdClcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0Y2F0X2FsbCA9IGNhdF9hbGwuam9pbihcXFwiXFxcIilcXG5cXHRcXHRcXHR2YXIgY2F0X3RpdGxlID0gJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj1ncmV5PicgKyBjYXRfYWxsICsgJyBcXHQnICsgcHVibGlzaF90aW1lICsgJyBcXHRcXHQnICsgdmlldyArXFxuXFx0XFx0XFx0XFx0J+asoeaSreaUvicgKyAnPC9mb250Pjwvc21hbGw+JztcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiBjYXRfdGl0bGUsXFxuXFx0XFx0XFx0XFx0dXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzEnLFxcblxcdFxcdFxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0XFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdyaWNoX3RleHQnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiBcXFwiPHNtYWxsPjxmb250IGNvbG9yPTAwMD5cXFwiICsgY29udGVudCArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHRcXHR1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiBsaWtlLFxcblxcdFxcdFxcdFxcdHBpY191cmw6ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaWNvbi9iYnPngrnotZ4uc3ZnJyxcXG5cXHRcXHRcXHRcXHR1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxuXFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiBjb2xsZWN0LFxcblxcdFxcdFxcdFxcdHBpY191cmw6ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaWNvbi9iYnPmlLbol48uc3ZnJyxcXG5cXHRcXHRcXHRcXHR1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxuXFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiBzaGFyZSxcXG5cXHRcXHRcXHRcXHRwaWNfdXJsOiAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ljb24vYmJz5YiG5LqrLnN2ZycsXFxuXFx0XFx0XFx0XFx0dXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcblxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogJ+S4i+i9vScsXFxuXFx0XFx0XFx0XFx0cGljX3VybDogJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L3dlaXN5ci9pY29uL2Jic+S4i+i9vS5zdmcnLFxcblxcdFxcdFxcdFxcdHVybDogJ2Rvd25sb2FkOi8vJyArIGRvd25sb2FkX3VybCxcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxuXFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnbGluZScsXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdibGFua19ibG9jaycsXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0Zm9yIChsZXQgaSBpbiB0YWdzKSB7XFxuXFx0XFx0XFx0XFx0dmFyIHRhZyA9IHRhZ3NbaV0ubmFtZTtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdHRpdGxlOiAn4oCc4oCc4oCd4oCdPHNtYWxsPjxmb250IGNvbG9yPWdyZXk+JyArIHRhZyArICc8L2ZvbnQ+PC9zbWFsbD4nLFxcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFx0XFx0XFx0XFx0XFx0dXJsOiAkKCkubGF6eVJ1bGUoKHRhZykgPT4ge1xcblxcdFxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfmkJzlhbPplK7lrZcnLCB0YWcpO1xcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/ov5vlhaXmkJzntKLpobVcXFwiKSkucnVsZSk7XFxuXFx0XFx0XFx0XFx0XFx0fSwgdGFnKSxcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnbGluZScsXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzEnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzAwMD4nICsgJ+WIm+S9nOS6uicgKyAnPC9mb250PjwvYj4nLFxcblxcdFxcdFxcdFxcdHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcdFxcdFxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0XFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6IHVzZXIudXNlcm5hbWUsXFxuXFx0XFx0XFx0XFx0aW1nOiB1c2VyLmF2YXRhciArICdAUmVmZXJlcj0nICsgdXNlci5hdmF0YXIsXFxuXFx0XFx0XFx0XFx0dXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/liJvkvZzkurrpppbpobVcXFwiKSkucnVsZSksXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdpY29uXzJfcm91bmQnLFxcblxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdsaW5lJyxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMScsXFxuXFx0XFx0XFx0XFx0dGl0bGU6ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMDAwPicgKyAn55u45Ly86KeG6aKRJyArICc8L2ZvbnQ+PC9iPicsXFxuXFx0XFx0XFx0XFx0dXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfnm7jkvLzop4bpopEnLCAn55u45Ly86KeG6aKRJyk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFx0XFx0XFx0XFx0fSksXFxuXFx0XFx0XFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRcXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0Ly8g55u45Ly86KeG6aKRXFxuXFx0XFx0XFx0aWYgKHRpcHNfYWxpa2UgPT0gJ+ebuOS8vOinhumikScpIHtcXG5cXHRcXHRcXHRcXHR2YXIgbmV4dF91cmwgPSB1cmwgKyAnL25leHQnO1xcblxcdFxcdFxcdFxcdHZhciBORVhUX0pTT04gPSBKU09OLnBhcnNlKHJlcXVlc3QobmV4dF91cmwpKS5kYXRhLmxpc3Q7XFxuXFx0XFx0XFx0XFx0Zm9yIChsZXQgaSBpbiBORVhUX0pTT04pIHtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgUExBWV9MSU5LUyA9IE5FWFRfSlNPTltpXS51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1xcblxcdFxcdFxcdFxcdFxcdHZhciBuZXh0X3RpdGxlID0gTkVYVF9KU09OW2ldLnRpdGxlO1xcblxcdFxcdFxcdFxcdFxcdHZhciBuZXh0X2NvdmVyID0gTkVYVF9KU09OW2ldLmNvdmVyO1xcblxcdFxcdFxcdFxcdFxcdHZhciBuZXh0X3RpdGxlID0gTkVYVF9KU09OW2ldLnRpdGxlO1xcblxcdFxcdFxcdFxcdFxcdHZhciBuZXh0X3ZpZXcgPSBORVhUX0pTT05baV0uY291bnQuY291bnRfdmlldztcXG5cXHRcXHRcXHRcXHRcXHRpZiAobmV4dF92aWV3ID4gMTAwMDApIG5leHRfdmlldyA9IChuZXh0X3ZpZXcgLyAxMDAwMCkudG9GaXhlZCgxKSArICd3JztcXG5cXHRcXHRcXHRcXHRcXHR2YXIgbmV4dF9saWtlID0gTkVYVF9KU09OW2ldLmNvdW50LmNvdW50X2xpa2U7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKG5leHRfbGlrZSA+IDEwMDApIG5leHRfbGlrZSA9IChuZXh0X2xpa2UgLyAxMDAwKS50b0ZpeGVkKDEpICsgJ2snO1xcblxcdFxcdFxcdFxcdFxcdHZhciBuZXh0X3VzZXIgPSBORVhUX0pTT05baV0uYXV0aG9yLnVzZXJpbmZvLnVzZXJuYW1lO1xcblxcdFxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXHRcXHRcXHRcXHRcXHRcXHR0aXRsZTogbmV4dF90aXRsZSxcXG5cXHRcXHRcXHRcXHRcXHRcXHRkZXNjOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICfmkq3mlL7ph48gJyArIG5leHRfdmlldyArICcgwrcg5Zac5qyiICcgK1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdG5leHRfbGlrZSArICdcXFxcbicgKyBuZXh0X3VzZXIgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0XFx0XFx0XFx0aW1nOiBuZXh0X2NvdmVyLFxcblxcdFxcdFxcdFxcdFxcdFxcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv6KeG6aKR6K+m5oOF6aG1XFxcIikpLnJ1bGUpLFxcblxcdFxcdFxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9XFxuXFxuXFx0XFx0fVxcblxcdFxcdC8vIOe7k+adn+eugOS7i+mhtVxcblxcdH1cXG5cXHQvLyDnu5PmnZ/ku4XnrKzkuIDpobVcXG5cXHRpZiAodGlwc19zZWxlY3QgPT0gJ+ivhOiuuicpIHtcXG5cXHRcXHR2YXIgY2FjaGVfanNvbiA9IENPTU1FTlRfSlNPTi5saXN0O1xcblxcdFxcdC8v5peg6K+E6K66XFxuXFx0XFx0aWYgKHRvdGFsID09IDAgJiYgUEFHRSA9PSAxKSB7XFxuXFx0XFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAzMDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ+KAlOKAlCAgIOaaguaXoOivhOiuuiAgIOKAlOKAlCcgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG5cXHRcXHRcXHRcXHRleHRyYToge1xcblxcdFxcdFxcdFxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9KVxcblxcdFxcdH1cXG5cXHRcXHRpZiAoY2FjaGVfanNvbi5sZW5ndGggIT0gXFxcIlxcXCIpIHtcXG5cXHRcXHRcXHRmb3IgKGxldCBpIGluIGNhY2hlX2pzb24pIHtcXG5cXHRcXHRcXHRcXHR2YXIgVVNFUl9IT01FID0gJ2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vdXNlci8nICsgY2FjaGVfanNvbltpXS51c2VyaWQ7XFxuXFx0XFx0XFx0XFx0dmFyIHVzZXJfYXZhdGFyID0gY2FjaGVfanNvbltpXS51c2VySW5mby5hdmF0YXI7XFxuXFx0XFx0XFx0XFx0dmFyIHVzZXJfdXNlcm5hbWUgPSBjYWNoZV9qc29uW2ldLnVzZXJJbmZvLnVzZXJuYW1lO1xcblxcdFxcdFxcdFxcdGlmIChnZXRNeVZhcign5L2c6ICFJykgPT0gdXNlcl91c2VybmFtZSkgdXNlcl91c2VybmFtZSA9ICc8Zm9udCBjb2xvcj0jZWQ5YTQxPicgKyB1c2VyX3VzZXJuYW1lICtcXG5cXHRcXHRcXHRcXHRcXHQnPC9mb250Pic7XFxuXFx0XFx0XFx0XFx0Ly8g6K+E6K665YaF5a65XFxuXFx0XFx0XFx0XFx0dmFyIGNvbnRlbnQgPSBjYWNoZV9qc29uW2ldLmNvbnRlbnQ7XFxuXFx0XFx0XFx0XFx0Ly8g6K+E6K665pe26Ze0XFxuXFx0XFx0XFx0XFx0dmFyIGFkZHRpbWUgPSBjYWNoZV9qc29uW2ldLmFkZHRpbWU7XFxuXFx0XFx0XFx0XFx0YWRkdGltZSA9IHRpbWVzdGFtcFRvVGltZSh0bSA9IGFkZHRpbWUsIHRzID0gMSlcXG5cXHRcXHRcXHRcXHQvLyDlm57lpI1cXG5cXHRcXHRcXHRcXHRpZiAoY2FjaGVfanNvbltpXS5yZWZlcmVyKSB7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJlX25hbWUgPSBjYWNoZV9qc29uW2ldLnJlZmVyZXIudXNlckluZm8udXNlcm5hbWU7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJlX2NvbnRlbnQgPSBjYWNoZV9qc29uW2ldLnJlZmVyZXIuY29udGVudDtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgcmVmZXJlciA9IFxcXCI8YmxvY2txdW90ZT48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICc8Y29kZT4nICsgcmVfbmFtZSArICc8L2NvZGU+JyArICc8YnI+JyArXFxuXFx0XFx0XFx0XFx0XFx0XFx0cmVfY29udGVudCArIFxcXCI8L2ZvbnQ+PC9ibG9ja3F1b3RlPlxcXCI7XFxuXFx0XFx0XFx0XFx0fSBlbHNlIHtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgcmVmZXJlciA9IFxcXCJcXFwiXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcblxcdFxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdHRpdGxlOiB1c2VyX3VzZXJuYW1lICsgXFxcIjxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICdcXFxcdFxcXFx0JyArIGFkZHRpbWUgK1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcXCI8L2ZvbnQ+PC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdFxcdFxcdGltZzogdXNlcl9hdmF0YXIgKyAnQFJlZmVyZXI9JyArIHVzZXJfYXZhdGFyLFxcblxcdFxcdFxcdFxcdFxcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5Yib5L2c5Lq66aaW6aG1XFxcIikpLnJ1bGUpLFxcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAnYXZhdGFyJyxcXG5cXHRcXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdHRpdGxlOiByZWZlcmVyICsgXFxcIjxmb250IGNvbG9yPScwMDAnPlxcXCIgKyAnXFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdCcgKyBjb250ZW50ICsgXFxcIjwvZm9udD5cXFwiLFxcblxcdFxcdFxcdFxcdFxcdHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdsaW5lJyxcXG5cXHRcXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fSBlbHNlIGlmICh0b3RhbCAhPSAwKXtcXG5cXHRcXHRcXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9FTkRcXFwiKSkucnVsZSlcXG5cXHRcXHR9XFxuXFx0fVxcblxcdHNldFJlc3VsdChkKTtcXG59LCBQTEFZX0xJTktTKVxcblwifSx7XCJuYW1lXCI6XCJFTkRcIixcInBhdGhcIjpcIkVORFwiLFwicnVsZVwiOlwiZC5wdXNoKHtcXG5cXHR0aXRsZTogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAn4oCU4oCUICAgRU5EICAg4oCU4oCUJyArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcblxcdGV4dHJhOiB7XFxuXFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0fVxcbn0pXCJ9LHtcIm5hbWVcIjpcIndlYl/mlofnq6DliJfooahcIixcInBhdGhcIjpcIndlYl/mlofnq6DliJfooahcIixcInJ1bGVcIjpcIk1ZX1VSTCA9ICdodHRwczovL3d3dy54aW5waWFuY2hhbmcuY29tJztcXG5pZiAodGlwc19zZWxlY3QgPT0gJ+aWh+eroCcpIHtcXG5cXHR2YXIgV0VCX1VSTCA9IFxcXCJodHRwczovL3d3dy54aW5waWFuY2hhbmcuY29tL2luZGV4LnBocD9hcHA9c2VhcmNoJnRzPWV4cCZrdz1cXFwiICsgdGlwc190aXRsZSArJyZwYWdlPScgKyBQQUdFO1xcblxcdHZhciBleHA9Jy5uYW1lJztcXG59XFxuaWYgKHRpcHNfc2VsZWN0ID09ICfmgLvmlofnq6AnKSB7XFxuXFx0dmFyIGV4cD0nLmV4cC1kZXNjJztcXG5cXHR2YXIgV0VCX1VSTCA9IFxcXCJodHRwczovL3d3dy54aW5waWFuY2hhbmcuY29tL3VzZXIvZXhwL2lkLVxcXCIrSUQrXFxcIi9jYXRlaWQtMC9wYWdlLVxcXCIrIFBBR0U7XFxufVxcbnZhciB3ZWJfbGlzdHMgPSByZXF1ZXN0KFdFQl9VUkwse2hlYWRlcnM6IHsgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMCknfX0pO1xcbndlYl9saXN0cyA9IHBkZmEod2ViX2xpc3RzLCBcXFwiLmV4cC1jb24mJmxpXFxcIilcXG5pZiAod2ViX2xpc3RzLmxlbmd0aCAhPSBcXFwiXFxcIikge1xcblxcdGZvciAodmFyIGkgaW4gd2ViX2xpc3RzKSB7XFxuXFx0XFx0c2V0UGFnZVRpdGxlKHBkZmgod2ViX2xpc3RzW2ldLCAnLmV4cC10aXRsZSYmVGV4dCcpKVxcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXHRcXHRcXHR0aXRsZTogcGRmaCh3ZWJfbGlzdHNbaV0sICcuZXhwLXRpdGxlJiZUZXh0JyksXFxuXFx0XFx0XFx0ZGVzYzogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyBwZGZoKHdlYl9saXN0c1tpXSwgZXhwKycmJlRleHQnKSArIFxcXCI8L2ZvbnQ+IDwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHRwaWNfdXJsOiBwZCh3ZWJfbGlzdHNbaV0sICdpbWcmJl9zcmMnKSArICdAUmVmZXJlcj0nICsgcGQod2ViX2xpc3RzW2ldLCAnaW1nJiZfc3JjJyksXFxuXFx0XFx0XFx0dXJsOiBwZCh3ZWJfbGlzdHNbaV0sICdsaSYmYSYmaHJlZicpICtcXG5cXHRcXHRcXHRcXHRgQHJ1bGU9anM6IGxldCBkID0gW107ZC5wdXNoKHt0aXRsZTpwZGZoKGdldFJlc0NvZGUoKSwnLmNvbnRlbnQmJkh0bWwnKSxjb2xfdHlwZTpcXFwicmljaF90ZXh0XFxcIn0pO3NldFJlc3VsdChkKTtgLFxcblxcdFxcdH0pO1xcblxcdH1cXG59IGVsc2Uge1xcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL0VORFxcXCIpKS5ydWxlKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaXtumXtOaIs+i9rOaNolwiLFwicGF0aFwiOlwi5pe26Ze05oiz6L2s5o2iXCIsXCJydWxlXCI6XCJmdW5jdGlvbiB0aW1lc3RhbXBUb1RpbWUodG0sIHRzKSB7XFxuXFx0XFx0dW5kZWZpbmVkXFxuXFx0XFx0dmFyIGRhdGUgPSBuZXcgRGF0ZSh0bSAqIDEwMDApOyAvL+aXtumXtOaIs+S4ujEw5L2N6ZyAKjEwMDDvvIzml7bpl7TmiLPkuLoxM+S9jeeahOivneS4jemcgOS5mDEwMDBcXG5cXHRcXHR2YXIgWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG5cXHRcXHR2YXIgTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG5cXHRcXHR2YXIgRCA9IGRhdGUuZ2V0RGF0ZSgpO1xcblxcdFxcdHZhciBoID0gJyB8ICcgKyBkYXRlLmdldEhvdXJzKCkgKyAnOic7XFxuXFx0XFx0dmFyIG0gPSBkYXRlLmdldE1pbnV0ZXMoKTtcXG5cXHRcXHRpZihtPDEwKSBtID0gJzAnK207XFxuXFx0XFx0bSA9IG0gKyAnOidcXG5cXHRcXHR2YXIgcyA9IGRhdGUuZ2V0U2Vjb25kcygpO1xcblxcdFxcdGlmKHM8MTApIHMgPSAnMCcrcztcXG5cXHRcXHRpZiAodHMgPT0gMCkgcmV0dXJuIFkgKyBNICsgRDtcXG5cXHRcXHRpZiAodHMgPT0gMSkgcmV0dXJuIFkgKyBNICsgRCArIGggKyBtICsgcztcXG5cXHR9XCJ9XSIsImljb24iOiJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8xMC5wbmciLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment