Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjMwMzE0MDIsImNvbF90eXBlIjoibW92aWVfMSIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcbmlmIChfdHlwZSA9PSBcIuaWsOeJiFwiKSB7XG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7XG59IGVsc2UgaWYgKF90eXBlID09IFwi5pen54mIXCIpe1xuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9jb21tb24yXCIpKS5ydWxlKTtcbn0iLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlJmtleXdvcmQ9KioiLCJncm91cCI6IuKRoeeIseS8mOiFviIsInNlYXJjaEZpbmQiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9zXCIpKS5ydWxlKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8yIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS95Y2xcIikpLnJ1bGUpOyIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGg5LiA57qn5paw6aG16Z2iXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogJChcXFwi5pu05aSaXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIC8vcGljX3VybDogJ2h0dHBzOi8vaW1nMC5iYWlkdS5jb20vaXQvdT0xNjEyMTAxNDIzLDExNDU5ODIxNjMmZm09MjUzJmFwcD0xMzgmZj1KUEVHP3c9NTAwJmg9NDI0JyxcXG4gICAgICAgIGltZzpcXFwiaHR0cHM6Ly93d3cuaGVsbG9pbWcuY29tL2ltYWdlcy8yMDIyLzA3LzIxL1p2WUNFUy5wbmdcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18xJyxcXG4gICAgICAgIGRlc2M6XFxcIjBcXFwiXFxuICAgIH0pO2QucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIvCflI1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiJ2hpa2VyOi8vc2VhcmNoP3J1bGU9XFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFwiJnM9JytpbnB1dFxcXCIsXFxuICAgICAgICBkZXNjOiBcXFwi5pCc5L2g5oOz55yLLi4uXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmjpLooYzmppwnLFxcbiAgICAgICAgdXJsOiAkKFxcXCLmjpLooYzmppxcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vcS81MC5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnm7Tmkq1cXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vcS8yMi5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfml7blhYnmnLonLFxcbiAgICAgICAgdXJsOiAkKFxcXCLml7blhYnmnLpcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vcS81Ni5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICdVUCcsXFxuICAgICAgICB1cmw6ICQoXFxcIlVQ5Li7XFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL3EvOTgucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJChcXFwi57Si5byVXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL3EvNDcucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5paw55WqJyxcXG4gICAgICAgIHVybDogJChcXFwi5paw55WqXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL3EvMjMucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5ryr5ri4JyxcXG4gICAgICAgIHVybDogJChcXFwi5ryr5ri4XFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL3EvODMucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdsb2dpbicsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9xLzIucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJwaWNfMV9jYXJkXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh5o6S6KGM5qacXCIsXCJwYXRoXCI6XCJwaGJcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbiAgICBmb3IgKHZhciBpIGluIHdvcmQxKSB7XFxuICAgICAgICB2YXIgYSA9IHdvcmQxW2ldO1xcbiAgICAgICAgdmFyIGIgPSBjbGFzczFbaV07XFxuICAgICAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogIGEgPT0gbGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYykgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImxhYjFcXFwiLCBjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImtleTFcXFwiLCBjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBjKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG4vL+WIhuexu1xcbi8vbG9nKE1ZX1BBR0UpXFxuXFxudmFyIHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdi9wb3B1bGFyL3JhbmsvYWxsJztcXG5cXG5NWV9VUkwgPSB1cmwucmVwbGFjZSgnYWxsJywgZ2V0VmFyKCdrZXkxJykpO1xcblxcbnZhciB5bSA9IHJlcXVlc3QoTVlfVVJMLCB7fSkucmVwbGFjZSgvXFxcXFxcXFx1MDAyRi9nLCAnLycpO1xcbmlmICh5bS5pbmNsdWRlcygncmFuay10aXBzJykpIHtcXG5cXG4gICAgLyrmj5DnpLrkv6Hmga9cXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+KAnOKAnCcrcGFyc2VEb21Gb3JIdG1sKHltLCcucmFuay10aXBzJiZUZXh0JykrJ+KAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTondGV4dF8xJ1xcbiAgICAgIH0pO1xcbiAgICDmj5DnpLrkv6Hmga8qL1xcblxcbiAgICB2YXIgcGkgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwicmFua0xpc3RcXFwiOicpWzFdLnNwbGl0KCcsXFxcInJhbmtOb3RlXFxcIicpWzBdKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IHBpICE9IG51bGwgJiYgaSA8IHBpLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gaSArIDE7XFxuICAgICAgICB2YXIgcSA9IEpTT04uc3RyaW5naWZ5KHBpW2ldKTtcXG4gICAgICAgIGlmICghcGlbaV0udXJsKSB7XFxuICAgICAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBwaVtpXS5idmlkO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXG4gICAgICAgIH1cXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGRlcyA9ICd1cDogJyArIHBpW2ldLm93bmVyLm5hbWU7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgdmFyIGRlcyA9IHBpW2ldLm5ld19lcC5pbmRleF9zaG93O1xcbiAgICAgICAgfVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGlbaV0udGl0bGUsXFxuICAgICAgICAgICAgcGljX3VybDogcGlbaV0ucGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAvL2Rlc2M6IChwaVtpXS5uZXdfZXAuaW5kZXhfc2hvdyA/IHBpW2ldLm5ld19lcC5pbmRleF9zaG93IDogKCd1cDogJyArIHBpW2ldLm93bmVyLm5hbWUpKSxcXG4gICAgICAgICAgICBkZXNjOmRlcyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgcnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2NhcmQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIC8qXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTonTm8uJytudW0rJ1xcXFxuXFxcXG7igJjigJg8c21hbGw+JytwaVtpXS50aXRsZSsnXFxcXG4nKyghcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpKyc8L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6cGlbaV0ucGljK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGRlc2M6JzAnLFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOidwaWNfMV9jYXJkJ1xcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAqL1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc6IqC5Yi25LiA54K577yM5LyR5oGv5ZWm77yB4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoXVw8J+Qt1wiLFwicGF0aFwiOlwidXBcIixcInJ1bGVcIjpcImNvbnN0IGhlYWRDb2xvciA9IFxcXCIjMzU4Y2NkXFxcIjtcXG5cXG4vL+aXtumXtOaIs+i9rOaNouaWueazlVxcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7XFxuICAgIHZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG4gICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcbiAgICB2YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG4gICAgcmV0dXJuIHRpbWVcXG59XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7cHV0VmFyKCdzZXQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuLy/ml7bpl7TmiLPovazmjaJcXG5cXG52YXIgdWlkID0gcmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIHB1dE15VmFyKFxcXCJwYXJhbVxcXCIsIFxcXCJcXFwiKTtcXG59XFxudmFyIFVQX1VSTCA9ICdoaWtlcjovL2VtcHR5L2Z5cGFnZSMjaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc3BhY2UvYXJjaGl2ZS9jdXJzb3I/YWlkPScgKyBnZXRNeVZhcihcXFwicGFyYW1cXFwiKSArICcmYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmdm1pZD11aWQnO1xcbnZhciB1cF91cmwgPSBVUF9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV0ucmVwbGFjZShcXFwidWlkXFxcIiwgdWlkKTtcXG52YXIgeHggPSBnZXRWYXIoJ2xiMicpLnNwbGl0KCdcXFxcbicpO1xcblxcbi8v5Y676Zmk5YWz5rOo6YeM55qE56m655m95YWD57SgXFxudmFyIHh4ID0geHguZmlsdGVyKGZ1bmN0aW9uKHMpIHtcXG4gICAgcmV0dXJuIHMgJiYgcy50cmltKCk7XFxufSk7XFxuXFxuLy/mm7TmlrDlpLTlg49cXG5mb3IgKHZhciBrIGluIHh4KSB7XFxuICAgIGlmICgheHhba10uc3BsaXQoJyMjJylbMV0pIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmYWNjZXNzX2tleT0nICsgZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgPyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSA6IFxcXCJkNWFmNTUxM2FjYjkyOTQ1MzllY2RmN2ZmZDU1YmY1MVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBnZXRNeVZhcihcXFwiVUFcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSkpLmRhdGEuZmFjZTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyAnJm5lZWRfdG9wPTEnLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogZ2V0TXlWYXIoXFxcIlVBXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBmYWNlID0geHhba10gKyAnIyMnICsgcGljO1xcbiAgICAgICAgdmFyIGZhY2UgPSByZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pLnJlcGxhY2UoeHhba10sIGZhY2UpO1xcbiAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwgZmFjZSk7XFxuICAgIH1cXG59XFxuXFxuXFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgc190YWIgPSByZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG4gICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICYmIGdldFZhcignc3RhcmlkJykpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmjqjojZAnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5o6o6I2QJyxcXG4gICAgICAgICAgICB1cmw6ICfmjqjojZAnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmlLbol48nID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6ICfmlLbol48nICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+955WqJyxcXG4gICAgICAgICAgICB1cmw6ICfov73nlaonICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+95YmnJyxcXG4gICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICAvL+iHquW3seeahOS/oeaBr1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGFjY2Vzc19rZXkgPSBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICBsZXQgbWlkID0gZ2V0VmFyKCdzdGFyaWQnKTtcXG4gICAgICAgIGxldCB0cyA9IFN0cmluZyhuZXcgRGF0ZSgpLmdldFRpbWUoKSkuc2xpY2UoMCwgMTApO1xcbiAgICAgICAgbGV0IGFhYSA9IFxcXCJhY2Nlc3Nfa2V5PVxcXCIgKyBhY2Nlc3Nfa2V5ICsgXFxcIiZhcHBrZXk9NDQwOWUyY2U4ZmZkMTJiOCZidWlsZD01NTIwNDAwJm1pZD1cXFwiICsgbWlkICsgXFxcIiZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmdHM9XFxcIiArIHRzICsgXFxcIiZ2bWlkPVxcXCIgKyBtaWQ7XFxuICAgICAgICBsZXQgYmJiID0gXFxcIjU5YjQzZTA0YWQ2OTY1ZjM0MzE5MDYyYjQ3OGY4M2RkXFxcIjtcXG4gICAgICAgIGxldCBzaWduID0gbWQ1KGFhYSArIGJiYik7XFxuICAgICAgICBsZXQgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NwYWNlPycgKyBhYWEgKyAnJnNpZ249JyArIHNpZ247XFxuICAgICAgICB2YXIgc3Rhcmpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IGdldE15VmFyKFxcXCJVQVxcXCIpXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXCJHRVRcXFwiXFxuICAgICAgICB9KSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnID8gJ+KYuu+4jycgOiAnJykgKyBzdGFyanNvbi5kYXRhLmNhcmQubmFtZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiBzdGFyanNvbi5kYXRhLmNhcmQuZmFjZSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdVUCcsIGdldFZhcignVVAnKT09J+WFs+azqCc/J+aKmOWPoCc6J+WFs+azqCcpO3B1dFZhcignc2V0JywnJyk7Y2xlYXJWYXIoJ2h0bScpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ1VQJywn5LiT5rOoJylcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcbiAgICAgICAgfSk7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgPyAn4pi677iPJyA6ICcnKSArIFxcXCLmiJHkuZ/kuI3nn6XpgZPkvaDmmK/osIHllYpcXFwiLFxcbiAgICAgICAgICAgIHBpY191cmw6IFxcXCJcXFwiICsgUmVmZXJlcixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1VQJywgZ2V0VmFyKCdVUCcpPT0n5YWz5rOoJz8n5oqY5Y+gJzon5YWz5rOoJyk7cHV0VmFyKCdzZXQnLCcnKTtjbGVhclZhcignaHRtJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignVVAnLCfkuJPms6gnKVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgfVxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCY4oCYVVDigJnigJknICsgJzwvc3Ryb25nPicgKyAoZ2V0VmFyKCd1cCcsICfmipjlj6AnKSA9PSAn5bGV5byAJyA/ICfwn5mJJyA6ICfwn5mIJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3VwJywgZ2V0VmFyKCd1cCcpPT0n5bGV5byAJz8n5oqY5Y+gJzon5bGV5byAJyk7cHV0VmFyKCdzZXQnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCd1cCcsJ+WxleW8gCcpO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdzZXQnKSAhPSAnJyA/IChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnID8gJzxzdHJvbmc+JyArICfigJzigJznva7pobYnICsgJzwvc3Ryb25nPicgOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOWPluWFs+KAneKAnScgKyAnPC9zdHJvbmc+JykgOiAn6K6+572uJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignc2V0JywgZ2V0VmFyKCdzZXQnLCflsZXlvIAnKT09J+WPluWFsyc/J+e9rumhtic6J+WPluWFsycpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignc2V0Jywn5bGV5byAJykrJ2luZ34nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgLy/otKblj7flhbPms6jliJfooahcXG4gICAgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJykge1xcbiAgICAgICAgaWYgKGdldFZhcignaHRtJykgPT0gJycgfHwgZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKSB7XFxuICAgICAgICAgICAgdmFyIHVybHMgPSBbXTtcXG4gICAgICAgICAgICB2YXIgc3VybCA9ICdodHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3c/dHlwZT1mb2xsb3cmbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpO1xcbiAgICAgICAgICAgIHZhciBpZCA9IHN1cmwuc3BsaXQoJ21pZD0nKVsxXTtcXG4gICAgICAgICAgICB2YXIgY29kZSA9IHJlcXVlc3Qoc3VybCwge30pO1xcbiAgICAgICAgICAgIHZhciBzdGFybGlzdCA9IEpTT04ucGFyc2UoJ3tcXFwibXknICsgY29kZS5zcGxpdCgne1xcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSArICd9fScpO1xcbiAgICAgICAgICAgIHZhciBzdGFybHMgPSBzdGFybGlzdFsnbGlzdCddWydnZXRGb2xsb3dMaXN0LXBhZ2UtbWlkLScgKyBpZF1bJ3Jlc3VsdCddO1xcbiAgICAgICAgICAgIGZvciAoeCBpbiBzdGFybHMpIHtcXG4gICAgICAgICAgICAgICAgLy92YXIgeXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD0nICsgc3RhcmxzW3hdLm1pZCArICcmcHM9MzAmdGlkPTAma2V5d29yZD0manNvbnA9anNvbnAmcG49ZnlwYWdlJm9yZGVyPXB1YmRhdGUmYWNjZXNzX2tleT0nICsgZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIik7XFxuXFxuICAgICAgICAgICAgICAgIHZhciB5dXJsID0gJ2hpa2VyOi8vZW1wdHkvZnlwYWdlIyNodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zcGFjZS9hcmNoaXZlL2N1cnNvcj9haWQ9JmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJnZtaWQ9JyArIHN0YXJsc1t4XS5taWQ7XFxuXFxuICAgICAgICAgICAgICAgIHVybHMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHl1cmwuc3BsaXQoXFxcIiMjXFxcIilbMV0ucmVwbGFjZSgvZnlwYWdlL2csICcxJyksXFxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IGdldE15VmFyKFxcXCJVQVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgeXVybCA9IHl1cmwucmVwbGFjZSgvXFxcXCYvZywgXFxcIu+8hu+8hlxcXCIpLnJlcGxhY2UoL1xcXFw/L2csIFxcXCLvvJ/vvJ9cXFwiKTtcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJylcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHN0YXJsc1t4XS51bmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHN0YXJsc1t4XS5mYWNlICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZ3oyP3VybD0nICsgeXVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvL+WFs+azqOWIl+ihqFxcblxcbiAgICBpZiAoZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnICYmIGdldFZhcignVVAnKSAhPSAn5YWz5rOoJykge1xcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07cHV0VmFyMigndWlkJyxpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJ+aKmOWPoCcpO3JlZnJlc2hQYWdlKGZhbHNlKTtwdXRNeVZhcihcXFwicGFyYW1cXFwiLFxcXCJcXFwiKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiO2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v5Y+W5YWz55u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICflj5blhbMnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfinYwnICsgc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgICAgICAgICAgICAgLy91cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHh6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Y+W5YWz5oiQ5Yqf77yB6ZOB5a2Q5YaN6KeB8J+mhidgLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobWlkLCBsaW5lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgc2MgPSBsaW5lICsgJ1xcXFxuJztcXG4gICAgICAgICAgICAgICAgICAgIHZhciB4ciA9IGdldFZhcignbGIyJykgKyAnXFxcXG4nO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHh6ID0geHIucmVwbGFjZShzYywgJycpO1xcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwgeHopO1xcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdsYjInLCByZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwge30pKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZnkgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL21vZGlmeVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzX2tleTogZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWQ6IG1pZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdDogXFxcIjJcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkuY29kZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kaWZ5ID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Y+W5YWz5oiQ5YqfKOacrOWcsCbkupHnq68pXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+acrOWcsOWPluWFs+aIkOWKn++8jOS6keerr+W6lOivpWfkuoZcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInBhcmFtXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lj5blhbPmiJDlip/vvIHpk4HlrZDlho3op4Hwn6aGJ1xcbiAgICAgICAgICAgICAgICB9LCB4eFtrXS5zcGxpdCgnJiYnKVsxXS5zcGxpdChcXFwiIyNcXFwiKVswXSwgeHhba10pLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvL+e9rumhtuebuOWFs1xcblxcbiAgICBpZiAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2Jykge1xcblxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+UnScgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHNjK3h6KTtyZWZyZXNoUGFnZShmYWxzZSk7cHV0TXlWYXIoXFxcInBhcmFtXFxcIixcXFwiXFxcIik7J3RvYXN0Oi8v572u6aG25oiQ5Yqf8J+UnSdgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcblxcbn1cXG4vL2QucHVzaCh7dGl0bGU6eHh9KTtcXG5pZiAoc190YWIgPT0gJ+aOqOiNkCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9mZWVkXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+aUtuiXjycpIHtcXG4gICAgaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIpKS5ydWxlKTtcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcIikpLnJ1bGUpXFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcIikpLnJ1bGUpXFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnICYmIGdldFZhcignc2V0JykgPT0gJycpIHtcXG4gICAgdmFyIGpzb24gPSB7fTtcXG4gICAgZXZhbCgnanNvbj0nICsgcmVxdWVzdCh1cF91cmwsIHt9KSk7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLml0ZW0ubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciByID0ge307XFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5pdGVtW2ldO1xcbiAgICAgICAgdmFyIHQgPSBOdW1iZXIoai5jdGltZSkgKiAxMDAwO1xcblxcblxcbiAgICAgICAgdmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuICAgICAgICBpZiAoai5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSAoai5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG4gICAgICAgIHZhciBwaWNzID0gKGouY292ZXIuaW5kZXhPZignOicpICE9IC0xKSA/IGouY292ZXIgOiAnaHR0cHM6JyArIGouY292ZXI7XFxuXFxuICAgICAgICByLnBpY191cmwgPSBwaWNzICsgUmVmZXJlcjtcXG4gICAgICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmNvbF90eXBlID0gJ21vdmllXzFfdmVydGljYWxfcGljJztcXG4gICAgICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyB0aW1lO1xcbiAgICAgICAgaWYgKGoubGVuZ3RoICE9IFxcXCIwMDowMFxcXCIpIHtcXG4gICAgICAgICAgICBkLnB1c2gocilcXG4gICAgICAgIH07XFxuICAgICAgICBwdXRNeVZhcihcXFwicGFyYW1cXFwiLCBqLnBhcmFtKVxcbiAgICAgICAgLy9sb2coai5wYXJhbSlcXG4gICAgfVxcbn0gZWxzZSBpZiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnICYmIGdldFZhcigndXAnKSAhPSAn5bGV5byAJykge1xcbiAgICB0cnkge1xcblxcbiAgICAgICAgaWYgKGdldFZhcignaHRtJykgPT0gJycpIHtcXG4gICAgICAgICAgICBodG0gPSBbXTtcXG4gICAgICAgICAgICB2YXIgeW0gPSBiYXRjaEZldGNoKHVybHMpLm1hcChmdW5jdGlvbihhKSB7XFxuICAgICAgICAgICAgICAgIHZhciBoID0gSlNPTi5wYXJzZShhKS5kYXRhLml0ZW07XFxuICAgICAgICAgICAgICAgIGh0bSA9IGh0bS5jb25jYXQoaCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaHRtID0gaHRtLnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYi5jdGltZSAtIGEuY3RpbWU7XFxuICAgICAgICAgICAgfSkubWFwKGZ1bmN0aW9uKGEpIHtcXG4gICAgICAgICAgICAgICAgYS5jdGltZSA9IGdldExvY2FsVGltZShOdW1iZXIoYS5jdGltZSkgKiAxMDAwKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBwdXRWYXIoJ2h0bScsIEpTT04uc3RyaW5naWZ5KGh0bSkpO1xcbiAgICAgICAgfSBlbHNlIGh0bSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdodG0nKSk7XFxuICAgICAgICB2YXIgaSA9IDA7XFxuICAgICAgICB2YXIgayA9IDA7XFxuICAgICAgICB2YXIgciA9IG5ldyBEYXRlKCk7XFxuICAgICAgICB2YXIgTSA9IHIuZ2V0TW9udGgoKSArIDE7XFxuICAgICAgICB2YXIgdEQgPSByLmdldEZ1bGxZZWFyKCkgKyAnLScgKyAoTSA8IDEwID8gKCcwJyArIE0pIDogTSkgKyAnLScgKyAoci5nZXREYXRlKCkgPCAxMCA/ICgnMCcgKyByLmdldERhdGUoKSkgOiByLmdldERhdGUoKSk7XFxuXFxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGh0bS5sZW5ndGg7IGorKykge1xcbiAgICAgICAgICAgIHRyeSB7XFxuXFxuICAgICAgICAgICAgICAgIGlmIChqICE9IDAgJiYgaHRtW2ogLSAxXS5jdGltZSAhPSBodG1bal0uY3RpbWUpIGkrKztcXG5cXG4gICAgICAgICAgICAgICAgaWYgKGkgKyAxID09IE1ZX1VSTC5zcGxpdCgnIycpWzFdKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBodG1bal0uY3RpbWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaysrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRlID09IHREKSBkYXRlID0gJzxzdHJvbmc+5LuK5aSpPC9zdHJvbmc+JztcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPVxcXCIjMzU4Y2NkXFxcIj4nICsgZGF0ZSArICc8XFxcXGZvbnQ+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy91cmw6YEBsYXp5UnVsZT0uanM6Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liLfmlrDmiJDlip8nO2BcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGlmIChodG1bal0ucGxheSA+IDEwMDAwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gKGh0bVtqXS5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IGh0bVtqXS5wbGF5O1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaHRtW2pdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogKChodG1bal0uY292ZXIuaW5kZXhPZignOicpICE9IC0xKSA/IGh0bVtqXS5jb3ZlciA6ICgnaHR0cHM6JyArIGh0bVtqXS5jb3ZlcikpICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAnVVA6JyArIGh0bVtqXS5hdXRob3IgKyAnICDml7bplb/vvJonICsgaHRtW2pdLmxlbmd0aCArICdcXFxcbuaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIGh0bVtqXS5jdGltZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGh0bVtqXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpICsgMSA+IE1ZX1VSTC5zcGxpdCgnIycpWzFdKSB7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLngrjkuobvvIjkuI3nlKjlj43ppojvvIzmmoLml7bkuI3kv67vvIlcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh5pe25YWJ8J+QlFwiLFwicGF0aFwiOlwic2dqXCIsXCJydWxlXCI6XCIvL+WIhuexu1xcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbnZhciBjMiA9ICcyMiYyMTImNzEmMTgyJjEzOCYyOCYzMyYxODUnO1xcblxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXG5cXG52YXIgd29yZDIgPSB3Mi5zcGxpdCgnJicpO1xcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcbnZhciBsYWIyID0gZ2V0VmFyKCdsYWIyJywgJ+msvOeVnCcpO1xcbnZhciBrZXkyID0gZ2V0VmFyKCdrZXkyJywgJzIyJyk7XFxuZm9yICh2YXIgaSBpbiB3b3JkMil7XFxuICAgIHZhciBhID0gd29yZDJbaV07XFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcbiAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpPT57XFxuICAgICAgICBwdXRWYXIoXFxcImxhYjJcXFwiLGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICBwdXRWYXIoXFxcImtleTJcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIGMpLFxcbiAgICBjb2xfdHlwZTonc2Nyb2xsX2J1dHRvbidcXG4gICAgfSk7XFxufVxcbn1cXG4vL+WIhuexu1xcblxcbnZhciBtID0gTnVtYmVyKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dFxcXCIse30pKTtcXG52YXIgdCA9IG08MD8wOm07XFxudmFyIG51bTEgPSBOdW1iZXIodCktMTI7XFxudmFyIG51bTIgPSBOdW1iZXIodCkrMTI7XFxudmFyIG51bTMgPSBOdW1iZXIodCktMTtcXG52YXIgbnVtNCA9IE51bWJlcih0KSsxO1xcbi8vdmFyIHRpbWVzdGFtcCA9IERhdGUucGFyc2UobmV3IERhdGUoKSk7XFxudmFyIHRpbWVzdGFtcCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBzdGFtcDEgPSB0aW1lc3RhbXAgLSB0KjMwKjI0KjYwKjYwKjEwMDA7XFxudmFyIHN0YW1wMiA9IHRpbWVzdGFtcCAtICh0KzEpKjMwKjI0KjYwKjYwKjEwMDA7XFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBtbSA9IHNzcy5zcGxpdCgn5bm0JylbMV0uc3BsaXQoJ+aciCcpWzBdO1xcbiAgICAgdmFyIGRkID0gc3NzLnNwbGl0KCfmnIgnKVsxXS5zcGxpdCgn5pelJylbMF07XFxuICAgICB2YXIgWVkgPSBzc3Muc3BsaXQoJ+W5tCcpWzBdO1xcbiAgICAgdmFyIE1NID0gKG1tPCAxMCA/ICcwJyArIG1tOm1tKTtcXG4gICAgIHZhciBERCA9IChkZDwgMTAgPyAnMCcgKyBkZDpkZCk7XFxuICAgICByZXR1cm4gKFlZK01NK0REKVxcbn1cXG4qL1xcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG52YXIgWVkgPSBTdHJpbmcoZGF0ZS5nZXRGdWxsWWVhcigpKTsgXFxudmFyIE1NID0gU3RyaW5nKChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSk7IFxcbnZhciBERCA9IFN0cmluZygoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSkpOyBcXG52YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG5yZXR1cm4gdGltZVxcbn1cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lMSA9IGdldExvY2FsVGltZShzdGFtcDEpO1xcbnZhciB0aW1lMiA9IGdldExvY2FsVGltZShzdGFtcDIpO1xcbnZhciBTR0pfVVJMID0gJ2h0dHBzOi8vcy5zZWFyY2guYmlsaWJpbGkuY29tL2NhdGUvc2VhcmNoP21haW5fdmVyPXYzJnNlYXJjaF90eXBlPXZpZGVvJnZpZXdfdHlwZT1ob3RfcmFuayZvcmRlcj1jbGljayZjb3B5X3JpZ2h0PS0xJmNhdGVfaWQ9MjImcGFnZT0nK3BhZ2VudW0rJyZwYWdlc2l6ZT0xMCZ0aW1lX2Zyb209dGltZTImdGltZV90bz10aW1lMSc7XFxudmFyIFVSTCA9IFNHSl9VUkwucmVwbGFjZSgndGltZTEnLHRpbWUxKS5yZXBsYWNlKCd0aW1lMicsdGltZTIpLnJlcGxhY2UoJzIyJyxnZXRWYXIoJ2tleTInKSE9Jyc/Z2V0VmFyKCdrZXkyJyk6JzIyJyk7XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QoVVJMLHt9KSk7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOicrMeW5tCcsXFxuICAgICAgICAgIHVybDpcXG5udW0xK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jy0x5bm0JyxcXG4gICAgICAgICAgdXJsOlxcbm51bTIrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonKzHmnIgnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMytgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOictMeaciCcsXFxuICAgICAgICAgIHVybDpcXG5udW00K2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Z2V0SGVhZCgoJ+W9k+WJjeaXtumXtOe6vzogJyt0aW1lMisnficrdGltZTEpKSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOiBnZXRMb2NhbFRpbWUodGltZXN0YW1wKS4gc3BsaXQoJ+aXpScpWzBdLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbiovXFxufVxcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZShzc3MpLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbiovXFxuZm9yICh2YXIgaSBpbiBqc29uLnJlc3VsdClcXG57XFxuIHZhciByID0ge307XFxuIHZhciBqID0ganNvbi5yZXN1bHRbaV07XFxuIGlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG4gZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG4gZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6ai50aXRsZSxcXG4gICAgICAgICAgaW1nOidodHRwczonK2oucGljK1JlZmVyZXIsXFxuICAgICAgICAgIGRlc2M6J3Vw8J+QtzonK2ouYXV0aG9yKydcXFxcbuaSreaUvumHjzogJytwbGF5KycgICAgICAgIOWPkeW4g+aXpeacnzogJytqLnB1YmRhdGUvKisnXFxcXG7mj4/ov7A6JytqLmRlc2NyaXB0aW9uKi8sXFxuICAgICAgICAgIHVybDpcXG4naGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMidcXG4gICAgICAgfSk7XFxufVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeS6jOe6p1wiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpldmFsUHJpdmF0ZUpTKFxcXCI3MTVvMElCU3lZUU1MOEhDcmJvaEliMEJ4bW0wWUtYTVFTWHFaM3JWM2RST0IxNjlXWTdnOVZhR3hEd21Cd0I1VCs4UldLNjF6TVNhYkx6blp5MWRpYmFVVFJDaUVQV3Vhd2hhRjFCaThmTWNTS2d6RnRleXF2emlaOHBmVDNKVUI4NG92ZEd3MlFLb3lwOW1GR1ExenErOENJd2FnTGUrek4rN20zRit1N0FCdm42Ti9kNllyL2wrTzg3TUZETzFXc05QZGxPc2ZKN3FMWjJVT29lWUJ0eEJFMk1ZY1d2eHZaU3lmQjg4M2ZXZ3g2N0VmQUpHYlZvK29ObGJLNStvVURnZ0drQW9xTmxEZk5iMHdwZHRqVWI3aWp2cnhNWm5yWVJGSUpLSnppUVJhaG9FKzNaVE5uMUlTQVJERHNPNkZJYUhSMDdhdEloTktCMWp5T2VCNHNiM0lmL04yTTBZb2VZeEVaOC83MlZpemVyTHhzNkxhNWhLVVlqVXJ4T1ZZV0FSb1NuRDhPUEJXRG8rZE00a2V2c29mTkFaVWNHQ05BeVVTMXlaMDE1UXFDY0ZFalhMbW52Z3k2L1RBR2VPWWtUTTBJeUZHSzBGa3V5OG43czh3NGIxUy9CcFpDeVk1VmdsZ2ZXQStrc3YzZTFrS1RsRHAyd3F3aE01S0o4TzMwZDFBQU05eXVlcnNndWRhZ1diTGl5RUxkSEFMdDFmeTlvdi9mRGI0T0VBQ21YMTdiR1cvRkNMUXE2eU9neHhMNUJMVEtXL1JDLzRDZ0ZIZnBybkdIU21UQ001amFVRmc4QnIyaHFUbkFselBDTGdlUHU4Y1dTZ1E3UWJ4cmlUdVZHTjRyazF6NHBhQ2dFN0wrcEtUNXQ3eXpZblZtRzVQTHFuaHRyZDVKSGJ5Ukwxc1hOUkgzNHBnOVJHNE8wVDJhaGIxcGNLVlowdzkzajI5MlVpbVNLQ1FrUGNXV3JrV1hLZ0RZV0V1U0Fwa1A5OEh6T2VJQ2pZN3ZjYmlkTGhqNW9VZ1NVRzJydXNOcHY5OUxBSWhhRUVoa2RGTEtVOHRrQy9BcWpvQnpNUUp4a0Q1SlpvSW5YZStxTzZlZDYxNllRbmtqVzg5ZGtSNTNTbk9RUmZnaEt6Z0FxVnRLSFhyYWw4QVRzeTNVaWtQSVpIRDRVWGRrbnRqb1I2Z29NQkVDeDVVMnBBQVdHWmFrR0w0cUc2TWRRZ2VWZ2JEdjJSSWpuQndoQnExZTN3eE1zQitvelREWHYxRmFRbXhwZmZOVDNlSXppdmZnTWJPOG9aamJlUVpSMm5xWGhJNnUwSGhKZjBUeWNCOFJtVDgyNzB3bDV6WjRiM1cyZUFaRUNEWkF2T3UvWHg5Y1RRSG9mSzg3SkNGOXh4Wm14UDRFQlp1Q0RzVkVGamJiOGVBY2JPRFV4eGNxRnNNOU1wSVozeHhTNStDMm1WNEJuTXNQUUdGYTBRWXVZTkc5UXhLdTB5Z0Nnc2U5TGRjeGpndkF3OGdmR2ZKS2JOczNwcTV6dXBoeE12bGJRTUIrS3lKWW9LU0kzV3ZHUzJyNWZPa3BzL1RETVFCaTlocmw3ejZGZUhVbGhCYzVyMytpVWtVblYxcDZ6M0t0VjFSNkNJaythSTFkRzRqbzhXTDg4cDlaWXEvNVFQZmtDMkl3VVNPWU80VXNyMC90RHhRQ2xEUWFCbEo4aEIxQXRybTBqYktoOGhEcVVpNlVrdFB4bjFNczF0MHhJb2ZsOHdLaHpzeTM1NHdXQ3R2U1VUTm9sY3FIMXZkZzlRVDlWUHh1aG81bC9URzAzYkNwdng1dWFtWFYvbm9lUkt4SVZCSXYvQnRNMHRXZnpYQXRnOHNtK293bGNMSmx4VEJWdXg0TlhsQ0tkMDZxMGpvOFVsR3BZNVR4WGV3RmdwVGxWT1EydVpyRzZBbFljOHM3blNsaGhyODlqdzFBalpnYS8zQ0ZSQ29IUys4UURDdUhRbmZYWWxkdG84UlVQbGkwMXNqQWoxNm14Ri9PcjNYeDZWK3dCMUdYc0ZWRmFxOUhlbVJ0dldlbFZhQzl6aEFlTFRIMUpEN1FUeDJlb3F1L3htRXBDYUJpNk5mUUQ5ZS8rK3J1aWxlZEcxVGdXM2k4YWNHZytEWFg1MnFzT2Q4eTBwRCsyYXVjRnAxTmZ2WWVob0JteDJsVFUxTmU5QWNLdGhneWxhSHFIOEZqTDRSRUx5U0dQSDRySVU3WG14bjQ2clpkMlh1SEZZenhQNTNIRUZiT2pmMWFiSnpZUm9WRHdnRzZ6RGJTbDE5TGpOdCsvakdZNmkwY1Nwc0dTVlBxT2tuVjFiMzR2Qk9IOFkwUXMwRDRwTUNEeGFMNEpWbEE4cmI0SGtKYmlHWnlyT053VzF4QU9PTjZTWG5zRU1tRzZxZGVRQ2hJbTNudVVYSWxhcGhGcXBQdnp3a0xJUTRxMWVvc2doSnBmbHFaRTlld25yYnNwOGZOTFJGQWNxNnY3MCtzV2tlazJCaW16cDZGN2JjYVdSMnZlRkthR2hHSm9tK01rTnEyamlnY3REZGo5bXdjVUZFQVozU2JNSnpsTWZmMThCRlJDM0M3ZDVJU2RXelJwMUtJa0EzVkNHaldhNGpNVk9zd0xKTlc1UmFTQ3U3RVFMcWtCa3lFN3BZejdjaTNGWDlSajVWV0I4cUtjUk9VUlQxekQxS3N4SktSVFFQTEdwdGxFcUF6NzRNYlZQci9CZG85OStxckszaGlZK05OaS9xdi8wT3FTNUtQcXYwa3h3RGQxMVhqOW0xdHZyUUhRZEdiZTlFL1ZLU1lqbHRnR1h0RWFjbjVidEp0ek8vUFp3NTlKUWUvWlg2ZE84ZlJqZEFlNGRjTzZwcmtaVGJ2S1p2Q1dscjJoQWxrMDhlWDkvaHN6Z1Bnb0c4U0swejRoUlVQTkFacVd0Zzk1YkhDMW5YWkZrTUs4Q3E1cEtwWHI4SCtEWTZJSmJ2M2dRMG9UekcwZEJFdWlwTWFmemFka1NKY3RMR1hONjdlM0hYZCt2d1R1QmJZMjBheFNkelc4UHhRUXVvSXdjdGd4eDNKYkJ1M0dWVEdqTHk1Yyt0UVdmYVB2cTk0TDVZeFJSSC9hdDRKem12b3JtNGora3JjbFBUVzIxazJid0cxVTlUUW42UWFtMHAwb0hzU0VSRVgxbGY2V0NrYWVscTJJdTI2WVY0TWNob1g3TnlmTi9JWml2ck9YODJNeGdmRDZTUUk5dmd6WitiZEJjRDYwT2txU3ZacWZrSlY4NE1oZVprcTRETXg2OHU5ZDZabGpzTE1QM0t0SEtDckovT2lIMmZFUmRVOEFlenFNTlJGamMzVkEzTGV0NjZLUVVHUVJoamcydlR1VVU1Y0xzSFhuK2psZVdtY0FrQkE3U0NjYmRVRUFqVFhxSzVndXlkM0xCMHFFRElKQ3RqY2NXOWVYQktTMlBYeWJLMmkxUGx5cnBpN25MTGt1OHNlaDNEMTN3ZERBQU1JSEMrdlBDYVJka3lJMndVTUM2cm4yWFIwNXVncEd3Q2JEcGJrWlJtU0Jqemh6eFB4S3pwSmZ2N2t6Q2Z2RWxLWEI3SGZRa3JOdCs5U3hUVmVjNCs1YThMWStkSW11QzZkR2hrOTNjRUdDbUpWMi9aYis1QUtKeGtQdElRMEdRSGFubzRkK1N3V3E2T3k2RGJEZkRZTnl4bWg3RHJuOWljbVBDeGhKVnIvWVBtWnhsYzhjcm1XTzBsZzA1SFA0NHQxTVRWTGxaa0Y0RGhoMG1tL3d4cHhGQUdOQjNvbFJ0NlBkWWdIbWhwZGJnVUNDdnFCdGNOZGo0dFJmbngwSklqMDExbUpCQTdkMHgyVmZGcnRHY2ZrUUhqWlZvZjB0aTBnMTJ3My8vTUhHbnNNbkhsUmVlN1pEVkk2aTJWTjBwRUU4UURKVCttT0p4aTcxR3NqcUlNNUViMGxvWER0V3o0bzN5VW9xNjRIWkl4K2RLeXd6TlJ6dVpzTlZmajVsaHdQcENQMTBIWUVLNG9WekhUVEZoZUtiSDdwcEIrZzlGekJ3NUVwN09jWDNONDRjTHU3ZXpyZUNjNXI2SzV1SS9wSzNKVDAxdHRibm9xc2txb1BjY2dzOTVFSnZhSkt2eU5BOHRHTFRZZG1JNHRodmVRYWZvWFZPUGNRRTFUVFBsc3JaZlJXQnV5Y0RwOVd3QnZKMjgvamhzTmxzWUxZQ1BoVUlHeStSYzRoZTd0ZzhIVkNMcDQ0TzVHcjhIUElaaUNOendXMVJRb1lpckw2TUJkZHpjTjRHZ0pzS2w2ZGJvWG4xMzVHVXdoMDBCMXNhWkZlZGtiUzRIdkhDNlR1MytMYXl5YnU4Nm43QTF1cjI2Z2lpdVNwL0hOQ3MrM1BXWHNmQk0zUHBib3g4bVd2MWlsQlVsS1h2Q1BOT0x4V1VqYjQwSVlzZHpQTjAvRmt0aEJuSmViNXYzWVZDRzlVemcvejZHZ2pDemF5dVZDczh6dlBIK1JFTk5XQnpjL1lSUXFyUjdWcXA2VXA1d0swMlFWaWFYQUVwZUF5Wmo2bUpIa29HU2RXNG1meksyZ09UTnpuZWRvZ3JEYTNCQkQwZmVicytZY1JDY2VVclpXYUhydmFid3Z2ZVFnZ2NZOWlRN2d0dFFVZ25TcGI0dExnVEgwWW1oVjg4bm5VbDFaVHBjS2RDeWEyL1hIREtwQlA5aDZBd080Q3JtYkhSMkpHY2ZXZU85Yi9vUDlVM2Z0cDMyR2ZSTDVsRnJvYkRtUTF1cXBXbFB5ZktTZXQyeldKYnpVZzBlWUNlUzY3R2VJWERNdk9PWlNoczhyOHBOTXQ3Nngxa2pSSUdwaEkvcmgxK0tVdEJhMDlBVXRBTmkwc1JqUytMMFg3THFYWmluZzJTejN3c0R0WCs2R3V5d1V5alZrOEc2WjhxT0hEYmxkcy8yc2MxbkFFN3plNjZ5elM4bEhONE9nTEhEWHQ2Q2RtT2YvUTVZRVA4MUlRMDdpaHFIa1MrSk50bjN4UDdkNW5jQW1TbXVJTUQ3cDRQTnEvdTh3S3pONllyZ2EyOXI2Wi93RHRyTG5EVG8rN0NvRVNKLzlHYkRqNGg5UmRmUEl1Sk0rYUx3dWVqbVRQRFFPN2o1QmdUM1cycHIzSjdkK1dEZUtNc2tsMWV2Zyt3aUlwYlJNaHkwYjZpUnU4aW1uOC8yd0hLU2R2b1BGeTF3RGRHckIzOVdBcEQ5UUc5c0d3LzBqcGdsOHhkdUdFNFY4eGRZbFVzaGhQZFZYV2gvSmhEWmFEZWNmNUpWaXE0RXZsZFNHZDNmS1pmRkRoK3h3OGx0bDJlS2Q2MzVlK0Q2azhKa1RRbWVtYjhIRnNSeTJZV3BXWnJ4d1QvWGZEUmR5WG1zcll0TTFBR3RCb3JOVFU2aDJkV1UycGp2MVYyN040WmxmMUdJQ3k2ZHJGdGFEZzZ4YmtqMkxkK0RNUFllZVVoSUtNUnlnUHNYTUg0Uy84RWxod1JaYXN4TTFnSXNIV21QRUZCdWdwV3NqYUUzQ1lTd2lmNkRYSlV0VnYrOWxMeklNd3Q0SEhtTXlGYWhSZ1pSOWFOZ1BwdHFQMEVCZTUyaFNWanhCVVA2NlA3cHVCRlVUc3dwMzVaYnVmbkphTkh1RzJhWnpLeGlDTXNoWDBoMGdHS2V1dXBGdjczSlJvbHZFY0VEb3psbXNyc1BhM2Zid1ppTVpCNkhESzNabWcrZ2RBbkpzSFh6RXJ2QXhtRmpqSVpqUWhSZVhJdzRhbEhZTkJvdUVkYlNzL05LWW5lSFRUSCtJK0dDU1JkTkhtYlBrdXlsMkZsRWR3a1RQTFhnUlhkejNTNXNBWjV1Y2ovSFlrYkF0aTBzMk4ydHFSeDJ5MGQrWjdrUXMrYzlyT1ZXNTdvdG9nMXZrRHhWSnBFRldtM29uNWtYOE1zUlBpa1JJMnExa3d2bEZKR2h0RnZYS0gwRVU3azJSeFR4MTBYYkxlWWNUYzhnaVBGUTNDTjdrQ2tpckE5MnZlSkFXOFdJQjd1OXdqL0VQTXB2ODdJN3JFa3B3OVh1ZEliUFE1OHVJdC9obytYUDB6U0ZocksyRDhETlBjajJtTHpEeEFsdFVmeWNyRFREZUpxcXBpVm9LMUlqelQzaFUxRzNCSTVadFpUd0JOZjRpSllsb3FVWE9ISUN4blV3ck56c0hFeHBrNlJNZDFIWnRXb0J4WFl0eFZFSVA5cmwzT0UwR0syUnhiTi9YcGxmbHFlSzhqL3Z4Q21EWWxuelRtZTZZTVJZcmw4U1ZFbFJEY2VDUXpxVktEOHR0YXUrWVVmNXVjU1dDNllmQ09iNkhZa2NhMVRrQXkyR2NUcWtkWjFWK1MyNnYxUkRPQm9QVHJlVHNocUdPOVluOGg4Ujd5M1pTdWlSby9YNFBqbUlFU2dYb1dSQ1hzdHNoL2dNcXVLeWNOSHVhRmFQSE1XMDJCbjQ3ck9JcGZvdzhGcFFjaHdIOEhYY1pxSjFtdkNBOUxwaUhLUEtpZWcyOEFmQzNINHdVVytVaVZ3cVF4RXRiVjBrM29ZanUvNEREblNrSkVDKzRaYnRXSkcxMzMwMlVyZUZ1dHp2QStSWFg2ZmNDb3cvSTNUVDNNSXM3TE1MZldXWERBMmJoVkQ4R1pKWTVNMmZ1MExFcDVEMUtydlBuTkpYVjRzcVZlOWFrRVovL0RKeWlGQ2hRcnNRd2dQR1U0WjVJVXVZalE0SVZ1bGw3M2did0theDBqS0ZjRzdjdE5uY1JsUkNEelJESUtHUXM4TTcwdDN0bDQxY0RxTk43bis1QVFTaG5wUDZ0Y2J3c3l5NVVDdTVtbXE5am83ajA3QkNBb3p5anppM0w4RWRUdVFqMGNqcUM3L0txckFKc1FaSkNqY1FTNzNveFZQQ0pHUjlrYnBQeENYcU11SU1pWDFGVUxmbS92eHFNR3kwc3ljSkpvUGJTNU1WRS9WS1NZamx0Z0dYdEVhY241YnRKdW5acHpHTytxN0QzRDVsV0tIQ1FEV2FRN01yUWJmOXdwMzNIaTd3bkVYSDJMZkp2bWZJcnp2K3pTV05ZRzVWZzU0MWtVdVVLZjF3NjhFWGxjSm9zZmxUWUZSZldIVmZNRDZqcmhia3RNdkh3S2VCYlRiaWZqQWkrem9lempRengwQXd3eHkvem1aVklOOHRFN3pud3djOVBqdDZ0emdDSW56cTRGcDhOSzZMQmJVenFlb1FlTFZsS2dmRUlncXd6YTBVaktQZGw3SmJBRE83MVFtMmxYZTFHZ3FZWG45L1picWU1OEQySi91b09xeFJuNGMyZUFwbTM4ZTRPMklNdmp5UnF3WUUyUFM2aTFvY1VweE1SZStQb0owQ0FRRXdrNXpsMktXL2JUT0tzejhjSjF2Q2RCNnpxYnhmTXRyQ1NURTVwc00zOVF5b2g2ZVV5Sm03N3FYQ3NDQ2laWVUvNFpoWHRDWjVVUEtjU0tuUDRXeTdWMVJIWjIyMERBWi95TkNmRVplcmVHN0VNTTgrbDVHVkVCRVlDa0tlbzFpbTNPdWdPWEtnVjdLcW45RWRzSDlLNkkrUGZXY21iQkphRmMvcHQrZEVRQ29Na0JmODhYL3NhV2pnOVpPeXc4RlZuWEY3d2dLQmRiZ0daQkpEUmxhS25LbmVvS05GZE9URXFXb2RNemFQQ2xkYkxabWxFSFVCN3QxdFhjNG0rNHdOTzRJMk9NbG5FTS9DcUFFQ3JjcXN0TlhiT05xb2FsbnRvRzY0ZUlRTkRueUtTL1VSNzJEN0d3K01QejRRaFljdkdUNFlOYWQ1bnRzVzVRVGp2YVpjZm9OMmtEMWVhS2JVNDYvYWMzTWJnYVhaSWNtYTE3dzVvNEhkZ3FWNGpNZ2pmbFl0UFMwczR1VXkxVkIwRTgreVZzc2xrMXFkTGNJUFRoZ0tRcDZqV0tiYzY2QTVjcUJYc3FySG5JcXlXMldXSlZMK01wSU13cGRkTHBkeTMvak5wRElZbnhkUmMxVlFPbUZiNDMxZEtvNEd6dlNna1pvR0NxZHNOb3NYcngzOVNleCtxZnM0d0hxb3JiS1hKS1h6N3VZN0ZvbHRCZVYzNGhJL295OGRrV0ltbUt4OTZjaEV3SnA2RS9XSS9aN3FRc2d6RkRFY2xhTEpEZzdUL1piY2ZiVGVna2crZ3R5dFh4bTVSajJZeG1hKzFVd2F1c1ZDWm0weWNDbTdIdjVYTFdNMTBOb2ppNFluMlFsaWk4NFptV1l4bkh6RmRlUXlIcTZlNE83MXhDQ3AwNURCVWx3dGZYY1M3RTBsVmt6M0N1Q2VGdUpGK1dFQXhqUFVja0VibXNITkd3VHByUjE5WWV0aHBzbkVmRTJJRnNYZ2YxNUtnNzJFMWovU0RQd1dGdm5tQk1ZR0dMZ2JUbmpYamxCQlJEdmVqVjlUTm9DclRFdis4alBjR0VlbGtDeUVsME1qYW90MHhlY2UwNmVITWNsYlduRjdIdmcrekcwcCs1RWFCNWVuQXFwTG5qaTBLQi9JczRUOWlSSlB2MTZqckpTelRtWUdRdWtwY1pSMllyeG1UcG4remhlUzYxVWp6aktscks1NzNaWWYxWWh6WU4rSHZESXhkMlo2NzVMWGxlZHc3dFJoTURmeGJrellpbjVZbDN4L1JTSU1TZElzSXRlaWg4UTNYUmRCbG9MMVBBNG5YVU4xcHFWYzMrQjhJVVhPaVpEZll5WVJYNW1NVDdwMHhVOHFqSnM4c05KS3M2Rldia3ZkQ0grNGlES0lpTlcxWjFFL2xYNHpjbnI4L1RVdU11Q05UZytPVkdzOXkvbHFUWFhyemxTekxxQlBmckJrUVpndmp1cmFVR1NSTURld0Q2T3l1UnYzcDhBRFkrZzBJS1FOK3lyVDJZQjFhMDAvQ1RUMW04ZjlqZGhwVkkxdDNQc3d5SCtMTDJjQk00WUV3UWR5ckJ2UzNtanlSaVJPL05BWmxzakNNSEVMeCt4R00zbG5ERzFxUGlUaFh3OVV5ZHU2U1lJWUpsMUlnVktZajRqdDZYMFZEdDErdXMrejlsUkVzcTRMbHdZSWo1SXhzQmZ5SDNJRGE1eUxQNlJEcW1MaE42eXc0bkRMTVR6bzZpUVFYNTVkTjVQZVpsQ0R6TjhMRzhRa01YOHkxVDBqSHNPc2ZNblZ4SFZHcWRGZmFGNlNlUnh5b3laMUxOREQ4bDFJeW5MTEJTUWZCYm15SlpsR3A4TDlNWGF2SWVXbHFWaTRzQitVQzQ0QlFHbXZKU3JHcjdvcHlHWWtnU1FHbDhCSFFMNllnRWVYdmRsdU9uZGp5UDE1NXp6N2gxTTBpTDRYUTBwM2Y3NjhhZm5KNTZ0S1JQYVlIZEZOaDZHY3JrenNFNjFEV1l4eUxsTFRoK2pWK2lzakpLM04wMlVyNHNWSml1VjZxcDFUSlJBR3BtMUFFeG1FM1F3anFpQTd2S1BrWXlsblVZaXpqM1cxcjRMZHJFZjRoL0RiOGgyT3JzeWpZSXpHbFgxTW9tbkVsVXUxRzA5a1lLak5VZjhCcXNOSE5Sd2VNR0d1TW5kWnhqU1IwNU1LaUxLU01IVnp2bS9rOE9qdUFrbmdITjZWREkyWFBiWk5IT2ljYXl4TUwzeVo4aFQxTXV5Y3RmdTNLSUNCZmd6RW5xaEQwVTdkY3ZnalJ6UUM1bENmbjJXQ2I2U3Z1a3lmTGwxNEovbXloUkN1Vk93N1RyTXpaaHlhcWJFL0k1aUJjZURoSkxrRldmNW9hUVIveVdFd0xHM3BuaVRQR2ZpSW5wWlZWRGNBSEZqR0ZaM1Y3bzVRa3NwdXNmbzlPSEg4c0tMRDdYNXdUNVkxR1VTME1CVUYwWERKU29oNmNzbFd4RWZ0V3lTd21xVUROdHVVTDJLTUpEOGFpOEZ3UUFYSWNGeGlmem9OTmNGQmZ0T2hWNkRQV3hJcnNpWVhocUJZWE1acUI4SUJCdWJBYVVNUUI4NkxLcTJvdEQzaXlQZldLd1FRZGFhS0ZBOEc3bWtNc044UUVOaFBWT2ZyamR2bmI3NmgyNHhZT2FwYWpBL2dCT2NweEQxRzBtQjdSbkl3TjNydjVXdE9QcWpqaUc0UGRpSkRwTDg2OWp0SUkzc0p0Q1BDV0FiVDF2R25penZjZEFVZmhBeXpaWTNJQjlnZTZ4eVZnL1Jrdlk2UW54djBad3hVZG1IK0h2Z1UyV1ZRVFFsMm5zMEw1KytQdHI1aXBlZ1pIaDB0RTgybklQaUFLekhGS3d2amlHK3Mwa2NKUDBRcitVTXhQTFVWZjdJejlyWWphTThqWXlELyt6QkpJSWtrbk9wSHhQWkRnUFNUMGJzeUcrakpBU0I2a2N2SmNKaHd2UXVsdjUycnlwUk9qOEtGeGhQa0hrSmFzSmdQdmQ2ZlRURk9pZzBKNm1ZaWhRSlB2Qlc5c1k1aGIxTW5GMUE0eVIzVnYwVmhsdEU4VDJ5TTB2OG1jTm1xNTM4MFhwTCtWU0lhT0NiSXhxeUhjN0xYcE9NeW9PNWRWQmI4dDdTSmNSMm1kYU5KTXpIMDY1eEw4WHhwcGdEei9YNCtVczltMmhWanlveFRoL3JRSGtJZDRCUkFWSWo2Mm9UdGJERFBZVlFQaTkwM25QWFpueDRkR2VpOEpWdENmZkNuSGFsTkJ3aTk4SU5Ca0ZkUFFGcm1rbE45Y3p4RnBqaXljNVBYdCs5d3A0ZUNxaU9sNXpHVThWU2E3QTVrTjR3d3o0OC9FSEhibElya1dyM0FyN1NnbFNrOU9XZ3ZEN0xETm5aN1g0SkNTYTU2SEs2SnduRGJmdzJrbHI2c1A2YWV2N1paR2daZ2xqaE9waFVHcllheHFtOFNLSjVHbG1EQUhKTEFlZWhaaW1BZlZiLzRGQWExQ0x4bEI5S2dVM3MxU2xRcHBFOWJVOFJjUG1DSm01OUpEcVBVSVZHKzdMQ213cE9YNVNGMFM4aGpTa0RTcUk5a3RiVjh2ZGdleUE0cm1obkVXODAzN0YvVkgzWW9xVDgyTFErc1o4cDdjM1Bud0dWZVhJQmRIZ2lPdnVqQmNBMkd0bnc4Q1U2a0VIc2ZMVzdYYlNmODNsa3lkZFdMamQ5S0pHNlJMZnp5ZXI0SlM1S3dwWkhTQkM0bVpabHhMMGpWTU1JWm1FLzZYMWZLMWlHT0wrc0xScW9Eb0wvY093elFmc1Y1bENiSnhTQURCL3U2ZG1SVlQwQU1YZldZNW4vZ2t2M0RoUXRHUVVHQm1mbnc2VlQ2b1NlVS8rVlJtMk1VTmp3cUJyRHJCcGM3OC9HSVJWVGJibVJ5aUtoTVNrT0t1SlVLZ0JOMXF3NGl4T1Jod3ZQQkhQUFU1R3JkY1FUTVVJSStCVjBTVFFEejZEK0FEelFZcXhxUktaQ3RsTkl5YXd1bnZZUTNMY2pheVBnSXU1d09ocEN6VHVsZUNlamhwN280dWpBdVBUbGdMUitDK0dkc3ZXb1VpdERyZTU4bldwQmpSdlI2bGt2UnFqUnh5dkVheGxrUExYNTBIRWZEc3Nrand5OHI5QUlIQjlJR3M1NVRtK3k5YmhNdUF2Vnl3M2UrUmk0VjFTQkxMMjBRdkE1UDFqRTVWY3F2Ymx6NWJocG5GNTk5U0xFMTVSb283c053V2o5U3Q3NklhT3dPWUhPWHZ5QVVHQ09EU2pxeWx1cFR6c0l3aFpqNzUvTTUzc0tZWDJ6UmdPU1Q0T0RzbDRid3V1TURweE9sc21GQkZPSXdORm1HMEtYL21PMjZXTSswZzU3TUo0Y2RtUk5kQ2lKK211OGdmWTkwamZsUkdXL2xnNlZLWWFmNEt6QmhlbXhWYzlmcTYvNUNiMWlkNWgxeVdtQmJWWGJxaUtVVmpKY1ZuNi9zUWNUd0NBd2s5L3ludjlNYnJ0MGRzRlZVWDlvRUUvY29BRjc5T0k1bU5OaFZ3d211U21VcnhCcWdZK0JmY01paEFaRnZPVUcvajRpbmo5c053WGJ3VVhTRkt6UkIvZEtyYndaZURhOXl2cVZCdSs5cGJaaUl4NFVBNmdUcFlRWER3eXFyVEFDcE92T2ZxaEhjTmtvME5yYVBlZDFjRkh4Z2xKU0k3UGx5bmgyRUVhL0xLOHRJMWxaeit3aWYrOVpJQWRUMk05aXI4M3Y5VVBuaDdDL2FjN3I2eXVXeXVKZjJwRTI0ZXVSdmt3ZjdlNW1HZG9XYy9hV2dBUGV1Y2tRa1UraFV5bUVWNHRnaERvK2Fnbi9OYXFmNExhVjBUVkV1MmpBQlhsbkFGa3dsdkg3TEs4dEkxbFp6K3dpZis5WklBZFQyYWQ2WldHTUFNNGE1aUFvQ2o2WHd1c3NyeTBqV1ZuUDdDSi83MWtnQjFQYjNpbmpwU3orRDZLNVljRGF4MGU0UUJZNHg4U09FT2pTUkNaUHRUcnpINVhTRmVSazB5VnFIMDNLM1JjUmNzSFE3Mk5UeEFTMW4xRTFSRE42R2pGWEVhNnh2ZW9WQmVzTFBvR0htOEJrR2hjc3J5MGpXVm5QN0NKLzcxa2dCMVBZdUYzREdkdm4rSlVPdC9Scm9BMHNRTDVKUGJtY1U4UmkzQU9FbUNULzBPY1lNZjFzOWhXd1NRZk44d2JoaGxZdk9sREw3RHZ6enNPUW5LKy9iQ2M0bnc0eElZY0NwUWNZNDhPeURNclNDTjhzcnkwaldWblA3Q0ovNzFrZ0IxUFljVGFGZDZaWFF1VVJlYmlnWGZBNkZLTFlRWEZLZUEzUnQxZFNSajhpVFRuTXdKdjVROWJqUmpackJ6UHR4cU1lT2hYZWUwKy93WGI4N0I0ckhVL1BmeXl2TFNOWldjL3NJbi92V1NBSFU5aHZhZTRFRFBrSHNlb1hOTTc1eE5uTGpwOEhrbDlkZFhJKzhYRVRkM2dnRDAvM2F3b0QxSXI3ODBleXAvWGNJNnlkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTdTaGtwcEhRTHRrZjF2VytySGZhdkxrWk9ubW85VThmWTVYS3ZHTmhhRytLM2VpbW53UTFIbXgrT3dNUElYZ2JZRTF6RHBPLzhSTjhlRFI3dUpnTFJSbko1dlRYMGR3cGhmT3lWMjJRcDVrcmJ3d1E1TzdhN1h5ZUxGTHFYT0c0UFF5R3VRS0xoeVRXdFhpdHRvZ3htVVQ5K2luVENYUUlvL1dxVGZucCt3S1ZFVVZFVmMxNUZaUGFxTE9VZzQ2LzM3RFFMb1ZSYWJab29Fdk1xYmZvcVNpcVo2czZwdStqYUd3aVZBNG05UHgxTVFjVHRPbnUwaCtKVysxb1dUVWVHMTZSZXRQcDNtSk1za2dGUWkzdHlPMnAwcUNKMzlKWkpyS0ZlVWdFZ3pORlAzZTRYSWJmWEMyT0dRczBLclQ5Q29WUWdCNlUwQURpNnJ2TEJnZ0M0Y2tpYTllK0tRNW55SDllUXh1STF0R085cVYyTHluUEIvVzhhT0dOM2w4QkU2eWFlcCtDcXEydUVOb3BnMER6eFQwekJzeHo0ZDV4UUhlOTJPN1kxc2kwR2xQaFhSUFZwR0N1RjRQV0hYaEkvTGZwdHlpTG83UHQvSXZEYmZYNnY4RGYxRjgxcG9Qa3JxYmdYeWVic2VXdE9BWEgvWjVrejUwSWw1RkkyZkRjT0NwclhuSFMwUWZhMXppWXU5MVZueTRuUXhCbVpveWtJczVHR1dNZytoNjhUcC81NWNUNmdFc2hzNjVDT3FlditGSE9YQnE4ZDJHaHFIektHNzF0YkhUS1JyVjVVNkJjRzZjTFBQQkVqY3RJWEgweDNzaFBTOWNvNkQ4UE16UXAyUy8vcmdWR2c0Tlh3MlVEUkVWUU15SnFoSjY0ckRqalRPdlpzRlQvSWhxV3B0YWdlMFJhUmgrNWM3eGZZQVBtemY5bGR4Y0FncmdLclhaejFTNHQzS1lJQ2V4QWYxa3ltYmM3alloWk1tSnJwb0ROM09IK3gvUTFnS2dTYlVpdHpaUGs5d2xPN2dSUzJOUi81NzduSXhLM3c5K0VXV0Q3SU5ZMzBtTmpkQTJJK0hnMUsyZjRrSVpCRkdjWGFFeFE2eXl2TFNOWldjL3NJbi92V1NBSFU5bXFQdFJRMnB3MnF0dGVkRU9nR2phd2tWbjJMMS9iUDh6LzcyOU9PT1pjWmVlSWtoYlR5TTNwaVJoVHRIUDlyNzFzYWxLNEZLQjF3S3lJUkppb3owSFR0RVZYaU0wV1lIZCtnajlKQ0h0THR5eXZMU05aV2Mvc0luL3ZXU0FIVTlsUTI3aXZuc1NRbjJSSjBheWpKZGRuT2xETDdEdnp6c09RbksrL2JDYzRueXl2TFNOWldjL3NJbi92V1NBSFU5b2k5Tk1Tbm9lRFIyNnl5UTFUMUVuTHlSOC9CQ1luN3JXa0JRVXZpMlBqVFQ3cmY3UTZqajE0dGRjcnVNMWQ5NThzcnkwaldWblA3Q0ovNzFrZ0IxUGJpTzBtei9MYlRUMEFlbi9EQUl5SEp5eXZMU05aV2Mvc0luL3ZXU0FIVTl1c0xkZHFvaG13Wkdqa3NxWUY2eTN2ek5qK3pqRXJnWUhaSmhJeEszNWYzeXl2TFNOWldjL3NJbi92V1NBSFU5cHNIajN1TlIweU9qSVNaUUZYZmhkWHpiY25TcC9iK28xYzJoQy8vSmNvK0xOK0FDNW0zTm4vaTY0RDFpVWpUS1VnUHBvbTVFNlhzcVlFaC9RRllLVnZUYW9WZEZrTlc2NlRCZ293VFNTbml6cFF5K3c3ODg3RGtKeXZ2MnduT0p3YWh3anUraFVTNm1yS0czTnRtc2Znd0lkMUs2cEQwUmxoM0VUK3VzK3hZQXdRT1JpeUpHRXFpR2lzamY5TWVTa3g2TzBPNTR0TTlDaFIvVjF1amRlUExLOHRJMWxaeit3aWYrOVpJQWRUMjBFMmpGVXREZERwRkx5NHo5VklyWThzcnkwaldWblA3Q0ovNzFrZ0IxUFpNaHk3Y1ZmYzZaM0dMY1ZnZC9CS2QvY0JxcUxaOVpTazk3MUZENnJCN2dnUlVLZG04NmYvTzZCR3ZkNTRrK3drSVpmSkFrREVFSFVXdXRwRWpSUVpPeXl2TFNOWldjL3NJbi92V1NBSFU5anFsbTFQWjRVSTNURmErMnY0dkR2L1hKRmJWNzJCUWxqd1VLOTZHVjNhUXl5dkxTTlpXYy9zSW4vdldTQUhVOW9Icno5RHh1YkYrb0VHYy9ROFdRRkxPbERMN0R2enpzT1FuSysvYkNjNG5BM1djeHgvSEJYZmtEenAwd01GQzd2SHMvYjRCVXhBVE1BbkE3KzRuR1NBaFNMaDM1a3ArdUpDLzJReDFla2s5MXhQMnB3MnlVRm94RW8wYWwrdEJZenFsbTFQWjRVSTNURmErMnY0dkR2OEVRc0drbGprclNEQ0E1TlpUb2FjOUYxd2ZZaWE4M01DeVZjZVJTRkFJcXRFdytaREtTUnNUc3BWMEI3SXkzRUVlMUlaNUhSdEJsS0I3eDdNdmZSc1pYbDBZZGhuZFlvWUtTYnExZHdjclZTQnU1dzJpL0FIK2paeG1Ubm9mRVRVS2VkNEVCcG9wZXpzS3Q1K25XYjJHOXUrK0dIYzVkL1o2amFnMDBJK21CNldYMVlZZmdGTXo5Y1dHYk1acE9rWmRDSVA3eDY1WHFYS3pnbXlFeHVJSGdhajBuQldIR1JCaDl3L2h5WUlRM09XMFdDMllMRU9rRVcyTzd3cWNUa1JTWStRZXBuR08yalpKS25aSmdrSEJ3Z1BHVTRaNUlVdVlqUTRJVnVsbDcrdVZnS3lIUk8xckNaNk5KaDEzcHRTVUZuQkpCcW00YytLbWdiTXN3MTFZS1BrS25DcW5CdlZUbFo4SVM3UHhPMXY3ZHc0UmZ0ZDlzWFMyYThnRG5xd1ZzL0wzWHYzVDhlNitiYUwrZmxHYzNmTXNQTzZXenVobm5PbVpPd3VZTWhQOW5IckZ4UTdIZzJ4RkVmN2dtYmtJdGVRWEpobFE2aFIwUU1Uc093d1luWlJXaEczb2YwZlRYVitTSDM4WElJOU5zbnpSb2UvTXFvcEM1NjVyOGMycy9mdENOY2NUK0ErQUFhN0wwOXkyNVRENXBCUFE3d3ZOeHgwdVg2Q0JKSGc4ZG5ES1c4WGxTd0JYMlFBNm5Zc3NvY3RaQXdONGhkZUYzRjV3cm1wUjFmQjFtMSt3bXA5RWxtWmc0RDFTcXkzZ20zcmNxVFdmTmNvVHN5UVBtVlRjZE9QMHpmcHBvcTJHNVJNQ3M0Z1R5amJvVkRzeUMwMmpGYUovRDd4ZktqbkdRR2Rja2I2cTJMWmFBdTUwVjZFa1I3eklna045SGc2cDlmSkdnUExzQ2xSTTFobHgyemFESExTQ3BqZWU4K08vZzlNb2FXTUhzeXhKWjRQQ3VtVGdWaFdlSVFadWZ5MXU1Vlhza0k1RjQxNHRvTWdESzU0c0VLSU9DaHF3Vkk3OXBZbnZZdWZaMUlHT1ZvSWxGUlBKZGRUWUl2RCsyd21EN1ZpT241VXFYUnhUWFF0bnBCekhvdmpnU0dRRHJDeGl0a2RTandCREVsOGVXbjF3Wm5ETEs4dEkxbFp6K3dpZis5WklBZFQydXVhY0p3WmpiTzhZRElqMXBsVEpnd1VrKzIvSUs1TmNpWFo1M2FFZVc3OTVORnRHelExQk04VDkzdEZYWlZqOTk0cDQ2VXMvZytpdVdIQTJzZEh1RUlYLzRycW5IeUdrekdCL2F6MWVkQnVDTzFOWW5yUnBFVDJXZmtTcEVEK1hwYmIycEhJOC90M3NuMllFQUFQNmhMTTlXWVh6SXIzUm8xdCtmbWVTTDloeDhRczFrR1ZGMlVuY3FkUS9JaWVyZ1BGUE55c3I5dHhxY2lzbG9mRjhqanp2Y3VYSUVyZ3IxRC9QdWdGbWhPWG5QMzVkOVEwR0hLeEw2RmJ2RWp1aE9MTSt6cEYxVnJvRjIrdUpzQUdVR01zcnkwaldWblA3Q0ovNzFrZ0IxUFpzWWx3MW45em0yaUhYVHp5SUhHTDR3dnhGU1ZnWkRZOU1MdWNHYXZ0NGNkaEdFUnZmUEZMd05SRFZaYXpRM1k0ZVd2UUdYSEpiRVhMRHpQZjd0M3hPa0xodENxZ0lZZ0FZR0tseWZyZ2gzc1hYeTRkZVdja2ltTC9WZG1sQU9zNE5xbWNDd0p3VjhKeGRFV2VhQ1hCdENxd0F1eWh6dE93QTF4ZzlZSHZkUyt0a2YvSTIvdElOVEVIdS9uaG5YTEhmaDd3eU1YZG1ldStTMTVYbmNPN1VZVEEzOFc1TTJJcCtXSmQ4ZjBVaURDd3krVXhvNS9CdTVyYVMrODRiMTZqRU1nL0VNVnhubVFLM21LN0F6U3FlRHg4ZnZzT1lxMEY2bmhaajlQNS9ncmNTRHdiNDBLMGN4OWx6bUF6Y3NTeWI3Y2MzdDFlUnJLRkFmRU56Qld6RER4MnNReU9Vc0kvelpxaFMxd3JTSnFDTmhYaWY0OEErSTk5c0QyMzM4bHY0b3Uvd1JJSzVlVDdlb3FxRzBBMWJCaVJzYUVHNzlXYzBGME9DTlNqSkowZ2Q4R1NKUzhnTTljckQxYmxzbVgyMDlhK0ozR1J0Vk9JMEVWNnlPcjhIY2ZFTE5aQmxSZGxKM0tuVVB5SW5xOWNrVnRYdllGQ1dQQlFyM29aWGRwQVFESEtrdFczR05LajJIU1hEV092dWN3ODVFQk1aUXhOV2tqSFo4OE53RGM2VU12c08vUE93NUNjcjc5c0p6aWV3SHdFdHRJOGwwT2pqOHFIQmhjc0cyUnZnWldQa012MWUwdHl6M1hsU3NOaEdFUnZmUEZMd05SRFZaYXpRM1k1R1ZqalIyUU5reDU2VjZGU1dlTkJrcmNqdGFJNXZlTEZjVG1SdnMxM1dKR0IxVkVLZ3M4RmxuSnRLZjZIaFcvZGJWWGJxaUtVVmpKY1ZuNi9zUWNUd1N3V1JkUndqMno0WW54VEYya04vSGNBWU5MSmRvWTVYQXFtTDhXWnFlR3RSakVWVkRNQy83UlVNT0w0TDFLUVFYeTRhcnVjOG5FdFkyVHR0RUZjQ1lLTUV4LytEUHNuaGtDbmwrMEZhY1RNVzhUY3FQZ1ROTGdjVDBlblVvWlRtczFGQzRGU1E2dVNVZkdYRkZPYXpYTlA5MnNLQTlTSysvTkhzcWYxM0NPczdnMmJjNE4yWXlsdDgvOHlsekdOanVkemlpajdxVHV0QWdIeWJNOThFTUNxUi8vTW90Z3ZaVlNxZ2d1MXNVdjh3WitDaHNnazJ1U1hBVWJkcVE4Tm1weVBJMzRxVWpLUWUvNU5Kamx2aWFGNktnSi9vcjRFbndqZTNIQllCZ3dpNisveVRDVEZLdVpMdzNUMGVPNFZMaHo5ZEorRERNZU1KMGNsTnlGc2p4QWt3Y3d5dS9mcFA2RzcyYUtobkFWZ0lYaU82dVlRMWdQLzljbXN2R1FRTU5CNkM5RWlnZm1Ra1ZOTGh0YjV0bzVUNFg4Y3FSeExOUXlucFIzd1BtdVhwRlZsNWR5M1VEYmxEMjg2NFRKbFhXWUJUUytFUWw5cTRXYW04aHdRS2FnRTdKa3lITU5HbUNyQkZ1UC8rUS9nQUVvL3pKV3N0V2t4QnluNHlPOStURkpZVXNyK3BXdzVldU5adi9NYjR2bTRmY3hWdG5FaWZVYjFEN2ZJQTA5cHcxYkRGSWdBY0FtSWREMm9hVGlhOEJVKzEvUGxqOGtLRWpjSEMyWVdpZTlub3JDQnBWZzRVZXhaSnorZk1XRnJhWWgxS2h4MFptcWJucVoyY0ZsRUxqeXc0SFJMZXJYdi9zRm5EcDlWQ09oV2xka2Nna2RPN2NLRXFRRjloVlM3c2huOUl5NWhUYUd4b1VLNnBOTUtEY1d6Rml5dW16Qks1ekxiRWwreGVFR0ZYSjQvSnFiZTZQcXRrZUFKalNaRzQvZ0lGVDM3OEt3Z0o2THErOXY3SncvQnNKU2dpRUpGbjZyOUNMNEFtY3QrL0pRT0YrYnVsS0s0WDZyRjdoT0FlNmhIbTRMcHFpOFUzd2lZVmdlbHhQTzl5NWNnU3VDdlVQOCs2QVdhRTVTOHZmNThIeWY5a09lcFVhWmRIQURQQ0FRYm13R2xERUFmT2l5cXRxTFE5ZVRSYlJzME5RVFBFL2Q3UlYyVlkvWStoeU9tTUNqMDFaVkxHTUM4bnhBdTNZQWlqbTZEQURlNjdoUjlRT29uSnZHSUw2RHhkQmNiV0dKa000anJ3c1lvVE40Qk5kRTF6SWwyQUFveGJyUWhYRlh2TFlWbUtydFJ0dERQWU8yZUhCUWJKWWx2c21vLzE0Qkl0NXpRTjdrTDRXdXhuWVpma0dDaTdCNXRSOXFXZXE2WVBLMHJVUEplbkpkWUR3bzRrV0w3dlZzNFFPb3BjbjcxcnhXYmxKMVRqRDFUTVJLSXFKZHZCNHJpZmlHVnZxSkc3eUthZnovYkFjcEoyK2c4WEN4TWNsR210K3BRdHQvTHd6TUNaTitSMGlmdUc3UUYxMTlKZ3ZoS0VPOVk5SnpsTzhFK2RQN254T3Q0ZFBuSTRIQ0NseW43aGVwTE1meDlueWV0Y1QraW5PSTdVQXpsZDhISVMrTFUwN29MOHVVMnc0Yk9IalZDaTErbml4SWJDL2ZmVzhZaTJqSkVaazQ5MGJ0MUxRc3NyeTBqV1ZuUDdDSi83MWtnQjFQYmtPcG95NTZlVVZPbVd6ZmNyTVVMRmI0VU5lcnJ0dkJ5WlRXM3lxcW9jSXZYamozZUN6NXdjYmdZV2RucnRTRnhnTHNYWGxHRy8rNGVFZ1kxdE5UNk9MR1VqT0t0WXpVM0N3Y2h4alY4SzY2a2hKaWdkRmRtNlNTa0FMV3JHRjQwSmYvYi9PYUN2OTZsT1VjMHFIZnBXZmljZ2ZjRkM5ZlBDa0Q4NjVIK1Bvc3NyeTBqV1ZuUDdDSi83MWtnQjFQYUNtcDVoWXplWk4xbER4RkVWaHFRZlA0d2dORlhDQ0NVT3EzMlZxYklMMHJMUy90b055SFcwd25sbXFNSVFZVCt2Wi8rREZTS29pQWJxVlFRblFKeE9pZ2Q3RUNod21tV2RjMTR5cnd1OVk1azBzK2ZLZkU0eDhrQStXMVBtWHVuOUlSTWVDRHNySDJ4Q3pnYVU1a1JCRXh6aGlYQzlpQmJkYmVQQWRONEwvM2Z5THRXSFVYeXZ0UVVJZUIzSEpsSlhLSDZVTDhtd0NKRlpxZ1JVSkdVZmtDa001c0hlRjc4QTRxNUJDeFcyQWdQNG1LSGZWNndWWUhId0RaejFrcUNBcG5XdkJBV0RuaTlGOSsyOHNnWG40eEN0dGErNjJDZitNcml5TnBYdnlnWis3QXpSN0tVMDlOOXZtWDFKL0lIWjhCaXJ4NTVKS0E1ckFoS2hRRHpubVpoczRDQzNJUDlGZnFUSHRwYUpWOHRKS3ZzNmNpQ3MvdHBQWVByMlJ0S3ZOVWg5WXdXQ2xuYVhtekFDcDgvektYY1BJRlVkWjlFOU5PbHZvU3JiOXk0clZNWE95QUk1NHdMd2hwSURmbXNaNDRVVVJvSHFzekF3eWtna3Y0VlprQVQrZUxxam45a3VzVHYzS25HbXh0MFVIeDdiRFRyUHdVTE1kN0VvM0p1amZqSHRtOHkxQmFtK1o4aUlqaWNpVkloWm5odnNOQkIyL0FjdFd1bnhhUkxqZDNZSGlOSGtVdmpVZ2VaSk1uZzg3M0xseUJLNEs5US96N29CWm9UbENPSTNHS0hzcEJTTTI0azhFdlNtRWx6VmhrdXQwQkxJbWQ1dFpOeFFNemJMSzh0STFsWnord2lmKzlaSUFkVDJ5bjJlUXY2R0g3TytuUUNFcE9raTk0Wi9ZcUl5MURFYVp6WHZpSmgxSFluTEs4dEkxbFp6K3dpZis5WklBZFQyamxjVWZwY0hjbzVMR1RvU2E5UEN4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQYTVkRUZvdldOVGxXK1EyNWlBTGE4U3RkeTViOHMvQnR0MjBrQytTTGZmcVAxNmhBWlplMjNaeThMZldEZ2c2dlltYnVSSllYWDdLZHBWY3F5R1J4MUZJTlZBTkdiR01EMVlRbHBjby9yM0EvWGpqM2VDejV3Y2JnWVdkbnJ0U0Z4R084RlAyZ1BNc1dTc2ZmZmgrYzdjaUdXQkFPaFp0NkNrS3NVcGc4amFodHhyYlh0UkswRWlha2IyRk1VL0hka1U3SDYrTkptSFpJb256VUxtNDc5WlZaaU9oNWpXdUsySndMWkkwV3JnTk5IeTFIYmlrTXBBdkE2RlB3TzJ1ckwwSi9uNDJpMWJ6MnJRZjNGMGtMK1cyRVlSRzk4OFV2QTFFTlZsck5EZGp1TFZNbHJKdmNFZ2pheWhRdnY5U0hJRlQ3WDgrV1B5UW9TTndjTFpoYUo3SHRtT2lqYzJBNkk4UG5QU0UyY1orN25oSDBJNnF2WEx6OUZDOVlHWFczN0FZUXFoSmZtREJOSWh4Wi81ZFFwVVVoVU5ITHJ3bFpsekdZekNCRkRvSWNzcnkwaldWblA3Q0ovNzFrZ0IxUFpMRnZHMWJlSlhOVlpMMksxMDdGaVg3WDdFeXlHM1VoQlRZcWFSS3hkRXgzYnhvU3F5eUk4bXRkY2dhZGl6TGN3QVhmTEpOKzJSdDFpVzlHc2ptMVJhazB1c1dlanpQNjJlVmVqZFB3M3Z0cUJoWXVJZCtuSnJQTDJiY2s2TklzZ2ZmR3dtT0pWZ3g1enZ5RW0wOHpHdDJDc1VsUWRQY2NyN0hkVlpwNGxEKzhzcnkwaldWblA3Q0ovNzFrZ0IxUGFiM0o5WisybmUvOVlzUzlaaVFLN2tRUEYyUWlCdVZQb2hoRDRSWkpKdVlaZUNTL3l3VW5McmltV0xiYkk0c29kN2pxSzh5V1FWRnRxY3pkU3hLejIxOElHSGNJL1VIN3dmTGxLTTVjZjJMTnVRVEhIZXZnNTlDclpxNHdxVnZneHJVWkRSTTdraHZKV1VCTDNOMWwvOUYwbE9EZ1JyUHNqUWZ6SGc1NTNQb2xPeVhQSXIrM0c2eGlycThYSXgzTW1kZU9OenZXVzlzWjdwcUlNVWJhSFpYbDNobjhCNmttR3ZtQWt0QmMyN3A3dGw3MDl3TG5jUVFZRERsSFNCeUtOWDF0VTVSMG9ZRjZ1ZmRqS3FJdERsK2U5NEpaMlJPU1lwbWdjeFZrRDFndHR4UGhja05nSEZ1Sk81bWJIaGdxZ04xU05GSTZ3blBKZklPalkrZmRjQkF0emNBZjYxbTVhNjh3alBGUGJsQ0tYOVdiVGp6cU9lbjhJOThZYm9RTk9SaHJRNnczUkJWZUFCMnlMSzZsSWVKWWNFV1dyTVROWUNMQjFwanhCUWJvS1ZySTJoTndtRXNJbitnMXlWTFZiL3ZaUzh5RE1MZUJ4NWpNaFdvVVlHVWZXallENmJhajlCQVh1ZG9VbFk4UVZEK3VqKzZiZ1JWRTdNS2QrV1c3bjV5V2pSN2h0bW1jeXNZZ2pMSVY5SWRJQmlucnJxUmIrOXlVYUpieEhCQTdjdllDR0U1Ry9IcDB0Uy81cTI3VmZPY0FrUnRpNlNEVnNDY1lLaDdTR2hNU3BvNVkzT2c5cGJBRVEzc2dOb0Q5M3psUlltdGQzZVVENmRXSnFNcGRQRkYraTlWbHpsRk1aek9YeTJJSWhBUG8xOGpzM1FWTWZ6TUVHV0xYcjFtWUtMRERZbUF3VzFHWmhyMUZRZldQMUc0MWhjVTU4dzRBSWZyajlzZjNpcWNjNm9PUlNqTEFkKyszL2l6UGFKZ1hBRWJWaE1GbkhGNm5oVnhuNGR3NExMSzh0STFsWnord2lmKzlaSUFkVDJaUW5mSjhkQWJucE1DbUZrVGhaYXpmeFd3N21LUW1lQnFpMWdaM3Z1c2YzRnJ5ZG9ldlpkL2tiSFZlWEUzZ0F0ZWRjOHI1WGZqbXFLYzI0N2tubldjY3NyeTBqV1ZuUDdDSi83MWtnQjFQWXVLMVRQMXRha0FDdG1wczJ3SFR5cG5uTmkwTk4rdnh0aVhISGE1a0d1RDFKbTUwUGttSjlMREUxQjA4QzVsQm55ZXgya09vYzJwY3dkQkN4THJlMjl5eXZMU05aV2Mvc0luL3ZXU0FIVTloWUFMdlBXQ085ZmFDZUZDakhnWjJhVmV6V3ZvUGl3a2RpSHI3dkhlUTlDWTdwTFBmSE8zN0ZuR0QvcUg2MVd6cDk3d2FqRjNXRVhCVnZWOTdTeE1ZeFFSQ1RiT1VNWUtjUUF6QzZiMVhoWnpwUXkrdzc4ODdEa0p5dnYyd25PSjVzTUNxYUJRVlpFQy9yaVJUa0x4MHdtMlBraFUxeG5sWlUzR0RmTWUrMVhXTkVKNzZEaUFSTWpGZG0xUmJZd1hUMlZPTWVkZzFucVJEWXBadzJUMXI2U05SUW1TbGRyLzljVzFyRXhDM3dNRW94d1o0emFNdEZ0UGgySlI2OGd5eVNzeFNRWVJmU3lCSFMraVlwNmpRK3ViOEtEejZNb0dTWmp2RUduaGN0SU5GWU1LK2V6SkNDMEZENDZSdGZERDJOTXNwRnRXQ3I2bjFnOW5XZ1pwMlRSNThTVVVKWXpwSFcvZk0xMHlNMzA2L2JCNllsaXBSQzZqNEJ2bkd4aEd3UDlGZ0xiNlQxSlFaTHhBZFh5TDhqcnFxaWp5ZGlIRW9FUGdIdFdiY0dkaUxTNjRFaVdrVXI2WHpuOUtBbi85ajM5aGtBTlM2RkdrRXk4VEdWTzVnNXROQkJVTGwwQ3U3VzhUZmpkMHh1R1JiVzFRckRXem1QOS9Ra1I3cC9iRlhieG9TcXl5SThtdGRjZ2FkaXpMY3krcyttUlhKNmFYVnpBNUtUTm9Rck1rQWMzcWc4aXpqaWl0SjFEY2dKYmhiL0xuV0RER0dFRklZOUYyenVFRDNFN2FhTlI5UjRvM25NM01Vc2JwL0RwczJ2eDBFOGZNanV2enBFc1NaZ2xXMWZYUkF3alVWWFI0RTlJaWZkcnlQdEdpRnRCclNRM2pMSUI2eTNaazNuMGdMWjA2aGdEcy9LTlMydGEwTGFOY2hEdXZIaFNNTUE1VFc5Ry95QUY0VERwc0JTeWc5YzRUbEZ1ZjdPOEpGNnNNcWtFLzJIb0RBN2dLdVpzZEhZa1oxMmk0WWMrc2k1dXZaWUJlSU9qK0tXWDR4WTVBQ0hOQWFlK09NR25ZRkpqT0lHV1o5V2dQaFNqd0J6SFRDbXRlOVIzRmFUNExpUktkeE5meWtWL2tqV3laejlSSVp0eWd4ZndSU2tuanpoanZsTjVsZ21McUYxWE9JeEdoYkR6ZHpjYVhvZlJlK3d3MkFHcWczdWRYKzZ0M3VsaXptTnl1aWtrd1hXNHhYU2dvUmdIWExPQ1JnTTFGOE84WFM3QkFpYXAzaS9GT2FmUmNFOXlwVmp2U2pwOGJ3aTRsNUtwaU54c3M5ZmFZSFdUMDA2UG1jSjRYOUx6WkkxeWRzN1Z0SE4wTmlpMVhLL1djSjVIS2xGNy8vMjJTd3o5ZHpXUmtWTGRPY00vSndJR3l5dkxTTlpXYy9zSW4vdldTQUhVOWhQMVNrbUk1YllCbDdSR25KK1c3U2JMSzh0STFsWnord2lmKzlaSUFkVDJsNy9TK283VEp5eE9HSnZqLzRreEtXdHd3anJCOWdyNFY2UHRxcFNxdmRGem1RZkZUVWJqQmdpYWdTYmNCZWJzRk94K3ZqU1poMlNLSjgxQzV1Ty9XYzZVTXZzTy9QT3c1Q2NyNzlzSnppZDNRd2ZYRTlLNHp4SjZ3d3dpNXRHUlFTQ0tzZmQ1YnFvT0tYTEdxR2hFQXNzcnkwaldWblA3Q0ovNzFrZ0IxUFowYXN5YjhhYjlPcW5jYlUzd0dxdGlFcFhsU1JQZ1FtaUtIZWZVVEU0dEE3d3RRenJlU3QzQzhrVzUxa0RFVjliTEs4dEkxbFp6K3dpZis5WklBZFQyTzRObTNPRGRtTXBiZlAvTXBjeGpZeEphZGdzMzduYVU0dDAwaG44OE9jSitiZlBtZnFDU3RQSTZNRGxIZVJRZmhTRGNYbFMwL2xxQTJ5bnRUWjlSMGdJUUFUUDViZ1ZjRFRmN2g1ZFVlR3NMejJNejhKYTFQM0haL3dkbG1RK0hkdHVybEdUMGttRzhVcWV3T2d0dlFGR01SVlVNd0wvdEZRdzR2Z3ZVcEJESDRFNitiSkdOM0loaGtUQUQzZEdKTU9uQUFvei9HT0haK3M4RFdENTdmZGY4Mkd4d2pEUlNmZU5malp1VTQ2T2V1Mm5LK2p6ZGZoZExsaCtCWWYrTDhDOTcyMHVmR2FQMDhvMHpHYUtxUHFCLzhMRjkwRkVZdW10bTFsWXIyaGROSkpBaTh4RTF0SVRlSDNsd29qNm55eXZMU05aV2Mvc0luL3ZXU0FIVTlxVzlwMy9lVEkrY2dkZWFTZFk4ZWZabTYyVXovZ21QYkhiRU1MMFJBT0FaenBReSt3Nzg4N0RrSnl2djJ3bk9KNXJmWmlUN0FYRmVzT1ZucUZVQmJUU1VGTTJiZ3dEU3BERWR6MUM3b3FNQldCb0dJTDdQWktsekVIMkJub1pmS3I1QWUrQ2JzcDhMMEdPMSthYzJib3VQMVVwQ3ozbEs5Ry8yZ1J3Qktudzh5eXZMU05aV2Mvc0luL3ZXU0FIVTlnbkV6eXVxSzFKVEY4M2pMcm1rRjlrL2pDQTBWY0lJSlE2cmZaV3BzZ3ZTc3RMKzJnM0lkYlRDZVdhb3doQmhQOUFRanpXbm9SaGVFUXB3MENlbEhIVlJwNVYvdk5xTCtGWHM1cElYRkdkTGNHYU9Daks3Q0JtOHAzRlVEN1hNZXlKM1FDUHFiTGRkYXdPRDlrZk40ODN6Z3JPWHpXdmFqZGtINnM2bXRkTHNwSnJqY1RBckptUkgxcDBqaWRZNU9OdHhQaGNrTmdIRnVKTzVtYkhoZ3FnTjFTTkZJNnduUEpmSU9qWStmZGNCaFhmK0tiK1phOUVqdXJ6ZGV0NnFiN2lzbHhlYU5TenllRnd1Q3hmZ2M4K3dEUFBZb05UNFFZYUVZL2NNdHdkYWRrMGEzdHY4WUdOQ1d1UDY0dGlvaHRuQmttQ25WL08yd0ROQzN3cTVOYllvcDBIbHNVcXF2RWxrVUwwNmFRRWpMaXRVeGM3SUFqbmpBdkNHa2dOK2EyWVk3UE9IVzlMNTcvNVQ5NklkYTJpVWtCdmU4WTFDY3A3WWo0VUxkSjlTakt0MVkvNG9KejF3WWdIU3ovZWxPcHJFc1E5RWF4Q2R0RnZ5T3F6ZTRaU1ViOGtHb2dUa3NMWCtDQ3lENFhTTDNETnpEVm11ZTRKUGNQb1RMcjVGKzJsdG1JakhoUURxQk9saEJjUERLcXVKVktmWmZvNHIzUkY4U3FPUUwrc2hSNWt3NlZpbGVIdk5lTEgwZVExSzZzc3J5MGpXVm5QN0NKLzcxa2dCMVBieWlpdWZGU0dma29oRGd0SExKd3R2bG45ck8rZ0p0OUhDaDA0dHcrcVpVY3NyeTBqV1ZuUDdDSi83MWtnQjFQWlZCaU9WWktBSHNRQXhxemI3YkxNRXl5dkxTTlpXYy9zSW4vdldTQUhVOWw4TEc1WlRuZlBPbCs1SU9Fa0ZkcitlYzJMUTAzNi9HMkpjY2RybVFhNFBVbWJuUStTWW4wc01UVUhUd0xtVUdmSjdIYVE2aHphbHpCMEVMRXV0N2IzTEs4dEkxbFp6K3dpZis5WklBZFQyRmdBdTg5WUk3MTlvSjRVS01lQm5acFY3TmErZytMQ1IySWV2dThkNUQwSUVqV2ZUNkNnVDBRUUJ4K1BZRUZZWFdPcUFuaUw2dkN0L29RZnBTTU1xaVRaQkRJK3FydUgvekhhcHdacWI4NHZlT0c0WWZxVGw4R3FCVzJsd0hZV3lMNEpZeEJRMHdOY21GMitGb3dzY2NRaU5BZkR2bEs1NWRJV2NicFJDSDg4MmYyMys0alpwZ3lZOEVGczdIdlUwdTNhcGFjUmdHTU56M0J5a3B4THM4eXlsamR4OXNWYVRMenlGUmIvWWNIOUZTVjZ1NTZDWWFnMU1qSXBKMXllaCs1YmNnSFBPZHdsRTNmOEJaQVlPMDZ5c0NkNXQ5WVdTSWhYamcxV0NCNmRpQUFEWHZxV2lsNkc0Uzh3TzI4YWcwMjJjbCt5MGdZVGxBTzh2YU1QcnhvZnUwYWtuZTlHOTk4Z2Z3dW1KRXQxYTlIV1N1OGNyM1dwb1Y1YW53TE93QUxHajVpUHdkRnhNUmV2QWN6OXVOVkJmcm1iN1RHcWEyVFVQaXE0bXkyZzArSDJEa3BEdHZJeXRwemh2OFMzZ1liT1J2azFFdHlKWitzOVZlSVRvamVjYWU1aTQ0VGdnVHUrOVdxYzJPbjJNakJTdDQrQlJzWGVMc0RiTUxUTGwxaFRnSUNaMlowSU5XKytHSysrc3RVNDlnRFFHZTEvc3dMYXBVeUZadUJkb0lIWWlaZG5KVHJiODg0UThvYkJVUDRoMzhZMmhYc0N2N3dyMVlOUmgzRnVXOEx4MXVCL0NweVVsMG5Scm1hRzE1cDA2UnRpc09kaVZVemtnMlVvazhaU003OXZzN3Q1eTRSTzExTklGUXNtQkorUWh6NWo0N1BtYis2dkRxTEo1TENzU09EdElhdWViMnNwaVZwZVUySUN1aXNtWU03R2JnZG5NMmk3K1RSSUJOQW1kYkwyY0xTZ2t4Sm1pQVNvWVBFaFhjWkh6dktmckhnMS92M3hmUlFCdGY0Wks4L1dZSVBMVzdhekFFRHZZMVBFQkxXZlVUVkVNM29hTVZjUi9HTGY0YVRtWTc5YWxsbTRQVjZnNnhSZm92VlpjNVJUR2N6bDh0aUNJUUgzanBFa1dvMnNKZDlXTjgzb25RNW1lZEtwalRST1FjSWxITm01VmNDKzd4YW1aZ1JIYUsxNnZtWkV6YW51VERLOWVtVlI4ckExc2pubktMK3NTSnoxVExEZklkaXh1eGxvMVdFN0ZBajBndFRNMFMxbDNXUDRoYm81RU5qemROakZWY0ttLzI3R2JuTEEycGY2UENiRExLOHRJMWxaeit3aWYrOVpJQWRUMndXQmZrMFl0cmJSWXcwUW9yaUp4dDhXcG1ZRVIyaXRlcjVtUk0ycDdrd3l2WHBsVWZLd05iSTU1eWkvckVpYzlVeXczeUhZc2JzWmFOVmhPeFFJOUlDaGZOQUExTXBtYnpkY2tvd2Z0cS83OXNnUlo5MXFUL2N3S3BYeGpPQWhaY3dMMk53dzJZd0o3Rk1sOERZM0FhTkNOcmN5QkdyYVd2L0xQd2xPRGd1WHVkZDZ1Vjh3OGFNbUwwazRuakxiNlQyYUgzdlZ5NWRjdEYwZlh0YUMzQXd6SUNJOHJZR3A1bWFOTDRaeVZVck9PM1lqUzhvNVg0b2JzTnJWRGxEVVhONm83WTA5RTdXQVV1M1A3eU1POEdkTngwRjRiZXdFdlozbjQzMmhDWjRTeXZ2NExDUEZueEpnUVZPZmFwUmJRN3ZUOXFReEhpTTVibStUY1JMTSs0V2dpQlJFU0MyQkVyaTR4MTVvbGpxM2xUeUNObFl2QlM3U3VVUDl0RHVjYms0OThsZUJEOTFiTzZmcW9UYXQrK2Y2STJhaDlsOElGYkRhRXMvTTEvNG5aR2tHK0Vlcm14b2txbjgvelhaVVVUV25QdzdyRnhZcHpXb1lpT1Z4NU9IRFlYNE94UUpTSGVDQnhFV1ZMaEY5L2J0RkFCcExzMU5ONkNIdFZ1MDVsUEMyL0VpR21iU0VpdkdVQXFXeU9OeG9qTXB3Z1RNUE9QZEdrdnRPWE96dFB3TU9SWGt1QVZPakRXaDFPN1ZyRHlhaElPcWt2aE1DWk1rQUo4RFdKNmdURDhHNUJRZU5qNWRyWXY1VHhYNHJySnA2bjRLcXJhNFEyaW1EUVBQRlBUblR3cXRGK1RwbGdwcy90N29Ma0NVTkE1d0h0ZnF3Wmcvamk3YXJwckV0TW9GWi9qZ3BOc3VYQWpIMGNwNWRtbHZva2ZvOVcxamVlVmFzZm8xMnpuTTZVTXZzTy9QT3c1Q2NyNzlzSnppZVhoMkJJZGlDR0V1Ym9Bbjl5Mld2cG0rbkFvc2hJOWo4a1hqc0pqOWs5eHU0UE5WVXQ5RXVtQlpiU0xaWE96QTBOdER0b3JkVmlkdkFoc0lKUWJQbk8yNlc1ckpzdThPSzdnRjJTKzRpelYzT29DM3hYOHRGSUZLUFlIbmloRzVnUEZFR1BCeGVVT1RIVFBVN2hTYnd1bEo0dGxaUGIzWmdiOXlYZGpkN0xIUjNFWkIwYm92UjZCQUFITXlrSllHeWgycmpKbStVenNrTlNNd1RWMFpjWlp5VW0rMG1Ic1N3NWdSSzREd3UrcklLWkFEbDg2VVZ3LzMyMDVZUlJQT1dwT2JURXhoY21nNDAyL091VGVESmk1MUF2OURTeUpwZW5GTFI2NnYySU1RRVJ4TGxIUTFjWkt5SU9Qd3pnOTFPWDlUWVpZYVByb01uSXpjMG9uZ1R1dGlYZ1AxS2kzclN2RTB6bVF0Vkd5eTF1MmlRTHpsa2dQbHN3SHRySGtyVW1ZTjcySmVleHg2allYYXV2QzBCNHNqOGJnYktsMFBGZGFDVjlMOHhFcHBOSkgrbjRIK0ZQdmZsZmU1SWRtb1JWaVZSV3Rra1hnUnA4VHlveHJFaFNjYzZvT1JTakxBZCsrMy9pelBhSmdYQUViVmhNRm5IRjZuaFZ4bjRkdzRMTEs4dEkxbFp6K3dpZis5WklBZFQya3Qwc3Bsc2tkS0Z3NGd3aVVzSGR5NFBEemljRjRubnlaSTRnMFFzV3hPdDFsSWg5ckVidG9scVRHZ1VKM09zdGd5T3RzSnBGNWk5b2VqRTh4TVcrdlVsWTl5R1BiR0k3UXdvVFFleXdpbHhQamc2bTVVVVcrTDVaZjFlZk9JS1ArRGNXdlM5ekZDK3hEeDNmb1JJY2MwSHZvTXo5MmpuNE1rS3Q3NzFHdWszZEFTZlpNRzlyeEVDUW8xZWZRc2ZoOW1TKzNWYTYyc3FKOWwwQVVKbjQrRVp6bEVhR01LdWxicTdmd3p0SmFKL09sREw3RHZ6enNPUW5LKy9iQ2M0bk54a2ZkWlRESE1CcEY0ZUUxRlVtRG9pQWJ3WEpVa2I0dG5BNUo5V2tzUGVnWVdMaUhmcHlhenk5bTNKT2pTTElIM3hzSmppVllNZWM3OGhKdFBNeHJTdUhJaVlYNi9FRnN4TGdKeTN1Y0hqTEs4dEkxbFp6K3dpZis5WklBZFQybWRYejFVeXNzdWtyTllhUjJQSlBRUnpGdE5nWitPNnppS1g2TVBCYVVISWNCL0IxM0dhaWRacndnUFM2WWh5anpNT0RLeUlxSEZiZmh1dFM3aTF1V3NzcnkwaldWblA3Q0ovNzFrZ0IxUFkxMEMzS09uR3VhRWVrUENZR1ZIeGt0c0FndkUzb2FPSTN2UTM1WkczQ041K052RHZjRnNpb1RQQWpPNUFEWklCVlZXSUNJOEtzZWU1UDJOS0dLR3kreXl2TFNOWldjL3NJbi92V1NBSFU5c0x2K0h2N3ZQZ1o0SmRiSDliY3p6VXIydWpYMzZKWHdhUlJWckRiT3lGV3Q3K2JCSVRPb3pqN0YwWEhPZk1oY2pLOFpVdmp0WUFiUTRZdXFGTnFlZWdvSGlFYy9qaDVweWk1di9sZ2oydE9CRUxCcEpZNUswZ3dnT1RXVTZHblBmVmJOaG5JZ1BFZHVxb0tzNGNMWUFuTEs4dEkxbFp6K3dpZis5WklBZFQyYXU4c1pkcG5sQXpEdmpJRnpjRDZYMTIvVmRwUjFhL3duL2RKSko2MU5SSDRMY2Z3T2g4cVB4bEozY0c2TFRtVlJUdFJMVjBldUNsVkkwdHJma2xpVllQeWhZK2JjQ3JhRGdMZjNxMlFpdlIycTNESXpTYmM5cVI1ZmRuaEUxZm95eXZMU05aV2Mvc0luL3ZXU0FIVTl2YXhVZzZyZDBHYkxrdU5qM1NRY3NvVTBVRU1MWDhrSldQMUtkL1N0TmVDeGFtWmdSSGFLMTZ2bVpFemFudVRESzllbVZSOHJBMXNqbm5LTCtzU0p6M2tXd2l3SFNWclpGa1hxalVnTEUvRmdqdnprTi83VXRzYnZMYzZpQi8zdFRzc0pNWnlHK0crVkZ5WldrcDROYm1XcG1DbFg5MmFsU0xzbWxWTDFaTkczc3dYZmJVRnV6V0ZnbjlvNHlsUlNUWjYyLzQrZWZyM201dk9UbU9KMklET2xETDdEdnp6c09RbksrL2JDYzRuVitaNERZSWZoOG9maDh5M0hBMmRLa1JKeXYxSUNuOHVhUFVGQVJTR1BqNEpXU3VaTmN5c3JLb3diL0JiQXRwU1JweG9LUFV0elJ5MEtWMEkvdGJMWU12MUFHaE8vNDN2VTZHWlFrREw3Y3RWWmExL1lEbEhqdk52eXo5MFl4OGJjWUhTOWJiYm9pYmFndHFRL1FNUmtPZlVJT2hEaDBBU0tOWlg0d2s5eE9ZTjIzYTZmMmMrVHV0bU95cnM5L3FMNW9BblB3eVJDS0V2YmxTdm55OXFyK3NtbnFmZ3FxdHJoRGFLWU5BODhVL2ZLOWdqdENrSElNK0dVSkFhSzhMZXl5dkxTTlpXYy9zSW4vdldTQUhVOXNPdjBCd292MlpZc3dScSs0WW84UG5hQnVnZ2VzM05qOC93ZGkvbXl4WWp5eXZMU05aV2Mvc0luL3ZXU0FIVTlxVjhqaUdqd2hPYWVXWXNlT3A1UFF4OVMwQmgxckZrZnRXTHdrcUJqcDFmMUpMajJ6R1FxOXlQK0REaUl0TXZzU2dlSVJ6K09IbW5LTG0vK1dDUGEwNHF5QkFSL3g2bHpDZ2Z3Q2tWYzVjVlYrMTBxTUx3MHRNb003c2szMGd4UXFYL2p4eHBoa3ZqZThQR2pZeGtPOGwyOGFFcXNzaVBKclhYSUduWXN5M00wZmc0RHFtYUg0MUlRRVNGbm56Q2JrQVZTZUpER29IYnQvamdUUXBIS3QvQ2ZORkZJSlA4ck9KbTcwTXNrTzgrenBReSt3Nzg4N0RrSnl2djJ3bk9KOU9hQ1VQd0Q3ZXhObWpaYjlNODF1dXFZMXhIWGtMTGwvcHQ2RnZCSzl3bnpwUXkrdzc4ODdEa0p5dnYyd25PSjduaEgwSTZxdlhMejlGQzlZR1hXMzZnMy9EOWpHNzk3b3ZHenJYeWxkcHJ5eXZMU05aV2Mvc0luL3ZXU0FIVTl2Qkd2aDgzbnJTQkJtc1pqYXFZRlZQZTFSaURsVkZsSW9jWlZhSDZlYy9YeXl2TFNOWldjL3NJbi92V1NBSFU5aEgwVnp5MVp6VVZFMDQ1QWVIL3JwUExLOHRJMWxaeit3aWYrOVpJQWRUMkN6d3M2N1RTa0o4VUh5d0drdFNUSk1zdHpPRXFONGpEQTRHbFEvb042WnkzZE5ra0RxSzVDRFQyOU4xc2FtVHdqVXN5K05Sc3dJVUdYOWpOaHpFZ0Vzc3J5MGpXVm5QN0NKLzcxa2dCMVBaZkNrcVpYTjF0NDB1VjV1aVFPU2lheXl2TFNOWldjL3NJbi92V1NBSFU5cnUyZWtKbjUyNkF4bkVpTjFrSXlvUU9Lc1g4SFNoZ2FFL0ZPMEpsUlNUaHBDQzluQUowOW9TU3dGbkNJOWRpU2hqOXI2OUVwSm5UN1FONzd0bUxxL0hMSzh0STFsWnord2lmKzlaSUFkVDJWRmFxOUhlbVJ0dldlbFZhQzl6aEFjc3J5MGpXVm5QN0NKLzcxa2dCMVBZS3JBQzdLSE8wN0FEWEdEMWdlOTFMeXl2TFNOWldjL3NJbi92V1NBSFU5dEV5b204Z0czTlNYVEViRXNlNGxpSXU3TlpLRHNpUkszNmxiTXBEWFI0YXpwUXkrdzc4ODdEa0p5dnYyd25PSjJ4OG9Mc0xqSWxZQjFOcm9rSXZob2oxNDQ5M2dzK2NIRzRHRm5aNjdVaGNQandIVFl3L0U3QXYzZXdlejlLTFgyenhMWFBwcnNnVkUrdkF1cmxPVVVUTEs4dEkxbFp6K3dpZis5WklBZFQybzlOeGF6aTd5WUk1b2xHRUU0S2lYVXFVa0ZkM3F3a3ZISVZVSWFQMDc1VExLOHRJMWxaeit3aWYrOVpJQWRUMldoUlFicjRJVnJBN1NvUDNvWXRIR0J0cGgyT2tpM3FhOVQrVmZnOURCYmpDMEUwTkVDejlabm9xMTlCK3ZETU9ZT3IxY0haeWxSZFdIQnRUd3ZqdHZjc3J5MGpXVm5QN0NKLzcxa2dCMVBZQjdXTmE5MEV5NmRWSHczWkVWSUE3Qk1UTTA1Z0JBMVczNnpZcHZnMFhtY3NyeTBqV1ZuUDdDSi83MWtnQjFQYkxLOHRJMWxaeit3aWYrOVpJQWRUMnBtOUttbTAvTncrcXAvMnR4cFI4aHNXcG1ZRVIyaXRlcjVtUk0ycDdrd3h0QWpjazRUTmRqVVFud1hEYkxGb0p5eXZMU05aV2Mvc0luL3ZXU0FIVTl0eGVqVUZRWDk2S0xCci9VeE1ucHp2TEs4dEkxbFp6K3dpZis5WklBZFQyTXRhOTh0RW9pbHZJWVBadFU4Um4yRlcxdnhhM0RCajA0U1R4Q0pTcUI2YjBNMXo1YWVXbGNLemV5SVNxbVVobk1BWGVnYTRjYndzWGZJYU1mZ3lSeGNzcnkwaldWblA3Q0ovNzFrZ0IxUGFsekJIOVMxdVRyL1c4b0NSVnRDYjN3SGVsRDFsb0Vlc0N5RDUwMUg3Ull3QTMrVmMvL2VIcWg3NzZZTmVGaHdrTnE5QWRESjRuL0xSRDNXdFlKWEFTNVJvbzdzTndXajlTdDc2SWFPd09ZTm1DR0RWWWE0SEpybk5rRTJZWUlGeExvUDJjMkxjOEZuOXUxWElxSU5XVzAvM2F3b0QxSXI3ODBleXAvWGNJNjZQY29kdmZjYzlNY3hIQUV1Z1l3Ti90Y0h2aC8ybEFDU2krM1hTZ2FVdHdxNFJmbktWbm91M0hJdndNSHR3ZXNTUnZyZjB0NkxiWUwxVlRWek9kZWNra0lYU0tsZGR3SHRDWTBXb3pJOURNZFFKUzdhVlVZcE10dDJ1QVZQblhZQ2pOZ0FRRGYzREtiMDIzUDcrRWxMZmZQNEVXYkxySVJuU3Z0Mmh6U1NxVHNQN0pNdGZUSE9xa2o0eFRpYm1DbU02VU12c08vUE93NUNjcjc5c0p6aWRkSVNoNlM3RnRGTHF5bWlKM0h2SVNQWnNKcERjOENob3dmN2hsZ0o3NkZ1TjBPSkNtMklxc0pKbkhYSmQxZnJ5eXFaWXdPSTRQSmIrTmNCN1IxSGxSbHo5NDdhdzViazRnNFl5VEZvUjRLdnV4R1pmU1p2RjFwNHZzM2ZERkJlaTlEbWJZZGltdmcwOVkwbHdpdzZ5UDIyZldnOVZrVUlKaGE2anlncFY0N0NmWDFCSEVoMXI1UEg2Y3A4UGdaR0JKQXNFOHBTYWdaeDFPVTVSazFndnduM2JMZHRtY0JBWnE1MnZZUjh2TUdMdDJxV25FWUJqRGM5d2NwS2NTN1BQa2RJbjdodTBCZGRmU1lMNFNoRHZXUFNjNVR2QlBuVCs1OFRyZUhUNXlPTlZtNWt5N2Q1d08zNTRJQ21kdDFOY2dpOGl2UFRuQWpmUGtlZkpKSFFPbDR1NmVIMlJmakZVOFE2UTQxak1oR09rV1N2eGJPQStPZFlZNVB3akx3Si9jRkprZzNNM0pqNGdrWkxxT2gwYXZDOUxheDFFMm94QkpxNCsvempjWUs4NlVNdnNPL1BPdzVDY3I3OXNKemlmY1FHUlJEVnYyT0s4cFZmY1F3QmRJYmRTVXVYMzdud1N1dzV5djJUK0FzR3V3UVJYUVhOVm8rOUlwb3A5eHkvT3YxUVhsZ3Rua1lGUm5GQyt6YklQMWdJckkxaDl6MTZNa1VCbFh3RGU1NGhPbDYweUhZVndlM1pFaTVkaUNCdG9PT1YrSUxRbWVYbEhYV2JpQjhLVXlobmFGblAybG9BRDNybkpFSkZQb1ZIdEV0QWo5djNVZ3lVd2RNWVhoamk0Tkt2aTZMaEN5TWhBUzRwNVpiQXp6VStzVmNQaG50cm1zcTh6WVlzOEFRTmpHYlE4ZmtMMmw1WmZOQk5kSk9yQ1FIOHRDOGdqbDNCemptZzNIL01IQmxGYktZekEreldIUGcxbzFDOW05ckVROXhnN2g1aE1yYmV2Mk9FSVRZSy9MSzh0STFsWnord2lmKzlaSUFkVDJCenprTEFrOTduOG5zOVhlcWlieHZzQjNwUTlaYUJIckFzZytkTlIrMFdOVVZxcjBkNlpHMjlaNlZWb0wzT0VCaFh5RTZFSU9BSnc2WnZLdU8wWHlHWWdRS0ZRMzVrbDVuY3VFT05HTlhBbkRVUGdqQ2dtN0t1TGRlYVUxZnVLbEZKMzQ3T1hZTzVoNE9rdjNJcE5IVXlmTEdRK3czYXVOREgrNkNnR2U3T1NlanlBZ3BoTmZ0WDdiK3VkQ25XMHdIMU5pcWNnazhHZXVhanR5RHkzeWxKQVZ0MUkyUW5jMWFsd2Jub05xTU1nNHFlK284bWYydDBUMGQ0Sm0xQUxCTElLaE1qbkRWam5YT0E3SmNNK1pWNWZ2ZS9zbzRRUld1YmwvZW5QTTBnb3E0QXF6VlV2YUZDcFF2amhvVFNkb0FJNURucHFYQkwxQTJyb0IySWUzRU9SMGlmdUc3UUYxMTlKZ3ZoS0VPOWFTTlJRbVNsZHIvOWNXMXJFeEMzd014bFo0QmRuZlNQNENoemo3OWpJQnlRMkZNZ3dXc3dNT3kwQ0hnUWJyUlhMbXF3ZldlbU10bEZVS1JHeEhtRGlMUnJ4U08zUStjWHJUTENGUHAzRDBCWEUzZE4rRkZnc2UxZWJseHhWMVYyN25YVldDK3FuN0NOamo5SmV4cnBqV1NCM3daSWxMeUF6MXlzUFZ1V3laZlhYQkRLbjZOVk5qM3MydEpPQVh2dXVzckFuZWJmV0ZraUlWNDROVmdnZW5GVEQveDVvNmVtdmw0bUhwRFllWXdSTzdFTFNFTnBVNFlIbjJhWVZMM2RzTkt2aTZMaEN5TWhBUzRwNVpiQXp6Z3VCVlNBUzYvVWlvNmR4Y2hCMnBldlQ1dDhYSHlIdGdHRFRRQXl6cHlJcTh6ZmN2dmZZNW9jRHVQWDh0WEZPdUdnYVMzQnR5L3VYQ0NkcWI5QUhoQ091THgrMTJxVDhNQ1ZiV0FrK0hCQ001QVVCbFNvcUI5ZUxhVVJXSDV3engxdUdNaG9XY2ZCQ2hVdTBMTUhVK0xIRGtDQS9XT05xUXc3RzJORkZ6MmdNa3JNVWtHRVgwc2dSMHZvbUtlbzBQNVRENXBCUFE3d3ZOeHgwdVg2Q0JKSGc4ZG5ES1c4WGxTd0JYMlFBNm5ZdW5ubERxNlVnckoyR3VUbE1CUE16YTYyUi84amIrMGcxTVFlNytlR2Rjc2QrSHZESXhkMlo2NzVMWGxlZHc3dFJoTURmeGJrellpbjVZbDN4L1JTSU04djZZTHpWQnRoUzEzY0xmSnJGT1VwOTVLbEhZdWVBdXBsalBrRnVOUUo3clFNMEpHMnVNUW1GWlN2RXF2Z0NvT25pcld3TkM3ZTFXcjZVT1dtOGZWcEdCMkluZlc2d0x1N0d0RHJIOVhlV3QyOXR3Yi96SmxvZG5ZelpSL1dUNFcxVjI2b2lsRll5WEZaK3Y3RUhFOExwTXVqTkRFZGRqK2VheEdNMmZNeFNubTNtckRhSXJKV0pTY2cyZWttUzF5eXZMU05aV2Mvc0luL3ZXU0FIVTl1RlV5SWpIZXFyZkx5VTBsS1Jab0diU0Y3SzJrV2UzQUdOZjA4aDBFc0hsSU5WQU5HYkdNRDFZUWxwY28vcjNBM2J4b1NxeXlJOG10ZGNnYWRpekxjeWJCNDk3alVkTWpveUVtVUJWMzRYVnUzVXJ6TjZ4bnQxblJjK1VJdXI0bVUvSE0zeTlJY3lxUlIyYVBrb0VQV1dVVnNwak1EN05ZYytEV2pVTDJiMnNUUnZWL05nTjkwYUdNVmVQY3hEamNSNDZZWGh2ZGhJQkFsN1lMZm9VMGxmVGJaeVg3TFNCaE9VQTd5OW93K3ZHRUF4eXBMVnR4alNvOWgwbHcxanI3Z1BGQmVCYjhQbStnU2VQelQ5ckFJRnBiWmlJeDRVQTZnVHBZUVhEd3lxcmRPZFN1Nk1HUjNEcldPc0lFbzM4TlczOEMxakMvOEVIVU92UlZ0NTUzUWZPbERMN0R2enpzT1FuSysvYkNjNG40Y0xJMjJlSWtCWGltZGRHWGJsWG9CYnhOeW8rQk0wdUJ4UFI2ZFNobE9hS3VueVg5bFN2ZjRSTmdaZ2lDc3BYTUlXWSsrZnpPZDdDbUY5czBZRGtrNnI3ZVFUeFFtTEVjM0FERmJ5WGtsNnZ2cHV1Ymc0UEZQb1gyRXdLRFBDUC8rdUlEUGFNdFFjbHI0UWhjNm84TmwvazNZNm1aQmxUN0JtSHhuK3RPK2pHRkdHV1o1T0g2OWIwVjdIN1BvNDAwZkxVZHVLUXlrQzhEb1UvQTdhNnNpUjlvRkNnNVJBUUk1SEo0TFFoRUdTSFRQcjNucWFwR0VvRjEycmlPeUFiYy9IVk0xQ2Vab1Brdy9mSjlWbHdTc0c1UTZBdEgyT1ZkRFFQVGErZzkxQlVyWjFKNXVqNUwrUGRZdWFIK09Nc3lVM1BXVzF6NEFES0hkOUZFYW9GR0l1TGYzdGhMTTJPcXo4eWo3MnkycmpPdGVBSlNYdEU3UHR4VGNFQWY2ckpXSlA2SHEzZWZveTBUOWlmazQwdER1TFZNbHJKdmNFZ2pheWhRdnY5U0hJRlQ3WDgrV1B5UW9TTndjTFpoYUo3NW9JVG9jbWxPVHJoTmZINHpDUVZpN25oSDBJNnF2WEx6OUZDOVlHWFczNWYwZXBhUDIwc3NUYkl5MmREZ1Z5bFVoVU5ITHJ3bFpsekdZekNCRkRvSWNzcnkwaldWblA3Q0ovNzFrZ0IxUFpMRnZHMWJlSlhOVlpMMksxMDdGaVg3WDdFeXlHM1VoQlRZcWFSS3hkRXgzYnhvU3F5eUk4bXRkY2dhZGl6TGN3QVhmTEpOKzJSdDFpVzlHc2ptMVJhazB1c1dlanpQNjJlVmVqZFB3M3Z0cUJoWXVJZCtuSnJQTDJiY2s2TklzZ2ZmR3dtT0pWZ3g1enZ5RW0wOHpHdDJDc1VsUWRQY2NyN0hkVlpwNGxEKzhzcnkwaldWblA3Q0ovNzFrZ0IxUGFpOGI5ODJkRHNjUk1zbkJseHllOVpRUEYyUWlCdVZQb2hoRDRSWkpKdVlaZUNTL3l3VW5McmltV0xiYkk0c29kN2pxSzh5V1FWRnRxY3pkU3hLejIxOElHSGNJL1VIN3dmTGxLTTVjZjJMTnVRVEhIZXZnNTlDclpxNHdxVnZneVl3aWdjN253S0c5QlJiZXdLbWYxVW1TSmpNZDBEaituc1JqdkhKdWZPK3NiZkFrbGdGMUcvY0NNaVhWRFk2VEpIeE12R3ArWXY1RXRRVnNVbnBhUnNwSnJqY1RBckptUkgxcDBqaWRZNU9OdHhQaGNrTmdIRnVKTzVtYkhoZ3FnTjFTTkZJNnduUEpmSU9qWStmZGNCYmY2cVhMWkJLVmtjaGpvbzNaaEI5ckR5TVhLUkpQTVBERHptYkFUWXZucVZLM3ZmN0xlbk5CZEkxeUFqdjRleEJGOE5IYTV5UVYvbGJxNXIxZHFyTnNLTzh0dldVVmlLbmRidURnVWFoSkV1MjA0MkQxeDlMZzkxSTBxaUNRekZLcmNUWjRYbUU2OSt4anBlaCtvQnc0OTFBcHpQY3FBWmNEckpRaGdZTVZKd1BFZ3RHcVFLQ2JJeFZKVVFjUzBKbDYvWDdKRjVkb1pJVVU3SjBpZjByNkJLWWRrbmRkWTJYalh3akpZUm5uVjNocndwbmMvdisxdHRqd1J0OXNMR0R6NEFNR1kxQTMxUHBUU2lyMlJGK0htWGdXR2tmN3kxUCs1bXlyUEc1YlhPbERMN0R2enpzT1FuSysvYkNjNG5qRm9jZ3ZSNFZNWFkwU2s2U1dlWHdkMWNGSHhnbEpTSTdQbHluaDJFRWEvTEs4dEkxbFp6K3dpZis5WklBZFQyamRNbCtKdUdVK0RLUE5FdUxRZE82SVRTUDFDMXhoYXhWVnJKNjZwSnhiSExLOHRJMWxaeit3aWYrOVpJQWRUMkc5Z2tCV2tRRit3eTJad0c5YUNmMXNzcnkwaldWblA3Q0ovNzFrZ0IxUFlSUWVBNVV2eXFsUFVSdlptalpIbi9obmFGblAybG9BRDNybkpFSkZQb1ZFTGwzV0RvWGRNRWNJRUQ3UjZhaG9uZlN6TkZYNEU2Y0Ewak1rZnIzbFZSbjVyUllacS9JNE5NemRQZWRTQW53M2J4b1NxeXlJOG10ZGNnYWRpekxjekZzZU13aDlGcWN5YWM1cmVZNkE1eHpuRTJnMWRtSVJXaERZWjN3Zk5FWEc0SFRSY0NUdjlFRVlHVlgrZjAwL2twOERjaDJsOUw4NmVaRkpWR2QwWFVUN3JmN1E2amoxNHRkY3J1TTFkOTUvaWZEaFQvKzRuak4rNXBrVXlIQnA5ckMrdVRWaXJVcjh4SklDRElrT2xPOVE0RU9pUVNDeklSQ0ZlNmNwQXV5cGsrbTdtYVRydUk0bUgrTSs4TnVQSHZaYjh0RENFalZ4bnJzampQcnhoWnRMY2NGaVRKd1dVMFIwajlIcFZFbW41dG5UL2k2TWpENHlzNFk0MGViSEpFcHlnUGpqNk5tb0IyK0FzV3ZJRkpvTVNqZzZta2dXaCtSNm5qbmhhQTNzc3J5MGpXVm5QN0NKLzcxa2dCMVBhbHZhZC8za3lQbklIWG1rbldQSG4yWnV0bE0vNEpqMngyeERDOUVRRGdHYzZVTXZzTy9QT3c1Q2NyNzlzSnppZWEzMllrK3dGeFhyRGxaNmhWQVcwMGxCVE5tNE1BMHFReEhjOVF1NktqQVZnYUJpQyt6MlNwY3hCOWdaNkdYeXErUUh2Z203S2ZDOUJqdGZtbk5tNkxqOVZLUXM5NVN2UnY5b0VjQVNwOFBNc3J5MGpXVm5QN0NKLzcxa2dCMVBZUCsrdzFRSnh0QzlHTHZ3SXFRR21peWhSdUpFdm5xVzg4YmtPYng2b2F0TmJTYnNLaEx3UWJnaWFLV3VQbWlwZ2tZcDRuc2U2aEtQdDZvUjR1WktDZW1RZyt6N0IwSW11YjhwNG50bExGTy9nNDlpcW5iOE5NQ0hobVlQWEd6ZnhtbU5SeUlIZzJoZlc3c0RONi9pN0xzcG0zMlhoUWNxQnVUM2hJNVF5dDcySEgwTDBoOFJ2dzloOW00QVg4MlYzZkt2UlV4ZlJsM05jK3JqS1o3THZKMHFkalA0TGpRL3hCRGdOdFFmVDIwOGx3cUpNUnhJR2dNMTdUU01zRjlEbUVnRTMyVTVBNGVQWE11VE1Sa1FWdjR4cmhESjhiMzBVZUxtRVNHK01XNnhyeVFpclJDbVcyaVovcGJYR2JJaC9HdVUrekttMFZPS1ZkOENIQVpLV2d0V3ZtdmlBc0o1aU9GZnJJd2g0cENXL09VVzVKclhkZkNNdDBWck5FUldadDVjYUQzQTVqMS9VSlFkS3NzQm93NktzNk5MTE9PbGZMdVRUVjYzTS82N2cvU21YTFBLUS8valYxWWhTM1dueVE1OUtKVjNvMVFJd1RyUW13M3lKREo4Zm8venZCbE0yN3RpV3oxWUJycE9VYTBCZ2Y1bllYSWkzamU0Mzk2V0c0QytrVXJvNGZFbmJTUUdKb1pCY2F3ekhyRUZlei9ZVUNSVkF2SThjVzNUYlFrSy84N0lkbE55OHR4ZWtmVnJiYStZUVc0eEh4aTI2K29kM0d2VGxtZFMrV2oyb2JXci9kQ3JCZE00Nk40b3pxRm5EQmdENHYyVWN4KzVYREczZnJKcDZuNEtxcmE0UTJpbURRUFBGUDJHNXlBN0NVVEhSOUxKZ0loMG5HVHlmVG9RbWd0TVZoOG1aSTdtQytvbFFwUWg5b1BwYUorRU9RM2oyRDFrVGkvSURFRkUrTFBnbFhwYS9XaU5Da3YxKzBmWWYwb1RPV04xM1VQSVRvNSt2TEs4dEkxbFp6K3dpZis5WklBZFQyblB4OXZwV1VGVzF1emVGUW1aTDVLeW5jb1h3SmNLZk9XbXVpN0xWZ0tidk9sREw3RHZ6enNPUW5LKy9iQ2M0bjVmbnJrSWhDZHdOYmtwOWRSa3M2ZHNzcnkwaldWblA3Q0ovNzFrZ0IxUFo2QzhEN2V0dXdVRWYreTN6ckFsRG9VVXhUZXBzT28rYXhIVUw1Z3IrelBON1FTOGxWNnRnSDFhVjg0L3hRSDJMdzh2OVBKYWhKNUFvUEpYNHRqdjdheXl2TFNOWldjL3NJbi92V1NBSFU5czJqMCtEL2daZk9oYzMybkt5MVFXUVJHampaeUZjSlEvUTZhSmJ2MExwRWFsalR0WEY5dHlueHJHbDJmNW1Qb0dWSmcrQWxWNSsrdXc1Z2lndi84WFVoQ1BObXRaUkdmV2w5YldndFJ5V0h5eXZMU05aV2Mvc0luL3ZXU0FIVTlnVUd5V0piN0pxUDllQVNMZWMwRGU0elpEZnVvOS9zUDFzYlJTUkJUVjJRYW4wdXhMZUNoQXdZSWNlR2xOdlN3U0s3N0VIWnRLSVpVRi94U1FYenJDNmx0dmFrY2p6KzNleWZaZ1FBQS9xRTgzUDRHNlRwY2RJTEJZNFQ4SjlMb1ZuSU9lSHVLdjh3V25SS2J3dFRxOThCYVQ5RTY2d1dqc0VsTE11Y0U2VE1KV2tTWGdsdVhxd2xEa3hleVpZOHVicm1JTmpNeFBoSHdWeVlFeHlSTzJvbGcveVdpcEluUGR2bzIwLzd1N3RXSmhKazNsUVZNUnNxK004ZnM5cURkM3hxZWZGenJ0NTQwUjNlOFMzb3p4dDhid2k0bDVLcGlOeHNzOWZhWUhXVGJibmdtZDZ5M3F6ZmRyMkV5TnljdXRja1Z0WHZZRkNXUEJRcjNvWlhkcEE2cFp0VDJlRkNOMHhXdnRyK0x3Ny9Vbm9jd25yalN0OUlmTExsbmlOWlArbTZHWW5KcDBXR0srU0x6MnNzb1Jtd3ViV0MzbUV2Q1VCOTdUMzZqVE12UlhxaE9KQTREeFpiaFAvNXByZlIvdHpkMkRXcEpSRzZmTTRmeUhYakkyVGZnR2pQVmk1Zmo1bWVrR1ZGTERKTmN2b2NEaWpnNUgwRVZlNXVneUxWSEZMK0tBWFdCdHlyOW5zV3Mzamx2YkpndS9yYlFmVzNvU0krM01pZmluOFNTK2NVbU1KamFYaVdLYWZnallZRThrUHFlUHhzNkkyU0FCR3NpRCszUGlvSGdOVktSb3h4YndKTXZNa1pnQitFckZ6YTV6ZzdBQ3RycGRKVmI3T2VjNVVmSFdGaWhVZkZwS3o2Y00wMGFSbkNIN3c1ckk5djI1b0Z2WVd5MW9rS2JRbUNWWGgvbEtDRnVXMCsxMDZwMi81ekRTKzRzaitVN1NHTHpGVFNsSlR1Rjl0Tmp3bzlyaFB0Qyt5a0FtcDFYd0IyYjBib0JwN0dZUUdIZFY2TnVCUDZWQmtWMjFoaEUvZHU1b1FmK3l4SUhKRmYzNm00T1pVbTl6ampEbElESGNsNTBsaHlEUTRDM3ZiTDcxRmFwd3pQSlIrUFJLL2F0YjkrKy9rSlMwcWFIbENwMnVhZGlBTUhMY29lQ0VaMU1WVndxYi9ic1p1Y3NEYWwvbzhKc014ZFpWSlNkTFFGM2xQRTIvd2hwS3RRWlJ1RVJtT0NmM3RyNjgzbFpHaVloYkxEU2hRdHN3cW04aWpkTWE1SjJjNlVNdnNPL1BPdzVDY3I3OXNKemljQ3B0M2NmZzFCS3R2bDEyVk5wd1pRRWVyMlM2d0xsSXhxM2M4bFZUc3Z5eDNZTXRkVHRFU0dpRGxMRUxiSElyZE1LRjBQdVN2UDhGdFBMZGRHRVN1UXYzQVRyS042U1JsWVFTUDZodHlCTVdwcXEzYUVhWVdRT2JmUnBjWldXTUdCVGxxWmNkbnJTTXdnZXhLR0hPTmlwa2FQZXhLcHZUTjhDUGZQM3ovSUZqSGMxajVGNnltdVQzMS9Id0hRa0hIRnRsaS90QUt3Sk1VYjlGQkVBblF3T3R6N0NteGJWTFE5ZDdUa0RmdkVTZENtVXk4VExsM1VyenpXUURrVlR4T0tPQXh5SFdkTEVrRXluOFg1VE1JM1FhNlNHdGkydmxwUUlFNVlXcmFXSkNoRWtYM2FaZzRLYXhWeHFwVlNpRzZISm5obndDOGFzNHhJWmI4bkE0K2VQWlNmMDFHZlhRUk9IdU93QTA3c3pzWXoxSEpCRzVyQnpSc0U2YTBkZldHc25tbkYySmZTa0hBWHNLczE0dTlpS0JOWHVsMGFnT2UycElJU2Ntc0hLRjhBOHhRcXZTZkV0VHo5TzUzNnZyZS9wRVNiQnFrWEZjMDJGR1MrZHkzc0R4OTUxQzlFNFFvTk9GcU1tSXpzVTUwNW93cVJMN0hmVDB2TEkxcFR2TFRMSzh0STFsWnord2lmKzlaSUFkVDJic1ZFRTY4RGtaYjRYM1VKYU1jOTB5MXo4MHRldkROcFZERzYwRXM3aEtRaGZmUWtYZlVvNGY4WDN4ZG1HUEdMdzR4SVljQ3BRY1k0OE95RE1yU0NOOHNyeTBqV1ZuUDdDSi83MWtnQjFQYk1KMFdsZTk4dUQ2RkVuTmoxSWVLUFpYTlFtWVNIbUJ3NGI3cC81NEg1SXBzSGozdU5SMHlPaklTWlFGWGZoZFU1WW84MXFpOGhYV0ZHL3NrVmkxWVQ5MWp0Nzdxa0RjNXFESEUycy90VWJDdmdQaGhPQ3YwSFlaUXRuM2FLMUlTUVJUbEdEMnQvdERkN1d1L3YvdFFjcW5VcjhocjBmbzVHQWNhLzFkcTlPQ2dUVjdwZEdvRG50cVNDRW5KckJ5aXBPYlRFeGhjbWc0MDIvT3VUZURKaTUxQXY5RFN5SnBlbkZMUjY2djJJTVkzQmNpR3RLSy9paWNUWlhBK2kzWEx2dm1TcjhNMWlpNmF2djZ1TnE1ODRPdkpWYXlOdEIwem9Fd3gwakNUcmhpOU1XNllpd0dvK1I5UEdxWlBoaDh4T2VOZU9VRUZFTzk2TlgxTTJnS3RNN3dQa1YxK24zQXFNUHlOMDA5ekNMTzU2bGRQWEVsZm9Cd3E1OFEzTE5zUnFkV2RpRzhOMDVOcmZZaTN2eUJ3OFB1czNCM09GR3lCVjhiVHFqK3lXNnBiNUZCRGVZb0NJZy8yVlY2Vy9vdnQyUUpTRExxWGtOSW10WW1ONXNYOEV5QWo1TjJGUW5FVVJrcEZndUNob1dvNHN2MVRyZm5vaHB1YWw0aGJhRkxEMnVDSTVUTU5YdVVES0FqdFVlOEF2ckt1UXVvOGxTK0E2RlVRY1YzQWlmZUtTVUtScTBoR3VIUUg1cVV0M0pCZnJKcDZuNEtxcmE0UTJpbURRUFBGUHNXb1FuOWpuYWVjRTU1TFFISXpTRkhOME5paTFYSy9XY0o1SEtsRjcvLzNiamtFSlFlZ0x6aXBRMHgrSEs1aFZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlsc1ZWZ09LYVc0STdRQWthU090ZFZNODczTGx5Qks0SzlRL3o3b0Jab1RsMUFqWmdhLzNDRlJDb0hTKzhRREN1R09GKzQvN1ZCRWVyV3RwZ2NXU25VNkdieldvUm9FSmdRQWxIVXBMSmk1aVF6aTBILzEwbjBRWVB4T0xEazR1eHVUUU5KTUFYVUlRdkUwMjVHUHY1K21SR1lremt5S1hrcHFYUitVcGVpZFJubVhoZjBYVVNJMjRVY0dmdFd3RjdORERIMUVHNHBZaU1YSTJkeU40KzRVNnF5emRVY05xRmQyYlZFNk5WUjVvLzBiTHpTbTJxUDZ5ZHdobUZlRXJ4ZU9BaWNkZk1wYWJ2a29rNDdEYWtnWUJYaisyd1VuT3A3dUhQOFM2WmlraHl5dkxTTlpXYy9zSW4vdldTQUhVOXIvaWUwZC9hRHlUQVpPOVdBaTRKSlBCTU51aU5tUmFyWjQvcXJJWkd5UHlxU0VtS0IwVjJicEpLUUF0YXNZWGpRbC85djg1b0svM3FVNVJ6U29kK2xiMWhHZXd5ZEFwK09tSDhYQ1pwQUhaeXl2TFNOWldjL3NJbi92V1NBSFU5cTMzZjlpYk9lZisyR3ZTZWJaN25iRkl2czE1QmRwVE56aFZObXBPY0IvaGxKNHRsWlBiM1pnYjl5WGRqZDdMSFE0UnZhUDlBZ1Q5M1dyTXVMRW9RSG5PbERMN0R2enpzT1FuSysvYkNjNG41Zm5ya0loQ2R3TmJrcDlkUmtzNmRzc3J5MGpXVm5QN0NKLzcxa2dCMVBaWTh0TTY4VW5ldUI0dHhtNlcvbTgrNzU0K1htOU5JRXJIeTRPNUYzeTRNcm1RS0ZkdTcyUnJtWGR6Z1JPT1BwYk9sREw3RHZ6enNPUW5LKy9iQ2M0bmJjbHJzeFRXS1RkcnlZbDZCVlJTYlQ2dUJPNHBDV2grMHZSQW5QZTJlUFhMSzh0STFsWnord2lmKzlaSUFkVDJlTCtkODF3MUpjeGx3M2xJaVM1NzdRKzUvZWFTNVpjbTIydVpzRnUrSmNUTEs4dEkxbFp6K3dpZis5WklBZFQyRzlwN2dRTStRZXg2aGMwenZuRTJjdk1FZFRxcEJxYlpiOUZad29SdTZaYkxLOHRJMWxaeit3aWYrOVpJQWRUMmpzNXpMandRamc5NEVoVDllR3Q2UUwzT25jOHI2RjBGTTVuMDNVdUlSMWtFTFIrZ2xFc1Ivd3hEenQ2eVpjc214R1J0dXl6MS8vcWR4cDlpV3VtOGNyMDJ3S1VOU0lLb055TGc2akJQTG5vOXJndEtseW9CVk5MTjhWbHRqUk12ZHZHaEtyTElqeWExMXlCcDJMTXR6RHY4eWlLNkRZYkw5R01LSncrWVVkRGRQUU54UThjY05SNjl1TVlYRi8wZ3FwQkdQclZ4RURRZVN6TTRIVWJrNXJoKzFsaXJzQVZyUWl4VmxoVTZ1UXdLUUdHNUhCOTZDTUp2dEwxWjd4aWkyTDltZGFlNG9zYnJkWVA2dnZiQ01yTFZNdW5UREJmcDRmcnVOeSs1dHhtamRHSGxRKzRHN0pmNUxGbVJBT1NUNnlhZXArQ3FxMnVFTm9wZzBEenhUM2lPUEhBR1lkSWlQeEZ1VitSdWNjdzBNeWhzWU5QMUE1TEdVWlVKZ1RLSHl5dkxTTlpXYy9zSW4vdldTQUhVOW5PNjdkZ2FaeDlnYnA0UDZmK2lUK2NPS3NYOEhTaGdhRS9GTzBKbFJTVGhwQ0M5bkFKMDlvU1N3Rm5DSTlkaVNvYVh1UFRGU1RBSEFzRHFJM2NTRHRETEs4dEkxbFp6K3dpZis5WklBZFQyQndMZzU1YnF3bjUvM3Ftczc3dFhNeGR6NitEUDRVYVFuQmdOREQ5WDlwRjhid2k0bDVLcGlOeHNzOWZhWUhXVFVDdVZMRXFTQ2xhMXJrTGVrUExHWHNzcnkwaldWblA3Q0ovNzFrZ0IxUGFLdy9VaGhUMzhaQlY1SFlzRzd3dFRucjV3V3VReDl5aE1oVUFsN0w5R0hoU0lUMWZNYVN2TmxQcktIWU5NSVpUTEs4dEkxbFp6K3dpZis5WklBZFQyQzNWR2RnUFRBZ0VJTTU1ck5tdGJQajEwdzlPbVdNTGZ4VWgwTnBidzFjNElnaUNzTk1BeXlxak9QZHlXZlZCM3l5dkxTTlpXYy9zSW4vdldTQUhVOWo0OEIwMk1QeE93TDkzc0hzL1NpMThGeVpwczVhZ2lDa21rQjZTMnZyMXZ3bnpSUlNDVC9LemladTlETEpEdlBzNlVNdnNPL1BPdzVDY3I3OXNKemlkY0JsWnpocXAyVDJGREhFVWtZRjlveXlGbnZTZEU3Z2ZRNEdzLy9pR2YySEFzcFAyRHQxNXYwZWo2T2dnMjNibVRsL28xOUFtMDJSM1ZHZmdXREFzRXl5dkxTTlpXYy9zSW4vdldTQUhVOXA3bzdQN2lyb0FEU0hCNytMWmJxN0EzU3Q2TUpYaUN5V1pxS3hNTDczcFV5eXZMU05aV2Mvc0luL3ZXU0FIVTlqMUtDRjVzYktWUDFMcFo0TnA0L3dRMDVkL3hYc3BaWXpJWlRaOFpyZ20reXl2TFNOWldjL3NJbi92V1NBSFU5dkJHdmg4M25yU0JCbXNaamFxWUZWUGUxUmlEbFZGbElvY1pWYUg2ZWMvWHl5dkxTTlpXYy9zSW4vdldTQUhVOWxzVlZnT0thVzRJN1FBa2FTT3RkVlBtNkg2d3ZseVhFQ0FOdmhDTUdlbEZ5eXZMU05aV2Mvc0luL3ZXU0FIVTl0L1JvU2c5aGkxUXBsSW5QazRWZEFNM3B0VHVuWU54aExFWUhjdmFPempVTWJMSWEwY2F6SmszeXhVbzBIalJKa3lzdmIrbm84YnVwRno0eEFINS8vL0xLOHRJMWxaeit3aWYrOVpJQWRUMmhPK1JMTHc0V0lxMHZUVjNIUXJUZ2NzcnkwaldWblA3Q0ovNzFrZ0IxUGE3dG5wQ1orZHVnTVp4SWpkWkNNcUVEaXJGL0Iwb1lHaFB4VHRDWlVVazRhUWd2WndDZFBhRWtzQlp3aVBYWWtvWS9hK3ZSS1NaMCswRGUrN1ppNnZ4eXl2TFNOWldjL3NJbi92V1NBSFU5bkh4Q3pXUVpVWFpTZHlwMUQ4aUo2dkxLOHRJMWxaeit3aWYrOVpJQWRUMkoxUWs2RDdkYTh0ZEdSWnlsbHFXRHM2VU12c08vUE93NUNjcjc5c0p6aWZGRitpOVZsemxGTVp6T1h5MklJaEF2OVpQa2QvVTJmeHltOGVNZC9obmFhMGIvTzV2ckFadXcwNU1yUEl6dmxITEs4dEkxbFp6K3dpZis5WklBZFQyYkh5Z3V3dU1pVmdIVTJ1aVFpK0dpUFhqajNlQ3o1d2NiZ1lXZG5ydFNGd1QyeVh3VnBzTFRIYUR4ejZGZTNvMFZkR0JBYXRrd0RBOVNRS0NjQkp6WWNzcnkwaldWblA3Q0ovNzFrZ0IxUGFWZXpXdm9QaXdrZGlIcjd2SGVROUM0eVd6MnR6V2ZMRE1GMlhma0lobkVURHB3QUtNL3hqaDJmclBBMWcrZTMzTEs4dEkxbFp6K3dpZis5WklBZFQyTzMyNVBSUjRxZlhPY3lsU1hyQnk1TXNyeTBqV1ZuUDdDSi83MWtnQjFQYkMwRTBORUN6OVpub3ExOUIrdkRNT1lPcjFjSFp5bFJkV0hCdFR3dmp0dmNzcnkwaldWblA3Q0ovNzFrZ0IxUFlMUEN6cnROS1FueFFmTEFhUzFKTWtsTGpiZ0hlbVN3RmhTb1NGVFFta2c5bk1OMnVvdnZpSzNQbGNib080QnJqTEs4dEkxbFp6K3dpZis5WklBZFQyRjNzTVI5ZDREcjdVK1VZUW1IaDNGdjJsQllrMVdVMk9LQXN2YjZQZGVhYnlLa1laQ1R6SytBUDhKUlNobklFM3l5dkxTTlpXYy9zSW4vdldTQUhVOXF0T1ppYnVnNW5XdkdYUk1qV29sMDZHZG9XYy9hV2dBUGV1Y2tRa1UraFV5eXZMU05aV2Mvc0luL3ZXU0FIVTlqTFd2ZkxSS0lwYnlHRDJiVlBFWjloVnRiOFd0d3dZOU9FazhRaVVxZ2VtOUROYytXbmxwWENzM3NpRXFwbElaekFGM29HdUhHOExGM3lHakg0TWtjWExLOHRJMWxaeit3aWYrOVpJQWRUMjUvM0Rqc3V1blgwNUZQaTlQZ0FzWU1zcnkwaldWblA3Q0ovNzFrZ0IxUGFiQjQ5N2pVZE1qb3lFbVVCVjM0WFYwcDZWWFNKUHVUZWF3UlJRNGMzY3JYZVFtdENIQ3BVZ1hLVm90Y0RkeldEbEdpanV3M0JhUDFLM3ZvaG83QTVnMllJWU5WaHJnY211YzJRVFpoZ2dYRXVnL1p6WXR6d1dmMjdWY2lvZzFaYkNBUWJtd0dsREVBZk9peXF0cUxROUtmQTNJZHBmUy9Pbm1SU1ZSbmRGMUpXUzdMdytMZnlidkdRZ0o2THZNVDRiNkJobTIyanNjSXBjV3FhNjBkK00rdkxseWkvTUhpVTg3ZWZJcUFGU0I4NlVNdnNPL1BPdzVDY3I3OXNKemljZWwwejU2TzdzRk92ak9MQTVNbnViMDlPdmF3ZFA5THlDVVR1dmMrTERoRmx1VTVmZGdWZFBUTVpMRFFyZVgwOUdYZXpnV0F5Q1VpUjQ3d1ZTakkyQ09IVUJEVmc1T2N5OHV5bjlIandsUVhUcDlQQm5pOFRNeFFsQ2Z6OFBONVB4aFNnSVRhZXdibHZidzR0Q0NqTmU2RmN6TnNCTU9GSWVSTk9HcmNuNnllSTBqbjdUaVVBbk13dmZPQkcrK3o1YnZUUUJ5aVBwM0ZkdWFzR0JmVVhXek5GUFUrZi9HaXFKbWNITktEUWJYdnV4R1pmU1p2RjFwNHZzM2ZERkJlaTlEbWJZZGltdmcwOVkwbHdpdzZ5UDIyZldnOVZrVUlKaGE2anlncFY0N01zcnkwaldWblA3Q0ovNzFrZ0IxUFlPRnh0TlpOTzY1c29RTmFDYksyUWtJUENoS1lianZuSWdGWTNPY3lXYTFYSHhDeldRWlVYWlNkeXAxRDhpSjZ2TEs4dEkxbFp6K3dpZis5WklBZFQyUFpVNHg1MkRXZXBFTmlsbkRaUFd2ajBuT1U3d1Q1MC91ZkU2M2gwK2NqaVBia01DNWloRlJCY3FHOGJDdW9iVkFnVFYrbFJpRGh0TzZHbFFZZUs5NzRtQ2J3aDc3WDhndWhCV0UwQ2RMazJwSVVXUEUzVi9ZdUhsdWloRjQyM1hLaXprVkg2KzR5RFlucE9oWDNyUHNxRDk5NzNvSWlzUVVtSkY3T3pvNHJ2TEs4dEkxbFp6K3dpZis5WklBZFQyaXRobFR4Rk92cTB0ZVNkQjlwQU9aYnRnTUVDR3E3My9wS1VxeGZ3ZmY3Ukl0QldXbnE4VlNnY0tRM2s5NGJaUkQvbkhwK1hzWE16Z2tTbVlrcDk5ZXMrbmIyMEo0K0xiMXdkRGJKWGhzS2JMSzh0STFsWnord2lmKzlaSUFkVDIwQ0piNE92NUxHbDVWbFdVdTlPTmQ1b3dGWHVaeEpOWCtvcnJ4SHRCcUQ2VXZqS1JvcXF5K2czaU1MSzdPK2ZTRTIrbGNRRVpqcTNEL2VBV1NrWTdVQXo4MTgrQlVIZVFzY1ZPbElFT2pWcTAxU2d4WmtnUjRlajhUYms1L3F1c3BrWVR5OVRLK2ZUZDhheDF2QkE0enM2VU12c08vUE93NUNjcjc5c0p6aWUvRHhVWXZKYUtyU3lGYmxmNGJxS0VuME1icXAycnFzcXBsQ0pLRTVRT0J4SVlVcmpmaUN6NWFBWncxVktFT051R01ReFhsS0tBZEczTWVKM0lYM3VHeXl2TFNOWldjL3NJbi92V1NBSFU5cEZmMjViaHVKU0JJUE5YMmg3Q045dk9sREw3RHZ6enNPUW5LKy9iQ2M0bm1kaUkwVzJHSmVvR1Jyd3VRNStnK002VU12c08vUE93NUNjcjc5c0p6aWVLcExwMzF4eFR5d3R5Zk96bnl4dWM5RmlzLy9leExDUXdEbXk4Z2YxVTgwRjRjRlF0cWVEcXZMNzkxRlhrM2NTYW01cWQrS2Vna2tFU09HOGtRUWVwN0dmc0lNOWRIMU93UEl3S1JSU1dGd2Fpbnh6L091aFlHZzM5cFVxYWZ5enpvMENzZ0VNL1MvQ3BwUXVaOTVIbHJLd0ozbTMxaFpJaUZlT0RWWUlIcC83cFZlTTBRTWhIak1KT1hzdTBVamdiRkpEdFJwdVRObEM3c0FoMUtCWERIV2ptdlhQc1Fnb2pXRkRMSy9ETm0wVWwrT2ZoSmpTTlkyb25jajBYSkxqSlZWR25wQ2FYOUlVeERvSzIxcjdtUlVsZXJ1ZWdtR29OVEl5S1NkY25vYnpsWEVVR1A5ZzRwdnNVa3BHZnk1OGJZWjhzUklCeUNWUnlKb014T3lpcTAxK3JxU1UvM0Uxc0lJeEJ1OFpRMFVuMm9vRTRtOXI0KzhLUkhTUDVTMHErbkZrdFNpd3lreitycnJ4UFRKMUsyVGdPaDhlVFJhbExBSXluaThSRmZwcXMxZnhpMmdjOTI4Z1NWdGt5Y3c1TWdwTDJENzJjMStwcTVBYmxlUUxmOGoxVWN6WmlVZUlqd0tKZm4vK3ErWmtQSmsydVgrMjVMOGx6QkZscWlESjA2Qkh0Z1FPUnZYVFAxMjhWN3BkeVZLak12RzdrM3c4dnB0VDl1MFZhRUFpZUt2eFJUMFVNaGJ1L0hwNEtMTWZwemRTMUZPT2pLRFN2VUIwZ0J0MW1SOXdQUWhIUkxna25RdVRSWWFCaDd4akl3bjdKbUJNbUpOSGhIRTlLem9FS1BGRHByeEdIWG1YNG0yVlVnTEhXZmpSaUhqcVV5TERsaXRqNkdmejFsTS93TnBGWGtjWlBZQUtMUUpaWE5ta3pzVE9ybkl5RXF6U3M4bkZjdStRWFNmN241S2xva25rZWd4N2hKZVBFenlLNzdFSFp0S0laVUYveFNRWHpyQzZsdHZha2NqeiszZXlmWmdRQUEvcUVKNEFoMlgzSCtIb05McVZvUDBhSUV4OUZVckloR0Zzc2doZXN3dHI5cDdtakFvUFBhQzF6RkhLRzcyeWR2T2lHeTY3VSttNXRBbXVHNC9XblZlcWVsaG8zeS9GN2UxTHF2bk9aZ0k2V1JiaURuV2c2eXNaai9GWWVBVlBmSDdBeUZVZndVRzkzUGVndHAwYU8vM3ZMRWRwTzdxMSs0TkpOSXZVc2RnTTJHRk5JSGZCa2lVdklEUFhLdzlXNWJKbDkwb2N6bGx4WHQxSHo2Wm9pWEVaa1Y1VW1VaHRFekxSV1poeFlMUmNxU2h3WnRDZnlRN0VKV3QrQU4xbGd3VkhzVTMxUGE4MExGdDM5UEswV0tJUXg1UjBCZmgzREJDZThvVUhMbTY5VC93V2gzZll1TjRXc2pwWHRGM3duNXpFNURpZGRRM1dtcFZ6ZjRId2hSYzZKa1A0L0FBaFNZdXdQYTZhbkhseDlzRkJxNjhHRWpHUEgrYWNHWnZod3ZTcFp3L0JzSlNnaUVKRm42cjlDTDRBbWNxbzJ3aTlBYk9RSERhMFU4UGR6SUY2N2RxbHB4R0FZdzNQY0hLU25FdXp6anV6eFNKNE9CcFpoUU50ZEFvMDU4cVJic08ranFCRzVBdmxvREJtdk4zSjluUWxVcmdvUzVmeDRMTnNCbjhINDVRMXk2QzhSSlJZRlFWR1pmUzdCdXg1RnFWTk1EZGJCSEJZdmU5a2c5ejFNL0lYc2cyWGhlYlBDbW5mN0poVW8yVUs0SFBXUXZmYVZSMDArdS9qb0l0QkhoeXk1cVUyd3czOXF2V1A5VEorMG9ZLy9Kc0Y2c2F1aUhTbnh2dTdZQjlJR3M1NVRtK3k5YmhNdUF2Vnl3d29ZQXV3am1zRFVQWDdhb2srVXZwRjZ3R2xFZGRUSFcwb0pIZmVyOU90YTRRdHJrWXl3Q0pGUGJ5VXRSMkJ3MDlYdk9JdzRXakdwOCttbXdKQzk0RVNBOGp4a09sVTE5RU4zTDExaUNOV0Q0SVBBbnA2Y1NXbUdtM3JaZktwanBLQSs3V2ZwcjM5MERPWWtCNDlZUjFaZ1JnbDQvUjBhVDdscjhTOUdSSVRXbDhxV3QxMlNiWDFWWFpOOEVGaUdYcnJtTXdCdXpBemZTMzZtd2NQazUybk16Y1BsRUd0TUpZa0lrVVJLMzVkaXpwUXkrdzc4ODdEa0p5dnYyd25PSjgyRG9qT2NTODBzcWxNTHJNL2RxRGF3d2dhN05qaktXK2JVc1NxSWVVUDZRU3E0QmQrTTJCQ1VQZVNsUVBzTEJuZm92eVQ3dUNjaE5XaC9rQ0ZVazJPd3ZGVXB6RXJ6VlcyYjhzdTE0Q2QydzhBUjJmVU1LUnNGKzBhWGNWM0xKKzRYMjAyUENqMnVFKzBMN0tRQ2FuVmZBSFp2UnVnR25zWmhBWWQxWG8yNGVuU0RXUzQ1TEtxN0E4dE41WTE4NXJtMng4WXRPdFZPdEh3bGZjcTJLNGJMSzh0STFsWnord2lmKzlaSUFkVDJXRXQ3Z2hjWkJzd1RJVWkvNitCM0ZEcVRORWp1Y2gwT1IwQTJXeGFEa1VMRDhHd2xLQ0lRa1dmcXYwSXZnQ1p5QmtFaTBKcHBtdHVYZ3poZkdUTVVaSEh4Q3pXUVpVWFpTZHlwMUQ4aUo2dkxLOHRJMWxaeit3aWYrOVpJQWRUMlBaVTR4NTJEV2VwRU5pbG5EWlBXdmowbk9VN3dUNTAvdWZFNjNoMCtjamdUVW1DZnFDUVZDTmNtS2UzVitqazY2cTc2U3J6Q2RZV0Q4cUR3VC9rRFpCSlB3MG5NajVhdDVuL0RSV0pGelV2MmFzeGowOVdHQUZvcWwyVlNHTTE0Qzg5ak0vQ1d0VDl4MmY4SFpaa1BoOE1VWHM4c1NUcWlWdldzNlRYUEwxck9sREw3RHZ6enNPUW5LKy9iQ2M0bjRjTEkyMmVJa0JYaW1kZEdYYmxYb0QxLzNBRXduY0lLb1ZTS0xrQ1Y2VGZQMThrZ3BuOTUrVUk1clE2RktBVStkSXVOTGNnZjA3eUZNVlIrbXgwczRnSllabUs2R2k0NUI2ZGdOZWpDMEJKQTRZekRhSWRlaTIyMFhIcWRXUzMxeXl2TFNOWldjL3NJbi92V1NBSFU5aTFva2g0eGV6TU02MnhqbFV1SWsxUEJBY1hTQkNoQTZEcm9QMk82eDBPSklYMzBKRjMxS09IL0Y5OFhaaGp4aTUvVkFhZWVUZSs3WEY4bEdFQ3dQaWtMZUNpNzBWNlB1cVMwTWhhbHBQSnovenhJb05MWjg5ZU0yV0Z2eVZYKzZ0M0NZNnRsQUNLYTNMRzV3N0RrTGNjYUJwTGNHM0wrNWNJSjJwdjBBZUVJbEZiS1l6QSt6V0hQZzFvMUM5bTlyR1FrL1FXbDRyRU5sR3RlWDRSb3l0ZlBrRlFwM2tRSmk1bndTejc1VVk0Rk5FR1RXcEExUEVJbWsxelVJV00xRWVsNjY5ZytRK0NVVTJ3ZnJLTFpJekpic05qdVhjSUFVcE5yd3hheWlmVFBvenZxMlQ5VXYrZGwvUGtVWDlSQ2JjNlVNdnNPL1BPdzVDY3I3OXNKemlmRDhHd2xLQ0lRa1dmcXYwSXZnQ1p5MGJ3ZncwelBLVVYzREVaNmg2THVsc3NyeTBqV1ZuUDdDSi83MWtnQjFQYllSaEViM3p4UzhEVVExV1dzME4yTzAvM2F3b0QxSXI3ODBleXAvWGNJNjRKRTVDM251WVdzNlBJOGZqMnFuM3V2VVhmbWwvMWtNQ1pkMkttaysxQWFXcS9IaHJ5QlV2UVprZUc3RS9xdmYwSWtDZlU1VHEzazNXQ3hoeGZkNVdNSVRVYTQzL092N2NDVmtmZkxyU1l4SWdJSVN6R2lOVUhGK3ZiNUdiQmF4TTZVTXZzTy9QT3c1Q2NyNzlzSnppZVBvY2pwakFvOU5XVlN4akF2SjhRTDJQelEvQkZxaUdmd3NRUHQ5ZnBMQU1KQjNyUVZLWmtFUGlVcnZtRnN0V0IzT1hSdytld05tY1Y2YS9pa2J1Mml4YytQRzRiWTEzQWY1Wkd1Z290cWhqZWlpYjZSbDZZektENnBreDRqMWtQTEs4dEkxbFp6K3dpZis5WklBZFQybzV5TmYveENyNW5IdXhaNmd2ODU4VEJnaFYyRjhaejZJa01VM1NsZHV3WVQyeVh3VnBzTFRIYUR4ejZGZTNvMC9aa3FhdGRkWXQ1alR4Y2xqSjNydVk0NnpHVE0yeXJzRkd5K0VpM1NJWWppQlRITGNxTHZJVUErRjBxdklJbitUTWhxK1RUYUtBc1dHUVhnejdTNG5MUGZzTUd2ZkMrMHh3ZWMrT25LUm9KbTBQVnEzVSs3TXRqa0h5dW1xcW8vdzk1MFRaNldVbGxKZFVtamI4d3BqYVdKdytNTkdnSXl4ZmpiQ29WQi9yZ2xTeVBoOVBSTVpJem13b043Z0kwNHl5dkxTTlpXYy9zSW4vdldTQUhVOWlHc0JkMjBLeFJvc2JwNGI0Nnd2U08yUGUrMjZMTERNTm9VZk9pTmVsdW9WRmFxOUhlbVJ0dldlbFZhQzl6aEFmVDV0OFhIeUh0Z0dEVFFBeXpweUlwYVE5TmRNRGxaMVQ2c3dhcjFpajhZVVNzWEhFNzVqZElidXR4Wjc1MXlVQmQzZjl2TFU2STBUc2hha2NENmNTV1M1aXlyRkRQSEpaOHVMWEZNWUZ3OVxcXCIpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5YWz5rOoMVwiLFwicGF0aFwiOlwiZ3oxXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgaWQgPSBNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXTtcXG52YXIgc3VybCA9IE1ZX1VSTDtcXG52YXIgY29kZSA9IGZldGNoKHN1cmwse30pO1xcbnZhciB5bSA9IEpTT04ucGFyc2UoJ3tcXFwibXknK2NvZGUuc3BsaXQoJ3tcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0rJ319Jyk7XFxuXFxudmFyIGVwID0geW1bJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nK2lkXVsncmVzdWx0J107XFxuZm9yICggeCBpbiBlcCl7XFxuICB2YXIgeXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScrZXBbeF0ubWlkKyfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUnO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTplcFt4XS51bmFtZSxcXG4gICAgICAgaW1nOmVwW3hdLmZhY2UsXFxuICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2d6Mj91cmw9Jyt5dXJsLFxcbiAgICAgICBjb2xfdHlwZTonaWNvbl9yb3VuZF80J1xcbiAgICAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeWFs+azqDJcIixcInBhdGhcIjpcImd6MlwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxuY29uc3QgaGVhZENvbG9yID0gXFxcIiMzNThjY2RcXFwiO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgcHV0TXlWYXIoXFxcInBhcmFtMlxcXCIsIFxcXCJcXFwiKTtcXG59XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbnZhciBqc29uID0ge307XFxuZXZhbCgnanNvbj0nICsgcmVxdWVzdChNWV9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV0ucmVwbGFjZShcXFwiYWlkPVxcXCIsXFxcImFpZD1cXFwiK2dldE15VmFyKFxcXCJwYXJhbTJcXFwiKSksIHt9KSk7XFxuZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEuaXRlbS5sZW5ndGg7IGkrKykge1xcbiAgICB2YXIgciA9IHt9O1xcbiAgICB2YXIgaiA9IGpzb24uZGF0YS5pdGVtW2ldO1xcbiAgICB2YXIgdCA9IE51bWJlcihqLmN0aW1lKSAqIDEwMDA7XFxuXFxuICAgIGZ1bmN0aW9uIGdldExvY2FsVGltZShuUykge1xcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxuICAgICAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuICAgICAgICB2YXIgTU0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnLSc7XFxuICAgICAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgICAgICB2YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG4gICAgICAgIHJldHVybiB0aW1lXFxuICAgIH1cXG4gICAgdmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuICAgIGlmIChqLnBsYXkgPiAxMDAwMClcXG4gICAgICAgIHZhciBwbGF5ID0gKGoucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgIGVsc2VcXG4gICAgICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbiAgICB2YXIgcGljcyA9IChqLmNvdmVyLmluZGV4T2YoJzonKSAhPSAtMSkgPyBqLmNvdmVyIDogJ2h0dHBzOicgKyBqLmNvdmVyO1xcblxcbiAgICByLnBpY191cmwgPSBwaWNzICsgUmVmZXJlcjtcXG4gICAgci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcbiAgICByLmNvbF90eXBlID0gJ21vdmllXzFfdmVydGljYWxfcGljJztcXG4gICAgci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIHRpbWU7XFxuICAgIGlmIChqLmxlbmd0aCAhPSBcXFwiMDA6MDBcXFwiKSB7XFxuICAgICAgICBkLnB1c2gocilcXG4gICAgfTtcXG4gICAgcHV0TXlWYXIoXFxcInBhcmFtMlxcXCIsIGoucGFyYW0pXFxuICAgIC8vbG9nKGoucGFyYW0pXFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CB5Z2XLeaQnOe0ouS4gOe6p1wiLFwicGF0aFwiOlwic1wiLFwicnVsZVwiOlwidmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGIgPSBbXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxudmFyIGtleXdvcmQgPSBNWV9VUkwuc3BsaXQoJyZrZXl3b3JkPScpWzFdO1xcbnZhciBwYWdlID0gTVlfUEFHRTtcXG4vL3ZhciB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc2VhcmNoL3R5cGU/YXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjI3MDIwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPXhpYW9taSZoaWdobGlnaHQ9MSZrZXl3b3JkPScgKyBrZXl3b3JkICsgJyZtb2JpX2FwcD1hbmRyb2lkJm9yZGVyPXRvdGFscmFuayZwbGF0Zm9ybT1hbmRyb2lkJnBuPTEmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yNy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPTE2MjMwNzYxNDAmdHlwZT0yJnVzZXJfdHlwZT0wJnNpZ249NTA2NjIxNmZlYmIyOGE2MTk4MTJlODhlNWZmMWEwMzQnO1xcbnZhciB2aWRlb191cmwgPSBcXFwiaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc2VhcmNoP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTY0MDAzMDAma2V5d29yZD1cXFwiICsga2V5d29yZCArIFxcXCImcG49XFxcIiArIHBhZ2U7XFxudmFyIGJhbmd1bWlfdXJsID0gXFxcImh0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTY0MDA0MDAma2V5d29yZD1cXFwiICsga2V5d29yZCArIFxcXCImcG49XFxcIiArIHBhZ2UgKyBcXFwiJnR5cGU9N1xcXCI7XFxudmFyIGxpdmVfdXJsID0gXFxcImh0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC9saXZlP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTY0MDA0MDAma2V5d29yZD1cXFwiICsga2V5d29yZCArIFxcXCImcG49XFxcIiArIHBhZ2UgKyBcXFwiJnR5cGU9NFxcXCI7XFxudmFyIHVzZXJfdXJsID0gXFxcImh0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTY0MDA0MDAma2V5d29yZD1cXFwiICsga2V5d29yZCArIFxcXCImcG49XFxcIiArIHBhZ2UgKyBcXFwiJnR5cGU9MlxcXCI7XFxudmFyIHlpbmdzaGlfdXJsID0gXFxcImh0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTY0MDA0MDAma2V5d29yZD1cXFwiICsga2V5d29yZCArIFxcXCImcG49XFxcIiArIHBhZ2UgKyBcXFwiJnR5cGU9OFxcXCI7XFxubGV0IHZfbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwsIHt9KSkuZGF0YS5pdGVtO1xcbmxldCBiX2xpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QoYmFuZ3VtaV91cmwsIHt9KSkuZGF0YS5pdGVtcztcXG5sZXQgbF9saXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KGxpdmVfdXJsLCB7fSkpLmRhdGEubGl2ZV9yb29tLml0ZW1zO1xcbmxldCB1X2xpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXNlcl91cmwsIHt9KSkuZGF0YS5pdGVtcztcXG5sZXQgeV9saXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHlpbmdzaGlfdXJsLCB7fSkpLmRhdGEuaXRlbXM7XFxudHJ5IHtcXG4gICAgYl9saXN0LmZvckVhY2goKGIpID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGIudGl0bGUsXFxuICAgICAgICAgICAgaW1nOiBiLmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICBjb250ZW50OiBiLnN0eWxlcyArIFxcXCJcXFxcblxcXCIgKyBiLnN0eWxlLFxcbiAgICAgICAgICAgIGRlc2M6IGIuYmFkZ2UsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGIudXJpICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9KVxcbn0gY2F0Y2ggKGUpIHt9XFxudHJ5IHtcXG4gICAgdl9saXN0LmZvckVhY2goKHYpID0+IHtcXG4gICAgICAgIGlmICh2Lmxpbmt0eXBlID09IFxcXCJ2aWRlb1xcXCIpIHtcXG4gICAgICAgICAgICBpZiAodi5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gKHYucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgICAgICAgICAgZWxzZVxcbiAgICAgICAgICAgICAgICB2YXIgcGxheSA9IHYucGxheTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdi50aXRsZSxcXG4gICAgICAgICAgICAgICAgaW1nOiB2LmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29udGVudDogXFxcIuaSreaUvumHjzogXFxcIiArIHBsYXkgKyBcXFwiICDml7bplb86IFxcXCIgKyB2LmR1cmF0aW9uICsgXFxcIlxcXFxu5Y+R5biD5pel5pyfXFxcIiArIHYuc2hvd19jYXJkX2Rlc2NfMiArIFxcXCJcXFxcblVQOiBcXFwiICsgdi5hdXRob3IsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLop4bpopFcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHYuc2hhcmUudmlkZW8uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbn0gY2F0Y2ggKGUpIHt9XFxudHJ5IHtcXG4gICAgdV9saXN0LmZvckVhY2goKHUpID0+IHtcXG4gICAgICAgIGlmICh1LmZhbnMgPiAxMDAwMClcXG4gICAgICAgICAgICB2YXIgZmFucyA9ICh1LmZhbnMgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgZWxzZVxcbiAgICAgICAgICAgIHZhciBmYW5zID0gdS5mYW5zO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdS50aXRsZSxcXG4gICAgICAgICAgICBpbWc6IHUuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IFxcXCLnsonkuJ06IFxcXCIgKyBmYW5zICsgXFxcIiAg6KeG6aKROiBcXFwiICsgdS5hcmNoaXZlcyArIFxcXCIgIOetiee6pzogTFZcXFwiICsgdS5sZXZlbCxcXG4gICAgICAgICAgICBkZXNjOiBcXFwiVVDkuLsoXFxcIiArIHUubWlkICsgXFxcIilcXFwiLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zcz91cmw9aGlrZXI6Ly9lbXB0eSMjZnlwYWdlJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIG1pZDogdS5taWQsXFxuICAgICAgICAgICAgICAgIG5hbWU6IHUudGl0bGVcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSlcXG59IGNhdGNoIChlKSB7fVxcbnRyeSB7XFxuICAgIHlfbGlzdC5mb3JFYWNoKCh5KSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB5LnRpdGxlLFxcbiAgICAgICAgICAgIGltZzogeS5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgY29udGVudDogeS5zdHlsZXMgKyBcXFwiXFxcXG5cXFwiICsgeS5zdHlsZSxcXG4gICAgICAgICAgICBkZXNjOiB5LmJhZGdlLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyB5LnVyaSArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfSlcXG59IGNhdGNoIChlKSB7fVxcbnRyeSB7XFxuICAgIGxfbGlzdC5mb3JFYWNoKChsKSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBsLnRpdGxlLFxcbiAgICAgICAgICAgIGltZzogbC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgY29udGVudDogbC5uYW1lLFxcbiAgICAgICAgICAgIGRlc2M6IGwuYmFkZ2UsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCJcXFwiKS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIC8v6JOd5YWJXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYmFzZXVybCA9IFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS9hcHAtcm9vbS92Mi9pbmRleC9nZXRSb29tUGxheUluZm8/YWNjZXNzX2tleT1cXFwiICsgZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgKyBcXFwiJnFuPTEwMDAwJnJvb21faWQ9XFxcIiArIGlkICsgXFxcIiZwbGF0Zm9ybT1hbmRyb2lkJmJ1aWxkPTY0MDAzMDAmZGV2aWNlX25hbWU9TTIwMDdKM1NDJmZvcm1hdD0wLDImY29kZWM9MCwxJmh0dHA9MSZjX2xvY2FsZT16aF9DTiZwcm90b2NvbD0wLDFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29kZWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYmFzZXVybCkpLmRhdGFbXFxcInBsYXl1cmxfaW5mb1xcXCJdW1xcXCJwbGF5dXJsXFxcIl1bXFxcInN0cmVhbVxcXCJdWzBdW1xcXCJmb3JtYXRcXFwiXVswXVtcXFwiY29kZWNcXFwiXVswXVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGVjLnVybF9pbmZvWzBdLmhvc3QgKyBjb2RlYy5iYXNlX3VybCArIGNvZGVjLnVybF9pbmZvWzBdLmV4dHJhXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBidXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIGlkICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCdcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QoYnVybCkpLmRhdGEuZHVybFswXS51cmxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGwucm9vbWlkKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzFfbGVmdF9waWNcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KVxcbn0gY2F0Y2ggKGUpIHt9XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV92ZXJ0aWNhbF9waWNcIixcIm5hbWVcIjpcIumhtemdoi3mkJzntKLkuoznuqdcIixcInBhdGhcIjpcInNzXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIC8qXFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOifigJzigJzlhbPms6jigJ3igJ0nLFxcbiAgICB1cmw6J2hpa2VyOi8vZW1wdHkjJytNWV9VUkwuc3BsaXQoJyMnKVsxXSsnJiYnK01ZX1VSTC5zcGxpdCgnbWlkPScpWzFdLnNwbGl0KCcmJylbMF0rYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcIiYmXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyYmJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICAqL1xcbiAgICBwdXRNeVZhcihcXFwicGFyYW0yXFxcIiwgXFxcIlxcXCIpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+KAnOKAnOKtkO+4j1N0YXLigJ3igJ0nLFxcbiAgICAgICAgLy91cmw6ICdoaWtlcjovL2VtcHR5IycgKyBjYXJkLm5hbWUgKyAnJiYnICsgY2FyZC5taWQgKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobWlkLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgLy92YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIG1pZCArICcmanNvbnA9anNvbnAmYWNjZXNzX2tleT0nICsgZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIiksIHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgIGxldCBhY2Nlc3Nfa2V5ID0gZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIGxldCBteW1pZCA9IGdldFZhcignc3RhcmlkJyk7XFxuICAgICAgICAgICAgbGV0IHRzID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0VGltZSgpKS5zbGljZSgwLCAxMCk7XFxuICAgICAgICAgICAgbGV0IGFhYSA9IFxcXCJhY2Nlc3Nfa2V5PVxcXCIgKyBhY2Nlc3Nfa2V5ICsgXFxcIiZhcHBrZXk9NDQwOWUyY2U4ZmZkMTJiOCZidWlsZD01NTIwNDAwJm1pZD1cXFwiICsgbXltaWQgKyBcXFwiJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZ0cz1cXFwiICsgdHMgKyBcXFwiJnZtaWQ9XFxcIiArIG15bWlkO1xcbiAgICAgICAgICAgIGxldCBiYmIgPSBcXFwiNTliNDNlMDRhZDY5NjVmMzQzMTkwNjJiNDc4ZjgzZGRcXFwiO1xcbiAgICAgICAgICAgIGxldCBzaWduID0gbWQ1KGFhYSArIGJiYik7XFxuICAgICAgICAgICAgbGV0IHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zcGFjZT8nICsgYWFhICsgJyZzaWduPScgKyBzaWduO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogZ2V0TXlWYXIoXFxcIlVBXFxcIilcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBcXFwiR0VUXFxcIlxcbiAgICAgICAgICAgIH0pKS5kYXRhLmNhcmQuZmFjZTtcXG5cXG4gICAgICAgICAgICBpZiAoIWdldFZhcignbGIyJykuaW5jbHVkZXMobWlkKSkge1xcbiAgICAgICAgICAgICAgICB2YXIgeHIgPSBnZXRWYXIoJ2xiMicpICsgJ1xcXFxuJyArIG5hbWUgKyBcXFwiJiZcXFwiICsgbWlkICsgJyMjJyArIHBpYztcXG4gICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwgeHIpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ2xiMicsIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwge30pKTtcXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwi5piv5ZCm5ZCM5q2l5LqR56uvXFxcXG4o54K55Ye75Y+W5raI6KGo56S65LuF5pys5Zyw5YWz5rOoKVxcXCIpLmNvbmZpcm0oKG1pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZnkgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL21vZGlmeVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzX2tleTogZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWQ6IG1pZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdDogXFxcIjFcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkuY29kZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kaWZ5ID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WFs+azqOaIkOWKnyjmnKzlnLAm5LqR56uvKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pys5Zyw5YWz5rOo5oiQ5Yqf77yM5LqR56uv5bqU6K+lZ+S6hlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBtaWQpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+WFs+azqOaIkOWKnyjku4XmnKzlnLApJ1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxuJyk7XFxuICAgICAgICAgICAgICAgIC8v5Y676Zmk5YWz5rOo6YeM55qE56m655m95YWD57SgXFxuICAgICAgICAgICAgICAgIHZhciB4eCA9IHh4LmZpbHRlcihmdW5jdGlvbihzKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyAmJiBzLnRyaW0oKTtcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh4eFtrXS5pbmNsdWRlcyhtaWQpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNjID0geHhba10gKyAnXFxcXG4nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ciA9IGdldFZhcignbGIyJykgKyAnXFxcXG4nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4eiA9IHhyLnJlcGxhY2Uoc2MsICcnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB4eik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdsYjInLCBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHt9KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBtb2RpZnkgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3JlbGF0aW9uL21vZGlmeVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nfa2V5OiBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWQ6IG1pZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Q6IFxcXCIyXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSkuY29kZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGlmeSA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5Y+W5YWz5oiQ5YqfKOacrOWcsCbkupHnq68pXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+acrOWcsOWPluWFs+aIkOWKn++8jOS6keerr+W6lOivpWfkuoZcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5Y+W5YWz5oiQ5Yqf77yB6ZOB5a2Q5YaN6KeB8J+mhidcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6ICX5a2Q5bC+5rGBXFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0sIE1ZX1BBUkFNUy5taWQsIE1ZX1BBUkFNUy5uYW1lKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVxcbmxldCB1cmwgPSBcXFwiaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc3BhY2UvYXJjaGl2ZS9jdXJzb3I/YWlkPVxcXCIgKyBnZXRNeVZhcihcXFwicGFyYW0yXFxcIikgKyBcXFwiJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJnZtaWQ9XFxcIiArIE1ZX1BBUkFNUy5taWQ7XFxudmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSk7XFxuZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEuaXRlbS5sZW5ndGg7IGkrKykge1xcbiAgICB2YXIgciA9IHt9O1xcbiAgICB2YXIgaiA9IGpzb24uZGF0YS5pdGVtW2ldO1xcbiAgICB2YXIgdCA9IE51bWJlcihqLmN0aW1lKSAqIDEwMDA7XFxuICAgIC8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuICAgIC8qXFxuICAgIGZ1bmN0aW9uIGdldExvY2FsVGltZShuUykge1xcbiAgICAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwgMTcpO1xcbiAgICAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywgJy0nKS5yZXBsYWNlKCfmnIgnLCAnLScpO1xcbiAgICAgICAgcmV0dXJuIChZTUQpXFxuICAgIH1cXG4gICAgKi9cXG4gICAgZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7XFxuICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG4gICAgICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG4gICAgICAgIHZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXG4gICAgICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbiAgICAgICAgcmV0dXJuIHRpbWVcXG4gICAgfVxcbiAgICAvL+aXtumXtOaIs+i9rOaNolxcbiAgICB2YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG4gICAgaWYgKGoucGxheSA+IDEwMDAwKVxcbiAgICAgICAgdmFyIHBsYXkgPSAoai5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgZWxzZVxcbiAgICAgICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxuICAgIHZhciBwaWNzID0gKGouY292ZXIuaW5kZXhPZignOicpICE9IC0xKSA/IGouY292ZXIgOiAnaHR0cHM6JyArIGouY292ZXI7XFxuICAgIHIucGljX3VybCA9IHBpY3M7XFxuICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lO1xcbiAgICBpZiAoai5sZW5ndGggIT0gXFxcIjAwOjAwXFxcIikge1xcbiAgICAgICAgZC5wdXNoKHIpXFxuICAgIH07XFxuICAgIHB1dE15VmFyKFxcXCJwYXJhbTJcXFwiLCBqLnBhcmFtKVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3pooTlpITnkIZcIixcInBhdGhcIjpcInljbFwiLFwicnVsZVwiOlwicHV0VmFyMigndWEnLCAnO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfScpO1xcblxcbnB1dE15VmFyKFxcXCJVQVxcXCIsIFxcXCJNb3ppbGxhLzUuMCBCaWxpRHJvaWQvNi40MC4wIChiYmNhbGxlbkBnbWFpbC5jb20pIG9zL2FuZHJvaWQgbW9kZWwvTTIwMDdKM1NDIG1vYmlfYXBwL2FuZHJvaWQgYnVpbGQvNjQwMDMwMCBjaGFubmVsL21hc3RlciBpbm5lclZlci82NDAwMzAwIG9zVmVyLzEwIG5ldHdvcmsvMVxcXCIpO1xcblxcbnB1dFZhcignYWNjZXNzX2tleScsIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSk7XFxuXFxucHV0VmFyKCdYNScsIFxcXCJAbGF6eVJ1bGU9LmpzOnZhciBqeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHQnLHt9KTtyZWZyZXNoWDVXZWJWaWV3KGp4K2lucHV0KTsndG9hc3Q6Ly/mkq3mlL7kuK0nXFxcIik7XFxuXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnKSkge1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywgJ1VQ5Li7Jyk7XFxufVxcblxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JykpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsICfop4bpopEnKTtcXG59XFxuXFxuaWYgKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwge30pID09ICcnKSB7XFxuICAgIGlmIChmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KSAhPSAnJykge1xcbiAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0xMDMyNTY4ODAmYWNjZXNzX2tleT1kNWFmNTUxM2FjYjkyOTQ1MzllY2RmN2ZmZDU1YmY1MScsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogZ2V0TXlWYXIoXFxcIlVBXFxcIilcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwgXFxcIuWMl+WfjiYmMTAzMjU2ODgwIyNcXFwiICsgcGljKTtcXG4gICAgfVxcbn1cXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwge30pKSB7XFxuICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIFxcXCIxMDMyNTY4ODBcXFwiKTtcXG59XFxuXFxucHV0VmFyMignbGIyJywgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSkpO1xcblxcbi8qXFxucHV0VmFyKFxcXCLop6PmnpDlj6NcXFwiLGBoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNAcnVsZT1qczp2YXIgZCA9IFtdO2QucHVzaCh7ZGVzYzogJzIwMCcsdXJsOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvYmlsaS91cGp4Lmh0bWwnLGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnfSk7dmFyIHRpdGxlcyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSkuc3BsaXQoL1xcXFxcXFxcbi8pO2Zvcih2YXIgaSA9IDA7IGkgPCB0aXRsZXMubGVuZ3RoOyBpKyspe3ZhciB0ID0gdGl0bGVzW2ldLnNwbGl0KFxcXCImJlxcXCIpO2QucHVzaCh7dGl0bGU6ZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIse30pID09IHRbMV0gPyB0WzBdICsgXFxcIuKAmOKAmO+8iOW9k+WJje+8ieKAmeKAmVxcXCIgOiB0WzBdLGRlc2M6dFsxXSx1cmw6dFsxXSArICdAbGF6eVJ1bGU9LmpzOnB1dFZhcjIoXFxcInVpZFxcXCIsaW5wdXQpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIixpbnB1dCk7YmFjaygpO1xcXCJ0b2FzdDovL+S/ruaUueaIkOWKn1xcXCInLGNvbF90eXBlOiAndGV4dF8xJ30pO31zZXRSZXN1bHQoZCk7YCk7XFxuXFxuaWYgKCFmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIFxcXCLlhajnvZFWSVAmJmh0dHBzOi8vanh4LnNteXM4LmNuL2luZGV4LnBocD91cmw9XFxcXG7liqDpgJ8mJmh0dHBzOi8vd3d3LmN1YW4ubGEvbTN1OC5waHA/dXJsPVxcXCIpO1xcbn1cXG5cXG5cXG5sZXQgbG9jYWxIdG1sMiA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcIiwge30pO1xcbmxldCBnaXRIdG1sMiA9IGZldGNoKFxcXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvWnJ1aXJ5L2hpa2Vydmlldy9odG1sL2ppZXhpLmh0bWxcXFwiLCB7fSkucmVwbGFjZSgvamlleGlcXFxcL2ppZXhpL2csXFxcImJpbGkvdXBqeFxcXCIpO1xcbmlmICghbG9jYWxIdG1sMikge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcIiwgZ2l0SHRtbDIpO1xcbiAgdmFyIHRpdGxlcyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSk7XFxuICB2YXIgdCA9IHRpdGxlcy5zcGxpdChcXFwiJiZcXFwiKVsxXTtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix0KTtcXG59XFxuKi9cXG4vL+mAmui/h+aQnOe0ouafpeeci+iHquW3seeahHVpZO+8jOeEtuWQjuabv+aNouWNs+WPr1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0Jywge30pKSB7XFxuICAgIHB1dFZhcignc3RhcmlkJywgJzkyODEyMycpO1xcbn0gZWxzZSB7XFxuICAgIHB1dFZhcignc3RhcmlkJywgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0Jywge30pKTtcXG59XFxuXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSkge1xcbiAgICBwdXRWYXIoXFxcImtleVxcXCIsIFxcXCJkNWFmNTUxM2FjYjkyOTQ1MzllY2RmN2ZmZDU1YmY1MVxcXCIpXFxufSBlbHNlIHtcXG4gICAgcHV0VmFyKFxcXCJrZXlcXFwiLCBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSk7XFxufVxcbi8v6Ieq5bex5Y67YuermeWuouaIt+err+mmlumhteaKk+WMhe+8jOaJvuWIsGFwcC5iaWxpYmlsaS5jb23lvIDlpLTnmoTpk77mjqXvvIznhLblkI7miophY2Nlc3Nfa2V555qE5YC85aGr5YWl5LiK5pa5Jz0n5ZCO6Z2i5Y2z5Y+vXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSkpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIFxcXCLmlrDniYhcXFwiKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh5o6o6I2QXCIsXCJwYXRoXCI6XCJmZWVkXCIsXCJydWxlXCI6XCIvL3ZhciB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvaW50bC9mZWVkL2luZGV4P2FjY2Vzc19rZXk9JyArIGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICsgJyZhdXRvcGxheV9jYXJkPTImYnVpbGQ9NjIyNTMwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZjb2x1bW49MiZkZXZpY2VfbmFtZT0mZGV2aWNlX3R5cGU9MCZmbHVzaD04JmZudmFsPTQ2NCZmbnZlcj0wJmZvcmNlX2hvc3Q9MCZmb3Vyaz0xJmd1aWRhbmNlPTAmaHR0cHNfdXJsX3JlcT0wJm1vYmlfYXBwPWFuZHJvaWQmbmV0d29yaz13aWZpJnBsYXRmb3JtPWFuZHJvaWQmcGxheWVyX25ldD0xJnB1bGw9ZmFsc2UmcW49ODAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yMi41JTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJztcXG50cnkge1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL2ZlZWQvaW5kZXg/YWNjZXNzX2tleT1cXFwiICsgZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgKyBcXFwiJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzXFxcIjtcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcImFwcC1rZXlcXFwiOiBcXFwiYW5kcm9pZFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSkpLmRhdGEuaXRlbXM7XFxuICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIHVybCA9IHguZ290byA9PSBcXFwiYmFuZ3VtaVxcXCIgPyBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJpLnNwbGl0KFxcXCI/XFxcIilbMF0gKyAnI2ltbWVyc2l2ZVRoZW1lIycgOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD1cXFwiICsgeC5wYXJhbSArIFxcXCLvvIbvvIZidmlkPVxcXCIgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4LmdvdG8gPT0gXFxcImJhbmd1bWlcXFwiID8gXFxcIvCfkrBcXFwiICsgeC50aXRsZSA6IHgudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogeC5jb3Zlcl9sZWZ0XzFfY29udGVudF9kZXNjcmlwdGlvbiArIFxcXCIgXFxcIiArIHguY292ZXJfbGVmdF8yX2NvbnRlbnRfZGVzY3JpcHRpb24gKyBcXFwiICBcXFwiICsgeC5jb3Zlcl9yaWdodF90ZXh0LFxcbiAgICAgICAgICAgIHBpYzogeC5jb3ZlciArIFxcXCJAUmVmZXJlcj1odHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgICAgICAgICB1cmw6IHVybCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi55yL6KeB5oiR5oSP5ZGz552A5L2g6KaB6YeN5paw55m75b2V5LqG77yM6Z2T5LuUXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgfSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh5paw55WqXCIsXCJwYXRoXCI6XCJuZXdiZ21cIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKSB7XFxuICAgIGxldCBhY2Nlc3Nfa2V5ID0gZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIixcXFwiXFxcIilcXG4gICAgbGV0IHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgIGxldCBhYWEgPSAnYWNjZXNzX2tleT0nICthY2Nlc3Nfa2V5ICsgJyZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZpbHRlcl90eXBlPTAmbW9iaV9hcHA9YW5kcm9pZCZuaWdodF9tb2RlPTAmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9Jyt0cztcXG4gICAgbGV0IGJiYiA9IFxcXCJjMmVkNTNhNzRlZWVmZTNjZjk5ZmJkMDFkOGM5YzM3NVxcXCI7XFxuICAgIGxldCBzaWduID0gbWQ1KGFhYSArIGJiYik7XFxuICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvdGltZWxpbmU/JythYWErJyZzaWduPScrc2lnbjtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBzb3VyY2VfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxuICAgICAgICB2YXIgZGF0ZWxpbmUgPSBbe1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5YmN5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMFxcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNV0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5pio5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMVxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzZdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuS7iuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjJcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs3XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIzXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs4XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLlkI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI0XFxcIlxcbiAgICAgICAgfV07XFxuICAgICAgICBpZiAoIWdldFZhcignaWQnKSkge1xcbiAgICAgICAgICAgIHB1dFZhcignaWQnLCAnMicpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGlkID0gZ2V0VmFyKCdpZCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzAnID8gZ2V0SGVhZCgn5YmN5pelJykgOiAn5YmN5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcxJyA/IGdldEhlYWQoJ+aYqOaXpScpIDogJ+aYqOaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcxJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMicgPyBnZXRIZWFkKCfku4rml6UnKSA6ICfku4rml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzMnID8gZ2V0SGVhZCgn5piO5pelJykgOiAn5piO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzMnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICc0JyA/IGdldEhlYWQoJ+WQjuaXpScpIDogJ+WQjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICc0Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgbGlzdCA9IGRhdGVsaW5lW2lkXS5jb2RlLmVwaXNvZGVzO1xcbiAgICAgICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICAgICAgbGV0IHR5cGUgPSAoeC5wdWJsaXNoZWQgPT0gJzEnID8gJ+W3suWPkeW4gycgOiAn5pyq5Y+R5biDJyk7XFxuICAgICAgICAgICAgbGV0IGZvbGxvdyA9ICh4LmZvbGxvdyA9PSAnMScgPyBnZXRIZWFkKCfigKLlt7Lov73nlaonKSA6ICcnKTtcXG4gICAgICAgICAgICAvL2xvZyh0eXBlKVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn4oCY4oCYJyArIHR5cGUgKyAn4oCZ4oCZXFxcXG4nICsgeC5wdWJfaW5kZXggKyBmb2xsb3cgKyAnXFxcXG7mm7TmlrDml7bpl7TvvJonICsgZ2V0SGVhZCh4LnB1Yl90aW1lKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICBpbWc6IHguY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRIZWFkKCfpk77mjqXngrjkuobvvIznrYnkv67lpI0nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHntKLlvJVcIixcInBhdGhcIjpcInN5XCIsXCJydWxlXCI6XCJjb25zdCB7IENhdGVnb3JpZXNIZWFkZXIgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NhdGVnb3JpZXMtaGVhZGVyXFxcIilcXG4vL2NvbnN0IHsgQ2F0ZWdvcmllc0hlYWRlciB9ID0gJC5yZXF1aXJlKFxcXCJodHRwczovL3J4MzE5LmNvZGluZy5uZXQvcC9iaWxpL2QvYmlsaV9SL2dpdC9yYXcvbWFzdGVyL2NhdGVnb3JpZXMtaGVhZGVyLmpzP2Rvd25sb2FkPWZhbHNlXFxcIilcXG5cXG4vKipcXG4gKiDojrflj5bliIbnsbvmlbDmja7mupDvvIzlj6/liqjmgIHlj6/pnZnmgIHvvIzoh6rlt7HmoLnmja7lrp7pmYXmg4XlhrXlpITnkIZcXG4gKiBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvXFxuICovXFxubGV0IG1DYXRlZ29yaWVzID0ge31cXG5sZXQgY2F0SW5WYXIgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJylcXG5pZiAoZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgJycpKSB7XFxuICAgIG1DYXRlZ29yaWVzID0gSlNPTi5wYXJzZShjYXRJblZhcilcXG59IGVsc2Uge1xcbiAgICBsZXQgY2F0VXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC8nXFxuICAgIGxldCBjYXRTcmMgPSByZXF1ZXN0KGNhdFVybClcXG4gICAgLy8gbG9nKGNhdFNyYylcXG4gICAgbGV0IGNhdFJlZ2V4ID0gL3dpbmRvd1xcXFwuX19JTklUSUFMX1NUQVRFX189KC4qPyk7XFxcXChmdW5jdGlvblxcXFwoXFxcXClcXFxcey9cXG4gICAgaWYgKGNhdFJlZ2V4LnRlc3QoY2F0U3JjKSkge1xcbiAgICAgICAgLy8gbG9nKFJlZ0V4cC4kMSlcXG4gICAgICAgIGxldCBjYXRlZ29yeSA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IG1GaWx0ZXJzID0gY2F0ZWdvcnkuZmlsdGVycztcXG4gICAgICAgIC8vIGxvZyhtRmlsdGVycylcXG4gICAgICAgIG1GaWx0ZXJzLm1hcChmaWx0ZXIgPT4gbUNhdGVnb3JpZXNbZmlsdGVyLmtleV0gPSBmaWx0ZXIubGlzdClcXG4gICAgICAgIGxldCBvcmRlcnMgPSBjYXRlZ29yeS5vcmRlcnNcXG4gICAgICAgIGxldCBtT3JkZXJzID0gW11cXG4gICAgICAgIG9yZGVycy5tYXAob3JkZXIgPT4ge1xcbiAgICAgICAgICAgIGxldCBtT3JkZXIgPSB7fVxcbiAgICAgICAgICAgIG1PcmRlci5uYW1lID0gb3JkZXIudGl0bGVcXG4gICAgICAgICAgICBtT3JkZXIudmFsdWUgPSBvcmRlci5rZXlcXG4gICAgICAgICAgICBtT3JkZXJzLnB1c2gobU9yZGVyKVxcbiAgICAgICAgfSlcXG4gICAgICAgIC8vIGxvZyhtT3JkZXJzKVxcbiAgICAgICAgbUNhdGVnb3JpZXNbJ29yZGVyJ10gPSBtT3JkZXJzXFxuICAgIH1cXG4gICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgSlNPTi5zdHJpbmdpZnkobUNhdGVnb3JpZXMpKVxcbn1cXG5sZXQga2V5cyA9IE9iamVjdC5rZXlzKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhtQ2F0ZWdvcmllcylcXG4vLyBsb2coa2V5cylcXG4vKipcXG4gKiDnu4TlkIjlvZPliY3liIbnsbvpk77mjqVcXG4gKi9cXG5sZXQgdHJ1ZV91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwsIE1ZX1VSTClcXG50cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/J1xcbmZvciAobGV0IGl0IG9mIGtleXMpIHtcXG4gICAgbGV0IGNhdF91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI1xcXCIgKyBpdCwgaXQgPT09ICdvcmRlcnMnID8gJzMnIDogJy0xJylcXG4gICAgdHJ1ZV91cmwgKz0gKGNhdF91cmwgPyAnJicgKyBpdCArICc9JyArIGNhdF91cmwgOiAnJylcXG59XFxuLy8gbGV0IHBhZ2UgPSAxXFxuY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdXFxuaWYocGFnZT09MSl7XFxuICAgIFxcbn1cXG50cnVlX3VybCA9IHRydWVfdXJsICtcXG4gICAgJyZzdD0xJnNvcnQ9MCZzZWFzb25fdHlwZT0xJnBhZ2VzaXplPTIwJnR5cGU9MScgK1xcbiAgICAnJnBhZ2U9JyArIHBhZ2VcXG4vLyBsb2codHJ1ZV91cmwpXFxuXFxuY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXG5DYXRlZ29yaWVzSGVhZGVyXFxuICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSgnbmFtZScsICd2YWx1ZScpXFxuICAgIC5nZXQoZCwgbUNhdGVnb3JpZXMsIHBhZ2UpXFxuLyoqXFxuICog6I635Y+W5b2T5YmN5YiG57G76aG16Z2i5rqQ56CBXFxuICovXFxudHJ5IHtcXG4gICAgdmFyIHN5bGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh0cnVlX3VybCwge30pKS5kYXRhLmxpc3Q7XFxuXFxuICAgIC8qKlxcbiAgICAgKiDliJfooajmlbDmja7mupBcXG4gICAgICovXFxuICAgIGZvciAobGV0IGRhdGEgb2Ygc3lsaXN0KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlIC8qKyAnLycgKyBkYXRhLmluZGV4X3Nob3cqLyAsXFxuICAgICAgICAgICAgZGVzYzogZGF0YS5vcmRlcixcXG4gICAgICAgICAgICBpbWc6IGRhdGEuY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgZGF0YS5saW5rICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaLliqjmgIHliIbnsbvmqKHlnZdcIixcInBhdGhcIjpcImNhdGVnb3JpZXMtaGVhZGVyXCIsXCJydWxlXCI6XCJqczpcXG4vKipcXG4gKiDkvb/nlKjor7TmmI7vvJpcXG4gKiAxLuaPkOWJjeW7uueri+WlvSDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooagg55qE5a+55bqU5YWz57O777yM5Y2zIGdldCDlh73mlbDkuK3nmoQgY2F0ZWdvcmllc1xcbiAqIDIu6K6+572u5a2Q5YiG57G75pWw5o2u55qEIGtlee+8jOiwg+eUqCBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcbiAqIDMu54S25ZCO6LCD55SoIENhdGVnb3JpZXNIZWFkZXIuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXG4gKlxcbiAqIOaUr+aMgemTvuW8j+iwg+eUqO+8jOS4gOWPpeivneWNs+WPr+iwg+eUqOeUn+aIkOWIhuexu++8jOWNs++8mlxcbiAqIENhdGVnb3JpZXNIZWFkZXJcXG4gKiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXG4gKiAgICAuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXG4gKlxcbiAqIEB0eXBlIHt7c2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXk6IENhdGVnb3JpZXNIZWFkZXIuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXksIGdldDogQ2F0ZWdvcmllc0hlYWRlci5nZXQsIGNhdGVnb3JpZXNLZXk6IHt0aXRsZTogc3RyaW5nLCB1cmw6IHN0cmluZ319fVxcbiAqL1xcbmxldCBDYXRlZ29yaWVzSGVhZGVyID0ge1xcbiAgICBjYXRlZ29yaWVzS2V5OiB7XFxuICAgICAgICBzdWJfY2F0ZWdvcmllczogJycsXFxuICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICB1cmw6ICcnLFxcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICogMS7orr7nva7ku47liIbnsbvliJfooajkuK3mi7/nmoTlrZDliIbnsbvnmoTmlbDmja4ga2V577yMXFxuICAgICAqICAg5qC55o2uIGtleSDmi7/liLDmlbDmja7lkI7vvIxcXG4gICAgICogICDkvJroh6rliqjotYvlgLznu5kgc2Nyb2xsX2J1dHRvbiDnmoQgeyB0aXRsZTogaXRlbVt0aXRsZUtleV0sIHVybDogaXRlbVt1cmxLZXldIH1cXG4gICAgICpcXG4gICAgICogQHBhcmFtIHRpdGxlX2tleSB0aXRsZSDnmoQga2V5XFxuICAgICAqIEBwYXJhbSB1cmxfa2V5IHVybCDnmoQga2V5XFxuICAgICAqL1xcbiAgICBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSA6ICh0aXRsZV9rZXksIHVybF9rZXkpID0+IHtcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZSA9IHRpdGxlX2tleVxcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybCA9IHVybF9rZXlcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcbiAgICB9LFxcbiAgICBzZXRTdWJDYXRlZ29yaWVzS2V5OiAoc3ViX2NhdGVnb3JpZXNfa2V5KSA9PiB7XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXlcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICogMi7ojrflj5bliIbnsbvlpLTpg6hcXG4gICAgICpcXG4gICAgICogQHBhcmFtIGxheW91dCDlvZPliY3nlYzpnaLvvIzljbPluLjnlKjnmoQgZC5wdXNoIOeahCBkXFxuICAgICAqIEBwYXJhbSBjYXRlZ29yaWVzIOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqOeahOWvueW6lOWFs+ezu+ihqO+8jFxcbiAgICAgKiAgICAgICAg5aaC77yaXFxuICAgICAqICAgICAgICB7XFxuICAgICAqICAgICAgICAgICBcXFwi5bm05Lu9XFxcIjogW3sgXFxcIm5hbWVcXFwiOiBcXFwiMjAyMVxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCIyMDIxXFxcIiB9LCB7IFxcXCJuYW1lXFxcIjogXFxcIjIwMjBcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiMjAyMFxcXCIgfS4uLl0sXFxuICAgICAqICAgICAgICAgICBcXFwi5o6S5bqPXFxcIjogW3sgXFxcIm5hbWVcXFwiOiBcXFwi54Ot5bqmXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcImhvdFxcXCIgfSwgeyBcXFwibmFtZVxcXCI6IFxcXCLml7bpl7RcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwidGltZVxcXCIgfS4uLl0sXFxuICAgICAqICAgICAgICB9XFxuICAgICAqIEBwYXJhbSBwYWdlIOmhteeggVxcbiAgICAgKiBAcGFyYW0gdXJsTGlzdGVuZXIg6aKd5aSW5aSE55CGIGJ1dHRvbiDnmoQgdXJs77yM6ZyA6KaBIHJldHVyblxcbiAgICAgKi9cXG4gICAgZ2V0OiAobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlLCB1cmxMaXN0ZW5lcikgPT4ge1xcbiAgICAgICAgLy8gbG9nKGNhdGVnb3JpZXMpXFxuICAgICAgICAvLyDliIbnsbvmiYDlsZ7nsbvlnovnmoTliJfooajvvIzlpoLvvJpbIFxcXCLlubTku71cXFwiLCBcXFwi5o6S5bqPXFxcIiBdXFxuICAgICAgICBsZXQgY2F0ZWdvcnlfbmFtZXMgPSBPYmplY3Qua2V5cyhjYXRlZ29yaWVzKVxcbiAgICAgICAgbGV0IHR5cGVzID0gW11cXG4gICAgICAgIC8vIOagueaNruWvueW6lOWFs+ezu+ihqOaLv+WIhuexu+WIl+ihqFxcbiAgICAgICAgY2F0ZWdvcnlfbmFtZXMubWFwKGNhdGVnb3J5X25hbWUgPT4ge1xcbiAgICAgICAgICAgIC8vIOi/memHjOS8muaLv+WIsCDlubTku70g5o6S5bqPLi4uIOWFtuS4reS4gOS4qlxcbiAgICAgICAgICAgIHR5cGVzLnB1c2goY2F0ZWdvcmllc1tjYXRlZ29yeV9uYW1lXSk7XFxuICAgICAgICAgICAgLy8g6L+Z6YeM5LiL6Z2i5a+5IHR5cGVzIOeahOWAvOi/m+ihjOWkhOeQhlxcbiAgICAgICAgfSlcXG4gICAgICAgIGNhdGVnb3JpZXMgPSB0eXBlcztcXG4gICAgICAgIGxldCBpbml0X2NhdGUgPSBbXVxcblxcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgICAgICAgICAgaW5pdF9jYXRlLnB1c2goXFxcIjBcXFwiKVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiDpgY3ljobnrKwgaW5kZXgg5bGC5YiG57G7XFxuICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yeV9uYW1lID0gY2F0ZWdvcnlfbmFtZXNbaW5kZXhdXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllc19rZXkgPSBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXNcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5ID8gY2F0ZWdvcnlbc3ViX2NhdGVnb3JpZXNfa2V5XSA6IGNhdGVnb3J5O1xcbiAgICAgICAgICAgICAgICAvLyBsb2coY2F0ZWdvcnkpXFxuICAgICAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAgICAgKiDlnKjnrKwgaW5kZXgg5bGC5YiG57G75Lit6YGN5Y6G6K+l5bGC5omA5pyJ5a2Q5YiG57G7XFxuICAgICAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlXVxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGVzY2FwZShpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmxdKVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybExpc3RlbmVyKSB1cmwgPSB1cmxMaXN0ZW5lci5vbkRlYWwoaXRlbSwgc3ViX2NhdGVnb3J5X25hbWUsIHVybClcXG4gICAgICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMDk4QUMxXFxcIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHVybCkubGF6eVJ1bGUoKHBhcmFtcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKClcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI1xcXCIgKyBwYXJhbXMuc3ViX2NhdGVnb3J5X25hbWUsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViX2NhdGVnb3J5X25hbWU6IHN1Yl9jYXRlZ29yeV9uYW1lXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuJC5leHBvcnRzLkNhdGVnb3JpZXNIZWFkZXI9Q2F0ZWdvcmllc0hlYWRlclwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLeinhumikVwiLFwicGF0aFwiOlwidmlkZW9cIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L2ZvbGRlci9zcGFjZT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBfbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZzaWduPTBhNTFiNzcyZjgxZGM3ODEyY2Q2NjIyNmE4MzI1MzgzJztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5kYXRhO1xcbmZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHgubmFtZSxcXG4gICAgICAgIGltZzogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5I1xcXCIreC5pZCtcXFwiQGxhenlSdWxlPS5qczpwdXRWYXIoJ2NoYW5nZScsZ2V0VmFyKCdjaGFuZ2UnKT09aW5wdXQuc3BsaXQoJyMnKVsxXT8nMCc6aW5wdXQuc3BsaXQoJyMnKVsxXSk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7LliLfmlrAnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcignY2hhbmdlJykgPT0geC5pZCkge1xcbiAgICAgICAgdmFyIGxpc3QyID0geC5tZWRpYUxpc3RSZXNwb25zZS5saXN0O1xcbiAgICAgICAgbG9nKGxpc3QyKVxcbiAgICAgICAgZm9yICh2YXIgYSBpbiBsaXN0Mikge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0MlthXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBsaXN0MlthXS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9jb2xsZWN0aW9uP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaWRz77yf77yfYWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKyfvvIbvvIZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjM++8hu+8hmJ1aWxkPTYxMzA0MDDvvIbvvIZjX2xvY2FsZT16aF9DTu+8hu+8hmNoYW5uZWw9bWFzdGVy77yG77yGbWVkaWFfaWQ9JytsaXN0MlthXS5pZCsn77yG77yGbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsn77yG77yGbW9iaV9hcHA9YW5kcm9pZO+8hu+8hnBsYXRmb3JtPWFuZHJvaWTvvIbvvIZzX2xvY2FsZT16aF9DTu+8hu+8hnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RO+8hu+8hnRzPScrdHMrJ++8hu+8hnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnLFxcbiAgICAgICAgICAgICAgIC8vIGRlc2M6IGFbJ21lZGlhX2NvdW50J10sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG5cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73nlapcIixcInBhdGhcIjpcImZhbmp1XCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy92Mi9iYW5ndW1pP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXG50cnkge1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFwi5a6M57uTXFxcIiA6IFxcXCLov57ovb1cXFwiO1xcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXCIgfCBcXFwiICsgeC5iYWRnZTtcXG4gICAgICAgIHZhciBkZXNjID0geC5wcm9ncmVzcyA/IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIiArIHgucHJvZ3Jlc3MuaW5kZXhfc2hvdyA6IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFwiXFxcXHRcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcbiAgICAgICAgICAgIGltZzogeC5uZXdfZXAuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6L+95YmnXCIsXCJwYXRoXCI6XCJkc2pcIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2NpbmVtYT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcG49JyArIHBhZ2VudW0gKyAnJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuOS4xJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnN0YXR1cz0yJnRzPScgKyB0cyArICcmc2lnbj0xNjI0Zjk1OThkY2EwNmViMTI5NTM0ZTQ3NjVmOWIxYSc7XFxudHJ5IHtcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkucmVzdWx0LmZvbGxvd19saXN0O1xcbiAgICBmb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcIuWujOe7k1xcXCIgOiBcXFwi6L+e6L29XFxcIjtcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFwiIHwgXFxcIiArIHguYXJlYXNbMF0ubmFtZTtcXG4gICAgICAgIHZhciBkZXNjID0geC5wcm9ncmVzcyA/IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIiArIHgucHJvZ3Jlc3MuaW5kZXhfc2hvdyA6IOagh+ivhiArIFxcXCJcXFxcbuKAnOKAnFxcXCIgKyB4Lm5ld19lcC5pbmRleF9zaG93ICsgXFxcIuKAneKAnVxcXFxuXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFwiXFxcXHRcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcbiAgICAgICAgICAgIGltZzogeC5uZXdfZXAuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGRlc2MsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t5pS26JePXCIsXCJwYXRoXCI6XCJjb2xsZWN0aW9uXCIsXCJydWxlXCI6XCJqczp2YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9VUkwpKS5kYXRhO1xcbnZhciByZXNvdXJjZXMgPSAnJztcXG5mb3IgKHZhciB4IG9mIGNvZGUpe1xcbiAgICB2YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzICsgeC5pZCArICc6JyArIHgudHlwZSArICcsJztcXG59XFxudmFyIHJlc291cmNlcyA9IHJlc291cmNlcy5zbGljZSgwLHJlc291cmNlcy5sZW5ndGgtMSk7XFxudmFyIHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvcmVzb3VyY2UvaW5mb3M/YWNjZXNzX2tleT0nK2dldFZhcignYWNjZXNzX2tleScpKycmYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlJm1pZD0nK2dldFZhcignc3RhcmlkJykrJyZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcmVzb3VyY2VzPScrcmVzb3VyY2VzKycmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScrdHMrJyZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwse30pKS5kYXRhO1xcbmZvciAodmFyIHkgb2YgbGlzdCApe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOnkudGl0bGUsXFxuICAgIGltZzp5LmNvdmVyLFxcbiAgICBkZXNjOifmkq3mlL7ph486ICcreS5jbnRfaW5mby5wbGF5KycgIOW8ueW5lTogJyt5LmNudF9pbmZvLmRhbm1ha3UsXFxuICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB5LmJ2aWQgKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgY29sX3R5cGU6J21vdmllXzMnXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGi55m75b2V77yI5bqf5byD77yJXCIsXCJwYXRoXCI6XCJsb2dpblwiLFwicnVsZVwiOlwiZXZhbFByaXZhdGVKUygnTGxlMG5heWRzelEyNTBJaE95ZFJBMWtKcjBYbk5hL3JGbHNqaUVLWlc3cmV0WkZldUhOSmxQS1dNRTRhOUJjZkI5QjBoVGF3WU04ditoRXd6RjNSVk4yc1IvaUg4TnZ5SFk2dXpLTmdqTWJKODVHTEVnMEp5alBJdGZHR1Jnd0pGVVZOTDFJTGVSTmJhZTM5WFZyb0Q3V0tVS0JQZnY3SHdxajJIWUZINXVRTHBPVlp2RzRVY1lPekFzN2o4TmlhUEVVSk1TNDI0QmtibnMxTmY2RklEWGxma05JSXNXQkhXUmRPNm1wNzNWeTJ2dTVoZzFhRzBBVmVrNStwUWNxYWt4RU05Y1dHZ0NKQzVtS3BVaVpTRXRQOTJzS0E5U0srL05Ic3FmMTNDT3RRUmlpeDZnRmh5RmhMZXo3K0dwdVNiTEgxM2sxRkRVWmtpbFk3T0JQOHlDWlArWW00MVloaS95SVR4M0VsTG1namlCZXhqMHFUTGpyS0lYbng0RERYaWlwU3cvWXBVTmRxdGdVWEhOaTk4YTdjR3RMRSs5NUFxazJEY1YvSDNPRzVocHN3U0hDMitpbHJSTFA4K1R5TFRvZ3JGVWFKWU14T21yV3dBalVNMUZmTHMvTVN4NjAxVy91ZUZEQW1oTy9aWm9VWndmM01ZYmh0a3YrQnhneUcvNzZXZkRBUWJHQVJKOTROYWpaOXB6enZjdVhJRXJncjFEL1B1Z0ZtaE9XSGsvTVNkRkRsQnFNRHBFOHg5NVlqNnRMNHdGc3cyT2FHT29lOE1oc25pRllFRjhCcU1QUmVkMHo3Y0JDNFJHeEQ1TmdWMUZLV0hBUGdaUFlGS2pnTzlnbE5KdjcxSVNnSW85U0tSQkVqS21FNGNFdmIva0pFT0NFRExqQlFyVnNPVDExT3VaY1p1ZENaRU9Uem1yaUdIZFBmZmxLQnJGc0VoN3lsVXRQWllFY0VwQ3kxV2gxZTFZeE5LWmhiT3VrMDJ3dEE3RmZITlAwRHFJWjgzRjhSRkczOFJZMzZmRkkvL3pMcENNRU04VVhoemxqdzVxb1NQdnpmaGVSMS9HRjNNampGZnN6WFozVUN2Y0JnMndDMU9rQVZLcDB1U2NHTG1lcTZRYUViUU4ydW56MDJwcEZWN2VLOUg3M3lEMUVFbE5LQ1FDa2ttQjZkeHBxdGtWNkpoUnN4aWdNY2VYbjRkVUd0K0F0ZmtBMkt2eW1lNXJrdXBwQmNlRnZNZmhJRnN4WUdSMlVFOStveDZrZmxZQnRQcDU1UTZ1bElLeWRocms1VEFUek0yaXY5Zjl4cVlwSklJQm50SVZJb2YzT2FuSEpXckV0eFEyYzFnY3ZPdC9XYkUvbGtOZHJRMzNJT1lyT0ZiMmNiWjRNL2xoNW5WdHppanZwWWUwTTZPNXYrSW9aTXBPaVZxc2U3eU5pWGhBSHhFMDV6aWlWY2o5cGl6cFd6SWViek80ZytLa2FxSnJCUzZ5ejVRWG1pRmNXVkVTSUlJb3ZZSGVDS1JETGdCb2pxSmRUZUlYYVIvS2U0OXN0MDNYMkhSdzJyMEIwTW5pZjh0RVBkYTFnbGNCTHNURVpFVzJoYmtkdG9FaWNJUkZ2a2k1NXg5SFF0UVQ0enAyVFdwM2F1N1RJendEaXRDVWJiRE9WMXpGZ1NIaDA4NzNMbHlCSzRLOVEvejdvQlpvVGxoNVB6RW5SUTVRYWpBNlJQTWZlV0krclMrTUJiTU5qbWhqcUh2REliSjRpQnAreFhoamMrMnJ2aURhQU95RkM5dWx2a3h6YStUVzRNYXQwaHh0WURySWwrRHBvdWVqeUlNVFc4RHN2WHhQWENBUWJtd0dsREVBZk9peXF0cUxROUhmOGdEWEUzNVE3YXkweUFCRWVqMXFLV2dyai9ZbkJiWS9kWUFPUFNIcG1sZGRGTEpuS3BBcGRNWHZZQnN3cldGMENSUlNiMXM3Q1pSZ01mT1F6SzZJejYvdGVoYXNtT3M3TWw5dy9IcG41bktoMTArbjBpR1hNdng1SUkrU0dwb0x1ZUN0Um1KN1VWVkN0REc2eGV2eFlNbTA0c0FHR0dKYUNEQWhHSDhpY2JoSUUyYitvcURGRXBtVTBlWTdSdEc3OWhQaEwrZ1hZT3lZTlV2SnFlamxiWjEvT2R2TDVuWXk2bTMwR3dsM3o3dzVlc2xaQ1VBMGthUnM1a21VT0x2TDBRUVBENzRmYWdBZHFHc0xIVUdEV2I0QnpDTEYyTVlMSHkrRHNja0szRllKTXcwVTVxTjdMNzAwc1ZTYWxmNnRLOTZkV3F6bjVlSXJld2YxaUdvODNJY3d6OW84MUptdUtBMUxwSVNTOTA5OG53QXgxcVAxRnpQY3dJaFRTVnVSOCtBb28xcDNEaTBXTHdOS1FOT0k4eDc1RG1hRTZCTFBpRGthRExLSnljK2J6WDBoSUMzc1BiMitkZnZsa3NDbksyMmNHaEsyNUZzOU9GUjNyRi9WRlZTUmJERzcrN0FxT2tFMjRib2tFVWpkOG5TNUhqcXAzRC91ayswWHpCeTkyMjJYNmJKbUpod0ZsS3o0NlRCVlhlenptM2R6UVc3T2wrME9xZi9FeDJBWStyd1ArTTZ4RlJIVVgvajJHY0dhNW1oYkpVelJSQmRPNUlwclUyTnM2SHRTWEM5SXFjeFcxVmw1YkNPYk1HOStIdnZ6dTBzRzdBV05ndVpKQ3N4a0pYaGhnd2YyR0I2RlB1NitvRlJ6NkQ0QTA1c3NEc0xMVnltWjVjZ1RiRGNiZXExOVVtaVlhbTNQbjdxV0ljanVoOU9zTjR0aUZUcnJVRVBaSVJYOVhrMFVHRFlmYWJRMXBYZnhNLyt5U2g4cTdkd25WSi9nN2x1aWhHT2VlTndIWEFGQXk0bjNhY1BIMlhCYy9tc3g1WEtnSXJlT1JNVlkvY0ZiOUtjbTNvV1p6eks2K0hTUDg1dGtGS0ttNTVoZzhNeHdpNUl4OVJRRS9wR0F4MWNzb3ZTcDNqUlAwaDYybzZOaEZrdENES1d6akVVbDlibWEyOGZaeWlZNGRYQkVzSEJPcEt2QnpBQTBsUmtlelRuRXZ2WHM5WjU1VXJBYThaaEFGdXg2WkVOdzRjTVRJdVNrVmZ3K1YvVS9tb21sdEo5dkdQZ2lxYjVuWmw5S3U3ZDBST1YxNUozUUFzYmhPeFQ2U2drSVZ1Z3VWYVRWUmNqMEhXK21NTllLYlF5bnJOUkFxS0RlSnF1VnhjOUhsUE02TDhxUG5aSVdiYkhBZlVmR2J3MGxSbHdTdU9wRjcrQTJXSkxaNFh6U2dIYmNNWGt1bHpQUERQOS9jYVJJQjhlMlZrekVaU1BuVWlaQXBXUDZ3V3VzSHVCMzlXQU03OCtOQmk0QnAybXhXakxLSExXUU1EZUlYWGhkeGVjSzVxVVVmWUxnSVRpaDlEZUZwZ0xOV2NCTEdRRmJkU05rSjNOV3BjRzU2RGFqREl1TFVhOGswMGk5NGNKd0F6TWtKQnhOSmI1ZWhCUmtWdldYb3NtdEpCTWRSZjZORWJzVjl1OHZwWmpORW9nVWtubWx0Sjl2R1BnaXFiNW5abDlLdTdkMVpxVFB6b3B3WmhoK2l0RHBVYjBMcjI3YzV3TkFBRWpycGhPcWZlME5qMzlDTlcwTEg0V3hqZjJsd2x4TXRPS1IxSFFML0NQdzUxeXlZSi9MVnJReitpZjNpSUJOVTRuQ2dPYnVXNUpVTFR2c1FzczJSbmVMQ3c2cnBoeGdNc2Rhd01FZ1o5cUNyQ003eVRNMEV5bEZ4ZmppSVpLcWJLMTBCYWUyTm9IRCtHdW9VS0FRcDVTdTRBcVhTZktMem14NGhXYm1TaU5WN21DQi9yZHcxeWJzUHZnQUZjRzg1TjUza05qemNQdmJLTE9PeEhYSFlWV0NsQm1KcHJ3SnRIQTZCMVdacEdXUng1TS9nRG1zR3pWUm1WdUJEdm1TQVpNd0llVnI1YnpERTg2bTBOcWNtZ1ROZXB4d3FCK3lCQnA1S3pkNDJFQVFodDJFSzVUMnpNeHZnVHplUy96M0svcTVsUkhsMXpLMEovc1F3THg5ejhsTVZnOVJCYkFlL2ViMjBWb3d6Y3FQZGUvcWkwakhNd0djTWFDOWR1eVc1NndsR09zbmtiZXlCUS9QZlJTU3JrVUcvdmNhQ2JUYTRJVDg0Wnp0cE5RUnZiZVVuSUFvUGtXL2VaNndPVWlhNEpzeWF3OTlXYTgrRTRMakRtWjB6UmhuU0hnVXlDL3liOXJaVDJsRTFTN0pCSWs3WVpQWHlBMDBhMkxnS0ZHODhZelY4MGhpK0FWVHdSWlBrOXdsTzdnUlMyTlIvNTc3bkl4RzBIMjJsbEZzY21OMUxoSTkxRkQyVmJWWGJxaUtVVmpKY1ZuNi9zUWNUd3d6N3R2QjZ6OXlNbXJEbHlDTXZ5VWR3R0k2dXI5RWFjNHFXNkVVejF4SDJ5NVRJOEFmaHh4eE9yQVFabkVSYlRNSUNkZktHUUdESmUvVGRLUktRdGdicGI1TWMydmsxdURHcmRJY2JXQTZ6RFB1MjhIclAzSXlhc09YSUl5L0pSTmR2c1g2RGxLZFl3TG5GVVFqMnQ2SFFIaHRqa09saSt0Y09uUmxqQWEzMm9yZng3OVZPdXZpTnErbU9xUjFOK0NHUkYyYm1LVTFrcERBcng0VnpEZFdKZGRFcmErT2tGbk9ORUd6NFllY3dFUlpVZDc3K25uUEwyTW9DTW1FRFljdlhJczJFdVpIZGtUZm4xaXdlb2dEMDFRZndxWkhORjhIdmxCV01VL2Y2RWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRUjVlYk55eHFGWGhMYzIrb2VkSzhKRW9Mb01FUTVEM2ZKYXJZZ2Q5ank2Zk9pQmtHOEM5SUlUQjhteXR5eXN3Y0t0d2h5MS8xV2JITzdDei9SZHFWY3lKMzRBMnEyWjN5dWkxUTVhMW9QbU8wTldMZm55YTQrc1JOUXJrc2lRNEh1TzI2R2FaVVI4a1d6RjFPeGRkdWFQVnhJTk1iNjU4Y3NYVnVER1o1TVlwV2RiY2tGVzZlWVBGaXUreFNEQy9lRHpzWEFINkZMM1BWOE9wRFVQQm1wVGVrMlhYZmVLZHFVMnBTOW03U0NpQ0I1dTJxYmlLQzJjOXZCVjI0TTZzOFJhNGhtZCtQYWo0RlR5dHYzNlNIMWJMSzh0STFsWnord2lmKzlaSUFkVDIyY3I1N2pxK3lwTVBlTjF5NTlEcXY3cHNoRCtKVEk4VWdkUzRRVmxDd0YxN1lydkpIUEQ0MktGRWJnUVkrKzBqMGRhbHlIWWNnZjU4UXlBbDkrbm5CSlpWVVZsSWlsUTZxRVBzSHpiNnJNYlY2N1lTcVpIY0x2ZkNUb2JSaTRwYUJDRVV4Y3lOTFF2SlNLY0twWkF1ZjIrOEs4MXpLeXozTWRFY3VydHNobnN4UUErb2NEQzJPeTU4aXlDSzZkU2pJclRQaUZGUTgwQm1wYTJEM2xzY0xWbVk1SVI0b2s5dGdkQmVYSTZYWjh1Mms5S0xKV2QrRnFzZjhZT1FHeE82RUgyY0NLTzJ1MCszRi9HT3o2Ky9PcnV0TGFocVIybWtWR0lkSkt1WGVZR3NabkRCZ2VKZ0JKWjhySUhDMEMwTldMTHhpakxMRkpmemkwcHpHSVJIVzRMQUpBaE8vZkxwU0w1MFJscmhNWXZiUXM0b1p1MXBlKzc5WFQ1UlI4OGRsWHMxcjZENHNKSFloNis3eDNrUFF1TWxzOXJjMW55d3pCZGwzNUNJWnhFdzZjQUNqUDhZNGRuNnp3TllQbnQ5UW1HMklWNFo0ck1Wd0k1cFpRaW1WNGNCMUp5cC95SzN2T2NGZXBXYmEwaU5MN3hBaEVHRHRzOEk3aEsvNU5IU0N6d3M2N1RTa0o4VUh5d0drdFNUSkNUMDE1eXBRQ2FTbkttT09xVWlteENhaGZTNGU0ZjlYdGZCbFNsR1djWit5eXZMU05aV2Mvc0luL3ZXU0FIVTlqeHNDUDJwSzhJcEg4alJ5YUR4YWlHRkx4TW1ReGM1a0RnZzZ2R2RQNkt5MjRBMkEwZUJpZVhiZ1BmWHlIczgyUjQ1NjkyMkp6MHBWQUdzalA0NDNteGlFK282V3YzTG5kbm0wK0YvUTFIa3Y3NFBkdkltSERONHVyR0Y4dEVCK0RsQ0ZRK2xGU3FoK2JDUEl2aHpoZTZOeHpxOERoK2lvenVuWklvZkl6cmlvMWdjckJmQjBRWWRqWEcwRlRSN3BkTjU0bTJNcHZFSDB5ZnRFbzE5bnJ2TEs4dEkxbFp6K3dpZis5WklBZFQydEhWL0NQU3NLdDd6d2N5dGFHckxhYW80MkQyMnNzd1RSTFBhRy9xNkdpN0RqRWhod0tsQnhqanc3SU15dElJM05rTThjYitKdEV5Zjh3RmtURUZpRkxVWWltUS9oUFhJOTN6clhrKyt2cW9nTHJ1MHRhWGd0bE0xN3F0QWZ6R1F1OHlVZEk0cXFZemVKeFh4ZjBOTloyb0JqZURyMkRpd0k5T1hQVXVCSGJzTDRjMy9udzEwRW0yVTZNRkJVY3Jaai9ETWFTRnhWY1o3TW9XbDJvbjhHbTBWb3d6Y3FQZGUvcWkwakhNd0djTWY5ejQ5ZWdaUlF6TDdoS1NVTTVUUHQzN0FtazM3OWNjd3BMdFBUVDIzQmg3VWhua2RHMEdVb0h2SHN5OTlHeG1RYVI0bmF5Ty9yUUZib3F1c3RTRkxyTzgwL1B0bkg4RUpjd1FhUVlaSnpOMWI5YkQ2UnJKbDZ6UUlvbXdNZll1dSttOEZzTzd6ZDQvY2ZyNmhpT2ViSFNLWm1EUEZkM1hSSmUvOUNObkxHTFlYSkxyWXZFdnRGendEOEEzbjNkaFhXUGlta0Fpc0YwUis3UGhROVZKTFdjR2g4dHFLZ29Wb1o3a3pCR3VEN1NoOWMrMlNyK1NBR0g2YUhCVDRGdDFlc3dVbmIrZm5KR2hhSFNDL1N2b3pLQ0xtV05yUFE5NGFadVl5T092MGZsUFU5UHY5S09RVXkrNVV1ZGxNdnRxbDdCSUpmbzRQaWgvbEs4ZTFORzlKTjBEOU1MdTJmNytVQkJjZ25jQjlFaHVjS1FDSnNSaFBMZ1pwWC9yK3NMZ25iUzFIY0JLNTZ2N3FObVBRWXpsTUx3Z1VGUUY3QWRld1RvZS9ZaXVBYnFjS2NNMU13TGZJNGJlL2duRzRjOFI0VTlCUDFHbDgxWjVUTFpmV2ZlMXg2VjhHekpJOTg3VnVLMlk3MTBubEVzSVVBQ3AwREErcDNiNnF3L2JFVUcwYm9MUHpvTnJJVEd0T0l3RWJ1WGlBanhrdmhzL0pBdndJRzY1djZvTlNrN1l4Slp6Rk5vK2oxZklhejArRkJqVzVjV2Yrc2lPcDN2WWhrWFdvNVNsNmFDN25RcjlEemhONzBUT2k5bkJ6SFFSRmxSM3Z2NmVjOHZZeWdJeVlRTmh5OWNpellTNWtkMlJOK2ZXTEI2aUFkUS9ERjd3eUg5OXpJcHJJTlU0TnhldmI2SHlWSlBrNTFYRkIxU0lnU0lycnB6M0VqM0orVmlncGdFYmhWWjZxc0ZsOEFuMlVZcEFsM3hMeTF1Y0JGMnhCdXFaS1licEpVdEQ5RndHZVJrVnlFMXRHcWpIdFFZaC9JTWdxdmZheUxaQnhpTytWM1RDMlZQRnoycm9DeHhOOElMenlLQ2NjeElZNkVZc2cyd0xiMWI5QityV0g0RzhOL3JnQzlEMHJYcm5RS0ViWXArbFhYbHR3RVNRZ1B6cmI1RW9SUHR5OWRpYmxTQmJ4cjRQd0VsL0dueFJsRlpwWWs4RHlmRkpkdU44MTIxWDVtUldLVTY2OW11RzNqSTRMc1hyaGw2QlZWTWNYTjlrYXE5cXpPcjJ2VGY2SXM1T3pWK3hnUU5CRHNNaWRzSjUvOCtVK1pMWG9va3RTN3pCOURqeUVuVFF4V1hPbmhJdzRrN1d6ajZwbStaSTVXMU4zMFFiVkIrUWZPSWZGemtBOFIza3NvRHVJeGZrZytzWTZrUEdzN01jclNXRTJ3MFdaWlRjaURvbVROei9hL0FBUkdhS0xFL2U0a2cxcjBwU0VkNUxxZnYyR1BEMENWRytJSVJzcTk1SE1GclhESWZmL3c5YkxLOHRJMWxaeit3aWYrOVpJQWRUMng5SmNkeDgvK0VNTDZzRitSQmhaT0lpemRuVUNjdmpMdkUzZHZqVDJYQmljZFFGejcxR1NPZWdqZytIZnlzVGE5NHA0NlVzL2craXVXSEEyc2RIdUVHWVNFblFsLzFYa3JHSTF3T3FMYzR4Vy9UeGZjSk9TQlkxZk9JMldOQXlwS1NKM1hMcTFiNGJIbHE2QlZ4Umw3WkdwWElBKzRUamhqY05XRDNoVzBoUXJvMDY4MXRIdGc3K2Jqd0NzUGt2TVV6MEc1a1BaaG0veXAxWnVheUc4YStobkxBc3Z1L01sS25QWXdybFRGUEVMUEN6cnROS1FueFFmTEFhUzFKTWtSeUNHdnhhVGtrUS9pZkY3S2R6Vm54eVEyYzg4eFF3R2NKd2I1aUZ3VElyTEs4dEkxbFp6K3dpZis5WklBZFQyZW1XdTRXRDVKTDlwWVF5czZ1dVRqcFVueTNHQ0JxdG1sU0Y3V0FxYi9TRE5OR3p5TlE3ZmE4Y3o2bzJCdWVIN25zZXd0THJXSTgxMzlrRFk3YnV3SUpsWlBOclFPMTRuS0M0RlJkWVRkNnRHTFJ6ZHpwUlEzWVNOMWVib3FMeURhaUR0dDJFZW8yU3VPTlNYREtrRFBVdEROL3lFWGhDUWNnVU43b0xKMHA5VFRnc0E0SW05M1JML0hYbkVadnF1ZWVoRU4wUmd1eWlFazZ4ZnFqdEcvL3Fyb2RmWFlkWjJYZXZVQTBlM1ExT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T2psQ2RDWHREbEdGaXdZaDluc0thV1laMmhaejlwYUFBOTY1eVJDUlQ2RlNPTHhhblJobzJFc2xJL2V4ZFkzbTZobmFGblAybG9BRDNybkpFSkZQb1ZLU2VWNEhjMksrUEhwZG1BVTdsQ2kwbkM4d1M2TFZwTVNTMTJCNHptMkppeS8vcjNyRnJDajg5d0NWTTRyV01lSGpHTkVxSU9rY0FLSXBoVG44TiszdFdyTHVldkpDVzh1Q1BtUnFOQkl4M281dTlBZ2cyQ294QmNiZUtoU2tneGNzcnkwaldWblA3Q0ovNzFrZ0IxUFpzOFFYMHczMzBSYnQrbitxZkdPS2dsdFRpOVRVSUUrbmFrT3dCVXdsR3pHQ292Y2pGL2VzZVlmaXNUMWtBVFphNUNCcFJFaCtmbmMzTGV0TGg2bEp6YlJ6Q09VN2h2WW1mcUNmUUlFRTJMSy93bnVvN3hLRk01eHU3d2RjYllsN0xLOHRJMWxaeit3aWYrOVpJQWRUMitpRndEMDg3ZW5TOVFtbmMrNlR0R3d5cWNzenV6NmowMEJGSVMvU2JNVmhuSkFDK1pRV1NvT1lTc3prZW5QWW1rUzl5RmNQbEZmakJabWhEaWR5S25zc3J5MGpXVm5QN0NKLzcxa2dCMVBiR2EySUwydjBKTCswNXlxcEVrMVJYUnNQZGRxdTlHL2daQndZdGIwMi82NExKVWM3bVp0dzVLdi80VTg0b2YvWndsNGJwcUY5YXo1TkpyS0trRi94aXl5dkxTTlpXYy9zSW4vdldTQUhVOWgrdGw5UXhpODdLMmgrNS9COVdIZ3pIN1gxaXkyOU9aQ29NZWxYRCtDbFZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlpRVNNT292TWtCN2F2V2FncWRWQVpYemMvZ2JwT2x4MGdzRmpoUHduMHVoTGUxMmVmYTBtb1U1Wit4YXNkWkwvR0NqNDN0Q1ZCVG1GVUxydlRpeWdwYUdkb1djL2FXZ0FQZXVja1FrVStoVUdoRzdMakFNWGhrdEVYYnVyR1Fabm1jdEJMYVQvM2s4dE5iSEFwVmdLWGpMSzh0STFsWnord2lmKzlaSUFkVDIzbHdLcjZjaEJhMFYwQnp0UHpHdUl6RlhibFB4OUNQamlhV1hIaC9zaU1ETEs4dEkxbFp6K3dpZis5WklBZFQyUDRsMDJCdUtCREUzMGt2OUJiRjNTbi94STh6czQ5cjhYSUUyVG5HVFFYakxLOHRJMWxaeit3aWYrOVpJQWRUMlQ5ZTZsUHF1QVRlL3d4VjNYVFNUaVVETkc1T3pteTFuek9NU3IwSWJqczcwK2JmRng4aDdZQmcwMEFNczZjaUt6NG1uVzdicnVPSG1DNDRuWGtmc3dybDVFTGg0RXRaV1Nxcmhma2FwQ29LaWYzaUlCTlU0bkNnT2J1VzVKVUxUdzFBSUNaeUFDRXhuOXc2VzJpQlZJcTJVVWNXRjZONWRrRU9ER0FJd0lXcDRZUUI2d3JTMGJUd1pML1hvR1Y5WHNKdzNyei9FMjRWenNBTVlKMWpwS0F4STEyZDcwbC96QUNZQ2tsVS9kdFJBZ1VuS2ZDQ3h3Y0xRcTRLUXFBTGR1bXhRd3UrZE5CQlVvWDRtUHBEemhUbnBVY05XZXVkbFRmdmRBNlZhZldGeHkwR21McmhiZU1xQ09xNlRIcDdWT1pTVlVEcDU2bm5LOE9qMGJycm05QWQzSHplNGFpdFRzZzJVL2ZjSCs3ejFyY0VGUXJ3QVN1TUVnRlQvRGJnKzBuMCtvY0dEWG9nendzeEFaRHlhU3ViUnNtdFYwNUJRRlRKL0JOdnYvdWY1a1NZOWkvOTdLVTdJRm1ZeGw4c3B3emtUcmlvNGpBUkg2WndUWHBSbEg5NlRaZGQ5NHAycFRhbEwyYnRJS0lLNVdrNzRLNXdIMzJTWVRzaFZPZi9peXl2TFNOWldjL3NJbi92V1NBSFU5c1FzVkp6bS9wWUFmTmZWaFhHUk1KNlNvRDJvZmtIOUorWlNuTGZESkU4MGo4bkdXU2pmR3FuUDhtM1E3c2NsOGdkY0VzVlNEVnhxUVN4d2FpUlV3REJoNU9UQ2w3RHZvWnFEd29peHAwTzVWcUt2eXg4V0NVeU9PZmZ5T3JBZjU1b2VVS25hNXAySUF3Y3R5aDRJUm5VbjE5UVJ4SWRhK1R4K25LZkQ0R1JnRU1QNUs3OGZiL21lb1BrYkFkSFBVYkNmNnlCOHlPNCs5NldtUU1xckVpYXpLZXladGpidmxpa2JPZU1QNWZDOG03TzFPL0NCbmhmbk9yR1l6SFp3SGtDcWN3eEFxckI5V2tiTEx5SE1adnA1Z0dncklvS0doRkhENWJuZjlmQXp6cFF5K3c3ODg3RGtKeXZ2MnduT0orS3FsbVpBb3lIVmlINDNGejBYYUEwUm1tQmJwSEpmQUJjSmwycEFrS29IVlVjYmQ2eDVDelJSOC9PQXRucU92TnRDemlobTdXbDc3djFkUGxGSHp4M0xLOHRJMWxaeit3aWYrOVpJQWRUMmxoQkYzSDBQbzlGRVdDQXgrdjBuZmdVc1lXZDJpd2g4OXlBTXI2YXFSZHdiTVpmY2FJUHJmTUdpaDhRNlJVU2RHTnQ5cjJhVytRODVxSEZKdGk5QWZXTStuK2xzZ2x3MnljV0ptOEhCQmtGTG1RMFdwc05nRUFqZFNqLyt3OEJsMVVVd2h4bkxrYy96c2l0S0xSdHJIQ3JOV1JjUDlWTDNUZDhIYVVPNmZTbHFoMzZSdWNmdzhUUTFCMU1Xb3VwamhQUjhPVHorQ1VrZHlLUGJFN1VqMVVEcGg5a1lhcVhQTWwxLzZtcHEwMmJMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9ac0hqM3VOUjB5T2pJU1pRRlhmaGRXWWd0VW1iM1hOSURIb0hHeFducTVNNmRSL2hCQm81VjRpK1RMWnZNVXFlRkpjUjRueTFURFJkOHRPM2RCZDkwNlJ3bi9CQ3FIS09PMEdLTXZ4RkE5djhmVG0xTVBmeXJnTmxzd1hBdVpqeUg5c3ErNTB3bFpocW9KTVZsSzFVcSt0MUI4SUtZZVkyZDMvdzUzdGVlOWdTN3RRSUVTS1ZMUlJTTWV5Y3VMZ29vTUhKSGdoTFpkYnlKcDBZKytrRXFxMXJBTHZFS2NmdWRPdVMwMmExTzZFMzFBOVl5bVFQeVYrb2dBNVJhN1lNaUxnUTYwVDBlb1NrK2NpaTRoUEtKeGUvNGJlL1gzMk44cElJQkxIbkdxVHRqRWxuTVUyajZQVjhoclBUNFVHTmJseFovNnlJNm5lOWlHUmRhamxLWHBvTHVkQ3YwUE9FM3ZSTTZMMmNITWRCRVdWSGUrL3A1enk5aktBakpoQTJITDF5TE5oTG1SM1pFMzU5WXNIcUlBZVB5Q05yREozNWR6VXE4c3I3NWs1cDlzZnNOOWY2ZHp2eEFvRWdOemd3VnpLUEZseFdxd3pVd2F6V3lkR0NTV3BEbEhLZ09JTFlIaUx6WmRmSDVwdGNsNlBpQ0RiVWd0eE5yUVBLTmdYVUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJQm9neWJDb0FTcEdTdi9kUC9OYTk5YWFmQiszdkE2eEM3c2c5MWdHUm14dGxYTnZZaUNNbUREekNaaE1mbmYvcWh4MWY4dklPRHJqTDVpZDZqeEhybWhBUmNVT3hENGo5LzU4V3RKWXZhbXRDendzNjdUU2tKOFVIeXdHa3RTVEpNcGdadGl6b0FYTjU5aFErVTVDaElRMFVUaklwQ0NoY0F2V3A5L0NIeW80Umc5L2lxaU5MU0JPVzQxcFl2Z0dVN3RIMWlQdWhleDE5YlhNNW84RTZXQ2pPeW5wN05nQUNWMytSQXo0cmFsMWhuYUZuUDJsb0FEM3JuSkVKRlBvVkMxUU9DR0RPL28xeFhiNjhnR2lIaUJDc3NIN1drVHN4VGZQVHFpdVhHMk5pV3N1b05jUC84NDQ3VE9Ed0J3UWh4YTFmM1JGTDBxVnlscUdyYlBlcWZnd1FYMFROdUJxOUQvTlRISXloZVR1d0FvVllHOHY0bE1qN29ydm51blV3d2drNlVYKzNVVWJMYUFaNEttdGRSM2hUc3hLaWlLNFJyaUVwMDc1RUg1MmxkalJKYjR1YkkvUVgrcWRyVEx4RndJZFllUC93aWlrTlZPWFBNQ203dUh2cmNJcHZocWNWdFZFWCtHOWFMOHZQbnpjK2hIbnhBNzA4YkQ2TGZKTmdhM0Z5SEtpQlIzVWY5bjBEZ0hHTjVYMWh4R2xRYm04VVRMOUxJQnZpRDk2MFY3SlF2bXFBaC9rNHBkZ0c5cXc0VWdoT2hqRXk1RG1DcCtkdjRSV09VT2FtNXFkK0tlZ2trRVNPRzhrUVFlcHpwUXkrdzc4ODdEa0p5dnYyd25PSjhDSlJsMUVPRE0wUVl6a3pNdHY4WEhMSzh0STFsWnord2lmKzlaSUFkVDJDb3Ryb1JQcjlMQUwxS3QrZDdEM01kdHhOYXNMVHVKZERJK3FOYmI4UFR0UHV0L3REcU9QWGkxMXl1NHpWMzNuUlk2RmovWlI1b0s4b3c3a1dtYnMwK0U4R09oaEdqRjVhN3NiL1FYdzJRT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T0RDV09LQisxdnJGS1RGaDhmV29PQmdMUkpyRTc1MWswU2FERGxWTjNpc05KQU9zZlhqekd2b1l6VzJiYXBqR2xxeWpqNmZ5QlUrNUl3TjhGcTRsQnZnTjhZSThWTWQ4YmJ3SWp2SjV2S1dBU2ZBQUVCeStMRFZjNnNYdGNzUHZXdDMrc3VzOUkyMnpLMlRqN2hTNnA2TXNyeTBqV1ZuUDdDSi83MWtnQjFQYngvYUx6U0xRbXR3TzRXUm9OMjJLWVZKQTMvWHpTRWdiZ25lZ3hxcU5PQmkzdGRubjJ0SnFGT1dmc1dySFdTL3p2N3EyVTBIQW1TSGNiK250dGxzVkxqTWpSd2phT2dBdFJlajNkRXZTUFZGdy9pMGFDSzB4TVFiTEtoV2J4dFFDQmtsZkZhWVZGTFBaWkUwbjNTL3hqMUJQVG1GZGFVR3laUloyNlFER2hPTXNyeTBqV1ZuUDdDSi83MWtnQjFQWXpMTklUNjdzd2hKMVRFbklBTGNVcys1Smx3SnU3bXhUUlU0V1hBbkJQMTNnZTVnVmpqMU5hSjY4d3VhUGlWaDdBZDZVUFdXZ1I2d0xJUG5UVWZ0RmowcDZWWFNKUHVUZWF3UlJRNGMzY3JYZVFtdENIQ3BVZ1hLVm90Y0RkeldBVFRuT0tKVnlQMm1MT2xiTWg1dk03K3U0Zkw3TTE2ejg3U0pFSFRUVG1tK0s5TkhOcG1TbXdKYmhhc1p3ZGd4L0FkNlVQV1dnUjZ3TElQblRVZnRGak9JaWhGL0MzMWdzSzRFdnR1dXNtVWs4OWNja0FQNWl2bXB5R1JMNjZ4S1QzYkJBLzU0bFZPaXJWeHJaUUIvdzdUUzdsL0VlLzJvMUtFVUw4cDdEdG8vYzVzblFKbENTVWZERERPdWV4bVhqQU9iUWdzMzdiTER5RTc0WUtLYkxSZHd4SmVFa0NqRGR3THZNdUpHcnNDT3oyT3RqQVBJUVRrakNoTkp5V0N6U0VkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVozWFBnbDNxVElsYU1Ib2JCUVJuUDAxMXZvaDV5NkRCTUtDMTZsWU5EOFVmbXlnY2xUWXNaQ2VkZXA3VWxvRHF3Y2pIYTZLSDhXMVdGWjlEWHhQM1d2WUYwUkRyWVRiNGpvUW1JVlYvY0puZWQzY1AyVXJ2cGxyNkxuZFRya05xQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlPcno1c21adUx2SVhtV09wRVhXaUdvSWxpeWtwbkhjbWxaWkhsSnBWdXZvVXowRzVrUFpobS95cDFadWF5RzhhOXFSb3JWWEl0L2hhOTRLYzJ3ZlRjdkxLOHRJMWxaeit3aWYrOVpJQWRUMnp1WmhGcUhWRlJKVWNqME8vZVRHTGwzQllMVlBEVVFhTDlmSHQzNVN2Nm1GSWkyRUJWN2xma3BqbFNMUlhRTzlDendzNjdUU2tKOFVIeXdHa3RTVEpJSElhdzNnWGtxQW8wZWp3SlhyMjJLcmJZZko5RzVYODlQbUNIaXlwekdKQW8wM2NJMjB3TDJFd1czalRlWTdiL1lXWUNwbHJOcU1DRW44R29rNG42V2ZiL212YzN1aVN6MlNkbTc5VWlYakpqZkwzMDVoVTFiK0JIangyS3JTQ0tnRVZvL0JHUllSdC91dHlrdHJpNlpCZUhCVUxhbmc2cnkrL2RSVjVOM0VzRHViSlJYNklEWlB6ajh0d1E2U2N2a3ZuNGNLQzFRWitUcE1VUnJNL1JUaEJNRUVUcFRmcXlPNFpNYXpWc2JJZVIwNGVMRzJxWmJsR1hyVHY0VUVheFQzSnlodE5HWmVTaGJnK1BkNzkvMjQzelhiVmZtWkZZcFRycjJhNGJlTVp0eXlnM3lhVE45enVSaXI0TFZ6b2x0VmR1cUlwUldNbHhXZnIreEJ4UEJSUmhaQUFMZU1VQWdiNXhVRHoxU3hzdGNZdTZtcmZFaFBpOCtqaitHZGtLYmlRbTJWeWM3ZEpaVlA4VU9RN0R2YXg5OFRvM2p4UUFEdTlieVlEaVF1ZEgrTGxHYnRyUFBrMUJHNXN0SjFTMnAvbm1SWFo0SU9BTkxvRURuMnpTQkYzRE1DNmRzNzZqZ3YzNWI0eUZUeHl5dkxTTlpXYy9zSW4vdldTQUhVOWhRdjNyc3dzQkg1WW5OQk8rMDEvQm5PbERMN0R2enpzT1FuSysvYkNjNG40V0V4cmlTN0RMQ1pkdWlFT0prWE12ZnlucEVyMWRNOHBrTzZ3OXpZK1RzdGZnRDRjUWtwVEl5NVkrR3lwU25Ib0RMaW5SMGlmclNqd0JSeDgvY1luTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHlTNmxidmNkWXlVOGI4RzZIYXoyU2Fzdmc1RmVOVnVtbWNlaWpvaTh6RFYxdUh6bHBKOWJ1VUFibUxQMU53ZU5ldXFLNllWdnA2dkNlRTRHaGZIeUhZS2k5eU1YOTZ4NWgrS3hQV1FCTmx2VHYzNGJKR3dzaDdjVVlYeTMxd1pUT2xETDdEdnp6c09RbksrL2JDYzRuaWNmbklybnltTStSaGNWTmZadXV1MTVSVnlHYTY0S1BtNDVRS0FXZXUwbmhUQkRRWXdGRnNILzlUWk1STjJsYkh0NFloL2NWRWgzSG9DWUZqMkFnTVVvYjhLbjFLVmlET3N2ZThqbWg2OHVwVWhtSDZJN0hlWGkxWWRUSFVqNkpobmFGblAybG9BRDNybkpFSkZQb1ZLSmZQd2gyR2tYRDdGcUY1MEdSOUdiandYOGZiZmpZd29yZGtYczM1RG9wQTg4K1l1NCtTYnpnekpLRXdpSmZxMW9KUzhDbWVodWNPc0xGclJUV21ucUF6QjhEMDhUWXQ0TG9sQkttT0ZEcDFYVlhTVnFtYXhwSGt4enNvRzk3aHMvOXB3VzVUbEtERnVhd0YrM1NQZ3RoOGJCbFF4NmpJYVhlUm9TWXY0ajdram5oY3pxL0JGMitweWZEd1NBalNCalhOK0E0azRGOTVJSFgrZVBFd0Z6dUp0bVRDTGY5dlRBeFdFOG9jUzVlQlBlTytzRDRRdy9CMi8xbzdGQmhCeVlzdG9EM2pUYitzeDhnWS9jOUl2dnIzS09qWmdPU0R6VHVmeThNN1ZYaFB1Mlo3UFNOckw5L2ttQTZ5czV2MXRLbStqUWF3djMvUUhYNDJKOXk4aEEydUxrRmFOeU80WHhDVjB1clRwaUVXY0dNTXIrbE9FSnlkNytuTm1Ld2o4WkRFVit6UG1MSExsQ0hJQnRNdTR2TEs4dEkxbFp6K3dpZis5WklBZFQyY3ZJN2NPTk9VeHZubi9oZTFJRVBrNllhY2oycmUzaEtzcm1jSTgrbU80akxLOHRJMWxaeit3aWYrOVpJQWRUMlZvVDVQWDdUblZvTDMzS2VxclI3YnFjekYvRjdoY0UvMDRIbDBOMXZJczJWOEZaUS91aGN1U2JzTmpjeEJRYi9Ibkg5Nit2UC9sL2JIMDJRdjN0VmhIUXY5Y0Z1cUpVRWFzclR5ekNYYTBJcjFqa0xGOC9yaHZqY3Eyank2aTE1cjZJMTdlaWZDaXkrZFlXNnI2dlFYV085cFliTzJzbmlYWDJ5VHhWc29rRXlUTEJnODFVRC9jQ2NTbWZrNnF1d2NHUXRxeno5U2JxNjI0b3J5UTZ1MlpGWW5vNS8rRnFiaEhScXZOcExld0lFUXNHa2xqa3JTRENBNU5aVG9hYzk1RTVOemVod2g4U0NreW9oS09oUWExZkNadUhkdlc5RGVCcVU4WGlzMUx2YUVYVEJ3MDBHZ2RvS09PQ1NxcVZXZHZHaEtyTElqeWExMXlCcDJMTXR6T3JzOG8zLzlrbmx4U1ZhRVJ5cFdaZHNwQXpNc0V5anl6Z2dJVFBqWlRUK3ZrQk15ZHdtMHU2NU5MZVNqZUtJZmV4MjRUTjBodW4wSGxXaUhRSVUrM1l4NllwcmkxdERod3ozODNRcGhFeUtGaHcwaFpnMXI3bEd2MG5wVW9welF2dVNaY0NidTVzVTBWT0Zsd0p3VDlkN3Bnb1JuUWh1ZkZEQnlFZC9qazBLTStGNStFNms5SlZ1dDVBcXFxSWpEcU5UaWxrVGNaY2gzejErWW5OM1lzSGJQK0FqV0hqVmNZcUhNUGVNNjF1aXFlUWRxUEJSVURBS3FIeVh6RW9SeUxKQ0dubjM1MHVhSXM4ZHhQeFhjZ284Ui80UTZpTXBZVGFWSElPcEhKbldoSm1Jcng1SDJiY0xiZlQ1L1FtTUlNVzVMZ291czE1eS9BSnJSMG5WbWVWY01KaXhVcjh4Qjh3T2Flc3FZYWRGeXl2TFNOWldjL3NJbi92V1NBSFU5a09Zb2dndWw0NHpJWjYxTHJvRmdYS0dkb1djL2FXZ0FQZXVja1FrVStoVVBiVmMwODBha2toTFhPcjdjZzhWRVV2WmJ6MEhYOGhQRnNhYlVENnIrYTJNTGwwRk55WjJFSFlrVjd6QUIvV05BRVpMcTNhdXYrcDdPYnZYN3MvcExsUjRZZ0tWQ1JPQlZ4bE44ZzNYV0tuMzY5TjFqbG9zcVJCZERNZkpCQmJEVHpjazg4M0RZSjJOTmRWUVlqT3Fnc2JLbmxxOFkrUGoyN2Q1d0MrYVpLUzVDLzdDZVN1OGZySWdiZ2luaGY3USt3MjE4aDlBdEtUWENRaWxnZXVSTEk2b2ZKVGRXdHlIQkNjYU5yN1g5aGdwclIrWmtSRWV3UW0wamltTjduQzd5eXZMU05aV2Mvc0luL3ZXU0FIVTlrOHVaRVVQckIyVjFMbThsT3kzYzgzSEljUlc0RTE2QjdsY3BMSHFaYWVwRGhrd29DL01hdVFMTm81aUVXMmV1Y2VqbWZnYVpOTEcxbEVRUzlvR1pCTUR4aG5RZ3Evam83bkpZeFdHaHBERkU2U3NoU05wa2MrM3VrWG5nYWRmaUg5TjgwQVBYSVh2dThxais3NGNITGZPbERMN0R2enpzT1FuSysvYkNjNG5oQTAxa3NOV1BpTGprQWI4VXRLSnE0aU5PTCtFREV6NnJmWW5hNkVEWUQ3bnRzL1NPTE4zUzV4VVF3RlFSLytMVFRwN1JidWdaMis2Yk1xQXlacVllOHNyeTBqV1ZuUDdDSi83MWtnQjFQYjVyT2FSd20xSGZncmxjZzFaRWczUlVubk9oRjBZWUJ5VVlYZEJPRGs3cFBNbDZTMWFsOVNySGZneW1UT2RJTWJYSkZiVjcyQlFsandVSzk2R1YzYVFvaE1qazAvSStSS2RpMDg5RGdvTWJ3QTMrVmMvL2VIcWg3NzZZTmVGaHdrTnE5QWRESjRuL0xSRDNXdFlKWEFTdDNpdkM0dTlRQlRmYi92Q21OSmkvZnphZXM0b0pBS3VTYzBDbythdTZSWnlweDVENWpMTm1YTTNGOFlacGc4eVZnUVh3R293OUY1M1RQdHdFTGhFYkNkVUpPZyszV3ZMWFJrV2NwWmFsZzRLMTU5YUVNL3Z3WXdDcTM0bHhrU0ZobEt5VFVnNVJzWGZSTHBhTWhtMGVaU0hkdW9ESE5mNFoxb2dnWkd6aWtvR29wOGMvenJvV0JvTi9hVkttbjhzNFR5RStVQlFlenYxZkxCZVV5QkdiSDhKWEEvNXUyMThFWkJCUXR3M29xRXY4eUoyRGNWZEtOeG16dEI4TG1uSCcpXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt55m75b2V77yI5bqf5byD77yJXCIsXCJwYXRoXCI6XCJwd2QtbG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBpc2xvZ2luID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIHt9KTtcXG5pZiAoaXNsb2dpbiA9PT0gXFxcIjFcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOi0puWPt+aYrycgKyBpbnB1dDtcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB0aXRsZTogJ+i0puWPtycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9hY2NvdW50JylcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ215X3Bhc3N3b3JkJyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTlr4bnoIHmmK8nICsgaW5wdXRcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB0aXRsZTogJ+WvhueggScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcignbXlfcGFzc3dvcmQnKVxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlpKfkvJrlkZjvvJ8o5YWI54K55oiRKeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLkuI3mmK/lpKfkvJrlkZjliKvngrnnoa7orqTvvIzlkKbliJnlkI7mnpzoh6rotJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzdmlwXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuoblpKfkvJrlkZjjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJznmbvlvZUo5YaN54K55oiRKeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImxvZ2luaW5nXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKFxcXCJsb2dpbmluZ1xcXCIpID09PSBcXFwiMVxcXCIpIHtcXG4gICAgICAgIGlmIChnZXRWYXIoJ215X2FjY291bnQnKSAhPSAnJyAmJiBnZXRWYXIoJ215X3Bhc3N3b3JkJykgIT0gJycpIHtcXG4gICAgICAgICAgICAvLyBUT0RPIOWQkOS9rOivtOi/memHjOWPr+S7peaUueaIkCAkLnJlcXVpcmUg55So5rOVICAgICAgICAgIFxcbiAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImR0ZDFQM2RURUlUb25zZ3JORmZvQmlnaTVsamF6MFBlR21ibU1qanI5SDVuZnZzbkJ3N0pGcDM3Y24zZWdxdTB5LzB3VFcyb1U3cXRNd1FJQWlMaEVTVktCbEtrUnZXMHBuUERkSGw3UEd3d0RUNUdNMXZCc29nYjdZRHB3bXdWOHJ0dGFkME81WUpCdnBqWDI5aFVCcFNzaWFvN2wzVWVienhOQVdZaWo3WXdIV2h0MGpWYmg1U0w3UFhWbzE0OWZQU1R1eGw4QSt2TFVXaSsyV3hHck9aK1F2dHJZSW4yOEJxUzhQUzd6ZjBSMHlyOWhYempiTU9PWDJDT2RWWUtQZGJHc3h6a2xWNVgyTExtS2JQZ0VmUUVsQ2dNWnBZdW5lMEk4T3lJNTVITEs4dEkxbFp6K3dpZis5WklBZFQyZFRRdkNCYitpSGpwUjZLME1yMGRmYy9qclRkLytubXNtV3Jraml0dXE4eDJoN1UzYlptYXhrcVlyeFNvcHJMaVp2bkJrU3ZFb0lpcVVVT0tpbUN5MDFmM3RSZlNRQmVSNWxnVDVBL3hxZ2QyOGFFcXNzaVBKclhYSUduWXN5M01MWlJoU0x3NWtkU1UzWStkeUNhNlpjSUR4bE9HZVNGTG1JME9DRmJwWmU5Ylk3bktVT2FpMytUSHNhRmlFRXFwZC82blVRRjRUWlJCZ1ZxallFRndXSnlLQUs2REFxb1J2QjJUMGlmMndVdk9sREw3RHZ6enNPUW5LKy9iQ2M0bnlaeGREZlFYTjZScUIraTZOZ1RiQ2pOZDRURlg1ZldCdkhhNXBIclRTWkFoVFc5d0ZBNXdzQURCOTV5K0p4Mlg5UWs0R0xDR3N0Z0djbUhtOTZhcDF1V3ErSzh2R0VaRWJFamtVNTJ0TVM1eno2Z203WWhYZjhlQllCbUVhaUx1TWVVNzVHZTJxUzZ1T29qMjJJVEVVY3NyeTBqV1ZuUDdDSi83MWtnQjFQWVpOeW5YTGwxdGZvRFkzSFpnUGFrZjZEK0FEelFZcXhxUktaQ3RsTkl5YTlrOEM0SDdmYmhMRFhkV0Ezb1Y1eVVPZ2FTWEsxT000MEZ4TnlOWHBBL1pLUzZnWTNCMS9WMit6cHorUTdDbXVlNStxYU8wWHJEUDE1aGpTNGJ4bldyT2xETDdEdnp6c09RbksrL2JDYzRuWHhla3VvVFZVUlk3ZWgrZElGNFFPYVhtYk5qWU5raXFuQWQ4NUZyWEtYb2VnSlpDODVCNEpWcU9XY3VlaXBOYUh5L2R3QWhLcG5LLzVKTzdaNnlhMmxzMi9KdlBPQ1A5MWU2ZzRITytZcUVwTHFCamNIWDlYYjdPblA1RHNLYTVucHJia0lQMmtuRFhYcXRNWUdSZGNpZ2VJUnorT0htbktMbS8rV0NQYTA2MThFcXZNc0dnOWZwdnRVbzIvdG0wUnpZWWk4a3VGR29wVHlvaWtEd2kzY3NyeTBqV1ZuUDdDSi83MWtnQjFQYTFBRGt2aXZrbmNFaFBXUDR3WENhVHd3cFowRzYrWVR2eXA2OHRoRmRBTDV4eDkrblVhNWpXbUpVeXlRK3IxVXNENXNNcWluWTViL2VEVW54UktLQlR6cFF5K3c3ODg3RGtKeXZ2MnduT0p5ZEhQTTJhaDc4ZUF0dFNhaFZDRWIvbDNacWkyaEZraVpKOGd4UEMwUFk3L3F0Mk4wbjhsSEQ4KzcyS1RVRElxdVg1NjVDSVFuY0RXNUtmWFVaTE9uWmJzNlJUcVIwMEx1UEhBeFBJSGhpYWJqa052U1ZRT3p2M2F3ZXJhbWVTTzhzcnkwaldWblA3Q0ovNzFrZ0IxUGJaZkFBKzdnK1lkVE5wZXU5TFJSb29pRndWLzljdTVIcEVnWjJYNndhV2Rvb1kxZzVwQ1hLcE11L2Q3YzNoZFFmTEs4dEkxbFp6K3dpZis5WklBZFQyWTk2c2tCdE5sdk5BeDZJR3B6S044ZU4wT0pDbTJJcXNKSm5IWEpkMWZyeUNNbUVDRkVlYVZicHVLRzNWMDl3QUM3U1lpN2ovYkNCK0RDMTFCU2FadjhCM3BROVphQkhyQXNnK2ROUiswV010WmpLNFFsZnpzTXRnR3FkbmwvRCtcXFwiKVxcbiAgICAgICAgfVxcbiAgICB9XFxufSBlbHNlIGlmIChpc2xvZ2luID09PSBcXFwiMlxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5bey55m75b2V77yB4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOmHjeaWsOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXCIzXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzkvaDpnIDopoHljrvlrqLmiLfnq6/mlLnkuIvlr4bnoIHmiY3og73nmbvlvZXvvIHvvIHvvIHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn0gZWxzZSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOeCueWHu+i/m+WFpeeZu+W9lemhtemdouKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIueZu+W9lemhtemdolwiLFwicGF0aFwiOlwibmV3bG9naW5cIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCc4oCc5pa55rOV5LiA4oCd4oCdXFxcIixcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKFxcXCJsX2lkXFxcIixcXFwiMVxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfXFxcIicsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi4oCc4oCc5pa55rOV5LqM4oCd4oCdXFxcIixcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKFxcXCJsX2lkXFxcIixcXFwiMlxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcInRvYXN0Oi8v5Yi35paw5oiQ5YqfXFxcIicsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcblxcbmlmIChnZXRWYXIoXFxcImxfaWRcXFwiKSA9PSBcXFwiMVxcXCIpIHtcXG4gICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvQVBQLUtFWS50eHRcXFwiLCBcXFwiaXBob25lXFxcIik7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aTjeS9nOaMh+W8lSDikaDlhYjngrnlh7vkuIvmlrnnrKzkuIDmraXov5vljrvlk5Tlk6nmiYvmnLrniYjnvZHpobXnmbvlvZXotKblj7cg4pGh6L+U5Zue55u05o6l54K556ys5LqM5q2l55m75b2V54S25ZCO5oyJ5o+Q56S655m75b2VIOKAnOKAnOazqDrmlrnms5XkuIDkuI3lj6/nlKjlho3ph4fnlKjmlrnms5XkuozigJ3igJ0nLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwxLiDngrnmiJHljrvnvZHpobXnmbvlvZXlkI7oh6rliqjojrflj5Zjb29raWXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2NrXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDIuIOWGjeeCueaIkeeZu+W9leKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uvd2VibG9naW5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XFxuaWYgKGdldFZhcihcXFwibF9pZFxcXCIpID09IFxcXCIyXFxcIikge1xcbiAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9BUFAtS0VZLnR4dFxcXCIsIFxcXCJpcGhvbmVcXFwiKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5pON5L2c5oyH5byVIOKRoOWFiOeCueWHu+S4i+aWueesrOS4gOatpei/m+WOu+WTlOWTqeaJi+acuueJiOe9kemhteeZu+W9lei0puWPtyDikaHngrnlh7vlj7PkuIvop5Lorr7nva7ihpLmn6XnnIvmupDnoIHihpLljp/nlJ/nlYzpnaIg4pGi5aSN5Yi25pyA5LiK5pa56L6T5YWl5qGG6YeM55qE6ZO+5o6lIOKRo+i/lOWbnummlumhteaKiumTvuaOpei+k+WFpeahhuWGhSDikaTngrnlh7vnrKzkuozmraXvvIzmjInmj5DnpLrnmbvlvZXljbPlj69cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfkv53lrZgnLFxcbiAgICAgICAgdXJsOiBcXFwidmFyIGNrID0gJ1NFU1NEQVRBJytpbnB1dC5zcGxpdCgnU0VTU0RBVEEnKVsxXS5zcGxpdCgnc2lkJylbMF0ucmVwbGFjZSgn77yb77ybJywnOyAnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0Jyxjay5yZXBsYWNlKCfvvJvvvJsnLCc7ICcpKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+aCqOeahGNvb2tpZeaYrzonK2NrXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpemTvuaOpSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDEuIOeCueaIkeWOu+e9kemhteeZu+W9leWQjuaJi+WKqOiOt+WPlmNvb2tpZeKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJodHRwczovL20uYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwyLiDngrnmiJHnmbvlvZXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3dlYmxvZ2luXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImNvb2tpZeiOt+WPlu+8iOeZu+W9leaWueW8j+S4gO+8iVwiLFwicGF0aFwiOlwiY2tcIixcInJ1bGVcIjpcImpzOlxcbnNldFJlc3VsdChbe1xcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgdXJsOiBcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGZiYS5sb2coZG9jdW1lbnQuY29va2llKVxcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dCcsIGZ5X2JyaWRnZV9hcHAuZ2V0Q29va2llKCdodHRwczovL20uYmlsaWJpbGkuY29tLycpKTtcXG4gICAgICAgICAgICBhbGVydChcXFwiY29va2ll6I635Y+W5a6M5q+V77yM6K+36L+U5Zue57un57utXFxcIilcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi13ZWLnmbvlvZXvvIjmlrnlvI/kuozvvIlcIixcInBhdGhcIjpcIndlYmxvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgY2sgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHRcXFwiKS5yZXBsYWNlKC/vvJvvvJsgL2csJzsgJyk7XFxubG9nKGNrKVxcbnZhciBsb2dpbl91cmwgPSBcXFwiaHR0cHM6Ly9wYXNzcG9ydC5iaWxpYmlsaS5jb20vbG9naW4vYXBwL3RoaXJkP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmFwaT1odHRwJTNBJTJGJTJGbGluay5hY2cudHYlMkZmb3J1bS5waHAmc2lnbj02N2VjNzk4MDA0MzczMjUzZDYwMTE0Y2FhYWQ4OWE4Y1xcXCI7XFxudmFyIGxvY2F0aW9uID0gSlNPTi5wYXJzZShmZXRjaChsb2dpbl91cmwsIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBNMjAwN0ozU0MgQnVpbGQvUUtRMS4yMDA0MTkuMDAyOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgzLjAuNDEwMy4xMDEgTW9iaWxlIFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgXFxcImNvb2tpZVxcXCI6IGNrXFxuICAgIH0sXFxuICAgIG1ldGhvZDogJ0dFVCdcXG59KSkuZGF0YVsnY29uZmlybV91cmknXTtcXG4vL2xvZyhsb2NhdGlvbik7XFxuXFxudmFyIGluZm8gPSBKU09OLnBhcnNlKGZldGNoKGxvY2F0aW9uLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMDsgTTIwMDdKM1NDIEJ1aWxkL1FLUTEuMjAwNDE5LjAwMjsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS84My4wLjQxMDMuMTAxIE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgIFxcXCJjb29raWVcXFwiOiBja1xcbiAgICB9LFxcbiAgICBtZXRob2Q6ICdHRVQnLFxcbiAgICBvbmx5SGVhZGVyczogdHJ1ZSxcXG4gICAgcmVkaXJlY3Q6IGZhbHNlXFxufSkpLmhlYWRlcnMubG9jYXRpb25bMF0uc3BsaXQoXFxcIj9cXFwiKVsxXS5zcGxpdChcXFwiJlxcXCIpO1xcbnB1dFZhcihcXFwibXlrZXlcXFwiLGluZm9bMF0uc3BsaXQoXFxcIj1cXFwiKVsxXSk7XFxucHV0VmFyKFxcXCJteW1pZFxcXCIsaW5mb1sxXS5zcGxpdChcXFwiPVxcXCIpWzFdKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpbmZvWzBdLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGluZm9bMV0sXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOWkp+S8muWRmOeCueaIkeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuS4jeaYr+Wkp+S8muWRmOWIq+eCueehruiupO+8jOWQpuWImeWQjuaenOiHqui0n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0XFxcIixnZXRWYXIoXFxcIm15a2V5XFxcIikpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHRcXFwiLGdldFZhcihcXFwibXlrZXlcXFwiKSk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dFxcXCIsZ2V0VmFyKFxcXCJteW1pZFxcXCIpKTtcXG4gICAgICAgICAgICAvL3JlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+Wkp+S8muWRmOeZu+W9leaIkOWKn1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzml6DkvJrlkZjngrnmiJHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLngrnlh7vnmbvlvZVcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dFxcXCIsZ2V0VmFyKFxcXCJteWtleVxcXCIpKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0XFxcIixnZXRWYXIoXFxcIm15bWlkXFxcIikpO1xcbiAgICAgICAgICAgIC8vcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v55m75b2V5oiQ5YqfXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIFxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHnm7Tmkq1cIixcInBhdGhcIjpcInpiXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxudmFyIHpiYzEgPSAnYWxsJjImMyY2JjEmNSY5JjEwJjExJztcXG52YXIgemJ3MSA9ICflhajpg6gm572R5ri4JuaJi+a4uCbljZXmnLom5aix5LmQJueUteWPsCbomZrmi5/kuLvmkq0m55Sf5rS7JuWtpuS5oCc7XFxudmFyIHpiYzIgPSAnMCYzMyc7XFxudmFyIHpidzIgPSAn6buY6K6k5bCP5YiG57G7JuW9semfs+mmhu+8iOeUn+a0u++8iSc7XFxudmFyIHpid29yZDEgPSB6YncxLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjEgPSBnZXRWYXIoJ3pibGFiMScsICflhajpg6gnKTtcXG52YXIgemJrZXkxID0gZ2V0VmFyKCd6YmtleTEnLCAnYWxsJyk7XFxuXFxudmFyIHpid29yZDIgPSB6YncyLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MyID0gemJjMi5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXG52YXIgemJrZXkyID0gZ2V0VmFyKCd6YmtleTInLCAnMCcpO1xcblxcbiAgICAvKmZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcbiAgICAgICAgdmFyIGEgPSB6YndvcmQxW2ldO1xcbiAgICAgICAgdmFyIGIgPSB6YmNsYXNzMVtpXTtcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBhID09IHpibGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYykgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcInpibGFiMVxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiemJrZXkxXFxcIiwgYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgYyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9Ki9cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5pCc57SiJyxcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignemJrJyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mraPlnKjmkJzntKInO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfkvaDmg7PnnIvku4DkuYjnm7Tmkq3vvJ8nXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snXFxuICAgIH0pO1xcblxcbiAgICBmb3IgKHZhciBpIGluIHpid29yZDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHpid29yZDFbaV0gPT0gemJsYWIxID8gZ2V0SGVhZCh6YndvcmQxW2ldKSA6IHpid29yZDFbaV0sXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKG5hbWUsIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pibGFiMScsIG5hbWUpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pia2V5MScsIGtleSk7XFxuICAgICAgICAgICAgICAgIGNsZWFyVmFyKCd6YmsnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgemJ3b3JkMVtpXSwgemJjbGFzczFbaV0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG4gICAgZm9yICh2YXIgaSBpbiB6YndvcmQyKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB6YndvcmQyW2ldID09IHpibGFiMiA/IGdldEhlYWQoemJ3b3JkMltpXSkgOiB6YndvcmQyW2ldLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuYW1lLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjInLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmtleTInLCBrZXkpO1xcbiAgICAgICAgICAgICAgICBjbGVhclZhcignemJrJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHpid29yZDJbaV0sIHpiY2xhc3MyW2ldKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5pZiAoZ2V0VmFyKCd6YmsnKSAhPSAnJykge1xcbiAgICB2YXIgemJ1cmwgPSBcXFwiaHR0cHM6Ly9zZWFyY2guYmlsaWJpbGkuY29tL2xpdmU/a2V5d29yZD1cXFwiICsgZ2V0VmFyKCd6YmsnKTtcXG4gICAgbG9nKHpidXJsKVxcbiAgICB2YXIgcXogPSBcXFwiaHR0cHM6Ly9zZWFyY2guYmlsaWJpbGkuY29tXFxcIjtcXG4gICAgdmFyIGxpdmUgPSBxeiArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLCAnYm9keSYmLmhlYWRsaW5lLWxpdmUmJmEmJmhyZWYnKTtcXG4gICAgbG9nKFxcXCIxMjM6OjpcXFwiICsgbGl2ZSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5Li75pKtJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS96YjI/dXJsPVxcXCIrbGl2ZS5yZXBsYWNlKFxcXCI/XFxcIixcXFwi77yf77yfXFxcIikucmVwbGFjZShcXFwiJlxcXCIsXFxcIu+8hu+8hlxcXCIpICsgJ++8hu+8hnBhZ2U9ZnlwYWdlJyxcXG4gICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSwgJ2JvZHkmJi5mbG93LWxvYWRlciYmLmhlYWRsaW5lLWxpdmUmJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFwiXFxcXChcXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiXFxcXClcXFwiLCBcXFwiXFxcIikgKyAn5Li75pKtJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIHRyeSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn55u05pKt5LitJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFwiK2xpdmUucmVwbGFjZShcXFwiP1xcXCIsXFxcIu+8n++8n1xcXCIpLnJlcGxhY2UoXFxcIiZcXFwiLFxcXCLvvIbvvIZcXFwiKS5yZXBsYWNlKFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFwiLCBcXFwiXFxcIikgKyAncGFnZT1meXBhZ2UnLFxcbiAgICAgICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pLCAnYm9keSYmLmhlYWRsaW5lLXJvb20mJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFwiXFxcXChcXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiXFxcXClcXFwiLCBcXFwiXFxcIikgKyAn55u05pKt6Ze0JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfSBjYXRjaCAoZSkge31cXG59IGVsc2Uge1xcbiAgICB2YXIgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjMvYXJlYS9nZXRSb29tTGlzdD9wbGF0Zm9ybT13ZWImcGFyZW50X2FyZWFfaWQ9XFxcIiArIHpia2V5MSArIFxcXCImY2F0ZV9pZD0wJmFyZWFfaWQ9XFxcIiArIHpia2V5MiArIFxcXCImcGFnZT1cXFwiICsgcGFnZSArIFxcXCImcGFnZV9zaXplPTMwJnRhZ192ZXJzaW9uPTFcXFwiO1xcbiAgICB2YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHIgPSB7fTtcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLmxpc3RbaV07XFxuICAgICAgICByLnBpY191cmwgPSBqLnN5c3RlbV9jb3ZlciArIFJlZmVyZXI7XFxuICAgICAgICByLnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBqLnJvb21pZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmRlc2MgPSAnVVDwn5C377yaJyArIGoudW5hbWU7XFxuICAgICAgICByLmNvbF90eXBlID0gXFxcIm1vdmllXzJcXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogai50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiAnVVDwn5C377yaJyArIGoudW5hbWUsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgICAgICBwaWNfdXJsOiBqLnN5c3RlbV9jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAvL+iTneWFiVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2V1cmwgPSBcXFwiaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvYXBwLXJvb20vdjIvaW5kZXgvZ2V0Um9vbVBsYXlJbmZvP2FjY2Vzc19rZXk9XFxcIitnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKStcXFwiJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJnFuPTEwMDAwJnJvb21faWQ9XFxcIiArIGlkICsgXFxcIiZwbGF0Zm9ybT1hbmRyb2lkJmJ1aWxkPTY0MDAzMDAmZGV2aWNlX25hbWU9TTIwMDdKM1NDJmZvcm1hdD0wLDImY29kZWM9MCwxJmh0dHA9MSZjX2xvY2FsZT16aF9DTiZwcm90b2NvbD0wLDFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29kZWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYmFzZXVybCkpLmRhdGFbXFxcInBsYXl1cmxfaW5mb1xcXCJdW1xcXCJwbGF5dXJsXFxcIl1bXFxcInN0cmVhbVxcXCJdWzBdW1xcXCJmb3JtYXRcXFwiXVswXVtcXFwiY29kZWNcXFwiXVswXVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGVjLnVybF9pbmZvWzBdLmhvc3QgKyBjb2RlYy5iYXNlX3VybCArIGNvZGVjLnVybF9pbmZvWzBdLmV4dHJhXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBidXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIGlkICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCdcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QoYnVybCkpLmRhdGEuZHVybFswXS51cmxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGoucm9vbWlkKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt55u05pKt77yI5pCc57Si5ouT5bGV77yJXCIsXCJwYXRoXCI6XCJ6YjJcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBSZWZlcmVyID0gXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbVxcXCI7XFxuaWYgKE1ZX1VSTC5pbmRleE9mKFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFwiKSAhPSAtMSkge1xcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSksICdib2R5JiYubGl2ZS11c2VyLXdyYXAmJmxpJyk7XFxuICAgIGZvciAodmFyIGkgaW4gbGl2ZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmUCYmVGV4dCcpLFxcbiAgICAgICAgICAgIC8vdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXG4gICAgICAgICAgICB1cmw6JCgpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgLy/ok53lhYlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBiYXNldXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL2FwcC1yb29tL3YyL2luZGV4L2dldFJvb21QbGF5SW5mbz9hY2Nlc3Nfa2V5PVxcXCIrZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikrXFxcIiZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZxbj0xMDAwMCZyb29tX2lkPVxcXCIgKyBpZCArIFxcXCImcGxhdGZvcm09YW5kcm9pZCZidWlsZD02NDAwMzAwJmRldmljZV9uYW1lPU0yMDA3SjNTQyZmb3JtYXQ9MCwyJmNvZGVjPTAsMSZodHRwPTEmY19sb2NhbGU9emhfQ04mcHJvdG9jb2w9MCwxXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVjID0gSlNPTi5wYXJzZShyZXF1ZXN0KGJhc2V1cmwpKS5kYXRhW1xcXCJwbGF5dXJsX2luZm9cXFwiXVtcXFwicGxheXVybFxcXCJdW1xcXCJzdHJlYW1cXFwiXVswXVtcXFwiZm9ybWF0XFxcIl1bMF1bXFxcImNvZGVjXFxcIl1bMF1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlYy51cmxfaW5mb1swXS5ob3N0ICsgY29kZWMuYmFzZV91cmwgKyBjb2RlYy51cmxfaW5mb1swXS5leHRyYVxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgYnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBpZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1cmwpKS5kYXRhLmR1cmxbMF0udXJsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP1xcXCIpWzBdKSxcXG4gICAgICAgICAgICAvL2ltZzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGF6eS1pbWcmJmltZyYmc3JjJykgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6IHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLml0ZW0tcmlnaHQmJi5zdGF0dXMmJlRleHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSksICdib2R5JiYubGl2ZS1yb29tLXdyYXAmJmxpJyk7XFxuICAgIGZvciAodmFyIGkgaW4gbGl2ZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICdwJiZUZXh0JyksXFxuICAgICAgICAgICAgLy91cmw6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP2Zyb21cXFwiKVswXSArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgLFxcbiAgICAgICAgICAgIHVybDokKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAvL+iTneWFiVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2V1cmwgPSBcXFwiaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvYXBwLXJvb20vdjIvaW5kZXgvZ2V0Um9vbVBsYXlJbmZvP2FjY2Vzc19rZXk9XFxcIitnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKStcXFwiJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJnFuPTEwMDAwJnJvb21faWQ9XFxcIiArIGlkICsgXFxcIiZwbGF0Zm9ybT1hbmRyb2lkJmJ1aWxkPTY0MDAzMDAmZGV2aWNlX25hbWU9TTIwMDdKM1NDJmZvcm1hdD0wLDImY29kZWM9MCwxJmh0dHA9MSZjX2xvY2FsZT16aF9DTiZwcm90b2NvbD0wLDFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29kZWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYmFzZXVybCkpLmRhdGFbXFxcInBsYXl1cmxfaW5mb1xcXCJdW1xcXCJwbGF5dXJsXFxcIl1bXFxcInN0cmVhbVxcXCJdWzBdW1xcXCJmb3JtYXRcXFwiXVswXVtcXFwiY29kZWNcXFwiXVswXVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGVjLnVybF9pbmZvWzBdLmhvc3QgKyBjb2RlYy5iYXNlX3VybCArIGNvZGVjLnVybF9pbmZvWzBdLmV4dHJhXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBidXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIGlkICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCdcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QoYnVybCkpLmRhdGEuZHVybFswXS51cmxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIHBhcnNlRG9tKGxpdmVbaV0sICdhJiZocmVmJykuc3BsaXQoXFxcImxpdmUuYmlsaWJpbGkuY29tL1xcXCIpWzFdLnNwbGl0KFxcXCI/XFxcIilbMF0pLFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbShsaXZlW2ldLCAnLmxhenktaW1nJiZpbWcmJnNyYycpICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiAnVVDwn5C377yaJyArIHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLnVuYW1lJiZzcGFuJiZUZXh0JykgKyAnwrfkurrmsJQnICsgcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGl2ZS1udW0mJnNwYW4mJlRleHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiQVBJXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoXFxcIkw3QXZKNDFDKytrbGxCTVBHOUpSVFV6UXZFakpYd1JyZlJpSm1FQnVmVVFBMkhIV3RRTFJoQXdxU016TVVkSUFyV3VXRlRONDcxUTd2dWtoWGJQYmVSd2hkZmlRTStmZHRLRzNOS2hRektkZDdyU0J3aXBZOXQwbUowcU85RHgzTXRmMWRYM2sxeS84V3VvWFBNUW5DWFhETVE5N2h3ZXpvdDUySU95S3NHNjRPcTVhR0ZONWRpcVQxdG0yOVNwL0dydFZKWDhmeWpvTnE0VHJwZnhpSGc4WUhTQmxBUERrRWxaai90bWovYUM3S1J6SWNud3RPb0xqZUIrQWtpb20vU1p1cy8rMVJybllweW1idGtKTnJZNzJQek90ZFlOTDFqT29RNS80WWtUMlpZWnBsTG1JMGNWZ1c2S0JTUWpxSjFOSWF3UWcwaDRxUk5XMGFZTVdEVTMvRkdqdWM1REJTc2gwVzZtSzhHRTM0U1lsUjREZ2ttTVJteUd2cXloY1J5b0ZlRGFIZDdqSWloZGpjeVZnNGsvK2RmcXZ3N2ZyV1pXdUkxdmM5WU09XFxcIilcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3kuIDnuqfmlrDpobXpnaLvvIjmi5PlsZXvvIlcIixcInBhdGhcIjpcIm5ld2RldGlhbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG52YXIgcnggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCB7fSk7XFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfnm7Tmkq0nKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3piXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSBcXFwi5ryr5ri4XFxcIikge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9teVxcXCIpKS5ydWxlKVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGj5pu05aSa77yI5paw6aG16Z2i77yJXCIsXCJwYXRoXCI6XCJtb3JlXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLnvo7po59cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2Zvb2RcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZSA9PSBcXFwi5paw54mIXFxcIiA/IGdldEhlYWQoXFxcIuaWsOeJiFxcXCIpIDogXFxcIuaWsOeJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5paw54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZSA9PSBcXFwi5pen54mIXFxcIiA/IGdldEhlYWQoXFxcIuaXp+eJiFxcXCIpIDogXFxcIuaXp+eJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5pen54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgaWYgKHJ4ICE9ICfml7blhYnmnLonICYmIHJ4ICE9ICfntKLlvJUnKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVVSURcXFxcbuS4jeefpemBk+aAjuS5iOafpe+8n2Lnq5nngrnlvIDoh6rlt7HnmoTkv6Hmga/vvIzplb/mjIl1aWTljbPlj6/vvIzor7floavlhaXnuq/mlbDlrZdcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeY2snLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+i/meS4quS4jeaUr+aMgeiHquWumuS5ieWViu+8jOmqmuW5tCdcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVjayjnlKjkuo7ngrnotZ7mipXluIEpXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6QY2snLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2syLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWNrKOeUqOS6juino+aekClcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljazIudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwicmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/ov5nkuKrkuI3mlK/mjIHoh6rlrprkuYnllYrvvIzpqprlubQnXFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7ICAgICAgICBcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbngrnotZ5jaycsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItuino+aekGNrJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrMi50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItueCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiICsgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ivhOiuuuWMujog4oCc4oCc5beyJyArIGdldFZhcigncmVwbHlfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncmVwbHlfdHlwZScsIGdldFZhcigncmVwbHlfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdyZXBseV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nibmipXluIE6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ2xpa2VfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGlrZV90eXBlJywgZ2V0VmFyKCdsaWtlX3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcignbGlrZV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuS9v+eUqOW4ruWKqVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2hlbHBcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5LiA6ZSu6YeN572uXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2ZpbGVcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSBnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL2JpbGknKS5zbGljZSg2KTtcXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVsaXN0ID0gZ2V0RmlsZVBhdGgocGF0aCwgXFxcImZpbGVcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBwYXRoMiA9IGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaScpLnNsaWNlKDYpO1xcbiAgICAgICAgICAgICAgICBsZXQgZmlsZWxpc3QyID0gZ2V0RmlsZVBhdGgocGF0aDIsIFxcXCJmaWxlXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAvL2xvZyhmaWxlbGlzdCk7XFxuICAgICAgICAgICAgICAgIGZpbGVsaXN0LmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdC5wYXRoKVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZShpdC5wYXRoKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgZmlsZWxpc3QyLmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdC5wYXRoKVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZShpdC5wYXRoKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgZGVsZXRlRmlsZShcXFwiL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9ydWxlcy9qcy91cC5qc1xcXCIpO1xcbiAgICAgICAgICAgICAgICBiYWNrKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ph43nva7lrozmr5XvvIzor7fov5Tlm57pppbpobXliLfmlrBcXFwiXFxuICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoOS4gOe6p+aXp+mhtemdolwiLFwicGF0aFwiOlwiY29tbW9uMlwiLFwicnVsZVwiOlwidmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JykpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcbn1cXG52YXIgc190eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpO1xcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXG5wdXRWYXIoJ2xpa2VfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzFdKTtcXG4vL+minOiJslxcbnZhciBDb2xvcnMgPSBbXFxcIjRcXFwiLCBcXFwiNVxcXCIsIFxcXCIwXFxcIiwgXFxcIjFcXFwiLCBcXFwiQVxcXCIsIFxcXCIzXFxcIiwgXFxcIjhcXFwiLCBcXFwiOVxcXCIsIFxcXCJCXFxcIiwgXFxcIkNcXFwiLCBcXFwiRFxcXCIsIFxcXCJFXFxcIiwgXFxcIjZcXFwiLCBcXFwiN1xcXCIsIFxcXCJGXFxcIl07XFxudmFyIENvbG9yID0gJyMnO1xcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG5cXG52YXIgYzEgPSAnYWxsJmJhbmd1bWkmZ3VvY2hhbiZkb3VnYSZtdXNpYyZrbm93bGVkZ2UmdGVjaCZjYXImbGlmZSZmb29kJmtpY2hpa3UmZmFzaGlvbiZjaW5lcGhpbGUmb3JpZ2luJnJvb2tpZSZnYW1lJmVudCZkYW5jZSZtb3ZpZSZ0diZkb2N1bWVudGFyeSZhbmltYWwmZ3VvY2h1YW5nJztcXG5cXG52YXIgdzEgPSAn5YWo6YOoJueVquWJpyblm73liJsm5Yqo55S7Jumfs+S5kCbnn6Xor4Ym56eR5oqAJuaxvei9pibnlJ/mtLsm576O6aOfJumsvOeVnCbml7blsJom5b2x6KeGJuWOn+WImybmlrDkurom5ri45oiPJuWoseS5kCboiJ7ouYgm55S15b2xJueUteinhuWJpybnuqrlvZXniYcm5Yqo54mp5ZyIJuWbveWIm+ebuOWFsyc7XFxuXFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxuXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcblxcbnZhciB3b3JkMSA9IHcxLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMSA9IGMxLnNwbGl0KCcmJyk7XFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxudmFyIGtleTEgPSBnZXRWYXIoJ2tleTEnLCAnYWxsJyk7XFxuXFxudmFyIHdvcmQyID0gdzIuc3BsaXQoJyYnKTtcXG52YXIgY2xhc3MyID0gYzIuc3BsaXQoJyYnKTtcXG52YXIgbGFiMiA9IGdldFZhcignbGFiMicsICfprLznlZwnKTtcXG52YXIga2V5MiA9IGdldFZhcigna2V5MicsICcyMicpO1xcblxcbnZhciB6YmMxID0gJ2FsbCYyJjMmNiYxJjUmOSYxMCYxMSc7XFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcbnZhciB6YmMyID0gJzAmMzMnO1xcbnZhciB6YncyID0gJ+m7mOiupOWwj+WIhuexuyblvbHpn7PppobvvIjnlJ/mtLvvvIknO1xcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMSA9IHpiYzEuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIxID0gZ2V0VmFyKCd6YmxhYjEnLCAn5YWo6YOoJyk7XFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB6YndvcmQyID0gemJ3Mi5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIyID0gZ2V0VmFyKCd6YmxhYjInLCAn6buY6K6k5bCP5YiG57G7Jyk7XFxudmFyIHpia2V5MiA9IGdldFZhcignemJrZXkyJywgJzAnKTtcXG5cXG5cXG5cXG4vL+S4ieWQiOS4gFxcbnZhciByeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsIHt9KTtcXG52YXIgd3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbnZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgLypcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcbiAgICAqL1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLwn5SNXFxcIixcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3NlYXJjaD9ydWxlPVxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcIiZzPScraW5wdXRcXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIuaQnOS9oOaDs+eciy4uLlxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIlxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAnVVDkuLsnID8gZ2V0SGVhZCgn6aaW6aG1JykgOiAn6aaW6aG1JyxcXG4gICAgICAgIHVybDogJ1VQ5Li7JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmjpLooYzmppwnID8gZ2V0SGVhZChyeCkgOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJ+aOkuihjOamnCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5paw55WqJyA/IGdldEhlYWQocngpIDogJ+aWsOeVqicsXFxuICAgICAgICB1cmw6ICfmlrDnlaonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+ebtOaSrScgPyBnZXRIZWFkKHJ4KSA6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAn55u05pKtJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmm7TlpJonID8gZ2V0SGVhZChyeCkgOiAn5pu05aSaJyxcXG4gICAgICAgIHVybDogJ+abtOWkmicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgLypcXG4gICAgICAgIGlmIChyeCA9PSAn5pS26JePJykge1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veeVqicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gZ2V0SGVhZChzX3RhYikgOiAn6L+95YmnJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmFuanVcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2RzalxcXCIpKS5ydWxlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgKi9cXG59XFxuXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS91cFxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aXtuWFieacuicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc2dqXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5paw55WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn55u05pKtJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS96YlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbW9yZTJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09IFxcXCLmvKvmuLhcXFwiKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL215XFxcIikpLnJ1bGUpXFxufVxcbi8v5LiJ5ZCI5LiAXFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGj5pu05aSa77yI5pen6aG16Z2i77yJXCIsXCJwYXRoXCI6XCJtb3JlMlwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aXtuWFieacuicgPyBnZXRIZWFkKHJ4KSA6ICfml7blhYnwn5ClJyxcXG4gICAgICAgIHVybDogJ+aXtuWFieacuicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn57Si5byVJyA/IGdldEhlYWQocngpIDogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICfntKLlvJUnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eZu+W9lScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3bG9naW4nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmvKvmuLgnID8gZ2V0SGVhZChyeCkgOiAn5ryr5ri4JyxcXG4gICAgICAgIHVybDogJ+a8q+a4uCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIue+jumjn1xcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZm9vZFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGUgPT0gXFxcIuaWsOeJiFxcXCIgPyBnZXRIZWFkKFxcXCLmlrDniYhcXFwiKSA6IFxcXCLmlrDniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aWsOeJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGUgPT0gXFxcIuaXp+eJiFxcXCIgPyBnZXRIZWFkKFxcXCLml6fniYhcXFwiKSA6IFxcXCLml6fniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aXp+eJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXnvZHlnYDmiJbogIVi56uZ5aSN5Yi255qE6ZO+5o6lJ1xcbiAgICB9KTtcXG4gICAgaWYgKHJ4ICE9ICfml7blhYnmnLonICYmIHJ4ICE9ICfntKLlvJUnKSB7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVVSURcXFxcbuS4jeefpemBk+aAjuS5iOafpe+8n2Lnq5nngrnlvIDoh6rlt7HnmoTkv6Hmga/vvIzplb/mjIl1aWTljbPlj6/vvIzor7floavlhaXnuq/mlbDlrZdcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeY2snLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+i/meS4quS4jeaUr+aMgeiHquWumuS5ieWViu+8jOmqmuW5tCdcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVjayjnlKjkuo7ngrnotZ7mipXluIEpXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6QY2snLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2syLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWNrKOeUqOS6juino+aekClcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljazIudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwicmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/ov5nkuKrkuI3mlK/mjIHoh6rlrprkuYnllYrvvIzpqprlubQnXFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7ICAgICAgICBcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbngrnotZ5jaycsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItuino+aekGNrJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrMi50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItueCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiICsgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ivhOiuuuWMujog4oCc4oCc5beyJyArIGdldFZhcigncmVwbHlfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncmVwbHlfdHlwZScsIGdldFZhcigncmVwbHlfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdyZXBseV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nibmipXluIE6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ2xpa2VfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGlrZV90eXBlJywgZ2V0VmFyKCdsaWtlX3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcignbGlrZV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuS9v+eUqOW4ruWKqVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2hlbHBcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5LiA6ZSu6YeN572uXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2ZpbGVcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSBnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL2JpbGknKS5zbGljZSg2KTtcXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVsaXN0ID0gZ2V0RmlsZVBhdGgocGF0aCwgXFxcImZpbGVcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBwYXRoMiA9IGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaScpLnNsaWNlKDYpO1xcbiAgICAgICAgICAgICAgICBsZXQgZmlsZWxpc3QyID0gZ2V0RmlsZVBhdGgocGF0aDIsIFxcXCJmaWxlXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAvL2xvZyhmaWxlbGlzdCk7XFxuICAgICAgICAgICAgICAgIGZpbGVsaXN0LmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdC5wYXRoKVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZShpdC5wYXRoKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgZmlsZWxpc3QyLmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdC5wYXRoKVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZShpdC5wYXRoKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgZGVsZXRlRmlsZShcXFwiL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9ydWxlcy9qcy91cC5qc1xcXCIpO1xcbiAgICAgICAgICAgICAgICBiYWNrKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ph43nva7lrozmr5XvvIzor7fov5Tlm57pppbpobXliLfmlrBcXFwiXFxuICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgLypcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzniYjmnKxcXFwiK2dldEl0ZW0oJ1ZlcnNpb24nLCcwJyksXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCLmmK/lkKbmm7TmlrDkvp3otZZcXFwiKS5jb25maXJtKCgpPT57XFxuICAgICAgICAgICAgICAgIGRlbGV0ZUNhY2hlKCk7XFxuICAgICAgICAgICAgICAgIGV2YWwoZmV0Y2goJ2h0dHBzOi8vcngzMTkuY29kaW5nLm5ldC9wL2JpbGkvZC9iaWxpX1IvZ2l0L3Jhdy9tYXN0ZXIvdmVyc2lvbi5qcz9kb3dubG9hZD1mYWxzZScpKVxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ1ZlcnNpb24nLCAnLVYnK25ld1ZlcnNpb24udmVyKTtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnVmVyc2lvbicsICctVicrbmV3VmVyc2lvbi52ZXIpO1xcbiAgICAgICAgICAgICAgICBmZXRjaENhY2hlKCdodHRwczovL3J4MzE5LmNvZGluZy5uZXQvcC9iaWxpL2QvYmlsaV9SL2dpdC9yYXcvbWFzdGVyL21vcmUuanM/ZG93bmxvYWQ9ZmFsc2UnLCAyNClcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgbG9nKCfniYjmnKwnK2dldEl0ZW0oJ1ZlcnNpb24nKSsnXFxcXG4nK25ld1ZlcnNpb24uZGVzYylcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+abtOaWsOaIkOWKn++8jOabtOaWsOWGheWuueeci2xvZ1xcXCJcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgICovXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh5ryr5ri4XCIsXCJwYXRoXCI6XCJteVwiLFwicnVsZVwiOlwiZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5LuA5LmI5Lmf5rKh5pyJ6K+2XFxcIixcXG4gICAgICAgIHVybDogXFxcInRvYXN0Oi8v55yf55qE5LuA5LmI5Lmf5rKh5pyJXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgfSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5biu5YqpXCIsXCJwYXRoXCI6XCJoZWxwXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIjEu55m75b2V6Kej6ZSB5a6M5pW05Yqf6IO9PGJyPjEuMeeZu+W9lemXrumimOaxh+aAuzxicj7nmbvlvZXmlrnms5XmnInkuKTnp43vvIzkuIDnp43oh6rliqjojrflj5Zjb29raWXkuIDnp43miYvliqjojrflj5bjgILpg73pnIDopoHov5vooYznvZHpobXnmbvlvZXjgII8YnI+5aaC5p6c6YGH5Yiw5peg5rOV6I635Y+W6aqM6K+B56CB5oiW6ICF54K55Ye75ZCO5rKh5pyJ5Y+N5bqU55qE6Zeu6aKY6K+356aB55So5omA5pyJ572R6aG15o+S5Lu244CCPGJyPueZu+W9leeahOaXtuWAmeS4jeeuoeaYr+S4jeaYr+Wkp+S8muWRmOivt+mDvemAieaLqeKAnOWkp+S8muWRmOeCueaIkeKAnei/meS4gOmhueOAgueUseS6juWGhee9rue6v+i3r+WPlua2iO+8jOaJgOS7peS4jeeZu+W9leaXoOazleS9v+eUqOebtOmTvuOAguebtOmTvuino+aekOWPluWGs+S6juS9oOeahOi0puWPt++8jOWkp+S8muWRmOWPr+S7peeci+S8muWRmOinhumike+8jOWPjeS5i+WImeS4jeiDveOAgjxicj4yLuWmguaenOmBh+ingeWlh+Wlh+aAquaAqueahOmXrumimO+8jOavlOWmglxcXFxcXFwidmxpc3RcXFxcXFxcIixcXFxcXFxcIjBcXFxcXFxcIixcXFxcXFxcIm51bGxcXFxcXFxcIuS7gOS5iOeahO+8jOivt+WwneivleKAnOabtOWkmuKAnemHjOmdoueahOKAnOS4gOmUrumHjee9ruKAneOAguS4gOmUrumHjee9ruS8muWwhuWwj+eoi+W6j+WIneWni+WMlu+8jOWFs+azqOeahHVw5LmL57G755qE5Lmf5Lya6YeN572u44CC5omA5Lul6K+36LCo5oWO5L2/55So44CCXFxcIixcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxufSk7XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLee+jumjn1wiLFwicGF0aFwiOlwiZm9vZFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXHJcXG5kLnB1c2goe1xcclxcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXHJcXG4gICAgdXJsOiBcXFwiaHR0cHM6Ly9jb29rLnl1bnlvdWp1bi5jbi8/d3d3LmhpcXVlci5jb21cXFwiLFxcclxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcclxcbiAgICBleHRyYToge1xcclxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXHJcXG4gICAgICAgIHVybEludGVyY2VwdG9yOiAkLnRvU3RyaW5nKChNWV9SVUxFKSA9PiB7XFxyXFxuICAgICAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC92aWRlby8pKSB7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIE1ZX1JVTEUpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5sb2coTVlfUlVMRS50aXRsZSlcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlOiBNWV9SVUxFLnRpdGxlLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogXFxcIlxcXCIsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlUnVsZTogXFxcIlxcXCIsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPVxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcIiZ1cmw9XFxcIiArIHVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXHJcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQsIE1ZX1JVTEUpXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIC8vIOaLpuaIqmFwcOS4i+i9vemhtemdouKAlOKAlOmdnue9kemhteS7o+eggVxcclxcbiAgICAgICAgICAgIGlmIChpbnB1dC5pbmNsdWRlcygnZG93bmxvYWQnKSkgcmV0dXJuIHRydWU7XFxyXFxuICAgICAgICB9LCBNWV9SVUxFKSxcXHJcXG4gICAgICAgIGJsb2NrUnVsZXM6IFsnJ10sXFxyXFxuICAgICAgICB1YTogTU9CSUxFX1VBXFxyXFxuICAgIH1cXHJcXG59KTtcXHJcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlofku7bmk43kvZxcIixcInBhdGhcIjpcImZpbGVcIixcInJ1bGVcIjpcImNvbnN0IEZpbGUgPSBqYXZhLmlvLkZpbGU7XFxuY29uc3Qge1xcbiAgICBGaWxlcyxcXG4gICAgUGF0aHMsXFxuICAgIFN0YW5kYXJkQ29weU9wdGlvbixcXG4gICAgU3RhbmRhcmRPcGVuT3B0aW9uXFxufSA9IGphdmEubmlvLmZpbGU7XFxuY29uc3QgamF2YVN0cmluZyA9IGphdmEubGFuZy5TdHJpbmc7XFxubGV0IGphdmFTY29wZSA9IG5ldyBKYXZhSW1wb3J0ZXIoamF2YS5pbywgamF2YS5sYW5nLCBqYXZhLmxhbmcucmVmbGVjdCwgamF2YS51dGlsLlZlY3Rvcik7XFxuXFxuZnVuY3Rpb24gZGVsZXRlRmxpZXMoZmlsZU5hbWUpIHtcXG4gICAgbGV0IGZpbGUgPSBuZXcgRmlsZShmaWxlTmFtZSk7XFxuICAgIGlmICghZmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgLy9sb2coXFxcIuWIoOmZpOaWh+S7tuWksei0pe+8mlxcXCIgKyBmaWxlTmFtZSArIFxcXCLmlofku7bkuI3lrZjlnKhcXFwiKTtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChmaWxlLmlzRmlsZSgpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZUZpbGUoZmlsZU5hbWUpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gZGVsZXRlRGlyZWN0b3J5KGZpbGVOYW1lKTtcXG4gICAgICAgIH1cXG5cXG4gICAgfVxcblxcbn1cXG4vKipcXG4gKiDliKDpmaTljZXkuKrmlofku7ZcXG4gKiBcXG4gKiBAcGFyYW0gZmlsZU5hbWVcXG4gKiAgICAgICAgICAgIOiiq+WIoOmZpOaWh+S7tueahOaWh+S7tuWQjVxcbiAqIEByZXR1cm4g5Y2V5Liq5paH5Lu25Yig6Zmk5oiQ5Yqf6L+U5ZuedHJ1ZSzlkKbliJnov5Tlm55mYWxzZVxcbiAqL1xcbmZ1bmN0aW9uIGRlbGV0ZUZpbGUoZmlsZU5hbWUpIHtcXG4gICAgbGV0IGZpbGUgPSBuZXcgRmlsZShmaWxlTmFtZSk7XFxuICAgIGlmIChmaWxlLmlzRmlsZSgpICYmIGZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgIGZpbGUuZGVsZXRlKCk7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk5Y2V5Liq5paH5Lu2XFxcIiArIGZpbGVOYW1lICsgXFxcIuaIkOWKn++8gVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk5Y2V5Liq5paH5Lu2XFxcIiArIGZpbGVOYW1lICsgXFxcIuWksei0pe+8gVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxuXFxufVxcbi8qKlxcbiAqIOWIoOmZpOebruW9le+8iOaWh+S7tuWkue+8ieS7peWPiuebruW9leS4i+eahOaWh+S7tlxcbiAqIFxcbiAqIEBwYXJhbSBkaXJcXG4gKiAgICAgICAgICAgIOiiq+WIoOmZpOebruW9leeahOaWh+S7tui3r+W+hFxcbiAqIEByZXR1cm4g55uu5b2V5Yig6Zmk5oiQ5Yqf6L+U5ZuedHJ1ZSzlkKbliJnov5Tlm55mYWxzZVxcbiAqL1xcbmZ1bmN0aW9uIGRlbGV0ZURpcmVjdG9yeShkaXIpIHtcXG4gICAgLy8g5aaC5p6cZGly5LiN5Lul5paH5Lu25YiG6ZqU56ym57uT5bC+77yM6Ieq5Yqo5re75Yqg5paH5Lu25YiG6ZqU56ymXFxuICAgIGlmICghZGlyLmVuZHNXaXRoKEZpbGUuc2VwYXJhdG9yKSkge1xcbiAgICAgICAgZGlyID0gZGlyICsgRmlsZS5zZXBhcmF0b3I7XFxuICAgIH1cXG4gICAgbGV0IGRpckZpbGUgPSBuZXcgRmlsZShkaXIpO1xcbiAgICAvLyDlpoLmnpxkaXLlr7nlupTnmoTmlofku7bkuI3lrZjlnKjvvIzmiJbogIXkuI3mmK/kuIDkuKrnm67lvZXvvIzliJnpgIDlh7pcXG4gICAgaWYgKCFkaXJGaWxlLmV4aXN0cygpIHx8ICFkaXJGaWxlLmlzRGlyZWN0b3J5KCkpIHtcXG4gICAgICAgIC8vbG9nKFxcXCLliKDpmaTnm67lvZXlpLHotKVcXFwiICsgZGlyICsgXFxcIuebruW9leS4jeWtmOWcqO+8gVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxuICAgIGxldCBmbGFnID0gdHJ1ZTtcXG4gICAgLy8g5Yig6Zmk5paH5Lu25aS55LiL55qE5omA5pyJ5paH5Lu2KOWMheaLrOWtkOebruW9lSlcXG4gICAgbGV0IGZpbGVzID0gZGlyRmlsZS5saXN0RmlsZXMoKTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgLy8g5Yig6Zmk5a2Q5paH5Lu2XFxuICAgICAgICBpZiAoZmlsZXNbaV0uaXNGaWxlKCkpIHtcXG4gICAgICAgICAgICBmbGFnID0gZGVsZXRlRmlsZShmaWxlc1tpXS5nZXRBYnNvbHV0ZVBhdGgoKSk7XFxuICAgICAgICAgICAgaWYgKCFmbGFnKSB7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7IC8vIOWIoOmZpOWtkOebruW9lVxcbiAgICAgICAgICAgIGZsYWcgPSBkZWxldGVEaXJlY3RvcnkoZmlsZXNbaV0uZ2V0QWJzb2x1dGVQYXRoKCkpO1xcbiAgICAgICAgICAgIGlmICghZmxhZykge1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgaWYgKCFmbGFnKSB7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk55uu5b2V5aSx6LSlXFxcIik7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgLy8g5Yig6Zmk5b2T5YmN55uu5b2VXFxuICAgIGlmIChkaXJGaWxlLmRlbGV0ZSgpKSB7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk55uu5b2VXFxcIiArIGRpciArIFxcXCLmiJDlip/vvIFcXFwiKTtcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgLy9sb2coXFxcIuWIoOmZpOebruW9lVxcXCIgKyBkaXIgKyBcXFwi5aSx6LSl77yBXFxcIik7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gZ2V0RmlsZVRpbWUocGF0aCkge1xcbiAgICBsZXQgZmlsZSA9IG5ldyBGaWxlKHBhdGgpO1xcbiAgICBsZXQgbGFzdE1vZGlmaWVkID0gZmlsZS5sYXN0TW9kaWZpZWQoKTtcXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShsYXN0TW9kaWZpZWQpO1xcbiAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XFxufVxcblxcbmZ1bmN0aW9uIGdldE5hbWUocGF0aCkge1xcbiAgICByZXR1cm4gbmV3IEZpbGUocGF0aCkuZ2V0TmFtZSgpICsgXFxcIlxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEZpbGVQYXRoKHBhdGgsIHR5cGUsIGV4cGFuZCkge1xcbiAgICB0eXBlID0gdHlwZSB8fCBcXFwiZmlsZVxcXCI7XFxuICAgIGlmICghW1xcXCJmaWxlXFxcIiwgXFxcImRpclxcXCJdLmluY2x1ZGVzKHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXFxcIuexu+Wei+mUmeivr1xcXCIpO1xcbiAgICBsZXQgZmlsZVR5cGUgPSB0eXBlID09PSBcXFwiZmlsZVxcXCIgPyBcXFwiaXNGaWxlXFxcIiA6IFxcXCJpc0RpcmVjdG9yeVxcXCI7XFxuICAgIGxldCBmaWxlID0gbmV3IEZpbGUocGF0aCk7XFxuICAgIGxldCBhcnJheSA9IGZpbGUubGlzdEZpbGVzKCkgfHwgW107XFxuICAgIGxldCBwYXRoTGlzdCA9IFtdO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBpZiAoYXJyYXlbaV1bZmlsZVR5cGVdKCkpIHtcXG4gICAgICAgICAgICBwYXRoTGlzdC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgbmFtZTogYXJyYXlbaV0uZ2V0TmFtZSgpICsgXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIHBhdGg6IGFycmF5W2ldLmdldFBhdGgoKSArIFxcXCJcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgaWYgKGV4cGFuZCkge1xcbiAgICAgICAgcGF0aExpc3QgPSBwYXRoTGlzdC5maWx0ZXIoaXQgPT4gaXQubmFtZS5lbmRzV2l0aChleHBhbmQpKTtcXG4gICAgfVxcbiAgICByZXR1cm4gcGF0aExpc3Q7XFxufVxcblxcbmZ1bmN0aW9uIHJlbmFtZUZpbGUoZnJvbVBhdGgsIG5hbWUpIHtcXG4gICAgbGV0IGZyb21GaWxlID0gbmV3IEZpbGUoZnJvbVBhdGgpO1xcbiAgICBsZXQgdG9GaWxlID0gbmV3IEZpbGUoZnJvbUZpbGUuZ2V0UGFyZW50KCkgKyBcXFwiL1xcXCIgKyBuYW1lKTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGlmICghZnJvbUZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAodG9GaWxlLmV4aXN0cygpKSB7XFxuICAgICAgICAgICAgaWYgKCFkZWxldGVGbGllcyh0b1BhdGgpKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBGaWxlcy5tb3ZlKGZyb21GaWxlLnRvUGF0aCgpLCB0b0ZpbGUudG9QYXRoKCksIFN0YW5kYXJkQ29weU9wdGlvbi5SRVBMQUNFX0VYSVNUSU5HKTtcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBsb2coZS50b1N0cmluZygpKTtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbn1cXG5cXG5mdW5jdGlvbiBtb3ZlRmlsZXMoZnJvbVBhdGgsIHRvUGF0aCkge1xcbiAgICBsZXQgZnJvbUZpbGUgPSBuZXcgRmlsZShmcm9tUGF0aCk7XFxuICAgIGxldCB0b0ZpbGUgPSBuZXcgRmlsZSh0b1BhdGgpO1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKCFmcm9tRmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh0b0ZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgICAgICBpZiAoIWRlbGV0ZUZsaWVzKHRvUGF0aCkpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIEZpbGVzLm1vdmUoZnJvbUZpbGUudG9QYXRoKCksIHRvRmlsZS50b1BhdGgoKSwgU3RhbmRhcmRDb3B5T3B0aW9uLlJFUExBQ0VfRVhJU1RJTkcpO1xcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZyhlLnRvU3RyaW5nKCkpO1xcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIGZpbGVXcml0ZShwYXRoLCBjb250ZW50KSB7XFxuICAgIHdyaXRlRmlsZShcXFwiZmlsZTovL1xcXCIgKyBwYXRoLCBjb250ZW50KVxcbn1cXG5cXG5mdW5jdGlvbiBmaWxlV3JpdGVBcHBlbmQocGF0aCwgY29udGVudCkge1xcbiAgICBsZXQgZmlsZSA9IG5ldyBGaWxlKHBhdGgpO1xcbiAgICBsZXQgcGF0aHMgPSBmaWxlLnRvUGF0aCgpO1xcbiAgICBpZiAoZmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgRmlsZXMud3JpdGUocGF0aHMsIG5ldyBqYXZhU3RyaW5nKGNvbnRlbnQpLmdldEJ5dGVzKCksIFN0YW5kYXJkT3Blbk9wdGlvbi5BUFBFTkQpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgd3JpdGVGaWxlKFxcXCJmaWxlOi8vXFxcIiArIHBhdGgsIGNvbnRlbnQpO1xcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIGdldFRvdGFsU2l6ZU9mRmlsZXNJbkRpcihmaWxlKSB7XFxuICAgIGlmIChmaWxlLmlzRmlsZSgpKSB7XFxuICAgICAgICByZXR1cm4gZmlsZS5sZW5ndGgoKTtcXG4gICAgfVxcbiAgICBsZXQgY2hpbGRyZW4gPSBmaWxlLmxpc3RGaWxlcygpO1xcbiAgICBsZXQgdG90YWwgPSAwO1xcbiAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcXG4gICAgICAgICAgICB0b3RhbCArPSBnZXRUb3RhbFNpemVPZkZpbGVzSW5EaXIoY2hpbGQpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiB0b3RhbDtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0RmlsZVNpemUoZmlsZVBhdGgpIHtcXG4gICAgLy9CeXRlXFxuICAgIGxldCBzaXplID0gZ2V0VG90YWxTaXplT2ZGaWxlc0luRGlyKG5ldyBGaWxlKGZpbGVQYXRoKSk7XFxuICAgIGlmIChzaXplIDwgMCkge1xcbiAgICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gICAgbGV0IHVuaXRGb3JtID0gW1xcXCJCeXRlXFxcIiwgXFxcIktCXFxcIiwgXFxcIk1CXFxcIiwgXFxcIkdCXFxcIiwgXFxcIlRCXFxcIl07XFxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB1bml0Rm9ybS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xcbiAgICAgICAgaWYgKHNpemUgPiAxMDI0KSB7XFxuICAgICAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHNpemUpICsgdW5pdEZvcm1baV07XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIFxcXCJFUlJPUjrmlbDlgLzov4flpKdcXFwiO1xcbn1cXG4vL+WujOaVtOWQiOW5tlxcbi8qXFxuZnVuY3Rpb24gZmlsZUNvbWJpbmUoZmlsZXNJbnB1dCwgZmlsZU91dCwgZXh0ZW5zaW9uLCBpbnRlcmNlcHQpIHtcXG4gICAgd2l0aChqYXZhU2NvcGUpIHtcXG4gICAgICAgIGNvbnN0IFRNUF9CVUZGRVJfU0laRSA9IDB4MzAwMDA7XFxuICAgICAgICBjb25zdCBCVUZGRVJfU0laRSA9IDB4MzAwMDAwO1xcbiAgICAgICAgLy/lkIjlubbkuLTml7bmlofku7ZcXG4gICAgICAgIGxldCBpbnB1dEZpbGUgPSBuZXcgRmlsZShmaWxlc0lucHV0KTtcXG4gICAgICAgIGxldCB0bXBGaWxlID0gbmV3IEZpbGUoZmlsZU91dCArIFxcXCIudG1wXFxcIik7XFxuICAgICAgICBsZXQgdG9zID0gbmV3IEJ1ZmZlcmVkT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKHRtcEZpbGUpKTtcXG4gICAgICAgIGxldCBpbnB1dEZpbGVzID0gaW5wdXRGaWxlLmxpc3RGaWxlcygpO1xcbiAgICAgICAgbGV0IHRieXMgPSBBcnJheS5uZXdJbnN0YW5jZShCeXRlLlRZUEUsIFRNUF9CVUZGRVJfU0laRSk7XFxuICAgICAgICBmb3IgKGxldCBmaWxlIG9mIGlucHV0RmlsZXMpIHtcXG4gICAgICAgICAgICBpZiAoZmlsZS5nZXROYW1lKCkuZW5kc1dpdGgoZXh0ZW5zaW9uKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpO1xcbiAgICAgICAgICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgICAgICAgICAgd2hpbGUgKChsZW4gPSBpcy5yZWFkKHRieXMpKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgdG9zLndyaXRlKHRieXMsIDAsIGxlbik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaXMuY2xvc2UoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICB0b3MuY2xvc2UoKTtcXG4gICAgICAgIC8v6KeE5YiZ5pu/5o2i6KeE5YiZO1xcbiAgICAgICAgbGV0IG91dEZpbGUgPSBuZXcgRmlsZShmaWxlT3V0KTtcXG4gICAgICAgIGlmICh0eXBlb2YgaW50ZXJjZXB0ID09PSBcXFwiZnVuY3Rpb25cXFwiKSB7XFxuICAgICAgICAgICAgbGV0IHRpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0odG1wRmlsZSk7XFxuICAgICAgICAgICAgbGV0IG9zID0gbmV3IEJ1ZmZlcmVkT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKG91dEZpbGUpKTtcXG4gICAgICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgICAgICBsZXQgYnlzID0gQXJyYXkubmV3SW5zdGFuY2UoQnl0ZS5UWVBFLCBCVUZGRVJfU0laRSk7XFxuICAgICAgICAgICAgd2hpbGUgKChsZW4gPSB0aXMucmVhZChieXMpKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICBsZXQgbmJ5cyA9IGludGVyY2VwdChuZXcgU3RyaW5nKGJ5cywwLGxlbikpO1xcbiAgICAgICAgICAgICAgICBvcy53cml0ZShuYnlzLCAwLCBuYnlzLmxlbmd0aCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHRtcEZpbGUuZGVsZXRlKCk7XFxuICAgICAgICAgICAgdGlzLmNsb3NlKCk7XFxuICAgICAgICAgICAgb3MuY2xvc2UoKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKG91dEZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgICAgICAgICAgb3V0RmlsZS5kZWxldGUoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdG1wRmlsZS5yZW5hbWVUbyhvdXRGaWxlKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn0qL1xcbi8v5q6LXFxuZnVuY3Rpb24gZmlsZVJ1bGUoZmlsZXNJbnB1dCwgZmlsZU91dCwgaW50ZXJjZXB0KSB7XFxuICAgIHdpdGgoamF2YVNjb3BlKSB7XFxuICAgICAgICBjb25zdCBCVUZGRVJfU0laRSA9IDB4MzAwMDAwO1xcbiAgICAgICAgbGV0IHRtcEZpbGUgPSBuZXcgRmlsZShmaWxlc0lucHV0KTtcXG4gICAgICAgIGlmKCEodG1wRmlsZS5leGlzdHMoKSYmdG1wRmlsZS5pc0ZpbGUoKSkpe1xcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBvdXRGaWxlID0gbmV3IEZpbGUoZmlsZU91dCk7XFxuXFxuICAgICAgICBsZXQgdGlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbSh0bXBGaWxlKTtcXG4gICAgICAgIGxldCBvcyA9IG5ldyBCdWZmZXJlZE91dHB1dFN0cmVhbShuZXcgRmlsZU91dHB1dFN0cmVhbShvdXRGaWxlKSk7XFxuICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgIGxldCBieXMgPSBBcnJheS5uZXdJbnN0YW5jZShCeXRlLlRZUEUsIEJVRkZFUl9TSVpFKTtcXG4gICAgICAgIHdoaWxlICgobGVuID0gdGlzLnJlYWQoYnlzKSkgIT0gLTEpIHtcXG4gICAgICAgICAgICBsZXQgbmJ5cyA9IGludGVyY2VwdChuZXcgU3RyaW5nKGJ5cywwLGxlbikpO1xcbiAgICAgICAgICAgIG9zLndyaXRlKG5ieXMsIDAsIG5ieXMubGVuZ3RoKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHRtcEZpbGUuZGVsZXRlKCk7XFxuICAgICAgICB0aXMuY2xvc2UoKTtcXG4gICAgICAgIG9zLmNsb3NlKCk7XFxuICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgfVxcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIGdldEZpbGVUaW1lOiAocGF0aCkgPT4gZ2V0RmlsZVRpbWUocGF0aCksXFxuICAgIGdldEZpbGVQYXRoOiAocGF0aCwgdHlwZSwgZXhwYW5kKSA9PiBnZXRGaWxlUGF0aChwYXRoLCB0eXBlLCBleHBhbmQpLFxcbiAgICBkZWxldGVGbGllczogKHBhdGgpID0+IGRlbGV0ZUZsaWVzKHBhdGgpLFxcbiAgICByZW5hbWVGaWxlOiAocGF0aCwgbmFtZSkgPT4gcmVuYW1lRmlsZShwYXRoLCBuYW1lKSxcXG4gICAgbW92ZUZpbGVzOiAoZnJvbVBhdGgsIHRvUGF0aCkgPT4gbW92ZUZpbGVzKGZyb21QYXRoLCB0b1BhdGgpLFxcbiAgICBmaWxlV3JpdGU6IChwYXRoLCBjb250ZW50KSA9PiBmaWxlV3JpdGUocGF0aCwgY29udGVudCksXFxuICAgIGZpbGVXcml0ZUFwcGVuZDogKHBhdGgsIGNvbnRlbnQpID0+IGZpbGVXcml0ZUFwcGVuZChwYXRoLCBjb250ZW50KSxcXG4gICAgZ2V0TmFtZTogKHBhdGgpID0+IGdldE5hbWUocGF0aCksXFxuICAgIGdldEZpbGVTaXplOiAoZmlsZVBhdGgpID0+IGdldEZpbGVTaXplKGZpbGVQYXRoKSxcXG4gICAgZmlsZVJ1bGU6IChmaWxlc0lucHV0LCBmaWxlT3V0LCBpbnRlcmNlcHQpID0+IGZpbGVSdWxlKGZpbGVzSW5wdXQsIGZpbGVPdXQsIGludGVyY2VwdClcXG59XCJ9XSIsImljb24iOiJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvdHViaWFvLmdpZiIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment