Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjMwMjA5MDIsImNvbF90eXBlIjoibW92aWVfMSIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcbmlmIChfdHlwZSA9PSBcIuaWsOeJiFwiKSB7XG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7XG59IGVsc2UgaWYgKF90eXBlID09IFwi5pen54mIXCIpe1xuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9jb21tb24yXCIpKS5ydWxlKTtcbn0iLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlJmtleXdvcmQ9KioiLCJncm91cCI6IuinhumikSIsInNlYXJjaEZpbmQiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9zXCIpKS5ydWxlKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8yIiwiZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS95Y2xcIikpLnJ1bGUpOyIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGg5LiA57qn5paw6aG16Z2iXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi8J+UjVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9zZWFyY2g/cnVsZT1cXFwiICsgTVlfUlVMRS50aXRsZSArIFxcXCImcz0nK2lucHV0XFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCLmkJzkvaDmg7PnnIsuLi5cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCJcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB1cmw6ICQoXFxcIuabtOWkmlxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICAvL3BpY191cmw6ICdodHRwczovL2ltZzAuYmFpZHUuY29tL2l0L3U9MTYxMjEwMTQyMywxMTQ1OTgyMTYzJmZtPTI1MyZhcHA9MTM4JmY9SlBFRz93PTUwMCZoPTQyNCcsXFxuICAgICAgICBpbWc6XFxcImh0dHBzOi8vd3d3LmhlbGxvaW1nLmNvbS9pbWFnZXMvMjAyMi8wNy8yMS9adllDRVMucG5nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsXFxuICAgICAgICBkZXNjOlxcXCIwXFxcIlxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJChcXFwi5o6S6KGM5qacXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS81MC5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnm7Tmkq1cXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIyLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aXtuWFieacuicsXFxuICAgICAgICB1cmw6ICQoXFxcIuaXtuWFieaculxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTYucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnVVAnLFxcbiAgICAgICAgdXJsOiAkKFxcXCJVUOS4u1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvOTgucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJChcXFwi57Si5byVXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS80Ny5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmlrDnlaonLFxcbiAgICAgICAgdXJsOiAkKFxcXCLmlrDnlapcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIzLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+a8q+a4uCcsXFxuICAgICAgICB1cmw6ICQoXFxcIua8q+a4uFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvODMucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdsb2dpbicsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvMi5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcInBpY18xX2NhcmRcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHmjpLooYzmppxcIixcInBhdGhcIjpcInBoYlwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcbnZhciB3b3JkMSA9IHcxLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMSA9IGMxLnNwbGl0KCcmJyk7XFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxudmFyIGtleTEgPSBnZXRWYXIoJ2tleTEnLCAnYWxsJyk7XFxuXFxuICAgIGZvciAodmFyIGkgaW4gd29yZDEpIHtcXG4gICAgICAgIHZhciBhID0gd29yZDFbaV07XFxuICAgICAgICB2YXIgYiA9IGNsYXNzMVtpXTtcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAgYSA9PSBsYWIxID8gZ2V0SGVhZChhKSA6IGEsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwibGFiMVxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwia2V5MVxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGMpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbi8v5YiG57G7XFxuLy9sb2coTVlfUEFHRSlcXG5cXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92L3BvcHVsYXIvcmFuay9hbGwnO1xcblxcbk1ZX1VSTCA9IHVybC5yZXBsYWNlKCdhbGwnLCBnZXRWYXIoJ2tleTEnKSk7XFxuXFxudmFyIHltID0gcmVxdWVzdChNWV9VUkwsIHt9KS5yZXBsYWNlKC9cXFxcXFxcXHUwMDJGL2csICcvJyk7XFxuaWYgKHltLmluY2x1ZGVzKCdyYW5rLXRpcHMnKSkge1xcblxcbiAgICAvKuaPkOekuuS/oeaBr1xcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOid0ZXh0XzEnXFxuICAgICAgfSk7XFxuICAgIOaPkOekuuS/oeaBryovXFxuXFxuICAgIHZhciBwaSA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJyYW5rTGlzdFxcXCI6JylbMV0uc3BsaXQoJyxcXFwicmFua05vdGVcXFwiJylbMF0pO1xcbiAgICBmb3IgKHZhciBpID0gMDsgcGkgIT0gbnVsbCAmJiBpIDwgcGkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBpICsgMTtcXG4gICAgICAgIHZhciBxID0gSlNPTi5zdHJpbmdpZnkocGlbaV0pO1xcbiAgICAgICAgaWYgKCFwaVtpXS51cmwpIHtcXG4gICAgICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHBpW2ldLmJ2aWQ7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciBydXJsID0gcGlbaV0udXJsO1xcbiAgICAgICAgfVxcbiAgICAgICAgXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwaVtpXS50aXRsZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiBwaVtpXS5waWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6ICghcS5pbmNsdWRlcygnbmFtZScpID8gcGlbaV0ubmV3X2VwLmluZGV4X3Nob3cgOiAoJ3VwOiAnICsgcGlbaV0ub3duZXIubmFtZSkpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBydXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfY2FyZCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgLypcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOidOby4nK251bSsnXFxcXG5cXFxcbuKAmOKAmDxzbWFsbD4nK3BpW2ldLnRpdGxlKydcXFxcbicrKCFxLmluY2x1ZGVzKCduYW1lJyk/cGlbaV0ubmV3X2VwLmluZGV4X3Nob3c6KCd1cDogJytwaVtpXS5vd25lci5uYW1lKSkrJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgZGVzYzonMCcsXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JytydXJsKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICovXFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzoioLliLbkuIDngrnvvIzkvJHmga/llabvvIHigJ3igJ0nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGhdXDwn5C3XCIsXCJwYXRoXCI6XCJ1cFwiLFwicnVsZVwiOlwiY29uc3QgaGVhZENvbG9yID0gXFxcIiMzNThjY2RcXFwiO1xcblxcbi8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbiAgICByZXR1cm4gdGltZVxcbn1cXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTtwdXRWYXIoJ3NldCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG4vL+aXtumXtOaIs+i9rOaNolxcblxcbnZhciB1aWQgPSByZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwge30pO1xcbmlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgcHV0TXlWYXIoXFxcInBhcmFtXFxcIiwgXFxcIlxcXCIpO1xcbn1cXG52YXIgVVBfVVJMID0gJ2hpa2VyOi8vZW1wdHkvZnlwYWdlIyNodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zcGFjZS9hcmNoaXZlL2N1cnNvcj9haWQ9JyArIGdldE15VmFyKFxcXCJwYXJhbVxcXCIpICsgJyZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZ2bWlkPXVpZCc7XFxudmFyIHVwX3VybCA9IFVQX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXS5yZXBsYWNlKFxcXCJ1aWRcXFwiLCB1aWQpO1xcbnZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxuJyk7XFxuXFxuLy/ljrvpmaTlhbPms6jph4znmoTnqbrnmb3lhYPntKBcXG52YXIgeHggPSB4eC5maWx0ZXIoZnVuY3Rpb24ocykge1xcbiAgICByZXR1cm4gcyAmJiBzLnRyaW0oKTtcXG59KTtcXG5cXG4vL+abtOaWsOWktOWDj1xcbmZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgaWYgKCF4eFtrXS5zcGxpdCgnIyMnKVsxXSkge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgJyZhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSA/IGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpIDogXFxcImQ1YWY1NTEzYWNiOTI5NDUzOWVjZGY3ZmZkNTViZjUxXFxcIiwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwidXNlci1hZ2VudFxcXCI6IGdldE15VmFyKFxcXCJVQVxcXCIpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmbmVlZF90b3A9MScsIHtcXG4gICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBnZXRNeVZhcihcXFwiVUFcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGZhY2UgPSB4eFtrXSArICcjIycgKyBwaWM7XFxuICAgICAgICB2YXIgZmFjZSA9IHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkucmVwbGFjZSh4eFtrXSwgZmFjZSk7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCBmYWNlKTtcXG4gICAgfVxcbn1cXG5cXG5cXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBzX3RhYiA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbiAgICBpZiAoZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgJiYgZ2V0VmFyKCdzdGFyaWQnKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aOqOiNkCcgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mjqjojZAnLFxcbiAgICAgICAgICAgIHVybDogJ+aOqOiNkCcgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aUtuiXjycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mlLbol48nLFxcbiAgICAgICAgICAgIHVybDogJ+aUtuiXjycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73nlaonLFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73liacnLFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8v6Ieq5bex55qE5L+h5oGvXFxuICAgIHRyeSB7XFxuICAgICAgICBsZXQgYWNjZXNzX2tleSA9IGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgIGxldCBtaWQgPSBnZXRWYXIoJ3N0YXJpZCcpO1xcbiAgICAgICAgbGV0IHRzID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0VGltZSgpKS5zbGljZSgwLCAxMCk7XFxuICAgICAgICBsZXQgYWFhID0gXFxcImFjY2Vzc19rZXk9XFxcIiArIGFjY2Vzc19rZXkgKyBcXFwiJmFwcGtleT00NDA5ZTJjZThmZmQxMmI4JmJ1aWxkPTU1MjA0MDAmbWlkPVxcXCIgKyBtaWQgKyBcXFwiJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZ0cz1cXFwiICsgdHMgKyBcXFwiJnZtaWQ9XFxcIiArIG1pZDtcXG4gICAgICAgIGxldCBiYmIgPSBcXFwiNTliNDNlMDRhZDY5NjVmMzQzMTkwNjJiNDc4ZjgzZGRcXFwiO1xcbiAgICAgICAgbGV0IHNpZ24gPSBtZDUoYWFhICsgYmJiKTtcXG4gICAgICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc3BhY2U/JyArIGFhYSArICcmc2lnbj0nICsgc2lnbjtcXG4gICAgICAgIHZhciBzdGFyanNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogZ2V0TXlWYXIoXFxcIlVBXFxcIilcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIG1ldGhvZDogXFxcIkdFVFxcXCJcXG4gICAgICAgIH0pKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgPyAn4pi677iPJyA6ICcnKSArIHN0YXJqc29uLmRhdGEuY2FyZC5uYW1lLFxcbiAgICAgICAgICAgIHBpY191cmw6IHN0YXJqc29uLmRhdGEuY2FyZC5mYWNlICsgUmVmZXJlcixcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1VQJywgZ2V0VmFyKCdVUCcpPT0n5YWz5rOoJz8n5oqY5Y+gJzon5YWz5rOoJyk7cHV0VmFyKCdzZXQnLCcnKTtjbGVhclZhcignaHRtJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignVVAnLCfkuJPms6gnKVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxuICAgICAgICB9KTtcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyA/ICfimLrvuI8nIDogJycpICsgXFxcIuaIkeS5n+S4jeefpemBk+S9oOaYr+iwgeWVilxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogXFxcIlxcXCIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignVVAnLCBnZXRWYXIoJ1VQJyk9PSflhbPms6gnPyfmipjlj6AnOiflhbPms6gnKTtwdXRWYXIoJ3NldCcsJycpO2NsZWFyVmFyKCdodG0nKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdVUCcsJ+S4k+azqCcpXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJjigJhVUOKAmeKAmScgKyAnPC9zdHJvbmc+JyArIChnZXRWYXIoJ3VwJywgJ+aKmOWPoCcpID09ICflsZXlvIAnID8gJ/CfmYknIDogJ/CfmYgnKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigndXAnLCBnZXRWYXIoJ3VwJyk9PSflsZXlvIAnPyfmipjlj6AnOiflsZXlvIAnKTtwdXRWYXIoJ3NldCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3VwJywn5bGV5byAJyk7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ3NldCcpICE9ICcnID8gKGdldFZhcignc2V0JykgPT0gJ+e9rumhticgPyAnPHN0cm9uZz4nICsgJ+KAnOKAnOe9rumhticgKyAnPC9zdHJvbmc+JyA6ICc8c3Ryb25nPicgKyAn4oCc4oCc5Y+W5YWz4oCd4oCdJyArICc8L3N0cm9uZz4nKSA6ICforr7nva4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdzZXQnLCBnZXRWYXIoJ3NldCcsJ+WxleW8gCcpPT0n5Y+W5YWzJz8n572u6aG2Jzon5Y+W5YWzJyk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdzZXQnLCflsZXlvIAnKSsnaW5nfidcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICAvL+i0puWPt+WFs+azqOWIl+ihqFxcbiAgICBpZiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJyB8fCBnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpIHtcXG4gICAgICAgICAgICB2YXIgdXJscyA9IFtdO1xcbiAgICAgICAgICAgIHZhciBzdXJsID0gJ2h0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvdz90eXBlPWZvbGxvdyZtaWQ9JyArIGdldFZhcignc3RhcmlkJyk7XFxuICAgICAgICAgICAgdmFyIGlkID0gc3VybC5zcGxpdCgnbWlkPScpWzFdO1xcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmVxdWVzdChzdXJsLCB7fSk7XFxuICAgICAgICAgICAgdmFyIHN0YXJsaXN0ID0gSlNPTi5wYXJzZSgne1xcXCJteScgKyBjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdICsgJ319Jyk7XFxuICAgICAgICAgICAgdmFyIHN0YXJscyA9IHN0YXJsaXN0WydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJyArIGlkXVsncmVzdWx0J107XFxuICAgICAgICAgICAgZm9yICh4IGluIHN0YXJscykge1xcbiAgICAgICAgICAgICAgICAvL3ZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyBzdGFybHNbeF0ubWlkICsgJyZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj1meXBhZ2Umb3JkZXI9cHViZGF0ZSZhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKTtcXG5cXG4gICAgICAgICAgICAgICAgdmFyIHl1cmwgPSAnaGlrZXI6Ly9lbXB0eS9meXBhZ2UjI2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NwYWNlL2FyY2hpdmUvY3Vyc29yP2FpZD0mYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmdm1pZD0nICsgc3RhcmxzW3hdLm1pZDtcXG5cXG4gICAgICAgICAgICAgICAgdXJscy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogeXVybC5zcGxpdChcXFwiIyNcXFwiKVsxXS5yZXBsYWNlKC9meXBhZ2UvZywgJzEnKSxcXG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogZ2V0TXlWYXIoXFxcIlVBXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB5dXJsID0geXVybC5yZXBsYWNlKC9cXFxcJi9nLCBcXFwi77yG77yGXFxcIikucmVwbGFjZSgvXFxcXD8vZywgXFxcIu+8n++8n1xcXCIpO1xcbiAgICAgICAgICAgICAgICBpZiAoZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKVxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RhcmxzW3hdLnVuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogc3RhcmxzW3hdLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9nejI/dXJsPScgKyB5dXJsLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v5YWz5rOo5YiX6KGoXFxuXFxuICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcgJiYgZ2V0VmFyKCdVUCcpICE9ICflhbPms6gnKSB7XFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTtwdXRWYXIyKCd1aWQnLGlucHV0KTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLGlucHV0KTtwdXRWYXIoJ3VwJywn5oqY5Y+gJyk7cmVmcmVzaFBhZ2UoZmFsc2UpO3B1dE15VmFyKFxcXCJwYXJhbVxcXCIsXFxcIlxcXCIpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCI7YCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgLy/lj5blhbPnm7jlhbNcXG5cXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+WPluWFsycpIHtcXG5cXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KdjCcgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICAvL3VybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/lj5blhbPmiJDlip/vvIHpk4HlrZDlho3op4Hwn6aGJ2AsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChtaWQsIGxpbmUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBzYyA9IGxpbmUgKyAnXFxcXG4nO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHhyID0gZ2V0VmFyKCdsYjInKSArICdcXFxcbic7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgeHogPSB4ci5yZXBsYWNlKHNjLCAnJyk7XFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB4eik7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ2xiMicsIHJlcXVlc3QoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSkpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1vZGlmeSA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvcmVsYXRpb24vbW9kaWZ5XFxcIiwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2Nlc3Nfa2V5OiBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZDogbWlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0OiBcXFwiMlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS5jb2RlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZnkgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lj5blhbPmiJDlip8o5pys5ZywJuS6keerrylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5pys5Zyw5Y+W5YWz5oiQ5Yqf77yM5LqR56uv5bqU6K+lZ+S6hlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihcXFwicGFyYW1cXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+WPluWFs+aIkOWKn++8gemTgeWtkOWGjeingfCfpoYnXFxuICAgICAgICAgICAgICAgIH0sIHh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KFxcXCIjI1xcXCIpWzBdLCB4eFtrXSksXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v572u6aG255u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SdJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsc2MreHopO3JlZnJlc2hQYWdlKGZhbHNlKTtwdXRNeVZhcihcXFwicGFyYW1cXFwiLFxcXCJcXFwiKTsndG9hc3Q6Ly/nva7pobbmiJDlip/wn5SdJ2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuXFxufVxcbi8vZC5wdXNoKHt0aXRsZTp4eH0pO1xcbmlmIChzX3RhYiA9PSAn5o6o6I2QJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL2ZlZWRcXFwiKSkucnVsZSk7XFxufSBlbHNlIGlmIChzX3RhYiA9PSAn5pS26JePJykge1xcbiAgICBpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSBldmFsKEpTT04ucGFyc2UocmVxdWVzdChcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73nlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJoaWtlcjovL3BhZ2UvZmFuanVcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSAhPSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcgJiYgZ2V0VmFyKCdzZXQnKSA9PSAnJykge1xcbiAgICB2YXIganNvbiA9IHt9O1xcbiAgICBldmFsKCdqc29uPScgKyByZXF1ZXN0KHVwX3VybCwge30pKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEuaXRlbS5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHIgPSB7fTtcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLml0ZW1baV07XFxuICAgICAgICB2YXIgdCA9IE51bWJlcihqLmN0aW1lKSAqIDEwMDA7XFxuXFxuXFxuICAgICAgICB2YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG4gICAgICAgIGlmIChqLnBsYXkgPiAxMDAwMClcXG4gICAgICAgICAgICB2YXIgcGxheSA9IChqLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgZWxzZVxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbiAgICAgICAgdmFyIHBpY3MgPSAoai5jb3Zlci5pbmRleE9mKCc6JykgIT0gLTEpID8gai5jb3ZlciA6ICdodHRwczonICsgai5jb3ZlcjtcXG5cXG4gICAgICAgIHIucGljX3VybCA9IHBpY3MgKyBSZWZlcmVyO1xcbiAgICAgICAgci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgICAgICByLnRpdGxlID0gai50aXRsZTtcXG4gICAgICAgIHIuY29sX3R5cGUgPSAnbW92aWVfMV92ZXJ0aWNhbF9waWMnO1xcbiAgICAgICAgci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIHRpbWU7XFxuICAgICAgICBpZiAoai5sZW5ndGggIT0gXFxcIjAwOjAwXFxcIikge1xcbiAgICAgICAgICAgIGQucHVzaChyKVxcbiAgICAgICAgfTtcXG4gICAgICAgIHB1dE15VmFyKFxcXCJwYXJhbVxcXCIsIGoucGFyYW0pXFxuICAgICAgICAvL2xvZyhqLnBhcmFtKVxcbiAgICB9XFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnKSB7XFxuICAgIHRyeSB7XFxuXFxuICAgICAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJykge1xcbiAgICAgICAgICAgIGh0bSA9IFtdO1xcbiAgICAgICAgICAgIHZhciB5bSA9IGJhdGNoRmV0Y2godXJscykubWFwKGZ1bmN0aW9uKGEpIHtcXG4gICAgICAgICAgICAgICAgdmFyIGggPSBKU09OLnBhcnNlKGEpLmRhdGEuaXRlbTtcXG4gICAgICAgICAgICAgICAgaHRtID0gaHRtLmNvbmNhdChoKTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBodG0gPSBodG0uc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBiLmN0aW1lIC0gYS5jdGltZTtcXG4gICAgICAgICAgICB9KS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgICAgICBhLmN0aW1lID0gZ2V0TG9jYWxUaW1lKE51bWJlcihhLmN0aW1lKSAqIDEwMDApO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHB1dFZhcignaHRtJywgSlNPTi5zdHJpbmdpZnkoaHRtKSk7XFxuICAgICAgICB9IGVsc2UgaHRtID0gSlNPTi5wYXJzZShnZXRWYXIoJ2h0bScpKTtcXG4gICAgICAgIHZhciBpID0gMDtcXG4gICAgICAgIHZhciBrID0gMDtcXG4gICAgICAgIHZhciByID0gbmV3IERhdGUoKTtcXG4gICAgICAgIHZhciBNID0gci5nZXRNb250aCgpICsgMTtcXG4gICAgICAgIHZhciB0RCA9IHIuZ2V0RnVsbFllYXIoKSArICctJyArIChNIDwgMTAgPyAoJzAnICsgTSkgOiBNKSArICctJyArIChyLmdldERhdGUoKSA8IDEwID8gKCcwJyArIHIuZ2V0RGF0ZSgpKSA6IHIuZ2V0RGF0ZSgpKTtcXG5cXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaHRtLmxlbmd0aDsgaisrKSB7XFxuICAgICAgICAgICAgdHJ5IHtcXG5cXG4gICAgICAgICAgICAgICAgaWYgKGogIT0gMCAmJiBodG1baiAtIDFdLmN0aW1lICE9IGh0bVtqXS5jdGltZSkgaSsrO1xcblxcbiAgICAgICAgICAgICAgICBpZiAoaSArIDEgPT0gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChrID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IGh0bVtqXS5jdGltZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBrKys7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUgPT0gdEQpIGRhdGUgPSAnPHN0cm9uZz7ku4rlpKk8L3N0cm9uZz4nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGZvbnQgY29sb3I9XFxcIiMzNThjY2RcXFwiPicgKyBkYXRlICsgJzxcXFxcZm9udD4nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3VybDpgQGxhenlSdWxlPS5qczpjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIt+aWsOaIkOWKnyc7YFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh0bVtqXS5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXkgPSAoaHRtW2pdLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gaHRtW2pdLnBsYXk7XFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1bal0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAoKGh0bVtqXS5jb3Zlci5pbmRleE9mKCc6JykgIT0gLTEpID8gaHRtW2pdLmNvdmVyIDogKCdodHRwczonICsgaHRtW2pdLmNvdmVyKSkgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICdVUDonICsgaHRtW2pdLmF1dGhvciArICcgIOaXtumVv++8micgKyBodG1bal0ubGVuZ3RoICsgJ1xcXFxu5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgaHRtW2pdLmN0aW1lLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgaHRtW2pdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID4gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIueCuOS6hu+8iOS4jeeUqOWPjemmiO+8jOaaguaXtuS4jeS/ru+8iVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHml7blhYnwn5CUXCIsXCJwYXRoXCI6XCJzZ2pcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxuXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXG4gICAgdmFyIGEgPSB3b3JkMltpXTtcXG4gICAgdmFyIGIgPSBjbGFzczJbaV07XFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOiBhPT1sYWIyPyBnZXRIZWFkKGEpOmEsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYyk9PntcXG4gICAgICAgIHB1dFZhcihcXFwibGFiMlxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgIHB1dFZhcihcXFwia2V5MlxcXCIsYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgYyksXFxuICAgIGNvbF90eXBlOidzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG59XFxufVxcbi8v5YiG57G7XFxuXFxudmFyIG0gPSBOdW1iZXIoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0XFxcIix7fSkpO1xcbnZhciB0ID0gbTwwPzA6bTtcXG52YXIgbnVtMSA9IE51bWJlcih0KS0xMjtcXG52YXIgbnVtMiA9IE51bWJlcih0KSsxMjtcXG52YXIgbnVtMyA9IE51bWJlcih0KS0xO1xcbnZhciBudW00ID0gTnVtYmVyKHQpKzE7XFxuLy92YXIgdGltZXN0YW1wID0gRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKTtcXG52YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHN0YW1wMSA9IHRpbWVzdGFtcCAtIHQqMzAqMjQqNjAqNjAqMTAwMDtcXG52YXIgc3RhbXAyID0gdGltZXN0YW1wIC0gKHQrMSkqMzAqMjQqNjAqNjAqMTAwMDtcXG4vKlxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIG1tID0gc3NzLnNwbGl0KCflubQnKVsxXS5zcGxpdCgn5pyIJylbMF07XFxuICAgICB2YXIgZGQgPSBzc3Muc3BsaXQoJ+aciCcpWzFdLnNwbGl0KCfml6UnKVswXTtcXG4gICAgIHZhciBZWSA9IHNzcy5zcGxpdCgn5bm0JylbMF07XFxuICAgICB2YXIgTU0gPSAobW08IDEwID8gJzAnICsgbW06bW0pO1xcbiAgICAgdmFyIEREID0gKGRkPCAxMCA/ICcwJyArIGRkOmRkKTtcXG4gICAgIHJldHVybiAoWVkrTU0rREQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbnZhciBZWSA9IFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpOyBcXG52YXIgTU0gPSBTdHJpbmcoKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKTsgXFxudmFyIEREID0gU3RyaW5nKChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKSk7IFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbnJldHVybiB0aW1lXFxufVxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUxID0gZ2V0TG9jYWxUaW1lKHN0YW1wMSk7XFxudmFyIHRpbWUyID0gZ2V0TG9jYWxUaW1lKHN0YW1wMik7XFxudmFyIFNHSl9VUkwgPSAnaHR0cHM6Ly9zLnNlYXJjaC5iaWxpYmlsaS5jb20vY2F0ZS9zZWFyY2g/bWFpbl92ZXI9djMmc2VhcmNoX3R5cGU9dmlkZW8mdmlld190eXBlPWhvdF9yYW5rJm9yZGVyPWNsaWNrJmNvcHlfcmlnaHQ9LTEmY2F0ZV9pZD0yMiZwYWdlPScrcGFnZW51bSsnJnBhZ2VzaXplPTEwJnRpbWVfZnJvbT10aW1lMiZ0aW1lX3RvPXRpbWUxJztcXG52YXIgVVJMID0gU0dKX1VSTC5yZXBsYWNlKCd0aW1lMScsdGltZTEpLnJlcGxhY2UoJ3RpbWUyJyx0aW1lMikucmVwbGFjZSgnMjInLGdldFZhcigna2V5MicpIT0nJz9nZXRWYXIoJ2tleTInKTonMjInKTtcXG52YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChVUkwse30pKTtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jysx5bm0JyxcXG4gICAgICAgICAgdXJsOlxcbm51bTErYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonLTHlubQnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMitgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOicrMeaciCcsXFxuICAgICAgICAgIHVybDpcXG5udW0zK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jy0x5pyIJyxcXG4gICAgICAgICAgdXJsOlxcbm51bTQrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTpnZXRIZWFkKCgn5b2T5YmN5pe26Ze057q/OiAnK3RpbWUyKyd+Jyt0aW1lMSkpLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZSh0aW1lc3RhbXApLiBzcGxpdCgn5pelJylbMF0sXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuKi9cXG59XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHNzcyksXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuKi9cXG5mb3IgKHZhciBpIGluIGpzb24ucmVzdWx0KVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLnJlc3VsdFtpXTtcXG4gaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbiBlbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcbiBkLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTpqLnRpdGxlLFxcbiAgICAgICAgICBpbWc6J2h0dHBzOicrai5waWMrUmVmZXJlcixcXG4gICAgICAgICAgZGVzYzondXDwn5C3Oicrai5hdXRob3IrJ1xcXFxu5pKt5pS+6YePOiAnK3BsYXkrJyAgICAgICAg5Y+R5biD5pel5pyfOiAnK2oucHViZGF0ZS8qKydcXFxcbuaPj+i/sDonK2ouZGVzY3JpcHRpb24qLyxcXG4gICAgICAgICAgdXJsOlxcbidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8yJ1xcbiAgICAgICB9KTtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5LqM57qnXCIsXCJwYXRoXCI6XCJkZXRhaWxcIixcInJ1bGVcIjpcImpzOlxcbmV2YWxQcml2YXRlSlMoXFxcIjcxNW8wSUJTeVlRTUw4SENyYm9oSWIwQnhtbTBZS1hNUVNYcVozclYzZFJPQjE2OVdZN2c5VmFHeER3bUJ3QjVUKzhSV0s2MXpNU2FiTHpuWnkxZGliYVVUUkNpRVBXdWF3aGFGMUJpOGZNY1NLZ3pGdGV5cXZ6aVo4cGZUM0pVQjg0b3ZkR3cyUUtveXA5bUZHUTF6cSs4Q0l3YWdMZSt6Tis3bTNGK3U3QUJ2bjZOL2Q2WXIvbCtPODdNRkRPMVdzTlBkbE9zZko3cUxaMlVPb2VZQnR4QkUyTVljV3Z4dlpTeWZCODgzZldneDY3RWZBSkdiVm8rb05sYks1K29VRGdnR2tBb3FObERmTmIwd3BkdGpVYjdpanZyeE1abnJZUkZJSktKemlRUmFob0UrM1pUTm4xSVNBUkREc082RklhSFIwN2F0SWhOS0IxanlPZUI0c2IzSWYvTjJNMFlvZVl4RVo4LzcyVml6ZXJMeHM2TGE1aEtVWWpVcnhPVllXQVJvU25EOE9QQldEbytkTTRrZXZzb2ZOQVpVY0dDTkF5VVMxeVowMTVRcUNjRkVqWExtbnZneTYvVEFHZU9Za1RNMEl5RkdLMEZrdXk4bjdzOHc0YjFTL0JwWkN5WTVWZ2xnZldBK2tzdjNlMWtLVGxEcDJ3cXdoTTVLSjhPMzBkMUFBTTl5dWVyc2d1ZGFnV2JMaXlFTGRIQUx0MWZ5OW92L2ZEYjRPRUFDbVgxN2JHVy9GQ0xRcTZ5T2d4eEw1QkxUS1cvUkMvNENnRkhmcHJuR0hTbVRDTTVqYVVGZzhCcjJocVRuQWx6UENMZ2VQdThjV1NnUTdRYnhyaVR1VkdONHJrMXo0cGFDZ0U3TCtwS1Q1dDd5elluVm1HNVBMcW5odHJkNUpIYnlSTDFzWE5SSDM0cGc5Ukc0TzBUMmFoYjFwY0tWWjB3OTNqMjkyVWltU0tDUWtQY1dXcmtXWEtnRFlXRXVTQXBrUDk4SHpPZUlDalk3dmNiaWRMaGo1b1VnU1VHMnJ1c05wdjk5TEFJaGFFRWhrZEZMS1U4dGtDL0Fxam9Cek1RSnhrRDVKWm9JblhlK3FPNmVkNjE2WVFua2pXODlka1I1M1NuT1FSZmdoS3pnQXFWdEtIWHJhbDhBVHN5M1Vpa1BJWkhENFVYZGtudGpvUjZnb01CRUN4NVUycEFBV0daYWtHTDRxRzZNZFFnZVZnYkR2MlJJam5Cd2hCcTFlM3d4TXNCK296VERYdjFGYVFteHBmZk5UM2VJeml2ZmdNYk84b1pqYmVRWlIybnFYaEk2dTBIaEpmMFR5Y0I4Um1UODI3MHdsNXpaNGIzVzJlQVpFQ0RaQXZPdS9YeDljVFFIb2ZLODdKQ0Y5eHhabXhQNEVCWnVDRHNWRUZqYmI4ZUFjYk9EVXh4Y3FGc005TXBJWjN4eFM1K0MybVY0Qm5Nc1BRR0ZhMFFZdVlORzlReEt1MHlnQ2dzZTlMZGN4amd2QXc4Z2ZHZkpLYk5zM3BxNXp1cGh4TXZsYlFNQitLeUpZb0tTSTNXdkdTMnI1Zk9rcHMvVERNUUJpOWhybDd6NkZlSFVsaEJjNXIzK2lVa1VuVjFwNnozS3RWMVI2Q0lrK2FJMWRHNGpvOFdMODhwOVpZcS81UVBma0MySXdVU09ZTzRVc3IwL3REeFFDbERRYUJsSjhoQjFBdHJtMGpiS2g4aERxVWk2VWt0UHhuMU1zMXQweElvZmw4d0toenN5MzU0d1dDdHZTVVROb2xjcUgxdmRnOVFUOVZQeHVobzVsL1RHMDNiQ3B2eDV1YW1YVi9ub2VSS3hJVkJJdi9CdE0wdFdmelhBdGc4c20rb3dsY0xKbHhUQlZ1eDROWGxDS2QwNnEwam84VWxHcFk1VHhYZXdGZ3BUbFZPUTJ1WnJHNkFsWWM4czduU2xoaHI4OWp3MUFqWmdhLzNDRlJDb0hTKzhRREN1SFFuZlhZbGR0bzhSVVBsaTAxc2pBajE2bXhGL09yM1h4NlYrd0IxR1hzRlZGYXE5SGVtUnR2V2VsVmFDOXpoQWVMVEgxSkQ3UVR4MmVvcXUveG1FcENhQmk2TmZRRDllLysrcnVpbGVkRzFUZ1czaThhY0dnK0RYWDUycXNPZDh5MHBEKzJhdWNGcDFOZnZZZWhvQm14MmxUVTFOZTlBY0t0aGd5bGFIcUg4RmpMNFJFTHlTR1BINHJJVTdYbXhuNDZyWmQyWHVIRll6eFA1M0hFRmJPamYxYWJKellSb1ZEd2dHNnpEYlNsMTlMak50Ky9qR1k2aTBjU3BzR1NWUHFPa25WMWIzNHZCT0g4WTBRczBENHBNQ0R4YUw0SlZsQThyYjRIa0piaUdaeXJPTndXMXhBT09ONlNYbnNFTW1HNnFkZVFDaEltM251VVhJbGFwaEZxcFB2endrTElRNHExZW9zZ2hKcGZscVpFOWV3bnJic3A4Zk5MUkZBY3E2djcwK3NXa2VrMkJpbXpwNkY3YmNhV1IydmVGS2FHaEdKb20rTWtOcTJqaWdjdERkajltd2NVRkVBWjNTYk1KemxNZmYxOEJGUkMzQzdkNUlTZFd6UnAxS0lrQTNWQ0dqV2E0ak1WT3N3TEpOVzVSYVNDdTdFUUxxa0JreUU3cFl6N2NpM0ZYOVJqNVZXQjhxS2NST1VSVDF6RDFLc3hKS1JUUVBMR3B0bEVxQXo3NE1iVlByL0Jkbzk5K3FySzNoaVkrTk5pL3F2LzBPcVM1S1BxdjBreHdEZDExWGo5bTF0dnJRSFFkR2JlOUUvVktTWWpsdGdHWHRFYWNuNWJ0SnR6Ty9QWnc1OUpRZS9aWDZkTzhmUmpkQWU0ZGNPNnBya1pUYnZLWnZDV2xyMmhBbGswOGVYOS9oc3pnUGdvRzhTSzB6NGhSVVBOQVpxV3RnOTViSEMxblhaRmtNSzhDcTVwS3BYcjhIK0RZNklKYnYzZ1Ewb1R6RzBkQkV1aXBNYWZ6YWRrU0pjdExHWE42N2UzSFhkK3Z3VHVCYlkyMGF4U2R6VzhQeFFRdW9Jd2N0Z3h4M0piQnUzR1ZUR2pMeTVjK3RRV2ZhUHZxOTRMNVl4UlJIL2F0NEp6bXZvcm00aitrcmNsUFRXMjFrMmJ3RzFVOVRRbjZRYW0wcDBvSHNTRVJFWDFsZjZXQ2thZWxxMkl1MjZZVjRNY2hvWDdOeWZOL0laaXZyT1g4Mk14Z2ZENlNRSTl2Z3paK2JkQmNENjBPa3FTdlpxZmtKVjg0TWhlWmtxNERNeDY4dTlkNlpsanNMTVAzS3RIS0NySi9PaUgyZkVSZFU4QWV6cU1OUkZqYzNWQTNMZXQ2NktRVUdRUmhqZzJ2VHVVVTVjTHNIWG4ramxlV21jQWtCQTdTQ2NiZFVFQWpUWHFLNWd1eWQzTEIwcUVESUpDdGpjY1c5ZVhCS1MyUFh5YksyaTFQbHlycGk3bkxMa3U4c2VoM0QxM3dkREFBTUlIQyt2UENhUmRreUkyd1VNQzZybjJYUjA1dWdwR3dDYkRwYmtaUm1TQmp6aHp4UHhLenBKZnY3a3pDZnZFbEtYQjdIZlFrck50KzlTeFRWZWM0KzVhOExZK2RJbXVDNmRHaGs5M2NFR0NtSlYyL1piKzVBS0p4a1B0SVEwR1FIYW5vNGQrU3dXcTZPeTZEYkRmRFlOeXhtaDdEcm45aWNtUEN4aEpWci9ZUG1aeGxjOGNybVdPMGxnMDVIUDQ0dDFNVFZMbFprRjREaGgwbW0vd3hweEZBR05CM29sUnQ2UGRZZ0htaHBkYmdVQ0N2cUJ0Y05kajR0UmZueDBKSWowMTFtSkJBN2QweDJWZkZydEdjZmtRSGpaVm9mMHRpMGcxMnczLy9NSEduc01uSGxSZWU3WkRWSTZpMlZOMHBFRThRREpUK21PSnhpNzFHc2pxSU01RWIwbG9YRHRXejRvM3lVb3E2NEhaSXgrZEt5d3pOUnp1WnNOVmZqNWxod1BwQ1AxMEhZRUs0b1Z6SFRURmhlS2JIN3BwQitnOUZ6Qnc1RXA3T2NYM040NGNMdTdlenJlQ2M1cjZLNXVJL3BLM0pUMDF0dGJub3Fza3FvUGNjZ3M5NUVKdmFKS3Z5TkE4dEdMVFlkbUk0dGh2ZVFhZm9YVk9QY1FFMVRUUGxzclpmUldCdXljRHA5V3dCdkoyOC9qaHNObHNZTFlDUGhVSUd5K1JjNGhlN3RnOEhWQ0xwNDRPNUdyOEhQSVppQ056d1cxUlFvWWlyTDZNQmRkemNONEdnSnNLbDZkYm9YbjEzNUdVd2gwMEIxc2FaRmVka2JTNEh2SEM2VHUzK0xheXlidTg2bjdBMXVyMjZnaWl1U3AvSE5DcyszUFdYc2ZCTTNQcGJveDhtV3YxaWxCVWxLWHZDUE5PTHhXVWpiNDBJWXNkelBOMC9Ga3RoQm5KZWI1djNZVkNHOVV6Zy96NkdnakN6YXl1VkNzOHp2UEgrUkVOTldCemMvWVJRcXJSN1ZxcDZVcDV3SzAyUVZpYVhBRXBlQXlaajZtSkhrb0dTZFc0bWZ6SzJnT1ROem5lZG9nckRhM0JCRDBmZWJzK1ljUkNjZVVyWldhSHJ2YWJ3dnZlUWdnY1k5aVE3Z3R0UVVnblNwYjR0TGdUSDBZbWhWODhublVsMVpUcGNLZEN5YTIvWEhES3BCUDloNkF3TzRDcm1iSFIySkdjZldlTzliL29QOVUzZnRwMzJHZlJMNWxGcm9iRG1RMXVxcFdsUHlmS1NldDJ6V0pielVnMGVZQ2VTNjdHZUlYRE12T09aU2hzOHI4cE5NdDc2eDFralJJR3BoSS9yaDErS1V0QmEwOUFVdEFOaTBzUmpTK0wwWDdMcVhaaW5nMlN6M3dzRHRYKzZHdXl3VXlqVms4RzZaOHFPSERibGRzLzJzYzFuQUU3emU2Nnl6UzhsSE40T2dMSERYdDZDZG1PZi9RNVlFUDgxSVEwN2locUhrUytKTnRuM3hQN2Q1bmNBbVNtdUlNRDdwNFBOcS91OHdLek42WXJnYTI5cjZaL3dEdHJMbkRUbys3Q29FU0ovOUdiRGo0aDlSZGZQSXVKTSthTHd1ZWptVFBEUU83ajVCZ1QzVzJwcjNKN2QrV0RlS01za2wxZXZnK3dpSXBiUk1oeTBiNmlSdThpbW44LzJ3SEtTZHZvUEZ5MXdEZEdyQjM5V0FwRDlRRzlzR3cvMGpwZ2w4eGR1R0U0Vjh4ZFlsVXNoaFBkVlhXaC9KaERaYURlY2Y1SlZpcTRFdmxkU0dkM2ZLWmZGRGgreHc4bHRsMmVLZDYzNWUrRDZrOEprVFFtZW1iOEhGc1J5MllXcFdacnh3VC9YZkRSZHlYbXNyWXRNMUFHdEJvck5UVTZoMmRXVTJwanYxVjI3TjRabGYxR0lDeTZkckZ0YURnNnhia2oyTGQrRE1QWWVlVWhJS01SeWdQc1hNSDRTLzhFbGh3Ulphc3hNMWdJc0hXbVBFRkJ1Z3BXc2phRTNDWVN3aWY2RFhKVXRWdis5bEx6SU13dDRISG1NeUZhaFJnWlI5YU5nUHB0cVAwRUJlNTJoU1ZqeEJVUDY2UDdwdUJGVVRzd3AzNVpidWZuSmFOSHVHMmFaekt4aUNNc2hYMGgwZ0dLZXV1cEZ2NzNKUm9sdkVjRURvemxtc3JzUGEzZmJ3WmlNWkI2SERLM1ptZytnZEFuSnNIWHpFcnZBeG1GampJWmpRaFJlWEl3NGFsSFlOQm91RWRiU3MvTktZbmVIVFRIK0krR0NTUmROSG1iUGt1eWwyRmxFZHdrVFBMWGdSWGR6M1M1c0FaNXVjai9IWWtiQXRpMHMyTjJ0cVJ4MnkwZCtaN2tRcytjOXJPVlc1N290b2cxdmtEeFZKcEVGV20zb241a1g4TXNSUGlrUkkycTFrd3ZsRkpHaHRGdlhLSDBFVTdrMlJ4VHgxMFhiTGVZY1RjOGdpUEZRM0NON2tDa2lyQTkydmVKQVc4V0lCN3U5d2ovRVBNcHY4N0k3ckVrcHc5WHVkSWJQUTU4dUl0L2hvK1hQMHpTRmhySzJEOEROUGNqMm1MekR4QWx0VWZ5Y3JEVERlSnFxcGlWb0sxSWp6VDNoVTFHM0JJNVp0WlR3Qk5mNGlKWWxvcVVYT0hJQ3huVXdyTnpzSEV4cGs2Uk1kMUhadFdvQnhYWXR4VkVJUDlybDNPRTBHSzJSeGJOL1hwbGZscWVLOGovdnhDbURZbG56VG1lNllNUllybDhTVkVsUkRjZUNRenFWS0Q4dHRhdStZVWY1dWNTV0M2WWZDT2I2SFlrY2ExVGtBeTJHY1Rxa2RaMVYrUzI2djFSRE9Cb1BUcmVUc2hxR085WW44aDhSN3kzWlN1aVJvL1g0UGptSUVTZ1hvV1JDWHN0c2gvZ01xdUt5Y05IdWFGYVBITVcwMkJuNDdyT0lwZm93OEZwUWNod0g4SFhjWnFKMW12Q0E5THBpSEtQS2llZzI4QWZDM0g0d1VXK1VpVndxUXhFdGJWMGszb1lqdS80RERuU2tKRUMrNFpidFdKRzEzMzAyVXJlRnV0enZBK1JYWDZmY0Nvdy9JM1RUM01JczdMTUxmV1dYREEyYmhWRDhHWkpZNU0yZnUwTEVwNUQxS3J2UG5OSlhWNHNxVmU5YWtFWi8vREp5aUZDaFFyc1F3Z1BHVTRaNUlVdVlqUTRJVnVsbDczZ2J3S2F4MGpLRmNHN2N0Tm5jUmxSQ0R6UkRJS0dRczhNNzB0M3RsNDFjRHFOTjduKzVBUVNobnBQNnRjYndzeXk1VUN1NW1tcTlqbzdqMDdCQ0FvenlqemkzTDhFZFR1UWowY2pxQzcvS3FyQUpzUVpKQ2pjUVM3M294VlBDSkdSOWticFB4Q1hxTXVJTWlYMUZVTGZtL3Z4cU1HeTBzeWNKSm9QYlM1TVZFL1ZLU1lqbHRnR1h0RWFjbjVidEp1blpwekdPK3E3RDNENWxXS0hDUURXYVE3TXJRYmY5d3AzM0hpN3duRVhIV3d6aDV3Z3hNeElZRmhjVmF5N1ZEMHBmNHkzRWNKTklaMTJZZm15K2FEa2I5SlVwcEx2cDRrN3Fkekl2a0NSR3pKa1pSNWtFMjA5RXFZSm5TTVVSaFhxc042REdHenhvY29aaVFnRUlMZGcwL2x4WTkyNERjd0RDbzhGRE5KQVRCbXRTNFlpZEE3NDcxN09hK0F6OFZaZU1KK2dNd2NidmxwUHg2TzNCaGZYQnFFeDZOQitwakZneFByVFhZREtSZmlEazU2aUZNaWtzcVFwaituemVJU3owLzlLN0llT1ZoVDg1ZVhLalU0L0RxTVByOUZCOU9iS21vRmkyWEY0NFh0UnhMQzVzM3R1SjVObS9IVnFRVzF4V2tiVGxXMHdOZDAza3ArVmREaWxKZ1F2emN1a1JJMEEra3QrTEQ4WjJ1RURxL2JWcW5JU244ZzFMNjdiaVRIdlVQbGFBWjFBSHZSQ0pjQ1ZTQVRTZytpVjFzTDZ1UXRNZGplbFZxVkZIZXF3M29NWWJQR2h5aG1KQ0FRZ3QyS08wQ3B2Y0sxbUZkblVaQlA5dHFUMUJaSWc5azhqbW1Gc3daTlEwUzJnWU52R1FTbVB4N05FVEdOVlYzdXNUZEptM1lmeHByMDA5TnZFZ2EvbFBmRkVQaDNEb0ZhTGc0V3ZLcU9KSVVoS2IzOWJFR2hZcGhKNjBpSWh4b1RQbGlvTnlNbG5uTG9meHBQdmpKamVnTWNYTHpRTXFmR3d1SWN3VEwyU2Y1ZWJVY21xYUpuUWxlUWFZbDM0NUZrWjI2S1NJeVBsaWdkM3dtbU1rWFhqU3hFU3B4SmJIQTRzKzFIcHk2YTRXSFAydUFkTWlaUVcxUzlDbW1HQUU3TmRuVU1GZ1g1TkdMYTIwV01ORUtLNGljYmZGcVptQkVkb3JYcStaa1ROcWU1TU1vZ2hueXJnUmRUZGdid2ZIeUZjK0VhQnFibVR6UnRtaGNJSXc5eFppZHRzQ3gzZWVlNDNFR2JoM2VzZUgvZWUxVE4wc01rc0l4OTFHbjNvZWlEd0sra0tJS1VJZnRDS3hqcGN0ZHVKbVpEQzdkNXJFd1JUV01MaUQ3ZTluSWltWGc0OVBuSEpRdDIzRU11Y2lReStEeE5lWkh3VCtVblhGcXJWL01PTW1DRHEwVUVmWEN0cU5rMFVFdkdib0pFem5UaStZRTVXWGZ0QWtlZG5BUVRDaU1EZlVpQUozc1VYelpYYmdlK2VKNkxIMEtlbHpvR1JJeHF5c2FTcmVPOUhCL1BCcTlTUFpLR2ovbjZ2MUNoaE51Vkgvb1ZHWUFFZzJ6bE1lc2Z2dWI1SGF5amNnVWpmYkNHemJWOExYRnlrU3RIb2FiQkxhTk1LV0RyZ2hla05Vdy81cTE3QS9rcGpRMHJnTllwSHpScFVXSlR2cDE1UnZSeWNSOHl3NkpxdFNub2FMcDhoWDhxVlVIaFpJNDFaZDZDNVlwYUMxNGQwQVo2cEk4ODUrTmx4TWoxMk1yNkpoM1dtalNTRzBKbmdONXpkckVlWkQ3cGNZdmxLU0xOcDdXTkxZNmlia0RiZkM2Z2dBMVh2NXo5L1hvbjVkR3g3S20xNnFlSExkU1pxYVd1TXMwY0p2TnQyUDBBSzBkNkcyOUptaVQ2c1VLWnlKYjkwR215WC9YUWozQmhMN0dwWUFqR0htQXBpVjFYVklnWkZUakhNaUxJclM0aENia24vSFhUY2lnTFd5bmp4V3hVNUJOY2V2Qm0yaUlIWStXUkRGeE9TKzFXdy9xK2U5Vk5xR1cxTW9sNE5UMnBmSVp0QW42Z1FDQ2Fxd3c4M0JSWGVmaW4wdXhmRGVmNXFRUG1OeGJZSUlaZis0K2d2VGNlQzJFdzZ2UjRaM3RzS2kveGIxemZITGRjcUpOOW1ITE4xbXdzRm5hOTB6aTZzYk5YcnJlL1JwcXBueGM1dzJKK1duTTg4ODZtbVNDR1g0R2hGQmxUM3FVMlpYK2J4c0tYVjhiK3BwcWd4QmZFSWFxUHR5MVB3S2lnN0txbEdnUmgzNnVsdlZiQ0FKWmJQVFVLK1hSOWFkUUNrY0cxbkRERXl3N21aUXNLUmU3aXJMNUpWd1ZRTGlQcWRlRzhUaG02dlNQbUlZSjJHVklWS1VHUFdvRlVsM2RKZ1JuTlFaMEdsY3NKTjhxWmtJVmVydlR3aHR0OG12Tyt0bTJpNFgwRkU4MmRaMzFWYThGcE1OMmZqWnhvYmdmMHY1cEI3L2JEU21BTDZGaVBnSGxGQWxZK3Jrd0JBbGFibUUwQ1p3eHhhRjZnK3BGSFlQdEprUzN0dUFOSS9SYjZLQjYyQmszc2FsYUJQSU9US015b2tUWFBIZEVaTE9MNXphMmFFMDhtdjlKMWxWeXcvbzVrTVliRjlKa0NMbU10bHVYK3BzZE5FWmF1L3d5V1JDZ1ZIZDVyNXFueXpLZ3hGVXF4THBXRS9DS0lyQnBxUmtNaXRuWHB0SnF4Mk5CaEEyUUNrdW5qNkhENGMwdXdkWWUwaDNEOHlITVZndkdVRTJXYm1mMXlSVzFlOWdVSlk4RkN2ZWhsZDJrTVE5MkdUTFV5aWZORVlwMXVNTWdtYjA3NFBrTkRFRTdqeGk2VjZkeWlkWjdwUkg2SURIQ3ZCTFh3K0oyenR0Q3hQVkNRN2NGOGFNeXE4WWFEeG1oODFPc0c4MzJKRzlpS0FFT0plWS9IYkJxcHJGTnZsY04rNnJXaVJRbTl2Tit5amV3WlJWeVV5WFJnUktlTnlZUFB3Y3pTdTIzRjlwaW9MVXAyaW5pQzFxYklKU3psRHZ4MjFaa20vU3VnK0hHdTBpVmRDVEVhUk9VMmdJRkhmT04wUnlhbkE4TUVtK3d1ZGN1NnVEUGlERzduL3pJVmcyU0N3NWFuTUNyclF1Qm0yK09SZjEyaU50YkxsNXFjSkFkQkVockFYZHRDc1VhTEc2ZUcrT3NMMGo1YzF3bkVmTVAzeXpFZEN6enVpMi9BVW80ZVM5T1dNWU5qYlNIZ3UxTU02ZldSMGxNdDR0RWFUMXRwYzI2YU1WWHduQ1Z1YVIxSmJnR0pHOVJtMmNQajEwc0pyczlveGh4RkY3K0xrZitWeXI5Y3VZZU5oaFZleGROMmxJQ0p6KzJwbEdlaGdlL3pMS1BEemlRa1lvQTR5OERjZFpQZFAzTWN6S2tEMzd6Nm9ReTQwZnZ6SjRZUzBza3UzcklVUG9uOTBaaEJaUEJEcUppQkJhRjBBS0o1aDNhUUVyRjlkNE5Ia0ZNdHpCeUxZV0NnQWZuQXo2RDlIai9zd04yZVROdCtqRVh3UUVZUitBY0NaWjFWaFFWdkpNNnBacTN5Z3lVTEczaEloTUNHd08vWUp0TWVXendYWjExL2R0MkU5N0J0c3dmYnBtNXhVWXR0ZE5JbGlsU25ROHR4ak9TeFBiVHJnV1ZPb3hIN3FiOWFxTFMvNE5kMHAvVXowekJ3YXhNbGFwdXFpbytGZjRlYmF4NjRvYXFUMnFOY0k3c2xnbnRzQVkrM3A0b3BQZzNzaEMrRURSQXFUUFVUTlQrOTB5ZVZqb2hSdDN4S3N0bEY1SlJDSVhJb2kvdVByNDRuMUlUczBBUWtBaVNIL21mKzhveFBLT2NrUU1WNWZhQTRqNGI2U2pOWVhZbnlFQkhIMGFIYXN2SkJoMjNlVUxHN2Jna0xlalRlSXg4YjFXOU4vOGtkTG41VWx6SGtxQ2MxQVRDaHpHdFp0bkxmdkVYRWRWVHlXYmxXSDFIWDRjWTc3dFdlOEhMMC9JTk1zSW00UWRVbmsvWjVBclhncTZXVFhNa2l2UFlydjFPNytPNFJwcm1Kd21BTFR0YjBNSFF3L3Q3SnFETmRZa0ZvYVhZa25iOTREV05FTm4rakN6bmJzdVc0bkt3RTJoOVdwc2dCM2w1TzNCSitRVEpyNWR1dCtGYlpJVTZOVTdQVXpQNDYwM2YvcDVySmxxNUk0cmJxdk0xWDRtUERIekc2NllQb1IxN3NyaTQ5QlJLbGV3M1A2a1o3WXZmWTFVdWRhTVhIVjgxcFE2blZVZlNwSzcwdWxpTGl0Qy9FblpKSElkalU0cEVsblFOeUdtcmlHdmRpbGFpamUyNEJhdXQ0UURtUnRpcmM5VmtudmpSa2VPQ0xneUp5eFo3ZWozOEJEem1HbCs3em9ZZHkvYWJNN1BaRDFEdTBrRHBKSURSaUluMTlRUnhJZGErVHgrbktmRDRHUmdjeU95THJqY0RFclBWdmJjQkFhWDFnYWh3anUraFVTNm1yS0czTnRtc2ZnNVhTd1I1dWVGV1ZJOHNRdlAxMXNoMU5tdXBtVG0wM3cwOHlwK29xeUw3S1lSdUVhME1wOW4xWmw4R25YN1FKWkJLOWVON2s2U0dYcUE5YmQxV3lTUG15ZHZzcGE1eThJVXFzdGRpRXhQOEdOTXNwRnRXQ3I2bjFnOW5XZ1pwMlRnTlFsdjJMMDMxOE1vN1htVm1TcWJKTlp2Skl1dlRpaDIyRElqS0l5amVMTFgxSm1ONUxmUnRvUitSN2RwVkpvamp2NC9STWFKU2ZTS0REUjZ5bHhONUdUOUJjSWxzSG4yMklIckJCOGNhZlFDalVZSHBQQnRjV0hEZU5vc0ZET1BTVEUwWGIyaUhDak1Xa2RNb2kra21ST3dJOXFsTmxKN2l3SWczUkdLTWNzcnkwaldWblA3Q0ovNzFrZ0IxUGFJdlRURXA2SGcwZHVzc2tOVTlSSnk4a2ZQd1FtSis2MXBBVUZMNHRqNDAwKzYzKzBPbzQ5ZUxYWEs3ak5YZmVjYWZya0d4UkxUekthWUxJc2U2SkhaK3pqaktsWlBVZ2lQc2U2Tm9IdXVIY3NyeTBqV1ZuUDdDSi83MWtnQjFQYjhqVXpUQTJSYkJGdVdTcEtBcS9MMHl5dkxTTlpXYy9zSW4vdldTQUhVOWpxbG0xUFo0VUkzVEZhKzJ2NHZEdi96YmNuU3AvYitvMWMyaEMvL0pjbytMTitBQzVtM05uL2k2NEQxaVVqVEtRTEVlY0FkOFRrZjFLSGQvK1Rla0RJZGF6S0xTT1hHaEhDdU0wUGZtRU12eXl2TFNOWldjL3NJbi92V1NBSFU5aVErNFM3T05aWlRyWWRpWHlQZTRRM2tIUjBTbG1OdHNZME9ROWtsN1lvMVdJSXI4YWdTNmZNR3RHYzN3Z0FmZ01UYzRjWG9xMjFhakgxVTFXNjFXSHQyZnhJSmVwSkgyZDRSTUlLQkFQNW15eXZMU05aV2Mvc0luL3ZXU0FIVTlreUhMdHhWOXpwbmNZdHhXQjM4RXAyV0s2R1AyYU93aDVZWTJvb2k0amhLWXA0MUt0dkVrV2tuWFZ3MmJYSkpid2hsOGtDUU1RUWRSYTYya1NORkJrN0xLOHRJMWxaeit3aWYrOVpJQWRUMm13ZVBlNDFIVEk2TWhKbEFWZCtGMWFqczkvbUV5cDhJVHlhbVdwd2I2dnowK2JmRng4aDdZQmcwMEFNczZjaUtGNkdHV3Boc3ZqOEphcEExVnVyU1pYQjEvOHZRbzdIYnF2WXp5bU5LSDBRN2cyYmM0TjJZeWx0OC84eWx6R05qbU52N2Vlc0NiNzMvR0JvMVVUcUgrT2xjRnBMN1Rpd25GdHM4MGhuWm8xRFFUYU1WUzBOME9rVXZMalAxVWl0anRJL09yZHAxS21KZ0VROUFadHNaM05qNTlicitKZkhWUzBSTExTVkRGK3REbmNMT3N5M3BhR05ma2lIVE1zUDF0SS9PcmRwMUttSmdFUTlBWnRzWjNGVnI3N0VMR1dLeXI4NEJQakI1V3N5djVtNDIzU1lBWTk1SUtGbjF3R0dMQlo0MUFVMlkvVGVseVl0WW5YcFhMdjlqL2FPaXNLYlZpOEdYbzl2dllmaFJqRVZWRE1DLzdSVU1PTDRMMUtRUXA2K2JTTjJsK2ZzZkZYQWxjQ2Y4dmxrT2lSTzF0NDFGTlNvdXhIS1U2UjVJRDZhSnVST2w3S21CSWYwQldDbGJaUmY4QjhqY2hiZWR4YTJTa2Q3akdRT2d2OXc3RE5CK3hYbVVKc25GSUFQRkYraTlWbHpsRk1aek9YeTJJSWhBWkhXeFo4U3RpZkFWQWxxYitXZi93eTM4b1J0YjZDQnRpYmE0VkNxOXMrRzQ5TVoxOGVPY0FSOFF6S3BSWHcwTDBBVFF3M3ZHeDI0Y0ZhRTl5SHJWTzg4WjZuWXZwNVFmVGVpS05EWjBuQzQ0bEF1UUgxc29hV3dvdzFjamdhTmlJOFJnYmpRY2hZV2N4MUZsVndhSnMzbHdiaVhweUVNT0F5ZWFVRVZnM28vY2RPUDB6ZnBwb3EyRzVSTUNzNGdULzVndWRzc05ueFFVUzJCa2lmWUhYUGpBaHBWWjBKc3VMMUVlQnd3ME9jaFJTa1VHQzMyUjFUbFhIYnI1aGdLcU9aU1ZVRHA1Nm5uSzhPajBicnJtOUpZRERYNGdxM3g3Q3dQRmZRaGUwVXQ1NDVJMEMyRGRHSmRPSzVUVkhZZW1vdHdma2FiRW1WaWhpc3FpSTJHdTAzZHBQVEpQK0ZvY2VSMmk4ODRTMjFtaFZDQUhwVFFBT0xxdThzR0NBTGh5WUFWVUtKUHdnNU81cS9makJWSmRSRDFXWFk3Q1hGenBYWXFDUUt3Z2pjTExLOHRJMWxaeit3aWYrOVpJQWRUMk8rQ3ZQSmNmanUxdTU4eDhhcWJ1Z3JJUkpzRFlnazdRSUp0d01vSGtjbXlSMnZlRkthR2hHSm9tK01rTnEyaml5SHdoMHdwd0NudWJyZVNWenJELzRQRkRJc2ZheUkrdC9RYmROd0lJZUx2TEs4dEkxbFp6K3dpZis5WklBZFQyajhuR1dTamZHcW5QOG0zUTdzY2w4anp2Y3VYSUVyZ3IxRC9QdWdGbWhPWExLOHRJMWxaeit3aWYrOVpJQWRUMlk2L1FscmZ0SzNiakIrbmR3U2hjVGJ4dU9WT05hcCtKMm14U1JQTDZldEFvM3NHVVZjbE1sMFlFU25qY21Eejh5eXZMU05aV2Mvc0luL3ZXU0FIVTl1WGs5eHZhNnJwNU9DREhuRGZNUzR6TEs4dEkxbFp6K3dpZis5WklBZFQyYjJ2QVVINmN1VGI3ZC9xdHY1VisydXR2MGJlZys3Mjl0ZFRYZ05pUXBYekxLOHRJMWxaeit3aWYrOVpJQWRUMlA3K3pVVTFRVzAvMHl2U0tPTEQvd3ArYTBXR2F2eU9EVE0zVDNuVWdKOFBJVXNGenA2empadU0ydysrdkt1cm5EU3I0dWk0UXNqSVFFdUtlV1d3TTgxeThJRXJCeXg2YWwzWnpSUk9MUkdNODczTGx5Qks0SzlRL3o3b0Jab1RsNVJvbzdzTndXajlTdDc2SWFPd09ZTUlBTWUrSzg0enJoUHpIRm9oWGZPWHlidG13aFBEZ1FLbXEreEJsQjhEQjZDWGwyZmxjVDNrK0pBdXYrcUwrdDhzcnkwaldWblA3Q0ovNzFrZ0IxUGFwdkZMeVp5b2NOYWpiU2ZOZ0hmUUl5eXZMU05aV2Mvc0luL3ZXU0FIVTl1N3dRaGdMMGFEd1dHRmhIZ3pOUHAvOTNBdVc1Ny9tM0RINytpWHRpMDFoVlkwVUxkQ21jc0FqQXhHdlpNYkFPVEVoNDRoZ1BaYWxlZjExbTRJTEhEekxLOHRJMWxaeit3aWYrOVpJQWRUMjAvM2F3b0QxSXI3ODBleXAvWGNJNjBGNGNGUXRxZURxdkw3OTFGWGszY1RMSzh0STFsWnord2lmKzlaSUFkVDJHMjlaOVVKYkk5ZDljeHdGYlV1cDIzYnhvU3F5eUk4bXRkY2dhZGl6TGN6RnNlTXdoOUZxY3lhYzVyZVk2QTV4Z1Z1SDFLVmljUjUrNXFzWVFtbDZTUW1VL3NSSTltZFN4N3dGcmk0YjdpaVhYckFPZDR5d2Ivd1RhTVBWMjZPMjAvM2F3b0QxSXI3ODBleXAvWGNJNi9lS2VPbExQNFBvcmxod05ySFI3aEJwN21PaFlKand2TzZtZi9yOFlDS0xWNmt2ZVhwZnJCY0lkRjJVN09YN0VRYWlueHovT3VoWUdnMzlwVXFhZnl4RkhSZ3NuNWE2NktXblVqWFJIM2Y2RGlNdkMwaHZITGZrVmZyTTlVWVBsZEYwRGFNcFovVEl1RGJqSVQvRlVnM0JaSFF6MDh0RVpobUx5K256WHRUZzlCQTdadjNRMWhHczg0d1l0WTgxcWs0aklwSTdmK2hCOVVhSWhlaklGbTMxQ1RnWXNJYXkyQVp5WWViM3BxbldPR1YvUGRnQnZUOWh6RU9MTE4vRG5mUUszRXMzcUhSbEYwT2VXcGFYTjJGMzNENVJhbStQM3lxS3FqTGt3dFFVNWlMdWpxc1JzY0dxeDc0MnNiVGxBY0o1allJK0FrRnpxZ0VEUEMvTGc2SjViUEU0eUk4QkQvTTBueFFrOFY3VTdIcUdZNFZ4WkdDSXBPNWtQdVVqQVRyTlkrZDByaklvbXMzWUlmK2QzUFpwb25aYUxncTYyRjd5UTU3TTk4OXpIL3BsNUd6M1N5WHkvY0RTTFZzTkgyNEhVVDVNUmdJSmwzenlrRmVxZ25qL2prQllQUU9tc1FrS0p1NXhjSnlxOGpqd1U3Z05YR3JsaEZCZGF1bjU0bVpyWTVDekhYVGVrQ1dnWXRGSTlXbk9aUDNhQ0JwcVRmQ29HWm5nbk9JY3haMTRjQ0NiQzRWR1g5NzhMN3hLdzhpRHgzYW1jM0x4cjdoM01YellyNVlXUXZZS2dlL2dWYWh5WTVnSW1qL2J4YjhtdFgwWk0rNUpRanc1a1BPL2pabnR5cFlBUHFNNVpNeG1wRGNDSmJMcDdETVUyYllBYVBjN1RWem5XQ0dlUy83eU05d1lSNldRTElTWFF5TnFpenZjUUgxRzlkYjJ4ZzBLWDNzaVpFbHBwT1dkSzRNTWRkWVZlZ2V3RWVxWlBKZTgvZDN1SWUvS2Y0VDlwSVRWR1JtTzJTTWR0RmhMUTd1cG51U3FOTlE0QnJGN0JFaTBMTGVLK2JFVlhqb0l3T1daZGNGYWxQU05keGFtc25mOXJHRDhzZmhEcFBmMDkyWkx4WE5VaEZRK3lmZTZNMkRLZXM4VktZNXpTTjZmS0IwdHE3MXJWdXVpNno0Z2VPcHh0TXNyeTBqV1ZuUDdDSi83MWtnQjFQWkRFdjVzQkMvWXlqRDdBSDFkWUlWYjZPSGZESmRURDc3ZzZJUExac3FQck5OdG5KZnN0SUdFNVFEdkwyakQ2OFk2cFp0VDJlRkNOMHhXdnRyK0x3Ny91M1Vyek42eG50MW5SYytVSXVyNG1VL0hNM3k5SWN5cVJSMmFQa29FUFdYdlpiOHREQ0VqVnhucnNqalByeGhaU1gzSFJ0SDVpU2R5b3U1NnAzTkZzNzkrcFpZT2toV3B3dzJaMlZreitiUmxEZ2hocHRZWUxuUFgyZEU2bnNnNVcxVjI2b2lsRll5WEZaK3Y3RUhFOElYRUo4WnJXaXAvMGNNdDQwN1BQbFgxZ0JrMUR6N3cvMzRHR2RhZFg2bkt5eXZMU05aV2Mvc0luL3ZXU0FIVTlqZGxpM0pWLzFYYkhZK2dLekhjUkZuN0kzeTNSQUx1WWRWS2x1SS9YYWswdTNhcGFjUmdHTU56M0J5a3B4THM4eXJ5UEVXTDhaRElYLzYrcmpsZXNQb09meXdlaXQ3NWVIR3ZxdG80NHg0M0dPNFNLT09WUWQ5eThaODVTcU4raDVnbkg3dWEveUVtYU96dFoyNFpJYzRUWE1PazcveEUzeDROSHU0bUF0RkdMWlJoU0x3NWtkU1UzWStkeUNhNlpVNHZtQk9WbDM3UUpIblp3RUV3b2pBMzFJZ0NkN0ZGODJWMjRIdm5pZWl4RG8wczNlRmRrRG50bU5teU5rZzl1Wjk1S2xIWXVlQXVwbGpQa0Z1TlFKN3JRTTBKRzJ1TVFtRlpTdkVxdmdDb09uaXJXd05DN2UxV3I2VU9XbThmVmtyUzBMVEZyWVZzQVFPTmpIaTBZb3FoUWxCaUtSZEdobzJoUkFPRkFUQkdFOXNsOEZhYkMweDJnOGMraFh0Nk5KTDRBNjF0eHpORFhGcm8zMUVyUG9aNDBOK2tNei9odmpWaWo1blo2Q1JnZm0yZFArTG95TVBqS3poampSNXNjc0FvVmpKKzYzU0ZGdUNmS0VBck4yOXJsdW9Lc09KTk13WEhRN0hjdnQ5THIyaEFsazA4ZVg5L2hzemdQZ29HOGQ2UUhIYVp6bTEvamdpc21GWExYUEdhM09qeDVsdmIzZzR3aUIyeWxwOGVQTzl5NWNnU3VDdlVQOCs2QVdhRTVhNG9aSkErYkh2eWhOWmo5V1JVRm9jdXRQczEwRWZmWlZWTXNvR00yTFJvdTNhcGFjUmdHTU56M0J5a3B4THM4NHdvRGdHRXVmRldIMnIydEY3T2dMa1FESEtrdFczR05LajJIU1hEV092dUE4VUY0RnZ3K2I2Qko0L05QMnNBZ1dsdG1JakhoUURxQk9saEJjUERLcXZzTVhtd3g3MVE3d2c0QWRvL2Zicmh3OEJMNnJzMzZoY1h1ZUNSWmVnTDFIcXVLN2sxYmI2MmlzbzByeXY0V3Q0N2d2RXR3UTdZZjRUcEEwRENUVjBSRjFVZ2VzcHZUQy9oUnRHWTR2ZldTbHZzTDFHUDhQN2wxV0FOQW91QjJQNUZrN0xWMkFpVCtuZUxsMXArbk1UUjlQbTN4Y2ZJZTJBWU5OQURMT25JaXBPMkw1aWNYTHUrRUNLVzc5Zm5ldjBhZ0pGd3hiWmZjNUw2ZDF6YjNNaTFTNUVVd3k2b0pnQmpsWHdJa29uM1FxaWY0cnUzRlNRUnh5dzdQOXJvVFBDNi9xTkFNNDZHTVpBMmQyTldwdE5XUEFjS1dhNXJ1elp2dGQzSDk1QXNzUStySDJXNWZQV24rVnhCdHIvbVZkckdCT20yeFQ5U3luMkRWZGF1QlI2cFVmVGZ2MDBOdVBwZ0I5UzZMOGRiZ2JxTDJaemx3VHNxWHdkdThRd3hkUzFvWjRGUUxTdzlZeXNLNi9RQW81bFB5ZzQ3cU41d05lV2pWd3UxRnpNa0VmWnNQcFJUUG9vVVJwcnQrTEl1VVliQXJiZTZ4Nm1LSDBhZ0xXb0wreEF3YmFnTW4zNWpXMi92Z2Q0YUU1b00zVVNyM08ydjBPWGh1VjBNMlIrdzlGS1A3TXpFTUNzTVN1OWdib3JadlFJRUcxQ0NYNkdTLzU2YmR3TUtlenBlb09SMGlmdUc3UUYxMTlKZ3ZoS0VPOWFTTlJRbVNsZHIvOWNXMXJFeEMzd014bFo0QmRuZlNQNENoemo3OWpJQnlRMkZNZ3dXc3dNT3kwQ0hnUWJyUlhMbXF3ZldlbU10bEZVS1JHeEhtRGlMUnJ4U08zUStjWHJUTENGUHAzRDBCWEUzZE4rRkZnc2UxZWJseHhWMVYyN25YVldDK3FuN0NOamo5SmV4cnBqV1NCM3daSWxMeUF6MXlzUFZ1V3laZlhYQkRLbjZOVk5qM3MydEpPQVh2dXVzckFuZWJmV0ZraUlWNDROVmdnZW5GVEQveDVvNmVtdmw0bUhwRFllWXdSTzdFTFNFTnBVNFlIbjJhWVZMM2RzTkt2aTZMaEN5TWhBUzRwNVpiQXp6Z3VCVlNBUzYvVWlvNmR4Y2hCMnBldlQ1dDhYSHlIdGdHRFRRQXl6cHlJcTh6ZmN2dmZZNW9jRHVQWDh0WEZPdUdnYVMzQnR5L3VYQ0NkcWI5QUhoQ0N5TFdvZmRLUXB5SDk4aVRVYUVQaXdsVzB4MnFUYlJuNEFtV1c4SVM4dDJIM1p6NmdiZUNwNHZCZ2pjYzd6ZHovVDdVTWw1QzlGeHRFa1d1RTNQMjNuVjdpOEhoWTNGK0ZYbGFXalJGNElaU2Y3bjVLbG9rbmtlZ3g3aEplUEV6M284MVhsZGVmVWhrVTliUXpCdTJvaUV3YkJkREl6S1F3Y2xjSlJsM0Zndy8vcmd6OXQxeWxJVTYxZHNGMGJ6ZktXWDFZWWZnRk16OWNXR2JNWnBPa1pONmZkMUdvK3BpdlJkL2hteVhEbFdqNkhJNll3S1BUVmxVc1l3THlmRUM2VzI5cVJ5UFA3ZDdKOW1CQUFEK29Udjg0NTdCcTFWRnc1MVBTajczUXZBU0Izd1pJbEx5QXoxeXNQVnVXeVpmWFdSN29mZm5YdUVJdE5hdE1iNithUERqeTZVTHg4ZVBTUmF4Ym5seUdhTnl5dkxTTlpXYy9zSW4vdldTQUhVOWlUc1dydzd3Y3AvSVFTSDladk1DT0ZQWm1INE5lUWlJK2hFMjdtS2kyQVV5eXZMU05aV2Mvc0luL3ZXU0FIVTlyc3B0T2VsaldNMkFINUNJYStZQkpic2hiNmVEUXplbVFkRWEzckpGd2hpa2cxcjBwU0VkNUxxZnYyR1BEMENWT3o5ODhFMlFScE1PK0pZME1xcmo3M05OZnBNL0t2VndVbHF4emdYYk8wTGZHOEl1SmVTcVlqY2JMUFgybUIxay9EUU83ajVCZ1QzVzJwcjNKN2QrV0RlS01za2wxZXZnK3dpSXBiUk1oeTBiNmlSdThpbW44LzJ3SEtTZHZvUEZ5MXdEZEdyQjM5V0FwRDlRRzlzR3cvMGpwZ2w4eGR1R0U0Vjh4ZFlsVXNoaFBkVlhXaC9KaERaYURlY2Y1SlZpcTRFdmxkU0dkM2ZLWmZGRGgreHc4bHRsMmVLZDYzNWUrRDZrOEprVFFtZW1iOEhGc1J5MllXcFdacnh3VC9YZkRSZHlYbXNyWXRNMUFHdEJvck5UVTZoMmRXVTJwanYxVjI3TjRabGYxR0lDeTZkckZ0YURnNnhia2oyTGQrRE1QWWVlVWhJS01SeWdQc1hNSDRTLzhFbGh3Ulphc3hNMWdJc0hXbVBFRkJ1Z3BXc2phRTNDWVN3aWY2RFhKVXRWdis5bEx6SU13dDRISG1NeUZhaFJnWlI5YU5nUHB0cVAwRUJlNTJoU1ZqeEJVUDY2UDdwdUJGVVRzd3AzNVpidWZuSmFOSHVHMmFaekt4aUNNc2hYMGgwZ0dLZXV1cEZ2NzNKUm9sdkVjRURvemxtc3JzUGEzZmJ3WmlNWkI2SERLM1ptZytnZEFuSnNIWHpFcnZBeG1GampJWmpRaFJlWEl3NGFsSFlOQm91ZHZHaEtyTElqeWExMXlCcDJMTXR6Qjc4THN6c2YvbmQ5MnNtTnNsN0VlekEyZjFhRFhVTWV4cUJSL1I2OEtBM0ZvVFhob1oySnRRUFRmVWNCaXdNYXNzcnkwaldWblA3Q0ovNzFrZ0IxUFpiRlZZRGltbHVDTzBBSkdranJYVlRQTzl5NWNnU3VDdlVQOCs2QVdhRTVaTDEzMnVlUmlnWUREaklaelM1SWthdHBMVUZFNE54ZXhoMnhXdkdseHArL1cxb0IvN3dOUHBkbENLSW1FWXpOTXNyeTBqV1ZuUDdDSi83MWtnQjFQWlN6aTM2emtES1FzVUpRNE5ObUNRRU1SbzRROXdnSXZueFl2ZGNVMEF3djJlY21YZHlyM1EwMk9kZUhFWGRiVlRMSzh0STFsWnord2lmKzlaSUFkVDJ6bW5VSWRyVTFMR0lxcTlXbkc3WDJjbDBkWkxXRmd3SnF0NHY4dXJlWFZIT0xNSmcxWkVpR3pBYm1KaEJ6SXNXeXl2TFNOWldjL3NJbi92V1NBSFU5azg1RzBldThveE9XdWVCTGN3aHBVdVNQeUh5ajdGYTlsSzgzQzdmZDhQRGk1OUs3WU1hUkU3NXhnR0R2eUtKUDFCRUpOczVReGdweEFETUxwdlZlRm5PbERMN0R2enpzT1FuSysvYkNjNG5td3dLcG9GQlZrUUwrdUpGT1F2SFRDYlkrU0ZUWEdlVmxUY1lOOHg3N1ZkWTBRbnZvT0lCRXlNVjJiVkZ0akJkUFpVNHg1MkRXZXBFTmlsbkRaUFd2cEkxRkNaS1Yydi8xeGJXc1RFTGZBeDhDTEdUbjVOOHRuRCs4ZVl4dHRRZkpLekZKQmhGOUxJRWRMNkppbnFORDBobzk1TERPeEptOU9NK29GRHBnWTZwUVY4aHRMQkdUN3U0S044S2tnMzJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlyRzBpcEhnb3Nibjk2SEE4VUpKVnBKTXE3MHlsWnMyRHpjMUl6VE5lSlRaeXl2TFNOWldjL3NJbi92V1NBSFU5dEMxOGtMVUJBSXMvQStjTnZvSHNVWkZURERFQlgyYWJtU2JwM3VpZE50VllrRFJsZkdYSFhXWFNyaXkzVWRYdzdHc01XOVRROEpoQ1ZEV0NIQ0F6bFpwcmY5bm02UEJoQWFGRFB6SGdFQTFLQk5YdWwwYWdPZTJwSUlTY21zSEtDVkV5bGlvVTRUcTI0WHdZcTgvaWR2NjVMeHBxcFpLVjlsQkRkNUtIMTkrR1ZaNG5YU2lhaXFEUGJUc0NrYUZVa2xjU1JERmZrUEtZcDBPMkUrWTl6ZjN2UkViR0p6SW1qeGludG13RlRvWHMydngwRThmTWp1dnpwRXNTWmdsVzJBSjZmc1R3K2NVVVRjL2FGMEo0ajMvV0RTY1hRejM1QWkyWHRKL05obmdhVlhtelVvVUJmTDl3T2RDSzh1RU5OYVNEaTdQT0Y2QWJYL1QxS0gwRnVMY1NVSi9vUkg1VTdNWTI0TksxOFE5UjVQV1dCb2xqcXZINDdRZklwcE5uZkdrUnF2cFN5cDNYeDF4NlFMRzYzb1JrRXRBakdkT1dsV2Y0NEpSYmhrUDBqSm9BcVAxMjM2SmcyMEo5MkhuNWpya1dVQlNqRmZHOUlIVEs3bjdWUE92OUt4V3VKdks2N2J1Yk83Z1hBc3lxaVpvVmJ4ckplQ3BNaW5sdWt0Ylo5QlhUdzk4OHo2MVRTRWZnMUxYM0hrRVVIbVM1QXlaZjlNWHdnU2FWMXRTUmkvTFhWRnEwL0xRWnNSd2VTQjlwd20zZk5hNUdQQUZKc0FkQUJjdzA2ZEdGYzBKV3g3NEdSRmtabmlYd0FWVmtIRkM3UVdTbGF2cjc1dGV2SXdzU0VwM1NDZXJoZTc4b0EvbHVkVWdDcDNZaXFsY2Y5RUxNMWFQNTA4aEIzYmFEaUdzRlJyQ0tqdkRYV0pnOFE2U1h5djJITUFwN3pyUkpyMkowMzJlaWZOMmVubWgvKzFMRzFUd0lHR3lHRG5XY04yQlo1TFpKSGViT0ZseWJaUmt5SjhnNTVrNkp4Z1p5VUw5T3FhZHh6SVU4TDE5T3FCMFJnK01zbW03SUpkSG52MDE2QUdiamRYTnQ4aUtvcjc0eDF0VmR1cUlwUldNbHhXZnIreEJ4UEIyRTNCZTZ5L0FLYnZub2xZaGRWNHNJUStZamhSa0ljMmN4YlIvZW15SmNNc3J5MGpXVm5QN0NKLzcxa2dCMVBZT2phWEQ3emsxVXRmaTBtMmFYR1FTbXdKMzJFT0tKRmlSdVhzaVdWNUUvOHNyeTBqV1ZuUDdDSi83MWtnQjFQWjR2SDN0NjhjckZtQ0trMUZFYkVycnl5dkxTTlpXYy9zSW4vdldTQUhVOWhLeXR5ODNOdVE5Q01tWTd0cHFEWndBL3RRUklyTkhVbTR2aGM4VmFHSlp5UzdCZ0hlRmhCaGQ1RmtsY0JWMTYzcGhRcWN6aWJkTUYwRWw3R3pqL0syYW01cWQrS2Vna2tFU09HOGtRUWVweWJESUZIZit4L3l1YWhXTFZDV2o2YVU4S00yaFNlMW5WM0JtTDNORzhEd1JwdlZWa0tkNi9xTXJmMlVHTnFjcnRVc3lxM1RLYVBjYWFFYmhHTTBXS01IZmhwNy9KWnVuNy9HbXByUXNveUhNVGU0ZlpUUEpkVEg3aGlIVVVBSndTZEJmNmtMSHVhR0xxSjBSb1ZoV3JMOStwWllPa2hXcHd3MloyVmt6K2JROG40bmEvcW1iOHpEQVNnQVRyS1ZYN3BSSDZJREhDdkJMWHcrSjJ6dHRDeFJWYzRFN0JHSkVqYWQzdC8vRUNIRVRrRXdDOXUzZXhZWi9FQXYvZFdPTVVXM2xMQklhT1Vxa3lPMkJ6Z2psanN0MnJWUkRIV1BMelArd2kvMTFtVVIybVErNFphV2cydDhpOUxSWjIzamd6cFF5K3c3ODg3RGtKeXZ2MnduT0p3bWZ6YjFlZEVBOTNBL2hJdU5YQlhPNXF3SXo3c3A0bnNjSVRSRTNndWE2NWQyYW90b1JaSW1TZklNVHd0RDJPd2U3WXlWYmF6czlZZWdzY1Z5L3BaVUNIQS96NDdLcmVBNGFBZmphdlR4ODBWN0pRdm1xQWgvazRwZGdHOXF3NFQ4dWNhbmV5RTNjb3IwbndnZzZjOVRwSHFOWitsYnJCUnl4SHZRNlJZVEl5eXZMU05aV2Mvc0luL3ZXU0FIVTlrY1FDTk9jTFljK2hybFcvazd0OWFuZnpGM2xHWnIwYVVRQWxrSHBGd21jWmdRVDNXQUNGNmhydFEzN3JVaG5hVndaYjFUbGpESndHZFJoR2pHZk5DaTZ4QWVnTWZMVW8zNFlXNlBDQTl3blVNWi96R1Q5OUp6V3UxZjNBNjFXYWxaNVNnR2ZMc0E1VEtjdmtoM1h0UENFU1o1QXpnQ0hSM3R1eHJWK3R4VWt1ZFo4ZkFCd0V0RFcvMk1GdWsySzNkZmJWYklUM0JVNnZ4RTZQaldOcEorY1c1NTRJcXlqNG1nbmllakUzVUNmcnY3VzNHZ2ZKc0VrZVVydVMxTUJoa3huRWszV1VtNXpMT2NNaGcxclo2Y0s2TXlXQ3JFd3lZMmdSeWdyRHA1Y05Rd01mL043ZnFMT2w3alExVmtLaU1UakFnRTVnYW1rQ205UUFiQkNGbXEvZmx1N0RGaTg5cFBJS01yMUFGQ25XNFZBa3JUVkZkcW85VW1QYkZWYWhZSlJRbmtVSSsrRmkyMW1NSG90eE04Y1hnSTM4cVpEQkI1WllhaDJ0YzlIMWNnakROU1l0TmJuT1EvUWxiTkZDT3NtbnFmZ3FxdHJoRGFLWU5BODhVOWNwdkNTR1FNNjkwV01mUnpROFB1b05UY1JpRTRkeU5vbXQ0TlVoQnN0QS8xbUQ2VGNlYUJmZGhMZkN4dDNaYTNDMEUwTkVDejlabm9xMTlCK3ZETU84TndOWTlpNUpFR0ZwMGM3Vmw3cWlNc3J5MGpXVm5QN0NKLzcxa2dCMVBhTjRFVDdSaXA2b3NaYTBYeExEeit6TXE2SVgxdzZyeTQ3RnRyQk44SXQ3UlcyYTBOT0pCeURacmZHWENTODUrY0pQaHBGNisyVHVwK3NnYlErbTlMZHl5dkxTTlpXYy9zSW4vdldTQUhVOWw5c2xzaSswVVJrWWxzREtpaDhMUCszTnFkUmxUUlhKTEo2WUVhN2xlTnp5eXZMU05aV2Mvc0luL3ZXU0FIVTlsUTkyZmtOcnhuMXpnYUh3MVQ1bDYzT2xETDdEdnp6c09RbksrL2JDYzRub3ozeFRvVlhHeDJ5QzMwcWFlRlhLdVVhS083RGNGby9VcmUraUdqc0RtQkdTLzZTRHZZTkIydFc2eUVQR2JSMVpFeVJWRWMyOHNTMzd0Mm1SVThMaEZ1QVhyQVdFZGxkczhLQ1VLUVkrS015Y1lVdFBXclIrL1JSWXpkeUNlUlZKUmpJa0E4cDgxVzdQa3AzNElkbW5sLzZ2aklOUkFJWDY0ZTNNd3lCK2ErMWxNajV4cHhnL2FMSFJZb08xbmlySXJUUGlGRlE4MEJtcGEyRDNsc2NMWERWc01VaUFCd0NZaDBQYWhwT0pyekxLOHRJMWxaeit3aWYrOVpJQWRUMnlhTGxIdEY5ckFtbXlFMkdTRXdMUWM2VU12c08vUE93NUNjcjc5c0p6aWMyKzlWSDV3Q1Y4ajZZUENvbXlFcVl2U0NsT0k2OExFQ0VWUEtsSGtIT1BkOW9DWGpGdHErNUtyRkdVejBvc0pGOGJ3aTRsNUtwaU54c3M5ZmFZSFdUYXJvN0xvTnNOOE5nM0xHYUhzT3Vmei9CcUVZT2xodkZkZE1ONGQ5cWljckxLOHRJMWxaeit3aWYrOVpJQWRUMnZINERpZVdTOS9WSktEdWFrS3YybUJsUFJaZU9iSFBjM0Nyd3NlU2oybTJlZ0FydHBYZllZSTdHNm5pVnpJV2c3TEJEYjlsVVBCR3VPelgwTnk1c3lrNWF6b3dRM1NENWJ2anhwcnVYQUpQRkYraTlWbHpsRk1aek9YeTJJSWhBRkRxR1pCR1NIVWhuRSs5ZDV2anZOOTRveXlTWFY2K0Q3Q0lpbHRFeUhMUnZxSkc3eUthZnovYkFjcEoyK2c4WHNTVEs4S1pEOG9pY0hwVHplUjBlVElWcHdRc2hXbmlnVkpENVpBR0UvZFh4aVF4dkFZeEs3Qk9xRXpFSjFxWFVTOHNlN3grUVpuR29hOEpEUk91bk16cXhxVnFaemczZXdHV3B6Znlha2xaaUxGTUNvby9FM1RnL2krWGc4dTJmMGpKb0FxUDEyMzZKZzIwSjkySG41anJrV1VCU2pGZkc5SUhUSzduN1ZQT0QzUDBtV0t6N0QrSXhPc0lrWEpNN3Q0NmIrZWxia0pLU0ZuTTdEQVNIUDg2a2NlZEIzK0ZMWWNreFdDUllwSC8zVHhrT25qa3dpcFVLRUxMMGZ2aUFUT2NranhVdjA0NHpNbERwd3BvRHRwa3NSSWdaUEVuNTNWcEE3b3BkdWVOUDdTSHdpMitqelJaL3YwMnZ0RWJ0dUpyQ3B3R1V1SE42bXkzUDZHTmJmWjNnNm9NZmlCckhVZERkb0pFZUJvWjI4YUVxc3NpUEpyWFhJR25Zc3kzTVp2VDlWUUswSmhsWHFpWERlQ1pCWWc4K0FEQm1OUU45VDZVMG9xOWtSZmg1bDRGaHBIKzh0VC91WnNxenh1VzF6cFF5K3c3ODg3RGtKeXZ2MnduT0o0eGFISUwwZUZURjJORXBPa2xubDhIZFhCUjhZSlNVaU96NWNwNGRoQkd2eXl2TFNOWldjL3NJbi92V1NBSFU5bzNUSmZpYmhsUGd5anpSTGkwSFR1aUUwajlRdGNZV3NWVmF5ZXVxU2NXeHl5dkxTTlpXYy9zSW4vdldTQUhVOWh2WUpBVnBFQmZzTXRtY0J2V2duOWJMSzh0STFsWnord2lmKzlaSUFkVDIvZVc1aFRIK3lMbWltRnE1QXE3UGFBRCsxQkVpczBkU2JpK0Z6eFZvWWxuSkxzR0FkNFdFR0Yza1dTVndGWFhyZW1GQ3B6T0p0MHdYUVNYc2JPUDhyWnFibXAzNHA2Q1NRUkk0YnlSQkI2bkpzTWdVZC83SC9LNXFGWXRVSmFQcHBUd296YUZKN1dkWGNHWXZjMGJ3UERDZjd5SDZwSUxXYS9paDNBTTR3cXdjdXFVMTVITitvRHcveXNJMFd2SVlDZnQ4WWhua3JWQUZSYzd3Wm9qYUZrSXl3Q1ljN0VQOHdYdmpkcjdoMnJHR2RvV2MvYVdnQVBldWNrUWtVK2hVMWVQWmZjQ0xGWnZlcG1hUDFNQVhKSWk5TzQzNWdicHRzMjNhbERKU3BvTllKdzFsNEcwUk5FQm85UVROclFYVWNOV3d4U0lBSEFKaUhROXFHazRtdkFWUHRmejVZL0pDaEkzQnd0bUZvbnNBRngxQW05cCtuU0M0a2lvMUhpbjlIQVNWUG9yQkVXRG1ObVpMSkdTbDFadEpPek1qZGFsNkk5RE83ZmR3VUFtNjlWSlRKbURWTGh6RExpb21Ibm0zRVdvYUJQdDJVelo5U0VnRVF3N0R1Z3VEb3ducjlHRWhvWlB6aE8rYnkxYXc5SWxZWkNVS3RjMTZyaVpVcUNGa2g2N1RRbTVCWkZFZFpodUcrTWhhSXVzYytjZzc5MEFOK1NYZVkwaFpLOXJvaXovZTBwSGg2cFE4bCtNVjVYazdMdUVML2cxdHk1bXF0cDFSL0xlTUFIcmUzSENYM0ZzTWU0bWtmZEx3eVNhWnBJWFJXU3NuTDZsWXVwN0liWENzc0xtMWd0NWhMd2xBZmUwOStvMHpML05PNTJRZ1lWcEozUTVhZW04NjRGYkkyZER3UVVLWVNFT0pQakdPdFh3TUVpUDM2bnJjTEp1ZlZXSHNWSHZtYXo5M2JoaENSYTBweVRsVlExRjBYYXJ3YmFPVFhCbEJZRHVXcnhxSm91SUN6WmJXdzdsak40TXlVc1RWcitPTTFzaTRJZlJ1UVdaTTF5cEFKMlBEMFVxdGU4SUFNSlp6Mk5aY2NYRWJmbElqS2VxeTZwM3IyZk01ekFLYlBheTJRZkJpK1ZWc3pOdHlUSkFYNE14WWFUdEg0cHoxN3RGZVNkYnZLZ2ZLZy9XV1RGbG9RSklCUFlIRmd4UVowaitqaXZpK2dCcStSWXR5Q1JHcmxwTytwMUhEakVoaHdLbEJ4amp3N0lNeXRJSTNLQk5YdWwwYWdPZTJwSUlTY21zSEtKMnhwTG9maVh4ZXozOEJmWUJPWEJ2d1l2bFZiTXpiY2t5UUYrRE1XR2s3UitLYzllN1JYa25XN3lvSHlvUDFsa3haYUVDU0FUMkJ4WU1VR2RJL280ckdJaEZ1L1AremxiZ1ZHT0FMR01IQXNMbTFndDVoTHdsQWZlMDkrbzB6TDhCWERJVTdBTjRSc1VzcnM3L0dmVGZlRFZGOTIwZ296d2VtajlmY0Z4a25wMTN1TjZSVjZLZW9ZOG9vUjI5RmY1NHVWZnJWUzg1ZTNuV3dpbWN5TzBCVW04bXZkbGViaVF0eXA3Ry81OG0ySnpSd0J1OHdCNlMrZG8yNDlSdDhld3ZGZStwYmZuL0VVQTJuQ3ZGNlMzZG1HQjNtTENXaWlYZGkyVWpMVFdzWEZTVWNyQWxhcDZvUUFwdVNtSERkQmNuNFNCUGlzNFA4RkRXNS8yMVZ2czZ1VW9pOE92Y0hmSU1kR21vQTlTYVJMdE9iVHo5RHVpblBmb3I1aWNhaW5peEl5RFlob2NaTXBZUzFJNWZIYTNrYVc0dWdEOGxjb21TR21wd3FPRy8vblByVmxPa0tEUDNZUTdyYmZIUHFHUzh6cmpWZDZWVzdqUEdGQ0orTEV2MmdoOFN2TEJQY3J3aG40WnBWNFA5QlBzYmJMNEpJZmRtc01mQ1pWa1FYZGxGUW5ycm9zWnN2SW1kMEdYeUIydHFMaWVTbEdEQUlIdDlhUWl0VDZscXBqY0cxWWFNOEkxajFKcHhPb09KcDc5WlliRzRjVjNPVGZxV0w2WXQ0dHNNRlF4YjE0cEZQNmcrRWlrR2lZOTZCYXJXL0FKL1FUR1lIWDRpN1dFOFZwODkwbmxOYXdYTExVaHBjeFNhTmRDakRKd2tBTVNqaGJia21HTjZjbGoxWEVtOEJOMzA0RFJrTFlieWNyUjk5S3BRNDlHYy9rYWxYK0xHVFZVK1pjbGg4YndpNGw1S3BpTnhzczlmYVlIV1Rka0NVZ3k2bDVEU0pyV0pqZWJGL0JNZ0krVGRoVUp4RkVaS1JZTGdvYUZwUjNhMk9vcWRNKy9aNEtiUDJXV0NCMytFWnMyTzJVN2ptdDFyVWZSNTRqdDAvRmt0aEJuSmViNXYzWVZDRzlVekcxWGdLcFlTL1A1NGVTbFhlQVdmMktJNkJrK2h3aXptTi90cFRycjVqYVlHbzlKd1ZoeGtRWWZjUDRjbUNFTnpsdEZndG1DeERwQkZ0anU4S25FNUU1MG5ReWNBbVJYQU8wTGI4d2wxbmdKZmNReFFHT0hEd0l0b3VOb0RMUnJCQzZPU1FxZlNiUWtTdG5xVUJseTZYNmRaZENJZjRDNTJDUUNEUExHTldvMmovWnN2TXJ5MllUY0NFYkdjMGg2U042bXZ2bkR5Unk3QStYTVdwYnplaFA0MGdiQ3RJNXA4dW5sMzVSaFNIUERkZlZ0VWdoTWVqVTV5Ujl4U3JQbDhEL2hlVlZsMy94Nlc1eWFnbVp0N0xBeWI1RUhxeHpkRXlUaEh2b0FObkRSVHd2WDA2b0hSR0Q0eXlhYnNnbDBmaStxVFNTbCs4WXAwVklWR1dVc0hNZVJyOEwwOGZUYi81WE9SODNONjQzSWxVcDlsK2ppdmRFWHhLbzVBdjZ5RkhtVERwV0tWNGU4MTRzZlI1RFVycU9WY0tXVWtoTkVqbWtINzl6ek96NU9PMmppTnhWc3h1QzdBb3cwK0NENjR5Rk84cUwvV0JqbnFuS01xUTR4WkFieHI5TGl3Q3IyRUd3U1d5RWVRK2Z2V0wxNVRQSk5idHZMR1hNd2NGblRUSXB5UFc3NW5CQW1CSFNOc3c1SE5QWnQrdjVHRDM3dDdmN0pSMFY5VG94QXdHREp6N21iRVlya2ZENUU0YXMxTkdCQTJhV3VEenlES2hZaTZ1K2ROWnZpQWMxKzFlaFlrOE5oQ3NqbTRRS25BTWM0UlZ3SnNrSlV4bVoxNFNjdDVVQk1tTDV0K2tKRW9oTnpBMHpWUFp5eXZMU05aV2Mvc0luL3ZXU0FIVTlwNTBFMG9HMFNYZjBQd1pKRGJjZkhvR2FrRHNJV1BYWUpmUWx6YW9ia0RKa2cxcjBwU0VkNUxxZnYyR1BEMENWT3o5ODhFMlFScE1PK0pZME1xcmo3MmtYQWs5TU9FMGpXTzkyL1o0UHV6Qnl5dkxTTlpXYy9zSW4vdldTQUhVOWtjait3WGxxcm1uMjRnV2VBZFlBcEQ1ZzFJQ09PODdWSVdEOTdoMEE3SDFUalNOUkNMZkowaGFES25SRWdYTFVrNFJGS1liVU13SS9ZSnZDSXZET1MwVTdINitOSm1IWklvbnpVTG00NzlaenBReSt3Nzg4N0RrSnl2djJ3bk9KL0FMRm90L015NDZyN2cvNDQrdFIweittYjExMjZnNkVMbFEzT1gwRWdoQjI3bTBlMGxndm4rbWErallQb1JsWkVnUHBvbTVFNlhzcVlFaC9RRllLVnY5eTg0dFVya3VISE8rekt4MGc2U2VySEJSREZFaXNGMlBjNU5vSG8zRWQwdGVObUtaODdVdE9hSlpWeXR5WmpQOHliaCtBMWZzeEZtVG0rY2VSR2Z1ZHZHaEtyTElqeWExMXlCcDJMTXR6SnNIajN1TlIweU9qSVNaUUZYZmhkV01LQTRCaExueFZoOXE5clJlem9DNUtCTlh1bDBhZ09lMnBJSVNjbXNIS0M3aTdNRng2OGcydjZRLzV3ZGxQemJXRE5kN2JGekVxK1JPbldPak5maHc0ZGV2UkdSSE1wVmxpTVpYd1loV3NFeUdDYW1HSDJMUHF6NXNXaC9Kb3Q5dUFQQldleitoU2NIdmtLQU51MkZmTGloQU53ZmRWaFcrNi9JRXcrN0hXM3h2Q0xpWGtxbUkzR3l6MTlwZ2RaTnJiUzA4bzRvTlNROHlSV2lQQlcxUU5QelR5a1paR1pvY0c3QnFkcWlmZC9CaStWVnN6TnR5VEpBWDRNeFlhVHRINHB6MTd0RmVTZGJ2S2dmS2cvV1d1c2R4M3QxajdPRExaUmY3RElnYndyMTZNdFVJNXV5TjMvcDRiOHdRWUl2UWFLaGo0aGxlaStiakJWdUFiUldjSUlnSll0V3ltQWN5M1Y0bDFBbEJkT1k3TTJYSWM4ZFdYcENCanh3R3hKQlpUZVdqa0pMeWlRZkkwMFBMTHN4SXl5dkxTTlpXYy9zSW4vdldTQUhVOW4yZFBVOXRVSEd0WDdmL0NkODEyU2IrMG5INk9TVktFdW5EdUE2d3VZbHZ1Q3U4dytOVXZla3AvZVFXNUpJdHcyOERwdzVtWGhCOE94bGVRdzB5K3ZkamVJSk5qRWVpbFVzY0cxcWw1QlUzY1hJb1UzNEdNc1JFbWtKa2R2ejEwNk1hUzViVWxYd1lTZ1dGdzdMRWVWNzhTd3RLd0x0R3ErUFBqK05mc2cxcGlwNWwyQ2pQUFV3TjZmNGVialNYbWVoMStGS0pMaGUrL1pucmRvdnZPQkN3K0wrRHF6MkNGRndiMmdUZTZyK3QyZllxUDNpdVpJbU5DM0FUeVhJOHgwZ1Bwb201RTZYc3FZRWgvUUZZS1Z1dXNxZGdPTmdUc1duS0lVSWpWR2VBUWFkVjQyTGFCQTFmMGttNEVtNWFzc3NyeTBqV1ZuUDdDSi83MWtnQjFQYXpFY0IxOUgzME9JZUNnczI5bk56QUtDT0llTmhEWnV1U3dNMlpYdzdSbHJTc2xpdnR5WVBIN0dFTDBqdFdlZ0YyOGFFcXNzaVBKclhYSUduWXN5M01rVzU4QnJHWTB5N0lEUWZnV0dmWnAzMzBZWWtQK2wya3NITGgxWFZMRjJ5dWVVdU9nRUswcDR3dU5KRExwQzFveXl2TFNOWldjL3NJbi92V1NBSFU5bkZpVGtxam9uYUR5R25WNWw4eUIzcDVHVVlweWFid2ZSZ3pWY3JjMmhyUjhIZW1wMEE1d0lwMGQ2d0xaa3A2V2NzcnkwaldWblA3Q0ovNzFrZ0IxUGFhMElZMUwvcXVwZWNKNGtwbzBVMHJBdnNJQjNKOXJJcUY0TGZxR2pNN2Rzc3J5MGpXVm5QN0NKLzcxa2dCMVBZRGlVQ1RieEw2czFMSllqcHJnL09UZ1d2czdpRm9BVVJwaWNSV2xXVU1NY3NyeTBqV1ZuUDdDSi83MWtnQjFQWlVQeHl6MVpubEo0ZmFRc2hiSHAvY05PWGY4VjdLV1dNeUdVMmZHYTRKdnNzcnkwaldWblA3Q0ovNzFrZ0IxUFkwMFBWdm9NMmZXOEx4Tm1KWmo1ZlV5eXZMU05aV2Mvc0luL3ZXU0FIVTloOFBkK3RtaGFUZS9KaFJUY3NkdnRzZXk5MUp6bklLUVcrNlk3c1VTNUpZV3ZGa3Y0dk9rd2NzT1J2UG1CdSsyR3F6SWpjTVl2aFF6S2VQZWdqOW9KekxLOHRJMWxaeit3aWYrOVpJQWRUMlJXeDVlb0lJYWRWT0ZWTTBqVHdzVGNzcnkwaldWblA3Q0ovNzFrZ0IxUFpVTGpuZUhHbnlmd2p6YytjS3hDSlpWL3pqZGxhQ0VFN0czM1RXN21NRDBqekp4OVRNRGtadHRFM05vcUtHd0w3NmNxM003TndXWWhSaUVvaWRERFhteXl2TFNOWldjL3NJbi92V1NBSFU5dE50bkpmc3RJR0U1UUR2TDJqRDY4YUtNSFlBMDdiTjUrTXptMW82QkUrY3Vsdmt4emErVFc0TWF0MGh4dFlEckh4dkNMaVhrcW1JM0d5ejE5cGdkWk5LZXRzS2Y5RzNqanhTd0VodEsyaUNKTm9yVEdNa3QzZnB1VmtaQStWd1c4c3J5MGpXVm5QN0NKLzcxa2dCMVBhc0grWnVGNkxxUVl3NHJIcElMR3ZYenBReSt3Nzg4N0RrSnl2djJ3bk9Kejd5aDh2MVV5c0VsL1pwblgvSHYzdmRkNXVsQ0dTRW5GU1pRVG5pMkYxSnl5dkxTTlpXYy9zSW4vdldTQUhVOXA3bzdQN2lyb0FEU0hCNytMWmJxN0EzU3Q2TUpYaUN5V1pxS3hNTDczcFV5eXZMU05aV2Mvc0luL3ZXU0FIVTl0WW1qcWlEVkk4QlIrUzY4cFRQMjIvT2xETDdEdnp6c09RbksrL2JDYzRuL0lERUZFK0xQZ2xYcGEvV2lOQ2t2elgwSm1yZnpzWjZMeCtFMmJaeFdQRExLOHRJMWxaeit3aWYrOVpJQWRUMkJWMDFDODVuR0E1NjlRekcyelIrQUV5NkF6dmRXRThySXllQk13U09PQTdMSzh0STFsWnord2lmKzlaSUFkVDJTZnU1UmJJY25MRUczeWVxVUlOK1pKNVdxZVR6QU5uQTlFZTZ3ZUcyL3czd1l2bFZiTXpiY2t5UUYrRE1XR2s3d0wwTWZwamtGcVNKb3N2eWNzYnZaY3NyeTBqV1ZuUDdDSi83MWtnQjFQYnE4V21CclJsRXRaRS9lTWZTM0tzMXl5dkxTTlpXYy9zSW4vdldTQUhVOWp5RzF6amc4aE9MTEp4dGpCclFTY2ZCVFliNXljeStVQlJGelhkS2FmMXBINGFuSVBIK1BtZXVJUzFBMkJlMm1jL1RienE3SlFyYmprWEpBcndmV0VlYW01cWQrS2Vna2tFU09HOGtRUWVwbHFVNk5jSCtVa0ZaVlRrVlpJS1F5UFQ1dDhYSHlIdGdHRFRRQXl6cHlJcGZMaHF1NXp5Y1MxalpPMjBRVndKZ3BjRTJ4MTY4UU5ETk5MZStxWGpNYURDRm1Qdm44em5ld3BoZmJOR0E1Sk5BazJoY0FhNzMwMkpzY05scCtpeTI2S3JPUTR5dFE0YXBpL0dKblhuOTl2ZUtlT2xMUDRQb3JsaHdOckhSN2hDUEd0MDFtUE5YUk01dm5zcFRZMDRBdk82VHVUaVdoblRSQWkrR1JGY0V0UnZvR0diYmFPeHdpbHhhcHJyUjM0dzFDS1BWdW8vTHpVZkVBR2lEaVZRV1RiY1pOelZpOFJ2VUtMVE1FUnQ5THdPazgzUUJGVEhQZDljL3VqcnJ5MTZ3dWJXQzNtRXZDVUI5N1QzNmpUTXZRSy9NUFJaVmVWV2ExbGJSaGhaY20xSVZEUnk2OEpXWmN4bU13Z1JRNkNFQlJ4QXNNWHU1VmRzUFc4V0FULzVGZmxIdHlCeERydkRYaTNhMUpyWng3TytubUVya1dQVGRzWEZNVm9jRHN5WG9QNEFQTkJpckdwRXBrSzJVMGpKcmQwTDhvdGJmQmRSeXF0azVSc2U2eTFsamJDWHg3K3hvTDl3eVAwcm5WbzV6YkdZSEVVMDRTcFg0amVVZGwweHlLclRtYnFMeWNrbmlEUWRKUytwUEs3ZUNqV1Vtbm1kanJkMytFMmZ6dlQ0R29jSTd2b1ZFdXBxeWh0emJackg0Y0Q2UWpvMGJoYmhhbUxBVlZoRkFrVmNIak5TUHNvR2dJYmR5akFSdUFNNzFEZ1E2SkJJTE1oRUlWN3B5a0M3S21UNmJ1WnBPdTRqaVlmNHo3dzI0OGU5bHZ5ME1JU05YR2V1eU9NK3ZHRmxhNnJjL0c5alFFcGFOSFJYaHAvSTg0N2huN0w5WG5TYkNsbnZuMm9uRVd0alVZU3MxTXd6QlB0dDBLR1VoREk5cFcyZE5xdXo0RDJLazUvVkxXbW9MQmNLVGJxSzhWbUJQeFNLRnlESU0wclB4RHVnZGJDaDRwNENNREl5bjV3TVQyeVh3VnBzTFRIYUR4ejZGZTNvMGFJYXEwek9jTkhRRUVGY1NRZVZyV1RRbzdrZjhMQnBmc21yaFNxdUR2ZkhVR1l3bEplWHJzdHBjMzNwYlUzYnpRcFpCSXdDeHY5eWdFSmFJcFUwaTNCZGM0cDJrQ1QyV3pISWFRZ1dkMEpzTHoyTXo4SmExUDNIWi93ZGxtUStIQjZOUU1ab3ZLaXUrSm5jdk1kU3ZxTXNyeTBqV1ZuUDdDSi83MWtnQjFQWUNrYkJFMkNLN3BQQVFLUXJycWgrMmMvSFZNMUNlWm9Qa3cvZko5Vmx3U2wrTWJSTmZZY2NMOERpbnpiOXlCNUVTR0ZLNDM0Z3MrV2dHY05WU2hEamJoakVNVjVTaWdIUnR6SGlkeUY5N2h0aG1XTEIxdXp1QTRrLzlpd2NyMTVMZERVR0dJeVlWdFhETTA3NXEwcjh0eXl2TFNOWldjL3NJbi92V1NBSFU5dWVsQ1l1bmNVaS9MeTJqZjVLL0dKZjArYmZGeDhoN1lCZzAwQU1zNmNpSzAyMmNsK3kwZ1lUbEFPOHZhTVByeGltVjhIWUx5ak52Wm5kdHBGc0RhWjZITWN0anl1M0I0b1krdk5JZ1JrVDZBNHRuQzRTVXNCZFdMZm9YVUpqWGxvWG1PYVZVS0x0QllYcUtLMVViNm5qL1hVbForTnozeFBGblBIT21GRUU1c0ZMR1p0QWdOalNTRXNOZjI3S05qUW1ieGhRKzI4QjZiRENnMC8vVnBZVldvYm9yV1dJNVhzN0NkV3p4THE3cWFlQjVUaFZlZkszc05RMFV4cjZFc29lM0JIOEdLUnpsWmJFOFdmTHBvYllwbEUxeUFWL3cyNlZUUzFtNkZvS1hPcnJUeEU3cXNXaXNBTzVoTWhJV3pmMkJneWN1cFdDUFhQS1pUa0NhaCt5WlBwdTVtazY3aU9KaC9qUHZEYmp4Ui9KWERhaTFzaEc1Qm5FTXZST0IzQVRiY0IwNi9lN0FHRXZSRW8rSVJveG9oUXd5a3QyRWFFV0pyQW5hTzc1WkZHMFpDN2tTbG1xMWYvQUJ5YXdwamN4MkRGbUVrNVlON0JNd0xBalZhbWZROG5qSzFqTmpkRzhSK3FYSkVIY25MRStjTkt1MDl5M2N2a2tiOEN2N2RjcVFMaHk3QVpuVEI2SDdmRGRyRW1tTElBWGgrNDR0ZmtjaTUxenZzUlhEMGZMVWR1S1F5a0M4RG9VL0E3YTZzaVI5b0ZDZzVSQVFJNUhKNExRaEVHU0hUUHIzbnFhcEdFb0YxMnJpT3lBYmMvSFZNMUNlWm9Qa3cvZko5Vmx3U3FFVzM1NUxDUEx6WFpuRWZITGcxL1E2cFp0VDJlRkNOMHhXdnRyK0x3Ny9HMnRHbWlBRXAyZUF4blJZd1o4QVpJeFlPYXBhakEvZ0JPY3B4RDFHMG1CK2tEUGRqR0xCQjBtVG9Gckx6VkEwbVllYllJbmpHNGY4YWVQSDljcCtyVzJNMXFtcnljQThlaWZJYzFBeHNiRGMyVXNKMThpYVBYeUk1bk1INzZCSzF3M0dObzQ1UTcrTERoTDRxUjU3TkQ0aklPbkY0Y1g0RkZHNmU5Q09oUi9zL1RzbitEeHI4czVnVC9KU1g2WHdXMVYyNm9pbEZZeVhGWit2N0VIRThHUGVySkFiVFpielFNZWlCcWN5amZHbzVZS3o3T2NxM1NBRFRGUmIxVXN1bG5wOVRPUldvWXMya3VrdmJpS3Y0anZoTlk1RWZzbjlvaEpremRDZjUwWDllL1M4MWFxZzR3Ui9lSjZjWjQ0S3Z2L3FpaGFRV0dpeGJDckN5UGpKYS9meXh2dUdSU3hjZUhLQU1CN0VPTURNWFdWU1VuUzBCZDVUeE52OElhU3IyM2NmZXRQUkh3TkNOOUo2cDk5RVU4NlVNdnNPL1BPdzVDY3I3OXNKemlkZEhGTmRDMmVrSE1laStPQklaQU9zTEdLMlIxS1BBRU1TWHg1YWZYQm1jTXNyeTBqV1ZuUDdDSi83MWtnQjFQYkFvL0h1Z2gyc095R05hSnhrL1FFenNGYUNSTTB4VlB3Nk96RmZnb0gvKzNIeEN6V1FaVVhaU2R5cDFEOGlKNnZMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9YaXlXZVVPeUxuUXpmM1laOXdHVTkybHlXbUl5S21RL3FReXRxeFFoVnVMUFNjNVR2QlBuVCs1OFRyZUhUNXlPTldPYUI0MW1hNTJVM1B2bUhtTWRNMmdyUXBDOGR1eFZ2WW02TjNHbldBM3UzYXBhY1JnR01OejNCeWtweExzODFOK0JhK3E3SVRkczJ3ejRndS9vcDdKUkdEaVhHOUdLdllRZVM3Mmx4TWlQTzl5NWNnU3VDdlVQOCs2QVdhRTVic3pwVzZuQWV3WS96N0VwVS9rRkdGcnY3bnBZSm1HZXl4UHRqaXd2c1lGbXB1YW5maW5vSkpCRWpodkpFRUhxZlhqajNlQ3o1d2NiZ1lXZG5ydFNGd2JXU3VqeTBsUHJVQUdjdFB2TUNtbFg5cE5adzFHV1ZocTl3UEhuaTA4YVJFYU9ObklWd2xEOURwb2x1L1F1a1N0NGdiSlNqTzNCM0VldHJSWXZWY1NRbXBwblhpTWNsVmpDUjBBK2IwNDNVcUFUMVI1R08zc0JZWkVyVko3MEpVWi9yN0NVeXNGbWZMTXVmejM0NWQ1NlFuRGJick9hcCtmZWZGa0dzVGdITlhqMlgzQWl4V2IzcVptajlUQUZ5UnpJMGdaN2kzZnUrR2lKVkw4bEpsUWUwUzBDUDIvZFNESlRCMHhoZUdPTHV4ZjZLN1dSNUZ6UHhOT05BU3BTdnljSkF4VzJCS1BIV0hINHVXZjVsRU0wLzNhd29EMUlyNzgwZXlwL1hjSTZ4Nk9jY0l0aGZpWGdCS0dEZW83YmhocVpvYUJ2aWcwMHlLOHdiMlB1UURBT2puc3dudjN5NURaclZ0T2dHNTJNZU9jVEd1RTJZdm80STd6OVNNUFprdVBvY2pwakFvOU5XVlN4akF2SjhRTHBiYjJwSEk4L3Qzc24yWUVBQVA2aE8vempuc0dyVlVYRG5VOUtQdmRDOEJJSGZCa2lVdklEUFhLdzlXNWJKbDlkWkh1aDkrZGU0UWkwMXEweHZyNW84T1BMcFF2SHg0OUpGckZ1ZVhJWm8zTEs4dEkxbFp6K3dpZis5WklBZFQySk94YXZEdkJ5bjhoQklmMW04d0k0VTltWWZnMTVDSWo2RVRidVlxTFlCVExLOHRJMWxaeit3aWYrOVpJQWRUMnV5bTA1NldOWXpZQWZrSWhyNWdFbHV5RnZwNE5ETjZaQjBScmVza1hDR0tTRFd2U2xJUjNrdXArL1lZOFBRSlU3UDN6d1RaQkdrdzc0bGpReXF1UHZjMDEra3o4cTlYQlNXckhPQmRzN1F0OGJ3aTRsNUtwaU54c3M5ZmFZSFdUOE5BN3VQa0dCUGRiYW12Y250MzVZTjRveXlTWFY2K0Q3Q0lpbHRFeUhMUnZxSkc3eUthZnovYkFjcEoyK2c4WExYQU4wYXNIZjFZQ2tQMUFiMndiRC9TT21DWHpGMjRZVGhYekYxaVZTeUdFOTFWZGFIOG1FTmxvTjV4L2tsV0tyZ1MrVjFJWjNkOHBsOFVPSDdIRHlXMlhaNHAzcmZsNzRQcVR3bVJOQ1o2WnZ3Y1d4SExaaGFsWm12SEJQOWQ4TkYzSmVheXRpMHpVQWEwR2lzMU5UcUhaMVpUYW1PL1ZYYnMzaG1WL1VZZ0xMcDJzVzFvT0RyRnVTUFl0MzRNdzloNTVTRWdveEhLQSt4Y3dmaEwvd1NXSEJGbHF6RXpXQWl3ZGFZOFFVRzZDbGF5Tm9UY0poTENKL29OY2xTMVcvNzJVdk1nekMzZ2NlWXpJVnFGR0JsSDFvMkErbTJvL1FRRjduYUZKV1BFRlEvcm8vdW00RVZST3pDbmZsbHU1K2NsbzBlNGJacG5NckdJSXl5RmZTSFNBWXA2NjZrVy92Y2xHaVc4UndRT2pPV2F5dXc5cmQ5dkJtSXhrSG9jTXJkbWFENkIwQ2Ntd2RmTVN1OERHWVdPTWhtTkNGRjVjakRocVVkZzBHaTUyOGFFcXNzaVBKclhYSUduWXN5M01Idnd1ek94LytkMzNheVkyeVhzUjdNRFovVm9OZFF4N0dvRkg5SHJ3b0RjV2hOZUdoblltMUE5TjlSd0dMQXhxeXl2TFNOWldjL3NJbi92V1NBSFU5bHNWVmdPS2FXNEk3UUFrYVNPdGRWTTg3M0xseUJLNEs5US96N29CWm9UbGt2WGZhNTVHS0JnTU9NaG5OTGtpUnEya3RRVVRnM0Y3R0hiRmE4YVhHbjc5YldnSC92QTArbDJVSW9pWVJqTTB5eXZMU05aV2Mvc0luL3ZXU0FIVTlsTE9MZnJPUU1wQ3hRbERnMDJZSkFReEdqaEQzQ0FpK2ZGaTkxeFRRREMvWjV5WmQzS3ZkRFRZNTE0Y1JkMXRWTXNyeTBqV1ZuUDdDSi83MWtnQjFQYk9hZFFoMnRUVXNZaXFyMWFjYnRmWnlYUjFrdFlXREFtcTNpL3k2dDVkVWM0c3dtRFZrU0liTUJ1WW1FSE1peGJMSzh0STFsWnord2lmKzlaSUFkVDJUemtiUjY3eWpFNWE1NEV0ekNHbFM1SS9JZktQc1ZyMlVyemNMdDkzdzhPTG4wcnRneHBFVHZuR0FZTy9Jb2svVUVRazJ6bERHQ25FQU13dW05VjRXYzZVTXZzTy9QT3c1Q2NyNzlzSnppZWJEQXFtZ1VGV1JBdjY0a1U1QzhkTWFlOUdwVXNDM1l2NW9vUEZ3R01BVWxqUkNlK2c0Z0VUSXhYWnRVVzJNRjA5bFRqSG5ZTlo2a1EyS1djTms5YStralVVSmtwWGEvL1hGdGF4TVF0OERId0lzWk9mazN5MmNQN3g1akcyMUI4a3JNVWtHRVgwc2dSMHZvbUtlbzBQU0dqM2tzTTdFbWIwNHo2Z1VPbUJqcWxCWHlHMHNFWlB1N2dvM3dxU0RmYkxLOHRJMWxaeit3aWYrOVpJQWRUMnNiU0trZUNpeHVmM29jRHhRa2xXa2t5cnZUS1ZtellQTnpVak5NMTRsTm5MSzh0STFsWnord2lmKzlaSUFkVDIwTFh5UXRRRUFpejhENXcyK2dleFJrVk1NTVFGZlpwdVpKdW5lNkowMjFWaVFOR1Y4WmNkZFpkS3VMTGRSMWZEc2F3eGIxTkR3bUVKVU5ZSWNJRE9WbW10LzJlYm84R0VCb1VNL01lQVFEVW9FMWU2WFJxQTU3YWtnaEp5YXdjb0pVVEtXS2hUaE9yYmhmQmlyeitKMi9ya3ZHbXFsa3BYMlVFTjNrb2ZYMzRaVm5pZGRLSnFLb005dE93S1JvVlNTVnhKRU1WK1E4cGluUTdZVDVqM04vZTlFUnNZbk1pYVBHS2UyYkFWT2hlemEvSFFUeDh5TzYvT2tTeEptQ1ZiWUFucCt4UEQ1eFJSTno5b1hRbmlQZjlZTkp4ZERQZmtDTFplMG44MkdlQnBWZWJOU2hRRjh2M0E1MElyeTRRMDFwSU9Mczg0WG9CdGY5UFVvZlFXNHR4SlFuK2hFZmxUc3hqYmcwclh4RDFIazlaWUdpV09xOGZqdEI4aW1rMmQ4YVJHcStsTEtuZGZIWEhwQXNicmVoR1FTMENNWjA1YVZaL2pnbEZ1R1EvU01tZ0NvL1hiZm9tRGJRbjNZZWZtT3VSWlFGS01WOGIwZ2RNcnVmdFU4Ni8wckZhNG04cnJ0dTVzN3VCY0N6S3FKbWhWdkdzbDRLa3lLZVc2UzF0bjBGZFBEM3p6UHJWTklSK0RVdGZjZVFSUWVaTGtESmwvMHhmQ0JKcFhXMUpHTDh0ZFVXclQ4dEJteEhCNUlIMm5DYmQ4MXJrWThBVW13QjBBRnpEVHAwWVZ6UWxiSHZnWkVXUm1lSmZBQlZXUWNVTHRCWktWcSt2dm0xNjhqQ3hJU25kSUo2dUY3dnlnRCtXNTFTQUtuZGlLcVZ4LzBRc3pWby9uVHlFSGR0b09JYXdWR3NJcU84TmRZbUR4RHBKZksvWWN3Q252T3RFbXZZblRmWjZKODNaNmVhSC83VXNiVlBBZ1liSVlPZFp3M1lGbmt0a2tkNXM0V1hKdGxHVElueURubVRvbkdCbkpRdjA2cHAzSE1oVHd2WDA2b0hSR0Q0eXlhYnNnbDBlZS9UWG9BWnVOMWMyM3lJcWl2dmpIVzFWMjZvaWxGWXlYRlordjdFSEU4SFlUY0Y3ckw4QXB1K2VpVmlGMVhpd2hENWlPRkdRaHpaekZ0SDk2Yklsd3l5dkxTTlpXYy9zSW4vdldTQUhVOWc2TnBjUHZPVFZTMStMU2JacGNaQktiQW5mWVE0b2tXSkc1ZXlKWlhrVC95eXZMU05aV2Mvc0luL3ZXU0FIVTluaThmZTNyeHlzV1lJcVRVVVJzU3V2TEs4dEkxbFp6K3dpZis5WklBZFQyRXJLM0x6YzI1RDBJeVpqdTJtb05uQUQrMUJFaXMwZFNiaStGenhWb1lsbkpMc0dBZDRXRUdGM2tXU1Z3RlhYcmVtRkNwek9KdDB3WFFTWHNiT1A4clpxYm1wMzRwNkNTUVJJNGJ5UkJCNm5Kc01nVWQvN0gvSzVxRll0VUphUHBwVHdvemFGSjdXZFhjR1l2YzBid1BCR205VldRcDNyK295dC9aUVkycHl1MVN6S3JkTXBvOXhwb1J1RVl6Ullvd2QrR252OGxtNmZ2OGFhbXRDeWpJY3hON2g5bE04bDFNZnVHSWRSUUFuQXpzVE9ybkl5RXF6U3M4bkZjdStRWHYzNmxsZzZTRmFuRERablpXVFA1dEpwYlNmYnhqNElxbStaMlpmU3J1M2ZpMVRKYXliM0JJSTJzb1VMNy9VaHk1N1R1MVowbzVPTFRZS05UTlQ1cEd6cy9jOERnQzJkR1FGK1VtZlNmemQ2V1pPeUxubVlsTFZRVHFKMkhyYW9mdis2L0QvU3FWZlk0ck1GMElKWGx3ZldKcnVKd0FsQjdxVlFuS0Uzd3dmQjI1SW5GSE1TY3ZCaW1Nci9rSmZzTjcyRXlGTXE4SHduM0RRQmhkZmVoeG82NHFiU09TZ3gzdzhpYVU5TDhSTEJPVm81SUlMWXpBVzFSK3NKUU1JTHl4UmZvdlZaYzVSVEdjemw4dGlDSVFDa1F3OVZSVmpvcGtmOFZOMTJVeVREQWQ2VVBXV2dSNndMSVBuVFVmdEZqVU1mV2FZUmc4UUZHemZHdk4vUTFvYXpldy9kSHFDZlNWZVk2RXFKcFRFbitGWGRhNkJnUTJNMXNBNmhkNitRV1NMYWpSeFRMMFJkRzBsVnAxQ2l5VU1JN0F6QU1ud050N0k3Qkh5KzhxNks1NnI1cEhjSUdoWXhpcnlKQVlmSXFJNDcrUDBUR2lVbjBpZ3cwZXNwY1RaSTZMSnFGSHJKeDFPT2lsWkdZUituSlpZamdsQjV6OHJQUTFpbmFuZFNpdVNtOXVxckg1U0xnT0dwQi9hVE5RSXUzSVFxVUxZS1JyUnJNOUlEU3dJclk4a3dYZktKMENTeHlFL1dnNGlWRHQxa0hNRTI3OGlodW9xbDVlbHpMNmRoNW1jMzlMMWhoTkhveTNxTjFSeXFKTWptcFNYTStIL1NDdm1NWHFJQ2xNSm1MaFc3dGEzTyt6NTBpOHBNTXhZQ0N2NDBvM1JyNGFkWGR0R1RxVi9Nano3cmZZbXZEaVpETEg1SXJDNW1UdWlpQmpmaG12SzFMcTZqK3B2dHNIenp2Y3VYSUVyZ3IxRC9QdWdGbWhPV01NYXl2UDJuc0dZR3RmcjdjYU54c2dhMi9uUWlaZnNBbUhOV2gxdFl4b2wvNnZqSU5SQUlYNjRlM013eUIrYTlsMzRrZWNSajZwL2kwMklwTkliQmJxK1FiemhnRmFVdS9tdHJ1SmtmMUY4T01TR0hBcVVIR09QRHNnekswZ2plbnI1dEkzYVg1K3g4VmNDVndKL3krVkJmeS9NK3drYkM2N3BzVTZZZHYzQm1FL2EwKzRraWRQN2pLVS84Q2FaaDhid2k0bDVLcGlOeHNzOWZhWUhXVEtUbUg0QytrWWlZSlRvVG91a3YwUWVyc3JzZk9VZEx3aHp0QTEyTmhZRUZ2SlVPMHQvYlZPby9TZElmVi9WcmhadklUM3V3SzBMVWJ0Q0RQZ081RE93RnFseW9Manc2K054S0M1ZTQyVmVidW10SzdoMGVUK2hNc3JTSExLMjBsbFBiUFdJR1U5N1lIVU9xMmJwelltREZiekFjUG45SUZsQkhEb3FYNXlzU3hLek9qQXd4NERleS9JdEd0VkZ6LzVTTkNuQnZ1YWlOMEt4dlZEN00vWGZ1aHliSG8yTjhiNTRHeFlJTG5lUURkTG1ZQUtrdHRmLzBQb0NXazhSajg3NTBpUnpNYmNQbTJtTDVTeVJMUXJIQU02aHNsU3VTdG9xY0hUZThzL0o3K1JMOHBiVnp4Ynh6UERENUtLREI1TjBsc1pUUmZScjh5ZUVXRkkyU3lDQjRzMnFqYzV2Nll6Z0c3M0tScHRiTWY5aWpWV0E3c3dOcURoYk03UmNyRFd1TDVBL092YWdVMDBYbkhOTnJSa09zbW5xZmdxcXRyaERhS1lOQTg4VS9pbHhqUytrc1U3VExsd0c4aU14Q1RHdzdRK21LWGhSeWExTnptcHBIaFczK3VSOUdjS1kxeitncEJDUC9tTzNtdVRuQ1dQa0xBdHVEb0sybDl5VG4vS0JOWHVsMGFnT2UycElJU2Ntc0hLRnNQNVdjdjJOVnEwVXV1d296Yml6U25TSCtYaTFOU20vVmh4VkNjejhxYlEyYkJUYzB6SUQvL0h1dEYyRmJmd3FtOFV2Sm5LaHcxcU50SjgyQWQ5QWpMSzh0STFsWnord2lmKzlaSUFkVDJCY1VZQ2haOVhCLzFPYkhYWUExaCs4c3J5MGpXVm5QN0NKLzcxa2dCMVBZNDk5bXA4U3MvQzN4OG1XaWpjVWVoMHptaW5QZ3NaNkxaRDhDRktvTEhrdEh5ZzUvOE5iQkN0bEpjOW1tUDB4ck5RdHVpUHNlNjl4SHZRODJZSmJkZE40YmI0MjJOVWpzWmdOWWIwRzIrYnhkWmkrU3Y3cVVtTjgwOUd5bzNCOEhySnA2bjRLcXJhNFEyaW1EUVBQRlA2ZFpkQ0lmNEM1MkNRQ0RQTEdOV28yai9ac3ZNcnkyWVRjQ0ViR2MwaDZTNHk0RGlzUmFlSjNvcURLWkdGdGduOTVteGxON0JRWkJFdjgxcGh5blJBSXZxWlJ3VklXZFE1M2NrU3RYYVRHSXZKbG5aV1doR3ZxY3JLUzBBRzQ3czFMUnI3REltYzFOc2VKTzg4YUgxUzZaZCs4MnF3S0hBazJUbTVxLzY1UjBTaHZtWm1GU0JlNm5QRTN1VjRGcjR0aVhnUDFLaTNyU3ZFMHptUXRWR3l5MXUyaVFMemxrZ1Bsc3dIdHJIa3JYU1lteG1PZFlRUVMyWG5LZlBhRVpwZzRIUm1YWnhGQk1TcHNaQStxcytzUUhjTG5saWtjUTUxZ0lLUTJlbUtOdkk2czVqUm5wdlhGVFNQazNUcXNRZ2FCQWFOQkNFa0wxSncrbkNiYWtJUnYzL0NGdXVzWWxCNDlCem9vNVI2RWdhL25vc3g4NGhsenM4alBvQ3JwOWwxMWdCTTA1bUJDRFYzNitlM0p6dzh3dDRwUGFBakNOUGhkcU1ZQzd4Z0l3cS9QaDRQKzR6TkowSGplM0dlbldDdDZtSWVEMVRJd2hYVzE0a3h0UjE1Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWVd1SVpuZmoybytCVThyYjkra2g5V3l5dkxTTlpXYy9zSW4vdldTQUhVOXBDUm1pUVhoNGlTK2JzM1VFckxSS3JYTXMrQ1dXVVFPZHQ1TDZDQ24rR2luZ2NhUHFJRlR1cHZWdC9OcjE5cUM1cGd5VkZ0REMzaVRqOEhkSVRjbkdwVGVtMG1NdmpLeW51TjdFaTRac09oMFF5RnJzeEVwazZMU2dCazREaEJnek51YTM4enlua1VEK3VKN0dYY0I0VDVKUnpMSnk4ZmdMam82SVZYQUo1bmtrQ3BtdnExSklKL1lLeVN1d05kbFlseHg5dVhjZW1lOXFKckxSTWg1RUMxdnJIZ3djSFphRFpyck02R241QnIvcWxpSEhXVGpPbG1oNldyZkRrcFY4c3J5MGpXVm5QN0NKLzcxa2dCMVBhYTFLYUVXdlJ3cUhMT25SUUNwY0NyM1p1SkxxNTRrdHF5NVlDRFc1VUVrRmdhQmlDK3oyU3BjeEI5Z1o2R1h5cStRSHZnbTdLZkM5Qmp0Zm1uTm02TDMrN1pWUjBaRC9OVzFxbFFoQ2RVV01zcnkwaldWblA3Q0ovNzFrZ0IxUGI0cERWVFFuVG9tN1JQZTVrcFlqUzhUcDJUQ1RDb0dpR3lkSit2Tml2VWtZR285SndWaHhrUVlmY1A0Y21DRU55YnpuaXNadXo0OEp1emIvS3Q0dWZEeXl2TFNOWldjL3NJbi92V1NBSFU5bmk4ZmUzcnh5c1dZSXFUVVVSc1N1dkxLOHRJMWxaeit3aWYrOVpJQWRUMjNRdFNmdGw4dWJabmR0VWNxKzlFNGM2VU12c08vUE93NUNjcjc5c0p6aWNROTZvSWtGamJuM2l2c0lVWW1yMFd5eXZMU05aV2Mvc0luL3ZXU0FIVTlvSnQ2aitCSWJUTWdkSjBYdHc4ZndTRGh3OVBTSmxPY2hwVi84alhIclVveXl2TFNOWldjL3NJbi92V1NBSFU5c3JWRXZ4MnowSmJ2MDdVNFZEUUNWNHcxbmlKZ3hCcVA3Y29Yb2VZd3R6S21wdWFuZmlub0pKQkVqaHZKRUVIcWM2VU12c08vUE93NUNjcjc5c0p6aWNKZlRCQVNuMytxdUNmSHhRUUx1YlR5eXZMU05aV2Mvc0luL3ZXU0FIVTl2NmhYa252aUJxdG54MFpCSEYrb0lVdHNScnA3Y0VWYnM0dnE1MHNXSURKZ0FCaFBLK1dQYXZxd2FIbzhQUWF0bytESDZ0V2xxQTdKM1QyRklpQ2VUa3FkbVdTenZQaW1DRlhobHNpRlVHdlhVWTIyK1RVYVl5bm95WWFGWlpnZ2NzcnkwaldWblA3Q0ovNzFrZ0IxUFp4N3RpVXBmUndPZkRIUnlVSCtoYVIzS200WVZNN3krNDBSNVlZQWxMZDNYNHM0M29IMVRVZERWeS9tbDhBejdRSmFLcHd1OWNlNHhPV3grbzVpWDBpcTNjUFltcEt5QTltMkNxMitvenhlOHpEQnJGdU1GT2JYSy9oYXhGV1M1USsvRUVxTDRnQ0NRUkowYnpzckVOY2R2R2hLckxJanlhMTF5QnAyTE10elBqZ0NLanNyeUs2SHAycWloMmNWU2dodE5sbGwzYnlPYXJkOVkzNENzUWJ6TjU2elJ5WnAzbjRHMVRjVnJCbUJzc3J5MGpXVm5QN0NKLzcxa2dCMVBZNFl5WFRaeGdoK1ZiSjd0OUZCYU5uVi96amRsYUNFRTdHMzNUVzdtTUQwanpKeDlUTURrWnR0RTNOb3FLR3dMNnI0RmUzKzJSZFltdE1UbUltSVRYVHl5dkxTTlpXYy9zSW4vdldTQUhVOXZGNnprWkZWamRjNHNYTjFVK1BJN1dWK096VHhBeisyMXJPVFBlMTk0REN4UmZvdlZaYzVSVEdjemw4dGlDSVFDYjU0ajhxS3YrTkpaWG50MXF2d0RmTEs4dEkxbFp6K3dpZis5WklBZFQyOWg1SkhzUkNLQVZDYzh5SVBQNGdMT1ZCZm92ZHBxNndqWEpsRXhES2tmRUVTd2NFNmtxOEhNQURTVkdSN05PY3l5dkxTTlpXYy9zSW4vdldTQUhVOXRFeW9tOGdHM05TWFRFYkVzZTRsaUlqazJMMzFKRlVBSjdkanBlYW5HOUhWclBWNUgxbXF4eTNBTHBIS3VzdXJNc3J5MGpXVm5QN0NKLzcxa2dCMVBZKzhvZkw5Vk1yQkpmMmFaMS94Nzk3cGFOTWhaV0xMMDFqQkFDMzN0SU52UEIzcHFkQU9jQ0tkSGVzQzJaS2VsbkxLOHRJMWxaeit3aWYrOVpJQWRUMm9vZkJmeXpOdzZMa0tYaFJ3TDRtOGZEYlNQOWQrN0hkSm51anBTSHlpSGRBbU15M3V0OWw1OGk0bDloSlkxdng5ZU9QZDRMUG5CeHVCaFoyZXUxSVhDZlgxQkhFaDFyNVBINmNwOFBnWkdEbnM0U0dNRzRYRjZ5aVRkMTQrRndBUDQ3ZWg5OXVlQlhPSmthTHUzV0pXTXNyeTBqV1ZuUDdDSi83MWtnQjFQWmFGRkJ1dmdoV3NEdEtnL2VoaTBjWUcybUhZNlNMZXByMVA1VitEME1GdU1zcnkwaldWblA3Q0ovNzFrZ0IxUFpVUHh5ejFabmxKNGZhUXNoYkhwL2NOT1hmOFY3S1dXTXlHVTJmR2E0SnZzc3J5MGpXVm5QN0NKLzcxa2dCMVBhdGkzdzJIY2FaT1prSWsxb0pJZWxPenBReSt3Nzg4N0RrSnl2djJ3bk9KOHNyeTBqV1ZuUDdDSi83MWtnQjFQWWo3WnNidlF0MHpMaVh5ZmlQK1JmYktJUldaWUdtWGE4U1Y1YzZYR0Z4cGdDREFIT0JYbHAwdHQ0ZHB0ZE16MUM1MnByMDRkQjJlTDEwRVUwa0hQS3l5eXZMU05aV2Mvc0luL3ZXU0FIVTlqUWIrM0NyTnFSQ1g0b2RJeUx1bG83TEs4dEkxbFp6K3dpZis5WklBZFQyVkM0NTNoeHA4bjhJODNQbkNzUWlXVmY4NDNaV2doQk94dDkwMXU1akE5STh5Y2ZVekE1R2JiUk56YUtpaHNDKytuS3R6T3pjRm1JVVloS0luUXcxNXNzcnkwaldWblA3Q0ovNzFrZ0IxUFpSakVWVkRNQy83UlVNT0w0TDFLUVF5eXZMU05aV2Mvc0luL3ZXU0FIVTluWi9FZ2w2a2tmWjNoRXdnb0VBL21iTEs4dEkxbFp6K3dpZis5WklBZFQyWmhUbnl5UVpkWDlNNTJvQ0FraWoyM0U2cTlHZzhlUW5weFg5eHBsalEwVGVQNjdiZVpYQzVuMUtSd3dwcDBCc3l5dkxTTlpXYy9zSW4vdldTQUhVOXF3ZjVtNFhvdXBCakRpc2VrZ3NhOWZPbERMN0R2enpzT1FuSysvYkNjNG51ZUVmUWpxcTljdlAwVUwxZ1pkYmZxTmdCdDV1K3VwM01PdXBjVU00U3J2TEs4dEkxbFp6K3dpZis5WklBZFQyMDVvSlEvQVB0N0UyYU5sdjB6elc2NnBqWEVkZVFzdVgrbTNvVzhFcjNDZk9sREw3RHZ6enNPUW5LKy9iQ2M0bnl5dkxTTlpXYy9zSW4vdldTQUhVOW1xdStralZMTk9QVXVnbUFoVVE1blhMSzh0STFsWnord2lmKzlaSUFkVDIvSURFRkUrTFBnbFhwYS9XaU5Da3Z6WDBKbXJmenNaNkx4K0UyYlp4V1BETEs4dEkxbFp6K3dpZis5WklBZFQySHc5MzYyYUZwTjc4bUZGTnl4MisyM1ZKRURkNGpQOHd5UnhpSy9SNU52ZUdkb1djL2FXZ0FQZXVja1FrVStoVXl5dkxTTlpXYy9zSW4vdldTQUhVOWkxTTVWYmlwWHRBMmZ1VmRQWFdMR3hlTHBGSEhEZUdyeENBYUpadHF0VkVDNVJIR054dWdHUGdsdFFLWkVOaGI4c3J5MGpXVm5QN0NKLzcxa2dCMVBaclNHZHRTd1ZKUGJRYlRFaWFFZUFoeXl2TFNOWldjL3NJbi92V1NBSFU5c3NyeTBqV1ZuUDdDSi83MWtnQjFQWThodGM0NFBJVGl5eWNiWXdhMEVuSHdVMkcrY25NdmxBVVJjMTNTbW45YVIrR3B5RHgvajVucmlFdFFOZ1h0cG5QMDI4NnV5VUsyNDVGeVFLOEgxaEh5eXZMU05aV2Mvc0luL3ZXU0FIVTlpTElWL3hnL2tpcW9uTTA4NVRGYkRYTEs4dEkxbFp6K3dpZis5WklBZFQyT1BmWnFmRXJQd3Q4Zkpsb28zRkhvY1E5MkdUTFV5aWZORVlwMXVNTWdtWXF6VmtYRC9WUzkwM2ZCMmxEdW4wcE1JV1krK2Z6T2Q3Q21GOXMwWURrazBDVGFGd0JydmZUWW14dzJXbjZMTGJvcXM1RGpLMURocW1MOFltZGVmMzJWSzJkU2VibytTL2ozV0xtaC9qakxQN0dVczVHNTZVVCtLQytSYlJwZmFNT3lVdzhRV3VkZFRCMnFoVXFoT2ZNSzVXNW9tOCszUklrM3BGUnhYU1JwUFhGaXpOTUJyTXNEQUVTbStSbHpPV3Q2OU5nMkpCVFRQMGQyMVFycHkvZ29pVWdCZlpzK1l4MHgzVXdyL3dPMmIzaTBEaEZaRGJIMVJhV1Z5LzhpUVVySG1qTWFrSUhDSkppVVJSVG9ETitDY2JadGorK2NBSWJneTdyYWhxdUpQS1dUcytxcEtpZGZLQXdFM3htemloWktaUitZdFdJb0E4VG8rVFl1YmVDSWRNMjlObWFuV1o1bFJEclFaM2VVRTU0MTQ1UVFVUTczbzFmVXphQXEwd1puQ2EwVjU0WjRpUUkyc09IVEpJWWNoT3N5dWhHQmI0YlI0blY3cHU1MXRlUHRJaHRKUTFDMnJJY09ROW5PUEZ6YkdZSEVVMDRTcFg0amVVZGwweHlLclRtYnFMeWNrbmlEUWRKUytwUEs3ZUNqV1Vtbm1kanJkMytFMmZ6dlQ3TEs4dEkxbFp6K3dpZis5WklBZFQyOFRMWEhKU1IzNTBmTC81UnBBRmZTRUR5R2VPQkd2MEZ0NjF6bDRzUk1TTlJqRVZWRE1DLzdSVU1PTDRMMUtRUTNjSmpxMlVBSXByY3NibkRzT1F0eHhvR2t0d2Jjdjdsd2duYW0vUUI0UWp2WmI4dERDRWpWeG5yc2pqUHJ4aFpURTB0eHMxQ2VRbU45dlFOYjI1eFFkd3lVYkw3STFFbnRTcUpoVU5ZQUhDcVdrcFdURWJJWTVDRjlYbVdWcDUwOGFmYnZXRGMrUXJXZEtLTDZKWXZjM3lydm9FOGlWYVlLKzUva3VlaGtPSGdSMnZBcXcvYkxzTVhFUDYxVWJHMHl5dkxTTlpXYy9zSW4vdldTQUhVOW5qbDNIL2RrVHp0Zmx6Y0M2OW1wRlI0dldpeTVYM1NHdmFmbFB3eU9YT0RaVG1PY2lSMmxzNTZoZFU4bGlLQmN3RjVVMlVpc1IzQk9KemNUbkFPRlFpeEsxeHA3TzdCRDRQSEdxbWZCMFZ5eXl2TFNOWldjL3NJbi92V1NBSFU5c1BaMTEzdWswNzFBL3dKQUVsSk5Da1llb0RBTFZuYWlvMmMxUmJONWdDWWRIblZYWTg4YzJ6dk1zdnpKUHUyNHA3NUh6Z3pad01EN240MWc0TWFFOUhwZGg4SnZvUTFuL2tvWXR6OGs0UXJobmFGblAybG9BRDNybkpFSkZQb1ZCTzdFTFNFTnBVNFlIbjJhWVZMM2R2TEs4dEkxbFp6K3dpZis5WklBZFQyQjJ5ZXkwMW5adnlqcTAwSHRHUERTODZVTXZzTy9QT3c1Q2NyNzlzSnppZVR5WFBCM0tBR3BxakpYMGpFYmhSZjVEVGtoTGFHZGwzVFJxSWVnSUw3MUpSV3ltTXdQczFoejROYU5Rdlp2YXhFUGNZTzRlWVRLMjNyOWpoQ0UyQ3Z5eXZMU05aV2Mvc0luL3ZXU0FIVTlyaUs3RTZpRjljdHEvNGw3cFJhajlyTEs4dEkxbFp6K3dpZis5WklBZFQyUGRHaTVqcVVCditjdTJNdjdjZWRxcVFkMXdSUGZ0ZXp6L1dmYmlvak9sbkNBUWJtd0dsREVBZk9peXF0cUxROWE1YnFDckRpVFRNRngwT3gzTDdmUzY5b1FKWk5QSGwvZjRiTTRENEtCdkZxa0dmK2JycTdZMGVLZmRVWjQreHY0dFV5V3NtOXdTQ05yS0ZDKy8xSWNzUytPSEcvellYNy9EVFlYUmRjTnFZWVJhUG5TME1ReVowei91RTkybk8yTGxCN2NLc3A2MUtnazR3ZGhIcE9HREdsT0phdmw2REV5bmVSMGd5ZTExVENNa2JMUGxQVm1zNnlmRFU2L1h2bkxyb3ZETVlWQ2NkeEd4MEwxRkRIUDUwZ3NDS3d4Y1RuVXVJOUhVekJBb092Y1RpRGxxU2V2bkY3L0FoVS83TWpvQW80bldMdndIdGJvYnRIUkFWYVJWeU1YWW95MVRnN2F4R2xVY2Y0RVJvekkwN21YUmN2eVgzTnVlMHVyR2xXejFOUDVVVzIvSENiWVlTTzNxdzZ3bGJSNGpJanBPU1l1UXcwWXZZRnRZZnpFeUZtZks1UGFMSzRyTkR3UExlbW8vcGFieTc4Q1ZXdTFETzY4SHNQeUdGWEo0L0pxYmU2UHF0a2VBSmpTWkU0SFduMXBCZlRXZ0RrdmlEWXdrRS9OTHlUa3p1S1VOZkpZZ2pLTVJLQzVlVEczdEhFZytqMXRBL3JsaXR5a3M1empqT3d6TzV3bytNVWExN3ovUVA3SkpPRmdMRzY1R0ZiSTUxMUFTQ1NtaVQ1eEFNZWdzcmlaandDblo3Y1REYzVjNGFqejgvQWgxRXJJSEswc1FJeXVMRHFjSkZqU0xhSWVrbUl1TGE0OXZpcFE2QUpCS3VidFBleHZWN1k5QkN6cmh6N3FxTnVURkhrWTdmMWxyMU1PSVVWWWNJUzE4d21Xb0tzTmxaOHN5SzB6NGhSVVBOQVpxV3RnOTViSEMzaTFUSmF5YjNCSUkyc29VTDcvVWh5NTdUdTFaMG81T0xUWUtOVE5UNXBHMlZSR0daMkRFUndqcUU2cTRZSWxyZlB5bUt6STNJSlZBL0NMSmNneEQ0WTZ3bzE0aGdaSElrakVqZVA3RExyNjlpTmZ3bHVuRktVMFRBQ1ltblp0MmRiMkVLR3EzSWVHV3JLQ21ydTEzaUlBbENQdjRVQkpxVWU1bjVyL21VRVdIWkZ4K21OMFlOWU9TZEt4SVR5NHlpY3NwcS9xQ3gyclFNV2N0VGVWODBNN3I1NDZCTERScytWUW5zMjlpL0tBazJxZnA0MDY3RXhucjlJc1FBMmxXUURxU0xyMlVhN1Z5OWltWkxZaUxSbDZkU2dzVTd6dHZQQVM2eWdCUExaRXJSZGJLd0Y0UUtvZnV5aFpRdHd3Q0tPMDdWMFhNTjg4aEgwdXB0azF5b1FsT05FNkpNSmJLMy9JakdFcElHWUNINkg0Tk5WQWQ5QXpFdUVZL3lmRHBranRiTnFnM2dSREhmVmdxbjlYVGJSa1VIMnBnOTFrZkc3VnY2S2cyaFlsa212bWpKYnFpcUQyZ1B6RURMYXJvakdlOEhkVzhUeHBXK1JFUEs5VmtOMFZsUmRac1JhSEhzTnlrTVhCRGU4bk5yMHNpa3lCazdzVGpNTjlmSm9IajByc3pPNXArNnlMeVFLbFZORGg2dVBzTG0xZ3Q1aEx3bEFmZTA5K28wekwvdHBUajM0TVh6ODU1MzJWclJ5OHFxa2V1LzNNaUxKNkQ4QVUzaDhvVkZJM0d0MmFWWU96dldtaUJ0YXhRdXpuU1V5QzNtOVVNaEgrUS9sbmFWVXFhNFJqZUh5VytVNFh3eFFuVjBxOHF2MlhsaGRGckpRSkcwUklzR0JZUHR4cThtd3lCUjMvc2Y4cm1vVmkxUWxvK25oVTZNK2EyZjFMdTVrNm9BWktoUVlJVjYyYkVlSzZTeVdqUlZjSnpIeEc5WUExbkJmVWJ3VzBHUC9XQTZVR2dOZ0xPQWZKb3doeTdINTR1UEFNQWZGd25VSUkvUTN5ajZlOFZhQjZxRWRqRGdBRVF0OEh3NzdrbjM2KzhPTGJabisxMEVGdWJoTGVUNzkrQVFybDBjaEd1cEVqNXNVVk5yZ1hQYTdJd2lCK2lyTldSY1A5VkwzVGQ4SGFVTzZmU2xuS29sYkNKRHhJeHFHTHRndnJaaWRzNHFucVI4YkcrSGdrOEwrakp2SVIzeHZDTGlYa3FtSTNHeXoxOXBnZFpPNFJTZGRvZERWZlVvY3FLQWxHTGR6dDd5bThwb3pTSXFWOEI3NDlMMHdVUmN3SWhmeFBTbHo4a0J4dk1KQmxpK2YxUUdubmszdnUxeGZKUmhBc0Q0cDBlKzY3amd0N2xxQVd1a2laLzdUKzhxK1pLRWdjUXgrRkNNVXIwV3pWZGk2S0lHTitHYThyVXVycVA2bSsyd2ZQTzl5NWNnU3VDdlVQOCs2QVdhRTVVVG8zTTZEajlxbFpOWm1UNEVCREwrSVJxQU1SM1NRcjM4OHhlL3hKbHZqRFNyNHVpNFFzaklRRXVLZVdXd004Nkd1ekhUQXBGSXhVNXFRRW1ZK0VHa2ttNGgzOW9aVUFxcitENnN4V0NRcFNhK2FNbHVxS29QYUEvTVFNdHF1aUVqV0xwelY1SXpvbEJCaTd3R3l4STlSakVWVkRNQy83UlVNT0w0TDFLUVEzY0pqcTJVQUlwcmNzYm5Ec09RdHh4b0drdHdiY3Y3bHdnbmFtL1FCNFFqdlpiOHREQ0VqVnhucnNqalByeGhaOEVobWdicVFCRDQzNExITWcxT3JwYkhFd3BsK0NRdHBMQkRSb253eTZ6bDE1YkFOanRLSGtMTEhEbUxRMHY3OVRMNXNhTHB1TVFZMGFMT0oyMHd3UWNQd2JDVW9JaENSWitxL1FpK0FKbkxSdkIvRFRNOHBSWGNNUm5xSG91NldtcHVhbmZpbm9KSkJFamh2SkVFSHFmWGpqM2VDejV3Y2JnWVdkbnJ0U0Z3VmoxOHBPODRSUzZ1VEJVM3JqWTA3MnBLQUJFRDBJcnhyblU3K2gzSVdGVXpLUXdvR2tySHJXNUNBbkE2Rm8zTTVtZ0JRTS9NYW5COWtBM3ZlWWdIUXh3NkJBSGFiZDZVV0tYMlI0YUp1NkNnVFY3cGRHb0RudHFTQ0VuSnJCeWowZXZLNVhieUFTSjFockl3NDJXenVwL2puSGlZSjdoZGZZdEozYi9acDZFTm13VTNOTXlBLy94N3JSZGhXMzhLdklNUitNVXdkbDYxc1B2RHp6ckhHMTFLRTlOam04eGVqemZMNjY2RU1wS01iZjMzRUltS01zMDdLQnJFaEtsdlZ5SE91WGZIWnJhUHMwMS90UkFVNWpGZzVxbHFNRCtBRTV5bkVQVWJTWUQwbk9VN3dUNTAvdWZFNjNoMCtjamh3dEQveDZkYlAzUkttME5SWUd0OUxXQ25hVGRISmE5eTVTL1JPVEk2dXU4K1FWQ25lUkFtTG1mQkxQdmxSamdWbmYvcHBTcUhLa0hyVEJrM3h6aFdpYnpqMSt2d3NiZ2tXVy9VQzNXOUQ2MStIRG50LzZZcFh2ckZnUzhSWmc5N0xLOHRJMWxaeit3aWYrOVpJQWRUMlNhK2FNbHVxS29QYUEvTVFNdHF1aUprYXJEMUV5cFBBWlV3bTNvOHhaZkRMSzh0STFsWnord2lmKzlaSUFkVDI0Y0xJMjJlSWtCWGltZGRHWGJsWG9QZUtlT2xMUDRQb3JsaHdOckhSN2hCV1dteVpLeUxjT2ZhVzVpU0FSWEl4OFNSYk1VaEZXTWpCaW9BUkdENVJnYnlacTMzOFBrdFkraUdBdUpLWnBkdjNiS2lyYkxkQVI0UktwUStDdnV5K1IxUG5OTzhHVlMvbXNDckpsbW8vS2Y5MU5jYlpyNVdSa3lKTDI0ZG41N25VVmxRN3o3aUd0Qnk3d0pURi9oZ1RGSE9HcENXM0YxdUZiRitUeEFxOGlBVlB0Zno1WS9KQ2hJM0J3dG1Gb250SDJyeVpieWRkUGpBYXlHVWVBTE02MVJiZzZ5NnlZS1R2WVJaRm5ocFRJb2wwY1dkQk5ieDhjYzNlWkZzNFFPYVFmTVoyMFN2QitxVThBS1ErZzVoanl5dkxTTlpXYy9zSW4vdldTQUhVOXFHNUtqRFI1aVd5NUhReTRqYlh5cllvV21vSHJuejA5MytJOEJadVJwdVF1ZUVmUWpxcTljdlAwVUwxZ1pkYmZoVGs0WlRBeFE4ZHhLRU9ya21SQjJMeGlHcVppTmNlc3BjSUt0MmdSL1I3Y0JYTEpFQlV4UXNzMDdmQkZkTHkvTHliMnJkeHA5eGVlVS8rZ2hJS3NXNHdUc01IQnVmcUZRamEySFhUbzBsMXVhZnJOZEQ0dmRHTU82ZjNBMnFJdjNZUTdYWlhJRFRRM2xvdlBZZzZBVXNEYVpmaDNmanlXYjY2MnpSdjZ1T2MwTzFTbHZ3L1JZcWdkT1ppRTM3My9Nc3J5MGpXVm5QN0NKLzcxa2dCMVBiNG9qaHdsSGxaN0hQWFN1OHM3ano4SzJsQjc2SWdENzIybElPREtmNitEZE50bkpmc3RJR0U1UUR2TDJqRDY4WTZwWnRUMmVGQ04weFd2dHIrTHc3L1VDMnJ0eFJzdDRBaWYxdlgwck44Z2s3OEIwUTFKUEtCNjBxcHc1NnBrYy9jRlJQaEdQS1lEcG9XQ1gvc3RUNDBEcUxTUzhnajVOWDNLS2h2V0FLOW5RPT1cXFwiKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeWFs+azqDFcIixcInBhdGhcIjpcImd6MVwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIGlkID0gTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV07XFxudmFyIHN1cmwgPSBNWV9VUkw7XFxudmFyIGNvZGUgPSBmZXRjaChzdXJsLHt9KTtcXG52YXIgeW0gPSBKU09OLnBhcnNlKCd7XFxcIm15Jytjb2RlLnNwbGl0KCd7XFxcIm15JylbMV0uc3BsaXQoJ319OycpWzBdKyd9fScpO1xcblxcbnZhciBlcCA9IHltWydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJytpZF1bJ3Jlc3VsdCddO1xcbmZvciAoIHggaW4gZXApe1xcbiAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nK2VwW3hdLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJztcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6ZXBbeF0udW5hbWUsXFxuICAgICAgIGltZzplcFt4XS5mYWNlLFxcbiAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9nejI/dXJsPScreXVybCxcXG4gICAgICAgY29sX3R5cGU6J2ljb25fcm91bmRfNCdcXG4gICAgICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3lhbPms6gyXCIsXCJwYXRoXCI6XCJnejJcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmNvbnN0IGhlYWRDb2xvciA9IFxcXCIjMzU4Y2NkXFxcIjtcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIHB1dE15VmFyKFxcXCJwYXJhbTJcXFwiLCBcXFwiXFxcIik7XFxufVxcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXG52YXIganNvbiA9IHt9O1xcbmV2YWwoJ2pzb249JyArIHJlcXVlc3QoTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdLnJlcGxhY2UoXFxcImFpZD1cXFwiLFxcXCJhaWQ9XFxcIitnZXRNeVZhcihcXFwicGFyYW0yXFxcIikpLCB7fSkpO1xcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLml0ZW0ubGVuZ3RoOyBpKyspIHtcXG4gICAgdmFyIHIgPSB7fTtcXG4gICAgdmFyIGogPSBqc29uLmRhdGEuaXRlbVtpXTtcXG4gICAgdmFyIHQgPSBOdW1iZXIoai5jdGltZSkgKiAxMDAwO1xcblxcbiAgICBmdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgICAgIHZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbiAgICAgICAgdmFyIFlZID0gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nO1xcbiAgICAgICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICAgICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcbiAgICAgICAgdmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxuICAgICAgICByZXR1cm4gdGltZVxcbiAgICB9XFxuICAgIHZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcbiAgICBpZiAoai5wbGF5ID4gMTAwMDApXFxuICAgICAgICB2YXIgcGxheSA9IChqLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICBlbHNlXFxuICAgICAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG4gICAgdmFyIHBpY3MgPSAoai5jb3Zlci5pbmRleE9mKCc6JykgIT0gLTEpID8gai5jb3ZlciA6ICdodHRwczonICsgai5jb3ZlcjtcXG5cXG4gICAgci5waWNfdXJsID0gcGljcyArIFJlZmVyZXI7XFxuICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICByLnRpdGxlID0gai50aXRsZTtcXG4gICAgci5jb2xfdHlwZSA9ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYyc7XFxuICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyB0aW1lO1xcbiAgICBpZiAoai5sZW5ndGggIT0gXFxcIjAwOjAwXFxcIikge1xcbiAgICAgICAgZC5wdXNoKHIpXFxuICAgIH07XFxuICAgIHB1dE15VmFyKFxcXCJwYXJhbTJcXFwiLCBqLnBhcmFtKVxcbiAgICAvL2xvZyhqLnBhcmFtKVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggeWdly3mkJzntKLkuIDnuqdcIixcInBhdGhcIjpcInNcIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBiID0gW107XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbnZhciBrZXl3b3JkID0gTVlfVVJMLnNwbGl0KCcma2V5d29yZD0nKVsxXTtcXG52YXIgcGFnZSA9IE1ZX1BBR0U7XFxuLy92YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTYyNzAyMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD14aWFvbWkmaGlnaGxpZ2h0PTEma2V5d29yZD0nICsga2V5d29yZCArICcmbW9iaV9hcHA9YW5kcm9pZCZvcmRlcj10b3RhbHJhbmsmcGxhdGZvcm09YW5kcm9pZCZwbj0xJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjcuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjIzMDc2MTQwJnR5cGU9MiZ1c2VyX3R5cGU9MCZzaWduPTUwNjYyMTZmZWJiMjhhNjE5ODEyZTg4ZTVmZjFhMDM0JztcXG52YXIgdmlkZW9fdXJsID0gXFxcImh0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaD9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02NDAwMzAwJmtleXdvcmQ9XFxcIiArIGtleXdvcmQgKyBcXFwiJnBuPVxcXCIgKyBwYWdlO1xcbnZhciBiYW5ndW1pX3VybCA9IFxcXCJodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2gvdHlwZT9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02NDAwNDAwJmtleXdvcmQ9XFxcIiArIGtleXdvcmQgKyBcXFwiJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZ0eXBlPTdcXFwiO1xcbnZhciBsaXZlX3VybCA9IFxcXCJodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2gvbGl2ZT9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02NDAwNDAwJmtleXdvcmQ9XFxcIiArIGtleXdvcmQgKyBcXFwiJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZ0eXBlPTRcXFwiO1xcbnZhciB1c2VyX3VybCA9IFxcXCJodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2gvdHlwZT9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02NDAwNDAwJmtleXdvcmQ9XFxcIiArIGtleXdvcmQgKyBcXFwiJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZ0eXBlPTJcXFwiO1xcbnZhciB5aW5nc2hpX3VybCA9IFxcXCJodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2gvdHlwZT9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZidWlsZD02NDAwNDAwJmtleXdvcmQ9XFxcIiArIGtleXdvcmQgKyBcXFwiJnBuPVxcXCIgKyBwYWdlICsgXFxcIiZ0eXBlPThcXFwiO1xcbmxldCB2X2xpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsLCB7fSkpLmRhdGEuaXRlbTtcXG5sZXQgYl9saXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KGJhbmd1bWlfdXJsLCB7fSkpLmRhdGEuaXRlbXM7XFxubGV0IGxfbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdChsaXZlX3VybCwge30pKS5kYXRhLmxpdmVfcm9vbS5pdGVtcztcXG5sZXQgdV9saXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVzZXJfdXJsLCB7fSkpLmRhdGEuaXRlbXM7XFxubGV0IHlfbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh5aW5nc2hpX3VybCwge30pKS5kYXRhLml0ZW1zO1xcbnRyeSB7XFxuICAgIGJfbGlzdC5mb3JFYWNoKChiKSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBiLnRpdGxlLFxcbiAgICAgICAgICAgIGltZzogYi5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgY29udGVudDogYi5zdHlsZXMgKyBcXFwiXFxcXG5cXFwiICsgYi5zdHlsZSxcXG4gICAgICAgICAgICBkZXNjOiBiLmJhZGdlLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBiLnVyaSArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfSlcXG59IGNhdGNoIChlKSB7fVxcbnRyeSB7XFxuICAgIHZfbGlzdC5mb3JFYWNoKCh2KSA9PiB7XFxuICAgICAgICBpZiAodi5saW5rdHlwZSA9PSBcXFwidmlkZW9cXFwiKSB7XFxuICAgICAgICAgICAgaWYgKHYucGxheSA+IDEwMDAwKVxcbiAgICAgICAgICAgICAgICB2YXIgcGxheSA9ICh2LnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgICAgIGVsc2VcXG4gICAgICAgICAgICAgICAgdmFyIHBsYXkgPSB2LnBsYXk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHYudGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogdi5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IFxcXCLmkq3mlL7ph486IFxcXCIgKyBwbGF5ICsgXFxcIiAg5pe26ZW/OiBcXFwiICsgdi5kdXJhdGlvbiArIFxcXCJcXFxcbuWPkeW4g+aXpeacn1xcXCIgKyB2LnNob3dfY2FyZF9kZXNjXzIgKyBcXFwiXFxcXG5VUDogXFxcIiArIHYuYXV0aG9yLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBcXFwi6KeG6aKRXFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB2LnNoYXJlLnZpZGVvLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSlcXG59IGNhdGNoIChlKSB7fVxcbnRyeSB7XFxuICAgIHVfbGlzdC5mb3JFYWNoKCh1KSA9PiB7XFxuICAgICAgICBpZiAodS5mYW5zID4gMTAwMDApXFxuICAgICAgICAgICAgdmFyIGZhbnMgPSAodS5mYW5zIC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAgICB2YXIgZmFucyA9IHUuZmFucztcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHUudGl0bGUsXFxuICAgICAgICAgICAgaW1nOiB1LmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICBjb250ZW50OiBcXFwi57KJ5LidOiBcXFwiICsgZmFucyArIFxcXCIgIOinhumikTogXFxcIiArIHUuYXJjaGl2ZXMgKyBcXFwiICDnrYnnuqc6IExWXFxcIiArIHUubGV2ZWwsXFxuICAgICAgICAgICAgZGVzYzogXFxcIlVQ5Li7KFxcXCIgKyB1Lm1pZCArIFxcXCIpXFxcIixcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWhpa2VyOi8vZW1wdHkjI2Z5cGFnZScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBtaWQ6IHUubWlkLFxcbiAgICAgICAgICAgICAgICBuYW1lOiB1LnRpdGxlXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH0pXFxufSBjYXRjaCAoZSkge31cXG50cnkge1xcbiAgICB5X2xpc3QuZm9yRWFjaCgoeSkgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeS50aXRsZSxcXG4gICAgICAgICAgICBpbWc6IHkuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHkuc3R5bGVzICsgXFxcIlxcXFxuXFxcIiArIHkuc3R5bGUsXFxuICAgICAgICAgICAgZGVzYzogeS5iYWRnZSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgeS51cmkgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH0pXFxufSBjYXRjaCAoZSkge31cXG50cnkge1xcbiAgICBsX2xpc3QuZm9yRWFjaCgobCkgPT4ge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogbC50aXRsZSxcXG4gICAgICAgICAgICBpbWc6IGwuY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGwubmFtZSxcXG4gICAgICAgICAgICBkZXNjOiBsLmJhZGdlLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiXFxcIikubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAvL+iTneWFiVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2V1cmwgPSBcXFwiaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvYXBwLXJvb20vdjIvaW5kZXgvZ2V0Um9vbVBsYXlJbmZvP2FjY2Vzc19rZXk9XFxcIiArIGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICsgXFxcIiZxbj0xMDAwMCZyb29tX2lkPVxcXCIgKyBpZCArIFxcXCImcGxhdGZvcm09YW5kcm9pZCZidWlsZD02NDAwMzAwJmRldmljZV9uYW1lPU0yMDA3SjNTQyZmb3JtYXQ9MCwyJmNvZGVjPTAsMSZodHRwPTEmY19sb2NhbGU9emhfQ04mcHJvdG9jb2w9MCwxXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVjID0gSlNPTi5wYXJzZShyZXF1ZXN0KGJhc2V1cmwpKS5kYXRhW1xcXCJwbGF5dXJsX2luZm9cXFwiXVtcXFwicGxheXVybFxcXCJdW1xcXCJzdHJlYW1cXFwiXVswXVtcXFwiZm9ybWF0XFxcIl1bMF1bXFxcImNvZGVjXFxcIl1bMF1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlYy51cmxfaW5mb1swXS5ob3N0ICsgY29kZWMuYmFzZV91cmwgKyBjb2RlYy51cmxfaW5mb1swXS5leHRyYVxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgYnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBpZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1cmwpKS5kYXRhLmR1cmxbMF0udXJsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBsLnJvb21pZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8xX2xlZnRfcGljXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSlcXG59IGNhdGNoIChlKSB7fVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzFfdmVydGljYWxfcGljXCIsXCJuYW1lXCI6XCLpobXpnaIt5pCc57Si5LqM57qnXCIsXCJwYXRoXCI6XCJzc1wiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAvKlxcbiAgICBkLnB1c2goe1xcbiAgICB0aXRsZTon4oCc4oCc5YWz5rOo4oCd4oCdJyxcXG4gICAgdXJsOidoaWtlcjovL2VtcHR5IycrTVlfVVJMLnNwbGl0KCcjJylbMV0rJyYmJytNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXS5zcGxpdCgnJicpWzBdK2BAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXCImJlxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcmJicpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXG4gICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgKi9cXG4gICAgcHV0TXlWYXIoXFxcInBhcmFtMlxcXCIsIFxcXCJcXFwiKVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzirZDvuI9TdGFy4oCd4oCdJyxcXG4gICAgICAgIC8vdXJsOiAnaGlrZXI6Ly9lbXB0eSMnICsgY2FyZC5uYW1lICsgJyYmJyArIGNhcmQubWlkICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcIiYmXFxcIilbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7aWYoIWdldFZhcignbGIyJykuaW5jbHVkZXMoaW5wdXQuc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0pKXt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcbiAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKG1pZCwgbmFtZSkgPT4ge1xcbiAgICAgICAgICAgIC8vdmFyIHBpYyA9IEpTT04ucGFyc2UocmVxdWVzdCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyBtaWQgKyAnJmpzb25wPWpzb25wJmFjY2Vzc19rZXk9JyArIGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpLCB7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICBsZXQgYWNjZXNzX2tleSA9IGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICBsZXQgbXltaWQgPSBnZXRWYXIoJ3N0YXJpZCcpO1xcbiAgICAgICAgICAgIGxldCB0cyA9IFN0cmluZyhuZXcgRGF0ZSgpLmdldFRpbWUoKSkuc2xpY2UoMCwgMTApO1xcbiAgICAgICAgICAgIGxldCBhYWEgPSBcXFwiYWNjZXNzX2tleT1cXFwiICsgYWNjZXNzX2tleSArIFxcXCImYXBwa2V5PTQ0MDllMmNlOGZmZDEyYjgmYnVpbGQ9NTUyMDQwMCZtaWQ9XFxcIiArIG15bWlkICsgXFxcIiZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmdHM9XFxcIiArIHRzICsgXFxcIiZ2bWlkPVxcXCIgKyBteW1pZDtcXG4gICAgICAgICAgICBsZXQgYmJiID0gXFxcIjU5YjQzZTA0YWQ2OTY1ZjM0MzE5MDYyYjQ3OGY4M2RkXFxcIjtcXG4gICAgICAgICAgICBsZXQgc2lnbiA9IG1kNShhYWEgKyBiYmIpO1xcbiAgICAgICAgICAgIGxldCB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvc3BhY2U/JyArIGFhYSArICcmc2lnbj0nICsgc2lnbjtcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IGdldE15VmFyKFxcXCJVQVxcXCIpXFxuICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgIG1ldGhvZDogXFxcIkdFVFxcXCJcXG4gICAgICAgICAgICB9KSkuZGF0YS5jYXJkLmZhY2U7XFxuXFxuICAgICAgICAgICAgaWYgKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKG1pZCkpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHhyID0gZ2V0VmFyKCdsYjInKSArICdcXFxcbicgKyBuYW1lICsgXFxcIiYmXFxcIiArIG1pZCArICcjIycgKyBwaWM7XFxuICAgICAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHhyKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCdsYjInLCBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHt9KSk7XFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcIuaYr+WQpuWQjOatpeS6keerr1xcXFxuKOeCueWHu+WPlua2iOihqOekuuS7heacrOWcsOWFs+azqClcXFwiKS5jb25maXJtKChtaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kaWZ5ID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi9tb2RpZnlcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc19rZXk6IGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlkOiBtaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Q6IFxcXCIxXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmNvZGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGlmeSA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lhbPms6jmiJDlip8o5pys5ZywJuS6keerrylcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+acrOWcsOWFs+azqOaIkOWKn++8jOS6keerr+W6lOivpWfkuoZcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSwgbWlkKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lhbPms6jmiJDlip8o5LuF5pys5ZywKSdcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgeHggPSBnZXRWYXIoJ2xiMicpLnNwbGl0KCdcXFxcbicpO1xcbiAgICAgICAgICAgICAgICAvL+WOu+mZpOWFs+azqOmHjOeahOepuueZveWFg+e0oFxcbiAgICAgICAgICAgICAgICB2YXIgeHggPSB4eC5maWx0ZXIoZnVuY3Rpb24ocykge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgJiYgcy50cmltKCk7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoeHhba10uaW5jbHVkZXMobWlkKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzYyA9IHh4W2tdICsgJ1xcXFxuJztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgeHIgPSBnZXRWYXIoJ2xiMicpICsgJ1xcXFxuJztcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgeHogPSB4ci5yZXBsYWNlKHNjLCAnJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwgeHopO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcignbGIyJywgZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbW9kaWZ5ID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9yZWxhdGlvbi9tb2RpZnlcXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNzX2tleTogZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIiksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlkOiBtaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0OiBcXFwiMlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmNvZGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtb2RpZnkgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+WPluWFs+aIkOWKnyjmnKzlnLAm5LqR56uvKVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/mnKzlnLDlj5blhbPmiJDlip/vvIzkupHnq6/lupTor6Vn5LqGXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+WPluWFs+aIkOWKn++8gemTgeWtkOWGjeingfCfpoYnXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+iAl+WtkOWwvuaxgVxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LCBNWV9QQVJBTVMubWlkLCBNWV9QQVJBTVMubmFtZSksXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5sZXQgdXJsID0gXFxcImh0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NwYWNlL2FyY2hpdmUvY3Vyc29yP2FpZD1cXFwiICsgZ2V0TXlWYXIoXFxcInBhcmFtMlxcXCIpICsgXFxcIiZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZ2bWlkPVxcXCIgKyBNWV9QQVJBTVMubWlkO1xcbnZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCkpO1xcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLml0ZW0ubGVuZ3RoOyBpKyspIHtcXG4gICAgdmFyIHIgPSB7fTtcXG4gICAgdmFyIGogPSBqc29uLmRhdGEuaXRlbVtpXTtcXG4gICAgdmFyIHQgPSBOdW1iZXIoai5jdGltZSkgKiAxMDAwO1xcbiAgICAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcbiAgICAvKlxcbiAgICBmdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsIDE3KTtcXG4gICAgICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsICctJykucmVwbGFjZSgn5pyIJywgJy0nKTtcXG4gICAgICAgIHJldHVybiAoWU1EKVxcbiAgICB9XFxuICAgICovXFxuICAgIGZ1bmN0aW9uIGdldExvY2FsVGltZShuUykge1xcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxuICAgICAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuICAgICAgICB2YXIgTU0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnLSc7XFxuICAgICAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgICAgICB2YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG4gICAgICAgIHJldHVybiB0aW1lXFxuICAgIH1cXG4gICAgLy/ml7bpl7TmiLPovazmjaJcXG4gICAgdmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuICAgIGlmIChqLnBsYXkgPiAxMDAwMClcXG4gICAgICAgIHZhciBwbGF5ID0gKGoucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgIGVsc2VcXG4gICAgICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbiAgICB2YXIgcGljcyA9IChqLmNvdmVyLmluZGV4T2YoJzonKSAhPSAtMSkgPyBqLmNvdmVyIDogJ2h0dHBzOicgKyBqLmNvdmVyO1xcbiAgICByLnBpY191cmwgPSBwaWNzO1xcbiAgICByLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcbiAgICByLmRlc2MgPSAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZTtcXG4gICAgaWYgKGoubGVuZ3RoICE9IFxcXCIwMDowMFxcXCIpIHtcXG4gICAgICAgIGQucHVzaChyKVxcbiAgICB9O1xcbiAgICBwdXRNeVZhcihcXFwicGFyYW0yXFxcIiwgai5wYXJhbSlcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt6aKE5aSE55CGXCIsXCJwYXRoXCI6XCJ5Y2xcIixcInJ1bGVcIjpcInB1dFZhcjIoJ3VhJywgJztnZXQ7dXRmLTg7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKExpbnV477yb77ybIEFuZHJvaWQgNy4w77yb77ybIHd2IGxpdGUgYmFpZHVib3hhcHApIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83OC4wLjM5MDQuOTYgTW9iaWxlIFNhZmFyaS81MzcuMzYgVDcvMTAuMyBTZWFyY2hDcmFmdC8yLjYuMiAoQmFpZHXvvJvvvJsgUDEgNy4wKX0nKTtcXG5cXG5wdXRNeVZhcihcXFwiVUFcXFwiLCBcXFwiTW96aWxsYS81LjAgQmlsaURyb2lkLzYuNDAuMCAoYmJjYWxsZW5AZ21haWwuY29tKSBvcy9hbmRyb2lkIG1vZGVsL00yMDA3SjNTQyBtb2JpX2FwcC9hbmRyb2lkIGJ1aWxkLzY0MDAzMDAgY2hhbm5lbC9tYXN0ZXIgaW5uZXJWZXIvNjQwMDMwMCBvc1Zlci8xMCBuZXR3b3JrLzFcXFwiKTtcXG5cXG5wdXRWYXIoJ2FjY2Vzc19rZXknLCBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpO1xcblxcbnB1dFZhcignWDUnLCBcXFwiQGxhenlSdWxlPS5qczp2YXIganggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0Jyx7fSk7cmVmcmVzaFg1V2ViVmlldyhqeCtpbnB1dCk7J3RvYXN0Oi8v5pKt5pS+5LitJ1xcXCIpO1xcblxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JykpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsICdVUOS4uycpO1xcbn1cXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCAn6KeG6aKRJyk7XFxufVxcblxcbmlmIChmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIHt9KSA9PSAnJykge1xcbiAgICBpZiAoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkgIT0gJycpIHtcXG4gICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9MTAzMjU2ODgwJmFjY2Vzc19rZXk9ZDVhZjU1MTNhY2I5Mjk0NTM5ZWNkZjdmZmQ1NWJmNTEnLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IGdldE15VmFyKFxcXCJVQVxcXCIpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpLmRhdGEuZmFjZTtcXG4gICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIFxcXCLljJfln44mJjEwMzI1Njg4MCMjXFxcIiArIHBpYyk7XFxuICAgIH1cXG59XFxuXFxuaWYgKCFmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KSkge1xcbiAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCBcXFwiMTAzMjU2ODgwXFxcIik7XFxufVxcblxcbnB1dFZhcjIoJ2xiMicsIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIiwge30pKTtcXG5cXG4vKlxcbnB1dFZhcihcXFwi6Kej5p6Q5Y+jXFxcIixgaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjQHJ1bGU9anM6dmFyIGQgPSBbXTtkLnB1c2goe2Rlc2M6ICcyMDAnLHVybDogJ2ZpbGU6Ly8vc3RvcmFnZS9lbXVsYXRlZC8wL0FuZHJvaWQvZGF0YS9jb20uZXhhbXBsZS5oaWtlcnZpZXcvZmlsZXMvRG9jdW1lbnRzL2JpbGkvdXBqeC5odG1sJyxjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ30pO3ZhciB0aXRsZXMgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pLnNwbGl0KC9cXFxcXFxcXG4vKTtmb3IodmFyIGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKXt2YXIgdCA9IHRpdGxlc1tpXS5zcGxpdChcXFwiJiZcXFwiKTtkLnB1c2goe3RpdGxlOmZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFwiLHt9KSA9PSB0WzFdID8gdFswXSArIFxcXCLigJjigJjvvIjlvZPliY3vvInigJnigJlcXFwiIDogdFswXSxkZXNjOnRbMV0sdXJsOnRbMV0gKyAnQGxhenlSdWxlPS5qczpwdXRWYXIyKFxcXCJ1aWRcXFwiLGlucHV0KTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIsaW5wdXQpO2JhY2soKTtcXFwidG9hc3Q6Ly/kv67mlLnmiJDlip9cXFwiJyxjb2xfdHlwZTogJ3RleHRfMSd9KTt9c2V0UmVzdWx0KGQpO2ApO1xcblxcbmlmICghZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIHt9KSkge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCBcXFwi5YWo572RVklQJiZodHRwczovL2p4eC5zbXlzOC5jbi9pbmRleC5waHA/dXJsPVxcXFxu5Yqg6YCfJiZodHRwczovL3d3dy5jdWFuLmxhL20zdTgucGhwP3VybD1cXFwiKTtcXG59XFxuXFxuXFxubGV0IGxvY2FsSHRtbDIgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXCIsIHt9KTtcXG5sZXQgZ2l0SHRtbDIgPSBmZXRjaChcXFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L2doL1pydWlyeS9oaWtlcnZpZXcvaHRtbC9qaWV4aS5odG1sXFxcIiwge30pLnJlcGxhY2UoL2ppZXhpXFxcXC9qaWV4aS9nLFxcXCJiaWxpL3VwanhcXFwiKTtcXG5pZiAoIWxvY2FsSHRtbDIpIHtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwanguaHRtbFxcXCIsIGdpdEh0bWwyKTtcXG4gIHZhciB0aXRsZXMgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pO1xcbiAgdmFyIHQgPSB0aXRsZXMuc3BsaXQoXFxcIiYmXFxcIilbMV07XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIsdCk7XFxufVxcbiovXFxuLy/pgJrov4fmkJzntKLmn6XnnIvoh6rlt7HnmoR1aWTvvIznhLblkI7mm7/mjaLljbPlj69cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsIHt9KSkge1xcbiAgICBwdXRWYXIoJ3N0YXJpZCcsICc5MjgxMjMnKTtcXG59IGVsc2Uge1xcbiAgICBwdXRWYXIoJ3N0YXJpZCcsIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsIHt9KSk7XFxufVxcblxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpIHtcXG4gICAgcHV0VmFyKFxcXCJrZXlcXFwiLCBcXFwiZDVhZjU1MTNhY2I5Mjk0NTM5ZWNkZjdmZmQ1NWJmNTFcXFwiKVxcbn0gZWxzZSB7XFxuICAgIHB1dFZhcihcXFwia2V5XFxcIiwgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpO1xcbn1cXG4vL+iHquW3seWOu2Lnq5nlrqLmiLfnq6/pppbpobXmipPljIXvvIzmib7liLBhcHAuYmlsaWJpbGkuY29t5byA5aS055qE6ZO+5o6l77yM54S25ZCO5oqKYWNjZXNzX2tleeeahOWAvOWhq+WFpeS4iuaWuSc9J+WQjumdouWNs+WPr1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywge30pKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCBcXFwi5paw54mIXFxcIik7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoeaOqOiNkFwiLFwicGF0aFwiOlwiZmVlZFwiLFwicnVsZVwiOlwiLy92YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L2ludGwvZmVlZC9pbmRleD9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKSArICcmYXV0b3BsYXlfY2FyZD0yJmJ1aWxkPTYyMjUzMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImY29sdW1uPTImZGV2aWNlX25hbWU9JmRldmljZV90eXBlPTAmZmx1c2g9OCZmbnZhbD00NjQmZm52ZXI9MCZmb3JjZV9ob3N0PTAmZm91cms9MSZndWlkYW5jZT0wJmh0dHBzX3VybF9yZXE9MCZtb2JpX2FwcD1hbmRyb2lkJm5ldHdvcms9d2lmaSZwbGF0Zm9ybT1hbmRyb2lkJnBsYXllcl9uZXQ9MSZwdWxsPWZhbHNlJnFuPTgwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjIuNSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCc7XFxudHJ5IHtcXG4gICAgdmFyIHVybCA9IFxcXCJodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9mZWVkL2luZGV4P2FjY2Vzc19rZXk9XFxcIiArIGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICsgXFxcIiZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjM1xcXCI7XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJhcHAta2V5XFxcIjogXFxcImFuZHJvaWRcXFwiXFxuICAgICAgICB9XFxuICAgIH0pKS5kYXRhLml0ZW1zO1xcbiAgICBmb3IgKGxldCB4IG9mIGxpc3QpIHtcXG4gICAgICAgIHZhciB1cmwgPSB4LmdvdG8gPT0gXFxcImJhbmd1bWlcXFwiID8gXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXCIgKyB4LnVyaS5zcGxpdChcXFwiP1xcXCIpWzBdICsgJyNpbW1lcnNpdmVUaGVtZSMnIDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ9XFxcIiArIHgucGFyYW0gKyBcXFwi77yG77yGYnZpZD1cXFwiICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC5nb3RvID09IFxcXCJiYW5ndW1pXFxcIiA/IFxcXCLwn5KwXFxcIiArIHgudGl0bGUgOiB4LnRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6IHguY292ZXJfbGVmdF8xX2NvbnRlbnRfZGVzY3JpcHRpb24gKyBcXFwiIFxcXCIgKyB4LmNvdmVyX2xlZnRfMl9jb250ZW50X2Rlc2NyaXB0aW9uICsgXFxcIiAgXFxcIiArIHguY292ZXJfcmlnaHRfdGV4dCxcXG4gICAgICAgICAgICBwaWM6IHguY292ZXIgKyBcXFwiQFJlZmVyZXI9aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIueci+ingeaIkeaEj+WRs+edgOS9oOimgemHjeaWsOeZu+W9leS6hu+8jOmdk+S7lFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxuICAgIH0pXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoeaWsOeVqlwiLFwicGF0aFwiOlwibmV3YmdtXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJykge1xcbiAgICBsZXQgYWNjZXNzX2tleSA9IGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIsXFxcIlxcXCIpXFxuICAgIGxldCB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICBsZXQgYWFhID0gJ2FjY2Vzc19rZXk9JyArYWNjZXNzX2tleSArICcmYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmaWx0ZXJfdHlwZT0wJm1vYmlfYXBwPWFuZHJvaWQmbmlnaHRfbW9kZT0wJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScrdHM7XFxuICAgIGxldCBiYmIgPSBcXFwiYzJlZDUzYTc0ZWVlZmUzY2Y5OWZiZDAxZDhjOWMzNzVcXFwiO1xcbiAgICBsZXQgc2lnbiA9IG1kNShhYWEgKyBiYmIpO1xcbiAgICBsZXQgdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL3RpbWVsaW5lPycrYWFhKycmc2lnbj0nK3NpZ247XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgc291cmNlX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcbiAgICAgICAgdmFyIGRhdGVsaW5lID0gW3tcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzRdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuWJjeaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjBcXFwiXFxuICAgICAgICB9LHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzVdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuaYqOaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjFcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs2XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLku4rml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIyXFxcIlxcbiAgICAgICAgfSwge1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbN10sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5piO5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiM1xcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbOF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5ZCO5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiNFxcXCJcXG4gICAgICAgIH1dO1xcbiAgICAgICAgaWYgKCFnZXRWYXIoJ2lkJykpIHtcXG4gICAgICAgICAgICBwdXRWYXIoJ2lkJywgJzInKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBpZCA9IGdldFZhcignaWQnKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcwJyA/IGdldEhlYWQoJ+WJjeaXpScpIDogJ+WJjeaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcwJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMScgPyBnZXRIZWFkKCfmmKjml6UnKSA6ICfmmKjml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzInID8gZ2V0SGVhZCgn5LuK5pelJykgOiAn5LuK5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzInKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICczJyA/IGdldEhlYWQoJ+aYjuaXpScpIDogJ+aYjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICczJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnNCcgPyBnZXRIZWFkKCflkI7ml6UnKSA6ICflkI7ml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnNCcpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgbGV0IGxpc3QgPSBkYXRlbGluZVtpZF0uY29kZS5lcGlzb2RlcztcXG4gICAgICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcbiAgICAgICAgICAgIGxldCB0eXBlID0gKHgucHVibGlzaGVkID09ICcxJyA/ICflt7Llj5HluIMnIDogJ+acquWPkeW4gycpO1xcbiAgICAgICAgICAgIGxldCBmb2xsb3cgPSAoeC5mb2xsb3cgPT0gJzEnID8gZ2V0SGVhZCgn4oCi5bey6L+955WqJykgOiAnJyk7XFxuICAgICAgICAgICAgLy9sb2codHlwZSlcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogeC50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+KAmOKAmCcgKyB0eXBlICsgJ+KAmeKAmVxcXFxuJyArIHgucHViX2luZGV4ICsgZm9sbG93ICsgJ1xcXFxu5pu05paw5pe26Ze077yaJyArIGdldEhlYWQoeC5wdWJfdGltZSksXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgaW1nOiB4LmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZ2V0SGVhZCgn6ZO+5o6l54K45LqG77yM562J5L+u5aSNJyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh57Si5byVXCIsXCJwYXRoXCI6XCJzeVwiLFwicnVsZVwiOlwiY29uc3QgeyBDYXRlZ29yaWVzSGVhZGVyIH0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9jYXRlZ29yaWVzLWhlYWRlclxcXCIpXFxuLy9jb25zdCB7IENhdGVnb3JpZXNIZWFkZXIgfSA9ICQucmVxdWlyZShcXFwiaHR0cHM6Ly9yeDMxOS5jb2RpbmcubmV0L3AvYmlsaS9kL2JpbGlfUi9naXQvcmF3L21hc3Rlci9jYXRlZ29yaWVzLWhlYWRlci5qcz9kb3dubG9hZD1mYWxzZVxcXCIpXFxuXFxuLyoqXFxuICog6I635Y+W5YiG57G75pWw5o2u5rqQ77yM5Y+v5Yqo5oCB5Y+v6Z2Z5oCB77yM6Ieq5bex5qC55o2u5a6e6ZmF5oOF5Ya15aSE55CGXFxuICogaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4L1xcbiAqL1xcbmxldCBtQ2F0ZWdvcmllcyA9IHt9XFxubGV0IGNhdEluVmFyID0gZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNjYXRlZ29yaWVzXFxcIiwgJycpXFxuaWYgKGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKSkge1xcbiAgICBtQ2F0ZWdvcmllcyA9IEpTT04ucGFyc2UoY2F0SW5WYXIpXFxufSBlbHNlIHtcXG4gICAgbGV0IGNhdFVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYW5pbWUvaW5kZXgvJ1xcbiAgICBsZXQgY2F0U3JjID0gcmVxdWVzdChjYXRVcmwpXFxuICAgIC8vIGxvZyhjYXRTcmMpXFxuICAgIGxldCBjYXRSZWdleCA9IC93aW5kb3dcXFxcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcXFwoZnVuY3Rpb25cXFxcKFxcXFwpXFxcXHsvXFxuICAgIGlmIChjYXRSZWdleC50ZXN0KGNhdFNyYykpIHtcXG4gICAgICAgIC8vIGxvZyhSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgY2F0ZWdvcnkgPSBKU09OLnBhcnNlKFJlZ0V4cC4kMSlcXG4gICAgICAgIGxldCBtRmlsdGVycyA9IGNhdGVnb3J5LmZpbHRlcnM7XFxuICAgICAgICAvLyBsb2cobUZpbHRlcnMpXFxuICAgICAgICBtRmlsdGVycy5tYXAoZmlsdGVyID0+IG1DYXRlZ29yaWVzW2ZpbHRlci5rZXldID0gZmlsdGVyLmxpc3QpXFxuICAgICAgICBsZXQgb3JkZXJzID0gY2F0ZWdvcnkub3JkZXJzXFxuICAgICAgICBsZXQgbU9yZGVycyA9IFtdXFxuICAgICAgICBvcmRlcnMubWFwKG9yZGVyID0+IHtcXG4gICAgICAgICAgICBsZXQgbU9yZGVyID0ge31cXG4gICAgICAgICAgICBtT3JkZXIubmFtZSA9IG9yZGVyLnRpdGxlXFxuICAgICAgICAgICAgbU9yZGVyLnZhbHVlID0gb3JkZXIua2V5XFxuICAgICAgICAgICAgbU9yZGVycy5wdXNoKG1PcmRlcilcXG4gICAgICAgIH0pXFxuICAgICAgICAvLyBsb2cobU9yZGVycylcXG4gICAgICAgIG1DYXRlZ29yaWVzWydvcmRlciddID0gbU9yZGVyc1xcbiAgICB9XFxuICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsIEpTT04uc3RyaW5naWZ5KG1DYXRlZ29yaWVzKSlcXG59XFxubGV0IGtleXMgPSBPYmplY3Qua2V5cyhtQ2F0ZWdvcmllcylcXG4vLyBsb2cobUNhdGVnb3JpZXMpXFxuLy8gbG9nKGtleXMpXFxuLyoqXFxuICog57uE5ZCI5b2T5YmN5YiG57G76ZO+5o6lXFxuICovXFxubGV0IHRydWVfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsLCBNWV9VUkwpXFxudHJ1ZV91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9zZWFzb24vaW5kZXgvcmVzdWx0PydcXG5mb3IgKGxldCBpdCBvZiBrZXlzKSB7XFxuICAgIGxldCBjYXRfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcIiNcXFwiICsgaXQsIGl0ID09PSAnb3JkZXJzJyA/ICczJyA6ICctMScpXFxuICAgIHRydWVfdXJsICs9IChjYXRfdXJsID8gJyYnICsgaXQgKyAnPScgKyBjYXRfdXJsIDogJycpXFxufVxcbi8vIGxldCBwYWdlID0gMVxcbmNvbnN0IHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXVxcbmlmKHBhZ2U9PTEpe1xcbiAgICBcXG59XFxudHJ1ZV91cmwgPSB0cnVlX3VybCArXFxuICAgICcmc3Q9MSZzb3J0PTAmc2Vhc29uX3R5cGU9MSZwYWdlc2l6ZT0yMCZ0eXBlPTEnICtcXG4gICAgJyZwYWdlPScgKyBwYWdlXFxuLy8gbG9nKHRydWVfdXJsKVxcblxcbmNvbnN0IGVtcHR5ID0gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuXFxuQ2F0ZWdvcmllc0hlYWRlclxcbiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkoJ25hbWUnLCAndmFsdWUnKVxcbiAgICAuZ2V0KGQsIG1DYXRlZ29yaWVzLCBwYWdlKVxcbi8qKlxcbiAqIOiOt+WPluW9k+WJjeWIhuexu+mhtemdoua6kOeggVxcbiAqL1xcbnRyeSB7XFxuICAgIHZhciBzeWxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodHJ1ZV91cmwsIHt9KSkuZGF0YS5saXN0O1xcblxcbiAgICAvKipcXG4gICAgICog5YiX6KGo5pWw5o2u5rqQXFxuICAgICAqL1xcbiAgICBmb3IgKGxldCBkYXRhIG9mIHN5bGlzdCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSAvKisgJy8nICsgZGF0YS5pbmRleF9zaG93Ki8gLFxcbiAgICAgICAgICAgIGRlc2M6IGRhdGEub3JkZXIsXFxuICAgICAgICAgICAgaW1nOiBkYXRhLmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGRhdGEubGluayArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGi5Yqo5oCB5YiG57G75qih5Z2XXCIsXCJwYXRoXCI6XCJjYXRlZ29yaWVzLWhlYWRlclwiLFwicnVsZVwiOlwianM6XFxuLyoqXFxuICog5L2/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/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwX21pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKSArICcmc2lnbj0wYTUxYjc3MmY4MWRjNzgxMmNkNjYyMjZhODMyNTM4Myc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkuZGF0YTtcXG5mb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiB4Lm5hbWUsXFxuICAgICAgICBpbWc6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eSNcXFwiK3guaWQrXFxcIkBsYXp5UnVsZT0uanM6cHV0VmFyKCdjaGFuZ2UnLGdldFZhcignY2hhbmdlJyk9PWlucHV0LnNwbGl0KCcjJylbMV0/JzAnOmlucHV0LnNwbGl0KCcjJylbMV0pO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5bey5Yi35pawJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ2NoYW5nZScpID09IHguaWQpIHtcXG4gICAgICAgIHZhciBsaXN0MiA9IHgubWVkaWFMaXN0UmVzcG9uc2UubGlzdDtcXG4gICAgICAgIGxvZyhsaXN0MilcXG4gICAgICAgIGZvciAodmFyIGEgaW4gbGlzdDIpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdDJbYV0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGltZzogbGlzdDJbYV0uY292ZXIrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgdXJsOidoaWtlcjovL3BhZ2UvY29sbGVjdGlvbj91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2lkc++8n++8n2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsn77yG77yGYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzPvvIbvvIZidWlsZD02MTMwNDAw77yG77yGY19sb2NhbGU9emhfQ07vvIbvvIZjaGFubmVsPW1hc3Rlcu+8hu+8hm1lZGlhX2lkPScrbGlzdDJbYV0uaWQrJ++8hu+8hm1pZD0nK2dldFZhcignc3RhcmlkJykrJ++8hu+8hm1vYmlfYXBwPWFuZHJvaWTvvIbvvIZwbGF0Zm9ybT1hbmRyb2lk77yG77yGc19sb2NhbGU9emhfQ07vvIbvvIZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0TvvIbvvIZ0cz0nK3RzKyfvvIbvvIZzaWduPTdlMGYxYjkyZjNlZjM4MjhiMTliZTY2ODM4OTE1MDA3JyxcXG4gICAgICAgICAgICAgICAvLyBkZXNjOiBhWydtZWRpYV9jb3VudCddLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6L+955WqXCIsXCJwYXRoXCI6XCJmYW5qdVwiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvYmFuZ3VtaT9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmcG49JyArIHBhZ2VudW0gKyAnJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuOS4xJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnN0YXR1cz0yJnRzPScgKyB0cyArICcmc2lnbj0xNjI0Zjk1OThkY2EwNmViMTI5NTM0ZTQ3NjVmOWIxYSc7XFxudHJ5IHtcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkucmVzdWx0LmZvbGxvd19saXN0O1xcbiAgICBmb3IgKHZhciB4IG9mIGxpc3QpIHtcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcIuWujOe7k1xcXCIgOiBcXFwi6L+e6L29XFxcIjtcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFwiIHwgXFxcIiArIHguYmFkZ2U7XFxuICAgICAgICB2YXIgZGVzYyA9IHgucHJvZ3Jlc3MgPyDmoIfor4YgKyBcXFwiXFxcXG7igJzigJxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXCLigJ3igJ1cXFxcblxcXCIgKyB4LnByb2dyZXNzLmluZGV4X3Nob3cgOiDmoIfor4YgKyBcXFwiXFxcXG7igJzigJxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXCLigJ3igJ1cXFxcblxcXCI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlICsgXFxcIlxcXFx0XFxcIiArIGdldEhlYWQo57G75Z6LKSxcXG4gICAgICAgICAgICBpbWc6IHgubmV3X2VwLmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXCIgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLei/veWJp1wiLFwicGF0aFwiOlwiZHNqXCIsXCJydWxlXCI6XCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgdmlkZW9fdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy92Mi9jaW5lbWE/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcbnRyeSB7XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLnJlc3VsdC5mb2xsb3dfbGlzdDtcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgICAgICB2YXIg57G75Z6LID0geC5pc19maW5pc2ggPT0gMSA/IFxcXCLlroznu5NcXFwiIDogXFxcIui/nui9vVxcXCI7XFxuICAgICAgICB2YXIg5qCH6K+GID0geFsnc2Vhc29uX3R5cGVfbmFtZSddICsgXFxcIiB8IFxcXCIgKyB4LmFyZWFzWzBdLm5hbWU7XFxuICAgICAgICB2YXIgZGVzYyA9IHgucHJvZ3Jlc3MgPyDmoIfor4YgKyBcXFwiXFxcXG7igJzigJxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXCLigJ3igJ1cXFxcblxcXCIgKyB4LnByb2dyZXNzLmluZGV4X3Nob3cgOiDmoIfor4YgKyBcXFwiXFxcXG7igJzigJxcXFwiICsgeC5uZXdfZXAuaW5kZXhfc2hvdyArIFxcXCLigJ3igJ1cXFxcblxcXCI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4LnRpdGxlICsgXFxcIlxcXFx0XFxcIiArIGdldEhlYWQo57G75Z6LKSxcXG4gICAgICAgICAgICBpbWc6IHgubmV3X2VwLmNvdmVyICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXCIgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLeaUtuiXj1wiLFwicGF0aFwiOlwiY29sbGVjdGlvblwiLFwicnVsZVwiOlwianM6dmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoTVlfVVJMKSkuZGF0YTtcXG52YXIgcmVzb3VyY2VzID0gJyc7XFxuZm9yICh2YXIgeCBvZiBjb2RlKXtcXG4gICAgdmFyIHJlc291cmNlcyA9IHJlc291cmNlcyArIHguaWQgKyAnOicgKyB4LnR5cGUgKyAnLCc7XFxufVxcbnZhciByZXNvdXJjZXMgPSByZXNvdXJjZXMuc2xpY2UoMCxyZXNvdXJjZXMubGVuZ3RoLTEpO1xcbnZhciB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2luZm9zP2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsnJmFwcGtleT0yN2ViNTNmYzkwNThmOGMzJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZSZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKycmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnJlc291cmNlcz0nK3Jlc291cmNlcysnJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nK3RzKycmc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNyc7XFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLHt9KSkuZGF0YTtcXG5mb3IgKHZhciB5IG9mIGxpc3QgKXtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTp5LnRpdGxlLFxcbiAgICBpbWc6eS5jb3ZlcixcXG4gICAgZGVzYzon5pKt5pS+6YePOiAnK3kuY250X2luZm8ucGxheSsnICDlvLnluZU6ICcreS5jbnRfaW5mby5kYW5tYWt1LFxcbiAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgeS5idmlkICsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgIGNvbF90eXBlOidtb3ZpZV8zJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoueZu+W9le+8iOW6n+W8g++8iVwiLFwicGF0aFwiOlwibG9naW5cIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoJ0xsZTBuYXlkc3pRMjUwSWhPeWRSQTFrSnIwWG5OYS9yRmxzamlFS1pXN3JldFpGZXVITkpsUEtXTUU0YTlCY2ZCOUIwaFRhd1lNOHYraEV3ekYzUlZOMnNSL2lIOE52eUhZNnV6S05nak1iSjg1R0xFZzBKeWpQSXRmR0dSZ3dKRlVWTkwxSUxlUk5iYWUzOVhWcm9EN1dLVUtCUGZ2N0h3cWoySFlGSDV1UUxwT1Zadkc0VWNZT3pBczdqOE5pYVBFVUpNUzQyNEJrYm5zMU5mNkZJRFhsZmtOSUlzV0JIV1JkTzZtcDczVnkydnU1aGcxYUcwQVZlazUrcFFjcWFreEVNOWNXR2dDSkM1bUtwVWlaU0V0UDkyc0tBOVNLKy9OSHNxZjEzQ090UVJpaXg2Z0ZoeUZoTGV6NytHcHVTYkxIMTNrMUZEVVpraWxZN09CUDh5Q1pQK1ltNDFZaGkveUlUeDNFbExtZ2ppQmV4ajBxVExqcktJWG54NEREWGlpcFN3L1lwVU5kcXRnVVhITmk5OGE3Y0d0TEUrOTVBcWsyRGNWL0gzT0c1aHBzd1NIQzIraWxyUkxQOCtUeUxUb2dyRlVhSllNeE9tcld3QWpVTTFGZkxzL01TeDYwMVcvdWVGREFtaE8vWlpvVVp3ZjNNWWJodGt2K0J4Z3lHLzc2V2ZEQVFiR0FSSjk0TmFqWjlwenp2Y3VYSUVyZ3IxRC9QdWdGbWhPV0hrL01TZEZEbEJxTURwRTh4OTVZajZ0TDR3RnN3Mk9hR09vZThNaHNuaUZZRUY4QnFNUFJlZDB6N2NCQzRSR3hENU5nVjFGS1dIQVBnWlBZRktqZ085Z2xOSnY3MUlTZ0lvOVNLUkJFakttRTRjRXZiL2tKRU9DRURMakJRclZzT1QxMU91WmNadWRDWkVPVHptcmlHSGRQZmZsS0JyRnNFaDd5bFV0UFpZRWNFcEN5MVdoMWUxWXhOS1poYk91azAyd3RBN0ZmSE5QMERxSVo4M0Y4UkZHMzhSWTM2ZkZJLy96THBDTUVNOFVYaHpsanc1cW9TUHZ6ZmhlUjEvR0YzTWpqRmZzelhaM1VDdmNCZzJ3QzFPa0FWS3AwdVNjR0xtZXE2UWFFYlFOMnVuejAycHBGVjdlSzlINzN5RDFFRWxOS0NRQ2trbUI2ZHhwcXRrVjZKaFJzeGlnTWNlWG40ZFVHdCtBdGZrQTJLdnltZTVya3VwcEJjZUZ2TWZoSUZzeFlHUjJVRTkrb3g2a2ZsWUJ0UHA1NVE2dWxJS3lkaHJrNVRBVHpNMml2OWY5eHFZcEpJSUJudElWSW9mM09hbkhKV3JFdHhRMmMxZ2N2T3QvV2JFL2xrTmRyUTMzSU9Zck9GYjJjYlo0TS9saDVuVnR6aWp2cFllME02TzV2K0lvWk1wT2lWcXNlN3lOaVhoQUh4RTA1emlpVmNqOXBpenBXekllYnpPNGcrS2thcUpyQlM2eXo1UVhtaUZjV1ZFU0lJSW92WUhlQ0tSRExnQm9qcUpkVGVJWGFSL0tlNDlzdDAzWDJIUncycjBCME1uaWY4dEVQZGExZ2xjQkxzVEVaRVcyaGJrZHRvRWljSVJGdmtpNTV4OUhRdFFUNHpwMlRXcDNhdTdUSXp3RGl0Q1ViYkRPVjF6RmdTSGgwODczTGx5Qks0SzlRL3o3b0Jab1RsaDVQekVuUlE1UWFqQTZSUE1mZVdJK3JTK01CYk1Oam1oanFIdkRJYko0aUJwK3hYaGpjKzJydmlEYUFPeUZDOXVsdmt4emErVFc0TWF0MGh4dFlEcklsK0Rwb3VlanlJTVRXOERzdlh4UFhDQVFibXdHbERFQWZPaXlxdHFMUTlIZjhnRFhFMzVRN2F5MHlBQkVlajFxS1dncmovWW5CYlkvZFlBT1BTSHBtbGRkRkxKbktwQXBkTVh2WUJzd3JXRjBDUlJTYjFzN0NaUmdNZk9Reks2SXo2L3RlaGFzbU9zN01sOXcvSHBuNW5LaDEwK24waUdYTXZ4NUlJK1NHcG9MdWVDdFJtSjdVVlZDdERHNnhldnhZTW0wNHNBR0dHSmFDREFoR0g4aWNiaElFMmIrb3FERkVwbVUwZVk3UnRHNzloUGhMK2dYWU95WU5VdkpxZWpsYloxL09kdkw1bll5Nm0zMEd3bDN6N3c1ZXNsWkNVQTBrYVJzNWttVU9MdkwwUVFQRDc0ZmFnQWRxR3NMSFVHRFdiNEJ6Q0xGMk1ZTEh5K0RzY2tLM0ZZSk13MFU1cU43TDcwMHNWU2FsZjZ0Szk2ZFdxem41ZUlyZXdmMWlHbzgzSWN3ejlvODFKbXVLQTFMcElTUzkwOThud0F4MXFQMUZ6UGN3SWhUU1Z1UjgrQW9vMXAzRGkwV0x3TktRTk9JOHg3NURtYUU2QkxQaURrYURMS0p5YytielgwaElDM3NQYjIrZGZ2bGtzQ25LMjJjR2hLMjVGczlPRlIzckYvVkZWU1JiREc3KzdBcU9rRTI0Ym9rRVVqZDhuUzVIanFwM0QvdWsrMFh6Qnk5MjIyWDZiSm1KaHdGbEt6NDZUQlZYZXp6bTNkelFXN09sKzBPcWYvRXgyQVkrcndQK002eEZSSFVYL2oyR2NHYTVtaGJKVXpSUkJkTzVJcHJVMk5zNkh0U1hDOUlxY3hXMVZsNWJDT2JNRzkrSHZ2enUwc0c3QVdOZ3VaSkNzeGtKWGhoZ3dmMkdCNkZQdTYrb0ZSejZENEEwNXNzRHNMTFZ5bVo1Y2dUYkRjYmVxMTlVbWlZYW0zUG43cVdJY2p1aDlPc040dGlGVHJyVUVQWklSWDlYazBVR0RZZmFiUTFwWGZ4TS8reVNoOHE3ZHduVkovZzdsdWloR09lZU53SFhBRkF5NG4zYWNQSDJYQmMvbXN4NVhLZ0lyZU9STVZZL2NGYjlLY20zb1daenpLNitIU1A4NXRrRktLbTU1aGc4TXh3aTVJeDlSUUUvcEdBeDFjc292U3AzalJQMGg2Mm82TmhGa3RDREtXempFVWw5Ym1hMjhmWnlpWTRkWEJFc0hCT3BLdkJ6QUEwbFJrZXpUbkV2dlhzOVo1NVVyQWE4WmhBRnV4NlpFTnc0Y01USXVTa1ZmdytWL1UvbW9tbHRKOXZHUGdpcWI1blpsOUt1N2QwUk9WMTVKM1FBc2JoT3hUNlNna0lWdWd1VmFUVlJjajBIVyttTU5ZS2JReW5yTlJBcUtEZUpxdVZ4YzlIbFBNNkw4cVBuWklXYmJIQWZVZkdidzBsUmx3U3VPcEY3K0EyV0pMWjRYelNnSGJjTVhrdWx6UFBEUDkvY2FSSUI4ZTJWa3pFWlNQblVpWkFwV1A2d1d1c0h1QjM5V0FNNzgrTkJpNEJwMm14V2pMS0hMV1FNRGVJWFhoZHhlY0s1cVVVZllMZ0lUaWg5RGVGcGdMTldjQkxHUUZiZFNOa0ozTldwY0c1NkRhakRJdUxVYThrMDBpOTRjSndBek1rSkJ4TkpiNWVoQlJrVnZXWG9zbXRKQk1kUmY2TkVic1Y5dTh2cFpqTkVvZ1Vrbm1sdEo5dkdQZ2lxYjVuWmw5S3U3ZDFacVRQem9wd1poaCtpdERwVWIwTHIyN2M1d05BQUVqcnBoT3FmZTBOajM5Q05XMExINFd4amYybHdseE10T0tSMUhRTC9DUHc1MXl5WUovTFZyUXoraWYzaUlCTlU0bkNnT2J1VzVKVUxUdnNRc3MyUm5lTEN3NnJwaHhnTXNkYXdNRWdaOXFDckNNN3lUTTBFeWxGeGZqaUlaS3FiSzEwQmFlMk5vSEQrR3VvVUtBUXA1U3U0QXFYU2ZLTHpteDRoV2JtU2lOVjdtQ0IvcmR3MXlic1B2Z0FGY0c4NU41M2tOanpjUHZiS0xPT3hIWEhZVldDbEJtSnByd0p0SEE2QjFXWnBHV1J4NU0vZ0Rtc0d6VlJtVnVCRHZtU0FaTXdJZVZyNWJ6REU4Nm0wTnFjbWdUTmVweHdxQit5QkJwNUt6ZDQyRUFRaHQyRUs1VDJ6TXh2Z1R6ZVMvejNLL3E1bFJIbDF6SzBKL3NRd0x4OXo4bE1WZzlSQmJBZS9lYjIwVm93emNxUGRlL3FpMGpITXdHY01hQzlkdXlXNTZ3bEdPc25rYmV5QlEvUGZSU1Nya1VHL3ZjYUNiVGE0SVQ4NFp6dHBOUVJ2YmVVbklBb1BrVy9lWjZ3T1VpYTRKc3lhdzk5V2E4K0U0TGpEbVowelJoblNIZ1V5Qy95YjlyWlQybEUxUzdKQklrN1laUFh5QTAwYTJMZ0tGRzg4WXpWODBoaStBVlR3UlpQazl3bE83Z1JTMk5SLzU3N25JeEcwSDIybGxGc2NtTjFMaEk5MUZEMlZiVlhicWlLVVZqSmNWbjYvc1FjVHd3ejd0dkI2ejl5TW1yRGx5Q012eVVkd0dJNnVyOUVhYzRxVzZFVXoxeEgyeTVUSThBZmh4eHhPckFRWm5FUmJUTUlDZGZLR1FHREplL1RkS1JLUXRnYnBiNU1jMnZrMXVER3JkSWNiV0E2ekRQdTI4SHJQM0l5YXNPWElJeS9KUk5kdnNYNkRsS2RZd0xuRlVRajJ0NkhRSGh0amtPbGkrdGNPblJsakFhMzJvcmZ4NzlWT3V2aU5xK21PcVIxTitDR1JGMmJtS1Uxa3BEQXJ4NFZ6RGRXSmRkRXJhK09rRm5PTkVHejRZZWN3RVJaVWQ3NytublBMMk1vQ01tRURZY3ZYSXMyRXVaSGRrVGZuMWl3ZW9nRDAxUWZ3cVpITkY4SHZsQldNVS9mNkVkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVI1ZWJOeXhxRlhoTGMyK29lZEs4SkVvTG9NRVE1RDNmSmFyWWdkOWp5NmZPaUJrRzhDOUlJVEI4bXl0eXlzd2NLdHdoeTEvMVdiSE83Q3ovUmRxVmN5SjM0QTJxMlozeXVpMVE1YTFvUG1PME5XTGZueWE0K3NSTlFya3NpUTRIdU8yNkdhWlVSOGtXekYxT3hkZHVhUFZ4SU5NYjY1OGNzWFZ1REdaNU1ZcFdkYmNrRlc2ZVlQRml1K3hTREMvZUR6c1hBSDZGTDNQVjhPcERVUEJtcFRlazJYWGZlS2RxVTJwUzltN1NDaUNCNXUycWJpS0MyYzl2QlYyNE02czhSYTRobWQrUGFqNEZUeXR2MzZTSDFiTEs4dEkxbFp6K3dpZis5WklBZFQyMmNyNTdqcSt5cE1QZU4xeTU5RHF2N3BzaEQrSlRJOFVnZFM0UVZsQ3dGMTdZcnZKSFBENDJLRkViZ1FZKyswajBkYWx5SFljZ2Y1OFF5QWw5K25uQkpaVlVWbElpbFE2cUVQc0h6YjZyTWJWNjdZU3FaSGNMdmZDVG9iUmk0cGFCQ0VVeGN5TkxRdkpTS2NLcFpBdWYyKzhLODF6S3l6M01kRWN1cnRzaG5zeFFBK29jREMyT3k1OGl5Q0s2ZFNqSXJUUGlGRlE4MEJtcGEyRDNsc2NMVm1ZNUlSNG9rOXRnZEJlWEk2WFo4dTJrOUtMSldkK0Zxc2Y4WU9RR3hPNkVIMmNDS08ydTArM0YvR096NisvT3J1dExhaHFSMm1rVkdJZEpLdVhlWUdzWm5EQmdlSmdCSlo4cklIQzBDME5XTEx4aWpMTEZKZnppMHB6R0lSSFc0TEFKQWhPL2ZMcFNMNTBSbHJoTVl2YlFzNG9adTFwZSs3OVhUNVJSODhkbFhzMXI2RDRzSkhZaDYrN3gza1BRdU1sczlyYzFueXd6QmRsMzVDSVp4RXc2Y0FDalA4WTRkbjZ6d05ZUG50OVFtRzJJVjRaNHJNVndJNXBaUWltVjRjQjFKeXAveUszdk9jRmVwV2JhMGlOTDd4QWhFR0R0czhJN2hLLzVOSFNDendzNjdUU2tKOFVIeXdHa3RTVEpDVDAxNXlwUUNhU25LbU9PcVVpbXhDYWhmUzRlNGY5WHRmQmxTbEdXY1oreXl2TFNOWldjL3NJbi92V1NBSFU5anhzQ1AycEs4SXBIOGpSeWFEeGFpR0ZMeE1tUXhjNWtEZ2c2dkdkUDZLeTI0QTJBMGVCaWVYYmdQZlh5SHM4MlI0NTY5MjJKejBwVkFHc2pQNDQzbXhpRStvNld2M0xuZG5tMCtGL1ExSGt2NzRQZHZJbUhETjR1ckdGOHRFQitEbENGUStsRlNxaCtiQ1BJdmh6aGU2Tnh6cThEaCtpb3p1blpJb2ZJenJpbzFnY3JCZkIwUVlkalhHMEZUUjdwZE41NG0yTXB2RUgweWZ0RW8xOW5ydkxLOHRJMWxaeit3aWYrOVpJQWRUMnRIVi9DUFNzS3Q3endjeXRhR3JMYWFvNDJEMjJzc3dUUkxQYUcvcTZHaTdEakVoaHdLbEJ4amp3N0lNeXRJSTNOa004Y2IrSnRFeWY4d0ZrVEVGaUZMVVlpbVEvaFBYSTkzenJYaysrdnFvZ0xydTB0YVhndGxNMTdxdEFmekdRdTh5VWRJNHFxWXplSnhYeGYwTk5aMm9CamVEcjJEaXdJOU9YUFV1Qkhic0w0YzMvbncxMEVtMlU2TUZCVWNyWmovRE1hU0Z4VmNaN01vV2wyb244R20wVm93emNxUGRlL3FpMGpITXdHY01mOXo0OWVnWlJRekw3aEtTVU01VFB0MzdBbWszNzljY3dwTHRQVFQyM0JoN1VobmtkRzBHVW9IdkhzeTk5R3htUWFSNG5heU8vclFGYm9xdXN0U0ZMck84MC9QdG5IOEVKY3dRYVFZWkp6TjFiOWJENlJySmw2elFJb213TWZZdXUrbThGc083emQ0L2NmcjZoaU9lYkhTS1ptRFBGZDNYUkplLzlDTm5MR0xZWEpMcll2RXZ0Rnp3RDhBM24zZGhYV1BpbWtBaXNGMFIrN1BoUTlWSkxXY0doOHRxS2dvVm9aN2t6Qkd1RDdTaDljKzJTcitTQUdINmFIQlQ0RnQxZXN3VW5iK2ZuSkdoYUhTQy9Tdm96S0NMbVdOclBROTRhWnVZeU9PdjBmbFBVOVB2OUtPUVV5KzVVdWRsTXZ0cWw3QklKZm80UGloL2xLOGUxTkc5Sk4wRDlNTHUyZjcrVUJCY2duY0I5RWh1Y0tRQ0pzUmhQTGdacFgvcitzTGduYlMxSGNCSzU2djdxTm1QUVl6bE1Md2dVRlFGN0FkZXdUb2UvWWl1QWJxY0tjTTFNd0xmSTRiZS9nbkc0YzhSNFU5QlAxR2w4MVo1VExaZldmZTF4NlY4R3pKSTk4N1Z1SzJZNzEwbmxFc0lVQUNwMERBK3AzYjZxdy9iRVVHMGJvTFB6b05ySVRHdE9Jd0VidVhpQWp4a3Zocy9KQXZ3SUc2NXY2b05TazdZeEpaekZObytqMWZJYXowK0ZCalc1Y1dmK3NpT3Azdlloa1hXbzVTbDZhQzduUXI5RHpoTjcwVE9pOW5CekhRUkZsUjN2djZlYzh2WXlnSXlZUU5oeTljaXpZUzVrZDJSTitmV0xCNmlBZFEvREY3d3lIOTl6SXBySU5VNE54ZXZiNkh5VkpQazUxWEZCMVNJZ1NJcnJwejNFajNKK1ZpZ3BnRWJoVlo2cXNGbDhBbjJVWXBBbDN4THkxdWNCRjJ4QnVxWktZYnBKVXREOUZ3R2VSa1Z5RTF0R3FqSHRRWWgvSU1ncXZmYXlMWkJ4aU8rVjNUQzJWUEZ6MnJvQ3h4TjhJTHp5S0NjY3hJWTZFWXNnMndMYjFiOUIrcldINEc4Ti9yZ0M5RDByWHJuUUtFYllwK2xYWGx0d0VTUWdQenJiNUVvUlB0eTlkaWJsU0JieHI0UHdFbC9HbnhSbEZacFlrOER5ZkZKZHVOODEyMVg1bVJXS1U2NjltdUczakk0THNYcmhsNkJWVk1jWE45a2FxOXF6T3IydlRmNklzNU96Vit4Z1FOQkRzTWlkc0o1LzgrVStaTFhvb2t0Uzd6QjlEanlFblRReFdYT25oSXc0azdXemo2cG0rWkk1VzFOMzBRYlZCK1FmT0lmRnprQThSM2tzb0R1SXhma2crc1k2a1BHczdNY3JTV0UydzBXWlpUY2lEb21UTnovYS9BQVJHYUtMRS9lNGtnMXIwcFNFZDVMcWZ2MkdQRDBDVkcrSUlSc3E5NUhNRnJYRElmZi93OWJMSzh0STFsWnord2lmKzlaSUFkVDJ4OUpjZHg4LytFTUw2c0YrUkJoWk9JaXpkblVDY3ZqTHZFM2R2alQyWEJpY2RRRno3MUdTT2VnamcrSGZ5c1RhOTRwNDZVcy9nK2l1V0hBMnNkSHVFR1lTRW5RbC8xWGtyR0kxd09xTGM0eFcvVHhmY0pPU0JZMWZPSTJXTkF5cEtTSjNYTHExYjRiSGxxNkJWeFJsN1pHcFhJQSs0VGpoamNOV0QzaFcwaFFybzA2ODF0SHRnNytiandDc1Brdk1VejBHNWtQWmhtL3lwMVp1YXlHOGEraG5MQXN2dS9NbEtuUFl3cmxURlBFTFBDenJ0TktRbnhRZkxBYVMxSk1rUnlDR3Z4YVRra1EvaWZGN0tkelZueHlRMmM4OHhRd0djSndiNWlGd1RJckxLOHRJMWxaeit3aWYrOVpJQWRUMmVtV3U0V0Q1Skw5cFlReXM2dXVUanBVbnkzR0NCcXRtbFNGN1dBcWIvU0ROTkd6eU5RN2ZhOGN6Nm8yQnVlSDduc2V3dExyV0k4MTM5a0RZN2J1d0lKbFpQTnJRTzE0bktDNEZSZFlUZDZ0R0xSemR6cFJRM1lTTjFlYm9xTHlEYWlEdHQyRWVvMlN1T05TWERLa0RQVXRETi95RVhoQ1FjZ1VON29MSjBwOVRUZ3NBNEltOTNSTC9IWG5FWnZxdWVlaEVOMFJndXlpRWs2eGZxanRHLy9xcm9kZlhZZFoyWGV2VUEwZTNRMU9EcXVzb2daNjlOUFR3Y01JSUVCOU9qbENkQ1h0RGxHRml3WWg5bnNLYVdZWjJoWno5cGFBQTk2NXlSQ1JUNkZTT0x4YW5SaG8yRXNsSS9leGRZM202aG5hRm5QMmxvQUQzcm5KRUpGUG9WS1NlVjRIYzJLK1BIcGRtQVU3bENpMG5DOHdTNkxWcE1TUzEyQjR6bTJKaXkvL3IzckZyQ2o4OXdDVk00cldNZUhqR05FcUlPa2NBS0lwaFRuOE4rM3RXckx1ZXZKQ1c4dUNQbVJxTkJJeDNvNXU5QWdnMkNveEJjYmVLaFNrZ3hjc3J5MGpXVm5QN0NKLzcxa2dCMVBaczhRWDB3MzMwUmJ0K24rcWZHT0tnbHRUaTlUVUlFK25ha093QlV3bEd6R0NvdmNqRi9lc2VZZmlzVDFrQVRaYTVDQnBSRWgrZm5jM0xldExoNmxKemJSekNPVTdodlltZnFDZlFJRUUyTEsvd251bzd4S0ZNNXh1N3dkY2JZbDdMSzh0STFsWnord2lmKzlaSUFkVDIraUZ3RDA4N2VuUzlRbW5jKzZUdEd3eXFjc3p1ejZqMDBCRklTL1NiTVZobkpBQytaUVdTb09ZU3N6a2VuUFlta1M5eUZjUGxGZmpCWm1oRGlkeUtuc3NyeTBqV1ZuUDdDSi83MWtnQjFQYkdhMklMMnYwSkwrMDV5cXBFazFSWFJzUGRkcXU5Ry9nWkJ3WXRiMDIvNjRMSlVjN21adHc1S3YvNFU4NG9mL1p3bDRicHFGOWF6NU5KcktLa0YveGl5eXZMU05aV2Mvc0luL3ZXU0FIVTloK3RsOVF4aTg3SzJoKzUvQjlXSGd6SDdYMWl5MjlPWkNvTWVsWEQrQ2xWeXl2TFNOWldjL3NJbi92V1NBSFU5aUVTTU9vdk1rQjdhdldhZ3FkVkFaWHpjL2dicE9seDBnc0ZqaFB3bjB1aExlMTJlZmEwbW9VNVoreGFzZFpML0dDajQzdENWQlRtRlVMcnZUaXlncGFHZG9XYy9hV2dBUGV1Y2tRa1UraFVHaEc3TGpBTVhoa3RFWGJ1ckdRWm5tY3RCTGFULzNrOHROYkhBcFZnS1hqTEs4dEkxbFp6K3dpZis5WklBZFQyM2x3S3I2Y2hCYTBWMEJ6dFB6R3VJekZYYmxQeDlDUGppYVdYSGgvc2lNRExLOHRJMWxaeit3aWYrOVpJQWRUMlA0bDAyQnVLQkRFMzBrdjlCYkYzU24veEk4enM0OXI4WElFMlRuR1RRWGpMSzh0STFsWnord2lmKzlaSUFkVDJUOWU2bFBxdUFUZS93eFYzWFRTVGlVRE5HNU96bXkxbnpPTVNyMElianM3MCtiZkZ4OGg3WUJnMDBBTXM2Y2lLejRtblc3YnJ1T0htQzQ0blhrZnN3cmw1RUxoNEV0WldTcXJoZmthcENvS2lmM2lJQk5VNG5DZ09idVc1SlVMVHcxQUlDWnlBQ0V4bjl3NlcyaUJWSXEyVVVjV0Y2TjVka0VPREdBSXdJV3A0WVFCNndyUzBiVHdaTC9Yb0dWOVhzSnczcnovRTI0VnpzQU1ZSjFqcEtBeEkxMmQ3MGwvekFDWUNrbFUvZHRSQWdVbktmQ0N4d2NMUXE0S1FxQUxkdW14UXd1K2ROQkJVb1g0bVBwRHpoVG5wVWNOV2V1ZGxUZnZkQTZWYWZXRnh5MEdtTHJoYmVNcUNPcTZUSHA3Vk9aU1ZVRHA1Nm5uSzhPajBicnJtOUFkM0h6ZTRhaXRUc2cyVS9mY0grN3oxcmNFRlFyd0FTdU1FZ0ZUL0RiZyswbjArb2NHRFhvZ3p3c3hBWkR5YVN1YlJzbXRWMDVCUUZUSi9CTnZ2L3VmNWtTWTlpLzk3S1U3SUZtWXhsOHNwd3prVHJpbzRqQVJINlp3VFhwUmxIOTZUWmRkOTRwMnBUYWxMMmJ0SUtJSzVXazc0SzV3SDMyU1lUc2hWT2YvaXl5dkxTTlpXYy9zSW4vdldTQUhVOXNRc1ZKem0vcFlBZk5mVmhYR1JNSjZTb0Qyb2ZrSDlKK1pTbkxmREpFODBqOG5HV1NqZkdxblA4bTNRN3NjbDhnZGNFc1ZTRFZ4cVFTeHdhaVJVd0RCaDVPVENsN0R2b1pxRHdvaXhwME81VnFLdnl4OFdDVXlPT2ZmeU9yQWY1NW9lVUtuYTVwMklBd2N0eWg0SVJuVW4xOVFSeElkYStUeCtuS2ZENEdSZ0VNUDVLNzhmYi9tZW9Qa2JBZEhQVWJDZjZ5Qjh5TzQrOTZXbVFNcXJFaWF6S2V5WnRqYnZsaWtiT2VNUDVmQzhtN08xTy9DQm5oZm5PckdZekhad0hrQ3Fjd3hBcXJCOVdrYkxMeUhNWnZwNWdHZ3JJb0tHaEZIRDVibmY5ZkF6enBReSt3Nzg4N0RrSnl2djJ3bk9KK0txbG1aQW95SFZpSDQzRnowWGFBMFJtbUJicEhKZkFCY0psMnBBa0tvSFZVY2JkNng1Q3pSUjgvT0F0bnFPdk50Q3ppaG03V2w3N3YxZFBsRkh6eDNMSzh0STFsWnord2lmKzlaSUFkVDJsaEJGM0gwUG85RkVXQ0F4K3YwbmZnVXNZV2QyaXdoODl5QU1yNmFxUmR3Yk1aZmNhSVByZk1HaWg4UTZSVVNkR050OXIyYVcrUTg1cUhGSnRpOUFmV00rbitsc2dsdzJ5Y1dKbThIQkJrRkxtUTBXcHNOZ0VBamRTai8rdzhCbDFVVXdoeG5Ma2MvenNpdEtMUnRySENyTldSY1A5VkwzVGQ4SGFVTzZmU2xxaDM2UnVjZnc4VFExQjFNV291cGpoUFI4T1R6K0NVa2R5S1BiRTdVajFVRHBoOWtZYXFYUE1sMS82bXBxMDJiTEs4dEkxbFp6K3dpZis5WklBZFQyT1BmWnFmRXJQd3Q4Zkpsb28zRkhvWnNIajN1TlIweU9qSVNaUUZYZmhkV1lndFVtYjNYTklESG9IR3hXbnE1TTZkUi9oQkJvNVY0aStUTFp2TVVxZUZKY1I0bnkxVERSZDh0TzNkQmQ5MDZSd24vQkNxSEtPTzBHS012eEZBOXY4ZlRtMU1QZnlyZ05sc3dYQXVaanlIOXNxKzUwd2xaaHFvSk1WbEsxVXErdDFCOElLWWVZMmQzL3c1M3RlZTlnUzd0UUlFU0tWTFJSU01leWN1TGdvb01ISkhnaExaZGJ5SnAwWSsra0VxcTFyQUx2RUtjZnVkT3VTMDJhMU82RTMxQTlZeW1RUHlWK29nQTVSYTdZTWlMZ1E2MFQwZW9TaytjaWk0aFBLSnhlLzRiZS9YMzJOOHBJSUJMSG5HcVR0akVsbk1VMmo2UFY4aHJQVDRVR05ibHhaLzZ5STZuZTlpR1JkYWpsS1hwb0x1ZEN2MFBPRTN2Uk02TDJjSE1kQkVXVkhlKy9wNXp5OWpLQWpKaEEySEwxeUxOaExtUjNaRTM1OVlzSHFJQWVQeUNOckRKMzVkelVxOHNyNzVrNXA5c2ZzTjlmNmR6dnhBb0VnTnpnd1Z6S1BGbHhXcXd6VXdheld5ZEdDU1dwRGxIS2dPSUxZSGlMelpkZkg1cHRjbDZQaUNEYlVndHhOclFQS05nWFVCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SUJvZ3liQ29BU3BHU3YvZFAvTmE5OWFhZkIrM3ZBNnhDN3NnOTFnR1JteHRsWE52WWlDTW1ERHpDWmhNZm5mL3FoeDFmOHZJT0Ryakw1aWQ2anhIcm1oQVJjVU94RDRqOS81OFd0Sll2YW10Q3p3czY3VFNrSjhVSHl3R2t0U1RKTXBnWnRpem9BWE41OWhRK1U1Q2hJUTBVVGpJcENDaGNBdldwOS9DSHlvNFJnOS9pcWlOTFNCT1c0MXBZdmdHVTd0SDFpUHVoZXgxOWJYTTVvOEU2V0NqT3lucDdOZ0FDVjMrUkF6NHJhbDFobmFGblAybG9BRDNybkpFSkZQb1ZDMVFPQ0dETy9vMXhYYjY4Z0dpSGlCQ3NzSDdXa1RzeFRmUFRxaXVYRzJOaVdzdW9OY1AvODQ0N1RPRHdCd1FoeGExZjNSRkwwcVZ5bHFHcmJQZXFmZ3dRWDBUTnVCcTlEL05USEl5aGVUdXdBb1ZZRzh2NGxNajdvcnZudW5Vd3dnazZVWCszVVViTGFBWjRLbXRkUjNoVHN4S2lpSzRScmlFcDA3NUVINTJsZGpSSmI0dWJJL1FYK3FkclRMeEZ3SWRZZVAvd2lpa05WT1hQTUNtN3VIdnJjSXB2aHFjVnRWRVgrRzlhTDh2UG56YytoSG54QTcwOGJENkxmSk5nYTNGeUhLaUJSM1VmOW4wRGdIR041WDFoeEdsUWJtOFVUTDlMSUJ2aUQ5NjBWN0pRdm1xQWgvazRwZGdHOXF3NFVnaE9oakV5NURtQ3ArZHY0UldPVU9hbTVxZCtLZWdra0VTT0c4a1FRZXB6cFF5K3c3ODg3RGtKeXZ2MnduT0o4Q0pSbDFFT0RNMFFZemt6TXR2OFhITEs4dEkxbFp6K3dpZis5WklBZFQyQ290cm9SUHI5TEFMMUt0K2Q3RDNNZHR4TmFzTFR1SmRESStxTmJiOFBUdFB1dC90RHFPUFhpMTF5dTR6VjMzblJZNkZqL1pSNW9LOG93N2tXbWJzMCtFOEdPaGhHakY1YTdzYi9RWHcyUU9EcXVzb2daNjlOUFR3Y01JSUVCOU9EQ1dPS0IrMXZyRktURmg4ZldvT0JnTFJKckU3NTFrMFNhRERsVk4zaXNOSkFPc2ZYanpHdm9ZelcyYmFwakdscXlqajZmeUJVKzVJd044RnE0bEJ2Z044WUk4Vk1kOGJid0lqdko1dktXQVNmQUFFQnkrTERWYzZzWHRjc1B2V3QzK3N1czlJMjJ6SzJUajdoUzZwNk1zcnkwaldWblA3Q0ovNzFrZ0IxUGJ4L2FMelNMUW10d080V1JvTjIyS1lWSkEzL1h6U0VnYmduZWd4cXFOT0JpM3Rkbm4ydEpxRk9XZnNXckhXUy96djdxMlUwSEFtU0hjYitudHRsc1ZMak1qUndqYU9nQXRSZWozZEV2U1BWRncvaTBhQ0sweE1RYkxLaFdieHRRQ0JrbGZGYVlWRkxQWlpFMG4zUy94ajFCUFRtRmRhVUd5WlJaMjZRREdoT01zcnkwaldWblA3Q0ovNzFrZ0IxUFl6TE5JVDY3c3doSjFURW5JQUxjVXMrNUpsd0p1N214VFJVNFdYQW5CUDEzZ2U1Z1ZqajFOYUo2OHd1YVBpVmg3QWQ2VVBXV2dSNndMSVBuVFVmdEZqMHA2VlhTSlB1VGVhd1JSUTRjM2NyWGVRbXRDSENwVWdYS1ZvdGNEZHpXQVRUbk9LSlZ5UDJtTE9sYk1oNXZNNyt1NGZMN00xNno4N1NKRUhUVFRtbStLOU5ITnBtU213SmJoYXNad2RneC9BZDZVUFdXZ1I2d0xJUG5UVWZ0RmpPSWloRi9DMzFnc0s0RXZ0dXVzbVVrODljY2tBUDVpdm1weUdSTDY2eEtUM2JCQS81NGxWT2lyVnhyWlFCL3c3VFM3bC9FZS8ybzFLRVVMOHA3RHRvL2M1c25RSmxDU1VmRERET3VleG1YakFPYlFnczM3YkxEeUU3NFlLS2JMUmR3eEplRWtDakRkd0x2TXVKR3JzQ096Mk90akFQSVFUa2pDaE5KeVdDelNFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FaM1hQZ2wzcVRJbGFNSG9iQlFSblAwMTF2b2g1eTZEQk1LQzE2bFlORDhVZm15Z2NsVFlzWkNlZGVwN1Vsb0Rxd2NqSGE2S0g4VzFXRlo5RFh4UDNXdllGMFJEcllUYjRqb1FtSVZWL2NKbmVkM2NQMlVydnBscjZMbmRUcmtOcUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJT3J6NXNtWnVMdklYbVdPcEVYV2lHb0lsaXlrcG5IY21sWlpIbEpwVnV2b1V6MEc1a1BaaG0veXAxWnVheUc4YTlxUm9yVlhJdC9oYTk0S2Myd2ZUY3ZMSzh0STFsWnord2lmKzlaSUFkVDJ6dVpoRnFIVkZSSlVjajBPL2VUR0xsM0JZTFZQRFVRYUw5Zkh0MzVTdjZtRklpMkVCVjdsZmtwamxTTFJYUU85Q3p3czY3VFNrSjhVSHl3R2t0U1RKSUhJYXczZ1hrcUFvMGVqd0pYcjIyS3JiWWZKOUc1WDg5UG1DSGl5cHpHSkFvMDNjSTIwd0wyRXdXM2pUZVk3Yi9ZV1lDcGxyTnFNQ0VuOEdvazRuNldmYi9tdmMzdWlTejJTZG03OVVpWGpKamZMMzA1aFUxYitCSGp4MktyU0NLZ0VWby9CR1JZUnQvdXR5a3RyaTZaQmVIQlVMYW5nNnJ5Ky9kUlY1TjNFc0R1YkpSWDZJRFpQemo4dHdRNlNjdmt2bjRjS0MxUVorVHBNVVJyTS9SVGhCTUVFVHBUZnF5TzRaTWF6VnNiSWVSMDRlTEcycVpibEdYclR2NFVFYXhUM0p5aHROR1plU2hiZytQZDc5LzI0M3pYYlZmbVpGWXBUcnIyYTRiZU1adHl5ZzN5YVROOXp1UmlyNExWem9sdFZkdXFJcFJXTWx4V2ZyK3hCeFBCUlJoWkFBTGVNVUFnYjV4VUR6MVN4c3RjWXU2bXJmRWhQaTgramorR2RrS2JpUW0yVnljN2RKWlZQOFVPUTdEdmF4OThUbzNqeFFBRHU5YnlZRGlRdWRIK0xsR2J0clBQazFCRzVzdEoxUzJwL25tUlhaNElPQU5Mb0VEbjJ6U0JGM0RNQzZkczc2amd2MzViNHlGVHh5eXZMU05aV2Mvc0luL3ZXU0FIVTloUXYzcnN3c0JINVluTkJPKzAxL0JuT2xETDdEdnp6c09RbksrL2JDYzRuNFdFeHJpUzdETENaZHVpRU9Ka1hNdmZ5bnBFcjFkTThwa082dzl6WStUc3RmZ0Q0Y1FrcFRJeTVZK0d5cFNuSG9ETGluUjBpZnJTandCUng4L2NZbk02VU12c08vUE93NUNjcjc5c0p6aWR5UzZsYnZjZFl5VThiOEc2SGF6MlNhc3ZnNUZlTlZ1bW1jZWlqb2k4ekRWMXVIemxwSjlidVVBYm1MUDFOd2VOZXVxSzZZVnZwNnZDZUU0R2hmSHlIWUtpOXlNWDk2eDVoK0t4UFdRQk5sdlR2MzRiSkd3c2g3Y1VZWHkzMXdaVE9sREw3RHZ6enNPUW5LKy9iQ2M0bmljZm5Jcm55bU0rUmhjVk5mWnV1dTE1UlZ5R2E2NEtQbTQ1UUtBV2V1MG5oVEJEUVl3RkZzSC85VFpNUk4ybGJIdDRZaC9jVkVoM0hvQ1lGajJBZ01Vb2I4S24xS1ZpRE9zdmU4am1oNjh1cFVobUg2STdIZVhpMVlkVEhVajZKaG5hRm5QMmxvQUQzcm5KRUpGUG9WS0pmUHdoMkdrWEQ3RnFGNTBHUjlHYmp3WDhmYmZqWXdvcmRrWHMzNURvcEE4OCtZdTQrU2J6Z3pKS0V3aUpmcTFvSlM4Q21laHVjT3NMRnJSVFdtbnFBekI4RDA4VFl0NExvbEJLbU9GRHAxWFZYU1ZxbWF4cEhreHpzb0c5N2hzLzlwd1c1VGxLREZ1YXdGKzNTUGd0aDhiQmxReDZqSWFYZVJvU1l2NGo3a2puaGN6cS9CRjIrcHlmRHdTQWpTQmpYTitBNGs0Rjk1SUhYK2VQRXdGenVKdG1UQ0xmOXZUQXhXRThvY1M1ZUJQZU8rc0Q0UXcvQjIvMW83RkJoQnlZc3RvRDNqVGIrc3g4Z1kvYzlJdnZyM0tPalpnT1NEelR1Znk4TTdWWGhQdTJaN1BTTnJMOS9rbUE2eXM1djF0S20ralFhd3YzL1FIWDQySjl5OGhBMnVMa0ZhTnlPNFh4Q1YwdXJUcGlFV2NHTU1yK2xPRUp5ZDcrbk5tS3dqOFpERVYrelBtTEhMbENISUJ0TXU0dkxLOHRJMWxaeit3aWYrOVpJQWRUMmN2STdjT05PVXh2bm4vaGUxSUVQazZZYWNqMnJlM2hLc3JtY0k4K21PNGpMSzh0STFsWnord2lmKzlaSUFkVDJWb1Q1UFg3VG5Wb0wzM0tlcXJSN2JxY3pGL0Y3aGNFLzA0SGwwTjF2SXMyVjhGWlEvdWhjdVNic05qY3hCUWIvSG5IOTYrdlAvbC9iSDAyUXYzdFZoSFF2OWNGdXFKVUVhc3JUeXpDWGEwSXIxamtMRjgvcmh2amNxMmp5NmkxNXI2STE3ZWlmQ2l5K2RZVzZyNnZRWFdPOXBZYk8yc25pWFgyeVR4VnNva0V5VExCZzgxVUQvY0NjU21mazZxdXdjR1F0cXp6OVNicTYyNG9yeVE2dTJaRllubzUvK0ZxYmhIUnF2TnBMZXdJRVFzR2tsamtyU0RDQTVOWlRvYWM5NUU1TnplaHdoOFNDa3lvaEtPaFFhMWZDWnVIZHZXOURlQnFVOFhpczFMdmFFWFRCdzAwR2dkb0tPT0NTcXFWV2R2R2hLckxJanlhMTF5QnAyTE10ek9yczhvMy85a25seFNWYUVSeXBXWmRzcEF6TXNFeWp5emdnSVRQalpUVCt2a0JNeWR3bTB1NjVOTGVTamVLSWZleDI0VE4waHVuMEhsV2lIUUlVKzNZeDZZcHJpMXREaHd6MzgzUXBoRXlLRmh3MGhaZzFyN2xHdjBucFVvcHpRdnVTWmNDYnU1c1UwVk9GbHdKd1Q5ZDdwZ29SblFodWZGREJ5RWQvamswS00rRjUrRTZrOUpWdXQ1QXFxcUlqRHFOVGlsa1RjWmNoM3oxK1luTjNZc0hiUCtBaldIalZjWXFITVBlTTYxdWlxZVFkcVBCUlVEQUtxSHlYekVvUnlMSkNHbm4zNTB1YUlzOGR4UHhYY2dvOFIvNFE2aU1wWVRhVkhJT3BISm5XaEptSXJ4NUgyYmNMYmZUNS9RbU1JTVc1TGdvdXMxNXkvQUpyUjBuVm1lVmNNSml4VXI4eEI4d09hZXNxWWFkRnl5dkxTTlpXYy9zSW4vdldTQUhVOWtPWW9nZ3VsNDR6SVo2MUxyb0ZnWEtHZG9XYy9hV2dBUGV1Y2tRa1UraFVQYlZjMDgwYWtraExYT3I3Y2c4VkVVdlpiejBIWDhoUEZzYWJVRDZyK2EyTUxsMEZOeVoyRUhZa1Y3ekFCL1dOQUVaTHEzYXV2K3A3T2J2WDdzL3BMbFI0WWdLVkNST0JWeGxOOGczWFdLbjM2OU4xamxvc3FSQmRETWZKQkJiRFR6Y2s4ODNEWUoyTk5kVlFZak9xZ3NiS25scThZK1BqMjdkNXdDK2FaS1M1Qy83Q2VTdThmcklnYmdpbmhmN1ErdzIxOGg5QXRLVFhDUWlsZ2V1UkxJNm9mSlRkV3R5SEJDY2FOcjdYOWhncHJSK1prUkVld1FtMGppbU43bkM3eXl2TFNOWldjL3NJbi92V1NBSFU5azh1WkVVUHJCMlYxTG04bE95M2M4M0hJY1JXNEUxNkI3bGNwTEhxWmFlcERoa3dvQy9NYXVRTE5vNWlFVzJldWNlam1mZ2FaTkxHMWxFUVM5b0daQk1EeGhuUWdxL2pvN25KWXhXR2hwREZFNlNzaFNOcGtjKzN1a1huZ2FkZmlIOU44MEFQWElYdnU4cWorNzRjSExmT2xETDdEdnp6c09RbksrL2JDYzRuaEEwMWtzTldQaUxqa0FiOFV0S0pxNGlOT0wrRURFejZyZlluYTZFRFlEN250cy9TT0xOM1M1eFVRd0ZRUi8rTFRUcDdSYnVnWjIrNmJNcUF5WnFZZThzcnkwaldWblA3Q0ovNzFrZ0IxUGI1ck9hUndtMUhmZ3JsY2cxWkVnM1JVbm5PaEYwWVlCeVVZWGRCT0RrN3BQTWw2UzFhbDlTckhmZ3ltVE9kSU1iWEpGYlY3MkJRbGp3VUs5NkdWM2FRb2hNamswL0krUktkaTA4OURnb01id0EzK1ZjLy9lSHFoNzc2WU5lRmh3a05xOUFkREo0bi9MUkQzV3RZSlhBU3QzaXZDNHU5UUJUZmIvdkNtTkppL2Z6YWVzNG9KQUt1U2MwQ28rYXU2Ulp5cHg1RDVqTE5tWE0zRjhZWnBnOHlWZ1FYd0dvdzlGNTNUUHR3RUxoRWJDZFVKT2crM1d2TFhSa1djcFphbGc0SzE1OWFFTS92d1l3Q3EzNGx4a1NGaGxLeVRVZzVSc1hmUkxwYU1obTBlWlNIZHVvREhOZjRaMW9nZ1pHemlrb0dvcDhjL3pyb1dCb04vYVZLbW44czRUeUUrVUJRZXp2MWZMQmVVeUJHYkg4SlhBLzV1MjE4RVpCQlF0dzNvcUV2OHlKMkRjVmRLTnhtenRCOExtbkgnKVxcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeeZu+W9le+8iOW6n+W8g++8iVwiLFwicGF0aFwiOlwicHdkLWxvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgaXNsb2dpbiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCB7fSk7XFxuaWYgKGlzbG9naW4gPT09IFxcXCIxXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTotKblj7fmmK8nICsgaW5wdXQ7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdGl0bGU6ICfotKblj7cnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpXFxcIixcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcignbXlfYWNjb3VudCcpXFxuICAgICAgICB9XFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiBcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE5a+G56CB5pivJyArIGlucHV0XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgdGl0bGU6ICflr4bnoIEnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X3Bhc3N3b3JkJylcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5aSn5Lya5ZGY77yfKOWFiOeCueaIkSnigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc3ZpcFxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG5aSn5Lya5ZGY44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc55m75b2VKOWGjeeCueaIkSnigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJsb2dpbmluZ1xcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgaWYgKGdldFZhcihcXFwibG9naW5pbmdcXFwiKSA9PT0gXFxcIjFcXFwiKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdteV9hY2NvdW50JykgIT0gJycgJiYgZ2V0VmFyKCdteV9wYXNzd29yZCcpICE9ICcnKSB7XFxuICAgICAgICAgICAgLy8gVE9ETyDlkJDkvazor7Tov5nph4zlj6/ku6XmlLnmiJAgJC5yZXF1aXJlIOeUqOazlSAgICAgICAgICBcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJkdGQxUDNkVEVJVG9uc2dyTkZmb0JpZ2k1bGphejBQZUdtYm1NampyOUg1bmZ2c25CdzdKRnAzN2NuM2VncXUweS8wd1RXMm9VN3F0TXdRSUFpTGhFU1ZLQmxLa1J2VzBwblBEZEhsN1BHd3dEVDVHTTF2QnNvZ2I3WURwd213VjhydHRhZDBPNVlKQnZwalgyOWhVQnBTc2lhbzdsM1VlYnp4TkFXWWlqN1l3SFdodDBqVmJoNVNMN1BYVm8xNDlmUFNUdXhsOEErdkxVV2krMld4R3JPWitRdnRyWUluMjhCcVM4UFM3emYwUjB5cjloWHpqYk1PT1gyQ09kVllLUGRiR3N4emtsVjVYMkxMbUtiUGdFZlFFbENnTVpwWXVuZTBJOE95STU1SExLOHRJMWxaeit3aWYrOVpJQWRUMmRUUXZDQmIraUhqcFI2SzBNcjBkZmMvanJUZC8rbm1zbVdya2ppdHVxOHgyaDdVM2JabWF4a3FZcnhTb3ByTGladm5Ca1N2RW9JaXFVVU9LaW1DeTAxZjN0UmZTUUJlUjVsZ1Q1QS94cWdkMjhhRXFzc2lQSnJYWElHbllzeTNNTFpSaFNMdzVrZFNVM1krZHlDYTZaY0lEeGxPR2VTRkxtSTBPQ0ZicFplOWJZN25LVU9haTMrVEhzYUZpRUVxcGQvNm5VUUY0VFpSQmdWcWpZRUZ3V0p5S0FLNkRBcW9SdkIyVDBpZjJ3VXZPbERMN0R2enpzT1FuSysvYkNjNG55WnhkRGZRWE42UnFCK2k2TmdUYkNqTmQ0VEZYNWZXQnZIYTVwSHJUU1pBaFRXOXdGQTV3c0FEQjk1eStKeDJYOVFrNEdMQ0dzdGdHY21IbTk2YXAxdVdxK0s4dkdFWkViRWprVTUydE1TNXp6NmdtN1loWGY4ZUJZQm1FYWlMdU1lVTc1R2UycVM2dU9vajIySVRFVWNzcnkwaldWblA3Q0ovNzFrZ0IxUFlaTnluWExsMXRmb0RZM0haZ1Bha2Y2RCtBRHpRWXF4cVJLWkN0bE5JeWE5azhDNEg3ZmJoTERYZFdBM29WNXlVT2dhU1hLMU9NNDBGeE55TlhwQS9aS1M2Z1kzQjEvVjIrenB6K1E3Q211ZTUrcWFPMFhyRFAxNWhqUzRieG5Xck9sREw3RHZ6enNPUW5LKy9iQ2M0blh4ZWt1b1RWVVJZN2VoK2RJRjRRT2FYbWJOallOa2lxbkFkODVGclhLWG9lZ0paQzg1QjRKVnFPV2N1ZWlwTmFIeS9kd0FoS3BuSy81Sk83WjZ5YTJsczIvSnZQT0NQOTFlNmc0SE8rWXFFcExxQmpjSFg5WGI3T25QNURzS2E1bnByYmtJUDJrbkRYWHF0TVlHUmRjaWdlSVJ6K09IbW5LTG0vK1dDUGEwNjE4RXF2TXNHZzlmcHZ0VW8yL3RtMFJ6WVlpOGt1RkdvcFR5b2lrRHdpM2NzcnkwaldWblA3Q0ovNzFrZ0IxUGExQURrdml2a25jRWhQV1A0d1hDYVR3d3BaMEc2K1lUdnlwNjh0aEZkQUw1eHg5K25VYTVqV21KVXl5UStyMVVzRDVzTXFpblk1Yi9lRFVueFJLS0JUenBReSt3Nzg4N0RrSnl2djJ3bk9KeWRIUE0yYWg3OGVBdHRTYWhWQ0ViL2wzWnFpMmhGa2laSjhneFBDMFBZNy9xdDJOMG44bEhEOCs3MktUVURJcXVYNTY1Q0lRbmNEVzVLZlhVWkxPblpiczZSVHFSMDBMdVBIQXhQSUhoaWFiamtOdlNWUU96djNhd2VyYW1lU084c3J5MGpXVm5QN0NKLzcxa2dCMVBiWmZBQSs3ZytZZFROcGV1OUxSUm9vaUZ3Vi85Y3U1SHBFZ1oyWDZ3YVdkb29ZMWc1cENYS3BNdS9kN2MzaGRRZkxLOHRJMWxaeit3aWYrOVpJQWRUMlk5NnNrQnRObHZOQXg2SUdwektOOGVOME9KQ20ySXFzSkpuSFhKZDFmcnlDTW1FQ0ZFZWFWYnB1S0czVjA5d0FDN1NZaTdqL2JDQitEQzExQlNhWnY4QjNwUTlaYUJIckFzZytkTlIrMFdNdFpqSzRRbGZ6c010Z0dxZG5sL0QrXFxcIilcXG4gICAgICAgIH1cXG4gICAgfVxcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcIjJcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOW3sueZu+W9le+8geKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTph43mlrDnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufSBlbHNlIGlmIChpc2xvZ2luID09PSBcXFwiM1xcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5L2g6ZyA6KaB5Y675a6i5oi356uv5pS55LiL5a+G56CB5omN6IO955m75b2V77yB77yB77yB4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzngrnlh7vov5vlhaXnmbvlvZXpobXpnaLigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnmbvlvZXpobXpnaJcIixcInBhdGhcIjpcIm5ld2xvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuKAnOKAnOaWueazleS4gOKAneKAnVxcXCIsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcihcXFwibF9pZFxcXCIsXFxcIjFcXFwiKTtyZWZyZXNoUGFnZSgpO1xcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn1xcXCInLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuKAnOKAnOaWueazleS6jOKAneKAnVxcXCIsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcihcXFwibF9pZFxcXCIsXFxcIjJcXFwiKTtyZWZyZXNoUGFnZSgpO1xcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn1xcXCInLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXG59KTtcXG5cXG5pZiAoZ2V0VmFyKFxcXCJsX2lkXFxcIikgPT0gXFxcIjFcXFwiKSB7XFxuICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL0FQUC1LRVkudHh0XFxcIiwgXFxcImlwaG9uZVxcXCIpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmk43kvZzmjIflvJUg4pGg5YWI54K55Ye75LiL5pa556ys5LiA5q2l6L+b5Y675ZOU5ZOp5omL5py654mI572R6aG155m75b2V6LSm5Y+3IOKRoei/lOWbnuebtOaOpeeCueesrOS6jOatpeeZu+W9leeEtuWQjuaMieaPkOekuueZu+W9lSDigJzigJzms6g65pa55rOV5LiA5LiN5Y+v55So5YaN6YeH55So5pa55rOV5LqM4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMS4g54K55oiR5Y67572R6aG155m75b2V5ZCO6Ieq5Yqo6I635Y+WY29va2ll4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9ja1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwyLiDlho3ngrnmiJHnmbvlvZXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3dlYmxvZ2luXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVxcbmlmIChnZXRWYXIoXFxcImxfaWRcXFwiKSA9PSBcXFwiMlxcXCIpIHtcXG4gICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvQVBQLUtFWS50eHRcXFwiLCBcXFwiaXBob25lXFxcIik7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuaTjeS9nOaMh+W8lSDikaDlhYjngrnlh7vkuIvmlrnnrKzkuIDmraXov5vljrvlk5Tlk6nmiYvmnLrniYjnvZHpobXnmbvlvZXotKblj7cg4pGh54K55Ye75Y+z5LiL6KeS6K6+572u4oaS5p+l55yL5rqQ56CB4oaS5Y6f55Sf55WM6Z2iIOKRouWkjeWItuacgOS4iuaWuei+k+WFpeahhumHjOeahOmTvuaOpSDikaPov5Tlm57pppbpobXmiorpk77mjqXovpPlhaXmoYblhoUg4pGk54K55Ye756ys5LqM5q2l77yM5oyJ5o+Q56S655m75b2V5Y2z5Y+vXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5L+d5a2YJyxcXG4gICAgICAgIHVybDogXFxcInZhciBjayA9ICdTRVNTREFUQScraW5wdXQuc3BsaXQoJ1NFU1NEQVRBJylbMV0uc3BsaXQoJ3NpZCcpWzBdLnJlcGxhY2UoJ++8m++8mycsJzsgJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dCcsY2sucmVwbGFjZSgn77yb77ybJywnOyAnKSk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mgqjnmoRjb29raWXmmK86Jytja1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXpk77mjqUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwxLiDngrnmiJHljrvnvZHpobXnmbvlvZXlkI7miYvliqjojrflj5Zjb29raWXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMi4g54K55oiR55m75b2V4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS93ZWJsb2dpblxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJjb29raWXojrflj5bvvIjnmbvlvZXmlrnlvI/kuIDvvIlcIixcInBhdGhcIjpcImNrXCIsXCJydWxlXCI6XCJqczpcXG5zZXRSZXN1bHQoW3tcXG4gICAgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCIsXFxuICAgIHVybDogXFxcImh0dHBzOi8vbS5iaWxpYmlsaS5jb20vXFxcIixcXG4gICAgZGVzYzogXFxcImZsb2F0JiYxMDAlXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICBmYmEubG9nKGRvY3VtZW50LmNvb2tpZSlcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLCBmeV9icmlkZ2VfYXBwLmdldENvb2tpZSgnaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS8nKSk7XFxuICAgICAgICAgICAgYWxlcnQoXFxcImNvb2tpZeiOt+WPluWujOavle+8jOivt+i/lOWbnue7p+e7rVxcXCIpXFxuICAgICAgICB9KVxcbiAgICB9XFxufV0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaItd2Vi55m75b2V77yI5pa55byP5LqM77yJXCIsXCJwYXRoXCI6XCJ3ZWJsb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGNrID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0XFxcIikucmVwbGFjZSgv77yb77ybIC9nLCc7ICcpO1xcbmxvZyhjaylcXG52YXIgbG9naW5fdXJsID0gXFxcImh0dHBzOi8vcGFzc3BvcnQuYmlsaWJpbGkuY29tL2xvZ2luL2FwcC90aGlyZD9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZhcGk9aHR0cCUzQSUyRiUyRmxpbmsuYWNnLnR2JTJGZm9ydW0ucGhwJnNpZ249NjdlYzc5ODAwNDM3MzI1M2Q2MDExNGNhYWFkODlhOGNcXFwiO1xcbnZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2gobG9naW5fdXJsLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMDsgTTIwMDdKM1NDIEJ1aWxkL1FLUTEuMjAwNDE5LjAwMjsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS84My4wLjQxMDMuMTAxIE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgIFxcXCJjb29raWVcXFwiOiBja1xcbiAgICB9LFxcbiAgICBtZXRob2Q6ICdHRVQnXFxufSkpLmRhdGFbJ2NvbmZpcm1fdXJpJ107XFxuLy9sb2cobG9jYXRpb24pO1xcblxcbnZhciBpbmZvID0gSlNPTi5wYXJzZShmZXRjaChsb2NhdGlvbiwge1xcbiAgICBoZWFkZXJzOiB7XFxuICAgICAgICBcXFwidXNlci1hZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IE0yMDA3SjNTQyBCdWlsZC9RS1ExLjIwMDQxOS4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODMuMC40MTAzLjEwMSBNb2JpbGUgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICBcXFwiY29va2llXFxcIjogY2tcXG4gICAgfSxcXG4gICAgbWV0aG9kOiAnR0VUJyxcXG4gICAgb25seUhlYWRlcnM6IHRydWUsXFxuICAgIHJlZGlyZWN0OiBmYWxzZVxcbn0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdLnNwbGl0KFxcXCI/XFxcIilbMV0uc3BsaXQoXFxcIiZcXFwiKTtcXG5wdXRWYXIoXFxcIm15a2V5XFxcIixpbmZvWzBdLnNwbGl0KFxcXCI9XFxcIilbMV0pO1xcbnB1dFZhcihcXFwibXltaWRcXFwiLGluZm9bMV0uc3BsaXQoXFxcIj1cXFwiKVsxXSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaW5mb1swXSxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpbmZvWzFdLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlpKfkvJrlkZjngrnmiJHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLkuI3mmK/lpKfkvJrlkZjliKvngrnnoa7orqTvvIzlkKbliJnlkI7mnpzoh6rotJ9cXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dFxcXCIsZ2V0VmFyKFxcXCJteWtleVxcXCIpKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0XFxcIixnZXRWYXIoXFxcIm15a2V5XFxcIikpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHRcXFwiLGdldFZhcihcXFwibXltaWRcXFwiKSk7XFxuICAgICAgICAgICAgLy9yZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/lpKfkvJrlkZjnmbvlvZXmiJDlip9cXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5peg5Lya5ZGY54K55oiR4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi54K55Ye755m75b2VXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHRcXFwiLGdldFZhcihcXFwibXlrZXlcXFwiKSk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dFxcXCIsZ2V0VmFyKFxcXCJteW1pZFxcXCIpKTtcXG4gICAgICAgICAgICAvL3JlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+eZu+W9leaIkOWKn1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBcXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh55u05pKtXCIsXCJwYXRoXCI6XCJ6YlwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbnZhciB6YmMxID0gJ2FsbCYyJjMmNiYxJjUmOSYxMCYxMSc7XFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcbnZhciB6YmMyID0gJzAmMzMnO1xcbnZhciB6YncyID0gJ+m7mOiupOWwj+WIhuexuyblvbHpn7PppobvvIjnlJ/mtLvvvIknO1xcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMSA9IHpiYzEuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIxID0gZ2V0VmFyKCd6YmxhYjEnLCAn5YWo6YOoJyk7XFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB6YndvcmQyID0gemJ3Mi5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIyID0gZ2V0VmFyKCd6YmxhYjInLCAn6buY6K6k5bCP5YiG57G7Jyk7XFxudmFyIHpia2V5MiA9IGdldFZhcignemJrZXkyJywgJzAnKTtcXG5cXG4gICAgLypmb3IgKHZhciBpIGluIHpid29yZDEpIHtcXG4gICAgICAgIHZhciBhID0gemJ3b3JkMVtpXTtcXG4gICAgICAgIHZhciBiID0gemJjbGFzczFbaV07XFxuICAgICAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogYSA9PSB6YmxhYjEgPyBnZXRIZWFkKGEpIDogYSxcXG4gICAgICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjXFxcIikubGF6eVJ1bGUoKGMpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJ6YmxhYjFcXFwiLCBjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcInpia2V5MVxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGMpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSovXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxuICAgICAgICB1cmw6IFxcXCJwdXRWYXIoJ3piaycsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5q2j5Zyo5pCc57SiJztcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICBkZXNjOiAn5L2g5oOz55yL5LuA5LmI55u05pKt77yfJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG5cXG4gICAgZm9yICh2YXIgaSBpbiB6YndvcmQxKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB6YndvcmQxW2ldID09IHpibGFiMSA/IGdldEhlYWQoemJ3b3JkMVtpXSkgOiB6YndvcmQxW2ldLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuYW1lLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjEnLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmtleTEnLCBrZXkpO1xcbiAgICAgICAgICAgICAgICBjbGVhclZhcignemJrJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHpid29yZDFbaV0sIHpiY2xhc3MxW2ldKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSk7XFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMikge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogemJ3b3JkMltpXSA9PSB6YmxhYjIgPyBnZXRIZWFkKHpid29yZDJbaV0pIDogemJ3b3JkMltpXSxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJsYWIyJywgbmFtZSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcignemJrZXkyJywga2V5KTtcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCB6YndvcmQyW2ldLCB6YmNsYXNzMltpXSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxuaWYgKGdldFZhcignemJrJykgIT0gJycpIHtcXG4gICAgdmFyIHpidXJsID0gXFxcImh0dHBzOi8vc2VhcmNoLmJpbGliaWxpLmNvbS9saXZlP2tleXdvcmQ9XFxcIiArIGdldFZhcignemJrJyk7XFxuICAgIGxvZyh6YnVybClcXG4gICAgdmFyIHF6ID0gXFxcImh0dHBzOi8vc2VhcmNoLmJpbGliaWxpLmNvbVxcXCI7XFxuICAgIHZhciBsaXZlID0gcXogKyBwYXJzZURvbUZvckh0bWwoZmV0Y2goemJ1cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5oZWFkbGluZS1saXZlJiZhJiZocmVmJyk7XFxuICAgIGxvZyhcXFwiMTIzOjo6XFxcIiArIGxpdmUpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+S4u+aSrScsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFwiK2xpdmUucmVwbGFjZShcXFwiP1xcXCIsXFxcIu+8n++8n1xcXCIpLnJlcGxhY2UoXFxcIiZcXFwiLFxcXCLvvIbvvIZcXFwiKSArICfvvIbvvIZwYWdlPWZ5cGFnZScsXFxuICAgICAgICBkZXNjOiAn5YWx5pyJJyArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSksICdib2R5JiYuZmxvdy1sb2FkZXImJi5oZWFkbGluZS1saXZlJiYubnVtLXR4dCYmc3BhbiYmVGV4dCcpLnJlcGxhY2UoXFxcIlxcXFwoXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcIlxcXFwpXFxcIiwgXFxcIlxcXCIpICsgJ+S4u+aSrScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICB0cnkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ebtOaSreS4rScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3piMj91cmw9XFxcIitsaXZlLnJlcGxhY2UoXFxcIj9cXFwiLFxcXCLvvJ/vvJ9cXFwiKS5yZXBsYWNlKFxcXCImXFxcIixcXFwi77yG77yGXFxcIikucmVwbGFjZShcXFwic2VhcmNoX3R5cGU9bGl2ZV91c2VyXFxcIiwgXFxcIlxcXCIpICsgJ3BhZ2U9ZnlwYWdlJyxcXG4gICAgICAgICAgICBkZXNjOiAn5YWx5pyJJyArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KSwgJ2JvZHkmJi5oZWFkbGluZS1yb29tJiYubnVtLXR4dCYmc3BhbiYmVGV4dCcpLnJlcGxhY2UoXFxcIlxcXFwoXFxcIiwgXFxcIlxcXCIpLnJlcGxhY2UoXFxcIlxcXFwpXFxcIiwgXFxcIlxcXCIpICsgJ+ebtOaSremXtCcsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH0gY2F0Y2ggKGUpIHt9XFxufSBlbHNlIHtcXG4gICAgdmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG4gICAgdmFyIHVybCA9IFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS9yb29tL3YzL2FyZWEvZ2V0Um9vbUxpc3Q/cGxhdGZvcm09d2ViJnBhcmVudF9hcmVhX2lkPVxcXCIgKyB6YmtleTEgKyBcXFwiJmNhdGVfaWQ9MCZhcmVhX2lkPVxcXCIgKyB6YmtleTIgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2UgKyBcXFwiJnBhZ2Vfc2l6ZT0zMCZ0YWdfdmVyc2lvbj0xXFxcIjtcXG4gICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSk7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciByID0ge307XFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0W2ldO1xcbiAgICAgICAgci5waWNfdXJsID0gai5zeXN0ZW1fY292ZXIgKyBSZWZlcmVyO1xcbiAgICAgICAgci51cmwgPSAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgai5yb29taWQgKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYDtcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcbiAgICAgICAgci5kZXNjID0gJ1VQ8J+Qt++8micgKyBqLnVuYW1lO1xcbiAgICAgICAgci5jb2xfdHlwZSA9IFxcXCJtb3ZpZV8yXFxcIjtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGoudGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogJ1VQ8J+Qt++8micgKyBqLnVuYW1lLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwibW92aWVfMlxcXCIsXFxuICAgICAgICAgICAgcGljX3VybDogai5zeXN0ZW1fY292ZXIgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgLy/ok53lhYlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBiYXNldXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL2FwcC1yb29tL3YyL2luZGV4L2dldFJvb21QbGF5SW5mbz9hY2Nlc3Nfa2V5PVxcXCIrZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikrXFxcIiZhcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZxbj0xMDAwMCZyb29tX2lkPVxcXCIgKyBpZCArIFxcXCImcGxhdGZvcm09YW5kcm9pZCZidWlsZD02NDAwMzAwJmRldmljZV9uYW1lPU0yMDA3SjNTQyZmb3JtYXQ9MCwyJmNvZGVjPTAsMSZodHRwPTEmY19sb2NhbGU9emhfQ04mcHJvdG9jb2w9MCwxXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVjID0gSlNPTi5wYXJzZShyZXF1ZXN0KGJhc2V1cmwpKS5kYXRhW1xcXCJwbGF5dXJsX2luZm9cXFwiXVtcXFwicGxheXVybFxcXCJdW1xcXCJzdHJlYW1cXFwiXVswXVtcXFwiZm9ybWF0XFxcIl1bMF1bXFxcImNvZGVjXFxcIl1bMF1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlYy51cmxfaW5mb1swXS5ob3N0ICsgY29kZWMuYmFzZV91cmwgKyBjb2RlYy51cmxfaW5mb1swXS5leHRyYVxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgYnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBpZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1cmwpKS5kYXRhLmR1cmxbMF0udXJsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBqLnJvb21pZClcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeebtOaSre+8iOaQnOe0ouaLk+Wxle+8iVwiLFwicGF0aFwiOlwiemIyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgUmVmZXJlciA9IFxcXCJAUmVmZXJlcj1odHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFwiO1xcbmlmIChNWV9VUkwuaW5kZXhPZihcXFwic2VhcmNoX3R5cGU9bGl2ZV91c2VyXFxcIikgIT0gLTEpIHtcXG4gICAgdmFyIGxpdmUgPSBwYXJzZURvbUZvckFycmF5KGZldGNoKE1ZX1VSTCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLCAnYm9keSYmLmxpdmUtdXNlci13cmFwJiZsaScpO1xcbiAgICBmb3IgKHZhciBpIGluIGxpdmUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLml0ZW0tcmlnaHQmJlAmJlRleHQnKSxcXG4gICAgICAgICAgICAvL3VybDogJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIHBhcnNlRG9tKGxpdmVbaV0sICdhJiZocmVmJykuc3BsaXQoXFxcImxpdmUuYmlsaWJpbGkuY29tL1xcXCIpWzFdLnNwbGl0KFxcXCI/ZnJvbVxcXCIpWzBdICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCcgKyBgQGxhenlSdWxlPVRleHQuanM6SlNPTi5wYXJzZShpbnB1dCkuZGF0YS5kdXJsWzBdLnVybGAsXFxuICAgICAgICAgICAgdXJsOiQoKS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIC8v6JOd5YWJXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYmFzZXVybCA9IFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS9hcHAtcm9vbS92Mi9pbmRleC9nZXRSb29tUGxheUluZm8/YWNjZXNzX2tleT1cXFwiK2dldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpK1xcXCImYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmcW49MTAwMDAmcm9vbV9pZD1cXFwiICsgaWQgKyBcXFwiJnBsYXRmb3JtPWFuZHJvaWQmYnVpbGQ9NjQwMDMwMCZkZXZpY2VfbmFtZT1NMjAwN0ozU0MmZm9ybWF0PTAsMiZjb2RlYz0wLDEmaHR0cD0xJmNfbG9jYWxlPXpoX0NOJnByb3RvY29sPTAsMVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2RlYyA9IEpTT04ucGFyc2UocmVxdWVzdChiYXNldXJsKSkuZGF0YVtcXFwicGxheXVybF9pbmZvXFxcIl1bXFxcInBsYXl1cmxcXFwiXVtcXFwic3RyZWFtXFxcIl1bMF1bXFxcImZvcm1hdFxcXCJdWzBdW1xcXCJjb2RlY1xcXCJdWzBdXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZWMudXJsX2luZm9bMF0uaG9zdCArIGNvZGVjLmJhc2VfdXJsICsgY29kZWMudXJsX2luZm9bMF0uZXh0cmFcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ1cmwgPSAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgaWQgKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJ1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChidXJsKSkuZGF0YS5kdXJsWzBdLnVybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0pLFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5sYXp5LWltZyYmaW1nJiZzcmMnKSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmLnN0YXR1cyYmVGV4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBsaXZlID0gcGFyc2VEb21Gb3JBcnJheShmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5saXZlLXJvb20td3JhcCYmbGknKTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJ3AmJlRleHQnKSxcXG4gICAgICAgICAgICAvL3VybDogJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIHBhcnNlRG9tKGxpdmVbaV0sICdhJiZocmVmJykuc3BsaXQoXFxcImxpdmUuYmlsaWJpbGkuY29tL1xcXCIpWzFdLnNwbGl0KFxcXCI/ZnJvbVxcXCIpWzBdICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCcgKyBgQGxhenlSdWxlPVRleHQuanM6SlNPTi5wYXJzZShpbnB1dCkuZGF0YS5kdXJsWzBdLnVybGAsXFxuICAgICAgICAgICAgdXJsOiQoKS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgIC8v6JOd5YWJXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYmFzZXVybCA9IFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS9hcHAtcm9vbS92Mi9pbmRleC9nZXRSb29tUGxheUluZm8/YWNjZXNzX2tleT1cXFwiK2dldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpK1xcXCImYXBwa2V5PTI3ZWI1M2ZjOTA1OGY4YzMmcW49MTAwMDAmcm9vbV9pZD1cXFwiICsgaWQgKyBcXFwiJnBsYXRmb3JtPWFuZHJvaWQmYnVpbGQ9NjQwMDMwMCZkZXZpY2VfbmFtZT1NMjAwN0ozU0MmZm9ybWF0PTAsMiZjb2RlYz0wLDEmaHR0cD0xJmNfbG9jYWxlPXpoX0NOJnByb3RvY29sPTAsMVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2RlYyA9IEpTT04ucGFyc2UocmVxdWVzdChiYXNldXJsKSkuZGF0YVtcXFwicGxheXVybF9pbmZvXFxcIl1bXFxcInBsYXl1cmxcXFwiXVtcXFwic3RyZWFtXFxcIl1bMF1bXFxcImZvcm1hdFxcXCJdWzBdW1xcXCJjb2RlY1xcXCJdWzBdXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZWMudXJsX2luZm9bMF0uaG9zdCArIGNvZGVjLmJhc2VfdXJsICsgY29kZWMudXJsX2luZm9bMF0uZXh0cmFcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJ1cmwgPSAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgaWQgKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJ1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdChidXJsKSkuZGF0YS5kdXJsWzBdLnVybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSwgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0pLFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbShsaXZlW2ldLCAnLmxhenktaW1nJiZpbWcmJnNyYycpICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiAnVVDwn5C377yaJyArIHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLnVuYW1lJiZzcGFuJiZUZXh0JykgKyAnwrfkurrmsJQnICsgcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGl2ZS1udW0mJnNwYW4mJlRleHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiQVBJXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoXFxcIkw3QXZKNDFDKytrbGxCTVBHOUpSVFV6UXZFakpYd1JyZlJpSm1FQnVmVVFBMkhIV3RRTFJoQXdxU016TVVkSUFyV3VXRlRONDcxUTd2dWtoWGJQYmVSd2hkZmlRTStmZHRLRzNOS2hRektkZDdyU0J3aXBZOXQwbUowcU85RHgzTXRmMWRYM2sxeS84V3VvWFBNUW5DWFhETVE5N2h3ZXpvdDUySU95S3NHNjRPcTVhR0ZONWRpcVQxdG0yOVNwL0dydFZKWDhmeWpvTnE0VHJwZnhpSGc4WUhTQmxBUERrRWxaai90bWovYUM3S1J6SWNud3RPb0xqZUIrQWtpb20vU1p1cy8rMVJybllweW1idGtKTnJZNzJQek90ZFlOTDFqT29RNS80WWtUMlpZWnBsTG1JMGNWZ1c2S0JTUWpxSjFOSWF3UWcwaDRxUk5XMGFZTVdEVTMvRkdqdWM1REJTc2gwVzZtSzhHRTM0U1lsUjREZ2ttTVJteUd2cXloY1J5b0ZlRGFIZDdqSWloZGpjeVZnNGsvK2RmcXZ3N2ZyV1pXdUkxdmM5WU09XFxcIilcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3kuIDnuqfmlrDpobXpnaLvvIjmi5PlsZXvvIlcIixcInBhdGhcIjpcIm5ld2RldGlhbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG52YXIgcnggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCB7fSk7XFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfnm7Tmkq0nKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3piXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSBcXFwi5ryr5ri4XFxcIikge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9teVxcXCIpKS5ydWxlKVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGj5pu05aSa77yI5paw6aG16Z2i77yJXCIsXCJwYXRoXCI6XCJtb3JlXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLnvo7po59cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2Zvb2RcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZSA9PSBcXFwi5paw54mIXFxcIiA/IGdldEhlYWQoXFxcIuaWsOeJiFxcXCIpIDogXFxcIuaWsOeJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5paw54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZSA9PSBcXFwi5pen54mIXFxcIiA/IGdldEhlYWQoXFxcIuaXp+eJiFxcXCIpIDogXFxcIuaXp+eJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5pen54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgaWYgKHJ4ICE9ICfml7blhYnmnLonICYmIHJ4ICE9ICfntKLlvJUnKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVVSURcXFxcbuS4jeefpemBk+aAjuS5iOafpe+8n2Lnq5nngrnlvIDoh6rlt7HnmoTkv6Hmga/vvIzplb/mjIl1aWTljbPlj6/vvIzor7floavlhaXnuq/mlbDlrZdcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeY2snLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+i/meS4quS4jeaUr+aMgeiHquWumuS5ieWViu+8jOmqmuW5tCdcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVjayjnlKjkuo7ngrnotZ7mipXluIEpXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6QY2snLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2syLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWNrKOeUqOS6juino+aekClcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljazIudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwicmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/ov5nkuKrkuI3mlK/mjIHoh6rlrprkuYnllYrvvIzpqprlubQnXFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7ICAgICAgICBcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbngrnotZ5jaycsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItuino+aekGNrJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrMi50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItueCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiICsgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ivhOiuuuWMujog4oCc4oCc5beyJyArIGdldFZhcigncmVwbHlfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncmVwbHlfdHlwZScsIGdldFZhcigncmVwbHlfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdyZXBseV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nibmipXluIE6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ2xpa2VfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGlrZV90eXBlJywgZ2V0VmFyKCdsaWtlX3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcignbGlrZV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuS9v+eUqOW4ruWKqVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2hlbHBcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5LiA6ZSu6YeN572uXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2ZpbGVcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSBnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL2JpbGknKS5zbGljZSg2KTtcXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVsaXN0ID0gZ2V0RmlsZVBhdGgocGF0aCwgXFxcImZpbGVcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBwYXRoMiA9IGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaScpLnNsaWNlKDYpO1xcbiAgICAgICAgICAgICAgICBsZXQgZmlsZWxpc3QyID0gZ2V0RmlsZVBhdGgocGF0aDIsIFxcXCJmaWxlXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAvL2xvZyhmaWxlbGlzdCk7XFxuICAgICAgICAgICAgICAgIGZpbGVsaXN0LmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdC5wYXRoKVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZShpdC5wYXRoKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgZmlsZWxpc3QyLmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdC5wYXRoKVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZShpdC5wYXRoKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgZGVsZXRlRmlsZShcXFwiL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9ydWxlcy9qcy91cC5qc1xcXCIpO1xcbiAgICAgICAgICAgICAgICBiYWNrKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ph43nva7lrozmr5XvvIzor7fov5Tlm57pppbpobXliLfmlrBcXFwiXFxuICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoOS4gOe6p+aXp+mhtemdolwiLFwicGF0aFwiOlwiY29tbW9uMlwiLFwicnVsZVwiOlwidmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JykpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcbn1cXG52YXIgc190eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpO1xcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXG5wdXRWYXIoJ2xpa2VfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzFdKTtcXG4vL+minOiJslxcbnZhciBDb2xvcnMgPSBbXFxcIjRcXFwiLCBcXFwiNVxcXCIsIFxcXCIwXFxcIiwgXFxcIjFcXFwiLCBcXFwiQVxcXCIsIFxcXCIzXFxcIiwgXFxcIjhcXFwiLCBcXFwiOVxcXCIsIFxcXCJCXFxcIiwgXFxcIkNcXFwiLCBcXFwiRFxcXCIsIFxcXCJFXFxcIiwgXFxcIjZcXFwiLCBcXFwiN1xcXCIsIFxcXCJGXFxcIl07XFxudmFyIENvbG9yID0gJyMnO1xcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG5cXG52YXIgYzEgPSAnYWxsJmJhbmd1bWkmZ3VvY2hhbiZkb3VnYSZtdXNpYyZrbm93bGVkZ2UmdGVjaCZjYXImbGlmZSZmb29kJmtpY2hpa3UmZmFzaGlvbiZjaW5lcGhpbGUmb3JpZ2luJnJvb2tpZSZnYW1lJmVudCZkYW5jZSZtb3ZpZSZ0diZkb2N1bWVudGFyeSZhbmltYWwmZ3VvY2h1YW5nJztcXG5cXG52YXIgdzEgPSAn5YWo6YOoJueVquWJpyblm73liJsm5Yqo55S7Jumfs+S5kCbnn6Xor4Ym56eR5oqAJuaxvei9pibnlJ/mtLsm576O6aOfJumsvOeVnCbml7blsJom5b2x6KeGJuWOn+WImybmlrDkurom5ri45oiPJuWoseS5kCboiJ7ouYgm55S15b2xJueUteinhuWJpybnuqrlvZXniYcm5Yqo54mp5ZyIJuWbveWIm+ebuOWFsyc7XFxuXFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxuXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcblxcbnZhciB3b3JkMSA9IHcxLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMSA9IGMxLnNwbGl0KCcmJyk7XFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxudmFyIGtleTEgPSBnZXRWYXIoJ2tleTEnLCAnYWxsJyk7XFxuXFxudmFyIHdvcmQyID0gdzIuc3BsaXQoJyYnKTtcXG52YXIgY2xhc3MyID0gYzIuc3BsaXQoJyYnKTtcXG52YXIgbGFiMiA9IGdldFZhcignbGFiMicsICfprLznlZwnKTtcXG52YXIga2V5MiA9IGdldFZhcigna2V5MicsICcyMicpO1xcblxcbnZhciB6YmMxID0gJ2FsbCYyJjMmNiYxJjUmOSYxMCYxMSc7XFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcbnZhciB6YmMyID0gJzAmMzMnO1xcbnZhciB6YncyID0gJ+m7mOiupOWwj+WIhuexuyblvbHpn7PppobvvIjnlJ/mtLvvvIknO1xcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMSA9IHpiYzEuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIxID0gZ2V0VmFyKCd6YmxhYjEnLCAn5YWo6YOoJyk7XFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB6YndvcmQyID0gemJ3Mi5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIyID0gZ2V0VmFyKCd6YmxhYjInLCAn6buY6K6k5bCP5YiG57G7Jyk7XFxudmFyIHpia2V5MiA9IGdldFZhcignemJrZXkyJywgJzAnKTtcXG5cXG5cXG5cXG4vL+S4ieWQiOS4gFxcbnZhciByeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsIHt9KTtcXG52YXIgd3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbnZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgLypcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcbiAgICAqL1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLwn5SNXFxcIixcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3NlYXJjaD9ydWxlPVxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcIiZzPScraW5wdXRcXFwiLFxcbiAgICAgICAgZGVzYzogXFxcIuaQnOS9oOaDs+eciy4uLlxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIlxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAnVVDkuLsnID8gZ2V0SGVhZCgn6aaW6aG1JykgOiAn6aaW6aG1JyxcXG4gICAgICAgIHVybDogJ1VQ5Li7JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmjpLooYzmppwnID8gZ2V0SGVhZChyeCkgOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJ+aOkuihjOamnCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5paw55WqJyA/IGdldEhlYWQocngpIDogJ+aWsOeVqicsXFxuICAgICAgICB1cmw6ICfmlrDnlaonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+ebtOaSrScgPyBnZXRIZWFkKHJ4KSA6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAn55u05pKtJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmm7TlpJonID8gZ2V0SGVhZChyeCkgOiAn5pu05aSaJyxcXG4gICAgICAgIHVybDogJ+abtOWkmicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgLypcXG4gICAgICAgIGlmIChyeCA9PSAn5pS26JePJykge1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veeVqicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gZ2V0SGVhZChzX3RhYikgOiAn6L+95YmnJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmFuanVcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2RzalxcXCIpKS5ydWxlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgKi9cXG59XFxuXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS91cFxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aXtuWFieacuicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc2dqXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5paw55WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn55u05pKtJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS96YlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbW9yZTJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09IFxcXCLmvKvmuLhcXFwiKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL215XFxcIikpLnJ1bGUpXFxufVxcbi8v5LiJ5ZCI5LiAXFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGj5pu05aSa77yI5pen6aG16Z2i77yJXCIsXCJwYXRoXCI6XCJtb3JlMlwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aXtuWFieacuicgPyBnZXRIZWFkKHJ4KSA6ICfml7blhYnwn5ClJyxcXG4gICAgICAgIHVybDogJ+aXtuWFieacuicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn57Si5byVJyA/IGdldEhlYWQocngpIDogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICfntKLlvJUnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eZu+W9lScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3bG9naW4nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmvKvmuLgnID8gZ2V0SGVhZChyeCkgOiAn5ryr5ri4JyxcXG4gICAgICAgIHVybDogJ+a8q+a4uCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIue+jumjn1xcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZm9vZFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGUgPT0gXFxcIuaWsOeJiFxcXCIgPyBnZXRIZWFkKFxcXCLmlrDniYhcXFwiKSA6IFxcXCLmlrDniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aWsOeJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGUgPT0gXFxcIuaXp+eJiFxcXCIgPyBnZXRIZWFkKFxcXCLml6fniYhcXFwiKSA6IFxcXCLml6fniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aXp+eJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXnvZHlnYDmiJbogIVi56uZ5aSN5Yi255qE6ZO+5o6lJ1xcbiAgICB9KTtcXG4gICAgaWYgKHJ4ICE9ICfml7blhYnmnLonICYmIHJ4ICE9ICfntKLlvJUnKSB7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVVSURcXFxcbuS4jeefpemBk+aAjuS5iOafpe+8n2Lnq5nngrnlvIDoh6rlt7HnmoTkv6Hmga/vvIzplb/mjIl1aWTljbPlj6/vvIzor7floavlhaXnuq/mlbDlrZdcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeY2snLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+i/meS4quS4jeaUr+aMgeiHquWumuS5ieWViu+8jOmqmuW5tCdcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVjayjnlKjkuo7ngrnotZ7mipXluIEpXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6QY2snLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2syLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWNrKOeUqOS6juino+aekClcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljazIudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwicmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/ov5nkuKrkuI3mlK/mjIHoh6rlrprkuYnllYrvvIzpqprlubQnXFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7ICAgICAgICBcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbngrnotZ5jaycsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItuino+aekGNrJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIiArIGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrMi50eHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+WkjeWItueCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiY29weTovL1xcXCIgKyBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiICsgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ivhOiuuuWMujog4oCc4oCc5beyJyArIGdldFZhcigncmVwbHlfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncmVwbHlfdHlwZScsIGdldFZhcigncmVwbHlfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdyZXBseV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nibmipXluIE6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ2xpa2VfdHlwZScpLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGlrZV90eXBlJywgZ2V0VmFyKCdsaWtlX3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcignbGlrZV90eXBlJyk7XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogXFxcIuS9v+eUqOW4ruWKqVxcXCIsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2hlbHBcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc5LiA6ZSu6YeN572uXFxcIixcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2ZpbGVcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICAgICAgbGV0IHBhdGggPSBnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL2JpbGknKS5zbGljZSg2KTtcXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVsaXN0ID0gZ2V0RmlsZVBhdGgocGF0aCwgXFxcImZpbGVcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgIGxldCBwYXRoMiA9IGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaScpLnNsaWNlKDYpO1xcbiAgICAgICAgICAgICAgICBsZXQgZmlsZWxpc3QyID0gZ2V0RmlsZVBhdGgocGF0aDIsIFxcXCJmaWxlXFxcIiwgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAvL2xvZyhmaWxlbGlzdCk7XFxuICAgICAgICAgICAgICAgIGZpbGVsaXN0LmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdC5wYXRoKVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZShpdC5wYXRoKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgZmlsZWxpc3QyLmZvckVhY2goKGl0KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhpdC5wYXRoKVxcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlRmlsZShpdC5wYXRoKTtcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgZGVsZXRlRmlsZShcXFwiL3N0b3JhZ2UvZW11bGF0ZWQvMC9BbmRyb2lkL2RhdGEvY29tLmV4YW1wbGUuaGlrZXJ2aWV3L2ZpbGVzL0RvY3VtZW50cy9ydWxlcy9qcy91cC5qc1xcXCIpO1xcbiAgICAgICAgICAgICAgICBiYWNrKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ph43nva7lrozmr5XvvIzor7fov5Tlm57pppbpobXliLfmlrBcXFwiXFxuICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcbiAgICAgICAgLypcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzniYjmnKxcXFwiK2dldEl0ZW0oJ1ZlcnNpb24nLCcwJyksXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCLmmK/lkKbmm7TmlrDkvp3otZZcXFwiKS5jb25maXJtKCgpPT57XFxuICAgICAgICAgICAgICAgIGRlbGV0ZUNhY2hlKCk7XFxuICAgICAgICAgICAgICAgIGV2YWwoZmV0Y2goJ2h0dHBzOi8vcngzMTkuY29kaW5nLm5ldC9wL2JpbGkvZC9iaWxpX1IvZ2l0L3Jhdy9tYXN0ZXIvdmVyc2lvbi5qcz9kb3dubG9hZD1mYWxzZScpKVxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ1ZlcnNpb24nLCAnLVYnK25ld1ZlcnNpb24udmVyKTtcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnVmVyc2lvbicsICctVicrbmV3VmVyc2lvbi52ZXIpO1xcbiAgICAgICAgICAgICAgICBmZXRjaENhY2hlKCdodHRwczovL3J4MzE5LmNvZGluZy5uZXQvcC9iaWxpL2QvYmlsaV9SL2dpdC9yYXcvbWFzdGVyL21vcmUuanM/ZG93bmxvYWQ9ZmFsc2UnLCAyNClcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICAgICAgbG9nKCfniYjmnKwnK2dldEl0ZW0oJ1ZlcnNpb24nKSsnXFxcXG4nK25ld1ZlcnNpb24uZGVzYylcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+abtOaWsOaIkOWKn++8jOabtOaWsOWGheWuueeci2xvZ1xcXCJcXG4gICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgICovXFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh5ryr5ri4XCIsXCJwYXRoXCI6XCJteVwiLFwicnVsZVwiOlwiZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5LuA5LmI5Lmf5rKh5pyJ6K+2XFxcIixcXG4gICAgICAgIHVybDogXFxcInRvYXN0Oi8v55yf55qE5LuA5LmI5Lmf5rKh5pyJXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCJcXG4gICAgfSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5biu5YqpXCIsXCJwYXRoXCI6XCJoZWxwXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIjEu55m75b2V6Kej6ZSB5a6M5pW05Yqf6IO9PGJyPjEuMeeZu+W9lemXrumimOaxh+aAuzxicj7nmbvlvZXmlrnms5XmnInkuKTnp43vvIzkuIDnp43oh6rliqjojrflj5Zjb29raWXkuIDnp43miYvliqjojrflj5bjgILpg73pnIDopoHov5vooYznvZHpobXnmbvlvZXjgII8YnI+5aaC5p6c6YGH5Yiw5peg5rOV6I635Y+W6aqM6K+B56CB5oiW6ICF54K55Ye75ZCO5rKh5pyJ5Y+N5bqU55qE6Zeu6aKY6K+356aB55So5omA5pyJ572R6aG15o+S5Lu244CCPGJyPueZu+W9leeahOaXtuWAmeS4jeeuoeaYr+S4jeaYr+Wkp+S8muWRmOivt+mDvemAieaLqeKAnOWkp+S8muWRmOeCueaIkeKAnei/meS4gOmhueOAgueUseS6juWGhee9rue6v+i3r+WPlua2iO+8jOaJgOS7peS4jeeZu+W9leaXoOazleS9v+eUqOebtOmTvuOAguebtOmTvuino+aekOWPluWGs+S6juS9oOeahOi0puWPt++8jOWkp+S8muWRmOWPr+S7peeci+S8muWRmOinhumike+8jOWPjeS5i+WImeS4jeiDveOAgjxicj4yLuWmguaenOmBh+ingeWlh+Wlh+aAquaAqueahOmXrumimO+8jOavlOWmglxcXFxcXFwidmxpc3RcXFxcXFxcIixcXFxcXFxcIjBcXFxcXFxcIixcXFxcXFxcIm51bGxcXFxcXFxcIuS7gOS5iOeahO+8jOivt+WwneivleKAnOabtOWkmuKAnemHjOmdoueahOKAnOS4gOmUrumHjee9ruKAneOAguS4gOmUrumHjee9ruS8muWwhuWwj+eoi+W6j+WIneWni+WMlu+8jOWFs+azqOeahHVw5LmL57G755qE5Lmf5Lya6YeN572u44CC5omA5Lul6K+36LCo5oWO5L2/55So44CCXFxcIixcXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxufSk7XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLee+jumjn1wiLFwicGF0aFwiOlwiZm9vZFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXHJcXG5kLnB1c2goe1xcclxcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXHJcXG4gICAgdXJsOiBcXFwiaHR0cHM6Ly9jb29rLnl1bnlvdWp1bi5jbi8/d3d3LmhpcXVlci5jb21cXFwiLFxcclxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcclxcbiAgICBleHRyYToge1xcclxcbiAgICAgICAgY2FuQmFjazogdHJ1ZSxcXHJcXG4gICAgICAgIHVybEludGVyY2VwdG9yOiAkLnRvU3RyaW5nKChNWV9SVUxFKSA9PiB7XFxyXFxuICAgICAgICAgICAgaWYgKGlucHV0Lm1hdGNoKC92aWRlby8pKSB7XFxyXFxuICAgICAgICAgICAgICAgIHJldHVybiAkLnRvU3RyaW5nKCh1cmwsIE1ZX1JVTEUpID0+IHtcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5sb2coTVlfUlVMRS50aXRsZSlcXHJcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5vcGVuKEpTT04uc3RyaW5naWZ5KHtcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlOiBNWV9SVUxFLnRpdGxlLFxcclxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiXFxcIixcXHJcXG4gICAgICAgICAgICAgICAgICAgICAgICBncm91cDogXFxcIlxcXCIsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlUnVsZTogXFxcIlxcXCIsXFxyXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD9ydWxlPVxcXCIgKyBNWV9SVUxFLnRpdGxlICsgXFxcIiZ1cmw9XFxcIiArIHVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXHJcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXHJcXG4gICAgICAgICAgICAgICAgfSwgaW5wdXQsIE1ZX1JVTEUpXFxyXFxuICAgICAgICAgICAgfVxcclxcbiAgICAgICAgICAgIC8vIOaLpuaIqmFwcOS4i+i9vemhtemdouKAlOKAlOmdnue9kemhteS7o+eggVxcclxcbiAgICAgICAgICAgIGlmIChpbnB1dC5pbmNsdWRlcygnZG93bmxvYWQnKSkgcmV0dXJuIHRydWU7XFxyXFxuICAgICAgICB9LCBNWV9SVUxFKSxcXHJcXG4gICAgICAgIGJsb2NrUnVsZXM6IFsnJ10sXFxyXFxuICAgICAgICB1YTogTU9CSUxFX1VBXFxyXFxuICAgIH1cXHJcXG59KTtcXHJcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmlofku7bmk43kvZxcIixcInBhdGhcIjpcImZpbGVcIixcInJ1bGVcIjpcImNvbnN0IEZpbGUgPSBqYXZhLmlvLkZpbGU7XFxuY29uc3Qge1xcbiAgICBGaWxlcyxcXG4gICAgUGF0aHMsXFxuICAgIFN0YW5kYXJkQ29weU9wdGlvbixcXG4gICAgU3RhbmRhcmRPcGVuT3B0aW9uXFxufSA9IGphdmEubmlvLmZpbGU7XFxuY29uc3QgamF2YVN0cmluZyA9IGphdmEubGFuZy5TdHJpbmc7XFxubGV0IGphdmFTY29wZSA9IG5ldyBKYXZhSW1wb3J0ZXIoamF2YS5pbywgamF2YS5sYW5nLCBqYXZhLmxhbmcucmVmbGVjdCwgamF2YS51dGlsLlZlY3Rvcik7XFxuXFxuZnVuY3Rpb24gZGVsZXRlRmxpZXMoZmlsZU5hbWUpIHtcXG4gICAgbGV0IGZpbGUgPSBuZXcgRmlsZShmaWxlTmFtZSk7XFxuICAgIGlmICghZmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgLy9sb2coXFxcIuWIoOmZpOaWh+S7tuWksei0pe+8mlxcXCIgKyBmaWxlTmFtZSArIFxcXCLmlofku7bkuI3lrZjlnKhcXFwiKTtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChmaWxlLmlzRmlsZSgpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGRlbGV0ZUZpbGUoZmlsZU5hbWUpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gZGVsZXRlRGlyZWN0b3J5KGZpbGVOYW1lKTtcXG4gICAgICAgIH1cXG5cXG4gICAgfVxcblxcbn1cXG4vKipcXG4gKiDliKDpmaTljZXkuKrmlofku7ZcXG4gKiBcXG4gKiBAcGFyYW0gZmlsZU5hbWVcXG4gKiAgICAgICAgICAgIOiiq+WIoOmZpOaWh+S7tueahOaWh+S7tuWQjVxcbiAqIEByZXR1cm4g5Y2V5Liq5paH5Lu25Yig6Zmk5oiQ5Yqf6L+U5ZuedHJ1ZSzlkKbliJnov5Tlm55mYWxzZVxcbiAqL1xcbmZ1bmN0aW9uIGRlbGV0ZUZpbGUoZmlsZU5hbWUpIHtcXG4gICAgbGV0IGZpbGUgPSBuZXcgRmlsZShmaWxlTmFtZSk7XFxuICAgIGlmIChmaWxlLmlzRmlsZSgpICYmIGZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgIGZpbGUuZGVsZXRlKCk7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk5Y2V5Liq5paH5Lu2XFxcIiArIGZpbGVOYW1lICsgXFxcIuaIkOWKn++8gVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk5Y2V5Liq5paH5Lu2XFxcIiArIGZpbGVOYW1lICsgXFxcIuWksei0pe+8gVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxuXFxufVxcbi8qKlxcbiAqIOWIoOmZpOebruW9le+8iOaWh+S7tuWkue+8ieS7peWPiuebruW9leS4i+eahOaWh+S7tlxcbiAqIFxcbiAqIEBwYXJhbSBkaXJcXG4gKiAgICAgICAgICAgIOiiq+WIoOmZpOebruW9leeahOaWh+S7tui3r+W+hFxcbiAqIEByZXR1cm4g55uu5b2V5Yig6Zmk5oiQ5Yqf6L+U5ZuedHJ1ZSzlkKbliJnov5Tlm55mYWxzZVxcbiAqL1xcbmZ1bmN0aW9uIGRlbGV0ZURpcmVjdG9yeShkaXIpIHtcXG4gICAgLy8g5aaC5p6cZGly5LiN5Lul5paH5Lu25YiG6ZqU56ym57uT5bC+77yM6Ieq5Yqo5re75Yqg5paH5Lu25YiG6ZqU56ymXFxuICAgIGlmICghZGlyLmVuZHNXaXRoKEZpbGUuc2VwYXJhdG9yKSkge1xcbiAgICAgICAgZGlyID0gZGlyICsgRmlsZS5zZXBhcmF0b3I7XFxuICAgIH1cXG4gICAgbGV0IGRpckZpbGUgPSBuZXcgRmlsZShkaXIpO1xcbiAgICAvLyDlpoLmnpxkaXLlr7nlupTnmoTmlofku7bkuI3lrZjlnKjvvIzmiJbogIXkuI3mmK/kuIDkuKrnm67lvZXvvIzliJnpgIDlh7pcXG4gICAgaWYgKCFkaXJGaWxlLmV4aXN0cygpIHx8ICFkaXJGaWxlLmlzRGlyZWN0b3J5KCkpIHtcXG4gICAgICAgIC8vbG9nKFxcXCLliKDpmaTnm67lvZXlpLHotKVcXFwiICsgZGlyICsgXFxcIuebruW9leS4jeWtmOWcqO+8gVxcXCIpO1xcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxuICAgIGxldCBmbGFnID0gdHJ1ZTtcXG4gICAgLy8g5Yig6Zmk5paH5Lu25aS55LiL55qE5omA5pyJ5paH5Lu2KOWMheaLrOWtkOebruW9lSlcXG4gICAgbGV0IGZpbGVzID0gZGlyRmlsZS5saXN0RmlsZXMoKTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgLy8g5Yig6Zmk5a2Q5paH5Lu2XFxuICAgICAgICBpZiAoZmlsZXNbaV0uaXNGaWxlKCkpIHtcXG4gICAgICAgICAgICBmbGFnID0gZGVsZXRlRmlsZShmaWxlc1tpXS5nZXRBYnNvbHV0ZVBhdGgoKSk7XFxuICAgICAgICAgICAgaWYgKCFmbGFnKSB7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7IC8vIOWIoOmZpOWtkOebruW9lVxcbiAgICAgICAgICAgIGZsYWcgPSBkZWxldGVEaXJlY3RvcnkoZmlsZXNbaV0uZ2V0QWJzb2x1dGVQYXRoKCkpO1xcbiAgICAgICAgICAgIGlmICghZmxhZykge1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgaWYgKCFmbGFnKSB7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk55uu5b2V5aSx6LSlXFxcIik7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG4gICAgLy8g5Yig6Zmk5b2T5YmN55uu5b2VXFxuICAgIGlmIChkaXJGaWxlLmRlbGV0ZSgpKSB7XFxuICAgICAgICAvL2xvZyhcXFwi5Yig6Zmk55uu5b2VXFxcIiArIGRpciArIFxcXCLmiJDlip/vvIFcXFwiKTtcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgLy9sb2coXFxcIuWIoOmZpOebruW9lVxcXCIgKyBkaXIgKyBcXFwi5aSx6LSl77yBXFxcIik7XFxuICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgIH1cXG59XFxuXFxuZnVuY3Rpb24gZ2V0RmlsZVRpbWUocGF0aCkge1xcbiAgICBsZXQgZmlsZSA9IG5ldyBGaWxlKHBhdGgpO1xcbiAgICBsZXQgbGFzdE1vZGlmaWVkID0gZmlsZS5sYXN0TW9kaWZpZWQoKTtcXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShsYXN0TW9kaWZpZWQpO1xcbiAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XFxufVxcblxcbmZ1bmN0aW9uIGdldE5hbWUocGF0aCkge1xcbiAgICByZXR1cm4gbmV3IEZpbGUocGF0aCkuZ2V0TmFtZSgpICsgXFxcIlxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEZpbGVQYXRoKHBhdGgsIHR5cGUsIGV4cGFuZCkge1xcbiAgICB0eXBlID0gdHlwZSB8fCBcXFwiZmlsZVxcXCI7XFxuICAgIGlmICghW1xcXCJmaWxlXFxcIiwgXFxcImRpclxcXCJdLmluY2x1ZGVzKHR5cGUpKSB0aHJvdyBuZXcgRXJyb3IoXFxcIuexu+Wei+mUmeivr1xcXCIpO1xcbiAgICBsZXQgZmlsZVR5cGUgPSB0eXBlID09PSBcXFwiZmlsZVxcXCIgPyBcXFwiaXNGaWxlXFxcIiA6IFxcXCJpc0RpcmVjdG9yeVxcXCI7XFxuICAgIGxldCBmaWxlID0gbmV3IEZpbGUocGF0aCk7XFxuICAgIGxldCBhcnJheSA9IGZpbGUubGlzdEZpbGVzKCkgfHwgW107XFxuICAgIGxldCBwYXRoTGlzdCA9IFtdO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBpZiAoYXJyYXlbaV1bZmlsZVR5cGVdKCkpIHtcXG4gICAgICAgICAgICBwYXRoTGlzdC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgbmFtZTogYXJyYXlbaV0uZ2V0TmFtZSgpICsgXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgIHBhdGg6IGFycmF5W2ldLmdldFBhdGgoKSArIFxcXCJcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgaWYgKGV4cGFuZCkge1xcbiAgICAgICAgcGF0aExpc3QgPSBwYXRoTGlzdC5maWx0ZXIoaXQgPT4gaXQubmFtZS5lbmRzV2l0aChleHBhbmQpKTtcXG4gICAgfVxcbiAgICByZXR1cm4gcGF0aExpc3Q7XFxufVxcblxcbmZ1bmN0aW9uIHJlbmFtZUZpbGUoZnJvbVBhdGgsIG5hbWUpIHtcXG4gICAgbGV0IGZyb21GaWxlID0gbmV3IEZpbGUoZnJvbVBhdGgpO1xcbiAgICBsZXQgdG9GaWxlID0gbmV3IEZpbGUoZnJvbUZpbGUuZ2V0UGFyZW50KCkgKyBcXFwiL1xcXCIgKyBuYW1lKTtcXG4gICAgdHJ5IHtcXG4gICAgICAgIGlmICghZnJvbUZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XFxuICAgICAgICB9XFxuICAgICAgICBpZiAodG9GaWxlLmV4aXN0cygpKSB7XFxuICAgICAgICAgICAgaWYgKCFkZWxldGVGbGllcyh0b1BhdGgpKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBGaWxlcy5tb3ZlKGZyb21GaWxlLnRvUGF0aCgpLCB0b0ZpbGUudG9QYXRoKCksIFN0YW5kYXJkQ29weU9wdGlvbi5SRVBMQUNFX0VYSVNUSU5HKTtcXG4gICAgICAgIHJldHVybiB0cnVlO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICBsb2coZS50b1N0cmluZygpKTtcXG4gICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgfVxcbn1cXG5cXG5mdW5jdGlvbiBtb3ZlRmlsZXMoZnJvbVBhdGgsIHRvUGF0aCkge1xcbiAgICBsZXQgZnJvbUZpbGUgPSBuZXcgRmlsZShmcm9tUGF0aCk7XFxuICAgIGxldCB0b0ZpbGUgPSBuZXcgRmlsZSh0b1BhdGgpO1xcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKCFmcm9tRmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh0b0ZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgICAgICBpZiAoIWRlbGV0ZUZsaWVzKHRvUGF0aCkpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIEZpbGVzLm1vdmUoZnJvbUZpbGUudG9QYXRoKCksIHRvRmlsZS50b1BhdGgoKSwgU3RhbmRhcmRDb3B5T3B0aW9uLlJFUExBQ0VfRVhJU1RJTkcpO1xcbiAgICAgICAgcmV0dXJuIHRydWU7XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZyhlLnRvU3RyaW5nKCkpO1xcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIGZpbGVXcml0ZShwYXRoLCBjb250ZW50KSB7XFxuICAgIHdyaXRlRmlsZShcXFwiZmlsZTovL1xcXCIgKyBwYXRoLCBjb250ZW50KVxcbn1cXG5cXG5mdW5jdGlvbiBmaWxlV3JpdGVBcHBlbmQocGF0aCwgY29udGVudCkge1xcbiAgICBsZXQgZmlsZSA9IG5ldyBGaWxlKHBhdGgpO1xcbiAgICBsZXQgcGF0aHMgPSBmaWxlLnRvUGF0aCgpO1xcbiAgICBpZiAoZmlsZS5leGlzdHMoKSkge1xcbiAgICAgICAgRmlsZXMud3JpdGUocGF0aHMsIG5ldyBqYXZhU3RyaW5nKGNvbnRlbnQpLmdldEJ5dGVzKCksIFN0YW5kYXJkT3Blbk9wdGlvbi5BUFBFTkQpO1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgd3JpdGVGaWxlKFxcXCJmaWxlOi8vXFxcIiArIHBhdGgsIGNvbnRlbnQpO1xcbiAgICB9XFxufVxcblxcbmZ1bmN0aW9uIGdldFRvdGFsU2l6ZU9mRmlsZXNJbkRpcihmaWxlKSB7XFxuICAgIGlmIChmaWxlLmlzRmlsZSgpKSB7XFxuICAgICAgICByZXR1cm4gZmlsZS5sZW5ndGgoKTtcXG4gICAgfVxcbiAgICBsZXQgY2hpbGRyZW4gPSBmaWxlLmxpc3RGaWxlcygpO1xcbiAgICBsZXQgdG90YWwgPSAwO1xcbiAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcXG4gICAgICAgICAgICB0b3RhbCArPSBnZXRUb3RhbFNpemVPZkZpbGVzSW5EaXIoY2hpbGQpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiB0b3RhbDtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0RmlsZVNpemUoZmlsZVBhdGgpIHtcXG4gICAgLy9CeXRlXFxuICAgIGxldCBzaXplID0gZ2V0VG90YWxTaXplT2ZGaWxlc0luRGlyKG5ldyBGaWxlKGZpbGVQYXRoKSk7XFxuICAgIGlmIChzaXplIDwgMCkge1xcbiAgICAgICAgcmV0dXJuIG51bGw7XFxuICAgIH1cXG4gICAgbGV0IHVuaXRGb3JtID0gW1xcXCJCeXRlXFxcIiwgXFxcIktCXFxcIiwgXFxcIk1CXFxcIiwgXFxcIkdCXFxcIiwgXFxcIlRCXFxcIl07XFxuICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB1bml0Rm9ybS5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xcbiAgICAgICAgaWYgKHNpemUgPiAxMDI0KSB7XFxuICAgICAgICAgICAgc2l6ZSAvPSAxMDI0O1xcbiAgICAgICAgICAgIGNvbnRpbnVlO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHNpemUpICsgdW5pdEZvcm1baV07XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgcmV0dXJuIFxcXCJFUlJPUjrmlbDlgLzov4flpKdcXFwiO1xcbn1cXG4vL+WujOaVtOWQiOW5tlxcbi8qXFxuZnVuY3Rpb24gZmlsZUNvbWJpbmUoZmlsZXNJbnB1dCwgZmlsZU91dCwgZXh0ZW5zaW9uLCBpbnRlcmNlcHQpIHtcXG4gICAgd2l0aChqYXZhU2NvcGUpIHtcXG4gICAgICAgIGNvbnN0IFRNUF9CVUZGRVJfU0laRSA9IDB4MzAwMDA7XFxuICAgICAgICBjb25zdCBCVUZGRVJfU0laRSA9IDB4MzAwMDAwO1xcbiAgICAgICAgLy/lkIjlubbkuLTml7bmlofku7ZcXG4gICAgICAgIGxldCBpbnB1dEZpbGUgPSBuZXcgRmlsZShmaWxlc0lucHV0KTtcXG4gICAgICAgIGxldCB0bXBGaWxlID0gbmV3IEZpbGUoZmlsZU91dCArIFxcXCIudG1wXFxcIik7XFxuICAgICAgICBsZXQgdG9zID0gbmV3IEJ1ZmZlcmVkT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKHRtcEZpbGUpKTtcXG4gICAgICAgIGxldCBpbnB1dEZpbGVzID0gaW5wdXRGaWxlLmxpc3RGaWxlcygpO1xcbiAgICAgICAgbGV0IHRieXMgPSBBcnJheS5uZXdJbnN0YW5jZShCeXRlLlRZUEUsIFRNUF9CVUZGRVJfU0laRSk7XFxuICAgICAgICBmb3IgKGxldCBmaWxlIG9mIGlucHV0RmlsZXMpIHtcXG4gICAgICAgICAgICBpZiAoZmlsZS5nZXROYW1lKCkuZW5kc1dpdGgoZXh0ZW5zaW9uKSkge1xcbiAgICAgICAgICAgICAgICBsZXQgaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpO1xcbiAgICAgICAgICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgICAgICAgICAgd2hpbGUgKChsZW4gPSBpcy5yZWFkKHRieXMpKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgdG9zLndyaXRlKHRieXMsIDAsIGxlbik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaXMuY2xvc2UoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICB0b3MuY2xvc2UoKTtcXG4gICAgICAgIC8v6KeE5YiZ5pu/5o2i6KeE5YiZO1xcbiAgICAgICAgbGV0IG91dEZpbGUgPSBuZXcgRmlsZShmaWxlT3V0KTtcXG4gICAgICAgIGlmICh0eXBlb2YgaW50ZXJjZXB0ID09PSBcXFwiZnVuY3Rpb25cXFwiKSB7XFxuICAgICAgICAgICAgbGV0IHRpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0odG1wRmlsZSk7XFxuICAgICAgICAgICAgbGV0IG9zID0gbmV3IEJ1ZmZlcmVkT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKG91dEZpbGUpKTtcXG4gICAgICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgICAgICBsZXQgYnlzID0gQXJyYXkubmV3SW5zdGFuY2UoQnl0ZS5UWVBFLCBCVUZGRVJfU0laRSk7XFxuICAgICAgICAgICAgd2hpbGUgKChsZW4gPSB0aXMucmVhZChieXMpKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICBsZXQgbmJ5cyA9IGludGVyY2VwdChuZXcgU3RyaW5nKGJ5cywwLGxlbikpO1xcbiAgICAgICAgICAgICAgICBvcy53cml0ZShuYnlzLCAwLCBuYnlzLmxlbmd0aCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHRtcEZpbGUuZGVsZXRlKCk7XFxuICAgICAgICAgICAgdGlzLmNsb3NlKCk7XFxuICAgICAgICAgICAgb3MuY2xvc2UoKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKG91dEZpbGUuZXhpc3RzKCkpIHtcXG4gICAgICAgICAgICAgICAgb3V0RmlsZS5kZWxldGUoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdG1wRmlsZS5yZW5hbWVUbyhvdXRGaWxlKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn0qL1xcbi8v5q6LXFxuZnVuY3Rpb24gZmlsZVJ1bGUoZmlsZXNJbnB1dCwgZmlsZU91dCwgaW50ZXJjZXB0KSB7XFxuICAgIHdpdGgoamF2YVNjb3BlKSB7XFxuICAgICAgICBjb25zdCBCVUZGRVJfU0laRSA9IDB4MzAwMDAwO1xcbiAgICAgICAgbGV0IHRtcEZpbGUgPSBuZXcgRmlsZShmaWxlc0lucHV0KTtcXG4gICAgICAgIGlmKCEodG1wRmlsZS5leGlzdHMoKSYmdG1wRmlsZS5pc0ZpbGUoKSkpe1xcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBvdXRGaWxlID0gbmV3IEZpbGUoZmlsZU91dCk7XFxuXFxuICAgICAgICBsZXQgdGlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbSh0bXBGaWxlKTtcXG4gICAgICAgIGxldCBvcyA9IG5ldyBCdWZmZXJlZE91dHB1dFN0cmVhbShuZXcgRmlsZU91dHB1dFN0cmVhbShvdXRGaWxlKSk7XFxuICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgIGxldCBieXMgPSBBcnJheS5uZXdJbnN0YW5jZShCeXRlLlRZUEUsIEJVRkZFUl9TSVpFKTtcXG4gICAgICAgIHdoaWxlICgobGVuID0gdGlzLnJlYWQoYnlzKSkgIT0gLTEpIHtcXG4gICAgICAgICAgICBsZXQgbmJ5cyA9IGludGVyY2VwdChuZXcgU3RyaW5nKGJ5cywwLGxlbikpO1xcbiAgICAgICAgICAgIG9zLndyaXRlKG5ieXMsIDAsIG5ieXMubGVuZ3RoKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHRtcEZpbGUuZGVsZXRlKCk7XFxuICAgICAgICB0aXMuY2xvc2UoKTtcXG4gICAgICAgIG9zLmNsb3NlKCk7XFxuICAgICAgICByZXR1cm4gdHJ1ZTtcXG4gICAgfVxcbn1cXG5cXG4kLmV4cG9ydHMgPSB7XFxuICAgIGdldEZpbGVUaW1lOiAocGF0aCkgPT4gZ2V0RmlsZVRpbWUocGF0aCksXFxuICAgIGdldEZpbGVQYXRoOiAocGF0aCwgdHlwZSwgZXhwYW5kKSA9PiBnZXRGaWxlUGF0aChwYXRoLCB0eXBlLCBleHBhbmQpLFxcbiAgICBkZWxldGVGbGllczogKHBhdGgpID0+IGRlbGV0ZUZsaWVzKHBhdGgpLFxcbiAgICByZW5hbWVGaWxlOiAocGF0aCwgbmFtZSkgPT4gcmVuYW1lRmlsZShwYXRoLCBuYW1lKSxcXG4gICAgbW92ZUZpbGVzOiAoZnJvbVBhdGgsIHRvUGF0aCkgPT4gbW92ZUZpbGVzKGZyb21QYXRoLCB0b1BhdGgpLFxcbiAgICBmaWxlV3JpdGU6IChwYXRoLCBjb250ZW50KSA9PiBmaWxlV3JpdGUocGF0aCwgY29udGVudCksXFxuICAgIGZpbGVXcml0ZUFwcGVuZDogKHBhdGgsIGNvbnRlbnQpID0+IGZpbGVXcml0ZUFwcGVuZChwYXRoLCBjb250ZW50KSxcXG4gICAgZ2V0TmFtZTogKHBhdGgpID0+IGdldE5hbWUocGF0aCksXFxuICAgIGdldEZpbGVTaXplOiAoZmlsZVBhdGgpID0+IGdldEZpbGVTaXplKGZpbGVQYXRoKSxcXG4gICAgZmlsZVJ1bGU6IChmaWxlc0lucHV0LCBmaWxlT3V0LCBpbnRlcmNlcHQpID0+IGZpbGVSdWxlKGZpbGVzSW5wdXQsIGZpbGVPdXQsIGludGVyY2VwdClcXG59XCJ9XSIsImljb24iOiJodHRwczovL3d3dy5oZWxsb2ltZy5jb20vaW1hZ2VzLzIwMjIvMDQvMDUvUm10R1N6LmdpZiIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment