PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+Q29kaW5nIEFJIC0gV3JpdGVjcmVhbSBBSTwvdGl0bGU+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDx0aXRsZT5BSS1HZW5lcmF0ZWQgQWQgQ2FtcGFpZ24gRGFzaGJvYXJkcyDigJQgUmVhbC10aW1lIEFuYWx5dGljcywgQXR0cmlidXRpb24gJiBST0FTPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIgogICAgICAgIGNvbnRlbnQ9IkdlbmVyYXRlIGRlcGxveS1yZWFkeSBhZCBjYW1wYWlnbiBkYXNoYm9hcmRzIHdpdGggQUk6IG11bHRpLWNoYW5uZWwgYW5hbHl0aWNzLCByZWFsLXRpbWUgUk9BUywgY29udmVyc2lvbiBhdHRyaWJ1dGlvbiwgY3JlYXRpdmUgQS9CIHRlc3RpbmcgYW5kIGF1dG9tYXRlZCBpbnNpZ2h0cyB0byBvcHRpbWl6ZSBhZCBzcGVuZC4iIC8+CiAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIKICAgICAgICBjb250ZW50PSJBSSBhZCBkYXNoYm9hcmQsIGFkIGNhbXBhaWduIGRhc2hib2FyZCwgUk9BUyBkYXNoYm9hcmQsIG11bHRpLWNoYW5uZWwgYW5hbHl0aWNzLCBjb252ZXJzaW9uIGF0dHJpYnV0aW9uLCBjcmVhdGl2ZSBBL0IgdGVzdGluZywgbWFya2V0aW5nIGRhc2hib2FyZCwgYXV0b21hdGVkIGluc2lnaHRzLCBhZCBwZXJmb3JtYW5jZSBtb25pdG9yaW5nLCBkZXBsb3ktcmVhZHkgZGFzaGJvYXJkcyIgLz4KICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iV3JpdGVjcmVhbSBBSSIgLz4KICAgIDxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0iaW5kZXgsIGZvbGxvdywgbWF4LXNuaXBwZXQ6LTEsIG1heC1pbWFnZS1wcmV2aWV3OmxhcmdlLCBtYXgtdmlkZW8tcHJldmlldzotMSIgLz4KICAgIDxtZXRhIG5hbWU9Imxhbmd1YWdlIiBjb250ZW50PSJFbmdsaXNoIiAvPgogICAgPG1ldGEgbmFtZT0iZGlzdHJpYnV0aW9uIiBjb250ZW50PSJnbG9iYWwiIC8+CiAgICA8bWV0YSBuYW1lPSJyYXRpbmciIGNvbnRlbnQ9IkdlbmVyYWwiIC8+CiAgICA8bWV0YSBuYW1lPSJyZXZpc2l0LWFmdGVyIiBjb250ZW50PSI3IGRheXMiIC8+CiAgICA8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzBGMTcyQSIgLz4KICAgIDxtZXRhIG5hbWU9ImFwcGxpY2F0aW9uLW5hbWUiIGNvbnRlbnQ9IkFJIEFkIENhbXBhaWduIERhc2hib2FyZHMgR2VuZXJhdG9yIiAvPgoKICAgIDwhLS0gQ2Fub25pY2FsIC0tPgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL2FpLWdlbmVyYXRlZC1hZC1jYW1wYWlnbi1kYXNoYm9hcmRzLyIgLz4KCiAgICA8IS0tIEZhdmljb25zIC0tPgogICAgPGxpbmsgcmVsPSJpY29uIiBocmVmPSIvZmF2aWNvbi5pY28iIC8+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIHNpemVzPSIxODB4MTgwIiBocmVmPSIvYXBwbGUtdG91Y2gtaWNvbi5wbmciIC8+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjMyeDMyIiBocmVmPSIvZmF2aWNvbi0zMngzMi5wbmciIC8+CiAgICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3BuZyIgc2l6ZXM9IjE2eDE2IiBocmVmPSIvZmF2aWNvbi0xNngxNi5wbmciIC8+CgogICAgPCEtLSBPcGVuIEdyYXBoIC8gRmFjZWJvb2sgLS0+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0id2Vic2l0ZSIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL2FpLWdlbmVyYXRlZC1hZC1jYW1wYWlnbi1kYXNoYm9hcmRzLyIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iQUktR2VuZXJhdGVkIEFkIENhbXBhaWduIERhc2hib2FyZHMg4oCUIFJlYWwtdGltZSBBbmFseXRpY3MgJiBBdHRyaWJ1dGlvbiIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIKICAgICAgICBjb250ZW50PSJBdXRvLWdlbmVyYXRlIHByb2R1Y3Rpb24tcmVhZHkgYWQgY2FtcGFpZ24gZGFzaGJvYXJkczogcmVhbC10aW1lIFJPQVMsIG11bHRpLWNoYW5uZWwgYXR0cmlidXRpb24sIEEvQiB0ZXN0aW5nIGFuYWx5c2lzIGFuZCBleHBvcnRhYmxlIHJlcG9ydHPigJRvcHRpbWl6ZWQgZm9yIG1hcmtldGVycyBhbmQgYWdlbmNpZXMuIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8xMC9haS1hZC1jYW1wYWlnbi1kYXNoYm9hcmRzLnBuZyIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IldyaXRlY3JlYW0gQUkiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6bG9jYWxlIiBjb250ZW50PSJlbl9VUyIgLz4KCiAgICA8IS0tIFR3aXR0ZXIgQ2FyZHMgLS0+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNhcmQiIGNvbnRlbnQ9InN1bW1hcnlfbGFyZ2VfaW1hZ2UiIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOnVybCIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vYWktZ2VuZXJhdGVkLWFkLWNhbXBhaWduLWRhc2hib2FyZHMvIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iQUktR2VuZXJhdGVkIEFkIENhbXBhaWduIERhc2hib2FyZHMg4oCUIFJlYWwtdGltZSBBbmFseXRpY3MgJiBBdHRyaWJ1dGlvbiIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24iCiAgICAgICAgY29udGVudD0iQnVpbGQgaW50ZWxsaWdlbnQgYWQgZGFzaGJvYXJkcyB3aXRoIEFJOiBtb25pdG9yIFJPQVMsIGF0dHJpYnV0ZSBjb252ZXJzaW9ucywgcnVuIGNyZWF0aXZlIEEvQiB0ZXN0cyBhbmQgZGVwbG95IHByb2R1Y3Rpb24tcmVhZHkgYW5hbHl0aWNzLiIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzEwL2FpLWFkLWNhbXBhaWduLWRhc2hib2FyZHMucG5nIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjpjcmVhdG9yIiBjb250ZW50PSJAV3JpdGVDcmVhbUFJIiAvPgoKICAgIDwhLS0gSW5zdGFncmFtIC0tPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnNlZV9hbHNvIiBjb250ZW50PSJodHRwczovL3d3dy5pbnN0YWdyYW0uY29tL3dyaXRlY3JlYW1haS8iIC8+CiAgICA8bWV0YSBuYW1lPSJpbnN0YWdyYW06c2l0ZSIgY29udGVudD0iQHdyaXRlY3JlYW1haSIgLz4KICAgIDxtZXRhIG5hbWU9Imluc3RhZ3JhbTppbWFnZSIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDMvbGVhcm4tYWkucG5nIiAvPgoKICAgIDwhLS0gQWRkaXRpb25hbCBTRU8gTWV0YSBUYWdzIC0tPgogICAgPG1ldGEgbmFtZT0iZ2VvLnJlZ2lvbiIgY29udGVudD0iVVMiIC8+CiAgICA8bWV0YSBuYW1lPSJnZW8ucGxhY2VuYW1lIiBjb250ZW50PSJOZXcgWW9yaywgVVNBIiAvPgogICAgPG1ldGEgbmFtZT0iZ2VvLnBvc2l0aW9uIiBjb250ZW50PSI0MC43MTI4Oy03NC4wMDYwIiAvPgogICAgPG1ldGEgbmFtZT0iSUNCTSIgY29udGVudD0iNDAuNzEyOCwgLTc0LjAwNjAiIC8+CiAgICA8bWV0YSBuYW1lPSJtb2JpbGUtd2ViLWFwcC1jYXBhYmxlIiBjb250ZW50PSJ5ZXMiIC8+CiAgICA8bWV0YSBuYW1lPSJIYW5kaGVsZEZyaWVuZGx5IiBjb250ZW50PSJ0cnVlIiAvPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIiAvPgoKICAgIDwhLS0gU2NoZW1hIE1hcmt1cCAoSlNPTi1MRCkgLS0+CiAgICA8c2NyaXB0IHR5cGU9ImFwcGxpY2F0aW9uL2xkK2pzb24iPgogIHsKICAgICJAY29udGV4dCI6ICJodHRwczovL3NjaGVtYS5vcmciLAogICAgIkB0eXBlIjogIlNvZnR3YXJlQXBwbGljYXRpb24iLAogICAgIm5hbWUiOiAiQUktR2VuZXJhdGVkIEFkIENhbXBhaWduIERhc2hib2FyZHMiLAogICAgInVybCI6ICJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS9haS1nZW5lcmF0ZWQtYWQtY2FtcGFpZ24tZGFzaGJvYXJkcy8iLAogICAgImRlc2NyaXB0aW9uIjogIkFJIHRvb2wgdGhhdCBnZW5lcmF0ZXMgZGVwbG95LXJlYWR5IGFkIGNhbXBhaWduIGRhc2hib2FyZHMgd2l0aCBtdWx0aS1jaGFubmVsIGFuYWx5dGljcywgUk9BUyByZXBvcnRpbmcsIGNvbnZlcnNpb24gYXR0cmlidXRpb24sIEEvQiB0ZXN0aW5nIGluc2lnaHRzIGFuZCBhdXRvbWF0ZWQgcmVjb21tZW5kYXRpb25zLiIsCiAgICAiYXBwbGljYXRpb25DYXRlZ29yeSI6ICJCdXNpbmVzc0FwcGxpY2F0aW9uIiwKICAgICJvcGVyYXRpbmdTeXN0ZW0iOiAiV2ViIiwKICAgICJhdXRob3IiOiB7ICJAdHlwZSI6ICJPcmdhbml6YXRpb24iLCAibmFtZSI6ICJXcml0ZWNyZWFtIEFJIiwgInVybCI6ICJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS8iIH0sCiAgICAiZmVhdHVyZUxpc3QiOiBbCiAgICAgICJNdWx0aS1jaGFubmVsIGFuYWx5dGljcyAoU2VhcmNoLCBTb2NpYWwsIERpc3BsYXksIEVtYWlsKSIsCiAgICAgICJSZWFsLXRpbWUgUk9BUyAmIHNwZW5kIG1vbml0b3JpbmciLAogICAgICAiTXVsdGktdG91Y2ggY29udmVyc2lvbiBhdHRyaWJ1dGlvbiIsCiAgICAgICJDcmVhdGl2ZSBBL0IgdGVzdGluZyByZXBvcnRpbmciLAogICAgICAiRXhwb3J0YWJsZSByZXBvcnRzICYgZGVwbG95LXJlYWR5IGNvZGUiLAogICAgICAiQXV0b21hdGVkIGluc2lnaHRzIGFuZCBhbm9tYWx5IGRldGVjdGlvbiIKICAgIF0KICB9CiAgPC9zY3JpcHQ+CgogICAgPCEtLSBGb250cyBhbmQgQ1NTIC0tPgogICAgPCEtLSA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iIC8+CiAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbiAvPgogIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9T3V0Zml0OndnaHRANDAwOzUwMDs2MDA7NzAwJmZhbWlseT1TcGFjZStHcm90ZXNrOndnaHRANDAwOzUwMDs2MDA7NzAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0IiAvPgogIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZm9udC1hd2Vzb21lLzYuMC4wL2Nzcy9hbGwubWluLmNzcyIgLz4gLS0+CiAgICA8c2NyaXB0IHR5cGU9ImltcG9ydG1hcCI+CiAgICAgIHsKICAgICAgICAiaW1wb3J0cyI6IHsKICAgICAgICAgICJyZWFjdCI6ICJodHRwczovL2VzbS5zaC9yZWFjdEAxOC4yLjAiLAogICAgICAgICAgInJlYWN0LWRvbSI6ICJodHRwczovL2VzbS5zaC9yZWFjdC1kb21AMTguMi4wIiwKICAgICAgICAgICJyZWFjdC1kb20vIjogImh0dHBzOi8vZXNtLnNoL3JlYWN0LWRvbUAxOC4yLjAvIiwKICAgICAgICAgICJAY29kZXNhbmRib3gvc2FuZHBhY2stcmVhY3QiOiAiaHR0cHM6Ly9lc20uc2gvQGNvZGVzYW5kYm94L3NhbmRwYWNrLXJlYWN0QDIuOC4wP2RlcHM9cmVhY3RAMTguMi4wJmRlcHM9cmVhY3QtZG9tQDE4LjIuMCIKICAgICAgICB9CiAgICAgIH0KICAgIDwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8va2l0LmZvbnRhd2Vzb21lLmNvbS9iYzA4MTc5MmQ0LmpzIiBjcm9zc29yaWdpbj0iYW5vbnltb3VzIj48L3NjcmlwdD4KCiAgICA8c3R5bGU+CiAgICAgICAgOnJvb3QgewogICAgICAgICAgICAtLXByaW1hcnktY29sb3I6ICMyZDJkMmQ7CiAgICAgICAgICAgIC0tYWNjZW50LWNvbG9yOiAjNGE5MGUyOwogICAgICAgICAgICAtLWJsdWUtY29sb3I6ICM0YTkwZTI7CgogICAgICAgICAgICAvKiBEYXJrIHRoZW1lIGNvbG9ycyAoZGVmYXVsdCBhbmQgb25seSB0aGVtZSkgKi8KICAgICAgICAgICAgLS1iZy1jb2xvcjogIzAwMDAwMDsKICAgICAgICAgICAgLS1zdXJmYWNlLWNvbG9yOiAjMmQyZDJkOwogICAgICAgICAgICAtLXRleHQtY29sb3I6ICNlMGUwZTA7CiAgICAgICAgICAgIC0tYm9yZGVyLWNvbG9yOiAjNDA0MDQwOwogICAgICAgICAgICAtLWlucHV0LWJnOiAjMmQyZDJkOwogICAgICAgICAgICAtLWlucHV0LWJvcmRlcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1waWxsLWJnOiAjMzMzMzMzOwogICAgICAgICAgICAtLWJ1dHRvbi1iZzogIzQwNDA0MDsKICAgICAgICAgICAgLS1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgICAgLS1oZWFkZXItYm9yZGVyOiAjNDA0MDQwOwogICAgICAgICAgICAtLWZvb3Rlci1iZzogIzJkMmQyZDsKICAgICAgICAgICAgLS1jYXJkLWJnOiAjMzMzMzMzOwogICAgICAgICAgICAtLWJnLXNlY29uZGFyeTogIzQ0NDQ0NDsKICAgICAgICAgICAgLS10ZXh0LXNlY29uZGFyeTogI2NjY2NjYzsKICAgICAgICAgICAgLS1ibHVlLWhvdmVyOiAjM2E3YmM4OwogICAgICAgIH0KCiAgICAgICAgLyogU2Nyb2xsYmFyIHdpZHRoICovCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhciB7CiAgICAgICAgICAgIHdpZHRoOiAxMnB4OwogICAgICAgIH0KCiAgICAgICAgLyogVHJhY2sgKGJhY2tncm91bmQpICovCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxYTFhMWE7CiAgICAgICAgICAgIC8qIGRhcmsgYmFja2dyb3VuZCAqLwogICAgICAgIH0KCiAgICAgICAgLyogSGFuZGxlICh0aHVtYikgKi8KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzU1NTsKICAgICAgICAgICAgLyogZGFyayBncmF5ICovCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB9CgogICAgICAgIC8qIEhhbmRsZSBvbiBob3ZlciAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNzc3OwogICAgICAgIH0KCiAgICAgICAgLyogQmFzZSBjaGF0IGJ1YmJsZSBzdHlsZXMgZm9yIGRhcmsgdGhlbWUgKi8KICAgICAgICAuY2hhdC1idWJibGUuYWkgewogICAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOwogICAgICAgICAgICAvKiBNb3JlIHNwZWNpZmljIHRoYW4gLS1zdXJmYWNlLWNvbG9yICovCiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzUwNTA1MDsKICAgICAgICAgICAgLyogTW9yZSBzcGVjaWZpYyB0aGFuIC0tYm9yZGVyLWNvbG9yICovCiAgICAgICAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHg7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuY2hhdC1idWJibGUuYWk6OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgICAgbGVmdDogLThweDsKICAgICAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMzYTNhM2E7CiAgICAgICAgICAgIC8qIE1hdGNoZXMgdGhlIGJ1YmJsZSBiYWNrZ3JvdW5kICovCiAgICAgICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigxMDAlIDAsIDAlIDEwMCUsIDEwMCUgMTAwJSk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmdpdGh1Yi1zdGFycywKICAgICAgICAuZ2l0aHViLWxhYmVsIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgIH0KCiAgICAgICAgLmJhZGdlLXRvZ2V0aGVyIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgfQoKICAgICAgICAqIHsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBmb250LWZhbWlseTogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBSb2JvdG8sIHNhbnMtc2VyaWY7CiAgICAgICAgfQoKICAgICAgICAvKiBXb3JkUHJlc3MgVGhlbWUgQ29tcGF0aWJpbGl0eSAtIEZ1bGwgUGFnZSBCYWNrZ3JvdW5kICovCiAgICAgICAgYm9keSwKICAgICAgICBodG1sIHsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIGNvbnRhaW5lciBhZGp1c3RtZW50cyAtIEZ1bGwgd2lkdGggKi8KICAgICAgICAuY29udGFpbmVyLAogICAgICAgIC5jb250YWluZXItZmx1aWQsCiAgICAgICAgLndyYXBwZXIsCiAgICAgICAgLmNvbnRlbnQsCiAgICAgICAgLm1haW4sCiAgICAgICAgLnNpdGUtY29udGVudCwKICAgICAgICAuZW50cnktY29udGVudCwKICAgICAgICAucGFnZS1jb250ZW50IHsKICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvb3RlciBmdWxsIHdpZHRoIG92ZXJyaWRlIGZvciBXb3JkUHJlc3MgY29udGFpbmVycyAqLwogICAgICAgICN3cmFwcGVyIC5mb290ZXIsIAogICAgICAgIC5mdXNpb24td3JhcHBlciAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tcGFnZS13cmFwcGVyIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1wYWdlLXdyYXBwZXItcm93IC5mb290ZXIsCiAgICAgICAgYm9keSAuZm9vdGVyLAogICAgICAgIGZvb3Rlci5mb290ZXIgewogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEFkZGl0aW9uYWwgV29yZFByZXNzIHdyYXBwZXIgb3ZlcnJpZGVzIGZvciBmb290ZXIgYXJlYSAqLwogICAgICAgICNtYWluIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1wYWdlLXdyYXBwZXIgLmZvb3RlciwKICAgICAgICAuZnVzaW9uLXdyYXBwZXIgLmZvb3RlciwKICAgICAgICAuZnVzaW9uLXBhZ2Utd3JhcHBlci1yb3cgLmZvb3RlciwKICAgICAgICAuZnVzaW9uLWJ1aWxkZXItcm93IC5mb290ZXIgewogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEVuc3VyZSBvdXIgY29udGVudCB3b3JrcyB3aXRoaW4gV29yZFByZXNzICovCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgICAgICAgICAgY29sb3I6ICNlMGUwZTA7CiAgICAgICAgfQoKICAgICAgICAvKiBGaXggaGVybyBzZWN0aW9uIGNvbnRlbnQgY2VudGVyaW5nIC0ga2VlcCBjb250ZW50IGNlbnRlcmVkIGJ1dCBiYWNrZ3JvdW5kIGZ1bGwtd2lkdGggKi8KICAgICAgICAuaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuaGVyby1jb250ZW50LAogICAgICAgIC5oZXJvLXRleHQgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogODAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGaXggc3RhciBsb2dvIHBvc2l0aW9uaW5nIC0ga2VlcCBpdCBjZW50ZXJlZCAqLwogICAgICAgIC5oZXJvLXNlY3Rpb24gaDEgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMTVweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tc2VjdGlvbiBwIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGaXggdGhlIGFjdHVhbCBpbnB1dCBjb250YWluZXIgY2xhc3NlcyBmcm9tIEhUTUwgKi8KICAgICAgICAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgICAgICAgICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDUwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmlucHV0LWNvbnRyb2xzLXJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgMTJweCAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDEycHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogNnB4IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHByb21wdCBpbnB1dCBzdHlsaW5nIHRvIG1hdGNoIG9yaWdpbmFsICovCiAgICAgICAgLnByb21wdC1pbnB1dCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSAhaW1wb3J0YW50OwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4IDEycHggMCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgICAgICByZXNpemU6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogNjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtaGVpZ2h0OiAyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKCgogICAgICAgIC8qIEZpeCBzdWdnZXN0ZWQgYXBwcyBzZWN0aW9uIC0gY2VudGVyZWQgd2l0aCBwcm9wZXIgd2lkdGggKi8KICAgICAgICAuc3VnZ2VzdGVkLWFwcHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnN1Z2dlc3RlZC1hcHAgewogICAgICAgICAgICBtYXJnaW46IDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IGZlYXR1cmVzIGdyaWQgLSAzIGNhcmRzIGluIGEgcm93LCBjZW50ZXJlZCAqLwogICAgICAgIC5mZWF0dXJlcy1ncmlkIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAyODBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtY2FyZCB7CiAgICAgICAgICAgIHdpZHRoOiAyODBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDI4MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgYWxsIHNlY3Rpb25zIGFyZSBwcm9wZXJseSBjZW50ZXJlZCAqLwogICAgICAgIC5mZWF0dXJlcy1zZWN0aW9uLAogICAgICAgIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICAucG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIC5kZW1vLXNlY3Rpb24sCiAgICAgICAgLmNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgIC50ZXN0aW1vbmlhbHMtc2VjdGlvbiwKICAgICAgICAuY3RhLXNlY3Rpb24gewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBXb3JkUHJlc3MgcGFnZS1zcGVjaWZpYyBzdHlsaW5nIC0gRnVsbCBiYWNrZ3JvdW5kIGNvdmVyYWdlICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTQwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTE1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiA0MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTkwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBXb3JkUHJlc3Mtc3BlY2lmaWMgY2VudGVyaW5nIGZvciBIb3cgSXQgV29ya3Mgc2VjdGlvbiAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaG93LWl0LXdvcmtzLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb3JjZSBjZW50ZXIgb25seSB0aGUgc3VidGl0bGUgdGV4dCAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaG93LWl0LXdvcmtzLXN1YnRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBDZW50ZXIgQUxMIHNlY3Rpb24gc3VidGl0bGVzIGluIFdvcmRQcmVzcyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVyby1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVuZGxlc3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hY3Rpb24tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tb3JlLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubG92ZWQtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jdGEtc3VidGl0bGUgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEVuc3VyZSBzZWN0aW9uIHRpdGxlcyBhcmUgY2VudGVyZWQgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVuZGxlc3MtdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hY3Rpb24tdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tb3JlLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubG92ZWQtdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jdGEtdGl0bGUgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBXb3JkUHJlc3Mtc3BlY2lmaWMgY2VudGVyaW5nIGZvciBhbGwgc2VjdGlvbnMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAucmVhZHktdG8tY29kZS1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQWRkaXRpb25hbCBXb3JkUHJlc3MgY29udGFpbmVyIG92ZXJyaWRlcyBmb3IgcHJvcGVyIGNlbnRlcmluZyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5yZWFkeS10by1jb2RlLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAucmVhZHktdG8tY29kZS1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuaG93LWl0LXdvcmtzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5hY3Rpb24tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLm1vcmUtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5jdGEtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuZW5kbGVzcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5tb3JlLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5sb3ZlZC1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuY3RhLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmVuZGxlc3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmFjdGlvbi1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAubG92ZWQtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmN0YS1zdWJ0aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIFdvcmRQcmVzcyBjb250YWluZXJzIGRvbid0IGFkZCB3aGl0ZSBzcGFjZSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZW50cnktY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnBhZ2UtY29udGVudCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIGV4Y2Vzc2l2ZSBXb3JkUHJlc3Mgb3ZlcnJpZGVzIC0ga2VlcCBtaW5pbWFsICovCgogICAgICAgIC8qIFdvcmRQcmVzcyBjb250YWluZXIgY29tcGF0aWJpbGl0eSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5tYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50IHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIH0KCiAgICAgICAgLyogUmVzcG9uc2l2ZSBEZXNpZ24gSW1wcm92ZW1lbnRzICovCiAgICAgICAgLyogRm9yIHNjcmVlbnMgOTAwcHggYW5kIGJlbG93IC0gU1RBQ0sgVkVSVElDQUxMWSAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkgewogICAgICAgICAgICAuc3RlcHMtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMS41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC1hcnJvdyB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZykgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLWNhcmQgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA5MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdpZHRoOiA5MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMS41cmVtIDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0ZXAtZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIHJlc3BvbnNpdmUgZml4ZXMgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgICAgICAgICAgLmFwcC1jb250YWluZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGZvb3RlciBiYWNrZ3JvdW5kIGZpeCAtIGluY3JlYXNlZCBleHRlbnNpb24gKi8KICAgICAgICAgICAgYm9keSB7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA0MHB4OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNDAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBzaWduaWZpY2FudGx5ICovCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgMzAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBoZXJvIHNlY3Rpb24gaW1wcm92ZW1lbnRzICovCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgICAgICAgICAgcGFkZGluZzogMjBweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5pbnNpZGUtaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8taWNvbiBpbWcgewogICAgICAgICAgICAgICAgd2lkdGg6IDIuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAyLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMiAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1kZXNjcmlwdGlvbiB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICAgICAgcGFkZGluZzogOHB4IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAxMHB4IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8qIEVuc3VyZSBsYW5kaW5nU2VjdGlvbiBoYXMgcHJvcGVyIHBhZGRpbmcgb24gbW9iaWxlIHRvIHByZXZlbnQgZWxlbWVudHMgdG91Y2hpbmcgZWRnZXMgKi8KICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBpbnB1dCBzZWN0aW9uIGZpeGVzICovCiAgICAgICAgICAgIC5pbnB1dC1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5pbnB1dC1jb250YWluZXIsCiAgICAgICAgICAgIC5wcm9tcHQtaW5wdXQsCiAgICAgICAgICAgIC5pbnB1dC1ncm91cCB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlIGhlcm8gY29udGVudCAqLwogICAgICAgICAgICAuaGVyby1jb250ZW50LAogICAgICAgICAgICAuaGVyby10ZXh0IHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBmZWF0dXJlcyBncmlkIC0gc2luZ2xlIGNvbHVtbiAqLwogICAgICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlLWNhcmQgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMzUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBpbnB1dCBjb250YWluZXJzICovCiAgICAgICAgICAgIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBzdWdnZXN0ZWQgYXBwcyAqLwogICAgICAgICAgICAuc3VnZ2VzdGVkLWFwcHMgewogICAgICAgICAgICAgICAgcGFkZGluZzogMCAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUtc3BlY2lmaWMgYmFja2dyb3VuZCBoZWlnaHQgcmVkdWN0aW9uICovCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciwKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxNzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogRnVydGhlciByZWR1Y3Rpb24gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAqLwogICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKCiAgICAgICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIsCiAgICAgICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE2MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKCiAgICAgICAgICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCBoZXJvIHJlc3BvbnNpdmVuZXNzICovCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gaDEgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjZyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc2VjdGlvbiBwIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogOHB4IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS4zICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogOHB4IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEV4dHJhIHNtYWxsIHNjcmVlbnMgLSBpbXByb3ZlZCB0ZXN0aW1vbmlhbCByZXNwb25zaXZlbmVzcyAqLwogICAgICAgICAgICAudGVzdGltb25pYWwtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDMwMHB4OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAwLjVyZW07CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0byAxLjVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYgewogICAgICAgICAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLW5hdi5wcmV2LWJ0biB7CiAgICAgICAgICAgICAgICBsZWZ0OiA1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYubmV4dC1idG4gewogICAgICAgICAgICAgICAgcmlnaHQ6IDVweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWNhcmQgewogICAgICAgICAgICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCA1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1hdmF0YXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1xdW90ZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtYXV0aG9yLW5hbWUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtYXV0aG9yLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF1dGhvci1jb21wYW55IHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtZG90cyB7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgICAgICAgICAgICBnYXA6IDAuNXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWRvdHMgLmRvdCB7CiAgICAgICAgICAgICAgICB3aWR0aDogOHB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiA4cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlcy1ncmlkLAogICAgICAgICAgICAucG9zc2liaWxpdGllcy1ncmlkLAogICAgICAgICAgICAuY2FwYWJpbGl0aWVzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBBZGp1c3QgdG9wIG1hcmdpbiBmb3IgdmVyeSBzbWFsbCBzY3JlZW5zIC0gaW5jcmVhc2VkIGV4dGVuc2lvbiAqLwogICAgICAgICAgICBib2R5IHsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDUwcHg7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiA0MDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogRXh0ZW5kIGJhY2tncm91bmQgcGF0dGVybiBkb3duIGZ1cnRoZXIgb24gc21hbGwgc2NyZWVucyAqLwogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBib2R5IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBmb250LWZhbWlseTogJ1NlZ29lIFVJJywgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlLCBjb2xvciAwLjNzIGVhc2U7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC8qIEhpZGUgbWFpbiBwYWdlIHNjcm9sbGJhciB3aGVuIGFwcCBpcyBhY3RpdmUgKi8KICAgICAgICBib2R5LmFwcC1hY3RpdmUgewogICAgICAgICAgICAvKiBvdmVyZmxvdzogaGlkZGVuOwogICAgaGVpZ2h0OiAxMDB2aDsgKi8KICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgfQoKICAgICAgICAvKiBNb2JpbGUgYm9keSBoYW5kbGluZyAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgewogICAgICAgICAgICAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogRGVza3RvcCBzY3JlZW5zIGFib3ZlIDc2OHB4IC0gcmVtb3ZlIHdoaXRlIHNwYWNlcyAqLwogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA3NjlweCkgewogICAgICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpOwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDA7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlLCBvcGFjaXR5IDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgLyogSGlkZGVuIGJ5IGRlZmF1bHQgb24gbGFuZGluZyBwYWdlICovCiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDIwcHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgLyogU2hvdyBoZWFkZXIgb25seSB3aGVuIGNvbnZlcnNhdGlvbiBoYXMgc3RhcnRlZCAqLwogICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC8qIEZ1bGwtd2lkdGggaGVhZGVyIGZpeCBvbmx5IHdoZW4gYXBwIGlzIGFjdGl2ZSAoZHVyaW5nIGdlbmVyYXRpb24pIC0gYWJvdmUgMTAyNHB4ICovCiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDEwMjVweCkgewogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmhlYWRlciwKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlICN3cmFwcGVyIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXdyYXBwZXIgLmhlYWRlciwKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5mdXNpb24tcGFnZS13cmFwcGVyIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlci1yb3cgLmhlYWRlciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IGNhbGMoMXJlbSArIDUwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLWZsZXggewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tZ3JvdXAgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICAgICAgfQoKICAgICAgICAubG9nby1ncm91cDpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28taWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICB0ZXh0LXNoYWRvdzogMCAwIDEwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4OwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tdGV4dCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAubG9nby10ZXh0IC5ib2xkIHsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgfQoKICAgICAgICAuaGVhZGVyLXJpZ2h0IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICBwYWRkaW5nOiA2cHggMTJweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHJpZ2h0OiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLmdpdGh1Yi1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDVweDsKICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0YTkwZTIsICMzNTdhYmQpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgICAgICBtaW4td2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICAgICAgei1pbmRleDogOTk5OTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLmRvd25sb2FkLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMzNTdhYmQsICMyYTZhYTApOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAuZG93bmxvYWQtYnRuOmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC5kZXBsb3ktbmV0bGlmeS1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGFkOWYsICMwMGQ0YWEpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgICAgICBtaW4td2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICAgICAgei1pbmRleDogOTk5OTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBnYXA6IDZweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB9CgogICAgICAgIC5kZXBsb3ktbmV0bGlmeS1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA5NDdmLCAjMDBiMzk0KTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMTczLCAxNTksIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuOmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC8qIFNldCBUb2tlbiBidXR0b24gc3R5bGVkIHRvIG1hdGNoIERlcGxveSB0byBOZXRsaWZ5ICovCiAgICAgICAgLnNldC10b2tlbi1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMGFkOWYsICMwMGQ0YWEpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwogICAgICAgICAgICBtaW4td2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzZweDsKICAgICAgICAgICAgei1pbmRleDogOTk5OTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBnYXA6IDZweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICB9CgogICAgICAgIC5zZXQtdG9rZW4tYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTQ3ZiwgIzAwYjM5NCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLnNldC10b2tlbi1idG46YWN0aXZlIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOwogICAgICAgIH0KCiAgICAgICAgLmRvd25sb2FkLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW46IDJyZW0gYXV0bzsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMjBweDsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSwgY29sb3IgMC4zcyBlYXNlOwogICAgICAgICAgICAvKiBNZXJnZWQgZGFyayB0aGVtZSBzdHlsZXMgKi8KICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwogICAgICAgIH0KCiAgICAgICAgLm1haW4taGVhZGluZyB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjdyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDIuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAvKiBUeXBpbmcgYW5pbWF0aW9uIHN0eWxlcyAqLwogICAgICAgICNhbmltYXRlZC13b3JkIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIG1pbi13aWR0aDogMTIwcHg7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQoKICAgICAgICAjYW5pbWF0ZWQtd29yZDo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAnfCc7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBibGluayAxcyBpbmZpbml0ZTsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDJweDsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgYmxpbmsgewoKICAgICAgICAgICAgMCUsCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICA1MSUsCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyB0eXBld3JpdGVyIHsKICAgICAgICAgICAgZnJvbSB7CiAgICAgICAgICAgICAgICB3aWR0aDogMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdG8gewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5tYWluLWhlYWRpbmcgLmJsdWUgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgfQoKICAgICAgICAvKiBMYW5kaW5nIHBhZ2UgaW5wdXQgc3R5bGluZyAtIEV4dGVuZGVkIHRvcCBhbmQgYm90dG9tIGNvdmVyYWdlICovCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIzMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICBwYWRkaW5nOiA4MHB4IDAgMTUwcHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC04MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xNTBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQW5pbWF0ZWQgc3RhcnJ5IGJhY2tncm91bmQgKi8KICAgICAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlIC0gMTAwcHgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOgogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDJweCAycHggYXQgMjBweCAzMHB4LCAjNGE5MGUyLCB0cmFuc3BhcmVudCksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoMnB4IDJweCBhdCA0MHB4IDcwcHgsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjgpLCB0cmFuc3BhcmVudCksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCA5MHB4IDQwcHgsICM2YjczZmYsIHRyYW5zcGFyZW50KSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgxcHggMXB4IGF0IDEzMHB4IDgwcHgsIHJnYmEoMTA3LCAxMTUsIDI1NSwgMC42KSwgdHJhbnNwYXJlbnQpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDJweCAycHggYXQgMTYwcHggMzBweCwgIzRhOTBlMiwgdHJhbnNwYXJlbnQpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0OwogICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDIwMHB4IDEwMHB4OwogICAgICAgICAgICBhbmltYXRpb246IHR3aW5rbGUgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGUgYWx0ZXJuYXRlOwogICAgICAgICAgICB6LWluZGV4OiAwOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyB0d2lua2xlIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMC4zOwogICAgICAgICAgICB9CgogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogSGVybyBTZWN0aW9uICovCiAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgcGFkZGluZzogMHJlbSAwIDByZW07CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CgogICAgICAgIC5pbnNpZGUtaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAuaGVyby1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiAjNGE5MGUyOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmxvYXQgM3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQoKICAgICAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgICAgIHdpZHRoOiA0cmVtOwogICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbTsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0IHsKCiAgICAgICAgICAgIDAlLAogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmhlcm8tdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDMuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAyMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgICAgICBtYXgtd2lkdGg6IDYwMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICB9CgogICAgICAgIC8qIFVwZGF0ZSBpbnB1dCBzZWN0aW9uIGZvciBkYXJrIHRoZW1lICovCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5pbnB1dC1vdXRlci1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgICAgICAvKiBNZXJnZWQgc3R5bGVzICovCiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgICAgIH0KCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgIH0KCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMDsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAxLjVyZW07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIHJlc2l6ZTogbm9uZTsKICAgICAgICAgICAgbWluLWhlaWdodDogNjBweDsKICAgICAgICAgICAgbWF4LWhlaWdodDogMjAwcHg7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpOwogICAgICAgICAgICBib3JkZXItdG9wOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgMTJweCAxMnB4OwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgbWluLWhlaWdodDogNTBweDsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICAvKiBNZXJnZWQvdXBkYXRlZCBzdHlsZXMgKi8KICAgICAgICAgICAgcGFkZGluZzogNnB4IDEwcHg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICAgICAgfQoKICAgICAgICAjbGFuZGluZ1NlY3Rpb24gLnByb21wdC1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpOwogICAgICAgIH0KCiAgICAgICAgLmdlbmVyYXRlLWNvZGUtYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzRhOTBlMiwgIzZiNzNmZikgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4td2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKSAhaW1wb3J0YW50OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG46aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA2cHggMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC40KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRmVhdHVyZXMgR3JpZCAqLwogICAgICAgIC5mZWF0dXJlcy1ncmlkIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyODBweCwgMWZyKSk7CiAgICAgICAgICAgIGdhcDogMnJlbTsKICAgICAgICAgICAgbWFyZ2luOiA0cmVtIDA7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDJyZW07CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jYXJkOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IC0xMDAlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBsZWZ0IDAuNXMgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWNhcmQ6aG92ZXI6OmJlZm9yZSB7CiAgICAgICAgICAgIGxlZnQ6IDEwMCU7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTsKICAgICAgICAgICAgY29sb3I6ICM0YTkwZTI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWljb24gaW1nIHsKICAgICAgICAgICAgd2lkdGg6IDIuNXJlbTsKICAgICAgICAgICAgaGVpZ2h0OiAyLjVyZW07CiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLyogQWdncmVzc2l2ZSBXb3JkUHJlc3Mgd2hpdGUgc3BhY2UgcmVtb3ZhbCAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBoZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXItZmxleCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgcmVtb3ZlIGFueSBXb3JkUHJlc3MgY29udGFpbmVyIGNvbnN0cmFpbnRzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNtYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubGF5b3V0LWJveGVkLW1vZGUgI21haW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5sYXlvdXQtd2lkZS1tb2RlICNtYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubGF5b3V0LXdpZGUtbW9kZSAjd3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50IHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIGFueSBXb3JkUHJlc3MgdGhlbWUgcGFkZGluZy9tYXJnaW5zICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICogewogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBUYXJnZXQgc3BlY2lmaWMgV29yZFByZXNzIHRoZW1lIGVsZW1lbnRzIGNhdXNpbmcgd2hpdGUgc3BhY2VzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24taGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWhlYWRlci13cmFwcGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLXNlY29uZGFyeS1oZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tbWFpbi1oZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hdmFkYS1oZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXItd3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubWFpbi1oZWFkZXIgewogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSkgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBhbnkgV29yZFByZXNzIHRoZW1lIGNvbnRhaW5lciBwYWRkaW5nICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLXJvdywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1jb2x1bW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3csCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1jb2x1bW4gewogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIGhlYWRlciB0byBicmVhayBvdXQgb2YgYW55IGNvbnRhaW5lciBjb25zdHJhaW50cyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciAqLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBoZWFkZXIgKiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogT3ZlcnJpZGUgV29yZFByZXNzIGJhY2tncm91bmQgY29sb3IgZm9yIG1haW4gZWxlbWVudHMgKi8KICAgICAgICAjbWFpbiwKICAgICAgICAubGF5b3V0LWJveGVkLW1vZGUgI21haW4sCiAgICAgICAgLmxheW91dC1ib3hlZC1tb2RlLmF2YWRhLWZvb3Rlci1meC1zdGlja3kgLmFib3ZlLWZvb3Rlci13cmFwcGVyLAogICAgICAgIC5sYXlvdXQtYm94ZWQtbW9kZS5hdmFkYS1mb290ZXItZngtc3RpY2t5LXdpdGgtcGFyYWxsYXgtYmctaW1hZ2UgLmFib3ZlLWZvb3Rlci13cmFwcGVyLAogICAgICAgIC5sYXlvdXQtd2lkZS1tb2RlICNtYWluLAogICAgICAgIC5sYXlvdXQtd2lkZS1tb2RlICN3cmFwcGVyLAogICAgICAgIGJvZHksCiAgICAgICAgaHRtbCwKICAgICAgICBodG1sIGJvZHkuY3VzdG9tLWJhY2tncm91bmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGaXggV29yZFByZXNzIHRlbXBsYXRlIGVsZW1lbnRzIC0gcmVtb3ZlIHVud2FudGVkIGxpbmVzIGFuZCBiYWNrZ3JvdW5kcyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAqIHsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgd2hpdGUgbGluZSBhdCB0b3Agb2YgV29yZFByZXNzIGludGVyZmFjZSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2Mzo6YmVmb3JlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2Mzo6YWZ0ZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICo6OmJlZm9yZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgKjo6YWZ0ZXIgewogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgICAgICAgICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIHRvcCBib3JkZXJzIGFuZCBsaW5lcyBmcm9tIFdvcmRQcmVzcyBlbGVtZW50cyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBib2R5LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBodG1sLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjcGFnZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtbWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtZm9vdGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3Atc2l0ZS1ibG9ja3MsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cC1ibG9jay1ncm91cCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWNvbnRhaW5lciB7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItbGVmdDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItcmlnaHQ6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIHNwZWNpZmljIGJvcmRlcnMgZnJvbSBXb3JkUHJlc3MgZWxlbWVudHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgZGl2LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBzZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBhcnRpY2xlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBtYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBoZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGZvb3RlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgbmF2LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBhc2lkZSB7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgYmFja2dyb3VuZHMgZnJvbSBXb3JkUHJlc3MgdGVtcGxhdGUgZWxlbWVudHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWJsb2NrLWdyb3VwLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stY29sdW1uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stY29sdW1ucywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVudHJ5LWNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LWFyZWEgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIFdvcmRQcmVzcyBhZG1pbiBiYXIgYW5kIHRvcCBlbGVtZW50cyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjd3BhZG1pbmJhciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFkbWluLWJhciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWFkbWluLWJhciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgW2lkKj0iYWRtaW4iXSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgW2NsYXNzKj0iYWRtaW4iXSB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb3JjZSByZW1vdmUgYW55IHRvcC1sZXZlbCBib3JkZXJzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzPiogewogICAgICAgICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBXb3JkUHJlc3Mtc3BlY2lmaWMgbW9iaWxlIGZvb3RlciBiYWNrZ3JvdW5kIGZpeGVzIC0gaW5jcmVhc2VkICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIHsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDgwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgODAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcyBtb2JpbGUgZm9vdGVyIGJhY2tncm91bmQgZXh0ZW5zaW9uIC0gaW5jcmVhc2VkICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyAyMDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogQWRkaXRpb25hbCBXb3JkUHJlc3Mgb3ZlcnJpZGVzIGZvciBmZWF0dXJlIGNhcmRzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLWNhcmQgaDMsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jYXBhYmlsaXR5LWNhcmQgaDMsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS1jYXJkIGgzIHsKICAgICAgICAgICAgY29sb3I6ICM0YTkwZTIgIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGhlYWRpbmcgY29sb3IgZml4ZXMgKi8KICAgICAgICAvKiBXb3JkUHJlc3Mtc3BlY2lmaWMgaGVhZGluZyBjb2xvciBmaXhlcyAtIG9ubHkgZm9yIG91ciBhcHAgY29udGVudCAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDEsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIGgzLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIGg2LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoMSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGgzLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoNCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGg2IHsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFNwZWNpZmljIFdvcmRQcmVzcyBvdmVycmlkZXMgZm9yIGZlYXR1cmUgdGl0bGVzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mZWF0dXJlLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnBvc3NpYmlsaXR5LXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZmVhdHVyZS1jYXJkIGgzLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS1jYXJkIGgzLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAucG9zc2liaWxpdHktY2FyZCBoMyB7CiAgICAgICAgICAgIGNvbG9yOiAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEVuc3VyZSBmZWF0dXJlIHRpdGxlcyBhcmUgYmx1ZSBpbiBXb3JkUHJlc3MgKi8KICAgICAgICAuZmVhdHVyZS10aXRsZSB7CiAgICAgICAgICAgIGNvbG9yOiAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZ1c2lvbiBCdWlsZGVyIGFuZCBXb3JkUHJlc3MgaDEgY29sb3Igb3ZlcnJpZGUgKi8KICAgICAgICBmdXNpb24tbW9kYWwgaDEsIC5mdXNpb24tcG9zdC1jb250ZW50IGgxLCAuZnVzaW9uLXRiLWZvb3RlciBoMSwgLmZ1c2lvbi10Yi1wYWdlLXRpdGxlLWJhciBoMSwgLmZ1c2lvbi13aWRnZXQtYXJlYSBoMSwgLnBvc3QtY29udGVudCBoMSwgLnNlYXJjaC1wYWdlLXNlYXJjaC1mb3JtIGgxLCAudGl0bGUgaDEsIGgxIHsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZ1c2lvbiBCdWlsZGVyIGFuZCBXb3JkUHJlc3MgaDMgY29sb3Igb3ZlcnJpZGUgKi8KICAgICAgICAuZnVzaW9uLWF1dGhvciAuZnVzaW9uLWF1dGhvci10aXRsZSwgLmZ1c2lvbi1tb2RhbCAubW9kYWwtdGl0bGUsIC5mdXNpb24td2lkZ2V0LWFyZWEgaDMsIC5wb3N0LWNvbnRlbnQgaDMsIC5wcm9qZWN0LWNvbnRlbnQgaDMsIC5zaWRlYmFyIC53aWRnZXQgaDMsIC5tYWluLWZsZXggLnNsaWRlLWNvbnRlbnQgaDMsIGgzIHsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIH0KCiAgICAgICAgLnF1aWNrLWFwcHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgICAgIGdhcDogMXJlbTsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDNyZW07CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CgogICAgICAgIC5xdWljay1hcHAtYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgICAgICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW07CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoNXB4KTsKICAgICAgICB9CgogICAgICAgIC5xdWljay1hcHAtYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCk7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgfQoKICAgICAgICAvKiBIb3cgSXQgV29ya3MgU2VjdGlvbiAqLwogICAgICAgIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmhvdy1pdC13b3Jrcy10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAudGV4dC13aGl0ZSB7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICB9CgogICAgICAgIC5zdGVwcy1jb250YWluZXIgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAycmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdzsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMXJlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA5MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICB9CgogICAgICAgIC5zdGVwLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDJyZW0gMS41cmVtOwogICAgICAgICAgICBtYXgtd2lkdGg6IDI4MHB4OwogICAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5zdGVwLWNhcmQ6aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgfQoKICAgICAgICAuc3RlcC1udW1iZXIgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogLTE1cHg7CiAgICAgICAgICAgIGxlZnQ6IC01cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyQTQxRTc7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgd2lkdGg6IDM1cHg7CiAgICAgICAgICAgIGhlaWdodDogMzVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgIH0KCiAgICAgICAgLnN0ZXAtaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICBtYXJnaW46IDFyZW0gMDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAuc3RlcC1pY29uIGltZyB7CiAgICAgICAgICAgIHdpZHRoOiAyLjVyZW07CiAgICAgICAgICAgIGhlaWdodDogMi41cmVtOwogICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQoKICAgICAgICAuc3RlcC10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICB9CgogICAgICAgIC5zdGVwLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIH0KCiAgICAgICAgLnN0ZXAtYXJyb3cgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMnJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgICAgIGZsZXg6IDAgMCBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLnRyeS1ub3ctYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMi41cmVtOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MHB4OwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDQyLCA2NSwgMjMxLCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLnRyeS1ub3ctYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzFlMmViMzsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDZweCAyMHB4IHJnYmEoNDIsIDY1LCAyMzEsIDAuNCk7CiAgICAgICAgfQoKICAgICAgICAvKiBFbmRsZXNzIFBvc3NpYmlsaXRpZXMgU2VjdGlvbiAqLwogICAgICAgIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5lbmRsZXNzLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuZW5kbGVzcy1zdWJ0aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAucG9zc2liaWxpdGllcy1ncmlkIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyNDBweCwgMWZyKSk7CiAgICAgICAgICAgIGdhcDogMXJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXJlbTsKICAgICAgICB9CgogICAgICAgIC5wb3NzaWJpbGl0eS1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIH0KCiAgICAgICAgLnBvc3NpYmlsaXR5LWNhcmQ6aG92ZXIgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgOHB4IDI1cHggcmdiYSgwLCAwLCAwLCAwLjIpOwogICAgICAgIH0KCiAgICAgICAgLnBvc3NpYmlsaXR5LWljb24gewogICAgICAgICAgICB3aWR0aDogNDhweDsKICAgICAgICAgICAgaGVpZ2h0OiA0OHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICAgICAgfQoKICAgICAgICAucG9zc2liaWxpdHktaWNvbiBpbWcgewogICAgICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICAgICAgaGVpZ2h0OiAyNHB4OwogICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIC5wb3NzaWJpbGl0eS10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC44cmVtOwogICAgICAgIH0KCiAgICAgICAgLnBvc3NpYmlsaXR5LWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpOwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgIH0KCiAgICAgICAgLnBvcHVsYXItcHJvbXB0cy1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogNHJlbTsKICAgICAgICB9CgogICAgICAgIC5wb3B1bGFyLXByb21wdHMtdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuOHJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDJyZW07CiAgICAgICAgfQoKICAgICAgICAucG9wdWxhci1wcm9tcHRzLWdyaWQgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDMyMHB4LCAxZnIpKTsKICAgICAgICAgICAgZ2FwOiAxcmVtOwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgfQoKICAgICAgICAucG9wdWxhci1wcm9tcHQtYnRuIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDAuNXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIH0KCiAgICAgICAgLnBvcHVsYXItcHJvbXB0LWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgIH0KCiAgICAgICAgLyogU2VlIEl0IEluIEFjdGlvbiBTZWN0aW9uICovCiAgICAgICAgLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbjogNnJlbSBhdXRvIDRyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5hY3Rpb24tdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5hY3Rpb24tc3VidGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogM3JlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tdGFicyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgICAgICAgICBnYXA6IDA7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDRweDsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIG1heC13aWR0aDogMjUwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAuZGVtby10YWIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgICAgICAgICAgZ2FwOiAwLjVyZW07CiAgICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBtaW4td2lkdGg6IDE5NXB4OwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tdGFiOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICB9CgogICAgICAgIC5kZW1vLXRhYi5hY3RpdmUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjM