Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@云动听书APP@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR5Yqo5ZCs5LmmQVBQIiwiYXV0aG9yIjoiemhhbyIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2Z5cGFnZSIsInZlcnNpb24iOjEsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoibXVzaWMiLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcblxudmFyIGQgPSBbXVxudmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO1xufVxuLy8g5b2T5YmN6YCJ5Lit55qE6aG16Z2i57Si5byVXG52YXIgdGluZGV4ID0gc3RvcmFnZTAuZ2V0TXlWYXIoJ3RpbmRleCcsIDApO1xuLy8g6aG16Z2i5qCH6aKY5pWw57uEXG52YXIgdGl0bGVzID0gW1wi6aaW6aG1XCIsIFwi5YiG57G7XCIsIFwi5Lmm5p62XCJdO1xuLy8g5Zu+54mH5pWw57uEXG52YXIgaW1ncyA9IFtcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZEhoQy50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZERRSy50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZFZ0RS50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZGxVdi50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZHFsay50aC5wbmdcIixcbiAgICBcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZDI5Si50aC5wbmdcIlxuXTtcbi8vIOavj+S4qumhtemdouWvueW6lOeahOWbvueJh+e0ouW8le+8iOWumuS5ieS4jeWQjOmhtemdouWvueW6lOeahOWbvueJh+mAu+i+ke+8iVxudmFyIHBhZ2VJbWdNYXBwaW5nID0ge1xuICAgIDA6IFszLCAxLCAyXSwgLy8g6aaW6aG1XG4gICAgMTogWzAsIDQsIDJdLCAvLyDliIbnsbtcbiAgICAyOiBbMCwgMSwgNV0gLy8g5Lmm5p62XG59O1xuLy8g5qC55o2u5b2T5YmN6YCJ5Lit55qE6aG16Z2i77yM5Y+W5Ye65a+55bqU55qE5Zu+54mH57Si5byVXG52YXIgY3VycmVudEltZ0luZGljZXMgPSBwYWdlSW1nTWFwcGluZ1t0aW5kZXhdIHx8IFtdO1xuLy8g5Yqo5oCB5pu05paw5qCH6aKY5ZKM5Zu+54mHXG50aXRsZXMgPSB0aXRsZXMubWFwKCh0aXRsZSwgaSkgPT4gaSA9PSB0aW5kZXggPyBgPGI+PGZvbnQgY29sb3I9XCIjOTM3MERCXCI+JHt0aXRsZX08L2ZvbnQ+PC9iPmAgOiB0aXRsZSk7XG5pbWdzID0gY3VycmVudEltZ0luZGljZXMubWFwKGluZGV4ID0+IGltZ3NbaW5kZXhdKTtcbi8vIOa4suafk+mhtemdouWGheWuuVxuaWYgKE1ZX1BBR0UgPT09IDEpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpdGxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IHRpdGxlc1tpXSxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnB1dE15VmFyKCd0aW5kZXgnLCBpKTsgLy8g5L+d5a2Y5b2T5YmN6aG16Z2i57Si5byVXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTsgLy8g5Yi35paw6aG16Z2iXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JztcbiAgICAgICAgICAgIH0sIGkpLFxuICAgICAgICAgICAgaW1nOiBpbWdzW2ldLCAvLyDkvb/nlKjlr7nlupTnmoTlm77niYdcbiAgICAgICAgICAgIGNvbF90eXBlOiBcImljb25fc21hbGxfM1wiIC8vIOagt+W8j1xuICAgICAgICB9KTtcbiAgICB9XG59XG50cnl7XG52YXIgYXBpdmlldyA9ICQucmVxdWlyZShcImhhbnNodVwiKTtcbnN3aXRjaCAocGFyc2VJbnQodGluZGV4KSkge1xuICAgIGNhc2UgMDpcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9ob21lJykpLnJ1bGUpXG4gICAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9jbGEnKSkucnVsZSlcbiAgICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NsYTEnKSkucnVsZSlcbiAgICAgICAgYnJlYWs7XG59XG59Y2F0Y2goZSl7XG4gICAgbG9nKGUubWVzc2FnZSlcbiAgICAvL2xvZyhnZXRNeVZhcignYScpKVxuICAgIGlmKGdldE15VmFyKCdhJykgPT0gJycpe1xuICAgICAgICB2YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbCgnaHR0cHM6Ly9iY2Vib3NvcmcuZ3ouYmNlYm9zLmNvbS9jbG91ZC9hcHAvc2VydmVyaW5mby5qc29uP3Q9MTczMjE3MTQzMzE0OScpIFxuICAgICAgICB2YXIgc3RhdGljX2FkZHJlc3MgPSBodG1sLnN0YXRpY19hZGRyZXNzOyBsb2coc3RhdGljX2FkZHJlc3MpXG4gICAgICAgIHZhciBzZWFyY2hfYWRkcmVzcyA9IGh0bWwuc2VhcmNoX2FkZHJlc3M7IGxvZyhzZWFyY2hfYWRkcmVzcylcbiAgICAgICAgc2V0SXRlbSgnc3RhdGljX2FkZHJlc3MnLHN0YXRpY19hZGRyZXNzKVxuICAgICAgICBzZXRJdGVtKCdzZWFyY2hfYWRkcmVzcycsc2VhcmNoX2FkZHJlc3MpXG4gICAgICAgIHB1dE15VmFyKCdhJywnMScpXG4gICAgICAgIHJlZnJlc2hQYWdlKClcbiAgICAgICAgdG9hc3QoJ+Wfn+WQjeW3suabtOaWsCcpXG4gICAgfVxufVxuXG5zZXRSZXN1bHQoZCkiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIyMqKiIsImdyb3VwIjoi4pGk6Z+z6aKRIiwic2VhcmNoRmluZCI6ImpzOlxudmFyIGFwaXZpZXcgPSAkLnJlcXVpcmUoXCJoYW5zaHVcIilcbnZhciBodG1sID0gYXBpdmlldy5nZXRzZWFyY2hodG1sKGFwaXZpZXcuc2VhcmNoX2FkZHJlc3MrJ2FwaS9ub3ZlbC9zZWFyY2gvYm9va3MnLE1ZX0tFWVdPUkQsTVlfUEFHRSkgXG52YXIgbGlzdCA9IGh0bWwuaXRlbXNcbnZhciBkID0gW107XG5saXN0LmZvckVhY2goIGl0ZW0gPT4ge1xuICAgIGQucHVzaCh7XG4gICAgICAgIHRpdGxlOiBpdGVtLmJvb2tOYW1lLnJlcGxhY2UoLzx3b3JkPi9nLCcnKS5yZXBsYWNlKC88XFwvd29yZD4vZywnJyksXG4gICAgICAgIGRlc2M6IGl0ZW0uYXV0aG9yTmFtZSsnICAgJytpdGVtLmNhdGVnb3J5TmFtZSxcbiAgICAgICAgY29udGVudDogaXRlbS5pbnRybyxcbiAgICAgICAgaW1nOiBhcGl2aWV3LnN0YXRpY19hZGRyZXNzKycvJytpdGVtLmNvdmVyVXJsLFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9ib29rSWQ9JHtpdGVtLmJvb2tJZH0jaW1tZXJzaXZlVGhlbWUjYCxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsXG4gICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICBib29rSWQ6IGl0ZW0uYm9va0lkLFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLmJvb2tOYW1lLnJlcGxhY2UoLzx3b3JkPi9nLCcnKS5yZXBsYWNlKC88XFwvd29yZD4vZywnJylcbiAgICAgICAgfVxuICAgIH0pXG59KVxuc2V0UmVzdWx0KGQpIiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIummlumhtVwiLFwicGF0aFwiOlwiaG9tZVwiLFwicnVsZVwiOlwiaWYoTVlfUEFHRSA9PSAnMScpe1xcbnZhciBpbWcgPSAnaHR0cHM6Ly9pY29uZm9udC50eXJhbnRnLmNvbS9hcGkvaWxsdXN0cmF0ZS5zdmc/c3ZnX3N0cmluZz0lM0NzdmclMjBjbGFzcyUzRCUyMmljb24lMjIlMjBzdHlsZSUzRCUyMndpZHRoJTNBJTIwMWVtJTNCaGVpZ2h0JTNBJTIwMWVtJTNCdmVydGljYWwtYWxpZ24lM0ElMjBtaWRkbGUlM0JmaWxsJTNBJTIwY3VycmVudENvbG9yJTNCb3ZlcmZsb3clM0ElMjBoaWRkZW4lM0IlMjIlMjB2aWV3Qm94JTNEJTIyMCUyMDAlMjAxMDI0JTIwMTAyNCUyMiUyMHZlcnNpb24lM0QlMjIxLjElMjIlMjB4bWxucyUzRCUyMmh0dHAlM0ElMkYlMkZ3d3cudzMub3JnJTJGMjAwMCUyRnN2ZyUyMiUzRSUzQ3BhdGglMjBkJTNEJTIyTTUwOC4yODglMjA2MS4wNTZBNDUxLjM5MiUyMDQ1MS4zOTIlMjAwJTIwMCUyMDAlMjA1Ny40MDglMjA1MTJhNDUxLjQ1NiUyMDQ1MS40NTYlMjAwJTIwMCUyMDAlMjA0NTAuODglMjA0NTAuOTQ0YzI0OC42NCUyMDAlMjA0NTAuOTQ0LTIwMi4zMDQlMjA0NTAuOTQ0LTQ1MC45NDRBNDUxLjQ1NiUyMDQ1MS40NTYlMjAwJTIwMCUyMDAlMjA1MDguMjg4JTIwNjEuMDU2eiUyMG0wJTIwODM4LjU5MkEzODguMDk2JTIwMzg4LjA5NiUyMDAlMjAwJTIwMSUyMDEyMC42NCUyMDUxMmEzODguMDMyJTIwMzg4LjAzMiUyMDAlMjAwJTIwMSUyMDM4Ny42NDgtMzg3LjY0OEEzODguMDk2JTIwMzg4LjA5NiUyMDAlMjAwJTIwMSUyMDg5NiUyMDUxMmEzODguMDk2JTIwMzg4LjA5NiUyMDAlMjAwJTIwMS0zODcuNjQ4JTIwMzg3LjY0OHpNMzEzLjE1MiUyMDQ1Mi42NzJhNTkuMzI4JTIwNTkuMzI4JTIwMCUyMDElMjAwJTIwMCUyMDExOC42NTYlMjA1OS4zMjglMjA1OS4zMjglMjAwJTIwMCUyMDAlMjAwLTExOC42NTZ6JTIwbTE5NS4yJTIwMGE1OS4zMjglMjA1OS4zMjglMjAwJTIwMSUyMDAtMC4wNjQlMjAxMTguNjU2JTIwNTkuMzI4JTIwNTkuMzI4JTIwMCUyMDAlMjAwJTIwMC0xMTguNjU2eiUyMG0xOTUuMDcyJTIwMGE1OS4zMjglMjA1OS4zMjglMjAwJTIwMSUyMDAlMjAwJTIwMTE4LjY1NiUyMDU5LjMyOCUyMDU5LjMyOCUyMDAlMjAwJTIwMCUyMDAtMTE4LjY1NnolMjIlMjBmaWxsJTNEJTIyJTIzQjdCQUM4JTIyJTIwJTJGJTNFJTNDJTJGc3ZnJTNFJzsgXFxudmFyIGh0bWwgPSBhcGl2aWV3LmdldGh0bWwoYXBpdmlldy5zdGF0aWNfYWRkcmVzcysnYXBpL25vdmVsL2xpYi91cGRhdGVkL2xpc3QvNS5qc29uJyk7IFxcbnZhciBsaXN0ID0gaHRtbC5pdGVtc1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5pyA6L+R5pu05pawJyxcXG4gICAgaW1nOiBpbWcsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9ja2dkP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMnLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogJ3VwZGF0ZWQnXFxuICAgIH1cXG59KVxcbmxpc3Quc2xpY2UoMCw2KS5mb3JFYWNoKCBpdGVtID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLmJvb2tOYW1lLFxcbiAgICAgICAgZGVzYzogaXRlbS5jYXRlZ29yeU5hbWUsXFxuICAgICAgICBpbWc6IGFwaXZpZXcuc3RhdGljX2FkZHJlc3MraXRlbS5jb3ZlclVybCxcXG4gICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP2Jvb2tJZD0ke2l0ZW0uYm9va0lkfSNpbW1lcnNpdmVUaGVtZSNgLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBib29rSWQ6IGl0ZW0uYm9va0lkLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5ib29rTmFtZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxudmFyIGh0bWwgPSBhcGl2aWV3LmdldGh0bWwoYXBpdmlldy5zdGF0aWNfYWRkcmVzcysnYXBpL25vdmVsL2xpYi9ob3QvbGlzdC8xLmpzb24nKTsgXFxudmFyIGxpc3QgPSBodG1sLml0ZW1zXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfng63pl6jmppzljZUnLFxcbiAgICBpbWc6IGltZyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2NrZ2Q/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IycsXFxuICAgIGNvbF90eXBlOiAndGV4dF9pY29uJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiAnaG90J1xcbiAgICB9XFxufSlcXG5saXN0LnNsaWNlKDAsNikuZm9yRWFjaCggaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5ib29rTmFtZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uY2F0ZWdvcnlOYW1lLFxcbiAgICAgICAgaW1nOiBhcGl2aWV3LnN0YXRpY19hZGRyZXNzK2l0ZW0uY292ZXJVcmwsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9ib29rSWQ9JHtpdGVtLmJvb2tJZH0jaW1tZXJzaXZlVGhlbWUjYCxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgYm9va0lkOiBpdGVtLmJvb2tJZCxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0uYm9va05hbWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcbnZhciBodG1sID0gYXBpdmlldy5nZXRodG1sKGFwaXZpZXcuc3RhdGljX2FkZHJlc3MrJ2FwaS9ub3ZlbC9saWIvc3Rvcnl0ZWxsaW5nL2xpc3QvMS5qc29uJyk7IFxcbnZhciBsaXN0ID0gaHRtbC5pdGVtc1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn6K+E5Lmm57uP5YW4JyxcXG4gICAgaW1nOiBpbWcsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9ja2dkP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMnLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogJ3N0b3J5dGVsbGluZydcXG4gICAgfVxcbn0pXFxubGlzdC5zbGljZSgwLDYpLmZvckVhY2goIGl0ZW0gPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0uYm9va05hbWUsXFxuICAgICAgICBkZXNjOiBpdGVtLmNhdGVnb3J5TmFtZSxcXG4gICAgICAgIGltZzogYXBpdmlldy5zdGF0aWNfYWRkcmVzcytpdGVtLmNvdmVyVXJsLFxcbiAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2Vyamk/Ym9va0lkPSR7aXRlbS5ib29rSWR9I2ltbWVyc2l2ZVRoZW1lI2AsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGJvb2tJZDogaXRlbS5ib29rSWQsXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLmJvb2tOYW1lXFxuICAgICAgICB9XFxuICAgIH0pXFxufSlcXG52YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbChhcGl2aWV3LnN0YXRpY19hZGRyZXNzKydhcGkvbm92ZWwvbGliL3ZvaWNlbm92ZWwvbGlzdC8xLmpzb24nKTsgXFxudmFyIGxpc3QgPSBodG1sLml0ZW1zXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfmnInlo7DlsI/or7QnLFxcbiAgICBpbWc6IGltZyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2NrZ2Q/cGFnZT1meXBhZ2Ujbm9IaXN0b3J5IycsXFxuICAgIGNvbF90eXBlOiAndGV4dF9pY29uJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiAndm9pY2Vub3ZlbCdcXG4gICAgfVxcbn0pXFxubGlzdC5yZXZlcnNlKCkuc2xpY2UoMCw2KS5mb3JFYWNoKCBpdGVtID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLmJvb2tOYW1lLFxcbiAgICAgICAgZGVzYzogaXRlbS5jYXRlZ29yeU5hbWUsXFxuICAgICAgICBpbWc6IGFwaXZpZXcuc3RhdGljX2FkZHJlc3MraXRlbS5jb3ZlclVybCxcXG4gICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP2Jvb2tJZD0ke2l0ZW0uYm9va0lkfSNpbW1lcnNpdmVUaGVtZSNgLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBib29rSWQ6IGl0ZW0uYm9va0lkLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5ib29rTmFtZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxufVxcbnRyeXtcXG52YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbChhcGl2aWV3LnN0YXRpY19hZGRyZXNzKydhcGkvbm92ZWwvbGliL3JlY29tbWVuZC9saXN0LycrTVlfUEFHRSsnLmpzb24nKTsgXFxudmFyIGxpc3QgPSBodG1sLml0ZW1zXFxuaWYoTVlfUEFHRSA9PSAnMScpe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5pu05aSa5o6o6I2QJyxcXG4gICAgaW1nOiBpbWcsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9ja2dkP3BhZ2U9ZnlwYWdlI25vSGlzdG9yeSMnLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfaWNvbicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogJ3JlY29tbWVuZCdcXG4gICAgfVxcbn0pXFxufVxcbmxpc3QuZm9yRWFjaCggaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5ib29rTmFtZSsnXFxcXG4nK2l0ZW0uY2F0ZWdvcnlOYW1lLFxcbiAgICAgICAgZGVzYzogaXRlbS5hdXRob3JOYW1lKydcXFxcbicraXRlbS5sYXRlc3RDaGFwdGVyTmFtZSxcXG4gICAgICAgIGltZzogYXBpdmlldy5zdGF0aWNfYWRkcmVzcytpdGVtLmNvdmVyVXJsLFxcbiAgICAgICAgdXJsOiBgaGlrZXI6Ly9wYWdlL2Vyamk/Ym9va0lkPSR7aXRlbS5ib29rSWR9I2ltbWVyc2l2ZVRoZW1lI2AsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgYm9va0lkOiBpdGVtLmJvb2tJZCxcXG4gICAgICAgICAgICBwYWdlVGl0bGU6IGl0ZW0uYm9va05hbWVcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcbn1jYXRjaChlKXt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlh73mlbBcIixcInBhdGhcIjpcImhhbnNodVwiLFwicnVsZVwiOlwiY29uc3QgYXBpdmlldyA9IHtcXG4gICAgY29sb3I6ICh0ZXN0KSA9PiB7XFxuICAgICAgICByZXR1cm4gJzxmb250IGNvbG9yPVxcXCIjRkE3Mjk4XFxcIj4nICsgdGVzdCArICc8L2Zyb250Pic7XFxuICAgIH0sXFxuICAgIHN0cm9uZzogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPHN0cm9uZz4nICsgdGVzdCArICc8L3N0cm9uZz4nO1xcbiAgICB9LFxcbiAgICBzbWFsbDogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiAnPHNtYWxsPicgKyB0ZXN0ICsgJzwvc21hbGw+JztcXG4gICAgfSxcXG4gICAgY2VudGVyOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8cCBzdHlsZT1cXFwidGV4dC1hbGlnbjogY2VudGVyO1xcXCI+JyArIHRlc3QgKyAnPC9wPidcXG4gICAgfSxcXG4gICAgYmlnOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuICc8YmlnPicgKyB0ZXN0ICsgJzwvYmlnPic7XFxuICAgIH0sXFxuICAgIGdyZXk6ICh0ZXh0KSA9PiB7XFxuICAgICAgICByZXR1cm4gXFxcIjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgdGV4dCArIFxcXCI8L2ZvbnQ+XFxcIjtcXG5cXG4gICAgfSxcXG4gICAgZ3JheTogKHRlc3QpID0+IHtcXG4gICAgICAgIHJldHVybiBcXFwiPGZvbnQgY29sb3I9J2dyYXknPlxcXCIgKyB0ZXN0ICsgXFxcIjwvZm9udD5cXFwiO1xcbiAgICB9LFxcbiAgICByaWNoOiAodGVzdCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCLigJjigJjigJnigJlcXFwiICsgdGVzdDtcXG4gICAgfSxcXG4gICAgYWRkcmVzc1RhZzogKHVybCwgdGV4dCkgPT4ge1xcbiAgICAgICAgcmV0dXJuIFxcXCI8YSBocmVmPSdcXFwiICsgdXJsICsgXFxcIic+XFxcIiArIHRleHQgKyBcXFwiPC9hPlxcXCJcXG4gICAgfSxcXG4gICAgZW1wdHk6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgbm9Mb2FkOiBcXFwiI25vTG9hZGluZyNcXFwiLFxcbiAgICBrZXk6IFxcXCJDQ0RFUEdBTVxcXCIsXFxuICAgIGtleTE6IFxcXCJPMEJYTVNSSVxcXCIsXFxuICAgIGtleTI6IFxcXCJBUExHVFk2RFxcXCIsXFxuICAgIGtleTM6IFxcXCJPVDdITFFIUlxcXCIsXFxuICAgIGtleTQ6IFxcXCJFUkc3RjVLUFxcXCIsXFxuICAgIGtleTU6IFxcXCJOMEUzNTE1MFxcXCIsXFxuICAgIHN0YXRpY19hZGRyZXNzOiBnZXRJdGVtKFxcXCJzdGF0aWNfYWRkcmVzc1xcXCIpLFxcbiAgICBzZWFyY2hfYWRkcmVzczogZ2V0SXRlbShcXFwic2VhcmNoX2FkZHJlc3NcXFwiKSxcXG4gICAgdGltZXN0YW1wOiAoKSA9PiBNYXRoLmZsb29yKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCksXFxuICAgIHQxMDogKCkgPT4gYXBpdmlldy50aW1lc3RhbXAoKS50b1N0cmluZygpLFxcbiAgICB0MTM6ICgpID0+IGFwaXZpZXcudDEwKCkgKyAnMDAwJyxcXG4gICAgLyoqXFxuICAgICAqIOagvOW8j+WMluaXtumXtOaIs+S4uuagh+WHhuaXtumXtFxcbiAgICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IHRpbWVzdGFtcCAtIOenkue6p+aIluavq+enkue6p+aXtumXtOaIs++8iOaUr+aMgeenkeWtpuiuoeaVsOazle+8iVxcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSAtIOi/lOWbnuagvOW8j+WMluWQjueahOaXtumXtCBcXFwiWVlZWS1NTS1ERCBISDpNTTpTU1xcXCJcXG4gICAgICovXFxuICAgIGZvcm1hdFRpbWVzdGFtcDogKHRpbWVzdGFtcCkgPT4ge1xcbiAgICAgICAgLy8g57uf5LiA5bCG5pe26Ze05oiz6Kej5p6Q5Li65pWw5a2XXFxuICAgICAgICBjb25zdCB0cyA9IE51bWJlcih0aW1lc3RhbXApO1xcbiAgICAgICAgaWYgKGlzTmFOKHRzKSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiSW52YWxpZCB0aW1lc3RhbXAgZm9ybWF0XFxcIik7XFxuICAgICAgICB9XFxuXFxuICAgICAgICAvLyDliKTmlq3ml7bpl7TmiLPmmK/np5LnuqfvvIgxMOS9je+8iei/mOaYr+avq+enkue6p++8iDEz5L2N77yJXFxuICAgICAgICBjb25zdCBtaWxsaXMgPSB0cyA8IDFlMTIgPyB0cyAqIDEwMDAgOiB0cztcXG5cXG4gICAgICAgIC8vIOWIm+W7uuaXpeacn+WvueixoVxcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKG1pbGxpcyk7XFxuXFxuICAgICAgICAvLyDmoLzlvI/ljJbml6XmnJ/lkozml7bpl7TvvIznoa7kv53ooaXpm7ZcXG4gICAgICAgIGNvbnN0IHBhZCA9IChudW0pID0+IFN0cmluZyhudW0pLnBhZFN0YXJ0KDIsICcwJyk7XFxuICAgICAgICByZXR1cm4gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke3BhZChkYXRlLmdldE1vbnRoKCkgKyAxKX0tJHtwYWQoZGF0ZS5nZXREYXRlKCkpfSBgICtcXG4gICAgICAgICAgICBgJHtwYWQoZGF0ZS5nZXRIb3VycygpKX06JHtwYWQoZGF0ZS5nZXRNaW51dGVzKCkpfToke3BhZChkYXRlLmdldFNlY29uZHMoKSl9YDtcXG4gICAgfSxcXG4gICAgRGVjcnlwdDogKHdvcmQsa2V5eSkgPT4ge1xcbiAgICAgICAgbGV0IENyeXB0b1V0aWwgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vYXNzZXRzL2NyeXB0by1qYXZhLmpzXFxcIik7XFxuICAgICAgICBsZXQga2V5ID0gQ3J5cHRvVXRpbC5EYXRhLnBhcnNlVVRGOChrZXl5KTtcXG4gICAgICAgIGxldCBkZWNyeXB0ZWQgPSBDcnlwdG9VdGlsLkRFUy5kZWNyeXB0KHdvcmQsIGtleSwge1xcbiAgICAgICAgICAgIG1vZGU6IFxcXCJERVMvRUNCL1BLQ1M3UGFkZGluZ1xcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuIGRlY3J5cHRlZC50b1N0cmluZygpO1xcbiAgICB9LFxcbiAgICBnZXRodG1sOiAodXJsKSA9PiB7XFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKHVybCx7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBcXFwiRGFydC8zLjMgKGRhcnQ6aW8pXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJ1c2VyaWRcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgIC8vXFxcImFjY2VwdC1lbmNvZGluZ1xcXCI6IFxcXCJnemlwXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJjaGFubmVsXFxcIjogXFxcIlxcXCIsXFxuICAgICAgICAgICAgICBcXFwidXVpZFxcXCI6IFxcXCJkZTVhZWViNDkwOGFkZGEzXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJydGltZVxcXCI6IFxcXCIxNzMyMTcxNDMyODYxXFxcIixcXG4gICAgICAgICAgICAgIC8vXFxcInJ0aW1lXFxcIjogYXBpdmlldy50MTMoKSxcXG4gICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uY29kZVxcXCI6IFxcXCIzOFxcXCIsXFxuICAgICAgICAgICAgICBcXFwic2lnblxcXCI6IFxcXCIzMDUxZDI0ZGQ3MTRiYzQwYWJlN2E1NTdjODg5MzY1YlxcXCIsXFxuICAgICAgICAgICAgICAvL1xcXCJzaWduXFxcIjogbWQ1KCdjb20udm8uaWNlYScrYXBpdmlldy50MTMoKSthcGl2aWV3LnQxMygpKSxcXG4gICAgICAgICAgICAgIFxcXCJjdGltZVxcXCI6IFxcXCIxNzMyMTcxNDMzMTQ5XFxcIixcXG4gICAgICAgICAgICAgIC8vXFxcImN0aW1lXFxcIjogYXBpdmlldy50MTMoKSxcXG4gICAgICAgICAgICAgIFxcXCJwYWNrYWdlc2lnblxcXCI6IFxcXCIwN2RhZDZhZDFjYmY2NWE0YWE1NjU5NTUxOGU1OGJiZDNjNmUwY2VhXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJwYWNrYWdlbmFtZVxcXCI6IFxcXCJjb20udm8uaWNlYVxcXCIsXFxuICAgICAgICAgICAgICBcXFwiaG9zdFxcXCI6IFxcXCJiY2Vib3NvcmcuZ3ouYmNlYm9zLmNvbVxcXCIsXFxuICAgICAgICAgICAgICBcXFwidmVyc2lvbm5hbWVcXFwiOiBcXFwiMS4zLjhcXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnXFxuICAgICAgICB9KTsgLy9sb2coaHRtbClcXG4gICAgICAgIHZhciBodG1sMSA9IEpTT04ucGFyc2UoaHRtbClcXG4gICAgICAgIHZhciB0b2tlbiA9IGh0bWwxLnNhZmV0eS50b2tlbjsgLy9sb2codG9rZW4pXFxuICAgICAgICB2YXIgc2FmZXR5RGF0YSA9IGh0bWwxLnNhZmV0eURhdGE7IC8vbG9nKHNhZmV0eURhdGEpXFxuICAgICAgICBpZigvYXBwLy50ZXN0KHVybCkpe1xcbiAgICAgICAgICAgIHZhciBrZXkgPSBhcGl2aWV3LmtleVxcbiAgICAgICAgfWVsc2UgaWYoL2xpc3QvLnRlc3QodXJsKSl7XFxuICAgICAgICAgICAgdmFyIGtleSA9IGFwaXZpZXcua2V5MVxcbiAgICAgICAgfWVsc2UgaWYoL2FsbC8udGVzdCh1cmwpKXtcXG4gICAgICAgICAgICB2YXIga2V5ID0gYXBpdmlldy5rZXkyXFxuICAgICAgICB9ZWxzZSBpZigvaW5mby8udGVzdCh1cmwpKXtcXG4gICAgICAgICAgICB2YXIga2V5ID0gYXBpdmlldy5rZXkzXFxuICAgICAgICB9ZWxzZSBpZigvY2hhcHRlcnMvLnRlc3QodXJsKSl7XFxuICAgICAgICAgICAgdmFyIGtleSA9IGFwaXZpZXcua2V5NFxcbiAgICAgICAgfWVsc2UgaWYoL2NhdGVnb3J5Ly50ZXN0KHVybCkpe1xcbiAgICAgICAgICAgIHZhciBrZXkgPSBhcGl2aWV3LmtleTVcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBodG1sMiA9IGFwaXZpZXcuRGVjcnlwdChzYWZldHlEYXRhLGtleSk7XFxuICAgICAgICB2YXIgaHRtbDMgPSBKU09OLnBhcnNlKGh0bWwyKTsgLy9sb2coaHRtbDMpXFxuICAgICAgICByZXR1cm4gaHRtbDNcXG4gICAgfSxcXG4gICAgZ2V0c2VhcmNoaHRtbDogKHVybCx3b3JkLHBhZ2UpID0+IHtcXG4gICAgICAgIHZhciBodG1sID0gZmV0Y2godXJsLHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICBcXFwidXNlci1hZ2VudFxcXCI6IFxcXCJEYXJ0LzMuMyAoZGFydDppbylcXFwiLFxcbiAgICAgICAgICAgICAgXFxcInVzZXJpZFxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgLy9cXFwiYWNjZXB0LWVuY29kaW5nXFxcIjogXFxcImd6aXBcXFwiLFxcbiAgICAgICAgICAgICAgXFxcImNoYW5uZWxcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJ1dWlkXFxcIjogXFxcImRlNWFlZWI0OTA4YWRkYTNcXFwiLFxcbiAgICAgICAgICAgICAgXFxcInJ0aW1lXFxcIjogXFxcIjE3MzIxNzE0MzI4NjFcXFwiLFxcbiAgICAgICAgICAgICAgLy9cXFwicnRpbWVcXFwiOiBhcGl2aWV3LnQxMygpLFxcbiAgICAgICAgICAgICAgXFxcInZlcnNpb25jb2RlXFxcIjogXFxcIjM4XFxcIixcXG4gICAgICAgICAgICAgIFxcXCJzaWduXFxcIjogXFxcIjMwNTFkMjRkZDcxNGJjNDBhYmU3YTU1N2M4ODkzNjViXFxcIixcXG4gICAgICAgICAgICAgIC8vXFxcInNpZ25cXFwiOiBtZDUoJ2NvbS52by5pY2VhJythcGl2aWV3LnQxMygpK2FwaXZpZXcudDEzKCkpLFxcbiAgICAgICAgICAgICAgXFxcImN0aW1lXFxcIjogXFxcIjE3MzIxNzE0MzMxNDlcXFwiLFxcbiAgICAgICAgICAgICAgLy9cXFwiY3RpbWVcXFwiOiBhcGl2aWV3LnQxMygpLFxcbiAgICAgICAgICAgICAgXFxcInBhY2thZ2VzaWduXFxcIjogXFxcIjA3ZGFkNmFkMWNiZjY1YTRhYTU2NTk1NTE4ZTU4YmJkM2M2ZTBjZWFcXFwiLFxcbiAgICAgICAgICAgICAgXFxcInBhY2thZ2VuYW1lXFxcIjogXFxcImNvbS52by5pY2VhXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJob3N0XFxcIjogXFxcImJjZWJvc29yZy5nei5iY2Vib3MuY29tXFxcIixcXG4gICAgICAgICAgICAgIFxcXCJ2ZXJzaW9ubmFtZVxcXCI6IFxcXCIxLjMuOFxcXCJcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFwicmVsYXRpb25UeXBlXFxcIjoxLFxcXCJyZWxhdGlvbklkXFxcIjpcXFwiXFxcIixcXFwia2V5XFxcIjp3b3JkLFxcXCJwYWdlXFxcIjpwYWdlLFxcXCJhcHBWZXJzaW9uXFxcIjpcXFwiMS4zLjhcXFwiLFxcXCJhcHBDaGFubmVsXFxcIjpcXFwiXFxcIixcXFwiYXBwS2V5XFxcIjpcXFwiY29tLnZvLmljZWFcXFwiLFxcXCJjbGllbnRUaW1lXFxcIjoxNzMyMTcxNDMzMTQ5LFxcXCJkZXZpY2VCcmFuZFxcXCI6XFxcIlJlZG1pXFxcIixcXFwiZGV2aWNlVHlwZVxcXCI6XFxcIjIyMDIxMjExUkNcXFwiLFxcXCJpcEFkZHJcXFwiOlxcXCIxOTIuMTY4LjUwLjIwMlxcXCIsXFxcIm5ldFR5cGVcXFwiOlxcXCJtb2JpbGVcXFwiLFxcXCJwbGF0Zm9ybVxcXCI6MCxcXFwic3lzdGVtVmVyc2lvblxcXCI6XFxcIkFuZHJvaWQgMTJcXFwiLFxcXCJ1dWlkXFxcIjpcXFwiZGU1YWVlYjQ5MDhhZGRhM1xcXCIsXFxcInVzZXJJZFxcXCI6XFxcIlxcXCJ9KSxcXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgfSk7IC8vbG9nKGh0bWwpXFxuICAgICAgICB2YXIgaHRtbDEgPSBKU09OLnBhcnNlKGh0bWwpXFxuICAgICAgICB2YXIgdG9rZW4gPSBodG1sMS5zYWZldHkudG9rZW47IC8vbG9nKHRva2VuKVxcbiAgICAgICAgdmFyIHNhZmV0eURhdGEgPSBodG1sMS5zYWZldHlEYXRhOyAvL2xvZyhzYWZldHlEYXRhKVxcbiAgICAgICAgdmFyIGh0bWwyID0gYXBpdmlldy5EZWNyeXB0KHNhZmV0eURhdGEsJ08wQlhNU1JJJyk7XFxuICAgICAgICB2YXIgaHRtbDMgPSBKU09OLnBhcnNlKGh0bWwyKTsgLy9sb2coaHRtbDMpXFxuICAgICAgICByZXR1cm4gaHRtbDNcXG4gICAgfSxcXG4gICAgZ2V0aHRtbDE6ICh1cmwscGFyYW1zKSA9PiB7XFxuICAgICAgICB2YXIgaHRtbCA9IGZldGNoKHVybCx7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgLy9cXFwidXNlci1hZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTA2LjAuMC4wIFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgICAgLy9cXFwiY29udGVudC10eXBlXFxcIjogXFxcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxcXCIsXFxuICAgICAgICAgICAgICAvL1xcXCJhY2NlcHQtZW5jb2RpbmdcXFwiOiBcXFwiZ3ppcFxcXCIsXFxuICAgICAgICAgICAgICAvL1xcXCJjb250ZW50LWxlbmd0aFxcXCI6IFxcXCIzODdcXFwiLFxcbiAgICAgICAgICAgICAgXFxcInJlZmVyZXJcXFwiOiBcXFwiaHR0cHM6Ly9hcGstbGIuaWlzemcuY29tL1xcXCIsXFxuICAgICAgICAgICAgICAvL1xcXCJob3N0XFxcIjogXFxcImFway1sYi1wbGF5LmZvZGV4aW4uY29tXFxcIlxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogJ3ZlcnNpb249MS4xLjcmcGFyYW1zPScrcGFyYW1zLFxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICB9KTsgbG9nKGh0bWwpXFxuICAgICAgICB2YXIgaHRtbDEgPSBKU09OLnBhcnNlKGh0bWwpXFxuICAgICAgICByZXR1cm4gaHRtbDFcXG4gICAgfSxcXG4gICAgbGF6eTogKGlucHV0KSA9PiB7XFxuICAgICAgICB2YXIgbGF6eSA9ICQoaW5wdXQpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBmdW5jdGlvbiBnZXRVbml4VGltZXN0YW1wKCkge1xcbiAgICAgICAgICAgICAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xcbiAgICAgICAgICAgICAgICAvLyDojrflj5blubTmnIjml6Xml7bliIbvvIznoa7kv53np5Llkozmr6vnp5Lpg73kuLogMFxcbiAgICAgICAgICAgICAgICBub3cuc2V0U2Vjb25kcygwLCAwKTtcXG4gICAgICAgICAgICAgICAgLy8g6I635Y+WIDEwIOS9jSBVbml4IOaXtumXtOaIs1xcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBNYXRoLmZsb29yKG5vdy5nZXRUaW1lKCkgLyAxMDAwKTtcXG4gICAgICAgICAgICAgICAgLy8g5by65Yi26L2s5o2i5Li65a2X56ym5Liy5ZCO6L+U5ZueXFxuICAgICAgICAgICAgICAgIHJldHVybiB0aW1lc3RhbXAudG9TdHJpbmcoKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIHBhcmFtczEgPSBKU09OLnN0cmluZ2lmeSh7XFxcIm1cXFwiOlxcXCJwbGF5XFxcIixcXFwiYWlkXFxcIjpiYXNlNjREZWNvZGUoaW5wdXQpLnNwbGl0KCdfJylbMl0sXFxcInBpZFxcXCI6YmFzZTY0RGVjb2RlKGlucHV0KS5zcGxpdCgnXycpWzNdLFxcXCJ0XFxcIjptZDUobWQ1KCdwbGF5JytiYXNlNjREZWNvZGUoaW5wdXQpLnNwbGl0KCdfJylbMl0rYmFzZTY0RGVjb2RlKGlucHV0KS5zcGxpdCgnXycpWzNdKSsnMTQ0OTY4Mjk0OScrZ2V0VW5peFRpbWVzdGFtcCgpKX0pOyAvL2xvZyhwYXJhbXMxKSBcXG4gICAgICAgICAgICB2YXIgcnNha2V5ID0gJ01JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdFN3b3RidTdVRW9uVUN6Q3NKWFBTcFlPcmt1TW5weWsyNFBCUXNra2N3WVpzVVR3Ymg4WTl2SHVQSWVyaDNBZlpaMWx1RlY5eVBDMjgyeGlOWCsvK0lBeldIV0c2TStkV21KbkR5eWJlVVZUaDdIN1lWTTMxZVNSOVRGVDRWQVNyN05mdGdDdjdoZlMybVZOTDBzeFJyTVNQU1hhNlNiamtJZVc0R1RwWXBXS2VoS2ZhcXJnRHdWZkZDdTY3b2dMOUpMSWREeHZXdGhJZTQydVVNbno0SUkxL3BkclB0V1J1MENEamF4dnNMejI2VWRNR1NMM2dGRWxvYUpocDRLdUlQSzRSbEl4Kzl0MjhIMDArM0lwZVZpcm1pYXlEWUpRZTFjamlES29FUlNrTHViSlJEMnlqNVgzdHJHbWdYZXgzUWtjUnR4NVVOWFlrTEV1RU1OR2l3SURBUUFCJzsgXFxuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IHJzYUVuY3J5cHQocGFyYW1zMSwgcnNha2V5KTsgLy9sb2cocGFyYW1zKVxcbiAgICAgICAgICAgIHZhciBodG1sID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKS5nZXRodG1sMSgnaHR0cHM6Ly9hcGstbGItcGxheS5mb2RleGluLmNvbS9hcGkyL3dlYi9pbmRleC5waHAvP3I9YXBpJyxwYXJhbXMpXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSBodG1sLmRhdGEudXJsXFxuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgdXJsczogW3BsYXldLFxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiBbe1xcXCJyZWZlcmVyXFxcIjogXFxcImh0dHBzOi8vYXBrLWxiLmlpc3pnLmNvbS9cXFwifV1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgICAgIHJldHVybiBsYXp5XFxuICAgIH0sXFxuICAgIHNldERlc2M6IChkLCBkZXNjLCBudW0pID0+IHtcXG4gICAgICAgIC8vbG9nKGRlc2MpXFxuICAgICAgICBpZiAoZGVzYyA9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBkZXNjID0gZGVzYy5jb25zdHJ1Y3RvciA9PSBBcnJheSA/IGRlc2Muam9pbignPGJyPicpIDogZGVzYztcXG4gICAgICAgIGlmIChkZXNjLnJlcGxhY2UoLyg8YnI+fFxcXFxzK3w8XFxcXC8/cD58Jm5ic3A7KS9nLCAnJykubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICByZXR1cm47XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCBtYXJrID0gJ2Rlc2MnO1xcbiAgICAgICAgbnVtID0gdHlwZW9mKG51bSkgPT0gJ3VuZGVmaW5lZCcgPyAxMDAgOiBudW1cXG4gICAgICAgIGRlc2MgPSBkZXNjLnN0YXJ0c1dpdGgoJ+OAgOOAgCcpID8gZGVzYyA6ICfjgIDjgIAnICsgZGVzYztcXG4gICAgICAgIGRlc2MgPSBkZXNjLnJlcGxhY2UoLycvZywgXFxcIiYjMzk7XFxcIik7XFxuICAgICAgICBkZXNjID0gZGVzYy5yZXBsYWNlKC9cXFxcclxcXFxuL2csIFxcXCI8YnI+XFxcIik7XFxuICAgICAgICBkZXNjID0gZGVzYy5yZXBsYWNlKC9cXFxcci9nLCBcXFwiPGJyPlxcXCIpO1xcbiAgICAgICAgZGVzYyA9IGRlc2MucmVwbGFjZSgvXFxcXG4vZywgXFxcIjxicj5cXFwiKTtcXG5cXG4gICAgICAgIGZ1bmN0aW9uIHN1YnN0cihzdHIsIG1heExlbmd0aCkge1xcbiAgICAgICAgICAgIGxldCBsZW4gPSAwO1xcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGlmIChzdHIuY2hhckNvZGVBdChpKSA+IDI1NSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGVuICs9IDI7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsZW4rKztcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAobGVuID4gbWF4TGVuZ3RoKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyLnNsaWNlKDAsIGkpICsgJy4uLic7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIHN0cjtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBzZGVzYyA9IHN1YnN0cihkZXNjLCBudW0pO1xcbiAgICAgICAgdmFyIGNvbG9ycyA9IHtcXG4gICAgICAgICAgICBzaG93OiBcXFwiYmxhY2tcXFwiLFxcbiAgICAgICAgICAgIGhpZGU6IFxcXCJncmV5XFxcIlxcbiAgICAgICAgfVxcbiAgICAgICAgdmFyIGxhenkgPSAkKGAjbm9Mb2FkaW5nI2ApLmxhenlSdWxlKChkYywgc2RjLCBtLCBjcykgPT4ge1xcbiAgICAgICAgICAgIHZhciBzaG93ID0gc3RvcmFnZTAuZ2V0SXRlbShtLCAnMCcpO1xcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IGZpbmRJdGVtKCdkZXNjJykudGl0bGU7XFxuICAgICAgICAgICAgdmFyIHJlID0gLyg8XFxcXC9zbWFsbD48YnI+Lio/PikuKy9nO1xcbiAgICAgICAgICAgIHZhciBleHAgPSAn5bGV5byAOic7XFxuICAgICAgICAgICAgdmFyIHJldCA9ICfmlLbotbc6JztcXG4gICAgICAgICAgICBpZiAoc2hvdyA9PSAnMScpIHtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVzYycsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJldCwgZXhwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlLCAnJDEnICsgc2RjICsgJzwvc21hbGw+JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKDxcXFxcL3NtYWxsPjxicj5cXFxcPGZvbnQgY29sb3I9XFxcIikuKj8oXFxcIj4pLywgJyQxJyArIGNzLmhpZGUgKyAnJDInKVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKG0sICcwJyk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVzYycsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGV4cCwgcmV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlLCAnJDEnICsgZGMgKyAnPC9zbWFsbD4nKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oPFxcXFwvc21hbGw+PGJyPlxcXFw8Zm9udCBjb2xvcj1cXFwiKS4qPyhcXFwiPikvLCAnJDEnICsgY3Muc2hvdyArICckMicpXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0obSwgJzEnKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIGBoaWtlcjovL2VtcHR5YFxcbiAgICAgICAgfSwgZGVzYywgc2Rlc2MsIG1hcmssIGNvbG9ycylcXG4gICAgICAgIHZhciBzYyA9IHN0b3JhZ2UwLmdldEl0ZW0obWFyaywgJzAnKSA9PSAnMCcgPyAn5bGV5byAOicgOiAn5pS26LW3Oic7XFxuICAgICAgICB2YXIgZGMgPSBzdG9yYWdlMC5nZXRJdGVtKG1hcmssICcwJykgPT0gJzAnID8gc2Rlc2MgOiBkZXNjO1xcbiAgICAgICAgdmFyIGNzID0gc3RvcmFnZTAuZ2V0SXRlbShtYXJrLCAnMCcpID09ICcwJyA/IGNvbG9ycy5oaWRlIDogY29sb3JzLnNob3c7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnJyArICc8Yj48Zm9udCBjb2xvcj1cXFwiIzA5OEFDMVxcXCI+4oi35Ymn5oOF566A5LuLXFx0PC9mb250PjwvYj4nICsgXFxcIjxzbWFsbD48YSBzdHlsZT0ndGV4dC1kZWNvcmF0aW9uOiBub25lOycgaHJlZj0nXFxcIiArIGxhenkgKyBcXFwiJz5cXFwiICsgc2MgKyAnPC9hPjwvc21hbGw+PGJyPjxmb250IGNvbG9yPVxcXCInICsgY3MgKyAnXFxcIj4nICsgYCR7ZGN9YCArICc8L3NtYWxsPicsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiAnZGVzYycsXFxuICAgICAgICAgICAgICAgIGxpbmVTcGFjaW5nOiA2LFxcbiAgICAgICAgICAgICAgICB0ZXh0U2l6ZTogMTUsXFxuICAgICAgICAgICAgICAgIGxpbmVWaXNpYmxlOiB0cnVlLFxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH1cXG59XFxuXFxuJC5leHBvcnRzID0gYXBpdmlldztcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIhuexu1wiLFwicGF0aFwiOlwiY2xhXCIsXCJydWxlXCI6XCJ2YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbChhcGl2aWV3LnN0YXRpY19hZGRyZXNzKydhcGkvbm92ZWwvbGliL2NhdGVnb3J5L2NvbmRpdGlvbi5qc29uJyk7IC8vbG9nKGh0bWwpIFxcbi8qXFxubG9nKGdldE15VmFyKCdhJywnMCcpKVxcbmxvZyhnZXRNeVZhcignYicsJzAnKSlcXG5sb2coZ2V0TXlWYXIoJ2MnLGh0bWxbZ2V0TXlWYXIoJ2EnLCcwJyldLmNhdGVnb3J5c1swXS5rZXkpKVxcbiovXFxuaWYoTVlfUEFHRSA9PSAnMScpe1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOlxcXCJibGFua19ibG9ja1xcXCJcXG59KVxcbmh0bWwuZm9yRWFjaCggKGl0ZW0saW5kZXgpID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRNeVZhcignYScsJzAnKT09aW5kZXg/IFxcXCLigJzigJxcXFwiK2l0ZW0udGl0bGUrXFxcIuKAneKAnVxcXCI6aXRlbS50aXRsZSxcXG4gICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaW5kZXgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcignYScsaW5kZXgpXFxuICAgICAgICAgICAgY2xlYXJNeVZhcignYicpXFxuICAgICAgICAgICAgY2xlYXJNeVZhcignYycpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0saW5kZXgpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6XFxcImJsYW5rX2Jsb2NrXFxcIlxcbn0pXFxuaHRtbFtnZXRNeVZhcignYScsJzAnKV0uY2F0ZWdvcnlzLmZvckVhY2goIChpdGVtLGluZGV4KSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ2InLCcwJyk9PWluZGV4PyBcXFwi4oCc4oCcXFxcIitpdGVtLm5hbWUrXFxcIuKAneKAnVxcXCI6aXRlbS5uYW1lLFxcbiAgICAgICAgdXJsOiAkKGl0ZW0ua2V5Kycjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpbmRleCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdiJyxpbmRleClcXG4gICAgICAgICAgICBwdXRNeVZhcignYycsaW5wdXQpXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgIH0saW5kZXgpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KVxcbn0pXFxufVxcbnRyeXtcXG52YXIgaHRtbCA9IGFwaXZpZXcuZ2V0aHRtbChhcGl2aWV3LnN0YXRpY19hZGRyZXNzKydhcGkvbm92ZWwvbGliL2Jvb2tzLycrZ2V0TXlWYXIoJ2MnLGh0bWxbZ2V0TXlWYXIoJ2EnLCcwJyldLmNhdGVnb3J5c1swXS5rZXkpKycvYWxsL2hvdC8nK01ZX1BBR0UrJy5qc29uJyk7IC8vbG9nKGh0bWwpIFxcbnZhciBsaXN0ID0gaHRtbC5pdGVtc1xcbmxpc3QuZm9yRWFjaCggaXRlbSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5ib29rTmFtZSsnXFxcXG4nK2l0ZW0uYXV0aG9yTmFtZSxcXG4gICAgICAgIGRlc2M6IGl0ZW0uaW50cm8sXFxuICAgICAgICBpbWc6IGFwaXZpZXcuc3RhdGljX2FkZHJlc3MraXRlbS5jb3ZlclVybCxcXG4gICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP2Jvb2tJZD0ke2l0ZW0uYm9va0lkfSNpbW1lcnNpdmVUaGVtZSNgLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGJvb2tJZDogaXRlbS5ib29rSWQsXFxuICAgICAgICAgICAgcGFnZVRpdGxlOiBpdGVtLmJvb2tOYW1lXFxuICAgICAgICB9XFxuICAgIH0pXFxufSlcXG59Y2F0Y2goZSl7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Lmm5p62XCIsXCJwYXRoXCI6XCJjbGExXCIsXCJydWxlXCI6XCJpZihNWV9QQUdFID09ICcxJyl7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfmlLbol48nLFxcbiAgICB1cmw6ICdoaWtlcjovL2NvbGxlY3Rpb24/cnVsZT0nK01ZX1JVTEUudGl0bGUsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfljoblj7InLFxcbiAgICB1cmw6ICdoaWtlcjovL2hpc3Rvcnk/cnVsZT0nK01ZX1JVTEUudGl0bGUsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pXFxudmFyIGh0bWwgPSByZXF1ZXN0KCdoaWtlcjovL2NvbGxlY3Rpb24/cnVsZT0nK01ZX1JVTEUudGl0bGUpOyAvL2xvZyhodG1sKSBcXG52YXIgaHRtbDEgPSBKU09OLnBhcnNlKGh0bWwpOyAvL2xvZyhodG1sMSlcXG4vLyDkvb/nlKggZmlsdGVyIOetm+mAieespuWQiOadoeS7tueahOmhuVxcbnZhciBmaWx0ZXJlZEl0ZW1zID0gaHRtbDEuZmlsdGVyKGl0ZW0gPT4ge1xcbiAgICAvLyDop6PmnpAgaXRlbS5wYXJhbXNcXG4gICAgbGV0IHBhcnNlZFBhcmFtcyA9IEpTT04ucGFyc2UoaXRlbS5wYXJhbXMpO1xcbiAgICAvLyDnrZvpgInmnaHku7bvvJpwYXJzZWRQYXJhbXMudGl0bGUgPT09IE1ZX1JVTEUudGl0bGUgJiYgaXRlbS5sYXN0Q2xpY2sg5a2Y5ZyoXFxuICAgIHJldHVybiBwYXJzZWRQYXJhbXMudGl0bGUgPT09IE1ZX1JVTEUudGl0bGU7XFxufSk7XFxuLy8g6YGN5Y6G562b6YCJ5ZCO55qE57uT5p6cXFxuZmlsdGVyZWRJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICBsZXQgbGFzdENsaWNrID0gaXRlbS5sYXN0Q2xpY2sgPT0gdW5kZWZpbmVkID8gJ+aXoOi2s+i/uScgOiBpdGVtLmxhc3RDbGljay5zcGxpdCgnQEAnKVswXVxcbiAgICBsZXQgcGFyc2VkUGFyYW1zID0gSlNPTi5wYXJzZShpdGVtLnBhcmFtcyk7IC8vIOWGjeasoeino+aekFxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0ubVRpdGxlLFxcbiAgICAgICAgZGVzYzogbGFzdENsaWNrICsgJ1xcXFxuJyArIGFwaXZpZXcuZm9ybWF0VGltZXN0YW1wKGl0ZW0udGltZSksIC8vIOaYvuekuuaXtumXtOaIs1xcbiAgICAgICAgaW1nOiBpdGVtLnBpY1VybCxcXG4gICAgICAgIHVybDogYGhpa2VyOi8vcGFnZS9lcmppP2Jvb2tJZD0ke0pTT04ucGFyc2UocGFyc2VkUGFyYW1zLnBhcmFtcykuYm9va0lkfSNpbW1lcnNpdmVUaGVtZSNgLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYycsXFxuICAgICAgICBleHRyYTogcGFyc2VkUGFyYW1zLnBhcmFtcyAvLyDmkLrluKYgZXh0cmEg5Y+C5pWwXFxuICAgIH0pO1xcbn0pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p1wiLFwicGF0aFwiOlwiZXJqaVwiLFwicnVsZVwiOlwianM6XFxuLypcXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBsZXQga2V5cyA9IGxpc3RNeVZhcktleXMoKTsgLy9sb2coa2V5cylcXG4gICAgZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICAgICAgY2xlYXJNeVZhcihcXFwiaGlrZXI6Ly9wYWdlL2VyamkjaW1tZXJzaXZlVGhlbWUjXFxcIik7XFxuICAgIH1cXG59KSlcXG4qL1xcbnZhciBhcGl2aWV3ID0gJC5yZXF1aXJlKFxcXCJoYW5zaHVcXFwiKTtcXG52YXIgZGF0YSA9IGFwaXZpZXcuZ2V0aHRtbChhcGl2aWV3LnN0YXRpY19hZGRyZXNzKydhcGkvbm92ZWwvYm9vay9pbmZvLycrTVlfUEFSQU1TLmJvb2tJZCsnLmpzb24nKTtcXG52YXIgZCA9IFtdO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBkYXRhLmJvb2tOYW1lICsgJ1xcXFxu5L2c6ICF77yaJyArIGRhdGEuYXV0aG9yTmFtZSxcXG4gICAgZGVzYzogJ+exu+Wei++8micgKyBkYXRhLmNhdGVnb3J5TmFtZSArICdcXFxcbuacgOaWsO+8micgKyBkYXRhLmxhdGVzdENoYXB0ZXJOYW1lLFxcbiAgICBwaWNfdXJsOiBhcGl2aWV3LnN0YXRpY19hZGRyZXNzICsgZGF0YS5jb3ZlclVybCxcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBncmFkaWVudDogdHJ1ZVxcbiAgICB9XFxufSlcXG5hcGl2aWV3LnNldERlc2MoZCxkYXRhLmludHJvKVxcbnZhciBodG1sID0gYXBpdmlldy5nZXRodG1sKGFwaXZpZXcuc3RhdGljX2FkZHJlc3MrJy9hcGkvbm92ZWwvYm9vay9jaGFwdGVycy8nK01ZX1BBUkFNUy5ib29rSWQrJy5qc29uJyk7IFxcbnZhciBsaXN0ID0gaHRtbC5jaGFwdGVyc1xcblxcbi8qKlxcbiAqIOWIhumhteWHveaVsO+8jOWwhuaVsOe7hOaMieaMh+WumuaVsOmHj+WIhuaIkOWkmuS4qumhtVxcbiAqIEBwYXJhbSB7QXJyYXl9IGRhdGEgLSDpnIDopoHliIbpobXnmoTmlbDnu4RcXG4gKiBAcGFyYW0ge251bWJlcn0gaXRlbXNQZXJQYWdlIC0g5q+P6aG15pi+56S655qE6aG555uu5pWw6YePXFxuICogQHJldHVybnMge0FycmF5fSAtIOWIhumhteWQjueahOS6jOe7tOaVsOe7hO+8jOavj+S4quWtkOaVsOe7hOS4uuS4gOmhtVxcbiAqL1xcbmZ1bmN0aW9uIHBhZ2luYXRlQXJyYXkoZGF0YSwgaXRlbXNQZXJQYWdlKSB7XFxuICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLmNlaWwoZGF0YS5sZW5ndGggLyBpdGVtc1BlclBhZ2UpO1xcbiAgICBjb25zdCBwYWdpbmF0ZWRBcnJheSA9IFtdO1xcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRvdGFsUGFnZXM7IGkrKykge1xcbiAgICAgICAgcGFnaW5hdGVkQXJyYXkucHVzaChkYXRhLnNsaWNlKGkgKiBpdGVtc1BlclBhZ2UsIChpICsgMSkgKiBpdGVtc1BlclBhZ2UpKTtcXG4gICAgfVxcbiAgICByZXR1cm4gcGFnaW5hdGVkQXJyYXk7XFxufVxcblxcbi8vIOekuuS+i+eUqOazlVxcbnZhciBpdGVtc1BlclBhZ2UgPSA1MDsgLy8g5q+P6aG15pi+56S655qE5pWw6YePXFxudmFyIGxpc3RzID0gcGFnaW5hdGVBcnJheShsaXN0LCBpdGVtc1BlclBhZ2UpOyAvLyDliIbpobXlkI7nmoTnu5PmnpxcXG5cXG52YXIgdGFicyA9IFtdXFxuLy8g6YGN5Y6G5q+P5LiA6aG155qE5pWw5o2uXFxubGlzdHMuZm9yRWFjaCgocGFnZSwgaW5kZXgpID0+IHtcXG4gICAgdGFicy5wdXNoKGDnrKwke2luZGV4ICsgMX3pobVgKTtcXG59KVxcblxcbmZ1bmN0aW9uIHNldFRhYnModGFicywgdmFyaSkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IChnZXRWYXIoJ3Noc29ydCcpID09ICcxJykgPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjRkYwMDAwXFxcIj7pgIbluo88L3NwYW4+PC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMWFhZDE5XFxcIj7mraPluo88L3NwYW4+PC9iPicsXFxuICAgICAgICB1cmw6IGBAbGF6eVJ1bGU9LmpzOmxldCBjb25mID0gZ2V0VmFyKCdzaHNvcnQnKTtpZihjb25mPT0nMScpe3B1dFZhcih7a2V5OidzaHNvcnQnLCB2YWx1ZTonMCd9KTt9ZWxzZXtwdXRWYXIoe2tleTonc2hzb3J0JywgdmFsdWU6JzEnfSl9O3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5o6S5bqP5oiQ5YqfJ2AsXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0pXFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFicy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHVybCA9IFxcXCIjbm9Mb2FkaW5nI0BsYXp5UnVsZT0uanM6cHV0TXlWYXIoJ1xcXCIgKyB2YXJpICsgXFxcIicsICdcXFwiICsgaSArIFxcXCInKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5Yqf77yBJzsnI25vSGlzdG9yeSNoaWtlcjovL2VtcHR5J1xcXCI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcih2YXJpLCAnMCcpID09IGkgPyAn4oCc4oCcJyArIHRhYnNbaV0gKyAn4oCd4oCdJyA6IHRhYnNbaV0sXFxuICAgICAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG5cXG5mdW5jdGlvbiBzZXRMaXN0cyhsaXN0cywgaW5kZXgpIHtcXG4gICAgdmFyIGxpc3QgPSBsaXN0c1tpbmRleF07XFxuICAgIGlmIChnZXRWYXIoJ3Noc29ydCcpID09ICcxJykge1xcbiAgICAgICAgdmFyIGxpc3QgPSBsaXN0c1tpbmRleF0ucmV2ZXJzZSgpO1xcbiAgICB9XFxuICAgIGZvciAodmFyIGogaW4gbGlzdCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogbGlzdFtqXS5jaGFwdGVyTmFtZSxcXG4gICAgICAgICAgICB1cmw6IGFwaXZpZXcubGF6eShsaXN0W2pdLmNoYXB0ZXJJZCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLFxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG5cXG5zZXRUYWJzKHRhYnMsIE1ZX1VSTCk7XFxuc2V0TGlzdHMobGlzdHMsIGdldE15VmFyKE1ZX1VSTCwgJzAnKSk7XFxuXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmn6XnnIvmm7TlpJpcIixcInBhdGhcIjpcImNrZ2RcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudmFyIGFwaXZpZXcgPSAkLnJlcXVpcmUoXFxcImhhbnNodVxcXCIpO1xcbnZhciBodG1sID0gYXBpdmlldy5nZXRodG1sKGFwaXZpZXcuc3RhdGljX2FkZHJlc3MrJ2FwaS9ub3ZlbC9saWIvJytNWV9QQVJBTVMuaWQrJy9saXN0LycrTVlfUEFHRSsnLmpzb24nKTsgXFxudmFyIGxpc3QgPSBodG1sLml0ZW1zXFxubGlzdC5mb3JFYWNoKCBpdGVtID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLmJvb2tOYW1lKydcXFxcbicraXRlbS5jYXRlZ29yeU5hbWUsXFxuICAgICAgICBkZXNjOiBpdGVtLmF1dGhvck5hbWUrJ1xcXFxuJytpdGVtLmxhdGVzdENoYXB0ZXJOYW1lLFxcbiAgICAgICAgaW1nOiBhcGl2aWV3LnN0YXRpY19hZGRyZXNzK2l0ZW0uY292ZXJVcmwsXFxuICAgICAgICB1cmw6IGBoaWtlcjovL3BhZ2UvZXJqaT9ib29rSWQ9JHtpdGVtLmJvb2tJZH0jaW1tZXJzaXZlVGhlbWUjYCxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBib29rSWQ6IGl0ZW0uYm9va0lkLFxcbiAgICAgICAgICAgIHBhZ2VUaXRsZTogaXRlbS5ib29rTmFtZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxuc2V0UmVzdWx0KGQpXCJ9LHtcImNvbF90eXBlXCI6XCJ0ZXh0XzFcIixcIm5hbWVcIjpcIuiOt+WPluWIhuexu+WktOmDqFwiLFwicGF0aFwiOlwiY2xhc3NpY0hlYWRlclwiLFwicnVsZVwiOlwianM6XFxubGV0IGQgPSBbXTtcXG5cXG5mdW5jdGlvbiBwdXRLZXlJbnRvTWFwKGtleSwgdmFsdWUpIHtcXG4gICAgY29uc3Qga2V5TWFwID0gSlNPTi5wYXJzZShnZXRWYXIoXFxcImNyeXB0b3JfYWxsX2tleV9NYXBcXFwiLCBcXFwie31cXFwiKSk7XFxuICAgIGtleU1hcFtrZXldID0gdmFsdWU7XFxuICAgIHB1dFZhcihcXFwiY3J5cHRvcl9hbGxfa2V5X01hcFxcXCIsIEpTT04uc3RyaW5naWZ5KGtleU1hcCkpO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkZXJGcm9tSlNPTk9iamVjdChvYmopIHtcXG5cXG4gICAgdmFyIGdldFJhbmdlQ29sb3JzID0gZnVuY3Rpb24oKSB7XFxuICAgICAgICByZXR1cm4gKCcwMDAwMCcgKyAoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCA8PCAwKS50b1N0cmluZygxNikpLnN1YnN0cigtNik7XFxuICAgIH1cXG4gICAgdmFyIHRpbmRleCA9IHN0b3JhZ2UwLmdldE15VmFyKCd0aW5kZXgnLCAwKVxcbiAgICB2YXIgdGl0bGVzID0gW1xcXCLpppbpobVcXFwiLCBcXFwi5YiG57G7XFxcIiwgXFxcIuS5puaetlxcXCJdXFxuICAgIHZhciBpbWdzID0gW1xcXCJodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvSWRsVXYudGgucG5nXFxcIiwgXFxcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy9JZHFsay50aC5wbmdcXFwiLCBcXFwiaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL0lkMjlKLnRoLnBuZ1xcXCJdXFxuICAgIHRpdGxlcyA9IHRpdGxlcy5tYXAoKHgsIGkpID0+IHtcXG4gICAgICAgIHZhciB0aXRsZSA9IGkgPT0gdGluZGV4ID8gYDxiPjxmb250IGNvbG9yPVxcXCIjOTM3MERCXFxcIj4ke3h9PC9mb250PjwvYj5gIDogeFxcbiAgICAgICAgcmV0dXJuIHRpdGxlXFxuICAgIH0pXFxuICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgdmFyIG15dGl0bGUgPSB0aXRsZXNbaV07XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IG15dGl0bGUsXFxuICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAucHV0TXlWYXIoJ3RpbmRleCcsIGkpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGkpLFxcbiAgICAgICAgICAgICAgICBpbWc6IGltZ3NbaV0sXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiaWNvbl9zbWFsbF8zXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIFxcbiAgICBmb3IgKGxldCBrZXkgaW4gb2JqKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBrZXkgPT0gZ2V0VmFyKFxcXCJjcnlwdG9yXFxcIiwgT2JqZWN0LmtleXMob2JqKVswXSkgPyBcXFwi4oCc4oCcXFxcIiArIGtleSArIFxcXCLigJ3igJ1cXFwiIDoga2V5LFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoa2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiY3J5cHRvclxcXCIsIGtleSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiY3J5cHRvcl9jdXJfaW5kZXhcXFwiLCBrZXkpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBrZXkpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICB9KTtcXG4gICAgbGV0IGtleSA9IGdldFZhcihcXFwiY3J5cHRvclxcXCIsIE9iamVjdC5rZXlzKG9iailbMF0pO1xcbiAgICBwdXRWYXIoXFxcImNyeXB0b3JfY3VyX2luZGV4XFxcIiwga2V5KTtcXG4gICAgZ2V0TmV4dEhlYWRlckZyb21KU09OQXJyYXkoa2V5LCBvYmpba2V5XSk7XFxuICAgIHJldHVybiBkO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXROZXh0SGVhZGVyRnJvbUpTT05BcnJheShrZXksIGFycmF5KSB7XFxuICAgIGlmIChhcnJheSA9PSB1bmRlZmluZWQgfHwgYXJyYXkubGVuZ3RoID09IDApIHtcXG4gICAgICAgIHJldHVybjtcXG4gICAgfVxcbiAgICBsZXQgbmV4dEhlYWRlciA9IHt9O1xcbiAgICBsZXQgZGVmYXVsdFZhbHVlID0gXFxcIlxcXCI7XFxuICAgIGRlZmF1bHRWYWx1ZSA9IGFycmF5WzBdO1xcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFycmF5WzBdKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IE9iamVjdC5rZXlzKGFycmF5WzBdKVswXTtcXG4gICAgfVxcbiAgICBwdXRLZXlJbnRvTWFwKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCBnZXRWYXIoXFxcImNyeXB0b3JAQFxcXCIgKyBrZXksIGRlZmF1bHRWYWx1ZSkpXFxuICAgIHB1dFZhcihcXFwiY3J5cHRvcl9jdXJfaW5kZXhcXFwiLCBrZXkgKyBcXFwiQEBcXFwiICsgZ2V0VmFyKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCBkZWZhdWx0VmFsdWUpKTtcXG4gICAgZm9yIChsZXQgdmFsdWUgb2YgYXJyYXkpIHtcXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBPYmplY3RdJykge1xcbiAgICAgICAgICAgIC8vIGxvZyhcXFwidmFsdWVLZXlzOiBcXFwiK0pTT04uc3RyaW5naWZ5KE9iamVjdC5rZXlzKHZhbHVlKVswXSkpXFxuICAgICAgICAgICAgbGV0IHZhbHVlS2V5ID0gT2JqZWN0LmtleXModmFsdWUpWzBdO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB2YWx1ZUtleSA9PSBnZXRWYXIoXFxcImNyeXB0b3JAQFxcXCIgKyBrZXksIGRlZmF1bHRWYWx1ZSkgPyBcXFwi4oCc4oCcXFxcIiArIHZhbHVlS2V5ICsgXFxcIuKAneKAnVxcXCIgOiB2YWx1ZUtleSxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKCh2YWx1ZUtleSwga2V5KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBwdXRLZXlJbnRvTWFwKGtleSwgdmFsdWUpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlNYXAgPSBKU09OLnBhcnNlKGdldFZhcihcXFwiY3J5cHRvcl9hbGxfa2V5X01hcFxcXCIsIFxcXCJ7fVxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlNYXBba2V5XSA9IHZhbHVlO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiY3J5cHRvcl9hbGxfa2V5X01hcFxcXCIsIEpTT04uc3RyaW5naWZ5KGtleU1hcCkpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgcHV0VmFyKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCB2YWx1ZUtleSk7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImNyeXB0b3JfY3VyX2luZGV4XFxcIiwga2V5ICsgXFxcIkBAXFxcIiArIHZhbHVlS2V5KTtcXG4gICAgICAgICAgICAgICAgICAgIHB1dEtleUludG9NYXAoXFxcImNyeXB0b3JAQFxcXCIgKyBrZXksIGdldFZhcihcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgXFxcImRlZmF1bHRWYWx1ZVxcXCIpKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICB9LCB2YWx1ZUtleSwga2V5KSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIG5leHRIZWFkZXJbdmFsdWVLZXldID0gdmFsdWVbdmFsdWVLZXldO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdmFsdWUgPT0gZ2V0VmFyKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCBkZWZhdWx0VmFsdWUpID8gXFxcIuKAnOKAnFxcXCIgKyB2YWx1ZSArIFxcXCLigJ3igJ1cXFwiIDogdmFsdWUsXFxuICAgICAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodmFsdWUsIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gcHV0S2V5SW50b01hcChrZXksIHZhbHVlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5TWFwID0gSlNPTi5wYXJzZShnZXRWYXIoXFxcImNyeXB0b3JfYWxsX2tleV9NYXBcXFwiLCBcXFwie31cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5TWFwW2tleV0gPSB2YWx1ZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImNyeXB0b3JfYWxsX2tleV9NYXBcXFwiLCBKU09OLnN0cmluZ2lmeShrZXlNYXApKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgdmFsdWUpO1xcbiAgICAgICAgICAgICAgICAgICAgcHV0S2V5SW50b01hcChcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgZ2V0VmFyKFxcXCJjcnlwdG9yQEBcXFwiICsga2V5LCBcXFwiZGVmYXVsdFZhbHVlXFxcIikpXFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImNyeXB0b3JfY3VyX2luZGV4XFxcIiwga2V5ICsgXFxcIkBAXFxcIiArIHZhbHVlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgfSwgdmFsdWUsIGtleSksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgfSk7XFxuICAgIGlmIChuZXh0SGVhZGVyICE9PSB1bmRlZmluZWQgJiYgbmV4dEhlYWRlci5sZW5ndGggIT0gMCkge1xcbiAgICAgICAgZ2V0TmV4dEhlYWRlckZyb21KU09OQXJyYXkoa2V5ICsgXFxcIkBAXFxcIiArIGdldFZhcihcXFwiY3J5cHRvckBAXFxcIiArIGtleSwgZGVmYXVsdFZhbHVlKSwgbmV4dEhlYWRlcltnZXRWYXIoXFxcImNyeXB0b3JAQFxcXCIgKyBrZXksIGRlZmF1bHRWYWx1ZSldKTtcXG4gICAgfVxcbn1cXG5cXG5sZXQgaGVhZGVyID0ge1xcbiAgICAvKipcXG4gICAgICog6I635Y+W5YiG57G75aS06YOo77yM6L+U5Zue6KeG55WMIHNldFJlc3VsdCDnlKjnmoTmlbDnu4RcXG4gICAgICovXFxuICAgIGdldDogZnVuY3Rpb24ob2JqKSB7XFxuICAgICAgICBsZXQgcmVzdWx0ID0gZ2V0SGVhZGVyRnJvbUpTT05PYmplY3Qob2JqKTtcXG4gICAgICAgIC8vbG9nKFxcXCLjgJDlrZDpobXpnaLjgJFcXFwiICsgSlNPTi5zdHJpbmdpZnkocmVzdWx0KSlcXG4gICAgICAgIHJldHVybiByZXN1bHQ7XFxuICAgIH0sXFxuICAgIC8qKlxcblxcdCAgICog6aG16Z2i5YWz6Zet5pe26ZyA6KaB5rOo5YaM55qE55Sf5ZG95ZGo5pyf77yM5byV5YWl5L6d6LWW5ZCO5ZyoIGFkZExpc3RlbmVyIOS4reiwg+eUqOWNs+WPr1xcblxcdCAgICog5L6L77yaXFxuXFx0ICAgICBjb25zdCB7IGhlYWRlciB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY2xhc3NpY0hlYWRlclxcXCIpO1xcblxcdCAgICAgYWRkTGlzdGVuZXIoXFxcIm9uQ2xvc2VcXFwiLCAkLnRvU3RyaW5nKChoZWFkZXIpID0+IHtcXG4gICAgICAgICAgaGVhZGVyLm9uQ2xvc2UoKTtcXG4gICAgICAgIH0sIGhlYWRlcikpO1xcblxcdCAgICovXFxuICAgIG9uQ2xvc2U6IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgLy8gcHV0VmFyKFxcXCJjcnlwdG9yXFxcIiwgXFxcIue8lueggVxcXCIpO1xcbiAgICAgICAgLy8gcHV0VmFyKFxcXCJjcnlwdG9yQEDnvJbnoIFcXFwiLCBcXFwi5L2b5puwXFxcIik7XFxuICAgICAgICBsZXQgYWxsS2V5QXJyID0gT2JqZWN0LmtleXMoSlNPTi5wYXJzZShnZXRWYXIoXFxcImNyeXB0b3JfYWxsX2tleV9NYXBcXFwiLCBcXFwie31cXFwiKSkpO1xcbiAgICAgICAgZm9yIChsZXQgaSBpbiBhbGxLZXlBcnIpIHtcXG4gICAgICAgICAgICBjbGVhclZhcihhbGxLZXlBcnJbaV0pO1xcbiAgICAgICAgICAgIC8vIGxvZyhcXFwi44CQ5riF55CG5ZCO44CRXFxcIisgYWxsS2V5QXJyW2ldICsgXFxcIjogXFxcIitKU09OLnN0cmluZ2lmeShnZXRWYXIoYWxsS2V5QXJyW2ldLCBcXFwiXFxcIikpKVxcbiAgICAgICAgfVxcbiAgICAgICAgY2xlYXJWYXIoXFxcImNyeXB0b3JcXFwiKVxcbiAgICAgICAgY2xlYXJWYXIoXFxcImNyeXB0b3JfYWxsX2tleV9NYXBcXFwiKVxcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICog6I635Y+W5b2T5YmN5bey6YCJ5aSa57qn5YiG57G777yM6L+U5Zue55qE5pWw5o2u5qC85byP5Li677ya5LiA57qn5YiG57G7QEDkuoznuqfliIbnsbtAQC4uLu+8jOWPr+iHquihjOWBmuaYoOWwhOiOt+WPliB1cmxcXG4gICAgICovXFxuICAgIGdldEN1cnJlbnRJbmRleDogZnVuY3Rpb24oKSB7XFxuICAgICAgICByZXR1cm4gZ2V0VmFyKFxcXCJjcnlwdG9yX2N1cl9pbmRleFxcXCIsIFxcXCJcXFwiKTtcXG4gICAgfVxcbn1cXG4kLmV4cG9ydHMuaGVhZGVyID0gaGVhZGVyXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuLyoqXFxuICogMS4g5byV5YWl5aS06YOo5L6d6LWWXFxuICovXFxuY29uc3QgeyBoZWFkZXIgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NsYXNzaWNIZWFkZXJcXFwiKTtcXG4vKipcXG4gKiAyLiDms6jlhozlhbPpl63pobXpnaLnlJ/lkb3lkajmnJ9cXG4gKi9cXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKGhlYWRlcikgPT4ge1xcbiAgaGVhZGVyLm9uQ2xvc2UoKTtcXG59LCBoZWFkZXIpKTtcXG5cXG4vKipcXG4gKiAzLiDlh4blpIflpb3liIbnsbvmlbDmja5cXG4gKi9cXG5sZXQgY2xhc3NpYyA9IHtcXG4gICAgXFxcIue8lueggVxcXCI6IFtcXFwi5L2b5puwXFxcIiwgXFxcIlVuaWNvZGVcXFwiLCBcXFwiQmFzZTY0XFxcIiwgXFxcIkFTQ0lJXFxcIl0sXFxuICAgIFxcXCLliqDlr4ZcXFwiOiBbe1xcbiAgICAgICAgICAgIFxcXCJBRVNcXFwiOiBbXFxcIlBrY3M3XFxcIiwgXFxcIlBrY3M1XFxcIl1cXG4gICAgICAgIH0sXFxuICAgICAgICBcXFwiUlNBXFxcIixcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBcXFwiREVTXFxcIjogW1xcXCJQa2NzNVxcXCJdXFxuICAgICAgICB9LFxcbiAgICBdXFxufVxcblxcbi8qKlxcbiAqIDQuIOiOt+WPluinhueVjOWIhuexu+WktOmDqFxcbiAqL1xcbmQgPSBoZWFkZXIuZ2V0KGNsYXNzaWMpXFxuLyoqXFxuICogNS4g6I635Y+W5b2T5YmN6YCJ5oup55qE5aSa57qn5YiG57G7XFxuICovXFxubG9nKGhlYWRlci5nZXRDdXJyZW50SW5kZXgoKSlcIn1dIiwiaWNvbiI6ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSW9BQUFDS0NBWUFBQUIxaDlKa0FBQUFBWE5TUjBJQXJzNGM2UUFBQUFSelFrbFVDQWdJXG5DSHdJWklnQUFCcVZTVVJCVkhpYzdaMTVrQnpYZWRoLzMrdnVtYjBYdXpnWEFBa1FCSGdBa0hqTFBDSUpsR3pSUEUyQ29pTEpkaW1XXG5YT1U0UnlWeUplVzRVcFdra2ppV1pWZWlxc1NTS29sTGlsSlIyVlNLb0hsS01pVlJwbWhTWkNpQ04wV0tCRURjdTFnc0ZyczdWM2UvXG5MMys4MmQyWm5kbWpaMmYyTVB0WEJTNm5wOTh4L2I3KzN2ZSs5NzMzSUNVbEpTVWxKU1VsSlNVbEpTVWxKU1ZsSVhqTFhZR1VPZWtHXG5kZ0p0d1BsbHJrdktLbUFkc0JmSUxuZEZVbFkrR2VBeW5KWkpTWm1YWFN5RHNNaFNGemdYK2NmdjNtNGpiemZDTml1NndZQllDeUwwXG5nbTRFczBIVittSUVMR0JBcmJJNlAydUVtRUhRMDZLTVdzQVkxRm85YlREdkdUOSt2ZjNXQncvUDhxaDJBMGVCc2RhMnlEVExLaWhqXG5qOXl6VjVCYkZMMVJrSnVBamN0Wm54WElhVUdlVnVWcEZmdjk3anNPdkZyeDNTN2dGRXNrTEVzdUtQbUg3cnNvOXVKUG8zd1daNkNsXG5MQlNSVjhCKzI0djl2MnkvNnp1SGdNdUJkNEZpeTR0dWRRRUErcU45L3ZoRTMxMkNmQUc0aFhSWXZsZ2lnWWZQallmL2ErOFh2dmZ1XG55RVRwbFZZWDJQSUdHMzdzMWg0dDlYd1psVDlCdUFRd3JTN3pmWUFCTG0vUCtKLzYvRzNiZzVQblMyKy8rczY1TTYwc3NLVWFaZUt4XG51MjlWYS80bnNMbVY1YnpmaVNJN09KcXp2N0h0c3cvOWRhdkthSW1nakJ5NGUwMFF5RmRBUHRlSy9GUHFvU3BpdnRyaGQveSszUEsvXG5KNXFkZTlNRnhka2ovZmNMM05Qc3ZGUG1SK0JBUitmWlQ4bk5UMGJOekxlcDlvTCthSjgvUHA0S3lYS2ljRTl1b3Y5Ky9kRSt2NW41XG5ObFZRSmliNnZpV1NDc2x5bzNCUExyZjJLODNNczJtQ012N0kvaStCZktaWithVXNEbFg5eDY1Tm1rTlRiSlR4Ui9iL012QTkwcUh2XG55a0t4eHVPbWp0c2VlSGF4V1MxYVVNNDljbnVmVDl2cm9Kc1dtMWRLODFGNE42WjQ3Wm83SGgxWlRENkwxZ0FlMlQ5S2hXVGxJckREXG50ZEdpODJtY2lVZnV2a1l4UHlWMXlhOW9CR0lzTjNUZTljRHpqZWF4S0kyaW1EOGtGWklWajRLbmh2K3dtRHdhMWlqbi8rcXVTejNmXG5mME4xWmNXMHBNeUdxc0tlN2pzT3ZORkk2b1kxaXVmNVgweUZaRFVoQXZMUEdrM2RzS0FvL0dxamFWT1dCN09JTm10SVVNNC9mTzlsXG53TFpHQzAxWkhoUzI1UisvZTNzamFSc1NGR1AwK2tiU3BTdy9zVFg3R2tuWFdOZWoybEJoS2N1UEtnMjk1STBKaXBoVW82eFNoS1VVXG5GRTA5c2FzV1lXbHNsUEZINzlzRTlEWlNXTW9LUU9rZE9YRDNtcVRKR3RBb1lhcE5WamxCSnJsV2FTQUtTbEpCYVNtQ3RQWGg5ZTlCXG4vQ3pSMEVFb0REdS9hdlBLU055R3FhQ3NNS1JqUGUwZitqZElwM3ZNUWZFYythZi9BUEpEVFN0RGxkWjNQV3ExTFdtYUpVZDg4TEpJXG4wQW1tcWFHakxjZjBYSVIwRHVDbTRRVEo5dUd0MmRYY01zUWtGcFRFVDFHTVdVTlQxZUM4SlphbktReGdFQkZVREdKODhOcVFvQk1KXG51cEJNTndTZFNLWUhDYnFka1BpZDZNUUp3c09Qb2NWRnhlMHNHV0tDMm90ZWM3ZEZVV3pyQlFXMEwzbWFlUkJCTXIzdW44a2kyUzd3XG5PMXpqK3gxSTBBVkJKeWJUQlo3N3EzNjdlNmppSWNaSHkzOFJ6d25XWkcwMVJ0cldVSHo1NjZCeDA2dStORFIzN2xXUXpxUnBHaEdVXG5iRE1yTG40N3dZNjc4RFpkajNodHJ0RzlBREVaTUVGWms5UkpOOC9ucWV2aVlYb3Zkbm5GcTBCUXBNNHZhYklHVnpUeC9pckpCY1hTXG5WQUUzYS9jUzdMcXZLdE9tdmorcTZOaFJzR0V6YzIwWjlXVmkrUVU4c2FDb1NGc3pHMUw4VGhvVkRWV0xvT1duYTkwUVVpM0VCYlEwXG5oaFpHaU04Y0pEcjI1UEoxT3dJa1VBaGlhZ01HMVRhMzdxcVNlRUNTM0poRjI1cjV6c2ZuZm83bVRrRzIzeG1xNWNaM0R5ZEd3NEpyXG4rQ2lQeEVWc21JTzRpSWJqYUhnZUxZNUM2VHhhUEllV3ptT0xJeEFYbTY2dUhjNm9GdU9oQ21JTWl2dU0rSWpmVVI1dHRUdEQyM2QvXG5pWEpFWjE2QmFIeitla2x0azVoc0w5cC9PV0lDYkRnR2hSRzBOTmF3OEF0TElDaHVSTjI4UnRDSlUrU2YrYmY0RzY5REJTaU9vc1dSXG5xWVpIeTVvQzY3VEZwTlpvWWgwV2l1bmFpcmZ4V3FSakkrSmxJTk9MYWV0ekl5MHY2NFJtY29RbWhrbkJRbVA4VTg5UmVQblBJTXJQXG5tci80SFpqMi9wcnJtY3QrYzlwMlVZdVd4b2dPUDBaNDlBazBiR1E5dWsyY29nRkJhYktSZ3FLRk00UkhIbTlpbnMxSE9qYVN2ZktmXG5ZbnAzTU52dm4vV3BpSWRaZnlWZSt6cmlzYU51bEJmMFlEcldRYllmci90Q3BIc2JwbU1EdEsrdlRlOWxxck5yeitKZitobk1taDBVXG5Ydjd2RUNVVmx1UXpONnZMRzdXTWVIMjdNRDBYMGZCTG9uRzVPeFhNbWwxa0x2c05UT2NXSk50REl3MG5Kc0RiZENQWk9LTDR5dGZBXG5KdG04SUxsR1NaZUFMZ2pCRnMrRExUV1dQQzRRdnZNZ21oOENMMHZiVlYvRTY5dU5aTmV3cUNZUWc3ZmxJM2hyZGlaTXVDUWFwYmsyXG55dEloRUhSZ3lzNDdDVHJCYThlT0hVRnpwK2RKcTlpUm54Tys5d1QrQlRlN3ZLSUNHdVdtLzhaNU5NeERsTWVHNHhCT29LWHphR2tVXG56UStodWRPb2paQk1Gc24yMS9lWDFDMDZKajd6S25iOEtGbzRpN2ZoV3J5MXU2ZC9sUmpNMml1SXo3Nlo0Rm1zU2h0bExzcGpTNUh5XG5IM0dHclVpVlI5WVlyK3laRFZDdkRhOXpBT25ZZ09uWUJPMGI4RG8zSW0zcmF2cDZBSTFEaWovN012SGd6K2F1U2x5azlQbzNLTDMrXG5qVVg5SWcxelJNZWV4Tjk2czl0WVZoWEJZcU1pWWtzUWREc1A4K1Q5dVVHS0wvNHBHdVlBaUFaZnBPT20vd1IrKzlROVh2ZFdrbm1KXG5Wck9OWW56bmtqZEIrZitkWjFZeW5aQlpnMm5yUjlyNmtHejVYOUFCSnVzYTN3c1FMK3ZTSkp3WEVTOGcySDRiOGREQjhtaXF4YWlsXG4rUG8zaU0rK2dYUU9vUGxCN01SSktJMmljVWo3amY4UjJ0Wk8zNTRmUkcxRnZUVEVSbmxNaGFBazErOUxvbEhxRFBUblRXS1E3SnJ5XG5iSzZiMVJXL3JUeUgwNDNKOXFCQkZ5YlRBMEVYa3VrQ3Z4T1Q2UzdQL3JaWWcwV0ZGdmxkWmlFdUVCMS9zdWF5Wkh1Um9OcTdic2RQXG5JR3FuaFVFTVp1YkxFQmNTVnFDT1YyOGVsa1NqK0ZzK1NyRHJrNWoyZFZTclBTbkx3SEl0T0ZUcytjT1VmdkVBSzhIdWtvNU5OZDJqXG5uVGlHNnZTSXhzMmFWd3VLUmtuM0kxNEtqVEpwSXl3UTZSZ2d1L2UzbllleTVTZ2FGY3FHNUJqRU9Xd3BoOFI1YkRnQjBZUWJ2VVFUXG5hR0hFR1pyRlViUjByaW1sUzlBSlFROG0ydzIrMDVwNFdTVFRDNWt1VExZUHlmU2kwUVRoTHc1Z3g0NVVwZmQ2THByeGMyTGlpZFBWXG5YV0s1YTY0aVRpb29TMkdqSkJBU3dOa1l6UlFTRzJMSGo2SEZVV3hoQklwbnkzOUhuRWMzektHMjVDWUI0eExZQ0xYaDR1WjZKdDN4XG54bmNlV2E4TmFWdUw2ZGlBdEsxRDJ2cGR0NUhwTFF0SEJreW03Tm92LzV1QlpIb3AvT3hQb0d5a0FtNld1d0tOOGxDcVBzOUo2anhMXG5uY1BiVzU4bHNWR1NZYysvaCtaT09iVmFGd1ViWVF0bjBmeVFNK3p5ZzhRVHAvQTMzNEMvNmNhcXU2T1R6MUo2OWV0b0hMckJVSG1sXG52T3JrYUV5UnRyVjQ2Ni9HanI2RFBYOW9FYlVYL0szN3lGeDhOMnF5aUY4MnNFMEd4UTFOM1cxdVZKWkkwM1p1d2V2Y1FuenU3ZklGXG5nK20rb1BxbUtJY3RqVlpkVXE5T1lGTmlRVm1Kb3g1Ykl2ZlV2eURZOGhGVWZHZmRGMGZSY0JRdFRVQ1VjOTNGREJ0Qk9nZndQdkE3XG5WZGMwUDBUcHJXK1g3NSsyUDZkVEtxYjNJdHF1KzlkSXRnK05pcFJlK3g5dTlyZ0JHMFRhK3NoYy9qa2swejEvL0VzaVJhdG83aVMyXG53bjhqWGh0a2VxcnVzc1h6VUtvK1BFTk03YWhPdy9Fa2hiTWliUlFBb2p6aGtlOHQvSDdqRWV6NE5UY3FxaWczT3Y1ak5EYzRaOUpnXG4rKzFJMWdYaGlaOGx1UGdlN01pYlRsTWx4SFJzcXZKWExBUlZkWStuYkZlb2pjdXo0U1dJaW1pVVEvTkRGTi84UDI3U2N4Sy93NDN5XG5LcGs0VVJ0SFV5OEcyUDRkc0ZFYXdldmZRN0RsdzFYWDdOaTdoRWQvT0c5YU8zN1VOVks1V3pCZG0vRzJmZ3o3MWw4a3RsUHN4SEVJXG54eUM3c09oUGpRcllrVGV3aFdFb25FT0xaMTJYV2hoeG10T0dZRVBuUEpzeEhXQjZ0dFdNWnVMelI2alJ0SFVFVitPa1V3c3IwRVpKXG5qSGdFMjIrdGZtaTJSSGpvY1RkWE1nL1IwUi9oYi8wWXBtdnJaSVlFVy80ZVVRTUIxbG9hby9qYW41ZTdUVy9LTFU5cEZEcTNFbXo5XG5hT1hkMk9HWEtCejhieERsWnMxek5yd04xMVNGZldwY1FzZVAxdmgzNmdsSzh1aTlsV2lqSk1SZmZ4Vm03UjRxTy8zNDNDK0lCMTlZXG5rT2RVd3pIaUV6L0JYUExwcVd2U3RoNXY0QWFpdzQ4bHE0eGE0cFBQRUo5OHB1YXI3QWYvMFl4N0lUcjVYRU5DZ3BmRlcvZEJLbit6XG5GczVVMlRCVCtCMjExK0trZ3JJVXM4Y3Q5R0JLdGc5LzU3M2w4TWh5Y2FVeG9rT1BPTC9JUWxBbE92NFVkdXhvUmNaQ1p0ZDlTRnR6XG5GaEJJcGh1enR2cndNcHM3alIyWnNUMmFDRXl1RnBnRHIrZENaSVlocXhNbjBVTHRFVHhTYjRvaThheDI4bVp2SUJDaVJUYUtDUDdBXG5EVFZUNXZId0swU25ueWZKcU1YbVRwZGQ1Tk5wSk5PRFAzRGo3SWtXWGxIOEN6NkdxWmlQUVMzeHFXZWNiVEo1bDk5T2NNbG42TGo1XG5hN1RkK0lkNDZ6OVkxNThDSUQwWHU3bXJxZndVTzNwb2FuUlhkVzhkUVZrS0cyWEZ4S09ZcnEwRTIyK3JYcDRSNVFrUFBkN0FaSjBTXG5uWHdXTFo2dHV1cHZ2Ym1ocWFwS0pPZ2lHTGlwYXZTaHhYTkV4NStxQ2g3eUJqNU1adWQrcDMxNkx5WjcxYitjTlc3RVg3ZVg2dkcxXG5KVDViZi9OR3JhZWRWcVJHYVFYaTQxL3d5MVByYlFGUVMzanNoOWh6UDI4Z1B3TnhqdWprODFWQ1pqcTM0Ry9keDJMbWxydzFPNUhPXG5MVlhYNHZPSG5PRlpnZWxjWDFXT0JCMzR1KzV6bnR2S3FyYXZSYnFyTnhld3VVRTBkNkpPNmNaNWhtZWdTMkNqTEkwZlpSNU05OVp5XG50ekNkcnkyY0pYcm53ZnBEV2pIbGVKVEF4YU1FSFpEdGM0SEptVFdZOXZWSXh3YThuaG43RVhvWmdtMmZJQjU4M2tYdkowUk1nQm00XG5IdndLOWE4eGR1aWxzbWQ0bXZqY093UWFWM1UzL3ZxcmlQcjNPTU1jRjEvanJic2EwMVlSVUswV0hYM0hUVXZVbEcvcWE4UVZPZXBwXG50bzNpdFJIcy9PUU1RMU9KRGo4Ky9iQzhMS1o5blp0WGFWK0h0SzkzbjdQOTdvM01kSUVFNVNXbFBwaHlCSHdkVFBjRmVPdXZLbnRyXG5reUdkbS9IV2ZhQXFieTBNRXcxVkJEMlpETjdhUGZnYnJ3TWJnMWR0bC9nRE4wNEpDbDQ3L3FicnFsMEJjWkh3K0ZQMUcxKzgraG9sXG5VYndzckVvL2lyZDJMLzZtRDFIMThLTWNaSHJJZnZCM25XQmsrOEJyd3dUdGJzNmx6c05hTUJMZ2Iva28wZURQYWliYzVxM3J1cjJZXG50c29vZVNVNjlUd1VocEh1YmZqcnI4RGJjQzJtKzBMblZhN3pVa25uUUhrSmg4VjBiOEdzdWFUcWU1czdqUjJ1UHAzV2RHMUdNbXVjXG5EMmVtamFLS2FKeHdnbUxWK1ZHRXpJNDdha1lENG5lU3Vmalhaa25SQ0RxZFVnVFRmeGxlMytYRXAzK2FxSzdldWl1cWpXMGJvWVVoXG5NbGYrSHQ3YXk5MndmaDZOSzBGNTZDOGUzc2JyblRhc0lCNStCYTBJRy9EWFhVSHdnZDkxd1YybDhSb2JCeTNQamlkaWxka28vdFo5XG5tUDQ5VGNuTExRNnpMb0RabG9nblRxRGp4NGhIRDBGY0lMUDdDMU5EVURFWnZBMVhKaE1VTVRXTmlnbklYUHFiYzNaMWRUSnkvKzNhXG5TckQxSTlWZnhRV2k0Mzh6ZldlbUczL1gzOGQwT0MwbTdka2FQMVk5VzJaK1ZwbU40cTIvc3ZvTm5ZM0psWUkyZHRGZWNRamhHTFo0XG56c1dnRkVhbVFoUnM3aVNhUDFPOXpzVUUrSnMvakxmK0NrQ2NVQ1ZkWWFjV3pRM0Jta3Vycjg4V1ZXaEQxMVdJVjE2V1VTWXVBRUxtXG5ncHNoVzcwcU1EcjlBbmIwM2NyTWE3dlptYysvb2FDclZXYWp4S2VleFIrNG9kWVJwZFpOblJmUFlZdWphRGlHNXMrZ0V5ZUl4OTVEXG54NDg3T3dZcTNyQTVlbWtiVW56bDY3UmQvWHVZemkzRUkyOFN2dmVEaExWVm9zRVhNQnMvTktlTnBEYUM4ZmNvSFh1SytNVGY0RzI2XG5udXp1ZnpCbFc4VG4zbmErbFkzWFZhZUxTNFNIL3FvNnMzQ002TVJUWkxvR1pnMytzb1ZHQkdXVjJTalJxZWVRMS80YzAzYzUyQ0kyXG5OK1NpenZObjBIQUNEY2NnektGMjhZdk9OVDlFNGZrdklXMTlhT0VNV2tvYXd3SFI2ZitINlhySVRWcFdUalBFUmRmTm5YMkRlT2dnXG5kdlJkdEJ4d0ZKMzRNZGdTWHU5T2JPNFUwZkduRUwrOWVrZ01MaFJpN0ZoMW5kVVNIbjRVRFNmSVhQcnBxZkNKS3VxNCtlZG5sZGtvXG5hT3ppVkpMRXFpeW11TkxvVkFNMlJKU2o5UGIveFk2OGhkbHdMVjdYWm14K2lIam9JTkh3NjY0Ym1PbEZEdk5FUjM5SVZCa2lJWDNZXG4vRENtYzZCOHp3U2x0KzZ2NzJHMUVkSFJINkNGTTJSM2Z4N3AzRnoxL0tPcXJtcWhyREliWlZWaVE2TEJGK0RNUzFQRFhHeE1rcmtvXG5MWnlqOVBvM0NYYmVpK25jUlBpTEI3Q2piOCtoTlpYNHpNc1VYdmd5bVQyZmQ2TXZRUE5uc0VNdk52SWpFcWRZZGovS3FpV3hrNnNTXG5KUjU4QVR2eU9tQ2NnVHRmZm1xeDQ4Y3BIdnl2K0J1dWdhQVRPL3dLV253ZjJDanZiM1JxbVdpaU5NVVJ3cU5QTExMc1ZSNlBrckpVXG5yT1o0bEpRbFpCWEhvNlFzSmFzMUhpVmxpVmtTamFLTE1mZFRWZ1FtOGZyYVZLTzhMMGx0bEpRRnNTUTJTaXBicTUrbHNWRlNSOHFxXG5SeEszWVNPQ3NuSWNLU2FBbVJGZnk0bmZYaHVxdUNKSjNvWXJ5NFZ2dlBMY21wMVhjVWxiSDluZG4wZE5RUFQyL2NRTnphTE96ZVNlXG45L011YmhmQjlPNGljOG1uMFB3d3BUZStVWGZ4MXNwaEZlOHphN28ydTJoOHY5MXRDVEYrYk03N3ZmN2RlQnQveVczQm1UL2p0ZzV2XG40bEVycG1NRHdTV2ZCUzlEK1BiOTJQT0g1NmhNbG1EN3IrS3R1eEtJQ2QvN0xqcTZtQTE4V3MwU3pCNHJXbWg2M3lNR2IvTSsvQzF1XG5kd0IvN0NqaHo3ODlkeG92TXhXRzZBS1dHNitWbUFDdFBKUUI4QVp1eE4veVlVQWhIS2Y0OGxkblR5OGVlQjNsNlEwZjhaTHRxVkxEXG41Q3BFalZ0aUVncVNXTjBsUDRaRnROQUtNNlV5Y0ZuODl1bFlqOWxUTUJWZFA3MW5jV0pNN3c2eVYvNXp0RGhDOGNXdlRHMk5NYjFRXG5YdHdPQW00ZnNMcDVLRlROZ1MzbTZGblR1Wm5zMVYrRXVFVHg1YTlpeDQ4M25OZHNxR2hpUVVuZVdiVmd6MTZodXBVRkZ2QW1WUzdCXG5tTDVkL0hZeWwzeWE0T0w5MDBzalppMVlDTGJmanVuYWd0ZS9wN3krcU81dGMwcmh6UHFLVkN3TjZkMUJadmR2NFczWmg5VGJmMjBHXG4zcWJyTVQwN01IMlh1YlhTTGRsYWRTbHNGQ1BGWnBzb2lsWTlqNmszZEU1aHFkWW9rK205ZFhzSmR0Nkx4aVZzZnBENHhFL21Lbmg2XG5uWXdJek5abFRPWS9TM1ZtYXBTcGVwdUE0T0w5K0FNM0VFUVQ1TSs5aFU3VVcxTTgvWnVxTnNyeDJoZndIQnJBMnFTN0F6WWdXckcyXG40RnpZT2hwbFFkSTRyVkdtYnMvMnUyN0xlSGd6OWh5cFNTMVMxUWF6UmxBazFDaVRHWWw0VXh2NHFmaTFpN2Zxb0pWYmRTUThabTdCXG5HSk00Y0xnUmpkS0NjVjhkalRLNUZhamZnYmYxWTBqUVFYVDBDYlJ3ZHVyYmVqYktwTm9YWmdoQjBFbHcwWjF1TStBamYrMk9uNXZjXG5tRyt5M05rMFJvVkdrVXczL3JaYndGckNkeDl5Sy9XZ3JvMmlUT2MvczgyOXZzdndObjZJK095cnhFTXZUUTNCcFhKcDdUeWFyRkhVXG4yc1R4azhsSFBhb0ZhWEx3VXEyTk1xMXVUZDlsWkhkL0RoQ3dSY0ozM05vWG5jVkdtZDVTdEZyNHZBcy9RYkRyUHJjaDMvbER4R2RlXG5oUmthWlRaem9QTE45dFpmUTJibkowRThkT3dJMGVBTHM5b29sY0phVVZzd1B2N08vZmdicnNIYmRCM0ZuLzU3YkhsL3VocU4wZ3FFXG54SUtTdU9zUnd4d09oY2JRR2ErTVRxb0ljRnRhaUFHUnFpMjdxbDYxNnFYRjVXK3JoVzl5aHlReDVhRXN1QVhlbFkweGk5Qm9aZjZaXG5McUI4Wm1CNUJXQ05qVkxPcUZKalZTb0dFVE85dkRYb2Roc0pUaFU3UTZPMEFGa0tRUUU5bFR6TmZFanRwMG4xWGRWNE14dWp0aFZtXG4weWhUcVZTbjMvaTViSlNaMXlzWEpFNEo1YVRtcUtsb1RmNVZHcVdxb2pPNnY2WFFLQTIwWVdKQkNVdk4xeWgxYlpUS1Y3SDZHNmEvXG5tRzRGcWFOUnF0L0l5c2FyZmVQZDUxbHFWOW5LUW9VUVQ5b2lrTlJHcVZTQlZjSzZCQnFsa1RaTUxDaDk5eng0RHBGRkxMZXJaVTQvXG55cXdQYTM0YlJlb0lXYVZHbVZIc2dteVV5ajN2WjlNbzg5b29NMzVZcGMzWGNvMmllcnJ2bmdkYjB2VjAxMXhSVFhLQTNid29DdkVFXG5VNDBaNWFlZXFtcFljYjFpSzI4Yk11VzVqWEpUOXhEbkFVVlVxL1laY2RmTGIvYmtMb3BLeFJFbVduMzRRSlNmTGplc3VLNmxhWTFTXG5YcGVqR29NdDcrZXZGbzBuOStxMzd2ZzNLTmVuSEVXcWRuckJseTI1OU9VNlNFV2RrNSthc1FDTU5OUjJDeG4xWEFpOFZubEI0S0RDXG5MelZTWUYxVUNZLy9HSzkzQitxMUU1OTRlcW94NHBHM2lFOCtDNWtlN09EelUwbmk0VGVJaDE0RXY5MXRmVjZlRUl5SERoSVB2d3BSXG5BVnV4WlZaNCtMdDQvWHV3aFdIcytYZmM3eEFJRHorRzZkcUNMWjZiM2pJTENFLytMZDY2RDZCZXRud21zNnRQTkhnUWYrQk5iRnh5XG54OHVCMjA3cjhPTjRuUVBFNHlmUWNlZFVFeHRTT3Z3NDJld2E0cUdYMGJ6YngxOXRUSGowaDBpMmovRG9ENkJpdFY5NDZsbTg5VmVoXG5jY250bGRMazQrdFVhVWhRRnFMY3RnSUZZR3JaL05qRDkveERFZmxhSXdYT1hoTnhKMGVJekRodFE5eVpnV0xLR3FYeWVzYTFkdFYxXG5wczYwMFJsSHFJbmY1dXlIU2swajRnNWZtcW1CRVBDenJ2dVlVUiszMSt1TSs4VzQ2MnBycnVObEVUdGpaeVR4WFAxdE9HTTVhYmsrXG4wSlJkSEdvUWZxdnI5Z2UrbVRUWlFqVEtNV0F2TUFZVUFYeGZ2eHZIVGU1QVZXc2F0dndGeEtVNnBvck9ldkpWL1h5b0h5T2k2bzZrXG5yWmYvTE5mcjVxKzJmbGVoRnFKOGJUNGF6M0xPampwbllOMWZzSGc4WTVQdmNzakNqZG0zZ1IyVEg5cHZmZkF3Y0dUMjIxTldLRWZLXG5iWmVZaFFwS0VhZFpkazFmMG9Za00yWDVFT0c3amFaTk1qd2VBMDRCdXdFVS9wZzVCcThwS3d4QlkrUDlsMGFUSi9XampBRkhnVjNkXG5keHg0QS9oK293V25MREhLOTN0dS9VNEQrOFU3R2xta002bFpMajh6V3Z6alJndE9XVnFNNGQ4dEtuMkQ2Y2FBZDdmLytxTkQrVkwwXG4rR0lxa0xJRUNIL1pjZHNEenk0bWk4VXMreXNDcno3MjNNbi9EQ3ppVU9HVUZoTjc4UHVMeldUUjYwTS85NlhubjhpWDRuKzEySHhTXG5Xb09xL3BQMjJ4OVl0Q3VqYVY2ejhVZnYvUjZxbjJoV2ZpbE40WW11T3g3NGxXWmsxTFFWNS9rby9LVEFjODNLTDJXUktNL240MmgvXG5zN0pycWgvKy9BUDNyUFV5OGxPRmk1dVpiMHBDbE5kc3FCL3QyWDlnZVA2YkYwWlQ5N0RvMlg5Z09OYndlb0U1MWtpa3RCSlYvVW1wXG56YnVwbVVJQ0xkanNwT2ZPaDg5MDVMeVBJM3lyMlhtbnpJUHdyYTY4Ly9IK1gvbE9Vd1BMWE5ZdFpPTFIvYit0bGo5RFdNU1JYU256XG5JVkJTNFhjYUNSOUlVRVpyeVQyMi8zcHIrUXRnMjd3M3B6VENlMGJ0ZlIxM1B0alNnVVRMQldXU3NZZnYzbWVNK1NOVnJsK3FNdjh1XG5vK2lUbnBFL1dLekhkYUVzbWFCTWtudjR2aTJXK05jeDhuRlZ2VUhxeGVTbTFHTU0xV2RBZnFBWi9XYjNMUWNHbDdMd0pSZVVtVXc4XG50UDlxYTdoSjBCdEU1RWJWdElzcWN3VGtieFg5aWFnKzNYWG5nWmVXc3pMTExpZ3owWWZ2N0JnamM2RjRkaU94SndER3hMMm9iRVRZXG5ZSzBMM3pRaW9tSjdVVmtIckVXWTNnYkFVajJlVzg3UFNoNFlSbVZZbVY3Z2IwUkMxQTRpY3RxcWNlZnFhcXdZQnJzME9pSjNQcHowXG42STJVbEpTVWxKU1VsSlNVbEpTVWxKU1VsSlNVbEpTVWxKU1VsTHI4ZngvQ0NLc01RYXlzQUFBQUFFbEZUa1N1UW1DQyIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment