xiaomianao666

小程序:tgx音乐

Oct 6th, 2023
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@tgx音乐@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoidGd46Z+z5LmQIiwiYXV0aG9yIjoiVGhvbWFz5ZayIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6MjAyMzA5MDEsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoibXVzaWMiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczokLnJlcXVpcmUoJ2hvbWU/cnVsZT10Z3jpn7PkuZAnKTsiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjI2Z5cGFnZSMjIyoqIiwiZ3JvdXAiOiLikaDluLjnlKgiLCJzZWFyY2hGaW5kIjoianM6JC5yZXF1aXJlKCdzZWFyY2g/cnVsZT10Z3jpn7PkuZAnKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6InBjIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikaHpgJrnlKjlh73mlbBcIixcInBhdGhcIjpcImluZm9cIixcInJ1bGVcIjpcImpzOlxcbmFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuICAgIGNsZWFyTXlWYXIoJ2FkZGxpc3QnKTtcXG4gICAgY2xlYXJNeVZhcignaWknKTtcXG59KSk7XFxuY29uc3QgcGNhcGkgPSBcXFwiaHR0cHM6Ly93d3cua3V3by5jbi9hcGkvXFxcIjtcXG5jb25zdCBlbXB0eSA9ICdoaWtlcjovL2VtcHR5IyNmeXBhZ2UnO1xcbmNvbnN0IENvbG9yID0gKHRlc3QpID0+IHtcXG4gICAgcmV0dXJuICc8Zm9udCBjb2xvcj1cXFwiI0ZBNzI5OFxcXCI+JyArIHRlc3QgKyAnPC9mcm9udD4nO1xcbn1cXG5jb25zdCBTdHJvbmcgPSAodGVzdCkgPT4ge1xcbiAgICByZXR1cm4gJzxzdHJvbmc+JyArIHRlc3QgKyAnPC9zdHJvbmc+JztcXG59XFxuY29uc3QgUmljaCA9ICh0ZXN0KSA9PiB7XFxuICAgIHJldHVybiBcXFwi4oCY4oCY4oCZ4oCZXFxcIiArIHRlc3Q7XFxufVxcblxcbmNvbnN0IFJpY2gyID0gKHN0cikgPT4ge1xcbiAgICB2YXIgYXJyRW50aXRpZXMgPSB7XFxuICAgICAgICAnbHQnOiAnPCcsXFxuICAgICAgICAnZ3QnOiAnPicsXFxuICAgICAgICAnbmJzcCc6ICcgJyxcXG4gICAgICAgICdhbXAnOiAnJicsXFxuICAgICAgICAncXVvdCc6ICdcXFwiJ1xcbiAgICB9O1xcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoLyYobHR8Z3R8bmJzcHxhbXB8cXVvdCk7L2lnLCBmdW5jdGlvbihhbGwsIHQpIHtcXG4gICAgICAgIHJldHVybiBhcnJFbnRpdGllc1t0XTtcXG4gICAgfSk7XFxufVxcblxcblxcbnNhcnIgPSBbXFxuICAgIFsn6IGa5pCcJywgJzk5OSddLFxcbiAgICBbJ+WNleabsicsICcxJ10sXFxuICAgIFsn5LiT6L6RJywgJzInXSxcXG4gICAgWycmbmJzcDtNViZuYnNwOycsICczJ10sXFxuICAgIFsn5q2M5Y2VJywgJzQnXSxcXG4gICAgWyfmrYzmiYsnLCAnNSddXFxuXTtcXG5cXG5cXG5cXG5cXG5MaXN0X1B1c2ggPSAoXywgc2kpID0+IHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGlmIChzaSA9PT0gMSkgeyAvLyDmrYzmm7JcXG4gICAgICAgICAgICBuZXdEYXRhID0ge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogUmljaDIoKF8uc29uZ05hbWUgfHwgXy5uYW1lKSArICcgLSAnICsgXy5hcnRpc3QpLFxcbiAgICAgICAgICAgICAgICBpbWc6IF8ucGljIHx8IF8uaW1nIHx8IGZldGNoKCdodHRwOi8vYXJ0aXN0cGljc2VydmVyLmt1d28uY24vcGljLndlYj90eXBlPXJpZF9waWMmcGljdHlwZT11cmwmc2l6ZT01MDAmcmlkPScgKyBfLmlkKSxcXG4gICAgICAgICAgICAgICAgY29udGVudDogJ1xcXFxu8J+UliAnICsgKChfLmlzTGlzdGVuRmVlIHx8IF8udHBheXx8Xy5mcGF5KSA9PSB0cnVlID8gJ1BhaWQnIDogJ0ZyZWUnKSArICdNdXNpY+OAgPCfk4AgJyArIChfLmFsYnVtIHx8ICfmmoLml6DkuJPovpEnKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ/Cfk7wgJyArIChfLnNvbmdUaW1lTWludXRlcyB8fCAocyA9IF8uZHVyYXRpb24gJSA2MCwgbSA9IChfLmR1cmF0aW9uIC0gcykgLyA2MCwgKG0gPiA5ID8gbSA6ICcwJyArIG0pICsgJzonICsgKHMgPiA5ID8gcyA6ICcwJyArIHMpKSksXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLmxhenlSdWxlKChzaSwgenlpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwidXJsP3J1bGU9dGd46Z+z5LmQXFxcIikoc2ksIHp5aWQpO1xcbiAgICAgICAgICAgICAgICB9LCBzaSwgXy5pZCB8fCBfLnJpZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBnZXRJdGVtKCd0eXBlJywgJ2NhcmRfcGljXzMnKVxcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9IGVsc2UgaWYgKHNpID09PSAyKSB7IC8vIOS4k+i+kVxcbiAgICAgICAgICAgIG5ld0RhdGEgPSB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoMihfLmFsYnVtKSxcXG4gICAgICAgICAgICAgICAgaW1nOiBfLnBpYyxcXG4gICAgICAgICAgICAgICAgY29udGVudDogJ1xcXFxu8J+ThiAnICsgXy5yZWxlYXNlRGF0ZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ/CfjrsgJyArIF8uYXJ0aXN0LFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoZW1wdHkpLnJ1bGUoKHNpLCB6eWlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJ1cmw/cnVsZT10Z3jpn7PkuZBcXFwiKShzaSwgenlpZCk7XFxuICAgICAgICAgICAgICAgIH0sIHNpLCBfLmFsYnVtaWQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbSgndHlwZScsICdjYXJkX3BpY18zJylcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfSBlbHNlIGlmIChzaSA9PT0gMykgeyAvLyBNVlxcbiAgICAgICAgICAgIG5ld0RhdGEgPSB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoMihfLm5hbWUgKyAnIC0gJyArIF8uYXJ0aXN0KSxcXG4gICAgICAgICAgICAgICAgaW1nOiBfLnBpYyxcXG4gICAgICAgICAgICAgICAgY29udGVudDogJ1xcXFxu8J+UpSAnICsgXy5tdlBsYXlDbnQsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfwn5O8ICcgKyBfLnNvbmdUaW1lTWludXRlcyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCJcXFwiKS5sYXp5UnVsZSgoc2ksIHp5aWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcInVybD9ydWxlPXRneOmfs+S5kFxcXCIpKHNpLCB6eWlkKTtcXG4gICAgICAgICAgICAgICAgfSwgc2ksIF8uaWQgfHwgXy5yaWQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSBpZiAoc2kgPT09IDQpIHsgLy8g5q2M5Y2VXFxuICAgICAgICAgICAgbmV3RGF0YSA9IHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFJpY2gyKF8ubmFtZSksXFxuICAgICAgICAgICAgICAgIGltZzogXy5pbWd8fF8ucGljLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAnXFxcXG7wn467ICcgKyAoXy51c2VyTmFtZSB8fCBfLnVuYW1lfHwn5pyq55+lJykgKyAn44CA8J+UpSAnICsoIF8ubGlzdGVuY250fHxfLnBsYXljbnQpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn8J+TnyAnICsgXy50b3RhbCArICfpppbmrYzmm7InLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoZW1wdHkpLnJ1bGUoKHNpLCB6eWlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJ1cmw/cnVsZT10Z3jpn7PkuZBcXFwiKShzaSwgenlpZCk7XFxuICAgICAgICAgICAgICAgIH0sIHNpLCBfLmlkfHxfLnNvdXJjZWlkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IGdldEl0ZW0oJ3R5cGUnLCAnY2FyZF9waWNfMycpXFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSBpZiAoc2kgPT09IDUpIHsgLy8g5q2M5omLXFxuICAgICAgICAgICAgbmV3RGF0YSA9IHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFJpY2gyKF8ubmFtZSksXFxuICAgICAgICAgICAgICAgIGltZzogXy5waWMsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdcXFxcbvCfjJAgJyArIF8uY291bnRyeSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ/Cfk58gJyArIF8ubXVzaWNOdW0gKyAn6aaW5q2M5puyJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGVtcHR5KS5ydWxlKChzaSwgenlpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwidXJsP3J1bGU9dGd46Z+z5LmQXFxcIikoc2ksIHp5aWQpO1xcbiAgICAgICAgICAgICAgICB9LCBzaSwgXy5pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBnZXRJdGVtKCd0eXBlJywgJ2NhcmRfcGljXzMnKVxcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9XFxuXFxuICAgICAgICBFeHRyYShuZXdEYXRhLCBzaSwgKF8uaWQgfHwgXy5yaWQgfHwgXy5hbGJ1bWlkfHxfLnNvdXJjZWlkKSk7XFxuICAgIH0gY2F0Y2ggKGVycikge1xcbiAgICAgICAgbG9nKGVycilcXG4gICAgfVxcbn1cXG5cXG5cXG5FeHRyYSA9IChuZXdEYXRhLCBzaSwgenlpZCkgPT4ge1xcbiAgICBuZXdEYXRhLmV4dHJhID0ge1xcbiAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSxcXG4gICAgICAgIGNsczogJ3RneOmfs+S5kDphZGRsaXN0OmRlYnVnJyxcXG4gICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuKYhSDliIbkuqvpk77mjqUg4piFXFxcIixcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoc2ksIHp5aWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiY29sbGVjdGlvbjI/cnVsZT10Z3jpn7PkuZBcXFwiKS5jb3B5dXJsKHNpLCB6eWlkKTtcXG4gICAgICAgICAgICB9LCBzaSwgenlpZClcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuKYhSDmlLbol49cXFwiICsgUmljaDIoc2FycltzaV1bMF0pICsgXFxcIiDimIVcXFwiLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChuZXdEYXRhLCBzaSkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLmxvZ0RhdGEobmV3RGF0YSwgc2kpO1xcbiAgICAgICAgICAgIH0sIG5ld0RhdGEsIHNpKVxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi4piFIOaJuemHj+aUtuiXjyDimIVcXFwiLFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKChzaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiYWRkbGlzdD9ydWxlPXRneOmfs+S5kFxcXCIpKHNpLDApO1xcbiAgICAgICAgICAgICAgICB9LCBzaSk7XFxuICAgICAgICAgICAgfSwgc2kpXFxuICAgICAgICB9XVxcbiAgICB9O1xcbiAgICBpZiAoc2kgPT09IDEpIG5ld0RhdGEuZXh0cmEubG9uZ0NsaWNrLnVuc2hpZnQoe1xcbiAgICAgICAgdGl0bGU6IFxcXCLimIUg55u45Ly85o6o6I2QIOKYhVxcXCIsXFxuICAgICAgICBqczogJC50b1N0cmluZygoenlpZCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKHp5aWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwidXJsP3J1bGU9dGd46Z+z5LmQXFxcIikoNiwgenlpZCk7XFxuICAgICAgICAgICAgfSwgenlpZCk7XFxuICAgICAgICB9LCB6eWlkKVxcbiAgICB9KTtcXG4gICAgcmV0dXJuIGQucHVzaChuZXdEYXRhKTtcXG59XFxuXFxuXFxuXFxuXFxuXFxuZmlsZV9wYXRoID0gJ2hpa2VyOi8vZmlsZXMvcnVsZXMvZHpIb3VzZS90Z3jpn7PkuZBfSXRlbS5qc29uJztcXG5pZiAoZmlsZUV4aXN0KGZpbGVfcGF0aCkgPT0gZmFsc2UpIHtcXG4gICAgSXRlbSA9IHtcXG4gICAgICAgIHNlYXJjaDogMSwvLyDmmK/lkKbot7Povazpq5jnuqfmkJzntKLpobXpnaJcXG4gICAgICAgIHNpZDogMSwvLyDpu5jorqTmkJzntKLmjqXlj6NcXG4gICAgICAgIEhpc3Rvcnk6IFtdLC8vIOWOhuWPsuaQnOe0ouiusOW9lVxcbiAgICAgICAganNfdXJsOiAxLC8vIOWQr+eUqOazqOWFpWpz77yfXFxuanNfdXJsczogW10vLyDms6jlhaVqc+mTvuaOpVxcbiAgICB9XFxuICAgIHdyaXRlRmlsZShmaWxlX3BhdGgsIEpTT04uc3RyaW5naWZ5KEl0ZW0pKTtcXG59IGVsc2Uge1xcbiAgICBJdGVtID0gSlNPTi5wYXJzZShyZXF1ZXN0KGZpbGVfcGF0aCkpO1xcbn1cXG5cXG5cXG5tYXBIaXN0b3J5ID0gKGhpc3RvcnkpID0+IHtcXG4gICAgbGV0IGkgPSAwLFxcbiAgICAgICAgaWQgPSBcXFwidGd46Z+z5LmQXFxcIjtcXG4gICAgZm9yIChsZXQga2V5IG9mIGhpc3RvcnkpIHtcXG4gICAgICAgIGlmIChrZXkpXFxuICAgICAgICAgICAgRC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGtleSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChrZXksIHNpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdWYXJfdGd46Z+z5LmQX3Nva2V5Jywga2V5KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChnZXRJdGVtKCdzZWFyY2gnLCAnMScpID09ICcxJykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ1Zhcl90Z3jpn7PkuZBfaW5wdXQyJykgPT0gOTk5KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignVmFyX3RneOmfs+S5kF9pbnB1dDInLCBnZXRJdGVtKCdzaWQnLCAnMScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsga2V5ICsgXFxcIiMjI1xcXCIgKyBzaWQgKyBcXFwiJnJ1bGU9dGd46Z+z5LmQXFxcIjtcXG4gICAgICAgICAgICAgICAgfSwga2V5LCBnZXRWYXIoJ1Zhcl90Z3jpn7PkuZBfaW5wdXQyJywgZ2V0SXRlbSgnc2lkJywgJzEnKSkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImZsZXhfYnV0dG9uXFxcIixcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBpZCArIFxcXCI6a2V5OlxcXCIgKyBrZXksXFxuICAgICAgICAgICAgICAgICAgICBjbHM6IGlkICsgXFxcIjprZXlcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5Yig6Zmk5YWz6ZSu6K+NOlxcXCIgKyBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKGlkLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnkgPSBJdGVtLkhpc3Rvcnk7XFxuICAgICAgIGkgPSBoaXN0b3J5LmluZGV4T2Yoa2V5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5zcGxpY2UoaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW0uSGlzdG9yeSA9IGhpc3Rvcnk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShmaWxlX3BhdGgsIEpTT04uc3RyaW5naWZ5KEl0ZW0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhpc3RvcnkubGVuZ3RoID09IDApIGFkZEl0ZW1BZnRlcihcXFwidGd46Z+z5LmQOnNlYXJjaEhpc3RvcnlcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBcXFwifn5+5LuA5LmI6YO95rKh5pyJ5ZOmfn5+XFxcIi5mb250Y29sb3IoXFxcIkdyYXlcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBpZCArIFxcXCI6a2V5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG5kZWxldGVJdGVtKGlkICsgXFxcIjprZXk6XFxcIiArIGtleSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgaWQsIGtleSlcXG4gICAgICAgICAgICAgICAgICAgIH1dXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIGkrKztcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRpeaQnOe0ouWkhOeQhlwiLFwicGF0aFwiOlwic2VhcmNoXCIsXCJydWxlXCI6XCJqczpcXG5pZiAoTVlfVVJMLm1hdGNoKCcjIyMnKSkge1xcbiAgICBkID0gW107XFxuICAgIFtzb2tleSwgc2lkXSA9ICQucmVxdWlyZShcXFwiY29sbGVjdGlvbjI/cnVsZT10Z3jpn7PkuZBcXFwiKS5nZXRrZXkoKTtcXG4gICAgaWYgKGdldEl0ZW0oJ3NlYXJjaCcsICcxJykgPT0gJzEnKSBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLku6PnkIbmkJzntKIgPT4gXFxcIiArIHNva2V5LFxcbiAgICAgICAgZGVzYzogJ+i9rOWIsFxcXCLpq5jnuqfmkJzntKJcXFwi6aG16Z2iJyxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoc29rZXksIHNpZCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcignVmFyX3RneOmfs+S5kF9pbnB1dDInLCBzaWQpO1xcbiAgICAgICAgICAgIHB1dFZhcignVmFyX3RneOmfs+S5kF9zb2tleScsIHNva2V5KTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9zZWFyY2gyI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5Iz9wPWZ5cGFnZSc7XFxuICAgICAgICB9LCBzb2tleSwgc2lkKSxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgcGFnZVRpdGxlOiAn6auY57qn5pCc57SiJ1xcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgZWxzZSAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikucHVzaChzb2tleSwgc2lkKTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRoueoi+W6j+mmlumhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuaW5zdGFsbCA9ICgpID0+IHtcXG4gICAgaWYgKGdldEl0ZW0oJ3R5cGVfMCcsICcwJykgPT0gJzEnKSB7XFxuICAgICAgICBpaSA9IGxlbjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCdpaScsICcwJykgPT0gaWkgPyBSaWNoKFN0cm9uZyhDb2xvcihcXFwi6K6+572uXFxcIikpKSA6IFxcXCLorr7nva5cXFwiLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgaWkpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuXFxuaG9tZV91aSA9IGdldEl0ZW0oJ2hvbWVfdWknLCAnMCcpO1xcbmhvbWVfcHVzaF8xID0gKHRpdGxlLCBjb2xfdHlwZSkgPT4gZC5wdXNoKHtcXG4gICAgdGl0bGU6IHRpdGxlLFxcbiAgICBkZXNjOiAn5q2M5Y2V5pS26JePJyxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGNsZWFyTXlWYXIoJ2lpJyk7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vcGFnZS9jb2xsZWN0aW9uI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5Iyc7XFxuICAgIH0pLFxcbiAgICBpbWc6ICdodHRwczovL2docHJveHkuY29tL2h0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9sczEyNTc4MTAwMy9sbXR1Ymlhby9tYWluL211c2ljLzgyLnN2ZycsXFxuICAgIGNvbF90eXBlOiBjb2xfdHlwZSxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHBhZ2VUaXRsZTogXFxcIlRHWOaUtuiXj1xcXCIsXFxuICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgdGl0bGU6ICfimIUg5aSN5Yi25Li76aG15YWD57SgOiBUR1jmlLbol48g4piFJyxcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxucmV0dXJuIFxcXCJjb3B5Oi8v5rW36ZiU6KeG55WM77yM5oiR55qE5Li76aG144CMVEdY5pS26JeP44CN5YWD57Sg77+lbXlfaG9tZV9zaW5nbGXvv6VleUp1WVcxbElqb2lWRWRZNXBTMjZKZVBJaXdpZEdsMGJHVWlPaUpVUjFqbWxMYm9sNDhpTENKMWNtd2lPaUpvYVd0bGNqb3ZMM0JoWjJVdlkyOXNiR1ZqZEdsdmJpTnViMGhwYzNSdmNua2pJMjV2VW1WamIzSmtTR2x6ZEc5eWVTTS9jblZzWlQxMFozanBuN1BrdVpBaUxDSnBZMjl1SWpvaWFIUjBjSE02THk5bmFIQnliM2g1TG1OdmJTOW9kSFJ3Y3pvdkwzSmhkeTVuYVhSb2RXSjFjMlZ5WTI5dWRHVnVkQzVqYjIwdmJITXhNalUzT0RFd01ETXZiRzEwZFdKcFlXOHZiV0ZwYmk5dGRYTnBZeTg0TWk1emRtY2lmUT09XFxcIjtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfV1cXG4gICAgfVxcbn0pO1xcbmhvbWVfcHVzaF8yID0gKGNvbF90eXBlKSA9PiBkLnB1c2goe1xcbiAgICB0aXRsZTogJ+aIkeeahOaUtuiXjycsXFxuICAgIHVybDogJ2hpa2VyOi8vY29sbGVjdGlvbj9ydWxlPXRneOmfs+S5kCcsXFxuICAgIGltZzogJ2hpa2VyOi8vaW1hZ2VzL2ljb24xJyxcXG4gICAgY29sX3R5cGU6IGNvbF90eXBlXFxufSwge1xcbiAgICB0aXRsZTogJ+WOhuWPsuiusOW9lScsXFxuICAgIHVybDogJ2hpa2VyOi8vaGlzdG9yeT9ydWxlPXRneOmfs+S5kCcsXFxuICAgIGltZzogJ2hpa2VyOi8vaW1hZ2VzL2ljb24zJyxcXG4gICAgY29sX3R5cGU6IGNvbF90eXBlXFxufSwge1xcbiAgICB0aXRsZTogJ+mrmOe6p+aQnOe0oicsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBwdXRWYXIoJ1Zhcl90Z3jpn7PkuZBfaW5wdXQyJywgOTk5KTtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NlYXJjaDIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjP3A9ZnlwYWdlJztcXG4gICAgfSksXFxuICAgIGltZzogJ2hpa2VyOi8vaW1hZ2VzL2ljb24yJyxcXG4gICAgY29sX3R5cGU6IGNvbF90eXBlXFxufSk7XFxuXFxuXFxuXFxuZCA9IFtdO1xcbnRyeSB7XFxuICAgIHRhcnIgPSBbXFxcIuaOqOiNkFxcXCIsIFxcXCLkuLvpophcXFwiLCBcXFwi5b+D5oOFXFxcIiwgXFxcIuWcuuaZr1xcXCIsIFxcXCLlubTku6NcXFwiLCBcXFwi5puy6aOOXFxcIiwgXFxcIuivreiogFxcXCIsIFxcXCLmjpLooYxcXFwiLCBcXFwi5q2M5omLXFxcIiwgXFxcIiZuYnNwO01WJm5ic3A7XFxcIiwgXFxcIuaWsOatjFxcXCJdO1xcbiAgICBpZiAoTVlfUEFHRSA9PT0gMSkge1xcbiAgICAgICAgdGFyci5jb25jYXQoXFxcIuiuvue9rlxcXCIpLm1hcCgobmFtZSwgdGlkKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCd0aWQnLCBnZXRJdGVtKCd0aWQnLCAnMCcpKSA9PSB0aWQgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZS5yZXBsYWNlKC8mbmJzcDsvaWcsICcgJyksXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcigndGlkJywgdGlkKTtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2lpJyk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCB0aWQpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGlmIChob21lX3VpID09ICcwJykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBob21lX3B1c2hfMSgnPHNwYW4gc3R5bGU9XFxcImNvbG9yOiNmZjY2MDFcXFwiPjxiPui9rOWIsCBUR1jmlLbol488L2I+PC9zcGFuPicsICdhdmF0YXInKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ/CflI0nLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5pCc57Si5YWz6ZSu6K+NIC8g5YiG5Lqr6ZO+5o6lJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCh5biwgc2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ1Zhcl90Z3jpn7PkuZBfc29rZXknLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHluKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKCdWYXJfdGd46Z+z5LmQX2lucHV0MicsIHNpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL3BhZ2Uvc2VhcmNoMiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSM/cD1meXBhZ2UnO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBpbnB1dCArIFxcXCImcnVsZT1cXFwiICsgTVlfUlVMRS50aXRsZTtcXG4gICAgICAgICAgICAgICAgfSwgSXRlbS5zZWFyY2gsIEl0ZW0uc2lkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBwYWdlVGl0bGU6IFxcXCLpq5jnuqfmkJzntKJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoXFxcIlZhcl90Z3jpn7PkuZBfc29rZXlcXFwiLCBcXFwiXFxcIiksXFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignVmFyX3RneOmfs+S5kF9zb2tleScsaW5wdXQpXFxcIlxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBob21lX3B1c2hfMignc2Nyb2xsX2J1dHRvbicpO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmVxdWlyZSgnaHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9NDA5MScpO1xcbiAgICAgICAgICAgIOmhuuaQnChkKTtcXG4gICAgICAgICAgICBob21lX3B1c2hfMSgnVEdY5pS26JePJywgJ2ljb25fc21hbGxfNCcpO1xcbiAgICAgICAgICAgIGhvbWVfcHVzaF8yKCdpY29uX3NtYWxsXzQnKTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcblxcblxcbiAgICDorr7nva4gPSAwO1xcbiAgICB0aWQgPSBnZXRNeVZhcigndGlkJywgZ2V0SXRlbSgndGlkJywgJzAnKSk7XFxuICAgIHRpaSA9IGdldE15VmFyKCdpaScsIGdldEl0ZW0oJ2lpXzBfJyArIHRpZCwgJzAnKSk7XFxuICAgIGlmICh0aWQgPCA3KSB7XFxuICAgICAgICBpVGFnID0gc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImlUYWdcXFwiKTtcXG4gICAgICAgIGlmIChpVGFnID09IFxcXCJcXFwiKSB7XFxuICAgICAgICAgICAgaVRhZyA9ICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKHBjYXBpICsgXFxcInd3dy9wbGF5bGlzdC9nZXRUYWdMaXN0P1xcXCIpO1xcbiAgICAgICAgICAgIGlUYWcgPSBbe1xcbiAgICAgICAgICAgICAgICBuYW1lOiBcXFwi5o6o6I2QXFxcIixcXG4gICAgICAgICAgICAgICAgZGF0YTogW3tcXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFxcXCLmr4/ml6XmjqjojZBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IFxcXCJyY20vaW5kZXgvcGxheWxpc3Q/aWQ9cmNtXFxcIlxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcXFwi5pyA5paw57K+6YCJXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwiY2xhc3NpZnkvcGxheWxpc3QvZ2V0UmNtUGxheUxpc3Q/b3JkZXI9bmV3XFxcIlxcbiAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcXFwi54Ot6Zeo57K+6YCJXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGlkOiBcXFwiY2xhc3NpZnkvcGxheWxpc3QvZ2V0UmNtUGxheUxpc3Q/b3JkZXI9aG90XFxcIlxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgIH1dLmNvbmNhdChpVGFnKTtcXG4gICAgICAgICAgICBzdG9yYWdlMC5wdXRNeVZhcihcXFwiaVRhZ1xcXCIsIGlUYWcpO1xcbiAgICAgICAgfVxcbiAgICAgICAgenUgPSBpVGFnW3RpZF0uZGF0YS5tYXAoXyA9PiBfLm5hbWUpO1xcbiAgICAgICAgbGVuID0genUubGVuZ3RoO1xcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PGZvbnQgY29sb3I9I2ZmNjYwMT4nICsgdGFyclt0aWRdICsgJzwvZm9udD48L2I+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlUYWdbdGlkXS5kYXRhLm1hcCgoXywgaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aWkgPT0gaWkgPyBSaWNoKFN0cm9uZyhDb2xvcihfLm5hbWUpKSkgOiBfLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGlpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgaWkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGluc3RhbGwoKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh0aWkgPT0gbGVuKSB7XFxuICAgICAgICAgICAg6K6+572uID0gMTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSB8fCAhKHRpZCA9PSAnMCcgJiYgdGlpID09ICcwJykpIHtcXG4gICAgICAgICAgICAgICAgaWQgPSBpVGFnW3RpZF0uZGF0YVt0aWldLmlkO1xcbiAgICAgICAgICAgICAgICBpZiAodGlkICE9ICcwJykge1xcbiAgICAgICAgICAgICAgICAgICAgaWQgPSBcXFwiY2xhc3NpZnkvcGxheWxpc3QvZ2V0VGFnUGxheUxpc3Q/aWQ9XFxcIiArIGlkO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKHBjYXBpICsgXFxcInd3dy9cXFwiICsgaWQgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICAgICAgKF8uZGF0YSB8fCBfLmxpc3QpLm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIEV4dHJhKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogUmljaDIoXy5uYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IF8uaW1nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChlbXB0eSkucnVsZSgoc2ksIHp5aWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwidXJsP3J1bGU9dGd46Z+z5LmQXFxcIikoc2ksIHp5aWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDQsIF8uaWQpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBnZXRJdGVtKCd0eXBlJywgJ2NhcmRfcGljXzMnKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgNCwgXy5pZClcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKHRpZCA9PSA3KSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PGZvbnQgY29sb3I9I2ZmNjYwMT7mjpLooYw8L2ZvbnQ+PC9iPicsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIF8gPSBzdG9yYWdlMC5nZXRNeVZhcignYmFuZycpXFxuICAgICAgICBpZiAoXyA9PSAnJykge1xcbiAgICAgICAgICAgIF8gPSAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvYmFuZy9iYW5nL2JhbmdNZW51P1xcXCIpO1xcbiAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCdiYW5nJywgXyk7XFxuICAgICAgICB9XFxuICAgICAgICBfLmZvckVhY2goKF8sIGlpKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpaSA9PSBpaSA/IFJpY2goU3Ryb25nKENvbG9yKF8ubmFtZSkpKSA6IF8ubmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgaWkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgenUgPSBbXTtcXG4gICAgICAgIF8uZm9yRWFjaChfID0+IHp1LnB1c2goXy5uYW1lKSk7XFxuICAgICAgICBsZW4gPSB6dS5sZW5ndGg7XFxuICAgICAgICBpbnN0YWxsKCk7XFxuICAgICAgICBpZiAodGlpID09IGxlbikge1xcbiAgICAgICAgICAgIOiuvue9riA9IDE7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIF9bdGlpXS5saXN0Lm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgRXh0cmEoe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFJpY2gyKF8ubmFtZSksXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IF8ucGljLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGVtcHR5KS5ydWxlKChzb3VyY2VpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKHBjYXBpICsgXFxcInd3dy9iYW5nL2JhbmcvbXVzaWNMaXN0P2JhbmdJZD1cXFwiICsgc291cmNlaWQgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5tdXNpY0xpc3QubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0X1B1c2goXywgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgXy5zb3VyY2VpZCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogZ2V0SXRlbSgndHlwZScsICdjYXJkX3BpY18zJylcXG4gICAgICAgICAgICAgICAgfSwgNCwgXFxcInJhbmtMaXN0XFxcIilcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIGlmICh0aWQgPT0gOCkge1xcbiAgICAgICAgenUgPSBbXFxcIuWFqOmDqFxcXCIsIFxcXCLljY7or63nlLdcXFwiLCBcXFwi5Y2O6K+t5aWzXFxcIiwgXFxcIuWNjuivree7hOWQiFxcXCIsIFxcXCLml6Xpn6nnlLdcXFwiLCBcXFwi5pel6Z+p5aWzXFxcIiwgXFxcIuaXpemfqee7hOWQiFxcXCIsIFxcXCLmrKfnvo7nlLdcXFwiLCBcXFwi5qyn576O5aWzXFxcIiwgXFxcIuasp+e+jue7hOWQiFxcXCIsIFxcXCLlhbbku5ZcXFwiXTtcXG4gICAgICAgIGxlbiA9IHp1Lmxlbmd0aDtcXG4gICAgICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxmb250IGNvbG9yPSNmZjY2MDE+5q2M5omLPC9mb250PjwvYj4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgenUubWFwKChuYW1lLCBpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpaSA9PSBpaSA/IFJpY2goU3Ryb25nKENvbG9yKG5hbWUpKSkgOiBuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpaScsIGlpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgaWkpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpbnN0YWxsKCk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICBpZiAodGlpID09IGxlbikge1xcbiAgICAgICAgICAgIOiuvue9riA9IDE7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKFxcXCJodHRwczovL3dhcGkua3V3by5jbi9hcGkvd3d3L2FydGlzdC9hcnRpc3RJbmZvP2NhdGVnb3J5PVxcXCIgKyBnZXRNeVZhcignaWknLCAnMCcpICsgXFxcIiZwcmVmaXg9JnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICBfLmFydGlzdExpc3QubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICBFeHRyYSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogUmljaDIoXy5uYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogXy5waWMsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoZW1wdHkpLnJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L2FydGlzdC9hcnRpc3RNdXNpYz9hcnRpc3RpZD1cXFwiICsgaWQgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5saXN0Lm1hcChfID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9QdXNoKF8sIDEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIF8uaWQpLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGdldEl0ZW0oJ3R5cGUnLCAnY2FyZF9waWNfMycpXFxuICAgICAgICAgICAgICAgIH0sIDUsIF8uaWQpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gZWxzZSBpZiAodGlkID09IDkpIHtcXG4gICAgICAgIHp1ID0gW1xcXCLpppbmkq1cXFwiLCBcXFwi5Y2O6K+tXFxcIiwgXFxcIuaXpemfqVxcXCIsIFxcXCLnvZHnu5xcXFwiLCBcXFwi5qyn576OXFxcIiwgXFxcIueOsOWculxcXCIsIFxcXCLng63oiJ5cXFwiLCBcXFwi5Lyk5oSfXFxcIiwgXFxcIuWJp+aDhVxcXCJdO1xcbiAgICAgICAgbGVuID0genUubGVuZ3RoO1xcbiAgICAgICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PGZvbnQgY29sb3I9I2ZmNjYwMT5NVjwvZm9udD48L2I+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHp1Lm1hcCgobmFtZSwgaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aWkgPT0gaWkgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaWknLCBpaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH0sIGlpKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5zdGFsbCgpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHRpaSA9PSBsZW4pIHtcXG4gICAgICAgICAgICDorr7nva4gPSAxO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvbXVzaWMvbXZMaXN0P3BpZD1cXFwiICsgKFsyMzY2ODI4NzEsIDIzNjY4MjczMSwgMjM2NzQyNDQ0LCAyMzY2ODI3NzMsIDIzNjY4MjczNSwgMjM2NzQyNTc2LCAyMzY2ODI3NzcsIDIzNjc0MjUwOCwgMjM2NzQyNTc4XVtnZXRNeVZhcignaWknLCAnMCcpXSkgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICBfLm12bGlzdC5tYXAoXyA9PiBMaXN0X1B1c2goXywgMykpO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2UgaWYgKHRpZCA9PSAxMCkge1xcbiAgICAgICAgbmV3cyA9IHN0b3JhZ2UwLmdldE15VmFyKCduZXdzJywnJyk7XFxuaWYobmV3cz09Jycpe1xcbm5ld3MgPSB7XFxuenU6IFtdLFxcbmxpYjogW11cXG59O1xcbkpTT04ucGFyc2UoZmV0Y2goXFxcImh0dHA6Ly9tb2JpLmt1d28uY24vbW9iaXdlYi5zP3R5cGU9enVpeGlueWlueXVlJnByb2Q9XFxcIikpLmNoaWxkWzFdLmNoaWxkLm1hcCgoXyxpKT0+e1xcbm5ld3MuenUucHVzaChfLmxhYmVsLnJlcGxhY2UoJ+WNleabsuaOqOiNkCcsJycpKTtcXG5uZXdzLmxpYi5wdXNoKFtdKTtcXG5fLmNoaWxkLm1hcChfPT57XFxuXy5tdXNpY2RhdGEuZHVyYXRpb24gPSBfLmR1cmF0aW9uO1xcbm5ld3MubGliW2ldLnB1c2goXy5tdXNpY2RhdGEpO1xcbn0pO1xcbn0pO1xcbnN0b3JhZ2UwLnB1dE15VmFyKCduZXdzJyxuZXdzKTtcXG59XFxuXFxuICAgICAgICB6dSA9IG5ld3MuenU7XFxuICAgICAgICBsZW4gPSB6dS5sZW5ndGg7XFxuICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfigJjigJjigJnigJk8Yj48Zm9udCBjb2xvcj0jZmY2NjAxPuaWsOatjDwvZm9udD48L2I+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHp1Lm1hcCgobmFtZSwgaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aWkgPT0gaWkgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaWknLCBpaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgIH0sIGlpKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaW5zdGFsbCgpO1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHRpaSA9PSBsZW4pIHtcXG4gICAgICAgICAgICDorr7nva4gPSAxO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBuZXdzLmxpYltnZXRNeVZhcignaWknLCAnMCcpXS5tYXAoXyA9PiBMaXN0X1B1c2goXywgMSkpO1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxmb250IGNvbG9yPSNmZjY2MDE+6K6+572uPC9mb250PjwvYj4nLFxcbiAgICAgICAgICAgIHVybDogJChcXFwi56Gu5a6a5oGi5aSN6buY6K6k6K6+572u5ZCX77yfXFxcIikuY29uZmlybSgoc2FycikgPT4ge1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3R5cGVfMScpO1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3R5cGVfMCcpO1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ3R5cGUnKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCd0aWQnKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzaWQnKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdzaScpO1xcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKylcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnaWlfMF8nICsgaSk7XFxuICAgICAgICAgICAgICAgIGZvciAoaXQgb2Ygc2FycilcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnaWlfMV8nICsgaXRbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBzYXJyKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgW1xcXCLln7rnoYBcXFwiLCBcXFwi5Li76aG1XFxcIiwgXFxcIuaQnOe0olxcXCIsIFxcXCLpobrmkJxcXFwiXS5tYXAoKG5hbWUsIGlpKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFJpY2goZ2V0TXlWYXIoJ2lpJywgJzAnKSA9PSBpaSA/IFN0cm9uZyhDb2xvcihuYW1lKSkgOiBuYW1lKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgaWkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgaWkgPSBnZXRNeVZhcignaWknLCAnMCcpO1xcbiAgICAgICAgaWYgKGlpID09ICcwJykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5YiG57uE6K6+572uJyxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+WIhuexu+aYvuekuuWIhue7hOiuvue9ricsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwi56Gu5a6a6YeN572u5YiG57uE55u45YWz6K6+572u5ZCX77yfXFxcIikuY29uZmlybSgobGVuMSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCd0eXBlXzAnKTtcXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW4xOyBpKyspXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdpaV8wXycgKyBpKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgfSwgdGlkKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJzxiPuWQr+eUqOiuvue9rjwvYj4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgndHlwZV8wJywgc2lkKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgfSwgZ2V0SXRlbSgndHlwZV8wJywgJzAnKSA9PSAnMScgPyAnMCcgOiAnMScpLFxcbiAgICAgICAgICAgICAgICBpbWc6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LycgKyAoZ2V0SXRlbSgndHlwZV8wJywgJzAnKSA9PSAxID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTmoLflvI8nLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5YiX6KGo55qE6buY6K6k5qC35byPJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCLnoa7lrprmgaLlpI3pu5jorqTorr7nva7lkJfvvJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgndHlwZScpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgWydjYXJkX3BpY18zJywgJ2F2YXRhcicsICd0ZXh0XzEnXS5tYXAobmFtZSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxiPicgKyBuYW1lICsgJzwvYj4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgndHlwZScsIG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICB9LCBuYW1lKSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArIChnZXRJdGVtKCd0eXBlJywgJ2NhcmRfcGljXzMnKSA9PSBuYW1lID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgdmVyc2lvbiA9IEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9ob21lQHRneOmfs+S5kFxcXCIpKS52ZXJzaW9uO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5qOA5rWL5pu05pawXFxcIixcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuW9k+WJjeeJiOacrO+8mlxcXCIgKyBTdHJpbmcodmVyc2lvbikucmVwbGFjZSgvKFxcXFxkXFxcXGQpKFxcXFxkXFxcXGQpJC8sICctJDEtJDInKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5XFxcIikubGF6eVJ1bGUoKHZlcnNpb24pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZ0aW1lID0gTnVtYmVyKGdldEl0ZW0oJ3Z0aW1lJywgJzAnKSkgKyA2ZTY7XFxuICAgICAgICAgICAgICAgICAgICBpZiAodnRpbWUgPCBuZXcgRGF0ZSgpLmdldFRpbWUoKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIFt1cmwsIHYsIHZ2XSA9ICQucmVxdWlyZShcXFwibGFuem91P3J1bGU9dGd46Z+z5LmQXFxcIikubGlzdF9vbmUoXFxcImh0dHBzOi8vd3dyLmxhbnpvdWkuY29tL2IwM3FodjE0ZFxcXCIsIFxcXCJyZWFkXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24gPCB2IHx8ICh2ZXJzaW9uID09IHYgJiYgdnYgPiAxKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlybSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+abtOaWsOaPkOekuicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50OiAn5qOA5rWL5Yiw5L2g55qE6KeE5YiZ54mI5pys5bCP5LqO5pyN5Yqh5Zmo54mI5pys77yM5piv5ZCm56uL5Y2z5pu05paw77yfJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKGRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgndnRpbWUnLCBTdHJpbmcobmV3IERhdGUoKS5nZXRUaW1lKCkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gJC5yZXF1aXJlKFxcXCJsYW56b3U/cnVsZT10Z3jpn7PkuZBcXFwiKS5vbmVfdXJsKGRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIlxcXFx1NmQ3N1xcXFx1OTYxNFxcXFx1ODljNlxcXFx1NzU0Y1xcXFx1ZmZlNWhvbWVfcnVsZV91cmxcXFxcdWZmZTVcXFwiICsgZ2V0UGF0aChmKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVybCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3Z0aW1lJywgU3RyaW5nKG5ldyBEYXRlKCkuZ2V0VGltZSgpKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ayoeacieabtOaWsOWTplxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L+H5LiA5Lya5YaN55yL55yL5ZCnXFxcIjtcXG4gICAgICAgICAgICAgICAgfSwgdmVyc2lvbilcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgIH0gZWxzZSBpZiAoaWkgPT0gJzEnKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTkuLvpobUnLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5omT5byA56iL5bqP5pe26buY6K6k5omT5byAJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCLnoa7lrprmgaLlpI3pu5jorqTorr7nva7lkJfvvJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgndGlkJyk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB0YXJyLm1hcCgobmFtZSwgdGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxiPicgKyBuYW1lICsgJzwvYj4nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh0aWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd0aWQnLCB0aWQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICB9LCBTdHJpbmcodGlkKSksXFxuICAgICAgICAgICAgICAgICAgICBpbWc6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LycgKyAoZ2V0SXRlbSgndGlkJywgJzAnKSA9PSB0aWQgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSBpZiAoaWkgPT0gMikge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5pCc57Si5Luj55CGJyxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+i3s+i9rOWIsOmrmOe6p+aQnOe0oumhtemdouaQnOe0oicsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+5Luj55CG5pCc57SiPC9iPicsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dGd46Z+z5LmQJywge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgICAgIEl0ZW0uc2VhcmNoID0gIUl0ZW0uc2VhcmNoO1xcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKGZpbGVfcGF0aCwgSlNPTi5zdHJpbmdpZnkoSXRlbSkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKEl0ZW0uc2VhcmNoID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTmkJzntKInLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn5Y6f55Sf5pCc57Si55qE6buY6K6k5o6l5Y+jJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGlmIChJdGVtLnNlYXJjaClcXG4gICAgICAgICAgICAgICAgc2FyclswXVswXSA9IFxcXCLng63mkJxcXFwiO1xcbiAgICAgICAgICAgIHNhcnIubWFwKFtuYW1lLCBzaWRdID0+IHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+JyArIG5hbWUgKyAnPC9iPicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW0uc2lkID0gc2lkO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZShmaWxlX3BhdGgsIEpTT04uc3RyaW5naWZ5KEl0ZW0pKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgc2lkKSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArIChJdGVtLnNpZCA9PSBzaWQgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSBpZiAoaWkgPT0gMykge1xcbiAgICAgICAgICAgIGZpbGVfcGF0aDIgPSBmaWxlX3BhdGgucmVwbGFjZSgvdGd4LiovLCAnaHRtbC/pobrmkJwuaHRtbCcpO1xcbiAgICAgICAgICAgIGZpbGVfcGF0aDMgPSBmaWxlX3BhdGgucmVwbGFjZSgvXy4qLywgJ1/pobrmkJxqcy50eHQnKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+mhtemdonVp6K6+572uJyxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+S9v+eUqOmhuuaQnHVp6ZyA6KaB5YWI5a+85YWl6aG65pCcJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICc8Yj7ljp/nlJ91aTwvYj4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnaG9tZV91aScsICcwJyk7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBpbWc6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LycgKyAoaG9tZV91aSA9PSAnMCcgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJzxiPumhuuaQnHVpPC9iPicsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnaGlrZXI6Ly9lbXB0eSNub0xvYWRpbmcjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKGZpbGVfcGF0aDIsIGZpbGVfcGF0aDMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGEgPSBmaWxlRXhpc3QoZmlsZV9wYXRoMikgPT0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIGIgPSBmaWxlRXhpc3QoZmlsZV9wYXRoMykgPT0gdHJ1ZTtcXG5cXG4gICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfpobrmkJzkuLvkvZMnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICflr7zlhaXnirbmgIHvvJonICsgKGEgPyAn5bey5oiQ5YqfJyA6ICfov5jmsqHmnIknKSArICflr7zlhaUnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3J1bGU6Ly81clczNlppVTZLZUc1NVdNNXB5czVaeXc1cGFINUx1MjVZaUc1THFyNzcrbFptbHNaVjkxY216dnY2Vm9hV3RsY2pvdkwyWnBiR1Z6TDNKMWJHVnpMMlI2U0c5MWMyVXZhSFJ0YkMvcG9icm1rSnd1YUhSdGJFQm9kSFJ3T2k4dmFHbHJaWEl1Ym05cmFXRXVjSEpsYzNNdmFHbHJaWEoxYkdVdmNuVnNaV3hwYzNRdWFuTnZiajlwWkQwME1EZ3knLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+aPkuS7tmpzJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiAn5a+85YWl54q25oCB77yaJyArIChiID8gJ+W3suaIkOWKnycgOiAn6L+Y5rKh5pyJJykgKyAn5a+85YWlJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXJsLCB2LCB2dl0gPSAkLnJlcXVpcmUoXFxcImxhbnpvdT9ydWxlPXRneOmfs+S5kFxcXCIpLmxpc3Rfb25lKFxcXCJodHRwczovL3d3ci5sYW56b3VpLmNvbS9iMDNxb3dnaGVcXFwiLCBcXFwicmVhZFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gJC5yZXF1aXJlKFxcXCJsYW56b3U/cnVsZT10Z3jpn7PkuZBcXFwiKS5vbmVfdXJsKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IFxcXCLmtbfpmJTop4bnlYzmnKzlnLDmlofku7bliIbkuqvvv6VmaWxlX3VybO+/pWhpa2VyOi8vZmlsZXMvcnVsZXMvZHpIb3VzZS90Z3jpn7PkuZBf6aG65pCcanMudHh0QFxcXCIgKyBnZXRQYXRoKGYpO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3J1bGU6Ly8nICsgYmFzZTY0RW5jb2RlKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5ZCv55SodWknLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICflkK/nlKjnirbmgIHvvJonICsgKGEgJiYgYiA/ICflj6/ku6UnIDogJ+S4jeiDvScpICsgJ+WQr+eUqCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh5bikgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeW4pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2hvbWVfdWknLCAnMScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsIHx8ICd0b2FzdDovL+acqui+vuaIkOWQr+eUqOadoeS7tu+8jOivt+WvvOWFpeaVsOaNric7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgYSAmJiBiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICB9LCBmaWxlX3BhdGgyLCBmaWxlX3BhdGgzKSxcXG4gICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGhvbWVfdWkgPT0gJzEnID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgIH0pXFxuXFxuXFxuXFxuICAgICAgICAgICAganNfdXJsc18xID0gc3RvcmFnZTAuZ2V0SXRlbSgnanNfdXJscycsIFtcXG4gICAgICAgICAgICAgICAgW1xcXCLnga/nrLxcXFwiLCBcXFwiaHR0cHM6Ly9hcGkudnZoYW4uY29tL2FwaS9kZW5nbG9uZ1xcXCJdLFxcbiAgICAgICAgICAgICAgICBbXFxcIumbquiKsVxcXCIsIFxcXCJodHRwczovL2FwaS52dmhhbi5jb20vYXBpL3Nub3dcXFwiXSxcXG4gICAgICAgICAgICAgICAgW1xcXCLmqLHoirFcXFwiLCBcXFwiaHR0cHM6Ly9hcGkudnZoYW4uY29tL2FwaS95aW5naHVhXFxcIl0sXFxuICAgICAgICAgICAgICAgIFtcXFwi5qKF6IqxXFxcIiwgXFxcImh0dHBzOi8vYXBpLnZ2aGFuLmNvbS9hcGkvbWVpaHVhXFxcIl1cXG4gICAgICAgICAgICBdKTtcXG4gICAgICAgICAgICBqc191cmxzXzIgPSBJdGVtLmpzX3VybHM7XFxuICAgICAgICAgICAgaWYgKGhvbWVfdWkgPT0gJzEnKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfms6jlhaVqc+aJqeWxlScsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAn6aG65pCc55qE5rOo5YWlanPvvIzlkK/liqjlpKrlpJrlj6/og73kvJrlhrLnqoEnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKFxcXCJcXFwiLCBcXFwi5ZCN56ewIyMj6ZO+5o6lXFxcIikuaW5wdXQoKHVybHMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBqc29uID0gaW5wdXQuc3BsaXQoJyMjIycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqc29uLmxlbmd0aCA9PSAyKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMucHVzaChqc29uKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnanNfdXJscycsIHVybHMpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/moLzlvI/plJnor69cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfSwganNfdXJsc18xKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgeW4gPSBJdGVtLmpzX3VybDtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+5ZCv55SoanPmianlsZU8L2I+JyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgSXRlbS5qc191cmwgPSAhSXRlbS5qc191cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKGZpbGVfcGF0aCwgSlNPTi5zdHJpbmdpZnkoSXRlbSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArICh5biA/IDU1IDogNjMpICsgJy5zdmcnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2ljb24nXFxuICAgICAgICAgICAgICAgIH0pO1xcblxcbiAgICAgICAgICAgICAgICBpZiAoeW4gJiYganNfdXJsc18xLmxlbmd0aCkge1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGpzX3VybHNfMS5tYXAoKFt0aXRsZSwgdXJsXSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHluMiA9IGpzX3VybHNfMi5pbmNsdWRlcyh1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPGI+JyArIHRpdGxlICsgJzwvYj4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHluLCB1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJscyA9IEl0ZW0uanNfdXJscztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5bikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHMucHVzaCh1cmwpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdXJscy5pbmRleE9mKHVybCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJscy5zcGxpY2UoaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtLmpzX3VybHMgPSB1cmxzO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKGZpbGVfcGF0aCwgSlNPTi5zdHJpbmdpZnkoSXRlbSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAheW4yLCB1cmwpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LycgKyAoeW4gJiYgeW4yID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmlLnlkI0nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygodXJscywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQodXJsc1tpXVswXSwgXFxcIui+k+WFpeaWsOeahOWQjeensFxcXCIpLmlucHV0KCh1cmxzLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsc1tpXVswXSA9IGlucHV0O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ2pzX3VybHMnLCB1cmxzKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHVybHMsIGkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBqc191cmxzXzEsIGkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5YiG5LqrJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8vXFxcIiArIHVybFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB0aXRsZSArICcjIyMnICsgdXJsKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+WIoOmZpCcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh1cmxzLCBpKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzLnNwbGljZShpLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ2pzX3VybHMnLCB1cmxzKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGpzX3VybHNfMSwgaSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG5cXG5cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBpZiAo6K6+572uKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6buY6K6k5YiG57uEJyxcXG4gICAgICAgICAgICBkZXNjOiAn5omT5byA5YiG57G75ZCO55qE6buY6K6k5YiG57uEJyxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIuehruWumuaBouWkjem7mOiupOiuvue9ruWQl++8n1xcXCIpLmNvbmZpcm0oKHRpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICBjbGVhckl0ZW0oJ2lpXzBfJyArIHRpZCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHRpZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIHp1Lm1hcCgobmFtZSwgc2lkKSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICc8Yj4nICsgbmFtZSArICc8L2I+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpaV8wX3RpZCwgc2lkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKGlpXzBfdGlkLCBzaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCAnaWlfMF8nICsgdGlkLCBTdHJpbmcoc2lkKSksXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArIChnZXRJdGVtKCdpaV8wXycgKyB0aWQsICcwJykgPT0gc2lkID8gNTUgOiA2MykgKyAnLnN2ZycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgZGVsZXRlSXRlbUJ5Q2xzKCd0Z3jpn7PkuZA6YWpheGVycjpkZWJ1ZycpO1xcbn0gY2F0Y2ggKGVycm9yKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogUmljaChTdHJvbmcoQ29sb3IoJ35+fuW9k+WJjee9kee7nOW8guW4uO+8jOivt+WIt+aWsOmHjeivlX5+ficpKSksXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBjbHM6ICd0Z3jpn7PkuZA6YWpheGVycjpkZWJ1ZycsXFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRoOivt+axguWHveaVsFwiLFwicGF0aFwiOlwiYWpheFwiLFwicnVsZVwiOlwiJC5leHBvcnRzID0gZnVuY3Rpb24odXJsKSB7XFxuXFxuICAgIENvb2tpZSA9IEpTT04ucGFyc2UoZmV0Y2hQQygnaHR0cHM6Ly93d3cua3V3by5jbi9mYXZpY29uLmljbz92PTEnLCB7XFxuICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZVxcbiAgICB9KSkuaGVhZGVyc1snc2V0LWNvb2tpZSddO1xcbiAgICBDb29raWUgPSBTdHJpbmcoQ29va2llKS5yZXBsYWNlKC87LiovLCAnJyk7XFxuICAgIFtlLCB0XSA9IENvb2tpZS5zcGxpdCgnPScpO1xcbiAgICB0ID0gdW5lc2NhcGUodCk7XFxuXFxuXFxuICAgIGZvciAodmFyIG4gPSBcXFwiXFxcIiwgaSA9IDA7IGkgPCBlLmxlbmd0aDsgaSsrKSBuICs9IGUuY2hhckNvZGVBdChpKS50b1N0cmluZygpO1xcbiAgICBuID0gU3RyaW5nKG4pO1xcblxcbiAgICB2YXIgciA9IE1hdGguZmxvb3Iobi5sZW5ndGggLyA1KSxcXG4gICAgICAgIG8gPSBwYXJzZUludChuLmNoYXJBdChyKSArIG4uY2hhckF0KDIgKiByKSArIG4uY2hhckF0KDMgKiByKSArIG4uY2hhckF0KDQgKiByKSArIG4uY2hhckF0KDUgKiByKSksXFxuICAgICAgICBsID0gTWF0aC5jZWlsKGUubGVuZ3RoIC8gMiksXFxuICAgICAgICBjID0gTWF0aC5wb3coMiwgMzEpIC0gMTtcXG5cXG4gICAgdmFyIGQgPSBNYXRoLnJvdW5kKDFlOSAqIE1hdGgucmFuZG9tKCkpICUgMWU4O1xcbiAgICBmb3IgKG4gKz0gZDsgbi5sZW5ndGggPiAxMDspXFxuICAgICAgICBuID0gKHBhcnNlSW50KG4uc3Vic3RyaW5nKDAsIDEwKSkgKyBwYXJzZUludChuLnN1YnN0cmluZygxMCwgbi5sZW5ndGgpKSkudG9TdHJpbmcoKTtcXG4gICAgbiA9IChvICogbiArIGwpICUgYztcXG4gICAgdmFyIGggPSBcXFwiXFxcIixcXG4gICAgICAgIGYgPSBcXFwiXFxcIjtcXG4gICAgZm9yIChpID0gMDsgaSA8IHQubGVuZ3RoOyBpKyspXFxuICAgICAgICBmICs9IChoID0gcGFyc2VJbnQodC5jaGFyQ29kZUF0KGkpIF4gTWF0aC5mbG9vcihuIC8gYyAqIDI1NSkpKSA8IDE2ID8gXFxcIjBcXFwiICsgaC50b1N0cmluZygxNikgOiBoLnRvU3RyaW5nKDE2KSxcXG4gICAgICAgIG4gPSAobyAqIG4gKyBsKSAlIGM7XFxuICAgIGZvciAoZCA9IGQudG9TdHJpbmcoMTYpOyBkLmxlbmd0aCA8IDg7KVxcbiAgICAgICAgZCA9IFxcXCIwXFxcIiArIGQ7XFxuICAgIFNlY3JldCA9IGYgKyBkO1xcblxcblxcblxcbiAgICB6ID0gXFxcIjEyMzQ1Njc4OTBhYmNkZWZcXFwiO1xcbiAgICByID0geCA9PiB7XFxuICAgICAgICB0ID0gXFxcIlxcXCI7XFxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgeDsgaSsrKSB0ICs9IHpbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogei5sZW5ndGgpXTtcXG4gICAgICAgIHJldHVybiB0XFxuICAgIH1cXG5cXG5cXG5cXG4gICAgdXJsICs9IGBodHRwc1N0YXR1cz0xJnJlcUlkPSR7cig4KX0tJHtyKDQpfS0ke3IoNCl9LSR7cig0KX0tJHtyKDEyKX0mcGxhdD13ZWJfd3d3JmZyb209YDtcXG4gICAgZ2V0ZGF0YSA9IChhamF4ZXJyKSA9PiB7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHJldHVybiBfID0gSlNPTi5wYXJzZShmZXRjaFBDKHVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6ICdodHRwczovL3d3dy5rdXdvLmNuLycsXFxuICAgICAgICAgICAgICAgICAgICAnQ29va2llJzogQ29va2llLFxcbiAgICAgICAgICAgICAgICAgICAgJ1NlY3JldCc6IFNlY3JldFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSkpLmRhdGE7XFxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcXG4gICAgICAgICAgICByZXR1cm4gYWpheGVyciA8IDIgPyBnZXRkYXRhKGFqYXhlcnIgKyAxKSA6IFxcXCJcXFwiO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBnZXRkYXRhKDApO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRo+mrmOe6p+aQnOe0olwiLFwicGF0aFwiOlwic2VhcmNoMlwiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuXFxuU2VhcmNoID0gSXRlbS5zZWFyY2g7XFxuW3Nva2V5LCBzaWRdID0gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLmdldGtleSgpO1xcbnB1dFZhcihcXFwiVmFyX3RneOmfs+S5kF9zb2tleVxcXCIsIHNva2V5KTtcXG5wdXRWYXIoJ1Zhcl90Z3jpn7PkuZBfaW5wdXQyJywgc2lkKTtcXG5cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGQgPSBbe1xcbiAgICAgICAgdGl0bGU6ICc8c3BhbiBzdHlsZT1cXFwiY29sb3I6I2ZmNjYwMVxcXCI+PGI+6YCA5Ye6IOmrmOe6p+aQnOe0ojwvYj48L3NwYW4+JyxcXG4gICAgICAgIGRlc2M6ICfnqIvluo/pppbpobUnLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gYmFjayh0cnVlKSwgJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICBwaWNfdXJsOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbl9sZWZ0NVxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZVxcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogXFxcIuaIkeeahOaUtuiXj1xcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2NvbGxlY3Rpb24/cnVsZT10Z3jpn7PkuZBcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpY29uXzJfcm91bmRcXFwiLFxcbiAgICAgICAgaW1nOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbl9kb3dubG9hZFxcXCJcXG4gICAgfSwge1xcbiAgICAgICAgdGl0bGU6IFxcXCLljoblj7LorrDlvZVcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9oaXN0b3J5P3J1bGU9dGd46Z+z5LmQXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl8yX3JvdW5kXFxcIixcXG4gICAgICAgIGltZzogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25faGlzXFxcIlxcbiAgICB9XTtcXG4gICAgaWYgKFNlYXJjaCkgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn8J+UjScsXFxuICAgICAgICBkZXNjOiAn5pCc57Si5YWz6ZSu6K+NIC8g5YiG5Lqr6ZO+5o6lJyxcXG4gICAgICAgIHVybDogJC50b1N0cmluZygoc2lkKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKCdWYXJfdGd46Z+z5LmQX3Nva2V5JywgaW5wdXQpO1xcbiAgICAgICAgICAgIGlmIChpbnB1dC50cmltKCkgIT0gXFxcIlxcXCIgJiYgZ2V0VmFyKCdWYXJfdGd46Z+z5LmQX2lucHV0MicpID09IDk5OSlcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdWYXJfdGd46Z+z5LmQX2lucHV0MicsIHNpZCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSxJdGVtLnNpZCksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoXFxcIlZhcl90Z3jpn7PkuZBfc29rZXlcXFwiKSxcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignVmFyX3RneOmfs+S5kF9zb2tleScsaW5wdXQpXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgZWxzZSBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfwn5SNJyxcXG4gICAgICAgIGRlc2M6ICfmkJzntKLlhbPplK7or40gLyDliIbkuqvpk77mjqUnLFxcbiAgICAgICAgdXJsOiAnXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIitpbnB1dCtcXFwiJnJ1bGU9XFxcIitNWV9SVUxFLnRpdGxlJyxcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBydWxlczogJC50b1N0cmluZygoc2FycikgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IFtdO1xcbiAgICAgICAgICAgICAgICBpbnB1dDIgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC8jIyMuKy8pKSB7XFxuICAgICAgICAgICAgICAgICAgICBpbnB1dDIgPSBpbnB1dC5tYXRjaCgvIyMjKC4rKS8pWzFdO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChpbnB1dC5tYXRjaCgva3V3b1xcXFwuY24vKSkge1xcbiAgICAgICAgICAgICAgICAgICAgc2FyciA9IFtcXG4gICAgICAgICAgICAgICAgICAgICAgICBbXFxcIuWIhuS6q1xcXCIsICc5OTknXVxcbiAgICAgICAgICAgICAgICAgICAgXTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaW5wdXQyLm1hdGNoKC9eKDk5OSk/JC8pICYmIHNhcnJbaW5wdXQyXSkge1xcbiAgICAgICAgICAgICAgICAgICAgc2FyciA9IFtzYXJyW2lucHV0Ml1dXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnNwbGl0KCcjIyMnKVswXVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFnZXRWYXIoJ1Zhcl90Z3jpn7PkuZBfaW5wdXQyJywgJzEnKS5tYXRjaCgvXig5OTkpPyQvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhcnIgPSBbc2FycltnZXRWYXIoJ1Zhcl90Z3jpn7PkuZBfaW5wdXQyJywgJzEnKV1dXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzYXJyWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvXuiBmuWQiD/mkJzntKI/XFxcXHMqLywgJycpO1xcbiAgICAgICAgICAgICAgICBzYXJyLm1hcChbdGl0bGUsIHNpZF0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwidGl0bGVcXFwiOiB0aXRsZS5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwic2VhcmNoX3VybFxcXCI6IFxcXCJoaWtlcjovL2VtcHR5IyMjZnlwYWdlIyMjXFxcIiArIGlucHV0ICsgXFxcIiMjI1xcXCIgKyBzaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNlYXJjaEZpbmRcXFwiOiBcXFwianM6ICQucmVxdWlyZSgnc2VhcmNoP3J1bGU9dGd46Z+z5LmQJyk7XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcXG4gICAgICAgICAgICB9LCBzYXJyKSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcihcXFwiVmFyX3RneOmfs+S5kF9zb2tleVxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignVmFyX3RneOmfs+S5kF9zb2tleScsaW5wdXQpXFxcIlxcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgaWYgKFNlYXJjaCkgc2FyclswXVswXSA9IFxcXCLng63mkJxcXFwiO1xcbiAgICBzYXJyLm1hcChbbmFtZSwgc2lkXSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRWYXIoJ1Zhcl90Z3jpn7PkuZBfaW5wdXQyJywgJzEnKSA9PSBzaWQgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZS5yZXBsYWNlKC8mbmJzcDsvaWcsICcgJyksXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdWYXJfdGd46Z+z5LmQX2lucHV0MicsIHNpZCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0sIHNpZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbn0gZWxzZSBkID0gW107XFxuXFxuaWYgKCFTZWFyY2ggfHwgKHNpZCA9PSA5OTkgfHwgc29rZXkudHJpbSgpID09IFxcXCJcXFwiKSkge1xcbiAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnPHNwYW4gc3R5bGU9XFxcImNvbG9yOiNmZjY2MDFcXFwiPjxiPuWOhuWPsuiusOW9lTwvYj48L3NwYW4+JyxcXG4gICAgICAgICAgICBwaWNfdXJsOiBcXFwiaGlrZXI6Ly9pbWFnZXMvaWNvbl9jbG9ja1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiLFxcbiAgICAgICAgICAgIHVybDogJChcXFwi56Gu5a6a5riF6Zmk5YWo6YOo5pCc57Si6K6w5b2V77yfXFxcIikuY29uZmlybSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIEl0ZW0uSGlzdG9yeSA9IFtdO1xcbiAgICAgICAgICAgICAgICB3cml0ZUZpbGUoZmlsZV9wYXRoLCBKU09OLnN0cmluZ2lmeShJdGVtKSk7XFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhpZCArIFxcXCI6a2V5XFxcIik7XFxuICAgICAgICAgICAgICAgIGFkZEl0ZW1BZnRlcihpZCArIFxcXCI6c2VhcmNoSGlzdG9yeVxcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIFxcXCJ+fn7ku4DkuYjpg73msqHmnInlk6Z+fn5cXFwiLmZvbnRjb2xvcihcXFwiR3JheVxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGlkICsgXFxcIjprZXlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0sIFxcXCJ0Z3jpn7PkuZBcXFwiKSxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogXFxcInRneOmfs+S5kDpzZWFyY2hIaXN0b3J5XFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgRCA9IFtdO1xcbiAgICAgICAgbGV0IGhpc3RvcnkgPSBJdGVtLkhpc3Rvcnk7XFxuICAgICAgICBpZiAoaGlzdG9yeS5sZW5ndGggPT09IDApIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOKAneKAnVxcXCIgKyBcXFwifn5+5LuA5LmI6YO95rKh5pyJ5ZOmfn5+XFxcIi5mb250Y29sb3IoXFxcIkdyYXlcXFwiKSxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBjbHM6IFxcXCJ0Z3jpn7PkuZA6a2V5XFxcIlxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgZWxzZSBtYXBIaXN0b3J5KGhpc3RvcnkpO1xcbiAgICAgICAgZCA9IGQuY29uY2F0KEQpO1xcblxcblxcbiAgICAgICAgUmVzb3UgPSAocmVzb3UpID0+IHtcXG4gICAgICAgICAgICBEID0gW107XFxuICAgICAgICAgICAgcmVzb3UubWFwKG5hbWUgPT4ge1xcbiAgICAgICAgICAgICAgICBELnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5hbWUsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKG5hbWUseW4pID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ1Zhcl90Z3jpn7PkuZBfc29rZXknLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHluKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignVmFyX3RneOmfs+S5kF9pbnB1dDInLCAnMScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vc2VhcmNoP3M9XFxcIiArIG5hbWUgKyBcXFwiIyMjMSZydWxlPXRneOmfs+S5kFxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9LCBuYW1lLCBJdGVtLnNlYXJjaCksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiAndGd46Z+z5LmQOnJlc291OmRlYnVnJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gRDtcXG4gICAgICAgIH1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIHRpdGxlOiAnPHNwYW4gc3R5bGU9XFxcImNvbG9yOiNmZjY2MDFcXFwiPjxiPuWkp+WutumDveWcqOaQnDwvYj48L3NwYW4+JyxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKFJlc291KSA9PiB7XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscygndGd46Z+z5LmQOnJlc291OmRlYnVnJyk7XFxuICAgICAgICAgICAgICAgIHNyZWMgPSBbXTtcXG4gICAgICAgICAgICAgICAgSlNPTi5wYXJzZShmZXRjaChcXFwiaHR0cDovL3NlYXJjaHJlYy5rdXdvLmNuL3NyZWMucz9zZWFyY2hyZWNhcGk9MCZpZD0wXFxcIikpLmFic2xpc3QubWFwKGFibGlzdCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBhYmxpc3QubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNyZWMucHVzaChfLndvcmQpXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBhZGRJdGVtQWZ0ZXIoJ3RneOmfs+S5kDpyZXNvdScsIFJlc291KHNyZWMpKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgICAgICB9LFJlc291KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcImhpa2VyOi8vaW1hZ2VzL2ljb25fZmlyZVxcXCIsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgaWQ6IFxcXCJ0Z3jpn7PkuZA6cmVzb3VcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXNvdSA9IGdldFZhcignVmFyX3RneOmfs+S5kF9yZXNvdScsJ1cxMD0nKTtcXG4gICAgICAgIHJlc291ID0gSlNPTi5wYXJzZShiYXNlNjREZWNvZGUocmVzb3UpKTtcXG4gICAgICAgIGQgPSBkLmNvbmNhdChSZXNvdShyZXNvdSkpO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnB1c2goc29rZXksIHNpZCk7XFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRpOaUtuiXj+mhtemdolwiLFwicGF0aFwiOlwiY29sbGVjdGlvblwiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuZGVsZXRlIHNhcnJbMF07XFxuc2Fyci5wdXNoKFsn6K6+572uJywgJzk5OSddKTtcXG5kID0gW107XFxuc2Fyci5tYXAoW25hbWUsIHNpZF0gPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFJpY2gyKGdldE15VmFyKCdzaScsIGdldEl0ZW0oJ3NpJywgJzEnKSkgPT0gc2lkID8gUmljaChTdHJvbmcoQ29sb3IobmFtZSkpKSA6IG5hbWUpLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzaWQpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcignc2knLCBzaWQpO1xcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2lpJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSwgc2lkKSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSk7XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG59KTtcXG5cXG5cXG5zaSA9IGdldE15VmFyKCdzaScsIGdldEl0ZW0oJ3NpJywgJzEnKSk7XFxudGkgPSBnZXRNeVZhcignaWknLCBnZXRJdGVtKCdpaV8xXycgKyBzaSwgJzAnKSk7XFxuaWYgKHNpICE9IDk5OSkge1xcbiAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSk7XFxuICAgIGlmICh6eSA9PT0gXFxcIlxcXCIgfHwgSlNPTi5zdHJpbmdpZnkoenkpID09ICd7fScpIHp5ID0ge1xcbiAgICAgICAgXFxcIuWFqOmDqFxcXCI6IFtdXFxuICAgIH0sIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpLCB6eSk7XFxuICAgIGxldCB6dSA9IFtdO1xcbiAgICBmb3IgKGkgaW4genkpIHp1LnB1c2goaSk7XFxuICAgIHp1LmNvbmNhdChcXFwi6K6+572uXFxcIikubWFwKChuYW1lLCBpaSkgPT4ge1xcbiAgICAgICAgaWYgKGlpICE9IHp1Lmxlbmd0aCB8fCBnZXRJdGVtKCd0eXBlXzEnLCAnMCcpID09ICcxJykge1xcbiAgICAgICAgICAgIGlmIChpaSAhPSB6dS5sZW5ndGgpIGV4dHJhID0ge1xcbiAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIoOmZpCBcXFwiICsgbmFtZSxcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCLnoa7lrprliKDpmaTliIbnu4QgXFxcIiArIG5hbWUgKyBcXFwiIOWQl++8n1xcXFxu5q2k5pON5L2c5LiN5Y+v6YCG77yM6LCo5oWO6YCJ5oup44CCXFxcIikuY29uZmlybSgoc2ksIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YV9cXFwiICsgc2kpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgenlbbmFtZV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnaWlfMV8nICsgc2kpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdpaScpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCBuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgc2ksIG5hbWUpXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5omT5byA5Li65LqM57qnXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKHNpLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenlbbmFtZV0ubWFwKF8gPT4gRXh0cmEoXywgc2kpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCBuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgfSwgc2ksIG5hbWUpXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5L+u5pS55ZCN56ewXFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJcXFwiLCBcXFwi6K+36L6T5YWl5paw55qE57uE5ZCNXFxcIikuaW5wdXQoKHNpLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHt9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4genkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IG5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2lucHV0XSA9IHp5W2ldXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25baV0gPSB6eVtpXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5ID0ganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwgbmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaSwgbmFtZSlcXG4gICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLmm7TmlLnmjpLluo9cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHNpLCB6dSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB6dS5pbmRleE9mKG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHp1LnNwbGljZShpLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh6dS5jb25jYXQoXFxcIuacgOWQjumdolxcXCIpLCAyLCAn6K+36YCJ5oup6LWE5rqQ5L2N572uJykuc2VsZWN0KChzaSwgenUsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YV9cXFwiICsgc2kpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0ge307XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBvZiB6dSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW25hbWVdID0genlbbmFtZV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgenUuaW5kZXhPZihpKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2ldID0genlbaV1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoXFxcIuacgOWQjumdolxcXCIgPT0gaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25bbmFtZV0gPSB6eVtuYW1lXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCdpaScsIHp1Lmxlbmd0aCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenkgPSBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dSwgbmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaSwgenUsIG5hbWUpXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5YiG57uE5ZCI5bm2XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSwgenUsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpID0genUuaW5kZXhPZihuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB6dS5zcGxpY2UoaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUsIDMsICfpgInmi6nopoHlkIjlubbnmoTliIbnu4QnKS5zZWxlY3QoKHNpLCB6dSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSB7fTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIG9mIHp1KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5W2ldID0genlbaV0uY29uY2F0KHp5W25hbWVdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignaWknLCB6dS5pbmRleE9mKGkpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25baV0gPSB6eVtpXS5maWx0ZXIoKGl0ZW0sIGluZGV4LCBzZWxmKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmluZEluZGV4KG9iaiA9PiBvYmoudXJsID09PSBpdGVtLnVybCkgPT09IGluZGV4O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenkgPSBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dSwgbmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaSwgenUsIG5hbWUpXFxuICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5YiG5LqrIFxcXCIgKyBuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHNpLCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXyA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKVtuYW1lXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHNoYXJlUGFzdGUoYmFzZTY0RW5jb2RlKEpTT04uc3RyaW5naWZ5KF8pKSwgJ+S6keWJqui0tOadvzYnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJjb3B5Oi8v5LqR5Y+j5Luk77yM5aSN5Yi25pW05p2h5Y+j5Luk5omT5byA6L2v5Lu25Y2z5Y+v5a+85YWlXFxcXG5cXFwiICsgdXJsICsgXFxcIkBpbXBvcnQ9anM6JC5yZXF1aXJlKFxcXFxcXFwiY29sbGVjdGlvbjM/cnVsZT10Z3jpn7PkuZBcXFxcXFxcIikoXFxcXFxcXCJcXFwiICsgc2kgKyBcXFwiXFxcXFxcXCIsSlNPTi5wYXJzZShmZXRjaChpbnB1dC5yZXBsYWNlKCcveHh4eHh4JywnL2FwaS9nZXRDb250ZW50JykpKS5kYXRhLFxcXFxcXFwiXFxcIiArIG5hbWUgKyBcXFwiXFxcXFxcXCIsMSlcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiG5Lqr5aSx6LSlXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBzaSwgbmFtZSlcXG4gICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIGVsc2UgZXh0cmEgPSB7fTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGkgPT0gaWkgPyBSaWNoKFN0cm9uZyhDb2xvcihuYW1lKSkpIDogbmFtZSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ2lpJywgaWkpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCBpaSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiBleHRyYVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgaWYgKHRpICE9IHp1Lmxlbmd0aCkge1xcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHp1KSA9PSAnW1xcXCLlhajpg6hcXFwiXScgJiYgenlbXFxcIuWFqOmDqFxcXCJdLmxlbmd0aCA9PSAwKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIFxcXCJ+fn7ku4DkuYjpg73msqHmnIl+fn5cXFwiLmZvbnRjb2xvcihcXFwiR3JheVxcXCIpXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmICh6eVt6dVt0aV1dLmxlbmd0aCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICBkZWxldGUgenlbenVbdGldXTtcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdpaV8xXycgKyBzaSk7XFxuICAgICAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2lpJyk7XFxuICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFwiY29sbGVjdGlvbjI/cnVsZT10Z3jpn7PkuZBcXFwiKS5zZXREYXRhKHNpLCB6eSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB6eVt6dVt0aV1dLm1hcCgoXywgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbWF0ID0gXy51cmwubWF0Y2goLyhcXFxcZCspW1xcXCInXT9cXFxcKSQvKTtcXG4gICAgICAgICAgICAgICAgICAgIHp5aWQgPSBtYXQgPyBtYXRbMV0gOiBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh6eWlkKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5leHRyYSA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFRpdGxlOiBmYWxzZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiAndGd46Z+z5LmQOmFkZGxpc3Q6ZGVidWcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuS/ruaUuVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoc2ksIGtleSwgXykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFtcXFwi5L+u5pS55ZCN56ewXFxcIiwgXFxcIuS/ruaUueWwgemdolxcXCIsIFxcXCLkv67mlLnpk77mjqVcXFwiXSwgMSwgJ+mAieaLqeimgeS/ruaUueeahOWPguaVsCcpLnNlbGVjdCgoc2ksIGtleSwgXykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZSwgdGV4dF0gPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwi5L+u5pS55ZCN56ewXFxcIjogWyd0aXRsZScsICfor7fovpPlhaXmlrDnmoTlkI3np7AnXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCLkv67mlLnlsIHpnaJcXFwiOiBbXy5pbWcgPyAnaW1nJyA6ICdwaWMnLCAn6K+36L6T5YWl5q2j56Gu55qE5bCB6Z2i5Zyw5Z2AJ10sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwi5L+u5pS56ZO+5o6lXFxcIjogWyd1cmwnLCAn5Zyoe+WQjumdoiDlm57ovaYo5o2i6KGMKeWHoOS4i+WwseihjCddXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1baW5wdXRdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gX1t0eXBlXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQobmFtZSwgdGV4dCkuaW5wdXQoKHNpLCBrZXksIHR5cGUsIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKVtrZXldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkgPSB6eS5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9bdHlwZV0gPT0gbmFtZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfW3R5cGVdID0gaW5wdXQ7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5LCBrZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwga2V5LCB0eXBlLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwga2V5LCBfKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dVt0aV0sIF8pXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5Y+Y5pu0XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKChzaSwgenUsIGtleSwgaSwgenlpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFtcXFwi5pu05pS55o6S5bqPXFxcIiwgXFxcIuWIh+aNouWIhue7hFxcXCIsIFxcXCLmibnph4/mjaLnu4RcXFwiXSwgMSwgJ+mAieaLqeimgeWPmOabtOeahOS6i+S7ticpLnNlbGVjdCgoc2ksIHp1LCBrZXksIGksIHp5aWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn5pu05pS55o6S5bqPJzpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKVtrZXldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp1ID0genkubWFwKF8gPT4gXy50aXRsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHp5W2ldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6dS5zcGxpY2UoaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUuY29uY2F0KFxcXCLmnIDlkI7pnaJcXFwiKSwgMSwgJ+ivt+mAieaLqei1hOa6kOS9jee9ricpLnNlbGVjdCgoc2ksIGtleSwgenksIHp1LCBkYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb24gPSBbXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpIGluIHp1KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoenVbaV0gPT0gaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnB1c2goZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uLnB1c2goenlbaV0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcXFwi5pyA5ZCO6Z2iXFxcIiA9PSBpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbi5wdXNoKGRhdGEpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5ID0ganNvbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5LCBrZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCBrZXksIHp5LCB6dSwgZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfliIfmjaLliIbnu4QnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlpID0genUuaW5kZXhPZihrZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp1LnNwbGljZShpaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUuY29uY2F0KCfmlrDnu4QnKSwgMywgJ+ivt+mAieaLqei1hOa6kOS9jee9ricpLnNlbGVjdCgoc2ksIGtleSwgaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eVtrZXldLm1hcCgoXywgaWkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpaSAhPSBpKSBqc29uLnB1c2goXyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGRhdGEgPSBfO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenlba2V5XSA9IGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgn5paw57uEJyA9PSBpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXmlrDnu4TlkI3np7BcXFwiKS5pbnB1dCgoc2ksIHp5LCBkYXRhKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnRyaW0oKS5tYXRjaCgvXlxcXFxkK3xeXFxcXHMqKOaWsOe7hCk/XFxcXHMqJC8pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v57uE5ZCN5LiN6IO95Li656m6ICYg5pyA5YmN6Z2i5LiN6IO95piv5pWw5a2XXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eVtpbnB1dF0gPSBbZGF0YV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2ksIHp5LCBkYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eVtpbnB1dF0ucHVzaChkYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwga2V5LCBpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ+aJuemHj+aNoue7hCc6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcImhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjXFxcIikucnVsZSgoc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiYWRkbGlzdD9ydWxlPXRneOmfs+S5kFxcXCIpKHNpLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwga2V5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dSwga2V5LCBpLCB6eWlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCB6dSwgenVbdGldLCBpLCB6eWlkKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIhuS6q1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoXywgc2ksIGtleSwgenlpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFtcXFwi5YiG5Lqr6ZO+5o6lXFxcIiwgXFxcIuWIhuS6q+WPo+S7pFxcXCIsIFxcXCLmibnph4/liIbkuqtcXFwiXSwgMSwgJ+mAieaLqeimgeWPmOabtOeahOS6i+S7ticpLnNlbGVjdCgoXywgc2ksIGtleSwgenlpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfliIbkuqvpk77mjqUnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuY29weXVybChzaSwgenlpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfliIbkuqvlj6Pku6QnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL+S6keWPo+S7pO+8jOWkjeWItuaVtOadoeWPo+S7pOaJk+W8gOi9r+S7tuWNs+WPr+WvvOWFpVxcXFxuXFxcIiArIGJhc2U2NEVuY29kZShKU09OLnN0cmluZ2lmeShfKSkgKyBcXFwiQGltcG9ydD1qczokLnJlcXVpcmUoXFxcXFxcXCJjb2xsZWN0aW9uMz9ydWxlPXRneOmfs+S5kFxcXFxcXFwiKShcXFxcXFxcIlxcXCIgKyBzaSArIFxcXCJcXFxcXFxcIixpbnB1dCxcXFxcXFxcIlxcXCIgKyBfLnRpdGxlICsgXFxcIlxcXFxcXFwiKVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICfmibnph4/liIbkuqsnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5I1xcXCIpLnJ1bGUoKHNpLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiYWRkbGlzdD9ydWxlPXRneOmfs+S5kFxcXCIpKHNpLCAxLCBrZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCBrZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgXywgc2ksIGtleSwgenlpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBfLCBzaSwgenVbdGldLCB6eWlkKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcIuWIoOmZpFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoc2ksIGtleSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCLnoa7lrprliKDpmaRcXFwiICsgbmFtZSArIFxcXCLlkJfvvJ9cXFwiKS5jb25maXJtKChzaSwga2V5LCBuYW1lKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB6eSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpKVtrZXldO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenUgPSB6eS5tYXAoXyA9PiBfLnRpdGxlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHp1LmluZGV4T2YobmFtZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpLCAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5LCBrZXkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHNpLCBrZXksIG5hbWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwgenVbdGldLCBfLnRpdGxlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2kgPT0gJzEnKSBfLmV4dHJhLmxvbmdDbGljay51bnNoaWZ0KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLimIUg55u45Ly85o6o6I2QIOKYhVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh6eWlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwiaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKCh6eWlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwidXJsP3J1bGU9dGd46Z+z5LmQXFxcIikoNiwgenlpZCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB6eWlkKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgenlpZClcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXy51cmwgPSBcXFwidG9hc3Q6Ly/nm67liY3mnKrpgILphY3ml6fniYjmlLbol4/vvIzor7fmiYvliqjliKDpmaQgLSDph43mlrDmlLbol49cXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uZXh0cmEgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi5aSN5Yi25pCc57Si5YWz6ZSu6K+NXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCh0aXRsZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgXy50aXRsZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLliKDpmaRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHNpLCBrZXksIG5hbWUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChcXFwi56Gu5a6a5Yig6ZmkXFxcIiArIG5hbWUgKyBcXFwi5ZCX77yfXFxcIikuY29uZmlybSgoc2ksIGtleSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSlba2V5XTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHp1ID0genkubWFwKF8gPT4gXy50aXRsZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB6dS5pbmRleE9mKG5hbWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiY29sbGVjdGlvbjI/cnVsZT10Z3jpn7PkuZBcXFwiKS5zZXREYXRhKHNpLCB6eSwga2V5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzaSwga2V5LCBuYW1lKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgc2ksIHp1W3RpXSwgXy50aXRsZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goXyk7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfpu5jorqTliIbnu4QnLFxcbiAgICAgICAgICAgIGRlc2M6ICfmiZPlvIDliIbnsbvlkI7nmoTpu5jorqTliIbnu4QnLFxcbiAgICAgICAgICAgIHVybDogJChcXFwi56Gu5a6a5oGi5aSN6buY6K6k6K6+572u5ZCX77yfXFxcIikuY29uZmlybSgoc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdpaV8xXycgKyBzaSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHNpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgenUubWFwKChuYW1lLCBzaWQpID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJzxiPicgKyBuYW1lICsgJzwvYj4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGlpXzFfc2ksIHNpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShpaV8xX3NpLCBzaWQpO1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgICAgICB9LCAnaWlfMV8nICsgc2ksIFN0cmluZyhzaWQpKSxcXG4gICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tZXNzeS8nICsgKGdldEl0ZW0oJ2lpXzFfJyArIHNpLCAnMCcpID09IHNpZCA/IDU1IDogNjMpICsgJy5zdmcnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfaWNvbidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgZGVsZXRlIHNhcnJbc2Fyci5sZW5ndGggLSAxXTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSwge1xcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJzxzcGFuIHN0eWxlPVxcXCJjb2xvcjojZmY2NjAxXFxcIj48Yj7lm57liLAgVEdY6Z+z5LmQPC9iPjwvc3Bhbj4nLFxcbiAgICAgICAgZGVzYzogJ+eoi+W6j+mmlumhtScsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHJldHVybiBiYWNrKHRydWUpLCAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KSxcXG4gICAgICAgIGltZzogJ2h0dHBzOi8vZ2hwcm94eS5jb20vaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2xzMTI1NzgxMDAzL2xtdHViaWFvL21haW4vbXVzaWMvODIuc3ZnJyxcXG4gICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ/CflI0nLFxcbiAgICAgICAgZGVzYzogJ+aQnOe0ouWFs+mUruivjSAvIOWIhuS6q+mTvuaOpScsXFxuICAgICAgICB1cmw6ICQudG9TdHJpbmcoKHluLCBzaWQpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoJ1Zhcl90Z3jpn7PkuZBfc29rZXknLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICBpZiAoeW4pIHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdWYXJfdGd46Z+z5LmQX2lucHV0MicsIHNpZCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9wYWdlL3NlYXJjaDIjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjP3A9ZnlwYWdlJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3NlYXJjaD9zPVxcXCIgKyBpbnB1dCArIFxcXCImcnVsZT1cXFwiICsgTVlfUlVMRS50aXRsZTtcXG4gICAgICAgIH0sIEl0ZW0uc2VhcmNoLCBJdGVtLnNpZCksXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBcXFwi6auY57qn5pCc57SiXFxcIixcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcihcXFwiVmFyX3RneOmfs+S5kF9zb2tleVxcXCIsIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignVmFyX3RneOmfs+S5kF9zb2tleScsaW5wdXQpXFxcIlxcbiAgICAgICAgfVxcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+aIkeeahOaUtuiXjycsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2NvbGxlY3Rpb24/cnVsZT10Z3jpn7PkuZAnLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+WOhuWPsuiusOW9lScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2hpc3Rvcnk/cnVsZT10Z3jpn7PkuZAnLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICB0aXRsZTogJ+mrmOe6p+aQnOe0oicsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc2VhcmNoMiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAn5YiG57uE6K6+572uJyxcXG4gICAgICAgIGRlc2M6ICfliIbnsbvmmL7npLrliIbnu4Torr7nva4nLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7lrprph43nva7liIbnu4Tnm7jlhbPorr7nva7lkJfvvJ9cXFwiKS5jb25maXJtKChzYXJyKSA9PiB7XFxuICAgICAgICAgICAgY2xlYXJJdGVtKCd0eXBlXzEnKTtcXG4gICAgICAgICAgICBmb3IgKGl0IG9mIHNhcnIpXFxuICAgICAgICAgICAgICAgIGlmIChpdCkgY2xlYXJJdGVtKCdpaV8xXycgKyBpdFsxXSk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0sIHNhcnIpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0sIHtcXG4gICAgICAgIHRpdGxlOiAnPGI+5YiG57uE6K6+572uPC9iPicsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZCkgPT4ge1xcbiAgICAgICAgICAgIHNldEl0ZW0oJ3R5cGVfMScsIHNpZCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0sIGdldEl0ZW0oJ3R5cGVfMScsICcwJykgPT0gJzEnID8gJzAnIDogJzEnKSxcXG4gICAgICAgIGltZzogJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbWVzc3kvJyArIChnZXRJdGVtKCd0eXBlXzEnLCAnMCcpID09IDEgPyA1NSA6IDYzKSArICcuc3ZnJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICB9LCB7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfpu5jorqTliIbnsbsnLFxcbiAgICAgICAgZGVzYzogJ+aJk+W8gOaUtuiXj+WQjueahOm7mOiupOWIhuexuycsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruWumuaBouWkjem7mOiupOiuvue9ruWQl++8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFySXRlbSgnc2knKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgfSk7XFxuICAgIHNhcnIubWFwKFtuYW1lLCBzaWRdID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICc8Yj4nICsgbmFtZSArICc8L2I+JyxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCdzaScsIHNpZCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0sIFN0cmluZyhzaWQpKSxcXG4gICAgICAgICAgICBpbWc6ICdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21lc3N5LycgKyAoZ2V0SXRlbSgnc2knLCAnMScpID09IHNpZCA/IDU1IDogNjMpICsgJy5zdmcnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9pY29uJ1xcbiAgICAgICAgfSk7XFxuICAgIH0pO1xcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLikabmlLbol4/lh73mlbBcIixcInBhdGhcIjpcImNvbGxlY3Rpb24yXCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSB7XFxuICAgIGxvZ0RhdGE6IGZ1bmN0aW9uKG5ld0RhdGEsIHNpKSB7XFxuXFxuICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSk7XFxuICAgICAgICBpZiAoenkgPT09IFxcXCJcXFwiKSB6eSA9IHtcXG4gICAgICAgICAgICBcXFwi5YWo6YOoXFxcIjogW11cXG4gICAgICAgIH0sIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImRhdGFfXFxcIiArIHNpLCB6eSk7XFxuICAgICAgICBsZXQgenUgPSBbXTtcXG4gICAgICAgIGZvciAoaSBpbiB6eSkgenUucHVzaChpKTtcXG5cXG5cXG4gICAgICAgIHJldHVybiAkKHp1LmNvbmNhdChcXFwi5paw57uEXFxcIiksIDMsIFxcXCLpgInmi6nnu4RcXFwiKS5zZWxlY3QoKHp5LCB6dSwgbmV3RGF0YSwgc2kpID0+IHtcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIuaWsOe7hFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaWYgKCF6dS5pbmNsdWRlcyhpbnB1dCkpIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCJcXFwiLCBcXFwi6K+36L6T5YWl5paw57uE5ZCN56ewXFxcIikuaW5wdXQoKHp5LCB6dSwgbmV3RGF0YSwgc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQudHJpbSgpLm1hdGNoKC9eXFxcXGQrfF5cXFxccyoo5paw57uEKT9cXFxccyokLykpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nu4TlkI3kuI3og73kuLrnqbogJiDmnIDliY3pnaLkuI3og73mmK/mlbDlrZcgJiDkuZ/kuI3og73lj6vmlrDnu4RcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHp1LmNvbmNhdChcXFwi5pyA5ZCO6Z2iXFxcIiksIDMsICfor7fpgInmi6nmlrDnu4TkvY3nva4nKS5zZWxlY3QoKHp5LCBpbnB1dDIsIG5ld0RhdGFzLCBzaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdEYXRhID0gQXJyYXkuaXNBcnJheShuZXdEYXRhcykgPyBuZXdEYXRhcyA6IFtuZXdEYXRhc107XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5pyA5ZCO6Z2iXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenlbaW5wdXQyXSA9IG5ld0RhdGE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0ge307XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4genkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBpbnB1dCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2lucHV0Ml0gPSBuZXdEYXRhO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2ldID0genlbaV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eSA9IGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmV3RGF0YXMpKSBiYWNrKHRydWUpLCB0b2FzdCgn5oiQ5YqfJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHp5LCBpbnB1dCwgbmV3RGF0YSwgc2kpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgenksIHp1LCBuZXdEYXRhLCBzaSk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiG57uE5ZCN56ew6YeN5aSN5LqGflxcXCI7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgenkgPSB6eVtpbnB1dF07XFxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmV3RGF0YSkpIHtcXG4gICAgICAgICAgICAgICAgenkgPSB6eS5jb25jYXQobmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHRvYXN0KCfmiJDlip8nKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiY29sbGVjdGlvbjI/cnVsZT10Z3jpn7PkuZBcXFwiKS5zZXREYXRhKHNpLCB6eSwgaW5wdXQpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB6dSA9IHp5Lm1hcChpdCA9PiBpdC50aXRsZSk7XFxuICAgICAgICAgICAgaWYgKDF8fCF6dS5pbmNsdWRlcyhuZXdEYXRhLnRpdGxlKSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCh6dS5jb25jYXQoXFxcIuacgOWQjumdolxcXCIpLCAyLCAn6K+36YCJ5oup6LWE5rqQ5L2N572uJykuc2VsZWN0KCh6eSwgenUsIGlucHV0MiwgbmV3RGF0YSwgc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwi5pyA5ZCO6Z2iXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHp5LnB1c2gobmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSB6dS5pbmRleE9mKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB6eS5zcGxpY2UoaSwgMCwgbmV3RGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5LCBpbnB1dDIpO1xcbiAgICAgICAgICAgICAgICB9LCB6eSwgenUsIGlucHV0LCBuZXdEYXRhLCBzaSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5q2M5puy5ZCN56ew6YeN5aSN5LqGflxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCB6eSwgenUsIG5ld0RhdGEsIHNpKTtcXG4gICAgfSxcXG4gICAgc2V0RGF0YTogZnVuY3Rpb24oc2ksIHp5Miwga2V5KSB7XFxuICAgICAgICBsZXQgenkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSk7XFxuICAgICAgICBpZiAoa2V5KSB7XFxuICAgICAgICAgICAgenlba2V5XSA9IHp5Mi5maWx0ZXIoKGl0ZW0sIGluZGV4LCBzZWxmKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbmRJbmRleChvYmogPT4gb2JqLnVybCA9PT0gaXRlbS51cmwpID09PSBpbmRleDtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgenkgPSB6eTI7XFxuICAgICAgICB9XFxuICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSwgenkpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+aIkOWKn1xcXCI7XFxuICAgIH0sXFxuICAgIGNvcHl1cmw6IGZ1bmN0aW9uKHNpLCB6eWlkKSB7XFxuICAgICAgICBjdXJsID0gXFxcImh0dHBzOi8vd3d3Lmt1d28uY24vXFxcIlxcbiAgICAgICAgaWYgKFN0cmluZyh6eWlkKS50cmltKCkubWF0Y2goL15cXFxcZCskLykpIHtcXG4gICAgICAgICAgICBpZiAoc2kgPT0gJzEnKVxcbiAgICAgICAgICAgICAgICBjdXJsICs9IFxcXCJwbGF5X2RldGFpbC9cXFwiO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpID09IDIpXFxuICAgICAgICAgICAgICAgIGN1cmwgKz0gXFxcImFsYnVtX2RldGFpbC9cXFwiO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpID09IDMpXFxuICAgICAgICAgICAgICAgIGN1cmwgKz0gXFxcIm12cGxheS9cXFwiO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpID09IDQpXFxuICAgICAgICAgICAgICAgIGN1cmwgKz0gXFxcInBsYXlsaXN0X2RldGFpbC9cXFwiO1xcbiAgICAgICAgICAgIGVsc2UgaWYgKHNpID09IDUpXFxuICAgICAgICAgICAgICAgIGN1cmwgKz0gXFxcInNpbmdlcl9kZXRhaWwvXFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBcXFwiY29weTovL1xcXCIgKyBjdXJsICsgenlpZDtcXG4gICAgfSxcXG5cXG5cXG5cXG5cXG4gICAgZ2V0a2V5OiBmdW5jdGlvbigpIHtcXG4gICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luZm8/cnVsZT10Z3jpn7PkuZAnLCB7fSkpLnJ1bGUpO1xcbiAgICAgICAgaWYgKE1ZX1VSTC5tYXRjaCgnIyMjJykpIHtcXG4gICAgICAgICAgICBfID0gTVlfVVJMLnNwbGl0KCcjIyMnKTtcXG4gICAgICAgICAgICBzaWQgPSBfWzNdIHx8IEl0ZW0uc2lkO1xcbiAgICAgICAgICAgIHNva2V5ID0gX1syXTtcXG4gICAgICAgICAgICBpZiAoc29rZXkubWF0Y2goL17ogZrlkIg/5pCc57SiPy8pIHx8IHNpZCA9PSAnOTk5Jykge1xcbiAgICAgICAgICAgICAgICBzaWQgPSAnOTk5J1xcbiAgICAgICAgICAgICAgICBzb2tleSA9IHNva2V5LnRyaW0oKS5yZXBsYWNlKC9e6IGa5ZCIP+aQnOe0oj8vLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBfID0gZ2V0VmFyKFxcXCJWYXJfdGd46Z+z5LmQX3Nva2V5XFxcIikuc3BsaXQoJyMjIycpO1xcbiAgICAgICAgICAgIHNpZCA9IF9bMV0gfHwgZ2V0VmFyKCdWYXJfdGd46Z+z5LmQX2lucHV0MicsIEl0ZW0uc2lkKTtcXG4gICAgICAgICAgICBzb2tleSA9IF9bMF07XFxuICAgICAgICB9XFxuXFxuICAgICAgICBpZiAoIShzaWQgPiAwICYmIChzaWQgPCA2IHx8IHNpZCA9PSA5OTkpKSlcXG4gICAgICAgICAgICBzaWQgPSBJdGVtLnNpZDtcXG5cXG4gICAgICAgIC8vIOS/neWtmOaQnOe0ouWFs+mUruivjVxcbiAgICAgICAgaWYgKCFzb2tleS5tYXRjaCgva3V3b1xcXFwuY24vKSAmJiBzb2tleS50cmltKCkgIT0gXFxcIlxcXCIgJiYgc2lkIT05OTkpIHtcXG4gICAgICAgICAgICBEID0gW107XFxuICAgICAgICAgICAgaGlzdG9yeSA9IEl0ZW0uSGlzdG9yeTtcXG4gICAgICAgICAgICBpaSA9IGhpc3RvcnkuaW5kZXhPZihzb2tleSk7XFxuICAgICAgICAgICAgaWYgKGlpID4gLTEpIHtcXG4gICAgICAgICAgICAgICAgaGlzdG9yeS5zcGxpY2UoaWksIDEpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBoaXN0b3J5LnVuc2hpZnQoc29rZXkpO1xcbiAgICAgICAgICAgIGhpc3RvcnkgPSBoaXN0b3J5LnNsaWNlKDAsMjgpO1xcbiAgICAgICAgICAgIEl0ZW0uSGlzdG9yeSA9IGhpc3Rvcnk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKGZpbGVfcGF0aCwgSlNPTi5zdHJpbmdpZnkoSXRlbSkpO1xcblxcbiAgICAgICAgICAgIGlkID0gXFxcInRneOmfs+S5kFxcXCI7XFxuICAgICAgICAgICAgbWFwSGlzdG9yeShJdGVtLkhpc3RvcnkpO1xcbiAgICAgICAgICAgIGRlbGV0ZUl0ZW1CeUNscyhpZCArIFxcXCI6a2V5XFxcIik7XFxuICAgICAgICAgICAgYWRkSXRlbUFmdGVyKGlkICsgXFxcIjpzZWFyY2hIaXN0b3J5XFxcIiwgRCk7XFxuICAgICAgICB9XFxuXFxuICAgICAgICByZXR1cm4gW3Nva2V5LCBzaWRdO1xcbiAgICB9LFxcblxcblxcblxcblxcblxcblxcblxcbiAgICBwdXNoOiBmdW5jdGlvbihzb2tleSwgc2lkKSB7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dGd46Z+z5LmQJywge30pKS5ydWxlKTtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgaWYgKHNva2V5Lm1hdGNoKC9rdXdvXFxcXC5jbi8pKSB7XFxuICAgICAgICAgICAgICAgIG1hdCA9IChyZWcpID0+IHNva2V5Lm1hdGNoKHJlZykgPyBpZCA9IHNva2V5Lm1hdGNoKHJlZylbMl0gOiBmYWxzZTtcXG5cXG4gICAgICAgICAgICAgICAgaWYgKG1hdCgvXFxcXC8oeWlueXVlfHBsYXlfZGV0YWlsKVxcXFwvKFxcXFxkKykvaSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKFxcXCJodHRwOi8vbS5rdXdvLmNuL25ld2g1L3NpbmdsZXMvc29uZ2luZm9hbmRscmM/bXVzaWNJZD1cXFwiICsgaWQgKyBcXFwiJlxcXCIpXFxuICAgICAgICAgICAgICAgICAgICBfID0gXy5zb25naW5mbztcXG4gICAgICAgICAgICAgICAgICAgIExpc3RfUHVzaChfLCAxKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXQoL2FsYnVtKGlkPXxfZGV0YWlsXFxcXC8pKFxcXFxkKykvaSkpIHtcXG4gICAgICAgICAgICAgICAgICAgICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKHBjYXBpICsgXFxcInd3dy9hbGJ1bS9hbGJ1bUluZm8/YWxidW1JZD1cXFwiICsgaWQgKyBcXFwiJnBuPTEmcm49MSZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIExpc3RfUHVzaChfLCAyKTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXQoL1xcXFwvbXZwbGF5KFxcXFwvXFxcXGQrKT9cXFxcLyhcXFxcZCspL2kpKSB7XFxuICAgICAgICAgICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvbXVzaWMvbXVzaWNJbmZvP21pZD1cXFwiICsgaWQgKyBcXFwiJmlwPSZjaXA9JlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKF8pXFxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF9QdXNoKF8sIDMpO1xcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGl2ID0gZmV0Y2hDb2RlQnlXZWJWaWV3KHNva2V5LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibG9ja1J1bGVzJzogWycucG5nJywgJy5qcGcnLCAnLmNzcyddLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiA5OTk5XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkubWF0Y2goLyhcXFxcKGZ1bmN0aW9uXFxcXChbXFxcXFNcXFxcc10rXFxcXClcXFxcKSk7LylbMV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgXyA9IGV2YWwoZGl2KS5kYXRhWzBdLlZpZGVvSW5mbztcXG4gICAgICAgICAgICAgICAgICAgICAgICBzID0gXy5kdXJhdGlvbiAlIDYwXFxuICAgICAgICAgICAgICAgICAgICAgICAgbSA9IF8uZHVyYXRpb24gLSBzXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGltZSA9IG0gLyA2MCArICc6JyArIHNcXG4gICAgICAgICAgICAgICAgICAgICAgICBFeHRyYSh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfLm5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogXy5waWMsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICdcXFxcbvCfjrsgJyArIF8udXNlcl9uYW1lICsgJ+OAgPCflKUgJyArIF8uY291bnRfcGxheSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogJ/Cfk7wgJyArIHRpbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXy51cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBnZXRJdGVtKCd0eXBlJywgJ2NhcmRfcGljXzMnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDMpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hdCgvXFxcXC9wbGF5bGlzdChfZGV0YWlsKT9cXFxcLyhcXFxcZCspL2kpKSB7XFxuICAgICAgICAgICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvcGxheWxpc3QvcGxheUxpc3RJbmZvP3BpZD1cXFwiICsgaWQgKyBcXFwiJnBuPTEmcm49MSZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIExpc3RfUHVzaChfLCA0KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXQoL1xcXFwvKGFydGlzdERldGFpbFxcXFw/aWQ9fHNpbmdlcl9kZXRhaWxcXFxcLykoXFxcXGQrKS9pKSkge1xcbiAgICAgICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L2FydGlzdC9hcnRpc3Q/YXJ0aXN0aWQ9XFxcIiArIGlkICsgXFxcIiZcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIExpc3RfUHVzaChfLCA1KTtcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmlnX2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZyhDb2xvcihcXFwi6ZO+5o6l5qC85byP5pyq5pS25b2VXFxcIikpKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHN1cmwgPSAoc3R5cGUpID0+ICQucmVxdWlyZShcXFwiYWpheD9ydWxlPXRneOmfs+S5kFxcXCIpKHBjYXBpICsgXFxcInd3dy9zZWFyY2gvc2VhcmNoXFxcIiArIHN0eXBlICsgXFxcIkJ5a2V5V29yZD9rZXk9XFxcIiArIHNva2V5ICsgXFxcIiZwbj1cXFwiICsgTVlfUEFHRSArIFxcXCImcm49MzAmXFxcIik7XFxuICAgICAgICAgICAgICAgIHN3aXRjaCAoc2lkKSB7XFxuICAgICAgICAgICAgICAgICAgICBjYXNlICc5OTknOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi6IGa5pCcID0+IFxcXCIgKyBzb2tleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9zZWFyY2g/cz1cXFwiICsgc29rZXkgKyBcXFwiJnJ1bGU9dWNra+S6kVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlczogJC50b1N0cmluZygoc2FyciwgaW5wdXQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IFtdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBzYXJyWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhcnIubWFwKFt0aXRsZSwgc2lkXSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidGl0bGVcXFwiOiB0aXRsZS5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzZWFyY2hfdXJsXFxcIjogXFxcImhpa2VyOi8vZW1wdHkjIyNmeXBhZ2UjIyNcXFwiICsgaW5wdXQgKyBcXFwiIyMjXFxcIiArIHNpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJzZWFyY2hGaW5kXFxcIjogXFxcImpzOiAkLnJlcXVpcmUoJ3NlYXJjaD9ydWxlPXRneOmfs+S5kCcpO1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBzYXJyLCBzb2tleSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuXFxuICAgICAgICAgICAgICAgICAgICBjYXNlICcxJzpcXG4vKlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cmwoJ011c2ljJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5saXN0Lm1hcChfID0+IExpc3RfUHVzaChfLCAxKSk7XFxuKi9cXG51cmwgPSBcXFwiaHR0cDovL3NlYXJjaC5rdXdvLmNuL3Iucz9jbGllbnQ9a3QmZnQ9bXVzaWMmcGxhdD1wYyZjbHVzdGVyPTEmcmVzdWx0PWpzb24mcmZvcm1hdD1qc29uJnZlcj1tYm94JnNob3dfY29weXJpZ2h0X29mZj0xJnZpcHZlcj1NVVNJQ184LjEuMi4wX1c0JmVuY29kaW5nPXV0ZjgmcG49XFxcIisoTVlfUEFHRS0xKStcXFwiJnJuPTMwJmFsbD1cXFwiK3Nva2V5O1xcbkpTT04ucGFyc2UoZmV0Y2godXJsKS5yZXBsYWNlKC8nL2csJ1xcXCInKSkuYWJzbGlzdC5tYXAoXz0+TGlzdF9QdXNoKHtcXG5uYW1lOiBfLlNPTkdOQU1FfHxfLk5BTUUsXFxuYXJ0aXN0OiBfLkFSVElTVCxcXG5hbGJ1bTogXy5BTEJVTSxcXG5kdXJhdGlvbjogXy5EVVJBVElPTixcXG5pZDogXy5NVVNJQ1JJRC5zcGxpdCgnXycpWzFdLFxcbnRwYXk6IF8udHBheVxcbn0sIDEpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG5cXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzInOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cmwoJ0FsYnVtJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5hbGJ1bUxpc3QubWFwKF8gPT4gTGlzdF9QdXNoKF8sIDIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG5cXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzMnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cmwoJ012Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5tdmxpc3QubWFwKF8gPT4gTGlzdF9QdXNoKF8sIDMpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG5cXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzQnOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cmwoJ1BsYXlMaXN0Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXy5saXN0Lm1hcChfID0+IExpc3RfUHVzaChfLCA0KSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuXFxuICAgICAgICAgICAgICAgICAgICBjYXNlICc1JzpcXG4gICAgICAgICAgICAgICAgICAgICAgICBzdXJsKCdBcnRpc3QnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmxpc3QubWFwKF8gPT4gTGlzdF9QdXNoKF8sIDUpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG5cXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFJpY2goU3Ryb25nKFxcXCLplJnor6/nmoTmkJzntKLmjqXlj6NcXFwiKSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoZC5sZW5ndGggPiAyNSkgZGVsZXRlSXRlbUJ5Q2xzKCd0Z3jpn7PkuZA6YWpheGVycjpkZWJ1ZycpO1xcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmlnX2JsYW5rX2Jsb2NrJyxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgIGNsczogJ3RneOmfs+S5kDphamF4ZXJyOmRlYnVnJ1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaWYgKHNva2V5Lm1hdGNoKC9rdXdvXFxcXC5jbi8pKSBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogUmljaChTdHJvbmcoQ29sb3IoXFxcIui1hOa6kOafpeivouWksei0pVxcXCIpKSksXFxuICAgICAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgY2xzOiAndGd46Z+z5LmQOmFqYXhlcnI6ZGVidWcnXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBlbHNlIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZyhDb2xvcignfn5+5b2T5YmN572R57uc5byC5bi477yM6K+35Yi35paw6YeN6K+Vfn5+JykpKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgY2xzOiAndGd46Z+z5LmQOmFqYXhlcnI6ZGVidWcnXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRp+aUtuiXj+WvvOWFpVwiLFwicGF0aFwiOlwiY29sbGVjdGlvbjNcIixcInJ1bGVcIjpcIiQuZXhwb3J0cyA9IGZ1bmN0aW9uKHNpLCBkYXRhLCBuYW1lLCBpc0Fycikge1xcbiAgICByZXR1cm4gY29uZmlybSh7XFxuICAgICAgICB0aXRsZTogXFxcIua4qemmqOaPkOekulxcXCIsXFxuICAgICAgICBjb250ZW50OiBcXFwi56Gu5a6a5a+85YWlXFxcIiArIFtcXFwiXFxcIiwgXFxcIuWNleabslxcXCIsIFxcXCLkuJPovpFcXFwiLCBcXFwiTVZcXFwiLCBcXFwi5q2M5Y2VXFxcIiwgXFxcIuatjOaJi1xcXCJdW3NpXSArIChpc0FyciA/IFxcXCLliIbnu4RcXFwiIDogXFxcIui1hOa6kFxcXCIpICsgXFxcIiBcXFwiICsgbmFtZS5yZXBsYWNlKC8gLSAuKi8sIFxcXCJcXFwiKSArIFxcXCIg77yfXFxcIixcXG4gICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKHNpLCBkYXRhLCBuYW1lLCBpc0FycikgPT4ge1xcbiAgICAgICAgICAgIGRhdGEgPSBiYXNlNjREZWNvZGUoZGF0YSk7XFxuICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGF0YSk7XFxuXFxuICAgICAgICAgICAgbGV0IHp5ID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiZGF0YV9cXFwiICsgc2kpO1xcbiAgICAgICAgICAgIGlmICh6eSA9PT0gXFxcIlxcXCIpIHp5ID0ge1xcbiAgICAgICAgICAgICAgICBcXFwi5YWo6YOoXFxcIjogW11cXG4gICAgICAgICAgICB9LCBzdG9yYWdlMC5zZXRJdGVtKFxcXCJkYXRhX1xcXCIgKyBzaSwgenkpO1xcbiAgICAgICAgICAgIGxldCB6dSA9IFtdO1xcbiAgICAgICAgICAgIGZvciAoaSBpbiB6eSkgenUucHVzaChpKTtcXG5cXG5cXG4gICAgICAgICAgICByZXR1cm4gJChuYW1lIHx8IFxcXCJcXFwiLCBcXFwi6K+356Gu5a6a6LWE5rqQ5ZCN56ewXFxcIikuaW5wdXQoKHNpLCBuZXdEYXRhLCB6eSwgenUsIGlzQXJyKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmIChpc0Fycikge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUuY29uY2F0KFxcXCLmnIDlkI7pnaJcXFwiKSwgMywgJ+ivt+mAieaLqeaWsOe7hOS9jee9ricpLnNlbGVjdCgoenksIGlucHV0MiwgbmV3RGF0YSwgc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIuacgOWQjumdolxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenlbaW5wdXQyXSA9IG5ld0RhdGE7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IHt9O1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4genkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvbltpbnB1dDJdID0gbmV3RGF0YTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25baV0gPSB6eVtpXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB6eSA9IGpzb247XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImNvbGxlY3Rpb24yP3J1bGU9dGd46Z+z5LmQXFxcIikuc2V0RGF0YShzaSwgenkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSwgenksIGlucHV0LCBuZXdEYXRhLCBzaSk7XFxuICAgICAgICAgICAgICAgIH1cXG5cXG5cXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoenUuY29uY2F0KFxcXCLmlrDnu4RcXFwiKSwgMywgJ+ivt+mAieaLqei1hOa6kOWIhue7hCcpLnNlbGVjdCgoc2ksIG5ld0RhdGEsIHp5LCB6dSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXCLmlrDnu4RcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF6dS5pbmNsdWRlcyhpbnB1dCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIlxcXCIsIFxcXCLor7fovpPlhaXmlrDnu4TlkI3np7BcXFwiKS5pbnB1dCgoenksIHp1LCBuZXdEYXRhLCBzaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnRyaW0oKS5tYXRjaCgvXlxcXFxkK3xeXFxcXHMqJC8pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/nu4TlkI3kuI3og73kuLrnqbogJiDmnIDliY3pnaLkuI3og73mmK/mlbDlrZdcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoenUuY29uY2F0KFxcXCLmnIDlkI7pnaJcXFwiKSwgMywgJ+ivt+mAieaLqeaWsOe7hOS9jee9ricpLnNlbGVjdCgoenksIGlucHV0MiwgbmV3RGF0YSwgc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIuacgOWQjumdolxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenlbaW5wdXQyXSA9IFtuZXdEYXRhXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uID0ge307XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSBpbiB6eSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2lucHV0Ml0gPSBbbmV3RGF0YV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc29uW2ldID0genlbaV07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgenkgPSBqc29uO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLnNldERhdGEoc2ksIHp5KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHp5LCBpbnB1dCwgbmV3RGF0YSwgc2kpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB6eSwgenUsIG5ld0RhdGEsIHNpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiG57uE5ZCN56ew6YeN5aSN5LqGflxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICAgICAgenkgPSB6eVtpbnB1dF07XFxuICAgICAgICAgICAgICAgICAgICB6dSA9IHp5Lm1hcChpdCA9PiBpdC50aXRsZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh6dS5jb25jYXQoXFxcIuacgOWQjumdolxcXCIpLCAyLCAn6K+36YCJ5oup6LWE5rqQ5L2N572uJykuc2VsZWN0KCh6eSwgenUsIGlucHV0MiwgbmV3RGF0YSwgc2kpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcIuacgOWQjumdolxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgenkucHVzaChuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0genUuaW5kZXhPZihpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHp5LnNwbGljZShpLCAwLCBuZXdEYXRhKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiY29sbGVjdGlvbjI/cnVsZT10Z3jpn7PkuZBcXFwiKS5zZXREYXRhKHNpLCB6eSwgaW5wdXQyKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHp5LCB6dSwgaW5wdXQsIG5ld0RhdGEsIHNpKVxcbiAgICAgICAgICAgICAgICB9LCBzaSwgbmV3RGF0YSwgenksIHp1KTtcXG4gICAgICAgICAgICB9LCBzaSwgZGF0YSwgenksIHp1LCBpc0Fycik7XFxuICAgICAgICB9LCBzaSwgZGF0YSwgbmFtZSwgaXNBcnIpXFxuICAgIH0pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRqOaJuemHj+aTjeS9nFwiLFwicGF0aFwiOlwiYWRkbGlzdFwiLFwicnVsZVwiOlwiZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvaW5mbz9ydWxlPXRneOmfs+S5kCcsIHt9KSkucnVsZSk7XFxuJC5leHBvcnRzID0gZnVuY3Rpb24oc2ksIHR5cGUsIG5hbWUpIHtcXG4gICAgc2V0UGFnZVRpdGxlKCfmibnph48nICsgW1xcXCLlr7zlhaVcXFwiLFxcXCLliIbkuqtcXFwiLFxcXCLliKDpmaRcXFwiXVt0eXBlXSk7XFxuICAgIGFkZGxpc3QgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwiYWRkbGlzdFxcXCIsIFtdKTtcXG4gICAgZCA9IGZpbmRJdGVtc0J5Q2xzKCd0Z3jpn7PkuZA6YWRkbGlzdDpkZWJ1ZycpLm1hcCgoXywgaSkgPT4ge1xcbiAgICAgICAgZGVsZXRlIF8uZXh0cmE7XFxuICAgICAgICBfLmNvbF90eXBlID0gJ2NhcmRfcGljXzMnO1xcbiAgICAgICAgXy50aXRsZSA9IGFkZGxpc3QuaW5jbHVkZXMoaSkgPyBSaWNoKFN0cm9uZyhDb2xvcihfLnRpdGxlKSkpIDogUmljaDIoXy50aXRsZSk7XFxuICAgICAgICBfLnVybCA9ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGFkZGxpc3QsIGkpID0+IHtcXG4gICAgICAgICAgICBpZiAoYWRkbGlzdC5pbmNsdWRlcyhpKSkgYWRkbGlzdCA9IGFkZGxpc3QuZmlsdGVyKEkgPT4gSSAhPT0gaSk7XFxuICAgICAgICAgICAgZWxzZSBhZGRsaXN0LnB1c2goaSk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2FkZGxpc3QnLCBhZGRsaXN0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcXG4gICAgICAgIH0sIGFkZGxpc3QsIGkpO1xcbiAgICAgICAgcmV0dXJuIF87XFxuICAgIH0pO1xcbiAgICBpZiAoZC5sZW5ndGggPT0gYWRkbGlzdC5sZW5ndGgpIHtcXG4gICAgICAgIHRpdGxlID0gJ+KYhSDlj5bmtojlhajpgIkg4piFJztcXG4gICAgICAgIHVybCA9ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIGNsZWFyTXlWYXIoJ2FkZGxpc3QnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9KTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHRpdGxlID0gJ+KYhSDpgInmi6nlhajpg6gg4piFJztcXG4gICAgICAgIHVybCA9ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGxlbikgPT4ge1xcbiAgICAgICAgICAgIGFkZGxpc3QgPSBbXTtcXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIGFkZGxpc3QucHVzaChpKTtcXG4gICAgICAgICAgICBwdXRNeVZhcignYWRkbGlzdCcsIGFkZGxpc3QpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgfSwgZC5sZW5ndGgpO1xcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ehruWumumAieaLqScsXFxuICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzMnLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChhZGRsaXN0LCBzaSwgdHlwZSwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgIGlmIChhZGRsaXN0Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIFxcXCJ0b2FzdDovL+ayoeaciemAieS4reatjOabslxcXCI7XFxuICAgICAgICAgICAgY29sID0gc2kgPT0gMyA/ICdtb3ZpZV8yJyA6IGdldEl0ZW0oJ3R5cGUnLCAnY2FyZF9waWNfMycpO1xcbiAgICAgICAgICAgIG5ld0RhdGFzID0gZmluZEl0ZW1zQnlDbHMoJ3RneOmfs+S5kDphZGRsaXN0OmRlYnVnJyk7XFxuICAgICAgICAgICAgbmV3RGF0YXMgPSBhZGRsaXN0Lm1hcChpID0+IHtcXG4gICAgICAgICAgICAgICAgXyA9IG5ld0RhdGFzW2ldO1xcbiAgICAgICAgICAgICAgICBkZWxldGUgXy5leHRyYTtcXG4gICAgICAgICAgICAgICAgXy5jb2xfdHlwZSA9IGNvbDtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIF87XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgY2xlYXJNeVZhcignYWRkbGlzdCcpO1xcbiAgICAgICAgICAgIGlmICh0eXBlID09PSAwKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXCJjb2xsZWN0aW9uMj9ydWxlPXRneOmfs+S5kFxcXCIpLmxvZ0RhdGEobmV3RGF0YXMsIHNpKTtcXG5cXG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlID09PSAxKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJChuYW1lIHx8IFxcXCJcXFwiLCBcXFwi56Gu5a6a5YiG57uE5ZCN56ewXFxcIikuaW5wdXQoKHNpLCBfKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IGJhc2U2NEVuY29kZShKU09OLnN0cmluZ2lmeShfKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF8ubGVuZ3RoID4gMykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gc2hhcmVQYXN0ZSh1cmwsICfkupHliarotLTmnb82Jyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL+S6keWPo+S7pO+8jOWkjeWItuaVtOadoeWPo+S7pOaJk+W8gOi9r+S7tuWNs+WPr+WvvOWFpVxcXFxuXFxcIiArIHVybCArIGBAaW1wb3J0PWpzOiQucmVxdWlyZShcXFwiY29sbGVjdGlvbjM/cnVsZT10Z3jpn7PkuZBcXFwiKSgke3NpfSxKU09OLnBhcnNlKGZldGNoKGlucHV0LnJlcGxhY2UoJy94eHh4eHgnLCcvYXBpL2dldENvbnRlbnQnKSkpLmRhdGEsXFxcIiR7aW5wdXR9XFxcIiwxKWA7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiY29weTovL+S6keWPo+S7pO+8jOWkjeWItuaVtOadoeWPo+S7pOaJk+W8gOi9r+S7tuWNs+WPr+WvvOWFpVxcXFxuXFxcIiArIHVybCArIGBAaW1wb3J0PWpzOiQucmVxdWlyZShcXFwiY29sbGVjdGlvbjM/cnVsZT10Z3jpn7PkuZBcXFwiKSgke3NpfSxpbnB1dCxcXFwiJHtpbnB1dH1cXFwiLDEpYDtcXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIbkuqvlpLHotKVcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBzaSwgbmV3RGF0YXMpO1xcblxcblxcblxcbiAgICAgICAgfSwgYWRkbGlzdCwgc2ksIHR5cGUsIG5hbWUpLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBsb25nQ2xpY2s6IFt7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHVybCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgICAgICAgICB9LCB1cmwpXFxuICAgICAgICAgICAgfV1cXG4gICAgICAgIH0sXFxuICAgICAgICBpbWc6ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LC85ai80UUZBUlhocFpnQUFUVTBBS2dBQUFBZ0FCd0VBQUFRQUFBQUJBQUFCOUFFUUFBSUFBQUFDTUFBQUFBRUJBQVFBQUFBQkFBQUI5QUVQQUFJQUFBQUNNQUFBQUlkcEFBUUFBQUFCQUFBQVlnRVNBQVFBQUFBQkFBQUFBSWdsQUFRQUFBQUJBQUFBMkFBQUFBQUFDSktSQUFJQUFBQUNNQUFBQUtRREFBTUFBQUFCQUFBQUFJS2FBQVVBQUFBQkFBQUF5SWduQUFNQUFBQUJBQUFBQUpJSkFBTUFBQUFCQUFBQUFKS1FBQUlBQUFBQ01BQUFBSklJQUFRQUFBQUJBQUFBQUlLZEFBVUFBQUFCQUFBQTBBQUFBQUFBQUFBQUFBQW5FQUFBQUFBQUFDY1FBQVVBQVFBQ0FBQUFBazRBQUFBQUJRQUJBQUFBQVFBQUFBQUFHd0FDQUFBQUFqQUFBQUFBQXdBQ0FBQUFBa1VBQUFBQUhRQUNBQUFBQWpBQUFBQUFBQUFBQUFJQkVBQUNBQUFBQWpBQUFBQUJEd0FDQUFBQUFqQUFBQUFBQUFBQS8rQUFFRXBHU1VZQUFRRUJBRWdBU0FBQS85c0FRd0FJQmdZSEJnVUlCd2NIQ1FrSUNnd1VEUXdMQ3d3WkVoTVBGQjBhSHg0ZEdod2NJQ1F1SnlBaUxDTWNIQ2czS1N3d01UUTBOQjhuT1QwNE1qd3VNelF5LzlzQVF3RUpDUWtNQ3d3WURRMFlNaUVjSVRJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXkvOEFBRVFnQjlBSDBBd0VpQUFJUkFRTVJBZi9FQUJ3QUFRQUNBZ01CQUFBQUFBQUFBQUFBQUFBSENBRUdBZ1FGQS8vRUFGUVFBQUVDQkFJRENRc0tCUUlFQXdrQUFBQUJBZ01FQlJFR0lRY1NNUmRCVVZSV1lYR1VzeE1ZTWpZM2RaR3kwZExUQ0JVV0lsVnljNUtUOEJRMVFuU0JJNkZTWTdIQkpFVmlKVE5EUkZPRW9zTGgvOFFBRkFFQkFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvRUFCUVJBUUFBQUFBQUFBQUFBQUFBQUFBQUFBRC8yZ0FNQXdFQUFoRURFUUEvQUoyQUFEYmtlUlg4VDBYREVwL0ZWbWZnU3NQYXhybHU5K3krcTFNM2JVMlhXMlpvZWtuUzdJNFlnVFZLcEVWc3pYRS8wM0xhOE9XVlV6VlYySzVQK0hlWGJ3RmJxdFY1K3VWR05VS25OUG1adUxuRWl4RnpWZjhBR1Z1QkV5UUNZc1MvS0VtWTBPTkF3MVRFbDBYSms1TnVSNzBSV3FpMmhwa2lvNnlvcXFxWlpwbllqT3M2UU1XMTFIcFVhL094R1BoZHhmRGh4TzVNZTNPNkt4bG1yZSthcW1acTRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFkbVFucHltenNPY2tKcVBLek1PNnNqUUlpc2UyNktpMlZNMHlWVTZGT3NBTjhvR2wzR2RBYzNVcTc1NkVpdVZZTStuZG11dWx2Q1ZkZXliYkk1RXlKVnd6OG9DbFQ3NGN2WDVKOU1pcWpmL0FCTUpWaXdsZGJPN2JJNXQxMmVGYSsxTEZiakxkb0Y3cE9kbGFoS01tNUtaZ3pNdEZ6aHhvTGtlMTZJdHJvNU1senVmY3B4aERTRFhjRlRXdFRwaElrczlGMTVTT3F1aE92YTY2dDhuWmJVLzNMVDRQeGhUY2FVVmxScDc3T1JFU1BBY3YxNEQvd0RoWG00RjMwQTJBQUFBQUFBQUFBQUNLOUwya2lGaG1seEtQU1p1MWJqdFJIT2hLaXJMc1hhcThEbFRKRTJwdDREZk1UMStCaGZEVTlXWm0vYzVlR3Jtc1QrdHlyWnJiMlhOWEtpWDNyNWxNcXRWWnl0MVNacVZRajkzbTVoeXZpUkZzbDEvN0lsa1MzTWdIVGU5WWpuT1Z5cXE1cXE1M1BrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHVytFbWRqWU1KNHJxT0VLMURxVk1pV2VuMVlrSitiSXJOOXJrNFA4QXB0TmVPVEZzN0xiMGdYWndsaWFUeGZoeVhyTWsxekdSYnRmQ2VxSzZFOXEyVnEyLzI0VXNwN1pVM1JEakw2SzR5Z3dvOHc1S2JQdVNYanRWMW10VmZCaUxkVVM2TGtxcnNSVkxZM1M2NTdWVlU2QU1nQUFBQUFBQXI5OG9URXpZMDVUc05RSXlLa3ZlYW0yTjFWVFhjbG9hS3FMZEZSTlpWUmJaT2F1WkJSdEdrR3NwWHNmMXVvTmlRSHNmTnVaRGZCVzdIdzJXWXh5TGRiM2ExRnZ2M05YQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTVOMi80TGdhS3NTUHhQby9wODNIakpGbklDTEt6Sy9XVlZlekpGVlYydVZxdGNxN0x1NlVLZnN0clo3Q2JmazVWUFVydGJwZmM3cEhsb2N4M1RYOEh1YnRUVnR6OTEveHE4NEZod042NEFBQUFBQUtFZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1BvTW00OHZwU2tZTUtJclljekFqdzR6Ykl1dTFJYXZSTTluMW1OWC9CSEJJR2hQeXNVajdreDJFUUMycUlpWi93RFhhWkMrRXZTQUFBQUFBQ2hJQUFBQUFMSGJwZFBqVmFyeVZObDFZa2VianNnUTFldG1vNTdrYWwxNExxU2Yzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JMWVdKYTczbkdIRzZQMWwvd3gzdk9NT04wZnJML2hnUkxZV0phNzNuR0hHNlAxbC93eDN2T01PTjBmckwvaGdSTFlXSmE3M25HSEc2UDFsL3d4M3ZPTU9OMGZyTC9oZ1JOWXhZaytxNkRjVlVTa1RsVm1abWxPbDVPQytQRVNITVBWeXRhbDFzbXB0c1JtN1phL1NnSEFBQUNRTkNmbFlwSDNKanNJaEg1SUdoUHlzVWo3a3gyRVFDMjYrRXZTWU1yNFM5SmdBQUFBQUFvU0FBQUFBOTdCSGo3aDN6bkxkcTB1eXUxU2syQ1BIM0R2bk9XN1ZwZGxkcWdZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWE5ajd5ZDRsODJUSHFLVXNkdFhwVXVuajd5ZDRsODJUSHFLVXNkdFhwVURpQUFCSUdoUHlzVWo3a3gyRVFqOGtEUW41V0tSOXlZN0NJQmJkZkNYcE1HVjhKZWt3QUFBQUFBVUpBQUFBQWU5Z2p4OXc3NXpsdTFhWFpYYXBTYkJIajdoM3puTGRxMHV5dTFRTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFOZXg5NU84UytiSmoxRktXTzJyMHFYVHg5NU84UytiSmoxRktXTzJyMHFCeEFBQWtEUW41V0tSOXlZN0NJUitTQm9UOHJGSSs1TWRoRUF0dXZoTDBtREsrRXZTWUFBQUFBQUtFZ0FBQUFQZXdSNCs0ZDg1eTNhdExzcnRVcE5nang5dzc1emx1MWFYWlhhb0dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3ZZKzhuZUpmTmt4NmlsTEhiVjZWTHA0KzhuZUpmTmt4NmlsTEhiVjZWQTRnQUFTQm9UOHJGSSs1TWRoRUkvSkEwSitWaWtmY21Pd2lBVzNYd2w2VEJsZkNYcE1BQUFBQUFGQ1FBQUFBSHZZSThmY08rYzVidFdsMlYycVVtd1I0KzRkODV5M2F0THNydFVEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURYc2ZlVHZFdm15WTlSU2xqdHE5S2wwOGZlVHZFdm15WTlSU2xqdHE5S2djUUFBSkEwSitWaWtmY21Pd2lFZmtnYUUvS3hTUHVUSFlSQUxicjRTOUpneXZoTDBtQUFBQUFBQ2hJQUFBQUQzc0VlUHVIZk9jdDJyUzdLN1ZLVFlJOGZjTytjNWJ0V2wyVjJxQmdBQUFBQUFQak9PY3lSbVhOY3JYTmhQVkZSYktpNnE1Z2ZYV1MvTndqV2J3b1UxWFNUalJMV3hQVmRuR0hISGRLeHJ5b3FuV0hBWE0xbThLRFdid29VejNTc2E4cUtwMWh3M1NzYThxS3AxaHdGek5aTDJ1WnkzbHZ6bFVzRFkreGJVTWVVR1RtOFJWS05MeHA2RXlKRGZIVld2YXJrUlVWQzFpS3RrdXZPQmtBQUJmOTNCR09uS3VWU2c0UGtKbWsxQ1lrb3o1OUlibndINnF1YjNONjJ2MG9nRW02eWNJMW04S0ZORjBrNDBUWmlpcTlaY1kzU3NhOHFLcDFod0Z6Tlp2Q2cxbThLRk05MHJHdktpcWRZY04wckd2S2lxZFljQmN6V2J3b05adkNoVFBkS3hyeW9xbldIRGRLeHJ5b3FuV0hBWE0xbThLRFdid29VejNTc2E4cUtwMWh3M1NzYThxS3AxaHdGek5adkNnMW04S0ZNOTByR3ZLaXFkWWNOMHJHdktpcWRZY0Jjeldid29OWnZDaFRQZEt4cnlvcW5XSERkS3hyeW9xbldIQVhNMW04S0RXYndvVXozU3NhOHFLcDFodzNTc2E4cUtwMWh3RnpOWnZDZzFtOEtGTTkwckd2S2lxZFljTjByR3ZLaXFkWWNCY3pXYndvTlp2Q2hUUGRLeHJ5b3FuV0hEZEt4cnlvcW5XSEFYTTFtOEtEV2J3b1V6M1NzYThxS3AxaHczU3NhOHFLcDFod0Z6Tlp2Q2cxbThLRk05MHJHdktpcWRZY04wckd2S2lxZFljQmN2WFRoTTM0TEtuU1UwM1NjYThxS3AxaHh1R2k3SEdLS3RwSW8wbFAxK296TXJGaVBSOEtMSFZ6WEozTjY1cDBvZ0ZuQUFBQUFBQUFhOWo3eWQ0bDgyVEhxS1VzZHRYcFV1bmo3eWQ0bDgyVEhxS1VzZHRYcFVEaUFBQklHaFB5c1VqN2t4MkVRajhrRFFuNVdLUjl5WTdDSUJiZGZDWHBNR1Y4SmVrd0FBQUFBQVVKQUFBQUFlOWdqeDl3NzV6bHUxYVhaWGFwU2JCSGo3aDN6bkxkcTB1eXUxUU1BQUFBQUIxNTcrWFRYNEwvVlU3QjE1NytYVFg0TC9WVUNpYnQ3b09KeWR2ZEJ4QUFBRFo5SFhsSXczNXhnK3VoYzVOaWRCVEhSMTVTTU4rY1lQcm9YT1RZblFCa0FBQ0lmbEUrSXROODVKMlVRbDRpSDVSUGlMVGZPU2RsRUFyUXBneXBnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRytiM29kOHExQi9GZjJUelJOODN2UTc1VnFEK0svc25nVzdBQUFBQUFBQnIyUHZKM2lYelpNZW9wU3gyMWVsUzZlUHZKM2lYelpNZW9wU3gyMWVsUU9JQUFFZ2FFL0t4U1B1VEhZUkNQeVFOQ2ZsWXBIM0pqc0lnRnQxOEpla3daWHdsNlRBQUFBQUFCUWtBQUFBQjcyQ1BIM0R2bk9XN1ZwZGxkcWxKc0VlUHVIZk9jdDJyUzdLN1ZBd0FBQUFBSFhudjVkTmZndjlWVHNIWG4xdFRwcFYvd0RvdjlWUUtKdTN1ZzRuTnpVVkV6VFltK1kxZWRQU0J4QnkxZWRQU05YblQwZ2JMbzY4cEdHL09NSDEwTG5Kc1RvS1phTzB0cEl3M21uOHhnNy9BUDYwTG1wc1JGdGUyd0RJQUFFUS9LSjhSYWI1eVRzb2hMeEVQeWlMZlFlbUlxLytaSnYvQVBLaUFWb1V3YzFibnRUMG1OWG5UMGdjUWN0WG5UMGpWNTA5SUhFSExWNTA5STFlZFBTQnhCeTFlZFBTTlhuVDBnY1FjdFhuVDBqVjUwOUlIRUhMVjUwOUkxZWRQU0J4QnkxZWRQU05YblQwZ2NRY3RYblQwalY1MDlJSEVITFY1MDlJMWVkUFNCeEJ5MWVkUFNOWG5UMGdjUWN0WG5UMGpWNTA5SUhIZk43ME8rVmFnL2l2N0o1bzJyenA2VGV0RHlJbWxXZzVwZnVyOS84QTVUd0xkQUFBQUFBQUExN0gzazd4TDVzbVBVVXBZN2F2U3BkUEgzazd4TDVzbVBVVXBZN2F2U29IRUFBQ1FOQ2ZsWXBIM0pqc0loSDVJR2hQeXNVajdreDJFUUMyNitFdlNZTXI0UzlKZ0FBQUFBQW9TQUFBQUE5N0JIajdoM3puTGRxMHV5dTFTazJDUEgzRHZuT1c3VnBkbGRxZ1lBQUFBQUFxSXFXVkxvb0FIVVNsMDlNa2tKVzI4bmNHWmY3R2ZteW44UWxQMEdldzdRQTZ2elpUK0lTbjZEUFlQbXluOFFsUDBHZXc3UUE2ektkSlEzdGZEazVaajJyZHJtd1dvcUx3cGtkbkxnQUFBQUFmT05Md1pocU5qd1ljVnJWdWlSR0k2eThLWFBvQU9yODJVL2ZrWlg5Qm5zSHpaVCtJU242RFBZZG9BZFg1c3AvRUpUOUJuc0h6WlQrSVNuNkRQWWRvQWRYNXNwL0VKVDlCbnNIelpUK0lTbjZEUFlkb0FkWDVzcC9FSlQ5Qm5zSHpaVCtJU242RFBZZG9BZFg1c3AvRUpUOUJuc0h6WlQrSVNuNkRQWWRvQWRYNXNwL0VKVDlCbnNIelpUK0lTbjZEUFlkb0FkWDVzcC9FSlQ5Qm5zSHpaVCtJU242RFBZZG9BZFg1c3AvRUpUOUJuc0h6WlQrSVNuNkRQWWRvQWRYNXNwL0VKVDlCbnNIelpUK0lTbjZEUFlkb0FkWDVzcC9FSlQ5Qm5zSHpaVCtJU242RFBZZG9BZFg1c3AvRUpUOUJuc0h6WlQrSVNuNkRQWWRvQWRYNXNwL0VKVDlCbnNNdzVDVGhQYStIS1M3SHR6YTVzRnFLblJsa2RrQUFBQUFBQUFBYTlqN3lkNGw4MlRIcUtVc2R0WHBVdW5qN3lkNGw4MlRIcUtVc2R0WHBVRGlBQUJJR2hQeXNVajdreDJFUWo4a0RRbjVXS1I5eVk3Q0lCYmRmQ1hwTUdWOEpla3dBQUFBQUFVSkFBQUFBZTlnang5dzc1emx1MWFYWlhhcFNiQkhqN2gzem5MZHEwdXl1MVFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5leDk1TzhTK2JKajFGS1dPMnIwcVhUeDk1TzhTK2JKajFGS1dPMnIwcUJ4QUFBa0RRbjVXS1I5eVk3Q0lSK1NCb1Q4ckZJKzVNZGhFQXR1dmhMMG1ESytFdlNZQUFBQUFBS0VnQUFBQVBld1I0KzRkODV5M2F0THNydFVwTmdqeDl3NzV6bHUxYVhaWGFvR0FBQUFBQXc5N1liSFBlcUkxcUs1VlhlUkRKOEo3K1h6WDRML0FGVkExZmRTd1B5bGtmUzczUnVwWUg1U3lQNW5lNlU3Y3FwYk5kaHgxbDRWQXVOdXBZSDVTeVA1bmU2TjFMQS9LV1IvTTczU25Pc3ZDbzFsNFZBdWJKYVJzSVZHZWdTVW5YNU9OTXgzcERoUTJLNjczTGtpSmx2bTBiY3ltR2pwVlhTUmh1Ni8rWXdmWFF1YzN3VTZBTWdBQWViV3NRVW5Ec3BEbXF2UFFaT0JFZjNOajRxcWlLNnlyYkpGM2tVOUlpSDVST1dCNllxS3QvbkpPeWlBYmh1cFlINVN5UDVuZTZZM1VzRDhwWkg4enZkS2RLNWVGVEdzdkNvRnh0MUxBL0tXUi9NNzNSdXBZSDVTeVA1bmU2VTUxbDRWR3N2Q29GeHQxTEEvS1dSL003M1J1cFlINVN5UDVuZTZVNTFsNFZHc3ZDb0Z4dDFMQS9LV1IvTTczUnVwWUg1U3lQNW5lNlU1MWw0VkdzdkNvRnh0MUxBL0tXUi9NNzNSdXBZSDVTeVA1bmU2VTUxbDRWR3N2Q29GeHQxTEEvS1dSL003M1J1cFlINVN5UDVuZTZVNTFsNFZHc3ZDb0Z4dDFMQS9LV1IvTTczUnVwWUg1U3lQNW5lNlU1MWw0VkdzdkNvRnh0MUxBL0tXUi9NNzNSdXBZSDVTeVA1bmU2VTUxbDRWR3N2Q29GeHQxTEEvS1dSL003M1J1cFlINVN5UDVuZTZVNTFsNFZHc3ZDb0Z4dDFMQS9LV1IvTTczUnVwWUg1U3lQNW5lNlU1MWw0VlBwcXJhOTdwc3ZleVhBdUZ1cFlINVN5UDVuZTZOMUxBL0tXUi9NNzNTc3RCMGQ0cHhHNkc2UnBFMGtCeXN2SGpKM09IWjJ4MTEydDM3dFJTUXFOOG5pb3hWaHZyVllsNVpxUkxSSVV1aXhISzNtZXRrdnQycGtCTEc2bGdmbExJL21kN3AyNmJqN0N0WnFNR1FwMWRsSmlhaktxUTRVTlhYZFpMNVhUZ1JUVTVEUVBnK1ZsdTV6U1QwM0UxcjkxZk1MRFczQlp1UnRkSHdCaFdneDVXWXA5RmxZVTFMSi9wekNvcXhFVzFycTVkcTJWY3dObEFBQUFBQUFCcjJQdkozaVh6Wk1lb3BTeDIxZWxTNzJLYWRIckdFcXhUSlZXSk1Ua25GZ1F0ZGJOMW5OVkV1dkJtVlhyV2lqR05GN3MrTlJZMGVCRGVqZTdTcXBGUjE3VzFVVDZ5N2Y4QWhBMGNIMWpRWFFudlk1cXRjeGJPUjJTb3ZCWStRQWtEUW41V0tSOXlZN0NJUitTQm9UOHJGSSs1TWRoRUF0dXZoTDBtREsrRXZTWUFBQUFBQUtFZ0FBQUFQZXdSNCs0ZDg1eTNhdExzcnRVcE5nang5dzc1emx1MWFYWlhhb0dBQUFBQUE2ODkvTHByOEYvcXFkZzY4OS9McHI4Ri9xcUJSTjI5MEhFNU8zdWc0Z0FBQnMranJ5a1liODR3ZlhRdWNteE9ncGpvNjhwR0cvT01IMTBMbkpzVG9BeUFBQkVQeWlmRVdtK2NrN0tJUzhSRDhvbnhGcHZuSk95aUFWb1V3WlV3QUFBQUFBQUFBQUFBQUFBQUFBUHJEaE9pT2ExakZlNXkyUkVUTlFQa2VoUzZQUDF1ZWh5Vk1rbzAzTXYyUTRMVmN0c2t2bHNSTDVxdVNFbzRJMEYxS3I5d244Uk9kVHBUVzFsazFhcVIzdFJjMGNpLys3UmVITmVaTG9wWUtoNGVwR0hKQkpLajArQkp3TXRaSWJjM3J3dWN0MWN2T3Fxb0VENGErVDNVWmlJeUxpU2RaSndGYWpsZ1NpOTBpM3p1MVhLbXExVVcyYWF5THZjSk1HRzlIR0Y4THc0U3lWTGd4Sm1GOVpaeVpSSWtWVlZMS3VzdXk2YnlaWnJ3bTE3YmMyd3dxSTdhbHdNMnMxR3BraWJFVFloaXlKYm0yS1pBRGJ2SUFBQUFBQUFBQUFHK0UrcmEyM2hBQThERUdDOE9ZbmhOWldLWEFqcTFmcXhFdXlJbWQ3YTdiTFpWMjVrUllwK1R5c0tBK1l3MVB1aVBhaXIvQUFrNWE3dHEyYTlFdGZZaUlxZEtvVDRBS1FWckRWWHc5RzdqVjZaTXlUOWR6RVdMRFZHdlZ1M1ZkNEx0cWVDcTdUYTlDaVcwcjBqN2t4MkVRdExWcUpUSzdUM1NOVmtvTTNMTG4zT0syNkl0bFM2TC9TdG5MOVpNMHVSL1NORDBoaGpIMGppR2l6a1JzckJTTDNXU2o1cXhIUTRqZnFQMzdhekUxWFo3VlZ5Z1NndmhMMG1Cd3JuNk1nQUFBQUFBVUpBQUFBQWU5Z2p4OXc3NXpsdTFhWFpYYXBTYkJIajdoM3puTGRxMHV5dTFRTUFBQUFBQjE1NytYVFg0TC9WVTdCOHBxRzZMS1I0YmZDZkRjMUxyYk5VVkFLSU8zdWc0a25Mb0l4c3RyeTBqczQ0MHh1RDQyNHZJOWNhQkdRSk4zQjhiY1hrZXVORzRQamJpOGoxeG9HczZPdktSaHZ6akI5ZEM1eWJFNkN1T0VORFdMcUxqR2pWT2JnU2FTMHJPUTQwVld6VFhLald1UlZzbS9rV09Ud1VBeUFBQkVQeWlmRVdtK2NrN0tJUzhSOXBld2pWY1pZWmtaQ2tNaFBqUVp4SXowaXhVWW1ycU9idFhuY2dGUzFNRW5Mb0l4c3YvQU12STljYVkzQjhiY1hrZXVOQWpJRW03ZytOdUx5UFhHamNIeHR4ZVI2NDBDTWdTYnVENDI0dkk5Y2FOd2ZHM0Y1SHJqUUl5Qkp1NFBqYmk4ajF4bzNCOGJjWGtldU5BaklFbTdnK051THlQWEdqY0h4dHhlUjY0MENNZ1NidUQ0MjR2STljYU53ZkczRjVIcmpRSXlCSnU0UGpiaThqMXhwNnVIZEFkY2kxbUNsZmRMeTlPYjllTTZCSFI3M1cvb1JFMkt2RHZlZ0RRTUtZS3JPTVoxc3ZTNVZ6bUk5R3hwbDZLa0tBaXBlNzNkQ0xsdFVzeGdIUmpSOEV5MEdQcU1tYTByRmJGbkZSYm9xK0UxaUxrMXU5ZmF1L2t0amFLQmgrbTRabzhDbDB1WGJCbG9LZExuTzMzT1hmY3Urdi9BR1JFUFRWTHBiZUF3aUlsbFJMS1pBQUFBQUFBQU9Mb2pFWXI3NnJXcGR5cW16TGgySGpWREYySGFYTHBNVGxja0lVSlhJMUhmeERYWFcyeks0SHRnMENvYVo4RDArWWJDK2RIek4yYTJ0S3dYUkdwbnNWY3M4dG5PZFRkMXdQeG1kNm03MmdTVUNOZDNYQS9HWjNxYnZhZmFWMDNZSW1wcUhBU2Vqd3RkYmQwanl6bU1ienF1OGdFaUExK21ZM3d4VjN2U1Jyc2hHV0dpSzlPN28yeUxzWDYxajI0TXhDbUlUWTBHTERpUW5YMVh3M0k1Ri95bVc4QjlRQUFBQUFjSE5tQUJoRVJGVlVUYnRNZ0FBQUFBQUZDUUFBQUFIdllJOGZjTytjNWJ0V2wyVjJxVW13UjQrNGQ4NXkzYXRMc3J0VURBQUFBQUFBQUd4TEFBQUFBRnh2Z0FBQUFBQUM2Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR0w1V1ZGL3dhWGpQU2RRTUVxNlhuSXo1aW9xM1diSndFdTVFVkZzcmxYSnFMYmZ6elJkVlN1MkxkS09KOFhLNkZNenFTc2txSi80V1V1eGkyc3YxbDJ1elMrYXJaVnlBc0xYdExtRHFDOVliNm9rM0hhcUk2RkpKM1cxMHZlL2cyM3NsWGJ6RVMxN1Q5WDUxVlpSNU9CVDROOG54UDlWNnBxMnN0OGtXOTF1aUlRN3JMd2k2cHZnZTFVOFg0aXJMbU9xRlpuWmhXTVZpYThaZkJYYW1XMDhWSEtpM1RJd0FNcTV5N1ZVd0FBQ0xaYm9BQm5XVmRxMzZUMXFOaWF0MEdMclVxcVRjb3F0Vm4rbEVWRXNxb3E1Yk5xSWVRQUphb0duZkUxT2p3RzFWSU5SbEd0YkRjaXNSa1JVUzEzYTZiWFdSZHVTM3VTcGh6VFZoV3ZSWVV0TVJvbExtb2pmQm0wVHVhT3ZheVAyYythSWhWTFdXNkxkY2pMRmRyWlo4S1gyZ1h5aHZiRlkxN0hJNWprMWtjMWJvcUxzVTVGTjhOYVJNVDRWWjNLbVZOMzhPcW9xeThkcVJHYmJyWkYyWHRaVlN5MkxBWUoweDBURmNaa2xNb2xNcUZrVkljeEVUdWNSVmRxb2pINVhYTlBxcWlMblpOYmVDU0FPSHAzd0FBQUFBQUFBQlFrQUFBQUI3MkNQSDNEdm5PVzdWcGRsZHFsSnNFZVB1SGZPY3QyclM3SzdWQXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWRlZG5KZW5TY1djbkk3SUV0QWFyNHNXSzZ6V3RUZlVENnZlMkd4OFI3MnNodGFybk9ldVRlZFYza3NoQW1rTFRqRWpJNm00UmpSSVRVYzVzV29LeEx2VFphRndKdjZ5MlhndHROVjBsNlZKN0Y4N0VrcWRHanlkR2hxckd3a1ZXck1vdjlVUzIxTWtzM1luVHNqSmI3NmdaZTk3M3E1N25PY3EzVlZXNnF2Q1l1dkNZQUFBQUFBQUFBQUFBQUFBQUFDNjhKelpkWGI5emdBSmQwYmFaSnZEZjhIUjYyaXpOR2F1bzJQWlhSWlpGdGEyZjFtSm45VzEwUmNseVJxMk1wTldrSzNUSUZScHN5eVpsSmh1dENpTTMwMlo3NktpN1VYTkZ5V3lsR0dxcXU0ZVpUZHNBYVI2cmdXY2k5d2IvR1UrT3Q0MG5FZnFvcnJaUFJjOVYyVnIyVzZaTHZLZ1crQjQrR2NTMHpGbEZoVldsUnRlQS9KekhXUjhKMWt1eHlieXAvdnRTNktld0FBQUFBQVVKQUFBQUFlOWdqeDl3NzV6bHUxYVhaWGFwU2JCSGo3aDN6bkxkcTB1eXUxUU1BQUFBQUI4cGlLc0NWalJXb2lxeGpuSWk3RnNpcWZVNjg5L0xwcjhGL3FxQkFmZkhWQkVSVnc1S1hYTy84Uy8yRHZqNmh5Y2src3Y4QVlRZTdlNkRpQk9YZkgxRGs1SjlaZjdCM3g5UTVPU2ZXWCt3ZzBBV0d3M3A0bnE5aWVsMGw5QmxZVEp5YWh3SFJHekQxVnFPV3lxaVdKdlJiNTNSVXR2Rk1kSFhsSXczNXhnK3VoYzVOaUFaQUFBMHpTVmphUGdPaFNsU2dTTUtjZEhta2dLeUk5VzJUVWM2NktuM1RjeUlmbEUrSXROODVKMlVRRFd1K09xQ0w0dVNmV1grd3gzeDlRNU9TZldYK3dnNVRBRTVkOGZVT1RrbjFsL3NIZkgxRGs1SjlaZjdDRFFCT1hmSDFEazVKOVpmN0IzeDlRNU9TZldYK3dnMEFUbDN4OVE1T1NmV1grd2Q4ZlVPVGtuMWwvc0lOQUU1ZDhmVU9Uc24xbC9zSkUwYVk5cTJQb003Tng2Ukx5VWpMS2tOc1ZrWnpsaVJGenNsMHRrbWEvZWFWWW85TW1xMVZKV215VVBYbVptS2tKaWIxMXl1dkFpYlZYZVM1ZExEbEFrc01VQ1VwTWpEYTJGTHcwYXJrYWlMRWRiTjdyZjFLdDFYcEE5VUFBQUFCd2U5a05yNGtTSTJIRGExWFBjN1lpY0tydklpSVZaMHA2U3BuRjlUaTAyVGlyQ28wckZWSWJXT3VreTVGdDNSeTc2YjdVM2s1OW0xNmNkSWZkb3NYQ1ZNYzVFaFBhcy9HYS9KNjJ1a0xMYWlaSzYrK2x0NWJ3UHZnWnpSZHVaZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQzZwc1VBRGM5RzJPNCtCY1FyTkxEZEdrWmhxUTVxQzExbFZ0N281dTlySnZYNTAzeTJ0SXFzbFhLWkFxTlBtR1RFckhham1SR2JGNXVaVTJLbThVWmJ0dmJZU2RvZzBnL1JXc2ZOYys5aVV1ZmlON3BGZTVVN2crMWtmZmczbDlPOEJhWUdHdmJFYTE3YzBjbDBWRnVpcHpjeGtBQUFLRWdBQUFBUGV3UjQrNGQ4NXkzYXRMc3J0VXBOZ2p4OXc3NXpsdTFhWFpYYW9HQUFBQUFBNjg5L0xwcjhGL3FxZGc2ODkvTHByOEYvcXFCUk4yOTBIRTVPM3VnNGdBQUJzK2pyeWtZYjg0d2ZYUXVjbXhPZ3BqbzY4cEdHL09NSDEwTG5Kc1RvQXlBQUJFUHlpZkVXbStjazdLSVM4UkQ4b254RnB2bkpPeWlBVm9Vd1pVd0FBQUFBQUFEbXpOTGJFMytFQ1pmay9ZVVdlcmt4aWFPMTNjS2Yvb3k2M3RyUm5KbnNYZVl0cktsbDEwNEN4MXJiMXVZMVBSeGh0bUZzRDAyU1dEM0thaVEwanpkN0s1WXJrdXFLcmR0cjZxY0NJaHRhTGRNcjIySmZhQmtBQURTOUoyTTF3VGhPTE9TN21mT0VkeVFaTnI3S211dTF5cGZOR29sOS9OVzNUTTNQYmttVjFUL0pVUFNqaTFjWDQzbXBtQy9XazVaUDRhVnl0ZGpWemRtaUw5WnlxdGx6UzlnTklpUGMrSzk3M09Wem5LcXE1YnFxODV4TXJ0VXdBQUFBQUFBQUFPMUt5Y3hQVExKYVVsb3N4TVB1aklVRml2YzViWHNpSm11UjFkODN2UTc1VnFEK0svc25nZUI5RHNVY25LeDFHTDdvK2gyS09UbFk2akY5MHUzckx3cjZSckx3cjZRS1NmUTdGSEp5c2RSaSs2WlRCdUo3NTRjckZ2N0dMN3BkcldYaFgwaldYaFgwZ1VYcU5MbjZVOXNLb3lNekp4WHQxbXNtSUxvYXVUaFJISWwwdmM2Qk0zeWkxdml1azM0Z3ZhdUlaQUFBQUFBQUFBSE9HaXE3WmM0QUMwV2hYSEMxK2dPbzlRbTJ4S3BJNU5WN3J2aXdiWkxzUytyNE8xVjJLU21pV1crYWJ5b3FsS2NHWWxqNFR4VEpWZUNybGJDZWlSWWFYLzFJYTVPYXFJcVh5elJGVzEwUzVkQ1NtNEUvSlFaeVdpdGl5OGRpUklVUnJrY2ptcWwwelRMMEFmY0FBVUpBQUFBQWU5Z2p4OXc3NXpsdTFhWFpYYXBTYkJIajdoM3puTGRxMHV5dTFRTUFBQUFBQjE1NytYVFg0TC9WVTdCd2l3MGpRWWtKMTlWN1ZhdGxzdWFXQW9jN2U2RGlXa1hRSGd2WnJWUlYvdWt5L3dEd01iZ09ET0dxZGFUM0FLdUF0SHVBNE00YXAxcFBjRzREZ3pocW5Xazl3Q0E5SFhsSXczNXhnK3VoYzVOaWRCSFZJMEs0VW90WWs2bksvT1A4UktSbXhvZXZNb3JkWnEzUzZhcVpYSkd0cXBhMWw1Z0FBQUVRL0tKOFJhYjV5VHNvaEx4citMc0gwckd0TWcwK3JMTUpCZ3h1N3Q3aEUxRjFySzNnWEt6bEFwVXBndEd1Z0xCbkRWRi8rNmI3ZzNBY0djTlU2MG51QVZjQmFQY0J3WncxVHJTZTROd0hCbkRWT3RKN2dGWEFXajNBY0djTlU2MG51RGNCd1p3MVRyU2U0QlZ3MnpSelFGeEpqaWxTRG9hdWdkMlNMSFh1WGRFN216Nnk2eWJOVmJJMWIvOEFFVHZ1QTRNNGFwMXBQY1Bkd3BvdHc5ZzJyclZLV3M2c3dzTllQK3ZIUnpiT1ZMNUkxTThrQTNWTElpSTFFUkV5UkVTMWpJQUFBQWFOcGNyNzZCbzdxTVNHcm14NXBFbElUa1JGdHI3YjMzdFZISmx3b1ZEWGFwTVduK3ZMUFlybEtLMXp1NHlFTFdlMzZ0dTZQenZ3M1J0a1cvQVE2cTNWVkF3QUFBQUFBQUFBQUcrYjNvZDhxMUIvRmYyVHpSTjgzdlE3NVZxRCtLL3NuZ1c3QUFBQUFWditVWDQxMG4rd1h0WEVNa3pmS0w4YTZUL1lMMnJpR1FBQUFBQUFBQUFBQTV3MXM3ZVRudVdaMEI0bGRWTUpURkhtSSt2TVUyTC9BS1NMZTZRSFp0elhhaU9SeUlpYkVSQ3NadnVoNnZKUU5Jc2hFaUxhQk9Ya290bTZ5MmllRGJnK3VqTStDNEZ1UUVhNWIyUkZ6NkFCUWtBQUFBQjcyQ1BIM0R2bk9XN1ZwZGxkcWxKc0VlUHVIZk9jdDJyUzdLN1ZBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCeGM1clc2ejNOYTFxcmR5cmF5Yi93RHRtY2p4TVhWQ0RTOElWaWNtV3ZXRERsSXF1UnFJcXJkdXJrblNxQVUveGhWVnJlTUt0VVhOWTFaaWFlNjBOYnR0ZXlXWGZ5UThReTVGUjFsU3lvWUFBQUFBQUFPM0p5c2FmblplVWw0ZmRaaVBFYkRoTVJVVFdjNWJJbWUrcW0zN2p1UHVUc2Y5YUY3NEdpZzNyY2R4OXlkai9yUXZmRzQ3ajdrN0gvV2hlK0JveUptYjFvZFJkMWFnNWY4QXhYOWs4eHVPNCs1T3h2MW9Ydm0yNk50RzJMNkZwRHBGU3FORWpTOGxBaXVXSkVkRmhxalVXRzlFVmJPVmRxZ1dQQUFBQVoyeTJnVnYrVVg0MTBuK3dYdFhFTWxpTk5lQnNTWXF4RlRwcWkwcUpOd1lVbjNON214R04xWGQwY3R2ck9UZVZDTWR4M0gzSjJQK3RDOThEUlFiMXVPNCs1T3gvd0JhRjc0M0hjZmNuWS82MEwzd05GQnZhYUhzZXR6WERzZTNOR2hlK2FoVktmTjBpb3pGT25vVG9NMUx2V0hGaHFxTHF1VGFsMHVub0E2WUFBQUFBZGlTbVk4bk9RWnFWZXNPWWd2YkVoUkUyc2MxYm9xYzZLaDF6a3kyWUY1cUhVR1ZxZ1U2cW8xMEpzN0xRNWhHT1ZGVnFQYWpyS3YrUWFib1ZuSWNUUlhTbXRpUTRqNFQ0ekhvanJxeGU2dVZFWGdYVlZxMjRGUUFWSkFBQUFBZTlnang5dzc1emx1MWFYWlhhcFNiQkhqN2gzem5MZHEwdXl1MVFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFhQnBvcUVhUTBZMUx1VFlhL3hEb2N1N1dSY211ZG1xWjdjamZ5TmRPM2t4bVA3cUI2eWdWVWN0M0t2Q1lBQUFBQUFBUGR3YjQ3MER6akw5cTB1MDd3bDZTa3VEZkhlZ2VjWmZ0V2wybmVFdlNCZ0FBQUFBQUFBQUFBQUFBQUdIZUN2UVUyMG5lVXpFWDk5RUxrdThGZWdwdHBPOHBtSXY3NklCcVlBQUFBQVpRd0FMQ2FDc1IwT2tZSW5aZXAxbW5TVVoxUmU5c09abW1RM0szdVVKTG9qbFJiWFJVdnpLQ3ZZQUFBQUFBUGV3UjQrNGQ4NXkzYXRMc3J0VXBOZ2p4OXc3NXpsdTFhWFpYYW9HQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJMTA3ZVRHWS91b0hyS1NVUjNwdWxZODFveG51NFExaWR4aXdZejdmMHNSMmE5Q1hBcWFBcVdXeWdBQUFBQUE5M0J2anZRUE9NdjJyUzdUdkNYcEtTNE44ZDZDdTk4NHkvYXRMdE84SmVrREFBQUFYQzVMWmRvQUFBQUFBQTRlWmJBQUFBTU84RmVncHRwTzhwbUl2NzZJWEpYd1Y2Q20razd5bVlpL3ZvZ0dwQUFBQUFBUkZVSEpvSEVFejZKOUhHSGNZWVdtYWhWMlRUcGlGT3ZnTldGSDFFMVVZeDJ5M0M1Y3dCREFPeFBTTXpUcWhNeU0zRDduTXkwVjBHS3pXUmRWN1ZzcVhSYkxtaTVvZGNBQUFQZXdSNC9ZZDg2UzNhdExzcnQ2U2hMVlZya1ZGVkZSY2xUZUxuNEN4Ykw0MHd2SzFTQWlOam9pUVpwbW9yVVpHYTFGZWlYMnBtaXBtdVNwZXlnYk1EQ0tpcGRGeTRUSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQThERzlNZFY4RDFxUlNJa05ZMG8rejFiZEVzbXQvK3A3NThwaUN5WmdSWU1adXZDaU1Wam0zdGtxS2kyNE1sVUNoN2x1NVY0Y3pCNitKcU0rZzRucVZLZHFLc3JNUGhKcU9WeVdSY3Mxc3E1V1BJQUFBQUFBTzlTcWkrbDFhU3FFSkd2aVNrZGtkalg3RlZqa2NpTGJldWhMQy9LTXJ5cmY1a3BmcGkrOFF5QUptNzR1dmZZbEwvTkY5NGQ4WFh2c1NsL21pKzhReUFKbTc0dXZmWWxMOU1YM2pZOERhYTZ4aW5HVk9va3pTNmZCZ1RVUnpYUGhMRTFrc3h6c3JyYitrcnR2bTk2SGZLdFFmeFg5azhDM1lBQUFBQ0s5S1dsS280RHJVbEpTTlBrNWxreExyR2M2T3I3b3V1cmJKcXFtV1JvZmZGMTc3RXBmNW92dkQ1UmZqWFNmN0JlMWNReUJNM2ZGMTc3RXBmNW92dkR2aTY5OWlVdjhBTkY5NGhrQVROM3hkZVhMNWxwYWM5NHZ2RVc0aHJVWEVOZW5xdkhodzRVV2NqTEZleUhmVlJWM2t2bWVXQUFBQUFBQVpiYk13Y21aWFVDMW1oQ1FsWmJSaEpSMGE1SXMzSGpSb3FxNVZ1NUhyRHVuQjlXRzFMY3dOeW9OSmJSc09VdWw5MDdwL0J5a0tBc1JyRWJycTFxSnJXc3RyMnZ0QUZXOUx0QVdnYVI2b3pVY2tLY2NrN0NjNTZPMWtpWFZ5NWJQcjY2V1hlUTBNc2o4b0RERHAraFNtSUlFTkZpeURsaHpIMVVSeXczMnNxcnRXemsyWjIxbkxrVnYxVjRBTUFBQW0wMmJCK09LdmdxcFBtNlhHYXJJcmRXTkx4a1YwS0tuOUt1UkxMZEZWVlJVelRvVlVYV1FCYUxEK25uQ2xUbGtXcmQycE0xZEVXR3NOMFZpM3ZtMXpVMkpadDFWRTI3Nkc1ZlQ3QjEvR21qZGNaN1NsaVpLaHlWeVdzaS81VUM2UDArd2R5cW8zWEdlMGZUN0IzS3FqZGNaN1NsdCtjWDV3THBmVDdCM0txamRjWjdSOVBzSGNxcU4xeG50S1czNXhmbkF1bDlQc0hjcXFOMXhudEgwK3dkeXFvM1hHZTBwYmZuRitjQzZYMCt3ZHlxbzNYR2UwZlQ3QjNLcWpkY1o3U2x0K2NYNXdMcGZUN0IzS3FqZGNaN1I5UHNIY3FxTjF4bnRLVzM1eGZuQXVsOVBzSGNxcU4xeG50SDArd2R5cW8zWEdlMHBiZm5GK2NDNlgwK3dkeXFvM1hHZTBmVDdCM0txamRjWjdTbHQrY1g1d0xwZlQ3QjNLcWpkY1o3UjlQc0hjcXFOMXhudEtXMzV4Zm5BdWw5UHNIY3FxTjF4bnRIMCt3ZHlxbzNYR2UwcGJmbkYrY0M2WDArd2R5cW8zWEdlMGZUN0IzS3FqZGNaN1NsdCtjWDV3THBmVDdCM0txamRjWjdUdVU3Rk9INnhNL3dBTlRLM1Q1MlkxVmYzS1htR3ZkcXB0V3lMc0tRMzV6ZHRFOWErWmRJMUlqT2p2aFFZMFJaZUtyVzYyczErU05WTGJGZHFBVytBc3FiZHUrQUFBQXJGcDNvRWFuWTNTcU5nTVpLVkNFMVd2aHcxUkZpTlN6OVpiVzFsMjc2cWk1a1RydFV0YnBwdzQrdllGaXpFdEJTSk4wNkovRXNWTDYyb2lXZWlXMzdXWFBlYVZUVnE2eXB0NStFRGlBQUFBQUFBQUFBRytiM29kOHExQi9GZjJUelJOODN2UTc1VnFEK0svc25nVzdBQUFBQVZ2K1VYNDEwbit3WHRYRU1remZLTDhhNlQvQUdDOXE0aGtBQUFBQUFBQUFBQU1vaXFpOHh1T2k2aXhhNXBEbzh1eFh0YkJtR3pVUjdZZXNqR3cxMTgrQkZWR3R2dks1TnV3MDV1MHNWOG5yRDM4UFNLblhvekZSMHk5SmVBNVlTWDFHNXVjMXk1MlZ5MlZPRmlBVFVya2F1YWJjOThHVTJyc1QvRjdnRDRUc25MMUdRbVpHYmhwRmxwbUdzS0xEVmJJNXFvcUtuK1VLZlkvd2ZId1ZpaVlwcjdQbG5wM1dXaVh2clFsVmRXNjI4SkxXWC8rbHlEWDhZWVBwbU02SzZuMUJsbnR1NkJNTlQ2OEIrOHFjMjhxYkZBcFZxcm5sc01HdzRzd25VOElWbUpUYW5EMVhJbXRDaXM4Q0t6WWptcXU5LzBVOEJXS2w3NWRJSEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQStzS0tzTFZjeDZzZTExMGMzSlVYZVZGUGtBTHI0THhDekZPRDZiV0dzVmpvOE8wUnRsczJJMWRWNkpmYWwwWE05OUZ1bHlBL2s4NG9oUWxuc016RVJHdmlxczFMSzUyMWJJajJwZGR0a1JVUkV6K3N1OFQ1ZStlWCtFQUFBRGc5aVJHUFk1clhNY2xsYTVMbzVGMm9xY0c5WXAzcEZ3MDNDdU41K21RdFpaYldTTkFXeTVRMy9BRmtTNjdiWHRmaExqa2NhWXNGUHhWaGYrS2ttSjg1VTdYalEwc3Q0a08zMTJKYmFxMlJVNThrMmdWUlhhcGc1cXhiN3lkSndBQUFBQUFBQUFKdE43MFBaYVZhQ3YvTmYyVHpSRTJuY3A5VW5LUlB3cDZuek1XWG1vS3FzT05EZFp6VlZGVEwvQUFxcC9rQzlOMDRVOUl1bkNucEtiYnAyTnVVMVMvV0c2ZGpibFBVdjFnTGszVGhUMGk2THZwNlNtMjZkamJsUFV2MWpPNmRqYmxOVXYxZ041K1VYNDFVbit3WHRYRU1ucVZyRU5WeERIaHg2dlVKaWRpdzJhakh4blhWRzN2YjBubGdBQUFBQUFBQURLSmUrekl3Y21acUI2RkJwRTFYYTNLVXVVYnJURTFFU0d6SzlyN1Y2RVM2OUNGMDZGUjVYRDlFazZUSnQxWUVyQ1NHbVNYVlUydVd5WnFxNTMzeUtOQkdDRmtLYkV4TlB5N1ZqVGFJMlNWMWxWc0xmZW5BcXJsMElUUUFBQUFBQWVKaWJDVkd4ZFRteWRZbGU3TVlxdWh2YTVXdmhPVkxYYTVNLzhiRnNsMEswNHgwUTRqd3FzZVloUUhWR210Y3FwTVM2YXl0Ym5uRVp0YmtpcXFwZEU0UzJKaFV5V3lxaTcxbEFvWWpGVkZ0WmVZd3JWUkw1ZWt1RGlYUlhoTEZFV05IbTZja3ZOeFUrdE5TamxoUFZkYldWeXA0TGxWZDl5S3R2OEVXVlA1T2RWWXNQNXJyOGxNSXV0M1QrS2hQZzZ1eTF0WFh2djhGdWNDRUFTUE9hRE1kUzAyK0RCcDh0TncyK0RIZ3pjTnJIOUNQVnJ1Yk5FUGh1SjZRUHNSblhZSHZnUitDUU54UFNCOWlNNjdBOThiaWVrRDdFWjEyQjc0RWZna0RjVDBnZllqT3V3UGZHNG5wQSt4R2RkZ2UrQkg0SkEzRTlJSDJJenJzRDN4dUo2UVBzUm5YWUh2Z1IrQ1FOeFBTQjlpTTY3QTk4Ymlla0Q3RVoxMkI3NEVmZ2tEY1QwZ2ZZak91d1BmRzRucEEreEdkZGdlK0JINEpBM0U5SUgySXpyc0QzeHVKNlFQc1JuWFlIdmdSK0NRTnhQU0I5aU02N0E5OGJpZWtEN0VaMTJCNzRFZmdrRGNUMGdmWWpPdXdQZkc0bnBBK3hHZGRnZStCSDRKQTNFOUlIMkl6cnNEM3h1SjZRUHNSblhZSHZnUitDUU54UFNCOWlNNjdBOThiaWVrRDdFWjEyQjc0RWZna0RjVDBnZllqT3V3UGZHNG5wQSt4R2RkZ2UrQnFWQnJFM2grdHlkWGtYNnN4S1JVaU51NVVSMXRyVnRuWlV1MWVaVkxxVVNyeWxlb2tuVnBKK3RMVFVKSXJicWwyMzJvdGxWTG91UzVyWlVVcTF1S1kvUkUvOWhzNjdBOThtWFE3UnNXNFpwYzNSTVJVNUlNb2owalNrVkppSEVScXI0VFBxdld5S3RuSlpMWFY2cnRBazhDOTh3QUcvZTY3TEFBVmwweGFOMXcxVXZudWl5U3RvMHd2K3FqTTBsNHFyc3RiNnJGeXR0UzZxbVdTTEV1b3Q3V0x6MVdreUZicGN6VGFsTE1tSlNZYnF4SVQ5aTc2TGxtaW91YUttYUxtbVpVN1NSZ0dZd0pYbXk2eC80aW56YU9mS1JuS211clVYTnIwLzRrdWwxVEpiM1RmUkEwY0RmQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0pjQWlYTjYwWTRDaTQzeEVrR1liSGgwcVhUWG00OE5QUXhGWCtwMytiSm5ZOFBDZUZLcGkrdFE2WlRJYU9jcWEwV0s2K3BCWmRMdWN2Qi91cTVJVzd3amhhUndmaDJEUjVGWHVZeHl2ZkZldjFvajF0clA1dG14TjcvQUNvSHNTOENIS3k4T0JCYnF3NFRHc2EyNjVJaVdSUFFmVXdsNzd5SWlXUkVUWVpBQUFBQUFBQUFDMThsQUF4Yi90djc1blA5cUFBei9halA5cUFBei9halA5cUFBei9halA4QWFnQU0vd0JxTS8yb0FEUDlxTS8yb0FEUDlxTS8yb0FEUDlxTS93QnFBQXovQUdvei9hZ0FNLzJvei9hZ0FNLzJvei9hZ0FNLzJvei9BR29BRFA4QWFqYW1lMjM3L3dDb0FEL0lBQUFBQWVQaWJERk54YlE0dEtxc0pZa0YrYkhwNGNKKzg5cTd5cGZvVk1sdWluc0FDbkdOOUhkYXdUT0wvSFEwaXlVU0k1c0NiaCtCRXRtbDAvcFcyOHZBdHJwbWFscTVvbHk4MVhvOGhYYVpIcDFTbDJURXJIYnF4SWJrL3dCMFhhaXB0UmQ1U3RPa0xRL1VzS2EwOVRPN1ZHbWFpdmlSRVltdkFzdWVzaWIxcmZXVG52WUNMUWMwaE9YWm1jQUFBQUFBQUFBQUFBQUFBQUFBTW9sNzlCbEczQXdpS3EyUTkzQ21FNnBpK3R3NlpTNGFPY3FhMFdLN3dJTE45emw0T2JhcTVJZTNnTFJqV01iUjJ4NEtObHFXeUtqSTAzRS8zUmlmMU81dG1hWExRWVZ3alI4SDB4Wkdqd0hRMk9kcnhJcjExb2tWZi9VN2Z0bWx0aWVrRHI0SndWVGNEMGQxUHA3NHNSejM5MGpSb3FOMW9qdFZFM2s4SExKRnZiV1hNMlJFdHo4NjdRaVc1K2RkcGtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFjWHNiRVlySHBkcTN1bkNuQWNnQkZlT05DMUlyL0FQRTFDa0traFZIM2ZxSmxBaXV5VE52OU43TG1tK3VaWHpFdUM2OWhPYVdCVjVDSkJSWGFySXFKclE0bWEyMVhKbG5xclpOdHQ0dXNpS2xycmUydytVM0p5cy9MUkphYmw0Y2VYaU5WcjRVVnVzMXlLbGxTeWdVUlZpcGZtMm5FczdpVFFKUUtvNk5NVWVhajB1WWRtMkVpZDBnSXV0ZGZxcm1tV1NJaTJTeVpFUDE3UTdqS2dwcnZwcXpzRkViZUpJcjNiTmQ3VnlmMC9WdHpnYUVEc1RNbE1TVXkrV200TVdCSGhycXZoUldLMTdGNEZhdWFMMG54MWNsekE0Z3pZd0FBUkxyWTVhdk9CeEJ5VnVWN21kU3kyY3RnT0tKZFRLTjV6Y0tKb3R4aFhKaEdRS0pOUzdFZTFyNHM0eFlEV0k3K3I2OWxWRXNxcnFvdHVETkNXY1AvQUNlcWZBVmthdTFhTE5PUldLNkJMTjdteTlydWFybFZWVkw3RlRWWExZQkE5SG9GVXJzNjJWcGNsR21vNi8wd20zdHpxdXhFNTFzVDNnblFUSXlLd0ovRXNSSnlNcmJySUluK2t4VlRZNWRybFM2N012UVN4U0tIVEtESk5rNlZKUUpTQTMrbUV4RTFseXpYaFhMTTlEZjlnSHlsNWFES3dVZ3dJVU9IQ2JzWkRhalVTKzJ5SWZTeTMyNUp2SWhrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEQ051dXJmTE5BQU9sVUtMU3EwMUdWV215YzgyRTVWWTJaZ05pSTFWVE5VdW1TbW5SOUN1QTVpQkZSdEhmQmZGWS82OEtiaW9yRjNsUkZjcmNyM1JGUlV5MkFBYVhpTFFYaGlrWVlxMVRsNTZydWpTY2xHbUliWWthR3JWY3hpdVJGdERSYlhUaEsrQUFDWjlIR2lpaFl3d2hEcTFRbTZsQ21IVEVXRXJaZUl4ckxOdGJKV0t0OCtFQUNTS1pvUHdOTHljTmtlbnpFNUUxbHZHanpjUnJsUlYyV1lyVzVkQnVkSncvUnFQRGlmTmxKa1pQdWpVN29zdkxzWnI2dXk5a3p0ZGRvQUhwM1ZXdTVyaFhmV3RaTnR2OXJnQVpBQUFBQUFBQUFBQUFBZi85bXg2ZUhDZnZQYXU4cVg2RlRKYm9wN0FBcHhqZlIzV3NFemkveDBOSXNsRWlPYkFtNGZnUkxacGRQNlZ0dkx3TGE2Wm1wYXVhSmN2TlY2UElWMm1SNmRVcGRreEt4MjZzU0c1UDhBZEYyb3FiVVhlVXJUcEMwUDFMQ210UFV6dTFScG1vcjRrUkdKcndMTG5ySW05YTMxazU3MkFpMEhOSVRsMlpuQUFBQUFBQUFBQUFBQUFBQUFBREtKZS9RWlJ0d01JaXF0a1Bkd3BoT3FZdnJjT21VdUdqbkttdEZpdThDQ3pmYzVlRG0ycXVTSHQ0QzBZMWpHMGRzZUNqWmFsc2lveU5OeFA5MFluOVR1YlptbHkwR0ZjSTBmQjlNV1JvOEIwTmpuYThTSzlkYUpGWC8xTzM3WnBiWW5wQTYrQ2NGVTNBOUhkVDZlJ1xcbiAgICB9KTtcXG4gICAgc2V0UmVzdWx0KGQpO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRqemTvuaOpeeyvueugFwiLFwicGF0aFwiOlwidXJsXCIsXCJydWxlXCI6XCJldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9pbmZvP3J1bGU9dGd46Z+z5LmQJywge30pKS5ydWxlKTtcXG4kLmV4cG9ydHMgPSBmdW5jdGlvbihzaSwgenlpZCkge1xcbiAgICBzd2l0Y2ggKFN0cmluZyhzaSkpIHtcXG4gICAgICAgIGNhc2UgJzYnOiAvLyDnm7jkvLzmjqjojZBcXG4gICAgICAgICAgICB1cmwgPSBcXFwiaHR0cDovL21vYmkua3V3by5jbi9tb2JpLnM/dHlwZT1yY21fc2ltX3BsJnBsbnVtPTMmbXVzaWNudW09MTAmcmlkPVxcXCIgKyB6eWlkO1xcbiAgICAgICAgICAgIGQgPSBbXTtcXG4gICAgICAgICAgICBfID0gSlNPTi5wYXJzZShmZXRjaCh1cmwpKTtcXG4gICAgICAgICAgICBzZXRQYWdlVGl0bGUoXy5tdXNpY19yZWFzb24pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBSaWNoKFN0cm9uZygn55u45Ly85q2M5Y2VJykpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBfLnBsYXlsaXN0Lm1hcChfID0+IExpc3RfUHVzaChfLCA0KSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmlnX2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IFJpY2goU3Ryb25nKCfllpzmrKLov5npppbmrYznmoTkurrkuZ/lkKwnKSksXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogZmFsc2VcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIF8ubXVzaWMubWFwKF8gPT4gTGlzdF9QdXNoKF8sIDEpKTtcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICcxJzpcXG4gICAgICAgICAgICAvLyDmrYzor41cXG4gICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShcXFwiaHR0cDovL20ua3V3by5jbi9uZXdoNS9zaW5nbGVzL3NvbmdpbmZvYW5kbHJjP211c2ljSWQ9XFxcIiArIHp5aWQgKyBcXFwiJlxcXCIpO1xcbiAgICAgICAgICAgICAgICBscmMgPSBfLmxyY2xpc3QubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbSA9IE1hdGguZmxvb3IoXy50aW1lIC8gNjApO1xcbiAgICAgICAgICAgICAgICAgICAgcyA9IChfLnRpbWUgJSA2MCkudG9GaXhlZCgzKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBgWyR7bS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7cy5wYWRTdGFydCg2LCAnMCcpfV1gICsgXy5saW5lTHlyaWNcXG4gICAgICAgICAgICAgICAgfSkuam9pbignXFxcXG4nKTtcXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcXG4gICAgICAgICAgICAgICAgbHJjID0gXFxcIlxcXCJcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgLy8g6ZO+5o6lXFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyAndjEvd3d3L211c2ljL3BsYXlVcmw/bWlkPScgKyB6eWlkICsgJyZ0eXBlPW11c2ljJicpO1xcbiAgICAgICAgICAgICAgICB1cmwgPSBfLnVybDtcXG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgLy8g6LCD55So6Kej5p6QXFxuICAgICAgICAgICAgICAgIGFqYXggPSAodXJsLCBoZWFkKSA9PiBfID0gSlNPTi5wYXJzZShmZXRjaCh1cmwsIGhlYWQpKTtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gZXhlY3V0ZVdlYlJ1bGUoJ2h0dHBzOi8vd3d3LmloYW9nZS5uZXQvdG9vbC9zb25nLycsICQudG9TdHJpbmcoKG1pZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbmNyeXB0UXVlcnkoJ2NvcnA9a3V3byZwMnA9MSZ0eXBlPWNvbnZlcnRfdXJsMiZzaWc9MCZmb3JtYXQ9bXAzJnJpZD0nICsgbWlkKTtcXG4gICAgICAgICAgICAgICAgICAgIH0sIHp5aWQpLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tSdWxlczogWydobS5iYWlkdScsICdqaWV4aS9qcycsICcuanBnJywgJy5naWYnLCAnLmNzcycsICcuaHRtbCddXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIGFqYXgoXFxcImh0dHBzOi8vYXBpLjE3MGhpLmNvbS9hcGkvYWpheC5waHBcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcImJvZHlcXFwiOiBcXFwibWlkPVxcXCIgKyB6eWlkICsgXFxcIiZ0b2tlbj1cXFwiICsgdG9rZW4sXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxcIm1ldGhvZFxcXCI6IFxcXCJQT1NUXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBcXFwiaGVhZGVyc1xcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInJlZmVyZXJcXFwiOiBcXFwiaHR0cDovL3d3dy5paGFvZ2UubmV0L1xcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IF8uZGF0YS51cmw7XFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSBmZXRjaChcXFwiaHR0cHM6Ly9zZXJ2aWNlLTR2MGFyZ242LTEzMTQxOTc4MTkuZ3ouYXBpZ3cudGVuY2VudGNzLmNvbS9yaWQvP3JpZD1cXFwiICsgenlpZCk7XFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyAvLyDov5nkuKrlpb3lg4/lup/kuoZcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheChcXFwiaHR0cDovL211c2ljLmFzZGk5OTguY29tL3dlYi9hcGkva3V3by9zb25nL1xcXCIgKyB6eWlkLCB7fSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9IF8udXJsX2ZsYWMgPyBfLnVybF9mbGFjIDogXy51cmxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+aXoOazleino+aekFxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIHVybHM6IFt1cmxdLFxcbiAgICAgICAgICAgICAgICBseXJpYzogbHJjXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICcyJzpcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvYWxidW0vYWxidW1JbmZvP2FsYnVtSWQ9XFxcIiArIHp5aWQgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgXy5tdXNpY0xpc3QubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gTGlzdF9QdXNoKF8sIDEpO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgICAgIGNhc2UgJzMnOlxcbiAgICAgICAgICAgIHJldHVybiAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ2MS93d3cvbXVzaWMvcGxheVVybD9taWQ9XFxcIiArIHp5aWQgKyBcXFwiJnR5cGU9bXYmXFxcIikudXJsO1xcbiAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgY2FzZSAnNCc6XFxuICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJhamF4P3J1bGU9dGd46Z+z5LmQXFxcIikocGNhcGkgKyBcXFwid3d3L3BsYXlsaXN0L3BsYXlMaXN0SW5mbz9waWQ9XFxcIiArIHp5aWQgKyBcXFwiJnBuPVxcXCIgKyBNWV9QQUdFICsgXFxcIiZybj0zMCZcXFwiKTtcXG4gICAgICAgICAgICBkID0gW107XFxuICAgICAgICAgICAgXy5tdXNpY0xpc3QubWFwKF8gPT4ge1xcbiAgICAgICAgICAgICAgICBMaXN0X1B1c2goXywgMSlcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICBjYXNlICc1JzpcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFqYXg/cnVsZT10Z3jpn7PkuZBcXFwiKShwY2FwaSArIFxcXCJ3d3cvYXJ0aXN0L2FydGlzdE11c2ljP2FydGlzdGlkPVxcXCIgKyB6eWlkICsgXFxcIiZwbj1cXFwiICsgTVlfUEFHRSArIFxcXCImcm49MzAmXFxcIik7XFxuICAgICAgICAgICAgZCA9IFtdO1xcbiAgICAgICAgICAgIF8ubGlzdC5tYXAoXyA9PiB7XFxuICAgICAgICAgICAgICAgIExpc3RfUHVzaChfLCAxKVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXG4gICAgICAgICAgICBicmVhaztcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuKRquiTneWlj+abtOaWsFwiLFwicGF0aFwiOlwibGFuem91XCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSB7XFxuICAgIGxpc3Rfb25lOiBmdW5jdGlvbih1cmwsIHB3ZCkge1xcbiAgICAgICAgaGVhZCA9IHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCA4LjAuMDsgTUkgNXMgUGx1cyBCdWlsZC9PUFIxLjE3MDYyMy4wMzI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzEuMC4zNTc4Ljk5IE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJ1xcbiAgICAgICAgfTtcXG4gICAgICAgIHNyYyA9IGZldGNoKHVybCwgaGVhZCk7XFxuICAgICAgICBldmFsKHNyYy5tYXRjaCgvdmFyIHBnczsoW1xcXFxzXFxcXFNdKj9wZ3MuKzspLylbMV0pO1xcbiAgICAgICAgZXZhbCgnXz0nICsgc3JjLm1hdGNoKC9kYXRhIDooW1xcXFxzXFxcXFNdKj9cXFxcfSkvKVsxXSk7XFxuICAgICAgICBoZWFkLmJvZHkgPSBPYmplY3Qua2V5cyhfKS5tYXAoa2V5ID0+IGtleSArIFxcXCI9XFxcIiArIF9ba2V5XSkuam9pbignJicpO1xcbiAgICAgICAgaGVhZC5tZXRob2QgPSAnUE9TVCc7XFxuICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgvXFxcXC5jb20uKi8sIFxcXCIuY29tL2ZpbGVtb3JlYWpheC5waHBcXFwiKTtcXG4gICAgICAgIF8gPSBKU09OLnBhcnNlKGZldGNoKHVybCwgaGVhZCkpLnRleHRbMF07XFxuICAgICAgICBsZXQgdiwgdnY7XFxuICAgICAgICBtYXQgPSBfLm5hbWVfYWxsLm1hdGNoKC9cXFxcWyguKylcXFxcXS8pO1xcbiAgICAgICAgaWYgKG1hdCkge1xcbiAgICAgICAgICAgIFt2LCB2dl0gPSBtYXRbMV0uc3BsaXQoJ18nKTtcXG4gICAgICAgICAgICB2diA9IHZ2IHx8IDE7XFxuICAgICAgICB9XFxuICAgICAgICB1cmwgPSB1cmwucmVwbGFjZSgvZmlsZW1vLiovLCAndHAvJyArIF8uaWQpO1xcbiAgICAgICAgcmV0dXJuIFt1cmwsIHYsIHZ2XVxcbiAgICB9LFxcbiAgICBvbmVfdXJsOiBmdW5jdGlvbihkYSkge1xcbiAgICAgICAgbGV0IHUgPSBcXFwiaHR0cHM6Ly9kZXZlbG9wZXIubGFuem91Zy5jb20vZmlsZS9cXFwiICsgcmVxdWVzdChkYSkubWF0Y2goLycoXFxcXD8uKj8pJy8pWzFdO1xcbiAgICAgICAgbGV0IGsgPSBKU09OLnBhcnNlKGZldGNoKHUsIHtcXG4gICAgICAgICAgICBvbmx5SGVhZGVyczogdHJ1ZVxcbiAgICAgICAgfSkpLnVybDtcXG4gICAgICAgIGxldCBmID0gXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvX2ZpbGVTZWxlY3RfcnVsZS5qc29uXFxcIjtcXG4gICAgICAgIGRvd25sb2FkRmlsZShrLCBmKTtcXG4gICAgICAgIHJldHVybiBmO1xcbiAgICB9XFxufVwifV0iLCJpY29uIjoiaHR0cHM6Ly9hbmRyb2lkLWFydHdvcmtzLjI1cHAuY29tL2ZzMDgvMjAyMy8wMy8yMy80LzExMF8zYTcwYzNjNWExOWIyM2Q2NjQ5ZjAyYzU4ODM5MmY1M19jb25fMTMweDEzMC5wbmciLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment