xiaomianao666

小程序:PikPak

May 4th, 2024
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@PikPak@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiUGlrUGFrIiwiYXV0aG9yIjoi57KJ5aa5IiwidXJsIjoiaGlrZXI6Ly9lbXB0eSIsInZlcnNpb24iOjAsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbiQucmVxdWlyZShcImhpa2VyOi8vcGFnZS9TaG93XCIpIiwic2VhcmNoX3VybCI6Imhpa2VyOi8vKioiLCJncm91cCI6IuinhumikSIsInNlYXJjaEZpbmQiOiJqczpcclxudmFyIHJlcyA9IFtdXHJcbmNvbnN0IHtzZWFyY2hfbGlzdH0gPSAkLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2UvU2VhcmNoXCIpXHJcbnNlYXJjaF9saXN0KE1ZX1VSTC5yZXBsYWNlKFwiaGlrZXI6Ly9cIiwgXCJcIikscmVzKVxyXG5wdXRNeVZhcihcInNlYXJjaF8xXCIsIFwiMVwiKVxyXG5zZXRSZXN1bHQocmVzKSIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxyXG4vLyAkLmxvZyhNWV9VUkwpXHJcbnNldFBhZ2VUaXRsZShcIuaQnOe0olwiKVxyXG52YXIgcmVzID0gW11cclxudmFyIHNlYXJjaF9yb290X2l0ZW0gPSBNWV9VUkwuc3BsaXQoJyYmJicpXHJcbmNvbnN0IHsgZ2VuZXJhdGVfcGF0aHMgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL1BhdGgnKVxyXG5jb25zdCB7IGdlbmVyYXRlX2xpc3QgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0xpc3QnKVxyXG5cclxuaWYgKGdldE15VmFyKCdzZWFyY2hfMScsICcwJykgPT0gXCIxXCIpIHtcclxuICAgIC8vIOiOt+WPluaJgOacieaWh+S7tuWkuS/mlofku7bliJfooahcclxuICAgIGNvbnN0IHsgZ2V0X2l0ZW1zX2xpc3QgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0FQSScpXHJcbiAgICBsZXQgbGlzdCA9IGdldF9pdGVtc19saXN0KCcqJylcclxuICAgIGxldCBzX2l0ZW0gPSB7fVxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGk8IGxpc3QuZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoKGxpc3QuZmlsZXMpW2ldLmlkID09IHNlYXJjaF9yb290X2l0ZW1bMV0pIHtcclxuICAgICAgICAgICAgc19pdGVtID0gKGxpc3QuZmlsZXMpW2ldXHJcbiAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8g5pCc57Si57uT5p6c5YiX6KGo6aG555uu5piv5paH5Lu25aS577yM6YCS5b2S566X5Ye66Lev5b6EXHJcbiAgICBmdW5jdGlvbiBzZWFyY2hfbGlzdF9mb2xkZXJfcGF0aHMoc19wYXRocywgbGlzdCwgaXRlbSkge1xyXG4gICAgICAgICQubG9nKHNfcGF0aHMpXHJcbiAgICAgICAgc19wYXRocy51bnNoaWZ0KHtcclxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXHJcbiAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmIChpdGVtLnBhcmVudF9pZCA9PSAnJykge1xyXG4gICAgICAgICAgICBzX3BhdGhzLnVuc2hpZnQoe1xyXG4gICAgICAgICAgICAgICAgaWQ6ICcnLFxyXG4gICAgICAgICAgICAgICAgbmFtZTogJ2hvbWUnLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgc19pdGVtID0ge31cclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobGlzdFtpXS5pZCA9PSBpdGVtLnBhcmVudF9pZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNfaXRlbSA9IGxpc3RbaV1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzZWFyY2hfbGlzdF9mb2xkZXJfcGF0aHMoc19wYXRocywgbGlzdCwgc19pdGVtKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBzX3BhdGhzID0gW11cclxuICAgIHNlYXJjaF9saXN0X2ZvbGRlcl9wYXRocyhzX3BhdGhzLCBsaXN0LmZpbGVzLCBzX2l0ZW0pXHJcbiAgICBzdG9yYWdlMC5wdXRNeVZhcignc19wYXRocycsIHNfcGF0aHMpXHJcbiAgICAvLyDpnaLljIXlsZHot6/lvoQo5oyJ6ZKuKVxyXG4gICAgZ2VuZXJhdGVfcGF0aHMocmVzLCAnc19wYXRocycsIHNlYXJjaF9yb290X2l0ZW1bMl0pXHJcbiAgICAvLyDliJfooajmoI9cclxuICAgIGdlbmVyYXRlX2xpc3QocmVzLCAnc19wYXRocycpXHJcbn0gZWxzZSB7XHJcbiAgICAvLyDpnaLljIXlsZHot6/lvoQo5oyJ6ZKuKVxyXG4gICAgZ2VuZXJhdGVfcGF0aHMocmVzLCAnc19wYXRocycsIHNlYXJjaF9yb290X2l0ZW1bMl0pXHJcbiAgICAvLyDliJfooajmoI9cclxuICAgIGdlbmVyYXRlX2xpc3QocmVzLCAnc19wYXRocycpXHJcbn1cclxuXHJcbi8vIHZhciByZXMgPSBbXVxyXG4vLyAvLyB2YXIgaXRlbV9raW5kID0gTVlfVVJMLnJlcGxhY2UoJ2hpa2VyOi8vJywgJycpXHJcbi8vIGNvbnN0IHsgZ2VuZXJhdGVfcGF0aHMgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL1BhdGgnKVxyXG4vLyBjb25zdCB7IGdlbmVyYXRlX2xpc3QgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0xpc3QnKVxyXG5cclxuLy8gLy8g6Z2i5YyF5bGR6Lev5b6EKOaMiemSrilcclxuLy8gZ2VuZXJhdGVfcGF0aHMoXCJzX3BhdGhzXCIsIHJlcylcclxuXHJcbi8vIC8vIOWIl+ihqOagj1xyXG4vLyBnZW5lcmF0ZV9saXN0KFwic19wYXRoc1wiLCByZXMpXHJcblxyXG4vLyAvLyDotbfpo55cclxuc2V0UmVzdWx0KHJlcylcclxuIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiLy8g5omp5bGVJOWvueixoeeahOWxnuaAp1xuJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvRXh0ZW5kJylcblxuXG5cbi8vIOmcgOimgeS4gOebtOWIt+aWsOiOt+WPluacgOaWsEF1dGhvcml6YXRpb27vvIzmiYDku6XmlL7pooTliqDovb1cbmNvbnN0IHsgcmVmcmVzaF9hdXRob3JpemF0aW9uLCBjbGVhcl91c2VyX2luZm8gfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0FQSScpXG4vLyBjbGVhcl91c2VyX2luZm8oKVxucmVmcmVzaF9hdXRob3JpemF0aW9uKGdldEl0ZW0oJ3VzZXJuYW1lJywgJycpLCBnZXRJdGVtKCdwYXNzd2QnLCAnJykpXG4iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiQVBJXCIsXCJwYXRoXCI6XCJBUElcIixcInJ1bGVcIjpcIi8vIOa4hemZpOeZu+W9leS/oeaBr1xcclxcbmZ1bmN0aW9uIGNsZWFyX3VzZXJfaW5mbygpIHtcXHJcXG4gICAgY2xlYXJJdGVtKCd1c2VybmFtZScpXFxyXFxuICAgIGNsZWFySXRlbSgncGFzc3dkJylcXHJcXG4gICAgY2xlYXJJdGVtKCdhY2Nlc3NfdG9rZW4nKVxcclxcbiAgICBjbGVhckl0ZW0oJ3JlZnJlc2hfdG9rZW4nKVxcclxcbn1cXHJcXG5cXHJcXG4vLyDnmbvlvZVcXHJcXG5mdW5jdGlvbiBsb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpIHtcXHJcXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoXFxyXFxuICAgICAgICBwb3N0KCdodHRwczovL3VzZXIubXlwaWtwYWsuY29tL3YxL2F1dGgvc2lnbmluJywge1xcclxcbiAgICAgICAgICAgIGJvZHk6IHtcXHJcXG4gICAgICAgICAgICAgICAgY2FwdGNoYV90b2tlbjogJycsXFxyXFxuICAgICAgICAgICAgICAgIGNsaWVudF9pZDogJ1lOeFQ5dzdHTWRXdkVPS2EnLFxcclxcbiAgICAgICAgICAgICAgICAvLyBcXFwiY2xpZW50X3NlY3JldFxcXCI6IFxcXCJkYncyT3RtVkVldVV2SXB0YjFDb3lnXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxcclxcbiAgICAgICAgICAgICAgICBwYXNzd29yZDogcGFzc3dvcmQsXFxyXFxuICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgIH0pXFxyXFxuICAgIClcXHJcXG4gICAgaWYgKHJlcy5hY2Nlc3NfdG9rZW4pIHtcXHJcXG4gICAgICAgIHNldEl0ZW0oJ2FjY2Vzc190b2tlbicsIHJlcy5hY2Nlc3NfdG9rZW4pXFxyXFxuICAgICAgICBzZXRJdGVtKCdyZWZyZXNoX3Rva2VuJywgcmVzLnJlZnJlc2hfdG9rZW4pXFxyXFxuICAgICAgICByZXR1cm4gdHJ1ZVxcclxcbiAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgbG9nKHJlcylcXHJcXG4gICAgICAgIHJldHVybiBmYWxzZVxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbi8vIOWIt+aWsGF1dGhvcml6YXRpb25cXHJcXG5mdW5jdGlvbiByZWZyZXNoX2F1dGhvcml6YXRpb24odXNlcm5hbWUsIHBhc3N3b3JkKSB7XFxyXFxuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKFxcclxcbiAgICAgICAgcG9zdCgnaHR0cHM6Ly91c2VyLm15cGlrcGFrLmNvbS92MS9hdXRoL3NpZ25pbicsIHtcXHJcXG4gICAgICAgICAgICBib2R5OiB7XFxyXFxuICAgICAgICAgICAgICAgIGNhcHRjaGFfdG9rZW46ICcnLFxcclxcbiAgICAgICAgICAgICAgICBjbGllbnRfaWQ6ICdZTnhUOXc3R01kV3ZFT0thJyxcXHJcXG4gICAgICAgICAgICAgICAgY2xpZW50X3NlY3JldDogJ2RidzJPdG1WRWV1VXZJcHRiMUNveWcnLFxcclxcbiAgICAgICAgICAgICAgICB1c2VybmFtZTogdXNlcm5hbWUsXFxyXFxuICAgICAgICAgICAgICAgIHBhc3N3b3JkOiBwYXNzd29yZCxcXHJcXG4gICAgICAgICAgICB9LFxcclxcbiAgICAgICAgfSlcXHJcXG4gICAgKVxcclxcbiAgICBpZiAocmVzLmFjY2Vzc190b2tlbikge1xcclxcbiAgICAgICAgc2V0SXRlbSgnYWNjZXNzX3Rva2VuJywgcmVzLmFjY2Vzc190b2tlbilcXHJcXG4gICAgICAgIHNldEl0ZW0oJ3JlZnJlc2hfdG9rZW4nLCByZXMucmVmcmVzaF90b2tlbilcXHJcXG4gICAgICAgIHJldHVybiB0cnVlXFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICBsb2cocmVzKVxcclxcbiAgICAgICAgcmV0dXJuIGZhbHNlXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8g6I635Y+W55So5oi35Z+65pys5L+h5oGvXFxyXFxuZnVuY3Rpb24gZ2V0X3VzZXJfYmFzZV9pbmZvKCkge1xcclxcbiAgICByZXR1cm4gSlNPTi5wYXJzZShcXHJcXG4gICAgICAgIHJlcXVlc3QoYnVpbGRVcmwoJ2h0dHBzOi8vdXNlci5teXBpa3Bhay5jb20vdjEvdXNlci9tZScsIHt9KSwge1xcclxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXHJcXG4gICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgZ2V0SXRlbSgnYWNjZXNzX3Rva2VuJyksXFxyXFxuICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgIH0pXFxyXFxuICAgIClcXHJcXG59XFxyXFxuXFxyXFxuLy8g6I635Y+W55So5oi3VklQ5L+h5oGvXFxyXFxuZnVuY3Rpb24gZ2V0X3VzZXJfdmlwX2luZm8oKSB7XFxyXFxuICAgIHJldHVybiBKU09OLnBhcnNlKFxcclxcbiAgICAgICAgcmVxdWVzdChcXHJcXG4gICAgICAgICAgICBidWlsZFVybCgnaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL3ZpcC92MS9zcGFjZS9saXN0Jywge1xcclxcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3BhY2UnLFxcclxcbiAgICAgICAgICAgIH0pLFxcclxcbiAgICAgICAgICAgIHtcXHJcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcclxcbiAgICAgICAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbjogJ0JlYXJlciAnICsgZ2V0SXRlbSgnYWNjZXNzX3Rva2VuJyksXFxyXFxuICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgKVxcclxcbiAgICApXFxyXFxufVxcclxcblxcclxcbi8vIOiOt+WPlumCgOivt+eggVxcclxcbmZ1bmN0aW9uIGdldF91c2VyX2ludml0ZUNvZGUoKSB7XFxyXFxuICAgIHJldHVybiBKU09OLnBhcnNlKFxcclxcbiAgICAgICAgcmVxdWVzdChidWlsZFVybCgnaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL3ZpcC92MS9hY3Rpdml0eS9pbnZpdGVDb2RlJywge30pLCB7XFxyXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcclxcbiAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyBnZXRJdGVtKCdhY2Nlc3NfdG9rZW4nKSxcXHJcXG4gICAgICAgICAgICB9LFxcclxcbiAgICAgICAgfSlcXHJcXG4gICAgKVxcclxcbn1cXHJcXG5cXHJcXG4vLyDojrflj5bmlofku7blpLkv5paH5Lu25YiX6KGoXFxyXFxuZnVuY3Rpb24gZ2V0X2l0ZW1zX2xpc3QocGFyZW50X2lkKSB7XFxyXFxuICAgIHJldHVybiBKU09OLnBhcnNlKFxcclxcbiAgICAgICAgcmVxdWVzdChcXHJcXG4gICAgICAgICAgICBidWlsZFVybCgnaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL2RyaXZlL3YxL2ZpbGVzJywge1xcclxcbiAgICAgICAgICAgICAgICBwYXJlbnRfaWQ6IHBhcmVudF9pZCxcXHJcXG4gICAgICAgICAgICAgICAgdGh1bWJuYWlsX3NpemU6ICdTSVpFX0xBUkdFJyxcXHJcXG4gICAgICAgICAgICAgICAgd2l0aF9hdWRpdDogJ3RydWUnLFxcclxcbiAgICAgICAgICAgICAgICBsaW1pdDogJzEwMDAnLFxcclxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiAne1xcXCJwaGFzZVxcXCI6e1xcXCJlcVxcXCI6XFxcIlBIQVNFX1RZUEVfQ09NUExFVEVcXFwifSxcXFwidHJhc2hlZFxcXCI6e1xcXCJlcVxcXCI6ZmFsc2V9fScsXFxyXFxuICAgICAgICAgICAgfSksXFxyXFxuICAgICAgICAgICAge1xcclxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiAnQmVhcmVyICcgKyBnZXRJdGVtKCdhY2Nlc3NfdG9rZW4nKSxcXHJcXG4gICAgICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICApXFxyXFxuICAgIClcXHJcXG59XFxyXFxuXFxyXFxuLy8g6I635Y+W5paH5Lu255u06ZO+XFxyXFxuZnVuY3Rpb24gZ2V0X2l0ZW1fdXJsKGl0ZW1faWQpIHtcXHJcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UoXFxyXFxuICAgICAgICByZXF1ZXN0KFxcclxcbiAgICAgICAgICAgIGJ1aWxkVXJsKFxcclxcbiAgICAgICAgICAgICAgICBgaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL2RyaXZlL3YxL2ZpbGVzLyR7aXRlbV9pZH0/X21hZ2ljPTIwMjEmdGh1bWJuYWlsX3NpemU9U0laRV9MQVJHRWAsXFxyXFxuICAgICAgICAgICAgICAgIHt9XFxyXFxuICAgICAgICAgICAgKSxcXHJcXG4gICAgICAgICAgICB7XFxyXFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIGdldEl0ZW0oJ2FjY2Vzc190b2tlbicpLFxcclxcbiAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIClcXHJcXG4gICAgKVxcclxcbn1cXHJcXG5cXHJcXG4kLmV4cG9ydHMgPSB7XFxyXFxuICAgIHJlZnJlc2hfYXV0aG9yaXphdGlvbixcXHJcXG4gICAgZ2V0X3VzZXJfYmFzZV9pbmZvLFxcclxcbiAgICBnZXRfdXNlcl92aXBfaW5mbyxcXHJcXG4gICAgY2xlYXJfdXNlcl9pbmZvLFxcclxcbiAgICBnZXRfdXNlcl9pbnZpdGVDb2RlLFxcclxcbiAgICBnZXRfaXRlbXNfbGlzdCxcXHJcXG4gICAgZ2V0X2l0ZW1fdXJsLFxcclxcbiAgICBsb2dpbixcXHJcXG59XFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJTaG93XCIsXCJwYXRoXCI6XCJTaG93XCIsXCJydWxlXCI6XCJ2YXIgcmVzID0gW11cXHJcXG5jb25zdCB7IGdldF91c2VyX2Jhc2VfaW5mbywgZ2V0X3VzZXJfdmlwX2luZm8sIGdldF91c2VyX2ludml0ZUNvZGUgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0FQSScpXFxyXFxuY29uc3QgeyBnZW5lcmF0ZV9wYXRocyB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvUGF0aCcpXFxyXFxuY29uc3QgeyBzZWFyY2hfYmFyIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9TZWFyY2gnKVxcclxcbmNvbnN0IHsgZ2VuZXJhdGVfbGlzdCB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvTGlzdCcpXFxyXFxuY29uc3QgeyBpbnZpdGVfZ28gfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0ludml0ZScpXFxyXFxuY29uc3QgeyBzdHlsZV9jb2xvciB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvRGVidWcnKVxcclxcblxcclxcbi8vIOeUqOaIt+S/oeaBr1xcclxcbmxldCB1c2VyX2Jhc2VfaW5mbyA9IGdldF91c2VyX2Jhc2VfaW5mbygpXFxyXFxubGV0IHVzZXJfdmlwX2luZm8gPSBnZXRfdXNlcl92aXBfaW5mbygpXFxyXFxucHV0TXlWYXIoJ3Nob3dfZW1haWwnLCAnMCcpXFxyXFxuXFxyXFxuaWYgKGdldEl0ZW0oJ2FjY2Vzc190b2tlbicsICcnKSA9PSAnJykge1xcclxcbiAgICByZXMucHVzaCh7XFxyXFxuICAgICAgICB0aXRsZTogYOaCqOi/mOacqueZu+W9le+8jOivt+eCueWHu+eZu+W9le+8geaIluiAhSDliLfmlrDkuIDkuItgLFxcclxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcclxcbiAgICAgICAgcGljX3VybDogYGh0dHBzOi8vbXlwaWtwYWsuY29tL2Zhdmljb24tMzJ4MzIucG5nYCxcXHJcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9TZXR0aW5nJyxcXHJcXG4gICAgfSlcXHJcXG59IGVsc2Uge1xcclxcbiAgICAvLyDoh6rliqjliLfmlrDpgoDor7fkuIDmrKFcXHJcXG4gICAgaWYgKHVzZXJfdmlwX2luZm8uYmFzZS52aXBfc3RhdHVzID09IFxcXCJpbnZhbGlkXFxcIikge1xcclxcbiAgICAgICAgaW52aXRlX2dvKGdldF91c2VyX2ludml0ZUNvZGUoKS5jb2RlKVxcclxcbiAgICAgICAgcmVmcmVzaFBhZ2UoKVxcclxcbiAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgJC5sb2coJ+W3sue7j+aYr1ByZW1pdW3pq5jnuqfnlKjmiLfvvIzml6DpnIDliLfmlrDpgoDor7cnKVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIHJlcy5wdXNoKHtcXHJcXG4gICAgICAgIC8vIHRpdGxlOiBgJHt1c2VyX2Jhc2VfaW5mby5uYW1lICsgJygnICsgdXNlcl9iYXNlX2luZm8uZW1haWwucmVwbGFjZSgvXFxcXHd7MCw4fS8sICcqJykgKyAnKSd9YCxcXHJcXG4gICAgICAgIHRpdGxlOiBgJHtcXHJcXG4gICAgICAgICAgICB1c2VyX3ZpcF9pbmZvLmJhc2UudmlwX3N0YXR1cyAhPSBcXFwiaW52YWxpZFxcXCJcXHJcXG4gICAgICAgICAgICAgICAgPyBzdHlsZV9jb2xvcih1c2VyX2Jhc2VfaW5mby5uYW1lLCAnIzU1OTNGNScpICsgJyAoJyArIHN0eWxlX2NvbG9yKCdQcmVtaXVtJywgJyMyNEJCNzUnLCAxKSArICcpJ1xcclxcbiAgICAgICAgICAgICAgICA6IHN0eWxlX2NvbG9yKHVzZXJfYmFzZV9pbmZvLm5hbWUsICcjNTU5M0Y1JykgKyAnICgnICsgc3R5bGVfY29sb3IoJ+WPl+mZkCcsICcjQzYxODE2JywgMSkgKyAnKSdcXHJcXG4gICAgICAgIH1gLFxcclxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcclxcbiAgICAgICAgLy8gcGljX3VybDogYCR7dXNlcl9iYXNlX2luZm8ucGljdHVyZX1gLFxcclxcbiAgICAgICAgcGljX3VybDogYGh0dHBzOi8vbXlwaWtwYWsuY29tL2Zhdmljb24tMzJ4MzIucG5nYCxcXHJcXG4gICAgICAgIGRlc2M6IGDimpnorr7nva5gLFxcclxcbiAgICAgICAgLy8gZGVzYzogYCR7XFxyXFxuICAgICAgICAvLyAgICAgdXNlcl92aXBfaW5mby5iYXNlLnZpcF9zdGF0dXNcXHJcXG4gICAgICAgIC8vICAgICAgICAgPyB1c2VyX3ZpcF9pbmZvLmJhc2UuYXNzZXRzICsgJ0InXFxyXFxuICAgICAgICAvLyAgICAgICAgIDogdXNlcl92aXBfaW5mby5iYXNlLmFzc2V0cyArICdCJ1xcclxcbiAgICAgICAgLy8gfWAsXFxyXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvU2V0dGluZycsXFxyXFxuICAgIH0pXFxyXFxuXFxyXFxuICAgIC8vIOaQnOe0ouagj1xcclxcbiAgICBzZWFyY2hfYmFyKHJlcylcXHJcXG5cXHJcXG4gICAgLy8g6Ze06ZqU5qCPXFxyXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTsgaSsrKSB7XFxyXFxuICAgICAgICByZXMucHVzaCh7XFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaycsXFxyXFxuICAgICAgICB9KVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC8vIOmdouWMheWxkei3r+W+hCjmjInpkq4pXFxyXFxuICAgIC8vIGdlbmVyYXRlX3BhdGhzKHJlcylcXHJcXG4gICAgZ2VuZXJhdGVfcGF0aHMocmVzLCAncGF0aHMnLCAnSG9tZScpXFxyXFxuXFxyXFxuICAgIC8vIOWIl+ihqOagj1xcclxcbiAgICBnZW5lcmF0ZV9saXN0KHJlcywgJ3BhdGhzJylcXHJcXG59XFxyXFxuLy8g6LW36aOeflxcclxcbnNldFJlc3VsdChyZXMpXFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJQYXRoXCIsXCJwYXRoXCI6XCJQYXRoXCIsXCJydWxlXCI6XCJjb25zdCB7c3R5bGVfY29sb3J9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvRGVidWcnKVxcclxcbi8vIOeUn+aIkOmmlumhtei3r+W+hCjmjInpkq7moLflvI8pXFxyXFxuZnVuY3Rpb24gZ2VuZXJhdGVfcGF0aHMocmVzLCBwYXRoc19raW5kLCBzZWFyY2hfcm9vdF9wYXRoKSB7XFxyXFxuICAgIC8vIOiOt+WPluW9k+WJjeeahOi3r+W+hFxcclxcbiAgICBsZXQgcGF0aHMgPSBzdG9yYWdlMC5nZXRNeVZhcihwYXRoc19raW5kLCBbXFxyXFxuICAgICAgICB7XFxyXFxuICAgICAgICAgICAgaWQ6ICcnLFxcclxcbiAgICAgICAgICAgIG5hbWU6ICdIb21lJyxcXHJcXG4gICAgICAgIH0sXFxyXFxuICAgIF0pXFxyXFxuXFxyXFxuICAgIC8vIOaehOW7uui3r+W+hOeahG5hbWXlsZ7mgKfmlbDnu4TvvIznlKjkuo7orr7nva7moLnot6/lvoRcXHJcXG4gICAgbGV0IHBhdGhzX25hbWVzID0gW11cXHJcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRocy5sZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgcGF0aHNfbmFtZXMucHVzaChwYXRoc1tpXS5uYW1lKVxcclxcbiAgICB9XFxyXFxuXFxyXFxuICAgIC8vIOi3r+W+hOaMiemSruS4tOaXtuaVsOe7hFxcclxcbiAgICBsZXQgdF9yZXMgPSBbXVxcclxcblxcclxcbiAgICAvLyDot6/lvoTku6XmjInpkq7mlrnlvI/mmL7npLpcXHJcXG4gICAgcGF0aHMuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcclxcbiAgICAgICAgaWYgKGkgPj0gcGF0aHNfbmFtZXMuaW5kZXhPZihzZWFyY2hfcm9vdF9wYXRoKSkge1xcclxcbiAgICAgICAgICAgIC8vIOa3u+WKoOWIhumalOesplxcclxcbiAgICAgICAgICAgIHRfcmVzLnB1c2goe1xcclxcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIi9cXFwiLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwidG9hc3Q6Ly/kvaDmmK/kuI3mmK/ngrnplJnkuobvvJ9cXFwiXFxyXFxuICAgICAgICAgICAgfSlcXHJcXG5cXHJcXG4gICAgICAgICAgICAvLyDmt7vliqDot6/lvoRcXHJcXG4gICAgICAgICAgICB0X3Jlcy5wdXNoKHtcXHJcXG4gICAgICAgICAgICAgICAgLy8gdGl0bGU6IGl0ZW0ubmFtZSxcXHJcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLigJjigJjigJnigJlcXFwiICsgc3R5bGVfY29sb3IoaXRlbS5uYW1lLCBcXFwiIzI0QkI3NVxcXCIpLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXHJcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoXFxyXFxuICAgICAgICAgICAgICAgICAgICAocGF0aHMsIGksIHBhdGhzX2tpbmQpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihwYXRoc19raW5kLCBwYXRocy5zbGljZSgwLCBpICsgMSkpXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXHJcXG4gICAgICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgICAgICBwYXRocyxcXHJcXG4gICAgICAgICAgICAgICAgICAgIGksXFxyXFxuICAgICAgICAgICAgICAgICAgICBwYXRoc19raW5kXFxyXFxuICAgICAgICAgICAgICAgICksXFxyXFxuICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfSlcXHJcXG4gICAgdF9yZXMuc2hpZnQoKTtcXHJcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0X3Jlcy5sZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgcmVzLnB1c2godF9yZXNbaV0pXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuJC5leHBvcnRzID0ge1xcclxcbiAgICBnZW5lcmF0ZV9wYXRocyxcXHJcXG4gICAgLy8gZ2VuZXJhdGVfc2VhcmNoX3BhdGhzLFxcclxcbn1cXHJcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIlNlYXJjaFwiLFwicGF0aFwiOlwiU2VhcmNoXCIsXCJydWxlXCI6XCIvLyDmr4/ml6XkuIDlj6XnvJPlrZhcXHJcXG5mdW5jdGlvbiBzYXZlX2RheV9zYXlfY2FjaGUoKSB7XFxyXFxuICAgIGxldCBkYXlfc2F5X2NhY2hlID0ge31cXHJcXG4gICAgbGV0IGRheV9zYXlfaHRtbCA9IGZldGNoKCdodHRwczovL3YxLmhpdG9rb3RvLmNuJywge1xcclxcbiAgICAgICAgaGVhZGVyczoge1xcclxcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzpcXHJcXG4gICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMjIuMC4wLjAgU2FmYXJpLzUzNy4zNicsXFxyXFxuICAgICAgICB9LFxcclxcbiAgICB9KVxcclxcbiAgICBkYXlfc2F5X2h0bWwgPSBKU09OLnBhcnNlKGRheV9zYXlfaHRtbClcXHJcXG4gICAgZGF5X3NheV9jYWNoZVsnY29udGVudCddID0gZGF5X3NheV9odG1sWydoaXRva290byddXFxyXFxuICAgIGRheV9zYXlfY2FjaGVbJ3RpbWUnXSA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApXFxyXFxuICAgIGdsb2JhbE1hcDAucHV0TXlWYXIoJ2RheXNheScsIGRheV9zYXlfY2FjaGUpXFxyXFxuICAgIHJldHVybiBkYXlfc2F5X2h0bWxbJ2hpdG9rb3RvJ11cXHJcXG59XFxyXFxuXFxyXFxuLy8g55Sf5oiQ5pCc57Si5qCPXFxyXFxuZnVuY3Rpb24gc2VhcmNoX2JhcihyZXMpIHtcXHJcXG4gICAgbGV0IGRheV9zYXkgPSAnJ1xcclxcbiAgICB0cnkge1xcclxcbiAgICAgICAgbGV0IGRheV9zYXlfY2FjaGUgPSB7fVxcclxcbiAgICAgICAgbGV0IGRheV90aW1lID0gMFxcclxcbiAgICAgICAgaWYgKGdsb2JhbE1hcDAuaGFzTXlWYXIoJ2RheXNheScpKSB7XFxyXFxuICAgICAgICAgICAgZGF5X3NheV9jYWNoZSA9IGdsb2JhbE1hcDAuZ2V0TXlWYXIoJ2RheXNheScsIHt9KVxcclxcbiAgICAgICAgICAgIGRheV90aW1lID0gZGF5X3NheV9jYWNoZVsndGltZSddXFxyXFxuICAgICAgICAgICAgaWYgKE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApIC0gZGF5X3RpbWUgPj0gMTApIHtcXHJcXG4gICAgICAgICAgICAgICAgZGF5X3NheSA9IHNhdmVfZGF5X3NheV9jYWNoZSgpXFxyXFxuICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgZGF5X3NheSA9IGRheV9zYXlfY2FjaGVbJ2NvbnRlbnQnXVxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgZGF5X3NheSA9IHNhdmVfZGF5X3NheV9jYWNoZSgpXFxyXFxuICAgICAgICB9XFxyXFxuICAgIH0gY2F0Y2gge1xcclxcbiAgICAgICAgZGF5X3NheSA9ICcnXFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6ICfmkJzntKInLFxcclxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxyXFxuICAgICAgICBkZXNjOiAn8J+kljogJyArIGRheV9zYXksXFxyXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9zZWFyY2g/cz0nICsgaW5wdXQgKyAnJnJ1bGU9XFxcIiArIE1ZX1JVTEUudGl0bGUgKyBcXFwiJ1xcXCIsXFxyXFxuICAgICAgICAvLyBleHRyYTogeyBkZWZhdWx0VmFsdWU6ICcnICsgZGF5X3NheSB9LFxcclxcbiAgICAgICAgLy8gICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAvLyAgICAgICAgIHRpdGxlVmlzaWJsZTogZmFsc2UsXFxyXFxuICAgICAgICAvLyAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0TXlWYXIoJ2hvbWVfaW5wdXQnLCBpbnB1dClcXFwiLFxcclxcbiAgICAgICAgLy8gICAgIH0sXFxyXFxuICAgIH0pXFxyXFxuXFxyXFxuICAgIHJlcy5wdXNoKHtcXHJcXG4gICAgICAgIHRpdGxlOiAn5Zue5pS256uZJyxcXHJcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXHJcXG4gICAgICAgIHVybDogXFxcInRvYXN0Oi8v5oOzUOWQg+WRou+8jOi/mOayoeWunueOsFxcXCJcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6ICfmt7vliqDno4Hpk74nLFxcclxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLFxcclxcbiAgICAgICAgdXJsOiAkKCcnLCAn6L6T5YWl56OB5Yqb6ZO+5o6lJykuaW5wdXQoKCkgPT4ge1xcclxcbiAgICAgICAgICAgIHJldHVybiAncGlrcGFrYXBwOi8vbXlwaWtwYWsuY29tL3hwYW4vbWFpbl90YWI/dGFiPTEmYWRkX3VybD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGlucHV0KVxcclxcbiAgICAgICAgfSksXFxyXFxuICAgIH0pXFxyXFxuXFxyXFxuICAgIC8vIHJlcy5wdXNoKHtcXHJcXG4gICAgLy8gICAgIHRpdGxlOiAn5pCc57SiJyxcXHJcXG4gICAgLy8gICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXHJcXG4gICAgLy8gICAgIHVybDogJCgpLmxhenlSdWxlKChpbnB1dCkgPT4ge1xcclxcbiAgICAvLyAgICAgICAgIHJldHVybiAkLmxvZygnaGlrZXI6Ly9zZWFyY2g/cz0nICsgaW5wdXQgKyAnJnJ1bGU9JyArIE1ZX1JVTEUudGl0bGUgKyBcXFwiJ1xcXCIpXFxyXFxuICAgIC8vICAgICB9LCBnZXRNeVZhcignaG9tZV9pbnB1dCcsICcnKSlcXHJcXG4gICAgLy8gfSlcXHJcXG59XFxyXFxuXFxyXFxuLy8g5pCc57Si57uT5p6c5YiX6KGoXFxyXFxuZnVuY3Rpb24gc2VhcmNoX2xpc3Qoa2V5X3dvcmQsIHJlcykge1xcclxcbiAgICBjb25zdCB7IGdldEV4dCB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvTGlzdCcpXFxyXFxuICAgIGNvbnN0IHsgZ2V0X2l0ZW1zX2xpc3QgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0FQSScpXFxyXFxuICAgIGxldCBsaXN0ID0gZ2V0X2l0ZW1zX2xpc3QoJyonKVxcclxcbiAgICBsZXQga2V5X3dvcmRfcmVnZXggPSBuZXcgUmVnRXhwKCcuKj8nICsga2V5X3dvcmQgKyAnLio/JywgJ21naScpXFxyXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5maWxlcy5sZW5ndGg7IGkrKykge1xcclxcbiAgICAgICAgaWYgKGxpc3QuZmlsZXNbaV0ubmFtZS5tYXRjaChrZXlfd29yZF9yZWdleCkpIHtcXHJcXG4gICAgICAgICAgICB2YXIgdXJsID0gJCgpLmxhenlSdWxlKFxcclxcbiAgICAgICAgICAgICAgICAoaXRlbSwgZXh0KSA9PiB7XFxyXFxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGdldF9pdGVtX3VybCB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvQVBJJylcXHJcXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXMgPSBnZXRfaXRlbV91cmwoaXRlbS5pZClcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaXRlbSBvZiByZXMubWVkaWFzKSB7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRtcCA9IGl0ZW0ubGlua1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wLnVybCkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRtcC51cmwgKyBleHRcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcclxcbiAgICAgICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICBsaXN0LmZpbGVzW2ldLFxcclxcbiAgICAgICAgICAgICAgICBnZXRFeHQobGlzdC5maWxlc1tpXS5uYW1lKVxcclxcbiAgICAgICAgICAgIClcXHJcXG5cXHJcXG4gICAgICAgICAgICByZXMucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBsaXN0LmZpbGVzW2ldLm5hbWUsXFxyXFxuICAgICAgICAgICAgICAgIGltZzogbGlzdC5maWxlc1tpXS5raW5kID09ICdkcml2ZSNmb2xkZXInID8gbGlzdC5maWxlc1tpXS5pY29uX2xpbmsgOiBsaXN0LmZpbGVzW2ldLnRodW1ibmFpbF9saW5rLFxcclxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxyXFxuICAgICAgICAgICAgICAgIHVybDpcXHJcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QuZmlsZXNbaV0ua2luZCA9PSAnZHJpdmUjZm9sZGVyJ1xcclxcbiAgICAgICAgICAgICAgICAgICAgICAgID8gJ2hpa2VyOi8vZW1wdHkmJiYnICsgbGlzdC5maWxlc1tpXS5pZCArICcmJiYnICsgbGlzdC5maWxlc1tpXS5uYW1lXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgOiB1cmwsXFxyXFxuICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG4kLmV4cG9ydHMgPSB7XFxyXFxuICAgIHNlYXJjaF9iYXIsXFxyXFxuICAgIHNlYXJjaF9saXN0LFxcclxcbn1cXHJcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIkxpc3RcIixcInBhdGhcIjpcIkxpc3RcIixcInJ1bGVcIjpcImZ1bmN0aW9uIGdldEV4dChmaWxlTmFtZSkge1xcclxcbiAgICAvLyByZXR1cm4gZmlsZU5hbWUuc3Vic3RyKGZpbGVOYW1lLmxhc3RJbmRleE9mKCcuJykgKyAxKVxcclxcbiAgICBsZXQgcF9leHQgPSBmaWxlTmFtZS5zdWJzdHIoZmlsZU5hbWUubGFzdEluZGV4T2YoJy4nKSArIDEpXFxyXFxuXFxyXFxuICAgIGlmICgkLm1vdmllLmluY2x1ZGVzKHBfZXh0KSkge1xcclxcbiAgICAgICAgdmFyIGV4dCA9ICcjaXNWaWRlbz10cnVlIydcXHJcXG4gICAgfSBlbHNlIGlmICgkLmF1ZGlvLmluY2x1ZGVzKHBfZXh0KSkge1xcclxcbiAgICAgICAgdmFyIGV4dCA9ICcjaXNNdXNpYz10cnVlIydcXHJcXG4gICAgfSBlbHNlIGlmICgkLmltZy5pbmNsdWRlcyhwX2V4dCkpIHtcXHJcXG4gICAgICAgIHZhciBleHQgPSAnIy5qcGcnXFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICB2YXIgZXh0ID0gJydcXHJcXG4gICAgfVxcclxcbiAgICByZXR1cm4gZXh0XFxyXFxufVxcclxcblxcclxcbmZ1bmN0aW9uIGdlbmVyYXRlX2xpc3QocmVzLCBwYXRoc19raW5kKSB7XFxyXFxuICAgIGNvbnN0IHsgZ2V0X2l0ZW1zX2xpc3QgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0FQSScpXFxyXFxuICAgIGxldCBwYXRocyA9IHN0b3JhZ2UwLmdldE15VmFyKHBhdGhzX2tpbmQsIFtcXHJcXG4gICAgICAgIHtcXHJcXG4gICAgICAgICAgICBpZDogJycsXFxyXFxuICAgICAgICAgICAgbmFtZTogJ0hvbWUnLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgXSlcXHJcXG4gICAgbGV0IGxpc3QgPSBnZXRfaXRlbXNfbGlzdChwYXRoc1twYXRocy5sZW5ndGggLSAxXS5pZClcXHJcXG4gICAgbGlzdC5maWxlcy5mb3JFYWNoKChpdGVtKSA9PiB7XFxyXFxuICAgICAgICBpZiAoaXRlbS5raW5kID09ICdkcml2ZSNmb2xkZXInKSB7XFxyXFxuICAgICAgICAgICAgdmFyIHVybGwgPSAkKCkubGF6eVJ1bGUoXFxyXFxuICAgICAgICAgICAgICAgIChwYXRocywgaXRlbSwgcGF0aHNfa2luZCkgPT4ge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInNlYXJjaF8xXFxcIiwgXFxcIjBcXFwiKVxcclxcbiAgICAgICAgICAgICAgICAgICAgcGF0aHMucHVzaCh7XFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxcclxcbiAgICAgICAgICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKHBhdGhzX2tpbmQsIHBhdGhzKVxcclxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcclxcbiAgICAgICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgICAgICBwYXRocyxcXHJcXG4gICAgICAgICAgICAgICAgaXRlbSxcXHJcXG4gICAgICAgICAgICAgICAgcGF0aHNfa2luZFxcclxcbiAgICAgICAgICAgIClcXHJcXG4gICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgdmFyIGV4dCA9IGdldEV4dChpdGVtLm5hbWUpXFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICB2YXIgdXJsID0gJCgpLmxhenlSdWxlKFxcclxcbiAgICAgICAgICAgIChpdGVtLCBleHQpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcInNlYXJjaF8xXFxcIiwgXFxcIjBcXFwiKVxcclxcbiAgICAgICAgICAgICAgICBjb25zdCB7IGdldF9pdGVtX3VybCB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvQVBJJylcXHJcXG4gICAgICAgICAgICAgICAgbGV0IHJlcyA9IGdldF9pdGVtX3VybChpdGVtLmlkKVxcclxcbiAgICAgICAgICAgICAgICBmb3IgKGl0ZW0gb2YgcmVzLm1lZGlhcykge1xcclxcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdG1wID0gaXRlbS5saW5rXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcC51cmwpIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRtcC51cmwgKyBleHRcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxcclxcbiAgICAgICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICBpdGVtLFxcclxcbiAgICAgICAgICAgIGV4dFxcclxcbiAgICAgICAgKVxcclxcbiAgICAgICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLm5hbWUsXFxyXFxuICAgICAgICAgICAgaW1nOiBpdGVtLmtpbmQgPT0gJ2RyaXZlI2ZvbGRlcicgPyBpdGVtLmljb25fbGluayA6IGl0ZW0udGh1bWJuYWlsX2xpbmssXFxyXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcclxcbiAgICAgICAgICAgIC8vIGNvbF90eXBlOiAnbW92aWVfMScsXFxyXFxuICAgICAgICAgICAgLy8gY29sX3R5cGU6IFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIixcXHJcXG4gICAgICAgICAgICB1cmw6IGl0ZW0ua2luZCA9PSAnZHJpdmUjZm9sZGVyJyA/IHVybGwgOiB1cmwsXFxyXFxuICAgICAgICB9KVxcclxcbiAgICB9KVxcclxcbn1cXHJcXG5cXHJcXG4kLmV4cG9ydHMgPSB7XFxyXFxuICAgIGdlbmVyYXRlX2xpc3QsXFxyXFxuICAgIGdldEV4dCxcXHJcXG59XFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJFeHRlbmRcIixcInBhdGhcIjpcIkV4dGVuZFwiLFwicnVsZVwiOlwiJC5leHRlbmQoe1xcclxcbiAgICBhdWRpbzogW1xcXCJtcDNcXFwiLCBcXFwiZmxhY1xcXCIsIFxcXCJvZ2dcXFwiLCBcXFwibTRhXFxcIiwgXFxcIndhdlxcXCIsIFxcXCJvcHVzXFxcIl0sXFxyXFxuICAgIG1vdmllOiBbXFxcIm1wNFxcXCIsIFxcXCJta3ZcXFwiLCBcXFwiYXZpXFxcIiwgXFxcIm1vdlxcXCIsIFxcXCJybXZiXFxcIiwgXFxcIndlYm1cXFwiLCBcXFwiZmx2XFxcIiwgXFxcIm00dlxcXCIsIFxcXCJtM3U4XFxcIiwgXFxcInRzXFxcIl0sXFxyXFxuICAgIGltZzogW1xcXCJqcGdcXFwiLCBcXFwicG5nXFxcIiwgXFxcImpwZWdcXFwiLCBcXFwiZ2lmXFxcIiwgXFxcInN2Z1xcXCIsIFxcXCJyYXdcXFwiXVxcclxcbn0pXFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJTZXR0aW5nXCIsXCJwYXRoXCI6XCJTZXR0aW5nXCIsXCJydWxlXCI6XCJqczpcXHJcXG5jb25zdCB7IHN0eWxlX2NvbG9yIH0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS9EZWJ1ZycpXFxyXFxuc2V0UGFnZVRpdGxlKCforr7nva4nKVxcclxcbnZhciByZXMgPSBbXVxcclxcblxcclxcbmlmIChnZXRJdGVtKCdhY2Nlc3NfdG9rZW4nLCAnJykgPT0gJycpIHtcXHJcXG4gICAgY2xlYXJNeVZhcigndHVzZXJuYW1lJylcXHJcXG4gICAgY2xlYXJNeVZhcigndHBhc3N3ZCcpXFxyXFxuXFxyXFxuICAgIHJlcy5wdXNoKHtcXHJcXG4gICAgICAgIHRpdGxlOiAn8J+RpOeUqOaIt+WQjScsXFxyXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxyXFxuICAgICAgICBleHRyYTogeyBsaW5lVmlzaWJsZTogZmFsc2UgfSxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6ICfnlKjmiLflkI0nLFxcclxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxyXFxuICAgICAgICBkZXNjOiAn6K+36L6T5YWl55So5oi35ZCNJyxcXHJcXG4gICAgICAgIGV4dHJhOiB7XFxyXFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRNeVZhcigndHVzZXJuYW1lJywgaW5wdXQpXFxcIixcXHJcXG4gICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6ICfwn5SR5a+G56CBJyxcXHJcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXHJcXG4gICAgICAgIGV4dHJhOiB7IGxpbmVWaXNpYmxlOiBmYWxzZSB9LFxcclxcbiAgICB9KVxcclxcblxcclxcbiAgICByZXMucHVzaCh7XFxyXFxuICAgICAgICB0aXRsZTogJ+WvhueggScsXFxyXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXHJcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXlr4bnoIEnLFxcclxcbiAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dE15VmFyKCd0cGFzc3dkJywgaW5wdXQpXFxcIixcXHJcXG4gICAgICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgLy8g6Ze06ZqU5qCPXFxyXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTU7IGkrKykge1xcclxcbiAgICAgICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snLFxcclxcbiAgICAgICAgfSlcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICByZXMucHVzaCh7XFxyXFxuICAgICAgICB0aXRsZTogJ+ehruWumicsXFxyXFxuICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxyXFxuICAgICAgICAgICAgY29uc3QgeyBsb2dpbiB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvQVBJJylcXHJcXG4gICAgICAgICAgICBzZXRJdGVtKCd1c2VybmFtZScsIGdldE15VmFyKCd0dXNlcm5hbWUnLCAnJykpXFxyXFxuICAgICAgICAgICAgc2V0SXRlbSgncGFzc3dkJywgZ2V0TXlWYXIoJ3RwYXNzd2QnLCAnJykpXFxyXFxuICAgICAgICAgICAgbG9naW4oZ2V0SXRlbSgndXNlcm5hbWUnLCAnJyksIGdldEl0ZW0oJ3Bhc3N3ZCcsICcnKSlcXHJcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxyXFxuICAgICAgICAgICAgLy8gcmV0dXJuICd0b2FzdDovLycgKyBnZXRNeVZhcigndHVzZXJuYW1lJykgKyAnJiYmJyArIGdldE15VmFyKCd0cGFzc3dkJylcXHJcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxyXFxuICAgICAgICB9KSxcXHJcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6ICflj5bmtognLFxcclxcbiAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCkgPT4ge1xcclxcbiAgICAgICAgICAgIGJhY2sodHJ1ZSlcXHJcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxyXFxuICAgICAgICB9KSxcXHJcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXHJcXG4gICAgfSlcXHJcXG59IGVsc2Uge1xcclxcbiAgICBjb25zdCB7IGdldF91c2VyX2Jhc2VfaW5mbywgZ2V0X3VzZXJfdmlwX2luZm8sIGdldF91c2VyX2ludml0ZUNvZGUgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0FQSScpXFxyXFxuXFxyXFxuICAgIC8vIOeUqOaIt+S/oeaBr1xcclxcbiAgICBsZXQgdXNlcl9iYXNlX2luZm8gPSBnZXRfdXNlcl9iYXNlX2luZm8oKVxcclxcbiAgICBsZXQgdXNlcl92aXBfaW5mbyA9IGdldF91c2VyX3ZpcF9pbmZvKClcXHJcXG4gICAgbGV0IHVzZXJfaW52aXRlQ29kZSA9IGdldF91c2VyX2ludml0ZUNvZGUoKVxcclxcblxcclxcbiAgICByZXMucHVzaCh7XFxyXFxuICAgICAgICAvLyB0aXRsZTogYPCfkaTnlKjmiLflkI0o6YKu566xKTogJHt1c2VyX2Jhc2VfaW5mby5uYW1lICsgJyAoJyArIHVzZXJfYmFzZV9pbmZvLmVtYWlsICsgJyknfWAsXFxyXFxuICAgICAgICB0aXRsZTogYPCfkaQke1xcXCLigJjigJjigJnigJlcXFwiK3N0eWxlX2NvbG9yKFxcXCLnlKjmiLflkI0o54K55Ye75pi+56S66YKu566xKVxcXCIsIFxcXCIjMjRCQjc1XFxcIil9OiAke2dldE15VmFyKFxcXCJzaG93X2VtYWlsXFxcIiwgXFxcIjBcXFwiKSA9PSBcXFwiMFxcXCIgPyB1c2VyX2Jhc2VfaW5mby5uYW1lIDogdXNlcl9iYXNlX2luZm8ubmFtZSArIFxcXCIgKFxcXCIgKyB1c2VyX2Jhc2VfaW5mby5lbWFpbCArIFxcXCIpXFxcIn1gLFxcclxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcclxcbiAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKCk9PntcXHJcXG4gICAgICAgICAgICBsZXQgc2hvd19lbWFpbCA9IGdldE15VmFyKFxcXCJzaG93X2VtYWlsXFxcIiwgXFxcIjBcXFwiKVxcclxcbiAgICAgICAgICAgIGlmIChzaG93X2VtYWlsID09IFxcXCIxXFxcIikge1xcclxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwic2hvd19lbWFpbFxcXCIsIFxcXCIwXFxcIilcXHJcXG4gICAgICAgICAgICB9IGVsc2Uge1xcclxcbiAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwic2hvd19lbWFpbFxcXCIsIFxcXCIxXFxcIilcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXHJcXG4gICAgICAgIH0pXFxyXFxuICAgICAgICAvLyBleHRyYTogeyBsaW5lVmlzaWJsZTogZmFsc2UgfSxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6IGDwn5KOJHtcXFwi4oCY4oCY4oCZ4oCZXFxcIitzdHlsZV9jb2xvcihcXFwi5Lya5ZGY562J57qnXFxcIiwgXFxcIiMyNEJCNzVcXFwiKX06ICR7dXNlcl92aXBfaW5mby5iYXNlLnZpcF9zdGF0dXMgPyAnVklQJyA6ICfpmZDliLYnfWAsXFxyXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxyXFxuICAgICAgICAvLyBleHRyYTogeyBsaW5lVmlzaWJsZTogZmFsc2UgfSxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6IGDwn5eC77iPJHtcXFwi4oCY4oCY4oCZ4oCZXFxcIitzdHlsZV9jb2xvcihcXFwi56m66Ze05a656YePXFxcIiwgXFxcIiMyNEJCNzVcXFwiKX06ICR7XFxyXFxuICAgICAgICAgICAgdXNlcl92aXBfaW5mby5iYXNlLnZpcF9zdGF0dXMgPyB1c2VyX3ZpcF9pbmZvLmJhc2UuYXNzZXRzICsgJ0InIDogdXNlcl92aXBfaW5mby5iYXNlLmFzc2V0cyArICdCJ1xcclxcbiAgICAgICAgfWAsXFxyXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxyXFxuICAgICAgICAvLyBleHRyYTogeyBsaW5lVmlzaWJsZTogZmFsc2UgfSxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6IGDwn5ShJHtcXFwi4oCY4oCY4oCZ4oCZXFxcIitzdHlsZV9jb2xvcihcXFwi6YKA6K+356CBKOeCueWHu+WkjeWItilcXFwiLCBcXFwiIzI0QkI3NVxcXCIpfTogJHt1c2VyX2ludml0ZUNvZGUuY29kZX1gLFxcclxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcclxcbiAgICAgICAgdXJsOiBgY29weTovLyR7dXNlcl9pbnZpdGVDb2RlLmNvZGV9YCxcXHJcXG4gICAgICAgIC8vIGV4dHJhOiB7IGxpbmVWaXNpYmxlOiBmYWxzZSB9LFxcclxcbiAgICB9KVxcclxcblxcclxcbiAgICByZXMucHVzaCh7XFxyXFxuICAgICAgICB0aXRsZTogYOKPse+4jyR7XFxcIuKAmOKAmOKAmeKAmVxcXCIrc3R5bGVfY29sb3IoXFxcIumCgOivt+aXtumXtOWSjOasoeaVsCjngrnlh7vmiYvliqjpgoDor7cpXFxcIiwgXFxcIiMyNEJCNzVcXFwiKX06ICR7XFxyXFxuICAgICAgICAgICAgZ2V0SXRlbSgnaW52aXRlX3Jlc3VsdCcsICdGYWlsJykgPT0gJ0ZhaWwnID8gXFxcIumCgOivt+Wksei0pVxcXCI6IGdldEl0ZW0oJ2ludml0ZV9yZXN1bHQnLCAnRmFpbCcpXFxyXFxuICAgICAgICB9ICjmrKHmlbA6JHtnZXRNeVZhcignaW52aXRlX2NvdW50JywgJzAnKX0pYCxcXHJcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXHJcXG4gICAgICAgIHVybDogJCgpLmxhenlSdWxlKCh1c2VyX2ludml0ZUNvZGUpPT57XFxyXFxuICAgICAgICAgICAgY29uc3Qge2ludml0ZV9nb30gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9JbnZpdGVcXFwiKVxcclxcbiAgICAgICAgICAgIGNvbnN0IHsgc3R5bGVfY29sb3IgfSA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL0RlYnVnJylcXHJcXG4gICAgICAgICAgICBpbnZpdGVfZ28odXNlcl9pbnZpdGVDb2RlLmNvZGUpXFxyXFxuICAgICAgICAgICAgbGV0IG5ld190aXRsZSA9IGDij7HvuI8ke1xcXCLigJjigJjigJnigJlcXFwiK3N0eWxlX2NvbG9yKFxcXCLpgoDor7fml7bpl7TlkozmrKHmlbAo54K55Ye75omL5Yqo5Yi35pawKVxcXCIsIFxcXCIjMjRCQjc1XFxcIil9OiAke1xcclxcbiAgICAgICAgICAgIGdldEl0ZW0oJ2ludml0ZV9yZXN1bHQnLCAnRmFpbCcpID09ICdGYWlsJyA/IFxcXCLpgoDor7flpLHotKVcXFwiOiBnZXRJdGVtKCdpbnZpdGVfcmVzdWx0JywgJ0ZhaWwnKX0gKOasoeaVsDoke2dldE15VmFyKCdpbnZpdGVfY291bnQnLCAnMCcpfSlgXFxyXFxuICAgICAgICAgICAgdXBkYXRlSXRlbShcXFwiYXV0b19pbnZpdGVfaW5mb1xcXCIse3RpdGxlOiBuZXdfdGl0bGV9KVxcclxcbiAgICAgICAgICAgIC8vIHJlZnJlc2hQYWdlKClcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxyXFxuICAgICAgICB9LCB1c2VyX2ludml0ZUNvZGUpLFxcclxcbiAgICAgICAgZXh0cmE6IHtcXHJcXG4gICAgICAgICAgICBpZDogXFxcImF1dG9faW52aXRlX2luZm9cXFwiXFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICAvLyBleHRyYTogeyBsaW5lVmlzaWJsZTogZmFsc2UgfSxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgcmVzLnB1c2goe1xcclxcbiAgICAgICAgdGl0bGU6IGDwn5iIJHtcXFwi4oCY4oCY4oCZ4oCZXFxcIitzdHlsZV9jb2xvcihcXFwi5piv5ZCm5byA5ZCv6Ieq5Yqo6YKA6K+3KOeCueWHu+WIh+aNoilcXFwiLCBcXFwiIzI0QkI3NVxcXCIpfTogJHtnZXRJdGVtKCdhdXRvX3JlZnJlc2hfaW52aXRlJywgJzAnKSA9PSAnMCcgPyAn5ZCmJyA6ICfmmK8nfWAsXFxyXFxuICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKT0+e1xcclxcbiAgICAgICAgICAgIGlmKGdldEl0ZW0oJ2F1dG9fcmVmcmVzaF9pbnZpdGUnLCAnMCcpID09ICcwJykge1xcclxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCdhdXRvX3JlZnJlc2hfaW52aXRlJywgJzEnKVxcclxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2F1dG9fcmVmcmVzaF9pbnZpdGUnLCAnMCcpXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXHJcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxyXFxuICAgICAgICB9KSxcXHJcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIlxcclxcbiAgICB9KVxcclxcblxcclxcbiAgICByZXMucHVzaCh7XFxyXFxuICAgICAgICB0aXRsZTogYPCfmLQke1xcXCLigJjigJjigJnigJlcXFwiK3N0eWxlX2NvbG9yKFxcXCLmmK/lkKbmiZPljbDpgoDor7fml6Xlv5co54K55Ye75YiH5o2iKVxcXCIsIFxcXCIjMjRCQjc1XFxcIil9OiAke2dldE15VmFyKFxcXCJkZWJ1Z19lbmFibGVcXFwiLCBcXFwiMFxcXCIpID09ICcwJyA/ICflkKYnIDogJ+aYryd9YCxcXHJcXG4gICAgICAgIHVybDogJCgpLmxhenlSdWxlKCgpPT57XFxyXFxuICAgICAgICAgICAgaWYoZ2V0TXlWYXIoXFxcImRlYnVnX2VuYWJsZVxcXCIsIFxcXCIwXFxcIikgPT0gJzAnKSB7XFxyXFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJkZWJ1Z19lbmFibGVcXFwiLCBcXFwiMVxcXCIpXFxyXFxuICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImRlYnVnX2VuYWJsZVxcXCIsIFxcXCIwXFxcIilcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcclxcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXHJcXG4gICAgICAgIH0pLFxcclxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxyXFxuICAgIH0pXFxyXFxufVxcclxcblxcclxcbnNldFJlc3VsdChyZXMpXFxyXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJEZWJ1Z1wiLFwicGF0aFwiOlwiRGVidWdcIixcInJ1bGVcIjpcImZ1bmN0aW9uIHN0eWxlX2NvbG9yKHN0ciwgY29sb3IsIHNtYWxsKSB7XFxyXFxuICAgIGlmIChzbWFsbCA9PSB1bmRlZmluZWQpIHtcXHJcXG4gICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9XFxcImNvbG9yOicgKyBjb2xvciArICdcXFwiPicgKyBzdHIgKyAnPC9zcGFuPidcXHJcXG4gICAgfSBlbHNlIHtcXHJcXG4gICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9XFxcImNvbG9yOicgKyBjb2xvciArICdcXFwiPjxzbWFsbD4nICsgc3RyICsgJzwvc21hbGw+PC9zcGFuPidcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiBkZWJ1Z19sb2cob2JqKSB7XFxyXFxuICAgIGxldCBkZWJ1Z19lbmJsZSA9IGdldE15VmFyKFxcXCJkZWJ1Z19lbmFibGVcXFwiLCBcXFwiMFxcXCIpXFxyXFxuICAgIGlmIChkZWJ1Z19lbmJsZSA9PSBcXFwiMVxcXCIpIHtcXHJcXG4gICAgLy8gaWYgKHRydWUpIHtcXHJcXG4gICAgICAgICQubG9nKG9iailcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG5cXHJcXG4kLmV4cG9ydHMgPSB7XFxyXFxuICAgIHN0eWxlX2NvbG9yLFxcclxcbiAgICBkZWJ1Z19sb2dcXHJcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJJbnZpdGVcIixcInBhdGhcIjpcIkludml0ZVwiLFwicnVsZVwiOlwiLy/mlLnoh6rkuI3nn6XlkI3lpKfkvaxcXHJcXG5cXHJcXG4vLyDosIPor5Xml6Xlv5dcXHJcXG5jb25zdCB7IGRlYnVnX2xvZyB9ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvRGVidWcnKVxcclxcblxcclxcbi8vICA9PT09PT09PT09PT09PT09572R57uc6K+35rGC5Y+C5pWwPT09PT09PT09PT09PT09PVxcclxcbmxldCBpbkNvZGUsIG1haWwsIHhpZCwga2V5LCBzaWduLCB0IC8vIOi/memHjOS/ruaUueiHquW3seeahOmCgOivt+eggVxcclxcblxcclxcbmNvbnN0IENyeXB0b1V0aWwgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzJylcXHJcXG5cXHJcXG5jb25zdCBkZXZpY2VOYW1lID0gJ1hJQU9NSSdcXHJcXG5jb25zdCBkZXZpY2VNb2RlbCA9ICcyMDEyMDUxJ1xcclxcbmNvbnN0IGNsaWVudCA9ICdZTnhUOXc3R01kV3ZFT0thJ1xcclxcbmNvbnN0IHB3ZCA9ICdwdzk5OTk5OSdcXHJcXG5jb25zdCBiYXNpY1JlcXVlc3RIZWFkZXJzXzEgPSB7XFxyXFxuICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnemgnLFxcclxcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnLFxcclxcbiAgICBIb3N0OiAndXNlci5teXBpa3Bhay5jb20nLFxcclxcbiAgICBDb25uZWN0aW9uOiAnS2VlcC1BbGl2ZScsXFxyXFxuICAgICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCcsXFxyXFxuICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxyXFxufVxcclxcblxcclxcbi8vICA9PT09PT09PT09PT09PT09PT3kuLvlh73mlbA9PT09PT09PT09PT09PT09PT09XFxyXFxuZnVuY3Rpb24gaW52aXRlX2dvKG5ld0luQ29kZSkge1xcclxcbiAgICBzZXRJdGVtKCdpbnZpdGVfcmVzdWx0JywgXFxcIkZhaWxcXFwiKVxcclxcbiAgICBsZXQgaW52aXRlX2xpbWl0X2NvdW50ID0gM1xcclxcbiAgICBsZXQgaW52aXRlX2N1cnJlbnRfY291bnQgPSBOdW1iZXIoZ2V0TXlWYXIoJ2ludml0ZV9jb3VudCcsICcwJykpXFxyXFxuICAgIGlmIChpbnZpdGVfY3VycmVudF9jb3VudCA+PSBpbnZpdGVfbGltaXRfY291bnQpIHtcXHJcXG4gICAgICAgICQubG9nKGDpgoDor7fmrKHmlbDlpKfkuo4ke2ludml0ZV9saW1pdF9jb3VudH3vvIzmmoLml7bnpoHmraLpgoDor7dgKVxcclxcbiAgICAgICAgcmV0dXJuXFxyXFxuICAgIH1cXHJcXG5cXHJcXG4gICAgLy8g5rWL6K+V5Luj56CBXFxyXFxuICAgIC8vIHB1dE15VmFyKCdpbnZpdGVfY291bnQnLCAoaW52aXRlX2N1cnJlbnRfY291bnQgKyAxKS50b1N0cmluZygpKVxcclxcbiAgICAvLyBjaGVja19pbnZpdGVfcmVzdWx0KClcXHJcXG4gICAgLy8gZGVidWdfbG9nKCfpgoDor7fmiJDlip/llaYnKVxcclxcbiAgICAvLyByZXR1cm5cXHJcXG5cXHJcXG4gICAgaW5Db2RlID0gbmV3SW5Db2RlXFxyXFxuICAgIHhpZCA9IHV1aWR2NCgpLnJlcGxhY2UoLy0vZywgJycpXFxyXFxuICAgIHQgPSBTdHJpbmcoRGF0ZS5ub3coKSlcXHJcXG4gICAga2V5ID0gZ2V0VUFLZXkoKVxcclxcbiAgICB1YSA9IGdldFVzZXJBZ2VudChrZXkpXFxyXFxuICAgIHNpZ24gPSBnZXRTaWduKClcXHJcXG4gICAgbWFpbCA9IGdldEVtYWlsKClcXHJcXG4gICAgZGVidWdfbG9nKGDojrflj5bpgq7nrrHlnLDlnYA6JHttYWlsfWApXFxyXFxuICAgIHRyeSB7XFxyXFxuICAgICAgICBkZWJ1Z19sb2coJ+iOt+WPluWIneWni1RPS0VOOicpXFxyXFxuICAgICAgICBjb25zdCByZXN1bHQxID0gaW5pdCgpXFxyXFxuICAgICAgICBkZWJ1Z19sb2cocmVzdWx0MSlcXHJcXG4gICAgICAgIGNvbnN0IHJlc3VsdDIgPSBnZXRJbWFnZSgpXFxyXFxuICAgICAgICBkZWJ1Z19sb2coJ+iOt+WPlua7keWdl+mqjOivgeaVsOaNrjonKVxcclxcbiAgICAgICAgZGVidWdfbG9nKHJlc3VsdDIpXFxyXFxuICAgICAgICBkZWJ1Z19sb2coYOmcgOimgeenu+WKqOa7keWdlzogJHtyZXN1bHQyWydzZWxlY3RJZCddfSDmrKFgKVxcclxcbiAgICAgICAgZGVidWdfbG9nKCfojrflj5bpqozor4Hmu5HlnZdUT0tFTjonKVxcclxcbiAgICAgICAgY29uc3QgcmVzdWx0MyA9IGdldE5ld1Rva2VuKHJlc3VsdDIsIHJlc3VsdDFbJ2NhcHRjaGFfdG9rZW4nXSlcXHJcXG4gICAgICAgIGRlYnVnX2xvZyhyZXN1bHQzKVxcclxcbiAgICAgICAgZGVidWdfbG9nKCflj5HpgIHpqozor4HnoIHpgq7ku7Y6JylcXHJcXG4gICAgICAgIGNvbnN0IHJlc3VsdDQgPSB2ZXJpZmljYXRpb24ocmVzdWx0M1snY2FwdGNoYV90b2tlbiddKVxcclxcbiAgICAgICAgZGVidWdfbG9nKHJlc3VsdDQpXFxyXFxuICAgICAgICBkZWJ1Z19sb2coJ+iOt+WPlumCruS7tumqjOivgeeggS4uLi4uLicpXFxyXFxuICAgICAgICBjb25zdCByZXN1bHQ1ID0gZ2V0Q29kZSgpXFxyXFxuICAgICAgICBkZWJ1Z19sb2coJ+mCruS7tumqjOivgeeggTonKVxcclxcbiAgICAgICAgZGVidWdfbG9nKHJlc3VsdDUpXFxyXFxuICAgICAgICBkZWJ1Z19sb2coJ+iOt+WPlumqjOivgVRPS0VOOicpXFxyXFxuICAgICAgICBjb25zdCByZXN1bHQ2ID0gdmVyaWZ5KHJlc3VsdDRbJ3ZlcmlmaWNhdGlvbl9pZCddLCByZXN1bHQ1KVxcclxcbiAgICAgICAgZGVidWdfbG9nKHJlc3VsdDYpXFxyXFxuICAgICAgICBkZWJ1Z19sb2coJ+iOt+WPluaWsOi0puaIt0lE5Y+KVE9LRU46JylcXHJcXG4gICAgICAgIGNvbnN0IHJlc3VsdDcgPSBzaWdudXAocmVzdWx0NlsndmVyaWZpY2F0aW9uX3Rva2VuJ10pXFxyXFxuICAgICAgICBkZWJ1Z19sb2cocmVzdWx0NylcXHJcXG4gICAgICAgIGRlYnVnX2xvZygn6I635Y+W5LqM5qyh5a6J5YWo6aqM6K+BVE9LRU46JylcXHJcXG4gICAgICAgIGNvbnN0IHJlc3VsdDggPSBpbml0MShyZXN1bHQ3WydhY2Nlc3NfdG9rZW4nXSwgcmVzdWx0N1snc3ViJ10pXFxyXFxuICAgICAgICBkZWJ1Z19sb2cocmVzdWx0OClcXHJcXG4gICAgICAgIGRlYnVnX2xvZygn5bCd6K+V5Y+R6LW36YKA6K+3OicpXFxyXFxuICAgICAgICBjb25zdCByZXN1bHQ5ID0gaW52aXRlKHJlc3VsdDdbJ3N1YiddLCByZXN1bHQ3WydhY2Nlc3NfdG9rZW4nXSwgcmVzdWx0OFsnY2FwdGNoYV90b2tlbiddKVxcclxcbiAgICAgICAgZGVidWdfbG9nKHJlc3VsdDkpXFxyXFxuICAgICAgICBkZWJ1Z19sb2coJ+acgOWQjue7k+aenDonKVxcclxcbiAgICAgICAgY29uc3QgcmVzdWx0MTAgPSBhY3RpdmF0aW9uQ29kZShyZXN1bHQ3WydhY2Nlc3NfdG9rZW4nXSwgcmVzdWx0OFsnY2FwdGNoYV90b2tlbiddKVxcclxcbiAgICAgICAgZGVidWdfbG9nKHJlc3VsdDEwKVxcclxcbiAgICAgICAgY2hlY2tfaW52aXRlX3Jlc3VsdChyZXN1bHQxMClcXHJcXG4gICAgICAgIHB1dE15VmFyKCdpbnZpdGVfY291bnQnLCAoaW52aXRlX2N1cnJlbnRfY291bnQgKyAxKS50b1N0cmluZygpKVxcclxcbiAgICB9IGNhdGNoIChlcnJvcikge1xcclxcbiAgICAgICAgZGVidWdfbG9nKGVycm9yKVxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbiQuZXhwb3J0cyA9IHtcXHJcXG4gICAgaW52aXRlX2dvLFxcclxcbn1cXHJcXG5cXHJcXG4vLyDnoa7orqTmmK/lkKbpgoDor7fmiJDlip/lh73mlbBcXHJcXG5cXHJcXG5mdW5jdGlvbiBjaGVja19pbnZpdGVfcmVzdWx0KHJlc3VsdDEwKSB7XFxyXFxuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKClcXHJcXG4gICAgLy8g5qC85byP5YyW5pel5pyf5ZKM5pe26Ze05Li6ICdZWVlZL01NL0REIEhIOk1NJ1xcclxcbiAgICBjb25zdCBmb3JtYXR0ZWRUaW1lID0gYCR7bm93LmdldEZ1bGxZZWFyKCl9LyR7KG5vdy5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfS8ke25vd1xcclxcbiAgICAgICAgLmdldERhdGUoKVxcclxcbiAgICAgICAgLnRvU3RyaW5nKClcXHJcXG4gICAgICAgIC5wYWRTdGFydCgyLCAnMCcpfS8ke25vdy5nZXRIb3VycygpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06JHtub3dcXHJcXG4gICAgICAgIC5nZXRNaW51dGVzKClcXHJcXG4gICAgICAgIC50b1N0cmluZygpXFxyXFxuICAgICAgICAucGFkU3RhcnQoMiwgJzAnKX1gXFxyXFxuICAgIC8vIHNldEl0ZW0oJ2ludml0ZV9yZXN1bHQnLCBgJHtmb3JtYXR0ZWRUaW1lfWApXFxyXFxuICAgIGlmIChyZXN1bHQxMC5kYXRhLnN0YXR1cyA9PSBcXFwib2tcXFwiKSB7XFxyXFxuICAgICAgICAkLmxvZyhcXFwi5Yi35paw6YKA6K+35oiQ5Yqf5LqG5ZGiXFxcIilcXHJcXG4gICAgICAgIHNldEl0ZW0oJ2ludml0ZV9yZXN1bHQnLCBgJHtmb3JtYXR0ZWRUaW1lfWApXFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICBzZXRJdGVtKCdpbnZpdGVfcmVzdWx0JywgXFxcIkZhaWxcXFwiKVxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbi8vID09PT09PT09PT09PT09PemCrueusUFQSeWHveaVsD09PT09PT09PT09PT09PT09PVxcclxcblxcclxcbmZ1bmN0aW9uIGdldEVtYWlsKCkge1xcclxcbiAgICBjb25zdCBkb21haW5zID0gWyd5em0uZGUnLCAncWFicS5jb20nLCAnZW5kLnR3JywgJ3V1Zi5tZSddXFxyXFxuICAgIGNvbnN0IGRvbWFpbiA9IGRvbWFpbnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZG9tYWlucy5sZW5ndGgpXVxcclxcbiAgICBjb25zdCBjaGFyYWN0ZXJzID0gJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSdcXHJcXG4gICAgbGV0IHJlc3VsdCA9ICcnXFxyXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcclxcbiAgICAgICAgbGV0IHJhbmRvbUluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVycy5sZW5ndGgpXFxyXFxuICAgICAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQocmFuZG9tSW5kZXgpXFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIHJlc3VsdCArICdAJyArIGRvbWFpblxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiBnZXRFbWFpbElkKHRlbXApIHtcXHJcXG4gICAgdHJ5IHtcXHJcXG4gICAgICAgIHJldHVybiB0ZW1wWzBdWydpZCddXFxyXFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XFxyXFxuICAgICAgICByZXR1cm4gZmFsc2VcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiBleHRyYWN0VmVyaWZpY2F0aW9uQ29kZSh0ZXh0KSB7XFxyXFxuICAgIGNvbnN0IHBhdHRlcm4gPSAvPGgyPihcXFxcZHs2fSk8XFxcXC9oMj4vIC8vIOWMuemFjTbkvY3ov57nu63mlbDlrZdcXHJcXG4gICAgY29uc3QgbWF0Y2ggPSB0ZXh0Lm1hdGNoKHBhdHRlcm4pXFxyXFxuICAgIGlmIChtYXRjaCkge1xcclxcbiAgICAgICAgcmV0dXJuIG1hdGNoWzFdXFxyXFxuICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICByZXR1cm4gbnVsbFxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbmZ1bmN0aW9uIGdldENvZGUoKSB7XFxyXFxuICAgIHRyeSB7XFxyXFxuICAgICAgICBsZXQgdGVzdF9udW0gPSAxMFxcclxcbiAgICAgICAgbGV0IHJlc3BvbnNlID0gZmV0Y2goJ2h0dHBzOi8vYXBpLm1haWwuY3gvYXBpL3YxL2F1dGgvYXV0aG9yaXplX3Rva2VuJywge1xcclxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcclxcbiAgICAgICAgfSlcXHJcXG4gICAgICAgIGxldCByZXNwb25zZURhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKVxcclxcbiAgICAgICAgbGV0IGNvb2tpZSA9ICdhdXRoX3Rva2VuPSUyMicgKyByZXNwb25zZURhdGEgKyAnJTIyJTBBJ1xcclxcbiAgICAgICAgbGV0IGhlYWRlcnMgPSB7XFxyXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXHJcXG4gICAgICAgICAgICBBY2NlcHQ6ICdhcHBsaWNhdGlvbi9qc29uJyxcXHJcXG4gICAgICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7cmVzcG9uc2VEYXRhfWAsXFxyXFxuICAgICAgICAgICAgQ29va2llOiBjb29raWUsXFxyXFxuICAgICAgICB9XFxyXFxuICAgICAgICB3aGlsZSAodGVzdF9udW0gPj0gMCkge1xcclxcbiAgICAgICAgICAgIGxldCByZXNwb25zZTEgPSBmZXRjaChgaHR0cHM6Ly9hcGkubWFpbC5jeC9hcGkvdjEvbWFpbGJveC8ke21haWx9YCwge1xcclxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxcclxcbiAgICAgICAgICAgIH0pXFxyXFxuICAgICAgICAgICAgbGV0IHJlc3BvbnN0MURhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlMSlcXHJcXG4gICAgICAgICAgICBsZXQgaWQgPSBnZXRFbWFpbElkKHJlc3BvbnN0MURhdGEpXFxyXFxuICAgICAgICAgICAgaWYgKGlkKSB7XFxyXFxuICAgICAgICAgICAgICAgIGxldCByZXNwb25zZTIgPSBmZXRjaChgaHR0cHM6Ly9hcGkubWFpbC5jeC9hcGkvdjEvbWFpbGJveC8ke21haWx9LyR7aWR9YCwge1xcclxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcXHJcXG4gICAgICAgICAgICAgICAgfSlcXHJcXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlMilcXHJcXG4gICAgICAgICAgICAgICAgbGV0IGVtYWlsVGV4dCA9IGRhdGFbJ2JvZHknXVsnaHRtbCddXFxyXFxuICAgICAgICAgICAgICAgIGxldCB2ZXJpZmljYXRpb25Db2RlID0gZXh0cmFjdFZlcmlmaWNhdGlvbkNvZGUoZW1haWxUZXh0KVxcclxcbiAgICAgICAgICAgICAgICBpZiAodmVyaWZpY2F0aW9uQ29kZSkge1xcclxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWNhdGlvbkNvZGVcXHJcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIHRlc3RfbnVtLS1cXHJcXG4gICAgICAgICAgICAgICAgICAgIGRlYnVnX2xvZygn5pyq6IO95o+Q5Y+W5Yiw6aqM6K+B56CBLOetieW+hTVz5ZCO6YeN6K+VJylcXHJcXG4gICAgICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxyXFxuICAgICAgICAgICAgICAgIHRlc3RfbnVtLS1cXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICAgICAgamF2YS5sYW5nLlRocmVhZC5zbGVlcCg1MDAwKVxcclxcbiAgICAgICAgfVxcclxcbiAgICB9IGNhdGNoIChlKSB7XFxyXFxuICAgICAgICBkZWJ1Z19sb2coZS50b1N0cmluZygpKVxcclxcbiAgICAgICAgdGhyb3cgZVxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbi8vICA9PT09PT09PT09PT09PT3liqDlr4blj4rlj4LmlbDlh73mlbA9PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuZnVuY3Rpb24gdXVpZHY0KCkge1xcclxcbiAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbiAoYykge1xcclxcbiAgICAgICAgY29uc3QgciA9IChNYXRoLnJhbmRvbSgpICogMTYpIHwgMCxcXHJcXG4gICAgICAgICAgICB2ID0gYyA9PT0gJ3gnID8gciA6IChyICYgMHgzKSB8IDB4OFxcclxcbiAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpXFxyXFxuICAgIH0pXFxyXFxufVxcclxcblxcclxcbmZ1bmN0aW9uIGdldFVBS2V5KCkge1xcclxcbiAgICBjb25zdCBnID0geGlkICsgJ2NvbS5waWtjbG91ZC5waWtwYWsxYXBwa2V5J1xcclxcbiAgICBjb25zdCBmID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlVVRGOChnKS50b0RpZ2VzdCgpLnNoYTEoKVxcclxcbiAgICBjb25zdCBoID0gbWQ1KGYpXFxyXFxuICAgIHJldHVybiB4aWQgKyBoXFxyXFxufVxcclxcblxcclxcbmZ1bmN0aW9uIGdldFVzZXJBZ2VudChrZXkpIHtcXHJcXG4gICAgcmV0dXJuIGBBTkRST0lELWNvbS5waWtjbG91ZC5waWtwYWsvMS4zOC4wIHByb3RvY29sdmVyc2lvbi8yMDAgYWNjZXNzdHlwZS8gY2xpZW50aWQvJHtjbGllbnR9IGNsaWVudHZlcnNpb24vMS4zOC4wIGFjdGlvbl90eXBlLyBuZXR3b3JrdHlwZS9XSUZJIHNlc3Npb25pZC8gZGV2aWNlaWQvJHt4aWR9IHByb3ZpZGVybmFtZS9OT05FIGRldmljZXNpZ24vZGl2MTAxLiR7a2V5fSByZWZyZXNoX3Rva2VuLyBzZGt2ZXJzaW9uLzEuMS4wLjExMDAwMCBkYXRldGltZS8ke3R9IHVzcm5vLyBhcHBuYW1lL2FuZHJvaWQtY29tLnBpa2Nsb3VkLnBpa3BhayBzZXNzaW9uX29yaWdpbi8gZ3JhbnRfdHlwZS8gYXBwaWQvIGNsaWVudGlwLyBkZXZpY2VuYW1lLyR7ZGV2aWNlTmFtZX1fJHtkZXZpY2VNb2RlbH0gb3N2ZXJzaW9uLzEzIHBsYXRmb3JtdmVyc2lvbi8xMCBhY2Nlc3Ntb2RlLyBkZXZpY2Vtb2RlbC8ke2RldmljZU1vZGVsfWBcXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gZ2V0U2lnbigpIHtcXHJcXG4gICAgY29uc3QgZSA9IFtcXHJcXG4gICAgICAgIHtcXHJcXG4gICAgICAgICAgICBhbGc6ICdtZDUnLFxcclxcbiAgICAgICAgICAgIHNhbHQ6ICdaMUdVSDlGUGRkMnVSNDgnLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgICAgIHtcXHJcXG4gICAgICAgICAgICBhbGc6ICdtZDUnLFxcclxcbiAgICAgICAgICAgIHNhbHQ6ICdXNEF0OENOMDBZZUlDZnJoS3llJyxcXHJcXG4gICAgICAgIH0sXFxyXFxuICAgICAgICB7XFxyXFxuICAgICAgICAgICAgYWxnOiAnbWQ1JyxcXHJcXG4gICAgICAgICAgICBzYWx0OiAnV2JzSnNleE1USWorcWp1Vk5rVFpVSnhxVWtkZicsXFxyXFxuICAgICAgICB9LFxcclxcbiAgICAgICAge1xcclxcbiAgICAgICAgICAgIGFsZzogJ21kNScsXFxyXFxuICAgICAgICAgICAgc2FsdDogJ081NmJjV01vSGFUWGV5NVFuektYRFVFVGVhVlNEJyxcXHJcXG4gICAgICAgIH0sXFxyXFxuICAgICAgICB7XFxyXFxuICAgICAgICAgICAgYWxnOiAnbWQ1JyxcXHJcXG4gICAgICAgICAgICBzYWx0OiAnbkFOM2pCcml5OC9QWEdBZHNuM3lQTVUnLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgICAgIHtcXHJcXG4gICAgICAgICAgICBhbGc6ICdtZDUnLFxcclxcbiAgICAgICAgICAgIHNhbHQ6ICcrT1FFaW9ORUNOZjlVZFJlJyxcXHJcXG4gICAgICAgIH0sXFxyXFxuICAgICAgICB7XFxyXFxuICAgICAgICAgICAgYWxnOiAnbWQ1JyxcXHJcXG4gICAgICAgICAgICBzYWx0OiAnMkJUQnhaM0liUG5rcnJmZC8nLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgICAgIHtcXHJcXG4gICAgICAgICAgICBhbGc6ICdtZDUnLFxcclxcbiAgICAgICAgICAgIHNhbHQ6ICdnQmlwNUFZdG01MycsXFxyXFxuICAgICAgICB9LFxcclxcbiAgICAgICAge1xcclxcbiAgICAgICAgICAgIGFsZzogJ21kNScsXFxyXFxuICAgICAgICAgICAgc2FsdDogJzlGTXlydmpaRlpKVDVZK2IxTmVTWWZzNScsXFxyXFxuICAgICAgICB9LFxcclxcbiAgICAgICAge1xcclxcbiAgICAgICAgICAgIGFsZzogJ21kNScsXFxyXFxuICAgICAgICAgICAgc2FsdDogJzBjSUJ0RVZXWUNLZElPbE9YblRKUGhMR1UveTUnLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgICAgIHtcXHJcXG4gICAgICAgICAgICBhbGc6ICdtZDUnLFxcclxcbiAgICAgICAgICAgIHNhbHQ6ICc5Mmo0SStaaU15eEZ4NlEnLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgICAgIHtcXHJcXG4gICAgICAgICAgICBhbGc6ICdtZDUnLFxcclxcbiAgICAgICAgICAgIHNhbHQ6ICd4TkZOOVJuVWx1MjE4cycsXFxyXFxuICAgICAgICB9LFxcclxcbiAgICAgICAge1xcclxcbiAgICAgICAgICAgIGFsZzogJ21kNScsXFxyXFxuICAgICAgICAgICAgc2FsdDogJ1VaY25uUTJua2FZMFMnLFxcclxcbiAgICAgICAgfSxcXHJcXG4gICAgXVxcclxcbiAgICBsZXQgbWQ1X2hhc2ggPSBgWU54VDl3N0dNZFd2RU9LYTEuMzguMGNvbS5waWtjbG91ZC5waWtwYWske3hpZH0ke3R9YFxcclxcbiAgICBlLmZvckVhY2goKGl0ZW0pID0+IHtcXHJcXG4gICAgICAgIG1kNV9oYXNoICs9IGl0ZW0uc2FsdFxcclxcbiAgICAgICAgbWQ1X2hhc2ggPSBtZDUobWQ1X2hhc2gpXFxyXFxuICAgIH0pXFxyXFxuXFxyXFxuICAgIHJldHVybiBtZDVfaGFzaFxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiBpdGVtX2NvbXBhcmUoaW1nX2xpc3QsIG1vZGVfbGlzdCkge1xcclxcbiAgICBsZXQgc2NvcmUgPSAwXFxyXFxuICAgIGxldCByYW5rID0gMFxcclxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xcclxcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcXHJcXG4gICAgICAgICAgICBpZiAoaW1nX2xpc3RbaV1bal0gIT09IG1vZGVfbGlzdFtpXVtqXSkge1xcclxcbiAgICAgICAgICAgICAgICBzY29yZSArPSAxXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgfVxcclxcbiAgICB9XFxyXFxuICAgIGlmIChzY29yZSA9PT0gMikge1xcclxcbiAgICAgICAgcmFuayArPSAxXFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIHJhbmtcXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gbGlzdF9jb21wYXJlKGZyYW1lcykge1xcclxcbiAgICBsZXQgc2NvcmVfbGlzdCA9IFtdXFxyXFxuICAgIGxldCBmbGFnID0gMFxcclxcbiAgICBmb3IgKGxldCBmcmFtZSBvZiBmcmFtZXMpIHtcXHJcXG4gICAgICAgIGxldCBpbWdfbGlzdCA9IGZyYW1lLm1hdHJpeFxcclxcbiAgICAgICAgbGV0IHNjb3JlcyA9IDBcXHJcXG4gICAgICAgIGZvciAobGV0IG1vZGVfZnJhbWUgb2YgZnJhbWVzKSB7XFxyXFxuICAgICAgICAgICAgbGV0IG1vZGVfbGlzdCA9IG1vZGVfZnJhbWUubWF0cml4XFxyXFxuICAgICAgICAgICAgbGV0IG9uZV9zY29yZSA9IGl0ZW1fY29tcGFyZShpbWdfbGlzdCwgbW9kZV9saXN0KVxcclxcbiAgICAgICAgICAgIHNjb3JlcyArPSBvbmVfc2NvcmVcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHNjb3JlX2xpc3QucHVzaChzY29yZXMpXFxyXFxuICAgICAgICBmbGFnICs9IDFcXHJcXG4gICAgfVxcclxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEyOyBpKyspIHtcXHJcXG4gICAgICAgIGlmIChzY29yZV9saXN0W2ldID09PSAxMSkge1xcclxcbiAgICAgICAgICAgIC8vIGRlYnVnX2xvZyhpKVxcclxcbiAgICAgICAgICAgIHJldHVybiBpXFxyXFxuICAgICAgICB9XFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gcihlLCB0KSB7XFxyXFxuICAgIGxldCBuID0gdCAtIDFcXHJcXG4gICAgaWYgKG4gPCAwKSB7XFxyXFxuICAgICAgICBuID0gMFxcclxcbiAgICB9XFxyXFxuICAgIGxldCByID0gZVtuXVxcclxcblxcclxcbiAgICBsZXQgdSA9IE1hdGguZmxvb3Ioclsncm93J10gLyAyKSArIDFcXHJcXG4gICAgbGV0IGMgPSBNYXRoLmZsb29yKHJbJ2NvbHVtbiddIC8gMikgKyAxXFxyXFxuXFxyXFxuICAgIGxldCBmID0gclsnbWF0cml4J11bdV1bY11cXHJcXG4gICAgbGV0IGwgPSB0ICsgMVxcclxcbiAgICBpZiAobCA+PSBlLmxlbmd0aCkge1xcclxcbiAgICAgICAgbCA9IHRcXHJcXG4gICAgfVxcclxcblxcclxcbiAgICBsZXQgZCA9IGVbbF1cXHJcXG4gICAgbGV0IHAgPSBsICUgZFsncm93J11cXHJcXG4gICAgbGV0IGggPSBsICUgZFsnY29sdW1uJ11cXHJcXG5cXHJcXG4gICAgbGV0IGcgPSBkWydtYXRyaXgnXVtwXVtoXVxcclxcblxcclxcbiAgICBsZXQgeSA9IGVbdF1cXHJcXG4gICAgbGV0IG0gPSAzICUgeVsncm93J11cXHJcXG4gICAgbGV0IHYgPSA3ICUgeVsnY29sdW1uJ11cXHJcXG4gICAgbGV0IHcgPSB5WydtYXRyaXgnXVttXVt2XVxcclxcbiAgICBsZXQgYiA9IHBhcnNlSW50KGkoZikpICsgbyh3KVxcclxcbiAgICBsZXQgeCA9IHBhcnNlSW50KGkodykpIC0gbyhmKVxcclxcblxcclxcbiAgICByZXR1cm4gW3MoYShpKGYpLCBvKGYpKSksIHMoYShpKGcpLCBvKGcpKSksIHMoYShpKHcpLCBvKHcpKSksIHMoYShiLCB4KSldXFxyXFxufVxcclxcblxcclxcbmZ1bmN0aW9uIGkoZSkge1xcclxcbiAgICByZXR1cm4gcGFyc2VJbnQoZS5zcGxpdCgnLCcpWzBdKVxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiBvKGUpIHtcXHJcXG4gICAgcmV0dXJuIHBhcnNlSW50KGUuc3BsaXQoJywnKVsxXSlcXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gYShlLCB0KSB7XFxyXFxuICAgIHJldHVybiBlICsgJ17igaNeJyArIHRcXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gcyhlKSB7XFxyXFxuICAgIGxldCB0ID0gMFxcclxcbiAgICBsZXQgbiA9IGUubGVuZ3RoXFxyXFxuICAgIGZvciAobGV0IHIgPSAwOyByIDwgbjsgcisrKSB7XFxyXFxuICAgICAgICB0ID0gdSgzMSAqIHQgKyBlLmNoYXJDb2RlQXQocikpXFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIHRcXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gdShlKSB7XFxyXFxuICAgIGxldCB0ID0gLTIxNDc0ODM2NDhcXHJcXG4gICAgbGV0IG4gPSAyMTQ3NDgzNjQ3XFxyXFxuICAgIGlmIChlID4gbikge1xcclxcbiAgICAgICAgcmV0dXJuIHQgKyAoKGUgLSBuKSAlIChuIC0gdCArIDEpKSAtIDFcXHJcXG4gICAgfVxcclxcbiAgICBpZiAoZSA8IHQpIHtcXHJcXG4gICAgICAgIHJldHVybiBuIC0gKCh0IC0gZSkgJSAobiAtIHQgKyAxKSkgKyAxXFxyXFxuICAgIH1cXHJcXG4gICAgcmV0dXJuIGVcXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gYyhlLCB0KSB7XFxyXFxuICAgIHJldHVybiBzKGUgKyAn4oGjJyArIHQpXFxyXFxufVxcclxcblxcclxcbmZ1bmN0aW9uIGltZ19qaihlLCB0LCBuKSB7XFxyXFxuICAgIHJldHVybiB7XFxyXFxuICAgICAgICBjYTogcihlLCB0KSxcXHJcXG4gICAgICAgIGY6IGMobiwgdCksXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gID09PT09PT09PT09PT09PT3nvZHnu5zor7fmsYLlh73mlbA9PT09PT09PT09PT09PT09XFxyXFxuXFxyXFxuZnVuY3Rpb24gaW5pdCgpIHtcXHJcXG4gICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vdXNlci5teXBpa3Bhay5jb20vdjEvc2hpZWxkL2NhcHRjaGEvaW5pdCdcXHJcXG4gICAgY29uc3QgcmVxdWVzdHVybCA9IGJ1aWxkVXJsKHVybCwge1xcclxcbiAgICAgICAgY2xpZW50X2lkOiBjbGllbnQsXFxyXFxuICAgIH0pXFxyXFxuICAgIGNvbnN0IGpzb25fZGF0YSA9IHtcXHJcXG4gICAgICAgIGFjdGlvbjogJ1BPU1Q6L3YxL2F1dGgvdmVyaWZpY2F0aW9uJyxcXHJcXG4gICAgICAgIGNhcHRjaGFfdG9rZW46ICcnLFxcclxcbiAgICAgICAgY2xpZW50X2lkOiBjbGllbnQsXFxyXFxuICAgICAgICBkZXZpY2VfaWQ6IHhpZCxcXHJcXG4gICAgICAgIG1ldGE6IHtcXHJcXG4gICAgICAgICAgICBjYXB0Y2hhX3NpZ246ICcxLicgKyBzaWduLFxcclxcbiAgICAgICAgICAgIHVzZXJfaWQ6ICcnLFxcclxcbiAgICAgICAgICAgIHBhY2thZ2VfbmFtZTogJ2NvbS5waWtjbG91ZC5waWtwYWsnLFxcclxcbiAgICAgICAgICAgIGNsaWVudF92ZXJzaW9uOiAnMS4zOC4wJyxcXHJcXG4gICAgICAgICAgICBlbWFpbDogbWFpbCxcXHJcXG4gICAgICAgICAgICB0aW1lc3RhbXA6IHQsXFxyXFxuICAgICAgICB9LFxcclxcbiAgICAgICAgcmVkaXJlY3RfdXJpOiAneGxhY2NzZGswMTovL3hiYXNlLmNsb3VkL2NhbGxiYWNrP3N0YXRlPWhhcmJvcicsXFxyXFxuICAgIH1cXHJcXG4gICAgY29uc3QgaGVhZGVycyA9IHtcXHJcXG4gICAgICAgICdYLURldmljZS1JZCc6IHhpZCxcXHJcXG4gICAgICAgICdVc2VyLUFnZW50JzogdWEsXFxyXFxuICAgIH1cXHJcXG4gICAgdHJ5IHtcXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gZmV0Y2gocmVxdWVzdHVybCwge1xcclxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcclxcbiAgICAgICAgICAgIGhlYWRlcnM6IE9iamVjdC5hc3NpZ24oXFxyXFxuICAgICAgICAgICAgICAgIHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxyXFxuICAgICAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgICAgIGhlYWRlcnNcXHJcXG4gICAgICAgICAgICApLFxcclxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGpzb25fZGF0YSksXFxyXFxuICAgICAgICB9KVxcclxcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZSlcXHJcXG4gICAgICAgIHJldHVybiByZXNwb25zZURhdGFcXHJcXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcXHJcXG4gICAgICAgIGRlYnVnX2xvZyhlcnJvci50b1N0cmluZygpKVxcclxcbiAgICAgICAgdGhyb3cgZXJyb3JcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiBnZXRJbWFnZSgpIHtcXHJcXG4gICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vdXNlci5teXBpa3Bhay5jb20vcHp6bC9nZW4nXFxyXFxuICAgIGNvbnN0IHJlcXVlc3R1cmwgPSBidWlsZFVybCh1cmwsIHtcXHJcXG4gICAgICAgIGRldmljZWlkOiB4aWQsXFxyXFxuICAgICAgICB0cmFjZWlkOiAnJyxcXHJcXG4gICAgfSlcXHJcXG5cXHJcXG4gICAgdHJ5IHtcXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gZmV0Y2gocmVxdWVzdHVybClcXHJcXG4gICAgICAgIGNvbnN0IGltZ3NKc29uID0gSlNPTi5wYXJzZShyZXNwb25zZSlcXHJcXG4gICAgICAgIGNvbnN0IGZyYW1lcyA9IGltZ3NKc29uWydmcmFtZXMnXVxcclxcbiAgICAgICAgY29uc3QgcGlkID0gaW1nc0pzb25bJ3BpZCddXFxyXFxuICAgICAgICBjb25zdCB0cmFjZWlkID0gaW1nc0pzb25bJ3RyYWNlaWQnXVxcclxcbiAgICAgICAgY29uc3Qgc2VsZWN0SWQgPSBsaXN0X2NvbXBhcmUoZnJhbWVzKVxcclxcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge1xcclxcbiAgICAgICAgICAgIGZyYW1lcyxcXHJcXG4gICAgICAgICAgICBwaWQsXFxyXFxuICAgICAgICAgICAgdHJhY2VpZCxcXHJcXG4gICAgICAgICAgICBzZWxlY3RJZCxcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIHJldHVybiByZXN1bHRcXHJcXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcXHJcXG4gICAgICAgIHRocm93IGVycm9yXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gZ2V0TmV3VG9rZW4ocmVzdWx0LCBjYXB0Y2hhKSB7XFxyXFxuICAgIHRyeSB7XFxyXFxuICAgICAgICBjb25zdCBmcmFtZXMgPSByZXN1bHQuZnJhbWVzXFxyXFxuICAgICAgICBjb25zdCBzZWxlY3RJZCA9IHJlc3VsdC5zZWxlY3RJZFxcclxcbiAgICAgICAgY29uc3QgdHJhY2VpZCA9IHJlc3VsdC50cmFjZWlkXFxyXFxuICAgICAgICBjb25zdCBwaWQgPSByZXN1bHQucGlkXFxyXFxuXFxyXFxuICAgICAgICBjb25zdCBqc29uID0gaW1nX2pqKGZyYW1lcywgcGFyc2VJbnQoc2VsZWN0SWQpLCBwaWQpXFxyXFxuXFxyXFxuICAgICAgICBjb25zdCBmID0ganNvbi5mXFxyXFxuXFxyXFxuICAgICAgICBjb25zdCBucGFjID0ganNvbi5jYVxcclxcbiAgICAgICAgY29uc3QgcmVxdWVzdHVybDEgPSBidWlsZFVybCgnaHR0cHM6Ly91c2VyLm15cGlrcGFrLmNvbS9wenpsL3ZlcmlmeScsIHtcXHJcXG4gICAgICAgICAgICBwaWQ6IFN0cmluZyhwaWQpLFxcclxcbiAgICAgICAgICAgIGRldmljZWlkOiBTdHJpbmcoeGlkKSxcXHJcXG4gICAgICAgICAgICB0cmFjZWlkOiBTdHJpbmcodHJhY2VpZCksXFxyXFxuICAgICAgICAgICAgZjogU3RyaW5nKGYpLFxcclxcbiAgICAgICAgICAgIG46IFN0cmluZyhucGFjWzBdKSxcXHJcXG4gICAgICAgICAgICBwOiBTdHJpbmcobnBhY1sxXSksXFxyXFxuICAgICAgICAgICAgYTogU3RyaW5nKG5wYWNbMl0pLFxcclxcbiAgICAgICAgICAgIGM6IFN0cmluZyhucGFjWzNdKSxcXHJcXG4gICAgICAgIH0pXFxyXFxuICAgICAgICBjb25zdCByZXNwb25zZTEgPSBmZXRjaChyZXF1ZXN0dXJsMSlcXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlMiA9IGZldGNoKFxcclxcbiAgICAgICAgICAgIGBodHRwczovL3VzZXIubXlwaWtwYWsuY29tL2NyZWRpdC92MS9yZXBvcnQ/ZGV2aWNlaWQ9JHt4aWR9JmNhcHRjaGFfdG9rZW49JHtjYXB0Y2hhfSZ0eXBlPXB6emxTbGlkZXImcmVzdWx0PTAmZGF0YT0ke3BpZH0mdHJhY2VpZD0ke3RyYWNlaWR9YFxcclxcbiAgICAgICAgKVxcclxcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRlID0gSlNPTi5wYXJzZShyZXNwb25zZTIpXFxyXFxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRlXFxyXFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XFxyXFxuICAgICAgICBkZWJ1Z19sb2coZXJyb3IudG9TdHJpbmcoKSlcXHJcXG4gICAgICAgIHRocm93IGVycm9yXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gdmVyaWZpY2F0aW9uKG5ld3Rva2VuKSB7XFxyXFxuICAgIHRyeSB7XFxyXFxuICAgICAgICBjb25zdCB1cmwgPSAnaHR0cHM6Ly91c2VyLm15cGlrcGFrLmNvbS92MS9hdXRoL3ZlcmlmaWNhdGlvbidcXHJcXG4gICAgICAgIGNvbnN0IHJlcXVlc3R1cmwgPSBidWlsZFVybCh1cmwsIHtcXHJcXG4gICAgICAgICAgICBjbGllbnRfaWQ6IGNsaWVudCxcXHJcXG4gICAgICAgIH0pXFxyXFxuICAgICAgICBjb25zdCBqc29uRGF0YSA9IHtcXHJcXG4gICAgICAgICAgICBjYXB0Y2hhX3Rva2VuOiBuZXd0b2tlbixcXHJcXG4gICAgICAgICAgICBlbWFpbDogbWFpbCxcXHJcXG4gICAgICAgICAgICBsb2NhbGU6ICd6aC1DTicsXFxyXFxuICAgICAgICAgICAgdGFyZ2V0OiAnQU5ZJyxcXHJcXG4gICAgICAgICAgICBjbGllbnRfaWQ6IGNsaWVudCxcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBPYmplY3QuYXNzaWduKFxcclxcbiAgICAgICAgICAgIHtcXHJcXG4gICAgICAgICAgICAgICAgJ1gtRGV2aWNlLUlkJzogeGlkLFxcclxcbiAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6IHVhLFxcclxcbiAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgYmFzaWNSZXF1ZXN0SGVhZGVyc18xLFxcclxcbiAgICAgICAgICAgIHtcXHJcXG4gICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXHJcXG4gICAgICAgICAgICB9XFxyXFxuICAgICAgICApXFxyXFxuXFxyXFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IHBvc3QocmVxdWVzdHVybCwge1xcclxcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXFxyXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoanNvbkRhdGEpLFxcclxcbiAgICAgICAgfSlcXHJcXG5cXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UpXFxyXFxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRhXFxyXFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XFxyXFxuICAgICAgICBkZWJ1Z19sb2coZXJyb3IudG9TdHJpbmcoKSlcXHJcXG4gICAgICAgIHRocm93IGVycm9yXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuZnVuY3Rpb24gdmVyaWZ5KHZlcmlmaWNhdGlvbklkLCBjb2RlKSB7XFxyXFxuICAgIGNvbnN0IHVybCA9ICdodHRwczovL3VzZXIubXlwaWtwYWsuY29tL3YxL2F1dGgvdmVyaWZpY2F0aW9uL3ZlcmlmeSdcXHJcXG4gICAgY29uc3QgcmVxdWVzdHVybCA9IGJ1aWxkVXJsKHVybCwge1xcclxcbiAgICAgICAgY2xpZW50X2lkOiBjbGllbnQsXFxyXFxuICAgIH0pXFxyXFxuICAgIGNvbnN0IGpzb25EYXRhID0ge1xcclxcbiAgICAgICAgY2xpZW50X2lkOiBjbGllbnQsXFxyXFxuICAgICAgICB2ZXJpZmljYXRpb25faWQ6IHZlcmlmaWNhdGlvbklkLFxcclxcbiAgICAgICAgdmVyaWZpY2F0aW9uX2NvZGU6IGNvZGUsXFxyXFxuICAgIH1cXHJcXG4gICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5hc3NpZ24oXFxyXFxuICAgICAgICB7XFxyXFxuICAgICAgICAgICAgJ1gtRGV2aWNlLUlkJzogeGlkLFxcclxcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogdWEsXFxyXFxuICAgICAgICB9LFxcclxcbiAgICAgICAgYmFzaWNSZXF1ZXN0SGVhZGVyc18xLFxcclxcbiAgICAgICAge1xcclxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxyXFxuICAgICAgICB9XFxyXFxuICAgIClcXHJcXG4gICAgdHJ5IHtcXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcG9zdChyZXF1ZXN0dXJsLCB7XFxyXFxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcXHJcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShqc29uRGF0YSksXFxyXFxuICAgICAgICB9KVxcclxcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZSlcXHJcXG4gICAgICAgIHJldHVybiByZXNwb25zZURhdGFcXHJcXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcXHJcXG4gICAgICAgIGRlYnVnX2xvZyhlcnJvci50b1N0cmluZygpKVxcclxcbiAgICAgICAgdGhyb3cgZXJyb3JcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiBzaWdudXAodmVyaWZpY2F0aW9uVG9rZW4pIHtcXHJcXG4gICAgY29uc3QgbmFtZSA9ICdVXycgKyBtYWlsLnNwbGl0KCdAJylbMF1cXHJcXG4gICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vdXNlci5teXBpa3Bhay5jb20vdjEvYXV0aC9zaWdudXAnXFxyXFxuICAgIGNvbnN0IHJlcXVlc3R1cmwgPSBidWlsZFVybCh1cmwsIHtcXHJcXG4gICAgICAgIGNsaWVudF9pZDogY2xpZW50LFxcclxcbiAgICB9KVxcclxcbiAgICBjb25zdCBqc29uRGF0YSA9IHtcXHJcXG4gICAgICAgIGNhcHRjaGFfdG9rZW46ICcnLFxcclxcbiAgICAgICAgY2xpZW50X2lkOiBjbGllbnQsXFxyXFxuICAgICAgICBjbGllbnRfc2VjcmV0OiAnZGJ3Mk90bVZFZXVVdklwdGIxQ295ZycsXFxyXFxuICAgICAgICBlbWFpbDogbWFpbCxcXHJcXG4gICAgICAgIG5hbWU6IG5hbWUsXFxyXFxuICAgICAgICBwYXNzd29yZDogcHdkLFxcclxcbiAgICAgICAgdmVyaWZpY2F0aW9uX3Rva2VuOiB2ZXJpZmljYXRpb25Ub2tlbixcXHJcXG4gICAgfVxcclxcbiAgICBjb25zdCBoZWFkZXJzID0gT2JqZWN0LmFzc2lnbihcXHJcXG4gICAgICAgIHtcXHJcXG4gICAgICAgICAgICAnWC1EZXZpY2UtSWQnOiB4aWQsXFxyXFxuICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiB1YSxcXHJcXG4gICAgICAgIH0sXFxyXFxuICAgICAgICBiYXNpY1JlcXVlc3RIZWFkZXJzXzEsXFxyXFxuICAgICAgICB7XFxyXFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgKVxcclxcbiAgICB0cnkge1xcclxcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBwb3N0KHJlcXVlc3R1cmwsIHtcXHJcXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxcclxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGpzb25EYXRhKSxcXHJcXG4gICAgICAgIH0pXFxyXFxuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKVxcclxcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YVxcclxcbiAgICB9IGNhdGNoIChlcnJvcikge1xcclxcbiAgICAgICAgZGVidWdfbG9nKGVycm9yLnRvU3RyaW5nKCkpXFxyXFxuICAgICAgICB0aHJvdyBlcnJvclxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbmZ1bmN0aW9uIGluaXQxKGFjY2Vzc1Rva2VuLCBzdWIpIHtcXHJcXG4gICAgdHJ5IHtcXHJcXG4gICAgICAgIGNvbnN0IHVybCA9ICdodHRwczovL3VzZXIubXlwaWtwYWsuY29tL3YxL3NoaWVsZC9jYXB0Y2hhL2luaXQnXFxyXFxuICAgICAgICBjb25zdCByZXF1ZXN0dXJsID0gYnVpbGRVcmwodXJsLCB7XFxyXFxuICAgICAgICAgICAgY2xpZW50X2lkOiBjbGllbnQsXFxyXFxuICAgICAgICB9KVxcclxcbiAgICAgICAgY29uc3QganNvbkRhdGEgPSB7XFxyXFxuICAgICAgICAgICAgYWN0aW9uOiAnUE9TVDovdmlwL3YxL2FjdGl2aXR5L2ludml0ZScsXFxyXFxuICAgICAgICAgICAgY2FwdGNoYV90b2tlbjogYWNjZXNzVG9rZW4sXFxyXFxuICAgICAgICAgICAgY2xpZW50X2lkOiBjbGllbnQsXFxyXFxuICAgICAgICAgICAgZGV2aWNlX2lkOiB4aWQsXFxyXFxuICAgICAgICAgICAgbWV0YToge1xcclxcbiAgICAgICAgICAgICAgICBjYXB0Y2hhX3NpZ246IGAxLiR7c2lnbn1gLFxcclxcbiAgICAgICAgICAgICAgICB1c2VyX2lkOiBzdWIsXFxyXFxuICAgICAgICAgICAgICAgIHBhY2thZ2VfbmFtZTogJ2NvbS5waWtjbG91ZC5waWtwYWsnLFxcclxcbiAgICAgICAgICAgICAgICBjbGllbnRfdmVyc2lvbjogJzEuMzguMCcsXFxyXFxuICAgICAgICAgICAgICAgIHRpbWVzdGFtcDogdCxcXHJcXG4gICAgICAgICAgICB9LFxcclxcbiAgICAgICAgICAgIHJlZGlyZWN0X3VyaTogJ3hsYWNjc2RrMDE6Ly94YmFzZS5jbG91ZC9jYWxsYmFjaz9zdGF0ZT1oYXJib3InLFxcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IE9iamVjdC5hc3NpZ24oXFxyXFxuICAgICAgICAgICAge1xcclxcbiAgICAgICAgICAgICAgICAnWC1EZXZpY2UtSWQnOiB4aWQsXFxyXFxuICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogdWEsXFxyXFxuICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgICAgICBiYXNpY1JlcXVlc3RIZWFkZXJzXzEsXFxyXFxuICAgICAgICAgICAge1xcclxcbiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxcclxcbiAgICAgICAgICAgIH1cXHJcXG4gICAgICAgIClcXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcG9zdChyZXF1ZXN0dXJsLCB7XFxyXFxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyxcXHJcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShqc29uRGF0YSksXFxyXFxuICAgICAgICB9KVxcclxcbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZSlcXHJcXG4gICAgICAgIHJldHVybiByZXNwb25zZURhdGFcXHJcXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcXHJcXG4gICAgICAgIGRlYnVnX2xvZyhlcnJvci50b1N0cmluZygpKVxcclxcbiAgICAgICAgdGhyb3cgZXJyb3JcXHJcXG4gICAgfVxcclxcbn1cXHJcXG5cXHJcXG5mdW5jdGlvbiBpbnZpdGUoc3ViLCBhY2Nlc3NUb2tlbiwgY2FwdGNoYSkge1xcclxcbiAgICB0cnkge1xcclxcbiAgICAgICAgY29uc3QgdXJsID0gJ2h0dHBzOi8vYXBpLWRyaXZlLm15cGlrcGFrLmNvbS92aXAvdjEvYWN0aXZpdHkvaW52aXRlJ1xcclxcbiAgICAgICAgY29uc3QganNvbkRhdGEgPSB7XFxyXFxuICAgICAgICAgICAgZGF0YToge1xcclxcbiAgICAgICAgICAgICAgICBzZGtfaW50OiAnMzMnLFxcclxcbiAgICAgICAgICAgICAgICB1dWlkOiB4aWQsXFxyXFxuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiAnMScsXFxyXFxuICAgICAgICAgICAgICAgIHVzZXJpZDogc3ViLFxcclxcbiAgICAgICAgICAgICAgICB1c2VyU3ViOiAnJyxcXHJcXG4gICAgICAgICAgICAgICAgcHJvZHVjdF9mbGF2b3JfbmFtZTogJ2NoYScsXFxyXFxuICAgICAgICAgICAgICAgIGxhbmd1YWdlX3N5c3RlbTogJ3poLUNOJyxcXHJcXG4gICAgICAgICAgICAgICAgbGFuZ3VhZ2VfYXBwOiAnemgtQ04nLFxcclxcbiAgICAgICAgICAgICAgICBidWlsZF92ZXJzaW9uX3JlbGVhc2U6ICcxMycsXFxyXFxuICAgICAgICAgICAgICAgIHBob25lTW9kZWw6IGRldmljZU1vZGVsLFxcclxcbiAgICAgICAgICAgICAgICBidWlsZF9tYW51ZmFjdHVyZXI6IGRldmljZU5hbWUsXFxyXFxuICAgICAgICAgICAgICAgIGJ1aWxkX3Nka19pbnQ6ICczMycsXFxyXFxuICAgICAgICAgICAgICAgIGNoYW5uZWw6ICdvZmZpY2lhbCcsXFxyXFxuICAgICAgICAgICAgICAgIHZlcnNpb25Db2RlOiAnMTAxNTAnLFxcclxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uTmFtZTogJzEuMzguMCcsXFxyXFxuICAgICAgICAgICAgICAgIGluc3RhbGxGcm9tOiAnb3RoZXInLFxcclxcbiAgICAgICAgICAgICAgICBjb3VudHJ5OiAnUEwnLFxcclxcbiAgICAgICAgICAgIH0sXFxyXFxuICAgICAgICAgICAgYXBrX2V4dHJhOiB7XFxyXFxuICAgICAgICAgICAgICAgIGNoYW5uZWw6ICdvZmZpY2lhbCcsXFxyXFxuICAgICAgICAgICAgfSxcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7XFxyXFxuICAgICAgICAgICAgSG9zdDogJ2FwaS1kcml2ZS5teXBpa3Bhay5jb20nLFxcclxcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gLFxcclxcbiAgICAgICAgICAgIHByb2R1Y3RfZmxhdm9yX25hbWU6ICdjaGEnLFxcclxcbiAgICAgICAgICAgICd4LWNhcHRjaGEtdG9rZW4nOiBjYXB0Y2hhLFxcclxcbiAgICAgICAgICAgICd4LWNsaWVudC12ZXJzaW9uLWNvZGUnOiAnMTAxNTAnLFxcclxcbiAgICAgICAgICAgICd4LWRldmljZS1pZCc6IHhpZCxcXHJcXG4gICAgICAgICAgICAndXNlci1hZ2VudCc6IHVhLFxcclxcbiAgICAgICAgICAgIGNvdW50cnk6ICdQTCcsXFxyXFxuICAgICAgICAgICAgJ2FjY2VwdC1sYW5ndWFnZSc6ICd6aC1DTicsXFxyXFxuICAgICAgICAgICAgJ3gtcGVlci1pZCc6IHhpZCxcXHJcXG4gICAgICAgICAgICAneC11c2VyLXJlZ2lvbic6ICcyJyxcXHJcXG4gICAgICAgICAgICAneC1zeXN0ZW0tbGFuZ3VhZ2UnOiAnemgtQ04nLFxcclxcbiAgICAgICAgICAgICd4LWFsdC1jYXBhYmlsaXR5JzogJzMnLFxcclxcbiAgICAgICAgICAgICdhY2NlcHQtZW5jb2RpbmcnOiAnZ3ppcCcsXFxyXFxuICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcXHJcXG4gICAgICAgIH1cXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcG9zdCh1cmwsIHtcXHJcXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxcclxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGpzb25EYXRhKSxcXHJcXG4gICAgICAgIH0pXFxyXFxuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlKVxcclxcbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlRGF0YVxcclxcbiAgICB9IGNhdGNoIChlcnJvcikge1xcclxcbiAgICAgICAgZGVidWdfbG9nKGVycm9yLnRvU3RyaW5nKCkpXFxyXFxuICAgICAgICB0aHJvdyBlcnJvclxcclxcbiAgICB9XFxyXFxufVxcclxcblxcclxcbmZ1bmN0aW9uIGFjdGl2YXRpb25Db2RlKGFjY2Vzc1Rva2VuLCBjYXB0Y2hhKSB7XFxyXFxuICAgIGNvbnN0IHVybCA9ICdodHRwczovL2FwaS1kcml2ZS5teXBpa3Bhay5jb20vdmlwL3YxL29yZGVyL2FjdGl2YXRpb24tY29kZSdcXHJcXG4gICAgY29uc3QgZGF0YSA9IHtcXHJcXG4gICAgICAgIGFjdGl2YXRpb25fY29kZTogaW5Db2RlLFxcclxcbiAgICB9XFxyXFxuICAgIGNvbnN0IGxoID0gSlNPTi5zdHJpbmdpZnkoZGF0YSkubGVuZ3RoLnRvU3RyaW5nKClcXHJcXG4gICAgY29uc3QgaGVhZGVycyA9IHtcXHJcXG4gICAgICAgIEhvc3Q6ICdhcGktZHJpdmUubXlwaWtwYWsuY29tJyxcXHJcXG4gICAgICAgIGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthY2Nlc3NUb2tlbn1gLFxcclxcbiAgICAgICAgcHJvZHVjdF9mbGF2b3JfbmFtZTogJ2NoYScsXFxyXFxuICAgICAgICAneC1jYXB0Y2hhLXRva2VuJzogY2FwdGNoYSxcXHJcXG4gICAgICAgICd4LWNsaWVudC12ZXJzaW9uLWNvZGUnOiAnMTAxNTAnLFxcclxcbiAgICAgICAgJ3gtZGV2aWNlLWlkJzogeGlkLFxcclxcbiAgICAgICAgJ3VzZXItYWdlbnQnOiB1YSxcXHJcXG4gICAgICAgIGNvdW50cnk6ICdESycsXFxyXFxuICAgICAgICAnYWNjZXB0LWxhbmd1YWdlJzogJ3poLUNOJyxcXHJcXG4gICAgICAgICd4LXBlZXItaWQnOiB4aWQsXFxyXFxuICAgICAgICAneC11c2VyLXJlZ2lvbic6ICcyJyxcXHJcXG4gICAgICAgICd4LXN5c3RlbS1sYW5ndWFnZSc6ICd6aC1DTicsXFxyXFxuICAgICAgICAneC1hbHQtY2FwYWJpbGl0eSc6ICczJyxcXHJcXG4gICAgICAgICdjb250ZW50LWxlbmd0aCc6IGxoLFxcclxcbiAgICAgICAgJ2FjY2VwdC1lbmNvZGluZyc6ICdnemlwJyxcXHJcXG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxyXFxuICAgIH1cXHJcXG4gICAgdHJ5IHtcXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcG9zdCh1cmwsIHtcXHJcXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzLFxcclxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxcclxcbiAgICAgICAgfSlcXHJcXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlRGF0ZSA9IEpTT04ucGFyc2UocmVzcG9uc2UpXFxyXFxuICAgICAgICByZXR1cm4gcmVzcG9uc2VEYXRlXFxyXFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XFxyXFxuICAgICAgICBkZWJ1Z19sb2coZXJyb3IudG9TdHJpbmcoKSlcXHJcXG4gICAgICAgIHRocm93IGVycm9yXFxyXFxuICAgIH1cXHJcXG59XFxyXFxuXFxyXFxuLy8gID09PT09PT09PT09PT09PT09PT3nu5PmnZ89PT09PT09PT09PT09PT09PT09XFxyXFxuXCJ9XSIsImljb24iOiJodHRwOi8vYWxpc3Quam9lZ3UudGsvZC9ydWxlcy9QaWtQYWtfMS4yMi41LnBuZyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment