Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔咔漫画@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5ZOU5ZKU5ryr55S7IiwiYXV0aG9yIjoiVHlyYW50R2VuZXNpcyIsInVybCI6Imhpa2VyOi8vZW1wdHkkJGZ5cGFnZSIsInZlcnNpb24iOjUsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoib3RoZXIiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbiQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpLmJhc2VQYXJzZSgpOyIsInNlYXJjaF91cmwiOiIiLCJncm91cCI6IlR5cmFudEciLCJzZWFyY2hGaW5kIjoiIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJwYyIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwicGljYWNnXCIsXCJwYXRoXCI6XCJwaWNhY2dcIixcInJ1bGVcIjpcImNvbnN0IHBpY2FjZyA9IHtcXG4gICAgLy8gQmFzZVVybDogXFxcImh0dHBzOi8vcGljYWFwaS5waWNhY29taWMuY29tL1xcXCIsXFxuICAgIC8vIGNkblVybDogXFxcImh0dHBzOi8vc3RvcmFnZS53aWthd2lrYS54eXovXFxcIixcXG4gICAgLy8gY2RuVXJsOiBcXFwiaHR0cHM6Ly9zdG9yYWdlLWIuZGl3b2Rpd28ueHl6L1xcXCIsXFxuICAvLyAgY2RuVXJsOiBcXFwiaHR0cHM6Ly9zMy5waWNhY29taWMuY29tL1xcXCIsXFxuLy9jZG5Vcmw6IFxcXCJodHRwOi8vcGljYWFwaS5waWNhY29taWMuY29tXFxcIixcXG5jZG5Vcmw6IFxcXCJodHRwczovL3N0b3JhZ2UuYmlkb2JpZG8ueHl6L1xcXCIsXFxuICAgIEJhc2VVcmw6IFxcXCJodHRwOi8vMTcyLjY3LjcuMjQvXFxcIixcXG4gICAgZW1wdHk6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgcGljYWNnX3BhdGg6IFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL1R5cmFudEdlbmVzaXNf5ZOU5ZKU6K6+572uLmpzXFxcIixcXG4gICAgc2VhcmNoSGlzdG9yeTogXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvVHlyYW50R2VuZXNpc1/lk5TlkpTmkJzntKLljoblj7IuanNcXFwiLFxcbiAgICBhcGlLZXk6IFxcXCJDNjlCQUY0MURBNUFCRDFGRkVEQzZEMkZFQTU2QlxcXCIsXFxuICAgIG5vbmNlOiBcXFwiYjFhYjg3YjQ4MDBkNGQ0NTkwYTExNzAxYjg1NTFhZmFcXFwiLFxcbiAgICBzZWNyZXRLZXk6IFxcXCJ+ZH0kUTckZUluaT1WKTlcXFxcXFxcXFJLL1AuUk00OzlbN3xAL0NBfWJ+T1chMz9FVmA6PD5NN3BkZFVCTDVufDAvKkNuXFxcIixcXG4gICAgZDogW10sXFxuICAgIGRhdGE6IHtcXG4gICAgICAgIHJhbmtUVDogZ2V0SXRlbSgncmFua1RUJywgJ0gyNCcpLFxcbiAgICAgICAgc29ydDogZ2V0SXRlbSgnc29ydCcsICd1YScpLFxcbiAgICAgICAgc2VhcmNoVmFsdWU6IGdldEl0ZW0oJ3NlYXJjaFZhbHVlJywgJycpLFxcbiAgICAgICAgc2VhcmNoSGlzdG9yeVNob3dTdGF0dXM6IGdldEl0ZW0oJ3NlYXJjaEhpc3RvcnlTaG93U3RhdHVzJywgJzAnKSxcXG4gICAgICAgIGluZm9UYWI6IGdldEl0ZW0oJ2luZm9UYWInLCAnMScpLFxcbiAgICAgICAgaW5mb1JldmVyc2U6IGdldEl0ZW0oJ2luZm9SZXZlcnNlJywgJzEnKSxcXG4gICAgfSxcXG4gICAgc2hhcmVfYWNjb3VudDoge1xcbiAgICAgICAgbmFtZTogJ2hpa2VyX3NoYXJlJyxcXG4gICAgICAgIHBhc3N3ZDogJ2hpa2VyX3NoYXJlXzEyMzQ1Njc4J1xcbiAgICB9LFxcbiAgICBkZWZhdWx0Q29uZmlnOiB7XFxuICAgICAgICBzZWFyY2hIaXN0b3J5TWF4OiAxMDAsXFxuICAgICAgICBzZWFyY2hIaXN0b3J5U2hvd0xpbWl0OiAyMCxcXG4gICAgfSxcXG4gICAgaW1hZ2VzOiBbXSxcXG4gICAgZXBpc29kZXM6IFtdLFxcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICBcXFwiYWNjZXB0XFxcIjogICAgICAgICAgICBcXFwiYXBwbGljYXRpb24vdm5kLnBpY2Fjb21pYy5jb20udjEranNvblxcXCIsXFxuICAgICAgICBcXFwiYXBwLWNoYW5uZWxcXFwiOiAgICAgICBcXFwiMlxcXCIsXFxuICAgICAgICBcXFwidGltZVxcXCI6ICAgICAgICAgICAgICAobmV3IERhdGUoKS5nZXRUaW1lKCkvMTAwMCkudG9GaXhlZCgwKSxcXG4gICAgICAgIFxcXCJhcHAtdmVyc2lvblxcXCI6ICAgICAgIFxcXCIyLjIuMS4yLjMuM1xcXCIsXFxuICAgICAgICBcXFwiYXBwLXV1aWRcXFwiOiAgICAgICAgICBcXFwiZGVmYXVsdFV1aWRcXFwiLFxcbiAgICAgICAgXFxcImFwcC1wbGF0Zm9ybVxcXCI6ICAgICAgXFxcImFuZHJvaWRcXFwiLFxcbiAgICAgICAgXFxcImFwcC1idWlsZC12ZXJzaW9uXFxcIjogXFxcIjQ0XFxcIixcXG4gICAgICAgIFxcXCJDb250ZW50LVR5cGVcXFwiOiAgICAgIFxcXCJhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04XFxcIixcXG4gICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogICAgICAgIFxcXCJva2h0dHAvMy44LjFcXFwiLFxcbiAgICAgICAgXFxcImltYWdlLXF1YWxpdHlcXFwiOiAgICAgXFxcIm9yaWdpbmFsXFxcIixcXG4gICAgICAgIFxcXCJIb3N0XFxcIjogICAgICAgICAgICAgIFxcXCJwaWNhYXBpLnBpY2Fjb21pYy5jb21cXFwiLFxcbiAgICB9LFxcbiAgICBlbmNyeXB0OiAodXJsLCB0cywgbWV0aG9kKSA9PiB7XFxuICAgICAgICBldmFsKGdldENyeXB0b0pTKCkpXFxuICAgICAgICBsZXQgcmF3ID0gdXJsLnJlcGxhY2UocGljYWNnLkJhc2VVcmwsIFxcXCJcXFwiKSArIHRzICsgcGljYWNnLm5vbmNlICsgbWV0aG9kICsgcGljYWNnLmFwaUtleVxcbiAgICAgICAgcmF3ID0gcmF3LnRvTG9jYWxlTG93ZXJDYXNlKClcXG4gICAgICAgIHJldHVybiBDcnlwdG9KUy5IbWFjU0hBMjU2KHJhdywgcGljYWNnLnNlY3JldEtleSkudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLkhleClcXG4gICAgfSxcXG4gICAgaHR0cFJlcXVlc3Q6IChwYXRoLCBtZXRob2QsIGRhdGEpID0+IHtcXG4gICAgICAgIGxldCByZXNwb25zZUpzb25cXG4gICAgICAgIGNvbnN0IHJlcXVlc3RfdXJsID0gcGljYWNnLkJhc2VVcmwgKyBwYXRoXFxuICAgICAgICBsZXQgaGVhZGVycyA9IHBpY2FjZy5oZWFkZXJzXFxuICAgICAgICBoZWFkZXJzWydhcGkta2V5J10gPSBwaWNhY2cuYXBpS2V5XFxuICAgICAgICBoZWFkZXJzLm5vbmNlID0gcGljYWNnLm5vbmNlXFxuICAgICAgICBoZWFkZXJzLnNpZ25hdHVyZSA9IHBpY2FjZy5lbmNyeXB0KHJlcXVlc3RfdXJsLCBoZWFkZXJzLnRpbWUsIG1ldGhvZClcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgaWYgKGZpbGVFeGlzdChwaWNhY2cucGljYWNnX3BhdGgpKSBoZWFkZXJzLmF1dGhvcml6YXRpb24gPSBmZXRjaChwaWNhY2cucGljYWNnX3BhdGgpLnNwbGl0KCdcXFxcbicpWzJdXFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKHBpY2FjZy5waWNhY2dfcGF0aCwgJycpXFxuICAgICAgICAgICAgdG9hc3QoJ+i0puWPt+W8guW4uCzor7fph43mlrDnmbvlvZUnKVxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgfVxcblxcbiAgICAgICAgcmVzcG9uc2VKc29uID0gbWV0aG9kID09PSAnR0VUJyA/IGZldGNoKHJlcXVlc3RfdXJsLCB7aGVhZGVyczogaGVhZGVyc30pIDogZmV0Y2gocmVxdWVzdF91cmwsIHtoZWFkZXJzOiBoZWFkZXJzLCBtZXRob2Q6IG1ldGhvZCwgYm9keTogZGF0YX0pXFxuXFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IEpTT04ucGFyc2UocmVzcG9uc2VKc29uKVxcblxcbiAgICAgICAgLy8g6Ieq5Yqo55m75b2VXFxuICAgICAgICBpZiAocmVzcG9uc2UuY29kZSA9PT0gNDAxICYmIHJlc3BvbnNlLmVycm9yID09PSAnMTAwNScpIHtcXG4gICAgICAgICAgICBsZXQgZW1haWwsIHBhc3N3b3JkXFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgaWYgKGZpbGVFeGlzdChwaWNhY2cucGljYWNnX3BhdGgpKSB7XFxuICAgICAgICAgICAgICAgICAgICBlbWFpbCA9IGZldGNoKHBpY2FjZy5waWNhY2dfcGF0aCkuc3BsaXQoJ1xcXFxuJylbMF1cXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkID0gZmV0Y2gocGljYWNnLnBpY2FjZ19wYXRoKS5zcGxpdCgnXFxcXG4nKVsxXVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICB3cml0ZUZpbGUocGljYWNnLnBpY2FjZ19wYXRoLCAnJylcXG4gICAgICAgICAgICAgICAgdG9hc3QoJ+i0puWPt+W8guW4uCzor7fph43mlrDnmbvlvZUnKVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoISBlbWFpbCB8fCAhIHBhc3N3b3JkKSB7XFxuICAgICAgICAgICAgICAgIHdyaXRlRmlsZShwaWNhY2cucGljYWNnX3BhdGgsICcnKVxcbiAgICAgICAgICAgICAgICB0b2FzdCgn6LSm5Y+35byC5bi4LOivt+mHjeaWsOeZu+W9lScpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgY29uc3QgYXV0b0xvZ2luUmVzcG9uc2UgPSBwaWNhY2cucG9zdCgnYXV0aC9zaWduLWluJywge1xcbiAgICAgICAgICAgICAgICAgICAgZW1haWw6IGVtYWlsLFxcbiAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IHBhc3N3b3JkLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBpZiAoYXV0b0xvZ2luUmVzcG9uc2UuY29kZSA9PT0gNDAwKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJysgKGF1dG9Mb2dpblJlc3BvbnNlLmRldGFpbCB8fCBhdXRvTG9naW5SZXNwb25zZS5tZXNzYWdlKVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGVtYWlsICsgJ1xcXFxuJyArIHBhc3N3b3JkICsgJ1xcXFxuJyArYXV0b0xvZ2luUmVzcG9uc2UuZGF0YS50b2tlblxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKHBpY2FjZy5waWNhY2dfcGF0aCwgc2V0dGluZylcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcXG4gICAgfSxcXG4gICAgZ2V0OiBwYXRoID0+IHBpY2FjZy5odHRwUmVxdWVzdChwYXRoLCAnR0VUJywgJycpLFxcbiAgICBwb3N0OiAocGF0aCwgZGF0YSkgPT4gcGljYWNnLmh0dHBSZXF1ZXN0KHBhdGgsICdQT1NUJywgZGF0YSksXFxuICAgIGJhc2VQYXJzZTogKCkgPT4ge1xcbiAgICAgICAgaWYgKCEgZmlsZUV4aXN0KHBpY2FjZy5waWNhY2dfcGF0aCkgfHwgISBmZXRjaChwaWNhY2cucGljYWNnX3BhdGgpKSB7XFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn55m75b2V5ZOU5ZKUJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmxvZ2luKClcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhozlk5TlkpQnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cucmVnaXN0ZXIoKVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKTtcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+WFseS6q+i0puWPt+eZu+W9lScsXFxuICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGljYWNnLnNoYXJlTG9naW4oKVxcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHVzZXJJbmZvID0gcGljYWNnLmdldCgndXNlcnMvcHJvZmlsZScpLmRhdGEudXNlclxcblxcbiAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn55So5oi344COJyt1c2VySW5mby5uYW1lKyfjgI8gIyDkuKrkurrkuK3lv4MnLFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vZ2l0LnR5cmFudGcuY29tL3R5cmFudGdlbmVzaXMvaGlrZXJWaWV3UnVsZXMvcmF3L21hc3Rlci9hc3NldHMvaW1hZ2VzL3BpY2EuanBnJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLnNldHRpbmdQYWdlKClcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lIyQkZnlwYWdlXFxcIikucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldFNlYXJjaCgpXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+ivt+i+k+WFpeWFs+mUruivjScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl8xX3NlYXJjaFxcXCIsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmjpLooYzmppwnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lI1xcXCIpLnJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRSYW5raW5nKClcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+maj+acuuacrOWtkCcsXFxuICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrXFxcIiNmdWxsVGhlbWUjJCRmeXBhZ2VcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0UmFuZG9tKClcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aIkeeahOaUtuiXjycsXFxuICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrXFxcIiNmdWxsVGhlbWUjJCRmeXBhZ2VcXFwiKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0RmF2b3VyaXRlKClcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwaWNhY2cuZ2V0Q2F0ZWdvcmllcygpXFxuICAgICAgICB9XFxuXFxuICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICB9LFxcbiAgICBsb2dpbjogKCkgPT4ge1xcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeeUqOaIt+WQjScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSBzZXRJdGVtKCdlbWFpbCcsIGlucHV0KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICBkZXNjOiAn6K+36L6T5YWl5a+G56CBJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHNldEl0ZW0oJ3Bhc3N3b3JkJywgaW5wdXQpXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcGljYWNnLnBvc3QoJ2F1dGgvc2lnbi1pbicsIHtcXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBnZXRJdGVtKCdlbWFpbCcsICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBnZXRJdGVtKCdwYXNzd29yZCcsICcnKSxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDQwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrIChyZXNwb25zZS5kZXRhaWwgfHwgcmVzcG9uc2UubWVzc2FnZSlcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSBnZXRJdGVtKCdlbWFpbCcsICcnKSArICdcXFxcbicgKyBnZXRJdGVtKCdwYXNzd29yZCcsICcnKSArICdcXFxcbicgK3Jlc3BvbnNlLmRhdGEudG9rZW5cXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShwaWNhY2cucGljYWNnX3BhdGgsIHNldHRpbmcpXFxuICAgICAgICAgICAgICAgICAgICB0b2FzdCgn55m75b2V5oiQ5YqfJylcXG4gICAgICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwaWNhY2cuZW1wdHlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuXFxuICAgIH0sXFxuICAgIHNoYXJlTG9naW46ICgpID0+IHtcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcGljYWNnLnBvc3QoJ2F1dGgvc2lnbi1pbicsIHtcXG4gICAgICAgICAgICBlbWFpbDogcGljYWNnLnNoYXJlX2FjY291bnQubmFtZSxcXG4gICAgICAgICAgICBwYXNzd29yZDogcGljYWNnLnNoYXJlX2FjY291bnQucGFzc3dkLFxcbiAgICAgICAgfSlcXG4gICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09PSA0MDAgfHwgcmVzcG9uc2UuY29kZSA9PT0gNDAxKSB7XFxuICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrIChyZXNwb25zZS5kZXRhaWwgfHwgcmVzcG9uc2UubWVzc2FnZSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY29uc3Qgc2V0dGluZyA9IGdldEl0ZW0oJ2VtYWlsJywgJycpICsgJ1xcXFxuJyArIGdldEl0ZW0oJ3Bhc3N3b3JkJywgJycpICsgJ1xcXFxuJyArcmVzcG9uc2UuZGF0YS50b2tlblxcbiAgICAgICAgICAgIHdyaXRlRmlsZShwaWNhY2cucGljYWNnX3BhdGgsIHNldHRpbmcpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eZu+W9leaIkOWKn1xcXCJcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgcmVnaXN0ZXI6ICgpID0+IHtcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXmmLXnp7AnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkgc2V0SXRlbSgnbmFtZScsIGlucHV0KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICBkZXNjOiAn6K+36L6T5YWl55So5oi35ZCNJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcbiAgICAgICAgICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHNldEl0ZW0oJ2VtYWlsJywgaW5wdXQpXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXlr4bnoIEnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkgc2V0SXRlbSgncGFzc3dvcmQnLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfms6jlhownLFxcbiAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cucG9zdCgnYXV0aC9yZWdpc3RlcicsIHtcXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBnZXRJdGVtKCdlbWFpbCcsICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBnZXRJdGVtKCdwYXNzd29yZCcsICcnKSxcXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGdldEl0ZW0oJ25hbWUnLCAnJyksXFxuICAgICAgICAgICAgICAgICAgICBiaXJ0aGRheTogJzE5NzAtMDEtMDEnLFxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZGVyOiAnZicsXFxuICAgICAgICAgICAgICAgICAgICBxdWVzdGlvbjE6ICdxdWVzdGlvbjEnLFxcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb24yOiAncXVlc3Rpb24yJyxcXG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uMzogJ3F1ZXN0aW9uMycsXFxuICAgICAgICAgICAgICAgICAgICBhbnN3ZXIxOiAnYW5zd2VyMScsXFxuICAgICAgICAgICAgICAgICAgICBhbnN3ZXIyOiAnYW5zd2VyMicsXFxuICAgICAgICAgICAgICAgICAgICBhbnN3ZXIzOiAnYW5zd2VyMycsXFxuICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09PSA0MDApIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nKyAocmVzcG9uc2UuZGV0YWlsIHx8IHJlc3BvbnNlLm1lc3NhZ2UpXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2dpblJlc3BvbnNlID0gcGljYWNnLnBvc3QoJ2F1dGgvc2lnbi1pbicsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogZ2V0SXRlbSgnZW1haWwnLCAnJyksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ6IGdldEl0ZW0oJ3Bhc3N3b3JkJywgJycpLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNldHRpbmcgPSBnZXRJdGVtKCdlbWFpbCcsICcnKSArICdcXFxcbicgKyBnZXRJdGVtKCdwYXNzd29yZCcsICcnKSArICdcXFxcbicgK2xvZ2luUmVzcG9uc2UuZGF0YS50b2tlblxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKHBpY2FjZy5waWNhY2dfcGF0aCwgc2V0dGluZylcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KCfms6jlhozmiJDlip/vvIzlt7Loh6rliqjnmbvlvZUnKVxcbiAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2FjZy5lbXB0eVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2UsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgZ2V0U2VhcmNoOiAoKSA9PiB7XFxuICAgICAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgnc29ydCcpXFxuICAgICAgICAgICAgY2xlYXJJdGVtKCdzZWFyY2hWYWx1ZScpXFxuICAgICAgICAgICAgY2xlYXJJdGVtKCdzZWFyY2hIaXN0b3J5U2hvd1N0YXR1cycpXFxuICAgICAgICB9KSlcXG5cXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyQkJylbMV1cXG5cXG4gICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxuICAgICAgICAgICAgICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLnNldFNlYXJjaEhpc3RvcnkoaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdzZWFyY2hWYWx1ZScsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn6K+36L6T5YWl5YWz6ZSu6K+NJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHBpY2FjZy5kYXRhLnNlYXJjaFZhbHVlLFxcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKCdzZWFyY2hWYWx1ZScsICcnKSAmJiAhIGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnc2VhcmNoVmFsdWUnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3NlYXJjaEhpc3RvcnlTaG93U3RhdHVzJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICBpZiAoISBwaWNhY2cuZGF0YS5zZWFyY2hWYWx1ZSkge1xcbiAgICAgICAgICAgICAgICBpZiAoZmlsZUV4aXN0KHBpY2FjZy5zZWFyY2hIaXN0b3J5KSAmJiBmZXRjaChwaWNhY2cuc2VhcmNoSGlzdG9yeSkpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaEhpc3RvcnkgPSBmZXRjaChwaWNhY2cuc2VhcmNoSGlzdG9yeSkuc3BsaXQoJ3x8JykuZmlsdGVyKGl0ZW0gPT4gaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5pCc57Si6K6w5b2V77yaJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgICAgICBsZXQgcGljYWNnQ29uZmlnID0gcGljYWNnLmRlZmF1bHRDb25maWdcXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEhpc3RvcnkuZm9yRWFjaCgoaGlzdG9yeSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGljYWNnLmRhdGEuc2VhcmNoSGlzdG9yeVNob3dTdGF0dXMgPT09ICcxJyB8fCAocGljYWNnLmRhdGEuc2VhcmNoSGlzdG9yeVNob3dTdGF0dXMgPT09ICcwJyAmJiBwaWNhY2dDb25maWcuc2VhcmNoSGlzdG9yeVNob3dMaW1pdCAtIGluZGV4ID49IDEpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGhpc3RvcnksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZShoaXN0b3J5ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5zZXRTZWFyY2hIaXN0b3J5KGhpc3RvcnkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnc2VhcmNoVmFsdWUnLCBoaXN0b3J5KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGhpc3RvcnkpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBpY2FjZy5kYXRhLnNlYXJjaEhpc3RvcnlTaG93U3RhdHVzID09PSAnMScgPyAn5oqY5Y+g6K6w5b2VJyA6ICflsZXlvIDorrDlvZUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKHBhcmFtcyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NlYXJjaEhpc3RvcnlTaG93U3RhdHVzJywgcGFyYW1zLnN0YXR1cyA/ICcwJyA6ICcxJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzOiBwaWNhY2cuZGF0YS5zZWFyY2hIaXN0b3J5U2hvd1N0YXR1cyA9PT0gJzEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5riF6Zmk6K6w5b2VJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZShwYXJhbXMgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUocGFyYW1zLmZpbGVuYW1lLCAnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU6IHBpY2FjZy5zZWFyY2hIaXN0b3J5XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICBjb25zdCBob3RfZGF0YSA9IHBpY2FjZy5nZXQoJ2tleXdvcmRzJylcXG4gICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfng63pl6jmkJzntKLvvJonLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgaG90X2RhdGEuZGF0YS5rZXl3b3Jkcy5mb3JFYWNoKGhvdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaG90LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKGhvdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5zZXRTZWFyY2hIaXN0b3J5KGhvdClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnc2VhcmNoVmFsdWUnLCBob3QpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaG90KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBwaWNhY2cubWFrZVNvcnQoKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHBpY2FjZy5nZXRTZWFyY2hSZXN1bHQocGFnZSwgJycpXFxuICAgIH0sXFxuICAgIGdldFNlYXJjaFJlc3VsdDogKHBhZ2UsIHZhbHVlKSA9PiB7XFxuICAgICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHZhbHVlID8gdmFsdWUgOiBwaWNhY2cuZGF0YS5zZWFyY2hWYWx1ZVxcbiAgICAgICAgaWYgKHNlYXJjaFZhbHVlKSB7XFxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cucG9zdCgnY29taWNzL2FkdmFuY2VkLXNlYXJjaD9wYWdlPScrcGFnZSwge1xcbiAgICAgICAgICAgICAgICBrZXl3b3JkOiBzZWFyY2hWYWx1ZSxcXG4gICAgICAgICAgICAgICAgc29ydDogcGljYWNnLmRhdGEuc29ydCxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY29taWNzLmRvY3MuZm9yRWFjaChjb21pYyA9PiB7XFxuICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbWljLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogY29taWMuYXV0aG9yLFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogLypjb21pYy50aHVtYi5maWxlU2VydmVyKi9waWNhY2cuY2RuVXJsKycvc3RhdGljLycrY29taWMudGh1bWIucGF0aCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrJyNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyQkZnlwYWdlJykucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRJbmZvKGlkKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBjb21pYy5faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIHNldFNlYXJjaEhpc3Rvcnk6IHZhbHVlID0+IHtcXG4gICAgICAgIGxldCBwaWNhY2dDb25maWcgPSBwaWNhY2cuZGVmYXVsdENvbmZpZ1xcbiAgICAgICAgbGV0IHNlYXJjaEhpc3RvcnkgPSBmZXRjaChwaWNhY2cuc2VhcmNoSGlzdG9yeSkuc3BsaXQoJ3x8JykuZmlsdGVyKGl0ZW0gPT4gaXRlbSlcXG5cXG4gICAgICAgIGlmIChzZWFyY2hIaXN0b3J5LmluY2x1ZGVzKHZhbHVlKSkge1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgaW4gc2VhcmNoSGlzdG9yeSkge1xcbiAgICAgICAgICAgICAgICBpZiAoc2VhcmNoSGlzdG9yeVtpXSA9PT0gdmFsdWUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEhpc3Rvcnkuc3BsaWNlKGksIDEpXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hIaXN0b3J5Lmxlbmd0aCA+PSBwaWNhY2dDb25maWcuc2VhcmNoSGlzdG9yeU1heCkge1xcbiAgICAgICAgICAgIHNlYXJjaEhpc3RvcnkgPSBzZWFyY2hIaXN0b3J5LnNsaWNlKDAsIHBpY2FjZ0NvbmZpZy5zZWFyY2hIaXN0b3J5TWF4IC0gMSlcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHNlYXJjaEhpc3RvcnkudW5zaGlmdCh2YWx1ZSlcXG4gICAgICAgIHdyaXRlRmlsZShwaWNhY2cuc2VhcmNoSGlzdG9yeSwgc2VhcmNoSGlzdG9yeS5qb2luKCd8fCcpKVxcbiAgICB9LFxcbiAgICBnZXRSYW5raW5nOiAoKSA9PiB7XFxuICAgICAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgncmFua1RUJylcXG4gICAgICAgIH0pKVxcbiAgICAgICAgY29uc3QgdGFicyA9IFtcXG4gICAgICAgICAgICB7dGl0bGU6ICcyNOWwj+aXticsIGlkOiAnSDI0J30sXFxuICAgICAgICAgICAge3RpdGxlOiAnN+WkqScsIGlkOiAnRDcnfSxcXG4gICAgICAgICAgICB7dGl0bGU6ICczMOWkqScsIGlkOiAnRDMwJ30sXFxuICAgICAgICBdXFxuICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+aOkuihjOamnCcsXFxuICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgfSlcXG4gICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgIH0pXFxuICAgICAgICB0YWJzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwaWNhY2cuZGF0YS5yYW5rVFQgPT09IGl0ZW0uaWQgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI2ZmMTQ5M1xcXCI+JytpdGVtLnRpdGxlKyc8L2ZvbnQ+PC9zdHJvbmc+JyA6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdyYW5rVFQnLCBpdGVtLmlkKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICB9KVxcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCdjb21pY3MvbGVhZGVyYm9hcmQ/dHQ9JytwaWNhY2cuZGF0YS5yYW5rVFQrJyZjdD1WQycpXFxuXFxuICAgICAgICByZXNwb25zZS5kYXRhLmNvbWljcy5mb3JFYWNoKGNvbWljID0+IHtcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGNvbWljLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBjb21pYy5hdXRob3IsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IC8qY29taWMudGh1bWIuZmlsZVNlcnZlciovcGljYWNnLmNkblVybCsnL3N0YXRpYy8nK2NvbWljLnRodW1iLnBhdGgsXFxuICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrJyNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyQkZnlwYWdlJykucnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0SW5mbyhpZClcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgIH0sIGNvbWljLl9pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgZ2V0UmFuZG9tOiAoKSA9PiB7XFxuICAgICAgICBjb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCckJCcpWzFdXFxuICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfpmo/mnLrmnKzlrZAnLFxcbiAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCdjb21pY3MvcmFuZG9tP3BhZ2U9JytwYWdlKVxcbiAgICAgICAgcmVzcG9uc2UuZGF0YS5jb21pY3MuZm9yRWFjaChjb21pYyA9PiB7XFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBjb21pYy50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogY29taWMuYXV0aG9yLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAvKmNvbWljLnRodW1iLmZpbGVTZXJ2ZXIqL3BpY2FjZy5jZG5VcmwrJy9zdGF0aWMvJytjb21pYy50aHVtYi5wYXRoLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KycjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMkJGZ5cGFnZScpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldEluZm8oaWQpXFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICB9LCBjb21pYy5faWQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIGdldEZhdm91cml0ZTogKCkgPT4ge1xcbiAgICAgICAgY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnJCQnKVsxXVxcbiAgICAgICAgaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oiR55qE5pS26JePJyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcGljYWNnLmdldCgndXNlcnMvZmF2b3VyaXRlP3M9ZGQmcGFnZT0nK3BhZ2UpXFxuICAgICAgICByZXNwb25zZS5kYXRhLmNvbWljcy5kb2NzLmZvckVhY2goY29taWMgPT4ge1xcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogY29taWMudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGNvbWljLmF1dGhvcixcXG4gICAgICAgICAgICAgICAgcGljX3VybDogLypjb21pYy50aHVtYi5maWxlU2VydmVyKi9waWNhY2cuY2RuVXJsKycvc3RhdGljLycrY29taWMudGh1bWIucGF0aCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSsnI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2UnKS5ydWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRJbmZvKGlkKVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KHBpY2FjZy5kKTtcXG4gICAgICAgICAgICAgICAgfSwgY29taWMuX2lkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBnZXRDYXRlZ29yaWVzOiAoKSA9PiB7XFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHBpY2FjZy5nZXQoJ2NhdGVnb3JpZXMnKVxcbiAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xcbiAgICAgICAgICAgIGNvbnN0IG5vX2ltYWdlID0gWyflpKflrrbpg73lnKjnnIsnLCAn6YKj5bm05LuK5aSpJywgJ+WumOaWuemDveWcqOeciyddO1xcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEuY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgcGljID0gbm9faW1hZ2UuaW5jbHVkZXMoY2F0ZS50aXRsZSkgPyAnaHR0cHM6Ly9naXQudHlyYW50Zy5jb20vdHlyYW50Z2VuZXNpcy9oaWtlclZpZXdSdWxlcy9yYXcvbWFzdGVyL2Fzc2V0cy9pbWFnZXMvcGljYS5qcGcnIDogLypjYXRlLnRodW1iLmZpbGVTZXJ2ZXIqLyhwaWNhY2cuY2RuVXJsKycvc3RhdGljLycrY2F0ZS50aHVtYi5wYXRoKVxcbiAgICAgICAgICAgICAgICBsZXQgZGVzYyA9IG5vX2ltYWdlLmluY2x1ZGVzKGNhdGUudGl0bGUpID8gJzAnIDogJzUnXFxuICAgICAgICAgICAgICAgIC8vIGxldCBkZXNjID0gJzMnXFxuICAgICAgICAgICAgICAgIGlmICghY2F0ZS5pc1dlYikge1xcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNhdGUudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSsnI25vSGlzdG9yeSMkJGZ5cGFnZScpLnJ1bGUoKHRpdGxlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRDb21pY3ModGl0bGUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY2F0ZS50aXRsZSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdjYXJkX3BpY18zJ1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIGdldENvbWljczogKHRpdGxlKSA9PiB7XFxuICAgICAgICBhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgnc29ydCcpXFxuICAgICAgICB9KSlcXG4gICAgICAgIGNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyQkJylbMV1cXG4gICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkgcGljYWNnLm1ha2VTb3J0KClcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcGljYWNnLmdldCgnY29taWNzP2M9JytlbmNvZGVVUklDb21wb25lbnQodGl0bGUpKycmcGFnZT0nK3BhZ2UrJyZzPScrcGljYWNnLmRhdGEuc29ydClcXG4gICAgICAgIGlmIChyZXNwb25zZS5jb2RlID09PSAyMDApIHtcXG4gICAgICAgICAgICByZXNwb25zZS5kYXRhLmNvbWljcy5kb2NzLmZvckVhY2goKGNvbWljLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjb21pYy50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGNvbWljLmF1dGhvcixcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IC8qY29taWMudGh1bWIuZmlsZVNlcnZlciovcGljYWNnLmNkblVybCsnL3N0YXRpYy8nK2NvbWljLnRodW1iLnBhdGgsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KycjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMkJGZ5cGFnZScpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0SW5mbyhpZClcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgY29taWMuX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBnZXRFcGlzb2Rlc1BpY3R1cmU6IChpZCwgcGFnZSkgPT4ge1xcbiAgICAgICAgY29uc3QgZXBpc29kZXNSZXMgPSBwaWNhY2cuZ2V0KCdjb21pY3MvJytpZCsnL2Vwcz9wYWdlPScrcGFnZSlcXG4gICAgICAgIGlmIChlcGlzb2Rlc1Jlcy5jb2RlID09PSAyMDAgJiYgZXBpc29kZXNSZXMuZGF0YS5lcHMuZG9jcy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgZXBpc29kZXNSZXMuZGF0YS5lcHMuZG9jcy5mb3JFYWNoKChlcCwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgcGljYWNnLmVwaXNvZGVzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGVwLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBlcC5vcmRlcixcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHBhZ2UgPSBwYWdlKzFcXG4gICAgICAgICAgICBwaWNhY2cuZ2V0RXBpc29kZXNQaWN0dXJlKGlkLCBwYWdlKVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBnZXRJbmZvOiAoaWQpID0+IHtcXG4gICAgICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJJdGVtKCdpbmZvVGFiJylcXG4gICAgICAgICAgICBjbGVhckl0ZW0oJ2luZm9SZXZlcnNlJylcXG4gICAgICAgIH0pKVxcbiAgICAgICAgY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnJCQnKVsxXVxcblxcbiAgICAgICAgaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCdjb21pY3MvJytpZClcXG4gICAgICAgICAgICBpZiAoISByZXNwb25zZS5kYXRhKSB7XFxuICAgICAgICAgICAgICAgIHRvYXN0KCfmvKvnlLvkv6Hmga/plJnor68nKVxcbiAgICAgICAgICAgICAgICBiYWNrKGZhbHNlKVxcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBjb25zdCBpbmZvID0gcmVzcG9uc2UuZGF0YS5jb21pY1xcblxcbiAgICAgICAgICAgIHNldFBhZ2VUaXRsZShpbmZvLnRpdGxlKVxcblxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5mby50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzpcXG4gICAgICAgICAgICAgICAgICAgICfinKgg5YiG57G777yaJytpbmZvLmNhdGVnb3JpZXMuam9pbignICcpKydcXFxcbicrXFxuICAgICAgICAgICAgICAgICAgICAn4p2k77iPIOWWnOasou+8micraW5mby5saWtlc0NvdW50KycgICAg8J+MkCDmtY/op4jvvJonK2luZm8udmlld3NDb3VudCsnXFxcXG4nK1xcbiAgICAgICAgICAgICAgICAgICAgJ/Cfjq8g6K+m5oOF77yaJytpbmZvLmRlc2NyaXB0aW9uLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAvKmluZm8udGh1bWIuZmlsZVNlcnZlciovcGljYWNnLmNkblVybCsnL3N0YXRpYy8nK2luZm8udGh1bWIucGF0aCxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkucnVsZSgoZGVzY3JpcHRpb24sIGltYWdlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfmnKzlrZDor6bmg4UnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaW1hZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBpbWFnZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRlc2NyaXB0aW9uLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbG9uZ190ZXh0J1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgfSwgaW5mby5kZXNjcmlwdGlvbiwgLyppbmZvLnRodW1iLmZpbGVTZXJ2ZXIqL3BpY2FjZy5jZG5VcmwrJy9zdGF0aWMvJytpbmZvLnRodW1iLnBhdGgpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S9nOiAhe+8micraW5mby5hdXRob3IsXFxuICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9naXQudHlyYW50Zy5jb20vdHlyYW50Z2VuZXNpcy9oaWtlclZpZXdSdWxlcy9yYXcvbWFzdGVyL2Fzc2V0cy9pbWFnZXMvcGljYS5qcGcnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eStcXFwiI2Z1bGxUaGVtZSMjbm9IaXN0b3J5IyQkZnlwYWdlXFxcIikucnVsZSgoYXV0aG9yKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzb3J0JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzZWFyY2hWYWx1ZScpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnJCQnKVsxXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLnNldFNlYXJjaEhpc3RvcnkoYXV0aG9yKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5qCH562+5pCc57Si77ya4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiI2ZmMTQ5M1xcXCI+JythdXRob3IrJzwvZm9udD48L3N0cm9uZz4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5tYWtlU29ydCgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRTZWFyY2hSZXN1bHQocGFnZSwgYXV0aG9yKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZm8uYXV0aG9yKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5LiK5Lyg77yaJytpbmZvLl9jcmVhdG9yLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbmZvLl9jcmVhdG9yLmF2YXRhciA/IC8qaW5mby5fY3JlYXRvci5hdmF0YXIuZmlsZVNlcnZlciovKHBpY2FjZy5jZG5VcmwrJy9zdGF0aWMvJytpbmZvLl9jcmVhdG9yLmF2YXRhci5wYXRoKSA6ICdodHRwczovL2dpdC50eXJhbnRnLmNvbS90eXJhbnRnZW5lc2lzL2hpa2VyVmlld1J1bGVzL3Jhdy9tYXN0ZXIvYXNzZXRzL2ltYWdlcy9waWNhLmpwZycsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2VcXFwiKS5ydWxlKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzb3J0JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzZWFyY2hWYWx1ZScpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnJCQnKVsxXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLnNldFNlYXJjaEhpc3RvcnkobmFtZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQocGFnZSkgPT09IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+agh+etvuaQnOe0ou+8muKAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiNmZjE0OTNcXFwiPicrbmFtZSsnPC9mb250Pjwvc3Ryb25nPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLm1ha2VTb3J0KClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldFNlYXJjaFJlc3VsdChwYWdlLCBuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgICAgIH0sIGluZm8uX2NyZWF0b3IubmFtZSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG4gICAgICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICAgICAgaWYgKGluZm8udGFncy5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgICAgICAgICBpbmZvLnRhZ3MuZm9yRWFjaCh0YWcgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGFnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5K1xcXCIjZnVsbFRoZW1lIyNub0hpc3RvcnkjJCRmeXBhZ2VcXFwiKS5ydWxlKCh0YWcpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzb3J0JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3NlYXJjaFZhbHVlJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnJCQnKVsxXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5zZXRTZWFyY2hIaXN0b3J5KHRhZylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+agh+etvuaQnOe0ou+8muKAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiNmZjE0OTNcXFwiPicrdGFnKyc8L2ZvbnQ+PC9zdHJvbmc+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5tYWtlU29ydCgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZ2V0U2VhcmNoUmVzdWx0KHBhZ2UsIHRhZylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGFnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG5cXG4gICAgICAgICAgICAvLyDpgJLlvZLojrflj5bpgInpm4ZcXG4gICAgICAgICAgICBwaWNhY2cuZ2V0RXBpc29kZXNQaWN0dXJlKGlkLCAxKVxcblxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaW5mby5pc0Zhdm91cml0ZSA/ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCJyZWRcXFwiPuWPlua2iOaUtuiXjzwvZm9udD48L3N0cm9uZz4nIDogJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiMwMGJmZmZcXFwiPuaUtuiXjzwvZm9udD48L3N0cm9uZz4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaWQsIGlzRmF2b3VyaXRlKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLnBvc3QoJ2NvbWljcy8nK2lkKycvZmF2b3VyaXRlJywge30pXFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChpc0Zhdm91cml0ZT8n5Y+W5raI5pS26JePJzon5pS26JeP5oiQ5YqfJylcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2FjZy5lbXB0eVxcbiAgICAgICAgICAgICAgICB9LCBpZCwgaW5mby5pc0Zhdm91cml0ZSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpbmZvLmlzTGlrZWQgPyAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwicmVkXFxcIj7lj5bmtojngrnotZ48L2ZvbnQ+PC9zdHJvbmc+JyA6ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjMDBiZmZmXFxcIj7ngrnotZ48L2ZvbnQ+PC9zdHJvbmc+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGlkLCBpc0xpa2VkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLnBvc3QoJ2NvbWljcy8nK2lkKycvbGlrZScsIHt9KVxcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoaXNMaWtlZD8n5Y+W5raI54K56LWeJzon54K56LWe5oiQ5YqfJylcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2FjZy5lbXB0eVxcbiAgICAgICAgICAgICAgICB9LCBpZCwgaW5mby5pc0xpa2VkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjZmYxNDkzXFxcIj7kuIvovb08L2ZvbnQ+PC9zdHJvbmc+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2Rvd25sb2FkLnZpZXcjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjI25vUmVmcmVzaCM/cnVsZT3mnKzlnLDotYTmupDnrqHnkIZcXFwiLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgY2hhcHRlckxpc3Q6IHBpY2FjZy5lcGlzb2RlcyxcXG4gICAgICAgICAgICAgICAgICAgIGluZm86e1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2tOYW1lOiBpbmZvLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVOYW1lOiBNWV9SVUxFLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2tUb3BQaWM6IC8qaW5mby50aHVtYi5maWxlU2VydmVyKi9waWNhY2cuY2RuVXJsKycvc3RhdGljLycraW5mby50aHVtYi5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlQ29kZTogJC50b1N0cmluZygoaWQsIHJ1bGVOYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZz9ydWxlPScrcnVsZU5hbWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwaWNhY2cuZ2V0UGljdHVyZShpZCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaWQsIE1ZX1JVTEUudGl0bGUpXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZpZXc6XFxcIjFcXFwiXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICBjb25zdCB0YWJzID0gW1xcbiAgICAgICAgICAgICAgICB7dGl0bGU6ICfnq6DoioInLCBpZDogJzEnfSxcXG4gICAgICAgICAgICAgICAge3RpdGxlOiAn5o6o6I2QJywgaWQ6ICcyJ30sXFxuICAgICAgICAgICAgICAgIHt0aXRsZTogJ+eci+ivhOiuuicsIGlkOiAnMyd9LFxcbiAgICAgICAgICAgICAgICB7dGl0bGU6ICflhpnor4TorronLCBpZDogJzQnfSxcXG4gICAgICAgICAgICBdXFxuXFxuICAgICAgICAgICAgdGFicy5mb3JFYWNoKHRhYiA9PiB7XFxuICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBpY2FjZy5kYXRhLmluZm9UYWIgPT09IHRhYi5pZCA/ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjZmYxNDkzXFxcIj4nK3RhYi50aXRsZSsnPC9mb250Pjwvc3Ryb25nPicgOiB0YWIudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgodGFiKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnaW5mb1RhYicsIHRhYi5pZClcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICB9LCB0YWIpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0pXFxuXFxuICAgICAgICAgICAgc3dpdGNoIChwaWNhY2cuZGF0YS5pbmZvVGFiKSB7XFxuICAgICAgICAgICAgICAgIGNhc2UgJzEnOlxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBpY2FjZy5kYXRhLmluZm9SZXZlcnNlID09PSAnMScgPyAn5b2T5YmN5o6S5bqP77ya5q2j5bqPJyA6ICflvZPliY3mjpLluo/vvJrlgJLluo8nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKChpbmZvUmV2ZXJzZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdpbmZvUmV2ZXJzZScsIGluZm9SZXZlcnNlID8gJzInIDogJzEnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHBpY2FjZy5kYXRhLmluZm9SZXZlcnNlID09PSAnMScpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHBpY2FjZy5kYXRhLmluZm9SZXZlcnNlID09PSAnMScgPyBwaWNhY2cuZXBpc29kZXMucmV2ZXJzZSgpIDogcGljYWNnLmVwaXNvZGVzXFxuXFxuICAgICAgICAgICAgICAgICAgICBkYXRhLmZvckVhY2goZXAgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZXAudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKChpZCwgb3JkZXIpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGljYWNnLmdldFBpY3R1cmUoaWQsIG9yZGVyKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpZCwgZXAudXJsKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICBjYXNlICcyJzpcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlY29tbWVuZGF0aW9uUmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCdjb21pY3MvJytpZCsnL3JlY29tbWVuZGF0aW9uJylcXG4gICAgICAgICAgICAgICAgICAgIHJlY29tbWVuZGF0aW9uUmVzcG9uc2UuZGF0YS5jb21pY3MuZm9yRWFjaChjb21pYyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjb21pYy50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogY29taWMuYXV0aG9yLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiAvKmNvbWljLnRodW1iLmZpbGVTZXJ2ZXIqL3BpY2FjZy5jZG5VcmwrJy9zdGF0aWMvJytjb21pYy50aHVtYi5wYXRoLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KycjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMkJGZ5cGFnZScpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmdldEluZm8oaWQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjb21pYy5faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgICAgICBjYXNlICc0JzpcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfor7fovpPlhaXor4TorronLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogNSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSBzZXRJdGVtKCdjb21tZW50JywgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5o+Q5Lqk6K+E6K66JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbWVudCA9IGdldEl0ZW0oJ2NvbW1lbnQnLCAnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEgY29tbWVudCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivt+Whq+WGmeivhOiuuidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbmRDb21tZW50UmVzcG9uc2UgPSBwaWNhY2cucG9zdCgnY29taWNzLycraWQrJy9jb21tZW50cycsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiBjb21tZW50XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbmRDb21tZW50UmVzcG9uc2UuY29kZSA9PT0gMjAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnaW5mb1RhYicsICczJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/or4TorrrmiJDlip8nXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nKyhzZW5kQ29tbWVudFJlc3BvbnNlLm1lc3NhZ2UgfHwgc2VuZENvbW1lbnRSZXNwb25zZS5kZXRhaWwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBpZCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgaWYgKHBpY2FjZy5kYXRhLmluZm9UYWIgPT09ICczJykge1xcbiAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50c1Jlc3BvbnNlID0gcGljYWNnLmdldCgnY29taWNzLycraWQrJy9jb21tZW50cz9wYWdlPScrcGFnZSlcXG4gICAgICAgICAgICAgICAgY29tbWVudHNSZXNwb25zZS5kYXRhLmNvbW1lbnRzLmRvY3MuZm9yRWFjaChjb21tZW50ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB1c2VyID0gY29tbWVudC5fdXNlclxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHVzZXIubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogdXNlci5hdmF0YXIgPy8qIHVzZXIuYXZhdGFyLmZpbGVTZXJ2ZXIqLyhwaWNhY2cuY2RuVXJsKycvc3RhdGljLycrdXNlci5hdmF0YXIucGF0aCkgOiAnaHR0cHM6Ly9naXQudHlyYW50Zy5jb20vdHlyYW50Z2VuZXNpcy9oaWtlclZpZXdSdWxlcy9yYXcvbWFzdGVyL2Fzc2V0cy9pbWFnZXMvcGljYS5qcGcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjb21tZW50LmNvbnRlbnQrJzxiciAvPicrICfinaTvuI8g5Zac5qyi77yaJytjb21tZW50Lmxpa2VzQ291bnQrJyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO/CfjJAg5Zue5aSN77yaJytjb21tZW50LmNvbW1lbnRzQ291bnQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbW1lbnQuaXNMaWtlZCA/ICflj5bmtojngrnotZ4nIDogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5wb3N0KCdjb21tZW50cy8nK2lkKycvbGlrZScsIHt9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aPkOS6pOaIkOWKnydcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBjb21tZW50Ll9pZCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn55yL5Zue5aSNJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KyckJGZ5cGFnZScpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyQkJylbMV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCdjb21tZW50cy8nK2lkKycvY2hpbGRyZW5zP3BhZ2U9JytwYWdlKVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5kYXRhLmNvbW1lbnRzLmRvY3MuZm9yRWFjaChjb21tZW50ID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1c2VyID0gY29tbWVudC5fdXNlclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHVzZXIubmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljX3VybDogdXNlci5hdmF0YXIgPyAoLyp1c2VyLmF2YXRhci5maWxlU2VydmVyKi9waWNhY2cuY2RuVXJsKycvc3RhdGljLycrdXNlci5hdmF0YXIucGF0aCkgOiAnaHR0cHM6Ly9naXQudHlyYW50Zy5jb20vdHlyYW50Z2VuZXNpcy9oaWtlclZpZXdSdWxlcy9yYXcvbWFzdGVyL2Fzc2V0cy9pbWFnZXMvcGljYS5qcGcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHBpY2FjZy5lbXB0eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjb21tZW50LmNvbnRlbnQrJzxiciAvPicrICfinaTvuI8g5Zac5qyi77yaJytjb21tZW50Lmxpa2VzQ291bnQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbW1lbnQuaXNMaWtlZCA/ICflj5bmtojngrnotZ4nIDogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5wb3N0KCdjb21tZW50cy8nK2lkKycvbGlrZScsIHt9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aPkOS6pOaIkOWKnydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBjb21tZW50Ll9pZCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNvbW1lbnQuX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflhpnlm57lpI0nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeivhOiuuicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkgc2V0SXRlbSgnY29tbWVudCcsIGlucHV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmj5DkuqTor4TorronLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tZW50ID0gZ2V0SXRlbSgnY29tbWVudCcsICcnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIGNvbW1lbnQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivt+Whq+WGmeivhOiuuidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZW5kQ29tbWVudFJlc3BvbnNlID0gcGljYWNnLnBvc3QoJ2NvbW1lbnRzLycraWQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGNvbW1lbnRcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlbmRDb21tZW50UmVzcG9uc2UuY29kZSA9PT0gMjAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+ivhOiuuuaIkOWKnydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nKyhzZW5kQ29tbWVudFJlc3BvbnNlLm1lc3NhZ2UgfHwgc2VuZENvbW1lbnRSZXNwb25zZS5kZXRhaWwpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBpZCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNvbW1lbnQuX2lkKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMycsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgLypwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S4vuaKpScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5wb3N0KCdjb21pY3MvJytpZCsnL3JlcG9ydCcsIHt9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5o+Q5Lqk5oiQ5YqfJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlkKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCcsXFxuICAgICAgICAgICAgICAgICAgICB9KSovXFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcblxcbiAgICB9LFxcbiAgICBnZXRSZWN1cnNpb25QaWN0dXJlOiAoaWQsIG9yZGVyLCBwYWdlKSA9PiB7XFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHBpY2FjZy5nZXQoJ2NvbWljcy8nK2lkKycvb3JkZXIvJytvcmRlcisnL3BhZ2VzP3BhZ2U9JytwYWdlKVxcbiAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDIwMCAmJiByZXNwb25zZS5kYXRhLnBhZ2VzLmRvY3MubGVuZ3RoID4gMCkge1xcbiAgICAgICAgICAgIHJlc3BvbnNlLmRhdGEucGFnZXMuZG9jcy5mb3JFYWNoKChwYWdlLCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwaWNhY2cuaW1hZ2VzLnB1c2goLypwYWdlLm1lZGlhLmZpbGVTZXJ2ZXIqL3BpY2FjZy5jZG5VcmwrJy9zdGF0aWMvJytwYWdlLm1lZGlhLnBhdGgpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBwYWdlID0gcGFnZSsxXFxuICAgICAgICAgICAgcGljYWNnLmdldFJlY3Vyc2lvblBpY3R1cmUoaWQsIG9yZGVyLCBwYWdlKVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBnZXRQaWN0dXJlOiAoaWQsIG9yZGVyKSA9PiB7XFxuICAgICAgICAvLyDpgJLlvZLojrflj5blhoXlrrlcXG4gICAgICAgIHBpY2FjZy5nZXRSZWN1cnNpb25QaWN0dXJlKGlkLCBvcmRlciwgMSlcXG4gICAgICAgIHJldHVybiAncGljczovLycrcGljYWNnLmltYWdlcy5qb2luKCcmJicpXFxuICAgIH0sXFxuICAgIG1ha2VTb3J0OiAoKSA9PiB7XFxuICAgICAgICBjb25zdCB0YWJzID0gW1xcbiAgICAgICAgICAgIHt0aXRsZTogJ+m7mOiupOaOkuW6jycsIGlkOiAndWEnfSxcXG4gICAgICAgICAgICB7dGl0bGU6ICfmlrDliLDml6cnLCBpZDogJ2RkJ30sXFxuICAgICAgICAgICAge3RpdGxlOiAn5pen5Yiw5pawJywgaWQ6ICdkYSd9LFxcbiAgICAgICAgICAgIHt0aXRsZTogJ+acgOWkmueIseW/gycsIGlkOiAnbGQnfSxcXG4gICAgICAgICAgICB7dGl0bGU6ICfmnIDlpJrmjIflkI0nLCBpZDogJ3ZkJ30sXFxuICAgICAgICBdO1xcblxcbiAgICAgICAgdGFicy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGljYWNnLmRhdGEuc29ydCA9PT0gaXRlbS5pZCA/ICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCIjZmYxNDkzXFxcIj4nK2l0ZW0udGl0bGUrJzwvZm9udD48L3N0cm9uZz4nIDogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKHBpY2FjZy5lbXB0eSkubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NvcnQnLCBpdGVtLmlkKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcblxcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaycsXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBzZXR0aW5nUGFnZTogKCkgPT4ge1xcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfnrb7liLAnLFxcbiAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cucG9zdCgndXNlcnMvcHVuY2gtaW4nLCB7fSlcXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09IDIwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+etvuWIsOaIkOWKnydcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nKyAocmVzcG9uc2UubWVzc2FnZSB8fCByZXNwb25zZS5kZXRhaWwpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KVxcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfmiJHnmoTor4TorronLFxcbiAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkrJyQkZnlwYWdlJykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyQkJylbMV1cXG4gICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwaWNhY2cuZ2V0KCd1c2Vycy9teS1jb21tZW50cz9wYWdlPScrcGFnZSlcXG5cXG4gICAgICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5jb21tZW50cy5kb2NzLmZvckVhY2goY29tbWVudCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXNlciA9IGNvbW1lbnQuX3VzZXJcXG4gICAgICAgICAgICAgICAgICAgIGlmICh1c2VyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB1c2VyLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IHVzZXIuYXZhdGFyID8gKC8qdXNlci5hdmF0YXIuZmlsZVNlcnZlciovcGljYWNnLmNkblVybCsnL3N0YXRpYy8nK3VzZXIuYXZhdGFyLnBhdGgpIDogJ2h0dHBzOi8vZ2l0LnR5cmFudGcuY29tL3R5cmFudGdlbmVzaXMvaGlrZXJWaWV3UnVsZXMvcmF3L21hc3Rlci9hc3NldHMvaW1hZ2VzL3BpY2EuanBnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwaWNhY2cuZW1wdHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBwaWNhY2cuZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogY29tbWVudC5jb250ZW50Kyc8YnIgLz4nKyAn4p2k77iPIOWWnOasou+8micrY29tbWVudC5saWtlc0NvdW50LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjb21tZW50LmlzTGlrZWQgPyAn5Y+W5raI54K56LWeJyA6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwaWNhY2cgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9waWNhY2cnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNhY2cucG9zdCgnY29tbWVudHMvJytpZCsnL2xpa2UnLCB7fSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mj5DkuqTmiJDlip8nXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgY29tbWVudC5faWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHBpY2FjZy5kLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5p+l55yL5ryr55S7JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQocGljYWNnLmVtcHR5KycjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMkJGZ5cGFnZScpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBpY2FjZyA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3BpY2FjZycpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2FjZy5nZXRJbmZvKGlkKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQocGljYWNnLmQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGNvbW1lbnQuX2NvbWljLl9pZCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJyxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChwaWNhY2cuZClcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KVxcbiAgICAgICAgcGljYWNnLmQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfpgIDlh7rnmbvlvZUnLFxcbiAgICAgICAgICAgIHVybDogJChwaWNhY2cuZW1wdHkpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGljYWNnID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvcGljYWNnJylcXG4gICAgICAgICAgICAgICAgd3JpdGVGaWxlKHBpY2FjZy5waWNhY2dfcGF0aCwgJycpXFxuICAgICAgICAgICAgICAgIHRvYXN0KCfpgIDlh7rnmbvlvZUnKVxcbiAgICAgICAgICAgICAgICBiYWNrKHRydWUpXFxuICAgICAgICAgICAgICAgIHJldHVybiBwaWNhY2cuZW1wdHlcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KVxcbiAgICB9LFxcbn1cXG5cXG4kLmV4cG9ydHMgPSBwaWNhY2dcXG5cIn1dIiwiaWNvbiI6Imh0dHBzOi8vZ2l0LnR5cmFudGcuY29tL3R5cmFudGdlbmVzaXMvaGlrZXJWaWV3UnVsZXMvcmF3L21hc3Rlci9hc3NldHMvaW1hZ2VzL3BpY2EuanBnIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment