Telemedicine PlatformsRoshan Gehlot2025-12-31T04:52:23+00:00
PGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCI+CiAgICA8dGl0bGU+Q29kaW5nIEFJIC0gV3JpdGVjcmVhbSBBSTwvdGl0bGU+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgIDx0aXRsZT5UZWxlbWVkaWNpbmUgUGxhdGZvcm1zIC0gVmlydHVhbCBDYXJlICYgUmVtb3RlIE1vbml0b3JpbmcgfCBUZWxlTWVkTGluazwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIKICAgICAgICBjb250ZW50PSJEZWxpdmVyIHZpcnR1YWwgdmlzaXRzLCByZW1vdGUgcGF0aWVudCBtb25pdG9yaW5nLCBlLXByZXNjcmlwdGlvbnMsIHNjaGVkdWxpbmcsIGFuZCBjYXJlIGNvb3JkaW5hdGlvbiBvbiBvbmUgdGVsZW1lZGljaW5lIHBsYXRmb3JtLiIgLz4KICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIgogICAgICAgIGNvbnRlbnQ9InRlbGVtZWRpY2luZSBwbGF0Zm9ybSwgdGVsZWhlYWx0aCBzb2Z0d2FyZSwgdmlydHVhbCBjYXJlLCByZW1vdGUgcGF0aWVudCBtb25pdG9yaW5nLCBvbmxpbmUgYXBwb2ludG1lbnRzLCBlLXByZXNjcmlwdGlvbiwgRUhSIGludGVncmF0aW9uLCBISVBBQSBjb21wbGlhbmNlLCBwYXRpZW50IHBvcnRhbCwgY2FyZSBjb29yZGluYXRpb24iIC8+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IlRlbGVNZWRMaW5rIiAvPgogICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJpbmRleCwgZm9sbG93LCBtYXgtc25pcHBldDotMSwgbWF4LWltYWdlLXByZXZpZXc6bGFyZ2UsIG1heC12aWRlby1wcmV2aWV3Oi0xIiAvPgogICAgPG1ldGEgbmFtZT0ibGFuZ3VhZ2UiIGNvbnRlbnQ9IkVuZ2xpc2giIC8+CiAgICA8bWV0YSBuYW1lPSJkaXN0cmlidXRpb24iIGNvbnRlbnQ9Imdsb2JhbCIgLz4KICAgIDxtZXRhIG5hbWU9InJhdGluZyIgY29udGVudD0iR2VuZXJhbCIgLz4KICAgIDxtZXRhIG5hbWU9InJldmlzaXQtYWZ0ZXIiIGNvbnRlbnQ9IjcgZGF5cyIgLz4KICAgIDxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjZmZmZmZmIiAvPgogICAgPG1ldGEgbmFtZT0iYXBwbGljYXRpb24tbmFtZSIgY29udGVudD0iVGVsZW1lZGljaW5lIFBsYXRmb3JtIHwgVGVsZU1lZExpbmsiIC8+CgogICAgPCEtLSBDYW5vbmljYWwgLS0+CiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9leGFtcGxlLmNvbS90ZWxlbWVkaWNpbmUtcGxhdGZvcm0vIiAvPgoKICAgIDwhLS0gRmF2aWNvbnMgLS0+CiAgICA8bGluayByZWw9Imljb24iIGhyZWY9Ii9mYXZpY29uLmljbyIgLz4KICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbiIgc2l6ZXM9IjE4MHgxODAiIGhyZWY9Ii9hcHBsZS10b3VjaC1pY29uLnBuZyIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMzJ4MzIiIGhyZWY9Ii9mYXZpY29uLTMyeDMyLnBuZyIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMTZ4MTYiIGhyZWY9Ii9mYXZpY29uLTE2eDE2LnBuZyIgLz4KCiAgICA8IS0tIE9wZW4gR3JhcGggLyBGYWNlYm9vayAtLT4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJ3ZWJzaXRlIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9leGFtcGxlLmNvbS90ZWxlbWVkaWNpbmUtcGxhdGZvcm0vIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJUZWxlbWVkaWNpbmUgUGxhdGZvcm1zIOKAlCBWaXJ0dWFsIENhcmUsIFJQTSwgRS1QcmVzY3JpYmUiIC8+CiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iCiAgICAgICAgY29udGVudD0iUnVuIHZpcnR1YWwgdmlzaXRzLCByZW1vdGUgbW9uaXRvcmluZywgZS1wcmVzY3JpcHRpb25zLCBhbmQgY2FyZSBjb29yZGluYXRpb24gd2l0aCBjb21wbGlhbnQgdGVsZWhlYWx0aCB3b3JrZmxvd3MuIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL3d3dy53cml0ZWNyZWFtLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNS8wMy9sYXVuY2gtc3R1ZGlvLnBuZyIgLz4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IlRlbGVNZWRMaW5rIiAvPgogICAgPG1ldGEgcHJvcGVydHk9Im9nOmxvY2FsZSIgY29udGVudD0iZW5fVVMiIC8+CgogICAgPCEtLSBUd2l0dGVyIENhcmRzIC0tPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjpjYXJkIiBjb250ZW50PSJzdW1tYXJ5X2xhcmdlX2ltYWdlIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZXhhbXBsZS5jb20vdGVsZW1lZGljaW5lLXBsYXRmb3JtLyIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6dGl0bGUiIGNvbnRlbnQ9IlRlbGVtZWRpY2luZSBQbGF0Zm9ybXMg4oCUIFZpcnR1YWwgQ2FyZSwgUlBNLCBFLVByZXNjcmliZSIgLz4KICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24iCiAgICAgICAgY29udGVudD0iRGVsaXZlciB2aXJ0dWFsIHZpc2l0cywgcmVtb3RlIG1vbml0b3JpbmcsIHNjaGVkdWxpbmcsIGFuZCBlLXByZXNjcmlwdGlvbnMgd2l0aCBjb21wbGlhbnQgdGVsZWhlYWx0aCB3b3JrZmxvd3MuIiAvPgogICAgPG1ldGEgbmFtZT0idHdpdHRlcjppbWFnZSIgY29udGVudD0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjUvMDMvbGF1bmNoLXN0dWRpby5wbmciIC8+CiAgICA8bWV0YSBuYW1lPSJ0d2l0dGVyOmNyZWF0b3IiIGNvbnRlbnQ9IkB0ZWxlbWVkbGluayIgLz4KCiAgICA8IS0tIEluc3RhZ3JhbSAtLT4KICAgIDxtZXRhIHByb3BlcnR5PSJvZzpzZWVfYWxzbyIgY29udGVudD0iaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS93cml0ZWNyZWFtYWkvIiAvPgogICAgPG1ldGEgbmFtZT0iaW5zdGFncmFtOnNpdGUiIGNvbnRlbnQ9IkB3cml0ZWNyZWFtYWkiIC8+CiAgICA8bWV0YSBuYW1lPSJpbnN0YWdyYW06aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LndyaXRlY3JlYW0uY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI1LzAzL2xlYXJuLWFpLnBuZyIgLz4KCiAgICA8IS0tIEFkZGl0aW9uYWwgU0VPIE1ldGEgVGFncyAtLT4KICAgIDxtZXRhIG5hbWU9Imdlby5yZWdpb24iIGNvbnRlbnQ9IlVTIiAvPgogICAgPG1ldGEgbmFtZT0iZ2VvLnBsYWNlbmFtZSIgY29udGVudD0iTmV3IFlvcmssIFVTQSIgLz4KICAgIDxtZXRhIG5hbWU9Imdlby5wb3NpdGlvbiIgY29udGVudD0iNDAuNzEyODstNzQuMDA2MCIgLz4KICAgIDxtZXRhIG5hbWU9IklDQk0iIGNvbnRlbnQ9IjQwLjcxMjgsIC03NC4wMDYwIiAvPgogICAgPG1ldGEgbmFtZT0ibW9iaWxlLXdlYi1hcHAtY2FwYWJsZSIgY29udGVudD0ieWVzIiAvPgogICAgPG1ldGEgbmFtZT0iSGFuZGhlbGRGcmllbmRseSIgY29udGVudD0idHJ1ZSIgLz4KICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSIgLz4KCiAgICA8IS0tIFNjaGVtYSBNYXJrdXAgKEpTT04tTEQpIC0tPgogICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9sZCtqc29uIj4KICB7CiAgICAiQGNvbnRleHQiOiAiaHR0cHM6Ly9zY2hlbWEub3JnIiwKICAgICJAdHlwZSI6ICJTb2Z0d2FyZUFwcGxpY2F0aW9uIiwKICAgICJuYW1lIjogIlRlbGVtZWRpY2luZSBQbGF0Zm9ybSIsCiAgICAidXJsIjogImh0dHBzOi8vZXhhbXBsZS5jb20vdGVsZW1lZGljaW5lLXBsYXRmb3JtLyIsCiAgICAiZGVzY3JpcHRpb24iOiAiRGVsaXZlciB2aXJ0dWFsIHZpc2l0cywgcmVtb3RlIHBhdGllbnQgbW9uaXRvcmluZywgZS1wcmVzY3JpcHRpb25zLCBzY2hlZHVsaW5nLCBhbmQgY2FyZSBjb29yZGluYXRpb24uIiwKICAgICJhcHBsaWNhdGlvbkNhdGVnb3J5IjogIk1lZGljYWxBcHBsaWNhdGlvbiIsCiAgICAib3BlcmF0aW5nU3lzdGVtIjogIkFsbCIsCiAgICAib2ZmZXJzIjogewogICAgICAiQHR5cGUiOiAiT2ZmZXIiLAogICAgICAicHJpY2UiOiAiMC4wMCIsCiAgICAgICJwcmljZUN1cnJlbmN5IjogIlVTRCIKICAgIH0sCiAgICAicHVibGlzaGVyIjogewogICAgICAiQHR5cGUiOiAiT3JnYW5pemF0aW9uIiwKICAgICAgIm5hbWUiOiAiVGVsZU1lZExpbmsiLAogICAgICAidXJsIjogImh0dHBzOi8vZXhhbXBsZS5jb20vIgogICAgfSwKICAgICJhZ2dyZWdhdGVSYXRpbmciOiB7CiAgICAgICJAdHlwZSI6ICJBZ2dyZWdhdGVSYXRpbmciLAogICAgICAicmF0aW5nVmFsdWUiOiAiNC44IiwKICAgICAgInJldmlld0NvdW50IjogIjIxNTYiCiAgICB9CiAgfQogIDwvc2NyaXB0PgoKICAgIDwhLS0gRm9udHMgYW5kIENTUyAtLT4KICAgIDwhLS0gPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIiAvPgogIDxsaW5rIHJlbD0icHJlY29ubmVjdCIgaHJlZj0iaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbSIgY3Jvc3NvcmlnaW4gLz4KICA8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PU91dGZpdDp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZmYW1pbHk9U3BhY2UrR3JvdGVzazp3Z2h0QDQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCIgLz4KICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjAuMC9jc3MvYWxsLm1pbi5jc3MiIC8+IC0tPgogICAgPHNjcmlwdCB0eXBlPSJpbXBvcnRtYXAiPgogICAgICB7CiAgICAgICAgImltcG9ydHMiOiB7CiAgICAgICAgICAicmVhY3QiOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3RAMTguMi4wIiwKICAgICAgICAgICJyZWFjdC1kb20iOiAiaHR0cHM6Ly9lc20uc2gvcmVhY3QtZG9tQDE4LjIuMCIsCiAgICAgICAgICAicmVhY3QtZG9tLyI6ICJodHRwczovL2VzbS5zaC9yZWFjdC1kb21AMTguMi4wLyIsCiAgICAgICAgICAiQGNvZGVzYW5kYm94L3NhbmRwYWNrLXJlYWN0IjogImh0dHBzOi8vZXNtLnNoL0Bjb2Rlc2FuZGJveC9zYW5kcGFjay1yZWFjdEAyLjguMD9kZXBzPXJlYWN0QDE4LjIuMCZkZXBzPXJlYWN0LWRvbUAxOC4yLjAiCiAgICAgICAgfQogICAgICB9CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2tpdC5mb250YXdlc29tZS5jb20vYmMwODE3OTJkNC5qcyIgY3Jvc3NvcmlnaW49ImFub255bW91cyI+PC9zY3JpcHQ+CgogICAgPHN0eWxlPgogICAgICAgIDpyb290IHsKICAgICAgICAgICAgLS1wcmltYXJ5LWNvbG9yOiAjMmQyZDJkOwogICAgICAgICAgICAtLWFjY2VudC1jb2xvcjogIzRhOTBlMjsKICAgICAgICAgICAgLS1ibHVlLWNvbG9yOiAjNGE5MGUyOwoKICAgICAgICAgICAgLyogRGFyayB0aGVtZSBjb2xvcnMgKGRlZmF1bHQgYW5kIG9ubHkgdGhlbWUpICovCiAgICAgICAgICAgIC0tYmctY29sb3I6ICMwMDAwMDA7CiAgICAgICAgICAgIC0tc3VyZmFjZS1jb2xvcjogIzJkMmQyZDsKICAgICAgICAgICAgLS10ZXh0LWNvbG9yOiAjZTBlMGUwOwogICAgICAgICAgICAtLWJvcmRlci1jb2xvcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1pbnB1dC1iZzogIzJkMmQyZDsKICAgICAgICAgICAgLS1pbnB1dC1ib3JkZXI6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tcGlsbC1iZzogIzMzMzMzMzsKICAgICAgICAgICAgLS1idXR0b24tYmc6ICM0MDQwNDA7CiAgICAgICAgICAgIC0tc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICAgIC0taGVhZGVyLWJvcmRlcjogIzQwNDA0MDsKICAgICAgICAgICAgLS1mb290ZXItYmc6ICMyZDJkMmQ7CiAgICAgICAgICAgIC0tY2FyZC1iZzogIzMzMzMzMzsKICAgICAgICAgICAgLS1iZy1zZWNvbmRhcnk6ICM0NDQ0NDQ7CiAgICAgICAgICAgIC0tdGV4dC1zZWNvbmRhcnk6ICNjY2NjY2M7CiAgICAgICAgICAgIC0tYmx1ZS1ob3ZlcjogIzNhN2JjODsKICAgICAgICB9CgogICAgICAgIC8qIFNjcm9sbGJhciB3aWR0aCAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgewogICAgICAgICAgICB3aWR0aDogMTJweDsKICAgICAgICB9CgogICAgICAgIC8qIFRyYWNrIChiYWNrZ3JvdW5kKSAqLwogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMWExYTFhOwogICAgICAgICAgICAvKiBkYXJrIGJhY2tncm91bmQgKi8KICAgICAgICB9CgogICAgICAgIC8qIEhhbmRsZSAodGh1bWIpICovCiAgICAgICAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICM1NTU7CiAgICAgICAgICAgIC8qIGRhcmsgZ3JheSAqLwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgfQoKICAgICAgICAvKiBIYW5kbGUgb24gaG92ZXIgKi8KICAgICAgICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzc3NzsKICAgICAgICB9CgogICAgICAgIC8qIEJhc2UgY2hhdCBidWJibGUgc3R5bGVzIGZvciBkYXJrIHRoZW1lICovCiAgICAgICAgLmNoYXQtYnViYmxlLmFpIHsKICAgICAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzNhM2EzYTsKICAgICAgICAgICAgLyogTW9yZSBzcGVjaWZpYyB0aGFuIC0tc3VyZmFjZS1jb2xvciAqLwogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1MDUwNTA7CiAgICAgICAgICAgIC8qIE1vcmUgc3BlY2lmaWMgdGhhbiAtLWJvcmRlci1jb2xvciAqLwogICAgICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtYnViYmxlLmFpOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGxlZnQ6IC04cHg7CiAgICAgICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgICAgIGhlaWdodDogOHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EzYTNhOwogICAgICAgICAgICAvKiBNYXRjaGVzIHRoZSBidWJibGUgYmFja2dyb3VuZCAqLwogICAgICAgICAgICBjbGlwLXBhdGg6IHBvbHlnb24oMTAwJSAwLCAwJSAxMDAlLCAxMDAlIDEwMCUpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5naXRodWItc3RhcnMsCiAgICAgICAgLmdpdGh1Yi1sYWJlbCB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICB9CgogICAgICAgIC5iYWRnZS10b2dldGhlciB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgIH0KCiAgICAgICAgKiB7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgJ1NlZ29lIFVJJywgUm9ib3RvLCBzYW5zLXNlcmlmOwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIFRoZW1lIENvbXBhdGliaWxpdHkgLSBGdWxsIFBhZ2UgQmFja2dyb3VuZCAqLwogICAgICAgIGJvZHksCiAgICAgICAgaHRtbCB7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcyBjb250YWluZXIgYWRqdXN0bWVudHMgLSBGdWxsIHdpZHRoICovCiAgICAgICAgLmNvbnRhaW5lciwKICAgICAgICAuY29udGFpbmVyLWZsdWlkLAogICAgICAgIC53cmFwcGVyLAogICAgICAgIC5jb250ZW50LAogICAgICAgIC5tYWluLAogICAgICAgIC5zaXRlLWNvbnRlbnQsCiAgICAgICAgLmVudHJ5LWNvbnRlbnQsCiAgICAgICAgLnBhZ2UtY29udGVudCB7CiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb290ZXIgZnVsbCB3aWR0aCBvdmVycmlkZSBmb3IgV29yZFByZXNzIGNvbnRhaW5lcnMgKi8KICAgICAgICAjd3JhcHBlciAuZm9vdGVyLCAKICAgICAgICAuZnVzaW9uLXdyYXBwZXIgLmZvb3RlciwKICAgICAgICAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tcGFnZS13cmFwcGVyLXJvdyAuZm9vdGVyLAogICAgICAgIGJvZHkgLmZvb3RlciwKICAgICAgICBmb290ZXIuZm9vdGVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBBZGRpdGlvbmFsIFdvcmRQcmVzcyB3cmFwcGVyIG92ZXJyaWRlcyBmb3IgZm9vdGVyIGFyZWEgKi8KICAgICAgICAjbWFpbiAuZm9vdGVyLAogICAgICAgIC5mdXNpb24tcGFnZS13cmFwcGVyIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi13cmFwcGVyIC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1wYWdlLXdyYXBwZXItcm93IC5mb290ZXIsCiAgICAgICAgLmZ1c2lvbi1idWlsZGVyLXJvdyAuZm9vdGVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgb3VyIGNvbnRlbnQgd29ya3Mgd2l0aGluIFdvcmRQcmVzcyAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwOwogICAgICAgIH0KCiAgICAgICAgLyogRml4IGhlcm8gc2VjdGlvbiBjb250ZW50IGNlbnRlcmluZyAtIGtlZXAgY29udGVudCBjZW50ZXJlZCBidXQgYmFja2dyb3VuZCBmdWxsLXdpZHRoICovCiAgICAgICAgLmhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmhlcm8tY29udGVudCwKICAgICAgICAuaGVyby10ZXh0IHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDgwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHN0YXIgbG9nbyBwb3NpdGlvbmluZyAtIGtlZXAgaXQgY2VudGVyZWQgKi8KICAgICAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5oZXJvLXNlY3Rpb24gcCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHRoZSBhY3R1YWwgaW5wdXQgY29udGFpbmVyIGNsYXNzZXMgZnJvbSBIVE1MICovCiAgICAgICAgLmlucHV0LW91dGVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA1MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIudmVydGljYWwgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTZweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5pbnB1dC1jb250cm9scy1yb3cgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBwcm9tcHQgaW5wdXQgc3R5bGluZyB0byBtYXRjaCBvcmlnaW5hbCAqLwogICAgICAgIC5wcm9tcHQtaW5wdXQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweCAxMnB4IDAgMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXNpemU6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgcmVzaXplOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LWhlaWdodDogMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIH0KCgoKICAgICAgICAvKiBGaXggc3VnZ2VzdGVkIGFwcHMgc2VjdGlvbiAtIGNlbnRlcmVkIHdpdGggcHJvcGVyIHdpZHRoICovCiAgICAgICAgLnN1Z2dlc3RlZC1hcHBzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zdWdnZXN0ZWQtYXBwIHsKICAgICAgICAgICAgbWFyZ2luOiA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBmZWF0dXJlcyBncmlkIC0gMyBjYXJkcyBpbiBhIHJvdywgY2VudGVyZWQgKi8KICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMywgMjgwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IGZpdC1jb250ZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5mZWF0dXJlLWNhcmQgewogICAgICAgICAgICB3aWR0aDogMjgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAyODBweCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIGFsbCBzZWN0aW9ucyBhcmUgcHJvcGVybHkgY2VudGVyZWQgKi8KICAgICAgICAuZmVhdHVyZXMtc2VjdGlvbiwKICAgICAgICAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgLnBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAuZGVtby1zZWN0aW9uLAogICAgICAgIC5jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICAudGVzdGltb25pYWxzLXNlY3Rpb24sCiAgICAgICAgLmN0YS1zZWN0aW9uIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzIHBhZ2Utc3BlY2lmaWMgc3R5bGluZyAtIEZ1bGwgYmFja2dyb3VuZCBjb3ZlcmFnZSAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBjb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiAxMDB2aCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IC00MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogNDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDE5MHB4KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGNlbnRlcmluZyBmb3IgSG93IEl0IFdvcmtzIHNlY3Rpb24gKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgY2VudGVyIG9ubHkgdGhlIHN1YnRpdGxlIHRleHQgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQ2VudGVyIEFMTCBzZWN0aW9uIHN1YnRpdGxlcyBpbiBXb3JkUHJlc3MgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlcm8tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY3RhLXN1YnRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgc2VjdGlvbiB0aXRsZXMgYXJlIGNlbnRlcmVkICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3MtdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbmRsZXNzLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYWN0aW9uLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLXRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY3RhLXRpdGxlIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGNlbnRlcmluZyBmb3IgYWxsIHNlY3Rpb25zICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDJyZW0gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEFkZGl0aW9uYWwgV29yZFByZXNzIGNvbnRhaW5lciBvdmVycmlkZXMgZm9yIHByb3BlciBjZW50ZXJpbmcgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuaG93LWl0LXdvcmtzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmVuZGxlc3MtcG9zc2liaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAucmVhZHktdG8tY29kZS1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5ob3ctaXQtd29ya3Mtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLnNlZS1pdC1pbi1hY3Rpb24tc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubW9yZS1jYXBhYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5yZWFkeS10by1jb2RlLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5lbmRsZXNzLXBvc3NpYmlsaXRpZXMtc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuc2VlLWl0LWluLWFjdGlvbi1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5sb3ZlZC1ieS1kZXZlbG9wZXJzLXNlY3Rpb24sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLnJlYWR5LXRvLWNvZGUtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tYnVpbGRlci1yb3cgLmhvdy1pdC13b3Jrcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuZW5kbGVzcy1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuYWN0aW9uLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5tb3JlLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93IC5sb3ZlZC1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1idWlsZGVyLXJvdyAuY3RhLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmVuZGxlc3Mtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmFjdGlvbi1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubW9yZS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbiAubG92ZWQtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW4gLmN0YS1zdWJ0aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbl9idWlsZGVyX2NvbHVtbl9pbm5lciAuaG93LWl0LXdvcmtzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5lbmRsZXNzLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5hY3Rpb24tc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLm1vcmUtc3VidGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb25fYnVpbGRlcl9jb2x1bW5faW5uZXIgLmxvdmVkLXN1YnRpdGxlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uX2J1aWxkZXJfY29sdW1uX2lubmVyIC5jdGEtc3VidGl0bGUgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEVuc3VyZSBXb3JkUHJlc3MgY29udGFpbmVycyBkb24ndCBhZGQgd2hpdGUgc3BhY2UgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmVudHJ5LWNvbnRlbnQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5wYWdlLWNvbnRlbnQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBleGNlc3NpdmUgV29yZFByZXNzIG92ZXJyaWRlcyAtIGtlZXAgbWluaW1hbCAqLwoKICAgICAgICAvKiBXb3JkUHJlc3MgY29udGFpbmVyIGNvbXBhdGliaWxpdHkgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IG5vbmU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB9CgogICAgICAgIC8qIFJlc3BvbnNpdmUgRGVzaWduIEltcHJvdmVtZW50cyAqLwogICAgICAgIC8qIEZvciBzY3JlZW5zIDkwMHB4IGFuZCBiZWxvdyAtIFNUQUNLIFZFUlRJQ0FMTFkgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgICAgICAgICAgLnN0ZXBzLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDEuNXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0ZXAtYXJyb3cgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC1jYXJkIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogOTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogOTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEuNXJlbSAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcC10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIE1vYmlsZSByZXNwb25zaXZlIGZpeGVzICovCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXggLSBpbmNyZWFzZWQgZXh0ZW5zaW9uICovCiAgICAgICAgICAgIGJvZHkgewogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogNDBweDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDQwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDMwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA0MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRlbmQgYmFja2dyb3VuZCBwYXR0ZXJuIGRvd24gc2lnbmlmaWNhbnRseSAqLwogICAgICAgICAgICAjbGFuZGluZ1NlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSArIDMwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaGVybyBzZWN0aW9uIGltcHJvdmVtZW50cyAqLwogICAgICAgICAgICAuaGVyby1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDIwcHggMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaW5zaWRlLWhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWljb24gaW1nIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAyLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGhlaWdodDogMi41cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjIgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS40ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDEwcHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tZGVzY3JpcHRpb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucG93ZXJlZC1waWxsIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMTBweCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBFbnN1cmUgbGFuZGluZ1NlY3Rpb24gaGFzIHByb3BlciBwYWRkaW5nIG9uIG1vYmlsZSB0byBwcmV2ZW50IGVsZW1lbnRzIHRvdWNoaW5nIGVkZ2VzICovCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaW5wdXQgc2VjdGlvbiBmaXhlcyAqLwogICAgICAgICAgICAuaW5wdXQtc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5pbnB1dC1pbm5lci1jb250YWluZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaW5wdXQtY29udGFpbmVyLAogICAgICAgICAgICAucHJvbXB0LWlucHV0LAogICAgICAgICAgICAuaW5wdXQtZ3JvdXAgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIE1vYmlsZSBoZXJvIGNvbnRlbnQgKi8KICAgICAgICAgICAgLmhlcm8tY29udGVudCwKICAgICAgICAgICAgLmhlcm8tdGV4dCB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgZmVhdHVyZXMgZ3JpZCAtIHNpbmdsZSBjb2x1bW4gKi8KICAgICAgICAgICAgLmZlYXR1cmVzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZS1jYXJkIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDM1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgaW5wdXQgY29udGFpbmVycyAqLwogICAgICAgICAgICAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmlucHV0LWlubmVyLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucHJvbXB0LWlucHV0IHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNb2JpbGUgc3VnZ2VzdGVkIGFwcHMgKi8KICAgICAgICAgICAgLnN1Z2dlc3RlZC1hcHBzIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogTW9iaWxlLXNwZWNpZmljIGJhY2tncm91bmQgaGVpZ2h0IHJlZHVjdGlvbiAqLwogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIsCiAgICAgICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gewogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTIwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTcwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEZ1cnRoZXIgcmVkdWN0aW9uIGZvciB2ZXJ5IHNtYWxsIHNjcmVlbnMgKi8KICAgICAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CgogICAgICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyLAogICAgICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nLXRvcDogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAxNjBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7CgogICAgICAgICAgICAvKiBFeHRyYSBzbWFsbCBzY3JlZW5zIC0gaW1wcm92ZWQgaGVybyByZXNwb25zaXZlbmVzcyAqLwogICAgICAgICAgICAuaGVyby1zZWN0aW9uIGgxIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMS42cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLXNlY3Rpb24gcCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjEgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tc3VidGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgNXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiA4cHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMyAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1pY29uIGltZyB7CiAgICAgICAgICAgICAgICB3aWR0aDogMnJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjhyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW46IDhweCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogZml0LWNvbnRlbnQgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBFeHRyYSBzbWFsbCBzY3JlZW5zIC0gaW1wcm92ZWQgdGVzdGltb25pYWwgcmVzcG9uc2l2ZW5lc3MgKi8KICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAzMDBweDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMC41cmVtOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gMS41cmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtbmF2IHsKICAgICAgICAgICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYucHJldi1idG4gewogICAgICAgICAgICAgICAgbGVmdDogNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtbmF2Lm5leHQtYnRuIHsKICAgICAgICAgICAgICAgIHJpZ2h0OiA1cHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1jYXJkIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW07CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtYXZhdGFyIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAzNXB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtcXVvdGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMS41OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF1dGhvci1uYW1lIHsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF1dGhvci10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItY29tcGFueSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuOHJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWRvdHMgewogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgICAgICAgICAgICAgZ2FwOiAwLjVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1kb3RzIC5kb3QgewogICAgICAgICAgICAgICAgd2lkdGg6IDhweDsKICAgICAgICAgICAgICAgIGhlaWdodDogOHB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZmVhdHVyZXMtZ3JpZCwKICAgICAgICAgICAgLnBvc3NpYmlsaXRpZXMtZ3JpZCwKICAgICAgICAgICAgLmNhcGFiaWxpdGllcy1ncmlkIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogQWRqdXN0IHRvcCBtYXJnaW4gZm9yIHZlcnkgc21hbGwgc2NyZWVucyAtIGluY3JlYXNlZCBleHRlbnNpb24gKi8KICAgICAgICAgICAgYm9keSB7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiA1MHB4OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgNjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogNDAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmFwcC1jb250YWluZXIgewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDYwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDQwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qIEV4dGVuZCBiYWNrZ3JvdW5kIHBhdHRlcm4gZG93biBmdXJ0aGVyIG9uIHNtYWxsIHNjcmVlbnMgKi8KICAgICAgICAgICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgKyA2MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYm9keSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZSwgY29sb3IgMC4zcyBlYXNlOwogICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgfQoKICAgICAgICAvKiBIaWRlIG1haW4gcGFnZSBzY3JvbGxiYXIgd2hlbiBhcHAgaXMgYWN0aXZlICovCiAgICAgICAgYm9keS5hcHAtYWN0aXZlIHsKICAgICAgICAgICAgLyogb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGhlaWdodDogMTAwdmg7ICovCiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIGJvZHkgaGFuZGxpbmcgKi8KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIHsKICAgICAgICAgICAgICAgIG92ZXJmbG93OiB2aXNpYmxlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIERlc2t0b3Agc2NyZWVucyBhYm92ZSA3NjhweCAtIHJlbW92ZSB3aGl0ZSBzcGFjZXMgKi8KICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIHsKICAgICAgICAgICAgLmNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5jb250YWluZXIgewogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICAgICAgcGFkZGluZzogMDsKICAgICAgICB9CgogICAgICAgIC5oZWFkZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAwOwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICB6LWluZGV4OiAxMDA7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSwgb3BhY2l0eSAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjNzIGVhc2U7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgICAgIC8qIEhpZGRlbiBieSBkZWZhdWx0IG9uIGxhbmRpbmcgcGFnZSAqLwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwMCUpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIC8qIFNob3cgaGVhZGVyIG9ubHkgd2hlbiBjb252ZXJzYXRpb24gaGFzIHN0YXJ0ZWQgKi8KICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmhlYWRlciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAvKiBGdWxsLXdpZHRoIGhlYWRlciBmaXggb25seSB3aGVuIGFwcCBpcyBhY3RpdmUgKGR1cmluZyBnZW5lcmF0aW9uKSAtIGFib3ZlIDEwMjRweCAqLwogICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiAxMDI1cHgpIHsKICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAjd3JhcHBlciAuaGVhZGVyLAogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi13cmFwcGVyIC5oZWFkZXIsCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZnVzaW9uLXBhZ2Utd3JhcHBlciAuaGVhZGVyLAogICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLmZ1c2lvbi1wYWdlLXdyYXBwZXItcm93IC5oZWFkZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiBjYWxjKDFyZW0gKyA1MHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogLTUwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CgogICAgICAgIC5sb2dvLWdyb3VwIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxMnB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlOwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tZ3JvdXA6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xNSk7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICB9CgogICAgICAgIC5sb2dvLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgICAgICBmb250LWZhbWlseTogJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlOwogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogLTFweDsKICAgICAgICB9CgogICAgICAgIC5sb2dvLXRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDEuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmxvZ28tdGV4dCAuYm9sZCB7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgIH0KCiAgICAgICAgLmhlYWRlci1yaWdodCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICByaWdodDogMjBweDsKICAgICAgICB9CgogICAgICAgIC5naXRodWItYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiA1cHg7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgfQoKICAgICAgICAuZG93bmxvYWQtYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNGE5MGUyLCAjMzU3YWJkKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMzU3YWJkLCAjMmE2YWEwKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmRvd25sb2FkLWJ0bjphY3RpdmUgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDBhZDlmLCAjMDBkNGFhKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQoKICAgICAgICAuZGVwbG95LW5ldGxpZnktYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTQ3ZiwgIzAwYjM5NCk7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDE3MywgMTU5LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmRlcGxveS1uZXRsaWZ5LWJ0bjphY3RpdmUgewogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CiAgICAgICAgfQoKICAgICAgICAvKiBTZXQgVG9rZW4gYnV0dG9uIHN0eWxlZCB0byBtYXRjaCBEZXBsb3kgdG8gTmV0bGlmeSAqLwogICAgICAgIC5zZXQtdG9rZW4tYnRuIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxMnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDBhZDlmLCAjMDBkNGFhKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTBweDsKICAgICAgICAgICAgbWluLXdpZHRoOiA0MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDM2cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZ2FwOiA2cHg7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgfQoKICAgICAgICAuc2V0LXRva2VuLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk0N2YsICMwMGIzOTQpOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAxNzMsIDE1OSwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5zZXQtdG9rZW4tYnRuOmFjdGl2ZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICB9CgogICAgICAgIC5kb3dubG9hZC1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLnBvd2VyZWQtcGlsbCB7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luOiAycmVtIGF1dG87CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UsIGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICAgICAgLyogTWVyZ2VkIGRhcmsgdGhlbWUgc3R5bGVzICovCiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICB9CgogICAgICAgIC5tYWluLWhlYWRpbmcgewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi43cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLyogVHlwaW5nIGFuaW1hdGlvbiBzdHlsZXMgKi8KICAgICAgICAjYW5pbWF0ZWQtd29yZCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBtaW4td2lkdGg6IDEyMHB4OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgIH0KCiAgICAgICAgI2FuaW1hdGVkLXdvcmQ6OmFmdGVyIHsKICAgICAgICAgICAgY29udGVudDogJ3wnOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIGFuaW1hdGlvbjogYmxpbmsgMXMgaW5maW5pdGU7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGJsaW5rIHsKCiAgICAgICAgICAgIDAlLAogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNTElLAogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgdHlwZXdyaXRlciB7CiAgICAgICAgICAgIGZyb20gewogICAgICAgICAgICAgICAgd2lkdGg6IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRvIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAubWFpbi1oZWFkaW5nIC5ibHVlIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgIH0KCiAgICAgICAgLyogTGFuZGluZyBwYWdlIGlucHV0IHN0eWxpbmcgLSBFeHRlbmRlZCB0b3AgYW5kIGJvdHRvbSBjb3ZlcmFnZSAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgcGFkZGluZzogODBweCAwIDE1MHB4IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtODBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAtMTUwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEFuaW1hdGVkIHN0YXJyeSBiYWNrZ3JvdW5kICovCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDEwMHB4KTsKICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZToKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDIwcHggMzBweCwgIzRhOTBlMiwgdHJhbnNwYXJlbnQpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDJweCAycHggYXQgNDBweCA3MHB4LCByZ2JhKDc0LCAxNDQsIDIyNiwgMC44KSwgdHJhbnNwYXJlbnQpLAogICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KDFweCAxcHggYXQgOTBweCA0MHB4LCAjNmI3M2ZmLCB0cmFuc3BhcmVudCksCiAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoMXB4IDFweCBhdCAxMzBweCA4MHB4LCByZ2JhKDEwNywgMTE1LCAyNTUsIDAuNiksIHRyYW5zcGFyZW50KSwKICAgICAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgycHggMnB4IGF0IDE2MHB4IDMwcHgsICM0YTkwZTIsIHRyYW5zcGFyZW50KTsKICAgICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdDsKICAgICAgICAgICAgYmFja2dyb3VuZC1zaXplOiAyMDBweCAxMDBweDsKICAgICAgICAgICAgYW5pbWF0aW9uOiB0d2lua2xlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTsKICAgICAgICAgICAgei1pbmRleDogMDsKICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgdHdpbmtsZSB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIEhlcm8gU2VjdGlvbiAqLwogICAgICAgIC5oZXJvLXNlY3Rpb24gewogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIHBhZGRpbmc6IDByZW0gMCAwcmVtOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAuaW5zaWRlLWhlcm8tc2VjdGlvbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLmhlcm8taWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogM3JlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgICAgICAgICBjb2xvcjogIzRhOTBlMjsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBhbmltYXRpb246IGZsb2F0IDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgIH0KCiAgICAgICAgLmhlcm8taWNvbiBpbWcgewogICAgICAgICAgICB3aWR0aDogNHJlbTsKICAgICAgICAgICAgaGVpZ2h0OiAyLjVyZW07CiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBmbG9hdCB7CgogICAgICAgICAgICAwJSwKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC5oZXJvLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAzLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDAgMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5oZXJvLXN1YnRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjNyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICAgICAgbWF4LXdpZHRoOiA2MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICB9CgogICAgICAgIC5oZXJvLWRlc2NyaXB0aW9uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogNTAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAvKiBVcGRhdGUgaW5wdXQgc2VjdGlvbiBmb3IgZGFyayB0aGVtZSAqLwogICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICAgICAgLyogTWVyZ2VkIHN0eWxlcyAqLwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICB9CgogICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtaW5uZXItY29udGFpbmVyLnZlcnRpY2FsIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICB9CgogICAgICAgICNsYW5kaW5nU2VjdGlvbiAucHJvbXB0LWlucHV0IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHggMTJweCAwIDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICByZXNpemU6IG5vbmU7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYwcHg7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDIwMHB4OwogICAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgICNsYW5kaW5nU2VjdGlvbiAuaW5wdXQtY29udHJvbHMtcm93IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwIDEycHggMTJweDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDUwcHg7CiAgICAgICAgICAgIGdhcDogMTJweDsKICAgICAgICAgICAgLyogTWVyZ2VkL3VwZGF0ZWQgc3R5bGVzICovCiAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgIH0KCiAgICAgICAgI2xhbmRpbmdTZWN0aW9uIC5wcm9tcHQtaW5wdXQ6OnBsYWNlaG9sZGVyIHsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsKICAgICAgICB9CgogICAgICAgIC5nZW5lcmF0ZS1jb2RlLWJ0biB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0YTkwZTIsICM2YjczZmYpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMC43NXJlbSAxLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLXdpZHRoOiBmaXQtY29udGVudCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMykgIWltcG9ydGFudDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZSAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmdlbmVyYXRlLWNvZGUtYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCkgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZlYXR1cmVzIEdyaWQgKi8KICAgICAgICAuZmVhdHVyZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjgwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDJyZW07CiAgICAgICAgICAgIG1hcmdpbjogNHJlbSAwOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBwYWRkaW5nOiAycmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtY2FyZDo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAtMTAwJTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSksIHRyYW5zcGFyZW50KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jYXJkOmhvdmVyOjpiZWZvcmUgewogICAgICAgICAgICBsZWZ0OiAxMDAlOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtY2FyZDpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMik7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiAjNGE5MGUyOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1pY29uIGltZyB7CiAgICAgICAgICAgIHdpZHRoOiAyLjVyZW07CiAgICAgICAgICAgIGhlaWdodDogMi41cmVtOwogICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICB9CgogICAgICAgIC8qIEFnZ3Jlc3NpdmUgV29yZFByZXNzIHdoaXRlIHNwYWNlIHJlbW92YWwgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLWZsZXgsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5jb250YWluZXIgewogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSkgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIHJlbW92ZSBhbnkgV29yZFByZXNzIGNvbnRhaW5lciBjb25zdHJhaW50cyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxheW91dC1ib3hlZC1tb2RlICNtYWluLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAubGF5b3V0LXdpZGUtbW9kZSAjbWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmxheW91dC13aWRlLW1vZGUgI3dyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cmFwcGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnNpdGUtY29udGVudCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBhbnkgV29yZFByZXNzIHRoZW1lIHBhZGRpbmcvbWFyZ2lucyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAqIHsKICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogVGFyZ2V0IHNwZWNpZmljIFdvcmRQcmVzcyB0aGVtZSBlbGVtZW50cyBjYXVzaW5nIHdoaXRlIHNwYWNlcyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1oZWFkZXItd3JhcHBlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1zZWNvbmRhcnktaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLW1haW4taGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXZhZGEtaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuaGVhZGVyLXdyYXBwZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWhlYWRlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLm1haW4taGVhZGVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMHZ3ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjkpICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgYW55IFdvcmRQcmVzcyB0aGVtZSBjb250YWluZXIgcGFkZGluZyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWNvbnRhaW5lciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZ1c2lvbi1yb3csCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5mdXNpb24tY29sdW1uLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItcm93LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZnVzaW9uLWJ1aWxkZXItY29sdW1uIHsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb3JjZSBoZWFkZXIgdG8gYnJlYWsgb3V0IG9mIGFueSBjb250YWluZXIgY29uc3RyYWludHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmhlYWRlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICAgICAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5oZWFkZXIgKiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyICogewogICAgICAgICAgICBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIE92ZXJyaWRlIFdvcmRQcmVzcyBiYWNrZ3JvdW5kIGNvbG9yIGZvciBtYWluIGVsZW1lbnRzICovCiAgICAgICAgI21haW4sCiAgICAgICAgLmxheW91dC1ib3hlZC1tb2RlICNtYWluLAogICAgICAgIC5sYXlvdXQtYm94ZWQtbW9kZS5hdmFkYS1mb290ZXItZngtc3RpY2t5IC5hYm92ZS1mb290ZXItd3JhcHBlciwKICAgICAgICAubGF5b3V0LWJveGVkLW1vZGUuYXZhZGEtZm9vdGVyLWZ4LXN0aWNreS13aXRoLXBhcmFsbGF4LWJnLWltYWdlIC5hYm92ZS1mb290ZXItd3JhcHBlciwKICAgICAgICAubGF5b3V0LXdpZGUtbW9kZSAjbWFpbiwKICAgICAgICAubGF5b3V0LXdpZGUtbW9kZSAjd3JhcHBlciwKICAgICAgICBib2R5LAogICAgICAgIGh0bWwsCiAgICAgICAgaHRtbCBib2R5LmN1c3RvbS1iYWNrZ3JvdW5kIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IFdvcmRQcmVzcyB0ZW1wbGF0ZSBlbGVtZW50cyAtIHJlbW92ZSB1bndhbnRlZCBsaW5lcyBhbmQgYmFja2dyb3VuZHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgKiB7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIHdoaXRlIGxpbmUgYXQgdG9wIG9mIFdvcmRQcmVzcyBpbnRlcmZhY2UgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjM6OmJlZm9yZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjM6OmFmdGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAqOjpiZWZvcmUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICo6OmFmdGVyIHsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbnRlbnQ6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSB0b3AgYm9yZGVycyBhbmQgbGluZXMgZnJvbSBXb3JkUHJlc3MgZWxlbWVudHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgYm9keSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgaHRtbCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI3BhZ2UsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1oZWFkZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLW1haW4sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5zaXRlLWZvb3RlciwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndwLXNpdGUtYmxvY2tzLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAud3AtYmxvY2stZ3JvdXAsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cC1jb250YWluZXIgewogICAgICAgICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBvdXRsaW5lOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBzcGVjaWZpYyBib3JkZXJzIGZyb20gV29yZFByZXNzIGVsZW1lbnRzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIGRpdiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgc2VjdGlvbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgYXJ0aWNsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgbWFpbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgaGVhZGVyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyBmb290ZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIG5hdiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgYXNpZGUgewogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1sZWZ0OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci1yaWdodDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIGJhY2tncm91bmRzIGZyb20gV29yZFByZXNzIHRlbXBsYXRlIGVsZW1lbnRzICovCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cC1jb250YWluZXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cC1ibG9jay1ncm91cCwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWJsb2NrLWNvbHVtbiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLndwLWJsb2NrLWNvbHVtbnMsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5lbnRyeS1jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuc2l0ZS1jb250ZW50LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY29udGVudC1hcmVhIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBXb3JkUHJlc3MgYWRtaW4gYmFyIGFuZCB0b3AgZWxlbWVudHMgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI3dwYWRtaW5iYXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hZG1pbi1iYXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC53cC1hZG1pbi1iYXIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIFtpZCo9ImFkbWluIl0sCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIFtjbGFzcyo9ImFkbWluIl0gewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgcmVtb3ZlIGFueSB0b3AtbGV2ZWwgYm9yZGVycyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2Mz4qIHsKICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgb3V0bGluZTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIG1vYmlsZSBmb290ZXIgYmFja2dyb3VuZCBmaXhlcyAtIGluY3JlYXNlZCAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyA4MDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDgwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBXb3JkUHJlc3MgbW9iaWxlIGZvb3RlciBiYWNrZ3JvdW5kIGV4dGVuc2lvbiAtIGluY3JlYXNlZCAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgewogICAgICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDIwMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggKyAyMDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDAlICsgMjAwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIEFkZGl0aW9uYWwgV29yZFByZXNzIG92ZXJyaWRlcyBmb3IgZmVhdHVyZSBjYXJkcyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZmVhdHVyZS1jYXJkIGgzLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuY2FwYWJpbGl0eS1jYXJkIGgzLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAucG9zc2liaWxpdHktY2FyZCBoMyB7CiAgICAgICAgICAgIGNvbG9yOiAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFdvcmRQcmVzcy1zcGVjaWZpYyBoZWFkaW5nIGNvbG9yIGZpeGVzICovCiAgICAgICAgLyogV29yZFByZXNzLXNwZWNpZmljIGhlYWRpbmcgY29sb3IgZml4ZXMgLSBvbmx5IGZvciBvdXIgYXBwIGNvbnRlbnQgKi8KICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIGgxLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDIsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoMywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgI2xhbmRpbmdTZWN0aW9uIGg0LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAjbGFuZGluZ1NlY3Rpb24gaDUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzICNsYW5kaW5nU2VjdGlvbiBoNiwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDEsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGgyLAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoMywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmFwcC1jb250YWluZXIgaDQsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5hcHAtY29udGFpbmVyIGg1LAogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuYXBwLWNvbnRhaW5lciBoNiB7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBTcGVjaWZpYyBXb3JkUHJlc3Mgb3ZlcnJpZGVzIGZvciBmZWF0dXJlIHRpdGxlcyAqLwogICAgICAgIGJvZHkucGFnZS1pZC01OTM2MyAuZmVhdHVyZS10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktdGl0bGUsCiAgICAgICAgYm9keS5wYWdlLWlkLTU5MzYzIC5wb3NzaWJpbGl0eS10aXRsZSwKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmZlYXR1cmUtY2FyZCBoMywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLmNhcGFiaWxpdHktY2FyZCBoMywKICAgICAgICBib2R5LnBhZ2UtaWQtNTkzNjMgLnBvc3NpYmlsaXR5LWNhcmQgaDMgewogICAgICAgICAgICBjb2xvcjogIzRhOTBlMiAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgZmVhdHVyZSB0aXRsZXMgYXJlIGJsdWUgaW4gV29yZFByZXNzICovCiAgICAgICAgLmZlYXR1cmUtdGl0bGUgewogICAgICAgICAgICBjb2xvcjogIzRhOTBlMiAhaW1wb3J0YW50OwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGdXNpb24gQnVpbGRlciBhbmQgV29yZFByZXNzIGgxIGNvbG9yIG92ZXJyaWRlICovCiAgICAgICAgZnVzaW9uLW1vZGFsIGgxLCAuZnVzaW9uLXBvc3QtY29udGVudCBoMSwgLmZ1c2lvbi10Yi1mb290ZXIgaDEsIC5mdXNpb24tdGItcGFnZS10aXRsZS1iYXIgaDEsIC5mdXNpb24td2lkZ2V0LWFyZWEgaDEsIC5wb3N0LWNvbnRlbnQgaDEsIC5zZWFyY2gtcGFnZS1zZWFyY2gtZm9ybSBoMSwgLnRpdGxlIGgxLCBoMSB7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGdXNpb24gQnVpbGRlciBhbmQgV29yZFByZXNzIGgzIGNvbG9yIG92ZXJyaWRlICovCiAgICAgICAgLmZ1c2lvbi1hdXRob3IgLmZ1c2lvbi1hdXRob3ItdGl0bGUsIC5mdXNpb24tbW9kYWwgLm1vZGFsLXRpdGxlLCAuZnVzaW9uLXdpZGdldC1hcmVhIGgzLCAucG9zdC1jb250ZW50IGgzLCAucHJvamVjdC1jb250ZW50IGgzLCAuc2lkZWJhciAud2lkZ2V0IGgzLCAubWFpbi1mbGV4IC5zbGlkZS1jb250ZW50IGgzLCBoMyB7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1kZXNjcmlwdGlvbiB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICB9CgogICAgICAgIC5xdWljay1hcHBzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC13cmFwOiB3cmFwOwogICAgICAgICAgICBnYXA6IDFyZW07CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAzcmVtOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAucXVpY2stYXBwLWJ0biB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDVweCk7CiAgICAgICAgfQoKICAgICAgICAucXVpY2stYXBwLWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjQpOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgIH0KCiAgICAgICAgLyogSG93IEl0IFdvcmtzIFNlY3Rpb24gKi8KICAgICAgICAuaG93LWl0LXdvcmtzLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwIDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5ob3ctaXQtd29ya3MtdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5ob3ctaXQtd29ya3Mtc3VidGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnRleHQtd2hpdGUgewogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgfQoKICAgICAgICAuc3RlcHMtY29udGFpbmVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMnJlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKICAgICAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAwIDFyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogOTAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAuc3RlcC1jYXJkIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBwYWRkaW5nOiAycmVtIDEuNXJlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiAyODBweDsKICAgICAgICAgICAgZmxleDogMTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuc3RlcC1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLnN0ZXAtbnVtYmVyIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IC0xNXB4OwogICAgICAgICAgICBsZWZ0OiAtNXB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIHdpZHRoOiAzNXB4OwogICAgICAgICAgICBoZWlnaHQ6IDM1cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICB9CgogICAgICAgIC5zdGVwLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDIuNXJlbTsKICAgICAgICAgICAgbWFyZ2luOiAxcmVtIDA7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIH0KCiAgICAgICAgLnN0ZXAtaWNvbiBpbWcgewogICAgICAgICAgICB3aWR0aDogMi41cmVtOwogICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbTsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLnN0ZXAtdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07CiAgICAgICAgfQoKICAgICAgICAuc3RlcC1kZXNjcmlwdGlvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICB9CgogICAgICAgIC5zdGVwLWFycm93IHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICBmbGV4OiAwIDAgYXV0bzsKICAgICAgICB9CgogICAgICAgIC50cnktbm93LWJ0biB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyQTQxRTc7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDIuNXJlbTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSg0MiwgNjUsIDIzMSwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC50cnktbm93LWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxZTJlYjM7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA2cHggMjBweCByZ2JhKDQyLCA2NSwgMjMxLCAwLjQpOwogICAgICAgIH0KCiAgICAgICAgLyogRW5kbGVzcyBQb3NzaWJpbGl0aWVzIFNlY3Rpb24gKi8KICAgICAgICAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwIDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuZW5kbGVzcy10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi41cmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmVuZGxlc3Mtc3VidGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnBvc3NpYmlsaXRpZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZml0LCBtaW5tYXgoMjQwcHgsIDFmcikpOwogICAgICAgICAgICBnYXA6IDFyZW07CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDVyZW07CiAgICAgICAgfQoKICAgICAgICAucG9zc2liaWxpdHktY2FyZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAxLjVyZW07CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICB9CgogICAgICAgIC5wb3NzaWJpbGl0eS1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsKICAgICAgICB9CgogICAgICAgIC5wb3NzaWJpbGl0eS1pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDQ4cHg7CiAgICAgICAgICAgIGhlaWdodDogNDhweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgICAgIH0KCiAgICAgICAgLnBvc3NpYmlsaXR5LWljb24gaW1nIHsKICAgICAgICAgICAgd2lkdGg6IDI0cHg7CiAgICAgICAgICAgIGhlaWdodDogMjRweDsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAucG9zc2liaWxpdHktdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAuOHJlbTsKICAgICAgICB9CgogICAgICAgIC5wb3NzaWJpbGl0eS1kZXNjcmlwdGlvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTsKICAgICAgICB9CgogICAgICAgIC5wb3B1bGFyLXByb21wdHMtc2VjdGlvbiB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDRyZW07CiAgICAgICAgfQoKICAgICAgICAucG9wdWxhci1wcm9tcHRzLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjhyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgICAgIH0KCiAgICAgICAgLnBvcHVsYXItcHJvbXB0cy1ncmlkIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgzMjBweCwgMWZyKSk7CiAgICAgICAgICAgIGdhcDogMXJlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLnBvcHVsYXItcHJvbXB0LWJ0biB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgICAgICAgICAgcGFkZGluZzogMXJlbSAwLjVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICB9CgogICAgICAgIC5wb3B1bGFyLXByb21wdC1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICB9CgogICAgICAgIC8qIFNlZSBJdCBJbiBBY3Rpb24gU2VjdGlvbiAqLwogICAgICAgIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwIDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuYWN0aW9uLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuYWN0aW9uLXN1YnRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5kZW1vLXRhYnMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgICAgICAgICAgZ2FwOiAwOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAzcmVtOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBwYWRkaW5nOiA0cHg7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBtYXgtd2lkdGg6IDI1MHB4OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tdGFiIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICAgICAgICAgIGdhcDogMC41cmVtOwogICAgICAgICAgICBmbGV4OiAxOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgbWluLXdpZHRoOiAxOTVweDsKICAgICAgICB9CgogICAgICAgIC5kZW1vLXRhYjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7CiAgICAgICAgfQoKICAgICAgICAuZGVtby10YWIuYWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSg0MiwgNjUsIDIzMSwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC50YWItaWNvbiB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAudGFiLWljb24gaW1nIHsKICAgICAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgICAgIGhlaWdodDogMTZweDsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY29udGFpbjsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgfQoKICAgICAgICAudGFiLXRleHQgewogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tY29udGVudCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgbWluLWhlaWdodDogNjAwcHg7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1wYW5lIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuZGVtby1wYW5lLmFjdGl2ZSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tcHJvbXB0IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgICAgICAgICBwYWRkaW5nOiAxLjJyZW0gMS41cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDFyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogNjAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAucHJvbXB0LWljb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgIH0KCiAgICAgICAgLmRlbW8tcHJvbXB0IHNwYW4gewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwogICAgICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICB9CgogICAgICAgIC5kZW1vLWNvZGUtY29udGFpbmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgIH0KCiAgICAgICAgLmNvZGUtaGVhZGVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7CiAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgfQoKICAgICAgICAuY29kZS1kb3RzIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAwLjVyZW07CiAgICAgICAgfQoKICAgICAgICAuZG90IHsKICAgICAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgICAgIGhlaWdodDogMTJweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIH0KCiAgICAgICAgLmRvdC5yZWQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmY1ZjU2OwogICAgICAgIH0KCiAgICAgICAgLmRvdC55ZWxsb3cgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZiZDJlOwogICAgICAgIH0KCiAgICAgICAgLmRvdC5ncmVlbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyN2NhM2Y7CiAgICAgICAgfQoKICAgICAgICAuY29kZS10aXRsZSB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgfQoKICAgICAgICAuY29weS1idG4gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgcGFkZGluZzogMC40cmVtIDAuOHJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuY29weS1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgIH0KCiAgICAgICAgLmNvZGUtaW1hZ2UtY29udGFpbmVyIHsKICAgICAgICAgICAgcGFkZGluZzogMXJlbTsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgICB9CgogICAgICAgIC5jb2RlLWltYWdlIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogYXV0bzsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgfQoKICAgICAgICAvKiBNb2JpbGUgVUkgRGVtbyBTdHlsZXMgKi8KICAgICAgICAuY29kZS1wcmV2aWV3IHsKICAgICAgICAgICAgcGFkZGluZzogMnJlbTsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzFhMWExYTsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQwMHB4OwogICAgICAgIH0KCiAgICAgICAgLm1vYmlsZS1tb2NrdXAgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMmQyZDJkOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAycmVtOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMTBweCAzMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5wcm9maWxlLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4OwogICAgICAgICAgICBwYWRkaW5nOiAycmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICB3aWR0aDogMjUwcHg7CiAgICAgICAgfQoKICAgICAgICAucHJvZmlsZS1hdmF0YXIgewogICAgICAgICAgICB3aWR0aDogODBweDsKICAgICAgICAgICAgaGVpZ2h0OiA4MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAxcmVtOwogICAgICAgIH0KCiAgICAgICAgLnByb2ZpbGUtY2FyZCBoMyB7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICB9CgogICAgICAgIC5wcm9maWxlLWNhcmQgcCB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEuNXJlbTsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW07CiAgICAgICAgfQoKICAgICAgICAucHJvZmlsZS1idG4gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyNXB4OwogICAgICAgICAgICBwYWRkaW5nOiAwLjhyZW0gMnJlbTsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAucHJvZmlsZS1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjM2E3YmM4OwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CiAgICAgICAgfQoKICAgICAgICAvKiBNb3JlIENhcGFiaWxpdGllcyBTZWN0aW9uICovCiAgICAgICAgLm1vcmUtY2FwYWJpbGl0aWVzLXNlY3Rpb24gewogICAgICAgICAgICBtYXJnaW46IDZyZW0gYXV0byA0cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtd2lkdGg6IDEyMDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiA0cmVtIDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMikgMCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSkgMTAwJSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpOwogICAgICAgIH0KCiAgICAgICAgLmZsZXggewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxcmVtOwogICAgICAgIH0KCiAgICAgICAgLm1vcmUtdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDNyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBnYXA6IDFyZW07CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5tb3JlLXN1YnRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5jYXBhYmlsaXRpZXMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICAgICAgICAgIGdhcDogMnJlbTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMnJlbTsKICAgICAgICB9CgogICAgICAgIC5jYXBhYmlsaXR5LWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1LCAyMywgNDIsIDAuOCk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICAgICAgICAgIHBhZGRpbmc6IDIuNXJlbSAycmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5jYXBhYmlsaXR5LWNhcmQ6OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjAyKSAxMDAlKTsKICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7CiAgICAgICAgfQoKICAgICAgICAuY2FwYWJpbGl0eS1jYXJkOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC04cHgpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMjBweCA0MHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5jYXBhYmlsaXR5LWNhcmQ6aG92ZXI6OmJlZm9yZSB7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgfQoKICAgICAgICAuY2FwYWJpbGl0eS1pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDY0cHg7CiAgICAgICAgICAgIGhlaWdodDogNjRweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS44cmVtOwogICAgICAgICAgICBtYXJnaW46IDAgYXV0byAxLjVyZW07CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CgogICAgICAgIC53ZWItaWNvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIH0KCiAgICAgICAgLndlYi1pY29uIGltZyB7CiAgICAgICAgICAgIHdpZHRoOiA2MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiA2MCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5weXRob24taWNvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIH0KCiAgICAgICAgLmRhdGEtaWNvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIH0KCiAgICAgICAgLmFwaS1pY29uIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgfQoKICAgICAgICAubW9iaWxlLWljb24gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsKICAgICAgICB9CgogICAgICAgIC5kZXZvcHMtaWNvbiB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHdoaXRlOwogICAgICAgIH0KCiAgICAgICAgLmNhcGFiaWxpdHktaWNvbiBpbWcgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBvYmplY3QtZml0OiBjb250YWluOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgfQoKICAgICAgICAuY2FwYWJpbGl0eS10aXRsZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4zcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLmNhcGFiaWxpdHktZGVzY3JpcHRpb24gewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgei1pbmRleDogMTsKICAgICAgICB9CgogICAgICAgIC8qIEdyYWRpZW50IFRleHQgKi8KICAgICAgICAuZ3JhZGllbnQtdGV4dCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgI2ZmOGE4MCwgIzgwZGVlYSwgIzgxZDRmYSwgI2E1ZDZhNywgI2ZmZjU5ZCwgI2UxYmVlNywgI2IyZGZkYik7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogNDAwJSA0MDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZ3JhZGllbnRGbG93IDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBncmFkaWVudEZsb3cgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDI1JSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxMDAlIDUwJTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgMTAwJTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNzUlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAlIDEwMCU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgNTAlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBGb290ZXIgKi8KICAgICAgICAuZm9vdGVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBwYWRkaW5nOiAyLjVyZW0gNHJlbTsKICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IGNhbGMoMi41cmVtICsgMTUwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEyMHB4OwogICAgICAgICAgICBmb250LXNpemU6IDAuODVyZW07CiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IC0xNTBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgIH0KCiAgICAgICAgLmZvb3Rlci1sZWZ0IGEgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB9CgogICAgICAgIC5mb290ZXItcmlnaHQgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgfQoKICAgICAgICAuZm9vdGVyLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuM3JlbTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5mb290ZXItaWNvbjpob3ZlciB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICB9CgogICAgICAgIC8qIC0tLSBDSEFUICYgQVBQIElOVEVSRkFDRSBTVFlMRVMgLS0tICovCgogICAgICAgIC8qIEluaXRpYWxseSBoaWRlIGNoYXQgaW50ZXJmYWNlICovCiAgICAgICAgI2NoYXRJbnRlcmZhY2UgewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIH0KCiAgICAgICAgLyogQ2hhdCBpbnRlcmZhY2UgY29udGFpbmVyICovCiAgICAgICAgLmNoYXQtaW50ZXJmYWNlIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICAvKiBDaGFuZ2VkIGZyb20gY2FsYygpIHRvIHRha2UgZnVsbCBoZWlnaHQgb2YgcGFyZW50ICovCiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jb2xvcik7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgfQoKICAgICAgICAuY2hhdC1tZXNzYWdlcyB7CiAgICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICAgIHBhZGRpbmc6IDI0cHg7CiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGdhcDogMThweDsKICAgICAgICAgICAgbWluLWhlaWdodDogMzAwcHg7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDYwdmg7CiAgICAgICAgfQoKICAgICAgICAuY2hhdC1tZXNzYWdlIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOwogICAgICAgICAgICBnYXA6IDEycHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgfQoKICAgICAgICAuY2hhdC1tZXNzYWdlLnVzZXIgewogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7CiAgICAgICAgfQoKICAgICAgICAuY2hhdC1tZXNzYWdlIC5hdmF0YXIgewogICAgICAgICAgICBmb250LXNpemU6IDEuN3JlbTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnB4OwogICAgICAgIH0KCiAgICAgICAgLyogQ29uc29saWRhdGVkIENoYXQgQnViYmxlIFN0eWxlcyAqLwogICAgICAgIC5jaGF0LWJ1YmJsZSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHggMThweDsKICAgICAgICAgICAgbWFyZ2luOiAxMHB4IDA7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE4cHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjA1cmVtOwogICAgICAgICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgICAgIG1heC13aWR0aDogOTAlOwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtYnViYmxlLnVzZXIgewogICAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LWVuZDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5jaGF0LWJ1YmJsZS51c2VyOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIHJpZ2h0OiAtOHB4OwogICAgICAgICAgICB3aWR0aDogOHB4OwogICAgICAgICAgICBoZWlnaHQ6IDhweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIGNsaXAtcGF0aDogcG9seWdvbigwIDAsIDAlIDEwMCUsIDEwMCUgMTAwJSk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLyogSW5wdXQgY29udGFpbmVyIGF0IHRoZSBib3R0b20gb2YgdGhlIGNoYXQgdmlldyAqLwogICAgICAgIC5pbnB1dC1jb250YWluZXIgewogICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXN1cmZhY2UtY29sb3IpOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHg7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIC0ycHggMTBweCB2YXIoLS1zaGFkb3cpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgI2NoYXRJbnRlcmZhY2UgLmlucHV0LWlubmVyLWNvbnRhaW5lci52ZXJ0aWNhbCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pbnB1dC1iZyk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlucHV0LWJvcmRlcik7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDE2cHggdmFyKC0tc2hhZG93KTsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBnYXA6IDA7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgI2NoYXRJbnRlcmZhY2UgLmlucHV0LWNvbnRyb2xzLXJvdyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDE2cHg7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ2cHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgMTJweCAxMnB4OwogICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwogICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgICAgICB9CgogICAgICAgICNjaGF0SW50ZXJmYWNlIC5zdWJtaXQtYnRuOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzNhODBkMjsKICAgICAgICB9CgogICAgICAgIC8qIExvYWRpbmcgQm94IFN0eWxlcyAqLwogICAgICAgIC5sb2FkaW5nLWJveCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDAsIDAsIDAsIDAuOTUpIDAlLCByZ2JhKDIwLCAyMCwgMjAsIDAuOTgpIDEwMCUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEycHggNDhweCByZ2JhKDAsIDAsIDAsIDAuNCksIDAgMCAwIDFweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgd2lkdGg6IDcwJTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA0NTBweDsKICAgICAgICAgICAgbWluLWhlaWdodDogMTQwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMnJlbSBhdXRvOwogICAgICAgICAgICBwYWRkaW5nOiA0MHB4IDMwcHggMzVweCAzMHB4OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjZzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nQm94RW50cmFuY2UgMC43cyBlYXNlLW91dCwgbG9hZGluZ0JveFB1bHNlIDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctYm94OjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IC0xMDAlOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKSwgdHJhbnNwYXJlbnQpOwogICAgICAgICAgICBhbmltYXRpb246IGxvYWRpbmdTaGltbWVyIDJzIGluZmluaXRlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctYm94OjphZnRlciB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgaGVpZ2h0OiAzcHg7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzRhOTBlMiwgIzM1N2FiZCwgIzRhOTBlMik7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogMjAwJSAxMDAlOwogICAgICAgICAgICBhbmltYXRpb246IGxvYWRpbmdQcm9ncmVzcyAyLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlLCBncmFkaWVudE1vdmUgMS41cyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMCAyMHB4IDIwcHg7CiAgICAgICAgICAgIHotaW5kZXg6IDI7CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1vdmVybGF5IHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHJpZ2h0OiAwOwogICAgICAgICAgICBib3R0b206IDA7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoMCwgMCwgMCwgMC45NykgMCUsIHJnYmEoMjAsIDIwLCAyMCwgMC45OSkgMTAwJSk7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgICAgICB6LWluZGV4OiAxMDAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNXB4KTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC8qIEhpLXRlY2ggbG9hZGluZyBhbmltYXRpb24gKi8KICAgICAgICAuaGl0ZWNoLWxvYWRlciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgd2lkdGg6IDIwMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICAgICAgICBtYXJnaW46IDIwcHggYXV0bzsKICAgICAgICB9CgogICAgICAgIC8qIENvZGUgTWF0cml4IEVmZmVjdCAqLwogICAgICAgIC5jb2RlLW1hdHJpeCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIH0KCiAgICAgICAgLm1hdHJpeC1saW5lIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB3aWR0aDogMnB4OwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHRyYW5zcGFyZW50IDAlLCAjMDBmZjQxIDUwJSwgdHJhbnNwYXJlbnQgMTAwJSk7CiAgICAgICAgICAgIGFuaW1hdGlvbjogbWF0cml4UmFpbiAycyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICB9CgogICAgICAgIC5tYXRyaXgtbGluZTpudGgtY2hpbGQoMSkgewogICAgICAgICAgICBsZWZ0OiAyMCU7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMHM7CiAgICAgICAgfQoKICAgICAgICAubWF0cml4LWxpbmU6bnRoLWNoaWxkKDIpIHsKICAgICAgICAgICAgbGVmdDogNDAlOwogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuNHM7CiAgICAgICAgfQoKICAgICAgICAubWF0cml4LWxpbmU6bnRoLWNoaWxkKDMpIHsKICAgICAgICAgICAgbGVmdDogNjAlOwogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDAuOHM7CiAgICAgICAgfQoKICAgICAgICAubWF0cml4LWxpbmU6bnRoLWNoaWxkKDQpIHsKICAgICAgICAgICAgbGVmdDogODAlOwogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDEuMnM7CiAgICAgICAgfQoKICAgICAgICAubWF0cml4LWxpbmU6bnRoLWNoaWxkKDUpIHsKICAgICAgICAgICAgbGVmdDogMTAwJTsKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAxLjZzOwogICAgICAgIH0KCiAgICAgICAgLyogQ2VudHJhbCBDb3JlICovCiAgICAgICAgLmNlbnRyYWwtY29yZSB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgICAgIHdpZHRoOiA4MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDgwcHg7CiAgICAgICAgfQoKICAgICAgICAuY29yZS1yaW5nIHsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IDA7CiAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogY29yZVJvdGF0ZSAzcyBsaW5lYXIgaW5maW5pdGU7CiAgICAgICAgfQoKICAgICAgICAuY29yZS1yaW5nOm50aC1jaGlsZCgxKSB7CiAgICAgICAgICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCAjNGE5MGUyOwogICAgICAgICAgICBib3JkZXItcmlnaHQ6IDJweCBzb2xpZCAjNGE5MGUyOwogICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDJzOwogICAgICAgIH0KCiAgICAgICAgLmNvcmUtcmluZzpudGgtY2hpbGQoMikgewogICAgICAgICAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgIzAwZmY0MTsKICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDJweCBzb2xpZCAjMDBmZjQxOwogICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDNzOwogICAgICAgICAgICBhbmltYXRpb24tZGlyZWN0aW9uOiByZXZlcnNlOwogICAgICAgIH0KCiAgICAgICAgLmNvcmUtcmluZzpudGgtY2hpbGQoMykgewogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZmY2YjZiOwogICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDRzOwogICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7CiAgICAgICAgfQoKICAgICAgICAuY29yZS1jZW50ZXIgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogNTAlOwogICAgICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgICAgICAgICB3aWR0aDogMjBweDsKICAgICAgICAgICAgaGVpZ2h0OiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLnB1bHNlLWRvdCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJhZGlhbC1ncmFkaWVudChjaXJjbGUsICM0YTkwZTIgMCUsIHRyYW5zcGFyZW50IDcwJSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBjb3JlUHVsc2UgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIC8qIERhdGEgU3RyZWFtcyAqLwogICAgICAgIC5kYXRhLXN0cmVhbXMgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICB9CgogICAgICAgIC5zdHJlYW0gewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHdpZHRoOiAxcHg7CiAgICAgICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgdHJhbnNwYXJlbnQgMCUsICM0YTkwZTIgNTAlLCB0cmFuc3BhcmVudCAxMDAlKTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzdHJlYW1GbG93IDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgfQoKICAgICAgICAuc3RyZWFtLTEgewogICAgICAgICAgICB0b3A6IDEwJTsKICAgICAgICAgICAgbGVmdDogMTAlOwogICAgICAgICAgICBhbmltYXRpb24tZGVsYXk6IDBzOwogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7CiAgICAgICAgfQoKICAgICAgICAuc3RyZWFtLTIgewogICAgICAgICAgICB0b3A6IDEwJTsKICAgICAgICAgICAgcmlnaHQ6IDEwJTsKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjNzOwogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgIH0KCiAgICAgICAgLnN0cmVhbS0zIHsKICAgICAgICAgICAgYm90dG9tOiAxMCU7CiAgICAgICAgICAgIGxlZnQ6IDEwJTsKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwLjZzOwogICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOwogICAgICAgIH0KCiAgICAgICAgLnN0cmVhbS00IHsKICAgICAgICAgICAgYm90dG9tOiAxMCU7CiAgICAgICAgICAgIHJpZ2h0OiAxMCU7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kZWxheTogMC45czsKICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgICAgIH0KCiAgICAgICAgLyogR2VvbWV0cmljIFBhdHRlcm5zICovCiAgICAgICAgLmdlb21ldHJpYy1wYXR0ZXJucyB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5oZXgtcGF0dGVybiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzRhOTBlMjsKICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOwogICAgICAgICAgICBhbmltYXRpb246IGhleEZsb2F0IDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgICAgfQoKICAgICAgICAuaGV4LXBhdHRlcm46bnRoLWNoaWxkKDEpIHsKICAgICAgICAgICAgdG9wOiAyMCU7CiAgICAgICAgICAgIGxlZnQ6IDIwJTsKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAwczsKICAgICAgICB9CgogICAgICAgIC5oZXgtcGF0dGVybjpudGgtY2hpbGQoMikgewogICAgICAgICAgICB0b3A6IDYwJTsKICAgICAgICAgICAgcmlnaHQ6IDIwJTsKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAxLjNzOwogICAgICAgICAgICBib3JkZXItY29sb3I6ICMwMGZmNDE7CiAgICAgICAgfQoKICAgICAgICAuaGV4LXBhdHRlcm46bnRoLWNoaWxkKDMpIHsKICAgICAgICAgICAgYm90dG9tOiAyMCU7CiAgICAgICAgICAgIGxlZnQ6IDUwJTsKICAgICAgICAgICAgYW5pbWF0aW9uLWRlbGF5OiAyLjZzOwogICAgICAgICAgICBib3JkZXItY29sb3I6ICNmZjZiNmI7CiAgICAgICAgfQoKICAgICAgICAuc2FuZHBhY2std3JhcHBlci5sb2FkaW5nIHsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLnNhbmRwYWNrLXdyYXBwZXIubG9hZGluZyAubG9hZGluZy1vdmVybGF5IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYW5pbWF0aW9uOiBsb2FkaW5nT3ZlcmxheUZhZGVJbiAwLjVzIGVhc2Utb3V0OwogICAgICAgIH0KCiAgICAgICAgLnNhbmRwYWNrLXdyYXBwZXIubG9hZGluZyAuc2FuZHBhY2stY29udGFpbmVyIHsKICAgICAgICAgICAgb3BhY2l0eTogMC4yOwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAubG9hZGluZy1tZXNzYWdlIHsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBvcGFjaXR5OiAwLjk1OwogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOwogICAgICAgICAgICBhbmltYXRpb246IHRleHRGYWRlSW4gMXMgZWFzZS1vdXQsIHRleHRCcmVhdGggNHMgZWFzZS1pbi1vdXQgaW5maW5pdGU7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjhweDsKICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICAgIHotaW5kZXg6IDM7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLXNwaW5uZXIgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHdpZHRoOiA1MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDUwcHg7CiAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICB6LWluZGV4OiAzOwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctc3Bpbm5lcjo6YmVmb3JlIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICBsZWZ0OiAwOwogICAgICAgICAgICB3aWR0aDogNTBweDsKICAgICAgICAgICAgaGVpZ2h0OiA1MHB4OwogICAgICAgICAgICBib3JkZXI6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyLXRvcDogNHB4IHNvbGlkICM0YTkwZTI7CiAgICAgICAgICAgIGJvcmRlci1yaWdodDogNHB4IHNvbGlkICM0YTkwZTI7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzcGluTWFpbiAxLjRzIGN1YmljLWJlemllcigwLjY4LCAtMC41NSwgMC4yNjUsIDEuNTUpIGluZmluaXRlOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLXNwaW5uZXI6OmFmdGVyIHsKICAgICAgICAgICAgY29udGVudDogJyc7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiA4cHg7CiAgICAgICAgICAgIGxlZnQ6IDhweDsKICAgICAgICAgICAgd2lkdGg6IDM0cHg7CiAgICAgICAgICAgIGhlaWdodDogMzRweDsKICAgICAgICAgICAgYm9yZGVyOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDNweCBzb2xpZCAjMzU3YWJkOwogICAgICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICMzNTdhYmQ7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBzcGluUmV2ZXJzZSAxcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkgaW5maW5pdGU7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLWJveCAucGFydGljbGUgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHdpZHRoOiA2cHg7CiAgICAgICAgICAgIGhlaWdodDogNnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNGE5MGUyOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICAgICAgei1pbmRleDogMjsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLWJveCAucGFydGljbGU6bnRoLWNoaWxkKDEpIHsKICAgICAgICAgICAgdG9wOiAxNSU7CiAgICAgICAgICAgIGxlZnQ6IDEwJTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdFBhcnRpY2xlMSA0cyBlYXNlLWluLW91dCBpbmZpbml0ZTsKICAgICAgICB9CgogICAgICAgIC5sb2FkaW5nLWJveCAucGFydGljbGU6bnRoLWNoaWxkKDIpIHsKICAgICAgICAgICAgdG9wOiAyMCU7CiAgICAgICAgICAgIHJpZ2h0OiAxNSU7CiAgICAgICAgICAgIGFuaW1hdGlvbjogZmxvYXRQYXJ0aWNsZTIgMy41cyBlYXNlLWluLW91dCBpbmZpbml0ZSAwLjVzOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMzU3YWJkOwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctYm94IC5wYXJ0aWNsZTpudGgtY2hpbGQoMykgewogICAgICAgICAgICBib3R0b206IDI1JTsKICAgICAgICAgICAgbGVmdDogMjAlOwogICAgICAgICAgICBhbmltYXRpb246IGZsb2F0UGFydGljbGUzIDVzIGVhc2UtaW4tb3V0IGluZmluaXRlIDFzOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNWJhM2Y1OwogICAgICAgIH0KCiAgICAgICAgLmxvYWRpbmctYm94IC5wYXJ0aWNsZTpudGgtY2hpbGQoNCkgewogICAgICAgICAgICBib3R0b206IDMwJTsKICAgICAgICAgICAgcmlnaHQ6IDI1JTsKICAgICAgICAgICAgYW5pbWF0aW9uOiBmbG9hdFBhcnRpY2xlNCAzLjhzIGVhc2UtaW4tb3V0IGluZmluaXRlIDEuNXM7CiAgICAgICAgfQoKICAgICAgICAvKiBMb2FkaW5nIEFuaW1hdGlvbnMgKi8KICAgICAgICBAa2V5ZnJhbWVzIGxvYWRpbmdCb3hFbnRyYW5jZSB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpIHNjYWxlKDAuOCkgcm90YXRlWCgxNWRlZyk7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCByZ2JhKDAsIDAsIDAsIDApOwogICAgICAgICAgICB9CgogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpIHNjYWxlKDEuMDIpIHJvdGF0ZVgoMGRlZyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKSByb3RhdGVYKDBkZWcpOwogICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDQ4cHggcmdiYSgwLCAwLCAwLCAwLjQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGxvYWRpbmdCb3hQdWxzZSB7CgogICAgICAgICAgICAwJSwKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDEycHggNDhweCByZ2JhKDAsIDAsIDAsIDAuNCksIDAgMCAwIDFweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDE2cHggNTZweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xNSksIDAgMCAwIDFweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgbG9hZGluZ1NoaW1tZXIgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICBsZWZ0OiAtMTAwJTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICBsZWZ0OiAxMDAlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGxvYWRpbmdQcm9ncmVzcyB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAwJTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgIHdpZHRoOiA3MCU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgZ3JhZGllbnRNb3ZlIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgMCU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMjAwJSAwJTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBsb2FkaW5nT3ZlcmxheUZhZGVJbiB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE1cHgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHRleHRGYWRlSW4gewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE1cHgpOwogICAgICAgICAgICAgICAgdGV4dC1zaGFkb3c6IDAgMCAwIHJnYmEoMCwgMCwgMCwgMCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMC45NTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKICAgICAgICAgICAgICAgIHRleHQtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjMpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHRleHRCcmVhdGggewoKICAgICAgICAgICAgMCUsCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMC45NTsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBzcGluTWFpbiB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpIHNjYWxlKDEpOwogICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpIHNjYWxlKDEuMSk7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMzBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC41KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHNjYWxlKDEpOwogICAgICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgc3BpblJldmVyc2UgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpIHNjYWxlKDAuOSk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpIHNjYWxlKDEpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKSBzY2FsZSgwLjkpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvKiBQYXJ0aWNsZSBmbG9hdGluZyBhbmltYXRpb25zICovCiAgICAgICAgQGtleWZyYW1lcyBmbG9hdFBhcnRpY2xlMSB7CgogICAgICAgICAgICAwJSwKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KSB0cmFuc2xhdGVYKDBweCk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDI1JSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpIHRyYW5zbGF0ZVgoNXB4KTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTVweCkgdHJhbnNsYXRlWCgtM3B4KTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNzUlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTVweCkgdHJhbnNsYXRlWCg4cHgpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMC45OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0UGFydGljbGUyIHsKCiAgICAgICAgICAgIDAlLAogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHRyYW5zbGF0ZVgoMHB4KTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMzAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KSB0cmFuc2xhdGVYKC00cHgpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNjAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTJweCkgdHJhbnNsYXRlWCg2cHgpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMC44OwogICAgICAgICAgICB9CgogICAgICAgICAgICA5MCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpIHRyYW5zbGF0ZVgoLTJweCk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIEBrZXlmcmFtZXMgZmxvYXRQYXJ0aWNsZTMgewoKICAgICAgICAgICAgMCUsCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCkgdHJhbnNsYXRlWCgwcHgpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMC43OwogICAgICAgICAgICB9CgogICAgICAgICAgICAyMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC02cHgpIHRyYW5zbGF0ZVgoN3B4KTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDQwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0cHgpIHRyYW5zbGF0ZVgoLTVweCk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDgwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgdHJhbnNsYXRlWCgzcHgpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMC45OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGZsb2F0UGFydGljbGU0IHsKCiAgICAgICAgICAgIDAlLAogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpIHRyYW5zbGF0ZVgoMHB4KTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMzUlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOXB4KSB0cmFuc2xhdGVYKC02cHgpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNzAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtN3B4KSB0cmFuc2xhdGVYKDRweCk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDg1JSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTExcHgpIHRyYW5zbGF0ZVgoLTFweCk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIEhpLXRlY2ggYW5pbWF0aW9uIGtleWZyYW1lcyAqLwogICAgICAgIEBrZXlmcmFtZXMgbWF0cml4UmFpbiB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTAwJSk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAxMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgOTAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpOwogICAgICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBjb3JlUm90YXRlIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBjb3JlUHVsc2UgewoKICAgICAgICAgICAgMCUsCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMSk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSkgc2NhbGUoMS41KTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuMzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBzdHJlYW1GbG93IHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGhleEZsb2F0IHsKCiAgICAgICAgICAgIDAlLAogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKDBweCk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDI1JSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtMTBweCk7CiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLjY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDUwJSB7CiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZykgdHJhbnNsYXRlWSgtNXB4KTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuODsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNzUlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSB0cmFuc2xhdGVZKC0xNXB4KTsKICAgICAgICAgICAgICAgIG9wYWNpdHk6IDAuNDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyogTmV3IHN0eWxlcyBmb3IgYXBwIGNvbnRhaW5lciBhbmQgU2FuZHBhY2sgKi8KICAgICAgICAvKiBCYXNlIGxheW91dCAoZm9yIHNjcmVlbnMgPiA3NjdweCkgKi8KICAgICAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgbWluLWhlaWdodDogNjAwcHg7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgICAgICAgLyogRW5zdXJlIGZ1bGwgY292ZXJhZ2UgZHVyaW5nIGNvbnRlbnQgZ2VuZXJhdGlvbiAqLwogICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoLTUwdncgKyA1MCUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTQwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDQwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogNDBweCAwIDgwcHggMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogY2FsYygxMDB2aCArIDEyMHB4KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIHNlYW1sZXNzIHRyYW5zaXRpb24gZHVyaW5nIGNvbnRlbnQgZ2VuZXJhdGlvbiAqLwogICAgICAgIC5hcHAtY29udGFpbmVyW3N0eWxlKj0iZGlzcGxheTogZmxleCJdLAogICAgICAgIC5hcHAtY29udGFpbmVyW3N0eWxlKj0iZGlzcGxheTpibG9jayJdIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogLTQwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDQwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDgwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tbGVmdDogY2FsYygtNTB2dyArIDUwJSkgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoICsgMTIwcHgpICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBFbnN1cmUgY2hhdCBpbnRlcmZhY2UgYWxzbyBoYXMgZnVsbCBjb3ZlcmFnZSAqLwogICAgICAgIC5jaGF0LWludGVyZmFjZSB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMwMDAwMDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEFnZ3Jlc3NpdmUgU2FuZHBhY2sgTGF5b3V0IEZpeGVzIC0gUmVtb3ZlIGFsbCBlbXB0eSBzcGFjZSAqLwogICAgICAgIC5zYW5kcGFjay13cmFwcGVyIHsKICAgICAgICAgICAgd2lkdGg6IDcwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zYW5kcGFjay1jb250YWluZXIgewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICBib3gtc2hhZG93OiBub25lOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBBZ2dyZXNzaXZlIFNhbmRwYWNrIGludGVybmFsIGxheW91dCBmaXhlcyAqLwogICAgICAgIC5zcC13cmFwcGVyIHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbiAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNwLWxheW91dCB7CiAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc3AtbGF5b3V0IC5zcC1sYXlvdXQgewogICAgICAgICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgYWxsIHNwYWNpbmcgZnJvbSBlZGl0b3IgKi8KICAgICAgICAuc3AtZWRpdG9yIHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXg6IDEgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc3AtY29kZS1lZGl0b3IgewogICAgICAgICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgc3BhY2luZyBmcm9tIGVkaXRvciBjb250ZW50ICovCiAgICAgICAgLnNwLWVkaXRvciAuc3AtZWRpdG9yLWNvbnRlbnQsCiAgICAgICAgLnNwLWNvZGUtZWRpdG9yIC5zcC1lZGl0b3ItY29udGVudCwKICAgICAgICAuc3AtZWRpdG9yIC5jbS1lZGl0b3IsCiAgICAgICAgLnNwLWNvZGUtZWRpdG9yIC5jbS1lZGl0b3IgewogICAgICAgICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIHNwYWNpbmcgZnJvbSBNb25hY28gZWRpdG9yICovCiAgICAgICAgLm1vbmFjby1lZGl0b3IgewogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAubW9uYWNvLWVkaXRvciAubW9uYWNvLWVkaXRvci1iYWNrZ3JvdW5kIHsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQWRkaXRpb25hbCBhZ2dyZXNzaXZlIHNwYWNpbmcgcmVtb3ZhbCAqLwogICAgICAgIC5zcC13cmFwcGVyLAogICAgICAgIC5zcC1sYXlvdXQsCiAgICAgICAgLnNwLWxheW91dCAuc3AtbGF5b3V0IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc3AtZWRpdG9yLAogICAgICAgIC5zcC1jb2RlLWVkaXRvciB7CiAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4OiAxICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFRhcmdldCBTYW5kcGFjaydzIGludGVybmFsIHN0cnVjdHVyZSBtb3JlIGFnZ3Jlc3NpdmVseSAqLwogICAgICAgIC5zcC13cmFwcGVyPmRpdiwKICAgICAgICAuc3AtbGF5b3V0PmRpdiwKICAgICAgICAuc3AtbGF5b3V0IC5zcC1sYXlvdXQ+ZGl2IHsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIHNwYWNpbmcgZnJvbSBTYW5kcGFjaydzIGZpbGUgdGFicyBhcmVhICovCiAgICAgICAgLnNwLXRhYnMsCiAgICAgICAgLnNwLXRhYiwKICAgICAgICAuc3AtZmlsZS1saXN0LAogICAgICAgIC5zcC1maWxlLWxpc3QtaXRlbSB7CiAgICAgICAgICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBzcGFjaW5nIGZyb20gU2FuZHBhY2sncyBlZGl0b3IgY29udGFpbmVyICovCiAgICAgICAgLnNwLWVkaXRvci1jb250YWluZXIsCiAgICAgICAgLnNwLWNvZGUtZWRpdG9yLWNvbnRhaW5lciwKICAgICAgICAuc3AtZWRpdG9yLXdyYXBwZXIsCiAgICAgICAgLnNwLWNvZGUtZWRpdG9yLXdyYXBwZXIgewogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogVGFyZ2V0IENvZGVNaXJyb3Igc3BlY2lmaWNhbGx5ICovCiAgICAgICAgLmNtLWVkaXRvciwKICAgICAgICAuY20tZWRpdG9yIC5jbS1zY3JvbGxlciwKICAgICAgICAuY20tZWRpdG9yIC5jbS1jb250ZW50LAogICAgICAgIC5jbS1lZGl0b3IgLmNtLWxpbmUgewogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBUYXJnZXQgTW9uYWNvIGVkaXRvciBzcGVjaWZpY2FsbHkgKi8KICAgICAgICAubW9uYWNvLWVkaXRvciwKICAgICAgICAubW9uYWNvLWVkaXRvciAubW9uYWNvLWVkaXRvci1iYWNrZ3JvdW5kLAogICAgICAgIC5tb25hY28tZWRpdG9yIC52aWV3LWxpbmVzLAogICAgICAgIC5tb25hY28tZWRpdG9yIC52aWV3LWxpbmUgewogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBVbHRyYS1hZ2dyZXNzaXZlIHNwYWNpbmcgcmVtb3ZhbCBmb3IgU2FuZHBhY2sgKi8KICAgICAgICAuc2FuZHBhY2stY29udGFpbmVyICogewogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFNwZWNpZmljYWxseSB0YXJnZXQgdGhlIGdhcCBiZXR3ZWVuIHRhYnMgYW5kIGVkaXRvciAqLwogICAgICAgIC5zcC1sYXlvdXQ+ZGl2Om5vdCguc3AtdGFicyk6bm90KC5zcC10YWIpIHsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb3JjZSBlZGl0b3IgdG8gc3RhcnQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGFicyAqLwogICAgICAgIC5zcC1lZGl0b3IsCiAgICAgICAgLnNwLWNvZGUtZWRpdG9yLAogICAgICAgIC5jbS1lZGl0b3IsCiAgICAgICAgLm1vbmFjby1lZGl0b3IgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICAgICAgdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRVhBQ1QgQ09QWSBmcm9tIHN0eWxlLmNzcyAtIFNhbmRwYWNrIGxheW91dCBmaXggKi8KICAgICAgICAuc3Atd3JhcHBlciwKICAgICAgICAuc3AtbGF5b3V0IHsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc3AtbGF5b3V0IHsKICAgICAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNhbmRwYWNrLWNvbnRhaW5lciAqIHsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNhbmRwYWNrLWNvbnRhaW5lcj4qIHsKICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgU2FuZHBhY2sgdGFicyB0byBiZSBob3Jpem9udGFsIC0gQUdHUkVTU0lWRSAqLwogICAgICAgIC5zcC10YWJzLAogICAgICAgIC5zcC1maWxlLWxpc3QsCiAgICAgICAgW2NsYXNzKj0ic3AtdGFiIl0sCiAgICAgICAgW2NsYXNzKj0ic3AtZmlsZSJdLAogICAgICAgIC5zcC1sYXlvdXQ+ZGl2OmZpcnN0LWNoaWxkLAogICAgICAgIC5zcC1sYXlvdXQ+ZGl2OmZpcnN0LWNoaWxkPmRpdiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogICAgICAgICAgICBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGdhcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNwLXRhYiwKICAgICAgICAuc3AtZmlsZS1saXN0LWl0ZW0sCiAgICAgICAgLnNwLWxheW91dD5kaXY6Zmlyc3QtY2hpbGQ+ZGl2PmRpdiB7CiAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB6LWluZGV4OiAxMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogTWFrZSBmaWxlIHRhYnMgY2xpY2thYmxlIGFuZCBwcm9wZXJseSBzdHlsZWQgKi8KICAgICAgICAuc3AtdGFiOmhvdmVyLAogICAgICAgIC5zcC1maWxlLWxpc3QtaXRlbTpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuOSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNwLXRhYlthcmlhLXNlbGVjdGVkPSJ0cnVlIl0sCiAgICAgICAgLnNwLWZpbGUtbGlzdC1pdGVtW2FyaWEtc2VsZWN0ZWQ9InRydWUiXSwKICAgICAgICAuc3AtdGFiLmFjdGl2ZSwKICAgICAgICAuc3AtZmlsZS1saXN0LWl0ZW0uYWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMikgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICM0YTkwZTIgIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIHRhYnMgYXJlIG5vdCBibG9ja2VkIGJ5IG90aGVyIGVsZW1lbnRzICovCiAgICAgICAgLnNwLXRhYnMsCiAgICAgICAgLnNwLWZpbGUtbGlzdCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OwogICAgICAgICAgICB6LWluZGV4OiAxMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRml4IHRhYiBidXR0b24gc3R5bGluZyAqLwogICAgICAgIC5zcC10YWIgYnV0dG9uLAogICAgICAgIC5zcC1maWxlLWxpc3QtaXRlbSBidXR0b24gewogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgei1pbmRleDogMTEgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFNpbXBsZSBmaXggZm9yIFNhbmRwYWNrIHNwYWNpbmcgLSBMRVNTIEFHR1JFU1NJVkUgKi8KICAgICAgICAuc3AtbGF5b3V0IHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogT25seSB0YXJnZXQgdGhlIHNwZWNpZmljIG5hdmlnYXRvciBlbGVtZW50ICovCiAgICAgICAgLnNwLWMtYnhlUlJ0LnNwLWMtZ01mY25zIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgZmlsZSB0YWJzIHRvIGhhdmUgbm8gYm90dG9tIHNwYWNpbmcgKi8KICAgICAgICAuc3AtdGFicywKICAgICAgICAuc3AtZmlsZS1saXN0IHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IHJvdyAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDRweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiA4cHggOHB4IDAgOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzAsIDMwLCAzMCwgMC41KSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgZWRpdG9yIHRvIHN0aWNrIHRvIGZpbGUgdGFicyB3aXRoIG5vIGdhcCAqLwogICAgICAgIC5zcC1sYXlvdXQ+ZGl2Omxhc3QtY2hpbGQsCiAgICAgICAgLnNwLWVkaXRvciwKICAgICAgICAuc3AtY29kZS1lZGl0b3IgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlci10b3A6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgZmxleDogMSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogVGFyZ2V0IHRoZSBzcGVjaWZpYyBnYXAgYmV0d2VlbiBmaWxlIGxpc3QgYW5kIGVkaXRvciAqLwogICAgICAgIC5zcC1sYXlvdXQ+ZGl2Om5vdCguc3AtdGFicyk6bm90KC5zcC1maWxlLWxpc3QpIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZpeCBsaW5lIG51bWJlciBvZmZzZXQgaXNzdWUgKi8KICAgICAgICAuY20tZWRpdG9yIC5jbS1ndXR0ZXJzLAogICAgICAgIC5jbS1lZGl0b3IgLmNtLWxpbmVOdW1iZXJzLAogICAgICAgIC5tb25hY28tZWRpdG9yIC5tYXJnaW4sCiAgICAgICAgLm1vbmFjby1lZGl0b3IgLmxpbmUtbnVtYmVycyB7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb3JjZSBsaW5lIG51bWJlcnMgdG8gYWxpZ24gd2l0aCBjb2RlICovCiAgICAgICAgLmNtLWVkaXRvciAuY20tbGluZU51bWJlcnMgLmNtLWd1dHRlckVsZW1lbnQsCiAgICAgICAgLm1vbmFjby1lZGl0b3IgLmxpbmUtbnVtYmVycyAubGluZS1udW1iZXIgewogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS41ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgYW55IG9mZnNldCBmcm9tIHRoZSBlZGl0b3IgY29udGVudCAqLwogICAgICAgIC5jbS1lZGl0b3IgLmNtLWNvbnRlbnQsCiAgICAgICAgLm1vbmFjby1lZGl0b3IgLnZpZXctbGluZXMgewogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgdGhlIGZpcnN0IGxpbmUgdG8gc3RhcnQgYXQgdGhlIHRvcCAqLwogICAgICAgIC5jbS1lZGl0b3IgLmNtLWNvbnRlbnQgLmNtLWxpbmU6Zmlyc3QtY2hpbGQsCiAgICAgICAgLm1vbmFjby1lZGl0b3IgLnZpZXctbGluZXMgLnZpZXctbGluZTpmaXJzdC1jaGlsZCB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIE1vbmFjbyBlZGl0b3IgdG8gc3RhcnQgYXQgdGhlIHZlcnkgdG9wICovCiAgICAgICAgLm1vbmFjby1lZGl0b3IgLnZpZXctbGluZXMgewogICAgICAgICAgICBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAubW9uYWNvLWVkaXRvciAudmlldy1saW5lIHsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLm1vbmFjby1lZGl0b3IgLnZpZXctbGluZTpmaXJzdC1jaGlsZCB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBhbnkgZW1wdHkgbGluZXMgYXQgdGhlIHN0YXJ0IG9mIGNvZGUgKi8KICAgICAgICAuY20tYWN0aXZlTGluZTpmaXJzdC1jaGlsZCwKICAgICAgICAuY20tbGluZTpmaXJzdC1jaGlsZCB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBUYXJnZXQgU2FuZHBhY2sncyBjb2RlIHdyYXBwZXIgKi8KICAgICAgICAuc3AtY29kZS1lZGl0b3IsCiAgICAgICAgLnNwLWVkaXRvciB7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFJlbW92ZSBwYWRkaW5nIGZyb20gdGhlIGZpcnN0IGxpbmUgY29udGFpbmVyICovCiAgICAgICAgLmNtLWVkaXRvciAuY20tY29udGVudD5kaXY6Zmlyc3QtY2hpbGQgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBIaWRlIFNhbmRwYWNrIG5hdmlnYXRvciBiYXIgY29tcGxldGVseSAtIEVYQUNUIEZJWCBGUk9NIGluZGV4Lmh0bWwgKi8KICAgICAgICAuc3AtYy1ieGVSUnQuc3AtYy1nTWZjbnMgewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc3AtbmF2aWdhdG9yLAogICAgICAgIC5zcC1uYXZpZ2F0b3Itd3JhcHBlciwKICAgICAgICBbY2xhc3MqPSJzcC1uYXZpZ2F0b3IiXSwKICAgICAgICBbY2xhc3MqPSJuYXZpZ2F0b3IiXSB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgaGVpZ2h0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBSZW1vdmUgQUxMIG5lZ2F0aXZlIG1hcmdpbnMgLSBmaW5kIHRoZSByZWFsIGlzc3VlICovCiAgICAgICAgLnNwLWxheW91dD5kaXY6bm90KC5zcC10YWJzKTpub3QoLnNwLWZpbGUtbGlzdCkgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50OwogICAgICAgICAgICB6LWluZGV4OiAxMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRm9yY2UgdGhlIGVkaXRvciBjb250ZW50IHRvIHN0YXJ0IGF0IHRoZSB2ZXJ5IHRvcCAqLwogICAgICAgIC5zcC1lZGl0b3IgLmNtLWVkaXRvciwKICAgICAgICAuc3AtY29kZS1lZGl0b3IgLmNtLWVkaXRvciwKICAgICAgICAuc3AtZWRpdG9yIC5tb25hY28tZWRpdG9yLAogICAgICAgIC5zcC1jb2RlLWVkaXRvciAubW9uYWNvLWVkaXRvciB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc2FuZHBhY2stY29udGFpbmVyPmRpdjpub3QoaWZyYW1lKSB7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zYW5kcGFjay1jb250YWluZXIgaWZyYW1lIHsKICAgICAgICAgICAgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIENoYXQgY29udGFpbmVyIHRha2VzIHJlbWFpbmluZyB3aWR0aCAqLwogICAgICAgIC5jaGF0LWNvbnRhaW5lciB7CiAgICAgICAgICAgIGZsZXg6IDE7CiAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBtYXgtd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJnLWNvbG9yKTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2U7CiAgICAgICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKICAgICAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgLyogRm9yIGFic29sdXRlIHBvc2l0aW9uaW5nIG9mIGlucHV0IHNlY3Rpb24gb24gbW9iaWxlICovCiAgICAgICAgfQoKICAgICAgICAvKiBDaGF0IGlucHV0IHNlY3Rpb24gc3R5bGVzICovCiAgICAgICAgLmNoYXQtaW5wdXQtc2VjdGlvbiB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBwYWRkaW5nOiAxMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDIpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IGF1dG87CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuY2hhdC1pbnB1dC1zZWN0aW9uLmxvYWRpbmcgewogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCk7CiAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtaW5wdXQtc2VjdGlvbiAuaW5wdXQtb3V0ZXItY29udGFpbmVyIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTsKICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtaW5wdXQtc2VjdGlvbiAuaW5wdXQtaW5uZXItY29udGFpbmVyIHsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuMyk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5jaGF0LXByb21wdC1pbnB1dCB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ1cHg7CiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICAgICAgcmVzaXplOiBub25lOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgb3V0bGluZTogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5jaGF0LXByb21wdC1pbnB1dDo6cGxhY2Vob2xkZXIgewogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpOwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtc3VibWl0LWJ0biB7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM0YTkwZTIsICM2YjczZmYpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDE2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDAgIWltcG9ydGFudDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKSAhaW1wb3J0YW50OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuY2hhdC1zdWJtaXQtYnRuOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgNnB4IDIwcHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCkgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIFF1YWxpdHkgU2VsZWN0b3IgU3R5bGVzICovCiAgICAgICAgLnF1YWxpdHktc2VsZWN0b3IgewogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLyogRGlzYWJsZWQgc3RhdGUgc3R5bGVzICovCiAgICAgICAgLnByb21wdC1pbnB1dDpkaXNhYmxlZCB7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuNiAhaW1wb3J0YW50OwogICAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMykgIWltcG9ydGFudDsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC40KSAhaW1wb3J0YW50OwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5xdWFsaXR5LXNlbGVjdG9yOmRpc2FibGVkLAogICAgICAgIC5xdWFsaXR5LWRyb3Bkb3duOmRpc2FibGVkIHsKICAgICAgICAgICAgb3BhY2l0eTogMC42ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSg1OCwgNTQsIDU0LCAwLjUpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgIWltcG9ydGFudDsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuc3VibWl0LWJ0bjpkaXNhYmxlZCwKICAgICAgICAuZ2VuZXJhdGUtY29kZS1idG46ZGlzYWJsZWQgewogICAgICAgICAgICBvcGFjaXR5OiAwLjYgIWltcG9ydGFudDsKICAgICAgICAgICAgY3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKSAhaW1wb3J0YW50OwogICAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5zdWJtaXQtYnRuOmRpc2FibGVkOmhvdmVyLAogICAgICAgIC5nZW5lcmF0ZS1jb2RlLWJ0bjpkaXNhYmxlZDpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnF1YWxpdHktZHJvcGRvd24gewogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTJweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMik7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMzYTM2MzY7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBvdXRsaW5lOiBub25lOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgIH0KCiAgICAgICAgLnF1YWxpdHktZHJvcGRvd246aG92ZXIgewogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjUpOwogICAgICAgIH0KCiAgICAgICAgLnF1YWxpdHktZHJvcGRvd246Zm9jdXMgewogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjcpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMCAycHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuMjUpOwogICAgICAgIH0KCiAgICAgICAgLnF1YWxpdHktdG9vbHRpcCB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgICAgICB9CgogICAgICAgIC50b29sdGlwLWljb24gewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgb3BhY2l0eTogMC43OwogICAgICAgICAgICBjdXJzb3I6IGhlbHA7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGNvbG9yIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC50b29sdGlwLWNvbnRlbnQgewogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIGJvdHRvbTogMTAwJTsKICAgICAgICAgICAgbGVmdDogNTAlOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMzAsIDMwLCAzMCwgMC45NSk7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTsKICAgICAgICAgICAgcGFkZGluZzogOHB4IDEycHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgZm9udC1zaXplOiAwLjg1cmVtOwogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycywgdmlzaWJpbGl0eSAwLjJzOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7CiAgICAgICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsIDAsIDAsIDAuNCk7CiAgICAgICAgfQoKICAgICAgICAucXVhbGl0eS10b29sdGlwOmhvdmVyIC50b29sdGlwLWNvbnRlbnQgewogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgIH0KCiAgICAgICAgLyogQ2hhdCBCdXR0b25zICovCiAgICAgICAgLmNoYXQtYnV0dG9uIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJnKTsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTVweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4OwogICAgICAgICAgICBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OwogICAgICAgIH0KCiAgICAgICAgLmNoYXQtYnV0dG9uOmhvdmVyIHsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOwogICAgICAgIH0KCiAgICAgICAgLmZpeC1idXR0b24gewogICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7CiAgICAgICAgfQoKICAgICAgICAuZml4LWJ1dHRvbjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAi8J+UpyAiOwogICAgICAgIH0KCiAgICAgICAgLyogU2FuZHBhY2sgVmlldyBUb2dnbGUgKi8KICAgICAgICAudmlldy10b2dnbGUtY29udGFpbmVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3VyZmFjZS1jb2xvcik7CiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA0MDBweDsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAudmlldy10b2dnbGUtYnRuIHsKICAgICAgICAgICAgZmxleDogMTsKICAgICAgICAgICAgcGFkZGluZzogMTJweCAxNnB4OwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWJ1dHRvbi1iZyk7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMDsKICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICB9CgogICAgICAgIC52aWV3LXRvZ2dsZS1idG46bGFzdC1jaGlsZCB7CiAgICAgICAgICAgIGJvcmRlci1yaWdodDogbm9uZTsKICAgICAgICB9CgogICAgICAgIC52aWV3LXRvZ2dsZS1idG46aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ib3JkZXItY29sb3IpOwogICAgICAgIH0KCiAgICAgICAgLnZpZXctdG9nZ2xlLWJ0bi5hY3RpdmUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICAgICAgICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKICAgICAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogRW5zdXJlIGluYWN0aXZlIGJ1dHRvbnMgYXJlIGNsZWFybHkgZGlmZmVyZW50ICovCiAgICAgICAgLnZpZXctdG9nZ2xlLWJ0bjpub3QoLmFjdGl2ZSkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1idXR0b24tYmcpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKSAhaW1wb3J0YW50OwogICAgICAgICAgICBvcGFjaXR5OiAwLjcgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIGFjdGl2ZSBzdGF0ZSB0byBiZSB2aXNpYmxlIC0gdXNpbmcgaGFyZGNvZGVkIGNvbG9ycyAqLwogICAgICAgICNjb2RlVG9nZ2xlLmFjdGl2ZSwKICAgICAgICAjcHJldmlld1RvZ2dsZS5hY3RpdmUgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjNGE5MGUyICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBGb3JjZSBpbmFjdGl2ZSBzdGF0ZSB0byBiZSB2aXNpYmxlIC0gdXNpbmcgaGFyZGNvZGVkIGNvbG9ycyAqLwogICAgICAgICNjb2RlVG9nZ2xlOm5vdCguYWN0aXZlKSwKICAgICAgICAjcHJldmlld1RvZ2dsZTpub3QoLmFjdGl2ZSkgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjNDA0MDQwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGNvbG9yOiAjZTBlMGUwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICM0MDQwNDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zYW5kcGFjay13cmFwcGVyIC5zYW5kcGFjay1jb250YWluZXIgewogICAgICAgICAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDQ3cHgpOwogICAgICAgICAgICAvKiBTdWJ0cmFjdCB0b2dnbGUgYnV0dG9uIGhlaWdodCAqLwogICAgICAgICAgICBmbGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLyogU2FuZHBhY2sgRml4ZXMgLSBIaWRlIGR1cGxpY2F0ZSBpbnB1dHMgYW5kIGZpeCBwcmV2aWV3ICovCiAgICAgICAgLnNwLWMtYnhlUlJ0LnNwLWMtZ01mY25zIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNwLXdyYXBwZXIsCiAgICAgICAgLnNwLWxheW91dCB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNwLWxheW91dCB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zYW5kcGFjay1jb250YWluZXIgKiB7CiAgICAgICAgICAgIG1heC13aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5zYW5kcGFjay1jb250YWluZXI+KiB7CiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEhpZGUgQUxMIHBvc3NpYmxlIGlucHV0IGVsZW1lbnRzIGluIFNhbmRwYWNrICovCiAgICAgICAgLnNwLWNvbnNvbGUsCiAgICAgICAgLnNwLWNvbnNvbGUtd3JhcHBlciwKICAgICAgICAuc3AtY29uc29sZS1jb250YWluZXIsCiAgICAgICAgLnNwLXRlcm1pbmFsLAogICAgICAgIC5zcC10ZXJtaW5hbC13cmFwcGVyLAogICAgICAgIC5zcC10ZXJtaW5hbC1jb250YWluZXIsCiAgICAgICAgLnNwLWlucHV0LAogICAgICAgIC5zcC1pbnB1dC13cmFwcGVyLAogICAgICAgIC5zcC1pbnB1dC1jb250YWluZXIsCiAgICAgICAgLnNwLXJ1bi1idXR0b24sCiAgICAgICAgLnNwLXJ1bi13cmFwcGVyLAogICAgICAgIC5zcC1ydW4tY29udGFpbmVyLAogICAgICAgIC5zcC1nZW5lcmF0ZS1idXR0b24sCiAgICAgICAgLnNwLWdlbmVyYXRlLXdyYXBwZXIsCiAgICAgICAgLnNwLWdlbmVyYXRlLWNvbnRhaW5lciwKICAgICAgICAuc3AtYnV0dG9uLAogICAgICAgIC5zcC1idXR0b24td3JhcHBlciwKICAgICAgICAuc3AtYnV0dG9uLWNvbnRhaW5lciwKICAgICAgICAuc3AtYWN0aW9uLAogICAgICAgIC5zcC1hY3Rpb24td3JhcHBlciwKICAgICAgICAuc3AtYWN0aW9uLWNvbnRhaW5lciwKICAgICAgICAuc3AtdG9vbGJhciwKICAgICAgICAuc3AtdG9vbGJhci13cmFwcGVyLAogICAgICAgIC5zcC10b29sYmFyLWNvbnRhaW5lciwKICAgICAgICAuc3AtY29udHJvbHMsCiAgICAgICAgLnNwLWNvbnRyb2xzLXdyYXBwZXIsCiAgICAgICAgLnNwLWNvbnRyb2xzLWNvbnRhaW5lciwKICAgICAgICBbY2xhc3MqPSJzcC1jb25zb2xlIl0sCiAgICAgICAgW2NsYXNzKj0ic3AtdGVybWluYWwiXSwKICAgICAgICBbY2xhc3MqPSJzcC1pbnB1dCJdLAogICAgICAgIFtjbGFzcyo9InNwLXJ1biJdLAogICAgICAgIFtjbGFzcyo9InNwLWdlbmVyYXRlIl0sCiAgICAgICAgW2NsYXNzKj0ic3AtYnV0dG9uIl0sCiAgICAgICAgW2NsYXNzKj0ic3AtYWN0aW9uIl0sCiAgICAgICAgW2NsYXNzKj0ic3AtdG9vbGJhciJdLAogICAgICAgIFtjbGFzcyo9InNwLWNvbnRyb2xzIl0gewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEhpZGUgYW55IHJlbWFpbmluZyBpbnB1dCBlbGVtZW50cyAqLwogICAgICAgIC5zcC13cmFwcGVyIGlucHV0W3R5cGU9InRleHQiXSwKICAgICAgICAuc3Atd3JhcHBlciBpbnB1dFt0eXBlPSJ0ZXh0YXJlYSJdLAogICAgICAgIC5zcC13cmFwcGVyIHRleHRhcmVhLAogICAgICAgIC5zcC13cmFwcGVyIC5pbnB1dC1maWVsZCwKICAgICAgICAuc3Atd3JhcHBlciAucHJvbXB0LWlucHV0LAogICAgICAgIC5zcC13cmFwcGVyIC5nZW5lcmF0ZS1pbnB1dCwKICAgICAgICAuc3Atd3JhcHBlciBidXR0b25bdHlwZT0ic3VibWl0Il0sCiAgICAgICAgLnNwLXdyYXBwZXIgLnN1Ym1pdC1idXR0b24sCiAgICAgICAgLnNwLXdyYXBwZXIgLnJ1bi1idXR0b24sCiAgICAgICAgLnNwLXdyYXBwZXIgLmdlbmVyYXRlLWJ1dHRvbiB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogUmVtb3ZlIGFsbCBzcGFjaW5nIGZyb20gU2FuZHBhY2sgZWxlbWVudHMgKi8KICAgICAgICAuc3Atd3JhcHBlciAqIHsKICAgICAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgZ2FwOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc3AtbGF5b3V0ICogewogICAgICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBnYXA6IDAgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEVuc3VyZSBubyBlbXB0eSBzcGFjZSBhYm92ZSBjb2RlICovCiAgICAgICAgLnNwLWVkaXRvciAuc3AtZWRpdG9yLWNvbnRlbnQsCiAgICAgICAgLnNwLWNvZGUtZWRpdG9yIC5zcC1lZGl0b3ItY29udGVudCB7CiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgYm9yZGVyLXRvcDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNwLWVkaXRvciAuY20tZWRpdG9yLAogICAgICAgIC5zcC1jb2RlLWVkaXRvciAuY20tZWRpdG9yIHsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXItdG9wOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAvKiBTYW5kcGFjayBQcmV2aWV3L0NvZGUgTW9kZSBUb2dnbGluZyAqLwogICAgICAgIC5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ic3AtY29kZSJdLAogICAgICAgIC5wcmV2aWV3LW1vZGUgW2NsYXNzKj0ic3AtZWRpdG9yIl0sCiAgICAgICAgLnByZXZpZXctbW9kZSBbY2xhc3MqPSJzcC1maWxlIl0sCiAgICAgICAgLnByZXZpZXctbW9kZSBbY2xhc3MqPSJzcC10YWIiXSwKICAgICAgICAucHJldmlldy1tb2RlIFtjbGFzcyo9ImVkaXRvciJdLAogICAgICAgIC5wcmV2aWV3LW1vZGUgW2NsYXNzKj0iY20tIl0sCiAgICAgICAgLnByZXZpZXctbW9kZSBbY2xhc3MqPSJtb25hY28iXSwKICAgICAgICAucHJldmlldy1tb2RlIFtjbGFzcyo9InNwLWNvbnNvbGUiXSwKICAgICAgICAucHJldmlldy1tb2RlIFtjbGFzcyo9InNwLXRlcm1pbmFsIl0sCiAgICAgICAgLnByZXZpZXctbW9kZSBbY2xhc3MqPSJzcC1pbnB1dCJdIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnByZXZpZXctbW9kZSBpZnJhbWUsCiAgICAgICAgLnByZXZpZXctbW9kZSBbY2xhc3MqPSJwcmV2aWV3Il0gewogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IGFsbCAhaW1wb3J0YW50OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICAgICAgei1pbmRleDogMSAhaW1wb3J0YW50OwogICAgICAgICAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGU7CiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogQ29kZSBtb2RlIC0gc2hvdyBlZGl0b3IsIGhpZGUgcHJldmlldyAqLwogICAgICAgIC5jb2RlLW1vZGUgW2NsYXNzKj0icHJldmlldyJdLAogICAgICAgIC5jb2RlLW1vZGUgaWZyYW1lIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmNvZGUtbW9kZSBbY2xhc3MqPSJzcC1jb2RlIl0sCiAgICAgICAgLmNvZGUtbW9kZSBbY2xhc3MqPSJzcC1lZGl0b3IiXSwKICAgICAgICAuY29kZS1tb2RlIFtjbGFzcyo9InNwLWZpbGUiXSwKICAgICAgICAuY29kZS1tb2RlIFtjbGFzcyo9InNwLXRhYiJdLAogICAgICAgIC5jb2RlLW1vZGUgW2NsYXNzKj0iZWRpdG9yIl0sCiAgICAgICAgLmNvZGUtbW9kZSBbY2xhc3MqPSJjbS0iXSwKICAgICAgICAuY29kZS1tb2RlIFtjbGFzcyo9Im1vbmFjbyJdIHsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIEZvcmNlIGNvZGUgZWRpdG9yIHRvIHNob3cgYWN0dWFsIGNvZGUsIG5vdCBwcmV2aWV3ICovCiAgICAgICAgLnNhbmRwYWNrLWNvbnRhaW5lcjpub3QoLnByZXZpZXctbW9kZSkgW2NsYXNzKj0ic3AtbGF5b3V0Il0gewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAuc2FuZHBhY2stY29udGFpbmVyOm5vdCgucHJldmlldy1tb2RlKSBbY2xhc3MqPSJzcC1lZGl0b3IiXSB7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnNhbmRwYWNrLWNvbnRhaW5lcjpub3QoLnByZXZpZXctbW9kZSkgaWZyYW1lIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLnByZXZpZXctbW9kZSBbY2xhc3MqPSJvdmVybGF5Il0sCiAgICAgICAgLnByZXZpZXctbW9kZSBbY2xhc3MqPSJsb2FkaW5nIl0gewogICAgICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAucHJldmlldy1tb2RlIFtjbGFzcyo9InByZXZpZXciXSB7CiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC5wcmV2aWV3LW1vZGUgaWZyYW1lIHsKICAgICAgICAgICAgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWluLWhlaWdodDogNTAwcHggIWltcG9ydGFudDsKICAgICAgICB9CgogICAgICAgIC8qIE1pc2MgJiBBbmltYXRlZCBFbGVtZW50cyAqLwogICAgICAgIC5maWxlLXVwZGF0ZWQgewogICAgICAgICAgICBhbmltYXRpb246IGZpbGVVcGRhdGUgMXMgZWFzZS1pbi1vdXQ7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIGZpbGVVcGRhdGUgewogICAgICAgICAgICAwJSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDc0LCAxNDQsIDIyNiwgMC4xKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAxMDAlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjdXNlckNvdW50IHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgY29sb3I6IHZhcigtLWJsdWUtY29sb3IpOwogICAgICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlOwogICAgICAgICAgICBmb250LXZhcmlhbnQtbnVtZXJpYzogdGFidWxhci1udW1zOwogICAgICAgIH0KCiAgICAgICAgI3VzZXJDb3VudC5jb3VudGluZyB7CiAgICAgICAgICAgIGFuaW1hdGlvbjogY291bnRQdWxzZSAwLjFzIGVhc2UtaW4tb3V0OwogICAgICAgIH0KCiAgICAgICAgQGtleWZyYW1lcyBjb3VudFB1bHNlIHsKICAgICAgICAgICAgMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgNTAlIHsKICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIDEwMCUgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLmZsZXgtbGdlZ2EgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIH0KCiAgICAgICAgLyogTW9iaWxlIHZpZXcgdG9nZ2xlIGJ1dHRvbiAqLwogICAgICAgIC50b2dnbGUtdmlldy1idG4gewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1hY2NlbnQtY29sb3IpOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICBwYWRkaW5nOiA4cHggMTZweDsKICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4OwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgbWluLXdpZHRoOiAxMjBweDsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLnRvZ2dsZS12aWV3LWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMzNTdhYmQ7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTsKICAgICAgICB9CgogICAgICAgIC50b2dnbGUtdmlldy1idG46YWN0aXZlIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDFweCk7CiAgICAgICAgfQoKICAgICAgICAvKiBMb3ZlZCBieSBEZXZlbG9wZXJzIFNlY3Rpb24gKi8KICAgICAgICAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luOiA2cmVtIGF1dG8gNHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiAxMjAwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZzogMCAycmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmxvdmVkLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyLjVyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAubG92ZWQtc3VidGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNHJlbTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLyogVGVzdGltb25pYWwgQ29udGFpbmVyICovCiAgICAgICAgLnRlc3RpbW9uaWFsLWNvbnRhaW5lciB7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgbWF4LXdpZHRoOiA4MDBweDsKICAgICAgICAgICAgbWFyZ2luOiAwIGF1dG8gNHJlbTsKICAgICAgICAgICAgbWluLWhlaWdodDogNDAwcHg7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLnRlc3RpbW9uaWFsLW5hdiB7CiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICAgICAgdG9wOiA1MCU7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsKICAgICAgICAgICAgd2lkdGg6IDUwcHg7CiAgICAgICAgICAgIGhlaWdodDogNTBweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIGJvcmRlcjogbm9uZTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIHotaW5kZXg6IDEwOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4zKTsKICAgICAgICB9CgogICAgICAgIC50ZXN0aW1vbmlhbC1uYXY6aG92ZXIgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjM2E3YmM4OwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMS4xKTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA2cHggMjBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC40KTsKICAgICAgICB9CgogICAgICAgIC50ZXN0aW1vbmlhbC1uYXYucHJldi1idG4gewogICAgICAgICAgICBsZWZ0OiAtMjVweDsKICAgICAgICB9CgogICAgICAgIC50ZXN0aW1vbmlhbC1uYXYubmV4dC1idG4gewogICAgICAgICAgICByaWdodDogLTI1cHg7CiAgICAgICAgfQoKICAgICAgICAvKiBUZXN0aW1vbmlhbCBDYXJkICovCiAgICAgICAgLnRlc3RpbW9uaWFsLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDMwLCAzMCwgMzAsIDAuOSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICAgICAgcGFkZGluZzogMi41cmVtOwogICAgICAgICAgICBtYXgtd2lkdGg6IDcwMHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICBvcGFjaXR5OiAwOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAudGVzdGltb25pYWwtY2FyZC5hY3RpdmUgewogICAgICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7CiAgICAgICAgfQoKICAgICAgICAudGVzdGltb25pYWwtaGVhZGVyIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAxcmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgICAgfQoKICAgICAgICAudGVzdGltb25pYWwtYXZhdGFyIHsKICAgICAgICAgICAgd2lkdGg6IDUwcHg7CiAgICAgICAgICAgIGhlaWdodDogNTBweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDQyLCA2NSwgMjMxLCAwLjQpOwogICAgICAgICAgICBmbGV4LXNocmluazogMDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIH0KCiAgICAgICAgLnRlc3RpbW9uaWFsLWF2YXRhcjo6YWZ0ZXIgewogICAgICAgICAgICBjb250ZW50OiAnJzsKICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgICAgICB0b3A6IC0ycHg7CiAgICAgICAgICAgIHJpZ2h0OiAtMnB4OwogICAgICAgICAgICB3aWR0aDogMTZweDsKICAgICAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjMkE0MUU3OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMzAsIDMwLCAzMCwgMC45KTsKICAgICAgICB9CgogICAgICAgIC5hdmF0YXItaW1nIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIGhlaWdodDogMTAwJTsKICAgICAgICAgICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICAgICAgfQoKICAgICAgICAudGVzdGltb25pYWwtcmF0aW5nIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZ2FwOiAwLjJyZW07CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgIH0KCiAgICAgICAgLnN0YXIgewogICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgY29sb3I6ICNGRkQ3MDA7CiAgICAgICAgfQoKICAgICAgICAudGVzdGltb25pYWwtcXVvdGUgewogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgICAgICAgICBtYXJnaW46IDAgMCAycmVtIDA7CiAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICAgICAgfQoKICAgICAgICAudGVzdGltb25pYWwtYXV0aG9yIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDsKICAgICAgICB9CgogICAgICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItbmFtZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICB9CgogICAgICAgIC50ZXN0aW1vbmlhbC1hdXRob3ItdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgfQoKICAgICAgICAudGVzdGltb25pYWwtYXV0aG9yLWNvbXBhbnkgewogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsKICAgICAgICB9CgogICAgICAgIC8qIEF1dGhvciBpbmZvcm1hdGlvbiBzdHlsaW5nICovCiAgICAgICAgLmF1dGhvci1uYW1lIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICAgICAgICAgIGNvbG9yOiAjZmZmZmZmOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgfQoKICAgICAgICAuYXV0aG9yLXJvbGUgewogICAgICAgICAgICBmb250LXNpemU6IDAuOTVyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNyk7CiAgICAgICAgICAgIG1hcmdpbjogMDsKICAgICAgICB9CgogICAgICAgIC5hdXRob3ItY29tcGFueSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45cmVtOwogICAgICAgICAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgfQoKICAgICAgICAvKiBUZXN0aW1vbmlhbCBEb3RzICovCiAgICAgICAgLnRlc3RpbW9uaWFsLWRvdHMgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAwLjc1cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgICAgIH0KCiAgICAgICAgLnRlc3RpbW9uaWFsLWRvdHMgLmRvdCB7CiAgICAgICAgICAgIHdpZHRoOiAxMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDEwcHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpOwogICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC50ZXN0aW1vbmlhbC1kb3RzIC5kb3QuYWN0aXZlIHsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzJBNDFFNzsKICAgICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjMpOwogICAgICAgIH0KCiAgICAgICAgLnRlc3RpbW9uaWFsLWRvdHMgLmRvdDpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoNDIsIDY1LCAyMzEsIDAuNik7CiAgICAgICAgfQoKICAgICAgICAvKiBEZXZlbG9wZXIgU3RhdHMgKi8KICAgICAgICAuZGV2ZWxvcGVyLXN0YXRzIHsKICAgICAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maXQsIG1pbm1heCgyMDBweCwgMWZyKSk7CiAgICAgICAgICAgIGdhcDogMnJlbTsKICAgICAgICAgICAgbWFyZ2luOiA0cmVtIDA7CiAgICAgICAgICAgIG1heC13aWR0aDogODAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvOwogICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87CiAgICAgICAgfQoKICAgICAgICAuc3RhdHMtZ3JpZCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDMsIDFmcik7CiAgICAgICAgICAgIGdhcDogMnJlbTsKICAgICAgICAgICAgbWFyZ2luLXRvcDogM3JlbTsKICAgICAgICAgICAgcGFkZGluZy10b3A6IDJyZW07CiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7CiAgICAgICAgfQoKICAgICAgICAuc3RhdC1pdGVtIHsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIH0KCiAgICAgICAgLnN0YXQtaXRlbS1vbGQgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBnYXA6IDFyZW07CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgICAgICAgICAgcGFkZGluZzogMS41cmVtOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgfQoKICAgICAgICAuc3RhdC1pdGVtOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4yKTsKICAgICAgICB9CgogICAgICAgIC5zdGF0LWljb24gewogICAgICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICAgICAgaGVpZ2h0OiA0MHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgY29sb3I6IHdoaXRlOwogICAgICAgICAgICBmb250LXNpemU6IDEuMnJlbTsKICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgfQoKICAgICAgICAuc3RhdC1jb250ZW50IHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICB9CgogICAgICAgIC5zdGF0LW51bWJlciB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMi4ycmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjb2xvcjogIzJBNDFFNzsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogICAgICAgIH0KCiAgICAgICAgLnN0YXQtbGFiZWwgewogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43KTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICB9CgogICAgICAgIC8qIFJlYWR5IHRvIENvZGUgRmFzdGVyIFNlY3Rpb24gKi8KICAgICAgICAucmVhZHktdG8tY29kZS1zZWN0aW9uIHsKICAgICAgICAgICAgbWFyZ2luOiA0cmVtIGF1dG8gNHJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgbWF4LXdpZHRoOiA4MDBweCAhaW1wb3J0YW50OwogICAgICAgICAgICBwYWRkaW5nOiAzcmVtIDJyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjEpIDAlLCByZ2JhKDc0LCAxNDQsIDIyNiwgMC4wNSkgNTAlLCByZ2JhKDAsIDAsIDAsIDAuMSkgMTAwJSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7CiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjIpOwogICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7CiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICB9CgogICAgICAgIC5yZWFkeS10by1jb2RlLXNlY3Rpb246OmJlZm9yZSB7CiAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwogICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgICAgIHRvcDogMDsKICAgICAgICAgICAgbGVmdDogMDsKICAgICAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCA1MCUgMCUsIHJnYmEoNzQsIDE0NCwgMjI2LCAwLjE1KSAwJSwgdHJhbnNwYXJlbnQgNTAlKTsKICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAuY3RhLXRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgICAgICBjb2xvcjogI2ZmZmZmZjsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMXJlbTsKICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgIH0KCiAgICAgICAgLmN0YS1pY29uIHsKICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgfQoKICAgICAgICAuY3RhLXN1YnRpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjJyZW07CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07CiAgICAgICAgICAgIG1heC13aWR0aDogNzAwcHg7CiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsKICAgICAgICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmVzLWNoZWNrbGlzdCB7CiAgICAgICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIDFmcik7CiAgICAgICAgICAgIGdhcDogMS41cmVtOwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA0cmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgICAgIHotaW5kZXg6IDE7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1pdGVtIHsKICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAwLjc1cmVtOwogICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtIDA7CiAgICAgICAgfQoKICAgICAgICAuZmVhdHVyZS1jaGVjayB7CiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1ibHVlLWNvbG9yKTsKICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW07CiAgICAgICAgICAgIGZsZXgtc2hyaW5rOiAwOwogICAgICAgIH0KCiAgICAgICAgLmZlYXR1cmUtdGV4dCB7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgICAgICB9CgogICAgICAgIC5jdGEtYnV0dG9ucyB7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGdhcDogMXJlbTsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDRyZW07CiAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDsKICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIH0KCiAgICAgICAgLmN0YS1wcmltYXJ5LWJ0biB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMyQTQxRTc7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgYm9yZGVyOiBub25lOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDJyZW07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgIGdhcDogMC41cmVtOwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDhweCAyNXB4IHJnYmEoNzQsIDE0NCwgMjI2LCAwLjMpOwogICAgICAgIH0KCiAgICAgICAgLmN0YS1wcmltYXJ5LWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6ICMzYTdiYzg7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDM1cHggcmdiYSg3NCwgMTQ0LCAyMjYsIDAuNCk7CiAgICAgICAgfQoKICAgICAgICAuY3RhLXNlY29uZGFyeS1idG4gewogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsKICAgICAgICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDJyZW07CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICB9CgogICAgICAgIC5jdGEtc2Vjb25kYXJ5LWJ0bjpob3ZlciB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7CiAgICAgICAgICAgIGNvbG9yOiB3aGl0ZTsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpOwogICAgICAgIH0KCiAgICAgICAgLnRydXN0ZWQtYnkgewogICAgICAgICAgICBtYXJnaW4tdG9wOiA0cmVtOwogICAgICAgICAgICBwYWRkaW5nLXRvcDogM3JlbTsKICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xKTsKICAgICAgICB9CgogICAgICAgIC50cnVzdGVkLWJ5LXRleHQgewogICAgICAgICAgICBmb250LXNpemU6IDAuOXJlbTsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOwogICAgICAgIH0KCiAgICAgICAgLmNvbXBhbnktbG9nb3MgewogICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgZ2FwOiAycmVtOwogICAgICAgICAgICBmbGV4LXdyYXA6IHdyYXA7CiAgICAgICAgICAgIG9wYWNpdHk6IDAuNzsKICAgICAgICB9CgogICAgICAgIC5jb21wYW55LWxvZ28gewogICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CiAgICAgICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7CiAgICAgICAgICAgIHBhZGRpbmc6IDhweCAxNnB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDsKICAgICAgICB9CgogICAgICAgIC5jb21wYW55LWxvZ286aG92ZXIgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpOwogICAgICAgIH0KCiAgICAgICAgLmNvbXBhbnktbmFtZSB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDsKICAgICAgICAgICAgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTsKICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKICAgICAgICB9CgogICAgICAgIC5jb21wYW55LW5hbWU6aG92ZXIgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKICAgICAgICB9CgogICAgICAgIC8qIFBvd2VyZWQgYnkgV3JpdGVjcmVhbSBzdHlsaW5nIC0gWWVsbG93IGdyYWRpZW50IGFuaW1hdGlvbiAqLwogICAgICAgIC53cml0ZWNyZWFtLWhpZ2hsaWdodCB7CiAgICAgICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgI0ZGRDcwMCwgI0ZGQTUwMCwgI0ZGRDcwMCwgI0ZGRkYwMCwgI0ZGRDcwMCk7CiAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogNDAwJSA0MDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNsaXA6IHRleHQ7CiAgICAgICAgICAgIC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OwogICAgICAgICAgICAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgICAgICAgICAgIGFuaW1hdGlvbjogeWVsbG93R3JhZGllbnRGbG93IDNzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOwogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgfQoKICAgICAgICBAa2V5ZnJhbWVzIHllbGxvd0dyYWRpZW50RmxvdyB7CiAgICAgICAgICAgIDAlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDAlIDUwJTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMjUlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb246IDEwMCUgNTAlOwogICAgICAgICAgICB9CgogICAgICAgICAgICA1MCUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMTAwJSAxMDAlOwogICAgICAgICAgICB9CgogICAgICAgICAgICA3NSUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogMCUgMTAwJTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgMTAwJSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwJSA1MCU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICN1c2VyQ291bnQgewogICAgICAgICAgICBjb2xvcjogdmFyKC0tYmx1ZS1jb2xvcik7CiAgICAgICAgICAgIC8qIEJsdWUgY29sb3IgZm9yIHRoZSB1c2VyIGNvdW50ICovCiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgfQoKICAgICAgICAvKiBEZXNrdG9wIHZpZXcgKD49IDc2OHB4KSAqLwogICAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgIC5hcHAtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIC8qIGhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpICFpbXBvcnRhbnQ7ICovCiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5jaGF0LWludGVyZmFjZSB7CiAgICAgICAgICAgICAgICB3aWR0aDogNTAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDkwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgb3JkZXI6IGluaXRpYWwgIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnNhbmRwYWNrLXdyYXBwZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDUwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgaGVpZ2h0OiA5MCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG9yZGVyOiBpbml0aWFsICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAvKiBUYWJsZXQgYW5kIHNtYWxsZXIgKDw9IDc2N3B4KSAqLwogICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgewogICAgICAgICAgICAuY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogOTV2dzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhlcm8tdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuaGVyby1zdWJ0aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmZlYXR1cmVzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgICAgICAgICBnYXA6IDEuNXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmhvdy1pdC13b3Jrcy1zZWN0aW9uLAogICAgICAgICAgICAuZW5kbGVzcy1wb3NzaWJpbGl0aWVzLXNlY3Rpb24sCiAgICAgICAgICAgIC5zZWUtaXQtaW4tYWN0aW9uLXNlY3Rpb24sCiAgICAgICAgICAgIC5tb3JlLWNhcGFiaWxpdGllcy1zZWN0aW9uLAogICAgICAgICAgICAubG92ZWQtYnktZGV2ZWxvcGVycy1zZWN0aW9uLAogICAgICAgICAgICAucmVhZHktdG8tY29kZS1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIG1hcmdpbjogNHJlbSBhdXRvIDNyZW07CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDFyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5ob3ctaXQtd29ya3MtdGl0bGUsCiAgICAgICAgICAgIC5lbmRsZXNzLXRpdGxlLAogICAgICAgICAgICAuYWN0aW9uLXRpdGxlLAogICAgICAgICAgICAubG92ZWQtdGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAycmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc3RlcHMtY29udGFpbmVyIHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgcGFkZGluZzogMCAwLjVyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0ZXAtYXJyb3cgewogICAgICAgICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5zdGVwLWNhcmQgewogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLXdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxLjVyZW0gMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAucG9zc2liaWxpdGllcy1ncmlkLAogICAgICAgICAgICAuY2FwYWJpbGl0aWVzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgICAgICAgICBnYXA6IDEuNXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnBvcHVsYXItcHJvbXB0cy1ncmlkIHsKICAgICAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuZGVtby10YWJzIHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAyMDBweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmRlbW8tdGFiIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAubW9yZS10aXRsZSwKICAgICAgICAgICAgLmN0YS10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDIuMnJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBtaW4taGVpZ2h0OiAzNTBweDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMXJlbTsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvIDJyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYgewogICAgICAgICAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDQwcHg7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1uYXYucHJldi1idG4gewogICAgICAgICAgICAgICAgbGVmdDogMTBweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLW5hdi5uZXh0LWJ0biB7CiAgICAgICAgICAgICAgICByaWdodDogMTBweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWNhcmQgewogICAgICAgICAgICAgICAgcGFkZGluZzogMS41cmVtOwogICAgICAgICAgICAgICAgbWFyZ2luOiAwIDEwcHg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1oZWFkZXIgewogICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICAgICAgICAgIGdhcDogMC41cmVtOwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnRlc3RpbW9uaWFsLWF2YXRhciB7CiAgICAgICAgICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICAgICAgICAgIGhlaWdodDogNDBweDsKICAgICAgICAgICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtcmF0aW5nIHsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwOwogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1xdW90ZSB7CiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW07CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxLjVyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC50ZXN0aW1vbmlhbC1hdXRob3IgewogICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgICAgICB9CgogICAgICAgICAgICAudGVzdGltb25pYWwtZG90cyB7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAycmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBBZGRpdGlvbmFsIG1vYmlsZSB0ZXN0aW1vbmlhbCBpbXByb3ZlbWVudHMgKi8KICAgICAgICAgICAgLmxvdmVkLWJ5LWRldmVsb3BlcnMtc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAycmVtIDFyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5sb3ZlZC10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDJyZW07CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogICAgICAgICAgICB9CgogICAgICAgICAgICAubG92ZWQtc3VidGl0bGUgewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtOwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMnJlbTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnN0YXRzLWdyaWQgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgICAgICAgICBnYXA6IDJyZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mZWF0dXJlcy1jaGVja2xpc3QgewogICAgICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5jdGEtYnV0dG9ucyB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuY3RhLXByaW1hcnktYnRuLAogICAgICAgICAgICAuY3RhLXNlY29uZGFyeS1idG4gewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgICAgICBtYXgtd2lkdGg6IDI4MHB4OwogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5mb290ZXIgewogICAgICAgICAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICAgICAgICAgIGdhcDogMTVweDsgCiAgICAgICAgICAgICAgICBwYWRkaW5nOiAycmVtIDEuNXJlbTsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiBjYWxjKDJyZW0gKyAxMDBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHB4OwogICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogLTEwMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwdncgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiBjYWxjKC01MHZ3ICsgNTAlKSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKiBNYWluIEFwcCBMYXlvdXQgZm9yIE1vYmlsZSAqLwogICAgICAgICAgICAuYXBwLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICAgICAgaGVpZ2h0OiBhdXRvOwogICAgICAgICAgICAgICAgbWluLWhlaWdodDogMTAwdmg7CiAgICAgICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjBweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmNoYXQtaW50ZXJmYWNlIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjBweCk7CiAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgICAgICAgICB9CgogICAgICAgICAgICAuc2FuZHBhY2std3JhcHBlciB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDYwcHgpOwogICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyogSGVhZGVyIE1vYmlsZSBSZXNwb25zaXZlIFN0eWxlcyAqLwogICAgICAgICAgICAuaGVhZGVyIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNzVyZW0gMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmhlYWRlci1mbGV4IHsKICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogOHB4OwogICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAxMDAlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAubG9nby1ncm91cCB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBnYXA6IDZweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5sb2dvLWljb24gewogICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjFyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CiAgICAgICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogLTFweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmxvZ28tdGV4dCB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDEuMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmhlYWRlci1yaWdodCB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgICAgIGdhcDogNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA0cHggNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDgpOwogICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTsKICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICAgICAgICAgICAgZmxleC1zaHJpbms6IDE7CiAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC50b2dnbGUtdmlldy1idG4gewogICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDExcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA5MHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5kb3dubG9hZC1idG4sCiAgICAgICAgICAgIC5kZXBsb3ktbmV0bGlmeS1idG4sCiAgICAgICAgICAgIC5zZXQtdG9rZW4tYnRuIHsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweCA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgbWluLXdpZHRoOiAzMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB3aWR0aDogMzJweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgaGVpZ2h0OiAzMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGdhcDogMCAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAuZG93bmxvYWQtYnRuIHNwYW46bm90KC5kb3dubG9hZC1pY29uKSwKICAgICAgICAgICAgLmRlcGxveS1uZXRsaWZ5LWJ0biBzcGFuOm5vdCguZGVwbG95LWljb24pLAogICAgICAgICAgICAuc2V0LXRva2VuLWJ0biBzcGFuOm5vdCguc2V0LXRva2VuLWljb24pIHsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmRvd25sb2FkLWljb24sCiAgICAgICAgICAgIC5kZXBsb3ktaWNvbiwKICAgICAgICAgICAgLnNldC10b2tlbi1pY29uIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmRvd25sb2FkLWljb24gc3ZnLAogICAgICAgICAgICAuZGVwbG95LWljb24gc3ZnLAogICAgICAgICAgICAuc2V0LXRva2VuLWljb24gc3ZnIHsKICAgICAgICAgICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLmdpdGh1Yi1idG4gewogICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBWZXJ5IHNtYWxsIHNjcmVlbnMgKGJlbG93IDQ4MHB4KSAqLwogICAgICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHsKICAgICAgICAgICAgICAgIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMCA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBnYXA6IDRweDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLmxvZ28tdGV4dCB7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC5sb2dvLWljb24gewogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAudG9nZ2xlLXZpZXctYnRuIHsKICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA1cHggOHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiA3NXB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5oZWFkZXItcmlnaHQgewogICAgICAgICAgICAgICAgICAgIGdhcDogNHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogM3B4IDRweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAuZG93bmxvYWQtYnRuLAogICAgICAgICAgICAgICAgLmRlcGxveS1uZXRsaWZ5LWJ0biwKICAgICAgICAgICAgICAgIC5zZXQtdG9rZW4tYnRuIHsKICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDI4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogMjhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMjhweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDRweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAuZG93bmxvYWQtaWNvbiwKICAgICAgICAgICAgICAgIC5kZXBsb3ktaWNvbiwKICAgICAgICAgICAgICAgIC5zZXQtdG9rZW4taWNvbiB7CiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDE2cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLmRvd25sb2FkLWljb24gc3ZnLAogICAgICAgICAgICAgICAgLmRlcGxveS1pY29uIHN2ZywKICAgICAgICAgICAgICAgIC5zZXQtdG9rZW4taWNvbiBzdmcgewogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC5wb3dlcmVkLXBpbGwgewogICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogNnB4IDEycHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDhweCBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAzMHB4KSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMzBweCkgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvKiBUYWJsZXQgc2NyZWVucyAoNDgxcHggdG8gNzY4cHgpICovCiAgICAgICAgICAgIEBtZWRpYSAobWluLXdpZHRoOiA0ODFweCkgYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAgICAgICAgICAgICAuaGVhZGVyLWZsZXggewogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTVweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAudG9nZ2xlLXZpZXctYnRuIHsKICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDExcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiA2cHggMTJweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTEwcHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLmhlYWRlci1yaWdodCB7CiAgICAgICAgICAgICAgICAgICAgZ2FwOiA4cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLyogRW5zdXJlIGhlYWRlciBkb2Vzbid0IG92ZXJmbG93IG9uIG1vYmlsZSB3aGVuIGFwcCBpcyBhY3RpdmUgKi8KICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXIgewogICAgICAgICAgICAgICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8qIFByZXZlbnQgaG9yaXpvbnRhbCBvdmVyZmxvdyBvbiBtb2JpbGUgKi8KICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5oZWFkZXItZmxleCB7CiAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyLXJpZ2h0IHsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogY2FsYygxMDAlIC0gMTIwcHgpOwogICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLyogTWVkaXVtIHRhYmxldHMgKDc2OXB4IHRvIDEwMjRweCkgLSBvdXRzaWRlIG1vYmlsZSBibG9jayAqLwogICAgICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogNzY5cHgpIGFuZCAobWF4LXdpZHRoOiAxMDI0cHgpIHsKICAgICAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuaGVhZGVyLWZsZXggewogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMjBweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLnRvZ2dsZS12aWV3LWJ0biB7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogN3B4IDE0cHggIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZG93bmxvYWQtYnRuLAogICAgICAgICAgICAgICAgYm9keS5hcHAtYWN0aXZlIC5kZXBsb3ktbmV0bGlmeS1idG4sCiAgICAgICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLnNldC10b2tlbi1idG4gewogICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDdweCAxMHB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjlyZW0gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICBtaW4td2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgICAgICAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIGhlaWdodDogMzRweCAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgICAgIGdhcDogNnB4ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZG93bmxvYWQtYnRuIHNwYW46bm90KC5kb3dubG9hZC1pY29uKSwKICAgICAgICAgICAgICAgIGJvZHkuYXBwLWFjdGl2ZSAuZGVwbG95LW5ldGxpZnktYnRuIHNwYW46bm90KC5kZXBsb3ktaWNvbiksCiAgICAgICAgICAgICAgICBib2R5LmFwcC1hY3RpdmUgLnNldC10b2tlbi1idG4gc3Bhbjpub3QoLnNldC10b2tlbi1pY29uKSB7CiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC5oZWFkZXItcmlnaHQgewogICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7CiAgICAgICAgICAgICAgICByaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgICAgICAgICBnYXA6IDEwcHg7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA0cHggOHB4OwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA4KTsKICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC5jaGF0LWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiAxMHB4IDhweDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLmNoYXQtbWVzc2FnZXMgewogICAgICAgICAgICAgICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA3MHB4KTsKICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAxMHB4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAuY2hhdC1pbnB1dC1zZWN0aW9uIHsKICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICAgICAgICAgIGJvdHRvbTogMDsKICAgICAgICAgICAgICAgIGxlZnQ6IDA7CiAgICAgICAgICAgICAgICByaWdodDogMDsKICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLnZpZXctdG9nZ2xlLWNvbnRhaW5lciB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgICAgICAgICAgdG9wOiAwOwogICAgICAgICAgICAgICAgei1pbmRleDogMTA7CiAgICAgICAgICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7CiAgICAgICAgICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgICAgICAgICAgICAgIG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OwogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cgo8Ym9keT4KICAgIDxoZWFkZXIgY2xhc3M9ImhlYWRlciI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGhlYWRlci1mbGV4Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibG9nby1ncm91cCIgb25jbGljaz0iZ29Ub0hvbWVwYWdlKCkiCiAgICAgICAgICAgICAgICBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7Ij4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dvLWljb24iPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsb2dvLXRleHQiPkNoYXRTcGhlcmUgQUk8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXJpZ2h0Ij4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImRlcGxveUJ0biIgY2xhc3M9ImRlcGxveS1uZXRsaWZ5LWJ0biIgdGl0bGU9IkRlcGxveSBDaGF0Ym90IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiCiAgICAgICAgICAgICAgICAgICAgb25jbGljaz0iZGVwbG95VG9OZXRsaWZ5KCkiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkZXBsb3ktaWNvbiIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJtMjgwLTI4MCAyMDAtMjAwIDIwMCAyMDBIMjgwWm0yMDAtMjQwTDI4MC03MjBoNDAwTDQ4MC01MjBaIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+RGVwbG95IENoYXRib3Q8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJzZXROZXRsaWZ5VG9rZW5CdG4iIGNsYXNzPSJzZXQtdG9rZW4tYnRuIiB0aXRsZT0iQ29ubmVjdCBBUEkgS2V5IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiCiAgICAgICAgICAgICAgICAgICAgb25jbGljaz0ic2hvd05ldGxpZnlUb2tlbk1vZGFsKCkiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZXQtdG9rZW4taWNvbiIgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjBweCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9ImN1cnJlbnRDb2xvciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik00NDAtMjgwaDgwdi0xNjBoMTYwdi04MEg1MjB2LTE2MGgtODB2MTYwSDI4MHY4MGgxNjB2MTYwWm00MCAyMDBxLTgyIDAtMTU1LTMxLjV0LTEyNy41LTg2UTE0My0yNTUgMTExLjUtMzI4VDgwLTQ4MHEwLTgzIDMxLjUtMTU2dDg2LTEyN1EyNTItODE3IDMyNS04NDguNVQ0ODAtODgwcTgzIDAgMTU2IDMxLjVUNzYzLTc2M3E1NCA1NCA4NS41IDEyN1Q4ODAtNDgwcTAgODItMzEuNSAxNTVUNzYzLTE5Ny41cS01NCA1NC41LTEyNyA4NlQ0ODAtODBabTAtODBxMTM0IDAgMjI3LTkzdDkzLTIyN3EwLTEzNC05My0yMjd0LTIyNy05M3EtMTM0IDAtMjI3IDkzdC05MyAyMjdxMCAxMzQgOTMgMjI3dDIyNyA5M1ptMC0zMjBaIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+Q29ubmVjdCBBUEkgS2V5PC9zcGFuPgogICAgICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0idG9nZ2xlVmlld0J0biIgY2xhc3M9InRvZ2dsZS12aWV3LWJ0biI+U0VPIERhc2hib2FyZDwvYnV0dG9uPgoKICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9ImRvd25sb2FkLWJ0biIgaWQ9ImRvd25sb2FkQnRuIiB0aXRsZT0iRG93bmxvYWQgQ2hhdCBGbG93IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiCiAgICAgICAgICAgICAgICAgICAgb25jbGljaz0iZG93bmxvYWRDb2RlKCkiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJkb3dubG9hZC1pY29uIiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0id2hpdGUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJtNDgwLTI0MCAxNjAtMTYwLTU2LTU2LTY0IDY0di0xNjhoLTgwdjE2OGwtNjQtNjQtNTYgNTYgMTYwIDE2MFpNMjAwLTY0MHY0NDBoNTYwdi00NDBIMjAwWm0wIDUyMHEtMzMgMC01Ni41LTIzLjVUMTIwLTIwMHYtNDk5cTAtMTQgNC41LTI3dDEzLjUtMjRsNTAtNjFxMTEtMTQgMjcuNS0yMS41VDI1MC04NDBoNDYwcTE4IDAgMzQuNSA3LjVUNzcyLTgxMWw1MCA2MXE5IDExIDEzLjUgMjR0NC41IDI3djQ5OXEwIDMzLTIzLjUgNTYuNVQ3NjAtMTIwSDIwMFptMTYtNjAwaDUyOGwtMzQtNDBIMjUwbC0zNCA0MFptMjY0IDMwMFoiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgoKICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS93cml0ZWNyZWFtLW9yZy9BaUNvZGVyIiBjbGFzcz0iZ2l0aHViLWJ0biIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gWW91IGNhbiBhZGQgeW91ciBjaGF0Ym90J3MgR2l0SHViIGxpbmsgb3IgbGVhdmUgYmxhbmsgLS0+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9oZWFkZXI+CgoKICAgIDwhLS0gTGFuZGluZyBjb250ZW50IHRoYXQgd2lsbCBiZSBoaWRkZW4gYWZ0ZXIgY2hhdCBzdGFydHMgLS0+CiAgICA8ZGl2IGlkPSJsYW5kaW5nU2VjdGlvbiI+CiAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cud3JpdGVjcmVhbS5jb20vIiB0YXJnZXQ9Il9ibGFuayI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InBvd2VyZWQtcGlsbCI+CiAgICAgICAgICAgICAgICA8c3Bhbj5Qb3dlcmVkIGJ5IDxiPjxzcGFuIGNsYXNzPSJ3cml0ZWNyZWFtLWhpZ2hsaWdodCI+V3JpdGVjcmVhbSBBSTwvc3Bhbj48L2I+LiBVc2VkIGJ5IDxiPjxzcGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD0idXNlckNvdW50Ij41MCwwMDArPC9zcGFuPiBtYXJrZXRlcnM8L2I+Ljwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9hPgoKICAgICAgICA8bWFpbiBjbGFzcz0iY29udGFpbmVyIj4KICAgICAgICAgICAgPCEtLSBOZXcgSGVybyBTZWN0aW9uIG1hdGNoaW5nIEZpZ21hIGRlc2lnbiAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVyby1zZWN0aW9uIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imluc2lkZS1oZXJvLXNlY3Rpb24iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Imhlcm8taWNvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImxhenkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmclMjB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMj