xiaomianao666

小程序:哔哩Ⓡ

Feb 11th, 2022
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjExMjA0MTQxNiwiY29sX3R5cGUiOiJtb3ZpZV8xIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJvdGhlciIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7Iiwic2VhcmNoX3VybCI6Imh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvc2VhcmNoL2FsbC92Mj9rZXl3b3JkPSoqJnBhZ2U9ZnlwYWdlJnBhZ2VzaXplPTIwO2dldDt1dGYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCA3LjDvvJvvvJsgd3YgbGl0ZSBiYWlkdWJveGFwcCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzc4LjAuMzkwNC45NiBNb2JpbGUgU2FmYXJpLzUzNy4zNiBUNy8xMC4zIFNlYXJjaENyYWZ0LzIuNi4yIChCYWlkde+8m++8myBQMSA3LjApfSIsImdyb3VwIjoiI++4j+KDo2PnlarliaciLCJzZWFyY2hGaW5kIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2Uvc1wiKSkucnVsZSk7IiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMiIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2UveWNsXCIpKS5ydWxlKTtcbi8v6YCa6L+H5pCc57Si5p+l55yL6Ieq5bex55qEdWlk77yM54S25ZCO5pu/5o2i5Y2z5Y+vXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKXtcbnB1dFZhcignc3RhcmlkJywnOTI4MTIzJyk7XG59ZWxzZXtcblxucHV0VmFyKCdzdGFyaWQnLGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKTtcbn1cbnB1dFZhcihcImFjY2Vzc19rZXlcIixmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpO1xuLy/oh6rlt7Hljrti56uZ5a6i5oi356uv6aaW6aG15oqT5YyF77yM5om+5YiwYXBwLmJpbGliaWxpLmNvbeW8gOWktOeahOmTvuaOpe+8jOeEtuWQjuaKimFjY2Vzc19rZXnnmoTlgLzloavlhaXkuIrmlrknPSflkI7pnaLljbPlj68iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeS4gOe6p1wiLFwicGF0aFwiOlwiY29tbW9uXCIsXCJydWxlXCI6XCJ2YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgcGFnZW51bSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKSkge1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsICflvIDlkK8s5YWz6ZetJyk7XFxufVxcbnZhciBzX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0Jyk7XFxucHV0VmFyKCdyZXBseV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMF0pO1xcbnB1dFZhcignbGlrZV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMV0pO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcblxcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXG5cXG52YXIgYzIgPSAnMjImMjEyJjcxJjE4MiYxMzgmMjgmMzMmMTg1JztcXG5cXG52YXIgdzIgPSAn6ay855WcJue+jumjnybnu7zoibom5b2x6KeGJueUn+a0uybpn7PkuZAm55Wq5YmnJueUteinhuWJpyc7XFxuXFxudmFyIHdvcmQxID0gdzEuc3BsaXQoJyYnKTtcXG52YXIgY2xhc3MxID0gYzEuc3BsaXQoJyYnKTtcXG52YXIgbGFiMSA9IGdldFZhcignbGFiMScsICflhajpg6gnKTtcXG52YXIga2V5MSA9IGdldFZhcigna2V5MScsICdhbGwnKTtcXG5cXG52YXIgd29yZDIgPSB3Mi5zcGxpdCgnJicpO1xcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcbnZhciBsYWIyID0gZ2V0VmFyKCdsYWIyJywgJ+msvOeVnCcpO1xcbnZhciBrZXkyID0gZ2V0VmFyKCdrZXkyJywgJzIyJyk7XFxuXFxuLy/kuInlkIjkuIBcXG52YXIgcnggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCB7fSk7XFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ1VQ5Li7JyA/IGdldEhlYWQocngpIDogJ1VQ5Li7JyxcXG4gICAgICAgIHVybDogJ1VQ5Li7JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmjpLooYzmppwnID8gZ2V0SGVhZChyeCkgOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJ+aOkuihjOamnCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5paw55WqJyA/IGdldEhlYWQocngpIDogJ+aWsOeVqicsXFxuICAgICAgICB1cmw6ICfmlrDnlaonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+abtOWkmicgPyBnZXRIZWFkKHJ4KSA6ICfmm7TlpJonLFxcbiAgICAgICAgdXJsOiAn5pu05aSaJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcblxcbiAgICBpZiAocnggPT0gJ+aUtuiXjycpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfop4bpopEnID8gZ2V0SGVhZChzX3RhYikgOiAn6KeG6aKRJyxcXG4gICAgICAgICAgICB1cmw6ICfop4bpopEnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gZ2V0SGVhZChzX3RhYikgOiAn6L+955WqJyxcXG4gICAgICAgICAgICB1cmw6ICfov73nlaonICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gZ2V0SGVhZChzX3RhYikgOiAn6L+95YmnJyxcXG4gICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChzX3RhYiA9PSAn6KeG6aKRJykge1xcbiAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIikpLnJ1bGUpXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXCIpKS5ydWxlKVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcIikpLnJ1bGUpXFxuICAgICAgICB9XFxuICAgIH1cXG5cXG59XFxuXFxuaWYgKHJ4ID09ICfmjqjojZAnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2ZlZWRcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS91cFxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aXtuWFieacuicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc2dqXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5paw55WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcIikpLnJ1bGUpXFxufVxcblxcblxcbi8v5LiJ5ZCI5LiAXFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJwaWNfMV9jYXJkXCIsXCJuYW1lXCI6XCLku6PnoIEt5o6S6KGM5qacXCIsXCJwYXRoXCI6XCJwaGJcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxuIGlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKXtcXG5mb3IgKHZhciBpIGluIHdvcmQxKXtcXG4gICAgdmFyIGEgPSB3b3JkMVtpXTtcXG4gICAgdmFyIGIgPSBjbGFzczFbaV07XFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOiBhPT1sYWIxPyBnZXRIZWFkKGEpOmEsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYyk9PntcXG4gICAgICAgIHB1dFZhcihcXFwibGFiMVxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgIHB1dFZhcihcXFwia2V5MVxcXCIsYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgYyksXFxuICAgIGNvbF90eXBlOidmbGV4X2J1dHRvbidcXG4gICAgfSk7XFxufVxcbn1cXG4vL+WIhuexu1xcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6JzI1OCYmZmxvYXQnLFxcbiAgIFxcdFxcdGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnXFxufSk7XFxudmFyIHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdi9wb3B1bGFyL3JhbmsvYWxsJztcXG5cXG52YXIgTVlfVVJMID0gdXJsLnJlcGxhY2UoJ2FsbCcsZ2V0VmFyKCdrZXkxJykpO1xcblxcbnZhciB5bT1yZXF1ZXN0KE1ZX1VSTCx7fSkucmVwbGFjZSgvXFxcXFxcXFx1MDAyRi9nLCcvJyk7XFxuaWYoeW0uaW5jbHVkZXMoJ3JhbmstdGlwcycpKXtcXG5cXG4vKuaPkOekuuS/oeaBr1xcbiAgZC5wdXNoKHtcXG4gICAgdGl0bGU6J+KAnOKAnCcrcGFyc2VEb21Gb3JIdG1sKHltLCcucmFuay10aXBzJiZUZXh0JykrJ+KAneKAnScsXFxuICAgIGNvbF90eXBlOid0ZXh0XzEnXFxuICB9KTtcXG7mj5DnpLrkv6Hmga8qL1xcblxcbiAgdmFyIHBpPUpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJyYW5rTGlzdFxcXCI6JylbMV0uc3BsaXQoJyxcXFwicmFua05vdGVcXFwiJylbMF0pO1xcbiAgZm9yKHZhciBpPTA7cGkhPW51bGwmJmk8cGkubGVuZ3RoO2krKyl7XFxuICAgIHZhciBudW0gPSBpKzE7XFxuICAgIHZhciBxPUpTT04uc3RyaW5naWZ5KHBpW2ldKTtcXG4gICAgaWYgKCFwaVtpXS51cmwpe1xcbiAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHBpW2ldLmJ2aWQ7XFxuICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgdmFyIHJ1cmwgPSBwaVtpXS51cmw7XFxuICAgIH1cXG5cXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J05vLicrbnVtKycgICAgICcrcGlbaV0udGl0bGUsXFxuICAgICAgICBwaWNfdXJsOnBpW2ldLnBpYytSZWZlcmVyLFxcbiAgICAgICAgZGVzYzooIXEuaW5jbHVkZXMoJ25hbWUnKT9waVtpXS5uZXdfZXAuaW5kZXhfc2hvdzooJ3VwOiAnK3BpW2ldLm93bmVyLm5hbWUpKSxcXG4gICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JytydXJsKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgIGNvbF90eXBlOidwaWNfMV9jYXJkJ1xcbiAgICAgIH0pO1xcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOidOby4nK251bSsnXFxcXG5cXFxcbuKAmOKAmDxzbWFsbD4nK3BpW2ldLnRpdGxlKydcXFxcbicrKCFxLmluY2x1ZGVzKCduYW1lJyk/cGlbaV0ubmV3X2VwLmluZGV4X3Nob3c6KCd1cDogJytwaVtpXS5vd25lci5uYW1lKSkrJzwvc21hbGw+JyxcXG4gICAgICAgIHBpY191cmw6cGlbaV0ucGljK1JlZmVyZXIsXFxuICAgICAgICBkZXNjOicwJyxcXG4gICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JytydXJsKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgIGNvbF90eXBlOidjYXJkX3BpY18xJ1xcbiAgICAgIH0pO1xcbiovXFxuICAgICB9XFxuICAgfWVsc2V7XFxuICAgICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOifigJzigJzoioLliLbkuIDngrnvvIzkvJHmga/llabvvIHigJ3igJ0nLFxcbiAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLXVw8J+Qt1wiLFwicGF0aFwiOlwidXBcIixcInJ1bGVcIjpcImNvbnN0IGhlYWRDb2xvcj1cXFwiIzM1OGNjZFxcXCI7XFxudmFyIHVpZCA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIix7fSk7XFxudmFyIFVQX1VSTCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD11aWQmcHM9MzAmdGlkPTAma2V5d29yZD0manNvbnA9anNvbnAmcG49JytwYWdlbnVtKycmb3JkZXI9cHViZGF0ZSc7XFxudmFyIHVwX3VybCA9IFVQX1VSTC5yZXBsYWNlKFxcXCJ1aWRcXFwiLHVpZCk7XFxudmFyIHh4PWdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxuJyk7XFxuLy/mm7TmlrDlpLTlg49cXG5mb3IgKHZhciBrIGluIHh4KXtcXG4gIGlmICgheHhba10uc3BsaXQoJyMjJylbMV0pe1xcbiAgICAgIHRyeXtcXG4gICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgfVxcbiAgICAgIHZhciBmYWNlID0geHhba10rJyMjJytwaWM7XFxuICAgICAgdmFyIGZhY2UgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIse30pLnJlcGxhY2UoeHhba10sZmFjZSk7XFxuICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIixmYWNlKTtcXG4gIH1cXG59XFxuXFxuXFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcblxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOic8c3Ryb25nPicrJ+KAmOKAmFVQ4oCZ4oCZJysnPC9zdHJvbmc+JysgKGdldFZhcignVVAnLCfmipjlj6AnKT09J+WxleW8gCc/J/CfmYknOifwn5mIJyksXFxuICAgICAgICAgIHVybDogIFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1VQJywgZ2V0VmFyKCdVUCcpPT0n5bGV5byAJz8n5oqY5Y+gJzon5bGV5byAJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/lt7InK2dldFZhcignVVAnLCflsZXlvIAnKTtcXFwiLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICAgICB9KTtcXG5cXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTooZ2V0VmFyKCdVUCcpPT0n572u6aG2Jz8nPHN0cm9uZz4nKyfigJzigJznva7pobYnKyc8L3N0cm9uZz4nOic8c3Ryb25nPicrJ+KAnOKAnOWPluWFs+KAneKAnScrJzwvc3Ryb25nPicpLFxcbiAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1VQJywgZ2V0VmFyKCdVUCcsJ+WxleW8gCcpPT0n5Y+W5YWzJz8n572u6aG2Jzon5Y+W5YWzJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly8nK2dldFZhcignVVAnLCflsZXlvIAnKSsnaW5nfidcXFwiLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICAgICB9KTtcXG4vL+iHquW3seeahOWFs+azqFxcbnZhciBzdGFyanNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2dldFZhcignc3RhcmlkJykrJyZqc29ucD1qc29ucCcse30pKTtcXG5kLnB1c2goe1xcbiAgICAgICAgdGl0bGU6c3Rhcmpzb24uZGF0YS5uYW1lLFxcbiAgICAgICAgcGljX3VybDpzdGFyanNvbi5kYXRhLmZhY2UrUmVmZXJlcixcXG4gICAgICAgIHVybDpcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdVUCcsIGdldFZhcignVVAnKT09J+WFs+azqCc/J+aKmOWPoCc6J+WFs+azqCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ1VQJywn5LiT5rOoJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6J2ljb25fMl9yb3VuZCdcXG59KTtcXG4vL+iHquW3seeahOWFs+azqFxcblxcbmlmICAoZ2V0VmFyKCdVUCcpPT0n5YWz5rOoJyl7XFxuICB2YXIgc3VybCA9ICdodHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3c/dHlwZT1mb2xsb3cmbWlkPScrZ2V0VmFyKCdzdGFyaWQnKTtcXG52YXIgaWQgPSBzdXJsLnNwbGl0KCdtaWQ9JylbMV07XFxudmFyIGNvZGUgPSBmZXRjaChzdXJsLHt9KTtcXG52YXIgc3Rhcmxpc3QgPSBKU09OLnBhcnNlKCd7XFxcIm15Jytjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdKyd9fScpO1xcblxcbnZhciBzdGFybHMgPSBzdGFybGlzdFsnbGlzdCddWydnZXRGb2xsb3dMaXN0LXBhZ2UtbWlkLScraWRdWydyZXN1bHQnXTtcXG5mb3IgKCB4IGluIHN0YXJscyl7XFxuICB2YXIgeXVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScrc3RhcmxzW3hdLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6c3RhcmxzW3hdLnVuYW1lLFxcbiAgICAgICBpbWc6c3RhcmxzW3hdLmZhY2UrUmVmZXJlcixcXG4gICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZ3oyP3VybD0nK3l1cmwsXFxuICAgICAgIGNvbF90eXBlOidpY29uX3JvdW5kXzQnXFxuICAgICAgIH0pO1xcbn1cXG59XFxuLy/lhbPms6jliJfooahcXG5cXG4gaWYgIChnZXRWYXIoJ1VQJyk9PSflsZXlvIAnKXtcXG4gIGZvciAodmFyIGsgaW4geHgpe1xcbiAgICB2YXIgc3Q9dWlkPT14eFtrXS5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXT8n4pyTJzonJztcXG4gICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbi8q5aS05YOP6I635Y+WXFxuICAgIHRyeXtcXG4gICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgfWNhdGNoKGUpe1xcbiAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgIH1cXG4qL1xcbiAgIGlmICghcGljKXtcXG4gICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICB9XFxuICAgIGQucHVzaCh7XFxuICAgICB0aXRsZTpzdCt4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgIHVybDpcXG4naGlrZXI6Ly9lbXB0eSMnK3h4W2tdLnNwbGl0KCcmJicpWzFdK2BAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07cHV0VmFyMigndWlkJyxpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIixpbnB1dCk7cHV0VmFyKCdVUCcsJ+aKmOWPoCcpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiO2AsXFxuICAgICBwaWNfdXJsOnBpYytSZWZlcmVyLFxcbiAgICAgY29sX3R5cGU6J2ljb25fcm91bmRfNCdcXG4gICAgfSk7XFxuICB9XFxuIH1cXG5cXG4vL+WPluWFs+ebuOWFs1xcblxcbiBpZiAgKGdldFZhcignVVAnKT09J+WPluWFsycpe1xcbiAgZm9yKHZhciBrIGluIHh4KXtcXG4gICAgdmFyIHN0PXVpZD09eHhba10uc3BsaXQoJyYmJylbMV0/J+Kckyc6Jyc7XFxuICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4vKuWktOWDj+iOt+WPllxcbiAgICB0cnl7XFxuICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgIH1jYXRjaChlKXtcXG4gICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICB9XFxuKi9cXG4gICBpZiAoIXBpYyl7XFxuICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgdGl0bGU6J+KdjCcrc3QreHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICB1cmw6eHhba10rIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxuJzt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJzt2YXIgeHo9eHIucmVwbGFjZShzYywnJyk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WPluWFs+aIkOWKn++8gemTgeWtkOWGjeingfCfpoYnYCxcXG4gICAgIHBpY191cmw6cGljK1JlZmVyZXIsXFxuICAgICBjb2xfdHlwZTonaWNvbl9yb3VuZF80J1xcbiAgICB9KTtcXG4gIH1cXG4gfVxcblxcbi8v572u6aG255u45YWzXFxuXFxuIGlmICAoZ2V0VmFyKCdVUCcpPT0n572u6aG2Jyl7XFxuICBmb3IgKHZhciBrIGluIHh4KXtcXG4gICAgdmFyIHN0PXVpZD09eHhba10uc3BsaXQoJyYmJylbMV0/J+Kckyc6Jyc7XFxuICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4vKuWktOWDj+iOt+WPllxcbiAgICB0cnl7XFxuICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgIH1jYXRjaChlKXtcXG4gICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICB9XFxuKi9cXG4gICBpZiAoIXBpYyl7XFxuICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgdGl0bGU6J/CflJ0nK3N0K3h4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgdXJsOnh4W2tdKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsc2MreHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/nva7pobbmiJDlip/wn5SdJ2AsXFxuICAgICBwaWNfdXJsOnBpYytSZWZlcmVyLFxcbiAgICAgY29sX3R5cGU6J2ljb25fcm91bmRfNCdcXG4gICAgfSk7XFxuICB9XFxuIH1cXG5cXG5cXG59XFxuLy9kLnB1c2goe3RpdGxlOnh4fSk7XFxuXFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyBmZXRjaCh1cF91cmwse30pKTtcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSoxMDAwO1xcbiBcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG4vKlxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXG4gICAgIHJldHVybiAoWU1EKVxcbn1cXG4qL1xcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXG52YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkrJy0nOyBcXG52YXIgTU0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkrJy0nOyBcXG52YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7IFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbnJldHVybiB0aW1lXFxufVxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbmVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxudmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpIT0tMSk/ai5waWM6J2h0dHBzOicgKyBqLnBpYztcXG5cXG4gci5waWNfdXJsID0gcGljcytSZWZlcmVyO1xcbnIudXJsPSdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCArJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiByLnRpdGxlID0gai50aXRsZTtcXG4gci5jb2xfdHlwZSA9ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYyc7XFxuIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lO1xcbiBpZiAoai5sZW5ndGghPVxcXCIwMDowMFxcXCIpe2QucHVzaChyKX07XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeaXtuWFifCfkJRcIixcInBhdGhcIjpcInNnalwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxuZm9yICh2YXIgaSBpbiB3b3JkMil7XFxuICAgIHZhciBhID0gd29yZDJbaV07XFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcbiAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcbiAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpPT57XFxuICAgICAgICBwdXRWYXIoXFxcImxhYjJcXFwiLGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICBwdXRWYXIoXFxcImtleTJcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0sIGMpLFxcbiAgICBjb2xfdHlwZTonZmxleF9idXR0b24nXFxuICAgIH0pO1xcbn1cXG59XFxuLy/liIbnsbtcXG5cXG52YXIgbSA9IE51bWJlcihmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHRcXFwiLHt9KSk7XFxudmFyIHQgPSBtPDA/MDptO1xcbnZhciBudW0xID0gTnVtYmVyKHQpLTEyO1xcbnZhciBudW0yID0gTnVtYmVyKHQpKzEyO1xcbnZhciBudW0zID0gTnVtYmVyKHQpLTE7XFxudmFyIG51bTQgPSBOdW1iZXIodCkrMTtcXG4vL3ZhciB0aW1lc3RhbXAgPSBEYXRlLnBhcnNlKG5ldyBEYXRlKCkpO1xcbnZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgc3RhbXAxID0gdGltZXN0YW1wIC0gdCozMCoyNCo2MCo2MCoxMDAwO1xcbnZhciBzdGFtcDIgPSB0aW1lc3RhbXAgLSAodCsxKSozMCoyNCo2MCo2MCoxMDAwO1xcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgbW0gPSBzc3Muc3BsaXQoJ+W5tCcpWzFdLnNwbGl0KCfmnIgnKVswXTtcXG4gICAgIHZhciBkZCA9IHNzcy5zcGxpdCgn5pyIJylbMV0uc3BsaXQoJ+aXpScpWzBdO1xcbiAgICAgdmFyIFlZID0gc3NzLnNwbGl0KCflubQnKVswXTtcXG4gICAgIHZhciBNTSA9IChtbTwgMTAgPyAnMCcgKyBtbTptbSk7XFxuICAgICB2YXIgREQgPSAoZGQ8IDEwID8gJzAnICsgZGQ6ZGQpO1xcbiAgICAgcmV0dXJuIChZWStNTStERClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxudmFyIFlZID0gU3RyaW5nKGRhdGUuZ2V0RnVsbFllYXIoKSk7IFxcbnZhciBNTSA9IFN0cmluZygoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkpOyBcXG52YXIgREQgPSBTdHJpbmcoKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpKTsgXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxucmV0dXJuIHRpbWVcXG59XFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZTEgPSBnZXRMb2NhbFRpbWUoc3RhbXAxKTtcXG52YXIgdGltZTIgPSBnZXRMb2NhbFRpbWUoc3RhbXAyKTtcXG52YXIgU0dKX1VSTCA9ICdodHRwczovL3Muc2VhcmNoLmJpbGliaWxpLmNvbS9jYXRlL3NlYXJjaD9tYWluX3Zlcj12MyZzZWFyY2hfdHlwZT12aWRlbyZ2aWV3X3R5cGU9aG90X3Jhbmsmb3JkZXI9Y2xpY2smY29weV9yaWdodD0tMSZjYXRlX2lkPTIyJnBhZ2U9JytwYWdlbnVtKycmcGFnZXNpemU9MTAmdGltZV9mcm9tPXRpbWUyJnRpbWVfdG89dGltZTEnO1xcbnZhciBVUkwgPSBTR0pfVVJMLnJlcGxhY2UoJ3RpbWUxJyx0aW1lMSkucmVwbGFjZSgndGltZTInLHRpbWUyKS5yZXBsYWNlKCcyMicsZ2V0VmFyKCdrZXkyJykhPScnP2dldFZhcigna2V5MicpOicyMicpO1xcbnZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KFVSTCx7fSkpO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKXtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonKzHlubQnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMStgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOictMeW5tCcsXFxuICAgICAgICAgIHVybDpcXG5udW0yK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jysx5pyIJyxcXG4gICAgICAgICAgdXJsOlxcbm51bTMrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonLTHmnIgnLFxcbiAgICAgICAgICB1cmw6XFxubnVtNCtgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOmdldEhlYWQoKCflvZPliY3ml7bpl7Tnur86ICcrdGltZTIrJ34nK3RpbWUxKSksXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHRpbWVzdGFtcCkuIHNwbGl0KCfml6UnKVswXSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4qL1xcbn1cXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOiBnZXRMb2NhbFRpbWUoc3NzKSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4qL1xcbmZvciAodmFyIGkgaW4ganNvbi5yZXN1bHQpXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24ucmVzdWx0W2ldO1xcbiBpZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuIGVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuIGQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOmoudGl0bGUsXFxuICAgICAgICAgIGltZzonaHR0cHM6JytqLnBpYytSZWZlcmVyLFxcbiAgICAgICAgICBkZXNjOid1cPCfkLc6JytqLmF1dGhvcisnXFxcXG7mkq3mlL7ph486ICcrcGxheSsnICAgICAgICDlj5HluIPml6XmnJ86ICcrai5wdWJkYXRlLyorJ1xcXFxu5o+P6L+wOicrai5kZXNjcmlwdGlvbiovLFxcbiAgICAgICAgICB1cmw6XFxuJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgIH0pO1xcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3kuoznuqdcIixcInBhdGhcIjpcImRldGFpbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ2FwaS5iaWxpJykgPT0gLTEpIHtcXG4gICAgdmFyIGEgPSBmZXRjaChNWV9VUkwsIHt9KTtcXG4gICAgdmFyIGIgPSBKU09OLnBhcnNlKGEuc3BsaXQoJ1xcXCJlcExpc3RcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxuICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiWzBdLmJ2aWQ7XFxuICAgIHZhciBiYW5ndW1pID0gZmV0Y2gocnVybCwge30pO1xcbn1cXG52YXIganNvbiA9IEpTT04ucGFyc2UoYmFuZ3VtaSk7XFxudmFyIHYgPSBqc29uLmRhdGEuVmlldztcXG52YXIgcCA9IHYucGFnZXM7XFxudmFyIGNhcmQgPSBqc29uLmRhdGEuQ2FyZC5jYXJkO1xcbnZhciByZWxhdGVkID0ganNvbi5kYXRhLlJlbGF0ZWQ7XFxudmFyIHRhZ3MgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0XFxcIiwge30pO1xcbnZhciBzZXR0aW5nMSA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaTIudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mraPluLjpobXpnaLliIfmjaLmiJDlip/wn5GM5Y+v6IO95bm25rKh5pyJ5LuA5LmI5Y+Y5YyWJ2A7XFxudmFyIHNldHRpbmcyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpMi50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+makOiXj+mhtemdouWIh+aNouaIkOWKn/CfkYzlj6/og73lubbmsqHmnInku4DkuYjlj5jljJYnYDtcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgbGlrZV91cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvdmlldy9saWtlJztcXG52YXIgY29pbl91cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvdmlldy9jb2luL2FkZCc7XFxudmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbnZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxudmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKycmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuXFxuaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuICAgIHZhciByZWRpcmVjdCA9IHZbJ3JlZGlyZWN0X3VybCddO1xcbiAgICB2YXIgeW0gPSBmZXRjaChyZWRpcmVjdCwge30pO1xcblxcbn1cXG5cXG5ldmFsUHJpdmF0ZUpTKFxcXCJYVWlGVDF2WFlXclV3K1ZocG5xbGcwTjB2QVdncGdsaDhNaForOXZQRDk5Tko1VmdlRmRIbXdhS2F3SXk2QzBoNkZGUWhFUTVSaEptVjBFUUhuTDl4eWJQSEFjaEFMN2haRVpkK2hiR0hWNWplRytuSzVRM2llNzhwdUdEYjFUSjRmQUk3ZzZlekxJalFNQnhOLzJYTTkyWU5OUEtESGRoTElNUUdWNjlNcThjVE9XaktwWlFwMC92Z051eGFQUUtFelNkSFFKdWU3dFR4ZFNFdkR0M3MvdHhkRWgvb0d6RkNDTldlWkNVVTUzemhFaEMwNnE2WkZqWkNNK2Q4RnNaNWNYbE5KZW10ZWdNZ0pVTGRUcWFWZFJ3VmhWWCsxdUJROU55MERwc05HeDJMd0hnT2psczlodzE0TGhFcXRoRWU3M3lQQkd2U2dLRUJkU1lnRzdjSzdoWVZURU5lR1RpUkF6S1BRN2pHRXFFSjhhYWRIT0hBZVNhMjVhQmJ6YzgxaGh4Z1h0aWFsWDhVcWVwbjdrNGcyR2tzcW9HM0pWSStxVGZXWnhQV3FOTS8walVYYnJVVENSWm5yekdWb3c2TndQUVhLcTNDREtsOWkrYVp2ZVd6NUlmNUVORVpHaVdsVzV6NGFKU0VjZXhDRHNpWmxvMS9RSklqMnJXb25FMHU1NGFoMi9aWi8vWkdvTUJKK2QxOUdtZXBrTEJEM24ycW9nS25qWmoycmpXcWdQYWRFZWUxWkloWjNTR2JtVGxKZjFBNEJZSXV1UHd2NGRHWmRSb0RXNjRCaEM1anVDbjZ3RG03WW15N0JYZjFzUWFGaW1FbnJTSWlIR2hNK1dLZzNJeVdlY3VoL0drKytNbU42QXh4Y3ZOQXlwOGJDNGh6Qk12WkovbDV0UnlhcG9tZENWNUJwaVhmamtXUm5ib3BJakkrV0tCM2ZDYVl5UmRlTkxFUktuRWxzY0RpejdVZW5McHJoWWMvYTRMc0dlTU1GVlo4WW84L3dHWUgzOEpcXFwiKVxcblxcbnZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlby8nICsgdi5idmlkO1xcbnZhciBtb2RlID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0XFxcIiwge30pO1xcbnZhciBtb2RlX3VybCA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnywg54K55Liq6KeG6aKR6K+V6K+V5ZCnKF5fXikgJ2A7XFxudmFyIHpsID0gXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncGFnZScsIGdldFZhcigncGFnZScpPT0n55u06ZO+Jz8n5YWz6ZetJzon55u06ZO+Jyk7cmVmcmVzaFBhZ2UoKTtpZihnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvicpeyd0b2FzdDovL+eCueWHu+S4i+aWueWIh+aNoua4heaZsOW6pvCfpJ8nfWVsc2V7J3RvYXN0Oi8v5bey5YWz6ZetJ31cXFwiO1xcbmlmIChtb2RlID09ICd5aGMnKSB7XFxuICAgIHZhciBsYXp5ID0geWhjXFxufVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiB2LnRpdGxlLFxcbiAgICBkZXNjOiAn5o+P6L+wOiAnICsgdi5kZXNjICsgJ+OAgOexu+WeizogJyArIHYudG5hbWUsXFxuICAgIHVybDogdGFncyA9PSAndXAnID8gJ2ZhbicgKyBzZXR0aW5nMiA6ICd1cCcgKyBzZXR0aW5nMSxcXG4gICAgaW1nOiB2LnBpYyxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAnICAnICsgY2FyZC5uYW1lLFxcbiAgICBwaWNfdXJsOiBjYXJkLmZhY2UsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9nejE/dXJsPWh0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvd++8n++8n3R5cGU9Zm9sbG9377yG77yGbWlkPScgKyBjYXJkLm1pZCxcXG4gICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJzigJzirZDvuI9TdGFy4oCd4oCdJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgY2FyZC5uYW1lICsgJyYmJyArIGNhcmQubWlkICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcIiYmXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KTtcXG5cXG5mdW5jdGlvbiByZXF1ZXN0X2JpbGlfYXBpKGJhc2VVcmwsIFNlY3JldElkLCBTZWNyZXRLZXkpIHtcXG4gICAgaWYgKCFTZWNyZXRJZCB8fCAhU2VjcmV0S2V5KSByZXR1cm4gcmVxdWVzdChiYXNlVXJsKVxcbiAgICBldmFsKGdldENyeXB0b0pTKCkpXFxuICAgIGxldCBub3dEYXRlID0gbmV3IERhdGUoKTtcXG4gICAgbGV0IGRhdGVUaW1lID0gbm93RGF0ZS50b1VUQ1N0cmluZygpO1xcbiAgICBsZXQgc291cmNlID0gJ2JpbGktYXBpJztcXG4gICAgbGV0IGF1dGggPSBcXFwiaG1hYyBpZD1cXFxcXFxcIlxcXCIgKyBTZWNyZXRJZCArIFxcXCJcXFxcXFxcIiwgYWxnb3JpdGhtPVxcXFxcXFwiaG1hYy1zaGExXFxcXFxcXCIsIGhlYWRlcnM9XFxcXFxcXCJ4LWRhdGUgc291cmNlXFxcXFxcXCIsIHNpZ25hdHVyZT1cXFxcXFxcIlxcXCI7XFxuICAgIGxldCBzaWduU3RyID0gXFxcIngtZGF0ZTogXFxcIiArIGRhdGVUaW1lICsgXFxcIlxcXFxuXFxcIiArIFxcXCJzb3VyY2U6IFxcXCIgKyBzb3VyY2U7XFxuICAgIGxldCBzaWduID0gQ3J5cHRvSlMuSG1hY1NIQTEoc2lnblN0ciwgU2VjcmV0S2V5KVxcbiAgICBzaWduID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoc2lnbilcXG4gICAgc2lnbiA9IGF1dGggKyBzaWduICsgXFxcIlxcXFxcXFwiXFxcIlxcbiAgICByZXR1cm4gcmVxdWVzdChiYXNlVXJsLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlNvdXJjZVxcXCI6IHNvdXJjZSxcXG4gICAgICAgICAgICBcXFwiWC1EYXRlXFxcIjogZGF0ZVRpbWUsXFxuICAgICAgICAgICAgXFxcIkF1dGhvcml6YXRpb25cXFwiOiBzaWduXFxuICAgICAgICB9XFxuICAgIH0pXFxufVxcblxcbmV2YWxQcml2YXRlSlMoXFxcIkw3QXZKNDFDKytrbGxCTVBHOUpSVFV6UXZFakpYd1JyZlJpSm1FQnVmVVRwTHBod2hsNm00cUVmSkdORmNUcXZETm9UWmkrWFd6OEh4dTdVMlU1N3NzQW9CTWZvL2VBNjh6dVZEa1g4L01Wb3BsVHpPcWpVTzZWNXBFTFhZaUZXWFJ4RjJ2bzNWNnEyRENOc1hSUTB5ejR2aDFUcXlMR21RYUtaUkZYcHk1QVFkS1JQay82VXA5dnM5OWJ2YWw0ZVRJWUpxWVlmWXMrclBteGFIOG1pMzI0QThGWjdQNkZKd2UrUW9BMjdZVitXMDkzZEhJVS84R2hvVS9XNmtxMEwrZ2lES0E0WE8zQUNDRXE5a2lxV04vREQ1WWl1T0lXQncxZ296VWdOS3dXUVRkRmdMc01aTmsvajNXQTdoS29GZzhTR0RFenRiQkRoZmdXd0FicFFpVnEvS3NlMVNlaG9DUzd5bTJNMUVhaEp0eFNibUxPNEVnd3diTS9nc054Q2xIcmQ3c3AzMVcrNCttQk42d25wWUtvcmFWbGtTVDVpVFN1TGEyNzNjTTlObm1OZmZSMjlRR2crN3hPVzducTh5MEpuNS9iUEwwQlNaNUF0UnFMcnZyczZOWDlRYVhUaXlZQ1FSVS9HUmtwc280ZDZITXZLTUxXYWh4ak9uRkNSbXVNQitrRzVBWDRSdmNycVZ4ek5lQUp1S0M1bmxFZlhqRFJYb0U1bE04VUtiS1N1TmRSakhUUERwaUcwOFZucmo0TWZxMWFXb0RzbmRQWVVpSUo1T1NwMlpaTE84K0tZSVZlR1d5SVZRYStkaWtyRVM3K2FuRVViT3NMQ3hmZmRBZVRLcmNUVzU4VTZpbGFLcElHWm1BSkpJOTZxSzlaUnNNeU11WVpuUUU1R3BLZXgrMnQ0dzlZNXFGZHdpRDFkTDVhRm9qNmFlZmNaR0dWdy9ZOWdVK1l2bHBoYklSUDZTRUlzbFY5YUgvcU5MUHJrNjBWZnZMT2xNNTVNdmxNWnR5TkRKQmZDVlpZdlNyQUhZSHg5MVY5MmhtT1krMFFlVkVVZUFMbCtIQVVKTnUzV2tjbUYzT0xYWW9OTUh3eldcXFwiKVxcblxcblxcbi8v6Ieq5a6a5LmJYXBp6aG5XFxudmFyIG1BcGkgPSB7XFxuICAgIGF1dGhvcjogJycsXFxuICAgIHR5cGU6JycsXFxuICAgIGlkOicnLFxcbiAgICBiYXNlVXJsOiAnJyxcXG4gICAgc2VjcmV0SWQ6ICcnLFxcbiAgICBzZWNyZXRLZXk6ICcnXFxufVxcbmlmIChtQXBpLmJhc2VVcmwgJiYgbUFwaS5zZWNyZXRJZCAmJiBtQXBpLnNlY3JldEtleSkge1xcbiAgICBwdXRWYXIoJ2FwaScsIEpTT04uc3RyaW5naWZ5KG1BcGkpKVxcbn1cXG5cXG52YXIgYXBpSW5kZXhTdHIgPSBnZXRWYXIoJ2FwaUluZGV4JywgJycpXFxudmFyIGFwaUluZGV4ID0gcGFyc2VJbnQoYXBpSW5kZXhTdHIpXFxuXFxuXFxudHJ5IHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgcGFydCA9IHYudmlkZW9zICE9IDEgPyBwW2ldLnBhcnQgOiAn5b2T5YmN6KeG6aKR5peg6YCJ6ZuG77yM54K55Ye75q2k5aSE5pKt5pS+JztcXG4gICAgICAgIHB1dFZhcignVUEnLCAnO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjBcXFxcXFxcXO+8m1xcXFxcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzbvvIbvvIbvvIbvvIZSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlb30nKTtcXG4gICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2Y1UjVPMzk2SjIyRnhrYlFia1hYQ3BnZ2Z1YWQ1byszcDk3TEhXYklwdG93NG8rTVJRdGFQMC84d2l5SkNyWkNhWllXNjR3VTFCNjB4UkJRdGJkSkNFZ1J1SGhvWnNiR0FaQkE0My9UWHhHd0lrQ2NrYlY2bnpIaG05M0RrNURpQzVJNUhuK0NmaUJNRTR5UW8zOU9VSnkzcEdBV2xqRDFzbnB6R2hCajFiM0hyVHZ5a2pGYVNQZ25TL01VZEpNZjBRWklTTkdVOHo1b3ZhblBzSCtGNVdzUWdIZ0lxeFc5ZXZWMyt0Z3lmTFVkRlIwTjREbHRMWXJ3N3ZDUGd6UFFYL3Z3Qk1QeTZZY1Z0U1ZLamI2UXpGYXVUTitKMklSWXJwYXkxNWFrQWtvZmErWXgvZk5UZWY0KzZaYVZ6bVhlWmFFYWowYlEvSFBaaWJ4VHozUytEbVVWZGdZdTBIWE15MENGQ1hTdDMrZU9VTjljK0VtVkFMck5OOE9xV3JQZWtydkYxcU4xVUt2NmtCY0JFUC9Td2t1ZnMzdk0wN2ZXdi9STkpZQjdoRWhzb0l4eXZIUU9pUFlDVEQrZVVzK2ZoK1U5YlJSQVV6UlNsWEN6aFdYakRmQ0pqWS85QjJsNFJwaC9ud29wRU1xaWk1cEpDSlVQVGMvSDRVZnc5Rk9MWm14TUhiRWlXZmZwMHJnYnBIb0tuUm56d1lmZy9SSzduOXpMQWRHQUsvOHVHYTBzbFo1SVQxWFVlcXJQc0NxdDNNSDVHMm15eEJEbHFEMFlRVWI2TldoSTdwampwaW42YlcydGh3ekg0TlQvVHA0Q1dwSGxWeWNCVldzU2doR3lTQkVRUnBCUUtMT1R2MUV2T3hnRnhoOUdZY3U5VDZXUHVmYkVuRGcvTEs5cmdyMnB3b0kzWUlqMHAyQmJCbVg3dk1oUHhLS0xweFppNDNKd1ZmOUh4bjMxTmFZUWkvMFMxelRDZzlTMjZ0VWdBcTQ4cmkrRWkzTUhVa0k2V3NNYkE3M0xuZmdCajc3REFsUWw1UU9rVXYvcEhoeVlsaWlRMlhZYVl4U0graEc0K3RBK0s2dVAwaERLZVFMay9mOXQ3aSs2WU8wVSs4R2kvWHdIQXN0NkNMN0kvS2lCZkZQbk5ZTHhaQng5RTBzUWVySSs4WUtGMkpmVG90dkhmYzlpU2YzTGVBY1V6V3kvR3NZcjIwcXpFMSsyaHFVbnhRYnFpRWpsYU1xZXIvL1FvNThPdytGbXBRcDF3dSs3aGdmcjZSa0s0WXd4a2V3ZVhoT1JmQ0JOcUlCSnp0d1oxZkIwbWJwUk4zY2tuekRpY3JhbW0zaldrRGlZemYvSk0zaFlzM2NyeWxkR3lYcXIyOEo2dTh4TGFTRFhGL3lVUXdiU0ZXSk1zdDQraWpTM0g3RFU1d1lqZ2toRXpoQlZLeDcyNExVbWtwVVRhUlRqMDBKZ0NNc2xIRHl5dkxTTlpXYy9zSW4vdldTQUhVOXEyQ1lSN0M5Q0lrR3VJMGtPS0gwbndLS2kxeFdmOVp3MWl2Z0x4a1VsT0VJRk5wUThYZDRSdmlqakdMcnhRUjJ6bXNycUxqVGhqcG5SOXJ5bDJxdVRtK0htdWllanNHTVdHSVhLa3lwZExZUG52Y0hmSDJjbFdnVTcxVkp4V3J6NktrN0xqSUd6Nm1Gb2o0NVpaN0YvajF0alhNaDhscllCbEtkWGp6bERjczJoczlKOXVBY3hLV2pSWG15OHVLQzRadTdNZlZLMGtjRGZ2dEFmY2tuZW5SZ3doWkZLcFNIeTZIOGZJbDBXbkhQYlVTTjUvUTFJaWs4a2FhQzBNU2JSOEtWNDZ2aEVldlFkUG9leFg3Q2pwU2paa0ZBS1NGLzJrdURYeUdzekx6MmhOT2tHMGkxQm1reGhqYzYzL0FRbHlLaXprMzBNSkJmTlBWRTZ5OXFERXNkWG1MTXNvdUg4cDcwSHlIL0tvZWx5QWtpK1VmZGxLUU5qMTdIb1lHU2luUWtiYjJpRldHOU5ET1d3cmo4WlF1WFRpTktUWEpPckg4bFQxKzE2NEVHalhlNStmemZVbUFNMENMUk1UUi9OcTV6TlZnZTlQRi9WUE5mVTBkTlZjb0xtWVA2RFRVNU96ZzBic294MWE4U2duZHhGUjliU05SelpuelBHSm82SEtHY2ZiVmFTVUZRQ1RkNlVielRkY3BMRFRRcXVad1BGYmRkU29ZamRzRnVrblBDRTJVcDZyay9lMWRoOUtyOG1hRThGWThDT25CdTdCMVdkUGR5dVdlejd4UHRzaHpBSXdSZWtJT21HMG9tU2xieHVYdzBiOVd0UEFYUk1UZVBnYWJEdThCcnowLzRzMGVvQkNSNmN2WGl3S0FYOERGSTl2ejRmbnVyTkxkN2haSWtDdkFuVDNSdy90U3RzUys4ckZVbUcwM2lhUW1KbjN5WGFpWncxTVNIa1JWcVd0RFo4elNBa3Jxb1lBN1EzdXlYZEpNNk1xQ1hFYkNmZ1hsZ1A0Q0E4Z0xyOHR2d2g0blhGbVlTYWFHbEVNWUNoaFZzUDBUb25zZ3lHYzZaSHJGK2tIMmxER1NxeE1OZUIrUVROc05IZ3JFUnJoeDY2eE95bHNJWkV3TENldm5mbVFwL0NMejRNY0N0MEZXemhuSlEyTkFoODExbU93YjQyaTNYT2pudGt0SFQydFFNUVFLQmdkVG5ZakdZS3cwQjQxNDF1ZUJOYXdHYVozbExhWFdUN1l1R1FhRktwWGR6a21pNXNPZGpWUnlTa2pWcEE5WWRFYW5TUTU2ODRTakxaM0J1dFdOa3hJcDNlUXk0M2sreG9raFB2d2pUVllwR2tiYkJHb0NNOHpJQkR4ZXEyMkw5QWtjTllYdXpKYXkvTmczVHVYV1dLQXYwKzh6S2RDUnR2YUlWWWIwME01YkN1UHhsQ0RJZ1ZDalZDSFhpYnFzdVA3akt5UnozdHI5bkNaSVgrK1lDQWErWmRYSzBQMmVnMXRsSnplV2cyMHpVZ0VqT2tuc0lGa2sydUJmTDJVRWpOeGRsbERPSVM3NEdyNEJIYnFURk92RkJhMWpabFBicmZ4dU5ZMXEvSnpTZGNWRzkyMWU0N096OHJGRFB1VkU3TmZ0YTJtRGZRbDdNMEpUTjdUaWVCWWpkYUFYUFM5RE9ZT1BzT1ZXVWxPMVF4Y2V0djVnd2dJMGdJVmhwYVhUSTZBeUMyblk0dkxoZmhVWldyYmtlNnNhR3YrTitRY3JBUy9YcXpOVk8xOG50YmZNdWVsRmlTblRGU2lyWUJOeU5iSjJ5dE9rNUhxTUh4dk83Y0R6TVE3RTJ6ZUpIajhSeXZTQm12VHEwakJkTEJpSUFoN2VKK3gySm9FVy8zQ2JyVGJmT3laeitIRlBzTzdoc3lUekthckRwRHZ3ZDZHbE9LZ1gyU1ZsM1NURDRhTHVYZDB2TndWWnFINkVpUnJsOGFoU3pMd0FEY1lNSVVCRFJ3ZUdZM2xudG12Q1gyMXdLVnRkZUJHVG9US1J6RE9BUk5mcEdOYkZCSzByd3FQd0szdVk0dGlYemhtbXlKbEQ2SzJvV1U0ZzlYWVc4MkFCbGs1Mk1sT2VRWWQxaFdIcmF3cEdwYkhDRWM0aXFzOE4yU2RhYTVCOXFONFRZQjNYTk50aStyTkl0R2c5T3Bhc3U1b2ZmQ0ZGSWJOWm1qVGM5RWxLNE13bk9XOTlDR200MDJNYTQvZWswbFVIUGtyTThVVzZOQ0FESW92QzBrbXJWVW94blMwSFF4c2ZnV1FJbGtOUEQ5RlVmTzRpSmYyZjNpVGd6dDloRTJPZ1QyQ2pLd0twOEhDanVoY2E1RmNzMVNsRGxoU0FLZUhNSDl3MlVmL241dVE2bkIwV1VXQ05zUnY5RE4wTVdmQ3hWN0ZOeFVsYTJ3Y1BJYlV0WVJOam9FOWdveXNDcWZCd283b1hHZ0NaRmxxbTc4dnRxQ2JlSzI4aVh6akZjdCs0OHQwa2M2YkVpcVAyOEtuWUY4bkFWbkZRSTJPSWVRdktiSUhBcy9UWGxzMjYzUWxhamRIVXBNS1pOay9BQktHLytxa1cyZFdRRTlXbVBDZVBPdmRWbUFhUE14Mnk3TG4zajI3VVZSUGxJcG5pTzZyNldQMmRUNGFtZnBhNERUOXc4RGt0SDBqMzlaYTVLYkJqcVlUMzA4RWFYMjd4UnUvcS9OWGNYaGtYUDlJRFp5UlNDY3Vaa3hmNlRaNFFLcEhuNXZ6am91SWFjU1BNVHRhU3RweUZEdk5HSFQreFY2RVl1QnE1ci9nQ2Q2T2hTYkxES3FIenZjQkNEQkxNMk9QNC9FUjJzaHY3R3JMMklic3dLWFFZNVNVSUUxeDluZUgycjVHeDQxUDBiZk9WcG1sTHRCTk1SRVBsTTRqVDBPSmpNdWhEL091RzJoNDlReGVKcVVLcUNxclc4ckFXYktJcUY3REh4RDFsejB6Tm00akVmc1M2L1lMU2xUcDRyM2MrRmVkRHZhUmlHU2lMbkdFODdxNWJFZHdLN1liblZCWU1YNmJkQ0lzSzhRMDdRSmtPeWNVTWZtZENrcVZlOTdSYUNubGFjSFFhZzAyNGVGbldIR0ZPL3J4L3RVdlVaaWMyd0JxNi94Nmo4QUo4RDJsbmduOFg3YWFBcjlRVnNuVEpXWVZrczBodDM0U1lPTWVrL2luQ21NdERza1NyTzcrV1RFZkN1Q0traXA3Vkd6NTJKTXEydnp6bW15S3lvMnFhOFJoVWNjeVhoeW04V0d4Nm91KytTaUpxdTZmTXpzd01HNFR0WC9qTFJmWDI0VDhhb1lwWjNvOTNpOVN4a1FvMHQzT1EyME5IKzRsb0JyV3lrd0FTR0ZxV09YLzU1NUhub0tqR3VoYys2Yk1WRmcvalMzcERKc1huK2ZNdTdlaWRKYXZ5WjZVWmpoMEE4S0w1cjdqekFYbldlNkVpNS80UDZWcE9VSFlYS0E1c3JFY3pGcEhVUDlSZFYzSXVpSzc2R1BxNnBqNU01TGpLZHdONUtCTlh1bDBhZ09lMnBJSVNjbXNIS1BNcmIxTTQyc0Rsb1JRaG5lcE5pbzhBUnYwWUQyUTlHSlBPY0JIVTZFVEhXWXoySWl5bjlQaWpaUjdZU3AycDd5aVFCTkdxaldZR1d1NkxNbFFJZFlSQ0o5cFRSenh1VThybnp4eGs4UFFDRDVwRE1SRUM0WmRNb1NYY21jVmNIeU1DbUFVR21pVFIrT3JBQ3JMcGd5ZHZ0TCtrTUhVdFpIdkg0TWFSN0l4dmlIRkFFUWN6dnFKNkxVa3NpMUVkT0xNSS9Sc1BjTitQNUV4TXIyeGsxNzZQc2QvdWRqdWg1U1NZc2hmZENxZmtvOU54YXppN3lZSTVvbEdFRTRLaVhVcVVrRmQzcXdrdkhJVlVJYVAwNzVRVDJ5WHdWcHNMVEhhRHh6NkZlM28waDRMa2xpTzhnR1dhL2lxa0QvRG5tOHNyeTBqV1ZuUDdDSi83MWtnQjFQWlh3cGdhMDFyRGZZYVZUTVZ5eEdTSXl5dkxTTlpXYy9zSW4vdldTQUhVOWpTSWpJaFJrZ3B4VC9LTXY2aUg4bGxXSEoxdGo4L1JUQ0YwQ2wyZjZXd1RiRkpZY01hRmxubU1pczJBTFZPTlBzNlVNdnNPL1BPdzVDY3I3OXNKemllV0xNVmFPVkc0L2UxVlBUU0F6WTlIODdPQ0pYZXgraUFPb1crS0FucmlCekFWQmRGd3lVcUllbkxKVnNSSDdWdjNOVjczTXFycW4vcGt6QVh0a2lVQVh3cEttVnpkYmVOTGxlYm9rRGtvbXNzcnkwaldWblA3Q0ovNzFrZ0IxUFkzbVRSbVN0U2tIYnhBL0Z0Y2ZoYjMzNEJvejFZdVg0K1pucEJsUlN3eVRURTF1R0xZZmVwWmEwSjlwVGM4WS9HYkU2elh1YStmZDNPWWtrNENwWTVoSU5WQU5HYkdNRDFZUWxwY28vcjNBNnY4SDdzZE81SzdTalo4SVQ1SlNMVnNwQkZVM3l5cWpQY2RWRzlkeUQvTHBHeGJXMjdRQm8vOHUyVmhwa205TGNNdzNoOGhpcDZDekI2VGxwd1QxVDY3WEhrR3o4VWExQytTTC9FRXplcTlLOThWVFNXNEZQeWVjRlk3SVVjNDBBWFBtcHFLSXF0YTdTY2pBWXZEOGhaSDNkM1UxVTUzL1NvY0pIS0RqNFp2MWpibkZUc2pvZGpWMGZIZVlPZHQ1MFBGV2NPeFhZYXo4amdnZGwwNEJFRkZVazBTcGZ2MnpyZE4yNTVLRnIxbTRnVXh5M0tpN3lGQVBoZEtyeUNKL2hqVFJKUWNURG5hNnlQU2ZzZUNEdG9Sa21HdjB5TmRFMGJpOWM0cFdQUWdyVmkwUWpkekgyNVgwTm5KQWtsNVlVaWtQbGxGWlhobjJkUXpMbU1qS1AyUks2TEtSQTVBcEhnT1haV25HdDBBbWNmVXl1dHcwR1lSRzlld29LQVlRMzhKdEt2UnNkVklpNkZjNE15amUyQmJ3dUxvdCtsNll4eFAyRmVrVWtraTk4Z2JRcTBDbHB2YmhaMm41dmM1cUlaMWZ2YlNOdGVOSGkyTnNEVytoVVhFOE9ZaDNBeDl3QUs2QmhNMERpbnhvNk9Wb3o4YWx4cTQ0dHRxa2lBUjdHOEhYem11TU5qTHMrYTkrUUk5cWU2RFNiQUJRajdVRkVoUGNWMWUvZ1BUL3dSL3M1b3lTU0x2MzMwdGpyendvN3BsTG91bmMvc2E3VWVBeEJlclFVcXkyQWw0MURhd0ZMZUsrbWErYU9NYk9lWjhkSUJiR1pqV1JKNmpYWkllTTVka1dvYVk1Y1JSY0NwMDlxRm1taGwvY1dzUVYyL0tmcS9EYTJ1MzhTZlhySTFWSzJlZzdDMk92azVTU2NzbHNSTlEwUWdvdEMrNE1DVVJFTTg5UmU3SUI5L2l3V3YrNzlxSTNTL0huS2Z4cnVGdk9XTjQvd1dIUjY5b2NhaEd4Ty8xdDl1WlFzS0w4Tmg0bUYrTEFGWWpoWitSNElwQlZ0ZVh5NmZHbFc4YVFRMXN6bS9TOWlJaytqWWNra1Nub1ZpWVp0bTJ2R3NaVkNJT2NsMHZyTEhtWk1WeWkvR0o4VDlsL2lTUXErOU5BRG1XU3dSc1c5anJLUjJ1eXdHczlCaEZlc2JWNFhKWEV2eE1NS2pIcHdodFpEUUFGS0tMZmpVNGxMdVAxa0cxR3ozZlFnVkcwQ0tnUXJHeHd5ZzlKTkZ4OGxLMHBkRU9PK0RhWHpUckhvWHhNMGJJc2ZjTFlDd0s1bGxJQ0tBazhaTVQ2TXRhSE12MHk3ZXZNakJaLzFZbHZROWVrTDBmNis3aFc3YkdUaEVPeTd4OUl5eWJibzl4VThrR1EwSXdTeXNiSDc5OWV5ZktubFpaWGRVL254NFduMWExQ1B5Z0sxNEt0aVhUZEZEUTJMZ0NPbjJxb1BaZjdOdElGeGRMNnlhZXArQ3FxMnVFTm9wZzBEenhUekhicVg2RG1jUDdQeWVqSE5PVlVnM3dERjJSd2QzSWt5WUNxZ1puTjZFclcxVjI2b2lsRll5WEZaK3Y3RUhFOEI2TWhMbnh0TEdrUlpaMCtGRkk2S24rWG9lN0xMKzJaYURvNC95eW5rVlI3QkZ1U3FodEtMdnpqZGJ5WW9Ub3dpbTg1YzZScS9SQ1h0d2c5Umc0cVNFUkdqalp5RmNKUS9RNmFKYnYwTHBFeVJuM3FwcDc1dVQzemNiVFNSUlRWanp2Y3VYSUVyZ3IxRC9QdWdGbWhPV2UvMnBCMTVqVTQwaWUrM2M4OW95aWFlSU8vNXNrZHdRUHpnNi9ZSE5WLzFzVlZnT0thVzRJN1FBa2FTT3RkVlBtNkg2d3ZseVhFQ0FOdmhDTUdlbEZBZTFqV3ZkQk11blZSOE4yUkZTQU84TWtJSjZvOEx2VW96S0RrTVFCdDVwL2NXc1FWMi9LZnEvRGEydTM4U2ZYRDUyZ0tENkg4WFZLRmZtREhhb1NoTXNyeTBqV1ZuUDdDSi83MWtnQjFQYW1iMHFhYlQ4M0Q2cW4vYTNHbEh5R3hhbVpnUkhhSzE2dm1aRXphbnVURE96RzFhVXB2RUN0UkI4RU1nYXBhUVhMSzh0STFsWnord2lmKzlaSUFkVDI2dkZwZ2EwWlJMV1JQM2pIMHR5ck5ZQTc1ZUNUZjlkSXFqWUdjQUExcnNVMHplZXBkTVo4TUpYZDUreGJBYVhBL3VKZnNHalBJN3BzUWM4Sm4rZm0zTUxrK05DRUY4THNRME90Z2xJWEwrNjNGUnZ5RzduTWNldkg0aS9YVDBCMUJYTlBMNnI4aTZibmJlK1FKS1lNQTkzUGRiQmNEc0dUVmFMaUpsWWRFT1RmallicExVUkNkbHg5Sy9wdUVYVytcXFwiKVxcbiAgICAgICAgXFxuICAgICAgICBpZiAodlsncmVkaXJlY3RfdXJsJ10pIHtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICB2YXIgZXAgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgICAgIHB1dFZhcignYWlkJyxTdHJpbmcoZXBbMF0uYWlkKSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn572R6aG1JyxcXG4gICAgICAgICAgICAgICAgdXJsOiBwdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKT09PSflvIDlkK8nKXtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQse1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6eydDb250ZW50LVR5cGUnOmNvbnRlbnRfdHlwZX0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTpsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDonUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycrbF9jb2RlLmRhdGEudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOnsnQ29udGVudC1UeXBlJzpjb250ZW50X3R5cGV9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6Y19ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6J1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICBsb2coY19jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBcXG5cXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIHZhciBiYWRnZVR5cGUgPSBlcFtpXVsnYmFkZ2VUeXBlJ10gPT09IDAgPyAoKGVwW2ldWydiYWRnZSddICE9ICcnKSA/ICfwn5KwJyA6ICfwn4aTJykgOiAn8J+Toic7XFxuICAgICAgICAgICAgICAgIHZhciBiYWRnZSA9IGVwW2ldWydiYWRnZSddID8gJ1snICsgZXBbaV1bJ2JhZGdlJ10gKyAnXScgOiAnJ1xcbiAgICAgICAgICAgICAgICBpZiAobW9kZSA9PSAnWDUnKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICd4NVJ1bGU6Ly8nICsganggKyAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXSArICdAJztcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ107XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdmFyIHBpY3MgPSAoZXBbaV1bJ2NvdmVyJ10uaW5kZXhPZignOicpICE9IC0xKSA/IGVwW2ldWydjb3ZlciddIDogJ2h0dHBzOicgKyBlcFtpXVsnY292ZXInXTtcXG4gICAgICAgICAgICAgICAgdmFyIHRpdGxlcyA9IChlcFtpXVsndGl0bGVGb3JtYXQnXSkgPyBlcFtpXVsndGl0bGVGb3JtYXQnXSA6IGVwW2ldWyd0aXRsZSddO1xcbiAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IChlcFtpXVsnbG9uZ1RpdGxlJ10pID8gZXBbaV1bJ2xvbmdUaXRsZSddIDooIGVwW2ldWydsb25nX3RpdGxlJ10/ZXBbaV1bJ2xvbmdfdGl0bGUnXTonJyk7XFxuICAgICAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2ZMSzh0STFsWnord2lmKzlaSUFkVDJOS1hPeE1MMzR0UHNKY2JGZ1lxMkl3ZXFSV2xjdG5ubjQ2ZEpIR0FvUTZTK1R4c1dKWjNFTGJVQUVmMVZ2MnhvTXJrbDNLb3FXdG8xdTd1OVNVdk50ajF1eEM0ZW51WklFM0lPVkpZZnVsclNJdXFuTUU4K2hsVjM4QlN0WkNrSmYwaVczSGRGMmlzQkhFeFRaZjRscEMyS2Y0dUFzUGZScVU4TjlqYlA0K3F6UHJZckcrWWFXdCtpbnc5WmFHTmE2MDdGdXZMZ0grNHZaYm1mL3RHblJ6YVF2ZjByaHZQbmZCZUV5YU1Bem1tdkFNeDR1MG80MnJ4SG1OS1N4LzJWWmxJcStScUNaeEpKM2JLY1FINCtGL2QwRzVZbVh5T1BaUk5ZTTdSb0J6OHplUUUvaHFCclViclNkYjNWdzhTRHNFeFUyaFdPRXIvMDUybjc0U0VkV1dkYzM3azlCTGFWUEpyZFBGcTNyK1poOGY2aVdnNk5YQnJCK3RVbEdTVlRqWmZzTEQyckJmcHVQZVFRV2RBRXJRSmhJRk05NVB4aDNTNEJIdFVvZFozRjIybWl0TEVmODZJUG8xOHlyZ0hNV1ZhUWE0dVFBNFpNRFQxYWhNODVrNis3TFRtUHR6Nk9OQXh2eUlUNzVzQ3hTY2swWHNMbGhHOWdWOHJVMGZsRDNlK2lXZWtqazFYeXJtZGNLZkZIR3l2SWZxV0Q2ek1SQWRGSUl5WHhOM3N0YnROaTNiUU1VWmdiWW1tcjNRbGUwakFIb1pSTUhkbDFCclMxc2RtTGVwV3h5SEM4cjZVMzVIbUJRTkhwZHZ6aTc3V0dHcjQ0UTRNZ3Y1UlhiSjllSk9GR3psaHJUc0RRejN3QVNXelM3SnhHOGNrNWZWMHVUUmNqZ0pQRkNJODZleEQ2NFQ4dG1za2VrV1hNdFpVamxOSVRQOVJPUE5LR253enJoRlYyUnZWcU5HMEVGSXNXMVd1YmF0YXNpSjZmWG1CVEYwZ3RNbUJLMWFzM0pIV1JoS3JnWWdGQVNkK0U0S1VBdU1QTHRRYjBmdGx5UWlBVFZzYVJyRnpia3B1WWxNQXMxUDlWaVVqL0V4b1hxQU1hUThaSnpvdHNQdmp3K0tQRk1mbnc4QjlFUWN2WjdjQW9LS082K25EU3lIZU0xZXcvdW9XSDJYSk5HTDFQVWM5czFUVWJhS3RVYlMyNmhXTkdNckd6RzJ1MTZvVGxEZnh6QjdLTGpteUlpQ2hCNzQ2Q08zVG5aelhwNHMrdjEvcmZnUFl5QVNHakVqUk45cU1hejdJbC9tTFBpRVVEYWpyTitBVSs2VVpsU1VLWmFhbXpqLzR0SnRsbXBBM2kxOUQ3SXN3MWtEekh3THNZZm1ITVNra3YvOERKcFAyVkRQRzJGQW9SWmtsUmNjOWVVZGF1eUwrUWhDUnpSQUJxdnB6ZTJJWVVUTU1Ha1dtVzJ6VUZyZDdWU3NzcnkwaldWblA3Q0ovNzFrZ0IxUFk1WW84MXFpOGhYV0ZHL3NrVmkxWVRwYzBWNjVVZ1o2SkxJQjZLcDJPb3M4M29naVNGTURKaXNUMk9FQzZHVXhoYlZYYnFpS1VWakpjVm42L3NRY1R3eSszMndLVHpXVi8wM2gyUm9XZEoybm9sMHVDTUdZOWFEQ1BVYlpXVWVhZkxLOHRJMWxaeit3aWYrOVpJQWRUMkFMU1pvcGl2TU00SFZORjNtWTJYTDFBM2plc0lBdHhEUi92QjgvQUlsL1dMckdMYmtQMlNKeDhCS20xaFNOb2dXeWQ0eloxd2FKcXBOY0xiMGxwZnR6ajNCdzFrZ3lNWXBTL25GNS80ZDUyWkxrR0d6YVVNTzNLeGloUEkwdlY0LzZWZW1mRk9Md3pYa1JXcnhSeWhGeFBNY3NHQTZlQXBIbzFoYzFrOW0xVi9DVnVXV2N5Z3ErUjFwejRhV29xSktwdHZUUnVndjE0aHdKVCs3cndHV2l0T0ZWdUszTjEwYXJRS1ZaNmtUOVVDdkdLNEdSa3VaamwvZGJKZjRBeGFjOEZmTSt0Ty9vS05ZQjg1MGg2Z0NiVG1MM1RXMkV1RnVTRG9ZNXFrTXkyMmkxdTJlS095dFI0U1JMRkw0THYrcEVxZkhjc29MbWo3L3pJVXFPTkNrcGhTRk02ZGZ5ZENHOWM0VjVBc29tOHFPQm91enRnQnpLVUhUMG83MGJRM1VUaXQxN0Jab1ZjcWNiZUpleWR2VzNIQ2FWWnkyd2h3d04zYjE2VkhsLy9INGcwZ2lLZkY1N2hKZTR6aVNWbkYycFdzR3JSNWR6ck8wcGVxd0FnWnRvQkRvL21hTFhob3ptR2ZZQWM3d3pXbWJYUWVKdi9RQnJvdTI3T0tNRkRBWFAvY2p5RUVCZ0RIYjFyMVZYTUNpbVUwd3cyVlgwQ2o1WFYrZjBKNVc1N0tVT1NlQ2pidnIrVlV4cW8xNnh3OWtyOHRuUTJRejVrTUl3S2tNSVBpT0poSjJCQXArSmFYbGdNWElpNnJ6dDdJY1lkYnlib2M3RWpkdk0rc3EwQTVCZ1RMWTZFQzlCbmRIZWhodjBhajl1Tnp2b2p2a2d0OGQyKzV4TVliZFhCR1htZHl0aDVwQXluOG9MQkNXVURiV2U4MC85OWV0MWlIL0dESkVmb0RMRGY5cCtrNCswUWJ1V2RFcXVUTzFqQ0pGNTFoN1R4SGwvVVlhL21Kd3VkMC9ZOEQ0ZkVZWlgvVjNoR3BPRDlSMlptamc0SXJwUHB3ZWZqOHcwd2djZnlMejlaTW1zMVBvTW4wcUNubk0rVnU2bjZzeENsUGI4eVd4S2t6TWgwZXdFNG5Kb2NoV2JEazVyY2ZyRTAya3lrRlhGdHUremo4SEpnQUhNYldWbmpueVhJNzZVZ3FEUmVqQUh5Rm1XbVZLNldoR2s3bTZac0pxakppMkU1MzRlQjBqQVZZZjZKYnM3aEFxSlBnRWxlT2VBT1U0ekpNc0FWcmlzdDYzaVJKTWFFTVRqTzQ5OCthbU1Pcjc4V3JLRHpodzZSZ0IrTzlVaExQSzA0MllFN05mempDYjc5OTg3dTl3UVY0UWNyaHRsS09YY2w4TWJadEgwYm1iTmJBT3VYdUlGNWRySlVyallTd1ZRQkRBYVVhTFllemVTdXZyUXdGU0Nid2VUVUpHejFqN3VCVXEzbWFCNE9mSzJuN0cyTjFmQ0sxZUVhdzkyVW5sVkRPMFRmMUxJSTA4SEZ0c1JJbjZZMXAzczlWK0xKUTlpVWQ1WkcwTHdVOTA0RTc1UHB1VkxST0JZSFM0bXJCM1J2ck1oQVdDNmpkdFNURmtsdW12K2MyRUpScmJVcmpyNEErWTQwa0FOTjFVdDFyZHZNYi8wcFJPSlhWc0RmYy9BeU01bjNDZmx2RFZxU2dQSTlibEhGZTFtWjc1Q21JTFM2S3pkRjBZbDFNVkhpUFcwanZvZG54S1lUcHM4aEpOK2FJK2gxV1JHenJKS1pKaWNBdE5kc1dWaExmclZ4VkVQU2VtOWpHenNBYVdQa1ZCR1JPNmpXMlNXN20rYlZEdlJQYlZwYjZnU0JJOG9DVVlPbzcvUTBIYWJxbTdSUE1jc0dBNmVBcEhvMWhjMWs5bTFYdzUwSVJ2bjdWeVBKK3JEQjFHYWRLOXFvN0l1RHYxdC9Xano3ZHZwNGQ0UnB1R3Z5NFpRazlQd1Y1dFR0a1gyREdBdFE4ZmFpdkVJSDcwT2hrcHVDdG5Ia2JvelFDOUJZTHhVZGZJTHZQOHFFOTdyWllrK1hjcWE3aHZsQkc2bjNKZzU2czRycVdlWk5sQi9jRzU1Q1N0UlBFSTZSanJBRHB5L3NZblE0UkVONlVsQXltU3JlczJZWFJMVGFFY1lXa0pXOTgyQy9zZllzY2tiaXpsT3NZc0tBRnAzWHNnRFFSRGFhbyt5SE5KQXBlVlJLMW03aDE4cS9LYlF4RmNwbkRiR1gyTVJ1Y1U1UFVQSnBreXZDbEV2Uks3azF4Mm4wemF6QVE0Z1pmRHdzTS9pbnZNUVRLZVFldHpJcjYvWndUekhMQmdPbmdLUjZOWVhOWlBadFYvcUhNNXRZVTFod1JTcmQ4NUtIMk1wZHQ3TVB0V2ZxNE5kT1lXYk5oUFA4eGxMNkxnSEFXbE15QkRac3VHeUh6RTh4eXdZRHA0Q2tlaldGeldUMmJWYjJXSE0xTVZQZU5QMkp6V0tuVTBIUXViYW8vNDFQcUloK0NXQlIzSFVGWVJ4aXBFQlFiS0EvbUFwQk4xcEhDd0JQTWNzR0E2ZUFwSG8xaGMxazltMVVDUjY3aHY1OWVtNG5WUFptalU1azFCOWJJZHpJbDdXckoxZi9TVW13dnE4anlNR204VEpYaUtnRkV5NjIyZW5rVHpITEJnT25nS1I2TllYTlpQWnRWQ3JsUm5nVEVKQnFWMml5czZxeUxUSjFDcGJuNTFjS3RlNThlTktSa2xDRHVYRmMzR3FsWTBDZUc2RjNRTVZ1cUJNRU45cFhzbW53S3hzRTY1L2ErZWxxZWZMS3lsN0krT1p2K0tCSG5ZWDc5V2pCYjMyQkdoR1puZDFRa3kyeEhQdmY0U3grL3RZTjJ6bmNtcFFxU3d4UE1jc0dBNmVBcEhvMWhjMWs5bTFWVXVVR3hST1pTM0tDRTk2bmFVRjc0bVJtcmRPL2pwdElIZ01qQytHNlY3QnhaVEppdE5FTHN0MEZDSituK0FNWVR6SExCZ09uZ0tSNk5ZWE5aUFp0VkJDUytMZllxclNCR0hrZVlsYXFnYndJTXhFZDFPVlB5Smh1VnhBVW5EdHJLVzBDbnZ1cDh6QTNDVStpTVRsVFJmMk5mSmN4ZWo4ZGlqWTV5M2YxblJXUkVPcFltcllYenRmc1I4UitZK1RlWXhBZXV1N3Nnd3VpVENHcXhjeHE4Y1hGMk8remxhWGVtNUh3SE5XOUcvLzNlbnVrNk1LMkJ0dENRQkhyaXBZb0dBMSt2VStkSi9GK0xSMWlCTHQ0eS9Gc1B4ckpQMXh2djAwWkZrWGdjeUdFaWF1YW1Hd1lkbG4zLzgrdEZnWFJJODJyOWdjc0dYVHlnSU9URjl5aUYwZ29DaDROTnlyYTVTUHpTd2dvbjNjc24rTmhBUVJKdlNGc0xYTEg4Ri9mQ1NDandsL3BpMkdHWTRuQlVlazN3SzZjUUdXNkIrb08zaktTVzlRRUcwL09nSFRieXhiUjlFc3BvbG1ObEIvR3FTTDRLT01ZYXdOQzB2Z1ZaZEpCNWJIbHV0Z2puVHZ2N29ZeWZlYSttSU8xakdiWStqVThWTHgxWVpTSEVOU1RqaTI3NFFqMktPckZFenBYcWlRMkpLWmxtRGhiOUxKOE94Vkx4OEFISGNQNm55V09oaVljRnVRTUZ3ZjlVUklHSHJ6cmp6cHBmN2dzS25KbHRUYmtsbDFsc2ZVSFNkNVpTQUY2UUUzYjhvYjV4NUhtWkZVUVJrVTk0UGxDSHRXNUVGd3dIcUx3czF3M0d4ekdNaHRxZkU4eHl3WURwNENrZWpXRnpXVDJiVmVFN3lNN0x4cXc3NzEvM25OYjc4T3ZwNHViRmNpUnY2QnZYY1Y5MVgvd2xBYjY2Z0RxeXhtN0MrakRsODVQTEp3ZElSQmtlcTBVcG1LUnZsakFHVUlvTFAwb0NuakZ4UFZpbnF6bUFtUHlseFJmb3ZWWmM1UlRHY3psOHRpQ0lRRktlN2hQbno4UFVlVHhMMkdVUzk3NTN4UDB1Z2JKTkgwa3RNRkdxWExRck4yMGh5eGp5RktOT3k1R1FMMWRsMzJWOTZjalZRZXVsMms1WElST1BhV3hsNjBqNVh6NkdQVzB2c0NJcEsreGl5eXZMU05aV2Mvc0luL3ZXU0FIVTl1U3dCTXZQeGdqMlRXT0Q5MU5abDVLb0pjK3p1M2pwVlFCRWd5SEd4dGk3U3owT3lzVXRaZ0xFSVc5YWRTZnlpMncvc3JtVG04SDBNNkt6R3RuU2M4YTBWVndUMnFRb25uZ1NSNUs2UVQyc0VaSnJCczVCOFpEQmtqYWZRNHNScFJFYU9ObklWd2xEOURwb2x1L1F1a1RKR2ZlcW1udm01UGZOeHROSkZGTldQTzl5NWNnU3VDdlVQOCs2QVdhRTVlaW5PSTdVQXpsZDhISVMrTFUwN29MaER1Vklhc0k3QWdiZlljYnY4eVpCeXl2TFNOWldjL3NJbi92V1NBSFU5bHNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRnl5dkxTTlpXYy9zSW4vdldTQUhVOXQ1WGJxUGZMRzVBQVVFdnJjaFM0V1poY2xmTjBWcTAwMUVDLytVQVhhR1M1YjBoa0pWT1VDdEN3c3pWdXlBZVVNc3J5MGpXVm5QN0NKLzcxa2dCMVBiTEs4dEkxbFp6K3dpZis5WklBZFQycG05S21tMC9OdytxcC8ydHhwUjhoc1dwbVlFUjJpdGVyNW1STTJwN2t3enN4dFdsS2J4QXJVUWZCRElHcVdrRnl5dkxTTlpXYy9zSW4vdldTQUhVOW5NeUdMSUhsQjJRUklZNkR0QWc0bHpMSzh0STFsWnord2lmKzlaSUFkVDJnRHZsNEpOLzEwaXFOZ1p3QURXdXhUVE41NmwweG53d2xkM243RnNCcGNEKzRsK3dhTThqdW14Qnp3bWY1K2Jjd3VUNDBJUVh3dXhEUTYyQ1VoY3Y3cmNWRy9JYnVjeHg2OGZpTDlkUFFIWFpSRWhjZGV4MUtNTGMrZzRJK2pjeHl5dkxTTlpXYy9zSW4vdldTQUhVOWdUdFZPRkY2a3dhbm1zR1NkSDJpYUdjMVluNUs3a0g1VlhENnl0Z3E2bzNKMVFrNkQ3ZGE4dGRHUlp5bGxxV0RzNlVNdnNPL1BPdzVDY3I3OXNKemlkYmszNTQybWpMUkt0eWlFZXl2MXRzNnlhZXArQ3FxMnVFTm9wZzBEenhUenFIMXI4M0p5dXZRczRzVlhrcjNDZkxLOHRJMWxaeit3aWYrOVpJQWRUMnlBSXVNd0R4dklmVUlHOU9adURzSTlxQW5CVzFGaTB1ZGZiVDloZzZVNEI0bGxSdnVLeVM3WkVSekViZS9KZnY4Z05FZDhUU1lCOSs3MnZ5cGlsMnJUYjd5NldGbFpRYTArZkI0NFRFNnF6eGt4UG95MW9jeS9UTHQ2OHlNRm4vVmlXOUQxNlF2Ui9yN3VGYnRzWk9FUTdMdkgwakxKdHVqM0ZUeVFaRFFqQkxLeHNmdjMxN0o4cWVWbGxkMVQrZkhoYWZWclVJL0tBclhncTJKZE4wVUNQeTBkTnJpc3lzS09NdVVNUDRGcFlsSWxDeEF0OVFGYUlhSW9VdGxBYWlZQ3EzUW5NK1JZd2gvNnRKdzNjU3FobUhXazlyQmFqNzFOa0FDVXZPWHI0RFVYOUFaVzJtNGtvaVhkMVhKdUUyS3g3ekVqVzBhbWdmekJaREpvL1lLUitqU0J2cEk4QUJZNjJKTk5VTGEzbXRxV0RPMVhnTDJVbHNkT0RKbEl2VFVxM3oybHQraW51a0xsbGFtWmVmQitKdnFzcXYrTmVZYk9KeHhHbXRuUDdxOXBWMHJSbWYrMU5lKzFPK1I1VXNyYUpLWFBVeVlSYjB5N29vVGtMRzFoNGhHQWdFdFJqVE9rdGtYbkY1QlpUR005UnlRUnVhd2MwYkJPbXRIWDFoY1Q3cnQzdERrc1hKZmZsUHl5c1d6aFBYTE0rRmR4NWRDWVJ5WnpDL3hpeVpyZDFSb1BaMnUrMFF0YnNLMnVnUnB6UTQ2OWxuZHBKaHJ3YWV5aCtvSEJTOEZ5dytzL1hCMzFNSDlLSkFvMEpFQVlaSzIyNTJpRVlIZ28zWHVOMVo4YjlJNWJvb1B6dkwwMUlpK2tBYWhzc3J5MGpXVm5QN0NKLzcxa2dCMVBhanJ1cVkvYkw2djEyMDAybWE2MFN6WmhUbnl5UVpkWDlNNTJvQ0FraWoyL1lOdStIcFg2NzlkbFpTK1dhaHVRRWpqdjQvUk1hSlNmU0tERFI2eWx4TmhNWXdna3pGcFdRVFEwR3FMcWZ3TElJelZzMmdSM05PT3dzbDl5a2FDeGlmRTQ1T1NMUWFZK3NFQjIxTFhLZjJSV0lxYWJLaTdWbEJXdVZxeksvTXhiQ21qS1BXS1VGcEp6YTgwZ01YVW5GNEltM3lxRWZ0MXJmc0tVN1NnNmU0aFpxelJtYlFZZHZFN2NlekYrZjh4Y0Q2eVJja3hPUmRHNnJQT0JLaURNZmc2M2VIdlppVWp1bFBFNUl2SkR4b0tCTlh1bDBhZ09lMnBJSVNjbXNIS0FnVEZGamJ0YkNmZTFUaitpeDJHVVROd3JIVXpxWUozSXF4eUh0T2FyMkhGMW1MNUsvdXBTWTN6VDBiS2pjSHdjc3J5MGpXVm5QN0NKLzcxa2dCMVBaUHhkK3pYQmhJbGg4cHY0eVVyWGJNZ29zTU5pWURCYlVabUd2VVZCOVkvVXE1UXlZUjhqQmEzVDZxcXFkOVBjREdqclRJNlliaEVhNG10aXZWRjFuMUo5ZlVFY1NIV3ZrOGZweW53K0JrWU9lemhJWXdiaGNYcktKTjNYajRYQUEvanQ2SDMyNTRGYzRtUm91N2RZbFl5eXZMU05aV2Mvc0luL3ZXU0FIVTlrS0FyVUtWRjJPbUFFT3RSUFRMb1VyTEs4dEkxbFp6K3dpZis5WklBZFQyaVZTbjJYNk9LOTBSZkVxamtDL3JJU1l6Lzd1Y3A2YU0zVDE5Y0pweEVySExLOHRJMWxaeit3aWYrOVpJQWRUMnNNaWRzSjUvOCtVK1pMWG9va3RTNy9abmEwMmZ2QWhKZ245Z1JqU3p3QzlkQ0J5b1V0OXBZWFBsTnVkZjdoNkJwejZxd1d2TUducjFmWllhMDdiZnI4c3J5MGpXVm5QN0NKLzcxa2dCMVBhanZ1Y3pyUVFVMEkyVUFhOFVKZFB1TWpCSHpZbVdPQm1qbDhLaDIzK1Q2cmx3V1JWZ0Y0N0hHeXdWblZ6cEdDYk9sREw3RHZ6enNPUW5LKy9iQ2M0bkpmanJndDZFblBqWFovbkNKTVB2V002VU12c08vUE93NUNjcjc5c0p6aWR3WjQ1Q1hOR3grUzhPTlJ1MGNRWXlFOWNzejRWM0hsMEpoSEpuTUwvR0xKbXQzVkdnOW5hNzdSQzF1d3JhNkJHbk5EanIyV2Qya21HdkJwN0tINmdjd3k3WW1NSEFEa3N1bU41SHJqbFY0TXNyeTBqV1ZuUDdDSi83MWtnQjFQWjk2dmVGZjVvMDZIbEZoRmtFYmpWTmFIaFZXZ0g0ZlRNdGt1ejViRG4rQUhnbmpwd3lHL2hJTDUwR0lQWG8rdnJZVEFhQnlBQlFXbzVQMXBWdUtEWmNcXFwiKVxcbiAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZXMgKyBiYWRnZVR5cGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IHBpY3MrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGJhZGdlK2Rlc2MsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IG1vZGUgPT0gJ+ebtOmTvicgPyB0cnVlX3VybCA6IHB1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHB1dFZhcignYWlkJyxTdHJpbmcodi5haWQpKTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTptb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JywgLy8n55u06ZO+5pKt5pS+JyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn55u06ZO+Jyttb2RlX3VybCwvL2xhenkxLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAneWhjJyA/IGdldEhlYWQoJ+iQpOeBq+iZqycpIDogJ+iQpOeBq+iZqycsXFxuICAgICAgICAgICAgICAgIHVybDogJ3loYycgKyBtb2RlX3VybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJyk9PT0n5byA5ZCvJyl7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKycmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOnsnQ29udGVudC1UeXBlJzpjb250ZW50X3R5cGV9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6bF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6J1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICBsb2cobF9jb2RlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nK2xfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKycmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdChpbnB1dCx7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczp7J0NvbnRlbnQtVHlwZSc6Y29udGVudF90eXBlfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OmNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOidQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgaWYgKHYudmlkZW9zICE9IDEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2U7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAvKm1vZGUgPT0gJ1g1JyA/ICd4NVJ1bGU6Ly8nICsganggKyBydXJsICsgJ0AnICsgbGF6eSA6ICgqL21vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IHJ1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogdi52aWRlb3MgIT0gMSA/ICd0ZXh0X2NlbnRlcl8xJyA6ICdhdmF0YXInXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKCdyZXBseV90eXBlJyk9PT0n5byA5ZCvJyl7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJzigJzor4TorrrljLrigJ3igJ0nICsgKGdldFZhcignbGFiZWwnKSA9PSAn6K+E6K66JyA/ICfigJzigJwg4oqZ4oCd4oCdJyA6ICfigJzigJwg4oqV4oCd4oCdJykgKyAnPC9zdHJvbmc+JyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfor4TorronPyflhbPpl60nOifor4TorronKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+ivhOiuuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOaOqOiNkOWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfmjqjojZAnID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+aOqOiNkCc/J+WFs+mXrSc6J+aOqOiNkCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn5o6o6I2QJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcblxcbiAgICBcXG4gICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn6K+E6K66Jykge1xcbiAgICAgICAgdmFyIHJlbHkgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92Mi9yZXBseS9tYWluP29pZD0nICsgdi5haWQgKyAnJnR5cGU9MScsIHt9KSk7XFxuICAgICAgICB2YXIgY291bnRzID0gcmVseVsnZGF0YSddWydjdXJzb3InXVsnYWxsX2NvdW50J107XFxuICAgICAgICB2YXIgcmVwbGllcyA9IHJlbHkuZGF0YS5yZXBsaWVzO1xcbiAgICAgICAgZm9yICh2YXIgeCBpbiByZXBsaWVzKSB7XFxuICAgICAgICAgICAgdmFyIHJlcGxpZXN4ID0gcmVwbGllc1t4XTtcXG4gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHJlcGxpZXNbeF0uY29udGVudC5tZXNzYWdlO1xcbiAgICAgICAgICAgIHZhciBtZW1iZXIgPSByZXBsaWVzW3hdLm1lbWJlcjtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbWVtYmVyLnVuYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6IG1lbWJlci5hdmF0YXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPjxzdHJvbmc+JyArIG1lc3NhZ2UgKyAnPC9zdHJvbmc+PC9zbWFsbD4nLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB2YXIgcmVwbHkgPSByZXBsaWVzW3hdLnJlcGxpZXM7XFxuICAgICAgICAgICAgZm9yICh2YXIgeiBpbiByZXBseSkge1xcbiAgICAgICAgICAgICAgICB2YXIgbWVzcyA9IHJlcGx5W3pdLmNvbnRlbnQubWVzc2FnZTtcXG4gICAgICAgICAgICAgICAgdmFyIG1lbSA9IHJlcGx5W3pdLm1lbWJlci51bmFtZTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnPHNtYWxsPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOycgKyBtZW0gKyAnOicgKyBtZXNzICsgJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0gXFxuXFxuICAgIGlmIChnZXRWYXIoXFxcImxhYmVsXFxcIikgPT0gJ+aOqOiNkCcpIHtcXG4gICAgICAgIGZvciAodmFyIHIgaW4gcmVsYXRlZCkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiByZWxhdGVkW3JdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IHJlbGF0ZWRbcl0ucGljLFxcbiAgICAgICAgICAgICAgICBkZXNjOiByZWxhdGVkW3JdLmRlc2MsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcmVsYXRlZFtyXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeWFs+azqDFcIixcInBhdGhcIjpcImd6MVwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIGlkID0gTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV07XFxudmFyIHN1cmwgPSBNWV9VUkw7XFxudmFyIGNvZGUgPSBmZXRjaChzdXJsLHt9KTtcXG52YXIgeW0gPSBKU09OLnBhcnNlKCd7XFxcIm15Jytjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdKyd9fScpO1xcblxcbnZhciBlcCA9IHltWydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJytpZF1bJ3Jlc3VsdCddO1xcbmZvciAoIHggaW4gZXApe1xcbiAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nK2VwW3hdLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6ZXBbeF0udW5hbWUsXFxuICAgICAgIGltZzplcFt4XS5mYWNlLFxcbiAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9nejI/dXJsPScreXVybCxcXG4gICAgICAgY29sX3R5cGU6J2ljb25fcm91bmRfNCdcXG4gICAgICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3lhbPms6gyXCIsXCJwYXRoXCI6XCJnejJcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbmNvbnN0IGhlYWRDb2xvcj1cXFwiIzM1OGNjZFxcXCI7XFxudmFyIGpzb24gPSB7fTtcXG5ldmFsKCdqc29uPScgKyBmZXRjaChNWV9VUkwse30pKTtcXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSoxMDAwO1xcbiBcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG4gLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxudmFyIFlZID0gZGF0ZS5nZXRGdWxsWWVhcigpKyctJzsgXFxudmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKyctJzsgXFxudmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpOyBcXG52YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG5yZXR1cm4gdGltZVxcbn1cXG4vL+aXtumXtOaIs+i9rOaNolxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcblxcbmlmIChqLnBsYXk+MTAwMDApXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXG5lbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxuXFxuIGlmIChqLmxlbmd0aCE9XFxcIjAwOjAwXFxcIil7XFxuICAgIGQucHVzaCh7XFxuICAgICBwaWNfdXJsIDogcGljcyxcXG4gICAgIHVybCA6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICB0aXRsZSA6IGoudGl0bGUsXFxuICAgICBjb2xfdHlwZSA6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgIGRlc2MgOiAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZVxcbiAgICBcXG4gICAgfSk7XFxufVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggeWdly3mkJzntKLkuIDnuqdcIixcInBhdGhcIjpcInNcIixcInJ1bGVcIjpcInRyeXtcXG52YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG52YXIgY29kZSA9IGdldFJlc0NvZGUoKTtcXG52YXIgeHM9SlNPTi5wYXJzZShjb2RlLnNwbGl0KCd2aWRlb1xcXCIsXFxcImRhdGFcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdKyd9XScpO1xcbi8vaWYoTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdPT0nMSZwYWdlc2l6ZT0yMCcpe1xcbnZhciBwYWdlID0gTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdLnNwbGl0KCcmcGFnZXNpemU9JylbMF07XFxuICB0cnl7XFxuICB2YXIgdz1cXG5KU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3NlYXJjaC90eXBlP2tleXdvcmQ9JytNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyYnKVswXSsnJnBhZ2U9JytwYWdlKycmc2VhcmNoX3R5cGU9YmlsaV91c2VyJm9yZGVyPXRvdGFscmFuayZwYWdlc2l6ZT0yMCcse30pKS5kYXRhLnJlc3VsdDtcXG4gICAgZm9yKGlpPTA7aWk8dy5sZW5ndGgmJmlpPDI7aWkrKyl7XFxuICAgICAgZC5wdXNoKHtcXG4gICAgICB0aXRsZTondXDvvJonK3dbaWldLnVuYW1lLFxcbiAgICAgIGltZzonaHR0cHM6Jyt3W2lpXS51cGljLFxcbiAgICAgIGRlc2M6J+WFs+azqO+8micrd1tpaV0uZmFucyxcXG4gICAgICBjb250ZW50Oifop4bpopHmlbDvvJonK3dbaWldLnZpZGVvcyxcXG4gICAgICB1cmw6XFxuJ2hpa2VyOi8vcGFnZS9zcz91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nK3dbaWldLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlIycrd1tpaV0udW5hbWUrJyMnLFxcbiAgICAgICAgIH0pO1xcbiAgICB9XFxuICB9Y2F0Y2goZSl7XFxuICAgICAgZC5wdXNoKHtcXG4gICAgICB0aXRsZTon4oCY4oCY5om+5LiN5Yiw5L2g5oOz6KaB55qE5ZWK77yM6KaB5LiN5o2i5Liq5YWz6ZSu6K+N77yf4oCZ4oCZJyxcXG4gICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICB9KTtcXG4gIH1cXG52YXIgZmFuID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9iYW5ndW1pXFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ30se1xcXCJyZXN1bHRfdHlwZScpWzBdKTtcXG4gICBmb3IgKCB4IGluIGZhbil7XFxuICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICB0aXRsZTpmYW5beF0udGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csJycpLFxcbiAgICAgICAgICAgaW1nOmZhblt4XS5jb3ZlcixcXG4gICAgICAgICAgIGRlc2M6ZmFuW3hdLmRlc2MsXFxuICAgICAgICAgICBjb250ZW50OmZhblt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywnJyksXFxuICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrZmFuW3hdLmdvdG9fdXJsKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgICAgfSk7XFxuICAgfVxcbnZhciBmYW4yID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9mdFxcXCIsXFxcImRhdGFcXFwiOicpWzFdLnNwbGl0KCd9LHtcXFwicmVzdWx0X3R5cGUnKVswXSk7XFxuICAgZm9yICggeCBpbiBmYW4yKXtcXG4gICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgIHRpdGxlOmZhbjJbeF0udGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csJycpLFxcbiAgICAgICAgICAgaW1nOmZhbjJbeF0uY292ZXIsXFxuICAgICAgICAgICBkZXNjOmZhbjJbeF0uZGVzYyxcXG4gICAgICAgICAgIGNvbnRlbnQ6ZmFuMlt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywnJyksXFxuICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrZmFuMlt4XS5nb3RvX3VybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgICAgIH0pO1xcbiAgIH1cXG4vL31cXG5cXG4gZm9yICggeCBpbiB4cyl7XFxuICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICB0aXRsZTp4c1t4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywnJyksXFxuICAgICAgICAgICBpbWc6J2h0dHA6Jyt4c1t4XS5waWMsXFxuICAgICAgICAgICBkZXNjOnhzW3hdLmRlc2NyaXB0aW9uLFxcbiAgICAgICAgICAgY29udGVudDp4c1t4XS5hdXRob3IsXFxuICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nK3hzW3hdLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbmNvbF90eXBlOidtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgICAgfSk7XFxuICAgIH1cXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7fWNhdGNoKGUpe1xcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciBrZXl3b3JkID0gTVlfVVJMLnNwbGl0KCdrZXl3b3JkPScpWzFdLnNwbGl0KCcmcGFnZT0nKVswXTtcXG52YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYyNzAyMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD14aWFvbWkmaGlnaGxpZ2h0PTEma2V5d29yZD0nK2tleXdvcmQrJyZtb2JpX2FwcD1hbmRyb2lkJm9yZGVyPXRvdGFscmFuayZwbGF0Zm9ybT1hbmRyb2lkJnBuPTEmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yNy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPTE2MjMwNzYxNDAmdHlwZT0yJnVzZXJfdHlwZT0wJnNpZ249NTA2NjIxNmZlYmIyOGE2MTk4MTJlODhlNWZmMWEwMzQnO1xcbnZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCx7fSkpO1xcbnZhciBsaXN0ID0gY29kZS5kYXRhLml0ZW1zO1xcbmZvciAobGV0IHggb2YgbGlzdCl7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6eC50aXRsZSxcXG4gICAgaW1nOnguY292ZXIsXFxuICAgIGRlc2M6eC5zaWduLFxcbiAgICB1cmw6XFxuJ2hpa2VyOi8vcGFnZS9zcz91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9Jyt4LnBhcmFtKyfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyt4LnRpdGxlKycjJytnZXRWYXIoJ3VhJyksXFxuICAgIGNvbF90eXBlOidtb3ZpZV8xX2xlZnRfcGljJ30pO1xcbn1cXG5zZXRSZXN1bHQoZCk7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV92ZXJ0aWNhbF9waWNcIixcIm5hbWVcIjpcIumhtemdoi3mkJzntKLkuoznuqdcIixcInBhdGhcIjpcInNzXCIsXCJydWxlXCI6XCJqczpcXG52YXIganNvbiA9IHt9O1xcbmV2YWwoJ2pzb249JyArIGdldFJlc0NvZGUoKSk7XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxuaWYgKE1ZX1VSTC5pbmRleE9mKCdwbj0xJicpIT0tMSl7XFxuZC5wdXNoKHtcXG50aXRsZTon4oCc4oCc5YWz5rOo4oCd4oCdJyxcXG51cmw6J2hpa2VyOi8vZW1wdHkjJytNWV9VUkwuc3BsaXQoJyMnKVsxXSsnJiYnK01ZX1VSTC5zcGxpdCgnbWlkPScpWzFdLnNwbGl0KCcmJylbMF0rYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcIiYmXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyYmJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcbmNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG59KTtcXG59XFxuXFxuZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC52bGlzdC5sZW5ndGg7IGkrKylcXG57XFxuIHZhciByID0ge307XFxuIHZhciBqID0ganNvbi5kYXRhLmxpc3Qudmxpc3RbaV07XFxuIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkqMTAwMDtcXG4gXFxuIC8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcblxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbmVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuXFxudmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpIT0tMSk/ai5waWM6J2h0dHBzOicgKyBqLnBpYztcXG5cXG4gci5waWNfdXJsID0gcGljcztcXG4gci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScrai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgXFxuXFxuIHIudGl0bGUgPSBqLnRpdGxlO1xcbiByLmRlc2MgPSAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZTtcXG4gaWYgKGoubGVuZ3RoIT1cXFwiMDA6MDBcXFwiKXtkLnB1c2gocil9O1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3pooTlpITnkIZcIixcInBhdGhcIjpcInljbFwiLFwicnVsZVwiOlwicHV0VmFyMigndWEnLCc7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDcuMO+8m++8myB3diBsaXRlIGJhaWR1Ym94YXBwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzguMC4zOTA0Ljk2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFQ3LzEwLjMgU2VhcmNoQ3JhZnQvMi42LjIgKEJhaWR177yb77ybIFAxIDcuMCl9Jyk7XFxuXFxucHV0VmFyKCdrZXknLGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKTtcXG5cXG5wdXRWYXIoJ1g1JyxcXFwiQGxhenlSdWxlPS5qczp2YXIganggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0Jyx7fSk7cmVmcmVzaFg1V2ViVmlldyhqeCtpbnB1dCk7J3RvYXN0Oi8v5pKt5pS+5LitJ1xcXCIpO1xcblxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JykpIHtcXG4gICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtcXG4gICB9XFxuXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnKSkge1xcbiAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCfop4bpopEnKTtcXG4gICB9XFxuXFxuaWYgKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwge30pPT0nJyl7XFxuICAgIGlmIChmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KSE9Jycpe1xcbiAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pKTtcXG4gICAgfVxcbiAgICBlbHNle1xcbiAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9MTAzMjU2ODgwJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCBcXFwi5YyX5Z+OJiYxMDMyNTY4ODAjI1xcXCIrcGljKTtcXG4gICAgICB9XFxufVxcblxcbmlmICghZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCB7fSkpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIFxcXCIxMDMyNTY4ODBcXFwiKTtcXG59XFxuXFxucHV0VmFyMignbGIyJyxmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIse30pKTtcXG5cXG5wdXRWYXIoXFxcIuino+aekOWPo1xcXCIsYGhpa2VyOi8vZW1wdHkjbm9IaXN0b3J5I0BydWxlPWpzOnZhciBkID0gW107ZC5wdXNoKHtkZXNjOiAnMjAwJyx1cmw6ICdmaWxlOi8vL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9iaWxpL3VwanguaHRtbCcsY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSd9KTt2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KS5zcGxpdCgvXFxcXFxcXFxuLyk7Zm9yKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKyl7dmFyIHQgPSB0aXRsZXNbaV0uc3BsaXQoXFxcIiYmXFxcIik7ZC5wdXNoKHt0aXRsZTpmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix7fSkgPT0gdFsxXSA/IHRbMF0gKyBcXFwi4oCY4oCY77yI5b2T5YmN77yJ4oCZ4oCZXFxcIiA6IHRbMF0sZGVzYzp0WzFdLHVybDp0WzFdICsgJ0BsYXp5UnVsZT0uanM6cHV0VmFyMihcXFwidWlkXFxcIixpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLGlucHV0KTtiYWNrKCk7XFxcInRvYXN0Oi8v5L+u5pS55oiQ5YqfXFxcIicsY29sX3R5cGU6ICd0ZXh0XzEnfSk7fXNldFJlc3VsdChkKTtgKTtcXG5cXG5pZiAoIWZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSkpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwgXFxcIuWFqOe9kVZJUCYmaHR0cHM6Ly9qeHguc215czguY24vaW5kZXgucGhwP3VybD1cXFxcbuWKoOmAnyYmaHR0cHM6Ly93d3cuY3Vhbi5sYS9tM3U4LnBocD91cmw9XFxcIik7XFxufVxcblxcblxcbmxldCBsb2NhbEh0bWwyID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCB7fSk7XFxubGV0IGdpdEh0bWwyID0gZmV0Y2goXFxcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9acnVpcnkvaGlrZXJ2aWV3L2h0bWwvamlleGkuaHRtbFxcXCIsIHt9KS5yZXBsYWNlKC9qaWV4aVxcXFwvamlleGkvZyxcXFwiYmlsaS91cGp4XFxcIik7XFxuaWYgKCFsb2NhbEh0bWwyKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFwiLCBnaXRIdG1sMik7XFxuICB2YXIgdGl0bGVzID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KTtcXG4gIHZhciB0ID0gdGl0bGVzLnNwbGl0KFxcXCImJlxcXCIpWzFdO1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLHQpO1xcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mjqjojZBcIixcInBhdGhcIjpcImZlZWRcIixcInJ1bGVcIjpcInZhciB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvaW50bC9mZWVkL2luZGV4P2FjY2Vzc19rZXk9JytnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSsnJmF1dG9wbGF5X2NhcmQ9MiZidWlsZD02MjI1MzAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmNvbHVtbj0yJmRldmljZV9uYW1lPSZkZXZpY2VfdHlwZT0wJmZsdXNoPTgmZm52YWw9NDY0JmZudmVyPTAmZm9yY2VfaG9zdD0wJmZvdXJrPTEmZ3VpZGFuY2U9MCZodHRwc191cmxfcmVxPTAmbW9iaV9hcHA9YW5kcm9pZCZuZXR3b3JrPXdpZmkmcGxhdGZvcm09YW5kcm9pZCZwbGF5ZXJfbmV0PTEmcHVsbD1mYWxzZSZxbj04MCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjIyLjUlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCx7fSkpLmRhdGEuaXRlbXM7XFxuZm9yIChsZXQgeCBvZiBsaXN0KXtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTp4LnRpdGxlLFxcbiAgICBkZXNjOnguY292ZXJfbGVmdF8xX2NvbnRlbnRfZGVzY3JpcHRpb24rXFxcIiBcXFwiK3guY292ZXJfbGVmdF8yX2NvbnRlbnRfZGVzY3JpcHRpb24rXFxcIiAgXFxcIit4LmNvdmVyX3JpZ2h0X3RleHQsXFxuICAgIHBpYzp4LmNvdmVyK1xcXCJAUmVmZXJlcj1odHRwczovL3d3dy5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgdXJsOlxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU95ZOU5ZOp4oSbJnVybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPVxcXCIreC5wYXJhbStcXFwi77yG77yGYnZpZD1cXFwiKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgY29sX3R5cGU6J21vdmllXzInXFxuICAgIH0pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mm7TlpJpcIixcInBhdGhcIjpcIm1vcmVcIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKSB7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aOqOiNkCcgPyBnZXRIZWFkKHJ4KSA6ICfmjqjojZAnLFxcbiAgICAgICAgdXJsOiAn5o6o6I2QJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfml7blhYnmnLonID8gZ2V0SGVhZChyeCkgOiAn5pe25YWJ8J+QpScsXFxuICAgICAgICB1cmw6ICfml7blhYnmnLonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+i/veeVqicsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2NvbGxlY3Rpb24/Z3JvdXA94pGg6L+955WqJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+e0ouW8lScgPyBnZXRIZWFkKHJ4KSA6ICfntKLlvJUnLFxcbiAgICAgICAgdXJsOiAn57Si5byVJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmlLbol48nID8gZ2V0SGVhZChyeCkgOiAn5pS26JePJyxcXG4gICAgICAgIHVybDogJ+aUtuiXjycgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9wd2QtbG9naW4nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfoh6rlrppVSUQnLFxcbiAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVVSURcXFxcbuS4jeefpemBk+aAjuS5iOafpe+8n2Lnq5nngrnlvIDoh6rlt7HnmoTkv6Hmga/vvIzplb/mjIl1aWTljbPlj6/vvIzor7floavlhaXnuq/mlbDlrZdcXFwifWAsXFxuICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknK2dldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JykpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfngrnotZ5rZXknLFxcbiAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScrZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfop6PmnpBrZXknLFxcbiAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO6Kej5p6QKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJytnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+ivhOiuuuWMujog4oCc4oCc5beyJysgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3JlcGx5X3R5cGUnLCBnZXRWYXIoJ3JlcGx5X3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcigncmVwbHlfdHlwZScpO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eCuei1nibmipXluIE6IOKAnOKAnOW3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGlrZV90eXBlJywgZ2V0VmFyKCdsaWtlX3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcignbGlrZV90eXBlJyk7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5paw55WqXCIsXCJwYXRoXCI6XCJuZXdiZ21cIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKSB7XFxuXFxuICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvdGltZWxpbmU/YWNjZXNzX2tleT0mYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmaWx0ZXJfdHlwZT0wJm1vYmlfYXBwPWFuZHJvaWQmbmlnaHRfbW9kZT0wJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPTE2MzU5NTI4NDAmc2lnbj02ZTRkZjQ1NDJkMzhlZWUyZmFiZjIxMjg4NWI5MGM2NCc7XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgc291cmNlX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcbiAgICAgICAgdmFyIGRhdGVsaW5lID0gW3tcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzRdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWJjeaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjBcXFwiXFxuICAgICAgICB9LHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzVdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuaYqOaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjFcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs2XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLku4rml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIyXFxcIlxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbN10sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5piO5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiM1xcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbOF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5ZCO5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiNFxcXCJcXG4gICAgICAgIH1dO1xcbiAgICAgICAgaWYgKCFnZXRWYXIoJ2lkJykpIHtcXG4gICAgICAgICAgICBwdXRWYXIoJ2lkJywgJzInKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBpZCA9IGdldFZhcignaWQnKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcwJyA/IGdldEhlYWQoJ+WJjeaXpScpIDogJ+WJjeaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcwJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMScgPyBnZXRIZWFkKCfmmKjml6UnKSA6ICfmmKjml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzInID8gZ2V0SGVhZCgn5LuK5pelJykgOiAn5LuK5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzInKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICczJyA/IGdldEhlYWQoJ+aYjuaXpScpIDogJ+aYjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICczJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnNCcgPyBnZXRIZWFkKCflkI7ml6UnKSA6ICflkI7ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnNCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IGxpc3QgPSBkYXRlbGluZVtpZF0uY29kZS5lcGlzb2RlcztcXG4gICAgICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcbiAgICAgICAgICAgIGxldCB0eXBlID0gKHgucHVibGlzaGVkID09ICcxJyA/ICflt7Llj5HluIMnIDogJ+acquWPkeW4gycpO1xcbiAgICAgICAgICAgIGxvZyh0eXBlKVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlLFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn4oCY4oCYJyArIHR5cGUgKyAn4oCZ4oCZXFxcXG4nICsgeC5wdWJfaW5kZXggKyAnXFxcXG7mm7TmlrDml7bpl7TvvJonICsgZ2V0SGVhZCh4LnB1Yl90aW1lKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIHgudXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICBpbWc6IHguY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRIZWFkKCfpk77mjqXngrjkuobvvIznrYnkv67lpI0nKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3nlarliafntKLlvJVcIixcInBhdGhcIjpcInN5XCIsXCJydWxlXCI6XCJjb25zdCB7IENhdGVnb3JpZXNIZWFkZXIgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NhdGVnb3JpZXMtaGVhZGVyXFxcIilcXG5cXG4vKipcXG4gKiDojrflj5bliIbnsbvmlbDmja7mupDvvIzlj6/liqjmgIHlj6/pnZnmgIHvvIzoh6rlt7HmoLnmja7lrp7pmYXmg4XlhrXlpITnkIZcXG4gKiBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvXFxuICovXFxubGV0IG1DYXRlZ29yaWVzID0ge31cXG5sZXQgY2F0SW5WYXIgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJylcXG5pZiAoZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgJycpKSB7XFxuICAgIG1DYXRlZ29yaWVzID0gSlNPTi5wYXJzZShjYXRJblZhcilcXG59IGVsc2Uge1xcbiAgICBsZXQgY2F0VXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC8nXFxuICAgIGxldCBjYXRTcmMgPSByZXF1ZXN0KGNhdFVybClcXG4gICAgLy8gbG9nKGNhdFNyYylcXG4gICAgbGV0IGNhdFJlZ2V4ID0gL3dpbmRvd1xcXFwuX19JTklUSUFMX1NUQVRFX189KC4qPyk7XFxcXChmdW5jdGlvblxcXFwoXFxcXClcXFxcey9cXG4gICAgaWYgKGNhdFJlZ2V4LnRlc3QoY2F0U3JjKSkge1xcbiAgICAgICAgLy8gbG9nKFJlZ0V4cC4kMSlcXG4gICAgICAgIGxldCBjYXRlZ29yeSA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IG1GaWx0ZXJzID0gY2F0ZWdvcnkuZmlsdGVycztcXG4gICAgICAgIC8vIGxvZyhtRmlsdGVycylcXG4gICAgICAgIG1GaWx0ZXJzLm1hcChmaWx0ZXIgPT4gbUNhdGVnb3JpZXNbZmlsdGVyLmtleV0gPSBmaWx0ZXIubGlzdClcXG4gICAgICAgIGxldCBvcmRlcnMgPSBjYXRlZ29yeS5vcmRlcnNcXG4gICAgICAgIGxldCBtT3JkZXJzID0gW11cXG4gICAgICAgIG9yZGVycy5tYXAob3JkZXIgPT4ge1xcbiAgICAgICAgICAgIGxldCBtT3JkZXIgPSB7fVxcbiAgICAgICAgICAgIG1PcmRlci5uYW1lID0gb3JkZXIudGl0bGVcXG4gICAgICAgICAgICBtT3JkZXIudmFsdWUgPSBvcmRlci5rZXlcXG4gICAgICAgICAgICBtT3JkZXJzLnB1c2gobU9yZGVyKVxcbiAgICAgICAgfSlcXG4gICAgICAgIC8vIGxvZyhtT3JkZXJzKVxcbiAgICAgICAgbUNhdGVnb3JpZXNbJ29yZGVyJ10gPSBtT3JkZXJzXFxuICAgIH1cXG4gICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgSlNPTi5zdHJpbmdpZnkobUNhdGVnb3JpZXMpKVxcbn1cXG5sZXQga2V5cyA9IE9iamVjdC5rZXlzKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhtQ2F0ZWdvcmllcylcXG4vLyBsb2coa2V5cylcXG4vKipcXG4gKiDnu4TlkIjlvZPliY3liIbnsbvpk77mjqVcXG4gKi9cXG5sZXQgdHJ1ZV91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwsIE1ZX1VSTClcXG50cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/J1xcbmZvciAobGV0IGl0IG9mIGtleXMpIHtcXG4gICAgbGV0IGNhdF91cmwgPSBnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI1xcXCIgKyBpdCwgaXQgPT09ICdvcmRlcnMnID8gJzMnIDogJy0xJylcXG4gICAgdHJ1ZV91cmwgKz0gKGNhdF91cmwgPyAnJicgKyBpdCArICc9JyArIGNhdF91cmwgOiAnJylcXG59XFxuLy8gbGV0IHBhZ2UgPSAxXFxuY29uc3QgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdXFxudHJ1ZV91cmwgPSB0cnVlX3VybCArXFxuICAgICcmc3Q9MSZzb3J0PTAmc2Vhc29uX3R5cGU9MSZwYWdlc2l6ZT0yMCZ0eXBlPTEnICtcXG4gICAgJyZwYWdlPScgKyBwYWdlXFxuLy8gbG9nKHRydWVfdXJsKVxcblxcbmNvbnN0IGVtcHR5ID0gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFxuQ2F0ZWdvcmllc0hlYWRlclxcbiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkoJ25hbWUnLCAndmFsdWUnKVxcbiAgICAuZ2V0KGQsIG1DYXRlZ29yaWVzLCBwYWdlKVxcbi8qKlxcbiAqIOiOt+WPluW9k+WJjeWIhuexu+mhtemdoua6kOeggVxcbiAqL1xcbnRyeSB7XFxuICAgIHZhciBzeWxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodHJ1ZV91cmwsIHt9KSkuZGF0YS5saXN0O1xcblxcbiAgICAvKipcXG4gICAgICog5YiX6KGo5pWw5o2u5rqQXFxuICAgICAqL1xcbiAgICBmb3IgKGxldCBkYXRhIG9mIHN5bGlzdCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSAvKisgJy8nICsgZGF0YS5pbmRleF9zaG93Ki8gLFxcbiAgICAgICAgICAgIGRlc2M6IGRhdGEub3JkZXIsXFxuICAgICAgICAgICAgaW1nOiBkYXRhLmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGRhdGEubGluayArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5Yqo5oCB5YiG57G75qih5Z2XXCIsXCJwYXRoXCI6XCJjYXRlZ29yaWVzLWhlYWRlclwiLFwicnVsZVwiOlwianM6XFxuLyoqXFxuICog5L2/55So6K+05piO77yaXFxuICogMS7mj5DliY3lu7rnq4vlpb0g5YiG57G75omA5bGe57G75Z6L5ZKM5YiG57G75YiX6KGoIOeahOWvueW6lOWFs+ezu++8jOWNsyBnZXQg5Ye95pWw5Lit55qEIGNhdGVnb3JpZXNcXG4gKiAyLuiuvue9ruWtkOWIhuexu+aVsOaNrueahCBrZXnvvIzosIPnlKggc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkodGl0bGVLZXksIHVybEtleSlcXG4gKiAzLueEtuWQjuiwg+eUqCBDYXRlZ29yaWVzSGVhZGVyLmdldChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UpXFxuICpcXG4gKiDmlK/mjIHpk77lvI/osIPnlKjvvIzkuIDlj6Xor53ljbPlj6/osIPnlKjnlJ/miJDliIbnsbvvvIzljbPvvJpcXG4gKiBDYXRlZ29yaWVzSGVhZGVyXFxuICogICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KHRpdGxlS2V5LCB1cmxLZXkpXFxuICogICAgLmdldChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UpXFxuICpcXG4gKiBAdHlwZSB7e3NldFN1YkNhdGVnb3JpZXNJdGVtS2V5OiBDYXRlZ29yaWVzSGVhZGVyLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5LCBnZXQ6IENhdGVnb3JpZXNIZWFkZXIuZ2V0LCBjYXRlZ29yaWVzS2V5OiB7dGl0bGU6IHN0cmluZywgdXJsOiBzdHJpbmd9fX1cXG4gKi9cXG5sZXQgQ2F0ZWdvcmllc0hlYWRlciA9IHtcXG4gICAgY2F0ZWdvcmllc0tleToge1xcbiAgICAgICAgc3ViX2NhdGVnb3JpZXM6ICcnLFxcbiAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgdXJsOiAnJyxcXG4gICAgfSxcXG4gICAgLyoqXFxuICAgICAqIDEu6K6+572u5LuO5YiG57G75YiX6KGo5Lit5ou/55qE5a2Q5YiG57G755qE5pWw5o2uIGtlee+8jFxcbiAgICAgKiAgIOagueaNriBrZXkg5ou/5Yiw5pWw5o2u5ZCO77yMXFxuICAgICAqICAg5Lya6Ieq5Yqo6LWL5YC857uZIHNjcm9sbF9idXR0b24g55qEIHsgdGl0bGU6IGl0ZW1bdGl0bGVLZXldLCB1cmw6IGl0ZW1bdXJsS2V5XSB9XFxuICAgICAqXFxuICAgICAqIEBwYXJhbSB0aXRsZV9rZXkgdGl0bGUg55qEIGtleVxcbiAgICAgKiBAcGFyYW0gdXJsX2tleSB1cmwg55qEIGtleVxcbiAgICAgKi9cXG4gICAgc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkgOiAodGl0bGVfa2V5LCB1cmxfa2V5KSA9PiB7XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudGl0bGUgPSB0aXRsZV9rZXlcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmwgPSB1cmxfa2V5XFxuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllc0hlYWRlcjtcXG4gICAgfSxcXG4gICAgc2V0U3ViQ2F0ZWdvcmllc0tleTogKHN1Yl9jYXRlZ29yaWVzX2tleSkgPT4ge1xcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnN1Yl9jYXRlZ29yaWVzID0gc3ViX2NhdGVnb3JpZXNfa2V5XFxuICAgICAgICByZXR1cm4gQ2F0ZWdvcmllc0hlYWRlcjtcXG4gICAgfSxcXG4gICAgLyoqXFxuICAgICAqIDIu6I635Y+W5YiG57G75aS06YOoXFxuICAgICAqXFxuICAgICAqIEBwYXJhbSBsYXlvdXQg5b2T5YmN55WM6Z2i77yM5Y2z5bi455So55qEIGQucHVzaCDnmoQgZFxcbiAgICAgKiBAcGFyYW0gY2F0ZWdvcmllcyDliIbnsbvmiYDlsZ7nsbvlnovlkozliIbnsbvliJfooajnmoTlr7nlupTlhbPns7vooajvvIxcXG4gICAgICogICAgICAgIOWmgu+8mlxcbiAgICAgKiAgICAgICAge1xcbiAgICAgKiAgICAgICAgICAgXFxcIuW5tOS7vVxcXCI6IFt7IFxcXCJuYW1lXFxcIjogXFxcIjIwMjFcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiMjAyMVxcXCIgfSwgeyBcXFwibmFtZVxcXCI6IFxcXCIyMDIwXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcIjIwMjBcXFwiIH0uLi5dLFxcbiAgICAgKiAgICAgICAgICAgXFxcIuaOkuW6j1xcXCI6IFt7IFxcXCJuYW1lXFxcIjogXFxcIueDreW6plxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCJob3RcXFwiIH0sIHsgXFxcIm5hbWVcXFwiOiBcXFwi5pe26Ze0XFxcIiwgXFxcInZhbHVlXFxcIjogXFxcInRpbWVcXFwiIH0uLi5dLFxcbiAgICAgKiAgICAgICAgfVxcbiAgICAgKiBAcGFyYW0gcGFnZSDpobXnoIFcXG4gICAgICogQHBhcmFtIHVybExpc3RlbmVyIOmineWkluWkhOeQhiBidXR0b24g55qEIHVybO+8jOmcgOimgSByZXR1cm5cXG4gICAgICovXFxuICAgIGdldDogKGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSwgdXJsTGlzdGVuZXIpID0+IHtcXG4gICAgICAgIC8vIGxvZyhjYXRlZ29yaWVzKVxcbiAgICAgICAgLy8g5YiG57G75omA5bGe57G75Z6L55qE5YiX6KGo77yM5aaC77yaWyBcXFwi5bm05Lu9XFxcIiwgXFxcIuaOkuW6j1xcXCIgXVxcbiAgICAgICAgbGV0IGNhdGVnb3J5X25hbWVzID0gT2JqZWN0LmtleXMoY2F0ZWdvcmllcylcXG4gICAgICAgIGxldCB0eXBlcyA9IFtdXFxuICAgICAgICAvLyDmoLnmja7lr7nlupTlhbPns7vooajmi7/liIbnsbvliJfooahcXG4gICAgICAgIGNhdGVnb3J5X25hbWVzLm1hcChjYXRlZ29yeV9uYW1lID0+IHtcXG4gICAgICAgICAgICAvLyDov5nph4zkvJrmi7/liLAg5bm05Lu9IOaOkuW6jy4uLiDlhbbkuK3kuIDkuKpcXG4gICAgICAgICAgICB0eXBlcy5wdXNoKGNhdGVnb3JpZXNbY2F0ZWdvcnlfbmFtZV0pO1xcbiAgICAgICAgICAgIC8vIOi/memHjOS4i+mdouWvuSB0eXBlcyDnmoTlgLzov5vooYzlpITnkIZcXG4gICAgICAgIH0pXFxuICAgICAgICBjYXRlZ29yaWVzID0gdHlwZXM7XFxuICAgICAgICBsZXQgaW5pdF9jYXRlID0gW11cXG5cXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xcbiAgICAgICAgICAgIGluaXRfY2F0ZS5wdXNoKFxcXCIwXFxcIilcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcF9qc29uID0gZ2V0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KGluaXRfY2F0ZSkpXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcblxcbiAgICAgICAgaWYgKHBhcnNlSW50KHBhZ2UpID09PSAxKSB7XFxuICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICog6YGN5Y6G56ysIGluZGV4IOWxguWIhuexu1xcbiAgICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcnlfbmFtZSA9IGNhdGVnb3J5X25hbWVzW2luZGV4XVxcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXNfa2V5ID0gQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnN1Yl9jYXRlZ29yaWVzXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IHN1Yl9jYXRlZ29yaWVzX2tleSA/IGNhdGVnb3J5W3N1Yl9jYXRlZ29yaWVzX2tleV0gOiBjYXRlZ29yeTtcXG4gICAgICAgICAgICAgICAgLy8gbG9nKGNhdGVnb3J5KVxcbiAgICAgICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgICAgICog5Zyo56ysIGluZGV4IOWxguWIhuexu+S4remBjeWOhuivpeWxguaJgOacieWtkOWIhuexu1xcbiAgICAgICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICAgICAgc3ViX2NhdGVnb3JpZXMuZm9yRWFjaCgoaXRlbSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZV1cXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSBlc2NhcGUoaXRlbVtDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudXJsXSlcXG4gICAgICAgICAgICAgICAgICAgIGlmICh1cmxMaXN0ZW5lcikgdXJsID0gdXJsTGlzdGVuZXIub25EZWFsKGl0ZW0sIHN1Yl9jYXRlZ29yeV9uYW1lLCB1cmwpXFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogIzA5OEFDMVxcXCI+JyArIHRpdGxlICsgJzwvc3Bhbj48L2I+JyA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCh1cmwpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShwYXJhbXMuY2F0ZV90ZW1wKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNcXFwiICsgcGFyYW1zLnN1Yl9jYXRlZ29yeV9uYW1lLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yeV9uYW1lOiBzdWJfY2F0ZWdvcnlfbmFtZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9XFxufVxcbiQuZXhwb3J0cy5DYXRlZ29yaWVzSGVhZGVyPUNhdGVnb3JpZXNIZWFkZXJcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3op4bpopFcIixcInBhdGhcIjpcInZpZGVvXCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9mb2xkZXIvc3BhY2U/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwX21pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKSArICcmc2lnbj0wYTUxYjc3MmY4MWRjNzgxMmNkNjYyMjZhODMyNTM4Myc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkuZGF0YTtcXG5mb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB4Lm5hbWUsXFxuICAgICAgICBpbWc6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSNcXFwiK3guaWQrXFxcIkBsYXp5UnVsZT0uanM6cHV0VmFyKCdjaGFuZ2UnLGdldFZhcignY2hhbmdlJyk9PWlucHV0LnNwbGl0KCcjJylbMV0/JzAnOmlucHV0LnNwbGl0KCcjJylbMV0pO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey5Yi35pawJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ2NoYW5nZScpID09IHguaWQpIHtcXG4gICAgICAgIHZhciBsaXN0MiA9IHgubWVkaWFMaXN0UmVzcG9uc2UubGlzdDtcXG4gICAgICAgIGxvZyhsaXN0MilcXG4gICAgICAgIGZvciAodmFyIGEgaW4gbGlzdDIpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdDJbYV0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogbGlzdDJbYV0uY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvY29sbGVjdGlvbj91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2lkc++8n++8n2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsn77yG77yGYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzbvvIbvvIZidWlsZD02MTMwNDAw77yG77yGY19sb2NhbGU9emhfQ07vvIbvvIZjaGFubmVsPW1hc3Rlcu+8hu+8hm1lZGlhX2lkPScrbGlzdDJbYV0uaWQrJ++8hu+8hm1pZD0nK2dldFZhcignc3RhcmlkJykrJ++8hu+8hm1vYmlfYXBwPWFuZHJvaWTvvIbvvIZwbGF0Zm9ybT1hbmRyb2lk77yG77yGc19sb2NhbGU9emhfQ07vvIbvvIZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0TvvIbvvIZ0cz0nK3RzKyfvvIbvvIZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JyxcXG4gICAgICAgICAgICAgICAvLyBkZXNjOiBhWydtZWRpYV9jb3VudCddLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcblxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLei/veeVqlwiLFwicGF0aFwiOlwiZmFuanVcIixcInJ1bGVcIjpcIiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfntKLlvJUnID8gZ2V0SGVhZChyeCkgOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJ+e0ouW8lScgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICB9KTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73liadcIixcInBhdGhcIjpcImRzalwiLFwicnVsZVwiOlwiICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+e0ouW8lScgPyBnZXRIZWFkKHJ4KSA6ICfntKLlvJUnLFxcbiAgICAgICAgdXJsOiAn57Si5byVJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgIH0pO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLeaUtuiXj1wiLFwicGF0aFwiOlwiY29sbGVjdGlvblwiLFwicnVsZVwiOlwianM6dmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoTVlfVVJMKSkuZGF0YTtcXG52YXIgcmVzb3VyY2VzID0gJyc7XFxuZm9yICh2YXIgeCBvZiBjb2RlKXtcXG4gICAgdmFyIHJlc291cmNlcyA9IHJlc291cmNlcyArIHguaWQgKyAnOicgKyB4LnR5cGUgKyAnLCc7XFxufVxcbnZhciByZXNvdXJjZXMgPSByZXNvdXJjZXMuc2xpY2UoMCxyZXNvdXJjZXMubGVuZ3RoLTEpO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2luZm9zP2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZSZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKycmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnJlc291cmNlcz0nK3Jlc291cmNlcysnJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nK3RzKycmc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNyc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLHt9KSkuZGF0YTtcXG5mb3IgKHZhciB5IG9mIGxpc3QgKXtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTp5LnRpdGxlLFxcbiAgICBpbWc6eS5jb3ZlcixcXG4gICAgZGVzYzon5pKt5pS+6YePOiAnK3kuY250X2luZm8ucGxheSsnICDlvLnluZU6ICcreS5jbnRfaW5mby5kYW5tYWt1LFxcbiAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgeS5idmlkICsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgIGNvbF90eXBlOidtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3nmbvlvZVcIixcInBhdGhcIjpcImxvZ2luXCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKCdMbGUwbmF5ZHN6UTI1MEloT3lkUkExa0pyMFhuTmEvckZsc2ppRUtaVzdyZXRaRmV1SE5KbFBLV01FNGE5QmNmQjlCMGhUYXdZTTh2K2hFd3pGM1JWTjJzUi9pSDhOdnlIWTZ1ektOZ2pNYko4NUdMRWcwSnlqUEl0ZkdHUmd3SkZVVk5MMUlMZVJOYmFlMzlYVnJvRDdXS1VLQlBmdjdId3FqMkhZRkg1dVFMcE9WWnZHNFVjWU96QXM3ajhOaWFQRVVKTVM0MjRCa2JuczFOZjZGSURYbGZrTklJc1dCSFdSZE82bXA3M1Z5MnZ1NWhnMWFHMEFWZWs1K3BRY3Fha3hFTTljV0dnQ0pDNW1LcFVpWlNFdFA5MnNLQTlTSysvTkhzcWYxM0NPdFFSaWl4NmdGaHlGaExlejcrR3B1U2JMSDEzazFGRFVaa2lsWTdPQlA4eUNaUCtZbTQxWWhpL3lJVHgzRWxMbWdqaUJleGowcVRManJLSVhueDRERFhpaXBTdy9ZcFVOZHF0Z1VYSE5pOThhN2NHdExFKzk1QXFrMkRjVi9IM09HNWhwc3dTSEMyK2lsclJMUDgrVHlMVG9nckZVYUpZTXhPbXJXd0FqVU0xRmZMcy9NU3g2MDFXL3VlRkRBbWhPL1pab1Vad2YzTVliaHRrditCeGd5Ry83NldmREFRYkdBUko5NE5halo5cHp6dmN1WElFcmdyMUQvUHVnRm1oT1dIay9NU2RGRGxCcU1EcEU4eDk1WWo2dEw0d0ZzdzJPYUdPb2U4TWhzbmlGWUVGOEJxTVBSZWQwejdjQkM0Ukd4RDVOZ1YxRktXSEFQZ1pQWUZLamdPOWdsTkp2NzFJU2dJbzlTS1JCRWpLbUU0Y0V2Yi9rSkVPQ0VETGpCUXJWc09UMTFPdVpjWnVkQ1pFT1R6bXJpR0hkUGZmbEtCckZzRWg3eWxVdFBaWUVjRXBDeTFXaDFlMVl4TktaaGJPdWswMnd0QTdGZkhOUDBEcUlaODNGOFJGRzM4UlkzNmZGSS8vekxwQ01FTThVWGh6bGp3NXFvU1B2emZoZVIxL0dGM01qakZmc3pYWjNVQ3ZjQmcyd0MxT2tBVktwMHVTY0dMbWVxNlFhRWJRTjJ1bnowMnBwRlY3ZUs5SDczeUQxRUVsTktDUUNra21CNmR4cHF0a1Y2SmhSc3hpZ01jZVhuNGRVR3QrQXRma0EyS3Z5bWU1cmt1cHBCY2VGdk1maElGc3hZR1IyVUU5K294NmtmbFlCdFBwNTVRNnVsSUt5ZGhyazVUQVR6TTJpdjlmOXhxWXBKSUlCbnRJVklvZjNPYW5ISldyRXR4UTJjMWdjdk90L1diRS9sa05kclEzM0lPWXJPRmIyY2JaNE0vbGg1blZ0emlqdnBZZTBNNk81ditJb1pNcE9pVnFzZTd5TmlYaEFIeEUwNXppaVZjajlwaXpwV3pJZWJ6TzRnK0trYXFKckJTNnl6NVFYbWlGY1dWRVNJSUlvdllIZUNLUkRMZ0JvanFKZFRlSVhhUi9LZTQ5c3QwM1gySFJ3MnIwQjBNbmlmOHRFUGRhMWdsY0JMc1RFWkVXMmhia2R0b0VpY0lSRnZraTU1eDlIUXRRVDR6cDJUV3AzYXU3VEl6d0RpdENVYmJET1YxekZnU0hoMDg3M0xseUJLNEs5US96N29CWm9UbGg1UHpFblJRNVFhakE2UlBNZmVXSStyUytNQmJNTmptaGpxSHZESWJKNGlCcCt4WGhqYysycnZpRGFBT3lGQzl1bHZreHphK1RXNE1hdDBoeHRZRHJJbCtEcG91ZWp5SU1UVzhEc3ZYeFBYQ0FRYm13R2xERUFmT2l5cXRxTFE5SGY4Z0RYRTM1UTdheTB5QUJFZWoxcUtXZ3JqL1luQmJZL2RZQU9QU0hwbWxkZEZMSm5LcEFwZE1YdllCc3dyV0YwQ1JSU2IxczdDWlJnTWZPUXpLNkl6Ni90ZWhhc21PczdNbDl3L0hwbjVuS2gxMCtuMGlHWE12eDVJSStTR3BvTHVlQ3RSbUo3VVZWQ3RERzZ4ZXZ4WU1tMDRzQUdHR0phQ0RBaEdIOGljYmhJRTJiK29xREZFcG1VMGVZN1J0Rzc5aFBoTCtnWFlPeVlOVXZKcWVqbGJaMS9PZHZMNW5ZeTZtMzBHd2wzejd3NWVzbFpDVUEwa2FSczVrbVVPTHZMMFFRUEQ3NGZhZ0FkcUdzTEhVR0RXYjRCekNMRjJNWUxIeStEc2NrSzNGWUpNdzBVNXFON0w3MDBzVlNhbGY2dEs5NmRXcXpuNWVJcmV3ZjFpR284M0ljd3o5bzgxSm11S0ExTHBJU1M5MDk4bndBeDFxUDFGelBjd0loVFNWdVI4K0FvbzFwM0RpMFdMd05LUU5PSTh4NzVEbWFFNkJMUGlEa2FETEtKeWMrYnpYMGhJQzNzUGIyK2Rmdmxrc0NuSzIyY0doSzI1RnM5T0ZSM3JGL1ZGVlNSYkRHNys3QXFPa0UyNGJva0VVamQ4blM1SGpxcDNEL3VrKzBYekJ5OTIyMlg2YkptSmh3RmxLejQ2VEJWWGV6em0zZHpRVzdPbCswT3FmL0V4MkFZK3J3UCtNNnhGUkhVWC9qMkdjR2E1bWhiSlV6UlJCZE81SXByVTJOczZIdFNYQzlJcWN4VzFWbDViQ09iTUc5K0h2dnp1MHNHN0FXTmd1WkpDc3hrSlhoaGd3ZjJHQjZGUHU2K29GUno2RDRBMDVzc0RzTExWeW1aNWNnVGJEY2JlcTE5VW1pWWFtM1BuN3FXSWNqdWg5T3NONHRpRlRyclVFUFpJUlg5WGswVUdEWWZhYlExcFhmeE0vK3lTaDhxN2R3blZKL2c3bHVpaEdPZWVOd0hYQUZBeTRuM2FjUEgyWEJjL21zeDVYS2dJcmVPUk1WWS9jRmI5S2NtM29XWnp6SzYrSFNQODV0a0ZLS201NWhnOE14d2k1SXg5UlFFL3BHQXgxY3NvdlNwM2pSUDBoNjJvNk5oRmt0Q0RLV3pqRVVsOWJtYTI4Zlp5aVk0ZFhCRXNIQk9wS3ZCekFBMGxSa2V6VG5FdnZYczlaNTVVckFhOFpoQUZ1eDZaRU53NGNNVEl1U2tWZncrVi9VL21vbWx0Sjl2R1BnaXFiNW5abDlLdTdkMFJPVjE1SjNRQXNiaE94VDZTZ2tJVnVndVZhVFZSY2owSFcrbU1OWUtiUXluck5SQXFLRGVKcXVWeGM5SGxQTTZMOHFQblpJV2JiSEFmVWZHYncwbFJsd1N1T3BGNytBMldKTFo0WHpTZ0hiY01Ya3VselBQRFA5L2NhUklCOGUyVmt6RVpTUG5VaVpBcFdQNndXdXNIdUIzOVdBTTc4K05CaTRCcDJteFdqTEtITFdRTURlSVhYaGR4ZWNLNXFVVWZZTGdJVGloOURlRnBnTE5XY0JMR1FGYmRTTmtKM05XcGNHNTZEYWpESXVMVWE4azAwaTk0Y0p3QXpNa0pCeE5KYjVlaEJSa1Z2V1hvc210SkJNZFJmNk5FYnNWOXU4dnBaak5Fb2dVa25tbHRKOXZHUGdpcWI1blpsOUt1N2QxWnFUUHpvcHdaaGgraXREcFViMExyMjdjNXdOQUFFanJwaE9xZmUwTmozOUNOVzBMSDRXeGpmMmx3bHhNdE9LUjFIUUwvQ1B3NTF5eVlKL0xWclF6K2lmM2lJQk5VNG5DZ09idVc1SlVMVHZzUXNzMlJuZUxDdzZycGh4Z01zZGF3TUVnWjlxQ3JDTTd5VE0wRXlsRnhmamlJWktxYksxMEJhZTJOb0hEK0d1b1VLQVFwNVN1NEFxWFNmS0x6bXg0aFdibVNpTlY3bUNCL3JkdzF5YnNQdmdBRmNHODVONTNrTmp6Y1B2YktMT094SFhIWVZXQ2xCbUpwcndKdEhBNkIxV1pwR1dSeDVNL2dEbXNHelZSbVZ1QkR2bVNBWk13SWVWcjViekRFODZtME5xY21nVE5lcHh3cUIreUJCcDVLemQ0MkVBUWh0MkVLNVQyek14dmdUemVTL3ozSy9xNWxSSGwxekswSi9zUXdMeDl6OGxNVmc5UkJiQWUvZWIyMFZvd3pjcVBkZS9xaTBqSE13R2NNYUM5ZHV5VzU2d2xHT3Nua2JleUJRL1BmUlNTcmtVRy92Y2FDYlRhNElUODRaenRwTlFSdmJlVW5JQW9Qa1cvZVo2d09VaWE0SnN5YXc5OVdhOCtFNExqRG1aMHpSaG5TSGdVeUMveWI5clpUMmxFMVM3SkJJazdZWlBYeUEwMGEyTGdLRkc4OFl6VjgwaGkrQVZUd1JaUGs5d2xPN2dSUzJOUi81NzduSXhHMEgyMmxsRnNjbU4xTGhJOTFGRDJWYlZYYnFpS1VWakpjVm42L3NRY1R3d3o3dHZCNno5eU1tckRseUNNdnlVZHdHSTZ1cjlFYWM0cVc2RVV6MXhIMnk1VEk4QWZoeHh4T3JBUVpuRVJiVE1JQ2RmS0dRR0RKZS9UZEtSS1F0Z2JwYjVNYzJ2azF1REdyZEljYldBNnpEUHUyOEhyUDNJeWFzT1hJSXkvSlJOZHZzWDZEbEtkWXdMbkZVUWoydDZIUUhodGprT2xpK3RjT25SbGpBYTMyb3JmeDc5Vk91dmlOcSttT3FSMU4rQ0dSRjJibUtVMWtwREFyeDRWekRkV0pkZEVyYStPa0ZuT05FR3o0WWVjd0VSWlVkNzcrbm5QTDJNb0NNbUVEWWN2WElzMkV1Wkhka1RmbjFpd2VvZ0QwMVFmd3FaSE5GOEh2bEJXTVUvZjZFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FSNWViTnl4cUZYaExjMitvZWRLOEpFb0xvTUVRNUQzZkphcllnZDlqeTZmT2lCa0c4QzlJSVRCOG15dHl5c3djS3R3aHkxLzFXYkhPN0N6L1JkcVZjeUozNEEycTJaM3l1aTFRNWExb1BtTzBOV0xmbnlhNCtzUk5RcmtzaVE0SHVPMjZHYVpVUjhrV3pGMU94ZGR1YVBWeElOTWI2NThjc1hWdURHWjVNWXBXZGJja0ZXNmVZUEZpdSt4U0RDL2VEenNYQUg2RkwzUFY4T3BEVVBCbXBUZWsyWFhmZUtkcVUycFM5bTdTQ2lDQjV1MnFiaUtDMmM5dkJWMjRNNnM4UmE0aG1kK1BhajRGVHl0djM2U0gxYkxLOHRJMWxaeit3aWYrOVpJQWRUMjJjcjU3anEreXBNUGVOMXk1OURxdjdwc2hEK0pUSThVZ2RTNFFWbEN3RjE3WXJ2SkhQRDQyS0ZFYmdRWSsrMGowZGFseUhZY2dmNThReUFsOStubkJKWlZVVmxJaWxRNnFFUHNIemI2ck1iVjY3WVNxWkhjTHZmQ1RvYlJpNHBhQkNFVXhjeU5MUXZKU0tjS3BaQXVmMis4Szgxekt5ejNNZEVjdXJ0c2huc3hRQStvY0RDMk95NThpeUNLNmRTaklyVFBpRkZRODBCbXBhMkQzbHNjTFZtWTVJUjRvazl0Z2RCZVhJNlhaOHUyazlLTEpXZCtGcXNmOFlPUUd4TzZFSDJjQ0tPMnUwKzNGL0dPejYrL09ydXRMYWhxUjJta1ZHSWRKS3VYZVlHc1puREJnZUpnQkpaOHJJSEMwQzBOV0xMeGlqTExGSmZ6aTBwekdJUkhXNExBSkFoTy9mTHBTTDUwUmxyaE1ZdmJRczRvWnUxcGUrNzlYVDVSUjg4ZGxYczFyNkQ0c0pIWWg2Kzd4M2tQUXVNbHM5cmMxbnl3ekJkbDM1Q0laeEV3NmNBQ2pQOFk0ZG42endOWVBudDlRbUcySVY0WjRyTVZ3STVwWlFpbVY0Y0IxSnlwL3lLM3ZPY0ZlcFdiYTBpTkw3eEFoRUdEdHM4STdoSy81TkhTQ3p3czY3VFNrSjhVSHl3R2t0U1RKQ1QwMTV5cFFDYVNuS21PT3FVaW14Q2FoZlM0ZTRmOVh0ZkJsU2xHV2NaK3l5dkxTTlpXYy9zSW4vdldTQUhVOWp4c0NQMnBLOElwSDhqUnlhRHhhaUdGTHhNbVF4YzVrRGdnNnZHZFA2S3kyNEEyQTBlQmllWGJnUGZYeUhzODJSNDU2OTIySnowcFZBR3NqUDQ0M214aUUrbzZXdjNMbmRubTArRi9RMUhrdjc0UGR2SW1IRE40dXJHRjh0RUIrRGxDRlErbEZTcWgrYkNQSXZoemhlNk54enE4RGgraW96dW5aSW9mSXpyaW8xZ2NyQmZCMFFZZGpYRzBGVFI3cGRONTRtMk1wdkVIMHlmdEVvMTlucnZMSzh0STFsWnord2lmKzlaSUFkVDJ0SFYvQ1BTc0t0N3p3Y3l0YUdyTGFhbzQyRDIyc3N3VFJMUGFHL3E2R2k3RGpFaGh3S2xCeGpqdzdJTXl0SUkzTmtNOGNiK0p0RXlmOHdGa1RFRmlGTFVZaW1RL2hQWEk5M3pyWGsrK3Zxb2dMcnUwdGFYZ3RsTTE3cXRBZnpHUXU4eVVkSTRxcVl6ZUp4WHhmME5OWjJvQmplRHIyRGl3STlPWFBVdUJIYnNMNGMzL253MTBFbTJVNk1GQlVjclpqL0RNYVNGeFZjWjdNb1dsMm9uOEdtMFZvd3pjcVBkZS9xaTBqSE13R2NNZjl6NDllZ1pSUXpMN2hLU1VNNVRQdDM3QW1rMzc5Y2N3cEx0UFRUMjNCaDdVaG5rZEcwR1VvSHZIc3k5OUd4bVFhUjRuYXlPL3JRRmJvcXVzdFNGTHJPODAvUHRuSDhFSmN3UWFRWVpKek4xYjliRDZSckpsNnpRSW9td01mWXV1K204RnNPN3pkNC9jZnI2aGlPZWJIU0tabURQRmQzWFJKZS85Q05uTEdMWVhKTHJZdkV2dEZ6d0Q4QTNuM2RoWFdQaW1rQWlzRjBSKzdQaFE5VkpMV2NHaDh0cUtnb1ZvWjdrekJHdUQ3U2g5YysyU3IrU0FHSDZhSEJUNEZ0MWVzd1VuYitmbkpHaGFIU0MvU3ZvektDTG1XTnJQUTk0YVp1WXlPT3YwZmxQVTlQdjlLT1FVeSs1VXVkbE12dHFsN0JJSmZvNFBpaC9sSzhlMU5HOUpOMEQ5TUx1MmY3K1VCQmNnbmNCOUVodWNLUUNKc1JoUExnWnBYL3Irc0xnbmJTMUhjQks1NnY3cU5tUFFZemxNTHdnVUZRRjdBZGV3VG9lL1lpdUFicWNLY00xTXdMZkk0YmUvZ25HNGM4UjRVOUJQMUdsODFaNVRMWmZXZmUxeDZWOEd6Skk5ODdWdUsyWTcxMG5sRXNJVUFDcDBEQStwM2I2cXcvYkVVRzBib0xQem9OcklUR3RPSXdFYnVYaUFqeGt2aHMvSkF2d0lHNjV2Nm9OU2s3WXhKWnpGTm8rajFmSWF6MCtGQmpXNWNXZitzaU9wM3ZZaGtYV281U2w2YUM3blFyOUR6aE43MFRPaTluQnpIUVJGbFIzdnY2ZWM4dll5Z0l5WVFOaHk5Y2l6WVM1a2QyUk4rZldMQjZpQWRRL0RGN3d5SDk5eklwcklOVTROeGV2YjZIeVZKUGs1MVhGQjFTSWdTSXJycHozRWozSitWaWdwZ0ViaFZaNnFzRmw4QW4yVVlwQWwzeEx5MXVjQkYyeEJ1cVpLWWJwSlV0RDlGd0dlUmtWeUUxdEdxakh0UVloL0lNZ3F2ZmF5TFpCeGlPK1YzVEMyVlBGejJyb0N4eE44SUx6eUtDY2N4SVk2RVlzZzJ3TGIxYjlCK3JXSDRHOE4vcmdDOUQwclhyblFLRWJZcCtsWFhsdHdFU1FnUHpyYjVFb1JQdHk5ZGlibFNCYnhyNFB3RWwvR254UmxGWnBZazhEeWZGSmR1TjgxMjFYNW1SV0tVNjY5bXVHM2pJNExzWHJobDZCVlZNY1hOOWthcTlxek9yMnZUZjZJczVPelYreGdRTkJEc01pZHNKNS84K1UrWkxYb29rdFM3ekI5RGp5RW5UUXhXWE9uaEl3NGs3V3pqNnBtK1pJNVcxTjMwUWJWQitRZk9JZkZ6a0E4UjNrc29EdUl4ZmtnK3NZNmtQR3M3TWNyU1dFMncwV1paVGNpRG9tVE56L2EvQUFSR2FLTEUvZTRrZzFyMHBTRWQ1THFmdjJHUEQwQ1ZHK0lJUnNxOTVITUZyWERJZmYvdzliTEs4dEkxbFp6K3dpZis5WklBZFQyeDlKY2R4OC8rRU1MNnNGK1JCaFpPSWl6ZG5VQ2N2akx2RTNkdmpUMlhCaWNkUUZ6NzFHU09lZ2pnK0hmeXNUYTk0cDQ2VXMvZytpdVdIQTJzZEh1RUdZU0VuUWwvMVhrckdJMXdPcUxjNHhXL1R4ZmNKT1NCWTFmT0kyV05BeXBLU0ozWExxMWI0YkhscTZCVnhSbDdaR3BYSUErNFRqaGpjTldEM2hXMGhRcm8wNjgxdEh0ZzcrYmp3Q3NQa3ZNVXowRzVrUFpobS95cDFadWF5RzhhK2huTEFzdnUvTWxLblBZd3JsVEZQRUxQQ3pydE5LUW54UWZMQWFTMUpNa1J5Q0d2eGFUa2tRL2lmRjdLZHpWbnh5UTJjODh4UXdHY0p3YjVpRndUSXJMSzh0STFsWnord2lmKzlaSUFkVDJlbVd1NFdENUpMOXBZUXlzNnV1VGpwVW55M0dDQnF0bWxTRjdXQXFiL1NETk5HenlOUTdmYThjejZvMkJ1ZUg3bnNld3RMcldJODEzOWtEWTdidXdJSmxaUE5yUU8xNG5LQzRGUmRZVGQ2dEdMUnpkenBSUTNZU04xZWJvcUx5RGFpRHR0MkVlbzJTdU9OU1hES2tEUFV0RE4veUVYaENRY2dVTjdvTEowcDlUVGdzQTRJbTkzUkwvSFhuRVp2cXVlZWhFTjBSZ3V5aUVrNnhmcWp0Ry8vcXJvZGZYWWRaMlhldlVBMGUzUTFPRHF1c29nWjY5TlBUd2NNSUlFQjlPamxDZENYdERsR0Zpd1loOW5zS2FXWVoyaFp6OXBhQUE5NjV5UkNSVDZGU09MeGFuUmhvMkVzbEkvZXhkWTNtNmhuYUZuUDJsb0FEM3JuSkVKRlBvVktTZVY0SGMySytQSHBkbUFVN2xDaTBuQzh3UzZMVnBNU1MxMkI0em0ySml5Ly9yM3JGckNqODl3Q1ZNNHJXTWVIakdORXFJT2tjQUtJcGhUbjhOKzN0V3JMdWV2SkNXOHVDUG1ScU5CSXgzbzV1OUFnZzJDb3hCY2JlS2hTa2d4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWnM4UVgwdzMzMFJidCtuK3FmR09LZ2x0VGk5VFVJRStuYWtPd0JVd2xHekdDb3ZjakYvZXNlWWZpc1Qxa0FUWmE1Q0JwUkVoK2ZuYzNMZXRMaDZsSnpiUnpDT1U3aHZZbWZxQ2ZRSUVFMkxLL3dudW83eEtGTTV4dTd3ZGNiWWw3TEs4dEkxbFp6K3dpZis5WklBZFQyK2lGd0QwODdlblM5UW1uYys2VHRHd3lxY3N6dXo2ajAwQkZJUy9TYk1WaG5KQUMrWlFXU29PWVNzemtlblBZbWtTOXlGY1BsRmZqQlptaERpZHlLbnNzcnkwaldWblA3Q0ovNzFrZ0IxUGJHYTJJTDJ2MEpMKzA1eXFwRWsxUlhSc1BkZHF1OUcvZ1pCd1l0YjAyLzY0TEpVYzdtWnR3NUt2LzRVODRvZi9ad2w0YnBxRjlhejVOSnJLS2tGL3hpeXl2TFNOWldjL3NJbi92V1NBSFU5aCt0bDlReGk4N0syaCs1L0I5V0hnekg3WDFpeTI5T1pDb01lbFhEK0NsVnl5dkxTTlpXYy9zSW4vdldTQUhVOWlFU01Pb3ZNa0I3YXZXYWdxZFZBWlh6Yy9nYnBPbHgwZ3NGamhQd24wdWhMZTEyZWZhMG1vVTVaK3hhc2RaTC9HQ2o0M3RDVkJUbUZVTHJ2VGl5Z3BhR2RvV2MvYVdnQVBldWNrUWtVK2hVR2hHN0xqQU1YaGt0RVhidXJHUVpubWN0QkxhVC8zazh0TmJIQXBWZ0tYakxLOHRJMWxaeit3aWYrOVpJQWRUMjNsd0tyNmNoQmEwVjBCenRQekd1SXpGWGJsUHg5Q1BqaWFXWEhoL3NpTURMSzh0STFsWnord2lmKzlaSUFkVDJQNGwwMkJ1S0JERTMwa3Y5QmJGM1NuL3hJOHpzNDlyOFhJRTJUbkdUUVhqTEs4dEkxbFp6K3dpZis5WklBZFQyVDllNmxQcXVBVGUvd3hWM1hUU1RpVURORzVPem15MW56T01TcjBJYmpzNzArYmZGeDhoN1lCZzAwQU1zNmNpS3o0bW5XN2JydU9IbUM0NG5Ya2Zzd3JsNUVMaDRFdFpXU3FyaGZrYXBDb0tpZjNpSUJOVTRuQ2dPYnVXNUpVTFR3MUFJQ1p5QUNFeG45dzZXMmlCVklxMlVVY1dGNk41ZGtFT0RHQUl3SVdwNFlRQjZ3clMwYlR3WkwvWG9HVjlYc0p3M3J6L0UyNFZ6c0FNWUoxanBLQXhJMTJkNzBsL3pBQ1lDa2xVL2R0UkFnVW5LZkNDeHdjTFFxNEtRcUFMZHVteFF3dStkTkJCVW9YNG1QcER6aFRucFVjTldldWRsVGZ2ZEE2VmFmV0Z4eTBHbUxyaGJlTXFDT3E2VEhwN1ZPWlNWVURwNTZubks4T2owYnJybTlBZDNIemU0YWl0VHNnMlUvZmNIKzd6MXJjRUZRcndBU3VNRWdGVC9EYmcrMG4wK29jR0RYb2d6d3N4QVpEeWFTdWJSc210VjA1QlFGVEovQk52di91ZjVrU1k5aS85N0tVN0lGbVl4bDhzcHd6a1RyaW80akFSSDZad1RYcFJsSDk2VFpkZDk0cDJwVGFsTDJidElLSUs1V2s3NEs1d0gzMlNZVHNoVk9mL2l5eXZMU05aV2Mvc0luL3ZXU0FIVTlzUXNWSnptL3BZQWZOZlZoWEdSTUo2U29EMm9ma0g5SitaU25MZkRKRTgwajhuR1dTamZHcW5QOG0zUTdzY2w4Z2RjRXNWU0RWeHFRU3h3YWlSVXdEQmg1T1RDbDdEdm9acUR3b2l4cDBPNVZxS3Z5eDhXQ1V5T09mZnlPckFmNTVvZVVLbmE1cDJJQXdjdHloNElSblVuMTlRUnhJZGErVHgrbktmRDRHUmdFTVA1Szc4ZmIvbWVvUGtiQWRIUFViQ2Y2eUI4eU80Kzk2V21RTXFyRWlhektleVp0amJ2bGlrYk9lTVA1ZkM4bTdPMU8vQ0JuaGZuT3JHWXpIWndIa0NxY3d4QXFyQjlXa2JMTHlITVp2cDVnR2dySW9LR2hGSEQ1Ym5mOWZBenpwUXkrdzc4ODdEa0p5dnYyd25PSitLcWxtWkFveUhWaUg0M0Z6MFhhQTBSbW1CYnBISmZBQmNKbDJwQWtLb0hWVWNiZDZ4NUN6UlI4L09BdG5xT3ZOdEN6aWhtN1dsNzd2MWRQbEZIengzTEs4dEkxbFp6K3dpZis5WklBZFQybGhCRjNIMFBvOUZFV0NBeCt2MG5mZ1VzWVdkMml3aDg5eUFNcjZhcVJkd2JNWmZjYUlQcmZNR2loOFE2UlVTZEdOdDlyMmFXK1E4NXFIRkp0aTlBZldNK24rbHNnbHcyeWNXSm04SEJCa0ZMbVEwV3BzTmdFQWpkU2ovK3c4QmwxVVV3aHhuTGtjL3pzaXRLTFJ0ckhDck5XUmNQOVZMM1RkOEhhVU82ZlNscWgzNlJ1Y2Z3OFRRMUIxTVdvdXBqaFBSOE9UeitDVWtkeUtQYkU3VWoxVURwaDlrWWFxWFBNbDEvNm1wcTAyYkxLOHRJMWxaeit3aWYrOVpJQWRUMk9QZlpxZkVyUHd0OGZKbG9vM0ZIb1pzSGozdU5SMHlPaklTWlFGWGZoZFdZZ3RVbWIzWE5JREhvSEd4V25xNU02ZFIvaEJCbzVWNGkrVExadk1VcWVGSmNSNG55MVREUmQ4dE8zZEJkOTA2UnduL0JDcUhLT08wR0tNdnhGQTl2OGZUbTFNUGZ5cmdObHN3WEF1Wmp5SDlzcSs1MHdsWmhxb0pNVmxLMVVxK3QxQjhJS1llWTJkMy93NTN0ZWU5Z1M3dFFJRVNLVkxSUlNNZXljdUxnb29NSEpIZ2hMWmRieUpwMFkrK2tFcXExckFMdkVLY2Z1ZE91UzAyYTFPNkUzMUE5WXltUVB5VitvZ0E1UmE3WU1pTGdRNjBUMGVvU2srY2lpNGhQS0p4ZS80YmUvWDMyTjhwSUlCTEhuR3FUdGpFbG5NVTJqNlBWOGhyUFQ0VUdOYmx4Wi82eUk2bmU5aUdSZGFqbEtYcG9MdWRDdjBQT0UzdlJNNkwyY0hNZEJFV1ZIZSsvcDV6eTlqS0FqSmhBMkhMMXlMTmhMbVIzWkUzNTlZc0hxSUFlUHlDTnJESjM1ZHpVcThzcjc1azVwOXNmc045ZjZkenZ4QW9FZ056Z3dWektQRmx4V3F3elV3YXpXeWRHQ1NXcERsSEtnT0lMWUhpTHpaZGZINXB0Y2w2UGlDRGJVZ3R4TnJRUEtOZ1hVQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlCb2d5YkNvQVNwR1N2L2RQL05hOTlhYWZCKzN2QTZ4QzdzZzkxZ0dSbXh0bFhOdllpQ01tRER6Q1poTWZuZi9xaHgxZjh2SU9EcmpMNWlkNmp4SHJtaEFSY1VPeEQ0ajkvNThXdEpZdmFtdEN6d3M2N1RTa0o4VUh5d0drdFNUSk1wZ1p0aXpvQVhONTloUStVNUNoSVEwVVRqSXBDQ2hjQXZXcDkvQ0h5bzRSZzkvaXFpTkxTQk9XNDFwWXZnR1U3dEgxaVB1aGV4MTliWE01bzhFNldDak95bnA3TmdBQ1YzK1JBejRyYWwxaG5hRm5QMmxvQUQzcm5KRUpGUG9WQzFRT0NHRE8vbzF4WGI2OGdHaUhpQkNzc0g3V2tUc3hUZlBUcWl1WEcyTmlXc3VvTmNQLzg0NDdUT0R3QndRaHhhMWYzUkZMMHFWeWxxR3JiUGVxZmd3UVgwVE51QnE5RC9OVEhJeWhlVHV3QW9WWUc4djRsTWo3b3J2bnVuVXd3Z2s2VVgrM1VVYkxhQVo0S210ZFIzaFRzeEtpaUs0UnJpRXAwNzVFSDUybGRqUkpiNHViSS9RWCtxZHJUTHhGd0lkWWVQL3dpaWtOVk9YUE1DbTd1SHZyY0lwdmhxY1Z0VkVYK0c5YUw4dlBuemMraEhueEE3MDhiRDZMZkpOZ2EzRnlIS2lCUjNVZjluMERnSEdONVgxaHhHbFFibThVVEw5TElCdmlEOTYwVjdKUXZtcUFoL2s0cGRnRzlxdzRVZ2hPaGpFeTVEbUNwK2R2NFJXT1VPYW01cWQrS2Vna2tFU09HOGtRUWVwenBReSt3Nzg4N0RrSnl2djJ3bk9KOENKUmwxRU9ETTBRWXprek10djhYSExLOHRJMWxaeit3aWYrOVpJQWRUMkNvdHJvUlByOUxBTDFLdCtkN0QzTWR0eE5hc0xUdUpkREkrcU5iYjhQVHRQdXQvdERxT1BYaTExeXU0elYzM25SWTZGai9aUjVvSzhvdzdrV21iczArRThHT2hoR2pGNWE3c2IvUVh3MlFPRHF1c29nWjY5TlBUd2NNSUlFQjlPRENXT0tCKzF2ckZLVEZoOGZXb09CZ0xSSnJFNzUxazBTYUREbFZOM2lzTkpBT3NmWGp6R3ZvWXpXMmJhcGpHbHF5amo2ZnlCVSs1SXdOOEZxNGxCdmdOOFlJOFZNZDhiYndJanZKNXZLV0FTZkFBRUJ5K0xEVmM2c1h0Y3NQdld0MytzdXM5STIyeksyVGo3aFM2cDZNc3J5MGpXVm5QN0NKLzcxa2dCMVBieC9hTHpTTFFtdHdPNFdSb04yMktZVkpBMy9YelNFZ2JnbmVneHFxTk9CaTN0ZG5uMnRKcUZPV2ZzV3JIV1MvenY3cTJVMEhBbVNIY2IrbnR0bHNWTGpNalJ3amFPZ0F0UmVqM2RFdlNQVkZ3L2kwYUNLMHhNUWJMS2hXYnh0UUNCa2xmRmFZVkZMUFpaRTBuM1MveGoxQlBUbUZkYVVHeVpSWjI2UURHaE9Nc3J5MGpXVm5QN0NKLzcxa2dCMVBZekxOSVQ2N3N3aEoxVEVuSUFMY1VzKzVKbHdKdTdteFRSVTRXWEFuQlAxM2dlNWdWamoxTmFKNjh3dWFQaVZoN0FkNlVQV1dnUjZ3TElQblRVZnRGajBwNlZYU0pQdVRlYXdSUlE0YzNjclhlUW10Q0hDcFVnWEtWb3RjRGR6V0FUVG5PS0pWeVAybUxPbGJNaDV2TTcrdTRmTDdNMTZ6ODdTSkVIVFRUbW0rSzlOSE5wbVNtd0piaGFzWndkZ3gvQWQ2VVBXV2dSNndMSVBuVFVmdEZqT0lpaEYvQzMxZ3NLNEV2dHV1c21Vazg5Y2NrQVA1aXZtcHlHUkw2NnhLVDNiQkEvNTRsVk9pclZ4clpRQi93N1RTN2wvRWUvMm8xS0VVTDhwN0R0by9jNXNuUUpsQ1NVZkRERE91ZXhtWGpBT2JRZ3MzN2JMRHlFNzRZS0tiTFJkd3hKZUVrQ2pEZHdMdk11Skdyc0NPejJPdGpBUElRVGtqQ2hOSnlXQ3pTRWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRWjNYUGdsM3FUSWxhTUhvYkJRUm5QMDExdm9oNXk2REJNS0MxNmxZTkQ4VWZteWdjbFRZc1pDZWRlcDdVbG9EcXdjakhhNktIOFcxV0ZaOURYeFAzV3ZZRjBSRHJZVGI0am9RbUlWVi9jSm5lZDNjUDJVcnZwbHI2TG5kVHJrTnFCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SU9yejVzbVp1THZJWG1XT3BFWFdpR29JbGl5a3BuSGNtbFpaSGxKcFZ1dm9VejBHNWtQWmhtL3lwMVp1YXlHOGE5cVJvclZYSXQvaGE5NEtjMndmVGN2TEs4dEkxbFp6K3dpZis5WklBZFQyenVaaEZxSFZGUkpVY2owTy9lVEdMbDNCWUxWUERVUWFMOWZIdDM1U3Y2bUZJaTJFQlY3bGZrcGpsU0xSWFFPOUN6d3M2N1RTa0o4VUh5d0drdFNUSklISWF3M2dYa3FBbzBlandKWHIyMktyYllmSjlHNVg4OVBtQ0hpeXB6R0pBbzAzY0kyMHdMMkV3VzNqVGVZN2IvWVdZQ3Bsck5xTUNFbjhHb2s0bjZXZmIvbXZjM3VpU3oyU2RtNzlVaVhqSmpmTDMwNWhVMWIrQkhqeDJLclNDS2dFVm8vQkdSWVJ0L3V0eWt0cmk2WkJlSEJVTGFuZzZyeSsvZFJWNU4zRXNEdWJKUlg2SURaUHpqOHR3UTZTY3Zrdm40Y0tDMVFaK1RwTVVSck0vUlRoQk1FRVRwVGZxeU80Wk1helZzYkllUjA0ZUxHMnFaYmxHWHJUdjRVRWF4VDNKeWh0TkdaZVNoYmcrUGQ3OS8yNDN6WGJWZm1aRllwVHJyMmE0YmVNWnR5eWczeWFUTjl6dVJpcjRMVnpvbHRWZHVxSXBSV01seFdmcit4QnhQQlJSaFpBQUxlTVVBZ2I1eFVEejFTeHN0Y1l1Nm1yZkVoUGk4K2pqK0dka0tiaVFtMlZ5YzdkSlpWUDhVT1E3RHZheDk4VG8zanhRQUR1OWJ5WURpUXVkSCtMbEdidHJQUGsxQkc1c3RKMVMycC9ubVJYWjRJT0FOTG9FRG4yelNCRjNETUM2ZHM3NmpndjM1YjR5RlR4eXl2TFNOWldjL3NJbi92V1NBSFU5aFF2M3Jzd3NCSDVZbk5CTyswMS9Cbk9sREw3RHZ6enNPUW5LKy9iQ2M0bjRXRXhyaVM3RExDWmR1aUVPSmtYTXZmeW5wRXIxZE04cGtPNnc5elkrVHN0ZmdENGNRa3BUSXk1WStHeXBTbkhvRExpblIwaWZyU2p3QlJ4OC9jWW5NNlVNdnNPL1BPdzVDY3I3OXNKemlkeVM2bGJ2Y2RZeVU4YjhHNkhhejJTYXN2ZzVGZU5WdW1tY2Vpam9pOHpEVjF1SHpscEo5YnVVQWJtTFAxTndlTmV1cUs2WVZ2cDZ2Q2VFNEdoZkh5SFlLaTl5TVg5Nng1aCtLeFBXUUJObHZUdjM0YkpHd3NoN2NVWVh5MzF3WlRPbERMN0R2enpzT1FuSysvYkNjNG5pY2ZuSXJueW1NK1JoY1ZOZlp1dXUxNVJWeUdhNjRLUG00NVFLQVdldTBuaFRCRFFZd0ZGc0gvOVRaTVJOMmxiSHQ0WWgvY1ZFaDNIb0NZRmoyQWdNVW9iOEtuMUtWaURPc3ZlOGptaDY4dXBVaG1INkk3SGVYaTFZZFRIVWo2SmhuYUZuUDJsb0FEM3JuSkVKRlBvVktKZlB3aDJHa1hEN0ZxRjUwR1I5R2Jqd1g4ZmJmall3b3Jka1hzMzVEb3BBODgrWXU0K1Niemd6SktFd2lKZnExb0pTOENtZWh1Y09zTEZyUlRXbW5xQXpCOEQwOFRZdDRMb2xCS21PRkRwMVhWWFNWcW1heHBIa3h6c29HOTdocy85cHdXNVRsS0RGdWF3RiszU1BndGg4YkJsUXg2aklhWGVSb1NZdjRqN2tqbmhjenEvQkYyK3B5ZkR3U0FqU0JqWE4rQTRrNEY5NUlIWCtlUEV3Rnp1SnRtVENMZjl2VEF4V0U4b2NTNWVCUGVPK3NENFF3L0IyLzFvN0ZCaEJ5WXN0b0QzalRiK3N4OGdZL2M5SXZ2cjNLT2paZ09TRHpUdWZ5OE03VlhoUHUyWjdQU05yTDkva21BNnlzNXYxdEttK2pRYXd2My9RSFg0Mko5eThoQTJ1TGtGYU55TzRYeENWMHVyVHBpRVdjR01NcitsT0VKeWQ3K25ObUt3ajhaREVWK3pQbUxITGxDSElCdE11NHZMSzh0STFsWnord2lmKzlaSUFkVDJjdkk3Y09OT1V4dm5uL2hlMUlFUGs2WWFjajJyZTNoS3NybWNJOCttTzRqTEs4dEkxbFp6K3dpZis5WklBZFQyVm9UNVBYN1RuVm9MMzNLZXFyUjdicWN6Ri9GN2hjRS8wNEhsME4xdklzMlY4RlpRL3VoY3VTYnNOamN4QlFiL0huSDk2K3ZQL2wvYkgwMlF2M3RWaEhRdjljRnVxSlVFYXNyVHl6Q1hhMElyMWprTEY4L3JodmpjcTJqeTZpMTVyNkkxN2VpZkNpeStkWVc2cjZ2UVhXTzlwWWJPMnNuaVhYMnlUeFZzb2tFeVRMQmc4MVVEL2NDY1NtZms2cXV3Y0dRdHF6ejlTYnE2MjRvcnlRNnUyWkZZbm81LytGcWJoSFJxdk5wTGV3SUVRc0drbGprclNEQ0E1TlpUb2FjOTVFNU56ZWh3aDhTQ2t5b2hLT2hRYTFmQ1p1SGR2VzlEZUJxVThYaXMxTHZhRVhUQncwMEdnZG9LT09DU3FxVldkdkdoS3JMSWp5YTExeUJwMkxNdHpPcnM4bzMvOWtubHhTVmFFUnlwV1pkc3BBek1zRXlqeXpnZ0lUUGpaVFQrdmtCTXlkd20wdTY1TkxlU2plS0lmZXgyNFROMGh1bjBIbFdpSFFJVSszWXg2WXByaTF0RGh3ejM4M1FwaEV5S0ZodzBoWmcxcjdsR3YwbnBVb3B6UXZ1U1pjQ2J1NXNVMFZPRmx3SndUOWQ3cGdvUm5RaHVmRkRCeUVkL2prMEtNK0Y1K0U2azlKVnV0NUFxcXFJakRxTlRpbGtUY1pjaDN6MStZbk4zWXNIYlArQWpXSGpWY1lxSE1QZU02MXVpcWVRZHFQQlJVREFLcUh5WHpFb1J5TEpDR25uMzUwdWFJczhkeFB4WGNnbzhSLzRRNmlNcFlUYVZISU9wSEpuV2hKbUlyeDVIMmJjTGJmVDUvUW1NSU1XNUxnb3VzMTV5L0FKclIwblZtZVZjTUppeFVyOHhCOHdPYWVzcVlhZEZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlrT1lvZ2d1bDQ0eklaNjFMcm9GZ1hLR2RvV2MvYVdnQVBldWNrUWtVK2hVUGJWYzA4MGFra2hMWE9yN2NnOFZFVXZaYnowSFg4aFBGc2FiVUQ2cithMk1MbDBGTnlaMkVIWWtWN3pBQi9XTkFFWkxxM2F1ditwN09idlg3cy9wTGxSNFlnS1ZDUk9CVnhsTjhnM1hXS24zNjlOMWpsb3NxUkJkRE1mSkJCYkRUemNrODgzRFlKMk5OZFZRWWpPcWdzYktubHE4WStQajI3ZDV3QythWktTNUMvN0NlU3U4ZnJJZ2JnaW5oZjdRK3cyMThoOUF0S1RYQ1FpbGdldVJMSTZvZkpUZFd0eUhCQ2NhTnI3WDloZ3ByUitaa1JFZXdRbTBqaW1ON25DN3l5dkxTTlpXYy9zSW4vdldTQUhVOWs4dVpFVVByQjJWMUxtOGxPeTNjODNISWNSVzRFMTZCN2xjcExIcVphZXBEaGt3b0MvTWF1UUxObzVpRVcyZXVjZWptZmdhWk5MRzFsRVFTOW9HWkJNRHhoblFncS9qbzduSll4V0docERGRTZTc2hTTnBrYyszdWtYbmdhZGZpSDlOODBBUFhJWHZ1OHFqKzc0Y0hMZk9sREw3RHZ6enNPUW5LKy9iQ2M0bmhBMDFrc05XUGlMamtBYjhVdEtKcTRpTk9MK0VERXo2cmZZbmE2RURZRDdudHMvU09MTjNTNXhVUXdGUVIvK0xUVHA3UmJ1Z1oyKzZiTXFBeVpxWWU4c3J5MGpXVm5QN0NKLzcxa2dCMVBiNXJPYVJ3bTFIZmdybGNnMVpFZzNSVW5uT2hGMFlZQnlVWVhkQk9EazdwUE1sNlMxYWw5U3JIZmd5bVRPZElNYlhKRmJWNzJCUWxqd1VLOTZHVjNhUW9oTWprMC9JK1JLZGkwODlEZ29NYndBMytWYy8vZUhxaDc3NllOZUZod2tOcTlBZERKNG4vTFJEM1d0WUpYQVN0M2l2QzR1OVFCVGZiL3ZDbU5KaS9memFlczRvSkFLdVNjMENvK2F1NlJaeXB4NUQ1akxObVhNM0Y4WVpwZzh5VmdRWHdHb3c5RjUzVFB0d0VMaEViQ2RVSk9nKzNXdkxYUmtXY3BaYWxnNEsxNTlhRU0vdndZd0NxMzRseGtTRmhsS3lUVWc1UnNYZlJMcGFNaG0wZVpTSGR1b0RITmY0WjFvZ2daR3ppa29Hb3A4Yy96cm9XQm9OL2FWS21uOHM0VHlFK1VCUWV6djFmTEJlVXlCR2JIOEpYQS81dTIxOEVaQkJRdHczb3FFdjh5SjJEY1ZkS054bXp0QjhMbW5IJylcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3nmbvlvZVcIixcInBhdGhcIjpcInB3ZC1sb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGlzbG9naW4gPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0Jywge30pO1xcbmlmIChpc2xvZ2luID09PSBcXFwiMVxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE6LSm5Y+35pivJyArIGlucHV0O1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHRpdGxlOiAn6LSm5Y+3JyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X2FjY291bnQnKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOWvhueggeaYrycgKyBpbnB1dFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHRpdGxlOiAn5a+G56CBJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ215X3Bhc3N3b3JkJyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9wYXNzd29yZCcpXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOWkp+S8muWRmO+8nyjlhYjngrnmiJEp4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuS4jeaYr+Wkp+S8muWRmOWIq+eCueehruiupO+8jOWQpuWImeWQjuaenOiHqui0n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXN2aXBcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6huWkp+S8muWRmOOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOeZu+W9lSjlho3ngrnmiJEp4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwibG9naW5pbmdcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoXFxcImxvZ2luaW5nXFxcIikgPT09IFxcXCIxXFxcIikge1xcbiAgICAgICAgaWYgKGdldFZhcignbXlfYWNjb3VudCcpICE9ICcnICYmIGdldFZhcignbXlfcGFzc3dvcmQnKSAhPSAnJykge1xcbiAgICAgICAgICAgIC8vIFRPRE8g5ZCQ5L2s6K+06L+Z6YeM5Y+v5Lul5pS55oiQICQucmVxdWlyZSDnlKjms5UgICAgICAgICAgXFxuICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiZHRkMVAzZFRFSVRvbnNnck5GZm9CaWdpNWxqYXowUGVHbWJtTWpqcjlINW5mdnNuQnc3SkZwMzdjbjNlZ3F1MHkvMHdUVzJvVTdxdE13UUlBaUxoRVNWS0JsS2tSdlcwcG5QRGRIbDdQR3d3RFQ1R00xdkJzb2diN1lEcHdtd1Y4cnR0YWQwTzVZSkJ2cGpYMjloVUJwU3NpYW83bDNVZWJ6eE5BV1lpajdZd0hXaHQwalZiaDVTTDdQWFZvMTQ5ZlBTVHV4bDhBK3ZMVVdpKzJXeEdyT1orUXZ0cllJbjI4QnFTOFBTN3pmMFIweXI5aFh6amJNT09YMkNPZFZZS1BkYkdzeHprbFY1WDJMTG1LYlBnRWZRRWxDZ01acFl1bmUwSThPeUk1NUhMSzh0STFsWnord2lmKzlaSUFkVDJkVFF2Q0JiK2lIanBSNkswTXIwZGZjL2pyVGQvK25tc21XcmtqaXR1cTh4Mmg3VTNiWm1heGtxWXJ4U29wckxpWnZuQmtTdkVvSWlxVVVPS2ltQ3kwMWYzdFJmU1FCZVI1bGdUNUEveHFnZDI4YUVxc3NpUEpyWFhJR25Zc3kzTUxaUmhTTHc1a2RTVTNZK2R5Q2E2WmNJRHhsT0dlU0ZMbUkwT0NGYnBaZTliWTduS1VPYWkzK1RIc2FGaUVFcXBkLzZuVVFGNFRaUkJnVnFqWUVGd1dKeUtBSzZEQXFvUnZCMlQwaWYyd1V2T2xETDdEdnp6c09RbksrL2JDYzRueVp4ZERmUVhONlJxQitpNk5nVGJDak5kNFRGWDVmV0J2SGE1cEhyVFNaQWhUVzl3RkE1d3NBREI5NXkrSngyWDlRazRHTENHc3RnR2NtSG05NmFwMXVXcStLOHZHRVpFYkVqa1U1MnRNUzV6ejZnbTdZaFhmOGVCWUJtRWFpTHVNZVU3NUdlMnFTNnVPb2oyMklURVVjc3J5MGpXVm5QN0NKLzcxa2dCMVBZWk55blhMbDF0Zm9EWTNIWmdQYWtmNkQrQUR6UVlxeHFSS1pDdGxOSXlhOWs4QzRIN2ZiaExEWGRXQTNvVjV5VU9nYVNYSzFPTTQwRnhOeU5YcEEvWktTNmdZM0IxL1YyK3pweitRN0NtdWU1K3FhTzBYckRQMTVoalM0YnhuV3JPbERMN0R2enpzT1FuSysvYkNjNG5YeGVrdW9UVlVSWTdlaCtkSUY0UU9hWG1iTmpZTmtpcW5BZDg1RnJYS1hvZWdKWkM4NUI0SlZxT1djdWVpcE5hSHkvZHdBaEtwbksvNUpPN1o2eWEybHMyL0p2UE9DUDkxZTZnNEhPK1lxRXBMcUJqY0hYOVhiN09uUDVEc0thNW5wcmJrSVAya25EWFhxdE1ZR1JkY2lnZUlSeitPSG1uS0xtLytXQ1BhMDYxOEVxdk1zR2c5ZnB2dFVvMi90bTBSellZaThrdUZHb3BUeW9pa0R3aTNjc3J5MGpXVm5QN0NKLzcxa2dCMVBhMUFEa3ZpdmtuY0VoUFdQNHdYQ2FUd3dwWjBHNitZVHZ5cDY4dGhGZEFMNXh4OStuVWE1aldtSlV5eVErcjFVc0Q1c01xaW5ZNWIvZURVbnhSS0tCVHpwUXkrdzc4ODdEa0p5dnYyd25PSnlkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTcvcXQyTjBuOGxIRDgrNzJLVFVESXF1WDU2NUNJUW5jRFc1S2ZYVVpMT25aYnM2UlRxUjAwTHVQSEF4UElIaGlhYmprTnZTVlFPenYzYXdlcmFtZVNPOHNyeTBqV1ZuUDdDSi83MWtnQjFQYlpmQUErN2crWWRUTnBldTlMUlJvb2lGd1YvOWN1NUhwRWdaMlg2d2FXZG9vWTFnNXBDWEtwTXUvZDdjM2hkUWZMSzh0STFsWnord2lmKzlaSUFkVDJZOTZza0J0Tmx2TkF4NklHcHpLTjhlTjBPSkNtMklxc0pKbkhYSmQxZnJ5Q01tRUNGRWVhVmJwdUtHM1YwOXdBQzdTWWk3ai9iQ0IrREMxMUJTYVp2OEIzcFE5WmFCSHJBc2crZE5SKzBXTXRaaks0UWxmenNNdGdHcWRubC9EK1xcXCIpXFxuICAgICAgICB9XFxuICAgIH1cXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXCIyXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlt7LnmbvlvZXvvIHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k6YeN5paw55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcIjNcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOS9oOmcgOimgeWOu+WuouaIt+err+aUueS4i+WvhueggeaJjeiDveeZu+W9le+8ge+8ge+8geKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc54K55Ye76L+b5YWl55m75b2V6aG16Z2i4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifV0iLCJpY29uIjoiaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmIn0=
Add Comment
Please, Sign In to add comment