Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@酷安@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6YW35a6JIiwiYXV0aG9yIjoi5pen5be36ZmM5Lq6IiwidXJsIjoiaGlrZXI6Ly9lbXB0eSQkZnlwYWdlIiwidmVyc2lvbiI6MjAyNDA5MjIwMCwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuY29uc3Qgc2V0VGltZW91dDtcbmlmIChnZXRJdGVtKFwiZmlyc3RcIikgPT0gTVlfUlVMRS52ZXJzaW9uKSB7XG4gICAgJC5yZXF1aXJlKFwiQ29uZmlnLnZpZXdcIikuX2Jhc2VQYXJzZSgpO1xufSBlbHNlIHtcbiAgICAkLnJlcXVpcmUoXCJDb25maWcudmlld1wiKS5fZ2V0c01pbmQoKTtcbn07Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoiI++4j+KDo+i9r+S7tuWQiOmbhiIsInNlYXJjaEZpbmQiOiIiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJsZXQgQ2Fyb3VzZWwgPSBcImhpa2VyOi8vZmlsZXMvcnVsZXMvQ2Fyb3VzZWwuaHRtbFwiO1xubGV0IENhcm91c2VsVXJsID0gXCJodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD02OTk3XCI7XG5sZXQgU2Nyb2xsQ2FyZCA9IFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9TY3JvbGxDYXJkLmh0bWxcIjtcbmxldCBTY3JvbGxDYXJkVXJsID0gXCJodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD03MDAwXCI7XG5sZXQgX2RlbW9sUnVsZVVybCA9IFwiaHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9Njk5OVwiO1xubGV0IGhpa2VyUG9wID0gJC5yZXF1aXJlKFwiaHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9Njk2NlwiKTtcbmlmICghZmlsZUV4aXN0KENhcm91c2VsKSkgc2F2ZUZpbGUoQ2Fyb3VzZWwsIHJlcXVlc3QoQ2Fyb3VzZWxVcmwpLCAwKTtcbmlmICghZmlsZUV4aXN0KFNjcm9sbENhcmQpKSBzYXZlRmlsZShTY3JvbGxDYXJkLCByZXF1ZXN0KFNjcm9sbENhcmRVcmwpLCAwKTtcbmxldCBfZGVtb2xSdWxlVnIgPSBnZXRNeVZhcihcIjpydWxlVnJcIiwgXCIwXCIpO1xuaWYgKF9kZW1vbFJ1bGVWciA9PSAwKSB7XG4gICAgbGV0IF9kZW1vbFJ1bGVNYXAgPSBKU09OLnBhcnNlKHJlcXVlc3QoX2RlbW9sUnVsZVVybCkpO1xuICAgIGlmIChNWV9SVUxFLnZlcnNpb24gPCBfZGVtb2xSdWxlTWFwLnZlcnNpb24pIHtcbiAgICAgICAgaGlrZXJQb3AuY29uZmlybSh7XG4gICAgICAgICAgICB0aXRsZTogXCLlj5HnjrDmlrDniYjmnKxcIixcbiAgICAgICAgICAgIG9rVGl0bGU6IFwi5pu05pawXCIsXG4gICAgICAgICAgICBoaWRlQ2FuY2VsOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlybSgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYOa1t+mYlOinhueVjOinhOWImeWIhuS6q++8jOW9k+WJjeWIhuS6q+eahOaYr++8muWwj+eoi+W6j++/pWhvbWVfcnVsZV92Mu+/pWJhc2U2NDovL0DphbflrolAJHtiYXNlNjRFbmNvZGUoSlNPTi5zdHJpbmdpZnkoX2RlbW9sUnVsZU1hcCkpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgcHV0TXlWYXIoXCI6cnVsZVZyXCIsIFwiMVwiKTtcbn07IiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdolwiLFwicGF0aFwiOlwiQ29uZmlnLnZpZXdcIixcInJ1bGVcIjpcImNvbnN0IGFwaXZpZXcgPSB7XFxuICAgIGNvbG9yOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFwiI0ZBNzI5OFxcXCI+JyArIHRlc3QgKyAnPC9mb250Pic7XFxuICAgIH0sXFxuICAgIG9yYW5nZTogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcIiNGRkE1MDBcXFwiPicgKyB0ZXN0ICsgJzwvZm9udD4nO1xcbiAgICB9LFxcbiAgICBibGFjazogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcIiMwMDAwMDBcXFwiPicgKyB0ZXN0ICsgJzwvZm9udD4nO1xcbiAgICB9LFxcbiAgICBzdHJvbmc6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcIjxzdHJvbmc+XFxcIiArIHRlc3QgKyBcXFwiPC9zdHJvbmc+XFxcIjtcXG4gICAgfSxcXG4gICAgc21hbGw6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcIjxzbWFsbD5cXFwiICsgdGVzdCArIFxcXCI8L3NtYWxsPlxcXCI7XFxuICAgIH0sXFxuICAgIGNlbnRlcjogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPHAgc3R5bGU9XFxcInRleHQtYWxpZ246IGNlbnRlcjtcXFwiPicgKyB0ZXN0ICsgJzwvcD4nO1xcbiAgICB9LFxcbiAgICBiaWc6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcIjxiaWc+XFxcIiArIHRlc3QgKyBcXFwiPC9iaWc+XFxcIjtcXG4gICAgfSxcXG4gICAgZ3JheTogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPGZvbnQgY29sb3I9XFxcImdyYXlcXFwiPicgKyB0ZXN0ICsgJzwvZm9udD4nO1xcbiAgICB9LFxcbiAgICByaWNoOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCLigJjigJjigJnigJlcXFwiICsgdGVzdDtcXG4gICAgfSxcXG4gICAgYWRkcmVzc1RhZzogKHVybCwgdGV4dCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8YSBocmVmPVxcXCInICsgdXJsICsgJ1xcXCI+JyArIHRleHQgKyAnPC9hPic7XFxuICAgIH0sXFxuICAgIGVtcHR5OiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgIGxheW91dDogW10sXFxuICAgIF9HZXRfc2NyaXB0aW9uOiBcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy9zdWJzY3JpcHRpb24uanNcXFwiLFxcbiAgICBfZmlsZVV0aWw6ICh0ZXh0KSA9PiB7XFxuICAgICAgICBpZiAoIXRleHQuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpICYmICF0ZXh0LnN0YXJ0c1dpdGgoXFxcImh0dHBzXFxcIikpIHtcXG4gICAgICAgICAgICByZXR1cm4gYGh0dHBzOi8vYXBpLmNvb2xhcGsuY29tJHt0ZXh0fWA7XFxuICAgICAgICB9O1xcbiAgICAgICAgcmV0dXJuIHRleHQ7XFxuICAgIH0sXFxuICAgIF9maWxlV2ViVXRpbDogKHRleHQpID0+IHtcXG4gICAgICAgIGlmICghdGV4dC5zdGFydHNXaXRoKFxcXCJodHRwXFxcIikgJiYgIXRleHQuc3RhcnRzV2l0aChcXFwiaHR0cHNcXFwiKSkge1xcbiAgICAgICAgICAgIHJldHVybiBgaHR0cDovL3d3dy5jb29sYXBrLmNvbSR7dGV4dH1gO1xcbiAgICAgICAgfTtcXG4gICAgICAgIHJldHVybiB0ZXh0O1xcbiAgICB9LFxcbiAgICBfR2V0X2tleXdvcmQ6IChrdywgZW1wdHkpID0+IHtcXG4gICAgICAgIGxldCBtZW0gPSBzdG9yYWdlMC5nZXRJdGVtKE1ZX1JVTEUudGl0bGUsIFtdKTtcXG4gICAgICAgIG1lbSA9IG1lbS5maWx0ZXIoaXQgPT4gaXQgIT0ga3cpO1xcbiAgICAgICAgaWYgKG1lbS5sZW5ndGggPj0gMTApIHtcXG4gICAgICAgICAgICBtZW0gPSBtZW0uc2xpY2UoMSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgbWVtLnB1c2goa3cpO1xcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShNWV9SVUxFLnRpdGxlLCBtZW0pO1xcbiAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICB9LFxcbiAgICBfUG9zaXRpb25fdG9vbDogKGRhdGEsIGFycmF5LCBjaG9pY2UsIHV1aWQpID0+IHtcXG4gICAgICAgIGxldCBvYmogPSB7fTtcXG4gICAgICAgIGRhdGEuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICBpZiAoaXRlbVt1dWlkXSA9PT0gYXJyYXlbdXVpZF0pIHtcXG4gICAgICAgICAgICAgICAgb2JqID0gaXRlbTtcXG4gICAgICAgICAgICAgICAgZGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgc3dpdGNoIChjaG9pY2UpIHtcXG4gICAgICAgICAgICBjYXNlIFxcXCJ0b3BcXFwiOlxcbiAgICAgICAgICAgICAgICBkYXRhLnVuc2hpZnQob2JqKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiZW5kXFxcIjpcXG4gICAgICAgICAgICAgICAgZGF0YS5wdXNoKG9iaik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2dlbmVyYXRlU3RhcnM6IChudW0pID0+IHtcXG4gICAgICAgIGxldCBzdGFycyA9IFxcXCLimIVcXFwiLnJlcGVhdChudW0pO1xcbiAgICAgICAgbGV0IHdoaXRlc3BhY2VzID0gXFxcIuKYhlxcXCIucmVwZWF0KDUgLSBudW0pO1xcbiAgICAgICAgcmV0dXJuIHN0YXJzICsgd2hpdGVzcGFjZXM7XFxuICAgIH0sXFxuICAgIF9nZW5lcmF0ZUltYWdlOiAoc3RyKSA9PiB7XFxuICAgICAgICByZXR1cm4gYCR7c3RyfUBoZWFkZXJzPSR7SlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIkRhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgMTA7IFYyMzA0QSBCdWlsZC9VUDFBLjIzMTAwNS4wMDcpICgjQnVpbGQ7IHZpdm87IFYyMzA0QTsgVVAxQS4yMzEwMDUuMDA3IHJlbGVhc2Uta2V5czsgMTApICtDb29sTWFya2V0LzEzLjMuNi0yMzEwMjMyLXVuaXZlcnNhbFxcXCJcXG4gICAgICAgIH0pfWA7XFxuICAgIH0sXFxuICAgIF9nZW5lcmF0ZVN0cmluZzogKHN0ciwgbWF4TGVuZ3RoKSA9PiB7XFxuICAgICAgICBpZiAoc3RyLmxlbmd0aCA+IG1heExlbmd0aCkge1xcbiAgICAgICAgICAgIHJldHVybiBzdHIuc3Vic3RyaW5nKDAsIG1heExlbmd0aCkgKyBcXFwiLi4uXFxcIjtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIHN0cjtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9mb3JtYXRUaW1lc3RhbXA6ICh0aW1lc3RhbXApID0+IHtcXG4gICAgICAgIGxldCBub3cgPSBEYXRlLm5vdygpIC8gMTAwMDtcXG4gICAgICAgIGxldCBzZWNvbmRzUGVyRGF5ID0gODY0MDA7XFxuICAgICAgICBsZXQgc2Vjb25kc1BlcldlZWsgPSBzZWNvbmRzUGVyRGF5ICogNztcXG4gICAgICAgIGxldCBkaWZmID0gbm93IC0gdGltZXN0YW1wO1xcbiAgICAgICAgaWYgKGRpZmYgPD0gc2Vjb25kc1BlcldlZWspIHtcXG4gICAgICAgICAgICBpZiAoZGlmZiA8IHNlY29uZHNQZXJEYXkpIHtcXG4gICAgICAgICAgICAgICAgbGV0IGhvdXJzQWdvID0gTWF0aC5mbG9vcihkaWZmIC8gMzYwMCk7XFxuICAgICAgICAgICAgICAgIGxldCBtaW51dGVzQWdvID0gTWF0aC5mbG9vcigoZGlmZiAlIDM2MDApIC8gNjApO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7aG91cnNBZ28gPT09IDAgPyBgJHttaW51dGVzQWdvfeWIhumSn+WJjWAgOiBgJHtob3Vyc0Fnb33lsI/ml7bliY1gfWA7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgbGV0IGRheXNBZ28gPSBNYXRoLmZsb29yKGRpZmYgLyBzZWNvbmRzUGVyRGF5KTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2RheXNBZ2995aSp5YmNYDtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCAqIDEwMDApO1xcbiAgICAgICAgICAgIGxldCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xcbiAgICAgICAgICAgIGxldCBtb250aCA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgICAgIGxldCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsIFxcXCIwXFxcIik7XFxuICAgICAgICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfb2JqZWN0VG9RdWVyeVN0cmluZzogKG9iQXJyKSA9PiB7XFxuICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JBcnIpLm1hcCgoW2tleSwgdmFsXSkgPT4gYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHZhbCl9YCkuam9pbihcXFwiJlxcXCIpO1xcbiAgICB9LFxcbiAgICBfZ2VuZXJhdGVSYW5kb21TdHJpbmc6IChsZW5ndGgpID0+IHtcXG4gICAgICAgIGxldCByZXN1bHQgPSBcXFwiXFxcIjtcXG4gICAgICAgIGNvbnN0IGNoYXJhY3RlcnMgPSBcXFwiMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpcXFwiO1xcbiAgICAgICAgY29uc3QgY2hhcmFjdGVyc0xlbmd0aCA9IGNoYXJhY3RlcnMubGVuZ3RoO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHJlc3VsdCArPSBjaGFyYWN0ZXJzLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzTGVuZ3RoKSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcXG4gICAgfSxcXG4gICAgX2dlbmVyYXRlVG9rZW5TdHJpbmc6ICgpID0+IHtcXG4gICAgICAgIGZ1bmN0aW9uIGdldFJhbmRvbVZhbHVlcyhhcnJheSkge1xcbiAgICAgICAgICAgIGxldCByYW5kX21heCA9IDI1NjtcXG4gICAgICAgICAgICBpZiAoYXJyYXkgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IGFycmF5IGluc3RhbmNlb2YgSW50OEFycmF5KSB7XFxuICAgICAgICAgICAgICAgIHJhbmRfbWF4ID0gMjU2O1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYXJyYXkgaW5zdGFuY2VvZiBVaW50MTZBcnJheSB8fCBhcnJheSBpbnN0YW5jZW9mIEludDE2QXJyYXkpIHtcXG4gICAgICAgICAgICAgICAgcmFuZF9tYXggPSA2NTUzNjtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFycmF5IGluc3RhbmNlb2YgVWludDMyQXJyYXkgfHwgYXJyYXkgaW5zdGFuY2VvZiBJbnQzMkFycmF5KSB7XFxuICAgICAgICAgICAgICAgIHJhbmRfbWF4ID0gNDI5NDk2NzI5NjtcXG4gICAgICAgICAgICB9O1xcblxcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSBnZXRSYW5kb21JbnQoMCwgcmFuZF9tYXgpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9O1xcblxcbiAgICAgICAgZnVuY3Rpb24gZ2V0UmFuZG9tSW50KG1pbiwgbWF4KSB7XFxuICAgICAgICAgICAgbWluID0gTWF0aC5jZWlsKG1pbik7XFxuICAgICAgICAgICAgbWF4ID0gTWF0aC5mbG9vcihtYXgpO1xcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XFxuICAgICAgICB9O1xcbiAgICAgICAgY29uc3QgYmNyeXB0ID0gJC5yZXF1aXJlKFxcXCJodHRwczovL3VucGtnLmNvbS9iY3J5cHRqc0AyLjQuMy9kaXN0L2JjcnlwdC5taW4uanNcXFwiKTtcXG5cXG4gICAgICAgIGJjcnlwdC5zZXRSYW5kb21GYWxsYmFjayhmdW5jdGlvbihzaXplKSB7XFxuICAgICAgICAgICAgbGV0IGFycmF5ID0gbmV3IFVpbnQzMkFycmF5KHNpemUpO1xcbiAgICAgICAgICAgIGdldFJhbmRvbVZhbHVlcyhhcnJheSk7XFxuICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgcmFuZG9tU3RyaW5nID0gZ2V0TXlWYXIoXFxcIjpzdHJpbmdcXFwiLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgaWYgKHJhbmRvbVN0cmluZyA9PSBcXFwiMFxcXCIpIHtcXG4gICAgICAgICAgICBzaG93TG9hZGluZyhcXFwi6I635Y+WdG9rZW7kuK3vvIzor7fnqI3nrYkuLi5cXFwiKTtcXG4gICAgICAgICAgICByYW5kb21TdHJpbmcgPSBhcGl2aWV3Ll9nZW5lcmF0ZVJhbmRvbVN0cmluZyg1MCk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjpzdHJpbmdcXFwiLCByYW5kb21TdHJpbmcpO1xcbiAgICAgICAgfTtcXG5cXG4gICAgICAgIGZ1bmN0aW9uIGdldFYyVG9rZW4oZGV2aWNlQ29kZSkge1xcbiAgICAgICAgICAgIGxldCB0b2tlblBhcnQgPSBcXFwidG9rZW46Ly9jb20uY29vbGFway5tYXJrZXQvZGNmMDFlNTY5YzFlM2RiOTNhM2QwZmNmMTkxYTYyMmM/XFxcIjtcXG5cXG4gICAgICAgICAgICBmdW5jdGlvbiBmb3JtYXRCYXNlNjQoc3RyKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1xcXFxyXFxcXG49XS9nLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBsZXQgZGV2aWNlQ29kZU1kNSA9IG1kNShkZXZpY2VDb2RlKTtcXG4gICAgICAgICAgICBsZXQgdGltZXN0YW1wID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCk7XFxuICAgICAgICAgICAgbGV0IHRpbWVzdGFtcE1kNSA9IG1kNSh0aW1lc3RhbXAudG9TdHJpbmcoKSk7XFxuICAgICAgICAgICAgbGV0IHRpbWVzdGFtcEJhc2U2NCA9IGZvcm1hdEJhc2U2NChiYXNlNjRFbmNvZGUodGltZXN0YW1wLnRvU3RyaW5nKCkpKTtcXG4gICAgICAgICAgICBsZXQgdG9rZW4gPSBgJHt0b2tlblBhcnR9JHt0aW1lc3RhbXBNZDV9JCR7ZGV2aWNlQ29kZU1kNX0mY29tLmNvb2xhcGsubWFya2V0YDtcXG4gICAgICAgICAgICBsZXQgdG9rZW5CYXNlNjQgPSBmb3JtYXRCYXNlNjQoYmFzZTY0RW5jb2RlKHRva2VuKSk7XFxuICAgICAgICAgICAgbGV0IHRva2VuQmFzZTY0TWQ1ID0gbWQ1KHRva2VuQmFzZTY0KTtcXG4gICAgICAgICAgICBsZXQgdG9rZW5NZDUgPSBtZDUodG9rZW4pO1xcbiAgICAgICAgICAgIGxldCBhcmcgPSBgXFxcXCQyeVxcXFwkMTAkJHt0aW1lc3RhbXBCYXNlNjR9LyR7dG9rZW5NZDV9YDtcXG4gICAgICAgICAgICBsZXQgc2FsdCA9IGFyZy5zbGljZSgwLCAzMSkgKyBcXFwidVxcXCI7XFxuICAgICAgICAgICAgbGV0IGNyeXB0U3RyID0gYmNyeXB0Lmhhc2hTeW5jKHRva2VuQmFzZTY0TWQ1LCBzYWx0KTtcXG4gICAgICAgICAgICBsZXQgY3J5cHRCYXNlNjQgPSBiYXNlNjRFbmNvZGUoY3J5cHRTdHIpO1xcbiAgICAgICAgICAgIHJldHVybiBgdjIke2NyeXB0QmFzZTY0fWA7XFxuICAgICAgICB9O1xcbiAgICAgICAgbGV0IHRva2VuU3RyaW5nID0gZ2V0TXlWYXIoXFxcIjp0b2tlblxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICBpZiAodG9rZW5TdHJpbmcgPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICAgICAgdG9rZW5TdHJpbmcgPSBnZXRWMlRva2VuKHJhbmRvbVN0cmluZyk7XFxuICAgICAgICAgICAgdG9hc3QoXFxcIuiOt+WPluaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgIGhpZGVMb2FkaW5nKCk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjp0b2tlblxcXCIsIHRva2VuU3RyaW5nKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9kZW1vbF9BamF4OiAoX2RlbW9sLCBfb2JqZWN0LCBfbmV4dCwgX3VybCkgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcCA9IHJlcXVlc3QoYXBpdmlldy5fZmlsZVV0aWwoX2RlbW9sICsgKCQudHlwZShfb2JqZWN0KSA9PSBcXFwib2JqZWN0XFxcIiA/IChcXFwiP1xcXCIgKyBhcGl2aWV3Ll9vYmplY3RUb1F1ZXJ5U3RyaW5nKF9vYmplY3QpKSA6IFxcXCJcXFwiKSksIE9iamVjdC5hc3NpZ24oe1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlgtQXBwLVZlcnNpb25cXFwiOiBcXFwiMTMuMy42XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIlgtQXBwLUNvZGVcXFwiOiBcXFwiMjMxMDIzMlxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJYLUFwaS1WZXJzaW9uXFxcIjogXFxcIjEzXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIlgtQXBwLUlkXFxcIjogXFxcImNvbS5jb29sYXBrLm1hcmtldFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJYLUFwcC1Ub2tlblxcXCI6IGdldE15VmFyKFxcXCI6dG9rZW5cXFwiLCBcXFwiMFxcXCIpLFxcbiAgICAgICAgICAgICAgICBcXFwiWC1BcHAtRGV2aWNlXFxcIjogZ2V0TXlWYXIoXFxcIjpzdHJpbmdcXFwiLCBcXFwiMFxcXCIpLFxcbiAgICAgICAgICAgICAgICBcXFwiWC1SZXF1ZXN0ZWQtV2l0aFxcXCI6IFxcXCJYTUxIdHRwUmVxdWVzdFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJYLUFwcC1DaGFubmVsXFxcIjogXFxcImNvb2xhcGtcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBib2R5OiAkLnR5cGUoX25leHQpID09IFxcXCJvYmplY3RcXFwiID8gYXBpdmlldy5fb2JqZWN0VG9RdWVyeVN0cmluZyhfbmV4dCkgOiBcXFwiXFxcIixcXG4gICAgICAgICAgICBtZXRob2Q6IF9uZXh0ID8gXFxcInBvc3RcXFwiIDogXFxcImdldFxcXCJcXG4gICAgICAgIH0sIF91cmwgPyB7XFxuICAgICAgICAgICAgb25seUhlYWRlcnM6IHRydWVcXG4gICAgICAgIH0gOiB7fSkpO1xcbiAgICAgICAgZXZhbChcXFwiX2RlbW9sTWFwID1cXFwiICsgX2RlbW9sTWFwKTtcXG4gICAgICAgIGlmIChfdXJsKSByZXR1cm4gX2RlbW9sTWFwLnVybDtcXG4gICAgICAgIGlmICghX2RlbW9sTWFwLmRhdGEpIHtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sTWFwLm1lc3NhZ2UpIHtcXG4gICAgICAgICAgICAgICAgdG9hc3QoX2RlbW9sTWFwLm1lc3NhZ2UpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgcmV0dXJuIHt9O1xcbiAgICAgICAgfTtcXG4gICAgICAgIHJldHVybiBfZGVtb2xNYXAuZGF0YTtcXG4gICAgfSxcXG4gICAgX2dldFJlZ0V4cDogKF9kZW1vbE1hcCwgX25leHQpID0+IHtcXG4gICAgICAgIGxldCBfdHlwZV8gPSBfZGVtb2xNYXAuZW50aXR5VHlwZTtcXG4gICAgICAgIGxldCBfZGVtb2xfID0gX2RlbW9sTWFwLmV4dHJhX2Zyb21BcGk7XFxuICAgICAgICBsZXQgX3RleHRfID0gX2RlbW9sTWFwLm1lc3NhZ2U7XFxuICAgICAgICBsZXQgX2lkXyA9IF9kZW1vbE1hcC5pZDtcXG4gICAgICAgIGxldCBfZGVtb2xSZXBseSA9IF9kZW1vbE1hcC5yZXBseVJvd3M7XFxuICAgICAgICBpZiAoIV9uZXh0ICYmIChfdHlwZV8gPT0gXFxcImZlZWRcXFwiIHx8IF90eXBlXyA9PSBcXFwibm9kZVJhdGluZ1xcXCIpICYmIF90ZXh0Xy5zZWFyY2goXFxcIuafpeeci+abtOWkmlxcXCIpID09IC0xKSB7XFxuICAgICAgICAgICAgX3RleHRfICs9IGFwaXZpZXcuYWRkcmVzc1RhZyhcXFwiXFxcIiwgXFxcIuafpeeci+abtOWkmlxcXCIpO1xcbiAgICAgICAgfSBlbHNlIGlmICghX25leHQgJiYgX3R5cGVfID09IFxcXCJmZWVkX3JlcGx5XFxcIiAmJiBfZGVtb2xSZXBseSAmJiAkLnR5cGUoX2RlbW9sUmVwbHkpID09IFxcXCJhcnJheVxcXCIgJiYgX2RlbW9sUmVwbHkubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIF90ZXh0XyArPSBhcGl2aWV3LmFkZHJlc3NUYWcoXFxcIlxcXCIsIFxcXCLmn6XnnIvmm7TlpJpcXFwiKTtcXG4gICAgICAgIH07XFxuICAgICAgICByZXR1cm4gX3RleHRfID8gKF90ZXh0X1xcbiAgICAgICAgICAgIC5yZXBsYWNlKG5ldyBSZWdFeHAoXFxcIlxcXFxuXFxcIiwgXFxcImdcXFwiKSwgXFxcIjxicj5cXFwiKVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC9zcmM9XFxcIiguKj8pXFxcIi9nLCAobWF0Y2gsIGdyb3VwMSkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2gucmVwbGFjZShncm91cDEsIGAke2dyb3VwMX0jb3JpZ2luYWxTaXplI2ApO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcXCJ0XFxcXC8oLio/KVxcXCIvZywgKG1hdGNoLCBncm91cDEpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5iNjQoKS5ydWxlKChncm91cDEpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRUYWJSdWxlUGFyc2UoZ3JvdXAxKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgICAgIH0sIGdyb3VwMSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvKDxhIGNsYXNzPVxcXCJmZWVkLWxpbmstdW5hbWVbXFxcXFNcXFxcc10qPzxcXFxcL2E+KS9nLCAobWF0Y2gpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbFRhZyA9IHBkZmgobWF0Y2gsIFxcXCJhJiZUZXh0XFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBfZGVtb2xVcmwgPSBwZGZoKG1hdGNoLCBcXFwiYSYmaHJlZlxcXCIpO1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9sID0gX2RlbW9sVGFnLnNwbGl0KFxcXCJAXFxcIilbMV07XFxuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaC5yZXBsYWNlKGBcXFwiJHtfZGVtb2xVcmx9XFxcImAsICgpID0+ICQoXFxcIiNub0xvYWRpbmcjXFxcIikuYjY0KCkubGF6eVJ1bGUoKF9kZW1vbCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvdXNlci9zcGFjZVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1aWQ6IF9kZW1vbFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMoX2RlbW9sTWFwKS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5ydWxlKChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VXNlclJ1bGVQYXJzZShfZGVtb2xNYXApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIF9kZW1vbE1hcClcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICB9LCBfZGVtb2wpKTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIC5yZXBsYWNlKC8oPGEgY2xhc3M9XFxcImZlZWQtbGluay10YWdcXFwiW1xcXFxTXFxcXHNdKj88XFxcXC9hPikvZywgKG1hdGNoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBfZGVtb2xUYWcgPSBwZGZoKG1hdGNoLCBcXFwiYSYmVGV4dFxcXCIpO1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9sVXJsID0gcGRmaChtYXRjaCwgXFxcImEmJmhyZWZcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbF8gPSBfZGVtb2xUYWcuc3BsaXQoXFxcIiNcXFwiKVsxXTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoLnJlcGxhY2UoYFxcXCIke19kZW1vbFVybH1cXFwiYCwgKCkgPT4gJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLmI2NCgpLnJ1bGUoKF9kZW1vbF8pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRUYWJSdWxlUGFyc2UoX2RlbW9sXyk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgICAgICB9LCBfZGVtb2xfKSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAucmVwbGFjZSgvXFxcIiBcXFwiL2csIGFwaXZpZXcuZW1wdHkpXFxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcXCJcXFwiL2csICgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5iNjQoKS5ydWxlKChfaWRfLCBfZGVtb2xfLCBfdHlwZV8pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoX3R5cGVfID09IFxcXCJmZWVkX3JlcGx5XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvZmVlZC9yZXBseUxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBfaWRfLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0VHlwZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3NNb2RlOiAwLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZWVkVHlwZTogXFxcImZlZWRfcmVwbHlcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1N0YXR1czogMCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUZlZWRBdXRob3I6IDBcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShfZGVtb2xNYXAsIF9pZF8pO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfdHlwZV8gPT0gXFxcImZlZWRcXFwiIHx8IF90eXBlXyA9PSBcXFwibm9kZVJhdGluZ1xcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRSdWxlUGFyc2UoX2lkXywgX2RlbW9sXyk7XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICAgICAgfSwgX2lkXywgX2RlbW9sXywgX3R5cGVfKTtcXG4gICAgICAgICAgICB9KSkgOiBfdGV4dF87XFxuICAgIH0sXFxuICAgIF9iYXNlUGFyc2U6ICgpID0+IHtcXG4gICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlVG9rZW5TdHJpbmcoKTtcXG4gICAgICAgIGxldCB0b29sZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICBpZiAoIWZpbGVFeGlzdCh0b29sZG93bikpIHNhdmVGaWxlKHRvb2xkb3duLCBKU09OLnN0cmluZ2lmeSh7fSksIDApO1xcbiAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZSh0b29sZG93bikpO1xcbiAgICAgICAgaWYgKGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdID09IG51bGwpIHtcXG4gICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXSA9IHt9O1xcbiAgICAgICAgICAgIHNhdmVGaWxlKHRvb2xkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgfTtcXG4gICAgICAgIFtcXFwidXNlclxcXCIsIFxcXCJ0b3BpY1xcXCIsIFxcXCJjYXJkXFxcIiwgXFxcImFsYnVtXFxcIiwgXFxcInByb2R1Y3RcXFwiLCBcXFwiYXBrXFxcIiwgXFxcImR5aFxcXCJdW1xcXCJmb3JFYWNoXFxcIl0oaXQgPT4ge1xcbiAgICAgICAgICAgIGlmIChhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtpdF0gPT0gbnVsbCkge1xcbiAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtpdF0gPSBbXTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUodG9vbGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IHRpbmRleCA9IGdldE15VmFyKFxcXCI6YmFzZVRhZ1xcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICBsZXQgeGluZGV4ID0gZ2V0TXlWYXIodGluZGV4ICsgXFxcIjpiYXNlVGF4XFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgIGxldCBfb2JqZWN0QXJyYXkgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiOmJhc2VUYWJcXFwiLCBbXSk7XFxuICAgICAgICBpZiAoX29iamVjdEFycmF5Lmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgZGVtb2xUaW1lID0gcGFyc2VJbnQoRGF0ZS5ub3coKSAvIDEwMDApLnRvU3RyaW5nKCk7XFxuICAgICAgICAgICAgX29iamVjdEFycmF5ID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L21haW4vaW5pdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgZXhwOiAwLFxcbiAgICAgICAgICAgICAgICB0OiBkZW1vbFRpbWVcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBfb2JqZWN0QXJyYXkgPSBfb2JqZWN0QXJyYXkuZmlsdGVyKF8gPT4gXy5lbnRpdHlUZW1wbGF0ZSA9PSBcXFwiY29uZmlnQ2FyZFxcXCIpO1xcbiAgICAgICAgICAgIF9vYmplY3RBcnJheSA9IF9vYmplY3RBcnJheS5jb25jYXQoW3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLorqLpmIVcXFwiLFxcbiAgICAgICAgICAgICAgICBlbnRpdGllczogW11cXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5pCc57SiXFxcIixcXG4gICAgICAgICAgICAgICAgZW50aXRpZXM6IFtdXFxuICAgICAgICAgICAgfV0pO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCI6YmFzZVRhYlxcXCIsIF9vYmplY3RBcnJheSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcCA9IHN0b3JhZ2UwLmdldE15VmFyKHRpbmRleCArIFxcXCI6YmFzZVRhYlxcXCIsIFtdKTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICBfZGVtb2xNYXAgPSBfb2JqZWN0QXJyYXlbdGluZGV4XVtcXFwiZW50aXRpZXNcXFwiXTtcXG4gICAgICAgICAgICBfZGVtb2xNYXAgPSBfZGVtb2xNYXAuZmlsdGVyKF8gPT4gXy50aXRsZSAhPSBcXFwi5YWz5rOoXFxcIiAmJiBfLnRpdGxlICE9IFxcXCLkuozmiYtcXFwiKTtcXG4gICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcih0aW5kZXggKyBcXFwiOmJhc2VUYWJcXFwiLCBfZGVtb2xNYXApO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfb2JqZWN0QXJyYXkubWFwKChpdGVtLCBpKSA9PiAoe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaSA9PSB0aW5kZXggPyBhcGl2aWV3LnJpY2goYXBpdmlldy5zdHJvbmcoYXBpdmlldy5jb2xvcihpdGVtLnRpdGxlKSkpIDogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpLCBlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiOmxpbmtOZXh0XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6bGlua1RhZ1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjpiYXNlVGFnXFxcIiwgaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBpLCBhcGl2aWV3LmVtcHR5KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaSA9PSB0aW5kZXggPyBcXFwiIzIwRkE3Mjk4XFxcIiA6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSkpO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuiuvue9rlxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRNZW51UGFyc2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBcXFwi6K6+572u772c6aG16Z2iXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQoX2RlbW9sTWFwLm1hcCgoaXRlbSwgaSkgPT4gKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGkgPT0geGluZGV4ID8gYXBpdmlldy5yaWNoKGFwaXZpZXcuc3Ryb25nKGFwaXZpZXcuY29sb3IoaXRlbS50aXRsZSkpKSA6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaSwgZW1wdHksIHRpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiOmxpbmtOZXh0XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6bGlua1RhZ1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIodGluZGV4ICsgXFxcIjpiYXNlVGF4XFxcIiwgaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBpLCBhcGl2aWV3LmVtcHR5LCB0aW5kZXgpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpID09IHhpbmRleCA/IFxcXCIjMjBGQTcyOThcXFwiIDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSkpO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGxldCBfZGVtb2xMZW4gPSBfb2JqZWN0QXJyYXkubGVuZ3RoO1xcbiAgICAgICAgc3dpdGNoIChfb2JqZWN0QXJyYXlbdGluZGV4XSkge1xcbiAgICAgICAgICAgIGNhc2UgX29iamVjdEFycmF5W19kZW1vbExlbiAtIDFdOlxcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9zZWFyY2hQYXJzZSgpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF9vYmplY3RBcnJheVtfZGVtb2xMZW4gLSAyXTpcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0U3Vic2NyUGFyc2UoKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fZmlyc3RwYWdlX1BhcnNlKF9kZW1vbE1hcFt4aW5kZXhdKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9O1xcbiAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgfSxcXG4gICAgX3NlYXJjaFBhcnNlOiAoKSA9PiB7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQga2V5d29yZCA9IGdldE15VmFyKFxcXCI6a2V5d29yZFxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgIGxldCB0eXBlID0gZ2V0TXlWYXIoXFxcInNlYXJjaFR5cGVcXFwiLCBcXFwi5Yqo5oCBXFxcIik7XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnN0cm9uZyhhcGl2aWV3LmJpZyhcXFwi5pCc57Si57G75Z6LXFxcIikpICsgYDx1PiR7dHlwZX08L3U+YCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCh0eXBlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChbXFxcIuWKqOaAgVxcXCIsIFxcXCLlupTnlKhcXFwiLCBcXFwi5ri45oiPXFxcIiwgXFxcIueUqOaIt1xcXCIsIFxcXCLor53pophcXFwiLCBcXFwi5pWw56CBXFxcIiwgXFxcIuS6jOaJi1xcXCIsIFxcXCLpl67nrZRcXFwiLCBcXFwi5bqU55So6ZuGXFxcIiwgXFxcIueci+eci+WPt1xcXCJdLCAzLCBcXFwi5pCc57Si57G75Z6LOlxcXCIgKyB0eXBlKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJzZWFyY2hUeXBlXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWIh+aNouS4uiBcXFwiICsgaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfSwgdHlwZSksXFxuICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS50YWJzZWFyY2gsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmkJzntKJcXFwiLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwi5pCc5L2g5oOz6KaB55qELi4uLlxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGtleXdvcmRzID0gaW5wdXQudHJpbSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjprZXl3b3JkXFxcIiwga2V5d29yZHMpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGtleXdvcmRzKSBhcGl2aWV3Ll9HZXRfa2V5d29yZChpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoXFxcIjprZXl3b3JkXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChrZXl3b3JkID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgbGV0IF9vYmplY3RBcnJheSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCI6c2VhcmNoVGFnXFxcIiwgW10pO1xcbiAgICAgICAgICAgIGlmIChfb2JqZWN0QXJyYXkubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICAgICAgX29iamVjdEFycmF5ID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJob3RTZWFyY2hcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaDogMCxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblR5cGU6IFxcXCJhbGxcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBfb2JqZWN0QXJyYXkgPSBfb2JqZWN0QXJyYXkuZmluZChfID0+IF8uZW50aXR5VGVtcGxhdGUgPT0gXFxcImhvdFNlYXJjaFxcXCIpO1xcbiAgICAgICAgICAgICAgICBfb2JqZWN0QXJyYXkgPSBfb2JqZWN0QXJyYXkuZW50aXRpZXMubWFwKGl0ID0+IGl0LnRpdGxlKTtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcIjpzZWFyY2hUYWdcXFwiLCBfb2JqZWN0QXJyYXkpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LmJpZyhcXFwi8J+TiiDng63pl6jmkJzntKJcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5ob3QsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfaWNvblxcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9vYmplY3RBcnJheS5zbGljZSgwLCAxMCkubWFwKChpdCkgPT4gKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5zbWFsbChhcGl2aWV3LmdyYXkoaXQpKSksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOmtleXdvcmRcXFwiLCBpdCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fR2V0X2tleXdvcmQoaXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBpdCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIlxcbiAgICAgICAgICAgICAgICB9KSkpO1xcbiAgICAgICAgICAgICAgICBsZXQgbWVtID0gc3RvcmFnZTAuZ2V0SXRlbShNWV9SVUxFLnRpdGxlLCBbXSk7XFxuICAgICAgICAgICAgICAgIGlmIChtZW0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuYmlnKFxcXCLwn5OdIOaQnOe0ouWOhuWPslxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5kZWxldGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCLmmK/lkKbmuIXpmaTmkJzntKLorrDlvZXvvJ9cXFwiKS5jb25maXJtKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oTVlfUlVMRS50aXRsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmuIXpmaTmiJDlip9+XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IG1lbS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ID0gbWVtW2ldO1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LnNtYWxsKGFwaXZpZXcuZ3JheShpdCkpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6a2V5d29yZFxcXCIsIGl0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fR2V0X2tleXdvcmQoaXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpdCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJmbGV4X2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBhcGl2aWV3Ll9leHRyYVNlYXJjaChpdClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi5Yqo5oCBXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9zZWFyY2hcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcImZlZWRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZlZWRUeXBlOiBcXFwiYWxsXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiBcXFwiZGVmYXVsdFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QW5vbnltb3VzOiBcXFwiLTFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLmlbDnoIFcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwicHJvZHVjdFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93QW5vbnltb3VzOiBcXFwiLTFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiBcXFwiXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi5bqU55SoXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9zZWFyY2hcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcImFwa1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0OiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiBcXFwiZGVmYXVsdFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi5ri45oiPXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9zZWFyY2hcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcImdhbWVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhdDogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogXFxcImRlZmF1bHRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaFZhbHVlOiBrZXl3b3JkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIueUqOaIt1xcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvc2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFxcXCJ1c2VyXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbm9ueW1vdXM6IFxcXCItMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLor53pophcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiZmVlZFRvcGljXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbm9ueW1vdXM6IFxcXCItMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLpl67nrZRcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiYXNrXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBmZWVkVHlwZTogXFxcImFsbFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi5bqU55So6ZuGXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9zZWFyY2hcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXFxcImFsYnVtXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbm9ueW1vdXM6IFxcXCItMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLnnIvnnIvlj7dcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiZHloXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hWYWx1ZToga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dBbm9ueW1vdXM6IFxcXCItMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLkuozmiYtcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3NlYXJjaFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBcXFwiZXJzaG91XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0OiBcXFwiZGVmYXVsdFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWU6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiAxLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlYWxfdHlwZTogMCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXR5X2NvZGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzX2xpbms6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2hhbmdlX3R5cGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyc2hvdV90eXBlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0X2lkOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB0YWdzOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgaWYgKF9kZW1vbE1hcCA9PSBudWxsIHx8ICQudHlwZShfZGVtb2xNYXApID09IFxcXCJvYmplY3RcXFwiKSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IFtdO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoX2RlbW9sTWFwKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9zZWFyY2hHb29kc1BhcnNlOiAoKSA9PiB7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQga2V5d29yZCA9IGdldE15VmFyKFxcXCI6a2V5d29yZEdvb2RcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICBsZXQgdHlwZSA9IGdldE15VmFyKFxcXCJzZWFyY2hHb29kVHlwZVxcXCIsIFxcXCLkuqzkuJxcXFwiKTtcXG4gICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5zdHJvbmcoYXBpdmlldy5iaWcoXFxcIuaQnOe0ouexu+Wei1xcXCIpKSArIGA8dT4ke3R5cGV9PC91PmAsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodHlwZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoW1xcXCLkuqzkuJxcXFwiLCBcXFwi5reY5a6dXFxcIiwgXFxcIuaLvOWkmuWkmlxcXCJdLCAzLCBcXFwi5pCc57Si57G75Z6LOlxcXCIgKyB0eXBlKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJzZWFyY2hHb29kVHlwZVxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lt7LliIfmjaLkuLogXFxcIiArIGlucHV0O1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0sIHR5cGUpLFxcbiAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikudGFic2VhcmNoLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5pCc57SiXFxcIixcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuaQnOS9oOaDs+imgeeahC4uLi5cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBrZXl3b3JkcyA9IGlucHV0LnRyaW0oKTtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6a2V5d29yZEdvb2RcXFwiLCBrZXl3b3Jkcyk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoa2V5d29yZHMpIGFwaXZpZXcuX0dldF9rZXl3b3JkKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRNeVZhcihcXFwiOmtleXdvcmRHb29kXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChrZXl3b3JkID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgbGV0IF9vYmplY3RBcnJheSA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCI6c2VhcmNoR29vZFRhZ1xcXCIsIFtdKTtcXG4gICAgICAgICAgICBpZiAoX29iamVjdEFycmF5Lmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgICAgIF9vYmplY3RBcnJheSA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9nb29kcy9zZWFyY2hIb3RXb3Jkc1xcXCIpO1xcbiAgICAgICAgICAgICAgICBpZiAoJC50eXBlKF9vYmplY3RBcnJheSkgIT0gXFxcImFycmF5XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgX29iamVjdEFycmF5ID0gX29iamVjdEFycmF5LnNwbGl0KFxcXCIsXFxcIik7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCI6c2VhcmNoR29vZFRhZ1xcXCIsIF9vYmplY3RBcnJheSk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgIGlmIChfb2JqZWN0QXJyYXkubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuYmlnKFxcXCLwn5OKIOeDremXqOaQnOe0olxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5ob3QsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9pY29uXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfb2JqZWN0QXJyYXkuc2xpY2UoMCwgMTApLm1hcCgoaXQpID0+ICh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LnNtYWxsKGFwaXZpZXcuZ3JheShpdCkpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6a2V5d29yZEdvb2RcXFwiLCBpdCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX0dldF9rZXl3b3JkKGl0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KSkpO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBsZXQgbWVtID0gc3RvcmFnZTAuZ2V0SXRlbShNWV9SVUxFLnRpdGxlLCBbXSk7XFxuICAgICAgICAgICAgICAgIGlmIChtZW0ubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuYmlnKFxcXCLwn5OdIOaQnOe0ouWOhuWPslxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5kZWxldGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCLmmK/lkKbmuIXpmaTmkJzntKLorrDlvZXvvJ9cXFwiKS5jb25maXJtKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oTVlfUlVMRS50aXRsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmuIXpmaTmiJDlip9+XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IG1lbS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ID0gbWVtW2ldO1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LnNtYWxsKGFwaXZpZXcuZ3JheShpdCkpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6a2V5d29yZEdvb2RcXFwiLCBpdCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX0dldF9rZXl3b3JkKGl0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaXQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogYXBpdmlldy5fZXh0cmFTZWFyY2goaXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIuS6rOS4nFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvZ29vZHMvc2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQ6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydE5hbWU6IFxcXCJpbk9yZGVyQ291bnQzMERheXNcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ291cG9uOiAxLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2UgXFxcIua3mOWunVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvZ29vZHMvdGFvYmFvU2VhcmNoXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHE6IGtleXdvcmQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgc29ydDogXFxcInRvdGFsX3NhbGVzXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIFxcXCLmi7zlpJrlpJpcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3BhZ2UvZGF0YUxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiL2dvb2RzL3NlYXJjaFBkZEdvb2RzTGlzdFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZDoga2V5d29yZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0VHlwZTogNixcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgaWYgKF9kZW1vbE1hcCA9PSBudWxsIHx8ICQudHlwZShfZGVtb2xNYXApID09IFxcXCJvYmplY3RcXFwiKSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IFtdO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoX2RlbW9sTWFwKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9maXJzdHBhZ2VfUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBkZW1vbFRpbWUgPSBwYXJzZUludChEYXRlLm5vdygpIC8gMTAwMCkudG9TdHJpbmcoKTtcXG4gICAgICAgIGxldCBfZGVtb2xVcmwgPSBfZGVtb2xNYXAudXJsO1xcbiAgICAgICAgbGV0IF9kZW1vbE5hbWUgPSBfZGVtb2xNYXAudGl0bGU7XFxuICAgICAgICBpZiAoX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcIi9tYWluL1xcXCIpKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L21haW4vaW5kZXhWOFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZSxcXG4gICAgICAgICAgICAgICAgZmlyc3RMYXVuY2g6IDAsXFxuICAgICAgICAgICAgICAgIGluc3RhbGxUaW1lOiBkZW1vbFRpbWUsXFxuICAgICAgICAgICAgICAgIGlkczogXFxcIlxcXCJcXG4gICAgICAgICAgICB9KSwgXFxcImZhbHNlXFxcIik7XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKF9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCIvcGFnZVxcXCIpKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3BhZ2UvZGF0YUxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgIHVybDogX2RlbW9sVXJsLFxcbiAgICAgICAgICAgICAgICB0aXRsZTogX2RlbW9sTmFtZSxcXG4gICAgICAgICAgICAgICAgc3ViVGl0bGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChfZGVtb2xVcmwgPT0gXFxcIi91c2VyL2R5aFN1YnNjcmliZVxcXCIpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiL2R5aC9yZWNvbW1lbmRMaXN0PyZ0aXRsZT3nq5nlhoXorqLpmIVcXFwiLFxcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuermeWGheiuoumYhVxcXCIsXFxuICAgICAgICAgICAgICAgIHN1YlRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgICAgIH0pKTtcXG4gICAgICAgIH07XFxuICAgICAgICBpZiAoX2RlbW9sVXJsID09IFxcXCIvcHJvZHVjdC9jYXRlZ29yeUxpc3RcXFwiKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0TGlua1RhYlBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoYC92NiR7X2RlbW9sVXJsfWApKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9sYXlvdXREZXRlcm1pbmVQYXJzZTogKF9kZW1vbE1hcCwgX2RlbW9sKSA9PiB7XFxuICAgICAgICBsZXQgX2RlbW9sID0gX2RlbW9sID8gX2RlbW9sIDogXFxcIlxcXCI7XFxuICAgICAgICBsZXQgX2xpbmtOZXh0ID0gKCkgPT4gZ2V0TXlWYXIoXFxcIjpsaW5rTmV4dFxcXCIgKyBfZGVtb2wsIFxcXCJcXFwiKTtcXG4gICAgICAgIGxldCBfZGVtb2xOZXh0ID0gX2RlbW9sTWFwLnNvbWUoaXQgPT4gaXQuZW50aXR5VGVtcGxhdGUgPT09IFxcXCJzb3J0U2VsZWN0Q2FyZFxcXCIpO1xcbiAgICAgICAgaWYgKF9kZW1vbE5leHQpIHtcXG4gICAgICAgICAgICBfZGVtb2xNYXAgPSBfZGVtb2xNYXAuZmlsdGVyKGl0ID0+IGl0LmVudGl0eVRlbXBsYXRlID09PSBcXFwic29ydFNlbGVjdENhcmRcXFwiKTtcXG4gICAgICAgIH07XFxuICAgICAgICBwdXRNeVZhcihcXFwiOm5leHRcXFwiICsgX2RlbW9sLCBfZGVtb2xOZXh0ID8gXFxcInRydWVcXFwiIDogXFxcIlxcXCIpO1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcF8gPSAoX2xpbmtOZXh0KCkgPT0gXFxcInRydWVcXFwiICYmICFfZGVtb2wpID8gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcIjpkZW1vbE1hcFxcXCIgKyBfZGVtb2wsIFtdKSA6IF9kZW1vbE1hcDtcXG4gICAgICAgIGxldCBfZGVtb2xNYXAgPSBfZGVtb2xNYXAubGVuZ3RoID4gMCA/IF9kZW1vbE1hcCA6IF9kZW1vbE1hcF87XFxuICAgICAgICBpZiAoX2xpbmtOZXh0KCkgPT0gXFxcIlxcXCIgJiYgX2RlbW9sTWFwLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiOmRlbW9sTWFwXFxcIiArIF9kZW1vbCwgX2RlbW9sTWFwKTtcXG4gICAgICAgIH07XFxuICAgICAgICBfZGVtb2xNYXAuZm9yRWFjaCgoaXQsIGkpID0+IHtcXG4gICAgICAgICAgICBfZGVtb2xUeXBlID0gaXQuZW50aXR5VGVtcGxhdGU7XFxuICAgICAgICAgICAgX3R5cGVfID0gaXQuZW50aXR5VHlwZTtcXG4gICAgICAgICAgICBfZGVtb2xNYXBzID0gaXQuZW50aXRpZXM7XFxuICAgICAgICAgICAgaWYgKF9kZW1vbFR5cGUgPT0gXFxcImltYWdlQ2Fyb3VzZWxDYXJkXzFcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiOmNhcm91c2VsTWFwXFxcIiwgSlNPTi5zdHJpbmdpZnkoX2RlbW9sTWFwcykpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcIjpydWxlTWFwXFxcIiwgSlNPTi5zdHJpbmdpZnkoTVlfUlVMRSkpO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZ2V0UGF0aChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9DYXJvdXNlbC5odG1sXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwiMTM1JiZsaXN0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1YTogXFxcIkRhbHZpay8yLjEuMCAoTGludXg7IFU7IEFuZHJvaWQgMTA7IFYyMzA0QSBCdWlsZC9VUDFBLjIzMTAwNS4wMDcpICgjQnVpbGQ7IHZpdm87IFYyMzA0QTsgVVAxQS4yMzEwMDUuMDA3IHJlbGVhc2Uta2V5czsgMTApICtDb29sTWFya2V0LzEzLjMuNi0yMzEwMjMyLXVuaXZlcnNhbFxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfZGVtb2xUeXBlID09IFxcXCJpbWFnZVNxdWFyZVNjcm9sbENhcmRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiOmNhcm91c2VsTWFwXFxcIiwgSlNPTi5zdHJpbmdpZnkoX2RlbW9sTWFwcykpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcIjpydWxlTWFwXFxcIiwgSlNPTi5zdHJpbmdpZnkoTVlfUlVMRSkpO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogZ2V0UGF0aChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9TY3JvbGxDYXJkLmh0bWxcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCI4MCYmbGlzdFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdWE6IFxcXCJEYWx2aWsvMi4xLjAgKExpbnV4OyBVOyBBbmRyb2lkIDEwOyBWMjMwNEEgQnVpbGQvVVAxQS4yMzEwMDUuMDA3KSAoI0J1aWxkOyB2aXZvOyBWMjMwNEE7IFVQMUEuMjMxMDA1LjAwNyByZWxlYXNlLWtleXM7IDEwKSArQ29vbE1hcmtldC8xMy4zLjYtMjMxMDIzMi11bml2ZXJzYWxcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX2RlbW9sVHlwZSA9PSBcXFwiaWNvbkxpbmtHcmlkQ2FyZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQoX2RlbW9sTWFwcy5tYXAoXyA9PiAoe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoXy5waWMpLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAoIV8udXJsLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSAmJiAhXy51cmwuc3RhcnRzV2l0aChcXFwiaHR0cHNcXFwiKSkgPyAkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNnYW1lVGhlbWUjZnlwYWdlXFxcIikucnVsZSgoXykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0TGlua1J1bGVQYXJzZShfKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgXykgOiBfLnVybCxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBfZGVtb2xNYXBzLmxlbmd0aCA+IDQgPyBcXFwiaWNvbl81XFxcIiA6IFxcXCJpY29uX3NtYWxsXzRcXFwiXFxuICAgICAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfZGVtb2xUeXBlID09IFxcXCJpY29uVGFiTGlua0dyaWRDYXJkXFxcIiB8fCBfZGVtb2xUeXBlID09IFxcXCJ2ZXJ0aWNhbENvbHVtbnNGdWxsUGFnZUNhcmRcXFwiIHx8IF9kZW1vbFR5cGUgPT0gXFxcInNvcnRTZWxlY3RDYXJkXFxcIikge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOmxpbmtOZXh0XFxcIiArIF9kZW1vbCwgXFxcInRydWVcXFwiKTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0TGlua1RhYlBhcnNlKF9kZW1vbE1hcHMsIF9kZW1vbCk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfZGVtb2xUeXBlID09IFxcXCJpY29uTGlzdENhcmRcXFwiIHx8IChfZGVtb2xUeXBlID09IFxcXCJsaXN0Q2FyZFxcXCIgJiYgX2RlbW9sICE9IFxcXCJmYWxzZVxcXCIpIHx8IF9kZW1vbFR5cGUgPT0gXFxcImZlZWRMaXN0Q2FyZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoX2RlbW9sTWFwcyk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfZGVtb2xUeXBlID09IFxcXCJpbWFnZVRleHRHcmlkQ2FyZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0R3JpZENhcmRQYXJzZShfZGVtb2xNYXBzKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKChfZGVtb2xUeXBlID09IFxcXCJ0ZXh0Q2FyZFxcXCIgfHwgX2RlbW9sVHlwZSA9PSBcXFwiaGVhZENhcmRcXFwiKSAmJiBpdC50aXRsZSAmJiBpdC5kZXNjcmlwdGlvbikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRUZXh0Q2FyZFBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFR5cGUgPT0gXFxcIm5vTW9yZURhdGFDYXJkXFxcIikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5zbWFsbChhcGl2aWV3LmdyYXkoaXQudGl0bGUpKSksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX2RlbW9sVHlwZSA9PSBudWxsICYmIF90eXBlXyA9PSBcXFwidXNlclxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VXNlclBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF90eXBlXyA9PSBcXFwiY29sbGVjdGlvblxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0Q29sbGVjdGlvblBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF90eXBlXyA9PSBcXFwiYWxidW1cXFwiKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dEFsYnVtUGFyc2UoaXQpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX3R5cGVfID09IFxcXCJsaXZlVG9waWNcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpdmVQYXJzZShpdCk7XFxuICAgICAgICAgICAgfSBlbHNlIGlmIChfdHlwZV8gPT0gXFxcInRvcGljXFxcIiB8fCBfdHlwZV8gPT0gXFxcInByb2R1Y3RcXFwiIHx8IF90eXBlXyA9PSBcXFwiYXBrXFxcIiB8fCBfdHlwZV8gPT0gXFxcImR5aFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VGFnUGFyc2UoaXQpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoX3R5cGVfID09IFxcXCJwZWFyX2dvb2RzXFxcIikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRQZWFyR29vZFBhcnNlKGl0KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF90eXBlXyA9PSBcXFwiZmVlZFxcXCIgfHwgX3R5cGVfID09IFxcXCJmZWVkX3JlcGx5XFxcIiB8fCBfdHlwZV8gPT0gXFxcIm5vZGVSYXRpbmdcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGlmICghaXQuZXh0cmFfZnJvbUFwaSkge1xcbiAgICAgICAgICAgICAgICAgICAgaXQuZXh0cmFfZnJvbUFwaSA9IF9kZW1vbDtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgaWYgKCFpdC5pZCkgaXQuaWQgPSBpdC5mZWVkX2lkO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRGZWVkUGFyc2UoaXQpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9FbmRfUGFyc2UoKTtcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9sYXlvdXRUZXh0Q2FyZFBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBfZGVtb2xNYXAubWVzc2FnZSA9IGAke2FwaXZpZXcuYmlnKGFwaXZpZXcuc3Ryb25nKF9kZW1vbE1hcC50aXRsZSkpfSR7X2RlbW9sTWFwLnN1YlRpdGxlID8gYDxicj4ke19kZW1vbE1hcC5zdWJUaXRsZX1gIDogXFxcIlxcXCJ9PGJyPjxicj4ke19kZW1vbE1hcC5kZXNjcmlwdGlvbn1gO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuX2dldFJlZ0V4cChfZGVtb2xNYXAsIHRydWUpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2xheW91dExpdmVQYXJzZTogKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE1hcC50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiAoX2RlbW9sTWFwLmxpdmVfc3RhdHVzID09IC0xID8gXFxcIuW3sue7k+adnyAtIFxcXCIgOiBcXFwiXFxcIikgKyBfZGVtb2xNYXAuZGVzY3JpcHRpb24sXFxuICAgICAgICAgICAgaW1nOiBhcGl2aWV3Ll9nZW5lcmF0ZUltYWdlKF9kZW1vbE1hcC5waWNfdXJsKSxcXG4gICAgICAgICAgICB1cmw6IF9kZW1vbE1hcC52aWRlb19saXZlX3VybCxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcIm1vdmllXzJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2xheW91dEFsYnVtUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xNYXAudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogYCR7X2RlbW9sTWFwLmRlc2NyaXB0aW9ufVxcXFxuJHtfZGVtb2xNYXAuYXBrbnVtfeS4quW6lOeUqGAsXFxuICAgICAgICAgICAgaW1nOiBhcGl2aWV3Ll9nZW5lcmF0ZUltYWdlKF9kZW1vbE1hcC5sb2dvKSxcXG4gICAgICAgICAgICB1cmw6ICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5ydWxlKChfZGVtb2xVcmwpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRBbGJ1bVJ1bGVQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvYWxidW0vYXBrTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBfZGVtb2xVcmwsXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICB9LCBfZGVtb2xNYXAuaWQpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBhcGl2aWV3Ll9leHRyYV90b29sKF9kZW1vbE1hcCwgXFxcImFsYnVtXFxcIiwgXFxcImlkXFxcIilcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX2xheW91dFBlYXJHb29kUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xNYXAudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogYCR7X2RlbW9sTWFwLmdvb2RzX2J1eV90ZXh0fVxcXFxuJHtfZGVtb2xNYXAuZ29vZHNfcHJvbW9fdGl0bGV9YCxcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLmdvb2RzX3BpYyksXFxuICAgICAgICAgICAgdXJsOiAkKGFwaXZpZXcuZW1wdHkpLmxhenlSdWxlKCh7XFxuICAgICAgICAgICAgICAgIGdvb2RzX3VybCxcXG4gICAgICAgICAgICAgICAgZ29vZHNfYnV5X3VybFxcbiAgICAgICAgICAgIH0pID0+IGRlY29kZVVSSUNvbXBvbmVudCgkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIikuX2RlbW9sX0FqYXgoXFxcIi92Ni9nb29kcy9nZXRCdXlVcmxcXFwiLCBudWxsLCB7XFxuICAgICAgICAgICAgICAgIGdvb2RzX3VybDogZ29vZHNfdXJsLFxcbiAgICAgICAgICAgICAgICBnb29kc19idXlfdXJsOiBnb29kc19idXlfdXJsXFxuICAgICAgICAgICAgfSkpLCBfZGVtb2xNYXApLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCJcXG4gICAgICAgIH0pO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0Q29sbGVjdGlvblBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogX2RlbW9sTWFwLnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IGAke19kZW1vbE1hcC5pc19vcGVuX3RpdGxlfVxcXFxuJHtfZGVtb2xNYXAuaXRlbV9udW195Liq5YaF5a65YCxcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLmNvdmVyX3BpYyksXFxuICAgICAgICAgICAgdXJsOiBfZGVtb2xNYXAuaXNfb3Blbl90aXRsZSA9PSBcXFwi5YWs5byAXFxcIiA/ICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5ydWxlKChfZGVtb2xVcmwpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvY29sbGVjdGlvbi9pdGVtTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBfZGVtb2xVcmwsXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pLCBfZGVtb2xVcmwpO1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIF9kZW1vbE1hcC5pZCkgOiBgdG9hc3Q6Ly8ke19kZW1vbE1hcC5pc19vcGVuX3RpdGxlfWAsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9sYXlvdXRHcmlkQ2FyZFBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfZGVtb2xNYXAubWFwKF8gPT4gKHtcXG4gICAgICAgICAgICB0aXRsZTogXy50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBcXFwiMFxcXCIsXFxuICAgICAgICAgICAgaW1nOiBhcGl2aWV3Ll9nZW5lcmF0ZUltYWdlKF8ucGljKSxcXG4gICAgICAgICAgICB1cmw6ICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5ydWxlKChfKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbE5hbWUgPSBfLnRpdGxlO1xcbiAgICAgICAgICAgICAgICBsZXQgX2RlbW9sVXJsID0gXy51cmw7XFxuICAgICAgICAgICAgICAgIGlmIChfZGVtb2xVcmwuc3RhcnRzV2l0aChcXFwiL3BhZ2VcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sVXJsID0gX2RlbW9sVXJsLnNwbGl0KFxcXCI9XFxcIilbMV07XFxuICAgICAgICAgICAgICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBfZGVtb2xVcmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xOYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJUaXRsZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sVXJsID0gX2RlbW9sVXJsLnNwbGl0KFxcXCIvZmVlZC9cXFwiKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dFJ1bGVQYXJzZShfZGVtb2xVcmwpO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIF8pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfMVxcXCJcXG4gICAgICAgIH0pKSk7XFxuICAgICAgICBpZiAoX2RlbW9sTWFwLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fRW5kX1BhcnNlKCk7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfbGF5b3V0VXNlclBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBfZGVtb2xNYXAgPSBfZGVtb2xNYXAudXNlckluZm8gfHwgX2RlbW9sTWFwO1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcHMgPSB7fTtcXG4gICAgICAgIF9kZW1vbE1hcHMudXNlcm5hbWUgPSBfZGVtb2xNYXAudXNlcm5hbWU7XFxuICAgICAgICBfZGVtb2xNYXBzLnVzZXJBdmF0YXIgPSBfZGVtb2xNYXAudXNlckF2YXRhcjtcXG4gICAgICAgIF9kZW1vbE1hcHMudWlkID0gX2RlbW9sTWFwLnVpZDtcXG4gICAgICAgIF9kZW1vbE1hcHMuZW50aXR5VHlwZSA9IF9kZW1vbE1hcC5lbnRpdHlUeXBlO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE1hcC51c2VybmFtZSxcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLnVzZXJBdmF0YXIpLFxcbiAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNmeXBhZ2VcXFwiKS5ydWxlKChfZGVtb2xNYXBzKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dFVzZXJSdWxlUGFyc2UoX2RlbW9sTWFwcyk7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgfSwgX2RlbW9sTWFwcyksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zX2NlbnRlclxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBg55So5oi3LyR7X2RlbW9sTWFwLnVzZXJuYW1lfWAsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogYXBpdmlldy5fZXh0cmFfdG9vbChfZGVtb2xNYXBzLCBcXFwidXNlclxcXCIsIFxcXCJ1aWRcXFwiLCB0cnVlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0VGFnUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2xNYXBzID0ge307XFxuICAgICAgICBfZGVtb2xNYXBzLnRpdGxlID0gX2RlbW9sTWFwLnRpdGxlO1xcbiAgICAgICAgX2RlbW9sTWFwcy5sb2dvID0gX2RlbW9sTWFwLmxvZ287XFxuICAgICAgICBfZGVtb2xNYXBzLnVybCA9IF9kZW1vbE1hcC51cmw7XFxuICAgICAgICBfZGVtb2xNYXBzLmlkID0gX2RlbW9sTWFwLmlkO1xcbiAgICAgICAgX2RlbW9sTWFwcy5lbnRpdHlUeXBlID0gX2RlbW9sTWFwLmVudGl0eVR5cGU7XFxuICAgICAgICBzd2l0Y2ggKF9kZW1vbE1hcHMuZW50aXR5VHlwZSkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcInRvcGljXFxcIjpcXG4gICAgICAgICAgICAgICAgX3RhZyA9IFxcXCJ0b3BpY1xcXCI7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcInByb2R1Y3RcXFwiOlxcbiAgICAgICAgICAgICAgICBfdGFnID0gXFxcInByb2R1Y3RcXFwiO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIFxcXCJkeWhcXFwiOlxcbiAgICAgICAgICAgICAgICBfdGFnID0gXFxcImR5aFxcXCI7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgIF90YWcgPSBcXFwiYXBrXFxcIjtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9O1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE1hcC50aXRsZSxcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLmxvZ28pLFxcbiAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF9kZW1vbE1hcHMpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG5cXG4gICAgICAgICAgICAgICAgaWYgKF9kZW1vbE1hcHMudXJsKSB7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rUnVsZVBhcnNlKF9kZW1vbE1hcHMpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VGFiUnVsZVBhcnNlKF9kZW1vbE1hcHMuaWQpO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIF9kZW1vbE1hcHMpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiY2FyZF9waWNfM19jZW50ZXJcXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogYXBpdmlldy5fZXh0cmFfdG9vbChfZGVtb2xNYXBzLCBfdGFnLCBcXFwidGl0bGVcXFwiKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9LFxcbiAgICBfbGF5b3V0QWxidW1SdWxlUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9kZW1vbE1hcC5tYXAoXyA9PiAoe1xcbiAgICAgICAgICAgIHRpdGxlOiBfLnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IF8ubm90ZSxcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoXy5waWMpLFxcbiAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF8pID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IF9kZW1vbFVybCA9IF8udXJsXFxuICAgICAgICAgICAgICAgIGlmIChfZGVtb2xVcmwuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpIHx8IF9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCJodHRwc1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBfLnVybCA9IF9kZW1vbFVybC5zcGxpdChhcGl2aWV3Ll9maWxlV2ViVXRpbChcXFwiXFxcIikpWzFdO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCJtYXJrZXQ6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgIF8udXJsID0gYC9hcGsvJHtfZGVtb2xVcmwuc3BsaXQoXFxcIj1cXFwiKVsxXX1gO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rUnVsZVBhcnNlKF8pO1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIH0sIF8pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMV9sZWZ0X3BpY1xcXCJcXG4gICAgICAgIH0pKSk7XFxuICAgICAgICBpZiAoX2RlbW9sTWFwLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fRW5kX1BhcnNlKCk7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfbGF5b3V0RmVlZFBhcnNlOiAoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICBfdHlwZV8gPSBfZGVtb2xNYXAuZW50aXR5VHlwZTtcXG4gICAgICAgIHJ1c2VybmFtZSA9IF9kZW1vbE1hcC5ydXNlcm5hbWU7XFxuICAgICAgICB1c2VyTWFwID0gX2RlbW9sTWFwLnVzZXJJbmZvIHx8IF9kZW1vbE1hcDtcXG4gICAgICAgIGluZm9IdG1sID0gX2RlbW9sTWFwLmluZm9IdG1sO1xcbiAgICAgICAgZmVlZFR5cGVOYW1lID0gX2RlbW9sTWFwLmZlZWRUeXBlTmFtZTtcXG4gICAgICAgIF9udW1iZXJDYXJkID0gTnVtYmVyKGdldEl0ZW0oXFxcIjpudW1iZXJcXFwiLCBcXFwiM1xcXCIpKTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB1c2VyTWFwLnVzZXJuYW1lICsgXFxcIlxcXFx0XFxcXHRcXFwiICsgYXBpdmlldy5zbWFsbChhcGl2aWV3Ll9mb3JtYXRUaW1lc3RhbXAoX2RlbW9sTWFwLmRhdGVsaW5lIHx8IF9kZW1vbE1hcC5yZWdkYXRlKSksXFxuICAgICAgICAgICAgZGVzYzogYXBpdmlldy5zbWFsbCgoaW5mb0h0bWwgPyBpbmZvSHRtbCA6IFxcXCJcXFwiKSArIChmZWVkVHlwZU5hbWUgPyBmZWVkVHlwZU5hbWUgOiBcXFwiXFxcIikgKyAocnVzZXJuYW1lID8gcnVzZXJuYW1lIDogXFxcIlxcXCIpKSxcXG4gICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UodXNlck1hcC51c2VyQXZhdGFyKSxcXG4gICAgICAgICAgICB1cmw6ICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjZnlwYWdlXFxcIikucnVsZSgoX2RlbW9sTWFwKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dFVzZXJSdWxlUGFyc2UoX2RlbW9sTWFwKTtcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICB9LCB1c2VyTWFwKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgcGFnZVRpdGxlOiBg55So5oi3LyR7dXNlck1hcC51c2VybmFtZX1gLFxcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IGFwaXZpZXcuX2V4dHJhX3Rvb2woX2RlbW9sTWFwLCBcXFwiY2FyZFxcXCIsIFxcXCJpZFxcXCIpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAuc3Rhcikge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYOivhOWIhu+8miR7YXBpdmlldy5vcmFuZ2UoYXBpdmlldy5fZ2VuZXJhdGVTdGFycyhfZGVtb2xNYXAuc3RhcikpICsgX2RlbW9sTWFwLnN0YXIgKiAyfeWIhmAsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubWVzc2FnZV90aXRsZSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5iaWcoX2RlbW9sTWFwLm1lc3NhZ2VfdGl0bGUpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgICAgICBpZiAoX2RlbW9sTWFwLmNvbW1lbnRfZ29vZCkge1xcbiAgICAgICAgICAgIF9kZW1vbE1hcC5tZXNzYWdlID0gYXBpdmlldy5fZ2VuZXJhdGVTdHJpbmcoX2RlbW9sTWFwLmNvbW1lbnRfZ29vZCwgMzApO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubWVzc2FnZSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5fZ2V0UmVnRXhwKF9kZW1vbE1hcCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIF9kZW1vbFBpY01hcCA9IF9kZW1vbE1hcC5waWNBcnI7XFxuICAgICAgICBpZiAoX2RlbW9sUGljTWFwICYmICQudHlwZShfZGVtb2xQaWNNYXApID09IFxcXCJhcnJheVxcXCIpIHtcXG4gICAgICAgICAgICBfZGVtb2xQaWNNYXAuZm9yRWFjaCgoXywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoX3R5cGVfID09IFxcXCJmZWVkX3JlcGx5XFxcIiA/IHRydWUgOiAoaSA8IF9udW1iZXJDYXJkKSkgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoXyksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IF8sXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInBpY18zX3NxdWFyZVxcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC50YXJnZXRfaW5mbykge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogX2RlbW9sTWFwLnRhcmdldF9pbmZvLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLnRhcmdldF9pbmZvLmxvZ28pLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VcXFwiKS5ydWxlKChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rUnVsZVBhcnNlKF9kZW1vbE1hcCwgXFxcInRpdGxlXFxcIiwgXFxcInVybFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwLnRhcmdldF9pbmZvKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC50dGl0bGUpIHtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE1hcC50dGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAudHBpYyksXFxuICAgICAgICAgICAgICAgIHVybDogJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpbmtSdWxlUGFyc2UoX2RlbW9sTWFwLCBcXFwidHRpdGxlXFxcIiwgXFxcInR1cmxcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChhcGl2aWV3LmxheW91dCk7XFxuICAgICAgICAgICAgICAgIH0sIF9kZW1vbE1hcCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAuc2hhcmVfbnVtICE9IG51bGwpIHtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFN0cmluZyhfZGVtb2xNYXAubGlrZW51bSksXFxuICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5nb29kLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF8zXFxcIlxcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFN0cmluZyhfZGVtb2xNYXAucmVwbHludW0pLFxcbiAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikuZGlzY3VzcyxcXG4gICAgICAgICAgICAgICAgdXJsOiBfZGVtb2xNYXAucmVwbHludW0gPiAwID8gJChhcGl2aWV3LmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKF9pZF8pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0UmVtYXJrUGFyc2UoX2lkXyk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgICAgICB9LCBfZGVtb2xNYXAuaWQpIDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzNcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogU3RyaW5nKF9kZW1vbE1hcC5zaGFyZV9udW0pLFxcbiAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikuc2hhcmUsXFxuICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uX3NtYWxsXzNcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9sYXlvdXRSZW1hcmtQYXJzZTogKF9pZF8pID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiOnJlcGx5TGlzdFR5cGVcXFwiKTtcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6cmVwbHlOZXh0XFxcIik7XFxuICAgICAgICB9KSk7XFxuICAgICAgICBsZXQgX2RlbW9sdHlwZSA9IGdldE15VmFyKFxcXCI6cmVwbHlMaXN0VHlwZVxcXCIsIFxcXCLpu5jorqRcXFwiKTtcXG4gICAgICAgIGxldCBmcm9tRmVlZEF1dGhvciA9IG51bGw7XFxuICAgICAgICBzd2l0Y2ggKF9kZW1vbHR5cGUpIHtcXG4gICAgICAgICAgICBjYXNlIFxcXCLpu5jorqRcXFwiOlxcbiAgICAgICAgICAgICAgICBfdHlwZV8gPSBcXFwibGFzdHVwZGF0ZV9kZXNjXFxcIjtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwi5pyA5pawXFxcIjpcXG4gICAgICAgICAgICAgICAgX3R5cGVfID0gXFxcImRhdGVsaW5lX2Rlc2NcXFwiO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIFxcXCLng63pl6hcXFwiOlxcbiAgICAgICAgICAgICAgICBfdHlwZV8gPSBcXFwicG9wdWxhclxcXCI7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIualvOS4u1xcXCI6XFxuICAgICAgICAgICAgICAgIF90eXBlXyA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICBmcm9tRmVlZEF1dGhvciA9IDE7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGxldCBfZGVtb2xSZXBseU1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoYnVpbGRVcmwoXFxcIi92Ni9mZWVkL3JlcGx5TGlzdFxcXCIsIHtcXG4gICAgICAgICAgICBpZDogX2lkXyxcXG4gICAgICAgICAgICBsaXN0VHlwZTogX3R5cGVfLFxcbiAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2UsXFxuICAgICAgICAgICAgZGlzY3Vzc01vZGU6IDEsXFxuICAgICAgICAgICAgZmVlZFR5cGU6IFxcXCJmZWVkXFxcIixcXG4gICAgICAgICAgICBibG9ja1N0YXR1czogMCxcXG4gICAgICAgICAgICBmcm9tRmVlZEF1dGhvcjogZnJvbUZlZWRBdXRob3IgPyBmcm9tRmVlZEF1dGhvciA6IDBcXG4gICAgICAgIH0pLCB0cnVlKTtcXG4gICAgICAgIGxldCBfbmV4dCA9IF9kZW1vbFJlcGx5TWFwICYmICQudHlwZShfZGVtb2xSZXBseU1hcCkgPT0gXFxcImFycmF5XFxcIiAmJiBfZGVtb2xSZXBseU1hcC5sZW5ndGggPiAwO1xcbiAgICAgICAgaWYgKF9uZXh0KSBwdXRNeVZhcihcXFwiOnJlcGx5TmV4dFxcXCIsIFxcXCJ0cnVlXFxcIik7XFxuICAgICAgICBfbmV4dCA9IGdldE15VmFyKFxcXCI6cmVwbHlOZXh0XFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSAmJiBfbmV4dCA9PSBcXFwidHJ1ZVxcXCIpIHtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcuc3Ryb25nKGFwaXZpZXcuYmlnKFxcXCLor4TorrrljLpcXFwiKSksXFxuICAgICAgICAgICAgICAgIGRlc2M6IGA8dT4ke19kZW1vbHR5cGV9PC91PmAsXFxuICAgICAgICAgICAgICAgIHVybDogJChbXFxcIum7mOiupFxcXCIsIFxcXCLmnIDmlrBcXFwiLCBcXFwi54Ot6ZeoXFxcIiwgXFxcIualvOS4u1xcXCJdLCAyLCBcXFwi5o6S5bqPOlxcXCIgKyBfZGVtb2x0eXBlKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjpyZXBseUxpc3RUeXBlXFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWIh+aNouS4uiBcXFwiICsgaW5wdXQ7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikucmVwbHlzb3J0LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgICAgICBpZiAoX25leHQgPT0gXFxcInRydWVcXFwiKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoX2RlbW9sUmVwbHlNYXAsIF9pZF8pO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2xheW91dExpbmtSdWxlUGFyc2U6IChfZGVtb2xNYXAsIHRpdGxlLCB1cmwpID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBfZGVtb2xVcmwgPSBfZGVtb2xNYXBbdXJsID8gdXJsIDogXFxcInVybFxcXCJdO1xcbiAgICAgICAgX2RlbW9sVXJsID0gZGVjb2RlVVJJQ29tcG9uZW50KF9kZW1vbFVybCk7XFxuICAgICAgICBsZXQgX2RlbW9sTmFtZSA9IF9kZW1vbE1hcFt0aXRsZSA/IHRpdGxlIDogXFxcInRpdGxlXFxcIl07XFxuICAgICAgICBpZiAoIV9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCIvcGFnZVxcXCIpICYmIF9kZW1vbFVybC5pbmNsdWRlcyhcXFwiL3QvXFxcIikpIHtcXG4gICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIi90L1xcXCIpWzFdO1xcbiAgICAgICAgICAgIGlmIChfZGVtb2xNYXAuZW50aXR5VHlwZSA9PSBcXFwicGljQ2F0ZWdvcnlcXFwiKSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbFVybCA9IF9kZW1vbFVybC5zcGxpdChcXFwiP1xcXCIpWzBdO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRQaWN0dXJlUnVsZVBhcnNlKF9kZW1vbFVybCk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VGFiUnVsZVBhcnNlKF9kZW1vbFVybCk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSBpZiAoIV9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCIvcGFnZVxcXCIpICYmIF9kZW1vbFVybC5pbmNsdWRlcyhcXFwiL3Byb2R1Y3QvXFxcIikpIHtcXG4gICAgICAgICAgICBfZGVtb2xVcmxzID0gX2RlbW9sVXJsLnNwbGl0KFxcXCIvcHJvZHVjdC9cXFwiKVsxXTtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sTWFwLmVudGl0eVR5cGUgPT0gXFxcInBpY0NhdGVnb3J5XFxcIikge1xcbiAgICAgICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmxzLnNwbGl0KFxcXCI/XFxcIilbMF07XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dFBpY3R1cmVSdWxlUGFyc2UoX2RlbW9sVXJsKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKF9kZW1vbFVybHMuc3RhcnRzV2l0aChcXFwiY2F0ZWdvcnlMaXN0XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgX2RlbW9sVXJsID0gX2RlbW9sVXJsLnNwbGl0KFxcXCI/XFxcIilbMF07XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dExpbmtUYWJQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KGAvdjYke19kZW1vbFVybH1gKSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0VGFiUnVsZVBhcnNlKF9kZW1vbFVybHMpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9IGVsc2UgaWYgKCFfZGVtb2xVcmwuc3RhcnRzV2l0aChcXFwiL3BhZ2VcXFwiKSAmJiBfZGVtb2xVcmwuaW5jbHVkZXMoXFxcIi9keWgvXFxcIikpIHtcXG4gICAgICAgICAgICBfZGVtb2xVcmxzID0gX2RlbW9sVXJsLnNwbGl0KFxcXCIvZHloL1xcXCIpWzFdO1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dER5aFJ1bGVQYXJzZShfZGVtb2xVcmxzKTtcXG4gICAgICAgIH0gZWxzZSBpZiAoX2RlbW9sVXJsLmVuZHNXaXRoKFxcXCJjb3Vwb25TZWFyY2hcXFwiKSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX3NlYXJjaEdvb2RzUGFyc2UoKTtcXG4gICAgICAgIH0gZWxzZSBpZiAoX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcIi9hcGsvXFxcIikgfHwgX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcIi9nYW1lL1xcXCIpKSB7XFxuICAgICAgICAgICAgaWYgKF9kZW1vbFVybC5zdGFydHNXaXRoKFxcXCIvYXBrL1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbFVybCA9IF9kZW1vbFVybC5zcGxpdChcXFwiL2Fway9cXFwiKVsxXTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIi9nYW1lL1xcXCIpWzFdO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0QXBrUnVsZVBhcnNlKF9kZW1vbFVybCk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgaWYgKF9kZW1vbFVybC5pbmNsdWRlcyhcXFwiL3BhZ2VcXFwiKSkge1xcbiAgICAgICAgICAgICAgICBfZGVtb2xVcmwgPSBfZGVtb2xVcmwuc3BsaXQoXFxcIi9wYWdlP3VybD1cXFwiKVsxXTtcXG4gICAgICAgICAgICAgICAgaWYgKF9kZW1vbFVybC5pbmNsdWRlcyhcXFwic2VsZWN0ZWRUYWJcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgX2RlbW9sVXJsID0gX2RlbW9sVXJsLnNwbGl0KFxcXCImXFxcIilbMF07XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgX2RlbW9sVXJsID0gX2RlbW9sVXJsLnNwbGl0KFxcXCIjXFxcIilbMV07XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgdXJsOiBfZGVtb2xVcmwsXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xOYW1lLFxcbiAgICAgICAgICAgICAgICBzdWJUaXRsZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICB9KSk7XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfbGF5b3V0TGlua1RhYlBhcnNlOiAoX2RlbW9sTWFwLCBfZGVtb2wpID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2wgPSBfZGVtb2wgPyBfZGVtb2wgOiBcXFwiXFxcIjtcXG4gICAgICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoX2RlbW9sKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiOmxpbmtOZXh0XFxcIiArIF9kZW1vbCk7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiOmxpbmtUYWdcXFwiICsgX2RlbW9sKTtcXG4gICAgICAgIH0sIF9kZW1vbCkpO1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IHRpbmRleCA9IGdldE15VmFyKFxcXCI6bGlua1RhZ1xcXCIgKyBfZGVtb2wsIFxcXCIwXFxcIik7XFxuICAgICAgICBsZXQgX2RlbW9sTWFwID0gX2RlbW9sTWFwLmZpbHRlcihfID0+IF8udGl0bGUgIT0gXFxcIuWFs+azqFxcXCIgJiYgXy50aXRsZSAhPSBcXFwi5ZOB54mMXFxcIik7XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQoX2RlbW9sTWFwLm1hcCgoXywgaSkgPT4gKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGkgPT0gdGluZGV4ID8gYXBpdmlldy5yaWNoKGFwaXZpZXcuc3Ryb25nKGFwaXZpZXcuY29sb3IoXy50aXRsZSkpKSA6IF8udGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaSwgZW1wdHksIF9kZW1vbCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjpsaW5rVGFnXFxcIiArIF9kZW1vbCwgaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBpLCBhcGl2aWV3LmVtcHR5LCBfZGVtb2wpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpID09IHRpbmRleCA/IFxcXCIjMjBGQTcyOThcXFwiIDogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgX2RlbW9sTWFwID0gX2RlbW9sTWFwW3RpbmRleF07XFxuICAgICAgICBsZXQgX2RlbW9sVXJsID0gX2RlbW9sTWFwLnVybDtcXG4gICAgICAgIGxldCBfZGVtb2xOYW1lID0gX2RlbW9sTWFwLnRpdGxlO1xcbiAgICAgICAgbGV0IF9saW5rTmV4dCA9ICgpID0+IGdldE15VmFyKFxcXCI6bmV4dFxcXCIgKyBfZGVtb2xVcmwsIFxcXCJcXFwiKTtcXG4gICAgICAgIGlmICghX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSAmJiAhX2RlbW9sVXJsLnN0YXJ0c1dpdGgoXFxcImh0dHBzXFxcIikpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgdXJsOiBfZGVtb2xVcmwsXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBfZGVtb2xOYW1lLFxcbiAgICAgICAgICAgICAgICBzdWJUaXRsZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIHBhZ2U6IF9saW5rTmV4dCgpID8gMSA6IF9kZW1vbHBhZ2VcXG4gICAgICAgICAgICB9KSwgX2RlbW9sVXJsKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCJhdXRvXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBfZGVtb2xVcmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSxcXG4gICAgICAgICAgICAgICAgICAgIMKgwqDCoMKgdXJsSW50ZXJjZXB0b3I6ICQudG9TdHJpbmcoKE1ZX1JVTEUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcIi90L1xcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcnJheSA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogaW5wdXQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQudG9TdHJpbmcoKGFycmF5LCBNWV9SVUxFKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYmEub3BlbihKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZTogTVlfUlVMRS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvQ2Fyb3VzZWwudmlldz9ydWxlPemFt+WuiSZwYWdlPWZ5cGFnZSZhcnJheT0ke2VuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShhcnJheSkpfSZoaWtlcj0jbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI2dhbWVUaGVtZSNmeXBhZ2VgLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRSdWxlOiBNWV9SVUxFLmRldGFpbF9maW5kX3J1bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93OiB0cnVlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dJZDogTVlfUlVMRS50aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgYXJyYXksIE1ZX1JVTEUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgTVlfUlVMRSksXFxuICAgICAgICAgICAgICAgICAgICB1YTogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMDsgVjIzMDRBIEJ1aWxkL1VQMUEuMjMxMDA1LjAwNzsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83NC4wLjM3MjkuMTg2IE1vYmlsZSBTYWZhcmkvNTM3LjM2ICgjQnVpbGQ7IHZpdm87IFYyMzA0QTsgVVAxQS4yMzEwMDUuMDA3IHJlbGVhc2Uta2V5czsgMTApICtDb29sTWFya2V0LzEzLjMuNi0yMzEwMjMyLXVuaXZlcnNhbFxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2xheW91dFJ1bGVQYXJzZTogKF9pZF8sIF9kZW1vbF8pID0+IHtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBfZGVtb2xNYXAgPSBzdG9yYWdlMC5nZXRNeVZhcihgJHtfaWRffTpmZWVkRGV0YWlsYCwgW10pO1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9mZWVkL2RldGFpbFxcXCIsIE9iamVjdC5hc3NpZ24oe1xcbiAgICAgICAgICAgICAgICBpZDogX2lkX1xcbiAgICAgICAgICAgIH0sIF9kZW1vbF8gPyB7XFxuICAgICAgICAgICAgICAgIGZyb21BcGk6IF9kZW1vbF9cXG4gICAgICAgICAgICB9IDoge30pLCB0cnVlKTtcXG4gICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihgJHtfaWRffTpmZWVkRGV0YWlsYCwgX2RlbW9sTWFwKTtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgX2RlbW9sUGljcyA9IF9kZW1vbE1hcC5waWNBcnI7XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5fZ2VuZXJhdGVUb3AoKTtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sUGljcyAmJiAkLnR5cGUoX2RlbW9sUGljcykgPT0gXFxcImFycmF5XFxcIikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfZGVtb2xQaWNzLm1hcChfID0+ICh7XFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoXyksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IF8sXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInBpY18zX3NxdWFyZVxcXCJcXG4gICAgICAgICAgICAgICAgfSkpKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGxldCBfZGVtb2xNc2cgPSBhcGl2aWV3Ll9nZXRSZWdFeHAoX2RlbW9sTWFwLCB0cnVlKTtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sTXNnKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF9kZW1vbE1zZyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9O1xcbiAgICAgICAgYXBpdmlldy5fbGF5b3V0UmVtYXJrUGFyc2UoX2lkXyk7XFxuICAgICAgICBpZiAoZ2V0TXlWYXIoXFxcIjpyZXBseU5leHRcXFwiLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZUVuZCgpO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2xheW91dEFwcFJ1bGVQYXJzZTogKF9kZW1vbE1hcCkgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IF9kZW1vbFBpY3MgPSBfZGVtb2xNYXAuc2NyZWVuTGlzdDtcXG4gICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBpZiAoX2RlbW9sUGljcyAmJiAkLnR5cGUoX2RlbW9sUGljcykgPT0gXFxcImFycmF5XFxcIikge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfZGVtb2xQaWNzLm1hcChfID0+ICh7XFxuICAgICAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoXyksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IF8gKyBcXFwiIy5wbmdcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJwaWNfM19zcXVhcmVcXFwiXFxuICAgICAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcC5tZXNzYWdlID0gKF9kZW1vbE1hcC5jaGFuZ2Vsb2cgPyBgJHthcGl2aWV3LnN0cm9uZyhhcGl2aWV3LmJpZyhhcGl2aWV3LmJpZyhcXFwi5paw54mI54m55oCn77yaXFxcIikpKX08YnI+JHtfZGVtb2xNYXAuY2hhbmdlbG9nfWAgOiBcXFwiXFxcIikgKyAoKF9kZW1vbE1hcC5jaGFuZ2Vsb2cgJiYgX2RlbW9sTWFwLmludHJvZHVjZSkgPyBcXFwiPGJyPjxicj5cXFwiIDogXFxcIlxcXCIpICsgKF9kZW1vbE1hcC5pbnRyb2R1Y2UgPyBgJHthcGl2aWV3LnN0cm9uZyhhcGl2aWV3LmJpZyhhcGl2aWV3LmJpZyhcXFwi5bqU55So5LuL57uN77yaXFxcIikpKX08YnI+JHtfZGVtb2xNYXAuaW50cm9kdWNlfWAgOiBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBfZGVtb2xNc2cgPSBhcGl2aWV3Ll9nZXRSZWdFeHAoX2RlbW9sTWFwLCB0cnVlKTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogX2RlbW9sTXNnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZUVuZCgpO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2xheW91dFBpY3R1cmVSdWxlUGFyc2U6IChfZGVtb2wpID0+IHtcXG4gICAgICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiOnBpY3R1cmVUYWdcXFwiKTtcXG4gICAgICAgIH0pKTtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCBfZGVtb2xNYXAgPSBbXFxcIueyvumAiVxcXCIsIFxcXCLng63pl6hcXFwiLCBcXFwi5pyA5pawXFxcIl07XFxuICAgICAgICBsZXQgdGluZGV4ID0gZ2V0TXlWYXIoXFxcIjpwaWN0dXJlVGFnXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgIGlmIChfZGVtb2xwYWdlID09IDEpIHtcXG4gICAgICAgICAgICBhcGl2aWV3Ll9nZW5lcmF0ZVRvcCgpO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0ID0gYXBpdmlldy5sYXlvdXQuY29uY2F0KF9kZW1vbE1hcC5tYXAoKGl0ZW0sIGkpID0+ICh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpID09IHRpbmRleCA/IGFwaXZpZXcucmljaChhcGl2aWV3LnN0cm9uZyhhcGl2aWV3LmNvbG9yKGl0ZW0pKSkgOiBpdGVtLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGksIGVtcHR5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOnBpY3R1cmVUYWdcXFwiLCBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIGksIGFwaXZpZXcuZW1wdHkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBpID09IHRpbmRleCA/IFxcXCIjMjBGQTcyOThcXFwiIDogXFxcIlxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgc3dpdGNoIChfZGVtb2xNYXBbdGluZGV4XSkge1xcbiAgICAgICAgICAgIGNhc2UgX2RlbW9sTWFwWzBdOlxcbiAgICAgICAgICAgICAgICBfdHlwZV8gPSBcXFwicmVjb21tZW5kXFxcIjtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBfZGVtb2xNYXBbMV06XFxuICAgICAgICAgICAgICAgIF90eXBlXyA9IFxcXCJob3RcXFwiO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF9kZW1vbE1hcFsyXTpcXG4gICAgICAgICAgICAgICAgX3R5cGVfID0gXFxcIm5ld2VzdFxcXCI7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9waWN0dXJlL2xpc3RcXFwiLCB7XFxuICAgICAgICAgICAgdGFnOiBfZGVtb2wsXFxuICAgICAgICAgICAgdHlwZTogX3R5cGVfLFxcbiAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2VcXG4gICAgICAgIH0pKTtcXG4gICAgfSxcXG4gICAgX2xheW91dFVzZXJSdWxlUGFyc2U6IChfZGVtb2xNYXApID0+IHtcXG4gICAgICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiOnVzZXJUYWdcXFwiKTtcXG4gICAgICAgIH0pKTtcXG4gICAgICAgIF9kZW1vbE1hcCA9IF9kZW1vbE1hcC51c2VySW5mbyB8fCBfZGVtb2xNYXA7XFxuICAgICAgICBsZXQgX2RlbW9sTWFwcyA9IHt9O1xcbiAgICAgICAgX2RlbW9sTWFwcy51c2VybmFtZSA9IF9kZW1vbE1hcC51c2VybmFtZTtcXG4gICAgICAgIF9kZW1vbE1hcHMudXNlckF2YXRhciA9IF9kZW1vbE1hcC51c2VyQXZhdGFyO1xcbiAgICAgICAgX2RlbW9sTWFwcy51aWQgPSBfZGVtb2xNYXAudWlkO1xcbiAgICAgICAgX2RlbW9sTWFwcy5lbnRpdHlUeXBlID0gX2RlbW9sTWFwLmVudGl0eVR5cGU7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICBsZXQgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICBldmFsKFxcXCJmaWxlX21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgIGZpbGVfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJ1c2VyXFxcIl0uZm9yRWFjaChfID0+IHtcXG4gICAgICAgICAgICBpZiAoX1tcXFwidWlkXFxcIl0gPT0gX2RlbW9sTWFwLnVpZCkge1xcbiAgICAgICAgICAgICAgICBhYnJlYWsgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IF90YWJNYXAgPSBbXFxcIuWKqOaAgVxcXCIsIFxcXCLngrnor4RcXFwiLCBcXFwi5Zu+5paHXFxcIiwgXFxcIumXruetlFxcXCIsIFxcXCLphbflm75cXFwiLCBcXFwi5aW954mpXFxcIiwgXFxcIuaUtuiXj+WNlVxcXCIsIFxcXCLlupTnlKjpm4ZcXFwiXTtcXG4gICAgICAgIGxldCB0aW5kZXggPSBnZXRNeVZhcihcXFwiOnVzZXJUYWdcXFwiLCBcXFwiMFxcXCIpO1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGltZzogYXBpdmlldy5fZ2VuZXJhdGVJbWFnZShfZGVtb2xNYXAudXNlckF2YXRhciksXFxuICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuYmlnKF9kZW1vbE1hcC51c2VybmFtZSkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuc3Ryb25nKGFwaXZpZXcuYmlnKGFicmVhayA/IFxcXCLlj5blhbNcXFwiIDogXFxcIuWFs+azqFxcXCIpKSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogYWJyZWFrID8gJChhcGl2aWV3LmVtcHR5KS5sYXp5UnVsZSgoX2RlbW9sTWFwcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImFqYXhfbWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bXFxcInVzZXJcXFwiXS5mb3JFYWNoKChJdGVtLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEl0ZW1bXFxcInVpZFxcXCJdID09IF9kZW1vbE1hcHMudWlkKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbmRleCA9IGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicmVhayA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoYWJyZWFrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bXFxcInVzZXJcXFwiXS5zcGxpY2UodGluZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzlpLHotKVcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwcykgOiAkKGFwaXZpZXcuZW1wdHkpLmxhenlSdWxlKChfZGVtb2xNYXBzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtcXFwidXNlclxcXCJdLnB1c2goX2RlbW9sTWFwcyk7XFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIF9kZW1vbE1hcHMpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQoX3RhYk1hcC5tYXAoKF8sIGkpID0+ICh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpID09IHRpbmRleCA/IGFwaXZpZXcucmljaChhcGl2aWV3LmJpZyhhcGl2aWV3LnN0cm9uZyhfKSkpIDogXyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpLCBlbXB0eSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcIjp1c2VyVGFnXFxcIiwgaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBpLCBhcGl2aWV3LmVtcHR5KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgc3dpdGNoIChfdGFiTWFwW3RpbmRleF0pIHtcXG4gICAgICAgICAgICBjYXNlIF90YWJNYXBbMF06XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvdXNlci9mZWVkTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHVpZDogX2RlbW9sTWFwLnVpZCxcXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IF9kZW1vbHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICBzaG93QW5vbnltb3VzOiAwLFxcbiAgICAgICAgICAgICAgICAgICAgaXNJbmNsdWRlVG9wOiAxLFxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0RvaW5nOiAxXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF90YWJNYXBbMV06XFxuICAgICAgICAgICAgICAgIF9kZW1vbF8gPSBidWlsZFVybChcXFwiL2ZlZWQvbm9kZVJhdGluZ0xpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB1aWQ6IF9kZW1vbE1hcC51aWQsXFxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRUeXBlOiBcXFwiYWxsXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlUmF0aW5nVG9GZWVkOiAxXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBfZGVtb2xNYXBzID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3BhZ2UvZGF0YUxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbF8sXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBzdWJUaXRsZTogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF90YWJNYXBbMl06XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvdXNlci9odG1sRmVlZExpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB1aWQ6IF9kZW1vbE1hcC51aWQsXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF90YWJNYXBbM106XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvdXNlci9xdWVzdGlvbkFuZEFuc3dlckxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB1aWQ6IF9kZW1vbE1hcC51aWQsXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF90YWJNYXBbNF06XFxuICAgICAgICAgICAgICAgIF9kZW1vbF8gPSBidWlsZFVybChcXFwiL2ZlZWQvdXNlckNvb2xQaWN0dXJlRmVlZExpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICBmcmFnbWVudFRlbXBsYXRlOiBcXFwiZmxleFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1aWQ6IFN0cmluZyhfZGVtb2xNYXAudWlkKVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgX2RlbW9sTWFwcyA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9wYWdlL2RhdGFMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBfZGVtb2xfLFxcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBfdGFiTWFwWzVdOlxcbiAgICAgICAgICAgICAgICBfZGVtb2xfID0gYnVpbGRVcmwoXFxcIi9nb29kcy9nb29kc0ZlZWRMaXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRUZW1wbGF0ZTogXFxcImZsZXhcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdWlkOiBfZGVtb2xNYXAudWlkXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBfZGVtb2xNYXBzID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L3BhZ2UvZGF0YUxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbF8sXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF90YWJNYXBbNl06XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvY29sbGVjdGlvbi9saXN0XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgdWlkOiBfZGVtb2xNYXAudWlkLFxcbiAgICAgICAgICAgICAgICAgICAgc2hvd0RlZmF1bHQ6IDAsXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIF90YWJNYXBbN106XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvdXNlci9hbGJ1bUxpc3RcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB1aWQ6IF9kZW1vbE1hcC51aWQsXFxuICAgICAgICAgICAgICAgICAgICBwYWdlOiBfZGVtb2xwYWdlXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH07XFxuICAgICAgICBpZiAoX2RlbW9sTWFwcyA9PSBudWxsIHx8ICQudHlwZShfZGVtb2xNYXBzKSA9PSBcXFwib2JqZWN0XFxcIikge1xcbiAgICAgICAgICAgIF9kZW1vbE1hcHMgPSBbXTtcXG4gICAgICAgIH07XFxuICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShfZGVtb2xNYXBzLCBfZGVtb2xNYXAudWlkKTtcXG4gICAgfSxcXG4gICAgX2xheW91dER5aFJ1bGVQYXJzZTogKF9kZW1vbCkgPT4ge1xcbiAgICAgICAgbGV0IF9kZW1vbHBhZ2UgPSBNWV9QQUdFO1xcbiAgICAgICAgbGV0IGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgbGV0IGFicmVhayA9IGZhbHNlO1xcbiAgICAgICAgZXZhbChcXFwiZmlsZV9tYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICBsZXQgX2RlbW9sTWFwID0gc3RvcmFnZTAuZ2V0TXlWYXIoX2RlbW9sICsgXFxcIjpkeWhUYWdcXFwiLCBbXSk7XFxuICAgICAgICBpZiAoX2RlbW9sTWFwLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgX2RlbW9sTWFwID0gYXBpdmlldy5fZGVtb2xfQWpheChcXFwiL3Y2L2R5aC9kZXRhaWxcXFwiLCB7XFxuICAgICAgICAgICAgICAgIGR5aElkOiBfZGVtb2xcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihfZGVtb2wgKyBcXFwiOmR5aFRhZ1xcXCIsIF9kZW1vbE1hcCk7XFxuICAgICAgICB9O1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcHMgPSB7fTtcXG4gICAgICAgIF9kZW1vbE1hcHMudGl0bGUgPSBfZGVtb2xNYXAudGl0bGU7XFxuICAgICAgICBfZGVtb2xNYXBzLmlkID0gX2RlbW9sO1xcbiAgICAgICAgX2RlbW9sTWFwcy5sb2dvID0gX2RlbW9sTWFwLmxvZ287XFxuICAgICAgICBfZGVtb2xNYXBzLmVudGl0eVR5cGUgPSBfZGVtb2xNYXAuZW50aXR5VHlwZTtcXG4gICAgICAgIF9kZW1vbE1hcHMudXJsID0gYC9keWgvJHtfZGVtb2x9YDtcXG4gICAgICAgIGZpbGVfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJkeWhcXFwiXS5mb3JFYWNoKF8gPT4ge1xcbiAgICAgICAgICAgIGlmIChfLnRpdGxlID09IF9kZW1vbE1hcC50aXRsZSkge1xcbiAgICAgICAgICAgICAgICBhYnJlYWsgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgaW1nOiBhcGl2aWV3Ll9nZW5lcmF0ZUltYWdlKF9kZW1vbE1hcHMubG9nbyksXFxuICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuYmlnKF9kZW1vbE1hcHMudGl0bGUpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LmdyYXkoYWJyZWFrID8gXFxcIuWPluWFs1xcXCIgOiBcXFwi5YWz5rOoXFxcIikpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFicmVhayA/ICQoYXBpdmlldy5lbXB0eSkubGF6eVJ1bGUoKF9kZW1vbE1hcHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICAgICAgICAgICAgICBsZXQgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJkeWhcXFwiXS5mb3JFYWNoKChJdGVtLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEl0ZW0udGl0bGUgPT0gX2RlbW9sTWFwcy50aXRsZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW5kZXggPSBpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnJlYWsgPSB0cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGFicmVhaykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW1xcXCJkeWhcXFwiXS5zcGxpY2UodGluZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzlpLHotKVcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwcykgOiAkKGFwaXZpZXcuZW1wdHkpLmxhenlSdWxlKChfZGVtb2xNYXBzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtcXFwiZHloXFxcIl0ucHVzaChfZGVtb2xNYXBzKTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwcylcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH07XFxuICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvZHloQXJ0aWNsZS9saXN0XFxcIiwge1xcbiAgICAgICAgICAgIGR5aElkOiBfZGVtb2xNYXAuaWQsXFxuICAgICAgICAgICAgdHlwZTogXFxcImFsbFxcXCIsXFxuICAgICAgICAgICAgcGFnZTogX2RlbW9scGFnZVxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShfZGVtb2xNYXAsIF9kZW1vbCk7XFxuICAgIH0sXFxuICAgIF9sYXlvdXRUYWJSdWxlUGFyc2U6IChfZGVtb2wpID0+IHtcXG4gICAgICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygoX2RlbW9sKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcihcXFwiOm5ld1RhZ1xcXCIgKyBfZGVtb2wpO1xcbiAgICAgICAgfSwgX2RlbW9sKSk7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICBsZXQgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICBldmFsKFxcXCJmaWxlX21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgIGxldCBfZGVtb2wgPSAkLnR5cGUoX2RlbW9sKSA9PSBcXFwib2JqZWN0XFxcIiA/IGRlY29kZVVSSUNvbXBvbmVudChfZGVtb2wudGl0bGUpIDogX2RlbW9sO1xcbiAgICAgICAgbGV0IF9kZW1vbE1hcCA9IHN0b3JhZ2UwLmdldE15VmFyKF9kZW1vbCArIFxcXCI6bmV3VGFnXFxcIiwgW10pO1xcbiAgICAgICAgaWYgKF9kZW1vbE1hcC5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgICAgIGlmICghaXNOYU4oX2RlbW9sKSAmJiAhaXNOYU4ocGFyc2VGbG9hdChfZGVtb2wpKSkge1xcbiAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcHJvZHVjdC9kZXRhaWxcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogX2RlbW9sXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni90b3BpYy9uZXdUYWdEZXRhaWxcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICB0YWc6IF9kZW1vbFxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKF9kZW1vbCArIFxcXCI6bmV3VGFnXFxcIiwgX2RlbW9sTWFwKTtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgX2RlbW9sTWFwcyA9IHt9O1xcbiAgICAgICAgX2RlbW9sTWFwcy50aXRsZSA9IF9kZW1vbE1hcC50aXRsZTtcXG4gICAgICAgIF9kZW1vbE1hcHMuaWQgPSBfZGVtb2w7XFxuICAgICAgICBfZGVtb2xNYXBzLmxvZ28gPSBfZGVtb2xNYXAubG9nbztcXG4gICAgICAgIF9kZW1vbE1hcHMuZW50aXR5VHlwZSA9IF9kZW1vbE1hcC5lbnRpdHlUeXBlO1xcbiAgICAgICAgc3dpdGNoIChfZGVtb2xNYXBzLmVudGl0eVR5cGUpIHtcXG4gICAgICAgICAgICBjYXNlIFxcXCJ0b3BpY1xcXCI6XFxuICAgICAgICAgICAgICAgIF90YWcgPSBcXFwidG9waWNcXFwiO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIFxcXCJwcm9kdWN0XFxcIjpcXG4gICAgICAgICAgICAgICAgX3RhZyA9IFxcXCJwcm9kdWN0XFxcIjtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9O1xcbiAgICAgICAgZmlsZV9tYXBbTVlfUlVMRS50aXRsZV1bX3RhZ10uZm9yRWFjaChfID0+IHtcXG4gICAgICAgICAgICBpZiAoXy50aXRsZSA9PSBfZGVtb2xNYXAudGl0bGUpIHtcXG4gICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCB0aW5kZXggPSBnZXRNeVZhcihcXFwiOm5ld1RhZ1xcXCIgKyBfZGVtb2wsIFxcXCIwXFxcIik7XFxuICAgICAgICBfZGVtb2xNYXAgPSBfZGVtb2xNYXAudGFiTGlzdC5maWx0ZXIoXyA9PiBfLnRpdGxlICE9IFxcXCLlhajpg6hcXFwiICYmIF8udGl0bGUgIT0gXFxcIuadpeaKleelqFxcXCIpO1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgaW1nOiBhcGl2aWV3Ll9nZW5lcmF0ZUltYWdlKF9kZW1vbE1hcHMubG9nbyksXFxuICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5yaWNoKGFwaXZpZXcuYmlnKF9kZW1vbE1hcHMudGl0bGUpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LmdyYXkoYWJyZWFrID8gXFxcIuWPluWFs1xcXCIgOiBcXFwi5YWz5rOoXFxcIikpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IGFicmVhayA/ICQoYXBpdmlldy5lbXB0eSkubGF6eVJ1bGUoKF9kZW1vbE1hcHMsIF90YWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICAgICAgICAgICAgICBsZXQgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW190YWddLmZvckVhY2goKEl0ZW0sIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbS50aXRsZSA9PSBfZGVtb2xNYXBzLnRpdGxlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbmRleCA9IGk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicmVhayA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoYWJyZWFrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhZ10uc3BsaWNlKHRpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoYWpheF9tYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5aSx6LSlXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIF9kZW1vbE1hcHMsIF90YWcpIDogJChhcGl2aWV3LmVtcHR5KS5sYXp5UnVsZSgoX2RlbW9sTWFwcywgX3RhZykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImFqYXhfbWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhZ10ucHVzaChfZGVtb2xNYXBzKTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgX2RlbW9sTWFwcywgX3RhZylcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dCA9IGFwaXZpZXcubGF5b3V0LmNvbmNhdChfZGVtb2xNYXAubWFwKChfLCBpKSA9PiAoe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaSA9PSB0aW5kZXggPyBhcGl2aWV3LnJpY2goYXBpdmlldy5zdHJvbmcoYXBpdmlldy5jb2xvcihfLnRpdGxlKSkpIDogXy50aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChpLCBlbXB0eSwgX2RlbW9sKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOm5ld1RhZ1xcXCIgKyBfZGVtb2wsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgaSwgYXBpdmlldy5lbXB0eSwgX2RlbW9sKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaSA9PSB0aW5kZXggPyBcXFwiIzIwRkE3Mjk4XFxcIiA6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSkpO1xcbiAgICAgICAgfTtcXG4gICAgICAgIGxldCBfbGlua05leHQgPSAoKSA9PiBnZXRNeVZhcihcXFwiOm5leHRcXFwiICsgX2RlbW9sLCBcXFwiXFxcIik7XFxuICAgICAgICBfZGVtb2xNYXAgPSBfZGVtb2xNYXBbdGluZGV4XTtcXG4gICAgICAgIF9kZW1vbE1hcCA9IGFwaXZpZXcuX2RlbW9sX0FqYXgoXFxcIi92Ni9wYWdlL2RhdGFMaXN0XFxcIiwge1xcbiAgICAgICAgICAgIHVybDogX2RlbW9sTWFwLnVybCxcXG4gICAgICAgICAgICB0aXRsZTogX2RlbW9sTWFwLnRpdGxlLFxcbiAgICAgICAgICAgIHN1YlRpdGxlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICBwYWdlOiBfbGlua05leHQoKSA/IDEgOiBfZGVtb2xwYWdlXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKF9kZW1vbE1hcCwgX2RlbW9sKTtcXG4gICAgfSxcXG4gICAgX2xheW91dEFwa1J1bGVQYXJzZTogKF9kZW1vbCkgPT4ge1xcbiAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBjbGVhck15VmFyKFxcXCI6YXBrVGFnXFxcIik7XFxuICAgICAgICB9KSk7XFxuICAgICAgICBsZXQgX2RlbW9scGFnZSA9IE1ZX1BBR0U7XFxuICAgICAgICBsZXQgZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICBsZXQgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICBldmFsKFxcXCJmaWxlX21hcCA9XFxcIiArIHJlYWRGaWxlKGRvd24pKTtcXG4gICAgICAgIGxldCBfZGVtb2xNYXAgPSBzdG9yYWdlMC5nZXRNeVZhcihfZGVtb2wgKyBcXFwiOmFwa1RhZ1xcXCIsIFtdKTtcXG4gICAgICAgIGlmIChfZGVtb2xNYXAubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvYXBrL2RldGFpbFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgaWQ6IF9kZW1vbCxcXG4gICAgICAgICAgICAgICAgaW5zdGFsbGVkOiBcXFwiXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKF9kZW1vbCArIFxcXCI6YXBrVGFnXFxcIiwgX2RlbW9sTWFwKTtcXG4gICAgICAgIH07XFxuICAgICAgICBsZXQgX2RlbW9sTWFwcyA9IHt9O1xcbiAgICAgICAgX2RlbW9sTWFwcy5lbnRpdHlUeXBlID0gX2RlbW9sTWFwLmVudGl0eVR5cGUgfHwgXFxcImFwa1xcXCI7XFxuICAgICAgICBfZGVtb2xNYXBzLmxvZ28gPSBfZGVtb2xNYXAubG9nbztcXG4gICAgICAgIF9kZW1vbE1hcHMudGl0bGUgPSBfZGVtb2xNYXAudGl0bGU7XFxuICAgICAgICBfZGVtb2xNYXBzLnVybCA9IGAvYXBrLyR7X2RlbW9sfWA7XFxuICAgICAgICBmaWxlX21hcFtNWV9SVUxFLnRpdGxlXVtcXFwiYXBrXFxcIl0uZm9yRWFjaChfID0+IHtcXG4gICAgICAgICAgICBpZiAoXy50aXRsZSA9PSBfZGVtb2xNYXAudGl0bGUpIHtcXG4gICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9KTtcXG4gICAgICAgIGxldCB0aW5kZXggPSBnZXRNeVZhcihcXFwiOmFwa1RhZ1xcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICBsZXQgX2RlbW9sTWFwXyA9IFtcXFwi6K+m5oOFXFxcIiwgXFxcIuiuqOiuulxcXCJdO1xcbiAgICAgICAgaWYgKF9kZW1vbHBhZ2UgPT0gMSkge1xcbiAgICAgICAgICAgIGFwaXZpZXcuX2dlbmVyYXRlVG9wKCk7XFxuICAgICAgICAgICAgc3dpdGNoIChnZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgY2FzZSBcXFwi6buY6K6kXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCIwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLmxvZ28pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzJcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5ibGFjayhgJHthcGl2aWV3LmJpZyhfZGVtb2xNYXAudGl0bGUpfTxicj48YnI+JHtfZGVtb2xNYXAudmVyc2lvbn08YnI+PGJyPiR7X2RlbW9sTWFwLmNhdE5hbWV9PGJyPiR7X2RlbW9sTWFwLmNvbW1lbnRTdGF0dXNUZXh0ID8gX2RlbW9sTWFwLmNvbW1lbnRTdGF0dXNUZXh0IDogXFxcIlxcXCJ9YCkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IFxcXCIwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18yXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJjYXJkX3BpY18zXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IGFwaXZpZXcuX2dlbmVyYXRlSW1hZ2UoX2RlbW9sTWFwLmxvZ28pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogYXBpdmlldy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImNhcmRfcGljXzNcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBhcGl2aWV3LnJpY2goYXBpdmlldy5iaWcoX2RlbW9sTWFwcy50aXRsZSkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLkuIvovb1cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IF9kZW1vbE1hcC5hcGtmaWxlID8gKChfZGVtb2xNYXAuYXBrZmlsZSAmJiAhX2RlbW9sTWFwLmFwa2ZpbGUuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpICYmICFfZGVtb2xNYXAuYXBrZmlsZS5zdGFydHNXaXRoKFxcXCJodHRwc1xcXCIpKSA/ICQoYXBpdmlldy5lbXB0eSkubGF6eVJ1bGUoKHtcXG4gICAgICAgICAgICAgICAgICAgIGlkLFxcbiAgICAgICAgICAgICAgICAgICAgYXBrbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIGFwa3ZlcnNpb25jb2RlXFxuICAgICAgICAgICAgICAgIH0pID0+IFxcXCJkb3dubG9hZDovL1xcXCIgKyBkZWNvZGVVUklDb21wb25lbnQoJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpLl9kZW1vbF9BamF4KFxcXCIvdjYvYXBrL2Rvd25sb2FkXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgcG46IGFwa25hbWUsXFxuICAgICAgICAgICAgICAgICAgICBhaWQ6IGlkLFxcbiAgICAgICAgICAgICAgICAgICAgdmM6IGFwa3ZlcnNpb25jb2RlLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgIH0sIHRydWUsIHRydWUpKSwgX2RlbW9sTWFwKSA6IFxcXCJkb3dubG9hZDovL1xcXCIgKyBfZGVtb2xNYXAuYXBrZmlsZSkgOiBcXFwidG9hc3Q6Ly/ml6DkuIvovb3pk77mjqVcXFwiLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfNFxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGFicmVhayA/IFxcXCLlj5blhbNcXFwiIDogXFxcIuWFs+azqFxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF80XFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBhYnJlYWsgPyAkKGFwaXZpZXcuZW1wdHkpLmxhenlSdWxlKChfZGVtb2xNYXBzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFicmVhayA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZShkb3duKSk7XFxuICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtcXFwiYXBrXFxcIl0uZm9yRWFjaCgoSXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChJdGVtLnRpdGxlID09IF9kZW1vbE1hcHMudGl0bGUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGluZGV4ID0gaTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChhYnJlYWspIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhamF4X21hcFtNWV9SVUxFLnRpdGxlXVtcXFwiYXBrXFxcIl0uc3BsaWNlKHRpbmRleCwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoZG93biwgSlNPTi5zdHJpbmdpZnkoYWpheF9tYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5aSx6LSlXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIF9kZW1vbE1hcHMpIDogJChhcGl2aWV3LmVtcHR5KS5sYXp5UnVsZSgoX2RlbW9sTWFwcykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcImFqYXhfbWFwID1cXFwiICsgcmVhZEZpbGUoZG93bikpO1xcbiAgICAgICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bXFxcImFwa1xcXCJdLnB1c2goX2RlbW9sTWFwcyk7XFxuICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZShkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgICAgIH0sIF9kZW1vbE1hcHMpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQoX2RlbW9sTWFwXy5tYXAoKF8sIGkpID0+ICh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpID09IHRpbmRleCA/IGFwaXZpZXcucmljaChhcGl2aWV3LmNvbG9yKGFwaXZpZXcuc3Ryb25nKF8pKSkgOiBfLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGksIGVtcHR5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOmFwa1RhZ1xcXCIsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlbXB0eTtcXG4gICAgICAgICAgICAgICAgfSwgaSwgYXBpdmlldy5lbXB0eSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF80XFxcIlxcbiAgICAgICAgICAgIH0pKSk7XFxuICAgICAgICB9O1xcbiAgICAgICAgbGV0IF9saW5rTmV4dCA9ICgpID0+IGdldE15VmFyKFxcXCI6bmV4dFxcXCIgKyBfZGVtb2wsIFxcXCJcXFwiKTtcXG4gICAgICAgIHN3aXRjaCAoX2RlbW9sTWFwX1t0aW5kZXhdKSB7XFxuICAgICAgICAgICAgY2FzZSBfZGVtb2xNYXBfWzBdOlxcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRBcHBSdWxlUGFyc2UoX2RlbW9sTWFwKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBfZGVtb2xNYXBfWzFdOlxcbiAgICAgICAgICAgICAgICBfZGVtb2xNYXAgPSBhcGl2aWV3Ll9kZW1vbF9BamF4KFxcXCIvdjYvcGFnZS9kYXRhTGlzdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogYCMvZmVlZC9hcGtDb21tZW50TGlzdD9pc0luY2x1ZGVUb3A9MSZ3aXRoU29ydENhcmQ9MSZpZD0ke19kZW1vbE1hcC5pZH1gLFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLorqjorrpcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgc3ViVGl0bGU6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgcGFnZTogX2xpbmtOZXh0KCkgPyAxIDogX2RlbW9scGFnZVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoX2RlbW9sTWFwLCBfZGVtb2wpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgIH07XFxuICAgIH0sXFxuICAgIF9sYXlvdXRTdWJzY3JQYXJzZTogKCkgPT4ge1xcbiAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZShhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uKSk7XFxuICAgICAgICBsZXQgYWpheF9tYXBzID0gYWpheF9tYXBbTVlfUlVMRS50aXRsZV07XFxuICAgICAgICBsZXQgb2JqZWN0TWFwID0gW1xcXCLnlKjmiLdcXFwiLCBcXFwi5biW5a2QXFxcIiwgXFxcIuivnemimFxcXCIsIFxcXCLmlbDnoIFcXFwiLCBcXFwi5bqU55SoXFxcIiwgXFxcIuW6lOeUqOmbhlxcXCIsIFxcXCLnnIvnnIvlj7dcXFwiXTtcXG4gICAgICAgIGxldCBfZGVtb2xwYWdlID0gTVlfUEFHRTtcXG4gICAgICAgIGxldCB0aW5kZXggPSBnZXRNeVZhcihcXFwiOnN1YnNjclRhYlxcXCIsIFxcXCIwXFxcIik7XFxuICAgICAgICBpZiAoX2RlbW9scGFnZSA9PSAxKSB7XFxuICAgICAgICAgICAgYXBpdmlldy5sYXlvdXQgPSBhcGl2aWV3LmxheW91dC5jb25jYXQob2JqZWN0TWFwLm1hcCgoaXRlbSwgaSkgPT4gKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGkgPT0gdGluZGV4ID8gYXBpdmlldy5yaWNoKGFwaXZpZXcuc3Ryb25nKGFwaXZpZXcuY29sb3IoaXRlbSkpKSA6IGl0ZW0sXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoaSwgZW1wdHkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCI6c3Vic2NyVGFiXFxcIiwgaSk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5O1xcbiAgICAgICAgICAgICAgICB9LCBpLCBhcGl2aWV3LmVtcHR5KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogaSA9PSB0aW5kZXggPyBcXFwiIzIwRkE3Mjk4XFxcIiA6IFxcXCJcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSkpO1xcbiAgICAgICAgICAgIHN3aXRjaCAob2JqZWN0TWFwW3RpbmRleF0pIHtcXG4gICAgICAgICAgICAgICAgY2FzZSBvYmplY3RNYXBbMF06XFxuICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXREZXRlcm1pbmVQYXJzZShhamF4X21hcHNbXFxcInVzZXJcXFwiXSwgXFxcInVzZXJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIG9iamVjdE1hcFsxXTpcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFqYXhfbWFwc1tcXFwiY2FyZFxcXCJdLCBcXFwiY2FyZFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2Ugb2JqZWN0TWFwWzJdOlxcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYWpheF9tYXBzW1xcXCJ0b3BpY1xcXCJdLCBcXFwidG9waWNcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIG9iamVjdE1hcFszXTpcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFqYXhfbWFwc1tcXFwicHJvZHVjdFxcXCJdLCBcXFwicHJvZHVjdFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2Ugb2JqZWN0TWFwWzRdOlxcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYWpheF9tYXBzW1xcXCJhcGtcXFwiXSwgXFxcImFwa1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgIGNhc2Ugb2JqZWN0TWFwWzVdOlxcbiAgICAgICAgICAgICAgICAgICAgYXBpdmlldy5fbGF5b3V0RGV0ZXJtaW5lUGFyc2UoYWpheF9tYXBzW1xcXCJhbGJ1bVxcXCJdLCBcXFwiYWxidW1cXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICBjYXNlIG9iamVjdE1hcFs2XTpcXG4gICAgICAgICAgICAgICAgICAgIGFwaXZpZXcuX2xheW91dERldGVybWluZVBhcnNlKGFqYXhfbWFwc1tcXFwiZHloXFxcIl0sIFxcXCJkeWhcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9O1xcbiAgICB9LFxcbiAgICBfbGF5b3V0TWVudVBhcnNlOiAoKSA9PiB7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5biW5a2Q6aKE6KeIXFxcIixcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikucG9zdCxcXG4gICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5pi+56S65Zu+54mH5byg5pWwXFxcIixcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikubnVtYmVyLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGhpa2VyUG9wID0gJC5yZXF1aXJlKFxcXCJodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD02OTY2XFxcIiwgMjQpO1xcbiAgICAgICAgICAgICAgICBoaWtlclBvcC5pbnB1dEF1dG9Sb3coe1xcbiAgICAgICAgICAgICAgICAgICAgaGludDogYOW9k+WJjemihOiniOaYvuekuiR7Z2V0SXRlbShcXFwiOm51bWJlclxcXCIsIFxcXCIzXFxcIil95bygYCxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6K+36L6T5YWl5pWw5a2XKDEtOSlcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIG5vQXV0b1NvZnQ6IHRydWUsXFxuICAgICAgICAgICAgICAgICAgICBjb25maXJtKHRleHQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmltKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGV4dCAmJiAhaXNOYU4odGV4dCkgJiYgTnVtYmVyLmlzSW50ZWdlcihOdW1iZXIodGV4dCkpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIjpudW1iZXJcXFwiLCB0ZXh0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFwi6K+36L6T5YWl5pWw5a2X77yB77yB77yBXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibGluZV9ibGFua1xcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLlupTnlKjnlYzpnaJcXFwiLFxcbiAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5hcHBsaWNhdGlvbixcXG4gICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBg6buY6K6kJHthcGl2aWV3LnNtYWxsKFxcXCIo6ZW/5oyJ5Y+v6aKE6KeIKVxcXCIpfWAsXFxuICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpW2dldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqRcXFwiKSA9PSBcXFwi6buY6K6kXFxcIiA/IFxcXCJvblxcXCIgOiBcXFwib2ZmXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqRcXFwiKSA9PSBcXFwi6buY6K6kXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgXFxcIum7mOiupDJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImFwcGxpY2F0aW9uMVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikub2ZmXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImFwcGxpY2F0aW9uMlxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikub25cXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgXFxcIum7mOiupFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiYXBwbGljYXRpb24xXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5vblxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJhcHBsaWNhdGlvbjJcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLm9mZlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9pY29uXFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogXFxcImFwcGxpY2F0aW9uMVxcXCIsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6aKE6KeIXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+ICQoJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpLmVtcHR5ICsgXFxcIiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMjZ2FtZVRoZW1lI2Z5cGFnZVxcXCIpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZExpc3RlbmVyKFxcXCJvbkNsb3NlXFxcIiwgJC50b1N0cmluZygodGV4dCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCB0ZXh0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBnZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kXFxcIikpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rUnVsZVBhcnNlKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInRpdGxlXFxcIjogXFxcIumFt+WuiVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsb2dvXFxcIjogXFxcImh0dHA6Ly9wcC5teWFwcC5jb20vbWFfaWNvbi8wL2ljb25fMTA0MDEzMjdfMTYxMTMwNjIyMi8yNTZcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidXJsXFxcIjogXFxcIi9hcGsvY29tLmNvb2xhcGsubWFya2V0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImlkXFxcIjogdW5kZWZpbmVkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiZW50aXR5VHlwZVxcXCI6IFxcXCJhcGtcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGDlkIznlKjmiLfnlYzpnaIke2FwaXZpZXcuc21hbGwoXFxcIijplb/mjInlj6/pooTop4gpXFxcIil9YCxcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIilbZ2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgXFxcIum7mOiupFxcXCIpID09IFxcXCLpu5jorqRcXFwiID8gXFxcIm9mZlxcXCIgOiBcXFwib25cXFwiXSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0SXRlbShcXFwiOmFwcGxpY2F0aW9uXFxcIiwgXFxcIum7mOiupFxcXCIpID09IFxcXCLpu5jorqRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kMlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiYXBwbGljYXRpb24xXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5vZmZcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiYXBwbGljYXRpb24yXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogJC5yZXF1aXJlKFxcXCJpY29uLnRvb2xcXFwiKS5vblxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCI6YXBwbGljYXRpb25cXFwiLCBcXFwi6buY6K6kXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKFxcXCJhcHBsaWNhdGlvbjFcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLm9uXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oXFxcImFwcGxpY2F0aW9uMlxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikub2ZmXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2ljb25cXFwiLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBcXFwiYXBwbGljYXRpb24yXFxcIixcXG4gICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLpooTop4hcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4gJCgkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIikuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNnYW1lVGhlbWUjZnlwYWdlXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKCh0ZXh0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIHRleHQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGdldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqRcXFwiKSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcIjphcHBsaWNhdGlvblxcXCIsIFxcXCLpu5jorqQyXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rUnVsZVBhcnNlKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInRpdGxlXFxcIjogXFxcIumFt+WuiVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsb2dvXFxcIjogXFxcImh0dHA6Ly9wcC5teWFwcC5jb20vbWFfaWNvbi8wL2ljb25fMTA0MDEzMjdfMTYxMTMwNjIyMi8yNTZcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidXJsXFxcIjogXFxcIi9hcGsvY29tLmNvb2xhcGsubWFya2V0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImlkXFxcIjogdW5kZWZpbmVkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiZW50aXR5VHlwZVxcXCI6IFxcXCJhcGtcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG4gICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWPjemmiEJVR1xcXCIsXFxuICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmJ1ZyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJtcXF3cGE6Ly9pbS9jaGF0P2NoYXRfdHlwZT13cGEmdWluPTg2MjM0NzIwNVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5pu05paw5pel5b+XXFxcIixcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikubG9ncyxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICBjb25zdCBoaWtlclBvcCA9ICQucmVxdWlyZShcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3dlaXN5ci9qcy9oaWtlclBvcC5qc1xcXCIpO1xcbiAgICAgICAgICAgICAgICBoaWtlclBvcC51cGRhdGVSZWNvcmRzQm90dG9tKGFwaXZpZXcuX3VwZGF0ZURhdGEpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5YWz5LqO5L2c6ICFXFxcIixcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikuYWJvdXQsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3J1bGVzP3J1bGU96YGT6ZW/5LuT5bqTUHJvJiNub0hpc3RvcnkjXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgYXZhdGFyVXJsOiBcXFwiaHR0cDovL3ExLnFsb2dvLmNuL2c/Yj1xcSZuaz04NjIzNDcyMDUmcz02NDBcXFwiLFxcbiAgICAgICAgICAgICAgICBjYW5fdXBsb2FkOiB0cnVlLFxcbiAgICAgICAgICAgICAgICBpZDogMjg0LFxcbiAgICAgICAgICAgICAgICBxcTogXFxcIjg2MjM0NzIwNVxcXCIsXFxuICAgICAgICAgICAgICAgIGluaGVyaXRUaXRsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5pSv5oyB5LiA5LiLXFxcIixcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikuc3VwcG9ydCxcXG4gICAgICAgICAgICB1cmw6ICQoYXBpdmlldy5lbXB0eSArIFxcXCIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2RvbmF0ZV9QYXJzZSgpO1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi5YWN6LSj5aOw5piOXFxcIixcXG4gICAgICAgICAgICBpbWc6ICQucmVxdWlyZShcXFwiaWNvbi50b29sXFxcIikuZGlzY2xhaW1lcixcXG4gICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBgPHNtYWxsPjEuIOacrOWwj+eoi+W6j+aJgOacieS7o+eggeWFqOmDqOW8gOa6kO+8jOS4lOacrOinhOWImeS4uuWtpuS5oOebrueahO+8jOivt+S6juWvvOWFpTI05bCP5pe25YaF5Yig6Zmk77yB77yB77yBPGJyPjIuIOacrOWwj+eoi+W6jzxiPuWujOWFqOWFjei0uTwvYj7vvIzlpoLmnpzkvaDmmK/ku5jotLnotK3kubDnmoTmga3llpzkvaDooqvpqpfkuobjgII8YnI+My4g5aaC5p6c5Ye6546w5bqV57q/77yM6K+3PGI+5Yi35paw5LiA5LiLPC9iPuS5n+iuuOacieS4nOilv+WRouOAgjxicj40LiDlh7rnjrBCVUfkuoY8Yj7or7flvZXlsY88L2I+5Y+R57uZJHthcGl2aWV3LmFkZHJlc3NUYWcoXFxcIm1xcXdwYTovL2ltL2NoYXQ/Y2hhdF90eXBlPXdwYSZ1aW49ODYyMzQ3MjA1XFxcIiwgXFxcIuS9nOiAhVxcXCIpfeWTpjxicj41LiDkuI3lhpk8Yj7nmbvlvZU8L2I+5Y+v6IO95Lya5bCB5Y+377yB77yB77yBPGJyPjxiPuW8gOWni+S9v+eUqOacrOinhOWImeWNs+S7o+ihqOmBteWuiOinhOWImTwvYj48L3NtYWxsPmAsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG4gICAgX0VuZF9QYXJzZTogKCkgPT4ge1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGFwaXZpZXcucmljaChhcGl2aWV3LnNtYWxsKGFwaXZpZXcuZ3JheShcXFwi772e772e772e5oiR5piv5pyJ5bqV57q/55qE772e772e772eXFxcIikpKSxcXG4gICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9nZW5lcmF0ZVRvcDogKCkgPT4ge1xcbiAgICAgICAgYXBpdmlldy5sYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgaW1nOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLnRvcCxcXG4gICAgICAgICAgICB1cmw6IGFwaXZpZXcuZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJwaWNfMV9mdWxsXFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9nZW5lcmF0ZUVuZDogKCkgPT4ge1xcbiAgICAgICAgbGV0IHRpcHMgPSBcXFwi6K+l5paH56ug5p2l5rqQ5LqO6YW35a6J77yM5aaC5oKo5Zac5qyi77yM6K+35LiL6L29QVBQXFxcIjtcXG4gICAgICAgIGxldCB3YXJuaW5nID0gXFxcIuatpOinhOWImeS7hemZkOWtpuS5oOS9v+eUqO+8jOWmguacieS4jeWmpe+8jOivt+acrOWQp+S4u+iBlOezu+aIkeWIoOmZpFxcXCI7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogYXBpdmlldy5jZW50ZXIoYCR7YXBpdmlldy5zdHJvbmcodGlwcyl9PGJyPiR7YXBpdmlldy5zbWFsbChhcGl2aWV3LmdyYXkod2FybmluZykpfWApLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9nZXRzTWluZDogKCkgPT4ge1xcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgIGNvbnN0IGhpa2VyUG9wID0gJC5yZXF1aXJlKFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vd2Vpc3lyL2pzL2hpa2VyUG9wLmpzXFxcIik7XFxuICAgICAgICAgICAgaWYgKGdldE15VmFyKFxcXCI6dXBkYXRlRGF0YVxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICBoaWtlclBvcC51cGRhdGVSZWNvcmRzQm90dG9tKGFwaXZpZXcuX3VwZGF0ZURhdGEpO1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwiOnVwZGF0ZURhdGFcXFwiLCBcXFwidHJ1ZVxcXCIpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgbGV0IHRpbWUgPSAxNTtcXG4gICAgICAgICAgICBsZXQgaWQgPSBEYXRlLm5vdygpO1xcbiAgICAgICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYXBpdmlldy5iaWcoYXBpdmlldy5zdHJvbmcoXFxcIuKAnOKAnOS9v+eUqOWJjemhu+efpeKAnOKAnFxcXCIpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBhcGl2aWV3LmVtcHR5LFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGAxLiDmnKzlsI/nqIvluo/miYDmnInku6PnoIHlhajpg6jlvIDmupDvvIzkuJTmnKzop4TliJnkuLrlrabkuaDnm67nmoTvvIzor7fkuo7lr7zlhaUyNOWwj+aXtuWGheWIoOmZpO+8ge+8ge+8gTxicj4yLiDmnKzlsI/nqIvluo88Yj7lrozlhajlhY3otLk8L2I+77yM5aaC5p6c5L2g5piv5LuY6LS56LSt5Lmw55qE5oGt5Zac5L2g6KKr6aqX5LqG44CCPGJyPuW9k+eEtuWmguaenOacieiDveWKm+aDs+m8k+WKseS9nOiAheeahOWPr+S7pSR7XFxcIuaUr+aMgeS4gOS4i1xcXCIubGluaygkKGFwaXZpZXcuZW1wdHkgKyBcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLmI2NChcXFwiXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX2RvbmF0ZV9QYXJzZSgpO1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIH0pKX08c21hbGw+KOeCueWHu+WPr+i/m+WFpeaNkOi1oCnjgII8L3NtYWxsPjxicj4zLiDlpoLmnpzlh7rnjrDlupXnur/vvIzor7c8Yj7liLfmlrDkuIDkuIs8L2I+5Lmf6K645pyJ5Lic6KW/5ZGi44CCPGJyPjQuIOWHuueOsEJVR+S6hjxiPuivt+W9leWxjzwvYj7lj5Hnu5kke2FwaXZpZXcuYWRkcmVzc1RhZyhcXFwibXFxd3BhOi8vaW0vY2hhdD9jaGF0X3R5cGU9d3BhJnVpbj04NjIzNDcyMDVcXFwiLCBcXFwi5L2c6ICFXFxcIil95ZOmPGJyPjUuIOS4jeWGmTxiPueZu+W9lTwvYj7lj6/og73kvJrlsIHlj7fvvIHvvIHvvIE8YnI+PGJyPjxiPuW8gOWni+S9v+eUqOacrOinhOWImeWNs+S7o+ihqOmBteWuiOinhOWImTwvYj48YnI+5b2T5YmN54mI5pys77yaYCArIE1ZX1JVTEUudmVyc2lvbixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImxpbmVcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuabtOaWsOaXpeW/l1xcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGlrZXJQb3AgPSAkLnJlcXVpcmUoXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS93ZWlzeXIvanMvaGlrZXJQb3AuanNcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGhpa2VyUG9wLnVwZGF0ZVJlY29yZHNCb3R0b20oYXBpdmlldy5fdXBkYXRlRGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGltZSArIFxcXCLnp5LlkI7nu6fnu61cXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6IFxcXCJ0b2FzdDovL+ivt+iupOecn+mYheivu+S7peS4iuWGheWuuVxcXCIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogaWQgKyBcXFwidGltZXJcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBzZXRSZXN1bHQoYXBpdmlldy5sYXlvdXQpO1xcbiAgICAgICAgICAgIHdoaWxlICh0aW1lICE9IDApIHtcXG4gICAgICAgICAgICAgICAgamF2YS5sYW5nLlRocmVhZC5zbGVlcCgxMDAwKTtcXG4gICAgICAgICAgICAgICAgdGltZSAtPSAxO1xcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGlkICsgXFxcInRpbWVyXFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpbWUgKyBcXFwi56eS5ZCO57un57utXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdXBkYXRlSXRlbShpZCArIFxcXCJ0aW1lclxcXCIsIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzmiJHlkIzmhI/ku6XkuIropoHmsYLigJzigJxcXFwiLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKHYpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImZpcnN0XFxcIiwgU3RyaW5nKHYpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5oSf6LCi5oKo55qE55CG6KejXFxcIjtcXG4gICAgICAgICAgICAgICAgfSwgTVlfUlVMRS52ZXJzaW9uKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfTtcXG4gICAgfSxcXG4gICAgX2RvbmF0ZV9QYXJzZTogKCkgPT4ge1xcbiAgICAgICAgc2V0UGFnZVRpdGxlKFxcXCLmjZDotaAv5pSv5oyBXFxcIik7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaNkOi1oC/mlK/mjIFcXFwiLFxcbiAgICAgICAgICAgIGRlc2M6IFxcXCLov5nkuKrmjZDotaDkuI3og73kuLrkvaDluKbmnaXnibnmnYPvvIzkvYbmgqjnmoTmlK/mjIHmmK/miJHmm7TmlrDliJvkvZznmoTliqjlipvjgIJcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwidG9hc3Q6Ly/mhJ/osKLmgqjnmoTmlK/mjIFcXFwiXFxuICAgICAgICB9KTtcXG4gICAgICAgIGFwaXZpZXcubGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicGljXzFfZnVsbFxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmRvbmF0ZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiAkLnJlcXVpcmUoXFxcImljb24udG9vbFxcXCIpLmRvbmF0ZVxcbiAgICAgICAgfSk7XFxuICAgICAgICBhcGl2aWV3LmxheW91dC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIFxcXCLlm77niYfliqDovb3nvJPmhaLor7fnqI3nrYlcXFwiLnNtYWxsKCkuZm9udGNvbG9yKFxcXCJHcmF5XFxcIiksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0sXFxuICAgIF9leHRyYV90b29sOiAoXywgX3RhYiwgX3RhZywgX25leHQpID0+IFt7XFxuICAgICAgICB0aXRsZTogYPCfk6wke19uZXh0ID8gXFxcIuWFs+azqFxcXCIgOiBcXFwi5pS26JePXFxcIn1gLFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKF8sIF90YWIsIF90YWcpID0+IHtcXG4gICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgIGxldCB0b29sZG93biA9IGFwaXZpZXcuX0dldF9zY3JpcHRpb247XFxuICAgICAgICAgICAgbGV0IGFicmVhayA9IHRydWU7XFxuICAgICAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZSh0b29sZG93bikpO1xcbiAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW190YWJdLmZvckVhY2goSXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChJdGVtW190YWddID09IF9bX3RhZ10pIHtcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLph43lpI3kuoblk6ZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGFicmVhayA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChhYnJlYWspIHtcXG4gICAgICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhYl0ucHVzaChfKTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUodG9vbGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgfSwgXywgX3RhYiwgX3RhZylcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IGDwn5Ot5Y+W5raIJHtfbmV4dCA/IFxcXCLlhbPms6hcXFwiIDogXFxcIuaUtuiXj1xcXCJ9YCxcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChfLCBfdGFiLCBfdGFnKSA9PiB7XFxuICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICBsZXQgdG9vbGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKHRvb2xkb3duKSk7XFxuICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhYl0uZm9yRWFjaCgoSXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoSXRlbVtfdGFnXSA9PSBfW190YWddKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aW5kZXggPSBpO1xcbiAgICAgICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoYWJyZWFrKSB7XFxuICAgICAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW190YWJdLnNwbGljZSh0aW5kZXgsIDEpO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSh0b29sZG93biwgSlNPTi5zdHJpbmdpZnkoYWpheF9tYXApLCAwKTtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOaIkOWKn1xcXCIpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIuaTjeS9nOWksei0pVxcXCIpO1xcbiAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgcmV0dXJuIGFwaXZpZXcuZW1wdHk7XFxuICAgICAgICB9LCBfLCBfdGFiLCBfdGFnKVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIuKshu+4j+e9rumhtlxcXCIsXFxuICAgICAgICBqczogJC50b1N0cmluZygoXywgX3RhYiwgX3RhZykgPT4ge1xcbiAgICAgICAgICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgICAgICAgICAgbGV0IHRvb2xkb3duID0gYXBpdmlldy5fR2V0X3NjcmlwdGlvbjtcXG4gICAgICAgICAgICBsZXQgYWJyZWFrID0gZmFsc2U7XFxuICAgICAgICAgICAgZXZhbChcXFwiYWpheF9tYXAgPVxcXCIgKyByZWFkRmlsZSh0b29sZG93bikpO1xcbiAgICAgICAgICAgIGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW190YWJdLmZvckVhY2goSXRlbSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChJdGVtW190YWddID09IF9bX3RhZ10pIHtcXG4gICAgICAgICAgICAgICAgICAgIGFicmVhayA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaWYgKGFicmVhaykge1xcbiAgICAgICAgICAgICAgICBhcGl2aWV3Ll9Qb3NpdGlvbl90b29sKGFqYXhfbWFwW01ZX1JVTEUudGl0bGVdW190YWJdLCBfLCBcXFwidG9wXFxcIiwgX3RhZyk7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKHRvb2xkb3duLCBKU09OLnN0cmluZ2lmeShhamF4X21hcCksIDApO1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5aSx6LSlXFxcIik7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICByZXR1cm4gYXBpdmlldy5lbXB0eTtcXG4gICAgICAgIH0sIF8sIF90YWIsIF90YWcpXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4qyH77iP572u5bqVXFxcIixcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKChfLCBfdGFiLCBfdGFnKSA9PiB7XFxuICAgICAgICAgICAgY29uc3QgYXBpdmlldyA9ICQucmVxdWlyZShcXFwiQ29uZmlnLnZpZXdcXFwiKTtcXG4gICAgICAgICAgICBsZXQgdG9vbGRvd24gPSBhcGl2aWV3Ll9HZXRfc2NyaXB0aW9uO1xcbiAgICAgICAgICAgIGxldCBhYnJlYWsgPSBmYWxzZTtcXG4gICAgICAgICAgICBldmFsKFxcXCJhamF4X21hcCA9XFxcIiArIHJlYWRGaWxlKHRvb2xkb3duKSk7XFxuICAgICAgICAgICAgYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhYl0uZm9yRWFjaChJdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKEl0ZW1bX3RhZ10gPT0gX1tfdGFnXSkge1xcbiAgICAgICAgICAgICAgICAgICAgYWJyZWFrID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoYWJyZWFrKSB7XFxuICAgICAgICAgICAgICAgIGFwaXZpZXcuX1Bvc2l0aW9uX3Rvb2woYWpheF9tYXBbTVlfUlVMRS50aXRsZV1bX3RhYl0sIF8sIFxcXCJlbmRcXFwiLCBfdGFnKTtcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUodG9vbGRvd24sIEpTT04uc3RyaW5naWZ5KGFqYXhfbWFwKSwgMCk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzmiJDlip9cXFwiKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmk43kvZzlpLHotKVcXFwiKTtcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgfSwgXywgX3RhYiwgX3RhZylcXG4gICAgfV0sXFxuICAgIF9leHRyYVNlYXJjaDogKGl0KSA9PiBbe1xcbiAgICAgICAgdGl0bGU6IGDliKDpmaTjgIwke2l0feOAjWAsXFxuICAgICAgICBqczogJC50b1N0cmluZygoaXQpID0+IHtcXG4gICAgICAgICAgICBjb25zdCBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJDb25maWcudmlld1xcXCIpO1xcbiAgICAgICAgICAgIGxldCBtZW0gPSBzdG9yYWdlMC5nZXRJdGVtKE1ZX1JVTEUudGl0bGUsIFtdKTtcXG4gICAgICAgICAgICBtZW0uZm9yRWFjaCgoXywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBpZiAoXyA9PSBpdCkge1xcbiAgICAgICAgICAgICAgICAgICAgdGluZGV4ID0gaTtcXG4gICAgICAgICAgICAgICAgICAgIGFicmVhayA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XFxuICAgICAgICAgICAgICAgIH07XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgbWVtLnNwbGljZSh0aW5kZXgsIDEpO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oTVlfUlVMRS50aXRsZSwgbWVtKTtcXG4gICAgICAgICAgICB0b2FzdChcXFwi5pON5L2c5oiQ5YqfXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBhcGl2aWV3LmVtcHR5O1xcbiAgICAgICAgfSwgaXQpXFxuICAgIH1dLFxcbiAgICBfdXBkYXRlRGF0YTogW3tcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOS8yMlxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOabtOaWsOKAmeKAmTrpobXpnaJcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOS8wOFxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS/ruWkjeKAmeKAmTrlm77niYfmmL7npLpcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOS8wNVxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrpobXpnaJcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOS8wM1xcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOabtOaWsOKAneKAnTrova7mkq3lm75VQVxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOabtOaWsOKAneKAnTp0b2tlbuaWueazlVxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOivtOaYjuKAmeKAmTrnlLHkuo7phbflronkuI3lnKjkvb/nlKjml6fniYh0b2tlbuaWueazle+8jOWwhuS9v+eUqOacgOaWsOaWueazle+8jOaEn+iwokB6ZXRhbHBoYSDlpKfkvazmj5DkvpvnmoRiY3J5cHTmlrnms5VcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8zMVxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrovpPlhaXmoYbnu4boioJcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8zMFxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOabtOaWsOKAneKAnTrorr7nva7nlYzpnaJcXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk65biW5a2Q5LiO5biW5a2Q5LmL6Ze05YiG5Ymy57q/XFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDgvMjJcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk65bqU55So55WM6Z2iXFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDgvMjFcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJzigJzmlK/mjIHigJ3igJ06dGV4dENhcmRcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8xOVxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOabtOaWsOKAneKAnTpoaWtlclBvcOmTvuaOpVxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzE3XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOuS4i+i9vVxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrliKTmlq3pk77mjqVcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8xNVxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrluJblrZDor6bnu4bml7bpl7TvvIjlpoLvvJrlh6DliIbpkp/liY3vvIlcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8xMVxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrnlKjmiLfkuLvpobXmmL7npLrmlYjmnpxcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8xMFxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrliKTmlq3pgLvovpFcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wOC8wN1xcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrnu5npqprnsonliqDkuKrog4zmma/oibJcXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk65pS26JeP5Y2V5Yik5patXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5L+u5aSN4oCZ4oCZOumFt+WTgemTvuaOpVxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzA1XFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pSv5oyB4oCd4oCdOueci+eci+WPt1xcXCIsXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOabtOaWsOKAneKAnTrplb/mjInnrKzkuIDmjpLliIbnsbvlj6/lj43ppohCVUco6KaB5b2V5bGP5ZOmKVxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrnu4bliIbmoIfnrb4v6K+d6aKYL2FwcO+8jOS5i+WJjeeahOaUtuiXj+eahOayoeS6huivt+mHjeaWsOaUtuiXj++8jOS4uuWQjue7reabtOWlvee7tOaKpFxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA4LzAzXFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOuivhOiuuuWIh+aNouS4jeWGjeWbnumhtumDqFxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrorqLpmIXliIfmjaJMb2FkaW5nXFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDgvMDJcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk65biW5a2Q5qCH562+XFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5L+u5aSN4oCZ4oCZOuW9k+ayoeaQnOe0ouWIsOi1hOa6kOaXtuaKpemUmVxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS/ruWkjeKAmeKAmTrpgLvovpHplJnor6/lr7zoh7TlhoXlrrnph43lpI0uLi4uXFxcIlxcbiAgICAgICAgXVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIjIwMjQvMDgvMDFcXFwiLFxcbiAgICAgICAgcmVjb3JkczogW1xcbiAgICAgICAgICAgIFxcXCLigJjigJjkvJjljJbigJnigJk65re75Yqg5Y+R5biW5pe26Ze0XFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOuWktOadoeS4jeaYvuekuumFt+WTge+8iOmDqOWIhuS6uuiupOS4uuaYr+W5v+WRiu+8iVxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA3LzMxXFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5L+u5aSN4oCZ4oCZOumFt+WTgeaQnOe0oumhtemdouaXoOeDreaQnOaXtuaKpemUmVxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS/ruWkjeKAmeKAmTrpgLvovpHplJnor6/lr7zoh7TlhoXlrrnph43lpI1cXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkv67lpI3igJnigJk66K+E6K665peg6ZmQ5Y+g5YqgXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5L+u5aSN4oCZ4oCZOmFwcOmhtemdouWPluWFs++8jOiuoumYhemhteaXoOaViOaenFxcXCIsXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS8mOWMluKAmeKAmTrnlLFA6ZO+5o6l6L+b5YWl55So5oi35Li76aG177yM5aKe5Yqg5LiA5bGC5riQ5Y+Y576O5YyWXFxcIixcXG4gICAgICAgICAgICBcXFwi4oCY4oCY5LyY5YyW4oCZ4oCZOuWFs+azqOWtmOWCqOWcqOacrOWcsOi/h+WkmuS4jeW/heimgeeahOaVsOaNrlxcXCJcXG4gICAgICAgIF1cXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCIyMDI0LzA3LzMwXFxcIixcXG4gICAgICAgIHJlY29yZHM6IFtcXG4gICAgICAgICAgICBcXFwi4oCc4oCc5pu05paw4oCd4oCdOuabtOaWsG7kuKrlhoXlrrnvvIzlsLHkuI3nu4bnu4bor7TkuoZcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wNy8yOVxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOaUr+aMgeKAneKAnTror53pophcXFwiLFxcblxcbiAgICAgICAgICAgIFxcXCLigJzigJzmlK/mjIHigJ3igJ065Y+R546wPT7phbflm754NVxcXCIsXFxuXFxuICAgICAgICAgICAgXFxcIuKAmOKAmOS/ruWkjeKAmeKAmTrpgLvovpHplJnor6/lr7zoh7Tml6DpmZDlvqrnjq/orr/pl67pk77mjqVcXFwiXFxuICAgICAgICBdXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiBcXFwiMjAyNC8wNy8yOFxcXCIsXFxuICAgICAgICByZWNvcmRzOiBbXFxuICAgICAgICAgICAgXFxcIuKAnOKAnOaUr+aMgeKAneKAnTrliIbnsbtcXFwiLFxcbiAgICAgICAgICAgIFxcXCLigJjigJjkv67lpI3igJnigJk65Yik5pat6aG16Z2i5LiN5YeG56GuXFxcIlxcbiAgICAgICAgXVxcbiAgICB9XVxcbn1cXG5cXG4kLmV4cG9ydHMgPSBhcGl2aWV3O1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Zu+5qCHXCIsXCJwYXRoXCI6XCJpY29uLnRvb2xcIixcInJ1bGVcIjpcImpzOlxcbiQuZXhwb3J0cyA9IHtcXG4gICAgZGVsZXRlOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTY4Ni4wOCUyMDkyMS42aC0zMjcuNjhDMjY4LjI4OCUyMDkyMS42JTIwMTg0LjMyJTIwODM3LjYzMiUyMDE4NC4zMiUyMDc0My40MjRWMzI3LjY4YzAtMjIuNTI4JTIwMTguNDMyLTQwLjk2JTIwNDAuOTYtNDAuOTZzNDAuOTYlMjAxOC40MzIlMjA0MC45NiUyMDQwLjk2djQxNS43NDRjMCUyMDQ3LjEwNCUyMDQ3LjEwNCUyMDk2LjI1NiUyMDkyLjE2JTIwOTYuMjU2aDMyNy42OGM0NS4wNTYlMjAwJTIwNzEuNjgtNDkuMTUyJTIwNzEuNjgtOTYuMjU2VjMyNy42OGMwLTIyLjUyOCUyMDE4LjQzMi00MC45NiUyMDQwLjk2LTQwLjk2czQwLjk2JTIwMTguNDMyJTIwNDAuOTYlMjA0MC45NnY0MTUuNzQ0YzAlMjA4OC4wNjQtNTcuMzQ0JTIwMTc4LjE3Ni0xNTMuNiUyMDE3OC4xNzZ6JTIyJTIwZmlsbCUzRCUyMiUyMzMzMzMzMyUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTkyMS42JTIwMzQ4LjE2SDEwMi40Yy0yMi41MjglMjAwLTQwLjk2LTE4LjQzMi00MC45Ni00MC45NnMxOC40MzItNDAuOTYlMjA0MC45Ni00MC45Nmg4MTkuMmMyMi41MjglMjAwJTIwNDAuOTYlMjAxOC40MzIlMjA0MC45NiUyMDQwLjk2cy0xOC40MzIlMjA0MC45Ni00MC45NiUyMDQwLjk2ek03NTcuNzYlMjAxODQuMzJIMjY2LjI0Yy0yMi41MjglMjAwLTQwLjk2LTE4LjQzMi00MC45Ni00MC45NnMxOC40MzItNDAuOTYlMjA0MC45Ni00MC45Nmg0OTEuNTJjMjIuNTI4JTIwMCUyMDQwLjk2JTIwMTguNDMyJTIwNDAuOTYlMjA0MC45NnMtMTguNDMyJTIwNDAuOTYtNDAuOTYlMjA0MC45NnolMjIlMjBmaWxsJTNEJTIyJTIzMzMzMzMzJTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNNTkzLjkyJTIwNzE2LjhjLTIyLjUyOCUyMDAtNDAuOTYtMTguNDMyLTQwLjk2LTQwLjk2VjQzMC4wOGMwLTIyLjUyOCUyMDE4LjQzMi00MC45NiUyMDQwLjk2LTQwLjk2czQwLjk2JTIwMTguNDMyJTIwNDAuOTYlMjA0MC45NnYyNDUuNzZjMCUyMDIyLjUyOC0xOC40MzIlMjA0MC45Ni00MC45NiUyMDQwLjk2ek00MzAuMDglMjA3MTYuOGMtMjIuNTI4JTIwMC00MC45Ni0xOC40MzItNDAuOTYtNDAuOTZWNDMwLjA4YzAtMjIuNTI4JTIwMTguNDMyLTQwLjk2JTIwNDAuOTYtNDAuOTZzNDAuOTYlMjAxOC40MzIlMjA0MC45NiUyMDQwLjk2djI0NS43NmMwJTIwMjIuNTI4LTE4LjQzMiUyMDQwLjk2LTQwLjk2JTIwNDAuOTZ6JTIyJTIwZmlsbCUzRCUyMiUyM0U1QkQ0MSUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIHRhYnNlYXJjaDogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk0zMjcuNTI2NCUyMDE2MEgxMTguODM1MmMtMy43ODg4JTIwMC02Ljg2MDglMjAzLjU4NC02Ljg2MDglMjA3Ljk4NzJ2MjA0LjQ5MjhjMCUyMDQuNDAzMiUyMDMuMDcyJTIwNy45ODcyJTIwNi44NjA4JTIwNy45ODcyaDIwOC42OTEyYzMuNzM3NiUyMDAlMjA2LjgwOTYtMy41ODQlMjA2LjgwOTYtNy45ODcyVjE2Ny45MzZjMC00LjQwMzItMy4wNzItNy45ODcyLTYuODA5Ni03Ljk4NzJ6JTIwbTU1MS4xNjglMjAyOTQuNGMxOC40MzIlMjAwJTIwMzMuMjglMjAxMS4xMTA0JTIwMzMuMjI4OCUyMDI0LjgzMnYzNTkuOTM2YzAlMjAxMy43MjE2LTE0Ljg5OTIlMjAyNC44MzItMzMuMjglMjAyNC44MzJIMTQ1LjI1NDRjLTE4LjQzMiUyMDAtMzMuMjgtMTEuMTEwNC0zMy4yOC0yNC44MzJWNDc5LjIzMmMwLTEzLjcyMTYlMjAxNC44NDgtMjQuODMyJTIwMzMuMjgtMjQuODMyaDczMy4zODg4eiUyMG0tMzguNTAyNCUyMDcxLjY4SDE4My43MDU2djI2Ni4yNEg4NDAuMTkydi0yNjYuMjR6TTYxNi4yOTQ0JTIwMTYwYzMuNzg4OCUyMDAlMjA2LjgwOTYlMjAzLjU4NCUyMDYuODA5NiUyMDcuOTg3MnYyMDQuNDkyOGMwJTIwNC40MDMyLTMuMDcyJTIwNy45ODcyLTYuODA5NiUyMDcuOTg3Mkg0MDcuNjAzMmMtMy43Mzc2JTIwMC02LjgwOTYtMy41ODQtNi44MDk2LTcuOTg3MlYxNjcuOTM2YzAtNC40MDMyJTIwMy4wNzItNy45ODcyJTIwNi44MDk2LTcuOTg3MmgyMDguNjkxMnolMjBtLTQ0LjM5MDQlMjA1MS4ySDQ1MS45OTM2VjMyOS4yMTZoMTE5LjkxMDRWMjExLjJ6JTIwbTMzMy4xNTg0LTUxLjJjMy43ODg4JTIwMCUyMDYuODYwOCUyMDMuNTg0JTIwNi44NjA4JTIwNy45ODcydjIwNC40OTI4YzAlMjA0LjQwMzItMy4wNzIlMjA3Ljk4NzItNi44NjA4JTIwNy45ODcyaC0yMDguNjkxMmMtMy43Mzc2JTIwMC02LjgwOTYtMy41ODQtNi44MDk2LTcuOTg3MlYxNjcuOTM2YzAtNC40MDMyJTIwMy4wNzItNy45ODcyJTIwNi44MDk2LTcuOTg3MmgyMDguNjkxMnolMjBtLTQ0LjM5MDQlMjA1MS4yaC0xMTkuOTEwNFYzMjkuMjE2aDExOS45MTA0VjIxMS4yeiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIGhvdDogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk01MjguNTglMjA2MjIuMDdxLTE3Ljg4JTIwMC0yOC4xNSUyMDEzLjI3dC0xMC4yOCUyMDM0LjM3cTAlMjAyMC44MiUyMDEwJTIwMzR0MjcuNiUyMDEzLjI5cTE3Ljg3JTIwMCUyMDI3LjgzLTEyLjY3dDkuOTQtMzRxMC0yMi4zMS05LjY2LTM1LjI1dC0yNy4yOC0xMy4wMXolMjIlMjBmaWxsJTNEJTIyJTIzRkY3MTZFJTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNODc0LjI0JTIwNTg2LjM4Qzg2NS4zJTIwNDg2LjE0JTIwNzc5JTIwNDA5LjcyJTIwNzcyLjg1JTIwMzExLjRjLTI5LjE5JTIwNTMuNzctMzIuMjYlMjA4OS4xLTM1LjMzJTIwMTQyLjg3LTg5LjEtMTEwLjYxLTE4Mi44MS0yNTYuNTUtMTYxLjMtMzkwLjE5JTIwMCUyMDAtMTcwLjUyJTIwNTAuNjktMjM5LjY1JTIwMzE2LjQ1LTQzLTM1LjMzLTM5Ljk0LTExMC42MS0xOC40My0xNTUuMTVDMjcxJTIwMjU3LjkxLTMuMjglMjA1NzQuNTYlMjAyNTcuODglMjA4MzguMDUlMjAzMTEuODIlMjA4OTEuNzYlMjA0MDIuNTQlMjA5NjIlMjA1MjIuNDMlMjA5NTkuODZoMC42N2M4LjYzJTIwMC40MSUyMDE2Ni44NCUyMDIlMjAyOTQuNjEtMTQ4LjY5JTIwNTkuNjgtODYuMTclMjA2NC45LTEzMC44OCUyMDU2LjUzLTIyNC43OXpNNDMzLjc2JTIwNzMxLjY1YTkuMiUyMDkuMiUyMDAlMjAwJTIwMS05LjIlMjA5LjJoLTEyYTkuMiUyMDkuMiUyMDAlMjAwJTIwMS05LjIxLTkuMlY2ODJoLTYwLjgxdjQ5LjY5YTkuMiUyMDkuMiUyMDAlMjAwJTIwMS05LjIxJTIwOS4yaC0xMmE5LjIlMjA5LjIlMjAwJTIwMCUyMDEtOS4yLTkuMlY2MDUuNTdhNy40NSUyMDcuNDUlMjAwJTIwMCUyMDElMjA3LjQ1LTcuNDVoMTUuNWE3LjQ1JTIwNy40NSUyMDAlMjAwJTIwMSUyMDcuNDYlMjA3LjQ1djUwLjE0aDYwLjgxdi01MC4xNGE3LjQ1JTIwNy40NSUyMDAlMjAwJTIwMSUyMDcuNDYtNy40NWgxNS41YTcuNDUlMjA3LjQ1JTIwMCUyMDAlMjAxJTIwNy40NSUyMDcuNDV6TTU3OCUyMDcyMi41NnEtMTkuMzglMjAyMC43OC01MC44MSUyMDIwLjc4LTMwLjY5JTIwMC00OS44Ni0yMC4xNHQtMTkuMTYtNTEuODNxMC0zMy41NCUyMDE5LjU4LTU0LjZ0NTEuNzQtMjFxMzAuNiUyMDAlMjA0OS4yNSUyMDIwLjM2dDE4LjY2JTIwNTIuMzRxMC4wMSUyMDMzLjMxLTE5LjQlMjA1NC4wOXolMjBtMTMzLjg2LTEwNS4yMWE1LjY1JTIwNS42NSUyMDAlMjAwJTIwMS01LjY1JTIwNS42NWgtMzUuMDh2MTEwYTcuODQlMjA3Ljg0JTIwMCUyMDAlMjAxLTcuODQlMjA3Ljg0aC0xNC44M2E3Ljg0JTIwNy44NCUyMDAlMjAwJTIwMS03Ljg0LTcuODRWNjIzaC0zMy40NGE3LjE5JTIwNy4xOSUyMDAlMjAwJTIwMS03LjE5LTcuMTlWNjA1LjNhNy4xOCUyMDcuMTglMjAwJTIwMCUyMDElMjA3LjE5LTcuMThoOTlhNS42NCUyMDUuNjQlMjAwJTIwMCUyMDElMjA1LjY1JTIwNS42NHolMjIlMjBmaWxsJTNEJTIyJTIzRkY3MTZFJTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNNzM3LjUyJTIwNDU0LjI3QzcwNS4wNiUyMDQxNCUyMDY3MiUyMDM2OSUyMDY0NC4xMSUyMDMyMS42MyUyMDQ0Mi43NiUyMDM0NC40MiUyMDI4Ni4zJTIwNTE1LjMyJTIwMjg2LjMlMjA3MjIuNzZhNDAyLjE1JTIwNDAyLjE1JTIwMCUyMDAlMjAwJTIwMzguMjUlMjAxNzEuNzNjNTEuNjQlMjAzNi4zMyUyMDExOC4zNCUyMDY2Ljc2JTIwMTk3Ljg4JTIwNjUuMzdoMC42N2M4LjYzJTIwMC40MSUyMDE2Ni44NCUyMDIlMjAyOTQuNjEtMTQ4LjY5JTIwNTkuNjgtODYuMjMlMjA2NC45LTEzMC44OSUyMDU2LjUzLTIyNC44LTguNDQtOTQuNTUtODUuNjgtMTY3LjkxLTk5LjU5LTI1OC40NHEtNC42NS0xLTkuMzQtMS44N2MtMjIuMjMlMjA0NS45NC0yNS4wMSUyMDc5LjQ4LTI3Ljc5JTIwMTI4LjIxek00MzMuNzYlMjA3MzEuNjVhOS4yJTIwOS4yJTIwMCUyMDAlMjAxLTkuMiUyMDkuMmgtMTJhOS4yJTIwOS4yJTIwMCUyMDAlMjAxLTkuMjEtOS4yVjY4MmgtNjAuODF2NDkuNjlhOS4yJTIwOS4yJTIwMCUyMDAlMjAxLTkuMjElMjA5LjJoLTEyYTkuMiUyMDkuMiUyMDAlMjAwJTIwMS05LjItOS4yVjYwNS41N2E3LjQ1JTIwNy40NSUyMDAlMjAwJTIwMSUyMDcuNDUtNy40NWgxNS41YTcuNDUlMjA3LjQ1JTIwMCUyMDAlMjAxJTIwNy40NiUyMDcuNDV2NTAuMTRoNjAuODF2LTUwLjE0YTcuNDUlMjA3LjQ1JTIwMCUyMDAlMjAxJTIwNy40Ni03LjQ1aDE1LjVhNy40NSUyMDcuNDUlMjAwJTIwMCUyMDElMjA3LjQ1JTIwNy40NXpNNTc4JTIwNzIyLjU2cS0xOS4zOCUyMDIwLjc4LTUwLjgxJTIwMjAuNzgtMzAuNjklMjAwLTQ5Ljg2LTIwLjE0dC0xOS4xNi01MS44M3EwLTMzLjU0JTIwMTkuNTgtNTQuNnQ1MS43NC0yMXEzMC42JTIwMCUyMDQ5LjI1JTIwMjAuMzZ0MTguNjYlMjA1Mi4zNHEwLjAxJTIwMzMuMzEtMTkuNCUyMDU0LjA5eiUyMG0xMzMuODYtMTA1LjIxYTUuNjUlMjA1LjY1JTIwMCUyMDAlMjAxLTUuNjUlMjA1LjY1aC0zNS4wOHYxMTBhNy44NCUyMDcuODQlMjAwJTIwMCUyMDEtNy44NCUyMDcuODRoLTE0LjgzYTcuODQlMjA3Ljg0JTIwMCUyMDAlMjAxLTcuODQtNy44NFY2MjNoLTMzLjQ0YTcuMTklMjA3LjE5JTIwMCUyMDAlMjAxLTcuMTktNy4xOVY2MDUuM2E3LjE4JTIwNy4xOCUyMDAlMjAwJTIwMSUyMDcuMTktNy4xOGg5OWE1LjY0JTIwNS42NCUyMDAlMjAwJTIwMSUyMDUuNjUlMjA1LjY0eiUyMiUyMGZpbGwlM0QlMjIlMjNGRjVDNjQlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk01MjguNTglMjA2MjIuMDdxLTE3Ljg4JTIwMC0yOC4xNSUyMDEzLjI3dC0xMC4yOCUyMDM0LjM3cTAlMjAyMC44MiUyMDEwJTIwMzR0MjcuNiUyMDEzLjI5cTE3Ljg3JTIwMCUyMDI3LjgzLTEyLjY3dDkuOTQtMzRxMC0yMi4zMS05LjY2LTM1LjI1dC0yNy4yOC0xMy4wMXolMjIlMjBmaWxsJTNEJTIyJTIzRkM0OTU2JTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNODc0LjI0JTIwNTg2LjM4Yy01Ljg0LTY1LjQ2LTQ0LjY3LTEyMC43Ny03Mi42Mi0xNzguNjRhNDA0JTIwNDA0JTIwMCUyMDAlMjAwLTYxLjMyJTIwOC4zNmMtMS4yMSUyMDExLjkzLTIlMjAyNC40NS0yLjc4JTIwMzguMTdRNzI1LjI3JTIwNDM5LjA2JTIwNzEzJTIwNDIzYy0xMzcuNjMlMjA0MC0yNDQuOTMlMjAxNTEuMy0yNzkuMjQlMjAyOTEuMjZ2MTcuMzlhOS4xOSUyMDkuMTklMjAwJTIwMCUyMDEtNS40MyUyMDguMzglMjA0MDYuMzElMjA0MDYuMzElMjAwJTIwMCUyMDAlMjAxOS4xMSUyMDIxMS42MiUyMDI5OS43NSUyMDI5OS43NSUyMDAlMjAwJTIwMCUyMDc1JTIwOC4yMWgwLjY3YzguNjMlMjAwLjQxJTIwMTY2Ljg0JTIwMiUyMDI5NC42MS0xNDguNjklMjA1OS42Ny04Ni4xNyUyMDY0Ljg5LTEzMC44OCUyMDU2LjUyLTIyNC43OXpNNTc4JTIwNzIyLjU2cS0xOS4zOCUyMDIwLjc4LTUwLjgxJTIwMjAuNzgtMzAuNjklMjAwLTQ5Ljg2LTIwLjE0dC0xOS4xNi01MS44M3EwLTMzLjU0JTIwMTkuNTgtNTQuNnQ1MS43NC0yMXEzMC42JTIwMCUyMDQ5LjI1JTIwMjAuMzZ0MTguNjYlMjA1Mi4zNHEwLjAxJTIwMzMuMzEtMTkuNCUyMDU0LjA5eiUyMG0xMzMuODYtMTA1LjIxYTUuNjUlMjA1LjY1JTIwMCUyMDAlMjAxLTUuNjUlMjA1LjY1aC0zNS4wOHYxMTBhNy44NCUyMDcuODQlMjAwJTIwMCUyMDEtNy44NCUyMDcuODRoLTE0LjgzYTcuODQlMjA3Ljg0JTIwMCUyMDAlMjAxLTcuODQtNy44NFY2MjNoLTMzLjQ0YTcuMTklMjA3LjE5JTIwMCUyMDAlMjAxLTcuMTktNy4xOVY2MDUuM2E3LjE4JTIwNy4xOCUyMDAlMjAwJTIwMSUyMDcuMTktNy4xOGg5OWE1LjY0JTIwNS42NCUyMDAlMjAwJTIwMSUyMDUuNjUlMjA1LjY0eiUyMiUyMGZpbGwlM0QlMjIlMjNGQzQ5NTYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk03MTEuODYlMjA2MTUuMzZ2MmE1LjY1JTIwNS42NSUyMDAlMjAwJTIwMS01LjY1JTIwNS42NWgtMS4zNWE0MDQuNTQlMjA0MDQuNTQlMjAwJTIwMCUyMDAtMzMuNzMlMjA0My4zM1Y3MzNhNy44NCUyMDcuODQlMjAwJTIwMCUyMDEtNy44NCUyMDcuODRoLTE0LjgzYTcuODQlMjA3Ljg0JTIwMCUyMDAlMjAxLTcuODQtNy44NHYtMTNhNDAyLjEyJTIwNDAyLjEyJTIwMCUyMDAlMjAwLTM4LjI5JTIwMTcxLjgzQTQwNy40MyUyMDQwNy40MyUyMDAlMjAwJTIwMCUyMDYwNi4yJTIwOTQ4YzU5LTE1Ljg1JTIwMTQwLTUyLjQ4JTIwMjExLjUxLTEzNi43OCUyMDU5LjY4LTg2LjIzJTIwNjQuOS0xMzAuODklMjA1Ni41My0yMjQuOC0yLjE4LTI0LjM4LTguOTMtNDcuMzQtMTgtNjkuNTVhNDA0LjM4JTIwNDA0LjM4JTIwMCUyMDAlMjAwLTE0NC4zOCUyMDk4LjQ5eiUyMiUyMGZpbGwlM0QlMjIlMjNGMjNENEYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk02MDQuMzYlMjA0MjEuMTJjMCUyMDEzLjY1LTQwLjklMjAzLjM3LTkxLjM1JTIwMy41MnMtOTEuMzMlMjAxMC42Ni05MS4zNy0zJTIwNDAuODEtMzMuMjklMjA5MS4yNi0zMy40NCUyMDkxLjQyJTIwMTkuMjclMjA5MS40NiUyMDMyLjkyeiUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBnb29kOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTU5MS42MjgxOSUyMDEyMS45MDQ3NjJjNy42OCUyMDAlMjAyMS4xODcwNDglMjAxLjYzMzUyNCUyMDMxLjUyNDU3MiUyMDQuOTczNzE0JTIwNTAuOTA3NDI5JTIwMTYuNTA1OTA1JTIwODAuMjEzMzMzJTIwNzAuNTgyODU3JTIwNjguMzM5ODA5JTIwMTI0LjcwODU3MmwtMS4yMTkwNDclMjA1LjA3MTIzOC00NS4zNzI5NTMlMjAxNzAuMTc5MDQ3aDE3OS43MzYzODFjMjEuODIwOTUyJTIwMCUyMDQzLjM5ODA5NSUyMDguMDk0NDc2JTIwNTguMDI2NjY3JTIwMjQuMjgzNDI5JTIwMTYuMzM1MjM4JTIwMTguMDkwNjY3JTIwMjIuNjk4NjY3JTIwNDIuMDMyNzYyJTIwMTcuODQ2ODU3JTIwNjUuMjY3ODA5bC0xLjIxOTA0NyUyMDQuOTczNzE1LTk0Ljc2ODc2MiUyMDMzNy40MzIzODFhNTkuMjk0NDc2JTIwNTkuMjk0NDc2JTIwMCUyMDAlMjAxLTUyLjY2Mjg1NyUyMDQzLjE1NDI4NWwtNC4zODg1NzIlMjAwLjE0NjI4NkgyNjguMTkwNDc2VjQ0NC4wMDE1MjRjOTcuMDg0OTUyLTIxLjAxNjM4MSUyMDIzOS4wNzk2MTktMjc5LjI4MzgxJTIwMjM5LjA3OTYxOS0yNzkuMjgzODFDNTI3LjQ1NzUyNCUyMDEzNy4zMzc5MDUlMjA1NTEuOTM2JTIwMTIxLjkwNDc2MiUyMDU5MS42MjgxOSUyMDEyMS45MDQ3NjJ6TTgyOC45NTIzODElMjA1MDEuMTI2MDk1YzAtMC4zMTY5NTItMC4xNDYyODYtMC41MTItMC41NjA3NjItMC45NzUyMzglMjAwLjM0MTMzMyUyMDAuMzkwMDk1LTAuOTc1MjM4LTAuMTcwNjY3LTMuNzU0NjY3LTAuMTcwNjY3SDU0OS42OTI5NTJsNjkuOTAwMTkxLTI2Mi4yMTcxNDJjNS4wMjI0NzYtMTguNzczMzMzLTQuMTQ0NzYyLTM2LjQ5ODI4Ni0xOC45NjgzODEtNDEuMzAxMzM0YTUyLjU4OTcxNCUyMDUyLjU4OTcxNCUyMDAlMjAwJTIwMC05LjAyMDk1Mi0xLjQxNDA5NWMtMTAuOTIyNjY3JTIwMC0xNS40NTc1MjQlMjAxLjI2NzgxLTIxLjA2NTE0MyUyMDcuNTU4MDk1bC0xLjk1MDQ3NyUyMDIuMjkxODEtOS4yMTYlMjAxNi4wOTE0MjgtOS44NzQyODUlMjAxNi43MDA5NTNhMTUzNC42ODM0MjklMjAxNTM0LjY4MzQyOSUyMDAlMjAwJTIwMS03Mi4yMTYzODElMjAxMTAuMjAxOTA1Yy0yOC4wMTM3MTQlMjAzOC43NjU3MTQtNTUuNTM5ODElMjA3Mi4xNjc2MTktODIuNTUzOTA1JTIwOTguODE2LTE3Ljk2ODc2MiUyMDE3LjcyNDk1Mi0zNS41OTYxOSUyMDMyLjQ5OTgxLTUzLjM5NDI4NiUyMDQzLjk1ODg1N1Y4MjguOTUyMzgxaDM5NS42MDUzMzRMODI4Ljk1MjM4MSUyMDUwMS4xMjYwOTV6TTEyMS45MDQ3NjIlMjA0MzguODU3MTQzaDczLjE0Mjg1N3Y0NjMuMjM4MDk1SDEyMS45MDQ3NjJ6JTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgZGlzY3VzczogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk03MzEuNDI4NTcxJTIwMjY4LjE5MDQ3NmE3My4xNDI4NTclMjA3My4xNDI4NTclMjAwJTIwMCUyMDElMjA3My4xNDI4NTglMjA3My4xNDI4NTd2MzY1LjcxNDI4NmE3My4xNDI4NTclMjA3My4xNDI4NTclMjAwJTIwMCUyMDEtNzMuMTQyODU4JTIwNzMuMTQyODU3SDQ3OS40NzU4MWwtMTY1LjM3NiUyMDExNC40OTI5NTNBMjkuMjU3MTQzJTIwMjkuMjU3MTQzJTIwMCUyMDAlMjAxJTIwMjY4LjE5MDQ3NiUyMDg3MC42NDM4MVY3ODAuMTkwNDc2SDE3MC42NjY2NjdhNzMuMTQyODU3JTIwNzMuMTQyODU3JTIwMCUyMDAlMjAxLTczLjE0Mjg1Ny03My4xNDI4NTdWMzQxLjMzMzMzM2E3My4xNDI4NTclMjA3My4xNDI4NTclMjAwJTIwMCUyMDElMjA3My4xNDI4NTctNzMuMTQyODU3aDU2MC43NjE5MDR6JTIwbTAlMjA3My4xNDI4NTdIMTcwLjY2NjY2N3YzNjUuNzE0Mjg2aDE3MC42NjY2NjZ2NzkuNzk4ODU3TDQ1Ni42MzA4NTclMjA3MDcuMDQ3NjE5SDczMS40Mjg1NzFWMzQxLjMzMzMzM3olMjBtLTI4NS43NDQ3NjElMjAyMTkuNDI4NTcydjczLjE0Mjg1N0gyNDMuODA5NTI0di03My4xNDI4NTdoMjAxLjg3NDI4NnpNODUzLjMzMzMzMyUyMDE0Ni4yODU3MTRhNzMuMTQyODU3JTIwNzMuMTQyODU3JTIwMCUyMDAlMjAxJTIwNzMuMTQyODU3JTIwNzMuMTQyODU3djM5MC4wOTUyMzloLTczLjE0Mjg1N1YyMTkuNDI4NTcxSDI5Mi41NzE0MjlWMTQ2LjI4NTcxNGg1NjAuNzYxOTA0ek01ODUuMTQyODU3JTIwNDE0LjQ3NjE5djczLjE0Mjg1OEgyNDMuODA5NTI0di03My4xNDI4NThoMzQxLjMzMzMzM3olMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBzaGFyZTogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk0zNTQuOTg2NjY3JTIwMjE5LjQyODU3MXY3My4xNDI4NThIMTk1LjA0NzYxOXY1MzYuMzgwOTUyaDU4NS4xNDI4NTdWNTQ4LjU3MTQyOWg3My4xNDI4NTdWODI4Ljk1MjM4MWE3My4xNDI4NTclMjA3My4xNDI4NTclMjAwJTIwMCUyMDEtNzMuMTQyODU3JTIwNzMuMTQyODU3SDE5NS4wNDc2MTlhNzMuMTQyODU3JTIwNzMuMTQyODU3JTIwMCUyMDAlMjAxLTczLjE0Mjg1Ny03My4xNDI4NTdWMjkyLjU3MTQyOWE3My4xNDI4NTclMjA3My4xNDI4NTclMjAwJTIwMCUyMDElMjA3My4xNDI4NTctNzMuMTQyODU4aDE1OS45MzkwNDh6JTIwbTM4My44MjkzMzMtMTAwLjQ3MzkwNGwxNzIuMzk3NzE0JTIwMTcyLjM3MzMzMy0xODEuMDA0MTklMjAxODEuMDI4NTcxLTUxLjczNjM4MS01MS43MTJMNzU3Ljc4NDM4MSUyMDM0MS4zMzMzMzNINjcwLjQ3NjE5Yy0xMzkuMDY4OTUyJTIwMC0yNTIuMjQ1MzMzJTIwMTEwLjg4NDU3MS0yNTUuOTAyNDc2JTIwMjQ5LjA3NTgxTDQxNC40NzYxOSUyMDU5Ny4zMzMzMzN2OTcuNTIzODFoLTczLjE0Mjg1N3YtOTcuNTIzODFDMzQxLjMzMzMzMyUyMDQxNS41NDg5NTIlMjA0ODguNjkxODElMjAyNjguMTkwNDc2JTIwNjcwLjQ3NjE5JTIwMjY4LjE5MDQ3NmgxMTQuMTI3MjM5bC05Ny40OTk0MjktOTcuNTIzODA5JTIwNTEuNzEyLTUxLjcxMnolMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICByZXBseXNvcnQ6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNMTQ2LjI4NTcxNCUyMDYwOS41MjM4MWgxMjEuOTA0NzYydjI0My44MDk1MjNIMTQ2LjI4NTcxNHolMjBtMTk1LjA0NzYxOS0xOTUuMDQ3NjJoMTIxLjkwNDc2MnY0MzguODU3MTQzaC0xMjEuOTA0NzYyeiUyMG0xOTUuMDQ3NjE5JTIwNDguNzYxOTA1aDEyMS45MDQ3NjJ2MzkwLjA5NTIzOGgtMTIxLjkwNDc2MnolMjBtMTk1LjA0NzYxOS0yOTIuNTcxNDI4aDEyMS45MDQ3NjJ2NjgyLjY2NjY2NmgtMTIxLjkwNDc2MnolMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBhcHBsaWNhdGlvbjogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk01MTIlMjA1MTJtLTUxMiUyMDBhNTEyJTIwNTEyJTIwMCUyMDElMjAwJTIwMTAyNCUyMDAlMjA1MTIlMjA1MTIlMjAwJTIwMSUyMDAtMTAyNCUyMDBaJTIyJTIwZmlsbCUzRCUyMiUyM0IyREI0OCUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTI1Mi41ODY2NjclMjAzMDEuMzk3MzMzYzAtMjYuOTY1MzMzJTIwMjEuOTQyODU3LTQ4LjgxMDY2NyUyMDQ4LjgxMDY2Ni00OC44MTA2NjZoMTQ5LjQ1NTIzOGMyNi45NDA5NTIlMjAwJTIwNDguNzg2Mjg2JTIwMjEuOTQyODU3JTIwNDguNzg2Mjg2JTIwNDguODEwNjY2djE0OS40NTUyMzhjMCUyMDI2Ljk0MDk1Mi0yMS45MTg0NzYlMjA0OC43ODYyODYtNDguODEwNjY3JTIwNDguNzg2Mjg2aC0xNDkuNDMwODU3Yy0yNi45NjUzMzMlMjAwLTQ4LjgxMDY2Ny0yMS45MTg0NzYtNDguODEwNjY2LTQ4LjgxMDY2N3YtMTQ5LjQzMDg1N3olMjBtMCUyMDI4NS40Mjc4MWMwLTI2Ljk2NTMzMyUyMDIxLjk0Mjg1Ny00OC44MTA2NjclMjA0OC44MTA2NjYtNDguODEwNjY3aDE0OS40NTUyMzhjMjYuOTQwOTUyJTIwMCUyMDQ4Ljc4NjI4NiUyMDIxLjkxODQ3NiUyMDQ4Ljc4NjI4NiUyMDQ4LjgxMDY2N3YxNDkuNDMwODU3YzAlMjAyNi45NjUzMzMtMjEuOTE4NDc2JTIwNDguODEwNjY3LTQ4LjgxMDY2NyUyMDQ4LjgxMDY2N2gtMTQ5LjQzMDg1N2MtMjYuOTY1MzMzJTIwMC00OC44MTA2NjctMjEuOTQyODU3LTQ4LjgxMDY2Ni00OC44MTA2Njd2LTE0OS40NTUyMzh6JTIwbTI4NS40Mjc4MDktMjg1LjQyNzgxYzAtMjYuOTY1MzMzJTIwMjEuOTE4NDc2LTQ4LjgxMDY2NyUyMDQ4LjgxMDY2Ny00OC44MTA2NjZoMTQ5LjQzMDg1N2MyNi45NjUzMzMlMjAwJTIwNDguODEwNjY3JTIwMjEuOTQyODU3JTIwNDguODEwNjY3JTIwNDguODEwNjY2djE0OS40NTUyMzhjMCUyMDI2Ljk0MDk1Mi0yMS45NDI4NTclMjA0OC43ODYyODYtNDguODEwNjY3JTIwNDguNzg2Mjg2aC0xNDkuNDU1MjM4Yy0yNi45NDA5NTIlMjAwLTQ4Ljc4NjI4Ni0yMS45MTg0NzYtNDguNzg2Mjg2LTQ4LjgxMDY2N3YtMTQ5LjQzMDg1N3olMjBtMCUyMDI4NS40Mjc4MWMwLTI2Ljk2NTMzMyUyMDIxLjkxODQ3Ni00OC44MTA2NjclMjA0OC44MTA2NjctNDguODEwNjY3aDE0OS40MzA4NTdjMjYuOTY1MzMzJTIwMCUyMDQ4LjgxMDY2NyUyMDIxLjkxODQ3NiUyMDQ4LjgxMDY2NyUyMDQ4LjgxMDY2N3YxNDkuNDMwODU3YzAlMjAyNi45NjUzMzMtMjEuOTQyODU3JTIwNDguODEwNjY3LTQ4LjgxMDY2NyUyMDQ4LjgxMDY2N2gtMTQ5LjQ1NTIzOGMtMjYuOTQwOTUyJTIwMC00OC43ODYyODYtMjEuOTQyODU3LTQ4Ljc4NjI4Ni00OC44MTA2Njd2LTE0OS40NTUyMzh6JTIyJTIwZmlsbCUzRCUyMiUyM0ZGRkZGRiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIHBvc3Q6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNNzAwLjQyODg5MTIyJTIwNDgzLjY3NDk1MjUxaC03Ny4xNDI2MDYxOXYtODUuNzg5MDYzODJoNzcuMTQyNjA2MTlhOC4wNjkyMDczNCUyMDguMDY5MjA3MzQlMjAwJTIwMCUyMDAlMjA4LjU5NzMyOTQ1LTguNTk3MzI5NDZ2LTE3LjA5NjQwMjUzYTguMDY5MjA3MzQlMjA4LjA2OTIwNzM0JTIwMCUyMDAlMjAwLTguNTk3MzI5NDUtOC41OTczMjk0NWgtNzcuMTQyNjA2MTlWMzIwLjc2Nzg0NjU5YTguMDY5MjA3MzQlMjA4LjA2OTIwNzM0JTIwMCUyMDAlMjAwLTguNTk3MzI5NDUtOC41OTczMjk0NWgtMTcuMDk2NDAyNTNhOC4wNjkyMDczNCUyMDguMDY5MjA3MzQlMjAwJTIwMCUyMDAtOC41OTczMjk0NiUyMDguNTk3MzI5NDV2MTYyLjkwNzEwNTkyaC0yNS42NTY4ODY4MmE4LjA2OTIwNzM0JTIwOC4wNjkyMDczNCUyMDAlMjAwJTIwMC04LjU5NzMyODQ3JTIwOC41OTczMjg0N3YxNzEuNDU1MzA4MTdhOC4wODE0ODkzOSUyMDguMDgxNDg5MzklMjAwJTIwMCUyMDAlMjA4LjU5NzMyODQ3JTIwOC41OTczMjg0N2g5NC4yNzU4NTU4NGE1MS41ODM5NzQ3NSUyMDUxLjU4Mzk3NDc1JTIwMCUyMDAlMjAwJTIwNTEuNDQ4ODc0Mi01MS40NjExNTUyNlY0OTIuMjM1NDM1ODNhOC4xNjc0NjI3MyUyMDguMTY3NDYyNzMlMjAwJTIwMCUyMDAtOC42MzQxNzU1OS04LjU2MDQ4MzMyeiUyMG0tMjUuNjkzNzMxOTklMjAxMzcuMTY0MjQ1NzVhMTcuMTk0NjU3OTIlMjAxNy4xOTQ2NTc5MiUyMDAlMjAwJTIwMS0xNy4xMjA5NjY2MiUyMDE3LjEzMzI0ODY4aC02My40MzYwMDcyNWMtMy40MTQzNjc2OSUyMDAtNS4xNDYxMTU2My0xLjc0NDAyOTk4LTUuMTQ2MTE1NjMtNS4xNTgzOTc2OHYtMTA5LjczODc2NTgyYzAtMy40MDIwODU2NCUyMDEuNzMxNzQ3OTQtNS4xNDYxMTU2MyUyMDUuMTQ2MTE1NjMtNS4xNDYxMTU2M2g3NS40MTA4NTgyNWMzLjQwMjA4NTY0JTIwMCUyMDUuMTQ2MTE1NjMlMjAxLjc0NDAyOTk4JTIwNS4xNDYxMTU2MiUyMDUuMTQ2MTE1NjN6TTUxMy41NDc1MTkyJTIwNjM3Ljk3MjQ0Njk0Yy02Ljg5MDE0NTYxLTEuNzQ0MDI5OTgtMTcuMTMzMjQ4NjctNi44Mjg3MzUzOC0zMi41ODM4Nzc1OS0xNy4xMzMyNDg2OC0zMi41ODM4Nzc1OS0yNS42OTM3MzE5OC0zMC44NTIxMjk2Ni01MS40NDg4NzQyLTMwLjg1MjEyOTY2LTUxLjQ0ODg3NDJWMzg5LjMyNTQwNTM3YTguMDY5MjA3MzQlMjA4LjA2OTIwNzM0JTIwMCUyMDAlMjAwLTguNTk3MzI5NDUtOC41OTczMjk0NWgtMTcuMDk2NDAyNTNhOC4wNjkyMDczNCUyMDguMDY5MjA3MzQlMjAwJTIwMCUyMDAtOC41OTczMjk0NSUyMDguNTk3MzI5NDVsLTEuNzQ0MDI5OTklMjAxODAuMDY0OTE4NjlzMCUyMDM0LjMxNTYyNTUzLTI0LjAxMTExMjIzJTIwNTMuMTE5MjExOTFjLTEzLjcxODg4MDk4JTIwOC41OTczMjk0NS0yNy40Mzc3NjE5NyUyMDEzLjcxODg4MDk4LTM0LjM4OTMxNjgzJTIwMTUuNDYyOTEwOTdhNy4zNjkxMzk1MyUyMDcuMzY5MTM5NTMlMjAwJTIwMCUyMDAtNi44OTAxNDQ2MyUyMDYuODkwMTQ1NnYxNy4xMjA5NjY2M2MwJTIwNS4xNTgzOTc2NyUyMDUuMTU4Mzk3NjclMjA4LjU5NzMyOTQ1JTIwMTAuMzA0NTEzMyUyMDguNTk3MzI5NDUlMjAxMS45NzQ4NTEtMS43NDQwMjk5OCUyMDMwLjg1MjEyOTY2LTUuMTU4Mzk3NjclMjA0Mi45MDA2NzE5NS0xMy43MTg4ODA5OCUyMDI3LjQyNTQ3OTkyLTE3LjE5NDY1NzkyJTIwMzIuNTgzODc3NTktMzQuMzg5MzE2ODMlMjAzMi41ODM4Nzc2LTM0LjM4OTMxNjgzczUuMTQ2MTE1NjMlMjAxNS40NjI5MTA5NyUyMDM0LjMyNzkwNzU4JTIwMzIuNTgzODc3NTljMTUuNDYyOTEwOTclMjAxMC4zMDQ1MTMzJTIwMzAuODM5ODQ3NjElMjAxMy43MTg4ODA5OCUyMDQxLjE0NDM2MDklMjAxMy43MTg4ODA5OSUyMDUuMTU4Mzk3NjclMjAwJTIwMTAuMzE2Nzk1MzQtMy40MTQzNjc2OSUyMDEwLjMxNjc5NTM1LTguNTk3MzI5NDV2LTE3LjA1OTU1NzM4YzAuMDg1OTczMzQtMS43MzE3NDc5NC0zLjM1Mjk1ODQ0LTMuNDE0MzY3NjktNi44MTY0NTQzMi01LjE0NjExNTYyeiUyMiUyMGZpbGwlM0QlMjIlMjMxMjk2ZGIlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk01MTEuNDU5NTk2ODMlMjAzLjMwNTMyNTIzQzIzNy42NTkyMjY0NSUyMDMuMzA1MzI1MjMlMjAxNC45NjM4MzY5MSUyMDIyMi4wMzM2NjE4NyUyMDguNTQwNDAzMTclMjA0OTQuMjg2NTEzMDVWNTE4LjUwNjQxNzEyYzYuNDIzNDMyNzUlMjAyNzIuMjQwNTY5MTIlMjAyMjkuMTE4ODIyMyUyMDQ5MC45Njg5MDU3NyUyMDUwMi45MTkxOTM2NiUyMDQ5MC45Njg5MDU3NyUyMDI3Ny44NDExMTU1NiUyMDAlMjA1MDMuMDY2NTc1MjctMjI1LjIyNTQ2MDY5JTIwNTAzLjA2NjU3NTI2LTUwMy4wNjY1NzYyNVM3ODkuMzAwNzExNDElMjAzLjMwNTMyNTIzJTIwNTExLjQ1OTU5NjgzJTIwMy4zMDUzMjUyM3pNODA4LjA5MjAxNjcyJTIwNjc3LjU5Mzg1MjczYTc4LjI5NzEwNDgxJTIwNzguMjk3MTA0ODElMjAwJTIwMCUyMDEtNzguMzA5Mzg2ODYlMjA3OC4zMDkzODY4NkgzNjcuNjAxNzE1MjdsLTEyMS4wNjI2NzYyMiUyMDY2LjAzOTc2OTY5VjMwNS43MTAyMzgyNUE3OC4yOTcxMDQ4MSUyMDc4LjI5NzEwNDgxJTIwMCUyMDAlMjAxJTIwMzI0Ljg0ODQyNTkxJTIwMjI3LjQyNTQxNTQ4aDQwNC45NzEwNTAwOUE3OC4yODQ4MjI3NyUyMDc4LjI4NDgyMjc3JTIwMCUyMDAlMjAxJTIwODA4LjA5MjAxNjcyJTIwMzA1LjcxMDIzODI1eiUyMiUyMGZpbGwlM0QlMjIlMjMxMjk2ZGIlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk0zNTcuNTA1OTk0OCUyMDU4Ni41MTEyOTA2OWgxNy4xMzMyNDg2N2E4LjA4MTQ4OTM5JTIwOC4wODE0ODkzOSUyMDAlMjAwJTIwMCUyMDguNTk3MzI5NDUtOC41OTczMjg0N1YzNTMuMzI3MTYwMDlhNy4zNjkxMzk1MyUyMDcuMzY5MTM5NTMlMjAwJTIwMCUyMDElMjA2LjkwMjQyNjY3LTYuOTAyNDI3NjVoODkuMTkxMTQ5NDdhNy4zNjkxMzk1MyUyMDcuMzY5MTM5NTMlMjAwJTIwMCUyMDElMjA2LjgxNjQ1NDMyJTIwNi45MDI0Mjc2NVY1NzcuOTUwODA3MzdhOC4wODE0ODkzOSUyMDguMDgxNDg5MzklMjAwJTIwMCUyMDAlMjA4LjU5NzMyODQ2JTIwOC41OTczMjk0NmgxNy4xMjA5Njc2MWE4LjA4MTQ4OTM5JTIwOC4wODE0ODkzOSUyMDAlMjAwJTIwMCUyMDguNTk3MzI4NDctOC41OTczMjk0NlYzMjkuMzY1MTc1MDZhMTcuMDk2NDAzNTIlMjAxNy4wOTY0MDM1MiUyMDAlMjAwJTIwMC0xNy4yMTkyMjIwMS0xNy4xOTQ2NTc5MmgtMTAyLjgzNjMzODE4Yy0yOS4xODE3OTE5NSUyMDAtNTEuNDYxMTU2MjUlMjAyMi4yNzkzNjQzLTUxLjQ2MTE1NjI1JTIwNTEuNDQ4ODc0MlY1NzcuOTUwODA3MzdhOC4wODE0ODkzOSUyMDguMDgxNDg5MzklMjAwJTIwMCUyMDAlMjA4LjU2MDQ4MzMyJTIwOC41NjA0ODMzMnolMjIlMjBmaWxsJTNEJTIyJTIzMTI5NmRiJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgbnVtYmVyOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTg5NiUyMDIyNEgxMjhjLTM1LjIlMjAwLTY0JTIwMjguOC02NCUyMDY0djQ0OGMwJTIwMzUuMiUyMDI4LjglMjA2NCUyMDY0JTIwNjRoNzY4YzM1LjIlMjAwJTIwNjQtMjguOCUyMDY0LTY0VjI4OGMwLTM1LjItMjguOC02NC02NC02NHolMjBtMCUyMDQ4MGMwJTIwMTkuMi0xMi44JTIwMzItMzIlMjAzMkgxNjBjLTE5LjIlMjAwLTMyLTEyLjgtMzItMzJWMzIwYzAtMTkuMiUyMDEyLjgtMzIlMjAzMi0zMmg3MDRjMTkuMiUyMDAlMjAzMiUyMDEyLjglMjAzMiUyMDMydjM4NHolMjIlMjBmaWxsJTNEJTIyJTIzMzMzMzMzJTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNMjkxLjIlMjA0MTIuOGMtMTIuOCUyMDYuNC0yMi40JTIwMTIuOC0zNS4yJTIwMTZ2NDEuNmMyMi40LTYuNCUyMDQxLjYtMTYlMjA1NC40LTI4LjhWNjQwaDM4LjRWMzkzLjZIMzIwYy02LjQlMjAzLjItMTkuMiUyMDEyLjgtMjguOCUyMDE5LjJ6TTQ4OS42JTIwNTYwYzIyLjQtMTYlMjA0MS42LTI4LjglMjA0OC0zOC40JTIwMTYtMTYlMjAyMi40LTM4LjQlMjAyMi40LTU3LjYlMjAwLTIyLjQtNi40LTM4LjQtMjIuNC01NC40LTE2LTEyLjgtMzUuMi0xOS4yLTU3LjYtMTkuMi0yNS42JTIwMC00OCUyMDkuNi02MC44JTIwMjUuNi0xNiUyMDE2LTIyLjQlMjAzOC40LTIyLjQlMjA2Ny4yaDM4LjRjMC0xOS4yJTIwMy4yLTM1LjIlMjAxMi44LTQ0LjglMjA2LjQtOS42JTIwMTkuMi0xNiUyMDMyLTE2czI1LjYlMjAzLjIlMjAzMiUyMDkuNmM2LjQlMjA2LjQlMjA5LjYlMjAxNiUyMDkuNiUyMDI4LjhzLTYuNCUyMDI1LjYtMTYlMjAzOC40Yy02LjQlMjA2LjQtMTYlMjAxNi0zMiUyMDI4LjgtMjguOCUyMDE5LjItNDQuOCUyMDM1LjItNTQuNCUyMDQ0LjgtMTYlMjAxOS4yLTIyLjQlMjA0MS42LTIyLjQlMjA2NGgxNjYuNHYtMzUuMkg0NDQuOGM2LjQtMTIuOCUyMDIyLjQtMjUuNiUyMDQ0LjgtNDEuNnolMjBtMjMzLjYtNTQuNGMyNS42LTkuNiUyMDM4LjQtMjUuNiUyMDM4LjQtNTQuNCUyMDAtMjIuNC02LjQtMzguNC0yMi40LTUxLjItMTYtMTIuOC0zNS4yLTE5LjItNTcuNi0xOS4yUzY0MCUyMDM4Ny4yJTIwNjI0JTIwNDAwYy0xNiUyMDEyLjgtMjUuNiUyMDMyLTI1LjYlMjA1Ny42aDM4LjRjMC0xNiUyMDYuNC0yNS42JTIwMTIuOC0zMiUyMDYuNC02LjQlMjAxOS4yLTkuNiUyMDMyLTkuNnMyNS42JTIwMy4yJTIwMzIlMjA5LjZjNi40JTIwNi40JTIwOS42JTIwMTYlMjA5LjYlMjAyOC44cy0zLjIlMjAyMi40LTkuNiUyMDI4LjhjLTYuNCUyMDYuNC0xOS4yJTIwOS42LTMyJTIwOS42aC0xNnYyOC44aDE2YzE2JTIwMCUyMDI1LjYlMjAzLjIlMjAzNS4yJTIwOS42JTIwOS42JTIwNi40JTIwMTIuOCUyMDE2JTIwMTIuOCUyMDMyJTIwMCUyMDEyLjgtMy4yJTIwMjIuNC0xMi44JTIwMjguOC05LjYlMjA5LjYtMTkuMiUyMDEyLjgtMzUuMiUyMDEyLjgtMTIuOCUyMDAtMjUuNi0zLjItMzItMTIuOC05LjYtOS42LTEyLjgtMjIuNC0xNi0zOC40aC0zOC40YzMuMiUyMDI4LjglMjAxMi44JTIwNDglMjAyOC44JTIwNjQlMjAxNiUyMDEyLjglMjAzNS4yJTIwMTkuMiUyMDYwLjglMjAxOS4yJTIwMjUuNiUyMDAlMjA0OC02LjQlMjA2NC0yMi40JTIwMTYtMTYlMjAyMi40LTMyJTIwMjIuNC01NC40JTIwMC0xNi0zLjItMjUuNi0xMi44LTM1LjItOS42LTYuNC0yMi40LTE2LTM1LjItMTkuMnolMjIlMjBmaWxsJTNEJTIyJTIzMzMzMzMzJTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFXFxcIixcXG4gICAgZGlzY2xhaW1lcjogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk01MTIlMjA1MTJtLTQ3MC4zNzM5ODQlMjAwYTQ3MC4zNzM5ODQlMjA0NzAuMzczOTg0JTIwMCUyMDElMjAwJTIwOTQwLjc0Nzk2OCUyMDAlMjA0NzAuMzczOTg0JTIwNDcwLjM3Mzk4NCUyMDAlMjAxJTIwMC05NDAuNzQ3OTY4JTIwMFolMjIlMjBmaWxsJTNEJTIyJTIzRUI4QTk4JTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNNDk5LjUxMjE5NSUyMDQ5MS4xODY5OTJtLTM5MS4yODQ1NTMlMjAwYTM5MS4yODQ1NTMlMjAzOTEuMjg0NTUzJTIwMCUyMDElMjAwJTIwNzgyLjU2OTEwNiUyMDAlMjAzOTEuMjg0NTUzJTIwMzkxLjI4NDU1MyUyMDAlMjAxJTIwMC03ODIuNTY5MTA2JTIwMFolMjIlMjBmaWxsJTNEJTIyJTIzRkY5NkE1JTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNNTEyJTIwNjIuNDM5MDI0YzI0Ny44OTEyNTIlMjAwJTIwNDQ5LjU2MDk3NiUyMDIwMS42NzM4ODYlMjA0NDkuNTYwOTc2JTIwNDQ5LjU2MDk3NiUyMDAlMjAyNDcuODkxMjUyLTIwMS42Njk3MjQlMjA0NDkuNTYwOTc2LTQ0OS41NjA5NzYlMjA0NDkuNTYwOTc2LTI0Ny44ODcwODklMjAwLTQ0OS41NjA5NzYtMjAxLjY2OTcyNC00NDkuNTYwOTc2LTQ0OS41NjA5NzZDNjIuNDM5MDI0JTIwMjY0LjExMjkxMSUyMDI2NC4xMTI5MTElMjA2Mi40MzkwMjQlMjA1MTIlMjA2Mi40MzkwMjR6TTIwLjgxMzAwOCUyMDUxMmMwJTIwMjcwLjgzNTUxMiUyMDIyMC4zNDczMTclMjA0OTEuMTg2OTkyJTIwNDkxLjE4Njk5MiUyMDQ5MS4xODY5OTIlMjAyNzAuODM1NTEyJTIwMCUyMDQ5MS4xODY5OTItMjIwLjM1MTQ4JTIwNDkxLjE4Njk5Mi00OTEuMTg2OTkyQzEwMDMuMTg2OTkyJTIwMjQxLjE2MDMyNSUyMDc4Mi44MzU1MTIlMjAyMC44MTMwMDglMjA1MTIlMjAyMC44MTMwMDglMjAyNDEuMTYwMzI1JTIwMjAuODEzMDA4JTIwMjAuODEzMDA4JTIwMjQxLjE2MDMyNSUyMDIwLjgxMzAwOCUyMDUxMnolMjIlMjBmaWxsJTNEJTIyJTIzNkU2RTk2JTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNNDcwLjcxMTE1NCUyMDI5OS44MDMwNTd2MjM1LjI5MTA1N2EzNC44OTkyNTIlMjAzNC44OTkyNTIlMjAwJTIwMCUyMDAlMjA2OS44MDI2NjclMjAwVjI5OS44MDMwNTdjMC0xOS4yNzcwMDgtMTUuNjI2NDA3LTM0Ljg5OTI1Mi0zNC45MDM0MTQtMzQuODk5MjUycy0zNC44OTkyNTIlMjAxNS42MjY0MDctMzQuODk5MjUzJTIwMzQuODk5MjUyek00NzAuNzExMTU0JTIwNjUxLjk0MjUwNHYzNi41MTAxNzlhMzQuOTAzNDE1JTIwMzQuOTAzNDE1JTIwMCUyMDAlMjAwJTIwNjkuODAyNjY3JTIwMHYtMzYuNTEwMTc5YTM0LjkwNzU3NyUyMDM0LjkwNzU3NyUyMDAlMjAwJTIwMC02OS44MDI2NjclMjAweiUyMiUyMGZpbGwlM0QlMjIlMjM2RTZFOTYlMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBsb2dzOiBcXFwiaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTcyNi45JTIwMjY3LjdIMjk3LjFjLTE2LjIlMjAwLTI5LjQlMjAxMy4yLTI5LjQlMjAyOS40VjcyN2MwJTIwMTYuMiUyMDEzLjIlMjAyOS40JTIwMjkuNCUyMDI5LjRINzI3YzE2LjIlMjAwJTIwMjkuNC0xMy4yJTIwMjkuNC0yOS40VjI5Ny4xYy0wLjEtMTYuMi0xMy4yLTI5LjQtMjkuNS0yOS40eiUyMG0tMzcwJTIwNzAuNWgxNDhjMTEuOSUyMDAlMjAyMS42JTIwOS42JTIwMjEuNiUyMDIxLjYlMjAwJTIwMTEuOS05LjYlMjAyMS42LTIxLjYlMjAyMS42aC0xNDhjLTExLjklMjAwLTIxLjYtOS42LTIxLjYtMjEuNiUyMDAtMTIlMjA5LjYtMjEuNiUyMDIxLjYtMjEuNnolMjBtLTIxLjYlMjAyMjQuNmMwLTExLjklMjA5LjYtMjEuNiUyMDIxLjYtMjEuNmgyNDUuN2MxMS45JTIwMCUyMDIxLjYlMjA5LjYlMjAyMS42JTIwMjEuNiUyMDAlMjAxMS45LTkuNyUyMDIxLjYtMjEuNiUyMDIxLjZIMzU2LjljLTEyLTAuMS0yMS42LTkuNy0yMS42LTIxLjZ6JTIwbTMzMS44JTIwMTIzSDUwNC44Yy0xMS45JTIwMC0yMS42LTkuNi0yMS42LTIxLjYlMjAwLTExLjklMjA5LjYtMjEuNiUyMDIxLjYtMjEuNmgxNjIuM2MxMS45JTIwMCUyMDIxLjYlMjA5LjYlMjAyMS42JTIwMjEuNiUyMDAlMjAxMi05LjYlMjAyMS42LTIxLjYlMjAyMS42eiUyMG0wLTIwMi45SDQyMS40Yy0xMS45JTIwMC0yMS42LTkuNi0yMS42LTIxLjZzOS42LTIxLjYlMjAyMS42LTIxLjZoMjQ1LjdjMTEuOSUyMDAlMjAyMS42JTIwOS42JTIwMjEuNiUyMDIxLjYlMjAwJTIwMTEuOS05LjYlMjAyMS42LTIxLjYlMjAyMS42eiUyMiUyMGZpbGwlM0QlMjIlMjNGNUNGNUQlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk01MTIlMjAwQzIyOS4yJTIwMCUyMDAlMjAyMjkuMiUyMDAlMjA1MTJzMjI5LjIlMjA1MTIlMjA1MTIlMjA1MTIlMjA1MTItMjI5LjIlMjA1MTItNTEyUzc5NC44JTIwMCUyMDUxMiUyMDB6JTIwbTI4Ny40JTIwNzI2LjljMCUyMDQwLTMyLjUlMjA3Mi41LTcyLjUlMjA3Mi41SDI5Ny4xYy00MCUyMDAtNzIuNS0zMi41LTcyLjUtNzIuNVYyOTcuMWMwLTQwJTIwMzIuNS03Mi41JTIwNzIuNS03Mi41SDcyN2M0MCUyMDAlMjA3Mi41JTIwMzIuNSUyMDcyLjUlMjA3Mi41djQyOS44eiUyMiUyMGZpbGwlM0QlMjIlMjNGNUNGNUQlMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBhYm91dDogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk04ODEuNiUyMDUxMi4xYzAlMjAyMDMuNy0xNjUuNyUyMDM2OS41LTM2OS41JTIwMzY5LjVTMTQyLjYlMjA3MTUuOCUyMDE0Mi42JTIwNTEyLjFzMTY1LjctMzY5LjUlMjAzNjkuNS0zNjkuNSUyMDM2OS41JTIwMTY1LjglMjAzNjkuNSUyMDM2OS41bTc3LjclMjAwYzAtMjQ2LjYtMjAwLjYtNDQ3LjItNDQ3LjItNDQ3LjJTNjQuOSUyMDI2NS41JTIwNjQuOSUyMDUxMi4xczIwMC42JTIwNDQ3LjIlMjA0NDcuMiUyMDQ0Ny4yJTIwNDQ3LjItMjAwLjYlMjA0NDcuMi00NDcuMk01ODIuNSUyMDMxOC4yYzktOSUyMDE0LjItMjEuNiUyMDE0LjItMzQuMyUyMDAtMTIuOC01LjItMjUuNC0xNC4yLTM0LjRzLTIxLjYtMTQuMi0zNC40LTE0LjJjLTEyLjclMjAwLTI1LjMlMjA1LjItMzQuMyUyMDE0LjItOS4xJTIwOS0xNC4zJTIwMjEuNi0xNC4zJTIwMzQuNCUyMDAlMjAxMi43JTIwNS4yJTIwMjUuMyUyMDE0LjMlMjAzNC4zJTIwOSUyMDklMjAyMS41JTIwMTQuMyUyMDM0LjMlMjAxNC4zczI1LjMtNS4zJTIwMzQuNC0xNC4zbS05Ni42JTIwNDY0LjNjLTcuNiUyMDAtMTUuMi0yLjYtMjEuMy03LjUtOS45LTcuOS0xNC41LTIwLjctMTIuMS0zMy4xbDQ3LjktMjQzLjEtMjYuNCUyMDE0LjhjLTE2LjQlMjA5LjItMzcuMSUyMDMuNC00Ni4zLTEzLTkuMi0xNi40LTMuNC0zNy4xJTIwMTIuOS00Ni4zbDkwLjctNTEuMWMxMS42LTYuNSUyMDI1LjktNS43JTIwMzYuNiUyMDIuMSUyMDEwLjglMjA3LjglMjAxNiUyMDIxLjElMjAxMy40JTIwMzQuMWwtNDkuNiUyMDI1MS45JTIwNDAuNy0xNy43YzE3LjItNy41JTIwMzcuMyUyMDAuNCUyMDQ0LjglMjAxNy42JTIwNy41JTIwMTcuMi0wLjQlMjAzNy4zLTE3LjYlMjA0NC44bC0xMDAuMiUyMDQzLjdjLTQuMyUyMDEuOS04LjklMjAyLjgtMTMuNSUyMDIuOCUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIHN1cHBvcnQ6IFxcXCJodHRwczovL2ljb25mb250LnR5cmFudGcuY29tL2FwaS9pbGx1c3RyYXRlLnN2Zz9zdmdfc3RyaW5nPSUzQ3N2ZyUyMGNsYXNzJTNEJTIyaWNvbiUyMiUyMHN0eWxlJTNEJTIyd2lkdGglM0ElMjAxZW0lM0JoZWlnaHQlM0ElMjAxZW0lM0J2ZXJ0aWNhbC1hbGlnbiUzQSUyMG1pZGRsZSUzQmZpbGwlM0ElMjBjdXJyZW50Q29sb3IlM0JvdmVyZmxvdyUzQSUyMGhpZGRlbiUzQiUyMiUyMHZpZXdCb3glM0QlMjIwJTIwMCUyMDEwMjQlMjAxMDI0JTIyJTIwdmVyc2lvbiUzRCUyMjEuMSUyMiUyMHhtbG5zJTNEJTIyaHR0cCUzQSUyRiUyRnd3dy53My5vcmclMkYyMDAwJTJGc3ZnJTIyJTNFJTNDcGF0aCUyMGQlM0QlMjJNNzIwLjElMjAzNDYuNW0tOTMlMjAwYTkzJTIwOTMlMjAwJTIwMSUyMDAlMjAxODYlMjAwJTIwOTMlMjA5MyUyMDAlMjAxJTIwMC0xODYlMjAwWiUyMiUyMGZpbGwlM0QlMjIlMjNGNzYyNjAlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk03MTkuOSUyMDM4Mi4zbS03LjIlMjAwYTcuMiUyMDcuMiUyMDAlMjAxJTIwMCUyMDE0LjQlMjAwJTIwNy4yJTIwNy4yJTIwMCUyMDElMjAwLTE0LjQlMjAwWiUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk03MTMuMSUyMDMwMy41aDE0bC0yLjclMjA2Mi44aC05LjIlMjIlMjBmaWxsJTNEJTIyJTIzRkZGRkZGJTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNNzE5LjklMjA2MzIuNW0tOTMlMjAwYTkzJTIwOTMlMjAwJTIwMSUyMDAlMjAxODYlMjAwJTIwOTMlMjA5MyUyMDAlMjAxJTIwMC0xODYlMjAwWiUyMiUyMGZpbGwlM0QlMjIlMjMxMEFFRkYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk03MTkuOSUyMDU5My45bS04LjMlMjAwYTguMyUyMDguMyUyMDAlMjAxJTIwMCUyMDE2LjYlMjAwJTIwOC4zJTIwOC4zJTIwMCUyMDElMjAwLTE2LjYlMjAwWiUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk03MTMuOSUyMDYxMS4zaDEybC0xLjElMjA2Ny4ySDcxNSUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlMjAlMkYlM0UlM0NwYXRoJTIwZCUzRCUyMk01MTEuMyUyMDUxMi4ybS00NDglMjAwYTQ0OCUyMDQ0OCUyMDAlMjAxJTIwMCUyMDg5NiUyMDAlMjA0NDglMjA0NDglMjAwJTIwMSUyMDAtODk2JTIwMFolMjIlMjBmaWxsJTNEJTIyJTIzMDlCQjA3JTIyJTIwJTJGJTNFJTNDcGF0aCUyMGQlM0QlMjJNMzEyLjIlMjA1MDMuOGwtMjYuNCUyMDMyLjglMjAxNTMuNyUyMDE2MC4zJTIwMzI0LjItMzE5LjctMjYtMjYuNC0yOTglMjAyNTF6JTIyJTIwZmlsbCUzRCUyMiUyM0ZGRkZGRiUyMiUyMCUyRiUzRSUzQyUyRnN2ZyUzRVxcXCIsXFxuICAgIGJ1ZzogXFxcImh0dHBzOi8vaWNvbmZvbnQudHlyYW50Zy5jb20vYXBpL2lsbHVzdHJhdGUuc3ZnP3N2Z19zdHJpbmc9JTNDc3ZnJTIwY2xhc3MlM0QlMjJpY29uJTIyJTIwc3R5bGUlM0QlMjJ3aWR0aCUzQSUyMDFlbSUzQmhlaWdodCUzQSUyMDFlbSUzQnZlcnRpY2FsLWFsaWduJTNBJTIwbWlkZGxlJTNCZmlsbCUzQSUyMGN1cnJlbnRDb2xvciUzQm92ZXJmbG93JTNBJTIwaGlkZGVuJTNCJTIyJTIwdmlld0JveCUzRCUyMjAlMjAwJTIwMTAyNCUyMDEwMjQlMjIlMjB2ZXJzaW9uJTNEJTIyMS4xJTIyJTIweG1sbnMlM0QlMjJodHRwJTNBJTJGJTJGd3d3LnczLm9yZyUyRjIwMDAlMkZzdmclMjIlM0UlM0NwYXRoJTIwZCUzRCUyMk01MTIlMjA1MTJtLTUxMiUyMDBhNTEyJTIwNTEyJTIwMCUyMDElMjAwJTIwMTAyNCUyMDAlMjA1MTIlMjA1MTIlMjAwJTIwMSUyMDAtMTAyNCUyMDBaJTIyJTIwZmlsbCUzRCUyMiUyM0ZGM0UzRSUyMiUyMCUyRiUzRSUzQ3BhdGglMjBkJTNEJTIyTTM1My4xNjYyMjIlMjAyNDAuMjA3NjQ0aDExOS44NzYyNjd2ODIuNzM5MkgzNTMuMTY2MjIydi04Mi43MzkyeiUyMG05NC43NTQxMzQlMjA1OS41Mjg1MzR2LTM2LjU5MDkzNGgtNjkuMzU4OTM0djM2LjU5MDkzNGg2OS4zNTg5MzR6JTIwbS0xMDMuMjE5MiUyMDQ0LjIzNjhoMTM3LjM1MjUzM3YyMy40ODM3MzNoLTU3LjM0NHYyOC4zOTg5MzNoNDguODc4OTMzdjIzLjIxMDY2N2gtNDguODc4OTMzdjMwLjMxMDRoNjMuODk3NnYyNC41NzZoLTE1NC4yODI2Njd2LTI0LjU3Nmg2NC4xNzA2Njd2LTMwLjMxMDRoLTQ3LjUxMzZ2LTIzLjIxMDY2N2g0Ny41MTM2di0yOC4zOTg5MzNoLTUzLjc5NDEzM3YtMjMuNDgzNzMzeiUyMG0tMTAyLjEyNjkzNC00MC4xNDA4aDM3LjY4MzJWMjcwLjc5MTExMWMtMTIuNzQzMTExJTIwMS42Mzg0LTIzLjQ4MzczMyUyMDIuOTEyNzExLTMyLjIyMTg2NiUyMDMuODIyOTMzTDI0Mi44NDcyODklMjAyNTAuMzExMTExYzMyLjk1MDA0NC0yLjczMDY2NyUyMDYzLjA3ODQtOC4yODMwMjIlMjA5MC4zODUwNjctMTYuNjU3MDY3bDkuMDExMiUyMDI0LjU3NmMtMTAuOTIyNjY3JTIwMy4wOTQ3NTYtMjMuMzAxNjg5JTIwNS45MTY0NDQtMzcuMTM3MDY3JTIwOC40NjUwNjd2MzcuMTM3MDY3aDMxLjQwMjY2N3YyNC44NDkwNjZoLTMxLjQwMjY2N3YxMS40Njg4YzEwLjM3NjUzMyUyMDkuODMwNCUyMDIyLjc1NTU1NiUyMDIyLjQ4MjQ4OSUyMDM3LjEzNzA2NyUyMDM3Ljk1NjI2N2wtMTQuNDcyNTM0JTIwMjEuODQ1MzMzYTgxNi4wMzY5NzglMjA4MTYuMDM2OTc4JTIwMCUyMDAlMjAwLTIyLjY2NDUzMy0zNS4yMjU2djExNy40MTg2NjdoLTI0Ljg0OTA2N3YtMTEzLjg2ODhhMjgxLjMwNDE3OCUyMDI4MS4zMDQxNzglMjAwJTIwMCUyMDEtMzMuMDQxMDY2JTIwNjMuMzUxNDY3bC0xMS40Njg4LTI4Ljk0NTA2N2EyMDIuMDY5MzMzJTIwMjAyLjA2OTMzMyUyMDAlMjAwJTIwMCUyMDQxLjUwNjEzMy03NC4wMDEwNjdIMjQyLjU3NDIyMnYtMjQuODQ5MDY2eiUyMG00MzEuMjYzMjg5LTc0LjI3NDEzNGM0LjE4NzAyMiUyMDguMzc0MDQ0JTIwNy41NTQ4NDQlMjAxNS43NDY4NDQlMjAxMC4xMDM0NjclMjAyMi4xMTg0aDk3LjIxMTczM3YyNC4wMjk4NjdoLTE5OS4zMzg2Njd2NjMuNjI0NTMzYy0xLjA5MjI2NyUyMDYwLjA3NDY2Ny0xMC43NDA2MjIlMjAxMDguMDQzMzc4LTI4Ljk0NTA2NiUyMDE0My45MDYxMzRsLTE5LjY2MDgtMTcuNDc2MjY3YzE0Ljc0NTYtMzAuNDAxNDIyJTIwMjIuMzkxNDY3LTcyLjU0NDcxMSUyMDIyLjkzNzYtMTI2LjQyOTg2N1YyNTEuNjc2NDQ0aDEwMS4zMDc3MzNhMTQ2LjYxNDA0NCUyMDE0Ni42MTQwNDQlMjAwJTIwMCUyMDAtOS44MzA0LTE3Ljc0OTMzM2wyNi4yMTQ0LTQuMzY5MDY3eiUyMG0tMjYuMjE0NCUyMDkzLjM4ODhhNTM5Ljk4OTMzMyUyMDUzOS45ODkzMzMlMjAwJTIwMCUyMDElMjAzNC45NTI1MzMlMjAxOS4zODc3MzQlMjAyNjcuNjA1MzMzJTIwMjY3LjYwNTMzMyUyMDAlMjAwJTIwMCUyMDM5LjU5NDY2Ny0yNy41Nzk3MzRoLTExNS43ODAyNjd2LTIyLjExODRoMTQ4LjI3NTJ2MTguNTY4NTM0YTI4OC4wMzk4MjIlMjAyODguMDM5ODIyJTIwMCUyMDAlMjAxLTUyLjk3NDkzMyUyMDQzLjY5MDY2Nmw5LjAxMTIlMjA2LjU1MzYtMy41NDk4NjclMjAzLjU0OTg2N2g2OS45MDUwNjd2MjAuMjA2OTMzYy0xMS40Njg4JTIwMjEuMjk5Mi0yMy45Mzg4NDQlMjAzOC45NTc1MTEtMzcuNDEwMTMzJTIwNTIuOTc0OTM0bC0xOS4zODc3MzQtMTUuNTY0OGExNjkuNzEwOTMzJTIwMTY5LjcxMDkzMyUyMDAlMjAwJTIwMCUyMDI4LjY3Mi0zMy44NjAyNjdoLTU0LjYxMzMzM3Y2Ny40NDc0NjdjMCUyMDE4LjM4NjQ4OS05LjAxMTIlMjAyNy41Nzk3MzMtMjcuMDMzNiUyMDI3LjU3OTczM2gtNDAuNjg2OTMzbC01LjQ2MTMzNC0yNC41NzZjMTUuMjkxNzMzJTIwMS4yNzQzMTElMjAyNy43NjE3NzglMjAxLjkxMTQ2NyUyMDM3LjQxMDEzNCUyMDEuOTExNDY3JTIwNi43MzU2NDQlMjAwJTIwMTAuMTAzNDY3LTMuNjQwODg5JTIwMTAuMTAzNDY2LTEwLjkyMjY2N3YtNjEuNDRoLTc4LjA5NzA2NlYzNjQuOTk5MTExaDg5LjU2NTg2NmE0NTIuMDM5MTExJTIwNDUyLjAzOTExMSUyMDAlMjAwJTIwMC00Ny43ODY2NjYtMjcuMDMzNmwxNS4yOTE3MzMtMTUuMDE4NjY3ek0yNjYuNjk1MTExJTIwNTc0Ljg5NjM1NmgyOC45NDUwNjd2NzguNjQzMmMxMS40Njg4LTE2LjU2NjA0NCUyMDI1Ljg1MDMxMS0yNC44NDkwNjclMjA0My4xNDQ1MzMtMjQuODQ5MDY3JTIwMjAuMjA2OTMzJTIwMCUyMDM2LjEzNTgyMiUyMDcuMzcyOCUyMDQ3Ljc4NjY2NyUyMDIyLjExODQlMjAxMC43NDA2MjIlMjAxMy44MzUzNzglMjAxNi4xMTA5MzMlMjAzMS4wMzg1NzglMjAxNi4xMTA5MzMlMjA1MS42MDk2JTIwMCUyMDIxLjY2MzI4OS01LjQ2MTMzMyUyMDM5LjMyMTYtMTYuMzg0JTIwNTIuOTc0OTMzLTEyLjAxNDkzMyUyMDE0Ljc0NTYtMjguMzA3OTExJTIwMjIuMTE4NC00OC44Nzg5MzMlMjAyMi4xMTg0LTE5LjExNDY2NyUyMDAtMzMuNjc4MjIyLTYuOTE3Njg5LTQzLjY5MDY2Ny0yMC43NTMwNjZWNzczLjY4ODg4OUgyNjYuNjk1MTExdi0xOTguNzkyNTMzeiUyMG02NS41MzYlMjA3Ny4yNzc4NjZjLTExLjEwNDcxMSUyMDAtMTkuODQyODQ0JTIwNC4yNzgwNDQtMjYuMjE0NCUyMDEyLjgzNDEzNC03LjQ2MzgyMiUyMDkuMTAyMjIyLTExLjE5NTczMyUyMDIxLjM5MDIyMi0xMS4xOTU3MzMlMjAzNi44NjR2Mi40NTc2YzAlMjAxNC4wMTc0MjIlMjAzLjAwMzczMyUyMDI1LjU3NzI0NCUyMDkuMDExMiUyMDM0LjY3OTQ2NiUyMDYuOTE3Njg5JTIwMTAuMDEyNDQ0JTIwMTYuNjU3MDY3JTIwMTUuMDE4NjY3JTIwMjkuMjE4MTMzJTIwMTUuMDE4NjY3JTIwMTQuMDE3NDIyJTIwMCUyMDI0LjQ4NDk3OC01LjA5NzI0NCUyMDMxLjQwMjY2Ny0xNS4yOTE3MzMlMjA1LjY0MzM3OC05LjEwMjIyMiUyMDguNDY1MDY3LTIxLjIwODE3OCUyMDguNDY1MDY2LTM2LjMxNzg2NyUyMDAtMTUuNjU1ODIyLTMuMDAzNzMzLTI3LjU3OTczMy05LjAxMTItMzUuNzcxNzMzLTYuNzM1NjQ0LTkuNjQ4MzU2LTE3LjI5NDIyMi0xNC40NzI1MzMtMzEuNjc1NzMzLTE0LjQ3MjUzNHolMjBtMTIwLjUxMzQyMi0xOS42NjA4aDI4Ljk0NTA2N3Y4Ni4wMTZjMCUyMDEyLjE5Njk3OCUyMDIuNTQ4NjIyJTIwMjAuOTM1MTExJTIwNy42NDU4NjclMjAyNi4yMTQ0JTIwNS4wOTcyNDQlMjA1LjY0MzM3OCUyMDEzLjE5ODIyMiUyMDguNDY1MDY3JTIwMjQuMzAyOTMzJTIwOC40NjUwNjclMjA3LjI4MTc3OCUyMDAlMjAxNC4yOTA0ODktMy4wOTQ3NTYlMjAyMS4wMjYxMzMtOS4yODQyNjclMjA2LjU1MzYtNi4zNzE1NTYlMjAxMS4xMDQ3MTEtMTQuNzQ1NiUyMDEzLjY1MzMzNC0yNS4xMjIxMzN2LTg2LjI4OTA2N2gyOC45NDUwNjZWNzczLjY4ODg4OWgtMjguOTQ1MDY2di0xOS4xMTQ2NjdjLTEyLjAxNDkzMyUyMDE1LjI5MTczMy0yNi44NTE1NTYlMjAyMi45Mzc2LTQ0LjUwOTg2NyUyMDIyLjkzNzYtMzQuMDQyMzExJTIwMC01MS4wNjM0NjctMTkuMDIzNjQ0LTUxLjA2MzQ2Ny01Ny4wNzA5MzN2LTg3LjkyNzQ2N3olMjBtMjM5LjAyNDM1Ni0zLjgyMjkzM2MxOC41Njg1MzMlMjAwJTIwMzIuOTUwMDQ0JTIwNy41NTQ4NDQlMjA0My4xNDQ1MzMlMjAyMi42NjQ1MzN2LTE4Ljg0MTZoMjguOTQ1MDY3djEzMS44OTEyYzAlMjA0NC43ODI5MzMtMjEuOTM2MzU2JTIwNjcuMTc0NC02NS44MDkwNjclMjA2Ny4xNzQ0LTE5LjQ3ODc1NiUyMDAtMzQuNDk3NDIyLTMuNzMxOTExLTQ1LjA1Ni0xMS4xOTU3MzMtMTAuMTk0NDg5LTcuNDYzODIyLTE2LjY1NzA2Ny0xOS4wMjM2NDQtMTkuMzg3NzMzLTM0LjY3OTQ2N2gyOC45NDUwNjdjMS42Mzg0JTIwOC4zNzQwNDQlMjA1LjA5NzI0NCUyMDE0LjI5MDQ4OSUyMDEwLjM3NjUzMyUyMDE3Ljc0OTMzNCUyMDUuNDYxMzMzJTIwMy40NTg4NDQlMjAxMy44MzUzNzglMjA1LjE4ODI2NyUyMDI1LjEyMjEzMyUyMDUuMTg4MjY2JTIwMjQuNTc2JTIwMCUyMDM2Ljg2NC0xMy4yODkyNDQlMjAzNi44NjQtMzkuODY3NzMzdi0yMS44NDUzMzNjLTEwLjM3NjUzMyUyMDE1LjY1NTgyMi0yNC43NTgwNDQlMjAyMy40ODM3MzMtNDMuMTQ0NTMzJTIwMjMuNDgzNzMzLTE5LjExNDY2NyUyMDAtMzQuNTg4NDQ0LTYuNDYyNTc4LTQ2LjQyMTMzMy0xOS4zODc3MzMtMTEuODMyODg5LTEyLjU2MTA2Ny0xNy43NDkzMzMtMjkuNTgyMjIyLTE3Ljc0OTMzNC01MS4wNjM0NjclMjAwLTIxLjI5OTIlMjA1LjkxNjQ0NC0zOC40MTEzNzglMjAxNy43NDkzMzQtNTEuMzM2NTMzJTIwMTEuNjUwODQ0LTEzLjI4OTI0NCUyMDI3LjEyNDYyMi0xOS45MzM4NjclMjA0Ni40MjEzMzMtMTkuOTMzODY3eiUyMG00LjM2OTA2NyUyMDIzLjQ4MzczM2MtMTIuNTYxMDY3JTIwMC0yMi4wMjczNzglMjA0LjI3ODA0NC0yOC4zOTg5MzQlMjAxMi44MzQxMzQtNi45MTc2ODklMjA4LjAwOTk1Ni0xMC4zNzY1MzMlMjAxOS42NjA4LTEwLjM3NjUzMyUyMDM0Ljk1MjUzMyUyMDAlMjAxMy42NTMzMzMlMjAyLjczMDY2NyUyMDI0LjQ4NDk3OCUyMDguMTkyJTIwMzIuNDk0OTMzJTIwNi4zNzE1NTYlMjA5LjQ2NjMxMSUyMDE2LjU2NjA0NCUyMDE0LjE5OTQ2NyUyMDMwLjU4MzQ2NyUyMDE0LjE5OTQ2NyUyMDEyLjE5Njk3OCUyMDAlMjAyMS44NDUzMzMtNC4wOTYlMjAyOC45NDUwNjYtMTIuMjg4JTIwNi43MzU2NDQtOC43MzgxMzMlMjAxMC4xMDM0NjctMjAuMjA2OTMzJTIwMTAuMTAzNDY3LTM0LjQwNjQlMjAwLTE0LjU2MzU1Ni0zLjM2NzgyMi0yNi4yMTQ0LTEwLjEwMzQ2Ny0zNC45NTI1MzMtNi45MTc2ODktOC41NTYwODktMTYuNTY2MDQ0LTEyLjgzNDEzMy0yOC45NDUwNjYtMTIuODM0MTM0eiUyMiUyMGZpbGwlM0QlMjIlMjNGRkZGRkYlMjIlMjAlMkYlM0UlM0MlMkZzdmclM0VcXFwiLFxcbiAgICBkb25hdGU6IFxcXCJodHRwczovL3MyLmxvbGkubmV0LzIwMjQvMDcvMjgvRndxUWlXdE5yMXVQSUdLLnBuZ1xcXCIsXFxuICAgIHRvcDogXFxcImh0dHBzOi8vaGlrZXJmYW5zLmNvbS9pbWcvdG9wLnBuZ1xcXCIsXFxuICAgIG9uOiBcXFwiaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS81NS5zdmdcXFwiLFxcbiAgICBvZmY6IFxcXCJodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LzYzLnN2Z1xcXCJcXG59O1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6L2u5pKt6aG16Z2iXCIsXCJwYXRoXCI6XCJDYXJvdXNlbC52aWV3XCIsXCJydWxlXCI6XCJqczpcXG4oZnVuY3Rpb24oKSB7XFxuICAgIGNvbnN0IGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcIkNvbmZpZy52aWV3XFxcIik7XFxuICAgIGxldCBhcnJheSA9IGRlY29kZVVSSUNvbXBvbmVudChnZXRQYXJhbShcXFwiYXJyYXlcXFwiKSk7XFxuICAgIGV2YWwoXFxcImFycmF5ID1cXFwiICsgYXJyYXkpO1xcbiAgICBhcGl2aWV3Ll9sYXlvdXRMaW5rUnVsZVBhcnNlKGFycmF5KTtcXG4gICAgc2V0UmVzdWx0KGFwaXZpZXcubGF5b3V0KTtcXG59KSgpO1wifV0iLCJpY29uIjoiaHR0cHM6Ly9zdGF0aWMuY29vbGFway5jb20vc3RhdGljL3dlYi92OC9pbWFnZXMvaGVhZGVyLWxvZ28ucG5nIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment