{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8IS0tCiAgICDilZTilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZcKICAgIOKVkSAgQlJBTkRIQU5EU0hBS0UgT0ZGSUNJQUwgQ09ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjCiAgICDilZEgIEZJTEU6IG9zY2FyLWFpaG9yaXpvbnMtcHJpY2luZy1TTFVHLWFpaG9yaXpvbnMtVjEuaHRtbCAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgU0xVRzogYWlob3Jpem9ucy5icmFuZGhhbmRzaGFrZS5jb20vYWlob3Jpem9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWRICBWRVJTSU9OOiBWLTIgT0ZGSUNJQUwgKFdoYXRzQXBwIERpcmVjdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIExBU1QgVVBEQVRFRDogSmFudWFyeSAyMDI2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgU1RBVFVTOiDinIUgTElWRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVowogICAg4pWRICBQSU9ORUVSOiBPc2NhciBNa2FkbywgTVBSU0ssIE1NU0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIEJSQU5EOiBBSSBIb3Jpem9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgRElWSVNJT046IFRoZSBBZnJpY2EgQ2hyb25pY2xlcyB8IEFmcmljYSBGcm9udGxpbmUgTWVkaWEgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWRICBQSE9ORTogKzI1NCA3OTAgMjI1IDQyMiAoTS1QZXNhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIFdIQVRTQVBQOiArMjU0IDEwOCAyNDMgNzg0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIEVNQUlMIEFMRVJUUzogc2hvcGxvY2FsYnVzaW5lc3NhZ2VuY3lAZ21haWwuY29tICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEKICAgIOKVkSAgQkFER0U6IPCfh7Dwn4eqIEtlbnlhIEh1YiBMZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMKICAgIOKVkSAgUkVESVJFQ1RTIFRPOiAvZGVzaWduLW5leHRzdGVwcz9yZWY9YWlob3Jpem9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjCiAgICDilZEgIMKpIDIwMjYgTXVrYXNhIFZlbnR1cmUgUGFydG5lcnMgTExDLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAg4pWRCiAgICDilZEgIPCflJAgUFJPVEVDVEVEIENPREUgLSBVbmF1dGhvcml6ZWQgY29weWluZyBwcm9oaWJpdGVkLiAgICAgICAgICAgICAgICAgICAgICAgIOKVkQogICAg4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdCiAgICAtLT4KICAgIAogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgCiAgICA8IS0tID09PT09PT09PT0gU0VDVVJJVFkgSEVBREVSUyA9PT09PT09PT09IC0tPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1GcmFtZS1PcHRpb25zIiBjb250ZW50PSJTQU1FT1JJR0lOIj4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJmcmFtZS1hbmNlc3RvcnMgJ3NlbGYnIGh0dHBzOi8vKi5icmFuZGhhbmRzaGFrZS5jb20gaHR0cHM6Ly8qLmhhbmRzaGFrZS5hZnJpY2EiPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1Db250ZW50LVR5cGUtT3B0aW9ucyIgY29udGVudD0ibm9zbmlmZiI+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJYLVhTUy1Qcm90ZWN0aW9uIiBjb250ZW50PSIxOyBtb2RlPWJsb2NrIj4KICAgIDxtZXRhIG5hbWU9InJlZmVycmVyIiBjb250ZW50PSJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luIj4KICAgIDwhLS0gPT09PT09PT09PSBFTkQgU0VDVVJJVFkgPT09PT09PT09PSAtLT4KICAgIAogICAgPHRpdGxlPkFJIEhvcml6b25zIHwgT3NjYXIgTWthZG8gfCBWaXJ0dWFsIEJ1c2luZXNzIENhcmRzIEtlbnlhIHwgQnJhbmRIYW5kc2hha2U8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkdldCB5b3VyIHByZW1pdW0gdmlydHVhbCBidXNpbmVzcyBjYXJkIGZyb20gT3NjYXIgTWthZG8gLSBLZW55YSBIdWIgTGVhZGVyIGF0IEFJIEhvcml6b25zLiBQcm9mZXNzaW9uYWwgZGlnaXRhbCBjYXJkcyBzdGFydGluZyBmcm9tICQxMC4gTS1QZXNhIGFjY2VwdGVkLiI+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3ciPgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vYWlob3Jpem9ucy5icmFuZGhhbmRzaGFrZS5jb20vYWlob3Jpem9ucyI+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PVBsYXlmYWlyK0Rpc3BsYXk6d2dodEA0MDA7NTAwOzYwMDs3MDA7ODAwJmZhbWlseT1OdW5pdG86d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIAogICAgPHN0eWxlPgogICAgICAgIDpyb290IHsKICAgICAgICAgICAgLS1uYXZ5OiAjMEQxQjJBOwogICAgICAgICAgICAtLWluZGlnbzogIzFDMUY0QTsKICAgICAgICAgICAgLS1nb2xkOiAjRDRBRjM3OwogICAgICAgICAgICAtLWl2b3J5OiAjRjhGNEVDOwogICAgICAgICAgICAtLWRlZXBnb2xkOiAjQjg5NzJFOwogICAgICAgICAgICAtLWNoYXJjb2FsOiAjMGEwYTEyOwogICAgICAgICAgICAtLWtlbnlhLWdyZWVuOiAjMTZhMzRhOwogICAgICAgICAgICAtLWtlbnlhLWdyZWVuLWRhcms6ICMxNTgwM2Q7CiAgICAgICAgICAgIC0tY3lhbjogIzA2YjZkNDsKICAgICAgICAgICAgLS10ZWFsOiAjMTRiOGE2OwogICAgICAgICAgICAtLXB1cnBsZTogIzhiNWNmNjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgKiB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQogICAgICAgIGh0bWwgeyBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsgfQogICAgICAgIAogICAgICAgIGJvZHkgewogICAgICAgICAgICBmb250LWZhbWlseTogJ051bml0bycsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNoYXJjb2FsKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogQU5JTUFURUQgQkFDS0dST1VORCAqLwogICAgICAgIC5iZy1tYXN0ZXIgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjAlIDIwJSwgcmdiYSgyMiwgMTYzLCA3NCwgMC4yNSkgMCUsIHRyYW5zcGFyZW50IDUwJSksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA4MCUgODAlLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yKSAwJSwgdHJhbnNwYXJlbnQgNDAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDUwJSA1MCUsIHJnYmEoNiwgMTgyLCAyMTIsIDAuMTUpIDAlLCB0cmFuc3BhcmVudCA2MCUpLAogICAgICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0tY2hhcmNvYWwpIDAlLCB2YXIoLS1uYXZ5KSA1MCUsIHZhcigtLWluZGlnbykgMTAwJSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5mbG9hdGluZy1vcmJzIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiAxOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KICAgICAgICAub3JiIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGZpbHRlcjogYmx1cig0MHB4KTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdE9yYiAyMHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIC5vcmItMSB7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweDsgYmFja2dyb3VuZDogcmdiYSgyMiwgMTYzLCA3NCwgMC4xNSk7IHRvcDogMTAlOyBsZWZ0OiAxMCU7IGFuaW1hdGlvbi1kZWxheTogMHM7IH0KICAgICAgICAub3JiLTIgeyB3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHg7IGJhY2tncm91bmQ6IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEyKTsgdG9wOiA2MCU7IHJpZ2h0OiAxMCU7IGFuaW1hdGlvbi1kZWxheTogLTVzOyB9CiAgICAgICAgLm9yYi0zIHsgd2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDI1MHB4OyBiYWNrZ3JvdW5kOiByZ2JhKDYsIDE4MiwgMjEyLCAwLjEpOyBib3R0b206IDIwJTsgbGVmdDogMzAlOyBhbmltYXRpb24tZGVsYXk6IC0xMHM7IH0KICAgICAgICAKICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0T3JiIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKSBzY2FsZSgxKTsgfQogICAgICAgICAgICAyNSUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgzMHB4LCAtMzBweCkgc2NhbGUoMS4xKTsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgMjBweCkgc2NhbGUoMC45KTsgfQogICAgICAgICAgICA3NSUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAxMHB4KSBzY2FsZSgxLjA1KTsgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAucGFnZS1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgICAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBUT1AgTkFWICovCiAgICAgICAgLnRvcG5hdiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogMTVweCAyMHB4OwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyMiwgMTYzLCA3NCwgMC4zKTsKICAgICAgICB9CiAgICAgICAgLm5hdi1icmFuZCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgIH0KICAgICAgICAubmF2LWxpbmtzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgIH0KICAgICAgICAubmF2LWxpbmtzIGEgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4zczsKICAgICAgICB9CiAgICAgICAgLm5hdi1saW5rcyBhOmhvdmVyIHsgY29sb3I6IHZhcigtLWtlbnlhLWdyZWVuKTsgfQogICAgICAgIAogICAgICAgIC8qIFNDUk9MTElORyBCQU5ORVIgKi8KICAgICAgICAuY29sb3Itc2Nyb2xsLWNvbnRhaW5lciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0ta2VueWEtZ3JlZW4pLCB2YXIoLS1nb2xkKSwgdmFyKC0tY3lhbiksIHZhcigtLWtlbnlhLWdyZWVuKSk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMzAwJSAxMDAlOwogICAgICAgICAgICBhbmltYXRpb246IGdyYWRpZW50U2Nyb2xsIDhzIGVhc2UgaW5maW5pdGU7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBncmFkaWVudFNjcm9sbCB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOyB9CiAgICAgICAgICAgIDUwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgNTAlOyB9CiAgICAgICAgfQogICAgICAgIC5jb2xvci1zY3JvbGwgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbmltYXRpb246IHNjcm9sbFRleHQgMjVzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBzY3JvbGxUZXh0IHsKICAgICAgICAgICAgMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH0KICAgICAgICAgICAgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsgfQogICAgICAgIH0KICAgICAgICAuc2Nyb2xsLWl0ZW0gewogICAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICAgICAgcGFkZGluZzogMCAzMHB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgICAgICB9CiAgICAgICAgLnNjcm9sbC1pdGVtIC5zdGFyIHsgY29sb3I6IHZhcigtLW5hdnkpOyBtYXJnaW46IDAgMTVweDsgfQogICAgICAgIAogICAgICAgIC8qIEFNQkFTU0FET1IgSEVSTyAqLwogICAgICAgIC5hbWJhc3NhZG9yLWhlcm8gewogICAgICAgICAgICBwYWRkaW5nOiA1MHB4IDIwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLmFtYmFzc2Fkb3ItY2FyZCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA0MDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQogICAgICAgIC5hbWJhc3NhZG9yLWNhcmQtaW5uZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIyLCAxNjMsIDc0LCAwLjE1KSwgcmdiYSg2LCAxODIsIDIxMiwgMC4xKSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjIsIDE2MywgNzQsIDAuNCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDQwcHggMzBweDsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIC5hbWJhc3NhZG9yLWNhcmQtaW5uZXI6OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLTUwJTsgbGVmdDogLTUwJTsKICAgICAgICAgICAgd2lkdGg6IDIwMCU7IGhlaWdodDogMjAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogY29uaWMtZ3JhZGllbnQoZnJvbSAwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyMiwgMTYzLCA3NCwgMC4xKSwgdHJhbnNwYXJlbnQsIHJnYmEoMjEyLCAxNzUsIDU1LCAwLjEpLCB0cmFuc3BhcmVudCk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogcm90YXRlQm9yZGVyIDEwcyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgfQogICAgICAgIEBrZXlmcmFtZXMgcm90YXRlQm9yZGVyIHsKICAgICAgICAgICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgICB9CiAgICAgICAgLmFtYmFzc2Fkb3ItY2FyZC1jb250ZW50IHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAyOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAua2VueWEtYmFkZ2UgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMCwwLDAsMC42KSwgcmdiYSgyMiwgMTAxLCA1MiwgMC42KSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWtlbnlhLWdyZWVuKTsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5rZW55YS1iYWRnZSAuZmxhZyB7IGZvbnQtc2l6ZTogMS4ycmVtOyB9CiAgICAgICAgCiAgICAgICAgLmFtYmFzc2Fkb3ItYXZhdGFyIHsKICAgICAgICAgICAgd2lkdGg6IDEyMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDEyMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAyMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWtlbnlhLWdyZWVuKSwgdmFyKC0tY3lhbikpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBhbmltYXRpb246IGF2YXRhclB1bHNlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KICAgICAgICBAa2V5ZnJhbWVzIGF2YXRhclB1bHNlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyBib3gtc2hhZG93OiAwIDAgMCAwIHJnYmEoMjIsIDE2MywgNzQsIDAuNCk7IH0KICAgICAgICAgICAgNTAlIHsgYm94LXNoYWRvdzogMCAwIDAgMTVweCByZ2JhKDIyLCAxNjMsIDc0LCAwKTsgfQogICAgICAgIH0KICAgICAgICAuYW1iYXNzYWRvci1hdmF0YXIgLmljb24gewogICAgICAgICAgICBmb250LXNpemU6IDMuNXJlbTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmNvbG9yLWNvZGUtYmFkZ2UgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjIsIDE2MywgNzQsIDAuMik7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWtlbnlhLWdyZWVuKTsKICAgICAgICAgICAgcGFkZGluZzogNnB4IDE2cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4pOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIH0KICAgICAgICAuY29sb3ItY29kZS1iYWRnZSAuZG90IHsKICAgICAgICAgICAgd2lkdGg6IDEwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0ta2VueWEtZ3JlZW4pOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogYmxpbmsgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CiAgICAgICAgQGtleWZyYW1lcyBibGluayB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgb3BhY2l0eTogMTsgfQogICAgICAgICAgICA1MCUgeyBvcGFjaXR5OiAwLjM7IH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFtYmFzc2Fkb3ItbmFtZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0taXZvcnkpLCB2YXIoLS1nb2xkKSk7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgfQogICAgICAgIC5hbWJhc3NhZG9yLWNyZWRlbnRpYWxzIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgfQogICAgICAgIC5hbWJhc3NhZG9yLWNvbXBhbnkgewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1jeWFuKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIH0KICAgICAgICAuYW1iYXNzYWRvci10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIH0KICAgICAgICAKICAgICAgICAuc29jaWFsLWljb25zIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CiAgICAgICAgLnNvY2lhbC1pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDQ1cHg7CiAgICAgICAgICAgIGhlaWdodDogNDVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIyLCAxNjMsIDc0LCAwLjIpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDIyLCAxNjMsIDc0LCAwLjQpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnNvY2lhbC1pY29uOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMiwgMTYzLCA3NCwgMC40KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWtlbnlhLWdyZWVuKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmFtYmFzc2Fkb3ItY29udGFjdCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICB9CiAgICAgICAgLmNvbnRhY3QtYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDI0cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQogICAgICAgIC5jb250YWN0LWJ0bi53aGF0c2FwcCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMyNUQzNjYsICMxMjhDN0UpOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgfQogICAgICAgIC5jb250YWN0LWJ0bi5jYWxsIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWRlZXBnb2xkKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICB9CiAgICAgICAgLmNvbnRhY3QtYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDAsMCwwLDAuMyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIFZBTFVFIFNFQ1RJT04gKi8KICAgICAgICAudmFsdWUtc2VjdGlvbiB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyMHB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMiwgMTYzLCA3NCwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMjIsIDE2MywgNzQsIDAuMik7CiAgICAgICAgfQogICAgICAgIC52YWx1ZS1zZWN0aW9uIGgyIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgIH0KICAgICAgICAudmFsdWUtc2VjdGlvbiAuaGlnaGxpZ2h0IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0ta2VueWEtZ3JlZW4pLCB2YXIoLS1jeWFuKSk7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgfQogICAgICAgIC52YWx1ZS1zZWN0aW9uIHAgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjcpOwogICAgICAgICAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAyMHB4OwogICAgICAgIH0KICAgICAgICAucHJpY2UtaGlnaGxpZ2h0IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWN5YW4pKTsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogUFJJQ0lORyBTRUNUSU9OICovCiAgICAgICAgLnByaWNpbmctc2VjdGlvbiB7CiAgICAgICAgICAgIHBhZGRpbmc6IDUwcHggMjBweDsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctaGVhZGVyIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1oZWFkZXIgaDMgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjZyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5jdXJyZW5jeS10b2dnbGUgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMjBweDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyMiwgMTYzLCA3NCwgMC40KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNyk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgbWFyZ2luOiAwIDVweDsKICAgICAgICB9CiAgICAgICAgLmN1cnJlbmN5LXRvZ2dsZTpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4pOwogICAgICAgIH0KICAgICAgICAuY3VycmVuY3ktdG9nZ2xlLmFjdGl2ZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWtlbnlhLWdyZWVuKTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rZW55YS1ncmVlbik7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB9CiAgICAgICAgLmN1cnJlbmN5LWljb24geyBmb250LXNpemU6IDEuMnJlbTsgfQogICAgICAgIAogICAgICAgIC5wcmljaW5nLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDIwMHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAzMHB4OwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1ncmlkLm5pbmUtdGllciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICAgICAgICAgIGdhcDogMjBweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMzBweDsKICAgICAgICB9CiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7CiAgICAgICAgICAgIC5wcmljaW5nLWdyaWQubmluZS10aWVyIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5wcmljaW5nLWdyaWQubmluZS10aWVyIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8qIEludGVybiAzLXRpZXIgZ3JpZCAqLwogICAgICAgIC5wcmljaW5nLWdyaWQuaW50ZXJuLXRpZXIgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOwogICAgICAgICAgICBnYXA6IDI1cHg7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7CiAgICAgICAgfQogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkgewogICAgICAgICAgICAucHJpY2luZy1ncmlkLmludGVybi10aWVyIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA0MDBweDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5sb2NhbC1wcmljZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNik7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNpbmctY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjIsIDE2MywgNzQsIDAuMSksIHJnYmEoNiwgMTgyLCAyMTIsIDAuMDUpKTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyMiwgMTYzLCA3NCwgMC4zKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgcGFkZGluZzogMjVweCAyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctY2FyZDpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rZW55YS1ncmVlbik7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA1MHB4IHJnYmEoMjIsIDE2MywgNzQsIDAuMik7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWNhcmQuZmVhdHVyZWQgewogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4xNSksIHJnYmEoMjIsIDE2MywgNzQsIDAuMSkpOwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1jYXJkLmZlYXR1cmVkOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAn4q2QIFBPUFVMQVInOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLTEycHg7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICAgICAgICBwYWRkaW5nOiA1cHggMTVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjdyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWNhcmQuc292ZXJlaWduIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMiksIHJnYmEoMTM5LCA5MiwgMjQ2LCAwLjE1KSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1iYWRnZSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtMTJweDsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgICAgICAgIHBhZGRpbmc6IDVweCAxNXB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuN3JlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctY2FyZC5zb3ZlcmVpZ24gLnByaWNpbmctYmFkZ2UgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSwgI2Y1OWUwYik7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5wcmljaW5nLWljb24geyBmb250LXNpemU6IDJyZW07IG1hcmdpbi1ib3R0b206IDEwcHg7IH0KICAgICAgICAucHJpY2luZy1uYW1lIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWZvciB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC41KTsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctcHJpY2UgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLXByaWNlIC5jdXJyZW5jeS1zeW1ib2wgewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLXByaWNlLmtlcyB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAucHJpY2luZy1mZWF0dXJlcyB7CiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5wcmljaW5nLWZlYXR1cmVzIGxpIHsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDA7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC44KTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIH0KICAgICAgICAucHJpY2luZy1mZWF0dXJlcyAuY2hlY2sgewogICAgICAgICAgICBjb2xvcjogdmFyKC0ta2VueWEtZ3JlZW4pOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnByaWNpbmctYnRuIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHg7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0ta2VueWEtZ3JlZW4pLCB2YXIoLS1rZW55YS1ncmVlbi1kYXJrKSk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CiAgICAgICAgLnByaWNpbmctYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDIyLCAxNjMsIDc0LCAwLjMpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBQQVlNRU5UIFNFQ1RJT04gKi8KICAgICAgICAucGF5bWVudC1zZWN0aW9uIHsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyMHB4OwogICAgICAgIH0KICAgICAgICAucGF5bWVudC1ib3ggewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIyLCAxNjMsIDc0LCAwLjE1KSwgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMSkpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1rZW55YS1ncmVlbik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIC5wYXltZW50LWJveC1pbm5lciB7CiAgICAgICAgICAgIHBhZGRpbmc6IDM1cHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtYm94IGgzIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgICAgfQogICAgICAgIC5tcGVzYS1iYWRnZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0Q0FGNTAsICMyRTdEMzIpOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDI1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5tcGVzYS1iYWRnZSBzcGFuIHsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtbnVtYmVyIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0taXZvcnkpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogM3B4OwogICAgICAgIH0KICAgICAgICAucGF5bWVudC1uYW1lIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLnBheW1lbnQtc3RlcHMgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHg7CiAgICAgICAgfQogICAgICAgIC5wYXltZW50LXN0ZXBzIGg0IHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWN5YW4pOwogICAgICAgIH0KICAgICAgICAucGF5bWVudC1zdGVwcyBvbCB7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtc3RlcHMgbGkgewogICAgICAgICAgICBwYWRkaW5nOiA4cHggMDsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC44KTsKICAgICAgICB9CiAgICAgICAgLnBheW1lbnQtc3RlcHMgc3Ryb25nIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBPUkRFUiBGT1JNICovCiAgICAgICAgLm9yZGVyLXNlY3Rpb24gewogICAgICAgICAgICBwYWRkaW5nOiA0MHB4IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5vcmRlci1ib3ggewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDIyLCAxNjMsIDc0LCAwLjEpLCByZ2JhKDYsIDE4MiwgMjEyLCAwLjA1KSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjIsIDE2MywgNzQsIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQogICAgICAgIC5vcmRlci1ib3gtaW5uZXIgewogICAgICAgICAgICBwYWRkaW5nOiA0MHB4IDMwcHg7CiAgICAgICAgfQogICAgICAgIC5vcmRlci1ib3ggaDMgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjRyZW07CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWN5YW4pKTsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLmZvcm0tZ3JvdXAgeyBtYXJnaW4tYm90dG9tOiAxOHB4OyB9CiAgICAgICAgLmZvcm0tZ3JvdXAgbGFiZWwgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMS41cHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNik7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICB9CiAgICAgICAgLmZvcm0tZ3JvdXAgaW5wdXQsIC5mb3JtLWdyb3VwIHNlbGVjdCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxNHB4IDE4cHg7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMjIsIDE2MywgNzQsIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWl2b3J5KTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KICAgICAgICAuZm9ybS1ncm91cCBpbnB1dDpmb2N1cywgLmZvcm0tZ3JvdXAgc2VsZWN0OmZvY3VzIHsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1rZW55YS1ncmVlbik7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoMjIsIDE2MywgNzQsIDAuMik7CiAgICAgICAgfQogICAgICAgIC5mb3JtLWdyb3VwIHNlbGVjdCB7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgYXBwZWFyYW5jZTogbm9uZTsKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyB2aWV3Qm94PScwIDAgMTIgMTInJTNFJTNDcGF0aCBmaWxsPSclMjMxNmEzNGEnIGQ9J002IDhMMSAzaDEweicvJTNFJTNDL3N2ZyUzRSIpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwogICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiByaWdodCAxNXB4IGNlbnRlcjsKICAgICAgICB9CiAgICAgICAgLmZvcm0tcm93IHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyOyBnYXA6IDE1cHg7IH0KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNTAwcHgpIHsgLmZvcm0tcm93IHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0gfQogICAgICAgIAogICAgICAgIC5zdWJtaXQtYnRuIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDE4cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzNXB4OwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWRlZXBnb2xkKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxNXB4IDQwcHggcmdiYSgyMTIsIDE3NSwgNTUsIDAuMyk7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgfQogICAgICAgIC5zdWJtaXQtYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpIHNjYWxlKDEuMDIpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDIwcHggNTBweCByZ2JhKDIxMiwgMTc1LCA1NSwgMC41KTsKICAgICAgICB9CiAgICAgICAgLnN1Ym1pdC1idG4ud2hhdHNhcHAtb3JkZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMjVEMzY2LCAjMTI4QzdFKTsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDE1cHggNDBweCByZ2JhKDM3LCAyMTEsIDEwMiwgMC4zKTsKICAgICAgICB9CiAgICAgICAgLnN1Ym1pdC1idG4ud2hhdHNhcHAtb3JkZXI6aG92ZXIgewogICAgICAgICAgICBib3gtc2hhZG93OiAwIDIwcHggNTBweCByZ2JhKDM3LCAyMTEsIDEwMiwgMC41KTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLyogRk9PVEVSICovCiAgICAgICAgLmZvb3RlciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAyMHB4OwogICAgICAgICAgICBib3JkZXItdG9wOiAycHggc29saWQgcmdiYSgyMiwgMTYzLCA3NCwgMC4yKTsKICAgICAgICB9CiAgICAgICAgLmZvb3Rlci1icmFuZCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksIHZhcigtLWN5YW4pKTsKICAgICAgICAgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtdGV4dC1maWxsLWNvbG9yOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CiAgICAgICAgLmZvb3RlciBwIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI0OCwgMjQ0LCAyMzYsIDAuNSk7CiAgICAgICAgfQogICAgICAgIC5mb290ZXItbGlua3MgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgIH0KICAgICAgICAuZm9vdGVyLWxpbmtzIGEgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNDgsIDI0NCwgMjM2LCAwLjYpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzOwogICAgICAgIH0KICAgICAgICAuZm9vdGVyLWxpbmtzIGE6aG92ZXIgeyBjb2xvcjogdmFyKC0tZ29sZCk7IH0KICAgICAgICAKICAgICAgICAvKiBSRVNQT05TSVZFICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC50b3BuYXYgeyBwYWRkaW5nOiAxMHB4IDE1cHg7IH0KICAgICAgICAgICAgLmFtYmFzc2Fkb3ItbmFtZSB7IGZvbnQtc2l6ZTogMS42cmVtOyB9CiAgICAgICAgICAgIC5wcmljaW5nLWdyaWQgeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsgfQogICAgICAgICAgICAucGF5bWVudC1udW1iZXIgeyBmb250LXNpemU6IDEuOHJlbTsgfQogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CiAgICA8ZGl2IGNsYXNzPSJiZy1tYXN0ZXIiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iZmxvYXRpbmctb3JicyI+CiAgICAgICAgPGRpdiBjbGFzcz0ib3JiIG9yYi0xIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJvcmIgb3JiLTIiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im9yYiBvcmItMyI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIAogICAgPGRpdiBjbGFzcz0icGFnZS1jb250YWluZXIiPgogICAgICAgIDwhLS0gVE9QIE5BViAtLT4KICAgICAgICA8bmF2IGNsYXNzPSJ0b3BuYXYiPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2JyYW5kaGFuZHNoYWtlLmNvbSIgY2xhc3M9Im5hdi1icmFuZCI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibG9nbyI+8J+knSBCcmFuZEhhbmRzaGFrZTwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXYtbGlua3MiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iI3ByaWNpbmciPlByaWNpbmc8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjb3JkZXIiPk9yZGVyPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L25hdj4KICAgICAgICAKICAgICAgICA8IS0tIFNDUk9MTElORyBCQU5ORVIgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iY29sb3Itc2Nyb2xsLWNvbnRhaW5lciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbG9yLXNjcm9sbCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGwtaXRlbSI+PHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4gVmlydHVhbCBCdXNpbmVzcyBDYXJkcyA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPiBBSSBIb3Jpem9ucyBLZW55YSA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPiBQcm9mZXNzaW9uYWwgTmV0d29ya2luZyA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPiBNLVBlc2EgQWNjZXB0ZWQ8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNjcm9sbC1pdGVtIj48c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPiBWaXJ0dWFsIEJ1c2luZXNzIENhcmRzIDxzcGFuIGNsYXNzPSJzdGFyIj7irZA8L3NwYW4+IEFJIEhvcml6b25zIEtlbnlhIDxzcGFuIGNsYXNzPSJzdGFyIj7irZA8L3NwYW4+IFByb2Zlc3Npb25hbCBOZXR3b3JraW5nIDxzcGFuIGNsYXNzPSJzdGFyIj7irZA8L3NwYW4+IE0tUGVzYSBBY2NlcHRlZDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2Nyb2xsLWl0ZW0iPjxzcGFuIGNsYXNzPSJzdGFyIj7irZA8L3NwYW4+IFZpcnR1YWwgQnVzaW5lc3MgQ2FyZHMgPHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4gQUkgSG9yaXpvbnMgS2VueWEgPHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4gUHJvZmVzc2lvbmFsIE5ldHdvcmtpbmcgPHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4gTS1QZXNhIEFjY2VwdGVkPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzY3JvbGwtaXRlbSI+PHNwYW4gY2xhc3M9InN0YXIiPuKtkDwvc3Bhbj4gVmlydHVhbCBCdXNpbmVzcyBDYXJkcyA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPiBBSSBIb3Jpem9ucyBLZW55YSA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPiBQcm9mZXNzaW9uYWwgTmV0d29ya2luZyA8c3BhbiBjbGFzcz0ic3RhciI+4q2QPC9zcGFuPiBNLVBlc2EgQWNjZXB0ZWQ8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgCiAgICAgICAgPCEtLSBBTUJBU1NBRE9SIEhFUk8gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFtYmFzc2Fkb3ItaGVybyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFtYmFzc2Fkb3ItY2FyZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbWJhc3NhZG9yLWNhcmQtaW5uZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFtYmFzc2Fkb3ItY2FyZC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ia2VueWEtYmFkZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImZsYWciPvCfh7Dwn4eqPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+S2VueWEgSHViIExlYWRlcjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhbWJhc3NhZG9yLWF2YXRhciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaWNvbiI+8J+Tijwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2xvci1jb2RlLWJhZGdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3QiPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFJIEhvcml6b25zCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzPSJhbWJhc3NhZG9yLW5hbWUiPk9zY2FyIE1rYWRvPC9oMT4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImFtYmFzc2Fkb3ItY3JlZGVudGlhbHMiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImFtYmFzc2Fkb3ItY29tcGFueSI+8J+agCBUaGUgQWZyaWNhIENocm9uaWNsZXMgfCBBZnJpY2EgRnJvbnRsaW5lIE1lZGlhPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYW1iYXNzYWRvci10aXRsZSI+RGlnaXRhbCBCdXNpbmVzcyBTdHJhdGVnaXN0PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic29jaWFsLWljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2EubWUvMjU0MTA4MjQzNzg0IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNvY2lhbC1pY29uIiB0aXRsZT0iV2hhdHNBcHAiPvCfkqw8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ0ZWw6KzI1NDEwODI0Mzc4NCIgY2xhc3M9InNvY2lhbC1pY29uIiB0aXRsZT0iQ2FsbCI+8J+TnjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9jZG4tY2dpL2wvZW1haWwtcHJvdGVjdGlvbiM0YTM5MjIyNTNhMjYyNTI5MmIyNjI4M2YzOTIzMjQyZjM5MzkyYjJkMmYyNDI5MzMwYTJkMjcyYjIzMjY2NDI5MjUyNyIgY2xhc3M9InNvY2lhbC1pY29uIiB0aXRsZT0iRW1haWwiPvCfk6c8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW1iYXNzYWRvci1jb250YWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2EubWUvMjU0MTA4MjQzNzg0P3RleHQ9SGklMjBPc2NhciElMjBJJ20lMjBpbnRlcmVzdGVkJTIwaW4lMjBnZXR0aW5nJTIwYSUyMHZpcnR1YWwlMjBidXNpbmVzcyUyMGNhcmQuIiBjbGFzcz0iY29udGFjdC1idG4gd2hhdHNhcHAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPvCfkqw8L3NwYW4+IFdoYXRzQXBwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJ0ZWw6KzI1NDEwODI0Mzc4NCIgY2xhc3M9ImNvbnRhY3QtYnRuIGNhbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPvCfk548L3NwYW4+IENhbGwgTm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIFZBTFVFIFNFQ1RJT04gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InZhbHVlLXNlY3Rpb24iPgogICAgICAgICAgICA8aDI+WW91ciBWaXJ0dWFsIENhcmQgPHNwYW4gY2xhc3M9ImhpZ2hsaWdodCI+U3RhcnRpbmcgRnJvbTwvc3Bhbj48L2gyPgogICAgICAgICAgICA8cD5TdGFuZCBvdXQgZnJvbSB0aGUgY3Jvd2Qgd2l0aCBhIHByb2Zlc3Npb25hbCB2aXJ0dWFsIGJ1c2luZXNzIGNhcmQgdGhhdCBtYWtlcyBuZXR3b3JraW5nIGVmZm9ydGxlc3MgYW5kIG1lbW9yYWJsZS48L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNlLWhpZ2hsaWdodCI+S0VTIDEsMzAwPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIAogICAgICAgIDwhLS0gUFJJQ0lORyBTRUNUSU9OIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJwcmljaW5nLXNlY3Rpb24iIGlkPSJwcmljaW5nIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGgzPkNob29zZSBZb3VyIENhcmQgUGFja2FnZTwvaDM+CiAgICAgICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC42KTsgZm9udC1zaXplOiAwLjlyZW07IG1hcmdpbi10b3A6IDEwcHg7Ij5QcmljZXMgc2hvd24gaW4gVVNEIHdpdGggS0VTIGVxdWl2YWxlbnQ8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAKICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1ncmlkIGludGVybi10aWVyIj4KICAgICAgICAgICAgICAgIDwhLS0gU1RBUlRFUiAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1pY29uIj7wn46vPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1uYW1lIj5TdGFydGVyPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1mb3IiPlBlcmZlY3QgZm9yIFN0dWRlbnRzPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1wcmljZSIgZGF0YS11Z3g9IjEsMzAwIiBkYXRhLXVzZD0iMTAiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3VycmVuY3ktc3ltYm9sIj4kPC9zcGFuPjEwCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2NhbC1wcmljZSI+S0VTIDEsMzAwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0icHJpY2luZy1mZWF0dXJlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKclDwvc3Bhbj4gUHJvZmVzc2lvbmFsIERpZ2l0YWwgQ2FyZDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKclDwvc3Bhbj4gQ29udGFjdCBJbmZvICYgUGhvdG88L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJQ8L3NwYW4+IDMgU29jaWFsIE1lZGlhIExpbmtzPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyUPC9zcGFuPiBRUiBDb2RlPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyUPC9zcGFuPiA0OGhyIERlbGl2ZXJ5PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InByaWNpbmctYnRuIiBvbmNsaWNrPSJzZWxlY3RQbGFuKCdTdGFydGVyJywgMzcwMDAsIDEwKSI+R2V0IFN0YXJ0ZWQ8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8IS0tIFBST0ZFU1NJT05BTCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCBmZWF0dXJlZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1iYWRnZSI+4q2QIFBPUFVMQVI8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWljb24iPuKtkDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctbmFtZSI+UHJvZmVzc2lvbmFsPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1mb3IiPk1vc3QgUG9wdWxhciBDaG9pY2U8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLXByaWNlIiBkYXRhLXVneD0iMiw2MDAiIGRhdGEtdXNkPSIyNSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdXJyZW5jeS1zeW1ib2wiPiQ8L3NwYW4+MjUKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxvY2FsLXByaWNlIj5LRVMgMiw2MDA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJwcmljaW5nLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyUPC9zcGFuPiBFdmVyeXRoaW5nIGluIFN0YXJ0ZXI8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJQ8L3NwYW4+IEN1c3RvbSBDb2xvcnMgJiBCcmFuZGluZzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKclDwvc3Bhbj4gNiBTb2NpYWwgTWVkaWEgTGlua3M8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJQ8L3NwYW4+IFNlcnZpY2VzIFNlY3Rpb248L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJQ8L3NwYW4+IEJvb2tpbmcgQ2FsZW5kYXI8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJQ8L3NwYW4+IFByaW9yaXR5IFN1cHBvcnQ8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icHJpY2luZy1idG4iIG9uY2xpY2s9InNlbGVjdFBsYW4oJ1Byb2Zlc3Npb25hbCcsIDkyNTAwLCAyNSkiPkdldCBQcm9mZXNzaW9uYWw8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8IS0tIEVYRUNVVElWRSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByaWNpbmctY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1pY29uIj7wn5GRPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHJpY2luZy1uYW1lIj5FeGVjdXRpdmU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLWZvciI+Rm9yIExlYWRlcnM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcmljaW5nLXByaWNlIiBkYXRhLXVneD0iMyw5MDAiIGRhdGEtdXNkPSI1MCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjdXJyZW5jeS1zeW1ib2wiPiQ8L3NwYW4+NTAKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxvY2FsLXByaWNlIj5LRVMgMyw5MDA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJwcmljaW5nLWZlYXR1cmVzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyUPC9zcGFuPiBFdmVyeXRoaW5nIGluIFByb2Zlc3Npb25hbDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKclDwvc3Bhbj4gVmlkZW8gRW1iZWQ8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4gY2xhc3M9ImNoZWNrIj7inJQ8L3NwYW4+IExlYWQgQ2FwdHVyZSBGb3JtPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyUPC9zcGFuPiBBbmFseXRpY3MgRGFzaGJvYXJkPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxzcGFuIGNsYXNzPSJjaGVjayI+4pyUPC9zcGFuPiBDdXN0b20gRG9tYWluIE9wdGlvbjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3BhbiBjbGFzcz0iY2hlY2siPuKclDwvc3Bhbj4gVklQIFN1cHBvcnQ8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icHJpY2luZy1idG4iIG9uY2xpY2s9InNlbGVjdFBsYW4oJ0V4ZWN1dGl2ZScsIDE4NTAwMCwgNTApIj5HbyBFeGVjdXRpdmU8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gQ29ycG9yYXRlIFNvbHV0aW9ucyBMaW5rIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb3Jwb3JhdGUtbGluay1zZWN0aW9uIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiA0MHB4OyBwYWRkaW5nOiAzMHB4OyI+CiAgICAgICAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6IHJnYmEoMjQ4LCAyNDQsIDIzNiwgMC43KTsgbWFyZ2luLWJvdHRvbTogMTVweDsgZm9udC1zaXplOiAxLjFyZW07Ij5OZWVkIGNhcmRzIGZvciB5b3VyIGVudGlyZSB0ZWFtIG9yIG9yZ2FuaXphdGlvbj88L3A+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3ZpcnR1YWwuaGFuZHNoYWtlLmFmcmljYSIgY2xhc3M9ImNvcnBvcmF0ZS1idG4iIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHBhZGRpbmc6IDE4cHggNDBweDsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCksICNCODk3MkUpOyBjb2xvcjogdmFyKC0tbmF2eSk7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLXJhZGl1czogMzBweDsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxLjFyZW07IHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7IGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMjEyLCAxNzUsIDU1LCAwLjMpOyI+CiAgICAgICAgICAgICAgICAgICAg8J+PoiBFeHBsb3JlIENvcnBvcmF0ZSBTb2x1dGlvbnMg4oaSCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIFBBWU1FTlQgU0VDVElPTiAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0icGF5bWVudC1zZWN0aW9uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3giPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1ib3gtaW5uZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz7wn5OxIFBheSB2aWEgTS1QZXNhPC9oMz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJtcGVzYS1iYWRnZSIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICNmZmNjMDAsICNmZjk5MDApOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPk0tUEVTQTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYXltZW50LW51bWJlciI+MDc5MCAyMjUgNDIyPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InBheW1lbnQtbmFtZSI+T3NjYXIgTWthZG88L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGF5bWVudC1zdGVwcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoND7wn5OLIEhvdyBUbyBQYXk6PC9oND4KICAgICAgICAgICAgICAgICAgICAgICAgPG9sPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPk9wZW4geW91ciA8c3Ryb25nPk0tUGVzYTwvc3Ryb25nPiBhcHAgb3IgZGlhbCAqMzM0IzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+U2VsZWN0IDxzdHJvbmc+IlNlbmQgTW9uZXkiPC9zdHJvbmc+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5FbnRlciBudW1iZXI6IDxzdHJvbmc+MDc5MCAyMjUgNDIyPC9zdHJvbmc+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5FbnRlciB0aGUgYW1vdW50IGZvciB5b3VyIGNob3NlbiBwYWNrYWdlPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5GaWxsIG91dCB0aGUgb3JkZXIgZm9ybSBiZWxvdzwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+V2UnbGwgY29udGFjdCB5b3Ugd2l0aGluIDxzdHJvbmc+MjQgaG91cnM8L3N0cm9uZz48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L29sPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KICAgICAgICAKICAgICAgICA8IS0tIE9SREVSIEZPUk0gLSBXSEFUU0FQUCBESVJFQ1QgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9Im9yZGVyLXNlY3Rpb24iIGlkPSJvcmRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9yZGVyLWJveCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJvcmRlci1ib3gtaW5uZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMz7wn5OdIE9yZGVyIFlvdXIgQ2FyZDwvaDM+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPCEtLSBOTyBGT1JNU1VCTUlUIC0gRGlyZWN0IFdoYXRzQXBwIC0tPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9yZGVyLWZvcm0td3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPkZ1bGwgTmFtZTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im9yZGVyTmFtZSIgcmVxdWlyZWQgcGxhY2Vob2xkZXI9IllvdXIgZnVsbCBuYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLXJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+RW1haWw8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJlbWFpbCIgaWQ9Im9yZGVyRW1haWwiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSJ5b3VyQGVtYWlsLmNvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5QaG9uZS9XaGF0c0FwcDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRlbCIgaWQ9Im9yZGVyUGhvbmUiIHJlcXVpcmVkIHBsYWNlaG9sZGVyPSIrMjU0Li4uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlBhY2thZ2UgU2VsZWN0ZWQ8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBpZD0ib3JkZXJQYWNrYWdlIiByZXF1aXJlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCB5b3VyIHBhY2thZ2U8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTdGFydGVyIC0gJDEwIC8gS0VTIDEsMzAwIj5TdGFydGVyIC0gJDEwIC8gS0VTIDEsMzAwPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUHJvZmVzc2lvbmFsIC0gJDI1IC8gS0VTIDIsNjAwIj5Qcm9mZXNzaW9uYWwgLSAkMjUgLyBLRVMgMiw2MDA8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFeGVjdXRpdmUgLSAkNTAgLyBLRVMgMyw5MDAiPkV4ZWN1dGl2ZSAtICQ1MCAvIEtFUyAzLDkwMDwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WW91ciBQcm9mZXNzaW9uL1RpdGxlPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ib3JkZXJQcm9mZXNzaW9uIiBwbGFjZWhvbGRlcj0iZS5nLiwgTWFya2V0aW5nIE1hbmFnZXIsIERvY3RvciwgRW50cmVwcmVuZXVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtLWdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5NLVBlc2EgVHJhbnNhY3Rpb24gQ29kZSAoaWYgYWxyZWFkeSBwYWlkKTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im9yZGVyVHhSZWYiIHBsYWNlaG9sZGVyPSJlLmcuLCBSS0w1SDdKTVFQIChvcHRpb25hbCkiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0ic3VibWl0LWJ0biB3aGF0c2FwcC1vcmRlciIgb25jbGljaz0ib3JkZXJWaWFXaGF0c0FwcCgpIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIPCfkqwgT3JkZXIgdmlhIFdoYXRzQXBwIPCfmoAKICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8cCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDAuOHJlbTsgY29sb3I6IHJnYmEoMjQ4LDI0NCwyMzYsMC41KTsgbWFyZ2luLXRvcDogMTVweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg4pyFIEluc3RhbnQgcmVzcG9uc2Ug4oCiIERpcmVjdCBzdXBwb3J0IOKAoiBObyB3YWl0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBvcmRlclZpYVdoYXRzQXBwKCkgewogICAgICAgICAgICBjb25zdCBuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZGVyTmFtZScpLnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgY29uc3QgZW1haWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXJFbWFpbCcpLnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgY29uc3QgcGhvbmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3JkZXJQaG9uZScpLnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgY29uc3QgcGFja2FnZVNlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlclBhY2thZ2UnKS52YWx1ZTsKICAgICAgICAgICAgY29uc3QgcHJvZmVzc2lvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlclByb2Zlc3Npb24nKS52YWx1ZS50cmltKCk7CiAgICAgICAgICAgIGNvbnN0IHR4UmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29yZGVyVHhSZWYnKS52YWx1ZS50cmltKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoIW5hbWUgfHwgIWVtYWlsIHx8ICFwaG9uZSB8fCAhcGFja2FnZVNlbCkgewogICAgICAgICAgICAgICAgYWxlcnQoJ1BsZWFzZSBmaWxsIGluIE5hbWUsIEVtYWlsLCBQaG9uZSwgYW5kIHNlbGVjdCBhIFBhY2thZ2UhJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBg8J+UpSAqTkVXIE9SREVSIC0gQUkgSG9yaXpvbnMqCgrwn5OmICpQYWNrYWdlOiogJHtwYWNrYWdlU2VsfQoK8J+RpCAqQ3VzdG9tZXIgRGV0YWlsczoqCuKAoiBOYW1lOiAke25hbWV9CuKAoiBFbWFpbDogJHtlbWFpbH0K4oCiIFBob25lOiAke3Bob25lfQoke3Byb2Zlc3Npb24gPyAn4oCiIFByb2Zlc3Npb246ICcgKyBwcm9mZXNzaW9uIDogJyd9CiR7dHhSZWYgPyAn4oCiIE0tUGVzYSBSZWY6ICcgKyB0eFJlZiA6ICcnfQoK4pyFIFJlYWR5IHRvIGdldCBteSB2aXJ0dWFsIGJ1c2luZXNzIGNhcmQhYDsKCiAgICAgICAgICAgIGNvbnN0IHdoYXRzYXBwVXJsID0gYGh0dHBzOi8vd2EubWUvMjU0MTA4MjQzNzg0P3RleHQ9JHtlbmNvZGVVUklDb21wb25lbnQobWVzc2FnZSl9YDsKICAgICAgICAgICAgd2luZG93Lm9wZW4od2hhdHNhcHBVcmwsICdfYmxhbmsnKTsKICAgICAgICB9CiAgICAgICAgPC9zY3JpcHQ+CiAgICAgICAgCiAgICAgICAgPCEtLSBGT09URVIgLS0+CiAgICAgICAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWJyYW5kIj7wn6SdIEJyYW5kSGFuZHNoYWtlPC9kaXY+CiAgICAgICAgICAgIDxwPlZpcnR1YWwgQnVzaW5lc3MgQ2FyZHMgZm9yIHRoZSBNb2Rlcm4gUHJvZmVzc2lvbmFsPC9wPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItbGlua3MiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9icmFuZGhhbmRzaGFrZS5jb20iPk1haW4gU2l0ZTwvYT4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2EubWUvMjU0MTA4MjQzNzg0Ij5Db250YWN0IE9zY2FyPC9hPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6IDE1cHg7Ij7CqSAyMDI2IEFJIEhvcml6b25zIHwgVGhlIEFmcmljYSBDaHJvbmljbGVzIHwgQWZyaWNhIEZyb250bGluZSBNZWRpYTwvcD4KICAgICAgICAgICAgPHAgc3R5bGU9Im1hcmdpbi10b3A6IDVweDsiPkEgTXVrYXNhIFZlbnR1cmUgUGFydG5lcnMgTExDIEluaXRpYXRpdmU8L3A+CiAgICAgICAgPC9mb290ZXI+CiAgICA8L2Rpdj4KICAgIAogICAgPCEtLSA9PT09PT09PT09IFNDUklQVFMgPT09PT09PT09PSAtLT4KICAgIDxzY3JpcHQgZGF0YS1jZmFzeW5jPSJmYWxzZSIgc3JjPSIvY2RuLWNnaS9zY3JpcHRzLzVjNWRkNzI4L2Nsb3VkZmxhcmUtc3RhdGljL2VtYWlsLWRlY29kZS5taW4uanMiPjwvc2NyaXB0PjxzY3JpcHQ+CiAgICAgICAgLy8gQ3VycmVuY3kgdG9nZ2xlCiAgICAgICAgbGV0IGN1cnJlbnRDdXJyZW5jeSA9ICdLRVMnOwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIHNob3dLRVMoKSB7CiAgICAgICAgICAgIGN1cnJlbnRDdXJyZW5jeSA9ICdLRVMnOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgna2VzVG9nZ2xlJykuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1c2RUb2dnbGUnKS5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wcmljaW5nLXByaWNlJykuZm9yRWFjaChlbCA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBrZXMgPSBlbC5kYXRhc2V0LmtlczsKICAgICAgICAgICAgICAgIGVsLmlubmVySFRNTCA9IGA8c3BhbiBjbGFzcz0iY3VycmVuY3ktc3ltYm9sIj5LRVM8L3NwYW4+ICR7a2VzfWA7CiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKCdrZXMnKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBVcGRhdGUgaGVybyBwcmljZQogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucHJpY2UtaGlnaGxpZ2h0JykudGV4dENvbnRlbnQgPSAnS0VTIDEsMzAwJzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gc2hvd1VTRCgpIHsKICAgICAgICAgICAgY3VycmVudEN1cnJlbmN5ID0gJ1VTRCc7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd1c2RUb2dnbGUnKS5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2tlc1RvZ2dsZScpLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgICAgICAgICAKICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnByaWNpbmctcHJpY2UnKS5mb3JFYWNoKGVsID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHVzZCA9IGVsLmRhdGFzZXQudXNkOwogICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gYDxzcGFuIGNsYXNzPSJjdXJyZW5jeS1zeW1ib2wiPiQ8L3NwYW4+JHt1c2R9YDsKICAgICAgICAgICAgICAgIGVsLmNsYXNzTGlzdC5yZW1vdmUoJ2tlcycpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFVwZGF0ZSBoZXJvIHByaWNlCiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wcmljZS1oaWdobGlnaHQnKS50ZXh0Q29udGVudCA9ICckMTAnOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBzZWxlY3RQbGFuKHBsYW4sIGtlcywgdXNkKSB7CiAgICAgICAgICAgIGNvbnN0IHNlbGVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWNrYWdlU2VsZWN0Jyk7CiAgICAgICAgICAgIHNlbGVjdC52YWx1ZSA9IGAke3BsYW59IC0gS0VTICR7a2VzLnRvTG9jYWxlU3RyaW5nKCl9IC8gJCR7dXNkfWA7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvcmRlcicpLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnIH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyA9PT09PT09PT09IEJSQU5ESEFORFNIQUtFIFNFQ1VSSVRZIFNVSVRFID09PT09PT09PT0KICAgICAgICAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICd1c2Ugc3RyaWN0JzsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIENvbnNvbGUgd2FybmluZ3MKICAgICAgICAgICAgY29uc29sZS5sb2coJyVj8J+bkSBTVE9QIScsICdjb2xvcjogcmVkOyBmb250LXNpemU6IDUwcHg7IGZvbnQtd2VpZ2h0OiBib2xkOycpOwogICAgICAgICAgICBjb25zb2xlLmxvZygnJWPimqDvuI8gVGhpcyBpcyBwcm90ZWN0ZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIE11a2FzYSBWZW50dXJlIFBhcnRuZXJzIExMQy4nLCAnY29sb3I6IG9yYW5nZTsgZm9udC1zaXplOiAxNnB4OycpOwogICAgICAgICAgICBjb25zb2xlLmxvZygnJWPwn5SSIFVuYXV0aG9yaXplZCBjb3B5aW5nIG9yIHJldmVyc2UgZW5naW5lZXJpbmcgaXMgcHJvaGliaXRlZC4nLCAnY29sb3I6IHllbGxvdzsgZm9udC1zaXplOiAxNHB4OycpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gUmlnaHQtY2xpY2sgcHJvdGVjdGlvbiBvbiBpbWFnZXMKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQudGFnTmFtZSA9PT0gJ0lNRycpIHsKICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEJsb2NrIEN0cmwrVSBhbmQgQ3RybCtTCiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoZS5jdHJsS2V5ICYmIChlLmtleSA9PT0gJ3UnIHx8IGUua2V5ID09PSAnVScgfHwgZS5rZXkgPT09ICdzJyB8fCBlLmtleSA9PT0gJ1MnKSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gU2Vzc2lvbiB0cmFja2luZwogICAgICAgICAgICBpZiAoIXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2JoX3Nlc3Npb25faWQnKSkgewogICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnYmhfc2Vzc2lvbl9pZCcsICdCSC0nICsgRGF0ZS5ub3coKSArICctJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIEZvcm0gdGltZXN0YW1wCiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2Zvcm0nKS5mb3JFYWNoKGZ1bmN0aW9uKGZvcm0pIHsKICAgICAgICAgICAgICAgIHZhciB0aW1lc3RhbXBGaWVsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7CiAgICAgICAgICAgICAgICB0aW1lc3RhbXBGaWVsZC50eXBlID0gJ2hpZGRlbic7CiAgICAgICAgICAgICAgICB0aW1lc3RhbXBGaWVsZC5uYW1lID0gJ19mb3JtX2xvYWRlZCc7CiAgICAgICAgICAgICAgICB0aW1lc3RhbXBGaWVsZC52YWx1ZSA9IERhdGUubm93KCk7CiAgICAgICAgICAgICAgICBmb3JtLmFwcGVuZENoaWxkKHRpbWVzdGFtcEZpZWxkKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBBbnRpLWlmcmFtZSBlbWJlZGRpbmcgKG9ubHkgZW5mb3JjZSBvbiBwcm9kdWN0aW9uIGRvbWFpbnMpCiAgICAgICAgICAgIGlmICh3aW5kb3cuc2VsZiAhPT0gd2luZG93LnRvcCkgewogICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRIb3N0ID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lOwogICAgICAgICAgICAgICAgdmFyIGlzUHJvZHVjdGlvbiA9IGN1cnJlbnRIb3N0LmluY2x1ZGVzKCdicmFuZGhhbmRzaGFrZS5jb20nKSB8fCBjdXJyZW50SG9zdC5pbmNsdWRlcygnaGFuZHNoYWtlLmFmcmljYScpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoaXNQcm9kdWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudEhvc3QgPSB3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhvc3RuYW1lOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEhvc3QuaW5jbHVkZXMoJ2JyYW5kaGFuZHNoYWtlLmNvbScpICYmICFwYXJlbnRIb3N0LmluY2x1ZGVzKCdoYW5kc2hha2UuYWZyaWNhJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJzxoMSBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZzo1MHB4O2NvbG9yOnJlZDsiPuKaoO+4jyBVbmF1dGhvcml6ZWQgZW1iZWRkaW5nIGRldGVjdGVkLjwvaDE+JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgewogICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8aDEgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6NTBweDtjb2xvcjpyZWQ7Ij7imqDvuI8gVW5hdXRob3JpemVkIGVtYmVkZGluZw==","embed":""}
⭐ Virtual Business Cards ⭐ AI Horizons Kenya ⭐ Professional Networking ⭐ M-Pesa Accepted
⭐ Virtual Business Cards ⭐ AI Horizons Kenya ⭐ Professional Networking ⭐ M-Pesa Accepted
⭐ Virtual Business Cards ⭐ AI Horizons Kenya ⭐ Professional Networking ⭐ M-Pesa Accepted
⭐ Virtual Business Cards ⭐ AI Horizons Kenya ⭐ Professional Networking ⭐ M-Pesa Accepted
🇰🇪
Kenya Hub Leader
📊
AI Horizons
Oscar Mkado
🚀 The Africa Chronicles | Africa Frontline Media
Digital Business Strategist
Your Virtual Card Starting From
Stand out from the crowd with a professional virtual business card that makes networking effortless and memorable.
KES 1,300
Choose Your Card Package
Prices shown in USD with KES equivalent
🎯
Starter
Perfect for Students
$10
KES 1,300
- ✔ Professional Digital Card
- ✔ Contact Info & Photo
- ✔ 3 Social Media Links
- ✔ QR Code
- ✔ 48hr Delivery
⭐ POPULAR
⭐
Professional
Most Popular Choice
$25
KES 2,600
- ✔ Everything in Starter
- ✔ Custom Colors & Branding
- ✔ 6 Social Media Links
- ✔ Services Section
- ✔ Booking Calendar
- ✔ Priority Support
👑
Executive
For Leaders
$50
KES 3,900
- ✔ Everything in Professional
- ✔ Video Embed
- ✔ Lead Capture Form
- ✔ Analytics Dashboard
- ✔ Custom Domain Option
- ✔ VIP Support
Need cards for your entire team or organization?
🏢 Explore Corporate Solutions →📱 Pay via M-Pesa
M-PESA
0790 225 422
Oscar Mkado
📋 How To Pay:
- Open your M-Pesa app or dial *334#
- Select "Send Money"
- Enter number: 0790 225 422
- Enter the amount for your chosen package
- Fill out the order form below
- We'll contact you within 24 hours
📝 Order Your Card
✅ Instant response • Direct support • No waiting
? We use cookies to enhance your experience. By continuing, you agree to our Privacy Policy.