Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1zcGVjaWFsZS1kaXNpbmZlemlvbmUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdTcGVjaWFsZSBEaXNpbmZlemlvbmUnLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDA1MTgwNE9BTjM5MjNDVycsCiAgICAgIHByaWNlOiAn4oKsMjEsMDAnLAogICAgICBpdGVtX2JyYW5kOiAnbm9uZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnbm9uZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnU2V0IGluIG9mZmVydGEnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1zcGVjaWFsZS1kaXNpbmZlemlvbmUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IgY2FyZC1wcm9kdWN0IiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiU3BlY2lhbGUgRGlzaW5mZXppb25lIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDA1MTgwNE9BTjM5MjNDVyIsCiAgICAgICAgICAgICJwcmljZSI6ICLigqwyMSwwMCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIm5vbmUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImJlc3QtcHJvbW90aW9ucyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzQyNDQxNzMiIGRhdGEtcHJvZHVjdC1uYW1lPSJTcGVjaWFsZSBEaXNpbmZlemlvbmUiCiAgZGF0YS1wcm9kdWN0LXByaWNlPSIyMS4wIgogIGRhdGEtcHJvZHVjdC1icmFuZD0ibm9uZSIKICBkYXRhLXByb2R1Y3QtY2F0ZWdvcnk9IiIKICBkYXRhLXByb2R1Y3QtcG9zaXRpb249IiI+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDRfYmM2MTdlZTMtZDdiMS00NmYzLThiMzgtMDEzYzk5YWU0ZTI1LmpwZz92PTE3OTA2ODg3ODMmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDRfYmM2MTdlZTMtZDdiMS00NmYzLThiMzgtMDEzYzk5YWU0ZTI1LmpwZz92PTE3OTA2ODg3ODMmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDRfYmM2MTdlZTMtZDdiMS00NmYzLThiMzgtMDEzYzk5YWU0ZTI1LmpwZz92PTE3OTA2ODg3ODMmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDRfYmM2MTdlZTMtZDdiMS00NmYzLThiMzgtMDEzYzk5YWU0ZTI1LmpwZz92PTE3OTA2ODg3ODMmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDRfYmM2MTdlZTMtZDdiMS00NmYzLThiMzgtMDEzYzk5YWU0ZTI1LmpwZz92PTE3OTA2ODg3ODMmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDRfYmM2MTdlZTMtZDdiMS00NmYzLThiMzgtMDEzYzk5YWU0ZTI1LmpwZz92PTE3OTA2ODg3ODMmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9PU181MTgwNF9iYzYxN2VlMy1kN2IxLTQ2ZjMtOGIzOC0wMTNjOTlhZTRlMjUuanBnP3Y9MTc5MDY4ODc4MyAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9PU181MTgwNF9iYzYxN2VlMy1kN2IxLTQ2ZjMtOGIzOC0wMTNjOTlhZTRlMjUuanBnP3Y9MTc5MDY4ODc4MyZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJTcGVjaWFsZSBEaXNpbmZlemlvbmUgLSBub25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzQyNDQxNzMiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzQyNDQxNzMiIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NTA4MTgxMjUiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL3NwZWNpYWxlLWRpc2luZmV6aW9uZSI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGNhcGl0YWxpemUgIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTc0MjQ0MTczIiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9zcGVjaWFsZS1kaXNpbmZlemlvbmUiIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xMDkyNDk3NDI0NDE3MyIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xMDkyNDk3NDI0NDE3MyBCYWRnZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xMDkyNDk3NDI0NDE3MyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgc3BlY2lhbGUgZGlzaW5mZXppb25lIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgU3BlY2lhbGUgRGlzaW5mZXppb25lCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICDigqwyMSwwMAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBzY29udGF0bzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICDigqwyMSwwMAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZXp6byB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS11bml0IHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwZXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PC9kaXY+Cgo8YSBocmVmPSIvcHJvZHVjdHMvc3BlY2lhbGUtZGlzaW5mZXppb25lIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzQyNDQxNzMiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzQyNDQxNzMiIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NTA4MTgxMjUiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL3NwZWNpYWxlLWRpc2luZmV6aW9uZSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgU3BlY2lhbGUgRGlzaW5mZXppb25lCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBTcGVjaWFsZSBEaXNpbmZlemlvbmUKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+UGVyIGxhIGN1cmEgZGVsbGEgdHVhIGNhc2E8L3NwYW4+PC9saT48L3VsPjwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC0xLTEtZ3JhdGlzLWxpcC10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJzErMSBncmF0aXMgbGlwJywKICAgICAgaXRlbV9pZDogJ0lUQV9QUkRFMDAwNTE4MDVPQU4zOTI0Q1cnLAogICAgICBwcmljZTogJ+KCrDE1LDAwJywKICAgICAgaXRlbV9icmFuZDogJ25vbmUnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ25vbmUnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ1NldCBpbiBvZmZlcnRhJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtMS0xLWdyYXRpcy1saXAtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IgY2FyZC1wcm9kdWN0IiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiMSsxIGdyYXRpcyBsaXAiLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJJVEFfUFJERTAwMDUxODA1T0FOMzkyNENXIiwKICAgICAgICAgICAgInByaWNlIjogIuKCrDE1LDAwIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAibm9uZSIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAiYmVzdC1wcm9tb3Rpb25zIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICcgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3NDUwNjMxNyIgZGF0YS1wcm9kdWN0LW5hbWU9IjErMSBncmF0aXMgbGlwIgogIGRhdGEtcHJvZHVjdC1wcmljZT0iMTUuMCIKICBkYXRhLXByb2R1Y3QtYnJhbmQ9Im5vbmUiCiAgZGF0YS1wcm9kdWN0LWNhdGVnb3J5PSIiCiAgZGF0YS1wcm9kdWN0LXBvc2l0aW9uPSIiPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X09TXzUxODA1XzBmNWNiYmZkLThiOTMtNDMwMS1iMDgyLTcyYTg1N2NkOWExNy5qcGc/dj0xNzkwNjg4NzgyJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X09TXzUxODA1XzBmNWNiYmZkLThiOTMtNDMwMS1iMDgyLTcyYTg1N2NkOWExNy5qcGc/dj0xNzkwNjg4NzgyJndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X09TXzUxODA1XzBmNWNiYmZkLThiOTMtNDMwMS1iMDgyLTcyYTg1N2NkOWExNy5qcGc/dj0xNzkwNjg4NzgyJndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X09TXzUxODA1XzBmNWNiYmZkLThiOTMtNDMwMS1iMDgyLTcyYTg1N2NkOWExNy5qcGc/dj0xNzkwNjg4NzgyJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X09TXzUxODA1XzBmNWNiYmZkLThiOTMtNDMwMS1iMDgyLTcyYTg1N2NkOWExNy5qcGc/dj0xNzkwNjg4NzgyJndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X09TXzUxODA1XzBmNWNiYmZkLThiOTMtNDMwMS1iMDgyLTcyYTg1N2NkOWExNy5qcGc/dj0xNzkwNjg4NzgyJndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDVfMGY1Y2JiZmQtOGI5My00MzAxLWIwODItNzJhODU3Y2Q5YTE3LmpwZz92PTE3OTA2ODg3ODIgMTIwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDVfMGY1Y2JiZmQtOGI5My00MzAxLWIwODItNzJhODU3Y2Q5YTE3LmpwZz92PTE3OTA2ODg3ODImd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iMSsxIGdyYXRpcyBsaXAgLSBub25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzQ1MDYzMTciIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzQ1MDYzMTciIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NTExNDU4MDUiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzEtMS1ncmF0aXMtbGlwIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgY2FwaXRhbGl6ZSAgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzQ1MDYzMTciID4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzLzEtMS1ncmF0aXMtbGlwIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzQ1MDYzMTciIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzQ1MDYzMTcgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzQ1MDYzMTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IDErMSBncmF0aXMgbGlmdCB1cCAtIGxpcGxpbmVyIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgMSsxIGdyYXRpcyBsaXAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIOKCrDE1LDAwCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIHNjb250YXRvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIOKCrDE1LDAwCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlenpvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLXVuaXQgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BlciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48L2Rpdj4KCjxhIGhyZWY9Ii9wcm9kdWN0cy8xLTEtZ3JhdGlzLWxpcCIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzEwOTI0OTc0NTA2MzE3IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjEwOTI0OTc0NTA2MzE3IiBkYXRhLXZhcmlhbnQtaWQ9IjU0OTA0NTUxMTQ1ODA1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy8xLTEtZ3JhdGlzLWxpcCI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgMSsxIEdyYXRpcyBMaWZ0IFVwIC0gTGlwbGluZXIKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDErMSBncmF0aXMgbGlwCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPlBlciBpbCB0dW8gbWFrZXVwPC9zcGFuPjwvbGk+PC91bD48L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC0yeC1kZW8tc3ByYXktdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICcyWCBkZW8gc3ByYXknLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDA1MTgwNk9BTjM5MjVDVycsCiAgICAgIHByaWNlOiAn4oKsMTUsMDAnLAogICAgICBpdGVtX2JyYW5kOiAnbm9uZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnbm9uZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnU2V0IGluIG9mZmVydGEnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC0yeC1kZW8tc3ByYXktdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2IgY2FyZC1wcm9kdWN0IiBndG0tY2FyZC1kYXRhPScKICAgICAgICB7CiAgICAgICAgICAgICJpdGVtX25hbWUiOiAiMlggZGVvIHNwcmF5IiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDA1MTgwNk9BTjM5MjVDVyIsCiAgICAgICAgICAgICJwcmljZSI6ICLigqwxNSwwMCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIm5vbmUiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTEiOiAiIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkyIjogImJlc3QtcHJvbW90aW9ucyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzQ2MDQ2MjEiIGRhdGEtcHJvZHVjdC1uYW1lPSIyWCBkZW8gc3ByYXkiCiAgZGF0YS1wcm9kdWN0LXByaWNlPSIxNS4wIgogIGRhdGEtcHJvZHVjdC1icmFuZD0ibm9uZSIKICBkYXRhLXByb2R1Y3QtY2F0ZWdvcnk9IiIKICBkYXRhLXByb2R1Y3QtcG9zaXRpb249IiI+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDZfY2M0NzA5MmYtZmI5OS00NTMyLWE0ZjgtM2NlMWFjZjkxYzZkLmpwZz92PTE3OTA2ODg3ODImd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDZfY2M0NzA5MmYtZmI5OS00NTMyLWE0ZjgtM2NlMWFjZjkxYzZkLmpwZz92PTE3OTA2ODg3ODImd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDZfY2M0NzA5MmYtZmI5OS00NTMyLWE0ZjgtM2NlMWFjZjkxYzZkLmpwZz92PTE3OTA2ODg3ODImd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDZfY2M0NzA5MmYtZmI5OS00NTMyLWE0ZjgtM2NlMWFjZjkxYzZkLmpwZz92PTE3OTA2ODg3ODImd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDZfY2M0NzA5MmYtZmI5OS00NTMyLWE0ZjgtM2NlMWFjZjkxYzZkLmpwZz92PTE3OTA2ODg3ODImd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfT1NfNTE4MDZfY2M0NzA5MmYtZmI5OS00NTMyLWE0ZjgtM2NlMWFjZjkxYzZkLmpwZz92PTE3OTA2ODg3ODImd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9PU181MTgwNl9jYzQ3MDkyZi1mYjk5LTQ1MzItYTRmOC0zY2UxYWNmOTFjNmQuanBnP3Y9MTc5MDY4ODc4MiAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9PU181MTgwNl9jYzQ3MDkyZi1mYjk5LTQ1MzItYTRmOC0zY2UxYWNmOTFjNmQuanBnP3Y9MTc5MDY4ODc4MiZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSIyWCBkZW8gc3ByYXkgLSBub25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzQ2MDQ2MjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzQ2MDQ2MjEiIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NTEyNDQxMDkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzJ4LWRlby1zcHJheSI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25lCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGNhcGl0YWxpemUgIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTc0NjA0NjIxIiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy8yeC1kZW8tc3ByYXkiIGlkPSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xMDkyNDk3NDYwNDYyMSIgY2xhc3M9ImZ1bGwtdW5zdHlsZWQtbGluayBmdWxsLXVuc3R5bGVkLWxpbmstcHJvZHVjdCIgYXJpYS1sYWJlbGxlZGJ5PSJDYXJkTGluay10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xMDkyNDk3NDYwNDYyMSBCYWRnZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xMDkyNDk3NDYwNDYyMSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgMnggZGVvIHNwcmF5IAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgMlggZGVvIHNwcmF5CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICDigqwxNSwwMAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBzY29udGF0bzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICDigqwxNSwwMAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZXp6byB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS11bml0IHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwZXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PC9kaXY+Cgo8YSBocmVmPSIvcHJvZHVjdHMvMngtZGVvLXNwcmF5IiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzQ2MDQ2MjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzQ2MDQ2MjEiIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NTEyNDQxMDkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzLzJ4LWRlby1zcHJheSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgMnggRGVvIFNwcmF5CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAyWCBkZW8gc3ByYXkKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+UGVyIGwnaWdpZW5lIGRlbCB0dW8gY29ycG88L3NwYW4+PC9saT48L3VsPjwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1zZXQtY2hlcnJ5LWJsb3Nzb20tdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdTRVQgQ0hFUlJZIEJMT1NTT00nLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDAzODk3MlcnLAogICAgICBwcmljZTogJ+KCrDIxLDkwJywKICAgICAgaXRlbV9icmFuZDogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnSSBwcm9kb3R0aSBTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LXNldC1jaGVycnktYmxvc3NvbS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiBjYXJkLXByb2R1Y3QiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJTRVQgQ0hFUlJZIEJMT1NTT00iLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJJVEFfUFJERTAwMDM4OTcyVyIsCiAgICAgICAgICAgICJwcmljZSI6ICLigqwyMSw5MCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJvdXItc3RhbmhvbWUtcHJvZHVjdHMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJyBkYXRhLXByb2R1Y3QtaWQ9IjEwOTI0OTczMTMwMDYxIiBkYXRhLXByb2R1Y3QtbmFtZT0iU0VUIENIRVJSWSBCTE9TU09NIgogIGRhdGEtcHJvZHVjdC1wcmljZT0iMjEuOSIKICBkYXRhLXByb2R1Y3QtYnJhbmQ9IlN0YW5ob21lIgogIGRhdGEtcHJvZHVjdC1jYXRlZ29yeT0iIgogIGRhdGEtcHJvZHVjdC1wb3NpdGlvbj0iIj4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwMV9hOWI1NGFiMC0xNTRkLTRiMDQtODkwYi05NTdjYjkxZDRhOGIuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwMV9hOWI1NGFiMC0xNTRkLTRiMDQtODkwYi05NTdjYjkxZDRhOGIuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwMV9hOWI1NGFiMC0xNTRkLTRiMDQtODkwYi05NTdjYjkxZDRhOGIuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwMV9hOWI1NGFiMC0xNTRkLTRiMDQtODkwYi05NTdjYjkxZDRhOGIuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwMV9hOWI1NGFiMC0xNTRkLTRiMDQtODkwYi05NTdjYjkxZDRhOGIuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwMV9hOWI1NGFiMC0xNTRkLTRiMDQtODkwYi05NTdjYjkxZDRhOGIuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD0xMDY2IDEwNjZ3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzAxX2E5YjU0YWIwLTE1NGQtNGIwNC04OTBiLTk1N2NiOTFkNGE4Yi5qcGc/dj0xNzkwNjg4ODE1IDEyMDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzAxX2E5YjU0YWIwLTE1NGQtNGIwNC04OTBiLTk1N2NiOTFkNGE4Yi5qcGc/dj0xNzkwNjg4ODE1JndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlNFVCBDSEVSUlkgQkxPU1NPTSAtIFN0YW5ob21lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzMxMzAwNjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzMxMzAwNjEiIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NDk2MDU3MDkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL3NldC1jaGVycnktYmxvc3NvbSI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuaG9tZQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBjYXBpdGFsaXplICBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xMDkyNDk3MzEzMDA2MSIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvc2V0LWNoZXJyeS1ibG9zc29tIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzMxMzAwNjEiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzMxMzAwNjEgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzMxMzAwNjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IGNoZXJyeSBibG9zc29tIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgU0VUIENIRVJSWSBCTE9TU09NCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICDigqwyMSw5MAogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBzY29udGF0bzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICDigqwyMSw5MAogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZXp6byB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS11bml0IHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwZXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PC9kaXY+Cgo8YSBocmVmPSIvcHJvZHVjdHMvc2V0LWNoZXJyeS1ibG9zc29tIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzMxMzAwNjEiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzMxMzAwNjEiIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NDk2MDU3MDkiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL3NldC1jaGVycnktYmxvc3NvbSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgQ2hlcnJ5IEJsb3Nzb20KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFNFVCBDSEVSUlkgQkxPU1NPTQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCBjYXJkX192YXJpYW50LWtleV9wb2ludHMiPjxsaT48c3Bhbj5JbCBzZXQgY2hlIGRvbmEgdW4gcHJvZnVtbyBkaSBjaWxpZWdpbzwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC0yeC1ibHVlLWNyeXN0YWwtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICcyWCBCTFVFIENSWVNUQUwnLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDAzODk3M1cnLAogICAgICBwcmljZTogJ+KCrDIzLDkwJywKICAgICAgaXRlbV9icmFuZDogJ1N0YW5ob21lJywKICAgICAgaXRlbV9jYXRlZ29yeTE6ICdTdGFuaG9tZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnRGV0ZXJzaXZvIGxhdmF0cmljZScsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LTJ4LWJsdWUtY3J5c3RhbC10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiBjYXJkLXByb2R1Y3QiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICIyWCBCTFVFIENSWVNUQUwiLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJJVEFfUFJERTAwMDM4OTczVyIsCiAgICAgICAgICAgICJwcmljZSI6ICLigqwyMyw5MCIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIlN0YW5ob21lIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJsYXVuZHJ5IiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkzIjogbnVsbCwKICAgICAgICAgICAgIml0ZW1fdmFyaWFudCI6ICJEZWZhdWx0IFRpdGxlIgogICAgICAgIH0KICAgICcgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3MzE5NTU5NyIgZGF0YS1wcm9kdWN0LW5hbWU9IjJYIEJMVUUgQ1JZU1RBTCIKICBkYXRhLXByb2R1Y3QtcHJpY2U9IjIzLjkiCiAgZGF0YS1wcm9kdWN0LWJyYW5kPSJTdGFuaG9tZSIKICBkYXRhLXByb2R1Y3QtY2F0ZWdvcnk9IiIKICBkYXRhLXByb2R1Y3QtcG9zaXRpb249IiI+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDJfODRjZWUwNWEtMGU3Ni00YTM5LWI5MTktODQ3MDQ0OWVkMzhmLmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDJfODRjZWUwNWEtMGU3Ni00YTM5LWI5MTktODQ3MDQ0OWVkMzhmLmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDJfODRjZWUwNWEtMGU3Ni00YTM5LWI5MTktODQ3MDQ0OWVkMzhmLmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDJfODRjZWUwNWEtMGU3Ni00YTM5LWI5MTktODQ3MDQ0OWVkMzhmLmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDJfODRjZWUwNWEtMGU3Ni00YTM5LWI5MTktODQ3MDQ0OWVkMzhmLmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDJfODRjZWUwNWEtMGU3Ni00YTM5LWI5MTktODQ3MDQ0OWVkMzhmLmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwMl84NGNlZTA1YS0wZTc2LTRhMzktYjkxOS04NDcwNDQ5ZWQzOGYuanBnP3Y9MTc5MDY4ODgxNSAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwMl84NGNlZTA1YS0wZTc2LTRhMzktYjkxOS04NDcwNDQ5ZWQzOGYuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSIyWCBCTFVFIENSWVNUQUwgLSBTdGFuaG9tZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im1vdGlvbi1yZWR1Y2UiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzEwOTI0OTczMTk1NTk3IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjEwOTI0OTczMTk1NTk3IiBkYXRhLXZhcmlhbnQtaWQ9IjU0OTA0NTQ5NjcxMjQ1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy8yeC1ibHVlLWNyeXN0YWwiPgogICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19iYWRnZSB0b3AgbGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24iPjxkaXYgY2xhc3M9ImNhcmRfX3R5cGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhbmhvbWUKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgY2FwaXRhbGl6ZSAgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzMxOTU1OTciID4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzLzJ4LWJsdWUtY3J5c3RhbCIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTczMTk1NTk3IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTczMTk1NTk3IEJhZGdlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTczMTk1NTk3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDJ4IGJsdWUgY3J5c3RhbCAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDJYIEJMVUUgQ1JZU1RBTAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsMjMsOTAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsMjMsOTAKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmV6em8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tdW5pdCBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjwvZGl2PgoKPGEgaHJlZj0iL3Byb2R1Y3RzLzJ4LWJsdWUtY3J5c3RhbCIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzEwOTI0OTczMTk1NTk3IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjEwOTI0OTczMTk1NTk3IiBkYXRhLXZhcmlhbnQtaWQ9IjU0OTA0NTQ5NjcxMjQ1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy8yeC1ibHVlLWNyeXN0YWwiPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMnggQmx1ZSBDcnlzdGFsCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICAyWCBCTFVFIENSWVNUQUwKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+SWwgc2V0IGlkZWFsZSBwZXIgaWwgdHVvIGNhbWJpbyBkaSBzdGFnaW9uZS48L3NwYW4+PC9saT48L3VsPjwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1vbGlvLWNyZW1hLWxpZnRpbmctdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdPTElPICsgQ1JFTUEgTElGVElORycsCiAgICAgIGl0ZW1faWQ6ICdJVEFfUFJERTAwMDM4OTc0VycsCiAgICAgIHByaWNlOiAn4oKsMzcsMDAnLAogICAgICBpdGVtX2JyYW5kOiAnRHIgUGllcnJlIFJpY2F1ZCcsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnRHIgUGllcnJlIFJpY2F1ZCcsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnSSBwcm9kb3R0aSBEci4gUGllcnJlIFJpY2F1ZCcsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LW9saW8tY3JlbWEtbGlmdGluZy10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiBjYXJkLXByb2R1Y3QiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJPTElPICsgQ1JFTUEgTElGVElORyIsCiAgICAgICAgICAgICJpdGVtX2lkIjogIklUQV9QUkRFMDAwMzg5NzRXIiwKICAgICAgICAgICAgInByaWNlIjogIuKCrDM3LDAwIiwKICAgICAgICAgICAgIml0ZW1fYnJhbmQiOiAiRHIgUGllcnJlIFJpY2F1ZCIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAib3VyLWRyLXBpZXJyZS1yaWNhdWQtcHJvZHVjdHMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJyBkYXRhLXByb2R1Y3QtaWQ9IjEwOTI0OTczMzU5NDM3IiBkYXRhLXByb2R1Y3QtbmFtZT0iT0xJTyArIENSRU1BIExJRlRJTkciCiAgZGF0YS1wcm9kdWN0LXByaWNlPSIzNy4wIgogIGRhdGEtcHJvZHVjdC1icmFuZD0iRHIgUGllcnJlIFJpY2F1ZCIKICBkYXRhLXByb2R1Y3QtY2F0ZWdvcnk9IiIKICBkYXRhLXByb2R1Y3QtcG9zaXRpb249IiI+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDNfNDIwMTU0MWYtMWNiZC00MzhkLWI1MDktMDVkZWYzNmU5NmU3LmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDNfNDIwMTU0MWYtMWNiZC00MzhkLWI1MDktMDVkZWYzNmU5NmU3LmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDNfNDIwMTU0MWYtMWNiZC00MzhkLWI1MDktMDVkZWYzNmU5NmU3LmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDNfNDIwMTU0MWYtMWNiZC00MzhkLWI1MDktMDVkZWYzNmU5NmU3LmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDNfNDIwMTU0MWYtMWNiZC00MzhkLWI1MDktMDVkZWYzNmU5NmU3LmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDNfNDIwMTU0MWYtMWNiZC00MzhkLWI1MDktMDVkZWYzNmU5NmU3LmpwZz92PTE3OTA2ODg4MTUmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwM180MjAxNTQxZi0xY2JkLTQzOGQtYjUwOS0wNWRlZjM2ZTk2ZTcuanBnP3Y9MTc5MDY4ODgxNSAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwM180MjAxNTQxZi0xY2JkLTQzOGQtYjUwOS0wNWRlZjM2ZTk2ZTcuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJPTElPICsgQ1JFTUEgTElGVElORyAtIERyIFBpZXJyZSBSaWNhdWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xMDkyNDk3MzM1OTQzNyIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3MzM1OTQzNyIgZGF0YS12YXJpYW50LWlkPSI1NDkwNDU0OTgzNTA4NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvb2xpby1jcmVtYS1saWZ0aW5nIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyIFBpZXJyZSBSaWNhdWQKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgY2FwaXRhbGl6ZSAgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzMzNTk0MzciID4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL29saW8tY3JlbWEtbGlmdGluZyIgaWQ9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTczMzU5NDM3IiBjbGFzcz0iZnVsbC11bnN0eWxlZC1saW5rIGZ1bGwtdW5zdHlsZWQtbGluay1wcm9kdWN0IiBhcmlhLWxhYmVsbGVkYnk9IkNhcmRMaW5rLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTczMzU5NDM3IEJhZGdlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTczMzU5NDM3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldCBvbGlvIGxldmlnYW50ZSArIGNyZW1hIGxpZnRpbmcgY29sbG8gCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBPTElPICsgQ1JFTUEgTElGVElORwogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsMzcsMDAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsMzcsMDAKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmV6em8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tdW5pdCBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjwvZGl2PgoKPGEgaHJlZj0iL3Byb2R1Y3RzL29saW8tY3JlbWEtbGlmdGluZyIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzEwOTI0OTczMzU5NDM3IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjEwOTI0OTczMzU5NDM3IiBkYXRhLXZhcmlhbnQtaWQ9IjU0OTA0NTQ5ODM1MDg1IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy9vbGlvLWNyZW1hLWxpZnRpbmciPgogICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faGVhZGluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IE9saW8gTGV2aWdhbnRlICsgQ3JlbWEgTGlmdGluZyBDb2xsbwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgT0xJTyArIENSRU1BIExJRlRJTkcKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+SWwgc2V0IGNoZSBsaWZ0YSBlIHVuaWZvcm1hIGlsIHR1byBjb2xsbyBlIGTDqWNvbGxldMOpLjwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1zaWVyby1jcmVtYS1hbnRpbWFjYy10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYicpOwogICAgcHJvZHVjdENhcmRzLmZvckVhY2goZnVuY3Rpb24gKGNhcmQpIHsKICAgICAgaWYgKGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKSAhPT0gbnVsbCkgewogICAgICAgIGxpc3ROYW1lID0gY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpLmdldEF0dHJpYnV0ZSgnZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpOwogICAgICB9CiAgICAgIGNhcmQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBKU09OLnBhcnNlKGNhcmQuZ2V0QXR0cmlidXRlKCdndG0tY2FyZC1kYXRhJykpOwogICAgICAgIC8vIE5lZWQgdG8gcHVzaCBsaXN0TmFtZQogICAgICAgIHByb2R1Y3REYXRhWydpdGVtX2xpc3RfbmFtZSddID0gbGlzdE5hbWU7CiAgICAgICAgLy8gUHVzaCBjbGlja2VkIHByb2R1Y3QKICAgICAgICBheEl0ZW0ucHVzaChwcm9kdWN0RGF0YSk7CiAgICAgICAgLy8gU2VuZCAiY2xpY2siIGV2ZW50CiAgICAgICAgZGF0YUxheWVyLnB1c2goewogICAgICAgICAgZXZlbnQ6ICdheF9wcm9kdWN0X2NsaWNrJywKICAgICAgICAgIGF4SXRlbTogYXhJdGVtCiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gUHVzaCBhbGwgcHJvZHVjdCBpbiBkYXRhTGF5ZXIKICAgIGF4UHJvZHVjdExpc3QucHVzaCh7CiAgICAgIGl0ZW1fbmFtZTogJ1NJRVJPICsgQ1JFTUEgQU5USU1BQ0MnLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDAzODk3NVcnLAogICAgICBwcmljZTogJ+KCrDg5LDAwJywKICAgICAgaXRlbV9icmFuZDogJ0RyIFBpZXJyZSBSaWNhdWQnLAogICAgICBpdGVtX2NhdGVnb3J5MTogJ0RyIFBpZXJyZSBSaWNhdWQnLAogICAgICBpdGVtX2NhdGVnb3J5MjogJ0Jlc3RzZWxsZXIgYmVsbGV6emEgZSBiZW5lc3NlcmUnLAogICAgICBpdGVtX2NhdGVnb3J5MzogJycsCiAgICAgIGl0ZW1fdmFyaWFudDogJ0RlZmF1bHQgVGl0bGUnLAogICAgICBpdGVtX2xpc3RfbmFtZTogbGlzdE5hbWUKICAgIH0pOwoKICB9KTsKCiAgZnVuY3Rpb24gY2xpY2tQcm9kdWN0KHByb2R1Y3REYXRhKSB7fQo8L3NjcmlwdD4KCgo8c2NyaXB0IGRlZmVyPgogIGZ1bmN0aW9uIHN3eW1DYWxsYmFja0ZuKHN3YXQpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3N3eW06Y29sbGVjdGlvbnMtbG9hZGVkJywgZnVuY3Rpb24gKCkgewogICAgICBzd2F0LmluaXRpYWxpemVBY3Rpb25CdXR0b25zKCc8PENvbGxlY3Rpb25zIEdyaWQgUEFSRU5UIFNlbGVjdG9yID4+Jyk7CiAgICB9KTsKICB9CiAgaWYgKCF3aW5kb3cuU3d5bUNhbGxiYWNrcykgewogICAgd2luZG93LlN3eW1DYWxsYmFja3MgPSBbXTsKICB9CiAgd2luZG93LlN3eW1DYWxsYmFja3MucHVzaChzd3ltQ2FsbGJhY2tGbik7Cjwvc2NyaXB0PgoKCiAgICAKCiAgICA8ZGl2IGNsYXNzPSJjYXJkLXdyYXBwZXIgcHJvZHVjdC1taW5pYXR1cmUgcHJvZHVjdC1jYXJkLXdyYXBwZXIgdW5kZXJsaW5lLWxpbmtzLWhvdmVyIGd0bS1jYXJkLXByb2R1Y3QgZ3RtLWNhcmQtcHJvZHVjdC1zaWVyby1jcmVtYS1hbnRpbWFjYy10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiBjYXJkLXByb2R1Y3QiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJTSUVSTyArIENSRU1BIEFOVElNQUNDIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDAzODk3NVciLAogICAgICAgICAgICAicHJpY2UiOiAi4oKsODksMDAiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJEciBQaWVycmUgUmljYXVkIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJiZXN0LWJlYXV0eS1hbmQtcGVyZnVtZXMiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTMiOiBudWxsLAogICAgICAgICAgICAiaXRlbV92YXJpYW50IjogIkRlZmF1bHQgVGl0bGUiCiAgICAgICAgfQogICAgJyBkYXRhLXByb2R1Y3QtaWQ9IjEwOTI0OTczNDkwNTA5IiBkYXRhLXByb2R1Y3QtbmFtZT0iU0lFUk8gKyBDUkVNQSBBTlRJTUFDQyIKICBkYXRhLXByb2R1Y3QtcHJpY2U9Ijg5LjAiCiAgZGF0YS1wcm9kdWN0LWJyYW5kPSJEciBQaWVycmUgUmljYXVkIgogIGRhdGEtcHJvZHVjdC1jYXRlZ29yeT0iIgogIGRhdGEtcHJvZHVjdC1wb3NpdGlvbj0iIj4KICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iCiAgICAgICAgY2FyZCBjYXJkLS1zdGFuZGFyZAogICAgICAgICBjYXJkLS1tZWRpYQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAiCiAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICA+CiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iY2FyZF9faW5uZXIgY29sb3ItYmFja2dyb3VuZC0xIGdyYWRpZW50IHJhdGlvIgogICAgICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgICAgICA+PGRpdiBjbGFzcz0iY2FyZF9fbWVkaWEiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpYSBtZWRpYS0tdHJhbnNwYXJlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3Jjc2V0PSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwNF9jOTFhNjg0OS1iMjIyLTQyN2YtYjViMC05YmE5NWZjZTdmMGEuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD0xNjUgMTY1dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwNF9jOTFhNjg0OS1iMjIyLTQyN2YtYjViMC05YmE5NWZjZTdmMGEuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD0zNjAgMzYwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwNF9jOTFhNjg0OS1iMjIyLTQyN2YtYjViMC05YmE5NWZjZTdmMGEuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD01MzMgNTMzdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwNF9jOTFhNjg0OS1iMjIyLTQyN2YtYjViMC05YmE5NWZjZTdmMGEuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD03MjAgNzIwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwNF9jOTFhNjg0OS1iMjIyLTQyN2YtYjViMC05YmE5NWZjZTdmMGEuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD05NDAgOTQwdywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwNF9jOTFhNjg0OS1iMjIyLTQyN2YtYjViMC05YmE5NWZjZTdmMGEuanBnP3Y9MTc5MDY4ODgxNSZ3aWR0aD0xMDY2IDEwNjZ3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA0X2M5MWE2ODQ5LWIyMjItNDI3Zi1iNWIwLTliYTk1ZmNlN2YwYS5qcGc/dj0xNzkwNjg4ODE1IDEyMDB3CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA0X2M5MWE2ODQ5LWIyMjItNDI3Zi1iNWIwLTliYTk1ZmNlN2YwYS5qcGc/dj0xNzkwNjg4ODE1JndpZHRoPTUzMyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM9IihtaW4td2lkdGg6IDE2MDBweCkgMzY3cHgsIChtaW4td2lkdGg6IDk5MHB4KSBjYWxjKCgxMDB2dyAtIDEzMHB4KSAvIDQpLCAobWluLXdpZHRoOiA3NTBweCkgY2FsYygoMTAwdncgLSAxMjBweCkgLyAzKSwgY2FsYygoMTAwdncgLSAzNXB4KSAvIDIpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9IlNJRVJPICsgQ1JFTUEgQU5USU1BQ0MgLSBEciBQaWVycmUgUmljYXVkIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibW90aW9uLXJlZHVjZSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyMDAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj48ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzM0OTA1MDkiIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzM0OTA1MDkiIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NDk5NjYxNTciIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL3NpZXJvLWNyZW1hLWFudGltYWNjIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERyIFBpZXJyZSBSaWNhdWQKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9ImNhcmRfX2hlYWRpbmcgY2FwaXRhbGl6ZSAgaDUiICBpZD0idGl0bGUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM0OTA1MDkiID4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3Byb2R1Y3RzL3NpZXJvLWNyZW1hLWFudGltYWNjIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM0OTA1MDkiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM0OTA1MDkgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM0OTA1MDkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHJpZXF1aWxpYnJhbnRlOiBzaWVybyArIGNyZW1hICAKICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFNJRVJPICsgQ1JFTUEgQU5USU1BQ0MKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWluZm9ybWF0aW9uIj48c3BhbiBjbGFzcz0iY2FwdGlvbi1sYXJnZSBsaWdodCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9faW5mb3JtYXRpb24tZm9ybS1yYXRpbmctcHJpY2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmF0aW5nLXByaWNlIj4KPGRpdgogIGNsYXNzPSIKICAgIHByaWNlICIKPgogIDxkaXYgY2xhc3M9InByaWNlX19jb250YWluZXIiPjxkaXYgY2xhc3M9InByaWNlX19yZWd1bGFyIj48c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgIOKCrDg5LDAwCiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPGRpdiBjbGFzcz0icHJpY2VfX3NhbGUiPgogICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIHNjb250YXRvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1zYWxlIHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIOKCrDg5LDAwCiAgICAgIDwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gZGkgbGlzdGlubzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxzIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAgICAKICAgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICA8L3M+CiAgICAgICAgPC9zcGFuPjwvZGl2PgogICAgPHNtYWxsIGNsYXNzPSJ1bml0LXByaWNlIGNhcHRpb24gaGlkZGVuIj4KICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+UHJlenpvIHVuaXRhcmlvPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLXVuaXQgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAgPHNwYW4+PC9zcGFuPgogICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPiZuYnNwO3BlciZuYnNwOzwvc3Bhbj4KICAgICAgICA8c3Bhbj4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvc3Bhbj4KICAgIDwvc21hbGw+CiAgPC9kaXY+PC9kaXY+Cgo8L2Rpdj48L2Rpdj4KCjxhIGhyZWY9Ii9wcm9kdWN0cy9zaWVyby1jcmVtYS1hbnRpbWFjYyIgY2xhc3M9InF1aWNrLWFkZCBxdWljay1hZGQtZXllIHF1aWNrLWFkZC1tb2JpbGUgZXh0cmEtbGFyZ2UtdXAtaGlkZSI+PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGFyaWEtaGlkZGVuPSJ0cnVlIiBmb2N1c2FibGU9ImZhbHNlIiBjbGFzcz0iaWNvbiBpY29uLWV5ZSIgd2lkdGg9IjI0Ljc2NCIgaGVpZ2h0PSIxMy4zMTgiPgogIDxnIGZpbGw9ImN1cnJlbnRDb2xvciIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iLjciIGNsaXAtcGF0aD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDEpIj4KICA8cGF0aCBkPSJNMTAuNDguNDRoLjAzN2ExMS45ODMgMTEuOTgzIDAgMCAxIDUuNjQxIDEuNDI0QTEyLjI1MyAxMi4yNTMgMCAwIDEgMTguNSAzLjQ5N2ExMi40NTcgMTIuNDU3IDAgMCAxIDEuNzM0IDEuODk0IDEyLjQyMiAxMi40MjIgMCAwIDEtMS43MjggMi4xMDYgMTIuMDc3IDEyLjA3NyAwIDAgMS0yLjM3OSAxLjgxIDExLjY3NiAxMS42NzYgMCAwIDEtMi43NzEgMS4xNjEgMTEuNiAxMS42IDAgMCAxLTMuMDYzLjQxaC0uMDM5YTExLjYxMyAxMS42MTMgMCAwIDEtMi45NzYtLjQgMTEuNjYzIDExLjY2MyAwIDAgMS0yLjctMS4xMDYgMTIuMDQ3IDEyLjA0NyAwIDAgMS0yLjMzNS0xLjcxNyAxMi40IDEyLjQgMCAwIDEtMS43MTItMiAxMi40NjQgMTIuNDY0IDAgMCAxIDEuNzUzLTIgMTIuMjcxIDEyLjI3MSAwIDAgMSAyLjM4OC0xLjcyMyAxMS45ODIgMTEuOTgyIDAgMCAxIDUuOC0xLjQ5M1ptMC0uNDRBMTIuNTg3IDEyLjU4NyAwIDAgMCAwIDUuNjU1YTEyLjMgMTIuMyAwIDAgMCAxMC4yNTMgNS42NjNoLjA0YTEyLjMyNCAxMi4zMjQgMCAwIDAgMTAuNDcxLTUuOTQyQTEyLjU3NSAxMi41NzUgMCAwIDAgMTAuNTE4LS4wMDNoLS4wNDEiLz4KICA8cGF0aCBkPSJNMTAuMzgyLjczNGE0Ljc0MSA0Ljc0MSAwIDAgMSAyLjcuODM5IDQuODg5IDQuODg5IDAgMCAxIC43MTUuNiA0Ljk1IDQuOTUgMCAwIDEgMS4zMTkgMi40OTMgNS4wOCA1LjA4IDAgMCAxIDAgMS45OTEgNC45NDggNC45NDggMCAwIDEtMS4zMTkgMi40OTMgNC44ODkgNC44ODkgMCAwIDEtLjcxNS42IDQuOCA0LjggMCAwIDEtLjgyLjQ1MyA0Ljc0OSA0Ljc0OSAwIDAgMS0zLjc1MyAwIDQuOCA0LjggMCAwIDEtLjgyLS40NTMgNC45MTUgNC45MTUgMCAwIDEtMS4zMDYtMS4zMzEgNC45NDkgNC45NDkgMCAwIDEtLjcyOC0xLjc2MyA1LjA4IDUuMDggMCAwIDEgMC0xLjk5MSA0Ljk0NCA0Ljk0NCAwIDAgMSAxLjMxOS0yLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LS42IDQuOCA0LjggMCAwIDEgLjgyLS40NTMgNC43MyA0LjczIDAgMCAxIDEuODc3LS4zODZtMC0uNWE1LjQyOSA1LjQyOSAwIDEgMCA1LjMzIDUuNDI5IDUuMzggNS4zOCAwIDAgMC01LjMzLTUuNDI5Ii8+CiAgPHBhdGggZD0iTTEzLjA4MyA1Ljc1OWEyLjY4MyAyLjY4MyAwIDEgMS0yLjY4Mi0yLjczMiAyLjcwNyAyLjcwNyAwIDAgMSAyLjY4MiAyLjczMiIvPgogIDwvZz4KPC9zdmc+CiAgPC9hPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50LWhvdmVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGFyaWEtbGFiZWw9IkFkZCB0byBXaXNobGlzdCIgZGF0YS13aXRoLWVwaT0idHJ1ZSIgY2xhc3M9InN3eW0tYnV0dG9uIHN3eW0tYWRkLXRvLXdpc2hsaXN0LXZpZXctcHJvZHVjdCBwcm9kdWN0XzEwOTI0OTczNDkwNTA5IiBkYXRhLXN3YWN0aW9uPSJhZGRUb1dpc2hsaXN0IiBkYXRhLXByb2R1Y3QtaWQ9IjEwOTI0OTczNDkwNTA5IiBkYXRhLXZhcmlhbnQtaWQ9IjU0OTA0NTQ5OTY2MTU3IiBkYXRhLXByb2R1Y3QtdXJsPSJodHRwczovL3d3dy5zdGFuaG9tZS5pdC9wcm9kdWN0cy9zaWVyby1jcmVtYS1hbnRpbWFjYyI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgUmllcXVpbGlicmFudGU6IFNpZXJvICsgQ3JlbWEgCiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX3ZhcmlhbnQtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgICAgICBTSUVSTyArIENSRU1BIEFOVElNQUNDCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHVsIGNsYXNzPSJsaXN0LXVuc3R5bGVkIGNhcmRfX3ZhcmlhbnQta2V5X3BvaW50cyI+PGxpPjxzcGFuPklsIHNldCBwZXJmZXR0byBwZXIgcmllcXVpbGlicmFyZSBnbGkgZWZmZXR0aSBkZWxsYSBtZW5vcGF1c2EuPC9zcGFuPjwvbGk+PC91bD48L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pg==
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1nb21tYWdlLWRvY2NpYS1saW1vbmUtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2InKTsKICAgIHByb2R1Y3RDYXJkcy5mb3JFYWNoKGZ1bmN0aW9uIChjYXJkKSB7CiAgICAgIGlmIChjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykgIT09IG51bGwpIHsKICAgICAgICBsaXN0TmFtZSA9IGNhcmQuY2xvc2VzdCgnLmd0bS10cmFja2luZy1jcm9zc3NlbGwnKS5nZXRBdHRyaWJ1dGUoJ2d0bS10cmFja2luZy1jcm9zc3NlbGwnKTsKICAgICAgfQogICAgICBjYXJkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgdmFyIHByb2R1Y3REYXRhID0gSlNPTi5wYXJzZShjYXJkLmdldEF0dHJpYnV0ZSgnZ3RtLWNhcmQtZGF0YScpKTsKICAgICAgICAvLyBOZWVkIHRvIHB1c2ggbGlzdE5hbWUKICAgICAgICBwcm9kdWN0RGF0YVsnaXRlbV9saXN0X25hbWUnXSA9IGxpc3ROYW1lOwogICAgICAgIC8vIFB1c2ggY2xpY2tlZCBwcm9kdWN0CiAgICAgICAgYXhJdGVtLnB1c2gocHJvZHVjdERhdGEpOwogICAgICAgIC8vIFNlbmQgImNsaWNrIiBldmVudAogICAgICAgIGRhdGFMYXllci5wdXNoKHsKICAgICAgICAgIGV2ZW50OiAnYXhfcHJvZHVjdF9jbGljaycsCiAgICAgICAgICBheEl0ZW06IGF4SXRlbQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwoKICAgIC8vIFB1c2ggYWxsIHByb2R1Y3QgaW4gZGF0YUxheWVyCiAgICBheFByb2R1Y3RMaXN0LnB1c2goewogICAgICBpdGVtX25hbWU6ICdHT01NQUdFK0RPQ0NJQSBMSU1PTkUnLAogICAgICBpdGVtX2lkOiAnSVRBX1BSREUwMDAzODk3N1cnLAogICAgICBwcmljZTogJ+KCrDIxLDk5JywKICAgICAgaXRlbV9icmFuZDogJ0tpb3RpcycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnS2lvdGlzJywKICAgICAgaXRlbV9jYXRlZ29yeTI6ICdJIHByb2RvdHRpIEtpb3RpcycsCiAgICAgIGl0ZW1fY2F0ZWdvcnkzOiAnJywKICAgICAgaXRlbV92YXJpYW50OiAnRGVmYXVsdCBUaXRsZScsCiAgICAgIGl0ZW1fbGlzdF9uYW1lOiBsaXN0TmFtZQogICAgfSk7CgogIH0pOwoKICBmdW5jdGlvbiBjbGlja1Byb2R1Y3QocHJvZHVjdERhdGEpIHt9Cjwvc2NyaXB0PgoKCjxzY3JpcHQgZGVmZXI+CiAgZnVuY3Rpb24gc3d5bUNhbGxiYWNrRm4oc3dhdCkgewogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc3d5bTpjb2xsZWN0aW9ucy1sb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgIHN3YXQuaW5pdGlhbGl6ZUFjdGlvbkJ1dHRvbnMoJzw8Q29sbGVjdGlvbnMgR3JpZCBQQVJFTlQgU2VsZWN0b3IgPj4nKTsKICAgIH0pOwogIH0KICBpZiAoIXdpbmRvdy5Td3ltQ2FsbGJhY2tzKSB7CiAgICB3aW5kb3cuU3d5bUNhbGxiYWNrcyA9IFtdOwogIH0KICB3aW5kb3cuU3d5bUNhbGxiYWNrcy5wdXNoKHN3eW1DYWxsYmFja0ZuKTsKPC9zY3JpcHQ+CgoKICAgIAoKICAgIDxkaXYgY2xhc3M9ImNhcmQtd3JhcHBlciBwcm9kdWN0LW1pbmlhdHVyZSBwcm9kdWN0LWNhcmQtd3JhcHBlciB1bmRlcmxpbmUtbGlua3MtaG92ZXIgZ3RtLWNhcmQtcHJvZHVjdCBndG0tY2FyZC1wcm9kdWN0LWdvbW1hZ2UtZG9jY2lhLWxpbW9uZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiBjYXJkLXByb2R1Y3QiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJHT01NQUdFK0RPQ0NJQSBMSU1PTkUiLAogICAgICAgICAgICAiaXRlbV9pZCI6ICJJVEFfUFJERTAwMDM4OTc3VyIsCiAgICAgICAgICAgICJwcmljZSI6ICLigqwyMSw5OSIsCiAgICAgICAgICAgICJpdGVtX2JyYW5kIjogIktpb3RpcyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MSI6ICIiLAogICAgICAgICAgICAiaXRlbV9jYXRlZ29yeTIiOiAib3VyLWtpb3Rpcy1wcm9kdWN0cyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzM2ODcxMTciIGRhdGEtcHJvZHVjdC1uYW1lPSJHT01NQUdFK0RPQ0NJQSBMSU1PTkUiCiAgZGF0YS1wcm9kdWN0LXByaWNlPSIyMS45OSIKICBkYXRhLXByb2R1Y3QtYnJhbmQ9Iktpb3RpcyIKICBkYXRhLXByb2R1Y3QtY2F0ZWdvcnk9IiIKICBkYXRhLXByb2R1Y3QtcG9zaXRpb249IiI+CiAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9IgogICAgICAgIGNhcmQgY2FyZC0tc3RhbmRhcmQKICAgICAgICAgY2FyZC0tbWVkaWEKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgICAKICAgICAgIgogICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImNhcmRfX2lubmVyIGNvbG9yLWJhY2tncm91bmQtMSBncmFkaWVudCByYXRpbyIKICAgICAgICAgICAgICAgICAgICBzdHlsZT0iLS1yYXRpby1wZXJjZW50OiAxMDAlOyIKICAgICAgICAgICAgPjxkaXYgY2xhc3M9ImNhcmRfX21lZGlhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWEgbWVkaWEtLXRyYW5zcGFyZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyY3NldD0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDZfYjA5MTFjNzQtMjZmYS00ZmY1LTkxNzctMzJmNzJmNGU4MGUwLmpwZz92PTE3OTA2ODg4MjEmd2lkdGg9MTY1IDE2NXcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDZfYjA5MTFjNzQtMjZmYS00ZmY1LTkxNzctMzJmNzJmNGU4MGUwLmpwZz92PTE3OTA2ODg4MjEmd2lkdGg9MzYwIDM2MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDZfYjA5MTFjNzQtMjZmYS00ZmY1LTkxNzctMzJmNzJmNGU4MGUwLmpwZz92PTE3OTA2ODg4MjEmd2lkdGg9NTMzIDUzM3csLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDZfYjA5MTFjNzQtMjZmYS00ZmY1LTkxNzctMzJmNzJmNGU4MGUwLmpwZz92PTE3OTA2ODg4MjEmd2lkdGg9NzIwIDcyMHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDZfYjA5MTFjNzQtMjZmYS00ZmY1LTkxNzctMzJmNzJmNGU4MGUwLmpwZz92PTE3OTA2ODg4MjEmd2lkdGg9OTQwIDk0MHcsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDZfYjA5MTFjNzQtMjZmYS00ZmY1LTkxNzctMzJmNzJmNGU4MGUwLmpwZz92PTE3OTA2ODg4MjEmd2lkdGg9MTA2NiAxMDY2dywvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwNl9iMDkxMWM3NC0yNmZhLTRmZjUtOTE3Ny0zMmY3MmY0ZTgwZTAuanBnP3Y9MTc5MDY4ODgyMSAxMjAwdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC9maWxlcy9JVEFfcHJvZHVjdF9DU18yOTMwNl9iMDkxMWM3NC0yNmZhLTRmZjUtOTE3Ny0zMmY3MmY0ZTgwZTAuanBnP3Y9MTc5MDY4ODgyMSZ3aWR0aD01MzMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzPSIobWluLXdpZHRoOiAxNjAwcHgpIDM2N3B4LCAobWluLXdpZHRoOiA5OTBweCkgY2FsYygoMTAwdncgLSAxMzBweCkgLyA0KSwgKG1pbi13aWR0aDogNzUwcHgpIGNhbGMoKDEwMHZ3IC0gMTIwcHgpIC8gMyksIGNhbGMoKDEwMHZ3IC0gMzVweCkgLyAyKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PSJHT01NQUdFK0RPQ0NJQSBMSU1PTkUgLSBLaW90aXMiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xMDkyNDk3MzY4NzExNyIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3MzY4NzExNyIgZGF0YS12YXJpYW50LWlkPSI1NDkwNDU1MDIyODMwMSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvZ29tbWFnZS1kb2NjaWEtbGltb25lIj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fYmFkZ2UgdG9wIGxlZnQiPjwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19jb250ZW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj48ZGl2IGNsYXNzPSJjYXJkX190eXBlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtpb3RpcwogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iY2FyZF9faGVhZGluZyBjYXBpdGFsaXplICBoNSIgIGlkPSJ0aXRsZS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYi0xMDkyNDk3MzY4NzExNyIgPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJvZHVjdHMvZ29tbWFnZS1kb2NjaWEtbGltb25lIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM2ODcxMTciIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM2ODcxMTcgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM2ODcxMTciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VsIGRvY2NpYSArIGVzZm9saWFudGUgbGltb25lIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgR09NTUFHRStET0NDSUEgTElNT05FCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbmZvcm1hdGlvbiI+PHNwYW4gY2xhc3M9ImNhcHRpb24tbGFyZ2UgbGlnaHQiPjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uLWZvcm0tcmF0aW5nLXByaWNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJhdGluZy1wcmljZSI+CjxkaXYKICBjbGFzcz0iCiAgICBwcmljZSAiCj4KICA8ZGl2IGNsYXNzPSJwcmljZV9fY29udGFpbmVyIj48ZGl2IGNsYXNzPSJwcmljZV9fcmVndWxhciI+PHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICDigqwyMSw5OQogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9InByaWNlX19zYWxlIj4KICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBzY29udGF0bzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tc2FsZSBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICDigqwyMSw5OQogICAgICA8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiB2aXN1YWxseS1oaWRkZW4tLWlubGluZSI+UHJlenpvIGRpIGxpc3Rpbm88L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8cyBjbGFzcz0icHJpY2UtaXRlbSBwcmljZS1pdGVtLS1yZWd1bGFyIj4KICAgICAgICAgICAgCiAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgICAgPC9zPgogICAgICAgIDwvc3Bhbj48L2Rpdj4KICAgIDxzbWFsbCBjbGFzcz0idW5pdC1wcmljZSBjYXB0aW9uIGhpZGRlbiI+CiAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4iPlByZXp6byB1bml0YXJpbzwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS11bml0IHByaWNlLWl0ZW0tLWxhc3QiPgogICAgICAgIDxzcGFuPjwvc3Bhbj4KICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+Lzwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj4mbmJzcDtwZXImbmJzcDs8L3NwYW4+CiAgICAgICAgPHNwYW4+CiAgICAgICAgPC9zcGFuPgogICAgICA8L3NwYW4+CiAgICA8L3NtYWxsPgogIDwvZGl2PjwvZGl2PgoKPC9kaXY+PC9kaXY+Cgo8YSBocmVmPSIvcHJvZHVjdHMvZ29tbWFnZS1kb2NjaWEtbGltb25lIiBjbGFzcz0icXVpY2stYWRkIHF1aWNrLWFkZC1leWUgcXVpY2stYWRkLW1vYmlsZSBleHRyYS1sYXJnZS11cC1oaWRlIj48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgYXJpYS1oaWRkZW49InRydWUiIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSJpY29uIGljb24tZXllIiB3aWR0aD0iMjQuNzY0IiBoZWlnaHQ9IjEzLjMxOCI+CiAgPGcgZmlsbD0iY3VycmVudENvbG9yIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIuNyIgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMSkiPgogIDxwYXRoIGQ9Ik0xMC40OC40NGguMDM3YTExLjk4MyAxMS45ODMgMCAwIDEgNS42NDEgMS40MjRBMTIuMjUzIDEyLjI1MyAwIDAgMSAxOC41IDMuNDk3YTEyLjQ1NyAxMi40NTcgMCAwIDEgMS43MzQgMS44OTQgMTIuNDIyIDEyLjQyMiAwIDAgMS0xLjcyOCAyLjEwNiAxMi4wNzcgMTIuMDc3IDAgMCAxLTIuMzc5IDEuODEgMTEuNjc2IDExLjY3NiAwIDAgMS0yLjc3MSAxLjE2MSAxMS42IDExLjYgMCAwIDEtMy4wNjMuNDFoLS4wMzlhMTEuNjEzIDExLjYxMyAwIDAgMS0yLjk3Ni0uNCAxMS42NjMgMTEuNjYzIDAgMCAxLTIuNy0xLjEwNiAxMi4wNDcgMTIuMDQ3IDAgMCAxLTIuMzM1LTEuNzE3IDEyLjQgMTIuNCAwIDAgMS0xLjcxMi0yIDEyLjQ2NCAxMi40NjQgMCAwIDEgMS43NTMtMiAxMi4yNzEgMTIuMjcxIDAgMCAxIDIuMzg4LTEuNzIzIDExLjk4MiAxMS45ODIgMCAwIDEgNS44LTEuNDkzWm0wLS40NEExMi41ODcgMTIuNTg3IDAgMCAwIDAgNS42NTVhMTIuMyAxMi4zIDAgMCAwIDEwLjI1MyA1LjY2M2guMDRhMTIuMzI0IDEyLjMyNCAwIDAgMCAxMC40NzEtNS45NDJBMTIuNTc1IDEyLjU3NSAwIDAgMCAxMC41MTgtLjAwM2gtLjA0MSIvPgogIDxwYXRoIGQ9Ik0xMC4zODIuNzM0YTQuNzQxIDQuNzQxIDAgMCAxIDIuNy44MzkgNC44ODkgNC44ODkgMCAwIDEgLjcxNS42IDQuOTUgNC45NSAwIDAgMSAxLjMxOSAyLjQ5MyA1LjA4IDUuMDggMCAwIDEgMCAxLjk5MSA0Ljk0OCA0Ljk0OCAwIDAgMS0xLjMxOSAyLjQ5MyA0Ljg4OSA0Ljg4OSAwIDAgMS0uNzE1LjYgNC44IDQuOCAwIDAgMS0uODIuNDUzIDQuNzQ5IDQuNzQ5IDAgMCAxLTMuNzUzIDAgNC44IDQuOCAwIDAgMS0uODItLjQ1MyA0LjkxNSA0LjkxNSAwIDAgMS0xLjMwNi0xLjMzMSA0Ljk0OSA0Ljk0OSAwIDAgMS0uNzI4LTEuNzYzIDUuMDggNS4wOCAwIDAgMSAwLTEuOTkxIDQuOTQ0IDQuOTQ0IDAgMCAxIDEuMzE5LTIuNDkzIDQuODg5IDQuODg5IDAgMCAxIC43MTUtLjYgNC44IDQuOCAwIDAgMSAuODItLjQ1MyA0LjczIDQuNzMgMCAwIDEgMS44NzctLjM4Nm0wLS41YTUuNDI5IDUuNDI5IDAgMSAwIDUuMzMgNS40MjkgNS4zOCA1LjM4IDAgMCAwLTUuMzMtNS40MjkiLz4KICA8cGF0aCBkPSJNMTMuMDgzIDUuNzU5YTIuNjgzIDIuNjgzIDAgMSAxLTIuNjgyLTIuNzMyIDIuNzA3IDIuNzA3IDAgMCAxIDIuNjgyIDIuNzMyIi8+CiAgPC9nPgo8L3N2Zz4KICA8L2E+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQtaG92ZXIiPgogICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbiB3aXRoIGRlZmF1bHQgZmlyc3QgdmFyaWFudCAtLT4KICAgICAgICAgICAgICAgIDxidXR0b24gYXJpYS1sYWJlbD0iQWRkIHRvIFdpc2hsaXN0IiBkYXRhLXdpdGgtZXBpPSJ0cnVlIiBjbGFzcz0ic3d5bS1idXR0b24gc3d5bS1hZGQtdG8td2lzaGxpc3Qtdmlldy1wcm9kdWN0IHByb2R1Y3RfMTA5MjQ5NzM2ODcxMTciIGRhdGEtc3dhY3Rpb249ImFkZFRvV2lzaGxpc3QiIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzM2ODcxMTciIGRhdGEtdmFyaWFudC1pZD0iNTQ5MDQ1NTAyMjgzMDEiIGRhdGEtcHJvZHVjdC11cmw9Imh0dHBzOi8vd3d3LnN0YW5ob21lLml0L3Byb2R1Y3RzL2dvbW1hZ2UtZG9jY2lhLWxpbW9uZSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZWwgRG9jY2lhICsgRXNmb2xpYW50ZSBMaW1vbmUKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIEdPTU1BR0UrRE9DQ0lBIExJTU9ORQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pjx1bCBjbGFzcz0ibGlzdC11bnN0eWxlZCBjYXJkX192YXJpYW50LWtleV9wb2ludHMiPjxsaT48c3Bhbj5JbCBzZXQgY2hlIHRpIGRvbmEgdW5hIHBpYWNldm9sZSBmcmVzY2hlenphIGRpIGxpbW9uZS48L3NwYW4+PC9saT48L3VsPjwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1sb29zZS1wb3dkLXBlcmYtY292MTAxLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnTE9PU0UgUE9XRCtQRVJGIENPVjEwMScsCiAgICAgIGl0ZW1faWQ6ICdJVEFfUFJERTAwMDM4OTc4VycsCiAgICAgIHByaWNlOiAn4oKsMjMsNTAnLAogICAgICBpdGVtX2JyYW5kOiAnRmxvcm1hcicsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnRmxvcm1hcicsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnSSBwcm9kb3R0aSBGbG9ybWFyJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtbG9vc2UtcG93ZC1wZXJmLWNvdjEwMS10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiBjYXJkLXByb2R1Y3QiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJMT09TRSBQT1dEK1BFUkYgQ09WMTAxIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDAzODk3OFciLAogICAgICAgICAgICAicHJpY2UiOiAi4oKsMjMsNTAiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJGbG9ybWFyIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJvdXItZmxvcm1hci1wcm9kdWN0cyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzM4MTgxODkiIGRhdGEtcHJvZHVjdC1uYW1lPSJMT09TRSBQT1dEK1BFUkYgQ09WMTAxIgogIGRhdGEtcHJvZHVjdC1wcmljZT0iMjMuNSIKICBkYXRhLXByb2R1Y3QtYnJhbmQ9IkZsb3JtYXIiCiAgZGF0YS1wcm9kdWN0LWNhdGVnb3J5PSIiCiAgZGF0YS1wcm9kdWN0LXBvc2l0aW9uPSIiPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA3XzIzMzEzZDU2LTllOWYtNDQzNi1iM2EwLWQzMTQ4ZWE2Mjg4NS5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA3XzIzMzEzZDU2LTllOWYtNDQzNi1iM2EwLWQzMTQ4ZWE2Mjg4NS5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA3XzIzMzEzZDU2LTllOWYtNDQzNi1iM2EwLWQzMTQ4ZWE2Mjg4NS5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA3XzIzMzEzZDU2LTllOWYtNDQzNi1iM2EwLWQzMTQ4ZWE2Mjg4NS5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA3XzIzMzEzZDU2LTllOWYtNDQzNi1iM2EwLWQzMTQ4ZWE2Mjg4NS5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA3XzIzMzEzZDU2LTllOWYtNDQzNi1iM2EwLWQzMTQ4ZWE2Mjg4NS5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDdfMjMzMTNkNTYtOWU5Zi00NDM2LWIzYTAtZDMxNDhlYTYyODg1LmpwZz92PTE3OTA2ODg4MjAgMTIwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDdfMjMzMTNkNTYtOWU5Zi00NDM2LWIzYTAtZDMxNDhlYTYyODg1LmpwZz92PTE3OTA2ODg4MjAmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iTE9PU0UgUE9XRCtQRVJGIENPVjEwMSAtIEZsb3JtYXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xMDkyNDk3MzgxODE4OSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3MzgxODE4OSIgZGF0YS12YXJpYW50LWlkPSI1NDkwNDU1MDM1OTM3MyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvbG9vc2UtcG93ZC1wZXJmLWNvdjEwMSI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9ybWFyCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGNhcGl0YWxpemUgIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTczODE4MTg5IiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9sb29zZS1wb3dkLXBlcmYtY292MTAxIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM4MTgxODkiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM4MTgxODkgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM4MTgxODkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHBlcmZlY3QgY292ZXJhZ2UgMTAxICsgbG9vc2UgcG93ZGVyIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgTE9PU0UgUE9XRCtQRVJGIENPVjEwMQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsMjMsNTAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsMjMsNTAKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmV6em8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tdW5pdCBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjwvZGl2PgoKPGEgaHJlZj0iL3Byb2R1Y3RzL2xvb3NlLXBvd2QtcGVyZi1jb3YxMDEiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xMDkyNDk3MzgxODE4OSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3MzgxODE4OSIgZGF0YS12YXJpYW50LWlkPSI1NDkwNDU1MDM1OTM3MyIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvbG9vc2UtcG93ZC1wZXJmLWNvdjEwMSI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgUGVyZmVjdCBDb3ZlcmFnZSAxMDEgKyBMb29zZSBQb3dkZXIKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIExPT1NFIFBPV0QrUEVSRiBDT1YxMDEKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+SWwgc2V0IGNoZSB0aSBkb25hIHVuYSBwZXJmZXppb25lIGEgbHVuZ2EgdGVudXRhITwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1sb29zZS1wb3dkLXBlcmYtY292MTAyLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnTE9PU0UgUE9XRCtQRVJGIENPVjEwMicsCiAgICAgIGl0ZW1faWQ6ICdJVEFfUFJERTAwMDM4OTc5VycsCiAgICAgIHByaWNlOiAn4oKsMjMsNTAnLAogICAgICBpdGVtX2JyYW5kOiAnRmxvcm1hcicsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnRmxvcm1hcicsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnSSBwcm9kb3R0aSBGbG9ybWFyJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtbG9vc2UtcG93ZC1wZXJmLWNvdjEwMi10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiBjYXJkLXByb2R1Y3QiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJMT09TRSBQT1dEK1BFUkYgQ09WMTAyIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDAzODk3OVciLAogICAgICAgICAgICAicHJpY2UiOiAi4oKsMjMsNTAiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJGbG9ybWFyIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJvdXItZmxvcm1hci1wcm9kdWN0cyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzM5NDkyNjEiIGRhdGEtcHJvZHVjdC1uYW1lPSJMT09TRSBQT1dEK1BFUkYgQ09WMTAyIgogIGRhdGEtcHJvZHVjdC1wcmljZT0iMjMuNSIKICBkYXRhLXByb2R1Y3QtYnJhbmQ9IkZsb3JtYXIiCiAgZGF0YS1wcm9kdWN0LWNhdGVnb3J5PSIiCiAgZGF0YS1wcm9kdWN0LXBvc2l0aW9uPSIiPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA4XzY3OTI5ZDViLWY5ZDAtNGUzMy1iOGRhLTA4NGIwYmY4ZGM1Yy5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA4XzY3OTI5ZDViLWY5ZDAtNGUzMy1iOGRhLTA4NGIwYmY4ZGM1Yy5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA4XzY3OTI5ZDViLWY5ZDAtNGUzMy1iOGRhLTA4NGIwYmY4ZGM1Yy5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA4XzY3OTI5ZDViLWY5ZDAtNGUzMy1iOGRhLTA4NGIwYmY4ZGM1Yy5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA4XzY3OTI5ZDViLWY5ZDAtNGUzMy1iOGRhLTA4NGIwYmY4ZGM1Yy5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA4XzY3OTI5ZDViLWY5ZDAtNGUzMy1iOGRhLTA4NGIwYmY4ZGM1Yy5qcGc/dj0xNzkwNjg4ODIwJndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDhfNjc5MjlkNWItZjlkMC00ZTMzLWI4ZGEtMDg0YjBiZjhkYzVjLmpwZz92PTE3OTA2ODg4MjAgMTIwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDhfNjc5MjlkNWItZjlkMC00ZTMzLWI4ZGEtMDg0YjBiZjhkYzVjLmpwZz92PTE3OTA2ODg4MjAmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iTE9PU0UgUE9XRCtQRVJGIENPVjEwMiAtIEZsb3JtYXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xMDkyNDk3Mzk0OTI2MSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3Mzk0OTI2MSIgZGF0YS12YXJpYW50LWlkPSI1NDkwNDU1MDQ5MDQ0NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvbG9vc2UtcG93ZC1wZXJmLWNvdjEwMiI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9ybWFyCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGNhcGl0YWxpemUgIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTczOTQ5MjYxIiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9sb29zZS1wb3dkLXBlcmYtY292MTAyIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM5NDkyNjEiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM5NDkyNjEgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzM5NDkyNjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHBlcmZlY3QgY292ZXJhZ2UgMTAyICsgbG9vc2UgcG93ZGVyIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgTE9PU0UgUE9XRCtQRVJGIENPVjEwMgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsMjMsNTAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsMjMsNTAKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmV6em8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tdW5pdCBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjwvZGl2PgoKPGEgaHJlZj0iL3Byb2R1Y3RzL2xvb3NlLXBvd2QtcGVyZi1jb3YxMDIiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xMDkyNDk3Mzk0OTI2MSIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3Mzk0OTI2MSIgZGF0YS12YXJpYW50LWlkPSI1NDkwNDU1MDQ5MDQ0NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvbG9vc2UtcG93ZC1wZXJmLWNvdjEwMiI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgUGVyZmVjdCBDb3ZlcmFnZSAxMDIgKyBMb29zZSBQb3dkZXIKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIExPT1NFIFBPV0QrUEVSRiBDT1YxMDIKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+SWwgc2V0IGNoZSB0aSBkb25hIHVuYSBwZXJmZXppb25lIGEgbHVuZ2EgdGVudXRhITwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=
Cgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC1yYXRpbmcuY3NzP3Y9MTU3NzcxODU0NTkyMTM3MTM3ODQxNzMwMTA3MTU5IiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIiAvPgo8bGluayBocmVmPSIvL3d3dy5zdGFuaG9tZS5pdC9jZG4vc2hvcC90LzMvYXNzZXRzL2NvbXBvbmVudC12b2x1bWUtcHJpY2luZy5jc3M/dj01NzY1MTQ2MDk1NDMwNjM5NTMzMTczMDEwNzE1NSIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4KCgoKCjxzY3JpcHQ+CiAgLy8gQ3JlYXRlIFByb2R1Y3QgTGlzdCBhcnJheQogIGlmICghYXhQcm9kdWN0TGlzdCkgewogICAgdmFyIGF4UHJvZHVjdExpc3QgPSBbXTsKICB9CgogIC8vIENyZWF0ZSBQcm9kdWN0IGNsaWNrIGFycmF5CiAgaWYgKCFheEl0ZW0pIHsKICAgIHZhciBheEl0ZW0gPSBbXTsKICB9CgogIGlmICghbGlzdE5hbWUpIHsKICAgIHZhciBsaXN0TmFtZSA9ICcnOwogIH0gZWxzZSB7CiAgICBsaXN0TmFtZSA9ICcnOwogIH0KCiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgIC8vIE9uY2xpY2sgZXZlbnQKICAgIHZhciBwcm9kdWN0Q2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ3RtLWNhcmQtcHJvZHVjdC1sb29zZS1wb3dkLXBlcmYtY292MTEzLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiJyk7CiAgICBwcm9kdWN0Q2FyZHMuZm9yRWFjaChmdW5jdGlvbiAoY2FyZCkgewogICAgICBpZiAoY2FyZC5jbG9zZXN0KCcuZ3RtLXRyYWNraW5nLWNyb3Nzc2VsbCcpICE9PSBudWxsKSB7CiAgICAgICAgbGlzdE5hbWUgPSBjYXJkLmNsb3Nlc3QoJy5ndG0tdHJhY2tpbmctY3Jvc3NzZWxsJykuZ2V0QXR0cmlidXRlKCdndG0tdHJhY2tpbmctY3Jvc3NzZWxsJyk7CiAgICAgIH0KICAgICAgY2FyZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIHZhciBwcm9kdWN0RGF0YSA9IEpTT04ucGFyc2UoY2FyZC5nZXRBdHRyaWJ1dGUoJ2d0bS1jYXJkLWRhdGEnKSk7CiAgICAgICAgLy8gTmVlZCB0byBwdXNoIGxpc3ROYW1lCiAgICAgICAgcHJvZHVjdERhdGFbJ2l0ZW1fbGlzdF9uYW1lJ10gPSBsaXN0TmFtZTsKICAgICAgICAvLyBQdXNoIGNsaWNrZWQgcHJvZHVjdAogICAgICAgIGF4SXRlbS5wdXNoKHByb2R1Y3REYXRhKTsKICAgICAgICAvLyBTZW5kICJjbGljayIgZXZlbnQKICAgICAgICBkYXRhTGF5ZXIucHVzaCh7CiAgICAgICAgICBldmVudDogJ2F4X3Byb2R1Y3RfY2xpY2snLAogICAgICAgICAgYXhJdGVtOiBheEl0ZW0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBQdXNoIGFsbCBwcm9kdWN0IGluIGRhdGFMYXllcgogICAgYXhQcm9kdWN0TGlzdC5wdXNoKHsKICAgICAgaXRlbV9uYW1lOiAnTE9PU0UgUE9XRCtQRVJGIENPVjExMycsCiAgICAgIGl0ZW1faWQ6ICdJVEFfUFJERTAwMDM4OTgwVycsCiAgICAgIHByaWNlOiAn4oKsMjMsNTAnLAogICAgICBpdGVtX2JyYW5kOiAnRmxvcm1hcicsCiAgICAgIGl0ZW1fY2F0ZWdvcnkxOiAnRmxvcm1hcicsCiAgICAgIGl0ZW1fY2F0ZWdvcnkyOiAnSSBwcm9kb3R0aSBGbG9ybWFyJywKICAgICAgaXRlbV9jYXRlZ29yeTM6ICcnLAogICAgICBpdGVtX3ZhcmlhbnQ6ICdEZWZhdWx0IFRpdGxlJywKICAgICAgaXRlbV9saXN0X25hbWU6IGxpc3ROYW1lCiAgICB9KTsKCiAgfSk7CgogIGZ1bmN0aW9uIGNsaWNrUHJvZHVjdChwcm9kdWN0RGF0YSkge30KPC9zY3JpcHQ+CgoKPHNjcmlwdCBkZWZlcj4KICBmdW5jdGlvbiBzd3ltQ2FsbGJhY2tGbihzd2F0KSB7CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzd3ltOmNvbGxlY3Rpb25zLWxvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgc3dhdC5pbml0aWFsaXplQWN0aW9uQnV0dG9ucygnPDxDb2xsZWN0aW9ucyBHcmlkIFBBUkVOVCBTZWxlY3RvciA+PicpOwogICAgfSk7CiAgfQogIGlmICghd2luZG93LlN3eW1DYWxsYmFja3MpIHsKICAgIHdpbmRvdy5Td3ltQ2FsbGJhY2tzID0gW107CiAgfQogIHdpbmRvdy5Td3ltQ2FsbGJhY2tzLnB1c2goc3d5bUNhbGxiYWNrRm4pOwo8L3NjcmlwdD4KCgogICAgCgogICAgPGRpdiBjbGFzcz0iY2FyZC13cmFwcGVyIHByb2R1Y3QtbWluaWF0dXJlIHByb2R1Y3QtY2FyZC13cmFwcGVyIHVuZGVybGluZS1saW5rcy1ob3ZlciBndG0tY2FyZC1wcm9kdWN0IGd0bS1jYXJkLXByb2R1Y3QtbG9vc2UtcG93ZC1wZXJmLWNvdjExMy10ZW1wbGF0ZS0tMjM3NjI3MDI5OTE2OTNfXzY3ZDdkYzRjLWVhYjEtNGVkMi1hN2JmLTI4MDY2ZmY1ZGRjYiBjYXJkLXByb2R1Y3QiIGd0bS1jYXJkLWRhdGE9JwogICAgICAgIHsKICAgICAgICAgICAgIml0ZW1fbmFtZSI6ICJMT09TRSBQT1dEK1BFUkYgQ09WMTEzIiwKICAgICAgICAgICAgIml0ZW1faWQiOiAiSVRBX1BSREUwMDAzODk4MFciLAogICAgICAgICAgICAicHJpY2UiOiAi4oKsMjMsNTAiLAogICAgICAgICAgICAiaXRlbV9icmFuZCI6ICJGbG9ybWFyIiwKICAgICAgICAgICAgIml0ZW1fY2F0ZWdvcnkxIjogIiIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MiI6ICJvdXItZmxvcm1hci1wcm9kdWN0cyIsCiAgICAgICAgICAgICJpdGVtX2NhdGVnb3J5MyI6IG51bGwsCiAgICAgICAgICAgICJpdGVtX3ZhcmlhbnQiOiAiRGVmYXVsdCBUaXRsZSIKICAgICAgICB9CiAgICAnIGRhdGEtcHJvZHVjdC1pZD0iMTA5MjQ5NzQwODAzMzMiIGRhdGEtcHJvZHVjdC1uYW1lPSJMT09TRSBQT1dEK1BFUkYgQ09WMTEzIgogIGRhdGEtcHJvZHVjdC1wcmljZT0iMjMuNSIKICBkYXRhLXByb2R1Y3QtYnJhbmQ9IkZsb3JtYXIiCiAgZGF0YS1wcm9kdWN0LWNhdGVnb3J5PSIiCiAgZGF0YS1wcm9kdWN0LXBvc2l0aW9uPSIiPgogICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSIKICAgICAgICBjYXJkIGNhcmQtLXN0YW5kYXJkCiAgICAgICAgIGNhcmQtLW1lZGlhCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICAgCiAgICAgICIKICAgICAgICAgICAgICAgIHN0eWxlPSItLXJhdGlvLXBlcmNlbnQ6IDEwMCU7IgogICAgICAgID4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJjYXJkX19pbm5lciBjb2xvci1iYWNrZ3JvdW5kLTEgZ3JhZGllbnQgcmF0aW8iCiAgICAgICAgICAgICAgICAgICAgc3R5bGU9Ii0tcmF0aW8tcGVyY2VudDogMTAwJTsiCiAgICAgICAgICAgID48ZGl2IGNsYXNzPSJjYXJkX19tZWRpYSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1lZGlhIG1lZGlhLS10cmFuc3BhcmVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmNzZXQ9Ii8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA5XzFjN2Y2OTAxLTNkMzMtNDRhOC1iODI1LTFhMmZkZjQxNjU4NS5qcGc/dj0xNzkwNjg4ODIxJndpZHRoPTE2NSAxNjV3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA5XzFjN2Y2OTAxLTNkMzMtNDRhOC1iODI1LTFhMmZkZjQxNjU4NS5qcGc/dj0xNzkwNjg4ODIxJndpZHRoPTM2MCAzNjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA5XzFjN2Y2OTAxLTNkMzMtNDRhOC1iODI1LTFhMmZkZjQxNjU4NS5qcGc/dj0xNzkwNjg4ODIxJndpZHRoPTUzMyA1MzN3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA5XzFjN2Y2OTAxLTNkMzMtNDRhOC1iODI1LTFhMmZkZjQxNjU4NS5qcGc/dj0xNzkwNjg4ODIxJndpZHRoPTcyMCA3MjB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA5XzFjN2Y2OTAxLTNkMzMtNDRhOC1iODI1LTFhMmZkZjQxNjU4NS5qcGc/dj0xNzkwNjg4ODIxJndpZHRoPTk0MCA5NDB3LC8vd3d3LnN0YW5ob21lLml0L2Nkbi9zaG9wL2ZpbGVzL0lUQV9wcm9kdWN0X0NTXzI5MzA5XzFjN2Y2OTAxLTNkMzMtNDRhOC1iODI1LTFhMmZkZjQxNjU4NS5qcGc/dj0xNzkwNjg4ODIxJndpZHRoPTEwNjYgMTA2NncsLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDlfMWM3ZjY5MDEtM2QzMy00NGE4LWI4MjUtMWEyZmRmNDE2NTg1LmpwZz92PTE3OTA2ODg4MjEgMTIwMHcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz0iLy93d3cuc3RhbmhvbWUuaXQvY2RuL3Nob3AvZmlsZXMvSVRBX3Byb2R1Y3RfQ1NfMjkzMDlfMWM3ZjY5MDEtM2QzMy00NGE4LWI4MjUtMWEyZmRmNDE2NTg1LmpwZz92PTE3OTA2ODg4MjEmd2lkdGg9NTMzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplcz0iKG1pbi13aWR0aDogMTYwMHB4KSAzNjdweCwgKG1pbi13aWR0aDogOTkwcHgpIGNhbGMoKDEwMHZ3IC0gMTMwcHgpIC8gNCksIChtaW4td2lkdGg6IDc1MHB4KSBjYWxjKCgxMDB2dyAtIDEyMHB4KSAvIDMpLCBjYWxjKCgxMDB2dyAtIDM1cHgpIC8gMikiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD0iTE9PU0UgUE9XRCtQRVJGIENPVjExMyAtIEZsb3JtYXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJtb3Rpb24tcmVkdWNlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nPSJsYXp5IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTIwMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMjAwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PjxkaXYgY2xhc3M9ImNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24gd2l0aCBkZWZhdWx0IGZpcnN0IHZhcmlhbnQgLS0+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xMDkyNDk3NDA4MDMzMyIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3NDA4MDMzMyIgZGF0YS12YXJpYW50LWlkPSI1NDkwNDU1MDY1NDI4NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvbG9vc2UtcG93ZC1wZXJmLWNvdjExMyI+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd3ltIFdpc2hsaXN0IFBsdXMgRVBJIEJ1dHRvbi0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2JhZGdlIHRvcCBsZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbiI+PGRpdiBjbGFzcz0iY2FyZF9fdHlwZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9ybWFyCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PjxwIGNsYXNzPSJjYXJkX19oZWFkaW5nIGNhcGl0YWxpemUgIGg1IiAgaWQ9InRpdGxlLXRlbXBsYXRlLS0yMzc2MjcwMjk5MTY5M19fNjdkN2RjNGMtZWFiMS00ZWQyLWE3YmYtMjgwNjZmZjVkZGNiLTEwOTI0OTc0MDgwMzMzIiA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcm9kdWN0cy9sb29zZS1wb3dkLXBlcmYtY292MTEzIiBpZD0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzQwODAzMzMiIGNsYXNzPSJmdWxsLXVuc3R5bGVkLWxpbmsgZnVsbC11bnN0eWxlZC1saW5rLXByb2R1Y3QiIGFyaWEtbGFiZWxsZWRieT0iQ2FyZExpbmstdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzQwODAzMzMgQmFkZ2UtdGVtcGxhdGUtLTIzNzYyNzAyOTkxNjkzX182N2Q3ZGM0Yy1lYWIxLTRlZDItYTdiZi0yODA2NmZmNWRkY2ItMTA5MjQ5NzQwODAzMzMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0IHBlcmZlY3QgY292ZXJhZ2UgMTEzICsgbG9vc2UgcG93ZGVyIAogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX192YXJpYW50LXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgTE9PU0UgUE9XRCtQRVJGIENPVjExMwogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW5mb3JtYXRpb24iPjxzcGFuIGNsYXNzPSJjYXB0aW9uLWxhcmdlIGxpZ2h0Ij48L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19pbmZvcm1hdGlvbi1mb3JtLXJhdGluZy1wcmljZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyYXRpbmctcHJpY2UiPgo8ZGl2CiAgY2xhc3M9IgogICAgcHJpY2UgIgo+CiAgPGRpdiBjbGFzcz0icHJpY2VfX2NvbnRhaW5lciI+PGRpdiBjbGFzcz0icHJpY2VfX3JlZ3VsYXIiPjxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXJlZ3VsYXIiPgogICAgICAgICAg4oKsMjMsNTAKICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJwcmljZV9fc2FsZSI+CiAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIHZpc3VhbGx5LWhpZGRlbi0taW5saW5lIj5QcmV6em8gc2NvbnRhdG88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tLXNhbGUgcHJpY2UtaXRlbS0tbGFzdCI+CiAgICAgICAg4oKsMjMsNTAKICAgICAgPC9zcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJ2aXN1YWxseS1oaWRkZW4gdmlzdWFsbHktaGlkZGVuLS1pbmxpbmUiPlByZXp6byBkaSBsaXN0aW5vPC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgICAgPHMgY2xhc3M9InByaWNlLWl0ZW0gcHJpY2UtaXRlbS0tcmVndWxhciI+CiAgICAgICAgICAgIAogICAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgIDwvcz4KICAgICAgICA8L3NwYW4+PC9kaXY+CiAgICA8c21hbGwgY2xhc3M9InVuaXQtcHJpY2UgY2FwdGlvbiBoaWRkZW4iPgogICAgICA8c3BhbiBjbGFzcz0idmlzdWFsbHktaGlkZGVuIj5QcmV6em8gdW5pdGFyaW88L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJwcmljZS1pdGVtIHByaWNlLWl0ZW0tdW5pdCBwcmljZS1pdGVtLS1sYXN0Ij4KICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiPi88L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpc3VhbGx5LWhpZGRlbiI+Jm5ic3A7cGVyJm5ic3A7PC9zcGFuPgogICAgICAgIDxzcGFuPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9zcGFuPgogICAgPC9zbWFsbD4KICA8L2Rpdj48L2Rpdj4KCjwvZGl2PjwvZGl2PgoKPGEgaHJlZj0iL3Byb2R1Y3RzL2xvb3NlLXBvd2QtcGVyZi1jb3YxMTMiIGNsYXNzPSJxdWljay1hZGQgcXVpY2stYWRkLWV5ZSBxdWljay1hZGQtbW9iaWxlIGV4dHJhLWxhcmdlLXVwLWhpZGUiPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9Imljb24gaWNvbi1leWUiIHdpZHRoPSIyNC43NjQiIGhlaWdodD0iMTMuMzE4Ij4KICA8ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9Ii43IiBjbGlwLXBhdGg9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSI+CiAgPHBhdGggZD0iTTEwLjQ4LjQ0aC4wMzdhMTEuOTgzIDExLjk4MyAwIDAgMSA1LjY0MSAxLjQyNEExMi4yNTMgMTIuMjUzIDAgMCAxIDE4LjUgMy40OTdhMTIuNDU3IDEyLjQ1NyAwIDAgMSAxLjczNCAxLjg5NCAxMi40MjIgMTIuNDIyIDAgMCAxLTEuNzI4IDIuMTA2IDEyLjA3NyAxMi4wNzcgMCAwIDEtMi4zNzkgMS44MSAxMS42NzYgMTEuNjc2IDAgMCAxLTIuNzcxIDEuMTYxIDExLjYgMTEuNiAwIDAgMS0zLjA2My40MWgtLjAzOWExMS42MTMgMTEuNjEzIDAgMCAxLTIuOTc2LS40IDExLjY2MyAxMS42NjMgMCAwIDEtMi43LTEuMTA2IDEyLjA0NyAxMi4wNDcgMCAwIDEtMi4zMzUtMS43MTcgMTIuNCAxMi40IDAgMCAxLTEuNzEyLTIgMTIuNDY0IDEyLjQ2NCAwIDAgMSAxLjc1My0yIDEyLjI3MSAxMi4yNzEgMCAwIDEgMi4zODgtMS43MjMgMTEuOTgyIDExLjk4MiAwIDAgMSA1LjgtMS40OTNabTAtLjQ0QTEyLjU4NyAxMi41ODcgMCAwIDAgMCA1LjY1NWExMi4zIDEyLjMgMCAwIDAgMTAuMjUzIDUuNjYzaC4wNGExMi4zMjQgMTIuMzI0IDAgMCAwIDEwLjQ3MS01Ljk0MkExMi41NzUgMTIuNTc1IDAgMCAwIDEwLjUxOC0uMDAzaC0uMDQxIi8+CiAgPHBhdGggZD0iTTEwLjM4Mi43MzRhNC43NDEgNC43NDEgMCAwIDEgMi43LjgzOSA0Ljg4OSA0Ljg4OSAwIDAgMSAuNzE1LjYgNC45NSA0Ljk1IDAgMCAxIDEuMzE5IDIuNDkzIDUuMDggNS4wOCAwIDAgMSAwIDEuOTkxIDQuOTQ4IDQuOTQ4IDAgMCAxLTEuMzE5IDIuNDkzIDQuODg5IDQuODg5IDAgMCAxLS43MTUuNiA0LjggNC44IDAgMCAxLS44Mi40NTMgNC43NDkgNC43NDkgMCAwIDEtMy43NTMgMCA0LjggNC44IDAgMCAxLS44Mi0uNDUzIDQuOTE1IDQuOTE1IDAgMCAxLTEuMzA2LTEuMzMxIDQuOTQ5IDQuOTQ5IDAgMCAxLS43MjgtMS43NjMgNS4wOCA1LjA4IDAgMCAxIDAtMS45OTEgNC45NDQgNC45NDQgMCAwIDEgMS4zMTktMi40OTMgNC44ODkgNC44ODkgMCAwIDEgLjcxNS0uNiA0LjggNC44IDAgMCAxIC44Mi0uNDUzIDQuNzMgNC43MyAwIDAgMSAxLjg3Ny0uMzg2bTAtLjVhNS40MjkgNS40MjkgMCAxIDAgNS4zMyA1LjQyOSA1LjM4IDUuMzggMCAwIDAtNS4zMy01LjQyOSIvPgogIDxwYXRoIGQ9Ik0xMy4wODMgNS43NTlhMi42ODMgMi42ODMgMCAxIDEtMi42ODItMi43MzIgMi43MDcgMi43MDcgMCAwIDEgMi42ODIgMi43MzIiLz4KICA8L2c+Cjwvc3ZnPgogIDwvYT48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fY29udGVudC1ob3ZlciI+CiAgICAgICAgICAgICAgICA8IS0tIFN3eW0gV2lzaGxpc3QgUGx1cyBFUEkgQnV0dG9uIHdpdGggZGVmYXVsdCBmaXJzdCB2YXJpYW50IC0tPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBhcmlhLWxhYmVsPSJBZGQgdG8gV2lzaGxpc3QiIGRhdGEtd2l0aC1lcGk9InRydWUiIGNsYXNzPSJzd3ltLWJ1dHRvbiBzd3ltLWFkZC10by13aXNobGlzdC12aWV3LXByb2R1Y3QgcHJvZHVjdF8xMDkyNDk3NDA4MDMzMyIgZGF0YS1zd2FjdGlvbj0iYWRkVG9XaXNobGlzdCIgZGF0YS1wcm9kdWN0LWlkPSIxMDkyNDk3NDA4MDMzMyIgZGF0YS12YXJpYW50LWlkPSI1NDkwNDU1MDY1NDI4NSIgZGF0YS1wcm9kdWN0LXVybD0iaHR0cHM6Ly93d3cuc3RhbmhvbWUuaXQvcHJvZHVjdHMvbG9vc2UtcG93ZC1wZXJmLWNvdjExMyI+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwhLS0gU3d5bSBXaXNobGlzdCBQbHVzIEVQSSBCdXR0b24tLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmRfX2luZm9ybWF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXQgUGVyZmVjdCBDb3ZlcmFnZSAxMTMgKyBMb29zZSBQb3dkZXIKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZF9fdmFyaWFudC10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIExPT1NFIFBPV0QrUEVSRiBDT1YxMTMKICAgICAgICAgICAgICAgICAgICA8L2Rpdj48dWwgY2xhc3M9Imxpc3QtdW5zdHlsZWQgY2FyZF9fdmFyaWFudC1rZXlfcG9pbnRzIj48bGk+PHNwYW4+SWwgc2V0IGNoZSB0aSBkb25hIHVuYSBwZXJmZXppb25lIGEgbHVuZ2EgdGVudXRhITwvc3Bhbj48L2xpPjwvdWw+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4=