{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICAKICAgIDwhLS0gUHJpbWFyeSBNZXRhIFRhZ3MgLS0+CiAgICA8dGl0bGU+RHIuIEEuSy4gU2ViYmFhbGUgfCBDb25zdWx0YW50IFN1cmdlb24gJiBIZWFsdGhjYXJlIFBpb25lZXIgfCBVZ2FuZGE8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0idGl0bGUiIGNvbnRlbnQ9IkRyLiBBLksuIFNlYmJhYWxlIHwgQ29uc3VsdGFudCBTdXJnZW9uICYgSGVhbHRoY2FyZSBQaW9uZWVyIHwgVWdhbmRhIj4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJGb3VuZGVyIG9mIENhc2UgSG9zcGl0YWwuIENvbnN1bHRhbnQgUGh5c2ljaWFuLCBMYXBhcm9zY29waWMgU3VyZ2VvbiwgR2FzdHJvZW50ZXJvbG9naXN0LiBGZWxsb3cgQ09TRUNTQSwgSUNTICYgV0FMUy4gMzAgeWVhcnMgZmx1ZW50IGluIGhlYWx0aGNhcmUuIEJvb2sgYXBwb2ludG1lbnQgdG9kYXkuIj4KICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSJEciBTZWJiYWFsZSBLYXRvLCBEciBBSyBTZWJiYWFsZSwgQ2FzZSBIb3NwaXRhbCBVZ2FuZGEsIENhc2UgTWVkaWNhbCBTZXJ2aWNlcywgbGFwYXJvc2NvcGljIHN1cmdlb24gVWdhbmRhLCBnYXN0cm9lbnRlcm9sb2dpc3QgS2FtcGFsYSwgQ09TRUNTQSBmZWxsb3csIGhlYWx0aGNhcmUgcGlvbmVlciBVZ2FuZGEsIENhdGggTGFiIFVnYW5kYSI+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkRyLiBBLksuIFNlYmJhYWxlIj4KICAgIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0iaW5kZXgsIGZvbGxvdyI+CiAgICAKICAgIDwhLS0gT3BlbiBHcmFwaCAvIEZhY2Vib29rIC0tPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9InByb2ZpbGUiPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9jYXNlY2xpbmljLm9yZy9mb3VuZGVyLWNlbyI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkRyLiBTZWJiYWFsZSBLYXRvIHwgQ29uc3VsdGFudCBTdXJnZW9uIHwgQ2FzZSBIb3NwaXRhbCI+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlBpb25lZXIgTGFwYXJvc2NvcGljIFN1cmdlb24uIEZlbGxvdyBDT1NFQ1NBLCBJQ1MgJiBXQUxTLiBCb29rIHlvdXIgY29uc3VsdGF0aW9uIHRvZGF5LiI+CiAgICAKICAgIDwhLS0gVHdpdHRlciAtLT4KICAgIDxtZXRhIHByb3BlcnR5PSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InN1bW1hcnlfbGFyZ2VfaW1hZ2UiPgogICAgPG1ldGEgcHJvcGVydHk9InR3aXR0ZXI6dXJsIiBjb250ZW50PSJodHRwczovL2Nhc2VjbGluaWMub3JnL2ZvdW5kZXItY2VvIj4KICAgIDxtZXRhIHByb3BlcnR5PSJ0d2l0dGVyOnRpdGxlIiBjb250ZW50PSJEci4gU2ViYmFhbGUgS2F0byB8IENvbnN1bHRhbnQgU3VyZ2VvbiB8IENhc2UgSG9zcGl0YWwiPgogICAgPG1ldGEgcHJvcGVydHk9InR3aXR0ZXI6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IlBpb25lZXIgTGFwYXJvc2NvcGljIFN1cmdlb24uIEZlbGxvdyBDT1NFQ1NBLCBJQ1MgJiBXQUxTLiBCb29rIHlvdXIgY29uc3VsdGF0aW9uIHRvZGF5LiI+CiAgICAKICAgIDwhLS0gVGhlbWUgQ29sb3IgLS0+CiAgICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzBBNzU0MSI+CiAgICAKICAgIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbSI+CiAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20iIGNyb3Nzb3JpZ2luPgogICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1QbGF5ZmFpcitEaXNwbGF5OndnaHRANDAwOzUwMDs2MDA7NzAwOzgwMCZmYW1pbHk9SW50ZXI6d2dodEAzMDA7NDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KICAgIAogICAgPHN0eWxlPgogICAgICAgIDpyb290IHsKICAgICAgICAgICAgLyogQ2FzZSBCcmFuZCBDb2xvcnMgKi8KICAgICAgICAgICAgLS1jYXNlLWdyZWVuOiAjMEE3NTQxOwogICAgICAgICAgICAtLWNhc2UtZ3JlZW4tZGFyazogIzA1M0QyODsKICAgICAgICAgICAgLS1jYXNlLWdyZWVuLWxpZ2h0OiAjMEQ5NjU0OwogICAgICAgICAgICAtLWNhc2UtcHVycGxlOiAjNEIxRDdEOwogICAgICAgICAgICAtLWNhc2UtcHVycGxlLWxpZ2h0OiAjOEI0RkNGOwogICAgICAgICAgICAtLWNhc2Utb3JhbmdlOiAjRkY2QjAwOwogICAgICAgICAgICAtLWNhc2Utb3JhbmdlLWxpZ2h0OiAjRkY4QzMzOwogICAgICAgICAgICAtLWNhc2Utb3JhbmdlLWJvbGQ6ICNGRjU1MDA7CiAgICAgICAgICAgIC0tY2FzZS1tYXJvb246ICM4QjIzNDY7CiAgICAgICAgICAgIC0tY2FzZS10ZWFsOiAjMUE4QzhDOwogICAgICAgICAgICAtLWNhc2UtZ29sZDogI0M5QTIyNzsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8qIE5ldXRyYWxzIC0gREVFUEVSIEdSRUVOIEJBQ0tHUk9VTkQgKi8KICAgICAgICAgICAgLS1kZWVwLWJnOiAjMDQxQTBEOwogICAgICAgICAgICAtLWNhcmQtYmc6ICMwQTI0MTU7CiAgICAgICAgICAgIC0tY2FyZC1iZy1saWdodDogIzBFMkUxQTsKICAgICAgICAgICAgLS13YXJtLXdoaXRlOiAjRkZGRUY4OwogICAgICAgICAgICAtLWNyZWFtOiAjRjVGMEU4OwogICAgICAgICAgICAtLXRleHQtbGlnaHQ6ICNFOEY1RTk7CiAgICAgICAgICAgIC0tdGV4dC1tdXRlZDogI0E4QzlCMDsKICAgICAgICB9CgogICAgICAgICogewogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgfQoKICAgICAgICBib2R5IHsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHZhcigtLWRlZXAtYmcpIDAlLCAjMEQyODE4IDUwJSwgdmFyKC0tY2FzZS1ncmVlbi1kYXJrKSAxMDAlKTsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLyogRmxvYXRpbmcgTWVkaWNhbCBDcm9zc2VzIEJhY2tncm91bmQgKi8KICAgICAgICAuZmxvYXRpbmctY3Jvc3NlcyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5tZWRpY2FsLWNyb3NzIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBvcGFjaXR5OiAwLjA2OwogICAgICAgICAgICBhbmltYXRpb246IGZsb2F0Q3Jvc3MgMjVzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgLm1lZGljYWwtY3Jvc3M6OmJlZm9yZSwKICAgICAgICAubWVkaWNhbC1jcm9zczo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jYXNlLWdyZWVuKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgIH0KCiAgICAgICAgLm1lZGljYWwtY3Jvc3M6OmJlZm9yZSB7CiAgICAgICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgICAgIHRvcDogNTAlOwogICAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgIH0KCiAgICAgICAgLm1lZGljYWwtY3Jvc3M6OmFmdGVyIHsKICAgICAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgfQoKICAgICAgICAuY3Jvc3MtMSB7IHRvcDogNSU7IGxlZnQ6IDUlOyBhbmltYXRpb24tZGVsYXk6IDBzOyB9CiAgICAgICAgLmNyb3NzLTIgeyB0b3A6IDE1JTsgcmlnaHQ6IDglOyBhbmltYXRpb24tZGVsYXk6IC01czsgfQogICAgICAgIC5jcm9zcy0zIHsgdG9wOiA0MCU7IGxlZnQ6IDMlOyBhbmltYXRpb24tZGVsYXk6IC0xMHM7IH0KICAgICAgICAuY3Jvc3MtNCB7IHRvcDogNjUlOyByaWdodDogNSU7IGFuaW1hdGlvbi1kZWxheTogLTE1czsgfQogICAgICAgIC5jcm9zcy01IHsgdG9wOiA4NSU7IGxlZnQ6IDEwJTsgYW5pbWF0aW9uLWRlbGF5OiAtM3M7IH0KICAgICAgICAuY3Jvc3MtNiB7IHRvcDogMzAlOyByaWdodDogMyU7IGFuaW1hdGlvbi1kZWxheTogLThzOyB9CgogICAgICAgIC5jcm9zcy1wdXJwbGU6OmJlZm9yZSwKICAgICAgICAuY3Jvc3MtcHVycGxlOjphZnRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNhc2UtcHVycGxlKTsKICAgICAgICB9CgogICAgICAgIC5jcm9zcy1vcmFuZ2U6OmJlZm9yZSwKICAgICAgICAuY3Jvc3Mtb3JhbmdlOjphZnRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNhc2Utb3JhbmdlKTsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgZmxvYXRDcm9zcyB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgwZGVnKTsgb3BhY2l0eTogMC4wNTsgfQogICAgICAgICAgICA1MCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpIHJvdGF0ZSg1ZGVnKTsgb3BhY2l0eTogMC4wODsgfQogICAgICAgIH0KCiAgICAgICAgLyogQ29udGFpbmVyIC0gV0lERVIgRk9SIFRBQkxFVFMvREVTS1RPUFMgKi8KICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MjBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIHBhZGRpbmc6IDI1cHg7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5jb250YWluZXIgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA3MjBweDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDQwcHg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5MDBweCkgewogICAgICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1MHB4OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBIZWFkZXIgU2VjdGlvbiAqLwogICAgICAgIC5oZWFkZXIgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDM1cHggMCAzMHB4OwogICAgICAgICAgICBhbmltYXRpb246IGZhZGVJbiAxcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBmYWRlSW4gewogICAgICAgICAgICBmcm9tIHsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTsgfQogICAgICAgICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICAgIH0KCiAgICAgICAgLyogUHJvZmlsZSBQaG90byBDb250YWluZXIgKi8KICAgICAgICAucHJvZmlsZS1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHdpZHRoOiAxNjBweDsKICAgICAgICAgICAgaGVpZ2h0OiAxNjBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMjVweDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAucHJvZmlsZS1jb250YWluZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDIwMHB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLnByb2ZpbGUtcmluZyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAtMTBweDsKICAgICAgICAgICAgbGVmdDogLTEwcHg7CiAgICAgICAgICAgIHdpZHRoOiAxODBweDsKICAgICAgICAgICAgaGVpZ2h0OiAxODBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBjb25pYy1ncmFkaWVudCh2YXIoLS1jYXNlLWdyZWVuKSwgdmFyKC0tY2FzZS1wdXJwbGUpLCB2YXIoLS1jYXNlLW9yYW5nZSksIHZhcigtLWNhc2UtZ3JlZW4pKTsKICAgICAgICAgICAgYW5pbWF0aW9uOiByaW5nUm90YXRlIDhzIGxpbmVhciBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAucHJvZmlsZS1yaW5nIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAyMjBweDsKICAgICAgICAgICAgICAgIGhlaWdodDogMjIwcHg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgcmluZ1JvdGF0ZSB7CiAgICAgICAgICAgIGZyb20geyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQogICAgICAgICAgICB0byB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgICAgICB9CgogICAgICAgIC5wcm9maWxlLXBob3RvIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB3aWR0aDogMTYwcHg7CiAgICAgICAgICAgIGhlaWdodDogMTYwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tY2FzZS1ncmVlbiksIHZhcigtLWNhc2UtZ3JlZW4tZGFyaykpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgYm9yZGVyOiA2cHggc29saWQgdmFyKC0td2FybS13aGl0ZSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA2MHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLnByb2ZpbGUtcGhvdG8gewogICAgICAgICAgICAgICAgd2lkdGg6IDIwMHB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogQ2FzZSBIb3NwaXRhbCBDcm9zcyBMb2dvIGluIFByb2ZpbGUgKi8KICAgICAgICAucHJvZmlsZS1jYXNlLWxvZ28gewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHdpZHRoOiA3MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDcwcHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLnByb2ZpbGUtY2FzZS1sb2dvIHsKICAgICAgICAgICAgICAgIHdpZHRoOiA5MHB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiA5MHB4OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAucHJvZmlsZS1jcm9zcy12ZXJ0aWNhbCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0td2FybS13aGl0ZSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAucHJvZmlsZS1jcm9zcy12ZXJ0aWNhbCB7CiAgICAgICAgICAgICAgICB3aWR0aDogMzBweDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLnByb2ZpbGUtY3Jvc3MtaG9yaXpvbnRhbCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0td2FybS13aGl0ZSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAucHJvZmlsZS1jcm9zcy1ob3Jpem9udGFsIHsKICAgICAgICAgICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLnByb2ZpbGUtY3Jvc3MtY2VudGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDUwJTsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgICAgICAgICAgd2lkdGg6IDE0cHg7CiAgICAgICAgICAgIGhlaWdodDogMTRweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY2FzZS1wdXJwbGUtbGlnaHQpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLnByb2ZpbGUtY3Jvc3MtY2VudGVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBOYW1lICovCiAgICAgICAgLm5hbWUgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjZyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAzcHggMTVweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogbmFtZUdsb3cgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLm5hbWUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAzLjJyZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA5MDBweCkgewogICAgICAgICAgICAubmFtZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDMuOHJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBuYW1lR2xvdyB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdGV4dC1zaGFkb3c6IDAgM3B4IDE1cHggcmdiYSgwLCAwLCAwLCAwLjQpOyB9CiAgICAgICAgICAgIDUwJSB7IHRleHQtc2hhZG93OiAwIDNweCAyNXB4IHJnYmEoMTAsIDExNywgNjUsIDAuNCksIDAgMCA1MHB4IHJnYmEoNzUsIDI5LCAxMjUsIDAuMik7IH0KICAgICAgICB9CgogICAgICAgIC5jcmVkZW50aWFscyB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tY2FzZS1nb2xkKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDNweDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAuY3JlZGVudGlhbHMgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC50aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbGlnaHQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLnRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuY29tcGFueSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tY2FzZS1ncmVlbi1saWdodCk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAuY29tcGFueSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5sb2NhdGlvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA4cHg7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmxvY2F0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogU2VjdGlvbiBTdHlsaW5nICovCiAgICAgICAgLnNlY3Rpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLCB2YXIoLS1jYXJkLWJnKSwgdmFyKC0tY2FyZC1iZy1saWdodCkpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBwYWRkaW5nOiAzMHB4IDI1cHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IAogICAgICAgICAgICAgICAgMCAxNXB4IDUwcHggcmdiYSgwLCAwLCAwLCAwLjMpLAogICAgICAgICAgICAgICAgMCAwIDAgMnB4IHZhcigtLWNhc2UtZ3JlZW4pLAogICAgICAgICAgICAgICAgMCAwIDAgNHB4IHZhcigtLWNhc2UtcHVycGxlKSwKICAgICAgICAgICAgICAgIDAgMCAwIDZweCB2YXIoLS1jYXNlLW9yYW5nZSk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogc2VjdGlvbkZhZGUgMC44cyBlYXNlIGZvcndhcmRzOwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLnNlY3Rpb24gewogICAgICAgICAgICAgICAgcGFkZGluZzogNDBweCAzNXB4OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLnNlY3Rpb246bnRoLWNoaWxkKDEpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjFzOyB9CiAgICAgICAgLnNlY3Rpb246bnRoLWNoaWxkKDIpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjJzOyB9CiAgICAgICAgLnNlY3Rpb246bnRoLWNoaWxkKDMpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjNzOyB9CiAgICAgICAgLnNlY3Rpb246bnRoLWNoaWxkKDQpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjRzOyB9CiAgICAgICAgLnNlY3Rpb246bnRoLWNoaWxkKDUpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjVzOyB9CiAgICAgICAgLnNlY3Rpb246bnRoLWNoaWxkKDYpIHsgYW5pbWF0aW9uLWRlbGF5OiAwLjZzOyB9CgogICAgICAgIEBrZXlmcmFtZXMgc2VjdGlvbkZhZGUgewogICAgICAgICAgICB0byB7IG9wYWNpdHk6IDE7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQogICAgICAgIH0KCiAgICAgICAgLnNlY3Rpb24taGVhZGVyIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICB9CgogICAgICAgIC5zZWN0aW9uLWhlYWRlciBoMyB7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICAgICAgICBmb250LXNpemU6IDEuNHJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXdhcm0td2hpdGUpOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLnNlY3Rpb24taGVhZGVyIGgzIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuc2VjdGlvbi1saW5lIHsKICAgICAgICAgICAgaGVpZ2h0OiAzcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdmFyKC0tY2FzZS1ncmVlbiksIHZhcigtLWNhc2UtcHVycGxlKSwgdmFyKC0tY2FzZS1vcmFuZ2UpKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgICAgIH0KCiAgICAgICAgLyogVmlkZW8gU2VjdGlvbiAqLwogICAgICAgIC52aWRlby1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNTYuMjUlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYXNlLWdyZWVuLWRhcmspLCB2YXIoLS1kZWVwLWJnKSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC40KTsKICAgICAgICB9CgogICAgICAgIC52aWRlby1jb250YWluZXIgaWZyYW1lIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICB9CgogICAgICAgIC52aWRlby1wbGFjZWhvbGRlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICB9CgogICAgICAgIC52aWRlby1wbGFjZWhvbGRlci1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiA0cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwogICAgICAgICAgICBhbmltYXRpb246IHBsYXlQdWxzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgcGxheVB1bHNlIHsKICAgICAgICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOyBvcGFjaXR5OiAwLjg7IH0KICAgICAgICAgICAgNTAlIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyBvcGFjaXR5OiAxOyB9CiAgICAgICAgfQoKICAgICAgICAvKiBDcmVkZW50aWFscyBHcmlkICovCiAgICAgICAgLmNyZWRlbnRpYWxzLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCAxZnIpOwogICAgICAgICAgICBnYXA6IDE1cHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmNyZWRlbnRpYWxzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMWZyKTsKICAgICAgICAgICAgICAgIGdhcDogMjBweDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmNyZWRlbnRpYWwtaXRlbSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogMjBweCAxNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwLCAxMTcsIDY1LCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMCwgMTE3LCA2NSwgMC4zKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5jcmVkZW50aWFsLWl0ZW06aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2FzZS1ncmVlbik7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMTAsIDExNywgNjUsIDAuMik7CiAgICAgICAgfQoKICAgICAgICAuY3JlZGVudGlhbC1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgICAgIGFuaW1hdGlvbjogaWNvbkZsb2F0IDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5jcmVkZW50aWFsLWljb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGljb25GbG9hdCB7CiAgICAgICAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgICAgICAgICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsgfQogICAgICAgIH0KCiAgICAgICAgLmNyZWRlbnRpYWwtdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5jcmVkZW50aWFsLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuY3JlZGVudGlhbC1zdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5jcmVkZW50aWFsLXN1YnRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogRmVsbG93c2hpcHMgKi8KICAgICAgICAuZmVsbG93c2hpcHMtbGlzdCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICB9CgogICAgICAgIC5mZWxsb3dzaGlwLWJhZGdlIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNzUsIDI5LCAxMjUsIDAuMiksIHJnYmEoMTAsIDExNywgNjUsIDAuMikpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jYXNlLXB1cnBsZSk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXdhcm0td2hpdGUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5mZWxsb3dzaGlwLWJhZGdlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICAgICAgcGFkZGluZzogMTVweCAyNXB4OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuZmVsbG93c2hpcC1iYWRnZTpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDc1LCAyOSwgMTI1LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLyogQ29udGFjdCBJdGVtcyAqLwogICAgICAgIC5jb250YWN0LWl0ZW0gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDE4cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAsIDExNywgNjUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1pdGVtOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgxMCwgMTE3LCA2NSwgMC4yKTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jYXNlLWdyZWVuKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDhweCk7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDY1cHg7CiAgICAgICAgICAgIGhlaWdodDogNjVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYXNlLWdyZWVuKSwgdmFyKC0tY2FzZS1ncmVlbi1kYXJrKSk7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbTsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgICAgIGFuaW1hdGlvbjogaWNvblB1bHNlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5jb250YWN0LWljb24gewogICAgICAgICAgICAgICAgd2lkdGg6IDc1cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDc1cHg7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBpY29uUHVsc2UgewogICAgICAgICAgICAwJSwgMTAwJSB7IGJveC1zaGFkb3c6IDAgNXB4IDIwcHggcmdiYSgxMCwgMTE3LCA2NSwgMC4zKTsgfQogICAgICAgICAgICA1MCUgeyBib3gtc2hhZG93OiAwIDhweCAzMHB4IHJnYmEoMTAsIDExNywgNjUsIDAuNSk7IH0KICAgICAgICB9CgogICAgICAgIC5jb250YWN0LWRldGFpbHMgewogICAgICAgICAgICBmbGV4LWdyb3c6IDE7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1sYWJlbCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmNvbnRhY3QtbGFiZWwgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC12YWx1ZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXdhcm0td2hpdGUpOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5jb250YWN0LXZhbHVlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1hcnJvdyB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tY2FzZS1ncmVlbi1saWdodCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1pdGVtOmhvdmVyIC5jb250YWN0LWFycm93IHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDhweCk7CiAgICAgICAgfQoKICAgICAgICAvKiBBY3Rpb24gQnV0dG9ucyAqLwogICAgICAgIC5hY3Rpb24tYnV0dG9ucyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIDFmcik7CiAgICAgICAgICAgIGdhcDogMTVweDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjVweDsKICAgICAgICB9CgogICAgICAgIC5hY3Rpb24tYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTBweDsKICAgICAgICAgICAgcGFkZGluZzogMThweCAyMHB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5hY3Rpb24tYnRuIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICAgICAgcGFkZGluZzogMjJweCAyNXB4OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuYnRuLXByaW1hcnkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYXNlLWdyZWVuKSwgdmFyKC0tY2FzZS1ncmVlbi1kYXJrKSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMzBweCByZ2JhKDEwLCAxMTcsIDY1LCAwLjQpOwogICAgICAgIH0KCiAgICAgICAgLmJ0bi1wcmltYXJ5OmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00cHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEycHggNDBweCByZ2JhKDEwLCAxMTcsIDY1LCAwLjUpOwogICAgICAgIH0KCiAgICAgICAgLmJ0bi1zZWNvbmRhcnkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1jYXNlLXB1cnBsZSksIHZhcigtLWNhc2UtcHVycGxlLWxpZ2h0KSk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMzBweCByZ2JhKDc1LCAyOSwgMTI1LCAwLjQpOwogICAgICAgIH0KCiAgICAgICAgLmJ0bi1zZWNvbmRhcnk6aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTRweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTJweCA0MHB4IHJnYmEoNzUsIDI5LCAxMjUsIDAuNSk7CiAgICAgICAgfQoKICAgICAgICAvKiBFY29zeXN0ZW0gQ1RBICovCiAgICAgICAgLmVjb3N5c3RlbS1jdGEgewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiAyNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMTA3LCAwLCAwLjE1KSwgcmdiYSgxMCwgMTE3LCA2NSwgMC4xNSkpOwogICAgICAgICAgICBib3JkZXI6IDNweCBzb2xpZCB2YXIoLS1jYXNlLW9yYW5nZSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjBweDsKICAgICAgICB9CgogICAgICAgIC5lY29zeXN0ZW0tY3RhOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDEwNywgMCwgMC4yNSksIHJnYmEoMTAsIDExNywgNjUsIDAuMikpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTVweCA1MHB4IHJnYmEoMjU1LCAxMDcsIDAsIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAuZWNvc3lzdGVtLWN0YS10ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAuZWNvc3lzdGVtLWN0YS10ZXh0IHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuZWNvc3lzdGVtLWN0YS1zdWJ0ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICB9CgogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgewogICAgICAgICAgICAuZWNvc3lzdGVtLWN0YS1zdWJ0ZXh0IHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBTYXZlICYgU2hhcmUgKi8KICAgICAgICAuY2FyZC1hY3Rpb25zIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgMWZyKTsKICAgICAgICAgICAgZ2FwOiAxNXB4OwogICAgICAgIH0KCiAgICAgICAgLmNhcmQtYWN0aW9uLWJ0biB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDEwLCAxMTcsIDY1LCAwLjEpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4OwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIH0KCiAgICAgICAgLmNhcmQtYWN0aW9uLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAsIDExNywgNjUsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tY2FzZS1ncmVlbik7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICB9CgogICAgICAgIC5jYXJkLWFjdGlvbi1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjJyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmNhcmQtYWN0aW9uLWljb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5jYXJkLWFjdGlvbi10ZXh0IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogdmFyKC0td2FybS13aGl0ZSk7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmNhcmQtYWN0aW9uLXRleHQgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5xci1saW5rIHsKICAgICAgICAgICAgZ3JpZC1jb2x1bW46IHNwYW4gMjsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDI1NSwgMTA3LCAwLCAwLjE1KSwgcmdiYSgxMCwgMTE3LCA2NSwgMC4xKSk7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWNhc2Utb3JhbmdlKTsKICAgICAgICB9CgogICAgICAgIC5xci1saW5rOmhvdmVyIHsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jYXNlLW9yYW5nZS1saWdodCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAxMDcsIDAsIDAuMjUpLCByZ2JhKDEwLCAxMTcsIDY1LCAwLjE1KSk7CiAgICAgICAgfQoKICAgICAgICAucXItbGluayAuY2FyZC1hY3Rpb24taWNvbiB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgICAgIHdpZHRoOiA2MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDYwcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWNhc2Utb3JhbmdlKSwgdmFyKC0tY2FzZS1vcmFuZ2UtbGlnaHQpKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgfQoKICAgICAgICAucXItbGluay1jb250ZW50IHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICB9CgogICAgICAgIC5xci1saW5rLWNvbnRlbnQgLmNhcmQtYWN0aW9uLXN1YnRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgICAgIH0KCiAgICAgICAgLyogRm9vdGVyICovCiAgICAgICAgLmZvb3RlciB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogMzVweCAyNXB4IDI1cHg7CiAgICAgICAgfQoKICAgICAgICAubmV3cy1iYWRnZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAyNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMTA3LCAwLCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tY2FzZS1vcmFuZ2UpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAzMHB4OwogICAgICAgICAgICBjb2xvcjogdmFyKC0tY2FzZS1vcmFuZ2UtbGlnaHQpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5uZXdzLWJhZGdlOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDEwNywgMCwgMC4yNSk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMjVweCByZ2JhKDI1NSwgMTA3LCAwLCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5uZXdzLWJhZGdlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuZm9vdGVyLWNvbXBhbnkgewogICAgICAgICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS13YXJtLXdoaXRlKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSB7CiAgICAgICAgICAgIC5mb290ZXItY29tcGFueSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci10YWdsaW5lIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tY2FzZS1ncmVlbi1saWdodCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNjAwcHgpIHsKICAgICAgICAgICAgLmZvb3Rlci10YWdsaW5lIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuZm9vdGVyLXBvd2VyZWQgewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgICAgICB9CgogICAgICAgIC5mb290ZXItcG93ZXJlZCBhIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWNhc2UtZ3JlZW4tbGlnaHQpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgfQoKICAgICAgICAuZm9vdGVyLXBvd2VyZWQgYTpob3ZlciB7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1jb3B5cmlnaHQgewogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDsKICAgICAgICAgICAgb3BhY2l0eTogMC43OwogICAgICAgIH0KCiAgICAgICAgLyogQWNjZXNzaWJpbGl0eSAtIFJlZHVjZWQgTW90aW9uICovCiAgICAgICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAgICAgICAgICAgLm1lZGljYWwtY3Jvc3MsCiAgICAgICAgICAgIC5wcm9maWxlLXJpbmcsCiAgICAgICAgICAgIC5jcmVkZW50aWFsLWljb24sCiAgICAgICAgICAgIC5jb250YWN0LWljb24sCiAgICAgICAgICAgIC52aWRlby1wbGFjZWhvbGRlci1pY29uLAogICAgICAgICAgICAuc2VjdGlvbiwKICAgICAgICAgICAgLm5hbWUgewogICAgICAgICAgICAgICAgYW5pbWF0aW9uOiBub25lOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAuc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCiAgICA8IS0tIEZsb2F0aW5nIE1lZGljYWwgQ3Jvc3NlcyBCYWNrZ3JvdW5kIC0tPgogICAgPGRpdiBjbGFzcz0iZmxvYXRpbmctY3Jvc3NlcyI+CiAgICAgICAgPGRpdiBjbGFzcz0ibWVkaWNhbC1jcm9zcyBjcm9zcy0xIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpY2FsLWNyb3NzIGNyb3NzLTIgY3Jvc3MtcHVycGxlIj48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJtZWRpY2FsLWNyb3NzIGNyb3NzLTMiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGljYWwtY3Jvc3MgY3Jvc3MtNCBjcm9zcy1vcmFuZ2UiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGljYWwtY3Jvc3MgY3Jvc3MtNSBjcm9zcy1wdXJwbGUiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9Im1lZGljYWwtY3Jvc3MgY3Jvc3MtNiI+PC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPgogICAgICAgIAogICAgICAgIDwhLS0gSGVhZGVyIC0tPgogICAgICAgIDxoZWFkZXIgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2ZpbGUtY29udGFpbmVyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2ZpbGUtcmluZyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9maWxlLXBob3RvIj4KICAgICAgICAgICAgICAgICAgICA8IS0tIENhc2UgSG9zcGl0YWwgQ3Jvc3MgTG9nbyAtLT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9maWxlLWNhc2UtbG9nbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByb2ZpbGUtY3Jvc3MtdmVydGljYWwiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9maWxlLWNyb3NzLWhvcml6b250YWwiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwcm9maWxlLWNyb3NzLWNlbnRlciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8aDEgY2xhc3M9Im5hbWUiPkRyLiBBLksuIFNlYmJhYWxlPC9oMT4KICAgICAgICAgICAgPHAgY2xhc3M9ImNyZWRlbnRpYWxzIj5DRU8gJiBGT1VOREVSPC9wPgogICAgICAgICAgICA8cCBjbGFzcz0idGl0bGUiPkNvbnN1bHRhbnQgUGh5c2ljaWFuIOKAoiBQaW9uZWVyIExhcGFyb3Njb3BpYyBTdXJnZW9uPGJyPkdhc3Ryb2VudGVyb2xvZ2lzdCDigKIgU2VuaW9yIExlY3R1cmVyPC9wPgogICAgICAgICAgICA8cCBjbGFzcz0iY29tcGFueSI+Q2FzZSBNZWRpY2FsIFNlcnZpY2VzPC9wPgogICAgICAgICAgICA8cCBjbGFzcz0ibG9jYXRpb24iPvCfk40gS2FtcGFsYSwgVWdhbmRhPC9wPgogICAgICAgIDwvaGVhZGVyPgoKICAgICAgICA8IS0tIFZpZGVvIFNlY3Rpb24gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNlY3Rpb24iIHN0eWxlPSJhbmltYXRpb24tZGVsYXk6IDAuMXM7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGgzPvCfjqwgTWVldCBEci4gU2ViYmFhbGU8L2gzPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1saW5lIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InZpZGVvLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICA8aWZyYW1lIAogICAgICAgICAgICAgICAgICAgIHNyYz0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvRHNqOUtpRHBROWciIAogICAgICAgICAgICAgICAgICAgIHRpdGxlPSJDYXNlIE1lZGljYWwgU2VydmljZXMgLSBEci4gQS5LLiBTZWJiYWFsZSIKICAgICAgICAgICAgICAgICAgICBhbGxvdz0iYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZSIgCiAgICAgICAgICAgICAgICAgICAgYWxsb3dmdWxsc2NyZWVuPgogICAgICAgICAgICAgICAgPC9pZnJhbWU+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBNZWRpY2FsIENyZWRlbnRpYWxzIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzZWN0aW9uIiBzdHlsZT0iYW5pbWF0aW9uLWRlbGF5OiAwLjJzOyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMz7wn6m6IE1lZGljYWwgRXhwZXJ0aXNlPC9oMz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tbGluZSI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmVkZW50aWFscy1ncmlkIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyZWRlbnRpYWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC1pY29uIj7wn4+lPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC10aXRsZSI+Q29uc3VsdGFudCBQaHlzaWNpYW48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmVkZW50aWFsLXN1YnRpdGxlIj4zMCsgWWVhcnMgRXhwZXJpZW5jZTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmVkZW50aWFsLWl0ZW0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyZWRlbnRpYWwtaWNvbiI+8J+UrDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyZWRlbnRpYWwtdGl0bGUiPkxhcGFyb3Njb3BpYyBTdXJnZW9uPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC1zdWJ0aXRsZSI+UGlvbmVlciBpbiBVZ2FuZGE8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC1pdGVtIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmVkZW50aWFsLWljb24iPvCfq4A8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmVkZW50aWFsLXRpdGxlIj5HYXN0cm9lbnRlcm9sb2dpc3Q8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmVkZW50aWFsLXN1YnRpdGxlIj5HSSBTcGVjaWFsaXN0PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNyZWRlbnRpYWwtaXRlbSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC1pY29uIj7wn46TPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC10aXRsZSI+U2VuaW9yIExlY3R1cmVyPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlZGVudGlhbC1zdWJ0aXRsZSI+TWFrZXJlcmUgVW5pdmVyc2l0eTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBGZWxsb3dzaGlwcyAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0ic2VjdGlvbiIgc3R5bGU9ImFuaW1hdGlvbi1kZWxheTogMC4zczsiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDM+8J+PhiBQcmVzdGlnaW91cyBGZWxsb3dzaGlwczwvaDM+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLWxpbmUiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVsbG93c2hpcHMtbGlzdCI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVsbG93c2hpcC1iYWRnZSI+8J+Olu+4jyBDT1NFQ1NBIEZlbGxvdzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWxsb3dzaGlwLWJhZGdlIj7wn46W77iPIElDUyBGZWxsb3c8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmVsbG93c2hpcC1iYWRnZSI+8J+Olu+4jyBXQUxTIEZlbGxvdzwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJmZWxsb3dzaGlwLWJhZGdlIj7wn46W77iPIEFzcGVuIEdsb2JhbCBOZXR3b3JrPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gQ29udGFjdCBTZWN0aW9uIC0tPgogICAgICAgIDxzZWN0aW9uIGNsYXNzPSJzZWN0aW9uIiBzdHlsZT0iYW5pbWF0aW9uLWRlbGF5OiAwLjRzOyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24taGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMz7wn5OxIENvbm5lY3Q8L2gzPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1saW5lIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8YSBocmVmPSJ0ZWw6MDgwMDIxMTAwNSIgY2xhc3M9ImNvbnRhY3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWljb24iPvCfk548L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtZGV0YWlscyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1sYWJlbCI+VG9sbCBGcmVlPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC12YWx1ZSI+MDgwMCAyMTEgMDA1PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb250YWN0LWFycm93Ij7ihpI8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd2EubWUvMjU2NzY0MjA5ODg5IiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImNvbnRhY3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWljb24iPvCfkqw8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtZGV0YWlscyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1sYWJlbCI+V2hhdHNBcHA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LXZhbHVlIj4rMjU2IDc2NCAyMDkgODg5PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb250YWN0LWFycm93Ij7ihpI8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxhIGhyZWY9Im1haWx0bzpkcmFrc2ViYmFhbGVAY2FzZW1lZHNlcnZpY2VzLm9yZyIgY2xhc3M9ImNvbnRhY3QtaXRlbSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWljb24iPuKcie+4jzwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1kZXRhaWxzIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWxhYmVsIj5FbWFpbDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtdmFsdWUiPmRyYWtzZWJiYWFsZUBjYXNlbWVkc2VydmljZXMub3JnPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb250YWN0LWFycm93Ij7ihpI8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vY2FzZW1lZHNlcnZpY2VzLm9yZyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJjb250YWN0LWl0ZW0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1pY29uIj7wn4yQPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LWRldGFpbHMiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtbGFiZWwiPldlYnNpdGU8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LXZhbHVlIj5jYXNlbWVkc2VydmljZXMub3JnPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjb250YWN0LWFycm93Ij7ihpI8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFjdGlvbi1idXR0b25zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9InRlbDowODAwMjExMDA1IiBjbGFzcz0iYWN0aW9uLWJ0biBidG4tcHJpbWFyeSI+CiAgICAgICAgICAgICAgICAgICAg8J+TniBDYWxsIE5vdwogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93YS5tZS8yNTY3NjQyMDk4ODkiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYWN0aW9uLWJ0biBidG4tc2Vjb25kYXJ5Ij4KICAgICAgICAgICAgICAgICAgICDwn5KsIFdoYXRzQXBwCiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPCEtLSBFY29zeXN0ZW0gQ1RBIC0tPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2Nhc2VjbGluaWMub3JnL2ZvdW5kZXItZWNvc3lzdGVtIiBjbGFzcz0iZWNvc3lzdGVtLWN0YSI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWNvc3lzdGVtLWN0YS10ZXh0Ij7wn4+lIFZpZXcgQ2FzZSBNZWRpY2FsIEVjb3N5c3RlbSDihpI8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZWNvc3lzdGVtLWN0YS1zdWJ0ZXh0Ij5Ib3NwaXRhbCDigKIgSW5zdXJhbmNlIOKAoiBQaGFybWFjeSDigKIgRGlhZ25vc3RpY3Mg4oCiIE1vcmU8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gU2F2ZSAmIFNoYXJlIFNlY3Rpb24gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InNlY3Rpb24iIHN0eWxlPSJhbmltYXRpb24tZGVsYXk6IDAuNXM7Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi1oZWFkZXIiPgogICAgICAgICAgICAgICAgPGgzPvCfk7IgU2F2ZSAmIFNoYXJlPC9oMz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tbGluZSI+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImNhcmQtYWN0aW9uLWJ0biIgb25jbGljaz0iYWxlcnQoJ0Rvd25sb2FkIGNvbnRhY3QgZmVhdHVyZSBjb21pbmcgc29vbiEnKSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb24taWNvbiI+4qyH77iPPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtYWN0aW9uLXRleHQiPkRvd25sb2FkIENhcmQ8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iY2FyZC1hY3Rpb24tYnRuIiBvbmNsaWNrPSJuYXZpZ2F0b3Iuc2hhcmUgPyBuYXZpZ2F0b3Iuc2hhcmUoe3RpdGxlOiAnRHIuIEEuSy4gU2ViYmFhbGUgfCBDYXNlIE1lZGljYWwgU2VydmljZXMnLCB0ZXh0OiAnQ29ubmVjdCB3aXRoIFVnYW5kYVwncyBIZWFsdGhjYXJlIFBpb25lZXInLCB1cmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmfSkgOiBhbGVydCgnU2hhcmUgdGhpcyBsaW5rOiAnICsgd2luZG93LmxvY2F0aW9uLmhyZWYpIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbi1pY29uIj7wn5OkPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNhcmQtYWN0aW9uLXRleHQiPlNoYXJlIENhcmQ8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3EtMC5jby9kcnNlYmJhYWxla2F0byIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJjYXJkLWFjdGlvbi1idG4gcXItbGluayI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb24taWNvbiI+8J+TsTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InFyLWxpbmstY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLWFjdGlvbi10ZXh0Ij5UYXAgZm9yIFFSIENvZGU8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjYXJkLWFjdGlvbi1zdWJ0ZXh0Ij5TY2FuIHRvIHNhdmUgY29udGFjdCBpbnN0YW50bHk8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBGb290ZXIgLS0+CiAgICAgICAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9jYXNlY2xpbmljLm5ld3MiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0ibmV3cy1iYWRnZSI+8J+TsCBjYXNlY2xpbmljLm5ld3M8L2E+CiAgICAgICAgICAgIAogICAgICAgICAgICA8cCBjbGFzcz0iZm9vdGVyLWNvbXBhbnkiPkNhc2UgTWVkaWNhbCBTZXJ2aWNlczwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci10YWdsaW5lIj5GbHVlbnQgaW4gSGVhbHRoY2FyZSBmb3IgMzAgWWVhcnMgJiBDb3VudGluZzwvcD4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxwIGNsYXNzPSJmb290ZXItcG93ZXJlZCI+CiAgICAgICAgICAgICAgICBQb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vaGFuZHNoYWtlLmFmcmljYSIgdGFyZ2V0PSJfYmxhbmsiPkJyYW5kIEhhbmRzaGFrZSBBZnJpY2E8L2E+CiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPHAgY2xhc3M9ImZvb3Rlci1jb3B5cmlnaHQiPgogICAgICAgICAgICAgICAgwqkgMjAyNiBEci4gQS5LLiBTZWJiYWFsZSDigKIgQ2FzZSBIb3NwaXRhbCBVZ2FuZGEKICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZm9vdGVyPgogICAgICAgIAogICAgPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4=","embed":""}
Dr. A.K. Sebbaale
CEO & FOUNDER
Consultant Physician • Pioneer Laparoscopic Surgeon
Gastroenterologist • Senior Lecturer
Case Medical Services
📍 Kampala, Uganda
🎬 Meet Dr. Sebbaale
🩺 Medical Expertise
🏥
Consultant Physician
30+ Years Experience
🔬
Laparoscopic Surgeon
Pioneer in Uganda
🫀
Gastroenterologist
GI Specialist
🎓
Senior Lecturer
Makerere University
🏆 Prestigious Fellowships
🎖️ COSECSA Fellow
🎖️ ICS Fellow
🎖️ WALS Fellow
🎖️ Aspen Global Network
📱 Connect
📞
Toll Free
0800 211 005
💬
WhatsApp
+256 764 209 889
✉️
Email
draksebbaale@casemedservices.org
🌐
Website
casemedservices.org