{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAKICAgIDwhLS0gUHJpbWFyeSBNZXRhIFRhZ3MgLS0+CiAgICA8dGl0bGU+Qm9vayBhIFNjZW5pYyBGbGlnaHQgfCBDYXB0YWluIEZhcmlkYWggQXNoYWJhIHwgQXNoYWJhRmxpZ2h0czwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ0aXRsZSIgY29udGVudD0iQm9vayBhIFNjZW5pYyBGbGlnaHQgfCBBc2hhYmFGbGlnaHRzIHwgS2FtcGFsYSBVZ2FuZGEiPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkJvb2sgeW91ciBzY2VuaWMgZmxpZ2h0IG92ZXIgS2FtcGFsYSB3aXRoIENhcHRhaW4gRmFyaWRhaCBBc2hhYmEuIEV4cGVyaWVuY2UgdGhlIFBlYXJsIG9mIEFmcmljYSBmcm9tIHRoZSBza3kuIENvbm5lY3QgdmlhIFdoYXRzQXBwLCBJbnN0YWdyYW0sIExpbmtlZEluIG9yIFRpa1Rvay4iPgogICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9IkJvb2sgU2NlbmljIEZsaWdodCBVZ2FuZGEsIEFzaGFiYUZsaWdodHMgQm9va2luZywgS2FtcGFsYSBGbGlnaHQgVG91cnMsIENhcHRhaW4gRmFyaWRhaCBBc2hhYmEgQ29udGFjdCwgUGVhcmwgb2YgQWZyaWNhIEZsaWdodCBFeHBlcmllbmNlIj4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iQ2FwdGFpbiBGYXJpZGFoIEFzaGFiYSI+CiAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImluZGV4LCBmb2xsb3ciPgogICAgCiAgICA8IS0tIE9wZW4gR3JhcGggLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2FzaGFiYWZsaWdodHMudHJhdmVsL2Nvbm5lY3QiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJCb29rIGEgU2NlbmljIEZsaWdodCB8IEFzaGFiYUZsaWdodHMiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJFeHBlcmllbmNlIHRoZSBQZWFybCBvZiBBZnJpY2EgZnJvbSB0aGUgc2t5ISBCb29rIHlvdXIgc2NlbmljIGZsaWdodCBvdmVyIEthbXBhbGEgd2l0aCBDYXB0YWluIEZhcmlkYWggQXNoYWJhLiI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJBc2hhYmFGbGlnaHRzIj4KICAgIAogICAgPCEtLSBUaGVtZSBDb2xvciAtLT4KICAgIDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMEMxODIxIj4KICAgIAogICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIj4KICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4+CiAgICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU91dGZpdDp3Z2h0QDMwMDs0MDA7NTAwOzYwMDs3MDA7ODAwOzkwMCZmYW1pbHk9RE0rU2VyaWYrRGlzcGxheTppdGFsQDA7MSZmYW1pbHk9U3BhY2UrTW9ubzp3Z2h0QDQwMDs3MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgCiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAvKiBTdW5zZXQgU2t5IFRoZW1lICovCiAgICAgICAgICAgIC0tc2t5LW5pZ2h0OiAjMEMxODIxOwogICAgICAgICAgICAtLXNreS1kZWVwOiAjMUIyODM4OwogICAgICAgICAgICAtLXNreS10d2lsaWdodDogIzMyNEE1RjsKICAgICAgICAgICAgLS1za3ktaG9yaXpvbjogI0NEQTM0RjsKICAgICAgICAgICAgLS1za3ktc3Vuc2V0OiAjRjk3MzE2OwogICAgICAgICAgICAtLXNreS1nb2xkOiAjRkJCRjI0OwogICAgICAgICAgICAtLXNreS13YXJtOiAjRkZEOTNEOwogICAgICAgICAgICAKICAgICAgICAgICAgLyogQWNjZW50IENvbG9ycyAqLwogICAgICAgICAgICAtLXdoYXRzYXBwLWdyZWVuOiAjMjVEMzY2OwogICAgICAgICAgICAtLWluc3RhZ3JhbS1waW5rOiAjRTEzMDZDOwogICAgICAgICAgICAtLWxpbmtlZGluLWJsdWU6ICMwMDc3QjU7CiAgICAgICAgICAgIC0tdGlrdG9rLXBpbms6ICNGRTJDNTU7CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBUZXh0ICovCiAgICAgICAgICAgIC0tdGV4dC1icmlnaHQ6ICNGRkZGRkY7CiAgICAgICAgICAgIC0tdGV4dC1zb2Z0OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgICAgIC0tdGV4dC1tdXRlZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjY1KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8qIFBlYXJsICovCiAgICAgICAgICAgIC0tcGVhcmwtZ29sZDogI0Q0QTg1MzsKICAgICAgICB9CgogICAgICAgICogewogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgfQoKICAgICAgICBodG1sIHsKICAgICAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7CiAgICAgICAgfQoKICAgICAgICBib2R5IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdPdXRmaXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1za3ktbmlnaHQpOwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1icmlnaHQpOwogICAgICAgIH0KCiAgICAgICAgLyogPT09PT09PT09PSBCQUNLR1JPVU5EID09PT09PT09PT0gKi8KICAgICAgICAuY29ubmVjdC1iZyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICB6LWluZGV4OiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDUwJSAxMDAlLCByZ2JhKDIwNSwgMTYzLCA3OSwgMC4yKSAwJSwgdHJhbnNwYXJlbnQgNTAlKSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChlbGxpcHNlIGF0IDIwJSAyMCUsIHJnYmEoMjQ5LCAxMTUsIDIyLCAwLjEpIDAlLCB0cmFuc3BhcmVudCA0MCUpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgODAlIDUwJSwgcmdiYSgyNTEsIDE5MSwgMzYsIDAuMDgpIDAlLCB0cmFuc3BhcmVudCAzNSUpLAogICAgICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdmFyKC0tc2t5LW5pZ2h0KSAwJSwgdmFyKC0tc2t5LWRlZXApIDQwJSwgdmFyKC0tc2t5LXR3aWxpZ2h0KSAxMDAlKTsKICAgICAgICB9CgogICAgICAgIC8qIEhvcml6b24gR2xvdyAqLwogICAgICAgIC5ob3Jpem9uLWdsb3cgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogNDAlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDAlLCAKICAgICAgICAgICAgICAgIHJnYmEoMjA1LCAxNjMsIDc5LCAwLjA4KSA1MCUsIAogICAgICAgICAgICAgICAgcmdiYSgyNDksIDExNSwgMjIsIDAuMTUpIDEwMCUpOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CgogICAgICAgIC8qIEZsb2F0aW5nIENsb3VkcyAqLwogICAgICAgIC5mbG9hdGluZy1jbG91ZHMgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgei1pbmRleDogMjsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAuY2xvdWQgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMC4xNSkgMCUsIHJnYmEoMjU1LDI1NSwyNTUsMC4wNSkgMTAwJSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwMHB4OwogICAgICAgICAgICBmaWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZHJpZnRDbG91ZCA0MHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQoKICAgICAgICAuY2xvdWQtMSB7CiAgICAgICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICAgICAgaGVpZ2h0OiA1MHB4OwogICAgICAgICAgICB0b3A6IDEwJTsKICAgICAgICAgICAgbGVmdDogNSU7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMzVzOwogICAgICAgIH0KCiAgICAgICAgLmNsb3VkLTIgewogICAgICAgICAgICB3aWR0aDogMTUwcHg7CiAgICAgICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICAgICAgdG9wOiAyNSU7CiAgICAgICAgICAgIHJpZ2h0OiAxMCU7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogNDVzOwogICAgICAgICAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwogICAgICAgIH0KCiAgICAgICAgLmNsb3VkLTMgewogICAgICAgICAgICB3aWR0aDogMTgwcHg7CiAgICAgICAgICAgIGhlaWdodDogNDVweDsKICAgICAgICAgICAgdG9wOiA0MCU7CiAgICAgICAgICAgIGxlZnQ6IC01MHB4OwogICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDUwczsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgZHJpZnRDbG91ZCB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyBvcGFjaXR5OiAwLjQ7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMHB4KTsgb3BhY2l0eTogMC42OyB9CiAgICAgICAgfQoKICAgICAgICAvKiBQbGFuZSBBbmltYXRpb24gKi8KICAgICAgICAuZmx5aW5nLXBsYW5lIHsKICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTsKICAgICAgICAgICAgei1pbmRleDogMzsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmx5Q2lyY2xlIDMwcyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAwIDIwcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpKTsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgZmx5Q2lyY2xlIHsKICAgICAgICAgICAgMCUgeyAKICAgICAgICAgICAgICAgIHRvcDogMjAlOwogICAgICAgICAgICAgICAgbGVmdDogLTEwJTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDEwZGVnKTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgMTAlIHsgb3BhY2l0eTogMC43OyB9CiAgICAgICAgICAgIDI1JSB7CiAgICAgICAgICAgICAgICB0b3A6IDE1JTsKICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDVkZWcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICB0b3A6IDMwJTsKICAgICAgICAgICAgICAgIGxlZnQ6IDExMCU7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZyk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIDUxJSB7CiAgICAgICAgICAgICAgICB0b3A6IDYwJTsKICAgICAgICAgICAgICAgIGxlZnQ6IDExMCU7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIDc1JSB7CiAgICAgICAgICAgICAgICB0b3A6IDUwJTsKICAgICAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpIHNjYWxlWCgtMSk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgOTAlIHsgb3BhY2l0eTogMC41OyB9CiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgdG9wOiA0MCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAtMTAlOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZykgc2NhbGVYKC0xKTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qID09PT09PT09PT0gQ09OVEFJTkVSID09PT09PT09PT0gKi8KICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1NDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHggMjBweDsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgfQoKICAgICAgICAvKiA9PT09PT09PT09IE5BVklHQVRJT04gPT09PT09PT09PSAqLwogICAgICAgIC5iYWNrLW5hdiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDEycHggMjRweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1zb2Z0KTsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdPdXRmaXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgICAgICAgICAgd2lkdGg6IGZpdC1jb250ZW50OwogICAgICAgIH0KCiAgICAgICAgLmJhY2stbmF2OmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01cHgpOwogICAgICAgIH0KCiAgICAgICAgLyogPT09PT09PT09PSBIRUFERVIgPT09PT09PT09PSAqLwogICAgICAgIC5jb25uZWN0LWhlYWRlciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzVweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW5Eb3duIDFzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGZhZGVJbkRvd24gewogICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zMHB4KTsgfQogICAgICAgICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBmYWRlSW5VcCB7CiAgICAgICAgICAgIGZyb20geyBvcGFjaXR5OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7IH0KICAgICAgICAgICAgdG8geyBvcGFjaXR5OiAxOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgICB9CgogICAgICAgIC5wYWdlLWJhZGdlIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDM3LCAyMTEsIDEwMiwgMC4yKSAwJSwgcmdiYSgyNTEsIDE5MSwgMzYsIDAuMTUpIDEwMCUpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS13aGF0c2FwcC1ncmVlbik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMjVweDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgICB9CgogICAgICAgIC5wYWdlLWJhZGdlLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICB9CgogICAgICAgIC5wYWdlLWJhZGdlLXRleHQgewogICAgICAgICAgICBmb250LWZhbWlseTogJ091dGZpdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0td2hhdHNhcHAtZ3JlZW4pOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgIH0KCiAgICAgICAgLmNvbm5lY3QtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ0RNIFNlcmlmIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjZyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWJyaWdodCk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNDgwcHgpIHsKICAgICAgICAgICAgLmNvbm5lY3QtdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuY29ubmVjdC1zdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3V0Zml0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjE1cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgfQoKICAgICAgICAvKiA9PT09PT09PT09IEJPT0tJTkcgQ0FSRCA9PT09PT09PT09ICovCiAgICAgICAgLmJvb2tpbmctY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMzcsIDIxMSwgMTAyLCAwLjEyKSAwJSwgcmdiYSgzNywgMjExLCAxMDIsIDAuMDUpIDEwMCUpOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS13aGF0c2FwcC1ncmVlbik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDMwcHggMjVweDsKICAgICAgICAgICAgbWFyZ2luOiAzMHB4IDA7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW5VcCAxcyBlYXNlIDAuM3MgYm90aDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgLmJvb2tpbmctY2FyZDo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtNTAlOwogICAgICAgICAgICBsZWZ0OiAtNTAlOwogICAgICAgICAgICB3aWR0aDogMjAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAyMDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCByZ2JhKDM3LCAyMTEsIDEwMiwgMC4xKSAwJSwgdHJhbnNwYXJlbnQgNjAlKTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBwdWxzZUdsb3cgNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHB1bHNlR2xvdyB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgb3BhY2l0eTogMC41OyB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CiAgICAgICAgICAgIDUwJSB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgfQogICAgICAgIH0KCiAgICAgICAgLmJvb2tpbmctaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogNHJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBwbGFuZUZsb2F0IDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHBsYW5lRmxvYXQgewogICAgICAgICAgICAwJSwgMTAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGUoLTVkZWcpOyB9CiAgICAgICAgICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCkgcm90YXRlKDVkZWcpOyB9CiAgICAgICAgfQoKICAgICAgICAuYm9va2luZy10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnRE0gU2VyaWYgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtYnJpZ2h0KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLmJvb2tpbmctZGVzY3JpcHRpb24gewogICAgICAgICAgICBmb250LWZhbWlseTogJ091dGZpdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtc29mdCk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CgogICAgICAgIC53aGF0c2FwcC1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1heC13aWR0aDogMzIwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMzVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0td2hhdHNhcHAtZ3JlZW4pIDAlLCAjMjBCQTVDIDEwMCUpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDYwcHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3V0Zml0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWJyaWdodCk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxNXB4IDUwcHggcmdiYSgzNywgMjExLCAxMDIsIDAuNCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CgogICAgICAgIC53aGF0c2FwcC1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgc2NhbGUoMS4wMyk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMjVweCA2MHB4IHJnYmEoMzcsIDIxMSwgMTAyLCAwLjUpOwogICAgICAgIH0KCiAgICAgICAgLndoYXRzYXBwLWJ0bi1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjZyZW07CiAgICAgICAgfQoKICAgICAgICAuYm9va2luZy1udW1iZXIgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1NwYWNlIE1vbm8nLCBtb25vc3BhY2U7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0td2hhdHNhcHAtZ3JlZW4pOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMnB4OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAvKiA9PT09PT09PT09IEVYUEVSSUVOQ0UgSU5GTyA9PT09PT09PT09ICovCiAgICAgICAgLmV4cGVyaWVuY2Utc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbjogMzVweCAwOwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJblVwIDFzIGVhc2UgMC41cyBib3RoOwogICAgICAgIH0KCiAgICAgICAgLmV4cGVyaWVuY2UtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ091dGZpdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogM3B4OwogICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICAgICAgfQoKICAgICAgICAuZXhwZXJpZW5jZS1ncmlkIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgIH0KCiAgICAgICAgLmV4cGVyaWVuY2UtY2FyZCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDIycHggMThweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzKSAxMDAlKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuZXhwZXJpZW5jZS1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIDEwMCUpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXNreS1nb2xkKTsKICAgICAgICB9CgogICAgICAgIC5leHBlcmllbmNlLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTJweDsKICAgICAgICB9CgogICAgICAgIC5leHBlcmllbmNlLWxhYmVsIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdPdXRmaXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNvZnQpOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgICAgIH0KCiAgICAgICAgLyogPT09PT09PT09PSBTT0NJQUwgU0VDVElPTiA9PT09PT09PT09ICovCiAgICAgICAgLnNvY2lhbC1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luOiA0MHB4IDA7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW5VcCAxcyBlYXNlIDAuN3MgYm90aDsKICAgICAgICB9CgogICAgICAgIC5zb2NpYWwtdGl0bGUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ091dGZpdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1zb2Z0KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgICAgICB9CgogICAgICAgIC5zb2NpYWwtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAzNjBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQoKICAgICAgICAuc29jaWFsLWxpbmsgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDIycHggMTVweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAzKSAxMDAlKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuc29jaWFsLWxpbms6aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCkgc2NhbGUoMS4wNSk7CiAgICAgICAgfQoKICAgICAgICAuc29jaWFsLWxpbmsuaW5zdGFncmFtOmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pbnN0YWdyYW0tcGluayk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjI1LCA0OCwgMTA4LCAwLjE1KSAwJSwgcmdiYSgyMjUsIDQ4LCAxMDgsIDAuMDUpIDEwMCUpOwogICAgICAgIH0KCiAgICAgICAgLnNvY2lhbC1saW5rLmxpbmtlZGluOmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1saW5rZWRpbi1ibHVlKTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgwLCAxMTksIDE4MSwgMC4xNSkgMCUsIHJnYmEoMCwgMTE5LCAxODEsIDAuMDUpIDEwMCUpOwogICAgICAgIH0KCiAgICAgICAgLnNvY2lhbC1saW5rLnRpa3Rvazpob3ZlciB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tdGlrdG9rLXBpbmspOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NCwgNDQsIDg1LCAwLjE1KSAwJSwgcmdiYSgyNTQsIDQ0LCA4NSwgMC4wNSkgMTAwJSk7CiAgICAgICAgfQoKICAgICAgICAuc29jaWFsLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgfQoKICAgICAgICAuc29jaWFsLW5hbWUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ091dGZpdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtc29mdCk7CiAgICAgICAgfQoKICAgICAgICAvKiA9PT09PT09PT09IFRFU1RJTU9OSUFMID09PT09PT09PT0gKi8KICAgICAgICAudGVzdGltb25pYWwtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbjogNDBweCAwOwogICAgICAgICAgICBwYWRkaW5nOiAyOHB4IDI1cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjA1LCAxNjMsIDc5LCAwLjEpIDAlLCByZ2JhKDI0OSwgMTE1LCAyMiwgMC4wOCkgMTAwJSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tc2t5LWdvbGQpOwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJblVwIDFzIGVhc2UgMC45cyBib3RoOwogICAgICAgIH0KCiAgICAgICAgLnRlc3RpbW9uaWFsLXF1b3RlIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdETSBTZXJpZiBEaXNwbGF5Jywgc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTsKICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1zb2Z0KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDsKICAgICAgICB9CgogICAgICAgIC50ZXN0aW1vbmlhbC1jb250ZXh0IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdPdXRmaXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1za3ktZ29sZCk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgfQoKICAgICAgICAvKiA9PT09PT09PT09IEFSVElDTEUgTElOSyA9PT09PT09PT09ICovCiAgICAgICAgLmFydGljbGUtbGluay1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luOiAzMHB4IDA7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmFkZUluVXAgMXMgZWFzZSAxLjFzIGJvdGg7CiAgICAgICAgfQoKICAgICAgICAuYXJ0aWNsZS1jYXJkIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDYpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDIpIDEwMCUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtYnJpZ2h0KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5hcnRpY2xlLWNhcmQ6aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQpIDEwMCUpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXBlYXJsLWdvbGQpOwogICAgICAgIH0KCiAgICAgICAgLmFydGljbGUtY2FyZC1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CgogICAgICAgIC5hcnRpY2xlLWNhcmQtY29udGVudCB7CiAgICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAuYXJ0aWNsZS1jYXJkLWxhYmVsIHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdPdXRmaXQnLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDAuNzVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1wZWFybC1nb2xkKTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIH0KCiAgICAgICAgLmFydGljbGUtY2FyZC10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3V0Zml0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1zb2Z0KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDsKICAgICAgICB9CgogICAgICAgIC5hcnRpY2xlLWNhcmQtYXJyb3cgewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXBlYXJsLWdvbGQpOwogICAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICB9CgogICAgICAgIC8qID09PT09PT09PT0gUE9XRVJFRCBCWSA9PT09PT09PT09ICovCiAgICAgICAgLnBvd2VyZWQtYnkgewogICAgICAgICAgICBtYXJnaW46IDQwcHggMCAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpIDAlLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDIpIDEwMCUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmYWRlSW5VcCAxcyBlYXNlIDEuM3MgYm90aDsKICAgICAgICB9CgogICAgICAgIC5wb3dlcmVkLWxhYmVsIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3V0Zml0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjdyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDJweDsKICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICB9CgogICAgICAgIC5wb3dlcmVkLWxpbmsgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3V0Zml0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tcGVhcmwtZ29sZCk7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5wb3dlcmVkLWxpbms6aG92ZXIgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tc2t5LWdvbGQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOwogICAgICAgIH0KCiAgICAgICAgLnBvd2VyZWQtdGFnbGluZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBmb250LWZhbWlseTogJ091dGZpdCcsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEwcHg7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjVweDsKICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIH0KCiAgICAgICAgLyogPT09PT09PT09PSBGT09URVIgPT09PT09PT09PSAqLwogICAgICAgIC5mb290ZXIgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHggMCA0MHB4OwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJblVwIDFzIGVhc2UgMS41cyBib3RoOwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1icmFuZCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnU3BhY2UgTW9ubycsIG1vbm9zcGFjZTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICB9CgogICAgICAgIC5mb290ZXItdGFnbGluZSB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3V0Zml0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LXNvZnQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgfQoKICAgICAgICAuZm9vdGVyLWNvcHlyaWdodCB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnT3V0Zml0Jywgc2Fucy1zZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICB9CgogICAgICAgIC8qID09PT09PT09PT0gQUNDRVNTSUJJTElUWSA9PT09PT09PT09ICovCiAgICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAgICAgICAgICAgLmNsb3VkLCAuZmx5aW5nLXBsYW5lLCAuYm9va2luZy1jYXJkOjpiZWZvcmUsIC5ib29raW5nLWljb24gewogICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBub25lOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiA9PT09PT09PT09IFJFU1BPTlNJVkUgPT09PT09PT09PSAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA0MDBweCkgewogICAgICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMTVweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmNvbm5lY3QtdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5ib29raW5nLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAud2hhdHNhcHAtYnRuIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4wNXJlbTsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE4cHggMzBweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLnNvY2lhbC1ncmlkIHsKICAgICAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLnNvY2lhbC1saW5rIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDE4cHggMTJweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmV4cGVyaWVuY2UtZ3JpZCB7CiAgICAgICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKICAgIDwhLS0gQmFja2dyb3VuZCAtLT4KICAgIDxkaXYgY2xhc3M9ImNvbm5lY3QtYmciPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iaG9yaXpvbi1nbG93Ij48L2Rpdj4KCiAgICA8IS0tIEZsb2F0aW5nIENsb3VkcyAtLT4KICAgIDxkaXYgY2xhc3M9ImZsb2F0aW5nLWNsb3VkcyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xvdWQgY2xvdWQtMSI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xvdWQgY2xvdWQtMiI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2xvdWQgY2xvdWQtMyI+PC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8IS0tIEZseWluZyBQbGFuZSAtLT4KICAgIDxkaXYgY2xhc3M9ImZseWluZy1wbGFuZSI+JiN4MjcwODs8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIAogICAgICAgIDwhLS0gQmFjayBOYXZpZ2F0aW9uIC0tPgogICAgICAgIDxhIGhyZWY9Ii9kaXNjb3ZlciIgY2xhc3M9ImJhY2stbmF2Ij4KICAgICAgICAgICAgPHNwYW4+JmxhcnI7PC9zcGFuPgogICAgICAgICAgICA8c3Bhbj5CYWNrIHRvIERpc2NvdmVyPC9zcGFuPgogICAgICAgIDwvYT4KCiAgICAgICAgPCEtLSBIZWFkZXIgLS0+CiAgICAgICAgPGhlYWRlciBjbGFzcz0iY29ubmVjdC1oZWFkZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWdlLWJhZGdlIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWdlLWJhZGdlLWljb24iPiYjeDFGM0FCOzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwYWdlLWJhZGdlLXRleHQiPkJvb2sgJmFtcDsgQ29ubmVjdDwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8aDEgY2xhc3M9ImNvbm5lY3QtdGl0bGUiPkV4cGVyaWVuY2UgdGhlIFBlYXJsIG9mIEFmcmljYSBmcm9tIHRoZSBTa3k8L2gxPgogICAgICAgICAgICAKICAgICAgICAgICAgPHAgY2xhc3M9ImNvbm5lY3Qtc3VidGl0bGUiPkJvb2sgeW91ciBzY2VuaWMgZmxpZ2h0IG92ZXIgS2FtcGFsYSBhbmQgY3JlYXRlIHVuZm9yZ2V0dGFibGUgbWVtb3JpZXMgYWJvdmUgdGhlIFBlYXJsIG9mIEFmcmljYTwvcD4KICAgICAgICA8L2hlYWRlcj4KCiAgICAgICAgPCEtLSBCb29raW5nIENhcmQgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImJvb2tpbmctY2FyZCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJvb2tpbmctaWNvbiI+JiN4MUY2RUI7PC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8aDIgY2xhc3M9ImJvb2tpbmctdGl0bGUiPkJvb2sgWW91ciBTY2VuaWMgRmxpZ2h0PC9oMj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxwIGNsYXNzPSJib29raW5nLWRlc2NyaXB0aW9uIj4KICAgICAgICAgICAgICAgIEV4cGVyaWVuY2UgS2FtcGFsYSBsaWtlIG5ldmVyIGJlZm9yZSEgQ2FwdGFpbiBGYXJpZGFoIEFzaGFiYSBvZmZlcnMgcHJpdmF0ZSBzY2VuaWMgZmxpZ2h0cyBvdmVyIFVnYW5kYSdzIGJlYXV0aWZ1bCBjYXBpdGFsLiBQZXJmZWN0IGZvciBzcGVjaWFsIG9jY2FzaW9ucywgcGhvdG9ncmFwaHksIG9yIHNpbXBseSBleHBlcmllbmNpbmcgdGhlIG1hZ2ljIG9mIGZsaWdodC4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAKICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93YS5tZS8yNTY3NzU2MzExNTc/dGV4dD1IZWxsbyUyMENhcHRhaW4lMjBBc2hhYmEhJTIwSSUyMHdvdWxkJTIwbGlrZSUyMHRvJTIwYm9vayUyMGElMjBzY2VuaWMlMjBmbGlnaHQlMjBvdmVyJTIwS2FtcGFsYS4iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0id2hhdHNhcHAtYnRuIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ3aGF0c2FwcC1idG4taWNvbiI+JiN4MUY0QUM7PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4+Qm9vayB2aWEgV2hhdHNBcHA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxwIGNsYXNzPSJib29raW5nLW51bWJlciI+JiN4MUY0RjE7ICsyNTYgNzc1IDYzMSAxNTc8L3A+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIEV4cGVyaWVuY2UgSW5mbyAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0iZXhwZXJpZW5jZS1zZWN0aW9uIj4KICAgICAgICAgICAgPGgzIGNsYXNzPSJleHBlcmllbmNlLXRpdGxlIj5XaGF0IEF3YWl0cyBZb3U8L2gzPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJleHBlcmllbmNlLWdyaWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXhwZXJpZW5jZS1jYXJkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleHBlcmllbmNlLWljb24iPiYjeDFGMzA1OzwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJleHBlcmllbmNlLWxhYmVsIj5CcmVhdGh0YWtpbmc8YnI+QWVyaWFsIFZpZXdzPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleHBlcmllbmNlLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4cGVyaWVuY2UtaWNvbiI+JiN4MUY0Rjg7PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImV4cGVyaWVuY2UtbGFiZWwiPlBlcmZlY3QgZm9yPGJyPlBob3RvZ3JhcGh5PC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJleHBlcmllbmNlLWNhcmQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4cGVyaWVuY2UtaWNvbiI+JiN4MUY0Njk7JiN4MjAwRDsmI3gyNzA4OyYjeEZFMEY7PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9ImV4cGVyaWVuY2UtbGFiZWwiPkV4cGVyaWVuY2VkPGJyPkNhcHRhaW48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImV4cGVyaWVuY2UtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXhwZXJpZW5jZS1pY29uIj4mI3gxRjQ4RTs8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iZXhwZXJpZW5jZS1sYWJlbCI+RXhjbHVzaXZlPGJyPkV4cGVyaWVuY2U8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIFNvY2lhbCBTZWN0aW9uIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzb2NpYWwtc2VjdGlvbiI+CiAgICAgICAgICAgIDxoMyBjbGFzcz0ic29jaWFsLXRpdGxlIj5Db25uZWN0IG9uIFNvY2lhbCBNZWRpYTwvaDM+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzb2NpYWwtZ3JpZCI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2luc3RhZ3JhbS5jb20vYXNoYWJhZmxpZ2h0cyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJzb2NpYWwtbGluayBpbnN0YWdyYW0iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzb2NpYWwtaWNvbiI+JiN4MUY0Rjc7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzb2NpYWwtbmFtZSI+SW5zdGFncmFtPC9zcGFuPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2xpbmtlZGluLmNvbS9pbi9mYXJpZGFoLWFzaGFiYSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJzb2NpYWwtbGluayBsaW5rZWRpbiI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNvY2lhbC1pY29uIj4mI3gxRjRCQzs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNvY2lhbC1uYW1lIj5MaW5rZWRJbjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly90aWt0b2suY29tL0Bhc2hhYmFmbGlnaHRzIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InNvY2lhbC1saW5rIHRpa3RvayI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNvY2lhbC1pY29uIj4mI3gxRjNCNTs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNvY2lhbC1uYW1lIj5UaWtUb2s8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBUZXN0aW1vbmlhbCAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0idGVzdGltb25pYWwtc2VjdGlvbiI+CiAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXN0aW1vbmlhbC1xdW90ZSI+IkEgY2hpbGQgd2hvIHNlZXMgZmxpZ2h0IHVwIGNsb3NlIG5vIGxvbmdlciB2aWV3cyBhaXJjcmFmdCBhcyB1bnJlYWNoYWJsZSBtYWNoaW5lcy4gVGhleSBiZWdpbiB0byBpbWFnaW5lIHRoZW1zZWx2ZXMgYXMgZW5naW5lZXJzLCBwaWxvdHMsIGNvbnRyb2xsZXJzLCBhbmQgYXZpYXRpb24gZW50cmVwcmVuZXVycy4iPC9wPgogICAgICAgICAgICA8cCBjbGFzcz0idGVzdGltb25pYWwtY29udGV4dCI+Jm1kYXNoOyBPbiB0aGUgaW1wYWN0IG9mIGV4cGVyaWVudGlhbCBhdmlhdGlvbjwvcD4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gQXJ0aWNsZSBMaW5rIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhcnRpY2xlLWxpbmstc2VjdGlvbiI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYWZyaWNhZnJvbnRsaW5lbmV4dXMubmV3cy9jYXB0aWFuLWZhcmlkYWgtYXNoYWJhLWZsaWdodHMtd29tZW4taW4tYWZyaWNhbi1hdmlhdGlvbi1hbmQtdGhlLXJpc2Utb2YtcHVycG9zZS1kcml2ZW4tZmxpZ2h0LWxlYWRlcnNoaXAtYW5kLWJ1c2luZXNzIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImFydGljbGUtY2FyZCI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYXJ0aWNsZS1jYXJkLWljb24iPiYjeDFGNEYwOzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFydGljbGUtY2FyZC1jb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYXJ0aWNsZS1jYXJkLWxhYmVsIj5GZWF0dXJlZCBTdG9yeTwvcD4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYXJ0aWNsZS1jYXJkLXRpdGxlIj5Xb21lbiBpbiBBZnJpY2FuIEF2aWF0aW9uIGFuZCB0aGUgUmlzZSBvZiBQdXJwb3NlLURyaXZlbiBGbGlnaHQgTGVhZGVyc2hpcDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFydGljbGUtY2FyZC1hcnJvdyI+JnJhcnI7PC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICA8IS0tIFBvd2VyZWQgQnkgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0icG93ZXJlZC1ieSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwb3dlcmVkLWxhYmVsIj5EaWdpdGFsIENhcmQgUG93ZXJlZCBCeTwvc3Bhbj4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9oYW5kc2hha2UuYWZyaWNhIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InBvd2VyZWQtbGluayI+CiAgICAgICAgICAgICAgICA8c3Bhbj4mI3gxRjkxRDs8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj5CcmFuZCBIYW5kc2hha2UgQWZyaWNhPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwb3dlcmVkLXRhZ2xpbmUiPkFyY2hpdGVjdGluZyBEaWdpdGFsIFNvdmVyZWlnbnR5IGZvciBBZnJpY2EncyBCdWlsZGVycyAmYW1wOyBDaGFuZ2VtYWtlcnM8L3NwYW4+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDwhLS0gRm9vdGVyIC0tPgogICAgICAgIDxmb290ZXIgY2xhc3M9ImZvb3RlciI+CiAgICAgICAgICAgIDxwIGNsYXNzPSJmb290ZXItYnJhbmQiPkFTSEFCQUZMSUdIVFM8L3A+CiAgICAgICAgICAgIDxwIGNsYXNzPSJmb290ZXItdGFnbGluZSI+RXhwZXJpZW5jZSB0aGUgUGVhcmwgb2YgQWZyaWNhIGZyb20gdGhlIFNreTwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci1jb3B5cmlnaHQiPiZjb3B5OyAyMDI2IENhcHRhaW4gRmFyaWRhaCBBc2hhYmEgJmJ1bGw7IEthbXBhbGEsIFVnYW5kYTwvcD4KICAgICAgICA8L2Zvb3Rlcj4KCiAgICA8L2Rpdj4KCjwvYm9keT4KPC9odG1sPg==","embed":""}
✈
←
Back to Discover
📰
→
🎫
Book & Connect
Experience the Pearl of Africa from the Sky
Book your scenic flight over Kampala and create unforgettable memories above the Pearl of Africa
🛫
Book Your Scenic Flight
Experience Kampala like never before! Captain Faridah Ashaba offers private scenic flights over Uganda's beautiful capital. Perfect for special occasions, photography, or simply experiencing the magic of flight.
💬 Book via WhatsApp📱 +256 775 631 157
What Awaits You
🌅
Breathtaking
Aerial Views
📸
Perfect for
Photography
👩✈️
Experienced
Captain
💎
Exclusive
Experience
Connect on Social Media
"A child who sees flight up close no longer views aircraft as unreachable machines. They begin to imagine themselves as engineers, pilots, controllers, and aviation entrepreneurs."
— On the impact of experiential aviation
Featured Story
Women in African Aviation and the Rise of Purpose-Driven Flight Leadership
Digital Card Powered By
🤝
Brand Handshake Africa
Architecting Digital Sovereignty for Africa's Builders & Changemakers