xiaomianao666

小程序:简单音乐

Aug 24th, 2023
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@简单音乐@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi566A5Y2V6Z+z5LmQIiwiYXV0aG9yIjoi5pen5be36ZmM5Lq6IiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjIiwidmVyc2lvbiI6MjAyMzA0MTYsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoibXVzaWMiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcbmdldEJhc2VQYXJzZSgpOyIsInNlYXJjaF91cmwiOiIiLCJncm91cCI6IuKRpOmfs+mikSIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJyZXF1aXJlKFwiaGlrZXI6Ly9wYWdlL2luaXRDb25maWcudmlldz9ydWxlPeeugOWNlemfs+S5kFwiKTsiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iXCIsXCJwYXRoXCI6XCJDb25maWcudmlld1wiLFwicnVsZVwiOlwiY29uc3QgbGF5b3V0ID0gW107XFxuY29uc3QgZW1wdHkgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuY29uc3Qgbm9sb2FkID0gXFxcIiNub0xvYWRpbmcjXFxcIjtcXG5cXG5jb25zdCBDb2xvciA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiB0ZXN0LmZvbnRjb2xvcihcXFwiI0ZBNzI5OFxcXCIpO1xcbn1cXG5cXG5jb25zdCBTcHJpbmdHcmVlbiA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiB0ZXN0LmZvbnRjb2xvcihcXFwiIzNDQjM3MVxcXCIpO1xcbn1cXG5cXG5jb25zdCBTdHJvbmcgPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gXFxcIjxzdHJvbmc+XFxcIiArIHRlc3QgKyBcXFwiPC9zdHJvbmc+XFxcIjtcXG59XFxuXFxuY29uc3QgU21hbGwgPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gXFxcIjxzbWFsbD5cXFwiICsgdGVzdCArIFxcXCI8L3NtYWxsPlxcXCI7XFxufVxcblxcbmNvbnN0IEdyYXkgPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gXFxcIjxmb250IGNvbG9yPSdncmF5Jz5cXFwiICsgdGVzdCArIFxcXCI8L2ZvbnQ+XFxcIjtcXG59XFxuXFxuY29uc3QgUmljaCA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiBcXFwi4oCY4oCY4oCZ4oCZXFxcIiArIHRlc3Q7XFxufVxcblxcbmNvbnN0IGFlc0VuY3J5cHQgPSAod29yZCkgPT4ge1xcbiAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICBsZXQgc3RyX2tleSA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKFxcXCIwQ29KVW02UXl3OFc4anVkXFxcIik7XFxuICAgIGxldCBzdHJfaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShcXFwiMDEwMjAzMDQwNTA2MDcwOFxcXCIpO1xcbiAgICBsZXQgYWVzX3N0ciA9IENyeXB0b0pTLkFFUy5lbmNyeXB0KHdvcmQsIHN0cl9rZXksIHtcXG4gICAgICAgIGl2OiBzdHJfaXYsXFxuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICB9KS50b1N0cmluZygpO1xcbiAgICBzdHJfa2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoXFxcImFhYWFiYmJiY2NjY2RkZGRcXFwiKTtcXG4gICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KGFlc19zdHIsIHN0cl9rZXksIHtcXG4gICAgICAgIGl2OiBzdHJfaXYsXFxuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICB9KS50b1N0cmluZygpO1xcbn1cXG5cXG5jb25zdCBOZXRFYXNlQ29uZmlnID0gKHBhdGgsIGJvZHksIG1ldGhvZCkgPT4ge1xcbiAgICBhcGlfc3RyID0gXFxcImh0dHBzOi8vbXVzaWMuMTYzLmNvbVxcXCJcXG4gICAgaWYgKG1ldGhvZCAhPSBcXFwiR0VUXFxcIikge1xcbiAgICAgICAgYm9keSA9IFxcXCJwYXJhbXM9XFxcIiArIGFlc0VuY3J5cHQoSlNPTi5zdHJpbmdpZnkoYm9keSkpICsgXFxcIiZlbmNTZWNLZXk9ODE0ZTRhYmY5YzFjNmEyYWY3NGE3ZWNjYTg4NDNmMzA1MjYyNmM1YzA1NDU4NDM1MmUzZmQzOGE1MTliZDY1OWU2ODdjZjFjMDc5ZTFhYWM1ZGQ5ZDQ5MWFmNmI4YWJmOTIxMDk4NjJhZGE5M2RjN2IwZWY5NGE4ZWU3OWQ1NTdmZjJhMjA1MTJiODdjZTUwN2UzNTc4NjEzNjZiODU0MjEzOWM2Nzg5Njc0ODg1MmQ0MDg2MTA0YThkZmM5OWEyZTJlMDY0MGI0NmE0MzU3NDA3YjcyNDA3YjI4NDliMzIzNDI1YzZlZDQ1YTAyMjJlNjlkNTUxYTJlNTllMTViN1xcXCJcXG4gICAgfVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaV9zdHIgKyBwYXRoLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBhcGlfc3RyLFxcbiAgICAgICAgICAgIFxcXCJPcmlnaW5cXFwiOiBhcGlfc3RyLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiTk1USUQ9MDBPUTVWaS00TktUR2ZvZ0V1bm9VTGgwUXk4UE1zQUFBR0ViS28tWWc7IG9zPXBjXFxcIlxcbiAgICAgICAgfSxcXG4gICAgICAgIGJvZHk6IGJvZHksXFxuICAgICAgICBtZXRob2Q6IG1ldGhvZFxcbiAgICB9KSlcXG59XFxuXFxuY29uc3QgVGVuY2VudENvbmZpZyA9IChtaWQpID0+IHtcXG4gICAgYXBpX3N0ciA9IG1pZDtcXG4gICAgaWYgKHR5cGVvZiBtaWQgPT0gXFxcIm51bWJlclxcXCIpIHtcXG4gICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgXFxcIlNvbmdsaXN0XFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwibW9kdWxlXFxcIjogXFxcIm11c2ljLnNyZkRpc3NJbmZvLkRpc3NJbmZvXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIm1ldGhvZFxcXCI6IFxcXCJDZ2lHZXREaXNzXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInBhcmFtXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcImRpcmlkXFxcIjogMCxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJmcm9tXFxcIjogMTUsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiY3R4XFxcIjogMCxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJvbmx5c29uZ2xpc3RcXFwiOiAwLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIm9yZGVybGlzdFxcXCI6IDEsXFxuICAgICAgICAgICAgICAgICAgICBcXFwidGFnXFxcIjogMSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJyZWNfZmxhZ1xcXCI6IDEsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiZGlzc3RpZFxcXCI6IG1pZCxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJuZXdfZm9ybWF0XFxcIjogMSxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJob3N0X3VpblxcXCI6IDAsXFxuICAgICAgICAgICAgICAgICAgICBcXFwib3B0eXBlXFxcIjogMixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJlbmNfaG9zdF91aW5cXFwiOiBcXFwiMFxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgXFxcImNvbW1cXFwiOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJjdFxcXCI6IFxcXCIxXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInZcXFwiOiBcXFwiOTBcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiY3ZcXFwiOiBcXFwiMTAxODA1XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcImd6aXBcXFwiOiBcXFwiMFxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBhcGlfc3RyID0gXFxcImh0dHA6Ly91Ni55LnFxLmNvbS9jZ2ktYmluL211c2ljdS5mY2dcXFwiXFxuICAgICAgICBhcGlfc3RyID0gYnVpbGRVcmwoYXBpX3N0ciwge1xcbiAgICAgICAgICAgIGRhdGE6IGVzY2FwZShKU09OLnN0cmluZ2lmeShib2R5KSlcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChhcGlfc3RyLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly95LnFxLmNvbS9wb3J0YWwvcGxheWVyLmh0bWxcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLnJlcGxhY2UoL2NhbGxiYWNrXFxcXCh8TXVzaWNKc29uQ2FsbGJhY2tcXFxcKHxqc29uQ2FsbGJhY2tcXFxcKHxcXFxcKSQvZywgXFxcIlxcXCIpKVxcbn1cXG5cXG5jb25zdCBLd211c2ljY2FyQ29uZmlnID0gKHBhdGgpID0+IHtcXG4gICAgbGV0IGFwaV9zdHIgPSBcXFwiaHR0cHM6Ly93d3cua3V3by5jbi9cXFwiXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QoYXBpX3N0ciArIHBhdGgsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwicmVmZXJlclxcXCI6IGFwaV9zdHIsXFxuICAgICAgICAgICAgXFxcImNzcmZcXFwiOiBcXFwiMFxcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJrd190b2tlbj0wXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YVxcbn1cXG5cXG5jb25zdCBLdWdvdUNvbmZpZyA9IChkYXRhKSA9PiB7XFxuICAgIGxldCBhcGlfc3RyID0gXFxcImh0dHA6Ly93d3cua3Vnb3UuY29tL3l5L2luZGV4LnBocFxcXCJcXG4gICAgYXBpX3N0ciA9IGJ1aWxkVXJsKGFwaV9zdHIsIHtcXG4gICAgICAgIHI6IFxcXCJwbGF5L2dldGRhdGFcXFwiLFxcbiAgICAgICAgaGFzaDogZGF0YS5oYXNoLFxcbiAgICAgICAgYWxidW1faWQ6IGRhdGEuYWxidW1faWQgKyBcXFwiXFxcIlxcbiAgICB9KVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaV9zdHIsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcImtnX21pZD0xXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSkuZGF0YVxcbn1cXG5cXG5jb25zdCBNaWd1RmlsbCA9ICh1cmwpID0+IHtcXG4gICAgaWYgKCEvXihodHRwcz8pLy50ZXN0KHVybCkpIHtcXG4gICAgICAgIHJldHVybiBcXFwiaHR0cDovL2QubXVzaWNhcHAubWlndS5jbi9cXFwiICsgdXJsO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmV0dXJuIHVybDtcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBNaWd1Q29uZmlnID0gKGFwaV9zdHJzKSA9PiB7XFxuICAgIGFwaV9zdHIgPSBcXFwiaHR0cHM6Ly9hcHAuYy5uZi5taWd1LmNuL1xcXCJcXG4gICAgaWYgKCEvXihodHRwcz8pLy50ZXN0KGFwaV9zdHJzKSkge1xcbiAgICAgICAgYXBpX3N0cnMgPSBhcGlfc3RyICsgYXBpX3N0cnNcXG4gICAgfVxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaV9zdHJzLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBhcGlfc3RyXFxuICAgICAgICB9XFxuICAgIH0pKVxcbn1cXG5cXG5jb25zdCBnZXRNb3ZlID0gKGFyciwgaW5kZXgsIHRpbmRleCkgPT4ge1xcbiAgICBpZiAoaW5kZXggPiB0aW5kZXgpIHtcXG4gICAgICAgIGFyci5zcGxpY2UodGluZGV4LCAwLCBhcnJbaW5kZXhdKTtcXG4gICAgICAgIGFyci5zcGxpY2UoaW5kZXggKyAxLCAxKVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgYXJyLnNwbGljZSh0aW5kZXggKyAxLCAwLCBhcnJbaW5kZXhdKTtcXG4gICAgICAgIGFyci5zcGxpY2UoaW5kZXgsIDEpXFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0UG9zaXRpb24gPSAoZGF0YSwgbmFtZSwgY2hvaWNlKSA9PiB7XFxuICAgIGxldCBvYmogPSB7fTtcXG4gICAgZGF0YS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xcbiAgICAgICAgaWYgKGl0ZW0ubmFtZSA9PT0gbmFtZSkge1xcbiAgICAgICAgICAgIG9iaiA9IGl0ZW07XFxuICAgICAgICAgICAgZGF0YS5zcGxpY2UoaW5kZXgsIDEpXFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBzd2l0Y2ggKGNob2ljZSkge1xcbiAgICAgICAgY2FzZSBcXFwidG9wXFxcIjpcXG4gICAgICAgICAgICBkYXRhLnVuc2hpZnQob2JqKVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBcXFwiZW5kXFxcIjpcXG4gICAgICAgICAgICBkYXRhLnB1c2gob2JqKVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxufVxcblxcbmNvbnN0IGdldFNlbGVjdE1hcCA9IChtdXNpY01hcCwgU2VsZWN0TWFwLCBpLCBtaWQsIG5hbWUpID0+IHtcXG4gICAgc3dpdGNoIChnZXRJdGVtKFxcXCJnZXRVcE1hcFxcXCIsIFNlbGVjdE1hcFtTZWxlY3RNYXAubGVuZ3RoIC0gMV0pKSB7XFxuICAgICAgICBjYXNlIFNlbGVjdE1hcFswXTpcXG4gICAgICAgICAgICBnZXRDb3B5ID0gZ2V0TXlWYXIoXFxcIkJ1aWxkTXVzaWNcXFwiLCBtdXNpY01hcFswXSkgKyBcXFwiXFxcXG7mrYzljZXlkI3np7DvvJpcXFwiICsgbmFtZSArIFxcXCJcXFxcbuatjOWNleivhuWIq++8mlxcXCIgKyBiYXNlNjRFbmNvZGUoXFxcIlxcXCIgKyBtaWQgKyBcXFwiXFxcIilcXG4gICAgICAgICAgICBjb3B5KGdldENvcHkpXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFNlbGVjdE1hcFsxXTpcXG4gICAgICAgICAgICByZXR1cm4gJChcXFwi56Gu5a6a5aW95LqG5ZCX77yM6K+l5q2M5Y2V5bCG5Yig6ZmkXFxcIikuY29uZmlybSgobXVzaWNNYXAsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgc3dpdGNoIChnZXRNeVZhcihcXFwiQnVpbGRNdXNpY1xcXCIsIG11c2ljTWFwWzBdKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFswXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTWFwLkJ1aWxkTXVzaWMuTmV0RWFzZS5zcGxpY2UoaSwgMSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbMV06XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU1hcC5CdWlsZE11c2ljLlRlbmNlbnQuc3BsaWNlKGksIDEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlIG11c2ljTWFwWzJdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5Ld211c2ljY2FyLnNwbGljZShpLCAxKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFszXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTWFwLkJ1aWxkTXVzaWMuS3Vnb3Uuc3BsaWNlKGksIDEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5NaWd1LnNwbGljZShpLCAxKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLliKDpmaTmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICB9LCBtdXNpY01hcCwgaSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgU2VsZWN0TWFwWzJdOlxcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJnZXRNb3ZlXFxcIiwgaSlcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgcmV0dXJuICQoZW1wdHkgKyBcXFwiI2F1dG9DYWNoZSMjZnVsbFRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKG1pZCwgbXVzaWNNYXApID0+IHtcXG4gICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICBsZXQgcGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIkJ1aWxkTXVzaWNcXFwiLCBtdXNpY01hcFswXSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbMF06XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHN0b3JhZ2UwLmdldE15VmFyKGA6aVRhZ3Mke211c2ljTWFwWzBdfSR7bWlkfWAsIFtdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfc3RyID0gXFxcIi9hcGkvdjYvcGxheWxpc3QvZGV0YWlsXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfc3RyID0gYnVpbGRVcmwoYXBpX3N0ciwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG1pZCArIFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogMTAwMCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0OiAxMDAwXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBOZXRFYXNlQ29uZmlnKGFwaV9zdHIsIFxcXCJcXFwiLCBcXFwiR0VUXFxcIikucGxheWxpc3QudHJhY2tzXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKGA6aVRhZ3Mke211c2ljTWFwWzBdfSR7bWlkfWAsIGRhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBOZXRFYXNlUGFyc2UoZGF0YSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbMV06XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHN0b3JhZ2UwLmdldE15VmFyKGA6aVRhZ3Mke211c2ljTWFwWzFdfSR7bWlkfWAsIFtdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gVGVuY2VudENvbmZpZyhtaWQpLlNvbmdsaXN0LmRhdGEuc29uZ2xpc3RcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoYDppVGFncyR7bXVzaWNNYXBbMV19JHttaWR9YCwgZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIFRlbmNlbnRQYXJzZShkYXRhKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFsyXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc3RvcmFnZTAuZ2V0TXlWYXIoYCR7cGFnZX06aVRhZ3Mke211c2ljTWFwWzJdfSR7bWlkfWAsIFtdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfc3RyID0gYnVpbGRVcmwoXFxcImFwaS93d3cvcGxheWxpc3QvcGxheUxpc3RJbmZvXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkOiBtaWQgKyBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBuOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm46IDIwLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cHNTdGF0dXM6IDEsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFJZDogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEt3bXVzaWNjYXJDb25maWcoYXBpX3N0cikubXVzaWNMaXN0XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKGAke3BhZ2V9OmlUYWdzJHttdXNpY01hcFsyXX0ke21pZH1gLCBkYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgS3dtdXNpY2NhclBhcnNlKGRhdGEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlIG11c2ljTWFwWzNdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzdG9yYWdlMC5nZXRNeVZhcihgOmlUYWdzJHttdXNpY01hcFszXX0ke21pZH1gLCBbXSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pZC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBwZGZoKHJlcXVlc3QobWlkKSwgXFxcImJvZHkmJnNjcmlwdCwyJiZIdG1sXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLm1hdGNoKC93aW5kb3dcXFxcLlxcXFwkb3V0cHV0ID0gKFtcXFxcU1xcXFxzXS4qKTsvKVsxXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSkuaW5mby5zb25nc1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpX3N0ciA9IFxcXCJodHRwczovL20ua3Vnb3UuY29tL3BsaXN0L2xpc3QvXFxcIiArIG1pZFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpX3N0ciA9IGJ1aWxkVXJsKGFwaV9zdHIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uOiBcXFwidHJ1ZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShyZXF1ZXN0KGFwaV9zdHIpKS5saXN0Lmxpc3QuaW5mb1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKGA6aVRhZ3Mke211c2ljTWFwWzNdfSR7bWlkfWAsIGRhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBLdWdvdVBhcnNlKGRhdGEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzdG9yYWdlMC5nZXRNeVZhcihgJHtwYWdlfTppVGFncyR7bXVzaWNNYXBbNF19JHttaWR9YCwgW10pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV9zdHIgPSBcXFwiTUlHVU0zLjAvcmVzb3VyY2UvcGxheWxpc3Qvc29uZy92Mi4wXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfc3RyID0gYnVpbGRVcmwoYXBpX3N0ciwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZU5vOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IDUwLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheWxpc3RJZDogbWlkICsgXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IE1pZ3VDb25maWcoYXBpX3N0cikuZGF0YS5zb25nTGlzdFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihgJHtwYWdlfTppVGFncyR7bXVzaWNNYXBbNF19JHttaWR9YCwgZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIE1pZ3VQYXJzZShkYXRhKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChsYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIG1pZCwgbXVzaWNNYXApXFxuICAgIH1cXG4gICAgcmV0dXJuIGVtcHR5XFxufVxcblxcbmNvbnN0IE5ldEVhc2VJbXBvcnQgPSAobWlkKSA9PiB7XFxuICAgIGxldCBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICBhcGlfc3RyID0gXFxcIi9hcGkvdjYvcGxheWxpc3QvZGV0YWlsXFxcIlxcbiAgICBhcGlfc3RyID0gYnVpbGRVcmwoYXBpX3N0ciwge1xcbiAgICAgICAgaWQ6IG1pZCArIFxcXCJcXFwiLFxcbiAgICAgICAgbjogMTAwMCxcXG4gICAgICAgIGxpbWl0OiAxMDAwXFxuICAgIH0pXFxuICAgIGRhdGEgPSBOZXRFYXNlQ29uZmlnKGFwaV9zdHIsIFxcXCJcXFwiLCBcXFwiR0VUXFxcIikucGxheWxpc3RcXG4gICAgQnJlYWsgPSB0cnVlXFxuICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5OZXRFYXNlLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICBpZiAoaXRlbS5taWQgPT0gZGF0YS5pZCkge1xcbiAgICAgICAgICAgIHRvYXN0KFxcXCLmrYzljZXph43lpI3lr7zlhaXkuoblk6ZcXFwiKVxcbiAgICAgICAgICAgIEJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBpZiAoQnJlYWspIHtcXG4gICAgICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5OZXRFYXNlLnB1c2goe1xcbiAgICAgICAgICAgIG5hbWU6IGRhdGEubmFtZSxcXG4gICAgICAgICAgICBwaWNVcmw6IGRhdGEuY292ZXJJbWdVcmwsXFxuICAgICAgICAgICAgbWlkOiBkYXRhLmlkXFxuICAgICAgICB9KVxcbiAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIilcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBUZW5jZW50SW1wb3J0ID0gKG1pZCkgPT4ge1xcbiAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgZGF0YSA9IFRlbmNlbnRDb25maWcoTnVtYmVyKG1pZCkpLlNvbmdsaXN0LmRhdGEuZGlyaW5mb1xcbiAgICBCcmVhayA9IHRydWVcXG4gICAgZGF0YU1hcC5CdWlsZE11c2ljLlRlbmNlbnQuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGlmIChpdGVtLm1pZCA9PSBkYXRhLmlkKSB7XFxuICAgICAgICAgICAgdG9hc3QoXFxcIuatjOWNlemHjeWkjeWvvOWFpeS6huWTplxcXCIpXFxuICAgICAgICAgICAgQnJlYWsgPSBmYWxzZVxcbiAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgaWYgKEJyZWFrKSB7XFxuICAgICAgICBkYXRhTWFwLkJ1aWxkTXVzaWMuVGVuY2VudC5wdXNoKHtcXG4gICAgICAgICAgICBuYW1lOiBkYXRhLnRpdGxlLFxcbiAgICAgICAgICAgIHBpY1VybDogZGF0YS5waWN1cmwsXFxuICAgICAgICAgICAgbWlkOiBkYXRhLmlkXFxuICAgICAgICB9KVxcbiAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIilcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBLd211c2ljY2FySW1wb3J0ID0gKG1pZCkgPT4ge1xcbiAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgYXBpX3N0ciA9IGJ1aWxkVXJsKFxcXCJhcGkvd3d3L3BsYXlsaXN0L3BsYXlMaXN0SW5mb1xcXCIsIHtcXG4gICAgICAgIHBpZDogbWlkICsgXFxcIlxcXCIsXFxuICAgICAgICBwbjogXFxcIjFcXFwiLFxcbiAgICAgICAgcm46IDIwLFxcbiAgICAgICAgaHR0cHNTdGF0dXM6IDEsXFxuICAgICAgICByZXFJZDogXFxcIlxcXCJcXG4gICAgfSlcXG4gICAgZGF0YSA9IEt3bXVzaWNjYXJDb25maWcoYXBpX3N0cilcXG4gICAgQnJlYWsgPSB0cnVlXFxuICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5Ld211c2ljY2FyLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICBpZiAoaXRlbS5taWQgPT0gZGF0YS5pZCkge1xcbiAgICAgICAgICAgIHRvYXN0KFxcXCLmrYzljZXph43lpI3lr7zlhaXkuoblk6ZcXFwiKVxcbiAgICAgICAgICAgIEJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICBpZiAoQnJlYWspIHtcXG4gICAgICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5Ld211c2ljY2FyLnB1c2goe1xcbiAgICAgICAgICAgIG5hbWU6IGRhdGEubmFtZSxcXG4gICAgICAgICAgICBwaWNVcmw6IGRhdGFbXFxcImltZzcwMFxcXCJdLFxcbiAgICAgICAgICAgIG1pZDogZGF0YS5pZFxcbiAgICAgICAgfSlcXG4gICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpXFxuICAgIH1cXG59XFxuXFxuY29uc3QgS3Vnb3VJbXBvcnQgPSAobWlkLCBJbnB1dCkgPT4ge1xcbiAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKG1pZCkuaW5mby5saXN0aW5mb1xcbiAgICAgICAgQnJlYWsgPSB0cnVlXFxuICAgICAgICBkYXRhTWFwLkJ1aWxkTXVzaWMuS3Vnb3UuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBpZiAoaXRlbS5taWQgPT0gSW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuatjOWNlemHjeWkjeWvvOWFpeS6huWTplxcXCIpXFxuICAgICAgICAgICAgICAgIEJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgaWYgKEJyZWFrKSB7XFxuICAgICAgICAgICAgZGF0YU1hcC5CdWlsZE11c2ljLkt1Z291LnB1c2goe1xcbiAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLm5hbWUsXFxuICAgICAgICAgICAgICAgIHBpY1VybDogZGF0YS5waWMucmVwbGFjZShcXFwie3NpemV9XFxcIiwgXFxcIjQwMFxcXCIpLFxcbiAgICAgICAgICAgICAgICBtaWQ6IElucHV0XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpXFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGFwaV9zdHIgPSBcXFwiaHR0cHM6Ly9tM3dzLmt1Z291LmNvbS9wbGlzdC9saXN0L1xcXCIgKyBtaWRcXG4gICAgICAgIGRhdGEgPSByZXF1ZXN0KGFwaV9zdHIpXFxuICAgICAgICBCcmVhayA9IHRydWVcXG4gICAgICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5LdWdvdS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGlmIChpdGVtLm1pZCA9PSBtaWQpIHtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuatjOWNlemHjeWkjeWvvOWFpeS6huWTplxcXCIpXFxuICAgICAgICAgICAgICAgIEJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgaWYgKEJyZWFrKSB7XFxuICAgICAgICAgICAgZGF0YU1hcC5CdWlsZE11c2ljLkt1Z291LnB1c2goe1xcbiAgICAgICAgICAgICAgICBuYW1lOiBwZGZoKGRhdGEsIFxcXCIuY29udGVudCYmcCYmVGV4dFxcXCIpLFxcbiAgICAgICAgICAgICAgICBwaWNVcmw6IHBkZmgoZGF0YSwgXFxcIi5jb250ZW50JiZpbWcmJl9zcmNcXFwiKSxcXG4gICAgICAgICAgICAgICAgbWlkOiBtaWRcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIilcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cXG5jb25zdCBNaWd1SW1wb3J0ID0gKG1pZCkgPT4ge1xcbiAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgYXBpX3N0ciA9IFxcXCJNSUdVTTMuMC9yZXNvdXJjZS9wbGF5bGlzdC92Mi4wXFxcIlxcbiAgICBhcGlfc3RyID0gYnVpbGRVcmwoYXBpX3N0ciwge1xcbiAgICAgICAgcGxheWxpc3RJZDogbWlkICsgXFxcIlxcXCJcXG4gICAgfSlcXG4gICAgZGF0YSA9IE1pZ3VDb25maWcoYXBpX3N0cikuZGF0YVxcbiAgICBCcmVhayA9IHRydWVcXG4gICAgZGF0YU1hcC5CdWlsZE11c2ljLk1pZ3UuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGlmIChpdGVtLm1pZCA9PSBkYXRhLm11c2ljTGlzdElkKSB7XFxuICAgICAgICAgICAgdG9hc3QoXFxcIuatjOWNlemHjeWkjeWvvOWFpeS6huWTplxcXCIpXFxuICAgICAgICAgICAgQnJlYWsgPSBmYWxzZVxcbiAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgaWYgKEJyZWFrKSB7XFxuICAgICAgICBkYXRhTWFwLkJ1aWxkTXVzaWMuTWlndS5wdXNoKHtcXG4gICAgICAgICAgICBuYW1lOiBkYXRhLnRpdGxlLFxcbiAgICAgICAgICAgIHBpY1VybDogZGF0YS5pbWdJdGVtLmltZyxcXG4gICAgICAgICAgICBtaWQ6IGRhdGEubXVzaWNMaXN0SWRcXG4gICAgICAgIH0pXFxuICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKVxcbiAgICB9XFxufVxcblxcbmNvbnN0IGdldEltcG9ydCA9IChtdXNpY01hcCwgaW5wdXQpID0+IHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIkJ1aWxkTXVzaWNcXFwiLCBtdXNpY01hcFswXSkpIHtcXG4gICAgICAgICAgICBjYXNlIG11c2ljTWFwWzBdOlxcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aChtdXNpY01hcFswXSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIG1pZCA9IGlucHV0Lm1hdGNoKC9bQS1aYS16MC05Ky89XSskLylbMF1cXG4gICAgICAgICAgICAgICAgICAgIG1pZCA9IGJhc2U2NERlY29kZShtaWQpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuc2VhcmNoKFxcXCJtdXNpYy4xNjNcXFwiKSA+PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBtaWQgPSBpbnB1dC5tYXRjaCgvKHBsYXlsaXN0XFxcXC98aWQ9KShcXFxcZCspLylbMl1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBOZXRFYXNlSW1wb3J0KG1pZClcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBtdXNpY01hcFsxXTpcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgobXVzaWNNYXBbMV0pKSB7XFxuICAgICAgICAgICAgICAgICAgICBtaWQgPSBpbnB1dC5tYXRjaCgvW0EtWmEtejAtOSsvPV0rJC8pWzBdXFxuICAgICAgICAgICAgICAgICAgICBtaWQgPSBiYXNlNjREZWNvZGUobWlkKVxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlYXJjaChcXFwicXEuY29tXFxcIikgPj0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgbWlkID0gaW5wdXQubWF0Y2goL2lkPShcXFxcZCspLylbMV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBUZW5jZW50SW1wb3J0KG1pZClcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBtdXNpY01hcFsyXTpcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgobXVzaWNNYXBbMl0pKSB7XFxuICAgICAgICAgICAgICAgICAgICBtaWQgPSBpbnB1dC5tYXRjaCgvW0EtWmEtejAtOSsvPV0rJC8pWzBdXFxuICAgICAgICAgICAgICAgICAgICBtaWQgPSBiYXNlNjREZWNvZGUobWlkKVxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlYXJjaChcXFwia3V3by5jblxcXCIpID49IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIG1pZCA9IGlucHV0Lm1hdGNoKC8ocGxheWxpc3RcXFxcL3xwbGF5bGlzdF9kZXRhaWxcXFxcLykoXFxcXGQrKS8pWzJdXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgS3dtdXNpY2NhckltcG9ydChtaWQpXFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbM106XFxuICAgICAgICAgICAgICAgIGxldCBJbnB1dDtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKG11c2ljTWFwWzNdKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ID0gaW5wdXQubWF0Y2goL1tBLVphLXowLTkrLz1dKyQvKVswXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ID0gYmFzZTY0RGVjb2RlKElucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCA9IHBkZmgocmVxdWVzdChJbnB1dCksIFxcXCJib2R5JiZzY3JpcHQsMiYmSHRtbFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkID0gbWlkLm1hdGNoKC93aW5kb3dcXFxcLlxcXFwkb3V0cHV0ID0gKFtcXFxcU1xcXFxzXS4qKTsvKVsxXVxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWFyY2goXFxcImt1Z291LmNvbVxcXCIpID49IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCA9IGlucHV0Lm1hdGNoKC8oaHR0cHN8aHR0cCkoLipsaW5rKS8pWzBdXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkID0gcGRmaChyZXF1ZXN0KElucHV0KSwgXFxcImJvZHkmJnNjcmlwdCwyJiZIdG1sXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQgPSBtaWQubWF0Y2goL3dpbmRvd1xcXFwuXFxcXCRvdXRwdXQgPSAoW1xcXFxTXFxcXHNdLiopOy8pWzFdXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKG11c2ljTWFwWzNdKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCA9IGlucHV0Lm1hdGNoKC9bQS1aYS16MC05Ky89XSskLylbMF1cXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQgPSBiYXNlNjREZWNvZGUobWlkKVxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5zZWFyY2goXFxcImt1Z291LmNvbVxcXCIpID49IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQgPSBpbnB1dC5tYXRjaCgvKFxcXFwvbGlzdFxcXFwvKSguKilcXFxcLy8pWzJdXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgS3Vnb3VJbXBvcnQobWlkLCBJbnB1dClcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgobXVzaWNNYXBbNF0pKSB7XFxuICAgICAgICAgICAgICAgICAgICBtaWQgPSBpbnB1dC5tYXRjaCgvW0EtWmEtejAtOSsvPV0rJC8pWzBdXFxuICAgICAgICAgICAgICAgICAgICBtaWQgPSBiYXNlNjREZWNvZGUobWlkKVxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnNlYXJjaChcXFwibWlndS5jblxcXCIpID49IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdGFydHNXaXRoKFxcXCLliIbkuqtcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCA9IGlucHV0Lm1hdGNoKC8oaHR0cHN8aHR0cCkuKihcXFxcdykvKVswXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCA9IEpTT04ucGFyc2UocmVxdWVzdChtaWQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSkudXJsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkID0gbWlkLm1hdGNoKC8oaWQ9KShcXFxcZCspLylbMl1cXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkID0gaW5wdXQubWF0Y2goLyhwbGF5bGlzdFxcXFwvKShcXFxcZCspLylbMl1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBNaWd1SW1wb3J0KG1pZClcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIHRvYXN0KFxcXCLlr7zlhaXlpLHotKVcXFwiKVxcbiAgICB9XFxufVxcblxcbmNvbnN0IGdldE15U2VsZWN0TWFwID0gKG11c2ljTWFwLCBTZWxlY3RNYXAsIG1pZCwgbmFtZSwgaW5wdXQpID0+IHtcXG4gICAgc3dpdGNoIChnZXRJdGVtKFxcXCJnZXRVcE1hcFxcXCIsIFNlbGVjdE1hcFtTZWxlY3RNYXAubGVuZ3RoIC0gMV0pKSB7XFxuICAgICAgICBjYXNlIFNlbGVjdE1hcFswXTpcXG4gICAgICAgICAgICBnZXRDb3B5ID0gZ2V0TXlWYXIoXFxcIk11c2ljTXlNYXBcXFwiLCBtdXNpY01hcFswXSkgKyBcXFwiXFxcXG7mrYzljZXlkI3np7DvvJpcXFwiICsgbmFtZSArIFxcXCJcXFxcbuatjOWNleivhuWIq++8mlxcXCIgKyBiYXNlNjRFbmNvZGUoXFxcIlxcXCIgKyBtaWQgKyBcXFwiXFxcIilcXG4gICAgICAgICAgICBjb3B5KGdldENvcHkpXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIHJldHVybiAkKGVtcHR5ICsgXFxcIiNhdXRvQ2FjaGUjI2Z1bGxUaGVtZSNcXFwiKS5ydWxlKChtdXNpY01hcCwgbWlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG5cXG4gICAgICAgICAgICAgICAgc3dpdGNoIChnZXRNeVZhcihcXFwiTXVzaWNNeU1hcFxcXCIsIG11c2ljTWFwWzBdKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFswXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcIjppVGFnc1xcXCIgKyBtdXNpY01hcFswXSArIG1pZCwgW10pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV9zdHIgPSBcXFwiL2FwaS92Ni9wbGF5bGlzdC9kZXRhaWxcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV9zdHIgPSBidWlsZFVybChhcGlfc3RyLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogbWlkICsgXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiAxMDAwLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ6IDEwMDBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IE5ldEVhc2VDb25maWcoYXBpX3N0ciwgXFxcIlxcXCIsIFxcXCJHRVRcXFwiKS5wbGF5bGlzdC50cmFja3NcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcIjppVGFnc1xcXCIgKyBtdXNpY01hcFswXSArIG1pZCwgZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIE5ldEVhc2VQYXJzZShkYXRhKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFsxXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcIjppVGFnc1xcXCIgKyBtdXNpY01hcFsxXSArIG1pZCwgW10pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBUZW5jZW50Q29uZmlnKG1pZCkuU29uZ2xpc3QuZGF0YS5zb25nbGlzdFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiOmlUYWdzXFxcIiArIG11c2ljTWFwWzFdICsgbWlkLCBkYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgVGVuY2VudFBhcnNlKGRhdGEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGxheW91dCk7XFxuICAgICAgICAgICAgfSwgbXVzaWNNYXAsIG1pZClcXG4gICAgfVxcbiAgICByZXR1cm4gZW1wdHlcXG59XFxuXFxuY29uc3QgZ2V0U2VsZWN0TGlzdE1hcCA9IChTZWxlY3RNYXAsIGksIGl0ZW0pID0+IHtcXG4gICAgc3dpdGNoIChnZXRJdGVtKFxcXCJnZXRVcE1hcFxcXCIsIFNlbGVjdE1hcFtTZWxlY3RNYXAubGVuZ3RoIC0gMV0pKSB7XFxuICAgICAgICBjYXNlIFNlbGVjdE1hcFswXTpcXG4gICAgICAgICAgICBnZXRDb3B5ID0gc2hhcmVQYXN0ZShiYXNlNjRFbmNvZGUoSlNPTi5zdHJpbmdpZnkoaXRlbSkpKSArIFxcXCJcXFxcblxcXFxu6Ieq5bu65q2M5Y2V77yaXFxcIiArIGl0ZW0ubmFtZVxcbiAgICAgICAgICAgIGNvcHkoZ2V0Q29weSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgU2VsZWN0TWFwWzFdOlxcbiAgICAgICAgICAgIHJldHVybiAkKFxcXCLnoa7lrprlpb3kuoblkJfvvIzor6XmrYzljZXlsIbliKDpmaRcXFwiKS5jb25maXJtKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgIGRhdGFNYXAuQnVpbGRMaXN0LnNwbGljZShpLCAxKVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5Yig6Zmk5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgfSwgaSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgU2VsZWN0TWFwWzJdOlxcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJnZXRNb3ZlXFxcIiwgaSlcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgU2VsZWN0TWFwWzNdOlxcbiAgICAgICAgICAgIHJldHVybiAkKGVtcHR5KS5ydWxlKChpLCBpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgZ2V0RWRpdFBhcnNlKGksIGl0ZW0pXFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChsYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIGksIGl0ZW0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIHJldHVybiAkKGVtcHR5ICsgXFxcIiNmdWxsVGhlbWUjXFxcIikucnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgIEJ1aWxkTGlzdFBhcnNlKGkpXFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChsYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIGkpXFxuICAgIH1cXG4gICAgcmV0dXJuIGVtcHR5XFxufVxcblxcbmNvbnN0IGdldFNlbGVjdExpc3RJbXBvcnQgPSAoaW5wdXQpID0+IHtcXG4gICAgbGV0IGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgIGxldCBCdWlsZExpc3QgPSBkYXRhTWFwLkJ1aWxkTGlzdFxcbiAgICBpZiAoaW5wdXQuaW5kZXhPZihcXFwi6Ieq5bu65q2M5Y2VXFxcIikgPiAwKSB7XFxuICAgICAgICBpbnB1dCA9IGlucHV0Lm1hdGNoKC8oaHR0cHN8aHR0cCkuKihcXFxcdykvKVswXVxcbiAgICAgICAgZGF0YSA9IHBhcnNlUGFzdGUoaW5wdXQpXFxuICAgICAgICBkYXRhID0gYmFzZTY0RGVjb2RlKGRhdGEpXFxuICAgICAgICBldmFsKFxcXCJkYXRhID1cXFwiICsgZGF0YSlcXG4gICAgICAgIEJyZWFrID0gdHJ1ZVxcbiAgICAgICAgQnVpbGRMaXN0LmZvckVhY2goKGl0ZW0sIGkpID0+IHtcXG4gICAgICAgICAgICBpZiAoaXRlbS5uYW1lID09IGRhdGEubmFtZSkge1xcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XFxuICAgICAgICAgICAgICAgIEJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgaWYgKEJyZWFrKSB7XFxuICAgICAgICAgICAgQnVpbGRMaXN0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLm5hbWUsXFxuICAgICAgICAgICAgICAgIHBpY3M6IGRhdGEucGljcyxcXG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YS5kYXRhXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHJldHVybiAkKGDvvLske0J1aWxkTGlzdFtpbmRleF1bXFxcIm5hbWVcXFwiXX3vvL3ljbPlsIbopobnm5ZgKS5jb25maXJtKChkYXRhLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgbGV0IEJ1aWxkTGlzdCA9IGRhdGFNYXAuQnVpbGRMaXN0XFxuICAgICAgICAgICAgICAgIEJ1aWxkTGlzdFtpbmRleF0gPSB7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRhLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBwaWNzOiBkYXRhLnBpY3MsXFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBkYXRhLmRhdGFcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi6KaG55uW5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgfSwgZGF0YSwgaW5kZXgpXFxuICAgICAgICB9XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICB0b2FzdChcXFwi5a+85YWl5aSx6LSlXFxcIilcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBnZXRDbGFzc0Jhc2UgPSAoaXRlbSwgbXVzaWNNYXApID0+IHtcXG4gICAgc3dpdGNoIChpdGVtKSB7XFxuICAgICAgICBjYXNlIG11c2ljTWFwW211c2ljTWFwLmxlbmd0aCAtIDFdOlxcbiAgICAgICAgICAgIHVwTWFwID0gW1xcXCLmrYzljZXmoLflvI9cXFwiXVxcbiAgICAgICAgICAgIHVwc01hcCA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJTZWFyY2htdXNpY01hcFxcXCIsIFtcXFwi6IGa5ZCI5pCc57SiXFxcIl0pXFxuICAgICAgICAgICAgc3RvcmFnZU1hcCA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJTZWxlY3RNYXBcXFwiKVxcbiAgICAgICAgICAgIHVwTWFwID0gc3RvcmFnZU1hcC5jb25jYXQodXBzTWFwLmNvbmNhdCh1cE1hcCkpXFxuICAgICAgICAgICAgcmV0dXJuICQodXBNYXAsIDIsIFxcXCLlt7LpgInmi6ktXFxcIiArIFxcXCJbXFxcIiArIGdldEl0ZW0oXFxcImdldFVwTWFwXFxcIiwgc3RvcmFnZU1hcFtzdG9yYWdlTWFwLmxlbmd0aCAtIDFdKSArIFxcXCJdXFxcIikuc2VsZWN0KCh1cE1hcCwgZW1wdHkpID0+IHtcXG4gICAgICAgICAgICAgICAgc3dpdGNoIChpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSB1cE1hcFt1cE1hcC5sZW5ndGggLSAxXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChnZXRDb2xUeXBlcygpLCAyLCBcXFwi5bey6YCJ5oupLVxcXCIgKyBcXFwiW1xcXCIgKyBnZXRJdGVtKFxcXCJnZXRDb2xUeXBlc1xcXCIsIFxcXCJjYXJkX3BpY18zXFxcIikgKyBcXFwiXVxcXCIpLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImdldENvbFR5cGVzXFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLliIfmjaLmoLflvI8tXFxcIiArIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlIHVwTWFwW3VwTWFwLmxlbmd0aCAtIDJdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bk1hcCA9IFtcXFwi6IGa5ZCI5pCc57SiXFxcIl1cXG4gICAgICAgICAgICAgICAgICAgICAgICBmdW5zTWFwID0gW1xcXCLljp/nlJ/mkJzntKJcXFwiXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoc3RvcmFnZTAuZ2V0TXlWYXIoXFxcIlNlYXJjaG11c2ljTWFwXFxcIiwgZnVuTWFwKVswXSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIGZ1bk1hcFswXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJTZWFyY2htdXNpY01hcFxcXCIsIGZ1bnNNYXApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiU2VhcmNobXVzaWNNYXBcXFwiLCBmdW5NYXApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwi5Yib5bu65q2M5Y2VXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChlbXB0eSkucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwi5Yib5bu65q2M5Y2VXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDcmVhdGVMaXN0UGFyc2UoKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQobGF5b3V0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJnZXRVcE1hcFxcXCIsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLliIfmjaLmlrnms5UtXFxcIiArIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVxcbiAgICAgICAgICAgIH0sIHVwTWFwLCBlbXB0eSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcIm11c2ljTWFwXFxcIiwgaXRlbSk7XFxuICAgICAgICAgICAgY2xlYXJJdGVtKFxcXCJnZXRVcE1hcFxcXCIpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0QmFzZVBhcnNlID0gKCkgPT4ge1xcbiAgICBnZXRTZWFyY2hQYXJzZSgpO1xcbiAgICBtdXNpY01hcCA9IFtcXFwi5oiR55qE5q2M5Y2VXFxcIiwgXFxcIuatjOWNleaUtuiXj1xcXCIsIFxcXCLoh6rlu7rmrYzljZVcXFwiLCBcXFwi6Z+z5LmQ6I+c5Y2VXFxcIl07XFxuICAgIG11c2ljTWFwLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0gPT0gZ2V0TXlWYXIoXFxcIm11c2ljTWFwXFxcIiwgbXVzaWNNYXBbMF0pID8gUmljaChTdHJvbmcoQ29sb3IoaXRlbSkpKSA6IGl0ZW0sXFxuICAgICAgICAgICAgdXJsOiAkKG5vbG9hZCkubGF6eVJ1bGUoKGl0ZW0sIG11c2ljTWFwKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldENsYXNzQmFzZShpdGVtLCBtdXNpY01hcClcXG4gICAgICAgICAgICB9LCBpdGVtLCBtdXNpY01hcCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pO1xcbiAgICBzd2l0Y2ggKGdldE15VmFyKFxcXCJtdXNpY01hcFxcXCIsIG11c2ljTWFwWzBdKSkge1xcbiAgICAgICAgY2FzZSBtdXNpY01hcFswXTpcXG4gICAgICAgICAgICBnZXRNeU11c2ljUGFyc2UoKVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBtdXNpY01hcFsxXTpcXG4gICAgICAgICAgICBnZXRCdWlsZE11c2ljUGFyc2UoKVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICBnZXRCdWlsZExpc3RQYXJzZSgpXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgIH1cXG4gICAgc2V0UmVzdWx0KGxheW91dCk7XFxufVxcblxcbmNvbnN0IGdldE15TXVzaWNQYXJzZSA9ICgpID0+IHtcXG4gICAgbGV0IGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgIGxldCBkYXRhTWFwO1xcbiAgICBpZiAoZmlsZUV4aXN0KGRvd24pKSB7XFxuICAgICAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZGF0YU1hcCA9IHt9XFxuICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgIH1cXG4gICAgbXVzaWNNYXAgPSBbXFxcIue9keaYk+atjOWNlVxcXCIsIFxcXCLohb7orq/mrYzljZVcXFwiXTtcXG4gICAgbXVzaWNNYXAuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaXRlbSA9PSBnZXRNeVZhcihcXFwiTXVzaWNNeU1hcFxcXCIsIG11c2ljTWFwWzBdKSA/IFJpY2goU3Ryb25nKENvbG9yKGl0ZW0pKSkgOiBpdGVtLFxcbiAgICAgICAgICAgIHVybDogJChub2xvYWQpLmxhenlSdWxlKChpdGVtLCBlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiTXVzaWNNeU1hcFxcXCIsIGl0ZW0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgfSwgaXRlbSwgZW1wdHkpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25SZWZyZXNoXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICBzd2l0Y2ggKGdldE15VmFyKFxcXCLms6jplIBcXFwiLCBcXFwiMFxcXCIpKSB7XFxuICAgICAgICAgICAgY2FzZSBcXFwiMFxcXCI6XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCLms6jplIBcXFwiLCAxKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIuazqOmUgFxcXCIsIDApO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH1cXG4gICAgfSkpO1xcbiAgICBzd2l0Y2ggKGdldE15VmFyKFxcXCJNdXNpY015TWFwXFxcIiwgbXVzaWNNYXBbMF0pKSB7XFxuICAgICAgICBjYXNlIG11c2ljTWFwWzBdOlxcbiAgICAgICAgICAgIGdldE5ldEVhc2VQYXJzZShkYXRhTWFwLCBtdXNpY01hcClcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgZ2V0VGVuY2VudFBhcnNlKGRhdGFNYXAsIG11c2ljTWFwKVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxufVxcblxcbmNvbnN0IGdldEJ1aWxkTXVzaWNQYXJzZSA9ICgpID0+IHtcXG4gICAgbGV0IGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgIGxldCBkYXRhTWFwO1xcbiAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICBnZXRTYXZlRmlsZSA9IGZhbHNlXFxuICAgIGlmIChkYXRhTWFwLkJ1aWxkTXVzaWMgPT0gbnVsbCkge1xcbiAgICAgICAgZGF0YU1hcC5CdWlsZE11c2ljID0ge31cXG4gICAgICAgIGdldFNhdmVGaWxlID0gdHJ1ZVxcbiAgICB9XFxuICAgIGlmIChkYXRhTWFwLkJ1aWxkTXVzaWMuTmV0RWFzZSA9PSBudWxsKSB7XFxuICAgICAgICBkYXRhTWFwLkJ1aWxkTXVzaWMuTmV0RWFzZSA9IFtdXFxuICAgICAgICBnZXRTYXZlRmlsZSA9IHRydWVcXG4gICAgfVxcbiAgICBpZiAoZGF0YU1hcC5CdWlsZE11c2ljLlRlbmNlbnQgPT0gbnVsbCkge1xcbiAgICAgICAgZGF0YU1hcC5CdWlsZE11c2ljLlRlbmNlbnQgPSBbXVxcbiAgICAgICAgZ2V0U2F2ZUZpbGUgPSB0cnVlXFxuICAgIH1cXG4gICAgaWYgKGRhdGFNYXAuQnVpbGRNdXNpYy5Ld211c2ljY2FyID09IG51bGwpIHtcXG4gICAgICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5Ld211c2ljY2FyID0gW11cXG4gICAgICAgIGdldFNhdmVGaWxlID0gdHJ1ZVxcbiAgICB9XFxuICAgIGlmIChkYXRhTWFwLkJ1aWxkTXVzaWMuS3Vnb3UgPT0gbnVsbCkge1xcbiAgICAgICAgZGF0YU1hcC5CdWlsZE11c2ljLkt1Z291ID0gW11cXG4gICAgICAgIGdldFNhdmVGaWxlID0gdHJ1ZVxcbiAgICB9XFxuICAgIGlmIChkYXRhTWFwLkJ1aWxkTXVzaWMuTWlndSA9PSBudWxsKSB7XFxuICAgICAgICBkYXRhTWFwLkJ1aWxkTXVzaWMuTWlndSA9IFtdXFxuICAgICAgICBnZXRTYXZlRmlsZSA9IHRydWVcXG4gICAgfVxcbiAgICBpZiAoZ2V0U2F2ZUZpbGUpIHtcXG4gICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgIH1cXG4gICAgbXVzaWNNYXAgPSBbXFxcIue9keaYk+atjOWNlVxcXCIsIFxcXCLohb7orq/mrYzljZVcXFwiLCBcXFwi6YW35oiR5q2M5Y2VXFxcIiwgXFxcIumFt+eLl+atjOWNlVxcXCIsIFxcXCLlkqrlkpXmrYzljZVcXFwiXTtcXG4gICAgbXVzaWNNYXAuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaXRlbSA9PSBnZXRNeVZhcihcXFwiQnVpbGRNdXNpY1xcXCIsIG11c2ljTWFwWzBdKSA/IFJpY2goU3Ryb25nKENvbG9yKGl0ZW0pKSkgOiBpdGVtLFxcbiAgICAgICAgICAgIHVybDogJChub2xvYWQpLmxhenlSdWxlKChpdGVtLCBlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiQnVpbGRNdXNpY1xcXCIsIGl0ZW0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgfSwgaXRlbSwgZW1wdHkpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBzd2l0Y2ggKGdldE15VmFyKFxcXCJCdWlsZE11c2ljXFxcIiwgbXVzaWNNYXBbMF0pKSB7XFxuICAgICAgICBjYXNlIG11c2ljTWFwWzBdOlxcbiAgICAgICAgICAgIGRhdGFNYXAgPSBkYXRhTWFwLkJ1aWxkTXVzaWMuTmV0RWFzZVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBtdXNpY01hcFsxXTpcXG4gICAgICAgICAgICBkYXRhTWFwID0gZGF0YU1hcC5CdWlsZE11c2ljLlRlbmNlbnRcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgbXVzaWNNYXBbMl06XFxuICAgICAgICAgICAgZGF0YU1hcCA9IGRhdGFNYXAuQnVpbGRNdXNpYy5Ld211c2ljY2FyXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIG11c2ljTWFwWzNdOlxcbiAgICAgICAgICAgIGRhdGFNYXAgPSBkYXRhTWFwLkJ1aWxkTXVzaWMuS3Vnb3VcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgZGF0YU1hcCA9IGRhdGFNYXAuQnVpbGRNdXNpYy5NaWd1XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgIH1cXG4gICAgU2VsZWN0TWFwID0gW1xcXCLmrYzljZXliIbkuqtcXFwiLCBcXFwi5Yig6Zmk5q2M5Y2VXFxcIiwgXFxcIuatjOWNleenu+WKqFxcXCIsIFxcXCLmn6XnnIvlhoXlrrlcXFwiXVxcbiAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiU2VsZWN0TWFwXFxcIiwgU2VsZWN0TWFwKVxcbiAgICBkYXRhTWFwLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcXG4gICAgICAgIG5hbWUgPSBpdGVtLm5hbWVcXG4gICAgICAgIHNlbGVjdCA9ICQoZW1wdHkgKyBub2xvYWQpLmxhenlSdWxlKChtdXNpY01hcCwgU2VsZWN0TWFwLCBpLCBtaWQsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwic3dpdGNoXFxcIilcXG4gICAgICAgICAgICByZXR1cm4gZ2V0U2VsZWN0TWFwKG11c2ljTWFwLCBTZWxlY3RNYXAsIGksIG1pZCwgbmFtZSlcXG4gICAgICAgIH0sIG11c2ljTWFwLCBTZWxlY3RNYXAsIGksIGl0ZW0ubWlkLCBpdGVtLm5hbWUpXFxuICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImdldE1vdmVcXFwiLCBcXFwiXFxcIikpIHtcXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImdldE1vdmVcXFwiLCBcXFwiXFxcIikgPT0gaSkge1xcbiAgICAgICAgICAgICAgICBuYW1lID0gUmljaChTbWFsbChTcHJpbmdHcmVlbihuYW1lKSkpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHNlbGVjdCA9ICQoZW1wdHkpLmxhenlSdWxlKChtdXNpY01hcCwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgIGluZGV4ID0gTnVtYmVyKGdldE15VmFyKFxcXCJnZXRNb3ZlXFxcIikpXFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIkJ1aWxkTXVzaWNcXFwiLCBtdXNpY01hcFswXSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbMF06XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TW92ZShkYXRhTWFwLkJ1aWxkTXVzaWMuTmV0RWFzZSwgaW5kZXgsIGkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlIG11c2ljTWFwWzFdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldE1vdmUoZGF0YU1hcC5CdWlsZE11c2ljLlRlbmNlbnQsIGluZGV4LCBpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFsyXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRNb3ZlKGRhdGFNYXAuQnVpbGRNdXNpYy5Ld211c2ljY2FyLCBpbmRleCwgaSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbM106XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TW92ZShkYXRhTWFwLkJ1aWxkTXVzaWMuS3Vnb3UsIGluZGV4LCBpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRNb3ZlKGRhdGFNYXAuQnVpbGRNdXNpYy5NaWd1LCBpbmRleCwgaSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcImdldE1vdmVcXFwiKVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5XFxuICAgICAgICAgICAgfSwgbXVzaWNNYXAsIGkpXFxuICAgICAgICB9XFxuICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IG5hbWUsXFxuICAgICAgICAgICAgaW1nOiBpdGVtLnBpY1VybCxcXG4gICAgICAgICAgICB1cmw6IHNlbGVjdCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5q2M5Y2V5YiG5LqrXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChtdXNpY01hcCwgbWlkLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29weSA9IGdldE15VmFyKFxcXCJCdWlsZE11c2ljXFxcIiwgbXVzaWNNYXBbMF0pICsgXFxcIlxcXFxu5q2M5Y2V5ZCN56ew77yaXFxcIiArIG5hbWUgKyBcXFwiXFxcXG7mrYzljZXor4bliKvvvJpcXFwiICsgYmFzZTY0RW5jb2RlKFxcXCJcXFwiICsgbWlkICsgXFxcIlxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29weShnZXRDb3B5KVxcbiAgICAgICAgICAgICAgICAgICAgfSwgbXVzaWNNYXAsIGl0ZW0ubWlkLCBpdGVtLm5hbWUpXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5Yig6Zmk5q2M5Y2VXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChtdXNpY01hcCwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCLnoa7lrprlpb3kuoblkJfvvIzor6XmrYzljZXlsIbliKDpmaRcXFwiKS5jb25maXJtKChtdXNpY01hcCwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGdldE15VmFyKFxcXCJCdWlsZE11c2ljXFxcIiwgbXVzaWNNYXBbMF0pKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG11c2ljTWFwWzBdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5OZXRFYXNlLnNwbGljZShpLCAxKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFsxXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTWFwLkJ1aWxkTXVzaWMuVGVuY2VudC5zcGxpY2UoaSwgMSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbMl06XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU1hcC5CdWlsZE11c2ljLkt3bXVzaWNjYXIuc3BsaWNlKGksIDEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG11c2ljTWFwWzNdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFNYXAuQnVpbGRNdXNpYy5LdWdvdS5zcGxpY2UoaSwgMSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU1hcC5CdWlsZE11c2ljLk1pZ3Uuc3BsaWNlKGksIDEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuWIoOmZpOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIG11c2ljTWFwLCBpKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgbXVzaWNNYXAsIGkpXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi572u6aG25q2M5Y2VXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuYW1lLCBtdXNpY01hcCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIkJ1aWxkTXVzaWNcXFwiLCBtdXNpY01hcFswXSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFswXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhTWFwLkJ1aWxkTXVzaWMuTmV0RWFzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbMV06XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YU1hcC5CdWlsZE11c2ljLlRlbmNlbnRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG11c2ljTWFwWzJdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFNYXAuQnVpbGRNdXNpYy5Ld211c2ljY2FyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFszXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhTWFwLkJ1aWxkTXVzaWMuS3Vnb3VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFNYXAuQnVpbGRNdXNpYy5NaWd1XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UG9zaXRpb24oZGF0YSwgbmFtZSwgXFxcInRvcFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaXRlbS5uYW1lLCBtdXNpY01hcClcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLnva7lupXmrYzljZVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5hbWUsIG11c2ljTWFwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChnZXRNeVZhcihcXFwiQnVpbGRNdXNpY1xcXCIsIG11c2ljTWFwWzBdKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG11c2ljTWFwWzBdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFNYXAuQnVpbGRNdXNpYy5OZXRFYXNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBtdXNpY01hcFsxXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhTWFwLkJ1aWxkTXVzaWMuVGVuY2VudFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgbXVzaWNNYXBbMl06XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YU1hcC5CdWlsZE11c2ljLkt3bXVzaWNjYXJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIG11c2ljTWFwWzNdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFNYXAuQnVpbGRNdXNpYy5LdWdvdVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YU1hcC5CdWlsZE11c2ljLk1pZ3VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRQb3NpdGlvbihkYXRhLCBuYW1lLCBcXFwiZW5kXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaXRlbS5uYW1lLCBtdXNpY01hcClcXG4gICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9KVxcbiAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuatjOWNleWvvOWFpVxcXCIsXFxuICAgICAgICBpbWc6IGNvbmZpZy5pbXBvcnRGaWxlLFxcbiAgICAgICAgdXJsOiAkKFxcXCJ7e2NsaXBib2FyZH19XFxcIikuaW5wdXQoKG11c2ljTWFwKSA9PiB7XFxuICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgIHJldHVybiBnZXRJbXBvcnQobXVzaWNNYXAsIGlucHV0KVxcbiAgICAgICAgfSwgbXVzaWNNYXApLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIlxcbiAgICB9KVxcbn1cXG5cXG5jb25zdCBnZXRCdWlsZExpc3RQYXJzZSA9ICgpID0+IHtcXG4gICAgbGV0IGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgIGxldCBkYXRhTWFwO1xcbiAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICBpZiAoZGF0YU1hcC5CdWlsZExpc3QgPT0gbnVsbCkge1xcbiAgICAgICAgZGF0YU1hcC5CdWlsZExpc3QgPSBbXVxcbiAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgfVxcbiAgICBTZWxlY3RNYXAgPSBbXFxcIuatjOWNleWIhuS6q1xcXCIsIFxcXCLliKDpmaTmrYzljZVcXFwiLCBcXFwi5q2M5Y2V56e75YqoXFxcIiwgXFxcIue8lui+keatjOWNlVxcXCIsIFxcXCLliJvlu7rmrYzljZVcXFwiLCBcXFwi5p+l55yL5YaF5a65XFxcIl1cXG4gICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcIlNlbGVjdE1hcFxcXCIsIFNlbGVjdE1hcClcXG4gICAgZGF0YU1hcC5CdWlsZExpc3QuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgbmFtZSA9IGl0ZW0ubmFtZVxcbiAgICAgICAgc2VsZWN0ID0gJChlbXB0eSArIG5vbG9hZCkubGF6eVJ1bGUoKFNlbGVjdE1hcCwgaSwgaXRlbSkgPT4ge1xcbiAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICByZXR1cm4gZ2V0U2VsZWN0TGlzdE1hcChTZWxlY3RNYXAsIGksIGl0ZW0pXFxuICAgICAgICB9LCBTZWxlY3RNYXAsIGksIGl0ZW0pXFxuICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImdldE1vdmVcXFwiLCBcXFwiXFxcIikpIHtcXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImdldE1vdmVcXFwiLCBcXFwiXFxcIikgPT0gaSkge1xcbiAgICAgICAgICAgICAgICBuYW1lID0gUmljaChTbWFsbChTcHJpbmdHcmVlbihuYW1lKSkpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHNlbGVjdCA9ICQoZW1wdHkpLmxhenlSdWxlKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgaW5kZXggPSBOdW1iZXIoZ2V0TXlWYXIoXFxcImdldE1vdmVcXFwiKSlcXG4gICAgICAgICAgICAgICAgZ2V0TW92ZShkYXRhTWFwLkJ1aWxkTGlzdCwgaW5kZXgsIGkpXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiZ2V0TW92ZVxcXCIpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlcXG4gICAgICAgICAgICB9LCBpKVxcbiAgICAgICAgfVxcbiAgICAgICAgaW1hZ2VGaWxlID0gY29uZmlnLmltYWdlRmlsZTtcXG4gICAgICAgIGltYWdlID0gaXRlbS5waWNzIHx8IGltYWdlRmlsZTtcXG4gICAgICAgIGRhdGEgPSBpdGVtLmRhdGE7XFxuICAgICAgICBpZiAoaW1hZ2UgPT0gaW1hZ2VGaWxlICYmIGRhdGEubGVuZ3RoICE9IDApIHtcXG4gICAgICAgICAgICBpbWFnZSA9IGRhdGFbZGF0YS5sZW5ndGggLSAxXS5waWNzIHx8IGltYWdlRmlsZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogbmFtZSxcXG4gICAgICAgICAgICBpbWc6IGltYWdlLFxcbiAgICAgICAgICAgIHVybDogc2VsZWN0LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfM1xcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmrYzljZXliIbkuqtcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRDb3B5ID0gc2hhcmVQYXN0ZShiYXNlNjRFbmNvZGUoSlNPTi5zdHJpbmdpZnkoaXRlbSkpKSArIFxcXCJcXFxcblxcXFxu6Ieq5bu65q2M5Y2V77yaXFxcIiArIGl0ZW0ubmFtZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkoZ2V0Q29weSlcXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5Yig6Zmk5q2M5Y2VXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuehruWumuWlveS6huWQl++8jOivpeatjOWNleWwhuWIoOmZpFxcXCIpLmNvbmZpcm0oKGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU1hcC5CdWlsZExpc3Quc3BsaWNlKGksIDEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLliKDpmaTmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaSlcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLnva7pobbmrYzljZVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRQb3NpdGlvbihkYXRhTWFwLkJ1aWxkTGlzdCwgbmFtZSwgXFxcInRvcFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIue9ruW6leatjOWNlVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygobmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldFBvc2l0aW9uKGRhdGFNYXAuQnVpbGRMaXN0LCBuYW1lLCBcXFwiZW5kXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICB9LCBpdGVtLm5hbWUpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSlcXG4gICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmrYzljZXlr7zlhaVcXFwiLFxcbiAgICAgICAgaW1nOiBjb25maWcuaW1wb3J0RmlsZSxcXG4gICAgICAgIHVybDogJChcXFwie3tjbGlwYm9hcmR9fVxcXCIpLmlucHV0KCgpID0+IHtcXG4gICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgcmV0dXJuIGdldFNlbGVjdExpc3RJbXBvcnQoaW5wdXQpXFxuICAgICAgICB9KSxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfM1xcXCJcXG4gICAgfSlcXG59XFxuXFxuY29uc3QgZ2V0TmV0RWFzZVBhcnNlID0gKGRhdGFNYXAsIG11c2ljTWFwKSA9PiB7XFxuICAgIE5ldEVhc2VNYXAgPSBkYXRhTWFwLk5ldEVhc2VcXG4gICAgaWYgKE5ldEVhc2VNYXAgPT0gbnVsbCB8fCBOZXRFYXNlTWFwLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmn6VcXFxcbuivolxcXCIsXFxuICAgICAgICAgICAgZGVzYzogXFxcIui+k+WFpeWFs+mUruivjeafpeivoueUqOaIt1xcXCIsXFxuICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKChlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwi5YWz6ZSu6K+NXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgfSwgZW1wdHkpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJ0ZXh0YXJlYVxcXCIsXFxuICAgICAgICAgICAgICAgIGhlaWdodDogMyxcXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwi5YWz6ZSu6K+NXFxcIilcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgaWYgKGdldE15VmFyKFxcXCLlhbPplK7or41cXFwiLCBcXFwiXFxcIikgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBwYXRoID0gXFxcIi93ZWFwaS9zZWFyY2gvZ2V0XFxcIlxcbiAgICAgICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgICAgIFxcXCJzXFxcIjogZ2V0TXlWYXIoXFxcIuWFs+mUruivjVxcXCIpLFxcbiAgICAgICAgICAgICAgICBcXFwidHlwZVxcXCI6IDEwMDIsXFxuICAgICAgICAgICAgICAgIFxcXCJsaW1pdFxcXCI6IDMwLFxcbiAgICAgICAgICAgICAgICBcXFwib2Zmc2V0XFxcIjogMFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkYXRhID0gTmV0RWFzZUNvbmZpZyhwYXRoLCBib2R5LCBcXFwiUE9TVFxcXCIpXFxuICAgICAgICAgICAgZGF0YS5yZXN1bHQudXNlcnByb2ZpbGVzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5pY2tuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLmF2YXRhclVybCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkubGF6eVJ1bGUoKGVtcHR5LCB1c2VySWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGEgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5OZXRFYXNlID0gW11cXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLk5ldEVhc2UucHVzaCh1c2VySWQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YSksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlcXG4gICAgICAgICAgICAgICAgICAgIH0sIGVtcHR5LCBpdGVtLnVzZXJJZCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgYXBpX3N0ciA9IFxcXCIvYXBpL3VzZXIvcGxheWxpc3RcXFwiXFxuICAgICAgICBhcGlfc3RyID0gYnVpbGRVcmwoYXBpX3N0ciwge1xcbiAgICAgICAgICAgIG9mZnNldDogMCxcXG4gICAgICAgICAgICB1aWQ6IGRhdGFNYXAuTmV0RWFzZVswXSArIFxcXCJcXFwiLFxcbiAgICAgICAgICAgIGxpbWl0OiAxMDAwXFxuICAgICAgICB9KVxcbiAgICAgICAgZGF0YSA9IE5ldEVhc2VDb25maWcoYXBpX3N0ciwgXFxcIlxcXCIsIFxcXCJHRVRcXFwiKS5wbGF5bGlzdFxcbiAgICAgICAgU2VsZWN0TWFwID0gW1xcXCLmrYzljZXliIbkuqtcXFwiLCBcXFwi5p+l55yL5YaF5a65XFxcIl1cXG4gICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJTZWxlY3RNYXBcXFwiLCBTZWxlY3RNYXApXFxuICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgaWYgKGl0ZW0ubmFtZS5zZWFyY2goXFxcIuWWnOasoueahOmfs+S5kFxcXCIpIDwgMSkge1xcbiAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBpdGVtLmNvdmVySW1nVXJsLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGVtcHR5ICsgbm9sb2FkKS5sYXp5UnVsZSgobXVzaWNNYXAsIFNlbGVjdE1hcCwgbWlkLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcInN3aXRjaFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE15U2VsZWN0TWFwKG11c2ljTWFwLCBTZWxlY3RNYXAsIG1pZCwgbmFtZSwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICB9LCBtdXNpY01hcCwgU2VsZWN0TWFwLCBpdGVtLmlkLCBpdGVtLm5hbWUpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5q2M5Y2V5YiG5LqrXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG11c2ljTWFwLCBtaWQsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldENvcHkgPSBnZXRNeVZhcihcXFwiTXVzaWNNeU1hcFxcXCIsIG11c2ljTWFwWzBdKSArIFxcXCJcXFxcbuatjOWNleWQjeensO+8mlxcXCIgKyBuYW1lICsgXFxcIlxcXFxu5q2M5Y2V6K+G5Yir77yaXFxcIiArIGJhc2U2NEVuY29kZShcXFwiXFxcIiArIG1pZCArIFxcXCJcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weShnZXRDb3B5KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBtdXNpY01hcCwgaXRlbS5pZCwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIGlmIChnZXRNeVZhcihcXFwi5rOo6ZSAXFxcIiwgXFxcIjBcXFwiKSA9PSAxKSB7XFxuICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogUmljaChTbWFsbChHcmF5KFxcXCLvvZ7vvZ7vvZ7ms6jplIDnu5HlrprvvZ7vvZ7vvZ5cXFwiKSkpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoZW1wdHkpLmxhenlSdWxlKChlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGEgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBkYXRhLk5ldEVhc2UgPSBbXVxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YSksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwi5rOo6ZSAXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eVxcbiAgICAgICAgICAgICAgICB9LCBlbXB0eSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0VGVuY2VudFBhcnNlID0gKGRhdGFNYXAsIG11c2ljTWFwKSA9PiB7XFxuICAgIFRlbmNlbnRNYXAgPSBkYXRhTWFwLlRlbmNlbnRcXG4gICAgaWYgKFRlbmNlbnRNYXAgPT0gbnVsbCB8fCBUZW5jZW50TWFwLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgZGVzYzogXFxcIuivt+i+k+WFpeaCqOeahFFR5Y+3XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICB0eXBlOiBcXFwidGV4dGFyZWFcXFwiLFxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMsXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwic2V0SXRlbSgnUVEnLCBpbnB1dClcXFwiLFxcbiAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZyhHcmF5KFxcXCLnu5HlrprotKblj7dcXFwiKSkpLFxcbiAgICAgICAgICAgIHVybDogJChlbXB0eSkubGF6eVJ1bGUoKGVtcHR5KSA9PiB7XFxuICAgICAgICAgICAgICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGEgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgIGRhdGEuVGVuY2VudCA9IFtdXFxuICAgICAgICAgICAgICAgIGRhdGEuVGVuY2VudC5wdXNoKGdldEl0ZW0oXFxcIlFRXFxcIikpXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGEpLCAwKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlcXG4gICAgICAgICAgICB9LCBlbXB0eSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgYXBpX3N0ciA9IFxcXCJodHRwOi8vYy55LnFxLmNvbS9yc2MvZmNnaS1iaW4vZmNnX3VzZXJfY3JlYXRlZF9kaXNzXFxcIlxcbiAgICAgICAgYXBpX3N0ciA9IGJ1aWxkVXJsKGFwaV9zdHIsIHtcXG4gICAgICAgICAgICBob3N0dWluOiBkYXRhTWFwLlRlbmNlbnRbMF0gKyBcXFwiXFxcIixcXG4gICAgICAgICAgICBzaXplOiAxMDAwLFxcbiAgICAgICAgICAgIGZvcm1hdDogXFxcImpzb25cXFwiXFxuICAgICAgICB9KVxcbiAgICAgICAgZGF0YSA9IFRlbmNlbnRDb25maWcoYXBpX3N0cilcXG4gICAgICAgIFNlbGVjdE1hcCA9IFtcXFwi5q2M5Y2V5YiG5LqrXFxcIiwgXFxcIuafpeeci+WGheWuuVxcXCJdXFxuICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiU2VsZWN0TWFwXFxcIiwgU2VsZWN0TWFwKVxcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBkYXRhID0gZGF0YS5kYXRhLmRpc3NsaXN0LmZpbHRlcihpdGVtID0+IGl0ZW0udGlkICE9IDApXFxuICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5kaXNzX25hbWUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uZGlzc19jb3ZlcixcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSArIG5vbG9hZCkubGF6eVJ1bGUoKG11c2ljTWFwLCBTZWxlY3RNYXAsIG1pZCwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFxcXCJzd2l0Y2hcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRNeVNlbGVjdE1hcChtdXNpY01hcCwgU2VsZWN0TWFwLCBtaWQsIG5hbWUsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgfSwgbXVzaWNNYXAsIFNlbGVjdE1hcCwgaXRlbS50aWQsIGl0ZW0uZGlzc19uYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfM1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuatjOWNleWIhuS6q1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChtdXNpY01hcCwgbWlkLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb3B5ID0gZ2V0TXlWYXIoXFxcIk11c2ljTXlNYXBcXFwiLCBtdXNpY01hcFswXSkgKyBcXFwiXFxcXG7mrYzljZXlkI3np7DvvJpcXFwiICsgbmFtZSArIFxcXCJcXFxcbuatjOWNleivhuWIq++8mlxcXCIgKyBiYXNlNjRFbmNvZGUoXFxcIlxcXCIgKyBtaWQgKyBcXFwiXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcHkoZ2V0Q29weSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgbXVzaWNNYXAsIGl0ZW0udGlkLCBpdGVtLmRpc3NfbmFtZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgaWYgKGRhdGEubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICAgICAgZ2V0QWpheEVuZFBhcnNlKCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFJpY2goU21hbGwoR3JheShcXFwi772e772e772eXFxcIiArIGRhdGEubWVzc2FnZSArIFxcXCLvvZ7vvZ7vvZ5cXFwiKSkpLFxcbiAgICAgICAgICAgICAgICB1cmw6IGVtcHR5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGdldE15VmFyKFxcXCLms6jplIBcXFwiLCBcXFwiMFxcXCIpID09IDEpIHtcXG4gICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoKFNtYWxsKEdyYXkoXFxcIu+9nu+9nu+9nuazqOmUgOe7keWumu+9nu+9nu+9nlxcXCIpKSksXFxuICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkubGF6eVJ1bGUoKGVtcHR5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YSA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGRhdGEuVGVuY2VudCA9IFtdXFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFxcXCLms6jplIBcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5XFxuICAgICAgICAgICAgICAgIH0sIGVtcHR5KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG5cXG5jb25zdCBnZXRDb25maXJtID0gKCkgPT4ge1xcbiAgICBpZiAoZ2V0SXRlbShcXFwi5aSx6LSlXFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIueoi+W6j+aPkOmGklxcXCIsXFxuICAgICAgICAgICAgY29udGVudDogXFxcIuiLpeaSreaUvuWksei0pe+8jOWwhuaQnOe0ouatjOabslxcXCIsXFxuICAgICAgICAgICAgY29uZmlybTogKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCLlpLHotKVcXFwiLCBcXFwidHJ1ZVxcXCIpO1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5bey5omT5byAXFxcIik7XFxuICAgICAgICAgICAgICAgIGphdmEubGFuZy5UaHJlYWQuc2xlZXAoMzAwMCk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLliLfmlrDlvLnlh7rmm7TlpJrpgInpobnvvIzlj6/ph43mlrDpgInmi6lcXFwiKVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgY2FuY2VsOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIuWksei0pVxcXCIsIFxcXCJmYWxzZVxcXCIpO1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5bey5YWz6ZetXFxcIik7XFxuICAgICAgICAgICAgICAgIGphdmEubGFuZy5UaHJlYWQuc2xlZXAoMzAwMCk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLliLfmlrDlvLnlh7rmm7TlpJrpgInpobnvvIzlj6/ph43mlrDpgInmi6lcXFwiKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0SW5jbHVkZWRQYXJzZSA9ICgpID0+IHtcXG4gICAgZ2V0Q29uZmlybSgpXFxuICAgIGFkZExpc3RlbmVyKFxcXCJvblJlZnJlc2hcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIuabtOWkmlxcXCIsIFxcXCIwXFxcIikpIHtcXG4gICAgICAgICAgICBjYXNlIFxcXCIwXFxcIjpcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIuabtOWkmlxcXCIsIDEpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwi5pu05aSaXFxcIiwgMCk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfVxcbiAgICB9KSk7XFxuICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgKCkgPT4ge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwi5pu05aSaXFxcIilcXG4gICAgfSlcXG4gICAgU2VsZWN0TWFwID0gW1xcXCLmlLblvZXmrYzmm7JcXFwiLCBcXFwi5pKt5pS+6YCJ5oupXFxcIiwgXFxcIuiBhuWQrOatjOabslxcXCJdO1xcbiAgICBpZiAoZ2V0TXlWYXIoXFxcIuabtOWkmlxcXCIsIFxcXCIwXFxcIikgPT0gMSAmJiBNWV9QQUdFID09IDEpIHtcXG4gICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGNsczogXFxcInNlbGVjdFxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU21hbGwoR3JheShcXFwi772e772e772e5pu05aSa6YCJ6aG5772e772e772eXFxcIikpKSxcXG4gICAgICAgICAgICB1cmw6ICQoU2VsZWN0TWFwLCAyLCBcXFwi5bey6YCJ5oupLVxcXCIgKyBcXFwiW1xcXCIgKyBnZXRNeVZhcihcXFwi5pu05aSa5Yqf6IO9XFxcIiwgU2VsZWN0TWFwW1NlbGVjdE1hcC5sZW5ndGggLSAxXSkgKyBcXFwiXVxcXCIpLnNlbGVjdCgoZW1wdHkpID0+IHtcXG4gICAgICAgICAgICAgICAgc3dpdGNoIChpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwi5pKt5pS+6YCJ5oupXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLnqIvluo/mj5DphpJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBcXFwi6Iul5pKt5pS+5aSx6LSl77yM5bCG5pCc57Si5q2M5puyXFxcXG7lvZPliY3nirbmgIHvvJpbXFxcIiArIGdldEl0ZW0oXFxcIuWksei0pVxcXCIsIFxcXCJmYWxzZVxcXCIpICsgXFxcIl1cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCLlpLHotKVcXFwiLCBcXFwidHJ1ZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuW3suaJk+W8gFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWw6ICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIuWksei0pVxcXCIsIFxcXCJmYWxzZVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuW3suWFs+mXrVxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIuabtOWkmuWKn+iDvVxcXCIsIGlucHV0KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcIuabtOWkmlxcXCIpXFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhcXFwic2VsZWN0XFxcIilcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5XFxuICAgICAgICAgICAgfSwgZW1wdHkpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICBjbHM6IFxcXCJzZWxlY3RcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgY2xzOiBcXFwic2VsZWN0XFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0SW5jbHVkZWRGdW4gPSAoKSA9PiB7XFxuICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgIGV2YWwoXFxcImRhdGEgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgIGlmIChkYXRhLkJ1aWxkTGlzdCA9PSBudWxsKSB7XFxuICAgICAgICBkYXRhLkJ1aWxkTGlzdCA9IFtdXFxuICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICBldmFsKFxcXCJkYXRhID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICB9XFxuICAgIG5hbWVzID0gZGF0YS5CdWlsZExpc3QubWFwKGl0ID0+IGl0Lm5hbWUpXFxuICAgIHVwTWFwID0gbmFtZXMuY29uY2F0KFtcXFwi5Yib5bu65q2M5Y2VXFxcIl0pXFxuICAgIGluZGV4ID0gMVxcbiAgICBpZiAodXBNYXAubGVuZ3RoID4gMikge1xcbiAgICAgICAgaW5kZXggPSAyXFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0SW5jbHVkZWROZXRFYXNlID0gKGl0ZW0sIGlucHV0KSA9PiB7XFxuICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgIGNhc2UgXFxcIuWIm+W7uuatjOWNlVxcXCI6XFxuICAgICAgICAgICAgcmV0dXJuICQoZW1wdHkpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIuWIm+W7uuatjOWNlVxcXCIpXFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgQ3JlYXRlTGlzdFBhcnNlKCk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChsYXlvdXQpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgZXZhbChcXFwiZGF0YSA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICBnZXRCcmVhayA9IGZhbHNlXFxuICAgICAgICAgICAgZGF0YS5CdWlsZExpc3QuZm9yRWFjaCgoSXRlbSwgeCkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gSXRlbS5uYW1lKSB7XFxuICAgICAgICAgICAgICAgICAgICBnZXRCcmVhayA9IHRydWVcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0geFxcbiAgICAgICAgICAgICAgICAgICAgZGF0YXMgPSBpdGVtXFxuICAgICAgICAgICAgICAgICAgICBJdGVtLmRhdGEuZm9yRWFjaCgoSXRlbXMsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbXMubWlkID09IGl0ZW0uaWQgJiYgSXRlbXMuaWQgPT0gXFxcIm5ldGVhc2VcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4cyA9IGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBpZiAoZ2V0QnJlYWspIHtcXG4gICAgICAgICAgICAgICAgY29udCA9IGl0ZW0uYXIubWFwKHRhZyA9PiB0YWcubmFtZSkuam9pbihcXFwi44CBXFxcIilcXG4gICAgICAgICAgICAgICAgZGF0YS5CdWlsZExpc3RbaW5kZXhdLmRhdGEucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBjb250OiBjb250LFxcbiAgICAgICAgICAgICAgICAgICAgcGljczogaXRlbS5hbC5waWNVcmwsXFxuICAgICAgICAgICAgICAgICAgICBtaWQ6IGl0ZW0uaWQsXFxuICAgICAgICAgICAgICAgICAgICBpZDogXFxcIm5ldGVhc2VcXFwiXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGEpLCAwKTtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaUtuW9leaIkOWKn1xcXCIpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuehruWumuWlveS6huWQl++8jOatjOabsuWwhuimhuebluWOn+acieeahFxcXCIpLmNvbmZpcm0oKGluZGV4LCBpbmRleHMsIGRhdGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBCdWlsZExpc3QgPSBkYXRhTWFwLkJ1aWxkTGlzdFxcbiAgICAgICAgICAgICAgICAgICAgQnVpbGRMaXN0ID0gQnVpbGRMaXN0W2luZGV4XS5kYXRhXFxuICAgICAgICAgICAgICAgICAgICBjb250ID0gZGF0YS5hci5tYXAodGFnID0+IHRhZy5uYW1lKS5qb2luKFxcXCLjgIFcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgQnVpbGRMaXN0W2luZGV4c10gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnQ6IGNvbnQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljczogZGF0YS5hbC5waWNVcmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkOiBkYXRhLmlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcXFwibmV0ZWFzZVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLopobnm5bmiJDlip9cXFwiKVxcbiAgICAgICAgICAgICAgICB9LCBpbmRleCwgaW5kZXhzLCBkYXRhcylcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0SW5jbHVkZWRUZW5jZW50ID0gKGl0ZW0sIGlucHV0KSA9PiB7XFxuICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgIGNhc2UgXFxcIuWIm+W7uuatjOWNlVxcXCI6XFxuICAgICAgICAgICAgcmV0dXJuICQoZW1wdHkpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIuWIm+W7uuatjOWNlVxcXCIpXFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgQ3JlYXRlTGlzdFBhcnNlKCk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChsYXlvdXQpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgZXZhbChcXFwiZGF0YSA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICBnZXRCcmVhayA9IGZhbHNlXFxuICAgICAgICAgICAgZGF0YS5CdWlsZExpc3QuZm9yRWFjaCgoSXRlbSwgeCkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gSXRlbS5uYW1lKSB7XFxuICAgICAgICAgICAgICAgICAgICBnZXRCcmVhayA9IHRydWVcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0geFxcbiAgICAgICAgICAgICAgICAgICAgZGF0YXMgPSBpdGVtXFxuICAgICAgICAgICAgICAgICAgICBJdGVtLmRhdGEuZm9yRWFjaCgoSXRlbXMsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbXMubWlkID09IGl0ZW0ubWlkICYmIEl0ZW1zLmlkID09IFxcXCJ0ZW5jZW50XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleHMgPSBpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCcmVhayA9IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBpZiAoZ2V0QnJlYWspIHtcXG4gICAgICAgICAgICAgICAgc3VidGl0bGUgPSBcXFwiXFxcIlxcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5zdWJ0aXRsZSkge1xcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBpdGVtLnN1YnRpdGxlICsgXFxcIi1cXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgc2luZ2VyID0gaXRlbS5zaW5nZXIubWFwKHRhZyA9PiB0YWcubmFtZSkuam9pbihcXFwi44CBXFxcIilcXG4gICAgICAgICAgICAgICAgaW1nID0gY29uZmlnLmltYWdlRmlsZVxcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5hbGJ1bS5taWQpIHtcXG4gICAgICAgICAgICAgICAgICAgIGltZyA9IFxcXCJodHRwczovL3kuZ3RpbWcuY24vbXVzaWMvcGhvdG9fbmV3L1QwMDJSMzAweDMwME0wMDBcXFwiICsgaXRlbS5hbGJ1bS5taWQgKyBcXFwiLmpwZ1xcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkYXRhLkJ1aWxkTGlzdFtpbmRleF0uZGF0YS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBjb250OiBzdWJ0aXRsZSArIHNpbmdlcixcXG4gICAgICAgICAgICAgICAgICAgIHBpY3M6IGltZyxcXG4gICAgICAgICAgICAgICAgICAgIG1pZDogaXRlbS5taWQsXFxuICAgICAgICAgICAgICAgICAgICBpZDogXFxcInRlbmNlbnRcXFwiXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGEpLCAwKTtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaUtuW9leaIkOWKn1xcXCIpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuehruWumuWlveS6huWQl++8jOatjOabsuWwhuimhuebluWOn+acieeahFxcXCIpLmNvbmZpcm0oKGluZGV4LCBpbmRleHMsIGRhdGEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBCdWlsZExpc3QgPSBkYXRhTWFwLkJ1aWxkTGlzdFxcbiAgICAgICAgICAgICAgICAgICAgQnVpbGRMaXN0ID0gQnVpbGRMaXN0W2luZGV4XS5kYXRhXFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5zdWJ0aXRsZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gZGF0YS5zdWJ0aXRsZSArIFxcXCItXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgc2luZ2VyID0gZGF0YS5zaW5nZXIubWFwKHRhZyA9PiB0YWcubmFtZSkuam9pbihcXFwi44CBXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIGltZyA9IGNvbmZpZy5pbWFnZUZpbGVcXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmFsYnVtLm1pZCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZyA9IFxcXCJodHRwczovL3kuZ3RpbWcuY24vbXVzaWMvcGhvdG9fbmV3L1QwMDJSMzAweDMwME0wMDBcXFwiICsgZGF0YS5hbGJ1bS5taWQgKyBcXFwiLmpwZ1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIEJ1aWxkTGlzdFtpbmRleHNdID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udDogc3VidGl0bGUgKyBzaW5nZXIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljczogaW1nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZDogZGF0YS5taWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJ0ZW5jZW50XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuimhuebluaIkOWKn1xcXCIpXFxuICAgICAgICAgICAgICAgIH0sIGluZGV4LCBpbmRleHMsIGRhdGFzKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBicmVhaztcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBnZXRJbmNsdWRlZEt3bXVzaWNjYXIgPSAoaXRlbSwgaW5wdXQpID0+IHtcXG4gICAgc3dpdGNoIChpbnB1dCkge1xcbiAgICAgICAgY2FzZSBcXFwi5Yib5bu65q2M5Y2VXFxcIjpcXG4gICAgICAgICAgICByZXR1cm4gJChlbXB0eSkucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwi5Yib5bu65q2M5Y2VXFxcIilcXG4gICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICBDcmVhdGVMaXN0UGFyc2UoKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGxheW91dCk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICBldmFsKFxcXCJkYXRhID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgIGdldEJyZWFrID0gZmFsc2VcXG4gICAgICAgICAgICBkYXRhLkJ1aWxkTGlzdC5mb3JFYWNoKChJdGVtLCB4KSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBJdGVtLm5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGdldEJyZWFrID0gdHJ1ZVxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB4XFxuICAgICAgICAgICAgICAgICAgICBkYXRhcyA9IGl0ZW1cXG4gICAgICAgICAgICAgICAgICAgIEl0ZW0uZGF0YS5mb3JFYWNoKChJdGVtcywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJdGVtcy5taWQgPT0gaXRlbS5yaWQgJiYgSXRlbXMuaWQgPT0gXFxcImt1d29cXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4cyA9IGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJyZWFrID0gZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGlmIChnZXRCcmVhaykge1xcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFydGlzdCkge1xcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBpdGVtLmFydGlzdCArIFxcXCItXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNpbmdlciA9IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFsYnVtKSB7XFxuICAgICAgICAgICAgICAgICAgICBzaW5nZXIgPSBpdGVtLmFsYnVtXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgZGF0YS5CdWlsZExpc3RbaW5kZXhdLmRhdGEucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBjb250OiBzdWJ0aXRsZSArIHNpbmdlcixcXG4gICAgICAgICAgICAgICAgICAgIHBpY3M6IGl0ZW0ucGljIHx8IGNvbmZpZy5pbWFnZUZpbGUsXFxuICAgICAgICAgICAgICAgICAgICBtaWQ6IGl0ZW0ucmlkLFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJrdXdvXFxcIlxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmlLblvZXmiJDlip9cXFwiKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCLnoa7lrprlpb3kuoblkJfvvIzmrYzmm7LlsIbopobnm5bljp/mnInnmoRcXFwiKS5jb25maXJtKChpbmRleCwgaW5kZXhzLCBkYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgQnVpbGRMaXN0ID0gZGF0YU1hcC5CdWlsZExpc3RcXG4gICAgICAgICAgICAgICAgICAgIEJ1aWxkTGlzdCA9IEJ1aWxkTGlzdFtpbmRleF0uZGF0YVxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBcXFwiXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuYXJ0aXN0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBkYXRhLmFydGlzdCArIFxcXCItXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgc2luZ2VyID0gXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmFsYnVtKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2VyID0gZGF0YS5hbGJ1bVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgQnVpbGRMaXN0W2luZGV4c10gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS5uYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnQ6IHN1YnRpdGxlICsgc2luZ2VyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY3M6IGRhdGEucGljIHx8IGNvbmZpZy5pbWFnZUZpbGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWlkOiBkYXRhLnJpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXFxcImt1d29cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi6KaG55uW5oiQ5YqfXFxcIilcXG4gICAgICAgICAgICAgICAgfSwgaW5kZXgsIGluZGV4cywgZGF0YXMpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxufVxcblxcbmNvbnN0IGdldEluY2x1ZGVkS3Vnb3UgPSAoZGF0ZSwgaXRlbSwgaSwgaW5wdXQpID0+IHtcXG4gICAgc3dpdGNoIChpbnB1dCkge1xcbiAgICAgICAgY2FzZSBcXFwi5Yib5bu65q2M5Y2VXFxcIjpcXG4gICAgICAgICAgICByZXR1cm4gJChlbXB0eSkucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldFBhZ2VUaXRsZShcXFwi5Yib5bu65q2M5Y2VXFxcIilcXG4gICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICBDcmVhdGVMaXN0UGFyc2UoKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGxheW91dCk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICBldmFsKFxcXCJkYXRhID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgIGdldEJyZWFrID0gZmFsc2VcXG4gICAgICAgICAgICBkYXRhLkJ1aWxkTGlzdC5mb3JFYWNoKChJdGVtLCB4KSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBJdGVtLm5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGdldEJyZWFrID0gdHJ1ZVxcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB4XFxuICAgICAgICAgICAgICAgICAgICBkYXRhcyA9IGl0ZW1cXG4gICAgICAgICAgICAgICAgICAgIEl0ZW0uZGF0YS5mb3JFYWNoKChJdGVtcywgbCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJdGVtcy5taWQuaGFzaCA9PSBkYXRlW2ldLmhhc2ggJiYgSXRlbXMuaWQgPT0gXFxcImt1Z291XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleHMgPSBsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCcmVhayA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgaWYgKGdldEJyZWFrKSB7XFxuICAgICAgICAgICAgICAgIGRhdGEuQnVpbGRMaXN0W2luZGV4XS5kYXRhLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0ZVtpXS5maWxlbmFtZSB8fCBkYXRlW2ldLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBwaWNzOiBpdGVtLmltZyxcXG4gICAgICAgICAgICAgICAgICAgIG1pZDogZGF0ZVtpXSxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwia3Vnb3VcXFwiXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGEpLCAwKTtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaUtuW9leaIkOWKn1xcXCIpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuehruWumuWlveS6huWQl++8jOatjOabsuWwhuimhuebluWOn+acieeahFxcXCIpLmNvbmZpcm0oKGluZGV4LCBpbmRleHMsIGRhdGEsIGRhdGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBCdWlsZExpc3QgPSBkYXRhTWFwLkJ1aWxkTGlzdFxcbiAgICAgICAgICAgICAgICAgICAgQnVpbGRMaXN0ID0gQnVpbGRMaXN0W2luZGV4XS5kYXRhXFxuICAgICAgICAgICAgICAgICAgICBCdWlsZExpc3RbaW5kZXhzXSA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBkYXRlLmZpbGVuYW1lIHx8IGRhdGUubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNzOiBkYXRhLmltZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQ6IGRhdGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJrdWdvdVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLopobnm5bmiJDlip9cXFwiKVxcbiAgICAgICAgICAgICAgICB9LCBpbmRleCwgaW5kZXhzLCBkYXRhcywgZGF0ZVtpXSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgIH1cXG59XFxuXFxuY29uc3QgZ2V0SW5jbHVkZWRNaWd1ID0gKGl0ZW0sIGlucHV0KSA9PiB7XFxuICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgIGNhc2UgXFxcIuWIm+W7uuatjOWNlVxcXCI6XFxuICAgICAgICAgICAgcmV0dXJuICQoZW1wdHkpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIuWIm+W7uuatjOWNlVxcXCIpXFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgQ3JlYXRlTGlzdFBhcnNlKCk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChsYXlvdXQpO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgZXZhbChcXFwiZGF0YSA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICBnZXRCcmVhayA9IGZhbHNlXFxuICAgICAgICAgICAgZGF0YS5CdWlsZExpc3QuZm9yRWFjaCgoSXRlbSwgeCkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gSXRlbS5uYW1lKSB7XFxuICAgICAgICAgICAgICAgICAgICBnZXRCcmVhayA9IHRydWVcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0geFxcbiAgICAgICAgICAgICAgICAgICAgZGF0YXMgPSBpdGVtXFxuICAgICAgICAgICAgICAgICAgICBJdGVtLmRhdGEuZm9yRWFjaCgoSXRlbXMsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbXMubWlkLmNvcHlyaWdodElkID09IGl0ZW0uY29weXJpZ2h0SWQgJiYgSXRlbXMuaWQgPT0gXFxcIm1pZ3VcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4cyA9IGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJyZWFrID0gZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGlmIChnZXRCcmVhaykge1xcbiAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgIGlmIChpdGVtLmFsYnVtKSB7XFxuICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IGl0ZW0uYWxidW0gKyBcXFwiLVxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzaW5nZXIgPSBpdGVtLnNpbmdlckxpc3QubWFwKHRhZyA9PiB0YWcubmFtZSkuam9pbihcXFwi44CBXFxcIilcXG4gICAgICAgICAgICAgICAgZGF0YS5CdWlsZExpc3RbaW5kZXhdLmRhdGEucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLnNvbmdOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgY29udDogc3VidGl0bGUgKyBzaW5nZXIsXFxuICAgICAgICAgICAgICAgICAgICBwaWNzOiBNaWd1RmlsbChpdGVtLmltZzEpLFxcbiAgICAgICAgICAgICAgICAgICAgbWlkOiBpdGVtLFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJtaWd1XFxcIlxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmlLblvZXmiJDlip9cXFwiKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCLnoa7lrprlpb3kuoblkJfvvIzmrYzmm7LlsIbopobnm5bljp/mnInnmoRcXFwiKS5jb25maXJtKChpbmRleCwgaW5kZXhzLCBkYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgQnVpbGRMaXN0ID0gZGF0YU1hcC5CdWlsZExpc3RcXG4gICAgICAgICAgICAgICAgICAgIEJ1aWxkTGlzdCA9IEJ1aWxkTGlzdFtpbmRleF0uZGF0YVxcbiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBcXFwiXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuYWxidW0pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IGRhdGEuYWxidW0gKyBcXFwiLVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHNpbmdlciA9IGRhdGEuc2luZ2VyTGlzdC5tYXAodGFnID0+IHRhZy5uYW1lKS5qb2luKFxcXCLjgIFcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgQnVpbGRMaXN0W2luZGV4c10gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGF0YS5zb25nTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250OiBzdWJ0aXRsZSArIHNpbmdlcixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNzOiBNaWd1RmlsbChkYXRhLmltZzEpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZDogZGF0YSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogXFxcIm1pZ3VcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi6KaG55uW5oiQ5YqfXFxcIilcXG4gICAgICAgICAgICAgICAgfSwgaW5kZXgsIGluZGV4cywgZGF0YXMpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICB9XFxufVxcblxcbmNvbnN0IE5ldEVhc2VQYXJzZSA9IChkYXRhKSA9PiB7XFxuICAgIHRyeSB7XFxuICAgICAgICBnZXRJbmNsdWRlZFBhcnNlKCk7XFxuICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgc2luZ2VyID0gaXRlbS5hci5tYXAodGFnID0+IHRhZy5uYW1lKS5qb2luKFxcXCLjgIFcXFwiKVxcbiAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogc2luZ2VyLFxcbiAgICAgICAgICAgICAgICBpbWc6IGl0ZW0uYWwucGljVXJsLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoZW1wdHkpLmxhenlSdWxlKChpdGVtLCBTZWxlY3RNYXApID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIuabtOWkmuWKn+iDvVxcXCIsIFNlbGVjdE1hcFsxXSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFNlbGVjdE1hcFswXTpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW5jbHVkZWRGdW4oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh1cE1hcCwgaW5kZXgsIFxcXCLmlLblvZXmrYzmm7JcXFwiKS5zZWxlY3QoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmNsdWRlZE5ldEVhc2UoaXRlbSwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE5ldEVhc2VQbGF5ZXIoaXRlbS5pZCwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLCBTZWxlY3RNYXApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbShcXFwiZ2V0Q29sVHlwZXNcXFwiLCBcXFwiY2FyZF9waWNfM1xcXCIpLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaUtuW9leatjOabslxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRJbmNsdWRlZEZ1bigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHVwTWFwLCBpbmRleCwgXFxcIuaUtuW9leatjOabslxcXCIpLnNlbGVjdCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEluY2x1ZGVkTmV0RWFzZShpdGVtLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5pCc57SiID0+IFxcXCIgKyBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Q29uZmlybVNlYXJjaChuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0ubmFtZSlcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgZ2V0QWpheEVuZFBhcnNlKCk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGdldEFqYXhFbmRQYXJzZSgpO1xcbiAgICB9XFxufVxcblxcbmNvbnN0IFRlbmNlbnRQYXJzZSA9IChkYXRhKSA9PiB7XFxuICAgIGdldEluY2x1ZGVkUGFyc2UoKTtcXG4gICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgc3VidGl0bGUgPSBcXFwiXFxcIlxcbiAgICAgICAgaWYgKGl0ZW0uc3VidGl0bGUpIHtcXG4gICAgICAgICAgICBzdWJ0aXRsZSA9IGl0ZW0uc3VidGl0bGUgKyBcXFwiLVxcXCJcXG4gICAgICAgIH1cXG4gICAgICAgIHNpbmdlciA9IGl0ZW0uc2luZ2VyLm1hcCh0YWcgPT4gdGFnLm5hbWUpLmpvaW4oXFxcIuOAgVxcXCIpXFxuICAgICAgICBpbWcgPSBjb25maWcuaW1hZ2VGaWxlXFxuICAgICAgICBpZiAoaXRlbS5hbGJ1bS5taWQpIHtcXG4gICAgICAgICAgICBpbWcgPSBcXFwiaHR0cHM6Ly95Lmd0aW1nLmNuL211c2ljL3Bob3RvX25ldy9UMDAyUjMwMHgzMDBNMDAwXFxcIiArIGl0ZW0uYWxidW0ubWlkICsgXFxcIi5qcGdcXFwiXFxuICAgICAgICB9XFxuICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogc3VidGl0bGUgKyBzaW5nZXIsXFxuICAgICAgICAgICAgaW1nOiBpbWcsXFxuICAgICAgICAgICAgdXJsOiAkKGVtcHR5KS5sYXp5UnVsZSgoaXRlbSwgU2VsZWN0TWFwKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgc3dpdGNoIChnZXRNeVZhcihcXFwi5pu05aSa5Yqf6IO9XFxcIiwgU2VsZWN0TWFwWzFdKSkge1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBTZWxlY3RNYXBbMF06XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW5jbHVkZWRGdW4oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHVwTWFwLCBpbmRleCwgXFxcIuaUtuW9leatjOabslxcXCIpLnNlbGVjdCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmNsdWRlZFRlbmNlbnQoaXRlbSwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VGVuY2VudFBsYXllcihpdGVtLm1pZCwgaXRlbS50aXRsZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgaXRlbSwgU2VsZWN0TWFwKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbShcXFwiZ2V0Q29sVHlwZXNcXFwiLCBcXFwiY2FyZF9waWNfM1xcXCIpLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5pS25b2V5q2M5puyXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEluY2x1ZGVkRnVuKClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh1cE1hcCwgaW5kZXgsIFxcXCLmlLblvZXmrYzmm7JcXFwiKS5zZWxlY3QoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5jbHVkZWRUZW5jZW50KGl0ZW0sIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICB9LCBpdGVtKVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaQnOe0oiA9PiBcXFwiICsgaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb25maXJtU2VhcmNoKG5hbWUpXFxuICAgICAgICAgICAgICAgICAgICB9LCBpdGVtLnRpdGxlKVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pXFxuICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICBnZXRBamF4RW5kUGFyc2UoKTtcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBLd211c2ljY2FyUGFyc2UgPSAoZGF0YSkgPT4ge1xcbiAgICBnZXRJbmNsdWRlZFBhcnNlKCk7XFxuICAgIGRhdGEuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgc3VidGl0bGUgPSBcXFwiXFxcIlxcbiAgICAgICAgaWYgKGl0ZW0uYXJ0aXN0KSB7XFxuICAgICAgICAgICAgc3VidGl0bGUgPSBpdGVtLmFydGlzdCArIFxcXCItXFxcIlxcbiAgICAgICAgfVxcbiAgICAgICAgc2luZ2VyID0gXFxcIlxcXCJcXG4gICAgICAgIGlmIChpdGVtLmFsYnVtKSB7XFxuICAgICAgICAgICAgc2luZ2VyID0gaXRlbS5hbGJ1bVxcbiAgICAgICAgfVxcbiAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgZGVzYzogc3VidGl0bGUgKyBzaW5nZXIsXFxuICAgICAgICAgICAgaW1nOiBpdGVtLnBpYyB8fCBjb25maWcuaW1hZ2VGaWxlLFxcbiAgICAgICAgICAgIHVybDogJChlbXB0eSkubGF6eVJ1bGUoKGl0ZW0sIFNlbGVjdE1hcCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIuabtOWkmuWKn+iDvVxcXCIsIFNlbGVjdE1hcFsxXSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU2VsZWN0TWFwWzBdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEluY2x1ZGVkRnVuKClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh1cE1hcCwgaW5kZXgsIFxcXCLmlLblvZXmrYzmm7JcXFwiKS5zZWxlY3QoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5jbHVkZWRLd211c2ljY2FyKGl0ZW0sIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEt3bXVzaWNjYXJQbGF5ZXIoaXRlbS5yaWQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGl0ZW0sIFNlbGVjdE1hcCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IGdldEl0ZW0oXFxcImdldENvbFR5cGVzXFxcIiwgXFxcImNhcmRfcGljXzNcXFwiKSxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaUtuW9leatjOabslxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoaXRlbSwgcGljcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRJbmNsdWRlZEZ1bigpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQodXBNYXAsIGluZGV4LCBcXFwi5pS25b2V5q2M5puyXFxcIikuc2VsZWN0KChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEluY2x1ZGVkS3dtdXNpY2NhcihpdGVtLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgaXRlbSlcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmkJzntKIgPT4gXFxcIiArIGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb25maXJtU2VhcmNoKG5hbWUpXFxuICAgICAgICAgICAgICAgICAgICB9LCBpdGVtLm5hbWUpXFxuICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSlcXG4gICAgaWYgKGRhdGEubGVuZ3RoID09IDApIHtcXG4gICAgICAgIGdldEFqYXhFbmRQYXJzZSgpO1xcbiAgICB9XFxufVxcblxcbmNvbnN0IEt1Z291UGFyc2UgPSAoZGF0YSkgPT4ge1xcbiAgICBnZXRJbmNsdWRlZFBhcnNlKCk7XFxuICAgIGlUYWdzID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcIjppVGFnc1xcXCIgKyBKU09OLnN0cmluZ2lmeShkYXRhKSwgW10pO1xcbiAgICBpZiAoaVRhZ3MubGVuZ3RoID09IDApIHtcXG4gICAgICAgIGlUYWdzID0gZGF0YS5tYXAoaXRlbSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIEt1Z291Q29uZmlnKGl0ZW0pXFxuICAgICAgICB9KVxcbiAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcIjppVGFnc1xcXCIgKyBKU09OLnN0cmluZ2lmeShkYXRhKSwgaVRhZ3MpO1xcbiAgICB9XFxuICAgIGlUYWdzLmZvckVhY2goKGl0ZW0sIGkpID0+IHtcXG4gICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YVtpXS5maWxlbmFtZSB8fCBkYXRhW2ldLm5hbWUsXFxuICAgICAgICAgICAgaW1nOiBpdGVtLmltZyB8fCBjb25maWcuaW1hZ2VGaWxlLFxcbiAgICAgICAgICAgIHVybDogJChlbXB0eSkubGF6eVJ1bGUoKGRhdGEsIGl0ZW0sIFNlbGVjdE1hcCwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIuabtOWkmuWKn+iDvVxcXCIsIFNlbGVjdE1hcFsxXSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU2VsZWN0TWFwWzBdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEluY2x1ZGVkRnVuKClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh1cE1hcCwgaW5kZXgsIFxcXCLmlLblvZXmrYzmm7JcXFwiKS5zZWxlY3QoKGRhdGEsIGl0ZW0sIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5jbHVkZWRLdWdvdShkYXRhLCBpdGVtLCBpLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBkYXRhLCBpdGVtLCBpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRLdWdvdVBsYXllcihkYXRhW2ldLCAoZGF0YVtpXS5maWxlbmFtZSB8fCBkYXRhW2ldLm5hbWUpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBkYXRhLCBpdGVtLCBTZWxlY3RNYXAsIGkpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBnZXRJdGVtKFxcXCJnZXRDb2xUeXBlc1xcXCIsIFxcXCJjYXJkX3BpY18zXFxcIiksXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmlLblvZXmrYzmm7JcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGRhdGEsIGl0ZW0sIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW5jbHVkZWRGdW4oKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHVwTWFwLCBpbmRleCwgXFxcIuaUtuW9leatjOabslxcXCIpLnNlbGVjdCgoZGF0YSwgaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbmNsdWRlZEt1Z291KGRhdGEsIGl0ZW0sIGksIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGRhdGEsIGl0ZW0sIGkpXFxuICAgICAgICAgICAgICAgICAgICB9LCBkYXRhLCBpdGVtLCBpKVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaQnOe0oiA9PiBcXFwiICsgKGRhdGFbaV0uZmlsZW5hbWUgfHwgZGF0YVtpXS5uYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb25maXJtU2VhcmNoKG5hbWUpXFxuICAgICAgICAgICAgICAgICAgICB9LCAoZGF0YVtpXS5maWxlbmFtZSB8fCBkYXRhW2ldLm5hbWUpKVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pXFxuICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICBnZXRBamF4RW5kUGFyc2UoKTtcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBNaWd1UGFyc2UgPSAoZGF0YSkgPT4ge1xcbiAgICBnZXRJbmNsdWRlZFBhcnNlKCk7XFxuICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIHN1YnRpdGxlID0gXFxcIlxcXCJcXG4gICAgICAgIGlmIChpdGVtLmFsYnVtKSB7XFxuICAgICAgICAgICAgc3VidGl0bGUgPSBpdGVtLmFsYnVtICsgXFxcIi1cXFwiXFxuICAgICAgICB9XFxuICAgICAgICBzaW5nZXIgPSBpdGVtLnNpbmdlckxpc3QgfHwgaXRlbS5zaW5nZXJzXFxuICAgICAgICBzaW5nZXIgPSBzaW5nZXIubWFwKHRhZyA9PiB0YWcubmFtZSkuam9pbihcXFwi44CBXFxcIilcXG4gICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaXRlbS5zb25nTmFtZSB8fCBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgZGVzYzogc3VidGl0bGUgKyBzaW5nZXIsXFxuICAgICAgICAgICAgaW1nOiBNaWd1RmlsbChpdGVtLmltZzEgfHwgaXRlbS5pbWdJdGVtc1swXS5pbWcpLFxcbiAgICAgICAgICAgIHVybDogJChlbXB0eSkubGF6eVJ1bGUoKGl0ZW0sIFNlbGVjdE1hcCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIuabtOWkmuWKn+iDvVxcXCIsIFNlbGVjdE1hcFsxXSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgU2VsZWN0TWFwWzBdOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEluY2x1ZGVkRnVuKClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh1cE1hcCwgaW5kZXgsIFxcXCLmlLblvZXmrYzmm7JcXFwiKS5zZWxlY3QoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5jbHVkZWRNaWd1KGl0ZW0sIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldE1pZ3VQbGF5ZXIoaXRlbSwgKGl0ZW0uc29uZ05hbWUgfHwgaXRlbS5uYW1lKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgaXRlbSwgU2VsZWN0TWFwKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbShcXFwiZ2V0Q29sVHlwZXNcXFwiLCBcXFwiY2FyZF9waWNfM1xcXCIpLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5pS25b2V5q2M5puyXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEluY2x1ZGVkRnVuKClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh1cE1hcCwgaW5kZXgsIFxcXCLmlLblvZXmrYzmm7JcXFwiKS5zZWxlY3QoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SW5jbHVkZWRNaWd1KGl0ZW0sIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0pXFxuICAgICAgICAgICAgICAgICAgICB9LCBpdGVtKVxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuaQnOe0oiA9PiBcXFwiICsgKGl0ZW0uc29uZ05hbWUgfHwgaXRlbS5uYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRDb25maXJtU2VhcmNoKG5hbWUpXFxuICAgICAgICAgICAgICAgICAgICB9LCAoaXRlbS5zb25nTmFtZSB8fCBpdGVtLm5hbWUpKVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pXFxuICAgIGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICBnZXRBamF4RW5kUGFyc2UoKTtcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBnZXRCdWlsZExpc3RNYXAgPSAoU2VsZWN0TWFwLCBpbmRleCwgaXRlbSwgaW5kZXhzKSA9PiB7XFxuICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgIGV2YWwoXFxcImRhdGEgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgIGlmIChkYXRhLkJ1aWxkTGlzdCA9PSBudWxsKSB7XFxuICAgICAgICBkYXRhLkJ1aWxkTGlzdCA9IFtdXFxuICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICBldmFsKFxcXCJkYXRhID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICB9XFxuICAgIHN3aXRjaCAoZ2V0TXlWYXIoXFxcIuaUtuW9leWKn+iDvVxcXCIsIFNlbGVjdE1hcFtTZWxlY3RNYXAubGVuZ3RoIC0gMV0pKSB7XFxuICAgICAgICBjYXNlIFNlbGVjdE1hcFswXTpcXG4gICAgICAgICAgICByZXR1cm4gJChcXFwi56Gu5a6a5aW95LqG5ZCX77yM6K+l5q2M5puy5bCG5Yig6ZmkXFxcIikuY29uZmlybSgoaW5kZXgsIGluZGV4cykgPT4ge1xcbiAgICAgICAgICAgICAgICBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICBkYXRhTWFwLkJ1aWxkTGlzdFtpbmRleHNdLmRhdGEuc3BsaWNlKGluZGV4LCAxKVxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5Yig6Zmk5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgfSwgaW5kZXgsIGluZGV4cylcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgU2VsZWN0TWFwWzFdOlxcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJnZXRNb3ZlXFxcIiwgaW5kZXgpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFNlbGVjdE1hcFsyXTpcXG4gICAgICAgICAgICBuYW1lcyA9IGRhdGEuQnVpbGRMaXN0Lm1hcChpdCA9PiBpdC5uYW1lKVxcbiAgICAgICAgICAgIHVwTWFwID0gbmFtZXMuY29uY2F0KFtcXFwi5Yib5bu65q2M5Y2VXFxcIl0pXFxuICAgICAgICAgICAgbGVuZ3RoID0gMVxcbiAgICAgICAgICAgIGlmICh1cE1hcC5sZW5ndGggPiAyKSB7XFxuICAgICAgICAgICAgICAgIGxlbmd0aCA9IDJcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuICQodXBNYXAsIGxlbmd0aCwgU2VsZWN0TWFwWzJdKS5zZWxlY3QoKGVtcHR5LCBJbmRleCwgSW5kZXhzKSA9PiB7XFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcIuWIm+W7uuatjOWNlVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoZW1wdHkpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoXFxcIuWIm+W7uuatjOWNlVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3JlYXRlTGlzdFBhcnNlKClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGxheW91dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtID0gZGF0YU1hcC5CdWlsZExpc3RbSW5kZXhzXS5kYXRhW0luZGV4XVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEJyZWFrID0gZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTWFwLkJ1aWxkTGlzdC5mb3JFYWNoKChJdGVtLCB4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBJdGVtLm5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJyZWFrID0gdHJ1ZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSB4XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtLmRhdGEuZm9yRWFjaCgoSXRlbXMsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbXMubmFtZSA9PSBpdGVtLm5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhzID0gaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QnJlYWsgPSBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldEJyZWFrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFNYXAuQnVpbGRMaXN0W0luZGV4c10uZGF0YS5zcGxpY2UoSW5kZXgsIDEpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFNYXAuQnVpbGRMaXN0W2luZGV4XS5kYXRhLnB1c2goaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pu05o2i5oiQ5YqfXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuehruWumuWlveS6huWQl++8jOatjOabsuWwhuimhuebluWOn+acieeahFxcXCIpLmNvbmZpcm0oKGluZGV4LCBpbmRleHMsIEluZGV4LCBJbmRleHMsIGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBCdWlsZExpc3QgPSBkYXRhTWFwLkJ1aWxkTGlzdFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGRMaXN0ID0gQnVpbGRMaXN0W2luZGV4XS5kYXRhXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZExpc3RbaW5kZXhzXSA9IGl0ZW1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJbmRleHMgIT0gaW5kZXgpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTWFwLkJ1aWxkTGlzdFtJbmRleHNdLmRhdGEuc3BsaWNlKEluZGV4LCAxKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoZGF0YU1hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuimhuebluaIkOWKn1xcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgsIGluZGV4cywgSW5kZXgsIEluZGV4cywgaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBlbXB0eSwgaW5kZXgsIGluZGV4cylcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgcmV0dXJuICQoZW1wdHkpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG4gICAgICAgICAgICAgICAgc3dpdGNoIChpdGVtLmlkKSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJuZXRlYXNlXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0TmV0RWFzZVBsYXllcihpdGVtLm1pZCwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJ0ZW5jZW50XFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0VGVuY2VudFBsYXllcihpdGVtLm1pZCwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJrdXdvXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0S3dtdXNpY2NhclBsYXllcihpdGVtLm1pZClcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwia3Vnb3VcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZXRLdWdvdVBsYXllcihpdGVtLm1pZCwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJtaWd1XFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0TWlndVBsYXllcihpdGVtLm1pZCwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBpdGVtKVxcbiAgICB9XFxuICAgIHJldHVybiBlbXB0eVxcbn1cXG5cXG5jb25zdCBCdWlsZExpc3RQYXJzZSA9IChpbmRleCkgPT4ge1xcbiAgICBnZXRDb25maXJtKClcXG4gICAgU2VsZWN0TWFwID0gW1xcXCLliKDpmaTmrYzmm7JcXFwiLCBcXFwi5q2M5puy56e75YqoXFxcIiwgXFxcIuabtOaNouatjOWNlVxcXCIsIFxcXCLmkq3mlL7pgInmi6lcXFwiLCBcXFwi6IGG5ZCs5q2M5puyXFxcIl1cXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uUmVmcmVzaFxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgc3dpdGNoIChnZXRNeVZhcihcXFwi5pu05aSaXFxcIiwgXFxcIjBcXFwiKSkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcIjBcXFwiOlxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwi5pu05aSaXFxcIiwgMSk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCLmm7TlpJpcXFwiLCAwKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9XFxuICAgIH0pKTtcXG4gICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAoKSA9PiB7XFxuICAgICAgICBjbGVhck15VmFyKFxcXCLmm7TlpJpcXFwiKVxcbiAgICB9KVxcbiAgICBpZiAoZ2V0TXlWYXIoXFxcIuabtOWkmlxcXCIsIFxcXCIwXFxcIikgPT0gMSkge1xcbiAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgY2xzOiBcXFwic2VsZWN0XFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogUmljaChTbWFsbChHcmF5KFxcXCLvvZ7vvZ7vvZ7mm7TlpJrpgInpobnvvZ7vvZ7vvZ5cXFwiKSkpLFxcbiAgICAgICAgICAgIHVybDogJChTZWxlY3RNYXAsIDIsIFxcXCLlt7LpgInmi6ktXFxcIiArIFxcXCJbXFxcIiArIGdldE15VmFyKFxcXCLmlLblvZXlip/og71cXFwiLCBTZWxlY3RNYXBbU2VsZWN0TWFwLmxlbmd0aCAtIDFdKSArIFxcXCJdXFxcIikuc2VsZWN0KChlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCLmkq3mlL7pgInmi6lcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm0oe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIueoi+W6j+aPkOmGklxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFxcXCLoi6Xmkq3mlL7lpLHotKXvvIzlsIbmkJzntKLmrYzmm7JcXFxcbuW9k+WJjeeKtuaAge+8mltcXFwiICsgZ2V0SXRlbShcXFwi5aSx6LSlXFxcIiwgXFxcImZhbHNlXFxcIikgKyBcXFwiXVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm06ICgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIuWksei0pVxcXCIsIFxcXCJ0cnVlXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5bey5omT5byAXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbDogKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwi5aSx6LSlXFxcIiwgXFxcImZhbHNlXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5bey5YWz6ZetXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwi5pS25b2V5Yqf6IO9XFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwi5pu05aSaXFxcIilcXG4gICAgICAgICAgICAgICAgZGVsZXRlSXRlbUJ5Q2xzKFxcXCJzZWxlY3RcXFwiKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlcXG4gICAgICAgICAgICB9LCBlbXB0eSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIGNsczogXFxcInNlbGVjdFxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBjbHM6IFxcXCJzZWxlY3RcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICBkYXRhID0gZGF0YU1hcC5CdWlsZExpc3RbaW5kZXhdLmRhdGFcXG4gICAgaWYgKGRhdGEubGVuZ3RoICE9IDApIHtcXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgIG5hbWUgPSBpdGVtLm5hbWVcXG4gICAgICAgICAgICBzZWxlY3QgPSAkKGVtcHR5ICsgbm9sb2FkKS5sYXp5UnVsZSgoU2VsZWN0TWFwLCBpLCBpdGVtLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcInN3aXRjaFxcXCIpXFxuICAgICAgICAgICAgICAgIHJldHVybiBnZXRCdWlsZExpc3RNYXAoU2VsZWN0TWFwLCBpLCBpdGVtLCBpbmRleClcXG4gICAgICAgICAgICB9LCBTZWxlY3RNYXAsIGksIGl0ZW0sIGluZGV4KVxcbiAgICAgICAgICAgIGlmIChnZXRNeVZhcihcXFwiZ2V0TW92ZVxcXCIsIFxcXCJcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcImdldE1vdmVcXFwiLCBcXFwiXFxcIikgPT0gaSkge1xcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IFJpY2goU21hbGwoU3ByaW5nR3JlZW4obmFtZSkpKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHNlbGVjdCA9ICQoZW1wdHkpLmxhenlSdWxlKChpbmRleCwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImRhdGFNYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBpbmRleHMgPSBOdW1iZXIoZ2V0TXlWYXIoXFxcImdldE1vdmVcXFwiKSlcXG4gICAgICAgICAgICAgICAgICAgIGdldE1vdmUoZGF0YU1hcC5CdWlsZExpc3RbaW5kZXhdLmRhdGEsIGluZGV4cywgaSlcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcImdldE1vdmVcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHlcXG4gICAgICAgICAgICAgICAgfSwgaW5kZXgsIGkpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG5hbWUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0uY29udCxcXG4gICAgICAgICAgICAgICAgaW1nOiBpdGVtLnBpY3MgfHwgY29uZmlnLmltYWdlRmlsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBzZWxlY3QsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBnZXRJdGVtKFxcXCJnZXRDb2xUeXBlc1xcXCIsIFxcXCJjYXJkX3BpY18zXFxcIiksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpbmhlcml0VGl0bGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5pCc57SiID0+IFxcXCIgKyBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Q29uZmlybVNlYXJjaChuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0ubmFtZSlcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIoOmZpFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGluZGV4LCBpbmRleHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuehruWumuWlveS6huWQl++8jOivpeatjOabsuWwhuWIoOmZpFxcXCIpLmNvbmZpcm0oKGluZGV4LCBpbmRleHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd24gPSBjb25maWcuZG93bkZpbGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YU1hcC5CdWlsZExpc3RbaW5kZXhzXS5kYXRhLnNwbGljZShpbmRleCwgMSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuWIoOmZpOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgaW5kZXhzKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGksIGluZGV4KVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi572u6aG2XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygobmFtZSwgaW5kZXhzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJkYXRhTWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlKGNvbmZpZy5yZXF1aXJlRmlsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFBvc2l0aW9uKGRhdGFNYXAuQnVpbGRMaXN0W2luZGV4c10uZGF0YSwgbmFtZSwgXFxcInRvcFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGFNYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXRlbS5uYW1lLCBpbmRleClcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIue9ruW6lVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKG5hbWUsIGluZGV4cykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiZGF0YU1hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQb3NpdGlvbihkYXRhTWFwLkJ1aWxkTGlzdFtpbmRleHNdLmRhdGEsIG5hbWUsIFxcXCJlbmRcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhTWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0ubmFtZSwgaW5kZXgpXFxuICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBnZXRBamF4RW5kUGFyc2UoKTtcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBDcmVhdGVMaXN0UGFyc2UgPSAoKSA9PiB7XFxuICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgIGRlc2M6IFxcXCLor7fovpPlhaXmrYzljZXlkI3np7BcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHR5cGU6IFxcXCJ0ZXh0YXJlYVxcXCIsXFxuICAgICAgICAgICAgaGVpZ2h0OiAzLFxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwic2V0SXRlbSgn5ZCN56ewJywgaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0sIHtcXG4gICAgICAgIGRlc2M6IFxcXCLor7fovpPlhaXmrYzljZXlsIHpnaLvvIjpnZ7lv4XloavvvIlcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHR5cGU6IFxcXCJ0ZXh0YXJlYVxcXCIsXFxuICAgICAgICAgICAgaGVpZ2h0OiAzLFxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwic2V0SXRlbSgn5bCB6Z2iJywgaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZyhHcmF5KFxcXCLliJvlu7rmrYzljZVcXFwiKSkpLFxcbiAgICAgICAgdXJsOiAkKGVtcHR5KS5sYXp5UnVsZSgoZW1wdHkpID0+IHtcXG4gICAgICAgICAgICBkb3duID0gY29uZmlnLmRvd25GaWxlO1xcbiAgICAgICAgICAgIGV2YWwoXFxcImRhdGEgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgcGljcyA9IGdldEl0ZW0oXFxcIuWwgemdolxcXCIpXFxuICAgICAgICAgICAgbmFtZSA9IGdldEl0ZW0oXFxcIuWQjeensFxcXCIpXFxuICAgICAgICAgICAgZ2V0QnJlYWsgPSB0cnVlXFxuICAgICAgICAgICAgaWYgKG5hbWUgIT0gdW5kZWZpbmVkICYmIG5hbWUgIT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICAgICAgZGF0YS5CdWlsZExpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09IGl0ZW0ubmFtZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEJyZWFrID0gZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZ2V0QnJlYWsgPSBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoZ2V0QnJlYWspIHtcXG4gICAgICAgICAgICAgICAgaWYgKHBpY3MgPT0gXFxcIum7mOiupFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHBpY3MgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkYXRhTXVzaWMgPSB7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgcGljczogcGljcyxcXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IFtdXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgZGF0YS5CdWlsZExpc3QucHVzaChkYXRhTXVzaWMpXFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGRhdGEpLCAwKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5Yib5bu65aSx6LSl77yB77yBXFxcIilcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYmFjaygpXFxuICAgICAgICAgICAgcmV0dXJuIGVtcHR5XFxuICAgICAgICB9LCBlbXB0eSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuY29uc3QgZ2V0RWRpdFBhcnNlID0gKGksIGl0ZW0pID0+IHtcXG4gICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgZGVzYzogaXRlbS5uYW1lLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHR5cGU6IFxcXCJ0ZXh0YXJlYVxcXCIsXFxuICAgICAgICAgICAgaGVpZ2h0OiAzLFxcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwic2V0SXRlbSgn5ZCN56ewJywgaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0sIHtcXG4gICAgICAgIGRlc2M6IGl0ZW0ucGljcyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICB0eXBlOiBcXFwidGV4dGFyZWFcXFwiLFxcbiAgICAgICAgICAgIGhlaWdodDogMyxcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInNldEl0ZW0oJ+WwgemdoicsIGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogUmljaChTdHJvbmcoR3JheShcXFwi56Gu6K6k5L+u5pS5XFxcIikpKSxcXG4gICAgICAgIHVybDogJChlbXB0eSkubGF6eVJ1bGUoKGVtcHR5LCBpKSA9PiB7XFxuICAgICAgICAgICAgZG93biA9IGNvbmZpZy5kb3duRmlsZTtcXG4gICAgICAgICAgICBldmFsKFxcXCJkYXRhID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgIHBpY3MgPSBnZXRJdGVtKFxcXCLlsIHpnaJcXFwiKVxcbiAgICAgICAgICAgIG5hbWUgPSBnZXRJdGVtKFxcXCLlkI3np7BcXFwiKVxcbiAgICAgICAgICAgIGdldEJyZWFrID0gdHJ1ZVxcbiAgICAgICAgICAgIGluZGV4ID0gXFxcIlxcXCJcXG4gICAgICAgICAgICBpZiAobmFtZSAhPSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICAgICAgZGF0YS5CdWlsZExpc3QuZm9yRWFjaCgoaXRlbSwgeCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gaXRlbS5uYW1lKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QnJlYWsgPSBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0geFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBnZXRCcmVhayA9IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChnZXRCcmVhayB8fCBpbmRleCA9PSBpKSB7XFxuICAgICAgICAgICAgICAgIGlmIChwaWNzID09IHVuZGVmaW5lZCB8fCBwaWNzID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBwaWNzID0gZGF0YS5CdWlsZExpc3RbaV0ucGljc1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBpY3MgPT0gXFxcIum7mOiupFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgIHBpY3MgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGRhdGEuQnVpbGRMaXN0W2ldLm5hbWVcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBkYXRhLkJ1aWxkTGlzdFtpXS5uYW1lID0gbmFtZVxcbiAgICAgICAgICAgICAgICBkYXRhLkJ1aWxkTGlzdFtpXS5waWNzID0gcGljc1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShkYXRhKSwgMCk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuS/ruaUueWksei0pe+8ge+8ge+8gVxcXCIpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGJhY2soKVxcbiAgICAgICAgICAgIHJldHVybiBlbXB0eVxcbiAgICAgICAgfSwgZW1wdHksIGkpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcblxcbmNvbnN0IGdldENvbmZpcm1TZWFyY2ggPSAobmFtZSkgPT4ge1xcbiAgICBpZiAoZ2V0SXRlbShcXFwi5aSx6LSlXFxcIiwgXFxcImZhbHNlXFxcIikgPT0gXFxcInRydWVcXFwiICYmIGdldE15VmFyKFxcXCJzd2l0Y2hcXFwiLCBcXFwiMFxcXCIpID09IFxcXCIwXFxcIikge1xcbiAgICAgICAgcHV0TXlWYXIoXFxcInN3aXRjaFxcXCIsIFxcXCIxXFxcIilcXG4gICAgICAgIHJldHVybiBjb25maWcuc2VhcmNoc0ZpbGUgKyBcXFwiJnBhZ2U9ZnlwYWdlJnNlYXJjaFRlcm1zPVxcXCIgKyBlbmNvZGVVUklDb21wb25lbnQobmFtZSk7XFxuICAgIH1cXG4gICAgdG9hc3QoXFxcIuaaguaXoOi1hOa6kFxcXCIpXFxuICAgIHJldHVybiBlbXB0eVxcbn1cXG5cXG5jb25zdCBnZXROZXRFYXNlUGxheWVyID0gKG1pZCwgbmFtZSkgPT4ge1xcbiAgICBsZXQgbXVzaWNVcmwgPSBcXFwiL2FwaS9zb25nL2VuaGFuY2UvcGxheWVyL3VybFxcXCJcXG4gICAgbXVzaWNVcmwgPSBidWlsZFVybChtdXNpY1VybCwge1xcbiAgICAgICAgYnI6IDMyMDAwMCxcXG4gICAgICAgIGlkczogW21pZCArIFxcXCJcXFwiXVxcbiAgICB9KVxcbiAgICBsZXQgbXVzaWNNYXAgPSBOZXRFYXNlQ29uZmlnKG11c2ljVXJsLCBcXFwiXFxcIiwgXFxcIkdFVFxcXCIpXFxuICAgIGxldCBseXNpY1VybCA9IFxcXCIvYXBpL3NvbmcvbHlyaWNcXFwiXFxuICAgIGx5c2ljVXJsID0gYnVpbGRVcmwobHlzaWNVcmwsIHtcXG4gICAgICAgIG9zOiBcXFwib3N4XFxcIixcXG4gICAgICAgIGlkOiBtaWQgKyBcXFwiXFxcIixcXG4gICAgICAgIGx2OiBcXFwiLTFcXFwiLFxcbiAgICAgICAga3Y6IFxcXCItMVxcXCIsXFxuICAgICAgICB0djogXFxcIi0xXFxcIlxcbiAgICB9KVxcbiAgICBsZXQgbHlzaWNNYXAgPSBOZXRFYXNlQ29uZmlnKGx5c2ljVXJsLCBcXFwiXFxcIiwgXFxcIkdFVFxcXCIpXFxuICAgIGlmIChtdXNpY01hcC5kYXRhWzBdLnVybCkge1xcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICB1cmxzOiBbbXVzaWNNYXAuZGF0YVswXS51cmxdLFxcbiAgICAgICAgICAgIGx5cmljOiBseXNpY01hcC5scmMubHlyaWNcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgcmV0dXJuIGdldENvbmZpcm1TZWFyY2gobmFtZSlcXG59XFxuXFxuY29uc3QgZ2V0VGVuY2VudFBsYXllciA9IChtaWQsIG5hbWUpID0+IHtcXG4gICAgbGV0IHR5cGVNYXAgPSB7XFxuICAgICAgICBtNGE6IHtcXG4gICAgICAgICAgICBzOiBcXFwiQzQwMFxcXCIsXFxuICAgICAgICAgICAgZTogXFxcIi5tNGFcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIDEyODoge1xcbiAgICAgICAgICAgIHM6IFxcXCJNNTAwXFxcIixcXG4gICAgICAgICAgICBlOiBcXFwiLm1wM1xcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAgMzIwOiB7XFxuICAgICAgICAgICAgczogXFxcIk04MDBcXFwiLFxcbiAgICAgICAgICAgIGU6IFxcXCIubXAzXFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICBhcGU6IHtcXG4gICAgICAgICAgICBzOiBcXFwiQTAwMFxcXCIsXFxuICAgICAgICAgICAgZTogXFxcIi5hcGVcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIGZsYWM6IHtcXG4gICAgICAgICAgICBzOiBcXFwiRjAwMFxcXCIsXFxuICAgICAgICAgICAgZTogXFxcIi5mbGFjXFxcIixcXG4gICAgICAgIH0sXFxuICAgIH07XFxuICAgIGxldCB0aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKClcXG4gICAgbGV0IGd1aWQgPSAoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwKS50b0ZpeGVkKDApO1xcbiAgICBsZXQgdHlwZU9iaiA9IHR5cGVNYXBbXFxcIjEyOFxcXCJdO1xcbiAgICBsZXQgZmlsZSA9IHR5cGVPYmoucyArIG1pZCArIG1pZCArIHR5cGVPYmouZTtcXG4gICAgbGV0IHJlc3VsdCA9IGJ1aWxkVXJsKFxcXCJodHRwczovL3UueS5xcS5jb20vY2dpLWJpbi9tdXNpY3UuZmNnXFxcIiwge1xcbiAgICAgICAgXFxcIi1cXFwiOiBcXFwiZ2V0cGxheXNvbmd2a2V5XFxcIixcXG4gICAgICAgIGdfdGs6IDUzODEsXFxuICAgICAgICBob3N0VWluOiAwLFxcbiAgICAgICAgZm9ybWF0OiBcXFwianNvblxcXCIsXFxuICAgICAgICBpbkNoYXJzZXQ6IFxcXCJ1dGY4XFxcIixcXG4gICAgICAgIG91dENoYXJzZXQ6IFxcXCJ1dGYtOMKsaWNlPTBcXFwiLFxcbiAgICAgICAgcGxhdGZvcm06IFxcXCJ5cXEuanNvblxcXCIsXFxuICAgICAgICBuZWVkTmV3Q29kZTogMCxcXG4gICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICByZXFfMDoge1xcbiAgICAgICAgICAgICAgICBtb2R1bGU6IFxcXCJ2a2V5LkdldFZrZXlTZXJ2ZXJcXFwiLFxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IFxcXCJDZ2lHZXRWa2V5XFxcIixcXG4gICAgICAgICAgICAgICAgcGFyYW06IHtcXG4gICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lOiBbZmlsZV0sXFxuICAgICAgICAgICAgICAgICAgICBndWlkOiBndWlkLFxcbiAgICAgICAgICAgICAgICAgICAgc29uZ21pZDogW21pZF0sXFxuICAgICAgICAgICAgICAgICAgICBzb25ndHlwZTogWzBdLFxcbiAgICAgICAgICAgICAgICAgICAgdWluOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGxvZ2luZmxhZzogMSxcXG4gICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBcXFwiMjBcXFwiLFxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgY29tbToge1xcbiAgICAgICAgICAgICAgICB1aW46IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IFxcXCJqc29uXFxcIixcXG4gICAgICAgICAgICAgICAgY3Q6IDE5LFxcbiAgICAgICAgICAgICAgICBjdjogMCxcXG4gICAgICAgICAgICAgICAgYXV0aHN0OiBcXFwiXFxcIixcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgfSksXFxuICAgIH0pXFxuICAgIHJlc3VsdCA9IEpTT04ucGFyc2UoZmV0Y2gocmVzdWx0KSlcXG4gICAgbGV0IHB1cmwgPSBcXFwiXFxcIjtcXG4gICAgbGV0IGRvbWFpbiA9IFxcXCJcXFwiO1xcbiAgICBpZiAocmVzdWx0LnJlcV8wICYmIHJlc3VsdC5yZXFfMC5kYXRhICYmIHJlc3VsdC5yZXFfMC5kYXRhLm1pZHVybGluZm8pIHtcXG4gICAgICAgIHB1cmwgPSByZXN1bHQucmVxXzAuZGF0YS5taWR1cmxpbmZvWzBdLnB1cmw7XFxuICAgIH1cXG4gICAgaWYgKGRvbWFpbiA9PT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIGRvbWFpbiA9IHJlc3VsdC5yZXFfMC5kYXRhLnNpcC5maW5kKGkgPT4gIWkuc3RhcnRzV2l0aChcXFwiaHR0cDovL3dzXFxcIikpIHx8IHJlc3VsdC5yZXFfMC5kYXRhLnNpcFswXTtcXG4gICAgfVxcbiAgICBsZXQgbHlyaWNzID0gXFxcImh0dHA6Ly9jLnkucXEuY29tL2x5cmljL2ZjZ2ktYmluL2ZjZ19xdWVyeV9seXJpY19uZXcuZmNnXFxcIlxcbiAgICBseXJpY3MgPSBidWlsZFVybChseXJpY3MsIHtcXG4gICAgICAgIHNvbmdtaWQ6IG1pZCxcXG4gICAgICAgIHBjYWNoZXRpbWU6IHRpbWUgKyBcXFwiXFxcIixcXG4gICAgICAgIGdfdGs6IDUzODEsXFxuICAgICAgICBsb2dpblVpbjogMCxcXG4gICAgICAgIGhvc3RVaW46IDAsXFxuICAgICAgICBpbkNoYXJzZXQ6IFxcXCJ1dGY4XFxcIixcXG4gICAgICAgIG91dENoYXJzZXQ6IFxcXCJ1dGYtOFxcXCIsXFxuICAgICAgICBub3RpY2U6IDAsXFxuICAgICAgICBwbGF0Zm9ybTogXFxcInlxcVxcXCIsXFxuICAgICAgICBuZWVkTmV3Q29kZTogMFxcbiAgICB9KVxcbiAgICBseXJpY3MgPSBUZW5jZW50Q29uZmlnKGx5cmljcykubHlyaWNcXG4gICAgaWYgKGx5cmljcykge1xcbiAgICAgICAgbHlyaWNzID0gYmFzZTY0RGVjb2RlKGx5cmljcylcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGx5cmljcyA9IFxcXCJcXFwiXFxuICAgIH1cXG4gICAgaWYgKHB1cmwgIT0gXFxcIlxcXCIgJiYgZG9tYWluICE9IFxcXCJcXFwiKSB7XFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIHVybHM6IFtkb21haW4gKyBwdXJsXSxcXG4gICAgICAgICAgICBseXJpYzogbHlyaWNzXFxuICAgICAgICB9KVxcbiAgICB9XFxuICAgIHJldHVybiBnZXRDb25maXJtU2VhcmNoKG5hbWUpXFxufVxcblxcbmNvbnN0IGdldEt3bXVzaWNjYXJQbGF5ZXIgPSAobWlkKSA9PiB7XFxuICAgIGxldCBseXJpYyA9IEt3bXVzaWNjYXJDb25maWcoYnVpbGRVcmwoXFxcIm5ld2g1L3NpbmdsZXMvc29uZ2luZm9hbmRscmNcXFwiLCB7XFxuICAgICAgICBtdXNpY0lkOiBtaWQgKyBcXFwiXFxcIixcXG4gICAgICAgIGh0dHBzU3RhdHVzOiAxLFxcbiAgICAgICAgcmVxSWQ6IFxcXCJcXFwiXFxuICAgIH0pKVxcbiAgICBjb25zdCBnZXRUaW1lID0gKHRpbWUpID0+IHtcXG4gICAgICAgIGxldCBoID0gcGFyc2VJbnQodGltZSAvIDYwIC8gNjAgJSAyNClcXG4gICAgICAgIGggPSBoIDwgMTAgPyBcXFwiMFxcXCIgKyBoIDogaFxcbiAgICAgICAgbGV0IG0gPSBwYXJzZUludCh0aW1lIC8gNjAgJSA2MClcXG4gICAgICAgIG0gPSBtIDwgMTAgPyBcXFwiMFxcXCIgKyBtIDogbVxcbiAgICAgICAgbGV0IHMgPSBwYXJzZUludCh0aW1lICUgNjApXFxuICAgICAgICBzID0gcyA8IDEwID8gXFxcIjBcXFwiICsgcyA6IHNcXG4gICAgICAgIHJldHVybiBbbSArIFxcXCI6XFxcIiArIHMgKyBcXFwiLjAwXFxcIl1cXG4gICAgfVxcbiAgICB1cmxzID0gS3dtdXNpY2NhckNvbmZpZyhidWlsZFVybChcXFwiYXBpL3YxL3d3dy9tdXNpYy9wbGF5VXJsXFxcIiwge1xcbiAgICAgICAgdHlwZTogXFxcImZsYWNcXFwiLFxcbiAgICAgICAgaHR0cHNTdGF0dXM6IDEsXFxuICAgICAgICByZXFJZDogXFxcIlxcXCIsXFxuICAgICAgICBtaWQ6IG1pZCArIFxcXCJcXFwiXFxuICAgIH0pKVxcbiAgICB0cnkge1xcbiAgICAgICAgbHlyaWMgPSBseXJpYy5scmNsaXN0Lm1hcChpID0+IFxcXCJbXFxcIiArIGdldFRpbWUoaS50aW1lKSArIFxcXCJdXFxcIiArIGkubGluZUx5cmljKS5qb2luKFxcXCJcXFxcclxcXFxuXFxcIilcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgbHlyaWMgPSBcXFwiXFxcIlxcbiAgICB9XFxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICB1cmxzOiBbdXJscy51cmxdLFxcbiAgICAgICAgbHlyaWM6IGx5cmljXFxuICAgIH0pXFxufVxcblxcbmNvbnN0IGdldEt1Z291UGxheWVyID0gKGRhdGEsIG5hbWUpID0+IHtcXG4gICAgbGV0IG11c2ljTWFwID0gS3Vnb3VDb25maWcoZGF0YSlcXG4gICAgaWYgKG11c2ljTWFwLnBsYXlfdXJsKSB7XFxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIHVybHM6IFttdXNpY01hcC5wbGF5X3VybF0sXFxuICAgICAgICAgICAgbHlyaWM6IG11c2ljTWFwLmx5cmljc1xcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICByZXR1cm4gZ2V0Q29uZmlybVNlYXJjaChuYW1lKVxcbn1cXG5cXG5jb25zdCBnZXRNaWd1UGxheWVyID0gKGl0ZW0sIG5hbWUpID0+IHtcXG4gICAgbGV0IE11c2ljVXJsID0gXFxcImh0dHBzOi8vYXBwLmMubmYubWlndS5jbi9NSUdVTTIuMC92MS4wL2NvbnRlbnQvc3ViL2xpc3RlblNvbmcuZG9cXFwiXFxuICAgIE11c2ljVXJsID0gYnVpbGRVcmwoTXVzaWNVcmwsIHtcXG4gICAgICAgIHRvbmVGbGFnOiBcXFwiZm9ybWF0VHlwZT1IUVxcXCIsXFxuICAgICAgICBuZXRUeXBlOiAwMCxcXG4gICAgICAgIHVzZXJJZDogMTU1NDg2MTQ1ODg3MTAxNzkwODUwNjksXFxuICAgICAgICB1YTogXFxcIkFuZHJvaWRfbWlndVxcXCIsXFxuICAgICAgICB2ZXJzaW9uOiBcXFwiNS4xXFxcIixcXG4gICAgICAgIGNvcHlyaWdodElkOiAwLFxcbiAgICAgICAgY29udGVudElkOiBpdGVtLmNvbnRlbnRJZCxcXG4gICAgICAgIHJlc291cmNlVHlwZTogMixcXG4gICAgICAgIGNoYW5uZWw6IDBcXG4gICAgfSlcXG4gICAgbGV0IE1pZ3VNdXNpYyA9IEpTT04ucGFyc2UocmVxdWVzdChNdXNpY1VybCwge1xcbiAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgfSkpLnVybFxcbiAgICBsZXQgbHlyaWNVcmwgPSBcXFwiaHR0cDovL211c2ljLm1pZ3UuY24vdjMvYXBpL211c2ljL2F1ZGlvUGxheWVyL2dldEx5cmljXFxcIlxcbiAgICBseXJpY1VybCA9IGJ1aWxkVXJsKGx5cmljVXJsLCB7XFxuICAgICAgICBjb3B5cmlnaHRJZDogaXRlbS5jb3B5cmlnaHRJZFxcbiAgICB9KVxcbiAgICBsZXQgTWlndUx5cmljID0gTWlndUNvbmZpZyhseXJpY1VybClcXG4gICAgaWYgKE1pZ3VNdXNpYy5zZWFyY2goXFxcIktleVxcXCIpID49IDEpIHtcXG4gICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgdXJsczogW01pZ3VNdXNpY10sXFxuICAgICAgICAgICAgbHlyaWM6IE1pZ3VMeXJpYy5seXJpY1xcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICByZXR1cm4gZ2V0Q29uZmlybVNlYXJjaChuYW1lKVxcbn1cXG5cXG5jb25zdCBzZWFyY2hNYXAgPSBbXFxcIue9keaYk1xcXCIsIFxcXCLohb7orq9cXFwiLCBcXFwi6YW35oiRXFxcIiwgXFxcIumFt+eLl1xcXCIsIFxcXCLlkqrlkpVcXFwiXTtcXG5cXG5jb25zdCBnZXRTZWFyY2hQYXJzZSA9ICgpID0+IHtcXG4gICAgZnVuTWFwID0gW1xcXCLogZrlkIjmkJzntKJcXFwiXVxcbiAgICBzd2l0Y2ggKHN0b3JhZ2UwLmdldE15VmFyKFxcXCJTZWFyY2htdXNpY01hcFxcXCIsIGZ1bk1hcClbMF0pIHtcXG4gICAgICAgIGNhc2UgZnVuTWFwWzBdOlxcbiAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLwn5SNXFxcIixcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuivt+i+k+WFpeatjOabsuWQjeensC/lhbPplK7or41cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiK2lucHV0JyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBydWxlczogJC50b1N0cmluZygoc2VhcmNoTWFwKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwic3dpdGNoXFxcIiwgXFxcIjFcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaE1hcC5mb3JFYWNoKChNYXAsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ0aXRsZVxcXCI6IE1hcCArIFxcXCLpn7PkuZBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaF91cmxcXFwiOiBcXFwiaGlrZXI6Ly9lbXB0eT9zZWFyY2hUZXJtcz0qKiZwYWdlPWZ5cGFnZSZ0aW5kZXg9XFxcIiArIGksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoRmluZFxcXCI6IFxcXCJqczogJC5yZXF1aXJlKCcnICsgY29uZmlnLnNlYXJjaEZpbGUgKyAnJyk7XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHNlYXJjaE1hcCksXFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKFxcXCJzZWFyY2hLZXlcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dE15VmFyKCdzZWFyY2hLZXknLGlucHV0KVxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi8J+UjVxcXCIsXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLor7fovpPlhaXmrYzmm7LlkI3np7Av5YWz6ZSu6K+NXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBrZXl3b3JkcyA9IGlucHV0LnRyaW0oKTtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJzd2l0Y2hcXFwiLCBcXFwiMVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5d29yZHMpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLnNlYXJjaHNGaWxlICsgXFxcIiZwYWdlPWZ5cGFnZSZzZWFyY2hUZXJtcz1cXFwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGtleXdvcmRzKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ivt+i+k+WFpeWFs+mUruivjVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXFxcInNlYXJjaEtleVxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0TXlWYXIoJ3NlYXJjaEtleScsaW5wdXQpXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBnZXRTZWFyY2hzUGFyc2UgPSAocGFnZSkgPT4ge1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInNlYXJjaE1hcFxcXCIpXFxuICAgICAgICBjbGVhck15VmFyKFxcXCJzd2l0Y2hcXFwiKVxcbiAgICB9KVxcbiAgICB0aW5kZXggPSBnZXRNeVZhcihcXFwic2VhcmNoTWFwXFxcIiwgXFxcIjBcXFwiKVxcbiAgICBrZXl3b3JkID0gZGVjb2RlVVJJQ29tcG9uZW50KGdldFBhcmFtKFxcXCJzZWFyY2hUZXJtc1xcXCIpKTtcXG4gICAgc2V0UGFnZVRpdGxlKFxcXCLjgIxcXFwiICsga2V5d29yZCArIFxcXCLjgI0jXFxcIiArIHBhZ2UpO1xcbiAgICBpZiAocGFnZSA9PT0gMSkge1xcbiAgICAgICAgc2VhcmNoTWFwLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5kZXggPT0gdGluZGV4ID8gUmljaChTdHJvbmcoQ29sb3IoaXRlbSkpKSA6IGl0ZW0sXFxuICAgICAgICAgICAgICAgIHVybDogJChub2xvYWQpLmxhenlSdWxlKChlbXB0eSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJzZWFyY2hNYXBcXFwiLCBpbmRleCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBlbXB0eSwgaW5kZXgpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfNVxcXCJcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZ2V0U2VhcmNoU2VsZWN0aW9uKHRpbmRleCwga2V5d29yZCwgcGFnZSlcXG59XFxuXFxuY29uc3QgZ2V0U2VhcmNoU2VsZWN0aW9uID0gKHRpbmRleCwga2V5d29yZCwgcGFnZSkgPT4ge1xcbiAgICBzd2l0Y2ggKHRpbmRleCkge1xcbiAgICAgICAgY2FzZSBcXFwiMFxcXCI6XFxuICAgICAgICAgICAgYXBpX3N0ciA9IFxcXCIvd2VhcGkvY2xvdWRzZWFyY2gvZ2V0L3dlYlxcXCJcXG4gICAgICAgICAgICBhcGlfc3RyID0gYnVpbGRVcmwoYXBpX3N0ciwge1xcbiAgICAgICAgICAgICAgICBjc3JmX3Rva2VuOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgZGF0YSA9IE5ldEVhc2VDb25maWcoYXBpX3N0ciwge1xcbiAgICAgICAgICAgICAgICBcXFwic1xcXCI6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgIFxcXCJsaW1pdFxcXCI6IDMwLFxcbiAgICAgICAgICAgICAgICBcXFwidHlwZVxcXCI6IDEsXFxuICAgICAgICAgICAgICAgIFxcXCJvZmZzZXRcXFwiOiAocGFnZSAtIDEpICogMzAsXFxuICAgICAgICAgICAgICAgIFxcXCJjc3JmX3Rva2VuXFxcIjogXFxcIlxcXCJcXG4gICAgICAgICAgICB9LCBcXFwiUE9TVFxcXCIpXFxuICAgICAgICAgICAgTmV0RWFzZVBhcnNlKGRhdGEucmVzdWx0LnNvbmdzKVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBcXFwiMVxcXCI6XFxuICAgICAgICAgICAgYXBpX3N0ciA9IFxcXCJodHRwczovL3UueS5xcS5jb20vY2dpLWJpbi9tdXNpY3UuZmNnXFxcIlxcbiAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0KGFwaV9zdHIsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcIlJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly95LnFxLmNvbVxcXCJcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInJlcV8xXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJtZXRob2RcXFwiOiBcXFwiRG9TZWFyY2hGb3JRUU11c2ljRGVza3RvcFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIm1vZHVsZVxcXCI6IFxcXCJtdXNpYy5zZWFyY2guU2VhcmNoQ2dpU2VydmljZVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcInBhcmFtXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibnVtX3Blcl9wYWdlXFxcIjogMjAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJwYWdlX251bVxcXCI6IHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJxdWVyeVxcXCI6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzZWFyY2hfdHlwZVxcXCI6IDBcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkYXRhKS5yZXFfMS5kYXRhLmJvZHkuc29uZy5saXN0XFxuICAgICAgICAgICAgVGVuY2VudFBhcnNlKGRhdGEpXFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlIFxcXCIyXFxcIjpcXG4gICAgICAgICAgICBhcGlfc3RyID0gXFxcImFwaS93d3cvc2VhcmNoL3NlYXJjaE11c2ljQnlrZXlXb3JkXFxcIlxcbiAgICAgICAgICAgIGFwaV9zdHIgPSBidWlsZFVybChhcGlfc3RyLCB7XFxuICAgICAgICAgICAgICAgIGtleToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgcG46IHBhZ2UsXFxuICAgICAgICAgICAgICAgIHJuOiAyMCxcXG4gICAgICAgICAgICAgICAgaHR0cHNTdGF0dXM6IDEsXFxuICAgICAgICAgICAgICAgIHJlcUlkOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgZGF0YSA9IEt3bXVzaWNjYXJDb25maWcoYXBpX3N0cilcXG4gICAgICAgICAgICBLd211c2ljY2FyUGFyc2UoZGF0YS5saXN0KVxcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSBcXFwiM1xcXCI6XFxuICAgICAgICAgICAgYXBpX3N0ciA9IFxcXCJodHRwOi8vbW9iaWxlY2RuLmt1Z291LmNvbS9hcGkvdjMvc2VhcmNoL3NvbmdcXFwiXFxuICAgICAgICAgICAgYXBpX3N0ciA9IGJ1aWxkVXJsKGFwaV9zdHIsIHtcXG4gICAgICAgICAgICAgICAgZm9ybWF0OiBcXFwianNvblxcXCIsXFxuICAgICAgICAgICAgICAgIGtleXdvcmQ6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxuICAgICAgICAgICAgICAgIHBhZ2VzaXplOiAyMCxcXG4gICAgICAgICAgICAgICAgc2hvd3R5cGU6IDFcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QoYXBpX3N0cikpLmRhdGEuaW5mb1xcbiAgICAgICAgICAgIEt1Z291UGFyc2UoZGF0YSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgXFxcIjRcXFwiOlxcbiAgICAgICAgICAgIGFwaV9zdHIgPSBcXFwiaHR0cDovL3BkLm11c2ljYXBwLm1pZ3UuY24vTUlHVU0yLjAvdjEuMC9jb250ZW50L3NlYXJjaF9hbGwuZG9cXFwiXFxuICAgICAgICAgICAgYXBpX3N0ciA9IGJ1aWxkVXJsKGFwaV9zdHIsIHtcXG4gICAgICAgICAgICAgICAgdWE6IFxcXCJBbmRyb2lkX21pZ3VcXFwiLFxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBcXFwiNS4wLjFcXFwiLFxcbiAgICAgICAgICAgICAgICB0ZXh0OiBrZXl3b3JkLFxcbiAgICAgICAgICAgICAgICBwYWdlTm86IHBhZ2UsXFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiAxMCxcXG4gICAgICAgICAgICAgICAgc2VhcmNoU3dpdGNoOiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICBcXFwic29uZ1xcXCI6IDEsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiYWxidW1cXFwiOiAwLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcInNpbmdlclxcXCI6IDAsXFxuICAgICAgICAgICAgICAgICAgICBcXFwidGFnU29uZ1xcXCI6IDAsXFxuICAgICAgICAgICAgICAgICAgICBcXFwibXZTb25nXFxcIjogMCxcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJzb25nbGlzdFxcXCI6IDAsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiYmVzdFNob3dcXFwiOiAxXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBkYXRhID0gTWlndUNvbmZpZyhhcGlfc3RyKS5zb25nUmVzdWx0RGF0YS5yZXN1bHRcXG4gICAgICAgICAgICBNaWd1UGFyc2UoZGF0YSlcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgfVxcbn1cXG5cXG5jb25zdCBnZXRBamF4RW5kUGFyc2UgPSAoKSA9PiB7XFxuICAgIGxldCBhamF4X3BhZ2UgPSBNWV9QQUdFO1xcbiAgICBpZiAoYWpheF9wYWdlID09IDEpIHtcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTU7IGkrKykge1xcbiAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFJpY2goU21hbGwoR3JheShcXFwi772e772e772e5oiR6L+Z5rKh5pyJ6LWE5rqQ5ZOm772e772e772eXFxcIikpKSxcXG4gICAgICAgICAgICB1cmw6IGVtcHR5LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogUmljaChTbWFsbChHcmF5KFxcXCLvvZ7vvZ7vvZ7miJHmmK/mnInlupXnur/nmoTvvZ7vvZ7vvZ5cXFwiKSkpLFxcbiAgICAgICAgICAgIHVybDogZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6IGa5ZCIXCIsXCJwYXRoXCI6XCJTZWFyY2gudmlld1wiLFwicnVsZVwiOlwicmVxdWlyZShjb25maWcucmVxdWlyZUZpbGUpO1xcbmNvbnN0IGtleXdvcmQgPSBnZXRQYXJhbShcXFwic2VhcmNoVGVybXNcXFwiKSB8fCBcXFwiXFxcIjtcXG5jb25zdCB0aW5kZXggPSBnZXRQYXJhbShcXFwidGluZGV4XFxcIikgfHwgXFxcIjBcXFwiO1xcbmNvbnN0IHBhZ2UgPSBNWV9QQUdFO1xcbmNsZWFyTXlWYXIoXFxcIuabtOWkmuWKn+iDvVxcXCIpO1xcbmdldFNlYXJjaFNlbGVjdGlvbih0aW5kZXgsIGtleXdvcmQsIHBhZ2UpO1xcbnNldFJlc3VsdChsYXlvdXQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Y6f55SfXCIsXCJwYXRoXCI6XCJTZWFyY2hzLnZpZXdcIixcInJ1bGVcIjpcImpzOlxcbnJlcXVpcmUoY29uZmlnLnJlcXVpcmVGaWxlKTtcXG5jb25zdCBwYWdlID0gTVlfUEFHRTtcXG5nZXRTZWFyY2hzUGFyc2UocGFnZSk7XFxuc2V0UmVzdWx0KGxheW91dCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLosIPnlKhcIixcInBhdGhcIjpcImluaXRDb25maWcudmlld1wiLFwicnVsZVwiOlwibGV0IHJ1bGVOYW1lID0gXFxcIueugOWNlemfs+S5kFxcXCI7XFxubGV0IHJ1bGVIb21lID0gcmVxdWVzdChcXFwiaGlrZXI6Ly9ob21lQFxcXCIgKyBydWxlTmFtZSk7XFxubGV0IHJ1bGVGaWxlID0gXFxcImh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTU4MDJcXFwiO1xcbmxldCBkb3duRmlsZSA9IFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL1xcXCIgKyBydWxlTmFtZSArIFxcXCIuanNcXFwiO1xcblxcbmZ1bmN0aW9uIGdldEZpbGUobnVtYikge1xcbiAgICBmaWxlID0gXFxcImhpa2VyOi8vcGFnZS9cXFwiICsgbnVtYjtcXG4gICAgZmlsZSArPSBcXFwiP3J1bGU9XFxcIiArIHJ1bGVOYW1lO1xcbiAgICByZXR1cm4gZmlsZTtcXG59O1xcblxcbmxldCByZXF1aXJlRmlsZSA9IGdldEZpbGUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxubGV0IHNlYXJjaEZpbGUgPSBnZXRGaWxlKFxcXCJTZWFyY2gudmlld1xcXCIpO1xcbmxldCBzZWFyY2hzRmlsZSA9IGdldEZpbGUoXFxcIlNlYXJjaHMudmlld1xcXCIpO1xcbmxldCBpbWFnZVRvb2wgPSAkLnJlcXVpcmUoZ2V0RmlsZShcXFwiSW1hZ2UudG9vbFxcXCIpKTtcXG5cXG5pbml0Q29uZmlnKHtcXG4gICAgcnVsZUZpbGU6IHJ1bGVGaWxlLFxcbiAgICBydWxlTmFtZTogcnVsZU5hbWUsXFxuICAgIGRvd25GaWxlOiBkb3duRmlsZSxcXG4gICAgaW1hZ2VGaWxlOiBpbWFnZVRvb2wuaW1hZ2VGaWxlLFxcbiAgICBpbXBvcnRGaWxlOiBpbWFnZVRvb2wuaW1wb3J0RmlsZSxcXG4gICAgc2VhcmNoRmlsZTogc2VhcmNoRmlsZSxcXG4gICAgc2VhcmNoc0ZpbGU6IHNlYXJjaHNGaWxlLFxcbiAgICByZXF1aXJlRmlsZTogcmVxdWlyZUZpbGVcXG59KTtcXG5cXG5pZiAocnVsZUhvbWUgPT0gXFxcIm51bGxcXFwiKSB7XFxuICAgIGNvbmZpcm0oe1xcbiAgICAgICAgdGl0bGU6IFxcXCLkvp3otZbmo4DmtYtcXFwiLFxcbiAgICAgICAgY29udGVudDogXFxcIuajgOa1i+WIsOe8uuWwkeS+nei1lu+8jOivt+WvvOWFpVxcXCIsXFxuICAgICAgICBjb25maXJtOiAoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCLmtbfpmJTop4bnlYzpppbpobXpopHpgZPop4TliJnjgJBcXFwiICsgY29uZmlnLnJ1bGVOYW1lICsgXFxcIuOAke+/pWhvbWVfcnVsZV91cmzvv6VcXFwiICsgY29uZmlnLnJ1bGVGaWxlXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn07XFxuXFxuaWYgKHJ1bGVIb21lICE9IFxcXCJudWxsXFxcIiAmJiBnZXRWYXIoXFxcInJ1bGVWZXJzaW9uXFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICBsZXQgdmVyc2lvbiA9IEpTT04ucGFyc2UocnVsZUhvbWUpLnZlcnNpb247XFxuICAgICAgICBsZXQgdmVyc2lvbnMgPSBKU09OLnBhcnNlKHJlcXVlc3QoY29uZmlnLnJ1bGVGaWxlKSkudmVyc2lvbjtcXG4gICAgICAgIGlmICh2ZXJzaW9uIDwgdmVyc2lvbnMpIHtcXG4gICAgICAgICAgICBjb25maXJtKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLniYjmnKzmm7TmlrBcXFwiLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBcXFwi5Y+R546w5paw54mI5pys77yM6K+35pu05pawXFxcIixcXG4gICAgICAgICAgICAgICAgY29uZmlybTogKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJydWxlVmVyc2lvblxcXCIsIFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwi5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQXFxcIiArIGNvbmZpZy5ydWxlTmFtZSArIFxcXCLjgJHvv6Vob21lX3J1bGVfdXJs77+lXFxcIiArIGNvbmZpZy5ydWxlRmlsZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwicnVsZVZlcnNpb25cXFwiLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgfTtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgdG9hc3QoXFxcIuS7k+W6k+S4jeeos+Wumu+8jOeJiOacrOajgOa1i+Wksei0pVxcXCIpO1xcbiAgICB9O1xcbn07XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlm77moIdcIixcInBhdGhcIjpcIkltYWdlLnRvb2xcIixcInJ1bGVcIjpcImNvbnN0IGJhc2VpbWFnZSA9IHtcXG4gICAgaW1hZ2VGaWxlOiBcXFwiaHR0cHM6Ly9taXNzdW8ucnUvZmlsZS8yYjRiMDgyNDc4NGNlZTJlZDNjMjAuanBnXFxcIixcXG4gICAgaW1wb3J0RmlsZTogXFxcImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRRRkFSWGhwWmdBQVRVMEFLZ0FBQUFnQUJ3RUFBQVFBQUFBQkFBQUI5QUVRQUFJQUFBQUNNQUFBQUFFQkFBUUFBQUFCQUFBQjlBRVBBQUlBQUFBQ01BQUFBSWRwQUFRQUFBQUJBQUFBWWdFU0FBUUFBQUFCQUFBQUFJZ2xBQVFBQUFBQkFBQUEyQUFBQUFBQUNKS1JBQUlBQUFBQ01BQUFBS1FEQUFNQUFBQUJBQUFBQUlLYUFBVUFBQUFCQUFBQXlJZ25BQU1BQUFBQkFBQUFBSklKQUFNQUFBQUJBQUFBQUpLUUFBSUFBQUFDTUFBQUFKSUlBQVFBQUFBQkFBQUFBSUtkQUFVQUFBQUJBQUFBMEFBQUFBQUFBQUFBQUFBbkVBQUFBQUFBQUNjUUFBVUFBUUFDQUFBQUFrNEFBQUFBQlFBQkFBQUFBUUFBQUFBQUd3QUNBQUFBQWpBQUFBQUFBd0FDQUFBQUFrVUFBQUFBSFFBQ0FBQUFBakFBQUFBQUFBQUFBQUlCRUFBQ0FBQUFBakFBQUFBQkR3QUNBQUFBQWpBQUFBQUFBQUFBLytBQUVFcEdTVVlBQVFFQkFFZ0FTQUFBLzlzQVF3QUlCZ1lIQmdVSUJ3Y0hDUWtJQ2d3VURRd0xDd3daRWhNUEZCMGFIeDRkR2h3Y0lDUXVKeUFpTENNY0hDZzNLU3d3TVRRME5COG5PVDA0TWp3dU16UXkvOXNBUXdFSkNRa01Dd3dZRFEwWU1pRWNJVEl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeS84QUFFUWdCOUFIMEF3RWlBQUlSQVFNUkFmL0VBQndBQVFBQ0FnTUJBQUFBQUFBQUFBQUFBQUFIQ0FFR0FnUUZBLy9FQUZRUUFBRUNCQUlEQ1FzS0JRSUVBd2tBQUFBQkFnTUVCUkVHSVFjU01SZEJVVlJXWVhHVXN4TVlNalkzZFpHeTBkTFRDQlVXSWxWeWM1S1Q4QlExUW5TQkk2RlNZN0hCSkVWaUpUTkRSRk9Fb3NMaC84UUFGQUVCQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9FQUJRUkFRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzJnQU1Bd0VBQWhFREVRQS9BSjJBQURia2VSWDhUMFhERXAvRlZtZmdTc1BheHJsdTkreStxMU0zYlUyWFcyWm9la25TN0k0WWdUVktwRVZzelhFLzAzTGE4T1dWVXpWVjJLNVArSGVYYndGYnF0VjUrdVZHTlVLbk5QbVp1TG5FaXhGelZmOEFHVnVCRXlRQ1lzUy9LRW1ZME9OQXcxVEVsMFhKazVOdVI3MFJXcWkyaHBraW82eW9xcXFaWnBuWWpPczZRTVcxMUhwVWEvT3hHUGhkeGZEaHhPNU1lM082S3hsbXJlK2FxbVpxNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWRtUW5weW16c09ja0pxUEt6TU82c2pRSWlzZTI2S2kyVk0weVZVNkZPc0FOOG9HbDNHZEFjM1VxNzU2RWl1VllNK25kbXV1bHZDVmRleWJiSTVFeUpWd3o4b0NsVDc0Y3ZYNUo5TWlxamYvQUJNSlZpd2xkYk83Ykk1dDEyZUZhKzFMRmJqTGRvRjdwT2RsYWhLTW01S1pnek10RnpoeG9Ma2UxNkl0cm81TWx6dWZjcHhoRFNEWGNGVFd0VHBoSWtzOUYxNVNPcXVoT3ZhNjZ0OG5aYlUvM0xUNFB4aFRjYVVWbFJwNzdPUkVTUEFjdjE0RC93RGhYbTRGMzBBMkFBQUFBQUFBQUFBQ0s5TDJraUZobWx4S1BTWnUxYmp0UkhPaEtpckxzWGFxOERsVEpFMnB0NERmTVQxK0JoZkRVOVdabS9jNWVHcm1zVCt0eXJacmIyWE5YS2lYM3I1bE1xdFZaeXQxU1pxVlFqOTNtNWh5dmlSRnNsMS83SWxrUzNNZ0hUZTlZam5PVnlxcTVxcTUzUGtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdXK0VtZGpZTUo0cnFPRUsxRHFWTWlXZW4xWWtKK2JJck45cms0UDhBcHROZU9URnM3TGIwZ1had2xpYVR4Zmh5WHJNazF6R1JidGZDZXFLNkU5cTJWcTIvMjRVc3A3WlUzUkRqTDZLNHlnd284dzVLYlB1U1hqdFYxbXRWZkJpTGRVUzZMa3Fyc1JWTFkzUzY1N1ZWVTZBTWdBQUFBQUFBcjk4b1RFelkwNVRzTlFJeUtrdmVhbTJOMVZUWGNsb2FLcUxkRlJOWlZSYlpPYXVaQlJ0R2tHc3BYc2YxdW9OaVFIc2ZOdVpEZkJXN0h3MldZeHlMZGIzYTFGdnYzTlhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBNU4yLzRMZ2FLc1NQeFBvL3A4M0hqSkZuSUNMS3pLL1dWVmV6SkZWVjJ1VnF0Y3E3THU2VUtmc3RyWjdDYmZrNVZQVXJ0YnBmYzdwSGxvY3gzVFg4SHVidFRWdHo5MS94cTg0Rmh3TjY0QUFBQUFBS0VnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTUG9NbTQ4dnBTa1lNS0lyWWN6QWp3NHpiSXV1MUlhdlJNOW4xbU5YL0JIQklHaFB5c1VqN2t4MkVRQzJxSWlaL3dEWGFaQytFdlNBQUFBQUFDaElBQUFBQUxIYnBkUGpWYXJ5Vk5sMVlrZWJqc2dRMWV0bW81N2thbDE0THFTZjN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUk5ZeFlrK3E2RGNWVVNrVGxWbVptbE9sNU9DK1BFU0hNUFZ5dGFsMXNtcHRzUm03WmEvU2dIQUFBQ1FOQ2ZsWXBIM0pqc0loSDVJR2hQeXNVajdreDJFUUMyNitFdlNZTXI0UzlKZ0FBQUFBQW9TQUFBQUE5N0JIajdoM3puTGRxMHV5dTFTazJDUEgzRHZuT1c3VnBkbGRxZ1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYTlqN3lkNGw4MlRIcUtVc2R0WHBVdW5qN3lkNGw4MlRIcUtVc2R0WHBVRGlBQUJJR2hQeXNVajdreDJFUWo4a0RRbjVXS1I5eVk3Q0lCYmRmQ1hwTUdWOEpla3dBQUFBQUFVSkFBQUFBZTlnang5dzc1emx1MWFYWlhhcFNiQkhqN2gzem5MZHEwdXl1MVFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5leDk1TzhTK2JKajFGS1dPMnIwcVhUeDk1TzhTK2JKajFGS1dPMnIwcUJ4QUFBa0RRbjVXS1I5eVk3Q0lSK1NCb1Q4ckZJKzVNZGhFQXR1dmhMMG1ESytFdlNZQUFBQUFBS0VnQUFBQVBld1I0KzRkODV5M2F0THNydFVwTmdqeDl3NzV6bHUxYVhaWGFvR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHdlkrOG5lSmZOa3g2aWxMSGJWNlZMcDQrOG5lSmZOa3g2aWxMSGJWNlZBNGdBQVNCb1Q4ckZJKzVNZGhFSS9KQTBKK1Zpa2ZjbU93aUFXM1h3bDZUQmxmQ1hwTUFBQUFBQUZDUUFBQUFIdllJOGZjTytjNWJ0V2wyVjJxVW13UjQrNGQ4NXkzYXRMc3J0VURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRFhzZmVUdkV2bXlZOVJTbGp0cTlLbDA4ZmVUdkV2bXlZOVJTbGp0cTlLZ2NRQUFKQTBKK1Zpa2ZjbU93aUVma2dhRS9LeFNQdVRIWVJBTGJyNFM5Smd5dmhMMG1BQUFBQUFDaElBQUFBRDNzRWVQdUhmT2N0MnJTN0s3VktUWUk4ZmNPK2M1YnRXbDJWMnFCZ0FBQUFBQVBqT09jeVJtWE5jclhOaFBWRlJiS2k2cTVnZlhXUy9Od2pXYndvVTFYU1RqUkxXeFBWZG5HSEhIZEt4cnlvcW5XSEFYTTFtOEtEV2J3b1V6M1NzYThxS3AxaHczU3NhOHFLcDFod0Z6TlpMMnVaeTNsdnpsVXNEWSt4YlVNZVVHVG04UlZLTkx4cDZFeUpEZkhWV3ZhcmtSVVZDMWlLdGt1dk9Ca0FBQmY5M0JHT25LdVZTZzRQa0ptazFDWWtvejU5SWJud0g2cXViM042MnYwb2dFbTZ5Y0kxbThLRk5GMGs0MFRaaWlxOVpjWTNTc2E4cUtwMWh3RnpOWnZDZzFtOEtGTTkwckd2S2lxZFljTjByR3ZLaXFkWWNCY3pXYndvTlp2Q2hUUGRLeHJ5b3FuV0hEZEt4cnlvcW5XSEFYTTFtOEtEV2J3b1V6M1NzYThxS3AxaHczU3NhOHFLcDFod0Z6Tlp2Q2cxbThLRk05MHJHdktpcWRZY04wckd2S2lxZFljQmN6V2J3b05adkNoVFBkS3hyeW9xbldIRGRLeHJ5b3FuV0hBWE0xbThLRFdid29VejNTc2E4cUtwMWh3M1NzYThxS3AxaHdGek5adkNnMW04S0ZNOTByR3ZLaXFkWWNOMHJHdktpcWRZY0Jjeldid29OWnZDaFRQZEt4cnlvcW5XSERkS3hyeW9xbldIQVhNMW04S0RXYndvVXozU3NhOHFLcDFodzNTc2E4cUtwMWh3RnpOWnZDZzFtOEtGTTkwckd2S2lxZFljTjByR3ZLaXFkWWNCY3ZYVGhNMzRMS25TVTAzU2NhOHFLcDFoeHVHaTdIR0tLdHBJbzBsUDErb3pNckZpUFI4S0xIVnpYSjNONjVwMG9nRm5BQUFBQUFBQWE5ajd5ZDRsODJUSHFLVXNkdFhwVXVuajd5ZDRsODJUSHFLVXNkdFhwVURpQUFCSUdoUHlzVWo3a3gyRVFqOGtEUW41V0tSOXlZN0NJQmJkZkNYcE1HVjhKZWt3QUFBQUFBVUpBQUFBQWU5Z2p4OXc3NXpsdTFhWFpYYXBTYkJIajdoM3puTGRxMHV5dTFRTUFBQUFBQjE1NytYVFg0TC9WVTdCMTU3K1hUWDRML1ZVQ2lidDdvT0p5ZHZkQnhBQUFEWjlIWGxJdzM1eGcrdWhjNU5pZEJUSFIxNVNNTitjWVByb1hPVFluUUJrQUFDSWZsRStJdE44NUoyVVFsNGlINVJQaUxUZk9TZGxFQXJRcGd5cGdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHK2Izb2Q4cTFCL0ZmMlR6Uk44M3ZRNzVWcUQrSy9zbmdXN0FBQUFBQUFCcjJQdkozaVh6Wk1lb3BTeDIxZWxTNmVQdkozaVh6Wk1lb3BTeDIxZWxRT0lBQUVnYUUvS3hTUHVUSFlSQ1B5UU5DZmxZcEgzSmpzSWdGdDE4SmVrd1pYd2w2VEFBQUFBQUJRa0FBQUFCNzJDUEgzRHZuT1c3VnBkbGRxbEpzRWVQdUhmT2N0MnJTN0s3VkF3QUFBQUFIWG52NWROZmd2OVZUc0hYbjF0VHBwVi93RG92OVZRS0p1M3VnNG5OelVWRXpUWW0rWTFlZFBTQnhCeTFlZFBTTlhuVDBnYkxvNjhwR0cvT01IMTBMbkpzVG9LWmFPMHRwSXczbW44eGc3L0FQNjBMbXBzUkZ0ZTJ3RElBQUVRL0tKOFJhYjV5VHNvaEx4RVB5aUxmUWVtSXEvK1pKdi9BUEtpQVZvVXdjMWJudFQwbU5YblQwZ2NRY3RYblQwalY1MDlJSEVITFY1MDlJMWVkUFNCeEJ5MWVkUFNOWG5UMGdjUWN0WG5UMGpWNTA5SUhFSExWNTA5STFlZFBTQnhCeTFlZFBTTlhuVDBnY1FjdFhuVDBqVjUwOUlIRUhMVjUwOUkxZWRQU0J4QnkxZWRQU05YblQwZ2NRY3RYblQwalY1MDlJSEhmTjcwTytWYWcvaXY3SjVvMnJ6cDZUZXREeUltbFdnNXBmdXI5LzhBNVR3TGRBQUFBQUFBQTE3SDNrN3hMNXNtUFVVcFk3YXZTcGRQSDNrN3hMNXNtUFVVcFk3YXZTb0hFQUFDUU5DZmxZcEgzSmpzSWhINUlHaFB5c1VqN2t4MkVRQzI2K0V2U1lNcjRTOUpnQUFBQUFBb1NBQUFBQTk3QkhqN2gzem5MZHEwdXl1MVNrMkNQSDNEdm5PVzdWcGRsZHFnWUFBQUFBQXFJcVdWTG9vQUhVU2wwOU1ra0pXMjhuY0daZjdHZm15bjhRbFAwR2V3N1FBNnZ6WlQrSVNuNkRQWVBteW44UWxQMEdldzdRQTZ6S2RKUTN0ZkRrNVpqMnJkcm13V29xTHdwa2RuTGdBQUFBQWZPTkx3WmhxTmp3WWNWclZ1aVJHSTZ5OEtYUG9BT3I4MlUvZmtaWDlCbnNIelpUK0lTbjZEUFlkb0FkWDVzcC9FSlQ5Qm5zSHpaVCtJU242RFBZZG9BZFg1c3AvRUpUOUJuc0h6WlQrSVNuNkRQWWRvQWRYNXNwL0VKVDlCbnNIelpUK0lTbjZEUFlkb0FkWDVzcC9FSlQ5Qm5zSHpaVCtJU242RFBZZG9BZFg1c3AvRUpUOUJuc0h6WlQrSVNuNkRQWWRvQWRYNXNwL0VKVDlCbnNIelpUK0lTbjZEUFlkb0FkWDVzcC9FSlQ5Qm5zSHpaVCtJU242RFBZZG9BZFg1c3AvRUpUOUJuc0h6WlQrSVNuNkRQWWRvQWRYNXNwL0VKVDlCbnNIelpUK0lTbjZEUFlkb0FkWDVzcC9FSlQ5Qm5zSHpaVCtJU242RFBZZG9BZFg1c3AvRUpUOUJuc013NUNUaFBhK0hLUzdIdHphNXNGcUtuUmxrZGtBQUFBQUFBQUFhOWo3eWQ0bDgyVEhxS1VzZHRYcFV1bmo3eWQ0bDgyVEhxS1VzZHRYcFVEaUFBQklHaFB5c1VqN2t4MkVRajhrRFFuNVdLUjl5WTdDSUJiZGZDWHBNR1Y4SmVrd0FBQUFBQVVKQUFBQUFlOWdqeDl3NzV6bHUxYVhaWGFwU2JCSGo3aDN6bkxkcTB1eXUxUU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTmV4OTVPOFMrYkpqMUZLV08ycjBxWFR4OTVPOFMrYkpqMUZLV08ycjBxQnhBQUFrRFFuNVdLUjl5WTdDSVIrU0JvVDhyRkkrNU1kaEVBdHV2aEwwbURLK0V2U1lBQUFBQUFLRWdBQUFBUGV3UjQrNGQ4NXkzYXRMc3J0VXBOZ2p4OXc3NXpsdTFhWFpYYW9HQUFBQUFBdzk3WWJIUGVxSTFxSzVWWGVSREo4SjcrWHpYNEwvQUZWQTFmZFN3UHlsa2ZTNzNSdXBZSDVTeVA1bmU2VTdjcXBiTmRoeDFsNFZBdU51cFlINVN5UDVuZTZOMUxBL0tXUi9NNzNTbk9zdkNvMWw0VkF1YkphUnNJVkdlZ1NVblg1T05NeDNwRGhRMks2NzNMa2lKbHZtMGJjeW1HanBWWFNSaHU2LytZd2ZYUXVjM3dVNkFNZ0FBZWJXc1FVbkRzcERtcXZQUVpPQkVmM05qNHFxaUs2eXJiSkYza1U5SWlINVJPV0I2WXFLdC9uSk95aUFiaHVwWUg1U3lQNW5lNlkzVXNEOHBaSDh6dmRLZEs1ZUZUR3N2Q29GeHQxTEEvS1dSL003M1J1cFlINVN5UDVuZTZVNTFsNFZHc3ZDb0Z4dDFMQS9LV1IvTTczUnVwWUg1U3lQNW5lNlU1MWw0VkdzdkNvRnh0MUxBL0tXUi9NNzNSdXBZSDVTeVA1bmU2VTUxbDRWR3N2Q29GeHQxTEEvS1dSL003M1J1cFlINVN5UDVuZTZVNTFsNFZHc3ZDb0Z4dDFMQS9LV1IvTTczUnVwWUg1U3lQNW5lNlU1MWw0VkdzdkNvRnh0MUxBL0tXUi9NNzNSdXBZSDVTeVA1bmU2VTUxbDRWR3N2Q29GeHQxTEEvS1dSL003M1J1cFlINVN5UDVuZTZVNTFsNFZHc3ZDb0Z4dDFMQS9LV1IvTTczUnVwWUg1U3lQNW5lNlU1MWw0VkdzdkNvRnh0MUxBL0tXUi9NNzNSdXBZSDVTeVA1bmU2VTUxbDRWUHBxcmE5N3BzdmV5WEF1RnVwWUg1U3lQNW5lNk4xTEEvS1dSL003M1NzdEIwZDRweEc2RzZScEUwa0J5c3ZIakozT0haMngxMTJ0Mzd0UlNRcU44bmlveFZodnJWWWw1WnFSTFJJVXVpeEhLM21ldGt2dDJwa0JMRzZsZ2ZsTEkvbWQ3cDI2Ymo3Q3RacU1HUXAxZGxKaWFqS3FRNFVOWFhkWkw1WFRnUlRVNURRUGcrVmx1NXpTVDAzRTFyOTFmTUxEVzNCWnVSdGRId0JoV2d4NVdZcDlGbFlVMUxKL3B6Q29xeEVXMXJxNWRxMlZjd05sQUFBQUFBQUJyMlB2SjNpWHpaTWVvcFN4MjFlbFM3MkthZEhyR0VxeFRKVldKTVRrbkZnUXRkYk4xbk5WRXV2Qm1WWHJXaWpHTkY3cytOUlkwZUJEZWplN1NxcEZSMTdXMVVUNnk3ZjhBaEEwY0gxalFYUW52WTVxdGN4Yk9SMlNvdkJZK1FBa0RRbjVXS1I5eVk3Q0lSK1NCb1Q4ckZJKzVNZGhFQXR1dmhMMG1ESytFdlNZQUFBQUFBS0VnQUFBQVBld1I0KzRkODV5M2F0THNydFVwTmdqeDl3NzV6bHUxYVhaWGFvR0FBQUFBQTY4OS9McHI4Ri9xcWRnNjg5L0xwcjhGL3FxQlJOMjkwSEU1TzN1ZzRnQUFCcytqcnlrWWI4NHdmWFF1Y214T2dwam82OHBHRy9PTUgxMExuSnNUb0F5QUFCRVB5aWZFV20rY2s3S0lTOFJEOG9ueEZwdm5KT3lpQVZvVXdaVXdBQUFBQUFBQUFBQUFBQUFBQUFQckRoT2lPYTFqRmU1eTJSRVROUVBrZWhTNlBQMXVlaHlWTWtvMDNNdjJRNExWY3Rza3Zsc1JMNXF1U0VvNEkwRjFLcjl3bjhST2RUcFRXMWxrMWFxUjN0UmMwY2kvKzdSZUhOZVpMb3BZS2g0ZXBHSEpCSktqMCtCSndNdFpJYmMzcnd1Y3QxY3ZPcXFvRUQ0YStUM1VaaUl5TGlTZFpKd0ZhamxnU2k5MGkzenUxWEttcTFVVzJhYXlMdmNKTUdHOUhHRjhMdzRTeVZMZ3hKbUY5Wlp5WlJJa1ZWVkxLdXN1eTZieVpacndtMTdiYzJ3d3FJN2Fsd00yczFHcGtpYkVUWWhpeUpibTJLWkFEYnZJQUFBQUFBQUFBQUcrRStyYTIzaEFBOERFR0M4T1luaE5aV0tYQWpxMWZxeEV1eUltZDdhN2JMWlYyNWtSWXArVHlzS0ErWXcxUHVpUGFpci9BQWs1YTd0cTJhOUV0ZllpSXFkS29UNEFLUVZyRFZYdzlHN2pWNlpNeVQ5ZHpFV0xEVkd2VnUzVmQ0THRxZUNxN1RhOUNpVzByMGo3a3gyRVF0TFZxSlRLN1QzU05Wa29NM0xMbjNPSzI2SXRsUzZML1N0bkw5Wk0wdVIvU05EMGhoakgwamlHaXprUnNyQlNMM1dTajVxeEhRNGpmcVAzN2F6RTFYWjdWVnlnU2d2aEwwbUJ3cm42TWdBQUFBQUFVSkFBQUFBZTlnang5dzc1emx1MWFYWlhhcFNiQkhqN2gzem5MZHEwdXl1MVFNQUFBQUFCMTU3K1hUWDRML1ZVN0I4cHFHNkxLUjRiZkNmRGMxTHJiTlVWQUtJTzN1ZzRrbkxvSXhzdHJ5MGpzNDQweHVENDI0dkk5Y2FCR1FKTjNCOGJjWGtldU5HNFBqYmk4ajF4b0dzNk92S1JodnpqQjlkQzV5YkU2Q3VPRU5EV0xxTGpHalZPYmdTYVMwck9RNDBWV3pUWEtqV3VSVnNtL2tXT1R3VUF5QUFCRVB5aWZFV20rY2s3S0lTOFI5cGV3alZjWllaa1pDa01oUGpRWnhJejBpeFVZbXJxT2J0WG5jZ0ZTMU1FbkxvSXhzdi9BTXZJOWNhWTNCOGJjWGtldU5BaklFbTdnK051THlQWEdqY0h4dHhlUjY0MENNZ1NidUQ0MjR2STljYU53ZkczRjVIcmpRSXlCSnU0UGpiaThqMXhvM0I4YmNYa2V1TkFqSUVtN2crTnVMeVBYR2pjSHh0eGVSNjQwQ01nU2J1RDQyNHZJOWNhTndmRzNGNUhyalFJeUJKdTRQamJpOGoxeHA2dUhkQWRjaTFtQ2xmZEx5OU9iOWVNNkJIUjczVy9vUkUyS3ZEdmVnRFFNS1lLck9NWjFzdlM1VnptSTlHeHBsNktrS0FpcGU3M2RDTGx0VXN4Z0hSalI4RXkwR1BxTW1hMHJGYkZuRlJib3ErRTFpTGsxdTlmYXUva3RqYUtCaCttNFpvOENsMHVYYkJsb0tkTG5PMzNPWGZjdSt2L0FHUkVQVFZMcGJlQXdpSWxsUkxLWkFBQUFBQUFBT0xvakVZcjc2cldwZHlxbXpMaDJIalZERjJIYVhMcE1UbGNrSVVKWEkxSGZ4RFhYVzJ6SzRIdGcwQ29hWjhEMCtZYkMrZEh6TjJhMnRLd1hSR3Buc1Zjczh0bk9kVGQxd1B4bWQ2bTcyZ1NVQ05kM1hBL0daM3FidmFmYVYwM1lJbXBxSEFTZWp3dGRiZDBqeXptTWJ6cXU4Z0VpQTErbVkzd3hWM3ZTUnJzaEdXR2lLOU83bzJ5THNYNjFqMjRNeENtSVRZMEdMRGlRblgxWHczSTVGL3ltVzhCOVFBQUFBQWNITm1BQmhFUkZWVVRidE1nQUFBQUFBRkNRQUFBQUh2WUk4ZmNPK2M1YnRXbDJWMnFVbXdSNCs0ZDg1eTNhdExzcnRVREFBQUFBQUFBR3hMQUFBQUFGeHZnQUFBQUFBQzZnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHTDVXVkYvd2FYalBTZFFNRXE2WG5JejVpb3EzV2JKd0V1NUVWRnNybFhKcUxiZnp6UmRWU3UyTGRLT0o4WEs2Rk16cVNza3FKLzRXVXV4aTJzdjFsMnV6UythclpWeUFzTFh0TG1EcUM5WWI2b2szSGFxSTZGSkozVzEwdmUvZzIzc2xYYnpFUzE3VDlYNTFWWlI1T0JUNE44bnhQOVY2cHEyc3Q4a1c5MXVpSVE3ckx3aTZwdmdlMVU4WDRpckxtT3FGWm5aaFdNVmlhOFpmQlhhbVcwOFZIS2kzVEl3QU1xNXk3VlV3QUFDTFpib0FCbldWZHEzNlQxcU5pYXQwR0xyVXFxVGNvcXRWbitsRVZFc3FvcTViTnFJZVFBSmFvR25mRTFPandHMVZJTlJsR3RiRGNpc1JrUlVTMTNhNmJYV1JkdVMzdVNwaHpUVmhXdlJZVXRNUm9sTG1vamZCbTBUdWFPdmF5UDJjK2FJaFZMV1c2TGRjakxGZHJaWjhLWDJnWHlodmJGWTE3SEk1amsxa2MxYm9xTHNVNUZOOE5hUk1UNFZaM0ttVk4zOE9xb3F5OGRxUkdiYnJaRjJYdFpWU3kyTEFZSjB4MFRGY1prbE1vbE1xRmtWSWN4RVR1Y1JWZHFvakg1WFhOUHFxaUxuWk5iZUNTQU9IcDN3QUFBQUFBQUFCUWtBQUFBQjcyQ1BIM0R2bk9XN1ZwZGxkcWxKc0VlUHVIZk9jdDJyUzdLN1ZBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZGVkbkplblNjV2NuSTdJRXRBYXI0c1dLNnpXdFRmVUQ2dmUyR3g4Ujcyc2h0YXJuT2V1VGVkVjNrc2hBbWtMVGpFakk2bTRSalJJVFVjNXNXb0t4THZUWmFGd0p2NnkyWGd0dE5WMGw2Vko3Rjg3RWtxZEdqeWRHaHFyR3drVldyTW92OVVTMjFNa3MzWW5Uc2pKYjc2Z1plOTczcTU3bk9jcTNWVlc2cXZDWXV2Q1lBQUFBQUFBQUFBQUFBQUFBQUM2OEp6WmRYYjl6Z0FKZDBiYVpKdkRmOEhSNjJpek5HYXVvMlBaWFJaWkZ0YTJmMW1KbjlXMTBSY2x5UnEyTXBOV2tLM1RJRlJwc3l5WmxKaHV0Q2lNMzAyWjc2S2k3VVhORnlXeWxHR3FxdTRlWlRkc0FhUjZyZ1djaTl3Yi9HVStPdDQwbkVmcW9yclpQUmM5VjJWcjJXNlpMdktnVytCNCtHY1MwekZsRmhWV2xSdGVBL0p6SFdSOEoxa3V4eWJ5cC92dFM2S2V3QUFBQUFBVUpBQUFBQWU5Z2p4OXc3NXpsdTFhWFpYYXBTYkJIajdoM3puTGRxMHV5dTFRTUFBQUFBQjhwaUtzQ1ZqUldvaXF4am5JaTdGc2lxZlU2ODkvTHByOEYvcXFCQWZmSFZCRVJWdzVLWFhPLzhTLzJEdmo2aHljaytzdjhBWVFlN2U2RGlCT1hmSDFEazVKOVpmN0IzeDlRNU9TZldYK3dnMEFXR3czcDRucTlpZWwwbDlCbFlUSnlhaHdIUkd6RDFWcU9XeXFpV0p2UmI1M1JVdHZGTWRIWGxJdzM1eGcrdWhjNU5pQVpBQUEwelNWamFQZ09oU2xTZ1NNS2NkSG1rZ0t5STlXMlRVYzY2S24zVGN5SWZsRStJdE44NUoyVVFEV3UrT3FDTDR1U2ZXWCt3eDN4OVE1T1NmV1grd2c1VEFFNWQ4ZlVPVGtuMWwvc0hmSDFEazVKOVpmN0NEUUJPWGZIMURrNUo5WmY3QjN4OVE1T1NmV1grd2cwQVRsM3g5UTVPU2ZXWCt3ZDhmVU9Ua24xbC9zSU5BRTVkOGZVT1RzbjFsL3NKRTBhWTlxMlBvTTdOeDZSTHlVakxLa05zVmtaemxpUkZ6c2wwdGttYS9lYVZZbzlNbXExVkpXbXlVUFhtWm1La0ppYjExeXV2QWliVlhlUzVkTERsQWtzTVVDVXBNakRhMkZMdzBhcmthaUxFZGJON3JmMUt0MVhwQTlVQUFBQUJ3ZTlrTnI0a1NJMkhEYTFYUGM3WWljS3J2SWlJVlowcDZTcG5GOVRpMDJUaXJDbzByRlZJYldPdWt5NUZ0M1J5NzZiN1UzazU5bTE2Y2RJZmRvc1hDVk1jNUVoUGFzL0dhL0o2MnVrTExhaVpLNisrbHQ1YndQdmdaelJkdVpnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDNnBzVUFEYzlHMk80K0JjUXJOTERkR2taaHFRNXFDMTFsVnQ3bzV1OXJKdlg1MDN5MnRJcXNsWEtaQXFOUG1HVEVySGFqbVJHYkY1dVpVMkttOFVaYnR2YllTZG9nMGcvUldzZk5jKzlpVXVmaU43cEZlNVU3Zysxa2ZmZzNsOU84QmFZR0d2YkVhMTdjMGNsMFZGdWlwemN4a0FBQUtFZ0FBQUFQZXdSNCs0ZDg1eTNhdExzcnRVcE5nang5dzc1emx1MWFYWlhhb0dBQUFBQUE2ODkvTHByOEYvcXFkZzY4OS9McHI4Ri9xcUJSTjI5MEhFNU8zdWc0Z0FBQnMranJ5a1liODR3ZlhRdWNteE9ncGpvNjhwR0cvT01IMTBMbkpzVG9BeUFBQkVQeWlmRVdtK2NrN0tJUzhSRDhvbnhGcHZuSk95aUFWb1V3WlV3QUFBQUFBQURtek5MYkUzK0VDWmZrL1lVV2Vya3hpYU8xM2NLZi9veTYzdHJSbkpuc1hlWXRyS2xsMTA0Q3gxcmIxdVkxUFJ4aHRtRnNEMDJTV0QzS2FpUTBqemQ3SzVZcmt1cUtyZHRyNnFjQ0lodGFMZE1yMjJKZmFCa0FBRFM5SjJNMXdUaE9MT1M3bWZPRWR5UVpOcjdLbXV1MXlwZk5Hb2w5L05XM1RNM1Bia21WMVQvSlVQU2ppMWNYNDNtcG1DL1drNVpQNGFWeXRkalZ6ZG1pTDlaeXF0bHpTOWdOSWlQYytLOTczT1Z6bktxcTVicXE4NXhNcnRVd0FBQUFBQUFBQU8xS3ljeFBUTEphVWxvc3hNUHVqSVVGaXZjNWJYc2lKbXVSMWQ4M3ZRNzVWcUQrSy9zbmdlQjlEc1Vjbkt4MUdMN28raDJLT1RsWTZqRjkwdTNyTHdyNlJyTHdyNlFLU2ZRN0ZISnlzZFJpKzZaVEJ1Sjc1NGNyRnY3R0w3cGRyV1hoWDBqV1hoWDBnVVhxTkxuNlU5c0tveU16SnhYdDFtc21JTG9hdVRoUkhJbDB2YzZCTTN5aTF2aXVrMzRndmF1SVpBQUFBQUFBQUFIT0dpcTdaYzRBQzBXaFhIQzErZ09vOVFtMnhLcEk1TlY3cnZpd2JaTHNTK3I0TzFWMktTbWlXVythYnlvcWxLY0dZbGo0VHhUSlZlQ3JsYkNlaVJZYVgvMUlhNU9hcUlxWHl6UkZXMTBTNWRDU200RS9KUVp5V2l0aXk4ZGlSSVVScmtjam1xbDB6VEwwQWZjQUFVSkFBQUFBZTlnang5dzc1emx1MWFYWlhhcFNiQkhqN2gzem5MZHEwdXl1MVFNQUFBQUFCMTU3K1hUWDRML1ZVN0J3aXcwalFZa0oxOVY3VmF0bHN1YVdBb2M3ZTZEaVdrWFFIZ3ZaclZSVi91a3kvd0R3TWJnT0RPR3FkYVQzQUt1QXRIdUE0TTRhcDFwUGNHNERnemhxbldrOXdDQTlIWGxJdzM1eGcrdWhjNU5pZEJIVkkwSzRVb3RZazZuSy9PUDhSS1JteG9ldk1vcmRacTNTNmFxWlhKR3RxcGExbDVnQUFBRVEvS0o4UmFiNXlUc29oTHhyK0xzSDByR3RNZzArckxNSkJneHU3dDdoRTFGMXJLM2dYS3psQXBVcGd0R3VnTEJuRFZGLys2YjdnM0FjR2NOVTYwbnVBVmNCYVBjQndadzFUclNlNE53SEJuRFZPdEo3Z0ZYQVdqM0FjR2NOVTYwbnVEY0J3WncxVHJTZTRCVncyelJ6UUZ4SmppbFNEb2F1Z2QyU0xIWHVYZEU3bXo2eTZ5Yk5WYkkxYi84QUVUdnVBNE00YXAxcFBjUGR3cG90dzlnMnJyVktXczZzd3NOWVArdkhSemJPVkw1STFNOGtBM1ZMSWlJMUVSRXlSRVMxaklBQUFBYU5wY3I3NkJvN3FNU0dybXg1cEVsSVRrUkZ0cjdiMzN0VkhKbHdvVkRYYXBNV24rdkxQWXJsS0sxenU0eUVMV2UzNnR1NlB6dnczUnRrVy9BUTZxM1ZWQXdBQUFBQUFBQUFBRytiM29kOHExQi9GZjJUelJOODN2UTc1VnFEK0svc25nVzdBQUFBQVZ2K1VYNDEwbit3WHRYRU1remZLTDhhNlQvWUwycmlHUUFBQUFBQUFBQUFBNXcxczdlVG51V1owQjRsZFZNSlRGSG1JK3ZNVTJML0FLU0xlNlFIWnR6WGFpT1J5SWliRVJDc1p2dWg2dkpRTklzaEVpTGFCT1hrb3RtNnkyaWVEYmcrdWpNK0M0RnVRRWE1YjJSRno2QUJRa0FBQUFCNzJDUEgzRHZuT1c3VnBkbGRxbEpzRWVQdUhmT2N0MnJTN0s3VkF3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJ4YzVyVzZ6M05hMXFyZHlyYXliL3dEdG1janhNWFZDRFM4SVZpY21XdldERGxJcXVScUlxcmR1cmtuU3FBVS94aFZWcmVNS3RVWE5ZMVppYWU2ME5idHRleVdYZnlROFF5NUZSMWxTeW9ZQUFBQUFBQU8zSnlzYWZuWmVVbDRmZFppUEViRGhNUlVUV2M1YkltZStxbTM3anVQdVRzZjlhRjc0R2lnM3JjZHg5eWRqL3JRdmZHNDdqN2s3SC9XaGUrQm95Sm1iMW9kUmQxYWc1ZjhBeFg5azh4dU80KzVPeHYxb1h2bTI2TnRHMkw2RnBEcEZTcU5FalM4bEFpdVdKRWRGaHFqVVdHOUVWYk9WZHFnV1BBQUFBWjJ5MmdWditVWDQxMG4rd1h0WEVNbGlOTmVCc1NZcXhGVHBxaTBxSk53WVVuM043bXhHTjFYZDBjdHZyT1RlVkNNZHgzSDNKMlArdEM5OERSUWIxdU80KzVPeC93QmFGNzQzSGNmY25ZLzYwTDN3TkZCdmFhSHNldHpYRHNlM05HaGUrYWhWS2ZOMGlvekZPbm9Ub00xTHZXSEZocXFMcXVUYWwwdW5vQTZZQUFBQUFkaVNtWThuT1FacVZlc09ZZ3ZiRWhSRTJzYzFib3FjNktoMXpreTJZRjVxSFVHVnFnVTZxbzEwSnM3TFE1aEdPVkZWcVBhanJLditRYWJvVm5JY1RSWFNtdGlRNGo0VDR6SG9qcnF4ZTZ1VkVYZ1hWVnEyNEZRQVZKQUFBQUFlOWdqeDl3NzV6bHUxYVhaWGFwU2JCSGo3aDN6bkxkcTB1eXUxUU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWFCcG9xRWFRMFkxTHVUWWEveERvY3U3V1JjbXVkbXFaN2NqZnlOZE8za3htUDdxQjZ5Z1ZVY3QzS3ZDWUFBQUFBQUFQZHdiNDcwRHpqTDlxMHUwN3dsNlNrdURmSGVnZWNaZnRXbDJuZUV2U0JnQUFBQUFBQUFBQUFBQUFBR0hlQ3ZRVTIwbmVVekVYOTlFTGt1OEZlZ3B0cE84cG1Jdjc2SUJxWUFBQUFBWlF3QUxDYUNzUjBPa1lJblplcDFtblNVWjFSZTlzT1ptbVEzSzN1VUpMb2psUmJYUlV2ektDdllBQUFBQUFQZXdSNCs0ZDg1eTNhdExzcnRVcE5nang5dzc1emx1MWFYWlhhb0dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUkxMDdlVEdZL3VvSHJLU1VSM3B1bFk4MW94bnU0UTFpZHhpd1l6N2Ywc1IyYTlDWEFxYUFxV1d5Z0FBQUFBQTkzQnZqdlFQT012MnJTN1R2Q1hwS1M0TjhkNkN1OTg0eS9hdEx0TzhKZWtEQUFBQVhDNUxaZG9BQUFBQUFBNGVaYkFBQUFNTzhGZWdwdHBPOHBtSXY3NklYSlh3VjZDbStrN3ltWWkvdm9nR3BBQUFBQUFSRlVISm9IRUV6Nko5SEdIY1lZV21haFYyVFRwaUZPdmdOV0ZIMUUxVVl4MnkzQzVjd0JEQU94UFNNelRxaE15TTNEN25NeTBWMEdLeldSZFY3VnNxWFJiTG1pNW9kY0FBQVBld1I0L1lkODZTM2F0THNydDZTaExWVnJrVkZWRlJjbFRlTG40Q3hiTDQwd3ZLMVNBaU5qb2lRWnBtb3JVWkdhMUZlaVgycG1pcG11U3BleWdiTURDS2lwZEZ5NFRJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOERHOU1kVjhEMXFSU0lrTlkwbyt6MWJkRXNtdC8rcDc1OHBpQ3laZ1JZTVp1dkNpTVZqbTN0a3FLaTI0TWxVQ2g3bHU1VjRjekI2K0pxTStnNG5xVktkcUtzck1QaEpxT1Z5V1JjczFzcTVXUElBQUFBQUFPOVNxaStsMWFTcUVKR3ZpU2tka2RqWDdGVmprY2lMYmV1aExDL0tNcnlyZjVrcGZwaSs4UXlBSm03NHV2ZllsTC9ORjk0ZDhYWHZzU2wvbWkrOFF5QUptNzR1dmZZbEw5TVgzalk4RGFhNnhpbkdWT29relM2ZkJnVFVSelhQaExFMWtzeHpzcnJiK2tydHZtOTZIZkt0UWZ4WDlrOEMzWUFBQUFDSzlLV2xLbzREclVsSlNOUGs1bGt4THJHYzZPcjdvdXVyYkpxcW1XUm9mZkYxNzdFcGY1b3Z2RDVSZmpYU2Y3QmUxY1F5Qk0zZkYxNzdFcGY1b3Z2RHZpNjk5aVV2OEFORjk0aGtBVE4zeGRlWEw1bHBhYzk0dnZFVzRoclVYRU5lbnF2SGh3NFVXY2pMRmV5SGZWUlYza3ZtZVdBQUFBQUFBWmJiTXdjbVpYVUMxbWhDUWxaYlJoSlIwYTVJczNIalJvcXE1VnU1SHJEdW5COVdHMUxjd055b05KYlJzT1V1bDkwN3AvQnlrS0FzUnJFYnJxMXFKcldzdHIydnRBRlc5THRBV2dhUjZvelVja0tjY2s3Q2M1Nk8xa2lYVnk1YlByNjZXWGVRME1zajhvREREcCtoU21JSUVORml5RGxoekgxVVJ5dzMyc3FydFd6azJaMjFuTGtWdjFWNEFNQUFBbTAyYkIrT0t2Z3FwUG02WEdhcklyZFdOTHhrVjBLS245S3VSTExkRlZWUlV6VG9WVVhXUUJhTEQrbm5DbFRsa1dyZDJwTTFkRVdHc04wVmkzdm0xelUySlp0MVZFMjc2RzVmVDdCMS9HbWpkY1o3U2xpWktoeVZ5V3NpLzVVQzZQMCt3ZHlxbzNYR2UwZlQ3QjNLcWpkY1o3U2x0K2NYNXdMcGZUN0IzS3FqZGNaN1I5UHNIY3FxTjF4bnRLVzM1eGZuQXVsOVBzSGNxcU4xeG50SDArd2R5cW8zWEdlMHBiZm5GK2NDNlgwK3dkeXFvM1hHZTBmVDdCM0txamRjWjdTbHQrY1g1d0xwZlQ3QjNLcWpkY1o3UjlQc0hjcXFOMXhudEtXMzV4Zm5BdWw5UHNIY3FxTjF4bnRIMCt3ZHlxbzNYR2UwcGJmbkYrY0M2WDArd2R5cW8zWEdlMGZUN0IzS3FqZGNaN1NsdCtjWDV3THBmVDdCM0txamRjWjdSOVBzSGNxcU4xeG50S1czNXhmbkF1bDlQc0hjcXFOMXhudEgwK3dkeXFvM1hHZTBwYmZuRitjQzZYMCt3ZHlxbzNYR2UwZlQ3QjNLcWpkY1o3U2x0K2NYNXdMcGZUN0IzS3FqZGNaN1R1VTdGT0g2eE0vd0FOVEszVDUyWTFWZjNLWG1HdmRxcHRXeUxzS1EzNXpkdEU5YStaZEkxSWpPanZoUVkwUlplS3JXNjJzMStTTlZMYkZkcUFXK0FzcWJkdStBQUFBckZwM29FYW5ZM1NxTmdNWktWQ0UxV3ZodzFSRmlOU3o5WmJXMWwyNzZxaTVrVHJ0VXRicHB3NCt2WUZpekV0QlNKTjA2Si9Fc1ZMNjJvaVdlaVczN1dYUGVhVlRWcTZ5cHQ1K0VEaUFBQUFBQUFBQUFHK2Izb2Q4cTFCL0ZmMlR6Uk44M3ZRNzVWcUQrSy9zbmdXN0FBQUFBVnYrVVg0MTBuK3dYdFhFTWt6ZktMOGE2VC9BR0M5cTRoa0FBQUFBQUFBQUFBTW9pcWk4eHVPaTZpeGE1cERvOHV4WHRiQm1HelVSN1llc2pHdzExOCtCRlZHdHZ2SzVOdXcwNXUwc1Y4bnJEMzhQU0tuWG96RlIweTlKZUE1WVNYMUc1dWMxeTUyVnkyVk9GaUFUVXJrYXVhYmM5OEdVMnJzVC9GN2dENFRzbkwxR1FtWkdiaHBGbHBtR3NLTERWYkk1cW9xS24rVUtmWS93Zkh3VmlpWXByN1BsbnAzV1dpWHZyUWxWZFc2MjhKTFdYLytseURYOFlZUHBtTTZLNm4xQmxudHU2Qk1OVDY4Qis4cWMyOHFiRkFwVnFybmxzTUd3NHN3blU4SVZtSlRhbkQxWEltdENpczhDS3pZam1xdTkvMFU4QldLbDc1ZElIRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBK3NLS3NMVmN4NnNlMTEwYzNKVVhlVkZQa0FMcjRMeEN6Rk9ENmJXR3NWam84TzBSdGxzMkkxZFY2SmZhbDBYTTk5RnVseUEvazg0b2hRbG5zTXpFUkd2aXFzMUxLNTIxYklqMnBkZHRrUlVSRXorc3U4VDVlK2VYK0VBQUFEZzlpUkdQWTVyWE1jbGxhNUxvNUYyb3FjRzlZcDNwRncwM0N1TjUrbVF0WlpiV1NOQVd5NVEzL0FGa1M2N2JYdGZoTGprY2FZc0ZQeFZoZitLa21KODVVN1hqUTBzdDRrTzMxMkpiYXEyUlU1OGsyZ1ZSWGFwZzVxeGI3eWRKd0FBQUFBQUFBQUp0TjcwUFphVmFDdi9OZjJUelJFMm5jcDlVbktSUHdwNm56TVdYbW9LcXNPTkRkWnpWVkZUTC9BQXFwL2tDOU4wNFU5SXVuQ25wS2JicDJOdVUxUy9XRzZkamJsUFV2MWdMazNUaFQwaTZMdnA2U20yNmRqYmxQVXYxak82ZGpibE5VdjFnTjUrVVg0MVVuK3dYdFhFTW5xVnJFTlZ4REhoeDZ2VUppZGl3MmFqSHhuWFZHM3ZiMG5sZ0FBQUFBQUFBREtKZSt6SXdjbVpxQjZGQnBFMVhhM0tVdVViclRFMUVTR3pLOXI3VjZFUzY5Q0YwNkZSNVhEOUVrNlRKdDFZRXJDU0dtU1hWVTJ1V3lacXE1MzN5S05CR0NGa0tiRXhOUHk3VmpUYUkyU1YxbFZzTGZlbkFxcmwwSVRRQUFBQUFBZUppYkNWR3hkVG15ZFlsZTdNWXF1aHZhNVd2aE9WTFhhNU0vOGJGc2wwSzA0eDBRNGp3cXNlWWhRSFZHbXRjcXBNUzZheXRibm5FWnRia2lxcXBkRTRTMkpoVXlXeXFpNzFsQW9ZakZWRnRaZVl3clZSTDVla3VEaVhSWGhMRkVXTkhtNmNrdk54VSt0TlNqbGhQVmRiV1Z5cDRMbFZkOXlLdHY4RVdWUDVPZFZZc1A1cnI4bE1JdXQzVCtLaFBnNnV5MXRYWHZ2OEZ1Y0NFQVNQT2FETWRTMDIrREJwOHROdzIrREhnemNOckg5Q1BWcnViTkVQaHVKNlFQc1JuWFlIdmdSK0NRTnhQU0I5aU02N0E5OGJpZWtEN0VaMTJCNzRFZmdrRGNUMGdmWWpPdXdQZkc0bnBBK3hHZGRnZStCSDRKQTNFOUlIMkl6cnNEM3h1SjZRUHNSblhZSHZnUitDUU54UFNCOWlNNjdBOThiaWVrRDdFWjEyQjc0RWZna0RjVDBnZllqT3V3UGZHNG5wQSt4R2RkZ2UrQkg0SkEzRTlJSDJJenJzRDN4dUo2UVBzUm5YWUh2Z1IrQ1FOeFBTQjlpTTY3QTk4Ymlla0Q3RVoxMkI3NEVmZ2tEY1QwZ2ZZak91d1BmRzRucEEreEdkZGdlK0JINEpBM0U5SUgySXpyc0QzeHVKNlFQc1JuWFlIdmdSK0NRTnhQU0I5aU02N0E5OGJpZWtEN0VaMTJCNzRFZmdrRGNUMGdmWWpPdXdQZkc0bnBBK3hHZGRnZStCcVZCckUzaCt0eWRYa1g2c3hLUlVpTnU1VVIxdHJWdG5aVXUxZVpWTHFVU3J5bGVva25WcEordExUVUpJcmJxbDIzMm90bFZMb3VTNXJaVVVxMXVLWS9SRS85aHM2N0E5OG1YUTdSc1c0WnBjM1JNUlU1SU1vajBqU2tWSmlIRVJxcjRUUHF2V3lLdG5KWkxYVjZydEFrOEM5OHdBRy9lNjdMQUFWbDB4YU4xdzFVdm51aXlTdG8wd3YrcWpNMGw0cXJzdGI2ckZ5dHRTNnFtV1NMRXVvdDdXTHoxV2t5RmJwY3pUYWxMTW1KU1licXhJVDlpNzZMbG1pb3VhS21hTG1tWlU3U1JnR1l3SlhteTZ4LzRpbnphT2ZLUm5LbXVyVVhOcjAvNGt1bDFUSmIzVGZSQTBjRGZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDSmNBaVhONjBZNENpNDN4RWtHWWJIaDBxWFRYbTQ4TlBReEZYK3AzK2JKblk4UENlRktwaSt0UTZaVElhT2NxYTBXSzYrcEJaZEx1Y3ZCL3VxNUlXN3dqaGFSd2ZoMkRSNUZYdVl4eXZmRmV2MW9qMXRyUDV0bXhONy9BQ29Ic1M4Q0hLeThPQkJicXc0VEdzYTI2NUlpV1JQUWZVd2w3N3lJaVdSRVRZWkFBQUFBQUFBQUMxOGxBQXhiL3R2NzVuUDlxQUF6L2FqUDlxQUF6L2FqUDlxQUF6L2FqUDhBYWdBTS93QnFNLzJvQURQOXFNLzJvQURQOXFNLzJvQURQOXFNL3dCcUFBei9BR296L2FnQU0vMm96L2FnQU0vMm96L2FnQU0vMm96L0FHb0FEUDhBYWphbWUyMzcvd0NvQUQvSUFBQUFBZVBpYkRGTnhiUTR0S3FzSllrRitiSHA0Y0orODlxN3lwZm9WTWx1aW5zQUNuR045SGRhd1RPTC9IUTBpeVVTSTVzQ2JoK0JFdG1sMC9wVzI4dkF0cnBtYWxxNW9seTgxWG84aFhhWkhwMVNsMlRFckhicXhJYmsvd0IwWGFpcHRSZDVTdE9rTFEvVXNLYTA5VE83VkdtYWl2aVJFWW12QXN1ZXNpYjFyZldUbnZZQ0xRYzBoT1habWNBQUFBQUFBQUFBQUFBQUFBQUFNb2w3OUJsRzNBd2lLcTJROTNDbUU2cGkrdHc2WlM0YU9jcWEwV0s3d0lMTjl6bDRPYmFxNUllM2dMUmpXTWJSMng0S05scVd5S2pJMDNFLzNSaWYxTzV0bWFYTFFZVndqUjhIMHhaR2p3SFEyT2RyeElyMTFva1ZmL1U3ZnRtbHRpZWtEcjRKd1ZUY0QwZDFQcDc0c1J6MzkwalJvcU4xb2p0VkUzazhITEpGdmJXWE0yUkV0ejg2N1FpVzUrZGRwa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWNYc2JFWXJIcGRxM3VuQ25BY2dCRmVPTkMxSXIvQVBFMUNrS2toVkgzZnFKbEFpdXlUTnY5TjdMbW0rdVpYekV1QzY5aE9hV0JWNUNKQlJYYXJJcUpyUTRtYTIxWEpsbnFyWk50dDR1c2lLbHJyZTJ3K1UzSnlzL0xSSmFibDRjZVhpTlZyNFVWdXMxeUtsbFN5Z1VSVmlwZm0ybkVzN2lUUUpRS282Tk1VZWFqMHVZZG0yRWlkMGdJdXRkZnFybW1XU0lpMlN5WkVQMTdRN2pLZ3BydnBxenNGRWJlSklyM2JOZDdWeWYwL1Z0emdhRURzVE1sTVNVeStXbTRNV0JIaHJxdmhSV0sxN0Y0RmF1YUwwbngxY2x6QTRnell3QUFSTHJZNWF2T0J4QnlWdVY3bWRTeTJjdGdPS0pkVEtONXpjS0pvdHhoWEpoR1FLSk5TN0VlMXI0czR4WURXSTcrcjY5bFZFc3FycW90dUROQ1djUC9BQ2VxZkFWa2F1MWFMTk9SV0s2QkxON215OXJ1YXJsVlZWTDdGVFZYTFlCQTlIb0ZVcnM2MlZwY2xHbW82LzB3bTN0enF1eEU1MXNUM2duUVRJeUt3Si9Fc1JKeU1yYnJJSW4ra3hWVFk1ZHJsUzY3TXZRU3hTS0hUS0RKTms2VkpRSlNBMyttRXhFMWx5elhoWExNOURmOWdIeWw1YURLd1Vnd0lVT0hDYnNaRGFqVVMrMnlJZlN5MzI1SnZJaGtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURDTnV1cmZMTkFBT2xVS0xTcTAxR1ZXbXljODJFNVZZMlpnTmlJMVZUTlV1bVNtblI5Q3VBNWlCRlJ0SGZCZkZZLzY4S2Jpb3JGM2xSRmNyY3IzUkZSVXkyQUFhWGlMUVhoaWtZWXExVGw1NnJ1alNjbEdtSWJZa2FHclZjeGl1UkZ0RFJiWFRoSytBQUNaOUhHaWloWXd3aERxMVFtNmxDbUhURVdFclplSXhyTE50YkpXS3Q4K0VBQ1NLWm9Qd05MeWNOa2VuekU1RTFsdkdqemNScmxSVjJXWXJXNWRCdWRKdy9ScVBEaWZObEprWlB1alU3b3N2THNacjZ1eTlrenRkZG9BSHAzVld1NXJoWGZXdFpOdHY5cmdBWkFBQUFBQUFBQUFBQUFmLzlteDZlSENmdlBhdThxWDZGVEpib3A3QUFweGpmUjNXc0V6aS94ME5Jc2xFaU9iQW00ZmdSTFpwZFA2VnR2THdMYTZabXBhdWFKY3ZOVjZQSVYybVI2ZFVwZGt4S3gyNnNTRzVQOEFkRjJvcWJVWGVVclRwQzBQMUxDbXRQVXp1MVJwbW9yNGtSR0pyd0xMbnJJbTlhMzFrNTcyQWkwSE5JVGwyWm5BQUFBQUFBQUFBQUFBQUFBQUFES0plL1FaUnR3TUlpcXRrUGR3cGhPcVl2cmNPbVV1R2puS210Rml1OENDemZjNWVEbTJxdVNIdDRDMFkxakcwZHNlQ2paYWxzaW95Tk54UDkwWW45VHViWm1seTBHRmNJMGZCOU1XUm84QjBOam5hOFNLOWRhSkZYLzFPMzdacGJZbnBBNitDY0ZVM0E5SGRUNmVcXFwiXFxufTtcXG4vKlxcbmNvbnN0IGJhc2U2NHRvSEVYID0gKGJhc2U2NCkgPT4ge1xcbiAgICBpZiAoYmFzZTY0LmluY2x1ZGVzKCdkYXRhOmltYWdlJykpIHtcXG4gICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zcGxpdCgnLCcpWzFdO1xcbiAgICB9XFxuICAgIGxldCByYXcgPSB3aW5kb3cwLmF0b2IoYmFzZTY0KTtcXG4gICAgbGV0IEhFWCA9ICcnO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhdy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IF9oZXggPSByYXcuY2hhckNvZGVBdChpKS50b1N0cmluZygxNilcXG4gICAgICAgIEhFWCArPSAoX2hleC5sZW5ndGggPT0gMiA/IF9oZXggOiAnMCcgKyBfaGV4KTtcXG4gICAgfVxcbiAgICByZXR1cm4gSEVYO1xcbn07XFxuXFxubGV0IGV4cG9ydF9tYXAgPSB7fTtcXG5PYmplY3Qua2V5cyhiYXNlaW1hZ2UpLmZvckVhY2goaXRlbSA9PiB7XFxuICAgIGxldCBmaWxlVXJsID0gYGhpa2VyOi8vZmlsZXMvY2FjaGUvJHtpdGVtfS5qcGdgO1xcbiAgICBpZiAocmVhZEZpbGUoZmlsZVVybCkgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgIHdyaXRlSGV4RmlsZShmaWxlVXJsLCBiYXNlNjR0b0hFWChiYXNlaW1hZ2VbaXRlbV0pLCAwKTtcXG4gICAgfTtcXG4gICAgZXhwb3J0X21hcFtpdGVtXSA9IGZpbGVVcmw7XFxufSlcXG4qL1xcbiQuZXhwb3J0cyA9IGJhc2VpbWFnZTtcIn1dIiwiaWNvbiI6ImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsLzlqLzRRRkFSWGhwWmdBQVRVMEFLZ0FBQUFnQUJ3RUFBQVFBQUFBQkFBQUI5QUVRQUFJQUFBQUNNQUFBQUFFQkFBUUFBQUFCQUFBQjlnRVBBQUlBQUFBQ01BQUFBSWRwQUFRQUFBQUJBQUFBWWdFU0FBUUFBQUFCQUFBQUFJZ2xBQVFBQUFBQkFBQUEyQUFBQUFBQUNKS1JBQUlBQUFBQ01BQUFBS1FEQUFNQUFBQUJBQUFBQUlLYUFBVUFBQUFCQUFBQXlJZ25BQU1BQUFBQkFBQUFBSklKQUFNQUFBQUJBQUFBQUpLUUFBSUFBQUFDTUFBQUFKSUlBQVFBQUFBQkFBQUFBSUtkQUFVQUFBQUJBQUFBMEFBQUFBQUFBQUFBQUFBbkVBQUFBQUFBQUNjUUFBVUFBUUFDQUFBQUFrNEFBQUFBQlFBQkFBQUFBUUFBQUFBQUd3QUNBQUFBQWpBQUFBQUFBd0FDQUFBQUFrVUFBQUFBSFFBQ0FBQUFBakFBQUFBQUFBQUFBQUlCRUFBQ0FBQUFBakFBQUFBQkR3QUNBQUFBQWpBQUFBQUFBQUFBLytBQUVFcEdTVVlBQVFFQkFFZ0FTQUFBLzlzQVF3QUlCZ1lIQmdVSUJ3Y0hDUWtJQ2d3VURRd0xDd3daRWhNUEZCMGFIeDRkR2h3Y0lDUXVKeUFpTENNY0hDZzNLU3d3TVRRME5COG5PVDA0TWp3dU16UXkvOXNBUXdFSkNRa01Dd3dZRFEwWU1pRWNJVEl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeS84QUFFUWdCOWdIMEF3RWlBQUlSQVFNUkFmL0VBQndBQVFBQkJRRUJBQUFBQUFBQUFBQUFBQUFFQWdNRkJnY0JDUC9FQUVzUUFBSUJBd01DQkFJRkNnSUlCUU1GQVFFQ0F3QUVFUVVTSVRGQkJoTlJZU0p4QnhReWdaRVZGaU5DVTVLaHNjSFNVdEVJTXpWaWNuUGg4Q1EwUTRMeEpXT3lGeGgwb3NLRC84UUFHd0VCQUFJREFRRUFBQUFBQUFBQUFBQUFBQUlEQVFRRkJnZi94QUEwRVFBQ0FnRURBZ01IQXdVQkFBTUJBQUFBQVFJUkF3UWhNUkpCVVdId0JSTWljWUdSc2FIQjBSUWpNdUh4UWdZVllzTC8yZ0FNQXdFQUFoRURFUUEvQU83VXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLZDZVQXBTbEFLVXBRQ2xLVUE2OFZvZXArTHJ5RDZZdEU4THd1aVdjMW5KUGNLVkJNakZXS2dIdGpaL0UxdDF6ck9uV1dwV21uWE41REZlM203NnZDellhWGIxeFhFL3BGdVgwajZmL0RXcFNTTERibGJiOUt6WVhZSFlQazloZ21nTDEvNDZuc2ZISGp2WFJOdlRSN1JMR3lnWWt4NzJrQzV4L3hCaWE2MTRRdXIrLzhBQ0drWG1weUNTOXVMVkpablVBQWxobm9PT2hGZklON3Foa2kxdEdsTFNYdDRKR0lPUXdWbk9meE5mWHZnMEFlQ2RDQUdQL3A4SngvN0JRR2JwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNuZkhHZlROS2p0YUlieGJuYzI0REdNOEdnSkJPQms0eDcwN0E5alZxNGdXNWhhSml3QjdyMUZWUlJpRkZRWndveDcvT2dLdHk5aUNSMXhRa2dkcys1cXhCYXh3VFN5aDJZeWNrSHRYdHhhSmRiTnpNQ2h6OEI2MEJmcWt1bzc4R3ZYQVpXQjdqRldyYTFTMGdFYWxqM082c082MkJlcFhsZTFrQ2hHUVI2MHBrRHJXR3JCNG93b0hYSGV2YWRhVVNyWUNsS1ZrQ2xLVUFwOCtsS1VCekg2WmZDOTdxZWpXbmlEUjVIWFV0RVpwMTJINGpId1NSN3FWM2ZMTmZQM2pMeHZxWGphN3M3clU0N2RacmFEeU4wSzdRL0pKWWoxT2UxZlRQMG9lS2JMdzE0SzFCSmJtSVgxNWJ2QmF3bmxuTERhVGowQVBXdmtFOUtBWis2dnRYd01aajRFMEF6cVZsK29SQmxQYjRhK0tSWFdOTCttdnhtbWtXV2s2YllXczBsdkdzSWxXMmVTUndCZ0FxRGpPUGFnUHAybGF6NEYxVHhGcS9odU82OFRhWXRoZkZ5QWlqYVhUakRGU1R0UHRXelVBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBSzg3MTdWdWVhTzNpTXNqWVVkOFpyRFQ3QXVVeDJ6aXFJNUZsaldSRGxXNkdyTnZjd1NTdkVrbTUxT1RXTGRwVUNtOWx1b3ZMTnRFSHkyR3lNMUpsTExFNVJjeUJTVkh2NlZhdUwyRzEyK1krQzNUZ21yanlMSEMwakViUU1tcEFzV0V0eE5ibHJpTUl3YkE0eHg4cXRQTmVMcXlRcEFEYkZjbVRINDgxSnRydUc3UXRFYzdUZ2dqR0t0bS90MXUvcXhZaVRPTTQ0ejZWaHF3ZTN6engyak5icnVreU1ER2VQWEZYYll5UGJ4dk11eVVqNGg2VlRkWFVkcEdKSmQyQ2NEQXp6WHNGeEhjUkNWR3pHYzlzVmtFYTBtdlpicVpKNHdrWXp0SVhwNmM5Njl2NWJxRm9SYXhCbEorTGpQM1Y3YmFoYjNVNWlUY0Rna1o3MVZjMzBObzZwS1czSG5DalBGWk1GMXhJc1RzUGlmQktqMFBwVm14bHVKSUMxeEhzZmNRT01aSHJpcnpYRUtJWGFRQlF1NG4ycWkydTRidEdhSW5DbkJCR0tqSFpiR1dVTkxkalUxaldFRzN4eStQNjFlblpralBsakxlZ0dUVnRyMkJib1c1YytZVGpBNlorZFhablNNYm1KQUhVTDNvd2hFenRBck91MThEY1BlakhhdU01eTNwU0tWSjRsa2pPVVlaQjZWWWl1WUxpVm80WmdkakV1RDM3Y2ZmVVpKdGJHVlJKMy9wRlhqa1ZWM3FKTGV4UXlnVFlVa2tLZXRTK25GWmk3M0RWQ2xPK004MHFSZ1VwVHZpZ0ZXNTdpRzFna25ubFNLS0pTN3ZJMkZVRHFTZXdxMXFHb1dtbDZmUGZYMXpIQmF3S1hra2M0QUFyNWUrazM2VnJ2eGxjUHAybk5KYmFKRzNFWjRhNEkvV2YyOUY3ZCthQXdmMGsrTEc4WWVNTHUrU1RkWnhIeUxRQVkvUktlRDh5Y243NjFGUms5S3VXMXZOZDNNY0VFVFN5eXNFUkVHU3pIZ0FDdm8vNlBmb1N0ZERudGRYMStWYnEvUUxJbG9GL1J3dC92WisyUitBSTcwQnAvMGZmUWhkNjFIRnFmaVVTV1ZpU0dqdFFNU3pEMy93QUEvaWZhdm9YVE5Lc05HczB0Tk1zNGJTM1FBQklVQzlQWDFQdWFtVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBROUtBQVpHUlZtNlJKSWRqeEdVTVFObzdWYWxndUcxSkpWbHhEajdOZTNzVTl4WnNrREdPUW41WjlzMWlWdlpPZ2lRa2F4SXFLdTFGR0FCVnVLMGhnbGVWSWdIZnFhOXRrZUsxaVNWdHpqcVJVT3p0YnFLK2trbGx6RzJjZkZuUFBISGJGWkJLdUxPM3VOclN4N2lweUtxM3hUcTBKNUFHQ21NWXFGcVZ0ZDNMUnZidHR3TWZheGozcVJKSEsybk11UXN6TGpjTzUvd0N0UmQycU03VVZRUVEyYUZJWXpodXBISnEyTE9CNzQzRzNNZ0lPTzNTck9tMjkzYnhIekgrMDR3R1BRZDZnZlZiazZwOVp5VWplVDRYSnhoZlRGUmJmVnlaUzJNMWN3UlhVV3lYSlFFSE9jWVB0UUlsckNpSW1ZUU8zUFh2VVBVYmFlZXlpVzNjeUJEbHNIa2lyMWpCUERwL2x5RWlVZzdTVG5GVFZ1SmpaTTl0N0cxZ25hU0xsdTNPZG85cXJ1cktHN0t0T011QmdZYkdheG1tMk41RGZlWTZsVVhPNDUrMVdGK2thOXY4QVJkQW4xaTBDT3RyNVpaV0JJQ0Z3SDQrUnpVaUp1RWlSYlNrd1hZd0NZeGcxNWJXMEZwRnRoVEFKNUpPY21zYzk0bHhheElqNzRualZoSU9wQkFJSSs0aXFkSW1qUyt1YlB6anVDTEtxbnVwNHlQWEJHRDZmZlZVWnB0cE1zbEJwSnN5TDJsdjlhRnd5ZnBmYjErVlUzNFdTemN5cG5CNkU4NXFCZEpOQnFSbmFRNHpsQUQxSHBWeVc1bnU3ZjlIamVqWlpWNU9QZXNTbXI2YjNNeGc2NnEyS0xhNmEzS0FOK2pCNlk0eFVqUzlOVFRvQ0crS2FSMmVSdXArSmkyQitJL0NrZHFJZ0o1eUZZRE93ZE0xRFM2YUlia2tkblk1Ty9vYXFoSjRrK3Rsc29lOGE2RVRwWWx1THRZMlVFeHNXSlljWVBhcHc5TVZoR25rdXZMZFpHVmczSWkvV1Bhb3ZpT2ZWbzRSYTZRL2wzVjRUYndnajdCT04weFBaVVhKQTdzUlZ1T1NhMmRsZVNEWEtMMW5kM09yK0tKNWJhZG85TDAzZGJzRjRGMWNIRzdKN3JHT1ArSW4vQUExc0gzaXNab0drcm9lajIrbkljeFEvQ2d6azQ3a251U2NrbjNySktnVW5hTWJqays1cTBxUGExL3hoNHcwdndYb3JhaHFic2N0c2lnakdYbGZHZG85UGM5cWplTmZIbWsrQnRNRnhmU2VaZHlBL1Y3U00vSEtmNkw2dC9XdmxMeGI0eDFmeGpxN1grcVQ3c1pFTUNjUndyL2hVZjE2bWdNaDQwK2tYWGZHVjVLTHU2ZUxUekp1aXNZMi9ScGpwbi9FZmMxcUhKUEhXdkNjbXRxK2ovd0FJM0hqSHhYYVdNVVcrMmpkWmJ0aWNCWWd3M2MrcDZEM05BZFkrZ3J3QUlvUjR0MUtIOUpJQ3VueHNQc3IwTXZ6UElIM24wcnVudDI3VlJEREZiUVJ3UVJySERHb1NORkdBcWpnQWZkVmRBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFxbFhWeGxUbXFqMDRxMUdxYjJrallFUDF3ZTlZZDJxTXFpdytvQk5SVzBNVFpidlRVcnY2cFl2TUFUa2dBcjJKcVNYajgwUjcxOHpxRnp6Vk04c01NRFMzRHFrWUhKZnBSMVc1aGNsTmpQNTluRkx6bGw1ejFPS2lXV3BtNnVtaGFIYU1Ia0huajFyMnp2TGFSbVdPNTgwUHluR0FCN1ZJaG10WlpuV0dSR2tPQ1FNVkhITlNWb2xPRGk2WkcxTFUzc3BraldOU1dYZHlldFdMN1Y0ZE5na3VGUjNrY0JpcGJoVFh0MXFPbFJYUVM4dUlHT1J0VXBrcWVoNTlPbFI5VGpYZkpjYlJMYnVnT1Y3RHBWR2ZJK2xPRzdSZGh4cnFxZXhKMFRXaHF5eUZsQ3NnR2NWR3U5V2NYWVJvUTBDeUFGVDE2OWE4MGk0czdLQnpHQWl5WStBOEVINVZUY2FscE54T3NOeEUwRThoQ3JJVitIUHo2VktPVk9OVC9BTXZBUEZVcmp4NGt1NzFRd1c2ZlY0UkdDekQ0bDRHS3ZXMS9KTnBzMHpnZVpIa2JoME5RZFZ1YmRiYUdGWjdkdktsVXlKSWhZbE80QkI0YjBOWkszdXJJV0Vra1pXTzJUTzdkd0ZIZlBwODZ0eHY0VWltYXFUWkJzdFd1SmJ4RWtJS09jWTI0Mi9Lb0hqSjJ2dEgxWFI4S0k1clI0M1lyazhxZitsYXJxZjB1ZURkSTFKVXRaWnJsMEpEQzJRTXVmWm1JRll1NCtucndsZWdpZlI5VlJnTWJnc1o0OUQ4WFNwcDc4RVd0ck5pK2p2WFlOZjhBbyswcTdsbkgxcTN4WlhDNDUzcHd1ZlRLNE5iaEd0bmJUeHp5UkFUSXJLc2dHVzJ0akkrUndQd3JpUDBOK0k0Tk8xNjUwaTRVUVdXcEk4OEtPMjhCaGdxRlArSWpka0huZ1YyUytNZVVlSkdWV1h1ZndxaWFVVTVwYm16anVjbEJ2WWszVG02RE9jQlFQZytYdldNMC93Q0RYTHRrWlFYZ2pZLzRqZ3NQNjFlQ3ptTElKMjFpNHZPYnhHZGdKSDFUc2Y4QWVyWGxLNUtWR3pISFVIR3pNMzJzTkg1Rm1pSkxKTkw1YkV0MEdDU1JqdU9QeHEzZFdrdjFiTnNDOHJBS0I2RThmZ0t3dHhNVjhRVzl2dElrVkdkdVBYak9ma0t5djZWQUdMT285YzBjdXErcEVvNCttdWxraU9PM1RUNFkxWXhLZ1lLNTZNTTRCKzgxSGpiYmNySUdLeURnT01aQXp5T2ZsVm02aWU4dDRvb1ZLTnV4SkxuaGMvcm41RE9QZXAxOWJwQ0ludHh1UmdOcERacVRWL0ZGY0dJcW4wU2ZKTjBOWlZzcFRkdXIzYnpNOHJBa3JrbmdML3VnWUErVlNOVDFTeTBYVHA5UTFHNFdDMWdYZkk3bm9QOEFNOWhXdVMzWDFKV25sa01JUlN6TzNBVlIxSnI1MytrajZRYmp4dnEwaStiSW1sVzVQMU9BQURucHVmMUo1UHNEaXRuSGs2K3hwNXNQdTYzdXpCK04vRlYxNHc4VVhlcXp1L2xNNVcyalkvNnFJSDRWL0RrKzVOYTRUbXBGdGJTM1V3amlYTGRlZUFCNms5aFh0ekZGSGNHT0dielVBeDVtTUFudmoycXdwcDFaTDhQYUJmZUp0YXR0SzAyTHpMcWRzQUU0Q2djbGlld0FyNmwraS82UFB6RDBtZjZ6TkZjYWpkc0RNOFdkcXFQc3FDZVNPcHo2MXJ2MEdlQm4wVFNHOFJYOFcyNzFHTUNCR0hNY09jNVAvRndmbGl1djBNQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTckJ1bFE0bVZvL2NqSS9Hc09TWEpsUmI0TDlLOFVxd0JWZ3dQSUlxbnpDSDJsSDlpQmtVdENqMTFEeHNqZEdHRFZtenMxc290a2JzNVk1SmFyejdnamJBQytPQWZXb3RuTmRHMmQ3dENIVW5HQnlSaXNtRHg5UGprdnhkbVZzZy9aRlVhellIVTlNa3R4SVZmN1NuR2VmU28xdHFGL2RYYU10dVk0QzJPbkJIclVqVzU3bTNzaTFxcmg4a2wxWGR0QUhYRlJiVW8rVEpVNHlydWpYN0MyK29GSW1sRVRvYzVjWjVKOXF6Tm5wNGdsZVpwQ01CbFVPb1hQdU9lbFd2cVZ4ZWFkSGNYVEEzQ29TUUJ0OHpIVE9lbGFiYVh1b1hGLy9BT0laMkJ5WERjQmZsV2pGdlQydWJOL3BXcHBwMVJMdkxKcmk1U2FLYmFWNGJPZmZrVm40cExPZTNXMEJNVWpLbzh4dW1SNjFxR3EzTndsd05qc2lBZkNWN24zcjJiVUdheWVGWkQ5WmpDbVZSd3lodWgrUjlhb3hTbkNxTnJKaGhPMHpJM2ZtNmY0a2l0NXBVa1M1dHkwTEljZ01weVYvRGtmSTFidE5HdWJ2VWhHa3dqaFppV0l6aFI4dWxZZlRicGJpNkVFa29kb1R2UldmRzErZW1mWW5QenFUYmFyY3BjaUpUSEErU1M4bWVjZGlQNlZZbDE1T3BrSEZ3eFV0eS80bTFlMjBTeWE4dTViV09LTjhaY0U3ejJDNDY5SzR6NHg4YVgydlIrWDllYTBzMkFiNmlwekhLQWVOektmaVBYZ2dZcWQ5S09vSFZmRlVsdExQQjlXc29nUElqbUVaRWpEY3hBWVk5Qml1Wk9RRzRBcmJ3UmFqdXpSMU1rNXVrWjVHMERVV0NtT1RTNTJHTWcrYkQ5K2ZpWCtOWDczd3ZxbW5XNG50NHJlOGd4dTg2M0htWUZZQzBXQjVBdHhJOFNIOVpVMzgrNHpXVmhrdXRLWHpZcjB2YWs4aTF1dGh6Mk8zcU1mS3JXbXVHVnhhZktNMzRVMHllZlQzbmluVXY1dThRbDhLQ3ZHU1I4U1BubFdIMzEyejg5ckxUL0NpM21xbTVNdHVGU1FSUmgyZGowSUF3UFhKNlZ5dndycmRwcU1qQXdvbW9pUE0waXhoZk55ZVR4MzZacmFWa0FZREdWT0JqczN0V3ZPVHRwbTlpd3hjVTR2YzZicE9zMjJxYWJCcUVGd1RiVG9HalNSQ3JqMnhXSjBLZG9yeGljNGdNc0Q1UHF3WmY2MWQwUHhEWVRXOEZsSmJpM1lmb3pnZkNwUFE1OXp4ODYxYSsxZHkxOUJDb1JacHl6T0R5UU9NZmZpazVOMHlXTEV2aWkwWkMrMXhqcjExTmJaYWFURUVUTnlGVVk1K2VhMm01MUtTVm9iV05CNWhBYVU1NFVEaitKcm10ck9MZTdobVpkeXh1SEk5Y1ZzNDhTYWU0ZDRZcG83aHd1Zk1BTy9HY0FFY0E4OSttS2ltOTl5MTQ0cHJiZ3kwdHhKcUU0MFczVjJFaHpjN2UwZmRRZlUvNTFzdXQ2bHBQaC9SWHV0VXVZYk94aVFJR2JxRDJDanVlQmdEbXVINm45SUYzNExtdTROSHN2T3Y1Z3N0MWZUc1dpOWxVZHdPUjE1Sk5hVjRsMXpXL0Y4bG8rcVJUU1hrem1hTWJ2Z1dJNEFFYTUrRVpCSnJZeHJwaWMvUGM1dEpWUnYzakRVWi9HOXRGRkRjUzJPbXI4U0p0L1NUQWpneVlPQVA5M241MXpUVWREajBWWjRMdWZFVXNaTnJPRnp1T1JsVy93QUk2MTBHMXVJWjdaSklHUjQ4QmN4bklHTzFhbjQ5dVkzdDdXelZTMCsvek1EcUJqSDhmNlZDTXBPVkd6bHdRaGk2bHlhbExjb2JaTE94Ung1aEFmajRwVDJ6N1o2S1A0bXV0L1JyOUNzOTY1MVR4WmF5UVc0QU52WnVjTklmVndPUXZ0d1RXZCtpejZIb3RPRnA0aDhRcVh2ZmhtdGJRSDRZdTRaL1Z2Ym9QZXUxRGp2VjZPWTNaYmdoanRvSTRJWTFqaWpVSWlJTUJWSEFBRlhLVjRTRlVzU0FBTWtudFdUQjdTZ0lJQkJCQkdSZzlhVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXJ6SEdPM3BYdEtBaXZhS0h6RUdpQjZ0RzIzbjVkRFZVazZXb1g2ektvTEhhcll3VFVpcmNrY01oQ3lLcElPNGJzVkZSU0pPVGV6RTF4RmJSR1Nad3Fqa2s5TUNvaTZyRk5DczBFY3MwWTRaNHhuYjM2ZDZrUEZETXhWbE83NUVFajB6M0ZWUTJzTm9Dc0VLUmc4a0R2VGRoVXVTREZybGhKZEdLS1hNakhCNXdNKytlaHE3cUYwTFMzM3paWDRzcUViSnlPZndxTmVhUHBtcDNSbUlVWFVmVjBPR0gzZDZnNm5iU3g2ZkpEY3MxMWJyZ01KUGhZWjZGVzdpb09UWEsyTG80MUovQzZmZy9WZmdvdmRYaXY4QVJoTVhZQUhLdW80Y2pxQ094OXF3ZWx5blZOUVcxVkREdUdVZCtRZStPTzlXMVdOSTJSQTJ4amtBbk9mbjZtcUlwVVRha2JvVEcyNVF1TXFmdXJSY296bDFUT3ZIQlBIRlJnVWF2ZHo2VnFZdHBMUWtBRnZNWmhnYzlBT3ZOUWRWazNXc09vV21Fdm93UkNXNk1EeVkzLzNUL0E0SXE3cUtRM0YxNXR4Y2xaRDlwaWNraWwybHF1bWtGOWthS1dWaFVhamV5TFZDYlQ2akY2VnFGbHJsck9FdGhhemJqNTY3QVNyZ2Nxd0l4bjNIV29BYThzNTFlMHVBa0tubmNOd3hqcnRiUC84QVVpcmNWcDVGNU5xK2tYODJvWDBLaU83czNZZkhIak8zSFp3T1FmdTcxQzF1NGxsc3JmVTlCdkRjUXdQNWtsdXFIZExIeHVYMllZUEZXeGdyMktKTnFOdmxlQnozeDNIZE40enYyblZETEtWa0hscWNNQ281QVBOWUJiRzVra1ZQSmszTnlNcVJrZmZXNS9TUHFPbVhmaUd3MWJ3L2V1MXZOWXg3U0cyeVF5TGxXVmgxQjQvanhXc0RYTlFFQVVYOTk1Z1AydlBPTWZLdDZLYVNSeDV1RXB0bEg1QjFVQUVhZk93STNBaE1najF5S3ZhUkxZMmN0d2RTaG4zR0VyRnN5Q0c2YzE3RHIydlNNaVEzMTNJUndxcWQxU3JyVlBFMXVpcGN5enJ1R1FIUlMzOHNpc2I4TWt1aGJ4djdGUGgreW1lRzUxRzJ2MXRyaTFId0lCbHBPT21QUTlLNlRwOTFMZDJFVThzTFF5dXVYallZd2Y4QXZtdWU2WnAvaUhVWjQ3dEpHZ01CSlNhWWJjSHZnWTVyb1VDeXh3UnBMS1paQW9EU0hqZWU1cXJKdWIyamk2NGRFbmVWNHlmeHJ6ZHpWb24zcG4zcXFqZW91YjY4M0hzVDF6VnZOZVo5NnpSbWlQcU5oQnFGc1k3aE40d1FvSklBSnh6L0FBclZOUW5rdDJsMDJDYUJKL0xXTnBpU0daQitxcC9WVUR1VGs4MXVlZWV0YTFyUGh4TDYrZTVEaU5aRXhKZ0RKWVl4OGgxeWZhckllWnI2akhKcTRMYzFLN3VScDE0VTBlOG5FQUFVc3JrYjJ4eVFQUTEyUDZJL0F2MWU3ajEveExGSkpQY1lXenQ1a0xGTy9tU1o2ZE9NK3RhcDRCMHZTTEh4SkhMZUtaTDFaVmUzV01DV0pGSUlHOGtZejBiUHRYMEhwdGpQY0lKNTVtTUxObEZZY3R6MU9hdHZzYzZXS1NpNXlkTHdNNUxKRmJ4bWFSd0ZVWXlhOUIzcXJySjhHTW5BcTJ4V1pSQklzVEhBTWk1eUI4aFY1a1V4N2NiVkl4NjRHTVZNMVhzVkFnZ0VISVBRanZRZ0VFRUFnOVFhaWdqVHRORFQzRHlKYlFreVN5S056QlJ5Y0tPdUIyRmE5NFAra0hSUEhEWGFhVUxwWkxYYXpyUEZzeXA0QkhKNG9ZTnJBQUFBR01kS1U3YzFTaUJDeEc3TEhjY25QNGVsQVZVcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwVkxoMkEyUHRQcnR6UUZWUkw2ek4zNWVIQzdHeWNybkk5S2xLR0F3emJqNjR4Vmk2dWhiZVhtTjMzdGo0UjBvWnV1Q3I2dWtjTHBEbU1zQ0FNazRQcUt0YWRheldzTExOTDVoTFpCejA0OTZwdmhkSkhKUEZkYkVSTjJ3UUJ5Y0Q4VFdMdFYxSFU0RE90NllIQkFHSWl2OE0xRzJ1RVdLQ2x2S1g1L2drWFdsU1hlcUxPKzB4aGdjN3NGZmJqbXJVak5xZHZMRGJLMjIya3dWazRQNG5yOTlSRGNhMWE2aWJZWHNVeWxnUDBrUno4eGc4Vk0xQzUxTzBoVU0xa3pTWkJ4RzJEL0dzYnRwMVJKeGlvdGRTZjMvQUJSck41cGIyMWs4ME02UEhLN0E3RG55aWUyYTF1MHRiaUs1RWpqeTBUSlp5ZUsyalVXa3M5RGthS2VOYmN2ekFEOFRudVQ3Q3RSdDlTbitzcEc0YVJaRzJFQmNoZU92eXJVbkY5VG83ZW5jWlFpN3Z3LzJYYitLVjdwcFVCa1J3Q3BYa1Y3Y1FUalRvVjZtTWt0NmlvMm9hb2JhZVJSTXNNY1FMWUpBK0VkVDhxdFhXdHp5YVREY1dRanVGZkphUlpjREE5d0Rtc0tMMkxuMEs3TGxsYS8rTGVVUmhaV2pJM2JjRThZQS9qV202NWVUK0R0YWkxZXlrVkRJL3dDbnMyNEVoSDZ3OS9Xc2kvaWpYWUlaRGE2WVp6dEpBWm5iQjljYlJYTi9FSGlDL3dCZm5Scno0ZkxHMFJnbkFQYzg5NnZ4d2QyelExZVhHc2RMa2lMTlozbDljM0Y3dWhXUmk0anRveGpKUFFaUEFxK3VwMlZsSXhzOU1pWWRtdXo1amZnTUNzU1YyL092RHlhdm81S200OEdjUGlhOXVKb3hjenVsc1B0Uld1SXNqMDRxNHZpZVczaWVMVGJhSzBWemt5Wkx5SDVzYTE2dmFkS0plK3llSnNtaDMycDMrb2kzZlU3b0w5c3Fya2xzZGhucDh6eFhSVmI0UUNBRDg4L3hybUhoKzhuc3JsaGJReFN6ekVScHVHV1hQVXIyL0d1aXhlYW93N1pBUHdrbkxNUFU5dnVGVlRXNTFOQzdoNWtza1pxbklxamNQU3E0MTh4OW9JSEdlYWpSdnFMZkEzMTV1RlVGc0VqRmVidmFsR2FLeTFSTDYzYThnTUhtbEkzSTh3QWZhWHVQdnErWDlxODNaQkhhc3BHSEcxVE5mdjhBVnJMU0JKYTJiUEM1a3k3eFJCOEhHY2NucjArVmRpK2pQV2I3eE40ZVg4b09XdmJWL0trMzRMTWR1VkpINnBJOWU0cmlPc05MWlBNdHg1WDFRM0hteGxSbVhjZWVQK3RiL3dEUUhkUnlhL3F6SUdXSm9VVUtUMGRtSkpKUDJqaGVwOWF0aWprYW1iVXQrM1k3TGN6d1dLcmF4S1k3cVFCdjBjWXp5YzdTZjYxTWE2dGRHMGlTOHY3cnlyZUpUSThzNTI3VlBPRG52MnJHK0xKOUowNjJ0ZFMxS0ZaV3RwZ2JlRUF0SkxMMFVJbysyM0p3T2VlZU1ackgyM2h1NjhTYW5hNjc0bVhZc0JEMldrQjkwVUI2aDVmOGN2OEFCZmVzbWxPU2ZIMUowYXkrS280Sjd1T2V6MG1URFIyY3Z3eTNReG45SVAxVTc3T3AvV3dPS25hSjRaMFh3NTUvNUgwMkN5K3NOdmxNU2tiejkvT1BRZEtudEJIUE5EY09yZVpEdTJaNHhuZy9PclYvRmZ6N1lySzZpdFFSOGNwaTh4aC93Z25IM25QeXJKV1RLVkhzclUyZHVJbXViaTViSkpsbmNNeHo4Z0FCN0FWSW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbFdicTd0N0dBM0YzUEZCQ3ZMUEs0VmZ4TkFYcThZaGRwSkF5Y0ROYTdjZVAvQ0ZxVTg3eExwZ0Q4cmljSFA0WnhVKzl2ZEhrdG9MbTYxSzFqaElFc2N2MWxWVmdlNEpQSW9DODJyVzNtR09MekxpUUVqYkNoYm4wejAvalVaYnZWcnIvQU1yYTIwVVdjYnBKUXgvQmF3dXIvU1o0SzAyQjB1UEVGbkprRU5IYkV6TWZsdHJtMnIvVDFaYWZhdGIrRjlObW1sTGdtZS9BQ1k5a1U1L0UxR20rNWFza1k4UisvcEhWcjJlWWFnTFpwWnJpOTI1Q1c2Q0pCN0Z6ei9HcTVZTlVtc1crdjNrRnNEOElTT0hlUWZuNi9Ldmw3WC9wUThVK0lKWE10OGJWSk9USFpqeXdmdjZuOGExaVBWOVRoRExGcUYzR0diY3dXZGhrK3A1NjA2VVQvcUhWS0srM3Bmb2ZUMnBXTU5oaFlycjZ3T2Q1Q0VCUFluMXJCVzh0a2JnaUdQRW5RSEhIM1Z3aUc0MVc2czdxY1g5d3lRQVBJcG5iSnljWjYrdFdXMXpWSEFEYWhja1l4L3JDS3E5MG0zUnY0L2F5VVVtcmFPNzM2V0J1dzg4SmFZREJZTDhRSHBuMHEwMXJwTmhieVRRMjBVQ3pFRmludzdpTytPZ3JnODJvWDB1M3pyeTRrSzhqZEtUaitOV0pMaWFYL1dTeVAveE1UV2ZkZVpsKzFJMjMwSFc5VDhaNlpwTmtKckFRM2x3V0tiSGwreVBYZ1Z5eHB2ck45dVlLb2xrSmJIQUdUemlvbVNPOWVaT2FzVVVqUTFHcW5uNTJKU1J4elRzclNpT0lFa3NlVGoySGMxWWxDQno1WkpUUEc3clNOWGtjSW95eFBBOTZ2UjJzOHMva0pFenlnL1lBckpRazJ1Q09Ca1pyWWRLOE1HL1dJeVR0R1dUekdVSmtoU2ZoKzg4bjVWbnRCOEcya0ttLzFsNDJpakFab0EyMEE1NFVudVQ2ZW1hc2VLOWZpWkRhV3preUZnMitJNFZRT3c5Umppb2RWdWtiVU5LNHIzbVhoZHZIeU1wcDlycE9tU3JiV3pJMXl3eVNTR2MvUDAvaFdWM2M1ckQ2RGRMZFdDdWZxL21iUmtRcGpZT3dKOWVNbXNvU2FOSGF3Sk9DY2VDNFdyemRuclZHN0ZXNXBrZ2hlYVJzUm9Nc2FVWFVseVh0MWVialZKYkFCQnlDTWlxZDFLTTBWN2pYaFkxUVhyd3ZXYU0wUU5hdXJPMnRnMTlhdFBFNXg4S2c0NzgxbFBBV3F4NkREZFNhTmR3eEc2a2lsY3pJcnVBcE9JbEI0WE9jRTlmU3NQcjBzaWFUSThaQXdRR0Q0SUk2ZDYxM3c5b1Yzck9vV21tV2d6Y1hVZ1VLeHdCMzNIMlVaSnFTUnl0Wk9NTXRUamFyMXVkd3M5VlRSOWFtOFIrTXIzNjVyTEJocHRuR1FrZHVEeGhBVHdUa0x1L21UVzRlRWRYOFNYbDlkeStJWW9iYU9lUWZVYktLSTdvbEhKekp3R09PMy94WEsvRC9BSUxUeW12UzdYT28zRjJMUFQ3bVlNaTdRU1d1dWVnQ0Q0ZXVEZzlTSzcxWnJKWjZaQ0wyYU12REgra2xBS29NZCtUL0FCSnJKek1rc2IveGpYMUpFQW1FUUZ3MGJTNU9UR0NGNjhZejdZcTVVZUcrczdoMVNDNmhsY3B2Q3h5QnNyNjhIcFVhNzFtMXNkUmhzN2gvTGFSTi9tT3BDZGRvQWJwdXoyOUtGSktndTRiaVdhS0p0endOc2tHQ0FweDB5Uno5MVg2OEJKNHdjWndNNXp4WHRBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDc2I0Z2sxU0xRTDZUUkVqazFOSVdhMlNRWlZuSFFFZmo5OVpLbnRpZ1BuN1d2cHl2N253dEpid3h5YVA0a3RwMDgxZkszcEtBY01CbjdCNlpCN2Nack5OL3BBYWV2aHF4dkk3RVM2a0pWanZiTm4yYlZ3Y3ZHZWR3SjllbmV0djhBRy8wWGFENDFTU1o0L3FlcWZxM2tDY3Q3T09qRCtQdlh6QjRzOEtYL0FJUDF1VFRMNTRKR0h4SkpESUdWMXp3ZlVmSTgwQjlCNmo5UFhoTzMwaUc0dEZ1cnE3bFRkOVVFZTNZZlIyUEg0WnI1djF2WGRSMS9VSkwzVWJ5YTRsa1l0K2trTEJSbmdBZGdQUVZBU0tTVjFqalJuZGpoVlVaSlBzSzJTMCtqbnhqZkFHMjhPYWk0SkM1YUVvQWZtMktBMW5OZWtrZ1pKT09tYTZaRDlBdmplUk56UVdNZkdkcjNRejh1QWEyS3gvMGM5UWxzWTN2dGV0YmE1WW5mRkhFWkZIcDhXUmsvZFFIRU9hOHdhN25jZjZPVjNGRnZpOFNXNTI4dHZ0bUFBOWVEVWNmUUdyS0hUeFBHc2ZPNlI3TWhGeDJKM2NaN1VCeFhCcGcrbGIzcVAwY05hYXBKYTIyc1cwMXVnR0xobzJUY2NjOGVudlVUVWZvMDhTV0duUWFqOVhndUxTWlBNamxndUVKWmZYYVNHL2hXTExwNmZMQkp5VldZM3dzUkxmeldURUJidTNlTGtkOFpIOHF3cm8wY3Jxd081U1ExZEQ4TStCSnpkV0YvRnFNR1N3SlFvUnRCQno4Vlc5VzhGUGRheGNHT1pFRTVEeEJlRkIvV0xaN2V3OWFwNmtzdGVLS3Y2WFBEVXJHNC93Q2F0ZlQvQUVhSE5ONXNNS2xBR2pYYVcveER0K0ZXbFhnay93QWEyMlBSdEwwaTQyYW9CZVJ2OWlTM2x3UGMxSTFyd2JiMjltK28yTjJ6MjdCV1NMYnVPRDcrM1dyazEyTnRlejh5aTJ1M0s3bzFmVTdkSUpMZnl4aFpMZU9UN3lPZjQ1cU1zRWh0MnVOdjZOWENGczl5TTQvaFcxNnZwdGpCcGVoTjVjaG5rczl6czdjSDR6Z1lxenFrQi9OMjFOdkRIR2swN3lsRkdDZU5xNHoxNEJxdFMyUnBySEtNVmI1Mk1Ub3NkbTF6SkxxQ3l0QkJHWk5zWndYUFpjOXNtcEUydnlSSzBPblcwZGtoNFlxTXVmbXhxQXpGSVMwYkg0Y0E0Nlo5NnUyTnVsemJUNUlEOEFNZTU3QWU1NUo5aFUzdHV5M3J5WTMweDcxeHlVRzZtdkFzRTA1d3paTFNObko2WlB5RlE1UW5udDVlU2dQd2s5Y1VtUXd5c2pINGxPT0t0NXJLUlUwMUoyYnY0WjFDeWp0SUxHSU0xdzRaNURqN0ovOEFpdGlCTEhBNXJtTmpmejZmT1pyWndraEJYSkdlSzNmUk5TZTdzRW1uWlVjUHMzNSsyM3VPMUtPOW9OVEdhV09YS011K1ViYXd3ZlExUko1VXNleVJONEo0enlNMTQ3TVdKa09XenpXTTFlK21zRmhlQXEwbTgvb2lNbHhqbkE5cXpSMGNqakNMaytETHN3MkxnajhLcGtJTzBnako1UHRXSGt2cmhiV0dLYVRaTVNKSmp0d3F4OVNCNzlzKzlMWFdyYTV2V3RvZzVWVUwrWXg2QWRxR1BmUWJwN2NHVkpIclZFclA1VEdKbEVtUGgzSGo3Nml4YWxhVHd5eXhUQm80ODdpQjZWQXQ5Zmh2THZ5SS9nRG9kbTVlUzNvYXlSbG14cWxmUEI1cjk3RkhIQ0lyaGhjT1BnVmNNcktjWnlQNVZqWXA1clNkcExaMmh5aklXUnNIYVJnalBZSCt0WW1LUHlkU2hGNnJxbThGczljWnJOK0lYdHpjSkRZZ3BLRi9TeHFNWTlQblE0bWFVc3lsbGUxVXFOLzhKYS9Qcit2YU5ZWDBOckhwMm1XaXBobktvU25LTXhKNmxnbkhUNFJYZjVOUnQ0OU9GMVBJa2lGUmtRanpkeDdoUXVTZVRYeDdwRXIyOGdXNGFXTzB1UDBOeXlya2lKaU4yQjNPQVRYMEN0NCtqWG1uNk5vbDlhQklyUjVuU1pwSG1TUFlXVVJqYnRKSXh1SUJicmtWZzBwSTM2enNyUjdlR1NHMmFDUGNKbGlNWGxNamM5UU1jNFBRMU5ac0ZBSTJZRTRKR09CanIvOEFGWVJMbUxROUZYVnRYbWY2dzhVWW1LTTh1WEk0U05jYy9FZUFCelhtajNWOXFVLzErVXlRUVB1aVcwSXp0Mm5sNUQwMzlzTHg3bkZDc3lzeVIzRm5MYjNwUjFLN1pGQnh3ZW1jSElOU1FOb0E1d0FCeWMxWmFKVWFTZU9OWG1LZ0RJd1NCMnoxL0dycUVzZ1lxeTU1dzJNajJPS0FxcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLRVpGS1VCeDM2VWZEbjBqNjVyM2xhRmRTUG9rcUtCRERjQ0VJUU9kL0lKNTU3MUI4TS82UHRzRStzK0tkUmtubmJrMjFvKzFRZmR5TXQ5MlBuWGNLWS95K2RBYTc0ZjhEZUd2REcxOUkwaTNobEgvcnQra2svZWJKcll2NTBBQUFBR0FPd3BRRHRWaFhndXBYUXFIZTNrQXd3NVZzWkJIM0dyK1FlbFJ4YmJiNTdoZU44WVJ4NmtIZy9oeFdHWWQ5akYzZmlEZk8xcHBsakxmekJpamtmREVwOTJOWXY4MHIzVVpmTTFPL01VYkhQMVcySDZORDdaNysvTmJjNjVqZFZPMGtFWkhhb1VOdGUydHB0amxpbG0zZy9wU1NOdmZrYzlLUGpjMm82bjNTdkZHbjQ4di9YMFJqckh3ZG8xak0wNXMwbWx3UUpKL2pPUGwwOWF3WGk2ejBMVU5KMUNGTGVLSzUwaFVnalpyZkt4N3NIQ2pnRUgrR0t6ZC9jM05scmF6WFNGTElzQXN5RWtBZWpEdHpVKytzazFEVDJWSlVsaWxjU2ZwRGxDUFFlMVlUVDJRY3A5Y2N1VzJ2bno5VGhYL3dCUjBzd3BZQmJ2WXc4eFcycjVZem5QSDlhM0s3Z3RkYXNoZDIwWVdXM3puZXVXd1J5Rng2MWQxRHdycVdqM0YvcWNBdDJNMGhkMGhYTHV1T2NnOVFPOVJQRDhNZG1ibTlSMVdDUUF2R3pmRWorbWZRZzhHdGZVZkN1dndPN2t5eGxqam5qeXZPMHZJMEJkQzgrUkZqc0kvTFRMS1pCd1AvYU9jL2VLaGE3ZnhUWEdtNkhia1JXME1nam5NTEZkNUxkT0R3QU8zclcxL2xxNXN2RUZ4cGxra01yM0h4UURjVklHQ2VwSEkveXJuK3Y2VHFGaHJUZVpIc2VWeEpHNUhCWWtFajU1ckVjc1hjVVExbWIza0gwVlRTcHByaHJ5SU91cFBEOVRpbk1rMGtKbGh5eHllSDR6OXhGU1BGczZRTlk2ZEVmZ3RJaDVneHdISUdmNFlyM1ZwcGo0N2FPWWZBWjBKVTl4Z0VuK0ZZdTh1NGRUdnBaWFhhenlzN3UzSXdlbUJVb2I5TGZoZjNQUFlGMXFMdnMzOVg2WkYxR3hTQkRMQStiZjRGQlBCTEZja0FkOFZWYVdrY09sVFgxMHJGVG1PM2p6amMvZHZrQi9FMU5qdG85V3ZyT0paQ0xTRlZSd3h3eWdETHNmYlBmM0ZROWUxVmI2NzJXdzJXY1NpT0pBT01Edjk5VDZuSjlLS2NtUjVNdlNsWGY1THN2cVlodVRtdk1WZWpXRm9aR2trSWtHTmlnZGFwd25sRDRUdnoxenhpcmk1eGRKa3F5dG51YnJ5b1BMVU1jRjVTQUVIcVNlZ3FUZHlRNmNyMjFsY2k2V1FZa20yRUlTT3lnOXY5NGpQeXJITk1XaVZBQXUwWXlCOXJuUE5WUXUyeGt5RlJzYm0yNXJIY25GdnErRm0xZUhMNk5ySjQ1cDI4ME5rSzdkUjdacThrbDljUnZQSEZDOXhESVNpazlVUFg1Vmd0R2lSTlY4cVVCaHRQS05udG5nL0tzOUZPSTVXOHR5aXNkdTV2MVZQQnJIVlRQUjZLUHZzQzYzVmJmN0lGMVBjWHVvd0xFbzJKOE84ZlllUURPTW50V1B0WUpZSlpTOEt4dmJ4a09yRS9GbjFxWFBwbHpiekNCYmx2cSs3ekkyQndFT2ZTcEVWak5KYVh4ZVV6M0VrZTFXWWNrRHRVblQyTmVPbnl5bjF1THRYNGVIYjZwZlB1WUdJWEZ1enlpTXFTclk5TUhqcFY4QW5TYlc2UWZGYnpGR0lHRGc0STUvR3ArcFcwTFdsamViNUMwaUJKRlVjRDEvbFVTRzNhTXlRWmJiTTJ6YityeU1xVDk5WjcwYWt0UExHM0huYjgwMHlQcVRpU1pKd3hQbXJ1QVBVSFAvQUdhalR5U3k0dVhtWjNKd1dKNUJySVNTRzBXZXduQ1BsY3N5OXZsLzMyckVDUWhHVVl3M1hpak5UUHRKMzM1WGd5WGI2blBFY01kNitqZHEzN3dwOUltcldHcTJJdGJtVzVkVkZ0Rlp6OHhzdjZxNTdZWTlhNW9veXdBNzFzRmt0cEFGUkZhYVUvYStIdldDbUZ2WTZ2Y2VQZGZ2SmhwK3YzdC9vK3FSM2FxUHllaXNpSjBiS0FrdVNmZnZYYkpOUGQ3L0FFKzhTNGxIMWVOa01YbUZJbURBWllvQnl3eHhuZ2MxOHJ4NnRjeEN3a2l0VXQ1N0tRdEZQSGhKU1FjcVdJNGJCNlpyNlg4UE9OVEVPdVcyck5jUlhOdXU2Q0poNVROdEFaaURuREJnUnhnZGlLQ2FvemhnZHd5UEsrd3RucnpqT2NaR01WZnFrN2l5N1NQdGNnanQ3VjZyQmhrRUVlb29WbnRLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnSDRmZlZDU0kwam9IRE9od3lnNTJucU0xV2VuVE5lQUFFa0RyUUdOZVZ0TG1ZelNrMmN6Y083WkVMbnNUL0FJU2Vub2VPOWV5Vzk3YnhEeUpwSkd6K3RqSFgwUDhBblV1N2pXVzFsamVPT1JYWGFZNURoV0I3RTFoZElsdTlJdVUwblVwTXhTTVJaVGJpM3dqL0FOTm0vd0FRN2VvRlZ2WjB5aVh3eXA4ZmdteGFsY3BLWTU3Uml3RzRtSUhPTTR6dFA5Q2F5TE16UWxvK0daVHRERG9jZHhXSXV0Y1cwOFEydW0zRURSMjl5Z01OMXUrRjVCK3ArRlpDODFDMXMwbE54THQ4cUl6T29Vc3dRZDhEazgxbUw1VmtvU1R0WHdRWnRZV01xSnJjbU5vc3Rubm5IVEhmbmo1MW9WbHJWL2M2VGQ2cHBkbE5ad3BMNUwyY3BaMVlZeVNBUjI3anRXK0pkYVRlMk56RkhjaWUzS2xpaTV5Z3huQzQ1OXg3MDFoN28yc2N0c1dRTHpKSEpnTE1qREJWajFVak9SN2lveWlwcXpkd3p5WVo5UForUDdtczIvaWZUdFUweHpycXdXWUZxOFN5YnNIQjZoV1BjZ0RpdEp2eExiYXZiMjZPSklEYWttVld5WlNHRzFtNXhrQTQ0ck02MW8zaDVZWTlJaXUydkdSZkxsU1FrSEFQQXpqZyt1UG5YamFYSEhiN0dSdHVmZ3ljbEI2RDJybTZuVmRFWGpsdXpPcXlxZUp4MDBsMHk1VjhOR3Z6d2llYUppQ2RtRGtEQkJCeUNEMUhOWnk1c0lOV3RJdnJpQ1NaV1dVY1oya2R4OCtsSTlLWGR2M0VvdVN5bkF5S3VSenVXTGhnMFlVS25RRnZldWM4bDEwOWpRMHFuaHZyZktyL0FHYVg0aThKUTNXdkM1bGNtSkkyVW9wdzJlU3B5UFROYXJvdmd5YzNYbTZsK2lnSEcxV0c1dm42VjBPNUR0TzdNKzhrOG5OVXhGb2NFcWpJZUdVamdpdHlHb3lSalNaemY2dkxHVGpCMHZ3YS9kNkRhL2sxYkdBbUtFSGM3RDdVZ0hPMW05SzBEVzlOdHJObWxpWjFWOEdKQ3ZVZHp6MFgwenlldGRTdnZNWTV0d3E5d0c1KzQvNTFwdXFhVy81RnZZaEt0MWNwTjlZY2RUR0dIcmtlbnYwclkwMlZwN3NyMDJvbEhLK3FYZjB6U1l5d0pDTGtzTVl4bk5TSjdOSVVVQ2RHZmJ1ZFR4ampwOC9hclVOMUxDTnNVaGpKT2R5akIvSHJXendXY0NXREhhcnN4QWJjbTdqSFVuM05kQ1VxUFZhUFRTMUhWSFpKR3BnamFmZzZkNmtXdG85N0l3VmdxanFUMEZYdFF0ekMzbEkrNUN4S3hnNUlxNW9jdTJkNHY4WS9ERlNiMkdIQldvV0hMeGRHU3QvRDhzYW1kWlNvMkg0anhqMVBIUFROWTNVcmpGeTBkdmR5eXdNQnpqYno2VnVNRjVCTEFZcnBTc2V3cnVBSjZqdGp2V1B0YlMwVWdTMjdHVHFwQzdtWTV6bjNOUytIYmM3MmYyZkhwNk1ENlUrZVNsQmJDMlEyOXc5d01GVDVtY3FhdTJzbmt1ejVBMnFTQ2ZXcFZ5VXRRRldNcTBoRE9HWEI0N0dzVnFOcTExdDJPSTBjYm1VYzg1ckRTVXJSdlNVc1VQaFZ0TGhGM1RycVc5MDUybHg1Z2M4am9jOS94RlVTTDVzYnhrWkRMalBjZC82Q3JOa2tkdGMzQ3dSeVJxVkFEc2M1NTR4VVNLL2xGNDBNcjVVT1J1eGpPS3c5elVXZFJ4UWptNWV6OU9nbWt2Y00wcXY4TGtFaVRyMDlmblVHV3crclhBam1oSjlnMkFmdnJhcllnZzdUa2V0UnJ5NWlpdlk0WkF1NEtSdUsvWkpyS3MwTmRvc09QRThpZFA4QUpZc2RNanQ4bHJUYXhBSVppR3lLeU1jS1pMSGFpb01zM29LdUNCMXRsY3FYWThmb3hVZTVudUlvamJMYk5NUDhhcjhMSDVWS2pRakJSVnRiRkN4YkhjTENvUmpuT2VXUHZYWGJUVnIzNlA4QTZQOEFScml4c1lieTR2Mlo1SkczTXNZKzBzZkhPZjRaelhNdE84UGVKZFZqU2EzMHU1TnMrVldYNFF1QWVldkp4N1pydUdtYVo0b2hzSWJSWTUzaGhoUklYZlZFUlRnZGNKSG1oclpKSTJvTnJGekxaWGx2TGJ3V3oyMjZhMW5pSmJ6Q01qNGdlQUR3UldVVWJWQUlVRWRkb3dNKzFhbG9PbWVKYkRWNUpydVZYc0pSajZ2TGZ0TVlqbmxsSlhKSjlDZTliUkJiaUI1aUpwcFBOa01oRWo3Z2hQWmZRZTFZS0dYcVVwUXdLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS2R1T3RBS2U0NlZRd0xBTHVLazRPVjYxWDZuNzZBb2tqV1RHNFp3UVJVSnRKamswNTdLYVdXV0ppV1ZuUHhvYzVCRGVvUFExZHV0U3RMTnd0eE1JeXd5b0lKeitBckdYbml2UnRQSmFXZVVzU0JoWVgvQUI1QTRxdWM0TC9KbFU1WTEvazBZZVozMUtlNDhKNjZ3TjV0TWxsZWpqek91MXNkbS9uelZIZzdWSUx4cGJhOXVaUHJjSktLc2paQkdOcllZOWllM3RXc2VNZFQwdlV0YWgxRFRwWkpKZktNYnN3Wk5wSDJTdnVLd050UEpET3JRRUpJZU54NUIrZWE1dVRPbzVFMXZSekZyRml6VXQxdy9GcnQ5VjQvUTY1Qlk2WnBON0cwU2xXY2tzWG5VN1NvNHp6NzQ0ckhheHJzVnpZVFJ0T0VMcU5zY2tiWXlPZnRLY1pyVTlJOFlYMWhKaG9vcEFUbmlJWk5aSzh1L3dBdjNkdUx5M0MyQ0V1SXNzQ0h4L0w1VmlXdFNqU2RlWFk2bjlaSExGeXhPNWVhMyt2UDZXWUM3ZFpyejhvbUV6SklWVU1HSXdlQjAvaDkxWnVkMmUzQ01NN2VUaHNFNHFOK1Q0MHVENVR1dHFqNzQ0ZXY0bnIxTlQ1UkVzV1ZJVnZVODF5TW1Sems5eU9sd1NqZlZ0Znk1NyttUWJ4bVhUcGNkMEFPTzN0V0MzdVl3byt6Z0Q3dlN0bldQZkFVdU1PeEdDQnhtb1RhUEIxUjJBd2NETlRoSkpVek9xMGVYTGt2RjJXL1l3WkF6d01EMHFrODV4MHhWMmRCSEl5cWM0T0t0S1N2b2F1VE9ISmRMcGthWlR3U2NZcUhkMnh1Ylc0alRBZVdKa0RZNTV6MVAzMW5FdC9PQkpYS2tjWTlhaGZVNWlqRVJrb3A1TlRqS2ltZUtha3BSUnhHZTNrdHAzZ21RcThiYldVOWMxbll2RU1VT25EVG9rbEVKbDN2STdBc3dBd0FjZGh6VzNlSXRET3AyemZWWVl2ck1raUIzYmc3Um52V2lSV1Vzbi9oYk12Sk5JcFY0dG1TR1ZzRWUzR0RYWng1b1pvMit4NlAyZnJlcjQwNmE1SnNzRnRkTEZqYWp5UG5jT3VPOVM0YlNLTC9BRk1ZeVAxZ09mdnJEV0Z0Y0xxSldRbU40ZnRxM1gweGl0b3RVYVJCQkJFOGx4S3creTJNREhUSDlUNlZaSjBldDBVNFpZUE80SmVlMzNJNkJtK0JRV0o2QWM4MWxyUzhiU0x1RzduSG1YY2ZTSG9FSCs4ZlgyN1ZiVzZzdE1nS1dNb3VOUSt6SmNxMlVoUG9ucWZWdndxQVpGTUlRUmZwTnhKYzlUa2NmMU5SVnpWUGo4bTRwZS9pMS81ZjYvNkplc2FvZFh2emNtSVJBS0ZWUWM5TytlOVFPTzFYNGJlTm8vTW11RmpYc29CWmo4aC9uVmxndTg3TWxleE5TaWtsMG9zeHhqRmRFZUVVNHdjaXNGcStGMUNQRGJjZ0VuSFRucldja2NSeHM1eVFveWNWclYzY20rdlF3d3FrYlZ6NmU5VFJ6dmEyU0t4S0hkc3U2YmN1THdRNzJNY3BLRUErdmV1aDI5dFpQYlJCa1dSZ0FON0xXZ3cySnQ3eTNraGJ6QW9XUnNISkJyZFk1WUFUdXdRM1VMMCtZL3lxY1RYOW5RNm95VTkybjh5dlVoSFpRS2lNVmdZL0dTZnNuc2F4dWxXRnpxbXAyNnBxRUZ0Qk9NTFBjY2dmdzllOVgvRWlpT3dnaWU0YmJLUVJ0d1NjZHFpV0VsdGF5d0xJanp3cUR1QWJHRDJ4OHFuMDJhV3ZhaGxwY0k2VnBYZ1RWYmZ4THAzbVhNRTB0a2kzTnY4QVZ3QnVBZkozQXNNbko3ZHE2anBseDRpZTdFZDlGQ0lESnRMZVJ0YmFGemtuekQxUEhldWZlSDlSc2RCaWcxbTBubGxzWmNCN0s5S21WQmpJZU4rbU9Ud2V2VE9hMnVUNlF0UE9tUHFGb2Zya21Ra1ZqR05zM1g3VFovb0Q5OVFhYU9kYW52RjJia3NtOGpZQXlIb3dZZnlxc0U0eVFSV3Y2ZXV1U1I2ZE9sMW0xbVpwYnFLK2pBbmpWdnNvdTNBK0hrVlZhWFBpRmZFZDkrVVliU1BSVVRkQktwK0krbmY1NXlQU3NHS00vU3JjRWhtZ1NRb3liaG5hM1VmT3JsREMzRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQXAySnY4QU0yamRqYnV4emowK1ZSYnF4YTVXVlRlM01RWmdVTVRCVEdSNkhIOERVdkl3RG5nMWJtdWJlMjJtZWFPTGNjRGV3WFA0MWgxVzVHU1RXNVpndEpHc2ZxOTlQOWJKUExsUExMRHRrS2ExN3hYUG9HbmFkUGEzRVVRdXBvaVlsV0xMWjZBNTdjKzlaeTQxSFRMaUdhQTZuQWhaU3BaSjFWaDY0UGI1MXBYaXZ3MDQwbE5SVFZaYnVLM1FrL1dIM2txU0F1ekhIK2RhMmQxQjlDczF0UTJzYjZGZXhvTzNxM3B3ZmVya0RReHpLMDhYbVI5MW91MVQ4YWtqMHppcFVOakplSVRiVytjZFNHUDh6eFhDbEpKYm5DeHdiZnc3dndNc2w5YUxHQUVGc01EYWNBa0QwcTFKcU1NZzJMZlM4bkdGanlmNGQ2eEU5clBic0ZtUmxic0RVaHRQbnR3c2hkWW1LbGdwWTVDMVIwUVc5blEvcXM3dVBUeHp5djRNNnR1WkNqbVZpaXFBQXB4a2p1ZS8vWnFRRUlPRHlheE9rVHp1OGh3OG9WVlZWSjdlMVpTUzNacm1LWHpHVkY2cUsxOHJmWFVtZFRUNUZPQ2xGZXVBOHNTT1EwaUw3SHJtckF2WTNqOHpleUx1MjlNN3FnWGF3bTZmZVpRYzhaQU5leFdvdUFJNDVjak9TR1E4VllvS2t5RDFPVnphalgzTEZ4Yk41alNEWXdZNXlHNC8rYWpPbncxc050WS9WOS94aHdjY2YvTlJialR6TGNOSnVDeG5ybnRVNDVvM1JxNU5IUHA2bHlRSUdkb3hHRzJJT2pEdlZzVFBIRzhTSE1iSGtIclYwMnpwbVJYWGFmczVPTTE0c3NhRFkwRVRZNHlDYXZUS0trcVRkZWYvQUF4anc0T0JqYjc5YXN4VzF0YlR2TERCRUpaRG1SaEh5L3o5YXppbXdmSWtnZGZjTVRVZG9iSXNURExLdVAxaXVRUHY3VkpTWlM5TzQvRkNTMzg2L05HaE40UTFPNzFiNnhkTkhiM2M4aFpSRTRJZFAxaWY4SUF4bk5WNmtyVy8vd0JEOFB3U1hrc2cyM002S2N0enlvUFpSL091alhjRnM5akl0L0lua1NBS3o1Mm5CSTR5T1R6V3YzajJ0dFozV242VUZzMGpVZWZNekRPNWp3aFkvd0FmVHRYUXg2aVU2dGZ4NjhqMldsbEtlTG9qdDlGUy9uNUdoM0hobE5LMVFRRzdTVmx3M3dOOEtONkUrb3FzOE1lYzlzaWhKMmJPRHpuai9PdkQ3MTA0cDF1N1BSYWZCSEREcGlLWno3MVZ0TzBIQndlaHgxcXVhV1NhUnBKQ0N4eG5BQS9sV1M4dE1vWlNEMEl4V0F1TkxtaVk3U1pKTjJRRkg2ditkYkJUR1FSVXFOYlZhU0dvVlM3RnlDNDA2MGphN0NGWk5nUkUyL2Fidi9IdlVGN2RvV2d1VnV5a003Ym5WV3pnRHJ4VmVxUnpSbU9TRUVEQVVzT3c2MWoxWm1sRWs4VE1wd3FMeU01NllGVFJ3ZFg4RTNGTGRlRzNQTC9ZeUt1bDNQTUlvWkxpMlU1RWhCSWpQc1BRL3dBS2t5V09yV3NrTjFhNzQ0c1lCVmdHNTdFZTFiRG9id2FiWVRScW8yekFHUVpJVlJnZzVBNzFIc3J5Ty9rZFlnWGhqVXF1ZTR6ak5UYXBGTDAwWEgrOS9rK1AzK3g3ZE5xMm4yTnJad1J1THlRQ1FDRlF5QWR5akRrQnVNakdLdmFyTTlycU9ueVJiNHRXdG8xTXlOaGtqYkdjcjJCenpnY1ZudEZqMENjd2FicVZ5OXBxTG5OdGRJY0dIa2xkM3F1ZncrWFN4NHRSYjIvdG9iT0cxaXZrak1idHYrRzZ3Y0s2NSt6MytFOXVsWmJ0VWpsUzBzOE0rcVhiazZGOUcvaks3OFF2TmI2bEhPMThzWWN6QzJDUmxRU09XQjVQejk2M09kdnIxMmJSSEhsUWtOS1Ircy9aUDZuN3E1TlphYjRnMUhXdEZ0TFM2YTJpdElZVjN4emJVT3dmSGxlcHp6ODY3SkRCRkVSdFViaG40dmM5VDk5VnRkUEpLMU5KeGRvdS9PbE1ZOWZ2cFVDWXBTbEFLVXBRQ2xLVUFwU2xBS1VwUUNsS1VBcFNsQUtVcFFDbEtVQXBTbEFLVXBRQ2xLVUFwU2xBS1VxaEdrTHNIUUt1ZmhJYkpJOWNkcUF0M3NNMXphdEZCZFBheU4vNnFLQ1J6Mnp4V0V1ZkNkcGZHSnRVdkwyK0tmWkVzbUJrOXdGRlphKzFLR3hVQmtsbW5ZWlMzaFhjNy9JZW51YXJsanVMdTBqOHVhV3prYkROdENzeStvNXlLcW5HRW5UVit2c1ZUakNiM1YrdnNZR1RRdkMxajVrWnNiY054a3lSdTRYNUdwRjVxUGgrMnQwaGVTeThsRUtwR0JrS3A0SUFIdFVsdENzSkF6WFJ1THR4MWFlWm0vZ01EK0ZTbzlPc0lJRENscGJwR1JqYjVRNUh2VlB1OG0vU29wZmYrREVjZGNKSEhydXhpZStsYlR3eldMVGJJMlljZ0h0V3pKQ3NhQkZBVUwwd0tvOFkya0dsTkZiMjFsRkRDNTgwT3FuQmJQSzllM1gvQUNxSGE2MWJ1bTJjR0pnUG1DUGF2TTY3SGtqSnA5dkFvMHZ1c0dTVVcwbnNYZFR0a25zcEF4Q3NQaURIc2F4VnJCYk02cXR4Y3p6c1I4VWZBQitaN1Y3cWVxaTVUeVlOd2pQMm02RS9kVVY1NG9vMU5vOGlPVjJ5Tm5CZi9LcXNjSnFGTXExR2JGTEwxSkoxNjJNM3B6S1k1RlJSOExFRTdza24zOUtuWXJCYUl6ZWY1WmpKKzAyNHNlTWNkT2xaL0ZVWmwwem82R2tuMTRreVBKYlF6RUY0bEpGVlJ4aUVZUUJSMTRxN3Ryd2lvS1Q0czJPbEozVzVGOG55cEdDRjkwaDNGc1pyMGhwZ0VaZHFnOHIzYysvdFVuSC9BRnJ3NDNLU3ZQcm1wcWJzajBManNZbTR0cmwzWlpXYkhYT01xUFFDc2ZEYnRPMjJQQjl6d0JXWHVaUmMzS1dxWkNuN1JGZVR2SGFXenZzVkNNaEFSejdWdVk1N1VjL0xoaktUbGV5TWF5MjFza3NWdzdHWWpBVmVRS2diVkoyd3lPU1J5R0dBUlhqYjVXTGNsanljVmZzek5CTVdTRm5iR0NNR3I3T2QxTEpKSnFsK3BBZEdsbmhrZHBIU0VsMWkzY00rUGhKK1hXc0RxTnVMTFFZVnVBVGRUdjVqTHUrdy9jbjE0NCs4MXQ4QWt0TGt6eUtnNi9DekFaejZWRTFPUFNwUWJ5OGdlVWhDcGp3ZmhZa1lJUEFIenJhMDJkeGtvdmc3ZnNYVjVNTTQ0cFMydmp2NVY5WHdhQkJKNWN3WXhyTHhqWXd5RFZVczBiREN4cW4vQUFEQUg5VCtOWk5MSzRXQVRhZThjY2N4ZGQvbUJXTzBaSTY1QXg5NXJGUnd2UE1JMEJkbTZCRnlTZmxYY2k0dmM5M0dVWk8vQXVHNW1raFNKc0dNWVZXWmM3ZS9CN1ZhVFlDL21BazRJQkI3OWo4cXZYVUF0dHFpVVNNT1hDOGhHOU05NnRrYnppTkJoVkdjWnlmZkZTU1hZbkd1VVdzZWxlZ1pPS1Y2bk1pajNxeWlaTUVZa0d3cnV6MnFSSnBnWHk0SWlQTzI1R2YxQmp0L25VcUxUNTQ1RlpId0NPVDZmZFV1M1JVM0k0eVU0REhydDdjMWFvK0pvNTExcEtMcjhrT08zR242YkZhUng3OHFjbmNGQlBmSnE1WVdFdmtOSkc1dG95T0lveDhMZXVRZXRScmlGcDVMa3p5S2pKSjhBN0ZjY1ZrN2I2dkNud2Y2eC90RGQvcStQKy94ck1sc2NweWZYNEpjZXYyWmgzZDdYV1lwSUhpV1NNRjF1RkJVbkk2WXp4MXFSb3ZpNW9iK3pzVFlyS0dLdzcvdE1PY2ZDZjhBRDN4MnFjZEdYV0h1cmE1QmdTTUswWlZDWkhQWW9QMXZrTzFUUEMzaGpUckhXUllYOXcwbW9NRmUyZUhCV1FBNTRPY2J1aEhyZ2pnMUdMY1haeTlYR0daT0NXNnZ4N3ZZMlhTTklFL2p2VDlVaHZaZ0kyS3lJaHl2QU9jbnNQVWV0ZGFFNnp6R0ZFWWdMK2tiT05oSTRIejUrNnNINGEwS3kwVzFrbmhoaUJrWnBIa1hrOG5uN3Z3UHJXYmpOdEc2Q09SRU1pamFtOERPZTRIdi9HbzVKS1R0R2hpeHZHdWxzczZOcGx2cE9tSmFXc2x3OElMTURjU0YyNU9lcHFXSmN5bEFqWUgybnpnRDI5NnVjblByU3F5OFVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRmVBaGlSWHRNQWNnVUI0U051U1YyanFjMUQvS2RzMHl4d2xwMzZFUXJ2Qy9OdWdxUk5idzNBUVRSSzZvZHloaGtBL3lOWE9FWEFBQTlCVVdwR056RGE3ZmF0WmVRZE9zRXU0MkpNeEoreUIyNittZWEwcytPdFVtdXN1SUZ0WFlqeXpIa0FkdWM1TmRHdXB2SXRtbklPeUw0MndjY0RyV2xXZC80VzFHNm1aOUtXM1p5QnZrY0tEdU9NakJ3RFhQMWFuMXBSeVZmWm1wblV1cGRNNkxFWGlDZlgxYU82VkZWRlhLS01xeHp3d0I2R3FwSUkzWGxCeDA0NmZLdkU4THk2WGN2UEZkdElBcFpGRVg2Tmwvd3MvUWZQcFZjYlBJcFlxQUIwNXpuNVY1cjJqSE5ISjFaWHV6YTAwbThmVE5ibXBYVnFMVzRkRytQbGdvQnhqcGcxUHN0RDh4QTl5V0dlaUx3ZnZxK2JHYWJWenZDaFFOMlN1UVJudFdhNjVIb2VsVVpkUkpSU1ROWEJwSU9ibEpiZGtRYmEwZ3NVWUl4d3h6dWNpcE9LOCtxbzBwa1lGM0o0TG5PUGtLdTQ5cTFuTzl6b1FqMHFrcVJiSXJ3ZzdXSTZnWnE1ajJyMFk3NW9tV0dPdFo1Ymd1SFFKanVhdVhNaGpqSUF5K01LQjNKcVdRT1FPbFFibHhESTF6Y2NKSHhHdnFmV3JZeVRsd1V5dUVOMzlTUENJN0dObXVDRWtQT1QzOWhXUHVydExpVlpITWpxdlFLdUFQbm1vMXpjUGN6dEk1ejZld3FoQTdrUnJrNS9WRmRDRzI3NU9UUFVOcm9ndGkvd0RsQmxHSTQwWDN6bXFCYzNkd1NGZGovd0FQRlhQcTBNSzdyaVRMZGtUcjk5VkxLaGp5NTJSZzhRcDFiNW1wMlovdXZiSk92TDF4K2ZJaXgyczB6Wnh4L2lQUWZmV1NGcFpOYnlXck51TXlHTnlHNVlIcjhxaDNOekpjRUQ3TVk2S08xWE5OQ200WmYxK3pEc1BZVktNcWRvbHBaUXg1VXNhdCtML1pHRjFqdzllbTJ0STdKNFpXUmZJYk1TUnNSajF4ejBBOWMxaGJleW4wYXkxQnJpU1cydWwycUZFTzVYQkdjYiszM1YwVzlzNE5SdFdndU0rWHVCNFlnZ2ozSGV0YzhSM0dxcG9zMWtiS1hHY0c1Ujk2dEdPdWM4ZzlLNnVuMUVwcFFmajVMdjY3SHNkTnFaVFN4dXVmSmQvWFkwYVV3dkZFd2FYejJkbWxCVUJSbnB0eFZrZ0tDVmM1NkRISDQxZnU0clJWUTJrek9kdVpFSTRUNUh1S2loZmgzY2ZqWFlpazBkMkNUUjVpdlIyOStLVXF4SXNOc3RIZVd5amZHV0tqSTZacTVNTm0yUlZKMjhFRHVLZzZMZWlhRVd6OFNJUGg5eFdVQy9DZVQ5MVhyZEdqSlZLbVJiaTBTV1VUQkFaTVlCckZ5YWZkS3pGVUxCemc4L2Z6V2RqVHk0d2pGbllIN1RIbjVWakx0cnVDWHpCS0NpbmdaN2ZLcFVjM1dZTWRkY2svcCtUYy9DK3ZMYVF3SmVxOFppUWdUWURtSStxcjNKR0I3WnFiTFo2TnFsekZlMkVHcHkzcXlqOUphd2NNVHp5V09BeDY1N2VsYWRvZDFOZDNyUXN5ajRDVkRJQ3BiMzlzVjBhdzFHOW5tM1F0R2pSeFpLZ0FJcXF1TWdIamRnMUdVRzl6alpNK2x3eXFDYmw1c3lNL2lUVUxvbXpHbWkyYkh4Q1NVT3lrZjRzY0QxcTk0YXNwN2lhVFU1WWxKWlNMZG5QQ24xQTlQK3RZdThTUzR1bzlPc3ZqSUFlNmxEOHUyT1NXNlk1UGZGWjlWdVlvRmhtdWx0N2FNSWtkdGFuTWo1NkRlZlhIYW90ZE1hWGM1OHArOHlkVlV2TGo5VE5TVHI1OEZ2SktrY3pmRVZ6OXJIWVZkVzRpZVV4Skloa1VaWlEzSUh5ckVXeldXbld0eGQzRVd5UkpDc3JzQ3pGdXdVbmtqbnJuMXFUWVEyRjVOK1Y3WlAwczY0TDV4eDBPUjY4VlM0MFdwc3lWS1VxQk1VcFNnRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVjVrWkk3anJYdFF0VXM1NzJ5YUcydW10WlN3UG1JT2NEcUtqSnRLMHJNUGpZbVovd0FxOHdDVno2N2g5MVViMWpqQWtrMmtER1dJQk5lUlpFT0hWdmhKQUxQdVlnZEQ5OUxCYnU5czFoY3hLZnRRdUIyendhNHlqT2dPTThqYWE3TGR5ZkF3RWF6dW95a1E2N3UyYzlQdnJsdXE2VnFOcGVTRzhoYmM3RWgxR1ZZbm5BTmNiMnFtK21TN0dscTQzVE1uNGMxRW5TcjdTNXBGamc4bDVWY2duSEdDTURxTzlYN0Y0V3RVV0Y4cW8yanRuSHQvR3RlQzNOazRoSW1obGxBR003ZHl0NjFOc2pDdHlkOHEycGg0Q3FlWEhmUHJYQjFrM2toR011WW1kTmxjV2t6SWFsZEMxaFdRR1BkMUFZNEpIUTRxalRwN1JsWllBNjdqdUlZNXlUNkdyMFZySGN5UjNrcXFXMllWZjFjZXRTdktqQjRSY2pvQU9sYzF6aW85UGMzbENibjE3VWVBSEZNR2l1SGxaQXdMTDE1cXJGVjJYN01vSU5VTklpTUZaMVZqeUFUaXJwRll6V2JkSkxkWFBscTZuaDJQT1BTcDQ2bEpKa01rbkNMa2lYUGNSMjhaZVZnQURqSGMxckY3ZFNYazI5dUZIQ0tPd3BOUExjTm1Wc2tEQXg2VloyMTBNT05RM2ZKeXRScVhsMld5UEZBM0Rka0RQT0t2Tk1GVFpBdXhlNVBVL2ZWcmJYdUt2NmpXVGNWU0tNQ21LcnhYbTJuVVI2U2pGWFlKWGhMc2o3Y3JqcGtuMkZlQmNrREdjOFlGWmF6MDd5bTh5VUF2MkhwVW8yM3NYNmZET2MvZys1ZnRvbVdHSXVCa0w5a2RPZjYxZEtxeU1IQzdTQ0czZE1kL3VyMUdWMXlqYmgvaXFQcWM4VnJwZDFOTXdWRmliQngxT0RnVnNRVGJTUjZIRkRpTVRtYzJoejNzZDVmMkVDL1VvR2NCbWZsd0R5UjY0ckdtekMyc1U0dWJaekprdEh2d3lZOVI3MWZ0dGExQzEwK2V5Z3VObHZObmVtMEhyMXg2ZmRWbStnc29aSWhaM2JYS01vTE0wZTNhM3BYcVlLYWZUSi9MNWVaNnlDeUo5TW44dmw1a1FrdHp4anNCMnJ5Z0lQSUlQYklyMnRnMlVYTGVVMjg4Y3FubFdCKzZ0MSswT0swNnlNUzNrWG5LR2pMQUhQU3R6MjR3QnhnZHF1eG10cU9VV2dzbTA3dG9QYkZSZFF0eE1pc2dCa0hZZGFuTVNxNUF5ZlN2RFltL0czYmhzRUJzNHhWbEdocW5IM1V1cmd4ZWlwTERxNkFFSk12UlNTQzJlb3o4dWEzeExxYU9GMGhjeEJ3RmtKWEpaUWNsZWVnSjlQU3NIcE5uSGE2ZUxvUWxya3hFTUJ6eU8zc2FrNlhmUzM5czBzc1hsa05oU09ocVNYaWVMenR5azVSNFd4dCtqUjZaYTI4RnhxS0dUNnhLWTBYa3FBTWNrZlAxOXVLMkI5dHpKTEZFa2NybU1wQkIwamppSndXUHUyRGoyclU5SDFUNm5ITmJOYnhUTElNeCtad0ZmR0IrTmJwcHJhYklrWVdTQjdsMkRFOGJpNEdNZ2VnN1k2VnI1VTA3TTQxdFJrWklJNTdmeVpVVm9pTUZEeURWRVVEV29TRzJoaGp0a0dBTWtFVlNzeFNkL091TGNSdHhHb0lEY2VwSjVxMjJxV0VTRjVyNjFVSHNaRjQrOFZyMCtDL1luVXJIVyt1V0YzT3NOdEpKTVdPTnlSTVZIemJwV1JyRFRYSmxPeFNsS3daRktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbE00b0JTckZwSFBIRXkzTndKcEM3RU1GMjRYUEErNFZlQkJBSTVGWVR0V1phcDBVU1NLcWVac1ppRGdBTGtrMUIxRzN2YjJGb3JlNWt0V1prWlpGWEp3Qnl1YXU2aGRpMzA1N2d3eVRJdkpTUHIxeHdLdVNGN21EWWl5Um1STStabkJUUGIyTlZUcVZ4c2c2ZXhHbHVoTkd5VzF6NVRLQ0duYVBPQ09PTThFMTQ4bjFiVFdtdW53VlhIbU1ONXpuQ3NCNzhHcGdpVnBsbVpuQkNsTnBQSHo2ZGExenhGNGhrMDJScldPTkpHZm5CR0FFeGpCOVRuTlVaOGl3d2VTYjh2U0l5ZlNyWlhyeFdQVGZQbEVOeGNRU0tBWGp3SmNua0RrOEhQOEFDdFFmUnpCSFBMZVBzSXp0VUhPLzc2MlBTTlgweVd4bEZ4SDVVcmdvWThrcVY1SXdENlpOWS94SCtUY2hiVUVUbkJiY0NUaitueXJnNitVY3lVNFRYeTcvQUsrUlZLTVhIcmU1RTB2VWdZaGJ6bkRJdUViR2MrMzNWTG0xVzFoQTJ5QjJQR0Y1clhVUjkyRU9DQjY0clpMVFM3YUNGZDBRWjhaTE56WEJ6Unh4ZlV5ZUNlV2NlbGR1NWdvTGhJOVErc0V2c0xrKzUrZGJKRzZTcmxTZnZHS3hkL0JIWVNxeUlQS2tCVW93eUI4aC9XcCtuUStWYUQ0Z1ZQUXFUZ2oxUHZVYzhsS0traXpUcVVKT0RKR0JXdGFqZVNYRXpSc05pb2NBRHI5OVpUVnIxN2ZiRkMySDZrKzFZQTg5Y2s5ODFQVFEvd0RUSzlYbHY0RjlTM2dVMmlxOENtQlc1MUdoUlJ0RlZKSHZPT2c3bjBIclh1Qlh2UWZPczlRUzMzTFpVWklCeVBXbTNQVG1wK25hYkpxRTJ5UGFxTDl0bVBRVnVGaG9samFJdTFQTVljdEpJQVRuMEZiT0RUenpicmd2eGFhZVRqZzE3VGZERjVOc25uL1FwMVVaeVRXYU9od21UYlBjT3k1NlJqYm41OTZ6VWpCVkpRWlhxUWVvcUlBODBtVXlrWTduN1IrWHBYVGhwOE1kdVdkR09PR0tQVEh1WW5Vck94MHRGeGNoRkxiVlJoeTN5eFhKZkUwMDlwZHZETGVTeXZLV2ZBbDNSQkNTTVlJem11NTNFRnNvRWMxczBrWjVKVGtyNy9PdEQ4WStHTGZXcklYZW04eXdMaERnN3NjbmF3OTg4R3VscHRQamkxTkwrRHQrelpRaTA1TCtEa0k2NS9oVlpSdHVTcEdlbWE4NVZ1bUNEM29BV2JIR1NjVjB6MGhhaWdFQ01Na2xtTEhQcWFycVo0aHNqNGJtaml2cDRtZVJONmlNazU5cXhMWEVoa3RrMmlQekFXY2s4cUJ6VVlaSXpqMVJkbzFvYW5CMDFqZC9MNTErU1hpdHkweWY2eHBzVGs1YkcwK3VSWE9MZlZmTnY0NE9QTE9Rekhqbm5Bcll2RFhpR0VhamNhZVI4TzBzalo0TERyLzM3VmRqbXJLTW10d1RoMWRYZWpjQS9sa2R5VGdEMXE1TmRSMkk4bU41QXdjVEVBWUczb3d6OHVhalJReDNNOHA4eDFDcXArUlBRKzQ5YXlpcnUrSzRpVU1BZVFjcTN5clpTT0RyYzhjOTQ1S3E0ODJ1eDZzUWltSmpQd3lPV0RaNkU4MWVoV08zM1c2SnRYN1NnZER6ei9Hdkk0Y1c0Z1p0eUFZVmdlMVhjZlp6enQ2R3BJNCtmTThzSXdmL0FKMktzNDdacll0QTBqVGRRaVNTVytaTGtFanl0MjM1YzlUV3UxbHZEMXhIRHFxTE5Fc2drSUNrakpWdXhIYW9aRStsMFVRcTl6THgrQjVQTkFudTl5ZDJWTW41Y24wNzFuTk84UGFmWkp1K3B4TktCZ3M1MzUvRVlGWmJMWkJYbko1M2YwcW9kdW4zVm95eXpseXpZVUlyZzhWRlRJUlFvUFplQlh0S1ZXVEZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBYaDlLeFlQYThia0VaSXlNY2RhWkE2OFVJM0lSbnFNZktqQmJpbFdRc2lrbnkyQ01UMVBHYVhNcHQ0SGxXTnBOaTdncTlXOWhVTFNwUThrNjVPZjBaSlBydHgvU3JrRXNXcVdtV1Q0UTRJdzJlUmdnL2pXcmp6OWVOVTkzZGZSbDBzZlRMZmhWWkplWklyZHA1VDVjYXJ1YmQySFdxYk82aHY3YU81Z2ZkRktNakl3Y2ZLdGUxVFNOV3VkUGlzVnVSS29aNUhtZDhiK2VFOStLeG5oL1M5ZWl2SUptTTBGdEVTV2lkOGJzWitFS2ZYMXFoNnpLczBZZTdkUDgvd0NqYWpwTVR4U243eFd2WDZtMFdPc2ZYSkx0VGF5d1IyMGhqYVNVZ0tjRGtqNVZrbFpYUU9oREtSa0VISUlyVC9GbXUzMm5SV1FTT0pVbFFpNGdrQWM5dmhQdGp2V2MwRFdJZGEwLzZ4RENZZkxmeWpIa0VMZ2RpTzJLdnc2aUx5UEUzdXZLaUdiU3lqaVdkS292enYxWmxPZTNGZVpPY0U4bXFqMElxQUk5UU9wU3MwNnJaL0NZMVJjc1NPb1BIU3RpVXFyWTBpOWUzaTJOcTl5OGNzaW9SbFlseXg1eFdPMWpRN1RWSUZrblowa1VFcVFjSG5zUldWbFprZU1oaUJuQlZWeVQ2ZkxGVmJSdDI5VDNCNzFWa3hMTGNaN29pMG55Yzg4UWFSRHBwdFk3YmNRYzg1eVNlTTFpNUVXU0o1YmlWamNTQUZGVVpMRDFQNFZ0dmlTRXQ1TXF3eXllVHVMaEhKUk05RDA2K3RhcTd6eHNseXVFSkcwRmNaNDQ2VjQ3WHc5M3FIR1BCVE9LVEltT3hyTjIrc3grUUJPcmVZb3dTQjFyRGpJY25HU1FSMHFSQThrZHZJVmhCVWpZWEl6aXRMSW96VzVIRktVSDhKN2UzWnY3aGYxWXh3b1BRZTlXWXBiaTMyaUdVcUR4OEovbUt0NHh4WG95Q0NPdFpWSlYySXR0dnE3bE1ubU8zbVNGbUo0M0dxTWUxWGlITWZDbllEMUE0elZPMDFPNklWWmJ4N1V4N1ZjMm1tMDA2aDBsczhkYXVRUWlhVGFaRWk0T1dmcFRCRlpPTzFobjBVelJ3TWJpTElaMVBIWHFSOTlXWTExdmJzWlVVYlBwZHJaeDZkRDlYSHdNdVdjZFhOVENBQ01kQUt3dWphdmJTZVRaQ0pvcE51TnhiN1RkNnpwQXhqdUs5RGhuam5qVGpXeDFjVFRpdW5nWlhjZURqSFN2RkFNZ0ZWZzRjWkhVVkJVU3ZyUG1LV0VDcDhRN1ZmSHBrM3VaakcwL2tlM3NyMjg4VGpaNU83YklyZHoyNTdWQmd1SVlyK1o0ME80dGtJZUhCUFlqdjkxWmtpTzRCREtHalllblUxaUhFUWw4dDQ5c2lrckUvWGNmZjBOYmVDU3FpN0ZLb3RWMk9kK045UGhuY3ZhV0ZyNWs3N2hJcWxKa2I5WUZSOW9kOGpuMnJuMTFiaTN1REVzZ2x4M0NzdlBwaGdEV1YrbU83dXJiWHJDS1B6SUdTSjVCdEpVZ2x1ZW55NjFkdWRIczdUd1JCcTE5cTBrbDZ5cGhwSEJWd2NmQ081SUI2MWU4dVBCTlJiMms5anM2YjJqaWhrV0dXM3BHb1hscUx2VTRtbWJDSkhrTVQ5b2o5V28rcXVzVFJ0Q1ZMU2tqQ25nODgveUFxSGFYY1Z3WHRMa3MwY2o1amZ1aHBPOW10MUpCYzd0a01leUxZTy9jbjc2Mk8yeFZQVVk1NDVTaFM2bnkzdy8rY1B6TVhjSnN1SkFvSVVNY2ZLc2g0ZnltdTJjanFUR3N5aCtjWUI2ODFUY2FxTGkwV0dTM1F1QUI1bmY3cW1QTmIyOXhCT2dieUpvOWordlRHZm4wTllTM3M1c2RQaW5OeVUvaDJ2dFYvd0FIYkk0dkxmR0FZOFlSbEhRWTcxV2tZU1U3Q1ZVcjlnbklxRm9sOGw3b2RtMFpEU29tMlZtSkpZOUIwN1l4K05URWpaRklZZ2tuZ2dWMFl1MVpvZEVzVGxpeWVuNGxYeERqOVgweFZ6dFZLcnRYQk9mZXFxa1Y1NUp5MjdkMTM4ejFRV2RWR0FTUU9UZ2ZqVTYwVnJUVWpBOXFsMHpmb3ZLVit1Y1kyc08vdldQKzBkbzV6K0ZibDRQc3JXWUc1bWpBdTdhUXhyOFhYanIxNjlSVmVTYWpHeXFNYlp0VnRDSUVTTkZDSXFnQ1BPN2I3Wi83elY0RUU0R01qdG5wV3FlTU5VMVBUcGJVV1R2RENRU3pvdWN0bjdKclpMQ1NhV3d0NUxpUFpPMGFtUWVoeHpXaEtMcFNMMDk2SkZLdHBGc1luYzdaSlB4Tm5HZjZWY3FCa1VwVmk2dkxheXQydUxxNGlnaFg3VWtqaFZIM21nTDlNR3RXdVBIK2lvY1dxM1Y3L3ZXOEoySC9BTnpZQis2b1VuMGp3UW8wa21qWHl4cU1rK1pGL0lOUUc3VXJWcmJ4L28wb0J1VXZMRUg5YTR0enRIeks1eDkrSzJPMXU3YStnRTlwY1EzRUo2U1JPR1UvZUtBdlVwU2dGS1VvQlNsS0FVcFNnRktVb0R3dGdnZXZTckZ6Y3JiRkdmQVVucWZXcnNpbDArSGhnY3JWTXNTVFJoWkVCQjZBbnYyclh6ZThjSktEcDl2RDVldkVuSHB0V1FaamNHOWlsTWlpMWJDRmM1NU9SVXVDWVNlVUVWOWhVamN3eGdnNC9Hb1RNMG1qek1wSG14Z044bUhQOUtuUWtYVmxHMGczQ1JBV0hybm10UFN5dkkrbC93Q1M2dC9QdDVMYml1NWRrL3gzWEd4aFZhOE05OWIyUlJaMUNFQnUrR0k3KzJLbjZHU2RNUnM1SjcrbkFxeWJlZjhBTE54Y1F4N0VNVExrRDdaR1A1OUI4cWoybDlIb0ZqYTJ0KzdGNUNXRElud3Juc1Q2MVRnZnVjblZrdFJYVXJmSE8zM3Y5Qy9JdmVRNlljdXZueHYrQzk0bGhzSnRPUVgxeWJZZVptTmxINjJNZHFtMmtFa2Vrd3d4WEhtU0NFQlpqems0NFB5ckc2eGEyUGlFdllKZWxMcTIrTTRIQXlPYytvcWRwOTFFMWlvdFhhNGpoaTIrYUJnT1FNWStmSGF0eURUMUVwYlUxU2FlN3JuN0ZjN1dDTWQ3VHVtdHQrUHVhdS9ocVhXN3VIOG9hZzdUSkUzblNJZ3dRRzJyajB6Zy9oVzI2YnB0dHBWa2xwYW9WUmVTU2NrbnVUVmpSM2t1WVpMK1NCNEh1Q01SU2RVVlJnRDhjbjc2bTJubi9Wby9yUmpNK1BqTWYyVDE1SDhLbnA4T09QeHBidnVaMVdveXpYdTVQWmR2K2VIQmVyd2dFWU5lMTR4d00xdG1rV21SWW9uZUtNYndNMWNZSzY4akk5RDZWR2JVYlZMdzJieWJadG9ZZ2pqQjk2dWxwQklBMjFVSitIUGYycWoza0xxTy9iYnMvTUZ1U0JUTUdDNDJJVlVaNE9mVWY5SzE3WDRvRG9EekMyU0NkcEYzcUZHY2pQZjM2MXNqcWtXWE9maXlTZXB4NjFxbXBXNzZoS2hmekJKTDhVVVpJRzFPZ2VRbnVmNVZ6L2FPMk54U3R1LytrWkxZMXUxV0ZweDlZTExGamtpcVpBcXM2b1NWemxXejJxdWVEeUo1SWk2dDViRmR5OURYc1ZwTExnSWhPNDRHZUs4ZFQ2dW51VlZzUjl0TnVPOVNwN1NTMmNDVVlCK3lSVnRZbWZjVlVrS01tcFNqT011bVMzSTBpaUxCYlk1T3hqakFQZnRWTHhQRzIxd1F3OVJWNEJmS0hYZm5uMHgvblZ5Vi9yRWF5U01mTVg0U01kdXhyTjJxOEIwa1RiNzAyKzlWN1JUYUtyNmpQU1ViZWFtNmJlbXlsS3VDOEVoeEl1Y2NkTTFGMml2UW9QYm50VTRaWENTbEhrZEpzaTZyYTJVNGpsMDlWOHBRSTNqNUpIYnFQNDFtZlBaNEVsRnRLckVBaFdISStkYS81MzVXdExjTTNreVFIWndPdnAvS3RraW1KdFk1SmsyeUVES1Y2TFR6YzA5L2gyclpldGkvRGwzcDlpNnloMElJNTZnKzlXMUc1U2tpamNCMjcxZlE3a09RUWFwWkMzSU9NZERXMUswK3VQUDUvd0IrQmVuYTRQUUJ0NDRPTVl4MHFGZkdPM2hlNVpNaEYrTEhCSS83L25VcVdaWS9pWVl4Mkhlb2swYTNQL21qdFJ6aFkrdWZuVjhKYnFpRW5XeVhZNEg5SzF4YzNsckhjTkU3Mnl5ZVhHNWk0aVBYYnU3SHJrZENlYTVVenVZMFFzNWpIS3FjNEI3NHI2ODEzUXJYV05FbjBPOGl6YXVvQTJjYmNkQ1BsMlA0MXhlNitoYlVXdXZMaDFlQnJXTWxWYVJDSEE3akE0cm93YWx1a1o2YlcvYjVITXJwNFlad0xaV1hDQU5rNTVJNjFPMHlYVDJzcEk3cFVEcmtobTVKNHE3ZjZMTGEzYzF0ZS84QWgzaEd3c1J3V1hnaitBL0dzYnByS2w0b2FEend3S2xCeVRWaTJaMElPZUxPcE5LcGRxMjM4dnNRMkEzSEhUTlpmU3JqYkU2R0VTc0FkcXQwL3dDK3Y4S3QzbHMxek04MGRzYmVOU0UydHh6VWVTTzUwNlZ3VndWTzBudG5yUldtVlk0NU5ObDY2MlhldjUrWGMzMzZPZGJqemMyTTBxbzVJTVFZNHlQUWZ3cnFlbjZKTkpNMFRTQmQwSnVjc3dIdy93QkRYelhaM1VsdmVwT21kd2JPRjcxOUxlRW5mVXlFbTNMZTNjWTh4LzF4dUFEWjlNS0NmbWEyY1dSOUZlQnFaMnNrVko4OGV2WDVKRm40ZW1uc1pMbUdSekFrVFM3NVZ4dTVPRkgzRG4wcUhEcGw3YzJFbDlEQXpRUi9hWURwNjRIZkhmRmRIMFczaGkwdjZ2R0ZDSkpJaEFiSTRKSEhya0NwbHZiMjluQUliZEVqalhKQ3IwR2F3OVE5elg2RFRQRHVtV2R0YVQ2aGR2S3MxcXg4eE51ZGk5d1IzeVA0Vkt1ckJ0R3VCZTZUS1k3TzdINlFJb08zdUN1ZXZHZU8rQ0sybU8ydDJhYVpJMUl1UURJUWMrWU1ZSDhLMTdTbU5qZHplSHRRUjVJVmJObks2bmE2NHp0ejZqdFZieU9UYkpWUmw3aTBoMW5TamJYUkxST3FFeXhmQ0hQWEs5ZVBuVXFHV0VPYlZDUThLZ2JXNmxlZ1B1UGV0UHZQRk52NFB1RnNKMGVaWGxMTWtiNzVJVlBZSUIwUFVldnNhdXplTjlIdVkwbGpqdkZjZjZxWllRU00rMjdKQjdpcTJaTnlwV0swN3hEcHVwdUlyZTVBbngvcVpBVWY3Z2V2M1pyRStQdkZpK0Z0Q0RRYlcxQzZKanRrYmtBNDVjajBVZnh3S2laTEhqRHg1QjRmbEduV0NKZDZzNEg2TmpoSWM5QzU5ZlJmNVZ5VysxNjQxQzdXNTFPNmU2bkxmQVhHUUQ2SWc0WDdoOTlZSnJpV2FjL0daN2laaTdOSWNsbVBMTXhxcGJpYUpKUHlma3NmaGU5Y2N0NmhmUWZLc0dhTmhOM2RoZDhvZ3RWUFJydVlJVC83UmsxU3VyUkg0RHJPbEgxQkVtSzBLOFIzWW1XUjVXN3N4eVRVQm84ZittLzRVc3owbldJYjY3S0dTSVEzVVkvV3NwOTVBLzRUZzE3WmF5MXRkRzcwMjRrdGJrSDQyaitIUHRJaDRiLzNmalhKb1pwN2VRU1c4ekt3UEJCSUlyWnJIeEV1b01zT3FIWmNkSTd0QUF3OW0veENsaHhaMy93bjQzaDF5UWFmZXJIYjZrQVNvUS9vNXdPcFRQUWp1cDVIYklyYjYrWWxubGp1TmtqdkhMQ2Q2dkVRQ0RqNFhVK21lL2JrVjNUd0o0ci9BRG8wVW00S2pVYlVoTGxWR0EyUjhMZ2VqRDhEa1ZraWJUU2xLQVVwU2dGS1VvQlhuUGF2YVZob0VUVWJuNnZhN3NITGZDQ0RqRlVXRE5McGk0Yzc4RUJtNTVIZXBieHh5THRrWGN2b2FoWFdwVzlpb2lSUXpBNDJEc0s1bWQrNXp2VVpzaVVLcXU5djE4elloOGNWQ0szc3Myei9BS2U4dFpXQ2tqY01jZ0FqbjhDYThsdjAwejZsREpLdmxpTTd5b3lUZ2NjZHF3bDNkdTE3TE1qYlN4NGJvUVBTc1hLU1R5Yy9QcUs4NS84QWMrNlRoalc2YnAzMjZyK3AwNGFMcmR5ZTNoNTFSdjhBSmQyOGJSTEpNZ2FZNGo1em41VkYxZUNHNXMwaGxqU1F5dUZqTGZxazkvdXhXbFcxMkxhK2h1SlZNM2xuSVV0ajVWa1pmRUg1UXVqYjNFNGh0NDRUTklxcWNTSHNtZjRISFhtdXRpOXI0OVRqa3BxbTlxL2w4RlQ5bnp4VFVvdmp2L0JYcW1xNmVtb2kyUjJoaGRRTG00alRMekRvRkI5TythODBmVmJmUnJIVm9UTEhMRmJONWxzcGJCa1Z1Umo3OFZZMDdUN0xWTHVPZlVwWWhKT29FZHVKOGx6L0FJajZmOFB0V3RhMWRQYzZuTzdScEhodkxDSU1CUXZGVlBVNU1mOEFmMjNicjVWMy9SbS9pMDJQTC9ZMzJTdjUzMi9WRzllRi9FTjNyc2x3dHpERXFSQUhjbWVjOXV0WnFaRERPYng3dGxpVmNlV3pCWXg2c2ZVMXlyUmZFRjFvTnkwa0FEeE9SNWtiZnJBZW5vZmV0czBEV0lOYjhRWE1jcVNUb2krWkE4b3lxRGpJMkRnZXg2MXY2UFdySkNNSk81V2EydTluU3h6bGtncWhYYjllVFpQclU5N0hLdGlySWpSdDVkM0lNTHU3WVU4c1BmcDg2bEdPVnJNeCtlVm1NZTN6QXZSc2ZhQS9qaXExODBUUHVLR1BBMjR6dXozei9DdlkwOHVNTGxtd09TYTZxVDduR2NsMlJRa0NlV0ZrQWsrRGF6T295dzkvWDFxTjVJZ1R5enZrUW5oTVpBK1dlZytkVGR5NXhrWjlLb2xNcXJtTmxCNmtGYzVIK2RWNUlSYXNnUTd6VW9yZkNrN3lwenRDNUo5QVBmTmEzZDZ5enhsbGhFa2pBK2Y1cVpYSjZZOWdNZ2ZmVzNHQlpRR21BZkM5RDA1clJOWmhFT3FUb3FLdklKVmVnNDdWdy9iR1ROaGdwM3M5dlhyeE1ORUdPTnJtY0syME01NUxIQS82Vkx0cGhiWExyTWhrY2ZDcFhucFVQSHRXVjAreFI0eTBpT0pNL0NRY0VmS3VEb1hrbmtTeC93Q1hOK3YwSXlpajE1NHIyMnlFZjRHQmJqN1AzbXNhYllTemxZMkJaeWNCdUNmNlZmdVV3N2kzamtTTEcxZ09tUlVkWTNHSEt1RXp5UUtaOVM4elR5UjM3OWpDaFhCSnR0S2trY0dWZ3FuSStFNU5USXRKampqa1dSaXhjWXlSeUtqTFlPZzh5U1pZazZxMjdKckpSM0VTYllwSkdQR2R6cmpOZERRNGNVVldlTlB4YjhmTDl5dkpmL2t3RjFhUGJTYkd4akdWSUhXckcydG52cmRMdXpPMGpldnhBK2xhN3RybTYvVHJUNVBoL3dBWHdXWTMxSXQ3SzgyMWR3YVlPSzBlb24wa25TbmRMMVl3Q1VrT0R4M3JiSkRLV1FzUGkvVnJBNlRZdUN0MDZrQThKOC9XczlJdHh1akRrZXFnVjZmMlpqbkhUM0x2eDhqV3lWMU9pNHp6K1lBVkFPZWxWTVovT0F4OE9PblkxUzRuK3NMa2d0amc5cXFIbkdjYnVNRGcrb3JvVTd2ZmtzamZtWFBLVnBHZHVYN0FuZ2ZLc1RMTE5sV2tISU8zSkdNajBQdFdZVU41aExFSFBURll6VTEvU2dGc0Zoa2U0OUsyOU85NlpjbnM5aE5lUXoycC9Wa0hDZzhnMWo0djljTnhCVTlNMTROeEhJN1Y1OTQrK3Q2RVZIZ3lwZEw3SEcvcGUwb3gzLzFwU3FpZFBOWVk2a0hhZnY2Vno3VEw2d3RaSm5hTXBuR3pqY2NZNTU5NjdaOUpuaGE4OFRhREE5bUZhN3MzYVFKazVkQ1BpVWUrUUNLNEplVFF5ckNzVUhsR05Ockh1eHFmVjNPa3RhK3BabFhWRkxuZStmdFNabE5WMUtLNTB4UEpJeXo4Zy9hWEZZWnJnUGJPa2dacEdZTUhMbmo3cWpuclhsWWNtM1pyNmpXWk04K3VYaFJJc2Jsck8raHVsVkhhRnhJRmNaQklPY0VlbGZVL2hxNWlGdGQrSnROczk4QmhTT0swalVneHMyR2NuMUdUajdxK1kvRHVtdHJIaUxUdE5EYmZyVnpIRG5yamN3RmZWbW8zOGZoV3hpR2dRUUxhaVFyT1hCKzFqanZ3T0R6V1llQnB0ZHlSWVd1czIxMUZKcGJRL2t1YkR5UVRPTVJFL2FVOXdldlNyYWhyM1VOWTAremllM3VFQ05idTc1R0IwSTdZSlA0TldmMGpVTFdmUjdlNkFqaEV3R1ZKeDhaNmptc1I0aFI3YUdIVTlJS3BNSTJqVjF4Z0RyL0xQNFV1MllwRXZ3NXFvdnJTQzFSQkM5c3V5V09VWllnRGJrWTZZWWNnOXEwdjZTdkdVMWtFMDYyZHJlY3FXZFdRYjdjaC9na1ZoM1lEajBCeld3eVFYT2xUV21yWE93M04wQUpoSDlreWdldm82Z2cvN3dXdUczR29ueEg0c3VMNjZMaU83dUM3RnVDSXl4QUgzS01WaVQzMkpKV1dFMVc4WHo1YjZPU1oyT1FkMjNjZTVadXA1LzhBbXJDZUtMeUpzTFoyektPeDNnL2p1cmY5UzAzU0wvVDVaN1dTT0dPR01zVWJqYXFqdFhNVElKbU1rVnU1aUhSeWUzcmlvTmswa2JKWStLRnZDSXZqZ21CRzJPUjhxVC91TjFCK2Y0aXJmaVBXci9XYnVHNTFDNWVieTRSQkd6Y0ZRT1R1OXlUMTc0cldacmJJRHA2WkJ4VXFTNU1sbG1lUUFzTU9TZXBIZWhocWpPK0d0Rmw4UWFwRFlLM2wrZURKY1A4QTRJaDBVZTVQSDMxdStyK0dSREJzZ2lDd1JqWWlxT0RqMCtWYWY0VjFtQzB1YjZlSzRpODE5cUpod2NLQi9uVytXZmlxSVJMRE5ob3dnVEhYZzlUN1VCekxWdE9lRm00QUE0NDRBK1pyQVNXNVVaQ0RIcWQrUHh4VzYvU0hyRnRMcUVGanBhN0MwZStaOGRDVHdxL2QxTmFwRm84anI1bk83cnV6eUt3U01hOGJBY2drRThjNUorUi9wVkJVWkdEazlRMk1ackltMll5bU56aGlRUzM4QTN6Qng4eFZIMVp3TTdPUjhXQjY5RC9Lc0dTYlozalhHbjRmSm10aGxjODdrN2o3dXRiajlIK3ZIUi9HVmpLWHhCZHQ5Vm15ZUNyZlpQM05qK05hUGFJYmE4aVA2am5hUjg2ckV6VzZsZ2ZqaGJLa2VxbklQOEtsWkJuMTlTck5wTjlZczRKeDBsalYvd0FRRC9XcjFaSWlsS1VBcFNxV0RFZkNRRDdpc1NkSzZzRlZPZlRpb3pHN2o1Mnh1UHdxTEpxVHhQOEFIQ3d6Mnp4V2hsOXBZY0svdXB4K2FmNTQvVXRqaGxML0FCM01nMlNwNmcxcXQ5TVpaUGlDNzF5ck9COXZudld4UlhYMTIzSmhPSkY0d2ZXdFl1Tndta0REQjNjZ2RqWEEvd0RrT29XVEZqZU4zR1hmcy84QWE5ZHplME1LaytybEVlNWxhV1F1Mk1rWTRHS2hTZGFsU1ZGazYxNWFMY25iNU96alZiSWl2MU5SWFBHUCt0U1pPcHFNNXh5YTNNWnRSSXpNVVlNcllZSGNHSFg1MUdsSlppVHlUeVQ2MVN5WFIxSjNhVEZxc1lDSUFQaWM5U1Q3Y1lIdWFQVzlGVnRaZmpkNzBSM3Fkb2V1emFGZmVlaW1TSmxJa2lCMmgrT01uMnFDL1dvem5yVzNobktFbEtQSmRMSEhMQndtclRPMzZIcWJhdnBFTjY5c2JjeVpPMG5JNE9BUWZRMWtRY2pnL2hXaCtBcnpWOVN1WGx1TGcvVUxhRVFMSHNHMW00eDk0eHpXK0RnZHE5WnA4bnZNYWtlSDEyQllNOG9LdnAyOGpDYW5JYkxYTk91OXY2T1ROdTV6Njhpc3d5R1JYVXN5NVBWRHpXSjhUeExOb053NmtGNFNzaWxlU01HcjFoZHdhdHA4RWp4c1N5Z1BnTmdOM3FVdHRrYzZNcXlPUDFMVitkUXQvS1cydU44anVRSTNDOGovQUNyV3JxenU1MnVMeG1XWkZiRFNqZ0U1eHhXelhOcGFTeXJIRERINWpvV2FWY0VxdnRrOVQvQ3ZGMHkzRnBMNXpTaENnWng1bTFSM3h4Z2RxNEdzMGVUVXljWHd2LzA2dXZOZmYvcHNWWEpwOGNETlBIRTJVTGtja2RNMU5odUpsalpKTnpxdVFYQndSVmd1QmNiNDkyME1DdTQ1NHp4VjI4WEY1SkhnQXMrYy9Pdk5ZY3J4VzRQeStabHhzc2ZXbitxR0JRZG9iSmJKNTlBYXZ0ZFRYZHUwS1JBWUh4WTdpcS9xcnBhVHJrTXhkUVBrT3RXNHJLZkljSndtQ0FUMXExVDFmK01iM1ZjZGpIVEVyazhxMkt3WWFaQ0FYejFWdmFwY3dndlFpREpBNVU5TzM4cWkzTjI5eEtnUk5nNXdwN2srdFhJd3U4UXlJcm8yU0F2SFBjajUxdVk5UkRybGhqVGk2WEZmeStmc1JjTzVma25GdlpEekZBbFpjYmZUdFdCMm1wdDIyK2JhVGtKOEk1cVB0cm42L1ZlOW1vcmlPeUpReDBpMXRxZHArbm00ZnpIL0FOVXA1OXpVZFUzTUJqcWEyVzJ0ZnExbkdwUHorZFhleTlNcytYcWt2aGo2UkhNK21PeGRaSkZTUGNlT2lnVmNram1EUjVibnQ3VjQ4YktGSkk1NlY2OExLVUJiSlk4YzlLOVlhYmp5VnVrd25YNGpudC9Xcm1KdnJQMnVNVlM2U0xLc2JQa245YXFqRy8xa0F5WUdPdFlhTGtxN0ZZRWdrSlk1OUt4K3FJMkEyUWNmcW5zUFdwcFVwTVZhYmdqZ2RDYXcwczgxL2ZHR0ljSUJnWUJKT1BYc0JWK0JQcVQ4R1RicllpTHZCZkpValBHQjBGZUtHQmZMWkJPUngwRkJEUEJOTWt6a2tQZ2NWVEhISWhrek9UdVBISDJhNktmRkVWZmdXb0duTHpRdU1GU05yRWNIUCtYRmM3OFIvUlBEcmx4THFWaGNyYTNjemwzZzIvbzNQZkdQc2tuN3VlMWRFdG81ZkwvU1hERUJqMHdlT2xaRzBtdHJhVVNlU2ZMNEsrYWZzREhYQS9Hb3JzWWc2YVo4a2F4b1dwYUhmeTJtbzJVOXRLakZjU29SbkhvZWgrNm9kdmJUM1U2dzIwTWswckhDcEdoWW43aFgybWx6WVhtb2hUWnBNSkRnU01Od2IvZTJuZ1ZaK3U2VnBTM3R6YTZkYndtR0ptYVdHTlYzQWY4QUNQV3NsdG80MTlGUGcxUERsKy9pUHhKYnRGTmFCVERidXVUR0dCQWtJL3haR0FPMmE3Y3R6YjZqb2QxTnBFVWJ1OGUrTU9nMnVjZkNTRC9XdVg2UnJ3dlBGaTNXb1M3RmtjQ1ptWEtZSndBUjZkUDUxdXZpSFdyNjMwZTRld3NwTFl4WEpnVmtHUTBaWDdSVURnNTRBUFNwdFVZc3Y2Szh1cTJZazE2eGh0bGluQzIrRHN5NUhJS2c4bXM5SUxYV05Ma1cyZU40MnlNcTJBR0hZNDVIUEJybGZoNkxVbjEzU2JPNUZ4REY1dm5wRmNBZ0VMeXhDK3ZINDEwU0xTNHJTYTF1TkxzcFdFMTRaN2dQT1UyQmxJTFkvV0h0NjFocEpoSkxjbk5wSW4wTnRNbmszYm9qRnZHY2dkRlB6SEhQdFh5NWI2WmNhZHBkOVBJNSt0VzgrSklzY29GSkJQMzV6WDFrN3J0Y0J3cENrODl2ZXVOZlNYb2cwaTlrMWkzaE1sdGVsV2xrUnNCRDBZRlIrcS9IUGFvazBjM2thN2t0N3l6a2tqd3NXNThTcVJqam9jODlSd0t5T215T2x2RFovVkxVelBiRjBETXVDQUR5ZWNCdXZCNTRGUmIzUlh0cnpWUkI0ZXVQTGl0VmRZdk5PYlE4ZnBEL0FJZ2VlUGVyRjFmVytodFlTNmpvVnhIRExhYmhFODVCdUhPUUpCNkQyOXF4Ukl6K3IyMmxhQjRYc3IrZWVHYWJHQkZqTFN5WnlWeDZEam4wcmwwaVhtclN5WEpRaUx6QXVRTUloUFJSNzFQMDNUOVQ4WWF4RXBFc2lzNGp5b3lGNzdWN1p4bmo3eldWMS9YTFRTOU1mUUxDeEVVa1UrV2QyM0dMYitxZXhiUEpiN3F5UmJNTnFIaHU5MHU0dTE4Mk5tc3lQTUtPQVJrNEJVWnlmdXFacFhpU1lnUjNNaDgxUU5yZjRzSG9mZXNUSHJVOHMwMGw3LzRsNUZDaDNKTEllT1I2OGNZTlNyN1NwYmw0NXRQc0pGUTJ3bmRVWXljTDlxVDJYdmp0MHJBUmxwNS9OMUFUdTJSd3VSN2RQNFZ0RmxlMnkyWlFnRTRybm1uNmdaTnR2SmtzQmhXSFVqMEk3MW1vcHVpdGtlMjJUUDRmOWF3UzVOdDBEUTVkZjFXY3hJUExnaitJazlXSkdBUFU5NnlGNTRVa2djNVE0K0kveHFGNGQxazJKV09JbEI2RGcvaDJybzFuckZ2cWNRaG1VRjNVTHVIVlYvcWFBNU5xV210YlNXSzdmaWVRWS9uV3V1OFR0ZDc1R1ZzUDVRVmMrWTJjWTl2blhSZkVjMXRlK0pKNUxaeDlUc3dMYU4rMGtyZmFJLzRmNlZyTnY0YVg4ODdWRmptVFJXdVVlUzRhTmlzY1lJTEE1K1dQdnJKZytuZE1oTnZwTmpDMzJvN2VORDl5Q3BkUWJMV05OMUE0c3J5Q1lub3F2OFg3cDVxZFdTSXBTbEFLZmRtbE00NW9Da01Hemc1OWFwZGQyQVkwZGUrODlQbFZ0NVpFdWtpV0lzcEhMWTZWWExKdDJoQ3BiM09CaXRUMzBKeGtuMmRQYitic3M2WGFJRjdwb0M3N2MrWGdaS2drWi95clg1c3E3QmpsdnhyWVptY1c4ai9GTkYvaDZBL0x1Zm5XRzFNSUxyS0lVM0lwS250eFhqdmJXSEZYdk1VZW5pMTIzdmRkdTNiN0hUMGtwWDB5M01iSWFpU0htcFV2U29zbld1SGpPdEFpdjFOUlpPaHFVL1UxRms2R3QzR2JNU05KVWFTcEVuU296MXVRTm1KWks3bkFCQVB2MHFLL0hmcFVsaHVjS0NvSjdzY0N2SUxock8vV1FHQm5qYjRTNmVZdWZYSGV0M0dyb3VUYVd4dlgwZFhzVFFUd1BmYnBFWDRiVUpnUnJ1SkxaN3NjL2dCVWZWdnBQS1NQRHBsa1BoSkFtdVR3Y2NmWkg5YXdrVVhpM1dtTTF1bHp0Yy82MUVFS250bk9CeFc4NlY0SDBqVDlrMDl1YmljcG1ScmhoSW9idVFEeDFydTRIbW5CUXg3SmQzNlo1L1ZSMGVITkxOcVBpYi84cDhlTjhmcWF6cHV1ZUt2RUVSVVd3ZXlrNGthT0FLdTN1QTJlcHFkb3B0dFJ2VTAvTnpieE1HSUNUWTNFZGlLM3dReCtWSEdxaFVYRzFVNEF4MHdCV29hcnBNT2p6U2FpcUtjemIxTFNsZHVUenhqdFc0c0xpdmlia3p6dXYxcjk1SE5nZ29KYzB0Nitac1VGbHArbXhMeEdvQ2xUSklldnJVUzcxdFRHNlEyanlKOW5lNHlwL3dBNmo2UkJaYXhiL1c1UFBMN3lwU1Z3ZWV2OGF6TVVjTXNnS3VyeHhqQ1JxZUZQZi9zMW9UanE4aTZJMWo3ZUw5ZmY5ekh2RmsrTzdOUW10cmdKNTAwSlFNZnRFWXlhdTM2aVc1RGdxTW92ZjJyT2E3QWtXbnZjb0czUjdjL0VjRmR3eU1WaExsZzZST2dBR3pnTDBBeWNmd3J6WHRIMmU5RXQzYWY3ZlR6SlJrcFNvdnhxWWRQVTd4OFpQYlB0L1NvcXBDaHcwejVQWEhhcjk1OEVGdkIvZ1FFL00xWWloM1NCU0dDRDRqOHExSjVxYWhGWFh6SnFQY2pTSU41S2trZGNqdldXaFZXdFJPMFFYeXhoVDdBVkd0N1I1WnY5VjhCeVR1NEFGVDVaUk5aekxHdUZRRlY5eDYxc2V6NDlMbk9YZzZWYzF1WW1yMk1DUmtrbmswMjFjeGsxNnNaWTRISlBIRmNXMjJXVVYyVUhuWGNZUFFIZCtGYkNVd29mUEJxSlpXdjFlUEpIeG5yL0FKVk5JQVFZWWsrbnBYc2ZabW5lREI4WEwzTlRMOFRLWGlBQzRZSFByMnFwb3dyQWJ0d05WK1NDb0lPYzlhdmhBaWdEQndLMzVTb2pERjFGaG9Rc2dCa3oyelZtOEU4TXNVc2JueWt6NWd3RGtmUHRVb29CT09lTVpxUGZ5UnNXdHdRcnVPTTlDZjZIaXB3M2x3VGhnVTdUOVVhODBjOXhxbHhjRzhteEN5UEdRTUZWT2NqNVpxaTNoTnByODA4Y3ptUGhsQU9Od1BVSDVIaXBseGNvNWl0THAwUWtORzNVRWpIOHgxejdWaWJDTzNUVkxpRVMrWjVZT3h0MmM1Nm4zcnA0MWE0TkxKaldQTEdMOGViMzNWOGZKa3RFY1h0eTd6czVkODdTZW5jVlRheEZaSm1hVmpsK0FPUlZTd3EwNWxETnVYNGNBNHg2aW84Rm9qUXUvbXVZdDdJcksyQndmNDFsY0xZdGNYQnBWNDl6SjJaV0NLMVQ5Qk15TVM3eGpHOGtuZy9JRWZlS2E3YnROZnlLWlhRS3FxQjJJSDg2dzhGckY5V2tkNW1YREVaQndPT2hxclZkWG1rOEx0SEhkTEhjUTh4T2NieVFlQjY4OUtyY2xISFZkdkV1d3A2bklzYzFWK0h6OEVaalJZMkdyd3VzckVjcXlkZ01WbXJNd3BkeldjZG1rY1FKenhrTnozejYxQjBCWGhFU0NKV2lsUlhhVURxMjBaNTc4OWZlc21iMjRXOWVNMmtqUjdnQXlET0I2ODlxbmpWUVh5SlRpb3lkK0pyVno0VzAyOTEyMGxqMGNSdzIwN05NeVBzWEhYTGV2SUhIU3RObjhSelcxaHFtbXdhanAwOE05Nmx4RkxIY3B2ZnpicEdJQXpuQVVrZkpjMUgrbnE3MUE2YlkrVlBMYnd3eVB2amptMithRGdCaU01WWRSeDB6WEdQRWVuNlBwODFpZEsxWmRRV2FBUEwrajJtRnY4Sngvd0I4VmFSU1hZK3k3Y3hYYkM2OGxOeWx4RzV3V3dUemcraHFUamozeDNyazMwUGVKVGR6WFdnUTZtTlJzTEt5Z2x0MjhnUkdISkt0R2NkY2NISnJxOG9MUWtiUE16MFhQV3NFang5K1pDUEwreHh1NjU5L2FvODF1dDJpUVhFRnJMQkpFVmtSaG5Qc0I2VlJmTGNCWm10WUlmTWJZdStZbkRMdStKZU9jNHpqdG1zRDR2OEFGdW1lQ3RLaTFEVUxjcTJ3cEJFckR6R2YvQUIvTnUxWkJ6cngxNFQwandscGwzcmI2MWRRUzNLbU9DelNmZjVrbWVCazhzb0dNZzlLNWg0YzhPNjk5SStzaEdtZjZ0YmhWbXVaV3lrQ2RsWEo2bnNLeUdtYVo0ZytsL3hlMDhpdkhhSzRFa2lBbUswako0VkFlL3QzUEpyWi9HbmpUVFBCbWp5ZUMvQ2NDd1N4dmk1dTFmY3lFREJ3M2VROXowSFFjOU1BMVR4ZDlUOEpXMXJvT21YMHNtcDJqRjd1YUM0ekZHNTdMd1BqeGpKSFRwWFAyWm1PV0pKNjgxVVZkdmlJWTd1aHgxcDVVblA2TnZoNjhIaWdvb3pXUjB5L0ZwTm1WNS9LWldWaEUrRGdnL3d6MUhlb0FqYzR3amM5T0s5OG1YQlBsdmdjSDRUeFF6VE1yYzZlaldkdGMyVVYwU3lNMDN3ZkI4SjZvZTRIR2M5RFZXbTNheU1JSm1iZHpna25CNHlNMVJvK3J2WVhFUWVTVVJMa0l5c2N3bHVyb0FSei9Pc3ZyWGh5T2FBNnBvMGd1b0hjank3ZUNYQUFBSllGaDA2NUdjam50V0tGbVN0Vm1pY0JGWUQ0UmtJUnlSa0QvdnFPYXlrV3VUbUUyMWxJeWtqNDVzZEI3ZTlhcm9HbzI4ekxiM1lpRXU4TWp2dnd3Q2tZTzNuMDZWc21uV1p2NW9MT0ZZUkpLSXYvQUUzQUJPYzU3ZEJrOWpqaWxHYnNsMnQzQnAxc3BWMGpqSDJKSEJaMzl3TzRQcndQblZMZU03VU1WSnYzQjc0UUQ4S3pHdGVGR3RveVlsTG9Pc2g1TFZvOXhieFF5c2traXEvK0hOTE1wRzQybmlhM3Y1RThpY1NTanBISXZsU2YrMDU2L2VLNkQ0UStrVGZkeGFickU1WlpEc2l1Sk9HUnV5djYrbWV2clhBWnJiYmhsNjU0cksyZXBQUERpWWt5cDhMczNHOU94UHVEeFJNdzRuMXQ4eGlsYWw5SDNpTWF6NFJ0cGJ1Zi93QVRBeHQ1V1A2NVhvMzNnaWxaSW0yMWJtajgyTXJ1Sys0cTVYbldvVGhISkZ3bHVtWlRwMldwSGRjS3NaY1l4bmNCK05SV0dCdE50SzNKSUM0Mmo3dTlUV0FWU2M0SHJqTllxNnZKcGl5UkFpTE9DY1lKOXE1SHRISkRDcnlOMitFcWY3ZnF6WXdweWV5S2JuVUg4d3BBemxpUW9Rb0NCOHF4VnpCTXNielRaM2w4QlQ5b252aXN0YTJVMkNRaVFManJqYzQrWHBXSTFxV0xUNG8zdnJnUkk1Q1FtYmdzVHp0OU9nelhuOVhoMU9iSDczTXBQbWx2UysrLzZKRzdpbkNFdW1MU01mSWVPaEhzYWl5ZGFreWNFMUZrNjF3NEhYZ1JuNm1vc25RMUtjOG1vckFzQ1FPSzNjVVc5a2JVQ05KVVo2bnRiRm84aHVldU1WQWs0T0QyNjEwcDZYTGhVWlpGU2ZCZkNTWkJ1cEpsVmhERXJPQjhKZHNMbjM3MXNQMGRYVWQ5cmx3a2tGdTRTTkVqTXNEREpWc3NWejN4M3gyckRPUkZKdlhENEhwMTlxeW5nRXRxT3ZhdGJSdWdudDdkSGpkY255WDNaWEpPT3ZQQXp4bm11cjdOai9kcXY5ZWZyOXpSOXJ5NmRNNVcvbDQrWHI5anJzUThtQlE4alNBQVprZkZhRHEzalA2d05UMDI1cy8wUkxSeHZCSmdqSGMrdGE5ck9vM1A1U3ZGajFTUzRXWWJaVCtxZTVVRHBnSG9mYXNRR0dlT25ibXZZWTlPbHV6NWRydGZPUzZNZTNOOTdNMVorSWRRdHJLV3o4OXBJSkJqWXpFZVgvd2tISXFiYWFzK28zVXJYOXlVaytxdERHL1lzT1J1L0N0YVU5NnZLM0hVMW5KaVQ3SEl4NnJMamF0N0kzWHdYcUdiNlN5bUpjVGplcGJuREwyL0N0eVdheU4xRDloTG1aU1VETHRkZ090Y3BzYlc5bGtUNnRCY2VhU05yb3BBQVBmUDlhMnZVTk92N3pEM2w1YUNhQmpzbExiQ0ZJNVVqK09hNW1kNG9TWFZWbmYwT3F5KzVycHVqYWRRZUNhMW50V1pHa1pkdmw3dWVhMXFhSm8zV0E4K1dnakh1QjNxTE5kUzJWcklobnRwemNyczN4dmwwZkgyczlzZ2ZqV1N0MU9vUTIwdThPNEd5VXFlaEI2L2hYbVBic00yYkVwSjJyNFg3blgwMmVFNTFWT2daVUYrL21wdlg3SUJGSkVsZ2xNU3FzWWZIdWNWSW1UY1BxNlJFc0crMzdldFNvTFJZemtzekVldGNHR0xKT2JTZTNqK3h1TnBJaUptQzJJYVFoNURnYnV3K1ZVVy9rUllWWk1IbmNXNzFNbnRrWXRJK1dKNHlPb0h0VVV3UlJINGhnazl6OW4vQUsxZExKazA4bEpSdXUvcnhNSkpua3VtcTArMk44RnVRQU1nZmZVaTIwOUljOGJuSGY4QXlxNUZQaU5aQmgrZHZKeGozcVV1TWs4OCs5ZExTNDlKS1h2Y2FWa1pYd3kwQU9ucFZ4RU80WkhKcjBrU1MrV0JoaHljZWxleXl0RXZDK1ljNEdPTVZ2Wk5SQ0VlcVQySXhoYkx1MERweFZET3ZHMGlxVnVGZGdqS3lrcms1cW5aR0NWR2NCZDN6cUx6d2p2MjQrdmdXYjlqRVh1clhFT3BQYngyc3NrTWNJZDVZMUJDTVQ3OVJ6elVTYlVvbW44eTZlSkl4bU50K1ZMTUNQaDZjSG5PZmFwMTNldzZjczVnYmJ1QU8xa0pWaDMrL0dhd3NxeFhOcERmVzAwVjFZQW1HNGpjWkFIUHhaUGZwNzlLNnVqeWFmVVlsSlZ6VHB1dnZYK3Z5YWMzbHdTYlVxYjM0OWJlUGRHVXMvcWEya3YxQUtabzVTc2hsYkwvQUllbFlHRFF2SXZEY3RBMzFNamRDNm5qUGZkam9SNlZMbm1ndHkxeDVrSWlkVmlmeUJuS0ZlaC9EbjdxdlQrSWRQa2dqdDRwbkhtTGlWRmpJQk9jOEVIZyt2clZtTFVRd2YybTB1VlhIZmJZMk0yZy9xbkhNb3VWVTdxKzIvOEFQYnNXWW1Vdk1Od01VaEJRRHVjYy9MMXhWMFRXNjJJc2d3U05pVzJzY1pBNkVacVBiUXVrRTBNekUyemxkc1o1eWZVNDV6NzFKYUpIVUIwUjFIMmR3emlzd20zVGFTNUxzdW42YlNiYlg3OCt2THVZN2JhVFd6U05JeGxTUEJJN1k5QjNxSnBSMHJVWm9yNjZScEd0cFFBaWtnaFFjalByM05WVDZsWTIwOTZxeUJYU01DTUFmQ2VPd0hHYzFnUU5QaDBpVmhLejM0d3lNbVFBVGpqM3gzclRubmphcW1rbno2NU9oby9ac29RbExlTTIwclM3UG42ZUx2OEFnNmhGcnYxb2VlSTNOay9BVmh0ZHVjWUE2aysxZVdMZmxDOW4xQzBEb2tuNlB6RVBPVjQyN1RrWjkrMWN5dXRaaXVMYUc4ZmNOV2hmNFdBd2dYUHAzcWZENHFjVyttN0V1dk1Ec3MwVnVER2tnSjVLa2RXSnhWOE5Zbi9sWEJITDdGeVZjRStYcy9yMzhIeFpBK2xQdzAvaURWTktTN3ZIaWtnUnc1eDVoMk1jakI5YzhmS3VQZUs5RHNkSXViR0RUWHZwbmtpL1RmV0lTZzh6T0NFT1BpRmRIK21iWGJuVGZGVnBGcDF4Y3JlTmJaa0IrSmZMWTVRQUg5YnIrTmMrOFZYRU42MWhiMjhtcEc0dDRFU2FDOWJjL21ua2xBTzN6NTZWdHJyVW5iVkhQYXd2Q3VsUHFYUGdiNTlCei9rVHhOcURYclc4SmV4Q2xCSUN5L3BGNVlET0s3K3Q1YVhTWFVrTjU1aVFTRkpqRXdPd2dBbGZZaklOZk5uMFZJUER5YW40bjFLelc0MCtPM2FEeWNqZTBtNWNjSGdEcHlUWFFMUDZaMDFMV0xQUzROREZySHFKSlc1ZWRXVkFBY2txcTg4cmc4MU5PMlVTaEpidFVtYng0djhBRitrZUVOTnVMM1VwcE43UjdZWVViNHB5ZWdUMzlUMEZmTmdPdWZTZjRubHVydzNUVzBLRm5NS05LTGFFZnFJdmM4OU81NU5TdkcycjNIMGkvU1ZEYlcxemJ2RXpSMmxxNk0zbEFmck1Nak9Na25wbXNsclAwanY0WHNMdndsNFdzRHA4RnN6UU5kcy82V1ZodzhoR09HUFk5aDBxUkV5dmpEeG5wUGc3dzlENFM4SGlhRzVqTGZXYmdzTjBURURQSTZ5SG9TUHM5QlhGMzNNeFlra25rbXNobzBkcmQ2MWF4NmhLWTdWNVFKR0o2QSsvenJQK0xOTEZvME1OdG9jZHJHOHUyRzVpbE1nbUhRQSsvZXFaNTR4eUxHKzVmREJLV041RjJLL0Nlb0tOSXZVdUlGbUdtajYvYjU3T1BoeDdqSkIrNnN6WXlhcmNSYUZOcGhWN0tiTDZpeHhocEMzeCtaOTNUMnFENGwwQ3dzOUNtYlQ0V2p1YkNTT0s2Y0UvcEF5akorVzZyOXo0WHRwOUEweExDSXhYa24xZjZ5VmMvRXNneGtqT09vcmw1SjRaL3dCempxZmRjYmZQenM2bU9HV0g5dm5wWFo4Ny9MeW85RmlOUVRURHBNWWx0clRWNW1iWVJpS1BlQ0NmUVlGWmJUN3lGL0oyM01pcGM2cmRDTUlCNWMzY0svOEF1bW9iYURveDhUYWJGYVdxbXp1YldaMmpWMnhJVk9Cbm1yQjBLd2xuME5yblN4WVQzRjRZM3N2TllxMGVEOFdNNUhRVlJLVUpxbTNXNzRWLyt1ZC9FdWpHY0hhU3ZaY3V2L1BHM2d6bmwyckM4bkRvcU1KR3lxOUZPZWdyTStIZkVjK2pTaU9WcDViSWlUOUFrN1I0WmxLN2dSMzU2ZDZ1NlRwOXBjK1BWMCthRVBhbTdrUXhrbkcwRnNEK0ZTUEYxZ3RoQkdFMFcyc1VNcktzc1Z6NWpPQjZqUEhyWFlXb2lweHgxdTFmYitUanZUeWNKWkwyVDh6SmVMUEJTMkdpMlhpYlRKN01hZmRCRWppaG1aMlp3UGlLNUdjNUJKSFVWSDhNZUpRa3NjVnl4RndHUlVrZWRsR0JrWS9BL2QxRlkvd2g0aXZOUDFTenMydTdsZFBlNVYzaWhsRWVId1ZEQm1CQy9hNTlhaWEvWXhhZGNXTDJvQ0Y3WkpuWmJ0SnN1U2NuSy9aNmREeUsyVFdPbUh4ZmNRYWJNc01xbDJoWUtTZDJEa2daejM3MXJHa2FURGQyclN6TUMyTWtzZVNheDlwcUxTV01KZVVsdko1SG5BODd6MjY5ZTNYdjBxVGJ5UnBuYXpLRDJWdUtpVFJrclhSWnJpM21sUldNYVNGQWNjVkFtMCtTeloyY0VBcTNYMkdmNlZ1M2h6WDRZTE9PeE1TdEFDU0Z4NjlUVld2SnBsOUtxeGtwYmVXeUZoMUxucmoySFRQcmtkcUJzd1BoNi92b2JDUVFrcXJTN3NaeDFWZWZ3eFN1cGZSWjRKaXR2QmFTYXJCbTR1WjVKbHlweUU0VmZ4QzUrK2xTSXM2WlhsWS84djZQdUsvbFN6TERxUE5ISDRWQnZ2RlZoRGQ2YmIyazBWMDk1ZUpibll4SVVFTVNjNHgySGZ2V0szc3daMW1BWDRpQXZxYXAyUnNRK09uVFBGVk1pN2djWklIVTlSV3ZYYzVtbGJERUxuQUdhNVh0TFh4MGNVNXJxdmhmTHViR0RFOGpwT2pOM2N6d29HalR6SFk3VlVldnJYTi9wVnM1OVF0OUVpWnpHOFYvNTdQSGdCRVZjbG1KNFVMMXlldlFWdDlqZVhDU2VTaERieHRYZWVGUHFLMG42VmI3VHRDMHlKdFFtdUpibTRTWVJScHlza21BRkxkaHRKSkdmZXRHT3Z5YXlQdk1LZmhYWmZ6ZjBwZDEzdTkwc2I2Wit2NE1rdHhGY29KWVpWbFE1RzljRUVnOVJqaXJMOHRpdWZlQWZHUnZaTFhTdFJ2R2t2SFIwU05ZZ0FNSFB4TjNiR1FNY0FEMXJvRWh6K0ZlWTFPa25wY3J4ek8zcHNxeXg2a1I1UmhpTTVxUEpzRVkydjhBSDNIYXJ6OWF0S29aaG5vRDByYTBrWFBKMFJYUDZlZjBOMWNGcHJoZ1I5bm4wN1ZEdUNONTNZT2Y4TlRMcEF6cUU2a2MxQytyeVNTRlYvVjcxM00vOVUyOExYWFQyZlBiMThpN0hYUEJCMUNhMnNyUTNNdHdvUUE3dHg2RC9yVXJSOWEwclQ0SlcwV1Z4SlBDc2N4aFlnZ2VoRGZaT2M5QldNMVZkUFpvYkRVbzFZVHZoQTNSaU8yZWdQSXIzU0xEVDdLOXZMUHpicUx6REdQT2tjeUE4a0FNRHlBUDYrMWRiMlJoVVgxVFZYMitYTzNQNDhqaGUzTTgzRHBoVkxsdGNYeDViL1h6TXRCUFltTXJIYXhCait2Y1NacEw1TTVVU1hsckVxOUZpaU9LbmFwNFVmU3JaTGllVlVRdnNETXlubnNjZGVheHJhTmNBWmpkSkY2NURWM2xMRzkxTDE5VHlPWERxbkRwOTJwTC93RFA3cUxUKzVkTUdub1AvUHU1OUZpcnhYMDVRQnN1WkR6bjRsV3JVZHRKQ0c4KzJkZ3crRmdoYkh5d2FzeEtQT1ZIZllwUHhGZ1R0SHk2MVBwVC93RFRmcnlPSHFFNE8vZEtOK1QvQVA2YkovNVZ2WFJVYTh1Q2lZQ3I1aEFBSFNwZHBhWFY5SUNVdUdqQTRrMlp4K0pBL2pVQzZleEN4eDJjVXU1Ujhjc3JjdjhBSmV3L2pYajNjOXdvV2FhU1JWNkIySkFxaWVKdFhCVWFVY25SS3NqczJhYlM3YUMyZ1NiVXJXUEJKWlNNdDhzTG1zMW9VT20yZ2trdDlTOHdzTmpLNUNEUHlOYUVrcFk1eVNjZzVIdFUreHVva3ZvcDdwQkxFSDNPckRPZjg2NVdwMGs1UWFjbitucjlUcmFiV1FVMDFGTDZ2MStoMHNTSmtZWmNrOERQV3FzWnF5SnJab1k3bmZHc1RBRlhPQjFxN3VYSERBL2RYbUpSbzlQRnBsdnpVODB4OVdIcFZFOXI1a0FBR0dIUWsxWmxjcGRBUUpobTVacW5FcXA0SnJUaldicWhOY0ZuK05ORVNLSklmOVlBT2NxVjZWZGpuUW96YmdRRzJqRmVYZngyc2c1TlVSZ0FLY2M0NXJUMUdlV2phaEJiRTR4VTkyWDk0ak8vcTVBV3JjWitMa21yT3B6QmRtQ1EzV29xMzRrbDI3Z0Izem1xZmFHZHZPbkhpUGI4L3FXUWp0UmZ2SnhaN3JvNUpPUUZ6MWFvV29hbkpMYm8wUHc5QVI2NUhQOEFXb1YvZWZXNUR6aGM0VWYxckh5U01KcytnQXhYVDBHUllZZGIzVW1yK3Q3L0FEMnYxWjBjT2xXemx5ZXpYRTBNeXZFeklnSVlxRzYxZUdxRzVqTUNSckRCNWdlWHkxQU1uL1o2MUJuY015a0tHSlBLMTdQSTFuZENSbzBWSEdkaW5OZFRUNTQ0TlRLVUpMb2JUZEx4VHI2YjhjbG1UU1k4aVVaUnRwYmIvTHpKc1N3UnNWVlAwZk8wSHBVSkZ0NE5jVmRnQWtYY3YrNmZhdmZ5bkFyN2dwT1R3bU9LaFBjdEZmRzZ1WVEyQmdSK25welhTMVdxd3k2WlJhZE5iODBTeDZlU1RpazE4TlZmNmY3TmtWK3ZYM3JYcE5lZ2pOMUQ1Y3JMeUltUmprbjN6MHF5bXV6S0dXWkZrUmtQSFFqNzZ4VUZ6RERITUpiZEpXa1hDRS9xSFBhdGZOcm96Y2ZkdXVidEZ1SFFOZFhXbStLcCt1RDJPOXR6YVhLM2NiejNMZ0JKQ1NkdU8xUmpQWkhUWlkzdHYvR00rNUpRY0JCNllxcU80aWl0WjRtdGtsa2NBSkllcVZhRnhFTENTM051aGxkd3l6azhxUFN0V005bHV1SDI5Ym5VV0xkMG55dS95OCtQRmQvQXBhYXovSnF3aTFQMXNTYmpNVzQyMVcrcGo4bVdOckQ5WVNhMmRuM0NVNHllNmpzZWxXNWJ0RzA2TzE4aFRLc2hZVFp5UXY4QWh4VUZSbGgwejcxWjF0Y2VIcjYrWmREQ3BieVQyYmZQMCsza1FmR0dxNlRDTFNhVFJKYnZVSTRsVjU1bU8zcjhQT2MrdkZZSVhQaWU4Wi9xR2hTd3N4QjNRUU1vWDhjYys1eldiOFQ2YmFYdW14M1YzY1NRSmJFc1dpQUxIUG9NanZnMXoyNzFXOWp1Skk3YlY3MmFEUHd1WkdYY1BsbXV0cHY3a0UxeWVYOW8zZ3l1TGV6M1ZWZS82bTY2YmIzOXUyb3I0aXVvYmFOclJSTVByQ3RNRjh5TWtoY25ISHQ2VkZUVE5BaDhlYVhIcGR4Y3k2ZGpNcy94bFE0RE1kcmJja1lBN0h2V3NXZDlkVzhVOGwxTk9MZlVZMmhsbENoM2tBSVBWdmNEUHRXUjhKWHp0NHkwWXlYdHlWam1YbG16dE9EMEdlZmwzNlZ0eFRSeU1rMDF4OStTL3dDTWRIdkxIVVJyV3lSb0xweElYd0ZLU0g0c01GK3dTTUVEZzgrMVIvRVhpdVB4TFl3Zlc3R0tLL2hJWHo0VkM3a0FBRzdqY3h3QnlTYTJTNDhNblRvN2lUU3RXam1pdjRXYWF3dW9HYVhiendRdVFTQ001NFBmMXJtN0k0WE9DVkJ4dXh4bXBsQmVzSnJlM3U0NWJxMytzMjZuNG90NVhkeDYxc3Y1MjJVTWRqYTJlbE5IWTIxeUxsbzNuM003RG9Na2NETmFnU2E4eWZXcXNtQ0dSM0w4bDJQUFBHcWorRWROMDYrMVhYZE4xT1M1dkxLZXl1b214QkxkYkd0UVc0SitFOFZldHJ1K2hFbW9MTnBrVnViWVdDdExka0Juai9YVTdlUnowclVQRHQ1Ylcya2EvSFBPa2J6MmdTSldPQzdiczRGWjNSTlF0aDRSdGJWZFEwbUs0V2FRc3Q4bS9Dbm9RT3hybFpzSFE1VXRyUzQ3Vi94SFZ3NSt0UnQ3MDN6M3YvckplalNYei9tN05iMnNOd2tjTTlzSFdjZ0E0NUxIYjhPTWUrZUt4bmgvUnJvYWpCcks2bnA4NjJybDVGZTVZRlJram5JT0JVblF0UjB2UzlIWFRibS9qWnRUZVFUU1JTZkRhcmdoVDdackRhUE5iV0dtZUk3V1M3aExQQUk0aUd5SlNHL1Y5ZldwcU12alVWWGJqbE51L3dBL3VSYzQvQTVPKy9QRFNWZmdsWEhpRFM3RHhDbDdhNlNvdVlMbHBIbGp1eTZ5OWM0eU9NazV6V0kxblV0TDFCQ2JQU0d0SjJrTHZJYmd2dXoyeGlzSms1NjF2dmgzd0hxWDVFZnhUZmFaSGNhYkZHWlVnbXVGaDgxZW0vSk9kb1BUajRqeFhRaHBvUWFlOXJ6ZjhuT25xWnpUVzFQeVg4R084TWFLMEVsdnJWL0hNbG5GT20xa1dNOVZaZ1NISUdQaDc5YXhONWRYR3Y2alpRUW9aWmZManRvVkVTSVdQWVlVRE9TVDE1cWk0dUpOUXVQcTlyYnFGbGRXRVVVSUJMQmNjRGs0Nm5HYXl2aCsyRUdxV0dFa1l5VDJ6N3BMYkdDekhnTVQwUDhBL2I3cXZOY3J0YkpZWkh0THBudDNXSFo4YUtEdURuMEdlM2ZudDBxWU5JbUhNZDFFNjljNDZmeC9sWFI5TThMNmI0dCtrenhOWjMxc0pJNEh0ejVzWk1jbU1NR09SeHkyTTl1Qml0aWwrZ25SR2NiTlYxRkVIRzNDRTllY25HVFdLSkpuSFlHK3B0OGN1N0grRTEwVHdQNE92ZkZGM0ZxVitqUmFWSGpBSzdmTngrcXZ0NzF2bWlmUlQ0VTBhWlovcWtsN09weUd1MzNnZSswWUZicVBLaFVjTEhFblBZQlFQNUNpTU5uenI0dzE2K1R4dnJjTmhxMTBMV0c1RVVhUTNCQ0lCR2dLZ0E0QUJ5TVVyVG1rU1RXTlpralpURytvenNwVTVCRzdqRkt5WU4yMUx3QjRndUx1OWp1ZkhTK1NsNnRxOFNDNGZaTEtRVVVnQURvdzU2Q3N6NGN0ZGQ4Q0xCcDJuYWxCcVVFbW9UUVR4M1ZxOGFwS2dUTDcyeVFvNEFQUTdzK2xhaW1yNnBxR3FxeTMrb3lDNjhVN01KSzJUR3VNRDB4eVB3cWpVOVN2cjYzMFNDV0NheWl1dGZrYjZzUy9LaG84RmkzTEhKUHQ3VlhOejRpdnI2OWVabFVkQ3V2cFJ2VXZiblQvQU1wYVNsekdzcW9JN09jdVpWK3lteHNaQno5b2VtUGV0M2ExdVZpUm1qWml5S3hLcnhrZ0UveHpXai9Uc1pZTk0wT08zbTJOTmZsWEpjQ1IxT0JqUFVqbnA4cTZUZjNqMlpTMmd3Q3FnRmp6eDByaCsyTk5obGg2OVJOMHVQRy9sdHoreHRhYWNsS29JczZWWXY4QVdQUGtRb3FnN2M4YzF5RC9BRWc1REZlYVJCQ2R4dVlwZHlrYnMvRWdHQjJQR00vT3VzMjJxeXhUNWtPOVc0UGJIdldsZU5kTmgxTDZUUERrbHdFOG1DeWxuVldZZkhMdXlBQjN4OXI3cW85bTZqUjR0STNqVjlGeWQ4MzIrNjI4aXpORExMS2srK3hvdmdMd1BxMmphbERxZXBMQkVubHR0aEJ5NnNSZ0hqZ0hCUGZ2WFE1T3RTcFRVV1E4MTV2VTZ2SnE4dnZNblBrZHJUWVk0bzlNU0svVTFZSUlJUFQzcSs1NU5SWEpxekMrbHBtL0V0VFNNSDRJUHVCVVV6T2hKVnV0UTlYMTJ5MGlXSkwxbWpXVTRFbkJIdjc1KzZySzZsdjFGN1dXRFlnR1VsRGh0dytYWDArWGV1NURCcTUvM1ZhWFBOZVhkLzdNUjFPQlM2TDM0THQ3cHNXcldNOXZQQVpTZmlSd2NHTmgwSTlEVVR3ZkJjNml0NmJ2NGZxT3crWTB5ekYrdjJ0b0JJRzNuaklIYmlzamNUTmJReUNLUldHTTRKd2MrbWZlcFBnYlZMYTJ2YjZhV0Y3V1Q0RmJkRWtxSTR5V3lGNXl3T01qMHJzK3o5UzhIOXZkK1BIcjZuTjlzYUtPZFJuR3VydHp2L3p3Sm11UzNLNlBGYTNGcURDczVrdHAwa0REQlg0Z2NFOVNjaXNBanNtZHJzTzJBZURXVDFpU3h0NzJhR3lVU1d6djVnNUpRcGo0Y0UvRUNNbklQZnA2VmlDUVRsUTIzdG5tdlVZSXIzYVNXeDRmWEtUeXViYjZ1OTdOUDEvd3Jzdk1zeHRTNnVHNStIYytkdnNQYXBEM010d1I1c2pQai9GVVpUa1lxWDVNUklCazhwdi9BTGcrSDhSV1hHTWV4elpyTGtUWFY4OStmMkpDMnNNVW1McTZTTTR6dGlIbU1mdzQvalhzTXRwSGV4UDVjcGhSZ2RyRUVzQWUvYW9RK0ZpdWMrNE9SWG9QTlFjTDVaemNzYWV5NE9uNkxxZWkzOGs4MXJCRmF6SEFaSkFxa3FPL3BqcldwNjY5bWRZbStvbEREeG5aOW5kam5GYStEa2M4MWVqZXRDT2hXUEk1eGJwOWpZeSswWlpjYXh5aWsxM003YVh6SWJiNjZXbXRvYzdJQ1FlM1hIK2RaWWVLcm9SQlZpaUREMVVoVjloenpXdFdNUDF5Nmp0L05XTXlIRzl1Z3EvTkdsdmR2Q0pOeXFkcGNISUo5cTBzK214eWxVa2JlRFU1WXc2b3ZiZzNDdzErR2FYYmNNRjRBOC9HQVNlM3NLenluS2pHTWRzVnpNTUFBcEFKOWMrMWJOb1U4MEVVUmVXVXhPZHF3a1pMSHV3OUZIVE5jYlZhS01GMVEyT3pwZFk1dnBrYlBtdkNSeUNhcy9XSW5qWmtrVTRPTTU2SEhRKzlRV3VDa1R5czJ3cmtuUDZveHpYRnpaVkdTeDFiZlk2a2QxMVhzZVhFeFNPYTRtSUNJckVzM1JRT3ByRS9YMm5oS2hDSXQyWXlUeTY0R0dQOUttenlic1d3blE4anEyTTU2ZmR6VWE3dGZJeCtrRERIUHpyanZCbHh5dkpING5iWDVPbHBsQnRPN0lrb2FkaVVYTzBjL0tvcENTYjJhUlZLcmxjZy9GN1ZJWTVCQ01keDdEdjg2aFRFUlNyRkl3V1Joa0tTQVQ4aDNyYm5rbmtYVTkyK2VLOGpwUThDUElDdmJCOTZzeU1TTVpKOXpWOXlXUEpKK2RSMzYxbURhNE51SmJTVHlwMGsycWRwemhoeDk5ZVBLWXB4Y0txeUkyY3F3NEI5S3BlcUVjS1NqL1lmcjdIc2Ezc0dScGRQMitaTndUMzlVV1k3aG9tWmlxU1pVcUE0emo1VllTYnlsbVVSeHR2WGJseDluM0h2VlRqR1JWaHF0ak9TTDFqaSszSVdjUjIwc1hreHQ1bU9XR1N1UFNvalZkYXJMVmNtMmtpK0VVbTJ1NWFicFhrU2xwVVhwdVlBWjQ2MTYzVHBXUzBHQ0s0dTVrYTd0N2FieXo1YjNCd2g5VlBibjNxK0N0cEVwejZJT1JvUGo5YlF5UEMxNG92N0dacmVXMjVQSTY0N2NldmV0WTBFMjMxL0YzYVBkUWxkcGpTUGVlZTQ1Qkh6cktlSnRMZVh4RGZTTmN3QXozRGxBWFpneHpncUc2WkI0NTlxa1dHZ3lhSm9VdXZ6WDV0cnVKbE52QWpENG1EZEg1NUh0WGV4OUVNYWltZUh6Kzl6YWg1SnhXM05jYmZVeXVuSHc0ZFNpMHJUL0QxN2QzY2pzRitzTkVNNXlmdE1EMEdmd3E0ZFlHbGVJVzBkYkk2ZmNSenFwbGU0alpFSFZ1RlJjNVU0NFBIenJYTHJ4OXJ0NUx2dUowYkRoMUNwdDJrZE1FWUlxZHBmakhVTC9WNHhQcytOaTBqY25kaFNPYzV6MitlS3NqRjl6WHlaWU5WRi9vamN0UjhRMkY3WlFHeWp2RTFHSWxMZVdMemR5WkhMbVE3ZUJqN1BPZWVsYzExcTMxK3c4NkRVYlc5dDRaNUJjRkpvaWl1VG5EWTkrM05ienFsL1A1YXo2NTVqUVNZQ1NTWFJiZUViQ2dxdkxEam9jWUZkQjErM24xYndSQTJyL2xZeS9WMnQ3T3pFb1M1djNjZ2dHSmNoVkFBR1NOMjFTVGlyVWFydnVmTTdkYThxVGZXVTloZlRXbHl1eWVGekhJdWM0WWNFY1ZHb1lGS1VvQlh1RFFETmJQNFU4UFd1cXpOSnFGL2FXdHVoS3N0eEswWlB3TTJSZ0hwajc2QXpuaEw2UE5RdXRBbDhWWFRXY05yYWtTMjl2ZmdpTzcyOHNHT1J0VWdZQlBVMWM4VytPOWIra2k2c3REMDJ5ZUcxd0Zqc29zWmtmR1NXSXdObzdEb01ackNhaDRtMWp4QnA5bG9GdDVyVzhFS1FHT0F1L3dCWThzdHRkaDE0REhqdCtGYjE0R2l0L0JQaWl5V3dTNzFxNTFEUzVWbmh0N1VobG1CeUZRdUJoY2RXL0h0UUhMbnRSYVJLSlhpUXRMaFppalo0WDRnTUhvQ1FQNGppcGZobTlBOFVhS1JFaTdMeTIrSlMyZmhrQnp5Y2MvMDRxQmVSK2V3TFNXOGI3cE1xWEpaZHA0RGZ5SHlxTlkzY21uWDl2ZVE0ODZDVlpZODlNcVFSL0VVQjFmNkxOVVdiNmI3dVY1ZHEzaHVsUmQyQVRrbFIvRGl2cEpwNFUrM0xHdjhBeE9CL092alB3bHFNaStPN0hVMklFb3VHdUNSd0EyR2IrZFlqVTlYdnRaMUNlK3Y3aVNlNW5Zczd1ZXArWFNnUHVaV1ZnQ3JBZzlDRG5OWXp4S1NQQzJya0RKK296WS9jYXVSZlFKNG8xWFZiblZOTzFMVVpiaTN0cmFKb0ZtY0h5c01Wd1BiR0s2NzRna2pQaHJWUDBpRWZWSnVqRDltMUFmSWZoLzhBOGcvL0FEVC9BUGlLVThQL0FQa0g3L3BUMCtRcFFHNTJPcGFxOTlvenRlWDBpU2F0ZVNTTUpXd3dVS0FweHhqNGVudlVEU3BMcTd2L0FBQkRjelRQTk5xRWtqQ1J5eENtWkFCejIrRHBXU0dzYXNOUTAwZmxHOGYvQU1KcU55eUxLM3hZYVVMd091Tm9xancxOVl2UEhmMGN3M1R5U1RKRjV6bVFrc2Ywc3JjNTU3VUJ1bjB6aEc4VStCdE5RWVJyc3RqT2VzaUN1dGFqWWZXbVo0MkFrR1JnOSthNVA5SmVMdjZaZkFWb1JrTElqa2YvQVBVSC93RHpXa1gzMDFlTU5MOFQ2aWtONURjMlNYa3F4dzNFQ2tCQTVBR1JnOVBldGZVNmJIcWNieFpWYVpPRTNDWFZFN2hOQzBKdzJOd2JHTTlQbld1YXhiaC9GVU92elFSdGIyMm5tRGwrWWp2TE0zUGJhZVQxRllQU1BwZjB6eERzT293dzZZMlJHelBPQ3BZcXpGdVFNTGtZNzlSV2QxVFVMZTg4T1g5eFlOYTZncTI3a0p2RFJ1UXArRTQ3VjRUUGh6YUxQUEJGTlJsUythK2ZyN0hZeHlobGlwdmxia0xTdFVudXhPOTdjYWQ1Y2twK3AvVnB3MitNZHo3OGlwemtIb2EwWHduNEF0RHA4T3BhcWtqejNDR1JiVURZa0FjY2dBZHlNZkw1aXRyMXJVb05FMG1TOW0ycEZEdHpuSjR5QmdZOXVsUjFHSEY3L3dCM2dkdmppbDlOemQwODVkSFZrVkY2VHFhalBVZlROY3NOZWdlNDA2Y3l4byt4OHFWSU9NamcxZmVrWVN4eTZacW1qZnhTVWxjWGFNVHEraldPc3dwRGVvenhvMjhLcmJmaTZaejFxcGJhQzNoaFNPTGQ1QzdJMmY0bUE2WS9DcFRrazRVRW1zRDRrUzV1ZE5sczdHUmx2V3cwWWpmYTJBZVNUMkZkYlM1cHRyR250NWs1UmpCU3lWYi9BRmZrYTNjYTg4dXRUMlRSUUpmcEtZandQTHVsN0syZVEzb2Z1cmIvQUF2R2xwb3V0emExQk5GYzNiUlBaU3ZickhKdUFQT1VKSGZIUE5jNjBIUnRRMHZ4REJxRnpIYk8xaktzOGtVazR5U0RrWngxNXhYUXJiVXJDNDA3eERlMzhWbkRjUkxHOERXOE1rSTNra2tiVzY0VVk0eWUrSzlmcHNjWVpGSitYQjVEVjVzbVNIeGVMcjE0ci91L045Yi9BT3NwNU4wcXQvOEFjVDdRcTNKYmVXZ2xSeExiay9iWHQ5M3JWcXp0MnZNaUxCNDNaUEhlclJES3hCUE9lY2UxZHBSU2RST1pubE9lTlR6UnUrSDMyL1A1OHlZa1VKVXNKZ1Flamp0N0ZlbytmTldjN1R4VnJKTlZ4ODlja0RxQjZWbXFPVm1TbFZLaTRySDIvQ3F3Mk9UMHFSYjJKdUEwc1JhYUpSOFFqeHZYNXIzKzZvM0lKQjZnMUJOUzROTE5nbEhkcmt2WXdBZHluUHAycXBUM3F5Q2ZXcTFZOU9wNjRyRFJ6c21Na0kxU1lpR2NESUFKNUpIVC92MHJGWCtwNlpZWFZ2QWw4SjJuajNyNWFrNHdNc0RqMHdSVTZLWm9wY3EyMTE1R09vNmpQOEQrRmFrMHBMWXNqREpqM2tuWGoyKzVrR0lqbWRVREFBNEFrNmpqcWY4QXZpc3V0MUxiVzhnbGZkUEpCdHl4L3dCV25aZm1heGovQUZPM2FGNEozbkJqM01yREdHOUQ3ZDZ4MnE2akpiMlVreU9xVFpSV2RnV0FMRURlNEI2QUhKOXE1bVhGMUszd2RURE54bDBybjlESU5xZmlPMGxSZExqMG1XM0RuZkZlSTdNNElIT1IwUGFyemVMN2w5WmgwTzcwcVczdGIxakdMamNIak1tT01Od3lnRVl3UVNSanBWdTJtVnN6MjExQmRMR3dCbWdiS0Z2YjJ6VTU3R3l2YnFOU3hkUDlkZ25CVndjakJIdlhPenh4d2k4dGJwTjMzNC81c3pyNmFlU1VsaWZGMVgxR3BTcEJweVNYaFcyK3FnSkpKTU5vd1RnSEo5eUJXTDhKNnorY01PcWFnWlF3RjYwQ0FIaFVSVkMvaU1uTlo3eEZHMnA2WkpieXlBeHNZd3drVHpGS2h3U052b1J4V25heHE5cmFYY3R0NFJzNERxOGJxa2xwRnQyVFJqT1FRRHhqMTRQSGNWd2Ntci8rd3hyRGpodmYwWEhQay84QXAydFBwRm81dkxLVzFHNG1VTEdVQ2pmdXlIL3BYT1o3blV4NDhlYldyeUNDemljclpDWGFyU0tXQUdPNXpuR2ZhcCttZlNGcE4xbzBsemYzSDFTNmhKU1dGMExFTjdCZW96bjNySlhlbDJ1clgxdmZtVnBvUUZjQWxsQUdNakM4WXljRWhzOUtwMCtQSm9wVGptVkoydUw3ZHZ4Zm1kUnlqbmluajUyZi9USXR4VWQrdWFrUFVkNjBvSFdpV0hxTy92elY5NnNQV3pBdmlXWHF3MVgzcXcxYk1TNkpaYXJZWUtUOEN1U0NNTm5qSXdEOTNXcmpWWmF0aUxvdHExVElzS3l4MjZMUEo1a2lnQXVCamNmV3R1OEU2UkZyTU9xdzNEeHBBcW92bkhHNkdVSGNwQVBiSFd0V2JpdkVkZzZrTVFRYzlhMnNVMUdYVkpXUXo0WlpNWFJDVlBiZm5qNm1MMWlIUnA5RWx2THZmNVV6aFRPRDhlN0pBYjBKSFBIcHhXcTZqWnhXdW5RYU11bWViZnl6QXdYNEp4TWg2QmZ4eFd6NmxiSFNyZFp0UDhQdzNpQXRMSVpHTEJENjdjMXFkNzRrMVBYTE9XRzZWbmpqSWVQeUUyaUpoM09CMHhtdXRwcmF0Y2ZNOHY3UzZZUzZacXBWV3k1OGQybCtuQk04US9SN2ZhRHAxdmVtNVM2RXNpeE5IR2hESzVIUWV2UEhGVHRLOEVYMmtlTTlKc2J1OFNLNXVrTTBEUUo1b1ZoMFdSVGo0Y2pCclV4cVdyWGQ1Q1Z1N3lhNFZ3MFdKR1pnM1lyNzF1LzBkZUxuc1BHRWo2N2M0U2FEeUdudUY1aElPVkJQNm9Kem4zNjF0L0dsdXpsZjJaVDJWSXMrSzRQRk9sK01rYlZYc1VudkkvMGNrU0JiY29RVklCSStIZ1lQZXZvSHdsNFV0N1JMWFdyaTZrdXRRbHNvMEVyL0FLbTVRWDIvUENqMlZRQjN6eHZ4aDQ4dlpQcEJpdGRKMU8zTmxDMFFXVlkwZGR3R1NOeEJ5TW5wMHF6bzNqN1gvRXYwajJsczJyYWhZNmRLNFI3ZTJ1Q2l4b2lmRS8yY0Q3SllqR08zU3B4dXR5aklrcE9qMzZlTFRSTER4UEhIWVJoZFJ1YzNWNHdQVElDcXVPMzJTMzMrOWNpUFd0cjhkWGQ1cS9pQ1hYN21BeHdhaXpOYXN3d1pJa3dnWSt1Y2RlNXpXc3BDenE3cU1oRnkzSUhmRlpJRkczcjFySXdhT1p0SS9LSXVvUkd0eDVFc2Vmamp5dVZZai9DY0VaOVJWZWpXOHMwOHdqU0psTnRNY1Nna2ZDaEo2ZHdPUjcxY2JSNzYzc3JhZTNkWlByVnMwelJSdDhhUmdrSGN2cHhuTkFZamdIdldiMW5XTG5YdFNrbEFVRm8wUnhDaFZYVkJ3U08yQU92MzFnKzFkYzhINmZwZWgyZGxjdDVNMTVKY3lKTmNKcWtjUUVaaU9BUm5oZlk5eDhxQXpmMGVRNkQ0SnRVMUs3VzludXJpMFc2ZTQrcFNiWVl3eEIyRURPT1JuMXdEMHFqeDE0bHRkUTFxenVMRzcxU3h1ckcxTVMrVmF6Q1JKSkpWWlJnZ1ozS0c0emc0eFhQcnEvWnJVVytqU2FoRXNlbk1MbUpkUTN4b04rVzlBQjArRWR6VVMrZzF1RzdtaXU3Z3RKOVl0eElVdncyV0s1VEIzSE9CK3QrcjdWa3dZKzVsa0xMdG1uWjk5eG5kYXF2WHFmZlBmL0QyckROMXJKeS9vSTBlV09Ra3RNcGI2eUNXYnAyNmRlZjhWWXh1dFlNbHlDZDdlVlpJemhobkgzakg5YXRVcFFGeEpwSTBaRWRsVnNiZ0RqT0t1MjkvYzJzb2tobWRHQUlCQjZaQkIvZ1NLalVvRFp2RC9OaElmL3VuK1FwVHc5L3M5LzhBbW4rUXBRRzRYbXZhbkZjU0JkUm54SG9FMGgyeWNoMmtmQjQ2SDRoV1U4RkdXKyttRHdtODhzazBzT2pwSTd5SGN4SmlkdVQvQU8rc1pyK3VheFozZmlKSkx4bGxzOVBnaXlxSXBWMmtqUFllaElyUCtCYmFUVVBwcm5TU2FaV2cwZUlOS3BBZklpaEhYcHpuK2RBWm54YTMxai9TTThMUlk0dDdRU2ZnSlcvcFh6eGV5K2ZmVHpmdEpHYjhTVFgwRHJjb2YvU05lUTlMUFNIYjVZZ1kvd0QrcStmRGJTL1YwdUN2Nk4yS3FjOVNBQ2Y1aWxnelhoNWd1dGFlTFdPM3VMa3R1Q1hHRVVTWUlVWlBCNXdjSHFjQ3RvMHJ4bHB1bmVHaFlqVC9BQ2RTVzdqbnVaTWxUS3drSkpVS09vSEdEZ1k5YTBDM21hSHpDcXhrbENwTERPTTl4NkgzcnBmZy9SVzA3dysrdHgyaTZ2ZFgwRWtVVVVMTHZ0ZnRBazdqMzc0NUZjejJoREdvOVdSWHhTdXJhdDd2aWt0OS9EdWJHQnl1bzdIVHJMVzlMMWUzYTRzTDZDYUVBTXhWeGxNLzRoMUgzMW8vMGdlSjdFMlowV0ZFdjU3akt5UlJQa3g0K3llUDFzODQ3Z1Z5S0M0bXNKaEpHeFNWVGpheTVCSHVEMXJxL3dCR09odzIrbFQ2ak5BUHJ6eWxBemptTkFBUmowem5PZmxYR3kreThQczUvd0JSS1RrbHd1Ti9OK1Iwc1dxeWFuKzBsVjhzMGp3L0xmMlVrOGR0ZlIyWkMrWkpETzVpTTNZTHV4eDYxMWZTcDVyclRZSlptVm1aQmxncEJKeHprSGtjNTQ5QldLK2tXMXQyOE1UM2JBck5HNkZIUTdTVHU2SEgydlhtdDMranJTdE51ZkFkblBxOFhsc242SVNUM0JERVo0SjZZem5nYzhZclplTiswc1h2WUpKMzMrWGpXNVBIbFdoeWRFN2FydC8wNUg5SlYzY1cxMXBnaGxsaC9SeUhjakZjOGdmZlZYaEc5djd3VHpXMXJHOExGSTNNbHdkNFlEa2pqN1BOWlg2ZDRMSk5iMGFIUzFEUkMwYzRqSmNINCtjSHYwT2Z2clJ2Q212UWFScUxHNFJoRk5INWJ1dVdJT2M1eFhTbHBuRFNlN2lyYVJyNE5VcGEzM2tuVVcvdCtUWjlZOEpwZTZ4YVR3Q0pYdUpsdHpFekVJU1RoQ1NPUjc5cXE4UTZLL2c0UnRkUkY1dGo3VElaTU02a0E3ZDVPZXZVQWRNVmR1UEU4TjVxV24yZWxGNWJscnFOd2R1ekcwN3VyQTg1SHBWSGpQVnRSOFl2QXVzRm81N1lPSTh4aGRvYkhVQURQU3RuMmRMTDdwZFNwK2ZnVmUxVmhlb3ZFN1Q1cml5alJkYmUrczNlenQzakVZSUFlWHEzcDhxekVaWXhvWk1COW8zQWRqMytkY3UwblU1dEh2WE1ZODFUbFRHRHd4N0VmZld6Mi9pMjN0NHd0ekkxdzdEY3hSUW9VbjlYbnJqMXJ0NGRUR3ZpZTV4OG1OdmcyNFZlaG1WRjJ2R0hCUHJnZ2V4L3pyVzRQRTlySkpaSUV4SmR5aE5vY0hZQzJOelZzY2lMYWFSYzZwY0k1czdkMGpka0g2ek5nZnpCcTk1SU5QYzFYamtuc2lxT1I0NUZlTjJSbE9WWlRnaXB4MWV6dnJpSzMxSlN0eTZrcmN3QUI4RHV5ZnJqM0dEV1YxbUh3MW9kdWp5d1hYMVR5QVo3eHBpUkM3TGxRVkE2NUk0cm5sNlJyR2gyOTViSUd1UWdsQUQ3Wkl4eUR0STcrbnJWVGxHVzY1S1hpbEhaOFA3RzZ0cEpXUWxMMjBlMzh0cFJPczJVSVhybnVwN2M5SzEvVnRRUzB2VnNiT1R6cHpGRkxHMzZybDFEbU0ramJmNGpyVTdTVWcxSFFiV2UybUphNDgyT2NCZHJFRUlBU1BjN3Zicld0ZU9yU1BUTlZsK3FYMFVWM2FKQk8wRWdBTEhZTUVIb2VEMHFpV1Y5VldSL29zYmgxTmJ0K3ZvWVBVVnZTYlp6ZHczYXovV0FQcTV3UXhYbkl4a1k3MXZWa2ZxbWoyYzhnTWszNU9paWpqaVB3eXlmWEpJK3ZiZ25uMnJUUHlmcUd0dmI2M3BTTFpYTERMNU8zYy9UY3A3Zy93QTY2QjRVVyt2SjlFczlTVW01VUNPNUl4Z2dYZTljRWNEN1FQSE5VU1RpK3BHemo2TXNmY1RyNWQ3OWQwWXVQeG5vN1FTU0dkOTBYK3NpOHNsMTdIN2hWTTFscE92alVCbzEyMFp2RmpOM01wTGNnL1pIVEdSMUhiaXRkMHZ3ZkhmejNkeGVxWTErc3lCUjlvdU54NTY0QS9qVzM2VFoyV2l4RzBpZUpES3hZWndyTjkzZjdxeTRTa3JaeU1zc0duazRZWlBxUkkwalM0L0Q5dGRSeHptUzJIeDI2U3pGRmh6MVU5aU04NTY1ckErSXZFdXI2VjRpMHRKekhCWm9CY2xyU1RjWmNjRVpZZk1ZOTZ5V3U2dEI5U05zakxJV0s3dGtxQUtNL3dERU9hMFRYYnl4bjF0M2xGNU12a2JJVEpOdVdKdWU0SnlCNkFqNVZxenh4ZTBsYU9ub2V1ZFpaSFMvRU9yM2VwK0d0UnV0TjFCSmJaTFE1V0J2TFlFZ0hjSEE1K0U4clhQclczMDkvQmE2aE5ienhYc3M1Y1hZZFVMQkJobFJ5ZXBIYkhXb0YzclVlbGZsRzEwbTVSN1M5aUFaY1A4QUZrOGdjNFUvME9LMWN2STBTeGwyMkRsVkpPQm5yaXRiSG84V0tQVGpTajhqcWRXUnU1U3YrRGQ3YlU1TkVzSTdtNXQ1cnN6Ylo3Wko5elJSUmc3UVpGd0F6RGdqc1NSNlZ2WGgvd0FRNlN5V3RwWk9iaWU5ZG1Na2txbWVSaDFrbEJQdzlPRkdlSzQ0TDY1dWRQbmpudXBwZjlXaUs4aE9CazhBZW5BcmZOTjB2OHp0S3NKSlNpNnBxYjRrM0tDOE1BVWtoZlE5TW4xclE5b2FlR1NLaEovRTNTWGozK3k5Y20vb3Nrc2Jja3RsejY4emRkYzhVYVRvTEJMNjYyeXNDZktSZHpkdW9IVDc2eDE1cUdwenhhYnJGdGNXVU9qZ0I3cEVrM3lGVGpPNGtZR005QjcxcFBpSFQzMVdIUzJETGJpY21PRVN0dUJ5UUF1N0o1NjV5QjA2bW9Wdm90NW8zaWxkRW51Vmx0OGZXSmtpWW1PUlZVdDhTL2RqbXFJK3pkUGhnNDNjNnQzdnN1YTlNMi82ek5rbW5WUnZ0NHZpemZOSThWUTY3cmVvV01TSzBjUHhSVG9TUkl1Y0U4OUt5WDVRdFpKWllrbVF5UlNDSjE3cXhHUU1lOWNvOEQza3R2NHR0VlQ3RndXamRjNEdDQ2Y0VkZtOFFYMXRyVi9lMnptS1M2ZHZNWEdkdnhaR1BjWUdEU2ZzbFBNNHdkSkpQOXYyWnM0dmF2VGlVcHEyMi9YNm82MWRYQWlrVkVWbmtYRG1KUHRGTTdjKzR6VlRkQmpvT2xjdHZ2RnMycVc5b3NyUGIzTVc4U1hNWFZ3ZVFNZW1RTTF2WGgzVjMxalJvcm1jcWJqZVVrMnJnWkgvQUV4V3ZtMFdURGpVcEhUMGZ0REhueXVFZm1qSk5WbHFSWE1OeWpQRElIVldLRWpwa2RhTngxei9BSlZWVFRwblV4eVVrcFI0TFRkS3N5VFIyOFptbGNKR295V1k0RlZYTXlXOXU4MGh3aUFzU09lQjFyVmJueExhM1VFa0p0OTdNZjBPUnVHNzlYUFBYUDNWdDRNRThuQzJLZFZyY1dtajhjcWJXeDZQcEJkSnBVTmt2bFlJamJlY2ozSTcxcStuNnhlNmNMaExjcTBWeXV5YUpseXNnNjRQZjhLeStrcGJyNHJzcm00amdXMm1MdElreWd4cXdVNzFJUHYwK1lxL2U2cEZEb0F2ZE10VXRaRnZzUlhQbEtzdXd4SEtnZ0FZem4xcnVZOFVJcjRVZUsxR3B6Wkoza2xkZnVVZUhkWHNvZFdzamJoOVB1UFBYWSsxWjBVbkF6OFdHWHI2bXVsMzMwWHkzbXEzVjdhNjdOYUM4amRMeDVFM05KdVBUc052RmNJTWhEWkJ3d09jOTYzTzUrbERYTHZ3eEpva3kyNVdTTVJQY0JTSkdUMDY0engxeFVwUWQzRXJ4NW9kRGprWHlLTlB2ckh3L3B1czZkZTZKYjNsNHpOOVMxQnp0Q2xEdEpYUDJoeGtBZCtEV044SnhXOS80d3NFMU83RnZaejNLcGN6bVFKaEcrMENjOEFqSSsrc05OZlhOemJ3UVRYRWp3d0JoRkd6RXJHQ2NuYU8yVHpWcHBDVVZjamdrakF4MXF3MW16b3YwMDZ4QnFIaldPMHNwYlY5TnNiV09LMStyWUtoU29KR1J3Y0g4SzU0azJ4SFRaRzI5ZHU1aGtyem5JOUt0SEdlSzhySmd6T242azJuNmJQNUQycXpTbG9UdWpZeWVXNkZXK0xwdDl1dWNHcVd2WXBkT3RZV2d0QTF2SEl2d0t5eVBsZ2N1dysxMU9QWVZFUzZ4cDV0eExLQ1pkK3pqWjlralBybnQ4cWx3dzc3V0g5SGU4Mjh6WmpqWGFjSHNlcFhqbjA3VUJpeU1uZzEwdURVTkw4KzBMUDRaR0wrVXNaYkNSZ0U4a1lMWTZybmdEL0Z6V2tSMlNSaVIzaHZnNitTNllpR01NY25PZlg5WDE3MW4veXZxTDM2dDlaMXJLNm5QSUFzS0JsY3BqSUhUek1kUjBBNlZrRWVlOXRQeWJFaW5RMmR0SmFNZ1dqaDFmemM0eisxeDBicGpqclVLNG50R3VKQ3I2VnROeEFSNWRxNEcwSjhXQi9oejlvZFNlUlhuMW01K29Ldm1hanNHbk1tTmk3ZG5tZFArWG52MXpVYTYxWXlHVjQ3dThaMmxpa1V5QmVkcTR5Y2R4MEh0V0FRYnFVTWRpcEVBSFlobzF4dXlmNWVncU5WVWptUnk3SExNU1NmVTFUUUZhTW9ZRmdHQVBJNlpGVlN2RzhyTkhHSTFKeUVCSjIvZWV0V3E5SFVVQkppdG5leW5uQ1pTTmxVdGpvVDBxMUxFMGFvekFBT055OGpwMHFiYk8zNUt2VTZMbEdKeUJ6bmdZNit0UTVwMmxTSkdBQWpYYXVCMnpuK3RBYkI0ZS8yZS84QXpUL0lVcnp3OS81Q1QvbW4rUXBRSFJQR1Z6cmt1cGVLakFscXFUM3NLMm13UUF5UmdzUzJlckFiVjY5TWlzOTlGekxkZlRKNHR1bElkWW9URUdVZ2pobFhnampIdzlxNExxaC8rcjN2QS8xOG5iL2VOZEMraG54Tm9maDd4QmNMclVzMFAxbnl4YnlybllyS1crM2c5UGk3OGNjMEJ0ZDNMNS8wMytON250YTZMY0FIMEloUmY2bXVEN3VNZHE2OVk2emFhajRuK2svVjRMaEhpbTAyNUZ1L1RlcFlLQ0FlZW1LNUFSZzBBQkdhM1RSclhRcGRFbUoxTE43OVZhZVczbGlWRHZSdmhTT1E5TWprNDVJclNoMXJZTHExc2JtNTBxM3RVK3JHVzFRU3NUNWdlWG5uQUp4bmdZN2RjVnI1MDJrazJ2bDYvRzVPR3p1ck1YY1cxeEhERGNQYlBIRkprUnVVSVY4ZFNDZXRabnczNHYxRHc1Sko5Vzh1V0NUQmtoa1BERWRDTzROWDlXdlk0WjRyRytKdTdPM3NzV2NNYzN3d3lPb0o1Nm5EWnJXMHVYamllSWJka21Od0lIT09uUFVmZFdFbHFNWFRramFmNC9uOXlhazhVK3FEM052OFNhMXJYaURSSU5RdTQ0WWROTXBTTllINU1nSDZ3SnlhNno5SFBqYnczcDMwZHM5eHFndHJ4RDVja2M2QjJWc2dLVkFHWFg0Z2NuSjZqdFhBYmRJM3NMbG1rbGFaTUZZMWp5bTN1eE9lUHVGUTBYSWM3bFVxTThuQlBQYjNyT0RGREhGd2l0ay9EMTl4bG5LYjZtK1RmUHBSOFJ3NjlyVmcxdGZHNk1GcnNra1NMeWdzaFlsa0F3T25IYkp6V2syZDFMWVhjZHpFRk1rVEFqZW00QWoxRlVQY1RtSmxlVXNyU2JqazUrTDE5YTkrc3l5U083c0NYWGF4eDE0NzFlMG1xWlVtMDdSbTdTNSt0ZUtMRFVOVnVvN2VPNmtEdkxBd0JqWGtaSXdjZmVLMkhWYjdSL3lMcWRoYVhNZHhjd0tHaVpDb1VjamNVWUFFakhVSCtOYVhxZDlEZXpRdGIyb3RvNDRsVFlHenlPcC9HckVhTWJXZVFNUUUyZzQ3NUoveXJHUGFLMm9ubGR6YnUvTXNLVHY0ejNxYnFsdDlXbkFJQVdSRmtqMm5LbFNQNDFHdFNpM1VMTXU4QnhsT200WjZWZnZMdWFkVmhrUDZPQjJDY2NxQ2VtZlRpc3U3VkNQUjB0UG5zWjd3ZnBkdmRTVFhjdzh3eDRDcVFmaGJxRC9DdTQvU05aMmVqZlE3ZTJFYXBIZFBIYlRTaGVydDVpQXR6NzhWdzNRZFVoMC9TTHFlYUF5SnZSREVqbU10eC9pSFQ1MXZ1bWVQL0RlcGFYZDZaNHBnMXpYNDVwVWRHMkRNS2dIYW8yc0R3U2EySnlTeHhpaWhMNG16RytMZkdNV3UyWTBxeWVOOUpta0RQS2lNSFJ5b2JHMDg3QTRKNTlUaml0ZjBmVUo5S1c1dUp0cCtxTEJCTEdxNEtybHM0OVNPdWU5ZFJ1TlIrajZHejFCckR3a3RsZldtWTBrdWJRc3BidndyRW5qUGJGYzR0ZFoweFpialVMdlM3UzZ0bGtTS2F5TUxScEpIdklFZ0trZkVBT0tsQ2JXL2NybkJOZEp0L2g2Y1JyRzlsTEZzdXBNeEFqQ2dFN2dPZU9TTWR2dXJuZmltNnVOUzhVV3I2bXkrYTBGdkhJWTFDOUZBL0VkT2ZTdGg4TDN1ZzIxM2VRM0hpQ08wMHhaZ2JlSjdhUXliR2JrZ2dkUU9PZXB4VkZ4b1BoNmZ4SDlldVBFdHRjV0pZRXd4UjNBbmtqQXhrRm84YmoxOU01ckdXVVpOTmNrY1VKUVVrK0RhNDFWRUNLRkNLTUFLTUFEcDA3VkE4UVhMMm5oNitsU1ZvbkNEWTZNVkliY01jL090U0hpMjYwbHBZL3F6VDJna2RiWXp2aVVJQ1FBK08vU3RvMURTN0h4ZHB0dEpwL2lBTGJRV3JUYWh1aVpZMWNEZGhRZmliSHlOYkVzOEpSYVhKeVZvTWtNcWsrRXkvd0NHOVFHcGFMYnloL01tQzRtSlB4Yjg4NXJDZU0vRWIyRHhXZGsrMjcrMDdxUVNnUEcwakhVaXNkNGYwM1FwRzF5QzgxSy90Sm8xQnM1cktDVmxHTzdyakpVNUhYa1ZndFIwSzRqdkpGdFpKOVFLUmVkTzYyc3FGQjNKRGdISHZXdkxPM0hwTDhYc3FDeis5YnRlQm1yUFFOUjBtQk5Sdi9JdHBIUmNXcDVuS2Y0eWk4b09uTFl6V0ExeTVubHYxRXdJakFCQzVZNUhyZzk2c1dGOHR2ZnRMY3FaQVJodDdkZm1TRFh1cEdDZVh6bzNWQ3dHSStUeDg4QVZxUVUwdmpkdjdIWmRka1E0b1huZGhHQVNvTEg0Z09CODYyajhwK0dCNElodFJwcmZsMk9VTjVwWGh4dXljblBUSEdLMUljTmc0SXJNYWRObzFqNGp6cU5uSmY2VXNoVm8xa01ibEQwWUVkeDF4VWN1SlpLdHRVNzJkZmZ5TXhtNDM1bVI4TFdOdk5QYzY3cUNsYkhUajUwZ0dBSlpPcVJBZTUvaFZtZldianhSNHNpdTlRbVdIelpGWGRuNFlZeDFBSGZqOFRXeFdtaTIvaXF3bnN0STFhS3cwVzJ2R2VHM3VvWGVjN2dNUElZd1FjZEI3QW1zY2ZBbDNiZUliYXlzcm0yMUNVT0NZNUlaNFZaZzMyRHZRZGZVSEh2Vk1NVjVKWkpjOEx5WDh2bC9SRmtwMUZSWEhMOHkvd0NMNWx1dEF0cEluajhpM3VQS2lXTThoUURnbnB6OXgrZmFvUGgyQ2F6MExXZGZsVTdSYm0yaGRqOXAzSVU0K1EvblhZL3BFK2pxMWorampPaWVISGgxTHpvWGUydEhrbElQSWZqSkRZejF4WEp0ZlpkSjhCV0drRlpFdVh1WGU0UjF4aGxISSs0a0Q1ZzFIVUtvd3d4N3RMNmN2OEZ1QjNLV1I5azM5ZUVZN3dwNVZuSStzN1N6V1Z4Q3BYMVY4cWZ2NlZqdkU4WXQvRStweFJnS25udGdZN0htcG1neE5ONGI4UkVIR3lHSjhEMUQ1ckNYOTdQcUY1SmRYTEJwbndHYkdNNEFIOUtsamkzcUp6dmpiOUUxKzVuSkpMVHhoNDcvQUt0UDlpUDNyZGZBR3BSVzg5M2F6enJHc2dWMDN0Z0Vqci9DdEpxdU55a2daY1pCeUt0ejRWbXh1RDdsZWwxRDArVlpGdlJ2V3U2dnFXajNaamd0MlNHSzZhVHppdUZrM2M3VDJJNXJHNmY0enVyYWQvUGo4MjNadDNsN2psQjdFODQ5alcyM1pHditFR2NCUTBzSG1BZjRXSFA4d2Z4cmxMWkJ4MHp6V2xwSVk4MEhHY2Qxc3pyYS9ObjAyV004VTMweTNYOGZneUZ4cTF3V3VvNEpKSWJhNFlsb1EyUmowcUZFNkxKbG90NHdmaHpqdFZza21nSkJCSFd1aW9wS2tjV1dTVW5jbVpLeEVsM0ZMcDZ3U1N5dWQ4S291U0hIWGowSzV6OGhVR1F1dUkzTFlVNDJrOVBXcW9GbW51QXNRWnBYUEFYcVQ3VlJJakFrRUVFZFFlb05aV3hpVHVLTFo2MHBWeUdJelRKR0NvTHNGQlpnQnllNVBTc2tDM1NxM1RZU09DUWNjSE5VVUFwU2xBQndhckVoSFQrZFVVb0NUOVpqd2YwSEpDRFBtTjI2bjcvNGRxcUYzQ0gzZlZlUE1ac2VhM1FqaGZ1OWV0UktVQlZ2TlUwcFFDbEtVQXAzcFNnSlVGeXlXODF0dFVyTVZ5V0p3cEhlbzdydGJHUWNkd2FKSThlZGpGZHdLbkI2ajBxa25OQWJONGUvMmUvL0FEVC9BQ0ZLZUh2OW52OEE4MC95RktBNkxOL28rNjlkM2R4TytxNmRDWkpXZFZPOWpnbkl5UU1aNXJIM1grajc0dGptalMydU5PdUkyQkprODFrQ25QVEJHZndyQjZwOUsvamRkV3ZnbmlDNmpYeldRS2dVS29CeHdNY2RLd012am54Vk0rOS9FZXFFL3dEOHAvOEFPZ09rMmY4QW85K0lvNDVQUDFhd2lNaWJmMGJTRURrZmErSGtjZFBsVndmNk9XcnVOemEvWUE5OXNENEZjMnR2SHZpaTJrRXE2L3Fmbkl3TWJHNllnZXVRZXRVZm54NG5Pb1MzNDEvVUZ1WlhWM2RaMkdTT25IVGlnT25mL3R3MUVkZkVkbUQvQVB4bi93QTZ4MnQvUTlmK0N6WWFzK3JTWE1DVGZwV3NZQ3MwT0FTR1FFL0VlUDRWcFVmMGsrTTQxWlY4VGFuOFJKUDZjbm1vbDU0eThVWCs3NjFyK3B5Z2pEQnJwOEVmSUdzU2oxSnA5ektkT3c5eEJIZFhOdGJtSy9odUhqWjdtNXQ5a2d3M0pISjI1enllOWVhM3BlbjZjU0xlK2xta0xuYWpXclJxeWRtVmlmaUhISHJXSG1TU0tUYkp3NHdldWUzRmVTenl6Q01TU3U0alhhdTVpZG85QjZDc0pKYnJ1RzMzTzEvL0FLVUo0MDBuVGRZMHJVTkpzb3BZVVF4MjhMdjhmY05nY0VkT2Z2N1ZYLzhBdDAxUHlrVWE3WkhKeTdmVjNPUFlldGNadDcrV0NJSXR4UEdOMlQ1Y2hYanZ4bkZTNVBFZXBnQkxiVUwyM2lDZ2JFdTVNWnh5ZXZmcldJUVVFb3g0TXlrNXZxWjFDUDhBMGZkWE4xY1FYR3BXOEZ2SGt4M2JESWw0Qkh3ZFYvV0hYdDByQVEvUjNvc2tzMXZONHZodHJtQjJWbzViR1RMQUp1eUJuT01Cdm5qRmFGTnFOL09DSjcyNGt6MTN6TWY1bXJFVXBqa1dRWUxLUXd5TTVxWkZIWk5IK2h6VGRjWDhvZUgvQUJYQk5CRVYyK2RadXVXR054TzdHVjY5QjZDc0pxSGdIVExMVjd6dy9ENGlhODFiRHQ5V2dzR1VQSXE3bEFZc0JnNTZnMW9tbzY1ZmFuZk5kelRGWkdVSmlNbFJqMHdEV1BNak0yV2JKNmMxR050SnlXNUtkSnRSZG83UVBvWWcwdlNocVYvcmlGN052TWx0WXJZZVk1QkdRTXZ5UFE4REhOYzh1ZE44T2l3YTlQaUF2Y1NibVd6anRXSkI3Qm55QXZYMzZIRmEyOGpTTVhkdHpIa2s4ay9mVkJPYWtST2dyNFpzcmkza3NOUHZWbkxTQTJ5VEZVZVdReGxnTUZoZ2NkVHh6VzErSC9DdW0yRnBLMmorTFRaNjNJQS9sMjhxN1JoZCswbmR4eVdRRW5CSTVyaVZNMWxzSFdQRnQzZmFmcXhudGRidUhua2xqbGFXYTdobWFINFZ6bDFZbFBpR0JucldCMUs4YUcxOGlIWFpMblVaM01wZ0Z2RzBaZG15Zmp6d2VTUWNmTEdhMGJKSGV2S2wxdXFaaWo2TzhPYXREZCtGNVcxTytzVGVTNGU1TStveG81SDZ3d1k4NDI1WGFNZ2R1Y0d0bzFqdzZOWGhzOVpqZDdsWTBZQnJwSTdjVzhURERCZDBPU3VEMFA4QU92a3RUV2RQaXJYb29GU0xYdFJNY2lZa1EzTGtaN2dnbnBVVEpsZkdPbVd0cjRqbWkwejRMRnN6VzBra2JoWkR3Q2lsbEFZWnpnNHhXNitFYmJTYkh3YmFsOVY4UFI2Z0dsa2taYnVNM0JqWURDWVpHQWJqOE9uSnJtRTNpelg3bTFTMW4xbTlsZ2pkWkVTU1lzRVlZd1JucDBIVDBySFhGeUxpWnBHVUFzU1NlNXljOG1pZE1qS05xajZBdXBkQk51c0Y3ckdob0VWMVlSYW9rY21jY01Ra2Frc0RnWVBUSk5hdG9tditGcmZVWVY4U2FsZXlOc2pRM2RocWMwaXR0WGxaRlBPM09Sd2Zsd2E1WmQzYVhVRUpkVDlZUWJHZi9Hbyt6bjNIVDVZcUZSODdHVmRiblMvcEEwYndMSk9MM3dqcnRtdVYzU1dzanpNV1luOVZtWEE0NTVOYUFMTldrMm02dGw5eTV4L0tvZEt3WkprVm5ISklWTjdiUmdBbmM1YkhYR09GNjF0SGhUd0RkZUtvNUxxSFVyR0NHT2N3dVpwVkRad0NDcXNRU09mYnBXc2FWSmJRMzhjMTBwZU9QTCtYalBtRWNoVDdFNHo3WnFRNnRxUXVMK1loTm9MU3lrWjh5UmlTQUIySjU0SFFBbW9PZFBmZ2tvMmphcjZPVHdiZTZubzArc0o5WXRHODIwbXRrTExPOGlnRnl3YmpDa2dlaEo0cUpCYjZrM2wzTWZpMDd3clNJOGN0dzIxVUdXT2NER09QK3RhWTNYMHJLMmswVnJvVjJ5eUw5YXVXV0FMM0VmMm1PZTJTRkg0MUNVZWplSExmcitTU2ZWdExzYmpwRUZwY1NHNDFUNlRHdG5ad1MwTDNEdGpCSk9DbzV6ampQYytsWWJ4T2JhS1Mxc1h2SmJwYmV5WjQ1VCt2Skk1Y0U1NTVVZzFxUTYxZnU3dWE5bTg2NGxhU1RhRjNONkFZQS9Dc3p4dVVvdnN2WDhpRSttTFhpWnJ3OU9ZOU0xK0FaekxaYmdNY2NNUDg2MTV1cHJMZUhyeUd6dTduNnhLSTQ1clNhTGNWenl5OEQ4YXhlODRBNDQ5cXhDTlpKK2RQOUsvWWxPVjQ0K1Yveis1VFJldEZBTGdFNEdlVFVtOXRUYVhNa083ZXFuS3VPaktlaEh6RlczdlJWVHF6ZFBCRjRIZ3ZOTE1tODRNa1dlbUNNSCtPSzBXVUVTRlNjN2VQNDFrL0ROMmJQeEJhU0RvWENOOGp3YXM2OWFmVWRjdkxmR0FzcHg4anlQNTFyWTRLR2VYL0FPa24rek4vTmtlWFNRdi9BTXRyNzdyOXpIVXBTdG81NTZyRldCVWtFY2dpdlN6RWtsaVNlVHoxcW1sQUtVcFFETktVb0JTbEtBVXBTZ0ZLVW9CU2xLQVZYRXF1NnFXQzVJR1QycWlsQVRkUnQ3VzF2SGh0YmxybEU0TWpSYlBpenpnWlBIdlVLbEtBVXBTZ05tOFBmN1BmL21uK1FwVHc5L3M5L3dEbW4rUXBRR0YxWC9hOTcvejVQL3lOUTZtYXIvdGU5LzU4bi81R29kQUtVcFFBZGF6dDNjNkcvaGl5Z3RyT1pOWFNRbTRuWnZnWk9jQURQeS9BMWdxcVY5ckE3UWNkajNxRTRLVFR0N2IvQVBUS2RBOUtwcXVSL01kbUNoUVNUZ2RCVkZUTUN2UjFGZVVIQm9ESzZxZElOcFpmazRUaWNSNHVSTDBMZW8valdMQXpRbklvRGlvd2owcXJ2NWtweTZuZFY4aHQ0cnlwVjNmdmVOR3p4UW9VUUlQS1FMa0QxeDFQdlVXc3E2M01TU1QyRktVckpnVXBTZ0ZLVW9CWHVlTVY1U2dGS1VvQlNsS0FWVUkyS2xzY0RyVk5lZzlqUUY2MXRwYnE2aXQ0WTJrbGxZSWlMMVpqd0JXeWEvY1dObGJSNkJHL21yWUk1ZVNMZ1RYVEViaVQzVlFObzljZTlXOUp6b09pdnJqTUJkejc3ZXdIZFRqRWt2dGdIYUQ2bjJyV2kzU3RhdmU1TDdSL1BmN2NmTy9Bc3ZwalhkbmpkYVpyeWxiSldLVktodGZOdGJtWXRnUXFweDZrdGlvdFlUVE10VUtVcFdUQUhCcTVKS1pBTnhKd01ESjZEMHEzU2dQVk9EbnZXUTFyVWwxVy93RHJRak1iR05GY0U1eXdHQ2F4MUtpNHB0U0pxY2xGdzdQOWhTbEtrUUZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBVXBTZ0ZLVW9EWnZEMyt6My81cC9rS1U4UGY3UGY4QTVwL2tLVUJmMUx3ZnFENnBkdDV0cnpNNSsyMytJLzd0UlB6TjFEOXRhL3Z0L2JTbEFQek4xRDl0YS92dC9iVDh6ZFEvYld2NzdmMjBwUUQ4emRRL2JXdjc3ZjIwL00zVVAyMXIrKzM5dEtVQS9NM1VQMjFyKyszOXRQek4xRDl0YS92dC9iU2xBUHpOMUQ5dGEvdnQvYlQ4emRRL2JXdjc3ZjIwcFFEOHpkUS9iV3Y3N2YyMC9NM1VQMjFyKyszOXRLVUEvTTNVUDIxcisrMzl0UHpOMUQ5dGEvdnQvYlNsQVB6TjFEOXRhL3Z0L2JUOHpkUS9iV3Y3N2YyMHBRRDh6ZFEvYld2NzdmMjAvTTNVUDIxcisrMzl0S1VBL00zVVAyMXIrKzM5dFB6TjFEOXRhL3Z0L2JTbEFQek4xRDl0YS92dC9iVDh6ZFEvYld2NzdmMjBwUUQ4emRRL2JXdjc3ZjIwL00zVVAyMXIrKzM5dEtVQS9NM1VQMjFyKyszOXRQek4xRDl0YS92dC9iU2xBUHpOMUQ5dGEvdnQvYlQ4emRRL2JXdjc3ZjIwcFFGUjhJYWtRQVo3YkE2RGUzOXRVL21icUg3YTEvZmIrMmxLQWZtYnFIN2ExL2ZiKzJuNW02aCsydGYzMi90cFNnTGc4SjZvc2J4aTR0Z2o0M0RlM09PbjZ0Vy96TjFEOXRhL3Z0L2JTbEFQek4xRDl0YS92dC9iVDh6ZFEvYld2NzdmMjBwUUQ4emRRL2JXdjc3ZjIwL00zVVAyMXIrKzM5dEtVQS9NM1VQMjFyKyszOXRQek4xRDl0YS92dC9iU2xBUHpOMUQ5dGEvdnQvYlQ4emRRL2JXdjc3ZjIwcFFEOHpkUS9iV3Y3N2YyMC9NM1VQMjFyKyszOXRLVUEvTTNVUDIxcisrMzl0UHpOMUQ5dGEvdnQvYlNsQVB6TjFEOXRhL3Z0L2JUOHpkUS9iV3Y3N2YyMHBRRDh6ZFEvYld2NzdmMjAvTTNVUDIxcisrMzl0S1VBL00zVVAyMXIrKzM5dFB6TjFEOXRhL3Z0L2JTbEFQek4xRDl0YS92dC9iVDh6ZFEvYld2NzdmMjBwUUQ4emRRL2JXdjc3ZjIwL00zVVAyMXIrKzM5dEtVQS9NM1VQMjFyKyszOXRQek4xRDl0YS92dC9iU2xBUHpOMUQ5dGEvdnQvYlQ4emRRL2JXdjc3ZjIwcFFEOHpkUS9iV3Y3N2YyMTZQQm1vZnRyWDk5djdhVW9EUGFKNFYxQ0t6ZGZOdHY5WVQ5cHZRZjd0S1VvRC8yVUNEeWtDNUE5Y2RUNzFGckt1dHpFa2s5aFNsS3lZRktVb0JTbEtBVjduakZlVW9CU2xLQVVwU2dGVkNOaXBiSEE2MVRYb1BZMEJldGJhVzZ1b3JlR05wSlpXQ0lpOVdZOEFWc212M0ZqWlcwZWdSdjVxMkNPWGtpNEUxMHhHNGs5MVVEYVBYSHZWdlNjNkRvcjY0ekFYYysrM3NCM1U0eEpMN1lCMmcrcDlxMW90MHJXcjN1UyswZnozKzNIenZ3TEw2WTEzWjQzV21hOHBXeVZpbFNvYlh6Ylc1bUxZRUtxY2VwTFlxTFdFMHpMVkNsS1Zrd0J3YXVTU21RRGNTY0RBeWVnOUt0MG9EMVRnNTcxa05hMUpkVnY4QTYwSXpHeGpSWEJPY3NCZ21zZFNvdUtiVWlhbkpSY096L1lVcFNwRUJTbEtBVXBTZ0ZLVW9CU2xLQVVwU2dGS1VvQlNsS0FVcFNnRktVb0JTbEtBMmJ3OS9zOS8rYWY1Q2xQRDMrejMvQU9hZjVDbEFYOVM4SDZnK3FYYmViYTh6T2Z0dC9pUCs3VVQ4emRRL2JXdjc3ZjIwcFFEOHpkUS9iV3Y3N2YyMC9NM1VQMjFyKyszOXRLVUEvTTNVUDIxcisrMzl0UHpOMUQ5dGEvdnQvYlNsQVB6TjFEOXRhL3Z0L2JUOHpkUS9iV3Y3N2YyMHBRRDh6ZFEvYld2NzdmMjAvTTNVUDIxcisrMzl0S1VBL00zVVAyMXIrKzM5dFB6TjFEOXRhL3Z0L2JTbEFQek4xRDl0YS92dC9iVDh6ZFEvYld2NzdmMjBwUUQ4emRRLyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment