{"js":"PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICA8dGl0bGU+R2FsbGVyeSAtIFNlZSBIYW5kc2hha2UgQ2FyZHMgaW4gQWN0aW9uIHwgSGFuZHNoYWtlLmFmcmljYTwvdGl0bGU+CiAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkJyb3dzZSByZWFsIGRpZ2l0YWwgYnVzaW5lc3MgY2FyZHMgZnJvbSBBZnJpY2FuIGVudHJlcHJlbmV1cnMuIEdldCBpbnNwaXJlZCBieSBwcm9mZXNzaW9uYWxzIHdobyBzdGFuZCBvdXQgd2l0aCBoYW5kc2hha2UuYWZyaWNhIGNhcmRzLiI+CiAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LCBub2ZvbGxvdyI+CiAgCiAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjp3Z2h0QDMwMDs0MDA7NjAwOzcwMDs4MDAmZmFtaWx5PVBsYXlmYWlyK0Rpc3BsYXk6d2dodEA3MDA7OTAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KICAKICA8c3R5bGU+CiAgICAvKiBJTkhFUklUIEJBU0UgU1RZTEVTIEZST00gSE9NRVBBR0UgKi8KICAgIDpyb290IHsKICAgICAgLS1uYXZ5OiAjMDAxRjNGOwogICAgICAtLXJveWFsLWJsdWU6ICMwMDQ3QUI7CiAgICAgIC0tZ29sZDogI0ZGRDcwMDsKICAgICAgLS1nb2xkLXdhcm06ICNGRkMxMDc7CiAgICAgIC0td2hpdGU6ICNGRkZGRkY7CiAgICAgIC0tbGlnaHQtYmc6ICNGN0Y5RkM7CiAgICAgIC0tZ3JheTogIzZCNzI4MDsKICAgICAgLS10ZWFsOiAjMDBDOUE3OwogICAgICAtLW9yYW5nZTogI0ZGNkIzNTsKICAgICAgLS1wdXJwbGU6ICM3QjY4RUU7CiAgICB9CiAgICAKICAgICogewogICAgICBtYXJnaW46IDA7CiAgICAgIHBhZGRpbmc6IDA7CiAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CiAgICAKICAgIGJvZHkgewogICAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjsKICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWxpZ2h0LWJnKTsKICAgIH0KICAgIAogICAgaDEsIGgyLCBoMyB7CiAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgICBmb250LXdlaWdodDogOTAwOwogICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgfQogICAgCiAgICAvKiBOQVZJR0FUSU9OIC0gU0FNRSBBUyBIT01FUEFHRSAqLwogICAgLm5hdiB7CiAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgdG9wOiAwOwogICAgICB3aWR0aDogMTAwJTsKICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAzMSwgNjMsIDAuOTUpOwogICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgIHBhZGRpbmc6IDFyZW0gMnJlbTsKICAgICAgYm94LXNoYWRvdzogMCAycHggMjBweCByZ2JhKDAsMCwwLDAuMSk7CiAgICB9CiAgICAKICAgIC5uYXYtY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB9CiAgICAKICAgIC5sb2dvIHsKICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgIH0KICAgIAogICAgLm5hdi1saW5rcyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGdhcDogMnJlbTsKICAgICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIH0KICAgIAogICAgLm5hdi1saW5rcyBhIHsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3M7CiAgICB9CiAgICAKICAgIC5uYXYtbGlua3MgYTpob3ZlciwKICAgIC5uYXYtbGlua3MgYS5hY3RpdmUgewogICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICB9CiAgICAKICAgIC5tb2JpbGUtbWVudSB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KICAgIAogICAgLyogSEVSTyAtIEdBTExFUlkgVkVSU0lPTiAqLwogICAgLmhlcm8gewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1uYXZ5KSAwJSwgdmFyKC0tcm95YWwtYmx1ZSkgMTAwJSk7CiAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7CiAgICAgIHBhZGRpbmc6IDE0MHB4IDJyZW0gNjBweDsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogICAgCiAgICAuaGVybzo6YmVmb3JlIHsKICAgICAgY29udGVudDogJyc7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAtNTAlOwogICAgICBsZWZ0OiAtNTAlOwogICAgICB3aWR0aDogMjAwJTsKICAgICAgaGVpZ2h0OiAyMDAlOwogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHRyYW5zcGFyZW50IDMwJSwgcmdiYSgyNTUsIDIxNSwgMCwgMC4wNSkgNTAlLCB0cmFuc3BhcmVudCA3MCUpOwogICAgICBhbmltYXRpb246IHJvdGF0ZSAyMHMgbGluZWFyIGluZmluaXRlOwogICAgfQogICAgCiAgICBAa2V5ZnJhbWVzIHJvdGF0ZSB7CiAgICAgIDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAgICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgIH0KICAgIAogICAgLmhlcm8tY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIHotaW5kZXg6IDI7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KICAgIAogICAgLmhlcm8gaDEgewogICAgICBmb250LXNpemU6IGNsYW1wKDIuNXJlbSwgNnZ3LCA0cmVtKTsKICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgIH0KICAgIAogICAgLmhlcm8tc3VidGl0bGUgewogICAgICBmb250LXNpemU6IGNsYW1wKDEuMXJlbSwgMi41dncsIDEuNHJlbSk7CiAgICAgIG9wYWNpdHk6IDAuOTU7CiAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQogICAgCiAgICAvKiBOQVZJR0FUSU9OIEFSUk9XUyAqLwogICAgLnBhZ2UtbmF2IHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgbWFyZ2luOiAycmVtIGF1dG87CiAgICAgIHBhZGRpbmc6IDAgMnJlbTsKICAgIH0KICAgIAogICAgLm5hdi1hcnJvdyB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBnYXA6IDAuNXJlbTsKICAgICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07CiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyMTUsIDAsIDAuMSk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgICB9CiAgICAKICAgIC5uYXYtYXJyb3c6aG92ZXIgewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkKTsKICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICB9CiAgICAKICAgIC8qIEZJTFRFUiBTRUNUSU9OICovCiAgICAuZmlsdGVyLXNlY3Rpb24gewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7CiAgICAgIHBhZGRpbmc6IDJyZW07CiAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgIGJveC1zaGFkb3c6IDAgMTBweCA0MHB4IHJnYmEoMCwwLDAsMC4wOCk7CiAgICAgIG1hcmdpbjogM3JlbSBhdXRvOwogICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgbWFyZ2luLWxlZnQ6IDJyZW07CiAgICAgIG1hcmdpbi1yaWdodDogMnJlbTsKICAgICAgcG9zaXRpb246IHN0aWNreTsKICAgICAgdG9wOiA4MHB4OwogICAgICB6LWluZGV4OiAxMDA7CiAgICB9CiAgICAKICAgIC5maWx0ZXItbGFiZWwgewogICAgICBmb250LXdlaWdodDogNzAwOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgfQogICAgCiAgICAuZmlsdGVyLXRhYnMgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDFyZW07CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIH0KICAgIAogICAgLmZpbHRlci1idG4gewogICAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbGlnaHQtYmcpOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICB9CiAgICAKICAgIC5maWx0ZXItYnRuOmhvdmVyIHsKICAgICAgYmFja2dyb3VuZDogdmFyKC0td2hpdGUpOwogICAgICBib3JkZXItY29sb3I6IHZhcigtLWdvbGQpOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICB9CiAgICAKICAgIC5maWx0ZXItYnRuLmFjdGl2ZSB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpIDAlLCB2YXIoLS1nb2xkLXdhcm0pIDEwMCUpOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICB9CiAgICAKICAgIC8qIEdBTExFUlkgR1JJRCAqLwogICAgLmdhbGxlcnktY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICAgIG1hcmdpbjogNHJlbSBhdXRvOwogICAgICBwYWRkaW5nOiAwIDJyZW07CiAgICB9CiAgICAKICAgIC5nYWxsZXJ5LWdyaWQgewogICAgICBkaXNwbGF5OiBncmlkOwogICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgzNTBweCwgMWZyKSk7CiAgICAgIGdhcDogMi41cmVtOwogICAgfQogICAgCiAgICAuY2FyZC1zaG93Y2FzZSB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgwLDAsMCwwLjA4KTsKICAgICAgdHJhbnNpdGlvbjogYWxsIDAuNHMgY3ViaWMtYmV6aWVyKDAuMTc1LCAwLjg4NSwgMC4zMiwgMS4yNzUpOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB9CiAgICAKICAgIC5jYXJkLXNob3djYXNlOmhvdmVyIHsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNXB4KSByb3RhdGUoMmRlZyk7CiAgICAgIGJveC1zaGFkb3c6IDAgMjVweCA2MHB4IHJnYmEoMCwwLDAsMC4xNSk7CiAgICB9CiAgICAKICAgIC8qIENhcmQgSW1hZ2UgQ29udGFpbmVyIC0gUGhvbmUgTW9ja3VwICovCiAgICAuY2FyZC1pbWFnZSB7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbGlnaHQtYmcpIDAlLCAjRTVFN0VCIDEwMCUpOwogICAgICBwYWRkaW5nOiAycmVtOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgbWluLWhlaWdodDogNDAwcHg7CiAgICB9CiAgICAKICAgIC5waG9uZS1tb2NrdXAgewogICAgICB3aWR0aDogMjgwcHg7CiAgICAgIGhlaWdodDogNTYwcHg7CiAgICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7CiAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7CiAgICAgIHBhZGRpbmc6IDEycHg7CiAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA2MHB4IHJnYmEoMCwwLDAsMC4zKTsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogICAgCiAgICAucGhvbmUtbW9ja3VwOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDEycHg7CiAgICAgIGxlZnQ6IDUwJTsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICB3aWR0aDogMTIwcHg7CiAgICAgIGhlaWdodDogMjVweDsKICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDIwcHggMjBweDsKICAgICAgei1pbmRleDogMTA7CiAgICB9CiAgICAKICAgIC5waG9uZS1zY3JlZW4gewogICAgICB3aWR0aDogMTAwJTsKICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDMwcHg7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KICAgIAogICAgLnBob25lLXNjcmVlbiBpZnJhbWUsCiAgICAucGhvbmUtc2NyZWVuIGltZyB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIG9iamVjdC1maXQ6IGNvdmVyOwogICAgICBib3JkZXI6IG5vbmU7CiAgICB9CiAgICAKICAgIC8qIFRpZXIgQmFkZ2UgKi8KICAgIC50aWVyLWJhZGdlIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDEuNXJlbTsKICAgICAgcmlnaHQ6IDEuNXJlbTsKICAgICAgcGFkZGluZzogMC41cmVtIDEuMjVyZW07CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgICAgei1pbmRleDogMjA7CiAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLDAsMCwwLjIpOwogICAgfQogICAgCiAgICAudGllci1lc3NlbnRpYWwgewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNEE5MEUyIDAlLCAjMzU3QUJEIDEwMCUpOwogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgfQogICAgCiAgICAudGllci1wcm9mZXNzaW9uYWwgewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS10ZWFsKSAwJSwgIzAwQjg5NCAxMDAlKTsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgIH0KICAgIAogICAgLnRpZXItcHJlbWl1bSB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXB1cnBsZSkgMCUsICM2QzVDRTcgMTAwJSk7CiAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7CiAgICB9CiAgICAKICAgIC50aWVyLWZvdW5kZXIgewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSAwJSwgdmFyKC0tZ29sZC13YXJtKSAxMDAlKTsKICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgfQogICAgCiAgICAvKiBDYXJkIERldGFpbHMgKi8KICAgIC5jYXJkLWRldGFpbHMgewogICAgICBwYWRkaW5nOiAycmVtOwogICAgfQogICAgCiAgICAuY2FyZC1kZXRhaWxzIGgzIHsKICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgfQogICAgCiAgICAuY2FyZC1zdWJ0aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgY29sb3I6IHZhcigtLWdyYXkpOwogICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgfQogICAgCiAgICAuaW5kdXN0cnktdGFnIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBwYWRkaW5nOiAwLjRyZW0gMXJlbTsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbGlnaHQtYmcpOwogICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgfQogICAgCiAgICAuZmVhdHVyZXMtbGlzdCB7CiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgIH0KICAgIAogICAgLmZlYXR1cmVzLWxpc3QgbGkgewogICAgICBwYWRkaW5nOiAwLjVyZW0gMDsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgZ2FwOiAwLjc1cmVtOwogICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgIGNvbG9yOiB2YXIoLS1ncmF5KTsKICAgIH0KICAgIAogICAgLmZlYXR1cmVzLWxpc3QgbGk6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICfinKgnOwogICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgIH0KICAgIAogICAgLyogQ2FyZCBBY3Rpb25zICovCiAgICAuY2FyZC1hY3Rpb25zIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAxcmVtOwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICB9CiAgICAKICAgIC5idG4gewogICAgICBmbGV4OiAxOwogICAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgICBwYWRkaW5nOiAwLjlyZW0gMS41cmVtOwogICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICBmb250LXdlaWdodDogNzAwOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgICAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIH0KICAgIAogICAgLmJ0bi12aWV3IHsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tbmF2eSkgMCUsIHZhcigtLXJveWFsLWJsdWUpIDEwMCUpOwogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgfQogICAgCiAgICAuYnRuLXZpZXc6aG92ZXIgewogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDIwcHggcmdiYSgwLDMxLDYzLDAuMyk7CiAgICB9CiAgICAKICAgIC5idG4tZ2V0IHsKICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWdvbGQpOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICB9CiAgICAKICAgIC5idG4tZ2V0OmhvdmVyIHsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgIH0KICAgIAogICAgLyogRkVBVFVSRUQgU0VDVElPTiAqLwogICAgLmZlYXR1cmVkLXNlY3Rpb24gewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1nb2xkKSAwJSwgdmFyKC0tZ29sZC13YXJtKSAxMDAlKTsKICAgICAgcGFkZGluZzogODBweCAycmVtOwogICAgICBtYXJnaW46IDZyZW0gMDsKICAgIH0KICAgIAogICAgLmZlYXR1cmVkLWNvbnRhaW5lciB7CiAgICAgIG1heC13aWR0aDogMTQwMHB4OwogICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KICAgIAogICAgLmZlYXR1cmVkLXNlY3Rpb24gaDIgewogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgICAgZm9udC1zaXplOiBjbGFtcCgycmVtLCA1dncsIDNyZW0pOwogICAgfQogICAgCiAgICAuZmVhdHVyZWQtZ3JpZCB7CiAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMzAwcHgsIDFmcikpOwogICAgICBnYXA6IDNyZW07CiAgICB9CiAgICAKICAgIC8qIENUQSBTRUNUSU9OICovCiAgICAuY3RhLXNlY3Rpb24gewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5KTsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgcGFkZGluZzogODBweCAycmVtOwogICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB9CiAgICAKICAgIC5jdGEtY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiA4MDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAKICAgIC5jdGEtc2VjdGlvbiBoMiB7CiAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7CiAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgIH0KICAgIAogICAgLmN0YS1zZWN0aW9uIHAgewogICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgb3BhY2l0eTogMC45OwogICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgfQogICAgCiAgICAuYnRuLWN0YSB7CiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgcGFkZGluZzogMS4ycmVtIDNyZW07CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgfQogICAgCiAgICAuYnRuLWN0YTpob3ZlciB7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgYm94LXNoYWRvdzogMCAxNXB4IDQwcHggcmdiYSgyNTUsMjE1LDAsMC40KTsKICAgIH0KICAgIAogICAgLyogRk9PVEVSIC0gU0FNRSBBUyBIT01FUEFHRSAqLwogICAgLmZvb3RlciB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5hdnkpOwogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICBwYWRkaW5nOiA2MHB4IDJyZW0gMjBweDsKICAgIH0KICAgIAogICAgLmZvb3Rlci1jb250YWluZXIgewogICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAKICAgIC5mb290ZXItZ3JpZCB7CiAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjAwcHgsIDFmcikpOwogICAgICBnYXA6IDNyZW07CiAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICB9CiAgICAKICAgIC5mb290ZXItY29sdW1uIGg0IHsKICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgfQogICAgCiAgICAuZm9vdGVyLWNvbHVtbiB1bCB7CiAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7CiAgICB9CiAgICAKICAgIC5mb290ZXItY29sdW1uIHVsIGxpIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsKICAgIH0KICAgIAogICAgLmZvb3Rlci1jb2x1bW4gYSB7CiAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgb3BhY2l0eTogMC45OwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgIH0KICAgIAogICAgLmZvb3Rlci1jb2x1bW4gYTpob3ZlciB7CiAgICAgIG9wYWNpdHk6IDE7CiAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgIH0KICAgIAogICAgLmZvb3Rlci1ib3R0b20gewogICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsMjE1LDAsMC4zKTsKICAgICAgcGFkZGluZy10b3A6IDJyZW07CiAgICAgIG1hcmdpbi10b3A6IDJyZW07CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICBnYXA6IDFyZW07CiAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICBvcGFjaXR5OiAwLjg7CiAgICB9CiAgICAKICAgIC5mb290ZXItYm90dG9tIGEgewogICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgIH0KICAgIAogICAgLyogUkVTUE9OU0lWRSAqLwogICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgIC5uYXYtbGlua3MgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDEwMCU7CiAgICAgICAgbGVmdDogMDsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1uYXZ5KTsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHBhZGRpbmc6IDJyZW07CiAgICAgICAgZ2FwOiAxcmVtOwogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgICAgfQogICAgICAKICAgICAgLm5hdi1saW5rcy5hY3RpdmUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7CiAgICAgIH0KICAgICAgCiAgICAgIC5tb2JpbGUtbWVudSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgIH0KICAgICAgCiAgICAgIC5nYWxsZXJ5LWdyaWQgewogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICB9CiAgICAgIAogICAgICAuZmlsdGVyLXRhYnMgewogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgIH0KICAgICAgCiAgICAgIC5maWx0ZXItYnRuIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgIH0KICAgICAgCiAgICAgIC5wYWdlLW5hdiB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBnYXA6IDFyZW07CiAgICAgIH0KICAgICAgCiAgICAgIC5uYXYtYXJyb3cgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICB9CiAgICB9CiAgICAKICAgIC8qIEFOSU1BVElPTlMgKi8KICAgIC5mYWRlLWluIHsKICAgICAgb3BhY2l0eTogMDsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDMwcHgpOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC42cyBlYXNlLW91dDsKICAgIH0KICAgIAogICAgLmZhZGUtaW4udmlzaWJsZSB7CiAgICAgIG9wYWNpdHk6IDE7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgIH0KICAgIAogICAgQGtleWZyYW1lcyBmbG9hdCB7CiAgICAgIDAlLCAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9CiAgICAgIDUwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7IH0KICAgIH0KICAgIAogICAgLmNhcmQtc2hvd2Nhc2U6aG92ZXIgLnBob25lLW1vY2t1cCB7CiAgICAgIGFuaW1hdGlvbjogZmxvYXQgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICB9CiAgPC9zdHlsZT4KPC9oZWFkPgo8Ym9keT4KCiAgPCEtLSBOQVZJR0FUSU9OIC0tPgogIDxuYXYgY2xhc3M9Im5hdiI+CiAgICA8ZGl2IGNsYXNzPSJuYXYtY29udGFpbmVyIj4KICAgICAgPGEgaHJlZj0iLyIgY2xhc3M9ImxvZ28iPkhhbmRzaGFrZS5hZnJpY2E8L2E+CiAgICAgIDxidXR0b24gY2xhc3M9Im1vYmlsZS1tZW51IiBvbmNsaWNrPSJ0b2dnbGVNZW51KCkiPuKYsDwvYnV0dG9uPgogICAgICA8dWwgY2xhc3M9Im5hdi1saW5rcyIgaWQ9Im5hdkxpbmtzIj4KICAgICAgICA8bGk+PGEgaHJlZj0iL2dhbGxlcnkiIGNsYXNzPSJhY3RpdmUiPkdhbGxlcnk8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iL3ByaWNpbmciPlByaWNpbmc8L2E+PC9saT4KICAgICAgICA8bGk+PGEgaHJlZj0iL2Fib3V0Ij5BYm91dDwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvY29udGFjdCI+Q29udGFjdDwvYT48L2xpPgogICAgICA8L3VsPgogICAgPC9kaXY+CiAgPC9uYXY+CgogIDwhLS0gSEVSTyAtLT4KICA8c2VjdGlvbiBjbGFzcz0iaGVybyI+CiAgICA8ZGl2IGNsYXNzPSJoZXJvLWNvbnRhaW5lciI+CiAgICAgIDxoMT5PdXIgRm91bmRpbmcgTWVtYmVycyBHYWxsZXJ5PC9oMT4KICAgICAgPHAgY2xhc3M9Imhlcm8tc3VidGl0bGUiPgogICAgICAgIE1lZXQgdGhlIHBpb25lZXJpbmcgZW50cmVwcmVuZXVycyBidWlsZGluZyBBZnJpY2EncyBkaWdpdGFsIGZ1dHVyZS4gUmVhbCBwcm9mZXNzaW9uYWxzLiBSZWFsIGltcGFjdC4KICAgICAgPC9wPgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8IS0tIFBBR0UgTkFWSUdBVElPTiBBUlJPV1MgLS0+CiAgPGRpdiBjbGFzcz0icGFnZS1uYXYiPgogICAgPGEgaHJlZj0iLyIgY2xhc3M9Im5hdi1hcnJvdyI+4oaQIEJhY2sgdG8gSG9tZTwvYT4KICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0ibmF2LWFycm93Ij5HZXQgWW91ciBDYXJkIOKGkjwvYT4KICA8L2Rpdj4KCiAgPCEtLSBGSUxURVIgU0VDVElPTiAtLT4KICA8ZGl2IGNsYXNzPSJmaWx0ZXItc2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJmaWx0ZXItbGFiZWwiPkZpbHRlciBieSBJbmR1c3RyeTo8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImZpbHRlci10YWJzIj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biBhY3RpdmUiIG9uY2xpY2s9ImZpbHRlckNhcmRzKCdhbGwnKSI+QWxsIE1lbWJlcnM8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biIgb25jbGljaz0iZmlsdGVyQ2FyZHMoJ21lZGlhJykiPk1lZGlhICYgUHVibGlzaGluZzwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIiBvbmNsaWNrPSJmaWx0ZXJDYXJkcygnYnVzaW5lc3MnKSI+QnVzaW5lc3MgU2VydmljZXM8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biIgb25jbGljaz0iZmlsdGVyQ2FyZHMoJ3RlY2gnKSI+VGVjaCAmIElubm92YXRpb248L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biIgb25jbGljaz0iZmlsdGVyQ2FyZHMoJ2hlYWx0aCcpIj5IZWFsdGhjYXJlPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iIG9uY2xpY2s9ImZpbHRlckNhcmRzKCdjcmVhdGl2ZScpIj5DcmVhdGl2ZSBJbmR1c3RyaWVzPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iIG9uY2xpY2s9ImZpbHRlckNhcmRzKCdhZ3JpY3VsdHVyZScpIj5BZ3JpY3VsdHVyZTwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIiBvbmNsaWNrPSJmaWx0ZXJDYXJkcygnZWR1Y2F0aW9uJykiPkVkdWNhdGlvbjwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIiBvbmNsaWNrPSJmaWx0ZXJDYXJkcygnZmluYW5jZScpIj5GaW5hbmNlICYgRmludGVjaDwvYnV0dG9uPgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwhLS0gR0FMTEVSWSBHUklEIC0tPgogIDxkaXYgY2xhc3M9ImdhbGxlcnktY29udGFpbmVyIj4KICAgIDxkaXYgY2xhc3M9ImdhbGxlcnktZ3JpZCI+CiAgICAgIAogICAgICA8IS0tIENBUkQgMSAtIE5JR0hUSU5HQUxFIE1VS0FTQSAoRk9VTkRFUikgLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0ibWVkaWEgYnVzaW5lc3MiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1mb3VuZGVyIj7wn4yfIEZvdW5kZXI8L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1tb2NrdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1zY3JlZW4iPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vMjU2eDUxMi8wZjc2NmUvRkZGRkZGP3RleHQ9TmlnaHRpbmdhbGUrTXVrYXNhK0ZvdW5kZXIrQ2FyZCIgYWx0PSJOaWdodGluZ2FsZSBNdWthc2EgLSBGb3VuZGVyIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWRldGFpbHMiPgogICAgICAgICAgPGgzPk5pZ2h0aW5nYWxlIE11a2FzYTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+Rm91bmRlciAmIFZpc2lvbmFyeSB8IENNTyAmIEJyYW5kIFN0cmF0ZWdpc3Q8L3A+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5kdXN0cnktdGFnIj7wn5OwIE1lZGlhICYgRGlnaXRhbCBMZWFkZXJzaGlwPC9zcGFuPgogICAgICAgICAgPHVsIGNsYXNzPSJmZWF0dXJlcy1saXN0Ij4KICAgICAgICAgICAgPGxpPkFtcGxpZnlpbmcgQWZyaWNhbiB3b21lbidzIHZvaWNlcyB0aHJvdWdoIGRpZ2l0YWwgc292ZXJlaWdudHk8L2xpPgogICAgICAgICAgICA8bGk+RnVsbC1zcGVjdHJ1bSBicmFuZCAmIG1lZGlhIHN0cmF0ZWd5PC9saT4KICAgICAgICAgICAgPGxpPkJ1aWxkaW5nIHRoZSBmdXR1cmUgb2YgQWZyaWNhbiBlbnRyZXByZW5ldXJzaGlwPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2FmcmljYWZyb250bGluZW5leHVzLm5ld3MvZm91bmRlciIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJidG4gYnRuLXZpZXciPlZpZXcgQ2FyZDwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9tZW50b3JzaGlwc3VjY2Vzcy5jb20vZm91bmRlci12aXJ0dWFsLWNhcmQiIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnRuIGJ0bi1nZXQiPkFsdCBDYXJkPC9hPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBDQVJEIDIgLSBCQVJCQVJBIE5BTlRPTkdPIC0tPgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLXNob3djYXNlIGZhZGUtaW4iIGRhdGEtY2F0ZWdvcnk9ImJ1c2luZXNzIHRlY2giPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1wcm9mZXNzaW9uYWwiPlByb2Zlc3Npb25hbDwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyLzBmNzY2ZS9GRkZGRkY/dGV4dD1CYXJiYXJhK05hbnRvbmdvIiBhbHQ9IkJhcmJhcmEgTmFudG9uZ28iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+QmFyYmFyYSBOYW50b25nbzwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+Rm91bmRlciB8IFNtYXJ0IEtpdGNoZW4gU29sdXRpb25zPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+NsyBLaXRjaGVuIElubm92YXRpb24gJiBCdXNpbmVzczwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5Db2hvcnQgUGlvbmVlciAtIE1lbnRyeDwvbGk+CiAgICAgICAgICAgIDxsaT5UcmFuc2Zvcm1pbmcga2l0Y2hlbnMgYWNyb3NzIEVhc3QgQWZyaWNhPC9saT4KICAgICAgICAgICAgPGxpPlNtYXJ0IHNvbHV0aW9ucyBmb3IgbW9kZXJuIGxpdmluZzwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb25zIj4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL25hbnRvbmdvLWJhcmJyYS1qYW5lLTc2NTUzODE5Ni8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnRuIGJ0bi12aWV3Ij5Db25uZWN0PC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3NtYXJ0a2l0Y2hlbnNvbHV0aW9ucy5jb20iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnRuIGJ0bi1nZXQiPlZpc2l0IEJ1c2luZXNzPC9hPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBDQVJEIDMgLSBURUREWSBCQU5LUyBOQUtJVFRPIC0tPgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLXNob3djYXNlIGZhZGUtaW4iIGRhdGEtY2F0ZWdvcnk9ImJ1c2luZXNzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWltYWdlIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aWVyLWJhZGdlIHRpZXItcHJvZmVzc2lvbmFsIj5Qcm9mZXNzaW9uYWw8L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1tb2NrdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1zY3JlZW4iPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vMjU2eDUxMi8wZjc2NmUvRkZGRkZGP3RleHQ9VGVkZHkrTmFraXR0byIgYWx0PSJUZWRkeSBCYW5rcyBOYWtpdHRvIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWRldGFpbHMiPgogICAgICAgICAgPGgzPlRlZGR5IEJhbmtzIE5ha2l0dG88L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNhcmQtc3VidGl0bGUiPkVudHJlcHJlbmV1ciAmIEJ1c2luZXNzIExlYWRlcjwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfkrwgQnVzaW5lc3MgU2VydmljZXMgJiBDb25zdWx0aW5nPC9zcGFuPgogICAgICAgICAgPHVsIGNsYXNzPSJmZWF0dXJlcy1saXN0Ij4KICAgICAgICAgICAgPGxpPkNvaG9ydCBMZWFkZXIgLSBUQVNOPC9saT4KICAgICAgICAgICAgPGxpPkVtcG93ZXJpbmcgQWZyaWNhbiBlbnRyZXByZW5ldXJzPC9saT4KICAgICAgICAgICAgPGxpPlN0cmF0ZWdpYyBidXNpbmVzcyBkZXZlbG9wbWVudDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb25zIj4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL3RlZGR5LW5ha2l0dG8vIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tdmlldyI+Q29ubmVjdCBvbiBMaW5rZWRJbjwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmc/dGllcj1wcm9mZXNzaW9uYWwiIGNsYXNzPSJidG4gYnRuLWdldCI+R2V0IFRoaXMgU3R5bGU8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgNCAtIERSLiBCQVJCQVJBIFNUUk9VRCAtLT4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1zaG93Y2FzZSBmYWRlLWluIiBkYXRhLWNhdGVnb3J5PSJoZWFsdGgiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1wcmVtaXVtIj5QcmVtaXVtPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtbW9ja3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtc2NyZWVuIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1Nng1MTIvN0I2OEVFL0ZGRkZGRj90ZXh0PURyLitCYXJiYXJhK1N0cm91ZCIgYWx0PSJEci4gQmFyYmFyYSBTdHJvdWQiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+RHIuIEJhcmJhcmEgU3Ryb3VkPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5NZWRpY2FsIFByb2Zlc3Npb25hbCAmIEhlYWx0aGNhcmUgTGVhZGVyPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+PpSBIZWFsdGhjYXJlICYgTWVkaWNpbmU8L3NwYW4+CiAgICAgICAgICA8dWwgY2xhc3M9ImZlYXR1cmVzLWxpc3QiPgogICAgICAgICAgICA8bGk+TWVkaWNhbCBleHBlcnRpc2UgYW5kIGF1dGhvcml0eTwvbGk+CiAgICAgICAgICAgIDxsaT5QYXRpZW50LWNlbnRlcmVkIGNhcmUgcGhpbG9zb3BoeTwvbGk+CiAgICAgICAgICAgIDxsaT5IZWFsdGhjYXJlIGlubm92YXRpb24gYWR2b2NhdGU8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9kci1iYXJiYXJhLXN0cm91ZC0wNjIxNjIyMjAvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tdmlldyI+VmlldyBQcm9maWxlPC9hPgogICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZz90aWVyPXByZW1pdW0iIGNsYXNzPSJidG4gYnRuLWdldCI+R2V0IFRoaXMgU3R5bGU8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgNSAtIExZTk4gTkFLQUJVR08gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iYnVzaW5lc3MiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1wcm9mZXNzaW9uYWwiPlByb2Zlc3Npb25hbDwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyLzBmNzY2ZS9GRkZGRkY/dGV4dD1MeW5uK05ha2FidWdvIiBhbHQ9Ikx5bm4gTmFrYWJ1Z28iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+THlubiBOYWthYnVnbzwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+RW50cmVwcmVuZXVyICYgQ29tbXVuaXR5IExlYWRlcjwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfmoAgRW50cmVwcmVuZXVyc2hpcCAmIElubm92YXRpb248L3NwYW4+CiAgICAgICAgICA8dWwgY2xhc3M9ImZlYXR1cmVzLWxpc3QiPgogICAgICAgICAgICA8bGk+Q29ob3J0IFBpb25lZXIgLSBNZW50cng8L2xpPgogICAgICAgICAgICA8bGk+QnVpbGRpbmcgc3VzdGFpbmFibGUgYnVzaW5lc3NlczwvbGk+CiAgICAgICAgICAgIDxsaT5Db21tdW5pdHkgZW1wb3dlcm1lbnQgYWR2b2NhdGU8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9seW5uLW5ha2FidWdvLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJidG4gYnRuLXZpZXciPkNvbm5lY3Q8L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nP3RpZXI9cHJvZmVzc2lvbmFsIiBjbGFzcz0iYnRuIGJ0bi1nZXQiPkdldCBUaGlzIFN0eWxlPC9hPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBDQVJEIDYgLSBOQUtJR0FOREEgUklUQUggLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iYnVzaW5lc3MiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1wcm9mZXNzaW9uYWwiPlByb2Zlc3Npb25hbDwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyLzBmNzY2ZS9GRkZGRkY/dGV4dD1OYWtpZ2FuZGErUml0YWgiIGFsdD0iTmFraWdhbmRhIFJpdGFoIj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWRldGFpbHMiPgogICAgICAgICAgPGgzPk5ha2lnYW5kYSBSaXRhaDwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+VmlzaW9uYXJ5IEVudHJlcHJlbmV1cjwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfkqEgQnVzaW5lc3MgU3RyYXRlZ3kgJiBEZXZlbG9wbWVudDwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5Db2hvcnQgVmlzaW9uYXJ5IC0gTWVudHJ4PC9saT4KICAgICAgICAgICAgPGxpPlN0cmF0ZWdpYyBidXNpbmVzcyBwb3NpdGlvbmluZzwvbGk+CiAgICAgICAgICAgIDxsaT5Jbm5vdmF0aXZlIG1hcmtldCBzb2x1dGlvbnM8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi9uYWtpZ2FuZGEtcml0YWgvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tdmlldyI+VmlldyBMaW5rZWRJbjwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmc/dGllcj1wcm9mZXNzaW9uYWwiIGNsYXNzPSJidG4gYnRuLWdldCI+R2V0IFRoaXMgU3R5bGU8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgNyAtIFRFTkRPIFRBTElRIChJTlRFUk4pIC0tPgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLXNob3djYXNlIGZhZGUtaW4iIGRhdGEtY2F0ZWdvcnk9ImJ1c2luZXNzIHRlY2giPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1lc3NlbnRpYWwiPllvdXRoIEZ1dHVyZXByZW5ldXI8L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1tb2NrdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1zY3JlZW4iPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vMjU2eDUxMi80QTkwRTIvRkZGRkZGP3RleHQ9VGVuZG8rVGFsaXEiIGFsdD0iVGVuZG8gVGFsaXEiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+VGVuZG8gVGFsaXE8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNhcmQtc3VidGl0bGUiPkRpZ2l0YWwgTWFya2V0aW5nIEludGVybiB8IE5leHQtR2VuIExlYWRlcjwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfjLEgWW91dGggRW50cmVwcmVuZXVyc2hpcCAmIERldmVsb3BtZW50PC9zcGFuPgogICAgICAgICAgPHVsIGNsYXNzPSJmZWF0dXJlcy1saXN0Ij4KICAgICAgICAgICAgPGxpPjIwMjUtMjAzNiBUYWxlbnQgUGlwZWxpbmUgbWVtYmVyPC9saT4KICAgICAgICAgICAgPGxpPkhhbmRzLW9uIGRpZ2l0YWwgbWFya2V0aW5nIHRyYWluaW5nPC9saT4KICAgICAgICAgICAgPGxpPkJ1aWxkaW5nIEFmcmljYSdzIGRpZ2l0YWwgZnV0dXJlPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vdGVuZG8tdGFsaXEtNWE2NmIwMmJiLyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJidG4gYnRuLXZpZXciPkNvbm5lY3Q8L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nP3RpZXI9ZXNzZW50aWFsIiBjbGFzcz0iYnRuIGJ0bi1nZXQiPkdldCBUaGlzIFN0eWxlPC9hPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBDQVJEIDggLSBLQU5UVUNISSBNQUxFR0UgLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iYWdyaWN1bHR1cmUgdGVjaCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLXByb2Zlc3Npb25hbCI+UHJvZmVzc2lvbmFsPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtbW9ja3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtc2NyZWVuIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1Nng1MTIvMDBDOUE3L0ZGRkZGRj90ZXh0PUthbnR1Y2hpK01hbGVnZSIgYWx0PSJLYW50dWNoaSBNYWxlZ2UiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+S2FudHVjaGkgTWFsZWdlPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5TdXN0YWluYWJsZSBBZ3JpY3VsdHVyZSBJbm5vdmF0b3I8L3A+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5kdXN0cnktdGFnIj7wn4y+IEFncmlUZWNoICYgU3VzdGFpbmFiaWxpdHk8L3NwYW4+CiAgICAgICAgICA8dWwgY2xhc3M9ImZlYXR1cmVzLWxpc3QiPgogICAgICAgICAgICA8bGk+QWdyaVRlY2ggU29sdXRpb25zIEVhc3QgQWZyaWNhPC9saT4KICAgICAgICAgICAgPGxpPkZlZWRpbmcgdGhlIGZ1dHVyZSB0aHJvdWdoIHNtYXJ0IGZhcm1pbmc8L2xpPgogICAgICAgICAgICA8bGk+U3VzdGFpbmFibGUgYWdyaWN1bHR1cmUgcHJhY3RpY2VzPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iYnRuIGJ0bi12aWV3Ij5Db21pbmcgU29vbjwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmc/dGllcj1wcm9mZXNzaW9uYWwiIGNsYXNzPSJidG4gYnRuLWdldCI+R2V0IFRoaXMgU3R5bGU8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgOSAtIFNPUEhJQSBOQU1BWUFOSkEgLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iZWR1Y2F0aW9uIHRlY2giPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1wcm9mZXNzaW9uYWwiPlByb2Zlc3Npb25hbDwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyLzdCNjhFRS9GRkZGRkY/dGV4dD1Tb3BoaWErTmFtYXlhbmphIiBhbHQ9IlNvcGhpYSBOYW1heWFuamEiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+U29waGlhIE5hbWF5YW5qYTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+RWR1Y2F0aW9uIFRlY2hub2xvZ3kgUGlvbmVlcjwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfk5ogRWRUZWNoICYgTGVhcm5pbmcgSW5ub3ZhdGlvbjwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5MZWFybiBBZnJpY2EgRWRUZWNoPC9saT4KICAgICAgICAgICAgPGxpPlRyYW5zZm9ybWluZyBlZHVjYXRpb24sIG9uZSBjbGFzc3Jvb20gYXQgYSB0aW1lPC9saT4KICAgICAgICAgICAgPGxpPkRpZ2l0YWwgbGVhcm5pbmcgc29sdXRpb25zIGZvciBBZnJpY2E8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJidG4gYnRuLXZpZXciPkNvbWluZyBTb29uPC9hPgogICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZz90aWVyPXByb2Zlc3Npb25hbCIgY2xhc3M9ImJ0biBidG4tZ2V0Ij5HZXQgVGhpcyBTdHlsZTwvYT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gQ0FSRCAxMCAtIEFCRFVMIE1BTElLIERFTUJFIC0tPgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLXNob3djYXNlIGZhZGUtaW4iIGRhdGEtY2F0ZWdvcnk9ImZpbmFuY2UgdGVjaCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLXByZW1pdW0iPlByZW1pdW08L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1tb2NrdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1zY3JlZW4iPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vMjU2eDUxMi9GRjZCMzUvRkZGRkZGP3RleHQ9QWJkdWwrTWFsaWsrRGVtYmUiIGFsdD0iQWJkdWwgTWFsaWsgRGVtYmUiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+QWJkdWwgTWFsaWsgRGVtYmU8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNhcmQtc3VidGl0bGUiPkZpbnRlY2ggSW5ub3ZhdG9yICYgRmluYW5jaWFsIEluY2x1c2lvbiBBZHZvY2F0ZTwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfkrMgRmludGVjaCAmIEZpbmFuY2lhbCBTZXJ2aWNlczwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5Nb2JpbGUgTW9uZXkgU29sdXRpb25zPC9saT4KICAgICAgICAgICAgPGxpPkJhbmtpbmcgdGhlIHVuYmFua2VkIGFjcm9zcyBFYXN0IEFmcmljYTwvbGk+CiAgICAgICAgICAgIDxsaT5GaW5hbmNpYWwgaW5jbHVzaW9uIHRocm91Z2ggdGVjaG5vbG9neTwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb25zIj4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJ0biBidG4tdmlldyI+Q29taW5nIFNvb248L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nP3RpZXI9cHJlbWl1bSIgY2xhc3M9ImJ0biBidG4tZ2V0Ij5HZXQgVGhpcyBTdHlsZTwvYT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gQ0FSRCAxMSAtIE1BTEFJS0EgTUlSRU1CRSAtLT4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1zaG93Y2FzZSBmYWRlLWluIiBkYXRhLWNhdGVnb3J5PSJjcmVhdGl2ZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLXByb2Zlc3Npb25hbCI+UHJvZmVzc2lvbmFsPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtbW9ja3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtc2NyZWVuIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1Nng1MTIvRkY2QjM1L0ZGRkZGRj90ZXh0PU1hbGFpa2ErTWlyZW1iZSIgYWx0PSJNYWxhaWthIE1pcmVtYmUiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+TWFsYWlrYSBNaXJlbWJlPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5DcmVhdGl2ZSBEaXJlY3RvciAmIEJyYW5kIFN0cmF0ZWdpc3Q8L3A+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5kdXN0cnktdGFnIj7wn46oIENyZWF0aXZlIEluZHVzdHJpZXMgJiBEZXNpZ248L3NwYW4+CiAgICAgICAgICA8dWwgY2xhc3M9ImZlYXR1cmVzLWxpc3QiPgogICAgICAgICAgICA8bGk+TWlyZW1iZSBDcmVhdGl2ZSBTdHVkaW88L2xpPgogICAgICAgICAgICA8bGk+RGVzaWduaW5nIEFmcmljYSdzIHZpc3VhbCBmdXR1cmU8L2xpPgogICAgICAgICAgICA8bGk+QnJhbmQgaWRlbnRpdHkgYW5kIGNyZWF0aXZlIHN0cmF0ZWd5PC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iYnRuIGJ0bi12aWV3Ij5Db21pbmcgU29vbjwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmc/dGllcj1wcm9mZXNzaW9uYWwiIGNsYXNzPSJidG4gYnRuLWdldCI+R2V0IFRoaXMgU3R5bGU8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgMTIgLSBQTEFDRUhPTERFUiAoWU9VUiBDQVJEIEhFUkUpIC0tPgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLXNob3djYXNlIGZhZGUtaW4iIGRhdGEtY2F0ZWdvcnk9ImJ1c2luZXNzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWltYWdlIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aWVyLWJhZGdlIHRpZXItZXNzZW50aWFsIj5Kb2luIFVzITwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyL0ZGRDcwMC8wMDFGM0Y/dGV4dD1Zb3VyK0NhcmQrSGVyZSIgYWx0PSJKb2luIHRoZSBHYWxsZXJ5Ij4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWRldGFpbHMiPgogICAgICAgICAgPGgzPllvdXIgTmFtZSBIZXJlPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5Kb2luIE91ciBGb3VuZGluZyBNZW1iZXJzPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+MnyBCZXRhIFByb2dyYW0gT3Blbjwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5CZSBwYXJ0IG9mIG91ciBmb3VuZGluZyBnYWxsZXJ5PC9saT4KICAgICAgICAgICAgPGxpPkdldCBmZWF0dXJlZCB3aXRoIEFmcmljYSdzIGJlc3Q8L2xpPgogICAgICAgICAgICA8bGk+U3RhbmQgb3V0IHdpdGggeW91ciBvd24gZGlnaXRhbCBjYXJkPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZyIgY2xhc3M9ImJ0biBidG4tdmlldyI+Sm9pbiB0aGUgR2FsbGVyeTwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iL2NvbnRhY3QiIGNsYXNzPSJidG4gYnRuLWdldCI+QXBwbHkgTm93PC9hPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2PgoKICA8IS0tIEZFQVRVUkVEIFNFQ1RJT04gLS0+CiAgPHNlY3Rpb24gY2xhc3M9ImZlYXR1cmVkLXNlY3Rpb24iPgogICAgPGRpdiBjbGFzcz0iZmVhdHVyZWQtY29udGFpbmVyIj4KICAgICAgPGgyPldoeSBUaGVzZSBDYXJkcyBHZXQgUmVzdWx0czwvaDI+CiAgICAgIDxkaXYgY2xhc3M9ImZlYXR1cmVkLWdyaWQiPgogICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMnJlbTsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjMpOyBib3JkZXItcmFkaXVzOiAyMHB4OyI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDNyZW07IG1hcmdpbi1ib3R0b206IDFyZW07Ij7wn5OxPC9kaXY+CiAgICAgICAgICA8aDMgc3R5bGU9ImNvbG9yOiB2YXIoLS1uYXZ5KTsgbWFyZ2luLWJvdHRvbTogMXJlbTsiPk1vYmlsZS1GaXJzdDwvaDM+CiAgICAgICAgICA8cCBzdHlsZT0iY29sb3I6IHZhcigtLW5hdnkpOyBvcGFjaXR5OiAwLjk7Ij5EZXNpZ25lZCBmb3IgaG93IEFmcmljYSB1c2VzIHBob25lcy4gT25lIHRhcCBvcGVucyBldmVyeXRoaW5nLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDJyZW07IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4zKTsgYm9yZGVyLXJhZGl1czogMjBweDsiPgogICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAzcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyI+8J+OqDwvZGl2PgogICAgICAgICAgPGgzIHN0eWxlPSJjb2xvcjogdmFyKC0tbmF2eSk7IG1hcmdpbi1ib3R0b206IDFyZW07Ij5Zb3VyIFBlcnNvbmFsaXR5PC9oMz4KICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogdmFyKC0tbmF2eSk7IG9wYWNpdHk6IDAuOTsiPkNvbG9ycywgc3R5bGUsIGFuZCBjb250ZW50IHRoYXQgbWFrZSBZT1Ugc3RhbmQgb3V0LjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDJyZW07IGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4zKTsgYm9yZGVyLXJhZGl1czogMjBweDsiPgogICAgICAgICAgPGRpdiBzdHlsZT0iZm9udC1zaXplOiAzcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyI+8J+TijwvZGl2PgogICAgICAgICAgPGgzIHN0eWxlPSJjb2xvcjogdmFyKC0tbmF2eSk7IG1hcmdpbi1ib3R0b206IDFyZW07Ij5UcmFjayBSZXN1bHRzPC9oMz4KICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogdmFyKC0tbmF2eSk7IG9wYWNpdHk6IDAuOTsiPlNlZSB3aG8gdmlld3MgeW91ciBjYXJkIGFuZCB3aGF0IHRoZXkgY2xpY2sgb24uPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvc2VjdGlvbj4KCiAgPCEtLSBDVEEgU0VDVElPTiAtLT4KICA8c2VjdGlvbiBjbGFzcz0iY3RhLXNlY3Rpb24iPgogICAgPGRpdiBjbGFzcz0iY3RhLWNvbnRhaW5lciI+CiAgICAgIDxoMj5SZWFkeSB0byBKb2luIE91ciBHYWxsZXJ5PzwvaDI+CiAgICAgIDxwPkJlIHBhcnQgb2YgQWZyaWNhJ3MgcGlvbmVlcmluZyBkaWdpdGFsIGVudHJlcHJlbmV1cnMgd2l0aCBhIGNhcmQgdGhhdCBhY3R1YWxseSBnZXRzIHNoYXJlZC48L3A+CiAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0iYnRuLWN0YSI+Q2hvb3NlIFlvdXIgQ2FyZCBUaWVyIOKGkjwvYT4KICAgIDwvZGl2PgogIDwvc2VjdGlvbj4KCiAgPCEtLSBGT09URVIgLS0+CiAgPGZvb3RlciBjbGFzcz0iZm9vdGVyIj4KICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1jb250YWluZXIiPgogICAgICA8ZGl2IGNsYXNzPSJmb290ZXItZ3JpZCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbHVtbiI+CiAgICAgICAgICA8aDQ+SGFuZHNoYWtlLmFmcmljYTwvaDQ+CiAgICAgICAgICA8cCBzdHlsZT0ib3BhY2l0eTogMC45OyI+UHJvZmVzc2lvbmFsIGRpZ2l0YWwgY2FyZHMgZm9yIEFmcmljYW4gZW50cmVwcmVuZXVycy48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbHVtbiI+CiAgICAgICAgICA8aDQ+UXVpY2sgTGlua3M8L2g0PgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iLyI+SG9tZTwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL2dhbGxlcnkiPkdhbGxlcnk8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9wcmljaW5nIj5QcmljaW5nPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIvYWJvdXQiPkFib3V0PC9hPjwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1jb2x1bW4iPgogICAgICAgICAgPGg0PkdldCBJbiBUb3VjaDwvaDQ+CiAgICAgICAgICA8cCBzdHlsZT0ib3BhY2l0eTogMC45OyI+8J+TpyBoZWxsb0BoYW5kc2hha2UuYWZyaWNhPC9wPgogICAgICAgICAgPHAgc3R5bGU9Im9wYWNpdHk6IDAuOTsiPvCfk7EgV2hhdHNBcHA8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJmb290ZXItYm90dG9tIj4KICAgICAgICA8cD7CqSAyMDI1IEhhbmRzaGFrZS5hZnJpY2Eg4oCiIEFsbCBSaWdodHMgUmVzZXJ2ZWQ8L3A+CiAgICAgICAgPHA+UG93ZXJlZCBieSA8YSBocmVmPSJodHRwczovL2R5bmFtaWNwYXJhZGlnbXMuaW8iPkR5bmFtaWMgUGFyYWRpZ21zPC9hPjwvcD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Zvb3Rlcj4KCiAgPCEtLSBTQ1JJUFRTIC0tPgogIDxzY3JpcHQ+CiAgICAvLyBBTlRJLVNDUkVFTlNIT1QgJiBDT1BZIFBST1RFQ1RJT04KICAgIC8vIERpc2FibGUgcmlnaHQtY2xpY2sgY29udGV4dCBtZW51CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGUgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKTsKICAgIAogICAgLy8gRGlzYWJsZSBjb21tb24gc2NyZWVuc2hvdCBzaG9ydGN1dHMKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbihlKSB7CiAgICAgIC8vIEYxMiAoRGV2VG9vbHMpCiAgICAgIGlmIChlLmtleUNvZGUgPT09IDEyMykgewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgLy8gQ3RybCtTaGlmdCtJIChEZXZUb29scykKICAgICAgaWYgKGUuY3RybEtleSAmJiBlLnNoaWZ0S2V5ICYmIGUua2V5Q29kZSA9PT0gNzMpIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIC8vIEN0cmwrU2hpZnQrQyAoRWxlbWVudCBpbnNwZWN0b3IpCiAgICAgIGlmIChlLmN0cmxLZXkgJiYgZS5zaGlmdEtleSAmJiBlLmtleUNvZGUgPT09IDY3KSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICAvLyBDdHJsK1NoaWZ0K0ogKENvbnNvbGUpCiAgICAgIGlmIChlLmN0cmxLZXkgJiYgZS5zaGlmdEtleSAmJiBlLmtleUNvZGUgPT09IDc0KSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICAvLyBDbWQrT3B0aW9uK0kgKERldlRvb2xzIG9uIE1hYykKICAgICAgaWYgKGUubWV0YUtleSAmJiBlLmFsdEtleSAmJiBlLmtleUNvZGUgPT09IDczKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICAvLyBQcmludCBTY3JlZW4KICAgICAgaWYgKGUua2V5Q29kZSA9PT0gNDQpIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9KTsKICAgIAogICAgLy8gRGlzYWJsZSB0ZXh0IHNlbGVjdGlvbgogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2VsZWN0c3RhcnQnLCBlID0+IGUucHJldmVudERlZmF1bHQoKSk7CiAgICAKICAgIC8vIERpc2FibGUgZHJhZwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ3N0YXJ0JywgZSA9PiBlLnByZXZlbnREZWZhdWx0KCkpOwogICAgCiAgICAvLyBXYXRlcm1hcmsgb3ZlcmxheSAob3B0aW9uYWwgLSB1bmNvbW1lbnQgdG8gZW5hYmxlKQogICAgLyoKICAgIGZ1bmN0aW9uIGFkZFdhdGVybWFyaygpIHsKICAgICAgY29uc3Qgd2F0ZXJtYXJrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHdhdGVybWFyay5zdHlsZS5jc3NUZXh0ID0gYAogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgcm90YXRlKC00NWRlZyk7CiAgICAgICAgZm9udC1zaXplOiA3MnB4OwogICAgICAgIG9wYWNpdHk6IDAuMDU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgei1pbmRleDogOTk5OTsKICAgICAgICBjb2xvcjogIzAwMUYzRjsKICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICBgOwogICAgICB3YXRlcm1hcmsudGV4dENvbnRlbnQgPSAnSEFORFNIQUtFLkFGUklDQSc7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQod2F0ZXJtYXJrKTsKICAgIH0KICAgIGFkZFdhdGVybWFyaygpOwogICAgKi8KICAgIAogICAgLy8gTW9iaWxlIG1lbnUKICAgIGZ1bmN0aW9uIHRvZ2dsZU1lbnUoKSB7CiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduYXZMaW5rcycpLmNsYXNzTGlzdC50b2dnbGUoJ2FjdGl2ZScpOwogICAgfQogICAgCiAgICAvLyBGaWx0ZXIgZnVuY3Rpb25hbGl0eQogICAgZnVuY3Rpb24gZmlsdGVyQ2FyZHMoY2F0ZWdvcnkpIHsKICAgICAgY29uc3QgY2FyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuY2FyZC1zaG93Y2FzZScpOwogICAgICBjb25zdCBidXR0b25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZpbHRlci1idG4nKTsKICAgICAgCiAgICAgIC8vIFVwZGF0ZSBhY3RpdmUgYnV0dG9uCiAgICAgIGJ1dHRvbnMuZm9yRWFjaChidG4gPT4gYnRuLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpKTsKICAgICAgZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgICAKICAgICAgLy8gRmlsdGVyIGNhcmRzCiAgICAgIGNhcmRzLmZvckVhY2goY2FyZCA9PiB7CiAgICAgICAgaWYgKGNhdGVnb3J5ID09PSAnYWxsJyB8fCBjYXJkLmRhdGFzZXQuY2F0ZWdvcnkuaW5jbHVkZXMoY2F0ZWdvcnkpKSB7CiAgICAgICAgICBjYXJkLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBjYXJkLmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKSwgMTAwKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY2FyZC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgICAKICAgIC8vIFNjcm9sbCBhbmltYXRpb25zCiAgICBjb25zdCBvYnNlcnZlck9wdGlvbnMgPSB7CiAgICAgIHRocmVzaG9sZDogMC4xLAogICAgICByb290TWFyZ2luOiAnMHB4IDBweCAtMTAwcHggMHB4JwogICAgfTsKICAgIAogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcykgewogICAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4gewogICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykgewogICAgICAgICAgZW50cnkudGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ3Zpc2libGUnKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSwgb2JzZXJ2ZXJPcHRpb25zKTsKICAgIAogICAgZG88IURPQ1RZUEUgaHRtbD4KPGh0bWwgbGFuZz0iZW4iPgo8aGVhZD4KICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogIDx0aXRsZT5HYWxsZXJ5IC0gU2VlIEhhbmRzaGFrZSBDYXJkcyBpbiBBY3Rpb24gfCBIYW5kc2hha2UuYWZyaWNhPC90aXRsZT4KICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iQnJvd3NlIHJlYWwgZGlnaXRhbCBidXNpbmVzcyBjYXJkcyBmcm9tIEFmcmljYW4gZW50cmVwcmVuZXVycy4gR2V0IGluc3BpcmVkIGJ5IHByb2Zlc3Npb25hbHMgd2hvIHN0YW5kIG91dCB3aXRoIGhhbmRzaGFrZS5hZnJpY2EgY2FyZHMuIj4KICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9Im5vaW5kZXgsIG5vZm9sbG93Ij4KICAKICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRAMzAwOzQwMDs2MDA7NzAwOzgwMCZmYW1pbHk9UGxheWZhaXIrRGlzcGxheTp3Z2h0QDcwMDs5MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogIAogIDxzdHlsZT4KICAgIC8qIElOSEVSSVQgQkFTRSBTVFlMRVMgRlJPTSBIT01FUEFHRSAqLwogICAgOnJvb3QgewogICAgICAtLW5hdnk6ICMwMDFGM0Y7CiAgICAgIC0tcm95YWwtYmx1ZTogIzAwNDdBQjsKICAgICAgLS1nb2xkOiAjRkZENzAwOwogICAgICAtLWdvbGQtd2FybTogI0ZGQzEwNzsKICAgICAgLS13aGl0ZTogI0ZGRkZGRjsKICAgICAgLS1saWdodC1iZzogI0Y3RjlGQzsKICAgICAgLS1ncmF5OiAjNkI3MjgwOwogICAgICAtLXRlYWw6ICMwMEM5QTc7CiAgICAgIC0tb3JhbmdlOiAjRkY2QjM1OwogICAgICAtLXB1cnBsZTogIzdCNjhFRTsKICAgIH0KICAgIAogICAgKiB7CiAgICAgIG1hcmdpbjogMDsKICAgICAgcGFkZGluZzogMDsKICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KICAgIAogICAgYm9keSB7CiAgICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbGlnaHQtYmcpOwogICAgfQogICAgCiAgICBoMSwgaDIsIGgzIHsKICAgICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICB9CiAgICAKICAgIC8qIE5BVklHQVRJT04gLSBTQU1FIEFTIEhPTUVQQUdFICovCiAgICAubmF2IHsKICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICB0b3A6IDA7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDMxLCA2MywgMC45NSk7CiAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgei1pbmRleDogMTAwMDsKICAgICAgcGFkZGluZzogMXJlbSAycmVtOwogICAgICBib3gtc2hhZG93OiAwIDJweCAyMHB4IHJnYmEoMCwwLDAsMC4xKTsKICAgIH0KICAgIAogICAgLm5hdi1jb250YWluZXIgewogICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KICAgIAogICAgLmxvZ28gewogICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgfQogICAgCiAgICAubmF2LWxpbmtzIHsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgZ2FwOiAycmVtOwogICAgICBsaXN0LXN0eWxlOiBub25lOwogICAgfQogICAgCiAgICAubmF2LWxpbmtzIGEgewogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4zczsKICAgIH0KICAgIAogICAgLm5hdi1saW5rcyBhOmhvdmVyLAogICAgLm5hdi1saW5rcyBhLmFjdGl2ZSB7CiAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgIH0KICAgIAogICAgLm1vYmlsZS1tZW51IHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgYmFja2dyb3VuZDogbm9uZTsKICAgICAgYm9yZGVyOiBub25lOwogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogICAgCiAgICAvKiBIRVJPIC0gR0FMTEVSWSBWRVJTSU9OICovCiAgICAuaGVybyB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLW5hdnkpIDAlLCB2YXIoLS1yb3lhbC1ibHVlKSAxMDAlKTsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgcGFkZGluZzogMTQwcHggMnJlbSA2MHB4OwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CiAgICAKICAgIC5oZXJvOjpiZWZvcmUgewogICAgICBjb250ZW50OiAnJzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IC01MCU7CiAgICAgIGxlZnQ6IC01MCU7CiAgICAgIHdpZHRoOiAyMDAlOwogICAgICBoZWlnaHQ6IDIwMCU7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDI1NSwgMjE1LCAwLCAwLjA1KSA1MCUsIHRyYW5zcGFyZW50IDcwJSk7CiAgICAgIGFuaW1hdGlvbjogcm90YXRlIDIwcyBsaW5lYXIgaW5maW5pdGU7CiAgICB9CiAgICAKICAgIEBrZXlmcmFtZXMgcm90YXRlIHsKICAgICAgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQogICAgICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfQogICAgfQogICAgCiAgICAuaGVyby1jb250YWluZXIgewogICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgei1pbmRleDogMjsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgfQogICAgCiAgICAuaGVybyBoMSB7CiAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMi41cmVtLCA2dncsIDRyZW0pOwogICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgfQogICAgCiAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMS4xcmVtLCAyLjV2dywgMS40cmVtKTsKICAgICAgb3BhY2l0eTogMC45NTsKICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CiAgICAKICAgIC8qIE5BVklHQVRJT04gQVJST1dTICovCiAgICAucGFnZS1uYXYgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIG1heC13aWR0aDogMTQwMHB4OwogICAgICBtYXJnaW46IDJyZW0gYXV0bzsKICAgICAgcGFkZGluZzogMCAycmVtOwogICAgfQogICAgCiAgICAubmF2LWFycm93IHsKICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgIGdhcDogMC41cmVtOwogICAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbTsKICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDIxNSwgMCwgMC4xKTsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tZ29sZCk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBmb250LXdlaWdodDogNjAwOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczsKICAgIH0KICAgIAogICAgLm5hdi1hcnJvdzpob3ZlciB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLWdvbGQpOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgIH0KICAgIAogICAgLyogRklMVEVSIFNFQ1RJT04gKi8KICAgIC5maWx0ZXItc2VjdGlvbiB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgcGFkZGluZzogMnJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDQwcHggcmdiYSgwLDAsMCwwLjA4KTsKICAgICAgbWFyZ2luOiAzcmVtIGF1dG87CiAgICAgIG1heC13aWR0aDogMTQwMHB4OwogICAgICBtYXJnaW4tbGVmdDogMnJlbTsKICAgICAgbWFyZ2luLXJpZ2h0OiAycmVtOwogICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICB0b3A6IDgwcHg7CiAgICAgIHotaW5kZXg6IDEwMDsKICAgIH0KICAgIAogICAgLmZpbHRlci1sYWJlbCB7CiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICB9CiAgICAKICAgIC5maWx0ZXItdGFicyB7CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGdhcDogMXJlbTsKICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgfQogICAgCiAgICAuZmlsdGVyLWJ0biB7CiAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtOwogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1saWdodC1iZyk7CiAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIH0KICAgIAogICAgLmZpbHRlci1idG46aG92ZXIgewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS13aGl0ZSk7CiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgIH0KICAgIAogICAgLmZpbHRlci1idG4uYWN0aXZlIHsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tZ29sZCkgMCUsIHZhcigtLWdvbGQtd2FybSkgMTAwJSk7CiAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1nb2xkKTsKICAgIH0KICAgIAogICAgLyogR0FMTEVSWSBHUklEICovCiAgICAuZ2FsbGVyeS1jb250YWluZXIgewogICAgICBtYXgtd2lkdGg6IDE0MDBweDsKICAgICAgbWFyZ2luOiA0cmVtIGF1dG87CiAgICAgIHBhZGRpbmc6IDAgMnJlbTsKICAgIH0KICAgIAogICAgLmdhbGxlcnktZ3JpZCB7CiAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDM1MHB4LCAxZnIpKTsKICAgICAgZ2FwOiAyLjVyZW07CiAgICB9CiAgICAKICAgIC5jYXJkLXNob3djYXNlIHsKICAgICAgYmFja2dyb3VuZDogdmFyKC0td2hpdGUpOwogICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICBib3gtc2hhZG93OiAwIDEwcHggNDBweCByZ2JhKDAsMCwwLDAuMDgpOwogICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBjdWJpYy1iZXppZXIoMC4xNzUsIDAuODg1LCAwLjMyLCAxLjI3NSk7CiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIH0KICAgIAogICAgLmNhcmQtc2hvd2Nhc2U6aG92ZXIgewogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE1cHgpIHJvdGF0ZSgyZGVnKTsKICAgICAgYm94LXNoYWRvdzogMCAyNXB4IDYwcHggcmdiYSgwLDAsMCwwLjE1KTsKICAgIH0KICAgIAogICAgLyogQ2FyZCBJbWFnZSBDb250YWluZXIgLSBQaG9uZSBNb2NrdXAgKi8KICAgIC5jYXJkLWltYWdlIHsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1saWdodC1iZykgMCUsICNFNUU3RUIgMTAwJSk7CiAgICAgIHBhZGRpbmc6IDJyZW07CiAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBtaW4taGVpZ2h0OiA0MDBweDsKICAgIH0KICAgIAogICAgLnBob25lLW1vY2t1cCB7CiAgICAgIHdpZHRoOiAyODBweDsKICAgICAgaGVpZ2h0OiA1NjBweDsKICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgYm9yZGVyLXJhZGl1czogNDBweDsKICAgICAgcGFkZGluZzogMTJweDsKICAgICAgYm94LXNoYWRvdzogMCAyMHB4IDYwcHggcmdiYSgwLDAsMCwwLjMpOwogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CiAgICAKICAgIC5waG9uZS1tb2NrdXA6OmJlZm9yZSB7CiAgICAgIGNvbnRlbnQ6ICcnOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMTJweDsKICAgICAgbGVmdDogNTAlOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgIHdpZHRoOiAxMjBweDsKICAgICAgaGVpZ2h0OiAyNXB4OwogICAgICBiYWNrZ3JvdW5kOiAjMWExYTFhOwogICAgICBib3JkZXItcmFkaXVzOiAwIDAgMjBweCAyMHB4OwogICAgICB6LWluZGV4OiAxMDsKICAgIH0KICAgIAogICAgLnBob25lLXNjcmVlbiB7CiAgICAgIHdpZHRoOiAxMDAlOwogICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLXdoaXRlKTsKICAgICAgYm9yZGVyLXJhZGl1czogMzBweDsKICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgfQogICAgCiAgICAucGhvbmUtc2NyZWVuIGlmcmFtZSwKICAgIC5waG9uZS1zY3JlZW4gaW1nIHsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgIGJvcmRlcjogbm9uZTsKICAgIH0KICAgIAogICAgLyogVGllciBCYWRnZSAqLwogICAgLnRpZXItYmFkZ2UgewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMS41cmVtOwogICAgICByaWdodDogMS41cmVtOwogICAgICBwYWRkaW5nOiAwLjVyZW0gMS4yNXJlbTsKICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgICB6LWluZGV4OiAyMDsKICAgICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsMCwwLDAuMik7CiAgICB9CiAgICAKICAgIC50aWVyLWVzc2VudGlhbCB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0QTkwRTIgMCUsICMzNTdBQkQgMTAwJSk7CiAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7CiAgICB9CiAgICAKICAgIC50aWVyLXByb2Zlc3Npb25hbCB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLXRlYWwpIDAlLCAjMDBCODk0IDEwMCUpOwogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgfQogICAgCiAgICAudGllci1wcmVtaXVtIHsKICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgdmFyKC0tcHVycGxlKSAwJSwgIzZDNUNFNyAxMDAlKTsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgIH0KICAgIAogICAgLnRpZXItZm91bmRlciB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpIDAlLCB2YXIoLS1nb2xkLXdhcm0pIDEwMCUpOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICB9CiAgICAKICAgIC8qIENhcmQgRGV0YWlscyAqLwogICAgLmNhcmQtZGV0YWlscyB7CiAgICAgIHBhZGRpbmc6IDJyZW07CiAgICB9CiAgICAKICAgIC5jYXJkLWRldGFpbHMgaDMgewogICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgICBjb2xvcjogdmFyKC0tbmF2eSk7CiAgICB9CiAgICAKICAgIC5jYXJkLXN1YnRpdGxlIHsKICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICBjb2xvcjogdmFyKC0tZ3JheSk7CiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICB9CiAgICAKICAgIC5pbmR1c3RyeS10YWcgewogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgIHBhZGRpbmc6IDAuNHJlbSAxcmVtOwogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1saWdodC1iZyk7CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgY29sb3I6IHZhcigtLW5hdnkpOwogICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICB9CiAgICAKICAgIC5mZWF0dXJlcy1saXN0IHsKICAgICAgbGlzdC1zdHlsZTogbm9uZTsKICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgfQogICAgCiAgICAuZmVhdHVyZXMtbGlzdCBsaSB7CiAgICAgIHBhZGRpbmc6IDAuNXJlbSAwOwogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICBnYXA6IDAuNzVyZW07CiAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgY29sb3I6IHZhcigtLWdyYXkpOwogICAgfQogICAgCiAgICAuZmVhdHVyZXMtbGlzdCBsaTo6YmVmb3JlIHsKICAgICAgY29udGVudDogJ+KcqCc7CiAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgfQogICAgCiAgICAvKiBDYXJkIEFjdGlvbnMgKi8KICAgIC5jYXJkLWFjdGlvbnMgewogICAgICBkaXNwbGF5OiBmbGV4OwogICAgICBnYXA6IDFyZW07CiAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIH0KICAgIAogICAgLmJ0biB7CiAgICAgIGZsZXg6IDE7CiAgICAgIG1pbi13aWR0aDogMTIwcHg7CiAgICAgIHBhZGRpbmc6IDAuOXJlbSAxLjVyZW07CiAgICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7CiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgfQogICAgCiAgICAuYnRuLXZpZXcgewogICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCB2YXIoLS1uYXZ5KSAwJSwgdmFyKC0tcm95YWwtYmx1ZSkgMTAwJSk7CiAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7CiAgICB9CiAgICAKICAgIC5idG4tdmlldzpob3ZlciB7CiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgYm94LXNoYWRvdzogMCA4cHggMjBweCByZ2JhKDAsMzEsNjMsMC4zKTsKICAgIH0KICAgIAogICAgLmJ0bi1nZXQgewogICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgYm9yZGVyOiAycHggc29saWQgdmFyKC0tZ29sZCk7CiAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgIH0KICAgIAogICAgLmJ0bi1nZXQ6aG92ZXIgewogICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1nb2xkKTsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgfQogICAgCiAgICAvKiBGRUFUVVJFRCBTRUNUSU9OICovCiAgICAuZmVhdHVyZWQtc2VjdGlvbiB7CiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHZhcigtLWdvbGQpIDAlLCB2YXIoLS1nb2xkLXdhcm0pIDEwMCUpOwogICAgICBwYWRkaW5nOiA4MHB4IDJyZW07CiAgICAgIG1hcmdpbjogNnJlbSAwOwogICAgfQogICAgCiAgICAuZmVhdHVyZWQtY29udGFpbmVyIHsKICAgICAgbWF4LXdpZHRoOiAxNDAwcHg7CiAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQogICAgCiAgICAuZmVhdHVyZWQtc2VjdGlvbiBoMiB7CiAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgICBmb250LXNpemU6IGNsYW1wKDJyZW0sIDV2dywgM3JlbSk7CiAgICB9CiAgICAKICAgIC5mZWF0dXJlZC1ncmlkIHsKICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMDBweCwgMWZyKSk7CiAgICAgIGdhcDogM3JlbTsKICAgIH0KICAgIAogICAgLyogQ1RBIFNFQ1RJT04gKi8KICAgIC5jdGEtc2VjdGlvbiB7CiAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5hdnkpOwogICAgICBjb2xvcjogdmFyKC0td2hpdGUpOwogICAgICBwYWRkaW5nOiA4MHB4IDJyZW07CiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIH0KICAgIAogICAgLmN0YS1jb250YWluZXIgewogICAgICBtYXgtd2lkdGg6IDgwMHB4OwogICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KICAgIAogICAgLmN0YS1zZWN0aW9uIGgyIHsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgfQogICAgCiAgICAuY3RhLXNlY3Rpb24gcCB7CiAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICB9CiAgICAKICAgIC5idG4tY3RhIHsKICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICBwYWRkaW5nOiAxLjJyZW0gM3JlbTsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tZ29sZCk7CiAgICAgIGNvbG9yOiB2YXIoLS1uYXZ5KTsKICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7CiAgICB9CiAgICAKICAgIC5idG4tY3RhOmhvdmVyIHsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgICBib3gtc2hhZG93OiAwIDE1cHggNDBweCByZ2JhKDI1NSwyMTUsMCwwLjQpOwogICAgfQogICAgCiAgICAvKiBGT09URVIgLSBTQU1FIEFTIEhPTUVQQUdFICovCiAgICAuZm9vdGVyIHsKICAgICAgYmFja2dyb3VuZDogdmFyKC0tbmF2eSk7CiAgICAgIGNvbG9yOiB2YXIoLS13aGl0ZSk7CiAgICAgIHBhZGRpbmc6IDYwcHggMnJlbSAyMHB4OwogICAgfQogICAgCiAgICAuZm9vdGVyLWNvbnRhaW5lciB7CiAgICAgIG1heC13aWR0aDogMTQwMHB4OwogICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KICAgIAogICAgLmZvb3Rlci1ncmlkIHsKICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgIGdhcDogM3JlbTsKICAgICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgIH0KICAgIAogICAgLmZvb3Rlci1jb2x1bW4gaDQgewogICAgICBjb2xvcjogdmFyKC0tZ29sZCk7CiAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICB9CiAgICAKICAgIC5mb290ZXItY29sdW1uIHVsIHsKICAgICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIH0KICAgIAogICAgLmZvb3Rlci1jb2x1bW4gdWwgbGkgewogICAgICBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOwogICAgfQogICAgCiAgICAuZm9vdGVyLWNvbHVtbiBhIHsKICAgICAgY29sb3I6IHZhcigtLXdoaXRlKTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICBvcGFjaXR5OiAwLjk7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgfQogICAgCiAgICAuZm9vdGVyLWNvbHVtbiBhOmhvdmVyIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgY29sb3I6IHZhcigtLWdvbGQpOwogICAgfQogICAgCiAgICAuZm9vdGVyLWJvdHRvbSB7CiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwyMTUsMCwwLjMpOwogICAgICBwYWRkaW5nLXRvcDogMnJlbTsKICAgICAgbWFyZ2luLXRvcDogMnJlbTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgIGdhcDogMXJlbTsKICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgIG9wYWNpdHk6IDAuODsKICAgIH0KICAgIAogICAgLmZvb3Rlci1ib3R0b20gYSB7CiAgICAgIGNvbG9yOiB2YXIoLS1nb2xkKTsKICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgfQogICAgCiAgICAvKiBSRVNQT05TSVZFICovCiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgLm5hdi1saW5rcyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogMTAwJTsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5hdnkpOwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgcGFkZGluZzogMnJlbTsKICAgICAgICBnYXA6IDFyZW07CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMDAlKTsKICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgICB9CiAgICAgIAogICAgICAubmF2LWxpbmtzLmFjdGl2ZSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbDsKICAgICAgfQogICAgICAKICAgICAgLm1vYmlsZS1tZW51IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgfQogICAgICAKICAgICAgLmdhbGxlcnktZ3JpZCB7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgIH0KICAgICAgCiAgICAgIC5maWx0ZXItdGFicyB7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgfQogICAgICAKICAgICAgLmZpbHRlci1idG4gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgfQogICAgICAKICAgICAgLnBhZ2UtbmF2IHsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIGdhcDogMXJlbTsKICAgICAgfQogICAgICAKICAgICAgLm5hdi1hcnJvdyB7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgIH0KICAgIH0KICAgIAogICAgLyogQU5JTUFUSU9OUyAqLwogICAgLmZhZGUtaW4gewogICAgICBvcGFjaXR5OiAwOwogICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzBweCk7CiAgICAgIHRyYW5zaXRpb246IGFsbCAwLjZzIGVhc2Utb3V0OwogICAgfQogICAgCiAgICAuZmFkZS1pbi52aXNpYmxlIHsKICAgICAgb3BhY2l0eTogMTsKICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgfQogICAgCiAgICBAa2V5ZnJhbWVzIGZsb2F0IHsKICAgICAgMCUsIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KICAgICAgNTAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsgfQogICAgfQogICAgCiAgICAuY2FyZC1zaG93Y2FzZTpob3ZlciAucGhvbmUtbW9ja3VwIHsKICAgICAgYW5pbWF0aW9uOiBmbG9hdCAzcyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgIH0KICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKICA8IS0tIE5BVklHQVRJT04gLS0+CiAgPG5hdiBjbGFzcz0ibmF2Ij4KICAgIDxkaXYgY2xhc3M9Im5hdi1jb250YWluZXIiPgogICAgICA8YSBocmVmPSIvIiBjbGFzcz0ibG9nbyI+SGFuZHNoYWtlLmFmcmljYTwvYT4KICAgICAgPGJ1dHRvbiBjbGFzcz0ibW9iaWxlLW1lbnUiIG9uY2xpY2s9InRvZ2dsZU1lbnUoKSI+4piwPC9idXR0b24+CiAgICAgIDx1bCBjbGFzcz0ibmF2LWxpbmtzIiBpZD0ibmF2TGlua3MiPgogICAgICAgIDxsaT48YSBocmVmPSIvZ2FsbGVyeSIgY2xhc3M9ImFjdGl2ZSI+R2FsbGVyeTwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvcHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICAgIDxsaT48YSBocmVmPSIvYWJvdXQiPkFib3V0PC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGhyZWY9Ii9jb250YWN0Ij5Db250YWN0PC9hPjwvbGk+CiAgICAgIDwvdWw+CiAgICA8L2Rpdj4KICA8L25hdj4KCiAgPCEtLSBIRVJPIC0tPgogIDxzZWN0aW9uIGNsYXNzPSJoZXJvIj4KICAgIDxkaXYgY2xhc3M9Imhlcm8tY29udGFpbmVyIj4KICAgICAgPGgxPk91ciBGb3VuZGluZyBNZW1iZXJzIEdhbGxlcnk8L2gxPgogICAgICA8cCBjbGFzcz0iaGVyby1zdWJ0aXRsZSI+CiAgICAgICAgTWVldCB0aGUgcGlvbmVlcmluZyBlbnRyZXByZW5ldXJzIGJ1aWxkaW5nIEFmcmljYSdzIGRpZ2l0YWwgZnV0dXJlLiBSZWFsIHByb2Zlc3Npb25hbHMuIFJlYWwgaW1wYWN0LgogICAgICA8L3A+CiAgICA8L2Rpdj4KICA8L3NlY3Rpb24+CgogIDwhLS0gUEFHRSBOQVZJR0FUSU9OIEFSUk9XUyAtLT4KICA8ZGl2IGNsYXNzPSJwYWdlLW5hdiI+CiAgICA8YSBocmVmPSIvIiBjbGFzcz0ibmF2LWFycm93Ij7ihpAgQmFjayB0byBIb21lPC9hPgogICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJuYXYtYXJyb3ciPkdldCBZb3VyIENhcmQg4oaSPC9hPgogIDwvZGl2PgoKICA8IS0tIEZJTFRFUiBTRUNUSU9OIC0tPgogIDxkaXYgY2xhc3M9ImZpbHRlci1zZWN0aW9uIj4KICAgIDxkaXYgY2xhc3M9ImZpbHRlci1sYWJlbCI+RmlsdGVyIGJ5IEluZHVzdHJ5OjwvZGl2PgogICAgPGRpdiBjbGFzcz0iZmlsdGVyLXRhYnMiPgogICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIGFjdGl2ZSIgb25jbGljaz0iZmlsdGVyQ2FyZHMoJ2FsbCcpIj5BbGwgTWVtYmVyczwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIiBvbmNsaWNrPSJmaWx0ZXJDYXJkcygnbWVkaWEnKSI+TWVkaWEgJiBQdWJsaXNoaW5nPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iIG9uY2xpY2s9ImZpbHRlckNhcmRzKCdidXNpbmVzcycpIj5CdXNpbmVzcyBTZXJ2aWNlczwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIiBvbmNsaWNrPSJmaWx0ZXJDYXJkcygndGVjaCcpIj5UZWNoICYgSW5ub3ZhdGlvbjwvYnV0dG9uPgogICAgICA8YnV0dG9uIGNsYXNzPSJmaWx0ZXItYnRuIiBvbmNsaWNrPSJmaWx0ZXJDYXJkcygnaGVhbHRoJykiPkhlYWx0aGNhcmU8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biIgb25jbGljaz0iZmlsdGVyQ2FyZHMoJ2NyZWF0aXZlJykiPkNyZWF0aXZlIEluZHVzdHJpZXM8L2J1dHRvbj4KICAgICAgPGJ1dHRvbiBjbGFzcz0iZmlsdGVyLWJ0biIgb25jbGljaz0iZmlsdGVyQ2FyZHMoJ2FncmljdWx0dXJlJykiPkFncmljdWx0dXJlPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iIG9uY2xpY2s9ImZpbHRlckNhcmRzKCdlZHVjYXRpb24nKSI+RWR1Y2F0aW9uPC9idXR0b24+CiAgICAgIDxidXR0b24gY2xhc3M9ImZpbHRlci1idG4iIG9uY2xpY2s9ImZpbHRlckNhcmRzKCdmaW5hbmNlJykiPkZpbmFuY2UgJiBGaW50ZWNoPC9idXR0b24+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPCEtLSBHQUxMRVJZIEdSSUQgLS0+CiAgPGRpdiBjbGFzcz0iZ2FsbGVyeS1jb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0iZ2FsbGVyeS1ncmlkIj4KICAgICAgCiAgICAgIDwhLS0gQ0FSRCAxIC0gTklHSFRJTkdBTEUgTVVLQVNBIChGT1VOREVSKSAtLT4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1zaG93Y2FzZSBmYWRlLWluIiBkYXRhLWNhdGVnb3J5PSJtZWRpYSBidXNpbmVzcyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLWZvdW5kZXIiPvCfjJ8gRm91bmRlcjwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyLzBmNzY2ZS9GRkZGRkY/dGV4dD1OaWdodGluZ2FsZStNdWthc2ErRm91bmRlcitDYXJkIiBhbHQ9Ik5pZ2h0aW5nYWxlIE11a2FzYSAtIEZvdW5kZXIiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+TmlnaHRpbmdhbGUgTXVrYXNhPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5Gb3VuZGVyICYgVmlzaW9uYXJ5IHwgQ01PICYgQnJhbmQgU3RyYXRlZ2lzdDwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfk7AgTWVkaWEgJiBEaWdpdGFsIExlYWRlcnNoaXA8L3NwYW4+CiAgICAgICAgICA8dWwgY2xhc3M9ImZlYXR1cmVzLWxpc3QiPgogICAgICAgICAgICA8bGk+QW1wbGlmeWluZyBBZnJpY2FuIHdvbWVuJ3Mgdm9pY2VzIHRocm91Z2ggZGlnaXRhbCBzb3ZlcmVpZ250eTwvbGk+CiAgICAgICAgICAgIDxsaT5GdWxsLXNwZWN0cnVtIGJyYW5kICYgbWVkaWEgc3RyYXRlZ3k8L2xpPgogICAgICAgICAgICA8bGk+QnVpbGRpbmcgdGhlIGZ1dHVyZSBvZiBBZnJpY2FuIGVudHJlcHJlbmV1cnNoaXA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vYWZyaWNhZnJvbnRsaW5lbmV4dXMubmV3cy9mb3VuZGVyIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tdmlldyI+VmlldyBDYXJkPC9hPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL21lbnRvcnNoaXBzdWNjZXNzLmNvbS9mb3VuZGVyLXZpcnR1YWwtY2FyZCIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJidG4gYnRuLWdldCI+QWx0IENhcmQ8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgMiAtIEJBUkJBUkEgTkFOVE9OR08gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iYnVzaW5lc3MgdGVjaCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLXByb2Zlc3Npb25hbCI+UHJvZmVzc2lvbmFsPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtbW9ja3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtc2NyZWVuIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1Nng1MTIvMGY3NjZlL0ZGRkZGRj90ZXh0PUJhcmJhcmErTmFudG9uZ28iIGFsdD0iQmFyYmFyYSBOYW50b25nbyI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1kZXRhaWxzIj4KICAgICAgICAgIDxoMz5CYXJiYXJhIE5hbnRvbmdvPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5Gb3VuZGVyIHwgU21hcnQgS2l0Y2hlbiBTb2x1dGlvbnM8L3A+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5kdXN0cnktdGFnIj7wn42zIEtpdGNoZW4gSW5ub3ZhdGlvbiAmIEJ1c2luZXNzPC9zcGFuPgogICAgICAgICAgPHVsIGNsYXNzPSJmZWF0dXJlcy1saXN0Ij4KICAgICAgICAgICAgPGxpPkNvaG9ydCBQaW9uZWVyIC0gTWVudHJ4PC9saT4KICAgICAgICAgICAgPGxpPlRyYW5zZm9ybWluZyBraXRjaGVucyBhY3Jvc3MgRWFzdCBBZnJpY2E8L2xpPgogICAgICAgICAgICA8bGk+U21hcnQgc29sdXRpb25zIGZvciBtb2Rlcm4gbGl2aW5nPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vbmFudG9uZ28tYmFyYnJhLWphbmUtNzY1NTM4MTk2LyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJidG4gYnRuLXZpZXciPkNvbm5lY3Q8L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vc21hcnRraXRjaGVuc29sdXRpb25zLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJidG4gYnRuLWdldCI+VmlzaXQgQnVzaW5lc3M8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgMyAtIFRFRERZIEJBTktTIE5BS0lUVE8gLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iYnVzaW5lc3MiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1wcm9mZXNzaW9uYWwiPlByb2Zlc3Npb25hbDwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyLzBmNzY2ZS9GRkZGRkY/dGV4dD1UZWRkeStOYWtpdHRvIiBhbHQ9IlRlZGR5IEJhbmtzIE5ha2l0dG8iPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+VGVkZHkgQmFua3MgTmFraXR0bzwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+RW50cmVwcmVuZXVyICYgQnVzaW5lc3MgTGVhZGVyPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+SvCBCdXNpbmVzcyBTZXJ2aWNlcyAmIENvbnN1bHRpbmc8L3NwYW4+CiAgICAgICAgICA8dWwgY2xhc3M9ImZlYXR1cmVzLWxpc3QiPgogICAgICAgICAgICA8bGk+Q29ob3J0IExlYWRlciAtIFRBU048L2xpPgogICAgICAgICAgICA8bGk+RW1wb3dlcmluZyBBZnJpY2FuIGVudHJlcHJlbmV1cnM8L2xpPgogICAgICAgICAgICA8bGk+U3RyYXRlZ2ljIGJ1c2luZXNzIGRldmVsb3BtZW50PC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vdGVkZHktbmFraXR0by8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnRuIGJ0bi12aWV3Ij5Db25uZWN0IG9uIExpbmtlZEluPC9hPgogICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZz90aWVyPXByb2Zlc3Npb25hbCIgY2xhc3M9ImJ0biBidG4tZ2V0Ij5HZXQgVGhpcyBTdHlsZTwvYT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gQ0FSRCA0IC0gRFIuIEJBUkJBUkEgU1RST1VEIC0tPgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLXNob3djYXNlIGZhZGUtaW4iIGRhdGEtY2F0ZWdvcnk9ImhlYWx0aCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLXByZW1pdW0iPlByZW1pdW08L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1tb2NrdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1zY3JlZW4iPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vMjU2eDUxMi83QjY4RUUvRkZGRkZGP3RleHQ9RHIuK0JhcmJhcmErU3Ryb3VkIiBhbHQ9IkRyLiBCYXJiYXJhIFN0cm91ZCI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1kZXRhaWxzIj4KICAgICAgICAgIDxoMz5Eci4gQmFyYmFyYSBTdHJvdWQ8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNhcmQtc3VidGl0bGUiPk1lZGljYWwgUHJvZmVzc2lvbmFsICYgSGVhbHRoY2FyZSBMZWFkZXI8L3A+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5kdXN0cnktdGFnIj7wn4+lIEhlYWx0aGNhcmUgJiBNZWRpY2luZTwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5NZWRpY2FsIGV4cGVydGlzZSBhbmQgYXV0aG9yaXR5PC9saT4KICAgICAgICAgICAgPGxpPlBhdGllbnQtY2VudGVyZWQgY2FyZSBwaGlsb3NvcGh5PC9saT4KICAgICAgICAgICAgPGxpPkhlYWx0aGNhcmUgaW5ub3ZhdGlvbiBhZHZvY2F0ZTwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb25zIj4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2RyLWJhcmJhcmEtc3Ryb3VkLTA2MjE2MjIyMC8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnRuIGJ0bi12aWV3Ij5WaWV3IFByb2ZpbGU8L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nP3RpZXI9cHJlbWl1bSIgY2xhc3M9ImJ0biBidG4tZ2V0Ij5HZXQgVGhpcyBTdHlsZTwvYT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gQ0FSRCA1IC0gTFlOTiBOQUtBQlVHTyAtLT4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1zaG93Y2FzZSBmYWRlLWluIiBkYXRhLWNhdGVnb3J5PSJidXNpbmVzcyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLXByb2Zlc3Npb25hbCI+UHJvZmVzc2lvbmFsPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtbW9ja3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtc2NyZWVuIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1Nng1MTIvMGY3NjZlL0ZGRkZGRj90ZXh0PUx5bm4rTmFrYWJ1Z28iIGFsdD0iTHlubiBOYWthYnVnbyI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1kZXRhaWxzIj4KICAgICAgICAgIDxoMz5MeW5uIE5ha2FidWdvPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5FbnRyZXByZW5ldXIgJiBDb21tdW5pdHkgTGVhZGVyPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+agCBFbnRyZXByZW5ldXJzaGlwICYgSW5ub3ZhdGlvbjwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5Db2hvcnQgUGlvbmVlciAtIE1lbnRyeDwvbGk+CiAgICAgICAgICAgIDxsaT5CdWlsZGluZyBzdXN0YWluYWJsZSBidXNpbmVzc2VzPC9saT4KICAgICAgICAgICAgPGxpPkNvbW11bml0eSBlbXBvd2VybWVudCBhZHZvY2F0ZTwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb25zIj4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2x5bm4tbmFrYWJ1Z28vIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tdmlldyI+Q29ubmVjdDwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmc/dGllcj1wcm9mZXNzaW9uYWwiIGNsYXNzPSJidG4gYnRuLWdldCI+R2V0IFRoaXMgU3R5bGU8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgNiAtIE5BS0lHQU5EQSBSSVRBSCAtLT4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1zaG93Y2FzZSBmYWRlLWluIiBkYXRhLWNhdGVnb3J5PSJidXNpbmVzcyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLXByb2Zlc3Npb25hbCI+UHJvZmVzc2lvbmFsPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtbW9ja3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtc2NyZWVuIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1Nng1MTIvMGY3NjZlL0ZGRkZGRj90ZXh0PU5ha2lnYW5kYStSaXRhaCIgYWx0PSJOYWtpZ2FuZGEgUml0YWgiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+TmFraWdhbmRhIFJpdGFoPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5WaXNpb25hcnkgRW50cmVwcmVuZXVyPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+SoSBCdXNpbmVzcyBTdHJhdGVneSAmIERldmVsb3BtZW50PC9zcGFuPgogICAgICAgICAgPHVsIGNsYXNzPSJmZWF0dXJlcy1saXN0Ij4KICAgICAgICAgICAgPGxpPkNvaG9ydCBWaXNpb25hcnkgLSBNZW50cng8L2xpPgogICAgICAgICAgICA8bGk+U3RyYXRlZ2ljIGJ1c2luZXNzIHBvc2l0aW9uaW5nPC9saT4KICAgICAgICAgICAgPGxpPklubm92YXRpdmUgbWFya2V0IHNvbHV0aW9uczwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb25zIj4KICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL25ha2lnYW5kYS1yaXRhaC8iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iYnRuIGJ0bi12aWV3Ij5WaWV3IExpbmtlZEluPC9hPgogICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZz90aWVyPXByb2Zlc3Npb25hbCIgY2xhc3M9ImJ0biBidG4tZ2V0Ij5HZXQgVGhpcyBTdHlsZTwvYT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gQ0FSRCA3IC0gVEVORE8gVEFMSVEgKElOVEVSTikgLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iYnVzaW5lc3MgdGVjaCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLWVzc2VudGlhbCI+WW91dGggRnV0dXJlcHJlbmV1cjwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyLzRBOTBFMi9GRkZGRkY/dGV4dD1UZW5kbytUYWxpcSIgYWx0PSJUZW5kbyBUYWxpcSI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1kZXRhaWxzIj4KICAgICAgICAgIDxoMz5UZW5kbyBUYWxpcTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+RGlnaXRhbCBNYXJrZXRpbmcgSW50ZXJuIHwgTmV4dC1HZW4gTGVhZGVyPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+MsSBZb3V0aCBFbnRyZXByZW5ldXJzaGlwICYgRGV2ZWxvcG1lbnQ8L3NwYW4+CiAgICAgICAgICA8dWwgY2xhc3M9ImZlYXR1cmVzLWxpc3QiPgogICAgICAgICAgICA8bGk+MjAyNS0yMDM2IFRhbGVudCBQaXBlbGluZSBtZW1iZXI8L2xpPgogICAgICAgICAgICA8bGk+SGFuZHMtb24gZGlnaXRhbCBtYXJrZXRpbmcgdHJhaW5pbmc8L2xpPgogICAgICAgICAgICA8bGk+QnVpbGRpbmcgQWZyaWNhJ3MgZGlnaXRhbCBmdXR1cmU8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9pbi90ZW5kby10YWxpcS01YTY2YjAyYmIvIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ0biBidG4tdmlldyI+Q29ubmVjdDwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmc/dGllcj1lc3NlbnRpYWwiIGNsYXNzPSJidG4gYnRuLWdldCI+R2V0IFRoaXMgU3R5bGU8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8IS0tIENBUkQgOCAtIEtBTlRVQ0hJIE1BTEVHRSAtLT4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1zaG93Y2FzZSBmYWRlLWluIiBkYXRhLWNhdGVnb3J5PSJhZ3JpY3VsdHVyZSB0ZWNoIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWltYWdlIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aWVyLWJhZGdlIHRpZXItcHJvZmVzc2lvbmFsIj5Qcm9mZXNzaW9uYWw8L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1tb2NrdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1zY3JlZW4iPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vMjU2eDUxMi8wMEM5QTcvRkZGRkZGP3RleHQ9S2FudHVjaGkrTWFsZWdlIiBhbHQ9IkthbnR1Y2hpIE1hbGVnZSI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1kZXRhaWxzIj4KICAgICAgICAgIDxoMz5LYW50dWNoaSBNYWxlZ2U8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNhcmQtc3VidGl0bGUiPlN1c3RhaW5hYmxlIEFncmljdWx0dXJlIElubm92YXRvcjwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfjL4gQWdyaVRlY2ggJiBTdXN0YWluYWJpbGl0eTwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5BZ3JpVGVjaCBTb2x1dGlvbnMgRWFzdCBBZnJpY2E8L2xpPgogICAgICAgICAgICA8bGk+RmVlZGluZyB0aGUgZnV0dXJlIHRocm91Z2ggc21hcnQgZmFybWluZzwvbGk+CiAgICAgICAgICAgIDxsaT5TdXN0YWluYWJsZSBhZ3JpY3VsdHVyZSBwcmFjdGljZXM8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJidG4gYnRuLXZpZXciPkNvbWluZyBTb29uPC9hPgogICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZz90aWVyPXByb2Zlc3Npb25hbCIgY2xhc3M9ImJ0biBidG4tZ2V0Ij5HZXQgVGhpcyBTdHlsZTwvYT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gQ0FSRCA5IC0gU09QSElBIE5BTUFZQU5KQSAtLT4KICAgICAgPGRpdiBjbGFzcz0iY2FyZC1zaG93Y2FzZSBmYWRlLWluIiBkYXRhLWNhdGVnb3J5PSJlZHVjYXRpb24gdGVjaCI+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1pbWFnZSI+CiAgICAgICAgICA8c3BhbiBjbGFzcz0idGllci1iYWRnZSB0aWVyLXByb2Zlc3Npb25hbCI+UHJvZmVzc2lvbmFsPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtbW9ja3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtc2NyZWVuIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1Nng1MTIvN0I2OEVFL0ZGRkZGRj90ZXh0PVNvcGhpYStOYW1heWFuamEiIGFsdD0iU29waGlhIE5hbWF5YW5qYSI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1kZXRhaWxzIj4KICAgICAgICAgIDxoMz5Tb3BoaWEgTmFtYXlhbmphPC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjYXJkLXN1YnRpdGxlIj5FZHVjYXRpb24gVGVjaG5vbG9neSBQaW9uZWVyPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+TmiBFZFRlY2ggJiBMZWFybmluZyBJbm5vdmF0aW9uPC9zcGFuPgogICAgICAgICAgPHVsIGNsYXNzPSJmZWF0dXJlcy1saXN0Ij4KICAgICAgICAgICAgPGxpPkxlYXJuIEFmcmljYSBFZFRlY2g8L2xpPgogICAgICAgICAgICA8bGk+VHJhbnNmb3JtaW5nIGVkdWNhdGlvbiwgb25lIGNsYXNzcm9vbSBhdCBhIHRpbWU8L2xpPgogICAgICAgICAgICA8bGk+RGlnaXRhbCBsZWFybmluZyBzb2x1dGlvbnMgZm9yIEFmcmljYTwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1hY3Rpb25zIj4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImJ0biBidG4tdmlldyI+Q29taW5nIFNvb248L2E+CiAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nP3RpZXI9cHJvZmVzc2lvbmFsIiBjbGFzcz0iYnRuIGJ0bi1nZXQiPkdldCBUaGlzIFN0eWxlPC9hPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBDQVJEIDEwIC0gQUJEVUwgTUFMSUsgREVNQkUgLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iZmluYW5jZSB0ZWNoIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWltYWdlIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aWVyLWJhZGdlIHRpZXItcHJlbWl1bSI+UHJlbWl1bTwvc3Bhbj4KICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLW1vY2t1cCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBob25lLXNjcmVlbiI+CiAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vdmlhLnBsYWNlaG9sZGVyLmNvbS8yNTZ4NTEyL0ZGNkIzNS9GRkZGRkY/dGV4dD1BYmR1bCtNYWxpaytEZW1iZSIgYWx0PSJBYmR1bCBNYWxpayBEZW1iZSI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1kZXRhaWxzIj4KICAgICAgICAgIDxoMz5BYmR1bCBNYWxpayBEZW1iZTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY2FyZC1zdWJ0aXRsZSI+RmludGVjaCBJbm5vdmF0b3IgJiBGaW5hbmNpYWwgSW5jbHVzaW9uIEFkdm9jYXRlPC9wPgogICAgICAgICAgPHNwYW4gY2xhc3M9ImluZHVzdHJ5LXRhZyI+8J+SsyBGaW50ZWNoICYgRmluYW5jaWFsIFNlcnZpY2VzPC9zcGFuPgogICAgICAgICAgPHVsIGNsYXNzPSJmZWF0dXJlcy1saXN0Ij4KICAgICAgICAgICAgPGxpPk1vYmlsZSBNb25leSBTb2x1dGlvbnM8L2xpPgogICAgICAgICAgICA8bGk+QmFua2luZyB0aGUgdW5iYW5rZWQgYWNyb3NzIEVhc3QgQWZyaWNhPC9saT4KICAgICAgICAgICAgPGxpPkZpbmFuY2lhbCBpbmNsdXNpb24gdGhyb3VnaCB0ZWNobm9sb2d5PC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWFjdGlvbnMiPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iYnRuIGJ0bi12aWV3Ij5Db21pbmcgU29vbjwvYT4KICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmc/dGllcj1wcmVtaXVtIiBjbGFzcz0iYnRuIGJ0bi1nZXQiPkdldCBUaGlzIFN0eWxlPC9hPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPCEtLSBDQVJEIDExIC0gTUFMQUlLQSBNSVJFTUJFIC0tPgogICAgICA8ZGl2IGNsYXNzPSJjYXJkLXNob3djYXNlIGZhZGUtaW4iIGRhdGEtY2F0ZWdvcnk9ImNyZWF0aXZlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJjYXJkLWltYWdlIj4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0aWVyLWJhZGdlIHRpZXItcHJvZmVzc2lvbmFsIj5Qcm9mZXNzaW9uYWw8L3NwYW4+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1tb2NrdXAiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJwaG9uZS1zY3JlZW4iPgogICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL3ZpYS5wbGFjZWhvbGRlci5jb20vMjU2eDUxMi9GRjZCMzUvRkZGRkZGP3RleHQ9TWFsYWlrYStNaXJlbWJlIiBhbHQ9Ik1hbGFpa2EgTWlyZW1iZSI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iY2FyZC1kZXRhaWxzIj4KICAgICAgICAgIDxoMz5NYWxhaWthIE1pcmVtYmU8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNhcmQtc3VidGl0bGUiPkNyZWF0aXZlIERpcmVjdG9yICYgQnJhbmQgU3RyYXRlZ2lzdDwvcD4KICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbmR1c3RyeS10YWciPvCfjqggQ3JlYXRpdmUgSW5kdXN0cmllcyAmIERlc2lnbjwvc3Bhbj4KICAgICAgICAgIDx1bCBjbGFzcz0iZmVhdHVyZXMtbGlzdCI+CiAgICAgICAgICAgIDxsaT5NaXJlbWJlIENyZWF0aXZlIFN0dWRpbzwvbGk+CiAgICAgICAgICAgIDxsaT5EZXNpZ25pbmcgQWZyaWNhJ3MgdmlzdWFsIGZ1dHVyZTwvbGk+CiAgICAgICAgICAgIDxsaT5CcmFuZCBpZGVudGl0eSBhbmQgY3JlYXRpdmUgc3RyYXRlZ3k8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJidG4gYnRuLXZpZXciPkNvbWluZyBTb29uPC9hPgogICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZz90aWVyPXByb2Zlc3Npb25hbCIgY2xhc3M9ImJ0biBidG4tZ2V0Ij5HZXQgVGhpcyBTdHlsZTwvYT4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDwhLS0gQ0FSRCAxMiAtIFBMQUNFSE9MREVSIChZT1VSIENBUkQgSEVSRSkgLS0+CiAgICAgIDxkaXYgY2xhc3M9ImNhcmQtc2hvd2Nhc2UgZmFkZS1pbiIgZGF0YS1jYXRlZ29yeT0iYnVzaW5lc3MiPgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtaW1hZ2UiPgogICAgICAgICAgPHNwYW4gY2xhc3M9InRpZXItYmFkZ2UgdGllci1lc3NlbnRpYWwiPkpvaW4gVXMhPC9zcGFuPgogICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtbW9ja3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icGhvbmUtc2NyZWVuIj4KICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly92aWEucGxhY2Vob2xkZXIuY29tLzI1Nng1MTIvRkZENzAwLzAwMUYzRj90ZXh0PVlvdXIrQ2FyZCtIZXJlIiBhbHQ9IkpvaW4gdGhlIEdhbGxlcnkiPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8aDM+WW91ciBOYW1lIEhlcmU8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNhcmQtc3VidGl0bGUiPkpvaW4gT3VyIEZvdW5kaW5nIE1lbWJlcnM8L3A+CiAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5kdXN0cnktdGFnIj7wn4yfIEJldGEgUHJvZ3JhbSBPcGVuPC9zcGFuPgogICAgICAgICAgPHVsIGNsYXNzPSJmZWF0dXJlcy1saXN0Ij4KICAgICAgICAgICAgPGxpPkJlIHBhcnQgb2Ygb3VyIGZvdW5kaW5nIGdhbGxlcnk8L2xpPgogICAgICAgICAgICA8bGk+R2V0IGZlYXR1cmVkIHdpdGggQWZyaWNhJ3MgYmVzdDwvbGk+CiAgICAgICAgICAgIDxsaT5TdGFuZCBvdXQgd2l0aCB5b3VyIG93biBkaWdpdGFsIGNhcmQ8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICAgIDxkaXYgY2xhc3M9ImNhcmQtYWN0aW9ucyI+CiAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0iYnRuIGJ0bi12aWV3Ij5Kb2luIHRoZSBHYWxsZXJ5PC9hPgogICAgICAgICAgICA8YSBocmVmPSIvY29udGFjdCIgY2xhc3M9ImJ0biBidG4tZ2V0Ij5BcHBseSBOb3c8L2E+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwhLS0gRkVBVFVSRUQgU0VDVElPTiAtLT4KICA8c2VjdGlvbiBjbGFzcz0iZmVhdHVyZWQtc2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlZC1jb250YWluZXIiPgogICAgICA8aDI+V2h5IFRoZXNlIENhcmRzIEdldCBSZXN1bHRzPC9oMj4KICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZWQtZ3JpZCI+CiAgICAgICAgPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAycmVtOyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMyk7IGJvcmRlci1yYWRpdXM6IDIwcHg7Ij4KICAgICAgICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogM3JlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsiPvCfk7E8L2Rpdj4KICAgICAgICAgIDxoMyBzdHlsZT0iY29sb3I6IHZhcigtLW5hdnkpOyBtYXJnaW4tYm90dG9tOiAxcmVtOyI+TW9iaWxlLUZpcnN0PC9oMz4KICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogdmFyKC0tbmF2eSk7IG9wYWNpdHk6IDAuOTsiPkRlc2lnbmVkIGZvciBob3cgQWZyaWNhIHVzZXMgcGhvbmVzLiBPbmUgdGFwIG9wZW5zIGV2ZXJ5dGhpbmcuPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMnJlbTsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjMpOyBib3JkZXItcmFkaXVzOiAyMHB4OyI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDNyZW07IG1hcmdpbi1ib3R0b206IDFyZW07Ij7wn46oPC9kaXY+CiAgICAgICAgICA8aDMgc3R5bGU9ImNvbG9yOiB2YXIoLS1uYXZ5KTsgbWFyZ2luLWJvdHRvbTogMXJlbTsiPllvdXIgUGVyc29uYWxpdHk8L2gzPgogICAgICAgICAgPHAgc3R5bGU9ImNvbG9yOiB2YXIoLS1uYXZ5KTsgb3BhY2l0eTogMC45OyI+Q29sb3JzLCBzdHlsZSwgYW5kIGNvbnRlbnQgdGhhdCBtYWtlIFlPVSBzdGFuZCBvdXQuPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogMnJlbTsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjMpOyBib3JkZXItcmFkaXVzOiAyMHB4OyI+CiAgICAgICAgICA8ZGl2IHN0eWxlPSJmb250LXNpemU6IDNyZW07IG1hcmdpbi1ib3R0b206IDFyZW07Ij7wn5OKPC9kaXY+CiAgICAgICAgICA8aDMgc3R5bGU9ImNvbG9yOiB2YXIoLS1uYXZ5KTsgbWFyZ2luLWJvdHRvbTogMXJlbTsiPlRyYWNrIFJlc3VsdHM8L2gzPgogICAgICAgICAgPHAgc3R5bGU9ImNvbG9yOiB2YXIoLS1uYXZ5KTsgb3BhY2l0eTogMC45OyI+U2VlIHdobyB2aWV3cyB5b3VyIGNhcmQgYW5kIHdoYXQgdGhleSBjbGljayBvbi48L3A+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8IS0tIENUQSBTRUNUSU9OIC0tPgogIDxzZWN0aW9uIGNsYXNzPSJjdGEtc2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJjdGEtY29udGFpbmVyIj4KICAgICAgPGgyPlJlYWR5IHRvIEpvaW4gT3VyIEdhbGxlcnk/PC9oMj4KICAgICAgPHA+QmUgcGFydCBvZiBBZnJpY2EncyBwaW9uZWVyaW5nIGRpZ2l0YWwgZW50cmVwcmVuZXVycyB3aXRoIGEgY2FyZCB0aGF0IGFjdHVhbGx5IGdldHMgc2hhcmVkLjwvcD4KICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJidG4tY3RhIj5DaG9vc2UgWW91ciBDYXJkIFRpZXIg4oaSPC9hPgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8IS0tIEZPT1RFUiAtLT4KICA8Zm9vdGVyIGNsYXNzPSJmb290ZXIiPgogICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbnRhaW5lciI+CiAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1ncmlkIj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItY29sdW1uIj4KICAgICAgICAgIDxoND5IYW5kc2hha2UuYWZyaWNhPC9oND4KICAgICAgICAgIDxwIHN0eWxlPSJvcGFjaXR5OiAwLjk7Ij5Qcm9mZXNzaW9uYWwgZGlnaXRhbCBjYXJkcyBmb3IgQWZyaWNhbiBlbnRyZXByZW5ldXJzLjwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJmb290ZXItY29sdW1uIj4KICAgICAgICAgIDxoND5RdWljayBMaW5rczwvaDQ+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIvIj5Ib21lPC9hPjwvbGk+CiAgICAgICAgICAgIDxsaT48YSBocmVmPSIvZ2FsbGVyeSI+R2FsbGVyeTwvYT48L2xpPgogICAgICAgICAgICA8bGk+PGEgaHJlZj0iL3ByaWNpbmciPlByaWNpbmc8L2E+PC9saT4KICAgICAgICAgICAgPGxpPjxhIGhyZWY9Ii9hYm91dCI+QWJvdXQ8L2E+PC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyLWNvbHVtbiI+CiAgICAgICAgICA8aDQ+R2V0IEluIFRvdWNoPC9oND4KICAgICAgICAgIDxwIHN0eWxlPSJvcGFjaXR5OiAwLjk7Ij7wn5OnIGhlbGxvQGhhbmRzaGFrZS5hZnJpY2E8L3A+CiAgICAgICAgICA8cCBzdHlsZT0ib3BhY2l0eTogMC45OyI+8J+TsSBXaGF0c0FwcDwvcD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9ImZvb3Rlci1ib3R0b20iPgogICAgICAgIDxwPsKpIDIwMjUgSGFuZHNoYWtlLmFmcmljYSDigKIgQWxsIFJpZ2h0cyBSZXNlcnZlZDwvcD4KICAgICAgICA8cD5Qb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vZHluYW1pY3BhcmFkaWdtcy5pbyI+RHluYW1pYyBQYXJhZGlnbXM8L2E+PC9wPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZm9vdGVyPgoKICA8IS0tIFNDUklQVFMgLS0+CiAgPHNjcmlwdD4KICAgIC8vIEFOVEktU0NSRUVOU0hPVCAmIENPUFkgUFJPVEVDVElPTgogICAgLy8gRGlzYWJsZSByaWdodC1jbGljayBjb250ZXh0IG1lbnUKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgZSA9PiBlLnByZXZlbnREZWZhdWx0KCkpOwogICAgCiAgICAvLyBEaXNhYmxlIGNvbW1vbiBzY3JlZW5zaG90IHNob3J0Y3V0cwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGZ1bmN0aW9uKGUpIHsKICAgICAgLy8gRjEyIChEZXZUb29scykKICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMTIzKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICAvLyBDdHJsK1NoaWZ0K0kgKERldlRvb2xzKQogICAgICBpZiAoZS5jdHJsS2V5ICYmIGUuc2hpZnRLZXkgJiYgZS5rZXlDb2RlID09PSA3MykgewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgLy8gQ3RybCtTaGlmdCtDIChFbGVtZW50IGluc3BlY3RvcikKICAgICAgaWYgKGUuY3RybEtleSAmJiBlLnNoaWZ0S2V5ICYmIGUua2V5Q29kZSA9PT0gNjcpIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIC8vIEN0cmwrU2hpZnQrSiAoQ29uc29sZSkKICAgICAgaWYgKGUuY3RybEtleSAmJiBlLnNoaWZ0S2V5ICYmIGUua2V5Q29kZSA9PT0gNzQpIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIC8vIENtZCtPcHRpb24rSSAoRGV2VG9vbHMgb24gTWFjKQogICAgICBpZiAoZS5tZXRhS2V5ICYmIGUuYWx0S2V5ICYmIGUua2V5Q29kZSA9PT0gNzMpIHsKICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIC8vIFByaW50IFNjcmVlbgogICAgICBpZiAoZS5rZXlDb2RlID09PSA0NCkgewogICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0pOwogICAgCiAgICAvLyBEaXNhYmxlIHRleHQgc2VsZWN0aW9uCiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdzZWxlY3RzdGFydCcsIGUgPT4gZS5wcmV2ZW50RGVmYXVsdCgpKTsKICAgIAogICAgLy8gRGlzYWJsZSBkcmFnCiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdkcmFnc3RhcnQnLCBlID0+IGUucHJldmVudERlZmF1bHQoKSk7CiAgICAKICAgIC8vIFdhdGVybWFyayBvdmVybGF5IChvcHRpb25hbCAtIHVuY29tbWVudCB0byBlbmFibGUpCiAgICAvKgogICAgZnVuY3Rpb24gYWRkV2F0ZXJtYXJrKCkgewogICAgICBjb25zdCB3YXRlcm1hcmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd2F0ZXJtYXJrLnN0eWxlLmNzc1RleHQgPSBgCiAgICAgICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgIHRvcDogNTAlOwogICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKSByb3RhdGUoLTQ1ZGVnKTsKICAgICAgICBmb250LXNpemU6IDcycHg7CiAgICAgICAgb3BhY2l0eTogMC4wNTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB6LWluZGV4OiA5OTk5OwogICAgICAgIGNvbG9yOiAjMDAxRjNGOwogICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgIGA7CiAgICAgIHdhdGVybWFyay50ZXh0Q29udGVudCA9ICdIQU5EU0hBS0UuQUZSSUNBJzsKICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh3YXRlcm1hcmspOwogICAgfQogICAgYWRkV2F0ZXJtYXJrKCk7CiAgICAqLwogICAgCiAgICAvLyBNb2JpbGUgbWVudQogICAgZnVuY3Rpb24gdG9nZ2xlTWVudSgpIHsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25hdkxpbmtzJykuY2xhc3NMaXN0LnRvZ2dsZSgnYWN0aXZlJyk7CiAgICB9CiAgICAKICAgIC8vIEZpbHRlciBmdW5jdGlvbmFsaXR5CiAgICBmdW5jdGlvbiBmaWx0ZXJDYXJkcyhjYXRlZ29yeSkgewogICAgICBjb25zdCBjYXJkcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jYXJkLXNob3djYXNlJyk7CiAgICAgIGNvbnN0IGJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmlsdGVyLWJ0bicpOwogICAgICAKICAgICAgLy8gVXBkYXRlIGFjdGl2ZSBidXR0b24KICAgICAgYnV0dG9ucy5mb3JFYWNoKGJ0biA9PiBidG4uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykpOwogICAgICBldmVudC50YXJnZXQuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7CiAgICAgIAogICAgICAvLyBGaWx0ZXIgY2FyZHMKICAgICAgY2FyZHMuZm9yRWFjaChjYXJkID0+IHsKICAgICAgICBpZiAoY2F0ZWdvcnkgPT09ICdhbGwnIHx8IGNhcmQuZGF0YXNldC5jYXRlZ29yeS5pbmNsdWRlcyhjYXRlZ29yeSkpIHsKICAgICAgICAgIGNhcmQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGNhcmQuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpLCAxMDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjYXJkLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICAgIAogICAgLy8gU2Nyb2xsIGFuaW1hdGlvbnMKICAgIGNvbnN0IG9ic2VydmVyT3B0aW9ucyA9IHsKICAgICAgdGhyZXNob2xkOiAwLjEsCiAgICAgIHJvb3RNYXJnaW46ICcwcHggMHB4IC0xMDBweCAwcHgnCiAgICB9OwogICAgCiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlbnRyaWVzKSB7CiAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7CiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7CiAgICAgICAgICBlbnRyeS50YXJnZXQuY2xhc3NMaXN0LmFkZCgndmlzaWJsZScpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LCBvYnNlcnZlck9wdGlvbnMpOwogICAgCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmFkZS1pbicpLmZvckVhY2goZWwgPT4gb2JzZXJ2ZXIub2JzZXJ2ZShlbCkpOwogIDwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5mYWRlLWluJykuZm9yRWFjaChlbCA9PiBvYnNlcnZlci5vYnNlcnZlKGVsKSk7CiAgPC9zY3JpcHQ+Cgo8L2JvZHk+CjwvaHRtbD4=","embed":""}
Our Founding Members Gallery
Meet the pioneering entrepreneurs building Africa's digital future. Real professionals. Real impact.
Filter by Industry:
🌟 Founder
Professional
Barbara Nantongo
Founder | Smart Kitchen Solutions
🍳 Kitchen Innovation & Business- Cohort Pioneer - Mentrx
- Transforming kitchens across East Africa
- Smart solutions for modern living
Professional
Teddy Banks Nakitto
Entrepreneur & Business Leader
💼 Business Services & Consulting- Cohort Leader - TASN
- Empowering African entrepreneurs
- Strategic business development
Premium
Dr. Barbara Stroud
Medical Professional & Healthcare Leader
🏥 Healthcare & Medicine- Medical expertise and authority
- Patient-centered care philosophy
- Healthcare innovation advocate
Professional
Lynn Nakabugo
Entrepreneur & Community Leader
🚀 Entrepreneurship & Innovation- Cohort Pioneer - Mentrx
- Building sustainable businesses
- Community empowerment advocate
Professional
Nakiganda Ritah
Visionary Entrepreneur
💡 Business Strategy & Development- Cohort Visionary - Mentrx
- Strategic business positioning
- Innovative market solutions
Youth Futurepreneur
Tendo Taliq
Digital Marketing Intern | Next-Gen Leader
🌱 Youth Entrepreneurship & Development- 2025-2036 Talent Pipeline member
- Hands-on digital marketing training
- Building Africa's digital future
Professional
Kantuchi Malege
Sustainable Agriculture Innovator
🌾 AgriTech & Sustainability- AgriTech Solutions East Africa
- Feeding the future through smart farming
- Sustainable agriculture practices
Professional
Sophia Namayanja
Education Technology Pioneer
📚 EdTech & Learning Innovation- Learn Africa EdTech
- Transforming education, one classroom at a time
- Digital learning solutions for Africa
Premium
Abdul Malik Dembe
Fintech Innovator & Financial Inclusion Advocate
💳 Fintech & Financial Services- Mobile Money Solutions
- Banking the unbanked across East Africa
- Financial inclusion through technology
Professional
Malaika Mirembe
Creative Director & Brand Strategist
🎨 Creative Industries & Design- Mirembe Creative Studio
- Designing Africa's visual future
- Brand identity and creative strategy
Join Us!
Your Name Here
Join Our Founding Members
🌟 Beta Program Open- Be part of our founding gallery
- Get featured with Africa's best
- Stand out with your own digital card
Why These Cards Get Results
📱
Mobile-First
Designed for how Africa uses phones. One tap opens everything.
🎨
Your Personality
Colors, style, and content that make YOU stand out.
📊
Track Results
See who views your card and what they click on.
Ready to Join Our Gallery?
Be part of Africa's pioneering digital entrepreneurs with a card that actually gets shared.
Choose Your Card Tier →