Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩哔哩@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5ZOU5ZOp5ZOU5ZOpIiwiYXV0aG9yIjoi5L6g5ZCNIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6MSwiY29sX3R5cGUiOiJtb3ZpZV8xX3ZlcnRpY2FsX3BpYyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcblxudmFyIGQgPSBbXTtcblxudmFyIHBhZ2UgPSBNWV9QQUdFO1xuXG5jb25zdCB7XG5cbsKgIMKgIGlzTG9nZ2VkSW5cblxufSA9ICQucmVxdWlyZShcImhpa2VyOi8vcGFnZS9hcGlcIik7XG5cbmlzTG9naW4gPSBKU09OLnBhcnNlKGlzTG9nZ2VkSW4oKSk7XG5cbi8vIOmqjOivgeeZu+W9lVxuXG5pZiAoaXNMb2dpbi50eXBlID09PSB0cnVlKSB7XG5cbsKgIMKgIGJpbGlEYXRlID0gSlNPTi5wYXJzZShyZXF1ZXN0KFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFwiKSk7XG5cbsKgIMKgIGNvb2tpZSA9IGJpbGlEYXRlLmNvb2tpZTtcblxuwqAgwqAgdXNlck5hbWUgPSBiaWxpRGF0ZS51c2VyTmFtZTtcblxuwqAgwqAgbWlkID0gYmlsaURhdGUudXNlck1pZDtcblxuwqAgwqAgdXNlckZhY2UgPSBiaWxpRGF0ZS5mYWNlICsgXCJAUmVmZXJlcj1cIjtcblxuwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xuXG7CoCDCoCDCoCDCoCB2YXIgVGFiID0gWyfng63mmKAnLCAn54mH5bqTJywgJ+aOqOmAgScsJ+eDremXqCcsICforqLpmIUnLCAn5YWz5rOoJywgJ+aUtuiXjycsICfotrPov7knLCfliqjmgIEnXTtcblxuwqAgwqAgwqAgwqAgVGFiID0gVGFiLm1hcCgoaXQpID0+IHtcblxuwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIGl0ID09PSBnZXRJdGVtKCfpppbpobUnLCAn5o6o6YCBJykgPyAn8J+RiScgKyBpdCA6IGl0O1xuXG7CoCDCoCDCoCDCoCB9KTtcblxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcblxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICc8Zm9udCBjb2xvcj1cImJsdWVcIj4nICsgdXNlck5hbWUgKyAnPC9mb250PuKtkDxmb250IGNvbG9yPVwiIzE5Qjg5RFwiPicgKyBnZXRJdGVtKCfpppbpobUnLCAn5o6o6YCBJykgKyAnPC9mb250PuKtkCcsXG5cbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoVGFiKSA9PiB7XG5cbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkKFRhYiwgMikuc2VsZWN0KCgpID0+IHtcblxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC/wn5GJL2csICcnKTtcblxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn6aaW6aG1JywgaW5wdXQpO1xuXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcblxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFwidG9hc3Q6Ly/liIfmjaLpppbpobXkuLo6XCIgKyBpbnB1dDtcblxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcblxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgVGFiKSxcblxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiB1c2VyRmFjZSA9PT0gdW5kZWZpbmVkID8gJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3ZpZS8yMC5zdmcnIDogdXNlckZhY2UsXG5cbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcImF2YXRhclwiLFxuXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xuXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDogJ+mmlumhteaYvuekuidcblxuwqAgwqAgwqAgwqAgwqAgwqAgfVxuXG7CoCDCoCDCoCDCoCB9KTtcblxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcblxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcblxuwqAgwqAgwqAgwqAgfSlcblxuwqAgwqAgfVxuXG7CoCDCoCAvLyDljLnphY3pppbpobXpgInpoblcblxuwqAgwqAgc3dpdGNoIChnZXRJdGVtKCfpppbpobUnLCAn5o6o6YCBJykpIHtcblxuwqAgwqAgwqAgwqAgY2FzZSAn54Ot5pigJzpcblxuwqAgwqAgwqAgwqAgwqAgwqAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9VcGRhdGVUYWJsZXMnKSkucnVsZSk7XG5cbsKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrO1xuXG7CoCDCoCDCoCDCoCBjYXNlICfniYflupMnOlxuXG7CoCDCoCDCoCDCoCDCoCDCoCBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL3ZhdWx0JykpLnJ1bGUpO1xuXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcblxuwqAgwqAgwqAgwqAgY2FzZSAn5o6o6YCBJzpcblxuwqAgwqAgwqAgwqAgwqAgwqAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9mZWVkJykpLnJ1bGUpO1xuXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcblxuwqAgwqAgwqAgwqAgY2FzZSAn54Ot6ZeoJzpcblxuwqAgwqAgwqAgwqAgwqAgwqAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9ob3RWaWRlbycpKS5ydWxlKTtcblxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XG5cbsKgIMKgIMKgIMKgIGNhc2UgJ+iuoumYhSc6XG5cbsKgIMKgIMKgIMKgIMKgIMKgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2Uvc3Vic2NyaXB0aW9uJykpLnJ1bGUpO1xuXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcblxuwqAgwqAgwqAgwqAgY2FzZSAn5YWz5rOoJzpcblxuwqAgwqAgwqAgwqAgwqAgwqAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9hdHRlbnRpb24nKSkucnVsZSk7XG5cbsKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrO1xuXG7CoCDCoCDCoCDCoCBjYXNlICfmlLbol48nOlxuXG7CoCDCoCDCoCDCoCDCoCDCoCBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvbGVjdGlvbicpKS5ydWxlKTtcblxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XG5cbsKgIMKgIMKgIMKgIGNhc2UgJ+i2s+i/uSc6XG5cbsKgIMKgIMKgIMKgIMKgIMKgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvdHJhY2snKSkucnVsZSk7XG5cbsKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrO1xuXG7CoCDCoCDCoCDCoCBjYXNlICfliqjmgIEnOlxuXG7CoCDCoCDCoCDCoCDCoCDCoCBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2xhdGV0TmV3cycpKS5ydWxlKTtcblxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XG5cbsKgIMKgIMKgIMKgIGRlZmF1bHQ6XG5cbsKgIMKgIMKgIMKgIMKgIMKgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvVXBkYXRlVGFibGVzJykpLnJ1bGUpO1xuXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcblxuwqAgwqAgfVxuXG59IGVsc2Uge1xuXG7CoCDCoCBsZXQgYSA9IFtdXG5cbsKgIMKgIGxldCB0aW1lID0gMTBcblxuwqAgwqAgYS5wdXNoKHtcblxuwqAgwqAgwqAgwqAgdGl0bGU6IGAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5L2/55So5YmN6aG755+lXG5cbuacrOinhOWImeiwg+eUqGh0dHBzOi8vZ2l0aHViLmNvbS9Tb2NpYWxTaXN0ZXJZaS9iaWxpYmlsaS1BUEktY29sbGVjdOeahGFwae+8jOaJgOacieS7o+eggeWFqOmDqOW8gOa6kO+8jOW5tuS4lOS4jeWtmOWcqOS4iuS8oOeUqOaIt+S/oeaBr+eahOihjOS4ulxuXG7mnKzop4TliJnkuLrlrabkuaDnm67nmoTvvIzor7fkuo7lr7zlhaUyNOWwj+aXtuWGheWIoOmZpO+8ge+8ge+8gSDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoFxuXG7lvIDlp4vkvb/nlKjmnKzop4TliJnljbPku6PooajpgbXlrojop4TliJkgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXG5cbsKgIMKgIMKgIMKgIMKgIMKgIGAsXG5cbsKgIMKgIMKgIMKgIFwiY29sX3R5cGVcIjogXCJsb25nX3RleHRcIixcblxuwqAgwqAgwqAgwqAgZXh0cmE6IHtcblxuwqAgwqAgwqAgwqAgwqAgwqAgaWQ6IFwidGV4dFwiXG5cbsKgIMKgIMKgIMKgIH1cblxuwqAgwqAgfSwge1xuXG7CoCDCoCDCoCDCoCB0aXRsZTogdGltZSArIFwi56eS5ZCO57un57utXCIsXG5cbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcInRleHRfMVwiLFxuXG7CoCDCoCDCoCDCoCBleHRyYToge1xuXG7CoCDCoCDCoCDCoCDCoCDCoCBpZDogXCJ0aW1lclwiXG5cbsKgIMKgIMKgIMKgIH1cblxuwqAgwqAgfSlcblxuwqAgwqAgc2V0UmVzdWx0KGEpXG5cbsKgIMKgIHdoaWxlICh0aW1lICE9IDApIHtcblxuwqAgwqAgwqAgwqAgamF2YS5sYW5nLlRocmVhZC5zbGVlcCgxMDAwKVxuXG7CoCDCoCDCoCDCoCB0aW1lIC09IDFcblxuwqAgwqAgwqAgwqAgdXBkYXRlSXRlbShcInRpbWVyXCIsIHtcblxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHRpbWUgKyBcIuenkuWQjue7p+e7rVwiXG5cbsKgIMKgIMKgIMKgIH0pXG5cbsKgIMKgIH1cblxuwqAgwqAgYWRkSXRlbUFmdGVyKFwidGltZXJcIiwge1xuXG7CoCDCoCDCoCDCoCB0aXRsZTogXCLnmbvpmYZcIixcblxuwqAgwqAgwqAgwqAgdXJsOiBcImhpa2VyOi8vcGFnZS9sb2dpblwiLFxuXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXCJ0ZXh0X2NlbnRlcl8xXCJcblxuwqAgwqAgfSlcblxuwqAgwqAgZGVsZXRlSXRlbShcInRleHRcIilcblxuwqAgwqAgZGVsZXRlSXRlbShcInRpbWVyXCIpXG5cbn1cblxuc2V0UmVzdWx0KGQpO1xuXG4iLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjKiojI2Z5cGFnZSIsImdyb3VwIjoi4pGg5bi455SoIiwic2VhcmNoRmluZCI6ImpzOlxuXG5NWV9VUkwgPSBNWV9VUkwuc3BsaXQoJyMjJyk7XG5cbmxldCBzZWF3b3JkID0gTVlfVVJMWzFdO1xuXG52YXIgZCA9IFtdO1xuXG5jb29raWU9SlNPTi5wYXJzZShmZXRjaENvb2tpZSgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLycsIHtcblxuwqAgwqAgaGVhZGVyczoge1xuXG7CoCDCoCDCoCDCoCBcIlVzZXItQWdlbnRcIjogUENfVUEsXG5cbsKgIMKgIMKgIMKgIFwiUmVmZXJlclwiOiBcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cIixcblxuwqAgwqAgfSxcblxuwqAgwqAgbWV0aG9kOiBcIkdFVFwiXG5cbn0pKVsxXTtcblxuZC5wdXNoKHtcblxuwqAgwqAgdGl0bGU6IFwidXDmkJw9PlwiK3NlYXdvcmQsXG5cbsKgIMKgIHVybDogJ2hpa2VyOi8vcGFnZS91cFNlYXJjaD9meXBhZ2UnLFxuXG7CoCDCoCBleHRyYToge1xuXG7CoCDCoCDCoCDCoCBzZWF3b3JkOnNlYXdvcmRcblxuwqAgwqAgfVxuXG59KTtcblxuZC5wdXNoKHtcblxuwqAgwqAgdGl0bGU6IFwidmlkZW/mkJw9PlwiK3NlYXdvcmQsXG5cbsKgIMKgIHVybDogJ2hpa2VyOi8vcGFnZS92aWRlb1NlYXJjaD9meXBhZ2UnLFxuXG7CoCDCoCBleHRyYToge1xuXG7CoCDCoCDCoCDCoCBzZWF3b3JkOnNlYXdvcmRcblxuwqAgwqAgfVxuXG59KTtcblxuLy8g57uT5p6c5YiX6KGo4oCU4oCU5oyJ57G75Yir5Y+I5pyJ5b6I5aSa5YiX6KGoXG5cbmxpc3QgPSBKU09OLnBhcnNlKGZldGNoKFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvYWxsL3YyP19fcmVmcmVzaF9fPXRydWUmX2V4dHJhPSZjb250ZXh0PSZwYWdlPVwiK01ZX1BBR0UrXCImcGFnZV9zaXplPTQyJm9yZGVyPSZkdXJhdGlvbj0mZnJvbV9zb3VyY2U9JmZyb21fc3BtaWQ9MzMzLjMzNyZwbGF0Zm9ybT1wYyZoaWdobGlnaHQ9MSZzaW5nbGVfY29sdW1uPTAma2V5d29yZD1cIiArIHNlYXdvcmQgKyBcIiZwcmVsb2FkPXRydWUmY29tMmNvPXRydWVcIiwge1xuXG7CoCDCoCBoZWFkZXJzOiB7XG5cbsKgIMKgIMKgIMKgIFwiVXNlci1BZ2VudFwiOiBQQ19VQSxcblxuwqAgwqAgwqAgwqAgXCJSZWZlcmVyXCI6IFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1wiLFxuXG7CoCDCoCDCoCDCoCBcIkNvb2tpZVwiOmNvb2tpZVxuXG7CoCDCoCB9LFxuXG7CoCDCoCBtZXRob2Q6IFwiR0VUXCJcblxufSkpLmRhdGEucmVzdWx0O1xuXG5saXN0LmZvckVhY2gobW92aWUgPT4ge1xuXG7CoCDCoCAvLyDnlarliafjgIHnlLXop4bliadcblxuwqAgwqAgaWYgKG1vdmllLnJlc3VsdF90eXBlLm1hdGNoKC9tZWRpYS8pICYmIG1vdmllLmRhdGEgIT0gW10pIHtcblxuwqAgwqAgwqAgwqAgbW92aWUuZGF0YS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xuXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogZWxlbWVudC50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XCJrZXl3b3JkXCI+L2csICcnKS5yZXBsYWNlKC88XFwvZW0+L2csICcnKSxcblxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBlbGVtZW50LmNvdmVyICsgXCJAUmVmZXJlcj1cIixcblxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9wYWdlL2ZpbG1lcmppI2ltbWVyc2l2ZVRoZW1lIycsXG5cbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbnRlbnQ6IGVsZW1lbnQuZGVzYyxcblxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogZWxlbWVudC5zdHlsZXMsXG5cbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XG5cbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNlYXNvbl9pZDplbGVtZW50LnNlYXNvbl9pZFxuXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XG5cbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xuXG7CoCDCoCDCoCDCoCB9KTtcblxuwqAgwqAgfVxuXG59KTtcblxuc2V0U2VhcmNoUmVzdWx0KGQpO1xuXG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIqIiwidWEiOiJwYyIsInByZVJ1bGUiOiJqczpcblxuLy8g5Zu+54mH6aKE5aSE55CGXG5cbmltZ0xvY2F0aW9uID0ge1xuXG7CoCDCoCBcIuW3suaUtuiXj1wiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnBUZnkucG5nQFJlZmVyZXI9JyxcblxuwqAgwqAgXCLmnKrmlLbol49cIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1ZxcEs3LnBuZ0BSZWZlcmVyPScsXG5cbsKgIMKgIFwi56iN5ZCO5YaN55yLXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WcGhuQy5wbmdAUmVmZXJlcj0nLFxuXG7CoCDCoCBcIuacqueCuei1nlwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnBiMlUucG5nQFJlZmVyZXI9JyxcblxuwqAgwqAgXCLlt7LngrnotZ5cIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1ZwMGQ1LnBuZ0BSZWZlcmVyPScsXG5cbsKgIMKgIFwi5re75Yqg5YWz5rOoXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WcENtUi5wbmdAUmVmZXJlcj0nLFxuXG7CoCDCoCBcIuW3suWFs+azqFwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnFZTkUucG5nQFJlZmVyZXI9JyxcblxuwqAgwqAgXCLkuJPmoI9cIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1Zwd3JCLnBuZ0BSZWZlcmVyPScsXG5cbsKgIMKgIFwi5p+l55yL6K+E6K66XCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WcHpJcy5wbmdAUmVmZXJlcj0nLFxuXG7CoCDCoCBcIuWRqOi+uVwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnBobkMucG5nQFJlZmVyZXI9JyxcblxuwqAgwqAgXCLlj4zovrlcIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1ZwcXc1LnBuZ0BSZWZlcmVyPScsXG5cbsKgIMKgIFwi5YiX6KGoXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WcEh2Uy5wbmdAUmVmZXJlcj0nLFxuXG7CoCDCoCBcIuiuoumYhVwiOiAnaHR0cHM6Ly9zMS4zMjg4ODgueHl6LzIwMjIvMDkvMjYvVnBYOE4ucG5nQFJlZmVyZXI9JyxcblxuwqAgwqAgXCLml6XljoZcIjogJ2h0dHBzOi8vczEuMzI4ODg4Lnh5ei8yMDIyLzA5LzI2L1ZxM0d3LnBuZ0BSZWZlcmVyPScsXG5cbsKgIMKgIFwi5Yqo5oCBXCI6ICdodHRwczovL3MxLjMyODg4OC54eXovMjAyMi8wOS8yNi9WQUt1eS5wbmdAUmVmZXJlcj0nXG5cbn1cblxuc3RvcmFnZTAucHV0TXlWYXIoJ+WbvuaghycsIGltZ0xvY2F0aW9uKTtcblxuLy8g5aSn5Lya5ZGY5Y+v5Lul5bCd6K+V5pS55Li6U1ZJUFxuXG5wdXRNeVZhcignYXV0aG9yaXR5Jywnbm9ybWFsJyk7XG5cbiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliIbnsbvniYflupNcIixcInBhdGhcIjpcInZhdWx0XCIsXCJydWxlXCI6XCLpobbpg6jlpKfnsbsgPSBbJ+WbveWImycsICfnlLXop4YnLCAn57qq5b2V54mHJywgJ+e7vOiJuicsICfnlarliacnLCAn55S15b2xJ11cXG5cXG5pZiAocGFnZSA9PSAxKSB7XFxuXFxuwqAgwqAgLy8g5oqY5Y+g5byA5YWzXFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5YWzJyA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICNGRjAwMDBcXFwiPuKIqDwvc3Bhbj48L2I+JyA6ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICMxYWFkMTlcXFwiPuKIpzwvc3Bhbj48L2I+JyxcXG5cXG7CoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ+aKmOWPoCcsICflhbMnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCfmipjlj6AnLCAn5byAJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgfSksXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG5cXG7CoCDCoCB9KVxcblxcbsKgIMKgIOmhtumDqOWkp+exuy5mb3JFYWNoKGxpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaSA9PSBnZXRNeVZhcign5aSn57G7JywgJ+WbveWImycpID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMxYWFkMTk+JyArIGxpICsgJzwvZm9udD48L2I+JyA6IGxpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGkpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcign5aSn57G7JywgbGkpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGkpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFxuwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCB9KTtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuXFxuwqAgwqAgfSlcXG5cXG59XFxuXFxuLy8g6aG26YOo5YiG57G75Y+C5pWw5pig5bCEXFxuXFxuc3dpdGNoIChnZXRNeVZhcign5aSn57G7JywgJ+WbveWImycpKSB7XFxuXFxuwqAgwqAgY2FzZSAn5Zu95YibJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25UeXBlID0gNDtcXG5cXG7CoCDCoCDCoCDCoCBpZiAoZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5byAJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9ndW9jaHVhbmcvaW5kZXgnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaggPSBwZGZhKGh0bWwsICcuZmlsdGVyLWxpc3QmJi5maWx0ZXItYmxvY2snKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaguZm9yRWFjaCh1bCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg562b6YCJ5p2h5Lu2ID0gcGRmaCh1bCwgJy5maWx0ZXItbmFtZSYmVGV4dCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqCA9IHBkZmEodWwsICd1bCYmbGknKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaguZm9yRWFjaChsaSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBkZmgobGksICdsaSYmVGV4dCcpID09ICflhbbku5YnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcijnrZvpgInmnaHku7YsICflhajpg6gnKSA9PSBwZGZoKGxpLCAnbGkmJlRleHQnKSA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMWFhZDE5PicgKyBwZGZoKGxpLCAnbGkmJlRleHQnKSArICc8L2ZvbnQ+PC9iPicgOiBwZGZoKGxpLCAnbGkmJlRleHQnKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGxpLCDnrZvpgInmnaHku7YpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcijnrZvpgInmnaHku7YsIHBkZmgobGksICdsaSYmVGV4dCcpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIGxpLCDnrZvpgInmnaHku7YpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn55S16KeGJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25UeXBlID0gNTtcXG5cXG7CoCDCoCDCoCDCoCBpZiAoZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5byAJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS90di9pbmRleCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqCA9IHBkZmEoaHRtbCwgJy5maWx0ZXItbGlzdCYmLmZpbHRlci1ibG9jaycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqC5mb3JFYWNoKHVsID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoID0gcGRmYSh1bCwgJ3VsJiZsaScpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqC5mb3JFYWNoKGxpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGdldE15VmFyKOetm+mAieadoeS7tiwgJ+WFqOmDqCcpID09IHBkZmgobGksICdsaSYmVGV4dCcpID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMxYWFkMTk+JyArIHBkZmgobGksICdsaSYmVGV4dCcpICsgJzwvZm9udD48L2I+JyA6IHBkZmgobGksICdsaSYmVGV4dCcpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGksIOetm+mAieadoeS7tikgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGksIOetm+mAieadoeS7tiksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnuqrlvZXniYcnOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSAzO1xcblxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2RvY3VtZW50YXJ5L2luZGV4LycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqCA9IHBkZmEoaHRtbCwgJy5maWx0ZXItbGlzdCYmLmZpbHRlci1ibG9jaycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqC5mb3JFYWNoKHVsID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoID0gcGRmYSh1bCwgJ3VsJiZsaScpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqC5mb3JFYWNoKGxpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGdldE15VmFyKOetm+mAieadoeS7tiwgJ+WFqOmDqCcpID09IHBkZmgobGksICdsaSYmVGV4dCcpID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMxYWFkMTk+JyArIHBkZmgobGksICdsaSYmVGV4dCcpICsgJzwvZm9udD48L2I+JyA6IHBkZmgobGksICdsaSYmVGV4dCcpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGksIOetm+mAieadoeS7tikgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGksIOetm+mAieadoeS7tiksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnu7zoibonOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSA3O1xcblxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL3ZhcmlldHkvaW5kZXgnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaggPSBwZGZhKGh0bWwsICcuZmlsdGVyLWxpc3QmJi5maWx0ZXItYmxvY2snKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaguZm9yRWFjaCh1bCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg562b6YCJ5p2h5Lu2ID0gcGRmaCh1bCwgJy5maWx0ZXItbmFtZSYmVGV4dCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqCA9IHBkZmEodWwsICd1bCYmbGknKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaguZm9yRWFjaChsaSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBkZmgobGksICdsaSYmVGV4dCcpID09ICflhbbku5YnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcijnrZvpgInmnaHku7YsICflhajpg6gnKSA9PSBwZGZoKGxpLCAnbGkmJlRleHQnKSA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMWFhZDE5PicgKyBwZGZoKGxpLCAnbGkmJlRleHQnKSArICc8L2ZvbnQ+PC9iPicgOiBwZGZoKGxpLCAnbGkmJlRleHQnKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGxpLCDnrZvpgInmnaHku7YpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcijnrZvpgInmnaHku7YsIHBkZmgobGksICdsaSYmVGV4dCcpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIGxpLCDnrZvpgInmnaHku7YpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn55Wq5YmnJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25UeXBlID0gMTtcXG5cXG7CoCDCoCDCoCDCoCBpZiAoZ2V0TXlWYXIoJ+aKmOWPoCcsICflhbMnKSA9PSAn5byAJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBodG1sID0gZmV0Y2goJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqCA9IHBkZmEoaHRtbCwgJy5maWx0ZXItbGlzdCYmLmZpbHRlci1ibG9jaycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWIhuexu+WIl+ihqC5mb3JFYWNoKHVsID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDnrZvpgInmnaHku7YgPSBwZGZoKHVsLCAnLmZpbHRlci1uYW1lJiZUZXh0Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoID0gcGRmYSh1bCwgJ3VsJiZsaScpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqC5mb3JFYWNoKGxpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAocGRmaChsaSwgJ2xpJiZUZXh0JykgPT0gJ+WFtuS7licpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm47XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGdldE15VmFyKOetm+mAieadoeS7tiwgJ+WFqOmDqCcpID09IHBkZmgobGksICdsaSYmVGV4dCcpID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMxYWFkMTk+JyArIHBkZmgobGksICdsaSYmVGV4dCcpICsgJzwvZm9udD48L2I+JyA6IHBkZmgobGksICdsaSYmVGV4dCcpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobGksIOetm+mAieadoeS7tikgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKOetm+mAieadoeS7tiwgcGRmaChsaSwgJ2xpJiZUZXh0JykpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGksIOetm+mAieadoeS7tiksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnlLXlvbEnOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvblR5cGUgPSAyO1xcblxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcign5oqY5Y+gJywgJ+WFsycpID09ICflvIAnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL21vdmllL2luZGV4Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoID0gcGRmYShodG1sLCAnLmZpbHRlci1saXN0JiYuZmlsdGVyLWJsb2NrJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5YiG57G75YiX6KGoLmZvckVhY2godWwgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOetm+mAieadoeS7tiA9IHBkZmgodWwsICcuZmlsdGVyLW5hbWUmJlRleHQnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaggPSBwZGZhKHVsLCAndWwmJmxpJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg5a2Q5YiG57G75YiX6KGoLmZvckVhY2gobGkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChwZGZoKGxpLCAnbGkmJlRleHQnKSA9PSAn5YW25LuWJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogZ2V0TXlWYXIo562b6YCJ5p2h5Lu2LCAn5YWo6YOoJykgPT0gcGRmaChsaSwgJ2xpJiZUZXh0JykgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzFhYWQxOT4nICsgcGRmaChsaSwgJ2xpJiZUZXh0JykgKyAnPC9mb250PjwvYj4nIDogcGRmaChsaSwgJ2xpJiZUZXh0JyksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChsaSwg562b6YCJ5p2h5Lu2KSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIo562b6YCJ5p2h5Lu2LCBwZGZoKGxpLCAnbGkmJlRleHQnKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaSwg562b6YCJ5p2h5Lu2KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uVHlwZSA9IDQ7XFxuXFxuwqAgwqAgwqAgwqAgaWYgKGdldE15VmFyKCfmipjlj6AnLCAn5YWzJykgPT0gJ+W8gCcpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaHRtbCA9IGZldGNoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgnKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaggPSBwZGZhKGh0bWwsICcuZmlsdGVyLWxpc3QmJi5maWx0ZXItYmxvY2snKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDliIbnsbvliJfooaguZm9yRWFjaCh1bCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg562b6YCJ5p2h5Lu2ID0gcGRmaCh1bCwgJy5maWx0ZXItbmFtZSYmVGV4dCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIOWtkOWIhuexu+WIl+ihqCA9IHBkZmEodWwsICd1bCYmbGknKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDlrZDliIbnsbvliJfooaguZm9yRWFjaChsaSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBkZmgobGksICdsaSYmVGV4dCcpID09ICflhbbku5YnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBnZXRNeVZhcijnrZvpgInmnaHku7YsICflhajpg6gnKSA9PSBwZGZoKGxpLCAnbGkmJlRleHQnKSA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMWFhZDE5PicgKyBwZGZoKGxpLCAnbGkmJlRleHQnKSArICc8L2ZvbnQ+PC9iPicgOiBwZGZoKGxpLCAnbGkmJlRleHQnKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGxpLCDnrZvpgInmnaHku7YpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcijnrZvpgInmnaHku7YsIHBkZmgobGksICdsaSYmVGV4dCcpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIGxpLCDnrZvpgInmnaHku7YpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxufVxcblxcbi8vIOWtkOWIhuexu+WPguaVsOaYoOWwhFxcblxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+exu+WeiycsICflhajpg6gnKSkge1xcblxcbsKgIMKgIGNhc2UgJ+ato+eJhyc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX3ZlcnNpb24gPSAxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+eUteW9sSc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX3ZlcnNpb24gPSAyO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WFtuS7lic6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX3ZlcnNpb24gPSAzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX3ZlcnNpb24gPSAtMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG59XFxuXFxuc3dpdGNoIChnZXRNeVZhcign6YWN6Z+zJywgJ+WFqOmDqCcpKSB7XFxuXFxuwqAgwqAgY2FzZSAn5Y6f5aOwJzpcXG5cXG7CoCDCoCDCoCDCoCBzcG9rZW5fbGFuZ3VhZ2VfdHlwZSA9IDE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Lit5paH6YWN6Z+zJzpcXG5cXG7CoCDCoCDCoCDCoCBzcG9rZW5fbGFuZ3VhZ2VfdHlwZSA9IDI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCBzcG9rZW5fbGFuZ3VhZ2VfdHlwZSA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG5zd2l0Y2ggKGdldE15VmFyKCflnLDljLonLCAn5YWo6YOoJykpIHtcXG5cXG7CoCDCoCBjYXNlICfkuK3lm73lpKfpmYYnOlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSAxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aXpeacrCc6XFxuXFxuwqAgwqAgwqAgwqAgYXJlYSA9IDI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn576O5Zu9JzpcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gMztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfoi7Hlm70nOlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSA0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+S4reWbvea4r+WPsCc6XFxuXFxuwqAgwqAgwqAgwqAgYXJlYSA9IFs2LCA3XTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfpn6nlm70nOlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSA4O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+azleWbvSc6XFxuXFxuwqAgwqAgwqAgwqAgYXJlYSA9IDk7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5rOw5Zu9JzpcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gMTA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6KW/54+t54mZJzpcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gMTM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5b635Zu9JzpcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gMTU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5oSP5aSn5YipJzpcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gMzU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5YW25LuWJzpcXG5cXG7CoCDCoCDCoCDCoCAvLyDlj6rmmK/nlarliafnmoTmg4XlhrVf5YWxNTXvvIzopoHlh4/ljrvlh7rnjrDnmoTigJTigJTnrpfkuobvvIznm7TmjqXlnKjliqjmgIHliIbnsbvnmoTml7blgJnljrvmjonkuoZcXG5cXG7CoCDCoCDCoCDCoCBhcmVhID0gWzEsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1XTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBkZWZhdWx0OlxcblxcbsKgIMKgIMKgIMKgIGFyZWEgPSAtMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG59XFxuXFxuc3dpdGNoIChnZXRNeVZhcign54q25oCBJywgJ+WFqOmDqCcpKSB7XFxuXFxuwqAgwqAgY2FzZSAn5a6M57uTJzpcXG5cXG7CoCDCoCDCoCDCoCBpc19maW5pc2ggPSAxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+i/nui9vSc6XFxuXFxuwqAgwqAgwqAgwqAgaXNfZmluaXNoID0gMDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBkZWZhdWx0OlxcblxcbsKgIMKgIMKgIMKgIGlzX2ZpbmlzaCA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG5zd2l0Y2ggKGdldE15VmFyKCflh7rlk4EnLCAn5YWo6YOoJykpIHtcXG5cXG7CoCDCoCBjYXNlICflpK7op4YnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gNDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICdCQkMnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmjqLntKLpopHpgZMnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gNztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflm73lrrblnLDnkIYnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gMTQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnTkhLJzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Y6G5Y+y6aKR6YGTJzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDY7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Y2r6KeGJzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6Ieq5Yi2JzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDk7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnSVRWJzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnU0tZJzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnWkRGJzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDEwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WQiOS9nOacuuaehCc6XFxuXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAxMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflm73lhoXlhbbku5YnOlxcblxcbsKgIMKgIMKgIMKgIHByb2R1Y2VyX2lkID0gMTI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Zu95aSW5YW25a6DJzpcXG5cXG7CoCDCoCDCoCDCoCBwcm9kdWNlcl9pZCA9IDEzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgcHJvZHVjZXJfaWQgPSAtMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG59XFxuXFxuc3dpdGNoIChnZXRNeVZhcign54mI5p2DJywgJ+WFqOmDqCcpKSB7XFxuXFxuwqAgwqAgY2FzZSAn54us5a62JzpcXG5cXG7CoCDCoCDCoCDCoCBjb3B5cmlnaHQgPSAzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WFtuS7lic6XFxuXFxuwqAgwqAgwqAgwqAgY29weXJpZ2h0ID0gWzEsIDIsIDRdO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgY29weXJpZ2h0ID0gLTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxufVxcblxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+S7mOi0uScsICflhajpg6gnKSkge1xcblxcbsKgIMKgIGNhc2UgJ+WFjei0uSc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX3N0YXR1cyA9IDE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5LuY6LS5JzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fc3RhdHVzID0gWzIsIDZdO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+Wkp+S8muWRmCc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX3N0YXR1cyA9IFs0LCA2XTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBkZWZhdWx0OlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvbl9zdGF0dXMgPSAtMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG59XFxuXFxuc3dpdGNoIChnZXRNeVZhcign5a2j5bqmJywgJ+WFqOmDqCcpKSB7XFxuXFxuwqAgwqAgY2FzZSAnMeaciCc6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX21vbnRoID0gMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICc05pyIJzpcXG5cXG7CoCDCoCDCoCDCoCBzZWFzb25fbW9udGggPSA0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzfmnIgnOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvbl9tb250aCA9IDc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMTDmnIgnOlxcblxcbsKgIMKgIMKgIMKgIHNlYXNvbl9tb250aCA9IDEwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX21vbnRoID0gLTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxufVxcblxcbnN3aXRjaCAoZ2V0TXlWYXIoJ+aXtumXtCcsICflhajpg6gnKSkge1xcblxcbsKgIMKgIGNhc2UgJzIwMjInOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMjIsMjAyMyknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMjEnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMjEsMjAyMiknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMjAnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMjAsMjAyMSknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTknOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTksMjAyMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTgnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTgsMjAxOSknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTcnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTcsMjAxOCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTYnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTYsMjAxNyknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTUnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMTUsMjAxNiknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTQtMjAxMCc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMjAxMCwyMDE1KSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAwOS0yMDA1JzpcXG5cXG7CoCDCoCDCoCDCoCB5ZWFyID0gJ1syMDA1LDIwMTApJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICcyMDA0LTIwMDAnOlxcblxcbsKgIMKgIMKgIMKgIHllYXIgPSAnWzIwMDAsMjAwNSknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzkw5bm05LujJzpcXG5cXG7CoCDCoCDCoCDCoCB5ZWFyID0gJ1sxOTkwLDIwMDApJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICc4MOW5tOS7oyc6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9ICdbMTk4MCwxOTkwKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5pu05pepJzpcXG5cXG7CoCDCoCDCoCDCoCB5ZWFyID0gJ1ssMTk4MCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgeWVhciA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG5zd2l0Y2ggKGdldE15VmFyKCflubTku70nLCAn5YWo6YOoJykpIHtcXG5cXG7CoCDCoCBjYXNlICcyMDIyJzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMjItMDEtMDEgMDA6MDA6MDAsMjAyMy0wMS0wMSAwMDowMDowMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMjEnOlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMjAyMS0wMS0wMSAwMDowMDowMCwyMDIyLTAxLTAxIDAwOjAwOjAwKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAyMCc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDIwLTAxLTAxIDAwOjAwOjAwLDIwMjEtMDEtMDEgMDA6MDA6MDApJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICcyMDE5JzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMTktMDEtMDEgMDA6MDA6MDAsMjAyMC0wMS0wMSAwMDowMDowMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTgnOlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMjAxOC0wMS0wMSAwMDowMDowMCwyMDE5LTAxLTAxIDAwOjAwOjAwKSc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnMjAxNyc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDE3LTAxLTAxIDAwOjAwOjAwLDIwMTgtMDEtMDEgMDA6MDA6MDApJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICcyMDE2JzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzIwMTYtMDEtMDEgMDA6MDA6MDAsMjAxNy0wMS0wMSAwMDowMDowMCknO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMTUtMjAxMCc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDEwLTAxLTAxIDAwOjAwOjAwLDIwMTYtMDEtMDEgMDA6MDA6MDApJ1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMDktMjAwNSc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDA1LTAxLTAxIDAwOjAwOjAwLDIwMTAtMDEtMDEgMDA6MDA6MDApJ1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzIwMDQtMjAwMCc6XFxuXFxuwqAgwqAgwqAgwqAgcmVsZWFzZV9kYXRlID0gJ1syMDAwLTAxLTAxIDAwOjAwOjAwLDIwMDUtMDEtMDEgMDA6MDA6MDApJ1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJzkw5bm05LujJzpcXG5cXG7CoCDCoCDCoCDCoCByZWxlYXNlX2RhdGUgPSAnWzE5OTAtMDEtMDEgMDA6MDA6MDAsMjAwMC0wMS0wMSAwMDowMDowMCknXFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAnODDlubTku6MnOlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbMTk4MC0wMS0wMSAwMDowMDowMCwxOTkwLTAxLTAxIDAwOjAwOjAwKSdcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmm7Tml6knOlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9ICdbLDE5ODAtMDEtMDEgMDA6MDA6MDApJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBkZWZhdWx0OlxcblxcbsKgIMKgIMKgIMKgIHJlbGVhc2VfZGF0ZSA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG5zd2l0Y2ggKGdldE15VmFyKCfpo47moLwnLCAn5YWo6YOoJykpIHtcXG5cXG7CoCDCoCBjYXNlICfnlLXlvbEnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gLTEwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIMKgIMKgIC8vIOeVquWJp+agj+ebrlxcblxcbsKgIMKgIGNhc2UgJ+WOn+WImyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxMDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmvKvnlLvmlLknOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5bCP6K+05pS5JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDEyO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+a4uOaIj+aUuSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxMztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnibnmkYQnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5biD6KKL5oiPJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDE1O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+eDreihgCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAxNjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnqb/otoonOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMTc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5aWH5bm7JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDE4O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIMKgIMKgIC8vIOWSi+i3s+S6huS4gOS4quaNj35cXG5cXG7CoCDCoCBjYXNlICfmiJjmlpcnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5pCe56yRJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDIxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aXpeW4uCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyMjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnp5HlubsnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6JCM57O7JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDI0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+ayu+aEiCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyNTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmoKHlm60nOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjY7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5bCR5YS/JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDI3O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+azoemdoic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAyODtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmgYvniLEnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMjk7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5bCR5aWzJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDMwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+mtlOazlSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzMTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflhpLpmaknOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Y6G5Y+yJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDMzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aetuepuic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzNDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmnLrmiJgnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn56We6a2UJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDM2O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WjsOaOpyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDAzNztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfov5DliqgnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwMzg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Yqx5b+XJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDM5O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+mfs+S5kCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0MDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmjqjnkIYnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn56S+5ZuiJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQyO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aZuuaWlyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0MztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICflgqzms6onOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn576O6aOfJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQ1O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WBtuWDjyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA0NjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfkuZnlpbMnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNDc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6IGM5Zy6JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDQ4O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcblxcbsKgIMKgIMKgIMKgIC8vIOe7vOiJuuagj+ebruOAgeeUteW9sVxcblxcbsKgIMKgIGNhc2UgJ+WJp+aDhSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1MDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfllpzliacnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn54ix5oOFJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDUyO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WKqOS9nCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1MztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmgZDmgJYnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn54qv572qJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDU1O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aDiuaCmic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1NjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfmgqznlpEnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNTc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5oiY5LqJJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDU4O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WKqOeUuyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA1OTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfkvKDorrAnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5a625bqtJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDYxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+atjOiInic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2MjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnuqrlrp4nOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn54G+6Zq+JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDY0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+S6uuaWhyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2NTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnp5HmioAnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNjY7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5a6H5a6ZJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDY4O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+iQjOWuoCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA2OTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnpL7kvJonOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzA7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Yqo54mpJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDcxO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+iHqueEtic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3MjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfljLvnlpcnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzM7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Yab5LqLJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDc0O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+e9quahiCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3NTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnpZ7np5gnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzY7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5peF6KGMJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDc3O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+atpuS+oCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA3ODtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfpnZLmmKUnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwNzk7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn6YO95biCJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDgwO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WPpOijhSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4MTtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfosI3miJgnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODI7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn57uP5YW4JzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDgzO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aDheaEnyc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4NDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfnpZ7or50nOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5bm05LujJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDg2O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+WGnOadkSc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA4NztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfliJHkvqYnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwODg7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5Yab5peFJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDg5O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+iuv+iwiCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5MDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfohLHlj6Pnp4AnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTE7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn55yf5Lq656eAJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDkyO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+mAieengCc6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5NDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfml4XmuLgnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTU7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5pma5LyaJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDk4O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+a8lOWUseS8mic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDA5NjtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlICfkurLlrZAnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAwOTc7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSAn5YW75oiQJzpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IDEwMDk5O1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgJ+aWh+WMlic6XFxuXFxuwqAgwqAgwqAgwqAgc3R5bGVfaWQgPSAxMDEwMDtcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCDCoCDCoCAvLyDnlLXlvbHmoI/nm65cXG5cXG7CoCDCoCBjYXNlICfnn63niYcnOlxcblxcbsKgIMKgIMKgIMKgIHN0eWxlX2lkID0gMTAxMDQ7XFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgZGVmYXVsdDpcXG5cXG7CoCDCoCDCoCDCoCBzdHlsZV9pZCA9IC0xO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbn1cXG5cXG4vLyDmmKDlsITnnJ/lrp7or7fmsYLlnLDlnYBcXG5cXG5zd2l0Y2ggKHNlYXNvblR5cGUpIHtcXG5cXG7CoCDCoCBjYXNlIDQ6XFxuXFxuwqAgwqAgwqAgwqAgLy8g5Zu95YibXFxuXFxuwqAgwqAgwqAgwqAgdHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0P3NlYXNvbl92ZXJzaW9uPScgKyBzZWFzb25fdmVyc2lvbiArICcmaXNfZmluaXNoPScgKyBpc19maW5pc2ggKyAnJmNvcHlyaWdodD0mcycgKyBjb3B5cmlnaHQgKyAnZWFzb25fc3RhdHVzPScgKyBzZWFzb25fc3RhdHVzICsgJyZ5ZWFyPScgKyB5ZWFyICsgJyZzdHlsZV9pZD0nICsgc3R5bGVfaWQgKyAnJm9yZGVyPTMmc3Q9NCZzb3J0PTAmcGFnZT0nICsgcGFnZSArICcmc2Vhc29uX3R5cGU9NCZwYWdlc2l6ZT0yMCZ0eXBlPTEnXFxuXFxuwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgY2FzZSA1OlxcblxcbsKgIMKgIMKgIMKgIC8vIOeUteinhuWJp1xcblxcbsKgIMKgIMKgIMKgIHRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD9hcmVhPScgKyBhcmVhICsgJyZzdHlsZV9pZD0nICsgc3R5bGVfaWQgKyAnJnJlbGVhc2VfZGF0ZT0nICsgcmVsZWFzZV9kYXRlICsgJyZzZWFzb25fc3RhdHVzPScgKyBzZWFzb25fc3RhdHVzICsgJyZvcmRlcj0yJnN0PTUmc29ydD0wJnBhZ2U9JyArIHBhZ2UgKyAnJnNlYXNvbl90eXBlPTUmcGFnZXNpemU9MjAmdHlwZT0xJ1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgNzpcXG5cXG7CoCDCoCDCoCDCoCAvLyDnu7zoibpcXG5cXG7CoCDCoCDCoCDCoCB0cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/c2Vhc29uX3N0YXR1cz0nICsgc2Vhc29uX3N0YXR1cyArICcmc3R5bGVfaWQ9JyArIHN0eWxlX2lkICsgJyZvcmRlcj0yJnN0PTcmc29ydD0wJnBhZ2U9JyArIHBhZ2UgKyAnJnNlYXNvbl90eXBlPTcmcGFnZXNpemU9MjAmdHlwZT0xJztcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCBjYXNlIDE6XFxuXFxuwqAgwqAgwqAgwqAgLy8g55Wq5YmnXFxuXFxuwqAgwqAgwqAgwqAgdHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0P3NlYXNvbl92ZXJzaW9uPScgKyBzZWFzb25fdmVyc2lvbiArICcmc3Bva2VuX2xhbmd1YWdlX3R5cGU9JyArIHNwb2tlbl9sYW5ndWFnZV90eXBlICsgJyZhcmVhPScgKyBhcmVhICsgJyZpc19maW5pc2g9JyArIGlzX2ZpbmlzaCArICcmY29weXJpZ2h0PScgKyBjb3B5cmlnaHQgKyAnJnNlYXNvbl9zdGF0dXM9JyArIHNlYXNvbl9zdGF0dXMgKyAnJnNlYXNvbl9tb250aD0nICsgc2Vhc29uX21vbnRoICsgJyZ5ZWFyPScgKyB5ZWFyICsgJyZzdHlsZV9pZD0nICsgc3R5bGVfaWQgKyAnJm9yZGVyPTMmc3Q9MSZzb3J0PTAmcGFnZT0nICsgcGFnZSArICcmc2Vhc29uX3R5cGU9MSZwYWdlc2l6ZT0yMCZ0eXBlPTEnO1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgMzpcXG5cXG7CoCDCoCDCoCDCoCAvLyDnuqrlvZXniYdcXG5cXG7CoCDCoCDCoCDCoCB0cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/c3R5bGVfaWQ9JyArIHN0eWxlX2lkICsgJyZwcm9kdWNlcl9pZD0nICsgcHJvZHVjZXJfaWQgKyAnJnJlbGVhc2VfZGF0ZT0nICsgcmVsZWFzZV9kYXRlICsgJyZzZWFzb25fc3RhdHVzPScgKyBzZWFzb25fc3RhdHVzICsgJyZvcmRlcj0yJnN0PTMmc29ydD0wJnBhZ2U9JyArIHBhZ2UgKyAnJnNlYXNvbl90eXBlPTMmcGFnZXNpemU9MjAmdHlwZT0xJ1xcblxcbsKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIGNhc2UgMjpcXG5cXG7CoCDCoCDCoCDCoCAvLyDnlLXlvbFcXG5cXG7CoCDCoCDCoCDCoCB0cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/YXJlYT0nICsgYXJlYSArICcmc3R5bGVfaWQ9JyArIHN0eWxlX2lkICsgJyZyZWxlYXNlX2RhdGU9JyArIHJlbGVhc2VfZGF0ZSArICcmc2Vhc29uX3N0YXR1cz0nICsgc2Vhc29uX3N0YXR1cyArICcmb3JkZXI9MiZzdD0yJnNvcnQ9MCZwYWdlPScgKyBwYWdlICsgJyZzZWFzb25fdHlwZT0yJnBhZ2VzaXplPTIwJnR5cGU9MSdcXG5cXG7CoCDCoCDCoCDCoCBicmVhaztcXG5cXG59XFxuXFxudHJ1ZV91cmwgPSBlbmNvZGVVUkkodHJ1ZV91cmwpO1xcblxcbmxpc3QgPSBKU09OLnBhcnNlKGZldGNoKHRydWVfdXJsKSkuZGF0YS5saXN0O1xcblxcbnRyeSB7XFxuXFxuwqAgwqAgbGlzdC5mb3JFYWNoKG1vdmllID0+IHtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBtb3ZpZS50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZmlsbWVyamkjaW1tZXJzaXZlVGhlbWUjXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IG1vdmllLmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogbW92aWUub3JkZXIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8zJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNlYXNvbl9pZDogbW92aWUuc2Vhc29uX2lkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIH0pO1xcblxcbn0gY2F0Y2ggKGUpIHtcXG5cXG7CoCDCoCBsb2coJ+W3sue7j+aKtei+vumhteW6lScgKyBNWV9QQUdFKTtcXG5cXG59XFxuXFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLng63mmKDml7bpl7TooahcIixcInBhdGhcIjpcIlVwZGF0ZVRhYmxlc1wiLFwicnVsZVwiOlwiZnVuY3Rpb24gY29sb3IodGV4dCwgY29sb3IpIHtcXG5cXG7CoCDCoCB0ZXh0ICs9IFxcXCJcXFwiO1xcblxcbsKgIMKgIGlmICh0ZXh0LmluZGV4T2YoXFxcIuKAnOKAnOKAneKAnVxcXCIpID09PSAwKSB7XFxuXFxuwqAgwqAgwqAgwqAgdGV4dC5yZXBsYWNlKFxcXCLigJzigJzigJ3igJ1cXFwiLCBcXFwiXFxcIik7XFxuXFxuwqAgwqAgfVxcblxcbsKgIMKgIHJldHVybiBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9J1xcXCIgKyBjb2xvciArIFxcXCInPlxcXCIgKyB0ZXh0ICsgXFxcIjwvZm9udD5cXFwiO1xcblxcbn1cXG5cXG52YXIgdGFicyA9IHtcXG5cXG7CoCDCoCBcXFwi55Wq5YmnXFxcIjogMSxcXG5cXG7CoCDCoCBcXFwi57qq5b2V54mHXFxcIjogMyxcXG5cXG7CoCDCoCBcXFwi5Zu95YibXFxcIjogNFxcblxcbn1cXG5cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuXFxuwqAgwqAgT2JqZWN0LmtleXModGFicykuZm9yRWFjaChpdGVtID0+IHtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAoZ2V0TXlWYXIoXFxcImp1amlcXFwiLCBcXFwi5Zu95YibXFxcIikgPT0gaXRlbSA/IGNvbG9yKGl0ZW0sIFxcXCJyZWRcXFwiKSA6IGl0ZW0pLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgpLmxhenlSdWxlKChhKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoXFxcImp1amlcXFwiLCBhKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGl0ZW0pLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG5cXG7CoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIH0pXFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImxpbmVcXFwiXFxuXFxuwqAgwqAgfSlcXG5cXG7CoCDCoCBsZXQgZGF5cyA9IDdcXG5cXG7CoCDCoCBmb3IgKGxldCBpID0gMTsgaSA8IGRheXM7IGkrKykge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IChnZXRNeVZhcihcXFwiZnJvbVxcXCIsIFxcXCIxXFxcIikgPT0gaSArIFxcXCJcXFwiID8gY29sb3IoaSArIFxcXCLlpKnliY1cXFwiLCBcXFwicmVkXFxcIikgOiBpICsgXFxcIuWkqeWJjVxcXCIpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgpLmxhenlSdWxlKChpKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoXFxcImZyb21cXFwiLCBpICsgXFxcIlxcXCIpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UoKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBpKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuXFxuwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCB9XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImxpbmVcXFwiXFxuXFxuwqAgwqAgfSlcXG5cXG7CoCDCoCBmb3IgKGxldCBpID0gMTsgaSA8IGRheXM7IGkrKykge1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IChnZXRNeVZhcihcXFwidG9cXFwiLCBcXFwiMVxcXCIpID09IGkgKyBcXFwiXFxcIiA/IGNvbG9yKGkgKyBcXFwi5aSp5ZCOXFxcIiwgXFxcInJlZFxcXCIpIDogaSArIFxcXCLlpKnlkI5cXFwiKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoKS5sYXp5UnVsZSgoaSkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKFxcXCJ0b1xcXCIsIGkgKyBcXFwiXFxcIilcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSgpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGkpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG5cXG7CoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIH1cXG5cXG5cXG7CoCDCoCAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRNb3ZpZXModGFic1tnZXRNeVZhcihcXFwianVqaVxcXCIsIFxcXCLlm73liJtcXFwiKV0sIGdldE15VmFyKFxcXCJmcm9tXFxcIiwgXFxcIjFcXFwiKSwgZ2V0TXlWYXIoXFxcInRvXFxcIiwgXFxcIjFcXFwiKSkuZm9yRWFjaChpdGVtID0+IHtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBpdGVtLmRhdGUgKyBcXFwiIOWRqFxcXCIgKyBpdGVtLmRheV9vZl93ZWVrLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbsKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgaXRlbS5lcGlzb2Rlcy5mb3JFYWNoKGkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGkudGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBpLmNvdmVyKydAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6aS5wdWJfaW5kZXgubWF0Y2goL+WNs+Wwhi8pPyfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj4nK2kucHViX2luZGV4KydcXFxcbicraS5wdWJfdGltZSsnPC9mb250Pic6IGkucHViX2luZGV4KyAnXFxcXG4nICsgaS5wdWJfdGltZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZmlsbWVyamkjaW1tZXJzaXZlVGhlbWUjXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJzZWFzb25faWRcXFwiOiBpLnNlYXNvbl9pZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgfSlcXG5cXG59XFxuXFxuXFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrkuLvpobVcIixcInBhdGhcIjpcInVzZXJIb21lXCIsXCJydWxlXCI6XCJpZiAoTVlfUEFHRSA9PSAxKSB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxuwqAgwqAgfSlcXG5cXG7CoCDCoCB0cnkge1xcblxcbsKgIMKgIMKgIMKgIGlmIChpc0xvZ2luLnR5cGUgPT09IHRydWUpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn6K6i6ZiFJyA9PSBnZXRJdGVtKCfkuLvpobXlsZXnpLonLCAn6K6i6ZiFJykgPyAn4oCY4oCY4oCZ4oCZPGJpZz48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7orqLpmIU8L2ZvbnQ+PC9iaWc+JyA6ICforqLpmIUnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+iuoumYhScpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNlbGVjdGlvbiA9IFsn6L+955WqJywgJ+i/veWJpyddO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5tYXAoKGl0KSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGl0ID09ICfov73nlaonKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHlwZUlkID0gJzEnO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHlwZUlkID0gJzInO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gdHlwZUlkID09PSBnZXRJdGVtKCforqLpmIXnsbvlnosnLCAn6L+955WqJykgPyAn8J+RiScgKyBpdCA6IGl0O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkKHNlbGVjdGlvbiwgMSkuc2VsZWN0KCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL/CfkYkvZywgJycpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChpbnB1dCA9PSAn6L+955WqJykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+iuoumYheexu+WeiycsICcxJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMicpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i6K6i6ZiF5Li6OlxcXCIgKyBpbnB1dDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAndGV4dF80JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5YWz5rOoJyA9PSBnZXRJdGVtKCfkuLvpobXlsZXnpLonLCAn6K6i6ZiFJykgPyAn4oCY4oCY4oCZ4oCZPGJpZz48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7lhbPms6g8L2ZvbnQ+PC9iaWc+JyA6ICflhbPms6gnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+WFs+azqCcpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfmlLbol48nID09IGdldEl0ZW0oJ+S4u+mhteWxleekuicsICforqLpmIUnKSA/ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuaUtuiXjzwvZm9udD48L2JpZz4nIDogJ+aUtuiXjycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCfkuLvpobXlsZXnpLonLCAn5pS26JePJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2VsZWN0aW9uID0gWyfmiJHliJvlu7rnmoTmlLbol4/lpLknLCAn56iN5ZCO5Zyo55yLJ107XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2VsZWN0aW9uID0gc2VsZWN0aW9uLm1hcCgoaXQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gaXQgPT09IGdldEl0ZW0oJ+aUtuiXj+exu+WeiycsICfmiJHliJvlu7rnmoTmlLbol4/lpLknKSA/ICfwn5GJJyArIGl0IDogaXQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQoc2VsZWN0aW9uLCAxKS5zZWxlY3QoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgv8J+RiS9nLCAnJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5pS26JeP57G75Z6LJywgaW5wdXQpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLorqLpmIXkuLo6XFxcIiArIGlucHV0O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfljoblj7InID09IGdldEl0ZW0oJ+S4u+mhteWxleekuicsICforqLpmIUnKSA/ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuWOhuWPsjwvZm9udD48L2JpZz4nIDogJ+WOhuWPsicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCfkuLvpobXlsZXnpLonLCAn5Y6G5Y+yJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3RleHRfNCcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXCLnmbvpmYZcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9sb2dpblxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIH0gY2F0Y2ggKGUpIHtcXG5cXG7CoCDCoCDCoCDCoCBsb2coZS5tZXNzYWdlKVxcblxcbsKgIMKgIH1cXG5cXG59XFxuXFxuLy8g5Li76aG15bGV56S65Yy6XFxuXFxuaWYgKGlzTG9naW4udHlwZSA9PT0gdHJ1ZSkge1xcblxcbsKgIMKgIGJpbGlEYXRlID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpO1xcblxcbsKgIMKgIGNvb2tpZSA9IGJpbGlEYXRlLmNvb2tpZTtcXG5cXG7CoCDCoCBtaWQgPSBiaWxpRGF0ZS51c2VyTWlkO1xcblxcbsKgIMKgIHN3aXRjaCAoZ2V0SXRlbSgn5Li76aG15bGV56S6JywgJ+iuoumYhScpKSB7XFxuXFxuwqAgwqAgwqAgwqAgY2FzZSAn5YWz5rOoJzpcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn4oi3JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOiAn5Y2g5L2N56ymJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZm9jdXNHcm91cHMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi90YWdzP2pzb25wPWpzb25wXFxcIiwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ3RlbXBJZCcsIEpTT04uc3RyaW5naWZ5KGZvY3VzR3JvdXBzWzFdLnRhZ2lkKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZm9jdXNHcm91cHMuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRhZ2lkID09IGdldEl0ZW0oJ+WFs+azqOWIhue7hCcsIEpTT04uc3RyaW5naWZ5KGZvY3VzR3JvdXBzWzFdLmlkKSkgPyBcXFwi4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9J3JlZCc+XFxcIiArIGxpc3QubmFtZSArIGxpc3QuY291bnQgKyBcXFwiPC9mb250PlxcXCIgOiBsaXN0Lm5hbWUgKyBsaXN0LmNvdW50LFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChsaXN0KSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2V0SXRlbSgn5YWz5rOo5YiG57uEJywgSlNPTi5zdHJpbmdpZnkobGlzdC50YWdpZCkpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJlZnJlc2hQYWdlKHRydWUpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLlhbPms6jliIbnu4TkuLo6XFxcIiArIGxpc3QubmFtZTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaXN0KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdyb3VwQ29udGVudCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL3RhZz9taWQ9XFxcIiArIG1pZCArIFxcXCImdGFnaWQ9XFxcIiArIGdldEl0ZW0oJ+WFs+azqOWIhue7hCcsIGdldE15VmFyKCd0ZW1wSWQnKSkgKyBcXFwiJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZwcz0yMCZqc29ucD1qc29ucFxcXCIsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBncm91cENvbnRlbnQuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBcXFwiPGJpZz48Zm9udCBjb2xvcj0nYmx1ZSc+XFxcIiArIGxpc3QudW5hbWUgKyBcXFwiPC9mb250PjwvYmlnPjxzbWFsbD5cXFwiICsgbGlzdC5zaWduICsgXFxcIjwvc21hbGw+XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuZmFjZSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdXBIb21lXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1pZDogbGlzdC5taWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudW5hbWUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZmFjZTogbGlzdC5mYWNlXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCDCoCDCoCBjYXNlICfmlLbol48nOlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoZ2V0SXRlbSgn5pS26JeP57G75Z6LJywgJ+aIkeWIm+W7uueahOaUtuiXj+WkuScpID09ICfmiJHliJvlu7rnmoTmlLbol4/lpLknKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn4oi3JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlkOiAn5Y2g5L2N56ymJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sbGVjdGlvbnMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvZm9sZGVyL2xpc3Q0bmF2aWdhdGVcXFwiLCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBzID0gY29sbGVjdGlvbnNbMF0ubWVkaWFMaXN0UmVzcG9uc2UubGlzdDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwdXRNeVZhcigndGVtcElkJywgSlNPTi5zdHJpbmdpZnkoZ3JvdXBzWzBdLmlkKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBzLmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5pZCA9PSBnZXRJdGVtKCfmlLbol4/lpLknLCBKU09OLnN0cmluZ2lmeShncm91cHNbMF0uaWQpKSA/IFxcXCLigJzigJzigJ3igJ08Zm9udCBjb2xvcj0ncmVkJz5cXFwiICsgbGlzdC50aXRsZSArIFxcXCI8L2ZvbnQ+XFxcIiA6IGxpc3QudGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGxpc3QpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRJdGVtKCfmlLbol4/lpLknLCBKU09OLnN0cmluZ2lmeShsaXN0LmlkKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouaUtuiXj+WkueS4ujpcXFwiICsgbGlzdC50aXRsZTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBsaXN0KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGdyb3VwQ29udGVudCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9saXN0P21lZGlhX2lkPVxcXCIgKyBnZXRJdGVtKCfmlLbol4/lpLknLCBnZXRNeVZhcigndGVtcElkJykpICsgXFxcIiZwbj1cXFwiICsgcGFnZSArIFxcXCImcHM9MjAma2V5d29yZD0mb3JkZXI9bXRpbWUmdHlwZT0wJnRpZD0wJnBsYXRmb3JtPXdlYiZqc29ucD1qc29ucFxcXCIsIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KSkuZGF0YS5tZWRpYXM7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZ3JvdXBDb250ZW50LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ1VQOicgKyBsaXN0LnVwcGVyLm5hbWUgKyAnXFxcXG4nICsgbGlzdC5pbnRybyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5pZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGxhdGVyVmlld3MgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9oaXN0b3J5L3Rvdmlldy93ZWI/anNvbnA9anNvbnBcXFwiLCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY291bnQgPSBsYXRlclZpZXdzLmNvdW50O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXCLlhbHmnIlcXFwiICsgY291bnQgKyBcXFwi5p2h5b6F55yL6KeG6aKR6K6w5b2VXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGF0ZXJWaWV3cy5saXN0LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QucGljICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICdVUDonICsgbGlzdC5vd25lci5uYW1lICsgJ1xcXFxuJyArIGxpc3QuZGVzYyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5haWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBicmVhaztcXG5cXG7CoCDCoCDCoCDCoCBjYXNlICforqLpmIUnOlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHN1YnNjcmlwdGlvbnMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9iYW5ndW1pL2ZvbGxvdy9saXN0P3R5cGU9XFxcIiArIGdldEl0ZW0oJ+iuoumYheexu+WeiycsICcxJykgKyBcXFwiJmZvbGxvd19zdGF0dXM9MCZwbj1cXFwiICsgcGFnZSArIFxcXCImcHM9MTUmdm1pZD1cXFwiICsgbWlkLCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGdldEl0ZW0oJ+iuoumYheexu+WeiycsICcxJykgPT0gJzEnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdHlwZXJOYW1lID0gJ+i/veeVqic7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0eXBlck5hbWUgPSAn6L+95YmnJztcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IFxcXCLlvZPliY1cXFwiICsgdHlwZXJOYW1lICsgXFxcIuaVsOmHjzpcXFwiICsgc3Vic2NyaXB0aW9ucy50b3RhbCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgc3Vic2NyaXB0aW9ucy5saXN0LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZmlsbWVyamkjaW1tZXJzaXZlVGhlbWUjXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiBsaXN0LmV2YWx1YXRlLnN1YnN0cmluZygwLCAxMikgKyAn4oCY4oCY4oCZ4oCZ4oCmPGZvbnQgY29sb3I9XFxcIiMxQzFDMUNcXFwiPuivpuaDhTwvZm9udD4nICsgJ1xcXFxuJyArIGxpc3Quc2Vhc29uX3R5cGVfbmFtZSArICd8JyArIGxpc3QuYXJlYXNbMF0ubmFtZSArICdcXFxcbicgKyAobGlzdC5wcm9ncmVzcyA9PSAnJyA/ICflsJrmnKrop4LnnIsnIDogbGlzdC5wcm9ncmVzcykgKyAnfCcgKyAobGlzdC5uZXdfZXAuaW5kZXhfc2hvdy5tYXRjaCgv5pu05pawLykgPyAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9XFxcInJlZFxcXCI+JyArIGxpc3QubmV3X2VwLmluZGV4X3Nob3cgKyAnPC9mb250PicgOiBsaXN0Lm5ld19lcC5pbmRleF9zaG93KSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNlYXNvbl9pZDogbGlzdC5zZWFzb25faWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgwqAgwqAgY2FzZSAn5Y6G5Y+yJzpcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB2YXIgbmV4dEluZm8gPSB7fTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAocGFnZSA9PSAxKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGlzdG9yaWVzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9oaXN0b3J5L2N1cnNvcj9tYXg9MCZ2aWV3X2F0PTAmYnVzaW5lc3M9XFxcIiwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pKS5kYXRhO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG5leHRJbmZvLm1heCA9IGhpc3Rvcmllcy5jdXJzb3IubWF4O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG5leHRJbmZvLnZpZXdfYXQgPSBoaXN0b3JpZXMuY3Vyc29yLnZpZXdfYXQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dEluZm8uYnVzaW5lc3MgPSBoaXN0b3JpZXMuY3Vyc29yLmJ1c2luZXNzO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGlzdG9yaWVzID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9oaXN0b3J5L2N1cnNvcj9tYXg9XFxcIiArIHN0b3JhZ2UwLmdldE15VmFyKEpTT04uc3RyaW5naWZ5KHBhZ2UpKS5tYXggKyBcXFwiJnZpZXdfYXQ9XFxcIiArIHN0b3JhZ2UwLmdldE15VmFyKEpTT04uc3RyaW5naWZ5KHBhZ2UpKS52aWV3X2F0ICsgXFxcIiZidXNpbmVzcz1cXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkocGFnZSkpLmJ1c2luZXNzLCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dEluZm8ubWF4ID0gaGlzdG9yaWVzLmN1cnNvci5tYXg7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbmV4dEluZm8udmlld19hdCA9IGhpc3Rvcmllcy5jdXJzb3Iudmlld19hdDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBuZXh0SW5mby5idXNpbmVzcyA9IGhpc3Rvcmllcy5jdXJzb3IuYnVzaW5lc3M7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHN0b3JhZ2UwLnB1dE15VmFyKEpTT04uc3RyaW5naWZ5KHBhZ2UgKyAxKSwgbmV4dEluZm8pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGhpc3Rvcmllcy5saXN0LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8g6L+Y5pyJ6KaB5Yik5pat55Wq5Ymn5b2x6KeG57G75Z6LXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGxpc3QuYmFkZ2UgPT0gJ+S4k+agjycpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyDlkI7nu63lpITnkIZcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnNob3dfdGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmNvdmVyc1swXSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL25vdGUjaW1tZXJzaXZlVGhlbWUjXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAnVVA6JyArIGxpc3QuYXV0aG9yX25hbWUgKyAnXFxcXG4nICsgbGlzdC50YWdfbmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5oaXN0b3J5Lm9pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnNob3dfdGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW8jaW1tZXJzaXZlVGhlbWUjXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAnVVA6JyArIGxpc3QuYXV0aG9yX25hbWUgKyAnXFxcXG4nICsgbGlzdC50YWdfbmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5oaXN0b3J5Lm9pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGJyZWFrO1xcblxcbsKgIMKgIMKgIMKgIGRlZmF1bHQ6XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgbG9nKCflh7rplJnkuoZ+Jyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgYnJlYWs7XFxuXFxuwqAgwqAgfVxcblxcbn1cXG5cXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIueZu+W9lVwiLFwicGF0aFwiOlwibG9naW5cIixcInJ1bGVcIjpcImpzOlxcblxcbnZhciBkID0gW107XFxuXFxuLy8g5aaC5p6c6I635Y+W5aSx6LSl5bCx5YaN6K+V5LiA5qyhflxcblxcbmQucHVzaCh7XFxuXFxuwqAgwqAgdXJsOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuXFxuwqAgwqAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuXFxuwqAgwqAgZGVzYzogXFxcIjEwMCUmJmZsb2F0XFxcIixcXG5cXG7CoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBmYmEuc2V0QXBwQmFyQ29sb3IoXFxcInBpbmtcXFwiKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB2YXIgdG9rZW5fdGltZXIgPSBmdW5jdGlvbiAoKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdmFyIHRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIC8vIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxcXCJoZWFkZXItbG9naW4tZW50cnlcXFwiKVswXSA9PT0gdW5kZWZpbmVkKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXFxcInVubG9naW4tYXZhdGFyXFxcIilbMF0gPT09IHVuZGVmaW5lZCkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldHRpbmdzID0gSlNPTi5zdHJpbmdpZnkoe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvb2tpZTogZmJhLmdldENvb2tpZShcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMjAuc3ZnJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZiYS53cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiLCBzZXR0aW5ncyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWxlcnQoXFxcIuW3suiOt+WPluWIsGNvb2tpZVxcXCIpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZiYS5iYWNrKClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgMTAwKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH07XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdG9rZW5fdGltZXIoKTtcXG5cXG7CoCDCoCDCoCDCoCB9KSxcXG5cXG7CoCDCoCDCoCDCoCB1YTogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgY2FuQmFjazogdHJ1ZVxcblxcbsKgIMKgIH1cXG5cXG59KVxcblxcbnNldFJlc3VsdChkKTtcXG5cXG5cXG5qczpcXG5cXG52YXIgZCA9IFtdO1xcblxcbi8vIOWmguaenOiOt+WPluWksei0peWwseWGjeivleS4gOasoX5cXG5cXG5kLnB1c2goe1xcblxcbsKgIMKgIHVybDogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcblxcbsKgIMKgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcblxcbsKgIMKgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuXFxuwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCBqczogJC50b1N0cmluZygoKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZmJhLnNldEFwcEJhckNvbG9yKFxcXCJwaW5rXFxcIik7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdmFyIHRva2VuX3RpbWVyID0gZnVuY3Rpb24gKCkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZhciB0aW1lciA9IHNldEludGVydmFsKCgpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvLyBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcXFwiaGVhZGVyLWxvZ2luLWVudHJ5XFxcIilbMF0gPT09IHVuZGVmaW5lZCkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxcXCJ1bmxvZ2luLWF2YXRhclxcXCIpWzBdID09PSB1bmRlZmluZWQpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXR0aW5ncyA9IEpTT04uc3RyaW5naWZ5KHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb29raWU6IGZiYS5nZXRDb29raWUoXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vdmllLzIwLnN2ZydcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYmEud3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIiwgc2V0dGluZ3MpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFsZXJ0KFxcXCLlt7Lojrflj5bliLBjb29raWVcXFwiKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYmEuYmFjaygpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIDEwMClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9O1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRva2VuX3RpbWVyKCk7XFxuXFxuwqAgwqAgwqAgwqAgfSksXFxuXFxuwqAgwqAgwqAgwqAgdWE6IFBDX1VBLFxcblxcbsKgIMKgIMKgIMKgIGNhbkJhY2s6IHRydWVcXG5cXG7CoCDCoCB9XFxuXFxufSlcXG5cXG5zZXRSZXN1bHQoZCk7XFxuXFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlvbHop4bkuoznuqdcIixcInBhdGhcIjpcImZpbG1lcmppXCIsXCJydWxlXCI6XCJqczpcXG4vLyDmlbDmja7lrprkvY1cXG52YXIgZCA9IFtdO1xcbmlmIChNWV9QQVJBTVMuc2Vhc29uX2lkKSB7XFxuICAgIHNlYXNvbl9pZCA9IE1ZX1BBUkFNUy5zZWFzb25faWQgKyBcXFwiXFxcIjtcXG4gICAgRGF0YSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvdmlldy93ZWIvc2Vhc29uP3NlYXNvbl9pZD0nICsgc2Vhc29uX2lkKSkucmVzdWx0O1xcbn0gZWxzZSB7XFxuICAgIERhdGEgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3ZpZXcvd2ViL3NlYXNvbj9lcF9pZD0nICsgTVlfUEFSQU1TLmVwX2lkKSkucmVzdWx0O1xcbn1cXG7lsIHpnaIgPSBEYXRhLmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCI7XFxu5Zyw5Yy6ID0gRGF0YS5hcmVhc1swXS5uYW1lO1xcbueugOS7iyA9IERhdGEuZXZhbHVhdGU7XFxuLy8g5q2j54mHXFxu57G75Z6LID0gRGF0YS5wb3NpdGl2ZS50aXRsZTtcXG7kuIrmmKDml7bpl7QgPSBEYXRhLnB1Ymxpc2gucHViX3RpbWU7XFxudHJ5IHtcXG4gICAg5b6X5YiGID0gRGF0YS5yYXRpbmcuc2NvcmU7XFxufSBjYXRjaCAoZSkge1xcbiAgICDlvpfliIYgPSAn5pqC5peg5b6XJztcXG59XFxu6L+95Ymn5pel5Y6GID0gRGF0YS5uZXdfZXAuZGVzYztcXG7mm7TmlrDov5vluqYgPSBEYXRhLm5ld19lcC50aXRsZTtcXG7lvbHniYflkI3np7AgPSBEYXRhLnRpdGxlO1xcbuesrOS6jOagh+mimCA9IERhdGEuc2hhcmVfc3ViX3RpdGxlO1xcbuWJp+mbhuWIl+ihqCA9IERhdGEuZXBpc29kZXM7XFxu55+t6K6vID0gXFxcIuKtkFxcXCIgKyDnsbvlnosgKyBcXFwi4q2QXFxcIiArIOesrOS6jOagh+mimCArICdcXFxcbicgKyDlnLDljLogKyAnLScgKyDlvpfliIYgKyAn5YiGXFxcXG4tJyArIOS4iuaYoOaXtumXtCArICctJztcXG4vLyDph43lrprkuYnkuoznuqfpobXpnaLmlbDmja5cXG5zZXRQYWdlVGl0bGUo5b2x54mH5ZCN56ewKTtcXG5zZXRQYWdlUGljVXJsKOWwgemdoik7XFxuLy8g5YmN572u5Y+C5pWw5ZKM6aKE5aSE55CGLS0tXFxuaW1nTGluayA9IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKTtcXG4vLyDlhajlsYBsYXp54oCU4oCU55u06ZO+K+aWreaPklxcbnZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICB2aWRlb1Bhcm1zID0gZmluZEl0ZW0oaW5wdXQpO1xcbiAgICBhaWQgPSB2aWRlb1Bhcm1zLmV4dHJhLmFpZDtcXG4gICAgYnZpZCA9IHZpZGVvUGFybXMuZXh0cmEuYnZpZDtcXG4gICAgY2lkID0gdmlkZW9QYXJtcy5leHRyYS5jaWQ7XFxuICAgIGJhZGdlID0gdmlkZW9QYXJtcy5leHRyYS5iYWRnZTtcXG4gICAgLy8g5o+Q5Lqk5Y6G5Y+y6K6w5b2VXFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnJlcG9ydFByb2Nlc3MoYWlkLCBjaWQpO1xcbiAgICBpZiAoZ2V0TXlWYXIoJ2F1dGhvcml0eScsICdub3JtYWwnKSA9PSAnU1ZJUCcpIHtcXG4gICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5iaWxpTGF6eShhaWQsIGNpZCwgMTE2KS5yZXBsYWNlKC87L2csIFxcXCLvvJvvvJtcXFwiKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChiYWRnZS5tYXRjaCgv5Lya5ZGYfOS7mOi0uS8pKSB7XFxuICAgICAgICAgICAgZXZhbChcXFwidmFyIGNvbmZpZyA9XFxcIiArIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvblxcXCIpKTtcXG4gICAgICAgICAgICBldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL2NhY2hlL1BhcnNlX0RuLmpzJywge30pKTtcXG4gICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmJpbGlMYXp5KGFpZCwgY2lkLCAxMTYpLnJlcGxhY2UoLzsvZywgXFxcIu+8m++8m1xcXCIpO1xcbiAgICAgICAgfVxcbiAgICB9XFxufSk7XFxudmFyIENvbG9yID0gXFxcIiMxOUI4OURcXFwiO1xcbnZhciDmr4/pobXpm4bmlbAgPSAzMDtcXG52YXIg5pCc57Si5qih5byPID0gJ+WIhue7hCc7XFxudmFyIOiwg+eUqOWQjeensCA9ICfnroDlvbEnO1xcbnB1dE15VmFyKCfmipjlj6AnLCAn5YWzJyk7XFxucHV0TXlWYXIoJ+aXpeWOhicsICflhbMnKTtcXG5wdXRNeVZhcignRGF0YScsIERhdGEpO1xcbnB1dE15VmFyKCdsYXp5JywgbGF6eSk7XFxuLy8g5riF6Zmk5Y+Y6YePXFxuYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgY2xlYXJNeVZhcign5YiG6ZuG6LW3Jyk7XFxuICAgIGNsZWFyTXlWYXIoJ+WIhumbhue7iCcpO1xcbiAgICBjbGVhck15VmFyKCfmipjlj6AnKTtcXG4gICAgY2xlYXJNeVZhcign5pel5Y6GJyk7XFxuICAgIGNsZWFyTXlWYXIoJ0RhdGEnKTtcXG4gICAgY2xlYXJNeVZhcignbGF6eScpO1xcbiAgICBjbGVhck15VmFyKCfliafpm4bliJfooagnKTtcXG59KSlcXG4vLyDorr7nva7liqjmgIHmnIDmlrDnq6DoioJcXG5zZXRMYXN0Q2hhcHRlclJ1bGUoJ2pzOicgKyAkLnRvU3RyaW5nKChNWV9VUkwpID0+IHtcXG4gICAgaHRtbCA9IGZldGNoKE1ZX1VSTCk7XFxuICAgIERhdGEgPSBKU09OLnBhcnNlKGh0bWwubWF0Y2goL1xcXCJtZWRpYUluZm9cXFwiW1xcXFxTXFxcXHNdKyg/PSxcXFwiaW5pdEVwTGlzdFxcXCIpLylbMF0ucmVwbGFjZSgnXFxcIm1lZGlhSW5mb1xcXCI6JywgJycpLnJlcGxhY2UoJ1xcXFx1MDAyRicsICcvJykpO1xcbiAgICDov73liafml6XljoYgPSBEYXRhLm5ld19lcC5kZXNjO1xcbiAgICDmm7TmlrDov5vluqYgPSBEYXRhLm5ld19lcC50aXRsZTtcXG4gICAg5pu05paw54q25oCBID0g6L+95Ymn5pel5Y6GLm1hdGNoKC/lroznu5N85pyf5b6FLykgPyDov73liafml6XljoYgOiAn5pu05paw6IezJyArICjmm7TmlrDov5vluqYubWF0Y2goL1tcXFxcdTRlMDAtXFxcXHU5ZmE1XS8pID8g5pu05paw6L+b5bqmIDogKCfnrKwnICsgKOabtOaWsOi/m+W6piA9PSAnJyA/IDAgOiDmm7TmlrDov5vluqYpKSArICfor50nKVxcbiAgICBzZXRSZXN1bHQo5pu05paw54q25oCBKTtcXG59LCBNWV9VUkwpKTtcXG4vLyDpobXpnaLlhoXlrrnmraPmloctLS1cXG4vLyDln7rmnKzkv6Hmga/mqKHlnZdcXG5kLnB1c2goe1xcbiAgICB0aXRsZTog55+t6K6vLFxcbiAgICBkZXNjOiDnroDku4sgPT0gJycgPyAn5pqC5peg566A5LuLJyA6IOeugOS7iy5zdWJzdHJpbmcoMCwgNDUpICsgJ+KAmOKAmOKAmeKAmeKApjxmb250IGNvbG9yPVxcXCIjMUMxQzFDXFxcIj7or6bmg4U8L2ZvbnQ+JyxcXG4gICAgaW1nOiDlsIHpnaIsXFxuICAgIHVybDogJCgpLnJ1bGUoKOeugOS7iykgPT4ge1xcbiAgICAgICAgcmVzID0ge307XFxuICAgICAgICB2YXIgZCA9IFtdO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+W9seeJh+eugOS7i++8micgKyAnXFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdCcgKyDnroDku4ssXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsb25nX3RleHQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIHJlcy5kYXRhID0gZDtcXG4gICAgICAgIHNldEhvbWVSZXN1bHQocmVzKTtcXG4gICAgfSwg566A5LuLKSxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJyxcXG59KTtcXG4vLyDmm7TmlrDml6XljobmqKHlnZdcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+aXpeWOhicsXFxuICAgIGltZzogaW1nTGluay7ml6XljoYsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgo6L+95Ymn5pel5Y6GLCDmm7TmlrDov5vluqYpID0+IHtcXG4gICAgICAgIGlmIChnZXRNeVZhcign5pel5Y6GJywgJ+WFsycpID09ICflvIAnKSB7XFxuICAgICAgICAgICAgZGVsZXRlSXRlbSgn6L+95Ymn5pel5Y6GJyk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+aXpeWOhicsICflhbMnKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgYWRkSXRlbUFmdGVyKCfmmL7npLrmqKHlvI8nLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiDov73liafml6XljoYubWF0Y2goL+WujOe7k3zmnJ/lvoUvKSA/IOi/veWJp+aXpeWOhiA6IOi/veWJp+aXpeWOhiArICc8YnI+PGZvbnQgY29sb3I9XFxcInJlZFxcXCI+5pu05paw6IezJyArICjmm7TmlrDov5vluqYubWF0Y2goL1tcXFxcdTRlMDAtXFxcXHU5ZmE1XS8pID8g5pu05paw6L+b5bqmIDogKCfnrKwnICsgKOabtOaWsOi/m+W6piA9PSAnJyA/IDAgOiDmm7TmlrDov5vluqYpICsgJ+ivnScpKSArICc8L2ZvbnQ+JyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICfov73liafml6XljoYnXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBwdXRNeVZhcign5pel5Y6GJywgJ+W8gCcpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNouaXpeWOhuS4ujonICsgZ2V0TXlWYXIoJ+aXpeWOhicsICflvIAnKVxcbiAgICB9LCDov73liafml6XljoYsIOabtOaWsOi/m+W6piksXFxuICAgIGNvbF90eXBlOiAnaWNvbl81J1xcbn0pO1xcbi8vIOiuoumYheaooeWdl1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn6K6i6ZiFJyxcXG4gICAgaW1nOiBpbWdMaW5rLuiuoumYhSxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIHNlbGVjdGlvbkxpc3QgPSBbJ+iuoumYhScsICflj5bmtojorqLpmIUnXTtcXG4gICAgICAgIHJldHVybiAkKHNlbGVjdGlvbkxpc3QsIDIpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgc2Vhc29uX2lkID0gSlNPTi5wYXJzZShnZXRNeVZhcignRGF0YScpKS5zZWFzb25faWQ7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09ICforqLpmIUnKSB7XFxuICAgICAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnN1YnNjcmliZUZpbG0oc2Vhc29uX2lkKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5jYW5jZWxTdWJzY3JpYmVGaWxtKHNlYXNvbl9pZCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgcmVzO1xcbiAgICAgICAgfSk7XFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fNSdcXG59KTtcXG4vLyDor4TorrrmqKHlnZdcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+ivhOiuuicsXFxuICAgIGltZzogaW1nTGluay7mn6XnnIvor4TorrosXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eScpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHZhciBkID0gW107XFxuICAgICAgICAgICAgTGlzdCA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ0RhdGEnKSkuZXBpc29kZXM7XFxuICAgICAgICAgICAgTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uc2hhcmVfY29weSArICc8Zm9udCBjb2xvcj1cXFwiIzMzY2NjY1xcXCI+XFx04p6uPC9mb250PicsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uY292ZXIgKyAnQFJlZmVyZXI9JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJpZFxcXCI6IGl0ZW0uYWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ0eXBlXFxcIjogMVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICB9KTtcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiAnaWNvbl81J1xcbn0pO1xcblxcbi8vIOeyvuW9qee7p+e7reaooeWdl1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5ZGo6L65JyxcXG4gICAgaW1nOiBpbWdMaW5rLuWRqOi+uSxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIERhdGEgPSBKU09OLnBhcnNlKGdldE15VmFyKCdEYXRhJykpO1xcbiAgICAgICAgLy8g5pyJ5Lqb5rKh5pyJ55u05o6l5Y675o6J5oeS5b6X5aSE55CGflxcbiAgICAgICAgaWYgKERhdGEuc2VjdGlvbikge1xcbiAgICAgICAgICAgIOWRqOi+ueaVsOe7hCA9IFtcXFwi8J+Pt++4j+ebuOWFs+ezu+WIl1xcXCIsIFxcXCLwn6SjUFYm6Iqx57WuXFxcIiwgXFxcIvCfjYnnq5blsY/kuZ/nsr7lvalcXFwiLCBcXFwi8J+UpeeyvuW9qeS6jOWIm1xcXCJdO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICDlkajovrnmlbDnu4QgPSBbXFxcIvCfj7fvuI/nm7jlhbPns7vliJdcXFwiXTtcXG4gICAgICAgIH1cXG4gICAgICAgIC8vIOWRqOi+ueaVsOe7hCA9IFtcXFwi8J+Pt++4j+ebuOWFs+ezu+WIl1xcXCIsIFxcXCLwn6SjUFYm6Iqx57WuXFxcIiwgXFxcIuerluWxj+S5n+eyvuW9qVxcXCIsIFxcXCLnsr7lvankuozliJtcXFwiXTtcXG4gICAgICAgIHJldHVybiAkKOWRqOi+ueaVsOe7hCwgMSwgJ+GDpueyvuW9qee7p+e7rScpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgRGF0YSA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ0RhdGEnKSk7XFxuICAgICAgICAgICAgbGF6eSA9IGdldE15VmFyKCdsYXp5Jyk7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09PSAn8J+Pt++4j+ebuOWFs+ezu+WIlycpIHtcXG4gICAgICAgICAgICAgICAg57O75YiX5ZCN56ewID0gRGF0YS5zZWFzb25fdGl0bGVcXG4gICAgICAgICAgICAgICAg57O75YiX5pWw5o2uID0gRGF0YS5zZWFzb25zO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgpLnJ1bGUoKOezu+WIl+aVsOaNrikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZCA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfwn4+377iP55u45YWz57O75YiXJyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAo57O75YiX5pWw5o2uID09IFtdIHx8IOezu+WIl+aVsOaNriA9PSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7irZDor6XlvbHniYfmsqHmnInnm7jlhbPns7vliJflk6Z+4q2QPC9mb250PjwvYmlnPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3RvYXN0Oi8v6YO95rKh5pyJ77yM77yM5L2g54K55ZWl5ZGAficsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfmlazor7fmnJ/lvoV+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAg57O75YiX5pWw5o2uLmZvckVhY2gobGlzdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3Quc2Vhc29uX3RpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IChsaXN0Lmhvcml6b250YWxfY292ZXJfMTYxMCA9PSAnJyA/IChsaXN0Lmhvcml6b250YWxfY292ZXJfMTY5ID09ICcnID8gbGlzdC5jb3ZlciA6IGxpc3QuaG9yaXpvbnRhbF9jb3Zlcl8xNjkpIDogbGlzdC5ob3Jpem9udGFsX2NvdmVyXzE2MTApICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9maWxtZXJqaSNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBsaXN0Lm5ld19lcC5pbmRleF9zaG93LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImVwX2lkXFxcIjogbGlzdC5uZXdfZXAuaWRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRIb21lUmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9LCDns7vliJfmlbDmja4pXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ/CfpKNQViboirHnta4nKSB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICBQVuWSjOiKsee1ruaVsOaNriA9IERhdGEuc2VjdGlvblswXS5lcGlzb2RlcztcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCkucnVsZSgoUFblkozoirHnta7mlbDmja4sIGxhenkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfwn6SjUFYm6Iqx57WuJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFBW5ZKM6Iqx57Wu5pWw5o2uID09IFtdIHx8IFBW5ZKM6Iqx57Wu5pWw5o2uID09ICcnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiaWc+PGZvbnQgY29sb3I9XFxcInJlZFxcXCI+4q2Q6K+l5b2x54mHL+inhumikeayoeacieebuOWFs1BW5ZKM6Iqx57Wu5ZOmfuKtkDwvZm9udD48L2JpZz4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAndG9hc3Q6Ly/pg73msqHmnInvvIzvvIzkvaDngrnllaXlkYB+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfmlazor7fmnJ/lvoV+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIFBW5ZKM6Iqx57Wu5pWw5o2uLmZvckVhY2gobGlzdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogbGlzdC5zdWJ0aXRsZSArICdcXFxcbicgKyBsaXN0LmxvbmdfdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZpZDogbGlzdC5idmlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZDogbGlzdC5jaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG9tZVJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIFBW5ZKM6Iqx57Wu5pWw5o2uLCBsYXp5KVxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5rKh5pyJ5pWw5o2u5ZOmfidcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfwn42J56uW5bGP5Lmf57K+5b2pJykge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAg56uW5bGP5Lmf57K+5b2p5pWw5o2uID0gRGF0YS5zZWN0aW9uWzFdLmVwaXNvZGVzO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoKS5ydWxlKCjnq5blsY/kuZ/nsr7lvanmlbDmja4sIGxhenkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfwn42J56uW5bGP5Lmf57K+5b2pJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKOerluWxj+S5n+eyvuW9qeaVsOaNriA9PSBbXSB8fCDnq5blsY/kuZ/nsr7lvanmlbDmja4gPT0gJycpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7irZDor6XlvbHniYcv6KeG6aKR5rKh5pyJ55u45YWz56uW5bGP55+t6KeG6aKR5ZOmfuKtkDwvZm9udD48L2JpZz4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAndG9hc3Q6Ly/pg73msqHmnInvvIzvvIzkvaDngrnllaXlkYB+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfmlazor7fmnJ/lvoV+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIOerluWxj+S5n+eyvuW9qeaVsOaNri5mb3JFYWNoKGxpc3QgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogbGlzdC5saW5rICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3Quc3VidGl0bGUgKyAnXFxcXG4nICsgbGlzdC5sb25nX3RpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGxpc3QubGluayxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaWQ6IGxpc3QuYWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2aWQ6IGxpc3QuYnZpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ6IGxpc3QuY2lkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlOiBsaXN0LmJhZGdlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEhvbWVSZXN1bHQoZCk7XFxuICAgICAgICAgICAgICAgICAgICB9LCDnq5blsY/kuZ/nsr7lvanmlbDmja4sIGxhenkpXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/msqHmnInmlbDmja7lk6Z+J1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ/CflKXnsr7lvankuozliJsnKSB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICDnsr7lvankuozliJvmlbDmja4gPSBEYXRhLnNlY3Rpb25bMl0uZXBpc29kZXM7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgpLnJ1bGUoKOeyvuW9qeS6jOWIm+aVsOaNriwgbGF6eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ/CflKXnsr7lvankuozliJsnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAo57K+5b2p5LqM5Yib5pWw5o2uID09IFtdIHx8IOeyvuW9qeS6jOWIm+aVsOaNriA9PSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8YmlnPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuKtkOivpeW9seeJhy/op4bpopHmsqHmnInkuozliJvkvZzlk4Hlk6Z+4q2QPC9mb250PjwvYmlnPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd0b2FzdDovL+mDveayoeacie+8jO+8jOS9oOeCueWVpeWRgH4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+aVrOivt+acn+W+hX4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAg57K+5b2p5LqM5Yib5pWw5o2uLmZvckVhY2gobGlzdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOmSiOWvuemDqOWIhuWPguaVsOe8uuWkseeahOaDheWGteWmguWHoeS6uuS/ruS7meS8oOWGmeeahO+8jO+8jFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdC5haWQgPT0gMCB8fCBsaXN0LmNpZCA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWVkZW9EYXRhID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3P2FpZD1cXFwiICsgbGlzdC5saW5rLnNwbGl0KCdhdicpWzFdLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcXFwiR0VUXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmRhdGE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaWQgPSB2aWVkZW9EYXRhLmFpZDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2aWQgPSB2aWVkZW9EYXRhLmJ2aWQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQgPSB2aWVkZW9EYXRhLmNpZDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpZCA9IGxpc3QuYWlkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnZpZCA9IGxpc3QuYnZpZDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZCA9IGxpc3QuY2lkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogbGlzdC5zdWJ0aXRsZSArICdcXFxcbicgKyBsaXN0LmxvbmdfdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogYWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ2aWQ6IGJ2aWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkOiBjaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SG9tZVJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIOeyvuW9qeS6jOWIm+aVsOaNriwgbGF6eSlcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ayoeacieaVsOaNruWTpn4nXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ato+WcqOi/m+WFpVxcXCIgKyBpbnB1dCArIFxcXCLnlYzpnaIuLi5cXFwiO1xcbiAgICAgICAgfSlcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiBcXFwiaWNvbl81XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiAn57K+5b2p57un57utJ1xcbiAgICB9XFxufSk7XFxuLy8g5pi+56S65qih5byP5pu05pS55qih5Z2XXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGdldEl0ZW0oJ+aooeW8jycsICflj4zovrknKSxcXG4gICAgaW1nOiBnZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JykgPT0gJ+WIl+ihqCcgPyBpbWdMaW5rLuWIl+ihqCA6IGltZ0xpbmsu5Y+M6L65LFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAg5pi+56S655qE5Ymn6ZuG5YiX6KGoID0gSlNPTi5wYXJzZShnZXRNeVZhcign5pi+56S655qE5Ymn6ZuG5YiX6KGoJykpO1xcbiAgICAgICAgaWYgKGdldEl0ZW0oJ+aooeW8jycsICflj4zovrknKSA9PSAn5YiX6KGoJykge1xcbiAgICAgICAgICAgIOaYvuekuueahOWJp+mbhuWIl+ihqC5mb3JFYWNoKGVsID0+IHtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbShlbC5saW5rLCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInLFxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBzZXRJdGVtKCfmqKHlvI8nLCAn5Y+M6L65JylcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAg5pi+56S655qE5Ymn6ZuG5YiX6KGoLmZvckVhY2goZWwgPT4ge1xcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGVsLmxpbmssIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHNldEl0ZW0oJ+aooeW8jycsICfliJfooagnKVxcbiAgICAgICAgfVxcbiAgICAgICAgaW1nTGluayA9IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKTtcXG4gICAgICAgIHVwZGF0ZUl0ZW0oJ+aYvuekuuaooeW8jycsIHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpLFxcbiAgICAgICAgICAgIGltZzogZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpID09ICfliJfooagnID8gaW1nTGluay7liJfooaggOiBpbWdMaW5rLuWPjOi+uSxcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNouaooeW8j+S4ujonICsgZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpXFxuICAgIH0pLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fNScsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogJ+aYvuekuuaooeW8jydcXG4gICAgfVxcbn0sIHtcXG4gICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJyxcXG59KTtcXG4vLyDpgInmj5LmqKHlnZfigJTigJTlsYDpg6jliLfmlrDniYhcXG7mnaXmupAgPSAnYmwnO1xcbnB1dE15VmFyKCfnroDmj5InLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgbGV0IHRpdGxlQXJyID0gW11cXG4gICAgc2V0RmlsZSA9IHJlYWRGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL0R1YW5OaWFuL015UGFyc2UuanNvbicpO1xcbiAgICB0cnkge1xcbiAgICAgICAgZXZhbCgnanNvbj0nICsgc2V0RmlsZSk7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZygnSnNvbuino+aekOWPkeeUn+S6humUmeivrzonICsgZS5tZXNzYWdlKTtcXG4gICAgfVxcbiAgICB0aXRsZUFyciA9IGpzb24udGl0bGU7XFxuICAgIGxldCBiYXJyeTEgPSBbJ/Cfk50nXTtcXG4gICAgbGV0IGJhcnJ5MiA9IFsn8J+UjSddO1xcbiAgICB0aXRsZUFyciA9IGJhcnJ5Mi5jb25jYXQodGl0bGVBcnIpO1xcbiAgICB0aXRsZUFyciA9IGJhcnJ5MS5jb25jYXQodGl0bGVBcnIpO1xcbiAgICBldmFsKCdvcD1qc29uLnNldHRpbmdzLicgKyDmnaXmupApO1xcbiAgICB0aXRsZUFyciA9IHRpdGxlQXJyLm1hcCgoaXQpID0+IHtcXG4gICAgICAgIHJldHVybiBpdCA9PT0gb3AgPyAn8J+RiScgKyBpdCA6IGl0O1xcbiAgICB9KTtcXG4gICAgcHV0TXlWYXIoJ+ino+aekOaVsOe7hCcsIHRpdGxlQXJyKTtcXG4gICAgcHV0TXlWYXIoJ3NldEZpbGUnLCBzZXRGaWxlKTtcXG59KSlcXG5ldmFsKGdldE15VmFyKCfnroDmj5InKSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfop6PmnpDvvJrwn5SYPGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyBvcCArICc8L2ZvbnQ+XFxcXHRcXFxcdOmhteegge+8mjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgKChnZXRNeVZhcign5YiG6ZuG6LW3JywgJ+mmlumhtScpID09ICfpppbpobUnKSA/ICfpppbpobUnIDogKGdldE15VmFyKCfliIbpm4botbcnKSArICctJyArIGdldE15VmFyKCfliIbpm4bnu4gnKSkpICsgJzwvZm9udD4nLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGpzb24sIOadpea6kCwgQ29sb3IsIG9wLCDlvbHniYflkI3np7AsIOaQnOe0ouaooeW8jywg6LCD55So5ZCN56ewKSA9PiB7XFxuICAgICAgICBldmFsKGdldE15VmFyKCfnroDmj5InKSk7XFxuICAgICAgICByZXR1cm4gJChldmFsKGdldE15VmFyKCfop6PmnpDmlbDnu4QnKSksIDMpLnNlbGVjdCgoanNvbiwg5p2l5rqQLCBDb2xvciwgb3AsIOW9seeJh+WQjeensCwg5pCc57Si5qih5byPLCDosIPnlKjlkI3np7ApID0+IHtcXG4gICAgICAgICAgICBzZXRGaWxlID0gZ2V0TXlWYXIoJ3NldEZpbGUnKTtcXG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL/CfkYkvZywgJycpO1xcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gJ/Cfk50nKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL1JvdXRlP3J1bGU9TXlGaWVsZOG0sOKBvyZ0eXBlPee8lui+kSNub0hpc3RvcnkjXFxcIjtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAn8J+UjScpIHtcXG4gICAgICAgICAgICAgICAgaWYgKOaQnOe0ouaooeW8jyA9PSAn5YiG57uEJykge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyDlvbHniYflkI3np7AgKyBcXFwiJmdyb3VwPVxcXCIgKyDosIPnlKjlkI3np7A7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIOW9seeJh+WQjeensCArIFxcXCImcnVsZT1cXFwiICsg6LCD55So5ZCN56ewO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIC8vIOWOn+WFiOeahOmFjee9rlxcbiAgICAgICAgICAgIG9yaWdpblNldHRpbmdzID0gSlNPTi5zdHJpbmdpZnkoanNvbi5zZXR0aW5ncyk7XFxuICAgICAgICAgICAgLy8g5L+u5pS56YWN572uXFxuICAgICAgICAgICAgZXZhbCgnanNvbi5zZXR0aW5ncy4nICsg5p2l5rqQICsgJz1pbnB1dDsnKTtcXG4gICAgICAgICAgICBzZXRGaWxlID0gc2V0RmlsZS5yZXBsYWNlKG9yaWdpblNldHRpbmdzLCBKU09OLnN0cmluZ2lmeShqc29uLnNldHRpbmdzKSk7XFxuICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvRHVhbk5pYW4vTXlQYXJzZS5qc29uJywgc2V0RmlsZSk7XFxuICAgICAgICAgICAgLy8g5Yi35paw5YWD57SgXFxuICAgICAgICAgICAgZXZhbChnZXRNeVZhcign566A5o+SJykpO1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ29wJywge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ino+aekO+8mvCflJg8Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIG9wICsgJzwvZm9udD5cXFxcdFxcXFx06aG156CB77yaPGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyAoKGdldE15VmFyKCfliIbpm4botbcnLCAn6aaW6aG1JykgPT0gJ+mmlumhtScpID8gJ+mmlumhtScgOiAoZ2V0TXlWYXIoJ+WIhumbhui1tycpICsgJy0nICsgZ2V0TXlWYXIoJ+WIhumbhue7iCcpKSkgKyAnPC9mb250PicsXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouino+aekOWPo+S4ujpcXFwiICsgaW5wdXQ7XFxuICAgICAgICB9LCBqc29uLCDmnaXmupAsIENvbG9yLCBvcCwg5b2x54mH5ZCN56ewLCDmkJzntKLmqKHlvI8sIOiwg+eUqOWQjeensClcXG4gICAgfSwganNvbiwg5p2l5rqQLCBDb2xvciwgb3AsIOW9seeJh+WQjeensCwg5pCc57Si5qih5byPLCDosIPnlKjlkI3np7ApLFxcbiAgICBpbWc6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMjAuc3ZnJyxcXG4gICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6ICdvcCdcXG4gICAgfVxcbn0pO1xcbi8vIOa7muWKqOWJp+mbhuadoeagj1xcbuWJp+mbhumVv+W6piA9IOWJp+mbhuWIl+ihqC5sZW5ndGg7XFxuaWYgKOWJp+mbhumVv+W6piA+IOavj+mhtembhuaVsCkge1xcbiAgICBwdXRNeVZhcign5Yi35paw6YCJ6ZuGJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBwdXRNeVZhcign5YiG6ZuG6LW3Jywgc3RhcnQpO1xcbiAgICAgICAgcHV0TXlWYXIoJ+WIhumbhue7iCcsIGVuZCk7XFxuICAgICAgICBldmFsKGdldE15VmFyKCfnroDmj5InKSk7XFxuICAgICAgICB1cGRhdGVJdGVtKCdvcCcsIHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ino+aekO+8mvCflJg8Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIG9wICsgJzwvZm9udD5cXFxcdFxcXFx06aG156CB77yaPGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyAoKGdldE15VmFyKCfliIbpm4botbcnLCAn6aaW6aG1JykgPT0gJ+mmlumhtScpID8gJ+mmlumhtScgOiAoZ2V0TXlWYXIoJ+WIhumbhui1tycpICsgJy0nICsgZ2V0TXlWYXIoJ+WIhumbhue7iCcpKSkgKyAnPC9mb250PicsXFxuICAgICAgICB9KVxcbiAgICAgICAgLy8g5Yig6ZmkXFxuICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaggPSBKU09OLnBhcnNlKGdldE15VmFyKCfmmL7npLrnmoTliafpm4bliJfooagnKSk7XFxuICAgICAgICDmmL7npLrnmoTliafpm4bliJfooaguZm9yRWFjaChlbCA9PiB7XFxuICAgICAgICAgICAgZGVsZXRlSXRlbShlbC5saW5rKTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgLy8g5re75YqgXFxuICAgICAgICBsYXp5ID0gZ2V0TXlWYXIoJ2xhenknKTtcXG4gICAgICAgIOWJp+mbhuWIl+ihqCA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ+WJp+mbhuWIl+ihqCcpKTtcXG4gICAgICAgIOaYvuekuueahOWJp+mbhuWIl+ihqCA9IOWJp+mbhuWIl+ihqC5zbGljZShzdGFydCAtIDEsIGVuZCk7XFxuICAgICAgICBuZXdBcnJheSA9IFtdO1xcbiAgICAgICAgaW5kZXggPSAxO1xcbiAgICAgICAg5pi+56S655qE5Ymn6ZuG5YiX6KGoLmZvckVhY2gobGlzdCA9PiB7XFxuICAgICAgICAgICAgaWYgKGdldEl0ZW0oJ+aooeW8jycsICflj4zovrknKSA9PSAn5YiX6KGoJykge1xcbiAgICAgICAgICAgICAgICBuZXdBcnJheS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LmxvbmdfdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogbGlzdC5saW5rICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3QudGl0bGUubWF0Y2goL1swLTldLykgPyAobGlzdC5iYWRnZSArICfnrKwnICsgbGlzdC50aXRsZSArICfor50nKSA6IGxpc3QudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnZpZDogbGlzdC5idmlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpZDogbGlzdC5jaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFkZ2U6IGxpc3QuYmFkZ2VcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgbmV3QXJyYXkucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5sb25nX3RpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGxpc3QubGluayArIGxhenksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBsaXN0LnRpdGxlLm1hdGNoKC9bMC05XS8pID8gKGxpc3QuYmFkZ2UgKyAn56ysJyArIGxpc3QudGl0bGUgKyAn6K+dJykgOiBsaXN0LnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGxpc3QubGluayxcXG4gICAgICAgICAgICAgICAgICAgICAgICBhaWQ6IGxpc3QuYWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ2aWQ6IGxpc3QuYnZpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjaWQ6IGxpc3QuY2lkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhZGdlOiBsaXN0LmJhZGdlXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpbmRleCArPSAxO1xcbiAgICAgICAgfSk7XFxuICAgICAgICBhZGRJdGVtQWZ0ZXIoZ2V0TXlWYXIoJ+acq+mhtScpLCBuZXdBcnJheSk7XFxuICAgICAgICBwdXRNeVZhcign5pi+56S655qE5Ymn6ZuG5YiX6KGoJywg5pi+56S655qE5Ymn6ZuG5YiX6KGoKTtcXG4gICAgfSkpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgdGl0bGU6ICfiiLcnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogJ+WNoOS9jeespicsXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIHB1dE15VmFyKCfliIbpm4botbcnLCAxKTtcXG4gICAgcHV0TXlWYXIoJ+WIhumbhue7iCcsIOavj+mhtembhuaVsCk7XFxuICAgIHB1dE15VmFyKCfliafpm4bliJfooagnLCDliafpm4bliJfooagpO1xcbiAgICDmgLvpobXmlbAgPSBNYXRoLmNlaWwo5Ymn6ZuG6ZW/5bqmIC8g5q+P6aG16ZuG5pWwKTtcXG4gICAgc3RhcnQgPSAxO1xcbiAgICBlbmQgPSDmr4/pobXpm4bmlbA7XFxuICAgIGZvciAobGV0IHBhZ2UgPSAxOyBwYWdlIDw9IOaAu+mhteaVsDsgcGFnZSsrKSB7XFxuICAgICAgICBpZiAoZW5kID4g5Ymn6ZuG6ZW/5bqmKSB7XFxuICAgICAgICAgICAgZW5kID0g5Ymn6ZuG6ZW/5bqmO1xcbiAgICAgICAgfVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc3RhcnQgKyAnLScgKyBlbmQsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKHN0YXJ0LCBlbmQsIENvbG9yLCDmnaXmupApID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChnZXRNeVZhcign5Yi35paw6YCJ6ZuGJykpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgIH0sIHN0YXJ0LCBlbmQsIENvbG9yLCDmnaXmupApLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IHN0YXJ0ICsgJy0nICsgZW5kXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICBpZiAoZW5kIDwg5Ymn6ZuG6ZW/5bqmKSB7XFxuICAgICAgICAgICAgc3RhcnQgKz0g5q+P6aG16ZuG5pWwO1xcbiAgICAgICAgICAgIGVuZCArPSDmr4/pobXpm4bmlbA7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLy8g6K6w5b2V5pyr6aG155qEaWRcXG4gICAgcHV0TXlWYXIoJ+acq+mhtScsIHN0YXJ0ICsgJy0nICsgZW5kKTtcXG59IGVsc2Uge1xcbiAgICBwdXRNeVZhcign5YiG6ZuG6LW3JywgMSk7XFxuICAgIHB1dE15VmFyKCfliIbpm4bnu4gnLCDliafpm4bplb/luqYpO1xcbn1cXG4vLyDlsZXnpLrliafpm4Y6XFxu5pi+56S655qE5Ymn6ZuG5YiX6KGoID0g5Ymn6ZuG5YiX6KGoLnNsaWNlKDAsIGdldE15VmFyKCfliIbpm4bnu4gnKSk7XFxucHV0TXlWYXIoJ+aYvuekuueahOWJp+mbhuWIl+ihqCcsIOaYvuekuueahOWJp+mbhuWIl+ihqCk7XFxuaW5kZXggPSAxO1xcbuaYvuekuueahOWJp+mbhuWIl+ihqC5mb3JFYWNoKGxpc3QgPT4ge1xcbiAgICBpZiAoZ2V0SXRlbSgn5qih5byPJywgJ+WPjOi+uScpID09ICfliJfooagnKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBsaXN0LmxvbmdfdGl0bGUsXFxuICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcbiAgICAgICAgICAgIGRlc2M6IGxpc3QudGl0bGUubWF0Y2goL1swLTldLykgPyAobGlzdC5iYWRnZSArICfnrKwnICsgbGlzdC50aXRsZSArICfor50nKSA6IGxpc3QudGl0bGUsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcbiAgICAgICAgICAgICAgICBhaWQ6IGxpc3QuYWlkLFxcbiAgICAgICAgICAgICAgICBidmlkOiBsaXN0LmJ2aWQsXFxuICAgICAgICAgICAgICAgIGNpZDogbGlzdC5jaWQsXFxuICAgICAgICAgICAgICAgIGJhZGdlOiBsaXN0LmJhZGdlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBsaXN0LmxvbmdfdGl0bGUsXFxuICAgICAgICAgICAgaW1nOiBsaXN0LmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBsaXN0LmxpbmsgKyBsYXp5LFxcbiAgICAgICAgICAgIGRlc2M6IGxpc3QudGl0bGUubWF0Y2goL1swLTldLykgPyAobGlzdC5iYWRnZSArICfnrKwnICsgbGlzdC50aXRsZSArICfor50nKSA6IGxpc3QudGl0bGUsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogbGlzdC5saW5rLFxcbiAgICAgICAgICAgICAgICBhaWQ6IGxpc3QuYWlkLFxcbiAgICAgICAgICAgICAgICBidmlkOiBsaXN0LmJ2aWQsXFxuICAgICAgICAgICAgICAgIGNpZDogbGlzdC5jaWQsXFxuICAgICAgICAgICAgICAgIGJhZGdlOiBsaXN0LmJhZGdlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgaW5kZXggKz0gMTtcXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ1cOS4u+mhtVwiLFwicGF0aFwiOlwidXBIb21lXCIsXCJydWxlXCI6XCJqczpcXG5cXG52YXIgZCA9IFtdO1xcblxcbi8vIOmihOWkhOeQhlxcblxcbnB1dE15VmFyKCd1cEluZm8nLCAn5YWzJyk7XFxuXFxuc2V0UGFnZVRpdGxlKE1ZX1BBUkFNUy50aXRsZSk7XFxuXFxuaW1nTGluaz1zdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyk7XFxuXFxuLy8g6Ziy5q2i5Y+N54is6Jmr77yM5LuO5LiK5LiA5Liq6aG16Z2i5Lyg6YCS5pWw5o2u4oCU4oCU5Y+N54is6Jmr5Lil6YeNXFxuXFxudXBNaWQgPSBNWV9QQVJBTVMubWlkICsgXFxcIlxcXCI7XFxuXFxudXBOYW1lID0gTVlfUEFSQU1TLnRpdGxlO1xcblxcbnVwRmFjZSA9IE1ZX1BBUkFNUy5mYWNlO1xcblxcbnJlbGF0aW9uPSQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnVzZXJNYXBwaW5nKHVwTWlkKTtcXG5cXG4vLyDlpLTlg4/moI9cXG5cXG5kLnB1c2goe1xcblxcbsKgIMKgIHRpdGxlOiAnPGZvbnQgY29sb3I9XFxcImJsdWVcXFwiPicgKyB1cE5hbWUgKyAnPC9mb250PicsXFxuXFxuwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh1cE1pZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIGlmIChnZXRNeVZhcigndXBJbmZvJywgJ+WFsycpID09ICflvIAnKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZGVsZXRlSXRlbSgndXBJbmZvJyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgcHV0TXlWYXIoJ3VwSW5mbycsICflhbMnKTtcXG5cXG7CoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIC8vIOeUqOaIt+WfuuacrOS/oeaBr+KAlOKAlOWboOS4uuebtOaOpeS9v+eUqOaOpeWPo+e7j+W4uOinpuWPkeWPjeeIrOiZq+acuuWItuaVheS9v+eUqOe9kemhtea6kOeggeiOt+WPluS/oeaBr++8jOiAjOS4lOWPquiDvWZldGNoQ29kZUJ5V2ViVmlld1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGxldCB1ID0gXFxcImh0dHBzOi8vbS5iaWxpYmlsaS5jb20vc3BhY2UvXFxcIiArIHVwTWlkO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGh0bWwgPSBmZXRjaENvZGVCeVdlYlZpZXcodSwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJsb2NrUnVsZXM6IFsnLnBuZycsICcuanBnJ10sXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGltZW91dDogNTAwMFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGluZm9DYXJkID0gcGRmYShodG1sLCAnLmluZm8tY2FyZCYmdHInKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCAvLyDlnoPlnL7lrprkvY3vvIzmiJHnm7TmjqXljLnphY3lpITnkIblrZfnrKbkuLLlvpfkuoZ+XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW5mbz0nJztcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCAvLyDmjpLpmaR1cOWwgemdouaVsOaNrlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGZvciAobGV0IGkgPSAxOyBpIDwgaW5mb0NhcmQubGVuZ3RoOyBpKyspIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoaT09aW5mb0NhcmQubGVuZ3RoLTEpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkYXRhPWluZm9DYXJkW2ldLnJlcGxhY2UoJzx0cj5cXFxcbiA8dGQ+JywnJykucmVwbGFjZSgnPC90ZD5cXFxcbjwvdHI+JywnJykucmVwbGFjZSgnPC90ZD4gXFxcXG4gPHRkPicsJzonKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1lbHNle1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRhdGE9aW5mb0NhcmRbaV0ucmVwbGFjZSgnPHRyPlxcXFxuIDx0ZD4nLCcnKS5yZXBsYWNlKCc8L3RkPlxcXFxuPC90cj4nLCcnKS5yZXBsYWNlKCc8L3RkPiBcXFxcbiA8dGQ+JywnOicpKydcXFxcbidcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW5mbys9ZGF0YTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgYWRkSXRlbUFmdGVyKCdjdXJyZW50VXAnLCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGluZm8sXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsb25nX3RleHQnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6ICd1cEluZm8nXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCd1cEluZm8nLCAn5byAJyk7XFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIHJldHVybiAndG9hc3Q6Ly/kv6Hmga/mipjlj6A6JyArIGdldE15VmFyKCd1cEluZm8nLCAn5byAJylcXG5cXG7CoCDCoCB9LCB1cE1pZCksXFxuXFxuwqAgwqAgaW1nOiB1cEZhY2UgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuXFxuwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCBpZDogJ2N1cnJlbnRVcCdcXG5cXG7CoCDCoCB9XFxuXFxufSx7XFxuXFxuwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcblxcbn0pO1xcblxcbi8vIOWFrOWRilxcblxcbm5vdGljZVRleHQgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9ub3RpY2U/bWlkPScgKyB1cE1pZCArICcmanNvbnA9anNvbnAnLCB7XFxuXFxuwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCJcXG5cXG7CoCDCoCB9XFxuXFxufSkpLmRhdGE7XFxuXFxuaWYgKG5vdGljZVRleHQgIT0gJycpIHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiAn5YWs5ZGKJyxcXG5cXG7CoCDCoCDCoCDCoCB1cmw6ICQoKS5ydWxlKChub3RpY2VUZXh0KSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdmFyIGQgPSBbXTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5YWs5ZGK77yaJyArICdcXFxcblxcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHRcXFxcdFxcXFx0JyArIG5vdGljZVRleHQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsb25nX3RleHQnXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgc2V0SG9tZVJlc3VsdChkKTtcXG5cXG7CoCDCoCDCoCDCoCB9LCBub3RpY2VUZXh0KSxcXG5cXG7CoCDCoCDCoCDCoCBkZXNjOiBub3RpY2VUZXh0ID09ICcnID8gJ+aaguaXoOWFrOWRiicgOiBub3RpY2VUZXh0LFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiAndGV4dF8xJyxcXG5cXG7CoCDCoCB9KTtcXG5cXG59XFxuXFxuZC5wdXNoKHtcXG5cXG7CoCDCoCBjb2xfdHlwZTogJ2xpbmUnXFxuXFxufSwge1xcblxcbsKgIMKgIHRpdGxlOiByZWxhdGlvbixcXG5cXG7CoCDCoCBpbWc6IHJlbGF0aW9uPT0n5pyq5YWz5rOoJz9pbWdMaW5rLua3u+WKoOWFs+azqDppbWdMaW5rLuW3suWFs+azqCxcXG5cXG7CoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgodXBNaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuY2hhbmdlVXNlclJlbGF0aW9uKHVwTWlkLCAxMSlcXG5cXG7CoCDCoCB9LCB1cE1pZCksXFxuXFxuwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIGV4dHJhOntcXG5cXG7CoCDCoCDCoCDCoCBpZDoncmVsYXRpb24nXFxuXFxuwqAgwqAgfVxcblxcbn0sIHtcXG5cXG7CoCDCoCB0aXRsZTogJ+WKqOaAgScsXFxuXFxuwqAgwqAgaW1nOiBpbWdMaW5rLuWKqOaAgSxcXG5cXG7CoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgodXBNaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eT9wPWZ5cGFnZScpLnJ1bGUoKHVwTWlkKT0+e1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGxldCBkPVtdO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGxhdGVuZXdzPSQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldER5bmFtaWNEYXRhKCd1cFNwYWNlJyx1cE1pZCk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXZhbCgkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5zaG93RHluYW1pY0RhdGEoKSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgc2V0UmVzdWx0KGQpO1xcblxcbsKgIMKgIMKgIMKgIH0sdXBNaWQpXFxuXFxuwqAgwqAgfSwgdXBNaWQpLFxcblxcbsKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG59LHtcXG5cXG7CoCDCoCB0aXRsZTogJ+S4k+agjycsXFxuXFxuwqAgwqAgaW1nOiBpbWdMaW5rLuS4k+agjyxcXG5cXG7CoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvYWN0aWNsZUxpc3Q/cD1meXBhZ2VcXFwiLFxcblxcbsKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIG1pZDogdXBNaWRcXG5cXG7CoCDCoCB9XFxuXFxufSlcXG5cXG4vLyDnlKjmiLfop4bpopEt5ZCI6ZuG44CB57O75YiXXFxuXFxudXBWaWRlbyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3BvbHltZXIvc3BhY2Uvc2Vhc29uc19zZXJpZXNfbGlzdD9taWQ9JyArIHVwTWlkICsgJyZwYWdlX251bT0xJnBhZ2Vfc2l6ZT0xMCcsIHtcXG5cXG7CoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG5cXG7CoCDCoCDCoCDCoCBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIlxcblxcbsKgIMKgIH1cXG5cXG59KSkuZGF0YS5pdGVtc19saXN0cztcXG5cXG4vLyDop4bpopHlkIjpm4bjgIHns7vliJdcXG5cXG50cnkge1xcblxcbsKgIMKgIHVwVmlkZW8uc2Vhc29uc19saXN0LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgc2Vhc29uX2lkID0gbGlzdC5tZXRhLnNlYXNvbl9pZDtcXG5cXG7CoCDCoCDCoCDCoCAvLyDmoIfpopgt6Lez6L2s5pu05aSaXFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJzxmb250IGNvbG9yPVxcXCIjMzNjY2NjXFxcIj4nICsgbGlzdC5tZXRhLm5hbWUuc3Vic3RyaW5nKDAsIDMwKSArICc8L2ZvbnQ+XFxcXHRcXFxcdDxmb250IGNvbG9yPVxcXCJyZWRcXFwiPicgKyBsaXN0Lm1ldGEudG90YWwgKyAnPC9mb250PiDCoCDCoOKericsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vcmUvMTM3LnBuZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgLy8gaW1nOiBsaXN0Lm1ldGEuY292ZXIrJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdhdmF0YXInLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCh1cE1pZCwgc2Vhc29uX2lkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHk/ZnlwYWdlJykucnVsZSgodXBNaWQsIHNlYXNvbl9pZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHZhciBkID0gW107XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGV0IHUgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcG9seW1lci9zcGFjZS9zZWFzb25zX2FyY2hpdmVzX2xpc3Q/bWlkPScgKyB1cE1pZCArICcmc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnNvcnRfcmV2ZXJzZT1mYWxzZSZwYWdlX251bT0nICsgTVlfUEFHRSArICcmcGFnZV9zaXplPTMwJztcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBWaWRlbyA9IEpTT04ucGFyc2UoZmV0Y2godSwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pKS5kYXRhO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1heFBhZ2UgPSBNYXRoLmNlaWwoVmlkZW8ucGFnZS50b3RhbCAvIFZpZGVvLnBhZ2UucGFnZV9zaXplKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoTVlfUEFHRSA8PSBtYXhQYWdlKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+W9k+WJjTrnrKwnICsgVmlkZW8ucGFnZS5wYWdlX251bSArICfpobVcXFxcdFxcXFx0XFxcXHTlhbHmnIknICsgbWF4UGFnZSArICfpobUsJyArIFZpZGVvLnBhZ2UudG90YWwgKyAn5p2h5pWw5o2uJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFZpZGVvLmFyY2hpdmVzLmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QucGljICsgJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ+aSreaUvumHj++8micgKyBsaXN0LnN0YXQudmlldyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuYWlkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzZXRIb21lUmVzdWx0KGQpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIHVwTWlkLCBzZWFzb25faWQpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgdXBNaWQsIHNlYXNvbl9pZClcXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCBpZiAobGlzdC5hcmNoaXZlcyA9PT0gdW5kZWZpbmVkKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgbG9nKGxpc3QubWV0YS5uYW1lICsgJ+S4uuepuicpO1xcblxcbsKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGxpc3QuYXJjaGl2ZXMubGVuZ3RoIDwgMikge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGxpc3QuYXJjaGl2ZXMuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5waWMgKyAnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3Quc3RhdC52aWV3LFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5haWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIGlmIChsaXN0LmFyY2hpdmVzLmxlbmd0aCA9PSAwKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcIuWlveWutuS8me+8jOi/meWutuS8meayoeacieWQiOmbhuinhumike+8gVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogXFxcIuimgeS4jeWOu+eCueWHu+WFqOmDqOinhumikeeci+eci35cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmb3IgKGxldCBpID0gMDsgaSA8IDI7IGkrKykge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QuYXJjaGl2ZXNbaV0udGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmFyY2hpdmVzW2ldLnBpYyArICdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfmkq3mlL7ph4/vvJonICsgbGlzdC5hcmNoaXZlc1tpXS5zdGF0LnZpZXcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFyY2hpdmVzW2ldLmFpZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCB9KTtcXG5cXG59IGNhdGNoIChlKSB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogJ+WQiOmbhuS4uuepuicsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFxuwqAgwqAgwqAgwqAgZGVzYzogJ1NvcnJ5LOayoeacieaVsOaNruWRon4nLFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuXFxuwqAgwqAgfSk7XFxuXFxufVxcblxcbnRyeSB7XFxuXFxuwqAgwqAgdXBWaWRlby5zZXJpZXNfbGlzdC5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIHNlcmllc19pZCA9IGxpc3QubWV0YS5zZXJpZXNfaWQ7XFxuXFxuwqAgwqAgwqAgwqAgLy8g5qCH6aKYLei3s+i9rOabtOWkmlxcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICc8Zm9udCBjb2xvcj1cXFwiIzMzY2NjY1xcXCI+JyArIGxpc3QubWV0YS5uYW1lLnN1YnN0cmluZygwLCAzMCkgKyAnPC9mb250PlxcXFx0XFxcXHQ8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj4nICsgbGlzdC5tZXRhLnRvdGFsICsgJzwvZm9udD4gwqAgwqDinq4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3JlLzEzNy5wbmdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIC8vIGltZzogbGlzdC5tZXRhLmNvdmVyKydAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgodXBNaWQsIHNlcmllc19pZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5P2Z5cGFnZScpLnJ1bGUoKHVwTWlkLCBzZXJpZXNfaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB2YXIgZCA9IFtdO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGxldCB1ID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3Nlcmllcy9hcmNoaXZlcz9taWQ9JyArIHVwTWlkICsgJyZzZXJpZXNfaWQ9JyArIHNlcmllc19pZCArICcmb25seV9ub3JtYWw9dHJ1ZSZzb3J0PWRlc2MmcG49JyArIE1ZX1BBR0UgKyAnJnBzPTMwJztcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBWaWRlbyA9IEpTT04ucGFyc2UoZmV0Y2godSwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pKS5kYXRhO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1heFBhZ2UgPSBNYXRoLmNlaWwoVmlkZW8ucGFnZS50b3RhbCAvIFZpZGVvLnBhZ2Uuc2l6ZSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKE1ZX1BBR0UgPD0gbWF4UGFnZSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICflvZPliY0656ysJyArIFZpZGVvLnBhZ2UubnVtICsgJ+mhtVxcXFx0XFxcXHRcXFxcdOWFseaciScgKyBtYXhQYWdlICsgJ+mhtSwnICsgVmlkZW8ucGFnZS50b3RhbCArICfmnaHmlbDmja4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgVmlkZW8uYXJjaGl2ZXMuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5waWMgKyAnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5pKt5pS+6YeP77yaJyArIGxpc3Quc3RhdC52aWV3LFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5haWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEhvbWVSZXN1bHQoZCk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSwgdXBNaWQsIHNlcmllc19pZClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCB1cE1pZCwgc2VyaWVzX2lkKVxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIGlmIChsaXN0LmFyY2hpdmVzID09PSB1bmRlZmluZWQpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBsb2cobGlzdC5tZXRhLm5hbWUgKyAn5Li656m6Jyk7XFxuXFxuwqAgwqAgwqAgwqAgfSBlbHNlIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpZiAobGlzdC5hcmNoaXZlcy5sZW5ndGggPCAyKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGlzdC5hcmNoaXZlcy5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LnBpYyArICdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfmkq3mlL7ph4/vvJonICsgbGlzdC5zdGF0LnZpZXcsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFpZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2UgaWYgKGxpc3QuYXJjaGl2ZXMubGVuZ3RoID09IDApIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBcXFwi5aW95a625LyZ77yM6L+Z5a625LyZ5rKh5pyJ5ZCI6ZuG6KeG6aKR77yBXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiBcXFwi6KaB5LiN5Y6754K55Ye75YWo6YOo6KeG6aKR55yL55yLflxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Uge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC5hcmNoaXZlc1tpXS50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QuYXJjaGl2ZXNbaV0ucGljICsgJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ+aSreaUvumHj++8micgKyBsaXN0LmFyY2hpdmVzW2ldLnN0YXQudmlldyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBhaWQ6IGxpc3QuYXJjaGl2ZXNbaV0uYWlkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIH0pO1xcblxcbn0gY2F0Y2ggKGUpIHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiAn57O75YiX5Li656m6JyxcXG5cXG7CoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXG7CoCDCoCDCoCDCoCBkZXNjOiAnU29ycnks5rKh5pyJ5pWw5o2u5ZGificsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG5cXG7CoCDCoCB9KTtcXG5cXG59XFxuXFxuLy8gdXDmipXnqL9cXG5cXG5kLnB1c2goe1xcblxcbsKgIMKgIHRpdGxlOiAnVEHnmoTop4bpopEs54K55Ye75bGV5byA5YWo6YOoJyxcXG5cXG7CoCDCoCBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcblxcbsKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKCh1cE1pZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIHJldHVybiAkKCkucnVsZSgodXBNaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB2YXIgZCA9IFtdO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRyeSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXBUb3RhbFZpZGVvSW5mbyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyB1cE1pZCArICcmcG49JyArIGdldE15VmFyKCdfcGFnZScsICcxJykgKyAnJnBzPTI1JmluZGV4PTEmanNvbnA9anNvbnAnLCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSkpO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmICh1cFRvdGFsVmlkZW9JbmZvLm1lc3NhZ2UgPT0gJ+WVpemDveacqOaciScpIHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5ZWl6YO95pyo5pyJLi4uJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6ICdodHRwczovL3BpYy5pbWdkYi5jbi9pdGVtLzYzMmMyMDRlMTZmMmMyYmViMTM2NTJhYS5qcGdAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6ICfkuI3lsI/lv4PmnaXliLDkuobnnJ/nqbrnmoTkuJbnlYx+JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInBpY18xXFxcIlxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXBUb3RhbFZpZGVvID0gdXBUb3RhbFZpZGVvSW5mby5kYXRhO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1heFBhZ2UgPSBNYXRoLmNlaWwodXBUb3RhbFZpZGVvLnBhZ2UuY291bnQgLyB1cFRvdGFsVmlkZW8ucGFnZS5wcyk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZm9yIChsZXQgcGFnZSA9IDE7IHBhZ2UgPD0gbWF4UGFnZTsgcGFnZSsrKSB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogKHBhZ2UgKyBcXFwiXFxcIikgPT0gZ2V0TXlWYXIoJ19wYWdlJywgJzEnKSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj4nICsgKHBhZ2UgKyBcXFwiXFxcIikgKyAnPC9mb250PicgOiAocGFnZSArIFxcXCJcXFwiKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgocGFnZSkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHB1dE15VmFyKCdfcGFnZScsIChwYWdlICsgXFxcIlxcXCIpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH0sIHBhZ2UpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVwVG90YWxWaWRlby5saXN0LnZsaXN0LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGxpc3QucGljICsgJ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogJ+aSreaUvumHj++8micgKyBsaXN0LnBsYXksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFpZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSBjYXRjaCAoZSkge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfpobXpnaLotbDkuKLkuoYuLi4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogJ2h0dHBzOi8vaTAuaGRzbGIuY29tL2Jmcy9nZW5lcmFsL2Y3YjY2NzAxMWE0NjYxNTczMmM3MDFmNGJiMWQwN2Y3OTNmOGQxZGYucG5nQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn5aSq6aKR57mB5LqG77yB56iN5ZCO5YaN6K+VficsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJwaWNfMVxcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgc2V0SG9tZVJlc3VsdChkKTtcXG5cXG7CoCDCoCDCoCDCoCB9LCB1cE1pZClcXG5cXG7CoCDCoCB9LCB1cE1pZClcXG5cXG59KTtcXG5cXG5zZXRSZXN1bHQoZCk7XFxuXFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ1cOaQnOe0olwiLFwicGF0aFwiOlwidXBTZWFyY2hcIixcInJ1bGVcIjpcImpzOlxcblxcbnNlYXdvcmQgPSBNWV9QQVJBTVMuc2Vhd29yZDtcXG5cXG52YXIgZCA9IFtdO1xcblxcbmNvb2tpZSA9IEpTT04ucGFyc2UoZmV0Y2hDb29raWUoJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS8nLCB7XFxuXFxuwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuXFxuwqAgwqAgfSxcXG5cXG7CoCDCoCBtZXRob2Q6IFxcXCJHRVRcXFwiXFxuXFxufSkpWzFdO1xcblxcbnJlc3VsdERhdGEgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP19fcmVmcmVzaF9fPXRydWUmX2V4dHJhPSZjb250ZXh0PSZwYWdlPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZwYWdlX3NpemU9MzYmb3JkZXI9JmR1cmF0aW9uPSZmcm9tX3NvdXJjZT0mZnJvbV9zcG1pZD0zMzMuMzM3JnBsYXRmb3JtPXBjJmhpZ2hsaWdodD0xJnNpbmdsZV9jb2x1bW49MCZrZXl3b3JkPVxcXCIgKyBzZWF3b3JkICsgXFxcIiZxdl9pZD1SMkloQkRiMFhaOEVNNjljbG8ycndlc3o5TDR3UmdaeSZjYXRlZ29yeV9pZD0mc2VhcmNoX3R5cGU9YmlsaV91c2VyJm9yZGVyX3NvcnQ9MCZ1c2VyX3R5cGU9MCZkeW5hbWljX29mZnNldD0wJnByZWxvYWQ9dHJ1ZSZjb20yY289dHJ1ZVxcXCIsIHtcXG5cXG7CoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG5cXG7CoCDCoCDCoCDCoCBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG5cXG7CoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llXFxuXFxuwqAgwqAgfSxcXG5cXG7CoCDCoCBtZXRob2Q6IFxcXCJHRVRcXFwiXFxuXFxufSkpLmRhdGE7XFxuXFxuaWYgKE1ZX1BBR0UgPD0gcmVzdWx0RGF0YS5udW1QYWdlcykge1xcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgdGl0bGU6ICflvZPliY0656ysJyArIHJlc3VsdERhdGEucGFnZSArICfpobVcXFxcdFxcXFx0XFxcXHTlhbHmnIknICsgcmVzdWx0RGF0YS5udW1QYWdlcyArICfpobUsJyArIHJlc3VsdERhdGEubnVtUmVzdWx0cyArICfmnaHmlbDmja4nLFxcblxcbsKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuXFxuwqAgwqAgfSk7XFxuXFxuwqAgwqAgcmVzdWx0RGF0YS5yZXN1bHQuZm9yRWFjaChsaXN0ID0+IHtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBcXFwiPGJpZz48Zm9udCBjb2xvcj0nYmx1ZSc+XFxcIiArIGxpc3QudW5hbWUgKyBcXFwiPC9mb250PjwvYmlnPjxzbWFsbD5cXFwiICsgbGlzdC51c2lnbiArIFxcXCI8L3NtYWxsPlxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiAnaHR0cHM6Ly8nICsgbGlzdC51cGljICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdhdmF0YXInLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS91cEhvbWVcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBsaXN0Lm1pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC51bmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiAnaHR0cHM6Ly8nICsgbGlzdC51cGljXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIH0pO1xcblxcbn1cXG5cXG5zZXRTZWFyY2hSZXN1bHQoZCk7XFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ2aWRlb+aQnOe0olwiLFwicGF0aFwiOlwidmlkZW9TZWFyY2hcIixcInJ1bGVcIjpcImpzOlxcblxcbnNlYXdvcmQgPSBNWV9QQVJBTVMuc2Vhd29yZDtcXG5cXG52YXIgZCA9IFtdO1xcblxcbmNvb2tpZSA9IEpTT04ucGFyc2UoZmV0Y2hDb29raWUoJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS8nLCB7XFxuXFxuwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUEsXFxuXFxuwqAgwqAgwqAgwqAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuXFxuwqAgwqAgfSxcXG5cXG7CoCDCoCBtZXRob2Q6IFxcXCJHRVRcXFwiXFxuXFxufSkpWzFdO1xcblxcbnJlc3VsdERhdGEgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP19fcmVmcmVzaF9fPXRydWUmX2V4dHJhPSZjb250ZXh0PSZwYWdlPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZwYWdlX3NpemU9NDImZnJvbV9zb3VyY2U9JmZyb21fc3BtaWQ9MzMzLjMzNyZwbGF0Zm9ybT1wYyZoaWdobGlnaHQ9MSZzaW5nbGVfY29sdW1uPTAma2V5d29yZD1cXFwiICsgc2Vhd29yZCArIFxcXCImcXZfaWQ9dlR0VVQ0UmZoenQycFB6OXA1V3UzWkk5UVFnVWZ4c0EmY2F0ZWdvcnlfaWQ9JnNlYXJjaF90eXBlPXZpZGVvJmR5bmFtaWNfb2Zmc2V0PTAmcHJlbG9hZD10cnVlJmNvbTJjbz10cnVlXFxcIiwge1xcblxcbsKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLFxcblxcbsKgIMKgIMKgIMKgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCB9LFxcblxcbsKgIMKgIG1ldGhvZDogXFxcIkdFVFxcXCJcXG5cXG59KSkuZGF0YTtcXG5cXG5pZiAoTVlfUEFHRSA8PSByZXN1bHREYXRhLm51bVBhZ2VzKSB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogJ+W9k+WJjTrnrKwnICsgcmVzdWx0RGF0YS5wYWdlICsgJ+mhtVxcXFx0XFxcXHRcXFxcdOWFseaciScgKyByZXN1bHREYXRhLm51bVBhZ2VzICsgJ+mhtSwnICsgcmVzdWx0RGF0YS5udW1SZXN1bHRzICsgJ+adoeaVsOaNricsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG5cXG7CoCDCoCB9KTtcXG5cXG7CoCDCoCByZXN1bHREYXRhLnJlc3VsdC5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIMKgIMKgIC8vIHRpdGxlPWxpc3QudGl0bGUucmVwbGFjZSgnPGVtIGNsYXNzPVxcXFxcXFwia2V5d29yZFxcXFxcXFwiPicsJzxmb250IGNvbG9yPVxcXCJyZWRcXFwiPicpLnJlcGxhY2UoJzwvZW0+JywnPC9mb250PicpXFxuXFxuwqAgwqAgwqAgwqAgdGl0bGUgPSBsaXN0LnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFxcXFxcImtleXdvcmRcXFxcXFxcIj4vZywgJycpLnJlcGxhY2UoLzxcXFxcL2VtPi9nLCAnJylcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiB0aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6ICdodHRwczovLycgKyBsaXN0LnBpYyArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGRlc2M6IGxpc3QuZGVzY3JpcHRpb24sXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8g6KeG6aKR5qCH6K+GXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBsaXN0LmFpZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogdGl0bGVcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfSk7XFxuXFxufVxcblxcbnNldFNlYXJjaFJlc3VsdChkKTtcXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzFfbGVmdF9waWNcIixcIm5hbWVcIjpcIuaOqOmAgVwiLFwicGF0aFwiOlwiZmVlZFwiLFwicnVsZVwiOlwiJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZ2V0RmVlZCgpLmZvckVhY2goaXRlbSA9PiB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogaXRlbS50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCBpbWc6IGl0ZW0ucGljKydAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIGRlc2M6ICd1cDonICsgaXRlbS5vd25lci5uYW1lICsgJ1xcXFxuJyArIGl0ZW0uc3RhdC52aWV3ICsgXFxcIuaSreaUvuKAu1xcXCIgKyBpdGVtLnN0YXQubGlrZSArIFxcXCLngrnotZ5cXFwiLFxcblxcbsKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXG7CoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIC8vIGlk5YW25a6e5pivYWlkXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgYWlkOiBpdGVtLmlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNpZDogaXRlbS5jaWQsXFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIH0pXFxuXFxufSlcXG5cXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwiQVBJXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcIi8vIHBhcnQxOuiBmuWQiOWHveaVsC0tLS0tLS0tLS0tLS0tLS1cXG4vLyDnmbvlvZXpqozor4FcXG4kLmV4cG9ydHMuaXNMb2dnZWRJbiA9IGZ1bmN0aW9uICgpIHtcXG4gICAgaWYgKGZpbGVFeGlzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKSB7XFxuICAgICAgICBiaWxpRGF0ZSA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKTtcXG4gICAgICAgIHZhciBjb29raWUgPSBiaWxpRGF0ZS5jb29raWU7XFxuICAgICAgICBsZXQgdXNlcmluZm8gPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL25hdlxcXCIsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSkuZGF0YTtcXG4gICAgICAgIGlmICh1c2VyaW5mby5pc0xvZ2luID09PSBmYWxzZSkge1xcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJ1c2VyTmFtZVxcXCI6ICfmnKrnmbvlvZUnLFxcbiAgICAgICAgICAgICAgICBcXFwidXNlck1pZFxcXCI6ICcnLFxcbiAgICAgICAgICAgICAgICBcXFwidXNlckZhY2VcXFwiOiAnJyxcXG4gICAgICAgICAgICAgICAgXFxcInR5cGVcXFwiOiBmYWxzZVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGJpbGlEYXRlLnVzZXJOYW1lID0gdXNlcmluZm8udW5hbWU7XFxuICAgICAgICAgICAgYmlsaURhdGUudXNlck1pZCA9IHVzZXJpbmZvLm1pZDtcXG4gICAgICAgICAgICBiaWxpRGF0ZS5mYWNlID0gdXNlcmluZm8uZmFjZSArIFxcXCJAUmVmZXJlcj1cXFwiO1xcbiAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0JywgSlNPTi5zdHJpbmdpZnkoYmlsaURhdGUpKTtcXG4gICAgICAgICAgICAvLyByZXR1cm4gdHJ1ZTtcXG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICBcXFwidXNlck5hbWVcXFwiOiBiaWxpRGF0ZS51c2VyTmFtZSxcXG4gICAgICAgICAgICAgICAgXFxcInVzZXJNaWRcXFwiOiBiaWxpRGF0ZS51c2VyTWlkLFxcbiAgICAgICAgICAgICAgICBcXFwidXNlckZhY2VcXFwiOiBiaWxpRGF0ZS5mYWNlLFxcbiAgICAgICAgICAgICAgICBcXFwidHlwZVxcXCI6IHRydWVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgXFxcInVzZXJOYW1lXFxcIjogJ+acqueZu+W9lScsXFxuICAgICAgICAgICAgXFxcInVzZXJNaWRcXFwiOiAnJyxcXG4gICAgICAgICAgICBcXFwidXNlckZhY2VcXFwiOiAnJyxcXG4gICAgICAgICAgICBcXFwidHlwZVxcXCI6IGZhbHNlXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG4vLyDlk5Tlk6nop4bpopHop6PmnpDvvJrojrflj5bmkq3mlL7lnLDlnYAr5o+Q5Lqk5pKt5pS+6K6w5b2VXFxuJC5leHBvcnRzLmJpbGlMYXp5ID0gZnVuY3Rpb24gKGlkLCBjaWQsIHFuKSB7XFxuICAgIHZhciBkYXNoID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZ2V0VXJsKGlkLCBjaWQsIHFuKTtcXG4gICAgLy8g5o+Q5Lqk5Y6G5Y+y6K6w5b2VXFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnJlcG9ydFByb2Nlc3MoaWQsIGNpZCk7XFxuICAgIC8vIHF1YWxpdHlOdW09ZGFzaC5hdWRpby5sZW5ndGg75LiN6ZyA6KaB5LqG77yM5om+5Yiw5LqG5pu05aW955qE5Yik5pat5pa55rOV77yM6Jm954S25oiR5bm25LiN55+l6YGT6L+Z5Lqb5Y+C5pWw55qE5ZCr5LmJ5piv5LuA5LmIXFxuICAgIHZpZGVvTGlzdCA9IFtdO1xcbiAgICBhdWRpb0xpc3QgPSBbXTtcXG4gICAgbmFtZUxpc3QgPSBbXTtcXG4gICAgZGFzaC5hdWRpby5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgYXVkaW9MaXN0LnB1c2goaXRlbS5iYXNlVXJsKTtcXG4gICAgfSk7XFxuICAgIGRhc2gudmlkZW8uZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGlmIChpdGVtLmNvZGVjaWQgPT0gNykge1xcbiAgICAgICAgICAgIHZpZGVvTGlzdC5wdXNoKGl0ZW0uYmFzZVVybCArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCIpO1xcbiAgICAgICAgICAgIGlmIChpdGVtLmlkPT02KSB7XFxuICAgICAgICAgICAgICAgIG5hbWVMaXN0LnB1c2goJzI0MFDmnoHpgJ8nKTtcXG4gICAgICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAgICAgbmFtZUxpc3QucHVzaChKU09OLnN0cmluZ2lmeShpdGVtLmlkKS5yZXBsYWNlKCcxMjYnLCfmnZzmr5Top4bnlYwnKS5yZXBsYWNlKCcxMjUnLCdIRFIg55yf5b2p6ImyJykucmVwbGFjZSgnMTI1JywnSERSIOecn+W9qeiJsicpLnJlcGxhY2UoJzEyMCcsJzRL6LaF5riFJykucmVwbGFjZSgnMTE2JywnMTA4MFA2MOmrmOW4p+eOhycpLnJlcGxhY2UoJzExMicsJzEwODBQK+mrmOeggeeOhycpLnJlcGxhY2UoJzgwJywnMTA4MFDpq5jmuIUnKS5yZXBsYWNlKCc3NCcsJzcyMFA2MOmrmOW4p+eOhycpLnJlcGxhY2UoJzY0JywnNzIwUOmrmOa4hScpLnJlcGxhY2UoJzMyJywnNDgwUOa4heaZsCcpLnJlcGxhY2UoJzE2JywnMzYwUOa1geeVhScpKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgdXJsczogdmlkZW9MaXN0LFxcbiAgICAgICAgYXVkaW9VcmxzOiBhdWRpb0xpc3QsXFxuICAgICAgICBkYW5tdTogJ2h0dHBzOi8vY29tbWVudC5iaWxpYmlsaS5jb20vJyArIGNpZCArICcueG1sJyxcXG4gICAgICAgIG5hbWVzOiBuYW1lTGlzdCxcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLFxcbiAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuLy8g56iN5ZCO5Zyo55yL4oCU4oCU5oC75pON5L2c5Yik5patXFxuJC5leHBvcnRzLmp1ZGdlVG92aWV3ID0gZnVuY3Rpb24gKGFpZCkge1xcbiAgICBzZWxlY3Rpb24gPSBbJ+a3u+WKoCcsICfnp7vpmaQnXTtcXG4gICAgcmV0dXJuICQoc2VsZWN0aW9uLCAxKS5zZWxlY3QoKGFpZCkgPT4ge1xcbiAgICAgICAgaWYgKGlucHV0ID09ICfmt7vliqAnKSB7XFxuICAgICAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuYWRkVG92aWV3KGFpZCk7XFxuICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mt7vliqDmiJDlip9cXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTEwMSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6LSm5Y+35pyq55m75b2VXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMTEpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL2NzcmbmoKHpqozlpLHotKVcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTQwMCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+35rGC6ZSZ6K+vXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IDkwMDAxKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liJfooajlt7Lmu6FcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gOTAwMDMpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eov+S7tuW3sue7j+iiq+WIoOmZpFxcXCJcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pyq55+l6ZSZ6K+vXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZGVsVG92aWV3KGFpZCk7XFxuICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/np7vpmaTmiJDlip9cXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTEwMSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6LSm5Y+35pyq55m75b2VXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IC0xMTEpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL2NzcmbmoKHpqozlpLHotKVcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTQwMCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6K+35rGC6ZSZ6K+vXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKrnn6XplJnor69cXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9LCBhaWQpXFxufVxcbi8vIOaTjeS9nOeUqOaIt+WFs+ezu1xcbiQuZXhwb3J0cy5jaGFuZ2VVc2VyUmVsYXRpb24gPSBmdW5jdGlvbiAobWlkLCByZV9zcmMpIHtcXG4gICAgc2VsZWN0aW9uID0gWyflhbPms6gnLCAn5Y+W5YWzJywgJ+aChOaChOWFs+azqCcsICflj5bmtojmgoTmgoTlhbPms6gnLCAn5ouJ6buRJywgJ+WPlua2iOaLiem7kScsICfouKLlh7rnsonkuJ0nLCAn56e75Yqo5YiG57uEJ107XFxuICAgIHJldHVybiAkKHNlbGVjdGlvbiwgMikuc2VsZWN0KChtaWQsIHJlX3NyYykgPT4ge1xcbiAgICAgICAgaWYgKGlucHV0ID09ICfnp7vliqjliIbnu4QnKSB7XFxuICAgICAgICAgICAgYmVmb3JlVGFnaWRzID0gW107XFxuICAgICAgICAgICAgZ3JvdXBzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZ2V0VXNlckdyb3VwKG1pZCk7XFxuICAgICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGdyb3VwcykgPT0gJ3t9Jykge1xcbiAgICAgICAgICAgICAgICBiZWZvcmVUYWdpZHMucHVzaCgwKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIGdyb3Vwcykge1xcbiAgICAgICAgICAgICAgICAgICAgYmVmb3JlVGFnaWRzLnB1c2gocGFyc2VJbnQocHJvcCkpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIC8vIOiOt+WPluaIkeeahOWIhue7hFxcbiAgICAgICAgICAgIGZvY3VzR3JvdXBMaXN0ID0gW107XFxuICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZ2V0TXlBdHRlbnRpb25Hcm91cExpc3QoKS5mb3JFYWNoKGxpc3QgPT4ge1xcbiAgICAgICAgICAgICAgICBmb2N1c0dyb3VwTGlzdC5wdXNoKGxpc3QubmFtZSArICcgJyArIGxpc3QudGFnaWQpO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiAkKGZvY3VzR3JvdXBMaXN0LCAxKS5zZWxlY3QoKGJlZm9yZVRhZ2lkcywgbWlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIGFmdGVyVGFnaWRzID0gW107XFxuICAgICAgICAgICAgICAgIGFmdGVyVGFnaWRzLnB1c2gocGFyc2VJbnQoaW5wdXQuc3BsaXQoJyAnKVsxXSkpO1xcbiAgICAgICAgICAgICAgICBmaWRzID0gW107XFxuICAgICAgICAgICAgICAgIGZpZHMucHVzaChOdW1iZXIobWlkKSk7XFxuICAgICAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLm1vdmVVc2VycyhiZWZvcmVUYWdpZHMsIGFmdGVyVGFnaWRzLCBmaWRzKTtcXG4gICAgICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v56e75Yqo55So5oi35YiwXFxcIiArIGlucHV0LnNwbGl0KCcgJylbMF0gKyBcXFwi5YiG57uE5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtMTAxKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6LSm5Y+35pyq55m75b2VXFxcIlxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtMTExKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vY3NyZuagoemqjOWksei0pVxcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTQwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+axgumUmeivr1xcXCJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gMjIxMDQpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ml6DmnYPpmZBcXFwiXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09IDIyMTA1KSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pyq5YWz5rOoXFxcIlxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+acquefpemUmeivr1xcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGJlZm9yZVRhZ2lkcywgbWlkKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09ICflhbPms6gnKSB7XFxuICAgICAgICAgICAgICAgIHZhciBhY3QgPSAxO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+WPluWFsycpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGFjdCA9IDI7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn5oKE5oKE5YWz5rOoJykge1xcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gMztcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICflj5bmtojmgoTmgoTlhbPms6gnKSB7XFxuICAgICAgICAgICAgICAgIHZhciBhY3QgPSA0O1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gJ+aLiem7kScpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGFjdCA9IDU7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSAn5Y+W5raI5ouJ6buRJykge1xcbiAgICAgICAgICAgICAgICB2YXIgYWN0ID0gNjtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfouKLlh7rnsonkuJ0nKSB7XFxuICAgICAgICAgICAgICAgIHZhciBhY3QgPSA3O1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5hZGRBdHRlbnRpb24obWlkLCBhY3QsIHJlX3NyYyk7XFxuICAgICAgICAgICAgcmVsYXRpb24gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS51c2VyTWFwcGluZyhtaWQpO1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3JlbGF0aW9uJywge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcmVsYXRpb24sXFxuICAgICAgICAgICAgICAgIGltZzogcmVsYXRpb24gPT0gJ+acquWFs+azqCcgPyBzdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyku5re75Yqg5YWz5rOoIDogc3RvcmFnZTAuZ2V0TXlWYXIoJ+WbvuaghycpLuW3suWFs+azqFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChyZXMgPT0gMCkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vXFxcIiArIGlucHV0ICsgXFxcIuaIkOWKn1xcXCJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtMTAxKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/otKblj7fmnKrnmbvlvZVcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gLTExMSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8vY3NyZuagoemqjOWksei0pVxcXCJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAtNDAwKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/or7fmsYLplJnor69cXFwiXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gMjIwMDEpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S4jeiDveWvueiHquW3sei/m+ihjOatpOaTjeS9nFxcXCJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSAyMjAwMykge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v55So5oi35L2N5LqO6buR5ZCN5Y2VXFxcIlxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKrnn6XplJnor69cXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9LCBtaWQsIHJlX3NyYylcXG59XFxuLy8g5pig5bCE55So5oi35YWz57O7XFxuJC5leHBvcnRzLnVzZXJNYXBwaW5nID0gZnVuY3Rpb24gKG1pZCkge1xcbiAgICByZWxhdGlvblJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldFJlbGF0aW9uKG1pZCk7XFxuICAgIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gMCkge1xcbiAgICAgICAgcmVsYXRpb24gPSAn5pyq5YWz5rOoJ1xcbiAgICB9IGVsc2UgaWYgKHJlbGF0aW9uUmVzLnJlbGF0aW9uLmF0dHJpYnV0ZSA9PSAxKSB7XFxuICAgICAgICByZWxhdGlvbiA9ICfmgoTmgoTlhbPms6gnXFxuICAgIH0gZWxzZSBpZiAocmVsYXRpb25SZXMucmVsYXRpb24uYXR0cmlidXRlID09IDIpIHtcXG4gICAgICAgIHJlbGF0aW9uID0gJ+W3suWFs+azqCdcXG4gICAgfSBlbHNlIGlmIChyZWxhdGlvblJlcy5yZWxhdGlvbi5hdHRyaWJ1dGUgPT0gNikge1xcbiAgICAgICAgcmVsYXRpb24gPSAn5bey5LqS57KJJ1xcbiAgICB9IGVsc2UgaWYgKHJlbGF0aW9uUmVzLnJlbGF0aW9uLmF0dHJpYnV0ZSA9PSAxMjgpIHtcXG4gICAgICAgIHJlbGF0aW9uID0gJ+W3suaLiem7kSdcXG4gICAgfVxcbiAgICByZXR1cm4gcmVsYXRpb247XFxufVxcbi8vIOeCuei1nuaTjeS9nOmAu+i+kVxcbiQuZXhwb3J0cy5saWtlTG9naWMgPSBmdW5jdGlvbiAoYWlkKSB7XFxuICAgIGhhc0xpa2UgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5oYXNMaWtlKGFpZCk7XFxuICAgIGlmIChoYXNMaWtlID09IDApIHtcXG4gICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnNldExpa2UoYWlkLCAxKTtcXG4gICAgICAgIGlmIChyZXMgPT0gMCkge1xcbiAgICAgICAgICAgIGxpa2UgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXc/YWlkPVxcXCIgKyBhaWQpKS5kYXRhLnN0YXQubGlrZTtcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKCdzZXRMaWtlJywge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogKGxpa2UgKyAxKSArICcnLFxcbiAgICAgICAgICAgICAgICBpbWc6IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKS7lt7LngrnotZ5cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v54K56LWe5oiQ5YqfXFxcIjtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eCuei1nuWHuumUmeS6hn5cXFwiO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmVzID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuc2V0TGlrZShhaWQsIDIpO1xcbiAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxuICAgICAgICAgICAgbGlrZSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldz9haWQ9XFxcIiArIGFpZCkpLmRhdGEuc3RhdC5saWtlO1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NldExpa2UnLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAobGlrZSAtIDEpICsgJycsXFxuICAgICAgICAgICAgICAgIGltZzogc3RvcmFnZTAuZ2V0TXlWYXIoJ+WbvuaghycpLuacqueCuei1nlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lj5bmtojngrnotZ7miJDlip9cXFwiO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Y+W5raI54K56LWe5Ye66ZSZ5LqGflxcXCI7XFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuLy8g5pS26JeP5pON5L2c6YC76L6RXFxuJC5leHBvcnRzLmZhdm91ckxvZ2ljID0gZnVuY3Rpb24gKGFpZCwgbWlkKSB7XFxuICAgIGhhc0Zhdm91ciA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmhhc0Zhdm91cihhaWQpO1xcbiAgICBpZiAoaGFzRmF2b3VyKSB7XFxuICAgICAgICAvLyDnp7vlh7rmlLbol49cXG4gICAgICAgIGZhdm91cklkTGlzdCA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldEZhdm91cklkTGlzdChhaWQsIG1pZCk7XFxuICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5zZXRGYXZvdXIoYWlkLCAnJywgZmF2b3VySWRMaXN0KTtcXG4gICAgICAgIGlmIChyZXMgPT0gMCkge1xcbiAgICAgICAgICAgIGxpa2UgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXc/YWlkPVxcXCIgKyBhaWQpKS5kYXRhLnN0YXQuZmF2b3JpdGU7XFxuICAgICAgICAgICAgdXBkYXRlSXRlbSgnc2V0RmF2b3VyJywge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogKGxpa2UgLSAxKSArICcnLFxcbiAgICAgICAgICAgICAgICBpbWc6IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKS7mnKrmlLbol49cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Y+W5raI5pS26JeP5oiQ5YqfXFxcIjtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WPlua2iOaUtuiXj+WHuumUmeS6hn5cXFwiO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgLy8g6YCJ5oup5pS26JePXFxuICAgICAgICByZXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRDb2xsZWN0aW9uR3JvdXBMaXN0KClbMF0ubWVkaWFMaXN0UmVzcG9uc2UubGlzdDtcXG4gICAgICAgIEdyb3VwTGlzdCA9IFtdO1xcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgR3JvdXBMaXN0LnB1c2goaXRlbS50aXRsZSArICcgJyArIGl0ZW0uaWQpO1xcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gJChHcm91cExpc3QsIDEpLnNlbGVjdCgoYWlkKSA9PiB7XFxuICAgICAgICAgICAgc2VsZWN0SWQgPSBwYXJzZUludChpbnB1dC5zcGxpdCgnICcpWzFdKVxcbiAgICAgICAgICAgIHJlcyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnNldEZhdm91cihhaWQsIHNlbGVjdElkLCAnJyk7XFxuICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7XFxuICAgICAgICAgICAgICAgIGxpa2UgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXc/YWlkPVxcXCIgKyBhaWQpKS5kYXRhLnN0YXQuZmF2b3JpdGU7XFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oJ3NldEZhdm91cicsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlrZSArIDEpICsgJycsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHN0b3JhZ2UwLmdldE15VmFyKCflm77moIcnKS7lt7LmlLbol49cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mlLbol4/miJDlip9cXFwiO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mlLbol4/lh7rplJnkuoZ+XFxcIjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCBhaWQpO1xcbiAgICB9XFxufVxcblxcblxcblxcbi8vIHBhcnQyOuaVo+ijhUFQSS0tLS0tLS0tLS0tLS0tLS1cXG4vLyDop4bpopHmjqjojZBcXG4kLmV4cG9ydHMuZ2V0RmVlZCA9IGZ1bmN0aW9uICgpIHtcXG4gICAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9pbmRleC90b3AvZmVlZC9yY21kXFxcIjtcXG4gICAgdmFyIHJlcyA9IEpTT04ucGFyc2UoZmV0Y2godSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9XFxuICAgIH0pKTtcXG4gICAgcmV0dXJuIHJlcy5kYXRhLml0ZW1cXG59XFxuLy8g6I635Y+W5pKt5pS+5Zyw5Z2AXFxuJC5leHBvcnRzLmdldFVybCA9IGZ1bmN0aW9uIChhdmlkLCBjaWQsIHFuKSB7XFxuICAgIGxldCB1ID0gcmVxdWVzdChidWlsZFVybChcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20veC9wbGF5ZXIvcGxheXVybFxcXCIsIHtcXG4gICAgICAgIFxcXCJhdmlkXFxcIjogYXZpZCxcXG4gICAgICAgIFxcXCJjaWRcXFwiOiBjaWQsXFxuICAgICAgICBcXFwicW5cXFwiOiBxbixcXG4gICAgICAgIFxcXCJmbnZlclxcXCI6IDAsXFxuICAgICAgICBcXFwiZm52YWxcXFwiOiA0MDQ4LFxcbiAgICAgICAgXFxcImZvdXJrXFxcIjogMVxcbiAgICB9KSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIENvb2tpZTogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZSh1KS5kYXRhLmRhc2hcXG59XFxuLy8g5o+Q5Lqk5pKt5pS+6K6w5b2VXFxuJC5leHBvcnRzLnJlcG9ydFByb2Nlc3MgPSBmdW5jdGlvbiAoYXZpZCwgY2lkKSB7XFxuICAgIC8vIGxldCBjc3JmID0gcmVhZEZpbGUoXFxcIkNvb2tpZS50eHRcXFwiKS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV1cXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXVxcbiAgICBsZXQgcmVzID0gcG9zdChcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9oaXN0b3J5L3JlcG9ydFxcXCIsIHtcXG4gICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICBcXFwiYWlkXFxcIjogYXZpZCxcXG4gICAgICAgICAgICBcXFwiY2lkXFxcIjogY2lkLFxcbiAgICAgICAgICAgIFxcXCJjc3JmXFxcIjogY3NyZixcXG4gICAgICAgICAgICBcXFwicHJvZ3Jlc3NcXFwiOiAwXFxuICAgICAgICB9LFxcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIENvb2tpZTogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5cXG4vLyDojrflj5bor4TorrpcXG4kLmV4cG9ydHMuZ2V0Q29tbWVudHMgPSBmdW5jdGlvbiAoaWQsIHR5cGUsIHBhZ2UpIHtcXG4gICAgbGV0IHUgPSBidWlsZFVybChcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9yZXBseVxcXCIsIHtcXG4gICAgICAgIFxcXCJ0eXBlXFxcIjogdHlwZSxcXG4gICAgICAgIFxcXCJvaWRcXFwiOiBpZCxcXG4gICAgICAgIFxcXCJwblxcXCI6IHBhZ2VcXG4gICAgfSk7XFxuICAgIGxldCByZXMgPSByZXF1ZXN0KHUsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBDb29raWU6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5kYXRhLnJlcGxpZXNcXG59XFxuLy8g5re75Yqg56iN5ZCO5Zyo55yL4oCU4oCU55yf55qE6bq75LqG77yM5Li65LuA5LmIZmV0Y2jlsLHplJnlkaJ+XFxuJC5leHBvcnRzLmFkZFRvdmlldyA9IGZ1bmN0aW9uIChhaWQpIHtcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXTtcXG4gICAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvaGlzdG9yeS90b3ZpZXcvYWRkXFxcIjtcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcbiAgICAgICAgXFxcImFpZFxcXCI6IGFpZCxcXG4gICAgICAgIFxcXCJjc3JmXFxcIjogY3NyZixcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfSxcXG4gICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuY29kZTtcXG59XFxuLy8g5Yig6Zmk56iN5ZCO5Zyo55yLXFxuJC5leHBvcnRzLmRlbFRvdmlldyA9IGZ1bmN0aW9uIChhaWQpIHtcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXTtcXG4gICAgbGV0IHUgPSBcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9oaXN0b3J5L3Rvdmlldy9kZWxcXFwiO1xcbiAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybCh1LCB7XFxuICAgICAgICBcXFwiYWlkXFxcIjogYWlkLFxcbiAgICAgICAgXFxcImNzcmZcXFwiOiBjc3JmLFxcbiAgICB9KSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9LFxcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCJcXG4gICAgfSlcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5jb2RlO1xcbn1cXG4vLyDorqLpmIXlvbHop4Yo6L+955Wq44CB6L+95YmnKVxcbiQuZXhwb3J0cy5zdWJzY3JpYmVGaWxtID0gZnVuY3Rpb24gKHNlYXNvbl9pZCkge1xcbiAgICBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcbiAgICBsZXQgdSA9IFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3dlYi9mb2xsb3cvYWRkXFxcIjtcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoYnVpbGRVcmwodSwge1xcbiAgICAgICAgXFxcInNlYXNvbl9pZFxcXCI6IHNlYXNvbl9pZCxcXG4gICAgICAgIFxcXCJjc3JmXFxcIjogY3NyZixcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfSxcXG4gICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykucmVzdWx0LnRvYXN0O1xcbn1cXG4vLyDlj5bmtojorqLpmIVcXG4kLmV4cG9ydHMuY2FuY2VsU3Vic2NyaWJlRmlsbSA9IGZ1bmN0aW9uIChzZWFzb25faWQpIHtcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXTtcXG4gICAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy93ZWIvZm9sbG93L2RlbFxcXCI7XFxuICAgIGxldCByZXMgPSByZXF1ZXN0KGJ1aWxkVXJsKHUsIHtcXG4gICAgICAgIFxcXCJzZWFzb25faWRcXFwiOiBzZWFzb25faWQsXFxuICAgICAgICBcXFwiY3NyZlxcXCI6IGNzcmYsXFxuICAgIH0pLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH0sXFxuICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIlxcbiAgICB9KVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLnJlc3VsdC50b2FzdDtcXG59XFxuLyrmk43kvZznlKjmiLflhbPns7tcXG5maWQ655So5oi3bWlkXFxuYWN0OuaTjeS9nOS7o+eggVxcbnJlX3NyY++8muWFs+azqOadpea6kFxcbiovXFxuJC5leHBvcnRzLmFkZEF0dGVudGlvbiA9IGZ1bmN0aW9uIChtaWQsIGFjdCwgcmVfc3JjKSB7XFxuICAgIGxldCBjc3JmID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxuICAgIGxldCB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL21vZGlmeVxcXCI7XFxuICAgIGxldCByZXMgPSByZXF1ZXN0KGJ1aWxkVXJsKHUsIHtcXG4gICAgICAgIFxcXCJmaWRcXFwiOiBtaWQsXFxuICAgICAgICBcXFwiYWN0XFxcIjogYWN0LFxcbiAgICAgICAgXFxcInJlX3NyY1xcXCI6IHJlX3NyYyxcXG4gICAgICAgIFxcXCJjc3JmXFxcIjogY3NyZlxcbiAgICB9KSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9LFxcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCJcXG4gICAgfSlcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5jb2RlO1xcbn1cXG4vLyDnp7vliqjlhbPms6jnlKjmiLfliIbnu4RcXG4kLmV4cG9ydHMubW92ZVVzZXJzID0gZnVuY3Rpb24gKGJlZm9yZVRhZ2lkcywgYWZ0ZXJUYWdpZHMsIGZpZHMpIHtcXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLm1hdGNoKC9iaWxpX2pjdD0oLio/KTsvKVsxXTtcXG4gICAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vdGFncy9tb3ZlVXNlcnNcXFwiO1xcbiAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybCh1LCB7XFxuICAgICAgICBcXFwiYmVmb3JlVGFnaWRzXFxcIjogYmVmb3JlVGFnaWRzLnRvU3RyaW5nKCksXFxuICAgICAgICBcXFwiYWZ0ZXJUYWdpZHNcXFwiOiBhZnRlclRhZ2lkcy50b1N0cmluZygpLFxcbiAgICAgICAgXFxcImZpZHNcXFwiOiBmaWRzLnRvU3RyaW5nKCksXFxuICAgICAgICBcXFwiY3NyZlxcXCI6IGNzcmZcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfSxcXG4gICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgIH0pXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcykuY29kZTtcXG59XFxuLy8g6I635Y+W55So5oi35YWz57O7XFxuJC5leHBvcnRzLmdldFJlbGF0aW9uID0gZnVuY3Rpb24gKG1pZCkge1xcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvcmVsYXRpb24/bWlkPVxcXCIgKyBtaWQsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YVxcbn1cXG4vLyDmn6Xor6Lnm67moIfnlKjmiLfmiYDlnKjnmoTliIbnu4RcXG4kLmV4cG9ydHMuZ2V0VXNlckdyb3VwID0gZnVuY3Rpb24gKG1pZCkge1xcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi90YWcvdXNlcj9maWQ9XFxcIiArIG1pZCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9XFxuICAgIH0pKS5kYXRhXFxufVxcbi8vIOiOt+WPluWFs+azqOWIhue7hFxcbiQuZXhwb3J0cy5nZXRNeUF0dGVudGlvbkdyb3VwTGlzdCA9IGZ1bmN0aW9uICgpIHtcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL3RhZ3M/anNvbnA9anNvbnBcXFwiLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWUsXFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBQQ19VQSxcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YTtcXG59XFxuLy8g5piv5ZCm54K56LWeXFxuJC5leHBvcnRzLmhhc0xpa2UgPSBmdW5jdGlvbiAoYWlkKSB7XFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QoYnVpbGRVcmwoXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9hcmNoaXZlL2hhcy9saWtlXFxcIiwge1xcbiAgICAgICAgXFxcImFpZFxcXCI6IGFpZFxcbiAgICB9KSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9XFxuICAgIH0pKS5kYXRhXFxufVxcbi8vIOaYr+WQpuaUtuiXj1xcbiQuZXhwb3J0cy5oYXNGYXZvdXIgPSBmdW5jdGlvbiAoYWlkKSB7XFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QoYnVpbGRVcmwoXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvZmF2L3ZpZGVvL2Zhdm91cmVkXFxcIiwge1xcbiAgICAgICAgXFxcImFpZFxcXCI6IGFpZFxcbiAgICB9KSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9XFxuICAgIH0pKS5kYXRhLmZhdm91cmVkXFxufVxcbi8vIOinhumikeeCuei1nlxcbiQuZXhwb3J0cy5zZXRMaWtlID0gZnVuY3Rpb24gKGFpZCwgZGVhbFdheSkge1xcbiAgICBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcbiAgICBsZXQgcmVzID0gcG9zdChcXFwiaHR0cDovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL2FyY2hpdmUvbGlrZVxcXCIsIHtcXG4gICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICBcXFwiYWlkXFxcIjogYWlkLFxcbiAgICAgICAgICAgIFxcXCJsaWtlXFxcIjogZGVhbFdheSxcXG4gICAgICAgICAgICBcXFwiY3NyZlxcXCI6IGNzcmZcXG4gICAgICAgIH0sXFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5jb2RlO1xcbn1cXG4vLyDojrflj5bmlLbol4/liJfooahcXG4kLmV4cG9ydHMuZ2V0Q29sbGVjdGlvbkdyb3VwTGlzdCA9IGZ1bmN0aW9uICgpIHtcXG4gICAgcmV0dXJuIGNvbGxlY3Rpb25zID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9saXN0NG5hdmlnYXRlXFxcIiwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLFxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YTtcXG59XFxuLy8g5pS26JePL+WPlua2iOinhumikUFQSVxcbiQuZXhwb3J0cy5zZXRGYXZvdXIgPSBmdW5jdGlvbiAoYWlkLCBhZGRfbWVkaWFfaWRzLCBkZWxfbWVkaWFfaWRzKSB7XFxuICAgIGxldCBjc3JmID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZS5tYXRjaCgvYmlsaV9qY3Q9KC4qPyk7LylbMV07XFxuICAgIGxldCByZXMgPSBwb3N0KFxcXCJodHRwOi8vYXBpLmJpbGliaWxpLmNvbS9tZWRpYWxpc3QvZ2F0ZXdheS9jb2xsL3Jlc291cmNlL2RlYWxcXFwiLCB7XFxuICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgXFxcInJpZFxcXCI6IGFpZCxcXG4gICAgICAgICAgICBcXFwidHlwZVxcXCI6IDIsXFxuICAgICAgICAgICAgXFxcImFkZF9tZWRpYV9pZHNcXFwiOiBhZGRfbWVkaWFfaWRzLnRvU3RyaW5nKCksXFxuICAgICAgICAgICAgXFxcImRlbF9tZWRpYV9pZHNcXFwiOiBkZWxfbWVkaWFfaWRzLnRvU3RyaW5nKCksXFxuICAgICAgICAgICAgXFxcImNzcmZcXFwiOiBjc3JmXFxuICAgICAgICB9LFxcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLFxcbiAgICAgICAgICAgIFxcXCJSZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzKS5jb2RlO1xcbn1cXG4vLyDojrflj5bop4bpopHmiYDlnKjmlLbol4/lpLlcXG4kLmV4cG9ydHMuZ2V0RmF2b3VySWRMaXN0ID0gZnVuY3Rpb24gKGFpZCwgdXNlck1pZCkge1xcbiAgICBsZXQgdSA9IFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvZm9sZGVyL2NyZWF0ZWQvbGlzdC1hbGxcXFwiO1xcbiAgICBsZXQgcmVzID0gcmVxdWVzdChidWlsZFVybCh1LCB7XFxuICAgICAgICBcXFwidHlwZVxcXCI6IDIsXFxuICAgICAgICBcXFwicmlkXFxcIjogYWlkLFxcbiAgICAgICAgXFxcInVwX21pZFxcXCI6IHVzZXJNaWQsXFxuICAgIH0pLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWUsXFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgZmF2b3VySWRMaXN0ID0gW107XFxuICAgIEpTT04ucGFyc2UocmVzKS5kYXRhLmxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xcbiAgICAgICAgaWYgKGl0ZW0uZmF2X3N0YXRlID09IDEpIHtcXG4gICAgICAgICAgICBmYXZvdXJJZExpc3QucHVzaChpdGVtLmlkKTtcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgcmV0dXJuIGZhdm91cklkTGlzdDtcXG59XFxuLy8g54Ot5pig5Ymn6ZuG5pe26Ze06L20XFxuJC5leHBvcnRzLmdldE1vdmllcyA9IGZ1bmN0aW9uICh0eXBlLCBiZWZvcmUsIGFmdGVyKSB7XFxuICAgIGxldCB1ID0gYnVpbGRVcmwoXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy93ZWIvdGltZWxpbmVcXFwiLCB7XFxuICAgICAgICBcXFwidHlwZXNcXFwiOiB0eXBlLFxcbiAgICAgICAgXFxcImJlZm9yZVxcXCI6IGJlZm9yZSxcXG4gICAgICAgIFxcXCJhZnRlclxcXCI6IGFmdGVyXFxuICAgIH0pXFxuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKHJlcXVlc3QodSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICB9XFxuICAgIH0pKVxcbiAgICByZXR1cm4gcmVzLnJlc3VsdFxcbn1cXG4vLyDojrflj5bkuJPmoI/mlofnq6BcXG4kLmV4cG9ydHMuZ2V0VXNlckFydGljbGUgPSBmdW5jdGlvbiAodXBNaWQsIHBhZ2UpIHtcXG4gICAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJ0aWNsZVxcXCI7XFxuICAgIGxldCByZXMgPSByZXF1ZXN0KGJ1aWxkVXJsKHUsIHtcXG4gICAgICAgIFxcXCJtaWRcXFwiOiB1cE1pZCxcXG4gICAgICAgIFxcXCJwblxcXCI6IHBhZ2UsXFxuICAgICAgICBcXFwicHNcXFwiOiAxMixcXG4gICAgICAgIFxcXCJzb3J0XFxcIjogJ3B1Ymxpc2hfdGltZSdcXG4gICAgfSksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZSxcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXMpLmRhdGE7XFxufVxcbi8vIOiOt+WPluWKqOaAgeaVsOaNrlxcbiQuZXhwb3J0cy5nZXREeW5hbWljRGF0YSA9IGZ1bmN0aW9uIChmcm9tLCB1cE1pZCkge1xcbiAgICB2YXIgbmV4dEluZm8gPSB7fTtcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgaWYgKGZyb20gPT0gJ3VwU3BhY2UnKSB7XFxuICAgICAgICAgICAgdmFyIHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcG9seW1lci93ZWItZHluYW1pYy92MS9mZWVkL3NwYWNlP29mZnNldD0maG9zdF9taWQ9XFxcIiArIHVwTWlkICsgXFxcIiZ0aW1lem9uZV9vZmZzZXQ9LTQ4MFxcXCI7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3BvbHltZXIvd2ViLWR5bmFtaWMvdjEvZmVlZC9hbGw/dGltZXpvbmVfb2Zmc2V0PS00ODAmdHlwZT1hbGxcXFwiO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGF0ZW5ld3MgPSBKU09OLnBhcnNlKGZldGNoKHUsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llLFxcbiAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFBDX1VBLFxcbiAgICAgICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pKS5kYXRhO1xcbiAgICAgICAgbmV4dEluZm8ub2Zmc2V0ID0gbGF0ZW5ld3Mub2Zmc2V0O1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgaWYgKGZyb20gPT0gJ3VwU3BhY2UnKSB7XFxuICAgICAgICAgICAgdmFyIHUgPSBcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcG9seW1lci93ZWItZHluYW1pYy92MS9mZWVkL3NwYWNlP29mZnNldD1cXFwiICsgc3RvcmFnZTAuZ2V0TXlWYXIoSlNPTi5zdHJpbmdpZnkoTVlfUEFHRSkpLm9mZnNldCArIFxcXCImaG9zdF9taWQ9XFxcIiArIHVwTWlkICsgXFxcIiZ0aW1lem9uZV9vZmZzZXQ9LTQ4MFxcXCI7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciB1ID0gXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3BvbHltZXIvd2ViLWR5bmFtaWMvdjEvZmVlZC9hbGw/dGltZXpvbmVfb2Zmc2V0PS00ODAmdHlwZT1hbGwmb2Zmc2V0PVxcXCIgKyBzdG9yYWdlMC5nZXRNeVZhcihKU09OLnN0cmluZ2lmeShNWV9QQUdFKSkub2Zmc2V0O1xcbiAgICAgICAgfVxcbiAgICAgICAgbGF0ZW5ld3MgPSBKU09OLnBhcnNlKGZldGNoKHUsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkuY29va2llXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpLmRhdGE7XFxuICAgICAgICBuZXh0SW5mby5vZmZzZXQgPSBsYXRlbmV3cy5vZmZzZXQ7XFxuICAgIH1cXG4gICAgc3RvcmFnZTAucHV0TXlWYXIoSlNPTi5zdHJpbmdpZnkoTVlfUEFHRSArIDEpLCBuZXh0SW5mbyk7XFxuICAgIHJldHVybiBsYXRlbmV3cztcXG59XFxuXFxuLy8g4oCU4oCU54m55Yir55qE6KGM5Li644CB5bel5YW35Ye95pWw4oCU4oCUXFxuLy8g5bGV56S65Yqo5oCB5pWw5o2uKOi/lOWbnuWHveaVsOaWueazleeahOWPr+aJp+ihjOWtl+espuS4silcXG4kLmV4cG9ydHMuc2hvd0R5bmFtaWNEYXRhID0gZnVuY3Rpb24gKCkge1xcbiAgICByZXR1cm4gJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBsYXRlbmV3cy5pdGVtcy5mb3JFYWNoKGxpc3QgPT4ge1xcbiAgICAgICAgICAgIGlmIChsaXN0LnR5cGUgPT0gJ0RZTkFNSUNfVFlQRV9BVicpIHtcXG4gICAgICAgICAgICAgICAgLy8g5oqV56i/6KeG6aKR77yI5b2T5YmN5Y+R5biD77yJ4oiaXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSArICdcXFxcdFxcXFx0XFxcXHQ8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj4nICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IucHViX3RpbWUgKyAnLScgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5wdWJfYWN0aW9uICsgJzwvZm9udD48L3NtYWxsPjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3VwSG9tZScsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZDogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2U6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLmZhY2VcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAvLyDkuI3kuIDlrprmnInmloflrZfllYpcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MgPT09IG51bGwgPyAnPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KSArICc8YnI+PGEgaHJlZj1cXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcIj7mn6XnnIvor4Torro8L2E+JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICAvLyDov5nkuKrkuI3og73nlKhsb25nX3RleHRcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGxpc3QuYmFzaWMuY29tbWVudF9pZF9zdHIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5hcmNoaXZlLmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5hcmNoaXZlLmRlc2MsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUuYWlkXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+55WZ6KiAOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuY29tbWVudC5jb3VudCArICdcXFxcdFxcXFx05YiG5LqrOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuZm9yd2FyZC5jb3VudCArICdcXFxcdFxcXFx05Zac5qyiOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQubGlrZS5jb3VudCArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxpc3QudHlwZSA9PSAnRFlOQU1JQ19UWVBFX0ZPUldBUkQnKSB7XFxuICAgICAgICAgICAgICAgIC8vIOinhumikeW8leeUqO+8jOWkmuWHuuS6hm9yaWfmjIflkJHkuIDkuKoo6L+H5Y67KeW3suWPkeW4g+eahOinhumikSzlh4bnoa7nmoTor7TmmK/lvJXnlKjkuYvliY3nmoTluJblrZDkuI3kuIDlrprmmK/op4bpopHiiJpcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5uYW1lICsgJ1xcXFx0XFxcXHRcXFxcdDxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5wdWJfdGltZSArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLmZhY2UgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS91cEhvbWUnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQ6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm1pZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWNlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5mYWNlXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYyA9PT0gbnVsbCA/ICc8Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+dXDlpKrmh5LkuobvvIzov57mlofmoYjpg73kuI3mg7PphY0uLi48L2ZvbnQ+JyA6IGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjLnRleHQpLnJlcGxhY2UoL1xcXFxcXFxcbi9nLCAnPGJyPicpICsgJzxicj48YSBocmVmPVxcXCJoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2VcXFwiPuafpeeci+ivhOiuujwvYT4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGxpc3QuYmFzaWMuY29tbWVudF9pZF9zdHIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5Lmf5piv57qv5paH5a2X77yM5Zug5Li65Y+q5piv5paH5a2XK+W8leeUqOaXqeW3suaKleeov+eahOinhumikVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDE3XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAvLyDlvJXnlKjnmoTlhoXlrrnigJTigJTmiKrmlq3vvIjmoLnmja7kuI3lkIznmoTlvJXnlKjnsbvlnovov5vooYzlpITnkIbvvIlcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzbWFsbD7kuIvpnaLlhoXlrrnmnaXoh6rlvJXnlKjnmoTluJblrZAsdXDmmK86JyArIGxpc3Qub3JpZy5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSArICc8L3NtYWxsPjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBpZiAobGlzdC5vcmlnLnR5cGUgPT0gJ0RZTkFNSUNfVFlQRV9BVicpIHtcXG4gICAgICAgICAgICAgICAgICAgIC8vIOW8leeUqOinhumikeivtOivtFxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuYXJjaGl2ZS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3Qub3JpZy5tb2R1bGVzLm1vZHVsZV9keW5hbWljLm1ham9yLmFyY2hpdmUuY292ZXIgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuYXJjaGl2ZS5kZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpZDogbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuYXJjaGl2ZS5haWRcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsaXN0Lm9yaWcudHlwZSA9PSAnRFlOQU1JQ19UWVBFX1dPUkQnKSB7XFxuICAgICAgICAgICAgICAgICAgICAvLyDlvJXnlKjmloflrZfor7Tor7RcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjLnRleHQgPT09IG51bGwgPyAnPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjLnRleHQpLnJlcGxhY2UoL1xcXFxcXFxcbi9nLCAnPGJyPicpICsgJzxicj48YSBocmVmPVxcXCJoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2VcXFwiPuafpeeci+ivhOiuujwvYT4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIOivhOiuumlk5p2l5rqQ6YO95LiN5LiA5qC3XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0Lm9yaWcuaWRfc3RyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDnuq/mloflrZdcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsaXN0Lm9yaWcudHlwZSA9PSAnRFlOQU1JQ19UWVBFX0RSQVcnKSB7XFxuICAgICAgICAgICAgICAgICAgICAvLyDlvJXnlKjlm77niYfor7Tor7RcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjLnRleHQgPT09IG51bGwgPyAnPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjLnRleHQpLnJlcGxhY2UoL1xcXFxcXFxcbi9nLCAnPGJyPicpICsgJzxicj48YSBocmVmPVxcXCJoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2VcXFwiPuafpeeci+ivhOiuujwvYT4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2VcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0Lm9yaWcubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5tYWpvci5kcmF3LmlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAxMVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5vcmlnLm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuZHJhdy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogaXRlbS5zcmMgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfM19zcXVhcmUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0uc3JjICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZygn5Y+v6IO96L+Y5pyJ5pyq6YCC6YWN55qE6K+06K+057G75Z6LJyk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgLy8g5YiG5YmyXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPueVmeiogDonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0LmNvbW1lbnQuY291bnQgKyAnXFxcXHRcXFxcdOWIhuS6qzonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0LmZvcndhcmQuY291bnQgKyAnXFxcXHRcXFxcdOWWnOasojonICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9zdGF0Lmxpa2UuY291bnQgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChsaXN0LnR5cGUgPT0gJ0RZTkFNSUNfVFlQRV9XT1JEJykge1xcbiAgICAgICAgICAgICAgICAvLyDnuq/mloflrZdcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5uYW1lICsgJ1xcXFx0XFxcXHRcXFxcdDxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5wdWJfdGltZSArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLmZhY2UgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS91cEhvbWUnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQ6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm1pZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWNlOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5mYWNlXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IChsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYyA9PT0gbnVsbCA/ICc8Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+dXDlpKrmh5LkuobvvIzov57mlofmoYjpg73kuI3mg7PphY0uLi48L2ZvbnQ+JyA6IGxpc3QubW9kdWxlcy5tb2R1bGVfZHluYW1pYy5kZXNjLnRleHQpLnJlcGxhY2UoL1xcXFxcXFxcbi9nLCAnPGJyPicpICsgJzxicj48YSBocmVmPVxcXCJoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2VcXFwiPuafpeeci+ivhOiuujwvYT4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGxpc3QuYmFzaWMuY29tbWVudF9pZF9zdHIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g57qv5paH5a2XXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogMTdcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj7nlZnoqIA6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5jb21tZW50LmNvdW50ICsgJ1xcXFx0XFxcXHTliIbkuqs6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5mb3J3YXJkLmNvdW50ICsgJ1xcXFx0XFxcXHTllpzmrKI6JyArIGxpc3QubW9kdWxlcy5tb2R1bGVfc3RhdC5saWtlLmNvdW50ICsgJzwvZm9udD48L3NtYWxsPjwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGlzdC50eXBlID09ICdEWU5BTUlDX1RZUEVfRFJBVycpIHtcXG4gICAgICAgICAgICAgICAgLy8g5Zu+54mH6K+06K+0XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IubmFtZSArICdcXFxcdFxcXFx0XFxcXHQ8c21hbGw+PHNtYWxsPjxmb250IGNvbG9yPVxcXCJncmV5XFxcIj4nICsgbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IucHViX3RpbWUgKyAnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5mYWNlICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvdXBIb21lJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2F1dGhvci5taWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QubW9kdWxlcy5tb2R1bGVfYXV0aG9yLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjZTogbGlzdC5tb2R1bGVzLm1vZHVsZV9hdXRob3IuZmFjZVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAobGlzdC5tb2R1bGVzLm1vZHVsZV9keW5hbWljLmRlc2MgPT09IG51bGwgPyAnPGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPnVw5aSq5oeS5LqG77yM6L+e5paH5qGI6YO95LiN5oOz6YWNLi4uPC9mb250PicgOiBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMuZGVzYy50ZXh0KS5yZXBsYWNlKC9cXFxcXFxcXG4vZywgJzxicj4nKSArICc8YnI+PGEgaHJlZj1cXFwiaGlrZXI6Ly9wYWdlL0NvbW1lbnRzP3A9ZnlwYWdlXFxcIj7mn6XnnIvor4Torro8L2E+JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBsaXN0LmJhc2ljLmNvbW1lbnRfaWRfc3RyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOebuOewv++8iOWbvueJh+WKqOaAge+8iVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IDExXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBsaXN0Lm1vZHVsZXMubW9kdWxlX2R5bmFtaWMubWFqb3IuZHJhdy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uc3JjICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfM19zcXVhcmUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS5zcmMgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzbWFsbD48Zm9udCBjb2xvcj1cXFwiZ3JleVxcXCI+55WZ6KiAOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuY29tbWVudC5jb3VudCArICdcXFxcdFxcXFx05YiG5LqrOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQuZm9yd2FyZC5jb3VudCArICdcXFxcdFxcXFx05Zac5qyiOicgKyBsaXN0Lm1vZHVsZXMubW9kdWxlX3N0YXQubGlrZS5jb3VudCArICc8L2ZvbnQ+PC9zbWFsbD48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSlcXG59XFxuLy8g5pe26Ze06L2s5o2i5Ye95pWwXFxuJC5leHBvcnRzLnRpbWVDb252ZXJ0ID0gZnVuY3Rpb24gKHRpbWUpIHtcXG4gICAgZnVuY3Rpb24gZm9ybWF0RGF0ZShlLCB0KSB7XFxuICAgICAgICBlID0gbmV3IERhdGUoZSAqIDEwMDApOyAvL+aXtumXtOaIs+S4ujEw5L2N6ZyAKjEwMDDvvIzml7bpl7TmiLPkuLoxM+S9jeeahOivneS4jemcgOS5mDEwMDBcXG4gICAgICAgIHJldHVybiB0LnJlcGxhY2UoL3l5eXl8WVlZWS8sIGUuZ2V0RnVsbFllYXIoKSlcXG4gICAgICAgICAgICAucmVwbGFjZSgveXl8WVkvLCByKGUuZ2V0RnVsbFllYXIoKSAlIDEwMCwgMikpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL21tfE1NLywgcihlLmdldE1vbnRoKCkgKyAxLCAyKSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvbXxNL2csIGUuZ2V0TW9udGgoKSArIDEpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL2RkfERELywgcihlLmdldERhdGUoKSwgMikpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL2R8RC9nLCBlLmdldERhdGUoKSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvaGh8SEgvLCByKGUuZ2V0SG91cnMoKSwgMikpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL2h8SC9nLCBlLmdldEhvdXJzKCkpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL2lpfElJLywgcihlLmdldE1pbnV0ZXMoKSwgMikpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL2l8SS9nLCBlLmdldE1pbnV0ZXMoKSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvc3N8U1MvLCByKGUuZ2V0U2Vjb25kcygpLCAyKSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvc3xTL2csIGUuZ2V0U2Vjb25kcygpKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC93L2csIGUuZ2V0RGF5KCkpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL1cvZywgW1xcXCLml6VcXFwiLCBcXFwi5LiAXFxcIiwgXFxcIuS6jFxcXCIsIFxcXCLkuIlcXFwiLCBcXFwi5ZubXFxcIiwgXFxcIuS6lFxcXCIsIFxcXCLlha1cXFwiXVtlLmdldERheSgpXSlcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiByKGUsIHQpIHtcXG4gICAgICAgIGZvciAodmFyIHIgPSAwLCBuID0gdCAtIChlICsgXFxcIlxcXCIpLmxlbmd0aDsgciA8IG47IHIrKykgZSA9IFxcXCIwXFxcIiArIGU7XFxuICAgICAgICByZXR1cm4gZSArIFxcXCJcXFwiXFxuICAgIH1cXG4gICAgcmV0dXJuIGZvcm1hdERhdGUodGltZSwgJ1lZWVktTU0tREQgaGg6aWk6c3MnKTtcXG4gICAgLy8gY29uc29sZS5sb2coZm9ybWF0RGF0ZSgxNjY0MDg5NTMyLCAnWVlZWS1NTS1ERCBoaDppaTpzcycpKTtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ2aWRlb1BhZ2VcIixcInBhdGhcIjpcInZpZGVvXCIsXCJydWxlXCI6XCJqczpcXG5cXG52YXIgZCA9IFtdO1xcblxcbi8vIOmihOWkhOeQhlxcblxcbnB1dE15VmFyKCflip/og73mipjlj6AnLCAn5YWzJyk7XFxuXFxuaW1nTGluaz1zdG9yYWdlMC5nZXRNeVZhcign5Zu+5qCHJyk7XFxuXFxuYWlkID0gTVlfUEFSQU1TLmFpZCArIFxcXCJcXFwiO1xcblxcbm1pZCA9IE1ZX1BBUkFNUy5taWQgKyBcXFwiXFxcIjtcXG5cXG50cnkge1xcblxcbsKgIMKgIC8v6I635Y+W6KeG6aKR5YiGUOS/oeaBr1xcblxcbsKgIMKgIHZhciBwID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3P2FpZD1cXFwiICsgYWlkKSkuZGF0YTtcXG5cXG7CoCDCoCBoYXNMaWtlPSQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmhhc0xpa2UoYWlkKTtcXG5cXG7CoCDCoCBoYXNGYXZvdXI9JC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuaGFzRmF2b3VyKGFpZCk7XFxuXFxuwqAgwqAgaWYgKHAucGFnZXMubGVuZ3RoID09IDEpIHtcXG5cXG7CoCDCoCDCoCDCoCBjaWQgPSBwLnBhZ2VzWzBdLmNpZDtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogcC5waWMgKyAnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoKS5sYXp5UnVsZSgoYWlkLCBjaWQsIHFuKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8g55yf56a75LqG5Liq5aSn6LCx77yM5piO5piO5pu/5o2i5o6J5LqG77yMdWHlrZfnrKbkuLLlj4jlj5jlm57mnaXkuobvvIzlj4jopoHlpITnkIbkuIDmrKFcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuYmlsaUxhenkoYWlkLCBjaWQsIHFuKS5yZXBsYWNlKC87L2csIFxcXCLvvJvvvJtcXFwiKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQgKyBcXFwiXFxcIiwgY2lkICsgXFxcIlxcXCIsICcxMTInKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInBpY18xXFxcIlxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICc8Zm9udCBjb2xvcj1cXFwiYmx1ZVxcXCI+JyArIHAub3duZXIubmFtZSArICc8L2ZvbnQ+JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdXBIb21lXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IHAub3duZXIuZmFjZSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1pZDogcC5vd25lci5taWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAub3duZXIubmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiBwLm93bmVyLmZhY2VcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLnN0YXQubGlrZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGhhc0xpa2U9PTE/aW1nTGluay7lt7LngrnotZ46aW1nTGluay7mnKrngrnotZ4sXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGFpZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5saWtlTG9naWMoYWlkKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOntcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDonc2V0TGlrZSdcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IMKgcC5zdGF0LmZhdm9yaXRlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaGFzRmF2b3VyP2ltZ0xpbmsu5bey5pS26JePOmltZ0xpbmsu5pyq5pS26JePLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgnI25vTG9hZGluZyMjbm9IaXN0b3J5IycpLmxhenlSdWxlKChhaWQpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB1cE1pZD1KU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvY3kvYmlsaS50eHRcXFwiKSkudXNlck1pZDtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuZmF2b3VyTG9naWMoYWlkLHVwTWlkKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOntcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDonc2V0RmF2b3VyJ1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9LHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogJ+eojeWQjuWGjeeciycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBpbWdMaW5rLueojeWQjuWGjeeciyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoYWlkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmp1ZGdlVG92aWV3KGFpZClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCDCoCDCoCB9LCB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfmn6XnnIvor4TorronLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogJ2hpa2VyOi8vcGFnZS9Db21tZW50cz9wPWZ5cGFnZScsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBpbWdMaW5rLuafpeeci+ivhOiuuixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwiaWRcXFwiOiBhaWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcInR5cGVcXFwiOjFcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLmRlc2MsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJsb25nX3RleHRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIH0gZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6cC5waWMgKyAnQFJlZmVyZXI9JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgocCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5P2Z5cGFnZScpLnJ1bGUoKHApID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkID0gW107XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogcC5kZXNjLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwibG9uZ190ZXh0XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldFJlc3VsdChkKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBwKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIHApLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwicGljXzFcXFwiXFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICc8Zm9udCBjb2xvcj1cXFwiYmx1ZVxcXCI+JyArIHAub3duZXIubmFtZSArICc8L2ZvbnQ+JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdXBIb21lXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IHAub3duZXIuZmFjZSArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1pZDogcC5vd25lci5taWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAub3duZXIubmFtZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBmYWNlOiBwLm93bmVyLmZhY2VcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdsaW5lJ1xcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBwLnN0YXQubGlrZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGhhc0xpa2U9PTE/aW1nTGluay7lt7LngrnotZ46aW1nTGluay7mnKrngrnotZ4sXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGFpZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5saWtlTG9naWMoYWlkKVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH0sIGFpZCksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOntcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDonc2V0TGlrZSdcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IHAuc3RhdC5mYXZvcml0ZSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBpbWc6IGhhc0Zhdm91cj9pbWdMaW5rLuW3suaUtuiXjzppbWdMaW5rLuacquaUtuiXjyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgoYWlkKSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXBNaWQ9SlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLnVzZXJNaWQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmZhdm91ckxvZ2ljKGFpZCx1cE1pZClcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQpLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF80XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYTp7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWQ6J3NldEZhdm91cidcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfnqI3lkI7lho3nnIsnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7nqI3lkI7lho3nnIssXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGFpZCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJldHVybiAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5qdWRnZVRvdmlldyhhaWQpXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgYWlkKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImljb25fc21hbGxfNFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgfSwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5p+l55yL6K+E6K66JyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICdoaWtlcjovL3BhZ2UvQ29tbWVudHM/cD1meXBhZ2UnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7mn6XnnIvor4TorrosXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzRcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcImlkXFxcIjogYWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJ0eXBlXFxcIjoxXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuXFxuwqAgwqAgwqAgwqAgfSx7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6ICfpgInpm4bliJfooahcXFxcdFxcXFx0XFxcXHQ8c21hbGw+PHNtYWxsPuWFsScrcC52aWRlb3MrJ+adoeinhumikTwvc21hbGw+PC9zbWFsbD4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogaW1nTGluay7liJfooagsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcblxcbsKgIMKgIMKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZSdcXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCBwLnBhZ2VzLmZvckVhY2goaXRlbSA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY2lkID0gaXRlbS5jaWQ7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogaXRlbS5wYXJ0LFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHVybDogJCgpLmxhenlSdWxlKChhaWQsIGNpZCwgcW4pID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcIikuYmlsaUxhenkoYWlkLCBjaWQsIHFuKS5yZXBsYWNlKC87L2csIFxcXCLvvJvvvJtcXFwiKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9LCBhaWQgKyBcXFwiXFxcIiwgY2lkICsgXFxcIlxcXCIsICcxMTInKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInRleHRfMVxcXCJcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KVxcblxcbsKgIMKgIMKgIMKgIH0pXFxuXFxuwqAgwqAgfVxcblxcbn0gY2F0Y2ggKGUpIHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiAn6aG16Z2i6LWw5Lii5LqGLi4uJyxcXG5cXG7CoCDCoCDCoCDCoCBpbWc6ICdodHRwczovL2kwLmhkc2xiLmNvbS9iZnMvZ2VuZXJhbC9mN2I2NjcwMTFhNDY2MTU3MzJjNzAxZjRiYjFkMDdmNzkzZjhkMWRmLnBuZ0BSZWZlcmVyPScsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFxuwqAgwqAgwqAgwqAgZGVzYzogJ+Wkp+amgueOh+inhumikeiiq+Wwgeemge+8jOaIluiAhXVw5bey6LeR6LevficsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJwaWNfMVxcXCJcXG5cXG7CoCDCoCB9KTtcXG5cXG59XFxuXFxuc2V0UmVzdWx0KGQpO1xcblxcblxcblwifSx7XCJjb2xfdHlwZVwiOlwibG9uZ190ZXh0XCIsXCJuYW1lXCI6XCLor4TorrpcIixcInBhdGhcIjpcIkNvbW1lbnRzXCIsXCJydWxlXCI6XCJqczpcXG5cXG52YXIgZCA9IFtdO1xcblxcbnZhciBpZCA9IE1ZX1BBUkFNUy5pZDtcXG5cXG52YXIgdHlwZSA9IE1ZX1BBUkFNUy50eXBlO1xcblxcbmxvZyhpZCk7XFxuXFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcblxcbsKgIMKgIC8vIOiyjOS8vOaaguaXtuWPquiDveaWh+WtlyvmlbDlrZdcXG5cXG7CoCDCoCBkLnVuc2hpZnQoe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiBcXFwi5Y+R5p2h6K+E6K665ZCnXFxcIixcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG5cXG7CoCDCoCDCoCDCoCB1cmw6ICQudG9TdHJpbmcoKGlkLHR5cGUpID0+IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBsZXQgY3NyZiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWUubWF0Y2goL2JpbGlfamN0PSguKj8pOy8pWzFdO1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHBvc3QoXFxcImh0dHA6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvcmVwbHkvYWRkXFxcIiwge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGJvZHk6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwidHlwZVxcXCI6IHR5cGUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIm9pZFxcXCI6IGlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIFxcXCJjc3JmXFxcIjogY3NyZixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBcXFwibWVzc2FnZVxcXCI6IGlucHV0XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9iaWxpLnR4dFxcXCIpKS5jb29raWVcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSlcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSgpXFxuXFxuwqAgwqAgwqAgwqAgfSwgaWQsdHlwZSlcXG5cXG7CoCDCoCB9KVxcblxcbn1cXG5cXG5sZXQgZGF0YSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldENvbW1lbnRzKGlkLHR5cGUsTVlfUEFHRSlcXG5cXG5kYXRhLmZvckVhY2goaXRlbSA9PiB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogaXRlbS5tZW1iZXIudW5hbWUrJ1xcXFx0XFxcXHRcXFxcdDxzbWFsbD48c21hbGw+PGZvbnQgY29sb3I9XFxcImdyZXlcXFwiPicraXRlbS5yZXBseV9jb250cm9sLmxvY2F0aW9uICsgXFxcIiBcXFwiICsgaXRlbS5yZXBseV9jb250cm9sLnRpbWVfZGVzYysnPC9mb250Pjwvc21hbGw+PC9zbWFsbD4nLFxcblxcbsKgIMKgIMKgIMKgIGltZzogaXRlbS5tZW1iZXIuYXZhdGFyKydAUmVmZXJlcj0nLFxcblxcbsKgIMKgIMKgIMKgIHVybDonaGlrZXI6Ly9wYWdlL3VwSG9tZScsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcblxcbsKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgbWlkOiBpdGVtLm1lbWJlci5taWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdGl0bGU6IGl0ZW0ubWVtYmVyLnVuYW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IGl0ZW0ubWVtYmVyLmF2YXRhclxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCB9KVxcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgdGl0bGU6IGl0ZW0uY29udGVudC5tZXNzYWdlLFxcblxcbsKgIMKgIH0pXFxuXFxufSlcXG5cXG5zZXRSZXN1bHQoZCk7XFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLorqLpmIXliJfooahcIixcInBhdGhcIjpcInN1YnNjcmlwdGlvblwiLFwicnVsZVwiOlwiaWYgKGdldEl0ZW0oJ+iuoumYheexu+WeiycsICcxJykgPT0gJzEnKSB7XFxuXFxuwqAgwqAgdHlwZXJOYW1lID0gJ+i/veeVqic7XFxuXFxufSBlbHNlIHtcXG5cXG7CoCDCoCB0eXBlck5hbWUgPSAn6L+95YmnJztcXG5cXG59XFxuXFxuZC5wdXNoKHtcXG5cXG7CoCDCoCB0aXRsZTogJ+i/veeVqicgPT0gdHlwZXJOYW1lID8gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCJyZWRcXFwiPui/veeVqjwvZm9udD4nIDogJ+i/veeVqicsXFxuXFxuwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIHNldEl0ZW0oJ+iuoumYheexu+WeiycsICcxJylcXG5cXG7CoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcbsKgIMKgIH0pLFxcblxcbsKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG5cXG59LHtcXG5cXG7CoCDCoCB0aXRsZTogJ+i/veWJpycgPT0gdHlwZXJOYW1lID8gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCJyZWRcXFwiPui/veWJpzwvZm9udD4nIDogJ+i/veWJpycsXFxuXFxuwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIHNldEl0ZW0oJ+iuoumYheexu+WeiycsICcyJylcXG5cXG7CoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcbsKgIMKgIH0pLFxcblxcbsKgIMKgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG5cXG59KTtcXG5cXG5zdWJzY3JpcHRpb25zID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYmFuZ3VtaS9mb2xsb3cvbGlzdD90eXBlPVxcXCIgKyBnZXRJdGVtKCforqLpmIXnsbvlnosnLCAnMScpICsgXFxcIiZmb2xsb3dfc3RhdHVzPTAmcG49XFxcIiArIHBhZ2UgKyBcXFwiJnBzPTE1JnZtaWQ9XFxcIiArIG1pZCwge1xcblxcbsKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llXFxuXFxuwqAgwqAgfVxcblxcbn0pKS5kYXRhO1xcblxcbmlmIChwYWdlID09IDEpIHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiBcXFwi5b2T5YmNXFxcIiArIHR5cGVyTmFtZSArIFxcXCLmlbDph486XFxcIiArIHN1YnNjcmlwdGlvbnMudG90YWwsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcblxcbsKgIMKgIH0pXFxuXFxufVxcblxcbnN1YnNjcmlwdGlvbnMubGlzdC5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIGQucHVzaCh7XFxuXFxuwqAgwqAgwqAgwqAgdGl0bGU6IGxpc3QudGl0bGUsXFxuXFxuwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmNvdmVyICsgXFxcIkBSZWZlcmVyPVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2ZpbG1lcmppI2ltbWVyc2l2ZVRoZW1lI1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgZGVzYzogbGlzdC5ldmFsdWF0ZS5zdWJzdHJpbmcoMCwgMTIpICsgJ+KAmOKAmOKAmeKAmeKApjxmb250IGNvbG9yPVxcXCIjMUMxQzFDXFxcIj7or6bmg4U8L2ZvbnQ+JyArICdcXFxcbicgKyBsaXN0LnNlYXNvbl90eXBlX25hbWUgKyAnfCcgKyAobGlzdC5hcmVhcz09PXVuZGVmaW5lZD8nJzpsaXN0LmFyZWFzWzBdLm5hbWUgKyAnXFxcXG4nKSArIChsaXN0LnByb2dyZXNzID09ICcnID8gJ+WwmuacquingueciycgOiBsaXN0LnByb2dyZXNzKSArIChsaXN0Lm5ld19lcC5pbmRleF9zaG93PT09dW5kZWZpbmVkPycnOid8JysobGlzdC5uZXdfZXAuaW5kZXhfc2hvdy5tYXRjaCgv5pu05pawfOWNs+Wwhi8pID8gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCJyZWRcXFwiPicgKyBsaXN0Lm5ld19lcC5pbmRleF9zaG93ICsgJzwvZm9udD4nOiBsaXN0Lm5ld19lcC5pbmRleF9zaG93KSksXFxuXFxuwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBzZWFzb25faWQ6IGxpc3Quc2Vhc29uX2lkXFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIH0pO1xcblxcbn0pO1xcblxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YWz5rOo5YiX6KGoXCIsXCJwYXRoXCI6XCJhdHRlbnRpb25cIixcInJ1bGVcIjpcImlmIChNWV9QQUdFID09IDEpIHtcXG5cXG7CoCDCoCBmb2N1c0dyb3Vwcz0kLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRNeUF0dGVudGlvbkdyb3VwTGlzdCgpO1xcblxcbsKgIMKgIHB1dE15VmFyKCd0ZW1wSWQnLCBKU09OLnN0cmluZ2lmeShmb2N1c0dyb3Vwc1sxXS50YWdpZCkpO1xcblxcbsKgIMKgIGZvY3VzR3JvdXBzLmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogbGlzdC50YWdpZCA9PSBnZXRJdGVtKCflhbPms6jliIbnu4QnLCBKU09OLnN0cmluZ2lmeShmb2N1c0dyb3Vwc1sxXS5pZCkpID8gXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSdyZWQnPlxcXCIgKyBsaXN0Lm5hbWUgKyBsaXN0LmNvdW50ICsgXFxcIjwvZm9udD5cXFwiIDogbGlzdC5uYW1lICsgbGlzdC5jb3VudCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6ICQoJyNub0xvYWRpbmcjI25vSGlzdG9yeSMnKS5sYXp5UnVsZSgobGlzdCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+WFs+azqOWIhue7hCcsIEpTT04uc3RyaW5naWZ5KGxpc3QudGFnaWQpKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5YWz5rOo5YiG57uE5Li6OlxcXCIgKyBsaXN0Lm5hbWU7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgfSwgbGlzdCksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCB9KTtcXG5cXG7CoCDCoCAvLyDmnKvlsL7ooaXlhYXmgoTmgoTlhbPms6jliIbnu4RcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiAn5oKE5oKE5YWz5rOoJyA9PSBnZXRJdGVtKCflhbPms6jliIbnu4QnLCBKU09OLnN0cmluZ2lmeShmb2N1c0dyb3Vwc1swXS5pZCkpID8gXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSdyZWQnPuaChOaChOWFs+azqDwvZm9udD5cXFwiIDogXFxcIuaChOaChOWFs+azqFxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHNldEl0ZW0oJ+WFs+azqOWIhue7hCcsIFxcXCLmgoTmgoTlhbPms6hcXFwiKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCByZWZyZXNoUGFnZSh0cnVlKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5YWz5rOo5YiG57uE5Li6OlxcXCIgKyBcXFwi5oKE5oKE5YWz5rOoXFxcIjtcXG5cXG7CoCDCoCDCoCDCoCB9KSxcXG5cXG7CoCDCoCDCoCDCoCBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcbsKgIMKgIH0se1xcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbGluZSdcXG5cXG7CoCDCoCB9KTtcXG5cXG59XFxuXFxuaWYgKGdldEl0ZW0oJ+WFs+azqOWIhue7hCcpPT0n5oKE5oKE5YWz5rOoJykge1xcblxcbsKgIMKgIGdyb3VwQ29udGVudCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL3doaXNwZXJzP3BuPVxcXCIrcGFnZStcXFwiJnBzPTIwJmpzb25wPWpzb25wXFxcIiwge1xcblxcbsKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llXFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIH0pKS5kYXRhLmxpc3Q7XFxuXFxuwqAgwqAgZ3JvdXBDb250ZW50LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcIjxiaWc+PGZvbnQgY29sb3I9J2JsdWUnPlxcXCIgKyBsaXN0LnVuYW1lICsgXFxcIjwvZm9udD48L2JpZz48c21hbGw+XFxcIiArIGxpc3Quc2lnbiArIFxcXCI8L3NtYWxsPlxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmZhY2UgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2F2YXRhcicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3VwSG9tZVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtaWQ6IGxpc3QubWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnVuYW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IGxpc3QuZmFjZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCB9KTtcXG5cXG59ZWxzZXtcXG5cXG7CoCDCoCBncm91cENvbnRlbnQgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi90YWc/bWlkPVxcXCIgKyBtaWQgKyBcXFwiJnRhZ2lkPVxcXCIgKyBnZXRJdGVtKCflhbPms6jliIbnu4QnLCBnZXRNeVZhcigndGVtcElkJykpICsgXFxcIiZwbj1cXFwiICsgcGFnZSArIFxcXCImcHM9MjAmanNvbnA9anNvbnBcXFwiLCB7XFxuXFxuwqAgwqAgwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIFxcXCJDb29raWVcXFwiOiBjb29raWVcXG5cXG7CoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgfSkpLmRhdGE7XFxuXFxuwqAgwqAgZ3JvdXBDb250ZW50LmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB0aXRsZTogXFxcIjxiaWc+PGZvbnQgY29sb3I9J2JsdWUnPlxcXCIgKyBsaXN0LnVuYW1lICsgXFxcIjwvZm9udD48L2JpZz48c21hbGw+XFxcIiArIGxpc3Quc2lnbiArIFxcXCI8L3NtYWxsPlxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgaW1nOiBsaXN0LmZhY2UgKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ2F2YXRhcicsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3VwSG9tZVxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBtaWQ6IGxpc3QubWlkLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnVuYW1lLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGZhY2U6IGxpc3QuZmFjZVxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCB9KTtcXG5cXG59XFxuXFxuXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlLbol4/liJfooahcIixcInBhdGhcIjpcImNvbGVjdGlvblwiLFwicnVsZVwiOlwiaWYgKHBhZ2UgPT0gMSkge1xcclxcbiAgICBkLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6ICfmiJHliJvlu7rnmoTmlLbol4/lpLknID09IGdldEl0ZW0oJ+aUtuiXj+exu+WeiycsICfmiJHliJvlu7rnmoTmlLbol4/lpLknKSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7miJHliJvlu7rnmoTmlLbol4/lpLk8L2ZvbnQ+JyA6ICfmiJHliJvlu7rnmoTmlLbol4/lpLknLFxcclxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgICAgIHNldEl0ZW0oJ+aUtuiXj+exu+WeiycsICfmiJHliJvlu7rnmoTmlLbol4/lpLknKVxcclxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxyXFxuICAgICAgICB9KSxcXHJcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG4gICAgfSwge1xcclxcbiAgICAgICAgdGl0bGU6ICfnqI3lkI7lnKjnnIsnID09IGdldEl0ZW0oJ+aUtuiXj+exu+WeiycsICfmiJHliJvlu7rnmoTmlLbol4/lpLknKSA/ICfigJjigJjigJnigJk8Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7nqI3lkI7lnKjnnIs8L2ZvbnQ+JyA6ICfnqI3lkI7lnKjnnIsnLFxcclxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgICAgIHNldEl0ZW0oJ+aUtuiXj+exu+WeiycsICfnqI3lkI7lnKjnnIsnKVxcclxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxyXFxuICAgICAgICB9KSxcXHJcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXHJcXG4gICAgfSk7XFxyXFxufVxcclxcbmlmIChnZXRJdGVtKCfmlLbol4/nsbvlnosnLCAn5oiR5Yib5bu655qE5pS26JeP5aS5JykgPT0gJ+aIkeWIm+W7uueahOaUtuiXj+WkuScpIHtcXHJcXG4gICAgdHJ5IHtcXHJcXG4gICAgICAgIGlmIChwYWdlID09IDEpIHtcXHJcXG4gICAgICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICAvLyBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxyXFxuICAgICAgICAgICAgfSwgKTtcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIGNvbGxlY3Rpb25zID0gSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9saXN0NG5hdmlnYXRlXFxcIiwge1xcclxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXHJcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH0pKS5kYXRhO1xcclxcbiAgICAgICAgZ3JvdXBzID0gY29sbGVjdGlvbnNbMF0ubWVkaWFMaXN0UmVzcG9uc2UubGlzdDtcXHJcXG4gICAgICAgIHB1dE15VmFyKCd0ZW1wSWQnLCBKU09OLnN0cmluZ2lmeShncm91cHNbMF0uaWQpKTtcXHJcXG4gICAgICAgIGdyb3Vwcy5mb3JFYWNoKGxpc3QgPT4ge1xcclxcbiAgICAgICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LmlkID09IGdldEl0ZW0oJ+aUtuiXj+WkuScsIEpTT04uc3RyaW5naWZ5KGdyb3Vwc1swXS5pZCkpID8gXFxcIuKAnOKAnOKAneKAnTxmb250IGNvbG9yPSdyZWQnPlxcXCIgKyBsaXN0LnRpdGxlICsgXFxcIjwvZm9udD5cXFwiIDogbGlzdC50aXRsZSxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIyNub0hpc3RvcnkjJykubGF6eVJ1bGUoKGxpc3QpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+aUtuiXj+WkuScsIEpTT04uc3RyaW5naWZ5KGxpc3QuaWQpKTtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WIh+aNouaUtuiXj+WkueS4ujpcXFwiICsgbGlzdC50aXRsZTtcXHJcXG4gICAgICAgICAgICAgICAgfSwgbGlzdCksXFxyXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgICAgIGQucHVzaCh7XFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJ1xcclxcbiAgICAgICAgfSk7XFxyXFxuICAgICAgICBncm91cENvbnRlbnQgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvbGlzdD9tZWRpYV9pZD1cXFwiICsgZ2V0SXRlbSgn5pS26JeP5aS5JywgZ2V0TXlWYXIoJ3RlbXBJZCcpKSArIFxcXCImcG49XFxcIiArIHBhZ2UgKyBcXFwiJnBzPTIwJmtleXdvcmQ9Jm9yZGVyPW10aW1lJnR5cGU9MCZ0aWQ9MCZwbGF0Zm9ybT13ZWImanNvbnA9anNvbnBcXFwiLCB7XFxyXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcclxcbiAgICAgICAgICAgICAgICBcXFwiQ29va2llXFxcIjogY29va2llXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfSkpLmRhdGEubWVkaWFzO1xcclxcbiAgICAgICAgZ3JvdXBDb250ZW50LmZvckVhY2gobGlzdCA9PiB7XFxyXFxuICAgICAgICAgICAgZC5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QudGl0bGUsXFxyXFxuICAgICAgICAgICAgICAgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcclxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcclxcbiAgICAgICAgICAgICAgICBkZXNjOiAnVVA6JyArIGxpc3QudXBwZXIubmFtZSArICdcXFxcbicgKyBsaXN0LmludHJvLFxcclxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcclxcbiAgICAgICAgICAgICAgICAgICAgYWlkOiBsaXN0LmlkLFxcclxcbiAgICAgICAgICAgICAgICAgICAgbWlkOiBsaXN0LnVwcGVyLm1pZFxcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSk7XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgfSBjYXRjaCAoZSkge1xcclxcbiAgICAgICAgc2hvd0xvYWRpbmcoJ+WFhOW8n++8jOS9oOehruiupOS9oOacieaUtuiXj+WQl++8jOW/q+WOu+aUtuiXj+S4gOS4quinhumikX4nKTtcXHJcXG4gICAgfVxcclxcbn0gZWxzZSB7XFxyXFxuICAgIGxhdGVyVmlld3MgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9oaXN0b3J5L3Rvdmlldy93ZWI/anNvbnA9anNvbnBcXFwiLCB7XFxyXFxuICAgICAgICBoZWFkZXJzOiB7XFxyXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcclxcbiAgICAgICAgfVxcclxcbiAgICB9KSkuZGF0YTtcXHJcXG4gICAgY291bnQgPSBsYXRlclZpZXdzLmNvdW50O1xcclxcbiAgICBkLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6IFxcXCLlhbHmnIlcXFwiICsgY291bnQgKyBcXFwi5p2h5b6F55yL6KeG6aKR6K6w5b2VXFxcIixcXHJcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcclxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcclxcbiAgICB9KTtcXHJcXG4gICAgbGF0ZXJWaWV3cy5saXN0LmZvckVhY2gobGlzdCA9PiB7XFxyXFxuICAgICAgICBkLnB1c2goe1xcclxcbiAgICAgICAgICAgIHRpdGxlOiBsaXN0LnRpdGxlLFxcclxcbiAgICAgICAgICAgIGltZzogbGlzdC5waWMgKyBcXFwiQFJlZmVyZXI9XFxcIixcXHJcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcclxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIsXFxyXFxuICAgICAgICAgICAgZGVzYzogJ1VQOicgKyBsaXN0Lm93bmVyLm5hbWUgKyAnXFxcXG4nICsgbGlzdC5kZXNjLFxcclxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgIGFpZDogbGlzdC5haWQsXFxyXFxuICAgICAgICAgICAgICAgIG1pZDogbGlzdC5vd25lci5taWRcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICB9KTtcXHJcXG4gICAgfSk7XFxyXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Laz6L+5XCIsXCJwYXRoXCI6XCJ0cmFja1wiLFwicnVsZVwiOlwidmFyIG5leHRJbmZvID0ge307XFxuXFxuaWYgKHBhZ2UgPT0gMSkge1xcblxcbsKgIMKgIGhpc3RvcmllcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvaGlzdG9yeS9jdXJzb3I/bWF4PTAmdmlld19hdD0wJmJ1c2luZXNzPVxcXCIsIHtcXG5cXG7CoCDCoCDCoCDCoCBoZWFkZXJzOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgXFxcIkNvb2tpZVxcXCI6IGNvb2tpZVxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCB9KSkuZGF0YTtcXG5cXG7CoCDCoCBuZXh0SW5mby5tYXggPSBoaXN0b3JpZXMuY3Vyc29yLm1heDtcXG5cXG7CoCDCoCBuZXh0SW5mby52aWV3X2F0ID0gaGlzdG9yaWVzLmN1cnNvci52aWV3X2F0O1xcblxcbsKgIMKgIG5leHRJbmZvLmJ1c2luZXNzID0gaGlzdG9yaWVzLmN1cnNvci5idXNpbmVzcztcXG5cXG59IGVsc2Uge1xcblxcbsKgIMKgIGhpc3RvcmllcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2UvaGlzdG9yeS9jdXJzb3I/bWF4PVxcXCIgKyBzdG9yYWdlMC5nZXRNeVZhcihKU09OLnN0cmluZ2lmeShwYWdlKSkubWF4ICsgXFxcIiZ2aWV3X2F0PVxcXCIgKyBzdG9yYWdlMC5nZXRNeVZhcihKU09OLnN0cmluZ2lmeShwYWdlKSkudmlld19hdCArIFxcXCImYnVzaW5lc3M9XFxcIiArIHN0b3JhZ2UwLmdldE15VmFyKEpTT04uc3RyaW5naWZ5KHBhZ2UpKS5idXNpbmVzcywge1xcblxcbsKgIMKgIMKgIMKgIGhlYWRlcnM6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBcXFwiQ29va2llXFxcIjogY29va2llXFxuXFxuwqAgwqAgwqAgwqAgfVxcblxcbsKgIMKgIH0pKS5kYXRhO1xcblxcbsKgIMKgIG5leHRJbmZvLm1heCA9IGhpc3Rvcmllcy5jdXJzb3IubWF4O1xcblxcbsKgIMKgIG5leHRJbmZvLnZpZXdfYXQgPSBoaXN0b3JpZXMuY3Vyc29yLnZpZXdfYXQ7XFxuXFxuwqAgwqAgbmV4dEluZm8uYnVzaW5lc3MgPSBoaXN0b3JpZXMuY3Vyc29yLmJ1c2luZXNzO1xcblxcbn1cXG5cXG5zdG9yYWdlMC5wdXRNeVZhcihKU09OLnN0cmluZ2lmeShwYWdlICsgMSksIG5leHRJbmZvKTtcXG5cXG5oaXN0b3JpZXMubGlzdC5mb3JFYWNoKGxpc3QgPT4ge1xcblxcbsKgIMKgIHZpZXdUaW1lPXBidGltZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnRpbWVDb252ZXJ0KGxpc3Qudmlld19hdCk7XFxuXFxuwqAgwqAgaWYgKGxpc3QuaGlzdG9yeS5idXNpbmVzcyA9PSAnYXJ0aWNsZScpIHtcXG5cXG7CoCDCoCDCoCDCoCAvLyDkuJPmoI/mlofnq6BcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnNob3dfdGl0bGU9PScnP2xpc3QudGl0bGU6bGlzdC5zaG93X3RpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlcnNbMF0gKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9hcnRpY2xlRGV0YWlsXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAobGlzdC5hdXRob3JfbmFtZT09Jyc/dmlld1RpbWU6J1VQOicgKyBsaXN0LmF1dGhvcl9uYW1lKydcXFxcbicgKSsgdmlld1RpbWUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDogbGlzdC5oaXN0b3J5Lm9pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfSBlbHNlIGlmKGxpc3QuaGlzdG9yeS5idXNpbmVzcyA9PSAnYXJ0aWNsZS1saXN0Jyl7XFxuXFxuwqAgwqAgwqAgwqAgLy8g5paH56ug5YiX6KGo77yf77yI5Y+N5q2jaWTlrZjmlL7kvY3nva7kuI3kuIDmoLfvvIlcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnNob3dfdGl0bGU9PScnP2xpc3QudGl0bGU6bGlzdC5zaG93X3RpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlcnNbMF0gKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vcGFnZS9hcnRpY2xlRGV0YWlsXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAobGlzdC5hdXRob3JfbmFtZT09Jyc/dmlld1RpbWU6J1VQOicgKyBsaXN0LmF1dGhvcl9uYW1lKydcXFxcbicgKSsgdmlld1RpbWUsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDogbGlzdC5oaXN0b3J5LmNpZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfWVsc2UgaWYobGlzdC5oaXN0b3J5LmJ1c2luZXNzID09ICdwZ2MnKXtcXG5cXG7CoCDCoCDCoCDCoCAvLyDns7vliJfliafpm4bvvIjljZXpm4bvvIlcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnNob3dfdGl0bGU9PScnP2xpc3QudGl0bGU6bGlzdC5zaG93X3RpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2ZpbG1lcmppI2ltbWVyc2l2ZVRoZW1lI1xcXCIsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZGVzYzogKGxpc3QuYXV0aG9yX25hbWU9PScnP2xpc3QudGFnX25hbWUrJ1xcXFx0XFxcXHQnK2xpc3QubmV3X2Rlc2MrJ1xcXFxuJyt2aWV3VGltZTonVVA6JyArIGxpc3QuYXV0aG9yX25hbWUrJ1xcXFxuJyt2aWV3VGltZSksXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBlcF9pZDpsaXN0Lmhpc3RvcnkuZXBpZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCB9ZWxzZSB7XFxuXFxuwqAgwqAgwqAgwqAgLy8g5pmu6YCadmlkZW9cXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnNob3dfdGl0bGU9PScnP2xpc3QudGl0bGU6bGlzdC5zaG93X3RpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5jb3ZlciArIFxcXCJAUmVmZXJlcj1cXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAobGlzdC5hdXRob3JfbmFtZT09Jyc/bGlzdC50YWdfbmFtZSsnXFxcXHRcXFxcdCcrbGlzdC5uZXdfZGVzYysnXFxcXG4nK3ZpZXdUaW1lOidVUDonICsgbGlzdC5hdXRob3JfbmFtZSsnXFxcXG4nK3ZpZXdUaW1lKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBleHRyYToge1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGFpZDogbGlzdC5oaXN0b3J5Lm9pZCxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9XFxuXFxuwqAgwqAgwqAgwqAgfSk7XFxuXFxuwqAgwqAgfVxcblxcbn0pO1xcblxcblxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Yqo5oCBXCIsXCJwYXRoXCI6XCJsYXRldE5ld3NcIixcInJ1bGVcIjpcImQucHVzaCh7XFxuXFxuwqAgwqAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcblxcbn0pO1xcblxcbmxhdGVuZXdzPSQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLmdldER5bmFtaWNEYXRhKCdteUhvbWUnKTtcXG5cXG5ldmFsKCQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnNob3dEeW5hbWljRGF0YSgpKTtcXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4k+agj+WIl+ihqFwiLFwicGF0aFwiOlwiYWN0aWNsZUxpc3RcIixcInJ1bGVcIjpcImpzOlxcblxcbnZhciBkPVtdO1xcblxcbnBhZ2U9TVlfUEFHRTtcXG5cXG51cE1pZCA9IE1ZX1BBUkFNUy5taWQgKyBcXFwiXFxcIjtcXG5cXG5hcnRpY2xlTGlzdD0kLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKS5nZXRVc2VyQXJ0aWNsZSh1cE1pZCxwYWdlKTtcXG5cXG5hcnRpY2xlTnVtPWFydGljbGVMaXN0LmNvdW50O1xcblxcbmlmIChhcnRpY2xlTnVtPT11bmRlZmluZWQpIHtcXG5cXG7CoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIHRpdGxlOiAn6L+ZdXDmsqHmnInkuJPmoI/mlofnq6AnLFxcblxcbsKgIMKgIMKgIMKgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuXFxuwqAgwqAgfSk7XFxuXFxufWVsc2V7XFxuXFxuwqAgwqAgbWF4UGFnZSA9IE1hdGguY2VpbChhcnRpY2xlTnVtIC8gYXJ0aWNsZUxpc3QucHMpO1xcblxcbsKgIMKgIGlmIChwYWdlIDw9IG1heFBhZ2UpIHtcXG5cXG7CoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiAn5b2T5YmNOuesrCcgKyBhcnRpY2xlTGlzdC5wbiArICfpobVcXFxcdFxcXFx0XFxcXHTlhbHmnIknICsgbWF4UGFnZSArICfpobUsJyArIGFydGljbGVOdW0gKyAn5p2h5pWw5o2uJyxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcblxcbsKgIMKgIMKgIMKgIH0pO1xcblxcbsKgIMKgIMKgIMKgIGFydGljbGVMaXN0LmFydGljbGVzLmZvckVhY2gobGlzdCA9PiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgcGJ0aW1lPSQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnRpbWVDb252ZXJ0KGxpc3QucHVibGlzaF90aW1lKTtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBkLnB1c2goe1xcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpdGxlOiBsaXN0LnRpdGxlLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGltZzogbGlzdC5iYW5uZXJfdXJsPT0nJz8gKGxpc3QuaW1hZ2VfdXJscysgJ0BSZWZlcmVyPScpOihsaXN0LmJhbm5lcl91cmwrICdAUmVmZXJlcj0nKSxcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBkZXNjOiAn4oCY4oCY4oCZ4oCZPHNtYWxsPicrbGlzdC5zdGF0cy52aWV3KyfnnIvov4dcXFxcdFxcXFx0JytsaXN0LnN0YXRzLmxpa2UrJ+WWnOasolxcXFx0XFxcXHQnK2xpc3Quc3RhdHMuZmF2b3JpdGUrJ+aUtuiXj1xcXFxuJyArIHBidGltZSsnPC9zbWFsbD4nLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2FydGljbGVEZXRhaWxcXFwiLFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGV4dHJhOiB7XFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLy8g5LiT5qCP5paH56ugaWRcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZDogbGlzdC5pZFxcblxcbsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCDCoCDCoCB9KTtcXG5cXG7CoCDCoCB9XFxuXFxufVxcblxcbnNldFJlc3VsdChkKTtcXG5cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4k+agj+aWh+eroFg1XCIsXCJwYXRoXCI6XCJhcnRpY2xlRGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5cXG52YXIgZCA9IFtdO1xcblxcbnBhZ2UgPSBNWV9QQUdFO1xcblxcbmN2aWQgPSBNWV9QQVJBTVMuaWQgKyBcXFwiXFxcIjtcXG5cXG5kLnB1c2goe1xcblxcbsKgIMKgIHVybDogXFxcImh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9yZWFkL2N2XFxcIitjdmlkLFxcblxcbsKgIMKgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcblxcbsKgIMKgIGRlc2M6IFxcXCIxMDAlJiZmbG9hdFxcXCIsXFxuXFxuwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCBjYW5CYWNrOiB0cnVlXFxuXFxuwqAgwqAgfVxcblxcbn0pXFxuXFxuc2V0UmVzdWx0KGQpO1xcblxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi57u85ZCI54Ot6ZeoXCIsXCJwYXRoXCI6XCJob3RWaWRlb1wiLFwicnVsZVwiOlwibGV0IHJlcyA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9wb3B1bGFyP3BuPVxcXCIgKyBNWV9QQUdFLCB7XFxuXFxuwqAgwqAgaGVhZGVyczoge1xcblxcbsKgIMKgIMKgIMKgIENvb2tpZTogSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L2JpbGkudHh0XFxcIikpLmNvb2tpZVxcblxcbsKgIMKgIH1cXG5cXG59KSkuZGF0YVxcblxcbnJlcy5saXN0LmZvckVhY2goaXRlbSA9PiB7XFxuXFxuwqAgwqAgZC5wdXNoKHtcXG5cXG7CoCDCoCDCoCDCoCB0aXRsZTogaXRlbS50aXRsZSxcXG5cXG7CoCDCoCDCoCDCoCBpbWc6IGl0ZW0ucGljKyBcXFwiQFJlZmVyZXI9XFxcIixcXG5cXG7CoCDCoCDCoCDCoCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiLFxcblxcbsKgIMKgIMKgIMKgIGRlc2M6IGl0ZW0ucHViX2xvY2F0aW9uLFxcblxcbsKgIMKgIMKgIMKgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuXFxuwqAgwqAgwqAgwqAgZXh0cmE6IHtcXG5cXG7CoCDCoCDCoCDCoCDCoCDCoCBcXFwiYWlkXFxcIjogaXRlbS5haWQsXFxuXFxuwqAgwqAgwqAgwqAgwqAgwqAgXFxcImNpZFxcXCI6IGl0ZW0uY2lkLFxcblxcbsKgIMKgIMKgIMKgIH1cXG5cXG7CoCDCoCB9KVxcblxcbn0pXFxuXFxuXFxuXCJ9XSIsImljb24iOiJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW92aWUvMjAuc3ZnIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment