Advertisement
xiaomianao666

邀您一起看:当前未设置账号,点我设置

Feb 28th, 2024
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥当前未设置账号,点我设置@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi6K6+572uXCIsXCJwYXRoXCI6XCJzZXR0aW5nc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICBkZXNjOiBcXFwid2ViZGF25Zyw5Z2AXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldEl0ZW0oXFxcImRhdlxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGlucHV0W2lucHV0Lmxlbmd0aCAtIDFdID09IFxcXCIvXFxcIikge1xcbiAgICAgICAgICAgICAgICB1cmwgPSBpbnB1dC5zdWJzdHJpbmcoMCwgaW5wdXQubGVuZ3RoIC0gMSlcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiZGF2XFxcIiwgdXJsKVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImRhdlxcXCIsIGlucHV0KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIGRlc2M6IFxcXCLotKbmiLdcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0SXRlbShcXFwidXNlclxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgc2V0SXRlbShcXFwidXNlclxcXCIsIGlucHV0KVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogXFxcIuWvhueggVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRJdGVtKFxcXCJwYXNzd2RcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgdHlwZTogXFxcInBhc3N3b3JkXFxcIixcXG4gICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJwYXNzd2RcXFwiLCBpbnB1dClcXG4gICAgICAgIH0pXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5rWL6K+V6L+e5o6lXFxcIixcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgIGdldEZpbGVzXFxuICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY29kZVxcXCIpXFxuICAgICAgICBpZiAoZ2V0RmlsZXMoZ2V0SXRlbShcXFwiZGF2XFxcIikgKyBcXFwiL1xcXCIpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i/nuaOpeaIkOWKn1xcXCJcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i/nuaOpeWksei0pe+8jOivt+ajgOafpei0puaIt+WvhueggVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG59KVxcbmxldCBpY29uID0gZ2V0SXRlbShcXFwiaWNvblN0eWxlXFxcIiwgXFxcIum7mOiupFxcXCIpXFxubGV0IGRldGFpbCA9IGdldEl0ZW0oXFxcImRldGFpbFxcXCIsIFxcXCLlvIBcXFwiKVxcbmxldCBzdWJ0aXRsZSA9IGdldEl0ZW0oXFxcInN1YnRpdGxlXFxcIiwgXFxcIuW8gFxcXCIpXFxubGV0IHRpbWVzdGFtcCA9IGdldEl0ZW0oXFxcInRpbWVcXFwiLCBcXFwiMFxcXCIpXFxubGV0IG5ld1ZlcnNpb247XFxubGV0IG15VmVyc2lvbiA9IE1ZX1BBUkFNUy52ZXJzaW9uIHx8IDk5OTtcXG50cnkge1xcbiAgICByZXMgPSBKU09OLnBhcnNlKGZldGNoKFxcXCJodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvZGV2L2dldGJ5aWQ/aWQ9NTIxMFxcXCIpKVxcbiAgICBuZXdWZXJzaW9uID0gcmVzLnJlc3VsdC52ZXJcXG59IGNhdGNoIChlKSB7XFxuICAgIHRvYXN0KFxcXCLpgZPplb/ku5PlupPmir3po47kuobvvIzmnKzmrKHmnKrmo4DmtYvliLDmlrDniYjkv6Hmga9cXFwiKTtcXG4gICAgbmV3VmVyc2lvbiA9IG15VmVyc2lvbjtcXG59XFxubGV0IGlzVXBkYXRlID0gTnVtYmVyKG5ld1ZlcnNpb24pIDw9IE51bWJlcihteVZlcnNpb24pO1xcbmxldCBpc1ZlciA9IE51bWJlcihuZXdWZXJzaW9uKSA9PT0gTnVtYmVyKG15VmVyc2lvbik7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJsaW5lX2JsYW5rXFxcIlxcbn0sIHtcXG4gICAgdGl0bGU6IGlzVXBkYXRlID8gXFxcIuW3suaYr+acgOaWsOeJiFxcXCIgOiBcXFwi8J+GmeaWsOeJiOacrFxcXCIsXFxuICAgIHVybDogXFxcInJ1bGU6Ly81clczNlppVTZLZUc1NVdNNmFhVzZhRzE2YUtSNllHVDZLZUU1WWlaNDRDUVYyVmlaR0YyNDRDUjc3K2xhRzl0WlY5eWRXeGxYM1Z5Yk8rL3BXaDBkSEE2THk5b2FXdGxjaTV1YjJ0cFlTNXdjbVZ6Y3k5b2FXdGxjblZzWlM5eWRXeGxiR2x6ZEM1cWMyOXVQMmxrUFRVeU1UQW1ZWFYwYUQxaFlqSXpNRFV5WWkxak1HUTJMVFU0Wm1NdE9UVTFOUzFoTWpVd01tRXdNR0V6T0RjPVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIlxcbn0sIHtcXG4gICAgdGl0bGU6IFxcXCLmmL7npLror6bnu4bvvJpcXFwiICsgZGV0YWlsLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoZGV0YWlsKSA9PiB7XFxuICAgICAgICBzZXRJdGVtKFxcXCJkZXRhaWxcXFwiLCBkZXRhaWwgPT0gXFxcIuW8gFxcXCIgPyBcXFwi5YWzXFxcIiA6IFxcXCLlvIBcXFwiKVxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9LCBkZXRhaWwpLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJcXG59LCB7XFxuICAgIHRpdGxlOiBcXFwi5a2X5bmV5Yqf6IO977yaXFxcIiArIHN1YnRpdGxlLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoc3VidGl0bGUpID0+IHtcXG4gICAgICAgIHNldEl0ZW0oXFxcInN1YnRpdGxlXFxcIiwgc3VidGl0bGUgPT0gXFxcIuW8gFxcXCIgPyBcXFwi5YWzXFxcIiA6IFxcXCLlvIBcXFwiKVxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9LCBzdWJ0aXRsZSksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIlxcbn0sIHtcXG4gICAgdGl0bGU6IFxcXCLml7bpl7TmoLzlvI/vvJpcXFwiICsgKHRpbWVzdGFtcCA9PSBcXFwiMFxcXCIgPyBcXFwiMjAyMi8wOC8yMCAxNzoxNDozMVxcXCIgOiBcXFwiU2F0LCAyMCBBdWcgMjAyMiAwOToxNDozMSBHTVRcXFwiKSxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKHRpbWVzdGFtcCkgPT4ge1xcbiAgICAgICAgc2V0SXRlbShcXFwidGltZVxcXCIsIHRpbWVzdGFtcCA9PSBcXFwiMFxcXCIgPyBcXFwiMVxcXCIgOiBcXFwiMFxcXCIpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIHRpbWVzdGFtcCksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIlxcbn0sIHtcXG4gICAgdXJsOiAkKCkucnVsZSgoKSA9PiB7XFxuICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICB0aXRsZTogYFxcbiAgICAgICAgICAgIDxwPuacrOevh+aWh+eroOWPqumSiOWvueiuvue9ru+8jOWFtuS7lueahOS9v+eUqOaWueazleW3sue7j+WcqOinhOWImeS4reivtOaYjua4hemZpOS6hjwvcD4gPHA+PGlucz48aW5zPuWJjeaPkOadoeS7tu+8muW3sue7j+abtOaWsDcuOeeJiOacrDwvaW5zPjwvaW5zPjwvcD4gPHA+5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQV2ViZGF244CR77+laG9tZV9ydWxlX3VybO+/pWh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTUyMTAmYW1wO2F1dGg9YWIyMzA1MmItYzBkNi01OGZjLTk1NTUtYTI1MDJhMDBhMzg3PC9wPiA8aDEgaWQ9XFxcIndlYmRhdiVFNiU5OCVBRiVFNCVCQiU4MCVFNCVCOSU4OFxcXCIgdGFiaW5kZXg9XFxcIi0xXFxcIj5XZWJkYXbmmK/ku4DkuYg8L2gxPiA8cD53ZWJkYXblsLHmmK/kuIDnp43nvZHnm5jmlofku7bkvKDovpPljY/orq7vvIzluLjnlKjkuo7lsI/kvJfova/ku7bnmoTmlbDmja7lpIfku73jgILmnKzop4TliJnlj6/ku6XnrqHnkIZ3ZWJkYXbnmoTmlofku7bvvIzmlK/mjIHmtY/op4jjgIHmkq3mlL7jgIHkuIvovb3jgIHkuIrkvKDjgIHliKDpmaTnrYnmk43kvZw8L3A+IDxoMSBpZD1cXFwiJUU2JTg5JTkzJUU1JUJDJTgwJUU4JUFFJUJFJUU3JUJEJUFFXFxcIiB0YWJpbmRleD1cXFwiLTFcXFwiPuaJk+W8gOiuvue9rjwvaDE+IDxwPjxpbWcgc3JjPVxcXCJodHRwOi8vYWxpc3Quam9lZ3UudGsvZC9oaWtlci9TY3JlZW5zaG90XzIwMjIwODIxXzA4MjU1MF9jb20uZXhhbXBsZS5oaWtlcnZpZXcuanBnXFxcIiBhbHQ9XFxcIlNjcmVlbnNob3RfMjAyMjA4MjFfMDgyNTUwX2NvbS5leGFtcGxlLmhpa2Vydmlld1xcXCIgLz48L3A+IDxwPuWwhuS9oOeahHdlYmRhdumTvuaOpeWSjOi0puaIt+WvhueggeWhq+i/m+WOu++8iOi/memHjOaOqOiNkOS9v+eUqOWdmuaenOS6ke+8jOS8mOeCuTrnqLPlrpo757y654K5OuWuuemHj+Wwke+8jOS7t+agvOi0teOAguS5n+WPr+S7peiHquW3seaQreW7undlYmRhduezu+e7n++8jOS+i+WmgmFsaXN05ZKMY2xvdWRyZXZl77yM6ZyA6KaB5LiA5a6a55qE5Yqo5omL6IO95Yqb77yJPC9wPiA8aDIgaWQ9XFxcIiVFOCVBRSVCRSVFNyVCRCVBRSVFNSU5QiVCRSVFNiVBMCU4N1xcXCIgdGFiaW5kZXg9XFxcIi0xXFxcIj7orr7nva7lm77moIc8L2gyPiA8cD7mnKzop4TliJnlhoXnva7kuKTnp43po47moLznmoTlm77moIfvvIzliIbliKvkuLrpgZPplb/nmoTlkozok53ojpPnmoTvvIzoh6rlt7HpgInmi6k8L3A+IDxoMiBpZD1cXFwiJUU2JTk4JUJFJUU3JUE0JUJBJUU4JUFGJUE2JUU3JUJCJTg2XFxcIiB0YWJpbmRleD1cXFwiLTFcXFwiPuaYvuekuuivpue7hjwvaDI+IDxwPuWPr+S7peWIl+WHuuW9k+WJjeaWh+S7tuWkueaIluaWh+S7tueahOWIm+W7uuaXtumXtOOAgjxiciAvPiA8c3Ryb25nPjxzdHJvbmc+6Zeu6aKY77yaPC9zdHJvbmc+PC9zdHJvbmc+PGJyIC8+IOS4jeiDveiHquWKqOaSreaUvuS4i+S4gOmbhjwvcD4gPGgyIGlkPVxcXCIlRTUlQUQlOTclRTUlQjklOTVcXFwiIHRhYmluZGV4PVxcXCItMVxcXCI+5a2X5bmVPC9oMj4gPHA+5a2X5bmV5Yqf6IO95aaC5p6c5omT5byA77yM6YKj5LmI5aaC5p6c6KeG6aKR5LiO5a2X5bmV55qE5paH5Lu25ZCN55u45ZCM77yM6YKj5LmI5bCx5Lya6Ieq5Yqo5oyC6L295LiK44CC5aaC5p6c5b2T5YmN5paH5Lu25aS55pyJ6L+Z5Liq5a2X5bmV5paH5Lu277yM5L2G5piv5ZCN5a2X5LiN5ZCM77yM5bCx5Lya6Lez5Ye66YCJ5oup5qGG6YCJ5oupPC9wPiA8aDEgaWQ9XFxcIiVFOCVCRiU5NCVFNSU5QiU5RSVFNCVCOCVCQiVFNyU5NSU4QyVFOSU5RCVBMlxcXCIgdGFiaW5kZXg9XFxcIi0xXFxcIj7ov5Tlm57kuLvnlYzpnaI8L2gxPiA8cD48aW1nIHNyYz1cXFwiaHR0cDovL2FsaXN0LmpvZWd1LnRrL2QvaGlrZXIvU2NyZWVuc2hvdF8yMDIyMDgyMV8xNDA3MDVfY29tLmV4YW1wbGUuaGlrZXJ2aWV3LmpwZ1xcXCIgYWx0PVxcXCJTY3JlZW5zaG90XzIwMjIwODIxXzE0MDcwNV9jb20uZXhhbXBsZS5oaWtlcnZpZXdcXFwiIC8+PGJyIC8+IOWPr+S7peeci+ingeacieaTjeS9nOagj++8jOWPr+S7peS4iuS8oOaWh+S7tu+8jOaWsOW7uuaWh+S7tuWkueWSjOWIoOmZpOaWh+S7tuS4ieS4quaTjeS9nDwvcD4gPHA+5LiL6Z2i5piv5L2g55qE5paH5Lu277yM5L2g5Y+v5Lul5YOP5rWP6KeI5paH5Lu2566h55CG5Zmo5LiA5qC35L2/55So5LuWPC9wPiA8aDEgaWQ9XFxcIiVFOSVBQiU5OCVFNyVCQSVBNyVFOCVBRSVCRSVFNyVCRCVBRVxcXCIgdGFiaW5kZXg9XFxcIi0xXFxcIj7pq5jnuqforr7nva48L2gxPiA8cD7ngrnlh7vnvJbovpHop4TliJnvvIzliJLliLDlupXpg6jnmoTpooTlpITnkIY8YnIgLz4gPGltZyBzcmM9XFxcImh0dHA6Ly9hbGlzdC5qb2VndS50ay9kL2hpa2VyL1NjcmVlbnNob3RfMjAyMjA4MjFfMTQxMTM1X2NvbS5leGFtcGxlLmhpa2Vydmlldy5qcGdcXFwiIGFsdD1cXFwiU2NyZWVuc2hvdF8yMDIyMDgyMV8xNDExMzVfY29tLmV4YW1wbGUuaGlrZXJ2aWV3XFxcIiAvPjxiciAvPiDmoLnmja7ms6jph4rkv67mlLnvvIzmiJHlhpnnmoTlh6DkuKrmlofku7bmoLzlvI/lt7Lnu4/lvojlrozmlbTkuobvvIzlpoLmnpzmnInmnIvlj4vorqTkuLrkuI3lpb3vvIzlj6/ku6Xoh6rooYzkv67mlLk8YnIgLz4g5qC85byP77yaW+KAnOexu+WeizHigJ0s4oCc57G75Z6LMuKAnV08L3A+IDxwPumDveWujOaIkOS6hu+8jGVuam958J+SnjwvcD5cXG4gICAgICAgICAgICBgLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwicmljaF90ZXh0XFxcIlxcbiAgICAgICAgfV0pXFxuICAgIH0pLFxcbiAgICB0aXRsZTogXFxcIuafpeeci+S9v+eUqOivtOaYjlxcXCIsXFxuICAgIGRlc2M6IFxcXCJQb3dlcmVkIGJ5IEpvZSblsI/mo4noooRcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgIH1cXG59KVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggVwiLFwicGF0aFwiOlwiY29kZVwiLFwicnVsZVwiOlwiJC5leHBvcnRzLmdldEZpbGVzID0gZnVuY3Rpb24ocGF0aCkge1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKCFwYXRoIHx8IHBhdGggPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCB3ZWJkYXYgPSBidWlsZFdlYkRhdihwYXRoLCBnZXRJdGVtKFxcXCJ1c2VyXFxcIiwgXFxcIlxcXCIpLCBnZXRJdGVtKFxcXCJwYXNzd2RcXFwiLCBcXFwiXFxcIikpXFxuICAgICAgICBsZXQgcmVzID0gd2ViZGF2Lmxpc3QoKVxcbiAgICAgICAgcmVzID0gSlNPTi5wYXJzZShyZXMpXFxuICAgICAgICByZXR1cm4gcmVzXFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgICAgICByZXR1cm4gZmFsc2VcXG4gICAgfVxcbn1cXG4kLmV4cG9ydHMuZmV0Y2hGaWxlID0gZnVuY3Rpb24ocGF0aCkge1xcbiAgICBsZXQgcmVzID0gcmVxdWVzdChwYXRoLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcImF1dGhvcml6YXRpb25cXFwiOiBcXFwiQmFzaWMgXFxcIiArIGJhc2U2NEVuY29kZShnZXRJdGVtKFxcXCJ1c2VyXFxcIikgKyBcXFwiOlxcXCIgKyBnZXRJdGVtKFxcXCJwYXNzd2RcXFwiKSlcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgcmV0dXJuIHJlc1xcbn1cXG4kLmV4cG9ydHMuZ2V0SWNvbiA9IGZ1bmN0aW9uKGNvbnRlbnQpIHtcXG4gICAgaWYgKGNvbnRlbnQuZGlyKSB7XFxuICAgICAgICBpbWcgPSBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vcmUvMjc0LnBuZ1xcXCJcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGxldCBmaWxlTmFtZSA9IGNvbnRlbnQubmFtZS50b0xvd2VyQ2FzZSgpXFxuICAgICAgICBsZXQgaHptID0gJC5yZXF1aXJlKFxcXCJjb2RlXFxcIikuZ2V0SHptKGZpbGVOYW1lKVxcbiAgICAgICAgaWYgKGNvbnRlbnQudGh1bWIgJiYgY29udGVudC50eXBlICE9IDApIHtcXG4gICAgICAgICAgICBpbWcgPSBjb250ZW50LnRodW1iXFxuICAgICAgICB9IGVsc2UgaWYgKCQubW92aWUuaW5jbHVkZXMoaHptKSkge1xcbiAgICAgICAgICAgIGltZyA9IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8zMC5wbmdcXFwiXFxuICAgICAgICB9IGVsc2UgaWYgKCQuYXVkaW8uaW5jbHVkZXMoaHptKSkge1xcbiAgICAgICAgICAgIGltZyA9IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS80MC5wbmdcXFwiXFxuICAgICAgICB9IGVsc2UgaWYgKCQudGV4dC5pbmNsdWRlcyhoem0pKSB7XFxuICAgICAgICAgICAgaW1nID0gXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3JlLzc4LnBuZ1xcXCJcXG4gICAgICAgIH0gZWxzZSBpZiAoJC5pbWcuaW5jbHVkZXMoaHptKSkge1xcbiAgICAgICAgICAgIGltZyA9IGNvbnRlbnQudXJsICsgXFxcIkBoZWFkZXJzPVxcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJhdXRob3JpemF0aW9uXFxcIjogXFxcIkJhc2ljIFxcXCIgKyBiYXNlNjRFbmNvZGUoZ2V0SXRlbShcXFwidXNlclxcXCIpICsgXFxcIjpcXFwiICsgZ2V0SXRlbShcXFwicGFzc3dkXFxcIikpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0gZWxzZSBpZiAoJC55YXN1by5pbmNsdWRlcyhoem0pKSB7XFxuICAgICAgICAgICAgaW1nID0gXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3JlLzIwMS5wbmdcXFwiXFxuICAgICAgICB9IGVsc2UgaWYgKCQub2ZmaWNlLmluY2x1ZGVzKGh6bSkpIHtcXG4gICAgICAgICAgICBpbWcgPSBcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vcmUvMTg1LnBuZ1xcXCJcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaW1nID0gXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3JlLzIzOS5wbmdcXFwiXFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIGltZ1xcbn1cXG4kLmV4cG9ydHMuZ2V0SHptID0gZnVuY3Rpb24oZmlsZU5hbWUpIHtcXG4gICAgcmV0dXJuIGZpbGVOYW1lLnN1YnN0cihmaWxlTmFtZS5sYXN0SW5kZXhPZihcXFwiLlxcXCIpICsgMSlcXG59XFxuJC5leHBvcnRzLnJlbW92ZUV4dCA9IGZ1bmN0aW9uKGZpbGUpIHtcXG4gICAgcmV0dXJuIGZpbGUuc3BsaXQoJy4nKS5zbGljZSgwLCAtMSkuam9pbignLicpXFxufTtcXG4kLmV4cG9ydHMuZ2V0U3ViID0gZnVuY3Rpb24obGlzdCkge1xcbiAgICBjb25zdCB7XFxuICAgICAgICBnZXRIem1cXG4gICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvZGVcXFwiKVxcbiAgICBsZXQgcyA9IFtdXFxuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGlmICgkLnN1YnRpdGxlLmluY2x1ZGVzKGdldEh6bShpdGVtLm5hbWUpKSkge1xcbiAgICAgICAgICAgIHMucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgICAgIHVybDogaXRlbS51cmxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9KVxcbiAgICByZXR1cm4gc1xcbn1cXG4kLmV4cG9ydHMuZG93bmxvYWQgPSBmdW5jdGlvbihwYXRoLCBuYW1lKSB7XFxuICAgIGxldCB3ZWJkYXYgPSBidWlsZFdlYkRhdihwYXRoLCBnZXRJdGVtKFxcXCJ1c2VyXFxcIiwgXFxcIlxcXCIpLCBnZXRJdGVtKFxcXCJwYXNzd2RcXFwiLCBcXFwiXFxcIikpXFxuICAgIGxldCBwID0gXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvX2ZpbGVTZWxlY3RfXFxcIiArIG5hbWU7XFxuICAgIHdlYmRhdi5kb3dubG9hZChuYW1lLCBwKTtcXG4gICAgcmV0dXJuIGdldFBhdGgocCk7XFxufVxcbiQuZXhwb3J0cy5kZWxldGVGaWxlID0gZnVuY3Rpb24ocGF0aCwgbmFtZSkge1xcbiAgICBsZXQgd2ViZGF2ID0gYnVpbGRXZWJEYXYocGF0aCwgZ2V0SXRlbShcXFwidXNlclxcXCIsIFxcXCJcXFwiKSwgZ2V0SXRlbShcXFwicGFzc3dkXFxcIiwgXFxcIlxcXCIpKVxcbiAgICB3ZWJkYXYuZGVsZXRlKG5hbWUpXFxufVxcbiQuZXhwb3J0cy5yZW5hbWUgPSBmdW5jdGlvbihwYXRoLCBvbGRuYW1lLCBuZXduYW1lKSB7XFxuICAgIHRvYXN0KFxcXCLmmoLmnKrmlK/mjIFcXFwiKVxcbn1cXG4kLmV4cG9ydHMuc29ydHMgPSBmdW5jdGlvbihsaXN0LCBtZXRob2QpIHtcXG4gICAgaWYgKG1ldGhvZC5pbmNsdWRlcyhcXFwi5ZCN56ewXFxcIikpIHtcXG4gICAgICAgIGxpc3Quc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSlcXG4gICAgICAgIH0pXFxuICAgIH0gZWxzZSBpZiAobWV0aG9kLmluY2x1ZGVzKFxcXCLml7bpl7RcXFwiKSkge1xcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXG4gICAgICAgICAgICByZXR1cm4gYS5tb2RpZnlUaW1lc3RhbXAgLSBiLm1vZGlmeVRpbWVzdGFtcFxcbiAgICAgICAgfSlcXG4gICAgfVxcbiAgICBpZiAobWV0aG9kLmluY2x1ZGVzKFxcXCLlj41cXFwiKSkge1xcbiAgICAgICAgbGlzdC5yZXZlcnNlKCk7XFxuICAgIH1cXG4gICAgcmV0dXJuIGxpc3RcXG59XFxuJC5leHBvcnRzLmdldEluZm8gPSBmdW5jdGlvbigpIHtcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVhZEZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvd2ViZGF2L2luZm8uanNvblxcXCIpKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4u+mhtVwiLFwicGF0aFwiOlwibWFpblwiLFwicnVsZVwiOlwianM6XFxudHJ5IHtcXG4gICAgdmFyIGQgPSBbXTtcXG4gICAgY29uc3Qge1xcbiAgICAgICAgZ2V0RmlsZXMsXFxuICAgICAgICBkb3dubG9hZCxcXG4gICAgICAgIGdldEljb24sXFxuICAgICAgICBzb3J0c1xcbiAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY29kZVxcXCIpXFxuICAgIHZhciByb290ID0gZ2V0SXRlbShcXFwiZGF2XFxcIikgKyBcXFwiL1xcXCJcXG4gICAgdmFyIHBhdGhzID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcInBhdGhcXFwiLCBbXSlcXG4gICAgdmFyIHNyb290ID0gcGF0aHMuam9pbihcXFwiL1xcXCIpXFxuICAgIHZhciBwYXRoID0gcm9vdCArIHNyb290XFxuICAgIHZhciBmaWxlcyA9IGdldEZpbGVzKHBhdGgpXFxuICAgIGlmIChmaWxlcykge1xcbiAgICAgICAgbGV0IHRlbXAgPSBcXFwiXFxcIlxcbiAgICAgICAgc29ydHMoZmlsZXMsIGdldE15VmFyKFxcXCJzb3J0XFxcIiwgXFxcIum7mOiupFxcXCIpKVxcbiAgICAgICAgbGV0IHNvcnIgPSBbXFxcIum7mOiupFxcXCIsIFxcXCLlkI3np7BcXFwiLCBcXFwi5pe26Ze0XFxcIl1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLorr7nva5cXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9zZXR0aW5nc1xcXCIsXFxuICAgICAgICAgICAgaW1nOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaG9tZV9pY29uX2l0ZW1cXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl81XFxcIixcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiBNWV9SVUxFLnZlcnNpb25cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLliIfmjaLmoLflvI9cXFwiLFxcbiAgICAgICAgICAgIHVybDogJChbXFxcIm1vdmllXzFfbGVmdF9waWNcXFwiLCBcXFwiY2FyZF9waWNfM1xcXCIsIFxcXCJhdmF0YXJcXFwiLCBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwiLCBcXFwidGV4dF8xXFxcIl0pLnNlbGVjdCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcImNvbF90eXBlXFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWIh+aNolxcXCJcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBpbWc6IFxcXCJoaWtlcjovL2ltYWdlcy9ob21lX2ljb25fY29kZVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uXzVcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLkuIrkvKDmlofku7ZcXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcImZpbGVTZWxlY3Q6Ly9cXFwiICsgJC50b1N0cmluZygocGF0aCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgd2ViZGF2ID0gYnVpbGRXZWJEYXYocGF0aCwgZ2V0SXRlbShcXFwidXNlclxcXCIpLCBnZXRJdGVtKFxcXCJwYXNzd2RcXFwiKSlcXG4gICAgICAgICAgICAgICAgbGV0IHMgPSBpbnB1dC5zcGxpdChcXFwiL1xcXCIpXFxuICAgICAgICAgICAgICAgIHdlYmRhdi51cGxvYWQoc1tzLmxlbmd0aCAtIDFdLnJlcGxhY2UoXFxcIl9maWxlU2VsZWN0X1xcXCIsIFxcXCJcXFwiKSwgaW5wdXQpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgfSwgcGF0aCksXFxuICAgICAgICAgICAgaW1nOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaG9tZV9pY29uX2Jvb2ttYXJrXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImljb25fNVxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuaWsOW7uuaWh+S7tlxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCJcXFwiKS5pbnB1dCgocGF0aCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgd2ViZGF2ID0gYnVpbGRXZWJEYXYocGF0aCwgZ2V0SXRlbShcXFwidXNlclxcXCIpLCBnZXRJdGVtKFxcXCJwYXNzd2RcXFwiKSlcXG4gICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL3dhLnR4dFxcXCIsIFxcXCJcXFwiKVxcbiAgICAgICAgICAgICAgICB3ZWJkYXYudXBsb2FkKGlucHV0LCBcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS93YS50eHRcXFwiKVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIH0sIHBhdGgpLFxcbiAgICAgICAgICAgIGltZzogXFxcImhpa2VyOi8vaW1hZ2VzL2hvbWVfaWNvbl9ib29rbWFya1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uXzVcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmlrDmlofku7blpLlcXFwiLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiXFxcIiwgXFxcIui+k+WFpeaWh+S7tuWkueWQjeensFxcXCIpLmlucHV0KChwYXRoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCB3ZWJkYXYgPSBidWlsZFdlYkRhdihwYXRoLCBnZXRJdGVtKFxcXCJ1c2VyXFxcIiksIGdldEl0ZW0oXFxcInBhc3N3ZFxcXCIpKVxcbiAgICAgICAgICAgICAgICB3ZWJkYXYubWFrZURpcihpbnB1dClcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgcGF0aCksXFxuICAgICAgICAgICAgaW1nOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaG9tZV9pY29uX2ZvbGRcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl81XFxcIlxcbiAgICAgICAgfSlcXG4gICAgICAgIHNvcnIuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICB2YXIgbiA9IGdldE15VmFyKFxcXCJzb3J0XFxcIiwgXFxcIum7mOiupFxcXCIpXFxuICAgICAgICAgICAgaWYgKG4gPT0gaXRlbSkge1xcbiAgICAgICAgICAgICAgICB2YXIgdGl0bGUgPSBpdGVtICsgXFxcIuKGk1xcXCJcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG4uaW5jbHVkZXMoXFxcIuWPjVxcXCIpICYmIG4uaW5jbHVkZXMoaXRlbSkpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gaXRlbSArIFxcXCLihpFcXFwiXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gaXRlbSArIFxcXCLihpVcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcihcXFwic29ydFxcXCIsIFxcXCLpu5jorqRcXFwiKSA9PSBpdGVtKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInNvcnRcXFwiLCBpdGVtICsgXFxcIuWPjVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJzb3J0XFxcIiwgaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgfSwgaXRlbSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBgPGAsXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKHBhdGhzKSA9PiB7XFxuICAgICAgICAgICAgICAgIHBhdGhzLnBvcCgpXFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKFxcXCJwYXRoXFxcIiwgcGF0aHMpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIHBhdGhzKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLwn4+gXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoXFxcInBhdGhcXFwiKVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgICAgICB9KVxcbiAgICAgICAgcGF0aHMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICBpZiAoaXRlbSAhPSBcXFwiXFxcIikge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRlY29kZVVSSUNvbXBvbmVudChpdGVtKSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpLCBwYXRocykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhzLnNwbGljZShpICsgMSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwicGF0aFxcXCIsIHBhdGhzKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCBpbmRleCwgcGF0aHMpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgZmlsZXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICBsZXQgZmlsZU5hbWUgPSBkZWNvZGVVUklDb21wb25lbnQoaXRlbS5uYW1lKVxcbiAgICAgICAgICAgIGxldCBpY29uID0gZ2V0SWNvbihpdGVtKVxcblxcbiAgICAgICAgICAgIHZhciB1cmwgPSAkKCkubGF6eVJ1bGUoKGl0ZW0sIGZpbGVzLCBwYXRoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHZhciBwYXRocyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJwYXRoXFxcIiwgW10pXFxuICAgICAgICAgICAgICAgIGNvbnN0IHtcXG4gICAgICAgICAgICAgICAgICAgIGZldGNoRmlsZSxcXG4gICAgICAgICAgICAgICAgICAgIGdldEh6bSxcXG4gICAgICAgICAgICAgICAgICAgIGdldFN1YixcXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUV4dCxcXG4gICAgICAgICAgICAgICAgICAgIGRvd25sb2FkXFxuICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jb2RlXFxcIilcXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uZGlyKSB7XFxuICAgICAgICAgICAgICAgICAgICBwYXRocy5wdXNoKGl0ZW0uZmlsZU5hbWUpXFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwicGF0aFxcXCIsIHBhdGhzKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQubW92aWUuaW5jbHVkZXMoZ2V0SHptKGl0ZW0ubmFtZSkpKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0SXRlbShcXFwic3VidGl0bGVcXFwiLCBcXFwi5byAXFxcIikgPT0gXFxcIuW8gFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3VidGl0bGVzID0gZ2V0U3ViKGZpbGVzKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuYW1lcyA9IFtcXFwi5LiN6ZyA6KaB5a2X5bmVXFxcIl1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZXMuZm9yRWFjaChkcyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLnB1c2goZHMudGl0bGUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VidGl0bGVzLmxlbmd0aCAhPSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKG5hbWVzLCAxLCBcXFwi6K+36YCJ5oup5a2X5bmVXFxcIikuc2VsZWN0KChuYW1lcywgc3VidGl0bGVzLCB1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5LiN6ZyA6KaB5a2X5bmVXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IFt1cmxdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiQXV0aG9yaXphdGlvblxcXCI6IFxcXCJCYXNpYyBcXFwiICsgYmFzZTY0RW5jb2RlKGdldEl0ZW0oXFxcInVzZXJcXFwiKSArIFxcXCI6XFxcIiArIGdldEl0ZW0oXFxcInBhc3N3ZFxcXCIpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogW3VybF0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlOiBzdWJ0aXRsZXNbbmFtZXMuaW5kZXhPZihpbnB1dCkgLSAxXS51cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJBdXRob3JpemF0aW9uXFxcIjogXFxcIkJhc2ljIFxcXCIgKyBiYXNlNjRFbmNvZGUoZ2V0SXRlbShcXFwidXNlclxcXCIpICsgXFxcIjpcXFwiICsgZ2V0SXRlbShcXFwicGFzc3dkXFxcIikpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBuYW1lcywgc3VidGl0bGVzLCBpdGVtLnVybClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5wbGF5VXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucGxheVVybCArIFxcXCIjaXNWaWRlbz10cnVlI1xcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkLnRleHQuaW5jbHVkZXMoZ2V0SHptKGl0ZW0ubmFtZSkpKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChbXFxcIue8lui+kVxcXCIsIFxcXCLkuIvovb1cXFwiXSkuc2VsZWN0KChpdGVtLCBwYXRoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLkuIvovb1cXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgaXRlbS5wbGF5VXJsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkVXJsKFxcXCJoaWtlcjovL3BhZ2UvZWRpdFxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBpdGVtLCBwYXRoKVxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQuYXVkaW8uaW5jbHVkZXMoZ2V0SHptKGl0ZW0ubmFtZSkpKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5wbGF5VXJsICsgXFxcIiNpc011c2ljPXRydWUjXFxcIlxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQuaW1nLmluY2x1ZGVzKGdldEh6bShpdGVtLm5hbWUpKSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHAgPSBkb3dubG9hZChwYXRoLCBpdGVtLm5hbWUpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJkb3dubG9hZDovL1xcXCIgKyBpdGVtLnBsYXlVcmxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGl0ZW0sIGZpbGVzLCBwYXRoKVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBmaWxlTmFtZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogZ2V0SXRlbShcXFwidGltZVxcXCIsIFxcXCIwXFxcIikgPT0gXFxcIjBcXFwiID8gaXRlbS5tb2RpZnlUaW1lU3RyIDogaXRlbS5tb2RpZnlUaW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IGljb24sXFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbShcXFwiY29sX3R5cGVcXFwiLCBcXFwiYXZhdGFyXFxcIiksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogaW5kZXggKyBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIoOmZpOaWh+S7tlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHBhdGgsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuehruWumuWIoOmZpO+8n1xcXCIpLmNvbmZpcm0oKHBhdGgsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvZGVcXFwiKS5kZWxldGVGaWxlKHBhdGgsIG5hbWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhdGgsIG5hbWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGF0aCwgaXRlbS5uYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5L2/55So5YW25a6D5bqU55So5omT5byAXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygocGF0aCwgaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdlYmRhdiA9IGJ1aWxkV2ViRGF2KHBhdGgsIGdldEl0ZW0oXFxcInVzZXJcXFwiLCBcXFwiXFxcIiksIGdldEl0ZW0oXFxcInBhc3N3ZFxcXCIsIFxcXCJcXFwiKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHAgPSBcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9cXFwiICsgaXRlbS5uYW1lO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJkYXYuZG93bmxvYWQoaXRlbS5uYW1lLCBwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIm9wZW5GaWxlOi8vXFxcIiArIHBcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXRoLCBpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcImRldGFpbFxcXCIsIFxcXCLlvIBcXFwiKSA9PSBcXFwi5byAXFxcIiAmJiBnZXRJdGVtKFxcXCJjb2xfdHlwZVxcXCIsIFxcXCJhdmF0YXJcXFwiKSA9PSBcXFwiYXZhdGFyXFxcIikge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ08c21hbGw+4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9JyNhYWFhYWEnPlxcXCIgKyAoZ2V0SXRlbShcXFwidGltZVxcXCIsIFxcXCIwXFxcIikgPT0gXFxcIjBcXFwiID8gaXRlbS5tb2RpZnlUaW1lU3RyIDogaXRlbS5tb2RpZnlUaW1lKSArIFxcXCI8L2ZvbnQ+PC9zbWFsbD5cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMVxcXCJcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9IGVsc2UgaWYgKGdldEl0ZW0oXFxcImRhdlxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIiB8fCBnZXRJdGVtKFxcXCJ1c2VyXFxcIiwgXFxcIlxcXCIpID09IFxcXCJcXFwiIHx8IGdldEl0ZW0oXFxcInBhc3N3ZFxcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuW9k+WJjeacquiuvue9rui0puWPt++8jOeCueaIkeiuvue9rlxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3NldHRpbmdzXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICB9KVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuiuvue9rlxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9zZXR0aW5nc1xcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuWHuumUmeS6hu+8jOeCueWHu+WIt+aWsFxcXCIsXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxufSBjYXRjaCAoZSkge1xcbiAgICBsb2coZS5tZXNzYWdlKVxcbiAgICB0b2FzdChcXFwi56iL5bqP6ZSZ6K+v77yB77yB77yB6K+35omT5byA5pel5b+X5p+l55yLXFxcIilcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi57yW6L6RXCIsXCJwYXRoXCI6XCJlZGl0XCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmNvbnN0IHtcXG4gICAgZG93bmxvYWRcXG59ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY29kZVxcXCIpXFxudmFyIHAgPSBkb3dubG9hZChnZXRQYXJhbShcXFwicGF0aFxcXCIpLCBnZXRQYXJhbShcXFwibmFtZVxcXCIpKVxcbnZhciBkZWZhID0gZmV0Y2gocClcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICBoZWlnaHQ6IDEwLFxcbiAgICAgICAgaGlnaGxpZ2h0OiB0cnVlLFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhLFxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJ0ZXh0XFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiYnV0dG9uXFxcIiwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogYOKAmOKAmOKAmeKAmTxiaWc+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiM2RUI4OTdcXFwiPuS/nSDlrZg8L3NwYW4+PC9iaWc+PHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI0Y1NDM0M1xcXCI+IOKXiSA8L2Zyb250Pjwvc3Ryb25nPmBcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn0sIHtcXG4gICAgdGl0bGU6IGDigJjigJjigJnigJk8YmlnPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjojNkVCODk3XFxcIj7kv50g5a2YPC9zcGFuPjwvYmlnPmAsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKChkZWZhLCBuYW1lKSA9PiB7XFxuICAgICAgICBsZXQgd2ViZGF2ID0gYnVpbGRXZWJEYXYoZ2V0UGFyYW0oXFxcInBhdGhcXFwiKSwgZ2V0SXRlbShcXFwidXNlclxcXCIpLCBnZXRJdGVtKFxcXCJwYXNzd2RcXFwiKSlcXG4gICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS93YS50eHRcXFwiLCBnZXRNeVZhcihcXFwidGV4dFxcXCIsIGRlZmEpKVxcbiAgICAgICAgd2ViZGF2LnVwbG9hZChuYW1lLCBcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS93YS50eHRcXFwiKVxcbiAgICAgICAgdXBkYXRlSXRlbShcXFwiYnV0dG9uXFxcIiwge1xcbiAgICAgICAgICAgIHRpdGxlOiBg4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFwiY29sb3I6IzZFQjg5N1xcXCI+5L+dIOWtmDwvc3Bhbj48L2JpZz5gXFxuICAgICAgICB9KVxcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S/neWtmOaIkOWKn1xcXCJcXG4gICAgfSwgZGVmYSwgZ2V0UGFyYW0oXFxcIm5hbWVcXFwiKSksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogXFxcImJ1dHRvblxcXCJcXG4gICAgfVxcbn0pXFxuc2V0UmVzdWx0KGQpO1wifV0sXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIldlYmRhdlwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vcGFnZS9zZXR0aW5nc1wiLFwiY29sX3R5cGVcIjpcInRleHRfMVwiLFwiZmluZF9ydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIGRlc2M6IFxcXCJ3ZWJkYXblnLDlnYBcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0SXRlbShcXFwiZGF2XFxcIiwgXFxcIlxcXCIpLFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBpZiAoaW5wdXRbaW5wdXQubGVuZ3RoIC0gMV0gPT0gXFxcIi9cXFwiKSB7XFxuICAgICAgICAgICAgICAgIHVybCA9IGlucHV0LnN1YnN0cmluZygwLCBpbnB1dC5sZW5ndGggLSAxKVxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJkYXZcXFwiLCB1cmwpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFwiZGF2XFxcIiwgaW5wdXQpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgZGVzYzogXFxcIui0puaIt1xcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRJdGVtKFxcXCJ1c2VyXFxcIiwgXFxcIlxcXCIpLFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCJ1c2VyXFxcIiwgaW5wdXQpXFxuICAgICAgICB9KVxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICBkZXNjOiBcXFwi5a+G56CBXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldEl0ZW0oXFxcInBhc3N3ZFxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICB0eXBlOiBcXFwicGFzc3dvcmRcXFwiLFxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIHNldEl0ZW0oXFxcInBhc3N3ZFxcXCIsIGlucHV0KVxcbiAgICAgICAgfSlcXG4gICAgfVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLmtYvor5Xov57mjqVcXFwiLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBjb25zdCB7XFxuICAgICAgICAgICAgZ2V0RmlsZXNcXG4gICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jb2RlXFxcIilcXG4gICAgICAgIGlmIChnZXRGaWxlcyhnZXRJdGVtKFxcXCJkYXZcXFwiKSArIFxcXCIvXFxcIikpIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L+e5o6l5oiQ5YqfXFxcIlxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L+e5o6l5aSx6LSl77yM6K+35qOA5p+l6LSm5oi35a+G56CBXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbn0pXFxubGV0IGljb24gPSBnZXRJdGVtKFxcXCJpY29uU3R5bGVcXFwiLCBcXFwi6buY6K6kXFxcIilcXG5sZXQgZGV0YWlsID0gZ2V0SXRlbShcXFwiZGV0YWlsXFxcIiwgXFxcIuW8gFxcXCIpXFxubGV0IHN1YnRpdGxlID0gZ2V0SXRlbShcXFwic3VidGl0bGVcXFwiLCBcXFwi5byAXFxcIilcXG5sZXQgdGltZXN0YW1wID0gZ2V0SXRlbShcXFwidGltZVxcXCIsIFxcXCIwXFxcIilcXG5sZXQgbmV3VmVyc2lvbjtcXG5sZXQgbXlWZXJzaW9uID0gTVlfUEFSQU1TLnZlcnNpb24gfHwgOTk5O1xcbnRyeSB7XFxuICAgIHJlcyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9kZXYvZ2V0YnlpZD9pZD01MjEwXFxcIikpXFxuICAgIG5ld1ZlcnNpb24gPSByZXMucmVzdWx0LnZlclxcbn0gY2F0Y2ggKGUpIHtcXG4gICAgdG9hc3QoXFxcIumBk+mVv+S7k+W6k+aKvemjjuS6hu+8jOacrOasoeacquajgOa1i+WIsOaWsOeJiOS/oeaBr1xcXCIpO1xcbiAgICBuZXdWZXJzaW9uID0gbXlWZXJzaW9uO1xcbn1cXG5sZXQgaXNVcGRhdGUgPSBOdW1iZXIobmV3VmVyc2lvbikgPD0gTnVtYmVyKG15VmVyc2lvbik7XFxubGV0IGlzVmVyID0gTnVtYmVyKG5ld1ZlcnNpb24pID09PSBOdW1iZXIobXlWZXJzaW9uKTtcXG5kLnB1c2goe1xcbiAgICBjb2xfdHlwZTogXFxcImxpbmVfYmxhbmtcXFwiXFxufSwge1xcbiAgICB0aXRsZTogaXNVcGRhdGUgPyBcXFwi5bey5piv5pyA5paw54mIXFxcIiA6IFxcXCLwn4aZ5paw54mI5pysXFxcIixcXG4gICAgdXJsOiBcXFwicnVsZTovLzVyVzM2WmlVNktlRzU1V002YWFXNmFHMTZhS1I2WUdUNktlRTVZaVo0NENRVjJWaVpHRjI0NENSNzcrbGFHOXRaVjl5ZFd4bFgzVnliTysvcFdoMGRIQTZMeTlvYVd0bGNpNXViMnRwWVM1d2NtVnpjeTlvYVd0bGNuVnNaUzl5ZFd4bGJHbHpkQzVxYzI5dVAybGtQVFV5TVRBbVlYVjBhRDFoWWpJek1EVXlZaTFqTUdRMkxUVTRabU10T1RVMU5TMWhNalV3TW1Fd01HRXpPRGM9XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxufSwge1xcbiAgICB0aXRsZTogXFxcIuaYvuekuuivpue7hu+8mlxcXCIgKyBkZXRhaWwsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKChkZXRhaWwpID0+IHtcXG4gICAgICAgIHNldEl0ZW0oXFxcImRldGFpbFxcXCIsIGRldGFpbCA9PSBcXFwi5byAXFxcIiA/IFxcXCLlhbNcXFwiIDogXFxcIuW8gFxcXCIpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIGRldGFpbCksXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIlxcbn0sIHtcXG4gICAgdGl0bGU6IFxcXCLlrZfluZXlip/og73vvJpcXFwiICsgc3VidGl0bGUsXFxuICAgIHVybDogJCgpLmxhenlSdWxlKChzdWJ0aXRsZSkgPT4ge1xcbiAgICAgICAgc2V0SXRlbShcXFwic3VidGl0bGVcXFwiLCBzdWJ0aXRsZSA9PSBcXFwi5byAXFxcIiA/IFxcXCLlhbNcXFwiIDogXFxcIuW8gFxcXCIpXFxuICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIHN1YnRpdGxlKSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiXFxufSwge1xcbiAgICB0aXRsZTogXFxcIuaXtumXtOagvOW8j++8mlxcXCIgKyAodGltZXN0YW1wID09IFxcXCIwXFxcIiA/IFxcXCIyMDIyLzA4LzIwIDE3OjE0OjMxXFxcIiA6IFxcXCJTYXQsIDIwIEF1ZyAyMDIyIDA5OjE0OjMxIEdNVFxcXCIpLFxcbiAgICB1cmw6ICQoKS5sYXp5UnVsZSgodGltZXN0YW1wKSA9PiB7XFxuICAgICAgICBzZXRJdGVtKFxcXCJ0aW1lXFxcIiwgdGltZXN0YW1wID09IFxcXCIwXFxcIiA/IFxcXCIxXFxcIiA6IFxcXCIwXFxcIilcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgdGltZXN0YW1wKSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxufSwge1xcbiAgICB1cmw6ICQoKS5ydWxlKCgpID0+IHtcXG4gICAgICAgIHNldFJlc3VsdChbe1xcbiAgICAgICAgICAgIHRpdGxlOiBgXFxuICAgICAgICAgICAgPHA+5pys56+H5paH56ug5Y+q6ZKI5a+56K6+572u77yM5YW25LuW55qE5L2/55So5pa55rOV5bey57uP5Zyo6KeE5YiZ5Lit6K+05piO5riF6Zmk5LqGPC9wPiA8cD48aW5zPjxpbnM+5YmN5o+Q5p2h5Lu277ya5bey57uP5pu05pawNy4554mI5pysPC9pbnM+PC9pbnM+PC9wPiA8cD7mtbfpmJTop4bnlYzpppbpobXpopHpgZPop4TliJnjgJBXZWJkYXbjgJHvv6Vob21lX3J1bGVfdXJs77+laHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9NTIxMCZhbXA7YXV0aD1hYjIzMDUyYi1jMGQ2LTU4ZmMtOTU1NS1hMjUwMmEwMGEzODc8L3A+IDxoMSBpZD1cXFwid2ViZGF2JUU2JTk4JUFGJUU0JUJCJTgwJUU0JUI5JTg4XFxcIiB0YWJpbmRleD1cXFwiLTFcXFwiPldlYmRhduaYr+S7gOS5iDwvaDE+IDxwPndlYmRhduWwseaYr+S4gOenjee9keebmOaWh+S7tuS8oOi+k+WNj+iuru+8jOW4uOeUqOS6juWwj+S8l+i9r+S7tueahOaVsOaNruWkh+S7veOAguacrOinhOWImeWPr+S7peeuoeeQhndlYmRhdueahOaWh+S7tu+8jOaUr+aMgea1j+iniOOAgeaSreaUvuOAgeS4i+i9veOAgeS4iuS8oOOAgeWIoOmZpOetieaTjeS9nDwvcD4gPGgxIGlkPVxcXCIlRTYlODklOTMlRTUlQkMlODAlRTglQUUlQkUlRTclQkQlQUVcXFwiIHRhYmluZGV4PVxcXCItMVxcXCI+5omT5byA6K6+572uPC9oMT4gPHA+PGltZyBzcmM9XFxcImh0dHA6Ly9hbGlzdC5qb2VndS50ay9kL2hpa2VyL1NjcmVlbnNob3RfMjAyMjA4MjFfMDgyNTUwX2NvbS5leGFtcGxlLmhpa2Vydmlldy5qcGdcXFwiIGFsdD1cXFwiU2NyZWVuc2hvdF8yMDIyMDgyMV8wODI1NTBfY29tLmV4YW1wbGUuaGlrZXJ2aWV3XFxcIiAvPjwvcD4gPHA+5bCG5L2g55qEd2ViZGF26ZO+5o6l5ZKM6LSm5oi35a+G56CB5aGr6L+b5Y6777yI6L+Z6YeM5o6o6I2Q5L2/55So5Z2a5p6c5LqR77yM5LyY54K5Oueos+WumjvnvLrngrk65a656YeP5bCR77yM5Lu35qC86LS144CC5Lmf5Y+v5Lul6Ieq5bex5pCt5bu6d2ViZGF257O757uf77yM5L6L5aaCYWxpc3TlkoxjbG91ZHJldmXvvIzpnIDopoHkuIDlrprnmoTliqjmiYvog73lipvvvIk8L3A+IDxoMiBpZD1cXFwiJUU4JUFFJUJFJUU3JUJEJUFFJUU1JTlCJUJFJUU2JUEwJTg3XFxcIiB0YWJpbmRleD1cXFwiLTFcXFwiPuiuvue9ruWbvuaghzwvaDI+IDxwPuacrOinhOWImeWGhee9ruS4pOenjemjjuagvOeahOWbvuagh++8jOWIhuWIq+S4uumBk+mVv+eahOWSjOiTneiOk+eahO+8jOiHquW3semAieaLqTwvcD4gPGgyIGlkPVxcXCIlRTYlOTglQkUlRTclQTQlQkElRTglQUYlQTYlRTclQkIlODZcXFwiIHRhYmluZGV4PVxcXCItMVxcXCI+5pi+56S66K+m57uGPC9oMj4gPHA+5Y+v5Lul5YiX5Ye65b2T5YmN5paH5Lu25aS55oiW5paH5Lu255qE5Yib5bu65pe26Ze044CCPGJyIC8+IDxzdHJvbmc+PHN0cm9uZz7pl67popjvvJo8L3N0cm9uZz48L3N0cm9uZz48YnIgLz4g5LiN6IO96Ieq5Yqo5pKt5pS+5LiL5LiA6ZuGPC9wPiA8aDIgaWQ9XFxcIiVFNSVBRCU5NyVFNSVCOSU5NVxcXCIgdGFiaW5kZXg9XFxcIi0xXFxcIj7lrZfluZU8L2gyPiA8cD7lrZfluZXlip/og73lpoLmnpzmiZPlvIDvvIzpgqPkuYjlpoLmnpzop4bpopHkuI7lrZfluZXnmoTmlofku7blkI3nm7jlkIzvvIzpgqPkuYjlsLHkvJroh6rliqjmjILovb3kuIrjgILlpoLmnpzlvZPliY3mlofku7blpLnmnInov5nkuKrlrZfluZXmlofku7bvvIzkvYbmmK/lkI3lrZfkuI3lkIzvvIzlsLHkvJrot7Plh7rpgInmi6nmoYbpgInmi6k8L3A+IDxoMSBpZD1cXFwiJUU4JUJGJTk0JUU1JTlCJTlFJUU0JUI4JUJCJUU3JTk1JThDJUU5JTlEJUEyXFxcIiB0YWJpbmRleD1cXFwiLTFcXFwiPui/lOWbnuS4u+eVjOmdojwvaDE+IDxwPjxpbWcgc3JjPVxcXCJodHRwOi8vYWxpc3Quam9lZ3UudGsvZC9oaWtlci9TY3JlZW5zaG90XzIwMjIwODIxXzE0MDcwNV9jb20uZXhhbXBsZS5oaWtlcnZpZXcuanBnXFxcIiBhbHQ9XFxcIlNjcmVlbnNob3RfMjAyMjA4MjFfMTQwNzA1X2NvbS5leGFtcGxlLmhpa2Vydmlld1xcXCIgLz48YnIgLz4g5Y+v5Lul55yL6KeB5pyJ5pON5L2c5qCP77yM5Y+v5Lul5LiK5Lyg5paH5Lu277yM5paw5bu65paH5Lu25aS55ZKM5Yig6Zmk5paH5Lu25LiJ5Liq5pON5L2cPC9wPiA8cD7kuIvpnaLmmK/kvaDnmoTmlofku7bvvIzkvaDlj6/ku6Xlg4/mtY/op4jmlofku7bnrqHnkIblmajkuIDmoLfkvb/nlKjku5Y8L3A+IDxoMSBpZD1cXFwiJUU5JUFCJTk4JUU3JUJBJUE3JUU4JUFFJUJFJUU3JUJEJUFFXFxcIiB0YWJpbmRleD1cXFwiLTFcXFwiPumrmOe6p+iuvue9rjwvaDE+IDxwPueCueWHu+e8lui+keinhOWIme+8jOWIkuWIsOW6lemDqOeahOmihOWkhOeQhjxiciAvPiA8aW1nIHNyYz1cXFwiaHR0cDovL2FsaXN0LmpvZWd1LnRrL2QvaGlrZXIvU2NyZWVuc2hvdF8yMDIyMDgyMV8xNDExMzVfY29tLmV4YW1wbGUuaGlrZXJ2aWV3LmpwZ1xcXCIgYWx0PVxcXCJTY3JlZW5zaG90XzIwMjIwODIxXzE0MTEzNV9jb20uZXhhbXBsZS5oaWtlcnZpZXdcXFwiIC8+PGJyIC8+IOagueaNruazqOmHiuS/ruaUue+8jOaIkeWGmeeahOWHoOS4quaWh+S7tuagvOW8j+W3sue7j+W+iOWujOaVtOS6hu+8jOWmguaenOacieaci+WPi+iupOS4uuS4jeWlve+8jOWPr+S7peiHquihjOS/ruaUuTxiciAvPiDmoLzlvI/vvJpb4oCc57G75Z6LMeKAnSzigJznsbvlnosy4oCdXTwvcD4gPHA+6YO95a6M5oiQ5LqG77yMZW5qb3nwn5KePC9wPlxcbiAgICAgICAgICAgIGAsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICB9XSlcXG4gICAgfSksXFxuICAgIHRpdGxlOiBcXFwi5p+l55yL5L2/55So6K+05piOXFxcIixcXG4gICAgZGVzYzogXFxcIlBvd2VyZWQgYnkgSm9lJuWwj+ajieiihFxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgfVxcbn0pXFxuc2V0UmVzdWx0KGQpO1wiLFwiZ3JvdXBcIjpcIuKRoOe9keebmFwiLFwidWFcIjpcIm1vYmlsZVwiLFwicHJlUnVsZVwiOlwiJC5leHRlbmQoe1xcbiAgICB0ZXh0OiBbXFxcImh0bVxcXCIsIFxcXCJodG1sXFxcIiwgXFxcInhtbFxcXCIsIFxcXCJqYXZhXFxcIiwgXFxcInByb3BlcnRpZXNcXFwiLCBcXFwic3FsXFxcIiwgXFxcImpzXFxcIiwgXFxcIm1kXFxcIiwgXFxcImpzb25cXFwiLCBcXFwiY29uZlxcXCIsIFxcXCJpbmlcXFwiLCBcXFwidnVlXFxcIiwgXFxcInBocFxcXCIsIFxcXCJweVxcXCIsIFxcXCJiYXRcXFwiLCBcXFwiZ2l0aWdub3JlXFxcIiwgXFxcInltbFxcXCIsIFxcXCJnb1xcXCIsIFxcXCJzaFxcXCIsIFxcXCJjXFxcIiwgXFxcImNwcFxcXCIsIFxcXCJoXFxcIiwgXFxcImhwcFxcXCIsIFxcXCJ0c3hcXFwiLCBcXFwidHh0XFxcIiwgXFxcImVwdWJcXFwiLCBcXFwiYXp3M1xcXCIsIFxcXCJtb2JpXFxcIiwgXFxcInBkZlxcXCIsIFxcXCJjaG1cXFwiXSxcXG4gICAgYXVkaW86IFtcXFwibXAzXFxcIiwgXFxcImZsYWNcXFwiLCBcXFwib2dnXFxcIiwgXFxcIm00YVxcXCIsIFxcXCJ3YXZcXFwiLCBcXFwib3B1c1xcXCJdLFxcbiAgICBtb3ZpZTogW1xcXCJtcDRcXFwiLCBcXFwibWt2XFxcIiwgXFxcImF2aVxcXCIsIFxcXCJtb3ZcXFwiLCBcXFwicm12YlxcXCIsIFxcXCJ3ZWJtXFxcIiwgXFxcImZsdlxcXCIsIFxcXCJtNHZcXFwiLCBcXFwibTN1OFxcXCJdLFxcbiAgICBpbWc6IFtcXFwianBnXFxcIiwgXFxcInBuZ1xcXCIsIFxcXCJqcGVnXFxcIiwgXFxcImdpZlxcXCIsIFxcXCJzdmdcXFwiLCBcXFwicmF3XFxcIl0sXFxuICAgIHN1YnRpdGxlOiBbXFxcInZ0dFxcXCIsIFxcXCJzcnRcXFwiLCBcXFwiYXNzXFxcIl0sXFxuICAgIHlhc3VvOiBbXFxcInppcFxcXCIsIFxcXCJyYXJcXFwiLCBcXFwiamFyXFxcIl0sXFxuICAgIG9mZmljZTogW1xcXCJkb2NcXFwiLCBcXFwiZG9jeFxcXCIsIFxcXCJ4bHNcXFwiLCBcXFwieGxzeFxcXCIsIFxcXCJwcHRcXFwiLCBcXFwicHB0eFxcXCJdXFxufSlcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcInRleHRfMVxcXCIsXFxcIm5hbWVcXFwiOlxcXCLorr7nva5cXFwiLFxcXCJwYXRoXFxcIjpcXFwic2V0dGluZ3NcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuZC5wdXNoKHtcXFxcbiAgICBkZXNjOiBcXFxcXFxcIndlYmRhduWcsOWdgFxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRJdGVtKFxcXFxcXFwiZGF2XFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLFxcXFxuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcXFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICBpZiAoaW5wdXRbaW5wdXQubGVuZ3RoIC0gMV0gPT0gXFxcXFxcXCIvXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICB1cmwgPSBpbnB1dC5zdWJzdHJpbmcoMCwgaW5wdXQubGVuZ3RoIC0gMSlcXFxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXFxcXFwiZGF2XFxcXFxcXCIsIHVybClcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFxcXFxcImRhdlxcXFxcXFwiLCBpbnB1dClcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG59KVxcXFxuZC5wdXNoKHtcXFxcbiAgICBkZXNjOiBcXFxcXFxcIui0puaIt1xcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcImlucHV0XFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRJdGVtKFxcXFxcXFwidXNlclxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKSxcXFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXFxcbiAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgc2V0SXRlbShcXFxcXFxcInVzZXJcXFxcXFxcIiwgaW5wdXQpXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgZGVzYzogXFxcXFxcXCLlr4bnoIFcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0SXRlbShcXFxcXFxcInBhc3N3ZFxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKSxcXFxcbiAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXFxcbiAgICAgICAgdHlwZTogXFxcXFxcXCJwYXNzd29yZFxcXFxcXFwiLFxcXFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXFxcXFwicGFzc3dkXFxcXFxcXCIsIGlucHV0KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcbn0pXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIua1i+ivlei/nuaOpVxcXFxcXFwiLFxcXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgY29uc3Qge1xcXFxuICAgICAgICAgICAgZ2V0RmlsZXNcXFxcbiAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9jb2RlXFxcXFxcXCIpXFxcXG4gICAgICAgIGlmIChnZXRGaWxlcyhnZXRJdGVtKFxcXFxcXFwiZGF2XFxcXFxcXCIpICsgXFxcXFxcXCIvXFxcXFxcXCIpKSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+i/nuaOpeaIkOWKn1xcXFxcXFwiXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+i/nuaOpeWksei0pe+8jOivt+ajgOafpei0puaIt+WvhueggVxcXFxcXFwiXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbn0pXFxcXG5sZXQgaWNvbiA9IGdldEl0ZW0oXFxcXFxcXCJpY29uU3R5bGVcXFxcXFxcIiwgXFxcXFxcXCLpu5jorqRcXFxcXFxcIilcXFxcbmxldCBkZXRhaWwgPSBnZXRJdGVtKFxcXFxcXFwiZGV0YWlsXFxcXFxcXCIsIFxcXFxcXFwi5byAXFxcXFxcXCIpXFxcXG5sZXQgc3VidGl0bGUgPSBnZXRJdGVtKFxcXFxcXFwic3VidGl0bGVcXFxcXFxcIiwgXFxcXFxcXCLlvIBcXFxcXFxcIilcXFxcbmxldCB0aW1lc3RhbXAgPSBnZXRJdGVtKFxcXFxcXFwidGltZVxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIilcXFxcbmxldCBuZXdWZXJzaW9uO1xcXFxubGV0IG15VmVyc2lvbiA9IE1ZX1BBUkFNUy52ZXJzaW9uIHx8IDk5OTtcXFxcbnRyeSB7XFxcXG4gICAgcmVzID0gSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9kZXYvZ2V0YnlpZD9pZD01MjEwXFxcXFxcXCIpKVxcXFxuICAgIG5ld1ZlcnNpb24gPSByZXMucmVzdWx0LnZlclxcXFxufSBjYXRjaCAoZSkge1xcXFxuICAgIHRvYXN0KFxcXFxcXFwi6YGT6ZW/5LuT5bqT5oq96aOO5LqG77yM5pys5qyh5pyq5qOA5rWL5Yiw5paw54mI5L+h5oGvXFxcXFxcXCIpO1xcXFxuICAgIG5ld1ZlcnNpb24gPSBteVZlcnNpb247XFxcXG59XFxcXG5sZXQgaXNVcGRhdGUgPSBOdW1iZXIobmV3VmVyc2lvbikgPD0gTnVtYmVyKG15VmVyc2lvbik7XFxcXG5sZXQgaXNWZXIgPSBOdW1iZXIobmV3VmVyc2lvbikgPT09IE51bWJlcihteVZlcnNpb24pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJsaW5lX2JsYW5rXFxcXFxcXCJcXFxcbn0sIHtcXFxcbiAgICB0aXRsZTogaXNVcGRhdGUgPyBcXFxcXFxcIuW3suaYr+acgOaWsOeJiFxcXFxcXFwiIDogXFxcXFxcXCLwn4aZ5paw54mI5pysXFxcXFxcXCIsXFxcXG4gICAgdXJsOiBcXFxcXFxcInJ1bGU6Ly81clczNlppVTZLZUc1NVdNNmFhVzZhRzE2YUtSNllHVDZLZUU1WWlaNDRDUVYyVmlaR0YyNDRDUjc3K2xhRzl0WlY5eWRXeGxYM1Z5Yk8rL3BXaDBkSEE2THk5b2FXdGxjaTV1YjJ0cFlTNXdjbVZ6Y3k5b2FXdGxjblZzWlM5eWRXeGxiR2x6ZEM1cWMyOXVQMmxrUFRVeU1UQW1ZWFYwYUQxaFlqSXpNRFV5WWkxak1HUTJMVFU0Wm1NdE9UVTFOUzFoTWpVd01tRXdNR0V6T0RjPVxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMlxcXFxcXFwiXFxcXG59LCB7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi5pi+56S66K+m57uG77yaXFxcXFxcXCIgKyBkZXRhaWwsXFxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKGRldGFpbCkgPT4ge1xcXFxuICAgICAgICBzZXRJdGVtKFxcXFxcXFwiZGV0YWlsXFxcXFxcXCIsIGRldGFpbCA9PSBcXFxcXFxcIuW8gFxcXFxcXFwiID8gXFxcXFxcXCLlhbNcXFxcXFxcIiA6IFxcXFxcXFwi5byAXFxcXFxcXCIpXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSwgZGV0YWlsKSxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIlxcXFxufSwge1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuWtl+W5leWKn+iDve+8mlxcXFxcXFwiICsgc3VidGl0bGUsXFxcXG4gICAgdXJsOiAkKCkubGF6eVJ1bGUoKHN1YnRpdGxlKSA9PiB7XFxcXG4gICAgICAgIHNldEl0ZW0oXFxcXFxcXCJzdWJ0aXRsZVxcXFxcXFwiLCBzdWJ0aXRsZSA9PSBcXFxcXFxcIuW8gFxcXFxcXFwiID8gXFxcXFxcXCLlhbNcXFxcXFxcIiA6IFxcXFxcXFwi5byAXFxcXFxcXCIpXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSwgc3VidGl0bGUpLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMlxcXFxcXFwiXFxcXG59LCB7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi5pe26Ze05qC85byP77yaXFxcXFxcXCIgKyAodGltZXN0YW1wID09IFxcXFxcXFwiMFxcXFxcXFwiID8gXFxcXFxcXCIyMDIyLzA4LzIwIDE3OjE0OjMxXFxcXFxcXCIgOiBcXFxcXFxcIlNhdCwgMjAgQXVnIDIwMjIgMDk6MTQ6MzEgR01UXFxcXFxcXCIpLFxcXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCh0aW1lc3RhbXApID0+IHtcXFxcbiAgICAgICAgc2V0SXRlbShcXFxcXFxcInRpbWVcXFxcXFxcIiwgdGltZXN0YW1wID09IFxcXFxcXFwiMFxcXFxcXFwiID8gXFxcXFxcXCIxXFxcXFxcXCIgOiBcXFxcXFxcIjBcXFxcXFxcIilcXFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICB9LCB0aW1lc3RhbXApLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiXFxcXG59LCB7XFxcXG4gICAgdXJsOiAkKCkucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgIHNldFJlc3VsdChbe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGBcXFxcbiAgICAgICAgICAgIDxwPuacrOevh+aWh+eroOWPqumSiOWvueiuvue9ru+8jOWFtuS7lueahOS9v+eUqOaWueazleW3sue7j+WcqOinhOWImeS4reivtOaYjua4hemZpOS6hjwvcD4gPHA+PGlucz48aW5zPuWJjeaPkOadoeS7tu+8muW3sue7j+abtOaWsDcuOeeJiOacrDwvaW5zPjwvaW5zPjwvcD4gPHA+5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQV2ViZGF244CR77+laG9tZV9ydWxlX3VybO+/pWh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTUyMTAmYW1wO2F1dGg9YWIyMzA1MmItYzBkNi01OGZjLTk1NTUtYTI1MDJhMDBhMzg3PC9wPiA8aDEgaWQ9XFxcXFxcXCJ3ZWJkYXYlRTYlOTglQUYlRTQlQkIlODAlRTQlQjklODhcXFxcXFxcIiB0YWJpbmRleD1cXFxcXFxcIi0xXFxcXFxcXCI+V2ViZGF25piv5LuA5LmIPC9oMT4gPHA+d2ViZGF25bCx5piv5LiA56eN572R55uY5paH5Lu25Lyg6L6T5Y2P6K6u77yM5bi455So5LqO5bCP5LyX6L2v5Lu255qE5pWw5o2u5aSH5Lu944CC5pys6KeE5YiZ5Y+v5Lul566h55CGd2ViZGF255qE5paH5Lu277yM5pSv5oyB5rWP6KeI44CB5pKt5pS+44CB5LiL6L2944CB5LiK5Lyg44CB5Yig6Zmk562J5pON5L2cPC9wPiA8aDEgaWQ9XFxcXFxcXCIlRTYlODklOTMlRTUlQkMlODAlRTglQUUlQkUlRTclQkQlQUVcXFxcXFxcIiB0YWJpbmRleD1cXFxcXFxcIi0xXFxcXFxcXCI+5omT5byA6K6+572uPC9oMT4gPHA+PGltZyBzcmM9XFxcXFxcXCJodHRwOi8vYWxpc3Quam9lZ3UudGsvZC9oaWtlci9TY3JlZW5zaG90XzIwMjIwODIxXzA4MjU1MF9jb20uZXhhbXBsZS5oaWtlcnZpZXcuanBnXFxcXFxcXCIgYWx0PVxcXFxcXFwiU2NyZWVuc2hvdF8yMDIyMDgyMV8wODI1NTBfY29tLmV4YW1wbGUuaGlrZXJ2aWV3XFxcXFxcXCIgLz48L3A+IDxwPuWwhuS9oOeahHdlYmRhdumTvuaOpeWSjOi0puaIt+WvhueggeWhq+i/m+WOu++8iOi/memHjOaOqOiNkOS9v+eUqOWdmuaenOS6ke+8jOS8mOeCuTrnqLPlrpo757y654K5OuWuuemHj+Wwke+8jOS7t+agvOi0teOAguS5n+WPr+S7peiHquW3seaQreW7undlYmRhduezu+e7n++8jOS+i+WmgmFsaXN05ZKMY2xvdWRyZXZl77yM6ZyA6KaB5LiA5a6a55qE5Yqo5omL6IO95Yqb77yJPC9wPiA8aDIgaWQ9XFxcXFxcXCIlRTglQUUlQkUlRTclQkQlQUUlRTUlOUIlQkUlRTYlQTAlODdcXFxcXFxcIiB0YWJpbmRleD1cXFxcXFxcIi0xXFxcXFxcXCI+6K6+572u5Zu+5qCHPC9oMj4gPHA+5pys6KeE5YiZ5YaF572u5Lik56eN6aOO5qC855qE5Zu+5qCH77yM5YiG5Yir5Li66YGT6ZW/55qE5ZKM6JOd6I6T55qE77yM6Ieq5bex6YCJ5oupPC9wPiA8aDIgaWQ9XFxcXFxcXCIlRTYlOTglQkUlRTclQTQlQkElRTglQUYlQTYlRTclQkIlODZcXFxcXFxcIiB0YWJpbmRleD1cXFxcXFxcIi0xXFxcXFxcXCI+5pi+56S66K+m57uGPC9oMj4gPHA+5Y+v5Lul5YiX5Ye65b2T5YmN5paH5Lu25aS55oiW5paH5Lu255qE5Yib5bu65pe26Ze044CCPGJyIC8+IDxzdHJvbmc+PHN0cm9uZz7pl67popjvvJo8L3N0cm9uZz48L3N0cm9uZz48YnIgLz4g5LiN6IO96Ieq5Yqo5pKt5pS+5LiL5LiA6ZuGPC9wPiA8aDIgaWQ9XFxcXFxcXCIlRTUlQUQlOTclRTUlQjklOTVcXFxcXFxcIiB0YWJpbmRleD1cXFxcXFxcIi0xXFxcXFxcXCI+5a2X5bmVPC9oMj4gPHA+5a2X5bmV5Yqf6IO95aaC5p6c5omT5byA77yM6YKj5LmI5aaC5p6c6KeG6aKR5LiO5a2X5bmV55qE5paH5Lu25ZCN55u45ZCM77yM6YKj5LmI5bCx5Lya6Ieq5Yqo5oyC6L295LiK44CC5aaC5p6c5b2T5YmN5paH5Lu25aS55pyJ6L+Z5Liq5a2X5bmV5paH5Lu277yM5L2G5piv5ZCN5a2X5LiN5ZCM77yM5bCx5Lya6Lez5Ye66YCJ5oup5qGG6YCJ5oupPC9wPiA8aDEgaWQ9XFxcXFxcXCIlRTglQkYlOTQlRTUlOUIlOUUlRTQlQjglQkIlRTclOTUlOEMlRTklOUQlQTJcXFxcXFxcIiB0YWJpbmRleD1cXFxcXFxcIi0xXFxcXFxcXCI+6L+U5Zue5Li755WM6Z2iPC9oMT4gPHA+PGltZyBzcmM9XFxcXFxcXCJodHRwOi8vYWxpc3Quam9lZ3UudGsvZC9oaWtlci9TY3JlZW5zaG90XzIwMjIwODIxXzE0MDcwNV9jb20uZXhhbXBsZS5oaWtlcnZpZXcuanBnXFxcXFxcXCIgYWx0PVxcXFxcXFwiU2NyZWVuc2hvdF8yMDIyMDgyMV8xNDA3MDVfY29tLmV4YW1wbGUuaGlrZXJ2aWV3XFxcXFxcXCIgLz48YnIgLz4g5Y+v5Lul55yL6KeB5pyJ5pON5L2c5qCP77yM5Y+v5Lul5LiK5Lyg5paH5Lu277yM5paw5bu65paH5Lu25aS55ZKM5Yig6Zmk5paH5Lu25LiJ5Liq5pON5L2cPC9wPiA8cD7kuIvpnaLmmK/kvaDnmoTmlofku7bvvIzkvaDlj6/ku6Xlg4/mtY/op4jmlofku7bnrqHnkIblmajkuIDmoLfkvb/nlKjku5Y8L3A+IDxoMSBpZD1cXFxcXFxcIiVFOSVBQiU5OCVFNyVCQSVBNyVFOCVBRSVCRSVFNyVCRCVBRVxcXFxcXFwiIHRhYmluZGV4PVxcXFxcXFwiLTFcXFxcXFxcIj7pq5jnuqforr7nva48L2gxPiA8cD7ngrnlh7vnvJbovpHop4TliJnvvIzliJLliLDlupXpg6jnmoTpooTlpITnkIY8YnIgLz4gPGltZyBzcmM9XFxcXFxcXCJodHRwOi8vYWxpc3Quam9lZ3UudGsvZC9oaWtlci9TY3JlZW5zaG90XzIwMjIwODIxXzE0MTEzNV9jb20uZXhhbXBsZS5oaWtlcnZpZXcuanBnXFxcXFxcXCIgYWx0PVxcXFxcXFwiU2NyZWVuc2hvdF8yMDIyMDgyMV8xNDExMzVfY29tLmV4YW1wbGUuaGlrZXJ2aWV3XFxcXFxcXCIgLz48YnIgLz4g5qC55o2u5rOo6YeK5L+u5pS577yM5oiR5YaZ55qE5Yeg5Liq5paH5Lu25qC85byP5bey57uP5b6I5a6M5pW05LqG77yM5aaC5p6c5pyJ5pyL5Y+L6K6k5Li65LiN5aW977yM5Y+v5Lul6Ieq6KGM5L+u5pS5PGJyIC8+IOagvOW8j++8mlvigJznsbvlnosx4oCdLOKAnOexu+WeizLigJ1dPC9wPiA8cD7pg73lrozmiJDkuobvvIxlbmpvefCfkp48L3A+XFxcXG4gICAgICAgICAgICBgLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwicmljaF90ZXh0XFxcXFxcXCJcXFxcbiAgICAgICAgfV0pXFxcXG4gICAgfSksXFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi5p+l55yL5L2/55So6K+05piOXFxcXFxcXCIsXFxcXG4gICAgZGVzYzogXFxcXFxcXCJQb3dlcmVkIGJ5IEpvZSblsI/mo4noooRcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxcXG4gICAgfVxcXFxufSlcXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIFcXFwiLFxcXCJwYXRoXFxcIjpcXFwiY29kZVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIkLmV4cG9ydHMuZ2V0RmlsZXMgPSBmdW5jdGlvbihwYXRoKSB7XFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgaWYgKCFwYXRoIHx8IHBhdGggPT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgbGV0IHdlYmRhdiA9IGJ1aWxkV2ViRGF2KHBhdGgsIGdldEl0ZW0oXFxcXFxcXCJ1c2VyXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLCBnZXRJdGVtKFxcXFxcXFwicGFzc3dkXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpKVxcXFxuICAgICAgICBsZXQgcmVzID0gd2ViZGF2Lmxpc3QoKVxcXFxuICAgICAgICByZXMgPSBKU09OLnBhcnNlKHJlcylcXFxcbiAgICAgICAgcmV0dXJuIHJlc1xcXFxuICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICAgICAgcmV0dXJuIGZhbHNlXFxcXG4gICAgfVxcXFxufVxcXFxuJC5leHBvcnRzLmZldGNoRmlsZSA9IGZ1bmN0aW9uKHBhdGgpIHtcXFxcbiAgICBsZXQgcmVzID0gcmVxdWVzdChwYXRoLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiYXV0aG9yaXphdGlvblxcXFxcXFwiOiBcXFxcXFxcIkJhc2ljIFxcXFxcXFwiICsgYmFzZTY0RW5jb2RlKGdldEl0ZW0oXFxcXFxcXCJ1c2VyXFxcXFxcXCIpICsgXFxcXFxcXCI6XFxcXFxcXCIgKyBnZXRJdGVtKFxcXFxcXFwicGFzc3dkXFxcXFxcXCIpKVxcXFxuICAgICAgICB9XFxcXG4gICAgfSlcXFxcbiAgICByZXR1cm4gcmVzXFxcXG59XFxcXG4kLmV4cG9ydHMuZ2V0SWNvbiA9IGZ1bmN0aW9uKGNvbnRlbnQpIHtcXFxcbiAgICBpZiAoY29udGVudC5kaXIpIHtcXFxcbiAgICAgICAgaW1nID0gXFxcXFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8yNzQucG5nXFxcXFxcXCJcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBjb250ZW50Lm5hbWUudG9Mb3dlckNhc2UoKVxcXFxuICAgICAgICBsZXQgaHptID0gJC5yZXF1aXJlKFxcXFxcXFwiY29kZVxcXFxcXFwiKS5nZXRIem0oZmlsZU5hbWUpXFxcXG4gICAgICAgIGlmIChjb250ZW50LnRodW1iICYmIGNvbnRlbnQudHlwZSAhPSAwKSB7XFxcXG4gICAgICAgICAgICBpbWcgPSBjb250ZW50LnRodW1iXFxcXG4gICAgICAgIH0gZWxzZSBpZiAoJC5tb3ZpZS5pbmNsdWRlcyhoem0pKSB7XFxcXG4gICAgICAgICAgICBpbWcgPSBcXFxcXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3JlLzMwLnBuZ1xcXFxcXFwiXFxcXG4gICAgICAgIH0gZWxzZSBpZiAoJC5hdWRpby5pbmNsdWRlcyhoem0pKSB7XFxcXG4gICAgICAgICAgICBpbWcgPSBcXFxcXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3JlLzQwLnBuZ1xcXFxcXFwiXFxcXG4gICAgICAgIH0gZWxzZSBpZiAoJC50ZXh0LmluY2x1ZGVzKGh6bSkpIHtcXFxcbiAgICAgICAgICAgIGltZyA9IFxcXFxcXFwiaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL21vcmUvNzgucG5nXFxcXFxcXCJcXFxcbiAgICAgICAgfSBlbHNlIGlmICgkLmltZy5pbmNsdWRlcyhoem0pKSB7XFxcXG4gICAgICAgICAgICBpbWcgPSBjb250ZW50LnVybCArIFxcXFxcXFwiQGhlYWRlcnM9XFxcXFxcXCIgKyBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJhdXRob3JpemF0aW9uXFxcXFxcXCI6IFxcXFxcXFwiQmFzaWMgXFxcXFxcXCIgKyBiYXNlNjRFbmNvZGUoZ2V0SXRlbShcXFxcXFxcInVzZXJcXFxcXFxcIikgKyBcXFxcXFxcIjpcXFxcXFxcIiArIGdldEl0ZW0oXFxcXFxcXCJwYXNzd2RcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9IGVsc2UgaWYgKCQueWFzdW8uaW5jbHVkZXMoaHptKSkge1xcXFxuICAgICAgICAgICAgaW1nID0gXFxcXFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8yMDEucG5nXFxcXFxcXCJcXFxcbiAgICAgICAgfSBlbHNlIGlmICgkLm9mZmljZS5pbmNsdWRlcyhoem0pKSB7XFxcXG4gICAgICAgICAgICBpbWcgPSBcXFxcXFxcImh0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9tb3JlLzE4NS5wbmdcXFxcXFxcIlxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgaW1nID0gXFxcXFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbW9yZS8yMzkucG5nXFxcXFxcXCJcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICByZXR1cm4gaW1nXFxcXG59XFxcXG4kLmV4cG9ydHMuZ2V0SHptID0gZnVuY3Rpb24oZmlsZU5hbWUpIHtcXFxcbiAgICByZXR1cm4gZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxhc3RJbmRleE9mKFxcXFxcXFwiLlxcXFxcXFwiKSArIDEpXFxcXG59XFxcXG4kLmV4cG9ydHMucmVtb3ZlRXh0ID0gZnVuY3Rpb24oZmlsZSkge1xcXFxuICAgIHJldHVybiBmaWxlLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKVxcXFxufTtcXFxcbiQuZXhwb3J0cy5nZXRTdWIgPSBmdW5jdGlvbihsaXN0KSB7XFxcXG4gICAgY29uc3Qge1xcXFxuICAgICAgICBnZXRIem1cXFxcbiAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2NvZGVcXFxcXFxcIilcXFxcbiAgICBsZXQgcyA9IFtdXFxcXG4gICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICBpZiAoJC5zdWJ0aXRsZS5pbmNsdWRlcyhnZXRIem0oaXRlbS5uYW1lKSkpIHtcXFxcbiAgICAgICAgICAgIHMucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0ubmFtZSxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9XFxcXG4gICAgfSlcXFxcbiAgICByZXR1cm4gc1xcXFxufVxcXFxuJC5leHBvcnRzLmRvd25sb2FkID0gZnVuY3Rpb24ocGF0aCwgbmFtZSkge1xcXFxuICAgIGxldCB3ZWJkYXYgPSBidWlsZFdlYkRhdihwYXRoLCBnZXRJdGVtKFxcXFxcXFwidXNlclxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKSwgZ2V0SXRlbShcXFxcXFxcInBhc3N3ZFxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKSlcXFxcbiAgICBsZXQgcCA9IFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9fZmlsZVNlbGVjdF9cXFxcXFxcIiArIG5hbWU7XFxcXG4gICAgd2ViZGF2LmRvd25sb2FkKG5hbWUsIHApO1xcXFxuICAgIHJldHVybiBnZXRQYXRoKHApO1xcXFxufVxcXFxuJC5leHBvcnRzLmRlbGV0ZUZpbGUgPSBmdW5jdGlvbihwYXRoLCBuYW1lKSB7XFxcXG4gICAgbGV0IHdlYmRhdiA9IGJ1aWxkV2ViRGF2KHBhdGgsIGdldEl0ZW0oXFxcXFxcXCJ1c2VyXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLCBnZXRJdGVtKFxcXFxcXFwicGFzc3dkXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpKVxcXFxuICAgIHdlYmRhdi5kZWxldGUobmFtZSlcXFxcbn1cXFxcbiQuZXhwb3J0cy5yZW5hbWUgPSBmdW5jdGlvbihwYXRoLCBvbGRuYW1lLCBuZXduYW1lKSB7XFxcXG4gICAgdG9hc3QoXFxcXFxcXCLmmoLmnKrmlK/mjIFcXFxcXFxcIilcXFxcbn1cXFxcbiQuZXhwb3J0cy5zb3J0cyA9IGZ1bmN0aW9uKGxpc3QsIG1ldGhvZCkge1xcXFxuICAgIGlmIChtZXRob2QuaW5jbHVkZXMoXFxcXFxcXCLlkI3np7BcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSBlbHNlIGlmIChtZXRob2QuaW5jbHVkZXMoXFxcXFxcXCLml7bpl7RcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgbGlzdC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBhLm1vZGlmeVRpbWVzdGFtcCAtIGIubW9kaWZ5VGltZXN0YW1wXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxuICAgIGlmIChtZXRob2QuaW5jbHVkZXMoXFxcXFxcXCLlj41cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgbGlzdC5yZXZlcnNlKCk7XFxcXG4gICAgfVxcXFxuICAgIHJldHVybiBsaXN0XFxcXG59XFxcXG4kLmV4cG9ydHMuZ2V0SW5mbyA9IGZ1bmN0aW9uKCkge1xcXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlYWRGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy93ZWJkYXYvaW5mby5qc29uXFxcXFxcXCIpKVxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS4u+mhtVxcXCIsXFxcInBhdGhcXFwiOlxcXCJtYWluXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudHJ5IHtcXFxcbiAgICB2YXIgZCA9IFtdO1xcXFxuICAgIGNvbnN0IHtcXFxcbiAgICAgICAgZ2V0RmlsZXMsXFxcXG4gICAgICAgIGRvd25sb2FkLFxcXFxuICAgICAgICBnZXRJY29uLFxcXFxuICAgICAgICBzb3J0c1xcXFxuICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvY29kZVxcXFxcXFwiKVxcXFxuICAgIHZhciByb290ID0gZ2V0SXRlbShcXFxcXFxcImRhdlxcXFxcXFwiKSArIFxcXFxcXFwiL1xcXFxcXFwiXFxcXG4gICAgdmFyIHBhdGhzID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcXFxcXCJwYXRoXFxcXFxcXCIsIFtdKVxcXFxuICAgIHZhciBzcm9vdCA9IHBhdGhzLmpvaW4oXFxcXFxcXCIvXFxcXFxcXCIpXFxcXG4gICAgdmFyIHBhdGggPSByb290ICsgc3Jvb3RcXFxcbiAgICB2YXIgZmlsZXMgPSBnZXRGaWxlcyhwYXRoKVxcXFxuICAgIGlmIChmaWxlcykge1xcXFxuICAgICAgICBsZXQgdGVtcCA9IFxcXFxcXFwiXFxcXFxcXCJcXFxcbiAgICAgICAgc29ydHMoZmlsZXMsIGdldE15VmFyKFxcXFxcXFwic29ydFxcXFxcXFwiLCBcXFxcXFxcIum7mOiupFxcXFxcXFwiKSlcXFxcbiAgICAgICAgbGV0IHNvcnIgPSBbXFxcXFxcXCLpu5jorqRcXFxcXFxcIiwgXFxcXFxcXCLlkI3np7BcXFxcXFxcIiwgXFxcXFxcXCLml7bpl7RcXFxcXFxcIl1cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuiuvue9rlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9zZXR0aW5nc1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgaW1nOiBcXFxcXFxcImhpa2VyOi8vaW1hZ2VzL2hvbWVfaWNvbl9pdGVtXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpY29uXzVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgdmVyc2lvbjogTVlfUlVMRS52ZXJzaW9uXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuWIh+aNouagt+W8j1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdXJsOiAkKFtcXFxcXFxcIm1vdmllXzFfbGVmdF9waWNcXFxcXFxcIiwgXFxcXFxcXCJjYXJkX3BpY18zXFxcXFxcXCIsIFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIsIFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFxcXFxcIiwgXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIl0pLnNlbGVjdCgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbShcXFxcXFxcImNvbF90eXBlXFxcXFxcXCIsIGlucHV0KVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3suWIh+aNolxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgIGltZzogXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9ob21lX2ljb25fY29kZVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiaWNvbl81XFxcXFxcXCJcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5LiK5Lyg5paH5Lu2XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiZmlsZVNlbGVjdDovL1xcXFxcXFwiICsgJC50b1N0cmluZygocGF0aCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIGxldCB3ZWJkYXYgPSBidWlsZFdlYkRhdihwYXRoLCBnZXRJdGVtKFxcXFxcXFwidXNlclxcXFxcXFwiKSwgZ2V0SXRlbShcXFxcXFxcInBhc3N3ZFxcXFxcXFwiKSlcXFxcbiAgICAgICAgICAgICAgICBsZXQgcyA9IGlucHV0LnNwbGl0KFxcXFxcXFwiL1xcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgIHdlYmRhdi51cGxvYWQoc1tzLmxlbmd0aCAtIDFdLnJlcGxhY2UoXFxcXFxcXCJfZmlsZVNlbGVjdF9cXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIiksIGlucHV0KVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICB9LCBwYXRoKSxcXFxcbiAgICAgICAgICAgIGltZzogXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9ob21lX2ljb25fYm9va21hcmtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImljb25fNVxcXFxcXFwiXFxcXG4gICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuaWsOW7uuaWh+S7tlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwiXFxcXFxcXCIpLmlucHV0KChwYXRoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHdlYmRhdiA9IGJ1aWxkV2ViRGF2KHBhdGgsIGdldEl0ZW0oXFxcXFxcXCJ1c2VyXFxcXFxcXCIpLCBnZXRJdGVtKFxcXFxcXFwicGFzc3dkXFxcXFxcXCIpKVxcXFxuICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvd2EudHh0XFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgd2ViZGF2LnVwbG9hZChpbnB1dCwgXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL3dhLnR4dFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxcXG4gICAgICAgICAgICB9LCBwYXRoKSxcXFxcbiAgICAgICAgICAgIGltZzogXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9ob21lX2ljb25fYm9va21hcmtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcImljb25fNVxcXFxcXFwiXFxcXG4gICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuaWsOaWh+S7tuWkuVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwiXFxcXFxcXCIsIFxcXFxcXFwi6L6T5YWl5paH5Lu25aS55ZCN56ewXFxcXFxcXCIpLmlucHV0KChwYXRoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHdlYmRhdiA9IGJ1aWxkV2ViRGF2KHBhdGgsIGdldEl0ZW0oXFxcXFxcXCJ1c2VyXFxcXFxcXCIpLCBnZXRJdGVtKFxcXFxcXFwicGFzc3dkXFxcXFxcXCIpKVxcXFxuICAgICAgICAgICAgICAgIHdlYmRhdi5tYWtlRGlyKGlucHV0KVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0sIHBhdGgpLFxcXFxuICAgICAgICAgICAgaW1nOiBcXFxcXFxcImhpa2VyOi8vaW1hZ2VzL2hvbWVfaWNvbl9mb2xkXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJpY29uXzVcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBzb3JyLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICB2YXIgbiA9IGdldE15VmFyKFxcXFxcXFwic29ydFxcXFxcXFwiLCBcXFxcXFxcIum7mOiupFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgaWYgKG4gPT0gaXRlbSkge1xcXFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGl0ZW0gKyBcXFxcXFxcIuKGk1xcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG4uaW5jbHVkZXMoXFxcXFxcXCLlj41cXFxcXFxcIikgJiYgbi5pbmNsdWRlcyhpdGVtKSkge1xcXFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGl0ZW0gKyBcXFxcXFxcIuKGkVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGl0ZW0gKyBcXFxcXFxcIuKGlVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKFxcXFxcXFwic29ydFxcXFxcXFwiLCBcXFxcXFxcIum7mOiupFxcXFxcXFwiKSA9PSBpdGVtKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcInNvcnRcXFxcXFxcIiwgaXRlbSArIFxcXFxcXFwi5Y+NXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcInNvcnRcXFxcXFxcIiwgaXRlbSlcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGA8YCxcXFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChwYXRocykgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHBhdGhzLnBvcCgpXFxcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcXFxcXCJwYXRoXFxcXFxcXCIsIHBhdGhzKVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0sIHBhdGhzKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLwn4+gXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcihcXFxcXFxcInBhdGhcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBwYXRocy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xcXFxuICAgICAgICAgICAgaWYgKGl0ZW0gIT0gXFxcXFxcXCJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkZWNvZGVVUklDb21wb25lbnQoaXRlbSksXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpLCBwYXRocykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aHMuc3BsaWNlKGkgKyAxKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoXFxcXFxcXCJwYXRoXFxcXFxcXCIsIHBhdGhzKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZGV4LCBwYXRocyksXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBmaWxlcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xcXFxuICAgICAgICAgICAgbGV0IGZpbGVOYW1lID0gZGVjb2RlVVJJQ29tcG9uZW50KGl0ZW0ubmFtZSlcXFxcbiAgICAgICAgICAgIGxldCBpY29uID0gZ2V0SWNvbihpdGVtKVxcXFxuXFxcXG4gICAgICAgICAgICB2YXIgdXJsID0gJCgpLmxhenlSdWxlKChpdGVtLCBmaWxlcywgcGF0aCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgIHZhciBwYXRocyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXFxcXFwicGF0aFxcXFxcXFwiLCBbXSlcXFxcbiAgICAgICAgICAgICAgICBjb25zdCB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGZldGNoRmlsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgZ2V0SHptLFxcXFxuICAgICAgICAgICAgICAgICAgICBnZXRTdWIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUV4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRcXFxcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2NvZGVcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5kaXIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcGF0aHMucHVzaChpdGVtLmZpbGVOYW1lKVxcXFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFxcXFxcInBhdGhcXFxcXFxcIiwgcGF0aHMpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkLm1vdmllLmluY2x1ZGVzKGdldEh6bShpdGVtLm5hbWUpKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0SXRlbShcXFxcXFxcInN1YnRpdGxlXFxcXFxcXCIsIFxcXFxcXFwi5byAXFxcXFxcXCIpID09IFxcXFxcXFwi5byAXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzdWJ0aXRsZXMgPSBnZXRTdWIoZmlsZXMpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmFtZXMgPSBbXFxcXFxcXCLkuI3pnIDopoHlrZfluZVcXFxcXFxcIl1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnRpdGxlcy5mb3JFYWNoKGRzID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKGRzLnRpdGxlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJ0aXRsZXMubGVuZ3RoICE9IDApIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChuYW1lcywgMSwgXFxcXFxcXCLor7fpgInmi6nlrZfluZVcXFxcXFxcIikuc2VsZWN0KChuYW1lcywgc3VidGl0bGVzLCB1cmwpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXFxcXFwi5LiN6ZyA6KaB5a2X5bmVXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogW3VybF0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcIkF1dGhvcml6YXRpb25cXFxcXFxcIjogXFxcXFxcXCJCYXNpYyBcXFxcXFxcIiArIGJhc2U2NEVuY29kZShnZXRJdGVtKFxcXFxcXFwidXNlclxcXFxcXFwiKSArIFxcXFxcXFwiOlxcXFxcXFwiICsgZ2V0SXRlbShcXFxcXFxcInBhc3N3ZFxcXFxcXFwiKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiBbdXJsXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0aXRsZTogc3VidGl0bGVzW25hbWVzLmluZGV4T2YoaW5wdXQpIC0gMV0udXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJBdXRob3JpemF0aW9uXFxcXFxcXCI6IFxcXFxcXFwiQmFzaWMgXFxcXFxcXCIgKyBiYXNlNjRFbmNvZGUoZ2V0SXRlbShcXFxcXFxcInVzZXJcXFxcXFxcIikgKyBcXFxcXFxcIjpcXFxcXFxcIiArIGdldEl0ZW0oXFxcXFxcXCJwYXNzd2RcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG5hbWVzLCBzdWJ0aXRsZXMsIGl0ZW0udXJsKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5wbGF5VXJsICsgXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5wbGF5VXJsICsgXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCQudGV4dC5pbmNsdWRlcyhnZXRIem0oaXRlbS5uYW1lKSkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoW1xcXFxcXFwi57yW6L6RXFxcXFxcXCIsIFxcXFxcXFwi5LiL6L29XFxcXFxcXCJdKS5zZWxlY3QoKGl0ZW0sIHBhdGgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFxcXFxcIuS4i+i9vVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiZG93bmxvYWQ6Ly9cXFxcXFxcIiArIGl0ZW0ucGxheVVybFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVpbGRVcmwoXFxcXFxcXCJoaWtlcjovL3BhZ2UvZWRpdFxcXFxcXFwiLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIGl0ZW0sIHBhdGgpXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkLmF1ZGlvLmluY2x1ZGVzKGdldEh6bShpdGVtLm5hbWUpKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5wbGF5VXJsICsgXFxcXFxcXCIjaXNNdXNpYz10cnVlI1xcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICgkLmltZy5pbmNsdWRlcyhnZXRIem0oaXRlbS5uYW1lKSkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHAgPSBkb3dubG9hZChwYXRoLCBpdGVtLm5hbWUpXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwXFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiZG93bmxvYWQ6Ly9cXFxcXFxcIiArIGl0ZW0ucGxheVVybFxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH0sIGl0ZW0sIGZpbGVzLCBwYXRoKVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogZmlsZU5hbWUsXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogZ2V0SXRlbShcXFxcXFxcInRpbWVcXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIpID09IFxcXFxcXFwiMFxcXFxcXFwiID8gaXRlbS5tb2RpZnlUaW1lU3RyIDogaXRlbS5tb2RpZnlUaW1lLFxcXFxuICAgICAgICAgICAgICAgIGltZzogaWNvbixcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbShcXFxcXFxcImNvbF90eXBlXFxcXFxcXCIsIFxcXFxcXFwiYXZhdGFyXFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpbmRleCArIFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuWIoOmZpOaWh+S7tlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHBhdGgsIG5hbWUpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFxcXFxcIuehruWumuWIoOmZpO+8n1xcXFxcXFwiKS5jb25maXJtKChwYXRoLCBuYW1lKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9jb2RlXFxcXFxcXCIpLmRlbGV0ZUZpbGUocGF0aCwgbmFtZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBhdGgsIG5hbWUpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXRoLCBpdGVtLm5hbWUpXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuS9v+eUqOWFtuWug+W6lOeUqOaJk+W8gFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHBhdGgsIGl0ZW0pID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coaXRlbSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2ViZGF2ID0gYnVpbGRXZWJEYXYocGF0aCwgZ2V0SXRlbShcXFxcXFxcInVzZXJcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIiksIGdldEl0ZW0oXFxcXFxcXCJwYXNzd2RcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHAgPSBcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvXFxcXFxcXCIgKyBpdGVtLm5hbWU7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViZGF2LmRvd25sb2FkKGl0ZW0ubmFtZSwgcClcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJvcGVuRmlsZTovL1xcXFxcXFwiICsgcFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGF0aCwgaXRlbSlcXFxcbiAgICAgICAgICAgICAgICAgICAgfV1cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgaWYgKGdldEl0ZW0oXFxcXFxcXCJkZXRhaWxcXFxcXFxcIiwgXFxcXFxcXCLlvIBcXFxcXFxcIikgPT0gXFxcXFxcXCLlvIBcXFxcXFxcIiAmJiBnZXRJdGVtKFxcXFxcXFwiY29sX3R5cGVcXFxcXFxcIiwgXFxcXFxcXCJhdmF0YXJcXFxcXFxcIikgPT0gXFxcXFxcXCJhdmF0YXJcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOKAneKAnTxzbWFsbD7igJzigJzigJ3igJ08Zm9udCBjb2xvcj0nI2FhYWFhYSc+XFxcXFxcXCIgKyAoZ2V0SXRlbShcXFxcXFxcInRpbWVcXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIpID09IFxcXFxcXFwiMFxcXFxcXFwiID8gaXRlbS5tb2RpZnlUaW1lU3RyIDogaXRlbS5tb2RpZnlUaW1lKSArIFxcXFxcXFwiPC9mb250Pjwvc21hbGw+XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogdXJsLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSBlbHNlIGlmIChnZXRJdGVtKFxcXFxcXFwiZGF2XFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpID09IFxcXFxcXFwiXFxcXFxcXCIgfHwgZ2V0SXRlbShcXFxcXFxcInVzZXJcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikgPT0gXFxcXFxcXCJcXFxcXFxcIiB8fCBnZXRJdGVtKFxcXFxcXFwicGFzc3dkXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuW9k+WJjeacquiuvue9rui0puWPt++8jOeCueaIkeiuvue9rlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9zZXR0aW5nc1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBcXFxcXFxcIuiuvue9rlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8xXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3NldHRpbmdzXFxcXFxcXCJcXFxcbiAgICAgICAgfSwge1xcXFxuICAgICAgICAgICAgdGl0bGU6IFxcXFxcXFwi5Ye66ZSZ5LqG77yM54K55Ye75Yi35pawXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG59IGNhdGNoIChlKSB7XFxcXG4gICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICB0b2FzdChcXFxcXFxcIueoi+W6j+mUmeivr++8ge+8ge+8geivt+aJk+W8gOaXpeW/l+afpeeci1xcXFxcXFwiKVxcXFxufVxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIue8lui+kVxcXCIsXFxcInBhdGhcXFwiOlxcXCJlZGl0XFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbmNvbnN0IHtcXFxcbiAgICBkb3dubG9hZFxcXFxufSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9jb2RlXFxcXFxcXCIpXFxcXG52YXIgcCA9IGRvd25sb2FkKGdldFBhcmFtKFxcXFxcXFwicGF0aFxcXFxcXFwiKSwgZ2V0UGFyYW0oXFxcXFxcXCJuYW1lXFxcXFxcXCIpKVxcXFxudmFyIGRlZmEgPSBmZXRjaChwKVxcXFxuZC5wdXNoKHtcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJpbnB1dFxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxcXG4gICAgICAgIGhlaWdodDogMTAsXFxcXG4gICAgICAgIGhpZ2hsaWdodDogdHJ1ZSxcXFxcbiAgICAgICAgZGVmYXVsdFZhbHVlOiBkZWZhLFxcXFxuICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcInRleHRcXFxcXFxcIiwgaW5wdXQpXFxcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKFxcXFxcXFwiYnV0dG9uXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogYOKAmOKAmOKAmeKAmTxiaWc+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojNkVCODk3XFxcXFxcXCI+5L+dIOWtmDwvc3Bhbj48L2JpZz48c3Ryb25nPjxmb250IGNvbG9yPVxcXFxcXFwiI0Y1NDM0M1xcXFxcXFwiPiDil4kgPC9mcm9udD48L3N0cm9uZz5gXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH1cXFxcbn0sIHtcXFxcbiAgICB0aXRsZTogYOKAmOKAmOKAmeKAmTxiaWc+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjojNkVCODk3XFxcXFxcXCI+5L+dIOWtmDwvc3Bhbj48L2JpZz5gLFxcXFxuICAgIHVybDogJCgpLmxhenlSdWxlKChkZWZhLCBuYW1lKSA9PiB7XFxcXG4gICAgICAgIGxldCB3ZWJkYXYgPSBidWlsZFdlYkRhdihnZXRQYXJhbShcXFxcXFxcInBhdGhcXFxcXFxcIiksIGdldEl0ZW0oXFxcXFxcXCJ1c2VyXFxcXFxcXCIpLCBnZXRJdGVtKFxcXFxcXFwicGFzc3dkXFxcXFxcXCIpKVxcXFxuICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL3dhLnR4dFxcXFxcXFwiLCBnZXRNeVZhcihcXFxcXFxcInRleHRcXFxcXFxcIiwgZGVmYSkpXFxcXG4gICAgICAgIHdlYmRhdi51cGxvYWQobmFtZSwgXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL3dhLnR4dFxcXFxcXFwiKVxcXFxuICAgICAgICB1cGRhdGVJdGVtKFxcXFxcXFwiYnV0dG9uXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBg4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFxcXFxcImNvbG9yOiM2RUI4OTdcXFxcXFxcIj7kv50g5a2YPC9zcGFuPjwvYmlnPmBcXFxcbiAgICAgICAgfSlcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kv53lrZjmiJDlip9cXFxcXFxcIlxcXFxuICAgIH0sIGRlZmEsIGdldFBhcmFtKFxcXFxcXFwibmFtZVxcXFxcXFwiKSksXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgIGV4dHJhOiB7XFxcXG4gICAgICAgIGlkOiBcXFxcXFxcImJ1dHRvblxcXFxcXFwiXFxcXG4gICAgfVxcXFxufSlcXFxcbnNldFJlc3VsdChkKTtcXFwifV1cIixcInByb3h5XCI6XCJcIn0iLCJ0aXRsZSI6IuW9k+WJjeacquiuvue9rui0puWPt++8jOeCueaIkeiuvue9riJ9
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement